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
### 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
**Bugfixes**
- 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
- 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**
- 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
**Bugfixes**

View File

@@ -12,7 +12,7 @@ buildscript {
}
apply plugin: 'net.minecraftforge.gradle.forge'
version = "0.8.6"
version = "0.8.8"
group = "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)
public final class 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")
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 BlockCrafter CRAFTER = new BlockCrafter();
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) {
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.nbt.NBTTagCompound;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.World;
/**
@@ -14,6 +15,11 @@ public interface ICraftingPattern {
*/
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
*/

View File

@@ -11,11 +11,6 @@ public interface INetworkNode {
*/
void updateNode();
/**
* @return If this node can send a connectivity update
*/
boolean canSendConnectivityUpdate();
/**
* @return The energy usage of this node
*/
@@ -36,8 +31,9 @@ public interface INetworkNode {
/**
* 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.

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_Z = "CrafterZ";
private int crafterX;
private int crafterY;
private int crafterZ;
private BlockPos crafterPos;
private TileCrafter crafter;
private boolean processing;
private ItemStack[] inputs;
private ItemStack[] outputs;
private ItemStack[] byproducts;
public CraftingPattern(int crafterX, int crafterY, int crafterZ, boolean processing, ItemStack[] inputs, ItemStack[] outputs, ItemStack[] byproducts) {
this.crafterX = crafterX;
this.crafterY = crafterY;
this.crafterZ = crafterZ;
public CraftingPattern(BlockPos crafterPos, boolean processing, ItemStack[] inputs, ItemStack[] outputs, ItemStack[] byproducts) {
this.crafterPos = crafterPos;
this.processing = processing;
this.inputs = inputs;
this.outputs = outputs;
@@ -39,12 +35,17 @@ public class CraftingPattern implements ICraftingPattern {
@Override
public ICraftingPatternContainer getContainer(World world) {
if (crafter == null) {
crafter = (TileCrafter) world.getTileEntity(new BlockPos(crafterX, crafterY, crafterZ));
crafter = (TileCrafter) world.getTileEntity(crafterPos);
}
return crafter;
}
@Override
public BlockPos getContainerPosition() {
return crafterPos;
}
@Override
public boolean isProcessing() {
return processing;
@@ -88,17 +89,15 @@ public class CraftingPattern implements ICraftingPattern {
tag.setTag(ItemPattern.NBT_BYPRODUCTS, byproductsTag);
}
tag.setInteger(NBT_CRAFTER_X, crafter.getPos().getX());
tag.setInteger(NBT_CRAFTER_Y, crafter.getPos().getY());
tag.setInteger(NBT_CRAFTER_Z, crafter.getPos().getZ());
tag.setInteger(NBT_CRAFTER_X, crafterPos.getX());
tag.setInteger(NBT_CRAFTER_Y, crafterPos.getY());
tag.setInteger(NBT_CRAFTER_Z, crafterPos.getZ());
return tag;
}
public static CraftingPattern readFromNBT(NBTTagCompound tag) {
int cx = tag.getInteger(NBT_CRAFTER_X);
int cy = tag.getInteger(NBT_CRAFTER_Y);
int cz = tag.getInteger(NBT_CRAFTER_Z);
BlockPos crafterPos = new BlockPos(tag.getInteger(NBT_CRAFTER_X), tag.getInteger(NBT_CRAFTER_Y), tag.getInteger(NBT_CRAFTER_Z));
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;
import net.minecraft.block.Block;
import net.minecraft.block.BlockPistonBase;
import net.minecraft.block.material.Material;
import net.minecraft.block.properties.IProperty;
import net.minecraft.block.properties.PropertyDirection;
import net.minecraft.block.state.BlockStateContainer;
import net.minecraft.block.state.IBlockState;
@@ -43,11 +41,23 @@ public abstract class BlockBase extends Block {
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
protected BlockStateContainer createBlockState() {
return new BlockStateContainer(this, new IProperty[]{
DIRECTION,
});
return createBlockStateBuilder().build();
}
public Item createItem() {
return new ItemBlockBase(this, false);
}
@Override
@@ -62,10 +72,8 @@ public abstract class BlockBase extends Block {
@Override
public IBlockState getActualState(IBlockState state, IBlockAccess world, BlockPos pos) {
TileEntity tile = world.getTileEntity(pos);
if (tile instanceof TileBase) {
return state.withProperty(DIRECTION, ((TileBase) tile).getDirection());
if (getPlacementType() != null) {
return state.withProperty(DIRECTION, ((TileBase) world.getTileEntity(pos)).getDirection());
}
return state;
@@ -78,18 +86,10 @@ public abstract class BlockBase extends Block {
@Override
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) {
EnumFacing dir = ((TileBase) tile).getDirection();
int newDir = dir.ordinal() + 1;
if (newDir > EnumFacing.VALUES.length - 1) {
newDir = 0;
}
((TileBase) tile).setDirection(EnumFacing.getFront(newDir));
tile.setDirection(getPlacementType().getNext(tile.getDirection()));
RefinedStorageUtils.updateBlock(world, pos);
@@ -100,19 +100,11 @@ public abstract class BlockBase extends Block {
}
@Override
public void onBlockPlacedBy(World world, BlockPos pos, IBlockState state, EntityLivingBase player, ItemStack itemStack) {
super.onBlockPlacedBy(world, pos, state, player, itemStack);
public void onBlockPlacedBy(World world, BlockPos pos, IBlockState state, EntityLivingBase player, ItemStack stack) {
super.onBlockPlacedBy(world, pos, state, player, stack);
TileEntity tile = world.getTileEntity(pos);
if (tile instanceof TileBase) {
EnumFacing facing = BlockPistonBase.getFacingFromEntity(pos, player);
if (player.isSneaking() && hasOppositeFacingOnSneakPlace()) {
facing = facing.getOpposite();
}
((TileBase) tile).setDirection(facing);
if (getPlacementType() != null) {
((TileBase) world.getTileEntity(pos)).setDirection(getPlacementType().getFrom(pos, player));
}
}
@@ -135,11 +127,7 @@ public abstract class BlockBase extends Block {
@Override
public boolean removedByPlayer(IBlockState state, World world, BlockPos pos, EntityPlayer player, boolean willHarvest) {
if (willHarvest) {
return true;
}
return super.removedByPlayer(state, world, pos, player, willHarvest);
return willHarvest ? true : super.removedByPlayer(state, world, pos, player, willHarvest);
}
@Override
@@ -149,11 +137,7 @@ public abstract class BlockBase extends Block {
world.setBlockToAir(pos);
}
public Item createItemForBlock() {
return new ItemBlockBase(this, false);
}
public boolean hasOppositeFacingOnSneakPlace() {
return false;
public EnumPlacementType getPlacementType() {
return EnumPlacementType.HORIZONTAL;
}
}

View File

@@ -1,6 +1,5 @@
package refinedstorage.block;
import net.minecraft.block.properties.IProperty;
import net.minecraft.block.properties.PropertyBool;
import net.minecraft.block.state.BlockStateContainer;
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.world.IBlockAccess;
import net.minecraft.world.World;
import refinedstorage.RefinedStorageBlocks;
import refinedstorage.api.network.INetworkMaster;
import refinedstorage.api.network.INetworkNode;
import refinedstorage.tile.TileBase;
import refinedstorage.tile.TileCable;
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 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 DOWN = PropertyBool.create("down");
public BlockCable() {
super("cable");
public BlockCable(String name) {
super(name);
setHardness(0.6F);
}
public BlockCable() {
this("cable");
}
@Override
public TileEntity createTileEntity(World world, IBlockState state) {
return new TileCable();
}
@Override
protected BlockStateContainer createBlockState() {
return new BlockStateContainer(this, new IProperty[]{
NORTH,
EAST,
SOUTH,
WEST,
UP,
DOWN,
});
protected BlockStateContainer.Builder createBlockStateBuilder() {
return super.createBlockStateBuilder()
.add(NORTH)
.add(EAST)
.add(SOUTH)
.add(WEST)
.add(UP)
.add(DOWN);
}
@Override
public IBlockState getActualState(IBlockState state, IBlockAccess world, BlockPos pos) {
return state.withProperty(NORTH, hasConnectionWith(world, pos.north()))
.withProperty(EAST, hasConnectionWith(world, pos.east()))
.withProperty(SOUTH, hasConnectionWith(world, pos.south()))
.withProperty(WEST, hasConnectionWith(world, pos.west()))
.withProperty(UP, hasConnectionWith(world, pos.up()))
.withProperty(DOWN, hasConnectionWith(world, pos.down()));
return super.getActualState(state, world, pos)
.withProperty(NORTH, hasConnectionWith(world, pos, pos.north()))
.withProperty(EAST, hasConnectionWith(world, pos, pos.east()))
.withProperty(SOUTH, hasConnectionWith(world, pos, pos.south()))
.withProperty(WEST, hasConnectionWith(world, pos, pos.west()))
.withProperty(UP, hasConnectionWith(world, pos, pos.up()))
.withProperty(DOWN, hasConnectionWith(world, pos, pos.down()));
}
public static boolean hasConnectionWith(IBlockAccess world, BlockPos pos) {
return world.getBlockState(pos).getBlock() == RefinedStorageBlocks.CONTROLLER || world.getTileEntity(pos) instanceof INetworkNode;
private boolean hasConnectionWith(IBlockAccess world, BlockPos basePos, BlockPos pos) {
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
@@ -74,4 +89,9 @@ public class BlockCable extends BlockNode {
public boolean isFullCube(IBlockState state) {
return false;
}
@Override
public EnumPlacementType getPlacementType() {
return null;
}
}

View File

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

View File

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

View File

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

View File

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

View File

@@ -1,14 +1,15 @@
package refinedstorage.block;
import net.minecraft.block.properties.IProperty;
import net.minecraft.block.properties.PropertyBool;
import net.minecraft.block.state.BlockStateContainer;
import net.minecraft.block.state.IBlockState;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.BlockRenderLayer;
import net.minecraft.util.EnumFacing;
import net.minecraft.util.EnumHand;
import net.minecraft.util.math.AxisAlignedBB;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.IBlockAccess;
import net.minecraft.world.World;
@@ -17,6 +18,8 @@ import refinedstorage.RefinedStorageGui;
import refinedstorage.tile.TileDetector;
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 BlockDetector() {
@@ -25,11 +28,9 @@ public class BlockDetector extends BlockNode {
@Override
protected BlockStateContainer createBlockState() {
return new BlockStateContainer(this, new IProperty[]{
DIRECTION,
CONNECTED,
POWERED
});
return createBlockStateBuilder()
.add(POWERED)
.build();
}
@Override
@@ -38,6 +39,11 @@ public class BlockDetector extends BlockNode {
.withProperty(POWERED, ((TileDetector) world.getTileEntity(pos)).isPowered());
}
@Override
public AxisAlignedBB getBoundingBox(IBlockState state, IBlockAccess source, BlockPos pos) {
return AABB_DETECTOR;
}
@Override
public TileEntity createTileEntity(World world, IBlockState state) {
return new TileDetector();
@@ -45,13 +51,7 @@ public class BlockDetector extends BlockNode {
@Override
public int getWeakPower(IBlockState state, IBlockAccess world, BlockPos pos, EnumFacing side) {
TileDetector detector = (TileDetector) world.getTileEntity(pos);
if (detector.getDirection() == side.getOpposite()) {
return detector.isPowered() ? 15 : 0;
}
return 0;
return ((TileDetector) world.getTileEntity(pos)).isPowered() ? 15 : 0;
}
@Override
@@ -72,4 +72,24 @@ public class BlockDetector extends BlockNode {
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;
import net.minecraft.block.properties.PropertyInteger;
import net.minecraft.block.state.BlockStateContainer;
import net.minecraft.block.state.IBlockState;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
@@ -7,12 +9,15 @@ import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.EnumFacing;
import net.minecraft.util.EnumHand;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.IBlockAccess;
import net.minecraft.world.World;
import refinedstorage.RefinedStorage;
import refinedstorage.RefinedStorageGui;
import refinedstorage.tile.TileDiskDrive;
public class BlockDiskDrive extends BlockNode {
public static final PropertyInteger STORED = PropertyInteger.create("stored", 0, 7);
public BlockDiskDrive() {
super("disk_drive");
}
@@ -22,6 +27,19 @@ public class BlockDiskDrive extends BlockNode {
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
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) {

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -35,4 +35,9 @@ public class BlockProcessingPatternEncoder extends BlockBase {
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;
}
@Override
public EnumPlacementType getPlacementType() {
return null;
}
public boolean hasConnectivityState() {
return true;
}
}

View File

@@ -1,6 +1,5 @@
package refinedstorage.block;
import net.minecraft.block.properties.IProperty;
import net.minecraft.block.properties.PropertyBool;
import net.minecraft.block.state.BlockStateContainer;
import net.minecraft.block.state.IBlockState;
@@ -9,6 +8,7 @@ import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.EnumFacing;
import net.minecraft.util.EnumHand;
import net.minecraft.util.math.AxisAlignedBB;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.IBlockAccess;
import net.minecraft.world.World;
@@ -17,6 +17,8 @@ import refinedstorage.RefinedStorageGui;
import refinedstorage.tile.TileSolderer;
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 BlockSolderer() {
@@ -37,13 +39,16 @@ public class BlockSolderer extends BlockNode {
return true;
}
@Override
public AxisAlignedBB getBoundingBox(IBlockState state, IBlockAccess source, BlockPos pos) {
return AABB_SOLDERER;
}
@Override
protected BlockStateContainer createBlockState() {
return new BlockStateContainer(this, new IProperty[]{
DIRECTION,
CONNECTED,
WORKING
});
return super.createBlockStateBuilder()
.add(WORKING)
.build();
}
@Override
@@ -51,4 +56,19 @@ public class BlockSolderer extends BlockNode {
return super.getActualState(state, world, pos)
.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;
import net.minecraft.block.properties.IProperty;
import net.minecraft.block.properties.PropertyEnum;
import net.minecraft.block.state.BlockStateContainer;
import net.minecraft.block.state.IBlockState;
@@ -30,6 +29,8 @@ public class BlockStorage extends BlockNode {
public BlockStorage() {
super("storage");
setHardness(5.8F);
}
@Override
@@ -41,11 +42,9 @@ public class BlockStorage extends BlockNode {
@Override
protected BlockStateContainer createBlockState() {
return new BlockStateContainer(this, new IProperty[]{
DIRECTION,
CONNECTED,
TYPE
});
return createBlockStateBuilder()
.add(TYPE)
.build();
}
@Override
@@ -104,7 +103,12 @@ public class BlockStorage extends BlockNode {
}
@Override
public Item createItemForBlock() {
public Item createItem() {
return new ItemBlockStorage();
}
@Override
public EnumPlacementType getPlacementType() {
return null;
}
}

View File

@@ -1,18 +1,26 @@
package refinedstorage.block;
import net.minecraft.block.Block;
import net.minecraft.block.state.IBlockState;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.BlockRenderLayer;
import net.minecraft.util.EnumFacing;
import net.minecraft.util.EnumHand;
import net.minecraft.util.math.AxisAlignedBB;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.IBlockAccess;
import net.minecraft.world.World;
import refinedstorage.RefinedStorage;
import refinedstorage.RefinedStorageGui;
import refinedstorage.tile.TileNode;
import refinedstorage.tile.TileWirelessTransmitter;
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() {
super("wireless_transmitter");
}
@@ -30,4 +38,51 @@ public class BlockWirelessTransmitter extends BlockNode {
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_1K;
return TYPE_CREATIVE;
}
}

View File

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

View File

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

View File

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

View File

@@ -1,6 +1,7 @@
package refinedstorage.item;
import net.minecraft.client.resources.I18n;
import net.minecraft.entity.Entity;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.inventory.InventoryHelper;
import net.minecraft.item.ItemStack;
@@ -64,6 +65,15 @@ public class ItemBlockStorage extends ItemBlockBase {
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
public void onCreated(ItemStack stack, World world, EntityPlayer player) {
super.onCreated(stack, world, player);

View File

@@ -2,6 +2,7 @@ package refinedstorage.item;
import net.minecraft.client.resources.I18n;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.entity.Entity;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.inventory.InventoryHelper;
import net.minecraft.item.Item;
@@ -39,14 +40,25 @@ public class ItemStorageDisk extends ItemBase {
@Override
public void getSubItems(Item item, CreativeTabs tab, List list) {
for (int i = 0; i < 6; ++i) {
list.add(i == TYPE_DEBUG ? createDebugDisk() : NBTStorage.createStackWithNBT(new ItemStack(item, 1, i)));
for (int i = 0; i < 5; ++i) {
list.add(NBTStorage.createStackWithNBT(new ItemStack(item, 1, i)));
}
}
private ItemStack createDebugDisk() {
ItemStack debugDisk = new ItemStack(RefinedStorageItems.STORAGE_DISK, 1, ItemStorageDisk.TYPE_DEBUG);
@Override
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) {
debugDiskTag = NBTStorage.createNBT();
@@ -76,9 +88,7 @@ public class ItemStorageDisk extends ItemBase {
storage.writeToNBT();
}
debugDisk.setTagCompound(debugDiskTag.copy());
return debugDisk;
stack.setTagCompound(debugDiskTag.copy());
}
@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"));
// Blocks
ModelLoader.setCustomStateMapper(RefinedStorageBlocks.STORAGE, (new StateMap.Builder())
.ignore(RefinedStorageBlocks.STORAGE.DIRECTION)
.ignore(RefinedStorageBlocks.STORAGE.CONNECTED)
.build()
);
ModelLoader.setCustomStateMapper(RefinedStorageBlocks.GRID, (new StateMap.Builder())
.ignore(RefinedStorageBlocks.GRID.TYPE)
.build());
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"));
@@ -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_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.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.DISK_DRIVE);
registerBlock(RefinedStorageBlocks.STORAGE);
registerBlock(RefinedStorageBlocks.EXTERNAL_STORAGE);
registerBlock(RefinedStorageBlocks.SOLDERER);
registerBlock(RefinedStorageBlocks.CABLE);
registerBlock(RefinedStorageBlocks.IMPORTER);
registerBlock(RefinedStorageBlocks.EXPORTER);
registerBlock(RefinedStorageBlocks.EXTERNAL_STORAGE);
registerBlock(RefinedStorageBlocks.CONSTRUCTOR);
registerBlock(RefinedStorageBlocks.DESTRUCTOR);
registerBlock(RefinedStorageBlocks.DETECTOR);
@@ -97,8 +98,6 @@ public class CommonProxy {
registerBlock(RefinedStorageBlocks.INTERFACE);
registerBlock(RefinedStorageBlocks.WIRELESS_TRANSMITTER);
registerBlock(RefinedStorageBlocks.MACHINE_CASING);
registerBlock(RefinedStorageBlocks.QUARTZ_ENRICHED_IRON);
registerBlock(RefinedStorageBlocks.CABLE);
registerItem(RefinedStorageItems.QUARTZ_ENRICHED_IRON);
registerItem(RefinedStorageItems.STORAGE_DISK);
@@ -134,16 +133,6 @@ public class CommonProxy {
'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
GameRegistry.addRecipe(new ItemStack(RefinedStorageBlocks.MACHINE_CASING),
"EEE",
@@ -201,14 +190,14 @@ public class CommonProxy {
));
// Cable
GameRegistry.addRecipe(new ItemStack(RefinedStorageBlocks.CABLE, 12),
GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(RefinedStorageBlocks.CABLE, 12),
"EEE",
"GRG",
"EEE",
'E', new ItemStack(RefinedStorageItems.QUARTZ_ENRICHED_IRON),
'G', new ItemStack(Blocks.GLASS),
'G', "blockGlass",
'R', new ItemStack(Items.REDSTONE)
);
));
// Wireless Transmitter
GameRegistry.addRecipe(new ItemStack(RefinedStorageBlocks.WIRELESS_TRANSMITTER),
@@ -294,20 +283,20 @@ public class CommonProxy {
'H', new ItemStack(Blocks.CHEST),
'C', new ItemStack(RefinedStorageItems.CORE, 1, ItemCore.TYPE_CONSTRUCTION),
'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)
);
// 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.PROCESSOR, 1, ItemProcessor.TYPE_IMPROVED)
);
// 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.PROCESSOR, 1, ItemProcessor.TYPE_IMPROVED)
);
@@ -356,7 +345,7 @@ public class CommonProxy {
'R', new ItemStack(Items.REDSTONE),
'E', new ItemStack(RefinedStorageItems.QUARTZ_ENRICHED_IRON),
'S', "itemSilicon",
'G', new ItemStack(Blocks.GLASS)
'G', "blockGlass"
));
GameRegistry.addRecipe(new ItemStack(RefinedStorageItems.STORAGE_PART, 1, ItemStoragePart.TYPE_4K),
@@ -390,28 +379,28 @@ public class CommonProxy {
);
// Storage Housing
GameRegistry.addRecipe(NBTStorage.createStackWithNBT(new ItemStack(RefinedStorageItems.STORAGE_HOUSING)),
GameRegistry.addRecipe(new ShapedOreRecipe(NBTStorage.createStackWithNBT(new ItemStack(RefinedStorageItems.STORAGE_HOUSING)),
"GRG",
"R R",
"EEE",
'G', new ItemStack(Blocks.GLASS),
'G', "blockGlass",
'R', new ItemStack(Items.REDSTONE),
'E', new ItemStack(RefinedStorageItems.QUARTZ_ENRICHED_IRON)
);
));
// Storage Disks
for (int type = 0; type <= 3; ++type) {
ItemStack disk = NBTStorage.createStackWithNBT(new ItemStack(RefinedStorageItems.STORAGE_DISK, 1, type));
GameRegistry.addRecipe(disk,
GameRegistry.addRecipe(new ShapedOreRecipe(disk,
"GRG",
"RPR",
"EEE",
'G', new ItemStack(Blocks.GLASS),
'G', "blockGlass",
'R', new ItemStack(Items.REDSTONE),
'P', new ItemStack(RefinedStorageItems.STORAGE_PART, 1, type),
'E', new ItemStack(RefinedStorageItems.QUARTZ_ENRICHED_IRON)
);
));
GameRegistry.addShapelessRecipe(disk,
new ItemStack(RefinedStorageItems.STORAGE_HOUSING),
@@ -420,24 +409,24 @@ public class CommonProxy {
}
// Pattern
GameRegistry.addRecipe(new ItemStack(RefinedStorageItems.PATTERN),
GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(RefinedStorageItems.PATTERN),
"GRG",
"RGR",
"EEE",
'G', new ItemStack(Blocks.GLASS),
'G', "blockGlass",
'R', new ItemStack(Items.REDSTONE),
'E', new ItemStack(RefinedStorageItems.QUARTZ_ENRICHED_IRON)
);
));
// Upgrade
GameRegistry.addRecipe(new ItemStack(RefinedStorageItems.UPGRADE, 1, 0),
GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(RefinedStorageItems.UPGRADE, 1, 0),
"EGE",
"EPE",
"EGE",
'G', new ItemStack(Blocks.GLASS),
'G', "blockGlass",
'P', new ItemStack(RefinedStorageItems.PROCESSOR, 1, ItemProcessor.TYPE_IMPROVED),
'E', new ItemStack(RefinedStorageItems.QUARTZ_ENRICHED_IRON)
);
));
RefinedStorageAPI.SOLDERER_REGISTRY.addRecipe(new SoldererRecipeUpgrade(ItemUpgrade.TYPE_RANGE));
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));
// Crafting Monitor
GameRegistry.addRecipe(new ItemStack(RefinedStorageBlocks.CRAFTING_MONITOR),
GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(RefinedStorageBlocks.CRAFTING_MONITOR),
"EGE",
"GMG",
"EPE",
'E', new ItemStack(RefinedStorageItems.QUARTZ_ENRICHED_IRON),
'M', new ItemStack(RefinedStorageBlocks.MACHINE_CASING),
'G', new ItemStack(Blocks.GLASS),
'G', "blockGlass",
'P', new ItemStack(RefinedStorageItems.PROCESSOR, 1, ItemProcessor.TYPE_IMPROVED)
);
));
// Interface
RefinedStorageAPI.SOLDERER_REGISTRY.addRecipe(new SoldererRecipeBasic(
@@ -486,7 +475,7 @@ public class CommonProxy {
private void registerBlock(BlockBase block) {
GameRegistry.<Block>register(block);
GameRegistry.register(block.createItemForBlock());
GameRegistry.register(block.createItem());
}
private void registerItem(Item item) {

View File

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

View File

@@ -24,7 +24,7 @@ import refinedstorage.item.ItemUpgrade;
public class TileCrafter extends TileNode implements ICraftingPatternContainer {
private BasicItemHandler patterns = new BasicItemHandler(9, this, new IItemValidator() {
@Override
public boolean valid(ItemStack stack) {
public boolean isValid(ItemStack 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) {
if (!state) {
for (ICraftingTask task : network.getCraftingTasks()) {
if (task.getPattern().getContainer(worldObj) == this) {
if (task.getPattern().getContainerPosition().equals(pos)) {
network.cancelCraftingTask(task);
}
}

View File

@@ -33,6 +33,7 @@ public class TileDetector extends TileNode implements ICompareConfig {
private int amount = 0;
private boolean powered = false;
private boolean wasPowered;
@Override
public int getEnergyUsage() {
@@ -44,8 +45,6 @@ public class TileDetector extends TileNode implements ICompareConfig {
if (ticks % SPEED == 0) {
ItemStack slot = filter.getStackInSlot(0);
boolean wasPowered = powered;
if (slot != null) {
ItemStack stack = network.getStorage().get(slot, compare);
@@ -73,15 +72,22 @@ public class TileDetector extends TileNode implements ICompareConfig {
} else {
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
public void onConnectionChange(INetworkMaster network, boolean 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_COMPARE = "Compare";
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)) {
@Override
@@ -84,6 +85,20 @@ public class TileDiskDrive extends TileNode implements IStorageProvider, IStorag
private int priority = 0;
private int compare = 0;
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
public int getEnergyUsage() {
@@ -166,6 +181,22 @@ public class TileDiskDrive extends TileNode implements IStorageProvider, IStorag
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
public void writeContainerData(ByteBuf buf) {
super.writeContainerData(buf);
@@ -213,6 +244,36 @@ public class TileDiskDrive extends TileNode implements IStorageProvider, IStorag
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
public String getGuiTitle() {
return "block.refinedstorage:disk_drive.name";

View File

@@ -1,11 +1,13 @@
package refinedstorage.tile;
import io.netty.buffer.ByteBuf;
import net.minecraft.block.Block;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.util.math.BlockPos;
import refinedstorage.RefinedStorageUtils;
import refinedstorage.api.network.INetworkMaster;
import refinedstorage.api.network.INetworkNode;
import refinedstorage.block.BlockNode;
import refinedstorage.tile.config.IRedstoneModeConfig;
import refinedstorage.tile.config.RedstoneMode;
@@ -28,9 +30,10 @@ public abstract class TileNode extends TileBase implements INetworkNode, ISynchr
return isConnected() && canUpdate();
}
@Override
public boolean canSendConnectivityUpdate() {
return true;
private boolean canSendConnectivityUpdate() {
Block block = getBlockType();
return block instanceof BlockNode ? ((BlockNode) block).hasConnectivityState() : false;
}
@Override
@@ -65,7 +68,7 @@ public abstract class TileNode extends TileBase implements INetworkNode, ISynchr
}
@Override
public void onDisconnected() {
public void onDisconnected(INetworkMaster network) {
onConnectionChange(network, false);
this.connected = false;
@@ -144,14 +147,18 @@ public abstract class TileNode extends TileBase implements INetworkNode, ISynchr
public NBTTagCompound writeUpdate(NBTTagCompound tag) {
super.writeUpdate(tag);
tag.setBoolean(NBT_CONNECTED, isActive());
if (canSendConnectivityUpdate()) {
tag.setBoolean(NBT_CONNECTED, isActive());
}
return 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;
progress = 0;
// Don't set working to false yet, wait till the next update because we may have
// another stack waiting.
// Don't set working to false yet, wait till the next update because we may have another stack waiting.
markDirty();
}

View File

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

View File

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

View File

@@ -3,5 +3,23 @@ package refinedstorage.tile.externalstorage;
import refinedstorage.api.storage.IStorage;
public abstract class ExternalStorage implements IStorage {
private int hash = -1;
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) {
this.externalStorage = externalStorage;
this.handler = handler;
setHash();
}
@Override
@@ -23,6 +25,19 @@ public class ItemHandlerStorage extends ExternalStorage {
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
public List<ItemStack> getItems() {
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) {
super.onConnectionChange(network, state);
updateStorage(network);
network.getStorage().rebuild();
}
@Override
public void update() {
if (ticks == 0) {
updateStorage();
} else if (getFacingTile() instanceof IDrawerGroup && lastDrawerCount != ((IDrawerGroup) getFacingTile()).getDrawerCount()) {
lastDrawerCount = ((IDrawerGroup) getFacingTile()).getDrawerCount();
if (!worldObj.isRemote && network != null) {
for (ExternalStorage storage : storages) {
if (storage.isDirty()) {
updateStorage(network);
updateStorage();
break;
}
}
if (getFacingTile() instanceof IDrawerGroup && lastDrawerCount != ((IDrawerGroup) getFacingTile()).getDrawerCount()) {
lastDrawerCount = ((IDrawerGroup) getFacingTile()).getDrawerCount();
updateStorage(network);
}
}
super.update();
@@ -166,8 +176,7 @@ public class TileExternalStorage extends TileNode implements IStorageProvider, I
markDirty();
}
// Called when the neighbor block changes or when a drawer is added or removed to a drawer group
public void updateStorage() {
public void updateStorage(INetworkMaster network) {
storages.clear();
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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -1,54 +1,26 @@
{
"forge_marker": 1,
"defaults": {
"model": "orientable",
"textures": {
"side": "refinedstorage:blocks/side",
"top": "refinedstorage:blocks/side",
"front": "refinedstorage:blocks/detector_unpowered"
}
"particle": "refinedstorage:blocks/side_borderless",
"torch": "refinedstorage:blocks/wireless_transmitter_disconnected"
},
"model": "refinedstorage:detector"
},
"variants": {
"inventory": [
{
"y": 0,
"transform": "forge:default-block"
}
],
"connected": {
"true": {
},
"false": {
}
},
"powered": {
"true": {
"textures": {
"front": "refinedstorage:blocks/detector_powered"
"torch": "refinedstorage:blocks/wireless_transmitter_connected"
}
},
"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": {
"side": "refinedstorage:blocks/side",
"top": "refinedstorage:blocks/side",
"front": "refinedstorage:blocks/disk_drive"
"front": "refinedstorage:blocks/disk_drive_0"
}
},
"variants": {
@@ -15,10 +15,46 @@
"y": 0
}
],
"connected": {
"true": {
"stored": {
"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": {

View File

@@ -1,44 +1,81 @@
{
"forge_marker": 1,
"defaults": {
"model": "orientable",
"textures": {
"side": "refinedstorage:blocks/side",
"top": "refinedstorage:blocks/side",
"front": "refinedstorage:blocks/exporter"
}
"all": "refinedstorage:blocks/cable",
"particle": "refinedstorage:blocks/cable",
"line": "refinedstorage:blocks/importer_exporter_external_storage"
},
"model": "refinedstorage:cable_core",
"uvlock": true
},
"variants": {
"inventory": [
{
"y": 0,
"model": "refinedstorage:exporter",
"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": {
"submodel": "refinedstorage:cable_north"
},
"false": {
}
},
"direction": {
"north": {
"y": 0
"east": {
"true": {
"submodel": "refinedstorage:cable_east"
},
"east": {
"y": 90
"false": {
}
},
"south": {
"true": {
"submodel": "refinedstorage:cable_south"
},
"south": {
"y": 180
"false": {
}
},
"west": {
"true": {
"submodel": "refinedstorage:cable_west"
},
"west": {
"y": 270
"false": {
}
},
"up": {
"true": {
"submodel": "refinedstorage:cable_up"
},
"up": {
"x": 270
"false": {
}
},
"down": {
"true": {
"submodel": "refinedstorage:cable_down"
},
"down": {
"x": 90
"false": {
}
}
}

View File

@@ -1,44 +1,81 @@
{
"forge_marker": 1,
"defaults": {
"model": "orientable",
"textures": {
"side": "refinedstorage:blocks/side",
"top": "refinedstorage:blocks/side",
"front": "refinedstorage:blocks/external_storage"
}
"all": "refinedstorage:blocks/cable",
"particle": "refinedstorage:blocks/cable",
"line": "refinedstorage:blocks/importer_exporter_external_storage"
},
"model": "refinedstorage:cable_core",
"uvlock": true
},
"variants": {
"inventory": [
{
"y": 0,
"model": "refinedstorage:external_storage",
"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": {
"submodel": "refinedstorage:cable_north"
},
"false": {
}
},
"direction": {
"north": {
"y": 0
"east": {
"true": {
"submodel": "refinedstorage:cable_east"
},
"east": {
"y": 90
"false": {
}
},
"south": {
"true": {
"submodel": "refinedstorage:cable_south"
},
"south": {
"y": 180
"false": {
}
},
"west": {
"true": {
"submodel": "refinedstorage:cable_west"
},
"west": {
"y": 270
"false": {
}
},
"up": {
"true": {
"submodel": "refinedstorage:cable_up"
},
"up": {
"x": 270
"false": {
}
},
"down": {
"true": {
"submodel": "refinedstorage:cable_down"
},
"down": {
"x": 90
"false": {
}
}
}

View File

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

View File

@@ -1,44 +1,81 @@
{
"forge_marker": 1,
"defaults": {
"model": "orientable",
"textures": {
"side": "refinedstorage:blocks/side",
"top": "refinedstorage:blocks/side",
"front": "refinedstorage:blocks/importer"
}
"all": "refinedstorage:blocks/cable",
"particle": "refinedstorage:blocks/cable",
"line": "refinedstorage:blocks/importer_exporter_external_storage"
},
"model": "refinedstorage:cable_core",
"uvlock": true
},
"variants": {
"inventory": [
{
"y": 0,
"model": "refinedstorage:importer",
"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": {
"submodel": "refinedstorage:cable_north"
},
"false": {
}
},
"direction": {
"north": {
"y": 0
"east": {
"true": {
"submodel": "refinedstorage:cable_east"
},
"east": {
"y": 90
"false": {
}
},
"south": {
"true": {
"submodel": "refinedstorage:cable_south"
},
"south": {
"y": 180
"false": {
}
},
"west": {
"true": {
"submodel": "refinedstorage:cable_west"
},
"west": {
"y": 270
"false": {
}
},
"up": {
"true": {
"submodel": "refinedstorage:cable_up"
},
"up": {
"x": 270
"false": {
}
},
"down": {
"true": {
"submodel": "refinedstorage:cable_down"
},
"down": {
"x": 90
"false": {
}
}
}

View File

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

View File

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

View File

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

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"
}
],
"direction": {
"north": {
},
"east": {
},
"south": {
},
"west": {
},
"up": {
},
"down": {
}
},
"connected": {
"true": {
"textures": {

View File

@@ -1,54 +1,30 @@
{
"forge_marker": 1,
"defaults": {
"model": "orientable",
"textures": {
"side": "refinedstorage:blocks/side",
"top": "refinedstorage:blocks/side",
"front": "refinedstorage:blocks/solderer"
}
"particle": "refinedstorage:blocks/side_borderless",
"3": "refinedstorage:blocks/solderer_laser",
"4": "refinedstorage:blocks/solderer_laser"
},
"model": "refinedstorage:solderer",
"uvlock": true
},
"variants": {
"inventory": [
{
"y": 0,
"model": "refinedstorage:solderer",
"transform": "forge:default-block"
}
],
"connected": {
"true": {
},
"false": {
}
},
"working": {
"true": {
"textures": {
"front": "refinedstorage:blocks/solderer_working"
"3": "refinedstorage:blocks/solderer_laser_working",
"4": "refinedstorage:blocks/solderer_laser_working"
}
},
"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,
"defaults": {
"model": "orientable",
"model": "torch",
"textures": {
"side": "refinedstorage:blocks/side",
"top": "refinedstorage:blocks/side"
"torch": "refinedstorage:blocks/wireless_transmitter_disconnected"
}
},
"variants": {
"inventory": [
{
"textures": {
"front": "refinedstorage:blocks/wireless_transmitter_disconnected"
},
"transform": "forge:default-block",
"y": 0
"transform": "forge:default-block"
}
],
"connected": {
"true": {
"textures": {
"front": "refinedstorage:blocks/wireless_transmitter_connected"
"torch": "refinedstorage:blocks/wireless_transmitter_connected"
}
},
"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:crafter.name=Crafter
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.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:crafter.name=Crafteur
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.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:crafter.name=Crafter
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.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:crafter.name=Fabricador
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.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/)",
"textures": {
"0": "refinedstorage:blocks/quartz_enriched_iron_block.pngquartz_enriched_iron_block",
"1": "refinedstorage:blocks/side.pngside",
"2": "blocks/quartz_enriched_iron_block",
"3": "blocks/redstone_block.pngredstone_block",
"4": "blocks/redstone_block"
"0": "refinedstorage:blocks/side",
"1": "refinedstorage:blocks/side",
"2": "refinedstorage:blocks/side_borderless"
},
"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