redpower/src/main/java/com/eloraam/redpower/RedPowerWiring.java

271 lines
12 KiB
Java

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(
modid = "RedPowerWiring",
name = "RedPower Wiring",
version = "2.0pr6",
dependencies = "required-after:RedPowerBase"
)
public class RedPowerWiring {
@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];
@EventHandler
public void preInit(FMLPreInitializationEvent event) {
if (FMLCommonHandler.instance().getSide().isClient()) {
MinecraftForge.EVENT_BUS.register(instance);
}
}
@EventHandler
public void load(FMLInitializationEvent event) {
initJacketRecipes();
setupWires();
if (FMLCommonHandler.instance().getSide().isClient()) {
this.registerRenderers();
}
}
@EventHandler
public void postInit(FMLPostInitializationEvent event) {
}
private static void initJacketRecipes() {
CoverLib.addMaterialHandler(
material -> {
if (!CoverLib.isTransparent(material)) {
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));
}
}
);
}
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));
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)}
);
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)}
);
}
}
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));
}
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");
}
}
CraftLib.addShapelessOreRecipe(new ItemStack(RedPowerBase.blockMicro, 1, 780), new ItemStack(RedPowerBase.blockMicro, 1, 768), "dyeBlue", Items.paper);
RedPowerLib.addCompatibleMapping(0, 1);
for(int i = 0; i < 16; ++i) {
RedPowerLib.addCompatibleMapping(0, 2 + i);
RedPowerLib.addCompatibleMapping(1, 2 + i);
RedPowerLib.addCompatibleMapping(65, 2 + i);
for(int j = 0; j < 16; ++j) {
RedPowerLib.addCompatibleMapping(19 + j, 2 + i);
}
RedPowerLib.addCompatibleMapping(18, 2 + i);
RedPowerLib.addCompatibleMapping(18, 19 + i);
}
RedPowerLib.addCompatibleMapping(0, 65);
RedPowerLib.addCompatibleMapping(1, 65);
RedPowerLib.addCompatibleMapping(64, 65);
RedPowerLib.addCompatibleMapping(64, 67);
RedPowerLib.addCompatibleMapping(65, 67);
RedPowerLib.addCompatibleMapping(66, 67);
}
@SideOnly(Side.CLIENT)
public void registerRenderers() {
RenderLib.setDefaultRenderer(RedPowerBase.blockMicro, 8, RenderRedwire::new);
ClientRegistry.bindTileEntitySpecialRenderer(TileWiring.class, new RenderRedwire(RedPowerBase.blockMicro));
}
@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");
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);
}
}
}
}