From 090d2ac385487c60bea3bc51ed09443e6ef56ef1 Mon Sep 17 00:00:00 2001 From: DBotThePony Date: Wed, 18 Aug 2021 18:10:23 +0700 Subject: [PATCH] Update state of pattern storage --- .../mc/otm/block/BlockPatternStorage.java | 2 +- .../entity/BlockEntityPatternStorage.java | 21 ++++++++++++++++++- .../mc/otm/menu/PatternStorageMenu.java | 6 +++--- 3 files changed, 24 insertions(+), 5 deletions(-) diff --git a/src/main/java/ru/dbotthepony/mc/otm/block/BlockPatternStorage.java b/src/main/java/ru/dbotthepony/mc/otm/block/BlockPatternStorage.java index 45e58d5b2..15075b01b 100644 --- a/src/main/java/ru/dbotthepony/mc/otm/block/BlockPatternStorage.java +++ b/src/main/java/ru/dbotthepony/mc/otm/block/BlockPatternStorage.java @@ -48,7 +48,7 @@ public class BlockPatternStorage extends BlockMatteryRotatable implements Entity var state = super.getStateForPlacement(context); for (var prop : PATTERN_STORAGE_DISKS_PROPS) - state = state.setValue(prop, Math.random() > 0.5); + state = state.setValue(prop, false); return state; } diff --git a/src/main/java/ru/dbotthepony/mc/otm/block/entity/BlockEntityPatternStorage.java b/src/main/java/ru/dbotthepony/mc/otm/block/entity/BlockEntityPatternStorage.java index d39aa6c6a..1ee9a5e58 100644 --- a/src/main/java/ru/dbotthepony/mc/otm/block/entity/BlockEntityPatternStorage.java +++ b/src/main/java/ru/dbotthepony/mc/otm/block/entity/BlockEntityPatternStorage.java @@ -11,12 +11,14 @@ import net.minecraft.world.entity.player.Player; import net.minecraft.world.inventory.AbstractContainerMenu; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.Level; +import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.state.BlockState; import net.minecraftforge.common.capabilities.Capability; import net.minecraftforge.common.util.LazyOptional; import net.minecraftforge.items.CapabilityItemHandler; import net.minecraftforge.items.IItemHandler; import ru.dbotthepony.mc.otm.OverdriveThatMatters; +import ru.dbotthepony.mc.otm.block.BlockPatternStorage; import ru.dbotthepony.mc.otm.capability.*; import ru.dbotthepony.mc.otm.matter.MatterGrid; import ru.dbotthepony.mc.otm.Registry; @@ -34,7 +36,7 @@ public class BlockEntityPatternStorage extends BlockEntityMattery implements IMa super(Registry.BlockEntities.PATTERN_STORAGE, p_155229_, p_155230_); } - public final MatteryContainer patterns = new MatteryContainer(this::setChanged, 3 * 3) { + public final MatteryContainer patterns = new MatteryContainer(this::setChanged, 8) { @Override public void setChanged(int slot, ItemStack new_state, ItemStack old_state) { if (grid != null && !ItemStack.isSameItemSameTags(new_state, old_state)) { @@ -45,6 +47,8 @@ public class BlockEntityPatternStorage extends BlockEntityMattery implements IMa if (!new_state.isEmpty()) { new_state.getCapability(MatteryCapability.PATTERN).ifPresent(cap -> cap.getStoredPatterns().forEach(grid::onPatternAdded)); } + + updateBlockstate(); } super.setChanged(slot, new_state, old_state); @@ -56,6 +60,21 @@ public class BlockEntityPatternStorage extends BlockEntityMattery implements IMa } }; + private void updateBlockstate() { + if (level == null) + return; + + var state = getBlockState(); + + for (int i = 0; i < 8; i++) { + state = state.setValue(BlockPatternStorage.PATTERN_STORAGE_DISKS_PROPS[i], patterns.getItem(i).getCapability(MatteryCapability.PATTERN).isPresent()); + } + + if (state != getBlockState()) { + level.setBlock(getBlockPos(), state, Block.UPDATE_CLIENTS); + } + } + private final LazyOptional resolver_item = LazyOptional.of(() -> patterns.handler( ((slot, stack) -> stack.getCapability(MatteryCapability.PATTERN).isPresent()) )); diff --git a/src/main/java/ru/dbotthepony/mc/otm/menu/PatternStorageMenu.java b/src/main/java/ru/dbotthepony/mc/otm/menu/PatternStorageMenu.java index 055261289..b417b322e 100644 --- a/src/main/java/ru/dbotthepony/mc/otm/menu/PatternStorageMenu.java +++ b/src/main/java/ru/dbotthepony/mc/otm/menu/PatternStorageMenu.java @@ -17,9 +17,9 @@ public class PatternStorageMenu extends MatteryMenu { Container patterns = tile != null ? tile.patterns : new SimpleContainer(3 * 3); - for (int row = 0; row < 3; row++) - for (int column = 0; column < 3; column++) - addSlot(new PatternSlot(patterns, row * 3 + column, 64 + column * 18, 20 + row * 18)); + for (int row = 0; row < 2; row++) + for (int column = 0; column < 4; column++) + addSlot(new PatternSlot(patterns, row * 4 + column, 48 + column * 20, 27 + row * 24)); addInventorySlots(); }