BetterEnd/src/main/java/ru/betterend/mixin/common/AnvilBlockMixin.java
2021-04-14 09:31:07 +03:00

29 lines
1.2 KiB
Java

package ru.betterend.mixin.common;
import net.minecraft.world.level.block.AnvilBlock;
import net.minecraft.world.level.block.state.BlockState;
import net.minecraft.world.level.block.state.properties.IntegerProperty;
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 ru.betterend.blocks.basis.EndAnvilBlock;
@Mixin(AnvilBlock.class)
public class AnvilBlockMixin {
@Inject(method = "damage", at = @At("HEAD"), cancellable = true)
private static void be_damage(BlockState fallingState, CallbackInfoReturnable<BlockState> info) {
if (fallingState.getBlock() instanceof EndAnvilBlock) {
IntegerProperty destructionProperty = ((EndAnvilBlock) fallingState.getBlock()).getDestructionProperty();
int destruction = fallingState.getValue(destructionProperty);
try {
BlockState state = fallingState.setValue(destructionProperty, destruction + 1);
info.setReturnValue(state);
info.cancel();
} catch (Exception ex) {
info.setReturnValue(null);
info.cancel();
}
}
}
}