9
0
mirror of https://github.com/Samsuik/Sakura.git synced 2025-12-21 15:59:26 +00:00

Drop useless reduce movement allocations patch

This commit is contained in:
Samsuik
2024-07-20 00:23:26 +01:00
parent 17b32245f6
commit ff811ffd5c
70 changed files with 104 additions and 341 deletions

View File

@@ -5,7 +5,7 @@ Subject: [PATCH] Optional Force Position Updates
diff --git a/src/main/java/net/minecraft/world/entity/item/PrimedTnt.java b/src/main/java/net/minecraft/world/entity/item/PrimedTnt.java
index d14128dd5d63e93a3d4aec76b0ee8d0e7d786687..6902a97bcf858aab63547451a656bc336eeb2b93 100644
index 28a15f612239614c6c56974da5855ce3bfd7c89e..ef245198ce6385c66f58e0dbcdebffbe6d2b625e 100644
--- a/src/main/java/net/minecraft/world/entity/item/PrimedTnt.java
+++ b/src/main/java/net/minecraft/world/entity/item/PrimedTnt.java
@@ -129,6 +129,14 @@ public class PrimedTnt extends Entity implements TraceableEntity {

View File

@@ -1,250 +0,0 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Samsuik <kfian294ma4@gmail.com>
Date: Fri, 24 Mar 2023 16:29:21 +0000
Subject: [PATCH] Reduce deltaMovement Allocations
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
index a04c417602c928e09b856d4ac73562a18a4995e4..03f87fe754c46bd3d726ecbf9948c224d07759bc 100644
--- a/src/main/java/net/minecraft/world/entity/Entity.java
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
@@ -1276,7 +1276,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
this.tryCheckInsideBlocks();
float f = this.getBlockSpeedFactor();
- this.setDeltaMovement(this.getDeltaMovement().multiply((double) f, 1.0D, (double) f));
+ this.multiplyDeltaMovement((double) f, 1.0D, (double) f); // Sakura - reduce movement allocations
if (this.level().getBlockStatesIfLoaded(this.getBoundingBox().deflate(1.0E-6D)).noneMatch((iblockdata2) -> {
return iblockdata2.is(BlockTags.FIRE) || iblockdata2.is(Blocks.LAVA);
})) {
@@ -1821,7 +1821,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
double d0 = this.getGravity();
if (d0 != 0.0D) {
- this.setDeltaMovement(this.getDeltaMovement().add(0.0D, -d0, 0.0D));
+ this.addDeltaMovement(0.0D, -d0, 0.0D); // Sakura - reduce movement allocations
}
}
@@ -2121,6 +2121,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
public void moveTo(double x, double y, double z, float yaw, float pitch) {
// Paper start - Fix Entity Teleportation and cancel velocity if teleported
if (!preserveMotion) {
+ this.movementDirty = false; // Sakura
this.deltaMovement = Vec3.ZERO;
} else {
this.preserveMotion = false;
@@ -3548,29 +3549,33 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
}
public void onAboveBubbleCol(boolean drag) {
- Vec3 vec3d = this.getDeltaMovement();
+ // Sakura start - remove bubble column allocations
+ // Vec3 vec3d = this.getDeltaMovement();
+ this.syncDeltaMovement();
double d0;
if (drag) {
- d0 = Math.max(-0.9D, vec3d.y - 0.03D);
+ d0 = Math.max(-0.9D, this.movementY - 0.03D);
} else {
- d0 = Math.min(1.8D, vec3d.y + 0.1D);
+ d0 = Math.min(1.8D, this.movementY + 0.1D);
}
- this.setDeltaMovement(vec3d.x, d0, vec3d.z);
+ this.setDeltaMovement(this.movementX, d0, this.movementZ);
}
public void onInsideBubbleColumn(boolean drag) {
- Vec3 vec3d = this.getDeltaMovement();
+ // Vec3 vec3d = this.getDeltaMovement();
+ this.syncDeltaMovement();
double d0;
if (drag) {
- d0 = Math.max(-0.3D, vec3d.y - 0.03D);
+ d0 = Math.max(-0.3D, this.movementY - 0.03D);
} else {
- d0 = Math.min(0.7D, vec3d.y + 0.06D);
+ d0 = Math.min(0.7D, this.movementY + 0.06D);
}
- this.setDeltaMovement(vec3d.x, d0, vec3d.z);
+ this.setDeltaMovement(this.movementX, d0, this.movementZ);
+ // Sakura end - remove bubble column allocations
this.resetFallDistance();
}
@@ -4511,16 +4516,19 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
vec3d = vec3d.normalize();
}
- Vec3 vec3d2 = this.getDeltaMovement();
+ // Sakura start - reduce movement allocations
+ // Vec3 vec3d2 = this.getDeltaMovement();
+ this.syncDeltaMovement();
vec3d = vec3d.scale(speed);
double d3 = 0.003D;
- if (Math.abs(vec3d2.x) < 0.003D && Math.abs(vec3d2.z) < 0.003D && vec3d.length() < 0.0045000000000000005D) {
+ if (Math.abs(movementX) < 0.003D && Math.abs(movementZ) < 0.003D && vec3d.length() < 0.0045000000000000005D) {
vec3d = vec3d.normalize().scale(0.0045000000000000005D);
}
- this.setDeltaMovement(this.getDeltaMovement().add(vec3d));
+ this.addDeltaMovement(vec3d.x, vec3d.y, vec3d.z);
+ // Sakura end
}
this.fluidHeight.put(tag, d1);
@@ -4591,12 +4599,54 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
return this.chunkPosition;
}
+ // Sakura start - reduce movement allocations
+ private double movementX;
+ private double movementY;
+ private double movementZ;
+ private boolean movementDirty;
+
+ public final void addDeltaMovement(double x, double y, double z) {
+ this.syncDeltaMovement();
+ this.movementX += x;
+ this.movementY += y;
+ this.movementZ += z;
+ }
+
+ public final void scaleDeltaMovement(double n) {
+ this.syncDeltaMovement();
+ this.movementX *= n;
+ this.movementY *= n;
+ this.movementZ *= n;
+ }
+
+ public final void multiplyDeltaMovement(double x, double y, double z) {
+ this.syncDeltaMovement();
+ this.movementX *= x;
+ this.movementY *= y;
+ this.movementZ *= z;
+ }
+
+ private void updateDeltaMovement() {
+ if (this.movementDirty) {
+ this.deltaMovement = new Vec3(this.movementX, this.movementY, this.movementZ);
+ this.movementDirty = false;
+ }
+ }
+
+ private void syncDeltaMovement() {
+ if (!this.movementDirty) {
+ this.setDeltaMovement(this.deltaMovement.x, this.deltaMovement.y, this.deltaMovement.z);
+ }
+ }
+
public Vec3 getDeltaMovement() {
+ this.updateDeltaMovement();
return this.deltaMovement;
}
public void setDeltaMovement(Vec3 velocity) {
synchronized (this.posLock) { // Paper
+ this.movementDirty = false;
this.deltaMovement = velocity;
} // Paper
}
@@ -4606,7 +4656,11 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
}
public void setDeltaMovement(double x, double y, double z) {
- this.setDeltaMovement(new Vec3(x, y, z));
+ this.movementX = x;
+ this.movementY = y;
+ this.movementZ = z;
+ this.movementDirty = true;
+ // Sakura end - reduce deltamovement allocations
}
public final int getBlockX() {
diff --git a/src/main/java/net/minecraft/world/entity/item/FallingBlockEntity.java b/src/main/java/net/minecraft/world/entity/item/FallingBlockEntity.java
index 1bfdebe6c1057ee19fb96d8f0f571c9d20d14cc6..0b84c21749d942851d5126b795e4b609070ed31f 100644
--- a/src/main/java/net/minecraft/world/entity/item/FallingBlockEntity.java
+++ b/src/main/java/net/minecraft/world/entity/item/FallingBlockEntity.java
@@ -188,7 +188,7 @@ public class FallingBlockEntity extends Entity {
} else {
BlockState iblockdata = this.level().getBlockState(blockposition);
- this.setDeltaMovement(this.getDeltaMovement().multiply(0.7D, -0.5D, 0.7D));
+ this.multiplyDeltaMovement(0.7D, -0.5D, 0.7D); // Sakura - reduce movement allocations
if (!iblockdata.is(Blocks.MOVING_PISTON)) {
if (!this.cancelDrop) {
boolean flag2 = iblockdata.canBeReplaced((BlockPlaceContext) (new DirectionalPlaceContext(this.level(), blockposition, Direction.DOWN, ItemStack.EMPTY, Direction.UP)));
@@ -255,7 +255,7 @@ public class FallingBlockEntity extends Entity {
}
}
- this.setDeltaMovement(this.getDeltaMovement().scale(0.98D));
+ this.scaleDeltaMovement(0.98D); // Sakura - reduce movement allocations
}
}
diff --git a/src/main/java/net/minecraft/world/entity/item/PrimedTnt.java b/src/main/java/net/minecraft/world/entity/item/PrimedTnt.java
index 28a15f612239614c6c56974da5855ce3bfd7c89e..d14128dd5d63e93a3d4aec76b0ee8d0e7d786687 100644
--- a/src/main/java/net/minecraft/world/entity/item/PrimedTnt.java
+++ b/src/main/java/net/minecraft/world/entity/item/PrimedTnt.java
@@ -106,9 +106,9 @@ public class PrimedTnt extends Entity implements TraceableEntity {
return;
}
// Paper end - Configurable TNT height nerf
- this.setDeltaMovement(this.getDeltaMovement().scale(0.98D));
+ this.scaleDeltaMovement(0.98D); // Sakura - reduce movement allocations
if (this.onGround()) {
- this.setDeltaMovement(this.getDeltaMovement().multiply(0.7D, -0.5D, 0.7D));
+ this.multiplyDeltaMovement(0.7D, -0.5D, 0.7D); // Sakura - reduce movement allocations
}
int i = this.getFuse() - 1;
diff --git a/src/main/java/net/minecraft/world/level/Explosion.java b/src/main/java/net/minecraft/world/level/Explosion.java
index a248d859cbce48f4a34c4771a7acffc17d7edc84..798b840af2dc5f58e6df55426a1802d79ff5d6cb 100644
--- a/src/main/java/net/minecraft/world/level/Explosion.java
+++ b/src/main/java/net/minecraft/world/level/Explosion.java
@@ -595,17 +595,23 @@ public class Explosion {
d8 *= d13;
d9 *= d13;
d10 *= d13;
- Vec3 vec3d1 = new Vec3(d8, d9, d10);
+ Vec3 vec3d1 = null; // Sakura - move allocation into living entity condition
// CraftBukkit start - Call EntityKnockbackEvent
if (entity instanceof LivingEntity) {
+ vec3d1 = new Vec3(d8, d9, d10); // Sakura - reduce deltaMovement allocations
// Paper start - knockback events
io.papermc.paper.event.entity.EntityKnockbackEvent event = CraftEventFactory.callEntityKnockbackEvent((org.bukkit.craftbukkit.entity.CraftLivingEntity) entity.getBukkitEntity(), this.damageSource.getEntity() != null ? this.damageSource.getEntity() : this.source, io.papermc.paper.event.entity.EntityKnockbackEvent.Cause.EXPLOSION, d13, vec3d1);
vec3d1 = event.isCancelled() ? Vec3.ZERO : org.bukkit.craftbukkit.util.CraftVector.toNMS(event.getKnockback());
// Paper end - knockback events
+ // Sakura start - reduce deltaMovement allocations
+ entity.addDeltaMovement(vec3d1.x(), vec3d1.y(), vec3d1.z());
+ } else {
+ entity.addDeltaMovement(d8, d9, d10);
+ // Sakura end - reduce deltaMovement allocations
}
// CraftBukkit end
- entity.setDeltaMovement(entity.getDeltaMovement().add(vec3d1));
+ // Sakura - moved up
if (entity instanceof Player) {
Player entityhuman = (Player) entity;
diff --git a/src/main/java/net/minecraft/world/level/block/Block.java b/src/main/java/net/minecraft/world/level/block/Block.java
index a7108b2be0746aa1f0e574d8c6f5ffad6d369835..6daca887dd4cc0683a4d066aa164bcd6dc2fc575 100644
--- a/src/main/java/net/minecraft/world/level/block/Block.java
+++ b/src/main/java/net/minecraft/world/level/block/Block.java
@@ -461,7 +461,7 @@ public class Block extends BlockBehaviour implements ItemLike {
}
public void updateEntityAfterFallOn(BlockGetter world, Entity entity) {
- entity.setDeltaMovement(entity.getDeltaMovement().multiply(1.0D, 0.0D, 1.0D));
+ entity.multiplyDeltaMovement(1.0D, 0.0D, 1.0D); // Sakura
}
public ItemStack getCloneItemStack(LevelReader world, BlockPos pos, BlockState state) {

View File

@@ -52,7 +52,7 @@ index f56e5c0f53f9b52a9247b9be9265b949494fc924..5a480f36e709a5e9fea2cbb8ccc0a14d
public static <T> TicketType<T> create(String name, Comparator<T> argumentComparator) {
return new TicketType<>(name, argumentComparator, 0L);
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
index 03f87fe754c46bd3d726ecbf9948c224d07759bc..8cbbe924f56e2e3d3c0e48e14e3b9176e3ef714f 100644
index a04c417602c928e09b856d4ac73562a18a4995e4..067a0aa9a57628d0d7b41e419d91df5ece7ec3d3 100644
--- a/src/main/java/net/minecraft/world/entity/Entity.java
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
@@ -554,6 +554,20 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
@@ -85,7 +85,7 @@ index 03f87fe754c46bd3d726ecbf9948c224d07759bc..8cbbe924f56e2e3d3c0e48e14e3b9176
null, null
);
@@ -4924,12 +4938,12 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
@@ -4870,12 +4884,12 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
@Override
public boolean shouldBeSaved() {
@@ -101,7 +101,7 @@ index 03f87fe754c46bd3d726ecbf9948c224d07759bc..8cbbe924f56e2e3d3c0e48e14e3b9176
public boolean mayInteract(Level world, BlockPos pos) {
diff --git a/src/main/java/net/minecraft/world/entity/item/FallingBlockEntity.java b/src/main/java/net/minecraft/world/entity/item/FallingBlockEntity.java
index 0b84c21749d942851d5126b795e4b609070ed31f..c030d4e3e059227995c2f9a3a1c58d78d29ec41c 100644
index 1bfdebe6c1057ee19fb96d8f0f571c9d20d14cc6..eaafd4905229d111381c188d5373196a9f9288ab 100644
--- a/src/main/java/net/minecraft/world/entity/item/FallingBlockEntity.java
+++ b/src/main/java/net/minecraft/world/entity/item/FallingBlockEntity.java
@@ -79,6 +79,7 @@ public class FallingBlockEntity extends Entity {
@@ -113,7 +113,7 @@ index 0b84c21749d942851d5126b795e4b609070ed31f..c030d4e3e059227995c2f9a3a1c58d78
public FallingBlockEntity(Level world, double x, double y, double z, BlockState block) {
diff --git a/src/main/java/net/minecraft/world/entity/item/PrimedTnt.java b/src/main/java/net/minecraft/world/entity/item/PrimedTnt.java
index 2eb69c7d7843a7b58479049633b838212d003c10..eeb3ef7a3f86a062e39e6978e97ab7bd71dfa574 100644
index ef245198ce6385c66f58e0dbcdebffbe6d2b625e..b7c8c2335d59853dbc97d3b9496b5e3a63f0d9ab 100644
--- a/src/main/java/net/minecraft/world/entity/item/PrimedTnt.java
+++ b/src/main/java/net/minecraft/world/entity/item/PrimedTnt.java
@@ -58,6 +58,7 @@ public class PrimedTnt extends Entity implements TraceableEntity {

View File

@@ -185,10 +185,10 @@ index 8ea2f24695f5dad55e21f238b69442513e7a90c6..66ce58684d7a571ebcb33e62ef1d67fe
if (this.entity instanceof LivingEntity) {
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
index 8cbbe924f56e2e3d3c0e48e14e3b9176e3ef714f..05d78fec35caee04241bb33808afb2d2d09f999c 100644
index 067a0aa9a57628d0d7b41e419d91df5ece7ec3d3..a5c69230536d163496e0d7f175fd240c6202584a 100644
--- a/src/main/java/net/minecraft/world/entity/Entity.java
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
@@ -3494,7 +3494,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
@@ -3493,7 +3493,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
this.entityData.markDirty(Entity.DATA_AIR_SUPPLY_ID);
return;
}
@@ -198,7 +198,7 @@ index 8cbbe924f56e2e3d3c0e48e14e3b9176e3ef714f..05d78fec35caee04241bb33808afb2d2
}
diff --git a/src/main/java/net/minecraft/world/entity/item/FallingBlockEntity.java b/src/main/java/net/minecraft/world/entity/item/FallingBlockEntity.java
index c030d4e3e059227995c2f9a3a1c58d78d29ec41c..0458d965ca266606f922bf1b03b729810a3948a4 100644
index eaafd4905229d111381c188d5373196a9f9288ab..0891d4107c9a724522a7abbb6cf61298b18e42a6 100644
--- a/src/main/java/net/minecraft/world/entity/item/FallingBlockEntity.java
+++ b/src/main/java/net/minecraft/world/entity/item/FallingBlockEntity.java
@@ -115,7 +115,7 @@ public class FallingBlockEntity extends Entity {
@@ -211,7 +211,7 @@ index c030d4e3e059227995c2f9a3a1c58d78d29ec41c..0458d965ca266606f922bf1b03b72981
public BlockPos getStartPos() {
diff --git a/src/main/java/net/minecraft/world/entity/item/PrimedTnt.java b/src/main/java/net/minecraft/world/entity/item/PrimedTnt.java
index eeb3ef7a3f86a062e39e6978e97ab7bd71dfa574..af9bd6822f60ee46ff5cc173bc8bd76d13020a80 100644
index b7c8c2335d59853dbc97d3b9496b5e3a63f0d9ab..888d018a8e73234332455b7d3700e70e1a50c5db 100644
--- a/src/main/java/net/minecraft/world/entity/item/PrimedTnt.java
+++ b/src/main/java/net/minecraft/world/entity/item/PrimedTnt.java
@@ -203,7 +203,7 @@ public class PrimedTnt extends Entity implements TraceableEntity {

View File

@@ -5,7 +5,7 @@ Subject: [PATCH] Optimise paper explosions
diff --git a/src/main/java/net/minecraft/world/level/Explosion.java b/src/main/java/net/minecraft/world/level/Explosion.java
index 798b840af2dc5f58e6df55426a1802d79ff5d6cb..94636b235eac944b955944425b44b9e864a319d0 100644
index a248d859cbce48f4a34c4771a7acffc17d7edc84..e4061762e3a421197f25ddd58d49eea6076597d1 100644
--- a/src/main/java/net/minecraft/world/level/Explosion.java
+++ b/src/main/java/net/minecraft/world/level/Explosion.java
@@ -100,7 +100,7 @@ public class Explosion {
@@ -176,7 +176,7 @@ index 798b840af2dc5f58e6df55426a1802d79ff5d6cb..94636b235eac944b955944425b44b9e8
}
// CraftBukkit end
} else { seenFraction = (double)this.getBlockDensity(vec3d, entity, blockCache, blockPos); } // Paper - optimise collisions
@@ -625,6 +708,11 @@ public class Explosion {
@@ -619,6 +702,11 @@ public class Explosion {
}
}
}

View File

@@ -52,7 +52,7 @@ index 0000000000000000000000000000000000000000..c9f2c5ae57878283e8c8bc3847fe63b9
+
+}
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
index 05d78fec35caee04241bb33808afb2d2d09f999c..1fa332238999fd45b20bc2be2d6284329da909b6 100644
index a5c69230536d163496e0d7f175fd240c6202584a..089502717ca22296888a82804239fd4f9938abff 100644
--- a/src/main/java/net/minecraft/world/entity/Entity.java
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
@@ -568,6 +568,25 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess

View File

@@ -418,7 +418,7 @@ index 4d0938df1604c3faca3997680a957dec3f07083b..df0465e4e073af7cbcee4939175d8f8c
this.guardEntityTick(this::tickNonPassenger, entity);
gameprofilerfiller.pop();
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
index 1fa332238999fd45b20bc2be2d6284329da909b6..d044262b2e1363151b8d076a9e3855db2a27254c 100644
index 089502717ca22296888a82804239fd4f9938abff..9e4ea632b757c187a32afecd0d6942b606ee96b3 100644
--- a/src/main/java/net/minecraft/world/entity/Entity.java
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
@@ -587,6 +587,23 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
@@ -445,7 +445,7 @@ index 1fa332238999fd45b20bc2be2d6284329da909b6..d044262b2e1363151b8d076a9e3855db
public Entity(EntityType<?> type, Level world) {
this.id = Entity.ENTITY_COUNTER.incrementAndGet();
@@ -4928,6 +4945,11 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
@@ -4874,6 +4891,11 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
if (this.removalReason != Entity.RemovalReason.UNLOADED_TO_CHUNK) { this.getPassengers().forEach(Entity::stopRiding); } // Paper - rewrite chunk system
this.levelCallback.onRemove(entity_removalreason);
@@ -458,7 +458,7 @@ index 1fa332238999fd45b20bc2be2d6284329da909b6..d044262b2e1363151b8d076a9e3855db
if (!(this instanceof ServerPlayer) && entity_removalreason != RemovalReason.CHANGED_DIMENSION && !alreadyRemoved) {
// Players need to be special cased, because they are regularly removed from the world
diff --git a/src/main/java/net/minecraft/world/entity/item/FallingBlockEntity.java b/src/main/java/net/minecraft/world/entity/item/FallingBlockEntity.java
index 0458d965ca266606f922bf1b03b729810a3948a4..b873f6fce87afb048128d642f7588c18fcc6f7f5 100644
index 0891d4107c9a724522a7abbb6cf61298b18e42a6..19eed968884f79a7982d96ae8c3c378f00afbdf9 100644
--- a/src/main/java/net/minecraft/world/entity/item/FallingBlockEntity.java
+++ b/src/main/java/net/minecraft/world/entity/item/FallingBlockEntity.java
@@ -57,7 +57,7 @@ import org.bukkit.craftbukkit.event.CraftEventFactory;
@@ -566,7 +566,7 @@ index 0458d965ca266606f922bf1b03b729810a3948a4..b873f6fce87afb048128d642f7588c18
public void setHurtsEntities(float fallHurtAmount, int fallHurtMax) {
diff --git a/src/main/java/net/minecraft/world/entity/item/PrimedTnt.java b/src/main/java/net/minecraft/world/entity/item/PrimedTnt.java
index af9bd6822f60ee46ff5cc173bc8bd76d13020a80..bdbee5ce0483a4fc4173c6ccf98d6a7a57f48867 100644
index 888d018a8e73234332455b7d3700e70e1a50c5db..6fc9a352dbae57e867ae35f2a1f30eebe20073c7 100644
--- a/src/main/java/net/minecraft/world/entity/item/PrimedTnt.java
+++ b/src/main/java/net/minecraft/world/entity/item/PrimedTnt.java
@@ -30,7 +30,7 @@ import org.bukkit.event.entity.EntityRemoveEvent;

View File

@@ -141,7 +141,7 @@ index b0e95e1dbf3248101d63bd2c0f9ba05e720623c6..67ca905c0821deb279383811fd112f02
this.isIteratingOverLevels = false; // Paper - Throw exception on world create while being ticked
diff --git a/src/main/java/net/minecraft/world/level/Explosion.java b/src/main/java/net/minecraft/world/level/Explosion.java
index 94636b235eac944b955944425b44b9e864a319d0..3a4aa5930e0c2b560e00878d072989287b34ebc0 100644
index e4061762e3a421197f25ddd58d49eea6076597d1..3572334f7594a284124d879b8165e9401e9d2aad 100644
--- a/src/main/java/net/minecraft/world/level/Explosion.java
+++ b/src/main/java/net/minecraft/world/level/Explosion.java
@@ -305,7 +305,12 @@ public class Explosion {
@@ -176,7 +176,7 @@ index 94636b235eac944b955944425b44b9e864a319d0..3a4aa5930e0c2b560e00878d07298928
++i;
}
@@ -810,6 +824,11 @@ public class Explosion {
@@ -804,6 +818,11 @@ public class Explosion {
});
}
@@ -188,7 +188,7 @@ index 94636b235eac944b955944425b44b9e864a319d0..3a4aa5930e0c2b560e00878d07298928
Iterator iterator = list.iterator();
while (iterator.hasNext()) {
@@ -938,14 +957,12 @@ public class Explosion {
@@ -932,14 +951,12 @@ public class Explosion {
}
// Paper start - Optimize explosions
private float getBlockDensity(Vec3 vec3d, Entity entity, ca.spottedleaf.moonrise.patches.collisions.ExplosionBlockCache[] blockCache, BlockPos.MutableBlockPos blockPos) { // Paper - optimise collisions

View File

@@ -5,7 +5,7 @@ Subject: [PATCH] Optimise explosions in protected regions
diff --git a/src/main/java/net/minecraft/world/level/Explosion.java b/src/main/java/net/minecraft/world/level/Explosion.java
index 03461922b9b42b4f6e9a62d1af1c1e1f6570cb09..5bf07349621d058739f12b9463bba47e9abfffd7 100644
index 3572334f7594a284124d879b8165e9401e9d2aad..eaf2201301813c68b5c0826394120daffdee72f8 100644
--- a/src/main/java/net/minecraft/world/level/Explosion.java
+++ b/src/main/java/net/minecraft/world/level/Explosion.java
@@ -353,6 +353,22 @@ public class Explosion {

View File

@@ -23,10 +23,10 @@ index c21e00812f1aaa1279834a0562d360d6b89e146c..442119e7c4670582556b067dfc03e39a
if (index >= 0) {
diff --git a/src/main/java/me/samsuik/sakura/explosion/special/SpecialisedExplosion.java b/src/main/java/me/samsuik/sakura/explosion/special/SpecialisedExplosion.java
new file mode 100644
index 0000000000000000000000000000000000000000..268db3306a46cbd89bffb51f1bce8446aaed4175
index 0000000000000000000000000000000000000000..709dc51ab4c9e8dad26cf883eebb3902a95bebf8
--- /dev/null
+++ b/src/main/java/me/samsuik/sakura/explosion/special/SpecialisedExplosion.java
@@ -0,0 +1,205 @@
@@ -0,0 +1,219 @@
+package me.samsuik.sakura.explosion.special;
+
+import ca.spottedleaf.moonrise.patches.chunk_system.level.entity.ChunkEntitySlices;
@@ -225,12 +225,26 @@ index 0000000000000000000000000000000000000000..268db3306a46cbd89bffb51f1bce8446
+ y *= exposure;
+ z *= exposure;
+
+ for (int i = 0; i < potential; ++i) {
+ entity.addDeltaMovement(x, y, z);
+ }
+ this.applyEntityVelocity(entity, x, y, z, potential);
+ }
+ }
+ }
+
+ protected final void applyEntityVelocity(Entity entity, double x, double y, double z, int potential) {
+ Vec3 movement = entity.getDeltaMovement();
+
+ double moveX = movement.x();
+ double moveY = movement.y();
+ double moveZ = movement.z();
+
+ for (int i = 0; i < potential; ++i) {
+ moveX += x;
+ moveY += y;
+ moveZ += z;
+ }
+
+ entity.setDeltaMovement(moveX, moveY, moveZ);
+ }
+}
diff --git a/src/main/java/me/samsuik/sakura/explosion/special/TntExplosion.java b/src/main/java/me/samsuik/sakura/explosion/special/TntExplosion.java
new file mode 100644
@@ -469,7 +483,7 @@ index df0465e4e073af7cbcee4939175d8f8c4b280396..a7ac1afc9db4daba86a492aea3a52880
@Override
diff --git a/src/main/java/net/minecraft/world/entity/item/PrimedTnt.java b/src/main/java/net/minecraft/world/entity/item/PrimedTnt.java
index 3e1aa60220ef67029f0d7679626d044dc84d8502..8e146df15dd0c86042fedf1d89396a74a59f30e7 100644
index 6fc9a352dbae57e867ae35f2a1f30eebe20073c7..e048542cdd1fe9c807ce21e57af9cf59b4adb33f 100644
--- a/src/main/java/net/minecraft/world/entity/item/PrimedTnt.java
+++ b/src/main/java/net/minecraft/world/entity/item/PrimedTnt.java
@@ -73,20 +73,7 @@ public class PrimedTnt extends Entity implements TraceableEntity, me.samsuik.sak
@@ -495,7 +509,7 @@ index 3e1aa60220ef67029f0d7679626d044dc84d8502..8e146df15dd0c86042fedf1d89396a74
// Sakura end - merge cannon entities
diff --git a/src/main/java/net/minecraft/world/level/Explosion.java b/src/main/java/net/minecraft/world/level/Explosion.java
index a6cf8b00b707f10c34c32eef0c2acd7e9d78e6c9..315518ec8114b5b02778410c5e12b682e67cdc09 100644
index eaf2201301813c68b5c0826394120daffdee72f8..f412c39d7f3b95152e76c63a589e298250e9c438 100644
--- a/src/main/java/net/minecraft/world/level/Explosion.java
+++ b/src/main/java/net/minecraft/world/level/Explosion.java
@@ -57,9 +57,11 @@ public class Explosion {
@@ -582,7 +596,7 @@ index a6cf8b00b707f10c34c32eef0c2acd7e9d78e6c9..315518ec8114b5b02778410c5e12b682
// use initial cache value that is most likely to be used: the source position
final ca.spottedleaf.moonrise.patches.collisions.ExplosionBlockCache initialCache;
{
@@ -972,7 +987,7 @@ public class Explosion {
@@ -966,7 +981,7 @@ public class Explosion {
private BlockInteraction() {}
}
// Paper start - Optimize explosions

View File

@@ -5,7 +5,7 @@ Subject: [PATCH] Optimise cannon entity movement
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
index d044262b2e1363151b8d076a9e3855db2a27254c..387217247431bf971dd612f42831552366de0510 100644
index 9e4ea632b757c187a32afecd0d6942b606ee96b3..f4bce733451105287b736df21f9ff934a09f0c5b 100644
--- a/src/main/java/net/minecraft/world/entity/Entity.java
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
@@ -1164,6 +1164,94 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
@@ -13,7 +13,7 @@ index d044262b2e1363151b8d076a9e3855db2a27254c..387217247431bf971dd612f428315523
}
// Paper end - detailed watchdog information
+ // Sakura start - optimise cannon entity movement; stripped back movement method
+ public void moveBasic(MoverType movementType, Vec3 movement) {
+ public final void moveStripped(MoverType movementType, Vec3 movement) {
+ io.papermc.paper.util.TickThread.ensureTickThread("Cannot move an entity off-main");
+
+ if (this.noPhysics) {
@@ -94,7 +94,7 @@ index d044262b2e1363151b8d076a9e3855db2a27254c..387217247431bf971dd612f428315523
+
+ float f = this.getBlockSpeedFactor();
+
+ this.multiplyDeltaMovement((double) f, 1.0D, (double) f); // Sakura - reduce movement allocations
+ this.setDeltaMovement(this.getDeltaMovement().multiply((double) f, 1.0D, (double) f));
+ this.level().getProfiler().pop();
+ }
+ }
@@ -200,7 +200,7 @@ index d044262b2e1363151b8d076a9e3855db2a27254c..387217247431bf971dd612f428315523
// Paper start - optimise collisions
final boolean xZero = movement.x == 0.0;
diff --git a/src/main/java/net/minecraft/world/entity/item/FallingBlockEntity.java b/src/main/java/net/minecraft/world/entity/item/FallingBlockEntity.java
index b873f6fce87afb048128d642f7588c18fcc6f7f5..7dd6f7df5927c55bcfdf3a4708155d49d207b5d4 100644
index 19eed968884f79a7982d96ae8c3c378f00afbdf9..cc5ef63a99a18f093f600612bf972cf50722e3a5 100644
--- a/src/main/java/net/minecraft/world/entity/item/FallingBlockEntity.java
+++ b/src/main/java/net/minecraft/world/entity/item/FallingBlockEntity.java
@@ -204,7 +204,7 @@ public class FallingBlockEntity extends Entity implements me.samsuik.sakura.enti
@@ -208,12 +208,12 @@ index b873f6fce87afb048128d642f7588c18fcc6f7f5..7dd6f7df5927c55bcfdf3a4708155d49
++this.time;
this.applyGravity();
- this.move(MoverType.SELF, this.getDeltaMovement());
+ this.moveBasic(MoverType.SELF, this.getDeltaMovement()); // Sakura - optimise cannon entity movement
+ this.moveStripped(MoverType.SELF, this.getDeltaMovement()); // Sakura - optimise cannon entity movement
// Paper start - Configurable falling blocks height nerf
if (this.level().paperConfig().fixes.fallingBlockHeightNerf.test(v -> this.getY() > v)) {
if (this.dropItem && this.level().getGameRules().getBoolean(GameRules.RULE_DOENTITYDROPS)) {
diff --git a/src/main/java/net/minecraft/world/entity/item/PrimedTnt.java b/src/main/java/net/minecraft/world/entity/item/PrimedTnt.java
index 767ad73a398e61b7b4a8c57078487252e70010a9..cc2f2dbee1d717d54014005ec57e8b864c2a7241 100644
index e048542cdd1fe9c807ce21e57af9cf59b4adb33f..fdbc990af4190f93f207c3309cf9f89613092c0a 100644
--- a/src/main/java/net/minecraft/world/entity/item/PrimedTnt.java
+++ b/src/main/java/net/minecraft/world/entity/item/PrimedTnt.java
@@ -124,7 +124,7 @@ public class PrimedTnt extends Entity implements TraceableEntity, me.samsuik.sak
@@ -221,7 +221,7 @@ index 767ad73a398e61b7b4a8c57078487252e70010a9..cc2f2dbee1d717d54014005ec57e8b86
this.handlePortal();
this.applyGravity();
- this.move(MoverType.SELF, this.getDeltaMovement());
+ this.moveBasic(MoverType.SELF, this.getDeltaMovement()); // Sakura - optimise cannon entity movement
+ this.moveStripped(MoverType.SELF, this.getDeltaMovement()); // Sakura - optimise cannon entity movement
// Paper start - Configurable TNT height nerf
if (this.level().paperConfig().fixes.tntEntityHeightNerf.test(v -> this.getY() > v)) {
this.discard(EntityRemoveEvent.Cause.OUT_OF_WORLD);

View File

@@ -5,7 +5,7 @@ Subject: [PATCH] Entity pushed by fluid API
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
index 387217247431bf971dd612f42831552366de0510..78821f286e5b0389d02dddbc1a9d8964a96c0af1 100644
index f4bce733451105287b736df21f9ff934a09f0c5b..9cf6d06b190b8236e68b9b49e53b0eefbeb777fe 100644
--- a/src/main/java/net/minecraft/world/entity/Entity.java
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
@@ -604,6 +604,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
@@ -16,7 +16,7 @@ index 387217247431bf971dd612f42831552366de0510..78821f286e5b0389d02dddbc1a9d8964
public Entity(EntityType<?> type, Level world) {
this.id = Entity.ENTITY_COUNTER.incrementAndGet();
@@ -4173,7 +4174,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
@@ -4168,7 +4169,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
}
public boolean isPushedByFluid() {

View File

@@ -5,7 +5,7 @@ Subject: [PATCH] Cannon Mechanics
diff --git a/src/main/java/net/minecraft/world/entity/item/FallingBlockEntity.java b/src/main/java/net/minecraft/world/entity/item/FallingBlockEntity.java
index 7dd6f7df5927c55bcfdf3a4708155d49d207b5d4..388b1985ee9e1d17f41aea7488efa99257f38076 100644
index cc5ef63a99a18f093f600612bf972cf50722e3a5..c1a2345cbf3f2004fc679b1b4b1691cff288c6e4 100644
--- a/src/main/java/net/minecraft/world/entity/item/FallingBlockEntity.java
+++ b/src/main/java/net/minecraft/world/entity/item/FallingBlockEntity.java
@@ -72,6 +72,7 @@ public class FallingBlockEntity extends Entity implements me.samsuik.sakura.enti
@@ -39,7 +39,7 @@ index 7dd6f7df5927c55bcfdf3a4708155d49d207b5d4..388b1985ee9e1d17f41aea7488efa992
protected double getDefaultGravity() {
return 0.04D;
diff --git a/src/main/java/net/minecraft/world/entity/item/PrimedTnt.java b/src/main/java/net/minecraft/world/entity/item/PrimedTnt.java
index cc2f2dbee1d717d54014005ec57e8b864c2a7241..7c2323bf7682254de14ed963e8d57b24dd55ad5f 100644
index fdbc990af4190f93f207c3309cf9f89613092c0a..ee5d0dd90ebc2eb3280c9047450f8eac5dca167c 100644
--- a/src/main/java/net/minecraft/world/entity/item/PrimedTnt.java
+++ b/src/main/java/net/minecraft/world/entity/item/PrimedTnt.java
@@ -96,6 +96,12 @@ public class PrimedTnt extends Entity implements TraceableEntity, me.samsuik.sak
@@ -48,8 +48,8 @@ index cc2f2dbee1d717d54014005ec57e8b864c2a7241..7c2323bf7682254de14ed963e8d57b24
this.owner = igniter;
+ // Sakura start - configure cannon mechanics
+ switch (world.sakuraConfig().cannons.mechanics.tntSpread) {
+ case NONE -> this.multiplyDeltaMovement(0, 0, 0);
+ case Y -> this.multiplyDeltaMovement(0, 1, 0);
+ case NONE -> this.setDeltaMovement(0.0, 0.0, 0.0);
+ case Y -> this.setDeltaMovement(this.getDeltaMovement().multiply(0.0, 1.0, 0.0));
+ }
+ // Sakura end - configure cannon mechanics
}

View File

@@ -5,7 +5,7 @@ Subject: [PATCH] Optimise TNT fluid state
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
index 78821f286e5b0389d02dddbc1a9d8964a96c0af1..4ff172a89cbbaba96e5c1056f9d9356a4da13499 100644
index 9cf6d06b190b8236e68b9b49e53b0eefbeb777fe..f005e68998d30ec3ab062e3d562d9d4c2a89dc67 100644
--- a/src/main/java/net/minecraft/world/entity/Entity.java
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
@@ -2152,7 +2152,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
@@ -18,7 +18,7 @@ index 78821f286e5b0389d02dddbc1a9d8964a96c0af1..4ff172a89cbbaba96e5c1056f9d9356a
if (entity instanceof Boat entityboat) {
diff --git a/src/main/java/net/minecraft/world/entity/item/PrimedTnt.java b/src/main/java/net/minecraft/world/entity/item/PrimedTnt.java
index 7c2323bf7682254de14ed963e8d57b24dd55ad5f..860aa93e2ae997beaacf3028e8fa7a8cfafece4e 100644
index ee5d0dd90ebc2eb3280c9047450f8eac5dca167c..64ebae26c3c58c94b9907a5819cdc09f4f748cf1 100644
--- a/src/main/java/net/minecraft/world/entity/item/PrimedTnt.java
+++ b/src/main/java/net/minecraft/world/entity/item/PrimedTnt.java
@@ -120,6 +120,21 @@ public class PrimedTnt extends Entity implements TraceableEntity, me.samsuik.sak

View File

@@ -5,7 +5,7 @@ Subject: [PATCH] Add maxSearch to getEntities
diff --git a/src/main/java/ca/spottedleaf/moonrise/patches/chunk_system/level/entity/ChunkEntitySlices.java b/src/main/java/ca/spottedleaf/moonrise/patches/chunk_system/level/entity/ChunkEntitySlices.java
index c140e3a73712d2123bc9ed09e9bab25e48c4420e..ee58a65582800be827c8f386ec2d50a2eadad404 100644
index 8126c4fdbbc586cf3722c6ee2986338de044602e..0a8f593784322454335236d6f0dbb6ec9a9b8332 100644
--- a/src/main/java/ca/spottedleaf/moonrise/patches/chunk_system/level/entity/ChunkEntitySlices.java
+++ b/src/main/java/ca/spottedleaf/moonrise/patches/chunk_system/level/entity/ChunkEntitySlices.java
@@ -336,10 +336,16 @@ public final class ChunkEntitySlices {

View File

@@ -5,7 +5,7 @@ Subject: [PATCH] Despawn falling blocks inside moving pistons
diff --git a/src/main/java/net/minecraft/world/entity/item/FallingBlockEntity.java b/src/main/java/net/minecraft/world/entity/item/FallingBlockEntity.java
index 388b1985ee9e1d17f41aea7488efa99257f38076..cde44444f88ab5feb481acca1f830d8131f80c2e 100644
index c1a2345cbf3f2004fc679b1b4b1691cff288c6e4..e7c6074a83be4d93367c7465b74d79b4c00d1afd 100644
--- a/src/main/java/net/minecraft/world/entity/item/FallingBlockEntity.java
+++ b/src/main/java/net/minecraft/world/entity/item/FallingBlockEntity.java
@@ -240,7 +240,7 @@ public class FallingBlockEntity extends Entity implements me.samsuik.sakura.enti

View File

@@ -124,7 +124,7 @@ index a8008c7550488be34b51f4280f5569170b1ebd1d..2e5a46b9d27b930870c68dbde93d8731
public String getDescriptionId() {
return this.getOrCreateDescriptionId();
diff --git a/src/main/java/net/minecraft/world/level/Explosion.java b/src/main/java/net/minecraft/world/level/Explosion.java
index 315518ec8114b5b02778410c5e12b682e67cdc09..3466ab0e81e0a2b20472c148278425855a6f4d1e 100644
index f412c39d7f3b95152e76c63a589e298250e9c438..91c8ceccf29bd25eb59a14a7d60c75a92bb016cb 100644
--- a/src/main/java/net/minecraft/world/level/Explosion.java
+++ b/src/main/java/net/minecraft/world/level/Explosion.java
@@ -144,7 +144,7 @@ public class Explosion {
@@ -158,7 +158,7 @@ index 315518ec8114b5b02778410c5e12b682e67cdc09..3466ab0e81e0a2b20472c14827842585
private boolean clipsAnything(final Vec3 from, final Vec3 to,
final ca.spottedleaf.moonrise.patches.collisions.CollisionUtil.LazyEntityCollisionContext context,
final ca.spottedleaf.moonrise.patches.collisions.ExplosionBlockCache[] blockCache,
@@ -840,6 +855,16 @@ public class Explosion {
@@ -834,6 +849,16 @@ public class Explosion {
// CraftBukkit start - TNTPrimeEvent
BlockState iblockdata = this.level.getBlockState(blockposition);
Block block = iblockdata.getBlock();

View File

@@ -5,7 +5,7 @@ Subject: [PATCH] Destroy Waterlogged Blocks
diff --git a/src/main/java/net/minecraft/world/level/Explosion.java b/src/main/java/net/minecraft/world/level/Explosion.java
index 3466ab0e81e0a2b20472c148278425855a6f4d1e..c81ab05f8b9a3d79ccf6fc89f23140a49a734912 100644
index 91c8ceccf29bd25eb59a14a7d60c75a92bb016cb..81284ec481ac6cc82d2b1171d1772c107d1a5a0c 100644
--- a/src/main/java/net/minecraft/world/level/Explosion.java
+++ b/src/main/java/net/minecraft/world/level/Explosion.java
@@ -167,6 +167,11 @@ public class Explosion {

View File

@@ -5,7 +5,7 @@ Subject: [PATCH] Falling Block Stacking Restrictions
diff --git a/src/main/java/net/minecraft/world/entity/item/FallingBlockEntity.java b/src/main/java/net/minecraft/world/entity/item/FallingBlockEntity.java
index cde44444f88ab5feb481acca1f830d8131f80c2e..f4c84e47b673066ee9ddc7a33c5fabdca7b9c563 100644
index e7c6074a83be4d93367c7465b74d79b4c00d1afd..b5ce3bbce3cc71bab5ec5e9c1c42e7b7a2cdefa3 100644
--- a/src/main/java/net/minecraft/world/entity/item/FallingBlockEntity.java
+++ b/src/main/java/net/minecraft/world/entity/item/FallingBlockEntity.java
@@ -258,7 +258,7 @@ public class FallingBlockEntity extends Entity implements me.samsuik.sakura.enti

View File

@@ -5,7 +5,7 @@ Subject: [PATCH] Consistent Explosion Radius
diff --git a/src/main/java/net/minecraft/world/level/Explosion.java b/src/main/java/net/minecraft/world/level/Explosion.java
index c81ab05f8b9a3d79ccf6fc89f23140a49a734912..f2543d250be7692dcebf29f19e34bd08961a60e0 100644
index 81284ec481ac6cc82d2b1171d1772c107d1a5a0c..0dd0397036309c881f955b78ba3934e33bcf18fd 100644
--- a/src/main/java/net/minecraft/world/level/Explosion.java
+++ b/src/main/java/net/minecraft/world/level/Explosion.java
@@ -76,6 +76,7 @@ public class Explosion {

View File

@@ -5,7 +5,7 @@ Subject: [PATCH] Remove spigot max tnt per tick
diff --git a/src/main/java/net/minecraft/world/entity/item/PrimedTnt.java b/src/main/java/net/minecraft/world/entity/item/PrimedTnt.java
index 860aa93e2ae997beaacf3028e8fa7a8cfafece4e..7d5fdcf1e0b3cd46e12e1ae102eadb8f198a68c4 100644
index 64ebae26c3c58c94b9907a5819cdc09f4f748cf1..56ad11f51e3ec395a88fa6d961cf8e99bde6b69f 100644
--- a/src/main/java/net/minecraft/world/entity/item/PrimedTnt.java
+++ b/src/main/java/net/minecraft/world/entity/item/PrimedTnt.java
@@ -142,7 +142,7 @@ public class PrimedTnt extends Entity implements TraceableEntity, me.samsuik.sak
@@ -16,4 +16,4 @@ index 860aa93e2ae997beaacf3028e8fa7a8cfafece4e..7d5fdcf1e0b3cd46e12e1ae102eadb8f
+ // Sakura - remove max tnt per tick
this.handlePortal();
this.applyGravity();
this.moveBasic(MoverType.SELF, this.getDeltaMovement()); // Sakura - optimise cannon entity movement
this.moveStripped(MoverType.SELF, this.getDeltaMovement()); // Sakura - optimise cannon entity movement

View File

@@ -67,7 +67,7 @@ index 740dc010cfd42941a6f9a2b2c543973429fdbfa3..523cd7cfd5e883cc4758ab9ad13251c3
if (xSmaller && z != 0.0) {
z = performAABBCollisionsZ(axisalignedbb, z, aabbs);
diff --git a/src/main/java/me/samsuik/sakura/explosion/special/SpecialisedExplosion.java b/src/main/java/me/samsuik/sakura/explosion/special/SpecialisedExplosion.java
index 268db3306a46cbd89bffb51f1bce8446aaed4175..2167156ff6d2dec2daee4052dec87a013663bb6e 100644
index 709dc51ab4c9e8dad26cf883eebb3902a95bebf8..db6e7f8a8faf38612dc5191001975333a9f2ca59 100644
--- a/src/main/java/me/samsuik/sakura/explosion/special/SpecialisedExplosion.java
+++ b/src/main/java/me/samsuik/sakura/explosion/special/SpecialisedExplosion.java
@@ -177,9 +177,15 @@ public abstract class SpecialisedExplosion<T extends Entity> extends Explosion {
@@ -88,7 +88,7 @@ index 268db3306a46cbd89bffb51f1bce8446aaed4175..2167156ff6d2dec2daee4052dec87a01
if (distance != 0.0D) {
x /= distance;
diff --git a/src/main/java/me/samsuik/sakura/explosion/special/TntExplosion.java b/src/main/java/me/samsuik/sakura/explosion/special/TntExplosion.java
index 605a0e78a19befeec902f3cb8bc84a55679e6904..07079e1d29cbc479dfd91956b8c6c2296959b428 100644
index 2275999c5b6d9a6af59aa2539663e0edf575539f..43f26e1ec641f9dbaeba96ac3024d5cec1e8ed06 100644
--- a/src/main/java/me/samsuik/sakura/explosion/special/TntExplosion.java
+++ b/src/main/java/me/samsuik/sakura/explosion/special/TntExplosion.java
@@ -39,6 +39,13 @@ public final class TntExplosion extends SpecialisedExplosion<PrimedTnt> {
@@ -106,7 +106,7 @@ index 605a0e78a19befeec902f3cb8bc84a55679e6904..07079e1d29cbc479dfd91956b8c6c229
protected int getExplosionCount() {
return this.cause.getMergeEntityData().getCount();
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
index 4ff172a89cbbaba96e5c1056f9d9356a4da13499..59635ea26387d3ea4c6bb5a64f32b7c5d9f1a5e2 100644
index f005e68998d30ec3ab062e3d562d9d4c2a89dc67..b81522bf1f7cc3745f275b1d3eedd80cecc01527 100644
--- a/src/main/java/net/minecraft/world/entity/Entity.java
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
@@ -385,7 +385,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
@@ -252,7 +252,7 @@ index 4ff172a89cbbaba96e5c1056f9d9356a4da13499..59635ea26387d3ea4c6bb5a64f32b7c5
if (this.level().hasChunksAt(blockposition, blockposition1)) {
BlockPos.MutableBlockPos blockposition_mutableblockposition = new BlockPos.MutableBlockPos();
diff --git a/src/main/java/net/minecraft/world/entity/item/FallingBlockEntity.java b/src/main/java/net/minecraft/world/entity/item/FallingBlockEntity.java
index f4c84e47b673066ee9ddc7a33c5fabdca7b9c563..42481aae8b4eb6a3a25fa96f1187774493009e46 100644
index b5ce3bbce3cc71bab5ec5e9c1c42e7b7a2cdefa3..bb6bd75645d18933f6d1b5c68a33f28e30b5ac2d 100644
--- a/src/main/java/net/minecraft/world/entity/item/FallingBlockEntity.java
+++ b/src/main/java/net/minecraft/world/entity/item/FallingBlockEntity.java
@@ -147,6 +147,8 @@ public class FallingBlockEntity extends Entity implements me.samsuik.sakura.enti
@@ -337,14 +337,14 @@ index f4c84e47b673066ee9ddc7a33c5fabdca7b9c563..42481aae8b4eb6a3a25fa96f11877744
+ // Sakura end - physics version api
++this.time;
this.applyGravity();
this.moveBasic(MoverType.SELF, this.getDeltaMovement()); // Sakura - optimise cannon entity movement
this.moveStripped(MoverType.SELF, this.getDeltaMovement()); // Sakura - optimise cannon entity movement
@@ -225,8 +273,15 @@ public class FallingBlockEntity extends Entity implements me.samsuik.sakura.enti
}
// Paper end - Configurable falling blocks height nerf
this.handlePortal();
+ // Sakura start - physics version api
+ if (this.physics.before(1_12_0)) {
+ this.scaleDeltaMovement(0.98F);
+ this.setDeltaMovement(this.getDeltaMovement().scale(0.98F));
+ }
if (!this.level().isClientSide && (this.isAlive() || this.forceTickAfterTeleportToDuplicate)) {
- BlockPos blockposition = this.blockPosition();
@@ -359,11 +359,11 @@ index f4c84e47b673066ee9ddc7a33c5fabdca7b9c563..42481aae8b4eb6a3a25fa96f11877744
} else {
BlockState iblockdata = this.level().getBlockState(blockposition);
- this.multiplyDeltaMovement(0.7D, -0.5D, 0.7D); // Sakura - reduce movement allocations
- this.setDeltaMovement(this.getDeltaMovement().multiply(0.7D, -0.5D, 0.7D));
- if (!iblockdata.is(Blocks.MOVING_PISTON)) {
+ // Sakura start - physics version api
+ double friction = this.physics.before(1_14_0) ? 0.7F : 0.7D;
+ this.multiplyDeltaMovement(friction, -0.5D, friction); // Sakura - reduce movement allocations
+ this.setDeltaMovement(this.getDeltaMovement().multiply(friction, -0.5D, friction));
+ if (!iblockdata.is(Blocks.MOVING_PISTON) && (flag1 || !this.physics.isWithin(1_9_0, 1_12_0) || this.isAbleToStackOnBlock())) {
+ // Sakura end - physics version api
if (!this.cancelDrop) {
@@ -373,29 +373,29 @@ index f4c84e47b673066ee9ddc7a33c5fabdca7b9c563..42481aae8b4eb6a3a25fa96f11877744
}
}
- this.scaleDeltaMovement(0.98D); // Sakura - reduce movement allocations
- this.setDeltaMovement(this.getDeltaMovement().scale(0.98D));
+ // Sakura start - physics version api
+ if (this.physics.afterOrEqual(1_12_0)) {
+ double drag = this.physics.before(1_14_0) ? 0.98F : 0.98D;
+ this.scaleDeltaMovement(drag); // Sakura - reduce movement allocations
+ this.setDeltaMovement(this.getDeltaMovement().scale(drag));
+ }
+ // Sakura end - physics version api
}
}
diff --git a/src/main/java/net/minecraft/world/entity/item/PrimedTnt.java b/src/main/java/net/minecraft/world/entity/item/PrimedTnt.java
index 7d5fdcf1e0b3cd46e12e1ae102eadb8f198a68c4..a17491a826accc23fbafcdf07ed66293cd8ae5bf 100644
index 56ad11f51e3ec395a88fa6d961cf8e99bde6b69f..095727d28139ffcda0da3be83b329ace6e28d551 100644
--- a/src/main/java/net/minecraft/world/entity/item/PrimedTnt.java
+++ b/src/main/java/net/minecraft/world/entity/item/PrimedTnt.java
@@ -102,6 +102,13 @@ public class PrimedTnt extends Entity implements TraceableEntity, me.samsuik.sak
case Y -> this.multiplyDeltaMovement(0, 1, 0);
case Y -> this.setDeltaMovement(this.getDeltaMovement().multiply(0.0, 1.0, 0.0));
}
// Sakura end - configure cannon mechanics
+ // Sakura start - physics version api
+ this.physics = world.localConfig().config(this.blockPosition()).physicsVersion;
+ this.eyeHeight = this.physics.isLegacy() ? 0.49f : this.eyeHeight;
+ if (this.physics.isLegacy()) {
+ this.multiplyDeltaMovement(0.0, 1.0, 0.0);
+ this.setDeltaMovement(this.getDeltaMovement().multiply(0.0, 1.0, 0.0));
+ }
+ // Sakura end - physics version api
}
@@ -433,14 +433,14 @@ index 7d5fdcf1e0b3cd46e12e1ae102eadb8f198a68c4..a17491a826accc23fbafcdf07ed66293
return;
}
// Paper end - Configurable TNT height nerf
- this.scaleDeltaMovement(0.98D); // Sakura - reduce movement allocations
- this.setDeltaMovement(this.getDeltaMovement().scale(0.98D));
+ // Sakura start - physics version api
+ double drag = this.physics.before(1_14_0) ? 0.98F : 0.98D;
+ this.scaleDeltaMovement(drag); // Sakura - reduce movement allocations
+ this.setDeltaMovement(this.getDeltaMovement().scale(drag));
if (this.onGround()) {
- this.multiplyDeltaMovement(0.7D, -0.5D, 0.7D); // Sakura - reduce movement allocations
- this.setDeltaMovement(this.getDeltaMovement().multiply(0.7D, -0.5D, 0.7D));
+ double friction = this.physics.before(1_14_0) ? 0.7F : 0.7D;
+ this.multiplyDeltaMovement(friction, -0.5D, friction); // Sakura - reduce movement allocations
+ this.setDeltaMovement(this.getDeltaMovement().multiply(friction, -0.5D, friction));
+ // Sakura end - physics version api
}
@@ -474,7 +474,7 @@ index 7d5fdcf1e0b3cd46e12e1ae102eadb8f198a68c4..a17491a826accc23fbafcdf07ed66293
// Paper end - Option to prevent TNT from moving in water
}
diff --git a/src/main/java/net/minecraft/world/level/Explosion.java b/src/main/java/net/minecraft/world/level/Explosion.java
index f2543d250be7692dcebf29f19e34bd08961a60e0..bb16b526b512ebb15fedcc85c3f9b24693f7e00b 100644
index 0dd0397036309c881f955b78ba3934e33bcf18fd..22fa16f67100c68668a99312e38475499acac38a 100644
--- a/src/main/java/net/minecraft/world/level/Explosion.java
+++ b/src/main/java/net/minecraft/world/level/Explosion.java
@@ -77,6 +77,7 @@ public class Explosion {
@@ -539,7 +539,7 @@ index f2543d250be7692dcebf29f19e34bd08961a60e0..bb16b526b512ebb15fedcc85c3f9b246
if (d11 != 0.0D) {
d8 /= d11;
@@ -1023,7 +1043,7 @@ public class Explosion {
@@ -1017,7 +1037,7 @@ public class Explosion {
// Sakura start - replace density cache
float blockDensity = this.level.densityCache.getDensity(vec3d, entity);
if (blockDensity == me.samsuik.sakura.explosion.density.BlockDensityCache.UNKNOWN_DENSITY) {
@@ -548,7 +548,7 @@ index f2543d250be7692dcebf29f19e34bd08961a60e0..bb16b526b512ebb15fedcc85c3f9b246
this.level.densityCache.putDensity(vec3d, entity, blockDensity);
// Sakura end - replace density cache
}
@@ -1031,6 +1051,17 @@ public class Explosion {
@@ -1025,6 +1045,17 @@ public class Explosion {
return blockDensity;
}
@@ -1215,7 +1215,7 @@ index d555ad1dd2f648b84920eceec6cc99e8801334b3..b2ecc615379856f661ba87bdeb28f75a
}
diff --git a/src/main/java/net/minecraft/world/level/material/FlowingFluid.java b/src/main/java/net/minecraft/world/level/material/FlowingFluid.java
index 9dda53434f72a14567fc77275726d67183f13317..70ff7e116e83ab3d4aaa39d2644a9ef3e5a89e95 100644
index 1c82ff348769655f20ba4fde7914a326e072afce..700226cc972693336987184c761c0c8808fd77ad 100644
--- a/src/main/java/net/minecraft/world/level/material/FlowingFluid.java
+++ b/src/main/java/net/minecraft/world/level/material/FlowingFluid.java
@@ -514,7 +514,7 @@ public abstract class FlowingFluid extends Fluid {

View File

@@ -5,7 +5,7 @@ Subject: [PATCH] Configure concrete solidifying in water
diff --git a/src/main/java/net/minecraft/world/entity/item/FallingBlockEntity.java b/src/main/java/net/minecraft/world/entity/item/FallingBlockEntity.java
index 42481aae8b4eb6a3a25fa96f1187774493009e46..7a130dbd04b24b2905fbc2a6f9303aae7fd61fd9 100644
index bb6bd75645d18933f6d1b5c68a33f28e30b5ac2d..89bdc1db40227ead1675645ec7711874a75ca9ca 100644
--- a/src/main/java/net/minecraft/world/entity/item/FallingBlockEntity.java
+++ b/src/main/java/net/minecraft/world/entity/item/FallingBlockEntity.java
@@ -282,7 +282,7 @@ public class FallingBlockEntity extends Entity implements me.samsuik.sakura.enti

View File

@@ -5,7 +5,7 @@ Subject: [PATCH] Allow explosions to destroy lava
diff --git a/src/main/java/net/minecraft/world/level/Explosion.java b/src/main/java/net/minecraft/world/level/Explosion.java
index bb16b526b512ebb15fedcc85c3f9b24693f7e00b..20bbf3f6f93178113170821700b5910c4a420878 100644
index 22fa16f67100c68668a99312e38475499acac38a..6fbdbaa399c9381ea6906e7af7a7a29a4adb1666 100644
--- a/src/main/java/net/minecraft/world/level/Explosion.java
+++ b/src/main/java/net/minecraft/world/level/Explosion.java
@@ -174,6 +174,11 @@ public class Explosion {

View File

@@ -47,17 +47,16 @@ index 523cd7cfd5e883cc4758ab9ad13251c3c38584cb..bc70364df17b9e893c1c774fed619999
blockCollision = blockData.getCollisionShape(world, mutablePos, collisionShape);
}
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
index 59635ea26387d3ea4c6bb5a64f32b7c5d9f1a5e2..85f1d44ba59d348d9c364ed684cc5df6a1eada29 100644
index b81522bf1f7cc3745f275b1d3eedd80cecc01527..0886a33b036518083b86ca552521ef388d7055dd 100644
--- a/src/main/java/net/minecraft/world/entity/Entity.java
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
@@ -565,6 +565,15 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
@@ -565,6 +565,14 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
flags |= ca.spottedleaf.moonrise.patches.collisions.CollisionUtil.COLLISION_FLAG_ADD_TICKET;
}
+ // Sakura start - treat solid blocks as full when moving fast
+ if (this.level().sakuraConfig().cannons.treatAllBlocksAsFullWhenMoving && (this.isPrimedTNT || this.isFallingBlock)) {
+ this.syncDeltaMovement();
+ double horizontalMovementSqr = this.movementX*this.movementX + this.movementZ*this.movementZ;
+ double horizontalMovementSqr = this.getDeltaMovement().horizontalDistanceSqr();
+ if (horizontalMovementSqr > Math.pow(this.level().sakuraConfig().cannons.treatAllBlocksAsFullWhenMovingFasterThan, 2.0)) {
+ flags |= ca.spottedleaf.moonrise.patches.collisions.CollisionUtil.COLLISION_FLAG_FULL_BLOCKS;
+ }

View File

@@ -5,7 +5,7 @@ Subject: [PATCH] Configure fluids breaking redstone
diff --git a/src/main/java/net/minecraft/world/level/material/FlowingFluid.java b/src/main/java/net/minecraft/world/level/material/FlowingFluid.java
index 70ff7e116e83ab3d4aaa39d2644a9ef3e5a89e95..eb7333d2740a666b2302ff3200020dddf3985532 100644
index 700226cc972693336987184c761c0c8808fd77ad..626b3c04547ca253b254604c8bf5fa004eed806a 100644
--- a/src/main/java/net/minecraft/world/level/material/FlowingFluid.java
+++ b/src/main/java/net/minecraft/world/level/material/FlowingFluid.java
@@ -466,6 +466,10 @@ public abstract class FlowingFluid extends Fluid {

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Add explosions dropping items config
diff --git a/src/main/java/net/minecraft/world/level/Explosion.java b/src/main/java/net/minecraft/world/level/Explosion.java
index 20bbf3f6f93178113170821700b5910c4a420878..0c2650da2f0288318efd9428bdc2e62918dc4d23 100644
index 6fbdbaa399c9381ea6906e7af7a7a29a4adb1666..cfcbbea230982cfa0f496eebcdc660c859650199 100644
--- a/src/main/java/net/minecraft/world/level/Explosion.java
+++ b/src/main/java/net/minecraft/world/level/Explosion.java
@@ -917,6 +917,11 @@ public class Explosion {
@@ -911,6 +911,11 @@ public class Explosion {
this.level.densityCache.clear(-1);
}
// Sakura end - explosion density cache

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Optimise check inside blocks and fluids
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
index 85f1d44ba59d348d9c364ed684cc5df6a1eada29..012dec6d31e3932ed4a50e8c5c64a9e7751690cd 100644
index 0886a33b036518083b86ca552521ef388d7055dd..cb3202e3cc4f87f606d8b2eb2a7a59bacae2077d 100644
--- a/src/main/java/net/minecraft/world/entity/Entity.java
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
@@ -1924,18 +1924,37 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
@@ -1923,18 +1923,37 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
BlockPos blockposition1 = BlockPos.containing(axisalignedbb.maxX - offset, axisalignedbb.maxY - offset, axisalignedbb.maxZ - offset);
// Sakura end - physics version api
@@ -50,7 +50,7 @@ index 85f1d44ba59d348d9c364ed684cc5df6a1eada29..012dec6d31e3932ed4a50e8c5c64a9e7
try {
iblockdata.entityInside(this.level(), blockposition_mutableblockposition, this);
@@ -4717,7 +4736,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
@@ -4711,7 +4730,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
}
public boolean updateFluidHeightAndDoFluidPushing(TagKey<Fluid> tag, double speed) {
@@ -59,7 +59,7 @@ index 85f1d44ba59d348d9c364ed684cc5df6a1eada29..012dec6d31e3932ed4a50e8c5c64a9e7
return false;
} else {
AABB axisalignedbb = this.getBoundingBox().deflate(0.001D);
@@ -4734,11 +4753,30 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
@@ -4728,11 +4747,30 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
int k1 = 0;
BlockPos.MutableBlockPos blockposition_mutableblockposition = new BlockPos.MutableBlockPos();

View File

@@ -6,7 +6,7 @@ Subject: [PATCH] Fix doEntityDrops gamerule preventing falling blocks from
diff --git a/src/main/java/net/minecraft/world/entity/item/FallingBlockEntity.java b/src/main/java/net/minecraft/world/entity/item/FallingBlockEntity.java
index 7a130dbd04b24b2905fbc2a6f9303aae7fd61fd9..ad554a9361d6b27cc9f67f72cb7473622a53be1a 100644
index 89bdc1db40227ead1675645ec7711874a75ca9ca..00f35010f927cfbe7e41131b1404b7ca92ebf6bd 100644
--- a/src/main/java/net/minecraft/world/entity/item/FallingBlockEntity.java
+++ b/src/main/java/net/minecraft/world/entity/item/FallingBlockEntity.java
@@ -357,10 +357,14 @@ public class FallingBlockEntity extends Entity implements me.samsuik.sakura.enti

View File

@@ -21,10 +21,10 @@ index a7ac1afc9db4daba86a492aea3a528806605231b..21b0c3f32e1a3837f040390514a30756
} else { entity.inactiveTick(); } // Paper - EAR 2
this.getProfiler().pop();
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
index 012dec6d31e3932ed4a50e8c5c64a9e7751690cd..b5dc81e3fb62e82b3524ab812d4d194cb5fe101e 100644
index cb3202e3cc4f87f606d8b2eb2a7a59bacae2077d..e8914a99346a4551888ef0ad2633cf68a364d891 100644
--- a/src/main/java/net/minecraft/world/entity/Entity.java
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
@@ -621,6 +621,19 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
@@ -620,6 +620,19 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
return this.physics;
}
// Sakura end - physics version api
@@ -44,7 +44,7 @@ index 012dec6d31e3932ed4a50e8c5c64a9e7751690cd..b5dc81e3fb62e82b3524ab812d4d194c
public Entity(EntityType<?> type, Level world) {
this.id = Entity.ENTITY_COUNTER.incrementAndGet();
@@ -670,6 +683,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
@@ -669,6 +682,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
this.entityData = datawatcher_a.build();
this.setPos(0.0D, 0.0D, 0.0D);
this.eyeHeight = this.dimensions.eyeHeight();

View File

@@ -5,7 +5,7 @@ Subject: [PATCH] Protect scaffolding from creepers
diff --git a/src/main/java/net/minecraft/world/level/Explosion.java b/src/main/java/net/minecraft/world/level/Explosion.java
index 0c2650da2f0288318efd9428bdc2e62918dc4d23..8b657d566445a7a2bda5f9e41f7e8633ce03abd1 100644
index cfcbbea230982cfa0f496eebcdc660c859650199..5d0db6c87467b6b2bda37b2e3cf5eb76573069a6 100644
--- a/src/main/java/net/minecraft/world/level/Explosion.java
+++ b/src/main/java/net/minecraft/world/level/Explosion.java
@@ -179,6 +179,11 @@ public class Explosion {