Merge branch 'ver/1.16.5' of github.com:YatopiaMC/Yatopia into staging/1.16.5

This commit is contained in:
Simon Gardling 2021-02-17 11:48:07 -05:00
commit e8c6ab6a0b
86 changed files with 288 additions and 197 deletions

View File

@ -20,7 +20,6 @@ # Patches
| server | Add GameProfileLookupEvent | tr7zw | |
| api | Add GameProfileLookupEvent | tr7zw | |
| server | Add IntelliJ IDEA runnable | Zoe | |
| server | Add JsonList save timings | Ivan Pekov | |
| server | Add NBT API as a first-class lib | tr7zw | |
| api | Add NBT API as a first-class lib | tr7zw | |
| server | Add StructureGenerateEvent | Nahuel | Mariell Hoversholm |
@ -174,9 +173,11 @@ # Patches
| server | Fix IndexOutOfBoundsException when sending too many changes | Ivan Pekov | |
| server | Fix LightEngineThreaded memory leak | Ivan Pekov | |
| server | Fix PlayerEditBookEvent not saving new book | BillyGalbreath | |
| server | Fix chunks refusing to unload at low TPS | Spottedleaf | |
| server | Fix cow rotation when shearing mooshroom | William Blake Galbreath | |
| server | Fix death message colors | William Blake Galbreath | |
| server | Fix exp drop of zombie pigmen (MC-56653) | Phoenix616 | |
| server | Fix incorrect isRealPlayer init | Spottedleaf | |
| api | Fix javadoc warnings (missing @param and @return) | BillyGalbreath | |
| server | Fix lead fall dmg config | tr7zw | |
| server | Fix rotating UP/DOWN CW and CCW | BillyGalbreath | |
@ -328,6 +329,7 @@ # Patches
| server | Rewrite the light engine | Spottedleaf | |
| server | Ridables | William Blake Galbreath | |
| api | Ridables | William Blake Galbreath | |
| server | Send full pos packets for hard colliding entities | Spottedleaf | |
| server | Separate lookup locking from state access in UserCache | Spottedleaf | |
| server | Set name visible when using a Name Tag on an Armor Stand | jmp | |
| server | Short enderman height | William Blake Galbreath | |

View File

@ -49,10 +49,10 @@ index 9e6381a60b804a957eda5b72582d5545faebcb3e..1da5c7def8b476cf638548b05d3e2015
this.world.getMethodProfiler().enter("customSpawners");
if (flag1) {
diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java
index cb2c429bda81b8c151a50ef3627716fef1e422d0..7e48b44047b09b44b2005e67ea1ef6bb2f2de6bc 100644
index 307794aebb4ccd4d409013ed485e6defda2149ca..f599f80a543cfd3de97e5f80372ffed6c7bfd9ff 100644
--- a/src/main/java/net/minecraft/server/WorldServer.java
+++ b/src/main/java/net/minecraft/server/WorldServer.java
@@ -1019,7 +1019,10 @@ public class WorldServer extends World implements GeneratorAccessSeed {
@@ -1027,7 +1027,10 @@ public class WorldServer extends World implements GeneratorAccessSeed {
private final com.destroystokyo.paper.util.math.ThreadUnsafeRandom randomTickRandom = new com.destroystokyo.paper.util.math.ThreadUnsafeRandom();
// Paper end
@ -64,7 +64,7 @@ index cb2c429bda81b8c151a50ef3627716fef1e422d0..7e48b44047b09b44b2005e67ea1ef6bb
ChunkCoordIntPair chunkcoordintpair = chunk.getPos();
boolean flag = this.isRaining();
int j = chunkcoordintpair.d();
@@ -1128,9 +1131,13 @@ public class WorldServer extends World implements GeneratorAccessSeed {
@@ -1136,9 +1139,13 @@ public class WorldServer extends World implements GeneratorAccessSeed {
}
gameprofilerfiller.exit();
timings.chunkTicksBlocks.stopTiming(); // Paper

View File

@ -23,10 +23,10 @@ You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java
index 7e48b44047b09b44b2005e67ea1ef6bb2f2de6bc..994c1822a4b53552befc64d88e922285715fa31d 100644
index f599f80a543cfd3de97e5f80372ffed6c7bfd9ff..fdab9a50bc5d433c76fda1501110524792a749c8 100644
--- a/src/main/java/net/minecraft/server/WorldServer.java
+++ b/src/main/java/net/minecraft/server/WorldServer.java
@@ -1032,7 +1032,7 @@ public class WorldServer extends World implements GeneratorAccessSeed {
@@ -1040,7 +1040,7 @@ public class WorldServer extends World implements GeneratorAccessSeed {
gameprofilerfiller.enter("thunder");
final BlockPosition.MutableBlockPosition blockposition = this.chunkTickMutablePosition; // Paper - use mutable to reduce allocation rate, final to force compile fail on change

View File

@ -77,10 +77,10 @@ index 1da5c7def8b476cf638548b05d3e2015bc372f51..03bcd704e3c08f5b54b124df1583e3cc
boolean flag2 = world.ticksPerAnimalSpawns != 0L && worlddata.getTime() % world.ticksPerAnimalSpawns == 0L; // CraftBukkit
diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java
index 994c1822a4b53552befc64d88e922285715fa31d..f3e8e5dafa528075acc76fa2e75907f63438a93d 100644
index fdab9a50bc5d433c76fda1501110524792a749c8..6dc1f6d7f734b8c769c86109701155ebe9c2f6bd 100644
--- a/src/main/java/net/minecraft/server/WorldServer.java
+++ b/src/main/java/net/minecraft/server/WorldServer.java
@@ -1019,6 +1019,8 @@ public class WorldServer extends World implements GeneratorAccessSeed {
@@ -1027,6 +1027,8 @@ public class WorldServer extends World implements GeneratorAccessSeed {
private final com.destroystokyo.paper.util.math.ThreadUnsafeRandom randomTickRandom = new com.destroystokyo.paper.util.math.ThreadUnsafeRandom();
// Paper end
@ -89,7 +89,7 @@ index 994c1822a4b53552befc64d88e922285715fa31d..f3e8e5dafa528075acc76fa2e75907f6
// Airplane start - create version of chunk tick that returns a bool for updating lighting
public void a(Chunk chunk, int i) { this.abool(chunk, i); }
public boolean abool(Chunk chunk, int i) { final int randomTickSpeed = i; // Paper
@@ -1032,7 +1034,7 @@ public class WorldServer extends World implements GeneratorAccessSeed {
@@ -1040,7 +1042,7 @@ public class WorldServer extends World implements GeneratorAccessSeed {
gameprofilerfiller.enter("thunder");
final BlockPosition.MutableBlockPosition blockposition = this.chunkTickMutablePosition; // Paper - use mutable to reduce allocation rate, final to force compile fail on change
@ -98,7 +98,7 @@ index 994c1822a4b53552befc64d88e922285715fa31d..f3e8e5dafa528075acc76fa2e75907f6
blockposition.setValues(this.a(this.a(j, 0, k, 15))); // Paper
if (this.isRainingAt(blockposition)) {
DifficultyDamageScaler difficultydamagescaler = this.getDamageScaler(blockposition);
@@ -1062,7 +1064,7 @@ public class WorldServer extends World implements GeneratorAccessSeed {
@@ -1070,7 +1072,7 @@ public class WorldServer extends World implements GeneratorAccessSeed {
}
gameprofilerfiller.exitEnter("iceandsnow");

View File

@ -56,7 +56,7 @@ index 631eb682e81e30d2a937fd1eafccd8a9ab82d21e..dc07376845f84ea949a2153cb75d2cd9
return (EntityTypes) IRegistry.a((IRegistry) IRegistry.ENTITY_TYPE, s, (Object) entitytypes_builder.a(s));
}
diff --git a/src/main/java/net/minecraft/server/PlayerChunkMap.java b/src/main/java/net/minecraft/server/PlayerChunkMap.java
index a42571cfd2c9c80df27e59db832cb64c2a64e141..c5546838187e3dc0d752e69c1eafa0dbc3804b0c 100644
index 2c2becef8b56d7e5e998976222df85d2c8516c43..cde7d0e641b2e1e8e6a4ce9510a996343d62a88d 100644
--- a/src/main/java/net/minecraft/server/PlayerChunkMap.java
+++ b/src/main/java/net/minecraft/server/PlayerChunkMap.java
@@ -638,7 +638,9 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
@ -91,7 +91,7 @@ index a42571cfd2c9c80df27e59db832cb64c2a64e141..c5546838187e3dc0d752e69c1eafa0db
return Math.max(Math.abs(k), Math.abs(l));
}
@@ -2498,11 +2504,17 @@ Sections go from 0..16. Now whenever a section is not empty, it can potentially
@@ -2496,11 +2502,17 @@ Sections go from 0..16. Now whenever a section is not empty, it can potentially
boolean flag1 = this.tracker.attachedToPlayer;
if (!flag1) {
@ -111,7 +111,7 @@ index a42571cfd2c9c80df27e59db832cb64c2a64e141..c5546838187e3dc0d752e69c1eafa0db
}
}
@@ -2532,8 +2544,10 @@ Sections go from 0..16. Now whenever a section is not empty, it can potentially
@@ -2530,8 +2542,10 @@ Sections go from 0..16. Now whenever a section is not empty, it can potentially
}
private int b() {
@ -123,7 +123,7 @@ index a42571cfd2c9c80df27e59db832cb64c2a64e141..c5546838187e3dc0d752e69c1eafa0db
Iterator iterator = collection.iterator();
while (iterator.hasNext()) {
@@ -2545,6 +2559,8 @@ Sections go from 0..16. Now whenever a section is not empty, it can potentially
@@ -2543,6 +2557,8 @@ Sections go from 0..16. Now whenever a section is not empty, it can potentially
i = j;
}
}
@ -160,10 +160,10 @@ index 6e6059daba05d7ce3aabeed85cc0e0d2daa04f92..6e4c7a9b32c9e8057db3cbcead0b75d8
// Paper start - Prevent armor stands from doing entity lookups
@Override
diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java
index f3e8e5dafa528075acc76fa2e75907f63438a93d..4d47cca6db7a771677c31ade9425ed3ad83393ea 100644
index 6dc1f6d7f734b8c769c86109701155ebe9c2f6bd..2289c92c8933bfa0f382167fa5790a4ea17b7c75 100644
--- a/src/main/java/net/minecraft/server/WorldServer.java
+++ b/src/main/java/net/minecraft/server/WorldServer.java
@@ -907,7 +907,28 @@ public class WorldServer extends World implements GeneratorAccessSeed {
@@ -915,7 +915,28 @@ public class WorldServer extends World implements GeneratorAccessSeed {
gameprofilerfiller.enter("tick");
if (!entity.dead && !(entity instanceof EntityComplexPart)) {
@ -192,7 +192,7 @@ index f3e8e5dafa528075acc76fa2e75907f63438a93d..4d47cca6db7a771677c31ade9425ed3a
}
gameprofilerfiller.exit();
@@ -1278,9 +1299,14 @@ public class WorldServer extends World implements GeneratorAccessSeed {
@@ -1286,9 +1307,14 @@ public class WorldServer extends World implements GeneratorAccessSeed {
++entity.ticksLived;
GameProfilerFiller gameprofilerfiller = this.getMethodProfiler();

View File

@ -84,7 +84,7 @@ index 173a210392d71cdfc551f095dc0d9c9040d22d3f..7d7a512ad752e15fbe0edce47da1da76
return this.serverStatisticManager;
}
diff --git a/src/main/java/net/minecraft/server/IEntityAccess.java b/src/main/java/net/minecraft/server/IEntityAccess.java
index cbaf18af1066e8bde10293bba5eb3060bae1e66f..0c98a436021cbdedba5352073b1f8bf9852298eb 100644
index 93f2ac996904ddefed04704e554209d047faa59f..b1a546c9ef91169591ed5a71ac1c97dbc84afc03 100644
--- a/src/main/java/net/minecraft/server/IEntityAccess.java
+++ b/src/main/java/net/minecraft/server/IEntityAccess.java
@@ -174,28 +174,18 @@ public interface IEntityAccess {
@ -149,7 +149,7 @@ index b5e1a860a2569d7668330827614d221b60f3fc78..5f85a1d513f4fdc21b64e1a2b6882e33
// Paper start
public static final Predicate<Entity> affectsSpawning = (entity) -> {
diff --git a/src/main/java/net/minecraft/server/PlayerConnection.java b/src/main/java/net/minecraft/server/PlayerConnection.java
index 4058c1f7ada7d0c9e4ba73a0073b4f94bf410a8f..caf9ce94a7cb6154981d42953c81b588b19e3814 100644
index 4185ec46435ddf48d9e25c4d71ac4e14eb6301cf..1d810a9b23d236493db121dde92c7ebce25a25fe 100644
--- a/src/main/java/net/minecraft/server/PlayerConnection.java
+++ b/src/main/java/net/minecraft/server/PlayerConnection.java
@@ -250,6 +250,12 @@ public class PlayerConnection implements PacketListenerPlayIn {
@ -174,7 +174,7 @@ index 4058c1f7ada7d0c9e4ba73a0073b4f94bf410a8f..caf9ce94a7cb6154981d42953c81b588
// Skip the first time we do this
if (true) { // Spigot - don't skip any move events
Location oldTo = to.clone();
@@ -1228,7 +1236,7 @@ public class PlayerConnection implements PacketListenerPlayIn {
@@ -1253,7 +1261,7 @@ public class PlayerConnection implements PacketListenerPlayIn {
if (!this.player.H() && d11 > org.spigotmc.SpigotConfig.movedWronglyThreshold && !this.player.isSleeping() && !this.player.playerInteractManager.isCreative() && this.player.playerInteractManager.getGameMode() != EnumGamemode.SPECTATOR) { // Spigot
flag1 = true; // Tuinity - diff on change, this should be moved wrongly
@ -183,7 +183,7 @@ index 4058c1f7ada7d0c9e4ba73a0073b4f94bf410a8f..caf9ce94a7cb6154981d42953c81b588
}
this.player.setLocation(d4, d5, d6, f, f1);
@@ -1278,6 +1286,8 @@ public class PlayerConnection implements PacketListenerPlayIn {
@@ -1303,6 +1311,8 @@ public class PlayerConnection implements PacketListenerPlayIn {
this.lastYaw = to.getYaw();
this.lastPitch = to.getPitch();
@ -193,10 +193,10 @@ index 4058c1f7ada7d0c9e4ba73a0073b4f94bf410a8f..caf9ce94a7cb6154981d42953c81b588
if (from.getX() != Double.MAX_VALUE) {
Location oldTo = to.clone();
diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java
index 9c11a6ba0384baafaec1403a6a7c3f894d5cd7b3..e99c3ad507f1381c9aa495052d2014ba8b7e0750 100644
index 9a8a1e05a60bca77adc904017ae70ef5f629df0b..cc1182be1f9b01ab5d8e2499f7f15ad8798de3d3 100644
--- a/src/main/java/net/minecraft/server/WorldServer.java
+++ b/src/main/java/net/minecraft/server/WorldServer.java
@@ -782,7 +782,7 @@ public class WorldServer extends World implements GeneratorAccessSeed {
@@ -790,7 +790,7 @@ public class WorldServer extends World implements GeneratorAccessSeed {
// CraftBukkit end
if (this.everyoneSleeping && this.players.stream().noneMatch((entityplayer) -> {
@ -205,7 +205,7 @@ index 9c11a6ba0384baafaec1403a6a7c3f894d5cd7b3..e99c3ad507f1381c9aa495052d2014ba
})) {
// CraftBukkit start
long l = this.worldData.getDayTime() + 24000L;
@@ -1119,7 +1119,7 @@ public class WorldServer extends World implements GeneratorAccessSeed {
@@ -1127,7 +1127,7 @@ public class WorldServer extends World implements GeneratorAccessSeed {
while (iterator.hasNext()) {
EntityPlayer entityplayer = (EntityPlayer) iterator.next();

View File

@ -67,10 +67,10 @@ index 7d7a512ad752e15fbe0edce47da1da76c01df3b3..9b09d68435290add2781a72e5bc62ce5
public Scoreboard getScoreboard() {
return getBukkitEntity().getScoreboard().getHandle();
diff --git a/src/main/java/net/minecraft/server/PlayerConnection.java b/src/main/java/net/minecraft/server/PlayerConnection.java
index caf9ce94a7cb6154981d42953c81b588b19e3814..e833447073585ff97f8ab3a95caea8866fcc24e2 100644
index 1d810a9b23d236493db121dde92c7ebce25a25fe..218ebc7befca683607b0b9863384a5b5d6bd3a2f 100644
--- a/src/main/java/net/minecraft/server/PlayerConnection.java
+++ b/src/main/java/net/minecraft/server/PlayerConnection.java
@@ -1708,6 +1708,7 @@ public class PlayerConnection implements PacketListenerPlayIn {
@@ -1733,6 +1733,7 @@ public class PlayerConnection implements PacketListenerPlayIn {
PlayerConnectionUtils.ensureMainThread(packetplayinresourcepackstatus, this, this.player.getWorldServer());
// Paper start
PlayerResourcePackStatusEvent.Status packStatus = PlayerResourcePackStatusEvent.Status.values()[packetplayinresourcepackstatus.status.ordinal()];
@ -79,10 +79,10 @@ index caf9ce94a7cb6154981d42953c81b588b19e3814..e833447073585ff97f8ab3a95caea886
this.server.getPluginManager().callEvent(new PlayerResourcePackStatusEvent(getPlayer(), packStatus));
// Paper end
diff --git a/src/main/java/net/minecraft/server/PlayerList.java b/src/main/java/net/minecraft/server/PlayerList.java
index 1eb44877e7384ae0a028a12b832684126b8d50ec..5b0fdcf5190e4ab2af249a5a0952b66d52f08751 100644
index eabd1aa2b740bcb6db40be300cd6daf59674fa3f..46043d3a4f4056fff93b867c65d363ac1277db7a 100644
--- a/src/main/java/net/minecraft/server/PlayerList.java
+++ b/src/main/java/net/minecraft/server/PlayerList.java
@@ -914,6 +914,8 @@ public abstract class PlayerList {
@@ -915,6 +915,8 @@ public abstract class PlayerList {
}
// Paper end

View File

@ -17,7 +17,7 @@ index 8e93f1540ba5f995489c1fbcec70d10b011cd9c3..470f92c4fb0919d052b19acff8dff533
return this.a;
}
diff --git a/src/main/java/net/minecraft/server/PlayerConnection.java b/src/main/java/net/minecraft/server/PlayerConnection.java
index e833447073585ff97f8ab3a95caea8866fcc24e2..fdd517290a0b306dff9c0fffadc424b59b8504f3 100644
index 218ebc7befca683607b0b9863384a5b5d6bd3a2f..dc93f0c8f65e2a796604b8e4488c1b3bd155b64e 100644
--- a/src/main/java/net/minecraft/server/PlayerConnection.java
+++ b/src/main/java/net/minecraft/server/PlayerConnection.java
@@ -84,6 +84,7 @@ public class PlayerConnection implements PacketListenerPlayIn {
@ -50,7 +50,7 @@ index e833447073585ff97f8ab3a95caea8866fcc24e2..fdd517290a0b306dff9c0fffadc424b5
if (this.isPendingPing()) {
if (!this.processedDisconnect && elapsedTime >= KEEPALIVE_LIMIT) { // check keepalive limit, don't fire if already disconnected
PlayerConnection.LOGGER.warn("{} was kicked due to keepalive timeout!", this.player.getName()); // more info
@@ -2882,6 +2898,16 @@ public class PlayerConnection implements PacketListenerPlayIn {
@@ -2907,6 +2923,16 @@ public class PlayerConnection implements PacketListenerPlayIn {
@Override
public void a(PacketPlayInKeepAlive packetplayinkeepalive) {

View File

@ -5,10 +5,10 @@ Subject: [PATCH] Zombie horse naturally spawn
diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java
index e99c3ad507f1381c9aa495052d2014ba8b7e0750..49ae8bd50810473d121e786a06a813b777909904 100644
index cc1182be1f9b01ab5d8e2499f7f15ad8798de3d3..30388fca6d3db797825949642d372a4091cc48c2 100644
--- a/src/main/java/net/minecraft/server/WorldServer.java
+++ b/src/main/java/net/minecraft/server/WorldServer.java
@@ -996,12 +996,18 @@ public class WorldServer extends World implements GeneratorAccessSeed {
@@ -1004,12 +1004,18 @@ public class WorldServer extends World implements GeneratorAccessSeed {
boolean flag1 = this.getGameRules().getBoolean(GameRules.DO_MOB_SPAWNING) && this.random.nextDouble() < (double) difficultydamagescaler.b() * paperConfig.skeleHorseSpawnChance; // Paper
if (flag1) {

View File

@ -5,7 +5,7 @@ Subject: [PATCH] Dont send useless entity packets
diff --git a/src/main/java/net/minecraft/server/EntityTrackerEntry.java b/src/main/java/net/minecraft/server/EntityTrackerEntry.java
index 526c1419af7bd0b6098a8f9a0a24a64ba61c6ebc..81a82a1fa811956a8b5233677981c2d3783b34fb 100644
index 81869215876d10a84ab27c0e6f41963c1346fd1c..f3b37f5704d752d1ec4d4d916690907dace67183 100644
--- a/src/main/java/net/minecraft/server/EntityTrackerEntry.java
+++ b/src/main/java/net/minecraft/server/EntityTrackerEntry.java
@@ -172,6 +172,7 @@ public class EntityTrackerEntry {

View File

@ -5,7 +5,7 @@ Subject: [PATCH] Cat spawning options
diff --git a/src/main/java/net/minecraft/server/IEntityAccess.java b/src/main/java/net/minecraft/server/IEntityAccess.java
index 0c98a436021cbdedba5352073b1f8bf9852298eb..08778cc0de9b1ffefc52d12d31403c33c50ddb2f 100644
index b1a546c9ef91169591ed5a71ac1c97dbc84afc03..6edff6d8ce67f64420a845e992339dadf53641f8 100644
--- a/src/main/java/net/minecraft/server/IEntityAccess.java
+++ b/src/main/java/net/minecraft/server/IEntityAccess.java
@@ -47,6 +47,7 @@ public interface IEntityAccess {

View File

@ -17,10 +17,10 @@ index 9b09d68435290add2781a72e5bc62ce50a79e39f..1d69c07eb3890e61383928433db727bd
this.playerConnection.sendPacket(new PacketPlayOutOpenSignEditor(tileentitysign.getPosition()));
}
diff --git a/src/main/java/net/minecraft/server/PlayerConnection.java b/src/main/java/net/minecraft/server/PlayerConnection.java
index fdd517290a0b306dff9c0fffadc424b59b8504f3..3fca11948fad36b6adec55883d365e58a17925fa 100644
index dc93f0c8f65e2a796604b8e4488c1b3bd155b64e..eaddc933261aeccc963ac0f35eebb387c16ae6a0 100644
--- a/src/main/java/net/minecraft/server/PlayerConnection.java
+++ b/src/main/java/net/minecraft/server/PlayerConnection.java
@@ -2879,6 +2879,14 @@ public class PlayerConnection implements PacketListenerPlayIn {
@@ -2904,6 +2904,14 @@ public class PlayerConnection implements PacketListenerPlayIn {
}
}
// Paper end

View File

@ -5,10 +5,10 @@ Subject: [PATCH] Add permission for F3+N debug
diff --git a/src/main/java/net/minecraft/server/PlayerList.java b/src/main/java/net/minecraft/server/PlayerList.java
index 5b0fdcf5190e4ab2af249a5a0952b66d52f08751..3c19e931ad7d5330f1c77ef65aaa5858a001e4df 100644
index 46043d3a4f4056fff93b867c65d363ac1277db7a..726e3292318f6a0de474f68fe30da4a954c7600a 100644
--- a/src/main/java/net/minecraft/server/PlayerList.java
+++ b/src/main/java/net/minecraft/server/PlayerList.java
@@ -1073,6 +1073,7 @@ public abstract class PlayerList {
@@ -1074,6 +1074,7 @@ public abstract class PlayerList {
} else {
b0 = (byte) (24 + i);
}

View File

@ -74,7 +74,7 @@ index d99cecc4075338d7b8f154ab94d8ac04190ba371..ec37d2c3b0393c43097bdfc6064ebe3a
+ // Purpur end
}
diff --git a/src/main/java/net/minecraft/server/EntityTrackerEntry.java b/src/main/java/net/minecraft/server/EntityTrackerEntry.java
index 81a82a1fa811956a8b5233677981c2d3783b34fb..a9d60e5dc2f3b38a192a68d79bcf78e4873664a2 100644
index f3b37f5704d752d1ec4d4d916690907dace67183..1cae524fe4248370f6f6967327cb4a463b5f19fc 100644
--- a/src/main/java/net/minecraft/server/EntityTrackerEntry.java
+++ b/src/main/java/net/minecraft/server/EntityTrackerEntry.java
@@ -106,6 +106,15 @@ public class EntityTrackerEntry {

View File

@ -5,10 +5,10 @@ Subject: [PATCH] Allow color codes in books
diff --git a/src/main/java/net/minecraft/server/PlayerConnection.java b/src/main/java/net/minecraft/server/PlayerConnection.java
index 3fca11948fad36b6adec55883d365e58a17925fa..ffccdc3bf1d28836f4fc2772ebfde843415ea232 100644
index eaddc933261aeccc963ac0f35eebb387c16ae6a0..67fa3bd958876abc39c46d9e517551836b0e86ed 100644
--- a/src/main/java/net/minecraft/server/PlayerConnection.java
+++ b/src/main/java/net/minecraft/server/PlayerConnection.java
@@ -1029,7 +1029,8 @@ public class PlayerConnection implements PacketListenerPlayIn {
@@ -1054,7 +1054,8 @@ public class PlayerConnection implements PacketListenerPlayIn {
if (itemstack.getItem() == Items.WRITABLE_BOOK) {
NBTTagList nbttaglist = new NBTTagList();
@ -18,7 +18,7 @@ index 3fca11948fad36b6adec55883d365e58a17925fa..ffccdc3bf1d28836f4fc2772ebfde843
ItemStack old = itemstack.cloneItemStack(); // CraftBukkit
itemstack.a("pages", (NBTBase) nbttaglist);
CraftEventFactory.handleEditBookEvent(player, i, old, itemstack); // CraftBukkit
@@ -1047,13 +1048,14 @@ public class PlayerConnection implements PacketListenerPlayIn {
@@ -1072,13 +1073,14 @@ public class PlayerConnection implements PacketListenerPlayIn {
itemstack1.setTag(nbttagcompound.clone());
}
@ -35,7 +35,7 @@ index 3fca11948fad36b6adec55883d365e58a17925fa..ffccdc3bf1d28836f4fc2772ebfde843
ChatComponentText chatcomponenttext = new ChatComponentText(s1);
String s2 = IChatBaseComponent.ChatSerializer.a((IChatBaseComponent) chatcomponenttext);
@@ -1065,6 +1067,16 @@ public class PlayerConnection implements PacketListenerPlayIn {
@@ -1090,6 +1092,16 @@ public class PlayerConnection implements PacketListenerPlayIn {
}
}

View File

@ -92,10 +92,10 @@ index 21f94651fcb47103b12806d456417882e7f84dcd..fcc247e86992d1e1a94438ee4f0a7018
}
diff --git a/src/main/java/net/minecraft/server/PlayerConnection.java b/src/main/java/net/minecraft/server/PlayerConnection.java
index ffccdc3bf1d28836f4fc2772ebfde843415ea232..8932f4854d9fc52fb2ec66a748e640dfd8806461 100644
index 67fa3bd958876abc39c46d9e517551836b0e86ed..94353290087df17e441dba8fe8999ad558652cda 100644
--- a/src/main/java/net/minecraft/server/PlayerConnection.java
+++ b/src/main/java/net/minecraft/server/PlayerConnection.java
@@ -2271,6 +2271,7 @@ public class PlayerConnection implements PacketListenerPlayIn {
@@ -2296,6 +2296,7 @@ public class PlayerConnection implements PacketListenerPlayIn {
boolean triggerLeashUpdate = itemInHand != null && itemInHand.getItem() == Items.LEAD && entity instanceof EntityInsentient;
Item origItem = this.player.inventory.getItemInHand() == null ? null : this.player.inventory.getItemInHand().getItem();
PlayerInteractEntityEvent event;

View File

@ -6,10 +6,10 @@ Subject: [PATCH] Duplicate paper's vanilla scoreboard colors patch to sync
diff --git a/src/main/java/net/minecraft/server/PlayerConnection.java b/src/main/java/net/minecraft/server/PlayerConnection.java
index 8932f4854d9fc52fb2ec66a748e640dfd8806461..eff58bba46e5cb4bd412fcb65e293d5b9eb58aba 100644
index 94353290087df17e441dba8fe8999ad558652cda..05f2cc5904f196c70e8e83625810673f6110aba0 100644
--- a/src/main/java/net/minecraft/server/PlayerConnection.java
+++ b/src/main/java/net/minecraft/server/PlayerConnection.java
@@ -2030,7 +2030,15 @@ public class PlayerConnection implements PacketListenerPlayIn {
@@ -2055,7 +2055,15 @@ public class PlayerConnection implements PacketListenerPlayIn {
return null;
}
@ -26,7 +26,7 @@ index 8932f4854d9fc52fb2ec66a748e640dfd8806461..eff58bba46e5cb4bd412fcb65e293d5b
PlayerConnection.this.minecraftServer.console.sendMessage(message);
if (((LazyPlayerSet) queueEvent.getRecipients()).isLazy()) {
for (Object player : PlayerConnection.this.minecraftServer.getPlayerList().players) {
@@ -2063,7 +2071,7 @@ public class PlayerConnection implements PacketListenerPlayIn {
@@ -2088,7 +2096,7 @@ public class PlayerConnection implements PacketListenerPlayIn {
// Paper Start - (Meh) Support for vanilla world scoreboard name coloring
String displayName = event.getPlayer().getDisplayName();
if (this.player.getWorld().paperConfig.useVanillaScoreboardColoring) {

View File

@ -18,7 +18,7 @@ index dae2e5d70756c5b61163d57099b65f7e415b288c..55b67f1057224101272f9d6023a93872
}
final Object val = config.get(key);
diff --git a/src/main/java/com/tuinity/tuinity/config/TuinityConfig.java b/src/main/java/com/tuinity/tuinity/config/TuinityConfig.java
index ceeb515f4528551659598d9999917f8596e3eded..274b93dce71d630107c2647a045ab28e3eec58c4 100644
index 0959aa6855a150b121b9b75885216c46b151179e..b181b22cdd78f9ddeea38f315a5dc856134d1c58 100644
--- a/src/main/java/com/tuinity/tuinity/config/TuinityConfig.java
+++ b/src/main/java/com/tuinity/tuinity/config/TuinityConfig.java
@@ -1,5 +1,6 @@
@ -28,7 +28,7 @@ index ceeb515f4528551659598d9999917f8596e3eded..274b93dce71d630107c2647a045ab28e
import com.destroystokyo.paper.util.SneakyThrow;
import net.minecraft.server.MinecraftServer;
import net.minecraft.server.TicketType;
@@ -376,6 +377,19 @@ public final class TuinityConfig {
@@ -382,6 +383,19 @@ public final class TuinityConfig {
this.spawnLimitAmbient = this.getInt(path + ".ambient", -1);
}

View File

@ -22,7 +22,7 @@ index 829d4a7508e1656dbdc912096b7eafcf30cbb5b2..6aea156d7c7a9ca8a357aad6a6781d72
}
diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java
index 49ae8bd50810473d121e786a06a813b777909904..c92f3043f6993e569cf83ac69682b85ef178d622 100644
index 30388fca6d3db797825949642d372a4091cc48c2..138f5c577391980f2b218b25a4251ac853bb9bad 100644
--- a/src/main/java/net/minecraft/server/WorldServer.java
+++ b/src/main/java/net/minecraft/server/WorldServer.java
@@ -321,14 +321,14 @@ public class WorldServer extends World implements GeneratorAccessSeed {

View File

@ -4975,10 +4975,10 @@ index 0000000000000000000000000000000000000000..44929182dfd7ad847d9657c324f440cb
+ }
+}
diff --git a/src/main/java/net/minecraft/server/PlayerConnection.java b/src/main/java/net/minecraft/server/PlayerConnection.java
index eff58bba46e5cb4bd412fcb65e293d5b9eb58aba..e9485684b7d5ddde72fc388d51cfef679178bad3 100644
index 05f2cc5904f196c70e8e83625810673f6110aba0..ef222cdfdfb49dcdcb0e3bf6f6cabc765be003cc 100644
--- a/src/main/java/net/minecraft/server/PlayerConnection.java
+++ b/src/main/java/net/minecraft/server/PlayerConnection.java
@@ -2288,6 +2288,8 @@ public class PlayerConnection implements PacketListenerPlayIn {
@@ -2313,6 +2313,8 @@ public class PlayerConnection implements PacketListenerPlayIn {
}
this.server.getPluginManager().callEvent(event);
@ -5043,7 +5043,7 @@ index 1ac2e9f373ae5b4250ff9faf726a962a739d6faf..97cc98af100edfad82668200759a5eed
// Purpur end
}
diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java
index c92f3043f6993e569cf83ac69682b85ef178d622..5a6aace070e64b6db315d766d16773c408de638e 100644
index 138f5c577391980f2b218b25a4251ac853bb9bad..c451e71601fc48294f9161ca5ef8442d31ad96f7 100644
--- a/src/main/java/net/minecraft/server/WorldServer.java
+++ b/src/main/java/net/minecraft/server/WorldServer.java
@@ -102,6 +102,7 @@ public class WorldServer extends World implements GeneratorAccessSeed {

View File

@ -42,7 +42,7 @@ index 97cc98af100edfad82668200759a5eed8fc67558..ded92fe7c7871bae6e9741747a67636d
this.generator = gen;
this.world = new CraftWorld((WorldServer) this, gen, env);
diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java
index 5a6aace070e64b6db315d766d16773c408de638e..ded19d1773237eaf51f72ce93a6794db8f56d160 100644
index c451e71601fc48294f9161ca5ef8442d31ad96f7..02cbbf11a2b71573f50aac6fdfaa6643c18832bf 100644
--- a/src/main/java/net/minecraft/server/WorldServer.java
+++ b/src/main/java/net/minecraft/server/WorldServer.java
@@ -339,7 +339,24 @@ public class WorldServer extends World implements GeneratorAccessSeed {

View File

@ -18,7 +18,7 @@ index 1b9b43ee696575d986c25cafec07d863acb951a7..e837db171545ceacbc84a2b360cf0d95
public PacketPlayOutUpdateTime() {}
diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java
index ded19d1773237eaf51f72ce93a6794db8f56d160..cb2c429bda81b8c151a50ef3627716fef1e422d0 100644
index 02cbbf11a2b71573f50aac6fdfaa6643c18832bf..307794aebb4ccd4d409013ed485e6defda2149ca 100644
--- a/src/main/java/net/minecraft/server/WorldServer.java
+++ b/src/main/java/net/minecraft/server/WorldServer.java
@@ -94,6 +94,7 @@ public class WorldServer extends World implements GeneratorAccessSeed {
@ -37,7 +37,7 @@ index ded19d1773237eaf51f72ce93a6794db8f56d160..cb2c429bda81b8c151a50ef3627716fe
}
// Tuinity start - optimise collision
@@ -964,7 +966,21 @@ public class WorldServer extends World implements GeneratorAccessSeed {
@@ -972,7 +974,21 @@ public class WorldServer extends World implements GeneratorAccessSeed {
this.nextTickListBlock.nextTick(); // Paper
this.nextTickListFluid.nextTick(); // Paper
this.worldDataServer.u().a(this.server, i);
@ -60,7 +60,7 @@ index ded19d1773237eaf51f72ce93a6794db8f56d160..cb2c429bda81b8c151a50ef3627716fe
this.setDayTime(this.worldData.getDayTime() + 1L);
}
@@ -973,6 +989,12 @@ public class WorldServer extends World implements GeneratorAccessSeed {
@@ -981,6 +997,12 @@ public class WorldServer extends World implements GeneratorAccessSeed {
public void setDayTime(long i) {
this.worldDataServer.setDayTime(i);

View File

@ -5,7 +5,7 @@ Subject: [PATCH] Spread out and optimise player list ticks
diff --git a/src/main/java/net/minecraft/server/PlayerList.java b/src/main/java/net/minecraft/server/PlayerList.java
index 3c19e931ad7d5330f1c77ef65aaa5858a001e4df..0efc210ad55d843fd297f0caa88a5f355fbfef80 100644
index 726e3292318f6a0de474f68fe30da4a954c7600a..58a184c518c557b7e4cfeebba9e4a7a9fbaf8c85 100644
--- a/src/main/java/net/minecraft/server/PlayerList.java
+++ b/src/main/java/net/minecraft/server/PlayerList.java
@@ -71,7 +71,7 @@ public abstract class PlayerList {
@ -17,7 +17,7 @@ index 3c19e931ad7d5330f1c77ef65aaa5858a001e4df..0efc210ad55d843fd297f0caa88a5f35
// CraftBukkit start
private CraftServer cserver;
@@ -928,22 +928,23 @@ public abstract class PlayerList {
@@ -929,22 +929,23 @@ public abstract class PlayerList {
}
public void tick() {

View File

@ -37,10 +37,10 @@ index eea187723c1931a5db9a2d79a1abddd664d890a1..33d43478b1bc4b0ca3f16ba80e0cd99b
this.isRestarting = isRestarting;
if (flag) {
diff --git a/src/main/java/net/minecraft/server/PlayerList.java b/src/main/java/net/minecraft/server/PlayerList.java
index 0efc210ad55d843fd297f0caa88a5f355fbfef80..ca19cfa1ff801e5292332ff7b92bba881762306e 100644
index 58a184c518c557b7e4cfeebba9e4a7a9fbaf8c85..7db99b6639a0afdd1f68539f6c6a6f48275e5b6b 100644
--- a/src/main/java/net/minecraft/server/PlayerList.java
+++ b/src/main/java/net/minecraft/server/PlayerList.java
@@ -513,6 +513,8 @@ public abstract class PlayerList {
@@ -514,6 +514,8 @@ public abstract class PlayerList {
if (entityplayer.didPlayerJoinEvent) cserver.getPluginManager().callEvent(playerQuitEvent); // Paper - if we disconnected before join ever fired, don't fire quit
entityplayer.getBukkitEntity().disconnect(playerQuitEvent.getQuitMessage());

View File

@ -5,10 +5,10 @@ Subject: [PATCH] PlayerBookTooLargeEvent
diff --git a/src/main/java/net/minecraft/server/PlayerConnection.java b/src/main/java/net/minecraft/server/PlayerConnection.java
index e9485684b7d5ddde72fc388d51cfef679178bad3..75d955948a407d94e6f3a88f86afa8b1d6ba33cb 100644
index ef222cdfdfb49dcdcb0e3bf6f6cabc765be003cc..95c1ba7241069ad291c2acef6972937ac7c4c7c7 100644
--- a/src/main/java/net/minecraft/server/PlayerConnection.java
+++ b/src/main/java/net/minecraft/server/PlayerConnection.java
@@ -941,6 +941,7 @@ public class PlayerConnection implements PacketListenerPlayIn {
@@ -966,6 +966,7 @@ public class PlayerConnection implements PacketListenerPlayIn {
NBTTagList pageList = testStack.getTag().getList("pages", 8);
if (pageList.size() > 100) {
PlayerConnection.LOGGER.warn(this.player.getName() + " tried to send a book with too many pages");
@ -16,7 +16,7 @@ index e9485684b7d5ddde72fc388d51cfef679178bad3..75d955948a407d94e6f3a88f86afa8b1
minecraftServer.scheduleOnMain(() -> this.disconnect("Book too large!"));
return;
}
@@ -953,6 +954,7 @@ public class PlayerConnection implements PacketListenerPlayIn {
@@ -978,6 +979,7 @@ public class PlayerConnection implements PacketListenerPlayIn {
int byteLength = testString.getBytes(java.nio.charset.StandardCharsets.UTF_8).length;
if (byteLength > 256 * 4) {
PlayerConnection.LOGGER.warn(this.player.getName() + " tried to send a book with with a page too large!");
@ -24,7 +24,7 @@ index e9485684b7d5ddde72fc388d51cfef679178bad3..75d955948a407d94e6f3a88f86afa8b1
minecraftServer.scheduleOnMain(() -> this.disconnect("Book too large!"));
return;
}
@@ -976,6 +978,7 @@ public class PlayerConnection implements PacketListenerPlayIn {
@@ -1001,6 +1003,7 @@ public class PlayerConnection implements PacketListenerPlayIn {
if (byteTotal > byteAllowed) {
PlayerConnection.LOGGER.warn(this.player.getName() + " tried to send too large of a book. Book Size: " + byteTotal + " - Allowed: "+ byteAllowed + " - Pages: " + pageList.size());

View File

@ -5,10 +5,10 @@ Subject: [PATCH] Fix PlayerEditBookEvent not saving new book
diff --git a/src/main/java/net/minecraft/server/PlayerConnection.java b/src/main/java/net/minecraft/server/PlayerConnection.java
index 75d955948a407d94e6f3a88f86afa8b1d6ba33cb..ca190409b6718607183df2e86f0b4be98c9b6c33 100644
index 95c1ba7241069ad291c2acef6972937ac7c4c7c7..1471785da53a18edf31a20212f3cc6c19de92822 100644
--- a/src/main/java/net/minecraft/server/PlayerConnection.java
+++ b/src/main/java/net/minecraft/server/PlayerConnection.java
@@ -1036,7 +1036,7 @@ public class PlayerConnection implements PacketListenerPlayIn {
@@ -1061,7 +1061,7 @@ public class PlayerConnection implements PacketListenerPlayIn {
list.stream().map(s -> s = color(s, hasPerm, false)).map(NBTTagString::a).forEach(nbttaglist::add); // Purpur - edit book
ItemStack old = itemstack.cloneItemStack(); // CraftBukkit
itemstack.a("pages", (NBTBase) nbttaglist);

View File

@ -907,12 +907,15 @@ index 25e54a1fadc5d31fb250a3f47524b4f345fc8cc6..cce0ac8a36bef3b9e5a2b95e0c3dd137
return this.d(entity, axisalignedbb, predicate).allMatch(VoxelShape::isEmpty);
} finally { if (entity != null) entity.collisionLoadChunks = false; } // Paper
diff --git a/src/main/java/net/minecraft/server/IEntityAccess.java b/src/main/java/net/minecraft/server/IEntityAccess.java
index b053bb74f6df174a27dbfd7b1b3e3ccbb0b26659..64b59b17d28803f510b8b088ebafe446c450d486 100644
index b053bb74f6df174a27dbfd7b1b3e3ccbb0b26659..c17cbadeff9cb3ea955b9db99ab71d6d7fd8c247 100644
--- a/src/main/java/net/minecraft/server/IEntityAccess.java
+++ b/src/main/java/net/minecraft/server/IEntityAccess.java
@@ -70,7 +70,8 @@ public interface IEntityAccess {
@@ -68,9 +68,10 @@ public interface IEntityAccess {
if (axisalignedbb.a() < 1.0E-7D) {
return Stream.empty();
} else {
AxisAlignedBB axisalignedbb1 = axisalignedbb.g(1.0E-7D);
- AxisAlignedBB axisalignedbb1 = axisalignedbb.g(1.0E-7D);
+ AxisAlignedBB axisalignedbb1 = axisalignedbb.g(-1.0E-7D); // Tuinity - to comply with vanilla intersection rules, expand by -epsilon so we only get stuff we definitely collide with. expanding by +epsilon gives us stuff we don't collide with, which will screw over callers in some cases.
- predicate = predicate.and((entity1) -> { // Tuinity - optimise entity hard collisions
+ if (predicate == null) predicate = (e) -> true; // Tuinity - allow nullable
@ -1454,10 +1457,10 @@ index f011869880fedae4b69e505491e8bdbc5f51dfba..0d10d317cd0b60fc0866ae505c7fd71f
return this.j.d();
}
diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java
index da9172303b8acf5613b283a98bf7f6f0fe859d62..8cb3f69b5ccf6a6895fb6fef92d4023baf45593f 100644
index da9172303b8acf5613b283a98bf7f6f0fe859d62..8e1bd6029a5230f03616d9ff00b55ab14feced3f 100644
--- a/src/main/java/net/minecraft/server/WorldServer.java
+++ b/src/main/java/net/minecraft/server/WorldServer.java
@@ -361,6 +361,243 @@ public class WorldServer extends World implements GeneratorAccessSeed {
@@ -361,6 +361,251 @@ public class WorldServer extends World implements GeneratorAccessSeed {
this.asyncChunkTaskManager = new com.destroystokyo.paper.io.chunk.ChunkTaskManager(this); // Paper
}
@ -1477,7 +1480,11 @@ index da9172303b8acf5613b283a98bf7f6f0fe859d62..8cb3f69b5ccf6a6895fb6fef92d4023b
+ if (axisalignedbb.isEmpty()) {
+ return false;
+ }
+ axisalignedbb = axisalignedbb.grow(MCUtil.COLLISION_EPSILON, MCUtil.COLLISION_EPSILON, MCUtil.COLLISION_EPSILON);
+
+ // to comply with vanilla intersection rules, expand by -epsilon so we only get stuff we definitely collide with.
+ // Vanilla for hard collisions has this backwards, and they expand by +epsilon but this causes terrible problems
+ // specifically with boat collisions.
+ axisalignedbb = axisalignedbb.grow(-MCUtil.COLLISION_EPSILON, -MCUtil.COLLISION_EPSILON, -MCUtil.COLLISION_EPSILON);
+ List<Entity> entities = com.tuinity.tuinity.util.CachedLists.getTempGetEntitiesList();
+ try {
+ if (entity != null && entity.hardCollides()) {
@ -1647,7 +1654,11 @@ index da9172303b8acf5613b283a98bf7f6f0fe859d62..8cb3f69b5ccf6a6895fb6fef92d4023b
+ if (axisalignedbb.isEmpty()) {
+ return;
+ }
+ axisalignedbb = axisalignedbb.grow(MCUtil.COLLISION_EPSILON, MCUtil.COLLISION_EPSILON, MCUtil.COLLISION_EPSILON);
+
+ // to comply with vanilla intersection rules, expand by -epsilon so we only get stuff we definitely collide with.
+ // Vanilla for hard collisions has this backwards, and they expand by +epsilon but this causes terrible problems
+ // specifically with boat collisions.
+ axisalignedbb = axisalignedbb.grow(-MCUtil.COLLISION_EPSILON, -MCUtil.COLLISION_EPSILON, -MCUtil.COLLISION_EPSILON);
+ List<Entity> entities = com.tuinity.tuinity.util.CachedLists.getTempGetEntitiesList();
+ try {
+ if (entity != null && entity.hardCollides()) {

View File

@ -9,7 +9,7 @@ issues where teleporting players across worlds while ticking.
Also allows us to run mid tick while ticking entities.
diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java
index 8cb3f69b5ccf6a6895fb6fef92d4023baf45593f..99a0845a64e4853fe12722a76cc00385131269cc 100644
index 8e1bd6029a5230f03616d9ff00b55ab14feced3f..6e5a3467f92c29181d26c03ecf49d598d75a4633 100644
--- a/src/main/java/net/minecraft/server/WorldServer.java
+++ b/src/main/java/net/minecraft/server/WorldServer.java
@@ -61,7 +61,7 @@ public class WorldServer extends World implements GeneratorAccessSeed {
@ -30,7 +30,7 @@ index 8cb3f69b5ccf6a6895fb6fef92d4023baf45593f..99a0845a64e4853fe12722a76cc00385
protected final PersistentRaid persistentRaid;
private final ObjectLinkedOpenHashSet<BlockActionData> L;
private boolean ticking;
@@ -825,13 +825,12 @@ public class WorldServer extends World implements GeneratorAccessSeed {
@@ -833,13 +833,12 @@ public class WorldServer extends World implements GeneratorAccessSeed {
}
this.tickingEntities = true;
@ -46,7 +46,7 @@ index 8cb3f69b5ccf6a6895fb6fef92d4023baf45593f..99a0845a64e4853fe12722a76cc00385
Entity entity1 = entity.getVehicle();
/* CraftBukkit start - We prevent spawning in general, so this butchering is not needed
@@ -867,7 +866,7 @@ public class WorldServer extends World implements GeneratorAccessSeed {
@@ -875,7 +874,7 @@ public class WorldServer extends World implements GeneratorAccessSeed {
gameprofilerfiller.enter("remove");
if (entity.dead) {
this.removeEntityFromChunk(entity);
@ -55,7 +55,7 @@ index 8cb3f69b5ccf6a6895fb6fef92d4023baf45593f..99a0845a64e4853fe12722a76cc00385
this.unregisterEntity(entity);
}
@@ -875,6 +874,7 @@ public class WorldServer extends World implements GeneratorAccessSeed {
@@ -883,6 +882,7 @@ public class WorldServer extends World implements GeneratorAccessSeed {
}
timings.entityTick.stopTiming(); // Spigot
@ -63,7 +63,7 @@ index 8cb3f69b5ccf6a6895fb6fef92d4023baf45593f..99a0845a64e4853fe12722a76cc00385
this.tickingEntities = false;
// Paper start
for (java.lang.Runnable run : this.afterEntityTickingTasks) {
@@ -1654,7 +1654,7 @@ public class WorldServer extends World implements GeneratorAccessSeed {
@@ -1662,7 +1662,7 @@ public class WorldServer extends World implements GeneratorAccessSeed {
Entity entity = (Entity) iterator.next();
if (!(entity instanceof EntityPlayer)) {
@ -72,7 +72,7 @@ index 8cb3f69b5ccf6a6895fb6fef92d4023baf45593f..99a0845a64e4853fe12722a76cc00385
throw (IllegalStateException) SystemUtils.c((Throwable) (new IllegalStateException("Removing entity while ticking!")));
}
@@ -1682,6 +1682,7 @@ public class WorldServer extends World implements GeneratorAccessSeed {
@@ -1690,6 +1690,7 @@ public class WorldServer extends World implements GeneratorAccessSeed {
public void unregisterEntity(Entity entity) {
org.spigotmc.AsyncCatcher.catchOp("entity unregister"); // Spigot
@ -80,7 +80,7 @@ index 8cb3f69b5ccf6a6895fb6fef92d4023baf45593f..99a0845a64e4853fe12722a76cc00385
// Paper start - fix entity registration issues
if (entity instanceof EntityComplexPart) {
// Usually this is a no-op for complex parts, and ID's should be removed, but go ahead and remove it anyways
@@ -1748,12 +1749,16 @@ public class WorldServer extends World implements GeneratorAccessSeed {
@@ -1756,12 +1757,16 @@ public class WorldServer extends World implements GeneratorAccessSeed {
this.getScoreboard().a(entity);
// CraftBukkit start - SPIGOT-5278
if (entity instanceof EntityDrowned) {
@ -100,7 +100,7 @@ index 8cb3f69b5ccf6a6895fb6fef92d4023baf45593f..99a0845a64e4853fe12722a76cc00385
}
new com.destroystokyo.paper.event.entity.EntityRemoveFromWorldEvent(entity.getBukkitEntity()).callEvent(); // Paper - fire while valid
entity.valid = false; // CraftBukkit
@@ -1769,7 +1774,7 @@ public class WorldServer extends World implements GeneratorAccessSeed {
@@ -1777,7 +1782,7 @@ public class WorldServer extends World implements GeneratorAccessSeed {
return;
}
// Paper end
@ -109,7 +109,7 @@ index 8cb3f69b5ccf6a6895fb6fef92d4023baf45593f..99a0845a64e4853fe12722a76cc00385
if (!entity.isQueuedForRegister) { // Paper
this.entitiesToAdd.add(entity);
entity.isQueuedForRegister = true; // Paper
@@ -1777,6 +1782,7 @@ public class WorldServer extends World implements GeneratorAccessSeed {
@@ -1785,6 +1790,7 @@ public class WorldServer extends World implements GeneratorAccessSeed {
} else {
entity.isQueuedForRegister = false; // Paper
this.entitiesById.put(entity.getId(), entity);
@ -117,7 +117,7 @@ index 8cb3f69b5ccf6a6895fb6fef92d4023baf45593f..99a0845a64e4853fe12722a76cc00385
if (entity instanceof EntityEnderDragon) {
EntityComplexPart[] aentitycomplexpart = ((EntityEnderDragon) entity).eJ();
int i = aentitycomplexpart.length;
@@ -1785,6 +1791,7 @@ public class WorldServer extends World implements GeneratorAccessSeed {
@@ -1793,6 +1799,7 @@ public class WorldServer extends World implements GeneratorAccessSeed {
EntityComplexPart entitycomplexpart = aentitycomplexpart[j];
this.entitiesById.put(entitycomplexpart.getId(), entitycomplexpart);
@ -125,7 +125,7 @@ index 8cb3f69b5ccf6a6895fb6fef92d4023baf45593f..99a0845a64e4853fe12722a76cc00385
}
}
@@ -1809,12 +1816,16 @@ public class WorldServer extends World implements GeneratorAccessSeed {
@@ -1817,12 +1824,16 @@ public class WorldServer extends World implements GeneratorAccessSeed {
// this.getChunkProvider().addEntity(entity); // Paper - moved down below valid=true
// CraftBukkit start - SPIGOT-5278
if (entity instanceof EntityDrowned) {
@ -145,7 +145,7 @@ index 8cb3f69b5ccf6a6895fb6fef92d4023baf45593f..99a0845a64e4853fe12722a76cc00385
}
entity.valid = true; // CraftBukkit
this.getChunkProvider().addEntity(entity); // Paper - from above to be below valid=true
@@ -1830,7 +1841,7 @@ public class WorldServer extends World implements GeneratorAccessSeed {
@@ -1838,7 +1849,7 @@ public class WorldServer extends World implements GeneratorAccessSeed {
}
public void removeEntity(Entity entity) {
@ -154,7 +154,7 @@ index 8cb3f69b5ccf6a6895fb6fef92d4023baf45593f..99a0845a64e4853fe12722a76cc00385
throw (IllegalStateException) SystemUtils.c((Throwable) (new IllegalStateException("Removing entity while ticking!")));
} else {
this.removeEntityFromChunk(entity);
@@ -1934,7 +1945,9 @@ public class WorldServer extends World implements GeneratorAccessSeed {
@@ -1942,7 +1953,9 @@ public class WorldServer extends World implements GeneratorAccessSeed {
if (VoxelShapes.c(voxelshape, voxelshape1, OperatorBoolean.NOT_SAME)) {
boolean wasTicking = this.tickingEntities; this.tickingEntities = true; // Paper
@ -165,7 +165,7 @@ index 8cb3f69b5ccf6a6895fb6fef92d4023baf45593f..99a0845a64e4853fe12722a76cc00385
while (iterator.hasNext()) {
NavigationAbstract navigationabstract = (NavigationAbstract) iterator.next();
@@ -1943,6 +1956,9 @@ public class WorldServer extends World implements GeneratorAccessSeed {
@@ -1951,6 +1964,9 @@ public class WorldServer extends World implements GeneratorAccessSeed {
navigationabstract.b(blockposition);
}
}

View File

@ -6,7 +6,7 @@ Subject: [PATCH] Optimise collision checking in player move packet handling
Move collision logic to just the hasNewCollision call instead of getCubes + hasNewCollision
diff --git a/src/main/java/net/minecraft/server/PlayerConnection.java b/src/main/java/net/minecraft/server/PlayerConnection.java
index f1be42b5f1d0eb403e6895e8ff1d106861fa4298..4058c1f7ada7d0c9e4ba73a0073b4f94bf410a8f 100644
index f1be42b5f1d0eb403e6895e8ff1d106861fa4298..4185ec46435ddf48d9e25c4d71ac4e14eb6301cf 100644
--- a/src/main/java/net/minecraft/server/PlayerConnection.java
+++ b/src/main/java/net/minecraft/server/PlayerConnection.java
@@ -434,12 +434,14 @@ public class PlayerConnection implements PacketListenerPlayIn {
@ -55,7 +55,41 @@ index f1be42b5f1d0eb403e6895e8ff1d106861fa4298..4058c1f7ada7d0c9e4ba73a0073b4f94
entity.setLocation(d0, d1, d2, f, f1);
player.setLocation(d0, d1, d2, this.player.yaw, this.player.pitch); // CraftBukkit
this.networkManager.sendPacket(new PacketPlayOutVehicleMove(entity));
@@ -1070,7 +1081,7 @@ public class PlayerConnection implements PacketListenerPlayIn {
@@ -548,7 +559,32 @@ public class PlayerConnection implements PacketListenerPlayIn {
}
private boolean a(Entity entity) {
- return entity.world.a(entity.getBoundingBox().g(0.0625D).b(0.0D, -0.55D, 0.0D)).allMatch(BlockBase.BlockData::isAir);
+ // Tuinity start - stop using streams, this is already a known fixed problem in Entity#move
+ AxisAlignedBB box = entity.getBoundingBox().g(0.0625D).b(0.0D, -0.55D, 0.0D);
+ int minX = MathHelper.floor(box.minX);
+ int minY = MathHelper.floor(box.minY);
+ int minZ = MathHelper.floor(box.minZ);
+ int maxX = MathHelper.floor(box.maxX);
+ int maxY = MathHelper.floor(box.maxY);
+ int maxZ = MathHelper.floor(box.maxZ);
+
+ World world = entity.world;
+ BlockPosition.MutableBlockPosition pos = new BlockPosition.MutableBlockPosition();
+
+ for (int y = minY; y <= maxY; ++y) {
+ for (int z = minZ; z <= maxZ; ++z) {
+ for (int x = minX; x <= maxX; ++x) {
+ pos.setValues(x, y, z);
+ IBlockData type = world.getTypeIfLoaded(pos);
+ if (type != null && !type.isAir()) {
+ return false;
+ }
+ }
+ }
+ }
+
+ return true;
+ // Tuinity end - stop using streams, this is already a known fixed problem in Entity#move
}
@Override
@@ -1070,7 +1106,7 @@ public class PlayerConnection implements PacketListenerPlayIn {
}
if (this.teleportPos != null) {
@ -64,7 +98,7 @@ index f1be42b5f1d0eb403e6895e8ff1d106861fa4298..4058c1f7ada7d0c9e4ba73a0073b4f94
this.A = this.e;
this.a(this.teleportPos.x, this.teleportPos.y, this.teleportPos.z, this.player.yaw, this.player.pitch);
}
@@ -1157,7 +1168,7 @@ public class PlayerConnection implements PacketListenerPlayIn {
@@ -1157,7 +1193,7 @@ public class PlayerConnection implements PacketListenerPlayIn {
}
}
@ -73,7 +107,7 @@ index f1be42b5f1d0eb403e6895e8ff1d106861fa4298..4058c1f7ada7d0c9e4ba73a0073b4f94
d7 = d4 - this.o;
d8 = d5 - this.p;
@@ -1196,6 +1207,7 @@ public class PlayerConnection implements PacketListenerPlayIn {
@@ -1196,6 +1232,7 @@ public class PlayerConnection implements PacketListenerPlayIn {
}
this.player.move(EnumMoveType.PLAYER, new Vec3D(d7, d8, d9));
@ -81,7 +115,7 @@ index f1be42b5f1d0eb403e6895e8ff1d106861fa4298..4058c1f7ada7d0c9e4ba73a0073b4f94
this.player.setOnGround(packetplayinflying.b()); // CraftBukkit - SPIGOT-5810, SPIGOT-5835: reset by this.player.move
// Paper start - prevent position desync
if (this.teleportPos != null) {
@@ -1215,12 +1227,23 @@ public class PlayerConnection implements PacketListenerPlayIn {
@@ -1215,12 +1252,23 @@ public class PlayerConnection implements PacketListenerPlayIn {
boolean flag1 = false;
if (!this.player.H() && d11 > org.spigotmc.SpigotConfig.movedWronglyThreshold && !this.player.isSleeping() && !this.player.playerInteractManager.isCreative() && this.player.playerInteractManager.getGameMode() != EnumGamemode.SPECTATOR) { // Spigot
@ -107,7 +141,7 @@ index f1be42b5f1d0eb403e6895e8ff1d106861fa4298..4058c1f7ada7d0c9e4ba73a0073b4f94
this.a(d0, d1, d2, f, f1);
} else {
// CraftBukkit start - fire PlayerMoveEvent
@@ -1307,6 +1330,26 @@ public class PlayerConnection implements PacketListenerPlayIn {
@@ -1307,6 +1355,26 @@ public class PlayerConnection implements PacketListenerPlayIn {
}
}

View File

@ -293,7 +293,7 @@ index dface62144bb230c576e9eafad1016d19d211118..cd4a36a2f0feb2df928ee5ed7f0bca6d
org.spigotmc.AsyncCatcher.catchOp("Chunk getEntities call"); // Spigot
int i = MathHelper.floor((axisalignedbb.minY - 2.0D) / 16.0D);
diff --git a/src/main/java/net/minecraft/server/IEntityAccess.java b/src/main/java/net/minecraft/server/IEntityAccess.java
index 64b59b17d28803f510b8b088ebafe446c450d486..cbaf18af1066e8bde10293bba5eb3060bae1e66f 100644
index c17cbadeff9cb3ea955b9db99ab71d6d7fd8c247..93f2ac996904ddefed04704e554209d047faa59f 100644
--- a/src/main/java/net/minecraft/server/IEntityAccess.java
+++ b/src/main/java/net/minecraft/server/IEntityAccess.java
@@ -214,12 +214,12 @@ public interface IEntityAccess {

View File

@ -242,7 +242,7 @@ index 1d87e7461d28d8a639fafcfdfa5496014e9180f6..93c0c3376c3cb2fe416c8ae3e740ffda
this.spigotConfig = new org.spigotmc.SpigotWorldConfig(((WorldDataServer) worlddatamutable).getName()); // Spigot
this.paperConfig = new com.destroystokyo.paper.PaperWorldConfig(((WorldDataServer) worlddatamutable).getName(), this.spigotConfig); // Paper
diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java
index 99a0845a64e4853fe12722a76cc00385131269cc..e4f5ba7f32d9d64ff3be5effad09faf1e4c0ce3f 100644
index 6e5a3467f92c29181d26c03ecf49d598d75a4633..b1b63a11a6585971685b9ace1b6d91643a36aa95 100644
--- a/src/main/java/net/minecraft/server/WorldServer.java
+++ b/src/main/java/net/minecraft/server/WorldServer.java
@@ -301,6 +301,10 @@ public class WorldServer extends World implements GeneratorAccessSeed {
@ -256,7 +256,7 @@ index 99a0845a64e4853fe12722a76cc00385131269cc..e4f5ba7f32d9d64ff3be5effad09faf1
// Add env and gen to constructor, WorldData -> WorldDataServer
public WorldServer(MinecraftServer minecraftserver, Executor executor, Convertable.ConversionSession convertable_conversionsession, IWorldDataServer iworlddataserver, ResourceKey<World> resourcekey, DimensionManager dimensionmanager, WorldLoadListener worldloadlistener, ChunkGenerator chunkgenerator, boolean flag, long i, List<MobSpawner> list, boolean flag1, org.bukkit.World.Environment env, org.bukkit.generator.ChunkGenerator gen) {
super(iworlddataserver, resourcekey, dimensionmanager, minecraftserver::getMethodProfiler, false, flag, i, gen, env, executor); // Paper pass executor
@@ -651,6 +655,14 @@ public class WorldServer extends World implements GeneratorAccessSeed {
@@ -659,6 +663,14 @@ public class WorldServer extends World implements GeneratorAccessSeed {
public void doTick(BooleanSupplier booleansupplier) {
GameProfilerFiller gameprofilerfiller = this.getMethodProfiler();

View File

@ -5474,7 +5474,7 @@ index 700660dd93b3090334bb3033d5f5fdd6ab684744..e3b72922e2dfad07f3452ec5ee2af379
VoxelShape[] avoxelshape = new VoxelShape[]{VoxelShapes.a()};
diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java
index e4f5ba7f32d9d64ff3be5effad09faf1e4c0ce3f..71650a3585b968f68203490da1410608565dfc10 100644
index b1b63a11a6585971685b9ace1b6d91643a36aa95..c448f75b22ead5a178b031d625338f92752617ec 100644
--- a/src/main/java/net/minecraft/server/WorldServer.java
+++ b/src/main/java/net/minecraft/server/WorldServer.java
@@ -305,6 +305,13 @@ public class WorldServer extends World implements GeneratorAccessSeed {

View File

@ -65,10 +65,10 @@ index 9be1581868627b99709bcd446de6dc89c34b42d3..5fe928e4511f320aef1f3b94a092d2a7
@Override
diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java
index 71650a3585b968f68203490da1410608565dfc10..9c11a6ba0384baafaec1403a6a7c3f894d5cd7b3 100644
index c448f75b22ead5a178b031d625338f92752617ec..9a8a1e05a60bca77adc904017ae70ef5f629df0b 100644
--- a/src/main/java/net/minecraft/server/WorldServer.java
+++ b/src/main/java/net/minecraft/server/WorldServer.java
@@ -865,6 +865,15 @@ public class WorldServer extends World implements GeneratorAccessSeed {
@@ -873,6 +873,15 @@ public class WorldServer extends World implements GeneratorAccessSeed {
gameprofilerfiller.enter("checkDespawn");
if (!entity.dead) {
entity.checkDespawn();
@ -84,7 +84,7 @@ index 71650a3585b968f68203490da1410608565dfc10..9c11a6ba0384baafaec1403a6a7c3f89
}
gameprofilerfiller.exit();
@@ -887,7 +896,14 @@ public class WorldServer extends World implements GeneratorAccessSeed {
@@ -895,7 +904,14 @@ public class WorldServer extends World implements GeneratorAccessSeed {
this.removeEntityFromChunk(entity);
this.entitiesById.remove(entity.getId()); // Tuinity
this.unregisterEntity(entity);
@ -99,7 +99,7 @@ index 71650a3585b968f68203490da1410608565dfc10..9c11a6ba0384baafaec1403a6a7c3f89
gameprofilerfiller.exit();
}
@@ -1296,6 +1312,12 @@ public class WorldServer extends World implements GeneratorAccessSeed {
@@ -1304,6 +1320,12 @@ public class WorldServer extends World implements GeneratorAccessSeed {
int i = MathHelper.floor(entity.locX() / 16.0D);
int j = Math.min(15, Math.max(0, MathHelper.floor(entity.locY() / 16.0D))); // Paper - stay consistent with chunk add/remove behavior
int k = MathHelper.floor(entity.locZ() / 16.0D);
@ -112,7 +112,7 @@ index 71650a3585b968f68203490da1410608565dfc10..9c11a6ba0384baafaec1403a6a7c3f89
if (!entity.inChunk || entity.chunkX != i || entity.chunkY != j || entity.chunkZ != k) {
// Paper start - remove entity if its in a chunk more correctly.
@@ -1305,6 +1327,12 @@ public class WorldServer extends World implements GeneratorAccessSeed {
@@ -1313,6 +1335,12 @@ public class WorldServer extends World implements GeneratorAccessSeed {
}
// Paper end
@ -125,7 +125,7 @@ index 71650a3585b968f68203490da1410608565dfc10..9c11a6ba0384baafaec1403a6a7c3f89
if (entity.inChunk && this.isChunkLoaded(entity.chunkX, entity.chunkZ)) {
this.getChunkAt(entity.chunkX, entity.chunkZ).a(entity, entity.chunkY);
}
@@ -1318,6 +1346,11 @@ public class WorldServer extends World implements GeneratorAccessSeed {
@@ -1326,6 +1354,11 @@ public class WorldServer extends World implements GeneratorAccessSeed {
} else {
this.getChunkAt(i, k).a(entity);
}
@ -137,7 +137,7 @@ index 71650a3585b968f68203490da1410608565dfc10..9c11a6ba0384baafaec1403a6a7c3f89
}
this.getMethodProfiler().exit();
@@ -1780,9 +1813,96 @@ public class WorldServer extends World implements GeneratorAccessSeed {
@@ -1788,9 +1821,96 @@ public class WorldServer extends World implements GeneratorAccessSeed {
// Tuinity end
}
new com.destroystokyo.paper.event.entity.EntityRemoveFromWorldEvent(entity.getBukkitEntity()).callEvent(); // Paper - fire while valid
@ -234,7 +234,7 @@ index 71650a3585b968f68203490da1410608565dfc10..9c11a6ba0384baafaec1403a6a7c3f89
private void registerEntity(Entity entity) {
org.spigotmc.AsyncCatcher.catchOp("entity register"); // Spigot
// Paper start - don't double enqueue entity registration
@@ -1963,9 +2083,25 @@ public class WorldServer extends World implements GeneratorAccessSeed {
@@ -1971,9 +2091,25 @@ public class WorldServer extends World implements GeneratorAccessSeed {
VoxelShape voxelshape1 = iblockdata1.getCollisionShape(this, blockposition);
if (VoxelShapes.c(voxelshape, voxelshape1, OperatorBoolean.NOT_SAME)) {
@ -261,7 +261,7 @@ index 71650a3585b968f68203490da1410608565dfc10..9c11a6ba0384baafaec1403a6a7c3f89
try { // Tuinity end
while (iterator.hasNext()) {
@@ -1974,10 +2110,21 @@ public class WorldServer extends World implements GeneratorAccessSeed {
@@ -1982,10 +2118,21 @@ public class WorldServer extends World implements GeneratorAccessSeed {
if (!navigationabstract.i()) {
navigationabstract.b(blockposition);
}

View File

@ -0,0 +1,40 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Spottedleaf <Spottedleaf@users.noreply.github.com>
Date: Tue, 16 Feb 2021 00:16:56 -0800
Subject: [PATCH] Send full pos packets for hard colliding entities
Prevent collision problems due to desync (i.e boats)
Configurable under
`send-full-pos-for-hard-colliding-entities`
diff --git a/src/main/java/com/tuinity/tuinity/config/TuinityConfig.java b/src/main/java/com/tuinity/tuinity/config/TuinityConfig.java
index ceeb515f4528551659598d9999917f8596e3eded..0959aa6855a150b121b9b75885216c46b151179e 100644
--- a/src/main/java/com/tuinity/tuinity/config/TuinityConfig.java
+++ b/src/main/java/com/tuinity/tuinity/config/TuinityConfig.java
@@ -229,6 +229,12 @@ public final class TuinityConfig {
useNewLightEngine = TuinityConfig.getBoolean("use-new-light-engine", true);
}
+ public static boolean sendFullPosForHardCollidingEntities;
+
+ private static void sendFullPosForHardCollidingEntities() {
+ sendFullPosForHardCollidingEntities = TuinityConfig.getBoolean("send-full-pos-for-hard-colliding-entities", true);
+ }
+
public static final class WorldConfig {
public final String worldName;
diff --git a/src/main/java/net/minecraft/server/EntityTrackerEntry.java b/src/main/java/net/minecraft/server/EntityTrackerEntry.java
index 526c1419af7bd0b6098a8f9a0a24a64ba61c6ebc..81869215876d10a84ab27c0e6f41963c1346fd1c 100644
--- a/src/main/java/net/minecraft/server/EntityTrackerEntry.java
+++ b/src/main/java/net/minecraft/server/EntityTrackerEntry.java
@@ -157,7 +157,7 @@ public class EntityTrackerEntry {
// Paper end - remove allocation of Vec3D here
boolean flag4 = k < -32768L || k > 32767L || l < -32768L || l > 32767L || i1 < -32768L || i1 > 32767L;
- if (!flag4 && this.o <= 400 && !this.q && this.r == this.tracker.isOnGround()) {
+ if (!flag4 && this.o <= 400 && !this.q && this.r == this.tracker.isOnGround() && !(com.tuinity.tuinity.config.TuinityConfig.sendFullPosForHardCollidingEntities && this.tracker.hardCollides())) { // Tuinity - send full pos for hard colliding entities to prevent collision problems due to desync
if ((!flag2 || !flag3) && !(this.tracker instanceof EntityArrow)) {
if (flag2) {
packet1 = new PacketPlayOutEntity.PacketPlayOutRelEntityMove(this.tracker.getId(), (short) ((int) k), (short) ((int) l), (short) ((int) i1), this.tracker.isOnGround());

View File

@ -0,0 +1,26 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Spottedleaf <Spottedleaf@users.noreply.github.com>
Date: Mon, 1 Feb 2021 15:35:14 -0800
Subject: [PATCH] Fix chunks refusing to unload at low TPS
The full chunk future is appended to the chunk save future, but
when moving to unloaded ticket level it is not being completed with
the empty chunk access, so the chunk save must wait for the full
chunk future to complete. We can simply schedule to the immediate
executor to get this effect, rather than the main mailbox.
diff --git a/src/main/java/net/minecraft/server/PlayerChunkMap.java b/src/main/java/net/minecraft/server/PlayerChunkMap.java
index a42571cfd2c9c80df27e59db832cb64c2a64e141..2c2becef8b56d7e5e998976222df85d2c8516c43 100644
--- a/src/main/java/net/minecraft/server/PlayerChunkMap.java
+++ b/src/main/java/net/minecraft/server/PlayerChunkMap.java
@@ -1494,9 +1494,7 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
chunk.B();
return chunk;
});
- }, (runnable) -> {
- this.mailboxMain.a(ChunkTaskQueueSorter.a(playerchunk, runnable));
- });
+ }, this.executor); // Tuinity - queue to execute immediately so this doesn't delay chunk unloading
}
public int c() {

View File

@ -0,0 +1,31 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Spottedleaf <Spottedleaf@users.noreply.github.com>
Date: Wed, 27 Jan 2021 15:15:01 -0800
Subject: [PATCH] Fix incorrect isRealPlayer init
Some plugins, namely ProtocolSupport, don't route to where
paper placed their logic. So it wont correctly set in this case.
Fix by moving it to a different place.
diff --git a/src/main/java/net/minecraft/server/PlayerList.java b/src/main/java/net/minecraft/server/PlayerList.java
index 1eb44877e7384ae0a028a12b832684126b8d50ec..eabd1aa2b740bcb6db40be300cd6daf59674fa3f 100644
--- a/src/main/java/net/minecraft/server/PlayerList.java
+++ b/src/main/java/net/minecraft/server/PlayerList.java
@@ -98,6 +98,7 @@ public abstract class PlayerList {
}
public void a(NetworkManager networkmanager, EntityPlayer entityplayer) {
+ entityplayer.isRealPlayer = true; // Paper // Tuinity - this is a better place to write this that works and isn't overriden by plugins
EntityPlayer prev = pendingPlayers.put(entityplayer.getUniqueID(), entityplayer);// Paper
if (prev != null) {
disconnectPendingPlayer(prev);
@@ -637,7 +638,7 @@ public abstract class PlayerList {
SocketAddress socketaddress = loginlistener.networkManager.getSocketAddress();
EntityPlayer entity = new EntityPlayer(this.server, this.server.getWorldServer(World.OVERWORLD), gameprofile, new PlayerInteractManager(this.server.getWorldServer(World.OVERWORLD)));
- entity.isRealPlayer = true; // Paper
+ // Tuinity - some plugins (namely protocolsupport) bypass this logic completely! So this needs to be moved.
Player player = entity.getBukkitEntity();
PlayerLoginEvent event = new PlayerLoginEvent(player, hostname, ((java.net.InetSocketAddress) socketaddress).getAddress(), ((java.net.InetSocketAddress) loginlistener.networkManager.getRawAddress()).getAddress());

View File

@ -67,10 +67,10 @@ index a198bdf26b60caea8c8b105cb0e4b82c0340fede..39280197902b330dd3d39c721cdef744
if (this.isFireProof() || this.world.isClientSide) {
this.extinguish();
diff --git a/src/main/java/net/minecraft/server/PlayerList.java b/src/main/java/net/minecraft/server/PlayerList.java
index ca19cfa1ff801e5292332ff7b92bba881762306e..14d8492c405db32e454bc363207a127167432a61 100644
index 7db99b6639a0afdd1f68539f6c6a6f48275e5b6b..8b3b0dd9f67a0462737d0c2d61948f33840fceb1 100644
--- a/src/main/java/net/minecraft/server/PlayerList.java
+++ b/src/main/java/net/minecraft/server/PlayerList.java
@@ -188,7 +188,7 @@ public abstract class PlayerList {
@@ -189,7 +189,7 @@ public abstract class PlayerList {
// Spigot - view distance
playerconnection.sendPacket(new PacketPlayOutLogin(entityplayer.getId(), entityplayer.playerInteractManager.getGameMode(), entityplayer.playerInteractManager.c(), BiomeManager.a(worldserver1.getSeed()), worlddata.isHardcore(), this.server.F(), this.s, worldserver1.getDimensionManager(), worldserver1.getDimensionKey(), this.getMaxPlayers(), worldserver1.getChunkProvider().playerChunkMap.getLoadViewDistance(), flag1, !flag, worldserver1.isDebugWorld(), worldserver1.isFlatWorld())); // Paper - no-tick view distance
entityplayer.getBukkitEntity().sendSupportedChannels(); // CraftBukkit

View File

@ -1,53 +0,0 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Ivan Pekov <ivan@mrivanplays.com>
Date: Fri, 2 Oct 2020 17:48:01 +0300
Subject: [PATCH] Add JsonList save timings
diff --git a/src/main/java/co/aikar/timings/MinecraftTimings.java b/src/main/java/co/aikar/timings/MinecraftTimings.java
index 68ab5ccb2fcfe1de0503c9336572f28e11832b2d..d8c1a8dd867437443494ac169569139e25c9a635 100644
--- a/src/main/java/co/aikar/timings/MinecraftTimings.java
+++ b/src/main/java/co/aikar/timings/MinecraftTimings.java
@@ -149,4 +149,6 @@ public final class MinecraftTimings {
public static Timing getCommandFunctionTiming(CustomFunction function) {
return Timings.ofSafe("Command Function - " + function.getMinecraftKey().toString());
}
+
+ public static Timing getJsonListTiming(String className) { return Timings.ofSafe("Save JsonList ( " + className + " )"); } // Yatopia
}
diff --git a/src/main/java/net/minecraft/server/JsonList.java b/src/main/java/net/minecraft/server/JsonList.java
index 1fc0139cb9694ddea41f57d95774c3b47e8530c5..a674140b61547841a1a6060e9f36aa14d0a86ff9 100644
--- a/src/main/java/net/minecraft/server/JsonList.java
+++ b/src/main/java/net/minecraft/server/JsonList.java
@@ -44,9 +44,11 @@ public abstract class JsonList<K, V extends JsonListEntry<K>> {
return null;
}
};
+ private final co.aikar.timings.Timing saveTiming; // Yatopia
public JsonList(File file) {
this.c = file;
+ saveTiming = co.aikar.timings.MinecraftTimings.getJsonListTiming(getClass().getSimpleName()); // Yatopia
}
public File b() {
@@ -146,6 +148,9 @@ public abstract class JsonList<K, V extends JsonListEntry<K>> {
}
public void save() throws IOException {
+ // Yatopia start
+ saveTiming.startTiming();
+ try { // Yatopia end
this.removeStaleEntries(); // Paper - remove expired values before saving
JsonArray jsonarray = new JsonArray();
@@ -177,6 +182,9 @@ public abstract class JsonList<K, V extends JsonListEntry<K>> {
}
}
+ } finally { // Yatopia start
+ saveTiming.stopTiming();
+ } // Yatopia end
}

View File

@ -6,10 +6,10 @@ Subject: [PATCH] Optimize some stuff in WorldServer ticking
Replaced some streams and some array lists with glue lists
diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java
index 4d47cca6db7a771677c31ade9425ed3ad83393ea..17d728bf4f8393defd0a6f274d32f2ce926232a3 100644
index 2289c92c8933bfa0f382167fa5790a4ea17b7c75..1196b482d33e655eb4aa5ea6b66326f12c4363a4 100644
--- a/src/main/java/net/minecraft/server/WorldServer.java
+++ b/src/main/java/net/minecraft/server/WorldServer.java
@@ -780,12 +780,21 @@ public class WorldServer extends World implements GeneratorAccessSeed {
@@ -788,12 +788,21 @@ public class WorldServer extends World implements GeneratorAccessSeed {
this.server.getPlayerList().sendAll(new PacketPlayOutGameStateChange(PacketPlayOutGameStateChange.i, this.thunderLevel));
}
// */
@ -34,7 +34,7 @@ index 4d47cca6db7a771677c31ade9425ed3ad83393ea..17d728bf4f8393defd0a6f274d32f2ce
if (flag != this.isRaining()) {
// Only send weather packets to those affected
for (int idx = 0; idx < this.players.size(); ++idx) {
@@ -800,11 +809,9 @@ public class WorldServer extends World implements GeneratorAccessSeed {
@@ -808,11 +817,9 @@ public class WorldServer extends World implements GeneratorAccessSeed {
}
}
// CraftBukkit end
@ -48,7 +48,7 @@ index 4d47cca6db7a771677c31ade9425ed3ad83393ea..17d728bf4f8393defd0a6f274d32f2ce
long l = this.worldData.getDayTime() + 24000L;
TimeSkipEvent event = new TimeSkipEvent(this.getWorld(), TimeSkipEvent.SkipReason.NIGHT_SKIP, (l - l % 24000L) - this.getDayTime());
if (this.getGameRules().getBoolean(GameRules.DO_DAYLIGHT_CYCLE)) {
@@ -1030,9 +1037,9 @@ public class WorldServer extends World implements GeneratorAccessSeed {
@@ -1038,9 +1045,9 @@ public class WorldServer extends World implements GeneratorAccessSeed {
}
private void wakeupPlayers() {
@ -60,7 +60,7 @@ index 4d47cca6db7a771677c31ade9425ed3ad83393ea..17d728bf4f8393defd0a6f274d32f2ce
}
// Paper start - optimise random block ticking
@@ -1832,8 +1839,9 @@ public class WorldServer extends World implements GeneratorAccessSeed {
@@ -1840,8 +1847,9 @@ public class WorldServer extends World implements GeneratorAccessSeed {
// Spigot start
if ( entity instanceof EntityHuman )
{
@ -71,7 +71,7 @@ index 4d47cca6db7a771677c31ade9425ed3ad83393ea..17d728bf4f8393defd0a6f274d32f2ce
for (Object o : worldData.data.values() )
{
if ( o instanceof WorldMap )
@@ -1850,7 +1858,7 @@ public class WorldServer extends World implements GeneratorAccessSeed {
@@ -1858,7 +1866,7 @@ public class WorldServer extends World implements GeneratorAccessSeed {
}
}
}

View File

@ -5,7 +5,7 @@ Subject: [PATCH] Add timings for Pathfinder
diff --git a/src/main/java/co/aikar/timings/MinecraftTimings.java b/src/main/java/co/aikar/timings/MinecraftTimings.java
index d8c1a8dd867437443494ac169569139e25c9a635..0efdddc12247ed4aa6acce118c707090270bee39 100644
index 68ab5ccb2fcfe1de0503c9336572f28e11832b2d..4d4c25cb328b0ca2e16d3c823214aca5854e4deb 100644
--- a/src/main/java/co/aikar/timings/MinecraftTimings.java
+++ b/src/main/java/co/aikar/timings/MinecraftTimings.java
@@ -54,6 +54,8 @@ public final class MinecraftTimings {

View File

@ -14,10 +14,10 @@ Our changes are the following:
triggers removing of all stale entries.
diff --git a/src/main/java/net/minecraft/server/JsonList.java b/src/main/java/net/minecraft/server/JsonList.java
index a674140b61547841a1a6060e9f36aa14d0a86ff9..99580abac1ff30c784b6792d69c9d4cad12c1b1f 100644
index 1fc0139cb9694ddea41f57d95774c3b47e8530c5..d683e3e509cc21d007d3e32f68235cfad007d0d0 100644
--- a/src/main/java/net/minecraft/server/JsonList.java
+++ b/src/main/java/net/minecraft/server/JsonList.java
@@ -71,9 +71,13 @@ public abstract class JsonList<K, V extends JsonListEntry<K>> {
@@ -69,9 +69,13 @@ public abstract class JsonList<K, V extends JsonListEntry<K>> {
// Paper start
// this.g();
// return (V) this.d.get(this.a(k0)); // CraftBukkit - fix decompile error
@ -31,7 +31,7 @@ index a674140b61547841a1a6060e9f36aa14d0a86ff9..99580abac1ff30c784b6792d69c9d4ca
// Paper end
}
@@ -154,12 +158,22 @@ public abstract class JsonList<K, V extends JsonListEntry<K>> {
@@ -149,12 +153,22 @@ public abstract class JsonList<K, V extends JsonListEntry<K>> {
this.removeStaleEntries(); // Paper - remove expired values before saving
JsonArray jsonarray = new JsonArray();
@ -55,10 +55,10 @@ index a674140b61547841a1a6060e9f36aa14d0a86ff9..99580abac1ff30c784b6792d69c9d4ca
Throwable throwable = null;
diff --git a/src/main/java/net/minecraft/server/PlayerList.java b/src/main/java/net/minecraft/server/PlayerList.java
index 14d8492c405db32e454bc363207a127167432a61..f354712e8e1cd359bc8fb0461f30214b8db24112 100644
index 8b3b0dd9f67a0462737d0c2d61948f33840fceb1..cf53c8fe805764e995cab8eced00f10f9c52fd8e 100644
--- a/src/main/java/net/minecraft/server/PlayerList.java
+++ b/src/main/java/net/minecraft/server/PlayerList.java
@@ -647,6 +647,7 @@ public abstract class PlayerList {
@@ -648,6 +648,7 @@ public abstract class PlayerList {
GameProfileBanEntry gameprofilebanentry;
if (getProfileBans().isBanned(gameprofile) && (gameprofilebanentry = getProfileBans().get(gameprofile)) != null) {
// Paper end
@ -66,7 +66,7 @@ index 14d8492c405db32e454bc363207a127167432a61..f354712e8e1cd359bc8fb0461f30214b
chatmessage = new ChatMessage("multiplayer.disconnect.banned.reason", new Object[]{gameprofilebanentry.getReason()});
if (gameprofilebanentry.getExpires() != null) {
@@ -654,7 +655,11 @@ public abstract class PlayerList {
@@ -655,7 +656,11 @@ public abstract class PlayerList {
}
// return chatmessage;

View File

@ -18,10 +18,10 @@ index 001ac05cf26237eec8a77c476e678ff6d0840311..7b4935dd8c54f5fcb4f26b96c270d3e4
return this.size == 0 && this.pendingTasks.isEmpty();
}
diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java
index 17d728bf4f8393defd0a6f274d32f2ce926232a3..789e885eded90f1827332e0b4000c35b78ec2661 100644
index 1196b482d33e655eb4aa5ea6b66326f12c4363a4..be5bf0d2ebf4723a5a892f9f51aa18ea74f82fd1 100644
--- a/src/main/java/net/minecraft/server/WorldServer.java
+++ b/src/main/java/net/minecraft/server/WorldServer.java
@@ -1818,6 +1818,7 @@ public class WorldServer extends World implements GeneratorAccessSeed {
@@ -1826,6 +1826,7 @@ public class WorldServer extends World implements GeneratorAccessSeed {
}
// Paper end

View File

@ -5,7 +5,7 @@ Subject: [PATCH] Respect PlayerKickEvent leaveMessage
diff --git a/src/main/java/net/minecraft/server/PlayerConnection.java b/src/main/java/net/minecraft/server/PlayerConnection.java
index ca190409b6718607183df2e86f0b4be98c9b6c33..aed9a2d151dad500e30d1871e059adec712fa450 100644
index 1471785da53a18edf31a20212f3cc6c19de92822..8bb500513b8d3baf2b08137d7b31737792265608 100644
--- a/src/main/java/net/minecraft/server/PlayerConnection.java
+++ b/src/main/java/net/minecraft/server/PlayerConnection.java
@@ -329,7 +329,7 @@ public class PlayerConnection implements PacketListenerPlayIn {
@ -17,7 +17,7 @@ index ca190409b6718607183df2e86f0b4be98c9b6c33..aed9a2d151dad500e30d1871e059adec
this.networkManager.stopReading();
MinecraftServer minecraftserver = this.minecraftServer;
NetworkManager networkmanager = this.networkManager;
@@ -1759,6 +1759,11 @@ public class PlayerConnection implements PacketListenerPlayIn {
@@ -1784,6 +1784,11 @@ public class PlayerConnection implements PacketListenerPlayIn {
@Override
public void a(IChatBaseComponent ichatbasecomponent) {
@ -29,7 +29,7 @@ index ca190409b6718607183df2e86f0b4be98c9b6c33..aed9a2d151dad500e30d1871e059adec
// CraftBukkit start - Rarely it would send a disconnect line twice
if (this.processedDisconnect) {
return;
@@ -1774,7 +1779,7 @@ public class PlayerConnection implements PacketListenerPlayIn {
@@ -1799,7 +1804,7 @@ public class PlayerConnection implements PacketListenerPlayIn {
*/
this.player.p();
@ -39,10 +39,10 @@ index ca190409b6718607183df2e86f0b4be98c9b6c33..aed9a2d151dad500e30d1871e059adec
this.minecraftServer.getPlayerList().sendMessage(CraftChatMessage.fromString(quitMessage));
}
diff --git a/src/main/java/net/minecraft/server/PlayerList.java b/src/main/java/net/minecraft/server/PlayerList.java
index f354712e8e1cd359bc8fb0461f30214b8db24112..7e42654873195d17c9a5a2a718216a943533e658 100644
index cf53c8fe805764e995cab8eced00f10f9c52fd8e..c094d27c2d46e75212b0742040a7f57bd0406943 100644
--- a/src/main/java/net/minecraft/server/PlayerList.java
+++ b/src/main/java/net/minecraft/server/PlayerList.java
@@ -499,6 +499,11 @@ public abstract class PlayerList {
@@ -500,6 +500,11 @@ public abstract class PlayerList {
}
public String disconnect(EntityPlayer entityplayer) { // CraftBukkit - return string
@ -54,7 +54,7 @@ index f354712e8e1cd359bc8fb0461f30214b8db24112..7e42654873195d17c9a5a2a718216a94
WorldServer worldserver = entityplayer.getWorldServer();
entityplayer.a(StatisticList.LEAVE_GAME);
@@ -598,7 +603,7 @@ public abstract class PlayerList {
@@ -599,7 +604,7 @@ public abstract class PlayerList {
cserver.getScoreboardManager().removePlayer(entityplayer.getBukkitEntity());
// CraftBukkit end

View File

@ -139,10 +139,10 @@ index 81f7d5bc581b42289a79121da15868999ab9feef..7ee038e24cf696b7a32c5c67d4b0dd46
public float b(EntityPose entitypose, EntitySize entitysize) {
switch (entitypose) {
diff --git a/src/main/java/net/minecraft/server/JsonList.java b/src/main/java/net/minecraft/server/JsonList.java
index 99580abac1ff30c784b6792d69c9d4cad12c1b1f..1daeb9571663a128a749c735a70f6e92603ffeda 100644
index d683e3e509cc21d007d3e32f68235cfad007d0d0..83109fb0ad57eef2b24b5c3cb5875535e0a8e67f 100644
--- a/src/main/java/net/minecraft/server/JsonList.java
+++ b/src/main/java/net/minecraft/server/JsonList.java
@@ -66,6 +66,20 @@ public abstract class JsonList<K, V extends JsonListEntry<K>> {
@@ -64,6 +64,20 @@ public abstract class JsonList<K, V extends JsonListEntry<K>> {
}
@ -163,7 +163,7 @@ index 99580abac1ff30c784b6792d69c9d4cad12c1b1f..1daeb9571663a128a749c735a70f6e92
@Nullable
public V get(K k0) {
// Paper start
@@ -96,6 +110,20 @@ public abstract class JsonList<K, V extends JsonListEntry<K>> {
@@ -94,6 +108,20 @@ public abstract class JsonList<K, V extends JsonListEntry<K>> {
this.remove(jsonlistentry.getKey());
}

View File

@ -5,7 +5,7 @@ Subject: [PATCH] Configurable flight checks
diff --git a/src/main/java/net/minecraft/server/PlayerConnection.java b/src/main/java/net/minecraft/server/PlayerConnection.java
index aed9a2d151dad500e30d1871e059adec712fa450..2d10a3b5aa073ebc7e51beb428f707d6fbfc3001 100644
index 8bb500513b8d3baf2b08137d7b31737792265608..d895a1366c5f6f526c78bab195559ce159d2d28d 100644
--- a/src/main/java/net/minecraft/server/PlayerConnection.java
+++ b/src/main/java/net/minecraft/server/PlayerConnection.java
@@ -179,7 +179,7 @@ public class PlayerConnection implements PacketListenerPlayIn {

View File

@ -5,7 +5,7 @@ Subject: [PATCH] Configurable movement checks
diff --git a/src/main/java/net/minecraft/server/PlayerConnection.java b/src/main/java/net/minecraft/server/PlayerConnection.java
index 2d10a3b5aa073ebc7e51beb428f707d6fbfc3001..06bd1dd8faa025b4353ff8e68df5f3e7c4db760a 100644
index d895a1366c5f6f526c78bab195559ce159d2d28d..47ce63e1ea8ae2d6700330934598daa56450ce1c 100644
--- a/src/main/java/net/minecraft/server/PlayerConnection.java
+++ b/src/main/java/net/minecraft/server/PlayerConnection.java
@@ -449,7 +449,7 @@ public class PlayerConnection implements PacketListenerPlayIn {
@ -26,7 +26,7 @@ index 2d10a3b5aa073ebc7e51beb428f707d6fbfc3001..06bd1dd8faa025b4353ff8e68df5f3e7
flag1 = true; // Tuinity - diff on change, this should be moved wrongly
PlayerConnection.LOGGER.warn("{} (vehicle of {}) moved wrongly! {}", entity.getDisplayName().getString(), this.player.getDisplayName().getString(), Math.sqrt(d10));
}
@@ -1199,7 +1199,7 @@ public class PlayerConnection implements PacketListenerPlayIn {
@@ -1224,7 +1224,7 @@ public class PlayerConnection implements PacketListenerPlayIn {
if (!this.player.H() && (!this.player.getWorldServer().getGameRules().getBoolean(GameRules.DISABLE_ELYTRA_MOVEMENT_CHECK) || !this.player.isGliding())) {
float f2 = this.player.isGliding() ? 300.0F : 100.0F;
@ -35,7 +35,7 @@ index 2d10a3b5aa073ebc7e51beb428f707d6fbfc3001..06bd1dd8faa025b4353ff8e68df5f3e7
// CraftBukkit end
PlayerConnection.LOGGER.warn("{} moved too quickly! {},{},{}", this.player.getDisplayName().getString(), d7, d8, d9);
this.a(this.player.locX(), this.player.locY(), this.player.locZ(), this.player.yaw, this.player.pitch);
@@ -1265,7 +1265,7 @@ public class PlayerConnection implements PacketListenerPlayIn {
@@ -1290,7 +1290,7 @@ public class PlayerConnection implements PacketListenerPlayIn {
d11 = d7 * d7 + d8 * d8 + d9 * d9;
boolean flag1 = false;

View File

@ -5,10 +5,10 @@ Subject: [PATCH] add config for logging login location
diff --git a/src/main/java/net/minecraft/server/PlayerList.java b/src/main/java/net/minecraft/server/PlayerList.java
index 7e42654873195d17c9a5a2a718216a943533e658..fd2fe2f5e53f34957f80223e1694a57308de4016 100644
index c094d27c2d46e75212b0742040a7f57bd0406943..c5b617c2a20163fddcf79a5493a76cb675eab834 100644
--- a/src/main/java/net/minecraft/server/PlayerList.java
+++ b/src/main/java/net/minecraft/server/PlayerList.java
@@ -395,7 +395,14 @@ public abstract class PlayerList {
@@ -396,7 +396,14 @@ public abstract class PlayerList {
}
// Paper end
// CraftBukkit - Moved from above, added world

@ -1 +1 @@
Subproject commit bbc8d297dbcb1183997ec1b56f774319d079ba31
Subproject commit e8696c6d78fb6773480072803cab59145daa8669

@ -1 +1 @@
Subproject commit 502d57ba8376333163a56c5491a46e408178d575
Subproject commit 2dfd22e41c4d1822f6e813317e64ff7afdb33e80

View File

@ -1 +1 @@
bbc8d297dbcb1183997ec1b56f774319d079ba31
e8696c6d78fb6773480072803cab59145daa8669

View File

@ -1 +1 @@
502d57ba8376333163a56c5491a46e408178d575
2dfd22e41c4d1822f6e813317e64ff7afdb33e80