Update to master.

This commit is contained in:
GustoniaEagle
2016-07-10 12:43:36 +01:00
committed by GitHub
183 changed files with 5711 additions and 597 deletions

View File

@@ -1,13 +1,39 @@
# Refined Storage Changelog # Refined Storage Changelog
### 0.8.8
**Bugfixes**
- Use ore dictionary for recipes with glass
### 0.8.7
**Bugfixes**
- Improved detector model, add a better hitbox for it
- Improved the Wireless Transmitter texture
- Wireless Transmitter is now only bright red when connected
- Fixed crash with External Storage
- Fixed Detector not unpowering when disconnected from the network
- Made the Solderer beams be bright red when they are working
- Added better hitbox for the Solderer
### 0.8.6 ### 0.8.6
**Bugfixes** **Bugfixes**
- Fixed External Storage disconnecting on world reload - Fixed External Storage disconnecting on world reload
- Fixed External Storage not updating correctly
- Fixed wireless signal starting from Controller instead of per Wireless Transmitter individually - Fixed wireless signal starting from Controller instead of per Wireless Transmitter individually
- Huge performance improvements to large networks - Fixed Controller's redstone state not saving
- Fixed crafting tasks not saving properly
- Huge performance improvements to large storage networks
**Features** **Features**
- Re-added Controllers exploding when two of them are connected to the same network - Re-added Controllers exploding when two of them are connected to the same network
- Limited some blocks to only have a direction on the x-axis
- Decreased amount of block updates significantly
- Added new textures
- Added model for External Storage
- Added model for Importer
- Added model for Exporter
- Added model for Detector
- Removed opposite facing on placement mechanic
- Removed Quartz Enriched Iron Block
### 0.8.5 ### 0.8.5
**Bugfixes** **Bugfixes**

View File

@@ -12,7 +12,7 @@ buildscript {
} }
apply plugin: 'net.minecraftforge.gradle.forge' apply plugin: 'net.minecraftforge.gradle.forge'
version = "0.8.6" version = "0.8.8"
group = "refinedstorage" group = "refinedstorage"
archivesBaseName = "refinedstorage" archivesBaseName = "refinedstorage"

BIN
logo.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.3 KiB

After

Width:  |  Height:  |  Size: 5.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 76 KiB

After

Width:  |  Height:  |  Size: 154 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 211 KiB

After

Width:  |  Height:  |  Size: 161 KiB

View File

@@ -23,7 +23,7 @@ import java.util.List;
@Mod(modid = RefinedStorage.ID, version = RefinedStorage.VERSION) @Mod(modid = RefinedStorage.ID, version = RefinedStorage.VERSION)
public final class RefinedStorage { public final class RefinedStorage {
public static final String ID = "refinedstorage"; public static final String ID = "refinedstorage";
public static final String VERSION = "0.8.6"; public static final String VERSION = "0.8.8";
@SidedProxy(clientSide = "refinedstorage.proxy.ClientProxy", serverSide = "refinedstorage.proxy.ServerProxy") @SidedProxy(clientSide = "refinedstorage.proxy.ClientProxy", serverSide = "refinedstorage.proxy.ServerProxy")
public static CommonProxy PROXY; public static CommonProxy PROXY;

View File

@@ -22,5 +22,4 @@ public final class RefinedStorageBlocks {
public static final BlockWirelessTransmitter WIRELESS_TRANSMITTER = new BlockWirelessTransmitter(); public static final BlockWirelessTransmitter WIRELESS_TRANSMITTER = new BlockWirelessTransmitter();
public static final BlockCrafter CRAFTER = new BlockCrafter(); public static final BlockCrafter CRAFTER = new BlockCrafter();
public static final BlockProcessingPatternEncoder PROCESSING_PATTERN_ENCODER = new BlockProcessingPatternEncoder(); public static final BlockProcessingPatternEncoder PROCESSING_PATTERN_ENCODER = new BlockProcessingPatternEncoder();
public static final BlockQuartzEnrichedIron QUARTZ_ENRICHED_IRON = new BlockQuartzEnrichedIron();
} }

View File

@@ -327,4 +327,16 @@ public final class RefinedStorageUtils {
public static boolean hasPattern(INetworkMaster network, ItemStack stack) { public static boolean hasPattern(INetworkMaster network, ItemStack stack) {
return RefinedStorageUtils.getPattern(network, stack) != null; return RefinedStorageUtils.getPattern(network, stack) != null;
} }
public static int getItemStackHashCode(ItemStack stack) {
return getItemStackHashCode(stack, stack == null ? 0 : stack.stackSize);
}
public static int getItemStackHashCode(ItemStack stack, int stackSize) {
if (stack == null) {
return 0;
}
return stack.getItem().hashCode() + Math.max(1, stackSize) * (stack.hasTagCompound() ? stack.getTagCompound().hashCode() : 1);
}
} }

View File

@@ -2,6 +2,7 @@ package refinedstorage.api.autocrafting;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.World; import net.minecraft.world.World;
/** /**
@@ -14,6 +15,11 @@ public interface ICraftingPattern {
*/ */
ICraftingPatternContainer getContainer(World world); ICraftingPatternContainer getContainer(World world);
/**
* @return The position of the container where the pattern is in
*/
BlockPos getContainerPosition();
/** /**
* @return If this pattern is a processing pattern * @return If this pattern is a processing pattern
*/ */

View File

@@ -11,11 +11,6 @@ public interface INetworkNode {
*/ */
void updateNode(); void updateNode();
/**
* @return If this node can send a connectivity update
*/
boolean canSendConnectivityUpdate();
/** /**
* @return The energy usage of this node * @return The energy usage of this node
*/ */
@@ -36,8 +31,9 @@ public interface INetworkNode {
/** /**
* Called when this node is disconnected from a network. * Called when this node is disconnected from a network.
* *
* @param network The network
*/ */
void onDisconnected(); void onDisconnected(INetworkMaster network);
/** /**
* Called when the connection state of this node changes. * Called when the connection state of this node changes.

View File

@@ -17,19 +17,15 @@ public class CraftingPattern implements ICraftingPattern {
private static final String NBT_CRAFTER_Y = "CrafterY"; private static final String NBT_CRAFTER_Y = "CrafterY";
private static final String NBT_CRAFTER_Z = "CrafterZ"; private static final String NBT_CRAFTER_Z = "CrafterZ";
private int crafterX; private BlockPos crafterPos;
private int crafterY;
private int crafterZ;
private TileCrafter crafter; private TileCrafter crafter;
private boolean processing; private boolean processing;
private ItemStack[] inputs; private ItemStack[] inputs;
private ItemStack[] outputs; private ItemStack[] outputs;
private ItemStack[] byproducts; private ItemStack[] byproducts;
public CraftingPattern(int crafterX, int crafterY, int crafterZ, boolean processing, ItemStack[] inputs, ItemStack[] outputs, ItemStack[] byproducts) { public CraftingPattern(BlockPos crafterPos, boolean processing, ItemStack[] inputs, ItemStack[] outputs, ItemStack[] byproducts) {
this.crafterX = crafterX; this.crafterPos = crafterPos;
this.crafterY = crafterY;
this.crafterZ = crafterZ;
this.processing = processing; this.processing = processing;
this.inputs = inputs; this.inputs = inputs;
this.outputs = outputs; this.outputs = outputs;
@@ -39,12 +35,17 @@ public class CraftingPattern implements ICraftingPattern {
@Override @Override
public ICraftingPatternContainer getContainer(World world) { public ICraftingPatternContainer getContainer(World world) {
if (crafter == null) { if (crafter == null) {
crafter = (TileCrafter) world.getTileEntity(new BlockPos(crafterX, crafterY, crafterZ)); crafter = (TileCrafter) world.getTileEntity(crafterPos);
} }
return crafter; return crafter;
} }
@Override
public BlockPos getContainerPosition() {
return crafterPos;
}
@Override @Override
public boolean isProcessing() { public boolean isProcessing() {
return processing; return processing;
@@ -88,17 +89,15 @@ public class CraftingPattern implements ICraftingPattern {
tag.setTag(ItemPattern.NBT_BYPRODUCTS, byproductsTag); tag.setTag(ItemPattern.NBT_BYPRODUCTS, byproductsTag);
} }
tag.setInteger(NBT_CRAFTER_X, crafter.getPos().getX()); tag.setInteger(NBT_CRAFTER_X, crafterPos.getX());
tag.setInteger(NBT_CRAFTER_Y, crafter.getPos().getY()); tag.setInteger(NBT_CRAFTER_Y, crafterPos.getY());
tag.setInteger(NBT_CRAFTER_Z, crafter.getPos().getZ()); tag.setInteger(NBT_CRAFTER_Z, crafterPos.getZ());
return tag; return tag;
} }
public static CraftingPattern readFromNBT(NBTTagCompound tag) { public static CraftingPattern readFromNBT(NBTTagCompound tag) {
int cx = tag.getInteger(NBT_CRAFTER_X); BlockPos crafterPos = new BlockPos(tag.getInteger(NBT_CRAFTER_X), tag.getInteger(NBT_CRAFTER_Y), tag.getInteger(NBT_CRAFTER_Z));
int cy = tag.getInteger(NBT_CRAFTER_Y);
int cz = tag.getInteger(NBT_CRAFTER_Z);
boolean processing = tag.getBoolean(ItemPattern.NBT_PROCESSING); boolean processing = tag.getBoolean(ItemPattern.NBT_PROCESSING);
@@ -139,6 +138,6 @@ public class CraftingPattern implements ICraftingPattern {
} }
} }
return new CraftingPattern(cx, cy, cz, processing, inputs, outputs, byproducts); return new CraftingPattern(crafterPos, processing, inputs, outputs, byproducts);
} }
} }

View File

@@ -1,9 +1,7 @@
package refinedstorage.block; package refinedstorage.block;
import net.minecraft.block.Block; import net.minecraft.block.Block;
import net.minecraft.block.BlockPistonBase;
import net.minecraft.block.material.Material; import net.minecraft.block.material.Material;
import net.minecraft.block.properties.IProperty;
import net.minecraft.block.properties.PropertyDirection; import net.minecraft.block.properties.PropertyDirection;
import net.minecraft.block.state.BlockStateContainer; import net.minecraft.block.state.BlockStateContainer;
import net.minecraft.block.state.IBlockState; import net.minecraft.block.state.IBlockState;
@@ -43,11 +41,23 @@ public abstract class BlockBase extends Block {
return "block." + RefinedStorage.ID + ":" + name; return "block." + RefinedStorage.ID + ":" + name;
} }
protected BlockStateContainer.Builder createBlockStateBuilder() {
BlockStateContainer.Builder builder = new BlockStateContainer.Builder(this);
if (getPlacementType() != null) {
builder.add(DIRECTION);
}
return builder;
}
@Override @Override
protected BlockStateContainer createBlockState() { protected BlockStateContainer createBlockState() {
return new BlockStateContainer(this, new IProperty[]{ return createBlockStateBuilder().build();
DIRECTION, }
});
public Item createItem() {
return new ItemBlockBase(this, false);
} }
@Override @Override
@@ -62,10 +72,8 @@ public abstract class BlockBase extends Block {
@Override @Override
public IBlockState getActualState(IBlockState state, IBlockAccess world, BlockPos pos) { public IBlockState getActualState(IBlockState state, IBlockAccess world, BlockPos pos) {
TileEntity tile = world.getTileEntity(pos); if (getPlacementType() != null) {
return state.withProperty(DIRECTION, ((TileBase) world.getTileEntity(pos)).getDirection());
if (tile instanceof TileBase) {
return state.withProperty(DIRECTION, ((TileBase) tile).getDirection());
} }
return state; return state;
@@ -78,18 +86,10 @@ public abstract class BlockBase extends Block {
@Override @Override
public boolean rotateBlock(World world, BlockPos pos, EnumFacing axis) { public boolean rotateBlock(World world, BlockPos pos, EnumFacing axis) {
TileEntity tile = world.getTileEntity(pos); if (!world.isRemote && getPlacementType() != null) {
TileBase tile = (TileBase) world.getTileEntity(pos);
if (!world.isRemote && tile instanceof TileBase) { tile.setDirection(getPlacementType().getNext(tile.getDirection()));
EnumFacing dir = ((TileBase) tile).getDirection();
int newDir = dir.ordinal() + 1;
if (newDir > EnumFacing.VALUES.length - 1) {
newDir = 0;
}
((TileBase) tile).setDirection(EnumFacing.getFront(newDir));
RefinedStorageUtils.updateBlock(world, pos); RefinedStorageUtils.updateBlock(world, pos);
@@ -100,19 +100,11 @@ public abstract class BlockBase extends Block {
} }
@Override @Override
public void onBlockPlacedBy(World world, BlockPos pos, IBlockState state, EntityLivingBase player, ItemStack itemStack) { public void onBlockPlacedBy(World world, BlockPos pos, IBlockState state, EntityLivingBase player, ItemStack stack) {
super.onBlockPlacedBy(world, pos, state, player, itemStack); super.onBlockPlacedBy(world, pos, state, player, stack);
TileEntity tile = world.getTileEntity(pos); if (getPlacementType() != null) {
((TileBase) world.getTileEntity(pos)).setDirection(getPlacementType().getFrom(pos, player));
if (tile instanceof TileBase) {
EnumFacing facing = BlockPistonBase.getFacingFromEntity(pos, player);
if (player.isSneaking() && hasOppositeFacingOnSneakPlace()) {
facing = facing.getOpposite();
}
((TileBase) tile).setDirection(facing);
} }
} }
@@ -135,11 +127,7 @@ public abstract class BlockBase extends Block {
@Override @Override
public boolean removedByPlayer(IBlockState state, World world, BlockPos pos, EntityPlayer player, boolean willHarvest) { public boolean removedByPlayer(IBlockState state, World world, BlockPos pos, EntityPlayer player, boolean willHarvest) {
if (willHarvest) { return willHarvest ? true : super.removedByPlayer(state, world, pos, player, willHarvest);
return true;
}
return super.removedByPlayer(state, world, pos, player, willHarvest);
} }
@Override @Override
@@ -149,11 +137,7 @@ public abstract class BlockBase extends Block {
world.setBlockToAir(pos); world.setBlockToAir(pos);
} }
public Item createItemForBlock() { public EnumPlacementType getPlacementType() {
return new ItemBlockBase(this, false); return EnumPlacementType.HORIZONTAL;
}
public boolean hasOppositeFacingOnSneakPlace() {
return false;
} }
} }

View File

@@ -1,6 +1,5 @@
package refinedstorage.block; package refinedstorage.block;
import net.minecraft.block.properties.IProperty;
import net.minecraft.block.properties.PropertyBool; import net.minecraft.block.properties.PropertyBool;
import net.minecraft.block.state.BlockStateContainer; import net.minecraft.block.state.BlockStateContainer;
import net.minecraft.block.state.IBlockState; import net.minecraft.block.state.IBlockState;
@@ -9,12 +8,13 @@ import net.minecraft.util.math.AxisAlignedBB;
import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.BlockPos;
import net.minecraft.world.IBlockAccess; import net.minecraft.world.IBlockAccess;
import net.minecraft.world.World; import net.minecraft.world.World;
import refinedstorage.RefinedStorageBlocks; import refinedstorage.api.network.INetworkMaster;
import refinedstorage.api.network.INetworkNode; import refinedstorage.api.network.INetworkNode;
import refinedstorage.tile.TileBase;
import refinedstorage.tile.TileCable; import refinedstorage.tile.TileCable;
public class BlockCable extends BlockNode { public class BlockCable extends BlockNode {
public static final AxisAlignedBB CABLE_AABB = new AxisAlignedBB(4 * (1F / 16F), 4 * (1F / 16F), 4 * (1F / 16F), 1 - 4 * (1F / 16F), 1 - 4 * (1F / 16F), 1 - 4 * (1F / 16F)); private static final AxisAlignedBB CABLE_AABB = new AxisAlignedBB(4 * (1F / 16F), 4 * (1F / 16F), 4 * (1F / 16F), 1 - 4 * (1F / 16F), 1 - 4 * (1F / 16F), 1 - 4 * (1F / 16F));
public static final PropertyBool NORTH = PropertyBool.create("north"); public static final PropertyBool NORTH = PropertyBool.create("north");
public static final PropertyBool EAST = PropertyBool.create("east"); public static final PropertyBool EAST = PropertyBool.create("east");
@@ -23,41 +23,56 @@ public class BlockCable extends BlockNode {
public static final PropertyBool UP = PropertyBool.create("up"); public static final PropertyBool UP = PropertyBool.create("up");
public static final PropertyBool DOWN = PropertyBool.create("down"); public static final PropertyBool DOWN = PropertyBool.create("down");
public BlockCable() { public BlockCable(String name) {
super("cable"); super(name);
setHardness(0.6F); setHardness(0.6F);
} }
public BlockCable() {
this("cable");
}
@Override @Override
public TileEntity createTileEntity(World world, IBlockState state) { public TileEntity createTileEntity(World world, IBlockState state) {
return new TileCable(); return new TileCable();
} }
@Override @Override
protected BlockStateContainer createBlockState() { protected BlockStateContainer.Builder createBlockStateBuilder() {
return new BlockStateContainer(this, new IProperty[]{ return super.createBlockStateBuilder()
NORTH, .add(NORTH)
EAST, .add(EAST)
SOUTH, .add(SOUTH)
WEST, .add(WEST)
UP, .add(UP)
DOWN, .add(DOWN);
});
} }
@Override @Override
public IBlockState getActualState(IBlockState state, IBlockAccess world, BlockPos pos) { public IBlockState getActualState(IBlockState state, IBlockAccess world, BlockPos pos) {
return state.withProperty(NORTH, hasConnectionWith(world, pos.north())) return super.getActualState(state, world, pos)
.withProperty(EAST, hasConnectionWith(world, pos.east())) .withProperty(NORTH, hasConnectionWith(world, pos, pos.north()))
.withProperty(SOUTH, hasConnectionWith(world, pos.south())) .withProperty(EAST, hasConnectionWith(world, pos, pos.east()))
.withProperty(WEST, hasConnectionWith(world, pos.west())) .withProperty(SOUTH, hasConnectionWith(world, pos, pos.south()))
.withProperty(UP, hasConnectionWith(world, pos.up())) .withProperty(WEST, hasConnectionWith(world, pos, pos.west()))
.withProperty(DOWN, hasConnectionWith(world, pos.down())); .withProperty(UP, hasConnectionWith(world, pos, pos.up()))
.withProperty(DOWN, hasConnectionWith(world, pos, pos.down()));
} }
public static boolean hasConnectionWith(IBlockAccess world, BlockPos pos) { private boolean hasConnectionWith(IBlockAccess world, BlockPos basePos, BlockPos pos) {
return world.getBlockState(pos).getBlock() == RefinedStorageBlocks.CONTROLLER || world.getTileEntity(pos) instanceof INetworkNode; TileEntity tile = world.getTileEntity(pos);
if (tile instanceof INetworkMaster || tile instanceof INetworkNode) {
// Do not render a cable extension to on this position when we have a direction (like an exporter, importer or external storage)
if (getPlacementType() != null) {
return ((TileBase) world.getTileEntity(basePos)).getFacingTile() != tile;
}
return true;
}
return false;
} }
@Override @Override
@@ -74,4 +89,9 @@ public class BlockCable extends BlockNode {
public boolean isFullCube(IBlockState state) { public boolean isFullCube(IBlockState state) {
return false; return false;
} }
@Override
public EnumPlacementType getPlacementType() {
return null;
}
} }

View File

@@ -32,7 +32,7 @@ public class BlockConstructor extends BlockNode {
} }
@Override @Override
public boolean hasOppositeFacingOnSneakPlace() { public EnumPlacementType getPlacementType() {
return true; return EnumPlacementType.ANY;
} }
} }

View File

@@ -1,7 +1,6 @@
package refinedstorage.block; package refinedstorage.block;
import net.minecraft.block.Block; import net.minecraft.block.Block;
import net.minecraft.block.properties.IProperty;
import net.minecraft.block.properties.PropertyEnum; import net.minecraft.block.properties.PropertyEnum;
import net.minecraft.block.properties.PropertyInteger; import net.minecraft.block.properties.PropertyInteger;
import net.minecraft.block.state.BlockStateContainer; import net.minecraft.block.state.BlockStateContainer;
@@ -29,7 +28,7 @@ import java.util.List;
public class BlockController extends BlockBase { public class BlockController extends BlockBase {
public static final PropertyEnum TYPE = PropertyEnum.create("type", EnumControllerType.class); public static final PropertyEnum TYPE = PropertyEnum.create("type", EnumControllerType.class);
public static final PropertyInteger ENERGY = PropertyInteger.create("energy", 0, 8); public static final PropertyInteger ENERGY = PropertyInteger.create("energy", 0, 7);
public BlockController() { public BlockController() {
super("controller"); super("controller");
@@ -44,11 +43,10 @@ public class BlockController extends BlockBase {
@Override @Override
protected BlockStateContainer createBlockState() { protected BlockStateContainer createBlockState() {
return new BlockStateContainer(this, new IProperty[]{ return createBlockStateBuilder()
DIRECTION, .add(TYPE)
TYPE, .add(ENERGY)
ENERGY .build();
});
} }
@Override @Override
@@ -147,7 +145,7 @@ public class BlockController extends BlockBase {
} }
@Override @Override
public Item createItemForBlock() { public Item createItem() {
return new ItemBlockController(); return new ItemBlockController();
} }
} }

View File

@@ -32,7 +32,11 @@ public class BlockCrafter extends BlockNode {
} }
@Override @Override
public boolean hasOppositeFacingOnSneakPlace() { public EnumPlacementType getPlacementType() {
return EnumPlacementType.ANY;
}
public boolean hasConnectivityState() {
return true; return true;
} }
} }

View File

@@ -32,7 +32,7 @@ public class BlockDestructor extends BlockNode {
} }
@Override @Override
public boolean hasOppositeFacingOnSneakPlace() { public EnumPlacementType getPlacementType() {
return true; return EnumPlacementType.ANY;
} }
} }

View File

@@ -1,14 +1,15 @@
package refinedstorage.block; package refinedstorage.block;
import net.minecraft.block.properties.IProperty;
import net.minecraft.block.properties.PropertyBool; import net.minecraft.block.properties.PropertyBool;
import net.minecraft.block.state.BlockStateContainer; import net.minecraft.block.state.BlockStateContainer;
import net.minecraft.block.state.IBlockState; import net.minecraft.block.state.IBlockState;
import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity; import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.BlockRenderLayer;
import net.minecraft.util.EnumFacing; import net.minecraft.util.EnumFacing;
import net.minecraft.util.EnumHand; import net.minecraft.util.EnumHand;
import net.minecraft.util.math.AxisAlignedBB;
import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.BlockPos;
import net.minecraft.world.IBlockAccess; import net.minecraft.world.IBlockAccess;
import net.minecraft.world.World; import net.minecraft.world.World;
@@ -17,6 +18,8 @@ import refinedstorage.RefinedStorageGui;
import refinedstorage.tile.TileDetector; import refinedstorage.tile.TileDetector;
public class BlockDetector extends BlockNode { public class BlockDetector extends BlockNode {
public static final AxisAlignedBB AABB_DETECTOR = new AxisAlignedBB(0.0D, 0.0D, 0.0D, 1.0D, 4D / 16D, 1.0D);
public static final PropertyBool POWERED = PropertyBool.create("powered"); public static final PropertyBool POWERED = PropertyBool.create("powered");
public BlockDetector() { public BlockDetector() {
@@ -25,11 +28,9 @@ public class BlockDetector extends BlockNode {
@Override @Override
protected BlockStateContainer createBlockState() { protected BlockStateContainer createBlockState() {
return new BlockStateContainer(this, new IProperty[]{ return createBlockStateBuilder()
DIRECTION, .add(POWERED)
CONNECTED, .build();
POWERED
});
} }
@Override @Override
@@ -38,6 +39,11 @@ public class BlockDetector extends BlockNode {
.withProperty(POWERED, ((TileDetector) world.getTileEntity(pos)).isPowered()); .withProperty(POWERED, ((TileDetector) world.getTileEntity(pos)).isPowered());
} }
@Override
public AxisAlignedBB getBoundingBox(IBlockState state, IBlockAccess source, BlockPos pos) {
return AABB_DETECTOR;
}
@Override @Override
public TileEntity createTileEntity(World world, IBlockState state) { public TileEntity createTileEntity(World world, IBlockState state) {
return new TileDetector(); return new TileDetector();
@@ -45,13 +51,7 @@ public class BlockDetector extends BlockNode {
@Override @Override
public int getWeakPower(IBlockState state, IBlockAccess world, BlockPos pos, EnumFacing side) { public int getWeakPower(IBlockState state, IBlockAccess world, BlockPos pos, EnumFacing side) {
TileDetector detector = (TileDetector) world.getTileEntity(pos); return ((TileDetector) world.getTileEntity(pos)).isPowered() ? 15 : 0;
if (detector.getDirection() == side.getOpposite()) {
return detector.isPowered() ? 15 : 0;
}
return 0;
} }
@Override @Override
@@ -72,4 +72,24 @@ public class BlockDetector extends BlockNode {
return true; return true;
} }
@Override
public boolean isOpaqueCube(IBlockState state) {
return false;
}
@Override
public boolean isFullCube(IBlockState state) {
return false;
}
@Override
public BlockRenderLayer getBlockLayer() {
return BlockRenderLayer.CUTOUT;
}
@Override
public EnumPlacementType getPlacementType() {
return null;
}
} }

View File

@@ -1,5 +1,7 @@
package refinedstorage.block; package refinedstorage.block;
import net.minecraft.block.properties.PropertyInteger;
import net.minecraft.block.state.BlockStateContainer;
import net.minecraft.block.state.IBlockState; import net.minecraft.block.state.IBlockState;
import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
@@ -7,12 +9,15 @@ import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.EnumFacing; import net.minecraft.util.EnumFacing;
import net.minecraft.util.EnumHand; import net.minecraft.util.EnumHand;
import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.BlockPos;
import net.minecraft.world.IBlockAccess;
import net.minecraft.world.World; import net.minecraft.world.World;
import refinedstorage.RefinedStorage; import refinedstorage.RefinedStorage;
import refinedstorage.RefinedStorageGui; import refinedstorage.RefinedStorageGui;
import refinedstorage.tile.TileDiskDrive; import refinedstorage.tile.TileDiskDrive;
public class BlockDiskDrive extends BlockNode { public class BlockDiskDrive extends BlockNode {
public static final PropertyInteger STORED = PropertyInteger.create("stored", 0, 7);
public BlockDiskDrive() { public BlockDiskDrive() {
super("disk_drive"); super("disk_drive");
} }
@@ -22,6 +27,19 @@ public class BlockDiskDrive extends BlockNode {
return new TileDiskDrive(); return new TileDiskDrive();
} }
@Override
public BlockStateContainer createBlockState() {
return createBlockStateBuilder()
.add(STORED)
.build();
}
@Override
public IBlockState getActualState(IBlockState state, IBlockAccess world, BlockPos pos) {
return super.getActualState(state, world, pos)
.withProperty(STORED, ((TileDiskDrive) world.getTileEntity(pos)).getStoredForScaledDisplay());
}
@Override @Override
public boolean onBlockActivated(World world, BlockPos pos, IBlockState state, EntityPlayer player, EnumHand hand, ItemStack heldItem, EnumFacing side, float hitX, float hitY, float hitZ) { public boolean onBlockActivated(World world, BlockPos pos, IBlockState state, EntityPlayer player, EnumHand hand, ItemStack heldItem, EnumFacing side, float hitX, float hitY, float hitZ) {
if (!world.isRemote) { if (!world.isRemote) {

View File

@@ -12,7 +12,7 @@ import refinedstorage.RefinedStorage;
import refinedstorage.RefinedStorageGui; import refinedstorage.RefinedStorageGui;
import refinedstorage.tile.TileExporter; import refinedstorage.tile.TileExporter;
public class BlockExporter extends BlockNode { public class BlockExporter extends BlockCable {
public BlockExporter() { public BlockExporter() {
super("exporter"); super("exporter");
} }
@@ -32,7 +32,7 @@ public class BlockExporter extends BlockNode {
} }
@Override @Override
public boolean hasOppositeFacingOnSneakPlace() { public EnumPlacementType getPlacementType() {
return true; return EnumPlacementType.ANY;
} }
} }

View File

@@ -13,7 +13,7 @@ import refinedstorage.RefinedStorage;
import refinedstorage.RefinedStorageGui; import refinedstorage.RefinedStorageGui;
import refinedstorage.tile.externalstorage.TileExternalStorage; import refinedstorage.tile.externalstorage.TileExternalStorage;
public class BlockExternalStorage extends BlockNode { public class BlockExternalStorage extends BlockCable {
public BlockExternalStorage() { public BlockExternalStorage() {
super("external_storage"); super("external_storage");
} }
@@ -37,12 +37,16 @@ public class BlockExternalStorage extends BlockNode {
super.neighborChanged(state, world, pos, block); super.neighborChanged(state, world, pos, block);
if (!world.isRemote) { if (!world.isRemote) {
((TileExternalStorage) world.getTileEntity(pos)).updateStorage(); TileExternalStorage externalStorage = (TileExternalStorage) world.getTileEntity(pos);
if (externalStorage.getNetwork() != null) {
externalStorage.updateStorage(externalStorage.getNetwork());
}
} }
} }
@Override @Override
public boolean hasOppositeFacingOnSneakPlace() { public EnumPlacementType getPlacementType() {
return true; return EnumPlacementType.ANY;
} }
} }

View File

@@ -1,6 +1,5 @@
package refinedstorage.block; package refinedstorage.block;
import net.minecraft.block.properties.IProperty;
import net.minecraft.block.properties.PropertyEnum; import net.minecraft.block.properties.PropertyEnum;
import net.minecraft.block.state.BlockStateContainer; import net.minecraft.block.state.BlockStateContainer;
import net.minecraft.block.state.IBlockState; import net.minecraft.block.state.IBlockState;
@@ -41,11 +40,9 @@ public class BlockGrid extends BlockNode {
@Override @Override
protected BlockStateContainer createBlockState() { protected BlockStateContainer createBlockState() {
return new BlockStateContainer(this, new IProperty[]{ return createBlockStateBuilder()
DIRECTION, .add(TYPE)
CONNECTED, .build();
TYPE
});
} }
@Override @Override
@@ -70,7 +67,7 @@ public class BlockGrid extends BlockNode {
} }
@Override @Override
public Item createItemForBlock() { public Item createItem() {
return new ItemBlockBase(this, true); return new ItemBlockBase(this, true);
} }
} }

View File

@@ -12,7 +12,7 @@ import refinedstorage.RefinedStorage;
import refinedstorage.RefinedStorageGui; import refinedstorage.RefinedStorageGui;
import refinedstorage.tile.TileImporter; import refinedstorage.tile.TileImporter;
public class BlockImporter extends BlockNode { public class BlockImporter extends BlockCable {
public BlockImporter() { public BlockImporter() {
super("importer"); super("importer");
} }
@@ -32,7 +32,7 @@ public class BlockImporter extends BlockNode {
} }
@Override @Override
public boolean hasOppositeFacingOnSneakPlace() { public EnumPlacementType getPlacementType() {
return true; return EnumPlacementType.ANY;
} }
} }

View File

@@ -30,4 +30,9 @@ public class BlockInterface extends BlockNode {
return true; return true;
} }
@Override
public EnumPlacementType getPlacementType() {
return null;
}
} }

View File

@@ -4,4 +4,9 @@ public class BlockMachineCasing extends BlockBase {
public BlockMachineCasing() { public BlockMachineCasing() {
super("machine_casing"); super("machine_casing");
} }
@Override
public EnumPlacementType getPlacementType() {
return null;
}
} }

View File

@@ -1,6 +1,5 @@
package refinedstorage.block; package refinedstorage.block;
import net.minecraft.block.properties.IProperty;
import net.minecraft.block.properties.PropertyBool; import net.minecraft.block.properties.PropertyBool;
import net.minecraft.block.state.BlockStateContainer; import net.minecraft.block.state.BlockStateContainer;
import net.minecraft.block.state.IBlockState; import net.minecraft.block.state.IBlockState;
@@ -26,18 +25,33 @@ public abstract class BlockNode extends BlockBase {
return true; return true;
} }
public boolean hasConnectivityState() {
return false;
}
@Override
protected BlockStateContainer.Builder createBlockStateBuilder() {
BlockStateContainer.Builder builder = super.createBlockStateBuilder();
if (hasConnectivityState()) {
builder.add(CONNECTED);
}
return builder;
}
@Override @Override
protected BlockStateContainer createBlockState() { protected BlockStateContainer createBlockState() {
return new BlockStateContainer(this, new IProperty[]{ return createBlockStateBuilder().build();
DIRECTION,
CONNECTED
});
} }
@Override @Override
public IBlockState getActualState(IBlockState state, IBlockAccess world, BlockPos pos) { public IBlockState getActualState(IBlockState state, IBlockAccess world, BlockPos pos) {
return super.getActualState(state, world, pos) if (hasConnectivityState()) {
.withProperty(CONNECTED, ((TileNode) world.getTileEntity(pos)).isConnected()); return super.getActualState(state, world, pos).withProperty(CONNECTED, ((TileNode) world.getTileEntity(pos)).isConnected());
}
return super.getActualState(state, world, pos);
} }
@Override @Override

View File

@@ -35,4 +35,9 @@ public class BlockProcessingPatternEncoder extends BlockBase {
return true; return true;
} }
@Override
public EnumPlacementType getPlacementType() {
return null;
}
} }

View File

@@ -1,7 +0,0 @@
package refinedstorage.block;
public class BlockQuartzEnrichedIron extends BlockBase {
public BlockQuartzEnrichedIron() {
super("quartz_enriched_iron_block");
}
}

View File

@@ -30,4 +30,13 @@ public class BlockRelay extends BlockNode {
return true; return true;
} }
@Override
public EnumPlacementType getPlacementType() {
return null;
}
public boolean hasConnectivityState() {
return true;
}
} }

View File

@@ -1,6 +1,5 @@
package refinedstorage.block; package refinedstorage.block;
import net.minecraft.block.properties.IProperty;
import net.minecraft.block.properties.PropertyBool; import net.minecraft.block.properties.PropertyBool;
import net.minecraft.block.state.BlockStateContainer; import net.minecraft.block.state.BlockStateContainer;
import net.minecraft.block.state.IBlockState; import net.minecraft.block.state.IBlockState;
@@ -9,6 +8,7 @@ import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity; import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.EnumFacing; import net.minecraft.util.EnumFacing;
import net.minecraft.util.EnumHand; import net.minecraft.util.EnumHand;
import net.minecraft.util.math.AxisAlignedBB;
import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.BlockPos;
import net.minecraft.world.IBlockAccess; import net.minecraft.world.IBlockAccess;
import net.minecraft.world.World; import net.minecraft.world.World;
@@ -17,6 +17,8 @@ import refinedstorage.RefinedStorageGui;
import refinedstorage.tile.TileSolderer; import refinedstorage.tile.TileSolderer;
public class BlockSolderer extends BlockNode { public class BlockSolderer extends BlockNode {
public static final AxisAlignedBB AABB_SOLDERER = new AxisAlignedBB(0.0D, 0.0D, 0.0D, 1.0D, 14D / 16D, 1.0D);
public static final PropertyBool WORKING = PropertyBool.create("working"); public static final PropertyBool WORKING = PropertyBool.create("working");
public BlockSolderer() { public BlockSolderer() {
@@ -37,13 +39,16 @@ public class BlockSolderer extends BlockNode {
return true; return true;
} }
@Override
public AxisAlignedBB getBoundingBox(IBlockState state, IBlockAccess source, BlockPos pos) {
return AABB_SOLDERER;
}
@Override @Override
protected BlockStateContainer createBlockState() { protected BlockStateContainer createBlockState() {
return new BlockStateContainer(this, new IProperty[]{ return super.createBlockStateBuilder()
DIRECTION, .add(WORKING)
CONNECTED, .build();
WORKING
});
} }
@Override @Override
@@ -51,4 +56,19 @@ public class BlockSolderer extends BlockNode {
return super.getActualState(state, world, pos) return super.getActualState(state, world, pos)
.withProperty(WORKING, ((TileSolderer) world.getTileEntity(pos)).isWorking()); .withProperty(WORKING, ((TileSolderer) world.getTileEntity(pos)).isWorking());
} }
@Override
public boolean isOpaqueCube(IBlockState state) {
return false;
}
@Override
public boolean isFullCube(IBlockState state) {
return false;
}
@Override
public EnumPlacementType getPlacementType() {
return null;
}
} }

View File

@@ -1,6 +1,5 @@
package refinedstorage.block; package refinedstorage.block;
import net.minecraft.block.properties.IProperty;
import net.minecraft.block.properties.PropertyEnum; import net.minecraft.block.properties.PropertyEnum;
import net.minecraft.block.state.BlockStateContainer; import net.minecraft.block.state.BlockStateContainer;
import net.minecraft.block.state.IBlockState; import net.minecraft.block.state.IBlockState;
@@ -30,6 +29,8 @@ public class BlockStorage extends BlockNode {
public BlockStorage() { public BlockStorage() {
super("storage"); super("storage");
setHardness(5.8F);
} }
@Override @Override
@@ -41,11 +42,9 @@ public class BlockStorage extends BlockNode {
@Override @Override
protected BlockStateContainer createBlockState() { protected BlockStateContainer createBlockState() {
return new BlockStateContainer(this, new IProperty[]{ return createBlockStateBuilder()
DIRECTION, .add(TYPE)
CONNECTED, .build();
TYPE
});
} }
@Override @Override
@@ -104,7 +103,12 @@ public class BlockStorage extends BlockNode {
} }
@Override @Override
public Item createItemForBlock() { public Item createItem() {
return new ItemBlockStorage(); return new ItemBlockStorage();
} }
@Override
public EnumPlacementType getPlacementType() {
return null;
}
} }

View File

@@ -1,18 +1,26 @@
package refinedstorage.block; package refinedstorage.block;
import net.minecraft.block.Block;
import net.minecraft.block.state.IBlockState; import net.minecraft.block.state.IBlockState;
import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity; import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.BlockRenderLayer;
import net.minecraft.util.EnumFacing; import net.minecraft.util.EnumFacing;
import net.minecraft.util.EnumHand; import net.minecraft.util.EnumHand;
import net.minecraft.util.math.AxisAlignedBB;
import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.BlockPos;
import net.minecraft.world.IBlockAccess;
import net.minecraft.world.World; import net.minecraft.world.World;
import refinedstorage.RefinedStorage; import refinedstorage.RefinedStorage;
import refinedstorage.RefinedStorageGui; import refinedstorage.RefinedStorageGui;
import refinedstorage.tile.TileNode;
import refinedstorage.tile.TileWirelessTransmitter; import refinedstorage.tile.TileWirelessTransmitter;
public class BlockWirelessTransmitter extends BlockNode { public class BlockWirelessTransmitter extends BlockNode {
// From BlockTorch
private static final AxisAlignedBB WIRELESS_TRANSMITTER_AABB = new AxisAlignedBB(0.4000000059604645D, 0.0D, 0.4000000059604645D, 0.6000000238418579D, 0.6000000238418579D, 0.6000000238418579D);
public BlockWirelessTransmitter() { public BlockWirelessTransmitter() {
super("wireless_transmitter"); super("wireless_transmitter");
} }
@@ -30,4 +38,51 @@ public class BlockWirelessTransmitter extends BlockNode {
return true; return true;
} }
@Override
public void neighborChanged(IBlockState state, World world, BlockPos pos, Block block) {
if (!canPlaceBlockAt(world, pos) && world.getBlockState(pos).getBlock() == this) {
dropBlockAsItem(world, pos, state, 0);
world.setBlockToAir(pos);
}
}
@Override
public AxisAlignedBB getBoundingBox(IBlockState state, IBlockAccess world, BlockPos pos) {
return WIRELESS_TRANSMITTER_AABB;
}
@Override
public boolean isOpaqueCube(IBlockState state) {
return false;
}
@Override
public boolean isFullCube(IBlockState state) {
return false;
}
@Override
public boolean canPlaceBlockAt(World world, BlockPos pos) {
BlockPos downPos = pos.offset(EnumFacing.DOWN);
IBlockState down = world.getBlockState(downPos);
return down.getBlock().canPlaceTorchOnTop(down, world, downPos) || (world.getTileEntity(downPos) instanceof TileNode && !(world.getTileEntity(downPos) instanceof TileWirelessTransmitter));
}
@Override
public BlockRenderLayer getBlockLayer() {
return BlockRenderLayer.CUTOUT;
}
@Override
public boolean hasConnectivityState() {
return true;
}
@Override
public EnumPlacementType getPlacementType() {
return null;
}
} }

View File

@@ -0,0 +1,46 @@
package refinedstorage.block;
import net.minecraft.block.BlockPistonBase;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.util.EnumFacing;
import net.minecraft.util.math.BlockPos;
public enum EnumPlacementType {
ANY(
EnumFacing.VALUES
),
HORIZONTAL(
EnumFacing.NORTH,
EnumFacing.EAST,
EnumFacing.SOUTH,
EnumFacing.WEST
);
public final EnumFacing[] allowed;
EnumPlacementType(EnumFacing... allowed) {
this.allowed = allowed;
}
EnumFacing getFrom(BlockPos pos, EntityLivingBase entity) {
switch (this) {
case ANY:
return BlockPistonBase.getFacingFromEntity(pos, entity);
case HORIZONTAL:
return entity.getHorizontalFacing().getOpposite();
default:
return null;
}
}
EnumFacing getNext(EnumFacing previous) {
switch (this) {
case ANY:
return previous.ordinal() + 1 >= EnumFacing.VALUES.length ? EnumFacing.VALUES[0] : EnumFacing.VALUES[previous.ordinal() + 1];
case HORIZONTAL:
return previous.rotateYCCW();
default:
return previous;
}
}
}

View File

@@ -47,6 +47,6 @@ public enum EnumStorageType implements IStringSerializable {
return type; return type;
} }
} }
return TYPE_1K; return TYPE_CREATIVE;
} }
} }

View File

@@ -23,7 +23,7 @@ public class BasicItemHandler extends ItemStackHandler {
public ItemStack insertItem(int slot, ItemStack stack, boolean simulate) { public ItemStack insertItem(int slot, ItemStack stack, boolean simulate) {
if (validators.length > 0) { if (validators.length > 0) {
for (IItemValidator validator : validators) { for (IItemValidator validator : validators) {
if (validator.valid(stack)) { if (validator.isValid(stack)) {
return super.insertItem(slot, stack, simulate); return super.insertItem(slot, stack, simulate);
} }
} }

View File

@@ -17,7 +17,7 @@ public class BasicItemValidator implements IItemValidator {
} }
@Override @Override
public boolean valid(ItemStack stack) { public boolean isValid(ItemStack stack) {
if (stack.getItem() == item) { if (stack.getItem() == item) {
if (damage != -1 && stack.getItemDamage() != damage) { if (damage != -1 && stack.getItemDamage() != damage) {
return false; return false;

View File

@@ -3,5 +3,5 @@ package refinedstorage.inventory;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
public interface IItemValidator { public interface IItemValidator {
boolean valid(ItemStack stack); boolean isValid(ItemStack stack);
} }

View File

@@ -1,6 +1,7 @@
package refinedstorage.item; package refinedstorage.item;
import net.minecraft.client.resources.I18n; import net.minecraft.client.resources.I18n;
import net.minecraft.entity.Entity;
import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.inventory.InventoryHelper; import net.minecraft.inventory.InventoryHelper;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
@@ -64,6 +65,15 @@ public class ItemBlockStorage extends ItemBlockBase {
return stack.getTagCompound() != null && stack.getTagCompound().hasKey(TileStorage.NBT_STORAGE); return stack.getTagCompound() != null && stack.getTagCompound().hasKey(TileStorage.NBT_STORAGE);
} }
@Override
public void onUpdate(ItemStack stack, World world, Entity entity, int slot, boolean selected) {
super.onUpdate(stack, world, entity, slot, selected);
if (!stack.hasTagCompound()) {
initNBT(stack);
}
}
@Override @Override
public void onCreated(ItemStack stack, World world, EntityPlayer player) { public void onCreated(ItemStack stack, World world, EntityPlayer player) {
super.onCreated(stack, world, player); super.onCreated(stack, world, player);

View File

@@ -2,6 +2,7 @@ package refinedstorage.item;
import net.minecraft.client.resources.I18n; import net.minecraft.client.resources.I18n;
import net.minecraft.creativetab.CreativeTabs; import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.entity.Entity;
import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.inventory.InventoryHelper; import net.minecraft.inventory.InventoryHelper;
import net.minecraft.item.Item; import net.minecraft.item.Item;
@@ -39,14 +40,25 @@ public class ItemStorageDisk extends ItemBase {
@Override @Override
public void getSubItems(Item item, CreativeTabs tab, List list) { public void getSubItems(Item item, CreativeTabs tab, List list) {
for (int i = 0; i < 6; ++i) { for (int i = 0; i < 5; ++i) {
list.add(i == TYPE_DEBUG ? createDebugDisk() : NBTStorage.createStackWithNBT(new ItemStack(item, 1, i))); list.add(NBTStorage.createStackWithNBT(new ItemStack(item, 1, i)));
} }
} }
private ItemStack createDebugDisk() { @Override
ItemStack debugDisk = new ItemStack(RefinedStorageItems.STORAGE_DISK, 1, ItemStorageDisk.TYPE_DEBUG); public void onUpdate(ItemStack stack, World world, Entity entity, int slot, boolean selected) {
super.onUpdate(stack, world, entity, slot, selected);
if (!stack.hasTagCompound()) {
if (stack.getItemDamage() == 5) {
applyDebugDiskData(stack);
} else {
NBTStorage.createStackWithNBT(stack);
}
}
}
private void applyDebugDiskData(ItemStack stack) {
if (debugDiskTag == null) { if (debugDiskTag == null) {
debugDiskTag = NBTStorage.createNBT(); debugDiskTag = NBTStorage.createNBT();
@@ -76,9 +88,7 @@ public class ItemStorageDisk extends ItemBase {
storage.writeToNBT(); storage.writeToNBT();
} }
debugDisk.setTagCompound(debugDiskTag.copy()); stack.setTagCompound(debugDiskTag.copy());
return debugDisk;
} }
@Override @Override

View File

@@ -102,11 +102,9 @@ public class ClientProxy extends CommonProxy {
ModelLoader.setCustomModelResourceLocation(RefinedStorageItems.UPGRADE, ItemUpgrade.TYPE_STACK, new ModelResourceLocation("refinedstorage:stack_upgrade", "inventory")); ModelLoader.setCustomModelResourceLocation(RefinedStorageItems.UPGRADE, ItemUpgrade.TYPE_STACK, new ModelResourceLocation("refinedstorage:stack_upgrade", "inventory"));
// Blocks // Blocks
ModelLoader.setCustomStateMapper(RefinedStorageBlocks.STORAGE, (new StateMap.Builder()) ModelLoader.setCustomStateMapper(RefinedStorageBlocks.GRID, (new StateMap.Builder())
.ignore(RefinedStorageBlocks.STORAGE.DIRECTION) .ignore(RefinedStorageBlocks.GRID.TYPE)
.ignore(RefinedStorageBlocks.STORAGE.CONNECTED) .build());
.build()
);
ModelLoader.setCustomModelResourceLocation(Item.getItemFromBlock(RefinedStorageBlocks.CABLE), 0, new ModelResourceLocation("refinedstorage:cable", "inventory")); ModelLoader.setCustomModelResourceLocation(Item.getItemFromBlock(RefinedStorageBlocks.CABLE), 0, new ModelResourceLocation("refinedstorage:cable", "inventory"));
ModelLoader.setCustomModelResourceLocation(Item.getItemFromBlock(RefinedStorageBlocks.GRID), EnumGridType.NORMAL.getId(), new ModelResourceLocation("refinedstorage:grid", "inventory")); ModelLoader.setCustomModelResourceLocation(Item.getItemFromBlock(RefinedStorageBlocks.GRID), EnumGridType.NORMAL.getId(), new ModelResourceLocation("refinedstorage:grid", "inventory"));
@@ -134,6 +132,5 @@ public class ClientProxy extends CommonProxy {
ModelLoader.setCustomModelResourceLocation(Item.getItemFromBlock(RefinedStorageBlocks.STORAGE), EnumStorageType.TYPE_16K.getId(), new ModelResourceLocation("refinedstorage:storage", "type=16k")); ModelLoader.setCustomModelResourceLocation(Item.getItemFromBlock(RefinedStorageBlocks.STORAGE), EnumStorageType.TYPE_16K.getId(), new ModelResourceLocation("refinedstorage:storage", "type=16k"));
ModelLoader.setCustomModelResourceLocation(Item.getItemFromBlock(RefinedStorageBlocks.STORAGE), EnumStorageType.TYPE_64K.getId(), new ModelResourceLocation("refinedstorage:storage", "type=64k")); ModelLoader.setCustomModelResourceLocation(Item.getItemFromBlock(RefinedStorageBlocks.STORAGE), EnumStorageType.TYPE_64K.getId(), new ModelResourceLocation("refinedstorage:storage", "type=64k"));
ModelLoader.setCustomModelResourceLocation(Item.getItemFromBlock(RefinedStorageBlocks.STORAGE), EnumStorageType.TYPE_CREATIVE.getId(), new ModelResourceLocation("refinedstorage:storage", "type=creative")); ModelLoader.setCustomModelResourceLocation(Item.getItemFromBlock(RefinedStorageBlocks.STORAGE), EnumStorageType.TYPE_CREATIVE.getId(), new ModelResourceLocation("refinedstorage:storage", "type=creative"));
ModelLoader.setCustomModelResourceLocation(Item.getItemFromBlock(RefinedStorageBlocks.QUARTZ_ENRICHED_IRON), 0, new ModelResourceLocation("refinedstorage:quartz_enriched_iron_block", "inventory"));
} }
} }

View File

@@ -86,10 +86,11 @@ public class CommonProxy {
registerBlock(RefinedStorageBlocks.PROCESSING_PATTERN_ENCODER); registerBlock(RefinedStorageBlocks.PROCESSING_PATTERN_ENCODER);
registerBlock(RefinedStorageBlocks.DISK_DRIVE); registerBlock(RefinedStorageBlocks.DISK_DRIVE);
registerBlock(RefinedStorageBlocks.STORAGE); registerBlock(RefinedStorageBlocks.STORAGE);
registerBlock(RefinedStorageBlocks.EXTERNAL_STORAGE);
registerBlock(RefinedStorageBlocks.SOLDERER); registerBlock(RefinedStorageBlocks.SOLDERER);
registerBlock(RefinedStorageBlocks.CABLE);
registerBlock(RefinedStorageBlocks.IMPORTER); registerBlock(RefinedStorageBlocks.IMPORTER);
registerBlock(RefinedStorageBlocks.EXPORTER); registerBlock(RefinedStorageBlocks.EXPORTER);
registerBlock(RefinedStorageBlocks.EXTERNAL_STORAGE);
registerBlock(RefinedStorageBlocks.CONSTRUCTOR); registerBlock(RefinedStorageBlocks.CONSTRUCTOR);
registerBlock(RefinedStorageBlocks.DESTRUCTOR); registerBlock(RefinedStorageBlocks.DESTRUCTOR);
registerBlock(RefinedStorageBlocks.DETECTOR); registerBlock(RefinedStorageBlocks.DETECTOR);
@@ -97,8 +98,6 @@ public class CommonProxy {
registerBlock(RefinedStorageBlocks.INTERFACE); registerBlock(RefinedStorageBlocks.INTERFACE);
registerBlock(RefinedStorageBlocks.WIRELESS_TRANSMITTER); registerBlock(RefinedStorageBlocks.WIRELESS_TRANSMITTER);
registerBlock(RefinedStorageBlocks.MACHINE_CASING); registerBlock(RefinedStorageBlocks.MACHINE_CASING);
registerBlock(RefinedStorageBlocks.QUARTZ_ENRICHED_IRON);
registerBlock(RefinedStorageBlocks.CABLE);
registerItem(RefinedStorageItems.QUARTZ_ENRICHED_IRON); registerItem(RefinedStorageItems.QUARTZ_ENRICHED_IRON);
registerItem(RefinedStorageItems.STORAGE_DISK); registerItem(RefinedStorageItems.STORAGE_DISK);
@@ -134,16 +133,6 @@ public class CommonProxy {
'Q', new ItemStack(Items.QUARTZ) 'Q', new ItemStack(Items.QUARTZ)
); );
GameRegistry.addShapelessRecipe(new ItemStack(RefinedStorageItems.QUARTZ_ENRICHED_IRON, 9), new ItemStack(RefinedStorageBlocks.QUARTZ_ENRICHED_IRON));
// Quartz Enriched Iron Block
GameRegistry.addRecipe(new ItemStack(RefinedStorageBlocks.QUARTZ_ENRICHED_IRON),
"EEE",
"EEE",
"EEE",
'E', new ItemStack(RefinedStorageItems.QUARTZ_ENRICHED_IRON)
);
// Machine Casing // Machine Casing
GameRegistry.addRecipe(new ItemStack(RefinedStorageBlocks.MACHINE_CASING), GameRegistry.addRecipe(new ItemStack(RefinedStorageBlocks.MACHINE_CASING),
"EEE", "EEE",
@@ -201,14 +190,14 @@ public class CommonProxy {
)); ));
// Cable // Cable
GameRegistry.addRecipe(new ItemStack(RefinedStorageBlocks.CABLE, 12), GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(RefinedStorageBlocks.CABLE, 12),
"EEE", "EEE",
"GRG", "GRG",
"EEE", "EEE",
'E', new ItemStack(RefinedStorageItems.QUARTZ_ENRICHED_IRON), 'E', new ItemStack(RefinedStorageItems.QUARTZ_ENRICHED_IRON),
'G', new ItemStack(Blocks.GLASS), 'G', "blockGlass",
'R', new ItemStack(Items.REDSTONE) 'R', new ItemStack(Items.REDSTONE)
); ));
// Wireless Transmitter // Wireless Transmitter
GameRegistry.addRecipe(new ItemStack(RefinedStorageBlocks.WIRELESS_TRANSMITTER), GameRegistry.addRecipe(new ItemStack(RefinedStorageBlocks.WIRELESS_TRANSMITTER),
@@ -294,20 +283,20 @@ public class CommonProxy {
'H', new ItemStack(Blocks.CHEST), 'H', new ItemStack(Blocks.CHEST),
'C', new ItemStack(RefinedStorageItems.CORE, 1, ItemCore.TYPE_CONSTRUCTION), 'C', new ItemStack(RefinedStorageItems.CORE, 1, ItemCore.TYPE_CONSTRUCTION),
'D', new ItemStack(RefinedStorageItems.CORE, 1, ItemCore.TYPE_DESTRUCTION), 'D', new ItemStack(RefinedStorageItems.CORE, 1, ItemCore.TYPE_DESTRUCTION),
'M', new ItemStack(RefinedStorageBlocks.MACHINE_CASING), 'M', new ItemStack(RefinedStorageBlocks.CABLE),
'P', new ItemStack(RefinedStorageItems.PROCESSOR, 1, ItemProcessor.TYPE_IMPROVED) 'P', new ItemStack(RefinedStorageItems.PROCESSOR, 1, ItemProcessor.TYPE_IMPROVED)
); );
// Importer // Importer
GameRegistry.addShapelessRecipe(new ItemStack(RefinedStorageBlocks.IMPORTER), GameRegistry.addShapelessRecipe(new ItemStack(RefinedStorageBlocks.IMPORTER),
new ItemStack(RefinedStorageBlocks.MACHINE_CASING), new ItemStack(RefinedStorageBlocks.CABLE),
new ItemStack(RefinedStorageItems.CORE, 1, ItemCore.TYPE_CONSTRUCTION), new ItemStack(RefinedStorageItems.CORE, 1, ItemCore.TYPE_CONSTRUCTION),
new ItemStack(RefinedStorageItems.PROCESSOR, 1, ItemProcessor.TYPE_IMPROVED) new ItemStack(RefinedStorageItems.PROCESSOR, 1, ItemProcessor.TYPE_IMPROVED)
); );
// Exporter // Exporter
GameRegistry.addShapelessRecipe(new ItemStack(RefinedStorageBlocks.EXPORTER), GameRegistry.addShapelessRecipe(new ItemStack(RefinedStorageBlocks.EXPORTER),
new ItemStack(RefinedStorageBlocks.MACHINE_CASING), new ItemStack(RefinedStorageBlocks.CABLE),
new ItemStack(RefinedStorageItems.CORE, 1, ItemCore.TYPE_DESTRUCTION), new ItemStack(RefinedStorageItems.CORE, 1, ItemCore.TYPE_DESTRUCTION),
new ItemStack(RefinedStorageItems.PROCESSOR, 1, ItemProcessor.TYPE_IMPROVED) new ItemStack(RefinedStorageItems.PROCESSOR, 1, ItemProcessor.TYPE_IMPROVED)
); );
@@ -356,7 +345,7 @@ public class CommonProxy {
'R', new ItemStack(Items.REDSTONE), 'R', new ItemStack(Items.REDSTONE),
'E', new ItemStack(RefinedStorageItems.QUARTZ_ENRICHED_IRON), 'E', new ItemStack(RefinedStorageItems.QUARTZ_ENRICHED_IRON),
'S', "itemSilicon", 'S', "itemSilicon",
'G', new ItemStack(Blocks.GLASS) 'G', "blockGlass"
)); ));
GameRegistry.addRecipe(new ItemStack(RefinedStorageItems.STORAGE_PART, 1, ItemStoragePart.TYPE_4K), GameRegistry.addRecipe(new ItemStack(RefinedStorageItems.STORAGE_PART, 1, ItemStoragePart.TYPE_4K),
@@ -390,28 +379,28 @@ public class CommonProxy {
); );
// Storage Housing // Storage Housing
GameRegistry.addRecipe(NBTStorage.createStackWithNBT(new ItemStack(RefinedStorageItems.STORAGE_HOUSING)), GameRegistry.addRecipe(new ShapedOreRecipe(NBTStorage.createStackWithNBT(new ItemStack(RefinedStorageItems.STORAGE_HOUSING)),
"GRG", "GRG",
"R R", "R R",
"EEE", "EEE",
'G', new ItemStack(Blocks.GLASS), 'G', "blockGlass",
'R', new ItemStack(Items.REDSTONE), 'R', new ItemStack(Items.REDSTONE),
'E', new ItemStack(RefinedStorageItems.QUARTZ_ENRICHED_IRON) 'E', new ItemStack(RefinedStorageItems.QUARTZ_ENRICHED_IRON)
); ));
// Storage Disks // Storage Disks
for (int type = 0; type <= 3; ++type) { for (int type = 0; type <= 3; ++type) {
ItemStack disk = NBTStorage.createStackWithNBT(new ItemStack(RefinedStorageItems.STORAGE_DISK, 1, type)); ItemStack disk = NBTStorage.createStackWithNBT(new ItemStack(RefinedStorageItems.STORAGE_DISK, 1, type));
GameRegistry.addRecipe(disk, GameRegistry.addRecipe(new ShapedOreRecipe(disk,
"GRG", "GRG",
"RPR", "RPR",
"EEE", "EEE",
'G', new ItemStack(Blocks.GLASS), 'G', "blockGlass",
'R', new ItemStack(Items.REDSTONE), 'R', new ItemStack(Items.REDSTONE),
'P', new ItemStack(RefinedStorageItems.STORAGE_PART, 1, type), 'P', new ItemStack(RefinedStorageItems.STORAGE_PART, 1, type),
'E', new ItemStack(RefinedStorageItems.QUARTZ_ENRICHED_IRON) 'E', new ItemStack(RefinedStorageItems.QUARTZ_ENRICHED_IRON)
); ));
GameRegistry.addShapelessRecipe(disk, GameRegistry.addShapelessRecipe(disk,
new ItemStack(RefinedStorageItems.STORAGE_HOUSING), new ItemStack(RefinedStorageItems.STORAGE_HOUSING),
@@ -420,24 +409,24 @@ public class CommonProxy {
} }
// Pattern // Pattern
GameRegistry.addRecipe(new ItemStack(RefinedStorageItems.PATTERN), GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(RefinedStorageItems.PATTERN),
"GRG", "GRG",
"RGR", "RGR",
"EEE", "EEE",
'G', new ItemStack(Blocks.GLASS), 'G', "blockGlass",
'R', new ItemStack(Items.REDSTONE), 'R', new ItemStack(Items.REDSTONE),
'E', new ItemStack(RefinedStorageItems.QUARTZ_ENRICHED_IRON) 'E', new ItemStack(RefinedStorageItems.QUARTZ_ENRICHED_IRON)
); ));
// Upgrade // Upgrade
GameRegistry.addRecipe(new ItemStack(RefinedStorageItems.UPGRADE, 1, 0), GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(RefinedStorageItems.UPGRADE, 1, 0),
"EGE", "EGE",
"EPE", "EPE",
"EGE", "EGE",
'G', new ItemStack(Blocks.GLASS), 'G', "blockGlass",
'P', new ItemStack(RefinedStorageItems.PROCESSOR, 1, ItemProcessor.TYPE_IMPROVED), 'P', new ItemStack(RefinedStorageItems.PROCESSOR, 1, ItemProcessor.TYPE_IMPROVED),
'E', new ItemStack(RefinedStorageItems.QUARTZ_ENRICHED_IRON) 'E', new ItemStack(RefinedStorageItems.QUARTZ_ENRICHED_IRON)
); ));
RefinedStorageAPI.SOLDERER_REGISTRY.addRecipe(new SoldererRecipeUpgrade(ItemUpgrade.TYPE_RANGE)); RefinedStorageAPI.SOLDERER_REGISTRY.addRecipe(new SoldererRecipeUpgrade(ItemUpgrade.TYPE_RANGE));
RefinedStorageAPI.SOLDERER_REGISTRY.addRecipe(new SoldererRecipeUpgrade(ItemUpgrade.TYPE_SPEED)); RefinedStorageAPI.SOLDERER_REGISTRY.addRecipe(new SoldererRecipeUpgrade(ItemUpgrade.TYPE_SPEED));
@@ -458,15 +447,15 @@ public class CommonProxy {
RefinedStorageAPI.SOLDERER_REGISTRY.addRecipe(new SoldererRecipeStorage(EnumStorageType.TYPE_64K, ItemStoragePart.TYPE_64K)); RefinedStorageAPI.SOLDERER_REGISTRY.addRecipe(new SoldererRecipeStorage(EnumStorageType.TYPE_64K, ItemStoragePart.TYPE_64K));
// Crafting Monitor // Crafting Monitor
GameRegistry.addRecipe(new ItemStack(RefinedStorageBlocks.CRAFTING_MONITOR), GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(RefinedStorageBlocks.CRAFTING_MONITOR),
"EGE", "EGE",
"GMG", "GMG",
"EPE", "EPE",
'E', new ItemStack(RefinedStorageItems.QUARTZ_ENRICHED_IRON), 'E', new ItemStack(RefinedStorageItems.QUARTZ_ENRICHED_IRON),
'M', new ItemStack(RefinedStorageBlocks.MACHINE_CASING), 'M', new ItemStack(RefinedStorageBlocks.MACHINE_CASING),
'G', new ItemStack(Blocks.GLASS), 'G', "blockGlass",
'P', new ItemStack(RefinedStorageItems.PROCESSOR, 1, ItemProcessor.TYPE_IMPROVED) 'P', new ItemStack(RefinedStorageItems.PROCESSOR, 1, ItemProcessor.TYPE_IMPROVED)
); ));
// Interface // Interface
RefinedStorageAPI.SOLDERER_REGISTRY.addRecipe(new SoldererRecipeBasic( RefinedStorageAPI.SOLDERER_REGISTRY.addRecipe(new SoldererRecipeBasic(
@@ -486,7 +475,7 @@ public class CommonProxy {
private void registerBlock(BlockBase block) { private void registerBlock(BlockBase block) {
GameRegistry.<Block>register(block); GameRegistry.<Block>register(block);
GameRegistry.register(block.createItemForBlock()); GameRegistry.register(block.createItem());
} }
private void registerItem(Item item) { private void registerItem(Item item) {

View File

@@ -14,11 +14,6 @@ public class TileCable extends TileNode {
// NO OP // NO OP
} }
@Override
public boolean canSendConnectivityUpdate() {
return false;
}
@Override @Override
public Class<? extends Container> getContainer() { public Class<? extends Container> getContainer() {
return null; return null;

View File

@@ -24,7 +24,7 @@ import refinedstorage.item.ItemUpgrade;
public class TileCrafter extends TileNode implements ICraftingPatternContainer { public class TileCrafter extends TileNode implements ICraftingPatternContainer {
private BasicItemHandler patterns = new BasicItemHandler(9, this, new IItemValidator() { private BasicItemHandler patterns = new BasicItemHandler(9, this, new IItemValidator() {
@Override @Override
public boolean valid(ItemStack stack) { public boolean isValid(ItemStack stack) {
return stack.getItem() == RefinedStorageItems.PATTERN && ItemPattern.isValid(stack); return stack.getItem() == RefinedStorageItems.PATTERN && ItemPattern.isValid(stack);
} }
}) { }) {
@@ -66,7 +66,7 @@ public class TileCrafter extends TileNode implements ICraftingPatternContainer {
public void onConnectionChange(INetworkMaster network, boolean state) { public void onConnectionChange(INetworkMaster network, boolean state) {
if (!state) { if (!state) {
for (ICraftingTask task : network.getCraftingTasks()) { for (ICraftingTask task : network.getCraftingTasks()) {
if (task.getPattern().getContainer(worldObj) == this) { if (task.getPattern().getContainerPosition().equals(pos)) {
network.cancelCraftingTask(task); network.cancelCraftingTask(task);
} }
} }

View File

@@ -33,6 +33,7 @@ public class TileDetector extends TileNode implements ICompareConfig {
private int amount = 0; private int amount = 0;
private boolean powered = false; private boolean powered = false;
private boolean wasPowered;
@Override @Override
public int getEnergyUsage() { public int getEnergyUsage() {
@@ -44,8 +45,6 @@ public class TileDetector extends TileNode implements ICompareConfig {
if (ticks % SPEED == 0) { if (ticks % SPEED == 0) {
ItemStack slot = filter.getStackInSlot(0); ItemStack slot = filter.getStackInSlot(0);
boolean wasPowered = powered;
if (slot != null) { if (slot != null) {
ItemStack stack = network.getStorage().get(slot, compare); ItemStack stack = network.getStorage().get(slot, compare);
@@ -73,15 +72,22 @@ public class TileDetector extends TileNode implements ICompareConfig {
} else { } else {
powered = false; powered = false;
} }
if (powered != wasPowered) {
worldObj.notifyNeighborsOfStateChange(pos, RefinedStorageBlocks.DETECTOR);
RefinedStorageUtils.updateBlock(worldObj, pos);
}
} }
} }
@Override
public void update() {
if (powered != wasPowered) {
wasPowered = powered;
worldObj.notifyNeighborsOfStateChange(pos, RefinedStorageBlocks.DETECTOR);
RefinedStorageUtils.updateBlock(worldObj, pos);
}
super.update();
}
@Override @Override
public void onConnectionChange(INetworkMaster network, boolean state) { public void onConnectionChange(INetworkMaster network, boolean state) {
super.onConnectionChange(network, state); super.onConnectionChange(network, state);

View File

@@ -49,6 +49,7 @@ public class TileDiskDrive extends TileNode implements IStorageProvider, IStorag
private static final String NBT_PRIORITY = "Priority"; private static final String NBT_PRIORITY = "Priority";
private static final String NBT_COMPARE = "Compare"; private static final String NBT_COMPARE = "Compare";
private static final String NBT_MODE = "Mode"; private static final String NBT_MODE = "Mode";
private static final String NBT_STORED = "Stored";
private BasicItemHandler disks = new BasicItemHandler(8, this, new BasicItemValidator(RefinedStorageItems.STORAGE_DISK)) { private BasicItemHandler disks = new BasicItemHandler(8, this, new BasicItemValidator(RefinedStorageItems.STORAGE_DISK)) {
@Override @Override
@@ -84,6 +85,20 @@ public class TileDiskDrive extends TileNode implements IStorageProvider, IStorag
private int priority = 0; private int priority = 0;
private int compare = 0; private int compare = 0;
private int mode = ModeConstants.WHITELIST; private int mode = ModeConstants.WHITELIST;
private int stored = 0;
@Override
public void update() {
if (!worldObj.isRemote) {
if (stored != getStoredForDisplayServer()) {
stored = getStoredForDisplayServer();
RefinedStorageUtils.updateBlock(worldObj, pos);
}
}
super.update();
}
@Override @Override
public int getEnergyUsage() { public int getEnergyUsage() {
@@ -166,6 +181,22 @@ public class TileDiskDrive extends TileNode implements IStorageProvider, IStorag
return tag; return tag;
} }
@Override
public NBTTagCompound writeUpdate(NBTTagCompound tag) {
super.writeUpdate(tag);
tag.setInteger(NBT_STORED, stored);
return tag;
}
@Override
public void readUpdate(NBTTagCompound tag) {
stored = tag.getInteger(NBT_STORED);
super.readUpdate(tag);
}
@Override @Override
public void writeContainerData(ByteBuf buf) { public void writeContainerData(ByteBuf buf) {
super.writeContainerData(buf); super.writeContainerData(buf);
@@ -213,6 +244,36 @@ public class TileDiskDrive extends TileNode implements IStorageProvider, IStorag
markDirty(); markDirty();
} }
public int getStoredForDisplayServer() {
float stored = 0;
float storedMax = 0;
for (int i = 0; i < disks.getSlots(); ++i) {
ItemStack disk = disks.getStackInSlot(i);
if (disk != null) {
int capacity = EnumStorageType.getById(disk.getItemDamage()).getCapacity();
if (capacity == -1) {
return 0;
}
stored += NBTStorage.getStoredFromNBT(disk.getTagCompound());
storedMax += EnumStorageType.getById(disk.getItemDamage()).getCapacity();
}
}
if (storedMax == 0) {
return 0;
}
return (int) Math.floor((stored / storedMax) * 7f);
}
public int getStoredForScaledDisplay() {
return stored;
}
@Override @Override
public String getGuiTitle() { public String getGuiTitle() {
return "block.refinedstorage:disk_drive.name"; return "block.refinedstorage:disk_drive.name";

View File

@@ -1,11 +1,13 @@
package refinedstorage.tile; package refinedstorage.tile;
import io.netty.buffer.ByteBuf; import io.netty.buffer.ByteBuf;
import net.minecraft.block.Block;
import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.BlockPos;
import refinedstorage.RefinedStorageUtils; import refinedstorage.RefinedStorageUtils;
import refinedstorage.api.network.INetworkMaster; import refinedstorage.api.network.INetworkMaster;
import refinedstorage.api.network.INetworkNode; import refinedstorage.api.network.INetworkNode;
import refinedstorage.block.BlockNode;
import refinedstorage.tile.config.IRedstoneModeConfig; import refinedstorage.tile.config.IRedstoneModeConfig;
import refinedstorage.tile.config.RedstoneMode; import refinedstorage.tile.config.RedstoneMode;
@@ -28,9 +30,10 @@ public abstract class TileNode extends TileBase implements INetworkNode, ISynchr
return isConnected() && canUpdate(); return isConnected() && canUpdate();
} }
@Override private boolean canSendConnectivityUpdate() {
public boolean canSendConnectivityUpdate() { Block block = getBlockType();
return true;
return block instanceof BlockNode ? ((BlockNode) block).hasConnectivityState() : false;
} }
@Override @Override
@@ -65,7 +68,7 @@ public abstract class TileNode extends TileBase implements INetworkNode, ISynchr
} }
@Override @Override
public void onDisconnected() { public void onDisconnected(INetworkMaster network) {
onConnectionChange(network, false); onConnectionChange(network, false);
this.connected = false; this.connected = false;
@@ -144,14 +147,18 @@ public abstract class TileNode extends TileBase implements INetworkNode, ISynchr
public NBTTagCompound writeUpdate(NBTTagCompound tag) { public NBTTagCompound writeUpdate(NBTTagCompound tag) {
super.writeUpdate(tag); super.writeUpdate(tag);
tag.setBoolean(NBT_CONNECTED, isActive()); if (canSendConnectivityUpdate()) {
tag.setBoolean(NBT_CONNECTED, isActive());
}
return tag; return tag;
} }
public void readUpdate(NBTTagCompound tag) { public void readUpdate(NBTTagCompound tag) {
super.readUpdate(tag); if (canSendConnectivityUpdate()) {
connected = tag.getBoolean(NBT_CONNECTED);
}
connected = tag.getBoolean(NBT_CONNECTED); super.readUpdate(tag);
} }
} }

View File

@@ -78,8 +78,7 @@ public class TileSolderer extends TileNode {
recipe = null; recipe = null;
progress = 0; progress = 0;
// Don't set working to false yet, wait till the next update because we may have // Don't set working to false yet, wait till the next update because we may have another stack waiting.
// another stack waiting.
markDirty(); markDirty();
} }

View File

@@ -25,6 +25,7 @@ import refinedstorage.RefinedStorage;
import refinedstorage.RefinedStorageBlocks; import refinedstorage.RefinedStorageBlocks;
import refinedstorage.RefinedStorageUtils; import refinedstorage.RefinedStorageUtils;
import refinedstorage.api.autocrafting.ICraftingPattern; import refinedstorage.api.autocrafting.ICraftingPattern;
import refinedstorage.api.autocrafting.ICraftingPatternContainer;
import refinedstorage.api.autocrafting.ICraftingTask; import refinedstorage.api.autocrafting.ICraftingTask;
import refinedstorage.api.network.IGridHandler; import refinedstorage.api.network.IGridHandler;
import refinedstorage.api.network.INetworkMaster; import refinedstorage.api.network.INetworkMaster;
@@ -50,6 +51,7 @@ import refinedstorage.tile.TileBase;
import refinedstorage.tile.TileCrafter; import refinedstorage.tile.TileCrafter;
import refinedstorage.tile.config.IRedstoneModeConfig; import refinedstorage.tile.config.IRedstoneModeConfig;
import refinedstorage.tile.config.RedstoneMode; import refinedstorage.tile.config.RedstoneMode;
import refinedstorage.tile.externalstorage.ExternalStorage;
import java.util.*; import java.util.*;
@@ -167,9 +169,13 @@ public class TileController extends TileBase implements INetworkMaster, IEnergyR
craftingTasksToAddAsLast.clear(); craftingTasksToAddAsLast.clear();
if (!craftingTasks.empty()) { if (!craftingTasks.empty()) {
markDirty();
ICraftingTask top = craftingTasks.peek(); ICraftingTask top = craftingTasks.peek();
if (ticks % top.getPattern().getContainer(worldObj).getSpeed() == 0 && top.update(worldObj, this)) { ICraftingPatternContainer container = top.getPattern().getContainer(worldObj);
if (container != null && (ticks % container.getSpeed()) == 0 && top.update(worldObj, this)) {
top.onDone(this); top.onDone(this);
craftingTasks.pop(); craftingTasks.pop();
@@ -194,11 +200,7 @@ public class TileController extends TileBase implements INetworkMaster, IEnergyR
if (couldRun != canRun()) { if (couldRun != canRun()) {
couldRun = canRun(); couldRun = canRun();
if (!couldRun && !nodes.isEmpty()) { rebuildNodes();
disconnectAll();
} else if (couldRun) {
rebuildNodes();
}
} }
if (getEnergyScaledForDisplay() != lastEnergyDisplay) { if (getEnergyScaledForDisplay() != lastEnergyDisplay) {
@@ -220,11 +222,12 @@ public class TileController extends TileBase implements INetworkMaster, IEnergyR
public void disconnectAll() { public void disconnectAll() {
for (INetworkNode node : nodes) { for (INetworkNode node : nodes) {
if (node.isConnected()) { if (node.isConnected()) {
node.onDisconnected(); node.onDisconnected(this);
} }
} }
nodes.clear(); nodes.clear();
nodesPos.clear();
} }
@Override @Override
@@ -365,9 +368,7 @@ public class TileController extends TileBase implements INetworkMaster, IEnergyR
if (pattern != null && ItemPattern.isValid(pattern)) { if (pattern != null && ItemPattern.isValid(pattern)) {
patterns.add(new CraftingPattern( patterns.add(new CraftingPattern(
crafter.getPos().getX(), crafter.getPos(),
crafter.getPos().getY(),
crafter.getPos().getZ(),
ItemPattern.isProcessing(pattern), ItemPattern.isProcessing(pattern),
ItemPattern.getInputs(pattern), ItemPattern.getInputs(pattern),
ItemPattern.getOutputs(pattern), ItemPattern.getOutputs(pattern),
@@ -383,6 +384,14 @@ public class TileController extends TileBase implements INetworkMaster, IEnergyR
@Override @Override
public void rebuildNodes() { public void rebuildNodes() {
if (!canRun()) {
if (!nodes.isEmpty()) {
disconnectAll();
}
return;
}
List<INetworkNode> newNodes = new ArrayList<INetworkNode>(); List<INetworkNode> newNodes = new ArrayList<INetworkNode>();
Set<BlockPos> newNodesPos = new HashSet<BlockPos>(); Set<BlockPos> newNodesPos = new HashSet<BlockPos>();
@@ -424,20 +433,23 @@ public class TileController extends TileBase implements INetworkMaster, IEnergyR
} }
} }
for (INetworkNode newNode : newNodes) { List<INetworkNode> oldNodes = new ArrayList<INetworkNode>(nodes);
if (!nodesPos.contains(newNode.getPosition())) { Set<BlockPos> oldNodesPos = new HashSet<BlockPos>(nodesPos);
this.nodes = newNodes;
this.nodesPos = newNodesPos;
for (INetworkNode newNode : nodes) {
if (!oldNodesPos.contains(newNode.getPosition())) {
newNode.onConnected(this); newNode.onConnected(this);
} }
} }
for (INetworkNode oldNode : nodes) { for (INetworkNode oldNode : oldNodes) {
if (!newNodesPos.contains(oldNode.getPosition())) { if (!nodesPos.contains(oldNode.getPosition())) {
oldNode.onDisconnected(); oldNode.onDisconnected(this);
} }
} }
this.nodes = newNodes;
this.nodesPos = newNodesPos;
} }
@Override @Override
@@ -480,6 +492,10 @@ public class TileController extends TileBase implements INetworkMaster, IEnergyR
for (IStorage storage : this.storage.getStorages()) { for (IStorage storage : this.storage.getStorages()) {
remainder = storage.insertItem(remainder, size, simulate); remainder = storage.insertItem(remainder, size, simulate);
if (storage instanceof ExternalStorage && !simulate) {
((ExternalStorage) storage).setHash();
}
if (remainder == null) { if (remainder == null) {
break; break;
} else { } else {
@@ -516,6 +532,10 @@ public class TileController extends TileBase implements INetworkMaster, IEnergyR
for (IStorage storage : this.storage.getStorages()) { for (IStorage storage : this.storage.getStorages()) {
ItemStack took = storage.extractItem(stack, requested - received, flags); ItemStack took = storage.extractItem(stack, requested - received, flags);
if (storage instanceof ExternalStorage) {
((ExternalStorage) storage).setHash();
}
if (took != null) { if (took != null) {
if (newStack == null) { if (newStack == null) {
newStack = took; newStack = took;
@@ -642,7 +662,7 @@ public class TileController extends TileBase implements INetworkMaster, IEnergyR
} }
public int getEnergyScaledForDisplay() { public int getEnergyScaledForDisplay() {
return getEnergyScaled(8); return getEnergyScaled(7);
} }
public int getEnergyScaledForComparator() { public int getEnergyScaledForComparator() {
@@ -667,6 +687,8 @@ public class TileController extends TileBase implements INetworkMaster, IEnergyR
@Override @Override
public void setRedstoneMode(RedstoneMode mode) { public void setRedstoneMode(RedstoneMode mode) {
this.redstoneMode = mode; this.redstoneMode = mode;
markDirty();
} }
@Override @Override

View File

@@ -17,6 +17,8 @@ public class DeepStorageUnitStorage extends ExternalStorage {
public DeepStorageUnitStorage(TileExternalStorage externalStorage, IDeepStorageUnit unit) { public DeepStorageUnitStorage(TileExternalStorage externalStorage, IDeepStorageUnit unit) {
this.externalStorage = externalStorage; this.externalStorage = externalStorage;
this.unit = unit; this.unit = unit;
setHash();
} }
@Override @Override
@@ -24,6 +26,11 @@ public class DeepStorageUnitStorage extends ExternalStorage {
return unit.getMaxStoredCount(); return unit.getMaxStoredCount();
} }
@Override
public int getHash() {
return RefinedStorageUtils.getItemStackHashCode(unit.getStoredItemType());
}
@Override @Override
public List<ItemStack> getItems() { public List<ItemStack> getItems() {
if (unit.getStoredItemType() != null && unit.getStoredItemType().stackSize > 0) { if (unit.getStoredItemType() != null && unit.getStoredItemType().stackSize > 0) {

View File

@@ -17,6 +17,8 @@ public class DrawerStorage extends ExternalStorage {
public DrawerStorage(TileExternalStorage externalStorage, IDrawer drawer) { public DrawerStorage(TileExternalStorage externalStorage, IDrawer drawer) {
this.externalStorage = externalStorage; this.externalStorage = externalStorage;
this.drawer = drawer; this.drawer = drawer;
setHash();
} }
@Override @Override
@@ -24,6 +26,11 @@ public class DrawerStorage extends ExternalStorage {
return drawer.getMaxCapacity(); return drawer.getMaxCapacity();
} }
@Override
public int getHash() {
return RefinedStorageUtils.getItemStackHashCode(drawer.getStoredItemPrototype(), drawer.getStoredItemCount());
}
@Override @Override
public List<ItemStack> getItems() { public List<ItemStack> getItems() {
if (!drawer.isEmpty() && drawer.getStoredItemCount() > 0) { if (!drawer.isEmpty() && drawer.getStoredItemCount() > 0) {

View File

@@ -3,5 +3,23 @@ package refinedstorage.tile.externalstorage;
import refinedstorage.api.storage.IStorage; import refinedstorage.api.storage.IStorage;
public abstract class ExternalStorage implements IStorage { public abstract class ExternalStorage implements IStorage {
private int hash = -1;
public abstract int getCapacity(); public abstract int getCapacity();
public void setHash() {
this.hash = getHash();
}
public abstract int getHash();
public boolean isDirty() {
if (hash != -1 && hash != getHash()) {
hash = getHash();
return true;
}
return false;
}
} }

View File

@@ -16,6 +16,8 @@ public class ItemHandlerStorage extends ExternalStorage {
public ItemHandlerStorage(TileExternalStorage externalStorage, IItemHandler handler) { public ItemHandlerStorage(TileExternalStorage externalStorage, IItemHandler handler) {
this.externalStorage = externalStorage; this.externalStorage = externalStorage;
this.handler = handler; this.handler = handler;
setHash();
} }
@Override @Override
@@ -23,6 +25,19 @@ public class ItemHandlerStorage extends ExternalStorage {
return handler.getSlots() * 64; return handler.getSlots() * 64;
} }
@Override
public int getHash() {
int code = 0;
for (int i = 0; i < handler.getSlots(); ++i) {
if (handler.getStackInSlot(i) != null && handler.getStackInSlot(i).getItem() != null) {
code += RefinedStorageUtils.getItemStackHashCode(handler.getStackInSlot(i));
}
}
return code;
}
@Override @Override
public List<ItemStack> getItems() { public List<ItemStack> getItems() {
List<ItemStack> items = new ArrayList<ItemStack>(); List<ItemStack> items = new ArrayList<ItemStack>();

View File

@@ -56,17 +56,27 @@ public class TileExternalStorage extends TileNode implements IStorageProvider, I
public void onConnectionChange(INetworkMaster network, boolean state) { public void onConnectionChange(INetworkMaster network, boolean state) {
super.onConnectionChange(network, state); super.onConnectionChange(network, state);
updateStorage(network);
network.getStorage().rebuild(); network.getStorage().rebuild();
} }
@Override @Override
public void update() { public void update() {
if (ticks == 0) { if (!worldObj.isRemote && network != null) {
updateStorage(); for (ExternalStorage storage : storages) {
} else if (getFacingTile() instanceof IDrawerGroup && lastDrawerCount != ((IDrawerGroup) getFacingTile()).getDrawerCount()) { if (storage.isDirty()) {
lastDrawerCount = ((IDrawerGroup) getFacingTile()).getDrawerCount(); updateStorage(network);
updateStorage(); break;
}
}
if (getFacingTile() instanceof IDrawerGroup && lastDrawerCount != ((IDrawerGroup) getFacingTile()).getDrawerCount()) {
lastDrawerCount = ((IDrawerGroup) getFacingTile()).getDrawerCount();
updateStorage(network);
}
} }
super.update(); super.update();
@@ -166,8 +176,7 @@ public class TileExternalStorage extends TileNode implements IStorageProvider, I
markDirty(); markDirty();
} }
// Called when the neighbor block changes or when a drawer is added or removed to a drawer group public void updateStorage(INetworkMaster network) {
public void updateStorage() {
storages.clear(); storages.clear();
TileEntity facing = getFacingTile(); TileEntity facing = getFacingTile();
@@ -192,9 +201,7 @@ public class TileExternalStorage extends TileNode implements IStorageProvider, I
} }
} }
if (network != null) { network.getStorage().rebuild();
network.getStorage().rebuild();
}
} }
@Override @Override

View File

@@ -335,6 +335,7 @@ public class TileGrid extends TileNode implements IGrid {
public void writeContainerData(ByteBuf buf) { public void writeContainerData(ByteBuf buf) {
super.writeContainerData(buf); super.writeContainerData(buf);
buf.writeBoolean(isConnected());
buf.writeInt(sortingDirection); buf.writeInt(sortingDirection);
buf.writeInt(sortingType); buf.writeInt(sortingType);
buf.writeInt(searchBoxMode); buf.writeInt(searchBoxMode);
@@ -344,6 +345,7 @@ public class TileGrid extends TileNode implements IGrid {
public void readContainerData(ByteBuf buf) { public void readContainerData(ByteBuf buf) {
super.readContainerData(buf); super.readContainerData(buf);
connected = buf.readBoolean();
sortingDirection = buf.readInt(); sortingDirection = buf.readInt();
sortingType = buf.readInt(); sortingType = buf.readInt();
searchBoxMode = buf.readInt(); searchBoxMode = buf.readInt();

View File

@@ -15,12 +15,6 @@
"transform": "forge:default-block" "transform": "forge:default-block"
} }
], ],
"connected": {
"true": {
},
"false": {
}
},
"direction": { "direction": {
"north": { "north": {
"y": 0 "y": 0

View File

@@ -55,11 +55,6 @@
"textures": { "textures": {
"front": "refinedstorage:blocks/controller_7" "front": "refinedstorage:blocks/controller_7"
} }
},
"8": {
"textures": {
"front": "refinedstorage:blocks/controller_8"
}
} }
}, },
"type": { "type": {

View File

@@ -4,31 +4,17 @@
"model": "orientable", "model": "orientable",
"textures": { "textures": {
"side": "refinedstorage:blocks/side", "side": "refinedstorage:blocks/side",
"top": "refinedstorage:blocks/side" "top": "refinedstorage:blocks/side",
"front": "refinedstorage:blocks/crafting_monitor"
} }
}, },
"variants": { "variants": {
"inventory": [ "inventory": [
{ {
"textures": {
"front": "refinedstorage:blocks/crafting_monitor_disconnected"
},
"transform": "forge:default-block", "transform": "forge:default-block",
"y": 0 "y": 0
} }
], ],
"connected": {
"true": {
"textures": {
"front": "refinedstorage:blocks/crafting_monitor_connected"
}
},
"false": {
"textures": {
"front": "refinedstorage:blocks/crafting_monitor_disconnected"
}
}
},
"direction": { "direction": {
"north": { "north": {
"y": 0 "y": 0

View File

@@ -5,7 +5,7 @@
"textures": { "textures": {
"side": "refinedstorage:blocks/side", "side": "refinedstorage:blocks/side",
"top": "refinedstorage:blocks/side", "top": "refinedstorage:blocks/side",
"front": "refinedstorage:blocks/controller_8" "front": "refinedstorage:blocks/controller_7"
} }
}, },
"variants": { "variants": {
@@ -31,8 +31,6 @@
"6": { "6": {
}, },
"7": { "7": {
},
"8": {
} }
}, },
"type": { "type": {

View File

@@ -15,12 +15,6 @@
"transform": "forge:default-block" "transform": "forge:default-block"
} }
], ],
"connected": {
"true": {
},
"false": {
}
},
"direction": { "direction": {
"north": { "north": {
"y": 0 "y": 0

View File

@@ -1,54 +1,26 @@
{ {
"forge_marker": 1, "forge_marker": 1,
"defaults": { "defaults": {
"model": "orientable",
"textures": { "textures": {
"side": "refinedstorage:blocks/side", "particle": "refinedstorage:blocks/side_borderless",
"top": "refinedstorage:blocks/side", "torch": "refinedstorage:blocks/wireless_transmitter_disconnected"
"front": "refinedstorage:blocks/detector_unpowered" },
} "model": "refinedstorage:detector"
}, },
"variants": { "variants": {
"inventory": [ "inventory": [
{ {
"y": 0,
"transform": "forge:default-block" "transform": "forge:default-block"
} }
], ],
"connected": {
"true": {
},
"false": {
}
},
"powered": { "powered": {
"true": { "true": {
"textures": { "textures": {
"front": "refinedstorage:blocks/detector_powered" "torch": "refinedstorage:blocks/wireless_transmitter_connected"
} }
}, },
"false": { "false": {
} }
},
"direction": {
"north": {
"y": 0
},
"east": {
"y": 90
},
"south": {
"y": 180
},
"west": {
"y": 270
},
"up": {
"x": 270
},
"down": {
"x": 90
}
} }
} }
} }

View File

@@ -5,7 +5,7 @@
"textures": { "textures": {
"side": "refinedstorage:blocks/side", "side": "refinedstorage:blocks/side",
"top": "refinedstorage:blocks/side", "top": "refinedstorage:blocks/side",
"front": "refinedstorage:blocks/disk_drive" "front": "refinedstorage:blocks/disk_drive_0"
} }
}, },
"variants": { "variants": {
@@ -15,10 +15,46 @@
"y": 0 "y": 0
} }
], ],
"connected": { "stored": {
"true": { "0": {
"textures": {
"front": "refinedstorage:blocks/disk_drive_0"
}
}, },
"false": { "1": {
"textures": {
"front": "refinedstorage:blocks/disk_drive_1"
}
},
"2": {
"textures": {
"front": "refinedstorage:blocks/disk_drive_2"
}
},
"3": {
"textures": {
"front": "refinedstorage:blocks/disk_drive_3"
}
},
"4": {
"textures": {
"front": "refinedstorage:blocks/disk_drive_4"
}
},
"5": {
"textures": {
"front": "refinedstorage:blocks/disk_drive_5"
}
},
"6": {
"textures": {
"front": "refinedstorage:blocks/disk_drive_6"
}
},
"7": {
"textures": {
"front": "refinedstorage:blocks/disk_drive_7"
}
} }
}, },
"direction": { "direction": {

View File

@@ -1,44 +1,81 @@
{ {
"forge_marker": 1, "forge_marker": 1,
"defaults": { "defaults": {
"model": "orientable",
"textures": { "textures": {
"side": "refinedstorage:blocks/side", "all": "refinedstorage:blocks/cable",
"top": "refinedstorage:blocks/side", "particle": "refinedstorage:blocks/cable",
"front": "refinedstorage:blocks/exporter" "line": "refinedstorage:blocks/importer_exporter_external_storage"
} },
"model": "refinedstorage:cable_core",
"uvlock": true
}, },
"variants": { "variants": {
"inventory": [ "inventory": [
{ {
"y": 0, "model": "refinedstorage:exporter",
"transform": "forge:default-block" "transform": "forge:default-block"
} }
], ],
"connected": { "direction": {
"north": {
"submodel": "refinedstorage:exporter_north"
},
"east": {
"submodel": "refinedstorage:exporter_east"
},
"south": {
"submodel": "refinedstorage:exporter_south"
},
"west": {
"submodel": "refinedstorage:exporter_west"
},
"up": {
"submodel": "refinedstorage:exporter_up"
},
"down": {
"submodel": "refinedstorage:exporter_down"
}
},
"north": {
"true": { "true": {
"submodel": "refinedstorage:cable_north"
}, },
"false": { "false": {
} }
}, },
"direction": { "east": {
"north": { "true": {
"y": 0 "submodel": "refinedstorage:cable_east"
}, },
"east": { "false": {
"y": 90 }
},
"south": {
"true": {
"submodel": "refinedstorage:cable_south"
}, },
"south": { "false": {
"y": 180 }
},
"west": {
"true": {
"submodel": "refinedstorage:cable_west"
}, },
"west": { "false": {
"y": 270 }
},
"up": {
"true": {
"submodel": "refinedstorage:cable_up"
}, },
"up": { "false": {
"x": 270 }
},
"down": {
"true": {
"submodel": "refinedstorage:cable_down"
}, },
"down": { "false": {
"x": 90
} }
} }
} }

View File

@@ -1,44 +1,81 @@
{ {
"forge_marker": 1, "forge_marker": 1,
"defaults": { "defaults": {
"model": "orientable",
"textures": { "textures": {
"side": "refinedstorage:blocks/side", "all": "refinedstorage:blocks/cable",
"top": "refinedstorage:blocks/side", "particle": "refinedstorage:blocks/cable",
"front": "refinedstorage:blocks/external_storage" "line": "refinedstorage:blocks/importer_exporter_external_storage"
} },
"model": "refinedstorage:cable_core",
"uvlock": true
}, },
"variants": { "variants": {
"inventory": [ "inventory": [
{ {
"y": 0, "model": "refinedstorage:external_storage",
"transform": "forge:default-block" "transform": "forge:default-block"
} }
], ],
"connected": { "direction": {
"north": {
"submodel": "refinedstorage:external_storage_north"
},
"east": {
"submodel": "refinedstorage:external_storage_east"
},
"south": {
"submodel": "refinedstorage:external_storage_south"
},
"west": {
"submodel": "refinedstorage:external_storage_west"
},
"up": {
"submodel": "refinedstorage:external_storage_up"
},
"down": {
"submodel": "refinedstorage:external_storage_down"
}
},
"north": {
"true": { "true": {
"submodel": "refinedstorage:cable_north"
}, },
"false": { "false": {
} }
}, },
"direction": { "east": {
"north": { "true": {
"y": 0 "submodel": "refinedstorage:cable_east"
}, },
"east": { "false": {
"y": 90 }
},
"south": {
"true": {
"submodel": "refinedstorage:cable_south"
}, },
"south": { "false": {
"y": 180 }
},
"west": {
"true": {
"submodel": "refinedstorage:cable_west"
}, },
"west": { "false": {
"y": 270 }
},
"up": {
"true": {
"submodel": "refinedstorage:cable_up"
}, },
"up": { "false": {
"x": 270 }
},
"down": {
"true": {
"submodel": "refinedstorage:cable_down"
}, },
"down": { "false": {
"x": 90
} }
} }
} }

View File

@@ -4,39 +4,17 @@
"model": "orientable", "model": "orientable",
"textures": { "textures": {
"side": "refinedstorage:blocks/side", "side": "refinedstorage:blocks/side",
"top": "refinedstorage:blocks/side" "top": "refinedstorage:blocks/side",
"front": "refinedstorage:blocks/grid"
} }
}, },
"variants": { "variants": {
"inventory": [ "inventory": [
{ {
"textures": {
"front": "refinedstorage:blocks/grid_disconnected"
},
"transform": "forge:default-block", "transform": "forge:default-block",
"y": 0 "y": 0
} }
], ],
"type": {
"normal": {
},
"crafting": {
},
"pattern": {
}
},
"connected": {
"true": {
"textures": {
"front": "refinedstorage:blocks/grid_connected"
}
},
"false": {
"textures": {
"front": "refinedstorage:blocks/grid_disconnected"
}
}
},
"direction": { "direction": {
"north": { "north": {
"y": 0 "y": 0

View File

@@ -1,44 +1,81 @@
{ {
"forge_marker": 1, "forge_marker": 1,
"defaults": { "defaults": {
"model": "orientable",
"textures": { "textures": {
"side": "refinedstorage:blocks/side", "all": "refinedstorage:blocks/cable",
"top": "refinedstorage:blocks/side", "particle": "refinedstorage:blocks/cable",
"front": "refinedstorage:blocks/importer" "line": "refinedstorage:blocks/importer_exporter_external_storage"
} },
"model": "refinedstorage:cable_core",
"uvlock": true
}, },
"variants": { "variants": {
"inventory": [ "inventory": [
{ {
"y": 0, "model": "refinedstorage:importer",
"transform": "forge:default-block" "transform": "forge:default-block"
} }
], ],
"connected": { "direction": {
"north": {
"submodel": "refinedstorage:importer_north"
},
"east": {
"submodel": "refinedstorage:importer_east"
},
"south": {
"submodel": "refinedstorage:importer_south"
},
"west": {
"submodel": "refinedstorage:importer_west"
},
"up": {
"submodel": "refinedstorage:importer_up"
},
"down": {
"submodel": "refinedstorage:importer_down"
}
},
"north": {
"true": { "true": {
"submodel": "refinedstorage:cable_north"
}, },
"false": { "false": {
} }
}, },
"direction": { "east": {
"north": { "true": {
"y": 0 "submodel": "refinedstorage:cable_east"
}, },
"east": { "false": {
"y": 90 }
},
"south": {
"true": {
"submodel": "refinedstorage:cable_south"
}, },
"south": { "false": {
"y": 180 }
},
"west": {
"true": {
"submodel": "refinedstorage:cable_west"
}, },
"west": { "false": {
"y": 270 }
},
"up": {
"true": {
"submodel": "refinedstorage:cable_up"
}, },
"up": { "false": {
"x": 270 }
},
"down": {
"true": {
"submodel": "refinedstorage:cable_down"
}, },
"down": { "false": {
"x": 90
} }
} }
} }

View File

@@ -12,25 +12,8 @@
"transform": "forge:default-block" "transform": "forge:default-block"
} }
], ],
"direction": { "normal": {
"north": { "model": "cube_all"
},
"east": {
},
"south": {
},
"west": {
},
"up": {
},
"down": {
}
},
"connected": {
"true": {
},
"false": {
}
} }
} }
} }

View File

@@ -12,19 +12,8 @@
"transform": "forge:default-block" "transform": "forge:default-block"
} }
], ],
"direction": { "normal": {
"north": { "model": "cube_all"
},
"east": {
},
"south": {
},
"west": {
},
"up": {
},
"down": {
}
} }
} }
} }

View File

@@ -1,11 +1,15 @@
{ {
"forge_marker": 1, "forge_marker": 1,
"defaults": { "defaults": {
"model": "orientable", "model": "cube",
"textures": { "textures": {
"side": "refinedstorage:blocks/side", "particle": "refinedstorage:blocks/processing_pattern_encoder",
"top": "refinedstorage:blocks/processing_pattern_encoder", "down": "refinedstorage:blocks/side",
"front": "refinedstorage:blocks/side" "up": "refinedstorage:blocks/processing_pattern_encoder",
"north": "refinedstorage:blocks/processing_pattern_encoder_side",
"east": "refinedstorage:blocks/processing_pattern_encoder_side",
"south": "refinedstorage:blocks/processing_pattern_encoder_side",
"west": "refinedstorage:blocks/processing_pattern_encoder_side"
} }
}, },
"variants": { "variants": {
@@ -15,25 +19,8 @@
"y": 0 "y": 0
} }
], ],
"direction": { "normal": {
"north": { "model": "cube"
"y": 0
},
"east": {
"y": 90
},
"south": {
"y": 180
},
"west": {
"y": 270
},
"up": {
"x": 270
},
"down": {
"x": 90
}
} }
} }
} }

View File

@@ -1,30 +0,0 @@
{
"forge_marker": 1,
"defaults": {
"model": "cube_all",
"textures": {
"all": "refinedstorage:blocks/quartz_enriched_iron_block"
}
},
"variants": {
"inventory": [
{
"transform": "forge:default-block"
}
],
"direction": {
"north": {
},
"east": {
},
"south": {
},
"west": {
},
"up": {
},
"down": {
}
}
}
}

View File

@@ -12,20 +12,6 @@
"transform": "forge:default-block" "transform": "forge:default-block"
} }
], ],
"direction": {
"north": {
},
"east": {
},
"south": {
},
"west": {
},
"up": {
},
"down": {
}
},
"connected": { "connected": {
"true": { "true": {
"textures": { "textures": {

View File

@@ -1,54 +1,30 @@
{ {
"forge_marker": 1, "forge_marker": 1,
"defaults": { "defaults": {
"model": "orientable",
"textures": { "textures": {
"side": "refinedstorage:blocks/side", "particle": "refinedstorage:blocks/side_borderless",
"top": "refinedstorage:blocks/side", "3": "refinedstorage:blocks/solderer_laser",
"front": "refinedstorage:blocks/solderer" "4": "refinedstorage:blocks/solderer_laser"
} },
"model": "refinedstorage:solderer",
"uvlock": true
}, },
"variants": { "variants": {
"inventory": [ "inventory": [
{ {
"y": 0, "model": "refinedstorage:solderer",
"transform": "forge:default-block" "transform": "forge:default-block"
} }
], ],
"connected": {
"true": {
},
"false": {
}
},
"working": { "working": {
"true": { "true": {
"textures": { "textures": {
"front": "refinedstorage:blocks/solderer_working" "3": "refinedstorage:blocks/solderer_laser_working",
"4": "refinedstorage:blocks/solderer_laser_working"
} }
}, },
"false": { "false": {
} }
},
"direction": {
"north": {
"y": 0
},
"east": {
"y": 90
},
"south": {
"y": 180
},
"west": {
"y": 270
},
"up": {
"x": 270
},
"down": {
"x": 90
}
} }
} }
} }

View File

@@ -1,52 +1,24 @@
{ {
"forge_marker": 1, "forge_marker": 1,
"defaults": { "defaults": {
"model": "orientable", "model": "torch",
"textures": { "textures": {
"side": "refinedstorage:blocks/side", "torch": "refinedstorage:blocks/wireless_transmitter_disconnected"
"top": "refinedstorage:blocks/side"
} }
}, },
"variants": { "variants": {
"inventory": [ "inventory": [
{ {
"textures": { "transform": "forge:default-block"
"front": "refinedstorage:blocks/wireless_transmitter_disconnected"
},
"transform": "forge:default-block",
"y": 0
} }
], ],
"connected": { "connected": {
"true": { "true": {
"textures": { "textures": {
"front": "refinedstorage:blocks/wireless_transmitter_connected" "torch": "refinedstorage:blocks/wireless_transmitter_connected"
} }
}, },
"false": { "false": {
"textures": {
"front": "refinedstorage:blocks/wireless_transmitter_disconnected"
}
}
},
"direction": {
"north": {
"y": 0
},
"east": {
"y": 90
},
"south": {
"y": 180
},
"west": {
"y": 270
},
"up": {
"x": 270
},
"down": {
"x": 90
} }
} }
} }

View File

@@ -110,7 +110,6 @@ block.refinedstorage:crafting_monitor.name=Crafting Monitor
block.refinedstorage:wireless_transmitter.name=Wireless Transmitter block.refinedstorage:wireless_transmitter.name=Wireless Transmitter
block.refinedstorage:crafter.name=Crafter block.refinedstorage:crafter.name=Crafter
block.refinedstorage:processing_pattern_encoder.name=Processing Pattern Encoder block.refinedstorage:processing_pattern_encoder.name=Processing Pattern Encoder
block.refinedstorage:quartz_enriched_iron_block.name=Quartz Enriched Iron Block
item.refinedstorage:storage_disk.0.name=1k Storage Disk item.refinedstorage:storage_disk.0.name=1k Storage Disk
item.refinedstorage:storage_disk.1.name=4k Storage Disk item.refinedstorage:storage_disk.1.name=4k Storage Disk

View File

@@ -110,7 +110,6 @@ block.refinedstorage:crafting_monitor.name=Moniteur de Craft
block.refinedstorage:wireless_transmitter.name=Transmetteur sans Fil block.refinedstorage:wireless_transmitter.name=Transmetteur sans Fil
block.refinedstorage:crafter.name=Crafteur block.refinedstorage:crafter.name=Crafteur
block.refinedstorage:processing_pattern_encoder.name=Encodeur de Modèle de Traitement block.refinedstorage:processing_pattern_encoder.name=Encodeur de Modèle de Traitement
block.refinedstorage:quartz_enriched_iron_block.name=Fer Enrichi de Quartz Bloc
item.refinedstorage:storage_disk.0.name=Disque de Stockage de 1k item.refinedstorage:storage_disk.0.name=Disque de Stockage de 1k
item.refinedstorage:storage_disk.1.name=Disque de Stockage de 4k item.refinedstorage:storage_disk.1.name=Disque de Stockage de 4k

View File

@@ -110,7 +110,6 @@ block.refinedstorage:crafting_monitor.name=Crafting Monitor
block.refinedstorage:wireless_transmitter.name=Draadloze Zender block.refinedstorage:wireless_transmitter.name=Draadloze Zender
block.refinedstorage:crafter.name=Crafter block.refinedstorage:crafter.name=Crafter
block.refinedstorage:processing_pattern_encoder.name=Verwerkingspatroon Codeerder block.refinedstorage:processing_pattern_encoder.name=Verwerkingspatroon Codeerder
block.refinedstorage:quartz_enriched_iron_block.name=Quartz Verrijkte IJzerblok
item.refinedstorage:storage_disk.0.name=1k Opslagschijf item.refinedstorage:storage_disk.0.name=1k Opslagschijf
item.refinedstorage:storage_disk.1.name=4k Opslagschijf item.refinedstorage:storage_disk.1.name=4k Opslagschijf

View File

@@ -110,7 +110,6 @@ block.refinedstorage:crafting_monitor.name=Monitor de Fabricação
block.refinedstorage:wireless_transmitter.name=Transmissor Sem Fio block.refinedstorage:wireless_transmitter.name=Transmissor Sem Fio
block.refinedstorage:crafter.name=Fabricador block.refinedstorage:crafter.name=Fabricador
block.refinedstorage:processing_pattern_encoder.name=Codificador de Padrão de Processamento block.refinedstorage:processing_pattern_encoder.name=Codificador de Padrão de Processamento
block.refinedstorage:quartz_enriched_iron_block.name=Bloco de Ferro Enriquecido com Quartzo
item.refinedstorage:storage_disk.0.name=Disco de Armazenamento 1k item.refinedstorage:storage_disk.0.name=Disco de Armazenamento 1k
item.refinedstorage:storage_disk.1.name=Disco de Armazenamento 4k item.refinedstorage:storage_disk.1.name=Disco de Armazenamento 4k

View File

@@ -0,0 +1,176 @@
{
"__comment": "Model generated using MrCrayfish's Model Creator (http://mrcrayfish.com/modelcreator/)",
"textures": {
"0": "refinedstorage:blocks/side"
},
"elements": [
{
"from": [
7,
0,
7
],
"to": [
9,
10,
9
],
"shade": false,
"faces": {
"down": {
"uv": [
7,
13,
9,
15
],
"texture": "#torch"
},
"up": {
"uv": [
7,
6,
9,
8
],
"texture": "#torch"
}
}
},
{
"from": [
7,
0,
0
],
"to": [
9,
16,
16
],
"shade": false,
"faces": {
"west": {
"uv": [
0,
0,
16,
16
],
"texture": "#torch"
},
"east": {
"uv": [
0,
0,
16,
16
],
"texture": "#torch"
}
}
},
{
"from": [
0,
0,
7
],
"to": [
16,
16,
9
],
"shade": false,
"faces": {
"north": {
"uv": [
0,
0,
16,
16
],
"texture": "#torch"
},
"south": {
"uv": [
0,
0,
16,
16
],
"texture": "#torch"
}
}
},
{
"name": "base",
"from": [
0.0,
0.0,
0.0
],
"to": [
16.0,
4.0,
16.0
],
"faces": {
"north": {
"texture": "#0",
"uv": [
0.0,
12.0,
16.0,
16.0
]
},
"east": {
"texture": "#0",
"uv": [
0.0,
12.0,
16.0,
16.0
]
},
"south": {
"texture": "#0",
"uv": [
0.0,
12.0,
16.0,
16.0
]
},
"west": {
"texture": "#0",
"uv": [
0.0,
12.0,
16.0,
16.0
]
},
"up": {
"texture": "#0",
"uv": [
0.0,
0.0,
16.0,
16.0
]
},
"down": {
"texture": "#0",
"uv": [
0.0,
0.0,
16.0,
16.0
]
}
}
}
]
}

View File

@@ -0,0 +1,419 @@
{
"__comment": "Model generated using MrCrayfish's Model Creator (http://mrcrayfish.com/modelcreator/)",
"elements": [
{
"name": "Line1",
"from": [
6.0,
6.0,
0.0
],
"to": [
10.0,
10.0,
2.0
],
"faces": {
"north": {
"texture": "#line",
"uv": [
0.0,
0.0,
4.0,
2.0
]
},
"east": {
"texture": "#line",
"uv": [
0.0,
0.0,
4.0,
2.0
]
},
"south": {
"texture": "#line",
"uv": [
0.0,
0.0,
4.0,
2.0
]
},
"west": {
"texture": "#line",
"uv": [
0.0,
0.0,
4.0,
2.0
]
},
"up": {
"texture": "#line",
"uv": [
0.0,
0.0,
4.0,
4.0
]
},
"down": {
"texture": "#line",
"uv": [
0.0,
0.0,
4.0,
4.0
]
}
}
},
{
"name": "Line2",
"from": [
5.0,
5.0,
2.0
],
"to": [
11.0,
11.0,
4.0
],
"faces": {
"north": {
"texture": "#line",
"uv": [
0.0,
0.0,
6.0,
2.0
]
},
"east": {
"texture": "#line",
"uv": [
0.0,
0.0,
6.0,
2.0
]
},
"south": {
"texture": "#line",
"uv": [
0.0,
0.0,
6.0,
2.0
]
},
"west": {
"texture": "#line",
"uv": [
0.0,
0.0,
6.0,
2.0
]
},
"up": {
"texture": "#line",
"uv": [
0.0,
0.0,
6.0,
6.0
]
},
"down": {
"texture": "#line",
"uv": [
0.0,
0.0,
6.0,
6.0
]
}
}
},
{
"name": "Line3",
"from": [
3.0,
3.0,
4.0
],
"to": [
13.0,
13.0,
6.0
],
"faces": {
"north": {
"texture": "#line",
"uv": [
0.0,
0.0,
10.0,
2.0
]
},
"east": {
"texture": "#line",
"uv": [
0.0,
0.0,
10.0,
2.0
]
},
"south": {
"texture": "#line",
"uv": [
0.0,
0.0,
10.0,
2.0
]
},
"west": {
"texture": "#line",
"uv": [
0.0,
0.0,
10.0,
2.0
]
},
"up": {
"texture": "#line",
"uv": [
0.0,
0.0,
10.0,
10.0
]
},
"down": {
"texture": "#line",
"uv": [
0.0,
0.0,
10.0,
10.0
]
}
}
},
{
"name": "Core",
"from": [
6.0,
6.0,
6.0
],
"to": [
10.0,
10.0,
10.0
],
"faces": {
"north": {
"texture": "#all",
"uv": [
4.0,
4.0,
8.0,
8.0
]
},
"east": {
"texture": "#all",
"uv": [
0.0,
4.0,
4.0,
8.0
]
},
"south": {
"texture": "#all",
"uv": [
12.0,
4.0,
16.0,
8.0
]
},
"west": {
"texture": "#all",
"uv": [
8.0,
4.0,
12.0,
8.0
]
},
"up": {
"texture": "#all",
"uv": [
8.0,
4.0,
4.0,
0.0
]
},
"down": {
"texture": "#all",
"uv": [
12.0,
0.0,
8.0,
4.0
]
}
}
},
{
"name": "East",
"from": [
10.0,
6.0,
6.0
],
"to": [
16.0,
10.0,
10.0
],
"faces": {
"north": {
"texture": "#all",
"uv": [
4.0,
4.0,
8.0,
8.0
]
},
"east": {
"texture": "#all",
"uv": [
0.0,
4.0,
4.0,
8.0
]
},
"south": {
"texture": "#all",
"uv": [
12.0,
4.0,
16.0,
8.0
]
},
"west": {
"texture": "#all",
"uv": [
8.0,
4.0,
12.0,
8.0
]
},
"up": {
"texture": "#all",
"uv": [
8.0,
4.0,
4.0,
0.0
]
},
"down": {
"texture": "#all",
"uv": [
12.0,
0.0,
8.0,
4.0
]
}
}
},
{
"name": "West",
"from": [
0.0,
6.0,
6.0
],
"to": [
6.0,
10.0,
10.0
],
"faces": {
"north": {
"texture": "#all",
"uv": [
4.0,
4.0,
8.0,
8.0
]
},
"east": {
"texture": "#all",
"uv": [
0.0,
4.0,
4.0,
8.0
]
},
"south": {
"texture": "#all",
"uv": [
12.0,
4.0,
16.0,
8.0
]
},
"west": {
"texture": "#all",
"uv": [
8.0,
4.0,
12.0,
8.0
]
},
"up": {
"texture": "#all",
"uv": [
8.0,
4.0,
4.0,
0.0
]
},
"down": {
"texture": "#all",
"uv": [
12.0,
0.0,
8.0,
4.0
]
}
}
}
]
}

View File

@@ -0,0 +1,214 @@
{
"__comment": "Model generated using MrCrayfish's Model Creator (http://mrcrayfish.com/modelcreator/)",
"textures": {
},
"elements": [
{
"name": "Line1",
"from": [
6.0,
0.0,
6.0
],
"to": [
10.0,
2.0,
10.0
],
"faces": {
"north": {
"texture": "#line",
"uv": [
0.0,
0.0,
4.0,
2.0
]
},
"east": {
"texture": "#line",
"uv": [
0.0,
0.0,
4.0,
2.0
]
},
"south": {
"texture": "#line",
"uv": [
0.0,
0.0,
4.0,
2.0
]
},
"west": {
"texture": "#line",
"uv": [
0.0,
0.0,
4.0,
2.0
]
},
"up": {
"texture": "#line",
"uv": [
0.0,
0.0,
4.0,
4.0
]
},
"down": {
"texture": "#line",
"uv": [
0.0,
0.0,
4.0,
4.0
]
}
}
},
{
"name": "Line2",
"from": [
5.0,
2.0,
5.0
],
"to": [
11.0,
4.0,
11.0
],
"faces": {
"north": {
"texture": "#line",
"uv": [
0.0,
0.0,
6.0,
2.0
]
},
"east": {
"texture": "#line",
"uv": [
0.0,
0.0,
6.0,
2.0
]
},
"south": {
"texture": "#line",
"uv": [
0.0,
0.0,
6.0,
2.0
]
},
"west": {
"texture": "#line",
"uv": [
0.0,
0.0,
6.0,
2.0
]
},
"up": {
"texture": "#line",
"uv": [
0.0,
0.0,
6.0,
6.0
]
},
"down": {
"texture": "#line",
"uv": [
0.0,
0.0,
6.0,
6.0
]
}
}
},
{
"name": "Line3",
"from": [
3.0,
4.0,
3.0
],
"to": [
13.0,
6.0,
13.0
],
"faces": {
"north": {
"texture": "#line",
"uv": [
0.0,
0.0,
10.0,
2.0
]
},
"east": {
"texture": "#line",
"uv": [
0.0,
0.0,
10.0,
2.0
]
},
"south": {
"texture": "#line",
"uv": [
0.0,
0.0,
10.0,
2.0
]
},
"west": {
"texture": "#line",
"uv": [
0.0,
0.0,
10.0,
2.0
]
},
"up": {
"texture": "#line",
"uv": [
0.0,
0.0,
10.0,
10.0
]
},
"down": {
"texture": "#line",
"uv": [
0.0,
0.0,
10.0,
10.0
]
}
}
}
]
}

View File

@@ -0,0 +1,214 @@
{
"__comment": "Model generated using MrCrayfish's Model Creator (http://mrcrayfish.com/modelcreator/)",
"textures": {
},
"elements": [
{
"name": "Line1",
"from": [
14.0,
6.0,
6.0
],
"to": [
16.0,
10.0,
10.0
],
"faces": {
"north": {
"texture": "#line",
"uv": [
0.0,
0.0,
4.0,
2.0
]
},
"east": {
"texture": "#line",
"uv": [
0.0,
0.0,
4.0,
2.0
]
},
"south": {
"texture": "#line",
"uv": [
0.0,
0.0,
4.0,
2.0
]
},
"west": {
"texture": "#line",
"uv": [
0.0,
0.0,
4.0,
2.0
]
},
"up": {
"texture": "#line",
"uv": [
0.0,
0.0,
4.0,
4.0
]
},
"down": {
"texture": "#line",
"uv": [
0.0,
0.0,
4.0,
4.0
]
}
}
},
{
"name": "Line2",
"from": [
12.0,
5.0,
5.0
],
"to": [
14.0,
11.0,
11.0
],
"faces": {
"north": {
"texture": "#line",
"uv": [
0.0,
0.0,
6.0,
2.0
]
},
"east": {
"texture": "#line",
"uv": [
0.0,
0.0,
6.0,
2.0
]
},
"south": {
"texture": "#line",
"uv": [
0.0,
0.0,
6.0,
2.0
]
},
"west": {
"texture": "#line",
"uv": [
0.0,
0.0,
6.0,
2.0
]
},
"up": {
"texture": "#line",
"uv": [
0.0,
0.0,
6.0,
6.0
]
},
"down": {
"texture": "#line",
"uv": [
0.0,
0.0,
6.0,
6.0
]
}
}
},
{
"name": "Line3",
"from": [
10.0,
3.0,
3.0
],
"to": [
12.0,
13.0,
13.0
],
"faces": {
"north": {
"texture": "#line",
"uv": [
0.0,
0.0,
10.0,
2.0
]
},
"east": {
"texture": "#line",
"uv": [
0.0,
0.0,
10.0,
2.0
]
},
"south": {
"texture": "#line",
"uv": [
0.0,
0.0,
10.0,
2.0
]
},
"west": {
"texture": "#line",
"uv": [
0.0,
0.0,
10.0,
2.0
]
},
"up": {
"texture": "#line",
"uv": [
0.0,
0.0,
10.0,
10.0
]
},
"down": {
"texture": "#line",
"uv": [
0.0,
0.0,
10.0,
10.0
]
}
}
}
]
}

View File

@@ -0,0 +1,214 @@
{
"__comment": "Model generated using MrCrayfish's Model Creator (http://mrcrayfish.com/modelcreator/)",
"textures": {
},
"elements": [
{
"name": "Line1",
"from": [
6.0,
6.0,
0.0
],
"to": [
10.0,
10.0,
2.0
],
"faces": {
"north": {
"texture": "#line",
"uv": [
0.0,
0.0,
4.0,
2.0
]
},
"east": {
"texture": "#line",
"uv": [
0.0,
0.0,
4.0,
2.0
]
},
"south": {
"texture": "#line",
"uv": [
0.0,
0.0,
4.0,
2.0
]
},
"west": {
"texture": "#line",
"uv": [
0.0,
0.0,
4.0,
2.0
]
},
"up": {
"texture": "#line",
"uv": [
0.0,
0.0,
4.0,
4.0
]
},
"down": {
"texture": "#line",
"uv": [
0.0,
0.0,
4.0,
4.0
]
}
}
},
{
"name": "Line2",
"from": [
5.0,
5.0,
2.0
],
"to": [
11.0,
11.0,
4.0
],
"faces": {
"north": {
"texture": "#line",
"uv": [
0.0,
0.0,
6.0,
2.0
]
},
"east": {
"texture": "#line",
"uv": [
0.0,
0.0,
6.0,
2.0
]
},
"south": {
"texture": "#line",
"uv": [
0.0,
0.0,
6.0,
2.0
]
},
"west": {
"texture": "#line",
"uv": [
0.0,
0.0,
6.0,
2.0
]
},
"up": {
"texture": "#line",
"uv": [
0.0,
0.0,
6.0,
6.0
]
},
"down": {
"texture": "#line",
"uv": [
0.0,
0.0,
6.0,
6.0
]
}
}
},
{
"name": "Line3",
"from": [
3.0,
3.0,
4.0
],
"to": [
13.0,
13.0,
6.0
],
"faces": {
"north": {
"texture": "#line",
"uv": [
0.0,
0.0,
10.0,
2.0
]
},
"east": {
"texture": "#line",
"uv": [
0.0,
0.0,
10.0,
2.0
]
},
"south": {
"texture": "#line",
"uv": [
0.0,
0.0,
10.0,
2.0
]
},
"west": {
"texture": "#line",
"uv": [
0.0,
0.0,
10.0,
2.0
]
},
"up": {
"texture": "#line",
"uv": [
0.0,
0.0,
10.0,
10.0
]
},
"down": {
"texture": "#line",
"uv": [
0.0,
0.0,
10.0,
10.0
]
}
}
}
]
}

View File

@@ -0,0 +1,214 @@
{
"__comment": "Model generated using MrCrayfish's Model Creator (http://mrcrayfish.com/modelcreator/)",
"textures": {
},
"elements": [
{
"name": "Line1",
"from": [
6.0,
6.0,
14.0
],
"to": [
10.0,
10.0,
16.0
],
"faces": {
"north": {
"texture": "#line",
"uv": [
0.0,
0.0,
4.0,
2.0
]
},
"east": {
"texture": "#line",
"uv": [
0.0,
0.0,
4.0,
2.0
]
},
"south": {
"texture": "#line",
"uv": [
0.0,
0.0,
4.0,
2.0
]
},
"west": {
"texture": "#line",
"uv": [
0.0,
0.0,
4.0,
2.0
]
},
"up": {
"texture": "#line",
"uv": [
0.0,
0.0,
4.0,
4.0
]
},
"down": {
"texture": "#line",
"uv": [
0.0,
0.0,
4.0,
4.0
]
}
}
},
{
"name": "Line2",
"from": [
5.0,
5.0,
12.0
],
"to": [
11.0,
11.0,
14.0
],
"faces": {
"north": {
"texture": "#line",
"uv": [
0.0,
0.0,
6.0,
2.0
]
},
"east": {
"texture": "#line",
"uv": [
0.0,
0.0,
6.0,
2.0
]
},
"south": {
"texture": "#line",
"uv": [
0.0,
0.0,
6.0,
2.0
]
},
"west": {
"texture": "#line",
"uv": [
0.0,
0.0,
6.0,
2.0
]
},
"up": {
"texture": "#line",
"uv": [
0.0,
0.0,
6.0,
6.0
]
},
"down": {
"texture": "#line",
"uv": [
0.0,
0.0,
6.0,
6.0
]
}
}
},
{
"name": "Line3",
"from": [
3.0,
3.0,
10.0
],
"to": [
13.0,
13.0,
12.0
],
"faces": {
"north": {
"texture": "#line",
"uv": [
0.0,
0.0,
10.0,
2.0
]
},
"east": {
"texture": "#line",
"uv": [
0.0,
0.0,
10.0,
2.0
]
},
"south": {
"texture": "#line",
"uv": [
0.0,
0.0,
10.0,
2.0
]
},
"west": {
"texture": "#line",
"uv": [
0.0,
0.0,
10.0,
2.0
]
},
"up": {
"texture": "#line",
"uv": [
0.0,
0.0,
10.0,
10.0
]
},
"down": {
"texture": "#line",
"uv": [
0.0,
0.0,
10.0,
10.0
]
}
}
}
]
}

View File

@@ -0,0 +1,214 @@
{
"__comment": "Model generated using MrCrayfish's Model Creator (http://mrcrayfish.com/modelcreator/)",
"textures": {
},
"elements": [
{
"name": "Line1",
"from": [
6.0,
14.0,
6.0
],
"to": [
10.0,
16.0,
10.0
],
"faces": {
"north": {
"texture": "#line",
"uv": [
0.0,
0.0,
4.0,
2.0
]
},
"east": {
"texture": "#line",
"uv": [
0.0,
0.0,
4.0,
2.0
]
},
"south": {
"texture": "#line",
"uv": [
0.0,
0.0,
4.0,
2.0
]
},
"west": {
"texture": "#line",
"uv": [
0.0,
0.0,
4.0,
2.0
]
},
"up": {
"texture": "#line",
"uv": [
0.0,
0.0,
4.0,
4.0
]
},
"down": {
"texture": "#line",
"uv": [
0.0,
0.0,
4.0,
4.0
]
}
}
},
{
"name": "Line2",
"from": [
5.0,
12.0,
5.0
],
"to": [
11.0,
14.0,
11.0
],
"faces": {
"north": {
"texture": "#line",
"uv": [
0.0,
0.0,
6.0,
2.0
]
},
"east": {
"texture": "#line",
"uv": [
0.0,
0.0,
6.0,
2.0
]
},
"south": {
"texture": "#line",
"uv": [
0.0,
0.0,
6.0,
2.0
]
},
"west": {
"texture": "#line",
"uv": [
0.0,
0.0,
6.0,
2.0
]
},
"up": {
"texture": "#line",
"uv": [
0.0,
0.0,
6.0,
6.0
]
},
"down": {
"texture": "#line",
"uv": [
0.0,
0.0,
6.0,
6.0
]
}
}
},
{
"name": "Line3",
"from": [
3.0,
10.0,
3.0
],
"to": [
13.0,
12.0,
13.0
],
"faces": {
"north": {
"texture": "#line",
"uv": [
0.0,
0.0,
10.0,
2.0
]
},
"east": {
"texture": "#line",
"uv": [
0.0,
0.0,
10.0,
2.0
]
},
"south": {
"texture": "#line",
"uv": [
0.0,
0.0,
10.0,
2.0
]
},
"west": {
"texture": "#line",
"uv": [
0.0,
0.0,
10.0,
2.0
]
},
"up": {
"texture": "#line",
"uv": [
0.0,
0.0,
10.0,
10.0
]
},
"down": {
"texture": "#line",
"uv": [
0.0,
0.0,
10.0,
10.0
]
}
}
}
]
}

View File

@@ -0,0 +1,214 @@
{
"__comment": "Model generated using MrCrayfish's Model Creator (http://mrcrayfish.com/modelcreator/)",
"textures": {
},
"elements": [
{
"name": "Line1",
"from": [
0.0,
6.0,
6.0
],
"to": [
2.0,
10.0,
10.0
],
"faces": {
"north": {
"texture": "#line",
"uv": [
0.0,
0.0,
4.0,
2.0
]
},
"east": {
"texture": "#line",
"uv": [
0.0,
0.0,
4.0,
2.0
]
},
"south": {
"texture": "#line",
"uv": [
0.0,
0.0,
4.0,
2.0
]
},
"west": {
"texture": "#line",
"uv": [
0.0,
0.0,
4.0,
2.0
]
},
"up": {
"texture": "#line",
"uv": [
0.0,
0.0,
4.0,
4.0
]
},
"down": {
"texture": "#line",
"uv": [
0.0,
0.0,
4.0,
4.0
]
}
}
},
{
"name": "Line2",
"from": [
2.0,
5.0,
5.0
],
"to": [
4.0,
11.0,
11.0
],
"faces": {
"north": {
"texture": "#line",
"uv": [
0.0,
0.0,
6.0,
2.0
]
},
"east": {
"texture": "#line",
"uv": [
0.0,
0.0,
6.0,
2.0
]
},
"south": {
"texture": "#line",
"uv": [
0.0,
0.0,
6.0,
2.0
]
},
"west": {
"texture": "#line",
"uv": [
0.0,
0.0,
6.0,
2.0
]
},
"up": {
"texture": "#line",
"uv": [
0.0,
0.0,
6.0,
6.0
]
},
"down": {
"texture": "#line",
"uv": [
0.0,
0.0,
6.0,
6.0
]
}
}
},
{
"name": "Line3",
"from": [
4.0,
3.0,
3.0
],
"to": [
6.0,
13.0,
13.0
],
"faces": {
"north": {
"texture": "#line",
"uv": [
0.0,
0.0,
10.0,
2.0
]
},
"east": {
"texture": "#line",
"uv": [
0.0,
0.0,
10.0,
2.0
]
},
"south": {
"texture": "#line",
"uv": [
0.0,
0.0,
10.0,
2.0
]
},
"west": {
"texture": "#line",
"uv": [
0.0,
0.0,
10.0,
2.0
]
},
"up": {
"texture": "#line",
"uv": [
0.0,
0.0,
10.0,
10.0
]
},
"down": {
"texture": "#line",
"uv": [
0.0,
0.0,
10.0,
10.0
]
}
}
}
]
}

View File

@@ -0,0 +1,350 @@
{
"__comment": "Model generated using MrCrayfish's Model Creator (http://mrcrayfish.com/modelcreator/)",
"elements": [
{
"name": "Line1",
"from": [
7.0,
7.0,
2.0
],
"to": [
9.0,
9.0,
6.0
],
"faces": {
"north": {
"texture": "#line",
"uv": [
0.0,
0.0,
4.0,
4.0
]
},
"east": {
"texture": "#line",
"uv": [
0.0,
0.0,
2.0,
4.0
]
},
"south": {
"texture": "#line",
"uv": [
0.0,
0.0,
4.0,
4.0
]
},
"west": {
"texture": "#line",
"uv": [
0.0,
0.0,
2.0,
4.0
]
},
"up": {
"texture": "#line",
"uv": [
0.0,
0.0,
4.0,
2.0
]
},
"down": {
"texture": "#line",
"uv": [
0.0,
0.0,
4.0,
2.0
]
}
}
},
{
"name": "Line2",
"from": [
3.0,
3.0,
0.0
],
"to": [
13.0,
13.0,
2.0
],
"faces": {
"north": {
"texture": "#line",
"uv": [
0.0,
0.0,
10.0,
10.0
]
},
"east": {
"texture": "#line",
"uv": [
0.0,
0.0,
2.0,
10.0
]
},
"south": {
"texture": "#line",
"uv": [
0.0,
0.0,
10.0,
10.0
]
},
"west": {
"texture": "#line",
"uv": [
0.0,
0.0,
2.0,
10.0
]
},
"up": {
"texture": "#line",
"uv": [
0.0,
0.0,
10.0,
2.0
]
},
"down": {
"texture": "#line",
"uv": [
0.0,
0.0,
10.0,
2.0
]
}
}
},
{
"name": "Core",
"from": [
6.0,
6.0,
6.0
],
"to": [
10.0,
10.0,
10.0
],
"faces": {
"north": {
"texture": "#all",
"uv": [
4.0,
4.0,
8.0,
8.0
]
},
"east": {
"texture": "#all",
"uv": [
0.0,
4.0,
4.0,
8.0
]
},
"south": {
"texture": "#all",
"uv": [
12.0,
4.0,
16.0,
8.0
]
},
"west": {
"texture": "#all",
"uv": [
8.0,
4.0,
12.0,
8.0
]
},
"up": {
"texture": "#all",
"uv": [
8.0,
4.0,
4.0,
0.0
]
},
"down": {
"texture": "#all",
"uv": [
12.0,
0.0,
8.0,
4.0
]
}
}
},
{
"name": "East",
"from": [
10.0,
6.0,
6.0
],
"to": [
16.0,
10.0,
10.0
],
"faces": {
"north": {
"texture": "#all",
"uv": [
4.0,
4.0,
8.0,
8.0
]
},
"east": {
"texture": "#all",
"uv": [
0.0,
4.0,
4.0,
8.0
]
},
"south": {
"texture": "#all",
"uv": [
12.0,
4.0,
16.0,
8.0
]
},
"west": {
"texture": "#all",
"uv": [
8.0,
4.0,
12.0,
8.0
]
},
"up": {
"texture": "#all",
"uv": [
8.0,
4.0,
4.0,
0.0
]
},
"down": {
"texture": "#all",
"uv": [
12.0,
0.0,
8.0,
4.0
]
}
}
},
{
"name": "West",
"from": [
0.0,
6.0,
6.0
],
"to": [
6.0,
10.0,
10.0
],
"faces": {
"north": {
"texture": "#all",
"uv": [
4.0,
4.0,
8.0,
8.0
]
},
"east": {
"texture": "#all",
"uv": [
0.0,
4.0,
4.0,
8.0
]
},
"south": {
"texture": "#all",
"uv": [
12.0,
4.0,
16.0,
8.0
]
},
"west": {
"texture": "#all",
"uv": [
8.0,
4.0,
12.0,
8.0
]
},
"up": {
"texture": "#all",
"uv": [
8.0,
4.0,
4.0,
0.0
]
},
"down": {
"texture": "#all",
"uv": [
12.0,
0.0,
8.0,
4.0
]
}
}
}
]
}

View File

@@ -0,0 +1,145 @@
{
"__comment": "Model generated using MrCrayfish's Model Creator (http://mrcrayfish.com/modelcreator/)",
"textures": {
},
"elements": [
{
"name": "Line1",
"from": [
7.0,
2.0,
7.0
],
"to": [
9.0,
6.0,
9.0
],
"faces": {
"north": {
"texture": "#line",
"uv": [
0.0,
0.0,
4.0,
4.0
]
},
"east": {
"texture": "#line",
"uv": [
0.0,
0.0,
2.0,
4.0
]
},
"south": {
"texture": "#line",
"uv": [
0.0,
0.0,
4.0,
4.0
]
},
"west": {
"texture": "#line",
"uv": [
0.0,
0.0,
2.0,
4.0
]
},
"up": {
"texture": "#line",
"uv": [
0.0,
0.0,
4.0,
2.0
]
},
"down": {
"texture": "#line",
"uv": [
0.0,
0.0,
4.0,
2.0
]
}
}
},
{
"name": "Line2",
"from": [
3.0,
0.0,
3.0
],
"to": [
13.0,
2.0,
13.0
],
"faces": {
"north": {
"texture": "#line",
"uv": [
0.0,
0.0,
10.0,
10.0
]
},
"east": {
"texture": "#line",
"uv": [
0.0,
0.0,
2.0,
10.0
]
},
"south": {
"texture": "#line",
"uv": [
0.0,
0.0,
10.0,
10.0
]
},
"west": {
"texture": "#line",
"uv": [
0.0,
0.0,
2.0,
10.0
]
},
"up": {
"texture": "#line",
"uv": [
0.0,
0.0,
10.0,
2.0
]
},
"down": {
"texture": "#line",
"uv": [
0.0,
0.0,
10.0,
2.0
]
}
}
}
]
}

View File

@@ -0,0 +1,145 @@
{
"__comment": "Model generated using MrCrayfish's Model Creator (http://mrcrayfish.com/modelcreator/)",
"textures": {
},
"elements": [
{
"name": "Line1",
"from": [
10.0,
7.0,
7.0
],
"to": [
14.0,
9.0,
9.0
],
"faces": {
"north": {
"texture": "#line",
"uv": [
0.0,
0.0,
4.0,
4.0
]
},
"east": {
"texture": "#line",
"uv": [
0.0,
0.0,
2.0,
4.0
]
},
"south": {
"texture": "#line",
"uv": [
0.0,
0.0,
4.0,
4.0
]
},
"west": {
"texture": "#line",
"uv": [
0.0,
0.0,
2.0,
4.0
]
},
"up": {
"texture": "#line",
"uv": [
0.0,
0.0,
4.0,
2.0
]
},
"down": {
"texture": "#line",
"uv": [
0.0,
0.0,
4.0,
2.0
]
}
}
},
{
"name": "Line2",
"from": [
14.0,
3.0,
3.0
],
"to": [
16.0,
13.0,
13.0
],
"faces": {
"north": {
"texture": "#line",
"uv": [
0.0,
0.0,
10.0,
10.0
]
},
"east": {
"texture": "#line",
"uv": [
0.0,
0.0,
2.0,
10.0
]
},
"south": {
"texture": "#line",
"uv": [
0.0,
0.0,
10.0,
10.0
]
},
"west": {
"texture": "#line",
"uv": [
0.0,
0.0,
2.0,
10.0
]
},
"up": {
"texture": "#line",
"uv": [
0.0,
0.0,
10.0,
2.0
]
},
"down": {
"texture": "#line",
"uv": [
0.0,
0.0,
10.0,
2.0
]
}
}
}
]
}

View File

@@ -0,0 +1,145 @@
{
"__comment": "Model generated using MrCrayfish's Model Creator (http://mrcrayfish.com/modelcreator/)",
"textures": {
},
"elements": [
{
"name": "Line1",
"from": [
7.0,
7.0,
2.0
],
"to": [
9.0,
9.0,
6.0
],
"faces": {
"north": {
"texture": "#line",
"uv": [
0.0,
0.0,
4.0,
4.0
]
},
"east": {
"texture": "#line",
"uv": [
0.0,
0.0,
2.0,
4.0
]
},
"south": {
"texture": "#line",
"uv": [
0.0,
0.0,
4.0,
4.0
]
},
"west": {
"texture": "#line",
"uv": [
0.0,
0.0,
2.0,
4.0
]
},
"up": {
"texture": "#line",
"uv": [
0.0,
0.0,
4.0,
2.0
]
},
"down": {
"texture": "#line",
"uv": [
0.0,
0.0,
4.0,
2.0
]
}
}
},
{
"name": "Line2",
"from": [
3.0,
3.0,
0.0
],
"to": [
13.0,
13.0,
2.0
],
"faces": {
"north": {
"texture": "#line",
"uv": [
0.0,
0.0,
10.0,
10.0
]
},
"east": {
"texture": "#line",
"uv": [
0.0,
0.0,
2.0,
10.0
]
},
"south": {
"texture": "#line",
"uv": [
0.0,
0.0,
10.0,
10.0
]
},
"west": {
"texture": "#line",
"uv": [
0.0,
0.0,
2.0,
10.0
]
},
"up": {
"texture": "#line",
"uv": [
0.0,
0.0,
10.0,
2.0
]
},
"down": {
"texture": "#line",
"uv": [
0.0,
0.0,
10.0,
2.0
]
}
}
}
]
}

View File

@@ -0,0 +1,145 @@
{
"__comment": "Model generated using MrCrayfish's Model Creator (http://mrcrayfish.com/modelcreator/)",
"textures": {
},
"elements": [
{
"name": "Line1",
"from": [
7.0,
7.0,
10.0
],
"to": [
9.0,
9.0,
14.0
],
"faces": {
"north": {
"texture": "#line",
"uv": [
0.0,
0.0,
4.0,
4.0
]
},
"east": {
"texture": "#line",
"uv": [
0.0,
0.0,
2.0,
4.0
]
},
"south": {
"texture": "#line",
"uv": [
0.0,
0.0,
4.0,
4.0
]
},
"west": {
"texture": "#line",
"uv": [
0.0,
0.0,
2.0,
4.0
]
},
"up": {
"texture": "#line",
"uv": [
0.0,
0.0,
4.0,
2.0
]
},
"down": {
"texture": "#line",
"uv": [
0.0,
0.0,
4.0,
2.0
]
}
}
},
{
"name": "Line2",
"from": [
3.0,
3.0,
14.0
],
"to": [
13.0,
13.0,
16.0
],
"faces": {
"north": {
"texture": "#line",
"uv": [
0.0,
0.0,
10.0,
10.0
]
},
"east": {
"texture": "#line",
"uv": [
0.0,
0.0,
2.0,
10.0
]
},
"south": {
"texture": "#line",
"uv": [
0.0,
0.0,
10.0,
10.0
]
},
"west": {
"texture": "#line",
"uv": [
0.0,
0.0,
2.0,
10.0
]
},
"up": {
"texture": "#line",
"uv": [
0.0,
0.0,
10.0,
2.0
]
},
"down": {
"texture": "#line",
"uv": [
0.0,
0.0,
10.0,
2.0
]
}
}
}
]
}

View File

@@ -0,0 +1,145 @@
{
"__comment": "Model generated using MrCrayfish's Model Creator (http://mrcrayfish.com/modelcreator/)",
"textures": {
},
"elements": [
{
"name": "Line1",
"from": [
7.0,
10.0,
7.0
],
"to": [
9.0,
14.0,
9.0
],
"faces": {
"north": {
"texture": "#line",
"uv": [
0.0,
0.0,
4.0,
4.0
]
},
"east": {
"texture": "#line",
"uv": [
0.0,
0.0,
2.0,
4.0
]
},
"south": {
"texture": "#line",
"uv": [
0.0,
0.0,
4.0,
4.0
]
},
"west": {
"texture": "#line",
"uv": [
0.0,
0.0,
2.0,
4.0
]
},
"up": {
"texture": "#line",
"uv": [
0.0,
0.0,
4.0,
2.0
]
},
"down": {
"texture": "#line",
"uv": [
0.0,
0.0,
4.0,
2.0
]
}
}
},
{
"name": "Line2",
"from": [
3.0,
14.0,
3.0
],
"to": [
13.0,
16.0,
13.0
],
"faces": {
"north": {
"texture": "#line",
"uv": [
0.0,
0.0,
10.0,
10.0
]
},
"east": {
"texture": "#line",
"uv": [
0.0,
0.0,
2.0,
10.0
]
},
"south": {
"texture": "#line",
"uv": [
0.0,
0.0,
10.0,
10.0
]
},
"west": {
"texture": "#line",
"uv": [
0.0,
0.0,
2.0,
10.0
]
},
"up": {
"texture": "#line",
"uv": [
0.0,
0.0,
10.0,
2.0
]
},
"down": {
"texture": "#line",
"uv": [
0.0,
0.0,
10.0,
2.0
]
}
}
}
]
}

View File

@@ -0,0 +1,145 @@
{
"__comment": "Model generated using MrCrayfish's Model Creator (http://mrcrayfish.com/modelcreator/)",
"textures": {
},
"elements": [
{
"name": "Line1",
"from": [
2.0,
7.0,
7.0
],
"to": [
6.0,
9.0,
9.0
],
"faces": {
"north": {
"texture": "#line",
"uv": [
0.0,
0.0,
4.0,
4.0
]
},
"east": {
"texture": "#line",
"uv": [
0.0,
0.0,
2.0,
4.0
]
},
"south": {
"texture": "#line",
"uv": [
0.0,
0.0,
4.0,
4.0
]
},
"west": {
"texture": "#line",
"uv": [
0.0,
0.0,
2.0,
4.0
]
},
"up": {
"texture": "#line",
"uv": [
0.0,
0.0,
4.0,
2.0
]
},
"down": {
"texture": "#line",
"uv": [
0.0,
0.0,
4.0,
2.0
]
}
}
},
{
"name": "Line2",
"from": [
0.0,
3.0,
3.0
],
"to": [
2.0,
13.0,
13.0
],
"faces": {
"north": {
"texture": "#line",
"uv": [
0.0,
0.0,
10.0,
10.0
]
},
"east": {
"texture": "#line",
"uv": [
0.0,
0.0,
2.0,
10.0
]
},
"south": {
"texture": "#line",
"uv": [
0.0,
0.0,
10.0,
10.0
]
},
"west": {
"texture": "#line",
"uv": [
0.0,
0.0,
2.0,
10.0
]
},
"up": {
"texture": "#line",
"uv": [
0.0,
0.0,
10.0,
2.0
]
},
"down": {
"texture": "#line",
"uv": [
0.0,
0.0,
10.0,
2.0
]
}
}
}
]
}

View File

@@ -0,0 +1,419 @@
{
"__comment": "Model generated using MrCrayfish's Model Creator (http://mrcrayfish.com/modelcreator/)",
"elements": [
{
"name": "Line1",
"from": [
6.0,
6.0,
4.0
],
"to": [
10.0,
10.0,
6.0
],
"faces": {
"north": {
"texture": "#line",
"uv": [
0.0,
0.0,
4.0,
4.0
]
},
"east": {
"texture": "#line",
"uv": [
0.0,
0.0,
2.0,
4.0
]
},
"south": {
"texture": "#line",
"uv": [
0.0,
0.0,
4.0,
4.0
]
},
"west": {
"texture": "#line",
"uv": [
0.0,
0.0,
2.0,
4.0
]
},
"up": {
"texture": "#line",
"uv": [
0.0,
0.0,
4.0,
2.0
]
},
"down": {
"texture": "#line",
"uv": [
0.0,
0.0,
4.0,
2.0
]
}
}
},
{
"name": "Line2",
"from": [
5.0,
5.0,
2.0
],
"to": [
11.0,
11.0,
4.0
],
"faces": {
"north": {
"texture": "#line",
"uv": [
0.0,
0.0,
6.0,
6.0
]
},
"east": {
"texture": "#line",
"uv": [
0.0,
0.0,
2.0,
6.0
]
},
"south": {
"texture": "#line",
"uv": [
0.0,
0.0,
6.0,
6.0
]
},
"west": {
"texture": "#line",
"uv": [
0.0,
0.0,
2.0,
6.0
]
},
"up": {
"texture": "#line",
"uv": [
0.0,
0.0,
6.0,
2.0
]
},
"down": {
"texture": "#line",
"uv": [
0.0,
0.0,
6.0,
2.0
]
}
}
},
{
"name": "Line3",
"from": [
3.0,
3.0,
0.0
],
"to": [
13.0,
13.0,
2.0
],
"faces": {
"north": {
"texture": "#line",
"uv": [
0.0,
0.0,
10.0,
10.0
]
},
"east": {
"texture": "#line",
"uv": [
0.0,
0.0,
2.0,
10.0
]
},
"south": {
"texture": "#line",
"uv": [
0.0,
0.0,
10.0,
10.0
]
},
"west": {
"texture": "#line",
"uv": [
0.0,
0.0,
2.0,
10.0
]
},
"up": {
"texture": "#line",
"uv": [
0.0,
0.0,
10.0,
2.0
]
},
"down": {
"texture": "#line",
"uv": [
0.0,
0.0,
10.0,
2.0
]
}
}
},
{
"name": "Core",
"from": [
6.0,
6.0,
6.0
],
"to": [
10.0,
10.0,
10.0
],
"faces": {
"north": {
"texture": "#all",
"uv": [
4.0,
4.0,
8.0,
8.0
]
},
"east": {
"texture": "#all",
"uv": [
0.0,
4.0,
4.0,
8.0
]
},
"south": {
"texture": "#all",
"uv": [
12.0,
4.0,
16.0,
8.0
]
},
"west": {
"texture": "#all",
"uv": [
8.0,
4.0,
12.0,
8.0
]
},
"up": {
"texture": "#all",
"uv": [
8.0,
4.0,
4.0,
0.0
]
},
"down": {
"texture": "#all",
"uv": [
12.0,
0.0,
8.0,
4.0
]
}
}
},
{
"name": "East",
"from": [
10.0,
6.0,
6.0
],
"to": [
16.0,
10.0,
10.0
],
"faces": {
"north": {
"texture": "#all",
"uv": [
4.0,
4.0,
8.0,
8.0
]
},
"east": {
"texture": "#all",
"uv": [
0.0,
4.0,
4.0,
8.0
]
},
"south": {
"texture": "#all",
"uv": [
12.0,
4.0,
16.0,
8.0
]
},
"west": {
"texture": "#all",
"uv": [
8.0,
4.0,
12.0,
8.0
]
},
"up": {
"texture": "#all",
"uv": [
8.0,
4.0,
4.0,
0.0
]
},
"down": {
"texture": "#all",
"uv": [
12.0,
0.0,
8.0,
4.0
]
}
}
},
{
"name": "West",
"from": [
0.0,
6.0,
6.0
],
"to": [
6.0,
10.0,
10.0
],
"faces": {
"north": {
"texture": "#all",
"uv": [
4.0,
4.0,
8.0,
8.0
]
},
"east": {
"texture": "#all",
"uv": [
0.0,
4.0,
4.0,
8.0
]
},
"south": {
"texture": "#all",
"uv": [
12.0,
4.0,
16.0,
8.0
]
},
"west": {
"texture": "#all",
"uv": [
8.0,
4.0,
12.0,
8.0
]
},
"up": {
"texture": "#all",
"uv": [
8.0,
4.0,
4.0,
0.0
]
},
"down": {
"texture": "#all",
"uv": [
12.0,
0.0,
8.0,
4.0
]
}
}
}
]
}

View File

@@ -0,0 +1,214 @@
{
"__comment": "Model generated using MrCrayfish's Model Creator (http://mrcrayfish.com/modelcreator/)",
"textures": {
},
"elements": [
{
"name": "Line1",
"from": [
6.0,
4.0,
6.0
],
"to": [
10.0,
6.0,
10.0
],
"faces": {
"north": {
"texture": "#line",
"uv": [
0.0,
0.0,
4.0,
2.0
]
},
"east": {
"texture": "#line",
"uv": [
0.0,
0.0,
4.0,
2.0
]
},
"south": {
"texture": "#line",
"uv": [
0.0,
0.0,
4.0,
2.0
]
},
"west": {
"texture": "#line",
"uv": [
0.0,
0.0,
4.0,
2.0
]
},
"up": {
"texture": "#line",
"uv": [
0.0,
0.0,
4.0,
4.0
]
},
"down": {
"texture": "#line",
"uv": [
0.0,
0.0,
4.0,
4.0
]
}
}
},
{
"name": "Line2",
"from": [
5.0,
2.0,
5.0
],
"to": [
11.0,
4.0,
11.0
],
"faces": {
"north": {
"texture": "#line",
"uv": [
0.0,
0.0,
6.0,
2.0
]
},
"east": {
"texture": "#line",
"uv": [
0.0,
0.0,
6.0,
2.0
]
},
"south": {
"texture": "#line",
"uv": [
0.0,
0.0,
6.0,
2.0
]
},
"west": {
"texture": "#line",
"uv": [
0.0,
0.0,
6.0,
2.0
]
},
"up": {
"texture": "#line",
"uv": [
0.0,
0.0,
6.0,
6.0
]
},
"down": {
"texture": "#line",
"uv": [
0.0,
0.0,
6.0,
6.0
]
}
}
},
{
"name": "Line3",
"from": [
3.0,
0.0,
3.0
],
"to": [
13.0,
2.0,
13.0
],
"faces": {
"north": {
"texture": "#line",
"uv": [
0.0,
0.0,
10.0,
2.0
]
},
"east": {
"texture": "#line",
"uv": [
0.0,
0.0,
10.0,
2.0
]
},
"south": {
"texture": "#line",
"uv": [
0.0,
0.0,
10.0,
2.0
]
},
"west": {
"texture": "#line",
"uv": [
0.0,
0.0,
10.0,
2.0
]
},
"up": {
"texture": "#line",
"uv": [
0.0,
0.0,
10.0,
10.0
]
},
"down": {
"texture": "#line",
"uv": [
0.0,
0.0,
10.0,
10.0
]
}
}
}
]
}

View File

@@ -0,0 +1,214 @@
{
"__comment": "Model generated using MrCrayfish's Model Creator (http://mrcrayfish.com/modelcreator/)",
"textures": {
},
"elements": [
{
"name": "Line1",
"from": [
10.0,
6.0,
6.0
],
"to": [
12.0,
10.0,
10.0
],
"faces": {
"north": {
"texture": "#line",
"uv": [
0.0,
0.0,
2.0,
4.0
]
},
"east": {
"texture": "#line",
"uv": [
0.0,
0.0,
4.0,
4.0
]
},
"south": {
"texture": "#line",
"uv": [
0.0,
0.0,
2.0,
4.0
]
},
"west": {
"texture": "#line",
"uv": [
0.0,
0.0,
4.0,
4.0
]
},
"up": {
"texture": "#line",
"uv": [
0.0,
0.0,
2.0,
4.0
]
},
"down": {
"texture": "#line",
"uv": [
0.0,
0.0,
2.0,
4.0
]
}
}
},
{
"name": "Line2",
"from": [
12.0,
5.0,
5.0
],
"to": [
14.0,
11.0,
11.0
],
"faces": {
"north": {
"texture": "#line",
"uv": [
0.0,
0.0,
2.0,
6.0
]
},
"east": {
"texture": "#line",
"uv": [
0.0,
0.0,
6.0,
6.0
]
},
"south": {
"texture": "#line",
"uv": [
0.0,
0.0,
2.0,
6.0
]
},
"west": {
"texture": "#line",
"uv": [
0.0,
0.0,
6.0,
6.0
]
},
"up": {
"texture": "#line",
"uv": [
0.0,
0.0,
2.0,
6.0
]
},
"down": {
"texture": "#line",
"uv": [
0.0,
0.0,
2.0,
6.0
]
}
}
},
{
"name": "Line3",
"from": [
14.0,
3.0,
3.0
],
"to": [
16.0,
13.0,
13.0
],
"faces": {
"north": {
"texture": "#line",
"uv": [
0.0,
0.0,
2.0,
10.0
]
},
"east": {
"texture": "#line",
"uv": [
0.0,
0.0,
10.0,
10.0
]
},
"south": {
"texture": "#line",
"uv": [
0.0,
0.0,
2.0,
10.0
]
},
"west": {
"texture": "#line",
"uv": [
0.0,
0.0,
10.0,
10.0
]
},
"up": {
"texture": "#line",
"uv": [
0.0,
0.0,
2.0,
10.0
]
},
"down": {
"texture": "#line",
"uv": [
0.0,
0.0,
2.0,
10.0
]
}
}
}
]
}

View File

@@ -0,0 +1,214 @@
{
"__comment": "Model generated using MrCrayfish's Model Creator (http://mrcrayfish.com/modelcreator/)",
"textures": {
},
"elements": [
{
"name": "Line1",
"from": [
6.0,
6.0,
4.0
],
"to": [
10.0,
10.0,
6.0
],
"faces": {
"north": {
"texture": "#line",
"uv": [
0.0,
0.0,
4.0,
4.0
]
},
"east": {
"texture": "#line",
"uv": [
0.0,
0.0,
2.0,
4.0
]
},
"south": {
"texture": "#line",
"uv": [
0.0,
0.0,
4.0,
4.0
]
},
"west": {
"texture": "#line",
"uv": [
0.0,
0.0,
2.0,
4.0
]
},
"up": {
"texture": "#line",
"uv": [
0.0,
0.0,
4.0,
2.0
]
},
"down": {
"texture": "#line",
"uv": [
0.0,
0.0,
4.0,
2.0
]
}
}
},
{
"name": "Line2",
"from": [
5.0,
5.0,
2.0
],
"to": [
11.0,
11.0,
4.0
],
"faces": {
"north": {
"texture": "#line",
"uv": [
0.0,
0.0,
6.0,
6.0
]
},
"east": {
"texture": "#line",
"uv": [
0.0,
0.0,
2.0,
6.0
]
},
"south": {
"texture": "#line",
"uv": [
0.0,
0.0,
6.0,
6.0
]
},
"west": {
"texture": "#line",
"uv": [
0.0,
0.0,
2.0,
6.0
]
},
"up": {
"texture": "#line",
"uv": [
0.0,
0.0,
6.0,
2.0
]
},
"down": {
"texture": "#line",
"uv": [
0.0,
0.0,
6.0,
2.0
]
}
}
},
{
"name": "Line3",
"from": [
3.0,
3.0,
0.0
],
"to": [
13.0,
13.0,
2.0
],
"faces": {
"north": {
"texture": "#line",
"uv": [
0.0,
0.0,
10.0,
10.0
]
},
"east": {
"texture": "#line",
"uv": [
0.0,
0.0,
2.0,
10.0
]
},
"south": {
"texture": "#line",
"uv": [
0.0,
0.0,
10.0,
10.0
]
},
"west": {
"texture": "#line",
"uv": [
0.0,
0.0,
2.0,
10.0
]
},
"up": {
"texture": "#line",
"uv": [
0.0,
0.0,
10.0,
2.0
]
},
"down": {
"texture": "#line",
"uv": [
0.0,
0.0,
10.0,
2.0
]
}
}
}
]
}

View File

@@ -0,0 +1,214 @@
{
"__comment": "Model generated using MrCrayfish's Model Creator (http://mrcrayfish.com/modelcreator/)",
"textures": {
},
"elements": [
{
"name": "Line1",
"from": [
6.0,
6.0,
10.0
],
"to": [
10.0,
10.0,
12.0
],
"faces": {
"north": {
"texture": "#line",
"uv": [
0.0,
0.0,
4.0,
4.0
]
},
"east": {
"texture": "#line",
"uv": [
0.0,
0.0,
2.0,
4.0
]
},
"south": {
"texture": "#line",
"uv": [
0.0,
0.0,
4.0,
4.0
]
},
"west": {
"texture": "#line",
"uv": [
0.0,
0.0,
2.0,
4.0
]
},
"up": {
"texture": "#line",
"uv": [
0.0,
0.0,
4.0,
2.0
]
},
"down": {
"texture": "#line",
"uv": [
0.0,
0.0,
4.0,
2.0
]
}
}
},
{
"name": "Line2",
"from": [
5.0,
5.0,
12.0
],
"to": [
11.0,
11.0,
14.0
],
"faces": {
"north": {
"texture": "#line",
"uv": [
0.0,
0.0,
6.0,
6.0
]
},
"east": {
"texture": "#line",
"uv": [
0.0,
0.0,
2.0,
6.0
]
},
"south": {
"texture": "#line",
"uv": [
0.0,
0.0,
6.0,
6.0
]
},
"west": {
"texture": "#line",
"uv": [
0.0,
0.0,
2.0,
6.0
]
},
"up": {
"texture": "#line",
"uv": [
0.0,
0.0,
6.0,
2.0
]
},
"down": {
"texture": "#line",
"uv": [
0.0,
0.0,
6.0,
2.0
]
}
}
},
{
"name": "Line3",
"from": [
3.0,
3.0,
14.0
],
"to": [
13.0,
13.0,
16.0
],
"faces": {
"north": {
"texture": "#line",
"uv": [
0.0,
0.0,
10.0,
10.0
]
},
"east": {
"texture": "#line",
"uv": [
0.0,
0.0,
2.0,
10.0
]
},
"south": {
"texture": "#line",
"uv": [
0.0,
0.0,
10.0,
10.0
]
},
"west": {
"texture": "#line",
"uv": [
0.0,
0.0,
2.0,
10.0
]
},
"up": {
"texture": "#line",
"uv": [
0.0,
0.0,
10.0,
2.0
]
},
"down": {
"texture": "#line",
"uv": [
0.0,
0.0,
10.0,
2.0
]
}
}
}
]
}

View File

@@ -0,0 +1,214 @@
{
"__comment": "Model generated using MrCrayfish's Model Creator (http://mrcrayfish.com/modelcreator/)",
"textures": {
},
"elements": [
{
"name": "Line1",
"from": [
6.0,
10.0,
6.0
],
"to": [
10.0,
12.0,
10.0
],
"faces": {
"north": {
"texture": "#line",
"uv": [
0.0,
0.0,
4.0,
2.0
]
},
"east": {
"texture": "#line",
"uv": [
0.0,
0.0,
4.0,
2.0
]
},
"south": {
"texture": "#line",
"uv": [
0.0,
0.0,
4.0,
2.0
]
},
"west": {
"texture": "#line",
"uv": [
0.0,
0.0,
4.0,
2.0
]
},
"up": {
"texture": "#line",
"uv": [
0.0,
0.0,
4.0,
4.0
]
},
"down": {
"texture": "#line",
"uv": [
0.0,
0.0,
4.0,
4.0
]
}
}
},
{
"name": "Line2",
"from": [
5.0,
12.0,
5.0
],
"to": [
11.0,
14.0,
11.0
],
"faces": {
"north": {
"texture": "#line",
"uv": [
0.0,
0.0,
6.0,
2.0
]
},
"east": {
"texture": "#line",
"uv": [
0.0,
0.0,
6.0,
2.0
]
},
"south": {
"texture": "#line",
"uv": [
0.0,
0.0,
6.0,
2.0
]
},
"west": {
"texture": "#line",
"uv": [
0.0,
0.0,
6.0,
2.0
]
},
"up": {
"texture": "#line",
"uv": [
0.0,
0.0,
6.0,
6.0
]
},
"down": {
"texture": "#line",
"uv": [
0.0,
0.0,
6.0,
6.0
]
}
}
},
{
"name": "Line3",
"from": [
3.0,
14.0,
3.0
],
"to": [
13.0,
16.0,
13.0
],
"faces": {
"north": {
"texture": "#line",
"uv": [
0.0,
0.0,
10.0,
2.0
]
},
"east": {
"texture": "#line",
"uv": [
0.0,
0.0,
10.0,
2.0
]
},
"south": {
"texture": "#line",
"uv": [
0.0,
0.0,
10.0,
2.0
]
},
"west": {
"texture": "#line",
"uv": [
0.0,
0.0,
10.0,
2.0
]
},
"up": {
"texture": "#line",
"uv": [
0.0,
0.0,
10.0,
10.0
]
},
"down": {
"texture": "#line",
"uv": [
0.0,
0.0,
10.0,
10.0
]
}
}
}
]
}

View File

@@ -0,0 +1,214 @@
{
"__comment": "Model generated using MrCrayfish's Model Creator (http://mrcrayfish.com/modelcreator/)",
"textures": {
},
"elements": [
{
"name": "Line1",
"from": [
4.0,
6.0,
6.0
],
"to": [
6.0,
10.0,
10.0
],
"faces": {
"north": {
"texture": "#line",
"uv": [
0.0,
0.0,
2.0,
4.0
]
},
"east": {
"texture": "#line",
"uv": [
0.0,
0.0,
4.0,
4.0
]
},
"south": {
"texture": "#line",
"uv": [
0.0,
0.0,
2.0,
4.0
]
},
"west": {
"texture": "#line",
"uv": [
0.0,
0.0,
4.0,
4.0
]
},
"up": {
"texture": "#line",
"uv": [
0.0,
0.0,
2.0,
4.0
]
},
"down": {
"texture": "#line",
"uv": [
0.0,
0.0,
2.0,
4.0
]
}
}
},
{
"name": "Line2",
"from": [
2.0,
5.0,
5.0
],
"to": [
4.0,
11.0,
11.0
],
"faces": {
"north": {
"texture": "#line",
"uv": [
0.0,
0.0,
2.0,
6.0
]
},
"east": {
"texture": "#line",
"uv": [
0.0,
0.0,
6.0,
6.0
]
},
"south": {
"texture": "#line",
"uv": [
0.0,
0.0,
2.0,
6.0
]
},
"west": {
"texture": "#line",
"uv": [
0.0,
0.0,
6.0,
6.0
]
},
"up": {
"texture": "#line",
"uv": [
0.0,
0.0,
2.0,
6.0
]
},
"down": {
"texture": "#line",
"uv": [
0.0,
0.0,
2.0,
6.0
]
}
}
},
{
"name": "Line3",
"from": [
0.0,
3.0,
3.0
],
"to": [
2.0,
13.0,
13.0
],
"faces": {
"north": {
"texture": "#line",
"uv": [
0.0,
0.0,
2.0,
10.0
]
},
"east": {
"texture": "#line",
"uv": [
0.0,
0.0,
10.0,
10.0
]
},
"south": {
"texture": "#line",
"uv": [
0.0,
0.0,
2.0,
10.0
]
},
"west": {
"texture": "#line",
"uv": [
0.0,
0.0,
10.0,
10.0
]
},
"up": {
"texture": "#line",
"uv": [
0.0,
0.0,
2.0,
10.0
]
},
"down": {
"texture": "#line",
"uv": [
0.0,
0.0,
2.0,
10.0
]
}
}
}
]
}

View File

@@ -1,11 +1,9 @@
{ {
"__comment": "Model generated using MrCrayfish's Model Creator (http://mrcrayfish.com/modelcreator/)", "__comment": "Model generated using MrCrayfish's Model Creator (http://mrcrayfish.com/modelcreator/)",
"textures": { "textures": {
"0": "refinedstorage:blocks/quartz_enriched_iron_block.pngquartz_enriched_iron_block", "0": "refinedstorage:blocks/side",
"1": "refinedstorage:blocks/side.pngside", "1": "refinedstorage:blocks/side",
"2": "blocks/quartz_enriched_iron_block", "2": "refinedstorage:blocks/side_borderless"
"3": "blocks/redstone_block.pngredstone_block",
"4": "blocks/redstone_block"
}, },
"elements": [ "elements": [
{ {

Binary file not shown.

Before

Width:  |  Height:  |  Size: 652 B

After

Width:  |  Height:  |  Size: 503 B

Some files were not shown because too many files have changed in this diff Show More