Skip to content

Commit

Permalink
pull in extra heart stuffs from 1.6 warning: probably will fail serve…
Browse files Browse the repository at this point in the history
…rside
  • Loading branch information
progwml6 committed Feb 26, 2014
1 parent 58bf293 commit d6372a7
Show file tree
Hide file tree
Showing 13 changed files with 285 additions and 114 deletions.
5 changes: 5 additions & 0 deletions src/main/java/tconstruct/client/TProxyClient.java
Original file line number Diff line number Diff line change
Expand Up @@ -1048,6 +1048,11 @@ public void postInit ()
// new RenderArmorCast());
}

public void recalculateHealth ()
{
armorExtended.recalculateHealth(mc.thePlayer, TConstruct.playerTracker.getPlayerStats(mc.thePlayer.getDisplayName()));
}

private static IIcon getIcon (IIcon icon)
{
if (icon != null)
Expand Down
4 changes: 2 additions & 2 deletions src/main/java/tconstruct/client/gui/ArmorExtendedGui.java
Original file line number Diff line number Diff line change
Expand Up @@ -109,11 +109,11 @@ protected void drawGuiContainerBackgroundLayer (float f, int i, int j)
if (!stats.isStackInSlot(3))
drawTexturedModalRect(cornerX + 115, cornerY + 34, 212, 27, 18, 18);
if (!stats.isStackInSlot(4))
drawTexturedModalRect(cornerX + 151, cornerY + 16, 230, 0, 18, 18);
drawTexturedModalRect(cornerX + 151, cornerY + 52, 230, 0, 18, 18);
if (!stats.isStackInSlot(5))
drawTexturedModalRect(cornerX + 151, cornerY + 34, 230, 18, 18, 18);
if (!stats.isStackInSlot(6))
drawTexturedModalRect(cornerX + 151, cornerY + 52, 230, 36, 18, 18);
drawTexturedModalRect(cornerX + 151, cornerY + 16, 230, 36, 18, 18);

cornerX = this.guiLeft;
cornerY = this.guiTop;
Expand Down
5 changes: 5 additions & 0 deletions src/main/java/tconstruct/common/TProxyCommon.java
Original file line number Diff line number Diff line change
Expand Up @@ -124,4 +124,9 @@ public void postInit ()
{

}

public void recalculateHealth ()
{

}
}
4 changes: 4 additions & 0 deletions src/main/java/tconstruct/common/TRecipes.java
Original file line number Diff line number Diff line change
Expand Up @@ -794,6 +794,10 @@ protected static void addRecipesForCraftingTable ()
GameRegistry.addRecipe(new ItemStack(TRepo.diamondApple), " d ", "d#d", " d ", 'd', new ItemStack(Items.diamond), '#', new ItemStack(Items.apple));
GameRegistry.addShapelessRecipe(new ItemStack(TRepo.heartCanister, 1, 2), new ItemStack(TRepo.diamondApple), new ItemStack(TRepo.materials, 1, 8), new ItemStack(TRepo.heartCanister, 1, 0),
new ItemStack(TRepo.heartCanister, 1, 1));
GameRegistry.addShapelessRecipe(new ItemStack(TRepo.heartCanister, 1, 4), new ItemStack(TRepo.heartCanister, 1, 2), new ItemStack(TRepo.heartCanister, 1, 3), new ItemStack(Items.golden_apple,
1, 1));
//GameRegistry.addShapelessRecipe(new ItemStack(heartCanister, 1, 6), new ItemStack(heartCanister, 1, 0), new ItemStack(heartCanister, 1, 4), new ItemStack(heartCanister, 1, 5));

GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(TRepo.knapsack, 1, 0), "###", "rmr", "###", '#', new ItemStack(Items.leather), 'r', new ItemStack(TRepo.toughRod, 1, 2), 'm',
"ingotGold"));
GameRegistry.addRecipe(new ItemStack(TRepo.knapsack, 1, 0), "###", "rmr", "###", '#', new ItemStack(Items.leather), 'r', new ItemStack(TRepo.toughRod, 1, 2), 'm', aluBrass);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,10 +20,9 @@ public ArmorExtendedContainer(InventoryPlayer inventoryplayer, ArmorExtended arm
this.addSlotToContainer(new SlotUnused(armor, 1, 80, 35));
this.addSlotToContainer(new SlotKnapsack(armor, 2, 116, 17));
this.addSlotToContainer(new SlotUnused(armor, 3, 116, 35));
this.addSlotToContainer(new SlotUnused(armor, 4, 152, 17));
this.addSlotToContainer(new SlotUnused(armor, 5, 152, 35));
this.addSlotToContainer(new SlotCanister(armor, 6, 152, 53));
/* Player inventory */
this.addSlotToContainer(new SlotCanister(armor, 4, 152, 53));
this.addSlotToContainer(new SlotCanister(armor, 5, 152, 35));
this.addSlotToContainer(new SlotCanister(armor, 6, 152, 17)); /* Player inventory */
for (int playerArmor = 0; playerArmor < 4; ++playerArmor)
{
this.addSlotToContainer(new SlotArmorCopy(this, inventoryplayer, inventoryplayer.getSizeInventory() - 1 - playerArmor, 98, 8 + playerArmor * 18, playerArmor));
Expand Down
8 changes: 6 additions & 2 deletions src/main/java/tconstruct/inventory/SlotCanister.java
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,16 @@
import net.minecraft.inventory.Slot;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import tconstruct.items.armor.HeartCanister;
import tconstruct.library.armor.IHealthAccessory;

public class SlotCanister extends Slot
{
private final int slotID;

public SlotCanister(IInventory par2IInventory, int par3, int par4, int par5)
{
super(par2IInventory, par3, par4, par5);
this.slotID = par3;
}

/**
Expand All @@ -31,6 +34,7 @@ public int getSlotStackLimit ()
public boolean isItemValid (ItemStack par1ItemStack)
{
Item item = (par1ItemStack == null ? null : par1ItemStack.getItem());
return item != null && (item instanceof HeartCanister);
return item != null && (item instanceof IHealthAccessory) && ((IHealthAccessory) item).canEquipItem(par1ItemStack, this.slotID);

}
}
70 changes: 59 additions & 11 deletions src/main/java/tconstruct/items/armor/HeartCanister.java
Original file line number Diff line number Diff line change
Expand Up @@ -4,29 +4,37 @@

import mantle.items.abstracts.CraftingItem;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.EnumAction;
import net.minecraft.item.ItemStack;
import net.minecraft.util.StatCollector;
import net.minecraft.world.World;
import tconstruct.TConstruct;
import tconstruct.library.TConstructRegistry;
import tconstruct.library.armor.IHealthAccessory;
import tconstruct.util.player.ArmorExtended;
import tconstruct.util.player.TPlayerStats;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;

public class HeartCanister extends CraftingItem
public class HeartCanister extends CraftingItem implements IHealthAccessory
{

public HeartCanister()
{
super(new String[] { "empty", "miniheart.red", "heart" }, new String[] { "canister_empty", "miniheart_red", "canister_heart" }, "", "tinker", TConstructRegistry.materialTab);
super(new String[] { "empty", "miniheart.red", "red", "miniheart.yellow", "yellow", "miniheart.green", "green" }, new String[] { "canister_empty", "miniheart_red", "canister_red",
"miniheart_yellow", "canister_yellow", "miniheart_green", "canister_green" }, "", "tinker", TConstructRegistry.materialTab);
this.setMaxStackSize(10);
}

@Override
public ItemStack onItemRightClick (ItemStack stack, World world, EntityPlayer player)
{
if (!world.isRemote && stack.getItemDamage() == 2)
int meta = stack.getItemDamage();
if (meta == 1 || meta == 3 || meta == 5)
{
player.setItemInUse(stack, this.getMaxItemUseDuration(stack));
}
if (!world.isRemote && meta == 2)
{
TPlayerStats stats = TConstruct.playerTracker.getPlayerStats(player.getDisplayName());
if (stats != null)
Expand All @@ -49,24 +57,64 @@ else if (slotStack.getItem() == this && slotStack.stackSize < this.maxStackSize)
return stack;
}

@Override
public ItemStack onEaten (ItemStack stack, World world, EntityPlayer player)
{
int meta = stack.getItemDamage();
--stack.stackSize;
player.heal((meta + 1) * 5);
world.playSoundAtEntity(player, "random.burp", 0.5F, world.rand.nextFloat() * 0.1F + 0.9F);
return stack;
}

@Override
public EnumAction getItemUseAction (ItemStack par1ItemStack)
{
return EnumAction.eat;
}

public int getMaxItemUseDuration (ItemStack par1ItemStack)
{
return 32;
}

@Override
@SideOnly(Side.CLIENT)
public void addInformation (ItemStack stack, EntityPlayer player, List list, boolean par4)
{
switch (stack.getItemDamage())
int meta = stack.getItemDamage();
if (meta == 0 || meta % 2 == 1)
list.add(StatCollector.translateToLocal("item.crafting.tooltip"));
else
{
list.add(StatCollector.translateToLocal("item.accessory.tooltip"));
list.add(StatCollector.translateToLocal("canister.tooltip"));
}

switch (meta)
{
case 0:
list.add(StatCollector.translateToLocal("hearthcanister1.tooltip"));
break;
case 1:
list.add(StatCollector.translateToLocal("hearthcanister2.tooltip"));
list.add(StatCollector.translateToLocal("hearthcanister3.tooltip"));
list.add(StatCollector.translateToLocal("canister.red.tooltip1"));
list.add(StatCollector.translateToLocal("canister.red.tooltip2"));
break;
case 2:
list.add(StatCollector.translateToLocal("hearthcanister4.tooltip"));
list.add(StatCollector.translateToLocal("hearthcanister5.tooltip"));
list.add(StatCollector.translateToLocal("canister.green.tooltip1"));
list.add(StatCollector.translateToLocal("canister.green.tooltip2"));
break;
}
}

@Override
public boolean canEquipItem (ItemStack item, int slot)
{
int type = item.getItemDamage();
return ((type == 2 && slot == 6) || (type == 4 && slot == 5) || (type == 6 && slot == 4));
}

@Override
public int getHealthBoost (ItemStack item)
{
return item.stackSize * 2;
}

}
10 changes: 10 additions & 0 deletions src/main/java/tconstruct/library/armor/IHealthAccessory.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
package tconstruct.library.armor;

import net.minecraft.item.ItemStack;

public interface IHealthAccessory
{
public boolean canEquipItem (ItemStack item, int slot);

public int getHealthBoost (ItemStack item);
}
105 changes: 56 additions & 49 deletions src/main/java/tconstruct/util/TEventHandler.java
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,9 @@
import net.minecraft.entity.EntityLiving;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.entity.IEntityLivingData;
import net.minecraft.entity.boss.EntityDragon;
import net.minecraft.entity.boss.EntityWither;
import net.minecraft.entity.boss.IBossDisplayData;
import net.minecraft.entity.item.EntityItem;
import net.minecraft.entity.item.EntityXPOrb;
import net.minecraft.entity.monster.EntityCreeper;
Expand Down Expand Up @@ -47,6 +49,7 @@
import tconstruct.blocks.LiquidMetalFinite;
import tconstruct.blocks.TankAirBlock;
import tconstruct.common.TRepo;
import tconstruct.entity.BlueSlime;
import tconstruct.items.tools.FryingPan;
import tconstruct.library.TConstructRegistry;
import tconstruct.library.event.PartBuilderEvent;
Expand Down Expand Up @@ -275,15 +278,25 @@ public void onLivingDrop (LivingDropsEvent event)
}
}

if (random.nextInt(500) == 0 && event.entityLiving instanceof IMob)
if (random.nextInt(200) == 0 && event.entityLiving instanceof IMob && event.source.damageType.equals("player"))
{
ItemStack dropStack = new ItemStack(TRepo.heartCanister, 1, 1);
EntityItem entityitem = new EntityItem(event.entityLiving.worldObj, event.entityLiving.posX, event.entityLiving.posY, event.entityLiving.posZ, dropStack);
entityitem.delayBeforeCanPickup = 10;
event.drops.add(entityitem);
if (event.entityLiving instanceof BlueSlime)
{
BlueSlime slime = (BlueSlime) event.entityLiving;
if (slime.getSlimeSize() < 8)
return;
}
int count = event.entityLiving instanceof EntityDragon ? 5 : 1;
for (int i = 0; i < count; i++)
{
ItemStack dropStack = new ItemStack(TRepo.heartCanister, 1, 3);
EntityItem entityitem = new EntityItem(event.entityLiving.worldObj, event.entityLiving.posX, event.entityLiving.posY, event.entityLiving.posZ, dropStack);
entityitem.delayBeforeCanPickup = 10;
event.drops.add(entityitem);
}
}

if (event.entityLiving instanceof EntityWither && random.nextInt(5) == 0)
if (event.entityLiving instanceof IBossDisplayData)
{
ItemStack dropStack = new ItemStack(TRepo.heartCanister, 1, 1);
EntityItem entityitem = new EntityItem(event.entityLiving.worldObj, event.entityLiving.posX, event.entityLiving.posY, event.entityLiving.posZ, dropStack);
Expand All @@ -293,19 +306,16 @@ public void onLivingDrop (LivingDropsEvent event)

if (!event.entityLiving.isChild() && event.entityLiving.worldObj.getGameRules().getGameRuleBooleanValue("doMobLoot"))
{

if (event.entityLiving.getClass() == EntityCow.class)
{
int amount = random.nextInt(3) + random.nextInt(1 +
event.lootingLevel) + random.nextInt(3) + random.nextInt(1 +
event.lootingLevel) + 1;

for (int iter = 0; iter < amount; ++iter)
{
addDrops(event, new ItemStack(Items.leather, 1));
}

if (event.entityLiving.getClass() == EntityCow.class)
{
int amount = random.nextInt(3) + random.nextInt(1 + event.lootingLevel) + random.nextInt(3) + random.nextInt(1 + event.lootingLevel) + 1;

for (int iter = 0; iter < amount; ++iter)
{
addDrops(event, new ItemStack(Items.leather, 1));
}
}


if (event.entityLiving.getClass() == EntityChicken.class)
{
Expand Down Expand Up @@ -364,13 +374,12 @@ public void onLivingDrop (LivingDropsEvent event)
addDrops(event, new ItemStack(Items.skull, 1, 2));
}
}

if (stack.getItem() == TRepo.cleaver &&
random.nextInt(100) < 10) //Swap out for real beheading
{
addDrops(event, new ItemStack(Items.skull, 1, 2));
}


if (stack.getItem() == TRepo.cleaver && random.nextInt(100) < 10) //Swap out for real beheading
{
addDrops(event, new ItemStack(Items.skull, 1, 2));
}

}
}

Expand Down Expand Up @@ -613,31 +622,29 @@ public void bucketFill (FillBucketEvent evt)
}

// TODO 1.7 Fix this -- for ticking stuffs in extra armor slots

@SubscribeEvent
public void livingUpdate (LivingUpdateEvent event)
{ if (event.entityLiving instanceof EntityPlayer)
{
EntityPlayer player = (EntityPlayer) event.entityLiving;
TPlayerStats stats = TConstruct.playerTracker.getPlayerStats(player.getDisplayName());

if (stats != null && stats.armor != null)
{
ArmorExtended armor = stats.armor;
for (int i = 0; i < armor.getSizeInventory(); i++)
{
if (armor.getStackInSlot(i) != null)
{
armor.getStackInSlot(i).getItem().onUpdate(armor.getStackInSlot(i),
player.worldObj, player, i, false);
armor.getStackInSlot(i).getItem().onArmorTick(player.worldObj, player,
armor.getStackInSlot(i));
}
}
}
}
}

@SubscribeEvent
public void livingUpdate (LivingUpdateEvent event)
{
if (event.entityLiving instanceof EntityPlayer)
{
EntityPlayer player = (EntityPlayer) event.entityLiving;
TPlayerStats stats = TConstruct.playerTracker.getPlayerStats(player.getDisplayName());

if (stats != null && stats.armor != null)
{
ArmorExtended armor = stats.armor;
for (int i = 0; i < armor.getSizeInventory(); i++)
{
if (armor.getStackInSlot(i) != null)
{
armor.getStackInSlot(i).getItem().onUpdate(armor.getStackInSlot(i), player.worldObj, player, i, false);
armor.getStackInSlot(i).getItem().onArmorTick(player.worldObj, player, armor.getStackInSlot(i));
}
}
}
}
}

// Player interact event - prevent breaking of tank air blocks in creative
@SubscribeEvent
Expand Down
Loading

0 comments on commit d6372a7

Please sign in to comment.