From ce4cb8974faf0a55e7a1a0402f459c7974c7b116 Mon Sep 17 00:00:00 2001 From: Frank Date: Sat, 13 Nov 2021 10:50:57 +0100 Subject: [PATCH 1/2] Fixed potential crash in AnvilMenu --- .../ru/bclib/mixin/common/AnvilMenuMixin.java | 27 ++++++++++--------- 1 file changed, 14 insertions(+), 13 deletions(-) diff --git a/src/main/java/ru/bclib/mixin/common/AnvilMenuMixin.java b/src/main/java/ru/bclib/mixin/common/AnvilMenuMixin.java index 5d5d9218..66bbbcc9 100644 --- a/src/main/java/ru/bclib/mixin/common/AnvilMenuMixin.java +++ b/src/main/java/ru/bclib/mixin/common/AnvilMenuMixin.java @@ -81,22 +81,23 @@ public abstract class AnvilMenuMixin extends ItemCombinerMenu implements AnvilSc stack = be_currentRecipe.craft(inputSlots, player); slotsChanged(inputSlots); access.execute((world, blockPos) -> { - BlockState anvilState = world.getBlockState(blockPos); - BaseAnvilBlock anvil = (BaseAnvilBlock) anvilState.getBlock(); - if (!player.getAbilities().instabuild && anvilState.is(BlockTags.ANVIL) && player.getRandom().nextDouble() < 0.1) { - BlockState damagedState = anvil.damageAnvilUse(anvilState, player.getRandom()); - if (damagedState == null) { - world.removeBlock(blockPos, false); - world.levelEvent(1029, blockPos, 0); - } - else { - world.setBlock(blockPos, damagedState, 2); + final BlockState anvilState = world.getBlockState(blockPos); + final Block anvilBlock = anvilState.getBlock(); + if (anvilBlock instanceof BaseAnvilBlock) { + final BaseAnvilBlock anvil = (BaseAnvilBlock) anvilBlock; + if (!player.getAbilities().instabuild && anvilState.is(BlockTags.ANVIL) && player.getRandom().nextDouble() < 0.1) { + BlockState damagedState = anvil.damageAnvilUse(anvilState, player.getRandom()); + if (damagedState == null) { + world.removeBlock(blockPos, false); + world.levelEvent(1029, blockPos, 0); + } else { + world.setBlock(blockPos, damagedState, 2); + world.levelEvent(1030, blockPos, 0); + } + } else { world.levelEvent(1030, blockPos, 0); } } - else { - world.levelEvent(1030, blockPos, 0); - } }); info.cancel(); return; From cf8905ab1a86a4ceec5d5a19741551d6306c393a Mon Sep 17 00:00:00 2001 From: Frank Date: Mon, 15 Nov 2021 14:41:46 +0100 Subject: [PATCH 2/2] Added `ComposterAPI` (paulevsGitch/BetterNether#442) --- src/main/java/ru/bclib/api/ComposterAPI.java | 22 ++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 src/main/java/ru/bclib/api/ComposterAPI.java diff --git a/src/main/java/ru/bclib/api/ComposterAPI.java b/src/main/java/ru/bclib/api/ComposterAPI.java new file mode 100644 index 00000000..93858cc8 --- /dev/null +++ b/src/main/java/ru/bclib/api/ComposterAPI.java @@ -0,0 +1,22 @@ +package ru.bclib.api; + +import net.minecraft.world.item.Item; +import net.minecraft.world.item.Items; +import net.minecraft.world.level.block.Block; +import ru.bclib.mixin.common.ComposterBlockAccessor; + +public class ComposterAPI { + public static Block allowCompost(float chance, Block block){ + if (block!=null){ + allowCompost(chance, block.asItem()); + } + return block; + } + + public static Item allowCompost(float chance, Item item){ + if (item!=null && item != Items.AIR) { + ComposterBlockAccessor.callAdd(chance, item); + } + return item; + } +}