diff --git a/src/main/java/com/raoulvdberge/refinedstorage/RS.java b/src/main/java/com/raoulvdberge/refinedstorage/RS.java index c4bad9a19..87ce037e4 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/RS.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/RS.java @@ -1,6 +1,7 @@ package com.raoulvdberge.refinedstorage; import com.raoulvdberge.refinedstorage.apiimpl.API; +import com.raoulvdberge.refinedstorage.apiimpl.network.NetworkNodeListener; import com.raoulvdberge.refinedstorage.apiimpl.storage.FluidStorageType; import com.raoulvdberge.refinedstorage.apiimpl.storage.ItemStorageType; import com.raoulvdberge.refinedstorage.apiimpl.storage.disk.StorageDiskFactoryFluid; @@ -9,6 +10,7 @@ import com.raoulvdberge.refinedstorage.block.CableBlock; import com.raoulvdberge.refinedstorage.block.ControllerBlock; import com.raoulvdberge.refinedstorage.block.MachineCasingBlock; import com.raoulvdberge.refinedstorage.block.QuartzEnrichedIronBlock; +import com.raoulvdberge.refinedstorage.capability.NetworkNodeProxyCapability; import com.raoulvdberge.refinedstorage.config.ServerConfig; import com.raoulvdberge.refinedstorage.container.ControllerContainer; import com.raoulvdberge.refinedstorage.container.FilterContainer; @@ -17,8 +19,9 @@ import com.raoulvdberge.refinedstorage.item.blockitem.ControllerBlockItem; import com.raoulvdberge.refinedstorage.item.group.MainItemGroup; import com.raoulvdberge.refinedstorage.network.NetworkHandler; import com.raoulvdberge.refinedstorage.recipe.UpgradeWithEnchantedBookRecipeSerializer; +import com.raoulvdberge.refinedstorage.tile.BaseTile; +import com.raoulvdberge.refinedstorage.tile.CableTile; import com.raoulvdberge.refinedstorage.tile.ControllerTile; -import com.raoulvdberge.refinedstorage.tile.TileBase; import com.raoulvdberge.refinedstorage.tile.data.TileDataManager; import com.raoulvdberge.refinedstorage.util.BlockUtils; import net.minecraft.block.Block; @@ -29,6 +32,7 @@ import net.minecraft.item.crafting.IRecipeSerializer; import net.minecraft.tileentity.TileEntity; import net.minecraft.tileentity.TileEntityType; import net.minecraftforge.api.distmarker.Dist; +import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.common.extensions.IForgeContainerType; import net.minecraftforge.event.RegistryEvent; import net.minecraftforge.eventbus.api.SubscribeEvent; @@ -67,6 +71,10 @@ public final class RS { public void onCommonSetup(FMLCommonSetupEvent e) { NETWORK_HANDLER.register(); + NetworkNodeProxyCapability.register(); + + MinecraftForge.EVENT_BUS.register(new NetworkNodeListener()); + API.instance().getStorageDiskRegistry().add(StorageDiskFactoryItem.ID, new StorageDiskFactoryItem()); API.instance().getStorageDiskRegistry().add(StorageDiskFactoryFluid.ID, new StorageDiskFactoryFluid()); } @@ -94,10 +102,12 @@ public final class RS { e.getRegistry().register(registerTileDataParameters( TileEntityType.Builder.create(() -> new ControllerTile(ControllerBlock.Type.CREATIVE), RSBlocks.CREATIVE_CONTROLLER).build(null).setRegistryName(RS.ID, "creative_controller") )); + + e.getRegistry().register(TileEntityType.Builder.create(CableTile::new, RSBlocks.CABLE).build(null).setRegistryName(RS.ID, "cable")); } private TileEntityType registerTileDataParameters(TileEntityType t) { - TileBase tile = (TileBase) t.create(); + BaseTile tile = (BaseTile) t.create(); tile.getDataManager().getParameters().forEach(TileDataManager::registerParameter); diff --git a/src/main/java/com/raoulvdberge/refinedstorage/RSTiles.java b/src/main/java/com/raoulvdberge/refinedstorage/RSTiles.java index 6cf6237d8..3c68aa35d 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/RSTiles.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/RSTiles.java @@ -63,8 +63,10 @@ public class RSTiles { public static final TileEntityType STORAGE_MONITOR = null; //@ObjectHolder(RS.ID + ":wireless_transmitter") public static final TileEntityType WIRELESS_TRANSMITTER = null; - //@ObjectHolder(RS.ID + ":cable") - public static final TileEntityType CABLE = null; + + @ObjectHolder(RS.ID + ":cable") + public static final TileEntityType CABLE = null; + //@ObjectHolder(RS.ID + ":portable_grid") public static final TileEntityType PORTABLE_GRID = null; } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/api/IRSAPI.java b/src/main/java/com/raoulvdberge/refinedstorage/api/IRSAPI.java index 4c2a311a2..1bb9e67bc 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/api/IRSAPI.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/api/IRSAPI.java @@ -26,7 +26,7 @@ import com.raoulvdberge.refinedstorage.api.util.IStackList; import net.minecraft.item.ItemStack; import net.minecraft.nbt.CompoundNBT; import net.minecraft.util.math.BlockPos; -import net.minecraft.world.World; +import net.minecraft.world.IWorld; import net.minecraft.world.server.ServerWorld; import net.minecraftforge.fluids.FluidStack; @@ -59,13 +59,11 @@ public interface IRSAPI { /** * Gets a network node manager for a given world. - * This can only be called on the server side! - * There is no such concept of a network node manager on the client. * - * @param world the world - * @return the network node manager for the given world + * @param world world + * @return the network node manager for a given world */ - INetworkNodeManager getNetworkNodeManager(World world); + INetworkNodeManager getNetworkNodeManager(ServerWorld world); /** * @return the crafting task registry @@ -212,7 +210,7 @@ public interface IRSAPI { * @param world the world * @param pos the position of the node */ - void discoverNode(World world, BlockPos pos); + void discoverNode(IWorld world, BlockPos pos); /** * @param stack the stack diff --git a/src/main/java/com/raoulvdberge/refinedstorage/api/network/INetworkNodeGraph.java b/src/main/java/com/raoulvdberge/refinedstorage/api/network/INetworkNodeGraph.java index c919c7ceb..894ab3ea8 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/api/network/INetworkNodeGraph.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/api/network/INetworkNodeGraph.java @@ -21,18 +21,6 @@ public interface INetworkNodeGraph { */ void invalidate(Action action, World world, BlockPos origin); - /** - * Runs an action on the network. - * If the network is rebuilding it's graph, the action will be executed after the graph was built. - * - * @param handler the action to run - * @deprecated Use {@link #runActionWhenPossible(Consumer)} - just a method rename - */ - @Deprecated - default void addPostRebuildHandler(Consumer handler) { - runActionWhenPossible(handler); - } - /** * Runs an action on the network. * If the network is rebuilding it's graph, the action will be executed after the graph was built. diff --git a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/API.java b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/API.java index 8eddcc7c0..dd364444f 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/API.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/API.java @@ -12,6 +12,7 @@ import com.raoulvdberge.refinedstorage.api.network.INetwork; import com.raoulvdberge.refinedstorage.api.network.grid.IGridManager; import com.raoulvdberge.refinedstorage.api.network.node.INetworkNode; import com.raoulvdberge.refinedstorage.api.network.node.INetworkNodeManager; +import com.raoulvdberge.refinedstorage.api.network.node.INetworkNodeProxy; import com.raoulvdberge.refinedstorage.api.network.node.INetworkNodeRegistry; import com.raoulvdberge.refinedstorage.api.network.readerwriter.IReaderWriterChannel; import com.raoulvdberge.refinedstorage.api.network.readerwriter.IReaderWriterHandlerRegistry; @@ -40,7 +41,7 @@ import com.raoulvdberge.refinedstorage.apiimpl.util.Comparer; import com.raoulvdberge.refinedstorage.apiimpl.util.QuantityFormatter; import com.raoulvdberge.refinedstorage.apiimpl.util.StackListFluid; import com.raoulvdberge.refinedstorage.apiimpl.util.StackListItem; -import com.raoulvdberge.refinedstorage.capability.CapabilityNetworkNodeProxy; +import com.raoulvdberge.refinedstorage.capability.NetworkNodeProxyCapability; import net.minecraft.item.ItemStack; import net.minecraft.nbt.CompoundNBT; import net.minecraft.nbt.INBT; @@ -48,7 +49,7 @@ import net.minecraft.nbt.ListNBT; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.Direction; import net.minecraft.util.math.BlockPos; -import net.minecraft.world.World; +import net.minecraft.world.IWorld; import net.minecraft.world.dimension.DimensionType; import net.minecraft.world.server.ServerWorld; import net.minecraftforge.fluids.FluidStack; @@ -114,24 +115,10 @@ public class API implements IRSAPI { } @Override - public INetworkNodeManager getNetworkNodeManager(World world) { - if (world.isRemote) { - throw new IllegalArgumentException("Attempting to access network node manager on the client"); - } + public INetworkNodeManager getNetworkNodeManager(ServerWorld world) { + String name = world.getDimension().getType().getRegistryName().getNamespace() + "_" + world.getDimension().getType().getRegistryName().getPath() + "_" + NetworkNodeManager.NAME; - /* TODO: Saving - MapStorage storage = world.getPerWorldStorage(); - NetworkNodeManager instance = (NetworkNodeManager) storage.getOrLoadData(NetworkNodeManager.class, NetworkNodeManager.NAME); - - if (instance == null) { - instance = new NetworkNodeManager(NetworkNodeManager.NAME); - - storage.setData(NetworkNodeManager.NAME, instance); - } else { - instance.tryReadNodes(world); - }*/ - - return new NetworkNodeManager("ABC"); + return world.getSavedData().getOrCreate(() -> new NetworkNodeManager(name, world), name); } @Override @@ -258,20 +245,21 @@ public class API implements IRSAPI { } @Override - public void discoverNode(World world, BlockPos pos) { + public void discoverNode(IWorld world, BlockPos pos) { for (Direction facing : Direction.values()) { TileEntity tile = world.getTileEntity(pos.offset(facing)); if (tile != null) { - tile.getCapability(CapabilityNetworkNodeProxy.NETWORK_NODE_PROXY_CAPABILITY, facing.getOpposite()).ifPresent(nodeProxy -> { - INetworkNode node = nodeProxy.getNode(); + INetworkNodeProxy proxy = tile.getCapability(NetworkNodeProxyCapability.NETWORK_NODE_PROXY_CAPABILITY, facing.getOpposite()).orElse(null); + if (proxy != null) { + INetworkNode node = proxy.getNode(); if (node.getNetwork() != null) { node.getNetwork().getNodeGraph().invalidate(Action.PERFORM, node.getNetwork().world(), node.getNetwork().getPosition()); return; } - }); + } } } } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/autocrafting/task/CraftingTask.java b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/autocrafting/task/CraftingTask.java index 65e99901a..55c862d40 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/autocrafting/task/CraftingTask.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/autocrafting/task/CraftingTask.java @@ -30,6 +30,7 @@ import net.minecraft.nbt.ListNBT; import net.minecraft.util.NonNullList; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; +import net.minecraft.world.server.ServerWorld; import net.minecraftforge.common.util.Constants; import net.minecraftforge.fluids.FluidStack; import net.minecraftforge.fluids.capability.IFluidHandler; @@ -1023,7 +1024,7 @@ public class CraftingTask implements ICraftingTask { static ICraftingPattern readPatternFromNbt(CompoundNBT tag, World world) throws CraftingTaskReadException { BlockPos containerPos = BlockPos.fromLong(tag.getLong(NBT_PATTERN_CONTAINER_POS)); - INetworkNode node = API.instance().getNetworkNodeManager(world).getNode(containerPos); + INetworkNode node = API.instance().getNetworkNodeManager((ServerWorld) world).getNode(containerPos); if (node instanceof ICraftingPatternContainer) { ItemStack stack = ItemStack.read(tag.getCompound(NBT_PATTERN_STACK)); diff --git a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/NetworkNodeGraph.java b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/NetworkNodeGraph.java index 7134344b0..04abbbe59 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/NetworkNodeGraph.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/NetworkNodeGraph.java @@ -7,13 +7,10 @@ import com.raoulvdberge.refinedstorage.api.network.INetworkNodeGraphListener; import com.raoulvdberge.refinedstorage.api.network.INetworkNodeVisitor; import com.raoulvdberge.refinedstorage.api.network.node.INetworkNode; import com.raoulvdberge.refinedstorage.api.util.Action; -import com.raoulvdberge.refinedstorage.capability.CapabilityNetworkNodeProxy; -import net.minecraft.block.BlockState; -import net.minecraft.inventory.InventoryHelper; -import net.minecraft.item.ItemStack; +import com.raoulvdberge.refinedstorage.capability.NetworkNodeProxyCapability; +import net.minecraft.block.Block; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.Direction; -import net.minecraft.util.NonNullList; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; @@ -21,7 +18,7 @@ import javax.annotation.Nullable; import java.util.*; import java.util.function.Consumer; -import static com.raoulvdberge.refinedstorage.capability.CapabilityNetworkNodeProxy.NETWORK_NODE_PROXY_CAPABILITY; +import static com.raoulvdberge.refinedstorage.capability.NetworkNodeProxyCapability.NETWORK_NODE_PROXY_CAPABILITY; public class NetworkNodeGraph implements INetworkNodeGraph { private INetwork network; @@ -44,7 +41,7 @@ public class NetworkNodeGraph implements INetworkNodeGraph { TileEntity tile = world.getTileEntity(origin); if (tile != null) { - tile.getCapability(CapabilityNetworkNodeProxy.NETWORK_NODE_PROXY_CAPABILITY, null).ifPresent(proxy -> { + tile.getCapability(NetworkNodeProxyCapability.NETWORK_NODE_PROXY_CAPABILITY, null).ifPresent(proxy -> { INetworkNode node = proxy.getNode(); if (node instanceof INetworkNodeVisitor) { @@ -113,16 +110,9 @@ public class NetworkNodeGraph implements INetworkNodeGraph { private void dropConflictingBlock(World world, BlockPos pos) { if (!network.getPosition().equals(pos)) { - BlockState state = world.getBlockState(pos); + Block.spawnDrops(world.getBlockState(pos), world, pos, world.getTileEntity(pos)); - NonNullList drops = NonNullList.create(); - // TODO: state.getBlock().getDrops(drops, world, pos, state, 0); - - world.removeBlock(pos, false); // TODO: correct? - - for (ItemStack drop : drops) { - InventoryHelper.spawnItemStack(world, pos.getX(), pos.getY(), pos.getZ(), drop); - } + world.removeBlock(pos, false); } } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/NetworkNodeListener.java b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/NetworkNodeListener.java index 6b03e8824..73a8ee6d1 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/NetworkNodeListener.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/NetworkNodeListener.java @@ -4,11 +4,13 @@ import com.raoulvdberge.refinedstorage.api.network.node.INetworkNode; import com.raoulvdberge.refinedstorage.api.network.node.INetworkNodeProxy; import com.raoulvdberge.refinedstorage.api.network.security.Permission; import com.raoulvdberge.refinedstorage.apiimpl.API; -import com.raoulvdberge.refinedstorage.capability.CapabilityNetworkNodeProxy; +import com.raoulvdberge.refinedstorage.apiimpl.network.node.NetworkNode; +import com.raoulvdberge.refinedstorage.capability.NetworkNodeProxyCapability; import com.raoulvdberge.refinedstorage.util.WorldUtils; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.Direction; +import net.minecraft.world.server.ServerWorld; import net.minecraftforge.event.TickEvent; import net.minecraftforge.event.world.BlockEvent; import net.minecraftforge.eventbus.api.SubscribeEvent; @@ -20,7 +22,7 @@ public class NetworkNodeListener { if (e.phase == TickEvent.Phase.END) { e.world.getProfiler().startSection("network node ticking"); - for (INetworkNode node : API.instance().getNetworkNodeManager(e.world).all()) { + for (INetworkNode node : API.instance().getNetworkNodeManager((ServerWorld) e.world).all()) { node.update(); } @@ -32,21 +34,29 @@ public class NetworkNodeListener { @SubscribeEvent public void onBlockPlace(BlockEvent.EntityPlaceEvent e) { if (!e.getWorld().isRemote() && e.getEntity() instanceof PlayerEntity) { + PlayerEntity player = (PlayerEntity) e.getEntity(); + TileEntity placed = e.getWorld().getTileEntity(e.getPos()); if (placed != null) { - placed.getCapability(CapabilityNetworkNodeProxy.NETWORK_NODE_PROXY_CAPABILITY).ifPresent(x -> { + placed.getCapability(NetworkNodeProxyCapability.NETWORK_NODE_PROXY_CAPABILITY).ifPresent(proxy -> { + API.instance().discoverNode(e.getWorld(), e.getPos()); + + if (proxy.getNode() instanceof NetworkNode) { + ((NetworkNode) proxy.getNode()).setOwner(player.getGameProfile().getId()); + } + for (Direction facing : Direction.values()) { TileEntity side = e.getWorld().getTileEntity(e.getBlockSnapshot().getPos().offset(facing)); if (side != null) { - INetworkNodeProxy nodeProxy = side.getCapability(CapabilityNetworkNodeProxy.NETWORK_NODE_PROXY_CAPABILITY, facing.getOpposite()).orElse(null); + INetworkNodeProxy neighborProxy = side.getCapability(NetworkNodeProxyCapability.NETWORK_NODE_PROXY_CAPABILITY, facing.getOpposite()).orElse(null); - if (nodeProxy != null) { - INetworkNode node = nodeProxy.getNode(); + if (neighborProxy != null) { + INetworkNode node = neighborProxy.getNode(); - if (node.getNetwork() != null && !node.getNetwork().getSecurityManager().hasPermission(Permission.BUILD, (PlayerEntity) e.getEntity())) { - WorldUtils.sendNoPermissionMessage((PlayerEntity) e.getEntity()); + if (node.getNetwork() != null && !node.getNetwork().getSecurityManager().hasPermission(Permission.BUILD, player)) { + WorldUtils.sendNoPermissionMessage(player); e.setCanceled(true); @@ -66,7 +76,7 @@ public class NetworkNodeListener { TileEntity tile = e.getWorld().getTileEntity(e.getPos()); if (tile != null) { - tile.getCapability(CapabilityNetworkNodeProxy.NETWORK_NODE_PROXY_CAPABILITY).ifPresent(nodeProxy -> { + tile.getCapability(NetworkNodeProxyCapability.NETWORK_NODE_PROXY_CAPABILITY).ifPresent(nodeProxy -> { INetworkNode node = nodeProxy.getNode(); if (node.getNetwork() != null && !node.getNetwork().getSecurityManager().hasPermission(Permission.BUILD, e.getPlayer())) { diff --git a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/NetworkNodeManager.java b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/NetworkNodeManager.java index e00117309..53be9017d 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/NetworkNodeManager.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/NetworkNodeManager.java @@ -23,26 +23,20 @@ public class NetworkNodeManager extends WorldSavedData implements INetworkNodeMa private static final String NBT_NODE_DATA = "Data"; private static final String NBT_NODE_POS = "Pos"; - private boolean canReadNodes; - private ListNBT nodesTag; + private final World world; private ConcurrentHashMap nodes = new ConcurrentHashMap<>(); - public NetworkNodeManager(String name) { + public NetworkNodeManager(String name, World world) { super(name); + + this.world = world; } @Override public void read(CompoundNBT tag) { if (tag.contains(NBT_NODES)) { - this.nodesTag = tag.getList(NBT_NODES, Constants.NBT.TAG_COMPOUND); - this.canReadNodes = true; - } - } - - public void tryReadNodes(World world) { - if (this.canReadNodes) { - this.canReadNodes = false; + ListNBT nodesTag = tag.getList(NBT_NODES, Constants.NBT.TAG_COMPOUND); this.nodes.clear(); diff --git a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNode.java b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNode.java index 3d7d79c53..6a2c4e6d1 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNode.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNode.java @@ -15,6 +15,7 @@ import net.minecraft.tileentity.TileEntity; import net.minecraft.util.Direction; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; +import net.minecraft.world.server.ServerWorld; import net.minecraftforge.items.IItemHandler; import javax.annotation.Nonnull; @@ -101,7 +102,7 @@ public abstract class NetworkNode implements INetworkNode, INetworkNodeVisitor { @Override public void markDirty() { if (!world.isRemote) { - API.instance().getNetworkNodeManager(world).markForSaving(); + API.instance().getNetworkNodeManager((ServerWorld) world).markForSaving(); } } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeCable.java b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeCable.java index 95503196e..226497ce1 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeCable.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeCable.java @@ -1,6 +1,5 @@ package com.raoulvdberge.refinedstorage.apiimpl.network.node; -import com.raoulvdberge.refinedstorage.RS; import com.raoulvdberge.refinedstorage.api.network.node.INetworkNodeCable; import com.raoulvdberge.refinedstorage.apiimpl.network.node.cover.CoverManager; import net.minecraft.nbt.CompoundNBT; @@ -25,7 +24,8 @@ public class NetworkNodeCable extends NetworkNode implements ICoverable, INetwor @Override public int getEnergyUsage() { - return RS.INSTANCE.config.cableUsage; + return 0; + //return RS.INSTANCE.config.cableUsage; } @Override diff --git a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeCrafter.java b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeCrafter.java index 0adaea519..dd6c18e46 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeCrafter.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeCrafter.java @@ -19,6 +19,7 @@ import net.minecraft.tileentity.TileEntity; import net.minecraft.util.INameable; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; +import net.minecraft.world.server.ServerWorld; import net.minecraftforge.fluids.capability.IFluidHandler; import net.minecraftforge.items.IItemHandler; import net.minecraftforge.items.IItemHandlerModifiable; @@ -384,7 +385,7 @@ public class NetworkNodeCrafter extends NetworkNode implements ICraftingPatternC return null; } - INetworkNode facing = API.instance().getNetworkNodeManager(world).getNode(pos.offset(getDirection())); + INetworkNode facing = API.instance().getNetworkNodeManager((ServerWorld) world).getNode(pos.offset(getDirection())); if (!(facing instanceof ICraftingPatternContainer) || facing.getNetwork() != network) { return this; } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeFluidInterface.java b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeFluidInterface.java index 42e56a29e..97591b211 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeFluidInterface.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeFluidInterface.java @@ -20,6 +20,7 @@ import net.minecraft.nbt.CompoundNBT; import net.minecraft.util.Direction; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; +import net.minecraft.world.server.ServerWorld; import net.minecraftforge.fluids.FluidAttributes; import net.minecraftforge.fluids.FluidStack; import net.minecraftforge.fluids.capability.IFluidHandler; @@ -158,7 +159,7 @@ public class NetworkNodeFluidInterface extends NetworkNode { private boolean isActingAsStorage() { for (Direction facing : Direction.values()) { - INetworkNode facingNode = API.instance().getNetworkNodeManager(world).getNode(pos.offset(facing)); + INetworkNode facingNode = API.instance().getNetworkNodeManager((ServerWorld) world).getNode(pos.offset(facing)); if (facingNode instanceof NetworkNodeExternalStorage && facingNode.canUpdate() && diff --git a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeInterface.java b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeInterface.java index 0b4aa8a8f..3fddd1398 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeInterface.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeInterface.java @@ -19,6 +19,7 @@ import net.minecraft.nbt.CompoundNBT; import net.minecraft.util.Direction; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; +import net.minecraft.world.server.ServerWorld; import net.minecraftforge.items.IItemHandler; import net.minecraftforge.items.wrapper.CombinedInvWrapper; @@ -136,7 +137,7 @@ public class NetworkNodeInterface extends NetworkNode implements IComparable { private boolean isActingAsStorage() { for (Direction facing : Direction.values()) { - INetworkNode facingNode = API.instance().getNetworkNodeManager(world).getNode(pos.offset(facing)); + INetworkNode facingNode = API.instance().getNetworkNodeManager((ServerWorld) world).getNode(pos.offset(facing)); if (facingNode instanceof NetworkNodeExternalStorage && facingNode.canUpdate() && diff --git a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/cover/CoverManager.java b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/cover/CoverManager.java index 00282d593..4f7d28045 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/cover/CoverManager.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/cover/CoverManager.java @@ -11,6 +11,7 @@ import net.minecraft.item.ItemStack; import net.minecraft.nbt.CompoundNBT; import net.minecraft.nbt.ListNBT; import net.minecraft.util.Direction; +import net.minecraft.world.server.ServerWorld; import net.minecraftforge.items.IItemHandlerModifiable; import net.minecraftforge.items.ItemStackHandler; @@ -36,7 +37,7 @@ public class CoverManager { return false; } - INetworkNode neighbor = API.instance().getNetworkNodeManager(node.getWorld()).getNode(node.getPos().offset(direction)); + INetworkNode neighbor = API.instance().getNetworkNodeManager((ServerWorld) node.getWorld()).getNode(node.getPos().offset(direction)); if (neighbor instanceof ICoverable) { cover = ((ICoverable) neighbor).getCoverManager().getCover(direction.getOpposite()); diff --git a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/storage/externalstorage/ExternalStorageProviderItem.java b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/storage/externalstorage/ExternalStorageProviderItem.java index 390cd86ea..30209f781 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/storage/externalstorage/ExternalStorageProviderItem.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/storage/externalstorage/ExternalStorageProviderItem.java @@ -5,7 +5,7 @@ import com.raoulvdberge.refinedstorage.api.storage.IStorageProvider; import com.raoulvdberge.refinedstorage.api.storage.externalstorage.IExternalStorageContext; import com.raoulvdberge.refinedstorage.api.storage.externalstorage.IExternalStorageProvider; import com.raoulvdberge.refinedstorage.api.storage.externalstorage.IStorageExternal; -import com.raoulvdberge.refinedstorage.capability.CapabilityNetworkNodeProxy; +import com.raoulvdberge.refinedstorage.capability.NetworkNodeProxyCapability; import com.raoulvdberge.refinedstorage.tile.TileInterface; import com.raoulvdberge.refinedstorage.util.WorldUtils; import net.minecraft.item.ItemStack; @@ -18,7 +18,7 @@ import java.util.function.Supplier; public class ExternalStorageProviderItem implements IExternalStorageProvider { @Override public boolean canProvide(TileEntity tile, Direction direction) { - INetworkNodeProxy nodeProxy = tile.getCapability(CapabilityNetworkNodeProxy.NETWORK_NODE_PROXY_CAPABILITY, direction.getOpposite()).orElse(null); + INetworkNodeProxy nodeProxy = tile.getCapability(NetworkNodeProxyCapability.NETWORK_NODE_PROXY_CAPABILITY, direction.getOpposite()).orElse(null); if (!(nodeProxy != null && nodeProxy.getNode() instanceof IStorageProvider)) { // TODO: Correct if still? return WorldUtils.getItemHandler(tile, direction.getOpposite()) != null; diff --git a/src/main/java/com/raoulvdberge/refinedstorage/block/BlockBase.java b/src/main/java/com/raoulvdberge/refinedstorage/block/BlockBase.java index d779327c6..15ba54123 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/block/BlockBase.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/block/BlockBase.java @@ -26,7 +26,7 @@ public abstract class BlockBase extends Block { private static final CollisionGroup DEFAULT_COLLISION_GROUP = new CollisionGroup().addItem(new AxisAlignedBB(0, 0, 0, 1, 1, 1)).setCanAccessGui(true); private static final List DEFAULT_COLLISION_GROUPS = Collections.singletonList(DEFAULT_COLLISION_GROUP); - protected final IBlockInfo info; + protected IBlockInfo info; public BlockBase(IBlockInfo info) { super(Block.Properties @@ -40,6 +40,10 @@ public abstract class BlockBase extends Block { setRegistryName(info.getId()); } + public BlockBase(Properties p_i48440_1_) { + super(p_i48440_1_); + } + @OnlyIn(Dist.CLIENT) public void registerModels(IModelRegistration modelRegistration) { } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/block/BlockCrafter.java b/src/main/java/com/raoulvdberge/refinedstorage/block/BlockCrafter.java index 8b5072962..c59b58d2c 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/block/BlockCrafter.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/block/BlockCrafter.java @@ -1,16 +1,9 @@ package com.raoulvdberge.refinedstorage.block; -import com.raoulvdberge.refinedstorage.RS; import com.raoulvdberge.refinedstorage.block.info.BlockDirection; import com.raoulvdberge.refinedstorage.block.info.BlockInfoBuilder; -import com.raoulvdberge.refinedstorage.render.IModelRegistration; -import com.raoulvdberge.refinedstorage.render.model.baked.FullbrightBakedModel; import com.raoulvdberge.refinedstorage.tile.TileCrafter; -import net.minecraft.client.renderer.model.ModelResourceLocation; import net.minecraft.util.BlockRenderLayer; -import net.minecraft.util.ResourceLocation; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; import javax.annotation.Nullable; @@ -19,6 +12,7 @@ public class BlockCrafter extends BlockNode { super(BlockInfoBuilder.forId("crafter").tileEntity(TileCrafter::new).create()); } + /* @Override @OnlyIn(Dist.CLIENT) public void registerModels(IModelRegistration modelRegistration) { @@ -32,14 +26,14 @@ public class BlockCrafter extends BlockNode { new ResourceLocation(RS.ID, "blocks/crafter/cutouts/side_connected_270"), new ResourceLocation(RS.ID, "blocks/crafter/cutouts/front_connected") )); - } + }*/ @Override public BlockRenderLayer getRenderLayer() { return BlockRenderLayer.CUTOUT; } - @Override + //@Override @Nullable public BlockDirection getDirection() { return BlockDirection.ANY_FACE_PLAYER; diff --git a/src/main/java/com/raoulvdberge/refinedstorage/block/BlockNode.java b/src/main/java/com/raoulvdberge/refinedstorage/block/BlockNode.java old mode 100755 new mode 100644 index e549ed92e..400d2d476 --- a/src/main/java/com/raoulvdberge/refinedstorage/block/BlockNode.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/block/BlockNode.java @@ -9,7 +9,7 @@ public abstract class BlockNode extends BlockNodeProxy { public BlockNode(IBlockInfo info) { super(info); } -/* TODO +/* TODO - Remove this class. @Override public void onBlockPlacedBy(World world, BlockPos pos, BlockState state, EntityLivingBase placer, ItemStack stack) { super.onBlockPlacedBy(world, pos, state, placer, stack); diff --git a/src/main/java/com/raoulvdberge/refinedstorage/block/BlockNodeProxy.java b/src/main/java/com/raoulvdberge/refinedstorage/block/BlockNodeProxy.java index 77bcb1d8f..2d44ddb49 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/block/BlockNodeProxy.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/block/BlockNodeProxy.java @@ -1,13 +1,19 @@ package com.raoulvdberge.refinedstorage.block; import com.raoulvdberge.refinedstorage.block.info.IBlockInfo; +import net.minecraft.block.Block; +import net.minecraft.block.material.Material; public abstract class BlockNodeProxy extends BlockBase { public BlockNodeProxy(IBlockInfo info) { - super(info); + this(Block.Properties.create(Material.ROCK)); } - /* TODO + public BlockNodeProxy(Properties p_i48440_1_) { + super(p_i48440_1_); + } + + /* TODO - Remove this class... @Override public boolean canEntityDestroy(BlockState state, IBlockAccess world, BlockPos pos, Entity entity) { TileEntity tile = world.getTileEntity(pos); diff --git a/src/main/java/com/raoulvdberge/refinedstorage/block/CableBlock.java b/src/main/java/com/raoulvdberge/refinedstorage/block/CableBlock.java index 0a01e19ab..59ffe095a 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/block/CableBlock.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/block/CableBlock.java @@ -1,6 +1,8 @@ package com.raoulvdberge.refinedstorage.block; import com.raoulvdberge.refinedstorage.RS; +import com.raoulvdberge.refinedstorage.capability.NetworkNodeProxyCapability; +import com.raoulvdberge.refinedstorage.tile.CableTile; import net.minecraft.block.Block; import net.minecraft.block.BlockState; import net.minecraft.block.SoundType; @@ -8,7 +10,9 @@ import net.minecraft.block.material.Material; import net.minecraft.item.BlockItemUseContext; import net.minecraft.state.BooleanProperty; import net.minecraft.state.StateContainer; +import net.minecraft.tileentity.TileEntity; import net.minecraft.util.BlockRenderLayer; +import net.minecraft.util.Direction; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.shapes.ISelectionContext; import net.minecraft.util.math.shapes.VoxelShape; @@ -18,7 +22,7 @@ import net.minecraft.world.World; import javax.annotation.Nullable; -public class CableBlock extends Block { +public class CableBlock extends NodeBlock { /* TODO public static final PropertyObject COVER_NORTH = new PropertyObject<>("cover_north", Cover.class); public static final PropertyObject COVER_EAST = new PropertyObject<>("cover_east", Cover.class); @@ -95,21 +99,41 @@ public class CableBlock extends Block { return getState(ctx.getWorld(), ctx.getPos()); } + private static boolean hasNode(World world, BlockPos pos, Direction direction) { + TileEntity tile = world.getTileEntity(pos); + if (tile == null) { + return false; + } + + return tile.getCapability(NetworkNodeProxyCapability.NETWORK_NODE_PROXY_CAPABILITY, direction).isPresent(); + } + private BlockState getState(World world, BlockPos pos) { - Block north = world.getBlockState(pos.north()).getBlock(); - Block east = world.getBlockState(pos.east()).getBlock(); - Block south = world.getBlockState(pos.south()).getBlock(); - Block west = world.getBlockState(pos.west()).getBlock(); - Block up = world.getBlockState(pos.up()).getBlock(); - Block down = world.getBlockState(pos.down()).getBlock(); + boolean north = hasNode(world, pos.offset(Direction.NORTH), Direction.SOUTH); + boolean east = hasNode(world, pos.offset(Direction.EAST), Direction.WEST); + boolean south = hasNode(world, pos.offset(Direction.SOUTH), Direction.NORTH); + boolean west = hasNode(world, pos.offset(Direction.WEST), Direction.EAST); + boolean up = hasNode(world, pos.offset(Direction.UP), Direction.DOWN); + boolean down = hasNode(world, pos.offset(Direction.DOWN), Direction.UP); return getDefaultState() - .with(NORTH, north instanceof CableBlock) - .with(EAST, east instanceof CableBlock) - .with(SOUTH, south instanceof CableBlock) - .with(WEST, west instanceof CableBlock) - .with(UP, up instanceof CableBlock) - .with(DOWN, down instanceof CableBlock); + .with(NORTH, north) + .with(EAST, east) + .with(SOUTH, south) + .with(WEST, west) + .with(UP, up) + .with(DOWN, down); + } + + @Override + public boolean hasTileEntity(BlockState state) { + return true; + } + + @Nullable + @Override + public TileEntity createTileEntity(BlockState state, IBlockReader world) { + return new CableTile(); } /* TODO diff --git a/src/main/java/com/raoulvdberge/refinedstorage/block/NodeBlock.java b/src/main/java/com/raoulvdberge/refinedstorage/block/NodeBlock.java new file mode 100644 index 000000000..e51c00dea --- /dev/null +++ b/src/main/java/com/raoulvdberge/refinedstorage/block/NodeBlock.java @@ -0,0 +1,52 @@ +package com.raoulvdberge.refinedstorage.block; + +import com.raoulvdberge.refinedstorage.api.network.node.INetworkNode; +import com.raoulvdberge.refinedstorage.api.network.node.INetworkNodeManager; +import com.raoulvdberge.refinedstorage.api.util.Action; +import com.raoulvdberge.refinedstorage.apiimpl.API; +import net.minecraft.block.Block; +import net.minecraft.block.BlockState; +import net.minecraft.state.BooleanProperty; +import net.minecraft.state.StateContainer; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.IWorld; +import net.minecraft.world.server.ServerWorld; + +public abstract class NodeBlock extends Block { + public static final BooleanProperty CONNECTED = BooleanProperty.create("connected"); + + public NodeBlock(Block.Properties props) { + super(props); + } + + @Override + public void onPlayerDestroy(IWorld world, BlockPos pos, BlockState state) { + super.onPlayerDestroy(world, pos, state); + + if (!world.isRemote()) { + INetworkNodeManager manager = API.instance().getNetworkNodeManager((ServerWorld) world); + + INetworkNode node = manager.getNode(pos); + + manager.removeNode(pos); + manager.markForSaving(); + + if (node != null && node.getNetwork() != null) { + node.getNetwork().getNodeGraph().invalidate(Action.PERFORM, node.getNetwork().world(), node.getNetwork().getPosition()); + } + } + } + + @Override + protected void fillStateContainer(StateContainer.Builder builder) { + super.fillStateContainer(builder); + + if (hasConnectedState()) { + builder.add(CONNECTED); + } + } + + public boolean hasConnectedState() { + return false; + } +} diff --git a/src/main/java/com/raoulvdberge/refinedstorage/block/info/BlockInfo.java b/src/main/java/com/raoulvdberge/refinedstorage/block/info/BlockInfo.java index 407b45a4c..8584621b8 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/block/info/BlockInfo.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/block/info/BlockInfo.java @@ -1,6 +1,6 @@ package com.raoulvdberge.refinedstorage.block.info; -import com.raoulvdberge.refinedstorage.tile.TileBase; +import com.raoulvdberge.refinedstorage.tile.BaseTile; import net.minecraft.block.SoundType; import net.minecraft.block.material.Material; import net.minecraft.util.ResourceLocation; @@ -15,9 +15,9 @@ public class BlockInfo implements IBlockInfo { private final ResourceLocation id; private final Object modObject; @Nullable - private final Supplier tileSupplier; + private final Supplier tileSupplier; - public BlockInfo(Material material, SoundType soundType, float hardness, String id, String modId, Object modObject, Supplier tileSupplier) { + public BlockInfo(Material material, SoundType soundType, float hardness, String id, String modId, Object modObject, Supplier tileSupplier) { this.material = material; this.soundType = soundType; this.hardness = hardness; @@ -53,7 +53,7 @@ public class BlockInfo implements IBlockInfo { @Nullable @Override - public TileBase createTileEntity() { + public BaseTile createTileEntity() { return tileSupplier.get(); } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/block/info/BlockInfoBuilder.java b/src/main/java/com/raoulvdberge/refinedstorage/block/info/BlockInfoBuilder.java index e419b78e3..6b501bb0d 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/block/info/BlockInfoBuilder.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/block/info/BlockInfoBuilder.java @@ -1,7 +1,7 @@ package com.raoulvdberge.refinedstorage.block.info; import com.raoulvdberge.refinedstorage.RS; -import com.raoulvdberge.refinedstorage.tile.TileBase; +import com.raoulvdberge.refinedstorage.tile.BaseTile; import net.minecraft.block.SoundType; import net.minecraft.block.material.Material; @@ -14,7 +14,7 @@ public final class BlockInfoBuilder { private Object modObject; private float hardness = 1.9F; private SoundType soundType = SoundType.STONE; - private Supplier tileSupplier; + private Supplier tileSupplier; private BlockInfoBuilder() { } @@ -51,7 +51,7 @@ public final class BlockInfoBuilder { return this; } - public BlockInfoBuilder tileEntity(Supplier tileSupplier) { + public BlockInfoBuilder tileEntity(Supplier tileSupplier) { this.tileSupplier = tileSupplier; return this; diff --git a/src/main/java/com/raoulvdberge/refinedstorage/block/info/IBlockInfo.java b/src/main/java/com/raoulvdberge/refinedstorage/block/info/IBlockInfo.java index 6ceb5d891..79b978092 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/block/info/IBlockInfo.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/block/info/IBlockInfo.java @@ -1,6 +1,6 @@ package com.raoulvdberge.refinedstorage.block.info; -import com.raoulvdberge.refinedstorage.tile.TileBase; +import com.raoulvdberge.refinedstorage.tile.BaseTile; import net.minecraft.block.SoundType; import net.minecraft.block.material.Material; import net.minecraft.util.ResourceLocation; @@ -19,7 +19,7 @@ public interface IBlockInfo { float getHardness(); @Nullable - TileBase createTileEntity(); + BaseTile createTileEntity(); boolean hasTileEntity(); } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/capability/CapabilityNetworkNodeProxy.java b/src/main/java/com/raoulvdberge/refinedstorage/capability/NetworkNodeProxyCapability.java similarity index 97% rename from src/main/java/com/raoulvdberge/refinedstorage/capability/CapabilityNetworkNodeProxy.java rename to src/main/java/com/raoulvdberge/refinedstorage/capability/NetworkNodeProxyCapability.java index 58057f9f5..5eb5945d8 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/capability/CapabilityNetworkNodeProxy.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/capability/NetworkNodeProxyCapability.java @@ -13,7 +13,7 @@ import javax.annotation.Nonnull; import javax.annotation.Nullable; import java.util.concurrent.Callable; -public class CapabilityNetworkNodeProxy { +public class NetworkNodeProxyCapability { @CapabilityInject(INetworkNodeProxy.class) public static Capability NETWORK_NODE_PROXY_CAPABILITY = null; diff --git a/src/main/java/com/raoulvdberge/refinedstorage/container/BaseContainer.java b/src/main/java/com/raoulvdberge/refinedstorage/container/BaseContainer.java index e9f57acf2..c53cfc04f 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/container/BaseContainer.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/container/BaseContainer.java @@ -9,7 +9,7 @@ import com.raoulvdberge.refinedstorage.container.slot.legacy.DisabledLegacySlot; import com.raoulvdberge.refinedstorage.container.slot.legacy.FilterLegacySlot; import com.raoulvdberge.refinedstorage.container.transfer.TransferManager; import com.raoulvdberge.refinedstorage.network.MessageSlotFilterFluidUpdate; -import com.raoulvdberge.refinedstorage.tile.TileBase; +import com.raoulvdberge.refinedstorage.tile.BaseTile; import com.raoulvdberge.refinedstorage.tile.data.TileDataWatcher; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.entity.player.ServerPlayerEntity; @@ -26,7 +26,7 @@ import java.util.List; public abstract class BaseContainer extends Container { @Nullable - private TileBase tile; + private BaseTile tile; @Nullable private TileDataWatcher listener; private PlayerEntity player; @@ -36,7 +36,7 @@ public abstract class BaseContainer extends Container { private List fluidSlots = new ArrayList<>(); private List fluids = new ArrayList<>(); - public BaseContainer(@Nullable ContainerType type, @Nullable TileBase tile, PlayerEntity player, int windowId) { + public BaseContainer(@Nullable ContainerType type, @Nullable BaseTile tile, PlayerEntity player, int windowId) { super(type, windowId); this.tile = tile; @@ -53,7 +53,7 @@ public abstract class BaseContainer extends Container { } @Nullable - public TileBase getTile() { + public BaseTile getTile() { return tile; } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/container/GridContainer.java b/src/main/java/com/raoulvdberge/refinedstorage/container/GridContainer.java index 46a940ae9..ca5b5a394 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/container/GridContainer.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/container/GridContainer.java @@ -17,7 +17,7 @@ import com.raoulvdberge.refinedstorage.container.slot.legacy.BaseLegacySlot; import com.raoulvdberge.refinedstorage.container.slot.legacy.DisabledLegacySlot; import com.raoulvdberge.refinedstorage.container.slot.legacy.FilterLegacySlot; import com.raoulvdberge.refinedstorage.screen.IResizableDisplay; -import com.raoulvdberge.refinedstorage.tile.TileBase; +import com.raoulvdberge.refinedstorage.tile.BaseTile; import com.raoulvdberge.refinedstorage.tile.config.IType; import com.raoulvdberge.refinedstorage.tile.grid.WirelessGrid; import com.raoulvdberge.refinedstorage.tile.grid.portable.IPortableGrid; @@ -42,7 +42,7 @@ public class GridContainer extends BaseContainer implements IGridCraftingListene private ResultCraftingGridSlot craftingResultSlot; private BaseLegacySlot patternResultSlot; - public GridContainer(IGrid grid, IResizableDisplay display, @Nullable TileBase gridTile, PlayerEntity player, int windowId) { + public GridContainer(IGrid grid, IResizableDisplay display, @Nullable BaseTile gridTile, PlayerEntity player, int windowId) { super(RSContainers.GRID, gridTile, player, windowId); this.grid = grid; diff --git a/src/main/java/com/raoulvdberge/refinedstorage/container/ReaderWriterContainer.java b/src/main/java/com/raoulvdberge/refinedstorage/container/ReaderWriterContainer.java index d8e6ba2c6..0dba5fd82 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/container/ReaderWriterContainer.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/container/ReaderWriterContainer.java @@ -4,14 +4,14 @@ import com.raoulvdberge.refinedstorage.RSContainers; import com.raoulvdberge.refinedstorage.api.network.readerwriter.IReaderWriterListener; import com.raoulvdberge.refinedstorage.api.network.readerwriter.IReaderWriterManager; import com.raoulvdberge.refinedstorage.apiimpl.network.node.IGuiReaderWriter; -import com.raoulvdberge.refinedstorage.tile.TileBase; +import com.raoulvdberge.refinedstorage.tile.BaseTile; import net.minecraft.entity.player.PlayerEntity; public class ReaderWriterContainer extends BaseContainer implements IReaderWriterListener { private IGuiReaderWriter readerWriter; private boolean addedListener; - public ReaderWriterContainer(IGuiReaderWriter readerWriter, TileBase tile, PlayerEntity player, int windowId) { + public ReaderWriterContainer(IGuiReaderWriter readerWriter, BaseTile tile, PlayerEntity player, int windowId) { super(RSContainers.READER_WRITER, tile, player, windowId); this.readerWriter = readerWriter; diff --git a/src/main/java/com/raoulvdberge/refinedstorage/item/WrenchItem.java b/src/main/java/com/raoulvdberge/refinedstorage/item/WrenchItem.java index c98357ec1..67670f5ed 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/item/WrenchItem.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/item/WrenchItem.java @@ -2,7 +2,7 @@ package com.raoulvdberge.refinedstorage.item; import com.raoulvdberge.refinedstorage.RS; import com.raoulvdberge.refinedstorage.api.network.security.Permission; -import com.raoulvdberge.refinedstorage.tile.TileNode; +import com.raoulvdberge.refinedstorage.tile.NetworkNodeTile; import com.raoulvdberge.refinedstorage.util.WorldUtils; import net.minecraft.block.BlockState; import net.minecraft.item.Item; @@ -31,9 +31,9 @@ public class WrenchItem extends Item { TileEntity tile = ctx.getWorld().getTileEntity(ctx.getPos()); // TODO - Better INetworkNode check - if (tile instanceof TileNode && - ((TileNode) tile).getNode().getNetwork() != null && - !((TileNode) tile).getNode().getNetwork().getSecurityManager().hasPermission(Permission.BUILD, ctx.getPlayer())) { + if (tile instanceof NetworkNodeTile && + ((NetworkNodeTile) tile).getNode().getNetwork() != null && + !((NetworkNodeTile) tile).getNode().getNetwork().getSecurityManager().hasPermission(Permission.BUILD, ctx.getPlayer())) { WorldUtils.sendNoPermissionMessage(ctx.getPlayer()); return ActionResultType.FAIL; diff --git a/src/main/java/com/raoulvdberge/refinedstorage/item/capabilityprovider/EnergyCapabilityProvider.java b/src/main/java/com/raoulvdberge/refinedstorage/item/capabilityprovider/EnergyCapabilityProvider.java index fab5b734d..b8a7620e4 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/item/capabilityprovider/EnergyCapabilityProvider.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/item/capabilityprovider/EnergyCapabilityProvider.java @@ -24,13 +24,7 @@ public class EnergyCapabilityProvider implements ICapabilityProvider { @Nonnull @Override - public LazyOptional getCapability(@Nonnull Capability cap, @Nullable Direction side) { - return getCapability(cap); - } - - @Nonnull - @Override - public LazyOptional getCapability(@Nonnull Capability cap) { + public LazyOptional getCapability(@Nonnull Capability cap, @Nullable Direction dire) { if (cap == CapabilityEnergy.ENERGY) { return capability.cast(); } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/proxy/ProxyCommon.java b/src/main/java/com/raoulvdberge/refinedstorage/proxy/ProxyCommon.java index 20c538a34..e34b4a05c 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/proxy/ProxyCommon.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/proxy/ProxyCommon.java @@ -5,8 +5,6 @@ public class ProxyCommon { public void preInit(FMLPreInitializationEvent e) { MinecraftForge.EVENT_BUS.register(this); - CapabilityNetworkNodeProxy.register(); - API.deliver(e.getAsmData()); NetworkNodeGrid.FACTORY_ID = API.instance().getGridManager().add(new GridFactoryGridBlock()); @@ -66,8 +64,6 @@ public class ProxyCommon { API.instance().addExternalStorageProvider(StorageType.ITEM, new ExternalStorageProviderItem()); API.instance().addExternalStorageProvider(StorageType.FLUID, new ExternalStorageProviderFluid()); - MinecraftForge.EVENT_BUS.register(new NetworkNodeListener()); - IntegrationInventorySorter.register(); } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/render/tesr/TileEntitySpecialRendererStorageMonitor.java b/src/main/java/com/raoulvdberge/refinedstorage/render/tesr/TileEntitySpecialRendererStorageMonitor.java index 7adf1d334..f62e483c6 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/render/tesr/TileEntitySpecialRendererStorageMonitor.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/render/tesr/TileEntitySpecialRendererStorageMonitor.java @@ -7,7 +7,6 @@ import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.model.IBakedModel; import net.minecraft.client.renderer.model.ItemCameraTransforms; import net.minecraft.client.renderer.tileentity.TileEntityRenderer; -import net.minecraft.util.Direction; import net.minecraftforge.client.ForgeHooksClient; import org.lwjgl.opengl.GL11; @@ -38,6 +37,7 @@ public class TileEntitySpecialRendererStorageMonitor extends TileEntityRenderer< } } + /* TODO if (tile.getDirection() == Direction.NORTH) { disX = 0.5F; disXText = disX + textWidth; @@ -72,7 +72,7 @@ public class TileEntitySpecialRendererStorageMonitor extends TileEntityRenderer< rotZ = 1F; rotX = -1F; - } + }*/ GlStateManager.pushMatrix(); GlStateManager.translated(x + disX, y + disY, z + disZ); diff --git a/src/main/java/com/raoulvdberge/refinedstorage/tile/BaseTile.java b/src/main/java/com/raoulvdberge/refinedstorage/tile/BaseTile.java new file mode 100644 index 000000000..1e18681bd --- /dev/null +++ b/src/main/java/com/raoulvdberge/refinedstorage/tile/BaseTile.java @@ -0,0 +1,60 @@ +package com.raoulvdberge.refinedstorage.tile; + +import com.raoulvdberge.refinedstorage.tile.data.TileDataManager; +import net.minecraft.nbt.CompoundNBT; +import net.minecraft.network.NetworkManager; +import net.minecraft.network.play.server.SUpdateTileEntityPacket; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.tileentity.TileEntityType; + +import javax.annotation.Nullable; + +public abstract class BaseTile extends TileEntity { + protected TileDataManager dataManager = new TileDataManager(this); + + public BaseTile(TileEntityType tileType) { + super(tileType); + } + + public TileDataManager getDataManager() { + return dataManager; + } + + public CompoundNBT writeUpdate(CompoundNBT tag) { + return tag; + } + + public void readUpdate(CompoundNBT tag) { + } + + @Override + public final CompoundNBT getUpdateTag() { + return writeUpdate(super.getUpdateTag()); + } + + @Nullable + @Override + public final SUpdateTileEntityPacket getUpdatePacket() { + return new SUpdateTileEntityPacket(pos, 1, getUpdateTag()); + } + + @Override + public final void onDataPacket(NetworkManager net, SUpdateTileEntityPacket packet) { + readUpdate(packet.getNbtCompound()); + } + + @Override + public final void handleUpdateTag(CompoundNBT tag) { + super.read(tag); + + readUpdate(tag); + } + + // @Volatile: Copied with some changes from the super method (avoid sending neighbor updates, it's not needed) + @Override + public void markDirty() { + if (world != null) { + world.markChunkDirty(pos, this); + } + } +} diff --git a/src/main/java/com/raoulvdberge/refinedstorage/tile/TileCable.java b/src/main/java/com/raoulvdberge/refinedstorage/tile/CableTile.java old mode 100755 new mode 100644 similarity index 73% rename from src/main/java/com/raoulvdberge/refinedstorage/tile/TileCable.java rename to src/main/java/com/raoulvdberge/refinedstorage/tile/CableTile.java index f2b411f3e..38075b68b --- a/src/main/java/com/raoulvdberge/refinedstorage/tile/TileCable.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/tile/CableTile.java @@ -7,8 +7,8 @@ import net.minecraft.world.World; import javax.annotation.Nonnull; -public class TileCable extends TileNode { - public TileCable() { +public class CableTile extends NetworkNodeTile { + public CableTile() { super(RSTiles.CABLE); } @@ -17,9 +17,4 @@ public class TileCable extends TileNode { public NetworkNodeCable createNode(World world, BlockPos pos) { return new NetworkNodeCable(world, pos); } - - @Override - public String getNodeId() { - return NetworkNodeCable.ID; - } } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/tile/ControllerTile.java b/src/main/java/com/raoulvdberge/refinedstorage/tile/ControllerTile.java index 5c0f7de4f..c1c6e91cd 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/tile/ControllerTile.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/tile/ControllerTile.java @@ -43,7 +43,6 @@ import com.raoulvdberge.refinedstorage.tile.data.RSSerializers; import com.raoulvdberge.refinedstorage.tile.data.TileDataParameter; import com.raoulvdberge.refinedstorage.util.StackUtils; import net.minecraft.block.BlockState; -import net.minecraft.block.Blocks; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.nbt.CompoundNBT; @@ -62,16 +61,16 @@ import net.minecraftforge.fluids.FluidStack; import net.minecraftforge.items.ItemHandlerHelper; import javax.annotation.Nonnull; +import javax.annotation.Nullable; import java.util.ArrayList; import java.util.Comparator; import java.util.List; -import java.util.Random; import java.util.function.Predicate; -import static com.raoulvdberge.refinedstorage.capability.CapabilityNetworkNodeProxy.NETWORK_NODE_PROXY_CAPABILITY; +import static com.raoulvdberge.refinedstorage.capability.NetworkNodeProxyCapability.NETWORK_NODE_PROXY_CAPABILITY; // TODO: Change INetwork to be offloaded from the tile. -public class ControllerTile extends TileBase implements ITickableTileEntity, INetwork, IRedstoneConfigurable, INetworkNode, INetworkNodeProxy, INetworkNodeVisitor { +public class ControllerTile extends BaseTile implements ITickableTileEntity, INetwork, IRedstoneConfigurable, INetworkNode, INetworkNodeProxy, INetworkNodeVisitor { private static final Comparator CLIENT_NODE_COMPARATOR = (left, right) -> { if (left.getEnergyUsage() == right.getEnergyUsage()) { return 0; @@ -87,11 +86,6 @@ public class ControllerTile extends TileBase implements ITickableTileEntity, INe public static final TileDataParameter, ControllerTile> NODES = new TileDataParameter<>(RSSerializers.CLIENT_NODE_SERIALIZER, new ArrayList<>(), t -> { List nodes = new ArrayList<>(); - Random r = new Random(); - for (int i = 0; i < 50; ++i) { - nodes.add(new ClientNode(new ItemStack(r.nextBoolean() ? Blocks.DIRT : (r.nextBoolean() ? Blocks.BOOKSHELF : (r.nextBoolean() ? Blocks.STONE : Blocks.GLASS))), 10, 10)); - } - for (INetworkNode node : t.nodeGraph.all()) { if (node.canUpdate()) { ItemStack stack = node.getItemStack(); @@ -668,7 +662,7 @@ public class ControllerTile extends TileBase implements ITickableTileEntity, INe @Nonnull @Override - public LazyOptional getCapability(@Nonnull Capability cap) { + public LazyOptional getCapability(@Nonnull Capability cap, @Nullable Direction direction) { if (cap == CapabilityEnergy.ENERGY) { return energyProxyCap.cast(); } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/tile/TileNode.java b/src/main/java/com/raoulvdberge/refinedstorage/tile/NetworkNodeTile.java old mode 100755 new mode 100644 similarity index 76% rename from src/main/java/com/raoulvdberge/refinedstorage/tile/TileNode.java rename to src/main/java/com/raoulvdberge/refinedstorage/tile/NetworkNodeTile.java index 542042d03..5c1ae416d --- a/src/main/java/com/raoulvdberge/refinedstorage/tile/TileNode.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/tile/NetworkNodeTile.java @@ -6,38 +6,36 @@ import com.raoulvdberge.refinedstorage.api.network.node.INetworkNodeProxy; import com.raoulvdberge.refinedstorage.apiimpl.API; import com.raoulvdberge.refinedstorage.apiimpl.network.node.ICoverable; import com.raoulvdberge.refinedstorage.apiimpl.network.node.NetworkNode; -import com.raoulvdberge.refinedstorage.capability.CapabilityNetworkNodeProxy; +import com.raoulvdberge.refinedstorage.capability.NetworkNodeProxyCapability; import com.raoulvdberge.refinedstorage.tile.config.IRedstoneConfigurable; import com.raoulvdberge.refinedstorage.tile.config.RedstoneMode; import com.raoulvdberge.refinedstorage.tile.data.TileDataParameter; -import com.raoulvdberge.refinedstorage.tile.direction.DirectionHandlerNetworkNode; import net.minecraft.nbt.CompoundNBT; import net.minecraft.tileentity.TileEntityType; +import net.minecraft.util.Direction; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; +import net.minecraft.world.server.ServerWorld; import net.minecraftforge.common.capabilities.Capability; import net.minecraftforge.common.util.Constants; import net.minecraftforge.common.util.LazyOptional; -import net.minecraftforge.items.IItemHandler; import javax.annotation.Nonnull; import javax.annotation.Nullable; -public abstract class TileNode extends TileBase implements INetworkNodeProxy, IRedstoneConfigurable { - public static final TileDataParameter REDSTONE_MODE = RedstoneMode.createParameter(); +public abstract class NetworkNodeTile extends BaseTile implements INetworkNodeProxy, IRedstoneConfigurable { + public static final TileDataParameter REDSTONE_MODE = RedstoneMode.createParameter(); - protected static final String NBT_ACTIVE = "Active"; + private static final String NBT_ACTIVE = "Active"; private static final String NBT_COVERS = "Cover"; private N clientNode; private LazyOptional> networkNodeProxy = LazyOptional.of(() -> this); - public TileNode(TileEntityType tileType) { + public NetworkNodeTile(TileEntityType tileType) { super(tileType); - directionHandler = new DirectionHandlerNetworkNode(this); - dataManager.addWatchedParameter(REDSTONE_MODE); } @@ -73,12 +71,6 @@ public abstract class TileNode extends TileBase implement getNode().setActive(tag.getBoolean(NBT_ACTIVE)); } - @Override - @Nullable - public IItemHandler getDrops() { - return getNode().getDrops(); - } - @Override @Nonnull @SuppressWarnings("unchecked") @@ -91,11 +83,11 @@ public abstract class TileNode extends TileBase implement return clientNode; } - INetworkNodeManager manager = API.instance().getNetworkNodeManager(world); + INetworkNodeManager manager = API.instance().getNetworkNodeManager((ServerWorld) world); INetworkNode node = manager.getNode(pos); - if (node == null || !node.getId().equals(getNodeId())) { + if (node == null) { manager.setNode(pos, node = createNode(world, pos)); manager.markForSaving(); } @@ -105,12 +97,10 @@ public abstract class TileNode extends TileBase implement public abstract N createNode(World world, BlockPos pos); - public abstract String getNodeId(); - @Nonnull @Override - public LazyOptional getCapability(@Nonnull Capability cap) { - if (cap == CapabilityNetworkNodeProxy.NETWORK_NODE_PROXY_CAPABILITY) { + public LazyOptional getCapability(@Nonnull Capability cap, @Nullable Direction direction) { + if (cap == NetworkNodeProxyCapability.NETWORK_NODE_PROXY_CAPABILITY) { return networkNodeProxy.cast(); } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/tile/TileBase.java b/src/main/java/com/raoulvdberge/refinedstorage/tile/TileBase.java deleted file mode 100755 index 204a420e2..000000000 --- a/src/main/java/com/raoulvdberge/refinedstorage/tile/TileBase.java +++ /dev/null @@ -1,116 +0,0 @@ -package com.raoulvdberge.refinedstorage.tile; - -import com.raoulvdberge.refinedstorage.tile.data.TileDataManager; -import com.raoulvdberge.refinedstorage.tile.direction.DirectionHandlerTile; -import com.raoulvdberge.refinedstorage.tile.direction.IDirectionHandler; -import net.minecraft.nbt.CompoundNBT; -import net.minecraft.network.NetworkManager; -import net.minecraft.network.play.server.SUpdateTileEntityPacket; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.tileentity.TileEntityType; -import net.minecraft.util.Direction; -import net.minecraftforge.items.IItemHandler; - -import javax.annotation.Nullable; - -public abstract class TileBase extends TileEntity { - protected static final String NBT_DIRECTION = "Direction"; - - private Direction clientDirection = Direction.NORTH; - protected IDirectionHandler directionHandler = new DirectionHandlerTile(); - protected TileDataManager dataManager = new TileDataManager(this); - - public TileBase(TileEntityType tileType) { - super(tileType); - } - - public void setDirection(Direction direction) { - clientDirection = direction; - - directionHandler.setDirection(direction); - - world.notifyNeighborsOfStateChange(pos, world.getBlockState(pos).getBlock()); - - markDirty(); - } - - public Direction getDirection() { - return world.isRemote ? clientDirection : directionHandler.getDirection(); - } - - public TileDataManager getDataManager() { - return dataManager; - } - - @Override - public CompoundNBT write(CompoundNBT tag) { - tag = super.write(tag); - - directionHandler.writeToTileNbt(tag); - - return tag; - } - - public CompoundNBT writeUpdate(CompoundNBT tag) { - tag.putInt(NBT_DIRECTION, directionHandler.getDirection().ordinal()); - - return tag; - } - - @Override - public void read(CompoundNBT tag) { - super.read(tag); - - directionHandler.readFromTileNbt(tag); - } - - public void readUpdate(CompoundNBT tag) { - /*boolean doRender = canCauseRenderUpdate(tag); - - clientDirection = Direction.byIndex(tag.getInt(NBT_DIRECTION)); - - if (doRender) { - WorldUtils.updateBlock(world, pos); - }*/ - } - - protected boolean canCauseRenderUpdate(CompoundNBT tag) { - return true; - } - - @Override - public final CompoundNBT getUpdateTag() { - return writeUpdate(super.getUpdateTag()); - } - - @Nullable - @Override - public final SUpdateTileEntityPacket getUpdatePacket() { - return new SUpdateTileEntityPacket(pos, 1, getUpdateTag()); - } - - @Override - public final void onDataPacket(NetworkManager net, SUpdateTileEntityPacket packet) { - readUpdate(packet.getNbtCompound()); - } - - @Override - public final void handleUpdateTag(CompoundNBT tag) { - super.read(tag); - - readUpdate(tag); - } - - @Nullable - public IItemHandler getDrops() { - return null; - } - - // @Volatile: Copied with some changes from the super method (avoid sending neighbor updates, it's not needed) - @Override - public void markDirty() { - if (world != null) { - world.markChunkDirty(pos, this); - } - } -} diff --git a/src/main/java/com/raoulvdberge/refinedstorage/tile/TileConstructor.java b/src/main/java/com/raoulvdberge/refinedstorage/tile/TileConstructor.java index 364240ec3..13c128cbd 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/tile/TileConstructor.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/tile/TileConstructor.java @@ -11,7 +11,7 @@ import net.minecraft.world.World; import javax.annotation.Nonnull; -public class TileConstructor extends TileNode { +public class TileConstructor extends NetworkNodeTile { public static final TileDataParameter COMPARE = IComparable.createParameter(); public static final TileDataParameter TYPE = IType.createParameter(); public static final TileDataParameter DROP = new TileDataParameter<>(DataSerializers.BOOLEAN, false, t -> t.getNode().isDrop(), (t, v) -> { @@ -32,9 +32,4 @@ public class TileConstructor extends TileNode { public NetworkNodeConstructor createNode(World world, BlockPos pos) { return new NetworkNodeConstructor(world, pos); } - - @Override - public String getNodeId() { - return NetworkNodeConstructor.ID; - } } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/tile/TileCrafter.java b/src/main/java/com/raoulvdberge/refinedstorage/tile/TileCrafter.java index b81533adb..7b6562ef2 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/tile/TileCrafter.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/tile/TileCrafter.java @@ -10,7 +10,7 @@ import net.minecraft.world.World; import javax.annotation.Nonnull; -public class TileCrafter extends TileNode { +public class TileCrafter extends NetworkNodeTile { public static final TileDataParameter NAME = new TileDataParameter<>(DataSerializers.STRING, NetworkNodeCrafter.DEFAULT_NAME, t -> t.getNode().getName()); public static final TileDataParameter MODE = new TileDataParameter<>(DataSerializers.VARINT, NetworkNodeCrafter.CrafterMode.IGNORE.ordinal(), t -> t.getNode().getMode().ordinal(), (t, v) -> t.getNode().setMode(NetworkNodeCrafter.CrafterMode.getById(v))); private static final TileDataParameter HAS_ROOT = new TileDataParameter<>(DataSerializers.BOOLEAN, false, t -> t.getNode().getRootContainerNotSelf().isPresent(), null, (t, v) -> new TileDataParameterClientListenerCrafter().onChanged(t, v)); @@ -29,11 +29,6 @@ public class TileCrafter extends TileNode { return new NetworkNodeCrafter(world, pos); } - @Override - public String getNodeId() { - return NetworkNodeCrafter.ID; - } - /* TODO @Override public boolean hasCapability(@Nonnull Capability capability, @Nullable Direction facing) { return capability == CapabilityItemHandler.ITEM_HANDLER_CAPABILITY || super.hasCapability(capability, facing); diff --git a/src/main/java/com/raoulvdberge/refinedstorage/tile/TileCrafterManager.java b/src/main/java/com/raoulvdberge/refinedstorage/tile/TileCrafterManager.java index 6b9679721..ffa54acb6 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/tile/TileCrafterManager.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/tile/TileCrafterManager.java @@ -10,7 +10,7 @@ import net.minecraft.network.datasync.DataSerializers; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; -public class TileCrafterManager extends TileNode { +public class TileCrafterManager extends NetworkNodeTile { public static final TileDataParameter SIZE = new TileDataParameter<>(DataSerializers.VARINT, IGrid.SIZE_STRETCH, t -> t.getNode().getSize(), (t, v) -> { if (IGrid.isValidSize(v)) { t.getNode().setSize(v); @@ -35,9 +35,4 @@ public class TileCrafterManager extends TileNode { public NetworkNodeCrafterManager createNode(World world, BlockPos pos) { return new NetworkNodeCrafterManager(world, pos); } - - @Override - public String getNodeId() { - return NetworkNodeCrafterManager.ID; - } } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/tile/TileDestructor.java b/src/main/java/com/raoulvdberge/refinedstorage/tile/TileDestructor.java index 712f65a45..b9339ac76 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/tile/TileDestructor.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/tile/TileDestructor.java @@ -12,7 +12,7 @@ import net.minecraft.world.World; import javax.annotation.Nonnull; -public class TileDestructor extends TileNode { +public class TileDestructor extends NetworkNodeTile { public static final TileDataParameter COMPARE = IComparable.createParameter(); public static final TileDataParameter MODE = IFilterable.createParameter(); public static final TileDataParameter TYPE = IType.createParameter(); @@ -35,9 +35,4 @@ public class TileDestructor extends TileNode { public NetworkNodeDestructor createNode(World world, BlockPos pos) { return new NetworkNodeDestructor(world, pos); } - - @Override - public String getNodeId() { - return NetworkNodeDestructor.ID; - } } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/tile/TileDetector.java b/src/main/java/com/raoulvdberge/refinedstorage/tile/TileDetector.java index 697f41cd8..ab6026491 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/tile/TileDetector.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/tile/TileDetector.java @@ -14,7 +14,7 @@ import net.minecraft.world.World; import javax.annotation.Nonnull; -public class TileDetector extends TileNode { +public class TileDetector extends NetworkNodeTile { private static final String NBT_POWERED = "Powered"; public static final TileDataParameter COMPARE = IComparable.createParameter(); @@ -60,9 +60,4 @@ public class TileDetector extends TileNode { public NetworkNodeDetector createNode(World world, BlockPos pos) { return new NetworkNodeDetector(world, pos); } - - @Override - public String getNodeId() { - return NetworkNodeDetector.ID; - } } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/tile/TileDiskDrive.java b/src/main/java/com/raoulvdberge/refinedstorage/tile/TileDiskDrive.java index 9872ca37a..f3fb50471 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/tile/TileDiskDrive.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/tile/TileDiskDrive.java @@ -14,7 +14,7 @@ import net.minecraft.world.World; import javax.annotation.Nonnull; -public class TileDiskDrive extends TileNode { +public class TileDiskDrive extends NetworkNodeTile { public static final TileDataParameter PRIORITY = IPrioritizable.createParameter(); public static final TileDataParameter COMPARE = IComparable.createParameter(); public static final TileDataParameter MODE = IFilterable.createParameter(); @@ -151,9 +151,4 @@ public class TileDiskDrive extends TileNode { public NetworkNodeDiskDrive createNode(World world, BlockPos pos) { return new NetworkNodeDiskDrive(world, pos); } - - @Override - public String getNodeId() { - return NetworkNodeDiskDrive.ID; - } } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/tile/TileDiskManipulator.java b/src/main/java/com/raoulvdberge/refinedstorage/tile/TileDiskManipulator.java index 3f662db5b..610b49898 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/tile/TileDiskManipulator.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/tile/TileDiskManipulator.java @@ -13,7 +13,7 @@ import net.minecraft.world.World; import javax.annotation.Nonnull; -public class TileDiskManipulator extends TileNode { +public class TileDiskManipulator extends NetworkNodeTile { public static final TileDataParameter COMPARE = IComparable.createParameter(); public static final TileDataParameter MODE = IFilterable.createParameter(); public static final TileDataParameter TYPE = IType.createParameter(); @@ -74,9 +74,4 @@ public class TileDiskManipulator extends TileNode { public NetworkNodeDiskManipulator createNode(World world, BlockPos pos) { return new NetworkNodeDiskManipulator(world, pos); } - - @Override - public String getNodeId() { - return NetworkNodeDiskManipulator.ID; - } } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/tile/TileExporter.java b/src/main/java/com/raoulvdberge/refinedstorage/tile/TileExporter.java index f7f97a83e..a0975375a 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/tile/TileExporter.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/tile/TileExporter.java @@ -10,7 +10,7 @@ import net.minecraft.world.World; import javax.annotation.Nonnull; -public class TileExporter extends TileNode { +public class TileExporter extends NetworkNodeTile { public static final TileDataParameter COMPARE = IComparable.createParameter(); public static final TileDataParameter TYPE = IType.createParameter(); @@ -26,9 +26,4 @@ public class TileExporter extends TileNode { public NetworkNodeExporter createNode(World world, BlockPos pos) { return new NetworkNodeExporter(world, pos); } - - @Override - public String getNodeId() { - return NetworkNodeExporter.ID; - } } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/tile/TileExternalStorage.java b/src/main/java/com/raoulvdberge/refinedstorage/tile/TileExternalStorage.java index 064ec681d..3489960f6 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/tile/TileExternalStorage.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/tile/TileExternalStorage.java @@ -14,7 +14,7 @@ import net.minecraftforge.fluids.FluidStack; import javax.annotation.Nonnull; -public class TileExternalStorage extends TileNode { +public class TileExternalStorage extends NetworkNodeTile { public static final TileDataParameter PRIORITY = IPrioritizable.createParameter(); public static final TileDataParameter COMPARE = IComparable.createParameter(); public static final TileDataParameter MODE = IFilterable.createParameter(); @@ -64,9 +64,4 @@ public class TileExternalStorage extends TileNode { public NetworkNodeExternalStorage createNode(World world, BlockPos pos) { return new NetworkNodeExternalStorage(world, pos); } - - @Override - public String getNodeId() { - return NetworkNodeExternalStorage.ID; - } } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/tile/TileFluidInterface.java b/src/main/java/com/raoulvdberge/refinedstorage/tile/TileFluidInterface.java index 2a29b57f5..760ab1d26 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/tile/TileFluidInterface.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/tile/TileFluidInterface.java @@ -10,7 +10,7 @@ import net.minecraftforge.fluids.FluidStack; import javax.annotation.Nonnull; -public class TileFluidInterface extends TileNode { +public class TileFluidInterface extends NetworkNodeTile { public static final TileDataParameter TANK_IN = new TileDataParameter<>(RSSerializers.FLUID_STACK_SERIALIZER, null, t -> t.getNode().getTankIn().getFluid()); public static final TileDataParameter TANK_OUT = new TileDataParameter<>(RSSerializers.FLUID_STACK_SERIALIZER, null, t -> t.getNode().getTankOut().getFluid()); @@ -43,9 +43,4 @@ public class TileFluidInterface extends TileNode { public NetworkNodeFluidInterface createNode(World world, BlockPos pos) { return new NetworkNodeFluidInterface(world, pos); } - - @Override - public String getNodeId() { - return NetworkNodeFluidInterface.ID; - } } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/tile/TileFluidStorage.java b/src/main/java/com/raoulvdberge/refinedstorage/tile/TileFluidStorage.java index d02327592..54a9b6606 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/tile/TileFluidStorage.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/tile/TileFluidStorage.java @@ -14,7 +14,7 @@ import net.minecraft.world.World; import javax.annotation.Nonnull; -public class TileFluidStorage extends TileNode { +public class TileFluidStorage extends NetworkNodeTile { public static final TileDataParameter PRIORITY = IPrioritizable.createParameter(); public static final TileDataParameter COMPARE = IComparable.createParameter(); public static final TileDataParameter MODE = IFilterable.createParameter(); @@ -36,10 +36,5 @@ public class TileFluidStorage extends TileNode { public NetworkNodeFluidStorage createNode(World world, BlockPos pos) { return new NetworkNodeFluidStorage(world, pos); } - - @Override - public String getNodeId() { - return NetworkNodeFluidStorage.ID; - } } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/tile/TileImporter.java b/src/main/java/com/raoulvdberge/refinedstorage/tile/TileImporter.java index 1e10293bc..174fa808d 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/tile/TileImporter.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/tile/TileImporter.java @@ -11,7 +11,7 @@ import net.minecraft.world.World; import javax.annotation.Nonnull; -public class TileImporter extends TileNode { +public class TileImporter extends NetworkNodeTile { public static final TileDataParameter COMPARE = IComparable.createParameter(); public static final TileDataParameter MODE = IFilterable.createParameter(); public static final TileDataParameter TYPE = IType.createParameter(); @@ -29,9 +29,4 @@ public class TileImporter extends TileNode { public NetworkNodeImporter createNode(World world, BlockPos pos) { return new NetworkNodeImporter(world, pos); } - - @Override - public String getNodeId() { - return NetworkNodeImporter.ID; - } } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/tile/TileInterface.java b/src/main/java/com/raoulvdberge/refinedstorage/tile/TileInterface.java index 56a5243d1..11fe0fe16 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/tile/TileInterface.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/tile/TileInterface.java @@ -9,7 +9,7 @@ import net.minecraft.world.World; import javax.annotation.Nonnull; -public class TileInterface extends TileNode { +public class TileInterface extends NetworkNodeTile { public static final TileDataParameter COMPARE = IComparable.createParameter(); public TileInterface() { @@ -34,9 +34,4 @@ public class TileInterface extends TileNode { public NetworkNodeInterface createNode(World world, BlockPos pos) { return new NetworkNodeInterface(world, pos); } - - @Override - public String getNodeId() { - return NetworkNodeInterface.ID; - } } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/tile/TileNetworkReceiver.java b/src/main/java/com/raoulvdberge/refinedstorage/tile/TileNetworkReceiver.java index 50542744d..925d00018 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/tile/TileNetworkReceiver.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/tile/TileNetworkReceiver.java @@ -7,7 +7,7 @@ import net.minecraft.world.World; import javax.annotation.Nonnull; -public class TileNetworkReceiver extends TileNode { +public class TileNetworkReceiver extends NetworkNodeTile { public TileNetworkReceiver() { super(RSTiles.NETWORK_RECEIVER); } @@ -17,9 +17,4 @@ public class TileNetworkReceiver extends TileNode { public NetworkNodeNetworkReceiver createNode(World world, BlockPos pos) { return new NetworkNodeNetworkReceiver(world, pos); } - - @Override - public String getNodeId() { - return NetworkNodeNetworkReceiver.ID; - } } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/tile/TileNetworkTransmitter.java b/src/main/java/com/raoulvdberge/refinedstorage/tile/TileNetworkTransmitter.java index 38bb91062..784dedbdd 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/tile/TileNetworkTransmitter.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/tile/TileNetworkTransmitter.java @@ -9,7 +9,7 @@ import net.minecraft.world.World; import javax.annotation.Nonnull; -public class TileNetworkTransmitter extends TileNode { +public class TileNetworkTransmitter extends NetworkNodeTile { public static final TileDataParameter DISTANCE = new TileDataParameter<>(DataSerializers.VARINT, 0, t -> { NetworkNodeNetworkTransmitter transmitter = t.getNode(); @@ -31,11 +31,6 @@ public class TileNetworkTransmitter extends TileNode capability, @Nullable Direction facing) { diff --git a/src/main/java/com/raoulvdberge/refinedstorage/tile/TileReader.java b/src/main/java/com/raoulvdberge/refinedstorage/tile/TileReader.java index 24f3ad1ba..773d09ad6 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/tile/TileReader.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/tile/TileReader.java @@ -12,8 +12,8 @@ import net.minecraft.world.World; import javax.annotation.Nonnull; -public class TileReader extends TileNode { - static TileDataParameter createChannelParameter() { +public class TileReader extends NetworkNodeTile { + static TileDataParameter createChannelParameter() { return new TileDataParameter<>(DataSerializers.STRING, "", t -> ((IGuiReaderWriter) t.getNode()).getChannel(), (t, v) -> { ((IGuiReaderWriter) t.getNode()).setChannel(v); @@ -96,9 +96,4 @@ public class TileReader extends TileNode { public NetworkNodeReader createNode(World world, BlockPos pos) { return new NetworkNodeReader(world, pos); } - - @Override - public String getNodeId() { - return NetworkNodeReader.ID; - } } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/tile/TileRelay.java b/src/main/java/com/raoulvdberge/refinedstorage/tile/TileRelay.java index bb5142100..d86072303 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/tile/TileRelay.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/tile/TileRelay.java @@ -7,7 +7,7 @@ import net.minecraft.world.World; import javax.annotation.Nonnull; -public class TileRelay extends TileNode { +public class TileRelay extends NetworkNodeTile { public TileRelay() { super(RSTiles.RELAY); } @@ -17,9 +17,4 @@ public class TileRelay extends TileNode { public NetworkNodeRelay createNode(World world, BlockPos pos) { return new NetworkNodeRelay(world, pos); } - - @Override - public String getNodeId() { - return NetworkNodeRelay.ID; - } } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/tile/TileSecurityManager.java b/src/main/java/com/raoulvdberge/refinedstorage/tile/TileSecurityManager.java index 0af6ca78d..c3cf199d7 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/tile/TileSecurityManager.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/tile/TileSecurityManager.java @@ -7,7 +7,7 @@ import net.minecraft.world.World; import javax.annotation.Nonnull; -public class TileSecurityManager extends TileNode { +public class TileSecurityManager extends NetworkNodeTile { public TileSecurityManager() { super(RSTiles.SECURITY_MANAGER); } @@ -17,9 +17,4 @@ public class TileSecurityManager extends TileNode { public NetworkNodeSecurityManager createNode(World world, BlockPos pos) { return new NetworkNodeSecurityManager(world, pos); } - - @Override - public String getNodeId() { - return NetworkNodeSecurityManager.ID; - } } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/tile/TileStorage.java b/src/main/java/com/raoulvdberge/refinedstorage/tile/TileStorage.java index f8d244af5..23a1ea514 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/tile/TileStorage.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/tile/TileStorage.java @@ -14,7 +14,7 @@ import net.minecraft.world.World; import javax.annotation.Nonnull; -public class TileStorage extends TileNode { +public class TileStorage extends NetworkNodeTile { public static final TileDataParameter PRIORITY = IPrioritizable.createParameter(); public static final TileDataParameter COMPARE = IComparable.createParameter(); public static final TileDataParameter MODE = IFilterable.createParameter(); @@ -36,9 +36,4 @@ public class TileStorage extends TileNode { public NetworkNodeStorage createNode(World world, BlockPos pos) { return new NetworkNodeStorage(world, pos); } - - @Override - public String getNodeId() { - return NetworkNodeStorage.ID; - } } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/tile/TileStorageMonitor.java b/src/main/java/com/raoulvdberge/refinedstorage/tile/TileStorageMonitor.java index 0f06f6de3..b04d43245 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/tile/TileStorageMonitor.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/tile/TileStorageMonitor.java @@ -6,13 +6,12 @@ import com.raoulvdberge.refinedstorage.tile.config.IComparable; import com.raoulvdberge.refinedstorage.tile.data.TileDataParameter; import net.minecraft.item.ItemStack; import net.minecraft.nbt.CompoundNBT; -import net.minecraft.util.Direction; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; import javax.annotation.Nullable; -public class TileStorageMonitor extends TileNode { +public class TileStorageMonitor extends NetworkNodeTile { public static final TileDataParameter COMPARE = IComparable.createParameter(); private static final String NBT_STACK = "Stack"; @@ -33,11 +32,6 @@ public class TileStorageMonitor extends TileNode { return new NetworkNodeStorageMonitor(world, pos); } - @Override - public String getNodeId() { - return NetworkNodeStorageMonitor.ID; - } - @Override public CompoundNBT writeUpdate(CompoundNBT tag) { super.writeUpdate(tag); @@ -61,14 +55,6 @@ public class TileStorageMonitor extends TileNode { amount = tag.getInt(NBT_AMOUNT); } - @Override - protected boolean canCauseRenderUpdate(CompoundNBT tag) { - Direction receivedDirection = Direction.byIndex(tag.getInt(NBT_DIRECTION)); - boolean receivedActive = tag.getBoolean(NBT_ACTIVE); - - return receivedDirection != getDirection() || receivedActive != getNode().isActive(); - } - public int getAmount() { return amount; } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/tile/TileWirelessTransmitter.java b/src/main/java/com/raoulvdberge/refinedstorage/tile/TileWirelessTransmitter.java index 4b43157f8..36b49507a 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/tile/TileWirelessTransmitter.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/tile/TileWirelessTransmitter.java @@ -9,7 +9,7 @@ import net.minecraft.world.World; import javax.annotation.Nonnull; -public class TileWirelessTransmitter extends TileNode { +public class TileWirelessTransmitter extends NetworkNodeTile { public static final TileDataParameter RANGE = new TileDataParameter<>(DataSerializers.VARINT, 0, t -> t.getNode().getRange()); public TileWirelessTransmitter() { @@ -23,9 +23,4 @@ public class TileWirelessTransmitter extends TileNode { +public class TileWriter extends NetworkNodeTile { public static final TileDataParameter CHANNEL = TileReader.createChannelParameter(); public TileWriter() { @@ -84,9 +84,4 @@ public class TileWriter extends TileNode { public NetworkNodeWriter createNode(World world, BlockPos pos) { return new NetworkNodeWriter(world, pos); } - - @Override - public String getNodeId() { - return NetworkNodeWriter.ID; - } } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/tile/craftingmonitor/TileCraftingMonitor.java b/src/main/java/com/raoulvdberge/refinedstorage/tile/craftingmonitor/TileCraftingMonitor.java index 021bbcefd..d14e49923 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/tile/craftingmonitor/TileCraftingMonitor.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/tile/craftingmonitor/TileCraftingMonitor.java @@ -2,7 +2,7 @@ package com.raoulvdberge.refinedstorage.tile.craftingmonitor; import com.raoulvdberge.refinedstorage.RSTiles; import com.raoulvdberge.refinedstorage.apiimpl.network.node.NetworkNodeCraftingMonitor; -import com.raoulvdberge.refinedstorage.tile.TileNode; +import com.raoulvdberge.refinedstorage.tile.NetworkNodeTile; import com.raoulvdberge.refinedstorage.tile.data.TileDataParameter; import net.minecraft.network.datasync.DataSerializers; import net.minecraft.util.math.BlockPos; @@ -12,7 +12,7 @@ import javax.annotation.Nonnull; import java.util.Optional; import java.util.UUID; -public class TileCraftingMonitor extends TileNode { +public class TileCraftingMonitor extends NetworkNodeTile { public static final TileDataParameter, TileCraftingMonitor> TAB_SELECTED = new TileDataParameter<>(DataSerializers.OPTIONAL_UNIQUE_ID, Optional.empty(), t -> t.getNode().getTabSelected(), (t, v) -> { if (v.isPresent() && t.getNode().getTabSelected().isPresent() && v.get().equals(t.getNode().getTabSelected().get())) { t.getNode().setTabSelected(Optional.empty()); @@ -41,9 +41,4 @@ public class TileCraftingMonitor extends TileNode { public NetworkNodeCraftingMonitor createNode(World world, BlockPos pos) { return new NetworkNodeCraftingMonitor(world, pos); } - - @Override - public String getNodeId() { - return NetworkNodeCraftingMonitor.ID; - } } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/tile/direction/DirectionHandlerNetworkNode.java b/src/main/java/com/raoulvdberge/refinedstorage/tile/direction/DirectionHandlerNetworkNode.java deleted file mode 100644 index 091775de9..000000000 --- a/src/main/java/com/raoulvdberge/refinedstorage/tile/direction/DirectionHandlerNetworkNode.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.raoulvdberge.refinedstorage.tile.direction; - -import com.raoulvdberge.refinedstorage.tile.TileNode; -import net.minecraft.nbt.CompoundNBT; -import net.minecraft.util.Direction; - -public class DirectionHandlerNetworkNode implements IDirectionHandler { - private TileNode tile; - - public DirectionHandlerNetworkNode(TileNode tile) { - this.tile = tile; - } - - @Override - public void setDirection(Direction direction) { - tile.getNode().setDirection(direction); - } - - @Override - public Direction getDirection() { - return tile.getNode().getDirection(); - } - - @Override - public void writeToTileNbt(CompoundNBT tag) { - // NO OP - } - - @Override - public void readFromTileNbt(CompoundNBT tag) { - // NO OP - } -} diff --git a/src/main/java/com/raoulvdberge/refinedstorage/tile/direction/DirectionHandlerTile.java b/src/main/java/com/raoulvdberge/refinedstorage/tile/direction/DirectionHandlerTile.java deleted file mode 100644 index 60f8e62c1..000000000 --- a/src/main/java/com/raoulvdberge/refinedstorage/tile/direction/DirectionHandlerTile.java +++ /dev/null @@ -1,32 +0,0 @@ -package com.raoulvdberge.refinedstorage.tile.direction; - -import net.minecraft.nbt.CompoundNBT; -import net.minecraft.util.Direction; - -public class DirectionHandlerTile implements IDirectionHandler { - private static final String NBT_DIRECTION = "Direction"; - - private Direction direction = Direction.NORTH; - - @Override - public void setDirection(Direction direction) { - this.direction = direction; - } - - @Override - public Direction getDirection() { - return direction; - } - - @Override - public void writeToTileNbt(CompoundNBT tag) { - tag.putInt(NBT_DIRECTION, direction.ordinal()); - } - - @Override - public void readFromTileNbt(CompoundNBT tag) { - if (tag.contains(NBT_DIRECTION)) { - direction = Direction.byIndex(tag.getInt(NBT_DIRECTION)); - } - } -} diff --git a/src/main/java/com/raoulvdberge/refinedstorage/tile/direction/IDirectionHandler.java b/src/main/java/com/raoulvdberge/refinedstorage/tile/direction/IDirectionHandler.java deleted file mode 100644 index 5ed0a1834..000000000 --- a/src/main/java/com/raoulvdberge/refinedstorage/tile/direction/IDirectionHandler.java +++ /dev/null @@ -1,14 +0,0 @@ -package com.raoulvdberge.refinedstorage.tile.direction; - -import net.minecraft.nbt.CompoundNBT; -import net.minecraft.util.Direction; - -public interface IDirectionHandler { - void setDirection(Direction direction); - - Direction getDirection(); - - void writeToTileNbt(CompoundNBT tag); - - void readFromTileNbt(CompoundNBT tag); -} diff --git a/src/main/java/com/raoulvdberge/refinedstorage/tile/grid/TileGrid.java b/src/main/java/com/raoulvdberge/refinedstorage/tile/grid/TileGrid.java index 84f29bb9e..be1b7ef9f 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/tile/grid/TileGrid.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/tile/grid/TileGrid.java @@ -5,7 +5,7 @@ import com.raoulvdberge.refinedstorage.api.network.grid.IGrid; import com.raoulvdberge.refinedstorage.apiimpl.network.node.NetworkNodeGrid; import com.raoulvdberge.refinedstorage.screen.BaseScreen; import com.raoulvdberge.refinedstorage.screen.grid.GuiGrid; -import com.raoulvdberge.refinedstorage.tile.TileNode; +import com.raoulvdberge.refinedstorage.tile.NetworkNodeTile; import com.raoulvdberge.refinedstorage.tile.config.IType; import com.raoulvdberge.refinedstorage.tile.data.TileDataParameter; import net.minecraft.network.datasync.DataSerializers; @@ -14,7 +14,7 @@ import net.minecraft.world.World; import javax.annotation.Nonnull; -public class TileGrid extends TileNode { +public class TileGrid extends NetworkNodeTile { public static final TileDataParameter VIEW_TYPE = new TileDataParameter<>(DataSerializers.VARINT, 0, t -> t.getNode().getViewType(), (t, v) -> { if (IGrid.isValidViewType(v)) { t.getNode().setViewType(v); @@ -93,11 +93,6 @@ public class TileGrid extends TileNode { return new NetworkNodeGrid(world, pos); } - @Override - public String getNodeId() { - return NetworkNodeGrid.ID; - } - /* TODO @Override public boolean hasCapability(@Nonnull Capability capability, @Nullable Direction side) { 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 f1c264ff8..fa96b3a40 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 @@ -31,7 +31,7 @@ import com.raoulvdberge.refinedstorage.inventory.listener.ListenerTile; import com.raoulvdberge.refinedstorage.render.constants.ConstantsDisk; import com.raoulvdberge.refinedstorage.screen.BaseScreen; import com.raoulvdberge.refinedstorage.screen.grid.GuiGrid; -import com.raoulvdberge.refinedstorage.tile.TileBase; +import com.raoulvdberge.refinedstorage.tile.BaseTile; import com.raoulvdberge.refinedstorage.tile.config.IRedstoneConfigurable; import com.raoulvdberge.refinedstorage.tile.config.RedstoneMode; import com.raoulvdberge.refinedstorage.tile.data.TileDataManager; @@ -48,6 +48,7 @@ import net.minecraft.item.ItemStack; import net.minecraft.nbt.CompoundNBT; import net.minecraft.nbt.ListNBT; import net.minecraft.network.datasync.DataSerializers; +import net.minecraft.util.Direction; import net.minecraft.world.server.ServerWorld; import net.minecraftforge.common.capabilities.Capability; import net.minecraftforge.common.util.Constants; @@ -63,7 +64,7 @@ import javax.annotation.Nullable; import java.util.ArrayList; import java.util.List; -public class TilePortableGrid extends TileBase implements IGrid, IPortableGrid, IRedstoneConfigurable, IStorageDiskContainerContext, IPortableGrid.IPortableGridRenderInfo { +public class TilePortableGrid extends BaseTile implements IGrid, IPortableGrid, IRedstoneConfigurable, IStorageDiskContainerContext, IPortableGrid.IPortableGridRenderInfo { public static int FACTORY_ID; public static final TileDataParameter REDSTONE_MODE = RedstoneMode.createParameter(); @@ -705,7 +706,7 @@ public class TilePortableGrid extends TileBase implements IGrid, IPortableGrid, @Nonnull @Override - public LazyOptional getCapability(@Nonnull Capability cap) { + public LazyOptional getCapability(@Nonnull Capability cap, @Nullable Direction direction) { if (cap == CapabilityEnergy.ENERGY) { return energyStorageCap.cast(); }