Smooth world teleports

This commit is contained in:
Etil
2021-10-13 18:49:56 +02:00
parent ca9f6edd73
commit 282cdd6656
8 changed files with 59 additions and 23 deletions

View File

@@ -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<Runnab
@@ -71,10 +71,10 @@ index 1e3185f84c3017a4f756bdf14e397604b74edf4e..b8f55af3e9640ca19662623d0e738f34
tickSection = curTime;
}
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
index fb9a857dd119333b49867bb48846679ffa8193e1..1c335e6ae94b010bf293400b74b23a6f00a996a9 100644
index 692c4066584c3f468b16ca63f56d124d9b9b741a..85ab8a08444d70ab39c1f42611616f4ad5afffc2 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
@@ -2469,6 +2469,7 @@ public final class CraftServer implements Server {
@@ -2509,6 +2509,7 @@ public final class CraftServer implements Server {
@Override
public double[] getTPS() {
return new double[] {

View File

@@ -7,7 +7,7 @@ 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/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java
index fe38270c83555fd2008f9ce873ba2964a283e6a8..142ca290c1964fe78dcfe247d5e927ae5a2ddf2f 100644
index 2bc5bb4fbfb8b354c08e00059727d96426bcdaac..71d7fb64181f626a773865f1d57f567686aaa7c0 100644
--- a/src/main/java/net/minecraft/server/level/ServerPlayer.java
+++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java
@@ -1111,6 +1111,7 @@ public class ServerPlayer extends Player {
@@ -19,10 +19,10 @@ index fe38270c83555fd2008f9ce873ba2964a283e6a8..142ca290c1964fe78dcfe247d5e927ae
// CraftBukkit end
this.setLevel(worldserver);
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
index b6d3e77b5ea67f9c2a35e37ac35d5f77e8436995..36e8f89609b9b4078ab7a134b780b87400633c03 100644
index 0e5b670ecbde0a917af961aa7099b0a073d1d8f6..d657d63820754ef419428e672556f129ebc057fb 100644
--- a/src/main/java/net/minecraft/world/entity/Entity.java
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
@@ -2716,12 +2716,15 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, n
@@ -2718,12 +2718,15 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, n
return Vec3.directionFromRotation(this.getRotationVector());
}
@@ -40,7 +40,7 @@ index b6d3e77b5ea67f9c2a35e37ac35d5f77e8436995..36e8f89609b9b4078ab7a134b780b874
this.isInsidePortal = true;
diff --git a/src/main/java/xyz/arthurb/mirai/MiraiConfig.java b/src/main/java/xyz/arthurb/mirai/MiraiConfig.java
index 8a06c7ef1c239b4999aa58bbe95da68aca903a19..5b3e83d7ca76819bed73a261736949968806b332 100644
index 99c8d1287c0a0a434911219b898a5e07cc78dcb4..05fffebec57fa28790a3daba62697baa14e6cb57 100644
--- a/src/main/java/xyz/arthurb/mirai/MiraiConfig.java
+++ b/src/main/java/xyz/arthurb/mirai/MiraiConfig.java
@@ -231,5 +231,11 @@ public class MiraiConfig {

View File

@@ -5,7 +5,7 @@ Subject: [PATCH] Change defaults in YAML config files
diff --git a/src/main/java/com/destroystokyo/paper/PaperConfig.java b/src/main/java/com/destroystokyo/paper/PaperConfig.java
index a94be051d8c7aec6fe6bc00e14994c3b493cd28d..5d211fc499e9b38d29be4de2b3389b9d86f9f638 100644
index f404f163626959478756451d9e97a98f8f109da6..8669538a878684e71e55e50a692df93135b5f7da 100644
--- a/src/main/java/com/destroystokyo/paper/PaperConfig.java
+++ b/src/main/java/com/destroystokyo/paper/PaperConfig.java
@@ -203,7 +203,7 @@ public class PaperConfig {
@@ -74,7 +74,7 @@ index a94be051d8c7aec6fe6bc00e14994c3b493cd28d..5d211fc499e9b38d29be4de2b3389b9d
consoleHasAllPermissions = getBoolean("settings.console-has-all-permissions", consoleHasAllPermissions);
}
diff --git a/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java b/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java
index 7db27ff19a66454a941d24d3c6fb47830e927509..13079953c62948c9f036d01f0cd216e4f9809bea 100644
index 86edf7ddd025b54b2fc1907a306168bd56dd5396..c316ee859c466288e05e13f5d27aa6a8e26d878b 100644
--- a/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java
+++ b/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java
@@ -59,9 +59,9 @@ public class PaperWorldConfig {
@@ -305,7 +305,7 @@ index 7db27ff19a66454a941d24d3c6fb47830e927509..13079953c62948c9f036d01f0cd216e4
log("Withers properly target players: " + fixWitherTargetingBug);
}
@@ -894,8 +906,13 @@ public class PaperWorldConfig {
@@ -899,8 +911,13 @@ public class PaperWorldConfig {
private Table<String, String, Integer> sensorTickRates;
private Table<String, String, Integer> 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<net.minecraft.resources.ResourceLocation> featureSeeds = new it.unimi.dsi.fastutil.objects.Object2LongOpenHashMap<>();
private void featureSeeds() {
featureSeeds.defaultReturnValue(-1);

View File

@@ -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 {

View File

@@ -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() {

View File

@@ -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);

View File

@@ -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 {

View File

@@ -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<ServerPlayer> 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());