From 94b7ff993e8be170bef972a4fa1b3b13f8c9d404 Mon Sep 17 00:00:00 2001 From: raoulvdberge Date: Thu, 30 Jan 2020 11:29:52 +0100 Subject: [PATCH] Update changelog, small fixes --- CHANGELOG.md | 1 + .../grid/handler/FluidGridHandler.java | 24 ++------------ .../node/StorageMonitorNetworkNode.java | 33 ++++++------------- .../container/StorageMonitorContainer.java | 3 +- .../tesr/StorageMonitorTileRenderer.java | 12 +++---- .../refinedstorage/util/NetworkUtils.java | 23 +++++++++++++ 6 files changed, 43 insertions(+), 53 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3b017c6e3..86816f053 100755 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,7 @@ ### 1.8.1 - Port to Minecraft 1.15.2 (raoulvdberge) +- The Storage Monitor supports fluids as well now (V1RTUOZ) ### 1.8 - Port to Minecraft 1.15 (raoulvdberge) diff --git a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/grid/handler/FluidGridHandler.java b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/grid/handler/FluidGridHandler.java index b63f96584..f3d75a9b6 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/grid/handler/FluidGridHandler.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/grid/handler/FluidGridHandler.java @@ -7,10 +7,10 @@ import com.raoulvdberge.refinedstorage.api.network.INetwork; import com.raoulvdberge.refinedstorage.api.network.grid.handler.IFluidGridHandler; import com.raoulvdberge.refinedstorage.api.network.security.Permission; import com.raoulvdberge.refinedstorage.api.util.Action; -import com.raoulvdberge.refinedstorage.apiimpl.API; import com.raoulvdberge.refinedstorage.apiimpl.autocrafting.preview.ErrorCraftingPreviewElement; import com.raoulvdberge.refinedstorage.network.grid.GridCraftingPreviewResponseMessage; import com.raoulvdberge.refinedstorage.network.grid.GridCraftingStartResponseMessage; +import com.raoulvdberge.refinedstorage.util.NetworkUtils; import com.raoulvdberge.refinedstorage.util.StackUtils; import net.minecraft.entity.player.ServerPlayerEntity; import net.minecraft.inventory.InventoryHelper; @@ -41,25 +41,7 @@ public class FluidGridHandler implements IFluidGridHandler { return; } - ItemStack bucket = ItemStack.EMPTY; - - for (int i = 0; i < player.inventory.getSizeInventory(); ++i) { - ItemStack slot = player.inventory.getStackInSlot(i); - - if (API.instance().getComparer().isEqualNoQuantity(StackUtils.EMPTY_BUCKET, slot)) { - bucket = StackUtils.EMPTY_BUCKET.copy(); - - player.inventory.decrStackSize(i, 1); - - break; - } - } - - if (bucket.isEmpty()) { - bucket = network.extractItem(StackUtils.EMPTY_BUCKET, 1, Action.PERFORM); - } - - if (!bucket.isEmpty()) { + NetworkUtils.extractBucketFromPlayerInventoryOrNetwork(player, network, bucket -> { bucket.getCapability(CapabilityFluidHandler.FLUID_HANDLER_ITEM_CAPABILITY, null).ifPresent(fluidHandler -> { network.getFluidStorageTracker().changed(player, stack.copy()); @@ -78,7 +60,7 @@ public class FluidGridHandler implements IFluidGridHandler { network.getNetworkItemManager().drainEnergy(player, RS.SERVER_CONFIG.getWirelessFluidGrid().getExtractUsage()); }); - } + }); } @Override diff --git a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/StorageMonitorNetworkNode.java b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/StorageMonitorNetworkNode.java index 3301fa144..cf5498c25 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/StorageMonitorNetworkNode.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/StorageMonitorNetworkNode.java @@ -12,6 +12,7 @@ import com.raoulvdberge.refinedstorage.tile.StorageMonitorTile; import com.raoulvdberge.refinedstorage.tile.config.IComparable; import com.raoulvdberge.refinedstorage.tile.config.IType; import com.raoulvdberge.refinedstorage.tile.config.RedstoneMode; +import com.raoulvdberge.refinedstorage.util.NetworkUtils; import com.raoulvdberge.refinedstorage.util.StackUtils; import com.raoulvdberge.refinedstorage.util.WorldUtils; import net.minecraft.entity.player.PlayerEntity; @@ -49,7 +50,7 @@ public class StorageMonitorNetworkNode extends NetworkNode implements IComparabl } }); - private FluidInventory fluidFilter = new FluidInventory(1, 1000) + private FluidInventory fluidFilter = new FluidInventory(1, FluidAttributes.BUCKET_VOLUME) .addListener((handler, slot, reading) -> { if (!reading) { WorldUtils.updateBlock(world, pos); @@ -85,6 +86,7 @@ public class StorageMonitorNetworkNode extends NetworkNode implements IComparabl if (getType() != IType.ITEMS) { return ActionResultType.FAIL; } + if (network == null) { return ActionResultType.FAIL; } @@ -145,10 +147,13 @@ public class StorageMonitorNetworkNode extends NetworkNode implements IComparabl private void depositFluids(PlayerEntity player, ItemStack toInsert) { FluidStack filter = fluidFilter.getFluid(0); + Pair result = StackUtils.getFluid(toInsert, true); + if (filter.isEmpty() || !API.instance().getComparer().isEqual(filter, result.getRight(), compare)) { return; } + if (!result.getValue().isEmpty() && network.insertFluid(result.getValue(), result.getValue().getAmount(), Action.SIMULATE).isEmpty()) { network.getFluidStorageTracker().changed(player, result.getValue().copy()); @@ -198,7 +203,6 @@ public class StorageMonitorNetworkNode extends NetworkNode implements IComparabl } private void extractFluids(PlayerEntity player) { - FluidStack filter = fluidFilter.getFluid(0); if (filter.isEmpty()) { @@ -212,27 +216,8 @@ public class StorageMonitorNetworkNode extends NetworkNode implements IComparabl boolean shift = player.isCrouching(); if (shift) { - ItemStack bucket = ItemStack.EMPTY; - - for (int i = 0; i < player.inventory.getSizeInventory(); ++i) { - ItemStack slot = player.inventory.getStackInSlot(i); - - if (API.instance().getComparer().isEqualNoQuantity(StackUtils.EMPTY_BUCKET, slot)) { - bucket = StackUtils.EMPTY_BUCKET.copy(); - - player.inventory.decrStackSize(i, 1); - - break; - } - } - - if (bucket.isEmpty()) { - bucket = network.extractItem(StackUtils.EMPTY_BUCKET, 1, Action.PERFORM); - } - - if (!bucket.isEmpty()) { + NetworkUtils.extractBucketFromPlayerInventoryOrNetwork(player, network, bucket -> { bucket.getCapability(CapabilityFluidHandler.FLUID_HANDLER_ITEM_CAPABILITY, null).ifPresent(fluidHandler -> { - network.getFluidStorageTracker().changed(player, stack.copy()); fluidHandler.fill(network.extractFluid(stack, FluidAttributes.BUCKET_VOLUME, Action.PERFORM), IFluidHandler.FluidAction.EXECUTE); @@ -241,7 +226,7 @@ public class StorageMonitorNetworkNode extends NetworkNode implements IComparabl InventoryHelper.spawnItemStack(player.getEntityWorld(), player.getPosition().getX(), player.getPosition().getY(), player.getPosition().getZ(), fluidHandler.getContainer()); } }); - } + }); } } @@ -319,11 +304,13 @@ public class StorageMonitorNetworkNode extends NetworkNode implements IComparabl return stored != null ? stored.getCount() : 0; } else if (getType() == IType.FLUIDS) { FluidStack toCheck = fluidFilter.getFluid(0); + if (toCheck.isEmpty()) { return 0; } FluidStack stored = network.getFluidStorageCache().getList().get(toCheck, compare); + return stored != null ? stored.getAmount() : 0; } return 0; diff --git a/src/main/java/com/raoulvdberge/refinedstorage/container/StorageMonitorContainer.java b/src/main/java/com/raoulvdberge/refinedstorage/container/StorageMonitorContainer.java index fb131b8cf..50b39750b 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/container/StorageMonitorContainer.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/container/StorageMonitorContainer.java @@ -16,7 +16,6 @@ public class StorageMonitorContainer extends BaseContainer { addPlayerInventory(8, 55); - transferManager.addItemFilterTransfer(player.inventory, storageMonitor.getNode().getItemFilters()); - transferManager.addFluidFilterTransfer(player.inventory, storageMonitor.getNode().getFluidFilters()); + transferManager.addFilterTransfer(player.inventory, storageMonitor.getNode().getItemFilters(), storageMonitor.getNode().getFluidFilters(), storageMonitor.getNode()::getType); } } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/render/tesr/StorageMonitorTileRenderer.java b/src/main/java/com/raoulvdberge/refinedstorage/render/tesr/StorageMonitorTileRenderer.java index 78484b55e..31b07be30 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/render/tesr/StorageMonitorTileRenderer.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/render/tesr/StorageMonitorTileRenderer.java @@ -27,15 +27,12 @@ import net.minecraftforge.fluids.FluidAttributes; import net.minecraftforge.fluids.FluidStack; public class StorageMonitorTileRenderer extends TileEntityRenderer { - public static final int DEFAULT_LIGHTMAP = 15728880; - public StorageMonitorTileRenderer(TileEntityRendererDispatcher dispatcher) { super(dispatcher); } @Override public void render(StorageMonitorTile tile, float partialTicks, MatrixStack matrixStack, IRenderTypeBuffer renderTypeBuffer, int i, int i1) { - Minecraft.getInstance().getProfiler().startSection("StorageMonitorTileRenderer"); Direction direction = Direction.NORTH; BlockState state = tile.getWorld().getBlockState(tile.getPos()); @@ -43,8 +40,7 @@ public class StorageMonitorTileRenderer extends TileEntityRenderer> 8 & 0xFF; final int colorBlue = fluidColor & 0xFF; final int colorAlpha = fluidColor >> 24 & 0xFF; + buffer.pos(matrixStack.getLast().getPositionMatrix(), -0.5F, -0.5F, 0F) .color(colorRed, colorGreen, colorBlue, colorAlpha) .tex(sprite.getMinU(), sprite.getMinV()) diff --git a/src/main/java/com/raoulvdberge/refinedstorage/util/NetworkUtils.java b/src/main/java/com/raoulvdberge/refinedstorage/util/NetworkUtils.java index 3071914d0..a69cd65ca 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/util/NetworkUtils.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/util/NetworkUtils.java @@ -4,8 +4,11 @@ import com.raoulvdberge.refinedstorage.api.network.INetwork; import com.raoulvdberge.refinedstorage.api.network.node.INetworkNode; import com.raoulvdberge.refinedstorage.api.network.node.INetworkNodeProxy; import com.raoulvdberge.refinedstorage.api.network.security.Permission; +import com.raoulvdberge.refinedstorage.api.util.Action; +import com.raoulvdberge.refinedstorage.apiimpl.API; import com.raoulvdberge.refinedstorage.capability.NetworkNodeProxyCapability; import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.ActionResultType; import net.minecraft.util.Direction; @@ -13,6 +16,7 @@ import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; import javax.annotation.Nullable; +import java.util.function.Consumer; public class NetworkUtils { @Nullable @@ -62,4 +66,23 @@ public class NetworkUtils { return ActionResultType.SUCCESS; } + + public static void extractBucketFromPlayerInventoryOrNetwork(PlayerEntity player, INetwork network, Consumer onBucketFound) { + for (int i = 0; i < player.inventory.getSizeInventory(); ++i) { + ItemStack slot = player.inventory.getStackInSlot(i); + + if (API.instance().getComparer().isEqualNoQuantity(StackUtils.EMPTY_BUCKET, slot)) { + player.inventory.decrStackSize(i, 1); + + onBucketFound.accept(StackUtils.EMPTY_BUCKET.copy()); + + return; + } + } + + ItemStack fromNetwork = network.extractItem(StackUtils.EMPTY_BUCKET, 1, Action.PERFORM); + if (!fromNetwork.isEmpty()) { + onBucketFound.accept(fromNetwork); + } + } }