diff --git a/PATCHES.md b/PATCHES.md index fa843ab0..dff7951c 100644 --- a/PATCHES.md +++ b/PATCHES.md @@ -67,6 +67,7 @@ # Patches | server | Add wither skeleton takes wither damage option | William Blake Galbreath | | | server | Advancement API | William Blake Galbreath | | | api | Advancement API | William Blake Galbreath | | +| server | Airplane Configuration | Paul Sauve | | | server | Airplane MC Dev Fixes | Paul Sauve | | | server | Allow Entities to be removed from a world while ticking | Spottedleaf | | | server | Allow anvil colors | William Blake Galbreath | | @@ -149,6 +150,7 @@ # Patches | server | Don't wake up entities when damage event is cancelled | Phoenix616 | | | server | Dont send useless entity packets | William Blake Galbreath | | | server | Duplicate paper's vanilla scoreboard colors patch to sync | William Blake Galbreath | | +| server | Dynamic activation range | Paul Sauve | | | server | EMC - Configurable disable give dropping | Aikar | | | server | EMC - MonsterEggSpawnEvent | Aikar | | | api | EMC - MonsterEggSpawnEvent | Aikar | | diff --git a/Paper b/Paper index 0514fc4e..3dadd97b 160000 --- a/Paper +++ b/Paper @@ -1 +1 @@ -Subproject commit 0514fc4e2d2805cd0263a0ee053b482b4c454c69 +Subproject commit 3dadd97bbc9f622c62c5a6d885fe9453a003cbe6 diff --git a/patches/Airplane/patches/server/0002-Airplane-Configuration.patch b/patches/Airplane/patches/server/0002-Airplane-Configuration.patch new file mode 100644 index 00000000..54e12bab --- /dev/null +++ b/patches/Airplane/patches/server/0002-Airplane-Configuration.patch @@ -0,0 +1,301 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Paul Sauve +Date: Wed, 20 Jan 2021 13:08:53 -0600 +Subject: [PATCH] Airplane Configuration + +Airplane +Copyright (C) 2020 Technove LLC + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +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 +new file mode 100644 +index 0000000000000000000000000000000000000000..4feb9686f45ce4ae9f474447496b8e0f6fcb7e31 +--- /dev/null ++++ b/src/main/java/gg/airplane/AirplaneConfig.java +@@ -0,0 +1,46 @@ ++package gg.airplane; ++ ++import gg.airplane.manual.ManualParser; ++import net.minecraft.server.MinecraftServer; ++import org.apache.logging.log4j.Level; ++ ++import java.io.File; ++import java.io.IOException; ++import java.lang.reflect.Method; ++import java.lang.reflect.Modifier; ++ ++public class AirplaneConfig { ++ ++ private static ManualParser manual; ++ ++ public static void load() { ++ try { ++ manual = new ManualParser(new File("airplane.air")); ++ } catch (IOException e) { ++ e.printStackTrace(); ++ } ++ ++ manual.get("info.version", "1.0"); ++ manual.setComment("info", ++ " Airplane Configuration", ++ " Please see https://airplane.gg/config for help."); ++ ++ for (Method method : AirplaneConfig.class.getDeclaredMethods()) { ++ if (Modifier.isStatic(method.getModifiers()) && Modifier.isPrivate(method.getModifiers())) { ++ method.setAccessible(true); ++ try { ++ method.invoke(null); ++ } catch (Throwable t) { ++ MinecraftServer.LOGGER.log(Level.WARN, "Failed to load configuration option from " + method.getName(), t); ++ } ++ } ++ } ++ ++ try { ++ manual.save(); ++ } catch (IOException e) { ++ e.printStackTrace(); ++ } ++ } ++ ++} +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/DedicatedServer.java b/src/main/java/net/minecraft/server/DedicatedServer.java +index 3ee8d31c453105eca7b96bede39a9ebbf40e1c2c..ca3d9dbcbeeb5059a942cae1a5020f0bcc59ac9c 100644 +--- a/src/main/java/net/minecraft/server/DedicatedServer.java ++++ b/src/main/java/net/minecraft/server/DedicatedServer.java +@@ -179,6 +179,7 @@ public class DedicatedServer extends MinecraftServer implements IMinecraftServer + com.destroystokyo.paper.VersionHistoryManager.INSTANCE.getClass(); // load version history now + // Paper end + com.tuinity.tuinity.config.TuinityConfig.init((java.io.File) options.valueOf("tuinity-settings")); // Tuinity - Server Config ++ gg.airplane.AirplaneConfig.load(); // Airplane - config + + this.setPVP(dedicatedserverproperties.pvp); + this.setAllowFlight(dedicatedserverproperties.allowFlight); diff --git a/patches/Airplane/patches/server/0002-Remove-streams.patch b/patches/Airplane/patches/server/0003-Remove-streams.patch similarity index 100% rename from patches/Airplane/patches/server/0002-Remove-streams.patch rename to patches/Airplane/patches/server/0003-Remove-streams.patch diff --git a/patches/Airplane/patches/server/0003-Strip-raytracing-for-EntityLiving-hasLineOfSight.patch b/patches/Airplane/patches/server/0004-Strip-raytracing-for-EntityLiving-hasLineOfSight.patch similarity index 99% rename from patches/Airplane/patches/server/0003-Strip-raytracing-for-EntityLiving-hasLineOfSight.patch rename to patches/Airplane/patches/server/0004-Strip-raytracing-for-EntityLiving-hasLineOfSight.patch index 787a818b..e30a972f 100644 --- a/patches/Airplane/patches/server/0003-Strip-raytracing-for-EntityLiving-hasLineOfSight.patch +++ b/patches/Airplane/patches/server/0004-Strip-raytracing-for-EntityLiving-hasLineOfSight.patch @@ -88,7 +88,7 @@ index 2e7721a650c5a351b3584665bd236f92ef577761..b3c2b461b2a654a9e37a57f2f62b3ba8 return d0 == 0.0D ? 0 : (d0 > 0.0D ? 1 : -1); } diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java -index 91aa8a2bc111ee6935ada0ae471fe1a3bc8fad80..0e6813601f082a9e81278cebbfadbaca5769802a 100644 +index 7c367fe6152c30aab3e53c8f88cceba606891c93..6e6059daba05d7ce3aabeed85cc0e0d2daa04f92 100644 --- a/src/main/java/net/minecraft/server/World.java +++ b/src/main/java/net/minecraft/server/World.java @@ -332,6 +332,91 @@ public abstract class World implements GeneratorAccess, AutoCloseable { diff --git a/patches/Airplane/patches/server/0004-Simpler-ShapelessRecipes-comparison-for-Vanilla.patch b/patches/Airplane/patches/server/0005-Simpler-ShapelessRecipes-comparison-for-Vanilla.patch similarity index 100% rename from patches/Airplane/patches/server/0004-Simpler-ShapelessRecipes-comparison-for-Vanilla.patch rename to patches/Airplane/patches/server/0005-Simpler-ShapelessRecipes-comparison-for-Vanilla.patch diff --git a/patches/Airplane/patches/server/0005-Queue-lighting-update-only-once.patch b/patches/Airplane/patches/server/0006-Queue-lighting-update-only-once.patch similarity index 100% rename from patches/Airplane/patches/server/0005-Queue-lighting-update-only-once.patch rename to patches/Airplane/patches/server/0006-Queue-lighting-update-only-once.patch diff --git a/patches/Airplane/patches/server/0006-Use-unmodifiableMap-instead-of-making-copy.patch b/patches/Airplane/patches/server/0007-Use-unmodifiableMap-instead-of-making-copy.patch similarity index 100% rename from patches/Airplane/patches/server/0006-Use-unmodifiableMap-instead-of-making-copy.patch rename to patches/Airplane/patches/server/0007-Use-unmodifiableMap-instead-of-making-copy.patch diff --git a/patches/Airplane/patches/server/0007-Swap-priority-of-checks-in-chunk-ticking.patch b/patches/Airplane/patches/server/0008-Swap-priority-of-checks-in-chunk-ticking.patch similarity index 100% rename from patches/Airplane/patches/server/0007-Swap-priority-of-checks-in-chunk-ticking.patch rename to patches/Airplane/patches/server/0008-Swap-priority-of-checks-in-chunk-ticking.patch diff --git a/patches/Airplane/patches/server/0008-Reduce-projectile-chunk-loading.patch b/patches/Airplane/patches/server/0009-Reduce-projectile-chunk-loading.patch similarity index 100% rename from patches/Airplane/patches/server/0008-Reduce-projectile-chunk-loading.patch rename to patches/Airplane/patches/server/0009-Reduce-projectile-chunk-loading.patch diff --git a/patches/Airplane/patches/server/0009-Optimize-random-calls-in-chunk-ticking.patch b/patches/Airplane/patches/server/0010-Optimize-random-calls-in-chunk-ticking.patch similarity index 100% rename from patches/Airplane/patches/server/0009-Optimize-random-calls-in-chunk-ticking.patch rename to patches/Airplane/patches/server/0010-Optimize-random-calls-in-chunk-ticking.patch diff --git a/patches/Airplane/patches/server/0010-Don-t-get-entity-equipment-if-not-needed.patch b/patches/Airplane/patches/server/0011-Don-t-get-entity-equipment-if-not-needed.patch similarity index 100% rename from patches/Airplane/patches/server/0010-Don-t-get-entity-equipment-if-not-needed.patch rename to patches/Airplane/patches/server/0011-Don-t-get-entity-equipment-if-not-needed.patch diff --git a/patches/Airplane/patches/server/0012-Dynamic-activation-range.patch b/patches/Airplane/patches/server/0012-Dynamic-activation-range.patch new file mode 100644 index 00000000..b48996e9 --- /dev/null +++ b/patches/Airplane/patches/server/0012-Dynamic-activation-range.patch @@ -0,0 +1,251 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Paul Sauve +Date: Fri, 15 Jan 2021 19:05:01 -0600 +Subject: [PATCH] Dynamic activation range + +This replaces the current method of ticking an inactive entity's +pathfinder 1/4 times with a new method that's dynamic based off how far +away it is from a player. If an entity is within 32 blocks, it gets +ticked every tick. If it's within 45 blocks, it gets ticked every other +tick. If it's within 55 blocks, it gets ticked once every three ticks. +(these numbers have since been changed, but the idea is the same.) + +Airplane +Copyright (C) 2020 Technove LLC + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +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 4feb9686f45ce4ae9f474447496b8e0f6fcb7e31..c39c9929a251b41ab60e1509b4e6c90d0825dc0c 100644 +--- a/src/main/java/gg/airplane/AirplaneConfig.java ++++ b/src/main/java/gg/airplane/AirplaneConfig.java +@@ -43,4 +43,29 @@ public class AirplaneConfig { + } + } + ++ ++ public static int maximumActivationPrio = 20; ++ public static int activationDistanceMod = 9; ++ public static boolean dynamicVillagerBehavior = true; ++ public static boolean dynamicPiglinBehavior = true; ++ 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"); ++ ++ maximumActivationPrio = manual.get("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, ++ "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); ++ } ++ + } +diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java +index 63eb29635957d4e6ce1274ee17a59af62d442d4e..d74086ee72cfae3d2bead9fb08c808299d755e2a 100644 +--- a/src/main/java/net/minecraft/server/Entity.java ++++ b/src/main/java/net/minecraft/server/Entity.java +@@ -197,6 +197,9 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke + public void inactiveTick() { } + // Spigot end + public boolean shouldBeRemoved; // Paper ++ // Airplane start ++ public int activatedPriority = gg.airplane.AirplaneConfig.maximumActivationPrio; // golf score ++ // Airplane end + + public float getBukkitYaw() { + return this.yaw; +diff --git a/src/main/java/net/minecraft/server/EntityHoglin.java b/src/main/java/net/minecraft/server/EntityHoglin.java +index 4a3469aca9f9e47d2ea3f3bae6ce77f5f11d6b50..5af5b50889961b10e812598dbea657c4e2aeceeb 100644 +--- a/src/main/java/net/minecraft/server/EntityHoglin.java ++++ b/src/main/java/net/minecraft/server/EntityHoglin.java +@@ -102,13 +102,18 @@ public class EntityHoglin extends EntityAnimal implements IMonster, IOglin { + return (BehaviorController) super.getBehaviorController(); // Purpur - decompile error + } + ++ private int behaviorTick; // Airplane + @Override + protected void mobTick() { ++ // Airplane - dynamic tick ++ if (!gg.airplane.AirplaneConfig.dynamicHoglinBehavior || this.behaviorTick++ % this.activatedPriority == 0) { + this.world.getMethodProfiler().enter("hoglinBrain"); + if (getRider() == null) // Purpur - only use brain if no rider + this.getBehaviorController().a((WorldServer) this.world, this); // Purpur - decompile error + this.world.getMethodProfiler().exit(); + HoglinAI.a(this); ++ } ++ // Airplane end + if (this.isConverting()) { + ++this.conversionTicks; + if (this.conversionTicks > 300) { +diff --git a/src/main/java/net/minecraft/server/EntityInsentient.java b/src/main/java/net/minecraft/server/EntityInsentient.java +index dac0d2f9f4c8c909f0c03baa30c0565633d3af42..288e57fd58d5dfa91dce23e137ad078e455db4d3 100644 +--- a/src/main/java/net/minecraft/server/EntityInsentient.java ++++ b/src/main/java/net/minecraft/server/EntityInsentient.java +@@ -133,10 +133,10 @@ public abstract class EntityInsentient extends EntityLiving { + @Override + public void inactiveTick() { + super.inactiveTick(); +- if (this.goalSelector.inactiveTick()) { ++ if (this.goalSelector.inactiveTick(this.activatedPriority)) { // Airplane - pass activated priroity + this.goalSelector.doTick(); + } +- if (this.targetSelector.inactiveTick()) { ++ if (this.targetSelector.inactiveTick(this.activatedPriority)) { // Airplane - pass activated priority + this.targetSelector.doTick(); + } + } +@@ -797,9 +797,11 @@ public abstract class EntityInsentient extends EntityLiving { + this.bo.a(); + this.world.getMethodProfiler().exit(); + this.world.getMethodProfiler().enter("targetSelector"); ++ if (this.targetSelector.inactiveTick(this.activatedPriority)) // Airplane - use this to alternate ticking + this.targetSelector.doTick(); + this.world.getMethodProfiler().exit(); + this.world.getMethodProfiler().enter("goalSelector"); ++ if (this.goalSelector.inactiveTick(this.activatedPriority)) // Airplane - use this to alternate ticking + this.goalSelector.doTick(); + this.world.getMethodProfiler().exit(); + this.world.getMethodProfiler().enter("navigation"); +diff --git a/src/main/java/net/minecraft/server/EntityPiglin.java b/src/main/java/net/minecraft/server/EntityPiglin.java +index 4849829df1041568a9fcac6d16501fc0606d95da..2ac74751ac8cea0b829b3d0ed03f052162a78781 100644 +--- a/src/main/java/net/minecraft/server/EntityPiglin.java ++++ b/src/main/java/net/minecraft/server/EntityPiglin.java +@@ -216,13 +216,18 @@ public class EntityPiglin extends EntityPiglinAbstract implements ICrossbow { + return !this.cannotHunt; + } + ++ private int behaviorTick; // Airplane + @Override + protected void mobTick() { ++ // Airplane - dynamic tick ++ if (!gg.airplane.AirplaneConfig.dynamicPiglinBehavior || this.behaviorTick++ % this.activatedPriority == 0) { + this.world.getMethodProfiler().enter("piglinBrain"); + if (getRider() == null) // Purpur - only use brain if no rider + this.getBehaviorController().a((WorldServer) this.world, this); // Purpur - decompile error + this.world.getMethodProfiler().exit(); + PiglinAI.b(this); ++ } ++ // Airplane end + super.mobTick(); + } + +diff --git a/src/main/java/net/minecraft/server/EntityVillager.java b/src/main/java/net/minecraft/server/EntityVillager.java +index eef51f8e5734b897164ca9514e7b49b2678416e6..5fc57e2e2afe383ddc9b6d4db714a678c881fa77 100644 +--- a/src/main/java/net/minecraft/server/EntityVillager.java ++++ b/src/main/java/net/minecraft/server/EntityVillager.java +@@ -212,6 +212,8 @@ public class EntityVillager extends EntityVillagerAbstract implements Reputation + } + // Purpur end + ++ private int behaviorTick = 0; ++ + @Override + protected void mobTick() { mobTick(false); } + protected void mobTick(boolean inactive) { +@@ -221,7 +223,11 @@ public class EntityVillager extends EntityVillagerAbstract implements Reputation + boolean tick = (world.getTime() + brainTickOffset) % world.purpurConfig.villagerBrainTicks == 0; + if (((WorldServer) world).getMinecraftServer().lagging ? tick : world.purpurConfig.villagerUseBrainTicksOnlyWhenLagging || tick) + // Purpur end +- if (!inactive) this.getBehaviorController().a((WorldServer) this.world, this); // CraftBukkit - decompile error // Paper ++ if (!inactive) { ++ if (!gg.airplane.AirplaneConfig.dynamicVillagerBehavior || behaviorTick++ % this.activatedPriority == 0) { ++ this.getBehaviorController().a((WorldServer) this.world, this); // CraftBukkit - decompile error // Paper ++ } ++ } + else if (shouldRestock()) doRestock(); // Purpur + this.world.getMethodProfiler().exit(); + if (this.bF) { +diff --git a/src/main/java/net/minecraft/server/PathfinderGoalSelector.java b/src/main/java/net/minecraft/server/PathfinderGoalSelector.java +index 9cad895c7d008487ce885cbcc2c3966645df4c19..2ce5e07f4dcd0c76073840c35be66b7c65c6e7e8 100644 +--- a/src/main/java/net/minecraft/server/PathfinderGoalSelector.java ++++ b/src/main/java/net/minecraft/server/PathfinderGoalSelector.java +@@ -43,9 +43,14 @@ public class PathfinderGoalSelector { + } + + // Paper start +- public boolean inactiveTick() { +- incRate(); +- return getCurRate() % getTickRate() == 0; ++ public boolean inactiveTick(int tickRate) { // Airplane - take tick rate ++ tickRate = Math.max(tickRate, getTickRate()); // Airplane ++ if (this.curRate++ % tickRate != 0) { // Airplane - use tick rate / increment curRate every tick ++ //incRate(); ++ return false; ++ } else { ++ return true; ++ } + } + public boolean hasTasks() { + for (PathfinderGoalWrapped task : getTasks()) { +diff --git a/src/main/java/org/spigotmc/ActivationRange.java b/src/main/java/org/spigotmc/ActivationRange.java +index 66b7c75929cd98737628b9d4f22829b5b65b8373..ea3d813759d90a6d229ca065abe044743be4780f 100644 +--- a/src/main/java/org/spigotmc/ActivationRange.java ++++ b/src/main/java/org/spigotmc/ActivationRange.java +@@ -48,6 +48,9 @@ import net.minecraft.server.EntityInsentient; + import net.minecraft.server.EntityLlama; + import net.minecraft.server.EntityWaterAnimal; + // Paper end ++// Airplane start ++import net.minecraft.server.Vec3D; ++// Airplane end + + public class ActivationRange + { +@@ -229,7 +232,7 @@ public class ActivationRange + Chunk chunk = chunkProvider.getChunkAtIfLoadedMainThreadNoCache( i1, j1 ); // Paper + if ( chunk != null ) + { +- activateChunkEntities( chunk ); ++ activateChunkEntities( chunk, player.getPositionVector() ); // Airplane + } + } + } +@@ -242,7 +245,7 @@ public class ActivationRange + * + * @param chunk + */ +- private static void activateChunkEntities(Chunk chunk) ++ private static void activateChunkEntities(Chunk chunk, Vec3D playerVec) // Airplane - add player location + { + // Paper start + Entity[] rawData = chunk.entities.getRawData(); +@@ -251,11 +254,19 @@ public class ActivationRange + //for ( Entity entity : (Collection) slice ) + // Paper end + { ++ // Airplane start ++ Vec3D entityVec = entity.getPositionVector(); ++ double diffX = playerVec.x - entityVec.x, diffY = playerVec.y - entityVec.y, diffZ = playerVec.z - entityVec.z; ++ int priority = Math.max(1, (int) (diffX * diffX + diffY * diffY + diffZ * diffZ) >> gg.airplane.AirplaneConfig.activationDistanceMod); + if (MinecraftServer.currentTick > entity.activatedTick) { + if (entity.defaultActivationState || entity.activationType.boundingBox.c(entity.getBoundingBox())) { // Paper + entity.activatedTick = MinecraftServer.currentTick; + } ++ entity.activatedPriority = Math.min(gg.airplane.AirplaneConfig.maximumActivationPrio, priority); ++ } else { ++ entity.activatedPriority = Math.min(gg.airplane.AirplaneConfig.maximumActivationPrio, Math.min(priority, entity.activatedPriority)); + } ++ // Airplane end + } + } + } diff --git a/patches/Empirecraft/patches/server/0002-Fix-Bukkit.createInventory-with-type-LECTERN.patch b/patches/Empirecraft/patches/server/0002-Fix-Bukkit.createInventory-with-type-LECTERN.patch index 3310667c..1e3ced94 100644 --- a/patches/Empirecraft/patches/server/0002-Fix-Bukkit.createInventory-with-type-LECTERN.patch +++ b/patches/Empirecraft/patches/server/0002-Fix-Bukkit.createInventory-with-type-LECTERN.patch @@ -90,10 +90,10 @@ index cb6f55c4d870ea1ce146f64ac13e7090f2de3bc8..f7b54111ba86d9ee131e320f573f568c if (this.world != null) BlockLectern.a(this.getWorld(), this.getPosition(), this.getBlock()); // CraftBukkit } diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java -index 53917d3b381730efb079113fdffecdc29939d6ea..37d71def297c3f34e9afc74821df6090f3737156 100644 +index 2318d19b21514effe28b4d21c0196c8f778d22db..a106069e9122313d73b0d23d689b0d1e70025cc8 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java -@@ -32,6 +32,7 @@ import net.minecraft.server.PacketPlayInCloseWindow; +@@ -31,6 +31,7 @@ import net.minecraft.server.PacketPlayInCloseWindow; import net.minecraft.server.PacketPlayOutOpenWindow; import net.minecraft.server.TileEntity; import net.minecraft.server.TileEntityContainer; @@ -101,7 +101,7 @@ index 53917d3b381730efb079113fdffecdc29939d6ea..37d71def297c3f34e9afc74821df6090 import org.bukkit.GameMode; import org.bukkit.Location; import org.bukkit.Material; -@@ -300,6 +301,11 @@ public class CraftHumanEntity extends CraftLivingEntity implements HumanEntity { +@@ -299,6 +300,11 @@ public class CraftHumanEntity extends CraftLivingEntity implements HumanEntity { if (craft.getInventory() instanceof ITileInventory) { iinventory = (ITileInventory) craft.getInventory(); } diff --git a/patches/Empirecraft/patches/server/0003-dont-load-chunks-for-physics.patch b/patches/Empirecraft/patches/server/0003-dont-load-chunks-for-physics.patch index 51d05c5c..4395e80b 100644 --- a/patches/Empirecraft/patches/server/0003-dont-load-chunks-for-physics.patch +++ b/patches/Empirecraft/patches/server/0003-dont-load-chunks-for-physics.patch @@ -19,7 +19,7 @@ index 657885cdaa086293f6b5aa6f3058acd16df0ba35..8724ad342bec7c733b3c825bd62dbfa5 Block.a(iblockdata, iblockdata1, generatoraccess, blockposition_mutableblockposition, i, j); diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java -index 0e6813601f082a9e81278cebbfadbaca5769802a..edd864a699c4fed0e7da4c3ca0d220a1029f3c63 100644 +index 6e6059daba05d7ce3aabeed85cc0e0d2daa04f92..ba8a8e7dc0d09d8afa405ef608ad6df1e507a62c 100644 --- a/src/main/java/net/minecraft/server/World.java +++ b/src/main/java/net/minecraft/server/World.java @@ -774,7 +774,8 @@ public abstract class World implements GeneratorAccess, AutoCloseable { diff --git a/patches/Origami/patches/server/0001-Origami-Server-Config.patch b/patches/Origami/patches/server/0001-Origami-Server-Config.patch index 22b44602..151eb6e9 100644 --- a/patches/Origami/patches/server/0001-Origami-Server-Config.patch +++ b/patches/Origami/patches/server/0001-Origami-Server-Config.patch @@ -129,7 +129,7 @@ index 0000000000000000000000000000000000000000..fe7330fabe386966c2d203a190a00a78 +} \ No newline at end of file diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java -index edd864a699c4fed0e7da4c3ca0d220a1029f3c63..e592ca980967804cf5ac9cbf2a917d584a23163b 100644 +index ba8a8e7dc0d09d8afa405ef608ad6df1e507a62c..7d0ea2c0f04578eb2c896aa6ea99ce26d8935478 100644 --- a/src/main/java/net/minecraft/server/World.java +++ b/src/main/java/net/minecraft/server/World.java @@ -97,6 +97,8 @@ public abstract class World implements GeneratorAccess, AutoCloseable { @@ -150,10 +150,10 @@ index edd864a699c4fed0e7da4c3ca0d220a1029f3c63..e592ca980967804cf5ac9cbf2a917d58 this.chunkPacketBlockController = this.paperConfig.antiXray ? new ChunkPacketBlockControllerAntiXray(this, executor) : ChunkPacketBlockController.NO_OPERATION_INSTANCE; // Paper - Anti-Xray this.generator = gen; diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index 413c55feb6b1c2ddc80aa8dc1c83ed13b2c4c4a5..53deddce357170a712913d916ba1d58e663fc1a1 100644 +index dfe6777db04bb550ae0e761addd26b2d5abf3baf..48dd6de4acf0ef0536a4c562f3eb5f2f90878924 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -@@ -863,6 +863,7 @@ public final class CraftServer implements Server { +@@ -862,6 +862,7 @@ public final class CraftServer implements Server { com.destroystokyo.paper.PaperConfig.init((File) console.options.valueOf("paper-settings")); // Paper com.tuinity.tuinity.config.TuinityConfig.init((File) console.options.valueOf("tuinity-settings")); // Tuinity - Server Config net.pl3x.purpur.PurpurConfig.init((File) console.options.valueOf("purpur-settings")); // Purpur @@ -161,7 +161,7 @@ index 413c55feb6b1c2ddc80aa8dc1c83ed13b2c4c4a5..53deddce357170a712913d916ba1d58e for (WorldServer world : console.getWorlds()) { world.worldDataServer.setDifficulty(config.difficulty); world.setSpawnFlags(config.spawnMonsters, config.spawnAnimals); -@@ -899,6 +900,7 @@ public final class CraftServer implements Server { +@@ -898,6 +899,7 @@ public final class CraftServer implements Server { world.paperConfig.init(); // Paper world.tuinityConfig.init(); // Tuinity - Server Config world.purpurConfig.init(); // Purpur diff --git a/patches/Purpur/patches/api/0018-ItemStack-convenience-methods.patch b/patches/Purpur/patches/api/0018-ItemStack-convenience-methods.patch index 1d5242c5..27851fc5 100644 --- a/patches/Purpur/patches/api/0018-ItemStack-convenience-methods.patch +++ b/patches/Purpur/patches/api/0018-ItemStack-convenience-methods.patch @@ -5,10 +5,10 @@ Subject: [PATCH] ItemStack convenience methods diff --git a/src/main/java/org/bukkit/Material.java b/src/main/java/org/bukkit/Material.java -index 4ba991b79f13219182df35b4ce0c5cf57cbd208b..a2e476f154344f9473dd9b48866505448de56d84 100644 +index 2a3becabbd10fa8ffd19f35a3f6d8a6bfcb388c3..f71c9fd069309ef330d9065760b80ec10de7e18b 100644 --- a/src/main/java/org/bukkit/Material.java +++ b/src/main/java/org/bukkit/Material.java -@@ -8645,4 +8645,36 @@ public enum Material implements Keyed { +@@ -8642,4 +8642,36 @@ public enum Material implements Keyed { // } } diff --git a/patches/Purpur/patches/server/0001-Rebrand.patch b/patches/Purpur/patches/server/0001-Rebrand.patch index 8d105d4c..cfcad584 100644 --- a/patches/Purpur/patches/server/0001-Rebrand.patch +++ b/patches/Purpur/patches/server/0001-Rebrand.patch @@ -182,10 +182,10 @@ index 0000000000000000000000000000000000000000..d8b408f061d96e2fa8e2e587462e2221 + } +} diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index bd7bccbea1a0a052ef7bd6ab299ae72336874911..5100460bab83cd75ac8dcdcc50ea663b1c486d00 100644 +index 44524e08bed8897e43e408b6f179bf798fed9b62..19a209cfc71e30edd3ff2d8c319df5e8b331e6cf 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -@@ -232,7 +232,7 @@ import javax.annotation.Nullable; // Paper +@@ -231,7 +231,7 @@ import javax.annotation.Nullable; // Paper import javax.annotation.Nonnull; // Paper public final class CraftServer implements Server { diff --git a/patches/Purpur/patches/server/0002-Purpur-config-files.patch b/patches/Purpur/patches/server/0002-Purpur-config-files.patch index d5809047..04f21fc3 100644 --- a/patches/Purpur/patches/server/0002-Purpur-config-files.patch +++ b/patches/Purpur/patches/server/0002-Purpur-config-files.patch @@ -78,7 +78,7 @@ index de9ea6770b8afc5e1020bef04ac6cca93b6b420c..21d0570a59240e955ff148bac0226b22 if (this.bF) { this.bF = false; diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java -index 28ee325fcc8b50397768363403823f2e3391d8c8..fb650c09dbcefa0ff021f7c508ff6811a48bee7a 100644 +index 93c0c3376c3cb2fe416c8ae3e740ffda5f985b78..226b5cd399449ca3587964221765e4d241dfc739 100644 --- a/src/main/java/net/minecraft/server/World.java +++ b/src/main/java/net/minecraft/server/World.java @@ -95,6 +95,7 @@ public abstract class World implements GeneratorAccess, AutoCloseable { @@ -373,10 +373,10 @@ index 0000000000000000000000000000000000000000..4904be939c7a4b1d1583fd7b6232c930 + } +} diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index 5100460bab83cd75ac8dcdcc50ea663b1c486d00..b5d274c1fe214ea274057084bc40d6eeb618b21d 100644 +index 19a209cfc71e30edd3ff2d8c319df5e8b331e6cf..8cd8db287bb4110e17ec0da57ee1547ca1f221d7 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -@@ -862,6 +862,7 @@ public final class CraftServer implements Server { +@@ -861,6 +861,7 @@ public final class CraftServer implements Server { org.spigotmc.SpigotConfig.init((File) console.options.valueOf("spigot-settings")); // Spigot com.destroystokyo.paper.PaperConfig.init((File) console.options.valueOf("paper-settings")); // Paper com.tuinity.tuinity.config.TuinityConfig.init((File) console.options.valueOf("tuinity-settings")); // Tuinity - Server Config @@ -384,7 +384,7 @@ index 5100460bab83cd75ac8dcdcc50ea663b1c486d00..b5d274c1fe214ea274057084bc40d6ee for (WorldServer world : console.getWorlds()) { world.worldDataServer.setDifficulty(config.difficulty); world.setSpawnFlags(config.spawnMonsters, config.spawnAnimals); -@@ -897,6 +898,7 @@ public final class CraftServer implements Server { +@@ -896,6 +897,7 @@ public final class CraftServer implements Server { world.spigotConfig.init(); // Spigot world.paperConfig.init(); // Paper world.tuinityConfig.init(); // Tuinity - Server Config @@ -392,7 +392,7 @@ index 5100460bab83cd75ac8dcdcc50ea663b1c486d00..b5d274c1fe214ea274057084bc40d6ee } Plugin[] pluginClone = pluginManager.getPlugins().clone(); // Paper -@@ -915,6 +917,7 @@ public final class CraftServer implements Server { +@@ -914,6 +916,7 @@ public final class CraftServer implements Server { reloadData(); org.spigotmc.SpigotConfig.registerCommands(); // Spigot com.destroystokyo.paper.PaperConfig.registerCommands(); // Paper diff --git a/patches/Purpur/patches/server/0008-AFK-API.patch b/patches/Purpur/patches/server/0008-AFK-API.patch index 98a8920f..8ca54cc8 100644 --- a/patches/Purpur/patches/server/0008-AFK-API.patch +++ b/patches/Purpur/patches/server/0008-AFK-API.patch @@ -263,10 +263,10 @@ index 361f7857e461578e90cb71e15027dadaf794cb69..2578a4677d1ee060f687be531e696b7c + } } diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index 7c18b22c7b93b6ca1189e481dde17476797b8fd5..debf252a23d0178f06fdadb9c27c3c66b9bbc2d0 100644 +index ed7b91bf703c7e7d5cbe323d9ab1c299c33ebad1..e319f3b1282af8019ae706f46e3978e789fbc877 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -@@ -2223,4 +2223,21 @@ public class CraftPlayer extends CraftHumanEntity implements Player { +@@ -2222,4 +2222,21 @@ public class CraftPlayer extends CraftHumanEntity implements Player { return spigot; } // Spigot end @@ -289,10 +289,10 @@ index 7c18b22c7b93b6ca1189e481dde17476797b8fd5..debf252a23d0178f06fdadb9c27c3c66 + // Purpur end } diff --git a/src/main/java/org/spigotmc/ActivationRange.java b/src/main/java/org/spigotmc/ActivationRange.java -index 0b93635ba59df4eb4456a97c5e9b51ab5aeda53f..b47d6fa2de3368d1afe329573bc18c3541bb7377 100644 +index 6ade13fd88c381280f619daaa8d6b241c67dd9d9..f80526939be358ac46430f35f3fdc7f88038c262 100644 --- a/src/main/java/org/spigotmc/ActivationRange.java +++ b/src/main/java/org/spigotmc/ActivationRange.java -@@ -207,6 +207,7 @@ public class ActivationRange +@@ -205,6 +205,7 @@ public class ActivationRange { player.activatedTick = MinecraftServer.currentTick; diff --git a/patches/Purpur/patches/server/0009-Bring-back-server-name.patch b/patches/Purpur/patches/server/0009-Bring-back-server-name.patch index 4fc877ce..28dfe1ec 100644 --- a/patches/Purpur/patches/server/0009-Bring-back-server-name.patch +++ b/patches/Purpur/patches/server/0009-Bring-back-server-name.patch @@ -17,10 +17,10 @@ index 65961a03728852bd75367083a0de6fd0082b17cb..780474397acb4d0e7ecb4540e1a2db57 public final boolean spawnNpcs = this.getBoolean("spawn-npcs", true); public final boolean pvp = this.getBoolean("pvp", true); diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index b5d274c1fe214ea274057084bc40d6eeb618b21d..43ee4f6ba778ceb0b34906ace86f0f12587a8e8d 100644 +index 8cd8db287bb4110e17ec0da57ee1547ca1f221d7..529f50aa6755c202ac2d3a6d0e4dfd38c4eaf6e8 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -@@ -2450,4 +2450,11 @@ public final class CraftServer implements Server { +@@ -2451,4 +2451,11 @@ public final class CraftServer implements Server { return mobGoals; } // Paper end diff --git a/patches/Purpur/patches/server/0011-LivingEntity-safeFallDistance.patch b/patches/Purpur/patches/server/0011-LivingEntity-safeFallDistance.patch index eb1caa15..0257ff25 100644 --- a/patches/Purpur/patches/server/0011-LivingEntity-safeFallDistance.patch +++ b/patches/Purpur/patches/server/0011-LivingEntity-safeFallDistance.patch @@ -62,10 +62,10 @@ index 87b66c284208f12e9e7cd1c9950ada8d0fbf26a5..59699bb23a189b7e53737b2f8f526360 protected void playBlockStepSound() { diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java -index 16e69cfd4994fd6850ee3635ea819379412351c9..0292cae6225ae2ee156f436c8827a018e8ffa723 100644 +index c1350bbf62fc5c5e18509f378edf16e8b210cfe8..84aeffac2c2c12d98e9cec05314668a93bb5ed91 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java -@@ -826,4 +826,16 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity { +@@ -833,4 +833,16 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity { getHandle().setHurtDirection(hurtDirection); } // Paper end diff --git a/patches/Purpur/patches/server/0012-Lagging-threshold.patch b/patches/Purpur/patches/server/0012-Lagging-threshold.patch index a99a3dd1..6affec21 100644 --- a/patches/Purpur/patches/server/0012-Lagging-threshold.patch +++ b/patches/Purpur/patches/server/0012-Lagging-threshold.patch @@ -41,10 +41,10 @@ index 4627261562a1482aecf4034b8717ecccc2dd9eb0..a34ed978596f1a466b0b48e7db92ac4f public static boolean enderChestSixRows = false; public static boolean enderChestPermissionRows = false; diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index 43ee4f6ba778ceb0b34906ace86f0f12587a8e8d..2ddf0e5589b6f45f502e6f675000fec361b186fe 100644 +index 529f50aa6755c202ac2d3a6d0e4dfd38c4eaf6e8..cb54a5c340a8f2b82668fc7b8e3beeb977cd3c80 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -@@ -2456,5 +2456,10 @@ public final class CraftServer implements Server { +@@ -2457,5 +2457,10 @@ public final class CraftServer implements Server { public String getServerName() { return getProperties().serverName; } diff --git a/patches/Purpur/patches/server/0016-Player-invulnerabilities.patch b/patches/Purpur/patches/server/0016-Player-invulnerabilities.patch index 64939127..2e22f689 100644 --- a/patches/Purpur/patches/server/0016-Player-invulnerabilities.patch +++ b/patches/Purpur/patches/server/0016-Player-invulnerabilities.patch @@ -113,10 +113,10 @@ index 2578a4677d1ee060f687be531e696b7c7be89e84..c441fcea9b2b5a77b801c8a69541cf42 + } } diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index debf252a23d0178f06fdadb9c27c3c66b9bbc2d0..8a28c68c5fc22838c62ceef738b330afb840c4c6 100644 +index e319f3b1282af8019ae706f46e3978e789fbc877..62ef7bb712e91fed150bf9c16c11635a9aaaab67 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -@@ -2239,5 +2239,20 @@ public class CraftPlayer extends CraftHumanEntity implements Player { +@@ -2238,5 +2238,20 @@ public class CraftPlayer extends CraftHumanEntity implements Player { public void resetIdleTimer() { getHandle().resetIdleTimer(); } diff --git a/patches/Purpur/patches/server/0073-Add-5-second-tps-average-in-tps.patch b/patches/Purpur/patches/server/0073-Add-5-second-tps-average-in-tps.patch index 03fc7d75..acddcf36 100644 --- a/patches/Purpur/patches/server/0073-Add-5-second-tps-average-in-tps.patch +++ b/patches/Purpur/patches/server/0073-Add-5-second-tps-average-in-tps.patch @@ -47,10 +47,10 @@ index b795128c5a69f65883fdd318a8a5b2a65512bb16..1296d06bd7c4abb3a43679e382e83319 lagging = recentTps[0] < net.pl3x.purpur.PurpurConfig.laggingThreshold; // Purpur tickSection = curTime; diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index 2ddf0e5589b6f45f502e6f675000fec361b186fe..413c55feb6b1c2ddc80aa8dc1c83ed13b2c4c4a5 100644 +index cb54a5c340a8f2b82668fc7b8e3beeb977cd3c80..dfe6777db04bb550ae0e761addd26b2d5abf3baf 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -@@ -2248,6 +2248,7 @@ public final class CraftServer implements Server { +@@ -2247,6 +2247,7 @@ public final class CraftServer implements Server { @Override public double[] getTPS() { return new double[] { @@ -59,10 +59,10 @@ index 2ddf0e5589b6f45f502e6f675000fec361b186fe..413c55feb6b1c2ddc80aa8dc1c83ed13 net.minecraft.server.MinecraftServer.getServer().tps5.getAverage(), net.minecraft.server.MinecraftServer.getServer().tps15.getAverage() diff --git a/src/main/java/org/spigotmc/TicksPerSecondCommand.java b/src/main/java/org/spigotmc/TicksPerSecondCommand.java -index 7218f23df4d06ff1ca612286e4a404246389ab18..3c7b9a6d24e064f9c1ec5fb6d52f42627944d7fa 100644 +index e62890433ffbe0b4e48942fe6c38b599a19e58fd..312248b5c6febc6a3c10940714fac7fbc3c53b7f 100644 --- a/src/main/java/org/spigotmc/TicksPerSecondCommand.java +++ b/src/main/java/org/spigotmc/TicksPerSecondCommand.java -@@ -33,7 +33,7 @@ public class TicksPerSecondCommand extends Command +@@ -31,7 +31,7 @@ public class TicksPerSecondCommand extends Command for ( int i = 0; i < tps.length; i++) { tpsAvg[i] = format( tps[i] ); } diff --git a/patches/Purpur/patches/server/0074-Implement-elytra-settings.patch b/patches/Purpur/patches/server/0074-Implement-elytra-settings.patch index 38512f2c..c4fac0a1 100644 --- a/patches/Purpur/patches/server/0074-Implement-elytra-settings.patch +++ b/patches/Purpur/patches/server/0074-Implement-elytra-settings.patch @@ -72,10 +72,10 @@ index e747ee83f1a69a4a4bad87e720abc9b085fb6149..a4edfb02fd350433020b0f3699726b61 if (this.count == 1 && t0 instanceof EntityHuman) { org.bukkit.craftbukkit.event.CraftEventFactory.callPlayerItemBreakEvent((EntityHuman) t0, this); diff --git a/src/main/java/net/minecraft/server/ItemTrident.java b/src/main/java/net/minecraft/server/ItemTrident.java -index 3663b701736b583db80e3119b642e47b8a0e6ff3..18f767dc574e7345d2db73e6be44f4e65eb58c63 100644 +index 4eeeecef51cedcd0fe46ac4983472e214ccc9dad..0109d8db4f154802daef570e6d8b479cb5a49dab 100644 --- a/src/main/java/net/minecraft/server/ItemTrident.java +++ b/src/main/java/net/minecraft/server/ItemTrident.java -@@ -102,6 +102,16 @@ public class ItemTrident extends Item implements ItemVanishable { +@@ -101,6 +101,16 @@ public class ItemTrident extends Item implements ItemVanishable { f2 *= f6 / f5; f3 *= f6 / f5; f4 *= f6 / f5; diff --git a/patches/Purpur/patches/server/0077-Configurable-jockey-options.patch b/patches/Purpur/patches/server/0077-Configurable-jockey-options.patch index 95ea667b..d64ce51a 100644 --- a/patches/Purpur/patches/server/0077-Configurable-jockey-options.patch +++ b/patches/Purpur/patches/server/0077-Configurable-jockey-options.patch @@ -61,7 +61,7 @@ index 65bae8c9f28c23b0b5dd5d048e7fc7daf328075c..32b75f710b12efbcecec2c8d72d4d8cb public void setAngerTarget(@Nullable UUID uuid) { this.br = uuid; diff --git a/src/main/java/net/minecraft/server/EntityZombie.java b/src/main/java/net/minecraft/server/EntityZombie.java -index 752e39ad94ea9e8254853a3fda846be2bd436918..03263b94aaeeb8667e0f82c832e4743f4c63108e 100644 +index 4078f5dd68d0ca49886911d1bf58731129d731be..2ff49b5c8ba62f781cdaef2d19c0504cb710b3ff 100644 --- a/src/main/java/net/minecraft/server/EntityZombie.java +++ b/src/main/java/net/minecraft/server/EntityZombie.java @@ -3,6 +3,7 @@ package net.minecraft.server; @@ -93,7 +93,7 @@ index 752e39ad94ea9e8254853a3fda846be2bd436918..03263b94aaeeb8667e0f82c832e4743f @Override protected void initPathfinder() { if (world.paperConfig.zombiesTargetTurtleEggs) this.goalSelector.a(4, new EntityZombie.a(this, 1.0D, 3)); // Paper -@@ -442,19 +457,19 @@ public class EntityZombie extends EntityMonster { +@@ -445,19 +460,19 @@ public class EntityZombie extends EntityMonster { if (object instanceof EntityZombie.GroupDataZombie) { EntityZombie.GroupDataZombie entityzombie_groupdatazombie = (EntityZombie.GroupDataZombie) object; @@ -119,7 +119,7 @@ index 752e39ad94ea9e8254853a3fda846be2bd436918..03263b94aaeeb8667e0f82c832e4743f EntityChicken entitychicken1 = (EntityChicken) EntityTypes.CHICKEN.a(this.world); entitychicken1.setPositionRotation(this.locX(), this.locY(), this.locZ(), this.yaw, 0.0F); -@@ -462,6 +477,7 @@ public class EntityZombie extends EntityMonster { +@@ -465,6 +480,7 @@ public class EntityZombie extends EntityMonster { entitychicken1.setChickenJockey(true); this.startRiding(entitychicken1); worldaccess.addEntity(entitychicken1, CreatureSpawnEvent.SpawnReason.MOUNT); // CraftBukkit @@ -127,7 +127,7 @@ index 752e39ad94ea9e8254853a3fda846be2bd436918..03263b94aaeeb8667e0f82c832e4743f } } } -@@ -564,7 +580,7 @@ public class EntityZombie extends EntityMonster { +@@ -567,7 +583,7 @@ public class EntityZombie extends EntityMonster { public static class GroupDataZombie implements GroupDataEntity { diff --git a/patches/Purpur/patches/server/0079-Add-phantom-spawning-options.patch b/patches/Purpur/patches/server/0079-Add-phantom-spawning-options.patch index d39fbd89..8a1a033e 100644 --- a/patches/Purpur/patches/server/0079-Add-phantom-spawning-options.patch +++ b/patches/Purpur/patches/server/0079-Add-phantom-spawning-options.patch @@ -233,10 +233,10 @@ index 661ad8f8e67046211e001ea40d97660d7c88f8e5..ee91c33a7a2edca02caf5c71fd6429f9 return iblockdata.r(iblockaccess, blockposition) ? false : (iblockdata.isPowerSource() ? false : (!fluid.isEmpty() ? false : (iblockdata.a((Tag) TagsBlock.PREVENT_MOB_SPAWNING_INSIDE) ? false : !entitytypes.a(iblockdata)))); } diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java -index fb650c09dbcefa0ff021f7c508ff6811a48bee7a..68cce071c740c90149225b4a28af849237b4492b 100644 +index 226b5cd399449ca3587964221765e4d241dfc739..0f259913ddcf151bc0128f2591e1223a56a9e115 100644 --- a/src/main/java/net/minecraft/server/World.java +++ b/src/main/java/net/minecraft/server/World.java -@@ -1567,6 +1567,7 @@ public abstract class World implements GeneratorAccess, AutoCloseable { +@@ -1566,6 +1566,7 @@ public abstract class World implements GeneratorAccess, AutoCloseable { return new DifficultyDamageScaler(this.getDifficulty(), this.getDayTime(), i, f); } diff --git a/patches/Purpur/patches/server/0082-Add-allow-water-in-end-world-option.patch b/patches/Purpur/patches/server/0082-Add-allow-water-in-end-world-option.patch index 8c9ed235..c625397d 100644 --- a/patches/Purpur/patches/server/0082-Add-allow-water-in-end-world-option.patch +++ b/patches/Purpur/patches/server/0082-Add-allow-water-in-end-world-option.patch @@ -49,10 +49,10 @@ index 120bf8436fd82294c339add2e7bff1cda8311aea..848a185c04aa90a62e6bcc49ad68a748 return true; diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java -index 68cce071c740c90149225b4a28af849237b4492b..f260d01aad4db512952e5a53bf5bc01023bbd43d 100644 +index 0f259913ddcf151bc0128f2591e1223a56a9e115..1ac2e9f373ae5b4250ff9faf726a962a739d6faf 100644 --- a/src/main/java/net/minecraft/server/World.java +++ b/src/main/java/net/minecraft/server/World.java -@@ -1642,4 +1642,14 @@ public abstract class World implements GeneratorAccess, AutoCloseable { +@@ -1641,4 +1641,14 @@ public abstract class World implements GeneratorAccess, AutoCloseable { public final boolean isDebugWorld() { return this.debugWorld; } diff --git a/patches/Purpur/patches/server/0086-Squid-EAR-immunity.patch b/patches/Purpur/patches/server/0086-Squid-EAR-immunity.patch index 0281fb80..3db827a0 100644 --- a/patches/Purpur/patches/server/0086-Squid-EAR-immunity.patch +++ b/patches/Purpur/patches/server/0086-Squid-EAR-immunity.patch @@ -21,10 +21,10 @@ index 0b2a9a2d9f157dd9879c4429be6745859b4f28bf..01576ac82836733f42168c6a0779b45a public boolean villagerUseBrainTicksOnlyWhenLagging = true; public boolean villagerCanBeLeashed = false; diff --git a/src/main/java/org/spigotmc/ActivationRange.java b/src/main/java/org/spigotmc/ActivationRange.java -index b47d6fa2de3368d1afe329573bc18c3541bb7377..ff0621e08aaf058154f228abd46475ffaa3920cf 100644 +index f80526939be358ac46430f35f3fdc7f88038c262..66b7c75929cd98737628b9d4f22829b5b65b8373 100644 --- a/src/main/java/org/spigotmc/ActivationRange.java +++ b/src/main/java/org/spigotmc/ActivationRange.java -@@ -378,6 +378,7 @@ public class ActivationRange +@@ -376,6 +376,7 @@ public class ActivationRange */ public static boolean checkIfActive(Entity entity) { diff --git a/patches/Purpur/patches/server/0104-Ridables.patch b/patches/Purpur/patches/server/0104-Ridables.patch index be773652..93eadf27 100644 --- a/patches/Purpur/patches/server/0104-Ridables.patch +++ b/patches/Purpur/patches/server/0104-Ridables.patch @@ -614,7 +614,7 @@ index 74082136b38491a0a50d152c455edfa61a6afb9f..dcfad16e06450068d5801fc002c96501 if (this.c <= 0) { this.c = 100; diff --git a/src/main/java/net/minecraft/server/EntityCat.java b/src/main/java/net/minecraft/server/EntityCat.java -index 35f511c398795a0edeb5fe6d802f2a2bf754bf3a..700314b02abb355e6a600d744887a705cbcfb4e4 100644 +index 675083e3952779e43bf8cc3175ad70458a79e49c..0e6552d77adb95c94cb06b6f9289c4c12e6955bb 100644 --- a/src/main/java/net/minecraft/server/EntityCat.java +++ b/src/main/java/net/minecraft/server/EntityCat.java @@ -41,6 +41,25 @@ public class EntityCat extends EntityTameableAnimal { @@ -4798,7 +4798,7 @@ index e76e6ebde73b93dc06e76b71cdf6371c3654160a..d92fe8013fb3b43cb7eabdf1c624291b this.eL(); } diff --git a/src/main/java/net/minecraft/server/EntityZombie.java b/src/main/java/net/minecraft/server/EntityZombie.java -index 03263b94aaeeb8667e0f82c832e4743f4c63108e..d835ce3fe7c71333efeed5b9cf2a827bebae97f2 100644 +index 2ff49b5c8ba62f781cdaef2d19c0504cb710b3ff..7e1e056bdd966a14a184eb76717116998b6e5cb3 100644 --- a/src/main/java/net/minecraft/server/EntityZombie.java +++ b/src/main/java/net/minecraft/server/EntityZombie.java @@ -47,6 +47,16 @@ public class EntityZombie extends EntityMonster { @@ -5026,10 +5026,10 @@ index 5af554870bcf36e47aef43b966b141b9eda6c4d5..c59305ef7dd7847e204d4c4ed79758bf return new Vec3D(this.x * d0, this.y * d1, this.z * d2); } diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java -index f260d01aad4db512952e5a53bf5bc01023bbd43d..cf1f4fe5832781df7d0bdd5eb24eff8539691c30 100644 +index 1ac2e9f373ae5b4250ff9faf726a962a739d6faf..97cc98af100edfad82668200759a5eed8fc67558 100644 --- a/src/main/java/net/minecraft/server/World.java +++ b/src/main/java/net/minecraft/server/World.java -@@ -1651,5 +1651,10 @@ public abstract class World implements GeneratorAccess, AutoCloseable { +@@ -1650,5 +1650,10 @@ public abstract class World implements GeneratorAccess, AutoCloseable { public boolean isTheEnd() { return getWorld().getEnvironment() == org.bukkit.World.Environment.THE_END; } @@ -6381,7 +6381,7 @@ index a6d849facba1526ae2a2b7f3fb9a140d0b50289c..b56ca054b37f5887e13b481baad8132f + // Purpur end } diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java -index b66fb60ad3949cebb3ff10878b7490675e703234..16a816677a71e7fd03ada10a6795bdaf6753c514 100644 +index 9ff0f70154367b99317ed3927a97ec08c7e9e015..90c0033e31ad5e115568bc092d3515b5b99e965a 100644 --- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java +++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java @@ -527,6 +527,18 @@ public class CraftEventFactory { diff --git a/patches/Purpur/patches/server/0108-LivingEntity-broadcastItemBreak.patch b/patches/Purpur/patches/server/0108-LivingEntity-broadcastItemBreak.patch index 57899e54..75d1de0e 100644 --- a/patches/Purpur/patches/server/0108-LivingEntity-broadcastItemBreak.patch +++ b/patches/Purpur/patches/server/0108-LivingEntity-broadcastItemBreak.patch @@ -5,10 +5,10 @@ Subject: [PATCH] LivingEntity#broadcastItemBreak diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java -index 0292cae6225ae2ee156f436c8827a018e8ffa723..9f5802364d4098173be2d08893efa697033407e9 100644 +index 84aeffac2c2c12d98e9cec05314668a93bb5ed91..6a15b0d5e8446ab2a5e5bd11020a4f812b6c7877 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java -@@ -837,5 +837,11 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity { +@@ -844,5 +844,11 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity { public void setSafeFallDistance(float safeFallDistance) { getHandle().safeFallDistance = safeFallDistance; } diff --git a/patches/Purpur/patches/server/0110-Allow-toggling-special-MobSpawners-per-world.patch b/patches/Purpur/patches/server/0110-Allow-toggling-special-MobSpawners-per-world.patch index 92e9f790..f7d64b0a 100644 --- a/patches/Purpur/patches/server/0110-Allow-toggling-special-MobSpawners-per-world.patch +++ b/patches/Purpur/patches/server/0110-Allow-toggling-special-MobSpawners-per-world.patch @@ -29,7 +29,7 @@ index 8d89f51182444852062d549d23c00a93e601eb38..072ec40f751b19c2a78dfcc6e439c643 if (SpawnerCreature.a(EntityPositionTypes.Surface.ON_GROUND, iworldreader, blockposition2, EntityTypes.WANDERING_TRADER)) { blockposition1 = blockposition2; diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java -index cf1f4fe5832781df7d0bdd5eb24eff8539691c30..aa1b037c0103552761b81318f1d2ad8215bd0370 100644 +index 97cc98af100edfad82668200759a5eed8fc67558..ded92fe7c7871bae6e9741747a67636d570cdeef 100644 --- a/src/main/java/net/minecraft/server/World.java +++ b/src/main/java/net/minecraft/server/World.java @@ -156,7 +156,7 @@ public abstract class World implements GeneratorAccess, AutoCloseable { diff --git a/patches/Purpur/patches/server/0114-Add-option-to-disable-zombie-aggressiveness-towards-.patch b/patches/Purpur/patches/server/0114-Add-option-to-disable-zombie-aggressiveness-towards-.patch index 5fa6de9c..65c5e403 100644 --- a/patches/Purpur/patches/server/0114-Add-option-to-disable-zombie-aggressiveness-towards-.patch +++ b/patches/Purpur/patches/server/0114-Add-option-to-disable-zombie-aggressiveness-towards-.patch @@ -45,7 +45,7 @@ index 125eab60f2b4657e52a71eddf7586c574945252e..638efc67d66001ee085957d4698f51a7 this.targetSelector.a(5, new PathfinderGoalNearestAttackableTarget<>(this, EntityTurtle.class, 10, true, false, EntityTurtle.bo)); } diff --git a/src/main/java/net/minecraft/server/EntityZombie.java b/src/main/java/net/minecraft/server/EntityZombie.java -index d835ce3fe7c71333efeed5b9cf2a827bebae97f2..556f7a3ebb5c58a87471b2d098f29ffb216aaa1d 100644 +index 7e1e056bdd966a14a184eb76717116998b6e5cb3..fd28ef623f8b6db5e36328d4ef2771e841db0a9d 100644 --- a/src/main/java/net/minecraft/server/EntityZombie.java +++ b/src/main/java/net/minecraft/server/EntityZombie.java @@ -86,7 +86,18 @@ public class EntityZombie extends EntityMonster { diff --git a/patches/Purpur/patches/server/0126-Add-adjustable-breeding-cooldown-to-config.patch b/patches/Purpur/patches/server/0126-Add-adjustable-breeding-cooldown-to-config.patch index 8cea3c01..e4370e53 100644 --- a/patches/Purpur/patches/server/0126-Add-adjustable-breeding-cooldown-to-config.patch +++ b/patches/Purpur/patches/server/0126-Add-adjustable-breeding-cooldown-to-config.patch @@ -33,7 +33,7 @@ index bba343542e7e6fa83ec802d97b4c139bb210ab28..d9f9e2235d091e14e5d34bb9a3273e7f int experience = this.getRandom().nextInt(7) + 1; org.bukkit.event.entity.EntityBreedEvent entityBreedEvent = org.bukkit.craftbukkit.event.CraftEventFactory.callEntityBreedEvent(entityageable, this, entityanimal, entityplayer, this.breedItem, experience); diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java -index aa1b037c0103552761b81318f1d2ad8215bd0370..91aa8a2bc111ee6935ada0ae471fe1a3bc8fad80 100644 +index ded92fe7c7871bae6e9741747a67636d570cdeef..7c367fe6152c30aab3e53c8f88cceba606891c93 100644 --- a/src/main/java/net/minecraft/server/World.java +++ b/src/main/java/net/minecraft/server/World.java @@ -104,6 +104,48 @@ public abstract class World implements GeneratorAccess, AutoCloseable { diff --git a/patches/Purpur/patches/server/0127-Make-animal-breeding-times-configurable.patch b/patches/Purpur/patches/server/0127-Make-animal-breeding-times-configurable.patch index 235b12fc..899fc5f2 100644 --- a/patches/Purpur/patches/server/0127-Make-animal-breeding-times-configurable.patch +++ b/patches/Purpur/patches/server/0127-Make-animal-breeding-times-configurable.patch @@ -46,7 +46,7 @@ index d8354ec4d19fc3fbddc2551ee217acb137482e63..ded4e10f5082fb5aa25368d9035affba @Override diff --git a/src/main/java/net/minecraft/server/EntityCat.java b/src/main/java/net/minecraft/server/EntityCat.java -index 700314b02abb355e6a600d744887a705cbcfb4e4..8346db6c8521064ff51445a0da747a2d70d14633 100644 +index 0e6552d77adb95c94cb06b6f9289c4c12e6955bb..437a7b8ffb40c461f1778d91591fa6c4dcf36834 100644 --- a/src/main/java/net/minecraft/server/EntityCat.java +++ b/src/main/java/net/minecraft/server/EntityCat.java @@ -58,6 +58,11 @@ public class EntityCat extends EntityTameableAnimal { diff --git a/patches/Purpur/patches/server/0133-Add-critical-hit-check-to-EntityDamagedByEntityEvent.patch b/patches/Purpur/patches/server/0133-Add-critical-hit-check-to-EntityDamagedByEntityEvent.patch index a635f27f..e774a7bf 100644 --- a/patches/Purpur/patches/server/0133-Add-critical-hit-check-to-EntityDamagedByEntityEvent.patch +++ b/patches/Purpur/patches/server/0133-Add-critical-hit-check-to-EntityDamagedByEntityEvent.patch @@ -33,7 +33,7 @@ index e6e180ea46529e80eeab95f550dee5f3f8198ba8..b6bfd8f5073ce481dfe2b1667ece42d3 if (flag5) { if (i > 0) { diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java -index 16a816677a71e7fd03ada10a6795bdaf6753c514..5b86e21332cd123fec9e2753a81977c6b9761e13 100644 +index 90c0033e31ad5e115568bc092d3515b5b99e965a..d98fbec82ae9110974ca562edbd7e07090e35bb0 100644 --- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java +++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java @@ -1073,7 +1073,7 @@ public class CraftEventFactory { diff --git a/patches/Purpur/patches/server/0149-Spread-out-and-optimise-player-list-ticks.patch b/patches/Purpur/patches/server/0149-Spread-out-and-optimise-player-list-ticks.patch index 29a0c495..dcb996c1 100644 --- a/patches/Purpur/patches/server/0149-Spread-out-and-optimise-player-list-ticks.patch +++ b/patches/Purpur/patches/server/0149-Spread-out-and-optimise-player-list-ticks.patch @@ -56,10 +56,10 @@ index 3c19e931ad7d5330f1c77ef65aaa5858a001e4df..0efc210ad55d843fd297f0caa88a5f35 public void sendAll(Packet packet) { diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index 8a28c68c5fc22838c62ceef738b330afb840c4c6..95e548eea5acbece0e7036f23d79b6fc61e6786f 100644 +index 62ef7bb712e91fed150bf9c16c11635a9aaaab67..16fdd444a8064df688b1760760d584b36a700957 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -@@ -1382,7 +1382,13 @@ public class CraftPlayer extends CraftHumanEntity implements Player { +@@ -1381,7 +1381,13 @@ public class CraftPlayer extends CraftHumanEntity implements Player { @Override public boolean canSee(Player player) { diff --git a/patches/Purpur/patches/server/0152-Configurable-entity-base-attributes.patch b/patches/Purpur/patches/server/0152-Configurable-entity-base-attributes.patch index 32fe9fe8..1c269eb0 100644 --- a/patches/Purpur/patches/server/0152-Configurable-entity-base-attributes.patch +++ b/patches/Purpur/patches/server/0152-Configurable-entity-base-attributes.patch @@ -60,7 +60,7 @@ index dcfad16e06450068d5801fc002c9650102dbf995..90b90fa33b39020189a1d4a5826fa3ab @Override diff --git a/src/main/java/net/minecraft/server/EntityCat.java b/src/main/java/net/minecraft/server/EntityCat.java -index 8346db6c8521064ff51445a0da747a2d70d14633..e411da6f0f55b965fe9e303cf3b56201d33cd260 100644 +index 437a7b8ffb40c461f1778d91591fa6c4dcf36834..f973408b1f098c8a090401205f809e95fdcf2f62 100644 --- a/src/main/java/net/minecraft/server/EntityCat.java +++ b/src/main/java/net/minecraft/server/EntityCat.java @@ -63,6 +63,11 @@ public class EntityCat extends EntityTameableAnimal { @@ -1245,7 +1245,7 @@ index d92fe8013fb3b43cb7eabdf1c624291b7e881889..bcc4aa1d3f09e43016d0009cd04dd6b7 @Override diff --git a/src/main/java/net/minecraft/server/EntityZombie.java b/src/main/java/net/minecraft/server/EntityZombie.java -index 556f7a3ebb5c58a87471b2d098f29ffb216aaa1d..a5699314be3f47ed9b27a5d21a396c5282592c7b 100644 +index fd28ef623f8b6db5e36328d4ef2771e841db0a9d..4dc027577656b423cd06a1eca5fdf9c9a5fcf107 100644 --- a/src/main/java/net/minecraft/server/EntityZombie.java +++ b/src/main/java/net/minecraft/server/EntityZombie.java @@ -68,6 +68,15 @@ public class EntityZombie extends EntityMonster { @@ -1264,7 +1264,7 @@ index 556f7a3ebb5c58a87471b2d098f29ffb216aaa1d..a5699314be3f47ed9b27a5d21a396c52 // Purpur end @Override -@@ -547,7 +556,7 @@ public class EntityZombie extends EntityMonster { +@@ -550,7 +559,7 @@ public class EntityZombie extends EntityMonster { } protected void eV() { diff --git a/patches/Purpur/patches/server/0162-Add-EntityTeleportHinderedEvent.patch b/patches/Purpur/patches/server/0162-Add-EntityTeleportHinderedEvent.patch index cc88243c..9bb6cf4f 100644 --- a/patches/Purpur/patches/server/0162-Add-EntityTeleportHinderedEvent.patch +++ b/patches/Purpur/patches/server/0162-Add-EntityTeleportHinderedEvent.patch @@ -123,10 +123,10 @@ index b56ca054b37f5887e13b481baad8132f1d28638b..eb0ce05d25ba33626d2dd3e3380d805c } diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index 95e548eea5acbece0e7036f23d79b6fc61e6786f..70ed64ed22ffde672a4ecb0a7f7ac2a7b3f30112 100644 +index 16fdd444a8064df688b1760760d584b36a700957..77caf8d52cc0cafb99948787e72a0fd09743aa00 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -@@ -116,6 +116,7 @@ import org.bukkit.entity.EntityType; +@@ -115,6 +115,7 @@ import org.bukkit.entity.EntityType; import org.bukkit.entity.Player; import org.bukkit.event.player.PlayerRegisterChannelEvent; import org.bukkit.event.player.PlayerTeleportEvent; @@ -134,7 +134,7 @@ index 95e548eea5acbece0e7036f23d79b6fc61e6786f..70ed64ed22ffde672a4ecb0a7f7ac2a7 import org.bukkit.event.player.PlayerUnregisterChannelEvent; import org.bukkit.inventory.InventoryView.Property; import org.bukkit.inventory.ItemStack; -@@ -791,6 +792,10 @@ public class CraftPlayer extends CraftHumanEntity implements Player { +@@ -790,6 +791,10 @@ public class CraftPlayer extends CraftHumanEntity implements Player { } if (entity.isVehicle()) { diff --git a/patches/Tuinity/patches/server/0002-Brand-changes.patch b/patches/Tuinity/patches/server/0002-Brand-changes.patch index 8d30ad58..d6c066da 100644 --- a/patches/Tuinity/patches/server/0002-Brand-changes.patch +++ b/patches/Tuinity/patches/server/0002-Brand-changes.patch @@ -53,10 +53,10 @@ index ccf2d0b090f0c360dfc7886bb0726e099acec42c..95dd6f2034439699399b0f51ab2b761a public CrashReport b(CrashReport crashreport) { diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index 9ad6ea5ef331c3c057f39115d00f855ca57e219b..f16432ae1cd9d5ccec56892a08952ec78003d066 100644 +index 85023c68a9c85802383cfcf52ec21392abdf3d85..56e1817c131a2f5ba06418dd96addafd34677f28 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -@@ -232,7 +232,7 @@ import javax.annotation.Nullable; // Paper +@@ -231,7 +231,7 @@ import javax.annotation.Nullable; // Paper import javax.annotation.Nonnull; // Paper public final class CraftServer implements Server { diff --git a/patches/Tuinity/patches/server/0005-Tuinity-Server-Config.patch b/patches/Tuinity/patches/server/0005-Tuinity-Server-Config.patch index 90890905..20336d1d 100644 --- a/patches/Tuinity/patches/server/0005-Tuinity-Server-Config.patch +++ b/patches/Tuinity/patches/server/0005-Tuinity-Server-Config.patch @@ -286,7 +286,7 @@ index c9692b3e50c503affaadd217c166029182def6e4..7177c1a0cc991916d98c82f025a910fa org.spigotmc.WatchdogThread.hasStarted = true; // Paper Arrays.fill( recentTps, 20 ); diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java -index 02303f00e243748b9d1c4a37719fcf5c8d271ed9..38c49d04d7bfb9c116a3b6eb87daaad2c75040cf 100644 +index f5ab99156ce5429e63976183cbf115d5340a83a1..8efdd9bd0827d1f6a31d5f943f986dabe7d05137 100644 --- a/src/main/java/net/minecraft/server/World.java +++ b/src/main/java/net/minecraft/server/World.java @@ -94,6 +94,8 @@ public abstract class World implements GeneratorAccess, AutoCloseable { @@ -307,10 +307,10 @@ index 02303f00e243748b9d1c4a37719fcf5c8d271ed9..38c49d04d7bfb9c116a3b6eb87daaad2 this.world = new CraftWorld((WorldServer) this, gen, env); this.ticksPerAnimalSpawns = this.getServer().getTicksPerAnimalSpawns(); // CraftBukkit diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index f16432ae1cd9d5ccec56892a08952ec78003d066..72916822b74c06865c8fb0135029d199343f5fbd 100644 +index 56e1817c131a2f5ba06418dd96addafd34677f28..3944ef9067ee1eeb1c0d208d885d9eca16267602 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -@@ -861,6 +861,7 @@ public final class CraftServer implements Server { +@@ -860,6 +860,7 @@ public final class CraftServer implements Server { org.spigotmc.SpigotConfig.init((File) console.options.valueOf("spigot-settings")); // Spigot com.destroystokyo.paper.PaperConfig.init((File) console.options.valueOf("paper-settings")); // Paper @@ -318,7 +318,7 @@ index f16432ae1cd9d5ccec56892a08952ec78003d066..72916822b74c06865c8fb0135029d199 for (WorldServer world : console.getWorlds()) { world.worldDataServer.setDifficulty(config.difficulty); world.setSpawnFlags(config.spawnMonsters, config.spawnAnimals); -@@ -895,6 +896,7 @@ public final class CraftServer implements Server { +@@ -894,6 +895,7 @@ public final class CraftServer implements Server { } world.spigotConfig.init(); // Spigot world.paperConfig.init(); // Paper diff --git a/patches/Tuinity/patches/server/0007-Multi-Threaded-ticking-CraftBukkit.patch b/patches/Tuinity/patches/server/0007-Multi-Threaded-ticking-CraftBukkit.patch index 5366f4c6..54dbba4a 100644 --- a/patches/Tuinity/patches/server/0007-Multi-Threaded-ticking-CraftBukkit.patch +++ b/patches/Tuinity/patches/server/0007-Multi-Threaded-ticking-CraftBukkit.patch @@ -49,10 +49,10 @@ index 0f66484a80d3cc7caaf8a111bd50229e673bd8e0..f10fa659680f8a574f77d260bbc52be3 } \ No newline at end of file diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index 72916822b74c06865c8fb0135029d199343f5fbd..bd7bccbea1a0a052ef7bd6ab299ae72336874911 100644 +index 3944ef9067ee1eeb1c0d208d885d9eca16267602..44524e08bed8897e43e408b6f179bf798fed9b62 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -@@ -1860,7 +1860,10 @@ public final class CraftServer implements Server { +@@ -1859,7 +1859,10 @@ public final class CraftServer implements Server { @Override public boolean isPrimaryThread() { diff --git a/patches/Tuinity/patches/server/0008-Add-soft-async-catcher.patch b/patches/Tuinity/patches/server/0008-Add-soft-async-catcher.patch index 59a360e5..7155a65a 100644 --- a/patches/Tuinity/patches/server/0008-Add-soft-async-catcher.patch +++ b/patches/Tuinity/patches/server/0008-Add-soft-async-catcher.patch @@ -168,7 +168,7 @@ index af9d54ef057d5f6977cf77c57cde25b6b0d1f39d..8816d3326af25431e2235c5e735e86c7 i = 0; } diff --git a/src/main/java/net/minecraft/server/ChunkMapDistance.java b/src/main/java/net/minecraft/server/ChunkMapDistance.java -index 3c7b225edbe23dc1959002293a6f8b816287b5a8..d3588e238506ea859407b72da0d0cf291945b2ec 100644 +index 76f9bb728def91744910d0b680b73e753f1a2b26..84ff9cfe89defad2e907708f837d33f620a84ef3 100644 --- a/src/main/java/net/minecraft/server/ChunkMapDistance.java +++ b/src/main/java/net/minecraft/server/ChunkMapDistance.java @@ -65,6 +65,7 @@ public abstract class ChunkMapDistance { @@ -210,8 +210,8 @@ index 3c7b225edbe23dc1959002293a6f8b816287b5a8..d3588e238506ea859407b72da0d0cf29 + com.tuinity.tuinity.util.TickThread.softEnsureTickThread("Async player remove"); // Tuinity long i = sectionposition.r().pair(); ObjectSet objectset = (ObjectSet) this.c.get(i); - -@@ -446,6 +451,7 @@ public abstract class ChunkMapDistance { + if (objectset == null) return; // CraftBukkit - SPIGOT-6208 +@@ -447,6 +452,7 @@ public abstract class ChunkMapDistance { // CraftBukkit start public void removeAllTicketsFor(TicketType ticketType, int ticketLevel, T ticketIdentifier) { @@ -304,7 +304,7 @@ index fb46fdeb22a7c31c8d132bdc80d657ae82c191be..2be8c1b7974f3f6271be60872d45123b this.noTickViewDistance = viewDistance; diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java -index 38c49d04d7bfb9c116a3b6eb87daaad2c75040cf..ab8a5c00e383ef84cb3e5acf9ac9221f672effdd 100644 +index 8efdd9bd0827d1f6a31d5f943f986dabe7d05137..43b5fa67a6b6e778a059063390fb47d6a599a948 100644 --- a/src/main/java/net/minecraft/server/World.java +++ b/src/main/java/net/minecraft/server/World.java @@ -363,6 +363,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 2fb8d8a2..b4e92991 100644 --- a/patches/Tuinity/patches/server/0009-Delay-chunk-unloads.patch +++ b/patches/Tuinity/patches/server/0009-Delay-chunk-unloads.patch @@ -47,7 +47,7 @@ index f10fa659680f8a574f77d260bbc52be349c244e8..7b12e7610444ff20f2c3f458887bd7d4 public final String worldName; diff --git a/src/main/java/net/minecraft/server/ChunkMapDistance.java b/src/main/java/net/minecraft/server/ChunkMapDistance.java -index d3588e238506ea859407b72da0d0cf291945b2ec..f1c686810fb4e9c05df45d664c93af73d17f0624 100644 +index 84ff9cfe89defad2e907708f837d33f620a84ef3..7f3887b0894aca0f972922f434382646a6ad6174 100644 --- a/src/main/java/net/minecraft/server/ChunkMapDistance.java +++ b/src/main/java/net/minecraft/server/ChunkMapDistance.java @@ -31,7 +31,7 @@ public abstract class ChunkMapDistance { 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 aaf7dece..dc148309 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 @@ -92,7 +92,7 @@ index 5c8dd000af238ea703c9f84a4621472f17955060..c9b6fc731f478976466972a4bdc5002e int j = MathHelper.floor(d1); int k = MathHelper.floor(d2); diff --git a/src/main/java/net/minecraft/server/PlayerConnectionUtils.java b/src/main/java/net/minecraft/server/PlayerConnectionUtils.java -index 7ea293f38dedd6066601d94adbe175a31c502e1f..e698dd22607b2b2c4068c5bfb03ac53eb5bac080 100644 +index 8c7080777b370f97e1291dfedde5b419290f39cc..7fff1b3e4eda519851b714502d33122c1e408009 100644 --- a/src/main/java/net/minecraft/server/PlayerConnectionUtils.java +++ b/src/main/java/net/minecraft/server/PlayerConnectionUtils.java @@ -13,10 +13,30 @@ public class PlayerConnectionUtils { 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 0525dbd5..d9eae21a 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 @@ -267,10 +267,10 @@ index 7177c1a0cc991916d98c82f025a910fa1e812493..0fc9b6356165fbee30d765dacc3586c2 // Spigot Start CrashReport crashreport; diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java -index ab8a5c00e383ef84cb3e5acf9ac9221f672effdd..e3ed8fb7881bc00b1b2345c1682f30057878d41a 100644 +index 43b5fa67a6b6e778a059063390fb47d6a599a948..165b8e20ab090284b7c70b5cc9c0d58242400b54 100644 --- a/src/main/java/net/minecraft/server/World.java +++ b/src/main/java/net/minecraft/server/World.java -@@ -901,6 +901,7 @@ public abstract class World implements GeneratorAccess, AutoCloseable { +@@ -900,6 +900,7 @@ public abstract class World implements GeneratorAccess, AutoCloseable { return; // Paper end } diff --git a/patches/Tuinity/patches/server/0021-Optimise-entity-hard-collision-checking.patch b/patches/Tuinity/patches/server/0021-Optimise-entity-hard-collision-checking.patch index e0dfa24e..1b80035b 100644 --- a/patches/Tuinity/patches/server/0021-Optimise-entity-hard-collision-checking.patch +++ b/patches/Tuinity/patches/server/0021-Optimise-entity-hard-collision-checking.patch @@ -191,10 +191,10 @@ index 2639c17b7f6100533f33124f9e49990cd303d161..b053bb74f6df174a27dbfd7b1b3e3ccb } diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java -index e3ed8fb7881bc00b1b2345c1682f30057878d41a..8ec6b3a1b8f5281b875cbb3cf85833ab3c208bc3 100644 +index 165b8e20ab090284b7c70b5cc9c0d58242400b54..15617d20883030b240014dbb258fd0086fef4235 100644 --- a/src/main/java/net/minecraft/server/World.java +++ b/src/main/java/net/minecraft/server/World.java -@@ -1085,6 +1085,35 @@ public abstract class World implements GeneratorAccess, AutoCloseable { +@@ -1084,6 +1084,35 @@ public abstract class World implements GeneratorAccess, AutoCloseable { return this.getChunkAt(i, j, ChunkStatus.FULL, false); } 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 4f275b0f..79ed5531 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 @@ -1348,10 +1348,10 @@ index 9f4f9df09968dc45878ad59f5ee45672a3f08fbd..636bbbc42466cb54c300352f400464fe @VisibleForTesting diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java -index 8ec6b3a1b8f5281b875cbb3cf85833ab3c208bc3..9d9ff42a4572da8f62cc9fc5f11053b578858767 100644 +index 15617d20883030b240014dbb258fd0086fef4235..f40ddc91b6102ce67d5989037c9b9ec822fefa34 100644 --- a/src/main/java/net/minecraft/server/World.java +++ b/src/main/java/net/minecraft/server/World.java -@@ -1116,8 +1116,13 @@ public abstract class World implements GeneratorAccess, AutoCloseable { +@@ -1115,8 +1115,13 @@ public abstract class World implements GeneratorAccess, AutoCloseable { @Override public List getEntities(@Nullable Entity entity, AxisAlignedBB axisalignedbb, @Nullable Predicate predicate) { diff --git a/patches/Tuinity/patches/server/0040-Fix-swamp-hut-cat-generation-deadlock.patch b/patches/Tuinity/patches/server/0040-Fix-swamp-hut-cat-generation-deadlock.patch index 5e20e297..e7220370 100644 --- a/patches/Tuinity/patches/server/0040-Fix-swamp-hut-cat-generation-deadlock.patch +++ b/patches/Tuinity/patches/server/0040-Fix-swamp-hut-cat-generation-deadlock.patch @@ -10,7 +10,7 @@ indefinitely. Instead of using the world state, we use the already supplied generatoraccess which will always have the chunk available. diff --git a/src/main/java/net/minecraft/server/EntityCat.java b/src/main/java/net/minecraft/server/EntityCat.java -index e80ec303198abade19645267e24cd5a4a8b75d70..35f511c398795a0edeb5fe6d802f2a2bf754bf3a 100644 +index 8bc8dcf7dfe79c5522bc715ad60aeaab4b1d85da..675083e3952779e43bf8cc3175ad70458a79e49c 100644 --- a/src/main/java/net/minecraft/server/EntityCat.java +++ b/src/main/java/net/minecraft/server/EntityCat.java @@ -292,7 +292,7 @@ public class EntityCat extends EntityTameableAnimal { 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 5f742b05..d49c1b86 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/server/World.java b/src/main/java/net/minecraft/server/World.java -index 9d9ff42a4572da8f62cc9fc5f11053b578858767..6c3f496ba6c0c6c4911e2592ded27df08ae54b14 100644 +index f40ddc91b6102ce67d5989037c9b9ec822fefa34..dccdbb1c218d9fd8acb81998bd5884dc4aba7c1c 100644 --- a/src/main/java/net/minecraft/server/World.java +++ b/src/main/java/net/minecraft/server/World.java @@ -289,6 +289,15 @@ public abstract class World implements GeneratorAccess, AutoCloseable { diff --git a/patches/Tuinity/patches/server/0046-Optimise-closest-entity-lookup-used-by-AI-goals.patch b/patches/Tuinity/patches/server/0046-Optimise-closest-entity-lookup-used-by-AI-goals.patch index c013768f..0c57b18d 100644 --- a/patches/Tuinity/patches/server/0046-Optimise-closest-entity-lookup-used-by-AI-goals.patch +++ b/patches/Tuinity/patches/server/0046-Optimise-closest-entity-lookup-used-by-AI-goals.patch @@ -324,10 +324,10 @@ index 253377c6238594de1f76cafcbf8223592e4d3f6b..3ebe3d0dc4c2c6aee6ea349006a74cbe if (entityliving == entityliving1) { return false; diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java -index 6c3f496ba6c0c6c4911e2592ded27df08ae54b14..3ad08863c00d96c827c26c8d4c9a206a43bb1db9 100644 +index dccdbb1c218d9fd8acb81998bd5884dc4aba7c1c..1d87e7461d28d8a639fafcfdfa5496014e9180f6 100644 --- a/src/main/java/net/minecraft/server/World.java +++ b/src/main/java/net/minecraft/server/World.java -@@ -1187,7 +1187,7 @@ public abstract class World implements GeneratorAccess, AutoCloseable { +@@ -1186,7 +1186,7 @@ public abstract class World implements GeneratorAccess, AutoCloseable { Chunk chunk = (Chunk)this.getChunkIfLoadedImmediately(i1, j1); // Paper if (chunk != null) { @@ -336,7 +336,7 @@ index 6c3f496ba6c0c6c4911e2592ded27df08ae54b14..3ad08863c00d96c827c26c8d4c9a206a } } } -@@ -1210,7 +1210,7 @@ public abstract class World implements GeneratorAccess, AutoCloseable { +@@ -1209,7 +1209,7 @@ public abstract class World implements GeneratorAccess, AutoCloseable { Chunk chunk = (Chunk)this.getChunkIfLoadedImmediately(i1, j1); // Paper if (chunk != null) { @@ -345,7 +345,7 @@ index 6c3f496ba6c0c6c4911e2592ded27df08ae54b14..3ad08863c00d96c827c26c8d4c9a206a } } } -@@ -1218,6 +1218,106 @@ public abstract class World implements GeneratorAccess, AutoCloseable { +@@ -1217,6 +1217,106 @@ public abstract class World implements GeneratorAccess, AutoCloseable { return list; } diff --git a/patches/Tuinity/patches/server/0047-Optimise-EntityInsentient-checkDespawn.patch b/patches/Tuinity/patches/server/0047-Optimise-EntityInsentient-checkDespawn.patch index 89128b54..43a9bb0a 100644 --- a/patches/Tuinity/patches/server/0047-Optimise-EntityInsentient-checkDespawn.patch +++ b/patches/Tuinity/patches/server/0047-Optimise-EntityInsentient-checkDespawn.patch @@ -203,7 +203,7 @@ index 83f070229098ad31b8ae65ffcebe52886ef2884d..f4d5ff1d0f1ad34032aaab96e1077f4b // Paper start - Chunk Prioritization public void queueHolderUpdate(PlayerChunk playerchunk) { diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java -index 3ad08863c00d96c827c26c8d4c9a206a43bb1db9..28ee325fcc8b50397768363403823f2e3391d8c8 100644 +index 1d87e7461d28d8a639fafcfdfa5496014e9180f6..93c0c3376c3cb2fe416c8ae3e740ffda5f985b78 100644 --- a/src/main/java/net/minecraft/server/World.java +++ b/src/main/java/net/minecraft/server/World.java @@ -123,6 +123,34 @@ public abstract class World implements GeneratorAccess, AutoCloseable { diff --git a/patches/Tuinity/patches/server/0061-Rewrite-the-light-engine.patch b/patches/Tuinity/patches/server/0061-Rewrite-the-light-engine.patch index 3dfaf642..4f5a7909 100644 --- a/patches/Tuinity/patches/server/0061-Rewrite-the-light-engine.patch +++ b/patches/Tuinity/patches/server/0061-Rewrite-the-light-engine.patch @@ -4726,7 +4726,7 @@ index be5384ee41290b24b0c419c3e8f4553db34b2399..df28f7a6bf4c650a22ddf046eae4d5e8 IBlockAccess getWorld(); diff --git a/src/main/java/net/minecraft/server/LightEngineThreaded.java b/src/main/java/net/minecraft/server/LightEngineThreaded.java -index 2f9c97dd4e1d705a87772d18c7ab4883a876af08..3c4c3e43b5b947f7332f2dd6d1f1dae4be7708ab 100644 +index 2f9c97dd4e1d705a87772d18c7ab4883a876af08..001ac05cf26237eec8a77c476e678ff6d0840311 100644 --- a/src/main/java/net/minecraft/server/LightEngineThreaded.java +++ b/src/main/java/net/minecraft/server/LightEngineThreaded.java @@ -2,6 +2,11 @@ package net.minecraft.server; @@ -4842,8 +4842,8 @@ index 2f9c97dd4e1d705a87772d18c7ab4883a876af08..3c4c3e43b5b947f7332f2dd6d1f1dae4 + } else { + this.holdingChunks.put(coordinate, current + 1); + } - } - ++ } ++ + protected final void releaseLightWorkChunk(int chunkX, int chunkZ) { + final long coordinate = MCUtil.getCoordinateKey(chunkX, chunkZ); + final int current = this.holdingChunks.get(coordinate); @@ -4939,8 +4939,8 @@ index 2f9c97dd4e1d705a87772d18c7ab4883a876af08..3c4c3e43b5b947f7332f2dd6d1f1dae4 + }); + } + }, this.playerChunkMap.mainInvokingExecutor); -+ } -+ + } + + // override things from superclass + + @Override @@ -5061,7 +5061,7 @@ index 2f9c97dd4e1d705a87772d18c7ab4883a876af08..3c4c3e43b5b947f7332f2dd6d1f1dae4 this.a(chunkcoordintpair.x, chunkcoordintpair.z, () -> { return 0; }, LightEngineThreaded.Update.PRE_UPDATE, SystemUtils.a(() -> { -@@ -264,6 +513,31 @@ public class LightEngineThreaded extends LightEngine implements AutoCloseable { +@@ -264,6 +513,35 @@ public class LightEngineThreaded extends LightEngine implements AutoCloseable { public CompletableFuture a(IChunkAccess ichunkaccess, boolean flag) { ChunkCoordIntPair chunkcoordintpair = ichunkaccess.getPos(); @@ -5086,6 +5086,10 @@ index 2f9c97dd4e1d705a87772d18c7ab4883a876af08..3c4c3e43b5b947f7332f2dd6d1f1dae4 + }, (runnable) -> { + LightEngineThreaded.this.scheduleTask(chunkcoordintpair.x, chunkcoordintpair.z, LightEngineThreaded.Update.PRE_UPDATE, runnable); + LightEngineThreaded.this.queueUpdate(); ++ }).whenComplete((IChunkAccess chunk, Throwable throwable) -> { ++ if (throwable != null && !(throwable instanceof ThreadDeath)) { ++ MinecraftServer.LOGGER.fatal("Failed to light chunk " + chunk.getPos().toString() + " in world '" + this.theLightEngine.getWorld().getWorld().getName() + "'"); ++ } + }); + } + // Tuinity end - replace light engine @@ -5093,7 +5097,7 @@ index 2f9c97dd4e1d705a87772d18c7ab4883a876af08..3c4c3e43b5b947f7332f2dd6d1f1dae4 // Paper start //ichunkaccess.b(false); // Don't need to disable this long pair = chunkcoordintpair.pair(); -@@ -311,7 +585,7 @@ public class LightEngineThreaded extends LightEngine implements AutoCloseable { +@@ -311,7 +589,7 @@ public class LightEngineThreaded extends LightEngine implements AutoCloseable { } public void queueUpdate() { @@ -5102,7 +5106,7 @@ index 2f9c97dd4e1d705a87772d18c7ab4883a876af08..3c4c3e43b5b947f7332f2dd6d1f1dae4 this.b.a((() -> { // Paper - decompile error this.b(); this.g.set(false); -@@ -325,17 +599,36 @@ public class LightEngineThreaded extends LightEngine implements AutoCloseable { +@@ -325,17 +603,36 @@ public class LightEngineThreaded extends LightEngine implements AutoCloseable { private final java.util.List pre = new java.util.ArrayList<>(); private final java.util.List post = new java.util.ArrayList<>(); private void b() { diff --git a/patches/server/0002-Brandings.patch b/patches/server/0002-Brandings.patch index b195260b..f6ad752d 100644 --- a/patches/server/0002-Brandings.patch +++ b/patches/server/0002-Brandings.patch @@ -53,10 +53,10 @@ index 83c1176888ead8fe045f1e1dfc78115ad2bf69f3..29ebf64a27ac34a2bfd11a904a5a30e0 serverModName = getString("settings.server-mod-name", serverModName); } diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index 53deddce357170a712913d916ba1d58e663fc1a1..1286f0127300144abe4f78a3480acec42a5fc758 100644 +index 48dd6de4acf0ef0536a4c562f3eb5f2f90878924..eca800e8396c765ea77c0cbc171bb1a6e4e8707f 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -@@ -232,7 +232,7 @@ import javax.annotation.Nullable; // Paper +@@ -231,7 +231,7 @@ import javax.annotation.Nullable; // Paper import javax.annotation.Nonnull; // Paper public final class CraftServer implements Server { diff --git a/patches/server/0005-Add-last-tick-time-API.patch b/patches/server/0005-Add-last-tick-time-API.patch index 6290eff1..01f3ab04 100644 --- a/patches/server/0005-Add-last-tick-time-API.patch +++ b/patches/server/0005-Add-last-tick-time-API.patch @@ -30,10 +30,10 @@ index d4dc05a1066bfcd4cdc1bfa04e46aa2d8d6e2fe5..ada93970e324c44aba4f3e817ccaec8a this.X = true; // Purpur start - tps catchup diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index 1286f0127300144abe4f78a3480acec42a5fc758..05612f20cd2881af363111789cf903c4baf5c9c8 100644 +index eca800e8396c765ea77c0cbc171bb1a6e4e8707f..289ea917d3b5327e1c7dbffdb9ba171cc5052627 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -@@ -2465,4 +2465,6 @@ public final class CraftServer implements Server { +@@ -2466,4 +2466,6 @@ public final class CraftServer implements Server { return getServer().lagging; } // Purpur end @@ -41,10 +41,10 @@ index 1286f0127300144abe4f78a3480acec42a5fc758..05612f20cd2881af363111789cf903c4 + @Override public java.time.Duration getLastTickTime() { return net.minecraft.server.MinecraftServer.lastTickTime; } // Yatopia } diff --git a/src/main/java/org/spigotmc/TicksPerSecondCommand.java b/src/main/java/org/spigotmc/TicksPerSecondCommand.java -index 3c7b9a6d24e064f9c1ec5fb6d52f42627944d7fa..dd44c1f3721fb9c7233417150a073b79465c0480 100644 +index 312248b5c6febc6a3c10940714fac7fbc3c53b7f..abc9b7aa53e554ef2196dceafe8db8ba65f34e84 100644 --- a/src/main/java/org/spigotmc/TicksPerSecondCommand.java +++ b/src/main/java/org/spigotmc/TicksPerSecondCommand.java -@@ -34,6 +34,10 @@ public class TicksPerSecondCommand extends Command +@@ -32,6 +32,10 @@ public class TicksPerSecondCommand extends Command tpsAvg[i] = format( tps[i] ); } sender.sendMessage(ChatColor.GOLD + "TPS from last 5s, 1m, 5m, 15m: " + org.apache.commons.lang.StringUtils.join(tpsAvg, ", ")); // Purpur @@ -55,7 +55,7 @@ index 3c7b9a6d24e064f9c1ec5fb6d52f42627944d7fa..dd44c1f3721fb9c7233417150a073b79 if (args.length > 0 && args[0].equals("mem") && sender.hasPermission("bukkit.command.tpsmemory")) { sender.sendMessage(ChatColor.GOLD + "Current Memory Usage: " + ChatColor.GREEN + ((Runtime.getRuntime().totalMemory() - Runtime.getRuntime().freeMemory()) / (1024 * 1024)) + "/" + (Runtime.getRuntime().totalMemory() / (1024 * 1024)) + " mb (Max: " + (Runtime.getRuntime().maxMemory() / (1024 * 1024)) + " mb)"); if (!hasShownMemoryWarning) { -@@ -52,4 +56,16 @@ public class TicksPerSecondCommand extends Command +@@ -50,4 +54,16 @@ public class TicksPerSecondCommand extends Command return ( ( tps > 18.0 ) ? ChatColor.GREEN : ( tps > 16.0 ) ? ChatColor.YELLOW : ChatColor.RED ).toString() + ( ( tps > 21.0 ) ? "*" : "" ) + Math.min( Math.round( tps * 100.0 ) / 100.0, 20.0 ); // Paper - only print * at 21, we commonly peak to 20.02 as the tick sleep is not accurate enough, stop the noise } diff --git a/patches/server/0006-Yatopia-configuration.patch b/patches/server/0006-Yatopia-configuration.patch index 6f82f5e7..0c88c544 100644 --- a/patches/server/0006-Yatopia-configuration.patch +++ b/patches/server/0006-Yatopia-configuration.patch @@ -27,12 +27,12 @@ index 55b67f1057224101272f9d6023a93872c4423405..3ec187f39250214a7a72b1d7ef7b3e2e String hostName = "BrokenHost"; try { diff --git a/src/main/java/net/minecraft/server/DedicatedServer.java b/src/main/java/net/minecraft/server/DedicatedServer.java -index 3ee8d31c453105eca7b96bede39a9ebbf40e1c2c..0a9f03526abf0638ada15d9810b949887fca9f9a 100644 +index ca3d9dbcbeeb5059a942cae1a5020f0bcc59ac9c..20da9b4333e02a1f24eff0c7bbe17a7231bb3359 100644 --- a/src/main/java/net/minecraft/server/DedicatedServer.java +++ b/src/main/java/net/minecraft/server/DedicatedServer.java -@@ -180,6 +180,15 @@ public class DedicatedServer extends MinecraftServer implements IMinecraftServer - // Paper end +@@ -181,6 +181,15 @@ public class DedicatedServer extends MinecraftServer implements IMinecraftServer com.tuinity.tuinity.config.TuinityConfig.init((java.io.File) options.valueOf("tuinity-settings")); // Tuinity - Server Config + gg.airplane.AirplaneConfig.load(); // Airplane - config + // Yatopia start + try { @@ -80,10 +80,10 @@ index ca19cfa1ff801e5292332ff7b92bba881762306e..14d8492c405db32e454bc363207a1271 playerconnection.sendPacket(new PacketPlayOutAbilities(entityplayer.abilities)); playerconnection.sendPacket(new PacketPlayOutHeldItemSlot(entityplayer.inventory.itemInHandIndex)); diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index 05612f20cd2881af363111789cf903c4baf5c9c8..3d52621bf068517b2d959c65aea211f93b8d4497 100644 +index 289ea917d3b5327e1c7dbffdb9ba171cc5052627..8ad95d3275fef85deb33fc2794f7bc3b72f917ca 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -@@ -857,6 +857,7 @@ public final class CraftServer implements Server { +@@ -856,6 +856,7 @@ public final class CraftServer implements Server { playerList.getProfileBans().load(); } catch (IOException ex) { logger.log(Level.WARNING, "Failed to load banned-players.json, " + ex.getMessage()); diff --git a/patches/server/0014-lithium-MixinGoalSelector.patch b/patches/server/0014-lithium-MixinGoalSelector.patch index 8967a12d..4044973f 100644 --- a/patches/server/0014-lithium-MixinGoalSelector.patch +++ b/patches/server/0014-lithium-MixinGoalSelector.patch @@ -9,7 +9,7 @@ Original code by JellySquid, licensed under GNU Lesser General Public License v3 you can find the original code on https://github.com/jellysquid3/lithium-fabric/tree/1.16.x/fabric (Yarn mappings) diff --git a/src/main/java/net/minecraft/server/PathfinderGoalSelector.java b/src/main/java/net/minecraft/server/PathfinderGoalSelector.java -index 9cad895c7d008487ce885cbcc2c3966645df4c19..b63f274ec0afec96b4879f9ebaed72c416d1f9d2 100644 +index 2ce5e07f4dcd0c76073840c35be66b7c65c6e7e8..44f3fc1e57a6287b12b281643c8e9ae734aebaf8 100644 --- a/src/main/java/net/minecraft/server/PathfinderGoalSelector.java +++ b/src/main/java/net/minecraft/server/PathfinderGoalSelector.java @@ -11,6 +11,7 @@ import java.util.function.Supplier; diff --git a/patches/server/0017-Option-for-simpler-Villagers.patch b/patches/server/0017-Option-for-simpler-Villagers.patch index 2e14aaef..ba0cd98f 100644 --- a/patches/server/0017-Option-for-simpler-Villagers.patch +++ b/patches/server/0017-Option-for-simpler-Villagers.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Option for simpler Villagers diff --git a/src/main/java/net/minecraft/server/EntityVillager.java b/src/main/java/net/minecraft/server/EntityVillager.java -index eef51f8e5734b897164ca9514e7b49b2678416e6..2745cd0d98cfcf25a5304fa8ae0903028a283b25 100644 +index 5fc57e2e2afe383ddc9b6d4db714a678c881fa77..b6ae5a18ab1748f71956c2d323eb1011854bd854 100644 --- a/src/main/java/net/minecraft/server/EntityVillager.java +++ b/src/main/java/net/minecraft/server/EntityVillager.java @@ -31,6 +31,7 @@ import org.bukkit.event.entity.VillagerReplenishTradeEvent; @@ -78,10 +78,10 @@ index eef51f8e5734b897164ca9514e7b49b2678416e6..2745cd0d98cfcf25a5304fa8ae090302 BehaviorController behaviorcontroller = this.cK().a(dynamic); this.a(behaviorcontroller); -@@ -212,10 +252,39 @@ public class EntityVillager extends EntityVillagerAbstract implements Reputation - } +@@ -213,11 +253,39 @@ public class EntityVillager extends EntityVillagerAbstract implements Reputation // Purpur end + private int behaviorTick = 0; + // Yatopia start + private VillagerProfession getRandomProfession() { + int type = random.nextInt(13); @@ -103,7 +103,7 @@ index eef51f8e5734b897164ca9514e7b49b2678416e6..2745cd0d98cfcf25a5304fa8ae090302 + } + } + // Yatopia end -+ + @Override protected void mobTick() { mobTick(false); } protected void mobTick(boolean inactive) { @@ -118,7 +118,7 @@ index eef51f8e5734b897164ca9514e7b49b2678416e6..2745cd0d98cfcf25a5304fa8ae090302 // Purpur start if (world.purpurConfig.villagerLobotomizeEnabled) inactive = inactive || isLobotomized(); boolean tick = (world.getTime() + brainTickOffset) % world.purpurConfig.villagerBrainTicks == 0; -@@ -338,6 +407,7 @@ public class EntityVillager extends EntityVillagerAbstract implements Reputation +@@ -344,6 +412,7 @@ public class EntityVillager extends EntityVillagerAbstract implements Reputation this.fl(); } @@ -126,7 +126,7 @@ index eef51f8e5734b897164ca9514e7b49b2678416e6..2745cd0d98cfcf25a5304fa8ae090302 private void fl() { Iterator iterator = this.getOffers().iterator(); -@@ -412,6 +482,7 @@ public class EntityVillager extends EntityVillagerAbstract implements Reputation +@@ -418,6 +487,7 @@ public class EntityVillager extends EntityVillagerAbstract implements Reputation return this.fn() && this.fm(); } @@ -134,7 +134,7 @@ index eef51f8e5734b897164ca9514e7b49b2678416e6..2745cd0d98cfcf25a5304fa8ae090302 private void fo() { int i = 2 - this.bD; -@@ -644,6 +715,7 @@ public class EntityVillager extends EntityVillagerAbstract implements Reputation +@@ -650,6 +720,7 @@ public class EntityVillager extends EntityVillagerAbstract implements Reputation } private void a(Entity entity) { @@ -142,7 +142,7 @@ index eef51f8e5734b897164ca9514e7b49b2678416e6..2745cd0d98cfcf25a5304fa8ae090302 if (this.world instanceof WorldServer) { Optional> optional = this.bg.getMemory(MemoryModuleType.VISIBLE_MOBS); -@@ -660,6 +732,7 @@ public class EntityVillager extends EntityVillagerAbstract implements Reputation +@@ -666,6 +737,7 @@ public class EntityVillager extends EntityVillagerAbstract implements Reputation } public void a(MemoryModuleType memorymoduletype) { diff --git a/patches/server/0019-Optimize-TileEntity-load-unload.patch b/patches/server/0019-Optimize-TileEntity-load-unload.patch index 5f10480e..1516f5d4 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/server/World.java b/src/main/java/net/minecraft/server/World.java -index e592ca980967804cf5ac9cbf2a917d584a23163b..fe3b5e9e00900a553a2bbaf0bcd0f0d8c876d5b6 100644 +index 7d0ea2c0f04578eb2c896aa6ea99ce26d8935478..106ed295ce502cdd693371b9fa98eba7588b1f44 100644 --- a/src/main/java/net/minecraft/server/World.java +++ b/src/main/java/net/minecraft/server/World.java @@ -42,8 +42,8 @@ public abstract class World implements GeneratorAccess, AutoCloseable { diff --git a/patches/server/0021-Redirect-Configs.patch b/patches/server/0021-Redirect-Configs.patch index 0d75fe18..1c886332 100644 --- a/patches/server/0021-Redirect-Configs.patch +++ b/patches/server/0021-Redirect-Configs.patch @@ -39,10 +39,10 @@ index 15aa603a771c327879a4088609850fb86c6347bd..553d6fafbcabafeb008fcf5b60adb8d1 for (final Method method : clazz.getDeclaredMethods()) { if (method.getReturnType() != void.class || method.getParameterCount() != 0 || diff --git a/src/main/java/net/minecraft/server/DedicatedServer.java b/src/main/java/net/minecraft/server/DedicatedServer.java -index 0a9f03526abf0638ada15d9810b949887fca9f9a..64b662dc9146d0d414a9668d9b93e07aa6665f32 100644 +index 20da9b4333e02a1f24eff0c7bbe17a7231bb3359..4bacbd38bc0b39724f1c07ec5a266942d2d1ed81 100644 --- a/src/main/java/net/minecraft/server/DedicatedServer.java +++ b/src/main/java/net/minecraft/server/DedicatedServer.java -@@ -188,7 +188,7 @@ public class DedicatedServer extends MinecraftServer implements IMinecraftServer +@@ -189,7 +189,7 @@ public class DedicatedServer extends MinecraftServer implements IMinecraftServer return false; } // Yatopia end diff --git a/patches/server/0024-Fix-lead-fall-dmg-config.patch b/patches/server/0024-Fix-lead-fall-dmg-config.patch index e397bd69..7a18af7b 100644 --- a/patches/server/0024-Fix-lead-fall-dmg-config.patch +++ b/patches/server/0024-Fix-lead-fall-dmg-config.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Fix lead fall dmg config diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java -index 63eb29635957d4e6ce1274ee17a59af62d442d4e..e629f10cdbd70a354f9edaa75973b169a8588d08 100644 +index d74086ee72cfae3d2bead9fb08c808299d755e2a..48224c50293ff34f163724fa9d1d54c9bcfb2321 100644 --- a/src/main/java/net/minecraft/server/Entity.java +++ b/src/main/java/net/minecraft/server/Entity.java -@@ -1287,6 +1287,8 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke +@@ -1290,6 +1290,8 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke this.fallDistance = 0.0F; } else if (d0 < 0.0D) { this.fallDistance = (float) ((double) this.fallDistance - d0); diff --git a/patches/server/0033-Fix-LightEngineThreaded-memory-leak.patch b/patches/server/0033-Fix-LightEngineThreaded-memory-leak.patch index ee85cafc..1eb6227e 100644 --- a/patches/server/0033-Fix-LightEngineThreaded-memory-leak.patch +++ b/patches/server/0033-Fix-LightEngineThreaded-memory-leak.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Fix LightEngineThreaded memory leak diff --git a/src/main/java/net/minecraft/server/LightEngineThreaded.java b/src/main/java/net/minecraft/server/LightEngineThreaded.java -index 3c4c3e43b5b947f7332f2dd6d1f1dae4be7708ab..be4193a1c1f4d7bb62d42b786f33f636863a3dfb 100644 +index 001ac05cf26237eec8a77c476e678ff6d0840311..7b4935dd8c54f5fcb4f26b96c270d3e4102133a3 100644 --- a/src/main/java/net/minecraft/server/LightEngineThreaded.java +++ b/src/main/java/net/minecraft/server/LightEngineThreaded.java @@ -110,6 +110,8 @@ public class LightEngineThreaded extends LightEngine implements AutoCloseable { diff --git a/patches/server/0042-Add-nspt-command.patch b/patches/server/0042-Add-nspt-command.patch index 0438795e..a704dedd 100644 --- a/patches/server/0042-Add-nspt-command.patch +++ b/patches/server/0042-Add-nspt-command.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add nspt command diff --git a/src/main/java/net/minecraft/server/DedicatedServer.java b/src/main/java/net/minecraft/server/DedicatedServer.java -index 64b662dc9146d0d414a9668d9b93e07aa6665f32..2473eb88ec7be3f4935debe04eeabcc0815b3233 100644 +index 4bacbd38bc0b39724f1c07ec5a266942d2d1ed81..72e093bceb7cbf5b55271bf09d04ee73b79e5d45 100644 --- a/src/main/java/net/minecraft/server/DedicatedServer.java +++ b/src/main/java/net/minecraft/server/DedicatedServer.java -@@ -187,6 +187,7 @@ public class DedicatedServer extends MinecraftServer implements IMinecraftServer +@@ -188,6 +188,7 @@ public class DedicatedServer extends MinecraftServer implements IMinecraftServer DedicatedServer.LOGGER.error("Unable to load server configuration", e); return false; } @@ -17,10 +17,10 @@ index 64b662dc9146d0d414a9668d9b93e07aa6665f32..2473eb88ec7be3f4935debe04eeabcc0 de.minebench.origami.OrigamiConfig.init((java.io.File) options.valueOf("origami-settings")); this.setPVP(dedicatedserverproperties.pvp); diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index 3d52621bf068517b2d959c65aea211f93b8d4497..7d0f73c83a7f7f3c6becf3ed4348c6b2938a86b1 100644 +index 8ad95d3275fef85deb33fc2794f7bc3b72f917ca..5a539230b5791e0469f8de0c04af68d8895e7847 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -@@ -921,6 +921,7 @@ public final class CraftServer implements Server { +@@ -920,6 +920,7 @@ public final class CraftServer implements Server { org.spigotmc.SpigotConfig.registerCommands(); // Spigot com.destroystokyo.paper.PaperConfig.registerCommands(); // Paper net.pl3x.purpur.PurpurConfig.registerCommands(); // Purpur diff --git a/patches/server/0055-Configurable-enchanting-table-tick.patch b/patches/server/0055-Configurable-enchanting-table-tick.patch index 3b488928..0a45e230 100644 --- a/patches/server/0055-Configurable-enchanting-table-tick.patch +++ b/patches/server/0055-Configurable-enchanting-table-tick.patch @@ -7,10 +7,10 @@ Also don't tick blockentity beehive if there are no bees in it. This patch is a leftover from the original tile entity optimisations, which was majorly flawed. diff --git a/src/main/java/net/minecraft/server/TileEntityBeehive.java b/src/main/java/net/minecraft/server/TileEntityBeehive.java -index a60e0872d51aeb330bd5334e35f18ad0ed63834e..70239fa5ac05464606ad917b3c3498156c12c536 100644 +index 598f78502cd7ad15bc0f678df277f91b3ae376d4..69ef94e887fa9da1b3ddaf0a345fecc49d2866b5 100644 --- a/src/main/java/net/minecraft/server/TileEntityBeehive.java +++ b/src/main/java/net/minecraft/server/TileEntityBeehive.java -@@ -286,6 +286,7 @@ public class TileEntityBeehive extends TileEntity implements ITickable { +@@ -285,6 +285,7 @@ public class TileEntityBeehive extends TileEntity implements ITickable { @Override public void tick() { diff --git a/patches/server/0057-Optimised-hallowen-checker.patch b/patches/server/0057-Optimised-hallowen-checker.patch index 63a7bbc2..99339b62 100644 --- a/patches/server/0057-Optimised-hallowen-checker.patch +++ b/patches/server/0057-Optimised-hallowen-checker.patch @@ -46,10 +46,10 @@ index ee4c26de15a5c304889f38f49f4584e8d4ccc5fe..ca9075d6bae36c29d9eb4727321afcbc this.dropChanceArmor[EnumItemSlot.HEAD.b()] = 0.0F; } diff --git a/src/main/java/net/minecraft/server/EntityZombie.java b/src/main/java/net/minecraft/server/EntityZombie.java -index a5699314be3f47ed9b27a5d21a396c5282592c7b..16d73dc50b76523dd03e12d566646874e86fabca 100644 +index 4dc027577656b423cd06a1eca5fdf9c9a5fcf107..ba8523ab5cf5d2320624ed1fd40fa0c26e2e42cb 100644 --- a/src/main/java/net/minecraft/server/EntityZombie.java +++ b/src/main/java/net/minecraft/server/EntityZombie.java -@@ -520,11 +520,15 @@ public class EntityZombie extends EntityMonster { +@@ -523,11 +523,15 @@ public class EntityZombie extends EntityMonster { } if (this.getEquipment(EnumItemSlot.HEAD).isEmpty()) { diff --git a/patches/server/0064-Suspected-plugins-report.patch b/patches/server/0064-Suspected-plugins-report.patch index 4dc34b5a..b8a029ef 100644 --- a/patches/server/0064-Suspected-plugins-report.patch +++ b/patches/server/0064-Suspected-plugins-report.patch @@ -76,7 +76,7 @@ index 548c62a838848a9183e14f91b21a9dc309d8a3b2..acded2b5ef02c24f52050fcc8f06ccb5 close(new ChatMessage("disconnect.genericReason", "Internal Exception: " + e.getMessage()));; packet.onPacketDispatchFinish(player, null); diff --git a/src/main/java/net/minecraft/server/PlayerConnectionUtils.java b/src/main/java/net/minecraft/server/PlayerConnectionUtils.java -index e698dd22607b2b2c4068c5bfb03ac53eb5bac080..4e545e467042772d49ac82492694824576dcd139 100644 +index 7fff1b3e4eda519851b714502d33122c1e408009..41949bebe38bfa734f1d06df209ca842d1a42933 100644 --- a/src/main/java/net/minecraft/server/PlayerConnectionUtils.java +++ b/src/main/java/net/minecraft/server/PlayerConnectionUtils.java @@ -45,6 +45,11 @@ public class PlayerConnectionUtils { @@ -108,7 +108,7 @@ index 0668d383db1f3a81d1053954d72678c7ac5aecec..7b9f83e63d0f9cd83a246be33af4ab91 ChatComponentText chatcomponenttext = new ChatComponentText("Internal server error"); diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java -index fe3b5e9e00900a553a2bbaf0bcd0f0d8c876d5b6..746ee21f175c80e8cddb21a6a626f978da8952dd 100644 +index 106ed295ce502cdd693371b9fa98eba7588b1f44..ab1f7992a3a61179cb9862915c14ea7f6dc76cc6 100644 --- a/src/main/java/net/minecraft/server/World.java +++ b/src/main/java/net/minecraft/server/World.java @@ -988,6 +988,10 @@ public abstract class World implements GeneratorAccess, AutoCloseable { diff --git a/upstream/Airplane b/upstream/Airplane index 1b112693..d7d1626f 160000 --- a/upstream/Airplane +++ b/upstream/Airplane @@ -1 +1 @@ -Subproject commit 1b11269397834a35d06fd62e08d71d06bb6416eb +Subproject commit d7d1626f8e87461cf2e5d882b1ca53f828b1b132 diff --git a/upstream/Empirecraft b/upstream/Empirecraft index a8914cb8..bbc8d297 160000 --- a/upstream/Empirecraft +++ b/upstream/Empirecraft @@ -1 +1 @@ -Subproject commit a8914cb8ed18d96eb1452d1e052c5e6d3007f1d7 +Subproject commit bbc8d297dbcb1183997ec1b56f774319d079ba31 diff --git a/upstream/Origami b/upstream/Origami index 45d89ccb..168394a2 160000 --- a/upstream/Origami +++ b/upstream/Origami @@ -1 +1 @@ -Subproject commit 45d89ccba0fab274b6e4eb013762a68e8e502d33 +Subproject commit 168394a2ea0f603db3e54a0223315008f622f36f diff --git a/upstream/Purpur b/upstream/Purpur index 5cff60d5..7fc2d31b 160000 --- a/upstream/Purpur +++ b/upstream/Purpur @@ -1 +1 @@ -Subproject commit 5cff60d5c6a3563d0f8dd6f611ad1ade913bcc1c +Subproject commit 7fc2d31be761c91ee3cbbde0e2832834063f5899 diff --git a/upstream/Tuinity b/upstream/Tuinity index f8c0db48..502d57ba 160000 --- a/upstream/Tuinity +++ b/upstream/Tuinity @@ -1 +1 @@ -Subproject commit f8c0db48055c9374597c05cd8359db2147432216 +Subproject commit 502d57ba8376333163a56c5491a46e408178d575 diff --git a/upstreamCommits/Airplane b/upstreamCommits/Airplane index 4d438b6d..572043f2 100644 --- a/upstreamCommits/Airplane +++ b/upstreamCommits/Airplane @@ -1 +1 @@ -1b11269397834a35d06fd62e08d71d06bb6416eb \ No newline at end of file +d7d1626f8e87461cf2e5d882b1ca53f828b1b132 \ No newline at end of file diff --git a/upstreamCommits/Empirecraft b/upstreamCommits/Empirecraft index 68b85a38..303829aa 100644 --- a/upstreamCommits/Empirecraft +++ b/upstreamCommits/Empirecraft @@ -1 +1 @@ -a8914cb8ed18d96eb1452d1e052c5e6d3007f1d7 \ No newline at end of file +bbc8d297dbcb1183997ec1b56f774319d079ba31 \ No newline at end of file diff --git a/upstreamCommits/Origami b/upstreamCommits/Origami index b39a99a3..bcce8e50 100644 --- a/upstreamCommits/Origami +++ b/upstreamCommits/Origami @@ -1 +1 @@ -45d89ccba0fab274b6e4eb013762a68e8e502d33 \ No newline at end of file +168394a2ea0f603db3e54a0223315008f622f36f \ No newline at end of file diff --git a/upstreamCommits/Purpur b/upstreamCommits/Purpur index a611b1aa..26376ea7 100644 --- a/upstreamCommits/Purpur +++ b/upstreamCommits/Purpur @@ -1 +1 @@ -5cff60d5c6a3563d0f8dd6f611ad1ade913bcc1c \ No newline at end of file +7fc2d31be761c91ee3cbbde0e2832834063f5899 \ No newline at end of file diff --git a/upstreamCommits/Tuinity b/upstreamCommits/Tuinity index 7825652f..9d041861 100644 --- a/upstreamCommits/Tuinity +++ b/upstreamCommits/Tuinity @@ -1 +1 @@ -f8c0db48055c9374597c05cd8359db2147432216 \ No newline at end of file +502d57ba8376333163a56c5491a46e408178d575 \ No newline at end of file diff --git a/upstreamConfig/0003-Airplane.properties b/upstreamConfig/0003-Airplane.properties index 17a74d25..681a8543 100644 --- a/upstreamConfig/0003-Airplane.properties +++ b/upstreamConfig/0003-Airplane.properties @@ -1,4 +1,4 @@ name=Airplane useBlackList=False -list=server/Airplane-MC-Dev-Fixes.patch,server/Remove-streams.patch,server/Strip-raytracing-for-EntityLiving-hasLineOfSight.patch,server/Simpler-ShapelessRecipes-comparison-for-Vanilla.patch,server/Queue-lighting-update-only-once.patch,server/Use-unmodifiableMap-instead-of-making-copy.patch,server/Swap-priority-of-checks-in-chunk-ticking.patch,server/Reduce-projectile-chunk-loading.patch,server/Optimize-random-calls-in-chunk-ticking.patch,server/Don-t-get-entity-equipment-if-not-needed.patch +list=server/Airplane-MC-Dev-Fixes.patch,server/Airplane-Configuration.patch,server/Remove-streams.patch,server/Strip-raytracing-for-EntityLiving-hasLineOfSight.patch,server/Simpler-ShapelessRecipes-comparison-for-Vanilla.patch,server/Queue-lighting-update-only-once.patch,server/Use-unmodifiableMap-instead-of-making-copy.patch,server/Swap-priority-of-checks-in-chunk-ticking.patch,server/Reduce-projectile-chunk-loading.patch,server/Optimize-random-calls-in-chunk-ticking.patch,server/Don-t-get-entity-equipment-if-not-needed.patch,server/Dynamic-activation-range.patch branch=origin/master