diff --git a/resources/assets/tinker/manuals/firstday.xml b/resources/assets/tinker/manuals/firstday.xml index 38d4af18..0416607a 100644 --- a/resources/assets/tinker/manuals/firstday.xml +++ b/resources/assets/tinker/manuals/firstday.xml @@ -21,6 +21,11 @@ By Skyla workbench 5 + + Armor Modifiers + travelvest + 4 + @@ -219,4 +224,91 @@ Note: The Smeltery is required to process all metals, including iron. + +The following armor modifiers seem to be missing names or in flux. No word is available on the accuracy or new home of these pages. + + + +travelgoggles +nightvision + + + +Vision + + dodge + two + + + + +Corrupted Sight + + stealth + two + + + + +travelwings +doublejump + + + +Freefall + + doublejump + two + + + + +Aer + + featherfall + three + + + + +Travel + + doublejumpboots + two + + + + +travelboots +waterwalk + + + +travelboots +leadboots + + + +travelboots +slimysoles + + + +travelgloves +glovehaste + + + +Flesh + + gloveclimb + two + + + + +travelgloves +gloveknuckles + + \ No newline at end of file diff --git a/src/main/java/tconstruct/armor/ArmorAbilities.java b/src/main/java/tconstruct/armor/ArmorAbilities.java new file mode 100644 index 00000000..0fcc001f --- /dev/null +++ b/src/main/java/tconstruct/armor/ArmorAbilities.java @@ -0,0 +1,59 @@ +package tconstruct.armor; + +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import tconstruct.library.modifier.IModifyable; +import tconstruct.util.player.TPlayerStats; +import cpw.mods.fml.common.Loader; +import cpw.mods.fml.common.eventhandler.SubscribeEvent; +import cpw.mods.fml.common.gameevent.TickEvent; + +public class ArmorAbilities +{ + //Abilities + boolean morphed; + boolean morphLoaded = Loader.isModLoaded("Morph"); + + @SubscribeEvent + public void playerTick (TickEvent.PlayerTickEvent event) + { + EntityPlayer player = event.player; + TPlayerStats stats = TPlayerStats.get(player); + if (stats.climbWalls) + { + double motionX = player.posX - player.lastTickPosX; + double motionZ = player.posZ - player.lastTickPosZ; + double motionY = player.posY - player.lastTickPosY - 0.762; + if (motionY > 0.0D && (motionX == 0D || motionZ == 0D)) + { + player.fallDistance = 0.0F; + } + } + //TODO: Proper minimap support + /*ItemStack stack = player.inventory.getStackInSlot(8); + if (stack != null && stack.getItem() instanceof ItemMap) + { + stack.getItem().onUpdate(stack, player.worldObj, player, 8, true); + }*/ + if (!player.isPlayerSleeping()) + { + ItemStack chest = player.getCurrentArmor(2); + if (chest == null || !(chest.getItem() instanceof IModifyable)) + { + if (!morphLoaded || !morphed) + PlayerAbilityHelper.setEntitySize(player, 0.6F, 1.8F); + } + else + { + NBTTagCompound tag = chest.getTagCompound().getCompoundTag(((IModifyable) chest.getItem()).getBaseTagName()); + int dodge = tag.getInteger("Perfect Dodge"); + if (dodge > 0) + { + if (!morphLoaded || !morphed) + PlayerAbilityHelper.setEntitySize(player, Math.max(0.15F, 0.6F - (dodge * 0.09f)), 1.8F - (dodge * 0.04f)); + } + } + } + } +} diff --git a/src/main/java/tconstruct/armor/ArmorAbilitiesClient.java b/src/main/java/tconstruct/armor/ArmorAbilitiesClient.java new file mode 100644 index 00000000..78f6cc85 --- /dev/null +++ b/src/main/java/tconstruct/armor/ArmorAbilitiesClient.java @@ -0,0 +1,122 @@ +package tconstruct.armor; + +import net.minecraft.client.Minecraft; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import tconstruct.armor.items.TravelGear; +import tconstruct.client.TControls; +import tconstruct.library.modifier.IModifyable; +import tconstruct.util.player.TPlayerStats; +import cpw.mods.fml.common.eventhandler.SubscribeEvent; +import cpw.mods.fml.common.gameevent.TickEvent; + +public class ArmorAbilitiesClient +{ + Minecraft mc; + TControls controlInstance; + + ItemStack prevFeet; + double prevMotionY; + boolean morphed; + float prevMouseSensitivity; + boolean sprint; + + public ArmorAbilitiesClient(Minecraft mc, TControls p) + { + this.mc = mc; + this.controlInstance = p; + } + + @SubscribeEvent + public void playerTick (TickEvent.PlayerTickEvent event) + { + EntityPlayer player = event.player; + TPlayerStats stats = TPlayerStats.get(player); + if (mc.thePlayer.onGround) + { + controlInstance.landOnGround(); + } + if (stats.climbWalls && player.isCollidedHorizontally && !player.isSneaking()) + { + player.motionY = 0.1176D; + player.fallDistance = 0.0f; + } + + //Feet changes + ItemStack feet = player.getCurrentArmor(0); + if (feet != null) + { + if (feet.getItem() instanceof TravelGear && player.stepHeight < 1.0f) + { + player.stepHeight += 0.6f; + } + if (feet.getItem() instanceof IModifyable && !player.isSneaking()) + { + NBTTagCompound tag = feet.getTagCompound().getCompoundTag(((IModifyable) feet.getItem()).getBaseTagName()); + int sole = tag.getInteger("Slimy Soles"); + if (sole > 0) + { + if (!player.isSneaking() && player.onGround && prevMotionY < -0.4) + player.motionY = -prevMotionY * (Math.min(0.99, sole * 0.2)); + } + } + prevMotionY = player.motionY; + } + if (feet != prevFeet) + { + if (prevFeet != null && prevFeet.getItem() instanceof TravelGear) + player.stepHeight -= 0.6f; + if (feet != null && feet.getItem() instanceof TravelGear) + player.stepHeight += 0.6f; + prevFeet = feet; + } + + //Legs or wing changes + /*ItemStack legs = player.getCurrentArmor(1); + if (legs != null && legs.getItem() instanceof IModifyable) + { + NBTTagCompound tag = legs.getTagCompound().getCompoundTag(((IModifyable) legs.getItem()).getBaseTagName()); + if (player.isSprinting()) + { + if (!sprint) + { + sprint = true; + int sprintboost = tag.getInteger("Sprint Assist"); + if (player.isSprinting() && sprintboost > 0) + { + prevMouseSensitivity = gs.mouseSensitivity; + gs.mouseSensitivity *= 1 - (0.15 * sprintboost); + } + } + } + else if (sprint) + { + sprint = false; + gs.mouseSensitivity = prevMouseSensitivity; + } + }*/ + if (!player.isPlayerSleeping() && !morphed) + { + ItemStack chest = player.getCurrentArmor(2); + if (chest == null || !(chest.getItem() instanceof IModifyable)) + { + PlayerAbilityHelper.setEntitySize(player, 0.6F, 1.8F); + } + else + { + NBTTagCompound tag = chest.getTagCompound().getCompoundTag(((IModifyable) chest.getItem()).getBaseTagName()); + int dodge = tag.getInteger("Perfect Dodge"); + if (dodge > 0) + { + PlayerAbilityHelper.setEntitySize(player, Math.max(0.15F, 0.6F - (dodge * 0.09f)), 1.8F - (dodge * 0.04f)); + } + } + } + } + + EntityPlayer getPlayer () + { + return mc.thePlayer; + } +} diff --git a/src/main/java/tconstruct/armor/ArmorProxyClient.java b/src/main/java/tconstruct/armor/ArmorProxyClient.java index cc29dfc3..3f85c3c8 100644 --- a/src/main/java/tconstruct/armor/ArmorProxyClient.java +++ b/src/main/java/tconstruct/armor/ArmorProxyClient.java @@ -3,6 +3,7 @@ package tconstruct.armor; import java.util.ArrayList; import java.util.Random; +import mantle.lib.client.MantleClientRegistry; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.ScaledResolution; import net.minecraft.client.gui.inventory.GuiInventory; @@ -14,9 +15,10 @@ import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.SharedMonsterAttributes; import net.minecraft.entity.ai.attributes.IAttributeInstance; import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.init.Blocks; +import net.minecraft.init.Items; 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.MathHelper; @@ -27,7 +29,6 @@ import net.minecraftforge.client.event.RenderGameOverlayEvent; import net.minecraftforge.client.event.RenderGameOverlayEvent.ElementType; import net.minecraftforge.client.event.RenderPlayerEvent; import net.minecraftforge.common.MinecraftForge; -import tconstruct.armor.items.TravelGear; import tconstruct.armor.model.BeltModel; import tconstruct.armor.model.BootBump; import tconstruct.armor.model.HiddenPlayerModel; @@ -43,16 +44,16 @@ import tconstruct.client.tabs.InventoryTabVanilla; import tconstruct.client.tabs.TabRegistry; import tconstruct.common.TProxyCommon; import tconstruct.library.accessory.IAccessoryModel; -import tconstruct.library.modifier.IModifyable; +import tconstruct.library.client.TConstructClientRegistry; +import tconstruct.tools.TinkerTools; import tconstruct.util.player.TPlayerStats; +import tconstruct.world.TinkerWorld; import com.google.common.collect.Lists; import cpw.mods.fml.common.FMLCommonHandler; import cpw.mods.fml.common.Loader; -import cpw.mods.fml.common.Mod.EventHandler; import cpw.mods.fml.common.eventhandler.SubscribeEvent; -import cpw.mods.fml.common.gameevent.TickEvent; public class ArmorProxyClient extends ArmorProxyCommon { @@ -66,8 +67,45 @@ public class ArmorProxyClient extends ArmorProxyCommon public void initialize () { registerGuiHandler(); + registerKeys(); + registerManualRecipes(); MinecraftForge.EVENT_BUS.register(this); - FMLCommonHandler.instance().bus().register(this); + FMLCommonHandler.instance().bus().register(new ArmorAbilitiesClient(mc, controlInstance)); + } + + private void registerManualRecipes () + { + ItemStack feather = new ItemStack(Items.feather); + ItemStack redstone = new ItemStack(Items.redstone); + ItemStack goggles = new ItemStack(TinkerArmor.travelGoggles); + MantleClientRegistry.registerManualIcon("travelgoggles", goggles); + TConstructClientRegistry.registerManualModifier("nightvision", goggles.copy(), new ItemStack(Items.flint_and_steel), new ItemStack(Items.potionitem, 1, 8198)); + + ItemStack vest = new ItemStack(TinkerArmor.travelVest); + MantleClientRegistry.registerManualIcon("travelvest", vest); + MantleClientRegistry.registerManualSmallRecipe("dodge", vest.copy(), new ItemStack(Items.ender_eye), new ItemStack(Items.ender_pearl), new ItemStack(Items.sugar), null); + MantleClientRegistry.registerManualSmallRecipe("stealth", vest.copy(), new ItemStack(Blocks.ice), new ItemStack(Items.ender_eye), new ItemStack(Items.potionitem, 1, 8206), null); + + ItemStack wings = new ItemStack(TinkerArmor.travelWings); + MantleClientRegistry.registerManualIcon("travelwings", wings); + MantleClientRegistry.registerManualSmallRecipe("doublejump", wings.copy(), new ItemStack(Items.ghast_tear), new ItemStack(TinkerWorld.slimeGel, 1, 0), new ItemStack(Blocks.piston), null); + MantleClientRegistry.registerManualLargeRecipe("featherfall", wings.copy(), new ItemStack(TinkerWorld.slimeGel, 1, 0), feather, feather, feather, wings.copy(), feather, feather, new ItemStack( + Items.ender_pearl), feather); + + ItemStack boots = new ItemStack(TinkerArmor.travelBoots); + MantleClientRegistry.registerManualIcon("travelboots", boots); + MantleClientRegistry.registerManualSmallRecipe("doublejumpboots", boots.copy(), new ItemStack(Items.ghast_tear), new ItemStack(TinkerWorld.slimeGel, 1, 1), new ItemStack(Blocks.piston), + null); + TConstructClientRegistry.registerManualModifier("waterwalk", boots.copy(), new ItemStack(Blocks.waterlily), new ItemStack(Blocks.waterlily)); + TConstructClientRegistry.registerManualModifier("leadboots", boots.copy(), new ItemStack(Blocks.iron_block)); + TConstructClientRegistry.registerManualModifier("slimysoles", boots.copy(), new ItemStack(TinkerWorld.slimePad, 1, 0), new ItemStack(TinkerWorld.slimePad, 1, 0)); + + ItemStack gloves = new ItemStack(TinkerArmor.travelGlove); + MantleClientRegistry.registerManualIcon("travelgloves", gloves); + TConstructClientRegistry.registerManualModifier("glovehaste", gloves.copy(), redstone, new ItemStack(Blocks.redstone_block)); + MantleClientRegistry.registerManualSmallRecipe("gloveclimb", gloves.copy(), new ItemStack(Items.slime_ball), new ItemStack(Blocks.web), new ItemStack(TinkerTools.materials, 1, 25), null); + TConstructClientRegistry.registerManualModifier("gloveknuckles", gloves.copy(), new ItemStack(Items.quartz), new ItemStack(Blocks.quartz_block, 1, Short.MAX_VALUE)); + } @Override @@ -105,7 +143,6 @@ public class ArmorProxyClient extends ArmorProxyCommon public void registerTickHandler () { FMLCommonHandler.instance().bus().register(new ArmorTickHandler()); - new ArmorTickHandler(); } /* Keybindings */ @@ -431,104 +468,4 @@ public class ArmorProxyClient extends ArmorProxyCommon return (float) par1EntityLivingBase.ticksExisted + par2; } - /* Abilities */ - - ItemStack prevFeet; - double prevMotionY; - boolean morphed; - float prevMouseSensitivity; - boolean sprint; - - @EventHandler - public void playerTick (TickEvent.PlayerTickEvent event) - { - System.out.println("Client Tick!"); - EntityPlayer player = event.player; - TPlayerStats stats = TPlayerStats.get(player); - if (mc.thePlayer.onGround) - { - controlInstance.landOnGround(); - } - if (stats.climbWalls && player.isCollidedHorizontally && !player.isSneaking()) - { - player.motionY = 0.1176D; - player.fallDistance = 0.0f; - } - - //Feet changes - ItemStack feet = player.getCurrentArmor(0); - if (feet != null) - { - if (feet.getItem() instanceof TravelGear && player.stepHeight < 1.0f) - { - player.stepHeight += 0.6f; - } - if (feet.getItem() instanceof IModifyable && !player.isSneaking()) - { - NBTTagCompound tag = feet.getTagCompound().getCompoundTag(((IModifyable) feet.getItem()).getBaseTagName()); - int sole = tag.getInteger("Slimy Soles"); - if (sole > 0) - { - if (!player.isSneaking() && player.onGround && prevMotionY < -0.4) - player.motionY = -prevMotionY * (Math.min(0.99, sole * 0.2)); - } - } - prevMotionY = player.motionY; - } - if (feet != prevFeet) - { - if (prevFeet != null && prevFeet.getItem() instanceof TravelGear) - player.stepHeight -= 0.6f; - if (feet != null && feet.getItem() instanceof TravelGear) - player.stepHeight += 0.6f; - prevFeet = feet; - } - - //Legs or wing changes - /*ItemStack legs = player.getCurrentArmor(1); - if (legs != null && legs.getItem() instanceof IModifyable) - { - NBTTagCompound tag = legs.getTagCompound().getCompoundTag(((IModifyable) legs.getItem()).getBaseTagName()); - if (player.isSprinting()) - { - if (!sprint) - { - sprint = true; - int sprintboost = tag.getInteger("Sprint Assist"); - if (player.isSprinting() && sprintboost > 0) - { - prevMouseSensitivity = gs.mouseSensitivity; - gs.mouseSensitivity *= 1 - (0.15 * sprintboost); - } - } - } - else if (sprint) - { - sprint = false; - gs.mouseSensitivity = prevMouseSensitivity; - } - }*/ - if (!player.isPlayerSleeping() && !morphed) - { - ItemStack chest = player.getCurrentArmor(2); - if (chest == null || !(chest.getItem() instanceof IModifyable)) - { - PlayerAbilityHelper.setEntitySize(player, 0.6F, 1.8F); - } - else - { - NBTTagCompound tag = chest.getTagCompound().getCompoundTag(((IModifyable) chest.getItem()).getBaseTagName()); - int dodge = tag.getInteger("Perfect Dodge"); - if (dodge > 0) - { - PlayerAbilityHelper.setEntitySize(player, Math.max(0.15F, 0.6F - (dodge * 0.09f)), 1.8F - (dodge * 0.04f)); - } - } - } - } - - EntityPlayer getPlayer () - { - return mc.thePlayer; - } } diff --git a/src/main/java/tconstruct/armor/TinkerArmor.java b/src/main/java/tconstruct/armor/TinkerArmor.java index 2d56d36f..13deedea 100644 --- a/src/main/java/tconstruct/armor/TinkerArmor.java +++ b/src/main/java/tconstruct/armor/TinkerArmor.java @@ -1,9 +1,12 @@ package tconstruct.armor; +import java.util.EnumSet; + import mantle.pulsar.pulse.Handler; import mantle.pulsar.pulse.Pulse; import mantle.pulsar.pulse.PulseProxy; import net.minecraft.block.Block; +import net.minecraft.init.Blocks; import net.minecraft.init.Items; import net.minecraft.item.Item; import net.minecraft.item.ItemArmor.ArmorMaterial; @@ -29,6 +32,16 @@ import tconstruct.library.accessory.AccessoryCore; import tconstruct.library.armor.ArmorPart; import tconstruct.library.crafting.DryingRackRecipes; import tconstruct.library.crafting.LiquidCasting; +import tconstruct.library.crafting.ModifyBuilder; +import tconstruct.modifiers.accessory.GloveClimb; +import tconstruct.modifiers.accessory.GloveSpeed; +import tconstruct.modifiers.armor.AModBoolean; +import tconstruct.modifiers.armor.AModInteger; +import tconstruct.modifiers.armor.AModLeadBoots; +import tconstruct.modifiers.armor.ActiveTinkerArmor; +import tconstruct.modifiers.armor.TravelModDoubleJump; +import tconstruct.modifiers.armor.TravelModRepair; +import tconstruct.modifiers.tools.ModAttack; import tconstruct.tools.TinkerTools; import tconstruct.world.TinkerWorld; import tconstruct.world.items.GoldenHead; @@ -75,12 +88,13 @@ public class TinkerArmor public static AccessoryCore travelGlove; public static AccessoryCore travelBelt; + public static ModAttack modAttackGlove; + @Handler public void preInit (FMLPreInitializationEvent event) { - TinkerArmorEvents events = new TinkerArmorEvents(); - MinecraftForge.EVENT_BUS.register(events); - FMLCommonHandler.instance().bus().register(events); + MinecraftForge.EVENT_BUS.register(new TinkerArmorEvents()); + FMLCommonHandler.instance().bus().register(new ArmorAbilities()); TinkerArmor.dryingRack = new DryingRack().setBlockName("Armor.DryingRack"); GameRegistry.registerBlock(TinkerArmor.dryingRack, "Armor.DryingRack"); @@ -209,4 +223,49 @@ public class TinkerArmor // DryingRackRecipes.addDryingRecipe(new ItemStack(TRepo.jerky, 1, 5), // 20 * 60 * 10, Item.leather); } + + private void registerModifiers() + { + ItemStack redstoneItem = new ItemStack(Items.redstone); + ItemStack redstoneBlock = new ItemStack(Blocks.redstone_block); + //Travel gear modifiers + //MultiType + ModifyBuilder.registerModifier(new TravelModDoubleJump(EnumSet.of(ArmorPart.Legs, ArmorPart.Feet), new ItemStack[] { new ItemStack(Items.ghast_tear), new ItemStack(TinkerWorld.slimeGel, 1, 0), + new ItemStack(Blocks.piston) })); + ModifyBuilder.registerModifier(new TravelModDoubleJump(EnumSet.of(ArmorPart.Legs, ArmorPart.Feet), new ItemStack[] { new ItemStack(Items.ghast_tear), new ItemStack(TinkerWorld.slimeGel, 1, 1), + new ItemStack(Blocks.piston) })); + ModifyBuilder.registerModifier(new TravelModRepair()); + TConstructRegistry.registerActiveArmorMod(new ActiveTinkerArmor()); + + //Head + ModifyBuilder.registerModifier(new AModBoolean(0, "Night Vision", EnumSet.of(ArmorPart.Head), new ItemStack[] { new ItemStack(Items.flint_and_steel), new ItemStack(Items.potionitem, 1, 8198) }, + "\u00a78", "Night Vision")); + + //Chest + ModifyBuilder.registerModifier(new AModInteger(0, "Perfect Dodge", EnumSet.of(ArmorPart.Chest), new ItemStack[] { new ItemStack(Items.ender_eye), new ItemStack(Items.ender_pearl), + new ItemStack(Items.sugar) }, 1, "\u00a7d", "Perfect Dodge")); + ModifyBuilder.registerModifier(new AModBoolean(1, "Stealth", EnumSet.of(ArmorPart.Chest), new ItemStack[] { new ItemStack(Blocks.ice), new ItemStack(Items.ender_eye), + new ItemStack(Items.potionitem, 1, 8206) }, "\u00a78", "Stealth")); + + //Wings + ItemStack feather = new ItemStack(Items.feather); + ModifyBuilder.registerModifier(new AModInteger(1, "Feather Fall", EnumSet.of(ArmorPart.Legs), new ItemStack[] { new ItemStack(TinkerWorld.slimeGel, 1, 0), new ItemStack(Items.ender_pearl), feather, + feather, feather, feather, feather, feather }, 1, "\u00a7f", "Feather Fall")); + ModifyBuilder.registerModifier(new AModInteger(1, "Feather Fall", EnumSet.of(ArmorPart.Legs), new ItemStack[] { new ItemStack(TinkerWorld.slimeGel, 1, 1), new ItemStack(Items.ender_pearl), feather, + feather, feather, feather, feather, feather }, 1, "\u00a7f", "Feather Fall")); + + //Feet + ModifyBuilder.registerModifier(new AModBoolean(1, "WaterWalk", EnumSet.of(ArmorPart.Feet), new ItemStack[] { new ItemStack(Blocks.waterlily), new ItemStack(Blocks.waterlily) }, "\u00a79", + "Water-Walking")); + ModifyBuilder.registerModifier(new AModLeadBoots(new ItemStack[] { new ItemStack(Blocks.iron_block) })); + ModifyBuilder.registerModifier(new AModInteger(3, "Slimy Soles", EnumSet.of(ArmorPart.Feet), new ItemStack[] { new ItemStack(TinkerWorld.slimePad, 1, 0), new ItemStack(TinkerWorld.slimePad, 1, 0) }, 1, + "\u00a7a", "Slimy Soles")); + + //Glove + ModifyBuilder.registerModifier(new GloveSpeed(1, new ItemStack[] { redstoneItem, redstoneBlock }, new int[] { 1, 9 })); + ModifyBuilder.registerModifier(new GloveClimb(new ItemStack[] { new ItemStack(Items.slime_ball), new ItemStack(Blocks.web), new ItemStack(TinkerTools.materials, 1, 25) })); + this.modAttackGlove = new ModAttack("Quartz", 2, new ItemStack[] { new ItemStack(Items.quartz), new ItemStack(Blocks.quartz_block, 1, Short.MAX_VALUE) }, new int[] { 1, 4 }, 50, 50, + "Accessory"); + ModifyBuilder.registerModifier(this.modAttackGlove); + } } diff --git a/src/main/java/tconstruct/armor/TinkerArmorEvents.java b/src/main/java/tconstruct/armor/TinkerArmorEvents.java index a1f729d6..dd0f2d4a 100644 --- a/src/main/java/tconstruct/armor/TinkerArmorEvents.java +++ b/src/main/java/tconstruct/armor/TinkerArmorEvents.java @@ -56,55 +56,8 @@ public class TinkerArmorEvents } } - //Abilities - boolean morphed; - boolean morphLoaded = Loader.isModLoaded("Morph"); - - @EventHandler - public void playerTick (TickEvent.PlayerTickEvent event) - { - System.out.println("Server Tick!"); - EntityPlayer player = event.player; - TPlayerStats stats = TPlayerStats.get(player); - if (stats.climbWalls) - { - double motionX = player.posX - player.lastTickPosX; - double motionZ = player.posZ - player.lastTickPosZ; - double motionY = player.posY - player.lastTickPosY - 0.762; - if (motionY > 0.0D && (motionX == 0D || motionZ == 0D)) - { - player.fallDistance = 0.0F; - } - } - //TODO: Proper minimap support - /*ItemStack stack = player.inventory.getStackInSlot(8); - if (stack != null && stack.getItem() instanceof ItemMap) - { - stack.getItem().onUpdate(stack, player.worldObj, player, 8, true); - }*/ - if (!player.isPlayerSleeping()) - { - ItemStack chest = player.getCurrentArmor(2); - if (chest == null || !(chest.getItem() instanceof IModifyable)) - { - if (!morphLoaded || !morphed) - PlayerAbilityHelper.setEntitySize(player, 0.6F, 1.8F); - } - else - { - NBTTagCompound tag = chest.getTagCompound().getCompoundTag(((IModifyable) chest.getItem()).getBaseTagName()); - int dodge = tag.getInteger("Perfect Dodge"); - if (dodge > 0) - { - if (!morphLoaded || !morphed) - PlayerAbilityHelper.setEntitySize(player, Math.max(0.15F, 0.6F - (dodge * 0.09f)), 1.8F - (dodge * 0.04f)); - } - } - } - } - /* Abilities */ - @EventHandler + @SubscribeEvent public void armorMineSpeed (net.minecraftforge.event.entity.player.PlayerEvent.BreakSpeed event) { TPlayerStats stats = TPlayerStats.get(event.entityPlayer); @@ -113,7 +66,7 @@ public class TinkerArmorEvents event.newSpeed = (event.newSpeed + base) * modifier; } - @EventHandler + @SubscribeEvent public void jumpHeight (LivingJumpEvent event) { ItemStack stack = event.entityLiving.getEquipmentInSlot(2); @@ -123,7 +76,7 @@ public class TinkerArmorEvents } } - @EventHandler + @SubscribeEvent public void slimefall (LivingFallEvent event) { ItemStack boots = event.entityLiving.getEquipmentInSlot(1); diff --git a/src/main/java/tconstruct/library/armor/AModInteger.java b/src/main/java/tconstruct/library/armor/AModInteger.java deleted file mode 100644 index 897956c9..00000000 --- a/src/main/java/tconstruct/library/armor/AModInteger.java +++ /dev/null @@ -1,66 +0,0 @@ -package tconstruct.library.armor; - -import java.util.EnumSet; - -import tconstruct.library.modifier.IModifyable; - -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; - -/* Adds an integer NBTTag */ - -public class AModInteger extends ArmorMod -{ - public final int modifyCount; - public final int amount; - public final String color; - public final String tooltipName; - - public AModInteger(int effect, String dataKey, EnumSet armorTypes, ItemStack[] items, int count, int increase, String c, String tip) - { - super(effect, dataKey, armorTypes, items); - this.modifyCount = count; - this.amount = increase; - color = c; - tooltipName = tip; - } - - @Override - protected boolean canModify (ItemStack armor, ItemStack[] input) - { - Item i = armor.getItem(); - if (!(i instanceof ArmorCore)) - return false; - ArmorCore item = (ArmorCore) armor.getItem(); - if (armorTypes.contains(item.armorPart)) - { - NBTTagCompound tags = armor.getTagCompound().getCompoundTag(getTagName(armor)); - return tags.getInteger("Modifiers") > modifyCount; - } - return false; - } - - @Override - public void modify (ItemStack[] input, ItemStack tool) - { - NBTTagCompound tags = tool.getTagCompound().getCompoundTag(getTagName(tool)); - if (tags.hasKey(key)) - { - int increase = tags.getInteger(key); - increase += this.amount; - tags.setInteger(key, increase); - } - else - { - tags.setInteger(key, amount); - } - - int modifiers = tags.getInteger("Modifiers"); - modifiers -= modifyCount; - tags.setInteger("Modifiers", modifiers); - - addToolTip(tool, color + tooltipName, color + key); - } - -} diff --git a/src/main/java/tconstruct/tools/logic/ToolForgeLogic.java b/src/main/java/tconstruct/tools/logic/ToolForgeLogic.java index 18053138..062d2cc2 100644 --- a/src/main/java/tconstruct/tools/logic/ToolForgeLogic.java +++ b/src/main/java/tconstruct/tools/logic/ToolForgeLogic.java @@ -6,7 +6,9 @@ import net.minecraft.inventory.ISidedInventory; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.world.World; +import tconstruct.library.crafting.ModifyBuilder; import tconstruct.library.crafting.ToolBuilder; +import tconstruct.library.modifier.IModifyable; import tconstruct.tools.inventory.ToolForgeContainer; /* Simple class for storing items in the block @@ -37,6 +39,66 @@ public class ToolForgeLogic extends ToolStationLogic implements ISidedInventory @Override public void buildTool (String name) + { + ItemStack output = null; + if (inventory[1] != null) + { + if (inventory[1].getItem() instanceof IModifyable) //Modify item + { + if (inventory[2] == null && inventory[3] == null && inventory[4] == null) + output = inventory[1].copy(); + else + { + output = ModifyBuilder.instance.modifyItem(inventory[1], new ItemStack[] { inventory[2], inventory[3], inventory[4] }); + } + } + else + //Build new item + { + toolName = name; + ItemStack tool = ToolBuilder.instance.buildTool(inventory[1], inventory[2], inventory[3], inventory[4], name); + if (inventory[0] == null) + output = tool; + else if (tool != null) + { + //NBTTagCompound tags = tool.getTagCompound(); + //if (!tags.getCompoundTag(((IModifyable) tool.getItem()).getBaseTagName()).hasKey("Built")) + //{ + output = tool; + //} + } + } + if (!name.equals("")) //Name item + { + ItemStack temp = inventory[1].copy(); + if (output != null) + temp = output; + + if (temp != null) + { + NBTTagCompound tags = temp.getTagCompound(); + if (tags == null) + { + tags = new NBTTagCompound(); + temp.setTagCompound(tags); + } + + if (!(tags.hasKey("display"))) + { + NBTTagCompound display = new NBTTagCompound(); + String dName = temp.getItem() instanceof IModifyable ? "\u00A7f" + name : name; + display.setString("Name", dName); + tags.setTag("display", display); + temp.setRepairCost(2); + output = temp; + } + } + + } + } + inventory[0] = output; + } + /*public void buildTool (String name) { toolName = name; ItemStack tool = ToolBuilder.instance.buildTool(inventory[1], inventory[2], inventory[3], inventory[4], name); @@ -50,5 +112,5 @@ public class ToolForgeLogic extends ToolStationLogic implements ISidedInventory inventory[0] = tool; } } - } + }*/ } \ No newline at end of file diff --git a/src/main/java/tconstruct/world/blocks/SlimePad.java b/src/main/java/tconstruct/world/blocks/SlimePad.java index 4fb3632b..a27723f5 100644 --- a/src/main/java/tconstruct/world/blocks/SlimePad.java +++ b/src/main/java/tconstruct/world/blocks/SlimePad.java @@ -23,7 +23,7 @@ public class SlimePad extends MantleBlock public SlimePad(Material par2Material) { super(par2Material); - setBlockBounds(0.125F, 0.0F, 0.125F, 0.875F, 0.625F, 0.875F); + setBlockBounds(0.125F, 0.0625F, 0.125F, 0.875F, 0.625F, 0.875F); this.setCreativeTab(TConstructRegistry.blockTab); } diff --git a/src/main/java/tconstruct/world/model/SlimePadRender.java b/src/main/java/tconstruct/world/model/SlimePadRender.java index 2ebf3eda..1298844e 100644 --- a/src/main/java/tconstruct/world/model/SlimePadRender.java +++ b/src/main/java/tconstruct/world/model/SlimePadRender.java @@ -20,6 +20,8 @@ public class SlimePadRender implements ISimpleBlockRenderingHandler if (modelID == model) { ItemHelper.renderStandardInvBlock(renderer, TinkerWorld.slimeGel, metadata); + renderer.setRenderBounds(0f, 0.0625f, 0f, 1f, 0.5f, 1f); + ItemHelper.renderStandardInvBlock(renderer, TinkerWorld.slimeGel, 1); } } @@ -29,7 +31,7 @@ public class SlimePadRender implements ISimpleBlockRenderingHandler if (modelID == model) { renderer.renderStandardBlock(block, x, y, z); - renderer.setRenderBounds(0f, 0f, 0f, 1f, 0.5f, 1f); + renderer.setRenderBounds(0f, 0, 0f, 1f, 0.5f, 1f); int metadata = world.getBlockMetadata(x, y, z); BlockSkinRenderHelper.renderLiquidBlock(((SlimePad) block).getFluidIcon(metadata), ((SlimePad) block).getFluidIcon(metadata), x, y, z, renderer, world);