diff --git a/Purpur b/Purpur index 7ae28901..36672d6b 160000 --- a/Purpur +++ b/Purpur @@ -1 +1 @@ -Subproject commit 7ae2890175b843e954aa975f9a099f746bc16456 +Subproject commit 36672d6bf24aff86c6e283ac70d70f2654c11987 diff --git a/Tuinity b/Tuinity index d479e125..e36359ed 160000 --- a/Tuinity +++ b/Tuinity @@ -1 +1 @@ -Subproject commit d479e125d2db35934d906410178751de6c9e8eb6 +Subproject commit e36359ed6bacdb92977c443bdc6315954245721e diff --git a/patches/api/0007-ProxyForwardDataEvent.patch b/patches/api/0007-ProxyForwardDataEvent.patch index 5a9df263..56d730b3 100644 --- a/patches/api/0007-ProxyForwardDataEvent.patch +++ b/patches/api/0007-ProxyForwardDataEvent.patch @@ -6,121 +6,121 @@ Subject: [PATCH] ProxyForwardDataEvent diff --git a/src/main/java/net/yatopia/api/event/ProxyForwardDataEvent.java b/src/main/java/net/yatopia/api/event/ProxyForwardDataEvent.java new file mode 100644 -index 0000000000000000000000000000000000000000..8ffef40a2645124fd2de0dc45fa209431bfc1a3c +index 0000000000000000000000000000000000000000..22775d2d03ccd4c7decebc3e26b453efd44d865b --- /dev/null +++ b/src/main/java/net/yatopia/api/event/ProxyForwardDataEvent.java @@ -0,0 +1,114 @@ -+package net.yatopia.api.event; -+ -+import com.google.common.collect.ImmutableList; -+import com.mojang.authlib.properties.Property; -+import java.util.List; -+import java.util.UUID; -+import org.bukkit.event.Event; -+import org.bukkit.event.HandlerList; -+import org.jetbrains.annotations.NotNull; -+ -+/** -+ * Called when a proxy such as BungeeCord or Velocity forwards player data to the server. -+ */ -+public class ProxyForwardDataEvent extends Event { -+ -+ private final UUID uuid; -+ private final String name; -+ private List properties; -+ -+ public ProxyForwardDataEvent(boolean async, UUID uuid, String name, List properties) { -+ super(async); -+ this.uuid = uuid; -+ this.name = name; -+ this.properties = properties; -+ } -+ -+ /** -+ * Returns the unique id of the profile forwarded. -+ * -+ * @return unique id -+ */ -+ public UUID getUuid() { -+ return uuid; -+ } -+ -+ /** -+ * Returns the name of the profile forwarded. -+ * -+ * @return name -+ */ -+ public String getName() { -+ return name; -+ } -+ -+ /** -+ * Returns an immutable copy of the forwarded properties. -+ * -+ * @return properties -+ */ -+ public List getProperties() { -+ return ImmutableList.copyOf(properties); -+ } -+ -+ /** -+ * Adds a property to this game profile. If the property already exists, it overrides it. -+ * -+ * @param property property -+ */ -+ public void addProperty(Property property) { -+ if (hasProperty(property.getName())) { -+ removeProperty(property.getName()); -+ } -+ properties.add(property); -+ } -+ -+ /** -+ * Returns the property with the specified name. -+ * -+ * @param property the property's name you want to get -+ * @return property if present -+ */ -+ public Property getProperty(String property) { -+ for (Property prop : properties) { -+ if (prop.getName().toLowerCase().equalsIgnoreCase(property.toLowerCase())) { -+ return prop; -+ } -+ } -+ return null; -+ } -+ -+ /** -+ * Returns whether or not there's a property with the specified name. -+ * -+ * @param property the name of the property you want to check if exists -+ * @return boolean value -+ */ -+ public boolean hasProperty(String property) { -+ return getProperty(property) != null; -+ } -+ -+ /** -+ * Removes the specified property if present -+ * -+ * @param property the property's name you want to remove -+ */ -+ public void removeProperty(String property) { -+ properties.removeIf(prop -> prop.getName().toLowerCase().equalsIgnoreCase(property.toLowerCase())); -+ } -+ -+ /** -+ * Removes the specified property if present -+ * -+ * @param property the property you want to remove -+ */ -+ public void removeProperty(Property property) { -+ properties.remove(property); -+ } -+ -+ // -+ private static final HandlerList handlers = new HandlerList(); -+ @NotNull @Override public HandlerList getHandlers() { return handlers; } -+ public static HandlerList getHandlerList() { return handlers; } -+ // -+} ++package net.yatopia.api.event; ++ ++import com.google.common.collect.ImmutableList; ++import com.mojang.authlib.properties.Property; ++import java.util.List; ++import java.util.UUID; ++import org.bukkit.event.Event; ++import org.bukkit.event.HandlerList; ++import org.jetbrains.annotations.NotNull; ++ ++/** ++ * Called when a proxy such as BungeeCord or Velocity forwards player data to the server. ++ */ ++public class ProxyForwardDataEvent extends Event { ++ ++ private final UUID uuid; ++ private final String name; ++ private List properties; ++ ++ public ProxyForwardDataEvent(boolean async, UUID uuid, String name, List properties) { ++ super(async); ++ this.uuid = uuid; ++ this.name = name; ++ this.properties = properties; ++ } ++ ++ /** ++ * Returns the unique id of the profile forwarded. ++ * ++ * @return unique id ++ */ ++ public UUID getUuid() { ++ return uuid; ++ } ++ ++ /** ++ * Returns the name of the profile forwarded. ++ * ++ * @return name ++ */ ++ public String getName() { ++ return name; ++ } ++ ++ /** ++ * Returns an immutable copy of the forwarded properties. ++ * ++ * @return properties ++ */ ++ public List getProperties() { ++ return ImmutableList.copyOf(properties); ++ } ++ ++ /** ++ * Adds a property to this game profile. If the property already exists, it overrides it. ++ * ++ * @param property property ++ */ ++ public void addProperty(Property property) { ++ if (hasProperty(property.getName())) { ++ removeProperty(property.getName()); ++ } ++ properties.add(property); ++ } ++ ++ /** ++ * Returns the property with the specified name. ++ * ++ * @param property the property's name you want to get ++ * @return property if present ++ */ ++ public Property getProperty(String property) { ++ for (Property prop : properties) { ++ if (prop.getName().toLowerCase().equalsIgnoreCase(property.toLowerCase())) { ++ return prop; ++ } ++ } ++ return null; ++ } ++ ++ /** ++ * Returns whether or not there's a property with the specified name. ++ * ++ * @param property the name of the property you want to check if exists ++ * @return boolean value ++ */ ++ public boolean hasProperty(String property) { ++ return getProperty(property) != null; ++ } ++ ++ /** ++ * Removes the specified property if present ++ * ++ * @param property the property's name you want to remove ++ */ ++ public void removeProperty(String property) { ++ properties.removeIf(prop -> prop.getName().toLowerCase().equalsIgnoreCase(property.toLowerCase())); ++ } ++ ++ /** ++ * Removes the specified property if present ++ * ++ * @param property the property you want to remove ++ */ ++ public void removeProperty(Property property) { ++ properties.remove(property); ++ } ++ ++ // ++ private static final HandlerList handlers = new HandlerList(); ++ @NotNull @Override public HandlerList getHandlers() { return handlers; } ++ public static HandlerList getHandlerList() { return handlers; } ++ // ++} diff --git a/patches/server/0001-Yatopia-Server-Fixes.patch b/patches/server/0001-Yatopia-Server-Fixes.patch index 8c908ee3..80c2bf05 100644 --- a/patches/server/0001-Yatopia-Server-Fixes.patch +++ b/patches/server/0001-Yatopia-Server-Fixes.patch @@ -859,49 +859,6 @@ index 39583978bd58994a70718fd009ae8e57f7c60af8..00000000000000000000000000000000 - craftBlock.getNMS().dropNaturally(world, blockposition, ItemStack.b); - } - // Paper start - TNTPrimeEvent -diff --git a/src/main/java/net/minecraft/server/EntityEnderSignal.java b/src/main/java/net/minecraft/server/EntityEnderSignal.java -index e3865a9b4c53656a1e9e1658c678ac6dfdfc55fc..de55acd1cda658a888e728b8aa7f3704a23a7fec 100644 ---- a/src/main/java/net/minecraft/server/EntityEnderSignal.java -+++ b/src/main/java/net/minecraft/server/EntityEnderSignal.java -@@ -19,6 +19,13 @@ public class EntityEnderSignal extends Entity { - this.setPosition(d0, d1, d2); - } - -+ // Purpur start -+ @Override -+ public boolean canSaveToDisk() { -+ return world != null && world.purpurConfig.saveProjectilesToDisk; -+ } -+ // Purpur end -+ - public void b(ItemStack itemstack) { - if (true || itemstack.getItem() != Items.ENDER_EYE || itemstack.hasTag()) { // CraftBukkit - always allow item changing - this.getDataWatcher().set(EntityEnderSignal.b, SystemUtils.a(itemstack.cloneItemStack(), (itemstack1) -> { // CraftBukkit - decompile error -diff --git a/src/main/java/net/minecraft/server/EntityEnderSignal.java.rej b/src/main/java/net/minecraft/server/EntityEnderSignal.java.rej -deleted file mode 100644 -index ee4313713c81fd342161fb0b749c5de8b2bff046..0000000000000000000000000000000000000000 ---- a/src/main/java/net/minecraft/server/EntityEnderSignal.java.rej -+++ /dev/null -@@ -1,19 +0,0 @@ --diff a/src/main/java/net/minecraft/server/EntityEnderSignal.java b/src/main/java/net/minecraft/server/EntityEnderSignal.java (rejected hunks) --@@ -19,9 +19,16 @@ public class EntityEnderSignal extends Entity { -- this.setPosition(d0, d1, d2); -- } -- --+ // Purpur start --+ @Override --+ public boolean canSaveToDisk() { --+ return world != null && world.purpurConfig.saveProjectilesToDisk; --+ } --+ // Purpur end --+ -- public void b(ItemStack itemstack) { -- if (itemstack.getItem() != Items.ENDER_EYE || itemstack.hasTag()) { --- this.getDataWatcher().set(EntityEnderSignal.b, SystemUtils.a((Object) itemstack.cloneItemStack(), (itemstack1) -> { --+ this.getDataWatcher().set(EntityEnderSignal.b, SystemUtils.a(itemstack.cloneItemStack(), (itemstack1) -> { // Purpur - decompile error -- itemstack1.setCount(1); -- })); -- } diff --git a/src/main/java/net/minecraft/server/EntityFox.java.rej b/src/main/java/net/minecraft/server/EntityFox.java.rej deleted file mode 100644 index c3c7738570d3670b50f144f145b61dcc2d35bb85..0000000000000000000000000000000000000000 diff --git a/patches/server/0035-lithium-collision-optimizations.patch b/patches/server/0035-lithium-collision-optimizations.patch index 94e19b76..0cdad467 100644 --- a/patches/server/0035-lithium-collision-optimizations.patch +++ b/patches/server/0035-lithium-collision-optimizations.patch @@ -996,10 +996,10 @@ index 882b82d8952d34f6e3c639404d1a1521dedf1bb0..ccf1416000354b78ccef78b072062ce0 default EntityHuman findNearbyPlayer(Entity entity, double d0, @Nullable Predicate predicate) { return this.findNearbyPlayer(entity.locX(), entity.locY(), entity.locZ(), d0, predicate); } // Paper diff --git a/src/main/java/net/minecraft/server/PlayerChunkMap.java b/src/main/java/net/minecraft/server/PlayerChunkMap.java -index a0c696f951824bd1988cf9922dc3829c325f41b5..2711ce7a2b4f1868542088729bf4aa2919ee153e 100644 +index 8fd74f076713fa3ec289ee69d4d9a78f10139f8e..15df27eabfee965e6fd63ad74e5be9a991f0d4da 100644 --- a/src/main/java/net/minecraft/server/PlayerChunkMap.java +++ b/src/main/java/net/minecraft/server/PlayerChunkMap.java -@@ -1339,11 +1339,11 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d { +@@ -1341,11 +1341,11 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d { chunk.setLoaded(true); this.world.a(chunk.getTileEntities().values()); List list = null; @@ -1013,7 +1013,7 @@ index a0c696f951824bd1988cf9922dc3829c325f41b5..2711ce7a2b4f1868542088729bf4aa29 Iterator iterator = entityslice.iterator(); while (iterator.hasNext()) { -@@ -1636,7 +1636,7 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d { +@@ -1638,7 +1638,7 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d { // CraftBukkit - decompile error csvwriter.a(chunkcoordintpair.x, chunkcoordintpair.z, playerchunk.getTicketLevel(), optional.isPresent(), optional.map(IChunkAccess::getChunkStatus).orElse(null), optional1.map(Chunk::getState).orElse(null), a(playerchunk.c()), a(playerchunk.a()), a(playerchunk.b()), this.chunkDistanceManager.c(entry.getLongKey()), !this.isOutsideOfRange(chunkcoordintpair), optional1.map((chunk) -> { int sum = 0; diff --git a/scripts/commitUpstream.sh b/scripts/commitUpstream.sh index d8339f10..7837fe55 100755 --- a/scripts/commitUpstream.sh +++ b/scripts/commitUpstream.sh @@ -17,7 +17,7 @@ rainforest=$(changeLog Rainforest) updated="" logsuffix="" if [ ! -z "$tuinity" ]; then - logsuffix="$logsuffix\nTuinity Changes:\n$tuinity" + logsuffix="$logsuffix\n\nTuinity Changes:\n$tuinity" updated="Tuinity" fi if [ ! -z "$akarin" ]; then