diff --git a/patches/server/0001-Mirai-Branding-Changes.patch b/patches/server/0001-Mirai-Branding-Changes.patch index fc3e964..c647c39 100644 --- a/patches/server/0001-Mirai-Branding-Changes.patch +++ b/patches/server/0001-Mirai-Branding-Changes.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Mirai Branding Changes diff --git a/build.gradle.kts b/build.gradle.kts -index bc42301d161b49eead1d5408183bb04d7f617153..d3fdca4fe0de48446987f8fae650daab6665ae17 100644 +index 088e1e6f76774350066ce1021f6aed4eb3e27c2d..228d6d8a892e14f57b642125e2cb02984825d2c4 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -18,7 +18,7 @@ repositories { @@ -17,7 +17,7 @@ index bc42301d161b49eead1d5408183bb04d7f617153..d3fdca4fe0de48446987f8fae650daab // Pufferfish start implementation("io.papermc.paper:paper-mojangapi:1.18-R0.1-SNAPSHOT") { exclude("io.papermc.paper", "paper-api") -@@ -79,7 +79,7 @@ tasks.jar { +@@ -80,7 +80,7 @@ tasks.jar { attributes( "Main-Class" to "org.bukkit.craftbukkit.Main", "Implementation-Title" to "CraftBukkit", @@ -205,7 +205,7 @@ index 1e7ae166a1d53fce28297e2eaebd11ec28a57a55..819fc4b53b5f2f9dc9c25641be644218 public SystemReport fillSystemReport(SystemReport details) { diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index d42aa5c6a5bdb00893a134946ec07ec513e53991..6576026980ff20e7ae7d5450aa3bb54347572701 100644 +index 70007282d5fbb243d1d76d46713e3dcbc2411677..cdb95e4070f7069e2f1eb0b115d6803db1ead22f 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java @@ -253,7 +253,7 @@ import javax.annotation.Nullable; // Paper diff --git a/patches/server/0002-Mirai-Configuration.patch b/patches/server/0002-Mirai-Configuration.patch index d3cc7fa..bfa9d14 100644 --- a/patches/server/0002-Mirai-Configuration.patch +++ b/patches/server/0002-Mirai-Configuration.patch @@ -26,7 +26,7 @@ index aae2dadabedb075fd1bc712f0226882b85f4551d..0178460888a2273e4a7f75b1330ce853 this.setPvpAllowed(dedicatedserverproperties.pvp); this.setFlightAllowed(dedicatedserverproperties.allowFlight); diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index 6576026980ff20e7ae7d5450aa3bb54347572701..9ad3d54593c6d7bc7c918ef9bcd52f5c54cc984e 100644 +index cdb95e4070f7069e2f1eb0b115d6803db1ead22f..e8b256c947f7638496fdc8dd29b88298e3e003eb 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java @@ -931,6 +931,7 @@ public final class CraftServer implements Server { @@ -38,10 +38,10 @@ index 6576026980ff20e7ae7d5450aa3bb54347572701..9ad3d54593c6d7bc7c918ef9bcd52f5c // world.serverLevelData.setDifficulty(config.difficulty); // Paper - per level difficulty world.setSpawnSettings(world.serverLevelData.getDifficulty() != Difficulty.PEACEFUL && config.spawnMonsters, config.spawnAnimals); // Paper - per level difficulty (from MinecraftServer#setDifficulty(ServerLevel, Difficulty, boolean)) diff --git a/src/main/java/org/bukkit/craftbukkit/Main.java b/src/main/java/org/bukkit/craftbukkit/Main.java -index 450518903c0a10301b177d8dd7fe05aca3b8b37e..b944e9344713866987d29599e329213e279f816c 100644 +index deb33456b5b194a662cbdbacf17752c87f2cecaf..3db00cf0143ca4422ab686f0bea8224766edd5df 100644 --- a/src/main/java/org/bukkit/craftbukkit/Main.java +++ b/src/main/java/org/bukkit/craftbukkit/Main.java -@@ -153,6 +153,14 @@ public class Main { +@@ -155,6 +155,14 @@ public class Main { .describedAs("Jar file"); // Paper end diff --git a/patches/server/0011-Utilities.patch b/patches/server/0011-Utilities.patch index 1f43b7c..2ca436e 100644 --- a/patches/server/0011-Utilities.patch +++ b/patches/server/0011-Utilities.patch @@ -1,17 +1,17 @@ From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Etil <81570777+etil2jz@users.noreply.github.com> -Date: Sat, 4 Dec 2021 22:52:50 +0100 +Date: Fri, 10 Dec 2021 21:48:43 +0100 Subject: [PATCH] Utilities Original code by YatopiaMC, licensed under MIT You can find the original code on https://github.com/YatopiaMC/Yatopia diff --git a/build.gradle.kts b/build.gradle.kts -index 6a16c5843bc2c585dde268b6dacef7f54a13d4fb..2e69e4875f22b2cb695ebfa851ae545e580c8b9c 100644 +index 228d6d8a892e14f57b642125e2cb02984825d2c4..4b8ec4b11b6622e796541c8619753cf84839743e 100644 --- a/build.gradle.kts +++ b/build.gradle.kts -@@ -39,6 +39,7 @@ dependencies { - implementation("org.apache.logging.log4j:log4j-iostreams:2.14.1") // Paper +@@ -40,6 +40,7 @@ dependencies { + implementation("org.apache.logging.log4j:log4j-slf4j18-impl:2.15.0") // Paper implementation("org.ow2.asm:asm:9.2") implementation("org.ow2.asm:asm-commons:9.2") // Paper - ASM event executor generation + implementation("org.apache.commons:commons-rng-core:1.4") // Yatopia diff --git a/patches/server/0018-Configurable-max-bees-in-hive.patch b/patches/server/0018-Configurable-max-bees-in-hive.patch index e7c5948..92235cd 100644 --- a/patches/server/0018-Configurable-max-bees-in-hive.patch +++ b/patches/server/0018-Configurable-max-bees-in-hive.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Configurable max bees in hive diff --git a/src/main/java/net/minecraft/world/level/block/entity/BeehiveBlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/BeehiveBlockEntity.java -index 9fcd835d219aafbe113ebb1b796052e07bf2b046..5d04fedb428d5bfd59bfc47ace42006be3f58737 100644 +index 9fcd835d219aafbe113ebb1b796052e07bf2b046..ffd89bb615b0e64f961a8f37f1d279c0fb6f43d1 100644 --- a/src/main/java/net/minecraft/world/level/block/entity/BeehiveBlockEntity.java +++ b/src/main/java/net/minecraft/world/level/block/entity/BeehiveBlockEntity.java @@ -43,7 +43,7 @@ public class BeehiveBlockEntity extends BlockEntity { diff --git a/patches/server/0025-Completely-remove-bootstrapExecutor.patch b/patches/server/0025-Completely-remove-bootstrapExecutor.patch index a9df967..05c7503 100644 --- a/patches/server/0025-Completely-remove-bootstrapExecutor.patch +++ b/patches/server/0025-Completely-remove-bootstrapExecutor.patch @@ -32,7 +32,7 @@ index 32a4b7554677609691e23f833a5ec76d1d437ff0..13085533dba61cf526cf77bac44e3235 public static ExecutorService backgroundExecutor() { return BACKGROUND_EXECUTOR; diff --git a/src/main/java/net/minecraft/util/datafix/DataFixers.java b/src/main/java/net/minecraft/util/datafix/DataFixers.java -index b08d32bc80b4a65ebb980366a3e717c3b0e1bdab..9e31e12203dcfa0836e38ee32bad33bf34caa688 100644 +index b08d32bc80b4a65ebb980366a3e717c3b0e1bdab..a4ff80ec773e3a33238d444966054bd9a48a60d8 100644 --- a/src/main/java/net/minecraft/util/datafix/DataFixers.java +++ b/src/main/java/net/minecraft/util/datafix/DataFixers.java @@ -78,15 +78,15 @@ public class DataFixers { diff --git a/patches/server/0032-Add-NBT-API-as-a-first-class-lib.patch b/patches/server/0032-Add-NBT-API-as-a-first-class-lib.patch index fb47f5d..259b1f1 100644 --- a/patches/server/0032-Add-NBT-API-as-a-first-class-lib.patch +++ b/patches/server/0032-Add-NBT-API-as-a-first-class-lib.patch @@ -7,10 +7,10 @@ Original code by YatopiaMC, licensed under MIT You can find the original code on https://github.com/YatopiaMC/Yatopia diff --git a/build.gradle.kts b/build.gradle.kts -index 2e69e4875f22b2cb695ebfa851ae545e580c8b9c..23966877a25943a700dd159f02441b79946f8890 100644 +index 4b8ec4b11b6622e796541c8619753cf84839743e..3152e5c7262712411933c4c1111b466b2a6e0871 100644 --- a/build.gradle.kts +++ b/build.gradle.kts -@@ -106,6 +106,7 @@ relocation { +@@ -107,6 +107,7 @@ relocation { relocate("org.bukkit.craftbukkit" to "org.bukkit.craftbukkit.v$packageVersion") { exclude("org.bukkit.craftbukkit.Main*") } diff --git a/patches/server/0035-Don-t-save-fireworks.patch b/patches/server/0035-Don-t-save-fireworks.patch new file mode 100644 index 0000000..a84da1c --- /dev/null +++ b/patches/server/0035-Don-t-save-fireworks.patch @@ -0,0 +1,24 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Etil <81570777+etil2jz@users.noreply.github.com> +Date: Fri, 10 Dec 2021 22:00:25 +0100 +Subject: [PATCH] Don't save Fireworks + +Original code by Starlis, licensed under GNU General Public License v3.0 +You can find the original code on https://github.com/starlis/empirecraft + +diff --git a/src/main/java/net/minecraft/world/entity/projectile/FireworkRocketEntity.java b/src/main/java/net/minecraft/world/entity/projectile/FireworkRocketEntity.java +index fe502e148e218ae404e0049c0251d3e3ca08c825..015422d2a01c99c121481643473b8a129bbbac77 100644 +--- a/src/main/java/net/minecraft/world/entity/projectile/FireworkRocketEntity.java ++++ b/src/main/java/net/minecraft/world/entity/projectile/FireworkRocketEntity.java +@@ -355,4 +355,11 @@ public class FireworkRocketEntity extends Projectile implements ItemSupplier { + public boolean isAttackable() { + return false; + } ++ ++ // EMC start ++ @Override ++ public boolean shouldBeSaved() { ++ return false; ++ } ++ // EMC end + } diff --git a/patches/server/0036-Do-not-drop-items-from-Give-command.patch b/patches/server/0036-Do-not-drop-items-from-Give-command.patch new file mode 100644 index 0000000..ac9cf2f --- /dev/null +++ b/patches/server/0036-Do-not-drop-items-from-Give-command.patch @@ -0,0 +1,20 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Etil <81570777+etil2jz@users.noreply.github.com> +Date: Fri, 10 Dec 2021 22:07:06 +0100 +Subject: [PATCH] Do not drop items from Give command + +Original code by Starlis, licensed under GNU General Public License v3.0 +You can find the original code on https://github.com/starlis/empirecraft + +diff --git a/src/main/java/net/minecraft/server/commands/GiveCommand.java b/src/main/java/net/minecraft/server/commands/GiveCommand.java +index a0dc380e90415de9068ea408d62a1605c82631df..be8380837c1ddcd5b27694de2d5c3a9a2760c093 100644 +--- a/src/main/java/net/minecraft/server/commands/GiveCommand.java ++++ b/src/main/java/net/minecraft/server/commands/GiveCommand.java +@@ -45,6 +45,7 @@ public class GiveCommand { + k -= l; + ItemStack itemStack = item.createItemStack(l, false); + boolean bl = serverPlayer.getInventory().add(itemStack); ++ if (true) { continue; } // EMC - never drop items + if (bl && itemStack.isEmpty()) { + itemStack.setCount(1); + ItemEntity itemEntity2 = serverPlayer.drop(itemStack, false, false, true); // Paper - Fix duplicating /give items on item drop cancel diff --git a/patches/server/0037-Don-t-load-chunks-for-physics.patch b/patches/server/0037-Don-t-load-chunks-for-physics.patch new file mode 100644 index 0000000..ebc38a5 --- /dev/null +++ b/patches/server/0037-Don-t-load-chunks-for-physics.patch @@ -0,0 +1,36 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Etil <81570777+etil2jz@users.noreply.github.com> +Date: Fri, 10 Dec 2021 22:13:13 +0100 +Subject: [PATCH] Don't load chunks for physics + +Original code by Starlis, licensed under GNU General Public License v3.0 +You can find the original code on https://github.com/starlis/empirecraft + +diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java +index 426b006ba49bf244b048a3a0f3a3b5b577041cd3..2eb8ce55cdca9bcc2e9178c498c750dca9e9939b 100644 +--- a/src/main/java/net/minecraft/world/level/Level.java ++++ b/src/main/java/net/minecraft/world/level/Level.java +@@ -896,7 +896,8 @@ public abstract class Level implements LevelAccessor, AutoCloseable { + + public void neighborChanged(BlockPos pos, Block sourceBlock, BlockPos neighborPos) { + if (!this.isClientSide) { +- BlockState iblockdata = this.getBlockState(pos); ++ BlockState iblockdata = this.getBlockStateIfLoaded(pos); // EMC ++ if (iblockdata == null) return; // EMC + + try { + // CraftBukkit start +diff --git a/src/main/java/net/minecraft/world/level/block/state/BlockBehaviour.java b/src/main/java/net/minecraft/world/level/block/state/BlockBehaviour.java +index 05c46f3b3bce5225b819d86e6e06729a5093e092..450202b29726df7ddbe9422836a2ed2fdcbc52df 100644 +--- a/src/main/java/net/minecraft/world/level/block/state/BlockBehaviour.java ++++ b/src/main/java/net/minecraft/world/level/block/state/BlockBehaviour.java +@@ -930,7 +930,8 @@ public abstract class BlockBehaviour { + Direction enumdirection = aenumdirection[l]; + + blockposition_mutableblockposition.setWithOffset(pos, enumdirection); +- BlockState iblockdata = world.getBlockState(blockposition_mutableblockposition); ++ BlockState iblockdata = world.getBlockStateIfLoaded(blockposition_mutableblockposition); // EMC ++ if (iblockdata == null) { continue; } // EMC + BlockState iblockdata1 = iblockdata.updateShape(enumdirection.getOpposite(), this.asState(), world, blockposition_mutableblockposition, pos); + + Block.updateOrDestroy(iblockdata, iblockdata1, world, blockposition_mutableblockposition, flags, maxUpdateDepth); diff --git a/patches/server/0038-Do-not-process-chat-commands-before-player-has-joine.patch b/patches/server/0038-Do-not-process-chat-commands-before-player-has-joine.patch new file mode 100644 index 0000000..ffef245 --- /dev/null +++ b/patches/server/0038-Do-not-process-chat-commands-before-player-has-joine.patch @@ -0,0 +1,20 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Etil <81570777+etil2jz@users.noreply.github.com> +Date: Fri, 10 Dec 2021 22:18:19 +0100 +Subject: [PATCH] Do not process chat/commands before player has joined + +Original code by Starlis, licensed under GNU General Public License v3.0 +You can find the original code on https://github.com/starlis/empirecraft + +diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +index 23c1f6d97ef72f2f75cad51b725bdbdf011d3c4e..c65cd541a60172054ae1bb6ab3610f3eb042b50d 100644 +--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java ++++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +@@ -2067,6 +2067,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser + private void handleChat(TextFilter.FilteredText message) { + if (this.player.isRemoved() || this.player.getChatVisibility() == ChatVisiblity.HIDDEN) { // CraftBukkit - dead men tell no tales + this.send(new ClientboundChatPacket((new TranslatableComponent("chat.disabled.options")).withStyle(ChatFormatting.RED), ChatType.SYSTEM, Util.NIL_UUID)); ++ } else if (!player.didPlayerJoinEvent) { return; // EMC - do not handle chat messages before they joined + } else { + this.player.resetLastActionTime(); + String s = message.getRaw();