diff --git a/src/main/java/io/github/pylonmc/pylon/base/content/machines/cargo/CargoBuffer.java b/src/main/java/io/github/pylonmc/pylon/base/content/machines/cargo/CargoBuffer.java index 81a61075f..b23233cf6 100644 --- a/src/main/java/io/github/pylonmc/pylon/base/content/machines/cargo/CargoBuffer.java +++ b/src/main/java/io/github/pylonmc/pylon/base/content/machines/cargo/CargoBuffer.java @@ -7,17 +7,18 @@ import io.github.pylonmc.pylon.core.block.base.PylonGuiBlock; import io.github.pylonmc.pylon.core.block.context.BlockCreateContext; import io.github.pylonmc.pylon.core.config.adapter.ConfigAdapter; +import io.github.pylonmc.pylon.core.datatypes.PylonSerializers; import io.github.pylonmc.pylon.core.entity.display.ItemDisplayBuilder; import io.github.pylonmc.pylon.core.entity.display.transform.TransformBuilder; import io.github.pylonmc.pylon.core.i18n.PylonArgument; import io.github.pylonmc.pylon.core.item.PylonItem; import io.github.pylonmc.pylon.core.item.builder.ItemStackBuilder; import io.github.pylonmc.pylon.core.logistics.LogisticSlotType; -import io.github.pylonmc.pylon.core.datatypes.PylonSerializers; import io.github.pylonmc.pylon.core.logistics.VirtualInventoryLogisticSlot; import io.github.pylonmc.pylon.core.util.PylonUtils; import io.github.pylonmc.pylon.core.util.gui.GuiItems; import io.github.pylonmc.pylon.core.util.gui.unit.UnitFormat; +import lombok.Getter; import org.bukkit.Material; import org.bukkit.NamespacedKey; import org.bukkit.block.Block; @@ -25,11 +26,12 @@ import org.bukkit.inventory.ItemStack; import org.bukkit.persistence.PersistentDataContainer; import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; import xyz.xenondevs.invui.gui.Gui; +import xyz.xenondevs.invui.inventory.Inventory; import xyz.xenondevs.invui.inventory.VirtualInventory; import java.util.List; +import java.util.Map; import static io.github.pylonmc.pylon.base.util.BaseUtils.baseKey; @@ -39,7 +41,9 @@ public class CargoBuffer extends PylonBlock private static final NamespacedKey FACE_KEY = baseKey("face"); + @Getter private final BlockFace facing; + private final VirtualInventory inventory = new VirtualInventory(1); public final int transferRate = getSettings().getOrThrow("transfer-rate", ConfigAdapter.INT); @@ -165,8 +169,8 @@ public void write(@NotNull PersistentDataContainer pdc) { } @Override - public @Nullable BlockFace getFacing() { - return facing; + public @NotNull Map<@NotNull String, @NotNull Inventory> createInventoryMapping() { + return Map.of("inventory", inventory); } @Override diff --git a/src/main/java/io/github/pylonmc/pylon/base/content/machines/diesel/DieselPipeBender.java b/src/main/java/io/github/pylonmc/pylon/base/content/machines/diesel/DieselPipeBender.java index 05b02c0fd..3b2c3d305 100644 --- a/src/main/java/io/github/pylonmc/pylon/base/content/machines/diesel/DieselPipeBender.java +++ b/src/main/java/io/github/pylonmc/pylon/base/content/machines/diesel/DieselPipeBender.java @@ -38,10 +38,12 @@ import org.jetbrains.annotations.Nullable; import org.joml.Vector3d; import xyz.xenondevs.invui.gui.Gui; +import xyz.xenondevs.invui.inventory.Inventory; import xyz.xenondevs.invui.inventory.VirtualInventory; import xyz.xenondevs.invui.inventory.event.PlayerUpdateReason; import java.util.List; +import java.util.Map; public class DieselPipeBender extends PylonBlock @@ -212,6 +214,14 @@ public void tick(double deltaSeconds) { .build(); } + @Override + public @NotNull Map<@NotNull String, @NotNull Inventory> createInventoryMapping() { + return Map.of( + "input", inputInventory, + "output", outputInventory + ); + } + @Override public @Nullable WailaDisplay getWaila(@NotNull Player player) { return new WailaDisplay(getDefaultWailaTranslationKey().arguments( diff --git a/src/main/java/io/github/pylonmc/pylon/base/content/machines/fluid/CreativeFluidSource.java b/src/main/java/io/github/pylonmc/pylon/base/content/machines/fluid/CreativeFluidSource.java index c422e6cb0..bb44548af 100644 --- a/src/main/java/io/github/pylonmc/pylon/base/content/machines/fluid/CreativeFluidSource.java +++ b/src/main/java/io/github/pylonmc/pylon/base/content/machines/fluid/CreativeFluidSource.java @@ -20,6 +20,7 @@ import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import xyz.xenondevs.invui.gui.Gui; +import xyz.xenondevs.invui.inventory.Inventory; import java.util.List; import java.util.Map; @@ -60,7 +61,12 @@ public void onFluidRemoved(@NotNull PylonFluid fluid, double amount) {} @Override public @NotNull Gui createGui() { - return (FluidSelector.make(() -> fluid, this::setFluid)); + return FluidSelector.make(() -> fluid, this::setFluid); + } + + @Override + public @NotNull Map<@NotNull String, @NotNull Inventory> createInventoryMapping() { + return Map.of(); } @Override diff --git a/src/main/java/io/github/pylonmc/pylon/base/content/machines/fluid/FluidFilter.java b/src/main/java/io/github/pylonmc/pylon/base/content/machines/fluid/FluidFilter.java index 35ba58d6d..1576caaa1 100644 --- a/src/main/java/io/github/pylonmc/pylon/base/content/machines/fluid/FluidFilter.java +++ b/src/main/java/io/github/pylonmc/pylon/base/content/machines/fluid/FluidFilter.java @@ -3,12 +3,10 @@ import com.google.common.base.Preconditions; import io.github.pylonmc.pylon.base.content.machines.fluid.gui.FluidSelector; import io.github.pylonmc.pylon.core.block.PylonBlock; -import io.github.pylonmc.pylon.core.block.base.PylonFluidBlock; import io.github.pylonmc.pylon.core.block.base.PylonFluidTank; import io.github.pylonmc.pylon.core.block.base.PylonGuiBlock; import io.github.pylonmc.pylon.core.block.context.BlockBreakContext; import io.github.pylonmc.pylon.core.block.context.BlockCreateContext; -import io.github.pylonmc.pylon.core.waila.WailaDisplay; import io.github.pylonmc.pylon.core.config.PylonConfig; import io.github.pylonmc.pylon.core.config.adapter.ConfigAdapter; import io.github.pylonmc.pylon.core.datatypes.PylonSerializers; @@ -23,6 +21,7 @@ import io.github.pylonmc.pylon.core.item.builder.ItemStackBuilder; import io.github.pylonmc.pylon.core.util.PylonUtils; import io.github.pylonmc.pylon.core.util.gui.unit.UnitFormat; +import io.github.pylonmc.pylon.core.waila.WailaDisplay; import net.kyori.adventure.text.Component; import org.bukkit.Material; import org.bukkit.NamespacedKey; @@ -35,8 +34,10 @@ import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import xyz.xenondevs.invui.gui.Gui; +import xyz.xenondevs.invui.inventory.Inventory; import java.util.List; +import java.util.Map; import static io.github.pylonmc.pylon.base.util.BaseUtils.baseKey; @@ -167,6 +168,11 @@ public void setFluid(PylonFluid fluid) { return Component.translatable("pylon.pylonbase.item.fluid_filter.gui"); } + @Override + public @NotNull Map<@NotNull String, @NotNull Inventory> createInventoryMapping() { + return Map.of(); + } + @Override public void onBreak(@NotNull List<@NotNull ItemStack> drops, @NotNull BlockBreakContext context) { PylonFluidTank.super.onBreak(drops, context); diff --git a/src/main/java/io/github/pylonmc/pylon/base/content/machines/fluid/FluidStrainer.java b/src/main/java/io/github/pylonmc/pylon/base/content/machines/fluid/FluidStrainer.java index d6e57d541..898a3cf16 100644 --- a/src/main/java/io/github/pylonmc/pylon/base/content/machines/fluid/FluidStrainer.java +++ b/src/main/java/io/github/pylonmc/pylon/base/content/machines/fluid/FluidStrainer.java @@ -7,7 +7,6 @@ import io.github.pylonmc.pylon.core.block.base.PylonTickingBlock; import io.github.pylonmc.pylon.core.block.context.BlockBreakContext; import io.github.pylonmc.pylon.core.block.context.BlockCreateContext; -import io.github.pylonmc.pylon.core.waila.WailaDisplay; import io.github.pylonmc.pylon.core.config.adapter.ConfigAdapter; import io.github.pylonmc.pylon.core.datatypes.PylonSerializers; import io.github.pylonmc.pylon.core.fluid.FluidPointType; @@ -15,6 +14,7 @@ import io.github.pylonmc.pylon.core.i18n.PylonArgument; import io.github.pylonmc.pylon.core.util.PylonUtils; import io.github.pylonmc.pylon.core.util.gui.unit.UnitFormat; +import io.github.pylonmc.pylon.core.waila.WailaDisplay; import net.kyori.adventure.text.Component; import org.bukkit.NamespacedKey; import org.bukkit.block.Block; @@ -25,6 +25,7 @@ import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import xyz.xenondevs.invui.gui.Gui; +import xyz.xenondevs.invui.inventory.Inventory; import xyz.xenondevs.invui.inventory.VirtualInventory; import java.util.List; @@ -150,6 +151,11 @@ public Component getGuiTitle() { .build(); } + @Override + public @NotNull Map<@NotNull String, @NotNull Inventory> createInventoryMapping() { + return Map.of(); + } + @Override public void tick(double deltaSeconds) { if (currentRecipe != null && passedFluid >= currentRecipe.input().amountMillibuckets()) { diff --git a/src/main/java/io/github/pylonmc/pylon/base/content/machines/hydraulics/CoalFiredPurificationTower.java b/src/main/java/io/github/pylonmc/pylon/base/content/machines/hydraulics/CoalFiredPurificationTower.java index 9ee40432f..dc6fe7d62 100644 --- a/src/main/java/io/github/pylonmc/pylon/base/content/machines/hydraulics/CoalFiredPurificationTower.java +++ b/src/main/java/io/github/pylonmc/pylon/base/content/machines/hydraulics/CoalFiredPurificationTower.java @@ -34,6 +34,7 @@ import org.jetbrains.annotations.Nullable; import org.joml.Vector3i; import xyz.xenondevs.invui.gui.Gui; +import xyz.xenondevs.invui.inventory.Inventory; import xyz.xenondevs.invui.inventory.VirtualInventory; import java.util.HashMap; @@ -119,6 +120,11 @@ public void postInitialise() { .build(); } + @Override + public @NotNull Map<@NotNull String, @NotNull Inventory> createInventoryMapping() { + return Map.of("inventory", inventory); + } + @Override public @NotNull Map<@NotNull Vector3i, @NotNull MultiblockComponent> getComponents() { Map components = new HashMap<>(); diff --git a/src/main/java/io/github/pylonmc/pylon/base/content/machines/smelting/SmelteryBurner.java b/src/main/java/io/github/pylonmc/pylon/base/content/machines/smelting/SmelteryBurner.java index afcbaa030..d27b104e2 100644 --- a/src/main/java/io/github/pylonmc/pylon/base/content/machines/smelting/SmelteryBurner.java +++ b/src/main/java/io/github/pylonmc/pylon/base/content/machines/smelting/SmelteryBurner.java @@ -24,6 +24,7 @@ import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import xyz.xenondevs.invui.gui.Gui; +import xyz.xenondevs.invui.inventory.Inventory; import xyz.xenondevs.invui.inventory.VirtualInventory; import java.util.Map; @@ -143,6 +144,11 @@ public void onProcessFinished() { fuel = null; } + @Override + public @NotNull Map<@NotNull String, @NotNull Inventory> createInventoryMapping() { + return Map.of("fuels", inventory); + } + // TODO display fuels public record Fuel( @NotNull NamespacedKey key, diff --git a/src/main/java/io/github/pylonmc/pylon/base/content/machines/smelting/SmelteryCaster.java b/src/main/java/io/github/pylonmc/pylon/base/content/machines/smelting/SmelteryCaster.java index 8ad54b988..59f692a4b 100644 --- a/src/main/java/io/github/pylonmc/pylon/base/content/machines/smelting/SmelteryCaster.java +++ b/src/main/java/io/github/pylonmc/pylon/base/content/machines/smelting/SmelteryCaster.java @@ -1,6 +1,5 @@ package io.github.pylonmc.pylon.base.content.machines.smelting; -import io.github.pylonmc.pylon.base.PylonBase; import io.github.pylonmc.pylon.base.recipes.CastingRecipe; import io.github.pylonmc.pylon.core.block.base.PylonGuiBlock; import io.github.pylonmc.pylon.core.block.base.PylonTickingBlock; @@ -25,10 +24,13 @@ import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import xyz.xenondevs.invui.gui.Gui; +import xyz.xenondevs.invui.inventory.Inventory; import xyz.xenondevs.invui.inventory.VirtualInventory; import xyz.xenondevs.invui.item.ItemProvider; import xyz.xenondevs.invui.item.impl.AbstractItem; +import java.util.Map; + public final class SmelteryCaster extends SmelteryComponent implements PylonGuiBlock, PylonTickingBlock { private @Nullable PylonFluid bottomFluid = null; @@ -135,6 +137,11 @@ private static TranslatableComponent casterKey(@NotNull String subkey, @NotNull } } + @Override + public @NotNull Map<@NotNull String, @NotNull Inventory> createInventoryMapping() { + return Map.of("output", inventory); + } + @Override public void tick(double deltaSeconds) { SmelteryController controller = getController(); diff --git a/src/main/java/io/github/pylonmc/pylon/base/content/machines/smelting/SmelteryController.java b/src/main/java/io/github/pylonmc/pylon/base/content/machines/smelting/SmelteryController.java index dfeb09de5..8f799f3af 100644 --- a/src/main/java/io/github/pylonmc/pylon/base/content/machines/smelting/SmelteryController.java +++ b/src/main/java/io/github/pylonmc/pylon/base/content/machines/smelting/SmelteryController.java @@ -6,7 +6,9 @@ import io.github.pylonmc.pylon.base.util.BaseUtils; import io.github.pylonmc.pylon.base.util.HslColor; import io.github.pylonmc.pylon.core.block.BlockStorage; -import io.github.pylonmc.pylon.core.block.base.*; +import io.github.pylonmc.pylon.core.block.base.PylonGuiBlock; +import io.github.pylonmc.pylon.core.block.base.PylonMultiblock; +import io.github.pylonmc.pylon.core.block.base.PylonTickingBlock; import io.github.pylonmc.pylon.core.block.context.BlockBreakContext; import io.github.pylonmc.pylon.core.block.context.BlockCreateContext; import io.github.pylonmc.pylon.core.config.Config; @@ -45,6 +47,7 @@ import org.jetbrains.annotations.Nullable; import org.joml.Vector3i; import xyz.xenondevs.invui.gui.Gui; +import xyz.xenondevs.invui.inventory.Inventory; import xyz.xenondevs.invui.item.Item; import xyz.xenondevs.invui.item.ItemProvider; import xyz.xenondevs.invui.item.impl.AbstractItem; @@ -211,15 +214,20 @@ public void handleClick(@NotNull ClickType clickType, @NotNull Player player, @N } } + @Override + public @NotNull Map<@NotNull String, @NotNull Inventory> createInventoryMapping() { + return Map.of(); + } + // + + // private final BlockPosition center = new BlockPosition( getBlock().getRelative( ((Directional) getBlock().getBlockData()).getFacing().getOppositeFace(), 2 ) ); - // - // // @formatter:off private static final Vector3i[] MULTIBLOCK_DIRECTIONS = new Vector3i[] { new Vector3i(-2, 0, -2), new Vector3i(-2, 0, -1), new Vector3i(-2, 0, 0), new Vector3i(-2, 0, 1), new Vector3i(-2, 0, 2),