From 23ad7dbc0a9631d11d714da8c215df6eac7e09df Mon Sep 17 00:00:00 2001 From: Flemmli97 Date: Mon, 8 May 2023 20:51:41 +0200 Subject: [PATCH] fix fabric mixin crash --- Changelog.md | 4 +++ fabric/build.gradle | 8 ++++++ .../flan/fabric/mixin/LevelMixin.java | 25 +++++++++++++++++++ .../flan/fabric/mixin/ServerWorldMixin.java | 22 ---------------- .../main/resources/flan.fabric.mixins.json | 2 +- gradle.properties | 2 +- 6 files changed, 39 insertions(+), 24 deletions(-) create mode 100644 fabric/src/main/java/io/github/flemmli97/flan/fabric/mixin/LevelMixin.java delete mode 100644 fabric/src/main/java/io/github/flemmli97/flan/fabric/mixin/ServerWorldMixin.java diff --git a/Changelog.md b/Changelog.md index d6dc232..e751c33 100644 --- a/Changelog.md +++ b/Changelog.md @@ -1,3 +1,7 @@ +Flan 1.8.4.2 +================ +- Fabric: Fix mixin crash + Flan 1.8.4.1 ================ - Update to 1.19.4 diff --git a/fabric/build.gradle b/fabric/build.gradle index 681a106..8520a7e 100644 --- a/fabric/build.gradle +++ b/fabric/build.gradle @@ -15,6 +15,14 @@ configurations { developmentFabric.extendsFrom common } +loom { + runs { + client { + vmArgs "-Dmixin.debug.export=true" + } + } +} + repositories { mavenCentral() maven { diff --git a/fabric/src/main/java/io/github/flemmli97/flan/fabric/mixin/LevelMixin.java b/fabric/src/main/java/io/github/flemmli97/flan/fabric/mixin/LevelMixin.java new file mode 100644 index 0000000..5b2d1a4 --- /dev/null +++ b/fabric/src/main/java/io/github/flemmli97/flan/fabric/mixin/LevelMixin.java @@ -0,0 +1,25 @@ +package io.github.flemmli97.flan.fabric.mixin; + +import io.github.flemmli97.flan.event.WorldEvents; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.world.damagesource.DamageSource; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.level.Explosion; +import net.minecraft.world.level.ExplosionDamageCalculator; +import net.minecraft.world.level.Level; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; +import org.spongepowered.asm.mixin.injection.callback.LocalCapture; + +@Mixin(Level.class) +public abstract class LevelMixin { + + @Inject(method = "explode(Lnet/minecraft/world/entity/Entity;Lnet/minecraft/world/damagesource/DamageSource;Lnet/minecraft/world/level/ExplosionDamageCalculator;DDDFZLnet/minecraft/world/level/Level$ExplosionInteraction;Z)Lnet/minecraft/world/level/Explosion;", + at = @At(value = "INVOKE", target = "Lnet/minecraft/world/level/Explosion;explode()V", shift = At.Shift.AFTER), locals = LocalCapture.CAPTURE_FAILHARD) + private void explosionHook(Entity source, DamageSource damageSource, ExplosionDamageCalculator damageCalculator, double x, double y, double z, float radius, boolean fire, Level.ExplosionInteraction explosionInteraction, boolean spawnParticles, CallbackInfoReturnable info, Explosion.BlockInteraction interaction, Explosion explosion) { + if ((Object) this instanceof ServerLevel serverLevel) + WorldEvents.modifyExplosion(explosion, serverLevel); + } +} diff --git a/fabric/src/main/java/io/github/flemmli97/flan/fabric/mixin/ServerWorldMixin.java b/fabric/src/main/java/io/github/flemmli97/flan/fabric/mixin/ServerWorldMixin.java deleted file mode 100644 index 2bc28ba..0000000 --- a/fabric/src/main/java/io/github/flemmli97/flan/fabric/mixin/ServerWorldMixin.java +++ /dev/null @@ -1,22 +0,0 @@ -package io.github.flemmli97.flan.fabric.mixin; - -import io.github.flemmli97.flan.event.WorldEvents; -import net.minecraft.server.level.ServerLevel; -import net.minecraft.world.damagesource.DamageSource; -import net.minecraft.world.entity.Entity; -import net.minecraft.world.level.Explosion; -import net.minecraft.world.level.ExplosionDamageCalculator; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Inject; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; -import org.spongepowered.asm.mixin.injection.callback.LocalCapture; - -@Mixin(ServerLevel.class) -public abstract class ServerWorldMixin { - - @Inject(method = "explode", at = @At(value = "INVOKE", target = "Lnet/minecraft/world/level/Explosion;explode()V", shift = At.Shift.AFTER), locals = LocalCapture.CAPTURE_FAILHARD) - private void explosionHook(Entity entity, DamageSource damageSource, ExplosionDamageCalculator explosionBehavior, double d, double e, double f, float g, boolean bl, Explosion.BlockInteraction destructionType, CallbackInfoReturnable info, Explosion explosion) { - WorldEvents.modifyExplosion(explosion, (ServerLevel) (Object) this); - } -} diff --git a/fabric/src/main/resources/flan.fabric.mixins.json b/fabric/src/main/resources/flan.fabric.mixins.json index d538ba2..c863945 100644 --- a/fabric/src/main/resources/flan.fabric.mixins.json +++ b/fabric/src/main/resources/flan.fabric.mixins.json @@ -4,7 +4,7 @@ "package": "io.github.flemmli97.flan.fabric.mixin", "compatibilityLevel": "JAVA_16", "mixins": [ - "ServerWorldMixin", + "LevelMixin", "SpawnHelperMixin", "PlayerInteractEntityMixin", "ProjectileMixin", diff --git a/gradle.properties b/gradle.properties index f03ef32..e7f5b50 100644 --- a/gradle.properties +++ b/gradle.properties @@ -9,7 +9,7 @@ forge_version=1.19.4-45.0.22 loader_version=0.14.17 # Mod Properties -mod_version=1.8.4.1 +mod_version=1.8.4.2 maven_group=io.github.flemmli97 archives_base_name=flan