diff --git a/patches/server/0059-Purpur-Add-5-second-tps-average-in-tps.patch b/patches/server/0059-Purpur-Add-5-second-tps-average-in-tps.patch index a6c3b25..05d58e8 100644 --- a/patches/server/0059-Purpur-Add-5-second-tps-average-in-tps.patch +++ b/patches/server/0059-Purpur-Add-5-second-tps-average-in-tps.patch @@ -29,7 +29,7 @@ index fa56cd09102a89692b42f1d14257990508c5c720..f9251183df72ddc56662fd3f02acf216 setListData(vector); } diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 1e3185f84c3017a4f756bdf14e397604b74edf4e..b8f55af3e9640ca19662623d0e738f34cc0e71e4 100644 +index 74c6c9b6ea7f0f3564f76db4cdac1c89789434ed..586df67649d8f022299bb40c07b330118ba28c7b 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java @@ -305,7 +305,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop sensorTickRates; private Table behaviorTickRates; private void tickRates() { @@ -321,7 +321,7 @@ index 7db27ff19a66454a941d24d3c6fb47830e927509..13079953c62948c9f036d01f0cd216e4 log("Tick rates:"); sensorTickRates = loadTickRates("sensor"); behaviorTickRates = loadTickRates("behavior"); -@@ -934,7 +951,7 @@ public class PaperWorldConfig { +@@ -939,7 +956,7 @@ public class PaperWorldConfig { public it.unimi.dsi.fastutil.objects.Object2LongOpenHashMap featureSeeds = new it.unimi.dsi.fastutil.objects.Object2LongOpenHashMap<>(); private void featureSeeds() { featureSeeds.defaultReturnValue(-1); diff --git a/patches/server/0063-Purpur-Stop-squids-floating-on-top-of-water.patch b/patches/server/0063-Purpur-Stop-squids-floating-on-top-of-water.patch index 734d756..9fd1f7e 100644 --- a/patches/server/0063-Purpur-Stop-squids-floating-on-top-of-water.patch +++ b/patches/server/0063-Purpur-Stop-squids-floating-on-top-of-water.patch @@ -7,10 +7,10 @@ Original code by pl3xgaming, licensed under MIT You can find the original code on https://github.com/pl3xgaming/Purpur diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 36e8f89609b9b4078ab7a134b780b87400633c03..49e8682640a44cf2fd880551fd78672937ae908b 100644 +index d657d63820754ef419428e672556f129ebc057fb..d1580c9b07b18c441e2b0f5bb9b3864c46f91fd2 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -3836,12 +3836,18 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, n +@@ -3857,12 +3857,18 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, n this.xRotO = this.getXRot(); this.yRotO = this.getYRot(); } @@ -31,7 +31,7 @@ index 36e8f89609b9b4078ab7a134b780b87400633c03..49e8682640a44cf2fd880551fd786729 int minBlockX = Mth.floor(axisalignedbb.minX); int maxBlockX = Mth.ceil(axisalignedbb.maxX); diff --git a/src/main/java/net/minecraft/world/entity/animal/Squid.java b/src/main/java/net/minecraft/world/entity/animal/Squid.java -index 56838c9f214c0f75041e75c45ad1a0c72fcacc66..91650996837a6932f1b9ccef5c25e9e18d7d1df0 100644 +index 4da560f6e4da0750bda78b900b2d916d58adfccb..3c290290bc2088cfcf68a80d097dd2f7e2c796b7 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Squid.java +++ b/src/main/java/net/minecraft/world/entity/animal/Squid.java @@ -327,4 +327,10 @@ public class Squid extends WaterAnimal { diff --git a/patches/server/0064-Purpur-Entities-can-use-portals-configuration.patch b/patches/server/0064-Purpur-Entities-can-use-portals-configuration.patch index a471b90..66b4c36 100644 --- a/patches/server/0064-Purpur-Entities-can-use-portals-configuration.patch +++ b/patches/server/0064-Purpur-Entities-can-use-portals-configuration.patch @@ -7,10 +7,10 @@ Original code by pl3xgaming, licensed under MIT You can find the original code on https://github.com/pl3xgaming/Purpur diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 49e8682640a44cf2fd880551fd78672937ae908b..6abee01345f739b064f280821394e18d96fa9c56 100644 +index d1580c9b07b18c441e2b0f5bb9b3864c46f91fd2..2726bd04363c7952181adbccf03d1146fd30fc0f 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -2721,7 +2721,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, n +@@ -2723,7 +2723,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, n if (this.isOnPortalCooldown()) { if (!(xyz.arthurb.mirai.MiraiConfig.playerFixStuckPortal && this instanceof Player && !pos.equals(portalPos))) // Purpur this.setPortalCooldown(); @@ -19,7 +19,7 @@ index 49e8682640a44cf2fd880551fd78672937ae908b..6abee01345f739b064f280821394e18d if (!this.level.isClientSide && !pos.equals(this.portalEntrancePos)) { this.portalEntrancePos = pos.immutable(); portalPos = BlockPos.ZERO; // Purpur -@@ -3354,7 +3354,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, n +@@ -3375,7 +3375,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, n } public boolean canChangeDimensions() { diff --git a/patches/server/0069-Don-t-send-equipment-updates-if-only-durability-chan.patch b/patches/server/0069-Don-t-send-equipment-updates-if-only-durability-chan.patch index 73e0e7d..454a3cc 100644 --- a/patches/server/0069-Don-t-send-equipment-updates-if-only-durability-chan.patch +++ b/patches/server/0069-Don-t-send-equipment-updates-if-only-durability-chan.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Don't send equipment updates if only durability changed diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 0b6331f333e7cbdb76f83cbc2acb027e5716bc07..8e056efb5062c07de6a3e589e70535ab082bdfbe 100644 +index 8f6903aaac8da81c70e1fc98d5be708ca3586848..4d4880c1da93ba071b626ff9d6848697f3d9201b 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -3011,7 +3011,7 @@ public abstract class LivingEntity extends Entity { +@@ -3010,7 +3010,7 @@ public abstract class LivingEntity extends Entity { ItemStack itemstack1 = this.getItemBySlot(enumitemslot); diff --git a/patches/server/0071-Packet-obfuscation-and-reduction.patch b/patches/server/0071-Packet-obfuscation-and-reduction.patch index b53868b..b28bee9 100644 --- a/patches/server/0071-Packet-obfuscation-and-reduction.patch +++ b/patches/server/0071-Packet-obfuscation-and-reduction.patch @@ -156,10 +156,10 @@ index d175a41fd8c24813904019e25432c4a796db0b7b..ba2beaf0689b074a6b653fdf9dfbd7ba if (this.entity instanceof LivingEntity) { diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index adc89ce8cf50abaceaed433092bd3ef97035fb70..80bc033a58e8cd85de066db61fbce75a92181635 100644 +index f39be126e53e5325518615ce37c6e25eddbc1cb3..17efaa85da02b32169d6df2bff1289cd1133035f 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -2971,7 +2971,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, n +@@ -2973,7 +2973,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, n if (event.isCancelled()) { return; } @@ -169,7 +169,7 @@ index adc89ce8cf50abaceaed433092bd3ef97035fb70..80bc033a58e8cd85de066db61fbce75a } diff --git a/src/main/java/net/minecraft/world/entity/player/Player.java b/src/main/java/net/minecraft/world/entity/player/Player.java -index cea92f1dc663bf0648b2bd877d86ca380a517bc9..b869f6462813839ef147b5367a42cd0c557f0f7e 100644 +index ce713e1857121ca52467ad561c4fbb30ae054d87..efe1c292059c6cadf4d26eac9e5a2a10f2b65a80 100644 --- a/src/main/java/net/minecraft/world/entity/player/Player.java +++ b/src/main/java/net/minecraft/world/entity/player/Player.java @@ -633,7 +633,7 @@ public abstract class Player extends LivingEntity { @@ -182,7 +182,7 @@ index cea92f1dc663bf0648b2bd877d86ca380a517bc9..b869f6462813839ef147b5367a42cd0c @Override diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index 6c7cb224229fa3aa64d6cf3b25a2213e31165931..ddbeccdd3afd8eb2b515cda3c3841f6e27ddcf59 100644 +index f7b05cb6c145adadf0836ea9f7903675b002569a..1e177619330cbd3e0f83ecbeb4302612323fde44 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java @@ -2003,7 +2003,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player { diff --git a/patches/server/0072-Smooth-world-teleports.patch b/patches/server/0072-Smooth-world-teleports.patch new file mode 100644 index 0000000..d3b2047 --- /dev/null +++ b/patches/server/0072-Smooth-world-teleports.patch @@ -0,0 +1,36 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Etil <81570777+etil2jz@users.noreply.github.com> +Date: Wed, 13 Oct 2021 18:49:08 +0200 +Subject: [PATCH] Smooth world teleports + + +diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java +index 71d7fb64181f626a773865f1d57f567686aaa7c0..3504a24e562b30c18d4c25f126d4113a5c8b7747 100644 +--- a/src/main/java/net/minecraft/server/level/ServerPlayer.java ++++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java +@@ -263,6 +263,7 @@ public class ServerPlayer extends Player { + public final com.destroystokyo.paper.util.misc.PooledLinkedHashSets.PooledObjectLinkedOpenHashSet cachedSingleHashSet; // Paper + public boolean needsChunkCenterUpdate; // Paper - no-tick view distance // Paper - public + public org.bukkit.event.player.PlayerQuitEvent.QuitReason quitReason = null; // Paper - there are a lot of changes to do if we change all methods leading to the event ++ public boolean smoothWorldTeleport; // Mirai + + public ServerPlayer(MinecraftServer server, ServerLevel world, GameProfile profile) { + super(world, world.getSharedSpawnPos(), world.getSharedSpawnAngle(), profile); +diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java +index 71a742704038fa7a1174ce1d118735d917095f60..2931b46638d256d0dc9f89ebb78d0d24e073f82a 100644 +--- a/src/main/java/net/minecraft/server/players/PlayerList.java ++++ b/src/main/java/net/minecraft/server/players/PlayerList.java +@@ -952,11 +952,11 @@ public abstract class PlayerList { + } + // CraftBukkit start + LevelData worlddata = worldserver1.getLevelData(); +- entityplayer1.connection.send(new ClientboundRespawnPacket(worldserver1.dimensionType(), worldserver1.dimension(), BiomeManager.obfuscateSeed(worldserver1.getSeed()), entityplayer1.gameMode.getGameModeForPlayer(), entityplayer1.gameMode.getPreviousGameModeForPlayer(), worldserver1.isDebug(), worldserver1.isFlat(), flag)); ++ if (!entityplayer.smoothWorldTeleport) entityplayer1.connection.send(new ClientboundRespawnPacket(worldserver1.dimensionType(), worldserver1.dimension(), BiomeManager.obfuscateSeed(worldserver1.getSeed()), entityplayer1.gameMode.getGameModeForPlayer(), entityplayer1.gameMode.getPreviousGameModeForPlayer(), worldserver1.isDebug(), worldserver1.isFlat(), flag)); // Mirai + entityplayer1.connection.send(new ClientboundSetChunkCacheRadiusPacket(worldserver1.getChunkSource().chunkMap.playerChunkManager.getLoadDistance())); // Spigot // Paper - no-tick view distance// Paper - replace old player chunk management + entityplayer1.setLevel(worldserver1); + entityplayer1.unsetRemoved(); +- entityplayer1.connection.teleport(new Location(worldserver1.getWorld(), entityplayer1.getX(), entityplayer1.getY(), entityplayer1.getZ(), entityplayer1.getYRot(), entityplayer1.getXRot())); ++ if (!entityplayer.smoothWorldTeleport) entityplayer1.connection.teleport(new Location(worldserver1.getWorld(), entityplayer1.getX(), entityplayer1.getY(), entityplayer1.getZ(), entityplayer1.getYRot(), entityplayer1.getXRot())); // Mirai + entityplayer1.setShiftKeyDown(false); + + // entityplayer1.connection.b(entityplayer1.locX(), entityplayer1.locY(), entityplayer1.locZ(), entityplayer1.getYRot(), entityplayer1.getXRot());