diff --git a/src/main/java/com/raoulvdberge/refinedstorage/RS.java b/src/main/java/com/raoulvdberge/refinedstorage/RS.java index dc528e09f..c4bad9a19 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/RS.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/RS.java @@ -5,6 +5,7 @@ import com.raoulvdberge.refinedstorage.apiimpl.storage.FluidStorageType; import com.raoulvdberge.refinedstorage.apiimpl.storage.ItemStorageType; import com.raoulvdberge.refinedstorage.apiimpl.storage.disk.StorageDiskFactoryFluid; import com.raoulvdberge.refinedstorage.apiimpl.storage.disk.StorageDiskFactoryItem; +import com.raoulvdberge.refinedstorage.block.CableBlock; import com.raoulvdberge.refinedstorage.block.ControllerBlock; import com.raoulvdberge.refinedstorage.block.MachineCasingBlock; import com.raoulvdberge.refinedstorage.block.QuartzEnrichedIronBlock; @@ -81,6 +82,7 @@ public final class RS { e.getRegistry().register(new ControllerBlock(ControllerBlock.Type.NORMAL)); e.getRegistry().register(new ControllerBlock(ControllerBlock.Type.CREATIVE)); e.getRegistry().register(new MachineCasingBlock()); + e.getRegistry().register(new CableBlock()); } @SubscribeEvent @@ -155,6 +157,7 @@ public final class RS { e.getRegistry().register(new ControllerBlockItem(RSBlocks.CONTROLLER)); e.getRegistry().register(new ControllerBlockItem(RSBlocks.CREATIVE_CONTROLLER)); e.getRegistry().register(BlockUtils.createBlockItemFor(RSBlocks.MACHINE_CASING)); + e.getRegistry().register(BlockUtils.createBlockItemFor(RSBlocks.CABLE)); } /* TODO diff --git a/src/main/java/com/raoulvdberge/refinedstorage/RSBlocks.java b/src/main/java/com/raoulvdberge/refinedstorage/RSBlocks.java index 69b46eba1..c0ff9a14a 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/RSBlocks.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/RSBlocks.java @@ -4,7 +4,6 @@ import com.raoulvdberge.refinedstorage.block.*; import net.minecraftforge.registries.ObjectHolder; public final class RSBlocks { - public static final BlockCable CABLE = new BlockCable(); public static final BlockGrid GRID = new BlockGrid(); public static final BlockDiskDrive DISK_DRIVE = new BlockDiskDrive(); public static final BlockExternalStorage EXTERNAL_STORAGE = new BlockExternalStorage(); @@ -39,6 +38,9 @@ public final class RSBlocks { @ObjectHolder(RS.ID + ":creative_controller") public static final ControllerBlock CREATIVE_CONTROLLER = null; + @ObjectHolder(RS.ID + ":cable") + public static final CableBlock CABLE = null; + public static final BlockStorageMonitor STORAGE_MONITOR = new BlockStorageMonitor(); public static final BlockPortableGrid PORTABLE_GRID = new BlockPortableGrid(); public static final BlockCrafterManager CRAFTER_MANAGER = new BlockCrafterManager(); diff --git a/src/main/java/com/raoulvdberge/refinedstorage/block/BlockConstructor.java b/src/main/java/com/raoulvdberge/refinedstorage/block/BlockConstructor.java index c69f28a6f..2e7d6d7f0 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/block/BlockConstructor.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/block/BlockConstructor.java @@ -1,16 +1,11 @@ package com.raoulvdberge.refinedstorage.block; -import com.raoulvdberge.refinedstorage.block.info.BlockDirection; -import com.raoulvdberge.refinedstorage.tile.TileConstructor; - -import javax.annotation.Nullable; - -public class BlockConstructor extends BlockCable { +public class BlockConstructor extends CableBlock { + /* TODO public BlockConstructor() { super(createBuilder("constructor").tileEntity(TileConstructor::new).create()); } - /* TODO @Override @OnlyIn(Dist.CLIENT) public void registerModels(IModelRegistration modelRegistration) { @@ -18,14 +13,13 @@ public class BlockConstructor extends BlockCable { registerCoverAndFullbright(modelRegistration, RS.ID + ":blocks/constructor/cutouts/connected"); } - */ + @Override @Nullable public BlockDirection getDirection() { return BlockDirection.ANY; } - /* TODO @Override public List getCollisions(TileEntity tile, BlockState state) { List groups = super.getCollisions(tile, state); @@ -68,9 +62,10 @@ public class BlockConstructor extends BlockCable { return openNetworkGui(RSGui.CONSTRUCTOR, player, world, pos, side); } - */ + @Override public boolean hasConnectedState() { return true; } + */ } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/block/BlockDestructor.java b/src/main/java/com/raoulvdberge/refinedstorage/block/BlockDestructor.java index fa916e407..bb48610b7 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/block/BlockDestructor.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/block/BlockDestructor.java @@ -1,13 +1,11 @@ package com.raoulvdberge.refinedstorage.block; -import com.raoulvdberge.refinedstorage.tile.TileDestructor; - -public class BlockDestructor extends BlockCable { +public class BlockDestructor extends CableBlock { + /* TODO public BlockDestructor() { super(createBuilder("destructor").tileEntity(TileDestructor::new).create()); } - /* TODO @Override @OnlyIn(Dist.CLIENT) public void registerModels(IModelRegistration modelRegistration) { @@ -34,10 +32,10 @@ public class BlockDestructor extends BlockCable { } return openNetworkGui(RSGui.DESTRUCTOR, player, world, pos, side); - }*/ + } @Override public boolean hasConnectedState() { return true; - } + }*/ } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/block/BlockExporter.java b/src/main/java/com/raoulvdberge/refinedstorage/block/BlockExporter.java index 5df5f5928..166579b31 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/block/BlockExporter.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/block/BlockExporter.java @@ -1,13 +1,11 @@ package com.raoulvdberge.refinedstorage.block; -import com.raoulvdberge.refinedstorage.tile.TileExporter; - -public class BlockExporter extends BlockCable { +public class BlockExporter extends CableBlock { + /* TODO public BlockExporter() { super(createBuilder("exporter").tileEntity(TileExporter::new).create()); } - /* TODO @Override @OnlyIn(Dist.CLIENT) public void registerModels(IModelRegistration modelRegistration) { diff --git a/src/main/java/com/raoulvdberge/refinedstorage/block/BlockExternalStorage.java b/src/main/java/com/raoulvdberge/refinedstorage/block/BlockExternalStorage.java index 14ab11fa3..cde51fc59 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/block/BlockExternalStorage.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/block/BlockExternalStorage.java @@ -1,13 +1,11 @@ package com.raoulvdberge.refinedstorage.block; -import com.raoulvdberge.refinedstorage.tile.TileExternalStorage; - -public class BlockExternalStorage extends BlockCable { +public class BlockExternalStorage extends CableBlock { + /* TODO public BlockExternalStorage() { super(createBuilder("external_storage").tileEntity(TileExternalStorage::new).create()); } - /* TODO @Override @OnlyIn(Dist.CLIENT) public void registerModels(IModelRegistration modelRegistration) { diff --git a/src/main/java/com/raoulvdberge/refinedstorage/block/BlockImporter.java b/src/main/java/com/raoulvdberge/refinedstorage/block/BlockImporter.java index 1b1d3ddbd..e77e47251 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/block/BlockImporter.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/block/BlockImporter.java @@ -1,13 +1,11 @@ package com.raoulvdberge.refinedstorage.block; -import com.raoulvdberge.refinedstorage.tile.TileImporter; - -public class BlockImporter extends BlockCable { +public class BlockImporter extends CableBlock { + /* TODO public BlockImporter() { super(createBuilder("importer").tileEntity(TileImporter::new).create()); } - /* TODO @Override @OnlyIn(Dist.CLIENT) public void registerModels(IModelRegistration modelRegistration) { diff --git a/src/main/java/com/raoulvdberge/refinedstorage/block/BlockReader.java b/src/main/java/com/raoulvdberge/refinedstorage/block/BlockReader.java index 6f5be8a11..645229267 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/block/BlockReader.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/block/BlockReader.java @@ -1,13 +1,11 @@ package com.raoulvdberge.refinedstorage.block; -import com.raoulvdberge.refinedstorage.tile.TileReader; - -public class BlockReader extends BlockCable { +public class BlockReader extends CableBlock { + /* TODO public BlockReader() { super(createBuilder("reader").tileEntity(TileReader::new).create()); } - /* TODO @Override @OnlyIn(Dist.CLIENT) public void registerModels(IModelRegistration modelRegistration) { @@ -57,10 +55,10 @@ public class BlockReader extends BlockCable { TileEntity tile = world.getTileEntity(pos); return tile instanceof TileReader && side == ((TileReader) tile).getDirection().getOpposite(); - }*/ + } @Override public boolean hasConnectedState() { return true; - } + }*/ } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/block/BlockWriter.java b/src/main/java/com/raoulvdberge/refinedstorage/block/BlockWriter.java index 2745b96e5..617e41524 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/block/BlockWriter.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/block/BlockWriter.java @@ -1,13 +1,11 @@ package com.raoulvdberge.refinedstorage.block; -import com.raoulvdberge.refinedstorage.tile.TileWriter; - -public class BlockWriter extends BlockCable { +public class BlockWriter extends CableBlock { + /* TODO public BlockWriter() { super(createBuilder("writer").tileEntity(TileWriter::new).create()); } - /* TODO @Override @OnlyIn(Dist.CLIENT) public void registerModels(IModelRegistration modelRegistration) { @@ -77,10 +75,10 @@ public class BlockWriter extends BlockCable { TileEntity tile = world.getTileEntity(pos); return tile instanceof TileWriter && side == ((TileWriter) tile).getDirection().getOpposite(); - }*/ + } @Override public boolean hasConnectedState() { return true; - } + }*/ } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/block/BlockCable.java b/src/main/java/com/raoulvdberge/refinedstorage/block/CableBlock.java old mode 100755 new mode 100644 similarity index 71% rename from src/main/java/com/raoulvdberge/refinedstorage/block/BlockCable.java rename to src/main/java/com/raoulvdberge/refinedstorage/block/CableBlock.java index fd1b7ad77..0a01e19ab --- a/src/main/java/com/raoulvdberge/refinedstorage/block/BlockCable.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/block/CableBlock.java @@ -1,37 +1,24 @@ package com.raoulvdberge.refinedstorage.block; -import com.raoulvdberge.refinedstorage.api.network.node.INetworkNode; -import com.raoulvdberge.refinedstorage.apiimpl.network.node.ICoverable; -import com.raoulvdberge.refinedstorage.apiimpl.network.node.cover.Cover; -import com.raoulvdberge.refinedstorage.apiimpl.network.node.cover.CoverManager; -import com.raoulvdberge.refinedstorage.apiimpl.network.node.cover.CoverType; -import com.raoulvdberge.refinedstorage.block.info.BlockInfoBuilder; -import com.raoulvdberge.refinedstorage.block.info.IBlockInfo; -import com.raoulvdberge.refinedstorage.render.IModelRegistration; -import com.raoulvdberge.refinedstorage.render.collision.CollisionGroup; -import com.raoulvdberge.refinedstorage.render.constants.ConstantsCable; -import com.raoulvdberge.refinedstorage.tile.TileCable; -import com.raoulvdberge.refinedstorage.tile.TileNode; -import com.raoulvdberge.refinedstorage.util.CollisionUtils; +import com.raoulvdberge.refinedstorage.RS; import net.minecraft.block.Block; import net.minecraft.block.BlockState; import net.minecraft.block.SoundType; import net.minecraft.block.material.Material; -import net.minecraft.client.renderer.model.ModelResourceLocation; +import net.minecraft.item.BlockItemUseContext; import net.minecraft.state.BooleanProperty; import net.minecraft.state.StateContainer; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.Direction; -import net.minecraft.util.ResourceLocation; +import net.minecraft.util.BlockRenderLayer; import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.shapes.ISelectionContext; +import net.minecraft.util.math.shapes.VoxelShape; +import net.minecraft.util.math.shapes.VoxelShapes; +import net.minecraft.world.IBlockReader; import net.minecraft.world.World; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; -import java.util.ArrayList; -import java.util.List; +import javax.annotation.Nullable; -public class BlockCable extends BlockNode { +public class CableBlock extends Block { /* TODO public static final PropertyObject COVER_NORTH = new PropertyObject<>("cover_north", Cover.class); public static final PropertyObject COVER_EAST = new PropertyObject<>("cover_east", Cover.class); @@ -47,26 +34,93 @@ public class BlockCable extends BlockNode { private static final BooleanProperty UP = BooleanProperty.create("up"); private static final BooleanProperty DOWN = BooleanProperty.create("down"); - public BlockCable(IBlockInfo info) { - super(info); + private static final VoxelShape SHAPE_CORE = makeCuboidShape(6, 6, 6, 10, 10, 10); + private static final VoxelShape SHAPE_NORTH = makeCuboidShape(6, 6, 0, 10, 10, 6); + private static final VoxelShape SHAPE_EAST = makeCuboidShape(10, 6, 6, 16, 10, 10); + private static final VoxelShape SHAPE_SOUTH = makeCuboidShape(6, 6, 10, 10, 10, 16); + private static final VoxelShape SHAPE_WEST = makeCuboidShape(0, 6, 6, 6, 10, 10); + private static final VoxelShape SHAPE_UP = makeCuboidShape(6, 10, 6, 10, 16, 10); + private static final VoxelShape SHAPE_DOWN = makeCuboidShape(6, 0, 6, 10, 6, 10); + + public CableBlock() { + super(Block.Properties.create(Material.GLASS).sound(SoundType.GLASS).hardnessAndResistance(0.35F)); + + this.setRegistryName(RS.ID, "cable"); + this.setDefaultState(getDefaultState().with(NORTH, false).with(EAST, false).with(SOUTH, false).with(WEST, false).with(UP, false).with(DOWN, false)); } - public BlockCable() { - super(createBuilder("cable").tileEntity(TileCable::new).create()); + @Override + @SuppressWarnings("deprecation") + public void neighborChanged(BlockState state, World world, BlockPos pos, Block block, BlockPos fromPos, boolean isMoving) { + super.neighborChanged(state, world, pos, block, fromPos, isMoving); + + world.setBlockState(pos, getState(world, pos)); } - static BlockInfoBuilder createBuilder(String id) { - return BlockInfoBuilder.forId(id).material(Material.GLASS).soundType(SoundType.GLASS).hardness(0.35F); + @Override + @SuppressWarnings("deprecation") + public VoxelShape getShape(BlockState state, IBlockReader world, BlockPos pos, ISelectionContext ctx) { + VoxelShape shape = SHAPE_CORE; + + if (state.get(NORTH)) { + shape = VoxelShapes.or(shape, SHAPE_NORTH); + } + + if (state.get(EAST)) { + shape = VoxelShapes.or(shape, SHAPE_EAST); + } + + if (state.get(SOUTH)) { + shape = VoxelShapes.or(shape, SHAPE_SOUTH); + } + + if (state.get(WEST)) { + shape = VoxelShapes.or(shape, SHAPE_WEST); + } + + if (state.get(UP)) { + shape = VoxelShapes.or(shape, SHAPE_UP); + } + + if (state.get(DOWN)) { + shape = VoxelShapes.or(shape, SHAPE_DOWN); + } + + return shape; } + @Nullable + @Override + public BlockState getStateForPlacement(BlockItemUseContext ctx) { + return getState(ctx.getWorld(), ctx.getPos()); + } + + private BlockState getState(World world, BlockPos pos) { + Block north = world.getBlockState(pos.north()).getBlock(); + Block east = world.getBlockState(pos.east()).getBlock(); + Block south = world.getBlockState(pos.south()).getBlock(); + Block west = world.getBlockState(pos.west()).getBlock(); + Block up = world.getBlockState(pos.up()).getBlock(); + Block down = world.getBlockState(pos.down()).getBlock(); + + return getDefaultState() + .with(NORTH, north instanceof CableBlock) + .with(EAST, east instanceof CableBlock) + .with(SOUTH, south instanceof CableBlock) + .with(WEST, west instanceof CableBlock) + .with(UP, up instanceof CableBlock) + .with(DOWN, down instanceof CableBlock); + } + + /* TODO @OnlyIn(Dist.CLIENT) void registerCover(IModelRegistration modelRegistration) { - // TODO modelRegistration.addBakedModelOverride(info.getId(), BakedModelCableCover::new); + modelRegistration.addBakedModelOverride(info.getId(), BakedModelCableCover::new); } @OnlyIn(Dist.CLIENT) void registerCoverAndFullbright(IModelRegistration modelRegistration, ResourceLocation... textures) { - // TODO modelRegistration.addBakedModelOverride(info.getId(), base -> new BakedModelCableCover(new BakedModelFullbright(base, textures))); + modelRegistration.addBakedModelOverride(info.getId(), base -> new BakedModelCableCover(new BakedModelFullbright(base, textures))); } @Override @@ -75,12 +129,7 @@ public class BlockCable extends BlockNode { modelRegistration.setModel(this, 0, new ModelResourceLocation(info.getId(), "down=false,east=true,north=false,south=false,up=false,west=true")); registerCover(modelRegistration); - } - - @Override - public boolean hasConnectedState() { - return false; - } + }*/ @Override protected void fillStateContainer(StateContainer.Builder builder) { @@ -90,22 +139,6 @@ public class BlockCable extends BlockNode { } /* TODO - @Override - @SuppressWarnings("deprecation") - public BlockState getActualState(BlockState state, IBlockAccess world, BlockPos pos) { - TileEntity tile = world.getTileEntity(pos); - - state = super.getActualState(state, world, pos) - .withProperty(NORTH, hasConnectionWith(world, pos, this, tile, Direction.NORTH)) - .withProperty(EAST, hasConnectionWith(world, pos, this, tile, Direction.EAST)) - .withProperty(SOUTH, hasConnectionWith(world, pos, this, tile, Direction.SOUTH)) - .withProperty(WEST, hasConnectionWith(world, pos, this, tile, Direction.WEST)) - .withProperty(UP, hasConnectionWith(world, pos, this, tile, Direction.UP)) - .withProperty(DOWN, hasConnectionWith(world, pos, this, tile, Direction.DOWN)); - - return state; - } - @Override public BlockState getExtendedState(BlockState state, IBlockAccess world, BlockPos pos) { BlockState s = super.getExtendedState(state, world, pos); @@ -124,6 +157,7 @@ public class BlockCable extends BlockNode { return s; }*/ + /* TODO private static boolean hasConnectionWith(World world, BlockPos pos, BlockBase block, TileEntity tile, Direction direction) { if (!(tile instanceof TileNode)) { return false; @@ -149,7 +183,6 @@ public class BlockCable extends BlockNode { } } - /* TODO if (otherTile != null && otherTile.hasCapability(CapabilityNetworkNodeProxy.NETWORK_NODE_PROXY_CAPABILITY, direction.getOpposite())) { // Prevent the block adding connections in itself // For example: importer cable connection on the importer face @@ -158,18 +191,19 @@ public class BlockCable extends BlockNode { } return true; - } */ + } return false; - } + }*/ + /* TODO @Override public List getCollisions(TileEntity tile, BlockState state) { List groups = getCoverCollisions(tile); groups.add(ConstantsCable.CORE); - /* TODO if (state.getValue(NORTH)) { + if (state.getValue(NORTH)) { groups.add(ConstantsCable.NORTH); } @@ -191,11 +225,12 @@ public class BlockCable extends BlockNode { if (state.getValue(DOWN)) { groups.add(ConstantsCable.DOWN); - } */ + } return groups; - } + }*/ + /* TODO private List getCoverCollisions(TileEntity tile) { List groups = new ArrayList<>(); @@ -277,41 +312,10 @@ public class BlockCable extends BlockNode { } return groups; - } - - /* TODO - @Override - @SuppressWarnings("deprecation") - public boolean isOpaqueCube(BlockState state) { - return false; - } - - @Override - @SuppressWarnings("deprecation") - public boolean isFullCube(BlockState state) { - return false; - } - - @Override - @SuppressWarnings("deprecation") - public BlockState getStateForPlacement(World world, BlockPos pos, Direction facing, float hitX, float hitY, float hitZ, int meta, EntityLivingBase entity) { - BlockState state = super.getStateForPlacement(world, pos, facing, hitX, hitY, hitZ, meta, entity); - - if (getDirection() != null) { - return state.withProperty(getDirection().getProperty(), getDirection().getFrom(facing, pos, entity)); - } - - return state; - } + }*/ @Override public BlockRenderLayer getRenderLayer() { return BlockRenderLayer.CUTOUT; } - - @Override - @SuppressWarnings("deprecation") - public BlockFaceShape getBlockFaceShape(IBlockAccess worldIn, BlockState state, BlockPos pos, Direction face) { - return BlockFaceShape.UNDEFINED; - }*/ } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/render/collision/BlockHighlightListener.java b/src/main/java/com/raoulvdberge/refinedstorage/render/collision/BlockHighlightListener.java deleted file mode 100644 index a989b77fb..000000000 --- a/src/main/java/com/raoulvdberge/refinedstorage/render/collision/BlockHighlightListener.java +++ /dev/null @@ -1,107 +0,0 @@ -package com.raoulvdberge.refinedstorage.render.collision; - -import com.mojang.blaze3d.platform.GlStateManager; -import com.raoulvdberge.refinedstorage.block.BlockBase; -import net.minecraft.block.Block; -import net.minecraft.block.BlockState; -import net.minecraft.client.renderer.BufferBuilder; -import net.minecraft.client.renderer.Tessellator; -import net.minecraft.client.renderer.vertex.DefaultVertexFormats; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.util.math.AxisAlignedBB; -import net.minecraft.util.math.BlockPos; -import net.minecraftforge.client.event.DrawBlockHighlightEvent; -import net.minecraftforge.eventbus.api.EventPriority; -import net.minecraftforge.eventbus.api.SubscribeEvent; - -public class BlockHighlightListener { - @SubscribeEvent(priority = EventPriority.LOWEST) - public void onBlockDrawHighlight(DrawBlockHighlightEvent e) { - if (e.getTarget() == null || e.getInfo().getBlockPos() == null) { // TODO: Still need to check this? - return; - } - - PlayerEntity player = (PlayerEntity) e.getInfo().getRenderViewEntity(); - - BlockPos pos = e.getInfo().getBlockPos(); - - Block b = player.getEntityWorld().getBlockState(pos).getBlock(); - - if (!(b instanceof BlockBase)) { - return; - } - - BlockBase block = (BlockBase) b; - - // TODO BlockState state = block.getActualState(block.getDefaultState(), player.getEntityWorld(), pos); - BlockState state = e.getInfo().getBlockAtCamera(); - - AdvancedRayTraceResult result = AdvancedRayTracer.rayTrace( - pos, - AdvancedRayTracer.getStart(player), - AdvancedRayTracer.getEnd(player), - block.getCollisions(player.getEntityWorld().getTileEntity(pos), state) - ); - - e.setCanceled(true); - - if (result == null) { - return; - } - - GlStateManager.enableBlend(); - GlStateManager.blendFuncSeparate(770, 771, 1, 0); - GlStateManager.color4f(0.0F, 0.0F, 0.0F, 0.4F); - GlStateManager.lineWidth(3.0F); - GlStateManager.disableTexture(); - GlStateManager.depthMask(false); - - double d0 = player.lastTickPosX + (player.posX - player.lastTickPosX) * (double) e.getPartialTicks(); - double d1 = player.lastTickPosY + (player.posY - player.lastTickPosY) * (double) e.getPartialTicks(); - double d2 = player.lastTickPosZ + (player.posZ - player.lastTickPosZ) * (double) e.getPartialTicks(); - - for (AxisAlignedBB aabb : result.getGroup().getItems()) { - drawSelectionBoundingBox(aabb.expand(0.0020000000949949026D, 0.0020000000949949026D, 0.0020000000949949026D).offset(-d0, -d1, -d2).offset(pos.getX(), pos.getY(), pos.getZ())); - } - - GlStateManager.depthMask(true); - GlStateManager.enableTexture(); - GlStateManager.disableBlend(); - } - - private void drawSelectionBoundingBox(AxisAlignedBB aabb) { - Tessellator tessellator = Tessellator.getInstance(); - - BufferBuilder buffer = tessellator.getBuffer(); - - buffer.begin(3, DefaultVertexFormats.POSITION); - buffer.pos(aabb.minX, aabb.minY, aabb.minZ).endVertex(); - buffer.pos(aabb.maxX, aabb.minY, aabb.minZ).endVertex(); - buffer.pos(aabb.maxX, aabb.minY, aabb.maxZ).endVertex(); - buffer.pos(aabb.minX, aabb.minY, aabb.maxZ).endVertex(); - buffer.pos(aabb.minX, aabb.minY, aabb.minZ).endVertex(); - - tessellator.draw(); - - buffer.begin(3, DefaultVertexFormats.POSITION); - buffer.pos(aabb.minX, aabb.maxY, aabb.minZ).endVertex(); - buffer.pos(aabb.maxX, aabb.maxY, aabb.minZ).endVertex(); - buffer.pos(aabb.maxX, aabb.maxY, aabb.maxZ).endVertex(); - buffer.pos(aabb.minX, aabb.maxY, aabb.maxZ).endVertex(); - buffer.pos(aabb.minX, aabb.maxY, aabb.minZ).endVertex(); - - tessellator.draw(); - - buffer.begin(1, DefaultVertexFormats.POSITION); - buffer.pos(aabb.minX, aabb.minY, aabb.minZ).endVertex(); - buffer.pos(aabb.minX, aabb.maxY, aabb.minZ).endVertex(); - buffer.pos(aabb.maxX, aabb.minY, aabb.minZ).endVertex(); - buffer.pos(aabb.maxX, aabb.maxY, aabb.minZ).endVertex(); - buffer.pos(aabb.maxX, aabb.minY, aabb.maxZ).endVertex(); - buffer.pos(aabb.maxX, aabb.maxY, aabb.maxZ).endVertex(); - buffer.pos(aabb.minX, aabb.minY, aabb.maxZ).endVertex(); - buffer.pos(aabb.minX, aabb.maxY, aabb.maxZ).endVertex(); - - tessellator.draw(); - } -} diff --git a/src/main/java/com/raoulvdberge/refinedstorage/render/constants/ConstantsCable.java b/src/main/java/com/raoulvdberge/refinedstorage/render/constants/ConstantsCable.java index 0641cb72d..50db4e257 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/render/constants/ConstantsCable.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/render/constants/ConstantsCable.java @@ -8,14 +8,6 @@ import net.minecraft.util.math.AxisAlignedBB; import javax.annotation.Nonnull; public final class ConstantsCable { - public static final CollisionGroup CORE = new CollisionGroup().addItem(CollisionUtils.getBounds(6, 6, 6, 10, 10, 10)); - public static final CollisionGroup NORTH = new CollisionGroup().addItem(CollisionUtils.getBounds(6, 6, 0, 10, 10, 6)); - public static final CollisionGroup EAST = new CollisionGroup().addItem(CollisionUtils.getBounds(10, 6, 6, 16, 10, 10)); - public static final CollisionGroup SOUTH = new CollisionGroup().addItem(CollisionUtils.getBounds(6, 6, 10, 10, 10, 16)); - public static final CollisionGroup WEST = new CollisionGroup().addItem(CollisionUtils.getBounds(0, 6, 6, 6, 10, 10)); - public static final CollisionGroup UP = new CollisionGroup().addItem(CollisionUtils.getBounds(6, 10, 6, 10, 16, 10)); - public static final CollisionGroup DOWN = new CollisionGroup().addItem(CollisionUtils.getBounds(6, 0, 6, 10, 6, 10)); - public static final CollisionGroup HOLDER_NORTH = new CollisionGroup().addItem(getHolderBounds(Direction.NORTH)); public static final CollisionGroup HOLDER_EAST = new CollisionGroup().addItem(getHolderBounds(Direction.EAST)); public static final CollisionGroup HOLDER_SOUTH = new CollisionGroup().addItem(getHolderBounds(Direction.SOUTH)); diff --git a/src/main/resources/assets/refinedstorage/blockstates/cable.json b/src/main/resources/assets/refinedstorage/blockstates/cable.json old mode 100755 new mode 100644 index 565df7358..e301996cf --- a/src/main/resources/assets/refinedstorage/blockstates/cable.json +++ b/src/main/resources/assets/refinedstorage/blockstates/cable.json @@ -1,61 +1,62 @@ -{ - "forge_marker": 1, - "defaults": { - "textures": { - "cable": "refinedstorage:blocks/cable", - "particle": "refinedstorage:blocks/cable" - }, - "model": "refinedstorage:cable_core", - "uvlock": true, - "transform": "forge:default-block" - }, - "variants": { - "north": { - "true": { - "submodel": "refinedstorage:cable_extension" - }, - "false": { - } - }, - "east": { - "true": { - "submodel": "refinedstorage:cable_extension", - "y": 90 - }, - "false": { - } - }, - "south": { - "true": { - "submodel": "refinedstorage:cable_extension", - "x": 180 - }, - "false": { - } - }, - "west": { - "true": { - "submodel": "refinedstorage:cable_extension", - "y": 270 - }, - "false": { - } - }, - "up": { - "true": { - "submodel": "refinedstorage:cable_extension", - "x": 270 - }, - "false": { - } - }, - "down": { - "true": { - "submodel": "refinedstorage:cable_extension", - "x": 90 - }, - "false": { - } - } - } +{ + "multipart": [ + { + "apply": { + "model": "refinedstorage:block/cable_core" + } + }, + { + "when": { + "north": true + }, + "apply": { + "model": "refinedstorage:block/cable_extension" + } + }, + { + "when": { + "east": true + }, + "apply": { + "model": "refinedstorage:block/cable_extension", + "y": 90 + } + }, + { + "when": { + "south": true + }, + "apply": { + "model": "refinedstorage:block/cable_extension", + "x": 180 + } + }, + { + "when": { + "west": true + }, + "apply": { + "model": "refinedstorage:block/cable_extension", + "y": 270 + } + }, + { + "when": { + "up": true + }, + "apply": { + "model": "refinedstorage:block/cable_extension", + "x": 270 + } + }, + { + "when": { + "down": true + }, + "apply": { + "model": "refinedstorage:block/cable_extension", + "x": 90 + } + } + ] } \ No newline at end of file diff --git a/src/main/resources/assets/refinedstorage/lang/en_us.json b/src/main/resources/assets/refinedstorage/lang/en_us.json index ece040820..8a1a76d82 100644 --- a/src/main/resources/assets/refinedstorage/lang/en_us.json +++ b/src/main/resources/assets/refinedstorage/lang/en_us.json @@ -178,7 +178,7 @@ "sidebutton.refinedstorage:access_type.2": "Extract only", "block.refinedstorage.controller": "Controller", "block.refinedstorage.creative_controller": "Creative Controller", - "block.refinedstorage:cable": "Cable", + "block.refinedstorage.cable": "Cable", "block.refinedstorage:grid.0": "Grid", "block.refinedstorage:grid.1": "Crafting Grid", "block.refinedstorage:grid.2": "Pattern Grid", diff --git a/src/main/resources/assets/refinedstorage/models/block/cable_core.json b/src/main/resources/assets/refinedstorage/models/block/cable_core.json index b0f288ff4..ef5885ace 100755 --- a/src/main/resources/assets/refinedstorage/models/block/cable_core.json +++ b/src/main/resources/assets/refinedstorage/models/block/cable_core.json @@ -1,5 +1,8 @@ { - "__comment": "Model generated using MrCrayfish's Model Creator (http://mrcrayfish.com/modelcreator/)", + "textures": { + "cable": "refinedstorage:block/cable", + "particle": "refinedstorage:block/cable" + }, "elements": [ { "name": "Core", diff --git a/src/main/resources/assets/refinedstorage/models/block/cable_extension.json b/src/main/resources/assets/refinedstorage/models/block/cable_extension.json index 28ae042ae..ec633d06d 100755 --- a/src/main/resources/assets/refinedstorage/models/block/cable_extension.json +++ b/src/main/resources/assets/refinedstorage/models/block/cable_extension.json @@ -1,5 +1,8 @@ { - "__comment": "Model generated using MrCrayfish's Model Creator (http://mrcrayfish.com/modelcreator/)", + "textures": { + "cable": "refinedstorage:block/cable", + "particle": "refinedstorage:block/cable" + }, "elements": [ { "name": "North", diff --git a/src/main/resources/assets/refinedstorage/models/item/cable.json b/src/main/resources/assets/refinedstorage/models/item/cable.json new file mode 100644 index 000000000..3ea8e7048 --- /dev/null +++ b/src/main/resources/assets/refinedstorage/models/item/cable.json @@ -0,0 +1,233 @@ +{ + "parent": "block/block", + "textures": { + "cable": "refinedstorage:block/cable" + }, + "elements": [ + { + "name": "Core", + "from": [ + 6, + 6, + 6 + ], + "to": [ + 10, + 10, + 10 + ], + "faces": { + "north": { + "uv": [ + 6, + 6, + 10, + 10 + ], + "texture": "#cable" + }, + "east": { + "uv": [ + 6, + 6, + 10, + 10 + ], + "texture": "#cable" + }, + "south": { + "uv": [ + 6, + 6, + 10, + 10 + ], + "texture": "#cable" + }, + "west": { + "uv": [ + 6, + 6, + 10, + 10 + ], + "texture": "#cable" + }, + "up": { + "uv": [ + 6, + 6, + 10, + 10 + ], + "texture": "#cable" + }, + "down": { + "uv": [ + 6, + 6, + 10, + 10 + ], + "texture": "#cable" + } + } + }, + { + "name": "Part1", + "from": [ + 10, + 6, + 6 + ], + "to": [ + 16, + 10, + 10 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 16, + 8, + 9 + ] + }, + "faces": { + "north": { + "uv": [ + 0, + 6, + 6, + 10 + ], + "texture": "#cable" + }, + "east": { + "uv": [ + 6, + 6, + 10, + 10 + ], + "texture": "#cable" + }, + "south": { + "uv": [ + 10, + 6, + 16, + 10 + ], + "texture": "#cable" + }, + "west": { + "uv": [ + 6, + 6, + 10, + 10 + ], + "texture": "#cable" + }, + "up": { + "uv": [ + 10, + 6, + 16, + 10 + ], + "texture": "#cable" + }, + "down": { + "uv": [ + 10, + 6, + 16, + 10 + ], + "texture": "#cable" + } + } + }, + { + "name": "Part2", + "from": [ + 0, + 6, + 6 + ], + "to": [ + 6, + 10, + 10 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 6, + 8, + 9 + ] + }, + "faces": { + "north": { + "uv": [ + 10, + 6, + 16, + 10 + ], + "texture": "#cable" + }, + "east": { + "uv": [ + 6, + 6, + 10, + 10 + ], + "texture": "#cable" + }, + "south": { + "uv": [ + 0, + 6, + 6, + 10 + ], + "texture": "#cable" + }, + "west": { + "uv": [ + 6, + 6, + 10, + 10 + ], + "texture": "#cable" + }, + "up": { + "uv": [ + 0, + 6, + 6, + 10 + ], + "texture": "#cable" + }, + "down": { + "uv": [ + 0, + 6, + 6, + 10 + ], + "texture": "#cable" + } + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/refinedstorage/loot_tables/blocks/cable.json b/src/main/resources/data/refinedstorage/loot_tables/blocks/cable.json new file mode 100644 index 000000000..7435c486f --- /dev/null +++ b/src/main/resources/data/refinedstorage/loot_tables/blocks/cable.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "refinedstorage:cable" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/refinedstorage/recipes/cable.json b/src/main/resources/data/refinedstorage/recipes/cable.json similarity index 84% rename from src/main/resources/assets/refinedstorage/recipes/cable.json rename to src/main/resources/data/refinedstorage/recipes/cable.json index e4c2eeb02..dbfa14fff 100644 --- a/src/main/resources/assets/refinedstorage/recipes/cable.json +++ b/src/main/resources/data/refinedstorage/recipes/cable.json @@ -10,8 +10,7 @@ "item": "refinedstorage:quartz_enriched_iron" }, "G": { - "type": "forge:ore_dict", - "ore": "blockGlass" + "tag": "forge:glass" }, "R": { "item": "minecraft:redstone"