mirror of
https://github.com/Samsuik/Sakura.git
synced 2025-12-22 00:09:20 +00:00
even more fixes and comments
This commit is contained in:
@@ -82,14 +82,14 @@ index 8306bf3943e65fdff93d76b0c97f0f1d8d0db6d3..49ae460ba5b871f085d67a0c4abdc0e7
|
||||
public Entity(EntityType<?> type, Level world) {
|
||||
this.id = Entity.ENTITY_COUNTER.incrementAndGet();
|
||||
diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java
|
||||
index 5886f44fdc605d3b814566808d8477e09df2fd3b..dd8e5c0a6197158b376e8de8930f660fc4771e54 100644
|
||||
index 5886f44fdc605d3b814566808d8477e09df2fd3b..7384c7f81e0f9bfe05c05561a1ec87f3fa17f010 100644
|
||||
--- a/src/main/java/net/minecraft/world/level/Level.java
|
||||
+++ b/src/main/java/net/minecraft/world/level/Level.java
|
||||
@@ -1431,6 +1431,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable, ca.spottedl
|
||||
|
||||
public <T extends Entity> void guardEntityTick(Consumer<T> tickConsumer, T entity) {
|
||||
try {
|
||||
+ entity.storeEntityState(); // Sakura - store entity state
|
||||
+ entity.storeEntityState(); // Sakura - store entity data/state
|
||||
tickConsumer.accept(entity);
|
||||
} catch (Throwable throwable) {
|
||||
if (throwable instanceof ThreadDeath) throw throwable; // Paper
|
||||
|
||||
@@ -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 3572334f7594a284124d879b8165e9401e9d2aad..eaf2201301813c68b5c0826394120daffdee72f8 100644
|
||||
index 3ad6f5f19c9fae2f00c662971eaa613c1a0ddbcf..da423a9211dd72bc531d7f0f65aab08b5c44f39c 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 {
|
||||
@@ -21,8 +21,8 @@ index 3572334f7594a284124d879b8165e9401e9d2aad..eaf2201301813c68b5c0826394120daf
|
||||
+ Location location = new Location(this.level.getWorld(), this.x, this.y, this.z);
|
||||
+ List<org.bukkit.block.Block> blocks = new ObjectArrayList<>(1);
|
||||
+ blocks.add(location.getBlock());
|
||||
+ EntityExplodeEvent event = new EntityExplodeEvent(this.source.getBukkitEntity(), location, blocks, 0.0f);
|
||||
+ return event.callEvent() && !event.blockList().isEmpty();
|
||||
+ EntityExplodeEvent event = CraftEventFactory.callEntityExplodeEvent(this.source, blocks, 0.0f, this.blockInteraction);
|
||||
+ return !event.isCancelled() && !event.blockList().isEmpty();
|
||||
+ }
|
||||
+
|
||||
+ return true;
|
||||
|
||||
@@ -5,28 +5,28 @@ Subject: [PATCH] Specialised Explosions
|
||||
|
||||
|
||||
diff --git a/src/main/java/ca/spottedleaf/moonrise/common/list/IteratorSafeOrderedReferenceSet.java b/src/main/java/ca/spottedleaf/moonrise/common/list/IteratorSafeOrderedReferenceSet.java
|
||||
index c21e00812f1aaa1279834a0562d360d6b89e146c..442119e7c4670582556b067dfc03e39add7c2c9d 100644
|
||||
index c21e00812f1aaa1279834a0562d360d6b89e146c..1e1329adde1457898a3002279b53b1bbb91c36d2 100644
|
||||
--- a/src/main/java/ca/spottedleaf/moonrise/common/list/IteratorSafeOrderedReferenceSet.java
|
||||
+++ b/src/main/java/ca/spottedleaf/moonrise/common/list/IteratorSafeOrderedReferenceSet.java
|
||||
@@ -107,6 +107,12 @@ public final class IteratorSafeOrderedReferenceSet<E> {
|
||||
}
|
||||
}
|
||||
|
||||
+ // Sakura start - add indexOf method
|
||||
+ // Sakura start - specialised explosions; add indexOf method
|
||||
+ public int indexOf(final E element) {
|
||||
+ return this.indexMap.getInt(element);
|
||||
+ }
|
||||
+ // Sakura end - add indexOf method
|
||||
+ // Sakura end - specialised explosions; add indexOf method
|
||||
+
|
||||
public boolean remove(final E element) {
|
||||
final int index = this.indexMap.removeInt(element);
|
||||
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..749795cfd2c9c7817c8578366a155db7dd6c3f08
|
||||
index 0000000000000000000000000000000000000000..58add5bd1afc2f3e89b9a7d0d9a325bf17b77a18
|
||||
--- /dev/null
|
||||
+++ b/src/main/java/me/samsuik/sakura/explosion/special/SpecialisedExplosion.java
|
||||
@@ -0,0 +1,219 @@
|
||||
@@ -0,0 +1,218 @@
|
||||
+package me.samsuik.sakura.explosion.special;
|
||||
+
|
||||
+import ca.spottedleaf.moonrise.common.util.WorldUtil;
|
||||
@@ -41,7 +41,6 @@ index 0000000000000000000000000000000000000000..749795cfd2c9c7817c8578366a155db7
|
||||
+import net.minecraft.util.Mth;
|
||||
+import net.minecraft.world.damagesource.DamageSource;
|
||||
+import net.minecraft.world.entity.Entity;
|
||||
+import net.minecraft.world.entity.item.PrimedTnt;
|
||||
+import net.minecraft.world.level.Explosion;
|
||||
+import net.minecraft.world.level.ExplosionDamageCalculator;
|
||||
+import net.minecraft.world.level.Level;
|
||||
@@ -248,10 +247,10 @@ index 0000000000000000000000000000000000000000..749795cfd2c9c7817c8578366a155db7
|
||||
+}
|
||||
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
|
||||
index 0000000000000000000000000000000000000000..2275999c5b6d9a6af59aa2539663e0edf575539f
|
||||
index 0000000000000000000000000000000000000000..e3a4e89c81a602d57fad58f6ac10d8ca5282ef4e
|
||||
--- /dev/null
|
||||
+++ b/src/main/java/me/samsuik/sakura/explosion/special/TntExplosion.java
|
||||
@@ -0,0 +1,204 @@
|
||||
@@ -0,0 +1,210 @@
|
||||
+package me.samsuik.sakura.explosion.special;
|
||||
+
|
||||
+import ca.spottedleaf.moonrise.common.list.IteratorSafeOrderedReferenceSet;
|
||||
@@ -404,6 +403,9 @@ index 0000000000000000000000000000000000000000..2275999c5b6d9a6af59aa2539663e0ed
|
||||
+ IteratorSafeOrderedReferenceSet<Entity> entities = this.level.entityTickList.entities;
|
||||
+ int base = this.getExplosionCount();
|
||||
+ int index = entities.indexOf(this.cause);
|
||||
+
|
||||
+ try {
|
||||
+ entities.createRawIterator();
|
||||
+ // iterate over the entityTickList to find entities that are exploding in the same position.
|
||||
+ while ((index = entities.advanceRawIterator(index)) != -1) {
|
||||
+ Entity foundEntity = entities.rawGet(index);
|
||||
@@ -412,6 +414,9 @@ index 0000000000000000000000000000000000000000..2275999c5b6d9a6af59aa2539663e0ed
|
||||
+ base += mergeEntity.getMergeEntityData().getCount();
|
||||
+ foundEntity.discard();
|
||||
+ }
|
||||
+ } finally {
|
||||
+ entities.finishRawIterator();
|
||||
+ }
|
||||
+
|
||||
+ return base;
|
||||
+ }
|
||||
@@ -509,7 +514,7 @@ index 6fc9a352dbae57e867ae35f2a1f30eebe20073c7..e048542cdd1fe9c807ce21e57af9cf59
|
||||
// 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 7f9dcd27c31a97563dfb065d11f984cf688c9782..fef88549aa5dd2f4e4618ebe0bfb4e25c15117e2 100644
|
||||
index da423a9211dd72bc531d7f0f65aab08b5c44f39c..d3ddf3c99cb6338cea6e1cad3d96c931885e5a20 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 {
|
||||
@@ -606,7 +611,7 @@ index 7f9dcd27c31a97563dfb065d11f984cf688c9782..fef88549aa5dd2f4e4618ebe0bfb4e25
|
||||
float blockDensity = this.level.densityCache.getDensity(vec3d, entity);
|
||||
if (blockDensity == me.samsuik.sakura.explosion.density.BlockDensityCache.UNKNOWN_DENSITY) {
|
||||
diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java
|
||||
index de4879ce1990a460d5a57287642c5010c8aed78a..70ce20d946287a7449da4efc958be5a9fa683afe 100644
|
||||
index 67e5a3ae24b131ee1579a06d8b10ba9b0ac1ad41..d65a8857fd90063e277141d0e9fd553e39fc0880 100644
|
||||
--- a/src/main/java/net/minecraft/world/level/Level.java
|
||||
+++ b/src/main/java/net/minecraft/world/level/Level.java
|
||||
@@ -1522,7 +1522,14 @@ public abstract class Level implements LevelAccessor, AutoCloseable, ca.spottedl
|
||||
|
||||
@@ -67,10 +67,10 @@ index f1e66c91302db3c1a179305ce5dffc347828b9fe..9a869fb472c7194742bdf8d38f0f9730
|
||||
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 749795cfd2c9c7817c8578366a155db7dd6c3f08..8fddbdea8e28a1c0fefaa0c36ccad6354f182546 100644
|
||||
index 58add5bd1afc2f3e89b9a7d0d9a325bf17b77a18..8ff4ce297e9e799b14d623b49493c5a4638153fc 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 {
|
||||
@@ -176,9 +176,15 @@ public abstract class SpecialisedExplosion<T extends Entity> extends Explosion {
|
||||
|
||||
if (distanceFromBottom <= 1.0) {
|
||||
double x = entity.getX() - pos.x;
|
||||
@@ -88,7 +88,7 @@ index 749795cfd2c9c7817c8578366a155db7dd6c3f08..8fddbdea8e28a1c0fefaa0c36ccad635
|
||||
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 2275999c5b6d9a6af59aa2539663e0edf575539f..43f26e1ec641f9dbaeba96ac3024d5cec1e8ed06 100644
|
||||
index e3a4e89c81a602d57fad58f6ac10d8ca5282ef4e..cf49deddc0e161bd4ae2a1023fef84ab38035567 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> {
|
||||
@@ -474,7 +474,7 @@ index 56ad11f51e3ec395a88fa6d961cf8e99bde6b69f..095727d28139ffcda0da3be83b329ace
|
||||
// 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 5fe530134e196d133b44e65cad3c63cd09e3f430..ddbadfeaa624f49931e929d545750c9163a6b11f 100644
|
||||
index 5e0cf3ccadf602a9300a4619333ece0b2c28b9a6..46895d9395e5fe6c75399f8e68f086f6a7bc5a64 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 {
|
||||
@@ -567,7 +567,7 @@ index 5fe530134e196d133b44e65cad3c63cd09e3f430..ddbadfeaa624f49931e929d545750c91
|
||||
private final Level world;
|
||||
private final double posX, posY, posZ;
|
||||
diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java
|
||||
index ba6f1cac7c724317aa17d07628772301193deb2d..4364e66adaa44e444e3b528b86e0394d1b085068 100644
|
||||
index 456eb52fd5fff7950d64dedb36cee011448c6e89..793a4433a433a6b19256265528a7f8d17d9a33cd 100644
|
||||
--- a/src/main/java/net/minecraft/world/level/Level.java
|
||||
+++ b/src/main/java/net/minecraft/world/level/Level.java
|
||||
@@ -196,6 +196,205 @@ public abstract class Level implements LevelAccessor, AutoCloseable, ca.spottedl
|
||||
|
||||
Reference in New Issue
Block a user