summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--nms-patches/AdvancementDataPlayer.patch2
-rw-r--r--nms-patches/BlockCauldron.patch2
-rw-r--r--nms-patches/Chunk.patch117
-rw-r--r--nms-patches/ChunkProviderServer.patch9
-rw-r--r--nms-patches/CommandForceload.patch6
-rw-r--r--nms-patches/DataConverterRegistry.patch4
-rw-r--r--nms-patches/Entity.patch50
-rw-r--r--nms-patches/EntityAnimal.patch8
-rw-r--r--nms-patches/EntityBoat.patch4
-rw-r--r--nms-patches/EntityEnderDragon.patch6
-rw-r--r--nms-patches/EntityFish.patch10
-rw-r--r--nms-patches/EntityFishingHook.patch2
-rw-r--r--nms-patches/EntityItemFrame.patch2
-rw-r--r--nms-patches/EntityMinecartMobSpawner.patch13
-rw-r--r--nms-patches/EntityOcelot.patch2
-rw-r--r--nms-patches/EntityPigZombie.patch2
-rw-r--r--nms-patches/EntityPlayer.patch2
-rw-r--r--nms-patches/EntityTurtle.patch2
-rw-r--r--nms-patches/EntityVillager.patch9
-rw-r--r--nms-patches/HandshakeListener.patch4
-rw-r--r--nms-patches/ItemArmorStand.patch14
-rw-r--r--nms-patches/ItemEndCrystal.patch14
-rw-r--r--nms-patches/ItemWorldMap.patch2
-rw-r--r--nms-patches/MinecraftServer.patch2
-rw-r--r--nms-patches/PacketDataSerializer.patch6
-rw-r--r--nms-patches/PathfinderGoalPanic.patch2
-rw-r--r--nms-patches/PlayerConnection.patch6
-rw-r--r--nms-patches/PlayerList.patch2
-rw-r--r--nms-patches/ProtoChunk.patch2
-rw-r--r--nms-patches/SpawnerCreature.patch36
-rw-r--r--nms-patches/TileEntityConduit.patch16
-rw-r--r--nms-patches/TileEntityFurnace.patch14
-rw-r--r--nms-patches/World.patch10
-rw-r--r--nms-patches/WorldData.patch4
-rw-r--r--nms-patches/WorldGenFactory.patch11
-rw-r--r--pom.xml8
-rw-r--r--src/main/java/org/bukkit/craftbukkit/CraftServer.java6
-rw-r--r--src/main/java/org/bukkit/craftbukkit/CraftWorld.java2
-rw-r--r--src/main/java/org/bukkit/craftbukkit/Main.java4
-rw-r--r--src/main/java/org/bukkit/craftbukkit/block/CraftBlock.java2
-rw-r--r--src/main/java/org/bukkit/craftbukkit/entity/CraftAnimals.java4
-rw-r--r--src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java4
-rw-r--r--src/main/java/org/bukkit/craftbukkit/entity/CraftVillager.java2
-rw-r--r--src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java11
-rw-r--r--src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaItem.java2
-rw-r--r--src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java2
-rw-r--r--src/test/java/org/bukkit/StructureTypeTest.java6
47 files changed, 186 insertions, 264 deletions
diff --git a/nms-patches/AdvancementDataPlayer.patch b/nms-patches/AdvancementDataPlayer.patch
index bd0ee401..7636d583 100644
--- a/nms-patches/AdvancementDataPlayer.patch
+++ b/nms-patches/AdvancementDataPlayer.patch
@@ -29,7 +29,7 @@
dynamic = dynamic.set("DataVersion", dynamic.createInt(1343));
@@ -148,7 +148,7 @@
- dynamic = this.d.az().update(DataFixTypes.ADVANCEMENTS, dynamic, dynamic.getInt("DataVersion"), 1628);
+ dynamic = this.d.az().update(DataFixTypes.ADVANCEMENTS, dynamic, dynamic.getInt("DataVersion"), 1631);
dynamic = dynamic.remove("DataVersion");
- Map map = (Map) AdvancementDataPlayer.b.getAdapter(AdvancementDataPlayer.c).fromJsonTree((JsonElement) dynamic.getValue());
+ Map<MinecraftKey, AdvancementProgress> map = (Map) AdvancementDataPlayer.b.getAdapter(AdvancementDataPlayer.c).fromJsonTree((JsonElement) dynamic.getValue()); // CraftBukkit - decompile error
diff --git a/nms-patches/BlockCauldron.patch b/nms-patches/BlockCauldron.patch
index 64498ab1..7539f8d7 100644
--- a/nms-patches/BlockCauldron.patch
+++ b/nms-patches/BlockCauldron.patch
@@ -11,7 +11,7 @@
@@ -32,8 +34,13 @@
float f = (float) blockposition.getY() + (6.0F + (float) (3 * i)) / 16.0F;
- if (!world.isClientSide && entity.isBurning() && i > 0 && entity.getBoundingBox().b <= (double) f) {
+ if (!world.isClientSide && entity.isBurning() && i > 0 && entity.getBoundingBox().minY <= (double) f) {
+ // CraftBukkit start
+ if (!this.changeLevel(world, blockposition, iblockdata, i - 1, entity, CauldronLevelChangeEvent.ChangeReason.EXTINGUISH)) {
+ return;
diff --git a/nms-patches/Chunk.patch b/nms-patches/Chunk.patch
index d8a2d75d..908148de 100644
--- a/nms-patches/Chunk.patch
+++ b/nms-patches/Chunk.patch
@@ -1,6 +1,6 @@
--- a/net/minecraft/server/Chunk.java
+++ b/net/minecraft/server/Chunk.java
-@@ -23,6 +23,8 @@
+@@ -22,6 +22,8 @@
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
@@ -10,8 +10,8 @@
private static final Logger d = LogManager.getLogger();
@@ -57,6 +59,35 @@
- private int D;
private final AtomicInteger E;
+ private final ChunkCoordIntPair F;
+ // CraftBukkit start - Neighbor loaded cache for chunk lighting and entity ticking
+ private int neighbors = 0x1 << 12;
@@ -45,7 +45,7 @@
public Chunk(World world, int i, int j, BiomeBase[] abiomebase, ChunkConverter chunkconverter, TickList<Block> ticklist, TickList<FluidType> ticklist1, long k) {
this.sections = new ChunkSection[16];
this.g = new boolean[256];
-@@ -94,8 +125,16 @@
+@@ -95,8 +126,16 @@
this.s = ticklist;
this.t = ticklist1;
this.z = k;
@@ -62,7 +62,7 @@
public Chunk(World world, ProtoChunk protochunk, int i, int j) {
this(world, i, j, protochunk.getBiomeIndex(), protochunk.v(), protochunk.n(), protochunk.o(), protochunk.m());
-@@ -135,14 +174,15 @@
+@@ -136,14 +175,15 @@
HeightMap.Type heightmap_type = (HeightMap.Type) iterator.next();
if (heightmap_type.c() == HeightMap.Use.LIVE_WORLD) {
@@ -80,23 +80,23 @@
}
public Set<BlockPosition> t() {
-@@ -412,8 +452,15 @@
+@@ -413,8 +453,15 @@
}
}
+ // CraftBukkit start
@Nullable
- public IBlockData a(BlockPosition blockposition, IBlockData iblockdata, boolean flag) {
-+ return this.a(blockposition, iblockdata, flag, true);
+ public IBlockData setType(BlockPosition blockposition, IBlockData iblockdata, boolean flag) {
++ return this.setType(blockposition, iblockdata, flag, true);
+ }
+
+ @Nullable
-+ public IBlockData a(BlockPosition blockposition, IBlockData iblockdata, boolean flag, boolean doPlace) {
++ public IBlockData setType(BlockPosition blockposition, IBlockData iblockdata, boolean flag, boolean doPlace) {
+ // CraftBukkit end
int i = blockposition.getX() & 15;
int j = blockposition.getY();
int k = blockposition.getZ() & 15;
-@@ -473,7 +520,8 @@
+@@ -474,7 +521,8 @@
}
}
@@ -106,7 +106,7 @@
iblockdata.onPlace(this.world, blockposition, iblockdata1);
}
-@@ -653,7 +701,19 @@
+@@ -654,7 +702,12 @@
@Nullable
public TileEntity a(BlockPosition blockposition, Chunk.EnumTileEntityState chunk_enumtileentitystate) {
@@ -116,33 +116,14 @@
+ if (tileentity == null) {
+ tileentity = (TileEntity) this.tileEntities.get(blockposition);
+ }
-+ if (tileentity == null) {
-+ NBTTagCompound pending = this.h.remove(blockposition);
-+ if (pending != null) {
-+ this.processQueuedTile(blockposition, pending);
-+ return this.a(blockposition, chunk_enumtileentitystate);
-+ }
-+ }
+ // CraftBukkit end
if (tileentity == null) {
- if (chunk_enumtileentitystate == Chunk.EnumTileEntityState.IMMEDIATE) {
-@@ -679,6 +739,11 @@
- }
-
- public void a(BlockPosition blockposition, TileEntity tileentity) {
-+ // CraftBukkit start
-+ if (blockposition instanceof BlockPosition.MutableBlockPosition) {
-+ blockposition = new BlockPosition(blockposition);
-+ }
-+ // CraftBukkit end
- tileentity.setWorld(this.world);
- tileentity.setPosition(blockposition);
- if (this.getType(blockposition).getBlock() instanceof ITileEntity) {
-@@ -688,6 +753,13 @@
+ NBTTagCompound nbttagcompound = (NBTTagCompound) this.h.remove(blockposition);
+@@ -701,6 +754,13 @@
tileentity.z();
- this.tileEntities.put(blockposition, tileentity);
+ this.tileEntities.put(blockposition.h(), tileentity);
+ // CraftBukkit start
+ } else {
+ System.out.println("Attempted to place a tile entity (" + tileentity + ") at " + tileentity.position.getX() + "," + tileentity.position.getY() + "," + tileentity.position.getZ()
@@ -153,7 +134,7 @@
}
}
-@@ -720,6 +792,40 @@
+@@ -733,6 +793,40 @@
}));
}
@@ -194,7 +175,7 @@
}
public void removeEntities() {
-@@ -736,9 +842,21 @@
+@@ -749,9 +843,21 @@
int i = aentityslice.length;
for (int j = 0; j < i; ++j) {
@@ -204,21 +185,21 @@
+ java.util.Iterator<Entity> iter = newList.iterator();
+ while (iter.hasNext()) {
+ Entity entity = iter.next();
-
-- this.world.b((Collection) entityslice);
++
+ // Do not pass along players, as doing so can get them stuck outside of time.
+ // (which for example disables inventory icon updates and prevents block breaking)
+ if (entity instanceof EntityPlayer) {
+ iter.remove();
+ }
+ }
-+
+
+- this.world.b((Collection) entityslice);
+ this.world.b((Collection) newList);
+ // CraftBukkit end
}
}
-@@ -800,8 +918,8 @@
+@@ -813,8 +919,8 @@
while (iterator.hasNext()) {
Entity entity = (Entity) iterator.next();
@@ -229,7 +210,7 @@
}
}
}
-@@ -1007,13 +1125,13 @@
+@@ -1020,13 +1126,13 @@
@Nullable
public LongSet b(String s) {
@@ -245,7 +226,7 @@
return new LongOpenHashSet();
})).add(i);
}
-@@ -1061,18 +1179,18 @@
+@@ -1074,14 +1180,14 @@
}
if (this.s instanceof ProtoChunkTickList) {
@@ -264,59 +245,3 @@
});
}
-- Iterator iterator = this.h.entrySet().iterator();
-+ Iterator iterator = Maps.newHashMap(this.h).entrySet().iterator(); // CraftBukkit
-
- while (iterator.hasNext()) {
- Entry entry = (Entry) iterator.next();
-@@ -1080,6 +1198,8 @@
- NBTTagCompound nbttagcompound = (NBTTagCompound) entry.getValue();
-
- if (this.getTileEntity(blockposition1) == null) {
-+ // CraftBukkit start
-+ /*
- TileEntity tileentity;
-
- if ("DUMMY".equals(nbttagcompound.getString("id"))) {
-@@ -1101,6 +1221,8 @@
- } else {
- Chunk.d.warn("Tried to load a block entity for block {} but failed at location {}", this.getType(blockposition1), blockposition1);
- }
-+ */
-+ // CraftBukkit end
- }
- }
-
-@@ -1110,6 +1232,32 @@
- }
- }
-
-+ // CraftBukkit start
-+ private void processQueuedTile(BlockPosition blockposition1, NBTTagCompound nbttagcompound) {
-+ TileEntity tileentity;
-+
-+ if ("DUMMY".equals(nbttagcompound.getString("id"))) {
-+ Block block = this.getType(blockposition1).getBlock();
-+
-+ if (block instanceof ITileEntity) {
-+ tileentity = ((ITileEntity) block).a(this.world);
-+ } else {
-+ tileentity = null;
-+ Chunk.d.warn("Tried to load a DUMMY block entity @ {} but found not tile entity block {} at location", blockposition1, this.getType(blockposition1));
-+ }
-+ } else {
-+ tileentity = TileEntity.create(nbttagcompound);
-+ }
-+
-+ if (tileentity != null) {
-+ tileentity.setPosition(blockposition1);
-+ this.a(tileentity);
-+ } else {
-+ Chunk.d.warn("Tried to load a block entity for block {} but failed at location {}", this.getType(blockposition1), blockposition1);
-+ }
-+ }
-+ // CraftBukkit end
-+
- public ChunkConverter F() {
- return this.m;
- }
diff --git a/nms-patches/ChunkProviderServer.patch b/nms-patches/ChunkProviderServer.patch
index 01b456d2..48ee4e8d 100644
--- a/nms-patches/ChunkProviderServer.patch
+++ b/nms-patches/ChunkProviderServer.patch
@@ -1,6 +1,6 @@
--- a/net/minecraft/server/ChunkProviderServer.java
+++ b/net/minecraft/server/ChunkProviderServer.java
-@@ -18,12 +18,17 @@
+@@ -18,6 +18,11 @@
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
@@ -12,13 +12,6 @@
public class ChunkProviderServer implements IChunkProvider {
private static final Logger a = LogManager.getLogger();
- public final LongSet unloadQueue = new LongOpenHashSet();
- public final ChunkGenerator<?> chunkGenerator;
-- private final IChunkLoader chunkLoader;
-+ public final IChunkLoader chunkLoader; // PAIL
- public final Long2ObjectMap<Chunk> chunks = Long2ObjectMaps.synchronize(new ChunkMap(8192));
- private Chunk lastChunk;
- private final ChunkTaskScheduler chunkScheduler;
@@ -36,7 +41,7 @@
this.chunkLoader = ichunkloader;
this.chunkGenerator = chunkgenerator;
diff --git a/nms-patches/CommandForceload.patch b/nms-patches/CommandForceload.patch
index 05924d1b..98f73811 100644
--- a/nms-patches/CommandForceload.patch
+++ b/nms-patches/CommandForceload.patch
@@ -6,7 +6,7 @@
ChunkCoordIntPair chunkcoordintpair = new ChunkCoordIntPair(argumentvec2i_a.a >> 4, argumentvec2i_a.b >> 4);
- DimensionManager dimensionmanager = commandlistenerwrapper.getWorld().o().getDimensionManager();
+ DimensionManager dimensionmanager = commandlistenerwrapper.getWorld().dimension; // CraftBukkit
- boolean flag = commandlistenerwrapper.getServer().getWorldServer(dimensionmanager).f(chunkcoordintpair.x, chunkcoordintpair.z);
+ boolean flag = commandlistenerwrapper.getServer().getWorldServer(dimensionmanager).isForceLoaded(chunkcoordintpair.x, chunkcoordintpair.z);
if (flag) {
@@ -59,7 +59,7 @@
@@ -28,9 +28,9 @@
LongSet longset = worldserver.ag();
- longset.forEach((i) -> {
-- worldserver.b(ChunkCoordIntPair.a(i), ChunkCoordIntPair.b(i), false);
+- worldserver.setForceLoaded(ChunkCoordIntPair.a(i), ChunkCoordIntPair.b(i), false);
+ longset.forEach((LongConsumer) (ix) -> { // CraftBukkit - decompile error
-+ worldserver.b(ChunkCoordIntPair.a(ix), ChunkCoordIntPair.b(ix), false); // CraftBukkit - decompile error
++ worldserver.setForceLoaded(ChunkCoordIntPair.a(ix), ChunkCoordIntPair.b(ix), false); // CraftBukkit - decompile error
});
commandlistenerwrapper.sendMessage(new ChatMessage("commands.forceload.removed.all", new Object[] { dimensionmanager}), true);
return 0;
diff --git a/nms-patches/DataConverterRegistry.patch b/nms-patches/DataConverterRegistry.patch
index b2981bc2..98231b52 100644
--- a/nms-patches/DataConverterRegistry.patch
+++ b/nms-patches/DataConverterRegistry.patch
@@ -1,8 +1,8 @@
--- a/net/minecraft/server/DataConverterRegistry.java
+++ b/net/minecraft/server/DataConverterRegistry.java
-@@ -195,6 +195,18 @@
+@@ -185,6 +185,18 @@
datafixerbuilder.addFixer(new DataConverterItemFrame(schema46, false));
- Schema schema47 = datafixerbuilder.addSchema(1458, DataConverterRegistry.c);
+ Schema schema47 = datafixerbuilder.addSchema(1458, DataConverterRegistry.b);
+ // CraftBukkit start
+ datafixerbuilder.addFixer(new com.mojang.datafixers.DataFix(schema47, false) {
diff --git a/nms-patches/Entity.patch b/nms-patches/Entity.patch
index fd248cfc..f73dae4b 100644
--- a/nms-patches/Entity.patch
+++ b/nms-patches/Entity.patch
@@ -273,9 +273,9 @@
}
@@ -706,6 +884,7 @@
- this.locX = (axisalignedbb.a + axisalignedbb.d) / 2.0D;
- this.locY = axisalignedbb.b;
- this.locZ = (axisalignedbb.c + axisalignedbb.f) / 2.0D;
+ this.locX = (axisalignedbb.minX + axisalignedbb.maxX) / 2.0D;
+ this.locY = axisalignedbb.minY;
+ this.locZ = (axisalignedbb.minZ + axisalignedbb.maxZ) / 2.0D;
+ if (valid) world.entityJoinedWorld(this, false); // CraftBukkit
}
@@ -453,8 +453,8 @@
}
this.vehicle = entity;
-- this.vehicle.o(this);
-+ if (!this.vehicle.o(this)) this.vehicle = null; // CraftBukkit
+- this.vehicle.addPassenger(this);
++ if (!this.vehicle.addPassenger(this)) this.vehicle = null; // CraftBukkit
return true;
}
}
@@ -468,8 +468,8 @@
}
-- protected void o(Entity entity) {
-+ protected boolean o(Entity entity) { // CraftBukkit
+- protected void addPassenger(Entity entity) {
++ protected boolean addPassenger(Entity entity) { // CraftBukkit
if (entity.getVehicle() != this) {
throw new IllegalStateException("Use x.startRiding(y), not y.addPassenger(x)");
} else {
@@ -733,24 +733,24 @@
public void a(AxisAlignedBB axisalignedbb) {
- this.boundingBox = axisalignedbb;
+ // CraftBukkit start - block invalid bounding boxes
-+ double a = axisalignedbb.a,
-+ b = axisalignedbb.b,
-+ c = axisalignedbb.c,
-+ d = axisalignedbb.d,
-+ e = axisalignedbb.e,
-+ f = axisalignedbb.f;
-+ double len = axisalignedbb.d - axisalignedbb.a;
-+ if (len < 0) d = a;
-+ if (len > 64) d = a + 64.0;
-+
-+ len = axisalignedbb.e - axisalignedbb.b;
-+ if (len < 0) e = b;
-+ if (len > 64) e = b + 64.0;
-+
-+ len = axisalignedbb.f - axisalignedbb.c;
-+ if (len < 0) f = c;
-+ if (len > 64) f = c + 64.0;
-+ this.boundingBox = new AxisAlignedBB(a, b, c, d, e, f);
++ double minX = axisalignedbb.minX,
++ minY = axisalignedbb.minY,
++ minZ = axisalignedbb.minZ,
++ maxX = axisalignedbb.maxX,
++ maxY = axisalignedbb.maxY,
++ maxZ = axisalignedbb.maxZ;
++ double len = axisalignedbb.maxX - axisalignedbb.minX;
++ if (len < 0) maxX = minX;
++ if (len > 64) maxX = minX + 64.0;
++
++ len = axisalignedbb.maxY - axisalignedbb.minY;
++ if (len < 0) maxY = minY;
++ if (len > 64) maxY = minY + 64.0;
++
++ len = axisalignedbb.maxZ - axisalignedbb.minZ;
++ if (len < 0) maxZ = minZ;
++ if (len > 64) maxZ = minZ + 64.0;
++ this.boundingBox = new AxisAlignedBB(minX, minY, minZ, maxX, maxY, maxZ);
+ // CraftBukkit end
}
diff --git a/nms-patches/EntityAnimal.patch b/nms-patches/EntityAnimal.patch
index c89ce6e2..55cac482 100644
--- a/nms-patches/EntityAnimal.patch
+++ b/nms-patches/EntityAnimal.patch
@@ -1,11 +1,9 @@
--- a/net/minecraft/server/EntityAnimal.java
+++ b/net/minecraft/server/EntityAnimal.java
-@@ -7,7 +7,8 @@
-
+@@ -8,6 +8,7 @@
protected Block bF;
private int bC;
-- private UUID bD;
-+ public UUID bD; // PAIL
+ public UUID breedCause;
+ public ItemStack breedItem; // CraftBukkit - Add breedItem variable
protected EntityAnimal(EntityTypes<?> entitytypes, World world) {
@@ -30,7 +28,7 @@
return iworldreader.getType(blockposition.down()).getBlock() == this.bF ? 10.0F : iworldreader.A(blockposition) - 0.5F;
@@ -134,6 +139,7 @@
if (entityhuman != null) {
- this.bD = entityhuman.getUniqueID();
+ this.breedCause = entityhuman.getUniqueID();
}
+ this.breedItem = entityhuman.inventory.getItemInHand(); // CraftBukkit
diff --git a/nms-patches/EntityBoat.patch b/nms-patches/EntityBoat.patch
index 949598f6..57e18afe 100644
--- a/nms-patches/EntityBoat.patch
+++ b/nms-patches/EntityBoat.patch
@@ -70,7 +70,7 @@
@@ -134,9 +173,25 @@
public void collide(Entity entity) {
if (entity instanceof EntityBoat) {
- if (entity.getBoundingBox().b < this.getBoundingBox().e) {
+ if (entity.getBoundingBox().minY < this.getBoundingBox().maxY) {
+ // CraftBukkit start
+ VehicleEntityCollisionEvent event = new VehicleEntityCollisionEvent((Vehicle) this.getBukkitEntity(), entity.getBukkitEntity());
+ this.world.getServer().getPluginManager().callEvent(event);
@@ -81,7 +81,7 @@
+ // CraftBukkit end
super.collide(entity);
}
- } else if (entity.getBoundingBox().b <= this.getBoundingBox().b) {
+ } else if (entity.getBoundingBox().minY <= this.getBoundingBox().minY) {
+ // CraftBukkit start
+ VehicleEntityCollisionEvent event = new VehicleEntityCollisionEvent((Vehicle) this.getBukkitEntity(), entity.getBukkitEntity());
+ this.world.getServer().getPluginManager().callEvent(event);
diff --git a/nms-patches/EntityEnderDragon.patch b/nms-patches/EntityEnderDragon.patch
index 8c1b4cde..cd259333 100644
--- a/nms-patches/EntityEnderDragon.patch
+++ b/nms-patches/EntityEnderDragon.patch
@@ -47,7 +47,7 @@
}
@@ -399,6 +412,10 @@
- int j1 = MathHelper.floor(axisalignedbb.f);
+ int j1 = MathHelper.floor(axisalignedbb.maxZ);
boolean flag = false;
boolean flag1 = false;
+ // CraftBukkit start - Create a list to hold all the destroyed blocks
@@ -111,5 +111,5 @@
+ // CraftBukkit end
+
if (flag1) {
- double d0 = axisalignedbb.a + (axisalignedbb.d - axisalignedbb.a) * (double) this.random.nextFloat();
- double d1 = axisalignedbb.b + (axisalignedbb.e - axisalignedbb.b) * (double) this.random.nextFloat();
+ double d0 = axisalignedbb.minX + (axisalignedbb.maxX - axisalignedbb.minX) * (double) this.random.nextFloat();
+ double d1 = axisalignedbb.minY + (axisalignedbb.maxY - axisalignedbb.minY) * (double) this.random.nextFloat();
diff --git a/nms-patches/EntityFish.patch b/nms-patches/EntityFish.patch
index 0fe7401b..5aeed7d6 100644
--- a/nms-patches/EntityFish.patch
+++ b/nms-patches/EntityFish.patch
@@ -1,18 +1,18 @@
--- a/net/minecraft/server/EntityFish.java
+++ b/net/minecraft/server/EntityFish.java
-@@ -37,7 +37,7 @@
+@@ -29,7 +29,7 @@
}
- protected boolean isTypeNotPersistent() {
+ public boolean isTypeNotPersistent() {
- return !this.isFromBucket() && !this.hasCustomName();
+ return true; // CraftBukkit
}
- public boolean l() {
-@@ -71,6 +71,7 @@
+ public int dg() {
+@@ -47,6 +47,7 @@
public void setFromBucket(boolean flag) {
- this.datawatcher.set(EntityFish.b, Boolean.valueOf(flag));
+ this.datawatcher.set(EntityFish.a, Boolean.valueOf(flag));
+ this.persistent = this.isPersistent(); // CraftBukkit - SPIGOT-4106 update persistence
}
diff --git a/nms-patches/EntityFishingHook.patch b/nms-patches/EntityFishingHook.patch
index 372d49d5..7d8d7e48 100644
--- a/nms-patches/EntityFishingHook.patch
+++ b/nms-patches/EntityFishingHook.patch
@@ -44,7 +44,7 @@
+ // CraftBukkit end
this.motY = (double) (-0.4F * MathHelper.a(this.random, 0.6F, 1.0F));
this.a(SoundEffects.ENTITY_FISHING_BOBBER_SPLASH, 0.25F, 1.0F + (this.random.nextFloat() - this.random.nextFloat()) * 0.4F);
- double d3 = this.getBoundingBox().b + 0.5D;
+ double d3 = this.getBoundingBox().minY + 0.5D;
@@ -389,6 +406,14 @@
int i = 0;
diff --git a/nms-patches/EntityItemFrame.patch b/nms-patches/EntityItemFrame.patch
index 2a0031ff..f28cedd2 100644
--- a/nms-patches/EntityItemFrame.patch
+++ b/nms-patches/EntityItemFrame.patch
@@ -15,7 +15,7 @@
@@ -170,6 +175,12 @@
}
- private void setItem(ItemStack itemstack, boolean flag) {
+ public void setItem(ItemStack itemstack, boolean flag) {
+ // CraftBukkit start
+ this.setItem(itemstack, flag, true);
+ }
diff --git a/nms-patches/EntityMinecartMobSpawner.patch b/nms-patches/EntityMinecartMobSpawner.patch
deleted file mode 100644
index 59a671ae..00000000
--- a/nms-patches/EntityMinecartMobSpawner.patch
+++ /dev/null
@@ -1,13 +0,0 @@
---- a/net/minecraft/server/EntityMinecartMobSpawner.java
-+++ b/net/minecraft/server/EntityMinecartMobSpawner.java
-@@ -46,4 +46,10 @@
- super.tick();
- this.a.c();
- }
-+
-+ // CraftBukkit start
-+ public boolean bM() {
-+ return true;
-+ }
-+ // CraftBukkit end
- }
diff --git a/nms-patches/EntityOcelot.patch b/nms-patches/EntityOcelot.patch
index 9f18245b..84ab0f73 100644
--- a/nms-patches/EntityOcelot.patch
+++ b/nms-patches/EntityOcelot.patch
@@ -3,7 +3,7 @@
@@ -60,7 +60,7 @@
}
- protected boolean isTypeNotPersistent() {
+ public boolean isTypeNotPersistent() {
- return !this.isTamed() && this.ticksLived > 2400;
+ return !this.isTamed() /*&& this.ticksLived > 2400*/; // CraftBukkit
}
diff --git a/nms-patches/EntityPigZombie.patch b/nms-patches/EntityPigZombie.patch
index 0ebbc601..5420df19 100644
--- a/nms-patches/EntityPigZombie.patch
+++ b/nms-patches/EntityPigZombie.patch
@@ -30,4 +30,4 @@
+ // CraftBukkit end
this.soundDelay = this.random.nextInt(40);
if (entity instanceof EntityLiving) {
- this.a((EntityLiving) entity);
+ this.setLastDamager((EntityLiving) entity);
diff --git a/nms-patches/EntityPlayer.patch b/nms-patches/EntityPlayer.patch
index 7bc816c1..4f076c2a 100644
--- a/nms-patches/EntityPlayer.patch
+++ b/nms-patches/EntityPlayer.patch
@@ -522,7 +522,7 @@
+ this.world.getServer().getScoreboardManager().getScoreboardScores(statistic, this.getName(), ScoreboardScore::c); // CraftBukkit - Get our scores instead
}
- public int a(Collection<IRecipe> collection) {
+ public int discoverRecipes(Collection<IRecipe> collection) {
@@ -830,8 +1059,17 @@
public void triggerHealthUpdate() {
diff --git a/nms-patches/EntityTurtle.patch b/nms-patches/EntityTurtle.patch
index 30b08c19..33cf763f 100644
--- a/nms-patches/EntityTurtle.patch
+++ b/nms-patches/EntityTurtle.patch
@@ -20,7 +20,7 @@
}
public void die(DamageSource damagesource) {
-@@ -441,8 +445,12 @@
+@@ -435,8 +439,12 @@
} else if (this.f.bK > 200) {
World world = this.f.world;
diff --git a/nms-patches/EntityVillager.patch b/nms-patches/EntityVillager.patch
index 140034fc..6cfcdfc5 100644
--- a/nms-patches/EntityVillager.patch
+++ b/nms-patches/EntityVillager.patch
@@ -15,15 +15,6 @@
public class EntityVillager extends EntityAgeable implements NPC, IMerchant {
-@@ -26,7 +34,7 @@
- public int riches;
- private String bO;
- public int careerId;
-- private int bQ;
-+ public int bQ; // PAIL private->public
- private boolean bR;
- private boolean bS;
- public final InventorySubcontainer inventory;
@@ -38,7 +46,7 @@
public EntityVillager(World world, int i) {
diff --git a/nms-patches/HandshakeListener.patch b/nms-patches/HandshakeListener.patch
index 83b69356..f4e8251d 100644
--- a/nms-patches/HandshakeListener.patch
+++ b/nms-patches/HandshakeListener.patch
@@ -57,8 +57,8 @@
+ }
+ // CraftBukkit end
+
- if (packethandshakinginsetprotocol.c() > 401) {
- chatmessage = new ChatMessage("multiplayer.disconnect.outdated_server", new Object[] { "1.13.1"});
+ if (packethandshakinginsetprotocol.c() > 404) {
+ chatmessage = new ChatMessage("multiplayer.disconnect.outdated_server", new Object[] { "1.13.2"});
this.b.sendPacket(new PacketLoginOutDisconnect(chatmessage));
@@ -26,6 +71,7 @@
this.b.close(chatmessage);
diff --git a/nms-patches/ItemArmorStand.patch b/nms-patches/ItemArmorStand.patch
new file mode 100644
index 00000000..08587855
--- /dev/null
+++ b/nms-patches/ItemArmorStand.patch
@@ -0,0 +1,14 @@
+--- a/net/minecraft/server/ItemArmorStand.java
++++ b/net/minecraft/server/ItemArmorStand.java
+@@ -40,6 +40,11 @@
+ entityarmorstand.setPositionRotation(d0 + 0.5D, d1, d2 + 0.5D, f, 0.0F);
+ this.a(entityarmorstand, world.random);
+ EntityTypes.a(world, itemactioncontext.getEntity(), entityarmorstand, itemstack.getTag());
++ // CraftBukkit start
++ if (org.bukkit.craftbukkit.event.CraftEventFactory.callEntityPlaceEvent(itemactioncontext, entityarmorstand).isCancelled()) {
++ return EnumInteractionResult.FAIL;
++ }
++ // CraftBukkit end
+ world.addEntity(entityarmorstand);
+ world.a((EntityHuman) null, entityarmorstand.locX, entityarmorstand.locY, entityarmorstand.locZ, SoundEffects.ENTITY_ARMOR_STAND_PLACE, SoundCategory.BLOCKS, 0.75F, 0.8F);
+ }
diff --git a/nms-patches/ItemEndCrystal.patch b/nms-patches/ItemEndCrystal.patch
new file mode 100644
index 00000000..6173162a
--- /dev/null
+++ b/nms-patches/ItemEndCrystal.patch
@@ -0,0 +1,14 @@
+--- a/net/minecraft/server/ItemEndCrystal.java
++++ b/net/minecraft/server/ItemEndCrystal.java
+@@ -33,6 +33,11 @@
+ EntityEnderCrystal entityendercrystal = new EntityEnderCrystal(world, d0 + 0.5D, d1, d2 + 0.5D);
+
+ entityendercrystal.setShowingBottom(false);
++ // CraftBukkit start
++ if (org.bukkit.craftbukkit.event.CraftEventFactory.callEntityPlaceEvent(itemactioncontext, entityendercrystal).isCancelled()) {
++ return EnumInteractionResult.FAIL;
++ }
++ // CraftBukkit end
+ world.addEntity(entityendercrystal);
+ if (world.worldProvider instanceof WorldProviderTheEnd) {
+ EnderDragonBattle enderdragonbattle = ((WorldProviderTheEnd) world.worldProvider).r();
diff --git a/nms-patches/ItemWorldMap.patch b/nms-patches/ItemWorldMap.patch
index f7257b1d..efd89564 100644
--- a/nms-patches/ItemWorldMap.patch
+++ b/nms-patches/ItemWorldMap.patch
@@ -13,7 +13,7 @@
public ItemWorldMap(Item.Info item_info) {
@@ -15,7 +20,7 @@
- public static ItemStack a(World world, int i, int j, byte b0, boolean flag, boolean flag1) {
+ public static ItemStack createFilledMapView(World world, int i, int j, byte b0, boolean flag, boolean flag1) {
ItemStack itemstack = new ItemStack(Items.FILLED_MAP);
- a(itemstack, world, i, j, b0, flag, flag1, world.worldProvider.getDimensionManager());
diff --git a/nms-patches/MinecraftServer.patch b/nms-patches/MinecraftServer.patch
index 9c4cc382..ea6c46a1 100644
--- a/nms-patches/MinecraftServer.patch
+++ b/nms-patches/MinecraftServer.patch
@@ -500,7 +500,7 @@
- if (worldserver.worldProvider.getDimensionManager() == DimensionManager.OVERWORLD || this.getAllowNether()) {
+ if (true || worldserver.worldProvider.getDimensionManager() == DimensionManager.OVERWORLD || this.getAllowNether()) { // CraftBukkit
this.methodProfiler.a(() -> {
- return worldserver.getWorldData().getName();
+ return "dim-" + worldserver.worldProvider.getDimensionManager().getDimensionID();
});
+ /* Drop global time updates
if (this.ticks % 20 == 0) {
diff --git a/nms-patches/PacketDataSerializer.patch b/nms-patches/PacketDataSerializer.patch
index acfca3b0..7d514052 100644
--- a/nms-patches/PacketDataSerializer.patch
+++ b/nms-patches/PacketDataSerializer.patch
@@ -33,11 +33,11 @@
public PacketDataSerializer a(ItemStack itemstack) {
- if (itemstack.isEmpty()) {
+ if (itemstack.isEmpty() || itemstack.getItem() == null) { // CraftBukkit - NPE fix itemstack.getItem()
- this.writeShort(-1);
+ this.writeBoolean(false);
} else {
- Item item = itemstack.getItem();
+ this.writeBoolean(true);
@@ -263,6 +265,11 @@
- ItemStack itemstack = new ItemStack(Item.getById(short0), b0);
+ ItemStack itemstack = new ItemStack(Item.getById(i), b0);
itemstack.setTag(this.j());
+ // CraftBukkit start
diff --git a/nms-patches/PathfinderGoalPanic.patch b/nms-patches/PathfinderGoalPanic.patch
index 24babf0f..9b0e4a6b 100644
--- a/nms-patches/PathfinderGoalPanic.patch
+++ b/nms-patches/PathfinderGoalPanic.patch
@@ -6,7 +6,7 @@
public boolean b() {
+ // CraftBukkit start - introduce a temporary timeout hack until this is fixed properly
+ if ((this.a.ticksLived - this.a.hurtTimestamp) > 100) {
-+ this.a.a((EntityLiving) null); // PAIL setLastDamager
++ this.a.setLastDamager((EntityLiving) null);
+ return false;
+ }
+ // CraftBukkit end
diff --git a/nms-patches/PlayerConnection.patch b/nms-patches/PlayerConnection.patch
index c878bb2c..878808f6 100644
--- a/nms-patches/PlayerConnection.patch
+++ b/nms-patches/PlayerConnection.patch
@@ -282,7 +282,7 @@
+ }
+ // CraftBukkit end
+
- this.minecraftServer.getPlayerList().d(this.player);
+ this.minecraftServer.getPlayerList().updateChunks(this.player);
this.player.checkMovement(this.player.locX - d0, this.player.locY - d1, this.player.locZ - d2);
this.D = d11 >= -0.03125D && !this.minecraftServer.getAllowFlight() && !worldserver.a(entity.getBoundingBox().g(0.0625D).b(0.0D, -0.55D, 0.0D));
@@ -243,7 +437,7 @@
@@ -298,7 +298,7 @@
}
this.teleportPos = null;
-+ this.minecraftServer.getPlayerList().d(this.player); // CraftBukkit
++ this.minecraftServer.getPlayerList().updateChunks(this.player); // CraftBukkit
}
}
@@ -376,7 +376,7 @@
this.A = this.e;
if (this.player.isPassenger()) {
this.player.setLocation(this.player.locX, this.player.locY, this.player.locZ, packetplayinflying.a(this.player.yaw), packetplayinflying.b(this.player.pitch));
- this.minecraftServer.getPlayerList().d(this.player);
+ this.minecraftServer.getPlayerList().updateChunks(this.player);
+ this.allowedPlayerTicks = 20; // CraftBukkit
} else {
+ // CraftBukkit - Make sure the move is valid but then reset it for plugins to modify
diff --git a/nms-patches/PlayerList.patch b/nms-patches/PlayerList.patch
index 8e6151cd..79a7b7a7 100644
--- a/nms-patches/PlayerList.patch
+++ b/nms-patches/PlayerList.patch
@@ -245,7 +245,7 @@
+ // CraftBukkit end
}
- public void d(EntityPlayer entityplayer) {
+ public void updateChunks(EntityPlayer entityplayer) {
entityplayer.getWorldServer().getPlayerChunkMap().movePlayer(entityplayer);
}
diff --git a/nms-patches/ProtoChunk.patch b/nms-patches/ProtoChunk.patch
index 66a860e4..8dadf99c 100644
--- a/nms-patches/ProtoChunk.patch
+++ b/nms-patches/ProtoChunk.patch
@@ -68,7 +68,7 @@
return new LongOpenHashSet();
})).add(i);
this.c = true;
-@@ -493,7 +494,7 @@
+@@ -496,7 +497,7 @@
}
public BitSet a(WorldGenStage.Features worldgenstage_features) {
diff --git a/nms-patches/SpawnerCreature.patch b/nms-patches/SpawnerCreature.patch
index dca91ed0..2482e10f 100644
--- a/nms-patches/SpawnerCreature.patch
+++ b/nms-patches/SpawnerCreature.patch
@@ -72,7 +72,7 @@
if (l1 <= k) {
@@ -76,8 +107,10 @@
- label128:
+ label137:
while (iterator1.hasNext()) {
- ChunkCoordIntPair chunkcoordintpair1 = (ChunkCoordIntPair) iterator1.next();
- BlockPosition blockposition1 = getRandomPosition(worldserver, chunkcoordintpair1.x, chunkcoordintpair1.z);
@@ -83,23 +83,23 @@
int i2 = blockposition1.getX();
int j2 = blockposition1.getY();
int k2 = blockposition1.getZ();
-@@ -136,9 +169,12 @@
- if (entityinsentient.a((GeneratorAccess) worldserver, false) && entityinsentient.a((IWorldReader) worldserver)) {
- groupdataentity = entityinsentient.prepare(worldserver.getDamageScaler(new BlockPosition(entityinsentient)), groupdataentity, (NBTTagCompound) null);
- if (entityinsentient.a((IWorldReader) worldserver)) {
-- ++l2;
-- ++j4;
-- worldserver.addEntity(entityinsentient);
-+ // CraftBukkit start
-+ if (worldserver.addEntity(entityinsentient, SpawnReason.NATURAL)) {
-+ ++l2;
-+ ++j4;
-+ }
-+ // CraftBukkit end
- } else {
- entityinsentient.die();
- }
-@@ -255,7 +291,7 @@
+@@ -140,9 +173,12 @@
+ if ((d0 <= 16384.0D || !entityinsentient.isTypeNotPersistent()) && entityinsentient.a((GeneratorAccess) worldserver, false) && entityinsentient.a((IWorldReader) worldserver)) {
+ groupdataentity = entityinsentient.prepare(worldserver.getDamageScaler(new BlockPosition(entityinsentient)), groupdataentity, (NBTTagCompound) null);
+ if (entityinsentient.a((IWorldReader) worldserver)) {
+- ++l2;
+- ++j4;
+- worldserver.addEntity(entityinsentient);
++ // CraftBukkit start
++ if (worldserver.addEntity(entityinsentient, SpawnReason.NATURAL)) {
++ ++l2;
++ ++j4;
++ }
++ // CraftBukkit end
+ } else {
+ entityinsentient.die();
+ }
+@@ -260,7 +296,7 @@
entityinsentient.setPositionRotation(d0, (double) blockposition.getY(), d1, random.nextFloat() * 360.0F, 0.0F);
if (entityinsentient.a(generatoraccess, false) && entityinsentient.a((IWorldReader) generatoraccess)) {
groupdataentity = entityinsentient.prepare(generatoraccess.getDamageScaler(new BlockPosition(entityinsentient)), groupdataentity, (NBTTagCompound) null);
diff --git a/nms-patches/TileEntityConduit.patch b/nms-patches/TileEntityConduit.patch
index c830c74c..c73526c8 100644
--- a/nms-patches/TileEntityConduit.patch
+++ b/nms-patches/TileEntityConduit.patch
@@ -21,9 +21,9 @@
}
@@ -169,8 +173,8 @@
- this.j = this.l();
+ this.target = this.l();
this.k = null;
- } else if (this.j == null) {
+ } else if (this.target == null) {
- List list = this.world.a(EntityLiving.class, this.k(), (entityliving) -> {
- return entityliving instanceof IMonster && entityliving.ao();
+ List list = this.world.a(EntityLiving.class, this.k(), (Predicate<EntityLiving>) (entitylivingx) -> { // CraftBukkit - decompile error
@@ -34,19 +34,19 @@
@@ -181,8 +185,13 @@
}
- if (this.j != null) {
-- this.world.a((EntityHuman) null, this.j.locX, this.j.locY, this.j.locZ, SoundEffects.BLOCK_CONDUIT_ATTACK_TARGET, SoundCategory.BLOCKS, 1.0F, 1.0F);
-- this.j.damageEntity(DamageSource.MAGIC, 4.0F);
+ if (this.target != null) {
+- this.world.a((EntityHuman) null, this.target.locX, this.target.locY, this.target.locZ, SoundEffects.BLOCK_CONDUIT_ATTACK_TARGET, SoundCategory.BLOCKS, 1.0F, 1.0F);
+- this.target.damageEntity(DamageSource.MAGIC, 4.0F);
+ // CraftBukkit start
+ CraftEventFactory.blockDamage = CraftBlock.at(this.world, this.position);
-+ if (this.j.damageEntity(DamageSource.MAGIC, 4.0F)) {
-+ this.world.a((EntityHuman) null, this.j.locX, this.j.locY, this.j.locZ, SoundEffects.BLOCK_CONDUIT_ATTACK_TARGET, SoundCategory.BLOCKS, 1.0F, 1.0F);
++ if (this.target.damageEntity(DamageSource.MAGIC, 4.0F)) {
++ this.world.a((EntityHuman) null, this.target.locX, this.target.locY, this.target.locZ, SoundEffects.BLOCK_CONDUIT_ATTACK_TARGET, SoundCategory.BLOCKS, 1.0F, 1.0F);
+ }
+ CraftEventFactory.blockDamage = null;
+ // CraftBukkit end
}
- if (entityliving != this.j) {
+ if (entityliving != this.target) {
@@ -215,7 +224,7 @@
@Nullable
diff --git a/nms-patches/TileEntityFurnace.patch b/nms-patches/TileEntityFurnace.patch
index bb7892c8..f23a4027 100644
--- a/nms-patches/TileEntityFurnace.patch
+++ b/nms-patches/TileEntityFurnace.patch
@@ -1,6 +1,6 @@
--- a/net/minecraft/server/TileEntityFurnace.java
+++ b/net/minecraft/server/TileEntityFurnace.java
-@@ -9,6 +9,15 @@
+@@ -8,6 +8,15 @@
import java.util.Map;
import java.util.Map.Entry;
import javax.annotation.Nullable;
@@ -16,7 +16,7 @@
public class TileEntityFurnace extends TileEntityContainer implements IWorldInventory, RecipeHolder, AutoRecipeOutput, ITickable {
-@@ -93,6 +102,31 @@
+@@ -92,6 +101,31 @@
return linkedhashmap;
}
@@ -48,7 +48,7 @@
public TileEntityFurnace() {
super(TileEntityTypes.FURNACE);
this.items = NonNullList.a(3, ItemStack.a);
-@@ -220,7 +254,7 @@
+@@ -219,7 +253,7 @@
}
public void Y_() {
@@ -57,7 +57,7 @@
boolean flag1 = false;
if (this.isBurning()) {
-@@ -238,9 +272,20 @@
+@@ -237,9 +271,20 @@
IRecipe irecipe = this.world.E().b(this, this.world);
if (!this.isBurning() && this.canBurn(irecipe)) {
@@ -80,7 +80,7 @@
flag1 = true;
if (!itemstack.isEmpty()) {
Item item = itemstack.getItem();
-@@ -271,6 +316,7 @@
+@@ -270,6 +315,7 @@
if (flag != this.isBurning()) {
flag1 = true;
this.world.setTypeAndData(this.position, (IBlockData) this.world.getType(this.position).set(BlockFurnace.LIT, Boolean.valueOf(this.isBurning())), 3);
@@ -88,7 +88,7 @@
}
}
-@@ -281,7 +327,7 @@
+@@ -280,7 +326,7 @@
}
private int s() {
@@ -97,7 +97,7 @@
return furnacerecipe != null ? furnacerecipe.h() : 200;
}
-@@ -308,11 +354,38 @@
+@@ -307,11 +353,38 @@
ItemStack itemstack1 = irecipe.d();
ItemStack itemstack2 = (ItemStack) this.items.get(2);
diff --git a/nms-patches/World.patch b/nms-patches/World.patch
index 10d0c321..d017d986 100644
--- a/nms-patches/World.patch
+++ b/nms-patches/World.patch
@@ -146,7 +146,7 @@
} else {
Chunk chunk = this.getChunkAtWorldCoords(blockposition);
Block block = iblockdata.getBlock();
-- IBlockData iblockdata1 = chunk.a(blockposition, iblockdata, (i & 64) != 0);
+- IBlockData iblockdata1 = chunk.setType(blockposition, iblockdata, (i & 64) != 0);
+
+ // CraftBukkit start - capture blockstates
+ CraftBlockState blockstate = null;
@@ -156,7 +156,7 @@
+ }
+ // CraftBukkit end
+
-+ IBlockData iblockdata1 = chunk.a(blockposition, iblockdata, (i & 64) != 0, (i & 1024) == 0); // CraftBukkit custom NO_PLACE flag
++ IBlockData iblockdata1 = chunk.setType(blockposition, iblockdata, (i & 64) != 0, (i & 1024) == 0); // CraftBukkit custom NO_PLACE flag
if (iblockdata1 == null) {
+ // CraftBukkit start - remove blockstate if failed
@@ -335,7 +335,7 @@
+ if (vehicle != null) {
+ vehicle.dead = true;
+ }
-+ for (Entity passenger : entity.bQ()) {
++ for (Entity passenger : entity.getAllPassengers()) {
+ passenger.dead = true;
+ }
+ entity.dead = true;
@@ -595,7 +595,7 @@
if (predicate.test(entityhuman1)) {
double d5 = entityhuman1.d(d0, d1, d2);
-@@ -2164,6 +2475,16 @@
+@@ -2185,6 +2496,16 @@
public void everyoneSleeping() {}
@@ -612,7 +612,7 @@
public float g(float f) {
return (this.q + (this.r - this.q) * f) * this.i(f);
}
-@@ -2325,7 +2646,7 @@
+@@ -2346,7 +2667,7 @@
int l = j * 16 + 8 - blockposition.getZ();
boolean flag = true;
diff --git a/nms-patches/WorldData.patch b/nms-patches/WorldData.patch
index 256a27e0..fbd4882b 100644
--- a/nms-patches/WorldData.patch
+++ b/nms-patches/WorldData.patch
@@ -23,8 +23,8 @@
@@ -304,6 +310,7 @@
nbttagcompound2.setBoolean("Snapshot", false);
nbttagcompound.set("Version", nbttagcompound2);
- nbttagcompound.setInt("DataVersion", 1628);
-+ if (org.bukkit.craftbukkit.util.CraftMagicNumbers.DATA_VERSION != 1628) throw new AssertionError(); // CraftBukkit - sentinel
+ nbttagcompound.setInt("DataVersion", 1631);
++ if (org.bukkit.craftbukkit.util.CraftMagicNumbers.DATA_VERSION != 1631) throw new AssertionError(); // CraftBukkit - sentinel
nbttagcompound.setLong("RandomSeed", this.e);
nbttagcompound.setString("generatorName", this.f.b());
nbttagcompound.setInt("generatorVersion", this.f.getVersion());
diff --git a/nms-patches/WorldGenFactory.patch b/nms-patches/WorldGenFactory.patch
deleted file mode 100644
index ff610567..00000000
--- a/nms-patches/WorldGenFactory.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- a/net/minecraft/server/WorldGenFactory.java
-+++ b/net/minecraft/server/WorldGenFactory.java
-@@ -9,7 +9,7 @@
- public class WorldGenFactory {
-
- private static final Logger a = LogManager.getLogger();
-- private static final Map<String, Class<? extends StructureStart>> b = Maps.newHashMap();
-+ public static final Map<String, Class<? extends StructureStart>> b = Maps.newHashMap(); // CraftBukkit private -> public
- private static final Map<Class<? extends StructureStart>, String> c = Maps.newHashMap();
- private static final Map<String, Class<? extends StructurePiece>> d = Maps.newHashMap();
- private static final Map<Class<? extends StructurePiece>, String> e = Maps.newHashMap();
diff --git a/pom.xml b/pom.xml
index 942c6505..33d3f98c 100644
--- a/pom.xml
+++ b/pom.xml
@@ -4,14 +4,14 @@
<groupId>org.bukkit</groupId>
<artifactId>craftbukkit</artifactId>
<packaging>jar</packaging>
- <version>1.13.1-R0.1-SNAPSHOT</version>
+ <version>1.13.2-R0.1-SNAPSHOT</version>
<name>CraftBukkit</name>
<url>http://www.bukkit.org</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<api.version>unknown</api.version>
- <minecraft.version>1.13.1</minecraft.version>
+ <minecraft.version>1.13.2</minecraft.version>
<minecraft_version>1_13_R2</minecraft_version>
<buildtag.prefix>git-Bukkit-</buildtag.prefix>
<buildtag.suffix></buildtag.suffix>
@@ -48,13 +48,13 @@
<dependency>
<groupId>org.xerial</groupId>
<artifactId>sqlite-jdbc</artifactId>
- <version>3.23.1</version>
+ <version>3.25.2</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
- <version>5.1.46</version>
+ <version>5.1.47</version>
<scope>runtime</scope>
</dependency>
<!-- testing -->
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
index a0eefe04..a1eacecf 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
@@ -1273,10 +1273,10 @@ public final class CraftServer implements Server {
BlockPosition structurePosition = new BlockPosition(structureLocation.getBlockX(), structureLocation.getBlockY(), structureLocation.getBlockZ());
// Create map with trackPlayer = true, unlimitedTracking = true
- net.minecraft.server.ItemStack stack = ItemWorldMap.a(worldServer, structurePosition.getX(), structurePosition.getZ(), MapView.Scale.NORMAL.getValue(), true, true); //PAIL rename setFilledMapView
- ItemWorldMap.a(worldServer, stack); // PAIL rename sepiaMapFilter
+ net.minecraft.server.ItemStack stack = ItemWorldMap.createFilledMapView(worldServer, structurePosition.getX(), structurePosition.getZ(), MapView.Scale.NORMAL.getValue(), true, true);
+ ItemWorldMap.applySepiaFilter(worldServer, stack);
// "+" map ID taken from EntityVillager
- ItemWorldMap.getSavedMap(stack, worldServer).a(stack, structurePosition, "+", MapIcon.Type.a(structureType.getMapIcon().getValue())); // PAIL rename decorateMap
+ ItemWorldMap.getSavedMap(stack, worldServer).decorateMap(stack, structurePosition, "+", MapIcon.Type.a(structureType.getMapIcon().getValue()));
return CraftItemStack.asBukkitCopy(stack);
}
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
index ddaeefb7..cc10e277 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
@@ -256,7 +256,7 @@ public class CraftWorld implements World {
}
public boolean isChunkInUse(int x, int z) {
- return world.getPlayerChunkMap().isChunkInUse(x, z) || world.f(x, z);
+ return world.getPlayerChunkMap().isChunkInUse(x, z) || world.isForceLoaded(x, z);
}
public boolean loadChunk(int x, int z, boolean generate) {
diff --git a/src/main/java/org/bukkit/craftbukkit/Main.java b/src/main/java/org/bukkit/craftbukkit/Main.java
index e5f39b66..926efb0a 100644
--- a/src/main/java/org/bukkit/craftbukkit/Main.java
+++ b/src/main/java/org/bukkit/craftbukkit/Main.java
@@ -177,11 +177,11 @@ public class Main {
useConsole = false;
}
- if (false && Main.class.getPackage().getImplementationVendor() != null && System.getProperty("IReallyKnowWhatIAmDoingISwear") == null) {
+ if (Main.class.getPackage().getImplementationVendor() != null && System.getProperty("IReallyKnowWhatIAmDoingISwear") == null) {
Date buildDate = new SimpleDateFormat("yyyyMMdd-HHmm").parse(Main.class.getPackage().getImplementationVendor());
Calendar deadline = Calendar.getInstance();
- deadline.add(Calendar.DAY_OF_YEAR, -10);
+ deadline.add(Calendar.DAY_OF_YEAR, -7);
if (buildDate.before(deadline.getTime())) {
System.err.println("*** Error, this build is outdated ***");
System.err.println("*** Please download a new build as per instructions from https://www.spigotmc.org/ ***");
diff --git a/src/main/java/org/bukkit/craftbukkit/block/CraftBlock.java b/src/main/java/org/bukkit/craftbukkit/block/CraftBlock.java
index f3e06052..1b2a8b63 100644
--- a/src/main/java/org/bukkit/craftbukkit/block/CraftBlock.java
+++ b/src/main/java/org/bukkit/craftbukkit/block/CraftBlock.java
@@ -600,6 +600,6 @@ public class CraftBlock implements Block {
@Override
public boolean isPassable() {
- return this.getData0().h(world, position).b(); // PAIL getCollisionShape, isEmpty
+ return this.getData0().getCollisionShape(world, position).isEmpty();
}
}
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftAnimals.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftAnimals.java
index f671ad12..2478b934 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftAnimals.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftAnimals.java
@@ -23,11 +23,11 @@ public class CraftAnimals extends CraftAgeable implements Animals {
@Override
public UUID getBreedCause() {
- return getHandle().bD;
+ return getHandle().breedCause;
}
@Override
public void setBreedCause(UUID uuid) {
- getHandle().bD = uuid;
+ getHandle().breedCause = uuid;
}
}
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java
index 497783d4..be00d79e 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java
@@ -467,7 +467,7 @@ public class CraftHumanEntity extends CraftLivingEntity implements HumanEntity {
@Override
public int discoverRecipes(Collection<NamespacedKey> recipes) {
- return getHandle().a(bukkitKeysToMinecraftRecipes(recipes)); // PAIL rename discoverRecipes
+ return getHandle().discoverRecipes(bukkitKeysToMinecraftRecipes(recipes));
}
@Override
@@ -477,7 +477,7 @@ public class CraftHumanEntity extends CraftLivingEntity implements HumanEntity {
@Override
public int undiscoverRecipes(Collection<NamespacedKey> recipes) {
- return getHandle().b(bukkitKeysToMinecraftRecipes(recipes)); // PAIL rename undiscoverRecipes
+ return getHandle().undiscoverRecipes(bukkitKeysToMinecraftRecipes(recipes));
}
private Collection<IRecipe> bukkitKeysToMinecraftRecipes(Collection<NamespacedKey> recipeKeys) {
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftVillager.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftVillager.java
index e9222580..e21fe51a 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftVillager.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftVillager.java
@@ -70,7 +70,7 @@ public class CraftVillager extends CraftAgeable implements Villager, InventoryHo
if (resetTrades) {
getHandle().trades = null;
- getHandle().bQ = 0; // SPIGOT-4310
+ getHandle().careerLevel = 0; // SPIGOT-4310
getHandle().populateTrades();
}
}
diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
index 67d2eb1b..79d6578e 100644
--- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
+++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
@@ -157,6 +157,17 @@ public class CraftEventFactory {
return event;
}
+ public static EntityPlaceEvent callEntityPlaceEvent(ItemActionContext itemactioncontext, Entity entity) {
+ Player who = (itemactioncontext.getEntity() == null) ? null : (Player) itemactioncontext.getEntity().getBukkitEntity();
+ org.bukkit.block.Block blockClicked = CraftBlock.at(itemactioncontext.getWorld(), itemactioncontext.getClickPosition());
+ org.bukkit.block.BlockFace blockFace = org.bukkit.craftbukkit.block.CraftBlock.notchToBlockFace(itemactioncontext.getClickedFace());
+
+ EntityPlaceEvent event = new EntityPlaceEvent(entity.getBukkitEntity(), who, blockClicked, blockFace);
+ entity.world.getServer().getPluginManager().callEvent(event);
+
+ return event;
+ }
+
/**
* Bucket methods
*/
diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaItem.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaItem.java
index a5835479..60cdd1dc 100644
--- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaItem.java
+++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaItem.java
@@ -634,7 +634,7 @@ class CraftMetaItem implements ItemMeta, Damageable, Repairable {
if (entry.getValue().getSlot() != null) {
EnumItemSlot slot = CraftEquipmentSlot.getNMS(entry.getValue().getSlot());
if (slot != null) {
- sub.setString(ATTRIBUTES_SLOT.NBT, slot.d()); // PAIL rename getSlotName, getName
+ sub.setString(ATTRIBUTES_SLOT.NBT, slot.getSlotName());
}
}
list.add(sub);
diff --git a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
index 848b9c92..89ef12fe 100644
--- a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
+++ b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
@@ -144,7 +144,7 @@ public final class CraftMagicNumbers implements UnsafeValues {
return CraftBlockData.fromData(getBlock(material, data));
}
- public static final int DATA_VERSION = 1628;
+ public static final int DATA_VERSION = 1631;
@Override
public int getDataVersion() {
diff --git a/src/test/java/org/bukkit/StructureTypeTest.java b/src/test/java/org/bukkit/StructureTypeTest.java
index 57f68761..ad1c7a4d 100644
--- a/src/test/java/org/bukkit/StructureTypeTest.java
+++ b/src/test/java/org/bukkit/StructureTypeTest.java
@@ -22,7 +22,7 @@ public class StructureTypeTest extends AbstractTestingBase {
@Test
public void testMinecraftToBukkit() {
- for (String key : WorldGenFactory.b.keySet()) { // PAIL rename structureStartMap
+ for (String key : WorldGenFactory.structureStartMap.keySet()) {
Assert.assertNotNull(structures.get(key));
}
}
@@ -38,8 +38,8 @@ public class StructureTypeTest extends AbstractTestingBase {
@Test
public void testBukkitToMinecraft() {
for (Map.Entry<String, StructureType> entry : structures.entrySet()) {
- Assert.assertNotNull(WorldGenFactory.b.get(entry.getKey()));
- Assert.assertNotNull(WorldGenFactory.b.get(entry.getValue().getName()));
+ Assert.assertNotNull(WorldGenFactory.structureStartMap.get(entry.getKey()));
+ Assert.assertNotNull(WorldGenFactory.structureStartMap.get(entry.getValue().getName()));
}
}
}