diff --git a/src/main/java/com/raoulvdberge/refinedstorage/ClientSetup.java b/src/main/java/com/raoulvdberge/refinedstorage/ClientSetup.java index 1e392a7a8..1ad73b44e 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/ClientSetup.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/ClientSetup.java @@ -134,6 +134,7 @@ public class ClientSetup { ScreenManager.registerFactory(RSContainers.STORAGE_MONITOR, StorageMonitorScreen::new); ClientRegistry.registerKeyBinding(RSKeyBindings.OPEN_WIRELESS_GRID); + ClientRegistry.registerKeyBinding(RSKeyBindings.OPEN_WIRELESS_FLUID_GRID); 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 84a9de971..e1854db2d 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/RS.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/RS.java @@ -8,6 +8,7 @@ import com.raoulvdberge.refinedstorage.apiimpl.API; import com.raoulvdberge.refinedstorage.apiimpl.network.NetworkListener; import com.raoulvdberge.refinedstorage.apiimpl.network.NetworkNodeListener; import com.raoulvdberge.refinedstorage.apiimpl.network.grid.factory.GridBlockGridFactory; +import com.raoulvdberge.refinedstorage.apiimpl.network.grid.factory.WirelessFluidGridGridFactory; 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; @@ -132,6 +133,7 @@ public final class RS { API.instance().getGridManager().add(GridBlockGridFactory.ID, new GridBlockGridFactory()); API.instance().getGridManager().add(WirelessGridGridFactory.ID, new WirelessGridGridFactory()); + API.instance().getGridManager().add(WirelessFluidGridGridFactory.ID, new WirelessFluidGridGridFactory()); API.instance().addExternalStorageProvider(StorageType.ITEM, new ItemExternalStorageProvider()); API.instance().addExternalStorageProvider(StorageType.FLUID, new FluidExternalStorageProvider()); @@ -331,6 +333,8 @@ public final class RS { e.getRegistry().register(new WirelessGridItem(WirelessGridItem.Type.NORMAL)); e.getRegistry().register(new WirelessGridItem(WirelessGridItem.Type.CREATIVE)); + e.getRegistry().register(new WirelessFluidGridItem(WirelessFluidGridItem.Type.NORMAL)); + e.getRegistry().register(new WirelessFluidGridItem(WirelessFluidGridItem.Type.CREATIVE)); } /* TODO diff --git a/src/main/java/com/raoulvdberge/refinedstorage/RSItems.java b/src/main/java/com/raoulvdberge/refinedstorage/RSItems.java index 455e30582..b8ca91f9d 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/RSItems.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/RSItems.java @@ -60,6 +60,10 @@ public final class RSItems { public static final WirelessGridItem WIRELESS_GRID = null; @ObjectHolder(RS.ID + ":creative_wireless_grid") public static final WirelessGridItem CREATIVE_WIRELESS_GRID = null; + @ObjectHolder(RS.ID + ":wireless_fluid_grid") + public static final WirelessFluidGridItem WIRELESS_FLUID_GRID = null; + @ObjectHolder(RS.ID + ":creative_wireless_fluid_grid") + public static final WirelessFluidGridItem CREATIVE_WIRELESS_FLUID_GRID = null; @ObjectHolder(RS.ID + ":1k_storage_part") public static final StoragePartItem ONE_K_STORAGE_PART = null; @ObjectHolder(RS.ID + ":4k_storage_part") @@ -97,6 +101,5 @@ public final class RSItems { @ObjectHolder(RS.ID + ":creative_fluid_storage_disk") public static final FluidStorageDiskItem CREATIVE_FLUID_STORAGE_DISK = null; - public static final ItemWirelessFluidGrid WIRELESS_FLUID_GRID = null; public static final ItemWirelessCraftingMonitor WIRELESS_CRAFTING_MONITOR = null; } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/RSKeyBindings.java b/src/main/java/com/raoulvdberge/refinedstorage/RSKeyBindings.java index fe27c85bc..4db1ca6aa 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/RSKeyBindings.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/RSKeyBindings.java @@ -8,12 +8,10 @@ import org.lwjgl.glfw.GLFW; public final class RSKeyBindings { /* - public static final KeyBinding OPEN_WIRELESS_FLUID_GRID = new KeyBinding("key.refinedstorage.openWirelessFluidGrid", KeyConflictContext.IN_GAME, 0, "Refined Storage"); public static final KeyBinding OPEN_PORTABLE_GRID = new KeyBinding("key.refinedstorage.openPortableGrid", KeyConflictContext.IN_GAME, 0, "Refined Storage"); public static final KeyBinding OPEN_WIRELESS_CRAFTING_MONITOR = new KeyBinding("key.refinedstorage.openWirelessCraftingMonitor", KeyConflictContext.IN_GAME, 0, "Refined Storage"); public static void init() { - ClientRegistry.registerKeyBinding(OPEN_WIRELESS_FLUID_GRID); ClientRegistry.registerKeyBinding(OPEN_PORTABLE_GRID); ClientRegistry.registerKeyBinding(OPEN_WIRELESS_CRAFTING_MONITOR); }*/ @@ -25,6 +23,13 @@ public final class RSKeyBindings { "Refined Storage" ); + public static final KeyBinding OPEN_WIRELESS_FLUID_GRID = new KeyBinding( + "key.refinedstorage.openWirelessFluidGrid", + KeyConflictContext.IN_GAME, + InputMappings.INPUT_INVALID, + "Refined Storage" + ); + public static final KeyBinding FOCUS_SEARCH_BAR = new KeyBinding( "key.refinedstorage.focusSearchBar", KeyConflictContext.GUI, diff --git a/src/main/java/com/raoulvdberge/refinedstorage/RSOldConfig.java b/src/main/java/com/raoulvdberge/refinedstorage/RSOldConfig.java index 3c10e15f8..794a4c3c6 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/RSOldConfig.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/RSOldConfig.java @@ -19,14 +19,6 @@ public class RSOldConfig { public int portableGridInsertUsage; //endregion - //region Wireless Fluid Grid - public boolean wirelessFluidGridUsesEnergy; - public int wirelessFluidGridCapacity; - public int wirelessFluidGridOpenUsage; - public int wirelessFluidGridExtractUsage; - public int wirelessFluidGridInsertUsage; - //endregion - //region Wireless Crafting Monitor public boolean wirelessCraftingMonitorUsesEnergy; public int wirelessCraftingMonitorCapacity; @@ -42,7 +34,6 @@ public class RSOldConfig { //region Categories private static final String ENERGY = "energy"; private static final String PORTABLE_GRID = "portableGrid"; - private static final String WIRELESS_FLUID_GRID = "wirelessFluidGrid"; private static final String WIRELESS_CRAFTING_MONITOR = "wirelessCraftingMonitor"; private static final String AUTOCRAFTING = "autocrafting"; //endregion @@ -66,14 +57,6 @@ public class RSOldConfig { portableGridExtractUsage = config.getInt("extract", PORTABLE_GRID, 3, 0, Integer.MAX_VALUE, "The energy used by the Portable Grid to extract items"); //endregion - //region Wireless Fluid Grid - wirelessFluidGridUsesEnergy = config.getBoolean("usesEnergy", WIRELESS_FLUID_GRID, true, "Whether the Fluid Wireless Grid uses energy"); - wirelessFluidGridCapacity = config.getInt("capacity", WIRELESS_FLUID_GRID, 3200, 0, Integer.MAX_VALUE, "The energy capacity of the Wireless Fluid Grid"); - wirelessFluidGridOpenUsage = config.getInt("open", WIRELESS_FLUID_GRID, 30, 0, Integer.MAX_VALUE, "The energy used by the Fluid Wireless Grid to open"); - wirelessFluidGridInsertUsage = config.getInt("insert", WIRELESS_FLUID_GRID, 3, 0, Integer.MAX_VALUE, "The energy used by the Wireless Fluid Grid to insert items"); - wirelessFluidGridExtractUsage = config.getInt("extract", WIRELESS_FLUID_GRID, 3, 0, Integer.MAX_VALUE, "The energy used by the Wireless Fluid Grid to extract items"); - //endregion - //region Wireless Crafting Monitor wirelessCraftingMonitorUsesEnergy = config.getBoolean("usesEnergy", WIRELESS_CRAFTING_MONITOR, true, "Whether the Wireless Crafting Monitor uses energy"); wirelessCraftingMonitorCapacity = config.getInt("capacity", WIRELESS_CRAFTING_MONITOR, 3200, 0, Integer.MAX_VALUE, "The energy capacity of the Wireless Crafting Monitor"); diff --git a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/grid/factory/WirelessFluidGridGridFactory.java b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/grid/factory/WirelessFluidGridGridFactory.java index 18981e5fd..eddb7177d 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/grid/factory/WirelessFluidGridGridFactory.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/grid/factory/WirelessFluidGridGridFactory.java @@ -1,5 +1,6 @@ package com.raoulvdberge.refinedstorage.apiimpl.network.grid.factory; +import com.raoulvdberge.refinedstorage.RS; import com.raoulvdberge.refinedstorage.api.network.grid.GridFactoryType; import com.raoulvdberge.refinedstorage.api.network.grid.IGrid; import com.raoulvdberge.refinedstorage.api.network.grid.IGridFactory; @@ -7,16 +8,19 @@ import com.raoulvdberge.refinedstorage.tile.grid.WirelessFluidGrid; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.ResourceLocation; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; import javax.annotation.Nullable; public class WirelessFluidGridGridFactory implements IGridFactory { + public static final ResourceLocation ID = new ResourceLocation(RS.ID, "wireless_fluid_grid"); + @Nullable @Override public IGrid createFromStack(PlayerEntity player, ItemStack stack) { - return new WirelessFluidGrid(stack); + return new WirelessFluidGrid(stack, player.getServer()); } @Nullable diff --git a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/grid/handler/FluidGridHandler.java b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/grid/handler/FluidGridHandler.java index 1ac173d06..08b120195 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/grid/handler/FluidGridHandler.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/grid/handler/FluidGridHandler.java @@ -1,5 +1,6 @@ package com.raoulvdberge.refinedstorage.apiimpl.network.grid.handler; +import com.raoulvdberge.refinedstorage.RS; import com.raoulvdberge.refinedstorage.api.autocrafting.ICraftingPattern; import com.raoulvdberge.refinedstorage.api.autocrafting.task.ICraftingTask; import com.raoulvdberge.refinedstorage.api.autocrafting.task.ICraftingTaskError; @@ -72,7 +73,7 @@ public class FluidGridHandler implements IFluidGridHandler { player.updateHeldItem(); } - // TODO network.getNetworkItemHandler().drainEnergy(player, RS.INSTANCE.config.wirelessFluidGridExtractUsage); + network.getNetworkItemManager().drainEnergy(player, RS.SERVER_CONFIG.getWirelessFluidGrid().getExtractUsage()); }); } } @@ -93,7 +94,7 @@ public class FluidGridHandler implements IFluidGridHandler { network.insertFluid(result.getValue(), result.getValue().getAmount(), Action.PERFORM); - // TODO network.getNetworkItemHandler().drainEnergy(player, RS.INSTANCE.config.wirelessFluidGridInsertUsage); + network.getNetworkItemManager().drainEnergy(player, RS.SERVER_CONFIG.getWirelessFluidGrid().getInsertUsage()); return result.getLeft(); } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/item/NetworkItemWirelessFluidGrid.java b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/item/WirelessFluidGridNetworkItem.java old mode 100755 new mode 100644 similarity index 59% rename from src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/item/NetworkItemWirelessFluidGrid.java rename to src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/item/WirelessFluidGridNetworkItem.java index 52da7fe36..555221334 --- a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/item/NetworkItemWirelessFluidGrid.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/item/WirelessFluidGridNetworkItem.java @@ -5,18 +5,22 @@ import com.raoulvdberge.refinedstorage.api.network.INetwork; import com.raoulvdberge.refinedstorage.api.network.item.INetworkItem; import com.raoulvdberge.refinedstorage.api.network.item.INetworkItemManager; import com.raoulvdberge.refinedstorage.api.network.security.Permission; +import com.raoulvdberge.refinedstorage.apiimpl.API; +import com.raoulvdberge.refinedstorage.apiimpl.network.grid.factory.WirelessFluidGridGridFactory; +import com.raoulvdberge.refinedstorage.item.WirelessFluidGridItem; import com.raoulvdberge.refinedstorage.util.WorldUtils; import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.entity.player.ServerPlayerEntity; import net.minecraft.item.ItemStack; import net.minecraftforge.energy.CapabilityEnergy; import net.minecraftforge.energy.IEnergyStorage; -public class NetworkItemWirelessFluidGrid implements INetworkItem { +public class WirelessFluidGridNetworkItem implements INetworkItem { private INetworkItemManager handler; private PlayerEntity player; private ItemStack stack; - public NetworkItemWirelessFluidGrid(INetworkItemManager handler, PlayerEntity player, ItemStack stack) { + public WirelessFluidGridNetworkItem(INetworkItemManager handler, PlayerEntity player, ItemStack stack) { this.handler = handler; this.player = player; this.stack = stack; @@ -31,7 +35,10 @@ public class NetworkItemWirelessFluidGrid implements INetworkItem { public boolean onOpen(INetwork network) { IEnergyStorage energy = stack.getCapability(CapabilityEnergy.ENERGY, null).orElse(null); - if (RS.INSTANCE.config.wirelessFluidGridUsesEnergy /* TODO && stack.getItemDamage() != ItemWirelessFluidGrid.TYPE_CREATIVE*/ && energy != null && energy.getEnergyStored() <= RS.INSTANCE.config.wirelessFluidGridOpenUsage) { + if (RS.SERVER_CONFIG.getWirelessFluidGrid().getUseEnergy() && + ((WirelessFluidGridItem) stack.getItem()).getType() != WirelessFluidGridItem.Type.CREATIVE && + energy != null && + energy.getEnergyStored() <= RS.SERVER_CONFIG.getWirelessFluidGrid().getOpenUsage()) { return false; } @@ -41,17 +48,17 @@ public class NetworkItemWirelessFluidGrid implements INetworkItem { return false; } - // TODO API.instance().getGridManager().openGrid(WirelessFluidGrid.ID, (ServerPlayerEntity) player, stack); + API.instance().getGridManager().openGrid(WirelessFluidGridGridFactory.ID, (ServerPlayerEntity) player, stack); - drainEnergy(RS.INSTANCE.config.wirelessFluidGridOpenUsage); + drainEnergy(RS.SERVER_CONFIG.getWirelessFluidGrid().getOpenUsage()); return true; } @Override public void drainEnergy(int energy) { - if (RS.INSTANCE.config.wirelessFluidGridUsesEnergy /* TODO && stack.getItemDamage() != ItemWirelessFluidGrid.TYPE_CREATIVE*/) { - stack.getCapability(CapabilityEnergy.ENERGY, null).ifPresent(energyStorage -> { + if (RS.SERVER_CONFIG.getWirelessFluidGrid().getUseEnergy() && ((WirelessFluidGridItem) stack.getItem()).getType() != WirelessFluidGridItem.Type.CREATIVE) { + stack.getCapability(CapabilityEnergy.ENERGY).ifPresent(energyStorage -> { energyStorage.extractEnergy(energy, false); if (energyStorage.getEnergyStored() <= 0) { diff --git a/src/main/java/com/raoulvdberge/refinedstorage/block/BlockBase.java b/src/main/java/com/raoulvdberge/refinedstorage/block/BlockBase.java index 0aa94c7d5..38d52574b 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/block/BlockBase.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/block/BlockBase.java @@ -2,11 +2,9 @@ package com.raoulvdberge.refinedstorage.block; import com.raoulvdberge.refinedstorage.block.info.BlockDirection; import com.raoulvdberge.refinedstorage.block.info.IBlockInfo; -import com.raoulvdberge.refinedstorage.item.blockitem.ItemBlockBase; import com.raoulvdberge.refinedstorage.render.collision.CollisionGroup; import net.minecraft.block.Block; import net.minecraft.block.BlockState; -import net.minecraft.item.Item; import net.minecraft.state.StateContainer; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.math.AxisAlignedBB; @@ -54,10 +52,6 @@ public abstract class BlockBase extends Block { } } - public Item createItem() { - return new ItemBlockBase(this); - } - @Override public final boolean hasTileEntity(BlockState state) { return info.hasTileEntity(); diff --git a/src/main/java/com/raoulvdberge/refinedstorage/config/ServerConfig.java b/src/main/java/com/raoulvdberge/refinedstorage/config/ServerConfig.java index 7264b4ded..7f0a3227a 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/config/ServerConfig.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/config/ServerConfig.java @@ -26,6 +26,7 @@ public class ServerConfig { private WirelessTransmitter wirelessTransmitter; private StorageMonitor storageMonitor; private WirelessGrid wirelessGrid; + private WirelessFluidGrid wirelessFluidGrid; public ServerConfig() { upgrades = new Upgrades(); @@ -48,6 +49,7 @@ public class ServerConfig { wirelessTransmitter = new WirelessTransmitter(); storageMonitor = new StorageMonitor(); wirelessGrid = new WirelessGrid(); + wirelessFluidGrid = new WirelessFluidGrid(); spec = builder.build(); } @@ -132,6 +134,10 @@ public class ServerConfig { return wirelessGrid; } + public WirelessFluidGrid getWirelessFluidGrid() { + return wirelessFluidGrid; + } + public ForgeConfigSpec getSpec() { return spec; } @@ -629,4 +635,44 @@ public class ServerConfig { return insertUsage.get(); } } + + public class WirelessFluidGrid { + private final ForgeConfigSpec.BooleanValue useEnergy; + private final ForgeConfigSpec.IntValue capacity; + private final ForgeConfigSpec.IntValue openUsage; + private final ForgeConfigSpec.IntValue extractUsage; + private final ForgeConfigSpec.IntValue insertUsage; + + public WirelessFluidGrid() { + builder.push("wirelessFluidGrid"); + + useEnergy = builder.comment("Whether the Wireless Fluid Grid uses energy").define("useEnergy", true); + capacity = builder.comment("The energy capacity of the Wireless Fluid Grid").defineInRange("capacity", 3200, 0, Integer.MAX_VALUE); + openUsage = builder.comment("The energy used by the Wireless Fluid Grid to open").defineInRange("openUsage", 30, 0, Integer.MAX_VALUE); + extractUsage = builder.comment("The energy used by the Wireless Fluid Grid to extract fluids").defineInRange("extractUsage", 5, 0, Integer.MAX_VALUE); + insertUsage = builder.comment("The energy used by the Wireless Fluid Grid to insert fluids").defineInRange("insertUsage", 5, 0, Integer.MAX_VALUE); + + builder.pop(); + } + + public boolean getUseEnergy() { + return useEnergy.get(); + } + + public int getCapacity() { + return capacity.get(); + } + + public int getOpenUsage() { + return openUsage.get(); + } + + public int getExtractUsage() { + return extractUsage.get(); + } + + public int getInsertUsage() { + return insertUsage.get(); + } + } } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/item/ItemWirelessFluidGrid.java b/src/main/java/com/raoulvdberge/refinedstorage/item/ItemWirelessFluidGrid.java deleted file mode 100755 index 4cd37e9ef..000000000 --- a/src/main/java/com/raoulvdberge/refinedstorage/item/ItemWirelessFluidGrid.java +++ /dev/null @@ -1,57 +0,0 @@ -package com.raoulvdberge.refinedstorage.item; - -import com.raoulvdberge.refinedstorage.api.network.item.INetworkItem; -import com.raoulvdberge.refinedstorage.api.network.item.INetworkItemManager; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.item.ItemStack; - -import javax.annotation.Nonnull; -import java.util.function.Supplier; - -public class ItemWirelessFluidGrid extends NetworkItem { - public ItemWirelessFluidGrid(Properties item, boolean creative, Supplier energyCapacity) { - super(item, creative, energyCapacity); - } - - @Nonnull - @Override - public INetworkItem provide(INetworkItemManager handler, PlayerEntity player, ItemStack stack) { - return null; - } -/* TODO - @Override - @SideOnly(Side.CLIENT) - public void registerModels(IModelRegistration modelRegistration) { - modelRegistration.setModel(this, 0, new ModelResourceLocation(info.getId(), "inventory")); - } - - @Override - @Nonnull - public INetworkItem provide(INetworkItemHandler handler, PlayerEntity player, ItemStack stack) { - return new NetworkItemWirelessFluidGrid(handler, player, stack); - } - - public static int getSortingType(ItemStack stack) { - return (stack.hasTagCompound() && stack.getTagCompound().hasKey(NetworkNodeGrid.NBT_SORTING_TYPE)) ? stack.getTagCompound().getInteger(NetworkNodeGrid.NBT_SORTING_TYPE) : IGrid.SORTING_TYPE_QUANTITY; - } - - public static int getSortingDirection(ItemStack stack) { - return (stack.hasTagCompound() && stack.getTagCompound().hasKey(NetworkNodeGrid.NBT_SORTING_DIRECTION)) ? stack.getTagCompound().getInteger(NetworkNodeGrid.NBT_SORTING_DIRECTION) : IGrid.SORTING_DIRECTION_DESCENDING; - } - - public static int getSearchBoxMode(ItemStack stack) { - return (stack.hasTagCompound() && stack.getTagCompound().hasKey(NetworkNodeGrid.NBT_SEARCH_BOX_MODE)) ? stack.getTagCompound().getInteger(NetworkNodeGrid.NBT_SEARCH_BOX_MODE) : IGrid.SEARCH_BOX_MODE_NORMAL; - } - - public static int getTabSelected(ItemStack stack) { - return (stack.hasTagCompound() && stack.getTagCompound().hasKey(NetworkNodeGrid.NBT_TAB_SELECTED)) ? stack.getTagCompound().getInteger(NetworkNodeGrid.NBT_TAB_SELECTED) : -1; - } - - public static int getTabPage(ItemStack stack) { - return (stack.hasTagCompound() && stack.getTagCompound().hasKey(NetworkNodeGrid.NBT_TAB_PAGE)) ? stack.getTagCompound().getInteger(NetworkNodeGrid.NBT_TAB_PAGE) : 0; - } - - public static int getSize(ItemStack stack) { - return (stack.hasTagCompound() && stack.getTagCompound().hasKey(NetworkNodeGrid.NBT_SIZE)) ? stack.getTagCompound().getInteger(NetworkNodeGrid.NBT_SIZE) : IGrid.SIZE_STRETCH; - }*/ -} diff --git a/src/main/java/com/raoulvdberge/refinedstorage/item/WirelessFluidGridItem.java b/src/main/java/com/raoulvdberge/refinedstorage/item/WirelessFluidGridItem.java new file mode 100644 index 000000000..b2d97050a --- /dev/null +++ b/src/main/java/com/raoulvdberge/refinedstorage/item/WirelessFluidGridItem.java @@ -0,0 +1,64 @@ +package com.raoulvdberge.refinedstorage.item; + +import com.raoulvdberge.refinedstorage.RS; +import com.raoulvdberge.refinedstorage.api.network.grid.IGrid; +import com.raoulvdberge.refinedstorage.api.network.item.INetworkItem; +import com.raoulvdberge.refinedstorage.api.network.item.INetworkItemManager; +import com.raoulvdberge.refinedstorage.apiimpl.network.item.WirelessFluidGridNetworkItem; +import com.raoulvdberge.refinedstorage.apiimpl.network.node.GridNetworkNode; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; + +import javax.annotation.Nonnull; + +public class WirelessFluidGridItem extends NetworkItem { + public enum Type { + NORMAL, + CREATIVE + } + + private final Type type; + + public WirelessFluidGridItem(Type type) { + super(new Item.Properties().group(RS.MAIN_GROUP).maxStackSize(1), type == Type.CREATIVE, () -> RS.SERVER_CONFIG.getWirelessFluidGrid().getCapacity()); + + this.type = type; + + this.setRegistryName(RS.ID, (type == Type.CREATIVE ? "creative_" : "") + "wireless_fluid_grid"); + } + + public Type getType() { + return type; + } + + @Nonnull + @Override + public INetworkItem provide(INetworkItemManager handler, PlayerEntity player, ItemStack stack) { + return new WirelessFluidGridNetworkItem(handler, player, stack); + } + + public static int getSortingType(ItemStack stack) { + return (stack.hasTag() && stack.getTag().contains(GridNetworkNode.NBT_SORTING_TYPE)) ? stack.getTag().getInt(GridNetworkNode.NBT_SORTING_TYPE) : IGrid.SORTING_TYPE_QUANTITY; + } + + public static int getSortingDirection(ItemStack stack) { + return (stack.hasTag() && stack.getTag().contains(GridNetworkNode.NBT_SORTING_DIRECTION)) ? stack.getTag().getInt(GridNetworkNode.NBT_SORTING_DIRECTION) : IGrid.SORTING_DIRECTION_DESCENDING; + } + + public static int getSearchBoxMode(ItemStack stack) { + return (stack.hasTag() && stack.getTag().contains(GridNetworkNode.NBT_SEARCH_BOX_MODE)) ? stack.getTag().getInt(GridNetworkNode.NBT_SEARCH_BOX_MODE) : IGrid.SEARCH_BOX_MODE_NORMAL; + } + + public static int getTabSelected(ItemStack stack) { + return (stack.hasTag() && stack.getTag().contains(GridNetworkNode.NBT_TAB_SELECTED)) ? stack.getTag().getInt(GridNetworkNode.NBT_TAB_SELECTED) : -1; + } + + public static int getTabPage(ItemStack stack) { + return (stack.hasTag() && stack.getTag().contains(GridNetworkNode.NBT_TAB_PAGE)) ? stack.getTag().getInt(GridNetworkNode.NBT_TAB_PAGE) : 0; + } + + public static int getSize(ItemStack stack) { + return (stack.hasTag() && stack.getTag().contains(GridNetworkNode.NBT_SIZE)) ? stack.getTag().getInt(GridNetworkNode.NBT_SIZE) : IGrid.SIZE_STRETCH; + } +} diff --git a/src/main/java/com/raoulvdberge/refinedstorage/item/blockitem/ItemBlockBase.java b/src/main/java/com/raoulvdberge/refinedstorage/item/blockitem/ItemBlockBase.java deleted file mode 100644 index 35f419909..000000000 --- a/src/main/java/com/raoulvdberge/refinedstorage/item/blockitem/ItemBlockBase.java +++ /dev/null @@ -1,32 +0,0 @@ -package com.raoulvdberge.refinedstorage.item.blockitem; - -import com.raoulvdberge.refinedstorage.block.BlockBase; -import net.minecraft.item.BlockItem; -import net.minecraft.item.Item; - -public class ItemBlockBase extends BlockItem { - private BlockBase block; - - public ItemBlockBase(BlockBase block) { - super(block, new Item.Properties()); - - this.block = block; - - setRegistryName(block.getInfo().getId()); - } -/* TODO - @Override - public boolean placeBlockAt(ItemStack stack, PlayerEntity player, World world, BlockPos pos, EnumFacing side, float hitX, float hitY, float hitZ, IBlockState newState) { - boolean result = super.placeBlockAt(stack, player, world, pos, side, hitX, hitY, hitZ, newState); - - if (result && block.getDirection() != null) { - TileEntity tile = world.getTileEntity(pos); - - if (tile instanceof TileBase) { - ((TileBase) tile).setDirection(block.getDirection().getFrom(side, pos, player)); - } - } - - return result; - }*/ -} diff --git a/src/main/java/com/raoulvdberge/refinedstorage/item/blockitem/ItemBlockEnergyItem.java b/src/main/java/com/raoulvdberge/refinedstorage/item/blockitem/ItemBlockEnergyItem.java deleted file mode 100644 index 6d329480a..000000000 --- a/src/main/java/com/raoulvdberge/refinedstorage/item/blockitem/ItemBlockEnergyItem.java +++ /dev/null @@ -1,91 +0,0 @@ -package com.raoulvdberge.refinedstorage.item.blockitem; - -import com.raoulvdberge.refinedstorage.block.BlockBase; -import com.raoulvdberge.refinedstorage.item.capabilityprovider.EnergyCapabilityProvider; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.CompoundNBT; -import net.minecraftforge.common.capabilities.ICapabilityProvider; - -public abstract class ItemBlockEnergyItem extends ItemBlockBase { - public static final int TYPE_NORMAL = 0; - public static final int TYPE_CREATIVE = 1; - - private int energyCapacity; - - public ItemBlockEnergyItem(BlockBase block, int energyCapacity) { - super(block); - - this.energyCapacity = energyCapacity; - - //setMaxDamage(energyCapacity); - //setMaxStackSize(1); - } - - @Override - public ICapabilityProvider initCapabilities(ItemStack stack, CompoundNBT tag) { - return new EnergyCapabilityProvider(stack, energyCapacity); - } -/* TODO - @Override - public boolean isDamageable() { - return true; - } - - @Override - public boolean isRepairable() { - return false; - } - - @Override - public double getDurabilityForDisplay(ItemStack stack) { - IEnergyStorage energy = stack.getCapability(CapabilityEnergy.ENERGY, null); - - return 1D - ((double) energy.getEnergyStored() / (double) energy.getMaxEnergyStored()); - } - - @Override - public int getRGBDurabilityForDisplay(ItemStack stack) { - IEnergyStorage energy = stack.getCapability(CapabilityEnergy.ENERGY, null); - - return MathHelper.hsvToRGB(Math.max(0.0F, (float) energy.getEnergyStored() / (float) energy.getMaxEnergyStored()) / 3.0F, 1.0F, 1.0F); - } - - @Override - public boolean isDamaged(ItemStack stack) { - return stack.getItemDamage() != TYPE_CREATIVE; - } - - @Override - public void setDamage(ItemStack stack, int damage) { - // NO OP - } - - @Override - public void getSubItems(CreativeTabs tab, NonNullList items) { - if (!isInCreativeTab(tab)) { - return; - } - - items.add(new ItemStack(this, 1, TYPE_NORMAL)); - - ItemStack fullyCharged = new ItemStack(this, 1, TYPE_NORMAL); - - IEnergyStorage energy = fullyCharged.getCapability(CapabilityEnergy.ENERGY, null); - energy.receiveEnergy(energy.getMaxEnergyStored(), false); - - items.add(fullyCharged); - - items.add(new ItemStack(this, 1, TYPE_CREATIVE)); - } - - @Override - public void addInformation(ItemStack stack, @Nullable World world, List tooltip, ITooltipFlag flag) { - super.addInformation(stack, world, tooltip, flag); - - if (stack.getItemDamage() != TYPE_CREATIVE) { - IEnergyStorage energy = stack.getCapability(CapabilityEnergy.ENERGY, null); - - tooltip.add(I18n.format("misc.refinedstorage.energy_stored", energy.getEnergyStored(), energy.getMaxEnergyStored())); - } - }*/ -} diff --git a/src/main/java/com/raoulvdberge/refinedstorage/item/blockitem/ItemBlockPortableGrid.java b/src/main/java/com/raoulvdberge/refinedstorage/item/blockitem/ItemBlockPortableGrid.java index 1b8b0cce2..26c922b98 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/item/blockitem/ItemBlockPortableGrid.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/item/blockitem/ItemBlockPortableGrid.java @@ -1,11 +1,10 @@ package com.raoulvdberge.refinedstorage.item.blockitem; -import com.raoulvdberge.refinedstorage.RS; -import com.raoulvdberge.refinedstorage.block.BlockPortableGrid; +import com.raoulvdberge.refinedstorage.block.BaseBlock; -public class ItemBlockPortableGrid extends ItemBlockEnergyItem { - public ItemBlockPortableGrid(BlockPortableGrid block) { - super(block, RS.INSTANCE.config.portableGridCapacity); +public class ItemBlockPortableGrid extends BaseBlockItem { + public ItemBlockPortableGrid(BaseBlock block, Properties builder) { + super(block, builder); } /* TODO @Override diff --git a/src/main/java/com/raoulvdberge/refinedstorage/network/MessageWirelessFluidGridSettingsUpdate.java.off b/src/main/java/com/raoulvdberge/refinedstorage/network/MessageWirelessFluidGridSettingsUpdate.java.off deleted file mode 100644 index ebce518e8..000000000 --- a/src/main/java/com/raoulvdberge/refinedstorage/network/MessageWirelessFluidGridSettingsUpdate.java.off +++ /dev/null @@ -1,81 +0,0 @@ -package com.raoulvdberge.refinedstorage.network; - -import com.raoulvdberge.refinedstorage.api.network.grid.IGrid; -import com.raoulvdberge.refinedstorage.apiimpl.network.node.NetworkNodeGrid; -import com.raoulvdberge.refinedstorage.container.GridContainer; -import com.raoulvdberge.refinedstorage.tile.grid.WirelessFluidGrid; -import io.netty.buffer.ByteBuf; -import net.minecraft.entity.player.ServerPlayerEntity; -import net.minecraft.item.ItemStack; -import net.minecraftforge.fml.common.network.simpleimpl.IMessage; - -public class MessageWirelessFluidGridSettingsUpdate extends MessageHandlerPlayerToServer implements IMessage { - private int sortingDirection; - private int sortingType; - private int searchBoxMode; - private int size; - private int tabSelected; - private int tabPage; - - public MessageWirelessFluidGridSettingsUpdate() { - } - - public MessageWirelessFluidGridSettingsUpdate(int sortingDirection, int sortingType, int searchBoxMode, int size, int tabSelected, int tabPage) { - this.sortingDirection = sortingDirection; - this.sortingType = sortingType; - this.searchBoxMode = searchBoxMode; - this.size = size; - this.tabSelected = tabSelected; - this.tabPage = tabPage; - } - - @Override - public void fromBytes(ByteBuf buf) { - sortingDirection = buf.readInt(); - sortingType = buf.readInt(); - searchBoxMode = buf.readInt(); - size = buf.readInt(); - tabSelected = buf.readInt(); - tabPage = buf.readInt(); - } - - @Override - public void toBytes(ByteBuf buf) { - buf.writeInt(sortingDirection); - buf.writeInt(sortingType); - buf.writeInt(searchBoxMode); - buf.writeInt(size); - buf.writeInt(tabSelected); - buf.writeInt(tabPage); - } - - @Override - public void handle(MessageWirelessFluidGridSettingsUpdate message, ServerPlayerEntity player) { - if (player.openContainer instanceof ContainerGrid) { - IGrid grid = ((ContainerGrid) player.openContainer).getGrid(); - - if (grid instanceof WirelessFluidGrid) { - ItemStack stack = ((WirelessFluidGrid) grid).getStack(); - - if (IGrid.isValidSortingDirection(message.sortingDirection)) { - stack.getTagCompound().putInt(NetworkNodeGrid.NBT_SORTING_DIRECTION, message.sortingDirection); - } - - if (IGrid.isValidSortingType(message.sortingType)) { - stack.getTagCompound().putInt(NetworkNodeGrid.NBT_SORTING_TYPE, message.sortingType); - } - - if (IGrid.isValidSearchBoxMode(message.searchBoxMode)) { - stack.getTagCompound().putInt(NetworkNodeGrid.NBT_SEARCH_BOX_MODE, message.searchBoxMode); - } - - if (IGrid.isValidSize(message.size)) { - stack.getTagCompound().putInt(NetworkNodeGrid.NBT_SIZE, message.size); - } - - stack.getTagCompound().putInt(NetworkNodeGrid.NBT_TAB_SELECTED, message.tabSelected); - stack.getTagCompound().putInt(NetworkNodeGrid.NBT_TAB_PAGE, message.tabPage); - } - } - } -} diff --git a/src/main/java/com/raoulvdberge/refinedstorage/network/NetworkHandler.java b/src/main/java/com/raoulvdberge/refinedstorage/network/NetworkHandler.java index 23b8c6aa1..7bdc04a39 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/network/NetworkHandler.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/network/NetworkHandler.java @@ -46,8 +46,9 @@ public class NetworkHandler { handler.registerMessage(id++, GridTransferMessage.class, GridTransferMessage::encode, GridTransferMessage::decode, GridTransferMessage::handle); handler.registerMessage(id++, GridProcessingTransferMessage.class, GridProcessingTransferMessage::encode, GridProcessingTransferMessage::decode, GridProcessingTransferMessage::handle); handler.registerMessage(id++, SecurityManagerUpdateMessage.class, SecurityManagerUpdateMessage::encode, SecurityManagerUpdateMessage::decode, SecurityManagerUpdateMessage::handle); - handler.registerMessage(id++, GridSettingsUpdateMessage.class, GridSettingsUpdateMessage::encode, GridSettingsUpdateMessage::decode, GridSettingsUpdateMessage::handle); + handler.registerMessage(id++, WirelessGridSettingsUpdateMessage.class, WirelessGridSettingsUpdateMessage::encode, WirelessGridSettingsUpdateMessage::decode, WirelessGridSettingsUpdateMessage::handle); handler.registerMessage(id++, OpenNetworkItemMessage.class, OpenNetworkItemMessage::encode, OpenNetworkItemMessage::decode, OpenNetworkItemMessage::handle); + handler.registerMessage(id++, WirelessFluidGridSettingsUpdateMessage.class, WirelessFluidGridSettingsUpdateMessage::encode, WirelessFluidGridSettingsUpdateMessage::decode, WirelessFluidGridSettingsUpdateMessage::handle); } public void sendToServer(Object message) { diff --git a/src/main/java/com/raoulvdberge/refinedstorage/network/grid/WirelessFluidGridSettingsUpdateMessage.java b/src/main/java/com/raoulvdberge/refinedstorage/network/grid/WirelessFluidGridSettingsUpdateMessage.java new file mode 100644 index 000000000..dc291a97a --- /dev/null +++ b/src/main/java/com/raoulvdberge/refinedstorage/network/grid/WirelessFluidGridSettingsUpdateMessage.java @@ -0,0 +1,87 @@ +package com.raoulvdberge.refinedstorage.network.grid; + +import com.raoulvdberge.refinedstorage.api.network.grid.IGrid; +import com.raoulvdberge.refinedstorage.apiimpl.network.node.GridNetworkNode; +import com.raoulvdberge.refinedstorage.container.GridContainer; +import com.raoulvdberge.refinedstorage.tile.grid.WirelessFluidGrid; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.item.ItemStack; +import net.minecraft.network.PacketBuffer; +import net.minecraftforge.fml.network.NetworkEvent; + +import java.util.function.Supplier; + +public class WirelessFluidGridSettingsUpdateMessage { + private int sortingDirection; + private int sortingType; + private int searchBoxMode; + private int size; + private int tabSelected; + private int tabPage; + + public WirelessFluidGridSettingsUpdateMessage(int sortingDirection, int sortingType, int searchBoxMode, int size, int tabSelected, int tabPage) { + this.sortingDirection = sortingDirection; + this.sortingType = sortingType; + this.searchBoxMode = searchBoxMode; + this.size = size; + this.tabSelected = tabSelected; + this.tabPage = tabPage; + } + + public static WirelessFluidGridSettingsUpdateMessage decode(PacketBuffer buf) { + return new WirelessFluidGridSettingsUpdateMessage( + buf.readInt(), + buf.readInt(), + buf.readInt(), + buf.readInt(), + buf.readInt(), + buf.readInt() + ); + } + + public static void encode(WirelessFluidGridSettingsUpdateMessage message, PacketBuffer buf) { + buf.writeInt(message.sortingDirection); + buf.writeInt(message.sortingType); + buf.writeInt(message.searchBoxMode); + buf.writeInt(message.size); + buf.writeInt(message.tabSelected); + buf.writeInt(message.tabPage); + } + + public static void handle(WirelessFluidGridSettingsUpdateMessage message, Supplier ctx) { + PlayerEntity player = ctx.get().getSender(); + + if (player != null) { + ctx.get().enqueueWork(() -> { + if (player.openContainer instanceof GridContainer) { + IGrid grid = ((GridContainer) player.openContainer).getGrid(); + + if (grid instanceof WirelessFluidGrid) { + ItemStack stack = ((WirelessFluidGrid) grid).getStack(); + + if (IGrid.isValidSortingDirection(message.sortingDirection)) { + stack.getTag().putInt(GridNetworkNode.NBT_SORTING_DIRECTION, message.sortingDirection); + } + + if (IGrid.isValidSortingType(message.sortingType)) { + stack.getTag().putInt(GridNetworkNode.NBT_SORTING_TYPE, message.sortingType); + } + + if (IGrid.isValidSearchBoxMode(message.searchBoxMode)) { + stack.getTag().putInt(GridNetworkNode.NBT_SEARCH_BOX_MODE, message.searchBoxMode); + } + + if (IGrid.isValidSize(message.size)) { + stack.getTag().putInt(GridNetworkNode.NBT_SIZE, message.size); + } + + stack.getTag().putInt(GridNetworkNode.NBT_TAB_SELECTED, message.tabSelected); + stack.getTag().putInt(GridNetworkNode.NBT_TAB_PAGE, message.tabPage); + } + } + }); + } + + ctx.get().setPacketHandled(true); + } +} diff --git a/src/main/java/com/raoulvdberge/refinedstorage/network/grid/GridSettingsUpdateMessage.java b/src/main/java/com/raoulvdberge/refinedstorage/network/grid/WirelessGridSettingsUpdateMessage.java similarity index 85% rename from src/main/java/com/raoulvdberge/refinedstorage/network/grid/GridSettingsUpdateMessage.java rename to src/main/java/com/raoulvdberge/refinedstorage/network/grid/WirelessGridSettingsUpdateMessage.java index f7ce3fe43..542b6d74e 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/network/grid/GridSettingsUpdateMessage.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/network/grid/WirelessGridSettingsUpdateMessage.java @@ -13,7 +13,7 @@ import net.minecraftforge.fml.network.NetworkEvent; import java.util.function.Supplier; -public class GridSettingsUpdateMessage { +public class WirelessGridSettingsUpdateMessage { private int viewType; private int sortingDirection; private int sortingType; @@ -22,7 +22,7 @@ public class GridSettingsUpdateMessage { private int tabSelected; private int tabPage; - public GridSettingsUpdateMessage(int viewType, int sortingDirection, int sortingType, int searchBoxMode, int size, int tabSelected, int tabPage) { + public WirelessGridSettingsUpdateMessage(int viewType, int sortingDirection, int sortingType, int searchBoxMode, int size, int tabSelected, int tabPage) { this.viewType = viewType; this.sortingDirection = sortingDirection; this.sortingType = sortingType; @@ -32,8 +32,8 @@ public class GridSettingsUpdateMessage { this.tabPage = tabPage; } - public static GridSettingsUpdateMessage decode(PacketBuffer buf) { - return new GridSettingsUpdateMessage( + public static WirelessGridSettingsUpdateMessage decode(PacketBuffer buf) { + return new WirelessGridSettingsUpdateMessage( buf.readInt(), buf.readInt(), buf.readInt(), @@ -44,7 +44,7 @@ public class GridSettingsUpdateMessage { ); } - public static void encode(GridSettingsUpdateMessage message, PacketBuffer buf) { + public static void encode(WirelessGridSettingsUpdateMessage message, PacketBuffer buf) { buf.writeInt(message.viewType); buf.writeInt(message.sortingDirection); buf.writeInt(message.sortingType); @@ -54,7 +54,7 @@ public class GridSettingsUpdateMessage { buf.writeInt(message.tabPage); } - public static void handle(GridSettingsUpdateMessage message, Supplier ctx) { + public static void handle(WirelessGridSettingsUpdateMessage message, Supplier ctx) { PlayerEntity player = ctx.get().getSender(); if (player != null) { @@ -62,6 +62,7 @@ public class GridSettingsUpdateMessage { if (player.openContainer instanceof GridContainer) { IGrid grid = ((GridContainer) player.openContainer).getGrid(); + // TODO Duplicate for portable grid. if (grid instanceof WirelessGrid || grid instanceof PortableGrid) { ItemStack stack = grid instanceof WirelessGrid ? ((WirelessGrid) grid).getStack() : ((PortableGrid) grid).getStack(); diff --git a/src/main/java/com/raoulvdberge/refinedstorage/screen/KeyInputListener.java b/src/main/java/com/raoulvdberge/refinedstorage/screen/KeyInputListener.java index 180a304eb..6fad686bd 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/screen/KeyInputListener.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/screen/KeyInputListener.java @@ -26,9 +26,9 @@ public class KeyInputListener { if (RSKeyBindings.OPEN_WIRELESS_GRID.isKeyDown()) { findAndOpen(inv, (error) -> Minecraft.getInstance().player.sendMessage(error), RSItems.WIRELESS_GRID, RSItems.CREATIVE_WIRELESS_GRID); - }/* TODO else if (RSKeyBindings.OPEN_WIRELESS_FLUID_GRID.isKeyDown()) { - findAndOpen(inv, RSItems.WIRELESS_FLUID_GRID); - } else if (RSKeyBindings.OPEN_PORTABLE_GRID.isKeyDown()) { + } else if (RSKeyBindings.OPEN_WIRELESS_FLUID_GRID.isKeyDown()) { + findAndOpen(inv, (error) -> Minecraft.getInstance().player.sendMessage(error), RSItems.WIRELESS_FLUID_GRID, RSItems.CREATIVE_WIRELESS_FLUID_GRID); + }/* TODO else if (RSKeyBindings.OPEN_PORTABLE_GRID.isKeyDown()) { findAndOpen(inv, Item.getItemFromBlock(RSBlocks.PORTABLE_GRID)); } else if (RSKeyBindings.OPEN_WIRELESS_CRAFTING_MONITOR.isKeyDown()) { findAndOpen(inv, RSItems.WIRELESS_CRAFTING_MONITOR); diff --git a/src/main/java/com/raoulvdberge/refinedstorage/tile/grid/WirelessFluidGrid.java b/src/main/java/com/raoulvdberge/refinedstorage/tile/grid/WirelessFluidGrid.java index 8f6febcdb..36849e87d 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/tile/grid/WirelessFluidGrid.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/tile/grid/WirelessFluidGrid.java @@ -1,29 +1,36 @@ package com.raoulvdberge.refinedstorage.tile.grid; +import com.raoulvdberge.refinedstorage.RS; import com.raoulvdberge.refinedstorage.api.network.INetwork; import com.raoulvdberge.refinedstorage.api.network.grid.*; import com.raoulvdberge.refinedstorage.api.network.grid.handler.IFluidGridHandler; import com.raoulvdberge.refinedstorage.api.network.grid.handler.IItemGridHandler; +import com.raoulvdberge.refinedstorage.api.network.node.INetworkNodeProxy; import com.raoulvdberge.refinedstorage.api.storage.cache.IStorageCache; import com.raoulvdberge.refinedstorage.api.storage.cache.IStorageCacheListener; import com.raoulvdberge.refinedstorage.api.util.IFilter; import com.raoulvdberge.refinedstorage.apiimpl.storage.cache.listener.FluidGridStorageCacheListener; +import com.raoulvdberge.refinedstorage.capability.NetworkNodeProxyCapability; import com.raoulvdberge.refinedstorage.inventory.item.FilterItemHandler; +import com.raoulvdberge.refinedstorage.item.WirelessFluidGridItem; +import com.raoulvdberge.refinedstorage.network.grid.WirelessFluidGridSettingsUpdateMessage; import com.raoulvdberge.refinedstorage.screen.BaseScreen; import com.raoulvdberge.refinedstorage.screen.grid.GridScreen; import com.raoulvdberge.refinedstorage.util.StackUtils; -import net.minecraft.client.Minecraft; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.entity.player.ServerPlayerEntity; import net.minecraft.inventory.CraftResultInventory; import net.minecraft.inventory.CraftingInventory; import net.minecraft.item.ItemStack; import net.minecraft.nbt.CompoundNBT; +import net.minecraft.server.MinecraftServer; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.math.BlockPos; import net.minecraft.util.text.ITextComponent; import net.minecraft.util.text.TranslationTextComponent; import net.minecraft.world.World; +import net.minecraft.world.dimension.DimensionType; +import net.minecraftforge.common.DimensionManager; import net.minecraftforge.items.IItemHandlerModifiable; import javax.annotation.Nullable; @@ -31,12 +38,11 @@ import java.util.ArrayList; import java.util.List; public class WirelessFluidGrid implements INetworkAwareGrid { - public static int ID; - private ItemStack stack; - - private int networkDimension; - private BlockPos network; + @Nullable + private final MinecraftServer server; + private final DimensionType nodeDimension; + private final BlockPos nodePos; private int sortingType; private int sortingDirection; @@ -56,18 +62,18 @@ public class WirelessFluidGrid implements INetworkAwareGrid { StackUtils.writeItems(handler, 0, stack.getTag()); })); - public WirelessFluidGrid(ItemStack stack) { - /* TODO this.networkDimension = ItemWirelessFluidGrid.getDimensionId(stack); - this.network = new BlockPos(ItemWirelessFluidGrid.getX(stack), ItemWirelessFluidGrid.getY(stack), ItemWirelessFluidGrid.getZ(stack)); - + public WirelessFluidGrid(ItemStack stack, @Nullable MinecraftServer server) { this.stack = stack; + this.server = server; + this.nodeDimension = WirelessFluidGridItem.getDimension(stack); + this.nodePos = new BlockPos(WirelessFluidGridItem.getX(stack), WirelessFluidGridItem.getY(stack), WirelessFluidGridItem.getZ(stack)); - this.sortingType = ItemWirelessFluidGrid.getSortingType(stack); - this.sortingDirection = ItemWirelessFluidGrid.getSortingDirection(stack); - this.searchBoxMode = ItemWirelessFluidGrid.getSearchBoxMode(stack); - this.tabSelected = ItemWirelessFluidGrid.getTabSelected(stack); - this.tabPage = ItemWirelessFluidGrid.getTabPage(stack); - this.size = ItemWirelessFluidGrid.getSize(stack);*/ + this.sortingType = WirelessFluidGridItem.getSortingType(stack); + this.sortingDirection = WirelessFluidGridItem.getSortingDirection(stack); + this.searchBoxMode = WirelessFluidGridItem.getSearchBoxMode(stack); + this.tabSelected = WirelessFluidGridItem.getTabSelected(stack); + this.tabPage = WirelessFluidGridItem.getTabPage(stack); + this.size = WirelessFluidGridItem.getSize(stack); if (stack.hasTag()) { StackUtils.readItems(filter, 0, stack.getTag()); @@ -86,13 +92,18 @@ public class WirelessFluidGrid implements INetworkAwareGrid { @Override @Nullable public INetwork getNetwork() { -// TODO World world = DimensionManager.getWorld(networkDimension); - World world = null; + World world = DimensionManager.getWorld(server, nodeDimension, true, true); if (world != null) { - TileEntity tile = world.getTileEntity(network); + TileEntity tile = world.getTileEntity(nodePos); - return tile instanceof INetwork ? (INetwork) tile : null; + if (tile != null) { + INetworkNodeProxy proxy = tile.getCapability(NetworkNodeProxyCapability.NETWORK_NODE_PROXY_CAPABILITY).orElse(null); + + if (proxy != null) { + return proxy.getNode().getNetwork(); + } + } } return null; @@ -187,7 +198,7 @@ public class WirelessFluidGrid implements INetworkAwareGrid { @Override public void onSortingTypeChanged(int type) { - // TODO RS.INSTANCE.network.sendToServer(new MessageWirelessFluidGridSettingsUpdate(getSortingDirection(), type, getSearchBoxMode(), getSize(), getTabSelected(), getTabPage())); + RS.NETWORK_HANDLER.sendToServer(new WirelessFluidGridSettingsUpdateMessage(getSortingDirection(), type, getSearchBoxMode(), getSize(), getTabSelected(), getTabPage())); this.sortingType = type; @@ -196,7 +207,7 @@ public class WirelessFluidGrid implements INetworkAwareGrid { @Override public void onSortingDirectionChanged(int direction) { - // TODO RS.INSTANCE.network.sendToServer(new MessageWirelessFluidGridSettingsUpdate(direction, getSortingType(), getSearchBoxMode(), getSize(), getTabSelected(), getTabPage())); + RS.NETWORK_HANDLER.sendToServer(new WirelessFluidGridSettingsUpdateMessage(direction, getSortingType(), getSearchBoxMode(), getSize(), getTabSelected(), getTabPage())); this.sortingDirection = direction; @@ -205,27 +216,25 @@ public class WirelessFluidGrid implements INetworkAwareGrid { @Override public void onSearchBoxModeChanged(int searchBoxMode) { - // TODO RS.INSTANCE.network.sendToServer(new MessageWirelessFluidGridSettingsUpdate(getSortingDirection(), getSortingType(), searchBoxMode, getSize(), getTabSelected(), getTabPage())); + RS.NETWORK_HANDLER.sendToServer(new WirelessFluidGridSettingsUpdateMessage(getSortingDirection(), getSortingType(), searchBoxMode, getSize(), getTabSelected(), getTabPage())); this.searchBoxMode = searchBoxMode; } @Override public void onSizeChanged(int size) { - // TODO RS.INSTANCE.network.sendToServer(new MessageWirelessFluidGridSettingsUpdate(getSortingDirection(), getSortingType(), getSearchBoxMode(), size, getTabSelected(), getTabPage())); + RS.NETWORK_HANDLER.sendToServer(new WirelessFluidGridSettingsUpdateMessage(getSortingDirection(), getSortingType(), getSearchBoxMode(), size, getTabSelected(), getTabPage())); this.size = size; - if (Minecraft.getInstance().currentScreen != null) { - // TODO Minecraft.getInstance().currentScreen.init(); - } + BaseScreen.executeLater(GridScreen.class, BaseScreen::init); } @Override public void onTabSelectionChanged(int tab) { this.tabSelected = tab == tabSelected ? -1 : tab; - // TODO RS.INSTANCE.network.sendToServer(new MessageWirelessFluidGridSettingsUpdate(getSortingDirection(), getSortingType(), getSearchBoxMode(), getSize(), tabSelected, getTabPage())); + RS.NETWORK_HANDLER.sendToServer(new WirelessFluidGridSettingsUpdateMessage(getSortingDirection(), getSortingType(), getSearchBoxMode(), getSize(), tabSelected, getTabPage())); BaseScreen.executeLater(GridScreen.class, grid -> grid.getView().sort()); } @@ -233,7 +242,7 @@ public class WirelessFluidGrid implements INetworkAwareGrid { @Override public void onTabPageChanged(int page) { if (page >= 0 && page <= getTotalTabPages()) { - // TODO RS.INSTANCE.network.sendToServer(new MessageWirelessFluidGridSettingsUpdate(getSortingDirection(), getSortingType(), getSearchBoxMode(), getSize(), getTabSelected(), page)); + RS.NETWORK_HANDLER.sendToServer(new WirelessFluidGridSettingsUpdateMessage(getSortingDirection(), getSortingType(), getSearchBoxMode(), getSize(), getTabSelected(), page)); this.tabPage = page; } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/tile/grid/WirelessGrid.java b/src/main/java/com/raoulvdberge/refinedstorage/tile/grid/WirelessGrid.java index 1fa261a3c..592e46bdd 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/tile/grid/WirelessGrid.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/tile/grid/WirelessGrid.java @@ -13,7 +13,7 @@ import com.raoulvdberge.refinedstorage.apiimpl.storage.cache.listener.ItemGridSt import com.raoulvdberge.refinedstorage.capability.NetworkNodeProxyCapability; import com.raoulvdberge.refinedstorage.inventory.item.FilterItemHandler; import com.raoulvdberge.refinedstorage.item.WirelessGridItem; -import com.raoulvdberge.refinedstorage.network.grid.GridSettingsUpdateMessage; +import com.raoulvdberge.refinedstorage.network.grid.WirelessGridSettingsUpdateMessage; import com.raoulvdberge.refinedstorage.screen.BaseScreen; import com.raoulvdberge.refinedstorage.screen.grid.GridScreen; import com.raoulvdberge.refinedstorage.util.StackUtils; @@ -39,6 +39,7 @@ import java.util.List; public class WirelessGrid implements INetworkAwareGrid { private ItemStack stack; + @Nullable private final MinecraftServer server; private final DimensionType nodeDimension; private final BlockPos nodePos; @@ -195,7 +196,7 @@ public class WirelessGrid implements INetworkAwareGrid { @Override public void onViewTypeChanged(int type) { - RS.NETWORK_HANDLER.sendToServer(new GridSettingsUpdateMessage(type, getSortingDirection(), getSortingType(), getSearchBoxMode(), getSize(), getTabSelected(), getTabPage())); + RS.NETWORK_HANDLER.sendToServer(new WirelessGridSettingsUpdateMessage(type, getSortingDirection(), getSortingType(), getSearchBoxMode(), getSize(), getTabSelected(), getTabPage())); this.viewType = type; @@ -204,7 +205,7 @@ public class WirelessGrid implements INetworkAwareGrid { @Override public void onSortingTypeChanged(int type) { - RS.NETWORK_HANDLER.sendToServer(new GridSettingsUpdateMessage(getViewType(), getSortingDirection(), type, getSearchBoxMode(), getSize(), getTabSelected(), getTabPage())); + RS.NETWORK_HANDLER.sendToServer(new WirelessGridSettingsUpdateMessage(getViewType(), getSortingDirection(), type, getSearchBoxMode(), getSize(), getTabSelected(), getTabPage())); this.sortingType = type; @@ -213,7 +214,7 @@ public class WirelessGrid implements INetworkAwareGrid { @Override public void onSortingDirectionChanged(int direction) { - RS.NETWORK_HANDLER.sendToServer(new GridSettingsUpdateMessage(getViewType(), direction, getSortingType(), getSearchBoxMode(), getSize(), getTabSelected(), getTabPage())); + RS.NETWORK_HANDLER.sendToServer(new WirelessGridSettingsUpdateMessage(getViewType(), direction, getSortingType(), getSearchBoxMode(), getSize(), getTabSelected(), getTabPage())); this.sortingDirection = direction; @@ -222,14 +223,14 @@ public class WirelessGrid implements INetworkAwareGrid { @Override public void onSearchBoxModeChanged(int searchBoxMode) { - RS.NETWORK_HANDLER.sendToServer(new GridSettingsUpdateMessage(getViewType(), getSortingDirection(), getSortingType(), searchBoxMode, getSize(), getTabSelected(), getTabPage())); + RS.NETWORK_HANDLER.sendToServer(new WirelessGridSettingsUpdateMessage(getViewType(), getSortingDirection(), getSortingType(), searchBoxMode, getSize(), getTabSelected(), getTabPage())); this.searchBoxMode = searchBoxMode; } @Override public void onSizeChanged(int size) { - RS.NETWORK_HANDLER.sendToServer(new GridSettingsUpdateMessage(getViewType(), getSortingDirection(), getSortingType(), getSearchBoxMode(), size, getTabSelected(), getTabPage())); + RS.NETWORK_HANDLER.sendToServer(new WirelessGridSettingsUpdateMessage(getViewType(), getSortingDirection(), getSortingType(), getSearchBoxMode(), size, getTabSelected(), getTabPage())); this.size = size; @@ -240,7 +241,7 @@ public class WirelessGrid implements INetworkAwareGrid { public void onTabSelectionChanged(int tab) { this.tabSelected = tab == tabSelected ? -1 : tab; - RS.NETWORK_HANDLER.sendToServer(new GridSettingsUpdateMessage(getViewType(), getSortingDirection(), getSortingType(), getSearchBoxMode(), getSize(), tabSelected, getTabPage())); + RS.NETWORK_HANDLER.sendToServer(new WirelessGridSettingsUpdateMessage(getViewType(), getSortingDirection(), getSortingType(), getSearchBoxMode(), getSize(), tabSelected, getTabPage())); BaseScreen.executeLater(GridScreen.class, grid -> grid.getView().sort()); } @@ -248,7 +249,7 @@ public class WirelessGrid implements INetworkAwareGrid { @Override public void onTabPageChanged(int page) { if (page >= 0 && page <= getTotalTabPages()) { - RS.NETWORK_HANDLER.sendToServer(new GridSettingsUpdateMessage(getViewType(), getSortingDirection(), getSortingType(), getSearchBoxMode(), getSize(), getTabSelected(), page)); + RS.NETWORK_HANDLER.sendToServer(new WirelessGridSettingsUpdateMessage(getViewType(), getSortingDirection(), getSortingType(), getSearchBoxMode(), getSize(), getTabSelected(), page)); this.tabPage = page; } diff --git a/src/main/resources/assets/refinedstorage/lang/en_us.json b/src/main/resources/assets/refinedstorage/lang/en_us.json index e01b2d845..149792dd1 100644 --- a/src/main/resources/assets/refinedstorage/lang/en_us.json +++ b/src/main/resources/assets/refinedstorage/lang/en_us.json @@ -229,8 +229,8 @@ "item.refinedstorage.creative_fluid_storage_disk": "Creative Fluid Storage Disk", "item.refinedstorage.wireless_grid": "Wireless Grid", "item.refinedstorage.creative_wireless_grid": "Creative Wireless Grid", - "item.refinedstorage:wireless_fluid_grid.0": "Wireless Fluid Grid", - "item.refinedstorage:wireless_fluid_grid.1": "Creative Wireless Fluid Grid", + "item.refinedstorage.wireless_fluid_grid": "Wireless Fluid Grid", + "item.refinedstorage.creative_wireless_fluid_grid": "Creative Wireless Fluid Grid", "item.refinedstorage:wireless_crafting_monitor.0": "Wireless Crafting Monitor", "item.refinedstorage:wireless_crafting_monitor.1": "Creative Wireless Crafting Monitor", "item.refinedstorage.quartz_enriched_iron": "Quartz Enriched Iron", diff --git a/src/main/resources/assets/refinedstorage/models/item/creative_wireless_fluid_grid.json b/src/main/resources/assets/refinedstorage/models/item/creative_wireless_fluid_grid.json new file mode 100644 index 000000000..8fce21f78 --- /dev/null +++ b/src/main/resources/assets/refinedstorage/models/item/creative_wireless_fluid_grid.json @@ -0,0 +1,20 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "refinedstorage:item/wireless_fluid_grid_disconnected" + }, + "overrides": [ + { + "predicate": { + "connected": 0 + }, + "model": "refinedstorage:item/wireless_fluid_grid_disconnected" + }, + { + "predicate": { + "connected": 1 + }, + "model": "refinedstorage:item/wireless_fluid_grid_connected" + } + ] +} diff --git a/src/main/resources/assets/refinedstorage/recipes/wireless_fluid_grid.json b/src/main/resources/data/refinedstorage/recipes/wireless_fluid_grid.json similarity index 56% rename from src/main/resources/assets/refinedstorage/recipes/wireless_fluid_grid.json rename to src/main/resources/data/refinedstorage/recipes/wireless_fluid_grid.json index d85aae2a9..b07529977 100644 --- a/src/main/resources/assets/refinedstorage/recipes/wireless_fluid_grid.json +++ b/src/main/resources/data/refinedstorage/recipes/wireless_fluid_grid.json @@ -10,18 +10,16 @@ "item": "refinedstorage:quartz_enriched_iron" }, "P": { - "item": "minecraft:ender_pearl" + "tag": "forge:ender_pearls" }, "G": { - "item": "refinedstorage:grid", - "data": 3 + "item": "refinedstorage:fluid_grid" }, "A": { - "item": "#advanced_processor" + "item": "refinedstorage:advanced_processor" } }, "result": { - "item": "refinedstorage:wireless_fluid_grid", - "data": 0 + "item": "refinedstorage:wireless_fluid_grid" } } \ No newline at end of file