From dfe547c34bb685eb0a821335d7a640aa7c45f5c8 Mon Sep 17 00:00:00 2001 From: TheBrokenRail Date: Sun, 16 Aug 2020 09:43:06 -0400 Subject: [PATCH] 0.0.9 --- CHANGELOG.md | 3 ++ gradle.properties | 2 +- .../api/energy/tick/EnergyTickable.java | 4 ++ .../api/energy/tick/EnergyTicker.java | 10 ++++- .../api/item/MultimeterExtra.java | 2 +- .../block/PhaseShifterBlock.java | 43 +++++++++++-------- .../shifter/PhaseShifterBlockEntity.java | 2 +- 7 files changed, 42 insertions(+), 24 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index b70a787..9cb2eb2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,8 @@ # Changelog +**Beta 0.0.9** +* Fix Interaction Bug With Phase Shifter Block + **Beta 0.0.8** * Add Phase Shifter Block * Fix Bugs diff --git a/gradle.properties b/gradle.properties index eba8bb6..d784713 100644 --- a/gradle.properties +++ b/gradle.properties @@ -10,7 +10,7 @@ org.gradle.jvmargs = -Xmx1G fabric_loader_version = 0.9.0+build.204 # Mod Properties - mod_version = 0.0.8 + mod_version = 0.0.9 maven_group = com.thebrokenrail # Dependencies diff --git a/src/main/java/com/thebrokenrail/energonrelics/api/energy/tick/EnergyTickable.java b/src/main/java/com/thebrokenrail/energonrelics/api/energy/tick/EnergyTickable.java index b90ef77..0578449 100644 --- a/src/main/java/com/thebrokenrail/energonrelics/api/energy/tick/EnergyTickable.java +++ b/src/main/java/com/thebrokenrail/energonrelics/api/energy/tick/EnergyTickable.java @@ -14,13 +14,17 @@ public interface EnergyTickable { */ @ApiStatus.OverrideOnly List startTick(); + /** * Logic Tick */ @ApiStatus.OverrideOnly void logicTick(); + /** * Get ID + * + * Used By The Debug Profiler * @return ID */ @ApiStatus.OverrideOnly diff --git a/src/main/java/com/thebrokenrail/energonrelics/api/energy/tick/EnergyTicker.java b/src/main/java/com/thebrokenrail/energonrelics/api/energy/tick/EnergyTicker.java index 7768be5..c00e8b2 100644 --- a/src/main/java/com/thebrokenrail/energonrelics/api/energy/tick/EnergyTicker.java +++ b/src/main/java/com/thebrokenrail/energonrelics/api/energy/tick/EnergyTicker.java @@ -17,11 +17,17 @@ import java.util.Objects; @ApiStatus.Internal public class EnergyTicker { private static final List scheduled = new ArrayList<>(); + private static List allLoaded = Collections.emptyList(); /** - * List of All Loaded Energy Tickers + * Get All Loaded Energy Tickers + * + * Only Usable In {@link EnergyTickable#logicTick()} + * @return List Of All Loaded Energy Tickers */ - public static List allLoaded = Collections.emptyList(); + public static List getAllLoaded() { + return allLoaded; + } /** * Schedule For Next Energy Tick diff --git a/src/main/java/com/thebrokenrail/energonrelics/api/item/MultimeterExtra.java b/src/main/java/com/thebrokenrail/energonrelics/api/item/MultimeterExtra.java index f3b8102..94d1921 100644 --- a/src/main/java/com/thebrokenrail/energonrelics/api/item/MultimeterExtra.java +++ b/src/main/java/com/thebrokenrail/energonrelics/api/item/MultimeterExtra.java @@ -3,7 +3,7 @@ package com.thebrokenrail.energonrelics.api.item; import net.minecraft.text.MutableText; /** - * Implement To provide Extra Information In Multimeter + * Implement To Provide Extra Information In Multimeter */ public interface MultimeterExtra { /** diff --git a/src/main/java/com/thebrokenrail/energonrelics/block/PhaseShifterBlock.java b/src/main/java/com/thebrokenrail/energonrelics/block/PhaseShifterBlock.java index de42cfe..efa980f 100644 --- a/src/main/java/com/thebrokenrail/energonrelics/block/PhaseShifterBlock.java +++ b/src/main/java/com/thebrokenrail/energonrelics/block/PhaseShifterBlock.java @@ -82,28 +82,33 @@ public class PhaseShifterBlock extends EnergyBlock { @Override public ActionResult onUse(BlockState state, World world, BlockPos pos, PlayerEntity player, Hand hand, BlockHitResult hit) { - ItemStack stack = player.getStackInHand(hand); - BlockEntity entity = world.getBlockEntity(pos); - - if (stack.getItem() instanceof DyeItem) { - DyeColor newColor = ((DyeItem) stack.getItem()).getColor(); - if (state.get(COLOR) != newColor) { - world.setBlockState(pos, state.with(COLOR, newColor)); - if (!player.isCreative()) { - stack.decrement(1); - } - return ActionResult.SUCCESS; - } else { - return ActionResult.PASS; - } + ActionResult result = super.onUse(state, world, pos, player, hand, hit); + if (result != ActionResult.PASS) { + return result; } else { - if (entity instanceof Inventory) { - if (!world.isClient()) { - player.openHandledScreen(new SimpleNamedScreenHandlerFactory((i, inv, player2) -> new HopperScreenHandler(i, inv, (Inventory) entity), new TranslatableText("block." + EnergonRelics.NAMESPACE + ".phase_shifter"))); + ItemStack stack = player.getStackInHand(hand); + BlockEntity entity = world.getBlockEntity(pos); + + if (stack.getItem() instanceof DyeItem && player.shouldCancelInteraction()) { + DyeColor newColor = ((DyeItem) stack.getItem()).getColor(); + if (state.get(COLOR) != newColor) { + world.setBlockState(pos, state.with(COLOR, newColor)); + if (!player.isCreative()) { + stack.decrement(1); + } + return ActionResult.SUCCESS; + } else { + return ActionResult.PASS; } - return ActionResult.SUCCESS; } else { - return ActionResult.FAIL; + if (entity instanceof Inventory) { + if (!world.isClient()) { + player.openHandledScreen(new SimpleNamedScreenHandlerFactory((i, inv, player2) -> new HopperScreenHandler(i, inv, (Inventory) entity), new TranslatableText("block." + EnergonRelics.NAMESPACE + ".phase_shifter"))); + } + return ActionResult.SUCCESS; + } else { + return ActionResult.FAIL; + } } } } diff --git a/src/main/java/com/thebrokenrail/energonrelics/block/entity/shifter/PhaseShifterBlockEntity.java b/src/main/java/com/thebrokenrail/energonrelics/block/entity/shifter/PhaseShifterBlockEntity.java index e4c4898..e85ac0f 100644 --- a/src/main/java/com/thebrokenrail/energonrelics/block/entity/shifter/PhaseShifterBlockEntity.java +++ b/src/main/java/com/thebrokenrail/energonrelics/block/entity/shifter/PhaseShifterBlockEntity.java @@ -161,7 +161,7 @@ public class PhaseShifterBlockEntity extends EnergyReceiverBlockEntity implement if (getCachedState().get(PhaseShifterBlock.POWERED) && !getCachedState().get(PhaseShifterBlock.IS_OUTPUT)) { List outputs = new ArrayList<>(); - for (EnergyTickable tickable : EnergyTicker.allLoaded) { + for (EnergyTickable tickable : EnergyTicker.getAllLoaded()) { if (tickable instanceof PhaseShifterBlockEntity && ((PhaseShifterBlockEntity) tickable).getCachedState().get(PhaseShifterBlock.IS_OUTPUT) && Objects.requireNonNull(((PhaseShifterBlockEntity) tickable).getWorld()).getRegistryKey() == getWorld().getRegistryKey() && ((PhaseShifterBlockEntity) tickable).cooldown == 0 && ((PhaseShifterBlockEntity) tickable).getCachedState().get(PhaseShifterBlock.COLOR) == getCachedState().get(PhaseShifterBlock.COLOR)) { outputs.add((PhaseShifterBlockEntity) tickable); }