mirror of
https://github.com/Samsuik/Sakura.git
synced 2025-12-19 14:59:30 +00:00
a
This commit is contained in:
@@ -85,7 +85,7 @@ index cffd3f64b253dba53eacc60c8ae82dd297f98e5b..68e2b26835a2588a047e9ea175eb8e49
|
||||
if (!(this instanceof ServerPlayer) && removalReason != RemovalReason.CHANGED_DIMENSION && !alreadyRemoved) {
|
||||
// Players need to be special cased, because they are regularly removed from the world
|
||||
diff --git a/net/minecraft/world/entity/item/FallingBlockEntity.java b/net/minecraft/world/entity/item/FallingBlockEntity.java
|
||||
index 45f08a65d8b423fbf69f66d695bb9d67cf0f2f23..6f0b77e77186dd394b5949977e3e1a66610bc354 100644
|
||||
index 45f08a65d8b423fbf69f66d695bb9d67cf0f2f23..3af6e04bb4dcd91de2794bbc8d3eff16def9efa8 100644
|
||||
--- a/net/minecraft/world/entity/item/FallingBlockEntity.java
|
||||
+++ b/net/minecraft/world/entity/item/FallingBlockEntity.java
|
||||
@@ -50,7 +50,7 @@ import net.minecraft.world.phys.HitResult;
|
||||
@@ -131,7 +131,7 @@ index 45f08a65d8b423fbf69f66d695bb9d67cf0f2f23..6f0b77e77186dd394b5949977e3e1a66
|
||||
+
|
||||
+ // If you horizontal stack into a moving piston block this condition will be met.
|
||||
+ if (!fallingBlock.isRemoved()) {
|
||||
+ this.mergeData.setCount(count + 1);
|
||||
+ this.mergeData.count = count + 1;
|
||||
+ fallingBlock.storeEntityState();
|
||||
+ fallingBlock.entityState().apply(this);
|
||||
+ break;
|
||||
@@ -144,7 +144,7 @@ index 45f08a65d8b423fbf69f66d695bb9d67cf0f2f23..6f0b77e77186dd394b5949977e3e1a66
|
||||
+ @Override
|
||||
+ public @Nullable ItemEntity spawnAtLocation(ServerLevel level, net.minecraft.world.level.ItemLike item) { // may be overridden by plugins
|
||||
+ ItemEntity itemEntity = null;
|
||||
+ for (int i = 0; i < this.mergeData.getCount(); ++i) {
|
||||
+ for (int i = 0; i < this.mergeData.count; ++i) {
|
||||
+ itemEntity = super.spawnAtLocation(level, item);
|
||||
+ }
|
||||
+ return itemEntity;
|
||||
@@ -157,7 +157,7 @@ index 45f08a65d8b423fbf69f66d695bb9d67cf0f2f23..6f0b77e77186dd394b5949977e3e1a66
|
||||
this.heightParity = level.sakuraConfig().cannons.mechanics.fallingBlockParity; // Sakura - configure cannon mechanics
|
||||
this.isFallingBlock = true; // Sakura - client visibility settings
|
||||
this.loadChunks = level.sakuraConfig().cannons.loadChunks; // Sakura - load chunks on movement
|
||||
+ this.mergeData.setMergeLevel(level.sakuraConfig().cannons.mergeLevel); // Sakura - merge cannon entities
|
||||
+ this.mergeData.mergeLevel = level.sakuraConfig().cannons.mergeLevel; // Sakura - merge cannon entities
|
||||
}
|
||||
|
||||
public FallingBlockEntity(Level level, double x, double y, double z, BlockState state) {
|
||||
@@ -165,7 +165,7 @@ index 45f08a65d8b423fbf69f66d695bb9d67cf0f2f23..6f0b77e77186dd394b5949977e3e1a66
|
||||
return;
|
||||
}
|
||||
// CraftBukkit end
|
||||
+ if (this.respawnEntity()) return; // Sakura - merge cannon entities
|
||||
+ if (this.tryToRespawnEntity()) return; // Sakura - merge cannon entities
|
||||
if (this.level().setBlock(blockPos, this.blockState, 3)) {
|
||||
((ServerLevel)this.level())
|
||||
.getChunkSource()
|
||||
@@ -173,7 +173,7 @@ index 45f08a65d8b423fbf69f66d695bb9d67cf0f2f23..6f0b77e77186dd394b5949977e3e1a66
|
||||
|
||||
compound.putBoolean("CancelDrop", this.cancelDrop);
|
||||
if (!this.autoExpire) compound.putBoolean("Paper.AutoExpire", false); // Paper - Expand FallingBlock API
|
||||
+ compound.putInt("merge_count", this.mergeData.getCount()); // Sakura - merge cannon entities; save to nbt
|
||||
+ compound.putInt("merge_count", this.mergeData.count); // Sakura - merge cannon entities; save to nbt
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -181,12 +181,12 @@ index 45f08a65d8b423fbf69f66d695bb9d67cf0f2f23..6f0b77e77186dd394b5949977e3e1a66
|
||||
this.blockData = compound.getCompound("TileEntityData").map(blockData -> this.level().paperConfig().entities.spawning.filterBadTileEntityNbtFromFallingBlocks && this.blockState.getBlock() instanceof net.minecraft.world.level.block.GameMasterBlock ? null : blockData).map(CompoundTag::copy).orElse(null); // Paper - Filter bad block entity nbt data from falling blocks
|
||||
this.cancelDrop = compound.getBooleanOr("CancelDrop", false);
|
||||
this.autoExpire = compound.getBooleanOr("Paper.AutoExpire", true); // Paper - Expand FallingBlock API
|
||||
+ this.mergeData.setCount(compound.getIntOr("merge_count", 1)); // Sakura - merge cannon entities; load from nbt
|
||||
+ this.mergeData.count = compound.getIntOr("merge_count", 1); // Sakura - merge cannon entities; load from nbt
|
||||
}
|
||||
|
||||
public void setHurtsEntities(float fallDamagePerDistance, int fallDamageMax) {
|
||||
diff --git a/net/minecraft/world/entity/item/PrimedTnt.java b/net/minecraft/world/entity/item/PrimedTnt.java
|
||||
index 0fbac85dd7b624899db3825149a5d2b167ecedaa..13fdcee0437695ae22180c6091b7aa72a1f1d087 100644
|
||||
index 0fbac85dd7b624899db3825149a5d2b167ecedaa..a1cbeb8216edda93ac6043b113314d53e9347fd6 100644
|
||||
--- a/net/minecraft/world/entity/item/PrimedTnt.java
|
||||
+++ b/net/minecraft/world/entity/item/PrimedTnt.java
|
||||
@@ -35,7 +35,7 @@ import org.bukkit.event.entity.EntityRemoveEvent;
|
||||
@@ -243,7 +243,7 @@ index 0fbac85dd7b624899db3825149a5d2b167ecedaa..13fdcee0437695ae22180c6091b7aa72
|
||||
this.blocksBuilding = true;
|
||||
this.isPrimedTNT = true; // Sakura - client visibility settings
|
||||
this.loadChunks = level.sakuraConfig().cannons.loadChunks; // Sakura - load chunks on movement
|
||||
+ this.mergeData.setMergeLevel(level.sakuraConfig().cannons.mergeLevel); // Sakura - merge cannon entities
|
||||
+ this.mergeData.mergeLevel = level.sakuraConfig().cannons.mergeLevel; // Sakura - merge cannon entities
|
||||
}
|
||||
|
||||
public PrimedTnt(Level level, double x, double y, double z, @Nullable LivingEntity owner) {
|
||||
@@ -251,7 +251,7 @@ index 0fbac85dd7b624899db3825149a5d2b167ecedaa..13fdcee0437695ae22180c6091b7aa72
|
||||
if (i <= 0) {
|
||||
// CraftBukkit start - Need to reverse the order of the explosion and the entity death so we have a location for the event
|
||||
//this.discard();
|
||||
+ this.respawnEntity(); // Sakura - merge cannon entities
|
||||
+ this.tryToRespawnEntity(); // Sakura - merge cannon entities
|
||||
if (!this.level().isClientSide) {
|
||||
this.explode();
|
||||
}
|
||||
@@ -259,7 +259,7 @@ index 0fbac85dd7b624899db3825149a5d2b167ecedaa..13fdcee0437695ae22180c6091b7aa72
|
||||
if (this.explosionPower != 4.0F) {
|
||||
compound.putFloat("explosion_power", this.explosionPower);
|
||||
}
|
||||
+ compound.putInt("merge_count", this.mergeData.getCount()); // Sakura - merge cannon entities; save to nbt
|
||||
+ compound.putInt("merge_count", this.mergeData.count); // Sakura - merge cannon entities; save to nbt
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -267,7 +267,7 @@ index 0fbac85dd7b624899db3825149a5d2b167ecedaa..13fdcee0437695ae22180c6091b7aa72
|
||||
this.setFuse(compound.getShortOr("fuse", (short)80));
|
||||
this.setBlockState(compound.read("block_state", BlockState.CODEC, registryOps).orElse(DEFAULT_BLOCK_STATE));
|
||||
this.explosionPower = Mth.clamp(compound.getFloatOr("explosion_power", 4.0F), 0.0F, 128.0F);
|
||||
+ this.mergeData.setCount(compound.getIntOr("merge_count", 1)); // Sakura - merge cannon entities; load from nbt
|
||||
+ this.mergeData.count = compound.getIntOr("merge_count", 1); // Sakura - merge cannon entities; load from nbt
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@@ -310,7 +310,7 @@ index 42ee3f32fe44c1f0680c994a69201f7bd7792673..96c977df11c660ccb9a9b32e61c86508
|
||||
|
||||
protected abstract int getSignalForState(BlockState state);
|
||||
diff --git a/net/minecraft/world/level/block/WeightedPressurePlateBlock.java b/net/minecraft/world/level/block/WeightedPressurePlateBlock.java
|
||||
index 5e095919828e89d12f2676b3c544842a81e047a1..94d699f1b8b1a85ea36341985666b21fcaaac761 100644
|
||||
index 5e095919828e89d12f2676b3c544842a81e047a1..e47a5010baea87ebf472ccac9ae98ede7a490b50 100644
|
||||
--- a/net/minecraft/world/level/block/WeightedPressurePlateBlock.java
|
||||
+++ b/net/minecraft/world/level/block/WeightedPressurePlateBlock.java
|
||||
@@ -39,6 +39,11 @@ public class WeightedPressurePlateBlock extends BasePressurePlateBlock {
|
||||
@@ -330,7 +330,7 @@ index 5e095919828e89d12f2676b3c544842a81e047a1..94d699f1b8b1a85ea36341985666b21f
|
||||
// We only want to block turning the plate on if all events are cancelled
|
||||
if (!cancellable.isCancelled()) {
|
||||
- min++;
|
||||
+ min += !entityInside && entity instanceof me.samsuik.sakura.entity.merge.MergeableEntity mergeEntity ? mergeEntity.getMergeEntityData().getCount() : 1; // Sakura - merge cannon entities
|
||||
+ min += !entityInside && entity instanceof me.samsuik.sakura.entity.merge.MergeableEntity mergeEntity ? mergeEntity.getMergeEntityData().count : 1; // Sakura - merge cannon entities
|
||||
}
|
||||
}
|
||||
// CraftBukkit end
|
||||
|
||||
@@ -5,7 +5,7 @@ Subject: [PATCH] Specialised Explosions
|
||||
|
||||
|
||||
diff --git a/net/minecraft/server/level/ServerLevel.java b/net/minecraft/server/level/ServerLevel.java
|
||||
index ae0b6d506f0344249bdc238fff0f5a3306d05334..919793ba79ab19e86e42a8a97711563e504c0aed 100644
|
||||
index fab973cb02218458f23e59665b4f2deb5d54da8d..b9806bdd4d49ed3fd8c17125143703b6a792b10e 100644
|
||||
--- a/net/minecraft/server/level/ServerLevel.java
|
||||
+++ b/net/minecraft/server/level/ServerLevel.java
|
||||
@@ -1891,7 +1891,16 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe
|
||||
@@ -52,7 +52,7 @@ index ae0b6d506f0344249bdc238fff0f5a3306d05334..919793ba79ab19e86e42a8a97711563e
|
||||
|
||||
private Explosion.BlockInteraction getDestroyType(GameRules.Key<GameRules.BooleanValue> decayGameRule) {
|
||||
diff --git a/net/minecraft/world/entity/item/PrimedTnt.java b/net/minecraft/world/entity/item/PrimedTnt.java
|
||||
index 13fdcee0437695ae22180c6091b7aa72a1f1d087..57cfc90b3193fe8603cf10c444ae9be6dce8e584 100644
|
||||
index a1cbeb8216edda93ac6043b113314d53e9347fd6..3511e852aebabed8d5f40611db4573f55ca21875 100644
|
||||
--- a/net/minecraft/world/entity/item/PrimedTnt.java
|
||||
+++ b/net/minecraft/world/entity/item/PrimedTnt.java
|
||||
@@ -80,20 +80,7 @@ public class PrimedTnt extends Entity implements TraceableEntity, me.samsuik.sak
|
||||
@@ -73,7 +73,7 @@ index 13fdcee0437695ae22180c6091b7aa72a1f1d087..57cfc90b3193fe8603cf10c444ae9be6
|
||||
-
|
||||
- this.tick();
|
||||
- }
|
||||
+ this.mergeData.setCount(count); // Sakura - specialised explosions
|
||||
+ this.mergeData.count = count; // Sakura - specialised explosions
|
||||
}
|
||||
// Sakura end - merge cannon entities
|
||||
|
||||
|
||||
@@ -150,7 +150,7 @@ index 68e2b26835a2588a047e9ea175eb8e4912041976..98107921d7251e1b7fc621103a31afdf
|
||||
protected Vec3 collide(Vec3 movement) {
|
||||
final boolean xZero = movement.x == 0.0;
|
||||
diff --git a/net/minecraft/world/entity/item/FallingBlockEntity.java b/net/minecraft/world/entity/item/FallingBlockEntity.java
|
||||
index 6f0b77e77186dd394b5949977e3e1a66610bc354..0dc8c7a74df21e10d3eec66682d5efc61b335e61 100644
|
||||
index 3af6e04bb4dcd91de2794bbc8d3eff16def9efa8..e0cee4cda2fb2d55e1da0cedc71cdc0c445108d0 100644
|
||||
--- a/net/minecraft/world/entity/item/FallingBlockEntity.java
|
||||
+++ b/net/minecraft/world/entity/item/FallingBlockEntity.java
|
||||
@@ -121,6 +121,12 @@ public class FallingBlockEntity extends Entity implements me.samsuik.sakura.enti
|
||||
@@ -167,11 +167,11 @@ index 6f0b77e77186dd394b5949977e3e1a66610bc354..0dc8c7a74df21e10d3eec66682d5efc6
|
||||
public FallingBlockEntity(EntityType<? extends FallingBlockEntity> entityType, Level level) {
|
||||
super(entityType, level);
|
||||
diff --git a/net/minecraft/world/entity/item/PrimedTnt.java b/net/minecraft/world/entity/item/PrimedTnt.java
|
||||
index 57cfc90b3193fe8603cf10c444ae9be6dce8e584..a5fdbd843ad49a862508574c1b07a2503c019f96 100644
|
||||
index 3511e852aebabed8d5f40611db4573f55ca21875..d523cc4e7089e04d577248d26d7d4e911cd87434 100644
|
||||
--- a/net/minecraft/world/entity/item/PrimedTnt.java
|
||||
+++ b/net/minecraft/world/entity/item/PrimedTnt.java
|
||||
@@ -83,6 +83,12 @@ public class PrimedTnt extends Entity implements TraceableEntity, me.samsuik.sak
|
||||
this.mergeData.setCount(count); // Sakura - specialised explosions
|
||||
this.mergeData.count = count; // Sakura - specialised explosions
|
||||
}
|
||||
// Sakura end - merge cannon entities
|
||||
+ // Sakura start - optimise cannon entity movement
|
||||
|
||||
@@ -179,7 +179,7 @@ index 98107921d7251e1b7fc621103a31afdfd3bb5af7..162062200a4ffa7bc669093779377f0d
|
||||
if (this.isAlive()) {
|
||||
BlockState blockState = this.level().getBlockState(pos);
|
||||
diff --git a/net/minecraft/world/entity/item/FallingBlockEntity.java b/net/minecraft/world/entity/item/FallingBlockEntity.java
|
||||
index 0dc8c7a74df21e10d3eec66682d5efc61b335e61..16c22f243fcb6b5ae1b43ea112251a9b731f91c8 100644
|
||||
index e0cee4cda2fb2d55e1da0cedc71cdc0c445108d0..3b83c101fd5583f45fdd6fa20e92bc17318fad6b 100644
|
||||
--- a/net/minecraft/world/entity/item/FallingBlockEntity.java
|
||||
+++ b/net/minecraft/world/entity/item/FallingBlockEntity.java
|
||||
@@ -127,6 +127,43 @@ public class FallingBlockEntity extends Entity implements me.samsuik.sakura.enti
|
||||
@@ -318,7 +318,7 @@ index 0dc8c7a74df21e10d3eec66682d5efc61b335e61..16c22f243fcb6b5ae1b43ea112251a9b
|
||||
}
|
||||
|
||||
diff --git a/net/minecraft/world/entity/item/PrimedTnt.java b/net/minecraft/world/entity/item/PrimedTnt.java
|
||||
index a5fdbd843ad49a862508574c1b07a2503c019f96..6153f82d85b73a927c5a4cf6b916c69d06edd744 100644
|
||||
index d523cc4e7089e04d577248d26d7d4e911cd87434..e37c07ca244ccf02e474632a072b583675dab608 100644
|
||||
--- a/net/minecraft/world/entity/item/PrimedTnt.java
|
||||
+++ b/net/minecraft/world/entity/item/PrimedTnt.java
|
||||
@@ -89,6 +89,22 @@ public class PrimedTnt extends Entity implements TraceableEntity, me.samsuik.sak
|
||||
@@ -389,7 +389,7 @@ index a5fdbd843ad49a862508574c1b07a2503c019f96..6153f82d85b73a927c5a4cf6b916c69d
|
||||
+ if (physics.before(1_9_0) ? (i < 0) : (i <= 0)) { // Sakura - configure cannon physics
|
||||
// CraftBukkit start - Need to reverse the order of the explosion and the entity death so we have a location for the event
|
||||
//this.discard();
|
||||
this.respawnEntity(); // Sakura - merge cannon entities
|
||||
this.tryToRespawnEntity(); // Sakura - merge cannon entities
|
||||
@@ -226,13 +254,14 @@ public class PrimedTnt extends Entity implements TraceableEntity, me.samsuik.sak
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -5,7 +5,7 @@ Subject: [PATCH] Merge Cannon Entities
|
||||
|
||||
|
||||
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftFallingBlock.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftFallingBlock.java
|
||||
index e77b06c3ef9b534a8f4f160d077cf4339ee7622d..f0efb5feea71a69ac52f4dd81266f3a48020f926 100644
|
||||
index e77b06c3ef9b534a8f4f160d077cf4339ee7622d..a33e91a5b35109415b8140721469217c336dfc00 100644
|
||||
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftFallingBlock.java
|
||||
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftFallingBlock.java
|
||||
@@ -25,6 +25,27 @@ public class CraftFallingBlock extends CraftEntity implements FallingBlock {
|
||||
@@ -14,30 +14,30 @@ index e77b06c3ef9b534a8f4f160d077cf4339ee7622d..f0efb5feea71a69ac52f4dd81266f3a4
|
||||
// Sakura end - falling block height parity api
|
||||
+ // Sakura start - merge cannon entities
|
||||
+ @Override
|
||||
+ public final @org.jetbrains.annotations.NotNull me.samsuik.sakura.entity.merge.MergeLevel getMergeLevel() {
|
||||
+ return this.getHandle().getMergeEntityData().getMergeLevel();
|
||||
+ public final me.samsuik.sakura.entity.merge.MergeLevel getMergeLevel() {
|
||||
+ return this.getHandle().getMergeEntityData().mergeLevel;
|
||||
+ }
|
||||
+
|
||||
+ @Override
|
||||
+ public final void setMergeLevel(@org.jetbrains.annotations.NotNull me.samsuik.sakura.entity.merge.MergeLevel level) {
|
||||
+ this.getHandle().getMergeEntityData().setMergeLevel(level);
|
||||
+ public final void setMergeLevel(me.samsuik.sakura.entity.merge.MergeLevel level) {
|
||||
+ this.getHandle().getMergeEntityData().mergeLevel = level;
|
||||
+ }
|
||||
+
|
||||
+ @Override
|
||||
+ public final int getStacked() {
|
||||
+ return this.getHandle().getMergeEntityData().getCount();
|
||||
+ return this.getHandle().getMergeEntityData().count;
|
||||
+ }
|
||||
+
|
||||
+ @Override
|
||||
+ public final void setStacked(int stacked) {
|
||||
+ this.getHandle().getMergeEntityData().setCount(stacked);
|
||||
+ this.getHandle().getMergeEntityData().count = stacked;
|
||||
+ }
|
||||
+ // Sakura end - merge cannon entities
|
||||
|
||||
@Override
|
||||
public FallingBlockEntity getHandle() {
|
||||
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftTNTPrimed.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftTNTPrimed.java
|
||||
index eea78db7f12f5976077663a9ff0c0e188ffa8849..3fcee720ec174255ebd71428d8449a444d2a22ad 100644
|
||||
index eea78db7f12f5976077663a9ff0c0e188ffa8849..2e7803bd1f3411e75d8a51e03276b00469496f3b 100644
|
||||
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftTNTPrimed.java
|
||||
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftTNTPrimed.java
|
||||
@@ -12,6 +12,28 @@ public class CraftTNTPrimed extends CraftEntity implements TNTPrimed {
|
||||
@@ -46,23 +46,23 @@ index eea78db7f12f5976077663a9ff0c0e188ffa8849..3fcee720ec174255ebd71428d8449a44
|
||||
|
||||
+ // Sakura start - merge cannon entities
|
||||
+ @Override
|
||||
+ public final @org.jetbrains.annotations.NotNull me.samsuik.sakura.entity.merge.MergeLevel getMergeLevel() {
|
||||
+ return this.getHandle().getMergeEntityData().getMergeLevel();
|
||||
+ public final me.samsuik.sakura.entity.merge.MergeLevel getMergeLevel() {
|
||||
+ return this.getHandle().getMergeEntityData().mergeLevel;
|
||||
+ }
|
||||
+
|
||||
+ @Override
|
||||
+ public final void setMergeLevel(@org.jetbrains.annotations.NotNull me.samsuik.sakura.entity.merge.MergeLevel level) {
|
||||
+ this.getHandle().getMergeEntityData().setMergeLevel(level);
|
||||
+ public final void setMergeLevel(me.samsuik.sakura.entity.merge.MergeLevel level) {
|
||||
+ this.getHandle().getMergeEntityData().mergeLevel = level;
|
||||
+ }
|
||||
+
|
||||
+ @Override
|
||||
+ public final int getStacked() {
|
||||
+ return this.getHandle().getMergeEntityData().getCount();
|
||||
+ return this.getHandle().getMergeEntityData().count;
|
||||
+ }
|
||||
+
|
||||
+ @Override
|
||||
+ public final void setStacked(int stacked) {
|
||||
+ this.getHandle().getMergeEntityData().setCount(stacked);
|
||||
+ this.getHandle().getMergeEntityData().count = stacked;
|
||||
+ }
|
||||
+ // Sakura end - merge cannon entities
|
||||
+
|
||||
|
||||
Reference in New Issue
Block a user