From f042643056a23d97bc891eaa10e0e921bea50f6f Mon Sep 17 00:00:00 2001 From: alterNERDtive Date: Mon, 19 Jun 2023 08:15:03 +0200 Subject: [PATCH] added routers + vaultar fix --- .../mixin/MixinVaultAltarBlock.java | 50 +++++++++++++++++++ .../resources/mixins.the_vault_tweaks.json | 1 + 2 files changed, 51 insertions(+) create mode 100644 src/main/java/tv/alterNERD/VaultModTweaks/integration/mixin/MixinVaultAltarBlock.java diff --git a/src/main/java/tv/alterNERD/VaultModTweaks/integration/mixin/MixinVaultAltarBlock.java b/src/main/java/tv/alterNERD/VaultModTweaks/integration/mixin/MixinVaultAltarBlock.java new file mode 100644 index 0000000..0bd1a78 --- /dev/null +++ b/src/main/java/tv/alterNERD/VaultModTweaks/integration/mixin/MixinVaultAltarBlock.java @@ -0,0 +1,50 @@ +package tv.alterNERD.VaultModTweaks.integration.mixin; + +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Shadow; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; + +import iskallia.vault.block.VaultAltarBlock; +import iskallia.vault.block.entity.VaultAltarTileEntity; +import iskallia.vault.init.ModItems; +import net.minecraft.core.BlockPos; +import net.minecraft.server.level.ServerPlayer; +import net.minecraft.world.InteractionHand; +import net.minecraft.world.InteractionResult; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.phys.BlockHitResult; +import tv.alterNERD.VaultModTweaks.Configuration; + +@Mixin(VaultAltarBlock.class) +public class MixinVaultAltarBlock { + @Shadow + private VaultAltarTileEntity getAltarTileEntity(Level world, BlockPos pos) { + throw new UnsupportedOperationException("Unimplemented method 'getAltarTileEntity'"); + } + + @Inject( + method = "use", + at = @At( + value = "RETURN", + ordinal = 0 + ), + cancellable = true + ) + private void onUse(BlockState state, Level world, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hit, CallbackInfoReturnable ci) { + if (Configuration.ROUTER_VAULTAR_FIX.get() && !world.isClientSide && hand == InteractionHand.MAIN_HAND && player instanceof ServerPlayer) { + ServerPlayer serverPlayer = (ServerPlayer)player; + ItemStack heldItem = player.getMainHandItem(); + VaultAltarTileEntity altar = this.getAltarTileEntity(world, pos); + if (altar.getAltarState() == VaultAltarTileEntity.AltarState.IDLE) { + if (heldItem.getItem() == ModItems.VAULT_ROCK) { + ci.setReturnValue(altar.onAddVaultRock(serverPlayer, heldItem)); + } + } + } + } +} diff --git a/src/main/resources/mixins.the_vault_tweaks.json b/src/main/resources/mixins.the_vault_tweaks.json index 3671c4f..70731e0 100644 --- a/src/main/resources/mixins.the_vault_tweaks.json +++ b/src/main/resources/mixins.the_vault_tweaks.json @@ -10,6 +10,7 @@ "MixinExpertisesGuiConfig", "MixinStageManager", "MixinUnidentifiedRelicFragmentsConfig", + "MixinVaultAltarBlock", "MixinVaultAltarConfig", "MixinVaultCharmConfig", "MixinVaultJewelCuttingConfig",