mirror of
https://github.com/PurpurMC/Purpur.git
synced 2026-02-17 16:37:43 +01:00
Optimize EntityMoveEvent detection
This commit is contained in:
@@ -5,7 +5,7 @@ Subject: [PATCH] EntityMoveEvent
|
||||
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/server/EntityLiving.java b/src/main/java/net/minecraft/server/EntityLiving.java
|
||||
index 27e6d39a2..5228a11a5 100644
|
||||
index 27e6d39a2f..15d255180f 100644
|
||||
--- a/src/main/java/net/minecraft/server/EntityLiving.java
|
||||
+++ b/src/main/java/net/minecraft/server/EntityLiving.java
|
||||
@@ -2802,6 +2802,20 @@ public abstract class EntityLiving extends Entity {
|
||||
@@ -13,7 +13,7 @@ index 27e6d39a2..5228a11a5 100644
|
||||
this.collideNearby();
|
||||
this.world.getMethodProfiler().exit();
|
||||
+ // Purpur start
|
||||
+ if (net.pl3x.purpur.event.entity.EntityMoveEvent.getHandlerList().getRegisteredListeners().length > 0) {
|
||||
+ if (((WorldServer) world).hasEntityMoveEvent) {
|
||||
+ if (lastX != locX() || lastY != locY() || lastZ != locZ() || lastYaw != yaw || lastPitch != pitch) {
|
||||
+ Location from = new Location(world.getWorld(), lastX, lastY, lastZ, lastYaw, lastPitch);
|
||||
+ Location to = new Location (world.getWorld(), locX(), locY(), locZ(), yaw, pitch);
|
||||
@@ -29,3 +29,27 @@ index 27e6d39a2..5228a11a5 100644
|
||||
if (!this.world.isClientSide && this.dO() && this.aG()) {
|
||||
this.damageEntity(DamageSource.DROWN, 1.0F);
|
||||
}
|
||||
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
|
||||
index dae7888866..2c765ed56b 100644
|
||||
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
|
||||
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
|
||||
@@ -1401,6 +1401,7 @@ public abstract class MinecraftServer extends IAsyncTaskHandlerReentrant<TickTas
|
||||
while (iterator.hasNext()) {
|
||||
WorldServer worldserver = (WorldServer) iterator.next();
|
||||
worldserver.hasPhysicsEvent = org.bukkit.event.block.BlockPhysicsEvent.getHandlerList().getRegisteredListeners().length > 0; // Paper
|
||||
+ worldserver.hasEntityMoveEvent = net.pl3x.purpur.event.entity.EntityMoveEvent.getHandlerList().getRegisteredListeners().length > 0; // Purpur
|
||||
TileEntityHopper.skipHopperEvents = worldserver.paperConfig.disableHopperMoveEvents || org.bukkit.event.inventory.InventoryMoveItemEvent.getHandlerList().getRegisteredListeners().length == 0; // Paper
|
||||
|
||||
this.methodProfiler.a(() -> {
|
||||
diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java
|
||||
index e082faf8cf..63b6a06737 100644
|
||||
--- a/src/main/java/net/minecraft/server/WorldServer.java
|
||||
+++ b/src/main/java/net/minecraft/server/WorldServer.java
|
||||
@@ -101,6 +101,7 @@ public class WorldServer extends World implements GeneratorAccessSeed {
|
||||
public final Convertable.ConversionSession convertable;
|
||||
public final UUID uuid;
|
||||
boolean hasPhysicsEvent = true; // Paper
|
||||
+ boolean hasEntityMoveEvent = false; // Purpur
|
||||
private static Throwable getAddToWorldStackTrace(Entity entity) {
|
||||
return new Throwable(entity + " Added to world at " + new java.util.Date());
|
||||
}
|
||||
|
||||
@@ -5,10 +5,10 @@ Subject: [PATCH] Zombie horse naturally spawn
|
||||
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java
|
||||
index 848b8d8c8..7ef1987c0 100644
|
||||
index 63b6a06737..c7a43dccee 100644
|
||||
--- a/src/main/java/net/minecraft/server/WorldServer.java
|
||||
+++ b/src/main/java/net/minecraft/server/WorldServer.java
|
||||
@@ -1048,12 +1048,18 @@ public class WorldServer extends World implements GeneratorAccessSeed {
|
||||
@@ -1049,12 +1049,18 @@ public class WorldServer extends World implements GeneratorAccessSeed {
|
||||
boolean flag1 = this.getGameRules().getBoolean(GameRules.DO_MOB_SPAWNING) && this.random.nextDouble() < (double) difficultydamagescaler.b() * paperConfig.skeleHorseSpawnChance; // Paper
|
||||
|
||||
if (flag1) {
|
||||
@@ -34,7 +34,7 @@ index 848b8d8c8..7ef1987c0 100644
|
||||
|
||||
EntityLightning entitylightning = (EntityLightning) EntityTypes.LIGHTNING_BOLT.a((World) this);
|
||||
diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
|
||||
index 0073e3b85..b652bfbdc 100644
|
||||
index 0073e3b85a..b652bfbdc3 100644
|
||||
--- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
|
||||
+++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
|
||||
@@ -145,4 +145,9 @@ public class PurpurWorldConfig {
|
||||
|
||||
@@ -5,7 +5,7 @@ Subject: [PATCH] Cat spawning options
|
||||
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/server/IEntityAccess.java b/src/main/java/net/minecraft/server/IEntityAccess.java
|
||||
index 9643dffc5..d9e6e78b1 100644
|
||||
index 9643dffc59..d9e6e78b15 100644
|
||||
--- a/src/main/java/net/minecraft/server/IEntityAccess.java
|
||||
+++ b/src/main/java/net/minecraft/server/IEntityAccess.java
|
||||
@@ -44,6 +44,7 @@ public interface IEntityAccess {
|
||||
@@ -17,7 +17,7 @@ index 9643dffc5..d9e6e78b1 100644
|
||||
return this.a(oclass, axisalignedbb, IEntitySelector.g);
|
||||
}
|
||||
diff --git a/src/main/java/net/minecraft/server/MobSpawnerCat.java b/src/main/java/net/minecraft/server/MobSpawnerCat.java
|
||||
index 5e17868a7..6d0ebd8af 100644
|
||||
index 5e17868a76..6d0ebd8afe 100644
|
||||
--- a/src/main/java/net/minecraft/server/MobSpawnerCat.java
|
||||
+++ b/src/main/java/net/minecraft/server/MobSpawnerCat.java
|
||||
@@ -16,7 +16,7 @@ public class MobSpawnerCat implements MobSpawner {
|
||||
@@ -62,7 +62,7 @@ index 5e17868a7..6d0ebd8af 100644
|
||||
}
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/server/VillagePlace.java b/src/main/java/net/minecraft/server/VillagePlace.java
|
||||
index 99778f80c..be2ff3547 100644
|
||||
index 99778f80c0..be2ff3547c 100644
|
||||
--- a/src/main/java/net/minecraft/server/VillagePlace.java
|
||||
+++ b/src/main/java/net/minecraft/server/VillagePlace.java
|
||||
@@ -177,6 +177,7 @@ public class VillagePlace extends RegionFileSection<VillagePlaceSection> {
|
||||
@@ -74,7 +74,7 @@ index 99778f80c..be2ff3547 100644
|
||||
return this.c(predicate, blockposition, i, villageplace_occupancy).count();
|
||||
}
|
||||
diff --git a/src/main/java/net/minecraft/server/VillagePlaceType.java b/src/main/java/net/minecraft/server/VillagePlaceType.java
|
||||
index a5718af9b..b6b4c8c49 100644
|
||||
index a5718af9b6..b6b4c8c491 100644
|
||||
--- a/src/main/java/net/minecraft/server/VillagePlaceType.java
|
||||
+++ b/src/main/java/net/minecraft/server/VillagePlaceType.java
|
||||
@@ -44,7 +44,7 @@ public class VillagePlaceType {
|
||||
@@ -95,10 +95,10 @@ index a5718af9b..b6b4c8c49 100644
|
||||
return this.E;
|
||||
}
|
||||
diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java
|
||||
index 7ef1987c0..5bd432374 100644
|
||||
index c7a43dccee..03dc6ab4b2 100644
|
||||
--- a/src/main/java/net/minecraft/server/WorldServer.java
|
||||
+++ b/src/main/java/net/minecraft/server/WorldServer.java
|
||||
@@ -2558,6 +2558,7 @@ public class WorldServer extends World implements GeneratorAccessSeed {
|
||||
@@ -2559,6 +2559,7 @@ public class WorldServer extends World implements GeneratorAccessSeed {
|
||||
}
|
||||
}
|
||||
|
||||
@@ -107,7 +107,7 @@ index 7ef1987c0..5bd432374 100644
|
||||
return this.getChunkProvider().j();
|
||||
}
|
||||
diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
|
||||
index f01c74a2e..b32f4d74a 100644
|
||||
index f01c74a2ea..b32f4d74a0 100644
|
||||
--- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
|
||||
+++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
|
||||
@@ -118,6 +118,15 @@ public class PurpurWorldConfig {
|
||||
|
||||
@@ -5,7 +5,7 @@ Subject: [PATCH] Add no-tick block list
|
||||
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/server/BlockBase.java b/src/main/java/net/minecraft/server/BlockBase.java
|
||||
index 4d1ac4e6b..483756316 100644
|
||||
index 4d1ac4e6b6..483756316a 100644
|
||||
--- a/src/main/java/net/minecraft/server/BlockBase.java
|
||||
+++ b/src/main/java/net/minecraft/server/BlockBase.java
|
||||
@@ -655,10 +655,12 @@ public abstract class BlockBase {
|
||||
@@ -22,10 +22,10 @@ index 4d1ac4e6b..483756316 100644
|
||||
}
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java
|
||||
index 5bd432374..4f5b6e3cd 100644
|
||||
index 03dc6ab4b2..66883ea891 100644
|
||||
--- a/src/main/java/net/minecraft/server/WorldServer.java
|
||||
+++ b/src/main/java/net/minecraft/server/WorldServer.java
|
||||
@@ -313,14 +313,14 @@ public class WorldServer extends World implements GeneratorAccessSeed {
|
||||
@@ -314,14 +314,14 @@ public class WorldServer extends World implements GeneratorAccessSeed {
|
||||
// CraftBukkit end
|
||||
if (com.destroystokyo.paper.PaperConfig.useOptimizedTickList) {
|
||||
this.nextTickListBlock = new com.destroystokyo.paper.server.ticklist.PaperTickList<>(this, (block) -> {
|
||||
@@ -43,7 +43,7 @@ index 5bd432374..4f5b6e3cd 100644
|
||||
this.nextTickListFluid = new TickListServer<>(this, (fluidtype) -> {
|
||||
return fluidtype == null || fluidtype == FluidTypes.EMPTY;
|
||||
diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
|
||||
index 21b8e004c..f9df4c5aa 100644
|
||||
index 21b8e004cd..f9df4c5aa3 100644
|
||||
--- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
|
||||
+++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
|
||||
@@ -11,8 +11,10 @@ import org.bukkit.configuration.ConfigurationSection;
|
||||
|
||||
@@ -2371,7 +2371,7 @@ index bdff236883..9ee03b233b 100644
|
||||
float f1 = 1.0F + (this.random.nextFloat() - this.random.nextFloat()) * 0.2F;
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/server/EntityLiving.java b/src/main/java/net/minecraft/server/EntityLiving.java
|
||||
index 1e47a741cf..5e5abfd0b5 100644
|
||||
index fe83a4c267..130893c7c9 100644
|
||||
--- a/src/main/java/net/minecraft/server/EntityLiving.java
|
||||
+++ b/src/main/java/net/minecraft/server/EntityLiving.java
|
||||
@@ -466,7 +466,7 @@ public abstract class EntityLiving extends Entity {
|
||||
@@ -4914,13 +4914,13 @@ index 0bac6b0506..9a17eb6066 100644
|
||||
Entity entity1 = this.getShooter();
|
||||
// Paper start - Cancel hit for vanished players
|
||||
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
|
||||
index c9577e998c..5e35a119bd 100644
|
||||
index 57b42f06c4..cf382f4dea 100644
|
||||
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
|
||||
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
|
||||
@@ -1412,6 +1412,7 @@ public abstract class MinecraftServer extends IAsyncTaskHandlerReentrant<TickTas
|
||||
while (iterator.hasNext()) {
|
||||
@@ -1413,6 +1413,7 @@ public abstract class MinecraftServer extends IAsyncTaskHandlerReentrant<TickTas
|
||||
WorldServer worldserver = (WorldServer) iterator.next();
|
||||
worldserver.hasPhysicsEvent = org.bukkit.event.block.BlockPhysicsEvent.getHandlerList().getRegisteredListeners().length > 0; // Paper
|
||||
worldserver.hasEntityMoveEvent = net.pl3x.purpur.event.entity.EntityMoveEvent.getHandlerList().getRegisteredListeners().length > 0; // Purpur
|
||||
+ worldserver.hasRidableMoveEvent = net.pl3x.purpur.event.entity.RidableMoveEvent.getHandlerList().getRegisteredListeners().length > 0; // Purpur
|
||||
TileEntityHopper.skipHopperEvents = worldserver.paperConfig.disableHopperMoveEvents || org.bukkit.event.inventory.InventoryMoveItemEvent.getHandlerList().getRegisteredListeners().length == 0; // Paper
|
||||
|
||||
@@ -5040,13 +5040,13 @@ index 7a82a894bb..bdfdb73bc1 100644
|
||||
// Purpur end
|
||||
}
|
||||
diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java
|
||||
index dda4aa6bf5..b06ab4706f 100644
|
||||
index 66883ea891..bc35bfd96a 100644
|
||||
--- a/src/main/java/net/minecraft/server/WorldServer.java
|
||||
+++ b/src/main/java/net/minecraft/server/WorldServer.java
|
||||
@@ -101,6 +101,7 @@ public class WorldServer extends World implements GeneratorAccessSeed {
|
||||
public final Convertable.ConversionSession convertable;
|
||||
@@ -102,6 +102,7 @@ public class WorldServer extends World implements GeneratorAccessSeed {
|
||||
public final UUID uuid;
|
||||
boolean hasPhysicsEvent = true; // Paper
|
||||
boolean hasEntityMoveEvent = false; // Purpur
|
||||
+ boolean hasRidableMoveEvent = false; // Purpur
|
||||
private static Throwable getAddToWorldStackTrace(Entity entity) {
|
||||
return new Throwable(entity + " Added to world at " + new java.util.Date());
|
||||
|
||||
@@ -42,10 +42,10 @@ index bdfdb73bc1..ab97d076c9 100644
|
||||
this.generator = gen;
|
||||
this.world = new CraftWorld((WorldServer) this, gen, env);
|
||||
diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java
|
||||
index b06ab4706f..9bbdd8e789 100644
|
||||
index bc35bfd96a..644ff68795 100644
|
||||
--- a/src/main/java/net/minecraft/server/WorldServer.java
|
||||
+++ b/src/main/java/net/minecraft/server/WorldServer.java
|
||||
@@ -331,7 +331,24 @@ public class WorldServer extends World implements GeneratorAccessSeed {
|
||||
@@ -332,7 +332,24 @@ public class WorldServer extends World implements GeneratorAccessSeed {
|
||||
this.L = new ObjectLinkedOpenHashSet();
|
||||
this.Q = flag1;
|
||||
this.server = minecraftserver;
|
||||
|
||||
@@ -18,7 +18,7 @@ index 88c3d7efaf..fed1ce9503 100644
|
||||
public PacketPlayOutUpdateTime() {}
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java
|
||||
index 9bbdd8e789..a8b0411907 100644
|
||||
index 644ff68795..dd8e284b26 100644
|
||||
--- a/src/main/java/net/minecraft/server/WorldServer.java
|
||||
+++ b/src/main/java/net/minecraft/server/WorldServer.java
|
||||
@@ -94,6 +94,7 @@ public class WorldServer extends World implements GeneratorAccessSeed {
|
||||
@@ -29,7 +29,7 @@ index 9bbdd8e789..a8b0411907 100644
|
||||
|
||||
|
||||
// CraftBukkit start
|
||||
@@ -380,6 +381,7 @@ public class WorldServer extends World implements GeneratorAccessSeed {
|
||||
@@ -381,6 +382,7 @@ public class WorldServer extends World implements GeneratorAccessSeed {
|
||||
this.getServer().addWorld(this.getWorld()); // CraftBukkit
|
||||
|
||||
this.asyncChunkTaskManager = new com.destroystokyo.paper.io.chunk.ChunkTaskManager(this); // Paper
|
||||
@@ -37,7 +37,7 @@ index 9bbdd8e789..a8b0411907 100644
|
||||
}
|
||||
|
||||
// Tuinity start - optimise collision
|
||||
@@ -1016,7 +1018,21 @@ public class WorldServer extends World implements GeneratorAccessSeed {
|
||||
@@ -1017,7 +1019,21 @@ public class WorldServer extends World implements GeneratorAccessSeed {
|
||||
this.nextTickListBlock.nextTick(); // Paper
|
||||
this.nextTickListFluid.nextTick(); // Paper
|
||||
this.worldDataServer.u().a(this.server, i);
|
||||
@@ -60,7 +60,7 @@ index 9bbdd8e789..a8b0411907 100644
|
||||
this.setDayTime(this.worldData.getDayTime() + 1L);
|
||||
}
|
||||
|
||||
@@ -1025,6 +1041,12 @@ public class WorldServer extends World implements GeneratorAccessSeed {
|
||||
@@ -1026,6 +1042,12 @@ public class WorldServer extends World implements GeneratorAccessSeed {
|
||||
|
||||
public void setDayTime(long i) {
|
||||
this.worldDataServer.setDayTime(i);
|
||||
|
||||
Reference in New Issue
Block a user