Add basic grid block

This commit is contained in:
raoulvdberge
2019-10-06 19:25:22 +02:00
parent 3bd42f9174
commit 87a891eedc
25 changed files with 286 additions and 277 deletions

View File

@@ -1,8 +1,10 @@
package com.raoulvdberge.refinedstorage;
import com.raoulvdberge.refinedstorage.api.network.grid.GridType;
import com.raoulvdberge.refinedstorage.apiimpl.API;
import com.raoulvdberge.refinedstorage.apiimpl.network.NetworkNodeListener;
import com.raoulvdberge.refinedstorage.apiimpl.network.node.CableNetworkNode;
import com.raoulvdberge.refinedstorage.apiimpl.network.node.GridNetworkNode;
import com.raoulvdberge.refinedstorage.apiimpl.network.node.diskdrive.DiskDriveNetworkNode;
import com.raoulvdberge.refinedstorage.apiimpl.storage.FluidStorageType;
import com.raoulvdberge.refinedstorage.apiimpl.storage.ItemStorageType;
@@ -25,6 +27,7 @@ import com.raoulvdberge.refinedstorage.tile.CableTile;
import com.raoulvdberge.refinedstorage.tile.ControllerTile;
import com.raoulvdberge.refinedstorage.tile.DiskDriveTile;
import com.raoulvdberge.refinedstorage.tile.data.TileDataManager;
import com.raoulvdberge.refinedstorage.tile.grid.GridTile;
import com.raoulvdberge.refinedstorage.util.BlockUtils;
import net.minecraft.block.Block;
import net.minecraft.inventory.container.ContainerType;
@@ -67,7 +70,6 @@ public final class RS {
FMLJavaModLoadingContext.get().getModEventBus().addGenericListener(Item.class, this::onRegisterItems);
FMLJavaModLoadingContext.get().getModEventBus().addGenericListener(IRecipeSerializer.class, this::onRegisterRecipeSerializers);
FMLJavaModLoadingContext.get().getModEventBus().addGenericListener(ContainerType.class, this::onRegisterContainers);
}
@SubscribeEvent
@@ -88,6 +90,8 @@ public final class RS {
});
API.instance().getNetworkNodeRegistry().add(CableNetworkNode.ID, (tag, world, pos) -> new CableNetworkNode(world, pos));
API.instance().getNetworkNodeRegistry().add(GridNetworkNode.ID, (tag, world, pos) -> new GridNetworkNode(world, pos, GridType.NORMAL));
}
@SubscribeEvent
@@ -103,6 +107,7 @@ public final class RS {
e.getRegistry().register(new MachineCasingBlock());
e.getRegistry().register(new CableBlock());
e.getRegistry().register(new DiskDriveBlock());
e.getRegistry().register(new GridBlock(GridType.NORMAL));
}
@SubscribeEvent
@@ -119,6 +124,10 @@ public final class RS {
e.getRegistry().register(registerTileDataParameters(
TileEntityType.Builder.create(DiskDriveTile::new, RSBlocks.DISK_DRIVE).build(null).setRegistryName(RS.ID, "disk_drive")
));
e.getRegistry().register(registerTileDataParameters(
TileEntityType.Builder.create(() -> new GridTile(GridType.NORMAL), RSBlocks.GRID).build(null).setRegistryName(RS.ID, "grid")
));
}
private <T extends TileEntity> TileEntityType<T> registerTileDataParameters(TileEntityType<T> t) {
@@ -185,6 +194,7 @@ public final class RS {
e.getRegistry().register(BlockUtils.createBlockItemFor(RSBlocks.MACHINE_CASING));
e.getRegistry().register(BlockUtils.createBlockItemFor(RSBlocks.CABLE));
e.getRegistry().register(BlockUtils.createBlockItemFor(RSBlocks.DISK_DRIVE));
e.getRegistry().register(BlockUtils.createBlockItemFor(RSBlocks.GRID));
}
/* TODO

View File

@@ -4,7 +4,6 @@ import com.raoulvdberge.refinedstorage.block.*;
import net.minecraftforge.registries.ObjectHolder;
public final class RSBlocks {
public static final BlockGrid GRID = new BlockGrid();
public static final BlockExternalStorage EXTERNAL_STORAGE = new BlockExternalStorage();
public static final BlockImporter IMPORTER = new BlockImporter();
public static final BlockExporter EXPORTER = new BlockExporter();
@@ -43,6 +42,9 @@ public final class RSBlocks {
@ObjectHolder(RS.ID + ":disk_drive")
public static final DiskDriveBlock DISK_DRIVE = null;
@ObjectHolder(RS.ID + ":grid")
public static final GridBlock GRID = null;
public static final BlockStorageMonitor STORAGE_MONITOR = new BlockStorageMonitor();
public static final BlockPortableGrid PORTABLE_GRID = new BlockPortableGrid();
public static final BlockCrafterManager CRAFTER_MANAGER = new BlockCrafterManager();

View File

@@ -2,7 +2,7 @@ package com.raoulvdberge.refinedstorage;
import com.raoulvdberge.refinedstorage.tile.*;
import com.raoulvdberge.refinedstorage.tile.craftingmonitor.TileCraftingMonitor;
import com.raoulvdberge.refinedstorage.tile.grid.TileGrid;
import com.raoulvdberge.refinedstorage.tile.grid.GridTile;
import com.raoulvdberge.refinedstorage.tile.grid.portable.TilePortableGrid;
import net.minecraft.tileentity.TileEntityType;
import net.minecraftforge.registries.ObjectHolder;
@@ -41,8 +41,10 @@ public class RSTiles {
public static final TileEntityType<TileFluidInterface> FLUID_INTERFACE = null;
//@ObjectHolder(RS.ID + ":fluid_storage")
public static final TileEntityType<TileFluidInterface> FLUID_STORAGE = null;
//@ObjectHolder(RS.ID + ":grid")
public static final TileEntityType<TileGrid> GRID = null;
@ObjectHolder(RS.ID + ":grid")
public static final TileEntityType<GridTile> GRID = null;
//@ObjectHolder(RS.ID + ":importer")
public static final TileEntityType<TileImporter> IMPORTER = null;
//@ObjectHolder(RS.ID + ":interface")

View File

@@ -3,7 +3,7 @@ package com.raoulvdberge.refinedstorage.apiimpl.network.grid;
import com.raoulvdberge.refinedstorage.api.network.grid.GridFactoryType;
import com.raoulvdberge.refinedstorage.api.network.grid.IGrid;
import com.raoulvdberge.refinedstorage.api.network.grid.IGridFactory;
import com.raoulvdberge.refinedstorage.tile.grid.TileGrid;
import com.raoulvdberge.refinedstorage.tile.grid.GridTile;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity;
@@ -24,8 +24,8 @@ public class GridFactoryGridBlock implements IGridFactory {
public IGrid createFromBlock(PlayerEntity player, BlockPos pos) {
TileEntity tile = getRelevantTile(player.getEntityWorld(), pos);
if (tile instanceof TileGrid) {
return ((TileGrid) tile).getNode();
if (tile instanceof GridTile) {
return ((GridTile) tile).getNode();
}
return null;

View File

@@ -1,7 +1,5 @@
package com.raoulvdberge.refinedstorage.apiimpl.network.node;
import com.raoulvdberge.refinedstorage.RS;
import com.raoulvdberge.refinedstorage.RSBlocks;
import com.raoulvdberge.refinedstorage.RSItems;
import com.raoulvdberge.refinedstorage.api.network.INetwork;
import com.raoulvdberge.refinedstorage.api.network.grid.*;
@@ -16,7 +14,7 @@ import com.raoulvdberge.refinedstorage.api.util.IFilter;
import com.raoulvdberge.refinedstorage.apiimpl.API;
import com.raoulvdberge.refinedstorage.apiimpl.storage.StorageCacheListenerGridFluid;
import com.raoulvdberge.refinedstorage.apiimpl.storage.StorageCacheListenerGridItem;
import com.raoulvdberge.refinedstorage.block.BlockGrid;
import com.raoulvdberge.refinedstorage.block.NodeBlock;
import com.raoulvdberge.refinedstorage.inventory.fluid.FluidInventory;
import com.raoulvdberge.refinedstorage.inventory.item.ItemHandlerBase;
import com.raoulvdberge.refinedstorage.inventory.item.ItemHandlerFilter;
@@ -25,9 +23,8 @@ import com.raoulvdberge.refinedstorage.inventory.listener.ListenerNetworkNode;
import com.raoulvdberge.refinedstorage.item.PatternItem;
import com.raoulvdberge.refinedstorage.tile.config.IType;
import com.raoulvdberge.refinedstorage.tile.data.TileDataManager;
import com.raoulvdberge.refinedstorage.tile.grid.TileGrid;
import com.raoulvdberge.refinedstorage.tile.grid.GridTile;
import com.raoulvdberge.refinedstorage.util.StackUtils;
import net.minecraft.block.BlockState;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.entity.player.ServerPlayerEntity;
import net.minecraft.inventory.CraftResultInventory;
@@ -58,7 +55,7 @@ import java.util.HashSet;
import java.util.List;
import java.util.Set;
public class NetworkNodeGrid extends NetworkNode implements IGridNetworkAware, IType {
public class GridNetworkNode extends NetworkNode implements IGridNetworkAware, IType {
public static final String ID = "grid";
public static int FACTORY_ID = 0;
@@ -102,23 +99,23 @@ public class NetworkNodeGrid extends NetworkNode implements IGridNetworkAware, I
ItemStack pattern = getStackInSlot(slot);
if (slot == 1 && !pattern.isEmpty()) {
/* TODO boolean isPatternProcessing = ItemPattern.isProcessing(pattern);
boolean isPatternProcessing = PatternItem.isProcessing(pattern);
if (isPatternProcessing && isProcessingPattern()) {
for (int i = 0; i < 9; ++i) {
processingMatrix.setStackInSlot(i, StackUtils.nullToEmpty(ItemPattern.getInputSlot(pattern, i)));
processingMatrixFluids.setFluid(i, ItemPattern.getFluidInputSlot(pattern, i));
processingMatrix.setStackInSlot(i, StackUtils.nullToEmpty(PatternItem.getInputSlot(pattern, i)));
processingMatrixFluids.setFluid(i, PatternItem.getFluidInputSlot(pattern, i));
}
for (int i = 0; i < 9; ++i) {
processingMatrix.setStackInSlot(9 + i, StackUtils.nullToEmpty(ItemPattern.getOutputSlot(pattern, i)));
processingMatrixFluids.setFluid(9 + i, ItemPattern.getFluidOutputSlot(pattern, i));
processingMatrix.setStackInSlot(9 + i, StackUtils.nullToEmpty(PatternItem.getOutputSlot(pattern, i)));
processingMatrixFluids.setFluid(9 + i, PatternItem.getFluidOutputSlot(pattern, i));
}
} else if (!isPatternProcessing && !isProcessingPattern()) {
for (int i = 0; i < 9; ++i) {
matrix.setInventorySlotContents(i, StackUtils.nullToEmpty(ItemPattern.getInputSlot(pattern, i)));
matrix.setInventorySlotContents(i, StackUtils.nullToEmpty(PatternItem.getInputSlot(pattern, i)));
}
}*/
}
}
}
@@ -161,13 +158,17 @@ public class NetworkNodeGrid extends NetworkNode implements IGridNetworkAware, I
private boolean processingPattern = false;
private int processingType = IType.ITEMS;
public NetworkNodeGrid(World world, BlockPos pos) {
private final GridType gridType;
public GridNetworkNode(World world, BlockPos pos, GridType gridType) {
super(world, pos);
this.gridType = gridType;
}
@Override
public int getEnergyUsage() {
switch (getGridType()) {
/* @TODO switch (getGridType()) {
case NORMAL:
return RS.INSTANCE.config.gridUsage;
case CRAFTING:
@@ -178,7 +179,8 @@ public class NetworkNodeGrid extends NetworkNode implements IGridNetworkAware, I
return RS.INSTANCE.config.fluidGridUsage;
default:
return 0;
}
}*/
return 0;
}
public void setViewType(int viewType) {
@@ -218,7 +220,7 @@ public class NetworkNodeGrid extends NetworkNode implements IGridNetworkAware, I
}
public boolean isProcessingPattern() {
return world.isRemote ? TileGrid.PROCESSING_PATTERN.getValue() : processingPattern;
return world.isRemote ? GridTile.PROCESSING_PATTERN.getValue() : processingPattern;
}
public void setProcessingPattern(boolean processingPattern) {
@@ -227,15 +229,7 @@ public class NetworkNodeGrid extends NetworkNode implements IGridNetworkAware, I
@Override
public GridType getGridType() {
if (type == null) {
BlockState state = world.getBlockState(pos);
if (state.getBlock() == RSBlocks.GRID) {
type = state.get(BlockGrid.TYPE);
}
}
return type == null ? GridType.NORMAL : type;
return gridType;
}
@Override
@@ -454,6 +448,11 @@ public class NetworkNodeGrid extends NetworkNode implements IGridNetworkAware, I
// NO OP
}
@Override
public boolean isActive() {
return world.getBlockState(pos).get(NodeBlock.CONNECTED);
}
@Override
public void onCrafted(PlayerEntity player) {
onCrafted(this, world, player);
@@ -626,37 +625,37 @@ public class NetworkNodeGrid extends NetworkNode implements IGridNetworkAware, I
@Override
public int getViewType() {
return world.isRemote ? TileGrid.VIEW_TYPE.getValue() : viewType;
return world.isRemote ? GridTile.VIEW_TYPE.getValue() : viewType;
}
@Override
public int getSortingDirection() {
return world.isRemote ? TileGrid.SORTING_DIRECTION.getValue() : sortingDirection;
return world.isRemote ? GridTile.SORTING_DIRECTION.getValue() : sortingDirection;
}
@Override
public int getSortingType() {
return world.isRemote ? TileGrid.SORTING_TYPE.getValue() : sortingType;
return world.isRemote ? GridTile.SORTING_TYPE.getValue() : sortingType;
}
@Override
public int getSearchBoxMode() {
return world.isRemote ? TileGrid.SEARCH_BOX_MODE.getValue() : searchBoxMode;
return world.isRemote ? GridTile.SEARCH_BOX_MODE.getValue() : searchBoxMode;
}
@Override
public int getSize() {
return world.isRemote ? TileGrid.SIZE.getValue() : size;
return world.isRemote ? GridTile.SIZE.getValue() : size;
}
@Override
public int getTabSelected() {
return world.isRemote ? TileGrid.TAB_SELECTED.getValue() : tabSelected;
return world.isRemote ? GridTile.TAB_SELECTED.getValue() : tabSelected;
}
@Override
public int getTabPage() {
return world.isRemote ? TileGrid.TAB_PAGE.getValue() : Math.min(tabPage, getTotalTabPages());
return world.isRemote ? GridTile.TAB_PAGE.getValue() : Math.min(tabPage, getTotalTabPages());
}
@Override
@@ -666,44 +665,44 @@ public class NetworkNodeGrid extends NetworkNode implements IGridNetworkAware, I
@Override
public void onViewTypeChanged(int type) {
TileDataManager.setParameter(TileGrid.VIEW_TYPE, type);
TileDataManager.setParameter(GridTile.VIEW_TYPE, type);
}
@Override
public void onSortingTypeChanged(int type) {
TileDataManager.setParameter(TileGrid.SORTING_TYPE, type);
TileDataManager.setParameter(GridTile.SORTING_TYPE, type);
}
@Override
public void onSortingDirectionChanged(int direction) {
TileDataManager.setParameter(TileGrid.SORTING_DIRECTION, direction);
TileDataManager.setParameter(GridTile.SORTING_DIRECTION, direction);
}
@Override
public void onSearchBoxModeChanged(int searchBoxMode) {
TileDataManager.setParameter(TileGrid.SEARCH_BOX_MODE, searchBoxMode);
TileDataManager.setParameter(GridTile.SEARCH_BOX_MODE, searchBoxMode);
}
@Override
public void onSizeChanged(int size) {
TileDataManager.setParameter(TileGrid.SIZE, size);
TileDataManager.setParameter(GridTile.SIZE, size);
}
@Override
public void onTabSelectionChanged(int tab) {
TileDataManager.setParameter(TileGrid.TAB_SELECTED, tab);
TileDataManager.setParameter(GridTile.TAB_SELECTED, tab);
}
@Override
public void onTabPageChanged(int page) {
if (page >= 0 && page <= getTotalTabPages()) {
TileDataManager.setParameter(TileGrid.TAB_PAGE, page);
TileDataManager.setParameter(GridTile.TAB_PAGE, page);
}
}
@Override
public int getType() {
return world.isRemote ? TileGrid.PROCESSING_TYPE.getValue() : processingType;
return world.isRemote ? GridTile.PROCESSING_TYPE.getValue() : processingType;
}
@Override

View File

@@ -6,8 +6,8 @@ import com.raoulvdberge.refinedstorage.api.network.node.INetworkNode;
import com.raoulvdberge.refinedstorage.api.util.Action;
import com.raoulvdberge.refinedstorage.apiimpl.API;
import com.raoulvdberge.refinedstorage.block.BaseBlock;
import com.raoulvdberge.refinedstorage.block.NodeBlock;
import com.raoulvdberge.refinedstorage.tile.config.RedstoneMode;
import com.raoulvdberge.refinedstorage.util.WorldUtils;
import net.minecraft.block.BlockState;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
@@ -51,8 +51,6 @@ public abstract class NetworkNode implements INetworkNode, INetworkNodeVisitor {
private boolean couldUpdate;
private int ticksSinceUpdateChanged;
private boolean active;
public NetworkNode(World world, BlockPos pos) {
if (world == null) {
throw new IllegalArgumentException("World cannot be null");
@@ -93,7 +91,11 @@ public abstract class NetworkNode implements INetworkNode, INetworkNodeVisitor {
}
protected void onConnectedStateChange(INetwork network, boolean state) {
// NO OP
BlockState blockState = world.getBlockState(pos);
if (blockState.getBlock() instanceof NodeBlock && ((NodeBlock) blockState.getBlock()).hasConnectedState()) {
world.setBlockState(pos, world.getBlockState(pos).with(NodeBlock.CONNECTED, state));
}
}
@Override
@@ -126,6 +128,11 @@ public abstract class NetworkNode implements INetworkNode, INetworkNodeVisitor {
throttlingDisabled = true;
}
// @TODO: DELETE.
public boolean hasConnectivityState() {
return true;
}
@Override
public void update() {
++ticks;
@@ -140,10 +147,6 @@ public abstract class NetworkNode implements INetworkNode, INetworkNodeVisitor {
couldUpdate = canUpdate;
throttlingDisabled = false;
if (hasConnectivityState()) {
WorldUtils.updateBlock(world, pos);
}
if (network != null) {
onConnectedStateChange(network, canUpdate);
@@ -247,18 +250,6 @@ public abstract class NetworkNode implements INetworkNode, INetworkNodeVisitor {
return false;
}
public boolean hasConnectivityState() {
return false;
}
public boolean isActive() {
return active;
}
public void setActive(boolean active) {
this.active = active;
}
public void setOwner(@Nullable UUID owner) {
this.owner = owner;

View File

@@ -2,6 +2,7 @@ package com.raoulvdberge.refinedstorage.apiimpl.network.node;
import com.raoulvdberge.refinedstorage.RS;
import com.raoulvdberge.refinedstorage.api.network.grid.IGrid;
import com.raoulvdberge.refinedstorage.block.NodeBlock;
import com.raoulvdberge.refinedstorage.tile.TileCrafterManager;
import net.minecraft.entity.player.ServerPlayerEntity;
import net.minecraft.nbt.CompoundNBT;
@@ -80,4 +81,8 @@ public class NetworkNodeCrafterManager extends NetworkNode {
public boolean hasConnectivityState() {
return true;
}
public boolean isActive() {
return world.getBlockState(pos).get(NodeBlock.CONNECTED);
}
}

View File

@@ -3,6 +3,7 @@ package com.raoulvdberge.refinedstorage.apiimpl.network.node;
import com.raoulvdberge.refinedstorage.RS;
import com.raoulvdberge.refinedstorage.api.autocrafting.ICraftingManager;
import com.raoulvdberge.refinedstorage.api.autocrafting.task.ICraftingTask;
import com.raoulvdberge.refinedstorage.block.NodeBlock;
import com.raoulvdberge.refinedstorage.tile.craftingmonitor.ICraftingMonitor;
import com.raoulvdberge.refinedstorage.tile.craftingmonitor.TileCraftingMonitor;
import com.raoulvdberge.refinedstorage.tile.data.TileDataManager;
@@ -75,6 +76,11 @@ public class NetworkNodeCraftingMonitor extends NetworkNode implements ICrafting
return network != null ? network.getCraftingManager() : null;
}
@Override
public boolean isActive() {
return world.getBlockState(pos).get(NodeBlock.CONNECTED);
}
@Override
public CompoundNBT write(CompoundNBT tag) {
super.write(tag);

View File

@@ -3,6 +3,7 @@ package com.raoulvdberge.refinedstorage.apiimpl.network.node;
import com.raoulvdberge.refinedstorage.RS;
import com.raoulvdberge.refinedstorage.api.network.readerwriter.IReader;
import com.raoulvdberge.refinedstorage.apiimpl.network.node.cover.CoverManager;
import com.raoulvdberge.refinedstorage.block.NodeBlock;
import com.raoulvdberge.refinedstorage.tile.TileReader;
import com.raoulvdberge.refinedstorage.tile.data.TileDataParameter;
import net.minecraft.nbt.CompoundNBT;
@@ -62,6 +63,11 @@ public class NetworkNodeReader extends NetworkNode implements IReader, IGuiReade
return TileReader.REDSTONE_MODE;
}
@Override
public boolean isActive() {
return world.getBlockState(pos).get(NodeBlock.CONNECTED);
}
@Override
public boolean hasConnectivityState() {
return true;

View File

@@ -6,6 +6,7 @@ import com.raoulvdberge.refinedstorage.api.network.readerwriter.IReaderWriterCha
import com.raoulvdberge.refinedstorage.api.network.readerwriter.IReaderWriterHandler;
import com.raoulvdberge.refinedstorage.api.network.readerwriter.IWriter;
import com.raoulvdberge.refinedstorage.apiimpl.network.node.cover.CoverManager;
import com.raoulvdberge.refinedstorage.block.NodeBlock;
import com.raoulvdberge.refinedstorage.tile.TileWriter;
import com.raoulvdberge.refinedstorage.tile.data.TileDataParameter;
import net.minecraft.nbt.CompoundNBT;
@@ -94,6 +95,11 @@ public class NetworkNodeWriter extends NetworkNode implements IWriter, IGuiReade
return TileWriter.REDSTONE_MODE;
}
@Override
public boolean isActive() {
return world.getBlockState(pos).get(NodeBlock.CONNECTED);
}
@Override
public boolean hasConnectivityState() {
return true;

View File

@@ -1,21 +1,58 @@
package com.raoulvdberge.refinedstorage.block;
import com.raoulvdberge.refinedstorage.RS;
import com.raoulvdberge.refinedstorage.api.network.grid.GridType;
import com.raoulvdberge.refinedstorage.block.info.BlockInfoBuilder;
import com.raoulvdberge.refinedstorage.tile.grid.TileGrid;
import net.minecraft.state.EnumProperty;
import com.raoulvdberge.refinedstorage.block.info.BlockDirection;
import com.raoulvdberge.refinedstorage.tile.grid.GridTile;
import com.raoulvdberge.refinedstorage.util.BlockUtils;
import net.minecraft.block.BlockState;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.BlockRenderLayer;
import net.minecraft.world.IBlockReader;
public class BlockGrid extends BlockNode {
public static final EnumProperty<GridType> TYPE = EnumProperty.create("type", GridType.class);
import javax.annotation.Nullable;
public BlockGrid() {
super(BlockInfoBuilder.forId("grid").tileEntity(TileGrid::new).create());
public class GridBlock extends NodeBlock {
private final GridType type;
public GridBlock(GridType type) {
super(BlockUtils.DEFAULT_ROCK_PROPERTIES);
this.type = type;
this.setRegistryName(RS.ID, type == GridType.NORMAL ? "grid" : type.getName() + "_grid");
}
/*
@Override
public BlockRenderLayer getRenderLayer() {
return BlockRenderLayer.CUTOUT;
}
@Override
public BlockDirection getDirection() {
return BlockDirection.HORIZONTAL;
}
@Override
public boolean hasConnectedState() {
return true;
}
@Override
public boolean hasTileEntity(BlockState state) {
return true;
}
@Nullable
@Override
public TileEntity createTileEntity(BlockState state, IBlockReader world) {
return new GridTile(type);
}
/*
@Override
@OnlyIn(Dist.CLIENT)
public void registerModels(IModelRegistration modelRegistration) {
modelRegistration.setModel(this, GridType.NORMAL.getId(), new ModelResourceLocation(info.getId(), "connected=false,direction=north,type=normal"));
modelRegistration.setModel(this, GridType.CRAFTING.getId(), new ModelResourceLocation(info.getId(), "connected=false,direction=north,type=crafting"));
modelRegistration.setModel(this, GridType.PATTERN.getId(), new ModelResourceLocation(info.getId(), "connected=false,direction=north,type=pattern"));
modelRegistration.setModel(this, GridType.FLUID.getId(), new ModelResourceLocation(info.getId(), "connected=false,direction=north,type=fluid"));
@@ -29,48 +66,8 @@ public class BlockGrid extends BlockNode {
));
}
@Override
public BlockRenderLayer getRenderLayer() {
return BlockRenderLayer.CUTOUT;
}
@Override
@Nullable
public BlockDirection getDirection() {
return BlockDirection.HORIZONTAL;
}
@Override
public void getSubBlocks(CreativeTabs tab, NonNullList<ItemStack> items) {
for (int i = 0; i <= 3; i++) {
items.add(new ItemStack(this, 1, i));
}
}
@Override
protected BlockStateContainer createBlockState() {
return createBlockStateBuilder()
.add(TYPE)
.build();
}
@Override
public BlockState getStateFromMeta(int meta) {
return getDefaultState().withProperty(TYPE, meta == 0 ? GridType.NORMAL : (meta == 1 ? GridType.CRAFTING : (meta == 2 ? GridType.PATTERN : GridType.FLUID)));
}
@Override
public int getMetaFromState(BlockState state) {
return state.getValue(TYPE) == GridType.NORMAL ? 0 : (state.getValue(TYPE) == GridType.CRAFTING ? 1 : (state.getValue(TYPE) == GridType.PATTERN ? 2 : 3));
}
@Override
public boolean onBlockActivated(World world, BlockPos pos, BlockState state, PlayerEntity player, EnumHand hand, Direction side, float hitX, float hitY, float hitZ) {
return openNetworkGui(player, world, pos, side, () -> API.instance().getGridManager().openGrid(NetworkNodeGrid.FACTORY_ID, (ServerPlayerEntity) player, pos));
}*/
@Override
public boolean hasConnectedState() {
return true;
}
}

View File

@@ -24,6 +24,10 @@ public abstract class NodeBlock extends BaseBlock {
public NodeBlock(Block.Properties props) {
super(props);
if (hasConnectedState()) {
this.setDefaultState(this.getStateContainer().getBaseState().with(CONNECTED, false));
}
}
@Override

View File

@@ -8,7 +8,7 @@ import com.raoulvdberge.refinedstorage.api.network.grid.handler.IFluidGridHandle
import com.raoulvdberge.refinedstorage.api.network.grid.handler.IItemGridHandler;
import com.raoulvdberge.refinedstorage.api.storage.IStorageCache;
import com.raoulvdberge.refinedstorage.api.storage.IStorageCacheListener;
import com.raoulvdberge.refinedstorage.apiimpl.network.node.NetworkNodeGrid;
import com.raoulvdberge.refinedstorage.apiimpl.network.node.GridNetworkNode;
import com.raoulvdberge.refinedstorage.container.slot.filter.FilterSlot;
import com.raoulvdberge.refinedstorage.container.slot.filter.FluidFilterSlot;
import com.raoulvdberge.refinedstorage.container.slot.grid.CraftingGridSlot;
@@ -158,10 +158,10 @@ public class GridContainer extends BaseContainer implements IGridCraftingListene
private void addPatternSlots() {
int headerAndSlots = display.getTopHeight() + (display.getVisibleRows() * 18);
addSlot(new SlotItemHandler(((NetworkNodeGrid) grid).getPatterns(), 0, 172, headerAndSlots + 4));
addSlot(new SlotItemHandler(((NetworkNodeGrid) grid).getPatterns(), 1, 172, headerAndSlots + 40));
addSlot(new SlotItemHandler(((GridNetworkNode) grid).getPatterns(), 0, 172, headerAndSlots + 4));
addSlot(new SlotItemHandler(((GridNetworkNode) grid).getPatterns(), 1, 172, headerAndSlots + 40));
transferManager.addBiTransfer(getPlayer().inventory, ((NetworkNodeGrid) grid).getPatterns());
transferManager.addBiTransfer(getPlayer().inventory, ((GridNetworkNode) grid).getPatterns());
// Processing patterns
int ox = 8;
@@ -169,8 +169,8 @@ public class GridContainer extends BaseContainer implements IGridCraftingListene
int y = headerAndSlots + 4;
for (int i = 0; i < 9 * 2; ++i) {
addSlot(new FilterSlot(((NetworkNodeGrid) grid).getProcessingMatrix(), i, x, y, FilterSlot.FILTER_ALLOW_SIZE).setEnableHandler(() -> ((NetworkNodeGrid) grid).isProcessingPattern() && ((NetworkNodeGrid) grid).getType() == IType.ITEMS));
addSlot(new FluidFilterSlot(((NetworkNodeGrid) grid).getProcessingMatrixFluids(), i, x, y, FilterSlot.FILTER_ALLOW_SIZE).setEnableHandler(() -> ((NetworkNodeGrid) grid).isProcessingPattern() && ((NetworkNodeGrid) grid).getType() == IType.FLUIDS));
addSlot(new FilterSlot(((GridNetworkNode) grid).getProcessingMatrix(), i, x, y, FilterSlot.FILTER_ALLOW_SIZE).setEnableHandler(() -> ((GridNetworkNode) grid).isProcessingPattern() && ((GridNetworkNode) grid).getType() == IType.ITEMS));
addSlot(new FluidFilterSlot(((GridNetworkNode) grid).getProcessingMatrixFluids(), i, x, y, FilterSlot.FILTER_ALLOW_SIZE).setEnableHandler(() -> ((GridNetworkNode) grid).isProcessingPattern() && ((GridNetworkNode) grid).getType() == IType.FLUIDS));
x += 18;
@@ -191,7 +191,7 @@ public class GridContainer extends BaseContainer implements IGridCraftingListene
y = headerAndSlots + 4;
for (int i = 0; i < 9; ++i) {
addSlot(new FilterLegacySlot(grid.getCraftingMatrix(), i, x, y).setEnableHandler(() -> !((NetworkNodeGrid) grid).isProcessingPattern()));
addSlot(new FilterLegacySlot(grid.getCraftingMatrix(), i, x, y).setEnableHandler(() -> !((GridNetworkNode) grid).isProcessingPattern()));
x += 18;
@@ -201,7 +201,7 @@ public class GridContainer extends BaseContainer implements IGridCraftingListene
}
}
addSlot(patternResultSlot = (new DisabledLegacySlot(grid.getCraftingResult(), 0, 134, headerAndSlots + 22).setEnableHandler(() -> !((NetworkNodeGrid) grid).isProcessingPattern())));
addSlot(patternResultSlot = (new DisabledLegacySlot(grid.getCraftingResult(), 0, 134, headerAndSlots + 22).setEnableHandler(() -> !((GridNetworkNode) grid).isProcessingPattern())));
}
public IGrid getGrid() {

View File

@@ -178,12 +178,11 @@ public class PatternItem extends Item implements ICraftingPatternProvider {
pattern.getTag().put(String.format(NBT_FLUID_INPUT_SLOT, slot), stack.writeToNBT(new CompoundNBT()));
}
@Nullable
public static FluidStack getFluidInputSlot(ItemStack pattern, int slot) {
String id = String.format(NBT_FLUID_INPUT_SLOT, slot);
if (!pattern.hasTag() || !pattern.getTag().contains(id)) {
return null;
return FluidStack.EMPTY;
}
return FluidStack.loadFluidStackFromNBT(pattern.getTag().getCompound(id));
@@ -197,12 +196,11 @@ public class PatternItem extends Item implements ICraftingPatternProvider {
pattern.getTag().put(String.format(NBT_FLUID_OUTPUT_SLOT, slot), stack.writeToNBT(new CompoundNBT()));
}
@Nullable
public static FluidStack getFluidOutputSlot(ItemStack pattern, int slot) {
String id = String.format(NBT_FLUID_OUTPUT_SLOT, slot);
if (!pattern.hasTag() || !pattern.getTag().contains(id)) {
return null;
return FluidStack.EMPTY;
}
return FluidStack.loadFluidStackFromNBT(pattern.getTag().getCompound(id));

View File

@@ -5,7 +5,7 @@ import com.mojang.blaze3d.platform.GlStateManager;
import com.raoulvdberge.refinedstorage.RS;
import com.raoulvdberge.refinedstorage.api.network.grid.GridType;
import com.raoulvdberge.refinedstorage.api.network.grid.IGrid;
import com.raoulvdberge.refinedstorage.apiimpl.network.node.NetworkNodeGrid;
import com.raoulvdberge.refinedstorage.apiimpl.network.node.GridNetworkNode;
import com.raoulvdberge.refinedstorage.apiimpl.render.ElementDrawers;
import com.raoulvdberge.refinedstorage.container.GridContainer;
import com.raoulvdberge.refinedstorage.screen.BaseScreen;
@@ -21,7 +21,7 @@ import com.raoulvdberge.refinedstorage.screen.widget.SearchWidget;
import com.raoulvdberge.refinedstorage.screen.widget.TabListWidget;
import com.raoulvdberge.refinedstorage.screen.widget.sidebutton.*;
import com.raoulvdberge.refinedstorage.tile.config.IType;
import com.raoulvdberge.refinedstorage.tile.grid.TileGrid;
import com.raoulvdberge.refinedstorage.tile.grid.GridTile;
import com.raoulvdberge.refinedstorage.tile.grid.portable.IPortableGrid;
import com.raoulvdberge.refinedstorage.tile.grid.portable.TilePortableGrid;
import com.raoulvdberge.refinedstorage.util.RenderUtils;
@@ -86,8 +86,8 @@ public class GuiGrid extends BaseScreen<GridContainer> implements IResizableDisp
this.scrollbar = new ScrollbarWidget(this, 174, getTopHeight(), 12, (getVisibleRows() * 18) - 2);
if (grid instanceof NetworkNodeGrid || grid instanceof TilePortableGrid) {
addSideButton(new SideButtonRedstoneMode(this, grid instanceof NetworkNodeGrid ? TileGrid.REDSTONE_MODE : TilePortableGrid.REDSTONE_MODE));
if (grid instanceof GridNetworkNode || grid instanceof TilePortableGrid) {
addSideButton(new SideButtonRedstoneMode(this, grid instanceof GridNetworkNode ? GridTile.REDSTONE_MODE : TilePortableGrid.REDSTONE_MODE));
}
int sx = x + 80 + 1;
@@ -114,20 +114,20 @@ public class GuiGrid extends BaseScreen<GridContainer> implements IResizableDisp
addSideButton(new SideButtonGridSize(this, () -> grid.getSize(), size -> grid.onSizeChanged(size)));
if (grid.getGridType() == GridType.PATTERN) {
processingPattern = addCheckBox(x + 7, y + getTopHeight() + (getVisibleRows() * 18) + 60, I18n.format("misc.refinedstorage.processing"), TileGrid.PROCESSING_PATTERN.getValue(), btn -> {
processingPattern = addCheckBox(x + 7, y + getTopHeight() + (getVisibleRows() * 18) + 60, I18n.format("misc.refinedstorage.processing"), GridTile.PROCESSING_PATTERN.getValue(), btn -> {
});
boolean showOredict = true;
if (((NetworkNodeGrid) grid).isProcessingPattern() && ((NetworkNodeGrid) grid).getType() == IType.FLUIDS) {
if (((GridNetworkNode) grid).isProcessingPattern() && ((GridNetworkNode) grid).getType() == IType.FLUIDS) {
showOredict = false;
}
if (showOredict) {
oredictPattern = addCheckBox(processingPattern.x + processingPattern.getWidth() + 5, y + getTopHeight() + (getVisibleRows() * 18) + 60, I18n.format("misc.refinedstorage:oredict"), TileGrid.OREDICT_PATTERN.getValue(), btn -> {
oredictPattern = addCheckBox(processingPattern.x + processingPattern.getWidth() + 5, y + getTopHeight() + (getVisibleRows() * 18) + 60, I18n.format("misc.refinedstorage:oredict"), GridTile.OREDICT_PATTERN.getValue(), btn -> {
});
}
addSideButton(new SideButtonType(this, TileGrid.PROCESSING_TYPE));
addSideButton(new SideButtonType(this, GridTile.PROCESSING_TYPE));
}
updateScrollbar();
@@ -243,7 +243,7 @@ public class GuiGrid extends BaseScreen<GridContainer> implements IResizableDisp
case CRAFTING:
return RenderUtils.inBounds(82, y, 7, 7, mouseX, mouseY);
case PATTERN:
if (((NetworkNodeGrid) grid).isProcessingPattern()) {
if (((GridNetworkNode) grid).isProcessingPattern()) {
return RenderUtils.inBounds(154, y, 7, 7, mouseX, mouseY);
}
@@ -254,7 +254,7 @@ public class GuiGrid extends BaseScreen<GridContainer> implements IResizableDisp
}
private boolean isOverCreatePattern(int mouseX, int mouseY) {
return grid.getGridType() == GridType.PATTERN && RenderUtils.inBounds(172, getTopHeight() + (getVisibleRows() * 18) + 22, 16, 16, mouseX, mouseY) && ((NetworkNodeGrid) grid).canCreatePattern();
return grid.getGridType() == GridType.PATTERN && RenderUtils.inBounds(172, getTopHeight() + (getVisibleRows() * 18) + 22, 16, 16, mouseX, mouseY) && ((GridNetworkNode) grid).canCreatePattern();
}
@Override
@@ -266,7 +266,7 @@ public class GuiGrid extends BaseScreen<GridContainer> implements IResizableDisp
} else if (grid.getGridType() == GridType.CRAFTING) {
bindTexture(RS.ID, "gui/crafting_grid.png");
} else if (grid.getGridType() == GridType.PATTERN) {
bindTexture(RS.ID, "gui/pattern_grid" + (((NetworkNodeGrid) grid).isProcessingPattern() ? "_processing" : "") + ".png");
bindTexture(RS.ID, "gui/pattern_grid" + (((GridNetworkNode) grid).isProcessingPattern() ? "_processing" : "") + ".png");
} else {
bindTexture(RS.ID, "gui/grid.png");
}
@@ -297,7 +297,7 @@ public class GuiGrid extends BaseScreen<GridContainer> implements IResizableDisp
ty = 1;
}
if (!((NetworkNodeGrid) grid).canCreatePattern()) {
if (!((GridNetworkNode) grid).canCreatePattern()) {
ty = 2;
}

View File

@@ -2,7 +2,7 @@ package com.raoulvdberge.refinedstorage.screen.widget.sidebutton;
import com.raoulvdberge.refinedstorage.api.network.grid.GridType;
import com.raoulvdberge.refinedstorage.api.network.grid.IGrid;
import com.raoulvdberge.refinedstorage.apiimpl.network.node.NetworkNodeGrid;
import com.raoulvdberge.refinedstorage.apiimpl.network.node.GridNetworkNode;
import com.raoulvdberge.refinedstorage.screen.BaseScreen;
import net.minecraft.client.resources.I18n;
import net.minecraft.util.text.TextFormatting;
@@ -44,13 +44,13 @@ public class SideButtonGridSortingType extends SideButton {
}
} else if (type == IGrid.SORTING_TYPE_ID) {
type = IGrid.SORTING_TYPE_LAST_MODIFIED;
} else if (type == NetworkNodeGrid.SORTING_TYPE_LAST_MODIFIED) {
} else if (type == GridNetworkNode.SORTING_TYPE_LAST_MODIFIED) {
if (grid.getGridType() == GridType.FLUID || /* TODO !Loader.isModLoaded(GridSorterInventoryTweaks.MOD_ID)*/false) {
type = IGrid.SORTING_TYPE_QUANTITY;
} else {
type = IGrid.SORTING_TYPE_INVENTORYTWEAKS;
}
} else if (type == NetworkNodeGrid.SORTING_TYPE_INVENTORYTWEAKS) {
} else if (type == GridNetworkNode.SORTING_TYPE_INVENTORYTWEAKS) {
type = IGrid.SORTING_TYPE_QUANTITY;
}

View File

@@ -26,7 +26,6 @@ import javax.annotation.Nullable;
public abstract class NetworkNodeTile<N extends NetworkNode> extends BaseTile implements INetworkNodeProxy<N>, IRedstoneConfigurable {
public static final TileDataParameter<Integer, NetworkNodeTile> REDSTONE_MODE = RedstoneMode.createParameter();
private static final String NBT_ACTIVE = "Active";
private static final String NBT_COVERS = "Cover";
private N clientNode;
@@ -56,8 +55,6 @@ public abstract class NetworkNodeTile<N extends NetworkNode> extends BaseTile im
tag.put(NBT_COVERS, ((ICoverable) getNode()).getCoverManager().writeToNbt());
}
tag.putBoolean(NBT_ACTIVE, getNode().canUpdate());
return tag;
}
@@ -67,8 +64,6 @@ public abstract class NetworkNodeTile<N extends NetworkNode> extends BaseTile im
if (getNode() instanceof ICoverable && tag.contains(NBT_COVERS)) {
((ICoverable) getNode()).getCoverManager().readFromNbt(tag.getList(NBT_COVERS, Constants.NBT.TAG_COMPOUND));
}
getNode().setActive(tag.getBoolean(NBT_ACTIVE));
}
@Override

View File

@@ -1,8 +1,9 @@
package com.raoulvdberge.refinedstorage.tile.grid;
import com.raoulvdberge.refinedstorage.RSTiles;
import com.raoulvdberge.refinedstorage.api.network.grid.GridType;
import com.raoulvdberge.refinedstorage.api.network.grid.IGrid;
import com.raoulvdberge.refinedstorage.apiimpl.network.node.NetworkNodeGrid;
import com.raoulvdberge.refinedstorage.apiimpl.network.node.GridNetworkNode;
import com.raoulvdberge.refinedstorage.screen.BaseScreen;
import com.raoulvdberge.refinedstorage.screen.grid.GuiGrid;
import com.raoulvdberge.refinedstorage.tile.NetworkNodeTile;
@@ -14,57 +15,57 @@ import net.minecraft.world.World;
import javax.annotation.Nonnull;
public class TileGrid extends NetworkNodeTile<NetworkNodeGrid> {
public static final TileDataParameter<Integer, TileGrid> VIEW_TYPE = new TileDataParameter<>(DataSerializers.VARINT, 0, t -> t.getNode().getViewType(), (t, v) -> {
public class GridTile extends NetworkNodeTile<GridNetworkNode> {
public static final TileDataParameter<Integer, GridTile> VIEW_TYPE = new TileDataParameter<>(DataSerializers.VARINT, 0, t -> t.getNode().getViewType(), (t, v) -> {
if (IGrid.isValidViewType(v)) {
t.getNode().setViewType(v);
t.getNode().markDirty();
}
}, (initial, p) -> trySortGrid(initial));
public static final TileDataParameter<Integer, TileGrid> SORTING_DIRECTION = new TileDataParameter<>(DataSerializers.VARINT, 0, t -> t.getNode().getSortingDirection(), (t, v) -> {
public static final TileDataParameter<Integer, GridTile> SORTING_DIRECTION = new TileDataParameter<>(DataSerializers.VARINT, 0, t -> t.getNode().getSortingDirection(), (t, v) -> {
if (IGrid.isValidSortingDirection(v)) {
t.getNode().setSortingDirection(v);
t.getNode().markDirty();
}
}, (initial, p) -> trySortGrid(initial));
public static final TileDataParameter<Integer, TileGrid> SORTING_TYPE = new TileDataParameter<>(DataSerializers.VARINT, 0, t -> t.getNode().getSortingType(), (t, v) -> {
public static final TileDataParameter<Integer, GridTile> SORTING_TYPE = new TileDataParameter<>(DataSerializers.VARINT, 0, t -> t.getNode().getSortingType(), (t, v) -> {
if (IGrid.isValidSortingType(v)) {
t.getNode().setSortingType(v);
t.getNode().markDirty();
}
}, (initial, p) -> trySortGrid(initial));
public static final TileDataParameter<Integer, TileGrid> SEARCH_BOX_MODE = new TileDataParameter<>(DataSerializers.VARINT, 0, t -> t.getNode().getSearchBoxMode(), (t, v) -> {
public static final TileDataParameter<Integer, GridTile> SEARCH_BOX_MODE = new TileDataParameter<>(DataSerializers.VARINT, 0, t -> t.getNode().getSearchBoxMode(), (t, v) -> {
if (IGrid.isValidSearchBoxMode(v)) {
t.getNode().setSearchBoxMode(v);
t.getNode().markDirty();
}
}, (initial, p) -> BaseScreen.executeLater(GuiGrid.class, grid -> grid.getSearchField().setMode(p)));
public static final TileDataParameter<Integer, TileGrid> SIZE = new TileDataParameter<>(DataSerializers.VARINT, 0, t -> t.getNode().getSize(), (t, v) -> {
public static final TileDataParameter<Integer, GridTile> SIZE = new TileDataParameter<>(DataSerializers.VARINT, 0, t -> t.getNode().getSize(), (t, v) -> {
if (IGrid.isValidSize(v)) {
t.getNode().setSize(v);
t.getNode().markDirty();
}
}, (initial, p) -> BaseScreen.executeLater(GuiGrid.class, BaseScreen::init));
public static final TileDataParameter<Integer, TileGrid> TAB_SELECTED = new TileDataParameter<>(DataSerializers.VARINT, 0, t -> t.getNode().getTabSelected(), (t, v) -> {
public static final TileDataParameter<Integer, GridTile> TAB_SELECTED = new TileDataParameter<>(DataSerializers.VARINT, 0, t -> t.getNode().getTabSelected(), (t, v) -> {
t.getNode().setTabSelected(v == t.getNode().getTabSelected() ? -1 : v);
t.getNode().markDirty();
}, (initial, p) -> BaseScreen.executeLater(GuiGrid.class, grid -> grid.getView().sort()));
public static final TileDataParameter<Integer, TileGrid> TAB_PAGE = new TileDataParameter<>(DataSerializers.VARINT, 0, t -> t.getNode().getTabPage(), (t, v) -> {
public static final TileDataParameter<Integer, GridTile> TAB_PAGE = new TileDataParameter<>(DataSerializers.VARINT, 0, t -> t.getNode().getTabPage(), (t, v) -> {
if (v >= 0 && v <= t.getNode().getTotalTabPages()) {
t.getNode().setTabPage(v);
t.getNode().markDirty();
}
});
public static final TileDataParameter<Boolean, TileGrid> OREDICT_PATTERN = new TileDataParameter<>(DataSerializers.BOOLEAN, false, t -> t.getNode().isOredictPattern(), (t, v) -> {
public static final TileDataParameter<Boolean, GridTile> OREDICT_PATTERN = new TileDataParameter<>(DataSerializers.BOOLEAN, false, t -> t.getNode().isOredictPattern(), (t, v) -> {
t.getNode().setOredictPattern(v);
t.getNode().markDirty();
}, (initial, p) -> BaseScreen.executeLater(GuiGrid.class, grid -> grid.updateOredictPattern(p)));
public static final TileDataParameter<Boolean, TileGrid> PROCESSING_PATTERN = new TileDataParameter<>(DataSerializers.BOOLEAN, false, t -> t.getNode().isProcessingPattern(), (t, v) -> {
public static final TileDataParameter<Boolean, GridTile> PROCESSING_PATTERN = new TileDataParameter<>(DataSerializers.BOOLEAN, false, t -> t.getNode().isProcessingPattern(), (t, v) -> {
t.getNode().setProcessingPattern(v);
t.getNode().clearMatrix();
t.getNode().markDirty();
}, (initial, p) -> BaseScreen.executeLater(GuiGrid.class, BaseScreen::init));
public static final TileDataParameter<Integer, TileGrid> PROCESSING_TYPE = IType.createParameter((initial, p) -> BaseScreen.executeLater(GuiGrid.class, BaseScreen::init));
public static final TileDataParameter<Integer, GridTile> PROCESSING_TYPE = IType.createParameter((initial, p) -> BaseScreen.executeLater(GuiGrid.class, BaseScreen::init));
public static void trySortGrid(boolean initial) {
if (!initial) {
@@ -72,9 +73,13 @@ public class TileGrid extends NetworkNodeTile<NetworkNodeGrid> {
}
}
public TileGrid() {
private final GridType gridType;
public GridTile(GridType gridType) {
super(RSTiles.GRID);
this.gridType = gridType;
dataManager.addWatchedParameter(VIEW_TYPE);
dataManager.addWatchedParameter(SORTING_DIRECTION);
dataManager.addWatchedParameter(SORTING_TYPE);
@@ -89,8 +94,8 @@ public class TileGrid extends NetworkNodeTile<NetworkNodeGrid> {
@Override
@Nonnull
public NetworkNodeGrid createNode(World world, BlockPos pos) {
return new NetworkNodeGrid(world, pos);
public GridNetworkNode createNode(World world, BlockPos pos) {
return new GridNetworkNode(world, pos, gridType);
}
/* TODO

View File

@@ -17,7 +17,7 @@ import com.raoulvdberge.refinedstorage.api.util.IFilter;
import com.raoulvdberge.refinedstorage.apiimpl.API;
import com.raoulvdberge.refinedstorage.apiimpl.network.grid.handler.FluidGridHandlerPortable;
import com.raoulvdberge.refinedstorage.apiimpl.network.grid.handler.ItemGridHandlerPortable;
import com.raoulvdberge.refinedstorage.apiimpl.network.node.NetworkNodeGrid;
import com.raoulvdberge.refinedstorage.apiimpl.network.node.GridNetworkNode;
import com.raoulvdberge.refinedstorage.apiimpl.network.node.diskdrive.DiskDriveNetworkNode;
import com.raoulvdberge.refinedstorage.apiimpl.storage.*;
import com.raoulvdberge.refinedstorage.apiimpl.storage.disk.StorageDiskFluidPortable;
@@ -35,7 +35,7 @@ import com.raoulvdberge.refinedstorage.tile.config.IRedstoneConfigurable;
import com.raoulvdberge.refinedstorage.tile.config.RedstoneMode;
import com.raoulvdberge.refinedstorage.tile.data.TileDataManager;
import com.raoulvdberge.refinedstorage.tile.data.TileDataParameter;
import com.raoulvdberge.refinedstorage.tile.grid.TileGrid;
import com.raoulvdberge.refinedstorage.tile.grid.GridTile;
import com.raoulvdberge.refinedstorage.util.StackUtils;
import com.raoulvdberge.refinedstorage.util.WorldUtils;
import net.minecraft.block.BlockState;
@@ -73,13 +73,13 @@ public class TilePortableGrid extends BaseTile implements IGrid, IPortableGrid,
t.setSortingDirection(v);
t.markDirty();
}
}, (initial, p) -> TileGrid.trySortGrid(initial));
}, (initial, p) -> GridTile.trySortGrid(initial));
private static final TileDataParameter<Integer, TilePortableGrid> SORTING_TYPE = new TileDataParameter<>(DataSerializers.VARINT, 0, TilePortableGrid::getSortingType, (t, v) -> {
if (IGrid.isValidSortingType(v)) {
t.setSortingType(v);
t.markDirty();
}
}, (initial, p) -> TileGrid.trySortGrid(initial));
}, (initial, p) -> GridTile.trySortGrid(initial));
private static final TileDataParameter<Integer, TilePortableGrid> SEARCH_BOX_MODE = new TileDataParameter<>(DataSerializers.VARINT, 0, TilePortableGrid::getSearchBoxMode, (t, v) -> {
if (IGrid.isValidSearchBoxMode(v)) {
t.setSearchBoxMode(v);
@@ -273,12 +273,12 @@ public class TilePortableGrid extends BaseTile implements IGrid, IPortableGrid,
stack.setTag(new CompoundNBT());
stack.getTag().putInt(NetworkNodeGrid.NBT_SORTING_DIRECTION, sortingDirection);
stack.getTag().putInt(NetworkNodeGrid.NBT_SORTING_TYPE, sortingType);
stack.getTag().putInt(NetworkNodeGrid.NBT_SEARCH_BOX_MODE, searchBoxMode);
stack.getTag().putInt(NetworkNodeGrid.NBT_SIZE, size);
stack.getTag().putInt(NetworkNodeGrid.NBT_TAB_SELECTED, tabSelected);
stack.getTag().putInt(NetworkNodeGrid.NBT_TAB_PAGE, tabPage);
stack.getTag().putInt(GridNetworkNode.NBT_SORTING_DIRECTION, sortingDirection);
stack.getTag().putInt(GridNetworkNode.NBT_SORTING_TYPE, sortingType);
stack.getTag().putInt(GridNetworkNode.NBT_SEARCH_BOX_MODE, searchBoxMode);
stack.getTag().putInt(GridNetworkNode.NBT_SIZE, size);
stack.getTag().putInt(GridNetworkNode.NBT_TAB_SELECTED, tabSelected);
stack.getTag().putInt(GridNetworkNode.NBT_TAB_PAGE, tabPage);
stack.getTag().put(PortableGrid.NBT_STORAGE_TRACKER, storageTracker.serializeNbt());
stack.getTag().put(PortableGrid.NBT_FLUID_STORAGE_TRACKER, fluidStorageTracker.serializeNbt());
@@ -601,12 +601,12 @@ public class TilePortableGrid extends BaseTile implements IGrid, IPortableGrid,
public CompoundNBT write(CompoundNBT tag) {
super.write(tag);
tag.putInt(NetworkNodeGrid.NBT_SORTING_DIRECTION, sortingDirection);
tag.putInt(NetworkNodeGrid.NBT_SORTING_TYPE, sortingType);
tag.putInt(NetworkNodeGrid.NBT_SEARCH_BOX_MODE, searchBoxMode);
tag.putInt(NetworkNodeGrid.NBT_SIZE, size);
tag.putInt(NetworkNodeGrid.NBT_TAB_SELECTED, tabSelected);
tag.putInt(NetworkNodeGrid.NBT_TAB_PAGE, tabPage);
tag.putInt(GridNetworkNode.NBT_SORTING_DIRECTION, sortingDirection);
tag.putInt(GridNetworkNode.NBT_SORTING_TYPE, sortingType);
tag.putInt(GridNetworkNode.NBT_SEARCH_BOX_MODE, searchBoxMode);
tag.putInt(GridNetworkNode.NBT_SIZE, size);
tag.putInt(GridNetworkNode.NBT_TAB_SELECTED, tabSelected);
tag.putInt(GridNetworkNode.NBT_TAB_PAGE, tabPage);
StackUtils.writeItems(disk, 0, tag);
StackUtils.writeItems(filter, 1, tag);
@@ -629,28 +629,28 @@ public class TilePortableGrid extends BaseTile implements IGrid, IPortableGrid,
public void read(CompoundNBT tag) {
super.read(tag);
if (tag.contains(NetworkNodeGrid.NBT_SORTING_DIRECTION)) {
sortingDirection = tag.getInt(NetworkNodeGrid.NBT_SORTING_DIRECTION);
if (tag.contains(GridNetworkNode.NBT_SORTING_DIRECTION)) {
sortingDirection = tag.getInt(GridNetworkNode.NBT_SORTING_DIRECTION);
}
if (tag.contains(NetworkNodeGrid.NBT_SORTING_TYPE)) {
sortingType = tag.getInt(NetworkNodeGrid.NBT_SORTING_TYPE);
if (tag.contains(GridNetworkNode.NBT_SORTING_TYPE)) {
sortingType = tag.getInt(GridNetworkNode.NBT_SORTING_TYPE);
}
if (tag.contains(NetworkNodeGrid.NBT_SEARCH_BOX_MODE)) {
searchBoxMode = tag.getInt(NetworkNodeGrid.NBT_SEARCH_BOX_MODE);
if (tag.contains(GridNetworkNode.NBT_SEARCH_BOX_MODE)) {
searchBoxMode = tag.getInt(GridNetworkNode.NBT_SEARCH_BOX_MODE);
}
if (tag.contains(NetworkNodeGrid.NBT_SIZE)) {
size = tag.getInt(NetworkNodeGrid.NBT_SIZE);
if (tag.contains(GridNetworkNode.NBT_SIZE)) {
size = tag.getInt(GridNetworkNode.NBT_SIZE);
}
if (tag.contains(NetworkNodeGrid.NBT_TAB_SELECTED)) {
tabSelected = tag.getInt(NetworkNodeGrid.NBT_TAB_SELECTED);
if (tag.contains(GridNetworkNode.NBT_TAB_SELECTED)) {
tabSelected = tag.getInt(GridNetworkNode.NBT_TAB_SELECTED);
}
if (tag.contains(NetworkNodeGrid.NBT_TAB_PAGE)) {
tabPage = tag.getInt(NetworkNodeGrid.NBT_TAB_PAGE);
if (tag.contains(GridNetworkNode.NBT_TAB_PAGE)) {
tabPage = tag.getInt(GridNetworkNode.NBT_TAB_PAGE);
}
StackUtils.readItems(disk, 0, tag);

View File

@@ -1,80 +1,36 @@
{
"forge_marker": 1,
"defaults": {
"model": "refinedstorage:cube_north_cutout",
"textures": {
"particle": "refinedstorage:blocks/side",
"east": "refinedstorage:blocks/grid/left",
"south": "refinedstorage:blocks/grid/back",
"west": "refinedstorage:blocks/grid/right",
"up": "refinedstorage:blocks/grid/top",
"down": "refinedstorage:blocks/bottom",
"north_normal": "refinedstorage:blocks/grid/front",
"north_crafting": "refinedstorage:blocks/grid/crafting_front",
"north_pattern": "refinedstorage:blocks/grid/pattern_front",
"north_fluid": "refinedstorage:blocks/grid/fluid_front",
"cutout_normal": "refinedstorage:blocks/grid/cutouts/front_disconnected",
"cutout_crafting": "refinedstorage:blocks/grid/cutouts/crafting_front_disconnected",
"cutout_pattern": "refinedstorage:blocks/grid/cutouts/pattern_front_disconnected",
"cutout_fluid": "refinedstorage:blocks/grid/cutouts/fluid_front_disconnected"
}
},
"variants": {
"connected": {
"true": {
"textures": {
"cutout_normal": "refinedstorage:blocks/grid/cutouts/front_connected",
"cutout_crafting": "refinedstorage:blocks/grid/cutouts/crafting_front_connected",
"cutout_pattern": "refinedstorage:blocks/grid/cutouts/pattern_front_connected",
"cutout_fluid": "refinedstorage:blocks/grid/cutouts/fluid_front_connected"
}
},
"false": {
}
"connected=true,direction=north": {
"model": "refinedstorage:block/grid/normal/connected",
"y": 0
},
"type": {
"normal": {
"textures": {
"north": "#north_normal",
"cutout": "#cutout_normal"
}
},
"crafting": {
"textures": {
"north": "#north_crafting",
"cutout": "#cutout_crafting"
}
},
"pattern": {
"textures": {
"north": "#north_pattern",
"cutout": "#cutout_pattern"
}
},
"fluid": {
"textures": {
"north": "#north_fluid",
"cutout": "#cutout_fluid",
"east": "refinedstorage:blocks/grid/fluid_left",
"south": "refinedstorage:blocks/grid/fluid_back",
"west": "refinedstorage:blocks/grid/fluid_right",
"up": "refinedstorage:blocks/grid/fluid_top"
}
}
"connected=true,direction=east": {
"model": "refinedstorage:block/grid/normal/connected",
"y": 90
},
"direction": {
"north": {
"y": 0
},
"east": {
"y": 90
},
"south": {
"y": 180
},
"west": {
"y": 270
}
"connected=true,direction=south": {
"model": "refinedstorage:block/grid/normal/connected",
"y": 180
},
"connected=true,direction=west": {
"model": "refinedstorage:block/grid/normal/connected",
"y": 270
},
"connected=false,direction=north": {
"model": "refinedstorage:block/grid/normal/disconnected",
"y": 0
},
"connected=false,direction=east": {
"model": "refinedstorage:block/grid/normal/disconnected",
"y": 90
},
"connected=false,direction=south": {
"model": "refinedstorage:block/grid/normal/disconnected",
"y": 180
},
"connected=false,direction=west": {
"model": "refinedstorage:block/grid/normal/disconnected",
"y": 270
}
}
}

View File

@@ -179,10 +179,10 @@
"block.refinedstorage.controller": "Controller",
"block.refinedstorage.creative_controller": "Creative Controller",
"block.refinedstorage.cable": "Cable",
"block.refinedstorage:grid.0": "Grid",
"block.refinedstorage:grid.1": "Crafting Grid",
"block.refinedstorage:grid.2": "Pattern Grid",
"block.refinedstorage:grid.3": "Fluid Grid",
"block.refinedstorage.grid": "Grid",
"block.refinedstorage.crafting_grid": "Crafting Grid",
"block.refinedstorage.pattern_grid": "Pattern Grid",
"block.refinedstorage.fluid_grid": "Fluid Grid",
"block.refinedstorage.disk_drive": "Disk Drive",
"block.refinedstorage:disk_manipulator": "Disk Manipulator",
"block.refinedstorage:external_storage": "External Storage",

View File

@@ -0,0 +1,13 @@
{
"parent": "refinedstorage:block/cube_north_cutout",
"textures": {
"particle": "refinedstorage:block/side",
"east": "refinedstorage:block/grid/left",
"south": "refinedstorage:block/grid/back",
"west": "refinedstorage:block/grid/right",
"up": "refinedstorage:block/grid/top",
"down": "refinedstorage:block/bottom",
"north": "refinedstorage:block/grid/front",
"cutout": "refinedstorage:block/grid/cutouts/front_connected"
}
}

View File

@@ -0,0 +1,13 @@
{
"parent": "refinedstorage:block/cube_north_cutout",
"textures": {
"particle": "refinedstorage:block/side",
"east": "refinedstorage:block/grid/left",
"south": "refinedstorage:block/grid/back",
"west": "refinedstorage:block/grid/right",
"up": "refinedstorage:block/grid/top",
"down": "refinedstorage:block/bottom",
"north": "refinedstorage:block/grid/front",
"cutout": "refinedstorage:block/grid/cutouts/front_disconnected"
}
}

View File

@@ -0,0 +1,3 @@
{
"parent": "refinedstorage:block/grid/normal/disconnected"
}

View File

@@ -7,14 +7,13 @@
],
"key": {
"P": {
"item": "#improved_processor"
"item": "refinedstorage:improved_processor"
},
"C": {
"item": "#construction_core"
"item": "refinedstorage:construction_core"
},
"G": {
"type": "forge:ore_dict",
"ore": "blockGlass"
"tag": "forge:glass"
},
"E": {
"item": "refinedstorage:quartz_enriched_iron"
@@ -23,11 +22,10 @@
"item": "refinedstorage:machine_casing"
},
"D": {
"item": "#destruction_core"
"item": "refinedstorage:destruction_core"
}
},
"result": {
"item": "refinedstorage:grid",
"data": 0
"item": "refinedstorage:grid"
}
}