9
0
mirror of https://github.com/Samsuik/Sakura.git synced 2025-12-23 08:49:25 +00:00

Fix explosion player velocity

The player velocity was not being talied correctly, and velocity was not
sent when explosion effects were disabled in fps settings.
This commit is contained in:
Samsuik
2024-11-14 19:45:56 +00:00
parent 5324ac9a30
commit 1e517c015e
7 changed files with 62 additions and 34 deletions

View File

@@ -323,18 +323,29 @@ index 5b3a886c624b36557cbfaccdc3fb05a46a4ba36a..4d3f28d86f6ef1c34f883f1f551201ac
// CraftBukkit start - respect vanish API // CraftBukkit start - respect vanish API
if (flag && !player.getBukkitEntity().canSee(this.entity.getBukkitEntity())) { // Paper - only consider hits if (flag && !player.getBukkitEntity().canSee(this.entity.getBukkitEntity())) { // Paper - only consider hits
diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java
index 32742470eea2ec86c0fff02aa157bfcc89530ad3..de2f6a27ae4d76bf27f127f448e0692f93b2a971 100644 index 32742470eea2ec86c0fff02aa157bfcc89530ad3..ec76caea3ae07efc6f5debcd14b24dfed50aa04b 100644
--- a/src/main/java/net/minecraft/server/level/ServerLevel.java --- a/src/main/java/net/minecraft/server/level/ServerLevel.java
+++ b/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java
@@ -1895,7 +1895,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe @@ -1898,7 +1898,18 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe
while (iterator.hasNext()) { if (entityplayer.distanceToSqr(vec3d) < 4096.0D) {
ServerPlayer entityplayer = (ServerPlayer) iterator.next();
- if (entityplayer.distanceToSqr(vec3d) < 4096.0D) {
+ if (entityplayer.distanceToSqr(vec3d) < 4096.0D && !entityplayer.visibility.isToggled(me.samsuik.sakura.player.visibility.Visibility.Setting.EXPLOSIONS)) { // Sakura - visibility api
Optional<Vec3> optional = Optional.ofNullable((Vec3) serverexplosion.getHitPlayers().get(entityplayer)); Optional<Vec3> optional = Optional.ofNullable((Vec3) serverexplosion.getHitPlayers().get(entityplayer));
entityplayer.connection.send(new ClientboundExplodePacket(vec3d, optional, particleparam2, holder)); - entityplayer.connection.send(new ClientboundExplodePacket(vec3d, optional, particleparam2, holder));
+ // Sakura start - visibility api; let players toggle explosion particles
+ ParticleOptions particle = particleparam2;
+ Vec3 position = vec3d;
+ // In 1.22 and later this should be replaced with sending the motion through a PlayerPositionPacket.
+ // The problem here is SetEntityMotion is capped to 3.9 b/pt and the only other alternate mean was
+ // implemented in 1.21.3. I believe it's best to just wait on this issue and deal with this hack.
+ if (entityplayer.visibility.isToggled(me.samsuik.sakura.player.visibility.Visibility.Setting.EXPLOSIONS)) {
+ position = new Vec3(0.0, -1024.0, 0.0);
+ particle = net.minecraft.core.particles.ParticleTypes.SMOKE;
+ }
+ entityplayer.connection.send(new ClientboundExplodePacket(position, optional, particle, holder));
+ // Sakura end - visibility api; let players toggle explosion particles
}
}
diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java
index cffbd3300967e5d80b5973b35a76235bb2aa1b73..ad85e5ebe00918a7fea4071351741566e4883dd0 100644 index cffbd3300967e5d80b5973b35a76235bb2aa1b73..ad85e5ebe00918a7fea4071351741566e4883dd0 100644
--- a/src/main/java/net/minecraft/server/level/ServerPlayer.java --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java
@@ -548,6 +559,22 @@ index de87483600e55d88176fe25db621bbd3e464729f..5bd189fad703ac99d57258fa448dbcc1
} }
public PrimedTnt(Level world, double x, double y, double z, @Nullable LivingEntity igniter) { public PrimedTnt(Level world, double x, double y, double z, @Nullable LivingEntity igniter) {
diff --git a/src/main/java/net/minecraft/world/level/ServerExplosion.java b/src/main/java/net/minecraft/world/level/ServerExplosion.java
index bbbd451ff184be8fa13bd93d53c89a9502f9951a..7280806cd37a1aed53e304de0a03d68c18b86b09 100644
--- a/src/main/java/net/minecraft/world/level/ServerExplosion.java
+++ b/src/main/java/net/minecraft/world/level/ServerExplosion.java
@@ -559,7 +559,10 @@ public class ServerExplosion implements Explosion {
Player entityhuman = (Player) entity;
if (!entityhuman.isSpectator() && (!entityhuman.isCreative() || !entityhuman.getAbilities().flying) && !level.paperConfig().environment.disableExplosionKnockback) { // Paper - Option to disable explosion knockback
- this.hitPlayers.put(entityhuman, vec3d);
+ // Sakura start - specialised explosions; tally player velocity
+ final Vec3 explosionImpact = vec3d;
+ this.hitPlayers.compute(entityhuman, (p, v) -> v != null ? v.add(explosionImpact) : explosionImpact);
+ // Sakura end - specialised explosions; tally player velocity
}
}
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
index 2c7ec674f55b3178b9dcba7f2bc1ff5efccb50ea..7976eb7496d57d5d1fe29c902e167d79a86bac32 100644 index 2c7ec674f55b3178b9dcba7f2bc1ff5efccb50ea..7976eb7496d57d5d1fe29c902e167d79a86bac32 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java

View File

@@ -126,7 +126,7 @@ index 0000000000000000000000000000000000000000..d7e24638f07f243502004970ab4ce646
+ } + }
+} +}
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
index b78b642b77a5cef54044b079916fef9b22e50fcc..7aaf3794338b8208ded6549e61479010c369ad87 100644 index 61b24eac8f17d5a433817ae2ebb3baf2599af210..3f3a7035a07efce5b8438abf989312b6df137ec8 100644
--- a/src/main/java/net/minecraft/server/MinecraftServer.java --- a/src/main/java/net/minecraft/server/MinecraftServer.java
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java
@@ -1891,6 +1891,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa @@ -1891,6 +1891,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -150,7 +150,7 @@ index d036cdcc17b8429c986946a020cb34cd6ced322e..b45ad0125cd5c116126e8ffb89358597
protected Level(WritableLevelData worlddatamutable, ResourceKey<Level> resourcekey, RegistryAccess iregistrycustom, Holder<DimensionType> holder, boolean flag, boolean flag1, long i, int j, org.bukkit.generator.ChunkGenerator gen, org.bukkit.generator.BiomeProvider biomeProvider, org.bukkit.World.Environment env, java.util.function.Function<org.spigotmc.SpigotWorldConfig, io.papermc.paper.configuration.WorldConfiguration> paperWorldConfigCreator, java.util.function.Supplier<me.samsuik.sakura.configuration.WorldConfiguration> sakuraWorldConfigCreator, java.util.concurrent.Executor executor) { // Sakura - sakura configuration files // Paper - create paper world config & Anti-Xray protected Level(WritableLevelData worlddatamutable, ResourceKey<Level> resourcekey, RegistryAccess iregistrycustom, Holder<DimensionType> holder, boolean flag, boolean flag1, long i, int j, org.bukkit.generator.ChunkGenerator gen, org.bukkit.generator.BiomeProvider biomeProvider, org.bukkit.World.Environment env, java.util.function.Function<org.spigotmc.SpigotWorldConfig, io.papermc.paper.configuration.WorldConfiguration> paperWorldConfigCreator, java.util.function.Supplier<me.samsuik.sakura.configuration.WorldConfiguration> sakuraWorldConfigCreator, java.util.concurrent.Executor executor) { // Sakura - sakura configuration files // Paper - create paper world config & Anti-Xray
// Paper start - getblock optimisations - cache world height/sections // Paper start - getblock optimisations - cache world height/sections
diff --git a/src/main/java/net/minecraft/world/level/ServerExplosion.java b/src/main/java/net/minecraft/world/level/ServerExplosion.java diff --git a/src/main/java/net/minecraft/world/level/ServerExplosion.java b/src/main/java/net/minecraft/world/level/ServerExplosion.java
index a92be80081178cc302a7f0b646bad7daa28f7c66..10432b31acd047ac2aa8581f2ee863254ec8d1eb 100644 index a7f64335001c7beb7f4474c9cda3c6988725f69a..c4d167ea4390c6605c99d5868d778e0b3f01f97c 100644
--- a/src/main/java/net/minecraft/world/level/ServerExplosion.java --- a/src/main/java/net/minecraft/world/level/ServerExplosion.java
+++ b/src/main/java/net/minecraft/world/level/ServerExplosion.java +++ b/src/main/java/net/minecraft/world/level/ServerExplosion.java
@@ -297,7 +297,12 @@ public class ServerExplosion implements Explosion { @@ -297,7 +297,12 @@ public class ServerExplosion implements Explosion {
@@ -185,7 +185,7 @@ index a92be80081178cc302a7f0b646bad7daa28f7c66..10432b31acd047ac2aa8581f2ee86325
++i; ++i;
} }
@@ -691,6 +705,12 @@ public class ServerExplosion implements Explosion { @@ -694,6 +708,12 @@ public class ServerExplosion implements Explosion {
return; return;
} }
// CraftBukkit end // CraftBukkit end
@@ -198,7 +198,7 @@ index a92be80081178cc302a7f0b646bad7daa28f7c66..10432b31acd047ac2aa8581f2ee86325
Iterator iterator = positions.iterator(); Iterator iterator = positions.iterator();
while (iterator.hasNext()) { while (iterator.hasNext()) {
@@ -864,14 +884,12 @@ public class ServerExplosion implements Explosion { @@ -867,14 +887,12 @@ public class ServerExplosion implements Explosion {
// Paper start - Optimize explosions // Paper start - Optimize explosions
private float getBlockDensity(Vec3 vec3d, Entity entity) { private float getBlockDensity(Vec3 vec3d, Entity entity) {

View File

@@ -23,10 +23,10 @@ index c21e00812f1aaa1279834a0562d360d6b89e146c..1e1329adde1457898a3002279b53b1bb
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..82a448a18415ff0e050d26aaa8fcfe844631768f index 0000000000000000000000000000000000000000..ce04a5d9aaef3ca8ba8d7b988bdf0497285f90c1
--- /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,202 @@ @@ -0,0 +1,203 @@
+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;
@@ -99,6 +99,7 @@ index 0000000000000000000000000000000000000000..82a448a18415ff0e050d26aaa8fcfe84
+ +
+ if (!this.wasCanceled) { + if (!this.wasCanceled) {
+ this.applyEffects.accept(this); + this.applyEffects.accept(this);
+ this.getHitPlayers().clear();
+ } + }
+ +
+ return !explodedPositions.isEmpty(); + return !explodedPositions.isEmpty();
@@ -437,7 +438,7 @@ index 0000000000000000000000000000000000000000..ebe5f0c8c2f09920b5f5ef734e63f5e7
+ } + }
+} +}
diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java
index 1f278f6ef7e39df676334e7e5853dec4617f6baa..a9315006379f7ab5b40cb6aba7ed82727afe3a5a 100644 index 3b1fbd1fc480682f6a6c620432e268c4e7d283b7..264b6be15e2f9ca147cf57aa5b659e14025c9b53 100644
--- a/src/main/java/net/minecraft/server/level/ServerLevel.java --- a/src/main/java/net/minecraft/server/level/ServerLevel.java
+++ b/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java
@@ -1890,7 +1890,16 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe @@ -1890,7 +1890,16 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe
@@ -472,7 +473,7 @@ index 1f278f6ef7e39df676334e7e5853dec4617f6baa..a9315006379f7ab5b40cb6aba7ed8272
ParticleOptions particleparam2 = serverexplosion.isSmall() ? particleparam : particleparam1; ParticleOptions particleparam2 = serverexplosion.isSmall() ? particleparam : particleparam1;
Iterator iterator = this.players.iterator(); Iterator iterator = this.players.iterator();
@@ -1912,7 +1928,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe @@ -1923,7 +1939,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe
} }
} }
@@ -508,7 +509,7 @@ index 6b739e820af6333c1ff3a4b87154d4c00c9a5559..0a9e62dd90c6aba4ff97391d69f9a92d
// Sakura end - merge cannon entities // Sakura end - merge cannon entities
diff --git a/src/main/java/net/minecraft/world/level/ServerExplosion.java b/src/main/java/net/minecraft/world/level/ServerExplosion.java diff --git a/src/main/java/net/minecraft/world/level/ServerExplosion.java b/src/main/java/net/minecraft/world/level/ServerExplosion.java
index b07c2eb8cc3cc54e8ab72c5ed3d6d7623416e7fb..9381a6810e709194dc50651cd2518942f1d91dec 100644 index 37c32860af0efab2e272ee1ca6e67d6b9b885cbf..59e38ee6ac0699350a7021f1d074fdfee4a5ba41 100644
--- a/src/main/java/net/minecraft/world/level/ServerExplosion.java --- a/src/main/java/net/minecraft/world/level/ServerExplosion.java
+++ b/src/main/java/net/minecraft/world/level/ServerExplosion.java +++ b/src/main/java/net/minecraft/world/level/ServerExplosion.java
@@ -52,9 +52,9 @@ public class ServerExplosion implements Explosion { @@ -52,9 +52,9 @@ public class ServerExplosion implements Explosion {
@@ -588,7 +589,7 @@ index b07c2eb8cc3cc54e8ab72c5ed3d6d7623416e7fb..9381a6810e709194dc50651cd2518942
// Paper start - collision optimisations // Paper start - collision optimisations
final ObjectArrayList<BlockPos> ret = new ObjectArrayList<>(); final ObjectArrayList<BlockPos> ret = new ObjectArrayList<>();
@@ -682,7 +714,7 @@ public class ServerExplosion implements Explosion { @@ -685,7 +717,7 @@ public class ServerExplosion implements Explosion {
} }
@@ -597,7 +598,7 @@ index b07c2eb8cc3cc54e8ab72c5ed3d6d7623416e7fb..9381a6810e709194dc50651cd2518942
List<ServerExplosion.StackCollector> list1 = new ArrayList(); List<ServerExplosion.StackCollector> list1 = new ArrayList();
Util.shuffle(positions, this.level.random); Util.shuffle(positions, this.level.random);
@@ -787,14 +819,7 @@ public class ServerExplosion implements Explosion { @@ -790,14 +822,7 @@ public class ServerExplosion implements Explosion {
return; return;
} }
// CraftBukkit end // CraftBukkit end
@@ -613,7 +614,7 @@ index b07c2eb8cc3cc54e8ab72c5ed3d6d7623416e7fb..9381a6810e709194dc50651cd2518942
this.level.gameEvent(this.source, (Holder) GameEvent.EXPLODE, this.center); this.level.gameEvent(this.source, (Holder) GameEvent.EXPLODE, this.center);
List<BlockPos> list = this.calculateExplodedPositions(); List<BlockPos> list = this.calculateExplodedPositions();
@@ -810,13 +835,7 @@ public class ServerExplosion implements Explosion { @@ -813,13 +838,7 @@ public class ServerExplosion implements Explosion {
if (this.fire) { if (this.fire) {
this.createFire(list); this.createFire(list);
} }
@@ -628,7 +629,7 @@ index b07c2eb8cc3cc54e8ab72c5ed3d6d7623416e7fb..9381a6810e709194dc50651cd2518942
} }
@@ -837,7 +856,7 @@ public class ServerExplosion implements Explosion { @@ -840,7 +859,7 @@ public class ServerExplosion implements Explosion {
} }
@@ -637,7 +638,7 @@ index b07c2eb8cc3cc54e8ab72c5ed3d6d7623416e7fb..9381a6810e709194dc50651cd2518942
return this.blockInteraction != Explosion.BlockInteraction.KEEP; return this.blockInteraction != Explosion.BlockInteraction.KEEP;
} }
@@ -904,7 +923,7 @@ public class ServerExplosion implements Explosion { @@ -907,7 +926,7 @@ public class ServerExplosion implements Explosion {
} }
// Paper start - Optimize explosions // Paper start - Optimize explosions

View File

@@ -103,7 +103,7 @@ index 2d5783a6ff7a9ce6dcb6f2895ff80928e62f0cd2..0ae2d83055252146e346b06cc8360eef
protected Level(WritableLevelData worlddatamutable, ResourceKey<Level> resourcekey, RegistryAccess iregistrycustom, Holder<DimensionType> holder, boolean flag, boolean flag1, long i, int j, org.bukkit.generator.ChunkGenerator gen, org.bukkit.generator.BiomeProvider biomeProvider, org.bukkit.World.Environment env, java.util.function.Function<org.spigotmc.SpigotWorldConfig, io.papermc.paper.configuration.WorldConfiguration> paperWorldConfigCreator, java.util.function.Supplier<me.samsuik.sakura.configuration.WorldConfiguration> sakuraWorldConfigCreator, java.util.concurrent.Executor executor) { // Sakura - sakura configuration files // Paper - create paper world config & Anti-Xray protected Level(WritableLevelData worlddatamutable, ResourceKey<Level> resourcekey, RegistryAccess iregistrycustom, Holder<DimensionType> holder, boolean flag, boolean flag1, long i, int j, org.bukkit.generator.ChunkGenerator gen, org.bukkit.generator.BiomeProvider biomeProvider, org.bukkit.World.Environment env, java.util.function.Function<org.spigotmc.SpigotWorldConfig, io.papermc.paper.configuration.WorldConfiguration> paperWorldConfigCreator, java.util.function.Supplier<me.samsuik.sakura.configuration.WorldConfiguration> sakuraWorldConfigCreator, java.util.concurrent.Executor executor) { // Sakura - sakura configuration files // Paper - create paper world config & Anti-Xray
// Paper start - getblock optimisations - cache world height/sections // Paper start - getblock optimisations - cache world height/sections
diff --git a/src/main/java/net/minecraft/world/level/ServerExplosion.java b/src/main/java/net/minecraft/world/level/ServerExplosion.java diff --git a/src/main/java/net/minecraft/world/level/ServerExplosion.java b/src/main/java/net/minecraft/world/level/ServerExplosion.java
index 11b12c1c4eff015bc40c7e7e965badb3f3fd272e..8268f8df624a73eaf0b8baad9aa16bab2ed0f0bc 100644 index 59e38ee6ac0699350a7021f1d074fdfee4a5ba41..ccca5d7d51cd7e4a77d87293eb66c9732fce4381 100644
--- a/src/main/java/net/minecraft/world/level/ServerExplosion.java --- a/src/main/java/net/minecraft/world/level/ServerExplosion.java
+++ b/src/main/java/net/minecraft/world/level/ServerExplosion.java +++ b/src/main/java/net/minecraft/world/level/ServerExplosion.java
@@ -134,7 +134,7 @@ public class ServerExplosion implements Explosion { @@ -134,7 +134,7 @@ public class ServerExplosion implements Explosion {
@@ -136,7 +136,7 @@ index 11b12c1c4eff015bc40c7e7e965badb3f3fd272e..8268f8df624a73eaf0b8baad9aa16bab
public ServerExplosion(ServerLevel world, @Nullable Entity entity, @Nullable DamageSource damageSource, @Nullable ExplosionDamageCalculator behavior, Vec3 pos, float power, boolean createFire, Explosion.BlockInteraction destructionType) { public ServerExplosion(ServerLevel world, @Nullable Entity entity, @Nullable DamageSource damageSource, @Nullable ExplosionDamageCalculator behavior, Vec3 pos, float power, boolean createFire, Explosion.BlockInteraction destructionType) {
this.level = world; this.level = world;
@@ -780,6 +794,16 @@ public class ServerExplosion implements Explosion { @@ -783,6 +797,16 @@ public class ServerExplosion implements Explosion {
} }
} }
// CraftBukkit end // CraftBukkit end

View File

@@ -67,10 +67,10 @@ index 149e461fcb23b2ed7ae8dcc09837de501ba9eafb..613d2d90571546a482ba493fae5cbc7c
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 82a448a18415ff0e050d26aaa8fcfe844631768f..449fa5518a1f9013dbd41dc4bfe3ff8a57b94a30 100644 index ce04a5d9aaef3ca8ba8d7b988bdf0497285f90c1..c916d3037bd5920ec06213a9162223a124428d6b 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
@@ -160,9 +160,15 @@ public abstract class SpecialisedExplosion<T extends Entity> extends ServerExplo @@ -161,9 +161,15 @@ public abstract class SpecialisedExplosion<T extends Entity> extends ServerExplo
if (distanceFromBottom <= 1.0) { if (distanceFromBottom <= 1.0) {
double x = entity.getX() - pos.x; double x = entity.getX() - pos.x;
@@ -631,7 +631,7 @@ index 0ae2d83055252146e346b06cc8360eef56d39f5c..8c41282eafc1201bf1c0d001fb4fe791
public final me.samsuik.sakura.explosion.density.BlockDensityCache densityCache = new me.samsuik.sakura.explosion.density.BlockDensityCache(); // Sakura - explosion density cache public final me.samsuik.sakura.explosion.density.BlockDensityCache densityCache = new me.samsuik.sakura.explosion.density.BlockDensityCache(); // Sakura - explosion density cache
public final me.samsuik.sakura.explosion.durable.DurableBlockManager durabilityManager = new me.samsuik.sakura.explosion.durable.DurableBlockManager(); // Sakura - explosion durable blocks public final me.samsuik.sakura.explosion.durable.DurableBlockManager durabilityManager = new me.samsuik.sakura.explosion.durable.DurableBlockManager(); // Sakura - explosion durable blocks
diff --git a/src/main/java/net/minecraft/world/level/ServerExplosion.java b/src/main/java/net/minecraft/world/level/ServerExplosion.java diff --git a/src/main/java/net/minecraft/world/level/ServerExplosion.java b/src/main/java/net/minecraft/world/level/ServerExplosion.java
index 5f2657e3baa6a9be301d36a456dd8d1135d78857..145417fd4623b5bdf6daac8fd100d6b572651153 100644 index 85c84333614a4e0739e39cb72d8e4015ed78e7b7..bdc3ff8cbe4e5eaa9d9a34f38fdd150f7368e33b 100644
--- a/src/main/java/net/minecraft/world/level/ServerExplosion.java --- a/src/main/java/net/minecraft/world/level/ServerExplosion.java
+++ b/src/main/java/net/minecraft/world/level/ServerExplosion.java +++ b/src/main/java/net/minecraft/world/level/ServerExplosion.java
@@ -413,6 +413,7 @@ public class ServerExplosion implements Explosion { @@ -413,6 +413,7 @@ public class ServerExplosion implements Explosion {
@@ -692,7 +692,7 @@ index 5f2657e3baa6a9be301d36a456dd8d1135d78857..145417fd4623b5bdf6daac8fd100d6b5
if (d4 != 0.0D) { if (d4 != 0.0D) {
d1 /= d4; d1 /= d4;
@@ -958,7 +978,7 @@ public class ServerExplosion implements Explosion { @@ -961,7 +981,7 @@ public class ServerExplosion implements Explosion {
// Sakura start - replace density cache // Sakura start - replace density cache
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) {
@@ -701,7 +701,7 @@ index 5f2657e3baa6a9be301d36a456dd8d1135d78857..145417fd4623b5bdf6daac8fd100d6b5
this.level.densityCache.putDensity(vec3d, entity, blockDensity); this.level.densityCache.putDensity(vec3d, entity, blockDensity);
// Sakura end - replace density cache // Sakura end - replace density cache
} }
@@ -966,6 +986,16 @@ public class ServerExplosion implements Explosion { @@ -969,6 +989,16 @@ public class ServerExplosion implements Explosion {
return blockDensity; return blockDensity;
} }

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Add explosions dropping items config
diff --git a/src/main/java/net/minecraft/world/level/ServerExplosion.java b/src/main/java/net/minecraft/world/level/ServerExplosion.java diff --git a/src/main/java/net/minecraft/world/level/ServerExplosion.java b/src/main/java/net/minecraft/world/level/ServerExplosion.java
index 0789f37ae89b22f9e3500b25cbe27ef853950b85..ace34cc86061bb4c9b080c6e9bf912b1fe3533a6 100644 index e857fd02a5e341a1a701da71874dbd850e3c5a5d..0dae16d140666cae7633bbfef6d1c5b979d7dc9e 100644
--- a/src/main/java/net/minecraft/world/level/ServerExplosion.java --- a/src/main/java/net/minecraft/world/level/ServerExplosion.java
+++ b/src/main/java/net/minecraft/world/level/ServerExplosion.java +++ b/src/main/java/net/minecraft/world/level/ServerExplosion.java
@@ -842,6 +842,12 @@ public class ServerExplosion implements Explosion { @@ -845,6 +845,12 @@ public class ServerExplosion implements Explosion {
}); });
} }

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Set entity impulse on explosion
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 449fa5518a1f9013dbd41dc4bfe3ff8a57b94a30..e4f4ae1ce4703e93664e3c2b97a8cae1e62aaebd 100644 index c916d3037bd5920ec06213a9162223a124428d6b..fd98f36ca2fd7e0b5961fd89aa976dbfc7df93b8 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
@@ -203,6 +203,7 @@ public abstract class SpecialisedExplosion<T extends Entity> extends ServerExplo @@ -204,6 +204,7 @@ public abstract class SpecialisedExplosion<T extends Entity> extends ServerExplo
moveZ += z; moveZ += z;
} }
@@ -17,7 +17,7 @@ index 449fa5518a1f9013dbd41dc4bfe3ff8a57b94a30..e4f4ae1ce4703e93664e3c2b97a8cae1
} }
} }
diff --git a/src/main/java/net/minecraft/world/level/ServerExplosion.java b/src/main/java/net/minecraft/world/level/ServerExplosion.java diff --git a/src/main/java/net/minecraft/world/level/ServerExplosion.java b/src/main/java/net/minecraft/world/level/ServerExplosion.java
index a82922cd0e648aa1154638a7ff5c616d37475f9c..4109a781b2882e24a20ec5a5ca87040ad0d99bc3 100644 index a9a63fa9d2c45298ebd4146e0dfeea54b6431797..f4ab7d377171bf5b9ead7ffd0e6151884bcd2968 100644
--- a/src/main/java/net/minecraft/world/level/ServerExplosion.java --- a/src/main/java/net/minecraft/world/level/ServerExplosion.java
+++ b/src/main/java/net/minecraft/world/level/ServerExplosion.java +++ b/src/main/java/net/minecraft/world/level/ServerExplosion.java
@@ -748,6 +748,7 @@ public class ServerExplosion implements Explosion { @@ -748,6 +748,7 @@ public class ServerExplosion implements Explosion {