diff --git a/gradle.properties b/gradle.properties index 99edc8975..d1c4789ca 100644 --- a/gradle.properties +++ b/gradle.properties @@ -4,7 +4,7 @@ version = 1.17.1-R0.1-SNAPSHOT mcVersion = 1.17.1 packageVersion = 1_17_R1 -paperCommit = d985976b3e152f21f5b11b8edbc265a80c07c202 +paperCommit = 70ea1b2e2bdbe535751f614eaa0847c424e6711c org.gradle.parallel = true org.gradle.vfs.watch = false diff --git a/patches/server/0001-Tuinity-Server-Changes.patch b/patches/server/0001-Tuinity-Server-Changes.patch index 1e9d8d904..4922eb93c 100644 --- a/patches/server/0001-Tuinity-Server-Changes.patch +++ b/patches/server/0001-Tuinity-Server-Changes.patch @@ -13110,26 +13110,26 @@ index 2f3e69ad809199ffc2661d524bb627ec8dbc2e80..0fcd6a9162f5bddb3c4fc42b3a64efde if (flag2) { packet1 = new ClientboundMoveEntityPacket.Pos(this.entity.getId(), (short) ((int) k), (short) ((int) l), (short) ((int) i1), this.entity.isOnGround()); diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index 6ecf60c69a27f8db1c245db15449bba581c3dbf5..7642170bf5a0eaa11110238fa5cf1a7e1ff20a20 100644 +index c2e0417ee15018ec31c4aa8eec3dff7a0d16aa9e..8207f0fd2c0b5cd60d02714108eab47b1ae84e16 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java -@@ -115,6 +115,7 @@ import net.minecraft.world.level.block.EntityBlock; - import net.minecraft.world.level.block.entity.BlockEntity; +@@ -114,6 +114,7 @@ import net.minecraft.world.level.block.Block; + import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.block.entity.TickingBlockEntity; import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.chunk.ChunkAccess; import net.minecraft.world.level.chunk.ChunkGenerator; import net.minecraft.world.level.chunk.LevelChunk; import net.minecraft.world.level.chunk.LevelChunkSection; -@@ -165,6 +166,7 @@ import org.bukkit.event.server.MapInitializeEvent; +@@ -161,6 +162,7 @@ import org.bukkit.event.server.MapInitializeEvent; import org.bukkit.event.weather.LightningStrikeEvent; import org.bukkit.event.world.TimeSkipEvent; // CraftBukkit end +import it.unimi.dsi.fastutil.ints.IntArrayList; // Tuinity - public class ServerLevel extends net.minecraft.world.level.Level implements WorldGenLevel { + public class ServerLevel extends Level implements WorldGenLevel { -@@ -193,7 +195,9 @@ public class ServerLevel extends net.minecraft.world.level.Level implements Worl +@@ -189,7 +191,9 @@ public class ServerLevel extends Level implements WorldGenLevel { final Int2ObjectMap dragonParts; private final StructureFeatureManager structureFeatureManager; private final boolean tickTime; @@ -13140,7 +13140,7 @@ index 6ecf60c69a27f8db1c245db15449bba581c3dbf5..7642170bf5a0eaa11110238fa5cf1a7e // CraftBukkit start private int tickPosition; -@@ -304,6 +308,172 @@ public class ServerLevel extends net.minecraft.world.level.Level implements Worl +@@ -300,6 +304,172 @@ public class ServerLevel extends Level implements WorldGenLevel { } } // Paper end - rewrite ticklistserver @@ -13312,8 +13312,8 @@ index 6ecf60c69a27f8db1c245db15449bba581c3dbf5..7642170bf5a0eaa11110238fa5cf1a7e + // Tuinity end - optimise get nearest players for entity AI // Add env and gen to constructor, WorldData -> WorldDataServer - public ServerLevel(MinecraftServer minecraftserver, Executor executor, LevelStorageSource.LevelStorageAccess convertable_conversionsession, ServerLevelData iworlddataserver, ResourceKey resourcekey, DimensionType dimensionmanager, ChunkProgressListener worldloadlistener, ChunkGenerator chunkgenerator, boolean flag, long i, List list, boolean flag1, org.bukkit.World.Environment env, org.bukkit.generator.ChunkGenerator gen) { -@@ -351,7 +521,7 @@ public class ServerLevel extends net.minecraft.world.level.Level implements Worl + public ServerLevel(MinecraftServer minecraftserver, Executor executor, LevelStorageSource.LevelStorageAccess convertable_conversionsession, ServerLevelData iworlddataserver, ResourceKey resourcekey, DimensionType dimensionmanager, ChunkProgressListener worldloadlistener, ChunkGenerator chunkgenerator, boolean flag, long i, List list, boolean flag1, org.bukkit.World.Environment env, org.bukkit.generator.ChunkGenerator gen) { +@@ -347,7 +517,7 @@ public class ServerLevel extends Level implements WorldGenLevel { DataFixer datafixer = minecraftserver.getFixerUpper(); EntityPersistentStorage entitypersistentstorage = new EntityStorage(this, new File(convertable_conversionsession.getDimensionPath(resourcekey), "entities"), datafixer, flag2, minecraftserver); @@ -13322,7 +13322,7 @@ index 6ecf60c69a27f8db1c245db15449bba581c3dbf5..7642170bf5a0eaa11110238fa5cf1a7e StructureManager definedstructuremanager = minecraftserver.getStructureManager(); int j = this.spigotConfig.viewDistance; // Spigot PersistentEntitySectionManager persistententitysectionmanager = this.entityManager; -@@ -386,6 +556,10 @@ public class ServerLevel extends net.minecraft.world.level.Level implements Worl +@@ -382,6 +552,10 @@ public class ServerLevel extends Level implements WorldGenLevel { this.asyncChunkTaskManager = new com.destroystokyo.paper.io.chunk.ChunkTaskManager(this); // Paper } @@ -13330,10 +13330,10 @@ index 6ecf60c69a27f8db1c245db15449bba581c3dbf5..7642170bf5a0eaa11110238fa5cf1a7e + + // Tuinity end - optimise collision + - // CraftBukkit start - @Override - public BlockEntity getTileEntity(BlockPos pos, boolean validate) { -@@ -439,6 +613,14 @@ public class ServerLevel extends net.minecraft.world.level.Level implements Worl + public void setWeatherParameters(int clearDuration, int rainDuration, boolean raining, boolean thundering) { + this.serverLevelData.setClearWeatherTime(clearDuration); + this.serverLevelData.setRainTime(rainDuration); +@@ -400,6 +574,14 @@ public class ServerLevel extends Level implements WorldGenLevel { } public void tick(BooleanSupplier shouldKeepTicking) { @@ -13348,7 +13348,7 @@ index 6ecf60c69a27f8db1c245db15449bba581c3dbf5..7642170bf5a0eaa11110238fa5cf1a7e ProfilerFiller gameprofilerfiller = this.getProfiler(); this.handlingTick = true; -@@ -584,7 +766,7 @@ public class ServerLevel extends net.minecraft.world.level.Level implements Worl +@@ -545,7 +727,7 @@ public class ServerLevel extends Level implements WorldGenLevel { } timings.scheduledBlocks.stopTiming(); // Paper @@ -13357,7 +13357,7 @@ index 6ecf60c69a27f8db1c245db15449bba581c3dbf5..7642170bf5a0eaa11110238fa5cf1a7e gameprofilerfiller.popPush("raid"); this.timings.raids.startTiming(); // Paper - timings this.raids.tick(); -@@ -597,7 +779,7 @@ public class ServerLevel extends net.minecraft.world.level.Level implements Worl +@@ -558,7 +740,7 @@ public class ServerLevel extends Level implements WorldGenLevel { timings.doSounds.startTiming(); // Spigot this.runBlockEvents(); timings.doSounds.stopTiming(); // Spigot @@ -13366,7 +13366,7 @@ index 6ecf60c69a27f8db1c245db15449bba581c3dbf5..7642170bf5a0eaa11110238fa5cf1a7e this.handlingTick = false; gameprofilerfiller.pop(); boolean flag3 = true || !this.players.isEmpty() || !this.getForcedChunks().isEmpty(); // CraftBukkit - this prevents entity cleanup, other issues on servers with no players -@@ -644,12 +826,12 @@ public class ServerLevel extends net.minecraft.world.level.Level implements Worl +@@ -605,12 +787,12 @@ public class ServerLevel extends Level implements WorldGenLevel { timings.entityTick.stopTiming(); // Spigot timings.tickEntities.stopTiming(); // Spigot gameprofilerfiller.pop(); @@ -13381,7 +13381,7 @@ index 6ecf60c69a27f8db1c245db15449bba581c3dbf5..7642170bf5a0eaa11110238fa5cf1a7e this.entityManager.tick(); gameprofilerfiller.pop(); } -@@ -694,6 +876,10 @@ public class ServerLevel extends net.minecraft.world.level.Level implements Worl +@@ -655,6 +837,10 @@ public class ServerLevel extends Level implements WorldGenLevel { entityplayer.stopSleepInBed(false, false); }); } @@ -13392,7 +13392,7 @@ index 6ecf60c69a27f8db1c245db15449bba581c3dbf5..7642170bf5a0eaa11110238fa5cf1a7e public void tickChunk(LevelChunk chunk, int randomTickSpeed) { ChunkPos chunkcoordintpair = chunk.getPos(); -@@ -703,10 +889,10 @@ public class ServerLevel extends net.minecraft.world.level.Level implements Worl +@@ -664,10 +850,10 @@ public class ServerLevel extends Level implements WorldGenLevel { ProfilerFiller gameprofilerfiller = this.getProfiler(); gameprofilerfiller.push("thunder"); @@ -13405,7 +13405,7 @@ index 6ecf60c69a27f8db1c245db15449bba581c3dbf5..7642170bf5a0eaa11110238fa5cf1a7e if (this.isRainingAt(blockposition)) { DifficultyInstance difficultydamagescaler = this.getCurrentDifficultyAt(blockposition); boolean flag1 = this.getGameRules().getBoolean(GameRules.RULE_DOMOBSPAWNING) && this.random.nextDouble() < (double) difficultydamagescaler.getEffectiveDifficulty() * paperConfig.skeleHorseSpawnChance && !this.getBlockState(blockposition.below()).is(Blocks.LIGHTNING_ROD); // Paper -@@ -729,64 +915,78 @@ public class ServerLevel extends net.minecraft.world.level.Level implements Worl +@@ -690,64 +876,78 @@ public class ServerLevel extends Level implements WorldGenLevel { } gameprofilerfiller.popPush("iceandsnow"); @@ -13448,8 +13448,8 @@ index 6ecf60c69a27f8db1c245db15449bba581c3dbf5..7642170bf5a0eaa11110238fa5cf1a7e biomebase_precipitation = Biome.Precipitation.SNOW; } -- iblockdata.getBlock().handlePrecipitation(iblockdata, (net.minecraft.world.level.Level) this, blockposition1, biomebase_precipitation); -+ iblockdata.getBlock().handlePrecipitation(iblockdata, (net.minecraft.world.level.Level) this, blockposition, biomebase_precipitation); // Paper +- iblockdata.getBlock().handlePrecipitation(iblockdata, (Level) this, blockposition1, biomebase_precipitation); ++ iblockdata.getBlock().handlePrecipitation(iblockdata, (Level) this, blockposition, biomebase_precipitation); // Paper } } @@ -13516,7 +13516,7 @@ index 6ecf60c69a27f8db1c245db15449bba581c3dbf5..7642170bf5a0eaa11110238fa5cf1a7e timings.chunkTicksBlocks.stopTiming(); // Paper gameprofilerfiller.pop(); } -@@ -912,7 +1112,27 @@ public class ServerLevel extends net.minecraft.world.level.Level implements Worl +@@ -873,7 +1073,27 @@ public class ServerLevel extends Level implements WorldGenLevel { } @@ -13544,7 +13544,7 @@ index 6ecf60c69a27f8db1c245db15449bba581c3dbf5..7642170bf5a0eaa11110238fa5cf1a7e ++TimingHistory.entityTicks; // Paper - timings // Spigot start co.aikar.timings.Timing timer; // Paper -@@ -953,7 +1173,13 @@ public class ServerLevel extends net.minecraft.world.level.Level implements Worl +@@ -914,7 +1134,13 @@ public class ServerLevel extends Level implements WorldGenLevel { } // } finally { timer.stopTiming(); } // Paper - timings - move up @@ -13559,9 +13559,9 @@ index 6ecf60c69a27f8db1c245db15449bba581c3dbf5..7642170bf5a0eaa11110238fa5cf1a7e } private void tickPassenger(Entity vehicle, Entity passenger) { -@@ -1245,9 +1471,13 @@ public class ServerLevel extends net.minecraft.world.level.Level implements Worl +@@ -1206,9 +1432,13 @@ public class ServerLevel extends Level implements WorldGenLevel { // Spigot Start - for (BlockEntity tileentity : chunk.getBlockEntities().values()) { + for (net.minecraft.world.level.block.entity.BlockEntity tileentity : chunk.getBlockEntities().values()) { if (tileentity instanceof net.minecraft.world.Container) { + // Tuinity start - this area looks like it can load chunks, change the behavior + // chests for example can apply physics to the world @@ -13574,7 +13574,7 @@ index 6ecf60c69a27f8db1c245db15449bba581c3dbf5..7642170bf5a0eaa11110238fa5cf1a7e } } // Spigot End -@@ -1344,9 +1574,19 @@ public class ServerLevel extends net.minecraft.world.level.Level implements Worl +@@ -1305,9 +1535,19 @@ public class ServerLevel extends Level implements WorldGenLevel { VoxelShape voxelshape1 = newState.getCollisionShape(this, pos); if (Shapes.joinIsNotEmpty(voxelshape, voxelshape1, BooleanOp.NOT_SAME)) { @@ -13596,7 +13596,7 @@ index 6ecf60c69a27f8db1c245db15449bba581c3dbf5..7642170bf5a0eaa11110238fa5cf1a7e // CraftBukkit start - fix SPIGOT-6362 Mob entityinsentient; try { -@@ -1365,6 +1605,11 @@ public class ServerLevel extends net.minecraft.world.level.Level implements Worl +@@ -1326,6 +1566,11 @@ public class ServerLevel extends Level implements WorldGenLevel { navigationabstract.recomputePath(pos); } } @@ -13608,7 +13608,7 @@ index 6ecf60c69a27f8db1c245db15449bba581c3dbf5..7642170bf5a0eaa11110238fa5cf1a7e } } // Paper -@@ -2146,10 +2391,12 @@ public class ServerLevel extends net.minecraft.world.level.Level implements Worl +@@ -2107,10 +2352,12 @@ public class ServerLevel extends Level implements WorldGenLevel { public void onTickingStart(Entity entity) { ServerLevel.this.entityTickList.add(entity); @@ -16242,7 +16242,7 @@ index 81b43e0b0146729a8a1c6ade82634c86cde67857..9d5e76877bc06b3318c817c40821a453 this.clazz = type; this.name = name; diff --git a/src/main/java/net/minecraft/world/level/chunk/ChunkAccess.java b/src/main/java/net/minecraft/world/level/chunk/ChunkAccess.java -index 63203172a127d812fd59cea0546b67e855ce3ad5..498988b70617f086f047d8d293e525377971e66e 100644 +index 8393950a0b38ec7897d7643803d5accdb1f983f3..c8d88bbf7e765ce69101c0b04b919c9cfb99a4e2 100644 --- a/src/main/java/net/minecraft/world/level/chunk/ChunkAccess.java +++ b/src/main/java/net/minecraft/world/level/chunk/ChunkAccess.java @@ -1,5 +1,6 @@ @@ -16252,8 +16252,8 @@ index 63203172a127d812fd59cea0546b67e855ce3ad5..498988b70617f086f047d8d293e52537 import it.unimi.dsi.fastutil.shorts.ShortArrayList; import it.unimi.dsi.fastutil.shorts.ShortList; import java.util.Collection; -@@ -42,6 +43,36 @@ public interface ChunkAccess extends BlockGetter, FeatureAccess { - } +@@ -41,6 +42,36 @@ public interface ChunkAccess extends BlockGetter, FeatureAccess { + net.minecraft.world.level.Level getLevel(); // Paper end + // Tuinity start @@ -16782,7 +16782,7 @@ index 554474d4b2e57d8a005b3c3b9b23f32a62243058..ebeb3e3b0619b034a9681da999e9ac33 + // Paper end } diff --git a/src/main/java/net/minecraft/world/level/chunk/ProtoChunk.java b/src/main/java/net/minecraft/world/level/chunk/ProtoChunk.java -index 78bd3274866fed3d627a3eda7b96b92716507d38..ccdadf5d7c07d74f5bea94fc21784114b6d520da 100644 +index 7dc3d806a680150c6a2fffa1436fd63bbdc31eb3..f6d05372f592a3b7619ad6989630c140ffd4f03b 100644 --- a/src/main/java/net/minecraft/world/level/chunk/ProtoChunk.java +++ b/src/main/java/net/minecraft/world/level/chunk/ProtoChunk.java @@ -1,5 +1,7 @@ @@ -16793,9 +16793,9 @@ index 78bd3274866fed3d627a3eda7b96b92716507d38..ccdadf5d7c07d74f5bea94fc21784114 import com.google.common.collect.Lists; import com.google.common.collect.Maps; import com.google.common.collect.Sets; -@@ -65,6 +67,53 @@ public class ProtoChunk implements ChunkAccess { - private volatile boolean isLightCorrect; - final net.minecraft.world.level.Level level; // Paper - Add level +@@ -72,6 +74,53 @@ public class ProtoChunk implements ChunkAccess { + // Paper end + private static boolean PRINTED_OUTDATED_CTOR_MSG = false; // Paper - Add level + // Tuinity start - rewrite light engine + protected volatile SWMRNibbleArray[] blockNibbles; @@ -16844,12 +16844,12 @@ index 78bd3274866fed3d627a3eda7b96b92716507d38..ccdadf5d7c07d74f5bea94fc21784114 + } + // Tuinity end - rewrite light engine + - // Paper start - add level - @Deprecated public ProtoChunk(ChunkPos pos, UpgradeData upgradeData, LevelHeightAccessor world) { this(pos, upgradeData, world, null); } - public ProtoChunk(ChunkPos pos, UpgradeData upgradeData, LevelHeightAccessor world, net.minecraft.server.level.ServerLevel level) { -@@ -79,6 +128,10 @@ public class ProtoChunk implements ChunkAccess { - // Paper start - add level - @Deprecated public ProtoChunk(ChunkPos pos, UpgradeData upgradeData, @Nullable LevelChunkSection[] levelChunkSections, ProtoTickList blockTickScheduler, ProtoTickList fluidTickScheduler, LevelHeightAccessor world) { this(pos, upgradeData, levelChunkSections, blockTickScheduler, fluidTickScheduler, world, null); } + @Deprecated // Paper start - add level + public ProtoChunk(ChunkPos pos, UpgradeData upgradeData, LevelHeightAccessor world) { + // Paper start +@@ -100,6 +149,10 @@ public class ProtoChunk implements ChunkAccess { + } + } public ProtoChunk(ChunkPos pos, UpgradeData upgradeData, @Nullable LevelChunkSection[] levelChunkSections, ProtoTickList blockTickScheduler, ProtoTickList fluidTickScheduler, LevelHeightAccessor world, net.minecraft.server.level.ServerLevel level) { + // Tuinity start + this.blockNibbles = StarLightEngine.getFilledEmptyLight(world); @@ -16858,7 +16858,7 @@ index 78bd3274866fed3d627a3eda7b96b92716507d38..ccdadf5d7c07d74f5bea94fc21784114 this.level = level; // Paper end this.chunkPos = pos; -@@ -176,7 +229,7 @@ public class ProtoChunk implements ChunkAccess { +@@ -197,7 +250,7 @@ public class ProtoChunk implements ChunkAccess { LevelChunkSection levelChunkSection = this.getOrCreateSection(l); BlockState blockState = levelChunkSection.setBlockState(i & 15, j & 15, k & 15, state); @@ -18602,7 +18602,7 @@ index 40d6dfe30e8f388fb2014ba81f9ea4a986354b88..9de4b1c9402e78c661b4d2dc7d70439e @Override diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index c79b193ad822b8c246f24a87cd418892bc18ff5a..4342bc5aad49fe372d561296a6b63818a443d089 100644 +index dd435909ad16a7f732fd0a2056f986dd9b24c0d5..f243dbdf7673c06b0e2d36fe9af43234a5304ed6 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java @@ -230,7 +230,7 @@ import javax.annotation.Nullable; // Paper @@ -18808,10 +18808,10 @@ index c3c7b34ceb1b8f0ed042b29924c633fa7519dc30..c59deadcfbfd5afbf951a167979a4ece //Thread.sleep(TimeUnit.SECONDS.toMillis(20)); // Paper End diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -index 8246ad7ebecdfc0b7519fe4412fef7b07407e850..c0a508295d2e68d92ec8d24e14f9b7626911f548 100644 +index 3acb5f8a1f863b5ba47eac4190be8228324fc8e7..68cacecde84a592839b738723fb0b73fcb958080 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -@@ -517,27 +517,36 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { +@@ -519,27 +519,36 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { this.entity.setYHeadRot(yaw); } diff --git a/patches/server/0005-Ridables.patch b/patches/server/0005-Ridables.patch index 33c6a89d1..ba9874fe1 100644 --- a/patches/server/0005-Ridables.patch +++ b/patches/server/0005-Ridables.patch @@ -34,10 +34,10 @@ index be1bc7fda4104d61f91c2815c6ba3c612a019bed..2ede76a55c72840d915ed282609b1ca1 this.profiler.push(() -> { diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index 7642170bf5a0eaa11110238fa5cf1a7e1ff20a20..d575fcc1aae45c810c21fd8c112e3e63cdaf7d71 100644 +index 8207f0fd2c0b5cd60d02714108eab47b1ae84e16..e1b1e88cc383c99e701f5a661a98d29db031aba7 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java -@@ -205,6 +205,7 @@ public class ServerLevel extends net.minecraft.world.level.Level implements Worl +@@ -201,6 +201,7 @@ public class ServerLevel extends Level implements WorldGenLevel { public final UUID uuid; public boolean hasPhysicsEvent = true; // Paper public boolean hasEntityMoveEvent = false; // Paper @@ -201,7 +201,7 @@ index d28cecd9bea7c82fa675d333810e2e63a91c615e..8f8bc29d847801938e251904b8334b4b protected ParticleOptions getInkParticle() { return ParticleTypes.GLOW_SQUID_INK; diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 027898e97667081840562547653d4adaeae01dda..31c5ac568042150d89572daecd1e22ceb6dc69aa 100644 +index 24c629d5f26bc5aadebcf39a63930b3448525242..28139fd78e7dfb703e941a46bd18e0236d58fe22 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java @@ -220,9 +220,9 @@ public abstract class LivingEntity extends Entity { @@ -2517,7 +2517,7 @@ index 29aa428e019681af8d6b0020c12b18660ff6af6c..5df112f87fba042f13f615a22a5c6f85 this.dragonFight.updateDragon(this); } diff --git a/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java b/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java -index 6e3bd5146c687922e7b4680d59a1ae2d1480ad40..9d879d85d6ca7d1163b05f15bb13baeeb59eea5b 100644 +index bb329e9c1a2295e6433d3728692a1e716c89dcc0..fdc9068de403e98e18af11d4d6c5b708d2cc3c52 100644 --- a/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java +++ b/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java @@ -83,6 +83,7 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob @@ -3710,10 +3710,10 @@ index 2459ae800a5f6b234a4f4bb1cd3738e4e9cac67d..e66cc79dc61721b31ffb743f68f4388c this.targetSelector.addGoal(2, new NearestAttackableTargetGoal<>(this, Player.class, true)); } diff --git a/src/main/java/net/minecraft/world/entity/monster/Skeleton.java b/src/main/java/net/minecraft/world/entity/monster/Skeleton.java -index fcec4120113de6c403892b38f077593b3b90d10c..55c09358766b2e7e871d9922b42e6e6b4157dab6 100644 +index abb64887fdcfac824e3d0868c3d473e028354766..1451aeab8e9046f9620214ed74369a8bb1cd6d59 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Skeleton.java +++ b/src/main/java/net/minecraft/world/entity/monster/Skeleton.java -@@ -23,6 +23,18 @@ public class Skeleton extends AbstractSkeleton { +@@ -25,6 +25,18 @@ public class Skeleton extends AbstractSkeleton { super(type, world); } @@ -3857,7 +3857,7 @@ index e1a593b464c35f68b22e84a09f99ee72af73da32..25ce1910a03947ce070b318f57379f0d } diff --git a/src/main/java/net/minecraft/world/entity/monster/Spider.java b/src/main/java/net/minecraft/world/entity/monster/Spider.java -index e5679823786f2579f93a93a5ae08ab7ae42b390c..49e91abc7b78f88125f558f869f7619d36efdd04 100644 +index a8162116eb888106e6f48ee836d0cc5d33b72399..5874d86ca34200e9ce7d41cf7a80eb0f1f13410c 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Spider.java +++ b/src/main/java/net/minecraft/world/entity/monster/Spider.java @@ -51,14 +51,28 @@ public class Spider extends Monster { @@ -4128,7 +4128,7 @@ index 8c3e8c12d7405ad388342e304430834a5fad12a9..e70fb661c62add74cdbe9fc9ef1e3143 this.targetSelector.addGoal(2, this.healRaidersGoal); this.targetSelector.addGoal(3, this.attackPlayersGoal); diff --git a/src/main/java/net/minecraft/world/entity/monster/WitherSkeleton.java b/src/main/java/net/minecraft/world/entity/monster/WitherSkeleton.java -index 033d6389e4b7d986fc63abd67e325b68a6132824..dd32e62de68243cf40f6df882922fd71bd1f4d67 100644 +index f9bc07be70fae9aced51a69bccb5eda309187a47..4cea4ba127dc036ce5d585323a25bbcf06bd46a6 100644 --- a/src/main/java/net/minecraft/world/entity/monster/WitherSkeleton.java +++ b/src/main/java/net/minecraft/world/entity/monster/WitherSkeleton.java @@ -34,6 +34,18 @@ public class WitherSkeleton extends AbstractSkeleton { @@ -5718,10 +5718,10 @@ index 0000000000000000000000000000000000000000..8eefb7b7eb33aecf48ac206d3f0139e0 + } +} diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -index c0a508295d2e68d92ec8d24e14f9b7626911f548..edc08af4ec2ce6e90c30da286c0ba5ac16efd3fc 100644 +index 68cacecde84a592839b738723fb0b73fcb958080..52760eabb45c8d2a3db4056ef219e7ea5cf8d954 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -@@ -1216,4 +1216,27 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { +@@ -1234,4 +1234,27 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { return getHandle().isTicking(); } // Paper end diff --git a/patches/server/0006-Configurable-entity-base-attributes.patch b/patches/server/0006-Configurable-entity-base-attributes.patch index ad5e23706..b4ff175ec 100644 --- a/patches/server/0006-Configurable-entity-base-attributes.patch +++ b/patches/server/0006-Configurable-entity-base-attributes.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Configurable entity base attributes diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 081506649de3929becd448664e2c5b0d7b4859fc..a43c95abc8f6d0226ca097495ed9aeab0649d02b 100644 +index e47673d410936068ceff8b757050cc6c8a15816c..1d6e063e1cf5435b123d5789d7fcf03503cc0821 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -150,7 +150,7 @@ import org.bukkit.plugin.PluginManager; @@ -34,7 +34,7 @@ index 8f8bc29d847801938e251904b8334b4b31bd21c5..87d01bebbb179eec53323e9e23db011a @Override diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 911a6f63e8ffeacc95fa49cdf99140c1ce3d06b1..ecc06c084625c24b9ac8045b1d53e75dfffbdea5 100644 +index 28139fd78e7dfb703e941a46bd18e0236d58fe22..cecffa5879f386e99ccd27386f90074aef0b72fe 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java @@ -288,6 +288,7 @@ public abstract class LivingEntity extends Entity { @@ -427,7 +427,7 @@ index 5f61fcffebf4d853711a38d1f315f3def25e31a7..fcd3166a7c818ef089ccf2a687596bef public static String getPredefinedName(int variant) { diff --git a/src/main/java/net/minecraft/world/entity/animal/Turtle.java b/src/main/java/net/minecraft/world/entity/animal/Turtle.java -index c86f13d190b41cb18dd833af39c7b4916068fd69..31568adcf4a89b11e61f455a15326c7f72bf487e 100644 +index 631539a752a038926355c23aeb160af64f363a61..66c01b8300bc09ace27e4d1a30ee9274c69fcc9a 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Turtle.java +++ b/src/main/java/net/minecraft/world/entity/animal/Turtle.java @@ -100,6 +100,11 @@ public class Turtle extends Animal { @@ -735,7 +735,7 @@ index 5df112f87fba042f13f615a22a5c6f850b779bf7..d3caa18f5de2d96eae691655dd13e83f public static AttributeSupplier.Builder createAttributes() { diff --git a/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java b/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java -index 9d879d85d6ca7d1163b05f15bb13baeeb59eea5b..2f33897a74ff2bd629b4ffacc4a1e1e0cd6b7987 100644 +index fdc9068de403e98e18af11d4d6c5b708d2cc3c52..f52420f27f51d9dbf214f96a0530c0f17f2bc5fc 100644 --- a/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java +++ b/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java @@ -196,6 +196,11 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob @@ -1083,10 +1083,10 @@ index e66cc79dc61721b31ffb743f68f4388cc499a92d..0d60d6352294fadc1a26579a712b01cf @Override diff --git a/src/main/java/net/minecraft/world/entity/monster/Skeleton.java b/src/main/java/net/minecraft/world/entity/monster/Skeleton.java -index 55c09358766b2e7e871d9922b42e6e6b4157dab6..a36c78054cb70d310d9bb21c849e05b588aca8de 100644 +index 1451aeab8e9046f9620214ed74369a8bb1cd6d59..864bb800499c6b1b47b4e556350615cfab7253dd 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Skeleton.java +++ b/src/main/java/net/minecraft/world/entity/monster/Skeleton.java -@@ -33,6 +33,11 @@ public class Skeleton extends AbstractSkeleton { +@@ -35,6 +35,11 @@ public class Skeleton extends AbstractSkeleton { public boolean rideableUnderWater() { return level.purpurConfig.skeletonRidableInWater; } @@ -1143,7 +1143,7 @@ index 25ce1910a03947ce070b318f57379f0da5ac5db8..7a9654a365a968592d706a13fb46615e this.getAttribute(Attributes.ATTACK_DAMAGE).setBaseValue((double) j); if (heal) { diff --git a/src/main/java/net/minecraft/world/entity/monster/Spider.java b/src/main/java/net/minecraft/world/entity/monster/Spider.java -index 49e91abc7b78f88125f558f869f7619d36efdd04..653486b09c67988a0047e5e19647919bc503acc8 100644 +index 5874d86ca34200e9ce7d41cf7a80eb0f1f13410c..7ed31ccc9fbb3960f9de24d5893f7fa1f86ab4b8 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Spider.java +++ b/src/main/java/net/minecraft/world/entity/monster/Spider.java @@ -61,6 +61,11 @@ public class Spider extends Monster { @@ -1239,7 +1239,7 @@ index e70fb661c62add74cdbe9fc9ef1e3143e96333b2..0876224d15b7b08954ab4348f942d2aa @Override diff --git a/src/main/java/net/minecraft/world/entity/monster/WitherSkeleton.java b/src/main/java/net/minecraft/world/entity/monster/WitherSkeleton.java -index dd32e62de68243cf40f6df882922fd71bd1f4d67..8212ee2cc1242c0a3626f3643c455f3be0de18c2 100644 +index 4cea4ba127dc036ce5d585323a25bbcf06bd46a6..16d7266c32f5aa5cb980bf07d9d92c41c6405a2f 100644 --- a/src/main/java/net/minecraft/world/entity/monster/WitherSkeleton.java +++ b/src/main/java/net/minecraft/world/entity/monster/WitherSkeleton.java @@ -44,6 +44,11 @@ public class WitherSkeleton extends AbstractSkeleton { @@ -1390,7 +1390,7 @@ index d01a8fe6dd5c84ea5b7370a90c0d57130b27e447..9e66f8f2a92cb7b32cdb2cf749ca2737 public static AttributeSupplier.Builder createAttributes() { diff --git a/src/main/java/net/minecraft/world/entity/npc/Villager.java b/src/main/java/net/minecraft/world/entity/npc/Villager.java -index 32ae046d573d5625fdb44b690d1e7e229f8aff08..b7b25813aa00a49fd83edfbade27fa03d7fcd7c5 100644 +index f0f1f16971e9a0678afdccf6dcd92d8967c35346..1b70179dfd085c0d8ec3ee18af6d0528673ca4df 100644 --- a/src/main/java/net/minecraft/world/entity/npc/Villager.java +++ b/src/main/java/net/minecraft/world/entity/npc/Villager.java @@ -170,6 +170,11 @@ public class Villager extends AbstractVillager implements ReputationEventHandler diff --git a/patches/server/0029-Zombie-horse-naturally-spawn.patch b/patches/server/0029-Zombie-horse-naturally-spawn.patch index 92617510f..363f1c3af 100644 --- a/patches/server/0029-Zombie-horse-naturally-spawn.patch +++ b/patches/server/0029-Zombie-horse-naturally-spawn.patch @@ -5,42 +5,28 @@ Subject: [PATCH] Zombie horse naturally spawn diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index d575fcc1aae45c810c21fd8c112e3e63cdaf7d71..50639af3813578669ce039dc44d827df1196d723 100644 +index e1b1e88cc383c99e701f5a661a98d29db031aba7..f3a6b6713843e4b600440c8845fe10938920869b 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java -@@ -87,6 +87,7 @@ import net.minecraft.world.entity.ai.village.poi.PoiManager; - import net.minecraft.world.entity.ai.village.poi.PoiType; - import net.minecraft.world.entity.animal.Animal; - import net.minecraft.world.entity.animal.WaterAnimal; -+import net.minecraft.world.entity.animal.horse.AbstractHorse; - import net.minecraft.world.entity.animal.horse.SkeletonHorse; - import net.minecraft.world.entity.boss.EnderDragonPart; - import net.minecraft.world.entity.boss.enderdragon.EnderDragon; -@@ -899,12 +900,18 @@ public class ServerLevel extends net.minecraft.world.level.Level implements Worl +@@ -860,9 +860,15 @@ public class ServerLevel extends Level implements WorldGenLevel { boolean flag1 = this.getGameRules().getBoolean(GameRules.RULE_DOMOBSPAWNING) && this.random.nextDouble() < (double) difficultydamagescaler.getEffectiveDifficulty() * paperConfig.skeleHorseSpawnChance && !this.getBlockState(blockposition.below()).is(Blocks.LIGHTNING_ROD); // Paper if (flag1) { -- SkeletonHorse entityhorseskeleton = (SkeletonHorse) EntityType.SKELETON_HORSE.create((net.minecraft.world.level.Level) this); +- SkeletonHorse entityhorseskeleton = (SkeletonHorse) EntityType.SKELETON_HORSE.create((Level) this); - - entityhorseskeleton.setTrap(true); -- entityhorseskeleton.setAge(0); -- entityhorseskeleton.setPos((double) blockposition.getX(), (double) blockposition.getY(), (double) blockposition.getZ()); -- this.addEntity(entityhorseskeleton, org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason.LIGHTNING); // CraftBukkit + // Purpur start -+ AbstractHorse horse; ++ net.minecraft.world.entity.animal.horse.AbstractHorse entityhorseskeleton = EntityType.SKELETON_HORSE.create(this); + if (purpurConfig.zombieHorseSpawnChance > 0D && random.nextDouble() <= purpurConfig.zombieHorseSpawnChance) { -+ horse = EntityType.ZOMBIE_HORSE.create(this); ++ entityhorseskeleton = EntityType.ZOMBIE_HORSE.create(this); + } else { -+ horse = EntityType.SKELETON_HORSE.create(this); -+ ((SkeletonHorse) horse).setTrap(true); ++ entityhorseskeleton = EntityType.SKELETON_HORSE.create(this); ++ ((SkeletonHorse) entityhorseskeleton).setTrap(true); + } -+ horse.setAge(0); -+ horse.setPos(blockposition.getX(), blockposition.getY(), blockposition.getZ()); -+ this.addEntity(horse, CreatureSpawnEvent.SpawnReason.LIGHTNING); // CraftBukkit + // Purpur end - } - - LightningBolt entitylightning = (LightningBolt) EntityType.LIGHTNING_BOLT.create((net.minecraft.world.level.Level) this); + entityhorseskeleton.setAge(0); + entityhorseskeleton.setPos((double) blockposition.getX(), (double) blockposition.getY(), (double) blockposition.getZ()); + this.addEntity(entityhorseskeleton, org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason.LIGHTNING); // CraftBukkit diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java index ce9aff038bf3f2451923a456c47998876fd3a8c8..4c45a692a62fd451718c72ce031552bcd0261048 100644 --- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java diff --git a/patches/server/0046-Signs-allow-color-codes.patch b/patches/server/0046-Signs-allow-color-codes.patch index 07b602dcb..e00c192fe 100644 --- a/patches/server/0046-Signs-allow-color-codes.patch +++ b/patches/server/0046-Signs-allow-color-codes.patch @@ -43,10 +43,10 @@ index f4e4ca801a585b8c0335cc3c59f1278d1c108f2b..0be0d27e2534fccf0f8ff828476e2a06 SignChangeEvent event = new SignChangeEvent((org.bukkit.craftbukkit.block.CraftBlock) player.getWorld().getBlockAt(x, y, z), this.player.getBukkitEntity(), lines); this.cserver.getPluginManager().callEvent(event); diff --git a/src/main/java/net/minecraft/world/level/block/entity/SignBlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/SignBlockEntity.java -index 171fea79d3a7c282e473b0fbb46254e3cd9c7aa9..ccbfed191a59e839fb5eae2c338de3b2fd70005e 100644 +index 344d3a8c1162f1a4ab5fc2b7676680ddace46649..156a153abe59f86db7f942155d8a21de2fd83ce2 100644 --- a/src/main/java/net/minecraft/world/level/block/entity/SignBlockEntity.java +++ b/src/main/java/net/minecraft/world/level/block/entity/SignBlockEntity.java -@@ -180,6 +180,22 @@ public class SignBlockEntity extends BlockEntity implements CommandSource { // C +@@ -181,6 +181,22 @@ public class SignBlockEntity extends BlockEntity implements CommandSource { // C return filtered ? this.filteredMessages : this.messages; } diff --git a/patches/server/0095-Add-no-random-tick-block-list.patch b/patches/server/0095-Add-no-random-tick-block-list.patch index 918ead713..5d3aa348d 100644 --- a/patches/server/0095-Add-no-random-tick-block-list.patch +++ b/patches/server/0095-Add-no-random-tick-block-list.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add no-random-tick block list diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index 50639af3813578669ce039dc44d827df1196d723..db54cb97296d6c2b2d893dca87cea5bd35eeb0db 100644 +index f3a6b6713843e4b600440c8845fe10938920869b..f0c4a16d9b95bc64c1c43154b2bff9a36885ec77 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java -@@ -488,7 +488,7 @@ public class ServerLevel extends net.minecraft.world.level.Level implements Worl +@@ -483,7 +483,7 @@ public class ServerLevel extends Level implements WorldGenLevel { this.players = Lists.newArrayList(); this.entityTickList = new EntityTickList(); Predicate predicate = (block) -> { // CraftBukkit - decompile eror diff --git a/patches/server/0104-Allow-toggling-special-MobSpawners-per-world.patch b/patches/server/0104-Allow-toggling-special-MobSpawners-per-world.patch index b46acfe49..56e93c922 100644 --- a/patches/server/0104-Allow-toggling-special-MobSpawners-per-world.patch +++ b/patches/server/0104-Allow-toggling-special-MobSpawners-per-world.patch @@ -6,7 +6,7 @@ Subject: [PATCH] Allow toggling special MobSpawners per world In vanilla, these are all hardcoded on for world type 0 (overworld) and hardcoded off for every other world type. Default config behaviour matches this. diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index db54cb97296d6c2b2d893dca87cea5bd35eeb0db..98af132fd4a03afb016a05fd004ffe3e1d5cd957 100644 +index f0c4a16d9b95bc64c1c43154b2bff9a36885ec77..bfbcdaa117fd8860aa3e287a7e311f2f3bb42281 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java @@ -83,6 +83,7 @@ import net.minecraft.world.entity.MobCategory; @@ -17,7 +17,7 @@ index db54cb97296d6c2b2d893dca87cea5bd35eeb0db..98af132fd4a03afb016a05fd004ffe3e import net.minecraft.world.entity.ai.village.poi.PoiManager; import net.minecraft.world.entity.ai.village.poi.PoiType; import net.minecraft.world.entity.animal.Animal; -@@ -91,7 +92,9 @@ import net.minecraft.world.entity.animal.horse.AbstractHorse; +@@ -90,7 +91,9 @@ import net.minecraft.world.entity.animal.WaterAnimal; import net.minecraft.world.entity.animal.horse.SkeletonHorse; import net.minecraft.world.entity.boss.EnderDragonPart; import net.minecraft.world.entity.boss.enderdragon.EnderDragon; @@ -27,7 +27,7 @@ index db54cb97296d6c2b2d893dca87cea5bd35eeb0db..98af132fd4a03afb016a05fd004ffe3e import net.minecraft.world.entity.player.Player; import net.minecraft.world.entity.raid.Raid; import net.minecraft.world.entity.raid.Raids; -@@ -133,6 +136,8 @@ import net.minecraft.world.level.gameevent.GameEvent; +@@ -131,6 +134,8 @@ import net.minecraft.world.level.gameevent.GameEvent; import net.minecraft.world.level.gameevent.GameEventListenerRegistrar; import net.minecraft.world.level.gameevent.vibrations.VibrationPath; import net.minecraft.world.level.levelgen.Heightmap; @@ -36,7 +36,7 @@ index db54cb97296d6c2b2d893dca87cea5bd35eeb0db..98af132fd4a03afb016a05fd004ffe3e import net.minecraft.world.level.levelgen.feature.StructureFeature; import net.minecraft.world.level.levelgen.structure.BoundingBox; import net.minecraft.world.level.levelgen.structure.StructureStart; -@@ -511,7 +516,24 @@ public class ServerLevel extends net.minecraft.world.level.Level implements Worl +@@ -506,7 +511,24 @@ public class ServerLevel extends Level implements WorldGenLevel { this.dragonParts = new Int2ObjectOpenHashMap(); this.tickTime = flag1; this.server = minecraftserver; diff --git a/patches/server/0113-Configurable-daylight-cycle.patch b/patches/server/0113-Configurable-daylight-cycle.patch index 775dceb31..af3238b73 100644 --- a/patches/server/0113-Configurable-daylight-cycle.patch +++ b/patches/server/0113-Configurable-daylight-cycle.patch @@ -18,10 +18,10 @@ index 689ad22925b2561f7c8db961743eb1f821dbb25f..fa3c960992cc240161817e54659d83fe public ClientboundSetTimePacket(long time, long timeOfDay, boolean doDaylightCycle) { this.gameTime = time % 192000; // Paper - fix guardian beam diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index 98af132fd4a03afb016a05fd004ffe3e1d5cd957..f15da84c0e5f9ab67c4d9ec59ee37de35df76f5c 100644 +index bfbcdaa117fd8860aa3e287a7e311f2f3bb42281..6a5d2cb99cb4793ef165bfdaf521eb468c447834 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java -@@ -201,6 +201,7 @@ public class ServerLevel extends net.minecraft.world.level.Level implements Worl +@@ -196,6 +196,7 @@ public class ServerLevel extends Level implements WorldGenLevel { final Int2ObjectMap dragonParts; private final StructureFeatureManager structureFeatureManager; private final boolean tickTime; @@ -29,7 +29,7 @@ index 98af132fd4a03afb016a05fd004ffe3e1d5cd957..f15da84c0e5f9ab67c4d9ec59ee37de3 // Tuinity start - execute chunk tasks mid tick public long lastMidTickExecuteFailure; // Tuinity end - execute chunk tasks mid tick -@@ -578,6 +579,7 @@ public class ServerLevel extends net.minecraft.world.level.Level implements Worl +@@ -573,6 +574,7 @@ public class ServerLevel extends Level implements WorldGenLevel { this.getCraftServer().addWorld(this.getWorld()); // CraftBukkit this.asyncChunkTaskManager = new com.destroystokyo.paper.io.chunk.ChunkTaskManager(this); // Paper @@ -37,7 +37,7 @@ index 98af132fd4a03afb016a05fd004ffe3e1d5cd957..f15da84c0e5f9ab67c4d9ec59ee37de3 } // Tuinity start - optimise collision -@@ -869,6 +871,18 @@ public class ServerLevel extends net.minecraft.world.level.Level implements Worl +@@ -829,6 +831,18 @@ public class ServerLevel extends Level implements WorldGenLevel { this.liquidTicks.nextTick(); // Paper this.serverLevelData.getScheduledEvents().tick(this.server, i); if (this.levelData.getGameRules().getBoolean(GameRules.RULE_DAYLIGHT)) { @@ -56,7 +56,7 @@ index 98af132fd4a03afb016a05fd004ffe3e1d5cd957..f15da84c0e5f9ab67c4d9ec59ee37de3 this.setDayTime(this.levelData.getDayTime() + 1L); } -@@ -877,6 +891,12 @@ public class ServerLevel extends net.minecraft.world.level.Level implements Worl +@@ -837,6 +851,12 @@ public class ServerLevel extends Level implements WorldGenLevel { public void setDayTime(long timeOfDay) { this.serverLevelData.setDayTime(timeOfDay); diff --git a/patches/server/0150-Add-EntityTeleportHinderedEvent.patch b/patches/server/0150-Add-EntityTeleportHinderedEvent.patch index 591b94159..d9b3a36a4 100644 --- a/patches/server/0150-Add-EntityTeleportHinderedEvent.patch +++ b/patches/server/0150-Add-EntityTeleportHinderedEvent.patch @@ -98,10 +98,10 @@ index d1ad1f384ae289dd516cbe27e611c66d70ba4853..e1b8d150f952d2b80ad37caeb273f60c noteBlockIgnoreAbove = getBoolean("gameplay-mechanics.note-block-ignore-above", noteBlockIgnoreAbove); persistentTileEntityDisplayNames = getBoolean("gameplay-mechanics.persistent-tileentity-display-names-and-lore", persistentTileEntityDisplayNames); diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -index edc08af4ec2ce6e90c30da286c0ba5ac16efd3fc..3a92c0112befe51e795f81b1fce52e1f083f6373 100644 +index 52760eabb45c8d2a3db4056ef219e7ea5cf8d954..53fc3c278624d8c1d2f8bee6df27315d08875300 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -@@ -559,6 +559,10 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { +@@ -561,6 +561,10 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { location.checkFinite(); if (this.entity.isVehicle() || this.entity.isRemoved()) { diff --git a/patches/server/0158-Add-unsafe-Entity-serialization-API.patch b/patches/server/0158-Add-unsafe-Entity-serialization-API.patch index 7a9f57462..e34e52fbf 100644 --- a/patches/server/0158-Add-unsafe-Entity-serialization-API.patch +++ b/patches/server/0158-Add-unsafe-Entity-serialization-API.patch @@ -17,10 +17,10 @@ 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/org/bukkit/craftbukkit/entity/CraftEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -index 3a92c0112befe51e795f81b1fce52e1f083f6373..1035e023003521574a09fdea3fd08e5fca66d8fc 100644 +index 53fc3c278624d8c1d2f8bee6df27315d08875300..d79de006a0e636a23419b5be86911d16447f8891 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -@@ -1242,5 +1242,12 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { +@@ -1260,5 +1260,12 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { public boolean isRidableInWater() { return getHandle().rideableUnderWater(); } diff --git a/patches/server/0173-Config-for-skipping-night.patch b/patches/server/0173-Config-for-skipping-night.patch index 7aeb61c54..a4ba10dd0 100644 --- a/patches/server/0173-Config-for-skipping-night.patch +++ b/patches/server/0173-Config-for-skipping-night.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Config for skipping night diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index f15da84c0e5f9ab67c4d9ec59ee37de35df76f5c..bd32872ef404f90a078e02ec434cac547c5eef75 100644 +index 6a5d2cb99cb4793ef165bfdaf521eb468c447834..d682f0b69757b0f4e3120066e25170264ba1f289 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java -@@ -761,7 +761,7 @@ public class ServerLevel extends net.minecraft.world.level.Level implements Worl +@@ -721,7 +721,7 @@ public class ServerLevel extends Level implements WorldGenLevel { // CraftBukkit end i = this.getGameRules().getInt(GameRules.RULE_PLAYERS_SLEEPING_PERCENTAGE); diff --git a/patches/server/0206-API-for-any-mob-to-burn-daylight.patch b/patches/server/0206-API-for-any-mob-to-burn-daylight.patch index b14293842..4907f3f6c 100644 --- a/patches/server/0206-API-for-any-mob-to-burn-daylight.patch +++ b/patches/server/0206-API-for-any-mob-to-burn-daylight.patch @@ -333,10 +333,10 @@ index 7eed6c176345c766a99d4304d61d28354291960f..40f2fd62b1d36843c5539932d2fb2496 // Paper end diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -index 1035e023003521574a09fdea3fd08e5fca66d8fc..7484f9c13e41f9be305134595b7052dfff4d72c3 100644 +index d79de006a0e636a23419b5be86911d16447f8891..f2ffdb1f515546243dcd388e1bbc43158520d3eb 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -@@ -1249,5 +1249,10 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { +@@ -1267,5 +1267,10 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { entity.absMoveTo(location.getX(), location.getY(), location.getZ(), location.getYaw(), location.getPitch()); return !entity.valid && entity.level.addEntity(entity, spawnReason); } diff --git a/patches/server/0213-Make-lightning-rod-range-configurable.patch b/patches/server/0213-Make-lightning-rod-range-configurable.patch index e19a893f3..9ddaedfb6 100644 --- a/patches/server/0213-Make-lightning-rod-range-configurable.patch +++ b/patches/server/0213-Make-lightning-rod-range-configurable.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Make lightning rod range configurable diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index bd32872ef404f90a078e02ec434cac547c5eef75..bfcd0def5ed81c8579f7fbbbb580797439c4cfc5 100644 +index d682f0b69757b0f4e3120066e25170264ba1f289..cee1f74edf069da54d15b7fc7d10c437afa47b2a 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java -@@ -1046,7 +1046,7 @@ public class ServerLevel extends net.minecraft.world.level.Level implements Worl +@@ -1006,7 +1006,7 @@ public class ServerLevel extends Level implements WorldGenLevel { return villageplacetype == PoiType.LIGHTNING_ROD; }, (blockposition1) -> { return blockposition1.getY() == this.getLevel().getHeight(Heightmap.Types.WORLD_SURFACE, blockposition1.getX(), blockposition1.getZ()) - 1; diff --git a/patches/server/0230-Customizable-sleeping-actionbar-messages.patch b/patches/server/0230-Customizable-sleeping-actionbar-messages.patch index 0a722f822..337f51304 100644 --- a/patches/server/0230-Customizable-sleeping-actionbar-messages.patch +++ b/patches/server/0230-Customizable-sleeping-actionbar-messages.patch @@ -5,36 +5,10 @@ Subject: [PATCH] Customizable sleeping actionbar messages diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index bfcd0def5ed81c8579f7fbbbb580797439c4cfc5..4d921ac4d064b02416e43bba93b70406ff0417eb 100644 +index cee1f74edf069da54d15b7fc7d10c437afa47b2a..92b1709b96fe1e8d71e4de675e4c11f5c3f1469e 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java -@@ -4,6 +4,7 @@ import com.google.common.annotations.VisibleForTesting; - import co.aikar.timings.TimingHistory; // Paper - import com.google.common.collect.Lists; - import com.mojang.datafixers.DataFixer; -+import io.papermc.paper.adventure.PaperAdventure; - import it.unimi.dsi.fastutil.ints.Int2ObjectMap; - import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap; - import it.unimi.dsi.fastutil.longs.LongSet; -@@ -34,6 +35,9 @@ import java.util.stream.Collectors; - import java.util.stream.Stream; - import javax.annotation.Nonnull; - import javax.annotation.Nullable; -+ -+import net.kyori.adventure.text.minimessage.MiniMessage; -+import net.kyori.adventure.text.minimessage.Template; - import net.minecraft.CrashReport; - import net.minecraft.core.BlockPos; - import net.minecraft.core.DefaultedRegistry; -@@ -158,6 +162,7 @@ import net.minecraft.world.phys.Vec3; - import net.minecraft.world.phys.shapes.BooleanOp; - import net.minecraft.world.phys.shapes.Shapes; - import net.minecraft.world.phys.shapes.VoxelShape; -+import net.pl3x.purpur.PurpurConfig; - import org.apache.logging.log4j.LogManager; - import org.apache.logging.log4j.Logger; - -@@ -1089,11 +1094,29 @@ public class ServerLevel extends net.minecraft.world.level.Level implements Worl +@@ -1049,11 +1049,29 @@ public class ServerLevel extends Level implements WorldGenLevel { if (this.canSleepThroughNights()) { if (!this.getServer().isSingleplayer() || this.getServer().isPublished()) { int i = this.getGameRules().getInt(GameRules.RULE_PLAYERS_SLEEPING_PERCENTAGE); @@ -43,23 +17,23 @@ index bfcd0def5ed81c8579f7fbbbb580797439c4cfc5..4d921ac4d064b02416e43bba93b70406 if (this.sleepStatus.areEnoughSleeping(i)) { + // Purpur start -+ if (PurpurConfig.sleepSkippingNight.isBlank()) { ++ if (net.pl3x.purpur.PurpurConfig.sleepSkippingNight.isBlank()) { + return; + } -+ if (!PurpurConfig.sleepSkippingNight.equalsIgnoreCase("default")) { -+ chatmessage = PaperAdventure.asVanilla(MiniMessage.get().parse(PurpurConfig.sleepSkippingNight)); ++ if (!net.pl3x.purpur.PurpurConfig.sleepSkippingNight.equalsIgnoreCase("default")) { ++ chatmessage = io.papermc.paper.adventure.PaperAdventure.asVanilla(net.kyori.adventure.text.minimessage.MiniMessage.get().parse(net.pl3x.purpur.PurpurConfig.sleepSkippingNight)); + } else -+ // Purpur ++ // Purpur end chatmessage = new TranslatableComponent("sleep.skipping_night"); } else { + // Purpur start -+ if (PurpurConfig.sleepingPlayersPercent.isBlank()) { ++ if (net.pl3x.purpur.PurpurConfig.sleepingPlayersPercent.isBlank()) { + return; + } -+ if (!PurpurConfig.sleepingPlayersPercent.equalsIgnoreCase("default")) { -+ chatmessage = PaperAdventure.asVanilla(MiniMessage.get().parse(PurpurConfig.sleepingPlayersPercent, -+ Template.of("count", Integer.toString(this.sleepStatus.amountSleeping())), -+ Template.of("total", Integer.toString(this.sleepStatus.sleepersNeeded(i))))); ++ if (!net.pl3x.purpur.PurpurConfig.sleepingPlayersPercent.equalsIgnoreCase("default")) { ++ chatmessage = io.papermc.paper.adventure.PaperAdventure.asVanilla(net.kyori.adventure.text.minimessage.MiniMessage.get().parse(net.pl3x.purpur.PurpurConfig.sleepingPlayersPercent, ++ net.kyori.adventure.text.minimessage.Template.of("count", Integer.toString(this.sleepStatus.amountSleeping())), ++ net.kyori.adventure.text.minimessage.Template.of("total", Integer.toString(this.sleepStatus.sleepersNeeded(i))))); + } else + // Purpur end chatmessage = new TranslatableComponent("sleep.players_sleeping", new Object[]{this.sleepStatus.amountSleeping(), this.sleepStatus.sleepersNeeded(i)});