From 66132ecdbab494269ae80eb38d2292f386062159 Mon Sep 17 00:00:00 2001 From: Flanks255 <32142731+Flanks255@users.noreply.github.com> Date: Thu, 6 Jan 2022 18:40:19 -0600 Subject: [PATCH] OK, the bucket logic is... "better". Renders fluid now... --- .../mod/blocks/BlockCanolaPress.java | 20 ++++++++++--------- .../mod/inventory/ContainerCanolaPress.java | 5 ++++- .../mod/inventory/gui/FluidDisplay.java | 3 +-- .../mod/tile/TileEntityCanolaPress.java | 2 +- 4 files changed, 17 insertions(+), 13 deletions(-) diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/blocks/BlockCanolaPress.java b/src/main/java/de/ellpeck/actuallyadditions/mod/blocks/BlockCanolaPress.java index 8d6c9744d..89c3803c7 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/blocks/BlockCanolaPress.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/blocks/BlockCanolaPress.java @@ -24,6 +24,7 @@ import net.minecraft.util.math.shapes.ISelectionContext; import net.minecraft.util.math.shapes.VoxelShape; import net.minecraft.world.IBlockReader; import net.minecraft.world.World; +import net.minecraftforge.fluids.FluidUtil; import net.minecraftforge.fml.network.NetworkHooks; import javax.annotation.Nullable; @@ -52,16 +53,17 @@ public class BlockCanolaPress extends BlockContainerBase { @Override public ActionResultType use(BlockState state, World world, BlockPos pos, PlayerEntity player, Hand hand, BlockRayTraceResult hit) { - if (!world.isClientSide) { - TileEntityCanolaPress tile = (TileEntityCanolaPress) world.getBlockEntity(pos); - if (tile != null) { - if (!this.tryUseItemOnTank(player, hand, tile.tank)) { - NetworkHooks.openGui((ServerPlayerEntity) player, tile, pos); - } - } - return ActionResultType.PASS; + TileEntityCanolaPress tile = (TileEntityCanolaPress) world.getBlockEntity(pos); + if (tile == null) + return ActionResultType.PASS; //TODO this logic all needs to be rechecked... + if (world.isClientSide) + return ActionResultType.SUCCESS; + if (!player.isShiftKeyDown()) { + if (!FluidUtil.interactWithFluidHandler(player, hand, tile.tank)) + NetworkHooks.openGui((ServerPlayerEntity) player, tile, pos); + return ActionResultType.SUCCESS; } - return super.use(state, world, pos, player, hand, hit); + return ActionResultType.PASS; } @Override diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/ContainerCanolaPress.java b/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/ContainerCanolaPress.java index 596c4e494..58c4f27f0 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/ContainerCanolaPress.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/ContainerCanolaPress.java @@ -11,6 +11,7 @@ package de.ellpeck.actuallyadditions.mod.inventory; import de.ellpeck.actuallyadditions.mod.blocks.ActuallyBlocks; +import de.ellpeck.actuallyadditions.mod.crafting.PressingRecipe; import de.ellpeck.actuallyadditions.mod.inventory.slot.SlotItemHandlerUnconditioned; import de.ellpeck.actuallyadditions.mod.tile.TileEntityCanolaPress; import de.ellpeck.actuallyadditions.mod.util.StackUtil; @@ -22,6 +23,7 @@ import net.minecraft.item.ItemStack; import net.minecraft.network.PacketBuffer; import java.util.Objects; +import java.util.Optional; public class ContainerCanolaPress extends Container { @@ -63,7 +65,8 @@ public class ContainerCanolaPress extends Container { //Other Slots in Inventory excluded if (slot >= inventoryStart) { //Shift from Inventory - if (newStack.getItem() == ActuallyBlocks.CANOLA.getItem()) { + Optional recipeOptional = TileEntityCanolaPress.getRecipeForInput(newStack); + if (recipeOptional.isPresent()) { if (!this.moveItemStackTo(newStack, 0, 1, false)) { return StackUtil.getEmpty(); } diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/gui/FluidDisplay.java b/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/gui/FluidDisplay.java index 76a00d209..b7a950625 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/gui/FluidDisplay.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/gui/FluidDisplay.java @@ -93,8 +93,7 @@ public class FluidDisplay extends AbstractGui { GlStateManager._disableAlphaTest(); GlStateManager._blendFuncSeparate(770, 771, 1, 0); int i = this.fluidReference.getFluid().getAmount() * 83 / this.fluidReference.getCapacity(); - blit(matrices, barX + 1, barY + 84 - i, 0, 0, 36, 172, 16, i, 16, 512); - //drawModalRectWithCustomSizedTexture(barX + 1, barY + 84 - i, 36, 172, 16, i, 16, 512); + this.blit(matrices, barX + 1, barY + 84 - i, 36, 172, 16, i); //drawModalRectWithCustomSizedTexture(barX + 1, barY + 84 - i, 36, 172, 16, i, 16, 512); GlStateManager._disableBlend(); GlStateManager._enableAlphaTest(); GlStateManager._popMatrix(); diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/tile/TileEntityCanolaPress.java b/src/main/java/de/ellpeck/actuallyadditions/mod/tile/TileEntityCanolaPress.java index 48c74026b..fb671f2c3 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/tile/TileEntityCanolaPress.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/tile/TileEntityCanolaPress.java @@ -139,7 +139,7 @@ public class TileEntityCanolaPress extends TileEntityInventoryBase implements IN return getRecipeForInput(stack).isPresent(); } - public Optional getRecipeForInput(ItemStack stack) { + public static Optional getRecipeForInput(ItemStack stack) { return ActuallyAdditionsAPI.PRESSING_RECIPES.stream().filter(recipe -> recipe.matches(new SingleItem(stack), null)).findFirst(); }