mirror of
https://github.com/Samsuik/Sakura.git
synced 2025-12-22 16:29:16 +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) {
|
public Entity(EntityType<?> type, Level world) {
|
||||||
this.id = Entity.ENTITY_COUNTER.incrementAndGet();
|
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
|
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
|
--- a/src/main/java/net/minecraft/world/level/Level.java
|
||||||
+++ b/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
|
@@ -1431,6 +1431,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable, ca.spottedl
|
||||||
|
|
||||||
public <T extends Entity> void guardEntityTick(Consumer<T> tickConsumer, T entity) {
|
public <T extends Entity> void guardEntityTick(Consumer<T> tickConsumer, T entity) {
|
||||||
try {
|
try {
|
||||||
+ entity.storeEntityState(); // Sakura - store entity state
|
+ entity.storeEntityState(); // Sakura - store entity data/state
|
||||||
tickConsumer.accept(entity);
|
tickConsumer.accept(entity);
|
||||||
} catch (Throwable throwable) {
|
} catch (Throwable throwable) {
|
||||||
if (throwable instanceof ThreadDeath) throw throwable; // Paper
|
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
|
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
|
--- a/src/main/java/net/minecraft/world/level/Explosion.java
|
||||||
+++ b/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 {
|
@@ -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);
|
+ Location location = new Location(this.level.getWorld(), this.x, this.y, this.z);
|
||||||
+ List<org.bukkit.block.Block> blocks = new ObjectArrayList<>(1);
|
+ List<org.bukkit.block.Block> blocks = new ObjectArrayList<>(1);
|
||||||
+ blocks.add(location.getBlock());
|
+ blocks.add(location.getBlock());
|
||||||
+ EntityExplodeEvent event = new EntityExplodeEvent(this.source.getBukkitEntity(), location, blocks, 0.0f);
|
+ EntityExplodeEvent event = CraftEventFactory.callEntityExplodeEvent(this.source, blocks, 0.0f, this.blockInteraction);
|
||||||
+ return event.callEvent() && !event.blockList().isEmpty();
|
+ return !event.isCancelled() && !event.blockList().isEmpty();
|
||||||
+ }
|
+ }
|
||||||
+
|
+
|
||||||
+ return true;
|
+ 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
|
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
|
--- a/src/main/java/ca/spottedleaf/moonrise/common/list/IteratorSafeOrderedReferenceSet.java
|
||||||
+++ b/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> {
|
@@ -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) {
|
+ public int indexOf(final E element) {
|
||||||
+ return this.indexMap.getInt(element);
|
+ return this.indexMap.getInt(element);
|
||||||
+ }
|
+ }
|
||||||
+ // Sakura end - add indexOf method
|
+ // Sakura end - specialised explosions; add indexOf method
|
||||||
+
|
+
|
||||||
public boolean remove(final E element) {
|
public boolean remove(final E element) {
|
||||||
final int index = this.indexMap.removeInt(element);
|
final int index = this.indexMap.removeInt(element);
|
||||||
if (index >= 0) {
|
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
|
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
|
new file mode 100644
|
||||||
index 0000000000000000000000000000000000000000..749795cfd2c9c7817c8578366a155db7dd6c3f08
|
index 0000000000000000000000000000000000000000..58add5bd1afc2f3e89b9a7d0d9a325bf17b77a18
|
||||||
--- /dev/null
|
--- /dev/null
|
||||||
+++ b/src/main/java/me/samsuik/sakura/explosion/special/SpecialisedExplosion.java
|
+++ 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;
|
+package me.samsuik.sakura.explosion.special;
|
||||||
+
|
+
|
||||||
+import ca.spottedleaf.moonrise.common.util.WorldUtil;
|
+import ca.spottedleaf.moonrise.common.util.WorldUtil;
|
||||||
@@ -41,7 +41,6 @@ index 0000000000000000000000000000000000000000..749795cfd2c9c7817c8578366a155db7
|
|||||||
+import net.minecraft.util.Mth;
|
+import net.minecraft.util.Mth;
|
||||||
+import net.minecraft.world.damagesource.DamageSource;
|
+import net.minecraft.world.damagesource.DamageSource;
|
||||||
+import net.minecraft.world.entity.Entity;
|
+import net.minecraft.world.entity.Entity;
|
||||||
+import net.minecraft.world.entity.item.PrimedTnt;
|
|
||||||
+import net.minecraft.world.level.Explosion;
|
+import net.minecraft.world.level.Explosion;
|
||||||
+import net.minecraft.world.level.ExplosionDamageCalculator;
|
+import net.minecraft.world.level.ExplosionDamageCalculator;
|
||||||
+import net.minecraft.world.level.Level;
|
+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
|
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
|
new file mode 100644
|
||||||
index 0000000000000000000000000000000000000000..2275999c5b6d9a6af59aa2539663e0edf575539f
|
index 0000000000000000000000000000000000000000..e3a4e89c81a602d57fad58f6ac10d8ca5282ef4e
|
||||||
--- /dev/null
|
--- /dev/null
|
||||||
+++ b/src/main/java/me/samsuik/sakura/explosion/special/TntExplosion.java
|
+++ 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;
|
+package me.samsuik.sakura.explosion.special;
|
||||||
+
|
+
|
||||||
+import ca.spottedleaf.moonrise.common.list.IteratorSafeOrderedReferenceSet;
|
+import ca.spottedleaf.moonrise.common.list.IteratorSafeOrderedReferenceSet;
|
||||||
@@ -404,6 +403,9 @@ index 0000000000000000000000000000000000000000..2275999c5b6d9a6af59aa2539663e0ed
|
|||||||
+ IteratorSafeOrderedReferenceSet<Entity> entities = this.level.entityTickList.entities;
|
+ IteratorSafeOrderedReferenceSet<Entity> entities = this.level.entityTickList.entities;
|
||||||
+ int base = this.getExplosionCount();
|
+ int base = this.getExplosionCount();
|
||||||
+ int index = entities.indexOf(this.cause);
|
+ int index = entities.indexOf(this.cause);
|
||||||
|
+
|
||||||
|
+ try {
|
||||||
|
+ entities.createRawIterator();
|
||||||
+ // iterate over the entityTickList to find entities that are exploding in the same position.
|
+ // iterate over the entityTickList to find entities that are exploding in the same position.
|
||||||
+ while ((index = entities.advanceRawIterator(index)) != -1) {
|
+ while ((index = entities.advanceRawIterator(index)) != -1) {
|
||||||
+ Entity foundEntity = entities.rawGet(index);
|
+ Entity foundEntity = entities.rawGet(index);
|
||||||
@@ -412,6 +414,9 @@ index 0000000000000000000000000000000000000000..2275999c5b6d9a6af59aa2539663e0ed
|
|||||||
+ base += mergeEntity.getMergeEntityData().getCount();
|
+ base += mergeEntity.getMergeEntityData().getCount();
|
||||||
+ foundEntity.discard();
|
+ foundEntity.discard();
|
||||||
+ }
|
+ }
|
||||||
|
+ } finally {
|
||||||
|
+ entities.finishRawIterator();
|
||||||
|
+ }
|
||||||
+
|
+
|
||||||
+ return base;
|
+ return base;
|
||||||
+ }
|
+ }
|
||||||
@@ -509,7 +514,7 @@ index 6fc9a352dbae57e867ae35f2a1f30eebe20073c7..e048542cdd1fe9c807ce21e57af9cf59
|
|||||||
// Sakura end - merge cannon entities
|
// 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
|
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
|
--- a/src/main/java/net/minecraft/world/level/Explosion.java
|
||||||
+++ b/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 {
|
@@ -57,9 +57,11 @@ public class Explosion {
|
||||||
@@ -606,7 +611,7 @@ index 7f9dcd27c31a97563dfb065d11f984cf688c9782..fef88549aa5dd2f4e4618ebe0bfb4e25
|
|||||||
float blockDensity = this.level.densityCache.getDensity(vec3d, entity);
|
float blockDensity = this.level.densityCache.getDensity(vec3d, entity);
|
||||||
if (blockDensity == me.samsuik.sakura.explosion.density.BlockDensityCache.UNKNOWN_DENSITY) {
|
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
|
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
|
--- a/src/main/java/net/minecraft/world/level/Level.java
|
||||||
+++ b/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
|
@@ -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) {
|
if (xSmaller && z != 0.0) {
|
||||||
z = performAABBCollisionsZ(axisalignedbb, z, aabbs);
|
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
|
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
|
--- a/src/main/java/me/samsuik/sakura/explosion/special/SpecialisedExplosion.java
|
||||||
+++ b/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) {
|
if (distanceFromBottom <= 1.0) {
|
||||||
double x = entity.getX() - pos.x;
|
double x = entity.getX() - pos.x;
|
||||||
@@ -88,7 +88,7 @@ index 749795cfd2c9c7817c8578366a155db7dd6c3f08..8fddbdea8e28a1c0fefaa0c36ccad635
|
|||||||
if (distance != 0.0D) {
|
if (distance != 0.0D) {
|
||||||
x /= distance;
|
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
|
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
|
--- a/src/main/java/me/samsuik/sakura/explosion/special/TntExplosion.java
|
||||||
+++ b/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> {
|
@@ -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
|
// 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
|
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
|
--- a/src/main/java/net/minecraft/world/level/Explosion.java
|
||||||
+++ b/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 {
|
@@ -77,6 +77,7 @@ public class Explosion {
|
||||||
@@ -567,7 +567,7 @@ index 5fe530134e196d133b44e65cad3c63cd09e3f430..ddbadfeaa624f49931e929d545750c91
|
|||||||
private final Level world;
|
private final Level world;
|
||||||
private final double posX, posY, posZ;
|
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
|
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
|
--- a/src/main/java/net/minecraft/world/level/Level.java
|
||||||
+++ b/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
|
@@ -196,6 +196,205 @@ public abstract class Level implements LevelAccessor, AutoCloseable, ca.spottedl
|
||||||
|
|||||||
Reference in New Issue
Block a user