From b38bb654d7c2d4d9362257e51b18f13266fe7adb Mon Sep 17 00:00:00 2001 From: Robert S Date: Sun, 7 Sep 2014 19:14:42 -0400 Subject: [PATCH] Stripped out ItemCharger, ItemRail, MiningLaserGun, and ItemLev to make modpacks more stable --- .../electrical/ClientProxy.java | 10 +- .../electrical/Electrical.java | 31 +- .../electrical/MultipartElectrical.java | 9 - .../electrical/charger/ItemCharger.java | 43 -- .../electrical/charger/PartCharger.java | 149 ---- .../electrical/charger/RenderCharger.java | 91 --- .../itemrailing/EnumRailingMaterial.java | 10 - .../electrical/itemrailing/GridRailing.java | 15 - .../itemrailing/ItemItemRailing.java | 60 -- .../electrical/itemrailing/NodeRailing.java | 94 --- .../electrical/itemrailing/PartRailing.java | 142 ---- .../electrical/itemrailing/RenderRailing.java | 17 - .../electrical/laser/gun/ItemMiningLaser.java | 233 ------ .../laser/gun/RenderMiningLaserGun.java | 80 -- .../electrical/levitator/ItemLevitator.java | 53 -- .../levitator/ModelEMContractor.java | 246 ------- .../electrical/levitator/PartLevitator.java | 688 ------------------ .../levitator/PathfinderLevitator.java | 79 -- .../electrical/levitator/RenderLevitator.java | 68 -- .../levitator/ThreadLevitatorPathfinding.java | 41 -- 20 files changed, 11 insertions(+), 2148 deletions(-) delete mode 100644 electrical/src/main/scala/resonantinduction/electrical/charger/ItemCharger.java delete mode 100644 electrical/src/main/scala/resonantinduction/electrical/charger/PartCharger.java delete mode 100644 electrical/src/main/scala/resonantinduction/electrical/charger/RenderCharger.java delete mode 100644 electrical/src/main/scala/resonantinduction/electrical/itemrailing/EnumRailingMaterial.java delete mode 100644 electrical/src/main/scala/resonantinduction/electrical/itemrailing/GridRailing.java delete mode 100644 electrical/src/main/scala/resonantinduction/electrical/itemrailing/ItemItemRailing.java delete mode 100644 electrical/src/main/scala/resonantinduction/electrical/itemrailing/NodeRailing.java delete mode 100644 electrical/src/main/scala/resonantinduction/electrical/itemrailing/PartRailing.java delete mode 100644 electrical/src/main/scala/resonantinduction/electrical/itemrailing/RenderRailing.java delete mode 100644 electrical/src/main/scala/resonantinduction/electrical/laser/gun/ItemMiningLaser.java delete mode 100644 electrical/src/main/scala/resonantinduction/electrical/laser/gun/RenderMiningLaserGun.java delete mode 100644 electrical/src/main/scala/resonantinduction/electrical/levitator/ItemLevitator.java delete mode 100644 electrical/src/main/scala/resonantinduction/electrical/levitator/ModelEMContractor.java delete mode 100644 electrical/src/main/scala/resonantinduction/electrical/levitator/PartLevitator.java delete mode 100644 electrical/src/main/scala/resonantinduction/electrical/levitator/PathfinderLevitator.java delete mode 100644 electrical/src/main/scala/resonantinduction/electrical/levitator/RenderLevitator.java delete mode 100644 electrical/src/main/scala/resonantinduction/electrical/levitator/ThreadLevitatorPathfinding.java diff --git a/electrical/src/main/scala/resonantinduction/electrical/ClientProxy.java b/electrical/src/main/scala/resonantinduction/electrical/ClientProxy.java index acfa47c0..9454f733 100644 --- a/electrical/src/main/scala/resonantinduction/electrical/ClientProxy.java +++ b/electrical/src/main/scala/resonantinduction/electrical/ClientProxy.java @@ -3,13 +3,9 @@ package resonantinduction.electrical; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.tileentity.TileEntity; import net.minecraft.world.World; -import net.minecraftforge.client.MinecraftForgeClient; import resonant.lib.render.item.GlobalItemRenderer; import resonantinduction.electrical.battery.RenderBattery; import resonantinduction.electrical.battery.TileBattery; -import resonantinduction.electrical.charger.RenderCharger; -import resonantinduction.electrical.laser.gun.RenderMiningLaserGun; -import resonantinduction.electrical.levitator.RenderLevitator; import resonantinduction.electrical.multimeter.GuiMultimeter; import resonantinduction.electrical.multimeter.PartMultimeter; import resonantinduction.electrical.multimeter.RenderMultimeter; @@ -36,10 +32,10 @@ public class ClientProxy extends CommonProxy GlobalItemRenderer.register(Electrical.blockBattery.blockID, RenderBattery.INSTANCE); GlobalItemRenderer.register(Electrical.itemMultimeter.itemID, RenderMultimeter.INSTANCE); GlobalItemRenderer.register(Electrical.itemTransformer.itemID, RenderTransformer.INSTANCE); - GlobalItemRenderer.register(Electrical.itemCharger.itemID, RenderCharger.INSTANCE); - GlobalItemRenderer.register(Electrical.itemLevitator.itemID, RenderLevitator.INSTANCE); + //GlobalItemRenderer.register(Electrical.itemCharger.itemID, RenderCharger.INSTANCE); + //GlobalItemRenderer.register(Electrical.itemLevitator.itemID, RenderLevitator.INSTANCE); GlobalItemRenderer.register(Electrical.itemQuantumGlyph.itemID, RenderQuantumGlyph.INSTANCE); - MinecraftForgeClient.registerItemRenderer(Electrical.itemLaserGun.itemID, new RenderMiningLaserGun()); + //MinecraftForgeClient.registerItemRenderer(Electrical.itemLaserGun.itemID, new RenderMiningLaserGun()); ClientRegistry.bindTileEntitySpecialRenderer(TileTesla.class, new RenderTesla()); ClientRegistry.bindTileEntitySpecialRenderer(TileBattery.class, new RenderBattery()); } diff --git a/electrical/src/main/scala/resonantinduction/electrical/Electrical.java b/electrical/src/main/scala/resonantinduction/electrical/Electrical.java index 3e241ed0..64e1bfe2 100644 --- a/electrical/src/main/scala/resonantinduction/electrical/Electrical.java +++ b/electrical/src/main/scala/resonantinduction/electrical/Electrical.java @@ -19,15 +19,11 @@ import resonantinduction.core.resource.ItemResourcePart; import resonantinduction.electrical.battery.BlockBattery; import resonantinduction.electrical.battery.ItemBlockBattery; import resonantinduction.electrical.battery.TileBattery; -import resonantinduction.electrical.charger.ItemCharger; import resonantinduction.electrical.generator.BlockMotor; import resonantinduction.electrical.generator.TileMotor; import resonantinduction.electrical.generator.solar.TileSolarPanel; import resonantinduction.electrical.generator.thermopile.BlockThermopile; import resonantinduction.electrical.generator.thermopile.TileThermopile; -import resonantinduction.electrical.itemrailing.ItemItemRailing; -import resonantinduction.electrical.laser.gun.ItemMiningLaser; -import resonantinduction.electrical.levitator.ItemLevitator; import resonantinduction.electrical.multimeter.ItemMultimeter; import resonantinduction.electrical.tesla.BlockTesla; import resonantinduction.electrical.tesla.TileTesla; @@ -74,13 +70,8 @@ public class Electrical public static Item itemWire; public static Item itemMultimeter; public static Item itemTransformer; - public static Item itemCharger; public static Block blockTesla; public static Block blockBattery; - public static Block blockEncoder; - - // Railings - public static Item itemRailing; // Generators public static Block blockSolarPanel; @@ -89,17 +80,12 @@ public class Electrical // Transport public static Item itemLevitator; - public static Block blockArmbot; - public static Item itemDisk; public static Item itemInsulation; // Quantum public static Block blockQuantumGate; public static Item itemQuantumGlyph; - // Tools - public static Item itemLaserGun; - public ProxyHandler modproxies; @EventHandler @@ -113,14 +99,13 @@ public class Electrical itemWire = contentRegistry.createItem(ItemWire.class); itemMultimeter = contentRegistry.createItem(ItemMultimeter.class); itemTransformer = contentRegistry.createItem(ItemTransformer.class); - itemCharger = contentRegistry.createItem(ItemCharger.class); blockTesla = contentRegistry.createTile(BlockTesla.class, TileTesla.class); blockBattery = contentRegistry.createBlock(BlockBattery.class, ItemBlockBattery.class, TileBattery.class); // Transport - itemLevitator = contentRegistry.createItem(ItemLevitator.class); + //itemLevitator = contentRegistry.createItem(ItemLevitator.class); itemInsulation = contentRegistry.createItem("insulation", ItemResourcePart.class); - itemLaserGun = contentRegistry.createItem("laserDrill", ItemMiningLaser.class); + //itemLaserGun = contentRegistry.createItem("laserDrill", ItemMiningLaser.class); // Generator blockSolarPanel = contentRegistry.newBlock(TileSolarPanel.class); @@ -195,22 +180,22 @@ public class Electrical GameRegistry.addRecipe(new ShapedOreRecipe(EnumWireMaterial.SUPERCONDUCTOR.getWire(3), "MMM", 'M', "ingotSuperconductor")); GameRegistry.addRecipe(new ShapedOreRecipe(EnumWireMaterial.SUPERCONDUCTOR.getWire(3), "MMM", "MEM", "MMM", 'M', Item.ingotGold, 'E', Item.eyeOfEnder)); - GameRegistry.addRecipe(new ShapedOreRecipe(itemCharger, "WWW", "ICI", 'W', "wire", 'I', UniversalRecipe.PRIMARY_METAL.get(), 'C', UniversalRecipe.CIRCUIT_T1.get())); + //GameRegistry.addRecipe(new ShapedOreRecipe(itemCharger, "WWW", "ICI", 'W', "wire", 'I', UniversalRecipe.PRIMARY_METAL.get(), 'C', UniversalRecipe.CIRCUIT_T1.get())); GameRegistry.addRecipe(new ShapedOreRecipe(itemTransformer, "WWW", "WWW", "III", 'W', "wire", 'I', UniversalRecipe.PRIMARY_METAL.get())); //GameRegistry.addRecipe(new ShapedOreRecipe(itemLevitator, " G ", "SDS", "SWS", 'W', "wire", 'G', Block.glass, 'D', Block.blockDiamond, 'S', UniversalRecipe.PRIMARY_METAL.get())); /** Quantum Gates */ - GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(itemQuantumGlyph, 1, 0), " CT", "LBL", "TCT", 'B', Block.blockDiamond, 'L', itemLevitator, 'C', itemCharger, 'T', blockTesla)); - GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(itemQuantumGlyph, 1, 1), "TCT", "LBL", " CT", 'B', Block.blockDiamond, 'L', itemLevitator, 'C', itemCharger, 'T', blockTesla)); - GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(itemQuantumGlyph, 1, 2), "TC ", "LBL", "TCT", 'B', Block.blockDiamond, 'L', itemLevitator, 'C', itemCharger, 'T', blockTesla)); - GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(itemQuantumGlyph, 1, 3), "TCT", "LBL", "TC ", 'B', Block.blockDiamond, 'L', itemLevitator, 'C', itemCharger, 'T', blockTesla)); + GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(itemQuantumGlyph, 1, 0), " CT", "LBL", "TCT", 'B', Block.blockDiamond, 'L', UniversalRecipe.CIRCUIT_T3.get(), 'C', UniversalRecipe.CIRCUIT_T3.get(), 'T', blockTesla)); + GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(itemQuantumGlyph, 1, 1), "TCT", "LBL", " CT", 'B', Block.blockDiamond, 'L', UniversalRecipe.CIRCUIT_T3.get(), 'C', UniversalRecipe.CIRCUIT_T3.get(), 'T', blockTesla)); + GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(itemQuantumGlyph, 1, 2), "TC ", "LBL", "TCT", 'B', Block.blockDiamond, 'L', UniversalRecipe.CIRCUIT_T3.get(), 'C', UniversalRecipe.CIRCUIT_T3.get(), 'T', blockTesla)); + GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(itemQuantumGlyph, 1, 3), "TCT", "LBL", "TC ", 'B', Block.blockDiamond, 'L', UniversalRecipe.CIRCUIT_T3.get(), 'C', UniversalRecipe.CIRCUIT_T3.get(), 'T', blockTesla)); /** Generators **/ GameRegistry.addRecipe(new ShapedOreRecipe(blockSolarPanel, "CCC", "WWW", "III", 'W', "wire", 'C', Item.coal, 'I', UniversalRecipe.PRIMARY_METAL.get())); GameRegistry.addRecipe(new ShapedOreRecipe(blockMotor, "SRS", "SMS", "SWS", 'W', "wire", 'R', Item.redstone, 'M', Block.blockIron, 'S', UniversalRecipe.PRIMARY_METAL.get())); GameRegistry.addRecipe(new ShapedOreRecipe(blockThermopile, "ORO", "OWO", "OOO", 'W', "wire", 'O', Block.obsidian, 'R', Item.redstone)); - GameRegistry.addRecipe(new ShapedOreRecipe(itemLaserGun, "RDR", "RDR", "ICB", 'R', Item.redstone, 'D', Item.diamond, 'I', Item.ingotGold, 'C', UniversalRecipe.CIRCUIT_T2.get(), 'B', ItemBlockBattery.setTier(new ItemStack(blockBattery, 1, 0), (byte) 0))); + //GameRegistry.addRecipe(new ShapedOreRecipe(itemLaserGun, "RDR", "RDR", "ICB", 'R', Item.redstone, 'D', Item.diamond, 'I', Item.ingotGold, 'C', UniversalRecipe.CIRCUIT_T2.get(), 'B', ItemBlockBattery.setTier(new ItemStack(blockBattery, 1, 0), (byte) 0))); /** Wire Compatiblity **/ if (Loader.isModLoaded("IC2")) diff --git a/electrical/src/main/scala/resonantinduction/electrical/MultipartElectrical.java b/electrical/src/main/scala/resonantinduction/electrical/MultipartElectrical.java index d3385b42..42f70d52 100644 --- a/electrical/src/main/scala/resonantinduction/electrical/MultipartElectrical.java +++ b/electrical/src/main/scala/resonantinduction/electrical/MultipartElectrical.java @@ -1,8 +1,5 @@ package resonantinduction.electrical; -import resonantinduction.electrical.charger.PartCharger; -import resonantinduction.electrical.itemrailing.PartRailing; -import resonantinduction.electrical.levitator.PartLevitator; import resonantinduction.electrical.multimeter.PartMultimeter; import resonantinduction.electrical.transformer.PartTransformer; import resonantinduction.electrical.wire.flat.PartFlatSwitchWire; @@ -46,14 +43,8 @@ public class MultipartElectrical implements IPartFactory return new PartMultimeter(); else if (name.equals("resonant_induction_transformer")) return new PartTransformer(); - else if (name.equals("resonant_induction_charger")) - return new PartCharger(); - else if (name.equals("resonant_induction_levitator")) - return new PartLevitator(); else if (name.equals("resonant_induction_quantum_glyph")) return new PartQuantumGlyph(); - else if (name.equals("resonant_induction_itemrailing")) - return new PartRailing(); return null; } diff --git a/electrical/src/main/scala/resonantinduction/electrical/charger/ItemCharger.java b/electrical/src/main/scala/resonantinduction/electrical/charger/ItemCharger.java deleted file mode 100644 index 09129b33..00000000 --- a/electrical/src/main/scala/resonantinduction/electrical/charger/ItemCharger.java +++ /dev/null @@ -1,43 +0,0 @@ -package resonantinduction.electrical.charger; - -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.ItemStack; -import net.minecraft.util.MathHelper; -import net.minecraft.world.World; -import resonantinduction.core.prefab.part.IHighlight; -import codechicken.lib.vec.BlockCoord; -import codechicken.lib.vec.Vector3; -import codechicken.microblock.FacePlacementGrid$; -import codechicken.multipart.JItemMultiPart; -import codechicken.multipart.MultiPartRegistry; -import codechicken.multipart.TMultiPart; - -public class ItemCharger extends JItemMultiPart implements IHighlight -{ - public ItemCharger(int id) - { - super(id); - } - - @Override - public TMultiPart newPart(ItemStack itemStack, EntityPlayer player, World world, BlockCoord pos, int side, Vector3 hit) - { - side = FacePlacementGrid$.MODULE$.getHitSlot(hit, side); - PartCharger part = (PartCharger) MultiPartRegistry.createPart("resonant_induction_charger", false); - - if (part != null) - { - int l = MathHelper.floor_double(player.rotationYaw * 4.0F / 360.0F + 0.5D) & 3; - int facing = l == 0 ? 2 : (l == 1 ? 5 : (l == 2 ? 3 : (l == 3 ? 4 : 0))); - part.preparePlacement(side, facing); - } - - return part; - } - - @Override - public int getHighlightType() - { - return 0; - } -} diff --git a/electrical/src/main/scala/resonantinduction/electrical/charger/PartCharger.java b/electrical/src/main/scala/resonantinduction/electrical/charger/PartCharger.java deleted file mode 100644 index e3b5287a..00000000 --- a/electrical/src/main/scala/resonantinduction/electrical/charger/PartCharger.java +++ /dev/null @@ -1,149 +0,0 @@ -package resonantinduction.electrical.charger; - -import java.util.ArrayList; -import java.util.List; - -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.ItemStack; -import net.minecraft.util.MovingObjectPosition; -import net.minecraftforge.common.ForgeDirection; -import resonant.lib.utility.WrenchUtility; -import resonant.lib.utility.inventory.InventoryUtility; -import resonantinduction.core.prefab.part.PartInventoryPanel; -import resonantinduction.electrical.Electrical; -import universalelectricity.api.CompatibilityModule; -import universalelectricity.api.UniversalClass; -import universalelectricity.api.energy.IEnergyInterface; -import codechicken.lib.vec.Vector3; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; - -/** Micro part machine designed to charge all items contained inside of it. Doesn't contain its own - * battery and only acts as an inventory. Items are charged each time doReceive is called by an - * energy supplier. - * - * @author Darkguardsman, converted to Part by Calclavia */ -@UniversalClass -public class PartCharger extends PartInventoryPanel implements IEnergyInterface -{ - @Override - public boolean activate(EntityPlayer player, MovingObjectPosition part, ItemStack item) - { - if (WrenchUtility.isUsableWrench(player, player.inventory.getCurrentItem(), x(), y(), z())) - { - if (!world().isRemote) - { - WrenchUtility.damageWrench(player, player.inventory.getCurrentItem(), x(), y(), z()); - facing = (byte) ((facing + 1) % 4); - sendDescUpdate(); - tile().notifyPartChange(this); - } - - return true; - } - - if (item != null) - { - if (getStackInSlot(0) == null && item != null && CompatibilityModule.isHandler(item.getItem())) - { - setInventorySlotContents(0, item); - player.inventory.setInventorySlotContents(player.inventory.currentItem, null); - - if (!world().isRemote) - sendDescUpdate(); - - return true; - } - } - - if (getStackInSlot(0) != null) - { - InventoryUtility.dropItemStack(world(), new universalelectricity.api.vector.Vector3(player), getStackInSlot(0), 0); - setInventorySlotContents(0, null); - if (!world().isRemote) - sendDescUpdate(); - } - - return true; - } - - @Override - public boolean canConnect(ForgeDirection direction, Object obj) - { - return obj instanceof IEnergyInterface && placementSide != direction.getOpposite(); - } - - @Override - public long onReceiveEnergy(ForgeDirection from, long receive, boolean doReceive) - { - if (receive > 0) - { - long energyUsed = 0; - for (int slot = 0; slot < this.getSizeInventory(); slot++) - { - energyUsed += CompatibilityModule.chargeItem(this.getStackInSlot(slot), receive - energyUsed, doReceive); - if (energyUsed >= receive) - break; - } - - if (energyUsed > 0) - this.markedForUpdate = true; - - return energyUsed; - } - return 0; - } - - @Override - public long onExtractEnergy(ForgeDirection from, long extract, boolean doExtract) - { - return 0; - } - - @Override - @SideOnly(Side.CLIENT) - public void renderDynamic(Vector3 pos, float frame, int pass) - { - if (pass == 0) - { - RenderCharger.INSTANCE.render(this, pos.x, pos.y, pos.z); - } - } - - @Override - protected ItemStack getItem() - { - return new ItemStack(Electrical.itemCharger); - } - - @Override - public String getType() - { - return "resonant_induction_charger"; - } - - @Override - public Iterable getDrops() - { - List drops = new ArrayList(); - drops.add(getItem()); - - for (int i = 0; i < getSizeInventory(); i++) - if (getStackInSlot(i) != null) - drops.add(getStackInSlot(i)); - - return drops; - } - - @Override - public boolean canStore(ItemStack stack, int slot, ForgeDirection side) - { - return slot < this.getSizeInventory() && stack != null && CompatibilityModule.isHandler(stack.getItem()); - } - - @Override - public String toString() - { - return "[PartCharger]" + x() + "x " + y() + "y " + z() + "z " + getSlotMask() + "s "; - } -} diff --git a/electrical/src/main/scala/resonantinduction/electrical/charger/RenderCharger.java b/electrical/src/main/scala/resonantinduction/electrical/charger/RenderCharger.java deleted file mode 100644 index f3533f22..00000000 --- a/electrical/src/main/scala/resonantinduction/electrical/charger/RenderCharger.java +++ /dev/null @@ -1,91 +0,0 @@ -package resonantinduction.electrical.charger; - -import net.minecraft.client.Minecraft; -import net.minecraft.client.renderer.OpenGlHelper; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.ItemStack; -import net.minecraft.util.MovingObjectPosition; -import net.minecraft.util.ResourceLocation; -import net.minecraftforge.client.model.AdvancedModelLoader; -import net.minecraftforge.client.model.IModelCustom; - -import org.lwjgl.opengl.GL11; - -import resonant.api.items.ISimpleItemRenderer; -import resonant.lib.render.RenderItemOverlayUtility; -import resonant.lib.render.RenderUtility; -import resonantinduction.core.Reference; -import universalelectricity.api.CompatibilityModule; -import universalelectricity.api.energy.UnitDisplay; -import universalelectricity.api.energy.UnitDisplay.Unit; -import universalelectricity.api.vector.Vector3; - -/** - * Renderer for electric item charger - * - * @author DarkGuardsman - */ -public class RenderCharger implements ISimpleItemRenderer -{ - public static final RenderCharger INSTANCE = new RenderCharger(); - - public static final IModelCustom MODEL = AdvancedModelLoader.loadModel(Reference.MODEL_DIRECTORY + "charger.tcn"); - public static final ResourceLocation TEXTURE = new ResourceLocation(Reference.DOMAIN, Reference.MODEL_PATH + "charger.png"); - - public void render(PartCharger part, double x, double y, double z) - { - GL11.glPushMatrix(); - GL11.glTranslatef((float) x + 0.5F, (float) y + 0.5F, (float) z + 0.5F); - - RenderUtility.rotateFaceToSideNoTranslate(part.placementSide); - RenderUtility.rotateBlockBasedOnDirection(part.getFacing()); - - RenderUtility.bind(TEXTURE); - GL11.glPushMatrix(); - GL11.glTranslatef(0, 0.12f, 0); - MODEL.renderAll(); - GL11.glPopMatrix(); - GL11.glPopMatrix(); - - if (part.getStackInSlot(0) != null) - { - GL11.glPushMatrix(); - GL11.glTranslatef((float) x + 0.5F, (float) y + 0.5F, (float) z + 0.5F); - RenderUtility.rotateFaceToSideNoTranslate(part.placementSide); - RenderUtility.rotateBlockBasedOnDirection(part.getFacing()); - OpenGlHelper.setLightmapTextureCoords(OpenGlHelper.lightmapTexUnit, 240, 240); - RenderItemOverlayUtility.renderItem(part.world(), part.placementSide, part.getStackInSlot(0), new Vector3(0.00, -0.3, -0.00), 0, 4); - GL11.glPopMatrix(); - - EntityPlayer player = Minecraft.getMinecraft().thePlayer; - boolean isLooking = false; - - MovingObjectPosition objectPosition = player.rayTrace(8, 1); - - if (objectPosition != null) - { - if (objectPosition.blockX == part.x() && objectPosition.blockY == part.y() && objectPosition.blockZ == part.z()) - { - /** - * Render item and tool tip - */ - if (CompatibilityModule.getMaxEnergyItem(part.getStackInSlot(0)) > 0) - { - long energy = CompatibilityModule.getEnergyItem(part.getStackInSlot(0)); - long maxEnergy = CompatibilityModule.getMaxEnergyItem(part.getStackInSlot(0)); - RenderUtility.renderFloatingText(UnitDisplay.getDisplay(energy, Unit.JOULES, 2, true) + "/" + UnitDisplay.getDisplay(maxEnergy, Unit.JOULES, 2, true), new Vector3((float) x + 0.5F, (float) y + 0.8F, (float) z + 0.5F)); - } - } - } - } - - } - - @Override - public void renderInventoryItem(ItemStack itemStack) - { - GL11.glTranslatef(0f, 0.5f, 0f); - RenderUtility.bind(TEXTURE); - MODEL.renderAll(); - } -} diff --git a/electrical/src/main/scala/resonantinduction/electrical/itemrailing/EnumRailingMaterial.java b/electrical/src/main/scala/resonantinduction/electrical/itemrailing/EnumRailingMaterial.java deleted file mode 100644 index 8af94d0e..00000000 --- a/electrical/src/main/scala/resonantinduction/electrical/itemrailing/EnumRailingMaterial.java +++ /dev/null @@ -1,10 +0,0 @@ -package resonantinduction.electrical.itemrailing; - -/** - * @since 25/05/14 - * @author tgame14 - */ -public enum EnumRailingMaterial -{ - DEFAULT, EXTENTION; -} diff --git a/electrical/src/main/scala/resonantinduction/electrical/itemrailing/GridRailing.java b/electrical/src/main/scala/resonantinduction/electrical/itemrailing/GridRailing.java deleted file mode 100644 index a2752481..00000000 --- a/electrical/src/main/scala/resonantinduction/electrical/itemrailing/GridRailing.java +++ /dev/null @@ -1,15 +0,0 @@ -package resonantinduction.electrical.itemrailing; - -import resonant.lib.grid.TickingGrid; - -/** - * @since 25/05/14 - * @author tgame14 - */ -public class GridRailing extends TickingGrid -{ - public GridRailing (NodeRailing node, Class type) - { - super(node, type); - } -} diff --git a/electrical/src/main/scala/resonantinduction/electrical/itemrailing/ItemItemRailing.java b/electrical/src/main/scala/resonantinduction/electrical/itemrailing/ItemItemRailing.java deleted file mode 100644 index bbe0c7d4..00000000 --- a/electrical/src/main/scala/resonantinduction/electrical/itemrailing/ItemItemRailing.java +++ /dev/null @@ -1,60 +0,0 @@ -package resonantinduction.electrical.itemrailing; - -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.ItemStack; -import net.minecraft.world.World; -import net.minecraftforge.common.ForgeDirection; -import resonantinduction.core.MultipartUtility; -import codechicken.lib.vec.BlockCoord; -import codechicken.lib.vec.Vector3; -import codechicken.multipart.ControlKeyModifer; -import codechicken.multipart.JItemMultiPart; -import codechicken.multipart.MultiPartRegistry; -import codechicken.multipart.TMultiPart; - -/** - * @author tgame14 - * @since 17/04/14 - */ -public class ItemItemRailing extends JItemMultiPart -{ - public ItemItemRailing(int id) - { - super(id); - } - - @Override - public TMultiPart newPart(ItemStack itemStack, EntityPlayer player, World world, BlockCoord pos, int side, Vector3 vhit) - { - BlockCoord onPos = pos.copy().offset(side ^ 1); - - if (player.isSneaking() && !ControlKeyModifer.isControlDown(player)) - { - PartRailing railing = (PartRailing) MultiPartRegistry.createPart("resonant_induction_itemrailing", false); - - if (railing != null) - { - railing.preparePlacement(itemStack.getItemDamage()); - } - - return railing; - } - else - { - if (!MultipartUtility.canPlaceWireOnSide(world, onPos.x, onPos.y, onPos.z, ForgeDirection.getOrientation(side), false)) - { - return null; - } - - PartRailing railing = (PartRailing) MultiPartRegistry.createPart("resonant_induction_itemrailing", false); - - if (railing != null) - { - railing.preparePlacement(side); - } - - return railing; - } - } - -} diff --git a/electrical/src/main/scala/resonantinduction/electrical/itemrailing/NodeRailing.java b/electrical/src/main/scala/resonantinduction/electrical/itemrailing/NodeRailing.java deleted file mode 100644 index c03aee2f..00000000 --- a/electrical/src/main/scala/resonantinduction/electrical/itemrailing/NodeRailing.java +++ /dev/null @@ -1,94 +0,0 @@ -package resonantinduction.electrical.itemrailing; - -import codechicken.multipart.TMultiPart; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.world.World; -import net.minecraftforge.common.ForgeDirection; -import resonant.lib.grid.Node; -import resonant.lib.grid.TickingGrid; -import resonantinduction.electrical.itemrailing.interfaces.IItemRailingProvider; -import universalelectricity.api.vector.IVector3; -import universalelectricity.api.vector.Vector3; - -/** - * @since 25/05/14 - * @author tgame14 - */ -public class NodeRailing extends Node -{ - - protected byte connectionMap = Byte.parseByte("111111", 2); - - public NodeRailing (IItemRailingProvider parent) - { - super(parent); - } - - public NodeRailing setConnection(byte connectionMap) - { - this.connectionMap = connectionMap; - return this; - } - - @Override - protected GridRailing newGrid () - { - return new GridRailing(this, NodeRailing.class); - } - - @Override - public void update (float deltaTime) - { - super.update(deltaTime); - } - - @Override - protected void doRecache () - { - connections.clear(); - - for (ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) - { - TileEntity tile = new Vector3(position()).translate(dir).getTileEntity(world()); - - if (tile instanceof IItemRailingProvider) - { - NodeRailing check = (NodeRailing) ((IItemRailingProvider) tile).getNode(NodeRailing.class, dir.getOpposite()); - - if (check != null && canConnect(dir, check) && check.canConnect(dir.getOpposite(), this)) - { - connections.put(check, dir); - } - } - } - } - - public IVector3 position() - { - return parent.getVectorWorld(); - } - - public World world() - { - return parent.getVectorWorld().world(); - } - - @Override - public boolean canConnect (ForgeDirection from, Object source) - { - return (source instanceof NodeRailing) && (connectionMap & (1 << from.ordinal())) != 0; - } - - @Override - public void load (NBTTagCompound nbt) - { - super.load(nbt); - } - - @Override - public void save (NBTTagCompound nbt) - { - super.save(nbt); - } -} diff --git a/electrical/src/main/scala/resonantinduction/electrical/itemrailing/PartRailing.java b/electrical/src/main/scala/resonantinduction/electrical/itemrailing/PartRailing.java deleted file mode 100644 index 7606a4ac..00000000 --- a/electrical/src/main/scala/resonantinduction/electrical/itemrailing/PartRailing.java +++ /dev/null @@ -1,142 +0,0 @@ -package resonantinduction.electrical.itemrailing; - -import java.lang.reflect.Constructor; - -import codechicken.lib.vec.Vector3; -import codechicken.microblock.IHollowConnect; -import codechicken.multipart.JNormalOcclusion; -import codechicken.multipart.TSlottedPart; -import net.minecraft.inventory.IInventory; -import net.minecraft.item.ItemStack; -import net.minecraft.tileentity.TileEntity; -import net.minecraftforge.common.ForgeDirection; -import resonant.api.IExternalInventory; -import resonant.api.IExternalInventoryBox; -import resonant.api.grid.INode; -import resonant.lib.utility.inventory.ExternalInventory; -import resonantinduction.core.prefab.part.PartFramedConnection; -import resonantinduction.core.prefab.part.PartFramedNode; -import resonantinduction.electrical.Electrical; -import resonantinduction.electrical.itemrailing.interfaces.IItemRailingProvider; -import universalelectricity.api.energy.EnergyNetworkLoader; -import universalelectricity.api.energy.IConductor; -import universalelectricity.api.energy.IEnergyNetwork; -import universalelectricity.api.net.IConnector; -import universalelectricity.api.net.INetwork; -import universalelectricity.api.vector.IVectorWorld; -import universalelectricity.api.vector.VectorWorld; -import codechicken.multipart.TileMultipart; - -/** - * @since 16/03/14 - * @author tgame14 - */ -public class PartRailing extends PartFramedNode implements IItemRailingProvider, TSlottedPart, JNormalOcclusion, IHollowConnect, IExternalInventory -{ - protected ExternalInventory inventory; - protected boolean markPacketUpdate; - - public PartRailing () - { - super(Electrical.itemInsulation); - this.material = EnumRailingMaterial.DEFAULT; - this.node = new NodeRailing(this); - this.markPacketUpdate = true; - this.requiresInsulation = false; - this.inventory = new ExternalInventory(tile(), 5); - } - - - @Override - public INode getNode(Class nodeType, ForgeDirection from) - { - if (nodeType.isInstance(this.node)) - return node; - try - { - for (Constructor con : nodeType.getConstructors()) - { - if ((con.getParameterTypes().length == 1) && con.getParameterTypes()[0].equals(getClass())) - { - this.node = (NodeRailing) con.newInstance(this); - return this.node; - } - } - - } - catch (Exception e) - { - e.printStackTrace(); - } - return null; - } - - public VectorWorld getWorldPos() - { - return new VectorWorld(getWorld(), x(), y(), z()); - } - - @Override - public boolean doesTick () - { - return false; - } - - //TODO: Fix up to proper data - @Override - public void setMaterial (int i) - { - this.material = EnumRailingMaterial.values()[i]; - } - - @Override - protected ItemStack getItem () - { - return new ItemStack(Electrical.itemRailing, 1, getMaterialID()); - } - - @Override - public String getType () - { - return "resonant_induction_itemrailing"; - } - - @Override - public void renderDynamic (Vector3 pos, float frame, int pass) - { - super.renderDynamic(pos, frame, pass); - //TODO: Implement - } - - - - @Override - public IVectorWorld getVectorWorld () - { - return new VectorWorld(getWorld(), x(), y(), z()); - } - - @Override - public void onInventoryChanged () - { - //TODO: Implement - } - - @Override - public IExternalInventoryBox getInventory () - { - return this.inventory; - } - - @Override - public boolean canStore (ItemStack stack, int slot, ForgeDirection side) - { - return false; - } - - @Override - public boolean canRemove (ItemStack stack, int slot, ForgeDirection side) - { - return false; - } -} diff --git a/electrical/src/main/scala/resonantinduction/electrical/itemrailing/RenderRailing.java b/electrical/src/main/scala/resonantinduction/electrical/itemrailing/RenderRailing.java deleted file mode 100644 index 83410aab..00000000 --- a/electrical/src/main/scala/resonantinduction/electrical/itemrailing/RenderRailing.java +++ /dev/null @@ -1,17 +0,0 @@ -package resonantinduction.electrical.itemrailing; - -import net.minecraft.item.ItemStack; -import resonant.api.items.ISimpleItemRenderer; - -/** - * @author tgame14 - * @since 20/04/14 - */ -public class RenderRailing implements ISimpleItemRenderer -{ - @Override - public void renderInventoryItem(ItemStack itemStack) - { - - } -} diff --git a/electrical/src/main/scala/resonantinduction/electrical/laser/gun/ItemMiningLaser.java b/electrical/src/main/scala/resonantinduction/electrical/laser/gun/ItemMiningLaser.java deleted file mode 100644 index e65421a4..00000000 --- a/electrical/src/main/scala/resonantinduction/electrical/laser/gun/ItemMiningLaser.java +++ /dev/null @@ -1,233 +0,0 @@ -package resonantinduction.electrical.laser.gun; - -import java.awt.Color; -import java.util.HashMap; - -import net.minecraft.block.Block; -import net.minecraft.entity.Entity; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.EnumAction; -import net.minecraft.item.ItemStack; -import net.minecraft.util.DamageSource; -import net.minecraft.util.EnumMovingObjectType; -import net.minecraft.util.MathHelper; -import net.minecraft.util.MovingObjectPosition; -import net.minecraft.util.Vec3; -import net.minecraft.world.World; -import net.minecraftforge.common.ForgeDirection; -import net.minecraftforge.common.MinecraftForge; -import resonant.api.event.LaserEvent; -import resonant.api.event.LaserFiredPlayerEvent; -import resonant.lib.prefab.vector.RayTraceHelper; -import resonant.lib.type.Pair; -import resonantinduction.core.ResonantInduction; -import resonantinduction.core.prefab.items.ItemEnergyTool; -import universalelectricity.api.vector.IVector3; -import universalelectricity.api.vector.Vector3; - -/** Stream laser mining tool, When held down it will slowly mine away at the block in front of it. - * - * - * TODO create model for this that is 3D. The front should spin around the barrel as its mines - * generating a laser. As well the player should be wearing a battery pack when the laser is out. - * Other option is to force the player to wear a battery pack as armor when using the tool - * - * TODO when the laser hits the block there should be a flaring effect that simi blinds the player. - * That way they are force to wear wielding googles. As well this will gear the player more towards - * mining and less to fighting. Though the laser should still be a very effect fighting weapon, with - * only down side being its battery, and that it slows you down when held. Eg its a heavy peace of - * mining gear and the player will be simi-stationary when using it - * - * @author DarkGuardsman */ -public class ItemMiningLaser extends ItemEnergyTool -{ - /** Cost per tick of using the item */ - long joulesPerTick = 100; - /** Damage to entities hit by the laser */ - float damageToEntities = 3.3f; - /** Range of the laser ray trace */ - int blockRange = 50; - /** Time to break a single block */ - int breakTime = 15; - - /** Map of players and how long they have focused the laser on a single block */ - HashMap> miningMap = new HashMap>(); - /** Used to track energy used while the player uses the laser rather then direct editing the nbt */ - HashMap energyUsedMap = new HashMap(); - - public static final int MODE_REMOVE = 0, MODE_SMELT = 1, MODE_DAMAGE = 2; - - public ItemMiningLaser(int id) - { - super(id); - hasModes = true; - this.energyTiers = 1; - toolModes = new String[] { "laser.toolmode.remove", "laser.toolmode.smelt", "laser.toolmode.damage" }; - } - - @Override - public void onUpdate(ItemStack itemStack, World world, Entity entity, int slot, boolean currentHeldItem) - { - //Remove player from mining map if he puts the laser gun away - if (entity instanceof EntityPlayer) - { - EntityPlayer player = (EntityPlayer) entity; - if (!currentHeldItem) - { - if (this.miningMap.containsKey(player)) - { - this.miningMap.remove(player); - } - if (this.energyUsedMap.containsKey(player)) - { - this.energyUsedMap.remove(player); - } - } - } - } - - @Override - public void onUsingItemTick(ItemStack stack, EntityPlayer player, int count) - { - //Small delay to prevent unwanted usage of the item - //TODO increase this delay to simulate warm up time - //TODO increase break time longer the laser has been running - //TODO match hardness of block for break time - //TODO add audio - if (count > 5 && (player.capabilities.isCreativeMode || discharge(stack, joulesPerTick, false) >= joulesPerTick && (!this.energyUsedMap.containsKey(player) || this.energyUsedMap.get(player) <= this.getEnergy(stack)))) - { - Vec3 playerPosition = Vec3.createVectorHelper(player.posX, player.posY + player.getEyeHeight(), player.posZ); - Vec3 playerLook = RayTraceHelper.getLook(player, 1.0f); - Vec3 p = Vec3.createVectorHelper(playerPosition.xCoord + playerLook.xCoord, playerPosition.yCoord + playerLook.yCoord, playerPosition.zCoord + playerLook.zCoord); - - Vec3 playerViewOffset = Vec3.createVectorHelper(playerPosition.xCoord + playerLook.xCoord * blockRange, playerPosition.yCoord + playerLook.yCoord * blockRange, playerPosition.zCoord + playerLook.zCoord * blockRange); - MovingObjectPosition hit = RayTraceHelper.do_rayTraceFromEntity(player, new Vector3().toVec3(), blockRange, true); - - if (!player.capabilities.isCreativeMode) - { - long energyUsed = this.energyUsedMap.containsKey(player) ? this.energyUsedMap.get(player) : 0; - - switch (getMode(stack)) - { - case 0: - energyUsed += joulesPerTick; - case 1: - energyUsed += joulesPerTick / 2; - case 2: - energyUsed += joulesPerTick / 3; - } - this.energyUsedMap.put(player, energyUsed); - } - - if (hit != null) - { - LaserEvent event = new LaserFiredPlayerEvent(player, hit, stack); - MinecraftForge.EVENT_BUS.post(event); - if (!player.worldObj.isRemote && !event.isCanceled()) - { - if (hit.typeOfHit == EnumMovingObjectType.ENTITY && hit.entityHit != null) - { - //TODO re-implements laser damage source - DamageSource damageSource = DamageSource.causeMobDamage(player); - hit.entityHit.attackEntityFrom(damageSource, damageToEntities); - hit.entityHit.setFire(5); - } - else if (hit.typeOfHit == EnumMovingObjectType.TILE) - { - int time = 1; - boolean mined = false; - if (miningMap.containsKey(player)) - { - Pair lastHit = miningMap.get(player); - if (lastHit != null && lastHit.left() != null && lastHit.left().equals(new Vector3(hit))) - { - Block b = Block.blocksList[player.worldObj.getBlockId(hit.blockX, hit.blockY, hit.blockZ)]; - if (b != null && b.getBlockHardness(player.worldObj, hit.blockX, hit.blockY, hit.blockZ) > -1) - { - time = lastHit.right() + 1; - if (time >= breakTime && this.getMode(stack) == MODE_REMOVE) - { - LaserEvent.onBlockMinedByLaser(player.worldObj, player, new Vector3(hit)); - mined = true; - miningMap.remove(player); - } - else if (this.getMode(stack) == MODE_SMELT) - { - //TODO get the actual hit side from the angle of the ray trace - LaserEvent.onLaserHitBlock(player.worldObj, player, new Vector3(hit), ForgeDirection.UP); - player.worldObj.destroyBlockInWorldPartially(player.entityId, hit.blockX, hit.blockY, hit.blockZ, time); - } - } - } - } - if (!mined) - { - miningMap.put(player, new Pair(new Vector3(hit), time)); - } - } - - } - playerViewOffset = hit.hitVec; - } - - //Only call client as the server can render stuff threw packets - if (player.worldObj.isRemote) - { - float x = (float) (MathHelper.cos((float) (player.rotationYawHead * 0.0174532925)) * (-.4) - MathHelper.sin((float) (player.rotationYawHead * 0.0174532925)) * (-.1)); - float z = (float) (MathHelper.sin((float) (player.rotationYawHead * 0.0174532925)) * (-.4) + MathHelper.cos((float) (player.rotationYawHead * 0.0174532925)) * (-.1)); - ResonantInduction.proxy.renderBeam(player.worldObj, (IVector3) new Vector3(p).translate(new Vector3(x, -.25, z)), (IVector3) new Vector3(playerViewOffset), Color.red, 5); - ResonantInduction.proxy.renderBeam(player.worldObj, (IVector3) new Vector3(p).translate(new Vector3(x, -.45, z)), (IVector3) new Vector3(playerViewOffset), Color.red, 5); - } - - } - - } - - @Override - public ItemStack onItemRightClick(ItemStack itemStack, World world, EntityPlayer player) - { - if (!player.isSneaking()) - { - player.setItemInUse(itemStack, this.getMaxItemUseDuration(itemStack)); - } - return super.onItemRightClick(itemStack, world, player); - } - - @Override - public void onPlayerStoppedUsing(ItemStack stack, World world, EntityPlayer player, int par4) - { - if (miningMap.containsKey(player)) - { - Pair vec = miningMap.get(player); - if (vec != null && vec.left() != null) - { - player.worldObj.destroyBlockInWorldPartially(player.entityId, vec.left().intX(), vec.left().intY(), vec.left().intZ(), -1); - } - miningMap.remove(player); - } - if (this.energyUsedMap.containsKey(player)) - { - discharge(stack, this.energyUsedMap.get(player), true); - this.energyUsedMap.remove(player); - } - } - - @Override - public ItemStack onEaten(ItemStack par1ItemStack, World par2World, EntityPlayer par3EntityPlayer) - { - return par1ItemStack; - } - - @Override - public int getMaxItemUseDuration(ItemStack par1ItemStack) - { - return 72000; - } - - @Override - public EnumAction getItemUseAction(ItemStack par1ItemStack) - { - return EnumAction.bow; - } - -} diff --git a/electrical/src/main/scala/resonantinduction/electrical/laser/gun/RenderMiningLaserGun.java b/electrical/src/main/scala/resonantinduction/electrical/laser/gun/RenderMiningLaserGun.java deleted file mode 100644 index 3574dc32..00000000 --- a/electrical/src/main/scala/resonantinduction/electrical/laser/gun/RenderMiningLaserGun.java +++ /dev/null @@ -1,80 +0,0 @@ -package resonantinduction.electrical.laser.gun; - -import net.minecraft.client.Minecraft; -import net.minecraft.item.ItemStack; -import net.minecraft.util.ResourceLocation; -import net.minecraftforge.client.IItemRenderer; -import net.minecraftforge.client.model.AdvancedModelLoader; -import net.minecraftforge.client.model.IModelCustom; - -import org.lwjgl.opengl.GL11; - -import resonantinduction.core.Reference; -import cpw.mods.fml.client.FMLClientHandler; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; - -@SideOnly(Side.CLIENT) -public class RenderMiningLaserGun implements IItemRenderer -{ - public static final IModelCustom MODEL = AdvancedModelLoader.loadModel(Reference.MODEL_DIRECTORY + "MiningLaserGun.tcn"); - private static final ResourceLocation TEXTURE = new ResourceLocation(Reference.DOMAIN, Reference.MODEL_PATH + "LaserGun.png"); - - @Override - public boolean handleRenderType(ItemStack item, ItemRenderType type) - { - return true; - } - - @Override - public boolean shouldUseRenderHelper(ItemRenderType type, ItemStack item, ItemRendererHelper helper) - { - return true; - } - - @Override - public void renderItem(ItemRenderType type, ItemStack item, Object... data) - { - GL11.glPushMatrix(); - - FMLClientHandler.instance().getClient().renderEngine.bindTexture(TEXTURE); - - if (type == ItemRenderType.EQUIPPED_FIRST_PERSON) - { - float scale = 5f; - - if (Minecraft.getMinecraft().thePlayer.getItemInUse() != item) - { - GL11.glScalef(scale, scale, scale); - GL11.glTranslatef(0.2f, 0.2f, 0.67f); - GL11.glRotatef(-40, 0, 1, 0); - GL11.glRotatef(10, 1, 0, 0); - } - else - { - GL11.glScalef(scale, scale, scale); - GL11.glTranslatef(0.2f, 0.2f, 0.67f); - GL11.glRotatef(-40, 0, 1, 0); - GL11.glRotatef(20, 1, 0, 0); - } - } - else if (type == ItemRenderType.EQUIPPED) - { - float scale = 3f; - GL11.glScalef(scale, scale, scale); - GL11.glRotatef(-80, 1, 0, 0); - GL11.glRotatef(60, 0, 1, 0); - GL11.glRotatef(20, 0, 0, 1); - GL11.glTranslatef(0f, 0f, 0.6f); - } - else if (type == ItemRenderType.INVENTORY) - { - float scale = 1.5f; - GL11.glScalef(scale, scale, scale); - GL11.glTranslatef(0.1f, 0.06f, 0.52f); - } - MODEL.renderAll(); - - GL11.glPopMatrix(); - } -} diff --git a/electrical/src/main/scala/resonantinduction/electrical/levitator/ItemLevitator.java b/electrical/src/main/scala/resonantinduction/electrical/levitator/ItemLevitator.java deleted file mode 100644 index 93b83a56..00000000 --- a/electrical/src/main/scala/resonantinduction/electrical/levitator/ItemLevitator.java +++ /dev/null @@ -1,53 +0,0 @@ -package resonantinduction.electrical.levitator; - -import java.util.List; - -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.ItemStack; -import net.minecraft.util.MathHelper; -import net.minecraft.world.World; -import resonantinduction.core.prefab.part.IHighlight; -import codechicken.lib.vec.BlockCoord; -import codechicken.lib.vec.Vector3; -import codechicken.microblock.FacePlacementGrid$; -import codechicken.multipart.JItemMultiPart; -import codechicken.multipart.MultiPartRegistry; -import codechicken.multipart.TMultiPart; - -public class ItemLevitator extends JItemMultiPart implements IHighlight -{ - public ItemLevitator(int id) - { - super(id); - } - - @Override - @SuppressWarnings("unchecked") - public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean par4) - { - list.add("\u00a7cFrom Dev's - Functionality Disabled"); - - } - - @Override - public TMultiPart newPart(ItemStack itemStack, EntityPlayer player, World world, BlockCoord pos, int side, Vector3 hit) - { - side = FacePlacementGrid$.MODULE$.getHitSlot(hit, side); - PartLevitator part = (PartLevitator) MultiPartRegistry.createPart("resonant_induction_levitator", false); - - if (part != null) - { - int l = MathHelper.floor_double(player.rotationYaw * 4.0F / 360.0F + 0.5D) & 3; - int facing = l == 0 ? 2 : (l == 1 ? 5 : (l == 2 ? 3 : (l == 3 ? 4 : 0))); - part.preparePlacement(side, facing); - } - - return part; - } - - @Override - public int getHighlightType() - { - return 0; - } -} diff --git a/electrical/src/main/scala/resonantinduction/electrical/levitator/ModelEMContractor.java b/electrical/src/main/scala/resonantinduction/electrical/levitator/ModelEMContractor.java deleted file mode 100644 index 47df21c3..00000000 --- a/electrical/src/main/scala/resonantinduction/electrical/levitator/ModelEMContractor.java +++ /dev/null @@ -1,246 +0,0 @@ -package resonantinduction.electrical.levitator; - -import net.minecraft.client.model.ModelBase; -import net.minecraft.client.model.ModelRenderer; - -public class ModelEMContractor extends ModelBase -{ - public boolean doSpin; - - // fields - ModelRenderer frame1; - ModelRenderer frame2; - ModelRenderer frame3; - ModelRenderer frame4; - ModelRenderer frame5; - ModelRenderer frame6; - ModelRenderer frame7; - ModelRenderer frame8; - ModelRenderer left_frame_connector; - ModelRenderer right_frame_connector; - ModelRenderer teslapole; - ModelRenderer Coil1; - ModelRenderer coil2; - ModelRenderer coil3; - ModelRenderer coil4; - ModelRenderer pole1; - ModelRenderer pole2; - ModelRenderer pole3; - ModelRenderer pole4; - ModelRenderer poletop1; - ModelRenderer poletop2; - ModelRenderer poletop3; - ModelRenderer poletop4; - ModelRenderer base1; - ModelRenderer base2; - ModelRenderer base3; - - public ModelEMContractor(boolean spin) - { - doSpin = spin; - textureWidth = 128; - textureHeight = 128; - - frame1 = new ModelRenderer(this, 0, 24); - frame1.addBox(0F, 0F, 0F, 1, 8, 1); - frame1.setRotationPoint(-3F, 15F, -2F); - frame1.setTextureSize(128, 128); - frame1.mirror = true; - setRotation(frame1, 0F, 0F, 0F); - frame2 = new ModelRenderer(this, 0, 24); - frame2.addBox(0F, 0F, 0F, 1, 8, 1); - frame2.setRotationPoint(1F, 15F, 2F); - frame2.setTextureSize(128, 128); - frame2.mirror = true; - setRotation(frame2, 0F, 0F, 0F); - frame3 = new ModelRenderer(this, 0, 24); - frame3.addBox(0F, 0F, 0F, 1, 8, 1); - frame3.setRotationPoint(2F, 15F, -2F); - frame3.setTextureSize(128, 128); - frame3.mirror = true; - setRotation(frame3, 0F, 0F, 0F); - frame4 = new ModelRenderer(this, 0, 24); - frame4.addBox(0F, 0F, 0F, 1, 8, 1); - frame4.setRotationPoint(-3F, 15F, 1F); - frame4.setTextureSize(128, 128); - frame4.mirror = true; - setRotation(frame4, 0F, 0F, 0F); - frame5 = new ModelRenderer(this, 0, 24); - frame5.addBox(0F, 0F, 0F, 1, 8, 1); - frame5.setRotationPoint(2F, 15F, 1F); - frame5.setTextureSize(128, 128); - frame5.mirror = true; - setRotation(frame5, 0F, 0F, 0F); - frame6 = new ModelRenderer(this, 0, 24); - frame6.addBox(0F, 0F, 0F, 1, 8, 1); - frame6.setRotationPoint(1F, 15F, -3F); - frame6.setTextureSize(128, 128); - frame6.mirror = true; - setRotation(frame6, 0F, 0F, 0F); - frame7 = new ModelRenderer(this, 0, 24); - frame7.addBox(0F, 0F, 0F, 1, 8, 1); - frame7.setRotationPoint(-2F, 15F, 2F); - frame7.setTextureSize(128, 128); - frame7.mirror = true; - setRotation(frame7, 0F, 0F, 0F); - frame8 = new ModelRenderer(this, 0, 24); - frame8.addBox(0F, 0F, 0F, 1, 8, 1); - frame8.setRotationPoint(-2F, 15F, -3F); - frame8.setTextureSize(128, 128); - frame8.mirror = true; - setRotation(frame8, 0F, 0F, 0F); - left_frame_connector = new ModelRenderer(this, 0, 20); - left_frame_connector.addBox(0F, 0F, 0F, 1, 1, 2); - left_frame_connector.setRotationPoint(-3F, 15F, -1F); - left_frame_connector.setTextureSize(128, 128); - left_frame_connector.mirror = true; - setRotation(left_frame_connector, 0F, 0F, 0F); - right_frame_connector = new ModelRenderer(this, 0, 20); - right_frame_connector.addBox(0F, 0F, 0F, 1, 1, 2); - right_frame_connector.setRotationPoint(2F, 15F, -1F); - right_frame_connector.setTextureSize(128, 128); - right_frame_connector.mirror = true; - setRotation(right_frame_connector, 0F, 0F, 0F); - teslapole = new ModelRenderer(this, 0, 0); - teslapole.addBox(-1F, -1F, -1F, 2, 15, 2); - teslapole.setRotationPoint(0F, 9F, 0F); - teslapole.setTextureSize(128, 128); - teslapole.mirror = true; - setRotation(teslapole, 0F, 0F, 0F); - Coil1 = new ModelRenderer(this, 17, 0); - Coil1.addBox(-1.5F, -0.5F, -1.5F, 3, 1, 3); - Coil1.setRotationPoint(0F, 12.5F, 0F); - Coil1.setTextureSize(128, 128); - Coil1.mirror = true; - setRotation(Coil1, 0F, 0F, 0F); - coil2 = new ModelRenderer(this, 17, 0); - coil2.addBox(-1.5F, -0.5F, -1.5F, 3, 1, 3); - coil2.setRotationPoint(0F, 14F, 0F); - coil2.setTextureSize(128, 128); - coil2.mirror = true; - setRotation(coil2, 0F, 0F, 0F); - coil3 = new ModelRenderer(this, 17, 0); - coil3.addBox(-1.5F, -0.5F, -1.5F, 3, 1, 3); - coil3.setRotationPoint(0F, 9.5F, 0F); - coil3.setTextureSize(128, 128); - coil3.mirror = true; - setRotation(coil3, 0F, 0F, 0F); - coil4 = new ModelRenderer(this, 17, 0); - coil4.addBox(-1.5F, -0.5F, -1.5F, 3, 1, 3); - coil4.setRotationPoint(0F, 11F, 0F); - coil4.setTextureSize(128, 128); - coil4.mirror = true; - setRotation(coil4, 0F, 0F, 0F); - pole1 = new ModelRenderer(this, 5, 26); - pole1.addBox(-0.5F, -1F, -0.5F, 1, 6, 1); - pole1.setRotationPoint(0F, 18F, 6.5F); - pole1.setTextureSize(128, 128); - pole1.mirror = true; - setRotation(pole1, 0F, 0F, 0F); - pole2 = new ModelRenderer(this, 5, 26); - pole2.addBox(-0.5F, -1F, -0.5F, 1, 6, 1); - pole2.setRotationPoint(0F, 18F, -6.5F); - pole2.setTextureSize(128, 128); - pole2.mirror = true; - setRotation(pole2, 0F, 0F, 0F); - pole3 = new ModelRenderer(this, 5, 26); - pole3.addBox(-0.5F, -1F, -0.5F, 1, 6, 1); - pole3.setRotationPoint(-6.5F, 18F, 0F); - pole3.setTextureSize(128, 128); - pole3.mirror = true; - setRotation(pole3, 0F, 0F, 0F); - pole4 = new ModelRenderer(this, 5, 26); - pole4.addBox(-0.5F, -1F, -0.5F, 1, 6, 1); - pole4.setRotationPoint(6.5F, 18F, 0F); - pole4.setTextureSize(128, 128); - pole4.mirror = true; - setRotation(pole4, 0F, 0F, 0F); - poletop1 = new ModelRenderer(this, 31, 0); - poletop1.addBox(-1F, -1F, -1F, 2, 2, 2); - poletop1.setRotationPoint(0F, 16.5F, -6.5F); - poletop1.setTextureSize(128, 128); - poletop1.mirror = true; - setRotation(poletop1, 0F, 0F, 0F); - poletop2 = new ModelRenderer(this, 31, 0); - poletop2.addBox(-1F, -1F, -1F, 2, 2, 2); - poletop2.setRotationPoint(0F, 16.5F, 6.5F); - poletop2.setTextureSize(128, 128); - poletop2.mirror = true; - setRotation(poletop2, 0F, 0F, 0F); - poletop3 = new ModelRenderer(this, 31, 0); - poletop3.addBox(-1F, -1F, -1F, 2, 2, 2); - poletop3.setRotationPoint(6.5F, 16.5F, 0F); - poletop3.setTextureSize(128, 128); - poletop3.mirror = true; - setRotation(poletop3, 0F, 0F, 0F); - poletop4 = new ModelRenderer(this, 31, 0); - poletop4.addBox(-1F, -1F, -1F, 2, 2, 2); - poletop4.setRotationPoint(-6.5F, 16.5F, 0F); - poletop4.setTextureSize(128, 128); - poletop4.mirror = true; - setRotation(poletop4, 0F, 0F, 0F); - base1 = new ModelRenderer(this, 0, 55); - base1.addBox(0F, 0F, 0F, 16, 1, 8); - base1.setRotationPoint(-8F, 23F, -4F); - base1.setTextureSize(128, 128); - base1.mirror = true; - setRotation(base1, 0F, 0F, 0F); - base2 = new ModelRenderer(this, 0, 68); - base2.addBox(0F, 0F, 0F, 8, 1, 5); - base2.setRotationPoint(-4F, 23F, 3F); - base2.setTextureSize(128, 128); - base2.mirror = true; - setRotation(base2, 0F, 0F, 0F); - base3 = new ModelRenderer(this, 0, 79); - base3.addBox(0F, 0F, 0F, 8, 1, 5); - base3.setRotationPoint(-4F, 23F, -8F); - base3.setTextureSize(128, 128); - base3.mirror = true; - setRotation(base3, 0F, 0F, 0F); - } - - public void render(float f5) - { - if (doSpin) - { - Coil1.rotateAngleY = (float) Math.toRadians(Math.toDegrees(Coil1.rotateAngleY) + 3 < 360 ? Math.toDegrees(Coil1.rotateAngleY) + 3 : 0); - coil2.rotateAngleY = (float) Math.toRadians(Math.toDegrees(coil2.rotateAngleY) + 3 < 360 ? Math.toDegrees(coil2.rotateAngleY) + 3 : 0); - coil3.rotateAngleY = (float) Math.toRadians(Math.toDegrees(coil3.rotateAngleY) + 3 < 360 ? Math.toDegrees(coil3.rotateAngleY) + 3 : 0); - coil4.rotateAngleY = (float) Math.toRadians(Math.toDegrees(coil4.rotateAngleY) + 3 < 360 ? Math.toDegrees(coil4.rotateAngleY) + 3 : 0); - } - - frame1.render(f5); - frame2.render(f5); - frame3.render(f5); - frame4.render(f5); - frame5.render(f5); - frame6.render(f5); - frame7.render(f5); - frame8.render(f5); - left_frame_connector.render(f5); - right_frame_connector.render(f5); - teslapole.render(f5); - Coil1.render(f5); - coil2.render(f5); - coil3.render(f5); - coil4.render(f5); - pole1.render(f5); - pole2.render(f5); - pole3.render(f5); - pole4.render(f5); - poletop1.render(f5); - poletop2.render(f5); - poletop3.render(f5); - poletop4.render(f5); - base1.render(f5); - base2.render(f5); - base3.render(f5); - } - - private void setRotation(ModelRenderer model, float x, float y, float z) - { - model.rotateAngleX = x; - model.rotateAngleY = y; - model.rotateAngleZ = z; - } -} diff --git a/electrical/src/main/scala/resonantinduction/electrical/levitator/PartLevitator.java b/electrical/src/main/scala/resonantinduction/electrical/levitator/PartLevitator.java deleted file mode 100644 index 57fe91cf..00000000 --- a/electrical/src/main/scala/resonantinduction/electrical/levitator/PartLevitator.java +++ /dev/null @@ -1,688 +0,0 @@ -package resonantinduction.electrical.levitator; - -import java.lang.ref.WeakReference; -import java.util.List; - -import net.minecraft.block.Block; -import net.minecraft.block.BlockFluid; -import net.minecraft.block.BlockLadder; -import net.minecraft.block.BlockSnow; -import net.minecraft.block.BlockVine; -import net.minecraft.entity.Entity; -import net.minecraft.entity.item.EntityItem; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.inventory.IInventory; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.AxisAlignedBB; -import net.minecraft.util.MovingObjectPosition; -import net.minecraft.world.World; -import net.minecraftforge.common.ForgeDirection; -import net.minecraftforge.fluids.IFluidBlock; -import resonant.lib.render.EnumColor; -import resonant.lib.utility.LinkUtility; -import resonant.lib.utility.WrenchUtility; -import resonant.lib.utility.inventory.InventoryUtility; -import resonantinduction.core.MultipartUtility; -import resonantinduction.core.Settings; -import resonantinduction.core.prefab.part.PartFace; -import resonantinduction.electrical.Electrical; -import resonantinduction.electrical.tesla.TileTesla; -import universalelectricity.api.vector.Vector3; -import universalelectricity.api.vector.VectorWorld; -import codechicken.lib.data.MCDataInput; -import codechicken.lib.data.MCDataOutput; -import codechicken.multipart.TMultiPart; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; - -public class PartLevitator extends PartFace -{ - /** - * true = suck, false = push - */ - public boolean input = true; - /** - * Client Side Only - */ - public float renderRotation = 0; - private int pushDelay; - private AxisAlignedBB operationBounds; - private AxisAlignedBB suckBounds; - /** - * Pathfinding - */ - private ThreadLevitatorPathfinding thread; - private PathfinderLevitator pathfinder; - private WeakReference linked; - private int lastCalcTime = 0; - /** - * Color of beam - */ - private int dyeID = TileTesla.DEFAULT_COLOR; - /** - * Linking - */ - private byte saveLinkSide; - private VectorWorld saveLinkVector; - - public static boolean canBePath(World world, Vector3 position) - { - Block block = Block.blocksList[position.getBlockID(world)]; - return block == null || (block instanceof BlockSnow || block instanceof BlockVine || block instanceof BlockLadder || ((block instanceof BlockFluid || block instanceof IFluidBlock) && block.blockID != Block.lavaMoving.blockID && block.blockID != Block.lavaStill.blockID)); - } - - @Override - public boolean activate(EntityPlayer player, MovingObjectPosition part, ItemStack itemStack) - { - if (WrenchUtility.isWrench(itemStack)) - { - if (tryLink(LinkUtility.getLink(itemStack), LinkUtility.getSide(itemStack))) - { - if (world().isRemote) - { - player.addChatMessage("Successfully linked devices."); - } - LinkUtility.clearLink(itemStack); - } - else - { - if (world().isRemote) - { - player.addChatMessage("Marked link for device."); - } - - LinkUtility.setLink(itemStack, new VectorWorld(world(), x(), y(), z())); - LinkUtility.setSide(itemStack, (byte) placementSide.ordinal()); - } - - return true; - } - - if (player.getCurrentEquippedItem() != null) - { - if (player.getCurrentEquippedItem().itemID == Item.dyePowder.itemID) - { - setDye(player.getCurrentEquippedItem().getItemDamage()); - - if (!player.capabilities.isCreativeMode) - { - player.inventory.decrStackSize(player.inventory.currentItem, 1); - } - - return true; - } - } - - if (player.isSneaking()) - { - input = !input; - } - - updateBounds(); - updatePath(); - - return true; - } - - /** - * Link methods - */ - public boolean tryLink(VectorWorld linkVector, byte side) - { - if (linkVector != null) - { - TMultiPart part = MultipartUtility.getMultipart(world(), linkVector, side); - - if (part instanceof PartLevitator) - { - setLink((PartLevitator) part, true); - } - - return true; - } - - return false; - } - - public PartLevitator getLink() - { - return linked != null && linked.get() != null && linked.get().world() != null ? linked.get() : null; - } - - @Override - public void onEntityCollision(Entity entity) - { - /** - * Attempt to pull items in. - */ - if (!world().isRemote && input && canFunction() && entity instanceof EntityItem) - { - EntityItem entityItem = (EntityItem) entity; - IInventory inventory = (IInventory) getLatched(); - - ItemStack remains = InventoryUtility.putStackInInventory(inventory, entityItem.getEntityItem(), placementSide.getOpposite().getOpposite().ordinal(), false); - - if (remains == null) - { - entityItem.setDead(); - } - else - { - entityItem.getEntityItem().stackSize = remains.stackSize; - } - - // TODO: Add redstone pulse and reaction? - } - } - - @Override - public void update() - { - if (ticks % 60 == 0) - { - updateBounds(); - } - - super.update(); - - pushDelay = Math.max(0, pushDelay - 1); - - /** - * Try to use temp link vectors from save/loads to link. - */ - if (saveLinkVector != null) - { - tryLink(saveLinkVector, saveLinkSide); - saveLinkVector = null; - } - - if (canFunction()) - { - IInventory inventory = (IInventory) getLatched(); - - /** - * Place items or take items from the inventory into the world. - */ - if (!input) - { - renderRotation = Math.min(20, renderRotation + 0.8f); - - /** - * Attempt to push items out. - */ - if (pushDelay == 0) - { - ItemStack retrieved = InventoryUtility.takeTopItemFromInventory(inventory, placementSide.getOpposite().getOpposite().ordinal()); - - if (retrieved != null) - { - EntityItem entityItem = getItemWithPosition(retrieved); - - if (!world().isRemote) - { - world().spawnEntityInWorld(entityItem); - } - - pushDelay = Settings.LEVITATOR_PUSH_DELAY; - } - } - } - else if (input) - { - renderRotation = Math.max(0, renderRotation - 0.8f); - } - - final int renderPeriod = 1; - final boolean renderBeam = ticks % renderPeriod == 0 && hasLink() && getLink().input != input; - - if (!input) - { - if (hasLink()) - { - if (getLink().input) - { - /** - * Linked usage. - */ - if (thread != null) - { - PathfinderLevitator newPath = thread.getPath(); - - if (newPath != null) - { - pathfinder = newPath; - pathfinder.results.add(getPosition()); - thread = null; - } - } - - // Push entity along path. - if (pathfinder != null) - { - List results = pathfinder.results; - - /** - * Draw default beams. - */ - if (renderBeam) - { - Electrical.proxy.renderElectricShock(world(), getBeamSpawnPosition(), getPosition().translate(0.5), EnumColor.DYES[dyeID].toColor(), world().rand.nextFloat() > 0.9); - Electrical.proxy.renderElectricShock(world(), getLink().getPosition().translate(0.5), getLink().getBeamSpawnPosition(), EnumColor.DYES[dyeID].toColor(), world().rand.nextFloat() > 0.9); - } - - for (int i = 0; i < results.size(); i++) - { - Vector3 result = results.get(i).clone(); - - if (canBeMovePath(world(), result)) - { - if (i - 1 >= 0) - { - Vector3 prevResult = results.get(i - 1).clone(); - - Vector3 difference = prevResult.clone().difference(result); - final ForgeDirection direction = difference.toForgeDirection(); - - if (renderBeam) - { - Electrical.proxy.renderElectricShock(world(), prevResult.clone().translate(0.5), result.clone().translate(0.5), EnumColor.DYES[dyeID].toColor(), world().rand.nextFloat() > 0.9); - } - - AxisAlignedBB bounds = AxisAlignedBB.getAABBPool().getAABB(result.x, result.y, result.z, result.x + 1, result.y + 1, result.z + 1); - List entities = world().getEntitiesWithinAABB(EntityItem.class, bounds); - - for (EntityItem entityItem : entities) - { - moveEntity(entityItem, direction, result); - } - } - - } - else - { - updatePath(); - break; - } - } - } - else - { - updatePath(); - } - } - } - else if (operationBounds != null) - { - /** - * Non-linked usage. - */ - for (EntityItem entityItem : (List) world().getEntitiesWithinAABB(EntityItem.class, operationBounds)) - { - moveEntity(entityItem, placementSide.getOpposite(), getPosition()); - } - - if (ticks % renderPeriod == 0) - { - Electrical.proxy.renderElectricShock(world(), getBeamSpawnPosition(), new Vector3(operationBounds.maxX - 0.5 - placementSide.offsetX / 3f, operationBounds.maxY - 0.5 - placementSide.offsetY / 3f, operationBounds.maxZ - 0.5 - placementSide.offsetZ / 3f), EnumColor.DYES[dyeID].toColor(), world().rand.nextFloat() > 0.9); - } - } - } - - lastCalcTime--; - } - } - - public boolean canBeMovePath(World world, Vector3 position) - { - TMultiPart partSelf = MultipartUtility.getMultipart(new VectorWorld(world, position), placementSide.ordinal()); - if (partSelf == this) - { - return true; - } - - TMultiPart partLink = MultipartUtility.getMultipart(new VectorWorld(world, position), getLink().placementSide.ordinal()); - if (partLink == getLink()) - { - return true; - } - - return canBePath(world, position); - } - - private boolean hasLink() - { - return getLink() != null && getLink().getLink() == this; - } - - private void moveEntity(EntityItem entityItem, ForgeDirection direction, Vector3 lockVector) - { - switch (direction) - { - case DOWN: - entityItem.setPosition(lockVector.x + 0.5, entityItem.posY, lockVector.z + 0.5); - - entityItem.motionX = 0; - entityItem.motionZ = 0; - - if (!input) - { - entityItem.motionY = Math.max(-Settings.LEVITATOR_MAX_SPEED, entityItem.motionY - Settings.LEVITATOR_ACCELERATION); - } - else - { - entityItem.motionY = Math.min(Settings.LEVITATOR_MAX_SPEED, entityItem.motionY + .04 + Settings.LEVITATOR_ACCELERATION); - } - - break; - case UP: - - entityItem.setPosition(lockVector.x + 0.5, entityItem.posY, lockVector.z + 0.5); - - entityItem.motionX = 0; - entityItem.motionZ = 0; - - if (!input) - { - entityItem.motionY = Math.min(Settings.LEVITATOR_MAX_SPEED, entityItem.motionY + .04 + Settings.LEVITATOR_ACCELERATION); - } - else - { - entityItem.motionY = Math.max(-Settings.LEVITATOR_MAX_SPEED, entityItem.motionY - Settings.LEVITATOR_ACCELERATION); - } - - break; - case NORTH: - - entityItem.setPosition(lockVector.x + 0.5, lockVector.y + 0.5, entityItem.posZ); - - entityItem.motionX = 0; - entityItem.motionY = 0; - - if (!input) - { - entityItem.motionZ = Math.max(-Settings.LEVITATOR_MAX_SPEED, entityItem.motionZ - Settings.LEVITATOR_ACCELERATION); - } - else - { - entityItem.motionZ = Math.min(Settings.LEVITATOR_MAX_SPEED, entityItem.motionZ + Settings.LEVITATOR_ACCELERATION); - } - - break; - case SOUTH: - - entityItem.setPosition(lockVector.x + 0.5, lockVector.y + 0.5, entityItem.posZ); - - entityItem.motionX = 0; - entityItem.motionY = 0; - - if (!input) - { - entityItem.motionZ = Math.min(Settings.LEVITATOR_MAX_SPEED, entityItem.motionZ + Settings.LEVITATOR_ACCELERATION); - } - else - { - entityItem.motionZ = Math.max(-Settings.LEVITATOR_MAX_SPEED, entityItem.motionZ - Settings.LEVITATOR_ACCELERATION); - } - - break; - case WEST: - - entityItem.setPosition(entityItem.posX, lockVector.y + 0.5, lockVector.z + 0.5); - - entityItem.motionY = 0; - entityItem.motionZ = 0; - - if (!input) - { - entityItem.motionX = Math.max(-Settings.LEVITATOR_MAX_SPEED, entityItem.motionX - Settings.LEVITATOR_ACCELERATION); - } - else - { - entityItem.motionX = Math.min(Settings.LEVITATOR_MAX_SPEED, entityItem.motionX + Settings.LEVITATOR_ACCELERATION); - } - - break; - case EAST: - entityItem.setPosition(entityItem.posX, lockVector.y + 0.5, lockVector.z + 0.5); - - entityItem.motionY = 0; - entityItem.motionZ = 0; - - if (!input) - { - entityItem.motionX = Math.min(Settings.LEVITATOR_MAX_SPEED, entityItem.motionX + Settings.LEVITATOR_ACCELERATION); - } - else - { - entityItem.motionX = Math.max(-Settings.LEVITATOR_MAX_SPEED, entityItem.motionX - Settings.LEVITATOR_ACCELERATION); - } - - break; - default: - break; - } - - entityItem.ticksExisted = 1; - entityItem.isAirBorne = true; - entityItem.delayBeforeCanPickup = 1; - entityItem.age = Math.max(entityItem.age - 1, 0); - } - - private EntityItem getItemWithPosition(ItemStack toSend) - { - EntityItem item = new EntityItem(world(), x() + 0.5, y() + 0.5, z() + 0.5, toSend); - item.motionX = 0; - item.motionY = 0; - item.motionZ = 0; - return item; - } - - public void updateBounds() - { - suckBounds = operationBounds = null; - - ForgeDirection dir = placementSide.getOpposite(); - MovingObjectPosition mop = world().clip(getPosition().translate(dir).toVec3(), getPosition().translate(dir, Settings.LEVITATOR_MAX_REACH).toVec3()); - - int reach = Settings.LEVITATOR_MAX_REACH; - - if (mop != null) - { - if (MultipartUtility.getMultipart(world(), mop.blockX, mop.blockY, mop.blockZ, placementSide.getOpposite().ordinal()) instanceof PartLevitator) - { - reach = (int) Math.min(getPosition().distance(new Vector3(mop.hitVec)), reach); - - if (dir.offsetX + dir.offsetY + dir.offsetZ < 0) - { - operationBounds = AxisAlignedBB.getBoundingBox(x() + dir.offsetX * reach, y() + dir.offsetY * reach, z() + dir.offsetZ * reach, x() + 1, y() + 1, z() + 1); - suckBounds = AxisAlignedBB.getBoundingBox(x() + dir.offsetX, y() + dir.offsetY, z() + dir.offsetZ, x() + 1, y() + 1, z() + 1); - } - else - { - operationBounds = AxisAlignedBB.getBoundingBox(x(), y(), z(), x() + 1 + dir.offsetX * reach, y() + 1 + dir.offsetY * reach, z() + 1 + dir.offsetZ * reach); - suckBounds = AxisAlignedBB.getBoundingBox(x(), y(), z(), x() + 1 + dir.offsetX, y() + 1 + dir.offsetY, z() + 1 + dir.offsetZ); - } - } - } - } - - @Override - public void onNeighborChanged() - { - super.onNeighborChanged(); - updateBounds(); - } - - public boolean canFunction() - { - //TODO remove (false) when working on - return false && isLatched() && !world().isBlockIndirectlyGettingPowered(x(), y(), z()); - } - - public boolean isLatched() - { - return getLatched() != null; - } - - public TileEntity getLatched() - { - ForgeDirection side = placementSide; - - TileEntity tile = world().getBlockTileEntity(x() + side.offsetX, y() + side.offsetY, z() + side.offsetZ); - - if (tile instanceof IInventory) - { - return tile; - } - - return null; - } - - @Override - public void readDesc(MCDataInput packet) - { - super.readDesc(packet); - input = packet.readBoolean(); - dyeID = packet.readByte(); - - if (packet.readBoolean()) - { - saveLinkVector = new VectorWorld(packet.readNBTTagCompound()); - saveLinkSide = packet.readByte(); - } - } - - @Override - public void writeDesc(MCDataOutput packet) - { - super.writeDesc(packet); - packet.writeBoolean(input); - packet.writeByte(dyeID); - - if (getLink() != null) - { - packet.writeBoolean(true); - NBTTagCompound nbt = new NBTTagCompound(); - new VectorWorld(getLink().world(), getLink().x(), getLink().y(), getLink().z()).writeToNBT(nbt); - packet.writeNBTTagCompound(nbt); - packet.writeByte(getLink().placementSide.ordinal()); - } - else - { - packet.writeBoolean(false); - } - - } - - @Override - public void load(NBTTagCompound nbt) - { - super.load(nbt); - - this.input = nbt.getBoolean("suck"); - this.dyeID = nbt.getInteger("dyeID"); - - if (nbt.hasKey("link")) - { - saveLinkVector = new VectorWorld(nbt.getCompoundTag("link")); - saveLinkSide = nbt.getByte("linkSide"); - } - } - - @Override - public void save(NBTTagCompound nbt) - { - super.save(nbt); - - nbt.setBoolean("suck", input); - nbt.setInteger("dyeID", dyeID); - - if (getLink() != null && getLink().world() != null) - { - nbt.setCompoundTag("link", new VectorWorld(getLink().world(), getLink().x(), getLink().y(), getLink().z()).writeToNBT(new NBTTagCompound())); - nbt.setByte("linkSide", (byte) getLink().placementSide.ordinal()); - } - } - - /** - * Link between two TileEntities, do pathfinding operation. - */ - public void setLink(PartLevitator levitator, boolean setOpponent) - { - if (getLink() != null && setOpponent) - { - getLink().setLink(null, false); - } - - linked = new WeakReference(levitator); - - if (setOpponent) - { - getLink().setLink(this, false); - } - - updatePath(); - } - - public void updatePath() - { - if (thread == null && getLink() != null && lastCalcTime <= 0) - { - pathfinder = null; - - Vector3 start = getPosition(); - Vector3 target = new Vector3(getLink().x(), getLink().y(), getLink().z()); - - if (start.distance(target) < Settings.MAX_LEVITATOR_DISTANCE) - { - if (canBeMovePath(world(), start) && canBeMovePath(world(), target)) - { - thread = new ThreadLevitatorPathfinding(new PathfinderLevitator(world(), target), start); - thread.start(); - lastCalcTime = 40; - } - } - } - } - - public void setDye(int dye) - { - dyeID = dye; - world().markBlockForUpdate(x(), y(), z()); - } - - public Vector3 getPosition() - { - return new Vector3(x(), y(), z()); - } - - public Vector3 getBeamSpawnPosition() - { - return new Vector3(x() + 0.5 + placementSide.offsetX / 3f, y() + 0.5 + placementSide.offsetY / 3f, z() + 0.5 + placementSide.offsetZ / 3f); - } - - @Override - protected ItemStack getItem() - { - return new ItemStack(Electrical.itemLevitator); - } - - @Override - public String getType() - { - return "resonant_induction_levitator"; - } - - @Override - @SideOnly(Side.CLIENT) - public void renderDynamic(codechicken.lib.vec.Vector3 pos, float frame, int pass) - { - if (pass == 0) - { - RenderLevitator.INSTANCE.render(this, pos.x, pos.y, pos.z); - } - } -} diff --git a/electrical/src/main/scala/resonantinduction/electrical/levitator/PathfinderLevitator.java b/electrical/src/main/scala/resonantinduction/electrical/levitator/PathfinderLevitator.java deleted file mode 100644 index 74f46338..00000000 --- a/electrical/src/main/scala/resonantinduction/electrical/levitator/PathfinderLevitator.java +++ /dev/null @@ -1,79 +0,0 @@ -package resonantinduction.electrical.levitator; - -import java.util.HashSet; -import java.util.Set; - -import net.minecraft.world.World; -import net.minecraftforge.common.ForgeDirection; -import resonant.lib.path.IPathCallBack; -import resonant.lib.path.Pathfinder; -import resonant.lib.path.PathfinderAStar; -import universalelectricity.api.vector.Vector3; - -/** - * Uses the well known A* Pathfinding algorithm. - * - * @author Calclavia - * - */ -public class PathfinderLevitator extends PathfinderAStar -{ - private World world; - private double maxSearchDistance; - - public PathfinderLevitator(final World world, final Vector3 goal) - { - super(new IPathCallBack() - { - @Override - public Set getConnectedNodes(Pathfinder finder, Vector3 currentNode) - { - Set neighbors = new HashSet(); - - for (int i = 0; i < 6; i++) - { - Vector3 neighbor = currentNode.clone().translate(ForgeDirection.getOrientation(i)); - - if (PartLevitator.canBePath(world, neighbor) || neighbor.equals(goal)) - { - neighbors.add(neighbor); - } - } - - return neighbors; - } - - @Override - public boolean onSearch(Pathfinder finder, Vector3 start, Vector3 node) - { - return !(start.distance(node) < (start.distance(goal) * 2)); - } - }, goal); - - this.world = world; - } - - @Override - public boolean findNodes(Vector3 start) - { - int blockCount = 0; - - for (int i = 0; i < 6; i++) - { - ForgeDirection direction = ForgeDirection.getOrientation(i); - Vector3 neighbor = this.goal.clone().translate(new Vector3(direction.offsetX, direction.offsetY, direction.offsetZ)); - - if (!PartLevitator.canBePath(this.world, neighbor)) - { - blockCount++; - } - } - - if (blockCount >= 6) - { - return false; - } - - return super.findNodes(start); - } -} diff --git a/electrical/src/main/scala/resonantinduction/electrical/levitator/RenderLevitator.java b/electrical/src/main/scala/resonantinduction/electrical/levitator/RenderLevitator.java deleted file mode 100644 index 97968e33..00000000 --- a/electrical/src/main/scala/resonantinduction/electrical/levitator/RenderLevitator.java +++ /dev/null @@ -1,68 +0,0 @@ -package resonantinduction.electrical.levitator; - -import net.minecraft.item.ItemStack; -import net.minecraft.util.ResourceLocation; -import net.minecraftforge.client.model.AdvancedModelLoader; -import net.minecraftforge.client.model.IModelCustom; - -import org.lwjgl.opengl.GL11; - -import resonant.api.items.ISimpleItemRenderer; -import resonant.lib.render.RenderUtility; -import resonantinduction.core.Reference; -import cpw.mods.fml.client.FMLClientHandler; - -public class RenderLevitator implements ISimpleItemRenderer -{ - public static final RenderLevitator INSTANCE = new RenderLevitator(); - - public static final IModelCustom MODEL = AdvancedModelLoader.loadModel(Reference.MODEL_DIRECTORY + "levitator.tcn"); - public static final ResourceLocation TEXTURE_ON = new ResourceLocation(Reference.DOMAIN, Reference.MODEL_PATH + "levitator_on.png"); - public static final ResourceLocation TEXTURE_OFF = new ResourceLocation(Reference.DOMAIN, Reference.MODEL_PATH + "levitator_off.png"); - - public void render(PartLevitator part, double x, double y, double z) - { - GL11.glPushMatrix(); - GL11.glTranslated(x + 0.5, y + 0.5, z + 0.5); - RenderUtility.rotateFaceToSideNoTranslate(part.placementSide); - - if (part.canFunction()) - RenderUtility.bind(TEXTURE_ON); - else - RenderUtility.bind(TEXTURE_OFF); - - GL11.glPushMatrix(); - GL11.glRotatef(part.renderRotation, 1, 0, 0); - MODEL.renderOnly("ring1"); - GL11.glPopMatrix(); - - GL11.glPushMatrix(); - GL11.glRotatef(-part.renderRotation, 1, 0, 0); - MODEL.renderOnly("ring2"); - GL11.glPopMatrix(); - - GL11.glPushMatrix(); - GL11.glRotatef(part.renderRotation, 0, 0, 1); - MODEL.renderOnly("ring3"); - GL11.glPopMatrix(); - - GL11.glPushMatrix(); - GL11.glRotatef(-part.renderRotation, 0, 0, 1); - MODEL.renderOnly("ring4"); - GL11.glPopMatrix(); - - MODEL.renderAllExcept("ring1", "ring2", "ring3", "ring4"); - - GL11.glPopMatrix(); - } - - @Override - public void renderInventoryItem(ItemStack itemStack) - { - GL11.glPushMatrix(); - GL11.glTranslatef(0f, 0.5f, 0f); - FMLClientHandler.instance().getClient().renderEngine.bindTexture(TEXTURE_OFF); - MODEL.renderAll(); - GL11.glPopMatrix(); - } -} diff --git a/electrical/src/main/scala/resonantinduction/electrical/levitator/ThreadLevitatorPathfinding.java b/electrical/src/main/scala/resonantinduction/electrical/levitator/ThreadLevitatorPathfinding.java deleted file mode 100644 index fb35c0e8..00000000 --- a/electrical/src/main/scala/resonantinduction/electrical/levitator/ThreadLevitatorPathfinding.java +++ /dev/null @@ -1,41 +0,0 @@ -/** - * - */ -package resonantinduction.electrical.levitator; - -import universalelectricity.api.vector.Vector3; - -/** - * @author Calclavia - * - */ -public class ThreadLevitatorPathfinding extends Thread -{ - private boolean isCompleted = false; - private PathfinderLevitator pathfinder; - private Vector3 start; - - public ThreadLevitatorPathfinding(PathfinderLevitator pathfinder, Vector3 start) - { - this.pathfinder = pathfinder; - this.start = start; - this.setPriority(Thread.MIN_PRIORITY); - } - - @Override - public void run() - { - this.pathfinder.findNodes(this.start); - this.isCompleted = true; - } - - public PathfinderLevitator getPath() - { - if (this.isCompleted) - { - return this.pathfinder; - } - - return null; - } -}