diff --git a/build.gradle b/build.gradle index 9f364ba..6076c8d 100644 --- a/build.gradle +++ b/build.gradle @@ -30,7 +30,7 @@ sourceCompatibility = 1.8 targetCompatibility = 1.8 minecraft { - version = "12.18.1.2077" + version = "12.18.1.2092" //"1.9.4-12.17.0.1976" runDir = "run" diff --git a/src/main/java/malte0811/industrialWires/IndustrialWires.java b/src/main/java/malte0811/industrialWires/IndustrialWires.java index 5ccac83..b814f9c 100644 --- a/src/main/java/malte0811/industrialWires/IndustrialWires.java +++ b/src/main/java/malte0811/industrialWires/IndustrialWires.java @@ -1,13 +1,20 @@ package malte0811.industrialWires; +import java.util.ArrayList; +import java.util.List; + +import blusunrize.immersiveengineering.api.tool.AssemblerHandler; +import blusunrize.immersiveengineering.api.tool.AssemblerHandler.RecipeQuery; import blusunrize.immersiveengineering.common.IEContent; import blusunrize.immersiveengineering.common.blocks.stone.BlockTypes_StoneDecoration; import ic2.api.item.IC2Items; import malte0811.industrialWires.blocks.BlockIC2Connector; import malte0811.industrialWires.blocks.TileEntityIC2ConnectorCopper; +import malte0811.industrialWires.blocks.TileEntityIC2ConnectorGlass; import malte0811.industrialWires.blocks.TileEntityIC2ConnectorGold; import malte0811.industrialWires.blocks.TileEntityIC2ConnectorHV; import malte0811.industrialWires.blocks.TileEntityIC2ConnectorTin; +import malte0811.industrialWires.crafting.RecipeCoilLength; import malte0811.industrialWires.items.ItemIC2Coil; import malte0811.industrialWires.wires.IC2Wiretype; import net.minecraft.creativetab.CreativeTabs; @@ -20,6 +27,8 @@ import net.minecraftforge.fml.common.event.FMLInitializationEvent; import net.minecraftforge.fml.common.event.FMLPostInitializationEvent; import net.minecraftforge.fml.common.event.FMLPreInitializationEvent; import net.minecraftforge.fml.common.registry.GameRegistry; +import net.minecraftforge.oredict.RecipeSorter; +import net.minecraftforge.oredict.RecipeSorter.Category; import net.minecraftforge.oredict.ShapedOreRecipe; @Mod(modid = IndustrialWires.MODID, version = IndustrialWires.VERSION, dependencies="required-after:immersiveengineering;required-after:IC2") @@ -49,6 +58,7 @@ public class IndustrialWires { GameRegistry.registerTileEntity(TileEntityIC2ConnectorCopper.class, "ic2ConnectorCopper"); GameRegistry.registerTileEntity(TileEntityIC2ConnectorGold.class, "ic2ConnectorGold"); GameRegistry.registerTileEntity(TileEntityIC2ConnectorHV.class, "ic2ConnectorHV"); + GameRegistry.registerTileEntity(TileEntityIC2ConnectorGlass.class, "ic2ConnectorGlass"); if (IC2Wiretype.IC2_TYPES==null) { throw new IllegalStateException("No IC2 wires registered"); } @@ -57,25 +67,50 @@ public class IndustrialWires { @EventHandler public void init(FMLInitializationEvent e) { - //WIRES - ItemStack tinCable = IC2Items.getItem("cable", "type:tin,insulation:0"); - ItemStack copperCable = IC2Items.getItem("cable", "type:copper,insulation:0"); - ItemStack goldCable = IC2Items.getItem("cable", "type:gold,insulation:0"); - ItemStack hvCable = IC2Items.getItem("cable", "type:iron,insulation:0"); - GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(coil, 2, 0), "ttt", "tst", "ttt", 't', tinCable, 's', "stickWood")); - GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(coil, 2, 1), "ccc", "csc", "ccc", 'c', copperCable, 's', "stickWood")); - GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(coil, 2, 2), "ggg", "gsg", "ggg", 'g', goldCable, 's', "stickWood")); - GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(coil, 2, 3), "hhh", "hsh", "hhh", 'h', hvCable, 's', "stickWood")); + ItemStack glassCable = IC2Items.getItem("cable", "type:glass,insulation:0"); //CONNECTORS - GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ic2conn, 1, 0), " t ", "rtr", "rtr", 't', "ingotTin", 'r', "itemRubber")); - GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ic2conn, 1, 2), " c ", "rcr", "rcr", 'c', "ingotCopper", 'r', "itemRubber")); - GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ic2conn, 1, 4), " g ", "rgr", "rgr", 'g', "ingotGold", 'r', "itemRubber")); - GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ic2conn, 1, 6), " i ", "rir", "rir", 'i', "ingotIron", 'r', "itemRubber")); + GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ic2conn, 4, 0), " t ", "rtr", "rtr", 't', "ingotTin", 'r', "itemRubber")); + GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ic2conn, 4, 2), " c ", "rcr", "rcr", 'c', "ingotCopper", 'r', "itemRubber")); + GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ic2conn, 4, 4), " g ", "rgr", "rgr", 'g', "ingotGold", 'r', "itemRubber")); + GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ic2conn, 4, 6), " i ", "rir", "rir", 'i', "ingotIron", 'r', "itemRubber")); + GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ic2conn, 4, 8), " c ", "rcr", "rcr",'c', glassCable, 'r', "itemRubber")); //RELAYS - GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ic2conn, 1, 1), " t ", "rtr", 't', "ingotTin", 'r', "itemRubber")); - GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ic2conn, 1, 3), " c ", "rcr", 'c', "ingotCopper", 'r', "itemRubber")); - GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ic2conn, 1, 5), " g ", "rgr", 'g', "ingotGold", 'r', "itemRubber")); - GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ic2conn, 1, 7), " i ", "gig", "gig", 'i', "ingotIron", 'g', new ItemStack(IEContent.blockStoneDecoration, 1, BlockTypes_StoneDecoration.INSULATING_GLASS.getMeta()))); + GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ic2conn, 4, 1), " t ", "rtr", 't', "ingotTin", 'r', "itemRubber")); + GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ic2conn, 4, 3), " c ", "rcr", 'c', "ingotCopper", 'r', "itemRubber")); + GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ic2conn, 4, 5), " g ", "rgr", 'g', "ingotGold", 'r', "itemRubber")); + GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ic2conn, 4, 7), " i ", "gig", "gig", 'i', "ingotIron", 'g', new ItemStack(IEContent.blockStoneDecoration, 1, BlockTypes_StoneDecoration.INSULATING_GLASS.getMeta()))); + GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ic2conn, 2, 9), " c ", "grg", "grg", 'r', "itemRubber", 'c', glassCable, 'g', new ItemStack(IEContent.blockStoneDecoration, 1, BlockTypes_StoneDecoration.INSULATING_GLASS.getMeta()))); + //WIRES + RecipeSorter.register("industrialwires:coilLength", RecipeCoilLength.class, Category.SHAPELESS, "after:forge:shapelessore"); + for (int i = 0;i() { + + @Override + public RecipeQuery[] getQueriedInputs(RecipeCoilLength recipe, ItemStack[] in) { + List ret = new ArrayList<>(); + for (int i = 0;i outputs = ImmersiveNetHandler.INSTANCE.getConnections(worldObj, Utils.toCC(this)); + if(outputs == null || outputs.size() == 0) { + if(type == limitType || type == null) + this.limitType = null; + } + this.markDirty(); + if(worldObj != null) { + IBlockState state = worldObj.getBlockState(pos); + worldObj.notifyBlockUpdate(pos, state,state, 3); + } + } @Override public void readCustomNBT(NBTTagCompound nbt, boolean descPacket) { diff --git a/src/main/java/malte0811/industrialWires/client/ClientEventHandler.java b/src/main/java/malte0811/industrialWires/client/ClientEventHandler.java index aac838b..80fda81 100644 --- a/src/main/java/malte0811/industrialWires/client/ClientEventHandler.java +++ b/src/main/java/malte0811/industrialWires/client/ClientEventHandler.java @@ -4,6 +4,7 @@ import blusunrize.immersiveengineering.api.Lib; import blusunrize.immersiveengineering.client.ClientUtils; import blusunrize.immersiveengineering.common.util.ItemNBTHelper; import malte0811.industrialWires.IndustrialWires; +import malte0811.industrialWires.items.ItemIC2Coil; import malte0811.industrialWires.wires.IC2Wiretype; import net.minecraft.client.resources.I18n; import net.minecraft.entity.player.EntityPlayer; @@ -20,19 +21,23 @@ public class ClientEventHandler { if(ClientUtils.mc().thePlayer!=null && e.getType() == RenderGameOverlayEvent.ElementType.TEXT) { EntityPlayer player = ClientUtils.mc().thePlayer; - for(EnumHand hand : EnumHand.values()) + for(EnumHand hand : EnumHand.values()) { if(player.getHeldItem(hand)!=null) { ItemStack equipped = player.getHeldItem(hand); if(OreDictionary.itemMatches(new ItemStack(IndustrialWires.coil, 1, OreDictionary.WILDCARD_VALUE), equipped, false)) { + int color = IC2Wiretype.IC2_TYPES[equipped.getItemDamage()].getColour(null); + String s = I18n.format(IndustrialWires.MODID+".desc.wireLength", ItemIC2Coil.getLength(equipped)); + ClientUtils.font().drawString(s, e.getResolution().getScaledWidth()/2 - ClientUtils.font().getStringWidth(s)/2, e.getResolution().getScaledHeight()-GuiIngameForge.left_height-40, color, true); if(ItemNBTHelper.hasKey(equipped, "linkingPos")) { int[] link = ItemNBTHelper.getIntArray(equipped, "linkingPos"); if(link!=null&&link.length>3) { - String s = I18n.format(Lib.DESC_INFO+"attachedTo", link[1],link[2],link[3]); - ClientUtils.font().drawString(s, e.getResolution().getScaledWidth()/2 - ClientUtils.font().getStringWidth(s)/2, e.getResolution().getScaledHeight()-GuiIngameForge.left_height-20, IC2Wiretype.IC2_TYPES[2].getColour(null), true); + s = I18n.format(Lib.DESC_INFO+"attachedTo", link[1],link[2],link[3]); + ClientUtils.font().drawString(s, e.getResolution().getScaledWidth()/2 - ClientUtils.font().getStringWidth(s)/2, e.getResolution().getScaledHeight()-GuiIngameForge.left_height-20, color, true); } } } } + } } } } diff --git a/src/main/java/malte0811/industrialWires/client/ClientProxy.java b/src/main/java/malte0811/industrialWires/client/ClientProxy.java index e5088b5..0642e91 100644 --- a/src/main/java/malte0811/industrialWires/client/ClientProxy.java +++ b/src/main/java/malte0811/industrialWires/client/ClientProxy.java @@ -1,6 +1,7 @@ package malte0811.industrialWires.client; import java.util.Locale; +import java.util.Random; import com.google.common.collect.ImmutableMap; @@ -8,6 +9,8 @@ import blusunrize.immersiveengineering.api.ManualHelper; import blusunrize.immersiveengineering.client.models.smart.ConnLoader; import blusunrize.lib.manual.ManualInstance; import blusunrize.lib.manual.ManualPages; +import blusunrize.lib.manual.ManualPages.PositionedItemStack; +import ic2.api.item.IC2Items; import malte0811.industrialWires.CommonProxy; import malte0811.industrialWires.IndustrialWires; import malte0811.industrialWires.items.ItemIC2Coil; @@ -50,8 +53,13 @@ public class ClientProxy extends CommonProxy { ConnLoader.textureReplacements.put("ic2_conn_hv", ImmutableMap.of("#immersiveengineering:blocks/connector_connectorHV", IndustrialWires.MODID+":blocks/ic2_connHV")); ConnLoader.baseModels.put("ic2_relay_hv", new ResourceLocation("immersiveengineering:block/connector/relayHV.obj")); - ConnLoader.textureReplacements.put("ic2_relay_hv", ImmutableMap.of("#immersiveengineering:blocks/connector_connectorHV", - IndustrialWires.MODID+":blocks/ic2_relayHV")); + + ConnLoader.baseModels.put("ic2_conn_glass", new ResourceLocation("immersiveengineering:block/connector/connectorHV.obj")); + ConnLoader.textureReplacements.put("ic2_conn_glass", ImmutableMap.of("#immersiveengineering:blocks/connector_connectorHV", + IndustrialWires.MODID+":blocks/ic2_connGlass")); + ConnLoader.baseModels.put("ic2_relay_glass", new ResourceLocation("immersiveengineering:block/connector/relayHV.obj")); + ConnLoader.textureReplacements.put("ic2_relay_glass", ImmutableMap.of("#immersiveengineering:blocks/connector_relayHV", + IndustrialWires.MODID+":blocks/ic2_relayGlass")); for(int meta = 0; meta < ItemIC2Coil.subNames.length; meta++) { ResourceLocation loc = new ResourceLocation(IndustrialWires.MODID, "ic2wireCoil/" + ItemIC2Coil.subNames[meta]); @@ -82,10 +90,45 @@ public class ClientProxy extends CommonProxy { public void postInit() { super.postInit(); ManualInstance m = ManualHelper.getManual(); + PositionedItemStack[][] wireRecipes = new PositionedItemStack[3][10]; + int xBase = 15; + ItemStack tinCable = IC2Items.getItem("cable", "type:tin,insulation:0"); + for (int i = 0;i<3;i++) { + for (int j = 0;j<3;j++) { + wireRecipes[0][3*i+j] = new PositionedItemStack(tinCable.copy(), 18*i+xBase, 18*j); + } + } + ItemStack tmp = new ItemStack(IndustrialWires.coil); + ItemIC2Coil.setLength(tmp, 9); + wireRecipes[0][9] = new PositionedItemStack(tmp, 18*4+xBase, 18); + Random r = new Random(); + for (int i = 1;i<3;i++) { + int lengthSum = 0; + for (int j1 = 0;j1<3;j1++) { + for (int j2 = 0;j2<3;j2++) { + if (r.nextBoolean()) { + // cable + lengthSum++; + wireRecipes[i][3*j1+j2] = new PositionedItemStack(tinCable.copy(), 18*j1+xBase, 18*j2); + } else { + // wire coil + int length = r.nextInt(99)+1; + tmp = new ItemStack(IndustrialWires.coil); + ItemIC2Coil.setLength(tmp, length); + wireRecipes[i][3*j1+j2] = new PositionedItemStack(tmp, 18*j1+xBase, 18*j2); + lengthSum+=length; + } + } + } + tmp = new ItemStack(IndustrialWires.coil); + ItemIC2Coil.setLength(tmp, lengthSum); + wireRecipes[i][9] = new PositionedItemStack(tmp, 18*4+xBase, 18); + } m.addEntry("industrialWires.all", "industrialWires", - new ManualPages.CraftingMulti(m, "industrialWires.all0", new ItemStack(IndustrialWires.coil, 1, 0), new ItemStack(IndustrialWires.coil, 1, 1), new ItemStack(IndustrialWires.coil, 1, 2), new ItemStack(IndustrialWires.coil, 1, 3)), - new ManualPages.CraftingMulti(m, "industrialWires.all1", new ItemStack(IndustrialWires.ic2conn, 1, 0), new ItemStack(IndustrialWires.ic2conn, 1, 1), new ItemStack(IndustrialWires.ic2conn, 1, 2), new ItemStack(IndustrialWires.ic2conn, 1, 3), - new ItemStack(IndustrialWires.ic2conn, 1, 4), new ItemStack(IndustrialWires.ic2conn, 1, 5), new ItemStack(IndustrialWires.ic2conn, 1, 6), new ItemStack(IndustrialWires.ic2conn, 1, 7)) + new ManualPages.CraftingMulti(m, "industrialWires.all0", new ItemStack(IndustrialWires.ic2conn, 1, 0), new ItemStack(IndustrialWires.ic2conn, 1, 1), new ItemStack(IndustrialWires.ic2conn, 1, 2), new ItemStack(IndustrialWires.ic2conn, 1, 3), + new ItemStack(IndustrialWires.ic2conn, 1, 4), new ItemStack(IndustrialWires.ic2conn, 1, 5), new ItemStack(IndustrialWires.ic2conn, 1, 6), new ItemStack(IndustrialWires.ic2conn, 1, 7)), + new ManualPages.Text(m, "industrialWires.all1"), + new ManualPages.CraftingMulti(m, "industrialWires.all2", (Object[])wireRecipes) ); } } diff --git a/src/main/java/malte0811/industrialWires/crafting/RecipeCoilLength.java b/src/main/java/malte0811/industrialWires/crafting/RecipeCoilLength.java new file mode 100644 index 0000000..27b576f --- /dev/null +++ b/src/main/java/malte0811/industrialWires/crafting/RecipeCoilLength.java @@ -0,0 +1,76 @@ +package malte0811.industrialWires.crafting; + +import malte0811.industrialWires.IndustrialWires; +import malte0811.industrialWires.items.ItemIC2Coil; +import net.minecraft.inventory.InventoryCrafting; +import net.minecraft.item.ItemStack; +import net.minecraft.item.crafting.IRecipe; +import net.minecraft.world.World; +import net.minecraftforge.oredict.OreDictionary; + +public class RecipeCoilLength implements IRecipe { + public final ItemStack coil; + public final ItemStack cable; + final int maxLength; + public RecipeCoilLength(int meta) { + coil = new ItemStack(IndustrialWires.coil, 1, meta); + cable = ItemIC2Coil.getUninsulatedCable(coil); + maxLength = ItemIC2Coil.getMaxWireLength(coil); + } + + @Override + public boolean matches(InventoryCrafting inv, World worldIn) { + int l = getLength(inv); + return l>0; + } + + @Override + public ItemStack getCraftingResult(InventoryCrafting inv) { + ItemStack ret = new ItemStack(IndustrialWires.coil, 1, coil.getItemDamage()); + ItemIC2Coil.setLength(ret, Math.min(maxLength, getLength(inv))); + return ret; + } + + @Override + public int getRecipeSize() { + return 0; + } + + @Override + public ItemStack getRecipeOutput() { + return null; + } + + @Override + public ItemStack[] getRemainingItems(InventoryCrafting inv) { + ItemStack[] ret = new ItemStack[inv.getSizeInventory()]; + int length = Math.min(getLength(inv), maxLength); + for (int i = 0;i0;i++) { + ItemStack curr = inv.getStackInSlot(i); + if (OreDictionary.itemMatches(curr, coil, false)) { + length-=ItemIC2Coil.getLength(curr); + if (length<0) { + ret[i] = new ItemStack(IndustrialWires.coil, 1); + ItemIC2Coil.setLength(ret[i], -length); + } + } else if (OreDictionary.itemMatches(curr, cable, false)) { + length--; + } + } + return ret; + } + private int getLength(InventoryCrafting inv) { + int cableLength = 0; + for (int i = 0;i subItems) { for (int i = 0;i list, boolean adv) { + list.add(I18n.format(IndustrialWires.MODID+".desc.wireLength", getLength(stack))); + list.add(I18n.format(IndustrialWires.MODID+".desc.recipe")); if(stack.getTagCompound()!=null && stack.getTagCompound().hasKey("linkingPos")) { int[] link = stack.getTagCompound().getIntArray("linkingPos"); if(link!=null&&link.length>3) { @@ -67,10 +74,13 @@ public class ItemIC2Coil extends Item implements IWireCoil{ } } - //copied from "vanilla" IE @Override public EnumActionResult onItemUseFirst(ItemStack stack, EntityPlayer player, World world, BlockPos pos, EnumFacing side, float hitX, float hitY, float hitZ, EnumHand hand) { if(!world.isRemote) { + if (stack.stackSize>1) { + player.addChatMessage(new TextComponentTranslation(IndustrialWires.MODID+".chat.stackSize")); + return EnumActionResult.FAIL; + } TileEntity tileEntity = world.getTileEntity(pos); if(tileEntity instanceof IImmersiveConnectable && ((IImmersiveConnectable)tileEntity).canConnect()) { TargetingInfo target = new TargetingInfo(side, hitX,hitY,hitZ); @@ -125,25 +135,35 @@ public class ItemIC2Coil extends Item implements IWireCoil{ ignore.addAll(nodeLink.getIgnored(nodeHere)); boolean canSee = Utils.rayTraceForFirst(rtOff0, rtOff1, world, ignore)==null; if(canSee) { - TargetingInfo targetLink = TargetingInfo.readFromNBT(stack.getTagCompound()); - ImmersiveNetHandler.INSTANCE.addConnection(world, Utils.toCC(nodeHere), Utils.toCC(nodeLink), (int)Math.sqrt(distanceSq), type); + int lengthOnStack = getLength(stack); + int length = (int)Math.sqrt(distanceSq); + if (length<=lengthOnStack) { + TargetingInfo targetLink = TargetingInfo.readFromNBT(stack.getTagCompound()); + ImmersiveNetHandler.INSTANCE.addConnection(world, Utils.toCC(nodeHere), Utils.toCC(nodeLink), length, type); - nodeHere.connectCable(type, target, nodeLink); - nodeLink.connectCable(type, targetLink, nodeHere); - IESaveData.setDirty(world.provider.getDimension()); - player.addStat(IEAchievements.connectWire); + nodeHere.connectCable(type, target, nodeLink); + nodeLink.connectCable(type, targetLink, nodeHere); + IESaveData.setDirty(world.provider.getDimension()); + player.addStat(IEAchievements.connectWire); - if(!player.capabilities.isCreativeMode) { - stack.stackSize--; + if(!player.capabilities.isCreativeMode) { + if (lengthYou use them exactly as you would use wires from Immersive Engineering. Each wire transfers as much EU as the corresponding cable would, -ie.manual.entry.industrialWires.all1=so attaching a connector to a power source that would destroy the cable will destroy the connector. \ No newline at end of file +ie.manual.entry.industrialWires.all0=Wires from the IndustrialWires company allow you to transfer energy like you can with cables from the IndustrialCraft2 company.
You use them exactly as you would use wires from Immersive Engineering. Each wire transfers as much EU as the corresponding cable would, so +ie.manual.entry.industrialWires.all1=attaching a connector to a power source that would destroy the cable will destroy the connector.
The wire coils for the IC2 cable are different from the Immersive Engineering wire coils in that longer connections use up more wire: The coils are crafted by placing any combination of uninsulated IC2 cables and the corresponding wire coils in a crafting grid. The next page shows some examples of valid recipes and their outputs. The uninsulated +ie.manual.entry.industrialWires.all2=tin cables can be replaced by uninsulated copper, gold or HV cables or by glass fiber cable to craft the other coils. \ No newline at end of file diff --git a/src/main/resources/assets/industrialwires/models/item/ic2wireCoil/glass.json b/src/main/resources/assets/industrialwires/models/item/ic2wireCoil/glass.json new file mode 100644 index 0000000..1e1c1b3 --- /dev/null +++ b/src/main/resources/assets/industrialwires/models/item/ic2wireCoil/glass.json @@ -0,0 +1,6 @@ +{ + "parent":"item/generated", + "textures": { + "layer0":"industrialwires:items/ic2_wireGlass" + } +} diff --git a/src/main/resources/assets/industrialwires/textures/blocks/ic2_connGlass.png b/src/main/resources/assets/industrialwires/textures/blocks/ic2_connGlass.png new file mode 100644 index 0000000..56b755b Binary files /dev/null and b/src/main/resources/assets/industrialwires/textures/blocks/ic2_connGlass.png differ diff --git a/src/main/resources/assets/industrialwires/textures/blocks/ic2_relayGlass.png b/src/main/resources/assets/industrialwires/textures/blocks/ic2_relayGlass.png new file mode 100644 index 0000000..20fd1ba Binary files /dev/null and b/src/main/resources/assets/industrialwires/textures/blocks/ic2_relayGlass.png differ diff --git a/src/main/resources/assets/industrialwires/textures/blocks/ic2_relayHV.png b/src/main/resources/assets/industrialwires/textures/blocks/ic2_relayHV.png deleted file mode 100644 index 5253719..0000000 Binary files a/src/main/resources/assets/industrialwires/textures/blocks/ic2_relayHV.png and /dev/null differ diff --git a/src/main/resources/assets/industrialwires/textures/items/ic2_wireGlass.png b/src/main/resources/assets/industrialwires/textures/items/ic2_wireGlass.png new file mode 100644 index 0000000..3463db1 Binary files /dev/null and b/src/main/resources/assets/industrialwires/textures/items/ic2_wireGlass.png differ diff --git a/src/main/resources/assets/industrialwires/textures/items/ic2_wireHV.png b/src/main/resources/assets/industrialwires/textures/items/ic2_wireHV.png index 95e9953..c6f898b 100644 Binary files a/src/main/resources/assets/industrialwires/textures/items/ic2_wireHV.png and b/src/main/resources/assets/industrialwires/textures/items/ic2_wireHV.png differ