Skip to content

Commit d6c9fb2

Browse files
committed
Getting close
1 parent 27b0686 commit d6c9fb2

File tree

12 files changed

+134
-63
lines changed

12 files changed

+134
-63
lines changed

build.gradle

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
plugins {
22
id 'fabric-loom' version '1.7-SNAPSHOT'
33
id 'maven-publish'
4+
id "dev.kikugie.j52j" version "1.0.1"
45
id "dev.kikugie.stonecutter"
56
}
67

settings.gradle

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,12 @@ pluginManagement {
77
mavenCentral()
88
gradlePluginPortal()
99
maven { url = "https://maven.kikugie.dev/snapshots" }
10+
maven { url = "https://maven.kikugie.dev/releases"}
1011
}
1112
}
1213

1314
plugins {
14-
id "dev.kikugie.stonecutter" version "0.5-beta.3"
15+
id "dev.kikugie.stonecutter" version "0.5-beta.5"
1516
}
1617

1718

src/main/java/net/superkat/explosiveenhancement/ExplosiveEnhancement.java

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,13 @@
33
import net.fabricmc.api.ModInitializer;
44
import net.fabricmc.fabric.api.particle.v1.FabricParticleTypes;
55
import net.minecraft.particle.ParticleType;
6-
import net.minecraft.registry.Registries;
7-
import net.minecraft.registry.Registry;
86
import net.minecraft.util.Identifier;
97
import org.slf4j.Logger;
108
import org.slf4j.LoggerFactory;
119

1210
//? if (1.19.2) {
1311
/*import net.minecraft.util.registry.Registry;
14-
*///?} else {
12+
*///?} else {
1513
import net.minecraft.registry.Registries;
1614
import net.minecraft.registry.Registry;
1715
//?}
@@ -22,7 +20,7 @@
2220
import net.minecraft.particle.SimpleParticleType;
2321
//?}
2422

25-
//? if(>=1.21.2) {
23+
//? if (>=1.21.2) {
2624
import net.fabricmc.fabric.api.networking.v1.PayloadTypeRegistry;
2725
import net.superkat.explosiveenhancement.network.S2CExplosiveEnhancementParticles;
2826
//?}
@@ -55,12 +53,10 @@ public class ExplosiveEnhancement implements ModInitializer {
5553
public static final SimpleParticleType UNDERWATERSPARKS = FabricParticleTypes.simple();
5654
//?}
5755

58-
//? if(>=1.21.2)
56+
//? if (>=1.21.2) {
5957
public static final SimpleParticleType NO_RENDER_PARTICLE = FabricParticleTypes.simple();
6058
//?}
6159

62-
//TODO - change flash particle to custom "noexplosion" particle
63-
6460
@Override
6561
public void onInitialize() {
6662
registerParticle(id("blastwave"), BLASTWAVE);
@@ -74,7 +70,7 @@ public void onInitialize() {
7470
registerParticle(id("sparks"), SPARKS);
7571
registerParticle(id("underwatersparks"), UNDERWATERSPARKS);
7672

77-
//? if(>=1.21.2) {
73+
//? if (>=1.21.2) {
7874
//Used for the single player dynamic explosions
7975
registerParticle(id("norenderparticle"), NO_RENDER_PARTICLE);
8076
PayloadTypeRegistry.playS2C().register(S2CExplosiveEnhancementParticles.ID, S2CExplosiveEnhancementParticles.CODEC);

src/main/java/net/superkat/explosiveenhancement/ExplosiveEnhancementClient.java

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,23 +3,22 @@
33
import net.fabricmc.api.ClientModInitializer;
44
import net.fabricmc.fabric.api.client.particle.v1.ParticleFactoryRegistry;
55
import net.fabricmc.loader.api.FabricLoader;
6-
import net.minecraft.client.particle.NoRenderParticle;
76
import net.superkat.explosiveenhancement.config.ExplosiveConfig;
87
import net.superkat.explosiveenhancement.particles.normal.BlastWaveParticle;
98
import net.superkat.explosiveenhancement.particles.normal.FireballParticle;
10-
import net.superkat.explosiveenhancement.particles.normal.NoRender;
119
import net.superkat.explosiveenhancement.particles.normal.SmokeParticle;
1210
import net.superkat.explosiveenhancement.particles.normal.SparkParticle;
1311
import net.superkat.explosiveenhancement.particles.underwater.BubbleParticle;
1412
import net.superkat.explosiveenhancement.particles.underwater.ShockwaveParticle;
1513
import net.superkat.explosiveenhancement.particles.underwater.UnderwaterBlastWaveParticle;
1614
import net.superkat.explosiveenhancement.particles.underwater.UnderwaterSparkParticle;
1715

18-
//? if(>=1.21.2) {
16+
//? if (>=1.21.2) {
1917
import net.fabricmc.fabric.api.client.networking.v1.ClientPlayNetworking;
2018
import net.superkat.explosiveenhancement.network.S2CExplosiveEnhancementParticles;
2119
import net.superkat.explosiveenhancement.api.ExplosionParticleType;
2220
import net.superkat.explosiveenhancement.api.ExplosiveApi;
21+
import net.superkat.explosiveenhancement.particles.normal.NoRender;
2322
import net.minecraft.util.math.Vec3d;
2423
import net.minecraft.world.World;
2524
//?}
@@ -47,7 +46,7 @@ public void onInitializeClient() {
4746
ParticleFactoryRegistry.getInstance().register(ExplosiveEnhancement.UNDERWATERBLASTWAVE, UnderwaterBlastWaveParticle.Factory::new);
4847
ParticleFactoryRegistry.getInstance().register(ExplosiveEnhancement.UNDERWATERSPARKS, UnderwaterSparkParticle.Factory::new);
4948

50-
//? if(>=1.21.2) {
49+
//? if (>=1.21.2) {
5150
ParticleFactoryRegistry.getInstance().register(ExplosiveEnhancement.NO_RENDER_PARTICLE, NoRender.Factory::new);
5251

5352
ClientPlayNetworking.registerGlobalReceiver(S2CExplosiveEnhancementParticles.ID, (payload, context) -> {
@@ -72,8 +71,8 @@ public void onInitializeClient() {
7271

7372
public static boolean YaclLoaded() {
7473
//? if (<=1.19.3) {
75-
// /*return FabricLoader.getInstance().isModLoaded("yet-another-config-lib");
76-
//?} else {
74+
/*return FabricLoader.getInstance().isModLoaded("yet-another-config-lib");
75+
*///?} else {
7776
return FabricLoader.getInstance().isModLoaded("yet_another_config_lib_v3");
7877
//?}
7978
}

src/main/java/net/superkat/explosiveenhancement/ExplosiveHandler.java

Lines changed: 34 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,14 +9,21 @@
99
import net.minecraft.network.packet.s2c.play.ExplosionS2CPacket;
1010
import net.minecraft.particle.ParticlesMode;
1111
//?}
12+
import net.minecraft.entity.LivingEntity;
13+
import net.minecraft.network.packet.s2c.play.ExplosionS2CPacket;
1214
import net.minecraft.particle.ParticleEffect;
1315
import net.minecraft.particle.ParticleTypes;
16+
//? if (1.19.2) {
17+
/*import net.minecraft.tag.FluidTags;
18+
*///?} else {
1419
import net.minecraft.registry.tag.FluidTags;
20+
//?}
1521
import net.minecraft.util.math.BlockPos;
16-
import net.minecraft.util.math.MathHelper;
1722
import net.minecraft.util.math.Vec3d;
1823
import net.minecraft.world.World;
24+
//? if (>=1.21.2) {
1925
import net.minecraft.world.explosion.ExplosionImpl;
26+
//?}
2027
import net.superkat.explosiveenhancement.api.ExplosionParticleType;
2128
import net.superkat.explosiveenhancement.api.ExplosiveApi;
2229

@@ -68,7 +75,13 @@ public static ExplosionParticleType determineParticleType(World world, double x,
6875
}
6976

7077
public static ExplosionParticleType determineParticleType(World world, Vec3d pos, ParticleEffect particle) {
71-
if (particle == ParticleTypes.GUST_EMITTER_SMALL || particle == ParticleTypes.GUST_EMITTER_LARGE) {
78+
if (
79+
//? if (>=1.20.0) {
80+
particle == ParticleTypes.GUST_EMITTER_SMALL || particle == ParticleTypes.GUST_EMITTER_LARGE
81+
//?} else {
82+
/*false
83+
*///?}
84+
) {
7285
return ExplosionParticleType.WIND;
7386
} else if(CONFIG.underwaterExplosions && blockIsInWater(world, pos.getX(), pos.getY(), pos.getZ())) {
7487
return ExplosionParticleType.WATER;
@@ -87,7 +100,12 @@ public static ExplosionParticleType determineParticleType(World world, Vec3d pos
87100
* @return If the given coordinates are underwater or not.
88101
*/
89102
public static boolean blockIsInWater(World world, double x, double y, double z) {
90-
BlockPos pos = BlockPos.ofFloored(x, y, z);
103+
BlockPos pos =
104+
//? if (<=1.19.3) {
105+
/*new BlockPos(x, y, z);
106+
*///?} else {
107+
BlockPos.ofFloored(x, y, z);
108+
//?}
91109
return CONFIG.underwaterExplosions && world.getFluidState(pos).isIn(FluidTags.WATER);
92110
}
93111

@@ -102,7 +120,11 @@ public static boolean blockIsInWater(World world, double x, double y, double z)
102120
* @see ParticleTypes#GUST_EMITTER_LARGE
103121
*/
104122
public static boolean particlesAreWindGust(ParticleEffect particle, ParticleEffect emitterParticle) {
123+
//? if (>=1.20.0) {
105124
return particle == ParticleTypes.GUST_EMITTER_SMALL && emitterParticle == ParticleTypes.GUST_EMITTER_LARGE;
125+
//?} else {
126+
/*return false;
127+
*///?}
106128
}
107129

108130
public static boolean particlesAreEmitter(ParticleEffect particle) {
@@ -124,6 +146,7 @@ private static float getPowerFromParticle(ParticleEffect particle) {
124146

125147
public static float getPowerFromExplosionPacket(World world, ExplosionS2CPacket packet) {
126148
float power = 0;
149+
//? if (>=1.21.2) {
127150
ParticleEffect particle = packet.explosionParticle();
128151

129152
if(CONFIG.attemptPowerKnockbackCalc && packet.playerKnockback().isPresent()) {
@@ -133,11 +156,12 @@ public static float getPowerFromExplosionPacket(World world, ExplosionS2CPacket
133156
if(Float.isNaN(power) || power == 0) {
134157
power = getPowerFromParticle(particle);
135158
}
136-
159+
//?}
137160
return power;
138161
}
139162

140163
public static float attemptDeterminePowerFromKnockback(World world, Vec3d explosionPos, LivingEntity entity, Vec3d knockback) {
164+
//? if (>=1.21.2) {
141165
double e = entity.getX() - explosionPos.getX();
142166
double g = entity.getEyeY() - explosionPos.getY();
143167
double h = entity.getZ() - explosionPos.getZ();
@@ -154,7 +178,7 @@ public static float attemptDeterminePowerFromKnockback(World world, Vec3d explos
154178
float avgPower = (powerX + powerY + powerZ) / 3f;
155179
return avgPower;
156180
}
157-
181+
//?}
158182
return 0;
159183
}
160184

@@ -251,8 +275,13 @@ public static void spawnWindExplosionParticles(World world, double x, double y,
251275
}
252276

253277
private static void spawnVanillaParticles(World world, double x, double y, double z, float power, boolean didDestroyBlocks, boolean isImportant, boolean wind) {
278+
//? if (>=1.20.0) {
254279
ParticleEffect particle = wind ? ParticleTypes.GUST_EMITTER_SMALL : ParticleTypes.EXPLOSION;
255280
ParticleEffect emitter = wind ? ParticleTypes.GUST_EMITTER_LARGE : ParticleTypes.EXPLOSION_EMITTER;
281+
//?} else {
282+
/*ParticleEffect particle = ParticleTypes.EXPLOSION;
283+
ParticleEffect emitter = ParticleTypes.EXPLOSION_EMITTER;
284+
*///?}
256285
world.addParticle(power >= 2.0f && didDestroyBlocks ? emitter : particle, isImportant, x, y, z, 1.0, 0.0, 0.0);
257286
}
258287
}

src/main/java/net/superkat/explosiveenhancement/config/YaclIntegration.java

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,6 @@
11
package net.superkat.explosiveenhancement.config;
22

33
//? if (>=1.19.4) {
4-
//import dev.isxander.yacl.api.Option;
5-
//import dev.isxander.yacl.api.OptionGroup;
6-
//import dev.isxander.yacl.api.YetAnotherConfigLib;
74
import dev.isxander.yacl3.api.*;
85
import dev.isxander.yacl3.gui.controllers.BooleanController;
96
import dev.isxander.yacl3.gui.controllers.slider.DoubleSliderController;
@@ -417,7 +414,7 @@ public static Screen makeScreen(Screen parent) {
417414
dynamicExplosionGroup.option(smallExtraPower);
418415
dynamicExplosionGroup.option(attemptBetterSmallExplosions);
419416
dynamicExplosionGroup.option(smallExplosionYOffset);
420-
//? if(>=1.21.2)
417+
//? if (>=1.21.2) {
421418
dynamicExplosionGroup.option(sad121_2notice);
422419
dynamicExplosionGroup.option(bypassPowerForSingleplayer);
423420
dynamicExplosionGroup.option(attemptPowerKnockbackCalc);

src/main/java/net/superkat/explosiveenhancement/mixin/ClientPlayNetworkHandlerMixin.java

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,27 @@
11
package net.superkat.explosiveenhancement.mixin;
22

3-
import net.minecraft.client.network.ClientPlayNetworkHandler;
3+
//? if (>=1.21.2) {
44
import net.minecraft.client.world.ClientWorld;
55
import net.minecraft.network.packet.s2c.play.ExplosionS2CPacket;
66
import net.minecraft.particle.ParticleEffect;
7-
import net.minecraft.particle.ParticleTypes;
87
import net.minecraft.util.math.Vec3d;
98
import net.minecraft.world.World;
109
import net.superkat.explosiveenhancement.ExplosiveEnhancement;
1110
import net.superkat.explosiveenhancement.api.ExplosionParticleType;
1211
import net.superkat.explosiveenhancement.api.ExplosiveApi;
13-
import org.spongepowered.asm.mixin.Mixin;
1412
import org.spongepowered.asm.mixin.Shadow;
1513
import org.spongepowered.asm.mixin.injection.At;
1614
import org.spongepowered.asm.mixin.injection.Inject;
1715
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
1816
import static net.superkat.explosiveenhancement.ExplosiveEnhancement.LOGGER;
1917
import static net.superkat.explosiveenhancement.ExplosiveEnhancementClient.CONFIG;
18+
import net.minecraft.client.network.ClientPlayNetworkHandler;
19+
import org.spongepowered.asm.mixin.Mixin;
2020

2121
@Mixin(ClientPlayNetworkHandler.class)
22+
//?}
2223
public abstract class ClientPlayNetworkHandlerMixin {
23-
//? if (>=1.21.3) {
24+
//? if (>=1.21.2) {
2425

2526
@Shadow public abstract ClientWorld getWorld();
2627

Lines changed: 52 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,15 @@
11
package net.superkat.explosiveenhancement.mixin;
22

3+
//? if (<=1.21.1) {
4+
5+
/*import net.minecraft.client.particle.Particle;
36
import net.minecraft.particle.ParticleEffect;
7+
import net.minecraft.particle.ParticleType;
8+
import net.minecraft.particle.ParticleTypes;
49
import net.minecraft.world.World;
5-
import net.minecraft.world.explosion.Explosion;
610
import net.superkat.explosiveenhancement.api.ExplosionParticleType;
711
import net.superkat.explosiveenhancement.api.ExplosiveApi;
812
import org.spongepowered.asm.mixin.Final;
9-
import org.spongepowered.asm.mixin.Mixin;
1013
import org.spongepowered.asm.mixin.Shadow;
1114
import org.spongepowered.asm.mixin.injection.At;
1215
import org.spongepowered.asm.mixin.injection.Inject;
@@ -15,31 +18,56 @@
1518
import static net.superkat.explosiveenhancement.ExplosiveEnhancement.LOGGER;
1619
import static net.superkat.explosiveenhancement.ExplosiveEnhancementClient.CONFIG;
1720
18-
//@Mixin(Explosion.class)
21+
*///?}
22+
23+
import net.minecraft.world.explosion.Explosion;
24+
import org.spongepowered.asm.mixin.Mixin;
25+
26+
@Mixin(Explosion.class)
1927
public abstract class ExplosionMixin {
2028
//The client-side explosion handling changed in 1.21.2/3, requiring a new mixin
2129

2230
//? if (<=1.21.1) {
23-
// @Shadow @Final private World world;
24-
// @Shadow @Final private double x;
25-
// @Shadow @Final private double y;
26-
// @Shadow @Final private double z;
27-
// @Shadow @Final private float power;
28-
// @Shadow @Final private ParticleEffect particle;
29-
// @Shadow @Final private ParticleEffect emitterParticle;
30-
// @Shadow public abstract boolean shouldDestroy();
31-
//
32-
// @Inject(method = "affectWorld(Z)V", at = @At(value = "INVOKE", target = "Lnet/minecraft/world/World;addParticle(Lnet/minecraft/particle/ParticleEffect;DDDDDD)V"), cancellable = true)
33-
// public void explosiveenhancement$spawnExplosiveParticles(boolean particles, CallbackInfo ci) {
34-
// if (CONFIG.modEnabled && particles) {
35-
// if (CONFIG.debugLogs) { LOGGER.info("[Explosive Enhancement]: affectWorld has been called!"); }
36-
//
37-
// ExplosionParticleType explosionParticleType = ExplosiveApi.determineParticleType(world, x, y, z, particle, emitterParticle);
38-
// if(explosionParticleType != ExplosionParticleType.WIND) { //allows normal wind particles to be shown
39-
// ExplosiveApi.spawnParticles(world, x, y, z, power, explosionParticleType, this.shouldDestroy());
40-
// ci.cancel();
41-
// }
42-
// }
43-
// }
31+
/*@Shadow @Final private World world;
32+
@Shadow @Final private double x;
33+
@Shadow @Final private double y;
34+
@Shadow @Final private double z;
35+
@Shadow @Final private float power;
36+
//? if (>=1.20.0) {
37+
@Shadow @Final private ParticleEffect particle;
38+
@Shadow @Final private ParticleEffect emitterParticle;
4439
//?}
40+
//? if (>=1.19.3) {
41+
@Shadow public abstract boolean shouldDestroy();
42+
//?}
43+
//? if (1.19.2) {
44+
/^@Shadow @Final private Explosion.DestructionType destructionType;
45+
^///?}
46+
47+
@Inject(method = "affectWorld(Z)V", at = @At(value = "INVOKE", target = "Lnet/minecraft/world/World;addParticle(Lnet/minecraft/particle/ParticleEffect;DDDDDD)V"), cancellable = true)
48+
public void explosiveenhancement$spawnExplosiveParticles(boolean particles, CallbackInfo ci) {
49+
if (CONFIG.modEnabled && particles) {
50+
if (CONFIG.debugLogs) { LOGGER.info("[Explosive Enhancement]: affectWorld has been called!"); }
51+
52+
//? if (<=1.19.4) {
53+
/^ParticleEffect particle = ParticleTypes.EXPLOSION;
54+
ParticleEffect emitterParticle = ParticleTypes.EXPLOSION_EMITTER;
55+
^///?}
56+
57+
ExplosionParticleType explosionParticleType = ExplosiveApi.determineParticleType(world, x, y, z, particle, emitterParticle);
58+
if(explosionParticleType != ExplosionParticleType.WIND) { //allows normal wind particles to be shown
59+
60+
boolean destroyedBlocks =
61+
//? if (>=1.19.3) {
62+
this.shouldDestroy();
63+
//?} else {
64+
/^this.destructionType != Explosion.DestructionType.NONE;
65+
^///?}
66+
67+
ExplosiveApi.spawnParticles(world, x, y, z, power, explosionParticleType, destroyedBlocks);
68+
ci.cancel();
69+
}
70+
}
71+
}
72+
*///?}
4573
}

0 commit comments

Comments
 (0)