Updated Upstream and Sidestream(s) (Paper/Tuinity/Airplane/Empirecraft/Origami)

Upstream/An Sidestream has released updates that appears to apply and compile correctly
This update has NOT been tested by YatopiaMC and as with ANY update, please do your own testing.

Paper Changes:
0daded2f2 Add more line of sight methods (#5749)
8fd4e70db Improve seed based feature search to not load chunk (#5760)
7ad8498c3 Make item validations configurable (#5775)
3673d6758 Fix Cannot be adventure component serialized when the legacy component is null (#5754)
afb0748a2 [Auto] Updated Upstream (Bukkit)
7d751ad8d Fix dangerous end portal logic (#5776)
12716324d Do not tick Chunk TickS for every chunk

Tuinity Changes:
2683c77 Use area map for nearby players in mob spawning (#283)

Airplane Changes:
2be99de Toggle for DEAR
3485304 Updated Upstream (Tuinity)

Empirecraft Changes:
33438474 Refine FurnaceExtractEvent patch

Origami Changes:
35c6a27 Re-add removed patch for MC-2025
a19a185 Fix missing particles
This commit is contained in:
Simon Gardling 2021-06-08 14:22:10 -04:00
parent 81a7115055
commit 13f96b5086
74 changed files with 211 additions and 309 deletions

View File

@ -79,7 +79,6 @@ # Patches
| server | Fix Log4j Warning | snoopdoooggyttv | |
| server | Fix NPE in pickup logic for arrow | Spottedleaf | |
| server | Fix chunks refusing to unload at low TPS | Spottedleaf | |
| server | Fix dangerous end portal logic | Spottedleaf | |
| server | Fix exp drop of zombie pigmen (MC-56653) | Phoenix616 | |
| server | Fix incorrect isRealPlayer init | Spottedleaf | |
| server | Fix lead fall dmg config | tr7zw | |

2
Paper

@ -1 +1 @@
Subproject commit af1a50993f3f80328bed775b25f008c7056c0e33
Subproject commit 0daded2f25184b45fcc0be6ea86b63492df96024

View File

@ -55,7 +55,7 @@ index cc566784c7dd21cc2c44e0f351347f657e57ddcf..e9e7fcf2b63febe2a7d055826fabb86b
return d0 == 0.0D ? 0 : (d0 > 0.0D ? 1 : -1);
}
diff --git a/src/main/java/net/minecraft/world/entity/EntityLiving.java b/src/main/java/net/minecraft/world/entity/EntityLiving.java
index 33f689b1c9f4c00969fbdd8ddb21901637afb81c..785c210414ca11584bc51087616845f0d5badc91 100644
index 2ff3297fb8c0e4f8c969ba2727eecb7fe06525c4..cfd2b2607be0d30ece36d1dd51178fb667018dcc 100644
--- a/src/main/java/net/minecraft/world/entity/EntityLiving.java
+++ b/src/main/java/net/minecraft/world/entity/EntityLiving.java
@@ -111,6 +111,7 @@ import net.minecraft.world.phys.AxisAlignedBB;
@ -66,10 +66,10 @@ index 33f689b1c9f4c00969fbdd8ddb21901637afb81c..785c210414ca11584bc51087616845f0
import net.minecraft.world.scores.ScoreboardTeam;
import org.apache.logging.log4j.Logger;
@@ -3101,7 +3102,7 @@ public abstract class EntityLiving extends Entity {
Vec3D vec3d = new Vec3D(this.locX(), this.getHeadY(), this.locZ());
@@ -3102,7 +3103,7 @@ public abstract class EntityLiving extends Entity {
Vec3D vec3d1 = new Vec3D(entity.locX(), entity.getHeadY(), entity.locZ());
// Paper - diff on change - used in CraftLivingEntity#hasLineOfSight(Location) and CraftWorld#lineOfSightExists
- return this.world.rayTrace(new RayTrace(vec3d, vec3d1, RayTrace.BlockCollisionOption.COLLIDER, RayTrace.FluidCollisionOption.NONE, this)).getType() == MovingObjectPosition.EnumMovingObjectType.MISS;
+ return this.world.rayTraceDirect(vec3d, vec3d1, VoxelShapeCollision.a(this)) == MovingObjectPosition.EnumMovingObjectType.MISS; // Airplane - use direct method
}
@ -109,7 +109,7 @@ index e612e1d30f76e217b1aa23488ab025adce048f57..6109d59c02d0c7877e213213c6aec6f8
default MovingObjectPositionBlock rayTraceBlock(RayTrace raytrace1, BlockPosition blockposition) {
// Paper start - Prevent raytrace from loading chunks
diff --git a/src/main/java/net/minecraft/world/level/World.java b/src/main/java/net/minecraft/world/level/World.java
index 276b1f0c9c9af7db31fba9be0593ae9def540caf..6ab528223682d57bec1cdbd383acd8ab06904e4a 100644
index cb8064df7e9f1b8b4d4292486e2193680d83663c..37da32675f0c00c793cd137c9a7305932cefb705 100644
--- a/src/main/java/net/minecraft/world/level/World.java
+++ b/src/main/java/net/minecraft/world/level/World.java
@@ -69,6 +69,8 @@ import net.minecraft.world.level.saveddata.maps.WorldMap;
@ -121,7 +121,7 @@ index 276b1f0c9c9af7db31fba9be0593ae9def540caf..6ab528223682d57bec1cdbd383acd8ab
import net.minecraft.world.phys.shapes.OperatorBoolean;
import net.minecraft.world.phys.shapes.VoxelShape;
import net.minecraft.world.phys.shapes.VoxelShapeCollision;
@@ -387,6 +389,91 @@ public abstract class World implements GeneratorAccess, AutoCloseable {
@@ -385,6 +387,91 @@ public abstract class World implements GeneratorAccess, AutoCloseable {
return null;
}

View File

@ -34,7 +34,7 @@ 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/level/ChunkProviderServer.java b/src/main/java/net/minecraft/server/level/ChunkProviderServer.java
index fe040615ff03478a20cdf8376f89a6b7d100ba61..207a9c3928aad7c6e89a120b54d87e003ebd232c 100644
index 1b86c032fde3409cb89b849b9ba094af82cd9269..0718b80ac82a1cf00519c30c6d2ef78fe3914c71 100644
--- a/src/main/java/net/minecraft/server/level/ChunkProviderServer.java
+++ b/src/main/java/net/minecraft/server/level/ChunkProviderServer.java
@@ -1000,6 +1000,7 @@ public class ChunkProviderServer extends IChunkProvider {

View File

@ -20,7 +20,7 @@ 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/world/entity/EntityLiving.java b/src/main/java/net/minecraft/world/entity/EntityLiving.java
index 785c210414ca11584bc51087616845f0d5badc91..c6d551ad958711dec777902f02c9f5dadac26ff8 100644
index cfd2b2607be0d30ece36d1dd51178fb667018dcc..c782a51340cdcae3837d1ab7563c45a075310317 100644
--- a/src/main/java/net/minecraft/world/entity/EntityLiving.java
+++ b/src/main/java/net/minecraft/world/entity/EntityLiving.java
@@ -910,11 +910,13 @@ public abstract class EntityLiving extends Entity {

View File

@ -27,14 +27,14 @@ 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/gg/airplane/AirplaneConfig.java b/src/main/java/gg/airplane/AirplaneConfig.java
index ab019b577002677a4ce788106f8e5a1d7757a2ae..0e452ea9c5d098326d22a20aa67e423f85843db7 100644
index ab019b577002677a4ce788106f8e5a1d7757a2ae..5077e70e4f408814b1072ceb45c52a322a7662d2 100644
--- a/src/main/java/gg/airplane/AirplaneConfig.java
+++ b/src/main/java/gg/airplane/AirplaneConfig.java
@@ -47,4 +47,36 @@ public class AirplaneConfig {
@@ -47,4 +47,37 @@ public class AirplaneConfig {
}
}
+
+ public static boolean dearEnabled;
+ public static int startDistance;
+ public static int startDistanceSquared;
+ public static int maximumActivationPrio;
@ -46,6 +46,7 @@ index ab019b577002677a4ce788106f8e5a1d7757a2ae..0e452ea9c5d098326d22a20aa67e423f
+ private static void dynamicActivationRange() {
+ config.setComment("activation-range", "Optimizes how entities act when", "they're far away from the player");
+
+ dearEnabled = config.getBoolean("activation-range.enabled", true);
+ startDistance = config.getInt("activation-range.start-distance", 12,
+ "This value determines how far away an entity has to be",
+ "from the player to start being effected by DEAR.");
@ -68,7 +69,7 @@ index ab019b577002677a4ce788106f8e5a1d7757a2ae..0e452ea9c5d098326d22a20aa67e423f
+
}
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
index c3d4eda866016c4ac08d4c5d771e39dcac5a3a60..21f8e6b6dd123675d59cca20935d7048f6c98b23 100644
index dc562eecac56c6e71c7ad0293507879ca6b04586..e921602fd4f7a86b38c4d09d9cedf5074f1a8508 100644
--- a/src/main/java/net/minecraft/world/entity/Entity.java
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
@@ -289,6 +289,9 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, ne
@ -82,7 +83,7 @@ index c3d4eda866016c4ac08d4c5d771e39dcac5a3a60..21f8e6b6dd123675d59cca20935d7048
public float getBukkitYaw() {
return this.yaw;
diff --git a/src/main/java/net/minecraft/world/entity/EntityInsentient.java b/src/main/java/net/minecraft/world/entity/EntityInsentient.java
index 7ba59ff9a7ed39bf69c46973a85f874c43134dc1..7582b91a24253473b2770d4e1bf053446238643c 100644
index 7ba59ff9a7ed39bf69c46973a85f874c43134dc1..c67138e6a4dcbe823e894f6bb948742bfb8f9943 100644
--- a/src/main/java/net/minecraft/world/entity/EntityInsentient.java
+++ b/src/main/java/net/minecraft/world/entity/EntityInsentient.java
@@ -201,10 +201,10 @@ public abstract class EntityInsentient extends EntityLiving {
@ -90,11 +91,11 @@ index 7ba59ff9a7ed39bf69c46973a85f874c43134dc1..7582b91a24253473b2770d4e1bf05344
public void inactiveTick() {
super.inactiveTick();
- if (this.goalSelector.inactiveTick()) {
+ if (this.goalSelector.inactiveTick(this.activatedPriority)) { // Airplane - pass activated priroity
+ if (this.goalSelector.inactiveTick(this.activatedPriority, true)) { // Airplane - pass activated priroity
this.goalSelector.doTick();
}
- if (this.targetSelector.inactiveTick()) {
+ if (this.targetSelector.inactiveTick(this.activatedPriority)) { // Airplane - pass activated priority
+ if (this.targetSelector.inactiveTick(this.activatedPriority, true)) { // Airplane - pass activated priority
this.targetSelector.doTick();
}
}
@ -102,26 +103,27 @@ index 7ba59ff9a7ed39bf69c46973a85f874c43134dc1..7582b91a24253473b2770d4e1bf05344
this.bo.a();
this.world.getMethodProfiler().exit();
this.world.getMethodProfiler().enter("targetSelector");
+ if (this.targetSelector.inactiveTick(this.activatedPriority)) // Airplane - use this to alternate ticking
+ if (this.targetSelector.inactiveTick(this.activatedPriority, false)) // Airplane - use this to alternate ticking
this.targetSelector.doTick();
this.world.getMethodProfiler().exit();
this.world.getMethodProfiler().enter("goalSelector");
+ if (this.goalSelector.inactiveTick(this.activatedPriority)) // Airplane - use this to alternate ticking
+ if (this.goalSelector.inactiveTick(this.activatedPriority, false)) // Airplane - use this to alternate ticking
this.goalSelector.doTick();
this.world.getMethodProfiler().exit();
this.world.getMethodProfiler().enter("navigation");
diff --git a/src/main/java/net/minecraft/world/entity/ai/goal/PathfinderGoalSelector.java b/src/main/java/net/minecraft/world/entity/ai/goal/PathfinderGoalSelector.java
index 637928664f8c7b1c694a234e507c20724294e450..02e8288473138dcea008d6157318758e8d7ee3be 100644
index 637928664f8c7b1c694a234e507c20724294e450..502f710e1b04d186c539a04b43379bdcd494b0e5 100644
--- a/src/main/java/net/minecraft/world/entity/ai/goal/PathfinderGoalSelector.java
+++ b/src/main/java/net/minecraft/world/entity/ai/goal/PathfinderGoalSelector.java
@@ -44,9 +44,14 @@ public class PathfinderGoalSelector {
@@ -44,9 +44,15 @@ public class PathfinderGoalSelector {
}
// Paper start
- public boolean inactiveTick() {
- incRate();
- return getCurRate() % getTickRate() == 0;
+ public boolean inactiveTick(int tickRate) { // Airplane - take tick rate
+ public boolean inactiveTick(int tickRate, boolean inactive) { // Airplane - take tick rate
+ if (inactive && !gg.airplane.AirplaneConfig.dearEnabled) tickRate = 4; // reset to Paper's
+ tickRate = Math.min(tickRate, getTickRate()); // Airplane
+ if (this.curRate++ % tickRate != 0) { // Airplane - use tick rate / increment curRate every tick
+ //incRate();
@ -200,7 +202,7 @@ index 85374ac8f5460790de03b47d7c3ce19ed5596afe..ccb568a5e8501ac5e8901ef3a270cc87
if (this.bF) {
this.bF = false;
diff --git a/src/main/java/org/spigotmc/ActivationRange.java b/src/main/java/org/spigotmc/ActivationRange.java
index 5c2eaca0bc63c7880ee928aba6a24761737aa649..8b36ca5062f8e0e8bd58aa506e91704a747de81b 100644
index 5c2eaca0bc63c7880ee928aba6a24761737aa649..0c86a93a34fdbb65365e81915ac9f54df4dde88b 100644
--- a/src/main/java/org/spigotmc/ActivationRange.java
+++ b/src/main/java/org/spigotmc/ActivationRange.java
@@ -47,6 +47,9 @@ import net.minecraft.world.entity.schedule.Activity;
@ -231,17 +233,21 @@ index 5c2eaca0bc63c7880ee928aba6a24761737aa649..8b36ca5062f8e0e8bd58aa506e91704a
{
// Paper start
Entity[] rawData = chunk.entities.getRawData();
@@ -249,6 +252,15 @@ public class ActivationRange
@@ -249,6 +252,19 @@ public class ActivationRange
//for ( Entity entity : (Collection<Entity>) slice )
// Paper end
{
+ // Airplane start
+ Vec3D entityVec = entity.getPositionVector();
+ double diffX = playerVec.x - entityVec.x, diffY = playerVec.y - entityVec.y, diffZ = playerVec.z - entityVec.z;
+ int squaredDistance = (int) (diffX * diffX + diffY * diffY + diffZ * diffZ);
+ entity.activatedPriority = squaredDistance > gg.airplane.AirplaneConfig.startDistanceSquared ?
+ Math.max(1, Math.min(squaredDistance >> gg.airplane.AirplaneConfig.activationDistanceMod, gg.airplane.AirplaneConfig.maximumActivationPrio)) :
+ 1;
+ if (gg.airplane.AirplaneConfig.dearEnabled) {
+ Vec3D entityVec = entity.getPositionVector();
+ double diffX = playerVec.x - entityVec.x, diffY = playerVec.y - entityVec.y, diffZ = playerVec.z - entityVec.z;
+ int squaredDistance = (int) (diffX * diffX + diffY * diffY + diffZ * diffZ);
+ entity.activatedPriority = squaredDistance > gg.airplane.AirplaneConfig.startDistanceSquared ?
+ Math.max(1, Math.min(squaredDistance >> gg.airplane.AirplaneConfig.activationDistanceMod, gg.airplane.AirplaneConfig.maximumActivationPrio)) :
+ 1;
+ } else {
+ entity.activatedPriority = 1;
+ }
+ // Airplane end
+
if (MinecraftServer.currentTick > entity.activatedTick) {

View File

@ -53,7 +53,7 @@ index e993b1849beb60515c51ee4f37617faab63ca223..4d7b5d47ab6bd3b1408811c3b9c157b1
boolean flag1 = iblockdata.getFluid().a((Tag) TagsFluid.WATER);
diff --git a/src/main/java/net/minecraft/world/level/SpawnerCreature.java b/src/main/java/net/minecraft/world/level/SpawnerCreature.java
index d497006f05f79015cd791849888832bb53f4a414..d98526785ff2fa3b72e8ffffcb89a57a2203a5c8 100644
index 9b55da1f4d40ae36b2d2b8e7b3b18989dc4f6006..ab6812698757c05c2e923006d4e3370a7d6c4e03 100644
--- a/src/main/java/net/minecraft/world/level/SpawnerCreature.java
+++ b/src/main/java/net/minecraft/world/level/SpawnerCreature.java
@@ -415,7 +415,10 @@ public final class SpawnerCreature {

View File

@ -38,10 +38,10 @@ index 9cac82f2655c55b7374c7b23b1c65cb9958627e2..cb633e69891a57571b7e112eb8556ffa
<!-- This builds a completely 'ready to start' jar with all dependencies inside -->
diff --git a/src/main/java/gg/airplane/AirplaneConfig.java b/src/main/java/gg/airplane/AirplaneConfig.java
index 0e452ea9c5d098326d22a20aa67e423f85843db7..7ec84ef1d1cbb1fabf4c590a2f2c1da3cc181010 100644
index 5077e70e4f408814b1072ceb45c52a322a7662d2..94c18e824695af69e39288195cc2fa83a13029d6 100644
--- a/src/main/java/gg/airplane/AirplaneConfig.java
+++ b/src/main/java/gg/airplane/AirplaneConfig.java
@@ -79,4 +79,27 @@ public class AirplaneConfig {
@@ -80,4 +80,27 @@ public class AirplaneConfig {
dynamicHoglinBehavior = config.getBoolean("behavior-activation.hoglin", true);
}

View File

@ -5,7 +5,7 @@ Subject: [PATCH] Skip copying unloading tile entities
diff --git a/src/main/java/net/minecraft/world/level/World.java b/src/main/java/net/minecraft/world/level/World.java
index 6ab528223682d57bec1cdbd383acd8ab06904e4a..3abea117b29e57013fb556855ef9def023069bf9 100644
index 37da32675f0c00c793cd137c9a7305932cefb705..3c9d27900fe3b6cf7e8eb4df42e1758f507894b1 100644
--- a/src/main/java/net/minecraft/world/level/World.java
+++ b/src/main/java/net/minecraft/world/level/World.java
@@ -106,7 +106,7 @@ public abstract class World implements GeneratorAccess, AutoCloseable {
@ -17,7 +17,7 @@ index 6ab528223682d57bec1cdbd383acd8ab06904e4a..3abea117b29e57013fb556855ef9def0
public final Thread serverThread;
private final boolean debugWorld;
private int d;
@@ -995,12 +995,17 @@ public abstract class World implements GeneratorAccess, AutoCloseable {
@@ -993,12 +993,17 @@ public abstract class World implements GeneratorAccess, AutoCloseable {
gameprofilerfiller.enter("blockEntities");
timings.tileEntityTick.startTiming(); // Spigot
if (!this.tileEntityListUnload.isEmpty()) {

View File

@ -5,7 +5,7 @@ Subject: [PATCH] Skip creating hashset for entity track range
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
index 21f8e6b6dd123675d59cca20935d7048f6c98b23..1ea76604a375b60aa2b93af6c562151030907b1c 100644
index e921602fd4f7a86b38c4d09d9cedf5074f1a8508..9f2079b88c5e93a73ccb9c3c9ccbce5960241924 100644
--- a/src/main/java/net/minecraft/world/entity/Entity.java
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
@@ -319,10 +319,39 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, ne

View File

@ -5,7 +5,7 @@ Subject: [PATCH] Cache climbing check for activation
diff --git a/src/main/java/net/minecraft/world/entity/EntityLiving.java b/src/main/java/net/minecraft/world/entity/EntityLiving.java
index c6d551ad958711dec777902f02c9f5dadac26ff8..a49dbcffecc971f797651984cb72c455d40f9331 100644
index c782a51340cdcae3837d1ab7563c45a075310317..e5372dfc25f99c63a66acdf085d6ae2a7c2102fa 100644
--- a/src/main/java/net/minecraft/world/entity/EntityLiving.java
+++ b/src/main/java/net/minecraft/world/entity/EntityLiving.java
@@ -1745,6 +1745,19 @@ public abstract class EntityLiving extends Entity {
@ -29,10 +29,10 @@ index c6d551ad958711dec777902f02c9f5dadac26ff8..a49dbcffecc971f797651984cb72c455
return this.world.getType(this.getChunkCoordinates());
}
diff --git a/src/main/java/org/spigotmc/ActivationRange.java b/src/main/java/org/spigotmc/ActivationRange.java
index 8b36ca5062f8e0e8bd58aa506e91704a747de81b..94910bf0c53c79588c55b89e4a023273d6c859ef 100644
index 0c86a93a34fdbb65365e81915ac9f54df4dde88b..b9c675ecae8fd87cca3c7475f4901c9d5529ac6b 100644
--- a/src/main/java/org/spigotmc/ActivationRange.java
+++ b/src/main/java/org/spigotmc/ActivationRange.java
@@ -309,7 +309,7 @@ public class ActivationRange
@@ -313,7 +313,7 @@ public class ActivationRange
if ( entity instanceof EntityLiving )
{
EntityLiving living = (EntityLiving) entity;

View File

@ -8,10 +8,10 @@ entities this starts adding up more than it should, and it's already
fairly optimized. Just starts being slow when you have 30k entities.
diff --git a/src/main/java/gg/airplane/AirplaneConfig.java b/src/main/java/gg/airplane/AirplaneConfig.java
index 7ec84ef1d1cbb1fabf4c590a2f2c1da3cc181010..c9e00334655ccd273ba108a541ed1cb0633f69b7 100644
index 94c18e824695af69e39288195cc2fa83a13029d6..a673eaad4cd80287e8a357f8c45b2add156ff0b9 100644
--- a/src/main/java/gg/airplane/AirplaneConfig.java
+++ b/src/main/java/gg/airplane/AirplaneConfig.java
@@ -102,4 +102,13 @@ public class AirplaneConfig {
@@ -103,4 +103,13 @@ public class AirplaneConfig {
}
@ -26,7 +26,7 @@ index 7ec84ef1d1cbb1fabf4c590a2f2c1da3cc181010..c9e00334655ccd273ba108a541ed1cb0
+
}
diff --git a/src/main/java/net/minecraft/world/entity/EntityInsentient.java b/src/main/java/net/minecraft/world/entity/EntityInsentient.java
index 7582b91a24253473b2770d4e1bf053446238643c..892bfadbb1e7d09996df61aaee2cab74187f73d0 100644
index c67138e6a4dcbe823e894f6bb948742bfb8f9943..0f0bf91a3d01c0eb841db81ac441cf5936a2cdfe 100644
--- a/src/main/java/net/minecraft/world/entity/EntityInsentient.java
+++ b/src/main/java/net/minecraft/world/entity/EntityInsentient.java
@@ -774,8 +774,15 @@ public abstract class EntityInsentient extends EntityLiving {

View File

@ -5,10 +5,10 @@ Subject: [PATCH] Config to disable method profiler
diff --git a/src/main/java/gg/airplane/AirplaneConfig.java b/src/main/java/gg/airplane/AirplaneConfig.java
index c9e00334655ccd273ba108a541ed1cb0633f69b7..65adf3ceda012c8cfdea675c40e2bb27d34ebac7 100644
index a673eaad4cd80287e8a357f8c45b2add156ff0b9..6fc23a85ddd66a69b83684cdb602b6a312e9d72b 100644
--- a/src/main/java/gg/airplane/AirplaneConfig.java
+++ b/src/main/java/gg/airplane/AirplaneConfig.java
@@ -111,4 +111,13 @@ public class AirplaneConfig {
@@ -112,4 +112,13 @@ public class AirplaneConfig {
}
@ -39,7 +39,7 @@ index 6f90a4182e008b49a4b3328e569311382e4bec0d..1472bbdac9b545c97368df03672b975a
}
diff --git a/src/main/java/net/minecraft/world/level/World.java b/src/main/java/net/minecraft/world/level/World.java
index 3abea117b29e57013fb556855ef9def023069bf9..f8d11a1f0337acf60f2d9f94bd4bbbf6eb77c6de 100644
index 3c9d27900fe3b6cf7e8eb4df42e1758f507894b1..cf1b190a1d9175b872c65d2ea69a9187346520e4 100644
--- a/src/main/java/net/minecraft/world/level/World.java
+++ b/src/main/java/net/minecraft/world/level/World.java
@@ -18,6 +18,7 @@ import java.util.function.Consumer;
@ -50,7 +50,7 @@ index 3abea117b29e57013fb556855ef9def023069bf9..f8d11a1f0337acf60f2d9f94bd4bbbf6
import net.minecraft.CrashReport;
import net.minecraft.CrashReportSystemDetails;
import net.minecraft.ReportedException;
@@ -1815,6 +1816,7 @@ public abstract class World implements GeneratorAccess, AutoCloseable {
@@ -1813,6 +1814,7 @@ public abstract class World implements GeneratorAccess, AutoCloseable {
}
public GameProfilerFiller getMethodProfiler() {

View File

@ -46,7 +46,7 @@ index 0000000000000000000000000000000000000000..36eea0acd815e08e0be10bf55541ea0b
+ }
+}
diff --git a/src/main/java/net/minecraft/world/entity/ai/goal/PathfinderGoalSelector.java b/src/main/java/net/minecraft/world/entity/ai/goal/PathfinderGoalSelector.java
index 02e8288473138dcea008d6157318758e8d7ee3be..697e666a027d5e2ace7d0758909be5a658c480d2 100644
index 502f710e1b04d186c539a04b43379bdcd494b0e5..0c56094b962c7c6e6ab3bf49d2efdcec7faed1c6 100644
--- a/src/main/java/net/minecraft/world/entity/ai/goal/PathfinderGoalSelector.java
+++ b/src/main/java/net/minecraft/world/entity/ai/goal/PathfinderGoalSelector.java
@@ -28,7 +28,7 @@ public class PathfinderGoalSelector {
@ -58,7 +58,7 @@ index 02e8288473138dcea008d6157318758e8d7ee3be..697e666a027d5e2ace7d0758909be5a6
private final Supplier<GameProfilerFiller> e;
private final EnumSet<PathfinderGoal.Type> f = EnumSet.noneOf(PathfinderGoal.Type.class); // Paper unused, but dummy to prevent plugins from crashing as hard. Theyll need to support paper in a special case if this is super important, but really doesn't seem like it would be.
private final OptimizedSmallEnumSet<PathfinderGoal.Type> goalTypes = new OptimizedSmallEnumSet<>(PathfinderGoal.Type.class); // Paper - remove streams from pathfindergoalselector
@@ -85,8 +85,11 @@ public class PathfinderGoalSelector {
@@ -86,8 +86,11 @@ public class PathfinderGoalSelector {
gameprofilerfiller.enter("goalCleanup");
// Paper start - remove streams from pathfindergoalselector
@ -72,7 +72,7 @@ index 02e8288473138dcea008d6157318758e8d7ee3be..697e666a027d5e2ace7d0758909be5a6
if (!wrappedGoal.g()) {
continue;
}
@@ -105,8 +108,10 @@ public class PathfinderGoalSelector {
@@ -106,8 +109,10 @@ public class PathfinderGoalSelector {
gameprofilerfiller.exit();
gameprofilerfiller.enter("goalUpdate");
// Paper start - remove streams from pathfindergoalselector
@ -85,7 +85,7 @@ index 02e8288473138dcea008d6157318758e8d7ee3be..697e666a027d5e2ace7d0758909be5a6
if (wrappedGoal.g()) {
continue;
}
@@ -149,8 +154,11 @@ public class PathfinderGoalSelector {
@@ -150,8 +155,11 @@ public class PathfinderGoalSelector {
gameprofilerfiller.exit();
gameprofilerfiller.enter("goalTick");
// Paper start - remove streams from pathfindergoalselector

View File

@ -5,12 +5,12 @@ Subject: [PATCH] Use raw iterator where possible
diff --git a/src/main/java/net/minecraft/server/level/ChunkProviderServer.java b/src/main/java/net/minecraft/server/level/ChunkProviderServer.java
index 207a9c3928aad7c6e89a120b54d87e003ebd232c..06864951af539e22f6e459c0f0c097b7c2fb929b 100644
index 0718b80ac82a1cf00519c30c6d2ef78fe3914c71..e31766151450ffa44937feb728f6368e61acd2cd 100644
--- a/src/main/java/net/minecraft/server/level/ChunkProviderServer.java
+++ b/src/main/java/net/minecraft/server/level/ChunkProviderServer.java
@@ -1033,10 +1033,12 @@ public class ChunkProviderServer extends IChunkProvider {
//Collections.shuffle(list); // Paper
@@ -1034,10 +1034,12 @@ public class ChunkProviderServer extends IChunkProvider {
// Paper - moved up
this.world.timings.chunkTicks.startTiming(); // Paper
// Tuinity start - optimise chunk tick iteration
- com.tuinity.tuinity.util.maplist.IteratorSafeOrderedReferenceSet.Iterator<Chunk> iterator = this.entityTickingChunks.iterator();
+ // Airplane start - use raw iterator
@ -24,7 +24,7 @@ index 207a9c3928aad7c6e89a120b54d87e003ebd232c..06864951af539e22f6e459c0f0c097b7
PlayerChunk playerchunk = chunk.playerChunk;
if (playerchunk != null) { // make sure load event has been called along with the load logic we put there
// Tuinity end - optimise chunk tick iteration
@@ -1064,10 +1066,12 @@ public class ChunkProviderServer extends IChunkProvider {
@@ -1065,10 +1067,12 @@ public class ChunkProviderServer extends IChunkProvider {
}
}
}
@ -36,5 +36,5 @@ index 207a9c3928aad7c6e89a120b54d87e003ebd232c..06864951af539e22f6e459c0f0c097b7
}
+ // Airplane end
// Tuinity end - optimise chunk tick iteration
this.world.timings.chunkTicks.stopTiming(); // Paper
this.world.getMethodProfiler().enter("customSpawners");
if (flag1) {

View File

@ -6,10 +6,10 @@ Subject: [PATCH] Swaps the predicate order of collision
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
index 1ea76604a375b60aa2b93af6c562151030907b1c..939f042c7c5abc0c71880b61d6ebf8bd1d4d5c8f 100644
index 9f2079b88c5e93a73ccb9c3c9ccbce5960241924..814cd9d46917cee21e3c715b62e82fa2e4547e33 100644
--- a/src/main/java/net/minecraft/world/entity/Entity.java
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
@@ -1776,8 +1776,9 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, ne
@@ -1775,8 +1775,9 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, ne
public void pickup(EntityHuman entityhuman) {}
public void collide(Entity entity) {

View File

@ -5,10 +5,10 @@ Subject: [PATCH] dont load chunks for physics
diff --git a/src/main/java/net/minecraft/world/level/World.java b/src/main/java/net/minecraft/world/level/World.java
index f8d11a1f0337acf60f2d9f94bd4bbbf6eb77c6de..8505b8e35d0870aae675850583a6e9ccc9df5a4d 100644
index cf1b190a1d9175b872c65d2ea69a9187346520e4..704ccbc73e5d1221587bae4780d0f48676014479 100644
--- a/src/main/java/net/minecraft/world/level/World.java
+++ b/src/main/java/net/minecraft/world/level/World.java
@@ -832,7 +832,8 @@ public abstract class World implements GeneratorAccess, AutoCloseable {
@@ -830,7 +830,8 @@ public abstract class World implements GeneratorAccess, AutoCloseable {
public void neighborChanged(BlockPosition pos, Block blockIn, BlockPosition fromPos) { a(pos, blockIn, fromPos); } // Paper - OBFHELPER
public void a(BlockPosition blockposition, Block block, BlockPosition blockposition1) {
if (!this.isClientSide) {

View File

@ -129,7 +129,7 @@ index 0000000000000000000000000000000000000000..fe7330fabe386966c2d203a190a00a78
+}
\ No newline at end of file
diff --git a/src/main/java/net/minecraft/world/level/World.java b/src/main/java/net/minecraft/world/level/World.java
index 8505b8e35d0870aae675850583a6e9ccc9df5a4d..a4d0102e0020d62de3affdd819001c08202e0616 100644
index 704ccbc73e5d1221587bae4780d0f48676014479..313d27714b98c58627d1ce247bf63384929a746f 100644
--- a/src/main/java/net/minecraft/world/level/World.java
+++ b/src/main/java/net/minecraft/world/level/World.java
@@ -159,6 +159,8 @@ public abstract class World implements GeneratorAccess, AutoCloseable {
@ -141,7 +141,7 @@ index 8505b8e35d0870aae675850583a6e9ccc9df5a4d..a4d0102e0020d62de3affdd819001c08
public final co.aikar.timings.WorldTimingsHandler timings; // Paper
public static BlockPosition lastPhysicsProblem; // Spigot
private org.spigotmc.TickLimiter entityLimiter;
@@ -257,6 +259,7 @@ public abstract class World implements GeneratorAccess, AutoCloseable {
@@ -255,6 +257,7 @@ public abstract class World implements GeneratorAccess, AutoCloseable {
protected World(WorldDataMutable worlddatamutable, ResourceKey<World> resourcekey, final DimensionManager dimensionmanager, Supplier<GameProfilerFiller> supplier, boolean flag, boolean flag1, long i, org.bukkit.generator.ChunkGenerator gen, org.bukkit.World.Environment env, java.util.concurrent.Executor executor) { // Paper
this.spigotConfig = new org.spigotmc.SpigotWorldConfig(((net.minecraft.world.level.storage.WorldDataServer) worlddatamutable).getName()); // Spigot
this.paperConfig = new com.destroystokyo.paper.PaperWorldConfig(((net.minecraft.world.level.storage.WorldDataServer) worlddatamutable).getName(), this.spigotConfig); // Paper

View File

@ -5,7 +5,7 @@ Subject: [PATCH] Don't wake up entities when damage event is cancelled
diff --git a/src/main/java/net/minecraft/world/entity/EntityLiving.java b/src/main/java/net/minecraft/world/entity/EntityLiving.java
index a49dbcffecc971f797651984cb72c455d40f9331..42f4aaeeceb628007ded00353fd26aa461f39ea9 100644
index e5372dfc25f99c63a66acdf085d6ae2a7c2102fa..ee2922d68cb1970c7b3b0b4b03d870a46ff63d71 100644
--- a/src/main/java/net/minecraft/world/entity/EntityLiving.java
+++ b/src/main/java/net/minecraft/world/entity/EntityLiving.java
@@ -1208,9 +1208,12 @@ public abstract class EntityLiving extends Entity {

View File

@ -8,10 +8,10 @@ Add per player no-tick, tick, and send view distances.
Also add send view distance to World.
diff --git a/src/main/java/org/bukkit/World.java b/src/main/java/org/bukkit/World.java
index a1496fe00a2d5ba6c1af054d4327f868b2cd7344..6ca9aa2c438810b5537dc196b3fd89b0750b3d67 100644
index f66ec2dfdc64871f8b752bf44086954300804f08..8efc8e0db687e1506eee2b19466ec917ba4edcdc 100644
--- a/src/main/java/org/bukkit/World.java
+++ b/src/main/java/org/bukkit/World.java
@@ -3631,6 +3631,26 @@ public interface World extends PluginMessageRecipient, Metadatable, net.kyori.ad
@@ -3639,6 +3639,26 @@ public interface World extends PluginMessageRecipient, Metadatable, net.kyori.ad
* @param viewDistance view distance in [2, 32]
*/
void setNoTickViewDistance(int viewDistance);

View File

@ -2066,7 +2066,7 @@ index da66369c63e60e6e0328392b2eb98579613be63e..200ec8ad168e5b5e3672a4284e851b06
midTickLoadChunks(); // Paper
} catch (Throwable throwable) {
diff --git a/src/main/java/net/minecraft/server/level/ChunkProviderServer.java b/src/main/java/net/minecraft/server/level/ChunkProviderServer.java
index c5e54c519e1f686761faa53b5e9579c514a65332..e9b236bb95985ba0806a3d27d705ac61bce55ea5 100644
index 4a71f9a8a57ed123b31c725a8bd5f94ab0e2174d..f660cc2bfd420fcdea6ded9ad1e34263ed6657d6 100644
--- a/src/main/java/net/minecraft/server/level/ChunkProviderServer.java
+++ b/src/main/java/net/minecraft/server/level/ChunkProviderServer.java
@@ -137,7 +137,7 @@ public class ChunkProviderServer extends IChunkProvider {
@ -2531,7 +2531,7 @@ index f68a252378a94c8fcab622d2d89d738aceab45a4..afee018d10d0dbc31f1201477084e315
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
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
index 6fdcd96fd75cd63d769b012827519f554af4cf54..91fbda3edc0034ed356ad7559552e3acc5d4736d 100644
index 8ef41182056052686055b7eb88ab19c161e84ed4..62687478c8a8213bde78e8cf7d85b923f2ec840a 100644
--- a/src/main/java/net/minecraft/world/entity/Entity.java
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
@@ -299,6 +299,14 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, ne

View File

@ -172,10 +172,10 @@ index 3644e8b24b082e17752ef52934625416130aaa08..4dfc1101d5fc78630ef8b816e8f84f55
for (java.util.Iterator<Entry<ArraySetSorted<Ticket<?>>>> iterator = this.tickets.long2ObjectEntrySet().fastIterator(); iterator.hasNext();) {
diff --git a/src/main/java/net/minecraft/server/level/ChunkProviderServer.java b/src/main/java/net/minecraft/server/level/ChunkProviderServer.java
index e9b236bb95985ba0806a3d27d705ac61bce55ea5..c5038aa66703484a9243579ba4a6c92d138fc388 100644
index f660cc2bfd420fcdea6ded9ad1e34263ed6657d6..e9ada3d51470c34eef8915efdf5f64d58b491041 100644
--- a/src/main/java/net/minecraft/server/level/ChunkProviderServer.java
+++ b/src/main/java/net/minecraft/server/level/ChunkProviderServer.java
@@ -1223,6 +1223,7 @@ public class ChunkProviderServer extends IChunkProvider {
@@ -1225,6 +1225,7 @@ public class ChunkProviderServer extends IChunkProvider {
@Override
protected boolean executeNext() {

View File

@ -247,10 +247,10 @@ index 3c804c7b20a14ea6e510810e2be10c1cc89ff5c1..47da7efffde2e6d63c1a064b950abf81
return new TicketType<>(s, comparator, 0L);
}
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
index 9d858f91828d6c2787ff1dc677a247bcab172701..bc18949c18fb1c8b85d44aff1a3255900013bab7 100644
index 02198dbe9e80c2990e8a09b2b763748dae727a03..9948af982f4965bcbbbfa2362e20575823b39361 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
@@ -505,6 +505,7 @@ public class CraftWorld implements World {
@@ -516,6 +516,7 @@ public class CraftWorld implements World {
org.spigotmc.AsyncCatcher.catchOp("chunk unload"); // Spigot
if (isChunkLoaded(x, z)) {
world.getChunkProvider().removeTicket(TicketType.PLUGIN, new ChunkCoordIntPair(x, z), 0, Unit.INSTANCE); // Paper

View File

@ -35,10 +35,10 @@ index 5aa558bd05c4ab735730263f220478c36a4ba0fd..6473b951788a3ecbeee4811ea0288ff4
}
\ No newline at end of file
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
index bc18949c18fb1c8b85d44aff1a3255900013bab7..c15777178657d3db16de7237c7ed2127c331166a 100644
index 9948af982f4965bcbbbfa2362e20575823b39361..d312d316ddb7ed59ad918ef2582f98e055c486c3 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
@@ -342,6 +342,14 @@ public class CraftWorld implements World {
@@ -353,6 +353,14 @@ public class CraftWorld implements World {
this.generator = gen;
environment = env;

View File

@ -119,10 +119,10 @@ index ed3d4753eb6005337fc13a24021f138da5704a7f..64b9e420d8590e541cfad0881b9dc1fa
public void a(Entity entity, Entity entity1) {
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
index 91fbda3edc0034ed356ad7559552e3acc5d4736d..2eddfed1768d0a8a882cbaaf5f17e555c513c71a 100644
index 62687478c8a8213bde78e8cf7d85b923f2ec840a..745445a45ca583395b32bfba8326ee6c27d45212 100644
--- a/src/main/java/net/minecraft/world/entity/Entity.java
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
@@ -691,7 +691,39 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, ne
@@ -722,7 +722,39 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, ne
return this.onGround;
}
@ -162,7 +162,7 @@ index 91fbda3edc0034ed356ad7559552e3acc5d4736d..2eddfed1768d0a8a882cbaaf5f17e555
if (this.noclip) {
this.a(this.getBoundingBox().c(vec3d));
this.recalcPosition();
@@ -835,6 +867,13 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, ne
@@ -866,6 +898,13 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, ne
this.world.getMethodProfiler().exit();
}
@ -176,7 +176,7 @@ index 91fbda3edc0034ed356ad7559552e3acc5d4736d..2eddfed1768d0a8a882cbaaf5f17e555
}
protected BlockPosition ap() {
@@ -3408,12 +3447,16 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, ne
@@ -3440,12 +3479,16 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, ne
return this.locBlock;
}
@ -193,7 +193,7 @@ index 91fbda3edc0034ed356ad7559552e3acc5d4736d..2eddfed1768d0a8a882cbaaf5f17e555
}
public void setMot(double d0, double d1, double d2) {
@@ -3468,7 +3511,9 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, ne
@@ -3500,7 +3543,9 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, ne
}
// Paper end
if (this.loc.x != d0 || this.loc.y != d1 || this.loc.z != d2) {

View File

@ -196,7 +196,7 @@ index 80341dabd8932dbfab980ab78e95d06c53fabe94..594d6683b4bf74b83d44675e58a7d036
// Spigot Start
CrashReport crashreport;
diff --git a/src/main/java/net/minecraft/server/level/ChunkProviderServer.java b/src/main/java/net/minecraft/server/level/ChunkProviderServer.java
index c5038aa66703484a9243579ba4a6c92d138fc388..e38e507ccc26058b4f4d2e8fe061188525e7ac92 100644
index e9ada3d51470c34eef8915efdf5f64d58b491041..09d4e187bfcc779d054f3420d30c84e676981ddc 100644
--- a/src/main/java/net/minecraft/server/level/ChunkProviderServer.java
+++ b/src/main/java/net/minecraft/server/level/ChunkProviderServer.java
@@ -918,7 +918,7 @@ public class ChunkProviderServer extends IChunkProvider {
@ -226,16 +226,16 @@ index c5038aa66703484a9243579ba4a6c92d138fc388..e38e507ccc26058b4f4d2e8fe0611885
this.p = spawnercreature_d;
this.world.getMethodProfiler().exit();
//List<PlayerChunk> list = Lists.newArrayList(this.playerChunkMap.f()); // Paper
@@ -1029,7 +1031,7 @@ public class ChunkProviderServer extends IChunkProvider {
this.world.timings.chunkTicks.startTiming(); // Spigot // Paper
@@ -1030,7 +1032,7 @@ public class ChunkProviderServer extends IChunkProvider {
//this.world.timings.chunkTicks.startTiming(); // Spigot // Paper
this.world.a(chunk, k);
this.world.timings.chunkTicks.stopTiming(); // Spigot // Paper
//this.world.timings.chunkTicks.stopTiming(); // Spigot // Paper
- if (chunksTicked[0]++ % 10 == 0) this.world.getMinecraftServer().midTickLoadChunks(); // Paper
+ if ((++ticked & 1) == 0) MinecraftServer.getServer().executeMidTickTasks(); // Tuinity - exec chunk tasks during world tick
}
}
}
@@ -1185,41 +1187,7 @@ public class ChunkProviderServer extends IChunkProvider {
@@ -1187,41 +1189,7 @@ public class ChunkProviderServer extends IChunkProvider {
ChunkProviderServer.this.world.getMethodProfiler().c("runTask");
super.executeTask(runnable);
}

View File

@ -22,10 +22,10 @@ With this change I could get all 200 on at 0ms ping.
So in general this patch should reduce Netty I/O thread load.
diff --git a/src/main/java/net/minecraft/server/level/ChunkProviderServer.java b/src/main/java/net/minecraft/server/level/ChunkProviderServer.java
index e38e507ccc26058b4f4d2e8fe061188525e7ac92..ff883a306a138c2940d3de6ec46dfeb9d98e5b93 100644
index 09d4e187bfcc779d054f3420d30c84e676981ddc..858d35283997afa8ef4afbe61c8bba8747f4effa 100644
--- a/src/main/java/net/minecraft/server/level/ChunkProviderServer.java
+++ b/src/main/java/net/minecraft/server/level/ChunkProviderServer.java
@@ -1047,7 +1047,25 @@ public class ChunkProviderServer extends IChunkProvider {
@@ -1049,7 +1049,25 @@ public class ChunkProviderServer extends IChunkProvider {
this.world.getMethodProfiler().exit();
}

View File

@ -19,7 +19,7 @@ This patch also reverts incorrect use(s) of the class by paper.
any exception thrown from it.
diff --git a/src/main/java/net/minecraft/server/level/ChunkProviderServer.java b/src/main/java/net/minecraft/server/level/ChunkProviderServer.java
index ff883a306a138c2940d3de6ec46dfeb9d98e5b93..bc8114715f09496efa8aec8426c53542fd444c12 100644
index 858d35283997afa8ef4afbe61c8bba8747f4effa..a691b60f5573701c17f8744d86f45dbf94c95de1 100644
--- a/src/main/java/net/minecraft/server/level/ChunkProviderServer.java
+++ b/src/main/java/net/minecraft/server/level/ChunkProviderServer.java
@@ -199,9 +199,9 @@ public class ChunkProviderServer extends IChunkProvider {

View File

@ -11,12 +11,12 @@ Less crammed entities are likely to show significantly less benefit.
Effectively, this patch optimises crammed entity situations.
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
index 2eddfed1768d0a8a882cbaaf5f17e555c513c71a..710b2aaa43de0d5079371d99c2ad86d3271e54ee 100644
index 745445a45ca583395b32bfba8326ee6c27d45212..b5119308f16c79a0111d41f800446e40ed42a80e 100644
--- a/src/main/java/net/minecraft/world/entity/Entity.java
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
@@ -322,6 +322,41 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, ne
@@ -353,6 +353,41 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, ne
}
// Paper end - optimise entity tracking
// Paper end - make end portalling safe
+ // Tuinity start
+ /**
@ -56,7 +56,7 @@ index 2eddfed1768d0a8a882cbaaf5f17e555c513c71a..710b2aaa43de0d5079371d99c2ad86d3
public Entity(EntityTypes<?> entitytypes, World world) {
this.id = Entity.entityCount.incrementAndGet();
this.passengers = Lists.newArrayList();
@@ -2094,11 +2129,11 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, ne
@@ -2125,11 +2160,11 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, ne
return EnumInteractionResult.PASS;
}

View File

@ -261,7 +261,7 @@ index 594d6683b4bf74b83d44675e58a7d036d7572f61..7317a64269b8ce2a30117ebb23acfe98
long endTime = System.nanoTime();
long remaining = (TICK_TIME - (endTime - lastTick)) - catchupTime;
diff --git a/src/main/java/net/minecraft/server/level/EntityPlayer.java b/src/main/java/net/minecraft/server/level/EntityPlayer.java
index 558af73ac16550ee6964c4dce681a404633b2552..96ad066d6ed6359fd514c631cc3d51ec7234e6c7 100644
index 75bcfb3a2b4a104aeebb2fe3298714b2e5b569d2..f29cad4905d21190149b740e958768135e067a93 100644
--- a/src/main/java/net/minecraft/server/level/EntityPlayer.java
+++ b/src/main/java/net/minecraft/server/level/EntityPlayer.java
@@ -371,7 +371,7 @@ public class EntityPlayer extends EntityHuman implements ICrafting {
@ -552,7 +552,7 @@ index 90776231b1faffb11e4394f555f336ca248e3004..db8f0d8b63cbefffcd010568cbfab1ea
}
// CraftBukkit start
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
index 710b2aaa43de0d5079371d99c2ad86d3271e54ee..0cb2306e97e50f6cac308cec1e67348f4a41820f 100644
index b5119308f16c79a0111d41f800446e40ed42a80e..4115cd420ed18a0de91ebce9ba6f6504ca42aa7d 100644
--- a/src/main/java/net/minecraft/world/entity/Entity.java
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
@@ -228,7 +228,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, ne
@ -564,7 +564,7 @@ index 710b2aaa43de0d5079371d99c2ad86d3271e54ee..0cb2306e97e50f6cac308cec1e67348f
public boolean noclip;
public float I;
protected final Random random;
@@ -786,7 +786,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, ne
@@ -817,7 +817,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, ne
// Paper end
vec3d = this.a(vec3d, enummovetype);
@ -573,7 +573,7 @@ index 710b2aaa43de0d5079371d99c2ad86d3271e54ee..0cb2306e97e50f6cac308cec1e67348f
if (vec3d1.g() > 1.0E-7D) {
this.a(this.getBoundingBox().c(vec3d1));
@@ -877,7 +877,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, ne
@@ -908,7 +908,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, ne
}
try {
@ -582,7 +582,7 @@ index 710b2aaa43de0d5079371d99c2ad86d3271e54ee..0cb2306e97e50f6cac308cec1e67348f
} catch (Throwable throwable) {
CrashReport crashreport = CrashReport.a(throwable, "Checking entity block collision");
CrashReportSystemDetails crashreportsystemdetails = crashreport.a("Entity being checked for collision");
@@ -889,11 +889,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, ne
@@ -920,11 +920,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, ne
float f2 = this.getBlockSpeedFactor();
this.setMot(this.getMot().d((double) f2, 1.0D, (double) f2));
@ -595,7 +595,7 @@ index 710b2aaa43de0d5079371d99c2ad86d3271e54ee..0cb2306e97e50f6cac308cec1e67348f
if (this.aG() && this.isBurning()) {
this.playSound(SoundEffects.ENTITY_GENERIC_EXTINGUISH_FIRE, 0.7F, 1.6F + (this.random.nextFloat() - this.random.nextFloat()) * 0.4F);
@@ -989,6 +985,137 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, ne
@@ -1020,6 +1016,137 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, ne
return d0;
}
@ -733,7 +733,7 @@ index 710b2aaa43de0d5079371d99c2ad86d3271e54ee..0cb2306e97e50f6cac308cec1e67348f
private Vec3D g(Vec3D vec3d) {
AxisAlignedBB axisalignedbb = this.getBoundingBox();
VoxelShapeCollision voxelshapecollision = VoxelShapeCollision.a(this);
@@ -1024,6 +1151,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, ne
@@ -1055,6 +1182,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, ne
return vec3d1;
}
@ -741,7 +741,7 @@ index 710b2aaa43de0d5079371d99c2ad86d3271e54ee..0cb2306e97e50f6cac308cec1e67348f
public static double c(Vec3D vec3d) {
return vec3d.x * vec3d.x + vec3d.z * vec3d.z;
}
@@ -1136,18 +1264,34 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, ne
@@ -1167,18 +1295,34 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, ne
}
protected void checkBlockCollisions() {
@ -779,7 +779,7 @@ index 710b2aaa43de0d5079371d99c2ad86d3271e54ee..0cb2306e97e50f6cac308cec1e67348f
try {
iblockdata.a(this.world, blockposition_mutableblockposition, this);
this.a(iblockdata);
@@ -1161,6 +1305,11 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, ne
@@ -1192,6 +1336,11 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, ne
}
}
}
@ -791,7 +791,7 @@ index 710b2aaa43de0d5079371d99c2ad86d3271e54ee..0cb2306e97e50f6cac308cec1e67348f
}
}
@@ -2119,9 +2268,9 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, ne
@@ -2150,9 +2299,9 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, ne
float f1 = this.size.width * 0.8F;
AxisAlignedBB axisalignedbb = AxisAlignedBB.g((double) f1, 0.10000000149011612D, (double) f1).d(this.locX(), this.getHeadY(), this.locZ());
@ -803,7 +803,7 @@ index 710b2aaa43de0d5079371d99c2ad86d3271e54ee..0cb2306e97e50f6cac308cec1e67348f
}
}
@@ -2129,10 +2278,12 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, ne
@@ -2160,10 +2309,12 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, ne
return EnumInteractionResult.PASS;
}

View File

@ -5,7 +5,7 @@ Subject: [PATCH] Reduce allocation rate from crammed entities
diff --git a/src/main/java/net/minecraft/world/entity/EntityLiving.java b/src/main/java/net/minecraft/world/entity/EntityLiving.java
index 2657dd71213455e2da3a4ff4d338a33896ffe855..33f689b1c9f4c00969fbdd8ddb21901637afb81c 100644
index b7b07b652b29e6f84f87fc92add99ce68f8bbd09..2ff3297fb8c0e4f8c969ba2727eecb7fe06525c4 100644
--- a/src/main/java/net/minecraft/world/entity/EntityLiving.java
+++ b/src/main/java/net/minecraft/world/entity/EntityLiving.java
@@ -2973,7 +2973,11 @@ public abstract class EntityLiving extends Entity {

View File

@ -6,7 +6,7 @@ Subject: [PATCH] Optimise chunk tick iteration
Use a dedicated list of entity ticking chunks to reduce the cost
diff --git a/src/main/java/net/minecraft/server/level/ChunkProviderServer.java b/src/main/java/net/minecraft/server/level/ChunkProviderServer.java
index bc8114715f09496efa8aec8426c53542fd444c12..3560ac0c554b8e60c1bc961766bcf942ba6dd963 100644
index a691b60f5573701c17f8744d86f45dbf94c95de1..8d08bd4fb759218706f65c4620d26865d85b14d0 100644
--- a/src/main/java/net/minecraft/server/level/ChunkProviderServer.java
+++ b/src/main/java/net/minecraft/server/level/ChunkProviderServer.java
@@ -47,6 +47,12 @@ import net.minecraft.world.level.storage.WorldData;
@ -22,10 +22,10 @@ index bc8114715f09496efa8aec8426c53542fd444c12..3560ac0c554b8e60c1bc961766bcf942
public class ChunkProviderServer extends IChunkProvider {
private static final List<ChunkStatus> b = ChunkStatus.a(); public static final List<ChunkStatus> getPossibleChunkStatuses() { return ChunkProviderServer.b; } // Paper - OBFHELPER
@@ -1007,19 +1013,23 @@ public class ChunkProviderServer extends IChunkProvider {
//List<PlayerChunk> list = Lists.newArrayList(this.playerChunkMap.f()); // Paper
@@ -1008,19 +1014,23 @@ public class ChunkProviderServer extends IChunkProvider {
//Collections.shuffle(list); // Paper
// Paper - moved up
this.world.timings.chunkTicks.startTiming(); // Paper
- final int[] chunksTicked = {0}; this.playerChunkMap.forEachVisibleChunk((playerchunk) -> { // Paper - safe iterator incase chunk loads, also no wrapping
- Optional<Chunk> optional = ((Either) playerchunk.a().getNow(PlayerChunk.UNLOADED_CHUNK)).left();
-
@ -54,7 +54,7 @@ index bc8114715f09496efa8aec8426c53542fd444c12..3560ac0c554b8e60c1bc961766bcf942
ChunkCoordIntPair chunkcoordintpair = playerchunk.i();
if (!this.playerChunkMap.isOutsideOfRange(playerchunk, chunkcoordintpair, false)) { // Paper - optimise isOutsideOfRange
@@ -1035,7 +1045,11 @@ public class ChunkProviderServer extends IChunkProvider {
@@ -1036,7 +1046,11 @@ public class ChunkProviderServer extends IChunkProvider {
}
}
}
@ -64,6 +64,6 @@ index bc8114715f09496efa8aec8426c53542fd444c12..3560ac0c554b8e60c1bc961766bcf942
+ iterator.finishedIterating();
+ }
+ // Tuinity end - optimise chunk tick iteration
this.world.timings.chunkTicks.stopTiming(); // Paper
this.world.getMethodProfiler().enter("customSpawners");
if (flag1) {
try (co.aikar.timings.Timing ignored = this.world.timings.miscMobSpawning.startTiming()) { // Paper - timings

View File

@ -6,10 +6,10 @@ Subject: [PATCH] Revert getChunkAt(Async) retaining chunks for long periods of
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
index c15777178657d3db16de7237c7ed2127c331166a..e6ea687478a8f7282569a79e4fc29d967cbae7ef 100644
index d312d316ddb7ed59ad918ef2582f98e055c486c3..638f6415382ab40d026ec89fd19cc1a7dd2c3e86 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
@@ -423,14 +423,7 @@ public class CraftWorld implements World {
@@ -434,14 +434,7 @@ public class CraftWorld implements World {
@Override
public Chunk getChunkAt(int x, int z) {
@ -25,7 +25,7 @@ index c15777178657d3db16de7237c7ed2127c331166a..e6ea687478a8f7282569a79e4fc29d96
}
// Paper start
@@ -2659,7 +2652,7 @@ public class CraftWorld implements World {
@@ -2670,7 +2663,7 @@ public class CraftWorld implements World {
}
return this.world.getChunkProvider().getChunkAtAsynchronously(x, z, gen, urgent).thenComposeAsync((either) -> {
net.minecraft.world.level.chunk.Chunk chunk = (net.minecraft.world.level.chunk.Chunk) either.left().orElse(null);

View File

@ -5,7 +5,7 @@ Subject: [PATCH] Prevent unload() calls removing tickets for sync loads
diff --git a/src/main/java/net/minecraft/server/level/ChunkProviderServer.java b/src/main/java/net/minecraft/server/level/ChunkProviderServer.java
index 3560ac0c554b8e60c1bc961766bcf942ba6dd963..aa673cf8a11c17faaa1520eaa9329200453a53ff 100644
index 8d08bd4fb759218706f65c4620d26865d85b14d0..918187226b725125b55c0e3804c2cfec02ae0b3b 100644
--- a/src/main/java/net/minecraft/server/level/ChunkProviderServer.java
+++ b/src/main/java/net/minecraft/server/level/ChunkProviderServer.java
@@ -734,6 +734,8 @@ public class ChunkProviderServer extends IChunkProvider {

View File

@ -19,7 +19,7 @@ index 9d64fffd10ce21a26541198b0c2fd8f0c77f47f1..67980e1dc186c0b458eca9f00acfea7d
private static final Map<Class<?>, String> taskNameCache = new MapMaker().weakKeys().makeMap();
diff --git a/src/main/java/net/minecraft/server/level/ChunkProviderServer.java b/src/main/java/net/minecraft/server/level/ChunkProviderServer.java
index aa673cf8a11c17faaa1520eaa9329200453a53ff..9d26ca0ed8a8ad33091ee5b649289f2fae6c6f74 100644
index 918187226b725125b55c0e3804c2cfec02ae0b3b..e98d266fe7ff1d7c417c3d7b634314451b959e4b 100644
--- a/src/main/java/net/minecraft/server/level/ChunkProviderServer.java
+++ b/src/main/java/net/minecraft/server/level/ChunkProviderServer.java
@@ -840,6 +840,7 @@ public class ChunkProviderServer extends IChunkProvider {

View File

@ -8,7 +8,7 @@ Sync loading the chunk at this stage would cause it to load
older data, as well as screwing our region state.
diff --git a/src/main/java/net/minecraft/server/level/ChunkProviderServer.java b/src/main/java/net/minecraft/server/level/ChunkProviderServer.java
index 9d26ca0ed8a8ad33091ee5b649289f2fae6c6f74..d1fa4602f2f443c19ff69bfbd39cacdb4cbaf2a3 100644
index e98d266fe7ff1d7c417c3d7b634314451b959e4b..334bf09b83172c9a092f7054125f3d871bafcfe2 100644
--- a/src/main/java/net/minecraft/server/level/ChunkProviderServer.java
+++ b/src/main/java/net/minecraft/server/level/ChunkProviderServer.java
@@ -840,6 +840,7 @@ public class ChunkProviderServer extends IChunkProvider {

View File

@ -26,7 +26,7 @@ index 37c3617979da7839ad89883d9800c14c34e8b19b..e3dc57282a559f783c027780740e8089
// Paper end - optimise isOutsideOfRange
// Paper start - optimize chunk status progression without jumping through thread pool
diff --git a/src/main/java/net/minecraft/server/level/PlayerChunkMap.java b/src/main/java/net/minecraft/server/level/PlayerChunkMap.java
index aaf6668050e754cddb977f3bc0897a5df71ac696..76993a8601b251ecce2880820cf5a00496c17f19 100644
index aaf6668050e754cddb977f3bc0897a5df71ac696..13956f6645ae5a0c19ff3f002a76005193db849b 100644
--- a/src/main/java/net/minecraft/server/level/PlayerChunkMap.java
+++ b/src/main/java/net/minecraft/server/level/PlayerChunkMap.java
@@ -250,6 +250,12 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
@ -34,7 +34,7 @@ index aaf6668050e754cddb977f3bc0897a5df71ac696..76993a8601b251ecce2880820cf5a004
public final com.destroystokyo.paper.util.misc.PlayerAreaMap playerViewDistanceNoTickMap;
// Paper end - no-tick view distance
+ // Tuinity start - optimise checkDespawn
+ public static final int GENERAL_AREA_MAP_SQUARE_RADIUS = 38;
+ public static final int GENERAL_AREA_MAP_SQUARE_RADIUS = 40;
+ public static final double GENERAL_AREA_MAP_ACCEPTABLE_SEARCH_RANGE = 16.0 * (GENERAL_AREA_MAP_SQUARE_RADIUS - 1);
+ public static final double GENERAL_AREA_MAP_ACCEPTABLE_SEARCH_RANGE_SQUARED = GENERAL_AREA_MAP_ACCEPTABLE_SEARCH_RANGE * GENERAL_AREA_MAP_ACCEPTABLE_SEARCH_RANGE;
+ public final com.destroystokyo.paper.util.misc.PlayerAreaMap playerGeneralAreaMap;
@ -286,7 +286,7 @@ index 7c9ed41ae67bce0e5e45b9c091180ca3c99668fc..a7f2304acf8ee0a15d6eae8c42060e00
Iterator iterator = this.getPlayers().iterator();
diff --git a/src/main/java/net/minecraft/world/level/SpawnerCreature.java b/src/main/java/net/minecraft/world/level/SpawnerCreature.java
index 24771c3522ea74ac12058591137eafc21adf3762..b3c73c6b4cffa20813355c5f2132fe3eaa134007 100644
index 24771c3522ea74ac12058591137eafc21adf3762..70c110e7e04352edc687dc39f7d939460a4c1e96 100644
--- a/src/main/java/net/minecraft/world/level/SpawnerCreature.java
+++ b/src/main/java/net/minecraft/world/level/SpawnerCreature.java
@@ -250,7 +250,7 @@ public final class SpawnerCreature {
@ -294,7 +294,7 @@ index 24771c3522ea74ac12058591137eafc21adf3762..b3c73c6b4cffa20813355c5f2132fe3e
double d0 = (double) l + 0.5D;
double d1 = (double) i1 + 0.5D;
- EntityHuman entityhuman = worldserver.a(d0, (double) i, d1, -1.0D, false);
+ EntityHuman entityhuman = worldserver.a(d0, (double) i, d1, 576.0D, false); // Tuinity - copied from below method for range, for the love of god we do not need to fucking find the closet player outside of this range - limiting range lets us use the distance map
+ EntityHuman entityhuman = (!(ichunkaccess instanceof Chunk)) ? worldserver.a(d0, (double) i, d1, -1.0D, false) : ((Chunk)ichunkaccess).findNearestPlayer(d0, i, d1, 576.0D, net.minecraft.world.entity.IEntitySelector.notSpectator()); // Tuinity - use chunk's player cache to optimize search in range
if (entityhuman != null) {
double d2 = entityhuman.h(d0, (double) i, d1);
@ -308,13 +308,13 @@ index 24771c3522ea74ac12058591137eafc21adf3762..b3c73c6b4cffa20813355c5f2132fe3e
} else if (worldserver.getSpawn().a((IPosition) (new Vec3D((double) blockposition_mutableblockposition.getX() + 0.5D, (double) blockposition_mutableblockposition.getY(), (double) blockposition_mutableblockposition.getZ() + 0.5D)), 24.0D)) {
return false;
diff --git a/src/main/java/net/minecraft/world/level/World.java b/src/main/java/net/minecraft/world/level/World.java
index cd15f9b17f7fb01428196dba5c50259217b5ad2c..dedcdba593d15b1e2f880ae9eaa00eb6edcd03cf 100644
index cd15f9b17f7fb01428196dba5c50259217b5ad2c..c77b00f30e8edbfcebdc48363de4d5a346abc690 100644
--- a/src/main/java/net/minecraft/world/level/World.java
+++ b/src/main/java/net/minecraft/world/level/World.java
@@ -192,6 +192,65 @@ public abstract class World implements GeneratorAccess, AutoCloseable {
@@ -191,6 +191,63 @@ public abstract class World implements GeneratorAccess, AutoCloseable {
});
}
// Paper end - fix and optimise world upgrading
+ // Tuinity start - optimise checkDespawn
+ public final List<EntityPlayer> getNearbyPlayers(@Nullable Entity source, double sourceX, double sourceY, double sourceZ, double maxRange, @Nullable Predicate<Entity> predicate) {
+ Chunk chunk;
@ -371,12 +371,10 @@ index cd15f9b17f7fb01428196dba5c50259217b5ad2c..dedcdba593d15b1e2f880ae9eaa00eb6
+ public @Nullable EntityHuman a(double d0, double d1, double d2, double d3, @Nullable Predicate<Entity> predicate) {
+ return this.getNearestPlayer(null, d0, d1, d2, d3, predicate);
+ }
+
+ // Tuinity end - optimise checkDespawn
+
protected World(WorldDataMutable worlddatamutable, ResourceKey<World> resourcekey, final DimensionManager dimensionmanager, Supplier<GameProfilerFiller> supplier, boolean flag, boolean flag1, long i, org.bukkit.generator.ChunkGenerator gen, org.bukkit.World.Environment env, java.util.concurrent.Executor executor) { // Paper
this.spigotConfig = new org.spigotmc.SpigotWorldConfig(((net.minecraft.world.level.storage.WorldDataServer) worlddatamutable).getName()); // Spigot
this.paperConfig = new com.destroystokyo.paper.PaperWorldConfig(((net.minecraft.world.level.storage.WorldDataServer) worlddatamutable).getName(), this.spigotConfig); // Paper
diff --git a/src/main/java/net/minecraft/world/level/chunk/Chunk.java b/src/main/java/net/minecraft/world/level/chunk/Chunk.java
index eb1e4a6c89b79fa1e2ec367eba441970c694f2d1..86d326d40a2957a12dc800560487af4bd272cdcb 100644
--- a/src/main/java/net/minecraft/world/level/chunk/Chunk.java

View File

@ -5,10 +5,10 @@ Subject: [PATCH] Remove streams for villager AI
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
index 0cb2306e97e50f6cac308cec1e67348f4a41820f..4a96fc355b3e69ebd6b0b7dea1d687d722f5b810 100644
index 4115cd420ed18a0de91ebce9ba6f6504ca42aa7d..0db18127cc1abbd4d6ffa1d3a019aba9549b09a5 100644
--- a/src/main/java/net/minecraft/world/entity/Entity.java
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
@@ -1681,6 +1681,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, ne
@@ -1712,6 +1712,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, ne
return d3 * d3 + d4 * d4 + d5 * d5;
}

View File

@ -7,7 +7,7 @@ The executor returned is finalizable and of course
that causes issues.
diff --git a/src/main/java/net/minecraft/server/level/PlayerChunkMap.java b/src/main/java/net/minecraft/server/level/PlayerChunkMap.java
index 76993a8601b251ecce2880820cf5a00496c17f19..19fe7b6a60d2f445bec738484c4ef93f73a4acc8 100644
index 13956f6645ae5a0c19ff3f002a76005193db849b..dd70595423e9e39c4ab2d82dfd821280154198c2 100644
--- a/src/main/java/net/minecraft/server/level/PlayerChunkMap.java
+++ b/src/main/java/net/minecraft/server/level/PlayerChunkMap.java
@@ -410,9 +410,10 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {

View File

@ -22,10 +22,10 @@ index e50731723d266ba65b2163df2e935afb8b013a93..a6736d15282715d920bab85eb92074cd
}
value.append("},");
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
index e6ea687478a8f7282569a79e4fc29d967cbae7ef..12e17315040de205b51ec254cd919b51682c0442 100644
index 638f6415382ab40d026ec89fd19cc1a7dd2c3e86..8e259ccad6a494e6a1aaa455bc7a69739de537ab 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
@@ -720,6 +720,30 @@ public class CraftWorld implements World {
@@ -731,6 +731,30 @@ public class CraftWorld implements World {
return ret.entrySet().stream().collect(ImmutableMap.toImmutableMap(Map.Entry::getKey, (entry) -> entry.getValue().build()));
}

View File

@ -6,10 +6,10 @@ Subject: [PATCH] Copy passenger list in enderTeleportTo
Fixes https://github.com/Spottedleaf/Tuinity/issues/208
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
index 4a96fc355b3e69ebd6b0b7dea1d687d722f5b810..505340573c584c5c1970cc2b910af0a3f368fa3c 100644
index 0db18127cc1abbd4d6ffa1d3a019aba9549b09a5..14e7d217cd98b671a2946f269edbbe77451e1cf7 100644
--- a/src/main/java/net/minecraft/world/entity/Entity.java
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
@@ -3176,7 +3176,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, ne
@@ -3208,7 +3208,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, ne
this.recursiveStream().forEach((entity) -> {
worldserver.chunkCheck(entity);
entity.az = true;

View File

@ -4260,7 +4260,7 @@ index 9050ff7180f63c1f5756570446c4d0a8cc767779..9dd0f34aaede93ce4fdff9b41f76166e
this.d &= ~(1 << k);
if (nibblearray != null) {
diff --git a/src/main/java/net/minecraft/server/level/EntityPlayer.java b/src/main/java/net/minecraft/server/level/EntityPlayer.java
index 96ad066d6ed6359fd514c631cc3d51ec7234e6c7..89bd6b1c98e64b0db98d1abc21f308147a8eb6a9 100644
index f29cad4905d21190149b740e958768135e067a93..2c97d8b8fcad6e955876c8953f918146cae234dd 100644
--- a/src/main/java/net/minecraft/server/level/EntityPlayer.java
+++ b/src/main/java/net/minecraft/server/level/EntityPlayer.java
@@ -671,6 +671,185 @@ public class EntityPlayer extends EntityHuman implements ICrafting {
@ -4864,7 +4864,7 @@ index e3dc57282a559f783c027780740e8089e022c838..41a9202fac9fce3bf8cf08682d054548
}
diff --git a/src/main/java/net/minecraft/server/level/PlayerChunkMap.java b/src/main/java/net/minecraft/server/level/PlayerChunkMap.java
index 19fe7b6a60d2f445bec738484c4ef93f73a4acc8..cd9328c8f4d9e28556c8cdd64a5e9aa5cc134aad 100644
index dd70595423e9e39c4ab2d82dfd821280154198c2..d7d3ef4afe663a2eb53665dd7d9d1c8d9ccf66f4 100644
--- a/src/main/java/net/minecraft/server/level/PlayerChunkMap.java
+++ b/src/main/java/net/minecraft/server/level/PlayerChunkMap.java
@@ -1256,7 +1256,7 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {

View File

@ -8,7 +8,7 @@ Instead, only iterate over navigators in the current region that are
eligible for repathing.
diff --git a/src/main/java/net/minecraft/server/level/PlayerChunkMap.java b/src/main/java/net/minecraft/server/level/PlayerChunkMap.java
index cd9328c8f4d9e28556c8cdd64a5e9aa5cc134aad..d3a5e0ecef162b02f652fcc2b909073ea61c15b4 100644
index d7d3ef4afe663a2eb53665dd7d9d1c8d9ccf66f4..ec1690305894ba013e5df97e4243d541b595b7c0 100644
--- a/src/main/java/net/minecraft/server/level/PlayerChunkMap.java
+++ b/src/main/java/net/minecraft/server/level/PlayerChunkMap.java
@@ -353,17 +353,82 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {

View File

@ -25,7 +25,7 @@ index 4ee7070364a8989eece4fa4237b529926821f9c9..f22ab98d2e250081df8949be8a997370
this.a(Long.MAX_VALUE, i, j, flag);
}
diff --git a/src/main/java/net/minecraft/server/level/PlayerChunkMap.java b/src/main/java/net/minecraft/server/level/PlayerChunkMap.java
index d3a5e0ecef162b02f652fcc2b909073ea61c15b4..9d701dfd86e29815d8960beebae363e50c15fbc9 100644
index ec1690305894ba013e5df97e4243d541b595b7c0..1f8df65410c089bcbb5b55530eacb0188c25fc23 100644
--- a/src/main/java/net/minecraft/server/level/PlayerChunkMap.java
+++ b/src/main/java/net/minecraft/server/level/PlayerChunkMap.java
@@ -982,6 +982,7 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {

View File

@ -10,7 +10,7 @@ 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/level/PlayerChunkMap.java b/src/main/java/net/minecraft/server/level/PlayerChunkMap.java
index 9d701dfd86e29815d8960beebae363e50c15fbc9..043047514af477593c83e7474bd4f18cff2e3af1 100644
index 1f8df65410c089bcbb5b55530eacb0188c25fc23..cb1d81d605870f782dc5f35c20735b0ec6d96934 100644
--- a/src/main/java/net/minecraft/server/level/PlayerChunkMap.java
+++ b/src/main/java/net/minecraft/server/level/PlayerChunkMap.java
@@ -1657,9 +1657,7 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {

View File

@ -8,7 +8,7 @@ just so players riding horses or whatever can be seen at the
configured player range.
diff --git a/src/main/java/net/minecraft/server/level/PlayerChunkMap.java b/src/main/java/net/minecraft/server/level/PlayerChunkMap.java
index 043047514af477593c83e7474bd4f18cff2e3af1..bc04262937474fd039c079318c7349b6e7aeefa4 100644
index cb1d81d605870f782dc5f35c20735b0ec6d96934..6fadeddc7aada2a7319a428258c622408b2266a9 100644
--- a/src/main/java/net/minecraft/server/level/PlayerChunkMap.java
+++ b/src/main/java/net/minecraft/server/level/PlayerChunkMap.java
@@ -217,7 +217,7 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
@ -30,7 +30,7 @@ index 043047514af477593c83e7474bd4f18cff2e3af1..bc04262937474fd039c079318c7349b6
}
}
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
index 505340573c584c5c1970cc2b910af0a3f368fa3c..6b6abf401cc7c7c79ffb472c35550596fc8e55b5 100644
index 14e7d217cd98b671a2946f269edbbe77451e1cf7..dc562eecac56c6e71c7ad0293507879ca6b04586 100644
--- a/src/main/java/net/minecraft/world/entity/Entity.java
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
@@ -317,8 +317,21 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, ne

View File

@ -10,7 +10,7 @@ to be unloaded will simply be unloaded next tick, rather than
immediately.
diff --git a/src/main/java/net/minecraft/server/level/ChunkProviderServer.java b/src/main/java/net/minecraft/server/level/ChunkProviderServer.java
index d1fa4602f2f443c19ff69bfbd39cacdb4cbaf2a3..4934d0872af5c9cf6be640bad1f46298ad984337 100644
index 334bf09b83172c9a092f7054125f3d871bafcfe2..0bef938bc07d17a9fb0a550219be40ccf559aded 100644
--- a/src/main/java/net/minecraft/server/level/ChunkProviderServer.java
+++ b/src/main/java/net/minecraft/server/level/ChunkProviderServer.java
@@ -926,6 +926,7 @@ public class ChunkProviderServer extends IChunkProvider {

View File

@ -9,10 +9,10 @@ chunk through it. This should also be OK from a leak prevention/
state desync POV because the TE is getting unloaded anyways.
diff --git a/src/main/java/net/minecraft/server/level/EntityPlayer.java b/src/main/java/net/minecraft/server/level/EntityPlayer.java
index 89bd6b1c98e64b0db98d1abc21f308147a8eb6a9..922e1c48580943d9322c72f5445da39c2bc6c173 100644
index 2c97d8b8fcad6e955876c8953f918146cae234dd..5785397ffc9a041e3e09174cd718ed7f415bdc3f 100644
--- a/src/main/java/net/minecraft/server/level/EntityPlayer.java
+++ b/src/main/java/net/minecraft/server/level/EntityPlayer.java
@@ -1742,6 +1742,17 @@ public class EntityPlayer extends EntityHuman implements ICrafting {
@@ -1743,6 +1743,17 @@ public class EntityPlayer extends EntityHuman implements ICrafting {
this.playerConnection.sendPacket(new PacketPlayOutCloseWindow(this.activeContainer.windowId));
this.o();
}

View File

@ -6,7 +6,7 @@ Subject: [PATCH] Remove chunk lookup & lambda allocation from counting mobs
The chunk lookup doesn't look cheap.
diff --git a/src/main/java/net/minecraft/server/level/ChunkProviderServer.java b/src/main/java/net/minecraft/server/level/ChunkProviderServer.java
index 4934d0872af5c9cf6be640bad1f46298ad984337..9e96376a1d710c0ba7a763868b23fc586253e1a8 100644
index 0bef938bc07d17a9fb0a550219be40ccf559aded..3d2e6771cf5887ffa62259239fabf7934781271f 100644
--- a/src/main/java/net/minecraft/server/level/ChunkProviderServer.java
+++ b/src/main/java/net/minecraft/server/level/ChunkProviderServer.java
@@ -1016,9 +1016,9 @@ public class ChunkProviderServer extends IChunkProvider {
@ -22,7 +22,7 @@ index 4934d0872af5c9cf6be640bad1f46298ad984337..9e96376a1d710c0ba7a763868b23fc58
// Paper end
this.world.timings.countNaturalMobs.stopTiming(); // Paper - timings
diff --git a/src/main/java/net/minecraft/world/level/SpawnerCreature.java b/src/main/java/net/minecraft/world/level/SpawnerCreature.java
index b3c73c6b4cffa20813355c5f2132fe3eaa134007..d497006f05f79015cd791849888832bb53f4a414 100644
index 70c110e7e04352edc687dc39f7d939460a4c1e96..9b55da1f4d40ae36b2d2b8e7b3b18989dc4f6006 100644
--- a/src/main/java/net/minecraft/world/level/SpawnerCreature.java
+++ b/src/main/java/net/minecraft/world/level/SpawnerCreature.java
@@ -64,9 +64,9 @@ public final class SpawnerCreature {

View File

@ -7,7 +7,7 @@ Reference2BooleanOpenHashMap is going to have
better lookups than HashMap.
diff --git a/src/main/java/net/minecraft/server/level/PlayerChunkMap.java b/src/main/java/net/minecraft/server/level/PlayerChunkMap.java
index bc04262937474fd039c079318c7349b6e7aeefa4..25992b13a0212e51012eb9e208f2b762b643bf57 100644
index 6fadeddc7aada2a7319a428258c622408b2266a9..4b53d12872a0e1665e62d0be85a1c47aefb3601a 100644
--- a/src/main/java/net/minecraft/server/level/PlayerChunkMap.java
+++ b/src/main/java/net/minecraft/server/level/PlayerChunkMap.java
@@ -103,6 +103,7 @@ import net.minecraft.world.level.storage.WorldDataServer;

View File

@ -1203,7 +1203,7 @@ index c474ee61d98772a2852c44dec1c4a1037472ed2c..ad90735b5daa658cdd5467eadcb29183
class b extends ChunkMap {
diff --git a/src/main/java/net/minecraft/server/level/ChunkProviderServer.java b/src/main/java/net/minecraft/server/level/ChunkProviderServer.java
index 9e96376a1d710c0ba7a763868b23fc586253e1a8..fe040615ff03478a20cdf8376f89a6b7d100ba61 100644
index 3d2e6771cf5887ffa62259239fabf7934781271f..1b86c032fde3409cb89b849b9ba094af82cd9269 100644
--- a/src/main/java/net/minecraft/server/level/ChunkProviderServer.java
+++ b/src/main/java/net/minecraft/server/level/ChunkProviderServer.java
@@ -946,6 +946,7 @@ public class ChunkProviderServer extends IChunkProvider {
@ -1214,7 +1214,7 @@ index 9e96376a1d710c0ba7a763868b23fc586253e1a8..fe040615ff03478a20cdf8376f89a6b7
this.tickChunks();
this.world.timings.chunks.stopTiming(); // Paper - timings
this.world.timings.doChunkUnload.startTiming(); // Spigot
@@ -1241,6 +1242,7 @@ public class ChunkProviderServer extends IChunkProvider {
@@ -1243,6 +1244,7 @@ public class ChunkProviderServer extends IChunkProvider {
@Override
protected boolean executeNext() {
com.tuinity.tuinity.util.TickThread.softEnsureTickThread("Cannot execute chunk tasks off-main thread");// Tuinity
@ -1223,7 +1223,7 @@ index 9e96376a1d710c0ba7a763868b23fc586253e1a8..fe040615ff03478a20cdf8376f89a6b7
try {
boolean execChunkTask = com.destroystokyo.paper.io.chunk.ChunkTaskManager.pollChunkWaitQueue() || ChunkProviderServer.this.world.asyncChunkTaskManager.pollNextChunkTask(); // Paper
diff --git a/src/main/java/net/minecraft/server/level/EntityPlayer.java b/src/main/java/net/minecraft/server/level/EntityPlayer.java
index 922e1c48580943d9322c72f5445da39c2bc6c173..32e400632ec1e61374f772c6262580f84a5b2288 100644
index 5785397ffc9a041e3e09174cd718ed7f415bdc3f..c813077455a463dd558076d1d7474829f76b905a 100644
--- a/src/main/java/net/minecraft/server/level/EntityPlayer.java
+++ b/src/main/java/net/minecraft/server/level/EntityPlayer.java
@@ -262,7 +262,7 @@ public class EntityPlayer extends EntityHuman implements ICrafting {
@ -1265,7 +1265,7 @@ index a8edac296cbdb053bca4b56a890c3e9e5544d3a6..d9b134302f739efd93f50e93c8730b47
}
}
diff --git a/src/main/java/net/minecraft/server/level/PlayerChunkMap.java b/src/main/java/net/minecraft/server/level/PlayerChunkMap.java
index 25992b13a0212e51012eb9e208f2b762b643bf57..7e24be3a16560c93863c2624a413e8dd7f98c5b4 100644
index 4b53d12872a0e1665e62d0be85a1c47aefb3601a..c6c34babd618d201bab26eb9e9edaa6e68d510bf 100644
--- a/src/main/java/net/minecraft/server/level/PlayerChunkMap.java
+++ b/src/main/java/net/minecraft/server/level/PlayerChunkMap.java
@@ -236,20 +236,7 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
@ -1289,7 +1289,7 @@ index 25992b13a0212e51012eb9e208f2b762b643bf57..7e24be3a16560c93863c2624a413e8dd
+ public final com.tuinity.tuinity.chunk.PlayerChunkLoader playerChunkManager = new com.tuinity.tuinity.chunk.PlayerChunkLoader(this, this.pooledLinkedPlayerHashSets); // Tuinity - replace chunk loader
// Paper end - no-tick view distance
// Tuinity start - optimise checkDespawn
public static final int GENERAL_AREA_MAP_SQUARE_RADIUS = 38;
public static final int GENERAL_AREA_MAP_SQUARE_RADIUS = 40;
@@ -268,24 +255,14 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
com.destroystokyo.paper.util.misc.PlayerAreaMap trackMap = this.playerEntityTrackerTrackMaps[i];
int trackRange = this.entityTrackerTrackRanges[i];
@ -1616,7 +1616,7 @@ index c296fcf80c2f3f210fa020416973ec8d5db541ba..07160de8725787551df327c0790b2d6e
double deltaX = this.locX() - player.locX();
double deltaZ = this.locZ() - player.locZ();
diff --git a/src/main/java/net/minecraft/world/entity/boss/wither/EntityWither.java b/src/main/java/net/minecraft/world/entity/boss/wither/EntityWither.java
index 229eabe0510e6c3660236ed0fb3e80d41074642c..930fc752ec0a988b17bc556cd428161638a14f27 100644
index 635b1493eeb6c13cc5ef489bd747ac557bc131d8..3cfe3173f710fc54ec77a47a9cbb8f5ff6a6f0b6 100644
--- a/src/main/java/net/minecraft/world/entity/boss/wither/EntityWither.java
+++ b/src/main/java/net/minecraft/world/entity/boss/wither/EntityWither.java
@@ -264,9 +264,9 @@ public class EntityWither extends EntityMonster implements IRangedEntity {
@ -1648,10 +1648,10 @@ index f74685a7cdb905af8e9712ca8597e7ed3dc8b120..feedbd8c97c1b1c56eaff359e6a94069
double deltaZ = soundPos.getZ() - player.locZ();
double distanceSquared = deltaX * deltaX + deltaZ * deltaZ;
diff --git a/src/main/java/net/minecraft/world/level/World.java b/src/main/java/net/minecraft/world/level/World.java
index dedcdba593d15b1e2f880ae9eaa00eb6edcd03cf..276b1f0c9c9af7db31fba9be0593ae9def540caf 100644
index c77b00f30e8edbfcebdc48363de4d5a346abc690..cb8064df7e9f1b8b4d4292486e2193680d83663c 100644
--- a/src/main/java/net/minecraft/world/level/World.java
+++ b/src/main/java/net/minecraft/world/level/World.java
@@ -615,7 +615,7 @@ public abstract class World implements GeneratorAccess, AutoCloseable {
@@ -613,7 +613,7 @@ public abstract class World implements GeneratorAccess, AutoCloseable {
this.notify(blockposition, iblockdata1, iblockdata, i);
// Paper start - per player view distance - allow block updates for non-ticking chunks in player view distance
// if copied from above
@ -1750,10 +1750,10 @@ index 3fe1508b091e1fd0325eae50138d02fa6445c9ff..a19a26a88f247d359354902efeece992
return new Vec3D((double) baseblockposition.getX() + 0.5D, (double) baseblockposition.getY() + 0.5D, (double) baseblockposition.getZ() + 0.5D);
}
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
index 12e17315040de205b51ec254cd919b51682c0442..3f9be0d2d6be83893b8835acfec93d2c1e28ed3d 100644
index 8e259ccad6a494e6a1aaa455bc7a69739de537ab..bae07ab043040c1f242271d58fc2f611c403ed46 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
@@ -2701,14 +2701,14 @@ public class CraftWorld implements World {
@@ -2712,14 +2712,14 @@ public class CraftWorld implements World {
throw new IllegalArgumentException("View distance " + viewDistance + " is out of range of [2, 32]");
}
PlayerChunkMap chunkMap = getHandle().getChunkProvider().playerChunkMap;
@ -1770,7 +1770,7 @@ index 12e17315040de205b51ec254cd919b51682c0442..3f9be0d2d6be83893b8835acfec93d2c
}
@Override
@@ -2717,11 +2717,22 @@ public class CraftWorld implements World {
@@ -2728,11 +2728,22 @@ public class CraftWorld implements World {
throw new IllegalArgumentException("View distance " + viewDistance + " is out of range of [2, 32]");
}
PlayerChunkMap chunkMap = getHandle().getChunkProvider().playerChunkMap;

View File

@ -22,7 +22,7 @@ index 848eb25ed0640db61a0f28bc26ddabd0444e9ed4..ec2b9995f1bf0f6cf029df7bfac526c2
continue;
}
diff --git a/src/main/java/net/minecraft/server/level/PlayerChunkMap.java b/src/main/java/net/minecraft/server/level/PlayerChunkMap.java
index 7e24be3a16560c93863c2624a413e8dd7f98c5b4..4df1be8091af0ed9d3403f217b481645e24020e8 100644
index c6c34babd618d201bab26eb9e9edaa6e68d510bf..d827e18d8c3b9b5869dbb1e233f415ba0efb7c1b 100644
--- a/src/main/java/net/minecraft/server/level/PlayerChunkMap.java
+++ b/src/main/java/net/minecraft/server/level/PlayerChunkMap.java
@@ -116,8 +116,9 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
@ -166,7 +166,7 @@ index 7e24be3a16560c93863c2624a413e8dd7f98c5b4..4df1be8091af0ed9d3403f217b481645
protected PlayerChunkMap.a e() {
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
index 3f9be0d2d6be83893b8835acfec93d2c1e28ed3d..4f296f09562fb269db4137efd325e2c258f4b90b 100644
index bae07ab043040c1f242271d58fc2f611c403ed46..3b6b1f3229b07c84d99db652e01661bcc78368fd 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
@@ -298,7 +298,7 @@ public class CraftWorld implements World {
@ -187,7 +187,7 @@ index 3f9be0d2d6be83893b8835acfec93d2c1e28ed3d..4f296f09562fb269db4137efd325e2c2
if (chunkHolder.getChunk() != null) {
++ret;
}
@@ -471,13 +471,16 @@ public class CraftWorld implements World {
@@ -482,13 +482,16 @@ public class CraftWorld implements World {
public Chunk[] getLoadedChunks() {
// Paper start
if (Thread.currentThread() != world.getMinecraftWorld().serverThread) {

View File

@ -1,101 +0,0 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Spottedleaf <Spottedleaf@users.noreply.github.com>
Date: Tue, 1 Jun 2021 15:35:31 -0700
Subject: [PATCH] Fix dangerous end portal logic
End portals could teleport entities during move calls. Stupid
logic given the caller will never expect that kind of thing,
and will result in all kinds of dupes.
Move the tick logic into the post tick, where portaling was
designed to happen in the first place.
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
index 6b6abf401cc7c7c79ffb472c35550596fc8e55b5..c3d4eda866016c4ac08d4c5d771e39dcac5a3a60 100644
--- a/src/main/java/net/minecraft/world/entity/Entity.java
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
@@ -370,6 +370,38 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, ne
}
// Tuinity end
+ // Tuinity start - make end portalling safe
+ public BlockPosition portalBlock;
+ public WorldServer portalWorld;
+ public void tickEndPortal() {
+ BlockPosition pos = this.portalBlock;
+ WorldServer world = this.portalWorld;
+ this.portalBlock = null;
+ this.portalWorld = null;
+
+ if (pos == null || world == null || world != this.world) {
+ return;
+ }
+
+ if (this.isPassenger() || this.isVehicle() || !this.canPortal() || this.dead || !this.valid || !this.isAlive()) {
+ return;
+ }
+
+ ResourceKey<World> resourcekey = world.getTypeKey() == DimensionManager.THE_END ? World.OVERWORLD : World.THE_END; // CraftBukkit - SPIGOT-6152: send back to main overworld in custom ends
+ WorldServer worldserver = world.getMinecraftServer().getWorldServer(resourcekey);
+
+ org.bukkit.event.entity.EntityPortalEnterEvent event = new org.bukkit.event.entity.EntityPortalEnterEvent(this.getBukkitEntity(), new org.bukkit.Location(world.getWorld(), pos.getX(), pos.getY(), pos.getZ()));
+ event.callEvent();
+
+ if (this instanceof EntityPlayer) {
+ ((EntityPlayer)this).b(worldserver, PlayerTeleportEvent.TeleportCause.END_PORTAL);
+ return;
+ }
+ // CraftBukkit end
+ this.b(worldserver);
+ }
+ // Tuinity end - make end portalling safe
+
public Entity(EntityTypes<?> entitytypes, World world) {
this.id = Entity.entityCount.incrementAndGet();
this.passengers = Lists.newArrayList();
@@ -2541,6 +2573,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, ne
}
this.E();
+ this.tickEndPortal(); // Tuinity - make end portalling safe
}
}
diff --git a/src/main/java/net/minecraft/world/entity/boss/wither/EntityWither.java b/src/main/java/net/minecraft/world/entity/boss/wither/EntityWither.java
index 930fc752ec0a988b17bc556cd428161638a14f27..c056c4c09297602c1fb3c1040ac2ab0ec4c0139b 100644
--- a/src/main/java/net/minecraft/world/entity/boss/wither/EntityWither.java
+++ b/src/main/java/net/minecraft/world/entity/boss/wither/EntityWither.java
@@ -603,7 +603,7 @@ public class EntityWither extends EntityMonster implements IRangedEntity {
@Override
public boolean canPortal() {
- return canPortal; // Paper
+ return super.canPortal() && canPortal; // Paper // Tuinity - ensure super is called
}
@Override
diff --git a/src/main/java/net/minecraft/world/level/block/BlockEnderPortal.java b/src/main/java/net/minecraft/world/level/block/BlockEnderPortal.java
index ed916f69747b44b75eb06db4cf27adaf5e47fd1e..2ad7d6809beff6b5a36b32ba29d05447139a415e 100644
--- a/src/main/java/net/minecraft/world/level/block/BlockEnderPortal.java
+++ b/src/main/java/net/minecraft/world/level/block/BlockEnderPortal.java
@@ -52,16 +52,10 @@ public class BlockEnderPortal extends BlockTileEntity {
// return; // CraftBukkit - always fire event in case plugins wish to change it
}
- // CraftBukkit start - Entity in portal
- EntityPortalEnterEvent event = new EntityPortalEnterEvent(entity.getBukkitEntity(), new org.bukkit.Location(world.getWorld(), blockposition.getX(), blockposition.getY(), blockposition.getZ()));
- world.getServer().getPluginManager().callEvent(event);
-
- if (entity instanceof EntityPlayer) {
- ((EntityPlayer) entity).b(worldserver, PlayerTeleportEvent.TeleportCause.END_PORTAL);
- return;
- }
- // CraftBukkit end
- entity.b(worldserver);
+ // Tuinity start - move all of this logic into portal tick
+ entity.portalWorld = ((WorldServer)world);
+ entity.portalBlock = blockposition.immutableCopy();
+ // Tuinity end - move all of this logic into portal tick
}
}

View File

@ -6,7 +6,7 @@ Subject: [PATCH] Suspected plugins report
Added "Suspected Plugins" to Watchdog, crash reports and exception messages
diff --git a/src/main/java/org/bukkit/plugin/SimplePluginManager.java b/src/main/java/org/bukkit/plugin/SimplePluginManager.java
index d1c35e4cf778070f8d18bbe0af8d423334c6dfbf..d87c8e97a4a73f8df1f5badc7bdfea18a54e406b 100644
index 0e25119564dfa9cb12f3c5dc5f653d7f2c147a9d..747494010c85bded946451375d38b36c85f72986 100644
--- a/src/main/java/org/bukkit/plugin/SimplePluginManager.java
+++ b/src/main/java/org/bukkit/plugin/SimplePluginManager.java
@@ -577,7 +577,11 @@ public final class SimplePluginManager implements PluginManager {
@ -35,7 +35,7 @@ index d1c35e4cf778070f8d18bbe0af8d423334c6dfbf..d87c8e97a4a73f8df1f5badc7bdfea18
if (!(event instanceof ServerExceptionEvent)) { // We don't want to cause an endless event loop
callEvent(new ServerExceptionEvent(new ServerEventException(msg, ex, registration.getPlugin(), registration.getListener(), event)));
}
@@ -922,4 +930,10 @@ public final class SimplePluginManager implements PluginManager {
@@ -923,4 +931,10 @@ public final class SimplePluginManager implements PluginManager {
}
// Paper end

View File

@ -60,7 +60,7 @@ index 5936075251ef3d6dda3e93866009d0e996598698..b10b1960260d89b5e5c7b960f5bc18ec
playerconnection.sendPacket(new PacketPlayOutAbilities(entityplayer.abilities));
playerconnection.sendPacket(new PacketPlayOutHeldItemSlot(entityplayer.inventory.itemInHandIndex));
diff --git a/src/main/java/net/minecraft/world/entity/EntityLiving.java b/src/main/java/net/minecraft/world/entity/EntityLiving.java
index 42f4aaeeceb628007ded00353fd26aa461f39ea9..21010824d1c343e5a58cce7fb602bd04783a89d1 100644
index ee2922d68cb1970c7b3b0b4b03d870a46ff63d71..1c1ad06fe8699fbcf922cede825cdfdc65ba6a21 100644
--- a/src/main/java/net/minecraft/world/entity/EntityLiving.java
+++ b/src/main/java/net/minecraft/world/entity/EntityLiving.java
@@ -362,6 +362,7 @@ public abstract class EntityLiving extends Entity {

View File

@ -59,7 +59,7 @@ index 9a008acd3e6dd5522d163dfbe09c611f6f717d4e..a088b8f84f01ce3863ae949f4cd3d7ae
}
\ No newline at end of file
diff --git a/src/main/java/net/minecraft/world/entity/EntityLiving.java b/src/main/java/net/minecraft/world/entity/EntityLiving.java
index 21010824d1c343e5a58cce7fb602bd04783a89d1..2ed7ad2e7f29c5d6f1b753c8e36c6ccb8486a85e 100644
index 1c1ad06fe8699fbcf922cede825cdfdc65ba6a21..8ca4765005271fbb234a9f1512045acaa1bf4f92 100644
--- a/src/main/java/net/minecraft/world/entity/EntityLiving.java
+++ b/src/main/java/net/minecraft/world/entity/EntityLiving.java
@@ -3001,7 +3001,7 @@ public abstract class EntityLiving extends Entity {

View File

@ -5,7 +5,7 @@ Subject: [PATCH] Modify default configs
diff --git a/src/main/java/com/destroystokyo/paper/PaperConfig.java b/src/main/java/com/destroystokyo/paper/PaperConfig.java
index efc1e42d606e1c9feb1a4871c0714933ae92a1b2..496fb544239262b0fc7594d37751c350d8815b0c 100644
index 7acf077bc131af718c7548cc29deef558c04e463..2690504fa53edd3e899100957e1f9da109830057 100644
--- a/src/main/java/com/destroystokyo/paper/PaperConfig.java
+++ b/src/main/java/com/destroystokyo/paper/PaperConfig.java
@@ -201,7 +201,7 @@ public class PaperConfig {
@ -18,10 +18,10 @@ index efc1e42d606e1c9feb1a4871c0714933ae92a1b2..496fb544239262b0fc7594d37751c350
TimingsManager.privacy = getBoolean("timings.server-name-privacy", false);
TimingsManager.hiddenConfigs = getList("timings.hidden-config-entries", Lists.newArrayList("database", "settings.bungeecord-addresses", "settings.velocity-support.secret"));
diff --git a/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java b/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java
index 1a368df78feb4afdf522527af5ed1652afffcd15..56fa8844daf94f007a51ad7ae3f8307706e66f60 100644
index 5c91c007691efeea1d4383efcd1ca06990d0660c..f64c805cba64350996238228aa0f8fd6e8fa17c7 100644
--- a/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java
+++ b/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java
@@ -633,7 +633,7 @@ public class PaperWorldConfig {
@@ -635,7 +635,7 @@ public class PaperWorldConfig {
}
public boolean cooldownHopperWhenFull = true;

View File

@ -65,7 +65,7 @@ index 8078e4f5b79eaada03508265ba6b81db636e822a..b2d26289a6f501b093ec229394f75864
};
diff --git a/src/main/java/net/minecraft/world/entity/EntityLiving.java b/src/main/java/net/minecraft/world/entity/EntityLiving.java
index 2ed7ad2e7f29c5d6f1b753c8e36c6ccb8486a85e..96f34b5d02a7cd97432161f979d6c10b0a2abd63 100644
index 8ca4765005271fbb234a9f1512045acaa1bf4f92..92447667f53b86c3a7b0f5f462ba37ffd3007dc8 100644
--- a/src/main/java/net/minecraft/world/entity/EntityLiving.java
+++ b/src/main/java/net/minecraft/world/entity/EntityLiving.java
@@ -2708,10 +2708,12 @@ public abstract class EntityLiving extends Entity {

View File

@ -5,7 +5,7 @@ Subject: [PATCH] Optimize TileEntity load/unload
diff --git a/src/main/java/net/minecraft/world/level/World.java b/src/main/java/net/minecraft/world/level/World.java
index a4d0102e0020d62de3affdd819001c08202e0616..b3b15c9f7e4bcce74a9232dd689e932db83b85be 100644
index 313d27714b98c58627d1ce247bf63384929a746f..b8156023746bda827f19f4e972c3bdb56340f046 100644
--- a/src/main/java/net/minecraft/world/level/World.java
+++ b/src/main/java/net/minecraft/world/level/World.java
@@ -105,8 +105,8 @@ public abstract class World implements GeneratorAccess, AutoCloseable {

View File

@ -5,10 +5,10 @@ Subject: [PATCH] Fix lead fall dmg config
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
index 939f042c7c5abc0c71880b61d6ebf8bd1d4d5c8f..8300252d84c86668cec58b390dc0aa8c41b5413d 100644
index 814cd9d46917cee21e3c715b62e82fa2e4547e33..30168844c52d57ab20abd6a1592aabfa658f714a 100644
--- a/src/main/java/net/minecraft/world/entity/Entity.java
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
@@ -1452,6 +1452,8 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, ne
@@ -1451,6 +1451,8 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, ne
this.fallDistance = 0.0F;
} else if (d0 < 0.0D) {
this.fallDistance = (float) ((double) this.fallDistance - d0);

View File

@ -6,7 +6,7 @@ Subject: [PATCH] Configurable criterion triggers
This patch adds toggles for three criterion triggers that are called every tick. These can be very unnecessary, and especially in the case of CriterionTriggerEnterBlock, quite heavy.
diff --git a/src/main/java/net/minecraft/server/level/EntityPlayer.java b/src/main/java/net/minecraft/server/level/EntityPlayer.java
index 32e400632ec1e61374f772c6262580f84a5b2288..7bae97fb0a4bda34a6edeb8699ff62b81b751d62 100644
index c813077455a463dd558076d1d7474829f76b905a..742d802d63963778454e41e5b19a3d889c544efc 100644
--- a/src/main/java/net/minecraft/server/level/EntityPlayer.java
+++ b/src/main/java/net/minecraft/server/level/EntityPlayer.java
@@ -577,6 +577,7 @@ public class EntityPlayer extends EntityHuman implements ICrafting {

View File

@ -108,10 +108,10 @@ index 69a982832489fc78fd46418341bdcba1e2be69e9..7bcaa5be42383cd1f1cfce6457c235a8
ChatComponentText chatcomponenttext = new ChatComponentText("Internal server error");
diff --git a/src/main/java/net/minecraft/world/level/World.java b/src/main/java/net/minecraft/world/level/World.java
index b3b15c9f7e4bcce74a9232dd689e932db83b85be..93df6da952081969f280462d7515e28782a794f0 100644
index b8156023746bda827f19f4e972c3bdb56340f046..5166c78fe1db631a988b6567932e1be685ebb19c 100644
--- a/src/main/java/net/minecraft/world/level/World.java
+++ b/src/main/java/net/minecraft/world/level/World.java
@@ -1051,6 +1051,10 @@ public abstract class World implements GeneratorAccess, AutoCloseable {
@@ -1049,6 +1049,10 @@ public abstract class World implements GeneratorAccess, AutoCloseable {
// Paper start - Prevent tile entity and entity crashes
String msg = "TileEntity threw exception at " + tileentity.getWorld().getWorld().getName() + ":" + tileentity.getPosition().getX() + "," + tileentity.getPosition().getY() + "," + tileentity.getPosition().getZ();
System.err.println(msg);

View File

@ -42,7 +42,7 @@ index 0000000000000000000000000000000000000000..0d99f3b4930045632d88fa4acb3b8159
+}
\ No newline at end of file
diff --git a/src/main/java/net/minecraft/server/level/EntityPlayer.java b/src/main/java/net/minecraft/server/level/EntityPlayer.java
index 7bae97fb0a4bda34a6edeb8699ff62b81b751d62..6c8698914231107ce395c6ac42f0f951030da50a 100644
index 742d802d63963778454e41e5b19a3d889c544efc..13264b642a065dbbf908cef0a0f086ee666b24c7 100644
--- a/src/main/java/net/minecraft/server/level/EntityPlayer.java
+++ b/src/main/java/net/minecraft/server/level/EntityPlayer.java
@@ -654,6 +654,8 @@ public class EntityPlayer extends EntityHuman implements ICrafting {
@ -70,7 +70,7 @@ index 861c834e9bfa653e78bc884d5a9712b990a7b632..49b8048de109625f82988ad3baad7708
public static final BlockPosition a = new BlockPosition(100, 50, 0);
private static final Logger LOGGER = LogManager.getLogger();
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
index 8300252d84c86668cec58b390dc0aa8c41b5413d..b3762831a4eb1ad81083212739e339d71658e9d5 100644
index 30168844c52d57ab20abd6a1592aabfa658f714a..3475e74ad2a3d9cf6088e51e55c50bcac28e00b5 100644
--- a/src/main/java/net/minecraft/world/entity/Entity.java
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
@@ -141,9 +141,12 @@ import org.bukkit.event.entity.EntityPoseChangeEvent;
@ -86,7 +86,7 @@ index 8300252d84c86668cec58b390dc0aa8c41b5413d..b3762831a4eb1ad81083212739e339d7
// CraftBukkit start
private static final int CURRENT_LEVEL = 2;
public boolean preserveMotion = true; // Paper - keep initial motion on first setPositionRotation
@@ -828,6 +831,12 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, ne
@@ -827,6 +830,12 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, ne
}
// Tuinity end - detailed watchdog information
public void move(EnumMoveType enummovetype, Vec3D vec3d) {
@ -99,7 +99,7 @@ index 8300252d84c86668cec58b390dc0aa8c41b5413d..b3762831a4eb1ad81083212739e339d7
// Tuinity start - detailed watchdog information
com.tuinity.tuinity.util.TickThread.ensureTickThread("Cannot move an entity off-main");
synchronized (this.posLock) {
@@ -878,7 +887,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, ne
@@ -877,7 +886,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, ne
this.v = vec3d.y != vec3d1.y;
this.onGround = this.v && vec3d.y < 0.0D;
BlockPosition blockposition = this.ap();
@ -108,7 +108,7 @@ index 8300252d84c86668cec58b390dc0aa8c41b5413d..b3762831a4eb1ad81083212739e339d7
this.a(vec3d1.y, this.onGround, iblockdata, blockposition);
Vec3D vec3d2 = this.getMot();
@@ -992,9 +1001,9 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, ne
@@ -991,9 +1000,9 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, ne
int k = MathHelper.floor(this.loc.z);
BlockPosition blockposition = new BlockPosition(i, j, k);
@ -120,7 +120,7 @@ index 8300252d84c86668cec58b390dc0aa8c41b5413d..b3762831a4eb1ad81083212739e339d7
Block block = iblockdata.getBlock();
if (block.a((Tag) TagsBlock.FENCES) || block.a((Tag) TagsBlock.WALLS) || block instanceof BlockFenceGate) {
@@ -1006,17 +1015,21 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, ne
@@ -1005,17 +1014,21 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, ne
}
protected float getBlockJumpFactor() {
@ -146,7 +146,7 @@ index 8300252d84c86668cec58b390dc0aa8c41b5413d..b3762831a4eb1ad81083212739e339d7
}
protected BlockPosition as() {
@@ -1361,7 +1374,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, ne
@@ -1360,7 +1373,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, ne
for (int i = blockposition.getX(); i <= blockposition1.getX(); ++i) {
// Tuinity end - reorder iteration to more cache aware
blockposition_mutableblockposition.d(i, j, k);
@ -155,7 +155,7 @@ index 8300252d84c86668cec58b390dc0aa8c41b5413d..b3762831a4eb1ad81083212739e339d7
// Tuinity start - move fire checking in here - reuse getType from this method
if (checkFire) {
@@ -1397,7 +1410,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, ne
@@ -1396,7 +1409,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, ne
protected void b(BlockPosition blockposition, IBlockData iblockdata) {
if (!iblockdata.getMaterial().isLiquid()) {
@ -164,7 +164,7 @@ index 8300252d84c86668cec58b390dc0aa8c41b5413d..b3762831a4eb1ad81083212739e339d7
SoundEffectType soundeffecttype = iblockdata1.a(Blocks.SNOW) ? iblockdata1.getStepSound() : iblockdata.getStepSound();
this.playSound(soundeffecttype.getStepSound(), soundeffecttype.getVolume() * 0.15F, soundeffecttype.getPitch());
@@ -1488,7 +1501,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, ne
@@ -1487,7 +1500,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, ne
public final boolean isInBubbleColumn() { return k(); } // Paper - OBFHELPER
private boolean k() {
@ -173,7 +173,7 @@ index 8300252d84c86668cec58b390dc0aa8c41b5413d..b3762831a4eb1ad81083212739e339d7
}
public boolean isInWaterOrRain() {
@@ -1559,7 +1572,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, ne
@@ -1558,7 +1571,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, ne
}
BlockPosition blockposition = new BlockPosition(this.locX(), d0, this.locZ());
@ -182,7 +182,7 @@ index 8300252d84c86668cec58b390dc0aa8c41b5413d..b3762831a4eb1ad81083212739e339d7
Iterator iterator = TagsFluid.b().iterator();
Tag tag;
@@ -1617,7 +1630,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, ne
@@ -1616,7 +1629,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, ne
}
protected IBlockData aN() {
@ -191,7 +191,7 @@ index 8300252d84c86668cec58b390dc0aa8c41b5413d..b3762831a4eb1ad81083212739e339d7
}
public boolean aO() {
@@ -1629,7 +1642,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, ne
@@ -1628,7 +1641,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, ne
int j = MathHelper.floor(this.locY() - 0.20000000298023224D);
int k = MathHelper.floor(this.locZ());
BlockPosition blockposition = new BlockPosition(i, j, k);
@ -200,7 +200,7 @@ index 8300252d84c86668cec58b390dc0aa8c41b5413d..b3762831a4eb1ad81083212739e339d7
if (iblockdata.h() != EnumRenderType.INVISIBLE) {
Vec3D vec3d = this.getMot();
@@ -2863,7 +2876,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, ne
@@ -2862,7 +2875,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, ne
EnumDirection enumdirection1 = aenumdirection[j];
blockposition_mutableblockposition.a((BaseBlockPosition) blockposition, enumdirection1);
@ -209,7 +209,7 @@ index 8300252d84c86668cec58b390dc0aa8c41b5413d..b3762831a4eb1ad81083212739e339d7
double d4 = vec3d.a(enumdirection1.n());
double d5 = enumdirection1.e() == EnumDirection.EnumAxisDirection.POSITIVE ? 1.0D - d4 : d4;
@@ -3077,14 +3090,14 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, ne
@@ -3076,14 +3089,14 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, ne
return (ShapeDetectorShape) this.findOrCreatePortal(worldserver, blockposition, flag2, event.getSearchRadius(), event.getCanCreatePortal(), event.getCreationRadius()).map((blockutil_rectangle) -> {
// CraftBukkit end
@ -226,7 +226,7 @@ index 8300252d84c86668cec58b390dc0aa8c41b5413d..b3762831a4eb1ad81083212739e339d7
});
vec3d = this.a(enumdirection_enumaxis, blockutil_rectangle1);
@@ -3439,6 +3452,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, ne
@@ -3438,6 +3451,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, ne
}
public boolean cl() {
@ -234,7 +234,7 @@ index 8300252d84c86668cec58b390dc0aa8c41b5413d..b3762831a4eb1ad81083212739e339d7
boolean flag = this.au;
this.au = false;
@@ -3637,7 +3651,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, ne
@@ -3636,7 +3650,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, ne
for (int i2 = k; i2 < l; ++i2) {
for (int j2 = i1; j2 < j1; ++j2) {
blockposition_mutableblockposition.d(l1, i2, j2);
@ -244,7 +244,7 @@ index 8300252d84c86668cec58b390dc0aa8c41b5413d..b3762831a4eb1ad81083212739e339d7
if (fluid.a(tag)) {
double d2 = (double) ((float) i2 + fluid.getHeight(this.world, blockposition_mutableblockposition));
diff --git a/src/main/java/net/minecraft/world/entity/EntityLiving.java b/src/main/java/net/minecraft/world/entity/EntityLiving.java
index 96f34b5d02a7cd97432161f979d6c10b0a2abd63..f37094c158ec564133008d5cf195fd670c8639c4 100644
index 92447667f53b86c3a7b0f5f462ba37ffd3007dc8..4de845117c06915943d517bdab7fcc3651589dcf 100644
--- a/src/main/java/net/minecraft/world/entity/EntityLiving.java
+++ b/src/main/java/net/minecraft/world/entity/EntityLiving.java
@@ -139,6 +139,7 @@ import org.bukkit.event.entity.EntityTeleportEvent;
@ -342,7 +342,7 @@ index 96f34b5d02a7cd97432161f979d6c10b0a2abd63..f37094c158ec564133008d5cf195fd67
f = this.onGround ? f5 * 0.91F : 0.91F;
Vec3D vec3d6 = this.a(vec3d, f5);
@@ -3501,7 +3504,7 @@ public abstract class EntityLiving extends Entity {
@@ -3502,7 +3505,7 @@ public abstract class EntityLiving extends Entity {
while (!flag2 && blockposition.getY() > 0) {
BlockPosition blockposition1 = blockposition.down();
@ -351,7 +351,7 @@ index 96f34b5d02a7cd97432161f979d6c10b0a2abd63..f37094c158ec564133008d5cf195fd67
if (iblockdata.getMaterial().isSolid()) {
flag2 = true;
@@ -3613,7 +3616,7 @@ public abstract class EntityLiving extends Entity {
@@ -3614,7 +3617,7 @@ public abstract class EntityLiving extends Entity {
this.stopRiding();
}
@ -360,7 +360,7 @@ index 96f34b5d02a7cd97432161f979d6c10b0a2abd63..f37094c158ec564133008d5cf195fd67
if (iblockdata.getBlock() instanceof BlockBed) {
this.world.setTypeAndData(blockposition, (IBlockData) iblockdata.set(BlockBed.OCCUPIED, true), 3);
@@ -3632,7 +3635,7 @@ public abstract class EntityLiving extends Entity {
@@ -3633,7 +3636,7 @@ public abstract class EntityLiving extends Entity {
private boolean x() {
return (Boolean) this.getBedPosition().map((blockposition) -> {
@ -369,7 +369,7 @@ index 96f34b5d02a7cd97432161f979d6c10b0a2abd63..f37094c158ec564133008d5cf195fd67
}).orElse(false);
}
@@ -3642,7 +3645,7 @@ public abstract class EntityLiving extends Entity {
@@ -3643,7 +3646,7 @@ public abstract class EntityLiving extends Entity {
this.world.getClass();
optional.filter(world::isLoaded).ifPresent((blockposition) -> {
@ -379,7 +379,7 @@ index 96f34b5d02a7cd97432161f979d6c10b0a2abd63..f37094c158ec564133008d5cf195fd67
if (iblockdata.getBlock() instanceof BlockBed) {
this.world.setTypeAndData(blockposition, (IBlockData) iblockdata.set(BlockBed.OCCUPIED, false), 3);
diff --git a/src/main/java/net/minecraft/world/level/World.java b/src/main/java/net/minecraft/world/level/World.java
index 93df6da952081969f280462d7515e28782a794f0..a5dd3b71f9b96047826d01002dbad718c463500c 100644
index 5166c78fe1db631a988b6567932e1be685ebb19c..2276b90a35e9f823cc20f622f4ee7ad923eefec3 100644
--- a/src/main/java/net/minecraft/world/level/World.java
+++ b/src/main/java/net/minecraft/world/level/World.java
@@ -96,7 +96,9 @@ import org.bukkit.craftbukkit.block.data.CraftBlockData;

View File

@ -6,7 +6,7 @@ Subject: [PATCH] lithium entity
Co-authored-by: Hugo Planque <hookwood01@gmail.com>
diff --git a/src/main/java/net/minecraft/world/entity/EntityLiving.java b/src/main/java/net/minecraft/world/entity/EntityLiving.java
index f37094c158ec564133008d5cf195fd670c8639c4..769f520fb180f8b7091a63c67ca41c8d17d5976e 100644
index 4de845117c06915943d517bdab7fcc3651589dcf..a0d1d98135cfea5b2afa2b68a1ab95aa46b8f485 100644
--- a/src/main/java/net/minecraft/world/entity/EntityLiving.java
+++ b/src/main/java/net/minecraft/world/entity/EntityLiving.java
@@ -276,6 +276,9 @@ public abstract class EntityLiving extends Entity {

View File

@ -270,10 +270,10 @@ index b95115aca72ba0cf6451096ddbd8b50a8f3bb5c6..0afb8c643cb3e5938e12183c6132797d
int j = i - 1;
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
index b3762831a4eb1ad81083212739e339d71658e9d5..8833551cd73eb04e2621db4b70ac2fcd22a206fd 100644
index 3475e74ad2a3d9cf6088e51e55c50bcac28e00b5..198d22377a9fc3d6601a078cd2fa4294a6b2987b 100644
--- a/src/main/java/net/minecraft/world/entity/Entity.java
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
@@ -2683,6 +2683,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, ne
@@ -2682,6 +2682,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, ne
return this.isSneaking();
}

View File

@ -621,7 +621,7 @@ index 0000000000000000000000000000000000000000..4e765ab19ffb300b6c810333b2dc7976
+}
\ No newline at end of file
diff --git a/src/main/java/net/minecraft/world/level/World.java b/src/main/java/net/minecraft/world/level/World.java
index a5dd3b71f9b96047826d01002dbad718c463500c..324342f57249be6a37d7ad10a326a71edcd2fa82 100644
index 2276b90a35e9f823cc20f622f4ee7ad923eefec3..32d2145222093797bec994f5c96d94863739915d 100644
--- a/src/main/java/net/minecraft/world/level/World.java
+++ b/src/main/java/net/minecraft/world/level/World.java
@@ -97,8 +97,11 @@ import org.bukkit.event.block.BlockPhysicsEvent;
@ -656,7 +656,7 @@ index a5dd3b71f9b96047826d01002dbad718c463500c..324342f57249be6a37d7ad10a326a71e
public final Thread serverThread;
private final boolean debugWorld;
private int d;
@@ -332,6 +343,8 @@ public abstract class World implements GeneratorAccess, AutoCloseable, NonBlocki
@@ -330,6 +341,8 @@ public abstract class World implements GeneratorAccess, AutoCloseable, NonBlocki
this.keepSpawnInMemory = this.paperConfig.keepSpawnInMemory; // Paper
this.entityLimiter = new org.spigotmc.TickLimiter(spigotConfig.entityMaxTickTime);
this.tileLimiter = new org.spigotmc.TickLimiter(spigotConfig.tileMaxTickTime);
@ -665,7 +665,7 @@ index a5dd3b71f9b96047826d01002dbad718c463500c..324342f57249be6a37d7ad10a326a71e
}
// Paper start
@@ -996,6 +1009,15 @@ public abstract class World implements GeneratorAccess, AutoCloseable, NonBlocki
@@ -994,6 +1007,15 @@ public abstract class World implements GeneratorAccess, AutoCloseable, NonBlocki
}
@ -681,7 +681,7 @@ index a5dd3b71f9b96047826d01002dbad718c463500c..324342f57249be6a37d7ad10a326a71e
public void tickBlockEntities() {
GameProfilerFiller gameprofilerfiller = this.getMethodProfiler();
@@ -1018,11 +1040,19 @@ public abstract class World implements GeneratorAccess, AutoCloseable, NonBlocki
@@ -1016,11 +1038,19 @@ public abstract class World implements GeneratorAccess, AutoCloseable, NonBlocki
this.tickingTileEntities = true;
// Spigot start
@ -701,7 +701,7 @@ index a5dd3b71f9b96047826d01002dbad718c463500c..324342f57249be6a37d7ad10a326a71e
// Spigot start
if (tileentity == null) {
getServer().getLogger().severe("Spigot has detected a null entity and has removed it, preventing a crash");
@@ -1060,8 +1090,7 @@ public abstract class World implements GeneratorAccess, AutoCloseable, NonBlocki
@@ -1058,8 +1088,7 @@ public abstract class World implements GeneratorAccess, AutoCloseable, NonBlocki
throwable.printStackTrace();
getServer().getPluginManager().callEvent(new ServerExceptionEvent(new ServerInternalException(msg, throwable)));
// Paper end
@ -711,7 +711,7 @@ index a5dd3b71f9b96047826d01002dbad718c463500c..324342f57249be6a37d7ad10a326a71e
continue;
// Paper end
// Spigot start
@@ -1074,8 +1103,7 @@ public abstract class World implements GeneratorAccess, AutoCloseable, NonBlocki
@@ -1072,8 +1101,7 @@ public abstract class World implements GeneratorAccess, AutoCloseable, NonBlocki
if (tileentity.isRemoved()) {
// Spigot start

@ -1 +1 @@
Subproject commit 8c5012517e30804bf6376f56625c2ef569c8a15a
Subproject commit 2be99de1879d77f697c89bb4f9941753b794422e

@ -1 +1 @@
Subproject commit 0e568e7c3a42a130443bb08f641094e5613fce52
Subproject commit 33438474421589039cc384be99b5584bfdce487b

@ -1 +1 @@
Subproject commit d0cdf967180ef028c9ba7a8c5b9f5239588892fb
Subproject commit 35c6a27557ee1f61bc2d432c7b8e5d11f81d3962

@ -1 +1 @@
Subproject commit f7c42491a092c2dbd2d4736dd9713dc29c0bc099
Subproject commit 2683c775cc9b25ca8bfc0c9b04bbffea6c5fa9fd

View File

@ -1 +1 @@
8c5012517e30804bf6376f56625c2ef569c8a15a
2be99de1879d77f697c89bb4f9941753b794422e

View File

@ -1 +1 @@
0e568e7c3a42a130443bb08f641094e5613fce52
33438474421589039cc384be99b5584bfdce487b

View File

@ -1 +1 @@
d0cdf967180ef028c9ba7a8c5b9f5239588892fb
35c6a27557ee1f61bc2d432c7b8e5d11f81d3962

View File

@ -1 +1 @@
f7c42491a092c2dbd2d4736dd9713dc29c0bc099
2683c775cc9b25ca8bfc0c9b04bbffea6c5fa9fd