diff --git a/src/main/java/com/raoulvdberge/refinedstorage/ClientSetup.java b/src/main/java/com/raoulvdberge/refinedstorage/ClientSetup.java index 05a84c88d..13f542927 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/ClientSetup.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/ClientSetup.java @@ -122,6 +122,7 @@ public class ClientSetup { ScreenManager.registerFactory(RSContainers.RELAY, RelayScreen::new); ScreenManager.registerFactory(RSContainers.DETECTOR, DetectorScreen::new); ScreenManager.registerFactory(RSContainers.SECURITY_MANAGER, SecurityManagerScreen::new); + ScreenManager.registerFactory(RSContainers.INTERFACE, InterfaceScreen::new); ClientRegistry.registerKeyBinding(RSKeyBindings.FOCUS_SEARCH_BAR); ClientRegistry.registerKeyBinding(RSKeyBindings.CLEAR_GRID_CRAFTING_MATRIX); diff --git a/src/main/java/com/raoulvdberge/refinedstorage/RS.java b/src/main/java/com/raoulvdberge/refinedstorage/RS.java index 5704c3335..8acb89b89 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/RS.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/RS.java @@ -123,6 +123,7 @@ public final class RS { API.instance().getNetworkNodeRegistry().add(RelayNetworkNode.ID, (tag, world, pos) -> readAndReturn(tag, new RelayNetworkNode(world, pos))); API.instance().getNetworkNodeRegistry().add(DetectorNetworkNode.ID, (tag, world, pos) -> readAndReturn(tag, new DetectorNetworkNode(world, pos))); API.instance().getNetworkNodeRegistry().add(SecurityManagerNetworkNode.ID, (tag, world, pos) -> readAndReturn(tag, new SecurityManagerNetworkNode(world, pos))); + API.instance().getNetworkNodeRegistry().add(InterfaceNetworkNode.ID, (tag, world, pos) -> readAndReturn(tag, new InterfaceNetworkNode(world, pos))); API.instance().getGridManager().add(GridBlockGridFactory.ID, new GridBlockGridFactory()); @@ -172,6 +173,7 @@ public final class RS { e.getRegistry().register(new RelayBlock()); e.getRegistry().register(new DetectorBlock()); e.getRegistry().register(new SecurityManagerBlock()); + e.getRegistry().register(new InterfaceBlock()); } @SubscribeEvent @@ -205,6 +207,7 @@ public final class RS { e.getRegistry().register(registerTileDataParameters(TileEntityType.Builder.create(RelayTile::new, RSBlocks.RELAY).build(null).setRegistryName(RS.ID, "relay"))); e.getRegistry().register(registerTileDataParameters(TileEntityType.Builder.create(DetectorTile::new, RSBlocks.DETECTOR).build(null).setRegistryName(RS.ID, "detector"))); e.getRegistry().register(registerTileDataParameters(TileEntityType.Builder.create(SecurityManagerTile::new, RSBlocks.SECURITY_MANAGER).build(null).setRegistryName(RS.ID, "security_manager"))); + e.getRegistry().register(registerTileDataParameters(TileEntityType.Builder.create(InterfaceTile::new, RSBlocks.INTERFACE).build(null).setRegistryName(RS.ID, "interface"))); } private TileEntityType registerTileDataParameters(TileEntityType t) { @@ -230,6 +233,7 @@ public final class RS { e.getRegistry().register(IForgeContainerType.create(new PositionalTileContainerFactory((windowId, inv, tile) -> new RelayContainer(tile, inv.player, windowId))).setRegistryName(RS.ID, "relay")); e.getRegistry().register(IForgeContainerType.create(new PositionalTileContainerFactory((windowId, inv, tile) -> new DetectorContainer(tile, inv.player, windowId))).setRegistryName(RS.ID, "detector")); e.getRegistry().register(IForgeContainerType.create(new PositionalTileContainerFactory((windowId, inv, tile) -> new SecurityManagerContainer(tile, inv.player, windowId))).setRegistryName(RS.ID, "security_manager")); + e.getRegistry().register(IForgeContainerType.create(new PositionalTileContainerFactory((windowId, inv, tile) -> new InterfaceContainer(tile, inv.player, windowId))).setRegistryName(RS.ID, "interface")); } @SubscribeEvent @@ -305,6 +309,7 @@ public final class RS { e.getRegistry().register(BlockUtils.createBlockItemFor(RSBlocks.RELAY)); e.getRegistry().register(BlockUtils.createBlockItemFor(RSBlocks.DETECTOR)); e.getRegistry().register(BlockUtils.createBlockItemFor(RSBlocks.SECURITY_MANAGER)); + e.getRegistry().register(BlockUtils.createBlockItemFor(RSBlocks.INTERFACE)); } /* TODO diff --git a/src/main/java/com/raoulvdberge/refinedstorage/RSBlocks.java b/src/main/java/com/raoulvdberge/refinedstorage/RSBlocks.java index a58cc9086..a39900180 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/RSBlocks.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/RSBlocks.java @@ -60,10 +60,11 @@ public final class RSBlocks { public static final FluidStorageBlock CREATIVE_FLUID_STORAGE_BLOCK = null; @ObjectHolder(RS.ID + ":security_manager") public static final SecurityManagerBlock SECURITY_MANAGER = null; + @ObjectHolder(RS.ID + ":interface") + public static final InterfaceBlock INTERFACE = null; public static final BlockDestructor DESTRUCTOR = new BlockDestructor(); public static final BlockConstructor CONSTRUCTOR = new BlockConstructor(); - public static final BlockInterface INTERFACE = new BlockInterface(); public static final BlockCraftingMonitor CRAFTING_MONITOR = new BlockCraftingMonitor(); public static final BlockWirelessTransmitter WIRELESS_TRANSMITTER = new BlockWirelessTransmitter(); public static final BlockCrafter CRAFTER = new BlockCrafter(); diff --git a/src/main/java/com/raoulvdberge/refinedstorage/RSContainers.java b/src/main/java/com/raoulvdberge/refinedstorage/RSContainers.java index 6feb76709..4d34e9585 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/RSContainers.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/RSContainers.java @@ -31,6 +31,8 @@ public final class RSContainers { public static final ContainerType FLUID_STORAGE_BLOCK = null; @ObjectHolder(RS.ID + ":security_manager") public static final ContainerType SECURITY_MANAGER = null; + @ObjectHolder(RS.ID + ":interface") + public static final ContainerType INTERFACE = null; //@ObjectHolder(RS.ID + ":crafter") public static final ContainerType CRAFTER = null; @@ -46,8 +48,6 @@ public final class RSContainers { public static final ContainerType DISK_MANIPULATOR = null; //@ObjectHolder(RS.ID + ":fluid_interface") public static final ContainerType FLUID_INTERFACE = null; - //@ObjectHolder(RS.ID + ":interface") - public static final ContainerType INTERFACE = null; //@ObjectHolder(RS.ID + ":storage_monitor") public static final ContainerType STORAGE_MONITOR = null; //@ObjectHolder(RS.ID + ":wireless_transmitter") diff --git a/src/main/java/com/raoulvdberge/refinedstorage/RSOldConfig.java b/src/main/java/com/raoulvdberge/refinedstorage/RSOldConfig.java index 1c75e2911..23bb38399 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/RSOldConfig.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/RSOldConfig.java @@ -8,7 +8,6 @@ public class RSOldConfig { public int craftingMonitorUsage; public int crafterManagerUsage; public int destructorUsage; - public int interfaceUsage; public int fluidInterfaceUsage; public int wirelessTransmitterUsage; public int diskManipulatorUsage; @@ -73,7 +72,6 @@ public class RSOldConfig { craftingMonitorUsage = config.getInt("craftingMonitor", ENERGY, 2, 0, Integer.MAX_VALUE, "The energy used by Crafting Monitors"); crafterManagerUsage = config.getInt("crafterManager", ENERGY, 4, 0, Integer.MAX_VALUE, "The energy used by Crafter Managers"); destructorUsage = config.getInt("destructor", ENERGY, 1, 0, Integer.MAX_VALUE, "The energy used by Destructors"); - interfaceUsage = config.getInt("interface", ENERGY, 3, 0, Integer.MAX_VALUE, "The energy used by Interfaces"); fluidInterfaceUsage = config.getInt("fluidInterface", ENERGY, 3, 0, Integer.MAX_VALUE, "The energy used by Fluid Interfaces"); wirelessTransmitterUsage = config.getInt("wirelessTransmitter", ENERGY, 8, 0, Integer.MAX_VALUE, "The energy used by Wireless Transmitters"); diskManipulatorUsage = config.getInt("diskManipulator", ENERGY, 3, 0, Integer.MAX_VALUE, "The energy used by Disk Manipulators"); diff --git a/src/main/java/com/raoulvdberge/refinedstorage/RSTiles.java b/src/main/java/com/raoulvdberge/refinedstorage/RSTiles.java index 17f59ce6a..e45a96d4f 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/RSTiles.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/RSTiles.java @@ -60,6 +60,8 @@ public class RSTiles { public static final TileEntityType CREATIVE_FLUID_STORAGE_BLOCK = null; @ObjectHolder(RS.ID + ":security_manager") public static final TileEntityType SECURITY_MANAGER = null; + @ObjectHolder(RS.ID + ":interface") + public static final TileEntityType INTERFACE = null; //@ObjectHolder(RS.ID + ":portable_grid") public static final TileEntityType PORTABLE_GRID = null; @@ -67,8 +69,6 @@ public class RSTiles { public static final TileEntityType STORAGE_MONITOR = null; //@ObjectHolder(RS.ID + ":wireless_transmitter") public static final TileEntityType WIRELESS_TRANSMITTER = null; - //@ObjectHolder(RS.ID + ":interface") - public static final TileEntityType INTERFACE = null; //@ObjectHolder(RS.ID + ":fluid_interface") public static final TileEntityType FLUID_INTERFACE = null; //@ObjectHolder(RS.ID + ":disk_manipulator") diff --git a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeInterface.java b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/InterfaceNetworkNode.java old mode 100755 new mode 100644 similarity index 95% rename from src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeInterface.java rename to src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/InterfaceNetworkNode.java index 5f472b389..9b968ef91 --- a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeInterface.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/InterfaceNetworkNode.java @@ -24,7 +24,7 @@ import net.minecraft.world.server.ServerWorld; import net.minecraftforge.items.IItemHandler; import net.minecraftforge.items.wrapper.CombinedInvWrapper; -public class NetworkNodeInterface extends NetworkNode implements IComparable { +public class InterfaceNetworkNode extends NetworkNode implements IComparable { public static final ResourceLocation ID = new ResourceLocation(RS.ID, "interface"); private static final String NBT_COMPARE = "Compare"; @@ -36,19 +36,20 @@ public class NetworkNodeInterface extends NetworkNode implements IComparable { private IItemHandler items = new ProxyItemHandler(importItems, exportItems); - private UpgradeItemHandler upgrades = (UpgradeItemHandler) new UpgradeItemHandler(4).addListener(new NetworkNodeInventoryListener(this)/* TODO, ItemUpgrade.TYPE_SPEED, ItemUpgrade.TYPE_STACK, ItemUpgrade.TYPE_CRAFTING*/); + private UpgradeItemHandler upgrades = (UpgradeItemHandler) new UpgradeItemHandler(4, UpgradeItem.Type.SPEED, UpgradeItem.Type.STACK, UpgradeItem.Type.CRAFTING) + .addListener(new NetworkNodeInventoryListener(this)); private int compare = IComparer.COMPARE_NBT; private int currentSlot = 0; - public NetworkNodeInterface(World world, BlockPos pos) { + public InterfaceNetworkNode(World world, BlockPos pos) { super(world, pos); } @Override public int getEnergyUsage() { - return RS.INSTANCE.config.interfaceUsage + upgrades.getEnergyUsage(); + return RS.SERVER_CONFIG.getInterface().getUsage() + upgrades.getEnergyUsage(); } @Override @@ -73,8 +74,6 @@ public class NetworkNodeInterface extends NetworkNode implements IComparable { ItemStack remainder = network.insertItemTracked(slot, size); importItems.extractItem(currentSlot, size - remainder.getCount(), false); - - currentSlot++; } for (int i = 0; i < 9; ++i) { diff --git a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/storage/externalstorage/ItemExternalStorageProvider.java b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/storage/externalstorage/ItemExternalStorageProvider.java index d13a9bc8a..8f0953c74 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/storage/externalstorage/ItemExternalStorageProvider.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/storage/externalstorage/ItemExternalStorageProvider.java @@ -6,7 +6,7 @@ import com.raoulvdberge.refinedstorage.api.storage.externalstorage.IExternalStor import com.raoulvdberge.refinedstorage.api.storage.externalstorage.IExternalStorageContext; import com.raoulvdberge.refinedstorage.api.storage.externalstorage.IExternalStorageProvider; import com.raoulvdberge.refinedstorage.capability.NetworkNodeProxyCapability; -import com.raoulvdberge.refinedstorage.tile.TileInterface; +import com.raoulvdberge.refinedstorage.tile.InterfaceTile; import com.raoulvdberge.refinedstorage.util.WorldUtils; import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; @@ -30,7 +30,7 @@ public class ItemExternalStorageProvider implements IExternalStorageProvider provide(IExternalStorageContext context, Supplier tile, Direction direction) { - return new ItemExternalStorage(context, () -> WorldUtils.getItemHandler(tile.get(), direction.getOpposite()), tile.get() instanceof TileInterface); + return new ItemExternalStorage(context, () -> WorldUtils.getItemHandler(tile.get(), direction.getOpposite()), tile.get() instanceof InterfaceTile); } @Override diff --git a/src/main/java/com/raoulvdberge/refinedstorage/block/BlockInterface.java b/src/main/java/com/raoulvdberge/refinedstorage/block/BlockInterface.java deleted file mode 100755 index e176ac8a3..000000000 --- a/src/main/java/com/raoulvdberge/refinedstorage/block/BlockInterface.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.raoulvdberge.refinedstorage.block; - -import com.raoulvdberge.refinedstorage.block.info.BlockInfoBuilder; -import com.raoulvdberge.refinedstorage.tile.TileInterface; - -public class BlockInterface extends BlockNode { - public BlockInterface() { - super(BlockInfoBuilder.forId("interface").tileEntity(TileInterface::new).create()); - } - - /* - @Override - @OnlyIn(Dist.CLIENT) - public void registerModels(IModelRegistration modelRegistration) { - modelRegistration.setModel(this, 0, new ModelResourceLocation(info.getId(), "inventory")); - } - - @Override - public boolean onBlockActivated(World world, BlockPos pos, BlockState state, PlayerEntity player, EnumHand hand, Direction side, float hitX, float hitY, float hitZ) { - return openNetworkGui(RSGui.INTERFACE, player, world, pos, side, Permission.MODIFY, Permission.INSERT, Permission.EXTRACT); - }*/ - - @Override - public boolean hasConnectedState() { - return true; - } -} diff --git a/src/main/java/com/raoulvdberge/refinedstorage/block/InterfaceBlock.java b/src/main/java/com/raoulvdberge/refinedstorage/block/InterfaceBlock.java new file mode 100644 index 000000000..481cb11b3 --- /dev/null +++ b/src/main/java/com/raoulvdberge/refinedstorage/block/InterfaceBlock.java @@ -0,0 +1,59 @@ +package com.raoulvdberge.refinedstorage.block; + +import com.raoulvdberge.refinedstorage.RS; +import com.raoulvdberge.refinedstorage.api.network.security.Permission; +import com.raoulvdberge.refinedstorage.container.InterfaceContainer; +import com.raoulvdberge.refinedstorage.container.factory.PositionalTileContainerProvider; +import com.raoulvdberge.refinedstorage.tile.InterfaceTile; +import com.raoulvdberge.refinedstorage.util.BlockUtils; +import com.raoulvdberge.refinedstorage.util.NetworkUtils; +import net.minecraft.block.BlockState; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.entity.player.ServerPlayerEntity; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.Hand; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.BlockRayTraceResult; +import net.minecraft.util.text.TranslationTextComponent; +import net.minecraft.world.IBlockReader; +import net.minecraft.world.World; +import net.minecraftforge.fml.network.NetworkHooks; + +import javax.annotation.Nullable; + +public class InterfaceBlock extends NodeBlock { + public InterfaceBlock() { + super(BlockUtils.DEFAULT_ROCK_PROPERTIES); + + this.setRegistryName(RS.ID, "interface"); + } + + @Nullable + @Override + public TileEntity createTileEntity(BlockState state, IBlockReader world) { + return new InterfaceTile(); + } + + @Override + @SuppressWarnings("deprecation") + public boolean onBlockActivated(BlockState state, World world, BlockPos pos, PlayerEntity player, Hand handIn, BlockRayTraceResult hit) { + if (!world.isRemote) { + return NetworkUtils.attempt(world, pos, hit.getFace(), player, () -> NetworkHooks.openGui( + (ServerPlayerEntity) player, + new PositionalTileContainerProvider( + new TranslationTextComponent("gui.refinedstorage.interface"), + (tile, windowId, inventory, p) -> new InterfaceContainer(tile, player, windowId), + pos + ), + pos + ), Permission.MODIFY, Permission.INSERT, Permission.EXTRACT); + } + + return true; + } + + @Override + public boolean hasConnectedState() { + return true; + } +} diff --git a/src/main/java/com/raoulvdberge/refinedstorage/config/ServerConfig.java b/src/main/java/com/raoulvdberge/refinedstorage/config/ServerConfig.java index e412b02cc..1d718c962 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/config/ServerConfig.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/config/ServerConfig.java @@ -20,6 +20,7 @@ public class ServerConfig { private Relay relay; private Detector detector; private SecurityManager securityManager; + private Interface _interface; private Upgrades upgrades; public ServerConfig() { @@ -38,6 +39,7 @@ public class ServerConfig { detector = new Detector(); securityManager = new SecurityManager(); upgrades = new Upgrades(); + _interface = new Interface(); spec = builder.build(); } @@ -102,6 +104,10 @@ public class ServerConfig { return securityManager; } + public Interface getInterface() { + return _interface; + } + public ForgeConfigSpec getSpec() { return spec; } @@ -483,4 +489,20 @@ public class ServerConfig { return usagePerCard.get(); } } + + public class Interface { + private final ForgeConfigSpec.IntValue usage; + + public Interface() { + builder.push("interface"); + + usage = builder.comment("The energy used by the Interface").defineInRange("usage", 2, 0, Integer.MAX_VALUE); + + builder.pop(); + } + + public int getUsage() { + return usage.get(); + } + } } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/container/InterfaceContainer.java b/src/main/java/com/raoulvdberge/refinedstorage/container/InterfaceContainer.java index 1e49bd972..94e74135c 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/container/InterfaceContainer.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/container/InterfaceContainer.java @@ -3,12 +3,12 @@ package com.raoulvdberge.refinedstorage.container; import com.raoulvdberge.refinedstorage.RSContainers; import com.raoulvdberge.refinedstorage.container.slot.OutputSlot; import com.raoulvdberge.refinedstorage.container.slot.filter.FilterSlot; -import com.raoulvdberge.refinedstorage.tile.TileInterface; +import com.raoulvdberge.refinedstorage.tile.InterfaceTile; import net.minecraft.entity.player.PlayerEntity; import net.minecraftforge.items.SlotItemHandler; public class InterfaceContainer extends BaseContainer { - public InterfaceContainer(TileInterface tile, PlayerEntity player, int windowId) { + public InterfaceContainer(InterfaceTile tile, PlayerEntity player, int windowId) { super(RSContainers.INTERFACE, tile, player, windowId); for (int i = 0; i < 9; ++i) { diff --git a/src/main/java/com/raoulvdberge/refinedstorage/screen/GuiInterface.java b/src/main/java/com/raoulvdberge/refinedstorage/screen/InterfaceScreen.java similarity index 60% rename from src/main/java/com/raoulvdberge/refinedstorage/screen/GuiInterface.java rename to src/main/java/com/raoulvdberge/refinedstorage/screen/InterfaceScreen.java index 1e238b3da..4560f5dc1 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/screen/GuiInterface.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/screen/InterfaceScreen.java @@ -4,20 +4,21 @@ import com.raoulvdberge.refinedstorage.RS; import com.raoulvdberge.refinedstorage.container.InterfaceContainer; import com.raoulvdberge.refinedstorage.screen.widget.sidebutton.ExactModeSideButton; import com.raoulvdberge.refinedstorage.screen.widget.sidebutton.RedstoneModeSideButton; -import com.raoulvdberge.refinedstorage.tile.TileInterface; +import com.raoulvdberge.refinedstorage.tile.InterfaceTile; import net.minecraft.client.resources.I18n; import net.minecraft.entity.player.PlayerInventory; +import net.minecraft.util.text.ITextComponent; -public class GuiInterface extends BaseScreen { - public GuiInterface(InterfaceContainer container, PlayerInventory inventory) { - super(container, 211, 217, inventory, null); +public class InterfaceScreen extends BaseScreen { + public InterfaceScreen(InterfaceContainer container, PlayerInventory inventory, ITextComponent title) { + super(container, 211, 217, inventory, title); } @Override public void onPostInit(int x, int y) { - addSideButton(new RedstoneModeSideButton(this, TileInterface.REDSTONE_MODE)); + addSideButton(new RedstoneModeSideButton(this, InterfaceTile.REDSTONE_MODE)); - addSideButton(new ExactModeSideButton(this, TileInterface.COMPARE)); + addSideButton(new ExactModeSideButton(this, InterfaceTile.COMPARE)); } @Override @@ -33,8 +34,8 @@ public class GuiInterface extends BaseScreen { @Override public void renderForeground(int mouseX, int mouseY) { - renderString(7, 7, I18n.format("gui.refinedstorage:interface.import")); - renderString(7, 42, I18n.format("gui.refinedstorage:interface.export")); + renderString(7, 7, I18n.format("gui.refinedstorage.interface.import")); + renderString(7, 42, I18n.format("gui.refinedstorage.interface.export")); renderString(7, 122, I18n.format("container.inventory")); } } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/tile/InterfaceTile.java b/src/main/java/com/raoulvdberge/refinedstorage/tile/InterfaceTile.java new file mode 100644 index 000000000..b9cd1b49e --- /dev/null +++ b/src/main/java/com/raoulvdberge/refinedstorage/tile/InterfaceTile.java @@ -0,0 +1,44 @@ +package com.raoulvdberge.refinedstorage.tile; + +import com.raoulvdberge.refinedstorage.RSTiles; +import com.raoulvdberge.refinedstorage.apiimpl.network.node.InterfaceNetworkNode; +import com.raoulvdberge.refinedstorage.tile.config.IComparable; +import com.raoulvdberge.refinedstorage.tile.data.TileDataParameter; +import net.minecraft.util.Direction; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.World; +import net.minecraftforge.common.capabilities.Capability; +import net.minecraftforge.common.util.LazyOptional; +import net.minecraftforge.items.CapabilityItemHandler; +import net.minecraftforge.items.IItemHandler; + +import javax.annotation.Nonnull; +import javax.annotation.Nullable; + +public class InterfaceTile extends NetworkNodeTile { + public static final TileDataParameter COMPARE = IComparable.createParameter(); + + private LazyOptional itemsCapability = LazyOptional.of(() -> getNode().getItems()); + + public InterfaceTile() { + super(RSTiles.INTERFACE); + + dataManager.addWatchedParameter(COMPARE); + } + + @Nonnull + @Override + public LazyOptional getCapability(@Nonnull Capability cap, @Nullable Direction direction) { + if (cap == CapabilityItemHandler.ITEM_HANDLER_CAPABILITY) { + return itemsCapability.cast(); + } + + return super.getCapability(cap, direction); + } + + @Override + @Nonnull + public InterfaceNetworkNode createNode(World world, BlockPos pos) { + return new InterfaceNetworkNode(world, pos); + } +} diff --git a/src/main/java/com/raoulvdberge/refinedstorage/tile/TileInterface.java b/src/main/java/com/raoulvdberge/refinedstorage/tile/TileInterface.java deleted file mode 100755 index 11fe0fe16..000000000 --- a/src/main/java/com/raoulvdberge/refinedstorage/tile/TileInterface.java +++ /dev/null @@ -1,37 +0,0 @@ -package com.raoulvdberge.refinedstorage.tile; - -import com.raoulvdberge.refinedstorage.RSTiles; -import com.raoulvdberge.refinedstorage.apiimpl.network.node.NetworkNodeInterface; -import com.raoulvdberge.refinedstorage.tile.config.IComparable; -import com.raoulvdberge.refinedstorage.tile.data.TileDataParameter; -import net.minecraft.util.math.BlockPos; -import net.minecraft.world.World; - -import javax.annotation.Nonnull; - -public class TileInterface extends NetworkNodeTile { - public static final TileDataParameter COMPARE = IComparable.createParameter(); - - public TileInterface() { - super(RSTiles.INTERFACE); - - dataManager.addWatchedParameter(COMPARE); - } - - /* TODO - @Override - public T getCapability(@Nonnull Capability capability, @Nullable Direction facing) { - return capability == CapabilityItemHandler.ITEM_HANDLER_CAPABILITY ? CapabilityItemHandler.ITEM_HANDLER_CAPABILITY.cast(getNode().getItems()) : super.getCapability(capability, facing); - } - - @Override - public boolean hasCapability(@Nonnull Capability capability, @Nullable Direction facing) { - return capability == CapabilityItemHandler.ITEM_HANDLER_CAPABILITY || super.hasCapability(capability, facing); - }*/ - - @Override - @Nonnull - public NetworkNodeInterface createNode(World world, BlockPos pos) { - return new NetworkNodeInterface(world, pos); - } -} diff --git a/src/main/resources/assets/refinedstorage/blockstates/interface.json b/src/main/resources/assets/refinedstorage/blockstates/interface.json index 028bd4033..83fdc3b37 100755 --- a/src/main/resources/assets/refinedstorage/blockstates/interface.json +++ b/src/main/resources/assets/refinedstorage/blockstates/interface.json @@ -1,25 +1,10 @@ { - "forge_marker": 1, - "defaults": { - "model": "cube_all", - "textures": { - "all": "refinedstorage:blocks/interface_disconnected" - } - }, "variants": { - "inventory": [ - { - "transform": "forge:default-block" - } - ], - "connected": { - "true": { - "textures": { - "all": "refinedstorage:blocks/interface_connected" - } - }, - "false": { - } + "connected=true": { + "model": "refinedstorage:block/interface_connected" + }, + "connected=false": { + "model": "refinedstorage:block/interface_disconnected" } } } \ No newline at end of file diff --git a/src/main/resources/assets/refinedstorage/lang/en_us.json b/src/main/resources/assets/refinedstorage/lang/en_us.json index 6067e0a4b..3677ed50d 100644 --- a/src/main/resources/assets/refinedstorage/lang/en_us.json +++ b/src/main/resources/assets/refinedstorage/lang/en_us.json @@ -27,8 +27,8 @@ "gui.refinedstorage:destructor": "Destructor", "gui.refinedstorage:constructor": "Constructor", "gui.refinedstorage.relay": "Relay", - "gui.refinedstorage:interface.import": "Interface Import", - "gui.refinedstorage:interface.export": "Interface Export", + "gui.refinedstorage.interface.import": "Interface Import", + "gui.refinedstorage.interface.export": "Interface Export", "gui.refinedstorage:crafting_monitor": "Crafting Monitor", "gui.refinedstorage:wireless_crafting_monitor": "Wireless Crafting Monitor", "gui.refinedstorage:crafting_monitor.tooltip.requested": "%d requested", @@ -195,7 +195,7 @@ "block.refinedstorage.64k_storage_block": "64k Storage Block", "block.refinedstorage.creative_storage_block": "Creative Storage Block", "block.refinedstorage.relay": "Relay", - "block.refinedstorage:interface": "Interface", + "block.refinedstorage.interface": "Interface", "block.refinedstorage:crafting_monitor": "Crafting Monitor", "block.refinedstorage:wireless_transmitter": "Wireless Transmitter", "block.refinedstorage:wireless_transmitter.tooltip": "Must be placed on %s.", diff --git a/src/main/resources/assets/refinedstorage/models/block/interface_connected.json b/src/main/resources/assets/refinedstorage/models/block/interface_connected.json new file mode 100644 index 000000000..161f634e4 --- /dev/null +++ b/src/main/resources/assets/refinedstorage/models/block/interface_connected.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cube_all", + "textures": { + "all": "refinedstorage:block/interface_connected" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/refinedstorage/models/block/interface_disconnected.json b/src/main/resources/assets/refinedstorage/models/block/interface_disconnected.json new file mode 100644 index 000000000..65ab17457 --- /dev/null +++ b/src/main/resources/assets/refinedstorage/models/block/interface_disconnected.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cube_all", + "textures": { + "all": "refinedstorage:block/interface_disconnected" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/refinedstorage/models/item/interface.json b/src/main/resources/assets/refinedstorage/models/item/interface.json new file mode 100644 index 000000000..34e854164 --- /dev/null +++ b/src/main/resources/assets/refinedstorage/models/item/interface.json @@ -0,0 +1,3 @@ +{ + "parent": "refinedstorage:block/interface_disconnected" +} \ No newline at end of file diff --git a/src/main/resources/data/refinedstorage/loot_tables/blocks/interface.json b/src/main/resources/data/refinedstorage/loot_tables/blocks/interface.json new file mode 100644 index 000000000..123a5f704 --- /dev/null +++ b/src/main/resources/data/refinedstorage/loot_tables/blocks/interface.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "refinedstorage:interface" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/refinedstorage/recipes/interface.json b/src/main/resources/data/refinedstorage/recipes/interface.json similarity index 100% rename from src/main/resources/assets/refinedstorage/recipes/interface.json rename to src/main/resources/data/refinedstorage/recipes/interface.json