diff --git a/src/main/java/techreborn/Core.java b/src/main/java/techreborn/Core.java index a69609772..50e8ebbd8 100644 --- a/src/main/java/techreborn/Core.java +++ b/src/main/java/techreborn/Core.java @@ -16,6 +16,7 @@ import techreborn.config.ConfigTechReborn; import techreborn.init.ModBlocks; import techreborn.init.ModFluids; import techreborn.init.ModItems; +import techreborn.init.ModParts; import techreborn.init.ModRecipes; import techreborn.lib.ModInfo; import techreborn.packets.PacketHandler; @@ -68,6 +69,8 @@ public class Core { ModFluids.init(); // Register ModItems ModItems.init(); + //Multiparts + ModParts.init(); // Recipes StopWatch watch = new StopWatch(); watch.start(); diff --git a/src/main/java/techreborn/client/render/RenderCablePart.java b/src/main/java/techreborn/client/render/RenderCablePart.java index c2dbbeaf6..bfdec4f27 100644 --- a/src/main/java/techreborn/client/render/RenderCablePart.java +++ b/src/main/java/techreborn/client/render/RenderCablePart.java @@ -2,31 +2,62 @@ package techreborn.client.render; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.block.Block; +import net.minecraft.client.renderer.RenderBlocks; +import net.minecraft.client.renderer.Tessellator; import net.minecraft.util.IIcon; import net.minecraftforge.common.util.ForgeDirection; import techreborn.client.IconSupplier; import techreborn.lib.Functions; import techreborn.lib.vecmath.Vecs3d; -import techreborn.partSystem.QLib.ModLib2QLib; +import techreborn.lib.vecmath.Vecs3dCube; import techreborn.partSystem.parts.CablePart; -import uk.co.qmunity.lib.client.render.RenderHelper; public class RenderCablePart { + + + public static void renderBox(Vecs3dCube cube, Block block, Tessellator tessellator, RenderBlocks renderblocks, IIcon texture, Double xD, Double yD, double zD, float thickness) { + block.setBlockBounds((float) cube.getMinX(), (float) cube.getMinY(), (float) cube.getMinZ(), (float) cube.getMaxX() + thickness, (float) cube.getMaxY() + thickness, (float) cube.getMaxZ() + thickness); + renderblocks.setRenderBoundsFromBlock(block); + tessellator.setColorOpaque_F(0.5F, 0.5F, 0.5F); + renderblocks.renderFaceYNeg(block, xD, yD, zD, texture); + tessellator.setColorOpaque_F(1.0F, 1.0F, 1.0F); + renderblocks.renderFaceYPos(block, xD, yD, zD, texture); + tessellator.setColorOpaque_F(0.8F, 0.8F, 0.8F); + renderblocks.renderFaceZNeg(block, xD, yD, zD, texture); + renderblocks.renderFaceZPos(block, xD, yD, zD, texture); + tessellator.setColorOpaque_F(0.6F, 0.6F, 0.6F); + renderblocks.renderFaceXNeg(block, xD, yD, zD, texture); + renderblocks.renderFaceXPos(block, xD, yD, zD, texture); + } + + @SideOnly(Side.CLIENT) - public static boolean renderStatic(Vecs3d translation, RenderHelper renderer, int pass, CablePart part) { - IIcon icon = getIconFromType(part.type); - renderer.renderBox(ModLib2QLib.convert(part.boundingBoxes[6]), icon); - for (ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) { - if (part.connectedSides.get(dir) != null) - renderer.renderBox(ModLib2QLib.convert(part.boundingBoxes[Functions.getIntDirFromDirection(dir)]), icon); + public static boolean renderStatic(Vecs3d translation, int pass, CablePart part) { + Tessellator tessellator = Tessellator.instance; + IIcon texture = getIconFromType(part.type); + RenderBlocks renderblocks = RenderBlocks.getInstance(); + double xD = part.xCoord; + double yD = part.yCoord; + double zD = part.zCoord; + Block block = part.getBlockType(); + tessellator.setBrightness(block.getMixedBrightnessForBlock(part.getWorld(), part.getX(), part.getY(), part.getZ())); + renderBox(part.boundingBoxes[6], block, tessellator, renderblocks, texture, xD, yD, zD, 0F); + for (ForgeDirection direction : ForgeDirection.values()) { + if (part.connectedSides.get(direction) != null) { + renderBox(part.boundingBoxes[Functions.getIntDirFromDirection(direction)], block, tessellator, renderblocks, texture, xD, yD, zD, 0f); } + } + block.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 1.0F, 1.0F); + renderblocks.setRenderBoundsFromBlock(block); return true; } + @SideOnly(Side.CLIENT) - public static IIcon getIconFromType(int cableType){ + public static IIcon getIconFromType(int cableType) { IIcon p = null; - switch(cableType) { + switch (cableType) { case 0: p = IconSupplier.insulatedCopperCable; break; diff --git a/src/main/java/techreborn/compat/CompatManager.java b/src/main/java/techreborn/compat/CompatManager.java index 374e8055a..82fffa324 100644 --- a/src/main/java/techreborn/compat/CompatManager.java +++ b/src/main/java/techreborn/compat/CompatManager.java @@ -2,7 +2,6 @@ package techreborn.compat; import cpw.mods.fml.common.Loader; import techreborn.compat.ee3.EmcValues; -import techreborn.compat.qLib.QLib; import techreborn.compat.recipes.*; import techreborn.compat.waila.CompatModuleWaila; @@ -21,7 +20,6 @@ public class CompatManager { registerCompact(RecipesBuildcraft.class, "BuildCraft|Core"); registerCompact(RecipesThermalExpansion.class, "ThermalExpansion"); registerCompact(EmcValues.class, "EE3"); - registerCompact(QLib.class, "qmunitylib"); registerCompact(RecipesNatura.class, "Natura"); registerCompact(RecipesBiomesOPlenty.class, "BiomesOPlenty"); registerCompact(RecipesThaumcraft.class, "Thaumcraft"); diff --git a/src/main/java/techreborn/compat/qLib/QLib.java b/src/main/java/techreborn/compat/qLib/QLib.java deleted file mode 100644 index f2fecfc9a..000000000 --- a/src/main/java/techreborn/compat/qLib/QLib.java +++ /dev/null @@ -1,30 +0,0 @@ -package techreborn.compat.qLib; - -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.event.FMLServerStartingEvent; -import techreborn.compat.ICompatModule; -import techreborn.init.ModParts; - -public class QLib implements ICompatModule { - @Override - public void preInit(FMLPreInitializationEvent event) { - - } - - @Override - public void init(FMLInitializationEvent event) { - ModParts.init(); - } - - @Override - public void postInit(FMLPostInitializationEvent event) { - - } - - @Override - public void serverStarting(FMLServerStartingEvent event) { - - } -} diff --git a/src/main/java/techreborn/partSystem/ICustomHighlight.java b/src/main/java/techreborn/partSystem/ICustomHighlight.java index ac6aecfd3..29cecfe1a 100644 --- a/src/main/java/techreborn/partSystem/ICustomHighlight.java +++ b/src/main/java/techreborn/partSystem/ICustomHighlight.java @@ -1,14 +1,14 @@ package techreborn.partSystem; -import java.util.ArrayList; - import net.minecraft.entity.player.EntityPlayer; import net.minecraft.util.AxisAlignedBB; import net.minecraft.world.World; +import java.util.ArrayList; + public interface ICustomHighlight { - ArrayList getBoxes(World world, int x, int y, int z, - EntityPlayer player); + ArrayList getBoxes(World world, int x, int y, int z, + EntityPlayer player); } diff --git a/src/main/java/techreborn/partSystem/IModPart.java b/src/main/java/techreborn/partSystem/IModPart.java index 06753d9b0..b7c728cbe 100644 --- a/src/main/java/techreborn/partSystem/IModPart.java +++ b/src/main/java/techreborn/partSystem/IModPart.java @@ -4,17 +4,16 @@ package techreborn.partSystem; -import java.util.List; - +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.entity.Entity; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.world.World; import techreborn.lib.vecmath.Vecs3d; import techreborn.lib.vecmath.Vecs3dCube; -import uk.co.qmunity.lib.client.render.RenderHelper; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; + +import java.util.List; /** * This is based of @@ -25,93 +24,93 @@ import cpw.mods.fml.relauncher.SideOnly; */ public interface IModPart { - /** - * Adds all of this part's collision boxes to the list. These boxes can - * depend on the entity that's colliding with them. - */ - public void addCollisionBoxesToList(List boxes, Entity entity); + /** + * Adds all of this part's collision boxes to the list. These boxes can + * depend on the entity that's colliding with them. + */ + public void addCollisionBoxesToList(List boxes, Entity entity); - /** - * Gets this part's selection boxes. - */ - public List getSelectionBoxes(); + /** + * Gets this part's selection boxes. + */ + public List getSelectionBoxes(); - /** - * Gets this part's occlusion boxes. - */ - public List getOcclusionBoxes(); + /** + * Gets this part's occlusion boxes. + */ + public List getOcclusionBoxes(); - /** - * Renders this part dynamically (every render tick). - */ - @SideOnly(Side.CLIENT) - public void renderDynamic(Vecs3d translation, double delta); + /** + * Renders this part dynamically (every render tick). + */ + @SideOnly(Side.CLIENT) + public void renderDynamic(Vecs3d translation, double delta); - /** - * Renders this part statically. A tessellator has alredy started drawing.
- * Only called when there's a block/lighting/render update in the chunk this - * part is in. - */ - @SideOnly(Side.CLIENT) - public boolean renderStatic(Vecs3d translation, RenderHelper renderHelper, int pass); + /** + * Renders this part statically. A tessellator has alredy started drawing.
+ * Only called when there's a block/lighting/render update in the chunk this + * part is in. + */ + @SideOnly(Side.CLIENT) + public boolean renderStatic(Vecs3d translation, int pass); - /** - * Writes the part's data to an NBT tag, which is saved with the game data. - */ - public void writeToNBT(NBTTagCompound tag); + /** + * Writes the part's data to an NBT tag, which is saved with the game data. + */ + public void writeToNBT(NBTTagCompound tag); - /** - * Reads the part's data from an NBT tag, which was stored in the game data. - */ - public void readFromNBT(NBTTagCompound tag); + /** + * Reads the part's data from an NBT tag, which was stored in the game data. + */ + public void readFromNBT(NBTTagCompound tag); - /** - * Gets the itemstack that places this part. - */ - public ItemStack getItem(); + /** + * Gets the itemstack that places this part. + */ + public ItemStack getItem(); - /** - * Gets the name of this part. - */ - public String getName(); + /** + * Gets the name of this part. + */ + public String getName(); - /** - * Gets the world of this part. - */ - public World getWorld(); + /** + * Gets the world of this part. + */ + public World getWorld(); - /** - * This is the item texture eg: "network:cable" - */ - public String getItemTextureName(); + /** + * This is the item texture eg: "network:cable" + */ + public String getItemTextureName(); - /** - * Gets the X cord of this part. - */ - public int getX(); + /** + * Gets the X cord of this part. + */ + public int getX(); - /** - * Gets the Y cord of this part. - */ - public int getY(); + /** + * Gets the Y cord of this part. + */ + public int getY(); - /** - * Gets the Z cord of this part. - */ - public int getZ(); + /** + * Gets the Z cord of this part. + */ + public int getZ(); - /** - * Called every tick - */ - public void tick(); + /** + * Called every tick + */ + public void tick(); - /** - * Called when a block or part has been changed. Can be used for cables to - * check nearby blocks - */ - public void nearByChange(); + /** + * Called when a block or part has been changed. Can be used for cables to + * check nearby blocks + */ + public void nearByChange(); - public void onAdded(); + public void onAdded(); - public void onRemoved(); + public void onRemoved(); } diff --git a/src/main/java/techreborn/partSystem/IPartProvider.java b/src/main/java/techreborn/partSystem/IPartProvider.java index 4621f3fff..d9cd993f0 100644 --- a/src/main/java/techreborn/partSystem/IPartProvider.java +++ b/src/main/java/techreborn/partSystem/IPartProvider.java @@ -13,20 +13,20 @@ import techreborn.lib.vecmath.Vecs3dCube; public interface IPartProvider { - public String modID(); + public String modID(); - public void registerPart(); + public void registerPart(); - public boolean checkOcclusion(World world, Location location, - Vecs3dCube cube); + public boolean checkOcclusion(World world, Location location, + Vecs3dCube cube); - public boolean hasPart(World world, Location location, String name); + public boolean hasPart(World world, Location location, String name); - public boolean placePart(ItemStack item, EntityPlayer player, World world, - int x, int y, int z, int side, float hitX, float hitY, float hitZ, - ModPart modPart); + public boolean placePart(ItemStack item, EntityPlayer player, World world, + int x, int y, int z, int side, float hitX, float hitY, float hitZ, + ModPart modPart); - public boolean isTileFromProvider(TileEntity tileEntity); + public boolean isTileFromProvider(TileEntity tileEntity); public IModPart getPartFromWorld(World world, Location location, String name); } diff --git a/src/main/java/techreborn/partSystem/ModPart.java b/src/main/java/techreborn/partSystem/ModPart.java index 9a31427f3..a18234a8f 100644 --- a/src/main/java/techreborn/partSystem/ModPart.java +++ b/src/main/java/techreborn/partSystem/ModPart.java @@ -13,83 +13,83 @@ import techreborn.lib.Location; */ public abstract class ModPart extends TileEntity implements IModPart { - /** - * The world of the part - */ - public World world; + /** + * The world of the part + */ + public World world; - /** - * The location of the part - */ - public Location location; + /** + * The location of the part + */ + public Location location; - /** - * This is the world - */ - @Override - public World getWorld() { + /** + * This is the world + */ + @Override + public World getWorld() { - return world; - } + return world; + } - /** - * This sets the world Don't use this unless you know what you are doing. - */ - public void setWorld(World world) { - this.world = world; - setWorldObj(world); - } + /** + * This sets the world Don't use this unless you know what you are doing. + */ + public void setWorld(World world) { + this.world = world; + setWorldObj(world); + } - /** - * Gets the x position in the world - */ - @Override - public int getX() { - return location.getX(); - } + /** + * Gets the x position in the world + */ + @Override + public int getX() { + return location.getX(); + } - /** - * Gets the y position in the world - */ - @Override - public int getY() { - return location.getY(); - } + /** + * Gets the y position in the world + */ + @Override + public int getY() { + return location.getY(); + } - /** - * Gets the z position in the world - */ - @Override - public int getZ() { - return location.getZ(); - } + /** + * Gets the z position in the world + */ + @Override + public int getZ() { + return location.getZ(); + } - /** - * Gets the location of the part - */ - public Location getLocation() { - return location; - } + /** + * Gets the location of the part + */ + public Location getLocation() { + return location; + } - /** - * Sets the x position in the world - */ - public void setLocation(Location location) { - this.location = location; - this.xCoord = location.getX(); - this.yCoord = location.getY(); - this.zCoord = location.getZ(); - } + /** + * Sets the x position in the world + */ + public void setLocation(Location location) { + this.location = location; + this.xCoord = location.getX(); + this.yCoord = location.getY(); + this.zCoord = location.getZ(); + } - @Override - public World getWorldObj() { - return getWorld(); - } + @Override + public World getWorldObj() { + return getWorld(); + } - @Override - public void setWorldObj(World p_145834_1_) { - super.setWorldObj(p_145834_1_); - } + @Override + public void setWorldObj(World p_145834_1_) { + super.setWorldObj(p_145834_1_); + } @Override public String getItemTextureName() { diff --git a/src/main/java/techreborn/partSystem/ModPartItem.java b/src/main/java/techreborn/partSystem/ModPartItem.java index 0939cd76e..2668ba05e 100644 --- a/src/main/java/techreborn/partSystem/ModPartItem.java +++ b/src/main/java/techreborn/partSystem/ModPartItem.java @@ -4,8 +4,6 @@ package techreborn.partSystem; -import java.lang.reflect.InvocationTargetException; - import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; @@ -14,35 +12,37 @@ import net.minecraftforge.common.util.ForgeDirection; import techreborn.partSystem.parts.CablePart; import uk.co.qmunity.lib.ref.Names; +import java.lang.reflect.InvocationTargetException; + public class ModPartItem extends Item { - ModPart modPart; + ModPart modPart; - public ModPartItem(ModPart part) { - modPart = part; - setUnlocalizedName(Names.Unlocalized.Items.MULTIPART); - } + public ModPartItem(ModPart part) { + modPart = part; + setUnlocalizedName(Names.Unlocalized.Items.MULTIPART); + } - @Override - public boolean onItemUse(ItemStack item, EntityPlayer player, World world, - int x, int y, int z, int face, float x_, float y_, float z_) { - ForgeDirection dir = ForgeDirection.getOrientation(face); - if(ModPartUtils.hasPart(world, x + dir.offsetX, y + dir.offsetY, z + dir.offsetZ, modPart.getName())){ - x = x + dir.offsetX; - y = y + dir.offsetY; - z = z + dir.offsetZ; - } - if(ModPartUtils.hasPart(world, x, y, z, modPart.getName())){ - return false; - } - if (ModPartRegistry.masterProvider != null) { - try { - if(modPart instanceof CablePart){ + @Override + public boolean onItemUse(ItemStack item, EntityPlayer player, World world, + int x, int y, int z, int face, float x_, float y_, float z_) { + ForgeDirection dir = ForgeDirection.getOrientation(face); + if (ModPartUtils.hasPart(world, x + dir.offsetX, y + dir.offsetY, z + dir.offsetZ, modPart.getName())) { + x = x + dir.offsetX; + y = y + dir.offsetY; + z = z + dir.offsetZ; + } + if (ModPartUtils.hasPart(world, x, y, z, modPart.getName())) { + return false; + } + if (ModPartRegistry.masterProvider != null) { + try { + if (modPart instanceof CablePart) { if (ModPartRegistry.masterProvider.placePart(item, player, world, x, y, z, face, x_, y_, z_, modPart.getClass().getDeclaredConstructor(int.class).newInstance(((CablePart) modPart).type))) { player.swingItem(); return true; } - }else{ + } else { if (ModPartRegistry.masterProvider.placePart(item, player, world, x, y, z, face, x_, y_, z_, modPart.getClass() .newInstance())) { @@ -50,53 +50,53 @@ public class ModPartItem extends Item { return true; } } - } catch (InstantiationException e) { - e.printStackTrace(); - } catch (IllegalAccessException e) { - e.printStackTrace(); - } catch (NoSuchMethodException e) { + } catch (InstantiationException e) { + e.printStackTrace(); + } catch (IllegalAccessException e) { + e.printStackTrace(); + } catch (NoSuchMethodException e) { e.printStackTrace(); } catch (InvocationTargetException e) { e.printStackTrace(); } } { - for (IPartProvider partProvider : ModPartRegistry.providers) { - try { - if(modPart instanceof CablePart){ - try { - if (partProvider.placePart(item, player, world, x, y, z, face, x_, y_, z_, modPart.getClass().getDeclaredConstructor(int.class).newInstance(((CablePart) modPart).type))) { + for (IPartProvider partProvider : ModPartRegistry.providers) { + try { + if (modPart instanceof CablePart) { + try { + if (partProvider.placePart(item, player, world, x, y, z, face, x_, y_, z_, modPart.getClass().getDeclaredConstructor(int.class).newInstance(((CablePart) modPart).type))) { player.swingItem(); return true; - } - } catch (InvocationTargetException e) { - e.printStackTrace(); - } catch (NoSuchMethodException e) { - e.printStackTrace(); - } - } else { - if (partProvider.placePart(item, player, world, x, y, z, face, x_, y_, z_, modPart.getClass().newInstance())) { + } + } catch (InvocationTargetException e) { + e.printStackTrace(); + } catch (NoSuchMethodException e) { + e.printStackTrace(); + } + } else { + if (partProvider.placePart(item, player, world, x, y, z, face, x_, y_, z_, modPart.getClass().newInstance())) { player.swingItem(); return true; - } - } + } + } - } catch (InstantiationException e) { - e.printStackTrace(); - } catch (IllegalAccessException e) { - e.printStackTrace(); - } - } - return true; - } - } + } catch (InstantiationException e) { + e.printStackTrace(); + } catch (IllegalAccessException e) { + e.printStackTrace(); + } + } + return true; + } + } - @Override - public String getUnlocalizedName(ItemStack stack) { - return modPart.getName(); - } + @Override + public String getUnlocalizedName(ItemStack stack) { + return modPart.getName(); + } - public ModPart getModPart() { - return modPart; - } + public ModPart getModPart() { + return modPart; + } } diff --git a/src/main/java/techreborn/partSystem/ModPartRegistry.java b/src/main/java/techreborn/partSystem/ModPartRegistry.java index 460da6056..9046745b3 100644 --- a/src/main/java/techreborn/partSystem/ModPartRegistry.java +++ b/src/main/java/techreborn/partSystem/ModPartRegistry.java @@ -4,10 +4,8 @@ package techreborn.partSystem; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.Map; - +import cpw.mods.fml.common.Loader; +import cpw.mods.fml.common.registry.GameRegistry; import ic2.api.item.IC2Items; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; @@ -15,88 +13,90 @@ import techreborn.client.TechRebornCreativeTab; import techreborn.init.ModParts; import techreborn.partSystem.parts.CablePart; import techreborn.util.LogHelper; -import cpw.mods.fml.common.Loader; -import cpw.mods.fml.common.registry.GameRegistry; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; public class ModPartRegistry { - public static ArrayList parts = new ArrayList(); + public static ArrayList parts = new ArrayList(); - public static ArrayList providers = new ArrayList(); + public static ArrayList providers = new ArrayList(); - public static IPartProvider masterProvider = null; + public static IPartProvider masterProvider = null; - public static Map itemParts = new HashMap(); + public static Map itemParts = new HashMap(); - public static void registerPart(ModPart iModPart) { - parts.add(iModPart); - } + public static void registerPart(ModPart iModPart) { + parts.add(iModPart); + } - public static void addAllPartsToSystems() { - LogHelper.info("Started to load all parts"); + public static void addAllPartsToSystems() { + LogHelper.info("Started to load all parts"); - for (ModPart modPart : ModPartRegistry.parts) { - System.out.println(modPart.getName()); - Item part = new ModPartItem(modPart) - .setUnlocalizedName(modPart.getName()) - .setCreativeTab(TechRebornCreativeTab.instance) - .setTextureName(modPart.getItemTextureName()); - GameRegistry.registerItem(part, modPart.getName()); - itemParts.put(modPart.getName(), part); - if(modPart instanceof CablePart){ + for (ModPart modPart : ModPartRegistry.parts) { + System.out.println(modPart.getName()); + Item part = new ModPartItem(modPart) + .setUnlocalizedName(modPart.getName()) + .setCreativeTab(TechRebornCreativeTab.instance) + .setTextureName(modPart.getItemTextureName()); + GameRegistry.registerItem(part, modPart.getName()); + itemParts.put(modPart.getName(), part); + if (modPart instanceof CablePart) { GameRegistry.addShapelessRecipe(new ItemStack(part), IC2Items.getItem(CablePart.getTextureNameFromType(((CablePart) modPart).type))); ((CablePart) modPart).stack = new ItemStack(part); ModParts.stackCable.put(((CablePart) modPart).type, new ItemStack(part)); } - } + } - for (IPartProvider iPartProvider : providers) { - iPartProvider.registerPart(); - } - } + for (IPartProvider iPartProvider : providers) { + iPartProvider.registerPart(); + } + } - public static Item getItem(String string) { - for (Map.Entry entry : itemParts.entrySet()) { - if (entry.getValue().equals(string)) { - return entry.getValue(); - } - } - return null; - } + public static Item getItem(String string) { + for (Map.Entry entry : itemParts.entrySet()) { + if (entry.getValue().equals(string)) { + return entry.getValue(); + } + } + return null; + } - public static void addProvider(String className, String modid) { - if (Loader.isModLoaded(modid) || modid.equals("Minecraft")) { - try { - IPartProvider iPartProvider = null; - iPartProvider = (IPartProvider) Class.forName(className) - .newInstance(); - providers.add(iPartProvider); + public static void addProvider(String className, String modid) { + if (Loader.isModLoaded(modid) || modid.equals("Minecraft")) { + try { + IPartProvider iPartProvider = null; + iPartProvider = (IPartProvider) Class.forName(className) + .newInstance(); + providers.add(iPartProvider); //I am doing this because the qlibProvider is the most stable - if(modid.equals("qmunitylib")){ + if (modid.equals("qmunitylib")) { masterProvider = iPartProvider; } - } catch (ClassNotFoundException e) { - e.printStackTrace(); - LogHelper.error("Failed to load " + className - + " to the part system!"); - } catch (InstantiationException e) { - e.printStackTrace(); - LogHelper.error("Failed to load " + className - + " to the part system!"); - } catch (IllegalAccessException e) { - e.printStackTrace(); - LogHelper.error("Failed to load " + className - + " to the part system!"); - } - } - } + } catch (ClassNotFoundException e) { + e.printStackTrace(); + LogHelper.error("Failed to load " + className + + " to the part system!"); + } catch (InstantiationException e) { + e.printStackTrace(); + LogHelper.error("Failed to load " + className + + " to the part system!"); + } catch (IllegalAccessException e) { + e.printStackTrace(); + LogHelper.error("Failed to load " + className + + " to the part system!"); + } + } + } - // Only use this one if it is a standalone Provider - public static void addProvider(IPartProvider iPartProvider) { - if (Loader.isModLoaded(iPartProvider.modID()) - || iPartProvider.modID().equals("Minecraft")) { - providers.add(iPartProvider); - } - } + // Only use this one if it is a standalone Provider + public static void addProvider(IPartProvider iPartProvider) { + if (Loader.isModLoaded(iPartProvider.modID()) + || iPartProvider.modID().equals("Minecraft")) { + providers.add(iPartProvider); + } + } } diff --git a/src/main/java/techreborn/partSystem/ModPartUtils.java b/src/main/java/techreborn/partSystem/ModPartUtils.java index 352667ecc..ce8b0ad47 100644 --- a/src/main/java/techreborn/partSystem/ModPartUtils.java +++ b/src/main/java/techreborn/partSystem/ModPartUtils.java @@ -4,87 +4,87 @@ package techreborn.partSystem; -import java.util.Map; - import net.minecraft.item.Item; import net.minecraft.world.World; import techreborn.lib.Location; import techreborn.lib.vecmath.Vecs3dCube; +import java.util.Map; + public class ModPartUtils { - public static boolean checkOcclusion(World world, Location location, - Vecs3dCube cube) { - if (world == null) { - return false; - } - IPartProvider partProvider = getPartProvider(world, location); - if (partProvider != null) { - return partProvider.checkOcclusion(world, location, cube); - } - return false; - } + public static boolean checkOcclusion(World world, Location location, + Vecs3dCube cube) { + if (world == null) { + return false; + } + IPartProvider partProvider = getPartProvider(world, location); + if (partProvider != null) { + return partProvider.checkOcclusion(world, location, cube); + } + return false; + } - public static boolean checkOcclusion(World world, int x, int y, int z, Vecs3dCube cube) { - return !checkOcclusion(world, new Location(x, y, z), cube); - } + public static boolean checkOcclusion(World world, int x, int y, int z, Vecs3dCube cube) { + return !checkOcclusion(world, new Location(x, y, z), cube); + } - public static boolean checkOcclusionInvert(World world, Location location, - Vecs3dCube cube) { - if (world == null) { - return false; - } - for (IPartProvider iPartProvider : ModPartRegistry.providers) { - if (!iPartProvider.checkOcclusion(world, location, cube)) { - return false; - } - } - return false; - } + public static boolean checkOcclusionInvert(World world, Location location, + Vecs3dCube cube) { + if (world == null) { + return false; + } + for (IPartProvider iPartProvider : ModPartRegistry.providers) { + if (!iPartProvider.checkOcclusion(world, location, cube)) { + return false; + } + } + return false; + } - public static boolean checkOcclusionInvert(World world, int x, int y, - int z, Vecs3dCube cube) { - return checkOcclusionInvert(world, new Location(x, y, z), cube); - } + public static boolean checkOcclusionInvert(World world, int x, int y, + int z, Vecs3dCube cube) { + return checkOcclusionInvert(world, new Location(x, y, z), cube); + } - public static boolean hasPart(World world, Location location, String name) { - for (IPartProvider iPartProvider : ModPartRegistry.providers) { - if (iPartProvider.hasPart(world, location, name)) { - return true; - } - } - return false; - } + public static boolean hasPart(World world, Location location, String name) { + for (IPartProvider iPartProvider : ModPartRegistry.providers) { + if (iPartProvider.hasPart(world, location, name)) { + return true; + } + } + return false; + } - public static boolean hasPart(World world, int x, int y, int z, String name) { - return hasPart(world, new Location(x, y, z), name); - } + public static boolean hasPart(World world, int x, int y, int z, String name) { + return hasPart(world, new Location(x, y, z), name); + } - public static Item getItemForPart(String string) { - for (Map.Entry item : ModPartRegistry.itemParts - .entrySet()) { - if (item.getValue().equals(string)) { - return item.getValue(); - } - } - return null; - } + public static Item getItemForPart(String string) { + for (Map.Entry item : ModPartRegistry.itemParts + .entrySet()) { + if (item.getValue().equals(string)) { + return item.getValue(); + } + } + return null; + } - public static IPartProvider getPartProvider(World world, Location location) { - for (IPartProvider partProvider : ModPartRegistry.providers) { - if (partProvider.isTileFromProvider(world.getTileEntity( - location.getX(), location.getY(), location.getZ()))) { - return partProvider; - } - } - return null; - } + public static IPartProvider getPartProvider(World world, Location location) { + for (IPartProvider partProvider : ModPartRegistry.providers) { + if (partProvider.isTileFromProvider(world.getTileEntity( + location.getX(), location.getY(), location.getZ()))) { + return partProvider; + } + } + return null; + } - public static IModPart getPartFromWorld(World world, Location location, String name){ + public static IModPart getPartFromWorld(World world, Location location, String name) { for (IPartProvider partProvider : ModPartRegistry.providers) { IModPart tempPart = null; tempPart = partProvider.getPartFromWorld(world, location, name); - if(tempPart != null){ + if (tempPart != null) { return tempPart; } } diff --git a/src/main/java/techreborn/partSystem/QLib/ModLib2QLib.java b/src/main/java/techreborn/partSystem/QLib/ModLib2QLib.java index b7b0c1d31..c71a8569f 100644 --- a/src/main/java/techreborn/partSystem/QLib/ModLib2QLib.java +++ b/src/main/java/techreborn/partSystem/QLib/ModLib2QLib.java @@ -4,51 +4,51 @@ package techreborn.partSystem.QLib; -import java.util.ArrayList; -import java.util.List; - import techreborn.lib.vecmath.Vecs3d; import techreborn.lib.vecmath.Vecs3dCube; import uk.co.qmunity.lib.vec.Vec3d; import uk.co.qmunity.lib.vec.Vec3dCube; +import java.util.ArrayList; +import java.util.List; + /** * Created by mark on 09/12/14. */ public class ModLib2QLib { - public static Vec3d convert(Vecs3d input) { - return new Vec3d(input.getX(), input.getY(), input.getZ()); - } + public static Vec3d convert(Vecs3d input) { + return new Vec3d(input.getX(), input.getY(), input.getZ()); + } - public static Vec3dCube convert(Vecs3dCube input) { - return new Vec3dCube(input.toAABB()); - } + public static Vec3dCube convert(Vecs3dCube input) { + return new Vec3dCube(input.toAABB()); + } - public static Vecs3d convert(Vec3d input) { - return new Vecs3d(input.getX(), input.getY(), input.getZ()); - } + public static Vecs3d convert(Vec3d input) { + return new Vecs3d(input.getX(), input.getY(), input.getZ()); + } - public static Vecs3dCube convert(Vec3dCube input) { - return new Vecs3dCube(input.toAABB()); - } + public static Vecs3dCube convert(Vec3dCube input) { + return new Vecs3dCube(input.toAABB()); + } - public static List convert(List input) { - List list = new ArrayList(); - for (Vec3dCube cube : input) { - list.add(new Vecs3dCube(cube.toAABB())); - } - return list; - } + public static List convert(List input) { + List list = new ArrayList(); + for (Vec3dCube cube : input) { + list.add(new Vecs3dCube(cube.toAABB())); + } + return list; + } - // Its got to be called becuase of some weird thing see: - // https://stackoverflow.com/questions/1998544/method-has-the-same-erasure-as-another-method-in-type - public static List convert2(List input) { - List list = new ArrayList(); - for (Vecs3dCube cube : input) { - list.add(new Vec3dCube(cube.toAABB())); - } - return list; - } + // Its got to be called becuase of some weird thing see: + // https://stackoverflow.com/questions/1998544/method-has-the-same-erasure-as-another-method-in-type + public static List convert2(List input) { + List list = new ArrayList(); + for (Vecs3dCube cube : input) { + list.add(new Vec3dCube(cube.toAABB())); + } + return list; + } } diff --git a/src/main/java/techreborn/partSystem/QLib/QModPart.java b/src/main/java/techreborn/partSystem/QLib/QModPart.java index 0e2e24857..82eb68126 100644 --- a/src/main/java/techreborn/partSystem/QLib/QModPart.java +++ b/src/main/java/techreborn/partSystem/QLib/QModPart.java @@ -4,9 +4,6 @@ package techreborn.partSystem.QLib; -import java.util.ArrayList; -import java.util.List; - import net.minecraft.client.renderer.RenderBlocks; import net.minecraft.entity.Entity; import net.minecraft.item.ItemStack; @@ -30,127 +27,130 @@ import uk.co.qmunity.lib.vec.Vec3d; import uk.co.qmunity.lib.vec.Vec3dCube; import uk.co.qmunity.lib.vec.Vec3i; +import java.util.ArrayList; +import java.util.List; + public class QModPart extends PartBase implements IPartCollidable, - IPartSelectable, IPartRenderPlacement, IPartTicking, - IPartUpdateListener { + IPartSelectable, IPartRenderPlacement, IPartTicking, + IPartUpdateListener { - ModPart iModPart; + ModPart iModPart; - public QModPart(ModPart iModPart) { - this.iModPart = iModPart; + public QModPart(ModPart iModPart) { + this.iModPart = iModPart; - } + } - @Override - public void setParent(ITilePartHolder parent) { - super.setParent(parent); - } + @Override + public void setParent(ITilePartHolder parent) { + super.setParent(parent); + } - @Override - public String getType() { - return iModPart.getName(); - } + @Override + public String getType() { + return iModPart.getName(); + } - @Override - public ItemStack getItem() { - return iModPart.getItem(); - } + @Override + public ItemStack getItem() { + return iModPart.getItem(); + } - @Override - public void addCollisionBoxesToList(List boxes, Entity entity) { - List cubes = new ArrayList(); - iModPart.addCollisionBoxesToList(cubes, entity); - for (Vecs3dCube cube : cubes) { - if (cube != null) - boxes.add(ModLib2QLib.convert(cube)); - } - } + @Override + public void addCollisionBoxesToList(List boxes, Entity entity) { + List cubes = new ArrayList(); + iModPart.addCollisionBoxesToList(cubes, entity); + for (Vecs3dCube cube : cubes) { + if (cube != null) + boxes.add(ModLib2QLib.convert(cube)); + } + } - @Override - public void renderDynamic(Vec3d translation, double delta, int pass) { - iModPart.renderDynamic(ModLib2QLib.convert(translation), delta); - } + @Override + public void renderDynamic(Vec3d translation, double delta, int pass) { + iModPart.renderDynamic(ModLib2QLib.convert(translation), delta); + } - @Override - public boolean renderStatic(Vec3i translation, RenderHelper renderer, RenderBlocks renderBlocks, int pass) { - return iModPart.renderStatic(new Vecs3d(translation.getX(), translation.getY(), translation.getZ()), renderer, pass); - } + @Override + public boolean renderStatic(Vec3i translation, RenderHelper renderer, RenderBlocks renderBlocks, int pass) { + return iModPart.renderStatic(new Vecs3d(translation.getX(), translation.getY(), translation.getZ()), pass); + } - @Override - public QMovingObjectPosition rayTrace(Vec3d start, Vec3d end) { - return RayTracer.instance().rayTraceCubes(this, start, end); - } + @Override + public QMovingObjectPosition rayTrace(Vec3d start, Vec3d end) { + return RayTracer.instance().rayTraceCubes(this, start, end); + } - @Override - public List getSelectionBoxes() { - return ModLib2QLib.convert2(iModPart.getSelectionBoxes()); - } + @Override + public List getSelectionBoxes() { + return ModLib2QLib.convert2(iModPart.getSelectionBoxes()); + } - @Override - public World getWorld() { - return getParent().getWorld(); - } + @Override + public World getWorld() { + return getParent().getWorld(); + } - @Override - public void update() { - if (iModPart.world == null || iModPart.location == null) { - iModPart.setWorld(getWorld()); - iModPart.setLocation(new Location(getX(), getY(), getZ())); - } - iModPart.tick(); - } + @Override + public void update() { + if (iModPart.world == null || iModPart.location == null) { + iModPart.setWorld(getWorld()); + iModPart.setLocation(new Location(getX(), getY(), getZ())); + } + iModPart.tick(); + } - @Override - public void onPartChanged(IPart part) { - iModPart.nearByChange(); - } + @Override + public void onPartChanged(IPart part) { + iModPart.nearByChange(); + } - @Override - public void onNeighborBlockChange() { - iModPart.nearByChange(); - } + @Override + public void onNeighborBlockChange() { + iModPart.nearByChange(); + } - @Override - public void onNeighborTileChange() { - if (iModPart.world == null || iModPart.location == null) { - iModPart.setWorld(getWorld()); - iModPart.setLocation(new Location(getX(), getY(), getZ())); - } - iModPart.nearByChange(); - } + @Override + public void onNeighborTileChange() { + if (iModPart.world == null || iModPart.location == null) { + iModPart.setWorld(getWorld()); + iModPart.setLocation(new Location(getX(), getY(), getZ())); + } + iModPart.nearByChange(); + } - @Override - public void onAdded() { + @Override + public void onAdded() { if (iModPart.world == null || iModPart.location == null) { iModPart.setWorld(getWorld()); iModPart.setLocation(new Location(getX(), getY(), getZ())); } iModPart.nearByChange(); iModPart.onAdded(); - } + } - @Override - public void onRemoved() { - iModPart.onRemoved(); - } + @Override + public void onRemoved() { + iModPart.onRemoved(); + } - @Override - public void onLoaded() { - if (iModPart.world == null || iModPart.location == null) { - iModPart.setWorld(getWorld()); - iModPart.setLocation(new Location(getX(), getY(), getZ())); - } - iModPart.nearByChange(); - } + @Override + public void onLoaded() { + if (iModPart.world == null || iModPart.location == null) { + iModPart.setWorld(getWorld()); + iModPart.setLocation(new Location(getX(), getY(), getZ())); + } + iModPart.nearByChange(); + } - @Override - public void onUnloaded() { + @Override + public void onUnloaded() { - } + } - @Override - public void onConverted() { + @Override + public void onConverted() { - } + } } diff --git a/src/main/java/techreborn/partSystem/QLib/QModPartFactory.java b/src/main/java/techreborn/partSystem/QLib/QModPartFactory.java index 6d4235da3..8ebcf5ea9 100644 --- a/src/main/java/techreborn/partSystem/QLib/QModPartFactory.java +++ b/src/main/java/techreborn/partSystem/QLib/QModPartFactory.java @@ -4,8 +4,6 @@ package techreborn.partSystem.QLib; -import java.lang.reflect.InvocationTargetException; - import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; @@ -29,62 +27,64 @@ import uk.co.qmunity.lib.tile.TileMultipart; import uk.co.qmunity.lib.vec.Vec3dCube; import uk.co.qmunity.lib.vec.Vec3i; +import java.lang.reflect.InvocationTargetException; + public class QModPartFactory implements IPartFactory, IPartProvider { - @Override - public IPart createPart(String type, boolean client) { - for (ModPart modPart : ModPartRegistry.parts) { - if (modPart.getName().equals(type)) { - try { - if(modPart instanceof CablePart){ - try { - return new QModPart(modPart.getClass().getDeclaredConstructor(int.class).newInstance(((CablePart) modPart).type)); - } catch (InvocationTargetException e) { - e.printStackTrace(); - } catch (NoSuchMethodException e) { - e.printStackTrace(); - } - } else { - return new QModPart(modPart.getClass().newInstance()); - } - } catch (InstantiationException e) { - e.printStackTrace(); - } catch (IllegalAccessException e) { - e.printStackTrace(); - } - } - } - return null; - } + @Override + public IPart createPart(String type, boolean client) { + for (ModPart modPart : ModPartRegistry.parts) { + if (modPart.getName().equals(type)) { + try { + if (modPart instanceof CablePart) { + try { + return new QModPart(modPart.getClass().getDeclaredConstructor(int.class).newInstance(((CablePart) modPart).type)); + } catch (InvocationTargetException e) { + e.printStackTrace(); + } catch (NoSuchMethodException e) { + e.printStackTrace(); + } + } else { + return new QModPart(modPart.getClass().newInstance()); + } + } catch (InstantiationException e) { + e.printStackTrace(); + } catch (IllegalAccessException e) { + e.printStackTrace(); + } + } + } + return null; + } - @Override - public boolean placePart(ItemStack item, EntityPlayer player, World world, - int x, int y, int z, int face, float x_, float y_, float z_, - ModPart modPart) { - IPart part = createPart( - item, - player, - world, - new MovingObjectPosition(x, y, z, face, Vec3 - .createVectorHelper(x + x_, y + y_, z + z_)), modPart); + @Override + public boolean placePart(ItemStack item, EntityPlayer player, World world, + int x, int y, int z, int face, float x_, float y_, float z_, + ModPart modPart) { + IPart part = createPart( + item, + player, + world, + new MovingObjectPosition(x, y, z, face, Vec3 + .createVectorHelper(x + x_, y + y_, z + z_)), modPart); - if (part == null) - return false; + if (part == null) + return false; - ForgeDirection dir = ForgeDirection.getOrientation(face); - return MultipartCompatibility.placePartInWorld(part, world, new Vec3i( - x, y, z), dir, player, item); - } + ForgeDirection dir = ForgeDirection.getOrientation(face); + return MultipartCompatibility.placePartInWorld(part, world, new Vec3i( + x, y, z), dir, player, item); + } - @Override - public boolean isTileFromProvider(TileEntity tileEntity) { - return tileEntity instanceof TileMultipart; - } + @Override + public boolean isTileFromProvider(TileEntity tileEntity) { + return tileEntity instanceof TileMultipart; + } @Override public IModPart getPartFromWorld(World world, Location location, String name) { IPart part = MultipartCompatibility.getPart(world, location.getX(), location.getY(), location.getZ(), name); - if(part != null){ - if(part instanceof QModPart){ + if (part != null) { + if (part instanceof QModPart) { return ((QModPart) part).iModPart; } } @@ -92,40 +92,40 @@ public class QModPartFactory implements IPartFactory, IPartProvider { } public String getCreatedPartType(ItemStack item, EntityPlayer player, - World world, MovingObjectPosition mop, ModPart modPart) { - return modPart.getName(); - } + World world, MovingObjectPosition mop, ModPart modPart) { + return modPart.getName(); + } - public IPart createPart(ItemStack item, EntityPlayer player, World world, - MovingObjectPosition mop, ModPart modPart) { + public IPart createPart(ItemStack item, EntityPlayer player, World world, + MovingObjectPosition mop, ModPart modPart) { - return PartRegistry.createPart( - getCreatedPartType(item, player, world, mop, modPart), - world.isRemote); - } + return PartRegistry.createPart( + getCreatedPartType(item, player, world, mop, modPart), + world.isRemote); + } - @Override - public String modID() { - return QLModInfo.MODID; - } + @Override + public String modID() { + return QLModInfo.MODID; + } - @Override - public void registerPart() { - PartRegistry.registerFactory(new QModPartFactory()); - } + @Override + public void registerPart() { + PartRegistry.registerFactory(new QModPartFactory()); + } - @Override - public boolean checkOcclusion(World world, Location location, - Vecs3dCube cube) { - return MultipartCompatibility.checkOcclusion(world, location.x, - location.y, location.z, new Vec3dCube(cube.toAABB())); - } + @Override + public boolean checkOcclusion(World world, Location location, + Vecs3dCube cube) { + return MultipartCompatibility.checkOcclusion(world, location.x, + location.y, location.z, new Vec3dCube(cube.toAABB())); + } - @Override - public boolean hasPart(World world, Location location, String name) { - if(MultipartCompatibility.getPartHolder(world, location.getX(), location.getY(), location.getZ()) == null){ - return false; - } - return MultipartCompatibility.getPart(world, location.getX(), location.getY(), location.getZ(), name) == null; - } + @Override + public boolean hasPart(World world, Location location, String name) { + if (MultipartCompatibility.getPartHolder(world, location.getX(), location.getY(), location.getZ()) == null) { + return false; + } + return MultipartCompatibility.getPart(world, location.getX(), location.getY(), location.getZ(), name) == null; + } } diff --git a/src/main/java/techreborn/partSystem/client/PartPlacementRenderer.java b/src/main/java/techreborn/partSystem/client/PartPlacementRenderer.java index 7a9015513..655f7357b 100644 --- a/src/main/java/techreborn/partSystem/client/PartPlacementRenderer.java +++ b/src/main/java/techreborn/partSystem/client/PartPlacementRenderer.java @@ -1,5 +1,8 @@ package techreborn.partSystem.client; +import cpw.mods.fml.common.eventhandler.SubscribeEvent; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.ScaledResolution; import net.minecraft.client.renderer.Tessellator; @@ -10,16 +13,11 @@ import net.minecraft.util.MovingObjectPosition; import net.minecraft.util.Vec3; import net.minecraftforge.client.event.RenderWorldLastEvent; import net.minecraftforge.common.util.ForgeDirection; - import org.lwjgl.opengl.GL11; - import techreborn.lib.Location; import techreborn.lib.vecmath.Vecs3d; import techreborn.partSystem.IModPart; import techreborn.partSystem.ModPartItem; -import cpw.mods.fml.common.eventhandler.SubscribeEvent; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; /** * This is based of @@ -31,113 +29,113 @@ import cpw.mods.fml.relauncher.SideOnly; @SideOnly(Side.CLIENT) public class PartPlacementRenderer { - private Framebuffer fb = null; - private int width = 0, height = 0; + private Framebuffer fb = null; + private int width = 0, height = 0; - @SubscribeEvent - public void onRenderTick(RenderWorldLastEvent event) { - EntityPlayer player = Minecraft.getMinecraft().thePlayer; - ItemStack item = player.getCurrentEquippedItem(); - if (item == null) - return; - if (!(item.getItem() instanceof ModPartItem)) - return; - if (Minecraft.getMinecraft().gameSettings.hideGUI - && Minecraft.getMinecraft().currentScreen == null) - return; - MovingObjectPosition mop = player.rayTrace( - player.capabilities.isCreativeMode ? 5 : 4, 0); - if (mop == null - || mop.typeOfHit != MovingObjectPosition.MovingObjectType.BLOCK) - return; - IModPart part = ((ModPartItem) item.getItem()).getModPart(); - if (part == null) - return; - ForgeDirection faceHit = ForgeDirection.getOrientation(mop.sideHit); - Location location = new Location(mop.blockX, mop.blockY, mop.blockZ); - if (fb == null || width != Minecraft.getMinecraft().displayWidth - || height != Minecraft.getMinecraft().displayHeight) { - width = Minecraft.getMinecraft().displayWidth; - height = Minecraft.getMinecraft().displayHeight; - fb = new Framebuffer(width, height, true); - } + @SubscribeEvent + public void onRenderTick(RenderWorldLastEvent event) { + EntityPlayer player = Minecraft.getMinecraft().thePlayer; + ItemStack item = player.getCurrentEquippedItem(); + if (item == null) + return; + if (!(item.getItem() instanceof ModPartItem)) + return; + if (Minecraft.getMinecraft().gameSettings.hideGUI + && Minecraft.getMinecraft().currentScreen == null) + return; + MovingObjectPosition mop = player.rayTrace( + player.capabilities.isCreativeMode ? 5 : 4, 0); + if (mop == null + || mop.typeOfHit != MovingObjectPosition.MovingObjectType.BLOCK) + return; + IModPart part = ((ModPartItem) item.getItem()).getModPart(); + if (part == null) + return; + ForgeDirection faceHit = ForgeDirection.getOrientation(mop.sideHit); + Location location = new Location(mop.blockX, mop.blockY, mop.blockZ); + if (fb == null || width != Minecraft.getMinecraft().displayWidth + || height != Minecraft.getMinecraft().displayHeight) { + width = Minecraft.getMinecraft().displayWidth; + height = Minecraft.getMinecraft().displayHeight; + fb = new Framebuffer(width, height, true); + } - GL11.glPushMatrix(); - { - Minecraft.getMinecraft().getFramebuffer().unbindFramebuffer(); - GL11.glPushMatrix(); - { - GL11.glLoadIdentity(); - fb.bindFramebuffer(true); - GL11.glClear(GL11.GL_STENCIL_BUFFER_BIT - | GL11.GL_COLOR_BUFFER_BIT | GL11.GL_DEPTH_BUFFER_BIT); - GL11.glMatrixMode(GL11.GL_MODELVIEW); - GL11.glLoadIdentity(); - GL11.glClearColor(0, 0, 0, 0); - net.minecraft.client.renderer.RenderHelper - .enableStandardItemLighting(); - GL11.glPushMatrix(); - { - Vec3 playerPos = player.getPosition(event.partialTicks); - double x = location.getX() - playerPos.xCoord - + faceHit.offsetX; - double y = location.getY() - playerPos.yCoord - + faceHit.offsetY; - double z = location.getZ() - playerPos.zCoord - + faceHit.offsetZ; - GL11.glRotated(player.rotationPitch, 1, 0, 0); - GL11.glRotated(player.rotationYaw - 180, 0, 1, 0); - GL11.glTranslated(x, y, z); - part.renderDynamic(new Vecs3d(0, 0, 0), event.partialTicks); - } - GL11.glPopMatrix(); - net.minecraft.client.renderer.RenderHelper - .disableStandardItemLighting(); - fb.unbindFramebuffer(); - } - GL11.glPopMatrix(); - Minecraft.getMinecraft().getFramebuffer().bindFramebuffer(true); - GL11.glPushMatrix(); - { - Minecraft mc = Minecraft.getMinecraft(); - ScaledResolution scaledresolution = new ScaledResolution(mc, - mc.displayWidth, mc.displayHeight); - GL11.glClear(GL11.GL_DEPTH_BUFFER_BIT); - GL11.glMatrixMode(GL11.GL_PROJECTION); - GL11.glLoadIdentity(); - GL11.glOrtho(0, scaledresolution.getScaledWidth_double(), - scaledresolution.getScaledHeight_double(), 0, 0.1, - 10000D); - GL11.glMatrixMode(GL11.GL_MODELVIEW); - GL11.glLoadIdentity(); - GL11.glTranslatef(0.0F, 0.0F, -2000.0F); - fb.bindFramebufferTexture(); - { - GL11.glDisable(GL11.GL_LIGHTING); - GL11.glEnable(GL11.GL_BLEND); - GL11.glBlendFunc(GL11.GL_SRC_ALPHA, - GL11.GL_ONE_MINUS_SRC_ALPHA); - Tessellator tessellator = Tessellator.instance; - int w = scaledresolution.getScaledWidth(); - int h = scaledresolution.getScaledHeight(); + GL11.glPushMatrix(); + { + Minecraft.getMinecraft().getFramebuffer().unbindFramebuffer(); + GL11.glPushMatrix(); + { + GL11.glLoadIdentity(); + fb.bindFramebuffer(true); + GL11.glClear(GL11.GL_STENCIL_BUFFER_BIT + | GL11.GL_COLOR_BUFFER_BIT | GL11.GL_DEPTH_BUFFER_BIT); + GL11.glMatrixMode(GL11.GL_MODELVIEW); + GL11.glLoadIdentity(); + GL11.glClearColor(0, 0, 0, 0); + net.minecraft.client.renderer.RenderHelper + .enableStandardItemLighting(); + GL11.glPushMatrix(); + { + Vec3 playerPos = player.getPosition(event.partialTicks); + double x = location.getX() - playerPos.xCoord + + faceHit.offsetX; + double y = location.getY() - playerPos.yCoord + + faceHit.offsetY; + double z = location.getZ() - playerPos.zCoord + + faceHit.offsetZ; + GL11.glRotated(player.rotationPitch, 1, 0, 0); + GL11.glRotated(player.rotationYaw - 180, 0, 1, 0); + GL11.glTranslated(x, y, z); + part.renderDynamic(new Vecs3d(0, 0, 0), event.partialTicks); + } + GL11.glPopMatrix(); + net.minecraft.client.renderer.RenderHelper + .disableStandardItemLighting(); + fb.unbindFramebuffer(); + } + GL11.glPopMatrix(); + Minecraft.getMinecraft().getFramebuffer().bindFramebuffer(true); + GL11.glPushMatrix(); + { + Minecraft mc = Minecraft.getMinecraft(); + ScaledResolution scaledresolution = new ScaledResolution(mc, + mc.displayWidth, mc.displayHeight); + GL11.glClear(GL11.GL_DEPTH_BUFFER_BIT); + GL11.glMatrixMode(GL11.GL_PROJECTION); + GL11.glLoadIdentity(); + GL11.glOrtho(0, scaledresolution.getScaledWidth_double(), + scaledresolution.getScaledHeight_double(), 0, 0.1, + 10000D); + GL11.glMatrixMode(GL11.GL_MODELVIEW); + GL11.glLoadIdentity(); + GL11.glTranslatef(0.0F, 0.0F, -2000.0F); + fb.bindFramebufferTexture(); + { + GL11.glDisable(GL11.GL_LIGHTING); + GL11.glEnable(GL11.GL_BLEND); + GL11.glBlendFunc(GL11.GL_SRC_ALPHA, + GL11.GL_ONE_MINUS_SRC_ALPHA); + Tessellator tessellator = Tessellator.instance; + int w = scaledresolution.getScaledWidth(); + int h = scaledresolution.getScaledHeight(); - tessellator.startDrawingQuads(); - tessellator.setColorRGBA_F(1, 1, 1, 0.5F); - tessellator.addVertexWithUV(w, h, 0.0D, 1.0D, 0.0D); - tessellator.addVertexWithUV(w, 0, 0.0D, 1.0D, 1.0D); - tessellator.addVertexWithUV(0, 0, 0.0D, 0.0D, 1.0D); - tessellator.addVertexWithUV(0, h, 0.0D, 0.0D, 0.0D); - tessellator.draw(); - GL11.glDisable(GL11.GL_BLEND); - GL11.glEnable(GL11.GL_LIGHTING); - } - fb.unbindFramebufferTexture(); - GL11.glDisable(GL11.GL_BLEND); - } - GL11.glPopMatrix(); - fb.framebufferClear(); - Minecraft.getMinecraft().getFramebuffer().bindFramebuffer(true); - } - GL11.glPopMatrix(); - } + tessellator.startDrawingQuads(); + tessellator.setColorRGBA_F(1, 1, 1, 0.5F); + tessellator.addVertexWithUV(w, h, 0.0D, 1.0D, 0.0D); + tessellator.addVertexWithUV(w, 0, 0.0D, 1.0D, 1.0D); + tessellator.addVertexWithUV(0, 0, 0.0D, 0.0D, 1.0D); + tessellator.addVertexWithUV(0, h, 0.0D, 0.0D, 0.0D); + tessellator.draw(); + GL11.glDisable(GL11.GL_BLEND); + GL11.glEnable(GL11.GL_LIGHTING); + } + fb.unbindFramebufferTexture(); + GL11.glDisable(GL11.GL_BLEND); + } + GL11.glPopMatrix(); + fb.framebufferClear(); + Minecraft.getMinecraft().getFramebuffer().bindFramebuffer(true); + } + GL11.glPopMatrix(); + } } diff --git a/src/main/java/techreborn/partSystem/fmp/FMPFactory.java b/src/main/java/techreborn/partSystem/fmp/FMPFactory.java index 8c754a86b..f3c0c0dba 100644 --- a/src/main/java/techreborn/partSystem/fmp/FMPFactory.java +++ b/src/main/java/techreborn/partSystem/fmp/FMPFactory.java @@ -4,9 +4,12 @@ package techreborn.partSystem.fmp; -import java.lang.reflect.InvocationTargetException; -import java.util.List; - +import codechicken.lib.vec.BlockCoord; +import codechicken.lib.vec.Cuboid6; +import codechicken.multipart.MultiPartRegistry; +import codechicken.multipart.NormallyOccludedPart; +import codechicken.multipart.TMultiPart; +import codechicken.multipart.TileMultipart; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; @@ -18,53 +21,50 @@ import techreborn.partSystem.IPartProvider; import techreborn.partSystem.ModPart; import techreborn.partSystem.ModPartRegistry; import techreborn.partSystem.parts.CablePart; -import codechicken.lib.vec.BlockCoord; -import codechicken.lib.vec.Cuboid6; -import codechicken.multipart.MultiPartRegistry; -import codechicken.multipart.NormallyOccludedPart; -import codechicken.multipart.TMultiPart; -import codechicken.multipart.TileMultipart; + +import java.lang.reflect.InvocationTargetException; +import java.util.List; /** * Created by mark on 09/12/14. */ public class FMPFactory implements MultiPartRegistry.IPartFactory, - IPartProvider { - @Override - public TMultiPart createPart(String type, boolean client) { - for (ModPart modPart : ModPartRegistry.parts) { - if (modPart.getName().equals(type)) { - try { - if(modPart instanceof CablePart){ - return new FMPModPart(modPart.getClass().getDeclaredConstructor(int.class).newInstance(((CablePart) modPart).type)); - } else { - return new FMPModPart(modPart.getClass().newInstance()); - } - } catch (InstantiationException e) { - e.printStackTrace(); - } catch (IllegalAccessException e) { - e.printStackTrace(); - } catch (NoSuchMethodException e) { - e.printStackTrace(); - } catch (InvocationTargetException e) { - e.printStackTrace(); - } - } - } - return null; - } + IPartProvider { + @Override + public TMultiPart createPart(String type, boolean client) { + for (ModPart modPart : ModPartRegistry.parts) { + if (modPart.getName().equals(type)) { + try { + if (modPart instanceof CablePart) { + return new FMPModPart(modPart.getClass().getDeclaredConstructor(int.class).newInstance(((CablePart) modPart).type)); + } else { + return new FMPModPart(modPart.getClass().newInstance()); + } + } catch (InstantiationException e) { + e.printStackTrace(); + } catch (IllegalAccessException e) { + e.printStackTrace(); + } catch (NoSuchMethodException e) { + e.printStackTrace(); + } catch (InvocationTargetException e) { + e.printStackTrace(); + } + } + } + return null; + } - public boolean placePart(ItemStack item, EntityPlayer player, World world, - int x, int y, int z, int side, float hitX, float hitY, float hitZ, - ModPart modPart) { - return new FakeFMPPlacerItem(modPart).onItemUse(item, player, world, x, - y, z, side, hitX, hitY, hitZ); - } + public boolean placePart(ItemStack item, EntityPlayer player, World world, + int x, int y, int z, int side, float hitX, float hitY, float hitZ, + ModPart modPart) { + return new FakeFMPPlacerItem(modPart).onItemUse(item, player, world, x, + y, z, side, hitX, hitY, hitZ); + } - @Override - public boolean isTileFromProvider(TileEntity tileEntity) { - return tileEntity instanceof TileMultipart; - } + @Override + public boolean isTileFromProvider(TileEntity tileEntity) { + return tileEntity instanceof TileMultipart; + } //TODO @Override @@ -73,47 +73,47 @@ public class FMPFactory implements MultiPartRegistry.IPartFactory, } @Override - public String modID() { - return "ForgeMultipart"; - } + public String modID() { + return "ForgeMultipart"; + } - @Override - public void registerPart() { - for (ModPart modPart : ModPartRegistry.parts) { - MultiPartRegistry.registerParts(new FMPFactory(), new String[] - {modPart.getName()}); - } - } + @Override + public void registerPart() { + for (ModPart modPart : ModPartRegistry.parts) { + MultiPartRegistry.registerParts(new FMPFactory(), new String[] + {modPart.getName()}); + } + } - @Override - public boolean checkOcclusion(World world, Location location, - Vecs3dCube cube) { - codechicken.multipart.TileMultipart tmp = codechicken.multipart.TileMultipart - .getOrConvertTile(world, new BlockCoord(location.getX(), - location.getY(), location.getZ())); - if (tmp == null) - return false; - return !tmp.occlusionTest(tmp.partList(), new NormallyOccludedPart( - new Cuboid6(cube.toAABB()))); - } + @Override + public boolean checkOcclusion(World world, Location location, + Vecs3dCube cube) { + codechicken.multipart.TileMultipart tmp = codechicken.multipart.TileMultipart + .getOrConvertTile(world, new BlockCoord(location.getX(), + location.getY(), location.getZ())); + if (tmp == null) + return false; + return !tmp.occlusionTest(tmp.partList(), new NormallyOccludedPart( + new Cuboid6(cube.toAABB()))); + } - @Override - public boolean hasPart(World world, Location location, String name) { - TileEntity tileEntity = world.getTileEntity(location.getX(), - location.getY(), location.getZ()); - if (tileEntity instanceof TileMultipart) { - TileMultipart mp = (TileMultipart) tileEntity; - boolean ret = false; - List t = mp.jPartList(); - for (TMultiPart p : t) { - if (ret == false) { - if (p.getType().equals(name)) { - ret = true; - } - } - } - return ret; - } - return false; - } + @Override + public boolean hasPart(World world, Location location, String name) { + TileEntity tileEntity = world.getTileEntity(location.getX(), + location.getY(), location.getZ()); + if (tileEntity instanceof TileMultipart) { + TileMultipart mp = (TileMultipart) tileEntity; + boolean ret = false; + List t = mp.jPartList(); + for (TMultiPart p : t) { + if (ret == false) { + if (p.getType().equals(name)) { + ret = true; + } + } + } + return ret; + } + return false; + } } diff --git a/src/main/java/techreborn/partSystem/fmp/FMPModPart.java b/src/main/java/techreborn/partSystem/fmp/FMPModPart.java index b034a3378..a8738bb8f 100644 --- a/src/main/java/techreborn/partSystem/fmp/FMPModPart.java +++ b/src/main/java/techreborn/partSystem/fmp/FMPModPart.java @@ -4,25 +4,8 @@ package techreborn.partSystem.fmp; -import java.util.ArrayList; -import java.util.List; - import codechicken.lib.data.MCDataInput; import codechicken.lib.data.MCDataOutput; -import net.minecraft.client.renderer.RenderBlocks; -import net.minecraft.entity.Entity; -import net.minecraft.entity.item.EntityItem; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.util.AxisAlignedBB; -import net.minecraft.world.World; -import techreborn.lib.Location; -import techreborn.lib.vecmath.Vecs3d; -import techreborn.lib.vecmath.Vecs3dCube; -import techreborn.partSystem.IPartDesc; -import techreborn.partSystem.ModPart; -import techreborn.util.LogHelper; -import uk.co.qmunity.lib.client.render.RenderHelper; import codechicken.lib.raytracer.IndexedCuboid6; import codechicken.lib.vec.Cuboid6; import codechicken.lib.vec.Vector3; @@ -33,170 +16,181 @@ import codechicken.multipart.TMultiPart; import codechicken.multipart.TSlottedPart; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; -import uk.co.qmunity.lib.vec.Vec3i; +import net.minecraft.entity.Entity; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.AxisAlignedBB; +import net.minecraft.world.World; +import techreborn.lib.Location; +import techreborn.lib.vecmath.Vecs3d; +import techreborn.lib.vecmath.Vecs3dCube; +import techreborn.partSystem.IPartDesc; +import techreborn.partSystem.ModPart; +import techreborn.util.LogHelper; + +import java.util.ArrayList; +import java.util.List; public class FMPModPart extends TMultiPart implements TSlottedPart, - JNormalOcclusion, ISidedHollowConnect { + JNormalOcclusion, ISidedHollowConnect { - ModPart iModPart; + ModPart iModPart; - public FMPModPart(ModPart iModPart) { - this.iModPart = iModPart; + public FMPModPart(ModPart iModPart) { + this.iModPart = iModPart; - } + } - @Override - public int getHollowSize(int i) { - return 0; - } + @Override + public int getHollowSize(int i) { + return 0; + } - @Override - public Iterable getOcclusionBoxes() { - List cubes = new ArrayList(); - for (Vecs3dCube c : iModPart.getOcclusionBoxes()) - cubes.add(new Cuboid6(c.toAABB())); - return cubes; - } + @Override + public Iterable getOcclusionBoxes() { + List cubes = new ArrayList(); + for (Vecs3dCube c : iModPart.getOcclusionBoxes()) + cubes.add(new Cuboid6(c.toAABB())); + return cubes; + } - @Override - public boolean occlusionTest(TMultiPart npart) { - return NormalOcclusionTest.apply(this, npart); - } + @Override + public boolean occlusionTest(TMultiPart npart) { + return NormalOcclusionTest.apply(this, npart); + } - public void addCollisionBoxesToList(List l, - AxisAlignedBB bounds, Entity entity) { - List boxes = new ArrayList(); - List boxes_ = new ArrayList(); - iModPart.addCollisionBoxesToList(boxes_, entity); - for (Vecs3dCube c : boxes_) { - Vecs3dCube cube = c.clone(); - cube.add(getX(), getY(), getZ()); - boxes.add(cube); - } - boxes_.clear(); + public void addCollisionBoxesToList(List l, + AxisAlignedBB bounds, Entity entity) { + List boxes = new ArrayList(); + List boxes_ = new ArrayList(); + iModPart.addCollisionBoxesToList(boxes_, entity); + for (Vecs3dCube c : boxes_) { + Vecs3dCube cube = c.clone(); + cube.add(getX(), getY(), getZ()); + boxes.add(cube); + } + boxes_.clear(); - for (Vecs3dCube c : boxes) { - if (c.toAABB().intersectsWith(bounds)) - l.add(c); - } - } + for (Vecs3dCube c : boxes) { + if (c.toAABB().intersectsWith(bounds)) + l.add(c); + } + } - @Override - public Iterable getCollisionBoxes() { - List cubes = new ArrayList(); - List boxes = new ArrayList(); - iModPart.addCollisionBoxesToList(boxes, null); - for (Vecs3dCube c : boxes) { - if (c != null) - cubes.add(new Cuboid6(c.toAABB())); - } + @Override + public Iterable getCollisionBoxes() { + List cubes = new ArrayList(); + List boxes = new ArrayList(); + iModPart.addCollisionBoxesToList(boxes, null); + for (Vecs3dCube c : boxes) { + if (c != null) + cubes.add(new Cuboid6(c.toAABB())); + } - return cubes; - } + return cubes; + } - @Override - public Iterable getSubParts() { - List cubes = new ArrayList(); - if (iModPart.getSelectionBoxes() != null) { - for (Vecs3dCube c : iModPart.getSelectionBoxes()) - if (c != null) - cubes.add(new IndexedCuboid6(0, new Cuboid6(c.toAABB()))); + @Override + public Iterable getSubParts() { + List cubes = new ArrayList(); + if (iModPart.getSelectionBoxes() != null) { + for (Vecs3dCube c : iModPart.getSelectionBoxes()) + if (c != null) + cubes.add(new IndexedCuboid6(0, new Cuboid6(c.toAABB()))); - if (cubes.size() == 0) - cubes.add(new IndexedCuboid6(0, new Cuboid6(0, 0, 0, 1, 1, 1))); + if (cubes.size() == 0) + cubes.add(new IndexedCuboid6(0, new Cuboid6(0, 0, 0, 1, 1, 1))); - } - return cubes; - } + } + return cubes; + } - @Override - @SideOnly(Side.CLIENT) - public void renderDynamic(Vector3 pos, float frame, int pass) { - iModPart.renderDynamic(new Vecs3d(pos.x, pos.y, pos.z), frame); - } + @Override + @SideOnly(Side.CLIENT) + public void renderDynamic(Vector3 pos, float frame, int pass) { + iModPart.renderDynamic(new Vecs3d(pos.x, pos.y, pos.z), frame); + } - @Override - public String getType() { - return iModPart.getName(); - } + @Override + public String getType() { + return iModPart.getName(); + } - @Override - public int getSlotMask() { - return 0; - } + @Override + public int getSlotMask() { + return 0; + } - public World getWorld() { - return world(); - } + public World getWorld() { + return world(); + } - public int getX() { - if (iModPart.world == null || iModPart.location == null) { - iModPart.setWorld(world()); - iModPart.setLocation(new Location(x(), y(), z())); - } - return x(); - } + public int getX() { + if (iModPart.world == null || iModPart.location == null) { + iModPart.setWorld(world()); + iModPart.setLocation(new Location(x(), y(), z())); + } + return x(); + } - public int getY() { - if (iModPart.world == null || iModPart.location == null) { - iModPart.setWorld(world()); - iModPart.setLocation(new Location(x(), y(), z())); - } - return y(); - } + public int getY() { + if (iModPart.world == null || iModPart.location == null) { + iModPart.setWorld(world()); + iModPart.setLocation(new Location(x(), y(), z())); + } + return y(); + } - public int getZ() { - if (iModPart.world == null || iModPart.location == null) { - iModPart.setWorld(world()); - iModPart.setLocation(new Location(x(), y(), z())); - } - return z(); - } + public int getZ() { + if (iModPart.world == null || iModPart.location == null) { + iModPart.setWorld(world()); + iModPart.setLocation(new Location(x(), y(), z())); + } + return z(); + } - @Override - public void onAdded() { - iModPart.setWorld(world()); - iModPart.setLocation(new Location(x(), y(), z())); - iModPart.nearByChange(); - iModPart.onAdded(); - } + @Override + public void onAdded() { + iModPart.setWorld(world()); + iModPart.setLocation(new Location(x(), y(), z())); + iModPart.nearByChange(); + iModPart.onAdded(); + } - @Override - public void update() { - if (iModPart.location != null) { - iModPart.tick(); - } - } + @Override + public void update() { + if (iModPart.location != null) { + iModPart.tick(); + } + } - @Override - public void onNeighborChanged() { - super.onNeighborChanged(); - if (iModPart.world == null || iModPart.location == null) { - iModPart.setWorld(world()); - iModPart.setLocation(new Location(x(), y(), z())); - } - iModPart.nearByChange(); - } + @Override + public void onNeighborChanged() { + super.onNeighborChanged(); + if (iModPart.world == null || iModPart.location == null) { + iModPart.setWorld(world()); + iModPart.setLocation(new Location(x(), y(), z())); + } + iModPart.nearByChange(); + } - public void onRemoved() { - iModPart.onRemoved(); - super.onRemoved(); + public void onRemoved() { + iModPart.onRemoved(); + super.onRemoved(); - } + } - @Override - public boolean renderStatic(Vector3 pos, int pass) { + @Override + public boolean renderStatic(Vector3 pos, int pass) { boolean render; - RenderHelper.instance.setRenderCoords(getWorld(), (int) pos.x, (int) pos.y, (int) pos.z); - render = iModPart.renderStatic(new Vecs3d((int) pos.x, (int) pos.y, (int) pos.z), RenderHelper.instance, pass); - RenderHelper.instance.reset(); + render = iModPart.renderStatic(new Vecs3d((int) pos.x, (int) pos.y, (int) pos.z), pass); return render; } @Override public Iterable getDrops() { List stackArrayList = new ArrayList(); - if(iModPart.getItem() != null){ + if (iModPart.getItem() != null) { stackArrayList.add(iModPart.getItem().copy()); } else { LogHelper.error("Part " + iModPart.getName() + " has a null drop"); @@ -205,20 +199,20 @@ public class FMPModPart extends TMultiPart implements TSlottedPart, } - @Override - public void onPartChanged(TMultiPart part) { - super.onPartChanged(part); - if (iModPart.world == null || iModPart.location == null) { - iModPart.setWorld(world()); - iModPart.setLocation(new Location(x(), y(), z())); - } - iModPart.nearByChange(); - } + @Override + public void onPartChanged(TMultiPart part) { + super.onPartChanged(part); + if (iModPart.world == null || iModPart.location == null) { + iModPart.setWorld(world()); + iModPart.setLocation(new Location(x(), y(), z())); + } + iModPart.nearByChange(); + } @Override public void readDesc(MCDataInput packet) { super.readDesc(packet); - if(iModPart instanceof IPartDesc){ + if (iModPart instanceof IPartDesc) { ((IPartDesc) iModPart).readDesc(packet.readNBTTagCompound()); } } @@ -226,7 +220,7 @@ public class FMPModPart extends TMultiPart implements TSlottedPart, @Override public void writeDesc(MCDataOutput packet) { super.writeDesc(packet); - if(iModPart instanceof IPartDesc){ + if (iModPart instanceof IPartDesc) { NBTTagCompound tagCompound = new NBTTagCompound(); ((IPartDesc) iModPart).writeDesc(tagCompound); packet.writeNBTTagCompound(tagCompound); diff --git a/src/main/java/techreborn/partSystem/fmp/FakeFMPPlacerItem.java b/src/main/java/techreborn/partSystem/fmp/FakeFMPPlacerItem.java index d49bc287f..e426ed6f5 100644 --- a/src/main/java/techreborn/partSystem/fmp/FakeFMPPlacerItem.java +++ b/src/main/java/techreborn/partSystem/fmp/FakeFMPPlacerItem.java @@ -4,31 +4,31 @@ package techreborn.partSystem.fmp; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.ItemStack; -import net.minecraft.world.World; -import techreborn.partSystem.ModPart; import codechicken.lib.vec.BlockCoord; import codechicken.lib.vec.Vector3; import codechicken.multipart.JItemMultiPart; import codechicken.multipart.MultiPartRegistry; import codechicken.multipart.TMultiPart; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.world.World; +import techreborn.partSystem.ModPart; /** * This item is never added into the game, it is only used to add the part to * the world. */ public class FakeFMPPlacerItem extends JItemMultiPart { - ModPart modPart; + ModPart modPart; - public FakeFMPPlacerItem(ModPart part) { - modPart = part; - } + public FakeFMPPlacerItem(ModPart part) { + modPart = part; + } - @Override - public TMultiPart newPart(ItemStack item, EntityPlayer player, World world, - BlockCoord pos, int side, Vector3 vhit) { - TMultiPart w = MultiPartRegistry.createPart(modPart.getName(), false); - return w; - } + @Override + public TMultiPart newPart(ItemStack item, EntityPlayer player, World world, + BlockCoord pos, int side, Vector3 vhit) { + TMultiPart w = MultiPartRegistry.createPart(modPart.getName(), false); + return w; + } } diff --git a/src/main/java/techreborn/partSystem/parts/CablePart.java b/src/main/java/techreborn/partSystem/parts/CablePart.java index a985eb8ef..44414f5ce 100644 --- a/src/main/java/techreborn/partSystem/parts/CablePart.java +++ b/src/main/java/techreborn/partSystem/parts/CablePart.java @@ -1,5 +1,7 @@ package techreborn.partSystem.parts; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; import ic2.api.energy.event.EnergyTileLoadEvent; import ic2.api.energy.event.EnergyTileUnloadEvent; import ic2.api.energy.tile.IEnergyConductor; @@ -7,16 +9,7 @@ import ic2.api.energy.tile.IEnergyTile; import ic2.api.item.IC2Items; import ic2.api.network.INetworkTileEntityEventListener; import ic2.core.IC2; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.entity.Entity; -import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; @@ -31,495 +24,499 @@ import techreborn.lib.vecmath.Vecs3dCube; import techreborn.partSystem.IPartDesc; import techreborn.partSystem.ModPart; import techreborn.partSystem.ModPartUtils; -import uk.co.qmunity.lib.client.render.RenderHelper; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; public class CablePart extends ModPart implements IEnergyConductor, INetworkTileEntityEventListener, IPartDesc { - public Vecs3dCube[] boundingBoxes = new Vecs3dCube[14]; - public float center = 0.6F; - public float offset = 0.10F; - public Map connectedSides; - public int ticks = 0; - protected ForgeDirection[] dirs = ForgeDirection.values(); - private boolean[] connections = new boolean[6]; - public boolean addedToEnergyNet = false; + public Vecs3dCube[] boundingBoxes = new Vecs3dCube[14]; + public float center = 0.6F; + public float offset = 0.10F; + public Map connectedSides; + public int ticks = 0; + protected ForgeDirection[] dirs = ForgeDirection.values(); + private boolean[] connections = new boolean[6]; + public boolean addedToEnergyNet = false; public ItemStack stack; - private boolean hasCheckedSinceStartup; + private boolean hasCheckedSinceStartup; - public int type = 0;//TODO save this to nbt and not use the constructor. + public int type = 0;//TODO save this to nbt and not use the constructor. @Deprecated - public CablePart(int type) { - this.type = type; + public CablePart(int type) { + this.type = type; refreshBounding(); - connectedSides = new HashMap(); - } + connectedSides = new HashMap(); + } - public CablePart(){ + public CablePart() { this(0); } - public void refreshBounding() { - float centerFirst = center - offset; - double w = getCableThickness(type) / 2; - boundingBoxes[6] = new Vecs3dCube(centerFirst - w - 0.03, centerFirst - - w - 0.08, centerFirst - w - 0.03, centerFirst + w + 0.08, - centerFirst + w + 0.04, centerFirst + w + 0.08); + public void refreshBounding() { + float centerFirst = center - offset; + double w = getCableThickness(type) / 2; + boundingBoxes[6] = new Vecs3dCube(centerFirst - w - 0.03, centerFirst + - w - 0.08, centerFirst - w - 0.03, centerFirst + w + 0.08, + centerFirst + w + 0.04, centerFirst + w + 0.08); - boundingBoxes[6] = new Vecs3dCube(centerFirst - w, centerFirst - w, - centerFirst - w, centerFirst + w, centerFirst + w, centerFirst - + w); + boundingBoxes[6] = new Vecs3dCube(centerFirst - w, centerFirst - w, + centerFirst - w, centerFirst + w, centerFirst + w, centerFirst + + w); - int i = 0; - for (ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) { - double xMin1 = (dir.offsetX < 0 ? 0.0 - : (dir.offsetX == 0 ? centerFirst - w : centerFirst + w)); - double xMax1 = (dir.offsetX > 0 ? 1.0 - : (dir.offsetX == 0 ? centerFirst + w : centerFirst - w)); + int i = 0; + for (ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) { + double xMin1 = (dir.offsetX < 0 ? 0.0 + : (dir.offsetX == 0 ? centerFirst - w : centerFirst + w)); + double xMax1 = (dir.offsetX > 0 ? 1.0 + : (dir.offsetX == 0 ? centerFirst + w : centerFirst - w)); - double yMin1 = (dir.offsetY < 0 ? 0.0 - : (dir.offsetY == 0 ? centerFirst - w : centerFirst + w)); - double yMax1 = (dir.offsetY > 0 ? 1.0 - : (dir.offsetY == 0 ? centerFirst + w : centerFirst - w)); + double yMin1 = (dir.offsetY < 0 ? 0.0 + : (dir.offsetY == 0 ? centerFirst - w : centerFirst + w)); + double yMax1 = (dir.offsetY > 0 ? 1.0 + : (dir.offsetY == 0 ? centerFirst + w : centerFirst - w)); - double zMin1 = (dir.offsetZ < 0 ? 0.0 - : (dir.offsetZ == 0 ? centerFirst - w : centerFirst + w)); - double zMax1 = (dir.offsetZ > 0 ? 1.0 - : (dir.offsetZ == 0 ? centerFirst + w : centerFirst - w)); + double zMin1 = (dir.offsetZ < 0 ? 0.0 + : (dir.offsetZ == 0 ? centerFirst - w : centerFirst + w)); + double zMax1 = (dir.offsetZ > 0 ? 1.0 + : (dir.offsetZ == 0 ? centerFirst + w : centerFirst - w)); - boundingBoxes[i] = new Vecs3dCube(xMin1, yMin1, zMin1, xMax1, - yMax1, zMax1); - i++; - } - } - - @Override - public void addCollisionBoxesToList(List boxes, Entity entity) { - for (ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) { - if (connectedSides.containsKey(dir)) - boxes.add(boundingBoxes[Functions.getIntDirFromDirection(dir)]); - } - boxes.add(boundingBoxes[6]); - } - - @Override - public List getSelectionBoxes() { - List vec3dCubeList = new ArrayList(); - for (ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) { - if (connectedSides.containsKey(dir)) - vec3dCubeList.add(boundingBoxes[Functions - .getIntDirFromDirection(dir)]); - } - vec3dCubeList.add(boundingBoxes[6]); - return vec3dCubeList; - } - - @Override - public List getOcclusionBoxes() { - List vecs3dCubesList = new ArrayList(); - - for (ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) { - if (connectedSides.containsKey(dir)) - vecs3dCubesList.add(boundingBoxes[Functions - .getIntDirFromDirection(dir)]); - } - return vecs3dCubesList; - } - - @Override - public void renderDynamic(Vecs3d translation, double delta) { - } - - @Override - public boolean renderStatic(Vecs3d translation, RenderHelper renderer, int pass) { - return RenderCablePart.renderStatic(translation, renderer, pass, this); - } - - @Override - public void writeToNBT(NBTTagCompound tag) { - writeConnectedSidesToNBT(tag); - } - - @Override - public void readFromNBT(NBTTagCompound tag) { - readFromNBT(tag); - } - - @Override - public String getName() { - return "Cable." + getNameFromType(type); - } - - @SideOnly(Side.CLIENT) - @Override - public String getItemTextureName() { - return IC2Items.getItem(getTextureNameFromType(type)).getIconIndex().getIconName(); - } - - @Override - public void tick() { - if(IC2.platform.isSimulating() && !this.addedToEnergyNet) { - MinecraftForge.EVENT_BUS.post(new EnergyTileLoadEvent(this)); - this.addedToEnergyNet = true; - nearByChange(); + boundingBoxes[i] = new Vecs3dCube(xMin1, yMin1, zMin1, xMax1, + yMax1, zMax1); + i++; } - if(worldObj != null){ - if(worldObj.getTotalWorldTime() % 40 == 0 || hasCheckedSinceStartup == false){ - checkConnectedSides(); - hasCheckedSinceStartup = true; - } - } - - } - - @Override - public void nearByChange() { - checkConnectedSides(); - } - - @Override - public void onAdded() { - checkConnections(world, getX(), getY(), getZ()); - if(IC2.platform.isSimulating()) { - MinecraftForge.EVENT_BUS.post(new EnergyTileLoadEvent(this)); - this.addedToEnergyNet = true; - nearByChange(); - } - checkConnectedSides(); } - @Override - public void onRemoved() { - if (IC2.platform.isSimulating() && this.addedToEnergyNet) { - MinecraftForge.EVENT_BUS.post(new EnergyTileUnloadEvent(this)); - this.addedToEnergyNet = false; - } - } + @Override + public void addCollisionBoxesToList(List boxes, Entity entity) { + for (ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) { + if (connectedSides.containsKey(dir)) + boxes.add(boundingBoxes[Functions.getIntDirFromDirection(dir)]); + } + boxes.add(boundingBoxes[6]); + } - @Override - public ItemStack getItem() { - return ModParts.stackCable.get(type); - } + @Override + public List getSelectionBoxes() { + List vec3dCubeList = new ArrayList(); + for (ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) { + if (connectedSides.containsKey(dir)) + vec3dCubeList.add(boundingBoxes[Functions + .getIntDirFromDirection(dir)]); + } + vec3dCubeList.add(boundingBoxes[6]); + return vec3dCubeList; + } - public boolean shouldConnectTo(TileEntity entity, ForgeDirection dir) { - if (entity == null) { - return false; - } else if (entity instanceof IEnergyTile) { - return true; - } else { - return ModPartUtils.hasPart(entity.getWorldObj(), entity.xCoord, - entity.yCoord, entity.zCoord, this.getName()); - } - } + @Override + public List getOcclusionBoxes() { + List vecs3dCubesList = new ArrayList(); - public void checkConnectedSides() { - refreshBounding(); - connectedSides = new HashMap(); - for (ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) { - int d = Functions.getIntDirFromDirection(dir); - if (world == null) { - return; - } - TileEntity te = world.getTileEntity(getX() + dir.offsetX, getY() - + dir.offsetY, getZ() + dir.offsetZ); - if (shouldConnectTo(te, dir)) { - if (ModPartUtils.checkOcclusion(getWorld(), getX(), - getY(), getZ(), boundingBoxes[d])) { - connectedSides.put(dir, te); - } - } - if(te != null){ - te.getWorldObj().markBlockForUpdate(te.xCoord, te.yCoord, te.zCoord); - } - } - checkConnections(world, getX(), getY(), getZ()); - getWorld().markBlockForUpdate(getX(), getY(), getZ()); - } + for (ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) { + if (connectedSides.containsKey(dir)) + vecs3dCubesList.add(boundingBoxes[Functions + .getIntDirFromDirection(dir)]); + } + return vecs3dCubesList; + } - public void checkConnections(World world, int x, int y, int z) { - for (int i = 0; i < 6; i++) { - ForgeDirection dir = dirs[i]; - int dx = x + dir.offsetX; - int dy = y + dir.offsetY; - int dz = z + dir.offsetZ; - connections[i] = shouldConnectTo(world.getTileEntity(dx, dy, dz), - dir); - world.func_147479_m(dx, dy, dz); - } - world.func_147479_m(x, y, z); - } + @Override + public void renderDynamic(Vecs3d translation, double delta) { + } - public double getConductionLoss() { - switch(this.type) { - case 0: - return 0.2D; - case 1: - return 0.3D; - case 2: - return 0.5D; - case 3: - return 0.45D; - case 4: - return 0.4D; - case 5: - return 1.0D; - case 6: - return 0.95D; - case 7: - return 0.9D; - case 8: - return 0.8D; - case 9: - return 0.025D; - case 10: - return 0.025D; - case 11: - return 0.5D; - case 12: - return 0.5D; - case 13: - default: - return 0.025D; - case 14: - return 0.2D; - } - } + @Override + public boolean renderStatic(Vecs3d translation, int pass) { + return RenderCablePart.renderStatic(translation, pass, this); + } - public static int getMaxCapacity(int type) { - switch(type) { - case 0: - return 128; - case 1: - return 128; - case 2: - return 512; - case 3: - return 512; - case 4: - return 512; - case 5: - return 2048; - case 6: - return 2048; - case 7: - return 2048; - case 8: - return 2048; - case 9: - return 8192; - case 10: - return 32; - case 11: - return 8192; - case 12: - return 8192; - case 13: - return 32; - case 14: - return 32; - default: - return 0; - } - } + @Override + public void writeToNBT(NBTTagCompound tag) { + writeConnectedSidesToNBT(tag); + } - public static float getCableThickness(int cableType) { - float p = 1.0F; - switch(cableType) { - case 0: - p = 6.0F; - break; - case 1: - p = 4.0F; - break; - case 2: - p = 3.0F; - break; - case 3: - p = 6.0F; - break; - case 4: - p = 6.0F; - break; - case 5: - p = 6.0F; - break; - case 6: - p = 10.0F; - break; - case 7: - p = 10.0F; - break; - case 8: - p = 12.0F; - break; - case 9: - p = 4.0F; - break; - case 10: - p = 4.0F; - break; - case 11: - p = 8.0F; - break; - case 12: - p = 8.0F; - break; - case 13: - p = 16.0F; - break; - case 14: - p = 6.0F; - } + @Override + public void readFromNBT(NBTTagCompound tag) { + readFromNBT(tag); + } - return p / 16.0F; - } + @Override + public String getName() { + return "Cable." + getNameFromType(type); + } - public static String getNameFromType(int cableType){ - String p = null; - switch(cableType) { - case 0: - p = "copperCable"; - break; - case 1: - p = "insulatedCopperCable"; - break; - case 2: - p = "goldCable"; - break; - case 3: - p = "insulatedGoldCable"; - break; - case 4: - p = "doubleInsulatedGoldCable"; - break; - case 5: - p = "ironCable"; - break; - case 6: - p = "insulatedIronCable"; - break; - case 7: - p = "doubleInsulatedIronCable"; - break; - case 8: - p = "trippleInsulatedIronCable"; - break; - case 9: - p = "glassFiberCable"; - break; - case 10: - p = "tinCable"; - break; - case 11: - p = "detectorCableBlock";//Detector - break; - case 12: - p = "splitterCableBlock";// Splitter - break; - case 13: - p = "insulatedtinCable"; - break; - case 14: - p = "unused"; // unused? - } + @SideOnly(Side.CLIENT) + @Override + public String getItemTextureName() { + return IC2Items.getItem(getTextureNameFromType(type)).getIconIndex().getIconName(); + } - return p; - } + @Override + public void tick() { + if (IC2.platform.isSimulating() && !this.addedToEnergyNet) { + MinecraftForge.EVENT_BUS.post(new EnergyTileLoadEvent(this)); + this.addedToEnergyNet = true; + nearByChange(); + } + if (worldObj != null) { + if (worldObj.getTotalWorldTime() % 40 == 0 || hasCheckedSinceStartup == false) { + checkConnectedSides(); + hasCheckedSinceStartup = true; + } + } - public static String getTextureNameFromType(int cableType){ - String p = null; - switch(cableType) { - case 0: - p = "copperCableItem"; - break; - case 1: - p = "insulatedCopperCableItem"; - break; - case 2: - p = "goldCableItem"; - break; - case 3: - p = "insulatedGoldCableItem"; - break; - case 4: - p = "doubleInsulatedGoldCableItem"; - break; - case 5: - p = "ironCableItem"; - break; - case 6: - p = "insulatedIronCableItem"; - break; - case 7: - p = "doubleInsulatedIronCableItem"; - break; - case 8: - p = "trippleInsulatedIronCableItem"; - break; - case 9: - p = "glassFiberCableItem"; - break; - case 10: - p = "tinCableItem"; - break; - case 11: - p = "detectorCableItem";//Detector - break; - case 12: - p = "splitterCableItem";// Splitter - break; - case 13: - p = "insulatedTinCableItem"; - break; - case 14: - p = "unused"; // unused? - } + } - return p; - } + @Override + public void nearByChange() { + checkConnectedSides(); + } - public double getInsulationEnergyAbsorption() { - return (double)getMaxCapacity(this.type); - } + @Override + public void onAdded() { + checkConnections(world, getX(), getY(), getZ()); + if (IC2.platform.isSimulating()) { + MinecraftForge.EVENT_BUS.post(new EnergyTileLoadEvent(this)); + this.addedToEnergyNet = true; + nearByChange(); + } + checkConnectedSides(); + } - public double getInsulationBreakdownEnergy() { - return 9001.0D; - } + @Override + public void onRemoved() { + if (IC2.platform.isSimulating() && this.addedToEnergyNet) { + MinecraftForge.EVENT_BUS.post(new EnergyTileUnloadEvent(this)); + this.addedToEnergyNet = false; + } + } - public double getConductorBreakdownEnergy() { - return (double)(getMaxCapacity(this.type) + 1); - } + @Override + public ItemStack getItem() { + return ModParts.stackCable.get(type); + } - @Override - public void removeInsulation() { + public boolean shouldConnectTo(TileEntity entity, ForgeDirection dir) { + if (entity == null) { + return false; + } else if (entity instanceof IEnergyTile) { + return true; + } else { + return ModPartUtils.hasPart(entity.getWorldObj(), entity.xCoord, + entity.yCoord, entity.zCoord, this.getName()); + } + } - } + public void checkConnectedSides() { + refreshBounding(); + connectedSides = new HashMap(); + for (ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) { + int d = Functions.getIntDirFromDirection(dir); + if (world == null) { + return; + } + TileEntity te = world.getTileEntity(getX() + dir.offsetX, getY() + + dir.offsetY, getZ() + dir.offsetZ); + if (shouldConnectTo(te, dir)) { + if (ModPartUtils.checkOcclusion(getWorld(), getX(), + getY(), getZ(), boundingBoxes[d])) { + connectedSides.put(dir, te); + } + } + if (te != null) { + te.getWorldObj().markBlockForUpdate(te.xCoord, te.yCoord, te.zCoord); + } + } + checkConnections(world, getX(), getY(), getZ()); + getWorld().markBlockForUpdate(getX(), getY(), getZ()); + } - @Override - public void removeConductor() { + public void checkConnections(World world, int x, int y, int z) { + for (int i = 0; i < 6; i++) { + ForgeDirection dir = dirs[i]; + int dx = x + dir.offsetX; + int dy = y + dir.offsetY; + int dz = z + dir.offsetZ; + connections[i] = shouldConnectTo(world.getTileEntity(dx, dy, dz), + dir); + world.func_147479_m(dx, dy, dz); + } + world.func_147479_m(x, y, z); + } - } + public double getConductionLoss() { + switch (this.type) { + case 0: + return 0.2D; + case 1: + return 0.3D; + case 2: + return 0.5D; + case 3: + return 0.45D; + case 4: + return 0.4D; + case 5: + return 1.0D; + case 6: + return 0.95D; + case 7: + return 0.9D; + case 8: + return 0.8D; + case 9: + return 0.025D; + case 10: + return 0.025D; + case 11: + return 0.5D; + case 12: + return 0.5D; + case 13: + default: + return 0.025D; + case 14: + return 0.2D; + } + } - @Override - public boolean acceptsEnergyFrom(TileEntity tileEntity, - ForgeDirection forgeDirection) { - return connectedSides.containsKey(forgeDirection); - } + public static int getMaxCapacity(int type) { + switch (type) { + case 0: + return 128; + case 1: + return 128; + case 2: + return 512; + case 3: + return 512; + case 4: + return 512; + case 5: + return 2048; + case 6: + return 2048; + case 7: + return 2048; + case 8: + return 2048; + case 9: + return 8192; + case 10: + return 32; + case 11: + return 8192; + case 12: + return 8192; + case 13: + return 32; + case 14: + return 32; + default: + return 0; + } + } - @Override - public boolean emitsEnergyTo(TileEntity tileEntity, - ForgeDirection forgeDirection) { - return connectedSides.containsKey(forgeDirection); - } + public static float getCableThickness(int cableType) { + float p = 1.0F; + switch (cableType) { + case 0: + p = 6.0F; + break; + case 1: + p = 4.0F; + break; + case 2: + p = 3.0F; + break; + case 3: + p = 6.0F; + break; + case 4: + p = 6.0F; + break; + case 5: + p = 6.0F; + break; + case 6: + p = 10.0F; + break; + case 7: + p = 10.0F; + break; + case 8: + p = 12.0F; + break; + case 9: + p = 4.0F; + break; + case 10: + p = 4.0F; + break; + case 11: + p = 8.0F; + break; + case 12: + p = 8.0F; + break; + case 13: + p = 16.0F; + break; + case 14: + p = 6.0F; + } + + return p / 16.0F; + } + + public static String getNameFromType(int cableType) { + String p = null; + switch (cableType) { + case 0: + p = "copperCable"; + break; + case 1: + p = "insulatedCopperCable"; + break; + case 2: + p = "goldCable"; + break; + case 3: + p = "insulatedGoldCable"; + break; + case 4: + p = "doubleInsulatedGoldCable"; + break; + case 5: + p = "ironCable"; + break; + case 6: + p = "insulatedIronCable"; + break; + case 7: + p = "doubleInsulatedIronCable"; + break; + case 8: + p = "trippleInsulatedIronCable"; + break; + case 9: + p = "glassFiberCable"; + break; + case 10: + p = "tinCable"; + break; + case 11: + p = "detectorCableBlock";//Detector + break; + case 12: + p = "splitterCableBlock";// Splitter + break; + case 13: + p = "insulatedtinCable"; + break; + case 14: + p = "unused"; // unused? + } + + return p; + } + + public static String getTextureNameFromType(int cableType) { + String p = null; + switch (cableType) { + case 0: + p = "copperCableItem"; + break; + case 1: + p = "insulatedCopperCableItem"; + break; + case 2: + p = "goldCableItem"; + break; + case 3: + p = "insulatedGoldCableItem"; + break; + case 4: + p = "doubleInsulatedGoldCableItem"; + break; + case 5: + p = "ironCableItem"; + break; + case 6: + p = "insulatedIronCableItem"; + break; + case 7: + p = "doubleInsulatedIronCableItem"; + break; + case 8: + p = "trippleInsulatedIronCableItem"; + break; + case 9: + p = "glassFiberCableItem"; + break; + case 10: + p = "tinCableItem"; + break; + case 11: + p = "detectorCableItem";//Detector + break; + case 12: + p = "splitterCableItem";// Splitter + break; + case 13: + p = "insulatedTinCableItem"; + break; + case 14: + p = "unused"; // unused? + } + + return p; + } + + public double getInsulationEnergyAbsorption() { + return (double) getMaxCapacity(this.type); + } + + public double getInsulationBreakdownEnergy() { + return 9001.0D; + } + + public double getConductorBreakdownEnergy() { + return (double) (getMaxCapacity(this.type) + 1); + } + + @Override + public void removeInsulation() { + + } + + @Override + public void removeConductor() { + + } + + @Override + public boolean acceptsEnergyFrom(TileEntity tileEntity, + ForgeDirection forgeDirection) { + return connectedSides.containsKey(forgeDirection); + } + + @Override + public boolean emitsEnergyTo(TileEntity tileEntity, + ForgeDirection forgeDirection) { + return connectedSides.containsKey(forgeDirection); + } @Override public void onNetworkEvent(int i) { - switch(i) { + switch (i) { case 0: - this.worldObj.playSoundEffect((double)((float)this.xCoord + 0.5F), (double)((float)this.yCoord + 0.5F), (double)((float)this.zCoord + 0.5F), "random.fizz", 0.5F, 2.6F + (this.worldObj.rand.nextFloat() - this.worldObj.rand.nextFloat()) * 0.8F); + this.worldObj.playSoundEffect((double) ((float) this.xCoord + 0.5F), (double) ((float) this.yCoord + 0.5F), (double) ((float) this.zCoord + 0.5F), "random.fizz", 0.5F, 2.6F + (this.worldObj.rand.nextFloat() - this.worldObj.rand.nextFloat()) * 0.8F); - for(int l = 0; l < 8; ++l) { - this.worldObj.spawnParticle("largesmoke", (double)this.xCoord + Math.random(), (double)this.yCoord + 1.2D, (double)this.zCoord + Math.random(), 0.0D, 0.0D, 0.0D); + for (int l = 0; l < 8; ++l) { + this.worldObj.spawnParticle("largesmoke", (double) this.xCoord + Math.random(), (double) this.yCoord + 1.2D, (double) this.zCoord + Math.random(), 0.0D, 0.0D, 0.0D); } return; @@ -528,22 +525,22 @@ public class CablePart extends ModPart implements IEnergyConductor, INetworkTile } } - private void readConnectedSidesFromNBT(NBTTagCompound tagCompound){ + private void readConnectedSidesFromNBT(NBTTagCompound tagCompound) { NBTTagCompound ourCompound = tagCompound.getCompoundTag("connectedSides"); - for(ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) { - connections[dir.ordinal()] = ourCompound.getBoolean(dir.ordinal()+""); + for (ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) { + connections[dir.ordinal()] = ourCompound.getBoolean(dir.ordinal() + ""); } checkConnectedSides(); } - private void writeConnectedSidesToNBT(NBTTagCompound tagCompound){ + private void writeConnectedSidesToNBT(NBTTagCompound tagCompound) { NBTTagCompound ourCompound = new NBTTagCompound(); - int i=0; - for(boolean b : connections) { - ourCompound.setBoolean(i+"", b); + int i = 0; + for (boolean b : connections) { + ourCompound.setBoolean(i + "", b); i++; } diff --git a/src/main/java/techreborn/partSystem/parts/NullPart.java b/src/main/java/techreborn/partSystem/parts/NullPart.java index dc3b9f2b8..53acd52c6 100644 --- a/src/main/java/techreborn/partSystem/parts/NullPart.java +++ b/src/main/java/techreborn/partSystem/parts/NullPart.java @@ -4,90 +4,89 @@ package techreborn.partSystem.parts; -import java.util.ArrayList; -import java.util.List; - import net.minecraft.entity.Entity; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import techreborn.lib.vecmath.Vecs3d; import techreborn.lib.vecmath.Vecs3dCube; import techreborn.partSystem.ModPart; -import uk.co.qmunity.lib.client.render.RenderHelper; + +import java.util.ArrayList; +import java.util.List; /** * Created by mark on 11/12/14. */ public class NullPart extends ModPart { - @Override - public void addCollisionBoxesToList(List boxes, Entity entity) { - boxes.add(new Vecs3dCube(0, 0, 0, 1, 1, 1)); - } + @Override + public void addCollisionBoxesToList(List boxes, Entity entity) { + boxes.add(new Vecs3dCube(0, 0, 0, 1, 1, 1)); + } - @Override - public List getSelectionBoxes() { - List cubes = new ArrayList(); - cubes.add(new Vecs3dCube(0, 0, 0, 1, 1, 1)); - return cubes; - } + @Override + public List getSelectionBoxes() { + List cubes = new ArrayList(); + cubes.add(new Vecs3dCube(0, 0, 0, 1, 1, 1)); + return cubes; + } - @Override - public List getOcclusionBoxes() { - return null; - } + @Override + public List getOcclusionBoxes() { + return null; + } - @Override - public void renderDynamic(Vecs3d translation, double delta) { + @Override + public void renderDynamic(Vecs3d translation, double delta) { - } + } - @Override - public boolean renderStatic(Vecs3d translation, RenderHelper renderBlocks, int pass) { - return false; - } + @Override + public boolean renderStatic(Vecs3d translation, int pass) { + return false; + } - @Override - public void writeToNBT(NBTTagCompound tag) { + @Override + public void writeToNBT(NBTTagCompound tag) { - } + } - @Override - public void readFromNBT(NBTTagCompound tag) { + @Override + public void readFromNBT(NBTTagCompound tag) { - } + } - @Override - public ItemStack getItem() { - return null; - } + @Override + public ItemStack getItem() { + return null; + } - @Override - public String getName() { - return "NullPart"; - } + @Override + public String getName() { + return "NullPart"; + } - @Override - public String getItemTextureName() { - return ""; - } + @Override + public String getItemTextureName() { + return ""; + } - @Override - public void tick() { + @Override + public void tick() { - } + } - @Override - public void nearByChange() { + @Override + public void nearByChange() { - } + } - @Override - public void onAdded() { + @Override + public void onAdded() { - } + } - @Override - public void onRemoved() { + @Override + public void onRemoved() { - } + } }