aboutsummaryrefslogtreecommitdiff
path: root/src/Java/gtPlusPlus/core/item
diff options
context:
space:
mode:
Diffstat (limited to 'src/Java/gtPlusPlus/core/item')
-rw-r--r--src/Java/gtPlusPlus/core/item/general/ItemGiantEgg.java98
1 files changed, 90 insertions, 8 deletions
diff --git a/src/Java/gtPlusPlus/core/item/general/ItemGiantEgg.java b/src/Java/gtPlusPlus/core/item/general/ItemGiantEgg.java
index 2b3d718538..6c22169f50 100644
--- a/src/Java/gtPlusPlus/core/item/general/ItemGiantEgg.java
+++ b/src/Java/gtPlusPlus/core/item/general/ItemGiantEgg.java
@@ -2,16 +2,22 @@ package gtPlusPlus.core.item.general;
import static gtPlusPlus.core.lib.CORE.RANDOM;
+import java.util.List;
+
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.entity.Entity;
+import net.minecraft.entity.EntityList;
import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.init.Items;
import net.minecraft.item.ItemStack;
import net.minecraft.util.MathHelper;
+import net.minecraft.util.StatCollector;
import net.minecraft.world.World;
import gtPlusPlus.core.entity.item.ItemEntityGiantEgg;
import gtPlusPlus.core.item.base.BaseItemBurnable;
import gtPlusPlus.core.util.math.MathUtils;
+import gtPlusPlus.core.util.minecraft.ItemUtils;
import gtPlusPlus.core.util.minecraft.NBTUtils;
public class ItemGiantEgg extends BaseItemBurnable {
@@ -27,27 +33,79 @@ public class ItemGiantEgg extends BaseItemBurnable {
String localName = super.getItemStackDisplayName(aStack);
nbtWork(aStack);
int size = 1;
- int age = 0;
if (NBTUtils.hasKey(aStack, "size")){
- size = NBTUtils.getInteger(aStack, "size");
- if (NBTUtils.hasKey(aStack, "mTicksExisted")){
- age = NBTUtils.getInteger(aStack, "mTicksExisted");
- return ""+size+" "+localName+" ["+age+"]";
- }
+ size = NBTUtils.getInteger(aStack, "size");
return ""+size+" "+localName;
}
return "?? "+localName;
}
+ private static ItemStack mCorrectEgg;
+
@Override
public void onUpdate(ItemStack aStack, World world, Entity entityHolding, int p_77663_4_, boolean p_77663_5_) {
- if (entityHolding != null && entityHolding instanceof EntityPlayer) {
+
+ if (world.isRemote) {
+ super.onUpdate(aStack, world, entityHolding, p_77663_4_, p_77663_5_);
+ return;
+ }
+
+ boolean player = (entityHolding != null && entityHolding instanceof EntityPlayer);
+
+ if (player) {
NBTUtils.setBoolean(aStack, "playerHeld", true);
}
else {
NBTUtils.setBoolean(aStack, "playerHeld", false);
}
+
nbtWork(aStack);
+
+ int age = NBTUtils.hasKey(aStack, "mAge") ? NBTUtils.getInteger(aStack, "mAge") : 0;
+ if (player) {
+ NBTUtils.setInteger(aStack, "mAge", age+1);
+
+ //Set the correct egg for future hatches
+ if (mCorrectEgg == null) {
+ if (NBTUtils.hasKey(aStack, "mAge") && NBTUtils.hasKey(aStack, "mEggAge")) {
+ if (NBTUtils.getInteger(aStack, "mAge") >= NBTUtils.getInteger(aStack, "mEggAge")) {
+ for (int g=0;g<128;g++) {
+ ItemStack mSpawn = ItemUtils.simpleMetaStack(Items.spawn_egg, g, 1);
+ if (mSpawn != null) {
+ String s = ("" + StatCollector.translateToLocal(mSpawn.getUnlocalizedName() + ".name")).trim();
+ String s1 = EntityList.getStringFromID(mSpawn.getItemDamage());
+ if (s1 != null){
+ s = s + " " + StatCollector.translateToLocal("entity." + s1 + ".name");
+ if (s1.equalsIgnoreCase("bigChickenFriendly")) {
+ mCorrectEgg = mSpawn;
+ break;
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+
+ if (mCorrectEgg != null) {
+ if (NBTUtils.hasKey(aStack, "mAge") && NBTUtils.hasKey(aStack, "mEggAge")) {
+ if (NBTUtils.getInteger(aStack, "mAge") >= NBTUtils.getInteger(aStack, "mEggAge")) {
+ if (MathUtils.randInt(0, 1000) >= 990) {
+ if (NBTUtils.hasKey(aStack, "size")) {
+ if (NBTUtils.getInteger(aStack, "size") >= MathUtils.randInt(0, 9)) {
+ ((EntityPlayer) entityHolding).inventory.addItemStackToInventory((mCorrectEgg));
+ ((EntityPlayer) entityHolding).inventory.consumeInventoryItem(this);
+ }
+ else {
+ ((EntityPlayer) entityHolding).inventory.consumeInventoryItem(this);
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+
super.onUpdate(aStack, world, entityHolding, p_77663_4_, p_77663_5_);
}
@@ -58,9 +116,13 @@ public class ItemGiantEgg extends BaseItemBurnable {
public void nbtWork(ItemStack aStack) {
if (NBTUtils.hasKey(aStack, "playerHeld")) {
- if (NBTUtils.getBoolean(aStack, "playerHeld") && !NBTUtils.hasKey(aStack, "size")) {
+ boolean player = NBTUtils.getBoolean(aStack, "playerHeld");
+ if (player && !NBTUtils.hasKey(aStack, "size")) {
NBTUtils.setInteger(aStack, "size", MathUtils.randInt(1, 8));
}
+ if (player && !NBTUtils.hasKey(aStack, "mEggAge") && NBTUtils.hasKey(aStack, "size")) {
+ NBTUtils.setInteger(aStack, "mEggAge", (MathUtils.randInt(8000, 16000)*NBTUtils.getInteger(aStack, "size")));
+ }
}
}
@@ -104,4 +166,24 @@ public class ItemGiantEgg extends BaseItemBurnable {
return null;
}
+ @Override
+ public void addInformation(ItemStack stack, EntityPlayer aPlayer, List list, boolean bool) {
+ int size = 0;
+ if (NBTUtils.hasKey(stack, "size")){
+ size = NBTUtils.getInteger(stack, "size");
+ }
+ int age = 0;
+ if (NBTUtils.hasKey(stack, "mAge")){
+ age = NBTUtils.getInteger(stack, "mAge");
+ }
+ int life = 0;
+ if (NBTUtils.hasKey(stack, "mEggAge")){
+ life = NBTUtils.getInteger(stack, "mEggAge");
+ }
+ list.add("Egg Size: "+size+" ounces");
+ list.add("Age: "+(age/20)+"s"+" / "+(life/20)+"s");
+ list.add("Larger eggs take longer to hatch, but have a better chance of hatching.");
+ super.addInformation(stack, aPlayer, list, bool);
+ }
+
}