2022-12-22 17:22:45 +01:00
|
|
|
package com.eloraam.redpower;
|
|
|
|
|
|
|
|
import com.eloraam.redpower.core.CoreLib;
|
|
|
|
import com.eloraam.redpower.core.CoverLib;
|
|
|
|
import com.eloraam.redpower.core.CraftLib;
|
|
|
|
import com.eloraam.redpower.core.RedPowerLib;
|
|
|
|
import com.eloraam.redpower.core.RenderLib;
|
|
|
|
import com.eloraam.redpower.core.TileCovered;
|
|
|
|
import com.eloraam.redpower.wiring.MicroPlacementJacket;
|
|
|
|
import com.eloraam.redpower.wiring.MicroPlacementWire;
|
|
|
|
import com.eloraam.redpower.wiring.RenderRedwire;
|
|
|
|
import com.eloraam.redpower.wiring.TileBluewire;
|
|
|
|
import com.eloraam.redpower.wiring.TileCable;
|
|
|
|
import com.eloraam.redpower.wiring.TileInsulatedWire;
|
|
|
|
import com.eloraam.redpower.wiring.TileRedwire;
|
|
|
|
import com.eloraam.redpower.wiring.TileWiring;
|
|
|
|
import cpw.mods.fml.client.registry.ClientRegistry;
|
|
|
|
import cpw.mods.fml.common.FMLCommonHandler;
|
|
|
|
import cpw.mods.fml.common.Mod;
|
|
|
|
import cpw.mods.fml.common.Mod.EventHandler;
|
|
|
|
import cpw.mods.fml.common.Mod.Instance;
|
|
|
|
import cpw.mods.fml.common.event.FMLInitializationEvent;
|
|
|
|
import cpw.mods.fml.common.event.FMLPostInitializationEvent;
|
|
|
|
import cpw.mods.fml.common.event.FMLPreInitializationEvent;
|
|
|
|
import cpw.mods.fml.common.eventhandler.SubscribeEvent;
|
|
|
|
import cpw.mods.fml.common.registry.GameRegistry;
|
|
|
|
import cpw.mods.fml.relauncher.Side;
|
|
|
|
import cpw.mods.fml.relauncher.SideOnly;
|
|
|
|
import net.minecraft.client.renderer.texture.TextureMap;
|
|
|
|
import net.minecraft.init.Blocks;
|
|
|
|
import net.minecraft.init.Items;
|
|
|
|
import net.minecraft.item.ItemStack;
|
|
|
|
import net.minecraft.util.IIcon;
|
|
|
|
import net.minecraftforge.client.event.TextureStitchEvent.Pre;
|
|
|
|
import net.minecraftforge.common.MinecraftForge;
|
|
|
|
|
|
|
|
@Mod(
|
2023-01-12 16:43:10 +01:00
|
|
|
modid = "RedPowerWiring",
|
|
|
|
name = "RedPower Wiring",
|
|
|
|
version = "2.0pr6",
|
|
|
|
dependencies = "required-after:RedPowerBase"
|
2022-12-22 17:22:45 +01:00
|
|
|
)
|
|
|
|
public class RedPowerWiring {
|
2023-01-12 16:43:10 +01:00
|
|
|
@Instance("RedPowerWiring")
|
|
|
|
public static RedPowerWiring instance;
|
|
|
|
@SideOnly(Side.CLIENT)
|
|
|
|
public static IIcon redwireTop;
|
|
|
|
@SideOnly(Side.CLIENT)
|
|
|
|
public static IIcon redwireFace;
|
|
|
|
@SideOnly(Side.CLIENT)
|
|
|
|
public static IIcon bundledTop;
|
|
|
|
@SideOnly(Side.CLIENT)
|
|
|
|
public static IIcon bundledFace;
|
|
|
|
@SideOnly(Side.CLIENT)
|
|
|
|
public static IIcon powerTop;
|
|
|
|
@SideOnly(Side.CLIENT)
|
|
|
|
public static IIcon powerFace;
|
|
|
|
@SideOnly(Side.CLIENT)
|
|
|
|
public static IIcon highPowerTop;
|
|
|
|
@SideOnly(Side.CLIENT)
|
|
|
|
public static IIcon highPowerFace;
|
|
|
|
@SideOnly(Side.CLIENT)
|
|
|
|
public static IIcon jumboSides;
|
|
|
|
@SideOnly(Side.CLIENT)
|
|
|
|
public static IIcon jumboTop;
|
|
|
|
@SideOnly(Side.CLIENT)
|
|
|
|
public static IIcon jumboCent;
|
|
|
|
@SideOnly(Side.CLIENT)
|
|
|
|
public static IIcon jumboCentSide;
|
|
|
|
@SideOnly(Side.CLIENT)
|
|
|
|
public static IIcon jumboEnd;
|
|
|
|
@SideOnly(Side.CLIENT)
|
|
|
|
public static IIcon jumboCorners;
|
|
|
|
@SideOnly(Side.CLIENT)
|
|
|
|
public static IIcon redwireCableOff;
|
|
|
|
@SideOnly(Side.CLIENT)
|
|
|
|
public static IIcon redwireCableOn;
|
|
|
|
@SideOnly(Side.CLIENT)
|
|
|
|
public static IIcon bluewireCable;
|
|
|
|
@SideOnly(Side.CLIENT)
|
|
|
|
public static IIcon bundledCable;
|
|
|
|
public static IIcon[] insulatedTop = new IIcon[16];
|
|
|
|
public static IIcon[] insulatedFaceOff = new IIcon[16];
|
|
|
|
public static IIcon[] insulatedFaceOn = new IIcon[16];
|
|
|
|
public static IIcon[] bundledColTop = new IIcon[16];
|
|
|
|
public static IIcon[] bundledColFace = new IIcon[16];
|
2022-12-22 17:22:45 +01:00
|
|
|
|
2023-01-12 16:43:10 +01:00
|
|
|
@EventHandler
|
|
|
|
public void preInit(FMLPreInitializationEvent event) {
|
|
|
|
if (FMLCommonHandler.instance().getSide().isClient()) {
|
|
|
|
MinecraftForge.EVENT_BUS.register(instance);
|
|
|
|
}
|
|
|
|
}
|
2022-12-22 17:22:45 +01:00
|
|
|
|
2023-01-12 16:43:10 +01:00
|
|
|
@EventHandler
|
|
|
|
public void load(FMLInitializationEvent event) {
|
|
|
|
initJacketRecipes();
|
|
|
|
setupWires();
|
|
|
|
if (FMLCommonHandler.instance().getSide().isClient()) {
|
|
|
|
this.registerRenderers();
|
|
|
|
}
|
|
|
|
}
|
2022-12-22 17:22:45 +01:00
|
|
|
|
2023-01-12 16:43:10 +01:00
|
|
|
@EventHandler
|
|
|
|
public void postInit(FMLPostInitializationEvent event) {}
|
2022-12-22 17:22:45 +01:00
|
|
|
|
2023-01-12 16:43:10 +01:00
|
|
|
private static void initJacketRecipes() {
|
|
|
|
CoverLib.addMaterialHandler(material -> {
|
2022-12-22 17:22:45 +01:00
|
|
|
if (!CoverLib.isTransparent(material)) {
|
2023-01-12 16:43:10 +01:00
|
|
|
GameRegistry.addRecipe(
|
|
|
|
new ItemStack(RedPowerBase.blockMicro, 4, 16384 + material),
|
|
|
|
new Object[] { "SSS",
|
|
|
|
"SRS",
|
|
|
|
"SSS",
|
|
|
|
'S',
|
|
|
|
new ItemStack(RedPowerBase.blockMicro, 1, material),
|
|
|
|
'R',
|
|
|
|
RedPowerBase.itemIngotRed }
|
|
|
|
);
|
|
|
|
GameRegistry.addRecipe(
|
|
|
|
new ItemStack(RedPowerBase.blockMicro, 1, 16640 + material),
|
|
|
|
new Object[] { "SSS",
|
|
|
|
"SCS",
|
|
|
|
"SSS",
|
|
|
|
'S',
|
|
|
|
new ItemStack(RedPowerBase.blockMicro, 1, material),
|
|
|
|
'C',
|
|
|
|
new ItemStack(RedPowerBase.blockMicro, 1, 768) }
|
|
|
|
);
|
|
|
|
GameRegistry.addRecipe(
|
|
|
|
new ItemStack(RedPowerBase.blockMicro, 4, 16896 + material),
|
|
|
|
new Object[] { "SSS",
|
|
|
|
"SBS",
|
|
|
|
"SSS",
|
|
|
|
'S',
|
|
|
|
new ItemStack(RedPowerBase.blockMicro, 1, material),
|
|
|
|
'B',
|
|
|
|
RedPowerBase.itemIngotBlue }
|
|
|
|
);
|
|
|
|
CraftLib.addAlloyResult(
|
|
|
|
CoreLib.copyStack(RedPowerBase.itemIngotRed, 1),
|
|
|
|
new ItemStack(RedPowerBase.blockMicro, 4, 16384 + material)
|
|
|
|
);
|
|
|
|
CraftLib.addAlloyResult(
|
|
|
|
CoreLib.copyStack(RedPowerBase.itemIngotRed, 5),
|
|
|
|
new ItemStack(RedPowerBase.blockMicro, 8, 16640 + material)
|
|
|
|
);
|
|
|
|
CraftLib.addAlloyResult(
|
|
|
|
CoreLib.copyStack(RedPowerBase.itemIngotBlue, 1),
|
|
|
|
new ItemStack(RedPowerBase.blockMicro, 4, 16896 + material)
|
|
|
|
);
|
2022-12-22 17:22:45 +01:00
|
|
|
}
|
2023-01-12 16:43:10 +01:00
|
|
|
});
|
|
|
|
}
|
2022-12-22 17:22:45 +01:00
|
|
|
|
2023-01-12 16:43:10 +01:00
|
|
|
public static void setupWires() {
|
|
|
|
GameRegistry.registerTileEntity(TileRedwire.class, "Redwire");
|
|
|
|
GameRegistry.registerTileEntity(TileInsulatedWire.class, "InsRedwire");
|
|
|
|
GameRegistry.registerTileEntity(TileCable.class, "RedCable");
|
|
|
|
GameRegistry.registerTileEntity(TileCovered.class, "Covers");
|
|
|
|
GameRegistry.registerTileEntity(TileBluewire.class, "Bluewire");
|
|
|
|
MicroPlacementWire wre = new MicroPlacementWire();
|
|
|
|
RedPowerBase.blockMicro.registerPlacement(1, wre);
|
|
|
|
RedPowerBase.blockMicro.registerPlacement(2, wre);
|
|
|
|
RedPowerBase.blockMicro.registerPlacement(3, wre);
|
|
|
|
RedPowerBase.blockMicro.registerPlacement(5, wre);
|
|
|
|
MicroPlacementJacket jkt = new MicroPlacementJacket();
|
|
|
|
RedPowerBase.blockMicro.registerPlacement(64, jkt);
|
|
|
|
RedPowerBase.blockMicro.registerPlacement(65, jkt);
|
|
|
|
RedPowerBase.blockMicro.registerPlacement(66, jkt);
|
|
|
|
RedPowerBase.blockMicro.addTileEntityMapping(1, TileRedwire::new);
|
|
|
|
RedPowerBase.blockMicro.addTileEntityMapping(2, TileInsulatedWire::new);
|
|
|
|
RedPowerBase.blockMicro.addTileEntityMapping(3, TileCable::new);
|
|
|
|
RedPowerBase.blockMicro.addTileEntityMapping(5, TileBluewire::new);
|
|
|
|
GameRegistry.addRecipe(
|
|
|
|
new ItemStack(RedPowerBase.blockMicro, 12, 256),
|
|
|
|
new Object[] { "R", "R", "R", 'R', RedPowerBase.itemIngotRed }
|
|
|
|
);
|
|
|
|
CraftLib.addAlloyResult(
|
|
|
|
RedPowerBase.itemIngotRed, new ItemStack(RedPowerBase.blockMicro, 4, 256)
|
|
|
|
);
|
|
|
|
CraftLib.addAlloyResult(
|
|
|
|
CoreLib.copyStack(RedPowerBase.itemIngotRed, 5),
|
|
|
|
new ItemStack(RedPowerBase.blockMicro, 8, 768)
|
|
|
|
);
|
|
|
|
GameRegistry.addRecipe(
|
|
|
|
new ItemStack(RedPowerBase.blockMicro, 12, 1280),
|
|
|
|
new Object[] {
|
|
|
|
"WBW", "WBW", "WBW", 'B', RedPowerBase.itemIngotBlue, 'W', Blocks.wool }
|
|
|
|
);
|
|
|
|
CraftLib.addAlloyResult(
|
|
|
|
RedPowerBase.itemIngotBlue, new ItemStack(RedPowerBase.blockMicro, 4, 1280)
|
|
|
|
);
|
|
|
|
GameRegistry.addShapelessRecipe(
|
|
|
|
new ItemStack(RedPowerBase.blockMicro, 1, 1281),
|
|
|
|
new Object[] { new ItemStack(RedPowerBase.blockMicro, 1, 1280), Blocks.wool }
|
|
|
|
);
|
|
|
|
CraftLib.addAlloyResult(
|
|
|
|
RedPowerBase.itemIngotBlue, new ItemStack(RedPowerBase.blockMicro, 4, 1281)
|
|
|
|
);
|
2022-12-22 17:22:45 +01:00
|
|
|
|
2023-01-12 16:43:10 +01:00
|
|
|
for (int color = 0; color < 16; ++color) {
|
|
|
|
GameRegistry.addRecipe(
|
|
|
|
new ItemStack(RedPowerBase.blockMicro, 12, 512 + color),
|
|
|
|
new Object[] { "WRW",
|
|
|
|
"WRW",
|
|
|
|
"WRW",
|
|
|
|
'R',
|
|
|
|
RedPowerBase.itemIngotRed,
|
|
|
|
'W',
|
|
|
|
new ItemStack(Blocks.wool, 1, color) }
|
|
|
|
);
|
2022-12-22 17:22:45 +01:00
|
|
|
|
2023-01-12 16:43:10 +01:00
|
|
|
for (int j = 0; j < 16; ++j) {
|
|
|
|
if (color != j) {
|
|
|
|
GameRegistry.addShapelessRecipe(
|
|
|
|
new ItemStack(RedPowerBase.blockMicro, 1, 512 + color),
|
|
|
|
new Object[] { new ItemStack(RedPowerBase.blockMicro, 1, 512 + j),
|
|
|
|
new ItemStack(Items.dye, 1, 15 - color) }
|
|
|
|
);
|
|
|
|
GameRegistry.addShapelessRecipe(
|
|
|
|
new ItemStack(RedPowerBase.blockMicro, 1, 769 + color),
|
|
|
|
new Object[] { new ItemStack(RedPowerBase.blockMicro, 1, 769 + j),
|
|
|
|
new ItemStack(Items.dye, 1, 15 - color) }
|
|
|
|
);
|
|
|
|
}
|
2022-12-22 17:22:45 +01:00
|
|
|
}
|
|
|
|
|
2023-01-12 16:43:10 +01:00
|
|
|
CraftLib.addAlloyResult(
|
|
|
|
RedPowerBase.itemIngotRed,
|
|
|
|
new ItemStack(RedPowerBase.blockMicro, 4, 512 + color)
|
|
|
|
);
|
|
|
|
GameRegistry.addRecipe(
|
|
|
|
new ItemStack(RedPowerBase.blockMicro, 2, 768),
|
|
|
|
new Object[] { "SWS",
|
|
|
|
"WWW",
|
|
|
|
"SWS",
|
|
|
|
'W',
|
|
|
|
new ItemStack(RedPowerBase.blockMicro, 1, 512 + color),
|
|
|
|
'S',
|
|
|
|
Items.string }
|
|
|
|
);
|
|
|
|
GameRegistry.addShapelessRecipe(
|
|
|
|
new ItemStack(RedPowerBase.blockMicro, 1, 769 + color),
|
|
|
|
new Object[] { new ItemStack(RedPowerBase.blockMicro, 1, 768),
|
|
|
|
new ItemStack(Items.dye, 1, 15 - color),
|
|
|
|
Items.paper }
|
|
|
|
);
|
|
|
|
CraftLib.addAlloyResult(
|
|
|
|
CoreLib.copyStack(RedPowerBase.itemIngotRed, 5),
|
|
|
|
new ItemStack(RedPowerBase.blockMicro, 8, 769 + color)
|
|
|
|
);
|
|
|
|
}
|
2022-12-22 17:22:45 +01:00
|
|
|
|
2023-01-12 16:43:10 +01:00
|
|
|
for (int i = 0; i < 16; ++i) {
|
|
|
|
if (i != 11) {
|
|
|
|
CraftLib.addShapelessOreRecipe(
|
|
|
|
new ItemStack(RedPowerBase.blockMicro, 1, 523),
|
|
|
|
new ItemStack(RedPowerBase.blockMicro, 1, 512 + i),
|
|
|
|
"dyeBlue"
|
|
|
|
);
|
|
|
|
CraftLib.addShapelessOreRecipe(
|
|
|
|
new ItemStack(RedPowerBase.blockMicro, 1, 780),
|
|
|
|
new ItemStack(RedPowerBase.blockMicro, 1, 769 + i),
|
|
|
|
"dyeBlue"
|
|
|
|
);
|
|
|
|
}
|
|
|
|
}
|
2022-12-22 17:22:45 +01:00
|
|
|
|
2023-01-12 16:43:10 +01:00
|
|
|
CraftLib.addShapelessOreRecipe(
|
|
|
|
new ItemStack(RedPowerBase.blockMicro, 1, 780),
|
|
|
|
new ItemStack(RedPowerBase.blockMicro, 1, 768),
|
|
|
|
"dyeBlue",
|
|
|
|
Items.paper
|
|
|
|
);
|
|
|
|
RedPowerLib.addCompatibleMapping(0, 1);
|
2022-12-22 17:22:45 +01:00
|
|
|
|
2023-01-12 16:43:10 +01:00
|
|
|
for (int i = 0; i < 16; ++i) {
|
|
|
|
RedPowerLib.addCompatibleMapping(0, 2 + i);
|
|
|
|
RedPowerLib.addCompatibleMapping(1, 2 + i);
|
|
|
|
RedPowerLib.addCompatibleMapping(65, 2 + i);
|
2022-12-22 17:22:45 +01:00
|
|
|
|
2023-01-12 16:43:10 +01:00
|
|
|
for (int j = 0; j < 16; ++j) {
|
|
|
|
RedPowerLib.addCompatibleMapping(19 + j, 2 + i);
|
|
|
|
}
|
2022-12-22 17:22:45 +01:00
|
|
|
|
2023-01-12 16:43:10 +01:00
|
|
|
RedPowerLib.addCompatibleMapping(18, 2 + i);
|
|
|
|
RedPowerLib.addCompatibleMapping(18, 19 + i);
|
|
|
|
}
|
2022-12-22 17:22:45 +01:00
|
|
|
|
2023-01-12 16:43:10 +01:00
|
|
|
RedPowerLib.addCompatibleMapping(0, 65);
|
|
|
|
RedPowerLib.addCompatibleMapping(1, 65);
|
|
|
|
RedPowerLib.addCompatibleMapping(64, 65);
|
|
|
|
RedPowerLib.addCompatibleMapping(64, 67);
|
|
|
|
RedPowerLib.addCompatibleMapping(65, 67);
|
|
|
|
RedPowerLib.addCompatibleMapping(66, 67);
|
|
|
|
}
|
2022-12-22 17:22:45 +01:00
|
|
|
|
2023-01-12 16:43:10 +01:00
|
|
|
@SideOnly(Side.CLIENT)
|
|
|
|
public void registerRenderers() {
|
|
|
|
RenderLib.setDefaultRenderer(RedPowerBase.blockMicro, 8, RenderRedwire::new);
|
|
|
|
ClientRegistry.bindTileEntitySpecialRenderer(
|
|
|
|
TileWiring.class, new RenderRedwire(RedPowerBase.blockMicro)
|
|
|
|
);
|
|
|
|
}
|
2022-12-22 17:22:45 +01:00
|
|
|
|
2023-01-12 16:43:10 +01:00
|
|
|
@SideOnly(Side.CLIENT)
|
|
|
|
@SubscribeEvent
|
|
|
|
public void onTextureStitch(Pre evt) {
|
|
|
|
TextureMap map = evt.map;
|
|
|
|
if (map.getTextureType() == 0) {
|
|
|
|
redwireTop = map.registerIcon("rpwiring:redwireTop");
|
|
|
|
redwireFace = map.registerIcon("rpwiring:redwireFace");
|
|
|
|
bundledTop = map.registerIcon("rpwiring:bundledTop");
|
|
|
|
bundledFace = map.registerIcon("rpwiring:bundledFace");
|
|
|
|
powerTop = map.registerIcon("rpwiring:powerTop");
|
|
|
|
powerFace = map.registerIcon("rpwiring:powerFace");
|
|
|
|
highPowerTop = map.registerIcon("rpwiring:highPowerTop");
|
|
|
|
highPowerFace = map.registerIcon("rpwiring:highPowerFace");
|
|
|
|
jumboSides = map.registerIcon("rpwiring:jumboSides");
|
|
|
|
jumboTop = map.registerIcon("rpwiring:jumboTop");
|
|
|
|
jumboCent = map.registerIcon("rpwiring:jumboCent");
|
|
|
|
jumboCentSide = map.registerIcon("rpwiring:jumboCentSide");
|
|
|
|
jumboEnd = map.registerIcon("rpwiring:jumboEnd");
|
|
|
|
jumboCorners = map.registerIcon("rpwiring:jumboCorners");
|
|
|
|
redwireCableOff = map.registerIcon("rpwiring:redwireCableOff");
|
|
|
|
redwireCableOn = map.registerIcon("rpwiring:redwireCableOn");
|
|
|
|
bluewireCable = map.registerIcon("rpwiring:bluewireCable");
|
|
|
|
bundledCable = map.registerIcon("rpwiring:bundledCable");
|
2022-12-22 17:22:45 +01:00
|
|
|
|
2023-01-12 16:43:10 +01:00
|
|
|
for (int col = 0; col < 16; ++col) {
|
|
|
|
insulatedTop[col] = map.registerIcon("rpwiring:insulatedTop/" + col);
|
|
|
|
insulatedFaceOff[col]
|
|
|
|
= map.registerIcon("rpwiring:insulatedFaceOff/" + col);
|
|
|
|
insulatedFaceOn[col]
|
|
|
|
= map.registerIcon("rpwiring:insulatedFaceOn/" + col);
|
|
|
|
bundledColTop[col] = map.registerIcon("rpwiring:bundledColTop/" + col);
|
|
|
|
bundledColFace[col] = map.registerIcon("rpwiring:bundledColFace/" + col);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
2022-12-22 17:22:45 +01:00
|
|
|
}
|