From 5ccd2a1285967a6e82af6bc07d9dc831f6e52fdf Mon Sep 17 00:00:00 2001 From: TheBlueEyeOfEnder Date: Fri, 19 Jul 2024 15:35:12 -0400 Subject: [PATCH] - Slight code optimizations, mainly for the Creator. --- gradle.properties | 2 +- .../youmatter/creator/CreatorBlock.java | 11 +- .../youmatter/creator/CreatorBlockEntity.java | 152 ++++++++---------- .../youmatter/creator/CreatorScreen.java | 14 +- .../youmatter/encoder/EncoderBlock.java | 13 +- .../youmatter/encoder/EncoderBlockEntity.java | 2 +- .../youmatter/replicator/ReplicatorBlock.java | 11 +- .../replicator/ReplicatorBlockEntity.java | 19 ++- .../youmatter/replicator/ReplicatorMenu.java | 5 +- .../youmatter/scanner/ScannerBlock.java | 11 +- .../java/realmayus/youmatter/util/Tags.java | 2 + .../data/youmatter/tags/fluids/matter.json | 6 + 12 files changed, 121 insertions(+), 127 deletions(-) create mode 100644 src/main/resources/data/youmatter/tags/fluids/matter.json diff --git a/gradle.properties b/gradle.properties index 43c2538..42a420f 100644 --- a/gradle.properties +++ b/gradle.properties @@ -32,7 +32,7 @@ mod_name=YouMatter # The license of the mod. Review your options at https://choosealicense.com/. All Rights Reserved is the default. mod_license=MIT # The mod version. See https://semver.org/ -mod_version=2.3.1 +mod_version=2.3.2 logo=youmatter.png # The group ID for the mod. It is only important when publishing as an artifact to a Maven repository. # This should match the base package used for the mod sources. diff --git a/src/main/java/realmayus/youmatter/creator/CreatorBlock.java b/src/main/java/realmayus/youmatter/creator/CreatorBlock.java index fb541a1..690166e 100644 --- a/src/main/java/realmayus/youmatter/creator/CreatorBlock.java +++ b/src/main/java/realmayus/youmatter/creator/CreatorBlock.java @@ -53,11 +53,12 @@ public BlockEntityTicker getTicker(Level level, Block */ @Override public InteractionResult use(BlockState state, Level level, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hit) { - if (!level.isClientSide) { - MenuProvider menuProvider = getMenuProvider(state, level, pos); - if (menuProvider != null) { - player.openMenu(menuProvider, buf -> buf.writeBlockPos(pos)); - } + if (level.isClientSide) { + return InteractionResult.SUCCESS; + } + MenuProvider menuProvider = getMenuProvider(state, level, pos); + if (menuProvider != null) { + player.openMenu(menuProvider, buf -> buf.writeBlockPos(pos)); } return InteractionResult.SUCCESS; } diff --git a/src/main/java/realmayus/youmatter/creator/CreatorBlockEntity.java b/src/main/java/realmayus/youmatter/creator/CreatorBlockEntity.java index f9a5e65..3af4dc3 100644 --- a/src/main/java/realmayus/youmatter/creator/CreatorBlockEntity.java +++ b/src/main/java/realmayus/youmatter/creator/CreatorBlockEntity.java @@ -1,6 +1,5 @@ package realmayus.youmatter.creator; - import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.nbt.CompoundTag; @@ -33,8 +32,6 @@ import javax.annotation.Nonnull; import javax.annotation.Nullable; -import java.util.HashMap; -import java.util.Map; public class CreatorBlockEntity extends BlockEntity implements MenuProvider { @@ -60,7 +57,7 @@ public void setActivated(boolean activated) { } } - public Lazy inventory = Lazy.of(() -> new ItemStackHandler(5) { + public Lazy < ItemStackHandler > inventory = Lazy.of(() -> new ItemStackHandler(5) { @Override protected void onContentsChanged(int slot) { CreatorBlockEntity.this.setChanged(); @@ -93,7 +90,7 @@ FluidTank getSTank() { return sTank; } - private Lazy fluidHandler = Lazy.of(() -> new IFluidHandler() { + private Lazy < IFluidHandler > fluidHandler = Lazy.of(() -> new IFluidHandler() { @Override public int getTanks() { return 2; @@ -176,7 +173,7 @@ public void setEnergy(int energy) { myEnergyStorage.get().setEnergy(energy); } - private Lazy myEnergyStorage = Lazy.of(() -> new MyEnergyStorage(this, 1000000, Integer.MAX_VALUE)); + private Lazy < MyEnergyStorage > myEnergyStorage = Lazy.of(() -> new MyEnergyStorage(this, 1000000, Integer.MAX_VALUE)); @Override public void setRemoved() { @@ -207,7 +204,6 @@ public void load(CompoundTag compound) { } } - @Override public void saveAdditional(CompoundTag compound) { super.saveAdditional(compound); @@ -241,55 +237,54 @@ public static void tick(Level level, BlockPos pos, BlockState state, CreatorBloc } public void tick(Level level, BlockPos pos, BlockState state) { + if (currentPartTick != 40 && (currentPartTick % 5) != 0) { + currentPartTick++; + return; + } + if (currentPartTick == 40) { // 2 sec - if (myEnergyStorage.get().getEnergyStored() > 0) { - for (Direction direction : Direction.values()) { - if (isActivated()) { - IEnergyStorage energyStorage = level.getCapability(Capabilities.EnergyStorage.BLOCK, getBlockPos().relative(direction), null); - if (energyStorage != null) { - if (getEnergy() >= 0.3f * 1000000 && sTank.getFluidAmount() >= 125) { // if energy more than 30 % of max energy - if (uTank.getFluidAmount() + YMConfig.CONFIG.productionPerTick.get() <= MAX_UMATTER) { - sTank.drain(125, IFluidHandler.FluidAction.EXECUTE); - uTank.fill(new FluidStack(ModContent.UMATTER.get(), YMConfig.CONFIG.productionPerTick.get()), IFluidHandler.FluidAction.EXECUTE); - myEnergyStorage.get().extractEnergy(Math.round(getEnergy() / 3f), false); - } - } - } - } - } + if (myEnergyStorage.get().getEnergyStored() <= 0) { + currentPartTick = 0; + return; } + + for (Direction direction: Direction.values()) { + if (!isActivated()) continue; + + IEnergyStorage e = level.getCapability(Capabilities.EnergyStorage.BLOCK, getBlockPos().relative(direction), null); + if (e == null) continue; + + if (getEnergy() < 0.3f * 1000000 || sTank.getFluidAmount() < 125) continue; // if energy less than 30 % of max energy + + if (uTank.getFluidAmount() + YMConfig.CONFIG.productionPerTick.get() > MAX_UMATTER) continue; + + sTank.drain(125, IFluidHandler.FluidAction.EXECUTE); + uTank.fill(new FluidStack(ModContent.UMATTER.get(), YMConfig.CONFIG.productionPerTick.get()), IFluidHandler.FluidAction.EXECUTE); + myEnergyStorage.get().extractEnergy(Math.round(getEnergy() / 3f), false); + } + //Auto-outputting U-Matter Object[] neighborTE = getNeighborTileEntity(pos); - if(neighborTE != null) { - IFluidHandler neighborHandler = level.getCapability(Capabilities.FluidHandler.BLOCK, ((BlockPos) neighborTE[0]), (Direction) neighborTE[1]); - if (neighborHandler != null) { - if (uTank.getFluidAmount() >= 500) { // set a maximum output of 500 mB (every two seconds) - uTank.drain(neighborHandler.fill(new FluidStack(ModContent.UMATTER.get(), 500), IFluidHandler.FluidAction.EXECUTE), IFluidHandler.FluidAction.EXECUTE); - } else { - uTank.drain(neighborHandler.fill(new FluidStack(ModContent.UMATTER.get(), uTank.getFluidAmount()), IFluidHandler.FluidAction.EXECUTE), IFluidHandler.FluidAction.EXECUTE); - } + if (neighborTE != null) { + IFluidHandler h = level.getCapability(Capabilities.FluidHandler.BLOCK, ((BlockPos) neighborTE[0]), (Direction) neighborTE[1]); + if (h != null) { + int amountToDrain = Math.min(uTank.getFluidAmount(), 500); // set a maximum output of 500 mB (every two seconds) + uTank.drain(h.fill(new FluidStack(ModContent.UMATTER.get(), amountToDrain), IFluidHandler.FluidAction.EXECUTE), IFluidHandler.FluidAction.EXECUTE); } } currentPartTick = 0; } else if ((currentPartTick % 5) == 0) { // every five ticks ItemStack item = inventory.get().getStackInSlot(3); if (!(item.isEmpty()) && GeneralUtils.canAddItemToSlot(inventory.get().getStackInSlot(4), item, false)) { - if (item.getItem() instanceof BucketItem) { - if (getUTank().getFluidAmount() >= 1000) { - getUTank().drain(1000, IFluidHandler.FluidAction.EXECUTE); - inventory.get().setStackInSlot(3, ItemStack.EMPTY); - inventory.get().insertItem(4, new ItemStack(ModContent.UMATTER_BUCKET.get(), 1), false); - } + if (item.getItem() instanceof BucketItem && getUTank().getFluidAmount() >= 1000) { + getUTank().drain(1000, IFluidHandler.FluidAction.EXECUTE); + inventory.get().setStackInSlot(3, ItemStack.EMPTY); + inventory.get().insertItem(4, new ItemStack(ModContent.UMATTER_BUCKET.get(), 1), false); } else { - IFluidHandlerItem itemHandler = item.getCapability(Capabilities.FluidHandler.ITEM); - if(itemHandler != null) { - if (itemHandler.getFluidInTank(0).getFluid().isSame(ModContent.UMATTER.get()) || itemHandler.getFluidInTank(0).isEmpty()) { - if (itemHandler.getTankCapacity(0) - itemHandler.getFluidInTank(0).getAmount() < getUTank().getFluidAmount()) { //fluid in S-Tank is more than what fits in the item's tank - getUTank().drain(itemHandler.fill(new FluidStack(ModContent.UMATTER.get(), itemHandler.getTankCapacity(0) - itemHandler.getFluidInTank(0).getAmount()), IFluidHandler.FluidAction.EXECUTE), IFluidHandler.FluidAction.EXECUTE); - } else { //S-Tank's fluid fits perfectly in item's tank - getUTank().drain(itemHandler.fill(getUTank().getFluid(), IFluidHandler.FluidAction.EXECUTE), IFluidHandler.FluidAction.EXECUTE); - } - } + IFluidHandlerItem h = item.getCapability(Capabilities.FluidHandler.ITEM); + if (h != null && (h.getFluidInTank(0).getFluid().isSame(ModContent.UMATTER.get()) || h.getFluidInTank(0).isEmpty())) { + int amountToFill = Math.min(h.getTankCapacity(0) - h.getFluidInTank(0).getAmount(), getUTank().getFluidAmount()); + getUTank().drain(h.fill(new FluidStack(ModContent.UMATTER.get(), amountToFill), IFluidHandler.FluidAction.EXECUTE), IFluidHandler.FluidAction.EXECUTE); } inventory.get().setStackInSlot(3, ItemStack.EMPTY); inventory.get().insertItem(4, item, false); @@ -297,23 +292,20 @@ public void tick(Level level, BlockPos pos, BlockState state) { } item = inventory.get().getStackInSlot(1); if (!item.isEmpty()) { - IFluidHandlerItem itemHandler = item.getCapability(Capabilities.FluidHandler.ITEM); - if(itemHandler != null) { + IFluidHandlerItem h = item.getCapability(Capabilities.FluidHandler.ITEM); + if (h != null) { if (item.getItem() instanceof BucketItem && GeneralUtils.canAddItemToSlot(inventory.get().getStackInSlot(2), new ItemStack(Items.BUCKET, 1), false)) { - if (!itemHandler.getFluidInTank(0).isEmpty() && (itemHandler.getFluidInTank(0).getFluid().is(Tags.Fluids.STABILIZER))) { + if (!h.getFluidInTank(0).isEmpty() && (h.getFluidInTank(0).getFluid().is(Tags.Fluids.STABILIZER))) { if (MAX_STABILIZER - getSTank().getFluidAmount() >= 1000) { - getSTank().fill(new FluidStack(itemHandler.getFluidInTank(0).getFluid(), 1000), IFluidHandler.FluidAction.EXECUTE); + getSTank().fill(new FluidStack(h.getFluidInTank(0).getFluid(), 1000), IFluidHandler.FluidAction.EXECUTE); inventory.get().setStackInSlot(1, ItemStack.EMPTY); inventory.get().insertItem(2, new ItemStack(Items.BUCKET, 1), false); } } } else if (GeneralUtils.canAddItemToSlot(inventory.get().getStackInSlot(2), item, false)) { - if (itemHandler.getFluidInTank(0).getFluid().is(Tags.Fluids.STABILIZER)) { - if (itemHandler.getFluidInTank(0).getAmount() > MAX_STABILIZER - getSTank().getFluidAmount()) { //given fluid is more than what fits in the S-Tank - getSTank().fill(itemHandler.drain(MAX_STABILIZER - getSTank().getFluidAmount(), IFluidHandler.FluidAction.EXECUTE), IFluidHandler.FluidAction.EXECUTE); - } else { //given fluid fits perfectly in S-Tank - getSTank().fill(itemHandler.drain(itemHandler.getFluidInTank(0).getAmount(), IFluidHandler.FluidAction.EXECUTE), IFluidHandler.FluidAction.EXECUTE); - } + if (h.getFluidInTank(0).getFluid().is(Tags.Fluids.STABILIZER)) { + int amountToDrain = Math.min(h.getFluidInTank(0).getAmount(), MAX_STABILIZER - getSTank().getFluidAmount()); + getSTank().fill(h.drain(amountToDrain, IFluidHandler.FluidAction.EXECUTE), IFluidHandler.FluidAction.EXECUTE); } } } @@ -321,53 +313,39 @@ public void tick(Level level, BlockPos pos, BlockState state) { inventory.get().insertItem(2, item, false); } currentPartTick++; - } else { - currentPartTick++; } } private Object[] getNeighborTileEntity(BlockPos creatorPos) { - HashMap foundPos = new HashMap<>(); - for (Direction facing : Direction.values()) { + Object[] result = null; + + for (Direction facing: Direction.values()) { BlockPos offsetPos = creatorPos.relative(facing); BlockEntity offsetBe = level.getBlockEntity(offsetPos); if (offsetBe != null) { - IFluidHandler fluidHandler = level.getCapability(Capabilities.FluidHandler.BLOCK, offsetPos, facing); - if (fluidHandler != null) { - foundPos.put(offsetPos, facing); - } - } - } - - // Prioritize Replicator - for (Map.Entry entry : foundPos.entrySet()) { - if (level.getBlockEntity(entry.getKey()) instanceof ReplicatorBlockEntity replicator) { - IFluidHandler h = level.getCapability(Capabilities.FluidHandler.BLOCK, replicator.getBlockPos(), entry.getValue()); - if (h != null && h.fill(new FluidStack(ModContent.UMATTER.get(), 500), IFluidHandler.FluidAction.SIMULATE) > 0) { - //Replicator can take fluid - return new Object[]{entry.getKey(), entry.getValue()}; // position, facing - } - } - } - - // Replicator not found / can't take fluid, now trying other blocks - for (Map.Entry entry : foundPos.entrySet()) { - BlockEntity be = level.getBlockEntity(entry.getKey()); - if (be != null) { - IFluidHandler h = level.getCapability(Capabilities.FluidHandler.BLOCK, be.getBlockPos(), entry.getValue()); + IFluidHandler h = level.getCapability(Capabilities.FluidHandler.BLOCK, offsetPos, facing); if (h != null && h.fill(new FluidStack(ModContent.UMATTER.get(), 500), IFluidHandler.FluidAction.SIMULATE) > 0) { - //Tile can take fluid - return new Object[]{entry.getKey(), entry.getValue()}; // position, facing + if (offsetBe instanceof ReplicatorBlockEntity) { + //Replicator can take fluid + return new Object[] { + offsetPos, + facing + }; // position, facing + } else if (result == null) { + //Tile can take fluid + result = new Object[] { + offsetPos, + facing + }; // position, facing + } } } } - // found nothing - return null; + return result; // found nothing or return the first non-replicator that can take fluid } - @Override public Component getDisplayName() { return Component.translatable(ModContent.CREATOR_BLOCK.get().getDescriptionId()); diff --git a/src/main/java/realmayus/youmatter/creator/CreatorScreen.java b/src/main/java/realmayus/youmatter/creator/CreatorScreen.java index 974d073..b4f5e11 100644 --- a/src/main/java/realmayus/youmatter/creator/CreatorScreen.java +++ b/src/main/java/realmayus/youmatter/creator/CreatorScreen.java @@ -1,5 +1,6 @@ package realmayus.youmatter.creator; +import net.minecraft.ChatFormatting; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.GuiGraphics; import net.minecraft.client.gui.screens.inventory.AbstractContainerScreen; @@ -49,12 +50,7 @@ protected void renderBg(GuiGraphics guiGraphics, float partialTicks, int mouseX, } private void drawActiveIcon(GuiGraphics guiGraphics, boolean isActive) { - if(isActive) { - guiGraphics.blit(GUI, 154, 13, 176, 24, 8, 9); - - } else { - guiGraphics.blit(GUI, 154, 13, 176, 15, 8, 9); - } + guiGraphics.blit(GUI, 154, 13, 176, isActive ? 24 : 15, 8, 9); } @@ -90,7 +86,11 @@ public void render(GuiGraphics guiGraphics, int mouseX, int mouseY, float partia int yAxis = (mouseY - (height - imageHeight) / 2); if(xAxis >= 31 && xAxis <= 44 && yAxis >= 20 && yAxis <= 75) { - drawTooltip(guiGraphics, mouseX, mouseY, Arrays.asList(Component.literal(I18n.get("youmatter.gui.stabilizer.title")), Component.literal(I18n.get("youmatter.gui.stabilizer.description", creator.getSTank().getFluidAmount())))); + if (!creator.getSTank().isEmpty()) { + drawTooltip(guiGraphics, mouseX, mouseY, Arrays.asList(Component.literal(I18n.get(creator.getSTank().getFluidInTank(0).getTranslationKey())).withStyle(ChatFormatting.GOLD), Component.literal(I18n.get("youmatter.gui.stabilizer.description", creator.getSTank().getFluidAmount())))); + } else { + drawTooltip(guiGraphics, mouseX, mouseY, Arrays.asList(Component.literal(I18n.get("youmatter.gui.stabilizer.title")), Component.literal(I18n.get("youmatter.gui.stabilizer.description", creator.getSTank().getFluidAmount())))); + } } if(xAxis >= 89 && xAxis <= 102 && yAxis >= 20 && yAxis <= 75) { drawTooltip(guiGraphics, mouseX, mouseY, Arrays.asList(Component.literal(I18n.get("youmatter.gui.umatter.title")), Component.literal(I18n.get("youmatter.gui.umatter.description", creator.getUTank().getFluidAmount())))); diff --git a/src/main/java/realmayus/youmatter/encoder/EncoderBlock.java b/src/main/java/realmayus/youmatter/encoder/EncoderBlock.java index f913037..cdcf1c0 100644 --- a/src/main/java/realmayus/youmatter/encoder/EncoderBlock.java +++ b/src/main/java/realmayus/youmatter/encoder/EncoderBlock.java @@ -51,12 +51,13 @@ public BlockEntityTicker getTicker(Level level, Block */ @Override public InteractionResult use(BlockState state, Level level, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hit) { - if (!level.isClientSide) { - MenuProvider menuProvider = getMenuProvider(state, level, pos); - if (menuProvider != null) { - player.openMenu(menuProvider, buf -> buf.writeBlockPos(pos)); - } - } + if (level.isClientSide) { + return InteractionResult.SUCCESS; + } + MenuProvider menuProvider = getMenuProvider(state, level, pos); + if (menuProvider != null) { + player.openMenu(menuProvider, buf -> buf.writeBlockPos(pos)); + } return InteractionResult.SUCCESS; } diff --git a/src/main/java/realmayus/youmatter/encoder/EncoderBlockEntity.java b/src/main/java/realmayus/youmatter/encoder/EncoderBlockEntity.java index 9ac0acb..0693b2c 100644 --- a/src/main/java/realmayus/youmatter/encoder/EncoderBlockEntity.java +++ b/src/main/java/realmayus/youmatter/encoder/EncoderBlockEntity.java @@ -137,7 +137,7 @@ public static void tick(Level level, BlockPos pos, BlockState state, EncoderBloc } public void tick(Level level, BlockPos pos, BlockState state) { - if (queue.size() > 0) { + if (!queue.isEmpty()) { ItemStack processIS = queue.get(queue.size() - 1); if (processIS != ItemStack.EMPTY) { if (inventory != null) { diff --git a/src/main/java/realmayus/youmatter/replicator/ReplicatorBlock.java b/src/main/java/realmayus/youmatter/replicator/ReplicatorBlock.java index d5f8691..af4c519 100644 --- a/src/main/java/realmayus/youmatter/replicator/ReplicatorBlock.java +++ b/src/main/java/realmayus/youmatter/replicator/ReplicatorBlock.java @@ -89,11 +89,12 @@ public BlockEntityTicker getTicker(Level level, Block */ @Override public InteractionResult use(BlockState state, Level level, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hit) { - if (!level.isClientSide) { - MenuProvider menuProvider = getMenuProvider(state, level, pos); - if (menuProvider != null) { - player.openMenu(menuProvider, buf -> buf.writeBlockPos(pos)); - } + if (level.isClientSide) { + return InteractionResult.SUCCESS; + } + MenuProvider menuProvider = getMenuProvider(state, level, pos); + if (menuProvider != null) { + player.openMenu(menuProvider, buf -> buf.writeBlockPos(pos)); } return InteractionResult.SUCCESS; } diff --git a/src/main/java/realmayus/youmatter/replicator/ReplicatorBlockEntity.java b/src/main/java/realmayus/youmatter/replicator/ReplicatorBlockEntity.java index cb37da0..40aa636 100644 --- a/src/main/java/realmayus/youmatter/replicator/ReplicatorBlockEntity.java +++ b/src/main/java/realmayus/youmatter/replicator/ReplicatorBlockEntity.java @@ -33,6 +33,7 @@ import realmayus.youmatter.YMConfig; import realmayus.youmatter.util.GeneralUtils; import realmayus.youmatter.util.MyEnergyStorage; +import realmayus.youmatter.util.Tags; import javax.annotation.Nonnull; import javax.annotation.Nullable; @@ -121,7 +122,7 @@ public boolean isFluidValid(int tank, @Nonnull FluidStack stack) { @Override public int fill(FluidStack resource, FluidAction action) { - if (resource.getFluid().equals(ModContent.UMATTER.get())) { + if (resource.getFluid().is(Tags.Fluids.MATTER)) { if (MAX_UMATTER - getTank().getFluidAmount() < resource.getAmount()) { return tank.fill(new FluidStack(resource.getFluid(), MAX_UMATTER), action); } else { @@ -134,15 +135,17 @@ public int fill(FluidStack resource, FluidAction action) { @Nonnull @Override public FluidStack drain(FluidStack resource, FluidAction action) { - assert ModContent.UMATTER.get() != null; - return new FluidStack(ModContent.UMATTER.get(), 0); + return new FluidStack(resource.getFluid(), 0); } @Nonnull @Override public FluidStack drain(int maxDrain, FluidAction action) { - assert ModContent.UMATTER.get() != null; - return new FluidStack(ModContent.UMATTER.get(), 0); + if (tank.getFluid().getFluid() != null) { + return tank.drain(tank.getFluid(), action); + } else { + return null; + } } }); @@ -198,9 +201,9 @@ public void tick(Level level, BlockPos pos, BlockState state) { if (item.getItem() instanceof BucketItem && GeneralUtils.canAddItemToSlot(inventory.get().getStackInSlot(4), new ItemStack(Items.BUCKET, 1), false)) { IFluidHandlerItem h = item.getCapability(Capabilities.FluidHandler.ITEM); if (h != null) { - if (!h.getFluidInTank(0).isEmpty() && h.getFluidInTank(0).getFluid().isSame(ModContent.UMATTER.get())) { + if (!h.getFluidInTank(0).isEmpty() && h.getFluidInTank(0).getFluid().is(Tags.Fluids.MATTER)) { if (MAX_UMATTER - getTank().getFluidAmount() >= 1000) { - getTank().fill(new FluidStack(ModContent.UMATTER.get(), 1000), IFluidHandler.FluidAction.EXECUTE); + getTank().fill(new FluidStack(h.getFluidInTank(0).getFluid(), 1000), IFluidHandler.FluidAction.EXECUTE); inventory.get().setStackInSlot(3, ItemStack.EMPTY); inventory.get().insertItem(4, new ItemStack(Items.BUCKET, 1), false); } @@ -209,7 +212,7 @@ public void tick(Level level, BlockPos pos, BlockState state) { } else if (GeneralUtils.canAddItemToSlot(inventory.get().getStackInSlot(4), inventory.get().getStackInSlot(3), false)) { IFluidHandlerItem h = item.getCapability(Capabilities.FluidHandler.ITEM); if (h != null) { - if (h.getFluidInTank(0).getFluid().isSame(ModContent.UMATTER.get())) { + if (h.getFluidInTank(0).getFluid().is(Tags.Fluids.MATTER)) { if (h.getFluidInTank(0).getAmount() > MAX_UMATTER - getTank().getFluidAmount()) { //given fluid is more than what fits in the U-Tank getTank().fill(h.drain(MAX_UMATTER - getTank().getFluidAmount(), IFluidHandler.FluidAction.EXECUTE), IFluidHandler.FluidAction.EXECUTE); } else { //given fluid fits perfectly in U-Tank diff --git a/src/main/java/realmayus/youmatter/replicator/ReplicatorMenu.java b/src/main/java/realmayus/youmatter/replicator/ReplicatorMenu.java index a4a2d3c..421960d 100644 --- a/src/main/java/realmayus/youmatter/replicator/ReplicatorMenu.java +++ b/src/main/java/realmayus/youmatter/replicator/ReplicatorMenu.java @@ -17,6 +17,7 @@ import realmayus.youmatter.ModContent; import realmayus.youmatter.items.ThumbdriveItem; import realmayus.youmatter.util.DisplaySlot; +import realmayus.youmatter.util.Tags; public class ReplicatorMenu extends AbstractContainerMenu { @@ -85,7 +86,7 @@ public ItemStack quickMoveStack(Player player, int index) { return ItemStack.EMPTY; // custom slot is full, can't transfer item! } } else if(slotStack.getItem() instanceof BucketItem bucket) { - if(bucket.getFluid().equals(ModContent.UMATTER.get())) { + if(bucket.getFluid().is(Tags.Fluids.MATTER)) { if(!this.moveItemStackTo(slotStack, 39, 40, false)) { return ItemStack.EMPTY; // custom slot is full, can't transfer item! } @@ -93,7 +94,7 @@ public ItemStack quickMoveStack(Player player, int index) { } else { IFluidHandlerItem h = slotStack.getCapability(Capabilities.FluidHandler.ITEM); if(h != null) { - if (h.getFluidInTank(0).getFluid().isSame(ModContent.UMATTER.get())) { + if (h.getFluidInTank(0).getFluid().is(Tags.Fluids.MATTER)) { if(!this.moveItemStackTo(slotStack, 39, 40, false)) { return ItemStack.EMPTY; // custom slot is full, can't transfer item! } diff --git a/src/main/java/realmayus/youmatter/scanner/ScannerBlock.java b/src/main/java/realmayus/youmatter/scanner/ScannerBlock.java index 63f4532..72369b0 100644 --- a/src/main/java/realmayus/youmatter/scanner/ScannerBlock.java +++ b/src/main/java/realmayus/youmatter/scanner/ScannerBlock.java @@ -52,11 +52,12 @@ public BlockEntityTicker getTicker(Level level, Block */ @Override public InteractionResult use(BlockState state, Level level, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hit) { - if (!level.isClientSide) { - MenuProvider menuProvider = getMenuProvider(state, level, pos); - if (menuProvider != null) { - player.openMenu(menuProvider, buf -> buf.writeBlockPos(pos)); - } + if (level.isClientSide) { + return InteractionResult.SUCCESS; + } + MenuProvider menuProvider = getMenuProvider(state, level, pos); + if (menuProvider != null) { + player.openMenu(menuProvider, buf -> buf.writeBlockPos(pos)); } return InteractionResult.SUCCESS; } diff --git a/src/main/java/realmayus/youmatter/util/Tags.java b/src/main/java/realmayus/youmatter/util/Tags.java index 66f0813..6ec3c72 100644 --- a/src/main/java/realmayus/youmatter/util/Tags.java +++ b/src/main/java/realmayus/youmatter/util/Tags.java @@ -12,6 +12,8 @@ public static class Fluids { public static final TagKey STABILIZER = create("stabilizer"); + public static final TagKey MATTER = create("matter"); + public static TagKey create(String name) { return FluidTags.create(new ResourceLocation(YouMatter.MODID, name)); } diff --git a/src/main/resources/data/youmatter/tags/fluids/matter.json b/src/main/resources/data/youmatter/tags/fluids/matter.json new file mode 100644 index 0000000..249b291 --- /dev/null +++ b/src/main/resources/data/youmatter/tags/fluids/matter.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "youmatter:umatter" + ] +} \ No newline at end of file