geforkt von Mirrors/Paper
Some more work
Dieser Commit ist enthalten in:
Ursprung
986b61757e
Commit
0047482c6f
@ -8,7 +8,7 @@ diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftBoat.java b/src/ma
|
|||||||
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
||||||
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftBoat.java
|
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftBoat.java
|
||||||
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftBoat.java
|
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftBoat.java
|
||||||
@@ -0,0 +0,0 @@ public class CraftBoat extends CraftVehicle implements Boat {
|
@@ -0,0 +0,0 @@ public abstract class CraftBoat extends CraftVehicle implements Boat {
|
||||||
this.getHandle().landBoats = workOnLand;
|
this.getHandle().landBoats = workOnLand;
|
||||||
}
|
}
|
||||||
|
|
@ -35,7 +35,7 @@ diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b
|
|||||||
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
||||||
--- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
|
--- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
|
||||||
+++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
|
+++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
|
||||||
@@ -0,0 +0,0 @@ public class CraftEventFactory {
|
@@ -0,0 +0,0 @@ populateFields(victim, event); // Paper - make cancellable
|
||||||
return org.bukkit.craftbukkit.inventory.CraftItemStack.asNMSCopy(event.getPotion());
|
return org.bukkit.craftbukkit.inventory.CraftItemStack.asNMSCopy(event.getPotion());
|
||||||
}
|
}
|
||||||
// Paper end - WitchReadyPotionEvent
|
// Paper end - WitchReadyPotionEvent
|
@ -9,7 +9,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
|||||||
--- a/src/main/java/net/minecraft/world/item/CrossbowItem.java
|
--- a/src/main/java/net/minecraft/world/item/CrossbowItem.java
|
||||||
+++ b/src/main/java/net/minecraft/world/item/CrossbowItem.java
|
+++ b/src/main/java/net/minecraft/world/item/CrossbowItem.java
|
||||||
@@ -0,0 +0,0 @@ public class CrossbowItem extends ProjectileWeaponItem {
|
@@ -0,0 +0,0 @@ public class CrossbowItem extends ProjectileWeaponItem {
|
||||||
public void releaseUsing(ItemStack stack, Level world, LivingEntity user, int remainingUseTicks) {
|
public boolean releaseUsing(ItemStack stack, Level world, LivingEntity user, int remainingUseTicks) {
|
||||||
int i = this.getUseDuration(stack, user) - remainingUseTicks;
|
int i = this.getUseDuration(stack, user) - remainingUseTicks;
|
||||||
float f = getPowerForTime(i, stack, user);
|
float f = getPowerForTime(i, stack, user);
|
||||||
- if (f >= 1.0F && !isCharged(stack) && tryLoadProjectiles(user, stack)) {
|
- if (f >= 1.0F && !isCharged(stack) && tryLoadProjectiles(user, stack)) {
|
||||||
@ -18,7 +18,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
|||||||
+ final io.papermc.paper.event.entity.EntityLoadCrossbowEvent event = new io.papermc.paper.event.entity.EntityLoadCrossbowEvent(user.getBukkitLivingEntity(), stack.asBukkitMirror(), org.bukkit.craftbukkit.CraftEquipmentSlot.getHand(user.getUsedItemHand()));
|
+ final io.papermc.paper.event.entity.EntityLoadCrossbowEvent event = new io.papermc.paper.event.entity.EntityLoadCrossbowEvent(user.getBukkitLivingEntity(), stack.asBukkitMirror(), org.bukkit.craftbukkit.CraftEquipmentSlot.getHand(user.getUsedItemHand()));
|
||||||
+ if (!event.callEvent() || !tryLoadProjectiles(user, stack, event.shouldConsumeItem()) || !event.shouldConsumeItem()) {
|
+ if (!event.callEvent() || !tryLoadProjectiles(user, stack, event.shouldConsumeItem()) || !event.shouldConsumeItem()) {
|
||||||
+ if (user instanceof ServerPlayer player) player.containerMenu.sendAllDataToRemote();
|
+ if (user instanceof ServerPlayer player) player.containerMenu.sendAllDataToRemote();
|
||||||
+ return;
|
+ return false;
|
||||||
+ }
|
+ }
|
||||||
+ // Paper end - Add EntityLoadCrossbowEvent
|
+ // Paper end - Add EntityLoadCrossbowEvent
|
||||||
CrossbowItem.ChargingSounds chargingSounds = this.getChargingSounds(stack);
|
CrossbowItem.ChargingSounds chargingSounds = this.getChargingSounds(stack);
|
@ -10,7 +10,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
|||||||
+++ b/src/main/java/net/minecraft/world/level/block/FlowerPotBlock.java
|
+++ b/src/main/java/net/minecraft/world/level/block/FlowerPotBlock.java
|
||||||
@@ -0,0 +0,0 @@ public class FlowerPotBlock extends Block {
|
@@ -0,0 +0,0 @@ public class FlowerPotBlock extends Block {
|
||||||
} else if (!this.isEmpty()) {
|
} else if (!this.isEmpty()) {
|
||||||
return ItemInteractionResult.CONSUME;
|
return InteractionResult.CONSUME;
|
||||||
} else {
|
} else {
|
||||||
+ // Paper start - Add PlayerFlowerPotManipulateEvent
|
+ // Paper start - Add PlayerFlowerPotManipulateEvent
|
||||||
+ org.bukkit.block.Block block = org.bukkit.craftbukkit.block.CraftBlock.at(world, pos);
|
+ org.bukkit.block.Block block = org.bukkit.craftbukkit.block.CraftBlock.at(world, pos);
|
@ -23,8 +23,8 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
|||||||
Stream<String> stream = dataPacks.stream(); // CraftBukkit - decompile error
|
Stream<String> stream = dataPacks.stream(); // CraftBukkit - decompile error
|
||||||
PackRepository resourcepackrepository = this.packRepository;
|
PackRepository resourcepackrepository = this.packRepository;
|
||||||
@@ -0,0 +0,0 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
|
@@ -0,0 +0,0 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
|
||||||
this.functionManager.replaceLibrary(this.resources.managers.getFunctionLibrary());
|
|
||||||
this.structureTemplateManager.onResourceManagerReload(this.resources.resourceManager);
|
this.structureTemplateManager.onResourceManagerReload(this.resources.resourceManager);
|
||||||
|
this.fuelValues = FuelValues.vanillaBurnTimes(this.registries.compositeAccess(), this.worldData.enabledFeatures());
|
||||||
org.bukkit.craftbukkit.block.data.CraftBlockData.reloadCache(); // Paper - cache block data strings; they can be defined by datapacks so refresh it here
|
org.bukkit.craftbukkit.block.data.CraftBlockData.reloadCache(); // Paper - cache block data strings; they can be defined by datapacks so refresh it here
|
||||||
+ new io.papermc.paper.event.server.ServerResourcesReloadedEvent(cause).callEvent(); // Paper - Add ServerResourcesReloadedEvent; fire after everything has been reloaded
|
+ new io.papermc.paper.event.server.ServerResourcesReloadedEvent(cause).callEvent(); // Paper - Add ServerResourcesReloadedEvent; fire after everything has been reloaded
|
||||||
}, this);
|
}, this);
|
@ -68,29 +68,31 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
|||||||
--- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
|
--- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
|
||||||
+++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
|
+++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
|
||||||
@@ -0,0 +0,0 @@ public class CraftWorld extends CraftRegionAccessor implements World {
|
@@ -0,0 +0,0 @@ public class CraftWorld extends CraftRegionAccessor implements World {
|
||||||
|
if (rule == null || value == null) return false;
|
||||||
|
|
||||||
if (!this.isGameRule(rule)) return false;
|
if (!this.isGameRule(rule)) return false;
|
||||||
|
|
||||||
+ // Paper start - Add WorldGameRuleChangeEvent
|
+ // Paper start - Add WorldGameRuleChangeEvent
|
||||||
+ GameRule<?> gameRule = GameRule.getByName(rule);
|
+ GameRule<?> gameRule = GameRule.getByName(rule);
|
||||||
+ io.papermc.paper.event.world.WorldGameRuleChangeEvent event = new io.papermc.paper.event.world.WorldGameRuleChangeEvent(this, null, gameRule, value);
|
+ io.papermc.paper.event.world.WorldGameRuleChangeEvent event = new io.papermc.paper.event.world.WorldGameRuleChangeEvent(this, null, gameRule, value);
|
||||||
+ if (!event.callEvent()) return false;
|
+ if (!event.callEvent()) return false;
|
||||||
+ // Paper end - Add WorldGameRuleChangeEvent
|
+ // Paper end - Add WorldGameRuleChangeEvent
|
||||||
GameRules.Value<?> handle = this.getHandle().getGameRules().getRule(CraftWorld.getGameRulesNMS().get(rule));
|
|
||||||
|
GameRules.Value<?> handle = this.getHandle().getGameRules().getRule(this.getGameRulesNMS().get(rule));
|
||||||
- handle.deserialize(value);
|
- handle.deserialize(value);
|
||||||
+ handle.deserialize(event.getValue()); // Paper - Add WorldGameRuleChangeEvent
|
+ handle.deserialize(event.getValue()); // Paper - Add WorldGameRuleChangeEvent
|
||||||
handle.onChanged(this.getHandle());
|
handle.onChanged(this.getHandle());
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@@ -0,0 +0,0 @@ public class CraftWorld extends CraftRegionAccessor implements World {
|
@@ -0,0 +0,0 @@ public class CraftWorld extends CraftRegionAccessor implements World {
|
||||||
|
Preconditions.checkArgument(newValue != null, "GameRule value cannot be null");
|
||||||
|
|
||||||
if (!this.isGameRule(rule.getName())) return false;
|
if (!this.isGameRule(rule.getName())) return false;
|
||||||
|
|
||||||
+ // Paper start - Add WorldGameRuleChangeEvent
|
+ // Paper start - Add WorldGameRuleChangeEvent
|
||||||
+ io.papermc.paper.event.world.WorldGameRuleChangeEvent event = new io.papermc.paper.event.world.WorldGameRuleChangeEvent(this, null, rule, String.valueOf(newValue));
|
+ io.papermc.paper.event.world.WorldGameRuleChangeEvent event = new io.papermc.paper.event.world.WorldGameRuleChangeEvent(this, null, rule, String.valueOf(newValue));
|
||||||
+ if (!event.callEvent()) return false;
|
+ if (!event.callEvent()) return false;
|
||||||
+ // Paper end - Add WorldGameRuleChangeEvent
|
+ // Paper end - Add WorldGameRuleChangeEvent
|
||||||
GameRules.Value<?> handle = this.getHandle().getGameRules().getRule(CraftWorld.getGameRulesNMS().get(rule.getName()));
|
|
||||||
|
GameRules.Value<?> handle = this.getHandle().getGameRules().getRule(this.getGameRulesNMS().get(rule.getName()));
|
||||||
- handle.deserialize(newValue.toString());
|
- handle.deserialize(newValue.toString());
|
||||||
+ handle.deserialize(event.getValue()); // Paper - Add WorldGameRuleChangeEvent
|
+ handle.deserialize(event.getValue()); // Paper - Add WorldGameRuleChangeEvent
|
||||||
handle.onChanged(this.getHandle());
|
handle.onChanged(this.getHandle());
|
@ -22,11 +22,11 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
|||||||
--- a/src/main/java/net/minecraft/world/entity/monster/Zombie.java
|
--- a/src/main/java/net/minecraft/world/entity/monster/Zombie.java
|
||||||
+++ b/src/main/java/net/minecraft/world/entity/monster/Zombie.java
|
+++ b/src/main/java/net/minecraft/world/entity/monster/Zombie.java
|
||||||
@@ -0,0 +0,0 @@ public class Zombie extends Monster {
|
@@ -0,0 +0,0 @@ public class Zombie extends Monster {
|
||||||
Object object = super.finalizeSpawn(world, difficulty, spawnReason, entityData);
|
|
||||||
float f = difficulty.getSpecialMultiplier();
|
float f = difficulty.getSpecialMultiplier();
|
||||||
|
|
||||||
- this.setCanPickUpLoot(randomsource.nextFloat() < 0.55F * f);
|
if (spawnReason != EntitySpawnReason.CONVERSION) {
|
||||||
+ this.setCanPickUpLoot(this.level().paperConfig().entities.behavior.mobsCanAlwaysPickUpLoot.zombies || randomsource.nextFloat() < 0.55F * f); // Paper - Add world settings for mobs picking up loot
|
- this.setCanPickUpLoot(randomsource.nextFloat() < 0.55F * f);
|
||||||
if (object == null) {
|
+ this.setCanPickUpLoot(this.level().paperConfig().entities.behavior.mobsCanAlwaysPickUpLoot.zombies || randomsource.nextFloat() < 0.55F * f); // Paper - Add world settings for mobs picking up loot
|
||||||
object = new Zombie.ZombieGroupData(Zombie.getSpawnAsBabyOdds(randomsource), true);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (object == null) {
|
@ -15,23 +15,14 @@ diff --git a/src/main/java/net/minecraft/world/level/saveddata/maps/MapItemSaved
|
|||||||
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
||||||
--- a/src/main/java/net/minecraft/world/level/saveddata/maps/MapItemSavedData.java
|
--- a/src/main/java/net/minecraft/world/level/saveddata/maps/MapItemSavedData.java
|
||||||
+++ b/src/main/java/net/minecraft/world/level/saveddata/maps/MapItemSavedData.java
|
+++ b/src/main/java/net/minecraft/world/level/saveddata/maps/MapItemSavedData.java
|
||||||
@@ -0,0 +0,0 @@ import net.minecraft.core.component.DataComponents;
|
|
||||||
import net.minecraft.nbt.CompoundTag;
|
|
||||||
import net.minecraft.nbt.ListTag;
|
|
||||||
import net.minecraft.nbt.NbtOps;
|
|
||||||
+import net.minecraft.nbt.NumericTag;
|
|
||||||
+import net.minecraft.nbt.StringTag;
|
|
||||||
import net.minecraft.nbt.Tag;
|
|
||||||
import net.minecraft.network.FriendlyByteBuf;
|
|
||||||
import net.minecraft.network.chat.Component;
|
|
||||||
@@ -0,0 +0,0 @@ public class MapItemSavedData extends SavedData {
|
@@ -0,0 +0,0 @@ public class MapItemSavedData extends SavedData {
|
||||||
}
|
}
|
||||||
|
|
||||||
public static MapItemSavedData load(CompoundTag nbt, HolderLookup.Provider registryLookup) {
|
public static MapItemSavedData load(CompoundTag nbt, HolderLookup.Provider registries) {
|
||||||
- DataResult<ResourceKey<Level>> dataresult = DimensionType.parseLegacy(new Dynamic(NbtOps.INSTANCE, nbt.get("dimension"))); // CraftBukkit - decompile error
|
- DataResult<ResourceKey<Level>> dataresult = DimensionType.parseLegacy(new Dynamic(NbtOps.INSTANCE, nbt.get("dimension"))); // CraftBukkit - decompile error
|
||||||
+ // Paper start - fix "Not a string" spam
|
+ // Paper start - fix "Not a string" spam
|
||||||
+ Tag dimension = nbt.get("dimension");
|
+ Tag dimension = nbt.get("dimension");
|
||||||
+ if (dimension instanceof NumericTag && ((NumericTag) dimension).getAsInt() >= CraftWorld.CUSTOM_DIMENSION_OFFSET) {
|
+ if (dimension instanceof final net.minecraft.nbt.NumericTag numericTag && numericTag.getAsInt() >= CraftWorld.CUSTOM_DIMENSION_OFFSET) {
|
||||||
+ long least = nbt.getLong("UUIDLeast");
|
+ long least = nbt.getLong("UUIDLeast");
|
||||||
+ long most = nbt.getLong("UUIDMost");
|
+ long most = nbt.getLong("UUIDMost");
|
||||||
+
|
+
|
||||||
@ -39,12 +30,12 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
|||||||
+ UUID uuid = new UUID(most, least);
|
+ UUID uuid = new UUID(most, least);
|
||||||
+ CraftWorld world = (CraftWorld) Bukkit.getWorld(uuid);
|
+ CraftWorld world = (CraftWorld) Bukkit.getWorld(uuid);
|
||||||
+ if (world != null) {
|
+ if (world != null) {
|
||||||
+ dimension = StringTag.valueOf("minecraft:" + world.getName().toLowerCase(java.util.Locale.ENGLISH));
|
+ dimension = net.minecraft.nbt.StringTag.valueOf("minecraft:" + world.getName().toLowerCase(java.util.Locale.ENGLISH));
|
||||||
+ } else {
|
+ } else {
|
||||||
+ dimension = StringTag.valueOf("bukkit:_invalidworld_");
|
+ dimension = net.minecraft.nbt.StringTag.valueOf("bukkit:_invalidworld_");
|
||||||
+ }
|
+ }
|
||||||
+ } else {
|
+ } else {
|
||||||
+ dimension = StringTag.valueOf("bukkit:_invalidworld_");
|
+ dimension = net.minecraft.nbt.StringTag.valueOf("bukkit:_invalidworld_");
|
||||||
+ }
|
+ }
|
||||||
+ }
|
+ }
|
||||||
+ DataResult<ResourceKey<Level>> dataresult = DimensionType.parseLegacy(new Dynamic(NbtOps.INSTANCE, dimension)); // CraftBukkit - decompile error
|
+ DataResult<ResourceKey<Level>> dataresult = DimensionType.parseLegacy(new Dynamic(NbtOps.INSTANCE, dimension)); // CraftBukkit - decompile error
|
@ -15,14 +15,14 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
|||||||
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
|
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
|
||||||
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
|
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
|
||||||
@@ -0,0 +0,0 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
|
@@ -0,0 +0,0 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
|
||||||
MutableComponent ichatmutablecomponent = Component.translatable("build.tooHigh", i - 1).withStyle(ChatFormatting.RED);
|
} else if (enuminteractionresult instanceof InteractionResult.Success) {
|
||||||
|
InteractionResult.Success enuminteractionresult_d = (InteractionResult.Success) enuminteractionresult;
|
||||||
|
|
||||||
this.player.sendSystemMessage(ichatmutablecomponent, true);
|
- if (enuminteractionresult_d.swingSource() == InteractionResult.SwingSource.SERVER) {
|
||||||
- } else if (enuminteractionresult.shouldSwing()) {
|
+ if (enuminteractionresult_d.swingSource() == InteractionResult.SwingSource.SERVER && !this.player.gameMode.interactResult) {
|
||||||
+ } else if (enuminteractionresult.shouldSwing() && !this.player.gameMode.interactResult) { // Paper - Call interact event
|
this.player.swing(enumhand, true);
|
||||||
this.player.swing(enumhand, true);
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
@@ -0,0 +0,0 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
|
@@ -0,0 +0,0 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
|
||||||
double d3 = Math.max(this.player.blockInteractionRange(), this.player.entityInteractionRange());
|
double d3 = Math.max(this.player.blockInteractionRange(), this.player.entityInteractionRange());
|
||||||
// SPIGOT-5607: Only call interact event if no block or entity is being clicked. Use bukkit ray trace method, because it handles blocks and entities at the same time
|
// SPIGOT-5607: Only call interact event if no block or entity is being clicked. Use bukkit ray trace method, because it handles blocks and entities at the same time
|
@ -9,10 +9,10 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
|||||||
--- a/src/main/java/net/minecraft/world/entity/monster/Slime.java
|
--- a/src/main/java/net/minecraft/world/entity/monster/Slime.java
|
||||||
+++ b/src/main/java/net/minecraft/world/entity/monster/Slime.java
|
+++ b/src/main/java/net/minecraft/world/entity/monster/Slime.java
|
||||||
@@ -0,0 +0,0 @@ public class Slime extends Mob implements Enemy {
|
@@ -0,0 +0,0 @@ public class Slime extends Mob implements Enemy {
|
||||||
entityslime.setPersistenceRequired();
|
float f3 = ((float) (l / 2) - 0.5F) * f1;
|
||||||
}
|
|
||||||
|
|
||||||
|
Slime converted = this.convertTo(this.getType(), new ConversionParams(ConversionType.SPLIT_ON_DEATH, false, false, scoreboardteam), EntitySpawnReason.TRIGGERED, (entityslime) -> { // CraftBukkit
|
||||||
+ entityslime.aware = this.aware; // Paper - Fix nerfed slime when splitting
|
+ entityslime.aware = this.aware; // Paper - Fix nerfed slime when splitting
|
||||||
entityslime.setCustomName(ichatbasecomponent);
|
entityslime.setSize(j, true);
|
||||||
entityslime.setNoAi(flag);
|
entityslime.moveTo(this.getX() + (double) f2, this.getY() + 0.5D, this.getZ() + (double) f3, this.random.nextFloat() * 360.0F, 0.0F);
|
||||||
entityslime.setInvulnerable(this.isInvulnerable());
|
// CraftBukkit start
|
Laden…
In neuem Issue referenzieren
Einen Benutzer sperren