From bedfa3b4d0507e0de4beb522285a18ecef80ea2a Mon Sep 17 00:00:00 2001 From: nea Date: Mon, 6 Jun 2022 17:30:02 +0200 Subject: More morbing --- .../mixin/AccessorBrewingRecipeRegistry.java | 16 +++++++++ .../mixin/MixinAbstractClientPlayerEntity.java | 38 ++++++++++++++++++++++ 2 files changed, 54 insertions(+) create mode 100644 src/main/java/moe/nea/morbing/mixin/AccessorBrewingRecipeRegistry.java create mode 100644 src/main/java/moe/nea/morbing/mixin/MixinAbstractClientPlayerEntity.java (limited to 'src/main/java/moe/nea/morbing/mixin') diff --git a/src/main/java/moe/nea/morbing/mixin/AccessorBrewingRecipeRegistry.java b/src/main/java/moe/nea/morbing/mixin/AccessorBrewingRecipeRegistry.java new file mode 100644 index 0000000..994b72e --- /dev/null +++ b/src/main/java/moe/nea/morbing/mixin/AccessorBrewingRecipeRegistry.java @@ -0,0 +1,16 @@ +package moe.nea.morbing.mixin; + +import net.minecraft.item.Item; +import net.minecraft.potion.Potion; +import net.minecraft.recipe.BrewingRecipeRegistry; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.gen.Invoker; + +@Mixin(BrewingRecipeRegistry.class) +public interface AccessorBrewingRecipeRegistry { + @Invoker(value = "registerPotionRecipe") + static void registerPotionRecipe(Potion input, Item item, Potion output) { + throw new IllegalStateException("Mixin not applied"); + } + +} diff --git a/src/main/java/moe/nea/morbing/mixin/MixinAbstractClientPlayerEntity.java b/src/main/java/moe/nea/morbing/mixin/MixinAbstractClientPlayerEntity.java new file mode 100644 index 0000000..553414e --- /dev/null +++ b/src/main/java/moe/nea/morbing/mixin/MixinAbstractClientPlayerEntity.java @@ -0,0 +1,38 @@ +package moe.nea.morbing.mixin; + +import com.mojang.authlib.GameProfile; +import moe.nea.morbing.Morbing; +import moe.nea.morbing.MorbingTimeStatus; +import net.minecraft.client.network.AbstractClientPlayerEntity; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.util.Identifier; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.World; +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; + +@Mixin(AbstractClientPlayerEntity.class) +public abstract class MixinAbstractClientPlayerEntity extends PlayerEntity { + + public MixinAbstractClientPlayerEntity(World world, BlockPos pos, float yaw, GameProfile profile) { + super(world, pos, yaw, profile); + } + + @Inject(method = "hasSkinTexture", at = @At("HEAD"), cancellable = true) + public void onHasSkinTexture(CallbackInfoReturnable cir) { + if (hasStatusEffect(MorbingTimeStatus.INSTANCE)) { + cir.setReturnValue(true); + } + } + + @Inject(method = "getSkinTexture", at = @At("HEAD"), cancellable = true) + public void onGetSkinTexture(CallbackInfoReturnable cir) { + if (hasStatusEffect(MorbingTimeStatus.INSTANCE)) { + cir.setReturnValue(Morbing.identifier("morbingskin.png")); + } + } + + +} -- cgit