From c057c4c88a0ea0f75d7061e444dd3fa18beda6ef Mon Sep 17 00:00:00 2001 From: fewizz Date: Sat, 11 Jul 2015 13:32:13 +0300 Subject: [PATCH] Doing progress --- .settings/org.eclipse.jdt.core.prefs | 13 + build.properties | 2 +- .../java/tombenpotter/emt/EMTResearch.java | 2 +- .../tombenpotter/emt/ElectroMagicTools.java | 2 +- .../emt/client/model/ModelCpecialArmor.java | 234 +++++++++ .../emt/client/model/ModelWings.java | 4 +- ...{ItemBaseBaubles.java => ItemOneRing.java} | 4 +- .../emt/common/items/ItemRegistry.java | 120 ++--- .../common/items/armor/ItemEMTQuantum.java | 467 ++++++++++++++++++ .../items/armor/wings/ItemFeatherWing.java | 61 ++- .../items/armor/wings/ItemNanoWing.java | 31 +- .../items/armor/wings/ItemQuantumWing.java | 33 +- .../wings/ItemThaumiumReinforcedWing.java | 23 +- .../common/util/DungeonChestGenerator.java | 2 +- .../emt/common/util/EntityEventHandler.java | 28 -- .../emt/common/util/RandomHelper.java | 15 + .../emt/common/util/RenderPlayerHandler.java | 18 + .../items/armor/armor_quantum_chest.png | Bin 0 -> 316 bytes .../armor/armor_quantum_chest_jetpack.png | Bin 0 -> 324 bytes .../armor/armor_quantum_chest_wing_n.png | Bin 0 -> 325 bytes .../armor/armor_quantum_chest_wing_q.png | Bin 0 -> 320 bytes .../armor/armor_quantum_chest_wing_t.png | Bin 0 -> 324 bytes .../items/armor/wing_feather_flat.png | Bin 1768 -> 0 bytes .../textures/items/armor/wing_random.png | Bin 2323 -> 0 bytes .../textures/items/armor/wing_random2.png | Bin 1872 -> 0 bytes .../textures/items/drill_diamond.png | Bin 383 -> 0 bytes .../textures/items/drill_gold.png | Bin 378 -> 0 bytes .../textures/items/drill_iron.png | Bin 372 -> 0 bytes .../textures/items/drill_stone.png | Bin 374 -> 0 bytes .../textures/items/drill_wood.png | Bin 387 -> 0 bytes .../textures/models/featherwing_noString.png | Bin 4237 -> 0 bytes .../textures/models/quantum_jetpack.png | Bin 0 -> 1883 bytes .../textures/models/quantum_wings_n.png | Bin 0 -> 1855 bytes .../textures/models/quantum_wings_q.png | Bin 0 -> 1754 bytes .../textures/models/quantum_wings_t.png | Bin 0 -> 2007 bytes 35 files changed, 842 insertions(+), 217 deletions(-) create mode 100644 .settings/org.eclipse.jdt.core.prefs create mode 100644 src/main/java/tombenpotter/emt/client/model/ModelCpecialArmor.java rename src/main/java/tombenpotter/emt/common/items/{ItemBaseBaubles.java => ItemOneRing.java} (98%) create mode 100644 src/main/java/tombenpotter/emt/common/items/armor/ItemEMTQuantum.java delete mode 100644 src/main/java/tombenpotter/emt/common/util/EntityEventHandler.java create mode 100644 src/main/java/tombenpotter/emt/common/util/RenderPlayerHandler.java create mode 100644 src/main/resources/assets/electromagictools/textures/items/armor/armor_quantum_chest.png create mode 100644 src/main/resources/assets/electromagictools/textures/items/armor/armor_quantum_chest_jetpack.png create mode 100644 src/main/resources/assets/electromagictools/textures/items/armor/armor_quantum_chest_wing_n.png create mode 100644 src/main/resources/assets/electromagictools/textures/items/armor/armor_quantum_chest_wing_q.png create mode 100644 src/main/resources/assets/electromagictools/textures/items/armor/armor_quantum_chest_wing_t.png delete mode 100644 src/main/resources/assets/electromagictools/textures/items/armor/wing_feather_flat.png delete mode 100644 src/main/resources/assets/electromagictools/textures/items/armor/wing_random.png delete mode 100644 src/main/resources/assets/electromagictools/textures/items/armor/wing_random2.png delete mode 100644 src/main/resources/assets/electromagictools/textures/items/drill_diamond.png delete mode 100644 src/main/resources/assets/electromagictools/textures/items/drill_gold.png delete mode 100644 src/main/resources/assets/electromagictools/textures/items/drill_iron.png delete mode 100644 src/main/resources/assets/electromagictools/textures/items/drill_stone.png delete mode 100644 src/main/resources/assets/electromagictools/textures/items/drill_wood.png delete mode 100644 src/main/resources/assets/electromagictools/textures/models/featherwing_noString.png create mode 100644 src/main/resources/assets/electromagictools/textures/models/quantum_jetpack.png create mode 100644 src/main/resources/assets/electromagictools/textures/models/quantum_wings_n.png create mode 100644 src/main/resources/assets/electromagictools/textures/models/quantum_wings_q.png create mode 100644 src/main/resources/assets/electromagictools/textures/models/quantum_wings_t.png diff --git a/.settings/org.eclipse.jdt.core.prefs b/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 0000000..871fd2d --- /dev/null +++ b/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,13 @@ +# +#Tue Jul 07 09:13:42 MSK 2015 +org.eclipse.jdt.core.compiler.debug.localVariable=generate +org.eclipse.jdt.core.compiler.compliance=1.6 +org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve +org.eclipse.jdt.core.compiler.debug.sourceFile=generate +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6 +org.eclipse.jdt.core.compiler.problem.enumIdentifier=error +org.eclipse.jdt.core.compiler.debug.lineNumber=generate +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled +org.eclipse.jdt.core.compiler.source=1.6 +org.eclipse.jdt.core.compiler.problem.assertIdentifier=error diff --git a/build.properties b/build.properties index 4966406..3d65396 100644 --- a/build.properties +++ b/build.properties @@ -2,6 +2,6 @@ #Wed Feb 24 14:31:53 PDT 2015 package_group=com.tombenpotter.emt mc_version=1.7.10 -forge_version=10.13.2.1307 +forge_version=10.13.4.1481 mod_version=2.0.0Alpha2 mod_name=ElectroMagicTools diff --git a/src/main/java/tombenpotter/emt/EMTResearch.java b/src/main/java/tombenpotter/emt/EMTResearch.java index f8d134b..eb0b87c 100644 --- a/src/main/java/tombenpotter/emt/EMTResearch.java +++ b/src/main/java/tombenpotter/emt/EMTResearch.java @@ -64,7 +64,7 @@ public class EMTResearch { research.setPages(new ResearchPage(text)); text = "1"; - research = new EMTResearchItem("The One Ring", "EMT", new AspectList(), 6, -7, 0, new ItemStack(ItemRegistry.baseBaubles)).setRound().setAutoUnlock().registerResearchItem(); + research = new EMTResearchItem("The One Ring", "EMT", new AspectList(), 6, -7, 0, new ItemStack(ItemRegistry.onering)).setRound().setAutoUnlock().registerResearchItem(); research.setPages(new ResearchPage(text)); text = "1"; diff --git a/src/main/java/tombenpotter/emt/ElectroMagicTools.java b/src/main/java/tombenpotter/emt/ElectroMagicTools.java index 18a8c99..8f440a9 100644 --- a/src/main/java/tombenpotter/emt/ElectroMagicTools.java +++ b/src/main/java/tombenpotter/emt/ElectroMagicTools.java @@ -52,6 +52,7 @@ public class ElectroMagicTools { ElectroMagicTools.logger.info(localize("console.EMT.preInit.begin")); ConfigHandler.init(event.getSuggestedConfigurationFile()); + MinecraftForge.EVENT_BUS.register(new RenderPlayerHandler()); FMLCommonHandler.instance().bus().register(new EventHandlerEMT()); Registry.register(); EssentiasOutputs.addPrimalOutputs(); @@ -67,7 +68,6 @@ public class ElectroMagicTools { ElectroMagicTools.logger.info(localize("console.EMT.init.loadProxies")); proxy.load(); ElectroMagicTools.logger.info(localize("console.EMT.init.mobDrops")); - MinecraftForge.EVENT_BUS.register(new EntityEventHandler()); ElectroMagicTools.logger.info(localize("console.EMT.init.dungeon")); DungeonChestGenerator.generateLoot(); diff --git a/src/main/java/tombenpotter/emt/client/model/ModelCpecialArmor.java b/src/main/java/tombenpotter/emt/client/model/ModelCpecialArmor.java new file mode 100644 index 0000000..091febb --- /dev/null +++ b/src/main/java/tombenpotter/emt/client/model/ModelCpecialArmor.java @@ -0,0 +1,234 @@ +package tombenpotter.emt.client.model; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.client.model.ModelBase; +import net.minecraft.client.model.ModelBiped; +import net.minecraft.client.model.ModelRenderer; +import net.minecraft.entity.Entity; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.util.MathHelper; + +import org.lwjgl.opengl.GL11; + +@SideOnly(Side.CLIENT) +public class ModelCpecialArmor extends ModelBiped +{ + public ModelRenderer bipedHead; + public ModelRenderer bipedBody; + public ModelRenderer bipedRightArm; + public ModelRenderer bipedLeftArm; + + public ModelRenderer rightWing; + public ModelRenderer leftWing; + public ModelRenderer center; + + public ModelRenderer jetpack; + + public boolean isJumping; + + public int type = 0;//0 - nothing, 1 - jetpack, 2 - wings + public int heldItemLeft; + public int heldItemRight; + public boolean isSneak; + public boolean aimedBow; + private static final String __OBFID = "CL_00000840"; + + public ModelCpecialArmor() + { + this(0.0F, 0); + } + + public ModelCpecialArmor(float p_i1148_1_, int type) + { + this(p_i1148_1_, 0.0F, 64, 32, type); + } + + public ModelCpecialArmor(float p_i1149_1_, float p_i1149_2_, int p_i1149_3_, int p_i1149_4_, int type) + { + + this.type = type; + switch(this.type){ + case 1 : + this.textureWidth = 128; + this.textureHeight = 96; + this.jetpack = new ModelRenderer(this, 16, 69); + this.jetpack.setTextureSize(64, 48); + this.jetpack.addBox(-4.0F, -12.0F, -2.0F, 8, 12 * 2, 4, p_i1149_1_ * 2); + this.jetpack.setRotationPoint(0.0F, 0.0F + p_i1149_2_, 0.0F); + break; + + case 2 : + this.textureWidth = 64; + this.textureHeight = 64; + rightWing = new ModelRenderer(this, 24, 0 + 32); + rightWing.addBox(-11F, -1F, 0F, 11, 13, 1); + rightWing.setRotationPoint(-2F, 0F, 3F); + rightWing.setTextureSize(64, 32); + rightWing.mirror = false; + setRotation(rightWing, 0F, 0.1570796F, 0F); + + leftWing = new ModelRenderer(this, 0, 0 + 32); + leftWing.addBox(0F, -1F, 0F, 11, 13, 1); + leftWing.setRotationPoint(2F, 0F, 3F); + leftWing.setTextureSize(64, 32); + leftWing.mirror = true; + setRotation(leftWing, 0F, -0.1570796F, 0F); + + center = new ModelRenderer(this, 0, 14 + 32); + center.addBox(0F, 0F, 1F, 8, 14, 1); + center.setRotationPoint(-4F, 0F, 3F); + center.setTextureSize(64, 32); + center.mirror = true; + setRotation(center, 0F, 0F, 0F); + break; + } + + this.bipedHead = new ModelRenderer(this, 0, 0); + this.bipedHead.addBox(-4.0F, -8.0F, -4.0F, 8, 8, 8, p_i1149_1_); + this.bipedHead.setRotationPoint(0.0F, 0.0F + p_i1149_2_, 0.0F); + this.bipedBody = new ModelRenderer(this, 16, 16); + this.bipedBody.addBox(-4.0F, 0.0F, -2.0F, 8, 12, 4, p_i1149_1_); + this.bipedBody.setRotationPoint(0.0F, 0.0F + p_i1149_2_, 0.0F); + this.bipedRightArm = new ModelRenderer(this, 40, 16); + this.bipedRightArm.addBox(-3.0F, -2.0F, -2.0F, 4, 12, 4, p_i1149_1_); + this.bipedRightArm.setRotationPoint(-5.0F, 2.0F + p_i1149_2_, 0.0F); + this.bipedLeftArm = new ModelRenderer(this, 40, 16); + this.bipedLeftArm.mirror = true; + this.bipedLeftArm.addBox(-1.0F, -2.0F, -2.0F, 4, 12, 4, p_i1149_1_); + this.bipedLeftArm.setRotationPoint(5.0F, 2.0F + p_i1149_2_, 0.0F); + } + + private void setRotation (ModelRenderer model, float x, float y, float z) + { + model.rotateAngleX = x; + model.rotateAngleY = y; + model.rotateAngleZ = z; + } + + public void render(Entity p_78088_1_, float p_78088_2_, float p_78088_3_, float p_78088_4_, float p_78088_5_, float p_78088_6_, float p_78088_7_) + { + this.setRotationAngles(p_78088_2_, p_78088_3_, p_78088_4_, p_78088_5_, p_78088_6_, p_78088_7_, p_78088_1_); + + this.bipedBody.render(p_78088_7_); + this.bipedRightArm.render(p_78088_7_); + this.bipedLeftArm.render(p_78088_7_); + switch(this.type){ + case 1 : + this.jetpack.render(p_78088_7_); + break; + case 2 : + this.center.render(p_78088_7_); + this.leftWing.render(p_78088_7_); + this.rightWing.render(p_78088_7_); + } + + } + + public void setRotationAngles(float p_78087_1_, float p_78087_2_, float p_78087_3_, float p_78087_4_, float p_78087_5_, float p_78087_6_, Entity entity) + { + this.bipedHead.rotateAngleY = p_78087_4_ / (180F / (float)Math.PI); + this.bipedHead.rotateAngleX = p_78087_5_ / (180F / (float)Math.PI); + this.bipedRightArm.rotateAngleX = MathHelper.cos(p_78087_1_ * 0.6662F + (float)Math.PI) * 2.0F * p_78087_2_ * 0.5F; + this.bipedLeftArm.rotateAngleX = MathHelper.cos(p_78087_1_ * 0.6662F) * 2.0F * p_78087_2_ * 0.5F; + this.bipedRightArm.rotateAngleZ = 0.0F; + this.bipedLeftArm.rotateAngleZ = 0.0F; + + if (entity.isRiding()) + { + this.bipedRightArm.rotateAngleX += -((float)Math.PI / 5F); + this.bipedLeftArm.rotateAngleX += -((float)Math.PI / 5F); + } + + if(isJumping){ + this.rightWing.rotateAngleY = 0.5f; + this.leftWing.rotateAngleY = -0.5f; + } + + if (this.heldItemLeft != 0) + { + this.bipedLeftArm.rotateAngleX = this.bipedLeftArm.rotateAngleX * 0.5F - ((float)Math.PI / 10F) * (float)this.heldItemLeft; + } + + if (this.heldItemRight != 0) + { + this.bipedRightArm.rotateAngleX = this.bipedRightArm.rotateAngleX * 0.5F - ((float)Math.PI / 10F) * (float)this.heldItemRight; + } + + this.bipedRightArm.rotateAngleY = 0.0F; + this.bipedLeftArm.rotateAngleY = 0.0F; + float f6; + float f7; + + if (this.onGround > -9990.0F) + { + f6 = this.onGround; + this.bipedBody.rotateAngleY = MathHelper.sin(MathHelper.sqrt_float(f6) * (float)Math.PI * 2.0F) * 0.2F; + this.bipedRightArm.rotationPointZ = MathHelper.sin(this.bipedBody.rotateAngleY) * 5.0F; + this.bipedRightArm.rotationPointX = -MathHelper.cos(this.bipedBody.rotateAngleY) * 5.0F; + this.bipedLeftArm.rotationPointZ = -MathHelper.sin(this.bipedBody.rotateAngleY) * 5.0F; + this.bipedLeftArm.rotationPointX = MathHelper.cos(this.bipedBody.rotateAngleY) * 5.0F; + this.bipedRightArm.rotateAngleY += this.bipedBody.rotateAngleY; + this.bipedLeftArm.rotateAngleY += this.bipedBody.rotateAngleY; + this.bipedLeftArm.rotateAngleX += this.bipedBody.rotateAngleY; + f6 = 1.0F - this.onGround; + f6 *= f6; + f6 *= f6; + f6 = 1.0F - f6; + f7 = MathHelper.sin(f6 * (float)Math.PI); + float f8 = MathHelper.sin(this.onGround * (float)Math.PI) * -(this.bipedHead.rotateAngleX - 0.7F) * 0.75F; + this.bipedRightArm.rotateAngleX = (float)((double)this.bipedRightArm.rotateAngleX - ((double)f7 * 1.2D + (double)f8)); + this.bipedRightArm.rotateAngleY += this.bipedBody.rotateAngleY * 2.0F; + this.bipedRightArm.rotateAngleZ = MathHelper.sin(this.onGround * (float)Math.PI) * -0.4F; + } + + if (entity.isSneaking()) + { + this.bipedBody.rotateAngleX = 0.5F; + switch(this.type){ + case 1 : + this.jetpack.rotateAngleX = 0.5F; + break; + case 2 : + this.center.offsetY -= 0.1; + this.rightWing.offsetY -= 0.1; + this.leftWing.offsetY -= 0.1; + this.center.rotateAngleX = 0.5F; + this.rightWing.rotateAngleX = 0.5F; + this.leftWing.rotateAngleX = 0.5F; + break; + } + this.bipedRightArm.rotateAngleX += 0.4F; + this.bipedLeftArm.rotateAngleX += 0.4F; + this.bipedHead.rotationPointY = 1.0F; + } + else + { + this.bipedBody.rotateAngleX = 0.0F; + this.bipedHead.rotationPointY = 0.0F; + } + + this.bipedRightArm.rotateAngleZ += MathHelper.cos(p_78087_3_ * 0.09F) * 0.05F + 0.05F; + this.bipedLeftArm.rotateAngleZ -= MathHelper.cos(p_78087_3_ * 0.09F) * 0.05F + 0.05F; + this.bipedRightArm.rotateAngleX += MathHelper.sin(p_78087_3_ * 0.067F) * 0.05F; + this.bipedLeftArm.rotateAngleX -= MathHelper.sin(p_78087_3_ * 0.067F) * 0.05F; + + if (this.aimedBow) + { + f6 = 0.0F; + f7 = 0.0F; + this.bipedRightArm.rotateAngleZ = 0.0F; + this.bipedLeftArm.rotateAngleZ = 0.0F; + this.bipedRightArm.rotateAngleY = -(0.1F - f6 * 0.6F) + this.bipedHead.rotateAngleY; + this.bipedLeftArm.rotateAngleY = 0.1F - f6 * 0.6F + this.bipedHead.rotateAngleY + 0.4F; + this.bipedRightArm.rotateAngleX = -((float)Math.PI / 2F) + this.bipedHead.rotateAngleX; + this.bipedLeftArm.rotateAngleX = -((float)Math.PI / 2F) + this.bipedHead.rotateAngleX; + this.bipedRightArm.rotateAngleX -= f6 * 1.2F - f7 * 0.4F; + this.bipedLeftArm.rotateAngleX -= f6 * 1.2F - f7 * 0.4F; + this.bipedRightArm.rotateAngleZ += MathHelper.cos(p_78087_3_ * 0.09F) * 0.05F + 0.05F; + this.bipedLeftArm.rotateAngleZ -= MathHelper.cos(p_78087_3_ * 0.09F) * 0.05F + 0.05F; + this.bipedRightArm.rotateAngleX += MathHelper.sin(p_78087_3_ * 0.067F) * 0.05F; + this.bipedLeftArm.rotateAngleX -= MathHelper.sin(p_78087_3_ * 0.067F) * 0.05F; + } + } +} \ No newline at end of file diff --git a/src/main/java/tombenpotter/emt/client/model/ModelWings.java b/src/main/java/tombenpotter/emt/client/model/ModelWings.java index 798c787..670ed58 100644 --- a/src/main/java/tombenpotter/emt/client/model/ModelWings.java +++ b/src/main/java/tombenpotter/emt/client/model/ModelWings.java @@ -11,6 +11,8 @@ public class ModelWings extends ModelBiped { ModelRenderer rightWing; ModelRenderer leftWing; ModelRenderer center; + + public boolean isJumping = false; public ModelWings() { textureWidth = 64; @@ -59,7 +61,7 @@ public class ModelWings extends ModelBiped { public void setRotationAngles(float f, float f1, float pt, float f3, float f4, float f5, Entity entity){ - if(Minecraft.getMinecraft().gameSettings.keyBindJump.getIsKeyPressed()){ + if(isJumping){ this.rightWing.rotateAngleY = 0.5f; this.leftWing.rotateAngleY = -0.5f; } diff --git a/src/main/java/tombenpotter/emt/common/items/ItemBaseBaubles.java b/src/main/java/tombenpotter/emt/common/items/ItemOneRing.java similarity index 98% rename from src/main/java/tombenpotter/emt/common/items/ItemBaseBaubles.java rename to src/main/java/tombenpotter/emt/common/items/ItemOneRing.java index 4d6f86d..9605b3d 100644 --- a/src/main/java/tombenpotter/emt/common/items/ItemBaseBaubles.java +++ b/src/main/java/tombenpotter/emt/common/items/ItemOneRing.java @@ -22,13 +22,13 @@ import tombenpotter.emt.common.util.TextHelper; import java.util.List; import java.util.Random; -public class ItemBaseBaubles extends ItemBase implements IBauble { +public class ItemOneRing extends ItemBase implements IBauble { public IIcon[] icon = new IIcon[16]; public static int wornTick; public Random random = new Random(); - public ItemBaseBaubles() { + public ItemOneRing() { super("bauble"); this.setHasSubtypes(true); this.setMaxDamage(0); diff --git a/src/main/java/tombenpotter/emt/common/items/ItemRegistry.java b/src/main/java/tombenpotter/emt/common/items/ItemRegistry.java index 7ee80d3..c94e830 100644 --- a/src/main/java/tombenpotter/emt/common/items/ItemRegistry.java +++ b/src/main/java/tombenpotter/emt/common/items/ItemRegistry.java @@ -1,5 +1,6 @@ package tombenpotter.emt.common.items; +import ic2.core.init.InternalName; import cpw.mods.fml.common.registry.GameRegistry; import net.minecraft.init.Blocks; import net.minecraft.init.Items; @@ -10,6 +11,7 @@ import net.minecraftforge.common.util.EnumHelper; import net.minecraftforge.oredict.OreDictionary; import thaumcraft.api.ThaumcraftApi; import tombenpotter.emt.ModInformation; +import tombenpotter.emt.common.items.armor.ItemEMTQuantum; import tombenpotter.emt.common.items.armor.wings.ItemFeatherWing; import tombenpotter.emt.common.items.armor.wings.ItemThaumiumReinforcedWing; import tombenpotter.emt.common.items.armor.boots.ItemElectricBootsTraveller; @@ -37,15 +39,11 @@ import tombenpotter.emt.common.items.tools.omnitools.ItemOmnitoolIron; import tombenpotter.emt.common.items.tools.omnitools.ItemOmnitoolThaumium; public class ItemRegistry { - - //public static Item woodenDrill, stoneDrill, ironDrill, goldenDrill, diamondDrill, copperDrill, tinDrill, leadDrill, bronzeDrill; - //public static Item woodenChainsaw, stoneChainsaw, ironChainsaw, goldenChainsaw, diamondChainsaw, copperChainsaw, tinChainsaw, leadChainsaw, bronzeChainsaw; - //public static Item ironOmnitool, goldenOmnitool, diamondOmnitool, copperOmnitool, tinOmnitool, leadOmnitool, bronzeOmnitool; - //public static Item woodCarver, stoneCarver, ironCarver, obsidianCarver, diamondCarver; - public static Item baseBaubles, materials, craftingComponents; - - public static Item focusChristmas; - + + public static Item onering; + public static Item materials; + public static Item craftingComponents; + public static Item focusChristmas; public static Item thaumiumDrill; public static Item thaumiumChainsaw; public static Item quantumThaumicHelmet; @@ -77,45 +75,39 @@ public class ItemRegistry { public static Item thaumiumWing; public static Item nanoWing; public static Item quantumWing; - + public static Item quantumArmor; public static ItemArmor.ArmorMaterial featherWingMaterial = EnumHelper.addArmorMaterial("FEATEHRWiNG", 1, new int[]{2, 2, 2, 2}, 6); - - //public static Item.ToolMaterial copperMaterial = EnumHelper.addToolMaterial("copperToolMaterial", 2, 300, 6.0F, 2.0F, 14); - //public static Item.ToolMaterial tinMaterial = EnumHelper.addToolMaterial("tinToolMatierial", 2, 200, 8.0F, 4F, 18); - //public static Item.ToolMaterial leadMaterial = EnumHelper.addToolMaterial("leadToolMaterial", 2, 250, 7.0F, 3F, 15); - //public static Item.ToolMaterial bronzeMaterial = EnumHelper.addToolMaterial("bronzeToolMaterial", 2, 350, 7.0F, 3.0F, 16); - public static void registerItems() { - //craftingComponents = new ItemCraftingComponents("components"); - //GameRegistry.registerItem(craftingComponents, "craftingComponents"); - //focusChristmas = new ItemChristmasFocus(); - //GameRegistry.registerItem(focusChristmas, "FocusChristmas"); - + quantumArmor = new ItemEMTQuantum(InternalName.itemArmorQuantumChestplate, 1).setUnlocalizedName(ModInformation.modid + "quantum"); + itemEMTItems = new ItemMaterials().setUnlocalizedName(ModInformation.modid + ".emtitems"); GameRegistry.registerItem(itemEMTItems, "EMTItems"); - emtBauble = new ItemIC2Baubles().setUnlocalizedName(ModInformation.modid + ".emtbauble"); GameRegistry.registerItem(emtBauble, "EMTBaubles"); - baseBaubles = new ItemBaseBaubles(); - GameRegistry.registerItem(baseBaubles, "BaseBaubles"); + onering = new ItemOneRing(); + GameRegistry.registerItem(onering, "BaseBaubles"); - electricGoggles = new ItemElectricGoggles(ItemArmor.ArmorMaterial.IRON, 3, 0).setUnlocalizedName(ModInformation.modid + ".goggles.electric"); GameRegistry.registerItem(electricGoggles, "ElectricGogglesRevealing"); + nanoThaumicHelmet = new ItemNanoGoggles(ItemArmor.ArmorMaterial.DIAMOND, 3, 0).setUnlocalizedName(ModInformation.modid + ".goggles.nano"); GameRegistry.registerItem(nanoThaumicHelmet, "NanosuitGogglesRevealing"); + quantumThaumicHelmet = new ItemQuantumGoggles(ItemArmor.ArmorMaterial.DIAMOND, 3, 0).setUnlocalizedName(ModInformation.modid + ".goggles.quantum"); GameRegistry.registerItem(quantumThaumicHelmet, "QuantumGogglesRevealing"); + solarHelmetRevealing = new ItemSolarHelmetRevealing(ItemArmor.ArmorMaterial.DIAMOND, 3, 0).setUnlocalizedName(ModInformation.modid + ".goggles.solar"); GameRegistry.registerItem(solarHelmetRevealing, "SolarHelmetRevealing"); electricBootsTraveller = new ItemElectricBootsTraveller(3, 3).setUnlocalizedName(ModInformation.modid + ".boots.traveller.electric"); GameRegistry.registerItem(electricBootsTraveller, "ElectricBootsTraveller"); + nanoBootsTraveller = new ItemNanoBootsTraveller(3, 3).setUnlocalizedName(ModInformation.modid + ".boots.traveller.nano"); GameRegistry.registerItem(nanoBootsTraveller, "NanoBootsTraveller"); + quantumBootsTraveller = new ItemQuantumBootsTraveller(3, 3).setUnlocalizedName(ModInformation.modid + ".boots.traveller.quantum"); GameRegistry.registerItem(quantumBootsTraveller, "QuantumBootsTraveller"); @@ -124,17 +116,22 @@ public class ItemRegistry { featherWing = new ItemFeatherWing(featherWingMaterial, 7, 1).setUnlocalizedName(ModInformation.modid + ".wing.feather"); GameRegistry.registerItem(featherWing, "FeatherWing"); + thaumiumWing = new ItemThaumiumReinforcedWing(ThaumcraftApi.armorMatThaumium, 7, 1).setUnlocalizedName(ModInformation.modid + ".wing.thaumium"); GameRegistry.registerItem(thaumiumWing, "ThaumiumWing"); + nanoWing = new ItemNanoWing(ItemArmor.ArmorMaterial.DIAMOND, 7, 1).setUnlocalizedName(ModInformation.modid + ".wing.nano"); GameRegistry.registerItem(nanoWing, "NanosuitWing"); + quantumWing = new ItemQuantumWing(ItemArmor.ArmorMaterial.DIAMOND, 7, 1).setUnlocalizedName(ModInformation.modid + ".wing.quantum"); GameRegistry.registerItem(quantumWing, "QuantumWing"); thorHammer = new ItemThorHammer().setUnlocalizedName(ModInformation.modid + ".hammer"); GameRegistry.registerItem(thorHammer, "Mjolnir"); + taintedThorHammer = new ItemThorHammerBroken().setUnlocalizedName(ModInformation.modid + ".hammer.broken"); GameRegistry.registerItem(taintedThorHammer, "TaintedMjolnir"); + electricThorHammer = new ItemElectricThorHammer().setUnlocalizedName(ModInformation.modid + ".hammer.electric"); GameRegistry.registerItem(electricThorHammer, "SuperchargedMjolnir"); @@ -143,96 +140,41 @@ public class ItemRegistry { diamondChainsaw = new ItemDiamondChainsaw().setUnlocalizedName(ModInformation.modid + ".chainsaw.diamond"); GameRegistry.registerItem(diamondChainsaw, "DiamondChainsaw"); + thaumiumChainsaw = new ItemThaumiumChainsaw().setUnlocalizedName(ModInformation.modid + ".chainsaw.thaumium"); GameRegistry.registerItem(thaumiumChainsaw, "ThaumiumChainsaw"); ironOmnitool = new ItemOmnitoolIron().setUnlocalizedName(ModInformation.modid + ".omnitool.iron"); GameRegistry.registerItem(ironOmnitool, "Omnitool"); + diamondOmnitool = new ItemOmnitoolDiamond().setUnlocalizedName(ModInformation.modid + ".omnitool.diamond"); GameRegistry.registerItem(diamondOmnitool, "Diamond Omnitool"); + thaumiumOmnitool = new ItemOmnitoolThaumium().setUnlocalizedName(ModInformation.modid + ".omnitool.thaumium"); GameRegistry.registerItem(thaumiumOmnitool, "ThaumiumOmnitool"); streamChainsaw = new ItemStreamChainsaw().setUnlocalizedName(ModInformation.modid + ".chainsaw.stream"); GameRegistry.registerItem(streamChainsaw, "ChainsawStream"); + rockbreakerDrill = new ItemRockbreakerDrill().setUnlocalizedName(ModInformation.modid + ".drill.rockbreaker"); GameRegistry.registerItem(rockbreakerDrill, "DrillRockbreaker"); + electricHoeGrowth = new ItemElectricHoeGrowth().setUnlocalizedName(ModInformation.modid + ".hoeofgrowth.electric"); GameRegistry.registerItem(electricHoeGrowth, "ElectricHoeGrowth"); explosionFocus = new ItemExplosionFocus(); GameRegistry.registerItem(explosionFocus, "ExplosionFocus"); + christmasFocus = new ItemChristmasFocus(); GameRegistry.registerItem(christmasFocus, "ChristmasFocus"); + shieldFocus = new ItemShieldFocus(); GameRegistry.registerItem(shieldFocus, "ShieldFocus"); + chargeFocus = new ItemChargeFocus(); GameRegistry.registerItem(chargeFocus, "ChargingFocus"); + wandChargeFocus = new ItemWandChargingFocus(); GameRegistry.registerItem(wandChargeFocus, "WandChargingFocus"); - - //woodCarver = new ItemShardCarver(8).setUnlocalizedName(ModInformation.modid + ".carver.wood"); - //GameRegistry.registerItem(woodCarver, "woodCarver"); - //stoneCarver = new ItemShardCarver(32).setUnlocalizedName(ModInformation.modid + ".carver.stone"); - //GameRegistry.registerItem(stoneCarver, "stoneCarver"); - //ironCarver = new ItemShardCarver(128).setUnlocalizedName(ModInformation.modid + ".carver.iron"); - //GameRegistry.registerItem(ironCarver, "ironCarver"); - //obsidianCarver = new ItemShardCarver(256).setUnlocalizedName(ModInformation.modid + ".carver.obsidian"); - //GameRegistry.registerItem(obsidianCarver, "obsidianCarver"); - //diamondCarver = new ItemShardCarver(1204).setUnlocalizedName(ModInformation.modid + ".carver.diamond"); - //GameRegistry.registerItem(diamondCarver, "diamondCarver"); - - //woodenDrill = new ItemVanillaDrill(Item.ToolMaterial.WOOD, 75, "drill_wood", new ItemStack(Item.getItemFromBlock(Blocks.planks))).setUnlocalizedName(ModInformation.modid + ".drill.wood"); - //GameRegistry.registerItem(woodenDrill, "woodenDrill"); - //stoneDrill = new ItemVanillaDrill(Item.ToolMaterial.STONE, 165, "drill_stone", new ItemStack(Item.getItemFromBlock(Blocks.cobblestone))).setUnlocalizedName(ModInformation.modid + ".drill.stone"); - //GameRegistry.registerItem(stoneDrill, "stoneDrill"); - //ironDrill = new ItemVanillaDrill(Item.ToolMaterial.IRON, 400, "drill_iron", new ItemStack(Items.iron_ingot)).setUnlocalizedName(ModInformation.modid + ".drill.iron"); - //GameRegistry.registerItem(ironDrill, "ironDrill"); - //goldenDrill = new ItemVanillaDrill(Item.ToolMaterial.GOLD, 55, "drill_gold", new ItemStack(Items.gold_ingot)).setUnlocalizedName(ModInformation.modid + ".drill.gold"); - //GameRegistry.registerItem(goldenDrill, "goldenDrill"); - //diamondDrill = new ItemVanillaDrill(Item.ToolMaterial.EMERALD, 2015, "drill_diamond", new ItemStack(Items.diamond)).setUnlocalizedName(ModInformation.modid + ".drill.diamond"); - //GameRegistry.registerItem(diamondDrill, "diamondDrill"); - //copperDrill = new ItemVanillaDrill(copperMaterial, 450, "drill_copper", OreDictionary.getOres("ingotCopper").get(0)).setUnlocalizedName(ModInformation.modid + ".drill.copper"); - //GameRegistry.registerItem(copperDrill, "copperDrill"); - //tinDrill = new ItemVanillaDrill(tinMaterial, 350, "drill_tin", OreDictionary.getOres("ingotTin").get(0)).setUnlocalizedName(ModInformation.modid + ".drill.tin"); - //GameRegistry.registerItem(tinDrill, "tinDrill"); - //leadDrill = new ItemVanillaDrill(leadMaterial, 400, "drill_lead", OreDictionary.getOres("ingotLead").get(0)).setUnlocalizedName(ModInformation.modid + ".drill.lead"); - //GameRegistry.registerItem(leadDrill, "leadDrill"); - //bronzeDrill = new ItemVanillaDrill(bronzeMaterial, 650, "drill_bronze", OreDictionary.getOres("ingotBronze").get(0)).setUnlocalizedName(ModInformation.modid + ".drill.bronze"); - //GameRegistry.registerItem(bronzeDrill, "bronzeDrill"); - - //woodenChainsaw = new ItemVanillaChainsaw(Item.ToolMaterial.WOOD, 75, "chainsaw_wooden", Item.getItemFromBlock(Blocks.planks)).setUnlocalizedName(ModInformation.modid + ".chainsaw.wood"); - //GameRegistry.registerItem(woodenChainsaw, "woodenChainsaw"); - //stoneChainsaw = new ItemVanillaChainsaw(Item.ToolMaterial.STONE, 165, "chainsaw_stone", Item.getItemFromBlock(Blocks.cobblestone)).setUnlocalizedName(ModInformation.modid + ".chainsaw.stone"); - //GameRegistry.registerItem(stoneChainsaw, "stoneChainsaw"); - //ironChainsaw = new ItemVanillaChainsaw(Item.ToolMaterial.IRON, 315, "chainsaw_iron", Items.iron_ingot, 3F).setUnlocalizedName(ModInformation.modid + ".chainsaw.iron"); - //GameRegistry.registerItem(ironChainsaw, "ironChainsaw"); - //goldenChainsaw = new ItemVanillaChainsaw(Item.ToolMaterial.GOLD, 55, "chainsaw_gold", Items.gold_ingot).setUnlocalizedName(ModInformation.modid + ".chainsaw.gold"); - //GameRegistry.registerItem(goldenChainsaw, "goldenChainsaw"); - //diamondChainsaw = new ItemVanillaChainsaw(Item.ToolMaterial.EMERALD, 2015, "chainsaw_diamond", Items.diamond, 6F).setUnlocalizedName(ModInformation.modid + ".chainsaw.diamond"); - //GameRegistry.registerItem(diamondChainsaw, "diamondChainsaw"); - //copperChainsaw = new ItemVanillaChainsaw(copperMaterial, 450, "chainsaw_copper", OreDictionary.getOres("ingotCopper").get(0).getItem(), 3F).setUnlocalizedName(ModInformation.modid + ".chainsaw.copper"); - //GameRegistry.registerItem(copperChainsaw, "copperChainsaw"); - //tinChainsaw = new ItemVanillaChainsaw(tinMaterial, 350, "chainsaw_tin", OreDictionary.getOres("ingotTin").get(0).getItem(), 5F).setUnlocalizedName(ModInformation.modid + ".chainsaw.tin"); - //GameRegistry.registerItem(tinChainsaw, "tinChainsaw"); - //leadChainsaw = new ItemVanillaChainsaw(leadMaterial, 400, "chainsaw_lead", OreDictionary.getOres("ingotLead").get(0).getItem(), 3.5F).setUnlocalizedName(ModInformation.modid + ".chainsaw.lead"); - //GameRegistry.registerItem(leadChainsaw, "leadChainsaw"); - //bronzeChainsaw = new ItemVanillaChainsaw(bronzeMaterial, 650, "chainsaw_bronze", OreDictionary.getOres("ingotBronze").get(0).getItem(), 4F).setUnlocalizedName(ModInformation.modid + ".chainsaw.bronze"); - //GameRegistry.registerItem(bronzeChainsaw, "bronzeChainsaw"); - - //ironOmnitool = new ItemVanillaOmnitool(Item.ToolMaterial.IRON, 500, "omnitool_iron", Items.iron_ingot).setUnlocalizedName(ModInformation.modid + ".omnitool.iron"); - //GameRegistry.registerItem(ironOmnitool, "ironOmnitool"); - //goldenOmnitool = new ItemVanillaOmnitool(Item.ToolMaterial.GOLD, 100, "omnitool_gold", Items.gold_ingot).setUnlocalizedName(ModInformation.modid + ".omnitool.gold"); - //GameRegistry.registerItem(goldenOmnitool, "goldenOmnitool"); - //diamondOmnitool = new ItemVanillaOmnitool(Item.ToolMaterial.EMERALD, 3900, "omnitool_diamond", Items.diamond).setUnlocalizedName(ModInformation.modid + ".omnitool.diamond"); - //GameRegistry.registerItem(diamondOmnitool, "diamondOmnitool"); - //copperOmnitool = new ItemVanillaOmnitool(copperMaterial, 850, "omnitool_copper", OreDictionary.getOres("ingotCopper").get(0).getItem()).setUnlocalizedName(ModInformation.modid + ".omnitool.copper"); - //GameRegistry.registerItem(copperOmnitool, "copperOmnitool"); - //tinOmnitool = new ItemVanillaOmnitool(tinMaterial, 640, "omnitool_tin", OreDictionary.getOres("ingotTin").get(0).getItem()).setUnlocalizedName(ModInformation.modid + ".omnitool.tin"); - //GameRegistry.registerItem(tinOmnitool, "tinOmnitool"); - //leadOmnitool = new ItemVanillaOmnitool(leadMaterial, 700, "omnitool_lead", OreDictionary.getOres("ingotLead").get(0).getItem()).setUnlocalizedName(ModInformation.modid + ".omnitool.lead"); - //GameRegistry.registerItem(leadOmnitool, "leadOmnitool"); - //bronzeOmnitool = new ItemVanillaOmnitool(bronzeMaterial, 950, "omnitool_bronze", OreDictionary.getOres("ingotBronze").get(0).getItem()).setUnlocalizedName(ModInformation.modid + ".omnitool.bronze"); - //GameRegistry.registerItem(bronzeOmnitool, "bronzeOmnitool"); } } \ No newline at end of file diff --git a/src/main/java/tombenpotter/emt/common/items/armor/ItemEMTQuantum.java b/src/main/java/tombenpotter/emt/common/items/armor/ItemEMTQuantum.java new file mode 100644 index 0000000..f992562 --- /dev/null +++ b/src/main/java/tombenpotter/emt/common/items/armor/ItemEMTQuantum.java @@ -0,0 +1,467 @@ +package tombenpotter.emt.common.items.armor; + +import cpw.mods.fml.common.eventhandler.EventBus; +import cpw.mods.fml.common.eventhandler.SubscribeEvent; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import ic2.api.item.ElectricItem; +import ic2.api.item.IC2Items; +import ic2.api.item.IElectricItemManager; +import ic2.core.IC2; +import ic2.core.IC2Achievements; +import ic2.core.IC2Potion; +import ic2.core.Ic2Items; +import ic2.core.Platform; +import ic2.core.audio.AudioManager; +import ic2.core.audio.AudioSource; +import ic2.core.audio.PositionSpec; +import ic2.core.init.InternalName; +import ic2.core.init.MainConfig; +import ic2.core.item.ItemTinCan; +import ic2.core.item.armor.ItemArmorElectric; +import ic2.core.util.ConfigUtil; +import ic2.core.util.Keyboard; +import ic2.core.util.StackUtil; + +import java.util.HashMap; +import java.util.LinkedList; +import java.util.List; +import java.util.Map; + +import tombenpotter.emt.ElectroMagicTools; +import tombenpotter.emt.ModInformation; +import tombenpotter.emt.client.model.ModelCpecialArmor; +import tombenpotter.emt.client.model.ModelWings; +import tombenpotter.emt.common.items.ItemRegistry; +import tombenpotter.emt.common.util.ConfigHandler; +import tombenpotter.emt.common.util.RandomHelper; +import tombenpotter.emt.common.util.TextHelper; +import net.minecraft.client.Minecraft; +import net.minecraft.client.model.ModelBiped; +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.inventory.Container; +import net.minecraft.item.EnumRarity; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.potion.Potion; +import net.minecraft.potion.PotionEffect; +import net.minecraft.util.DamageSource; +import net.minecraft.util.FoodStats; +import net.minecraft.util.IIcon; +import net.minecraft.util.MathHelper; +import net.minecraft.world.World; +import net.minecraftforge.common.ISpecialArmor; +import net.minecraftforge.common.ISpecialArmor.ArmorProperties; +import net.minecraftforge.common.MinecraftForge; +import net.minecraftforge.event.entity.living.LivingFallEvent; + +public class ItemEMTQuantum extends ItemArmorElectric { + + IIcon icon0; + IIcon icon1; + IIcon icon2; + IIcon icon3; + IIcon icon4; + public int f = 0; + boolean isHolding = false; + protected static final Map potionRemovalCost = new HashMap(); + private float jumpCharge; + public static AudioSource audioSource; + private static boolean lastJetpackUsed = false; + + public ItemEMTQuantum(InternalName internalName, int armorType1) { + super(internalName, InternalName.quantum, armorType1, 2000000, 12000.0D, 4); + + MinecraftForge.EVENT_BUS.register(this); + + this.setCreativeTab(ElectroMagicTools.tabEMT); + + potionRemovalCost.put(Integer.valueOf(Potion.poison.id), Integer.valueOf(10000)); + potionRemovalCost.put(Integer.valueOf(IC2Potion.radiation.id), Integer.valueOf(10000)); + potionRemovalCost.put(Integer.valueOf(Potion.wither.id), Integer.valueOf(25000)); + + } + + @SideOnly(Side.CLIENT) + public void registerIcons(IIconRegister iconRegister) { + icon0 = iconRegister.registerIcon(ModInformation.texturePath + ":armor/armor_quantum_chest"); + icon1 = iconRegister.registerIcon(ModInformation.texturePath + ":armor/armor_quantum_chest_jetpack"); + icon2 = iconRegister.registerIcon(ModInformation.texturePath + ":armor/armor_quantum_chest_wing_t"); + icon3 = iconRegister.registerIcon(ModInformation.texturePath + ":armor/armor_quantum_chest_wing_n"); + icon4 = iconRegister.registerIcon(ModInformation.texturePath + ":armor/armor_quantum_chest_wing_q"); + } + + @SideOnly(Side.CLIENT) + public IIcon getIconFromDamageForRenderPass(int par1, int par2) { + return getIconFromDamage(par1); + } + + @SubscribeEvent + public void onEntityLivingFallEvent(LivingFallEvent event) { + if ((IC2.platform.isSimulating()) && ((event.entity instanceof EntityLivingBase))) { + EntityLivingBase entity = (EntityLivingBase) event.entity; + ItemStack armor = entity.getEquipmentInSlot(1); + if ((armor != null) && (armor.getItem() == this)) { + int fallDamage = Math.max((int) event.distance - 10, 0); + double energyCost = getEnergyPerDamage() * fallDamage; + if (energyCost <= ElectricItem.manager.getCharge(armor)) { + ElectricItem.manager.discharge(armor, energyCost, Integer.MAX_VALUE, true, false, false); + event.setCanceled(true); + } + } + } + } + + public ISpecialArmor.ArmorProperties getProperties(EntityLivingBase entity, ItemStack armor, DamageSource source, double damage, int slot) + { + return super.getProperties(entity, armor, source, damage, slot); + } + + public double getDamageAbsorptionRatio() { + return 1.1D; + } + + public int getEnergyPerDamage() { + return 20000; + } + + @SideOnly(Side.CLIENT) + public EnumRarity getRarity(ItemStack stack) { + return EnumRarity.rare; + } + + public void onArmorTick(World world, EntityPlayer player, ItemStack itemStack) { + NBTTagCompound nbtData = StackUtil.getOrCreateNbtData(itemStack); + + byte toggleTimer = nbtData.getByte("toggleTimer"); + boolean ret = false; + + IC2.platform.profilerStartSection("QuantumBodyarmor"); + + boolean jetpack = nbtData.getBoolean("jetpack"); + boolean hoverMode = nbtData.getBoolean("hoverMode"); + boolean jetpackUsed = false; + if ((IC2.keyboard.isJumpKeyDown(player)) && (IC2.keyboard.isModeSwitchKeyDown(player)) && (toggleTimer == 0)) { + toggleTimer = 30; + hoverMode = !hoverMode; + if (IC2.platform.isSimulating()) + { + nbtData.setBoolean("hoverMode", hoverMode); + if (hoverMode) + { + IC2.platform.messagePlayer(player, "Hover Mode enabled.", new Object[0]); + } else + { + IC2.platform.messagePlayer(player, "Hover Mode disabled.", new Object[0]); + } + } + } + + if(player.inventory.getCurrentItem() != null){ + if(IC2.keyboard.isSneakKeyDown(player) && (player.inventory.getCurrentItem().getUnlocalizedName().equals("ic2.itemArmorJetpackElectric")) && toggleTimer == 0){ + toggleTimer = 30; + if (IC2.platform.isSimulating()) { + player.inventory.armorInventory[2].stackTagCompound.setBoolean("jetpack", true); + IC2.platform.messagePlayer(player, "Jetpack enabled.", new Object[0]); + if(player.inventory.armorInventory[2] == itemStack){ + player.inventory.armorInventory[2].stackTagCompound.setString("useother", "Jetpack"); + player.inventory.armorInventory[2].stackTagCompound.setInteger("jetpackCharge", (int) ElectricItem.manager.getCharge(player.inventory.getCurrentItem())); + player.inventory.setInventorySlotContents(player.inventory.currentItem, null); + } + } + } + } + + if(player.inventory.getCurrentItem() != null){ + if(IC2.keyboard.isSneakKeyDown(player) && (player.inventory.getCurrentItem().getUnlocalizedName().equals("item.EMT.wing.thaumium")) && toggleTimer == 0){ + toggleTimer = 30; + if (IC2.platform.isSimulating()) { + IC2.platform.messagePlayer(player, "Thaumium wings enabled.", new Object[0]); + if(player.inventory.armorInventory[2] == itemStack){ + player.inventory.armorInventory[2].stackTagCompound.setString("useother", "TW"); + player.inventory.setInventorySlotContents(player.inventory.currentItem, null); + } + } + } + } + + if(player.inventory.getCurrentItem() != null){ + if(IC2.keyboard.isSneakKeyDown(player) && (player.inventory.getCurrentItem().getUnlocalizedName().equals("item.EMT.wing.nano")) && toggleTimer == 0){ + toggleTimer = 30; + if (IC2.platform.isSimulating()) { + IC2.platform.messagePlayer(player, "Nano wings enabled.", new Object[0]); + if(player.inventory.armorInventory[2] == itemStack){ + player.inventory.armorInventory[2].stackTagCompound.setString("useother", "NW"); + player.inventory.setInventorySlotContents(player.inventory.currentItem, null); + } + } + } + } + + if(player.inventory.getCurrentItem() != null){ + if(IC2.keyboard.isSneakKeyDown(player) && (player.inventory.getCurrentItem().getUnlocalizedName().equals("item.EMT.wing.quantum")) && toggleTimer == 0){ + toggleTimer = 30; + if (IC2.platform.isSimulating()) { + IC2.platform.messagePlayer(player, "Quantum wings enabled.", new Object[0]); + if(player.inventory.armorInventory[2] == itemStack){ + player.inventory.armorInventory[2].stackTagCompound.setString("useother", "QW"); + player.inventory.setInventorySlotContents(player.inventory.currentItem, null); + } + } + } + } + + if(player.inventory.getCurrentItem() == null && IC2.keyboard.isBoostKeyDown(player) && IC2.keyboard.isSneakKeyDown(player) && toggleTimer == 0 && IC2.platform.isSimulating()){ + toggleTimer = 30; + if(player.inventory.armorInventory[2] == itemStack){ + if(player.inventory.getCurrentItem() == null){ + if(player.inventory.armorInventory[2].stackTagCompound.getString("useother").equals("Jetpack")){ + IC2.platform.messagePlayer(player, "Jetpack disabled.", new Object[0]); + jetpack = false; + player.inventory.armorInventory[2].stackTagCompound.setString("useother", "None"); + ItemStack charged = new ItemStack(IC2Items.getItem("electricJetpack").getItem()); + ElectricItem.manager.charge(charged, player.inventory.armorInventory[2].stackTagCompound.getInteger("jetpackCharge"), player.inventory.armorInventory[2].stackTagCompound.getInteger("jetpackCharge"), true, false); + player.inventory.setInventorySlotContents(player.inventory.currentItem, charged); + } + + if(player.inventory.armorInventory[2].stackTagCompound.getString("useother").equals("TW")){ + IC2.platform.messagePlayer(player, "Thaumium wings disabled.", new Object[0]); + player.inventory.armorInventory[2].stackTagCompound.setString("useother", "None"); + player.inventory.setInventorySlotContents(player.inventory.currentItem, new ItemStack(ItemRegistry.thaumiumWing)); + } + + if(player.inventory.armorInventory[2].stackTagCompound.getString("useother").equals("NW")){ + IC2.platform.messagePlayer(player, "Nano wings disabled.", new Object[0]); + player.inventory.armorInventory[2].stackTagCompound.setString("useother", "None"); + player.inventory.setInventorySlotContents(player.inventory.currentItem, new ItemStack(ItemRegistry.nanoWing)); + } + + if(player.inventory.armorInventory[2].stackTagCompound.getString("useother").equals("QW")){ + IC2.platform.messagePlayer(player, "Quantum wings disabled.", new Object[0]); + player.inventory.armorInventory[2].stackTagCompound.setString("useother", "None"); + player.inventory.setInventorySlotContents(player.inventory.currentItem, new ItemStack(ItemRegistry.quantumWing)); + } + } + } + } + + if ((jetpack) && ((IC2.keyboard.isJumpKeyDown(player)) && (player.inventory.armorInventory[2].stackTagCompound.getString("useother").equals("Jetpack")) || ((hoverMode) && (player.motionY < -0.029999999329447746D)))) { + jetpackUsed = useJetpack(player, hoverMode, itemStack); + } + + if ((player.inventory.armorInventory[2].stackTagCompound.getString("useother").equals("TW"))) { + useWings(player, itemStack, world, 0.15f, 0.8f, 0.5f); + } + + if ((player.inventory.armorInventory[2].stackTagCompound.getString("useother").equals("NW"))) { + useWings(player, itemStack, world, 0.25f, 0.7f, 0.3f); + } + + if ((player.inventory.armorInventory[2].stackTagCompound.getString("useother").equals("QW"))) { + useWings(player, itemStack, world, 0.33f, 0.6f, 0.3f); + } + + if ((IC2.platform.isSimulating()) && (toggleTimer > 0)) { + toggleTimer = (byte) (toggleTimer - 1); + + nbtData.setByte("toggleTimer", toggleTimer); + } + if ((IC2.platform.isRendering()) && (player == IC2.platform.getPlayerInstance())) { + if (lastJetpackUsed != jetpackUsed) { + if (jetpackUsed) { + if (audioSource == null) { + audioSource = IC2.audioManager.createSource(player, PositionSpec.Backpack, "Tools/Jetpack/JetpackLoop.ogg", true, false, IC2.audioManager.getDefaultVolume()); + } + if (audioSource != null) { + audioSource.play(); + } + } else if (audioSource != null) { + audioSource.remove(); + audioSource = null; + } + lastJetpackUsed = jetpackUsed; + } + if (audioSource != null) { + audioSource.updatePosition(); + } + } + + if(world.isRemote) + getIconIndex(itemStack); + + ret = jetpackUsed; + + player.extinguish(); + + IC2.platform.profilerEndSection(); + + if (ret) { + player.inventoryContainer.detectAndSendChanges(); + } + } + + @SideOnly(Side.CLIENT) + @Override + public IIcon getIconIndex(ItemStack stack){ + if((stack.stackTagCompound.getString("useother")).equals("Jetpack")){ + return icon1; + } + if((stack.stackTagCompound.getString("useother")).equals("TW")){ + return icon2; + } + if((stack.stackTagCompound.getString("useother")).equals("NW")){ + return icon3; + } + if((stack.stackTagCompound.getString("useother")).equals("QW")){ + return icon4; + } + return icon0; + } + + @Override + public int getItemEnchantability() { + if (ConfigHandler.enchanting == false) { + return 0; + } else { + return 4; + } + } + + @Override + @SideOnly(Side.CLIENT) + public String getArmorTexture(ItemStack stack, Entity entity, int slot, String type) { + if((stack.stackTagCompound.getString("useother")).equals("Jetpack")){ + return ModInformation.texturePath + ":textures/models/quantum_jetpack.png"; + } + if((stack.stackTagCompound.getString("useother")).equals("TW")){ + return ModInformation.texturePath + ":textures/models/quantum_wings_t.png"; + } + if((stack.stackTagCompound.getString("useother")).equals("NW")){ + return ModInformation.texturePath + ":textures/models/quantum_wings_n.png"; + } + if((stack.stackTagCompound.getString("useother")).equals("QW")){ + return ModInformation.texturePath + ":textures/models/quantum_wings_q.png"; + } + return super.getArmorTexture(stack, entity, slot, type); + } + + @Override + @SideOnly(Side.CLIENT) + public ModelBiped getArmorModel(EntityLivingBase entityLiving, ItemStack stack, int armorSlot) { + if((stack.stackTagCompound.getString("useother")).equals("Jetpack")){ + ModelCpecialArmor mbm = new ModelCpecialArmor(1, 1); + return mbm; + } + if((stack.stackTagCompound.getString("useother")).equals("TW") || (stack.stackTagCompound.getString("useother")).equals("NW") || (stack.stackTagCompound.getString("useother")).equals("QW")){ + ModelCpecialArmor mbm = new ModelCpecialArmor(1, 2); + mbm.isJumping = stack.stackTagCompound.getBoolean("isJumping"); + return mbm; + } + return super.getArmorModel(entityLiving, stack, armorSlot); + } + + @Override + public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean par4) { + list.add(String.valueOf((int)ElectricItem.manager.getCharge(stack)) + " EU"); + if((stack.stackTagCompound.getString("useother")).equals("Jetpack")){ + list.add((stack.stackTagCompound.getInteger("jetpackCharge")) + " EU JETPACK"); + } + } + + public boolean useJetpack(EntityPlayer player, boolean hoverMode, ItemStack stack) { + int jetpackMaxCharge = 30000; + + ItemStack jetpack = player.inventory.armorInventory[2]; + if (stack.stackTagCompound.getInteger("jetpackCharge") == 0){ + return false; + } + float power = 1.0F; + float dropPercentage = 0.05F; + if (((float)stack.stackTagCompound.getInteger("jetpackCharge") / (float)jetpackMaxCharge) <= dropPercentage){ + power = (float) (power * (stack.stackTagCompound.getInteger("jetpackCharge") / (float)jetpackMaxCharge) * dropPercentage); + } + if (IC2.keyboard.isForwardKeyDown(player)) { + float retruster = 3.5F; + if (hoverMode) { + retruster = 0.5F; + } + float forwardpower = power * retruster * 2.0F; + if (forwardpower > 0.0F) { + player.moveFlying(0.0F, 0.4F * forwardpower, 0.02F); + } + } + + int worldHeight = IC2.getWorldHeight(player.worldObj); + + double y = player.posY; + if (y > worldHeight - 25) { + if (y > worldHeight) { + y = worldHeight; + } + power = (float) (power * ((worldHeight - y) / 25.0D)); + } + double prevmotion = player.motionY; + player.motionY = Math.min(player.motionY + power * 0.2F, 0.6000000238418579D); + if (hoverMode) { + float maxHoverY = -0.025F; + if (IC2.keyboard.isSneakKeyDown(player)) { + maxHoverY = -0.1F; + } + if (IC2.keyboard.isJumpKeyDown(player)) { + maxHoverY = 0.1F; + } + if (player.motionY > maxHoverY) { + player.motionY = maxHoverY; + if (prevmotion > player.motionY) { + player.motionY = prevmotion; + } + } + } + double consume = 8.0D; + if (hoverMode) { + consume = 10.0D; + } + stack.stackTagCompound.setInteger("jetpackCharge", (int)(stack.stackTagCompound.getInteger("jetpackCharge") - consume)); + player.fallDistance = 0.0F; + player.distanceWalkedModified = 0.0F; + IC2.platform.resetPlayerInAirTime(player); + return true; + } + + void useWings(EntityPlayer player, ItemStack stack, World world, float motionY, float motionXZ, float f1){ + NBTTagCompound nbtData = StackUtil.getOrCreateNbtData(stack); + + nbtData.setBoolean("isJumping", IC2.keyboard.isJumpKeyDown(player)); + if(nbtData.getBoolean("isJumping")){ + nbtData.setBoolean("isHolding", true); + f += 1; + if(f > 7) f = 7; + } + else if(nbtData.getBoolean("isHolding")){ + nbtData.setBoolean("isHolding", false); + player.motionY = motionY * f; + player.motionX /= motionXZ; + player.motionZ /= motionXZ; + f = 0; + } + + if (nbtData.getBoolean("isJumping") && !player.onGround && player.motionY < 0 && !player.capabilities.isCreativeMode) + player.motionY *= f1; + + if (player.isInWater() && !player.capabilities.isCreativeMode) player.motionY += -0.2; + + if(ConfigHandler.impactOfRain){ + if ((player.worldObj.isRaining() || player.worldObj.isThundering()) && !player.capabilities.isCreativeMode) + player.motionY = -0.3; + } + + if (player.isSneaking() && !player.onGround) player.motionY = -0.6; + + if (player.fallDistance > 0.0F) player.fallDistance = 0; + } +} \ No newline at end of file diff --git a/src/main/java/tombenpotter/emt/common/items/armor/wings/ItemFeatherWing.java b/src/main/java/tombenpotter/emt/common/items/armor/wings/ItemFeatherWing.java index 0ec56ec..5980d23 100644 --- a/src/main/java/tombenpotter/emt/common/items/armor/wings/ItemFeatherWing.java +++ b/src/main/java/tombenpotter/emt/common/items/armor/wings/ItemFeatherWing.java @@ -1,5 +1,7 @@ package tombenpotter.emt.common.items.armor.wings; +import ic2.core.IC2; +import ic2.core.util.StackUtil; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.client.Minecraft; @@ -10,6 +12,7 @@ import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemArmor; import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; import net.minecraft.world.World; import tombenpotter.emt.ElectroMagicTools; import tombenpotter.emt.ModInformation; @@ -19,8 +22,7 @@ import tombenpotter.emt.common.util.ConfigHandler; public class ItemFeatherWing extends ItemArmor { public int visDiscount = 0; - public int f = 0; - boolean isHolding = false; + int f; public ItemFeatherWing(ArmorMaterial material, int par3, int par4) { super(material, par3, par4); @@ -39,44 +41,57 @@ public class ItemFeatherWing extends ItemArmor { @Override @SideOnly(Side.CLIENT) public String getArmorTexture(ItemStack stack, Entity entity, int slot, String type) { + if(stack.stackTagCompound.getBoolean("isJumping")){ return ModInformation.texturePath + ":textures/models/quantumwing.png";} return ModInformation.texturePath + ":textures/models/featherwing.png"; } @Override @SideOnly(Side.CLIENT) - public ModelBiped getArmorModel(EntityLivingBase entityLiving, ItemStack itemStack, int armorSlot) { - return new ModelWings(); + public ModelBiped getArmorModel(EntityLivingBase entity, ItemStack stack, int armorSlot) { + if(entity instanceof EntityPlayer){ + ModelWings mw = new ModelWings(); + mw.isJumping = stack.stackTagCompound.getBoolean("isJumping"); + return mw; + } + return new ModelWings(); } @Override public void onArmorTick(World world, EntityPlayer player, ItemStack stack) { - if (world.isRemote) { - boolean isJumping = Minecraft.getMinecraft().gameSettings.keyBindJump.isPressed(); - boolean isHoldingJump = Minecraft.getMinecraft().gameSettings.keyBindJump.getIsKeyPressed(); - - if(isHoldingJump){ - isHolding = true; + updateWings(player, stack, world, 0.09f, 0.9f, 0.9f); + } + + public void updateWings(EntityPlayer player, ItemStack stack, World world, float motionY, float motionXZ, float f1){ + NBTTagCompound nbtData = StackUtil.getOrCreateNbtData(stack); + + nbtData.setBoolean("isJumping", IC2.keyboard.isJumpKeyDown(player)); + + if(nbtData.getBoolean("isJumping")){ + nbtData.setBoolean("isHolding", true); f += 1; if(f > 7) f = 7; - } - else if(isHolding){ - isHolding = false; - player.motionY = 0.09 * f; + } + else if(nbtData.getBoolean("isHolding")){ + nbtData.setBoolean("isHolding", false); + + player.motionY = motionY * f; + player.motionX /= motionXZ; + player.motionZ /= motionXZ; f = 0; } - if (isHoldingJump && !player.onGround && player.motionY < 0 && !player.capabilities.isCreativeMode) - player.motionY *= 0.9; + if (nbtData.getBoolean("isJumping") && !player.onGround && player.motionY < 0 && !player.capabilities.isCreativeMode) + player.motionY *= f1; - if (player.isInWater() && !player.capabilities.isCreativeMode) player.motionY += -0.2; + if (player.isInWater() && !player.capabilities.isCreativeMode) player.motionY += -0.2; - if(ConfigHandler.impactOfRain){ - if ((player.worldObj.isRaining() || player.worldObj.isThundering()) && !player.capabilities.isCreativeMode) - player.motionY = -0.3; - } + if(ConfigHandler.impactOfRain){ + if ((player.worldObj.isRaining() || player.worldObj.isThundering()) && !player.capabilities.isCreativeMode) + player.motionY = -0.3; + } - if (player.isSneaking() && !player.onGround) player.motionY = -0.6; - } + if (player.isSneaking() && !player.onGround) player.motionY = -0.6; + if (player.fallDistance > 0.0F) player.fallDistance = 0; } } diff --git a/src/main/java/tombenpotter/emt/common/items/armor/wings/ItemNanoWing.java b/src/main/java/tombenpotter/emt/common/items/armor/wings/ItemNanoWing.java index 70fffb6..918bd9e 100644 --- a/src/main/java/tombenpotter/emt/common/items/armor/wings/ItemNanoWing.java +++ b/src/main/java/tombenpotter/emt/common/items/armor/wings/ItemNanoWing.java @@ -66,36 +66,7 @@ public class ItemNanoWing extends ItemThaumiumReinforcedWing implements IElectri @Override public void onArmorTick(World world, EntityPlayer player, ItemStack stack) { - if (world.isRemote) { - boolean isJumping = Minecraft.getMinecraft().gameSettings.keyBindJump.isPressed(); - boolean isHoldingJump = Minecraft.getMinecraft().gameSettings.keyBindJump.getIsKeyPressed(); - - if(isHoldingJump){ - isHolding = true; - f += 1; - if(f > 7) f = 7; - } - else if(isHolding){ - isHolding = false; - player.motionY = 0.25 * f; - player.motionX /= 0.7; - player.motionZ /= 0.7; - f = 0; - } - - if (isHoldingJump && !player.onGround && player.motionY < 0 && !player.capabilities.isCreativeMode) - player.motionY *= 0.3; - - if (player.isInWater() && !player.capabilities.isCreativeMode) player.motionY += -0.2; - - if(ConfigHandler.impactOfRain){ - if ((player.worldObj.isRaining() || player.worldObj.isThundering()) && !player.capabilities.isCreativeMode) - player.motionY = -0.2; - } - - if (player.isSneaking() && !player.onGround) player.motionY = -0.6; - } - if (player.fallDistance > 0.0F) player.fallDistance = 0; + this.updateWings(player, stack, world, 0.25f, 0.7f, 0.3f); } @Override diff --git a/src/main/java/tombenpotter/emt/common/items/armor/wings/ItemQuantumWing.java b/src/main/java/tombenpotter/emt/common/items/armor/wings/ItemQuantumWing.java index 7ccdb3a..0286d37 100644 --- a/src/main/java/tombenpotter/emt/common/items/armor/wings/ItemQuantumWing.java +++ b/src/main/java/tombenpotter/emt/common/items/armor/wings/ItemQuantumWing.java @@ -39,37 +39,6 @@ public class ItemQuantumWing extends ItemNanoWing { @Override public void onArmorTick(World world, EntityPlayer player, ItemStack stack) { - if (world.isRemote) { - boolean isJumping = Minecraft.getMinecraft().gameSettings.keyBindJump.isPressed(); - boolean isHoldingJump = Minecraft.getMinecraft().gameSettings.keyBindJump.getIsKeyPressed(); - - if(isHoldingJump){ - isHolding = true; - f += 1; - if(f > 7) f = 7; - } - else if(isHolding){ - isHolding = false; - player.motionY = 0.33 * f; - player.motionX /= 0.6; - player.motionZ /= 0.6; - f = 0; - } - - if (isHoldingJump && !player.onGround && player.motionY < 0 && !player.capabilities.isCreativeMode) - player.motionY *= 0.3; - - if (player.isInWater() && !player.capabilities.isCreativeMode) player.motionY += -0.1; - - if(ConfigHandler.impactOfRain){ - if ((player.worldObj.isRaining() || player.worldObj.isThundering()) && !player.capabilities.isCreativeMode) - player.motionY = -0.05; - } - - if (player.isSneaking() && isHoldingJump) player.motionY = 0; - - if (player.isSneaking() && !player.onGround && !isHoldingJump) player.motionY = -0.6; - } - if (player.fallDistance > 0.0F) player.fallDistance = 0; + this.updateWings(player, stack, world, 0.33f, 0.6f, 0.3f); } } diff --git a/src/main/java/tombenpotter/emt/common/items/armor/wings/ItemThaumiumReinforcedWing.java b/src/main/java/tombenpotter/emt/common/items/armor/wings/ItemThaumiumReinforcedWing.java index f5ff586..f1fd870 100644 --- a/src/main/java/tombenpotter/emt/common/items/armor/wings/ItemThaumiumReinforcedWing.java +++ b/src/main/java/tombenpotter/emt/common/items/armor/wings/ItemThaumiumReinforcedWing.java @@ -7,6 +7,7 @@ import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; import net.minecraft.world.World; import thaumcraft.api.IRepairable; import thaumcraft.api.IVisDiscountGear; @@ -15,6 +16,8 @@ import tombenpotter.emt.ElectroMagicTools; import tombenpotter.emt.ModInformation; import tombenpotter.emt.common.util.ConfigHandler; import tombenpotter.emt.common.util.TextHelper; +import ic2.core.IC2; +import ic2.core.util.StackUtil; import java.util.List; @@ -54,24 +57,28 @@ public class ItemThaumiumReinforcedWing extends ItemFeatherWing implements IVisD @Override public void onArmorTick(World world, EntityPlayer player, ItemStack stack) { + this.updateWings(player, stack, world, 0.15f, 0.8f, 0.5f); + + + NBTTagCompound nbtData = StackUtil.getOrCreateNbtData(stack); + + nbtData.setBoolean("isJumping", IC2.keyboard.isJumpKeyDown(player)); + if (world.isRemote) { - boolean isJumping = Minecraft.getMinecraft().gameSettings.keyBindJump.isPressed(); - boolean isHoldingJump = Minecraft.getMinecraft().gameSettings.keyBindJump.getIsKeyPressed(); - - if(isHoldingJump){ - isHolding = true; + if(nbtData.getBoolean("isJumping")){ + nbtData.setBoolean("isHolding", true); f += 1; if(f > 7) f = 7; } - else if(isHolding){ - isHolding = false; + else if(nbtData.getBoolean("isJumping")){ + nbtData.setBoolean("isHolding", false); player.motionY = 0.15 * f; player.motionX /= 0.8; player.motionZ /= 0.8; f = 0; } - if (isHoldingJump && !player.onGround && player.motionY < 0 && !player.capabilities.isCreativeMode) + if (nbtData.getBoolean("isJumping") && !player.onGround && player.motionY < 0 && !player.capabilities.isCreativeMode) player.motionY *= 0.5; if (player.isInWater() && !player.capabilities.isCreativeMode) player.motionY += -0.2; diff --git a/src/main/java/tombenpotter/emt/common/util/DungeonChestGenerator.java b/src/main/java/tombenpotter/emt/common/util/DungeonChestGenerator.java index 9a4e2c6..cec7d49 100644 --- a/src/main/java/tombenpotter/emt/common/util/DungeonChestGenerator.java +++ b/src/main/java/tombenpotter/emt/common/util/DungeonChestGenerator.java @@ -12,7 +12,7 @@ public class DungeonChestGenerator { ChestGenHooks.getInfo(ChestGenHooks.DUNGEON_CHEST).addItem(new WeightedRandomChestContent(new ItemStack(ItemRegistry.taintedThorHammer), 0, 1, ConfigHandler.chanceTaintedMjolnir)); } if (!ConfigHandler.oneRingSpawn) { - ChestGenHooks.getInfo(ChestGenHooks.DUNGEON_CHEST).addItem(new WeightedRandomChestContent(new ItemStack(ItemRegistry.baseBaubles), 0, 1, ConfigHandler.chanceOneRing)); + ChestGenHooks.getInfo(ChestGenHooks.DUNGEON_CHEST).addItem(new WeightedRandomChestContent(new ItemStack(ItemRegistry.onering), 0, 1, ConfigHandler.chanceOneRing)); } } } diff --git a/src/main/java/tombenpotter/emt/common/util/EntityEventHandler.java b/src/main/java/tombenpotter/emt/common/util/EntityEventHandler.java deleted file mode 100644 index 092d6cc..0000000 --- a/src/main/java/tombenpotter/emt/common/util/EntityEventHandler.java +++ /dev/null @@ -1,28 +0,0 @@ -package tombenpotter.emt.common.util; - -import cpw.mods.fml.common.eventhandler.SubscribeEvent; -import net.minecraft.entity.monster.EntityCreeper; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.ItemStack; -import net.minecraftforge.event.entity.living.LivingDropsEvent; -import thaumcraft.common.entities.monster.EntityTaintChicken; -import tombenpotter.emt.common.items.ItemRegistry; - -public class EntityEventHandler { - - @SubscribeEvent - public void onEntityLivingDrops(LivingDropsEvent event) { - - if (event.source.getEntity() != null && event.source.getEntity() instanceof EntityPlayer) { - if (event.entityLiving instanceof EntityCreeper) { - EntityCreeper creeper = (EntityCreeper) event.entityLiving; - if (creeper.getPowered()) { - event.entityLiving.entityDropItem(new ItemStack(ItemRegistry.itemEMTItems, 1, 6), 1); - } - } - if (event.entityLiving instanceof EntityTaintChicken) { - event.entityLiving.entityDropItem(new ItemStack(ItemRegistry.itemEMTItems, 1, 14), 1); - } - } - } -} diff --git a/src/main/java/tombenpotter/emt/common/util/RandomHelper.java b/src/main/java/tombenpotter/emt/common/util/RandomHelper.java index a1f01fa..c70ad76 100644 --- a/src/main/java/tombenpotter/emt/common/util/RandomHelper.java +++ b/src/main/java/tombenpotter/emt/common/util/RandomHelper.java @@ -1,5 +1,9 @@ package tombenpotter.emt.common.util; +import cpw.mods.fml.common.FMLCommonHandler; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.client.Minecraft; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; import net.minecraft.item.ItemBlock; @@ -9,6 +13,15 @@ import net.minecraftforge.event.ForgeEventFactory; public class RandomHelper { + public static boolean isRKMPressed(World world){ + if(FMLCommonHandler.instance().getSide().isClient()){ + return Minecraft.getMinecraft().gameSettings.keyBindUseItem.getIsKeyPressed(); + } + + + else return true; + } + public static boolean placeTorch(ItemStack stack, EntityPlayer player, World world, int x, int y, int z, int side, float xOffset, float yOffset, float zOffset) { for (int i = 0; i < player.inventory.mainInventory.length; i++) { ItemStack torchStack = player.inventory.mainInventory[i]; @@ -29,4 +42,6 @@ public class RandomHelper { } return false; } + + } diff --git a/src/main/java/tombenpotter/emt/common/util/RenderPlayerHandler.java b/src/main/java/tombenpotter/emt/common/util/RenderPlayerHandler.java new file mode 100644 index 0000000..0b0c0ea --- /dev/null +++ b/src/main/java/tombenpotter/emt/common/util/RenderPlayerHandler.java @@ -0,0 +1,18 @@ +package tombenpotter.emt.common.util; + +import net.minecraft.client.model.ModelRenderer; +import net.minecraftforge.client.event.RenderPlayerEvent; +import cpw.mods.fml.common.eventhandler.SubscribeEvent; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; + + +public class RenderPlayerHandler { + + @SideOnly(Side.CLIENT) + @SubscribeEvent + public void PlayerRend(RenderPlayerEvent.Pre event){ + //System.out.println("vse norm"); + + } +} diff --git a/src/main/resources/assets/electromagictools/textures/items/armor/armor_quantum_chest.png b/src/main/resources/assets/electromagictools/textures/items/armor/armor_quantum_chest.png new file mode 100644 index 0000000000000000000000000000000000000000..e74cbc4d3d544d997123896a1ed92de8aee4f7b4 GIT binary patch literal 316 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Ea{HEjtmSN`?>!lvI6-E$sR$z z3=CCj3=9n|3=F@3LJcn%7)lKo7+xhXFj&oCU=S~uvn$XBD8X6a5n0T@zzsB%TYzz` z^4?OQphSslL`iUdT1k0gQ7S`0VrE{6US4X6f{C7io@r{UQ7TYPpQnpsh=u>r{)@Z~ z3Op{7J&`d-EoB?zr>)rb(8HU1#t+4lt~>788vNbgaYEy{kMH^#agC)NB^DokpJ8o# zP-e%w;zCv$zopr E054T#=l}o! literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/electromagictools/textures/items/armor/armor_quantum_chest_jetpack.png b/src/main/resources/assets/electromagictools/textures/items/armor/armor_quantum_chest_jetpack.png new file mode 100644 index 0000000000000000000000000000000000000000..e8943ed009029cfe38d0d6539ff3c44434c0222f GIT binary patch literal 324 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Ea{HEjtmSN`?>!lvI6-E$sR$z z3=CCj3=9n|3=F@3LJcn%7)lKo7+xhXFj&oCU=S~uvn$XBD8X6a5n0T@z|9ZBjFWyc zF9ixpl(rIsj|=o#plrnVZT0@Y0Oba4!^@ITsjm$$)y zqeb$-M62%A7R#BxEcH%sRBYHX>qo-m&(C-K=K51#z_>+g>4tm1xF$HPotk?1;&x-U z8x6c^4HoiDDkih!(>~b-<}CrH-uqU~x&?G0 NgQu&X%Q~loCIGhmY+L{U literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/electromagictools/textures/items/armor/armor_quantum_chest_wing_n.png b/src/main/resources/assets/electromagictools/textures/items/armor/armor_quantum_chest_wing_n.png new file mode 100644 index 0000000000000000000000000000000000000000..756315da99ac0fb1788c704caba551d1484bb695 GIT binary patch literal 325 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Ea{HEjtmSN`?>!lvI6-E$sR$z z3=CCj3=9n|3=F@3LJcn%7)lKo7+xhXFj&oCU=S~uvn$XBD8X6a5n0T@z|9ZBjFWyc zF9ixpl(rIsj|=o#plrnVZT0@Y0Sba4!^@IN}~B5#8N zkIU}1-3HyOEtWHXI4pEksDH|4GqpO8Pm8YXW|u$pKRYncUz4@tmF12Db3QvaIIP`T z{MLQuv&{$CH7bOEykE(%@Xc-C3sJM3w)Lldo5P~Rs5Sf5E`Q^AKGp@?=Qeo;uq!lvI6-E$sR$z z3=CCj3=9n|3=F@3LJcn%7)lKo7+xhXFj&oCU=S~uvn$XBD8X6a5n0T@z|9ZBjFWyc zF9ixpl(rIsj|=o#plrnVZT0@Y0Nba4!^@LxOOEpLMX zhl}Kz%{#h^tsMTBaI#D?ZupTqSv(e7VOff3CP*?MMT^ zQb}PPyMUGTZO&s7ic5ZHExWI9Lg;{rvA_3>rJv#$d=yfrF5vKLe59&Ypl_j}y_I27 z_wA`s54!u~C**(K9NhRQexl|nAD#VN9t;sX5>7ApTqwBKVfvTHVv650fv#ilboFyt I=akR{0KAcEL;wH) literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/electromagictools/textures/items/armor/armor_quantum_chest_wing_t.png b/src/main/resources/assets/electromagictools/textures/items/armor/armor_quantum_chest_wing_t.png new file mode 100644 index 0000000000000000000000000000000000000000..0770e56512e14725e03cc455da767c89cbfd64c6 GIT binary patch literal 324 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Ea{HEjtmSN`?>!lvI6-E$sR$z z3=CCj3=9n|3=F@3LJcn%7)lKo7+xhXFj&oCU=S~uvn$XBD8X6a5n0T@z|9B3j1K!A z0u5r2C~=J_3C>R|DNig)Whh9@%q!8$OD$0_(KFC9O>H$w1*)0m>Eak-;eWR8HgAIh zk89+?+8IYf=Uis|k=W@qJLb|fCbfSaMKx2Z`IpGAY4(_0EOzhQZidF7t_6qd)_r$b zz-%SK+4eV*Vd2$#3M;nG68P_KTqoT)oxw}|V&&|an(j;rO<`%AT?!%7f;Wd1D@rKPs-Sd(VEe=IM|WrUJN9{=_x;{uHYZFH zXk+bUO(KzOf`f!oVg$_33@hTTOG_Ij21i^Jg@>a`JO#!OlCJ`lAwaMi-hfCESdp4| z4e=t8ED}`_QFxR%gfBD5|-O(JG_0!8o^;euTIeD_<8|lLYGg>&D$Uan1JB% z0?Iq5qQqfVNm^2jI075(-52Q0d27^iKwWiP(MIkQqpL!wkty3M!uBNB@1tD4KZd|KibbGk!c-N6#i2N=i$k@5zdzs_ zsnRIW6rGznL+=hOL@-q{q6olHH82rkzUl+!xiE*rQpy!n#8a-Ma_B5Jm8(#4s2mxc z!Qv|AJSEJcO!5`~H*_H36lkuK|J2RY7Ez4m>H97q7VrBA(Gbmp5nVzzNXv-kvk4aZ zM(FSKuU?^95NKENqNHT5XyqP{d7LaCa+a&fX4)r}r($6L0X&#K~anwB1UYF9XiD-bkXmXTwk;?%99 zb3W~p*Iz8Z(e6q*RcaA(#3IfI*ER!?O*u{2Fd;WV?_eu3TE0Ta|raSx=4ab!u;oJn@8ZMlT0R!Gt|eRA9Anb z8!{trZ1(F~!!Ta#ZT63u4WGAOvZPWUcxS&ZuGng5^dS`8ZSdQ(x3MF7bw~%yyO$$Q zzZ5B3VjQX{ey+E&Ug5O8t{JN=Gqse)A0xG?%XP8Fk?|1A*O$8_3Eia~Y0(N(LVe0^ z-2v|{WH4N^C$;*SO@5NL$*KC@))=tS2Xc1bi4~q}2>5)k&>_cim4eAEA+K<>tXb$I zY`a!%8d!Jy#LJ=SV?!C+UyaSRZ||#Kc)hKAY;4*{)BHxqa@)h>nQIGLtG@q{<&tSE zvi@nuB4)e(+b2N&*$UH0&DHdA=cBI$nADIyFsnD;@$em=t1ek92m9GUk^Nfv1ZzU*C_3{ibkJ&6(Ph&cB2R^136V`rj<0x6Y{I z^?*GQFK*kBOT4 z50)E|WtTLhHk=G*Yzkg)y93NfuFHJ(*+$x8H;=n9HleQPb`86a4;pGlBhOD%r>WE8 cWoRau6dRql@ab;1SLT0Dut*|2=C?lUA3->`-T(jq diff --git a/src/main/resources/assets/electromagictools/textures/items/armor/wing_random.png b/src/main/resources/assets/electromagictools/textures/items/armor/wing_random.png deleted file mode 100644 index 797c99e87dfe2e7e0b9ddc690d63b69225060abf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2323 zcmbVOdo)!09v{MqqQ{{VTG|Z}HIF^-nNXP#6DEc{kJvM_WiXHSY)lT*OL>G;OiG8| zbw?$2R7!Cp)j8^xRzg&hlX5$iT;NAq2)Pktjqkz?VU*U?B`i)~vn` zd*g5uR!bwI(ddw1j#wchLM9ucTBgL%IGpz)wGtAi!YCkuS4rhQ_*WO2@PJg}gO8$z zkVBMQI9VE)g}~uif(UU|s+cXoFY*Pv)f|jK2BQ$5mZiy69JLSr6E6pwo3=@K;FAfO z>VyC6RCGuvz*QhHKqt}(Vlo8;m~0|Qr?EkB0YD*xR1!!gQP>0!`edy_h45c) zeA8MLu|^4#gs@7Hj)<{*B)N`*vDp2+kjW79hO-=zVo8D0cnWd443?vOo(~>7AxfkY z4pYPyix^Y}fd+|01c*gTB0yqF5`jf#lUXb(nMH@dah`AC8B3XdOUZsLe>Q~*g8oz% zoz3LYS=^;u3X26Yx#L*AT!lh%F+8p<#k9X*nSYDra1j_n6-b0akv3ihp~(tVp-NUL z0WKGq7bTTT6qzbdQ-(fYmbgGz1C$Pm#27$$-u?P^8 z!6s1IG?>YtCDD`URQwmbeJLRj=)d78bqTIi*qu3{#G8D67y!98As*ogUl2 zv4b&VL9Q;0X9xp*orE=IogG%O`HR*5(%i1r=B*nJr`Yh#*4VXpH&oT<%~`jxDf=2< z{<7WYr`n4*dklMWXf5QE+Lm0p%X5oP>tk%QoWbhcfVWQPWAb8LChfj|Gd1Pfo_h(!bMIgH+cpE?lR+Iz>z-a|)^7_M3o0JFT7%`KMx`Q0wXga3%} zew(bFHJx;+w6?f+S8Ktk3DW_r=N{>AcXxX>zuKA5Jn-y7XwFM&-FyyWzs>pb(7oB2 z%ELNQy5$0G;<+DP(i#_ZF=~0dYls8Q&b*&&rD-Ux&eD`C zY3^0R~+aL8K4P+)WPp^k|9k7)Raue)C({^+f)p?o4PuW0s3my&_ zJdu6h(r|3T!ps*_7i*R;Yi~ZZ`@|JvP-?*vln z>}n%UuaBHt7j@8(qnvp=ZvV-_D%)k9Q-cM?`z~IL7be!n-oAf-{zF!Pb5BR!rB+}D zSa4%zP3OAnlD0CPF*Ma8$-yu*G%;Av^}BVQRlx}LPKM>bm!zcVdgLy_0s)>#wDVzF zN#vmpPUWlH8!UFrY{k3RIf`TY2(qijhuN7rrSha=`3{SwzmOtg@ielfx8G@s zo$l;!^N5~)5Hzi-+u(hIkv+F$^5xZk*3U{mmIeCy+Ev~-jCjwlANtRYML%r3)%hwe zCT4y36Ng^2*qr{S2*V;`T?1Iz-u7J4Sh#<`_}YVNk2Oz6xt5B;kmTHO^K*T2cJ8?> zx&QRXv%WJWT{Lw|MeEAlV{2cSGp1hHUgGLu08&URY8Km-+3$SZH~L`7`>M3;ds$(T zH=Es>@otV@`igq5%8y6ikI)L2Hx>_vAJVD07F#xU8QmR9ad)8V(^8M++L`C&&}awh z)0Lk;x%}fF&kL(IwLK}-EPnT{v~+FBnUSzd!AHCXPH(>2ueB$)2_3X|adGlxkA16K ze_dY_W$4@+(s`%hXp^SOjXt-2TSdjZny0h2LdL2pvZ}^W6PM65loIjJ{f5G`{f6_f z*Ri8!flV0=@uzG~7z6dMH#uC8Y-*hU?0m_~m-3M}Z}v4ct*vuLusl84O9J!#gGIIT z)<5xl^z6M}_iJTI{FE2kpn|@aWp@)&b^DxpimRSqrc;z@Z_#RJ zw6?Ya6bdqDbTiGloO68N>s0Zahfa0*{Is!1yXXne&pu8!9}6-cn@GmlR~xsptpjJ6 PepC4V0^SL~#0~!iQH;dr diff --git a/src/main/resources/assets/electromagictools/textures/items/armor/wing_random2.png b/src/main/resources/assets/electromagictools/textures/items/armor/wing_random2.png deleted file mode 100644 index 2e89e5b8c2225b95847e883e2796400e447c4615..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1872 zcmbVNc~BE~6kh5l^Vv7M$Q7A~q3Uvk$@1md<2CbrqqI9ET`-kHn-I?9r^}hGM-+S+y-LPok z+>!2{?f?LcRLqlw(Ie=5KOIhgNvpMo9wt)qC~7gGq0FcW2LjZD3I`Q>GyxC8QFZEy zdfX2HhOE$rM^RD13&a?qXQ56TmPK!*(E#8#+hRm99ZrENJV9%aFdm*d%K)`%2_upp z%nmk6@kH%Bs|jChT^Np8br_;%%=QQUEMnS$9;Z;yqE9lAVvB_F#;=&3JGUVQ_{N0N zNf>WQMFlScrGyCw`7AyYV{>3oh_GNj4}syCAcqZeA(#zu5GD+Zc|tKP0N*_fI+{tX z5r@fw-o>I<5=J6L8O0D}Hk(;yE{iZFKrn(J5Ss&WI854tNv0Yo)WS57QwKfBa1t|V zjg*!!fKHF7ib$p;44UcNE9i~E!S5X#$ajgNQwCX3BLuV9kY4Y+*Bfh+3d8@U@j+`c zJk^LpVK_-7n=rZ_nyG_eI(Hur=a+#dX z3t|i8JQ;rwt1yrhYQXTp*jhUFTWny^N3mk52}dcy6iyIHgI%yFk)Q}NkuZW%Dd-!i zHK++QIm20@w-=V-CT$9?4l)sX@J))v+7E=sa5kTd3HeL}6AG9jAy33ag#v`hMR>SS zz|-(Gd@kc1Uj2Vl2hpS;XP^A1Zw9yMW^_*9tAJj-*AZ@@#bcsXQmE+olNMjHLKYBi zx!PqfpC1!CZe4?Sowtz3NJR6aT9-w=oN#5So6;zqn7P(t@A2)SL(hfQD5tEAKXi20 z+IZbGhi!8$>|0!T=NaeLlwQ0|v|)IryrZh!kkEJI#OVaDx*fe=ZL8!K0SAD}SwKlF zMNy&$4<2Oi*pZJ}ELSRv@@+Pkd(WOlc+f)ONF@4n7o*ks^^+%0iswW}@4W_UG@1pz z0|Y_)>gwhuU|4nQ&6_E}@DQ(o6Ft@TtI3k85!rv-y?fwNW@cvhCRJAZ>(_CT zbp>5rNjY_orx#kH^F$%LJ32Jw<>iV|4u|7dYC&Iq#_>_dw#pc$loX%N&d$Kk&y9t~ zhTN|mUN#0$Yc$G$0Gk@eAEcYjkz2QJrS|3I{BXX#z1vh|!TBp-lUB5`U zFz5c932O{V@!z;q_4Sqegz9uhx^wJyUi8tqGmrK6uWY?_E9cOm86#a@mX{+E%)4RJ zOmX9|{7I9pD1D`I0e+h{Zltz7&dv35TUYJLZN7+Mm?6mZOtMlmCcCyaWXzVJr^O{D zA!J4)dx(4NsEXq@rtr(WmtMWSy|dyX*U`h!KS7rj=z6#uWe3M<&R@utn`HR2MyO-TX$4fOZipv z#j|F$KWXuClg$o$Xsz}3d&J13>8`yr;bdEBDd%^$z3R<-_IM)x{`R&umG}06>Ir`% z0jE#idsL-sZ?v(f*Ja~pPm3ulEiG8OpuX=_I`dRh(~_7&em^e>95&kX5?tnR_!bov zE!$(M>8Lv5ALQ8fd`U#aZ|Bb0cJAEi@j_Tqx@9P~+EGz)`Ma7-*EscdxogGi=de}T z($eDN@tJsk$&n-6w6rus=fM%#PkEDG`0r0@IJV~E`STe*g64KSk7&=GFUi z0i(%Ou)=lw(~B1_tiN=;R(-So+tmVPYFqj;BZ}r%}nU_{OIWAGxX2w&VQUjzED;i7@zSEKo0fp diff --git a/src/main/resources/assets/electromagictools/textures/items/drill_diamond.png b/src/main/resources/assets/electromagictools/textures/items/drill_diamond.png deleted file mode 100644 index c68cb4d06eee82d1250c09c5cc21fc2db7e28702..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 383 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Ea{HEjtmSN`?>!lvI6;>1s;*b z3=DjSK$uZf!>a)(C{f}XQ4*Y=R#Ki=l*&+$n3-3imzP?iV4`QBXWa8_dH_((Ur!gu z5DWjg6Ak$e8SuEy7F(Ei-~g8pv#^IwkAYzU51X1=UjW|$!yA?y%O5Bm)L*OUd%5Yy zq}SKJ{r_1goc-3i?r4_Pi?!*8ODZjE)wAL~c1|$bSKhs`QD^I$)eSt7nKDz&u%3(2j929ls35p&yBmqzL4R5%cNStUt2Fbo^kY03ty`ypwXq2tK9jt|1QJ3 z4>MwozNdOjo3=ZXzrf^<^Yka(Hs?9HUx&|;l43GsznUY$%lJQja;o}QU-k@+Kk{ak ZjB1~}X7@TweF6*!22WQ%mvv4FO#m1fk3;|f diff --git a/src/main/resources/assets/electromagictools/textures/items/drill_gold.png b/src/main/resources/assets/electromagictools/textures/items/drill_gold.png deleted file mode 100644 index d005b69f067c7d31efcb046dc289afc38394f5c4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 378 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Ea{HEjtmSN`?>!lvI6;>1s;*b z3=DjSK$uZf!>a)(C{f}XQ4*Y=R#Ki=l*&+$n3-3imzP?iV4`QBXWa8_dH_((4^J1z z5DWjg6Ak$e8SuDH7F(Ei-~g8pvoJF^w~&uai*f;Tm5&;mnP1|cxl49*a(C#v`X%p| zKVIr`Wo`V{SUXX4?t-TBKNHVL&e32cfV4>~9?Xg!jNJ^6cS#(@Rd;RhM`Uq@C{ zPfBgrye>BNkn@+1-!9lqk>==`nvmL5^Ssr5TijMnZRym`xwK^J$;XcjHWa2*Y4P^(C9Pd~$>DFd%RJBeOEbNi_lxfo-(Ha= VvW02p8(!lvI6;>1s;*b z3=DjSK$uZf!>a)(C{f}XQ4*Y=R#Ki=l*&+$n3-3imzP?iV4`QBXWa8_dH_((Cr=m0 z5DWjg6AXo#3WTX_(v*2h-F3+vg-0l9k%D zG9Au6%`~ZZ2@TCm*l%aqxLdX~Ha)>7;YOpTkEF$k{wFg}?UC=5H1QQa*l_*vvijY@ zry67eGL*bSzJ05!5s~_Ews1qfQ*D8@m#@Gfm*}om$JpyXB~+B_kMpMJ`S*H1*=ut0 zlGo+8oX2E83m-ai-8ebX`!tV;!lvI6;>1s;*b z3=DjSK$uZf!>a)(C{f}XQ4*Y=R#Ki=l*&+$n3-3imzP?iV4`QBXWa8_dH_((7f%<* z5DWjg6Kweo8SuFMZVoU{NMP-3>}+fmRGa2y%Tg`gcVTnU#0S%lO;F41{-JWcck=h6 zg=sxMkF2+PAKraBG4@KSE&r>14pSXeU;oaW&FsB)j_Cwv%g6 zY{mYze?_Jg^PBhnWec`1UiVt3hm*&6gLE((*Uy<&u{XajHe}Ad-p;uGxbOe6&{GYw zw!NNxLZG<3`o0|(Z-npxsjNf)9+XXa<)CQ4du@b7N3|iF=jr=p%r{T}WN0yX|8xS+ z+D*%C4`$r(zrBrl#-FM*o}8C68kL#_)OK(7bY;8Mm^Sld!6l%;|HCQyitlwY7QJG; Q2=qULr>mdKI;Vst0Qy3fXaE2J diff --git a/src/main/resources/assets/electromagictools/textures/items/drill_wood.png b/src/main/resources/assets/electromagictools/textures/items/drill_wood.png deleted file mode 100644 index b1663651b077cc6a758e01c8d57be0dfa0e8ef85..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 387 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1qucL5ULAh?3y^w370~qEv>0#LT=By}Z;C1rt33 zJ>#Bd(*uBNzIeJghFJK|onXs%$biS~ce8-BYlo-`+b)9*24aQ<0(}PrtHShz{@jt8 zWU{5h-)ru%y7_Zc&h7mED|GqYqOyD8N4Kt9=6ITWi@=H}|I6+?IZzblC*=|7C$eHk z{I)EHo=%Bpp3LXo%yGKgk@CLb@1GYe*JM4*TMZi@@|qZ?F|a&vKR46seg8g529N0s zY&m?Z-@RKl#nFCI(?rj{&XV`X+&41**J-X5{^VFbW!8d~*BO1@1Un~Q*p{0(LH;E7 zA4&5`X3r-#?bLVul)=6B8%wgc{T+R?N;@ODoO{NNY-}qzf8AQb#%9*&S~>Z{Qe|GA dfAM>%Q;ndw>6V;?7u|0*mYu0RRAu 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 I$UW-608$@a=Kufz diff --git a/src/main/resources/assets/electromagictools/textures/models/quantum_jetpack.png b/src/main/resources/assets/electromagictools/textures/models/quantum_jetpack.png new file mode 100644 index 0000000000000000000000000000000000000000..d8eb8fb1c8d961ba18ab27b444e20b034dbe7395 GIT binary patch literal 1883 zcmZWqeK-?(8~$z1ri>$<7~{-3X_vAzn%Z!fm&s@3tWxqho5{zp`3#$sB&^bhW~Y!+ zZB1KBKFaqHb9@!T5j&{PA%$~D>0Rf2-|ITp^PpYOqhvLimiN)X~2FKAsOmKKK$2^+O!4S;x=2rAmmUIB% zPh6cGs7V2{!p7)LdpA*zxBY5=E;YNL!o}pvDQ*TVTX&<)aor7~4Z9-`V_NJsx{7@Z zhji9ujTd%BEk%u`FWfC3Ir;wLOaO;ERuP~(mKJz`FTY$g6-RnDF)+KxL6%+lFi-<^L6mITQ%g}bN(GWuasfX-AI=D~cu-X40K>|kzk@#h@oTkj z8?dmwR=yw@!)R^CpU>+5TRNkp4%-7>PNdf zRATw(6%h$)`c7N+^u4U#enQOBd}UBPBaPVMz}eWG)>&lNO8C1HW8tPDM5-`rm;jGjv)WtC`;G5OJlT=a})#3*moN9%fgEU)symUi(&#LI`kLeb!fk^(wwY6Xu&S zY%xL1r+0o&W>4NlN6>J;-Z$ve<4LH3V$uGpxE85wXma!KYJ;@y{crg*MIXv5E%aDJ zn&I`2OM1U??$M;=g^9HN_`PuwrrVpsm78nZqH1A*>A}Y2JR|5+Tgvfl3a3&HAOD+Q6SW7Zmvi`AiG1o2YKg%2NOKW3G1EAnsj zW?!1bLAx@li4_l(rTcL}zuLXn+=&!H~D>W zTr0HQ13P1ER~eet0`tBqgDy{X6rfS=3pAaUqewD62j-muyQtAn!F#5Q;K`lcU>jl~ zR4lULnwcK&DKwxyeaz5rJNRu`*IOC_X&6{;j243s38L7N4)gv&aD76xT?*VPcpKAU zREa0-K9T5>r~aA^p-QCCAe}n@DSA&TlHB@|3UE+y0!5*2&U3p7BP-n~#Y|%be*uV~ zy<+jYTR{t~45k1|D?gX_5Z5XD|0g!wu$I!%d|La;vKsOvcie^6{yxyUn%?vd-!OER zZ+wNx=kxs@tgLDgojuqas-iOnK5^~RP@5p!W>>|a5z+xx!=C9jJp!&=xBqMUY4XA? zEA%U3XDnothqg~2Whu^=dtJYUG+bq(r21oveR%ET;XqIwAeFhKmH`b;6Dl``A@Vl z?I%bmOLBxW*Bt`$c#jBjV_ThIxU9*jWk9$cn`JfueHys rS}~B(kj9pc9}%0k)`a6k&Q=O;zdU=*u1u-Ahyb`!_Bl!Z6?Ed?;R#_? literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/electromagictools/textures/models/quantum_wings_n.png b/src/main/resources/assets/electromagictools/textures/models/quantum_wings_n.png new file mode 100644 index 0000000000000000000000000000000000000000..d2f482d3ed9ef3225c0e8aa1cfb0422ed5b052bd GIT binary patch literal 1855 zcmV-F2f+A=P)004R= z004l4008;_004mL004C`008P>0026e000+nl3&F}00009a7bBm000XR000XR0j(pw zbpQYW7<5HgbW?9;ba!ELWdLwtX>N2bZe?^JG%heMHD!e|WdHyMp-DtRRCr$Pn9EKS zX%v8Kg=iGKA|$Rfj3Hw*8co!o3j~dzKtv+L&_WY__x~S2FaXoA{~X3` z7eb+hCbVH~zGwiRpK1W04eKzpL6rxf3*)v6q0mAj+HCeY%Y|9GHUmjbwjzq#E>NI0 zQc7w+A3~&Sh2AoLZRo?oc8fFs3i43k>gs9}Q*fw@VyHdWYGc=iJ}hjvNCTi4i#7l> zXg^!L&d1RK=x4Q2`?eW?DW+MhLX%ncIiZE?XWe~^#_=)LSM7{GENr)Eo&Z)Y(qaeT zDLNfCrd}iWYeOFvwp(m_22flPb!@;7!1@|}SlDh+_zckE4O<+&-ZrPGPCu&+Yg-MV z1?ZbtN2iN?tFk5TZsQw?2n%M7&hGq0pj9456J;WdJ2?@$&@s zp3tv|P-r2b$LXUY(hw|>jbin>vsPARa78w@)`(DO$%Aae>a|d9RI#!$y<(fU=&90s z-GdyPNN;P62!(YZ2}P6KgS?dvU;V6c7=oA6oMLrgbyg18`g%Q~unt-{s|A^TeU9|3 zwpe=tteobEV+X+Mbylv|zFto#tOH3XS_@Xv0Nf8KUa!R}$n*qQQj__g9{{V>X>4ob z>-B`fI#6^`GpYR+C&2o$>Itwi8v7A^y`E+R-%HdGumjPxqJHYDtDXRB<9D^y>SexR zPa1&TDJ{b8hCRy2nXIlPu?g+9#wgPJ&t>*iRxk4nd(uBH+NeSyT8zauuB%OEuUR#g zFRJKT?ThqPRxk4ndomJgGqzcaHXNaed?BjG-`W+~v#Nch``*`5m;i?s#&Yp^@7 zD@lA}bWt2%ocF~Jtn5cu->_%P+f`BF-o~yzsWwqWQK9H;-m3A+@C|!HVK)&9yNOU( z#@@YqW#7JivVZ@6>Fev0-rn9O=wM}KCG@qlvO%Y@Y<%*Om;C6wUtL0B85HvV{d;-- z{JGq}e_!t1yC=_{JxllR%a7?sMnN+(GiiPDV$1z%gAO6H49@oSt5BbPTe(H$)>ktad;OM=3_bwe( zc4uHbqIxJ_#*f|K7IPM3=R%9kLdF9ayl8_ zw+i^-PaLj^OMLR!yb$@R$x z`SL~9*VkoXVIjS&Fcfd!DTKlZ{`=b8+>{R=K1hBV(wiComM$$VefLXGI}i#ZXp-i6 zE#-w|YHBLIs4#?1z70ZQ1Ow3KA3S)FPJj-fs|EnS|MQ#7{q<{lTho`Gt{MQ(fa&S! zbONAjP5_NFfKPwV%JiSVr2o$N(W2`H@c8lL^ivhhcjW+Hym%pZ?%YYuU%Ys+JDvgT zGCxkv&d#RB&!0b^-q22-JlP#5pwXnPH(5Dj!g%SC~FUuRw tIR5!NditS~TY%=fVgNrYp|E?9>|Z9wS@C43TEhSU002ovPDHLkV1h{?jIsa# literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/electromagictools/textures/models/quantum_wings_q.png b/src/main/resources/assets/electromagictools/textures/models/quantum_wings_q.png new file mode 100644 index 0000000000000000000000000000000000000000..cbde6db750918e16ac77498d34c9f65ab02ca17a GIT binary patch literal 1754 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 O3pm-kpntauO#dHu&(R?O literal 0 HcmV?d00001