diff --git a/Paper b/Paper index d20e5b195..3dbb8926e 160000 --- a/Paper +++ b/Paper @@ -1 +1 @@ -Subproject commit d20e5b1954adfb2da02e7e5389e63baf82c528f5 +Subproject commit 3dbb8926e56033a6b20a00b7312b9bce3dd69473 diff --git a/patches/server/0001-Tuinity-Server-Changes.patch b/patches/server/0001-Tuinity-Server-Changes.patch index 019eb063a..5e0ea56bc 100644 --- a/patches/server/0001-Tuinity-Server-Changes.patch +++ b/patches/server/0001-Tuinity-Server-Changes.patch @@ -5659,10 +5659,10 @@ index 0000000000000000000000000000000000000000..0e4442a94559346b19a536d35ce5def6 +} diff --git a/src/main/java/com/tuinity/tuinity/config/TuinityConfig.java b/src/main/java/com/tuinity/tuinity/config/TuinityConfig.java new file mode 100644 -index 0000000000000000000000000000000000000000..e1dc7c1025e19f7393a45719af8fe7aae016184d +index 0000000000000000000000000000000000000000..414c8de2bcc10165e2d328a5746899ac087698b4 --- /dev/null +++ b/src/main/java/com/tuinity/tuinity/config/TuinityConfig.java -@@ -0,0 +1,415 @@ +@@ -0,0 +1,398 @@ +package com.tuinity.tuinity.config; + +import com.destroystokyo.paper.util.SneakyThrow; @@ -5789,7 +5789,7 @@ index 0000000000000000000000000000000000000000..e1dc7c1025e19f7393a45719af8fe7aa + tickWorldsInParallel = TuinityConfig.getBoolean("tick-worlds-in-parallel", false); + tickThreads = TuinityConfig.getInt("server-tick-threads", 1); // will be 4 in the future + }*/ -+ ++ + public static int delayChunkUnloadsBy; + + private static void delayChunkUnloadsBy() { @@ -6058,23 +6058,6 @@ index 0000000000000000000000000000000000000000..e1dc7c1025e19f7393a45719af8fe7aa + final int threads = this.getInt("tick-threads", -1); + this.threads = threads == -1 ? TuinityConfig.tickThreads : threads; + }*/ -+ -+ public int spawnLimitMonsters; -+ public int spawnLimitAnimals; -+ public int spawnLimitWaterAmbient; -+ public int spawnLimitWaterAnimals; -+ public int spawnLimitAmbient; -+ -+ private void perWorldSpawnLimit() { -+ final String path = "spawn-limits"; -+ -+ this.spawnLimitMonsters = this.getInt(path + ".monsters", -1); -+ this.spawnLimitAnimals = this.getInt(path + ".animals", -1); -+ this.spawnLimitWaterAmbient = this.getInt(path + ".water-ambient", -1); -+ this.spawnLimitWaterAnimals = this.getInt(path + ".water-animals", -1); -+ this.spawnLimitAmbient = this.getInt(path + ".ambient", -1); -+ } -+ + } + +} @@ -11627,7 +11610,7 @@ index 3644e8b24b082e17752ef52934625416130aaa08..58e14c174cdf76cdea861fd3d4d1195f class b extends ChunkMap { diff --git a/src/main/java/net/minecraft/server/level/ChunkProviderServer.java b/src/main/java/net/minecraft/server/level/ChunkProviderServer.java -index 4a71f9a8a57ed123b31c725a8bd5f94ab0e2174d..e0ffea4f5d45a402d4ff5b4b831f2663f9d73eeb 100644 +index 4a71f9a8a57ed123b31c725a8bd5f94ab0e2174d..1b86c032fde3409cb89b849b9ba094af82cd9269 100644 --- a/src/main/java/net/minecraft/server/level/ChunkProviderServer.java +++ b/src/main/java/net/minecraft/server/level/ChunkProviderServer.java @@ -47,6 +47,12 @@ import net.minecraft.world.level.storage.WorldData; @@ -11931,7 +11914,7 @@ index 4a71f9a8a57ed123b31c725a8bd5f94ab0e2174d..e0ffea4f5d45a402d4ff5b4b831f2663 this.world.timings.doChunkUnload.stopTiming(); // Spigot this.world.getMethodProfiler().exit(); this.clearCache(); -@@ -834,32 +1017,37 @@ public class ChunkProviderServer extends IChunkProvider { +@@ -834,32 +1017,38 @@ public class ChunkProviderServer extends IChunkProvider { for (EntityPlayer player : this.world.players) { Arrays.fill(player.mobCounts, 0); } @@ -11951,7 +11934,7 @@ index 4a71f9a8a57ed123b31c725a8bd5f94ab0e2174d..e0ffea4f5d45a402d4ff5b4b831f2663 //List list = Lists.newArrayList(this.playerChunkMap.f()); // Paper //Collections.shuffle(list); // Paper // Paper - moved up -- this.world.timings.chunkTicks.startTiming(); // Paper + this.world.timings.chunkTicks.startTiming(); // Paper - final int[] chunksTicked = {0}; this.playerChunkMap.forEachVisibleChunk((playerchunk) -> { // Paper - safe iterator incase chunk loads, also no wrapping - Optional optional = ((Either) playerchunk.a().getNow(PlayerChunk.UNLOADED_CHUNK)).left(); - @@ -11980,7 +11963,7 @@ index 4a71f9a8a57ed123b31c725a8bd5f94ab0e2174d..e0ffea4f5d45a402d4ff5b4b831f2663 ChunkCoordIntPair chunkcoordintpair = playerchunk.i(); if (!this.playerChunkMap.isOutsideOfRange(playerchunk, chunkcoordintpair, false)) { // Paper - optimise isOutsideOfRange -@@ -871,12 +1059,15 @@ public class ChunkProviderServer extends IChunkProvider { +@@ -871,11 +1060,15 @@ public class ChunkProviderServer extends IChunkProvider { //this.world.timings.chunkTicks.startTiming(); // Spigot // Paper this.world.a(chunk, k); //this.world.timings.chunkTicks.stopTiming(); // Spigot // Paper @@ -11990,16 +11973,15 @@ index 4a71f9a8a57ed123b31c725a8bd5f94ab0e2174d..e0ffea4f5d45a402d4ff5b4b831f2663 } } - }); -- this.world.timings.chunkTicks.stopTiming(); // Paper + } // Tuinity start - optimise chunk tick iteration + } finally { + iterator.finishedIterating(); + } + // Tuinity end - optimise chunk tick iteration + this.world.timings.chunkTicks.stopTiming(); // Paper this.world.getMethodProfiler().enter("customSpawners"); if (flag1) { - try (co.aikar.timings.Timing ignored = this.world.timings.miscMobSpawning.startTiming()) { // Paper - timings -@@ -888,7 +1079,25 @@ public class ChunkProviderServer extends IChunkProvider { +@@ -888,7 +1081,25 @@ public class ChunkProviderServer extends IChunkProvider { this.world.getMethodProfiler().exit(); } @@ -12025,7 +12007,7 @@ index 4a71f9a8a57ed123b31c725a8bd5f94ab0e2174d..e0ffea4f5d45a402d4ff5b4b831f2663 } private void a(long i, Consumer consumer) { -@@ -1028,44 +1237,12 @@ public class ChunkProviderServer extends IChunkProvider { +@@ -1028,44 +1239,12 @@ public class ChunkProviderServer extends IChunkProvider { ChunkProviderServer.this.world.getMethodProfiler().c("runTask"); super.executeTask(runnable); } @@ -15372,7 +15354,7 @@ index dca2e9e45116df22d8c95d1be8f0a7e3c2d2b6b1..cb394ec310712cc97d65afe068284b27 try { diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 8ef41182056052686055b7eb88ab19c161e84ed4..d88769e13410c6469df1d118b5c340672dc816c8 100644 +index 6e1304f7169c11f67c573b2c8dc11825bcc7da0d..89852779fd9cfd19058afe40feb0cf14ca8d2896 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -228,7 +228,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, ne @@ -15399,7 +15381,7 @@ index 8ef41182056052686055b7eb88ab19c161e84ed4..d88769e13410c6469df1d118b5c34067 // Paper start - optimise entity tracking final org.spigotmc.TrackingRange.TrackingRangeType trackingRangeType = org.spigotmc.TrackingRange.getTrackingRangeType(this); -@@ -309,11 +317,59 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, ne +@@ -309,8 +317,21 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, ne } public final com.destroystokyo.paper.util.misc.PooledLinkedHashSets.PooledObjectLinkedOpenHashSet getPlayersInTrackRange() { @@ -15423,6 +15405,10 @@ index 8ef41182056052686055b7eb88ab19c161e84ed4..d88769e13410c6469df1d118b5c34067 } // Paper end - optimise entity tracking +@@ -345,6 +366,41 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, ne + } + // Paper end - make end portalling safe + + // Tuinity start + /** + * Overriding this field will cause memory leaks. @@ -15458,9 +15444,9 @@ index 8ef41182056052686055b7eb88ab19c161e84ed4..d88769e13410c6469df1d118b5c34067 + } + // Tuinity end + - // Paper start - make end portalling safe - public BlockPosition portalBlock; - public WorldServer portalWorld; + public Entity(EntityTypes entitytypes, World world) { + this.id = Entity.entityCount.incrementAndGet(); + this.passengers = Lists.newArrayList(); @@ -714,7 +770,39 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, ne return this.onGround; } @@ -15750,7 +15736,7 @@ index 8ef41182056052686055b7eb88ab19c161e84ed4..d88769e13410c6469df1d118b5c34067 public double h(Entity entity) { return this.e(entity.getPositionVector()); } -@@ -2068,9 +2313,9 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, ne +@@ -2073,9 +2318,9 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, ne float f1 = this.size.width * 0.8F; AxisAlignedBB axisalignedbb = AxisAlignedBB.g((double) f1, 0.10000000149011612D, (double) f1).d(this.locX(), this.getHeadY(), this.locZ()); @@ -15762,7 +15748,7 @@ index 8ef41182056052686055b7eb88ab19c161e84ed4..d88769e13410c6469df1d118b5c34067 } } -@@ -2078,11 +2323,13 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, ne +@@ -2083,11 +2328,13 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, ne return EnumInteractionResult.PASS; } @@ -15778,7 +15764,7 @@ index 8ef41182056052686055b7eb88ab19c161e84ed4..d88769e13410c6469df1d118b5c34067 return false; } -@@ -2974,7 +3221,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, ne +@@ -2979,7 +3226,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, ne this.recursiveStream().forEach((entity) -> { worldserver.chunkCheck(entity); entity.az = true; @@ -15787,7 +15773,7 @@ index 8ef41182056052686055b7eb88ab19c161e84ed4..d88769e13410c6469df1d118b5c34067 while (iterator.hasNext()) { Entity entity1 = (Entity) iterator.next(); -@@ -3432,12 +3679,16 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, ne +@@ -3437,12 +3684,16 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, ne return this.locBlock; } @@ -15804,7 +15790,7 @@ index 8ef41182056052686055b7eb88ab19c161e84ed4..d88769e13410c6469df1d118b5c34067 } public void setMot(double d0, double d1, double d2) { -@@ -3492,7 +3743,9 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, ne +@@ -3497,7 +3748,9 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, ne } // Paper end if (this.loc.x != d0 || this.loc.y != d1 || this.loc.z != d2) { @@ -20653,7 +20639,7 @@ index cebecee640ed5a7fc2b978e00ff7eb012228267d..507c5255542ba1b958470b4db2c35b1b public void restart() { org.spigotmc.RestartCommand.restart(); diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java -index 02198dbe9e80c2990e8a09b2b763748dae727a03..3b6b1f3229b07c84d99db652e01661bcc78368fd 100644 +index c0b49a0eaeda06b89a4fb425eec3d5bfa9717379..3562c20dee06913d03aee49d12cb27831c008842 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java @@ -298,7 +298,7 @@ public class CraftWorld implements World { @@ -20674,22 +20660,7 @@ index 02198dbe9e80c2990e8a09b2b763748dae727a03..3b6b1f3229b07c84d99db652e01661bc if (chunkHolder.getChunk() != null) { ++ret; } -@@ -353,6 +353,14 @@ public class CraftWorld implements World { - this.generator = gen; - - environment = env; -+ -+ //Tuinity start - per world spawn limits -+ monsterSpawn = world.tuinityConfig.spawnLimitMonsters; -+ animalSpawn = world.tuinityConfig.spawnLimitAnimals; -+ waterAmbientSpawn = world.tuinityConfig.spawnLimitWaterAmbient; -+ waterAnimalSpawn = world.tuinityConfig.spawnLimitWaterAnimals; -+ ambientSpawn = world.tuinityConfig.spawnLimitAmbient; -+ //Tuinity end - } - - @Override -@@ -426,14 +434,7 @@ public class CraftWorld implements World { +@@ -433,14 +433,7 @@ public class CraftWorld implements World { @Override public Chunk getChunkAt(int x, int z) { @@ -20705,7 +20676,7 @@ index 02198dbe9e80c2990e8a09b2b763748dae727a03..3b6b1f3229b07c84d99db652e01661bc } // Paper start -@@ -481,13 +482,16 @@ public class CraftWorld implements World { +@@ -488,13 +481,16 @@ public class CraftWorld implements World { public Chunk[] getLoadedChunks() { // Paper start if (Thread.currentThread() != world.getMinecraftWorld().serverThread) { @@ -20726,7 +20697,7 @@ index 02198dbe9e80c2990e8a09b2b763748dae727a03..3b6b1f3229b07c84d99db652e01661bc return chunks.values().stream().map(PlayerChunk::getFullChunk).filter(Objects::nonNull).map(net.minecraft.world.level.chunk.Chunk::getBukkitChunk).toArray(Chunk[]::new); } -@@ -516,6 +520,7 @@ public class CraftWorld implements World { +@@ -523,6 +519,7 @@ public class CraftWorld implements World { org.spigotmc.AsyncCatcher.catchOp("chunk unload"); // Spigot if (isChunkLoaded(x, z)) { world.getChunkProvider().removeTicket(TicketType.PLUGIN, new ChunkCoordIntPair(x, z), 0, Unit.INSTANCE); // Paper @@ -20734,7 +20705,7 @@ index 02198dbe9e80c2990e8a09b2b763748dae727a03..3b6b1f3229b07c84d99db652e01661bc } return true; -@@ -729,6 +734,30 @@ public class CraftWorld implements World { +@@ -736,6 +733,30 @@ public class CraftWorld implements World { return ret.entrySet().stream().collect(ImmutableMap.toImmutableMap(Map.Entry::getKey, (entry) -> entry.getValue().build())); } @@ -20765,7 +20736,7 @@ index 02198dbe9e80c2990e8a09b2b763748dae727a03..3b6b1f3229b07c84d99db652e01661bc @Override public boolean isChunkForceLoaded(int x, int z) { return getHandle().getForceLoadedChunks().contains(ChunkCoordIntPair.pair(x, z)); -@@ -2661,7 +2690,7 @@ public class CraftWorld implements World { +@@ -2668,7 +2689,7 @@ public class CraftWorld implements World { } return this.world.getChunkProvider().getChunkAtAsynchronously(x, z, gen, urgent).thenComposeAsync((either) -> { net.minecraft.world.level.chunk.Chunk chunk = (net.minecraft.world.level.chunk.Chunk) either.left().orElse(null); @@ -20774,7 +20745,7 @@ index 02198dbe9e80c2990e8a09b2b763748dae727a03..3b6b1f3229b07c84d99db652e01661bc return CompletableFuture.completedFuture(chunk == null ? null : chunk.getBukkitChunk()); }, net.minecraft.server.MinecraftServer.getServer()); } -@@ -2686,14 +2715,14 @@ public class CraftWorld implements World { +@@ -2693,14 +2714,14 @@ public class CraftWorld implements World { throw new IllegalArgumentException("View distance " + viewDistance + " is out of range of [2, 32]"); } PlayerChunkMap chunkMap = getHandle().getChunkProvider().playerChunkMap; @@ -20791,7 +20762,7 @@ index 02198dbe9e80c2990e8a09b2b763748dae727a03..3b6b1f3229b07c84d99db652e01661bc } @Override -@@ -2702,11 +2731,22 @@ public class CraftWorld implements World { +@@ -2709,11 +2730,22 @@ public class CraftWorld implements World { throw new IllegalArgumentException("View distance " + viewDistance + " is out of range of [2, 32]"); } PlayerChunkMap chunkMap = getHandle().getChunkProvider().playerChunkMap; diff --git a/patches/server/0025-Giants-AI-settings.patch b/patches/server/0025-Giants-AI-settings.patch index 6e6ce8a74..afa44eae1 100644 --- a/patches/server/0025-Giants-AI-settings.patch +++ b/patches/server/0025-Giants-AI-settings.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Giants AI settings diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index d88769e13410c6469df1d118b5c340672dc816c8..d3cdc6ff2a3eed35ac8f1a25fd2085337802951a 100644 +index 89852779fd9cfd19058afe40feb0cf14ca8d2896..611a2c34c80462826564705eb5a079bd6fdda4e1 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -228,7 +228,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, ne diff --git a/patches/server/0039-Cows-eat-mushrooms.patch b/patches/server/0039-Cows-eat-mushrooms.patch index 06a95b808..bafcfc319 100644 --- a/patches/server/0039-Cows-eat-mushrooms.patch +++ b/patches/server/0039-Cows-eat-mushrooms.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Cows eat mushrooms diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index d3cdc6ff2a3eed35ac8f1a25fd2085337802951a..d6f4e31c6c9e2e579e87ab25707dd84f4ea2605a 100644 +index 611a2c34c80462826564705eb5a079bd6fdda4e1..0f11984743ba49fc6f094c8fa6c563febf0ab7d6 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -2915,6 +2915,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, ne +@@ -2920,6 +2920,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, ne this.invulnerable = flag; } diff --git a/patches/server/0052-Fix-the-dead-lagging-the-server.patch b/patches/server/0052-Fix-the-dead-lagging-the-server.patch index 8d7bb6b3d..a5ef06001 100644 --- a/patches/server/0052-Fix-the-dead-lagging-the-server.patch +++ b/patches/server/0052-Fix-the-dead-lagging-the-server.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Fix the dead lagging the server diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index d6f4e31c6c9e2e579e87ab25707dd84f4ea2605a..f9e2a7c4a7b427470a586d54c8ab9e1b3b03cf09 100644 +index 0f11984743ba49fc6f094c8fa6c563febf0ab7d6..e458be6377595efed8dfb6527ab0b7a0f0f87d84 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -1659,6 +1659,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, ne diff --git a/patches/server/0067-Add-canSaveToDisk-to-Entity.patch b/patches/server/0067-Add-canSaveToDisk-to-Entity.patch index d75fa2da9..83c0fc8f9 100644 --- a/patches/server/0067-Add-canSaveToDisk-to-Entity.patch +++ b/patches/server/0067-Add-canSaveToDisk-to-Entity.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Add canSaveToDisk to Entity diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index f9e2a7c4a7b427470a586d54c8ab9e1b3b03cf09..c9d04e8a617c3535ff390dd685776a37d952ce93 100644 +index e458be6377595efed8dfb6527ab0b7a0f0f87d84..cfe6a52fa45c8dfcb2136978456b6abf7a32258c 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -444,6 +444,12 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, ne diff --git a/patches/server/0068-Configurable-void-damage-height-and-damage.patch b/patches/server/0068-Configurable-void-damage-height-and-damage.patch index a5968d7e8..ff2178259 100644 --- a/patches/server/0068-Configurable-void-damage-height-and-damage.patch +++ b/patches/server/0068-Configurable-void-damage-height-and-damage.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Configurable void damage height and damage diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index c9d04e8a617c3535ff390dd685776a37d952ce93..c07e3b3927c22db5e529dc3b9a7bd737716a9ab0 100644 +index cfe6a52fa45c8dfcb2136978456b6abf7a32258c..b3618e2100404d1b13d2930d463b8e283ea62f64 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -747,7 +747,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, ne diff --git a/patches/server/0075-Item-entity-immunities.patch b/patches/server/0075-Item-entity-immunities.patch index 5b301c8e9..7296829ac 100644 --- a/patches/server/0075-Item-entity-immunities.patch +++ b/patches/server/0075-Item-entity-immunities.patch @@ -31,7 +31,7 @@ index d827e18d8c3b9b5869dbb1e233f415ba0efb7c1b..d876c5037b4704a174606629c80ba114 private final int trackingDistance; private SectionPosition e; diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index c07e3b3927c22db5e529dc3b9a7bd737716a9ab0..a071e411ab107c50874147be47e2de9b1696ed14 100644 +index b3618e2100404d1b13d2930d463b8e283ea62f64..d5882cac0dd43cea6e7184487e6d25fa34ebafc2 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -1608,6 +1608,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, ne diff --git a/patches/server/0078-Phantoms-attracted-to-crystals-and-crystals-shoot-ph.patch b/patches/server/0078-Phantoms-attracted-to-crystals-and-crystals-shoot-ph.patch index 8e5b00071..7936c330f 100644 --- a/patches/server/0078-Phantoms-attracted-to-crystals-and-crystals-shoot-ph.patch +++ b/patches/server/0078-Phantoms-attracted-to-crystals-and-crystals-shoot-ph.patch @@ -4,23 +4,11 @@ Date: Thu, 9 May 2019 18:26:06 -0500 Subject: [PATCH] Phantoms attracted to crystals and crystals shoot phantoms -diff --git a/src/main/java/net/minecraft/world/damagesource/DamageSource.java b/src/main/java/net/minecraft/world/damagesource/DamageSource.java -index 53ea8a6d90faf4f7f8fd0819be4499422bdd4cbe..6ba14f603b8ec69597c70677cc317f802d6afae9 100644 ---- a/src/main/java/net/minecraft/world/damagesource/DamageSource.java -+++ b/src/main/java/net/minecraft/world/damagesource/DamageSource.java -@@ -99,6 +99,7 @@ public class DamageSource { - return (new EntityDamageSourceIndirect("thrown", entity, entity1)).c(); - } - -+ public static DamageSource indirectMagic(Entity entity, @Nullable Entity owner) { return c(entity, owner); } // Purpur - OBFHELPER - public static DamageSource c(Entity entity, @Nullable Entity entity1) { - return (new EntityDamageSourceIndirect("indirectMagic", entity, entity1)).setIgnoreArmor().setMagic(); - } diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index a071e411ab107c50874147be47e2de9b1696ed14..2a71908105b308bffe37f3ad3b2d6b93360faa1b 100644 +index d5882cac0dd43cea6e7184487e6d25fa34ebafc2..6dc051e0da0a97bcd9e4cba94c2cabc411ebb86f 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -2274,8 +2274,8 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, ne +@@ -2279,8 +2279,8 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, ne return this.a(new ItemStack(imaterial), (float) i); } @@ -32,7 +20,7 @@ index a071e411ab107c50874147be47e2de9b1696ed14..2a71908105b308bffe37f3ad3b2d6b93 } diff --git a/src/main/java/net/minecraft/world/entity/boss/enderdragon/EntityEnderCrystal.java b/src/main/java/net/minecraft/world/entity/boss/enderdragon/EntityEnderCrystal.java -index 9658d93615a51375204481cfe0a1fce6f105fd70..2c983e6a092464d1867fcbe875b2e1461ec8556b 100644 +index 5d48c2640f776c9e29598e19afe779ed6997acfc..4cd5d2de76e785e839c3b3a78d55f2304d9aa4c3 100644 --- a/src/main/java/net/minecraft/world/entity/boss/enderdragon/EntityEnderCrystal.java +++ b/src/main/java/net/minecraft/world/entity/boss/enderdragon/EntityEnderCrystal.java @@ -14,6 +14,7 @@ import net.minecraft.server.level.WorldServer; @@ -43,10 +31,10 @@ index 9658d93615a51375204481cfe0a1fce6f105fd70..2c983e6a092464d1867fcbe875b2e146 import net.minecraft.world.level.Explosion; import net.minecraft.world.level.IBlockAccess; import net.minecraft.world.level.World; -@@ -30,6 +31,12 @@ public class EntityEnderCrystal extends Entity { - private static final DataWatcherObject> c = DataWatcher.a(EntityEnderCrystal.class, DataWatcherRegistry.m); +@@ -31,6 +32,12 @@ public class EntityEnderCrystal extends Entity { private static final DataWatcherObject d = DataWatcher.a(EntityEnderCrystal.class, DataWatcherRegistry.i); public int b; + public boolean generatedByDragonFight = false; // Paper - Fix invulnerable end crystals + // Purpur start + private EntityPhantom targetPhantom; + private int phantomBeamTicks = 0; @@ -56,8 +44,8 @@ index 9658d93615a51375204481cfe0a1fce6f105fd70..2c983e6a092464d1867fcbe875b2e146 public EntityEnderCrystal(EntityTypes entitytypes, World world) { super(entitytypes, world); -@@ -68,7 +75,50 @@ public class EntityEnderCrystal extends Entity { - } +@@ -80,7 +87,50 @@ public class EntityEnderCrystal extends Entity { + // Paper end } + // Purpur start diff --git a/patches/server/0087-Configurable-end-spike-seed.patch b/patches/server/0087-Configurable-end-spike-seed.patch index 7dab70bc3..4368ebd11 100644 --- a/patches/server/0087-Configurable-end-spike-seed.patch +++ b/patches/server/0087-Configurable-end-spike-seed.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Configurable end spike seed diff --git a/src/main/java/net/minecraft/world/level/levelgen/feature/WorldGenEnder.java b/src/main/java/net/minecraft/world/level/levelgen/feature/WorldGenEnder.java -index 1960fc029262d54c6a5ee05c99d86428386cba4a..5ab5905e96c42a58bb0cd7bda449c288a03471cb 100644 +index 1bf09c99ba318813755ea3d3456d0fbb60847e5c..a185d31911bb4e9e996640940dc035f2300cddec 100644 --- a/src/main/java/net/minecraft/world/level/levelgen/feature/WorldGenEnder.java +++ b/src/main/java/net/minecraft/world/level/levelgen/feature/WorldGenEnder.java @@ -36,7 +36,8 @@ public class WorldGenEnder extends WorldGenerator { diff --git a/patches/server/0105-Entities-can-use-portals-configuration.patch b/patches/server/0105-Entities-can-use-portals-configuration.patch index f6f47fa09..7259c7a25 100644 --- a/patches/server/0105-Entities-can-use-portals-configuration.patch +++ b/patches/server/0105-Entities-can-use-portals-configuration.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Entities can use portals configuration diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index ba50226c729d5ca26ff13f6e46d1e5c2a59b0cc0..9efb88657957482172b486827fa717e56d24be03 100644 +index 6d17a5f75e073acccabbad65b998b4eb9e8cf400..e2de4d53e90b30f46a477c995505ac9f48cac842 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -2550,7 +2550,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, ne +@@ -2555,7 +2555,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, ne public void d(BlockPosition blockposition) { if (this.ai()) { this.resetPortalCooldown(); @@ -17,7 +17,7 @@ index ba50226c729d5ca26ff13f6e46d1e5c2a59b0cc0..9efb88657957482172b486827fa717e5 if (!this.world.isClientSide && !blockposition.equals(this.ac)) { this.ac = blockposition.immutableCopy(); } -@@ -3131,7 +3131,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, ne +@@ -3136,7 +3136,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, ne } public boolean canPortal() { diff --git a/patches/server/0110-Despawn-rate-config-options-per-projectile-type.patch b/patches/server/0110-Despawn-rate-config-options-per-projectile-type.patch index 625a596c5..c585d886f 100644 --- a/patches/server/0110-Despawn-rate-config-options-per-projectile-type.patch +++ b/patches/server/0110-Despawn-rate-config-options-per-projectile-type.patch @@ -160,10 +160,10 @@ index 6f497fc1b1eb33d0d9dfb0dc014b25b7eeb0dfac..56de41fc11720f4a37ee4e1e7cbec1b2 + // Purpur end } diff --git a/src/main/java/net/minecraft/world/entity/projectile/EntityPotion.java b/src/main/java/net/minecraft/world/entity/projectile/EntityPotion.java -index dbc0afc5fb9e358a3e6d596692f57fb28303c4da..a3344719bcf178df5b63cda6f6a854c2df174fa5 100644 +index 9348288fb752e758fe7aee8c2a630ea0fb7b9a8c..fa2a4f9e9c0364893abf83ffc627f33b198b2e81 100644 --- a/src/main/java/net/minecraft/world/entity/projectile/EntityPotion.java +++ b/src/main/java/net/minecraft/world/entity/projectile/EntityPotion.java -@@ -270,4 +270,11 @@ public class EntityPotion extends EntityProjectileThrowable { +@@ -283,4 +283,11 @@ public class EntityPotion extends EntityProjectileThrowable { } } diff --git a/patches/server/0116-Stonecutter-damage.patch b/patches/server/0116-Stonecutter-damage.patch index d4018640a..574daef97 100644 --- a/patches/server/0116-Stonecutter-damage.patch +++ b/patches/server/0116-Stonecutter-damage.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Stonecutter damage diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 9efb88657957482172b486827fa717e56d24be03..f3d3626283b2cee502fcfc631d2580387afb0f9e 100644 +index e2de4d53e90b30f46a477c995505ac9f48cac842..b15f117d64d4e6a1dccdda480417b6f092c161ec 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -890,7 +890,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, ne diff --git a/patches/server/0140-PaperPR-Config-option-for-Piglins-guarding-chests.patch b/patches/server/0140-PaperPR-Config-option-for-Piglins-guarding-chests.patch index e391bcaf2..b9c2801a5 100644 --- a/patches/server/0140-PaperPR-Config-option-for-Piglins-guarding-chests.patch +++ b/patches/server/0140-PaperPR-Config-option-for-Piglins-guarding-chests.patch @@ -5,10 +5,10 @@ Subject: [PATCH] PaperPR - Config option for Piglins guarding chests diff --git a/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java b/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java -index 5c91c007691efeea1d4383efcd1ca06990d0660c..ff1718acdc780b7bbf13ba26612aca744d35d674 100644 +index fcacc08db8f5a58ddd06be7f9f2cb2cf6b2231c3..03c26e4dfb4775bfd9caa4f155bde58e83865388 100644 --- a/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java +++ b/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java -@@ -706,6 +706,11 @@ public class PaperWorldConfig { +@@ -719,6 +719,11 @@ public class PaperWorldConfig { zombiesTargetTurtleEggs = getBoolean("zombies-target-turtle-eggs", zombiesTargetTurtleEggs); } diff --git a/patches/server/0143-Lobotomize-stuck-villagers.patch b/patches/server/0143-Lobotomize-stuck-villagers.patch index 850124aa3..dcb81572b 100644 --- a/patches/server/0143-Lobotomize-stuck-villagers.patch +++ b/patches/server/0143-Lobotomize-stuck-villagers.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Lobotomize stuck villagers diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index f3d3626283b2cee502fcfc631d2580387afb0f9e..69f279e9ff851e5b5d45ad8003c31b1edb01fe33 100644 +index b15f117d64d4e6a1dccdda480417b6f092c161ec..ca5afdcc9c5ae7b5f67a2c12f62e89ef5e227e3c 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -206,7 +206,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, ne diff --git a/patches/server/0163-Movement-options-for-armor-stands.patch b/patches/server/0163-Movement-options-for-armor-stands.patch index 0e9add773..8e9302cb6 100644 --- a/patches/server/0163-Movement-options-for-armor-stands.patch +++ b/patches/server/0163-Movement-options-for-armor-stands.patch @@ -17,7 +17,7 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 69f279e9ff851e5b5d45ad8003c31b1edb01fe33..81662285659b330df014bd5cce2033266bc04451 100644 +index ca5afdcc9c5ae7b5f67a2c12f62e89ef5e227e3c..6c5c950b129b5e7e7d0d614cfdbfb5c59fda86de 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -1496,7 +1496,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, ne diff --git a/patches/server/0164-Fix-stuck-in-portals.patch b/patches/server/0164-Fix-stuck-in-portals.patch index 7b3e26320..d790d2323 100644 --- a/patches/server/0164-Fix-stuck-in-portals.patch +++ b/patches/server/0164-Fix-stuck-in-portals.patch @@ -17,10 +17,10 @@ index c631e4d27518a1382869c184af41bec911cce908..2bae88b7b53d38f41808fe0177cd78a9 // CraftBukkit end this.spawnIn(worldserver); diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 81662285659b330df014bd5cce2033266bc04451..5dece69b1b3343783457c507e8d25239e4da92f0 100644 +index 6c5c950b129b5e7e7d0d614cfdbfb5c59fda86de..27cd04a4b6e0c87a300f5868f0b82fc02408a556 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -2547,12 +2547,15 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, ne +@@ -2552,12 +2552,15 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, ne return new Vec2F(this.pitch, this.yaw); } diff --git a/patches/server/0168-End-crystal-explosion-options.patch b/patches/server/0168-End-crystal-explosion-options.patch index 30f429f99..3bede61fa 100644 --- a/patches/server/0168-End-crystal-explosion-options.patch +++ b/patches/server/0168-End-crystal-explosion-options.patch @@ -5,10 +5,10 @@ Subject: [PATCH] End crystal explosion options diff --git a/src/main/java/net/minecraft/world/entity/boss/enderdragon/EntityEnderCrystal.java b/src/main/java/net/minecraft/world/entity/boss/enderdragon/EntityEnderCrystal.java -index 2c983e6a092464d1867fcbe875b2e1461ec8556b..a92c900a6092c07b34711428fac268f446043c90 100644 +index 4cd5d2de76e785e839c3b3a78d55f2304d9aa4c3..f2c4151671806f053ccadaf16c21af429f9c71bb 100644 --- a/src/main/java/net/minecraft/world/entity/boss/enderdragon/EntityEnderCrystal.java +++ b/src/main/java/net/minecraft/world/entity/boss/enderdragon/EntityEnderCrystal.java -@@ -118,6 +118,22 @@ public class EntityEnderCrystal extends Entity { +@@ -130,6 +130,22 @@ public class EntityEnderCrystal extends Entity { phantomDamageCooldown = 0; idleCooldown = 60; } @@ -31,7 +31,7 @@ index 2c983e6a092464d1867fcbe875b2e1461ec8556b..a92c900a6092c07b34711428fac268f4 // Purpur end @Override -@@ -161,15 +177,17 @@ public class EntityEnderCrystal extends Entity { +@@ -175,15 +191,17 @@ public class EntityEnderCrystal extends Entity { // CraftBukkit end this.die(); if (!damagesource.isExplosion()) { diff --git a/patches/server/0171-Configs-for-if-Wither-Ender-Dragon-can-ride-vehicles.patch b/patches/server/0171-Configs-for-if-Wither-Ender-Dragon-can-ride-vehicles.patch index b5acb347e..f65fab7a3 100644 --- a/patches/server/0171-Configs-for-if-Wither-Ender-Dragon-can-ride-vehicles.patch +++ b/patches/server/0171-Configs-for-if-Wither-Ender-Dragon-can-ride-vehicles.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Configs for if Wither/Ender Dragon can ride vehicles diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 5dece69b1b3343783457c507e8d25239e4da92f0..52a374805eb5d2ac46abc8a07bf9b5e7c0decc16 100644 +index 27cd04a4b6e0c87a300f5868f0b82fc02408a556..11924a84fd597da38e70aa0ab29c07e60ed8453a 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -2397,7 +2397,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, ne +@@ -2402,7 +2402,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, ne } } diff --git a/patches/server/0187-Drowning-Settings.patch b/patches/server/0187-Drowning-Settings.patch index 850f8bc91..c3232fa2d 100644 --- a/patches/server/0187-Drowning-Settings.patch +++ b/patches/server/0187-Drowning-Settings.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Drowning Settings diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 52a374805eb5d2ac46abc8a07bf9b5e7c0decc16..69f580e0caee96d81778047aae4d516776a71c2a 100644 +index 11924a84fd597da38e70aa0ab29c07e60ed8453a..778c5ee222d51e35bac51bba42f336780fd153dc 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -2603,7 +2603,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, ne +@@ -2608,7 +2608,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, ne } public int getDefaultPortalCooldown() { diff --git a/patches/server/0198-Configurable-damage-settings-for-magma-blocks.patch b/patches/server/0198-Configurable-damage-settings-for-magma-blocks.patch index 842884dbd..39e34dd6c 100644 --- a/patches/server/0198-Configurable-damage-settings-for-magma-blocks.patch +++ b/patches/server/0198-Configurable-damage-settings-for-magma-blocks.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Configurable damage settings for magma blocks diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 69f580e0caee96d81778047aae4d516776a71c2a..408c138418dbf3049ef02f909d0caf3ffce63290 100644 +index 778c5ee222d51e35bac51bba42f336780fd153dc..dcb8cff2671947140f5853b1f6d75ecc03ef368f 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -890,7 +890,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, ne diff --git a/patches/server/0219-API-for-any-mob-to-burn-daylight.patch b/patches/server/0219-API-for-any-mob-to-burn-daylight.patch index 92fc3365e..008a44bad 100644 --- a/patches/server/0219-API-for-any-mob-to-burn-daylight.patch +++ b/patches/server/0219-API-for-any-mob-to-burn-daylight.patch @@ -6,7 +6,7 @@ Subject: [PATCH] API for any mob to burn daylight Co-authored by: Encode42 diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 408c138418dbf3049ef02f909d0caf3ffce63290..286275b44cece17a7044eebd6549415600e06359 100644 +index dcb8cff2671947140f5853b1f6d75ecc03ef368f..35c15afc3f4bbe10dc7638e926564f51285fda4c 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -1639,7 +1639,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, ne @@ -18,7 +18,7 @@ index 408c138418dbf3049ef02f909d0caf3ffce63290..286275b44cece17a7044eebd65494156 BlockPosition.MutableBlockPosition blockposition_mutableblockposition = new BlockPosition.MutableBlockPosition(this.locX(), 0.0D, this.locZ()); if (this.world.isLoaded(blockposition_mutableblockposition)) { -@@ -3864,5 +3864,17 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, ne +@@ -3869,5 +3869,17 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, ne public boolean processClick(EnumHand hand) { return false; }