From 52ee5d54696078a04129d11dffe62e8f3ea40e13 Mon Sep 17 00:00:00 2001 From: Darkere Date: Sat, 26 Sep 2020 20:28:13 +0200 Subject: [PATCH] fix controller crashing (#2684) * fix controller crashing fix consuming color without effect * changelog --- CHANGELOG.md | 4 ++++ .../refinedstorage/block/ControllerBlock.java | 11 +++++------ .../com/refinedmods/refinedstorage/util/ColorMap.java | 4 +++- 3 files changed, 12 insertions(+), 7 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 13a9c9df1..40829f4d3 100755 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,9 @@ # Refined Storage Changelog +### 1.9.7 +- Fixed crash when opening Controller GUI (Darkere) +- Fixed dye being consumed without effect in some cases (Darkere) + ### 1.9.6 - Port to Minecraft 1.16.3 (raoulvdberge) - Added colored block variants (Darkere) diff --git a/src/main/java/com/refinedmods/refinedstorage/block/ControllerBlock.java b/src/main/java/com/refinedmods/refinedstorage/block/ControllerBlock.java index 7fc4ca220..7f90d34fd 100644 --- a/src/main/java/com/refinedmods/refinedstorage/block/ControllerBlock.java +++ b/src/main/java/com/refinedmods/refinedstorage/block/ControllerBlock.java @@ -8,6 +8,7 @@ import com.refinedmods.refinedstorage.apiimpl.network.Network; import com.refinedmods.refinedstorage.container.ControllerContainer; import com.refinedmods.refinedstorage.tile.ControllerTile; import com.refinedmods.refinedstorage.util.BlockUtils; +import com.refinedmods.refinedstorage.util.ColorMap; import com.refinedmods.refinedstorage.util.NetworkUtils; import net.minecraft.block.Block; import net.minecraft.block.BlockState; @@ -130,15 +131,13 @@ public class ControllerBlock extends BaseBlock { return result; } + ColorMap colorMap = type == NetworkType.CREATIVE ? RSBlocks.CREATIVE_CONTROLLER : RSBlocks.CONTROLLER; DyeColor color = DyeColor.getColor(player.getHeldItem(hand)); - BlockState newState = type == NetworkType.CREATIVE ? - RSBlocks.CREATIVE_CONTROLLER.get(color).get().getDefaultState().with(ENERGY_TYPE, state.get(ENERGY_TYPE)) : - RSBlocks.CONTROLLER.get(color).get().getDefaultState().with(ENERGY_TYPE, state.get(ENERGY_TYPE)); + if (color != null && !state.getBlock().equals(colorMap.get(color).get())) { + BlockState newState = colorMap.get(color).get().getDefaultState().with(ENERGY_TYPE, state.get(ENERGY_TYPE)); - ActionResultType colorResult = RSBlocks.CONTROLLER.setBlockState(newState, player.getHeldItem(hand), world, pos, player); - if (colorResult != ActionResultType.PASS) { - return colorResult; + return RSBlocks.CONTROLLER.setBlockState(newState, player.getHeldItem(hand), world, pos, player); } if (!world.isRemote) { diff --git a/src/main/java/com/refinedmods/refinedstorage/util/ColorMap.java b/src/main/java/com/refinedmods/refinedstorage/util/ColorMap.java index 548e74116..47e95b337 100644 --- a/src/main/java/com/refinedmods/refinedstorage/util/ColorMap.java +++ b/src/main/java/com/refinedmods/refinedstorage/util/ColorMap.java @@ -103,9 +103,10 @@ public class ColorMap> { public ActionResultType changeBlockColor(BlockState state, ItemStack heldItem, World world, BlockPos pos, PlayerEntity player) { DyeColor color = DyeColor.getColor(heldItem); - if (color == null) { + if (color == null || state.getBlock().equals(colorMap.get(color).get())) { return ActionResultType.PASS; } + return setBlockState(getNewState((RegistryObject) colorMap.get(color), state), heldItem, world, pos, player); } @@ -122,6 +123,7 @@ public class ColorMap> { heldItem.shrink(1); } } + return ActionResultType.SUCCESS; } }