diff --git a/PATCHES.md b/PATCHES.md index 984201c3..7ee4ac29 100644 --- a/PATCHES.md +++ b/PATCHES.md @@ -267,7 +267,6 @@ # Patches | server | Make entity tracker use highest range of passengers | Spottedleaf | | | server | Make lava flow speed configurable | William Blake Galbreath | | | server | Make sure inlined getChunkAt has inlined logic for loaded | Spottedleaf | | -| server | Make sure to remove correct TE during TE tick | Spottedleaf | | | server | Manually inline methods in BlockPosition | Spottedleaf | | | server | Mending mends most damages equipment first | William Blake Galbreath | | | server | Modify POM | YatopiaMC | | @@ -331,7 +330,6 @@ # Patches | server | Players should not cram to death | William Blake Galbreath | | | server | Populator seed controls | Spottedleaf | | | server | Preload ProtocolLib EnumWrappers | ishland | | -| server | Prevent light queue overfill when no players are online | Spottedleaf | | | server | Prevent long map entry creation in light engine | Spottedleaf | | | server | Prevent unload() calls removing tickets for sync loads | Spottedleaf | | | server | Projectile offset config | YouHaveTrouble | | @@ -399,7 +397,6 @@ # Patches | server | Toggle for Zombified Piglin death always counting as player | jmp | | | server | Toggle for water sensitive mob damage | YouHaveTrouble | | | server | Totems work in inventory | draycia | | -| server | Track Queue debug | Paul Sauve | | | server | Tuinity POM Changes | Spottedleaf | | | api | Tuinity POM Changes | Spottedleaf | | | server | Tuinity Server Config | Spottedleaf | | diff --git a/Paper b/Paper index 8b47131d..211f8e04 160000 --- a/Paper +++ b/Paper @@ -1 +1 @@ -Subproject commit 8b47131da76e9a0e4da00d1888950a6e4fa3d07b +Subproject commit 211f8e041c69147d305897bfbba251295e93eaa9 diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 2a563242..442d9132 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,5 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-6.8.2-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-6.8.3-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/patches/Airplane/patches/server/0002-Airplane-Branding-Changes.patch b/patches/Airplane/patches/server/0002-Airplane-Branding-Changes.patch index 2344798b..bbdf7945 100644 --- a/patches/Airplane/patches/server/0002-Airplane-Branding-Changes.patch +++ b/patches/Airplane/patches/server/0002-Airplane-Branding-Changes.patch @@ -72,7 +72,7 @@ index 7063f1da3654b382e26b0093ad5d0ff04a2b38c2..b9c5479e5561f8fe68ea8f94fbf4e64d return history != null ? TextComponent.ofChildren(updateMessage, Component.newline(), history) : updateMessage; diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index e757cb5c2d50cb3a4dbe50d4726db09ab845fcbb..7cbbc1b1161f26f22a7f7832395af0d4a781cb1a 100644 +index 02d8a8f13d81c47316f704fb700afd0214a5f546..ca10d901ebd56bdee54f3c8cf607a5a34cd79f32 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java @@ -1636,7 +1636,7 @@ public abstract class MinecraftServer extends IAsyncTaskHandlerReentrant. +diff --git a/pom.xml b/pom.xml +index a3a3b17f3b30b55bb50905353e77723091bb5c1f..f9ead3ed315a3e726233545f35358cca0fc68e06 100644 +--- a/pom.xml ++++ b/pom.xml +@@ -159,6 +159,13 @@ + 1.1.0-SNAPSHOT + compile + ++ ++ ++ com.github.technove ++ AIR ++ fe3dbb4420 ++ compile ++ + + + diff --git a/src/main/java/gg/airplane/AirplaneCommand.java b/src/main/java/gg/airplane/AirplaneCommand.java new file mode 100644 -index 0000000000000000000000000000000000000000..1fa9b40e2f89272fa8bc9d927a9a852b5eb0db22 +index 0000000000000000000000000000000000000000..89c89e633f14b5820147e734b1b7ad8cadfdce80 --- /dev/null +++ b/src/main/java/gg/airplane/AirplaneCommand.java -@@ -0,0 +1,56 @@ +@@ -0,0 +1,65 @@ +package gg.airplane; + ++import net.kyori.adventure.text.Component; ++import net.kyori.adventure.text.format.NamedTextColor; +import net.md_5.bungee.api.ChatColor; +import net.minecraft.server.MinecraftServer; +import org.bukkit.Bukkit; @@ -36,6 +56,7 @@ index 0000000000000000000000000000000000000000..1fa9b40e2f89272fa8bc9d927a9a852b +import org.bukkit.command.Command; +import org.bukkit.command.CommandSender; + ++import java.io.IOException; +import java.util.Collections; +import java.util.List; +import java.util.stream.Collectors; @@ -72,7 +93,13 @@ index 0000000000000000000000000000000000000000..1fa9b40e2f89272fa8bc9d927a9a852b + + if (args[0].equalsIgnoreCase("reload")) { + MinecraftServer console = MinecraftServer.getServer(); -+ AirplaneConfig.load(); ++ try { ++ AirplaneConfig.load(); ++ } catch (IOException e) { ++ sender.sendMessage(Component.text("Failed to reload.", NamedTextColor.RED)); ++ e.printStackTrace(); ++ return true; ++ } + console.server.reloadCount++; + + Command.broadcastCommandMessage(sender, prefix + "Airplane configuration has been reloaded."); @@ -85,37 +112,42 @@ index 0000000000000000000000000000000000000000..1fa9b40e2f89272fa8bc9d927a9a852b +} diff --git a/src/main/java/gg/airplane/AirplaneConfig.java b/src/main/java/gg/airplane/AirplaneConfig.java new file mode 100644 -index 0000000000000000000000000000000000000000..fbb9544027a48941bd0938d8f607e8c7ff9443a1 +index 0000000000000000000000000000000000000000..ab019b577002677a4ce788106f8e5a1d7757a2ae --- /dev/null +++ b/src/main/java/gg/airplane/AirplaneConfig.java -@@ -0,0 +1,47 @@ +@@ -0,0 +1,50 @@ +package gg.airplane; + -+import gg.airplane.manual.ManualParser; ++import co.technove.air.AIR; +import net.minecraft.server.MinecraftServer; +import org.apache.logging.log4j.Level; + +import java.io.File; ++import java.io.FileInputStream; ++import java.io.FileOutputStream; +import java.io.IOException; +import java.lang.reflect.Method; +import java.lang.reflect.Modifier; + +public class AirplaneConfig { + -+ private static ManualParser manual; ++ private static AIR config; + -+ public static void load() { -+ try { -+ manual = new ManualParser(new File("airplane.air")); -+ } catch (IOException e) { -+ e.printStackTrace(); ++ public static void load() throws IOException { ++ File configFile = new File("airplane.air"); ++ if (configFile.exists()) { ++ try (FileInputStream inputStream = new FileInputStream(configFile)) { ++ config = new AIR(inputStream); ++ } ++ } else { ++ config = new AIR(); + } + -+ manual.get("info.version", "1.0"); -+ manual.setComment("info", ++ config.setComment("info", + "Airplane Configuration", + "Read https://blog.airplane.gg/ to find out more about Airplane", + "Join our Discord to receive support & optimization help: https://discord.gg/3gtc45q"); ++ config.getString("info.version", "1.0"); + + for (Method method : AirplaneConfig.class.getDeclaredMethods()) { + if (Modifier.isStatic(method.getModifiers()) && Modifier.isPrivate(method.getModifiers())) { @@ -128,10 +160,8 @@ index 0000000000000000000000000000000000000000..fbb9544027a48941bd0938d8f607e8c7 + } + } + -+ try { -+ manual.save(); -+ } catch (IOException e) { -+ e.printStackTrace(); ++ try (FileOutputStream outputStream = new FileOutputStream(configFile)) { ++ config.save(outputStream); + } + } + @@ -152,222 +182,6 @@ index 0000000000000000000000000000000000000000..807cf274619b8f7be839e249cb62b981 + MinecraftServer.getServer().server.getCommandMap().register("airplane", "Airplane", new AirplaneCommand()); + } +} -diff --git a/src/main/java/gg/airplane/manual/ManualParser.java b/src/main/java/gg/airplane/manual/ManualParser.java -new file mode 100644 -index 0000000000000000000000000000000000000000..ace29adb0f140d99a8d85ac824654beded4bf5b8 ---- /dev/null -+++ b/src/main/java/gg/airplane/manual/ManualParser.java -@@ -0,0 +1,210 @@ -+package gg.airplane.manual; -+ -+import java.io.BufferedReader; -+import java.io.BufferedWriter; -+import java.io.File; -+import java.io.FileReader; -+import java.io.FileWriter; -+import java.io.IOException; -+import java.util.ArrayList; -+import java.util.Arrays; -+import java.util.LinkedHashMap; -+import java.util.List; -+import java.util.Map; -+import java.util.TreeMap; -+ -+// todo make this cleaner and more ergonomic to use -+// also probably needs lists eventually -+public class ManualParser { -+ -+ private final File file; -+ private final Map sections = new LinkedHashMap<>(); -+ -+ private static class ManualObject { -+ public final String key; -+ public final List comments; -+ -+ private ManualObject(String key, List comments) { -+ this.key = key; -+ this.comments = comments == null ? new ArrayList<>() : comments; -+ } -+ } -+ -+ private static class Section extends ManualObject { -+ public final Map values; -+ -+ private Section(String key, List comments) { -+ super(key, comments); -+ this.values = new LinkedHashMap<>(); -+ } -+ -+ public void add(String key, Value value) { -+ this.values.put(key, value); -+ value.parent = this; -+ } -+ -+ public Value get(String key) { -+ return this.values.computeIfAbsent(key, k -> { -+ Value value = new Value(k, null, null); -+ value.parent = this; -+ return value; -+ }); -+ } -+ } -+ -+ private static class Value extends ManualObject { -+ public Object value; -+ public Section parent; -+ -+ private Value(String key, Object value, List comments) { -+ super(key, comments); -+ this.value = value; -+ } -+ } -+ -+ public ManualParser(File file) throws IOException { -+ this.file = file; -+ -+ if (!file.exists()) { -+ return; -+ } -+ -+ try (BufferedReader reader = new BufferedReader(new FileReader(file))) { -+ Section currentSection = null; -+ List currentComment = new ArrayList<>(); -+ -+ String line; -+ while ((line = reader.readLine()) != null) { -+ line = line.trim(); -+ -+ if (line.length() == 0) { -+ continue; // empty line -+ } -+ -+ if (line.startsWith("#")) { -+ currentComment.add(line.substring(1).trim()); -+ } else if (line.startsWith("[")) { -+ if (!line.endsWith("]")) { -+ throw new IllegalArgumentException("Invalid configuration, section '" + line + "' does not end with ]"); -+ } -+ if (line.length() < 3) { -+ throw new IllegalArgumentException("Invalid configuration, section '" + line + "' does not have a name"); -+ } -+ String sectionName = line.substring(1, line.length() - 1); -+ Section newSection = new Section(sectionName, currentComment); -+ currentComment = new ArrayList<>(); -+ currentSection = newSection; -+ this.sections.put(sectionName, newSection); -+ } else { -+ if (currentSection == null) { -+ throw new IllegalArgumentException("Invalid configuration, found value outside of section " + line); -+ } -+ int equals = line.indexOf("="); -+ if (equals <= 1 || equals == line.length() - 1) { -+ throw new IllegalArgumentException("Invalid configuration, assignment invalid " + line); -+ } -+ -+ String key = line.substring(0, equals).trim(); -+ -+ String value = line.substring(equals + 1).trim(); -+ if (value.length() == 0) { -+ throw new IllegalArgumentException("Invalid configuration, value does not exist " + line); -+ } -+ if (value.startsWith("\"")) { -+ if (!value.endsWith("\"")) { -+ throw new IllegalArgumentException("Invalid configuration, value has no ending quote " + line); -+ } -+ String stringValue = value.substring(1, value.length() - 1); -+ currentSection.add(key, new Value(key, stringValue, currentComment)); -+ } else if (Character.isDigit(value.charAt(0))) { -+ if (value.contains(".")) { -+ double doubleValue = Double.parseDouble(value); -+ currentSection.add(key, new Value(key, doubleValue, currentComment)); -+ } else { -+ int intValue = Integer.parseInt(value); -+ currentSection.add(key, new Value(key, intValue, currentComment)); -+ } -+ } else if (value.equals("true") || value.equals("false")) { -+ boolean boolValue = Boolean.parseBoolean(value); -+ currentSection.add(key, new Value(key, boolValue, currentComment)); -+ } else { -+ throw new IllegalArgumentException("Invalid configuration, unknown type for " + line); -+ } -+ currentComment = new ArrayList<>(); -+ } -+ } -+ } -+ } -+ -+ public void save() throws IOException { -+ try (BufferedWriter writer = new BufferedWriter(new FileWriter(this.file))) { -+ for (Map.Entry entry : this.sections.entrySet()) { -+ Section section = entry.getValue(); -+ if (section.comments != null) { -+ for (String comment : section.comments) { -+ writer.write("# " + comment + "\n"); -+ } -+ } -+ writer.write("[" + section.key + "]" + "\n"); -+ for (Value value : section.values.values()) { -+ if (value.comments != null) { -+ for (String comment : value.comments) { -+ writer.write(" # " + comment + "\n"); -+ } -+ } -+ writer.write(" " + value.key + " = " + serialize(value.value) + "\n"); -+ } -+ writer.write("\n"); -+ } -+ } -+ } -+ -+ private ManualObject getObject(String key) { -+ String[] split = key.split("\\.", 2); -+ if (split.length == 1) { -+ return this.sections.computeIfAbsent(key, k -> new Section(k, null)); -+ } -+ return this.sections.computeIfAbsent(split[0], k -> new Section(k, null)).get(split[1]); -+ } -+ -+ public void setComment(String key, String... comment) { -+ ManualObject object = this.getObject(key); -+ object.comments.clear(); -+ object.comments.addAll(Arrays.asList(comment)); -+ } -+ -+ public T get(String key, T defaultValue, String... comment) { -+ String[] split = key.split("\\.", 2); -+ if (split.length == 1) { -+ throw new IllegalArgumentException("Key " + key + " does not include section"); -+ } -+ Section section = this.sections.computeIfAbsent(split[0], k -> new Section(k, null)); -+ if (!section.values.containsKey(split[1])) { -+ Value value = section.get(split[1]); -+ value.value = defaultValue; -+ value.comments.addAll(Arrays.asList(comment)); -+ return defaultValue; -+ } -+ Value value = section.get(split[1]); -+ if (value.comments.isEmpty()) { -+ value.comments.addAll(Arrays.asList(comment)); -+ } -+ return (T) value.value; -+ } -+ -+ public void set(String key, Object value) { -+ ManualObject object = getObject(key); -+ if (!(object instanceof Value)) { -+ throw new IllegalArgumentException("Invalid key for value " + key); -+ } -+ ((Value) object).value = value; -+ } -+ -+ private String serialize(Object object) { -+ if (object instanceof String) { -+ return "\"" + object + "\""; -+ } -+ return String.valueOf(object); -+ } -+ -+} diff --git a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java index d902efdb8f2d42ea4c3933f7fa76ebe135ee09db..24a46ad36613faa5f5a1a12b70f7af886e1608ae 100644 --- a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java diff --git a/patches/Airplane/patches/server/0005-Strip-raytracing-for-EntityLiving-hasLineOfSight.patch b/patches/Airplane/patches/server/0005-Strip-raytracing-for-EntityLiving-hasLineOfSight.patch index ed4d7a5f..879bab6e 100644 --- a/patches/Airplane/patches/server/0005-Strip-raytracing-for-EntityLiving-hasLineOfSight.patch +++ b/patches/Airplane/patches/server/0005-Strip-raytracing-for-EntityLiving-hasLineOfSight.patch @@ -108,7 +108,7 @@ index e612e1d30f76e217b1aa23488ab025adce048f57..c9198d242b9053fad6fa5b53c1894679 default MovingObjectPositionBlock rayTraceBlock(RayTrace raytrace1, BlockPosition blockposition) { // Paper start - Prevent raytrace from loading chunks diff --git a/src/main/java/net/minecraft/world/level/World.java b/src/main/java/net/minecraft/world/level/World.java -index 68fa071fc576f398682ef461df102be432cdcb4c..9860bef7d4372071228532d28e6d21e675dff25c 100644 +index af01f5d635eada7175b9d7fdb47a65530686a539..3e08e56f67516333e7d880fdc595447a3ae4dc83 100644 --- a/src/main/java/net/minecraft/world/level/World.java +++ b/src/main/java/net/minecraft/world/level/World.java @@ -69,6 +69,8 @@ import net.minecraft.world.level.saveddata.maps.WorldMap; diff --git a/patches/Airplane/patches/server/0008-Swap-priority-of-checks-in-chunk-ticking.patch b/patches/Airplane/patches/server/0008-Swap-priority-of-checks-in-chunk-ticking.patch index 2dae8f6d..9b0a5634 100644 --- a/patches/Airplane/patches/server/0008-Swap-priority-of-checks-in-chunk-ticking.patch +++ b/patches/Airplane/patches/server/0008-Swap-priority-of-checks-in-chunk-ticking.patch @@ -23,7 +23,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/server/level/WorldServer.java b/src/main/java/net/minecraft/server/level/WorldServer.java -index 46f960b9276dced41deb8f741454b6cce5a81529..277132da0b3672a9097b16f3b8534975dc795e3e 100644 +index 655e994376dcc65f4fd76e182d4ef5bc20142063..0440aa285226d5ed1853c059d91b5779501e95d1 100644 --- a/src/main/java/net/minecraft/server/level/WorldServer.java +++ b/src/main/java/net/minecraft/server/level/WorldServer.java @@ -1210,7 +1210,7 @@ public class WorldServer extends World implements GeneratorAccessSeed { diff --git a/patches/Airplane/patches/server/0010-Optimize-random-calls-in-chunk-ticking.patch b/patches/Airplane/patches/server/0010-Optimize-random-calls-in-chunk-ticking.patch index d4e9e05a..972d09e7 100644 --- a/patches/Airplane/patches/server/0010-Optimize-random-calls-in-chunk-ticking.patch +++ b/patches/Airplane/patches/server/0010-Optimize-random-calls-in-chunk-ticking.patch @@ -34,7 +34,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/server/level/ChunkProviderServer.java b/src/main/java/net/minecraft/server/level/ChunkProviderServer.java -index cb83f1152c52a99d25e4e80cc8bf18c6793e8b50..87c87b9767003652814c3726eece64470dbb69a8 100644 +index fe040615ff03478a20cdf8376f89a6b7d100ba61..207a9c3928aad7c6e89a120b54d87e003ebd232c 100644 --- a/src/main/java/net/minecraft/server/level/ChunkProviderServer.java +++ b/src/main/java/net/minecraft/server/level/ChunkProviderServer.java @@ -1000,6 +1000,7 @@ public class ChunkProviderServer extends IChunkProvider { @@ -46,7 +46,7 @@ index cb83f1152c52a99d25e4e80cc8bf18c6793e8b50..87c87b9767003652814c3726eece6447 boolean flag2 = world.ticksPerAnimalSpawns != 0L && worlddata.getTime() % world.ticksPerAnimalSpawns == 0L; // CraftBukkit diff --git a/src/main/java/net/minecraft/server/level/WorldServer.java b/src/main/java/net/minecraft/server/level/WorldServer.java -index 277132da0b3672a9097b16f3b8534975dc795e3e..b33f37309d4dd22c033ad84effa4ff9d6e20a790 100644 +index 0440aa285226d5ed1853c059d91b5779501e95d1..8fa26ce7a9eed8ec43791079d6416eb2cd4a9398 100644 --- a/src/main/java/net/minecraft/server/level/WorldServer.java +++ b/src/main/java/net/minecraft/server/level/WorldServer.java @@ -1200,6 +1200,8 @@ public class WorldServer extends World implements GeneratorAccessSeed { @@ -77,7 +77,7 @@ index 277132da0b3672a9097b16f3b8534975dc795e3e..b33f37309d4dd22c033ad84effa4ff9d // Tuinity start - optimise chunk ice snow ticking BiomeBase[] biomeCache = this.biomeBaseCache; diff --git a/src/main/java/net/minecraft/world/level/chunk/Chunk.java b/src/main/java/net/minecraft/world/level/chunk/Chunk.java -index ffef28f9fa82a6961ef6db5f6732cfee4352ee01..c987dff9660469bf5144ef07e0d13fbfea31e7dd 100644 +index df35ae12ecbe88ab396bed9850ef80433ff42fd4..7474c070598bc093e06f02f19d49f3a6fa6b3d4e 100644 --- a/src/main/java/net/minecraft/world/level/chunk/Chunk.java +++ b/src/main/java/net/minecraft/world/level/chunk/Chunk.java @@ -99,6 +99,18 @@ public class Chunk implements IChunkAccess { diff --git a/patches/Airplane/patches/server/0012-Dynamic-activation-range.patch b/patches/Airplane/patches/server/0012-Dynamic-activation-range.patch index 619b1410..ecfa0ac4 100644 --- a/patches/Airplane/patches/server/0012-Dynamic-activation-range.patch +++ b/patches/Airplane/patches/server/0012-Dynamic-activation-range.patch @@ -27,10 +27,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/gg/airplane/AirplaneConfig.java b/src/main/java/gg/airplane/AirplaneConfig.java -index fbb9544027a48941bd0938d8f607e8c7ff9443a1..e0bed57aa5547a214ad779dbd0f648f3663147f9 100644 +index ab019b577002677a4ce788106f8e5a1d7757a2ae..946e476e1ca8c3ced119c64a05643c8c64760724 100644 --- a/src/main/java/gg/airplane/AirplaneConfig.java +++ b/src/main/java/gg/airplane/AirplaneConfig.java -@@ -44,4 +44,29 @@ public class AirplaneConfig { +@@ -47,4 +47,30 @@ public class AirplaneConfig { } } @@ -42,21 +42,22 @@ index fbb9544027a48941bd0938d8f607e8c7ff9443a1..e0bed57aa5547a214ad779dbd0f648f3 + public static boolean dynamicHoglinBehavior = true; + + private static void dynamicActivationRange() { -+ manual.setComment("activation-range", "Optimizes how entities act when", "they're far away from the player"); ++ config.setComment("activation-range", "Optimizes how entities act when", "they're far away from the player"); + -+ maximumActivationPrio = manual.get("activation-range.max-tick-freq", maximumActivationPrio, ++ maximumActivationPrio = config.getInt("activation-range.max-tick-freq", maximumActivationPrio, + "This value defines how often in ticks, the furthest entity", + "will get their pathfinders and behaviors ticked. 20 = 1s"); -+ activationDistanceMod = manual.get("activation-range.activation-dist-mod", activationDistanceMod, ++ activationDistanceMod = config.getInt("activation-range.activation-dist-mod", activationDistanceMod, + "This value defines how much distance modifies an entity's", + "tick frequency. freq = (distanceToPlayer^2) / (2^value)", + "If you want further away entities to tick less often, use 8.", + "If you want further away entities to tick more often, try 10."); + -+ manual.setComment("behavior-activation", "A list of entities to use the dynamic activation range", "to modify how often their behaviors are ticked"); -+ dynamicVillagerBehavior = manual.get("behavior-activation.villager", dynamicVillagerBehavior); -+ dynamicPiglinBehavior = manual.get("behavior-activation.piglin", dynamicPiglinBehavior); -+ dynamicHoglinBehavior = manual.get("behavior-activation.hoglin", dynamicHoglinBehavior); ++ config.setComment("behavior-activation", "A list of entities to use the dynamic activation range", "to modify how often their behaviors are ticked"); ++ ++ dynamicVillagerBehavior = config.getBoolean("behavior-activation.villager", dynamicVillagerBehavior); ++ dynamicPiglinBehavior = config.getBoolean("behavior-activation.piglin", dynamicPiglinBehavior); ++ dynamicHoglinBehavior = config.getBoolean("behavior-activation.hoglin", dynamicHoglinBehavior); + } + } diff --git a/patches/Airplane/patches/server/0017-Airplane-Profiler.patch b/patches/Airplane/patches/server/0017-Airplane-Profiler.patch index de6d15ae..af45938c 100644 --- a/patches/Airplane/patches/server/0017-Airplane-Profiler.patch +++ b/patches/Airplane/patches/server/0017-Airplane-Profiler.patch @@ -20,11 +20,11 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . diff --git a/pom.xml b/pom.xml -index a3a3b17f3b30b55bb50905353e77723091bb5c1f..fc2c3714b6c772d67e258be269aa92dda80cdb12 100644 +index f9ead3ed315a3e726233545f35358cca0fc68e06..988a4464b1c84f7aa973269f1c109fb49b1b4d4b 100644 --- a/pom.xml +++ b/pom.xml -@@ -159,8 +159,23 @@ - 1.1.0-SNAPSHOT +@@ -166,8 +166,23 @@ + fe3dbb4420 compile + @@ -48,34 +48,35 @@ index a3a3b17f3b30b55bb50905353e77723091bb5c1f..fc2c3714b6c772d67e258be269aa92dd tuinity-${minecraft.version} diff --git a/src/main/java/gg/airplane/AirplaneConfig.java b/src/main/java/gg/airplane/AirplaneConfig.java -index e0bed57aa5547a214ad779dbd0f648f3663147f9..39ef53c9dd49d5951103777002f866a64a252bfd 100644 +index 946e476e1ca8c3ced119c64a05643c8c64760724..a77e628518920e84b03a8a00e1308a9a53a00896 100644 --- a/src/main/java/gg/airplane/AirplaneConfig.java +++ b/src/main/java/gg/airplane/AirplaneConfig.java -@@ -69,4 +69,26 @@ public class AirplaneConfig { - dynamicHoglinBehavior = manual.get("behavior-activation.hoglin", dynamicHoglinBehavior); +@@ -73,4 +73,27 @@ public class AirplaneConfig { + dynamicHoglinBehavior = config.getBoolean("behavior-activation.hoglin", dynamicHoglinBehavior); } + + public static String profileWebUrl = "https://flare.airplane.gg"; + + private static void profilerOptions() { -+ manual.setComment("flare", "Configures Flare, the built-in profiler"); ++ config.setComment("flare", "Configures Flare, the built-in profiler"); + -+ profileWebUrl = manual.get("flare.url", profileWebUrl, "Sets the server to use for profiles."); ++ profileWebUrl = config.getString("flare.url", profileWebUrl, "Sets the server to use for profiles."); + } + + + public static String accessToken = ""; + + private static void airplaneWebServices() { -+ manual.setComment("web-services", "Options for connecting to Airplane's online utilities"); ++ config.setComment("web-services", "Options for connecting to Airplane's online utilities"); + -+ accessToken = manual.get("web-services.token", ""); ++ accessToken = config.getString("web-services.token", ""); + // todo lookup token (off-thread) and let users know if their token is valid + if (accessToken.length() > 0) { + gg.airplane.flare.FlareSetup.init(); // Airplane + } + } ++ + } diff --git a/src/main/java/gg/airplane/AirplaneLogger.java b/src/main/java/gg/airplane/AirplaneLogger.java diff --git a/patches/Airplane/patches/server/0019-Skip-copying-unloading-tile-entities.patch b/patches/Airplane/patches/server/0018-Skip-copying-unloading-tile-entities.patch similarity index 95% rename from patches/Airplane/patches/server/0019-Skip-copying-unloading-tile-entities.patch rename to patches/Airplane/patches/server/0018-Skip-copying-unloading-tile-entities.patch index e6dabfb6..e58685bc 100644 --- a/patches/Airplane/patches/server/0019-Skip-copying-unloading-tile-entities.patch +++ b/patches/Airplane/patches/server/0018-Skip-copying-unloading-tile-entities.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Skip copying unloading tile entities diff --git a/src/main/java/net/minecraft/world/level/World.java b/src/main/java/net/minecraft/world/level/World.java -index 9860bef7d4372071228532d28e6d21e675dff25c..a5530b21f20d55386346b4e3970c65bcddffee51 100644 +index 3e08e56f67516333e7d880fdc595447a3ae4dc83..f0420b87025a090a659542a00614e805bf850fd2 100644 --- a/src/main/java/net/minecraft/world/level/World.java +++ b/src/main/java/net/minecraft/world/level/World.java @@ -106,7 +106,7 @@ public abstract class World implements GeneratorAccess, AutoCloseable { diff --git a/patches/Airplane/patches/server/0020-Reduce-entity-chunk-ticking-checks-from-3-to-1.patch b/patches/Airplane/patches/server/0019-Reduce-entity-chunk-ticking-checks-from-3-to-1.patch similarity index 93% rename from patches/Airplane/patches/server/0020-Reduce-entity-chunk-ticking-checks-from-3-to-1.patch rename to patches/Airplane/patches/server/0019-Reduce-entity-chunk-ticking-checks-from-3-to-1.patch index 14ad39d4..a25fe1c8 100644 --- a/patches/Airplane/patches/server/0020-Reduce-entity-chunk-ticking-checks-from-3-to-1.patch +++ b/patches/Airplane/patches/server/0019-Reduce-entity-chunk-ticking-checks-from-3-to-1.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Reduce entity chunk ticking checks from 3 to 1 diff --git a/src/main/java/net/minecraft/server/level/WorldServer.java b/src/main/java/net/minecraft/server/level/WorldServer.java -index b33f37309d4dd22c033ad84effa4ff9d6e20a790..b788c33605fc96d17758cf42e508872e38fb4322 100644 +index 8fa26ce7a9eed8ec43791079d6416eb2cd4a9398..81b0ced87adbeffc7fd2343910735cd0f4c1bf13 100644 --- a/src/main/java/net/minecraft/server/level/WorldServer.java +++ b/src/main/java/net/minecraft/server/level/WorldServer.java @@ -1081,11 +1081,12 @@ public class WorldServer extends World implements GeneratorAccessSeed { @@ -31,7 +31,7 @@ index b33f37309d4dd22c033ad84effa4ff9d6e20a790..b788c33605fc96d17758cf42e508872e this.updateNavigatorsInRegion(entity); } } else { -@@ -1416,7 +1417,9 @@ public class WorldServer extends World implements GeneratorAccessSeed { +@@ -1415,7 +1416,9 @@ public class WorldServer extends World implements GeneratorAccessSeed { } // Tuinity end - log detailed entity tick information @@ -42,7 +42,7 @@ index b33f37309d4dd22c033ad84effa4ff9d6e20a790..b788c33605fc96d17758cf42e508872e // Tuinity start - log detailed entity tick information com.tuinity.tuinity.util.TickThread.ensureTickThread("Cannot tick an entity off-main"); try { -@@ -1424,7 +1427,7 @@ public class WorldServer extends World implements GeneratorAccessSeed { +@@ -1423,7 +1426,7 @@ public class WorldServer extends World implements GeneratorAccessSeed { currentlyTickingEntity.lazySet(entity); } // Tuinity end - log detailed entity tick information diff --git a/patches/Airplane/patches/server/0021-Remove-iterators-from-inventory-contains.patch b/patches/Airplane/patches/server/0020-Remove-iterators-from-inventory-contains.patch similarity index 100% rename from patches/Airplane/patches/server/0021-Remove-iterators-from-inventory-contains.patch rename to patches/Airplane/patches/server/0020-Remove-iterators-from-inventory-contains.patch diff --git a/patches/Airplane/patches/server/0022-Cache-entityhuman-display-name.patch b/patches/Airplane/patches/server/0021-Cache-entityhuman-display-name.patch similarity index 100% rename from patches/Airplane/patches/server/0022-Cache-entityhuman-display-name.patch rename to patches/Airplane/patches/server/0021-Cache-entityhuman-display-name.patch diff --git a/patches/Airplane/patches/server/0023-Early-return-optimization-for-target-finding.patch b/patches/Airplane/patches/server/0022-Early-return-optimization-for-target-finding.patch similarity index 100% rename from patches/Airplane/patches/server/0023-Early-return-optimization-for-target-finding.patch rename to patches/Airplane/patches/server/0022-Early-return-optimization-for-target-finding.patch diff --git a/patches/Airplane/patches/server/0024-More-debug-for-plugins-not-shutting-down-tasks.patch b/patches/Airplane/patches/server/0023-More-debug-for-plugins-not-shutting-down-tasks.patch similarity index 100% rename from patches/Airplane/patches/server/0024-More-debug-for-plugins-not-shutting-down-tasks.patch rename to patches/Airplane/patches/server/0023-More-debug-for-plugins-not-shutting-down-tasks.patch diff --git a/patches/Airplane/patches/server/0025-Track-Queue-debug.patch b/patches/Airplane/patches/server/0025-Track-Queue-debug.patch deleted file mode 100644 index 8384d9e2..00000000 --- a/patches/Airplane/patches/server/0025-Track-Queue-debug.patch +++ /dev/null @@ -1,96 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: Paul Sauve -Date: Thu, 25 Feb 2021 20:25:49 -0600 -Subject: [PATCH] Track Queue debug - - -diff --git a/src/main/java/com/tuinity/tuinity/util/maplist/IteratorSafeOrderedReferenceSet.java b/src/main/java/com/tuinity/tuinity/util/maplist/IteratorSafeOrderedReferenceSet.java -index b9bdce7c7ca8b7b107b0dca165d722321c16229d..739839314fd8a88b5fca8b9678e1df07a166c35d 100644 ---- a/src/main/java/com/tuinity/tuinity/util/maplist/IteratorSafeOrderedReferenceSet.java -+++ b/src/main/java/com/tuinity/tuinity/util/maplist/IteratorSafeOrderedReferenceSet.java -@@ -20,7 +20,7 @@ public final class IteratorSafeOrderedReferenceSet { - - protected final double maxFragFactor; - -- protected int iteratorCount; -+ public int iteratorCount; // Airplane - public for debug - - private final boolean threadRestricted; - -diff --git a/src/main/java/gg/airplane/commands/AirplaneCommands.java b/src/main/java/gg/airplane/commands/AirplaneCommands.java -index 66b20250a26d005427601b1cdee43bdd9eba70cc..f84e26b2d8ab9a9b2d9e92e18002483127121135 100644 ---- a/src/main/java/gg/airplane/commands/AirplaneCommands.java -+++ b/src/main/java/gg/airplane/commands/AirplaneCommands.java -@@ -2,11 +2,13 @@ package gg.airplane.commands; - - import gg.airplane.AirplaneCommand; - import gg.airplane.flare.FlareCommand; -+import gg.airplane.structs.TrackQueue; - import net.minecraft.server.MinecraftServer; - - public class AirplaneCommands { - public static void init() { - MinecraftServer.getServer().server.getCommandMap().register("airplane", "Airplane", new AirplaneCommand()); - MinecraftServer.getServer().server.getCommandMap().register("flare", "Airplane", new FlareCommand()); -+ TrackQueue.TrackQueueDebugCommand.register(); - } - } -diff --git a/src/main/java/gg/airplane/structs/TrackQueue.java b/src/main/java/gg/airplane/structs/TrackQueue.java -index ae7c5430b4f5970ede602bb234b5ffcee424f6a7..4419fbe94041f4b8a0ea848880798289d063b8e2 100644 ---- a/src/main/java/gg/airplane/structs/TrackQueue.java -+++ b/src/main/java/gg/airplane/structs/TrackQueue.java -@@ -1,9 +1,12 @@ - package gg.airplane.structs; - - import com.tuinity.tuinity.util.maplist.IteratorSafeOrderedReferenceSet; -+import net.minecraft.server.level.WorldServer; - import net.minecraft.world.level.chunk.Chunk; - import net.minecraft.server.MinecraftServer; - import org.apache.logging.log4j.Level; -+import org.bukkit.command.Command; -+import org.bukkit.command.CommandSender; - - import java.util.concurrent.ConcurrentLinkedQueue; - import java.util.concurrent.ForkJoinPool; -@@ -14,6 +17,28 @@ import java.util.concurrent.atomic.AtomicInteger; - */ - public class TrackQueue { - -+ public static class TrackQueueDebugCommand extends Command { -+ protected TrackQueueDebugCommand() { -+ super("trackqueuedebug"); -+ } -+ -+ public static void register() { -+ MinecraftServer.getServer().server.getCommandMap().register("trackqueuedebug", "Airplane", new TrackQueueDebugCommand()); -+ } -+ -+ @Override -+ public boolean execute(CommandSender sender, String commandLabel, String[] args) { -+ if (!sender.isOp()) { -+ return false; -+ } -+ for (WorldServer world : MinecraftServer.getServer().getWorlds()) { -+ IteratorSafeOrderedReferenceSet chunks = world.getChunkProvider().entityTickingChunks; -+ sender.sendMessage(world.getWorld().getName() + ": " + chunks.size() + " / " + chunks.getListSize() + " (iterators: " + chunks.iteratorCount + ")"); -+ } -+ return true; -+ } -+ } -+ - private final IteratorSafeOrderedReferenceSet chunks; - private final ForkJoinPool pool = new ForkJoinPool(Math.max(4, Runtime.getRuntime().availableProcessors() >> 2)); - private final AtomicInteger taskIndex = new AtomicInteger(); -diff --git a/src/main/java/net/minecraft/server/level/ChunkProviderServer.java b/src/main/java/net/minecraft/server/level/ChunkProviderServer.java -index 87c87b9767003652814c3726eece64470dbb69a8..dc1b7db4d39d4dfa65d60e5a059d3b94def6cf62 100644 ---- a/src/main/java/net/minecraft/server/level/ChunkProviderServer.java -+++ b/src/main/java/net/minecraft/server/level/ChunkProviderServer.java -@@ -388,7 +388,7 @@ public class ChunkProviderServer extends IChunkProvider { - } - - final com.tuinity.tuinity.util.maplist.IteratorSafeOrderedReferenceSet tickingChunks = new com.tuinity.tuinity.util.maplist.IteratorSafeOrderedReferenceSet<>(4096, 0.75f, 4096, 0.15, true); -- final com.tuinity.tuinity.util.maplist.IteratorSafeOrderedReferenceSet entityTickingChunks = new com.tuinity.tuinity.util.maplist.IteratorSafeOrderedReferenceSet<>(4096, 0.75f, 4096, 0.15, true); -+ public final com.tuinity.tuinity.util.maplist.IteratorSafeOrderedReferenceSet entityTickingChunks = new com.tuinity.tuinity.util.maplist.IteratorSafeOrderedReferenceSet<>(4096, 0.75f, 4096, 0.15, true); // Airplane - public for debug - // Tuinity end - - public ChunkProviderServer(WorldServer worldserver, Convertable.ConversionSession convertable_conversionsession, DataFixer datafixer, DefinedStructureManager definedstructuremanager, Executor executor, ChunkGenerator chunkgenerator, int i, boolean flag, WorldLoadListener worldloadlistener, Supplier supplier) { diff --git a/patches/Akarin/patches/server/0001-Disable-the-Snooper.patch b/patches/Akarin/patches/server/0001-Disable-the-Snooper.patch index 17256ad6..52163919 100644 --- a/patches/Akarin/patches/server/0001-Disable-the-Snooper.patch +++ b/patches/Akarin/patches/server/0001-Disable-the-Snooper.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Disable the Snooper diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index e8146dad220330bdcc46e563172b40a66931d17c..34552a2bd96428013dba6f2bead737af75a28d0d 100644 +index 966b6e2f9b7c473d8dfcae205d8ef8f08912ded9..f72574fde82307a0e73a9eca6c9dc967d0c48f22 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java @@ -1441,6 +1441,8 @@ public abstract class MinecraftServer extends IAsyncTaskHandlerReentrant. diff --git a/src/main/java/com/tuinity/tuinity/util/maplist/IteratorSafeOrderedReferenceSet.java b/src/main/java/com/tuinity/tuinity/util/maplist/IteratorSafeOrderedReferenceSet.java -index be408aebbccbda46e8aa82ef337574137cfa0096..b9bdce7c7ca8b7b107b0dca165d722321c16229d 100644 +index be408aebbccbda46e8aa82ef337574137cfa0096..739839314fd8a88b5fca8b9678e1df07a166c35d 100644 --- a/src/main/java/com/tuinity/tuinity/util/maplist/IteratorSafeOrderedReferenceSet.java +++ b/src/main/java/com/tuinity/tuinity/util/maplist/IteratorSafeOrderedReferenceSet.java -@@ -16,7 +16,7 @@ public final class IteratorSafeOrderedReferenceSet { +@@ -16,11 +16,11 @@ public final class IteratorSafeOrderedReferenceSet { /* list impl */ protected E[] listElements; @@ -36,41 +36,67 @@ index be408aebbccbda46e8aa82ef337574137cfa0096..b9bdce7c7ca8b7b107b0dca165d72232 protected final double maxFragFactor; +- protected int iteratorCount; ++ public int iteratorCount; // Airplane - public for debug + + private final boolean threadRestricted; + diff --git a/src/main/java/gg/airplane/AirplaneConfig.java b/src/main/java/gg/airplane/AirplaneConfig.java -index 39ef53c9dd49d5951103777002f866a64a252bfd..3886c731a69540f638d57a411285da289d3b704b 100644 +index a77e628518920e84b03a8a00e1308a9a53a00896..9f8d2528a9482cb562c610eecd21204d422da47a 100644 --- a/src/main/java/gg/airplane/AirplaneConfig.java +++ b/src/main/java/gg/airplane/AirplaneConfig.java -@@ -91,4 +91,18 @@ public class AirplaneConfig { - } +@@ -96,4 +96,18 @@ public class AirplaneConfig { } + + + public static boolean multithreadedEntityTracker = false; + public static boolean entityTrackerAsyncPackets = false; + + private static void entityTracker() { -+ manual.setComment("tracker", "Options to improve the performance of the entity tracker"); ++ config.setComment("tracker", "Options to improve the performance of the entity tracker"); + -+ multithreadedEntityTracker = manual.get("tracker.multithreaded", multithreadedEntityTracker, ++ multithreadedEntityTracker = config.getBoolean("tracker.multithreaded", multithreadedEntityTracker, + "This enables the multithreading of the tracker."); -+ entityTrackerAsyncPackets = manual.get("tracker.unsafe-async-packets", entityTrackerAsyncPackets, ++ entityTrackerAsyncPackets = config.getBoolean("tracker.unsafe-async-packets", entityTrackerAsyncPackets, + "This option can break plugins that assume packets from the", + "entity tracker will be sent sync."); + } + } +diff --git a/src/main/java/gg/airplane/commands/AirplaneCommands.java b/src/main/java/gg/airplane/commands/AirplaneCommands.java +index 66b20250a26d005427601b1cdee43bdd9eba70cc..f84e26b2d8ab9a9b2d9e92e18002483127121135 100644 +--- a/src/main/java/gg/airplane/commands/AirplaneCommands.java ++++ b/src/main/java/gg/airplane/commands/AirplaneCommands.java +@@ -2,11 +2,13 @@ package gg.airplane.commands; + + import gg.airplane.AirplaneCommand; + import gg.airplane.flare.FlareCommand; ++import gg.airplane.structs.TrackQueue; + import net.minecraft.server.MinecraftServer; + + public class AirplaneCommands { + public static void init() { + MinecraftServer.getServer().server.getCommandMap().register("airplane", "Airplane", new AirplaneCommand()); + MinecraftServer.getServer().server.getCommandMap().register("flare", "Airplane", new FlareCommand()); ++ TrackQueue.TrackQueueDebugCommand.register(); + } + } diff --git a/src/main/java/gg/airplane/structs/TrackQueue.java b/src/main/java/gg/airplane/structs/TrackQueue.java new file mode 100644 -index 0000000000000000000000000000000000000000..ae7c5430b4f5970ede602bb234b5ffcee424f6a7 +index 0000000000000000000000000000000000000000..4419fbe94041f4b8a0ea848880798289d063b8e2 --- /dev/null +++ b/src/main/java/gg/airplane/structs/TrackQueue.java -@@ -0,0 +1,84 @@ +@@ -0,0 +1,109 @@ +package gg.airplane.structs; + +import com.tuinity.tuinity.util.maplist.IteratorSafeOrderedReferenceSet; ++import net.minecraft.server.level.WorldServer; +import net.minecraft.world.level.chunk.Chunk; +import net.minecraft.server.MinecraftServer; +import org.apache.logging.log4j.Level; ++import org.bukkit.command.Command; ++import org.bukkit.command.CommandSender; + +import java.util.concurrent.ConcurrentLinkedQueue; +import java.util.concurrent.ForkJoinPool; @@ -81,6 +107,28 @@ index 0000000000000000000000000000000000000000..ae7c5430b4f5970ede602bb234b5ffce + */ +public class TrackQueue { + ++ public static class TrackQueueDebugCommand extends Command { ++ protected TrackQueueDebugCommand() { ++ super("trackqueuedebug"); ++ } ++ ++ public static void register() { ++ MinecraftServer.getServer().server.getCommandMap().register("trackqueuedebug", "Airplane", new TrackQueueDebugCommand()); ++ } ++ ++ @Override ++ public boolean execute(CommandSender sender, String commandLabel, String[] args) { ++ if (!sender.isOp()) { ++ return false; ++ } ++ for (WorldServer world : MinecraftServer.getServer().getWorlds()) { ++ IteratorSafeOrderedReferenceSet chunks = world.getChunkProvider().entityTickingChunks; ++ sender.sendMessage(world.getWorld().getName() + ": " + chunks.size() + " / " + chunks.getListSize() + " (iterators: " + chunks.iteratorCount + ")"); ++ } ++ return true; ++ } ++ } ++ + private final IteratorSafeOrderedReferenceSet chunks; + private final ForkJoinPool pool = new ForkJoinPool(Math.max(4, Runtime.getRuntime().availableProcessors() >> 2)); + private final AtomicInteger taskIndex = new AtomicInteger(); @@ -149,6 +197,19 @@ index 0000000000000000000000000000000000000000..ae7c5430b4f5970ede602bb234b5ffce + } + +} +diff --git a/src/main/java/net/minecraft/server/level/ChunkProviderServer.java b/src/main/java/net/minecraft/server/level/ChunkProviderServer.java +index 207a9c3928aad7c6e89a120b54d87e003ebd232c..424cd048f905cd0ed3f7a4545a26ffde8da1f91f 100644 +--- a/src/main/java/net/minecraft/server/level/ChunkProviderServer.java ++++ b/src/main/java/net/minecraft/server/level/ChunkProviderServer.java +@@ -388,7 +388,7 @@ public class ChunkProviderServer extends IChunkProvider { + } + + final com.tuinity.tuinity.util.maplist.IteratorSafeOrderedReferenceSet tickingChunks = new com.tuinity.tuinity.util.maplist.IteratorSafeOrderedReferenceSet<>(4096, 0.75f, 4096, 0.15, true); +- final com.tuinity.tuinity.util.maplist.IteratorSafeOrderedReferenceSet entityTickingChunks = new com.tuinity.tuinity.util.maplist.IteratorSafeOrderedReferenceSet<>(4096, 0.75f, 4096, 0.15, true); ++ public final com.tuinity.tuinity.util.maplist.IteratorSafeOrderedReferenceSet entityTickingChunks = new com.tuinity.tuinity.util.maplist.IteratorSafeOrderedReferenceSet<>(4096, 0.75f, 4096, 0.15, true); // Airplane - public for debug + // Tuinity end + + public ChunkProviderServer(WorldServer worldserver, Convertable.ConversionSession convertable_conversionsession, DataFixer datafixer, DefinedStructureManager definedstructuremanager, Executor executor, ChunkGenerator chunkgenerator, int i, boolean flag, WorldLoadListener worldloadlistener, Supplier supplier) { diff --git a/src/main/java/net/minecraft/server/level/EntityPlayer.java b/src/main/java/net/minecraft/server/level/EntityPlayer.java index 59989db6dcf96a8ab5a75775bb588c31cec3418a..534c7266fe9d6f60b74a71e5e61ed248e515dffd 100644 --- a/src/main/java/net/minecraft/server/level/EntityPlayer.java @@ -371,7 +432,7 @@ index d7eede51f1c4ebbe8e00b16efd6331c87db53bb4..585dbb250d975d2e9c34af26b9d5927c if (playerchunk != null && playerchunk.getSendingChunk() != null && PlayerChunkMap.this.playerChunkManager.isChunkSent(entityplayer, MathHelper.floor(this.tracker.locX()) >> 4, MathHelper.floor(this.tracker.locZ()) >> 4)) { // Paper - no-tick view distance // Tuinity - don't broadcast in chunks the player hasn't received flag1 = PlayerChunkMap.b(chunkcoordintpair, entityplayer, false) <= PlayerChunkMap.this.viewDistance; diff --git a/src/main/java/net/minecraft/world/level/chunk/Chunk.java b/src/main/java/net/minecraft/world/level/chunk/Chunk.java -index c987dff9660469bf5144ef07e0d13fbfea31e7dd..506c75013831a01e323a43ac94986600b8433e11 100644 +index 7474c070598bc093e06f02f19d49f3a6fa6b3d4e..c07fb5ca761c0f2067bd103026ded618a8620947 100644 --- a/src/main/java/net/minecraft/world/level/chunk/Chunk.java +++ b/src/main/java/net/minecraft/world/level/chunk/Chunk.java @@ -111,6 +111,26 @@ public class Chunk implements IChunkAccess { diff --git a/patches/Purpur/patches/server/0001-Rebrand.patch b/patches/Purpur/patches/server/0002-Rebrand.patch similarity index 89% rename from patches/Purpur/patches/server/0001-Rebrand.patch rename to patches/Purpur/patches/server/0002-Rebrand.patch index 6448dece..6d373dd5 100644 --- a/patches/Purpur/patches/server/0001-Rebrand.patch +++ b/patches/Purpur/patches/server/0002-Rebrand.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Rebrand diff --git a/pom.xml b/pom.xml -index fc2c3714b6c772d67e258be269aa92dda80cdb12..cf6e53e9f483d21b17e2782816be4403fa5be717 100644 +index 988a4464b1c84f7aa973269f1c109fb49b1b4d4b..9d9ea5cff8a07c445837de74b3f887316cd79772 100644 --- a/pom.xml +++ b/pom.xml @@ -27,8 +27,10 @@ @@ -21,6 +21,35 @@ index fc2c3714b6c772d67e258be269aa92dda80cdb12..cf6e53e9f483d21b17e2782816be4403 ${project.version} compile +@@ -181,6 +183,11 @@ + jitpack.io + https://jitpack.io + ++ ++ ++ purpur-snapshots ++ https://repo.pl3x.net/ ++ + + + +@@ -360,8 +367,15 @@ + + org.eclipse.jdt + ecj +- 3.24.0 ++ ++ 3.25.0 ++ ++ ++ org.jetbrains.kotlin ++ kotlin-stdlib ++ 1.4.33-SNAPSHOT + ++ + + + diff --git a/src/main/java/com/destroystokyo/paper/console/PaperConsole.java b/src/main/java/com/destroystokyo/paper/console/PaperConsole.java index 89eeb9d202405747409e65fcf226d95379987e29..4d9e685c691a37078ff7452e50ab8c13999dbe10 100644 --- a/src/main/java/com/destroystokyo/paper/console/PaperConsole.java @@ -60,7 +89,7 @@ index 3bc5cd1e53dd7c94b948e7f57f0dc8e073e349b0..87891161f5b06bb8be0e2016b490484e throwable = throwable1; throw throwable1; diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 7cbbc1b1161f26f22a7f7832395af0d4a781cb1a..9301d93ffb5a961cb68a5c37c30b656087c1b45c 100644 +index ca10d901ebd56bdee54f3c8cf607a5a34cd79f32..4f602f0448585b95b8b2b05006f0fa9f9c57ba43 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java @@ -1636,7 +1636,7 @@ public abstract class MinecraftServer extends IAsyncTaskHandlerReentrant { + GraphData data = RAMGraph.DATA.peekLast(); + Vector vector = new Vector<>(); + +- double[] tps = new double[] {server.tps1.getAverage(), server.tps5.getAverage(), server.tps15.getAverage()}; ++ double[] tps = new double[] {server.tps5s.getAverage(), server.tps1.getAverage(), server.tps5.getAverage(), server.tps15.getAverage()}; // Purpur + String[] tpsAvg = new String[tps.length]; + + for ( int g = 0; g < tps.length; g++) { +@@ -67,7 +67,7 @@ public class RAMDetails extends JList { + vector.add("Memory use: " + (data.getUsedMem() / 1024L / 1024L) + " mb (" + (data.getFree() * 100L / data.getMax()) + "% free)"); + vector.add("Heap: " + (data.getTotal() / 1024L / 1024L) + " / " + (data.getMax() / 1024L / 1024L) + " mb"); + vector.add("Avg tick: " + DECIMAL_FORMAT.format(getAverage(server.getTickTimes())) + " ms"); +- vector.add("TPS from last 1m, 5m, 15m: " + String.join(", ", tpsAvg)); ++ vector.add("TPS from last 5s, 1m, 5m, 15m: " + String.join(", ", tpsAvg)); // Purpur + + setListData(vector); + } diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 5367c3b7bdfb6951986e5c844fb978f42a0bfec5..c6c4349954cb302e933739870814f54e426bd825 100644 +index 9cc171e17e0d5d8f60a6d229eb2d39fb9181412f..fd32bd05973785c4fc64849a8b7a96551a3223b9 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java @@ -278,7 +278,7 @@ public abstract class MinecraftServer extends IAsyncTaskHandlerReentrant void mergeSortedSets(final java.util.function.Consumer consumer, final java.util.Comparator comparator, final java.util.SortedSet...sets) { final ObjectRBTreeSet all = new ObjectRBTreeSet<>(comparator); diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 2d567bda66f010d2e2eac9fe343196901ad16a1c..6a7fed72bdf9c576170591359e78f943e1523e43 100644 +index e3253796c70b990e000ed1073f4070fe07a3f845..dda93749eef9cd63e47ffe269b839512fe4db695 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java @@ -267,6 +267,7 @@ public abstract class MinecraftServer extends IAsyncTaskHandlerReentrant>>> iterator = this.tickets.long2ObjectEntrySet().fastIterator(); iterator.hasNext();) { diff --git a/src/main/java/net/minecraft/server/level/ChunkProviderServer.java b/src/main/java/net/minecraft/server/level/ChunkProviderServer.java -index a755ef31627ad398c152c2bd3340855da4fa3a93..e9f66fbde9a70779600ff6d15b43a93347b9f1e8 100644 +index e9b236bb95985ba0806a3d27d705ac61bce55ea5..c5038aa66703484a9243579ba4a6c92d138fc388 100644 --- a/src/main/java/net/minecraft/server/level/ChunkProviderServer.java +++ b/src/main/java/net/minecraft/server/level/ChunkProviderServer.java @@ -1223,6 +1223,7 @@ public class ChunkProviderServer extends IChunkProvider { @@ -256,10 +256,10 @@ index f3d6811156e68040106f1d027a10ea33b5646b05..e7cd6392d722d0e13b86b57d70946b18 this.noTickViewDistance = viewDistance; diff --git a/src/main/java/net/minecraft/server/level/WorldServer.java b/src/main/java/net/minecraft/server/level/WorldServer.java -index e67c57573ea3be869fecb7a00de8157e3f5437d1..d7399bc4a4c8ec0712dbe8b909bf5ef1fafa75db 100644 +index 58528d2b5e30b0436b93213ba31d1777fe3e953e..392e0638fea678c5eddaca0cbed7d84dd41c30ed 100644 --- a/src/main/java/net/minecraft/server/level/WorldServer.java +++ b/src/main/java/net/minecraft/server/level/WorldServer.java -@@ -1774,6 +1774,7 @@ public class WorldServer extends World implements GeneratorAccessSeed { +@@ -1773,6 +1773,7 @@ public class WorldServer extends World implements GeneratorAccessSeed { @Override public void notify(BlockPosition blockposition, IBlockData iblockdata, IBlockData iblockdata1, int i) { @@ -268,7 +268,7 @@ index e67c57573ea3be869fecb7a00de8157e3f5437d1..d7399bc4a4c8ec0712dbe8b909bf5ef1 if(this.paperConfig.updatePathfindingOnBlockUpdate) { // Paper - option to disable pathfinding updates VoxelShape voxelshape = iblockdata.getCollisionShape(this, blockposition); diff --git a/src/main/java/net/minecraft/world/level/World.java b/src/main/java/net/minecraft/world/level/World.java -index 983e61051b7a8a8f5094cee8de9b8ca8c072fc68..6ec5d99dffa26b9a94f59340ba9498baf8bc2015 100644 +index 32b6de119c1ee27be0be42c0a0cdb4dd741a4c36..74894282575d12f25ba4968abf873d3a346529b7 100644 --- a/src/main/java/net/minecraft/world/level/World.java +++ b/src/main/java/net/minecraft/world/level/World.java @@ -423,6 +423,7 @@ public abstract class World implements GeneratorAccess, AutoCloseable { diff --git a/patches/Tuinity/patches/server/0009-Delay-chunk-unloads.patch b/patches/Tuinity/patches/server/0009-Delay-chunk-unloads.patch index 256508d9..b2a2991b 100644 --- a/patches/Tuinity/patches/server/0009-Delay-chunk-unloads.patch +++ b/patches/Tuinity/patches/server/0009-Delay-chunk-unloads.patch @@ -247,7 +247,7 @@ index 3c804c7b20a14ea6e510810e2be10c1cc89ff5c1..47da7efffde2e6d63c1a064b950abf81 return new TicketType<>(s, comparator, 0L); } diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java -index 16567619d7ca84a997ef46417d72f92e6db6993d..494e3b65880a5a5ced4adc8b4d5a51d2e78a51b0 100644 +index e739b4f8a7b8785ceb11c553bd27e2fe0e64a4bb..42babc6dc316374981e4a5e813d38645927e982d 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java @@ -505,6 +505,7 @@ public class CraftWorld implements World { diff --git a/patches/Tuinity/patches/server/0013-Per-World-Spawn-Limits.patch b/patches/Tuinity/patches/server/0013-Per-World-Spawn-Limits.patch index 53d9a975..f1bf5972 100644 --- a/patches/Tuinity/patches/server/0013-Per-World-Spawn-Limits.patch +++ b/patches/Tuinity/patches/server/0013-Per-World-Spawn-Limits.patch @@ -35,7 +35,7 @@ index 5aa558bd05c4ab735730263f220478c36a4ba0fd..6473b951788a3ecbeee4811ea0288ff4 } \ No newline at end of file diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java -index 494e3b65880a5a5ced4adc8b4d5a51d2e78a51b0..77057470addd6e6934bd6c32b0c36dea11bbb95d 100644 +index 42babc6dc316374981e4a5e813d38645927e982d..68e2f318780f613a85fc85e08d25f00e0c74ada3 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java @@ -342,6 +342,14 @@ public class CraftWorld implements World { diff --git a/patches/Tuinity/patches/server/0014-Detail-more-information-in-watchdog-dumps.patch b/patches/Tuinity/patches/server/0014-Detail-more-information-in-watchdog-dumps.patch index a31f7609..f6191528 100644 --- a/patches/Tuinity/patches/server/0014-Detail-more-information-in-watchdog-dumps.patch +++ b/patches/Tuinity/patches/server/0014-Detail-more-information-in-watchdog-dumps.patch @@ -74,10 +74,10 @@ index 67d8fe8ad036a9252c774bb6a914c8ec79981876..71a000edfab27c9965d1929af7858282 }); throw CancelledPacketHandleException.INSTANCE; diff --git a/src/main/java/net/minecraft/server/level/WorldServer.java b/src/main/java/net/minecraft/server/level/WorldServer.java -index d7399bc4a4c8ec0712dbe8b909bf5ef1fafa75db..2dc399e7aab930b062d7fdac354de7b7188f2369 100644 +index 392e0638fea678c5eddaca0cbed7d84dd41c30ed..455de3a3ce619a0b6116b9d84e0a1a05938bfea0 100644 --- a/src/main/java/net/minecraft/server/level/WorldServer.java +++ b/src/main/java/net/minecraft/server/level/WorldServer.java -@@ -1014,7 +1014,26 @@ public class WorldServer extends World implements GeneratorAccessSeed { +@@ -1013,7 +1013,26 @@ public class WorldServer extends World implements GeneratorAccessSeed { } @@ -104,7 +104,7 @@ index d7399bc4a4c8ec0712dbe8b909bf5ef1fafa75db..2dc399e7aab930b062d7fdac354de7b7 if (!(entity instanceof EntityHuman) && !this.getChunkProvider().a(entity)) { this.chunkCheck(entity); } else { -@@ -1067,6 +1086,13 @@ public class WorldServer extends World implements GeneratorAccessSeed { +@@ -1066,6 +1085,13 @@ public class WorldServer extends World implements GeneratorAccessSeed { //} finally { timer.stopTiming(); } // Paper - timings - move up } diff --git a/patches/Tuinity/patches/server/0015-Execute-chunk-tasks-mid-tick.patch b/patches/Tuinity/patches/server/0015-Execute-chunk-tasks-mid-tick.patch index 33ab9fbc..05a72bed 100644 --- a/patches/Tuinity/patches/server/0015-Execute-chunk-tasks-mid-tick.patch +++ b/patches/Tuinity/patches/server/0015-Execute-chunk-tasks-mid-tick.patch @@ -18,7 +18,7 @@ index 4666d6582535d6e49c5bd40d4fcdcdfe07590aa9..b870cca05f0ba354e6976a7051123563 // re-schedule eventually toTick.tickState = STATE_SCHEDULED; diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index b7a452b51ee4382e03d7879f511a7c34b415925a..41c8646aef9a8df2f99319c2a8e76d850bdcc1f6 100644 +index f6d443d0193ceea1b3248b66cb198be04822e9e7..5c909b776e111d6bd9e2429f25fed121bb391219 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java @@ -1105,7 +1105,7 @@ public abstract class MinecraftServer extends IAsyncTaskHandlerReentrant getEntities(@Nullable Entity entity, AxisAlignedBB axisalignedbb, @Nullable Predicate predicate) { this.getMethodProfiler().c("getEntities"); diff --git a/src/main/java/net/minecraft/world/level/chunk/Chunk.java b/src/main/java/net/minecraft/world/level/chunk/Chunk.java -index 34a9f7b2f998f77b1279516cd09397ab6c2ac1cc..9293cb1dd27bb3b797e29f6edddf22ba80ff4134 100644 +index 0727b12b5ff146b4efa9204bf4f495f2f1aa20b9..a0b732a68d9961fc8a42e2aaf0d513605552bd98 100644 --- a/src/main/java/net/minecraft/world/level/chunk/Chunk.java +++ b/src/main/java/net/minecraft/world/level/chunk/Chunk.java @@ -137,6 +137,56 @@ public class Chunk implements IChunkAccess { diff --git a/patches/Tuinity/patches/server/0025-Highly-optimise-single-and-multi-AABB-VoxelShapes-an.patch b/patches/Tuinity/patches/server/0025-Highly-optimise-single-and-multi-AABB-VoxelShapes-an.patch index a727a1dc..be49f6c5 100644 --- a/patches/Tuinity/patches/server/0025-Highly-optimise-single-and-multi-AABB-VoxelShapes-an.patch +++ b/patches/Tuinity/patches/server/0025-Highly-optimise-single-and-multi-AABB-VoxelShapes-an.patch @@ -248,7 +248,7 @@ index 006e7076932f6be576a64da09c4d84ca4a15f5dd..e832ea0497b2d6af7556bda7f6728e72 0, 2, 60L, TimeUnit.SECONDS, new LinkedBlockingQueue(), diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 41c8646aef9a8df2f99319c2a8e76d850bdcc1f6..6b6a90dc07ab126a21d011d1a831019ec1456834 100644 +index 5c909b776e111d6bd9e2429f25fed121bb391219..d7e1c830764973c31dff8311a79e617d8f283a53 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java @@ -1441,6 +1441,8 @@ public abstract class MinecraftServer extends IAsyncTaskHandlerReentrant { net.minecraft.world.level.chunk.Chunk chunk = (net.minecraft.world.level.chunk.Chunk) either.left().orElse(null); diff --git a/patches/Tuinity/patches/server/0033-Allow-Entities-to-be-removed-from-a-world-while-tick.patch b/patches/Tuinity/patches/server/0033-Allow-Entities-to-be-removed-from-a-world-while-tick.patch index 4b8a5889..82e7c51c 100644 --- a/patches/Tuinity/patches/server/0033-Allow-Entities-to-be-removed-from-a-world-while-tick.patch +++ b/patches/Tuinity/patches/server/0033-Allow-Entities-to-be-removed-from-a-world-while-tick.patch @@ -9,7 +9,7 @@ issues where teleporting players across worlds while ticking. Also allows us to run mid tick while ticking entities. diff --git a/src/main/java/net/minecraft/server/level/WorldServer.java b/src/main/java/net/minecraft/server/level/WorldServer.java -index f696cc065c7058550a10705f0f827872be11c54d..e563589ac5622990dc6091f69fde79878d4c8d94 100644 +index 97783a1b857e6c088fc3bab9226dc0fe648ac944..1999e82f1272c993677d4fb3884520fe23dbb50b 100644 --- a/src/main/java/net/minecraft/server/level/WorldServer.java +++ b/src/main/java/net/minecraft/server/level/WorldServer.java @@ -174,7 +174,7 @@ public class WorldServer extends World implements GeneratorAccessSeed { @@ -63,7 +63,7 @@ index f696cc065c7058550a10705f0f827872be11c54d..e563589ac5622990dc6091f69fde7987 this.tickingEntities = false; // Paper start for (java.lang.Runnable run : this.afterEntityTickingTasks) { -@@ -1777,7 +1777,7 @@ public class WorldServer extends World implements GeneratorAccessSeed { +@@ -1776,7 +1776,7 @@ public class WorldServer extends World implements GeneratorAccessSeed { Entity entity = (Entity) iterator.next(); if (!(entity instanceof EntityPlayer)) { @@ -72,7 +72,7 @@ index f696cc065c7058550a10705f0f827872be11c54d..e563589ac5622990dc6091f69fde7987 throw (IllegalStateException) SystemUtils.c((Throwable) (new IllegalStateException("Removing entity while ticking!"))); } -@@ -1805,6 +1805,7 @@ public class WorldServer extends World implements GeneratorAccessSeed { +@@ -1804,6 +1804,7 @@ public class WorldServer extends World implements GeneratorAccessSeed { public void unregisterEntity(Entity entity) { org.spigotmc.AsyncCatcher.catchOp("entity unregister"); // Spigot @@ -80,7 +80,7 @@ index f696cc065c7058550a10705f0f827872be11c54d..e563589ac5622990dc6091f69fde7987 // Paper start - fix entity registration issues if (entity instanceof EntityComplexPart) { // Usually this is a no-op for complex parts, and ID's should be removed, but go ahead and remove it anyways -@@ -1871,12 +1872,16 @@ public class WorldServer extends World implements GeneratorAccessSeed { +@@ -1870,12 +1871,16 @@ public class WorldServer extends World implements GeneratorAccessSeed { this.getScoreboard().a(entity); // CraftBukkit start - SPIGOT-5278 if (entity instanceof EntityDrowned) { @@ -100,7 +100,7 @@ index f696cc065c7058550a10705f0f827872be11c54d..e563589ac5622990dc6091f69fde7987 } new com.destroystokyo.paper.event.entity.EntityRemoveFromWorldEvent(entity.getBukkitEntity()).callEvent(); // Paper - fire while valid entity.valid = false; // CraftBukkit -@@ -1892,7 +1897,7 @@ public class WorldServer extends World implements GeneratorAccessSeed { +@@ -1891,7 +1896,7 @@ public class WorldServer extends World implements GeneratorAccessSeed { return; } // Paper end @@ -109,7 +109,7 @@ index f696cc065c7058550a10705f0f827872be11c54d..e563589ac5622990dc6091f69fde7987 if (!entity.isQueuedForRegister) { // Paper this.entitiesToAdd.add(entity); entity.isQueuedForRegister = true; // Paper -@@ -1900,6 +1905,7 @@ public class WorldServer extends World implements GeneratorAccessSeed { +@@ -1899,6 +1904,7 @@ public class WorldServer extends World implements GeneratorAccessSeed { } else { entity.isQueuedForRegister = false; // Paper this.entitiesById.put(entity.getId(), entity); @@ -117,7 +117,7 @@ index f696cc065c7058550a10705f0f827872be11c54d..e563589ac5622990dc6091f69fde7987 if (entity instanceof EntityEnderDragon) { EntityComplexPart[] aentitycomplexpart = ((EntityEnderDragon) entity).eJ(); int i = aentitycomplexpart.length; -@@ -1908,6 +1914,7 @@ public class WorldServer extends World implements GeneratorAccessSeed { +@@ -1907,6 +1913,7 @@ public class WorldServer extends World implements GeneratorAccessSeed { EntityComplexPart entitycomplexpart = aentitycomplexpart[j]; this.entitiesById.put(entitycomplexpart.getId(), entitycomplexpart); @@ -125,7 +125,7 @@ index f696cc065c7058550a10705f0f827872be11c54d..e563589ac5622990dc6091f69fde7987 } } -@@ -1932,12 +1939,16 @@ public class WorldServer extends World implements GeneratorAccessSeed { +@@ -1931,12 +1938,16 @@ public class WorldServer extends World implements GeneratorAccessSeed { // this.getChunkProvider().addEntity(entity); // Paper - moved down below valid=true // CraftBukkit start - SPIGOT-5278 if (entity instanceof EntityDrowned) { @@ -145,7 +145,7 @@ index f696cc065c7058550a10705f0f827872be11c54d..e563589ac5622990dc6091f69fde7987 } entity.valid = true; // CraftBukkit this.getChunkProvider().addEntity(entity); // Paper - from above to be below valid=true -@@ -1953,7 +1964,7 @@ public class WorldServer extends World implements GeneratorAccessSeed { +@@ -1952,7 +1963,7 @@ public class WorldServer extends World implements GeneratorAccessSeed { } public void removeEntity(Entity entity) { @@ -154,7 +154,7 @@ index f696cc065c7058550a10705f0f827872be11c54d..e563589ac5622990dc6091f69fde7987 throw (IllegalStateException) SystemUtils.c((Throwable) (new IllegalStateException("Removing entity while ticking!"))); } else { this.removeEntityFromChunk(entity); -@@ -2057,7 +2068,9 @@ public class WorldServer extends World implements GeneratorAccessSeed { +@@ -2056,7 +2067,9 @@ public class WorldServer extends World implements GeneratorAccessSeed { if (VoxelShapes.c(voxelshape, voxelshape1, OperatorBoolean.NOT_SAME)) { boolean wasTicking = this.tickingEntities; this.tickingEntities = true; // Paper @@ -165,7 +165,7 @@ index f696cc065c7058550a10705f0f827872be11c54d..e563589ac5622990dc6091f69fde7987 while (iterator.hasNext()) { // CraftBukkit start - fix SPIGOT-6362 -@@ -2077,6 +2090,9 @@ public class WorldServer extends World implements GeneratorAccessSeed { +@@ -2076,6 +2089,9 @@ public class WorldServer extends World implements GeneratorAccessSeed { navigationabstract.b(blockposition); } } diff --git a/patches/Tuinity/patches/server/0034-Prevent-unload-calls-removing-tickets-for-sync-loads.patch b/patches/Tuinity/patches/server/0034-Prevent-unload-calls-removing-tickets-for-sync-loads.patch index 0ed3595e..c1427b05 100644 --- a/patches/Tuinity/patches/server/0034-Prevent-unload-calls-removing-tickets-for-sync-loads.patch +++ b/patches/Tuinity/patches/server/0034-Prevent-unload-calls-removing-tickets-for-sync-loads.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Prevent unload() calls removing tickets for sync loads diff --git a/src/main/java/net/minecraft/server/level/ChunkProviderServer.java b/src/main/java/net/minecraft/server/level/ChunkProviderServer.java -index b44b1b79a38ac2c15666e5b04e16f1bed67d3d89..a68803eaf773be992b5fb9facba7add84c5b41ad 100644 +index 3560ac0c554b8e60c1bc961766bcf942ba6dd963..aa673cf8a11c17faaa1520eaa9329200453a53ff 100644 --- a/src/main/java/net/minecraft/server/level/ChunkProviderServer.java +++ b/src/main/java/net/minecraft/server/level/ChunkProviderServer.java @@ -734,6 +734,8 @@ public class ChunkProviderServer extends IChunkProvider { diff --git a/patches/Tuinity/patches/server/0038-Distance-manager-tick-timings.patch b/patches/Tuinity/patches/server/0038-Distance-manager-tick-timings.patch index c7d24732..fc595a61 100644 --- a/patches/Tuinity/patches/server/0038-Distance-manager-tick-timings.patch +++ b/patches/Tuinity/patches/server/0038-Distance-manager-tick-timings.patch @@ -19,7 +19,7 @@ index 9d64fffd10ce21a26541198b0c2fd8f0c77f47f1..67980e1dc186c0b458eca9f00acfea7d private static final Map, String> taskNameCache = new MapMaker().weakKeys().makeMap(); diff --git a/src/main/java/net/minecraft/server/level/ChunkProviderServer.java b/src/main/java/net/minecraft/server/level/ChunkProviderServer.java -index a68803eaf773be992b5fb9facba7add84c5b41ad..a6185a17606785f1b4893d7d32e0cf1f32d00f4f 100644 +index aa673cf8a11c17faaa1520eaa9329200453a53ff..9d26ca0ed8a8ad33091ee5b649289f2fae6c6f74 100644 --- a/src/main/java/net/minecraft/server/level/ChunkProviderServer.java +++ b/src/main/java/net/minecraft/server/level/ChunkProviderServer.java @@ -840,6 +840,7 @@ public class ChunkProviderServer extends IChunkProvider { diff --git a/patches/Tuinity/patches/server/0043-Do-not-allow-ticket-level-changes-while-unloading-pl.patch b/patches/Tuinity/patches/server/0043-Do-not-allow-ticket-level-changes-while-unloading-pl.patch index a59853b3..a0cb2771 100644 --- a/patches/Tuinity/patches/server/0043-Do-not-allow-ticket-level-changes-while-unloading-pl.patch +++ b/patches/Tuinity/patches/server/0043-Do-not-allow-ticket-level-changes-while-unloading-pl.patch @@ -8,7 +8,7 @@ Sync loading the chunk at this stage would cause it to load older data, as well as screwing our region state. diff --git a/src/main/java/net/minecraft/server/level/ChunkProviderServer.java b/src/main/java/net/minecraft/server/level/ChunkProviderServer.java -index a6185a17606785f1b4893d7d32e0cf1f32d00f4f..a2917fd52d9cde535ca3e6422b6742711584bb09 100644 +index 9d26ca0ed8a8ad33091ee5b649289f2fae6c6f74..d1fa4602f2f443c19ff69bfbd39cacdb4cbaf2a3 100644 --- a/src/main/java/net/minecraft/server/level/ChunkProviderServer.java +++ b/src/main/java/net/minecraft/server/level/ChunkProviderServer.java @@ -840,6 +840,7 @@ public class ChunkProviderServer extends IChunkProvider { diff --git a/patches/Tuinity/patches/server/0044-Make-sure-inlined-getChunkAt-has-inlined-logic-for-l.patch b/patches/Tuinity/patches/server/0044-Make-sure-inlined-getChunkAt-has-inlined-logic-for-l.patch index 3f918cc8..7636e2fc 100644 --- a/patches/Tuinity/patches/server/0044-Make-sure-inlined-getChunkAt-has-inlined-logic-for-l.patch +++ b/patches/Tuinity/patches/server/0044-Make-sure-inlined-getChunkAt-has-inlined-logic-for-l.patch @@ -13,7 +13,7 @@ Paper recently reverted this optimisation, so it's been reintroduced here. diff --git a/src/main/java/net/minecraft/world/level/World.java b/src/main/java/net/minecraft/world/level/World.java -index 8d3dbf064df74434988b3c60fcb2b72bece37b7e..6b937f4300b445c5e0a9fd82db7e5dc01e8c6cfe 100644 +index a0ff1e87224f418a387656c8793151af7929454a..33b7d8247273d7744a241285f8732847d01e8892 100644 --- a/src/main/java/net/minecraft/world/level/World.java +++ b/src/main/java/net/minecraft/world/level/World.java @@ -349,6 +349,15 @@ public abstract class World implements GeneratorAccess, AutoCloseable { diff --git a/patches/Tuinity/patches/server/0046-Optimise-closest-entity-lookup.patch b/patches/Tuinity/patches/server/0046-Optimise-closest-entity-lookup.patch index 18622d12..778a34b2 100644 --- a/patches/Tuinity/patches/server/0046-Optimise-closest-entity-lookup.patch +++ b/patches/Tuinity/patches/server/0046-Optimise-closest-entity-lookup.patch @@ -613,7 +613,7 @@ index 69cc7664089c505eb5cfdc437f16b91e9713eada..7c9ed41ae67bce0e5e45b9c091180ca3 } diff --git a/src/main/java/net/minecraft/world/level/World.java b/src/main/java/net/minecraft/world/level/World.java -index 6b937f4300b445c5e0a9fd82db7e5dc01e8c6cfe..9118616e00220715339e31798e29a1871fafbea5 100644 +index 33b7d8247273d7744a241285f8732847d01e8892..23db2bad910795b1335e247521d383c2dd87a23b 100644 --- a/src/main/java/net/minecraft/world/level/World.java +++ b/src/main/java/net/minecraft/world/level/World.java @@ -1246,7 +1246,7 @@ public abstract class World implements GeneratorAccess, AutoCloseable { @@ -742,7 +742,7 @@ index 6b937f4300b445c5e0a9fd82db7e5dc01e8c6cfe..9118616e00220715339e31798e29a187 public abstract Entity getEntity(int i); diff --git a/src/main/java/net/minecraft/world/level/chunk/Chunk.java b/src/main/java/net/minecraft/world/level/chunk/Chunk.java -index 9293cb1dd27bb3b797e29f6edddf22ba80ff4134..d2f2efa21f8aec3515ae0c4491956916c9ed9500 100644 +index a0b732a68d9961fc8a42e2aaf0d513605552bd98..eb1e4a6c89b79fa1e2ec367eba441970c694f2d1 100644 --- a/src/main/java/net/minecraft/world/level/chunk/Chunk.java +++ b/src/main/java/net/minecraft/world/level/chunk/Chunk.java @@ -138,54 +138,24 @@ public class Chunk implements IChunkAccess { @@ -842,7 +842,7 @@ index 9293cb1dd27bb3b797e29f6edddf22ba80ff4134..d2f2efa21f8aec3515ae0c4491956916 return; } if (entity instanceof EntityItem) { -@@ -972,116 +945,18 @@ public class Chunk implements IChunkAccess { +@@ -980,116 +953,18 @@ public class Chunk implements IChunkAccess { } public void a(@Nullable Entity entity, AxisAlignedBB axisalignedbb, List list, @Nullable Predicate predicate) { diff --git a/patches/Tuinity/patches/server/0047-Optimise-nearby-player-lookups.patch b/patches/Tuinity/patches/server/0047-Optimise-nearby-player-lookups.patch index 35695202..2077218c 100644 --- a/patches/Tuinity/patches/server/0047-Optimise-nearby-player-lookups.patch +++ b/patches/Tuinity/patches/server/0047-Optimise-nearby-player-lookups.patch @@ -97,7 +97,7 @@ index 3b727fcb05074dea7cc1689e8589d4f93d5ccceb..7897fe870234ddef12926d855a3f060f // Paper start - Chunk Prioritization public void queueHolderUpdate(PlayerChunk playerchunk) { diff --git a/src/main/java/net/minecraft/server/level/WorldServer.java b/src/main/java/net/minecraft/server/level/WorldServer.java -index e563589ac5622990dc6091f69fde79878d4c8d94..a7f399994fac91a02e608ab0cae99c82a91e4ab4 100644 +index 1999e82f1272c993677d4fb3884520fe23dbb50b..61f60a957c298413e88df4e2e499855d6ada8204 100644 --- a/src/main/java/net/minecraft/server/level/WorldServer.java +++ b/src/main/java/net/minecraft/server/level/WorldServer.java @@ -414,6 +414,107 @@ public class WorldServer extends World implements GeneratorAccessSeed { @@ -308,7 +308,7 @@ index 24771c3522ea74ac12058591137eafc21adf3762..b3c73c6b4cffa20813355c5f2132fe3e } else if (worldserver.getSpawn().a((IPosition) (new Vec3D((double) blockposition_mutableblockposition.getX() + 0.5D, (double) blockposition_mutableblockposition.getY(), (double) blockposition_mutableblockposition.getZ() + 0.5D)), 24.0D)) { return false; diff --git a/src/main/java/net/minecraft/world/level/World.java b/src/main/java/net/minecraft/world/level/World.java -index 9118616e00220715339e31798e29a1871fafbea5..1fab6ec02c0aceb56baea5353dbd85b580caf454 100644 +index 23db2bad910795b1335e247521d383c2dd87a23b..a802c45538943b570ca0daa3a40607dc80e696eb 100644 --- a/src/main/java/net/minecraft/world/level/World.java +++ b/src/main/java/net/minecraft/world/level/World.java @@ -183,6 +183,65 @@ public abstract class World implements GeneratorAccess, AutoCloseable { @@ -378,7 +378,7 @@ index 9118616e00220715339e31798e29a1871fafbea5..1fab6ec02c0aceb56baea5353dbd85b5 this.spigotConfig = new org.spigotmc.SpigotWorldConfig(((net.minecraft.world.level.storage.WorldDataServer) worlddatamutable).getName()); // Spigot this.paperConfig = new com.destroystokyo.paper.PaperWorldConfig(((net.minecraft.world.level.storage.WorldDataServer) worlddatamutable).getName(), this.spigotConfig); // Paper diff --git a/src/main/java/net/minecraft/world/level/chunk/Chunk.java b/src/main/java/net/minecraft/world/level/chunk/Chunk.java -index d2f2efa21f8aec3515ae0c4491956916c9ed9500..ec5770453f2c795f09345f2f89209a66625392f3 100644 +index eb1e4a6c89b79fa1e2ec367eba441970c694f2d1..86d326d40a2957a12dc800560487af4bd272cdcb 100644 --- a/src/main/java/net/minecraft/world/level/chunk/Chunk.java +++ b/src/main/java/net/minecraft/world/level/chunk/Chunk.java @@ -157,6 +157,92 @@ public class Chunk implements IChunkAccess { diff --git a/patches/Tuinity/patches/server/0054-Do-not-load-chunks-during-a-crash-report.patch b/patches/Tuinity/patches/server/0054-Do-not-load-chunks-during-a-crash-report.patch index 6823ce8e..10fbc0c2 100644 --- a/patches/Tuinity/patches/server/0054-Do-not-load-chunks-during-a-crash-report.patch +++ b/patches/Tuinity/patches/server/0054-Do-not-load-chunks-during-a-crash-report.patch @@ -22,7 +22,7 @@ index e50731723d266ba65b2163df2e935afb8b013a93..a6736d15282715d920bab85eb92074cd } value.append("},"); diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java -index 5f83ad77edfa2f7ddd58334a592864185f88e435..89e2ce2e20a9051336c784a48e3b4214379cd77b 100644 +index 8f77a04440a23707d05ad12e40e39af7c2963f69..12f12aeeed79c657659b4bc8651488f1d73d3ef9 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java @@ -720,6 +720,30 @@ public class CraftWorld implements World { diff --git a/patches/Tuinity/patches/server/0055-Improve-abnormal-server-shutdown-process.patch b/patches/Tuinity/patches/server/0055-Improve-abnormal-server-shutdown-process.patch index b9403fdb..988642f8 100644 --- a/patches/Tuinity/patches/server/0055-Improve-abnormal-server-shutdown-process.patch +++ b/patches/Tuinity/patches/server/0055-Improve-abnormal-server-shutdown-process.patch @@ -11,7 +11,7 @@ gui. It looks like during sigint shutdown there can be some deadlock between the server thread and awt shutdown thread here. diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 6b6a90dc07ab126a21d011d1a831019ec1456834..e757cb5c2d50cb3a4dbe50d4726db09ab845fcbb 100644 +index d7e1c830764973c31dff8311a79e617d8f283a53..02d8a8f13d81c47316f704fb700afd0214a5f546 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java @@ -868,10 +868,11 @@ public abstract class MinecraftServer extends IAsyncTaskHandlerReentrant -Date: Tue, 22 Dec 2020 21:12:05 -0800 -Subject: [PATCH] Prevent light queue overfill when no players are online - -block changes don't queue light updates (and they shouldn't) - -diff --git a/src/main/java/net/minecraft/server/level/ChunkProviderServer.java b/src/main/java/net/minecraft/server/level/ChunkProviderServer.java -index a2917fd52d9cde535ca3e6422b6742711584bb09..c1e1b3d53de18579dbe83e7c88d13d44c89fb2d8 100644 ---- a/src/main/java/net/minecraft/server/level/ChunkProviderServer.java -+++ b/src/main/java/net/minecraft/server/level/ChunkProviderServer.java -@@ -1246,7 +1246,7 @@ public class ChunkProviderServer extends IChunkProvider { - if (ChunkProviderServer.this.tickDistanceManager()) { - return true; - } else { -- //ChunkProviderServer.this.lightEngine.queueUpdate(); // Paper - not needed -+ ChunkProviderServer.this.lightEngine.queueUpdate(); // Paper - not needed // Tuinity - prevent queue overflow when no players are in this world - return super.executeNext() || execChunkTask; // Paper - } - } finally { -diff --git a/src/main/java/net/minecraft/server/level/WorldServer.java b/src/main/java/net/minecraft/server/level/WorldServer.java -index a7f399994fac91a02e608ab0cae99c82a91e4ab4..6b5aa91ddc657443580f2cb82c5aff3ee0180fa6 100644 ---- a/src/main/java/net/minecraft/server/level/WorldServer.java -+++ b/src/main/java/net/minecraft/server/level/WorldServer.java -@@ -1277,7 +1277,7 @@ public class WorldServer extends World implements GeneratorAccessSeed { - } - gameprofilerfiller.exit(); - timings.chunkTicksBlocks.stopTiming(); // Paper -- getChunkProvider().getLightEngine().queueUpdate(); // Paper -+ //getChunkProvider().getLightEngine().queueUpdate(); // Paper // Tuinity - no longer needed here, moved into task execution - // Paper end - } - } diff --git a/patches/Tuinity/patches/server/0060-Properly-handle-cancellation-of-projectile-hit-event.patch b/patches/Tuinity/patches/server/0059-Properly-handle-cancellation-of-projectile-hit-event.patch similarity index 100% rename from patches/Tuinity/patches/server/0060-Properly-handle-cancellation-of-projectile-hit-event.patch rename to patches/Tuinity/patches/server/0059-Properly-handle-cancellation-of-projectile-hit-event.patch diff --git a/patches/Tuinity/patches/server/0061-Rewrite-the-light-engine.patch b/patches/Tuinity/patches/server/0060-Rewrite-the-light-engine.patch similarity index 99% rename from patches/Tuinity/patches/server/0061-Rewrite-the-light-engine.patch rename to patches/Tuinity/patches/server/0060-Rewrite-the-light-engine.patch index 2708921e..85e2a746 100644 --- a/patches/Tuinity/patches/server/0061-Rewrite-the-light-engine.patch +++ b/patches/Tuinity/patches/server/0060-Rewrite-the-light-engine.patch @@ -4930,7 +4930,7 @@ index 1122df50a7f9cbc489e8da7a91e9af73476eb148..3738c51b5e673c439d88a7ef7f4614f3 // Tuinity end - delay chunk unloads public static TicketType a(String s, Comparator comparator) { diff --git a/src/main/java/net/minecraft/server/level/WorldServer.java b/src/main/java/net/minecraft/server/level/WorldServer.java -index 6b5aa91ddc657443580f2cb82c5aff3ee0180fa6..6ce29205ba4480b19912a7acd393c4198d6a9e35 100644 +index 61f60a957c298413e88df4e2e499855d6ada8204..53e343a351ff19912c04bfeb6dc731947c9fc3d8 100644 --- a/src/main/java/net/minecraft/server/level/WorldServer.java +++ b/src/main/java/net/minecraft/server/level/WorldServer.java @@ -515,6 +515,13 @@ public class WorldServer extends World implements GeneratorAccessSeed { @@ -5027,7 +5027,7 @@ index a96069c86ef5f5af4820436dd1f24e297bcca73f..0b852fa247c65cb1e889ad4e55886e25 protected final boolean c; private final boolean[] j; diff --git a/src/main/java/net/minecraft/world/level/chunk/Chunk.java b/src/main/java/net/minecraft/world/level/chunk/Chunk.java -index ec5770453f2c795f09345f2f89209a66625392f3..8b73ba51dde43e3ddf40ed863cf286042f139a34 100644 +index 86d326d40a2957a12dc800560487af4bd272cdcb..d6b34c6abebeac8445da3e76f341066952182e2b 100644 --- a/src/main/java/net/minecraft/world/level/chunk/Chunk.java +++ b/src/main/java/net/minecraft/world/level/chunk/Chunk.java @@ -144,6 +144,52 @@ public class Chunk implements IChunkAccess { diff --git a/patches/Tuinity/patches/server/0062-Optimise-WorldServer-notify.patch b/patches/Tuinity/patches/server/0061-Optimise-WorldServer-notify.patch similarity index 97% rename from patches/Tuinity/patches/server/0062-Optimise-WorldServer-notify.patch rename to patches/Tuinity/patches/server/0061-Optimise-WorldServer-notify.patch index 813b4f42..46822c57 100644 --- a/patches/Tuinity/patches/server/0062-Optimise-WorldServer-notify.patch +++ b/patches/Tuinity/patches/server/0061-Optimise-WorldServer-notify.patch @@ -111,7 +111,7 @@ index e30995df572df6135e159d34cd7646fd08db4a5a..b48d419f82f0d9df1f8848d95066bad7 } // Tuiniy end diff --git a/src/main/java/net/minecraft/server/level/WorldServer.java b/src/main/java/net/minecraft/server/level/WorldServer.java -index 6ce29205ba4480b19912a7acd393c4198d6a9e35..4ffe6c1e791f1a8531525bc053b30629fcc30e82 100644 +index 53e343a351ff19912c04bfeb6dc731947c9fc3d8..9061a2b9bffc7f4737871225a678c64f5799e2b8 100644 --- a/src/main/java/net/minecraft/server/level/WorldServer.java +++ b/src/main/java/net/minecraft/server/level/WorldServer.java @@ -1083,6 +1083,15 @@ public class WorldServer extends World implements GeneratorAccessSeed { @@ -145,7 +145,7 @@ index 6ce29205ba4480b19912a7acd393c4198d6a9e35..4ffe6c1e791f1a8531525bc053b30629 gameprofilerfiller.exit(); } -@@ -1516,6 +1532,12 @@ public class WorldServer extends World implements GeneratorAccessSeed { +@@ -1515,6 +1531,12 @@ public class WorldServer extends World implements GeneratorAccessSeed { int i = MathHelper.floor(entity.locX() / 16.0D); int j = Math.min(15, Math.max(0, MathHelper.floor(entity.locY() / 16.0D))); // Paper - stay consistent with chunk add/remove behavior int k = MathHelper.floor(entity.locZ() / 16.0D); @@ -158,7 +158,7 @@ index 6ce29205ba4480b19912a7acd393c4198d6a9e35..4ffe6c1e791f1a8531525bc053b30629 if (!entity.inChunk || entity.chunkX != i || entity.chunkY != j || entity.chunkZ != k) { // Paper start - remove entity if its in a chunk more correctly. -@@ -1525,6 +1547,12 @@ public class WorldServer extends World implements GeneratorAccessSeed { +@@ -1524,6 +1546,12 @@ public class WorldServer extends World implements GeneratorAccessSeed { } // Paper end @@ -171,7 +171,7 @@ index 6ce29205ba4480b19912a7acd393c4198d6a9e35..4ffe6c1e791f1a8531525bc053b30629 if (entity.inChunk && this.isChunkLoaded(entity.chunkX, entity.chunkZ)) { this.getChunkAt(entity.chunkX, entity.chunkZ).a(entity, entity.chunkY); } -@@ -1538,6 +1566,11 @@ public class WorldServer extends World implements GeneratorAccessSeed { +@@ -1537,6 +1565,11 @@ public class WorldServer extends World implements GeneratorAccessSeed { } else { this.getChunkAt(i, k).a(entity); } @@ -183,7 +183,7 @@ index 6ce29205ba4480b19912a7acd393c4198d6a9e35..4ffe6c1e791f1a8531525bc053b30629 } this.getMethodProfiler().exit(); -@@ -2000,9 +2033,64 @@ public class WorldServer extends World implements GeneratorAccessSeed { +@@ -1999,9 +2032,64 @@ public class WorldServer extends World implements GeneratorAccessSeed { // Tuinity end } new com.destroystokyo.paper.event.entity.EntityRemoveFromWorldEvent(entity.getBukkitEntity()).callEvent(); // Paper - fire while valid @@ -248,7 +248,7 @@ index 6ce29205ba4480b19912a7acd393c4198d6a9e35..4ffe6c1e791f1a8531525bc053b30629 private void registerEntity(Entity entity) { org.spigotmc.AsyncCatcher.catchOp("entity register"); // Spigot // Paper start - don't double enqueue entity registration -@@ -2183,16 +2271,26 @@ public class WorldServer extends World implements GeneratorAccessSeed { +@@ -2182,16 +2270,26 @@ public class WorldServer extends World implements GeneratorAccessSeed { VoxelShape voxelshape1 = iblockdata1.getCollisionShape(this, blockposition); if (VoxelShapes.c(voxelshape, voxelshape1, OperatorBoolean.NOT_SAME)) { diff --git a/patches/Tuinity/patches/server/0063-Actually-unload-POI-data.patch b/patches/Tuinity/patches/server/0062-Actually-unload-POI-data.patch similarity index 100% rename from patches/Tuinity/patches/server/0063-Actually-unload-POI-data.patch rename to patches/Tuinity/patches/server/0062-Actually-unload-POI-data.patch diff --git a/patches/Tuinity/patches/server/0064-Send-full-pos-packets-for-hard-colliding-entities.patch b/patches/Tuinity/patches/server/0063-Send-full-pos-packets-for-hard-colliding-entities.patch similarity index 100% rename from patches/Tuinity/patches/server/0064-Send-full-pos-packets-for-hard-colliding-entities.patch rename to patches/Tuinity/patches/server/0063-Send-full-pos-packets-for-hard-colliding-entities.patch diff --git a/patches/Tuinity/patches/server/0065-Fix-chunks-refusing-to-unload-at-low-TPS.patch b/patches/Tuinity/patches/server/0064-Fix-chunks-refusing-to-unload-at-low-TPS.patch similarity index 100% rename from patches/Tuinity/patches/server/0065-Fix-chunks-refusing-to-unload-at-low-TPS.patch rename to patches/Tuinity/patches/server/0064-Fix-chunks-refusing-to-unload-at-low-TPS.patch diff --git a/patches/Tuinity/patches/server/0066-Fix-incorrect-isRealPlayer-init.patch b/patches/Tuinity/patches/server/0065-Fix-incorrect-isRealPlayer-init.patch similarity index 100% rename from patches/Tuinity/patches/server/0066-Fix-incorrect-isRealPlayer-init.patch rename to patches/Tuinity/patches/server/0065-Fix-incorrect-isRealPlayer-init.patch diff --git a/patches/Tuinity/patches/server/0067-Do-not-run-raytrace-logic-for-AIR.patch b/patches/Tuinity/patches/server/0066-Do-not-run-raytrace-logic-for-AIR.patch similarity index 100% rename from patches/Tuinity/patches/server/0067-Do-not-run-raytrace-logic-for-AIR.patch rename to patches/Tuinity/patches/server/0066-Do-not-run-raytrace-logic-for-AIR.patch diff --git a/patches/Tuinity/patches/server/0068-Make-entity-tracker-use-highest-range-of-passengers.patch b/patches/Tuinity/patches/server/0067-Make-entity-tracker-use-highest-range-of-passengers.patch similarity index 100% rename from patches/Tuinity/patches/server/0068-Make-entity-tracker-use-highest-range-of-passengers.patch rename to patches/Tuinity/patches/server/0067-Make-entity-tracker-use-highest-range-of-passengers.patch diff --git a/patches/Tuinity/patches/server/0069-Do-not-allow-the-server-to-unload-chunks-at-request-.patch b/patches/Tuinity/patches/server/0068-Do-not-allow-the-server-to-unload-chunks-at-request-.patch similarity index 92% rename from patches/Tuinity/patches/server/0069-Do-not-allow-the-server-to-unload-chunks-at-request-.patch rename to patches/Tuinity/patches/server/0068-Do-not-allow-the-server-to-unload-chunks-at-request-.patch index 35d6327a..1a2fc4de 100644 --- a/patches/Tuinity/patches/server/0069-Do-not-allow-the-server-to-unload-chunks-at-request-.patch +++ b/patches/Tuinity/patches/server/0068-Do-not-allow-the-server-to-unload-chunks-at-request-.patch @@ -10,7 +10,7 @@ to be unloaded will simply be unloaded next tick, rather than immediately. diff --git a/src/main/java/net/minecraft/server/level/ChunkProviderServer.java b/src/main/java/net/minecraft/server/level/ChunkProviderServer.java -index c1e1b3d53de18579dbe83e7c88d13d44c89fb2d8..94c47f26ad5f521c46cf29c5b7271598a0dfc075 100644 +index d1fa4602f2f443c19ff69bfbd39cacdb4cbaf2a3..4934d0872af5c9cf6be640bad1f46298ad984337 100644 --- a/src/main/java/net/minecraft/server/level/ChunkProviderServer.java +++ b/src/main/java/net/minecraft/server/level/ChunkProviderServer.java @@ -926,6 +926,7 @@ public class ChunkProviderServer extends IChunkProvider { diff --git a/patches/Tuinity/patches/server/0070-Do-not-run-close-logic-for-inventories-on-chunk-unlo.patch b/patches/Tuinity/patches/server/0069-Do-not-run-close-logic-for-inventories-on-chunk-unlo.patch similarity index 96% rename from patches/Tuinity/patches/server/0070-Do-not-run-close-logic-for-inventories-on-chunk-unlo.patch rename to patches/Tuinity/patches/server/0069-Do-not-run-close-logic-for-inventories-on-chunk-unlo.patch index 5fd67eb5..03639ab8 100644 --- a/patches/Tuinity/patches/server/0070-Do-not-run-close-logic-for-inventories-on-chunk-unlo.patch +++ b/patches/Tuinity/patches/server/0069-Do-not-run-close-logic-for-inventories-on-chunk-unlo.patch @@ -31,10 +31,10 @@ index b2cd13541bf3486a69e8f3e41e4c90cdc47180d1..553ad54e5d657a840d3dbd3b48a8b21f public void broadcastCarriedItem() { if (!this.e) { diff --git a/src/main/java/net/minecraft/server/level/WorldServer.java b/src/main/java/net/minecraft/server/level/WorldServer.java -index 4ffe6c1e791f1a8531525bc053b30629fcc30e82..b4a22a1bb8001437d0eae48d7284eca0a1b30ad4 100644 +index 9061a2b9bffc7f4737871225a678c64f5799e2b8..ea71586563ceaf241c5a9f443805ec917a286690 100644 --- a/src/main/java/net/minecraft/server/level/WorldServer.java +++ b/src/main/java/net/minecraft/server/level/WorldServer.java -@@ -1907,10 +1907,14 @@ public class WorldServer extends World implements GeneratorAccessSeed { +@@ -1906,10 +1906,14 @@ public class WorldServer extends World implements GeneratorAccessSeed { // Spigot Start for (TileEntity tileentity : chunk.getTileEntities().values()) { if (tileentity instanceof net.minecraft.world.IInventory) { diff --git a/patches/Tuinity/patches/server/0071-Fix-NPE-in-pickup-logic-for-arrow.patch b/patches/Tuinity/patches/server/0070-Fix-NPE-in-pickup-logic-for-arrow.patch similarity index 100% rename from patches/Tuinity/patches/server/0071-Fix-NPE-in-pickup-logic-for-arrow.patch rename to patches/Tuinity/patches/server/0070-Fix-NPE-in-pickup-logic-for-arrow.patch diff --git a/patches/Tuinity/patches/server/0072-Remove-chunk-lookup-lambda-allocation-from-counting-.patch b/patches/Tuinity/patches/server/0071-Remove-chunk-lookup-lambda-allocation-from-counting-.patch similarity index 97% rename from patches/Tuinity/patches/server/0072-Remove-chunk-lookup-lambda-allocation-from-counting-.patch rename to patches/Tuinity/patches/server/0071-Remove-chunk-lookup-lambda-allocation-from-counting-.patch index 4200c60d..9027cbdb 100644 --- a/patches/Tuinity/patches/server/0072-Remove-chunk-lookup-lambda-allocation-from-counting-.patch +++ b/patches/Tuinity/patches/server/0071-Remove-chunk-lookup-lambda-allocation-from-counting-.patch @@ -6,7 +6,7 @@ Subject: [PATCH] Remove chunk lookup & lambda allocation from counting mobs The chunk lookup doesn't look cheap. diff --git a/src/main/java/net/minecraft/server/level/ChunkProviderServer.java b/src/main/java/net/minecraft/server/level/ChunkProviderServer.java -index 94c47f26ad5f521c46cf29c5b7271598a0dfc075..118b21b15e12de491a9cfc2b68c6da7bb10b1fee 100644 +index 4934d0872af5c9cf6be640bad1f46298ad984337..9e96376a1d710c0ba7a763868b23fc586253e1a8 100644 --- a/src/main/java/net/minecraft/server/level/ChunkProviderServer.java +++ b/src/main/java/net/minecraft/server/level/ChunkProviderServer.java @@ -1016,9 +1016,9 @@ public class ChunkProviderServer extends IChunkProvider { diff --git a/patches/Tuinity/patches/server/0073-Optimise-snow-ice-in-chunk-ticking.patch b/patches/Tuinity/patches/server/0072-Optimise-snow-ice-in-chunk-ticking.patch similarity index 98% rename from patches/Tuinity/patches/server/0073-Optimise-snow-ice-in-chunk-ticking.patch rename to patches/Tuinity/patches/server/0072-Optimise-snow-ice-in-chunk-ticking.patch index 187b8509..bc7f842d 100644 --- a/patches/Tuinity/patches/server/0073-Optimise-snow-ice-in-chunk-ticking.patch +++ b/patches/Tuinity/patches/server/0072-Optimise-snow-ice-in-chunk-ticking.patch @@ -11,7 +11,7 @@ the biome methods, removing the need to invoke a chunk lookup. diff --git a/src/main/java/net/minecraft/server/level/WorldServer.java b/src/main/java/net/minecraft/server/level/WorldServer.java -index b4a22a1bb8001437d0eae48d7284eca0a1b30ad4..943f72ed96549e1a495af984670ed3efe8707f6a 100644 +index ea71586563ceaf241c5a9f443805ec917a286690..c9d03c7025b05a496b6860718f6b307a4ff658f8 100644 --- a/src/main/java/net/minecraft/server/level/WorldServer.java +++ b/src/main/java/net/minecraft/server/level/WorldServer.java @@ -1196,6 +1196,9 @@ public class WorldServer extends World implements GeneratorAccessSeed { diff --git a/patches/Tuinity/patches/server/0074-Oprimise-map-impl-for-tracked-players.patch b/patches/Tuinity/patches/server/0073-Oprimise-map-impl-for-tracked-players.patch similarity index 100% rename from patches/Tuinity/patches/server/0074-Oprimise-map-impl-for-tracked-players.patch rename to patches/Tuinity/patches/server/0073-Oprimise-map-impl-for-tracked-players.patch diff --git a/patches/Tuinity/patches/server/0075-Use-hash-table-for-maintaing-changed-block-set.patch b/patches/Tuinity/patches/server/0074-Use-hash-table-for-maintaing-changed-block-set.patch similarity index 100% rename from patches/Tuinity/patches/server/0075-Use-hash-table-for-maintaing-changed-block-set.patch rename to patches/Tuinity/patches/server/0074-Use-hash-table-for-maintaing-changed-block-set.patch diff --git a/patches/Tuinity/patches/server/0076-Replace-player-chunk-loader-system.patch b/patches/Tuinity/patches/server/0075-Replace-player-chunk-loader-system.patch similarity index 99% rename from patches/Tuinity/patches/server/0076-Replace-player-chunk-loader-system.patch rename to patches/Tuinity/patches/server/0075-Replace-player-chunk-loader-system.patch index 2277f0fe..625cd497 100644 --- a/patches/Tuinity/patches/server/0076-Replace-player-chunk-loader-system.patch +++ b/patches/Tuinity/patches/server/0075-Replace-player-chunk-loader-system.patch @@ -1203,7 +1203,7 @@ index 8d4944fa1c761bb3ab299ec639663e7f52b512a3..db8532c42fcb2e96f4b3491352d1b9a2 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 118b21b15e12de491a9cfc2b68c6da7bb10b1fee..cb83f1152c52a99d25e4e80cc8bf18c6793e8b50 100644 +index 9e96376a1d710c0ba7a763868b23fc586253e1a8..fe040615ff03478a20cdf8376f89a6b7d100ba61 100644 --- a/src/main/java/net/minecraft/server/level/ChunkProviderServer.java +++ b/src/main/java/net/minecraft/server/level/ChunkProviderServer.java @@ -946,6 +946,7 @@ public class ChunkProviderServer extends IChunkProvider { @@ -1648,7 +1648,7 @@ index f74685a7cdb905af8e9712ca8597e7ed3dc8b120..feedbd8c97c1b1c56eaff359e6a94069 double deltaZ = soundPos.getZ() - player.locZ(); double distanceSquared = deltaX * deltaX + deltaZ * deltaZ; diff --git a/src/main/java/net/minecraft/world/level/World.java b/src/main/java/net/minecraft/world/level/World.java -index 1fab6ec02c0aceb56baea5353dbd85b580caf454..c8a5d4972431ce9615312280f36181a2b9645df7 100644 +index a802c45538943b570ca0daa3a40607dc80e696eb..af01f5d635eada7175b9d7fdb47a65530686a539 100644 --- a/src/main/java/net/minecraft/world/level/World.java +++ b/src/main/java/net/minecraft/world/level/World.java @@ -606,7 +606,7 @@ public abstract class World implements GeneratorAccess, AutoCloseable { @@ -1661,7 +1661,7 @@ index 1fab6ec02c0aceb56baea5353dbd85b580caf454..c8a5d4972431ce9615312280f36181a2 // Paper end - per player view distance } diff --git a/src/main/java/net/minecraft/world/level/chunk/Chunk.java b/src/main/java/net/minecraft/world/level/chunk/Chunk.java -index 8b73ba51dde43e3ddf40ed863cf286042f139a34..259d4ac89e84fd334ff65ea8a606e1fc50cc882b 100644 +index d6b34c6abebeac8445da3e76f341066952182e2b..df35ae12ecbe88ab396bed9850ef80433ff42fd4 100644 --- a/src/main/java/net/minecraft/world/level/chunk/Chunk.java +++ b/src/main/java/net/minecraft/world/level/chunk/Chunk.java @@ -406,12 +406,12 @@ public class Chunk implements IChunkAccess { @@ -1713,7 +1713,7 @@ index 8b73ba51dde43e3ddf40ed863cf286042f139a34..259d4ac89e84fd334ff65ea8a606e1fc } // Paper end - no-tick view distance } -@@ -1019,6 +995,7 @@ public class Chunk implements IChunkAccess { +@@ -1027,6 +1003,7 @@ public class Chunk implements IChunkAccess { // Paper end - neighbour cache org.bukkit.Server server = this.world.getServer(); ((WorldServer)this.world).getChunkProvider().addLoadedChunk(this); // Paper @@ -1739,10 +1739,10 @@ index 3fe1508b091e1fd0325eae50138d02fa6445c9ff..a19a26a88f247d359354902efeece992 return new Vec3D((double) baseblockposition.getX() + 0.5D, (double) baseblockposition.getY() + 0.5D, (double) baseblockposition.getZ() + 0.5D); } diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java -index 89e2ce2e20a9051336c784a48e3b4214379cd77b..292bd2187eb08fe535a8c1f8047be2bb29f55c53 100644 +index 12f12aeeed79c657659b4bc8651488f1d73d3ef9..b393490231ea00af15d883336a07de6cca642195 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java -@@ -2632,14 +2632,14 @@ public class CraftWorld implements World { +@@ -2637,14 +2637,14 @@ public class CraftWorld implements World { throw new IllegalArgumentException("View distance " + viewDistance + " is out of range of [2, 32]"); } PlayerChunkMap chunkMap = getHandle().getChunkProvider().playerChunkMap; @@ -1759,7 +1759,7 @@ index 89e2ce2e20a9051336c784a48e3b4214379cd77b..292bd2187eb08fe535a8c1f8047be2bb } @Override -@@ -2648,11 +2648,22 @@ public class CraftWorld implements World { +@@ -2653,11 +2653,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/Tuinity/patches/server/0077-Optimise-general-POI-access.patch b/patches/Tuinity/patches/server/0076-Optimise-general-POI-access.patch similarity index 100% rename from patches/Tuinity/patches/server/0077-Optimise-general-POI-access.patch rename to patches/Tuinity/patches/server/0076-Optimise-general-POI-access.patch diff --git a/patches/Tuinity/patches/server/0078-Be-aware-of-entity-teleports-when-chunk-checking-ent.patch b/patches/Tuinity/patches/server/0077-Be-aware-of-entity-teleports-when-chunk-checking-ent.patch similarity index 94% rename from patches/Tuinity/patches/server/0078-Be-aware-of-entity-teleports-when-chunk-checking-ent.patch rename to patches/Tuinity/patches/server/0077-Be-aware-of-entity-teleports-when-chunk-checking-ent.patch index 5d543eeb..ed8150f4 100644 --- a/patches/Tuinity/patches/server/0078-Be-aware-of-entity-teleports-when-chunk-checking-ent.patch +++ b/patches/Tuinity/patches/server/0077-Be-aware-of-entity-teleports-when-chunk-checking-ent.patch @@ -8,10 +8,10 @@ that occured from the getChunkAt call, we would either add to the wrong chunk or add to both chunks! not good. diff --git a/src/main/java/net/minecraft/server/level/WorldServer.java b/src/main/java/net/minecraft/server/level/WorldServer.java -index 943f72ed96549e1a495af984670ed3efe8707f6a..46f960b9276dced41deb8f741454b6cce5a81529 100644 +index c9d03c7025b05a496b6860718f6b307a4ff658f8..655e994376dcc65f4fd76e182d4ef5bc20142063 100644 --- a/src/main/java/net/minecraft/server/level/WorldServer.java +++ b/src/main/java/net/minecraft/server/level/WorldServer.java -@@ -1571,7 +1571,35 @@ public class WorldServer extends World implements GeneratorAccessSeed { +@@ -1570,7 +1570,35 @@ public class WorldServer extends World implements GeneratorAccessSeed { entity.inChunk = false; } else { diff --git a/patches/Tuinity/patches/server/0079-Custom-table-implementation-for-blockstate-state-loo.patch b/patches/Tuinity/patches/server/0078-Custom-table-implementation-for-blockstate-state-loo.patch similarity index 100% rename from patches/Tuinity/patches/server/0079-Custom-table-implementation-for-blockstate-state-loo.patch rename to patches/Tuinity/patches/server/0078-Custom-table-implementation-for-blockstate-state-loo.patch diff --git a/patches/Tuinity/patches/server/0080-Make-sure-to-remove-correct-TE-during-TE-tick.patch b/patches/Tuinity/patches/server/0080-Make-sure-to-remove-correct-TE-during-TE-tick.patch deleted file mode 100644 index 296bfb48..00000000 --- a/patches/Tuinity/patches/server/0080-Make-sure-to-remove-correct-TE-during-TE-tick.patch +++ /dev/null @@ -1,45 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: Spottedleaf -Date: Fri, 26 Mar 2021 14:10:58 -0700 -Subject: [PATCH] Make sure to remove correct TE during TE tick - -This looks like it can cause premature TE removal - -diff --git a/src/main/java/net/minecraft/world/level/World.java b/src/main/java/net/minecraft/world/level/World.java -index c8a5d4972431ce9615312280f36181a2b9645df7..68fa071fc576f398682ef461df102be432cdcb4c 100644 ---- a/src/main/java/net/minecraft/world/level/World.java -+++ b/src/main/java/net/minecraft/world/level/World.java -@@ -968,7 +968,7 @@ public abstract class World implements GeneratorAccess, AutoCloseable { - //this.tileEntityList.remove(tileentity); // Paper - remove unused list - // Paper - prevent double chunk lookups - Chunk chunk; if ((chunk = this.getChunkIfLoaded(tileentity.getPosition())) != null) { // inlined contents of this.isLoaded(BlockPosition). Reuse the returned chunk instead of looking it up again -- chunk.removeTileEntity(tileentity.getPosition()); -+ chunk.removeTileEntity(tileentity.getPosition(), tileentity); // Tuinity - make sure we remove the correct TE - } - // Paper end - } -diff --git a/src/main/java/net/minecraft/world/level/chunk/Chunk.java b/src/main/java/net/minecraft/world/level/chunk/Chunk.java -index 259d4ac89e84fd334ff65ea8a606e1fc50cc882b..ffef28f9fa82a6961ef6db5f6732cfee4352ee01 100644 ---- a/src/main/java/net/minecraft/world/level/chunk/Chunk.java -+++ b/src/main/java/net/minecraft/world/level/chunk/Chunk.java -@@ -956,10 +956,18 @@ public class Chunk implements IChunkAccess { - - @Override - public void removeTileEntity(BlockPosition blockposition) { -+ // Tuinity start - make sure we remove the correct TE -+ this.removeTileEntity(blockposition, null); -+ } -+ public void removeTileEntity(BlockPosition blockposition, TileEntity match) { -+ // Tuinity end - make sure we remove the correct TE - if (this.loaded || this.world.s_()) { -- TileEntity tileentity = (TileEntity) this.tileEntities.remove(blockposition); -+ // Tuinity start - make sure we remove the correct TE -+ TileEntity tileentity = (TileEntity) this.tileEntities.get(blockposition); - -- if (tileentity != null) { -+ if (tileentity != null && (match == null || match == tileentity)) { -+ this.tileEntities.remove(blockposition); -+ // Tuinity end - make sure we remove the correct TE - tileentity.al_(); - } - } diff --git a/patches/server/0001-Modify-POM.patch b/patches/server/0001-Modify-POM.patch index eb7290ec..d2091116 100644 --- a/patches/server/0001-Modify-POM.patch +++ b/patches/server/0001-Modify-POM.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Modify POM diff --git a/pom.xml b/pom.xml -index cf6e53e9f483d21b17e2782816be4403fa5be717..dc7bca7a09cb173af53c916d8f231249af8b1cdb 100644 +index 9d9ea5cff8a07c445837de74b3f887316cd79772..67c70c38214f39739d56121dde76a12f584f2a64 100644 --- a/pom.xml +++ b/pom.xml @@ -1,11 +1,11 @@ @@ -112,7 +112,7 @@ index cf6e53e9f483d21b17e2782816be4403fa5be717..dc7bca7a09cb173af53c916d8f231249 test -@@ -168,6 +177,12 @@ +@@ -175,6 +184,12 @@ master-SNAPSHOT compile @@ -125,9 +125,9 @@ index cf6e53e9f483d21b17e2782816be4403fa5be717..dc7bca7a09cb173af53c916d8f231249 -@@ -176,19 +191,32 @@ - jitpack.io - https://jitpack.io +@@ -188,19 +203,32 @@ + purpur-snapshots + https://repo.pl3x.net/ + + destroystokyo-repo diff --git a/patches/server/0003-Utilities.patch b/patches/server/0003-Utilities.patch index 1d196842..cc6e6c12 100644 --- a/patches/server/0003-Utilities.patch +++ b/patches/server/0003-Utilities.patch @@ -9,10 +9,10 @@ Co-authored-by: Mykyta Komarnytskyy Co-authored-by: Ivan Pekov diff --git a/pom.xml b/pom.xml -index dc7bca7a09cb173af53c916d8f231249af8b1cdb..16234696393f0d61bdaa7009c80fa0996a7f1712 100644 +index 67c70c38214f39739d56121dde76a12f584f2a64..0d960c173924f2ee97b9ad676d2c48c532b5ef5d 100644 --- a/pom.xml +++ b/pom.xml -@@ -183,6 +183,12 @@ +@@ -190,6 +190,12 @@ commons-math3 3.6.1 diff --git a/patches/server/0005-Add-last-tick-time-API.patch b/patches/server/0005-Add-last-tick-time-API.patch index 2d96c090..0423d415 100644 --- a/patches/server/0005-Add-last-tick-time-API.patch +++ b/patches/server/0005-Add-last-tick-time-API.patch @@ -7,7 +7,7 @@ Original patch by: Co-authored-by: tr7zw diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 34552a2bd96428013dba6f2bead737af75a28d0d..e283960750cff2f45695117ef873cf1f941c27bf 100644 +index f72574fde82307a0e73a9eca6c9dc967d0c48f22..8004b6068e4f9dac2cdda8300615b285b7bf16b2 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java @@ -1055,6 +1055,8 @@ public abstract class MinecraftServer extends IAsyncTaskHandlerReentrantnet/minecraft/server/v${minecraft_version}/$2 true diff --git a/patches/server/0019-Optimize-TileEntity-load-unload.patch b/patches/server/0019-Optimize-TileEntity-load-unload.patch index 6f5c75c4..9343eed5 100644 --- a/patches/server/0019-Optimize-TileEntity-load-unload.patch +++ b/patches/server/0019-Optimize-TileEntity-load-unload.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Optimize TileEntity load/unload diff --git a/src/main/java/net/minecraft/world/level/World.java b/src/main/java/net/minecraft/world/level/World.java -index f6f233ea7344924303b7462b88eaf348de439c0e..42ba62dbee134b2bc5f8065a4cd3f2811aa54310 100644 +index 1132743062846f0ac20a2611bc2ec697d6ea97da..ee6bace3bf6995a765bb9dd26a7a8003867b53de 100644 --- a/src/main/java/net/minecraft/world/level/World.java +++ b/src/main/java/net/minecraft/world/level/World.java @@ -105,8 +105,8 @@ public abstract class World implements GeneratorAccess, AutoCloseable { diff --git a/patches/server/0024-Optimize-some-stuff-in-WorldServer-ticking.patch b/patches/server/0024-Optimize-some-stuff-in-WorldServer-ticking.patch index 5d692d89..f8fcdb4c 100644 --- a/patches/server/0024-Optimize-some-stuff-in-WorldServer-ticking.patch +++ b/patches/server/0024-Optimize-some-stuff-in-WorldServer-ticking.patch @@ -6,7 +6,7 @@ Subject: [PATCH] Optimize some stuff in WorldServer ticking Replaced some streams and some array lists with glue lists diff --git a/src/main/java/net/minecraft/server/level/WorldServer.java b/src/main/java/net/minecraft/server/level/WorldServer.java -index 680d5d5273d70bd7ebba2cb62d655f94a4132468..9dcf078c7e32697417399b684211d5a3d5a7eff5 100644 +index 62d1ee6f091d1b80d6f96930d2edb91259e15ffa..c97d29ef4b6d64a641d72ad754dab18932d185d5 100644 --- a/src/main/java/net/minecraft/server/level/WorldServer.java +++ b/src/main/java/net/minecraft/server/level/WorldServer.java @@ -1005,12 +1005,21 @@ public class WorldServer extends World implements GeneratorAccessSeed { @@ -60,7 +60,7 @@ index 680d5d5273d70bd7ebba2cb62d655f94a4132468..9dcf078c7e32697417399b684211d5a3 } // Paper start - optimise random block ticking -@@ -2068,8 +2075,9 @@ public class WorldServer extends World implements GeneratorAccessSeed { +@@ -2067,8 +2074,9 @@ public class WorldServer extends World implements GeneratorAccessSeed { // Spigot start if ( entity instanceof EntityHuman ) { @@ -71,7 +71,7 @@ index 680d5d5273d70bd7ebba2cb62d655f94a4132468..9dcf078c7e32697417399b684211d5a3 for (Object o : worldData.data.values() ) { if ( o instanceof WorldMap ) -@@ -2086,7 +2094,7 @@ public class WorldServer extends World implements GeneratorAccessSeed { +@@ -2085,7 +2093,7 @@ public class WorldServer extends World implements GeneratorAccessSeed { } } } diff --git a/patches/server/0031-Fix-LightEngineThreaded-memory-leak.patch b/patches/server/0031-Fix-LightEngineThreaded-memory-leak.patch index 4d498f09..283a4703 100644 --- a/patches/server/0031-Fix-LightEngineThreaded-memory-leak.patch +++ b/patches/server/0031-Fix-LightEngineThreaded-memory-leak.patch @@ -18,10 +18,10 @@ index 381bd11075599d44e4c705a8e754769d29883d75..e36d11ffb3e66e6ce6f64d2e771661f8 return this.size == 0 && this.pendingTasks.isEmpty(); } diff --git a/src/main/java/net/minecraft/server/level/WorldServer.java b/src/main/java/net/minecraft/server/level/WorldServer.java -index 9dcf078c7e32697417399b684211d5a3d5a7eff5..d42c15dc16114e362722ccfde2021a2c41680649 100644 +index c97d29ef4b6d64a641d72ad754dab18932d185d5..8ea7ad63c0f091102f793b3c1f90b4121c4d74e0 100644 --- a/src/main/java/net/minecraft/server/level/WorldServer.java +++ b/src/main/java/net/minecraft/server/level/WorldServer.java -@@ -2054,6 +2054,7 @@ public class WorldServer extends World implements GeneratorAccessSeed { +@@ -2053,6 +2053,7 @@ public class WorldServer extends World implements GeneratorAccessSeed { } // Paper end diff --git a/patches/server/0034-Optimize-whitelist-command-for-multiple-additions-re.patch b/patches/server/0034-Optimize-whitelist-command-for-multiple-additions-re.patch index 86858698..ef72d87e 100644 --- a/patches/server/0034-Optimize-whitelist-command-for-multiple-additions-re.patch +++ b/patches/server/0034-Optimize-whitelist-command-for-multiple-additions-re.patch @@ -10,7 +10,7 @@ added. These changes aim to reduce that load whenever you are using the /whitelist command. diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index e283960750cff2f45695117ef873cf1f941c27bf..16d8d7760ca0348ee0cf1edec1650cac536e21d0 100644 +index 8004b6068e4f9dac2cdda8300615b285b7bf16b2..57df64bb8ff906f035d50646678d194173864ded 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java @@ -2108,6 +2108,7 @@ public abstract class MinecraftServer extends IAsyncTaskHandlerReentrant diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 9c991ee900a306f19d613b1d0511b89496267286..1b0add2400c8e518953add4cc100f227ebae0703 100644 +index d4490515972936d762faffa3e432db92ee340ad2..27378526efabe92735790b1fd993e9bb5f23f730 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java @@ -942,7 +942,9 @@ public abstract class MinecraftServer extends IAsyncTaskHandlerReentrant