Ver código fonte

修复下界合金砧无法正常损坏

LTCatt 6 anos atrás
pai
commit
3b209b1614

+ 9 - 3
src/main/java/com/hexdragon/blacksmithre/mixin/block/AnvilBlockMixin.java

@@ -88,11 +88,17 @@ public abstract class AnvilBlockMixin extends FallingBlock implements IForgeBloc
         builder.add(RegMain.blockStateMaterial);
     }
 
-    // 阻止下界合金砧因为摔落而损坏
+    // 设置下界合金砧的损坏
     @Inject(method = "damage", at = @At(value = "HEAD"), cancellable = true, locals = LocalCapture.CAPTURE_FAILEXCEPTION)
     private static void damage(BlockState state, CallbackInfoReturnable<BlockState> cir) {
-        if (state.isIn(RegMain.blockDamagedNetheriteAnvil.get()) || state.isIn(RegMain.blockChippedNetheriteAnvil.get()) || state.isIn(RegMain.blockPerfectNetheriteAnvil.get())) {
-            cir.setReturnValue(state.getBlock().getDefaultState().with(FACING, state.get(FACING)));
+        if (state.isIn(RegMain.blockPerfectNetheriteAnvil.get())) {
+            cir.setReturnValue(RegMain.blockChippedNetheriteAnvil.get().getDefaultState().with(FACING, state.get(FACING)));
+            cir.cancel();
+        } else if (state.isIn(RegMain.blockChippedNetheriteAnvil.get())) {
+            cir.setReturnValue(RegMain.blockDamagedNetheriteAnvil.get().getDefaultState().with(FACING, state.get(FACING)));
+            cir.cancel();
+        } else if (state.isIn(RegMain.blockDamagedNetheriteAnvil.get())) {
+            cir.setReturnValue(null);
             cir.cancel();
         }
     }