diff --git a/src/main/java/com/raoulvdberge/refinedstorage/ClientSetup.java b/src/main/java/com/raoulvdberge/refinedstorage/ClientSetup.java index f600d4f33..48c00a0fd 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/ClientSetup.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/ClientSetup.java @@ -7,6 +7,7 @@ import com.raoulvdberge.refinedstorage.container.slot.CrafterManagerSlot; import com.raoulvdberge.refinedstorage.render.BakedModelOverrideRegistry; import com.raoulvdberge.refinedstorage.render.color.PatternItemColor; import com.raoulvdberge.refinedstorage.render.model.DiskDriveBakedModel; +import com.raoulvdberge.refinedstorage.render.model.DiskManipulatorBakedModel; import com.raoulvdberge.refinedstorage.render.model.FullbrightBakedModel; import com.raoulvdberge.refinedstorage.render.model.PatternBakedModel; import com.raoulvdberge.refinedstorage.render.tesr.StorageMonitorTileRenderer; @@ -74,6 +75,19 @@ public class ClientSetup { new ResourceLocation(RS.ID, "block/disks/leds") ).disableCache()); + bakedModelOverrideRegistry.add(new ResourceLocation(RS.ID, "disk_manipulator"), (base, registry) -> new FullbrightBakedModel( + new DiskManipulatorBakedModel( + registry.get(new ResourceLocation(RS.ID + ":block/disk_manipulator_connected")), + registry.get(new ResourceLocation(RS.ID + ":block/disk_manipulator_disconnected")), + registry.get(new ResourceLocation(RS.ID + ":block/disks/disk")), + registry.get(new ResourceLocation(RS.ID + ":block/disks/disk_near_capacity")), + registry.get(new ResourceLocation(RS.ID + ":block/disks/disk_full")), + registry.get(new ResourceLocation(RS.ID + ":block/disks/disk_disconnected")) + ), + new ResourceLocation(RS.ID, "block/disk_manipulator/cutouts/connected"), + new ResourceLocation(RS.ID, "block/disks/leds") + ).disableCache()); + bakedModelOverrideRegistry.add(new ResourceLocation(RS.ID, "pattern"), (base, registry) -> new PatternBakedModel(base)); ModelLoader.addSpecialModel(new ResourceLocation(RS.ID + ":block/disks/disk")); @@ -81,6 +95,9 @@ public class ClientSetup { ModelLoader.addSpecialModel(new ResourceLocation(RS.ID + ":block/disks/disk_full")); ModelLoader.addSpecialModel(new ResourceLocation(RS.ID + ":block/disks/disk_disconnected")); + ModelLoader.addSpecialModel(new ResourceLocation(RS.ID + ":block/disk_manipulator_disconnected")); + ModelLoader.addSpecialModel(new ResourceLocation(RS.ID + ":block/disk_manipulator_connected")); + FMLJavaModLoadingContext.get().getModEventBus().addListener(this::onClientSetup); FMLJavaModLoadingContext.get().getModEventBus().addListener(this::onModelBake); @@ -136,6 +153,7 @@ public class ClientSetup { ScreenManager.registerFactory(RSContainers.STORAGE_MONITOR, StorageMonitorScreen::new); ScreenManager.registerFactory(RSContainers.CONSTRUCTOR, ConstructorScreen::new); ScreenManager.registerFactory(RSContainers.DESTRUCTOR, DestructorScreen::new); + ScreenManager.registerFactory(RSContainers.DISK_MANIPULATOR, DiskManipulatorScreen::new); ClientRegistry.registerKeyBinding(RSKeyBindings.OPEN_WIRELESS_GRID); ClientRegistry.registerKeyBinding(RSKeyBindings.OPEN_WIRELESS_FLUID_GRID); diff --git a/src/main/java/com/raoulvdberge/refinedstorage/RS.java b/src/main/java/com/raoulvdberge/refinedstorage/RS.java index 37c24526a..89ed578a6 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/RS.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/RS.java @@ -12,6 +12,7 @@ import com.raoulvdberge.refinedstorage.apiimpl.network.grid.factory.WirelessFlui import com.raoulvdberge.refinedstorage.apiimpl.network.grid.factory.WirelessGridGridFactory; import com.raoulvdberge.refinedstorage.apiimpl.network.node.*; import com.raoulvdberge.refinedstorage.apiimpl.network.node.diskdrive.DiskDriveNetworkNode; +import com.raoulvdberge.refinedstorage.apiimpl.network.node.diskmanipulator.DiskManipulatorNetworkNode; import com.raoulvdberge.refinedstorage.apiimpl.network.node.storage.FluidStorageNetworkNode; import com.raoulvdberge.refinedstorage.apiimpl.network.node.storage.StorageNetworkNode; import com.raoulvdberge.refinedstorage.apiimpl.storage.FluidStorageType; @@ -132,6 +133,7 @@ public final class RS { API.instance().getNetworkNodeRegistry().add(StorageMonitorNetworkNode.ID, (tag, world, pos) -> readAndReturn(tag, new StorageMonitorNetworkNode(world, pos))); API.instance().getNetworkNodeRegistry().add(ConstructorNetworkNode.ID, (tag, world, pos) -> readAndReturn(tag, new ConstructorNetworkNode(world, pos))); API.instance().getNetworkNodeRegistry().add(DestructorNetworkNode.ID, (tag, world, pos) -> readAndReturn(tag, new DestructorNetworkNode(world, pos))); + API.instance().getNetworkNodeRegistry().add(DiskManipulatorNetworkNode.ID, (tag, world, pos) -> readAndReturn(tag, new DiskManipulatorNetworkNode(world, pos))); API.instance().getGridManager().add(GridBlockGridFactory.ID, new GridBlockGridFactory()); API.instance().getGridManager().add(WirelessGridGridFactory.ID, new WirelessGridGridFactory()); @@ -189,6 +191,7 @@ public final class RS { e.getRegistry().register(new StorageMonitorBlock()); e.getRegistry().register(new ConstructorBlock()); e.getRegistry().register(new DestructorBlock()); + e.getRegistry().register(new DiskManipulatorBlock()); } @SubscribeEvent @@ -228,6 +231,7 @@ public final class RS { e.getRegistry().register(registerTileDataParameters(TileEntityType.Builder.create(StorageMonitorTile::new, RSBlocks.STORAGE_MONITOR).build(null).setRegistryName(RS.ID, "storage_monitor"))); e.getRegistry().register(registerTileDataParameters(TileEntityType.Builder.create(ConstructorTile::new, RSBlocks.CONSTRUCTOR).build(null).setRegistryName(RS.ID, "constructor"))); e.getRegistry().register(registerTileDataParameters(TileEntityType.Builder.create(DestructorTile::new, RSBlocks.DESTRUCTOR).build(null).setRegistryName(RS.ID, "destructor"))); + e.getRegistry().register(registerTileDataParameters(TileEntityType.Builder.create(DiskManipulatorTile::new, RSBlocks.DISK_MANIPULATOR).build(null).setRegistryName(RS.ID, "disk_manipulator"))); } private TileEntityType registerTileDataParameters(TileEntityType t) { @@ -259,6 +263,7 @@ public final class RS { e.getRegistry().register(IForgeContainerType.create(new PositionalTileContainerFactory((windowId, inv, tile) -> new StorageMonitorContainer(tile, inv.player, windowId))).setRegistryName(RS.ID, "storage_monitor")); e.getRegistry().register(IForgeContainerType.create(new PositionalTileContainerFactory((windowId, inv, tile) -> new ConstructorContainer(tile, inv.player, windowId))).setRegistryName(RS.ID, "constructor")); e.getRegistry().register(IForgeContainerType.create(new PositionalTileContainerFactory((windowId, inv, tile) -> new DestructorContainer(tile, inv.player, windowId))).setRegistryName(RS.ID, "destructor")); + e.getRegistry().register(IForgeContainerType.create(new PositionalTileContainerFactory((windowId, inv, tile) -> new DiskManipulatorContainer(tile, inv.player, windowId))).setRegistryName(RS.ID, "disk_manipulator")); } @SubscribeEvent @@ -340,6 +345,7 @@ public final class RS { e.getRegistry().register(BlockUtils.createBlockItemFor(RSBlocks.STORAGE_MONITOR)); e.getRegistry().register(BlockUtils.createBlockItemFor(RSBlocks.CONSTRUCTOR)); e.getRegistry().register(BlockUtils.createBlockItemFor(RSBlocks.DESTRUCTOR)); + e.getRegistry().register(BlockUtils.createBlockItemFor(RSBlocks.DISK_MANIPULATOR)); e.getRegistry().register(new WirelessGridItem(WirelessGridItem.Type.NORMAL)); e.getRegistry().register(new WirelessGridItem(WirelessGridItem.Type.CREATIVE)); diff --git a/src/main/java/com/raoulvdberge/refinedstorage/RSBlocks.java b/src/main/java/com/raoulvdberge/refinedstorage/RSBlocks.java index 26b00aeeb..543e56fd4 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/RSBlocks.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/RSBlocks.java @@ -72,10 +72,11 @@ public final class RSBlocks { public static final ConstructorBlock CONSTRUCTOR = null; @ObjectHolder(RS.ID + ":destructor") public static final DestructorBlock DESTRUCTOR = null; - + @ObjectHolder(RS.ID + ":disk_manipulator") + public static final DiskManipulatorBlock DISK_MANIPULATOR = null; + public static final BlockCraftingMonitor CRAFTING_MONITOR = new BlockCraftingMonitor(); public static final BlockCrafter CRAFTER = new BlockCrafter(); - public static final BlockDiskManipulator DISK_MANIPULATOR = new BlockDiskManipulator(); public static final BlockPortableGrid PORTABLE_GRID = new BlockPortableGrid(); public static final BlockCrafterManager CRAFTER_MANAGER = new BlockCrafterManager(); } \ No newline at end of file diff --git a/src/main/java/com/raoulvdberge/refinedstorage/RSContainers.java b/src/main/java/com/raoulvdberge/refinedstorage/RSContainers.java index ddccfba72..9d44577e0 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/RSContainers.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/RSContainers.java @@ -43,6 +43,8 @@ public final class RSContainers { public static final ContainerType CONSTRUCTOR = null; @ObjectHolder(RS.ID + ":destructor") public static final ContainerType DESTRUCTOR = null; + @ObjectHolder(RS.ID + ":disk_manipulator") + public static final ContainerType DISK_MANIPULATOR = null; //@ObjectHolder(RS.ID + ":crafter") public static final ContainerType CRAFTER = null; @@ -50,6 +52,4 @@ public final class RSContainers { public static final ContainerType CRAFTER_MANAGER = null; //@ObjectHolder(RS.ID + ":crafting_monitor") public static final ContainerType CRAFTING_MONITOR = null; - //@ObjectHolder(RS.ID + ":disk_manipulator") - public static final ContainerType DISK_MANIPULATOR = null; } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/RSOldConfig.java b/src/main/java/com/raoulvdberge/refinedstorage/RSOldConfig.java index ab1dd1818..93d972293 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/RSOldConfig.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/RSOldConfig.java @@ -6,7 +6,6 @@ public class RSOldConfig { public int crafterPerPatternUsage; public int craftingMonitorUsage; public int crafterManagerUsage; - public int diskManipulatorUsage; //endregion //region Portable Grid @@ -42,7 +41,6 @@ public class RSOldConfig { crafterPerPatternUsage = config.getInt("crafterPerPattern", ENERGY, 1, 0, Integer.MAX_VALUE, "The additional energy used per Pattern in a Crafter"); 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"); - diskManipulatorUsage = config.getInt("diskManipulator", ENERGY, 3, 0, Integer.MAX_VALUE, "The energy used by Disk Manipulators"); //endregion //region Portable Grid diff --git a/src/main/java/com/raoulvdberge/refinedstorage/RSTiles.java b/src/main/java/com/raoulvdberge/refinedstorage/RSTiles.java index f986bdbb4..4165d8822 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/RSTiles.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/RSTiles.java @@ -72,11 +72,11 @@ public class RSTiles { public static final TileEntityType CONSTRUCTOR = null; @ObjectHolder(RS.ID + ":destructor") public static final TileEntityType DESTRUCTOR = null; + @ObjectHolder(RS.ID + ":disk_manipulator") + public static final TileEntityType DISK_MANIPULATOR = null; //@ObjectHolder(RS.ID + ":portable_grid") public static final TileEntityType PORTABLE_GRID = null; - //@ObjectHolder(RS.ID + ":disk_manipulator") - public static final TileEntityType DISK_MANIPULATOR = null; //@ObjectHolder(RS.ID + ":crafter") public static final TileEntityType CRAFTER = null; //@ObjectHolder(RS.ID + ":crafter_manager") diff --git a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/DiskState.java b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/DiskState.java new file mode 100644 index 000000000..1861f0214 --- /dev/null +++ b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/DiskState.java @@ -0,0 +1,21 @@ +package com.raoulvdberge.refinedstorage.apiimpl.network.node; + +public enum DiskState { + NONE, + NORMAL, + DISCONNECTED, + NEAR_CAPACITY, + FULL; + + public static final int DISK_NEAR_CAPACITY_THRESHOLD = 75; + + public static DiskState get(int stored, int capacity) { + if (stored == capacity) { + return FULL; + } else if ((int) ((float) stored / (float) capacity * 100F) >= DISK_NEAR_CAPACITY_THRESHOLD) { + return NEAR_CAPACITY; + } else { + return NORMAL; + } + } +} diff --git a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/diskdrive/DiskDriveNetworkNode.java b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/diskdrive/DiskDriveNetworkNode.java index 5b9d46433..a85197466 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/diskdrive/DiskDriveNetworkNode.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/diskdrive/DiskDriveNetworkNode.java @@ -8,6 +8,7 @@ import com.raoulvdberge.refinedstorage.api.storage.IStorageProvider; import com.raoulvdberge.refinedstorage.api.storage.disk.IStorageDisk; import com.raoulvdberge.refinedstorage.api.storage.disk.IStorageDiskContainerContext; import com.raoulvdberge.refinedstorage.api.util.IComparer; +import com.raoulvdberge.refinedstorage.apiimpl.network.node.DiskState; import com.raoulvdberge.refinedstorage.apiimpl.network.node.NetworkNode; import com.raoulvdberge.refinedstorage.apiimpl.storage.cache.FluidStorageCache; import com.raoulvdberge.refinedstorage.apiimpl.storage.cache.ItemStorageCache; @@ -34,26 +35,6 @@ import net.minecraftforge.items.IItemHandlerModifiable; import java.util.List; public class DiskDriveNetworkNode extends NetworkNode implements IStorageProvider, IComparable, IWhitelistBlacklist, IPrioritizable, IType, IAccessType, IStorageDiskContainerContext { - public enum DiskState { - NONE, - NORMAL, - DISCONNECTED, - NEAR_CAPACITY, - FULL; - - public static final int DISK_NEAR_CAPACITY_THRESHOLD = 75; - - public static DiskState get(int stored, int capacity) { - if (stored == capacity) { - return FULL; - } else if ((int) ((float) stored / (float) capacity * 100F) >= DISK_NEAR_CAPACITY_THRESHOLD) { - return NEAR_CAPACITY; - } else { - return NORMAL; - } - } - } - public static final ResourceLocation ID = new ResourceLocation(RS.ID, "disk_drive"); private static final String NBT_PRIORITY = "Priority"; diff --git a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/diskdrive/FluidDriveWrapperStorageDisk.java b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/diskdrive/FluidDriveWrapperStorageDisk.java index e99f9ea46..6f98b7536 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/diskdrive/FluidDriveWrapperStorageDisk.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/diskdrive/FluidDriveWrapperStorageDisk.java @@ -5,6 +5,7 @@ import com.raoulvdberge.refinedstorage.api.storage.disk.IStorageDisk; import com.raoulvdberge.refinedstorage.api.storage.disk.IStorageDiskContainerContext; import com.raoulvdberge.refinedstorage.api.storage.disk.IStorageDiskListener; import com.raoulvdberge.refinedstorage.api.util.Action; +import com.raoulvdberge.refinedstorage.apiimpl.network.node.DiskState; import com.raoulvdberge.refinedstorage.tile.config.IWhitelistBlacklist; import com.raoulvdberge.refinedstorage.util.StackUtils; import net.minecraft.nbt.CompoundNBT; @@ -18,14 +19,14 @@ import java.util.Collection; public class FluidDriveWrapperStorageDisk implements IStorageDisk { private DiskDriveNetworkNode diskDrive; private IStorageDisk parent; - private DiskDriveNetworkNode.DiskState lastState; + private DiskState lastState; public FluidDriveWrapperStorageDisk(DiskDriveNetworkNode diskDrive, IStorageDisk parent) { this.diskDrive = diskDrive; this.parent = parent; this.setSettings( () -> { - DiskDriveNetworkNode.DiskState currentState = DiskDriveNetworkNode.DiskState.get(getStored(), getCapacity()); + DiskState currentState = DiskState.get(getStored(), getCapacity()); if (this.lastState != currentState) { this.lastState = currentState; @@ -35,7 +36,7 @@ public class FluidDriveWrapperStorageDisk implements IStorageDisk { }, diskDrive ); - this.lastState = DiskDriveNetworkNode.DiskState.get(getStored(), getCapacity()); + this.lastState = DiskState.get(getStored(), getCapacity()); } @Override diff --git a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/diskdrive/ItemDriveWrapperStorageDisk.java b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/diskdrive/ItemDriveWrapperStorageDisk.java index 67153e18b..b61ccb7cd 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/diskdrive/ItemDriveWrapperStorageDisk.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/diskdrive/ItemDriveWrapperStorageDisk.java @@ -5,6 +5,7 @@ import com.raoulvdberge.refinedstorage.api.storage.disk.IStorageDisk; import com.raoulvdberge.refinedstorage.api.storage.disk.IStorageDiskContainerContext; import com.raoulvdberge.refinedstorage.api.storage.disk.IStorageDiskListener; import com.raoulvdberge.refinedstorage.api.util.Action; +import com.raoulvdberge.refinedstorage.apiimpl.network.node.DiskState; import com.raoulvdberge.refinedstorage.tile.config.IWhitelistBlacklist; import net.minecraft.item.ItemStack; import net.minecraft.nbt.CompoundNBT; @@ -18,14 +19,14 @@ import java.util.Collection; public class ItemDriveWrapperStorageDisk implements IStorageDisk { private DiskDriveNetworkNode diskDrive; private IStorageDisk parent; - private DiskDriveNetworkNode.DiskState lastState; + private DiskState lastState; public ItemDriveWrapperStorageDisk(DiskDriveNetworkNode diskDrive, IStorageDisk parent) { this.diskDrive = diskDrive; this.parent = parent; this.setSettings( () -> { - DiskDriveNetworkNode.DiskState currentState = DiskDriveNetworkNode.DiskState.get(getStored(), getCapacity()); + DiskState currentState = DiskState.get(getStored(), getCapacity()); if (this.lastState != currentState) { this.lastState = currentState; @@ -35,7 +36,7 @@ public class ItemDriveWrapperStorageDisk implements IStorageDisk { }, diskDrive ); - this.lastState = DiskDriveNetworkNode.DiskState.get(getStored(), getCapacity()); + this.lastState = DiskState.get(getStored(), getCapacity()); } @Override diff --git a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/diskmanipulator/NetworkNodeDiskManipulator.java b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/diskmanipulator/DiskManipulatorNetworkNode.java similarity index 90% rename from src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/diskmanipulator/NetworkNodeDiskManipulator.java rename to src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/diskmanipulator/DiskManipulatorNetworkNode.java index ccaf1fcd6..2d6be2246 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/diskmanipulator/NetworkNodeDiskManipulator.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/diskmanipulator/DiskManipulatorNetworkNode.java @@ -7,6 +7,7 @@ import com.raoulvdberge.refinedstorage.api.storage.disk.IStorageDiskContainerCon import com.raoulvdberge.refinedstorage.api.util.Action; import com.raoulvdberge.refinedstorage.api.util.IComparer; import com.raoulvdberge.refinedstorage.api.util.StackListEntry; +import com.raoulvdberge.refinedstorage.apiimpl.network.node.DiskState; import com.raoulvdberge.refinedstorage.apiimpl.network.node.NetworkNode; import com.raoulvdberge.refinedstorage.inventory.fluid.FluidInventory; import com.raoulvdberge.refinedstorage.inventory.item.BaseItemHandler; @@ -16,7 +17,7 @@ import com.raoulvdberge.refinedstorage.inventory.item.validator.StorageDiskItemV import com.raoulvdberge.refinedstorage.inventory.listener.NetworkNodeFluidInventoryListener; import com.raoulvdberge.refinedstorage.inventory.listener.NetworkNodeInventoryListener; import com.raoulvdberge.refinedstorage.item.UpgradeItem; -import com.raoulvdberge.refinedstorage.tile.TileDiskManipulator; +import com.raoulvdberge.refinedstorage.tile.DiskManipulatorTile; import com.raoulvdberge.refinedstorage.tile.config.IComparable; import com.raoulvdberge.refinedstorage.tile.config.IType; import com.raoulvdberge.refinedstorage.tile.config.IWhitelistBlacklist; @@ -38,7 +39,7 @@ import java.util.ArrayList; import java.util.List; import java.util.stream.Collectors; -public class NetworkNodeDiskManipulator extends NetworkNode implements IComparable, IWhitelistBlacklist, IType, IStorageDiskContainerContext { +public class DiskManipulatorNetworkNode extends NetworkNode implements IComparable, IWhitelistBlacklist, IType, IStorageDiskContainerContext { public static final ResourceLocation ID = new ResourceLocation(RS.ID, "disk_manipulator"); public static final int IO_MODE_INSERT = 0; @@ -82,11 +83,13 @@ public class NetworkNodeDiskManipulator extends NetworkNode implements IComparab slot, itemDisks, fluidDisks, - s -> new StorageDiskItemManipulatorWrapper(NetworkNodeDiskManipulator.this, s), - s -> new StorageDiskFluidManipulatorWrapper(NetworkNodeDiskManipulator.this, s) + s -> new StorageDiskItemManipulatorWrapper(DiskManipulatorNetworkNode.this, s), + s -> new StorageDiskFluidManipulatorWrapper(DiskManipulatorNetworkNode.this, s) ); - WorldUtils.updateBlock(world, pos); + if (!reading) { + WorldUtils.updateBlock(world, pos); + } } }); @@ -101,26 +104,28 @@ public class NetworkNodeDiskManipulator extends NetworkNode implements IComparab 3 + slot, itemDisks, fluidDisks, - s -> new StorageDiskItemManipulatorWrapper(NetworkNodeDiskManipulator.this, s), - s -> new StorageDiskFluidManipulatorWrapper(NetworkNodeDiskManipulator.this, s) + s -> new StorageDiskItemManipulatorWrapper(DiskManipulatorNetworkNode.this, s), + s -> new StorageDiskFluidManipulatorWrapper(DiskManipulatorNetworkNode.this, s) ); - WorldUtils.updateBlock(world, pos); + if (!reading) { + WorldUtils.updateBlock(world, pos); + } } })); private ProxyItemHandler disks = new ProxyItemHandler(inputDisks, outputDisks); - public NetworkNodeDiskManipulator(World world, BlockPos pos) { - super(world, pos); - } - private BaseItemHandler itemFilters = new BaseItemHandler(9).addListener(new NetworkNodeInventoryListener(this)); private FluidInventory fluidFilters = new FluidInventory(9).addListener(new NetworkNodeFluidInventoryListener(this)); + public DiskManipulatorNetworkNode(World world, BlockPos pos) { + super(world, pos); + } + @Override public int getEnergyUsage() { - return RS.INSTANCE.config.diskManipulatorUsage + upgrades.getEnergyUsage(); + return RS.SERVER_CONFIG.getDiskManipulator().getUsage() + upgrades.getEnergyUsage(); } @Override @@ -238,7 +243,7 @@ public class NetworkNodeDiskManipulator extends NetworkNode implements IComparab extracted = network.extractItem(toExtract, upgrades.getStackInteractCount(), compare, Action.PERFORM); } } else { - while (itemFilters.getSlots() > i && extracted == null) { + while (itemFilters.getSlots() > i && extracted.isEmpty()) { ItemStack filterStack = ItemStack.EMPTY; while (itemFilters.getSlots() > i && filterStack.isEmpty()) { @@ -333,7 +338,7 @@ public class NetworkNodeDiskManipulator extends NetworkNode implements IComparab extracted = network.extractFluid(toExtract, upgrades.getStackInteractCount(), compare, Action.PERFORM); } } else { - while (fluidFilters.getSlots() > i && extracted == null) { + while (fluidFilters.getSlots() > i && extracted.isEmpty()) { FluidStack filterStack = FluidStack.EMPTY; while (fluidFilters.getSlots() > i && filterStack.isEmpty()) { @@ -373,6 +378,29 @@ public class NetworkNodeDiskManipulator extends NetworkNode implements IComparab } } + public DiskState[] getDiskState() { + DiskState[] diskStates = new DiskState[6]; + + for (int i = 0; i < 6; ++i) { + DiskState state = DiskState.NONE; + + if (itemDisks[i] != null || fluidDisks[i] != null) { + if (!canUpdate()) { + state = DiskState.DISCONNECTED; + } else { + state = DiskState.get( + itemDisks[i] != null ? itemDisks[i].getStored() : fluidDisks[i].getStored(), + itemDisks[i] != null ? itemDisks[i].getCapacity() : fluidDisks[i].getCapacity() + ); + } + } + + diskStates[i] = state; + } + + return diskStates; + } + @Override public int getCompare() { return compare; @@ -385,7 +413,7 @@ public class NetworkNodeDiskManipulator extends NetworkNode implements IComparab @Override public int getType() { - return world.isRemote ? TileDiskManipulator.TYPE.getValue() : type; + return world.isRemote ? DiskManipulatorTile.TYPE.getValue() : type; } @Override diff --git a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/diskmanipulator/StorageDiskFluidManipulatorWrapper.java b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/diskmanipulator/StorageDiskFluidManipulatorWrapper.java index 46608a6ce..d0164d519 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/diskmanipulator/StorageDiskFluidManipulatorWrapper.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/diskmanipulator/StorageDiskFluidManipulatorWrapper.java @@ -5,7 +5,7 @@ import com.raoulvdberge.refinedstorage.api.storage.disk.IStorageDisk; import com.raoulvdberge.refinedstorage.api.storage.disk.IStorageDiskContainerContext; import com.raoulvdberge.refinedstorage.api.storage.disk.IStorageDiskListener; import com.raoulvdberge.refinedstorage.api.util.Action; -import com.raoulvdberge.refinedstorage.apiimpl.network.node.diskdrive.DiskDriveNetworkNode; +import com.raoulvdberge.refinedstorage.apiimpl.network.node.DiskState; import com.raoulvdberge.refinedstorage.tile.config.IWhitelistBlacklist; import com.raoulvdberge.refinedstorage.util.StackUtils; import com.raoulvdberge.refinedstorage.util.WorldUtils; @@ -18,16 +18,16 @@ import javax.annotation.Nullable; import java.util.Collection; public class StorageDiskFluidManipulatorWrapper implements IStorageDisk { - private NetworkNodeDiskManipulator diskManipulator; + private DiskManipulatorNetworkNode diskManipulator; private IStorageDisk parent; - private DiskDriveNetworkNode.DiskState lastState; + private DiskState lastState; - public StorageDiskFluidManipulatorWrapper(NetworkNodeDiskManipulator diskManipulator, IStorageDisk parent) { + public StorageDiskFluidManipulatorWrapper(DiskManipulatorNetworkNode diskManipulator, IStorageDisk parent) { this.diskManipulator = diskManipulator; this.parent = parent; this.setSettings( () -> { - DiskDriveNetworkNode.DiskState currentState = DiskDriveNetworkNode.DiskState.get(getStored(), getCapacity()); + DiskState currentState = DiskState.get(getStored(), getCapacity()); if (lastState != currentState) { lastState = currentState; @@ -37,7 +37,7 @@ public class StorageDiskFluidManipulatorWrapper implements IStorageDisk { - private NetworkNodeDiskManipulator diskManipulator; + private DiskManipulatorNetworkNode diskManipulator; private IStorageDisk parent; - private DiskDriveNetworkNode.DiskState lastState; + private DiskState lastState; - public StorageDiskItemManipulatorWrapper(NetworkNodeDiskManipulator diskManipulator, IStorageDisk parent) { + public StorageDiskItemManipulatorWrapper(DiskManipulatorNetworkNode diskManipulator, IStorageDisk parent) { this.diskManipulator = diskManipulator; this.parent = parent; this.setSettings( () -> { - DiskDriveNetworkNode.DiskState currentState = DiskDriveNetworkNode.DiskState.get(getStored(), getCapacity()); + DiskState currentState = DiskState.get(getStored(), getCapacity()); if (lastState != currentState) { lastState = currentState; @@ -37,7 +37,7 @@ public class StorageDiskItemManipulatorWrapper implements IStorageDisk DISK_STATE = new PropertyObject<>("disk_state", Integer[].class); - - public BlockDiskManipulator() { - super(BlockInfoBuilder.forId("disk_manipulator").tileEntity(TileDiskManipulator::new).create()); - } - - /* TODO - @Override - @OnlyIn(Dist.CLIENT) - public void registerModels(IModelRegistration modelRegistration) { - modelRegistration.setModel(this, 0, new ModelResourceLocation(info.getId(), "inventory")); - - modelRegistration.addModelLoader(() -> new CustomModelLoaderDefault(info.getId(), ModelDiskManipulator::new)); - } - - @Override - public BlockRenderLayer getRenderLayer() { - return BlockRenderLayer.CUTOUT; - } - - @Override - @Nullable - public BlockDirection getDirection() { - return BlockDirection.HORIZONTAL; - } - - @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.DISK_MANIPULATOR, player, world, pos, side); - } - - @Override - protected BlockStateContainer.Builder createBlockStateBuilder() { - return super.createBlockStateBuilder().add(DISK_STATE); - } - - @Override - public BlockState getExtendedState(BlockState state, IBlockAccess world, BlockPos pos) { - BlockState s = super.getExtendedState(state, world, pos); - - TileEntity tile = world.getTileEntity(pos); - - if (tile instanceof TileDiskManipulator) { - s = ((IExtendedBlockState) s).withProperty(DISK_STATE, ((TileDiskManipulator) tile).getDiskState()); - } - - return s; - }*/ - - @Override - public boolean hasConnectedState() { - return true; - } -} diff --git a/src/main/java/com/raoulvdberge/refinedstorage/block/DiskDriveBlock.java b/src/main/java/com/raoulvdberge/refinedstorage/block/DiskDriveBlock.java index 22ac61746..76689e9e3 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/block/DiskDriveBlock.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/block/DiskDriveBlock.java @@ -33,11 +33,6 @@ public class DiskDriveBlock extends NodeBlock { return BlockDirection.HORIZONTAL; } - @Override - public boolean hasTileEntity(BlockState state) { - return true; - } - @Nullable @Override public TileEntity createTileEntity(BlockState state, IBlockReader world) { diff --git a/src/main/java/com/raoulvdberge/refinedstorage/block/DiskManipulatorBlock.java b/src/main/java/com/raoulvdberge/refinedstorage/block/DiskManipulatorBlock.java new file mode 100644 index 000000000..a1be29e0d --- /dev/null +++ b/src/main/java/com/raoulvdberge/refinedstorage/block/DiskManipulatorBlock.java @@ -0,0 +1,70 @@ +package com.raoulvdberge.refinedstorage.block; + +import com.raoulvdberge.refinedstorage.RS; +import com.raoulvdberge.refinedstorage.block.info.BlockDirection; +import com.raoulvdberge.refinedstorage.container.DiskManipulatorContainer; +import com.raoulvdberge.refinedstorage.container.factory.PositionalTileContainerProvider; +import com.raoulvdberge.refinedstorage.tile.DiskManipulatorTile; +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.BlockRenderLayer; +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 DiskManipulatorBlock extends NodeBlock { + public DiskManipulatorBlock() { + super(BlockUtils.DEFAULT_ROCK_PROPERTIES); + + this.setRegistryName(RS.ID, "disk_manipulator"); + } + + @Override + public BlockRenderLayer getRenderLayer() { + return BlockRenderLayer.CUTOUT; + } + + @Nullable + @Override + public TileEntity createTileEntity(BlockState state, IBlockReader world) { + return new DiskManipulatorTile(); + } + + @Override + @SuppressWarnings("deprecation") + public boolean onBlockActivated(BlockState state, World world, BlockPos pos, PlayerEntity player, Hand hand, BlockRayTraceResult rayTraceResult) { + if (!world.isRemote) { + return NetworkUtils.attemptModify(world, pos, rayTraceResult.getFace(), player, () -> NetworkHooks.openGui( + (ServerPlayerEntity) player, + new PositionalTileContainerProvider( + new TranslationTextComponent("gui.refinedstorage.disk_manipulator"), + (tile, windowId, inventory, p) -> new DiskManipulatorContainer(tile, p, windowId), + pos + ), + pos + )); + } + + return true; + } + + @Override + public BlockDirection getDirection() { + return BlockDirection.HORIZONTAL; + } + + @Override + public boolean hasConnectedState() { + return true; + } +} diff --git a/src/main/java/com/raoulvdberge/refinedstorage/block/FluidStorageBlock.java b/src/main/java/com/raoulvdberge/refinedstorage/block/FluidStorageBlock.java index 277eb6c77..d6f6a9c1b 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/block/FluidStorageBlock.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/block/FluidStorageBlock.java @@ -54,11 +54,6 @@ public class FluidStorageBlock extends NodeBlock { super.onBlockPlacedBy(world, pos, state, player, stack); } - @Override - public boolean hasTileEntity(BlockState state) { - return true; - } - @Nullable @Override public TileEntity createTileEntity(BlockState state, IBlockReader world) { diff --git a/src/main/java/com/raoulvdberge/refinedstorage/block/GridBlock.java b/src/main/java/com/raoulvdberge/refinedstorage/block/GridBlock.java index 601273c6b..2ab219462 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/block/GridBlock.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/block/GridBlock.java @@ -47,11 +47,6 @@ public class GridBlock extends NodeBlock { return true; } - @Override - public boolean hasTileEntity(BlockState state) { - return true; - } - @Nullable @Override public TileEntity createTileEntity(BlockState state, IBlockReader world) { diff --git a/src/main/java/com/raoulvdberge/refinedstorage/block/StorageBlock.java b/src/main/java/com/raoulvdberge/refinedstorage/block/StorageBlock.java index dc1bceda8..c8f4bbc6b 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/block/StorageBlock.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/block/StorageBlock.java @@ -54,11 +54,6 @@ public class StorageBlock extends NodeBlock { super.onBlockPlacedBy(world, pos, state, entity, stack); } - @Override - public boolean hasTileEntity(BlockState state) { - return true; - } - @Nullable @Override public TileEntity createTileEntity(BlockState state, IBlockReader world) { diff --git a/src/main/java/com/raoulvdberge/refinedstorage/config/ServerConfig.java b/src/main/java/com/raoulvdberge/refinedstorage/config/ServerConfig.java index 3c1b7d091..2a50d2bbc 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/config/ServerConfig.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/config/ServerConfig.java @@ -29,6 +29,7 @@ public class ServerConfig { private WirelessFluidGrid wirelessFluidGrid; private Constructor constructor; private Destructor destructor; + private DiskManipulator diskManipulator; public ServerConfig() { upgrades = new Upgrades(); @@ -54,6 +55,7 @@ public class ServerConfig { wirelessFluidGrid = new WirelessFluidGrid(); constructor = new Constructor(); destructor = new Destructor(); + diskManipulator = new DiskManipulator(); spec = builder.build(); } @@ -150,6 +152,10 @@ public class ServerConfig { return destructor; } + public DiskManipulator getDiskManipulator() { + return diskManipulator; + } + public ForgeConfigSpec getSpec() { return spec; } @@ -719,4 +725,20 @@ public class ServerConfig { return usage.get(); } } + + public class DiskManipulator { + private final ForgeConfigSpec.IntValue usage; + + public DiskManipulator() { + builder.push("diskManipulator"); + + usage = builder.comment("The energy used by the Disk Manipulator").defineInRange("usage", 4, 0, Integer.MAX_VALUE); + + builder.pop(); + } + + public int getUsage() { + return usage.get(); + } + } } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/container/DiskManipulatorContainer.java b/src/main/java/com/raoulvdberge/refinedstorage/container/DiskManipulatorContainer.java index 28c68a272..84da29923 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/container/DiskManipulatorContainer.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/container/DiskManipulatorContainer.java @@ -3,13 +3,13 @@ package com.raoulvdberge.refinedstorage.container; import com.raoulvdberge.refinedstorage.RSContainers; import com.raoulvdberge.refinedstorage.container.slot.filter.FilterSlot; import com.raoulvdberge.refinedstorage.container.slot.filter.FluidFilterSlot; -import com.raoulvdberge.refinedstorage.tile.TileDiskManipulator; +import com.raoulvdberge.refinedstorage.tile.DiskManipulatorTile; import com.raoulvdberge.refinedstorage.tile.config.IType; import net.minecraft.entity.player.PlayerEntity; import net.minecraftforge.items.SlotItemHandler; public class DiskManipulatorContainer extends BaseContainer { - public DiskManipulatorContainer(TileDiskManipulator diskManipulator, PlayerEntity player, int windowId) { + public DiskManipulatorContainer(DiskManipulatorTile diskManipulator, PlayerEntity player, int windowId) { super(RSContainers.DISK_MANIPULATOR, diskManipulator, player, windowId); for (int i = 0; i < 4; ++i) { diff --git a/src/main/java/com/raoulvdberge/refinedstorage/render/model/DiskDriveBakedModel.java b/src/main/java/com/raoulvdberge/refinedstorage/render/model/DiskDriveBakedModel.java index 5826893be..fa8812d06 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/render/model/DiskDriveBakedModel.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/render/model/DiskDriveBakedModel.java @@ -4,7 +4,7 @@ import com.google.common.cache.CacheBuilder; import com.google.common.cache.CacheLoader; import com.google.common.cache.LoadingCache; import com.raoulvdberge.refinedstorage.RSBlocks; -import com.raoulvdberge.refinedstorage.apiimpl.network.node.diskdrive.DiskDriveNetworkNode; +import com.raoulvdberge.refinedstorage.apiimpl.network.node.DiskState; import com.raoulvdberge.refinedstorage.tile.DiskDriveTile; import net.minecraft.block.BlockState; import net.minecraft.client.renderer.model.BakedQuad; @@ -21,10 +21,10 @@ public class DiskDriveBakedModel extends DelegateBakedModel { private class CacheKey { private BlockState state; private Direction side; - private DiskDriveNetworkNode.DiskState[] diskState; + private DiskState[] diskState; private Random random; - CacheKey(BlockState state, @Nullable Direction side, DiskDriveNetworkNode.DiskState[] diskState, Random random) { + CacheKey(BlockState state, @Nullable Direction side, DiskState[] diskState, Random random) { this.state = state; this.side = side; this.diskState = diskState; @@ -64,7 +64,7 @@ public class DiskDriveBakedModel extends DelegateBakedModel { } private Map baseByFacing = new HashMap<>(); - private Map>> disksByFacing = new HashMap<>(); + private Map>> disksByFacing = new HashMap<>(); private LoadingCache> cache = CacheBuilder.newBuilder().build(new CacheLoader>() { @Override @@ -75,7 +75,7 @@ public class DiskDriveBakedModel extends DelegateBakedModel { List quads = new ArrayList<>(baseByFacing.get(facing).getQuads(key.state, key.side, key.random)); for (int i = 0; i < 8; ++i) { - if (key.diskState[i] != DiskDriveNetworkNode.DiskState.NONE) { + if (key.diskState[i] != DiskState.NONE) { quads.addAll(disksByFacing.get(facing).get(key.diskState[i]).get(i).getQuads(key.state, key.side, key.random)); } } @@ -100,14 +100,14 @@ public class DiskDriveBakedModel extends DelegateBakedModel { disksByFacing.put(facing, new HashMap<>()); - addDiskModels(disk, DiskDriveNetworkNode.DiskState.NORMAL, facing); - addDiskModels(diskNearCapacity, DiskDriveNetworkNode.DiskState.NEAR_CAPACITY, facing); - addDiskModels(diskFull, DiskDriveNetworkNode.DiskState.FULL, facing); - addDiskModels(diskDisconnected, DiskDriveNetworkNode.DiskState.DISCONNECTED, facing); + addDiskModels(disk, DiskState.NORMAL, facing); + addDiskModels(diskNearCapacity, DiskState.NEAR_CAPACITY, facing); + addDiskModels(diskFull, DiskState.FULL, facing); + addDiskModels(diskDisconnected, DiskState.DISCONNECTED, facing); } } - private void addDiskModels(IBakedModel disk, DiskDriveNetworkNode.DiskState type, Direction facing) { + private void addDiskModels(IBakedModel disk, DiskState type, Direction facing) { disksByFacing.get(facing).put(type, new ArrayList<>()); for (int y = 0; y < 4; ++y) { @@ -133,7 +133,7 @@ public class DiskDriveBakedModel extends DelegateBakedModel { @Override public List getQuads(@Nullable BlockState state, @Nullable Direction side, Random rand, IModelData data) { - DiskDriveNetworkNode.DiskState[] diskState = data.getData(DiskDriveTile.DISK_STATE_PROPERTY); + DiskState[] diskState = data.getData(DiskDriveTile.DISK_STATE_PROPERTY); if (diskState == null) { return base.getQuads(state, side, rand, data); diff --git a/src/main/java/com/raoulvdberge/refinedstorage/render/model/BakedModelDiskManipulator.java b/src/main/java/com/raoulvdberge/refinedstorage/render/model/DiskManipulatorBakedModel.java similarity index 52% rename from src/main/java/com/raoulvdberge/refinedstorage/render/model/BakedModelDiskManipulator.java rename to src/main/java/com/raoulvdberge/refinedstorage/render/model/DiskManipulatorBakedModel.java index 65599a2e3..08fd72c9f 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/render/model/BakedModelDiskManipulator.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/render/model/DiskManipulatorBakedModel.java @@ -1,32 +1,35 @@ package com.raoulvdberge.refinedstorage.render.model; -/* + import com.google.common.cache.CacheBuilder; import com.google.common.cache.CacheLoader; import com.google.common.cache.LoadingCache; import com.raoulvdberge.refinedstorage.RSBlocks; -import com.raoulvdberge.refinedstorage.block.BlockDiskManipulator; -import com.raoulvdberge.refinedstorage.render.constants.ConstantsDisk; -import net.minecraft.block.state.BlockState; -import net.minecraft.client.renderer.block.model.BakedQuad; -import net.minecraft.client.renderer.block.model.IBakedModel; +import com.raoulvdberge.refinedstorage.apiimpl.network.node.DiskState; +import com.raoulvdberge.refinedstorage.block.DiskManipulatorBlock; +import com.raoulvdberge.refinedstorage.tile.DiskManipulatorTile; +import net.minecraft.block.BlockState; +import net.minecraft.client.renderer.model.BakedQuad; +import net.minecraft.client.renderer.model.IBakedModel; import net.minecraft.util.Direction; +import net.minecraftforge.client.model.data.IModelData; import net.minecraftforge.common.model.TRSRTransformation; -import net.minecraftforge.common.property.IExtendedBlockState; import javax.annotation.Nullable; import javax.vecmath.Vector3f; import java.util.*; -public class BakedModelDiskManipulator extends BakedModelDelegate { +public class DiskManipulatorBakedModel extends DelegateBakedModel { private class CacheKey { private BlockState state; private Direction side; - private Integer[] diskState; + private DiskState[] diskState; + private Random random; - CacheKey(BlockState state, @Nullable Direction side, Integer[] diskState) { + CacheKey(BlockState state, @Nullable Direction side, DiskState[] diskState, Random random) { this.state = state; this.side = side; this.diskState = diskState; + this.random = random; } @Override @@ -63,18 +66,19 @@ public class BakedModelDiskManipulator extends BakedModelDelegate { private Map modelsConnected = new HashMap<>(); private Map modelsDisconnected = new HashMap<>(); - private Map>> disks = new HashMap<>(); + private Map>> disks = new HashMap<>(); private LoadingCache> cache = CacheBuilder.newBuilder().build(new CacheLoader>() { @Override + @SuppressWarnings("deprecation") public List load(CacheKey key) { - Direction facing = key.state.getValue(RSBlocks.DISK_MANIPULATOR.getDirection().getProperty()); + Direction facing = key.state.get(RSBlocks.DISK_MANIPULATOR.getDirection().getProperty()); - List quads = (key.state.getValue(BlockDiskManipulator.CONNECTED) ? modelsConnected : modelsDisconnected).get(facing).getQuads(key.state, key.side, 0); + List quads = new ArrayList<>((key.state.get(DiskManipulatorBlock.CONNECTED) ? modelsConnected : modelsDisconnected).get(facing).getQuads(key.state, key.side, key.random)); for (int i = 0; i < 6; ++i) { - if (key.diskState[i] != ConstantsDisk.DISK_STATE_NONE) { - quads.addAll(disks.get(facing).get(key.diskState[i]).get(i).getQuads(key.state, key.side, 0)); + if (key.diskState[i] != DiskState.NONE) { + quads.addAll(disks.get(facing).get(key.diskState[i]).get(i).getQuads(key.state, key.side, key.random)); } } @@ -82,31 +86,40 @@ public class BakedModelDiskManipulator extends BakedModelDelegate { } }); - public BakedModelDiskManipulator(IBakedModel baseConnected, IBakedModel baseDisconnected, IBakedModel disk, IBakedModel diskNearCapacity, IBakedModel diskFull, IBakedModel diskDisconnected) { + public DiskManipulatorBakedModel(IBakedModel baseConnected, + IBakedModel baseDisconnected, + IBakedModel disk, + IBakedModel diskNearCapacity, + IBakedModel diskFull, + IBakedModel diskDisconnected) { super(baseDisconnected); - for (Direction facing : Direction.HORIZONTALS) { - modelsConnected.put(facing, new BakedModelTRSR(baseConnected, facing)); - modelsDisconnected.put(facing, new BakedModelTRSR(baseDisconnected, facing)); + for (Direction facing : Direction.values()) { + if (facing.getHorizontalIndex() == -1) { + continue; + } + + modelsConnected.put(facing, new TRSRBakedModel(baseConnected, facing)); + modelsDisconnected.put(facing, new TRSRBakedModel(baseDisconnected, facing)); disks.put(facing, new HashMap<>()); - disks.get(facing).put(ConstantsDisk.DISK_STATE_NORMAL, new ArrayList<>()); - disks.get(facing).put(ConstantsDisk.DISK_STATE_NEAR_CAPACITY, new ArrayList<>()); - disks.get(facing).put(ConstantsDisk.DISK_STATE_FULL, new ArrayList<>()); - disks.get(facing).put(ConstantsDisk.DISK_STATE_DISCONNECTED, new ArrayList<>()); + disks.get(facing).put(DiskState.NORMAL, new ArrayList<>()); + disks.get(facing).put(DiskState.NEAR_CAPACITY, new ArrayList<>()); + disks.get(facing).put(DiskState.FULL, new ArrayList<>()); + disks.get(facing).put(DiskState.DISCONNECTED, new ArrayList<>()); - initDiskModels(disk, ConstantsDisk.DISK_STATE_NORMAL, facing); - initDiskModels(diskNearCapacity, ConstantsDisk.DISK_STATE_NEAR_CAPACITY, facing); - initDiskModels(diskFull, ConstantsDisk.DISK_STATE_FULL, facing); - initDiskModels(diskDisconnected, ConstantsDisk.DISK_STATE_DISCONNECTED, facing); + addDiskModels(disk, DiskState.NORMAL, facing); + addDiskModels(diskNearCapacity, DiskState.NEAR_CAPACITY, facing); + addDiskModels(diskFull, DiskState.FULL, facing); + addDiskModels(diskDisconnected, DiskState.DISCONNECTED, facing); } } - private void initDiskModels(IBakedModel disk, int type, Direction facing) { + private void addDiskModels(IBakedModel disk, DiskState type, Direction facing) { for (int x = 0; x < 2; ++x) { for (int y = 0; y < 3; ++y) { - BakedModelTRSR model = new BakedModelTRSR(disk, facing); + TRSRBakedModel model = new TRSRBakedModel(disk, facing); Vector3f trans = model.transformation.getTranslation(); @@ -126,20 +139,15 @@ public class BakedModelDiskManipulator extends BakedModelDelegate { } @Override - public List getQuads(@Nullable BlockState state, @Nullable Direction side, long rand) { - if (!(state instanceof IExtendedBlockState)) { - return base.getQuads(state, side, rand); - } - - Integer[] diskState = ((IExtendedBlockState) state).getValue(BlockDiskManipulator.DISK_STATE); + public List getQuads(@Nullable BlockState state, @Nullable Direction side, Random rand, IModelData data) { + DiskState[] diskState = data.getData(DiskManipulatorTile.DISK_STATE_PROPERTY); if (diskState == null) { - return base.getQuads(state, side, rand); + return base.getQuads(state, side, rand, data); } - CacheKey key = new CacheKey(((IExtendedBlockState) state).getClean(), side, diskState); + CacheKey key = new CacheKey(state, side, diskState, rand); return cache.getUnchecked(key); } } -*/ \ No newline at end of file diff --git a/src/main/java/com/raoulvdberge/refinedstorage/screen/DiskManipulatorScreen.java b/src/main/java/com/raoulvdberge/refinedstorage/screen/DiskManipulatorScreen.java new file mode 100644 index 000000000..5aa9ec3b9 --- /dev/null +++ b/src/main/java/com/raoulvdberge/refinedstorage/screen/DiskManipulatorScreen.java @@ -0,0 +1,44 @@ +package com.raoulvdberge.refinedstorage.screen; + +import com.raoulvdberge.refinedstorage.RS; +import com.raoulvdberge.refinedstorage.container.DiskManipulatorContainer; +import com.raoulvdberge.refinedstorage.screen.widget.sidebutton.*; +import com.raoulvdberge.refinedstorage.tile.DiskManipulatorTile; +import net.minecraft.client.resources.I18n; +import net.minecraft.entity.player.PlayerInventory; +import net.minecraft.util.text.ITextComponent; + +public class DiskManipulatorScreen extends BaseScreen { + public DiskManipulatorScreen(DiskManipulatorContainer container, PlayerInventory playerInventory, ITextComponent title) { + super(container, 211, 211, playerInventory, title); + } + + @Override + public void onPostInit(int x, int y) { + addSideButton(new RedstoneModeSideButton(this, DiskManipulatorTile.REDSTONE_MODE)); + addSideButton(new IoModeSideButton(this)); + addSideButton(new TypeSideButton(this, DiskManipulatorTile.TYPE)); + addSideButton(new WhitelistBlacklistSideButton(this, DiskManipulatorTile.WHITELIST_BLACKLIST)); + addSideButton(new ExactModeSideButton(this, DiskManipulatorTile.COMPARE)); + } + + @Override + public void tick(int x, int y) { + + } + + @Override + public void renderBackground(int x, int y, int mouseX, int mouseY) { + bindTexture(RS.ID, "gui/disk_manipulator.png"); + + blit(x, y, 0, 0, xSize, ySize); + } + + @Override + public void renderForeground(int mouseX, int mouseY) { + renderString(7, 7, title.getFormattedText()); + renderString(7, 117, I18n.format("container.inventory")); + renderString(43, 45, I18n.format("gui.refinedstorage.disk_manipulator.in")); + renderString(115, 45, I18n.format("gui.refinedstorage.disk_manipulator.out")); + } +} diff --git a/src/main/java/com/raoulvdberge/refinedstorage/screen/GuiDiskManipulator.java b/src/main/java/com/raoulvdberge/refinedstorage/screen/GuiDiskManipulator.java deleted file mode 100644 index 82397aeb5..000000000 --- a/src/main/java/com/raoulvdberge/refinedstorage/screen/GuiDiskManipulator.java +++ /dev/null @@ -1,43 +0,0 @@ -package com.raoulvdberge.refinedstorage.screen; - -import com.raoulvdberge.refinedstorage.RS; -import com.raoulvdberge.refinedstorage.container.DiskManipulatorContainer; -import com.raoulvdberge.refinedstorage.screen.widget.sidebutton.*; -import com.raoulvdberge.refinedstorage.tile.TileDiskManipulator; -import net.minecraft.client.resources.I18n; -import net.minecraft.entity.player.PlayerInventory; - -public class GuiDiskManipulator extends BaseScreen { - public GuiDiskManipulator(DiskManipulatorContainer container, PlayerInventory playerInventory) { - super(container, 211, 211, playerInventory, null); - } - - @Override - public void onPostInit(int x, int y) { - addSideButton(new RedstoneModeSideButton(this, TileDiskManipulator.REDSTONE_MODE)); - addSideButton(new IoModeSideButton(this)); - addSideButton(new TypeSideButton(this, TileDiskManipulator.TYPE)); - addSideButton(new WhitelistBlacklistSideButton(this, TileDiskManipulator.WHITELIST_BLACKLIST)); - addSideButton(new ExactModeSideButton(this, TileDiskManipulator.COMPARE)); - } - - @Override - public void tick(int x, int y) { - - } - - @Override - public void renderBackground(int x, int y, int mouseX, int mouseY) { - bindTexture(RS.ID, "gui/disk_manipulator.png"); - - blit(x, y, 0, 0, xSize, ySize); - } - - @Override - public void renderForeground(int mouseX, int mouseY) { - renderString(7, 7, I18n.format("block.refinedstorage:disk_manipulator.name")); - renderString(7, 117, I18n.format("container.inventory")); - renderString(43, 45, I18n.format("gui.refinedstorage:fluid_interface.in")); - renderString(115, 45, I18n.format("gui.refinedstorage:fluid_interface.out")); - } -} diff --git a/src/main/java/com/raoulvdberge/refinedstorage/screen/widget/sidebutton/IoModeSideButton.java b/src/main/java/com/raoulvdberge/refinedstorage/screen/widget/sidebutton/IoModeSideButton.java index 817c16c55..9c528cfb0 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/screen/widget/sidebutton/IoModeSideButton.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/screen/widget/sidebutton/IoModeSideButton.java @@ -1,8 +1,8 @@ package com.raoulvdberge.refinedstorage.screen.widget.sidebutton; -import com.raoulvdberge.refinedstorage.apiimpl.network.node.diskmanipulator.NetworkNodeDiskManipulator; +import com.raoulvdberge.refinedstorage.apiimpl.network.node.diskmanipulator.DiskManipulatorNetworkNode; import com.raoulvdberge.refinedstorage.screen.BaseScreen; -import com.raoulvdberge.refinedstorage.tile.TileDiskManipulator; +import com.raoulvdberge.refinedstorage.tile.DiskManipulatorTile; import com.raoulvdberge.refinedstorage.tile.data.TileDataManager; import net.minecraft.client.resources.I18n; import net.minecraft.util.text.TextFormatting; @@ -14,16 +14,16 @@ public class IoModeSideButton extends SideButton { @Override public String getTooltip() { - return I18n.format("sidebutton.refinedstorage.iomode") + "\n" + TextFormatting.GRAY + I18n.format("sidebutton.refinedstorage.iomode." + (TileDiskManipulator.IO_MODE.getValue() == NetworkNodeDiskManipulator.IO_MODE_INSERT ? "insert" : "extract")); + return I18n.format("sidebutton.refinedstorage.iomode") + "\n" + TextFormatting.GRAY + I18n.format("sidebutton.refinedstorage.iomode." + (DiskManipulatorTile.IO_MODE.getValue() == DiskManipulatorNetworkNode.IO_MODE_INSERT ? "insert" : "extract")); } @Override protected void renderButtonIcon(int x, int y) { - screen.blit(x, y, TileDiskManipulator.IO_MODE.getValue() == NetworkNodeDiskManipulator.IO_MODE_EXTRACT ? 0 : 16, 160, 16, 16); + screen.blit(x, y, DiskManipulatorTile.IO_MODE.getValue() == DiskManipulatorNetworkNode.IO_MODE_EXTRACT ? 0 : 16, 160, 16, 16); } @Override public void onPress() { - TileDataManager.setParameter(TileDiskManipulator.IO_MODE, TileDiskManipulator.IO_MODE.getValue() == NetworkNodeDiskManipulator.IO_MODE_INSERT ? NetworkNodeDiskManipulator.IO_MODE_EXTRACT : NetworkNodeDiskManipulator.IO_MODE_INSERT); + TileDataManager.setParameter(DiskManipulatorTile.IO_MODE, DiskManipulatorTile.IO_MODE.getValue() == DiskManipulatorNetworkNode.IO_MODE_INSERT ? DiskManipulatorNetworkNode.IO_MODE_EXTRACT : DiskManipulatorNetworkNode.IO_MODE_INSERT); } } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/tile/DiskDriveTile.java b/src/main/java/com/raoulvdberge/refinedstorage/tile/DiskDriveTile.java index dd4ba34f6..8b85e3865 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/tile/DiskDriveTile.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/tile/DiskDriveTile.java @@ -3,6 +3,7 @@ package com.raoulvdberge.refinedstorage.tile; import com.raoulvdberge.refinedstorage.RSTiles; import com.raoulvdberge.refinedstorage.api.storage.AccessType; import com.raoulvdberge.refinedstorage.api.storage.disk.IStorageDisk; +import com.raoulvdberge.refinedstorage.apiimpl.network.node.DiskState; import com.raoulvdberge.refinedstorage.apiimpl.network.node.diskdrive.DiskDriveNetworkNode; import com.raoulvdberge.refinedstorage.tile.config.*; import com.raoulvdberge.refinedstorage.tile.data.RSSerializers; @@ -76,12 +77,13 @@ public class DiskDriveTile extends NetworkNodeTile { return capacity; }); + public static final ModelProperty DISK_STATE_PROPERTY = new ModelProperty<>(); + private static final String NBT_DISK_STATE = "DiskStates"; - public static final ModelProperty DISK_STATE_PROPERTY = new ModelProperty<>(); private LazyOptional diskCapability = LazyOptional.of(() -> getNode().getDisks()); - private DiskDriveNetworkNode.DiskState[] diskState = new DiskDriveNetworkNode.DiskState[8]; + private DiskState[] diskState = new DiskState[8]; public DiskDriveTile() { super(RSTiles.DISK_DRIVE); @@ -94,7 +96,7 @@ public class DiskDriveTile extends NetworkNodeTile { dataManager.addWatchedParameter(STORED); dataManager.addWatchedParameter(CAPACITY); - Arrays.fill(diskState, DiskDriveNetworkNode.DiskState.NONE); + Arrays.fill(diskState, DiskState.NONE); } @Override @@ -103,7 +105,7 @@ public class DiskDriveTile extends NetworkNodeTile { ListNBT list = new ListNBT(); - for (DiskDriveNetworkNode.DiskState state : getNode().getDiskState()) { + for (DiskState state : getNode().getDiskState()) { list.add(new IntNBT(state.ordinal())); } @@ -119,7 +121,7 @@ public class DiskDriveTile extends NetworkNodeTile { ListNBT list = tag.getList(NBT_DISK_STATE, Constants.NBT.TAG_INT); for (int i = 0; i < list.size(); ++i) { - diskState[i] = DiskDriveNetworkNode.DiskState.values()[list.getInt(i)]; + diskState[i] = DiskState.values()[list.getInt(i)]; } requestModelDataUpdate(); diff --git a/src/main/java/com/raoulvdberge/refinedstorage/tile/DiskManipulatorTile.java b/src/main/java/com/raoulvdberge/refinedstorage/tile/DiskManipulatorTile.java new file mode 100644 index 000000000..c3644dafc --- /dev/null +++ b/src/main/java/com/raoulvdberge/refinedstorage/tile/DiskManipulatorTile.java @@ -0,0 +1,110 @@ +package com.raoulvdberge.refinedstorage.tile; + +import com.raoulvdberge.refinedstorage.RSTiles; +import com.raoulvdberge.refinedstorage.apiimpl.network.node.DiskState; +import com.raoulvdberge.refinedstorage.apiimpl.network.node.diskmanipulator.DiskManipulatorNetworkNode; +import com.raoulvdberge.refinedstorage.tile.config.IComparable; +import com.raoulvdberge.refinedstorage.tile.config.IType; +import com.raoulvdberge.refinedstorage.tile.config.IWhitelistBlacklist; +import com.raoulvdberge.refinedstorage.tile.data.TileDataParameter; +import com.raoulvdberge.refinedstorage.util.WorldUtils; +import net.minecraft.nbt.CompoundNBT; +import net.minecraft.nbt.IntNBT; +import net.minecraft.nbt.ListNBT; +import net.minecraft.network.datasync.DataSerializers; +import net.minecraft.util.Direction; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.World; +import net.minecraftforge.client.model.data.IModelData; +import net.minecraftforge.client.model.data.ModelDataMap; +import net.minecraftforge.client.model.data.ModelProperty; +import net.minecraftforge.common.capabilities.Capability; +import net.minecraftforge.common.util.Constants; +import net.minecraftforge.common.util.LazyOptional; +import net.minecraftforge.items.CapabilityItemHandler; +import net.minecraftforge.items.IItemHandler; + +import javax.annotation.Nonnull; +import javax.annotation.Nullable; +import java.util.Arrays; + +public class DiskManipulatorTile extends NetworkNodeTile { + public static final TileDataParameter COMPARE = IComparable.createParameter(); + public static final TileDataParameter WHITELIST_BLACKLIST = IWhitelistBlacklist.createParameter(); + public static final TileDataParameter TYPE = IType.createParameter(); + public static final TileDataParameter IO_MODE = new TileDataParameter<>(DataSerializers.VARINT, DiskManipulatorNetworkNode.IO_MODE_INSERT, t -> t.getNode().getIoMode(), (t, v) -> { + t.getNode().setIoMode(v); + t.getNode().markDirty(); + }); + + public static final ModelProperty DISK_STATE_PROPERTY = new ModelProperty<>(); + + private static final String NBT_DISK_STATE = "DiskStates"; + + private LazyOptional diskCapability = LazyOptional.of(() -> getNode().getDisks()); + + private DiskState[] diskState = new DiskState[8]; + + public DiskManipulatorTile() { + super(RSTiles.DISK_MANIPULATOR); + + dataManager.addWatchedParameter(COMPARE); + dataManager.addWatchedParameter(WHITELIST_BLACKLIST); + dataManager.addWatchedParameter(TYPE); + dataManager.addWatchedParameter(IO_MODE); + + Arrays.fill(diskState, DiskState.NONE); + } + + @Override + public CompoundNBT writeUpdate(CompoundNBT tag) { + super.writeUpdate(tag); + + ListNBT list = new ListNBT(); + + for (DiskState state : getNode().getDiskState()) { + list.add(new IntNBT(state.ordinal())); + } + + tag.put(NBT_DISK_STATE, list); + + return tag; + } + + @Override + public void readUpdate(CompoundNBT tag) { + super.readUpdate(tag); + + ListNBT list = tag.getList(NBT_DISK_STATE, Constants.NBT.TAG_INT); + + for (int i = 0; i < list.size(); ++i) { + diskState[i] = DiskState.values()[list.getInt(i)]; + } + + requestModelDataUpdate(); + + WorldUtils.updateBlock(world, pos); + } + + @Nonnull + @Override + public IModelData getModelData() { + return new ModelDataMap.Builder().withInitial(DISK_STATE_PROPERTY, diskState).build(); + } + + @Nonnull + @Override + public LazyOptional getCapability(@Nonnull Capability cap, @Nullable Direction direction) { + if (cap == CapabilityItemHandler.ITEM_HANDLER_CAPABILITY) { + return diskCapability.cast(); + } + + return super.getCapability(cap, direction); + } + + @Override + @Nonnull + public DiskManipulatorNetworkNode createNode(World world, BlockPos pos) { + return new DiskManipulatorNetworkNode(world, pos); + } +} diff --git a/src/main/java/com/raoulvdberge/refinedstorage/tile/TileDiskManipulator.java b/src/main/java/com/raoulvdberge/refinedstorage/tile/TileDiskManipulator.java deleted file mode 100755 index 0822b4c7a..000000000 --- a/src/main/java/com/raoulvdberge/refinedstorage/tile/TileDiskManipulator.java +++ /dev/null @@ -1,77 +0,0 @@ -package com.raoulvdberge.refinedstorage.tile; - -import com.raoulvdberge.refinedstorage.RSTiles; -import com.raoulvdberge.refinedstorage.apiimpl.network.node.diskmanipulator.NetworkNodeDiskManipulator; -import com.raoulvdberge.refinedstorage.tile.config.IComparable; -import com.raoulvdberge.refinedstorage.tile.config.IType; -import com.raoulvdberge.refinedstorage.tile.config.IWhitelistBlacklist; -import com.raoulvdberge.refinedstorage.tile.data.TileDataParameter; -import net.minecraft.nbt.CompoundNBT; -import net.minecraft.network.datasync.DataSerializers; -import net.minecraft.util.math.BlockPos; -import net.minecraft.world.World; - -import javax.annotation.Nonnull; - -public class TileDiskManipulator extends NetworkNodeTile { - public static final TileDataParameter COMPARE = IComparable.createParameter(); - public static final TileDataParameter WHITELIST_BLACKLIST = IWhitelistBlacklist.createParameter(); - public static final TileDataParameter TYPE = IType.createParameter(); - public static final TileDataParameter IO_MODE = new TileDataParameter<>(DataSerializers.VARINT, NetworkNodeDiskManipulator.IO_MODE_INSERT, t -> t.getNode().getIoMode(), (t, v) -> { - t.getNode().setIoMode(v); - t.getNode().markDirty(); - }); - - private Integer[] diskState = new Integer[6]; - - public TileDiskManipulator() { - super(RSTiles.DISK_MANIPULATOR); - - dataManager.addWatchedParameter(COMPARE); - dataManager.addWatchedParameter(WHITELIST_BLACKLIST); - dataManager.addWatchedParameter(TYPE); - dataManager.addWatchedParameter(IO_MODE); - - // DiskDriveTile.initDiskState(diskState); - } - - @Override - public CompoundNBT writeUpdate(CompoundNBT tag) { - super.writeUpdate(tag); - - // DiskDriveTile.writeDiskState(tag, 6, getNode().canUpdate(), getNode().getItemDisks(), getNode().getFluidDisks()); - - return tag; - } - - @Override - public void readUpdate(CompoundNBT tag) { - super.readUpdate(tag); - - // DiskDriveTile.readDiskState(tag, diskState); - } - - public Integer[] getDiskState() { - return diskState; - } - - /* TODO @Override - public T getCapability(@Nonnull Capability capability, @Nullable Direction facing) { - if (capability == CapabilityItemHandler.ITEM_HANDLER_CAPABILITY) { - return CapabilityItemHandler.ITEM_HANDLER_CAPABILITY.cast(getNode().getDisks()); - } - - return 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 NetworkNodeDiskManipulator createNode(World world, BlockPos pos) { - return new NetworkNodeDiskManipulator(world, pos); - } -} diff --git a/src/main/java/com/raoulvdberge/refinedstorage/tile/grid/portable/TilePortableGrid.java b/src/main/java/com/raoulvdberge/refinedstorage/tile/grid/portable/TilePortableGrid.java index 9d6047461..3b1029e71 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/tile/grid/portable/TilePortableGrid.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/tile/grid/portable/TilePortableGrid.java @@ -21,8 +21,8 @@ import com.raoulvdberge.refinedstorage.api.util.IFilter; import com.raoulvdberge.refinedstorage.apiimpl.API; import com.raoulvdberge.refinedstorage.apiimpl.network.grid.handler.PortableFluidGridHandler; import com.raoulvdberge.refinedstorage.apiimpl.network.grid.handler.PortableItemGridHandler; +import com.raoulvdberge.refinedstorage.apiimpl.network.node.DiskState; import com.raoulvdberge.refinedstorage.apiimpl.network.node.GridNetworkNode; -import com.raoulvdberge.refinedstorage.apiimpl.network.node.diskdrive.DiskDriveNetworkNode; import com.raoulvdberge.refinedstorage.apiimpl.storage.cache.PortableFluidStorageCache; import com.raoulvdberge.refinedstorage.apiimpl.storage.cache.PortableItemStorageCache; import com.raoulvdberge.refinedstorage.apiimpl.storage.cache.listener.PortableFluidGridStorageCacheListener; @@ -756,7 +756,7 @@ public class TilePortableGrid extends BaseTile implements IGrid, IPortableGrid, if (renderInfo.getStored() == renderInfo.getCapacity()) { return PortableGridDiskState.FULL; - } else if ((int) ((float) renderInfo.getStored() / (float) renderInfo.getCapacity() * 100F) >= DiskDriveNetworkNode.DiskState.DISK_NEAR_CAPACITY_THRESHOLD) { + } else if ((int) ((float) renderInfo.getStored() / (float) renderInfo.getCapacity() * 100F) >= DiskState.DISK_NEAR_CAPACITY_THRESHOLD) { return PortableGridDiskState.NEAR_CAPACITY; } else { return PortableGridDiskState.NORMAL; diff --git a/src/main/resources/assets/refinedstorage/blockstates/disk_manipulator.json b/src/main/resources/assets/refinedstorage/blockstates/disk_manipulator.json new file mode 100644 index 000000000..10dbd0b08 --- /dev/null +++ b/src/main/resources/assets/refinedstorage/blockstates/disk_manipulator.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "refinedstorage:block/disk_manipulator_disconnected" + } + } +} diff --git a/src/main/resources/assets/refinedstorage/lang/en_us.json b/src/main/resources/assets/refinedstorage/lang/en_us.json index d6e890bfb..37bd04bcd 100644 --- a/src/main/resources/assets/refinedstorage/lang/en_us.json +++ b/src/main/resources/assets/refinedstorage/lang/en_us.json @@ -20,6 +20,9 @@ "gui.refinedstorage.fluid_amount": "Fluid amount in mB", "gui.refinedstorage.disk_drive": "Disk Drive", "gui.refinedstorage.disk_drive.disks": "Disks", + "gui.refinedstorage.disk_manipulator": "Disk Manipulator", + "gui.refinedstorage.disk_manipulator.in": "In", + "gui.refinedstorage.disk_manipulator.out": "Out", "gui.refinedstorage.external_storage": "External Storage", "gui.refinedstorage.importer": "Importer", "gui.refinedstorage.exporter": "Exporter", @@ -184,7 +187,7 @@ "block.refinedstorage.pattern_grid": "Pattern Grid", "block.refinedstorage.fluid_grid": "Fluid Grid", "block.refinedstorage.disk_drive": "Disk Drive", - "block.refinedstorage:disk_manipulator": "Disk Manipulator", + "block.refinedstorage.disk_manipulator": "Disk Manipulator", "block.refinedstorage.external_storage": "External Storage", "block.refinedstorage.importer": "Importer", "block.refinedstorage.exporter": "Exporter", diff --git a/src/main/resources/assets/refinedstorage/models/block/disk_manipulator.json b/src/main/resources/assets/refinedstorage/models/block/disk_manipulator.json new file mode 100644 index 000000000..7a73a41bf --- /dev/null +++ b/src/main/resources/assets/refinedstorage/models/block/disk_manipulator.json @@ -0,0 +1,2 @@ +{ +} \ No newline at end of file diff --git a/src/main/resources/assets/refinedstorage/models/block/disk_manipulator_connected.json b/src/main/resources/assets/refinedstorage/models/block/disk_manipulator_connected.json index fab0ead50..ea4bae120 100755 --- a/src/main/resources/assets/refinedstorage/models/block/disk_manipulator_connected.json +++ b/src/main/resources/assets/refinedstorage/models/block/disk_manipulator_connected.json @@ -1,13 +1,13 @@ { "parent": "refinedstorage:block/cube_north_cutout", "textures": { - "particle": "refinedstorage:blocks/disk_manipulator/disk_manipulator", - "north": "refinedstorage:blocks/disk_manipulator/disk_manipulator", - "east": "refinedstorage:blocks/side", - "south": "refinedstorage:blocks/side", - "west": "refinedstorage:blocks/side", - "up": "refinedstorage:blocks/side", - "down": "refinedstorage:blocks/side", - "cutout": "refinedstorage:blocks/disk_manipulator/cutouts/connected" + "particle": "refinedstorage:block/disk_manipulator/disk_manipulator", + "north": "refinedstorage:block/disk_manipulator/disk_manipulator", + "east": "refinedstorage:block/side", + "south": "refinedstorage:block/side", + "west": "refinedstorage:block/side", + "up": "refinedstorage:block/side", + "down": "refinedstorage:block/side", + "cutout": "refinedstorage:block/disk_manipulator/cutouts/connected" } } diff --git a/src/main/resources/assets/refinedstorage/models/block/disk_manipulator_disconnected.json b/src/main/resources/assets/refinedstorage/models/block/disk_manipulator_disconnected.json index 0018da8dc..a77577cb2 100755 --- a/src/main/resources/assets/refinedstorage/models/block/disk_manipulator_disconnected.json +++ b/src/main/resources/assets/refinedstorage/models/block/disk_manipulator_disconnected.json @@ -1,13 +1,13 @@ { "parent": "refinedstorage:block/cube_north_cutout", "textures": { - "particle": "refinedstorage:blocks/disk_manipulator/disk_manipulator", - "north": "refinedstorage:blocks/disk_manipulator/disk_manipulator", - "east": "refinedstorage:blocks/side", - "south": "refinedstorage:blocks/side", - "west": "refinedstorage:blocks/side", - "up": "refinedstorage:blocks/side", - "down": "refinedstorage:blocks/side", - "cutout": "refinedstorage:blocks/disk_manipulator/cutouts/disconnected" + "particle": "refinedstorage:block/disk_manipulator/disk_manipulator", + "north": "refinedstorage:block/disk_manipulator/disk_manipulator", + "east": "refinedstorage:block/side", + "south": "refinedstorage:block/side", + "west": "refinedstorage:block/side", + "up": "refinedstorage:block/side", + "down": "refinedstorage:block/side", + "cutout": "refinedstorage:block/disk_manipulator/cutouts/disconnected" } } diff --git a/src/main/resources/data/refinedstorage/loot_tables/blocks/disk_manipulator.json b/src/main/resources/data/refinedstorage/loot_tables/blocks/disk_manipulator.json new file mode 100644 index 000000000..eb1abf40e --- /dev/null +++ b/src/main/resources/data/refinedstorage/loot_tables/blocks/disk_manipulator.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "refinedstorage:disk_manipulator" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/refinedstorage/recipes/disk_manipulator.json b/src/main/resources/data/refinedstorage/recipes/disk_manipulator.json similarity index 80% rename from src/main/resources/assets/refinedstorage/recipes/disk_manipulator.json rename to src/main/resources/data/refinedstorage/recipes/disk_manipulator.json index c7789e875..e6c2ea727 100644 --- a/src/main/resources/assets/refinedstorage/recipes/disk_manipulator.json +++ b/src/main/resources/data/refinedstorage/recipes/disk_manipulator.json @@ -13,13 +13,13 @@ "item": "refinedstorage:storage_housing" }, "C": { - "item": "#construction_core" + "item": "refinedstorage:construction_core" }, "M": { "item": "refinedstorage:machine_casing" }, "D": { - "item": "#destruction_core" + "item": "refinedstorage:destruction_core" } }, "result": {