aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/Java/gtPlusPlus/core/entity/monster/EntityGiantChickenBase.java18
-rw-r--r--src/Java/gtPlusPlus/core/item/general/ItemGiantEgg.java143
-rw-r--r--src/Java/gtPlusPlus/core/util/minecraft/NBTUtils.java16
3 files changed, 129 insertions, 48 deletions
diff --git a/src/Java/gtPlusPlus/core/entity/monster/EntityGiantChickenBase.java b/src/Java/gtPlusPlus/core/entity/monster/EntityGiantChickenBase.java
index 4313b0cc45..35b9321ece 100644
--- a/src/Java/gtPlusPlus/core/entity/monster/EntityGiantChickenBase.java
+++ b/src/Java/gtPlusPlus/core/entity/monster/EntityGiantChickenBase.java
@@ -81,6 +81,10 @@ public class EntityGiantChickenBase extends EntityChicken {
{
this.motionY *= 0.6D;
}
+
+ if (MathUtils.randInt(0, 10000) <= 5) {
+ jump();
+ }
this.field_70886_e += this.field_70889_i * 2.0F;
@@ -101,7 +105,13 @@ public class EntityGiantChickenBase extends EntityChicken {
/**
* Called when the mob is falling. Calculates and applies fall damage.
*/
- protected void fall(float p_70069_1_) {}
+ protected void fall(float p_70069_1_) {
+
+ if (MathUtils.randInt(0, 10) <= 5) {
+ jump();
+ }
+
+ }
protected Item getDropItem()
{
@@ -260,6 +270,7 @@ public class EntityGiantChickenBase extends EntityChicken {
@Override
protected void jump() {
this.motionY = 0.68999998688697815D;
+ this.motionY += 0.068999998688697815D;
if (this.isPotionActive(Potion.jump))
{
this.motionY += (double)((float)(this.getActivePotionEffect(Potion.jump).getAmplifier() + 1) * 0.5F);
@@ -273,6 +284,11 @@ public class EntityGiantChickenBase extends EntityChicken {
}
this.isAirBorne = true;
+
+ if (MathUtils.randInt(0, 10) < 10) {
+ jump();
+ }
+
ForgeHooks.onLivingJump(this);
}
diff --git a/src/Java/gtPlusPlus/core/item/general/ItemGiantEgg.java b/src/Java/gtPlusPlus/core/item/general/ItemGiantEgg.java
index 5577de49e8..c651fb38d9 100644
--- a/src/Java/gtPlusPlus/core/item/general/ItemGiantEgg.java
+++ b/src/Java/gtPlusPlus/core/item/general/ItemGiantEgg.java
@@ -14,8 +14,12 @@ import net.minecraft.util.MathHelper;
import net.minecraft.util.StatCollector;
import net.minecraft.world.World;
+import gregtech.api.enums.ItemList;
+
import gtPlusPlus.core.entity.item.ItemEntityGiantEgg;
import gtPlusPlus.core.item.base.BaseItemBurnable;
+import gtPlusPlus.core.lib.CORE;
+import gtPlusPlus.core.util.Utils;
import gtPlusPlus.core.util.math.MathUtils;
import gtPlusPlus.core.util.minecraft.ItemUtils;
import gtPlusPlus.core.util.minecraft.NBTUtils;
@@ -41,6 +45,7 @@ public class ItemGiantEgg extends BaseItemBurnable {
}
private static ItemStack mCorrectEgg;
+ private static ItemStack mCorrectStemCells;
@Override
public void onUpdate(ItemStack aStack, World world, Entity entityHolding, int p_77663_4_, boolean p_77663_5_) {
@@ -49,62 +54,66 @@ public class ItemGiantEgg extends BaseItemBurnable {
super.onUpdate(aStack, world, entityHolding, p_77663_4_, p_77663_5_);
return;
}
+ try {
+ boolean player = (entityHolding != null && entityHolding instanceof EntityPlayer);
- 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 (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")+1) >= MathUtils.randInt(0, 9)) {
- ((EntityPlayer) entityHolding).inventory.addItemStackToInventory((mCorrectEgg));
- ((EntityPlayer) entityHolding).inventory.consumeInventoryItem(this);
- }
- else {
- ((EntityPlayer) entityHolding).inventory.consumeInventoryItem(this);
- }
- }
+ 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")+1) >= MathUtils.randInt(0, 9)) {
+ ((EntityPlayer) entityHolding).inventory.addItemStackToInventory((mCorrectEgg));
+ ((EntityPlayer) entityHolding).inventory.consumeInventoryItem(this);
+ }
+ else {
+ ((EntityPlayer) entityHolding).inventory.consumeInventoryItem(this);
+ }
+ }
+ }
}
}
}
}
}
+ catch (Throwable t) {
+ t.printStackTrace();
+ }
super.onUpdate(aStack, world, entityHolding, p_77663_4_, p_77663_5_);
}
@@ -123,6 +132,45 @@ public class ItemGiantEgg extends BaseItemBurnable {
if (player && !NBTUtils.hasKey(aStack, "mEggAge") && NBTUtils.hasKey(aStack, "size")) {
NBTUtils.setInteger(aStack, "mEggAge", ((MathUtils.randInt(8000, 16000)*NBTUtils.getInteger(aStack, "size"))/2));
}
+
+ if (player && NBTUtils.getTagCompound(aStack, "GT.CraftingComponents") == null) {
+ if (mCorrectStemCells == null) {
+ if (CORE.MAIN_GREGTECH_5U_EXPERIMENTAL_FORK && Utils.getGregtechSubVersion() > 28) {
+ ItemList xl = ItemList.valueOf("Circuit_Chip_Stemcell");
+ if (xl != null && xl.hasBeenSet()) {
+ mCorrectStemCells = xl.get(1);
+ }
+ }
+ else {
+ mCorrectStemCells = ItemUtils.getSimpleStack(Items.egg, 2);
+ }
+ }
+ if (mCorrectStemCells != null) {
+ int mSize = NBTUtils.getInteger(aStack, "size");
+ float mSizeMod = (MathUtils.randInt(-5, 5)/10);
+ mSize += mSizeMod;
+ mSize = Math.max(mSize, 1);
+ ItemStack eggYolks[] = new ItemStack[mSize];
+ for (int u=0;u<mSize;u++) {
+ eggYolks[u] = ItemUtils.getSimpleStack(mCorrectStemCells, MathUtils.randInt(1, 4));
+ }
+
+ int mexpected = 0;
+ for (ItemStack e : eggYolks) {
+ if (e != null) {
+ mexpected += e.stackSize;
+ }
+ }
+ if (mexpected > 0) {
+ NBTUtils.setInteger(aStack, "mExpected", mexpected);
+ }
+
+ NBTUtils.writeItemsToGtCraftingComponents(aStack, eggYolks, true);
+ }
+ }
+ if (player && NBTUtils.getTagCompound(aStack, "GT.CraftingComponents") != null) {
+
+ }
}
}
@@ -180,7 +228,12 @@ public class ItemGiantEgg extends BaseItemBurnable {
if (NBTUtils.hasKey(stack, "mEggAge")){
life = NBTUtils.getInteger(stack, "mEggAge");
}
+ int expected = 0;
+ if (NBTUtils.hasKey(stack, "mExpected")){
+ expected = NBTUtils.getInteger(stack, "mExpected");
+ }
list.add("Egg Size: "+size+" ounces");
+ list.add("Expected Stem Cells: "+expected);
list.add("Age: "+(age/20)+"s"+" / "+(life/20)+"s");
list.add("Larger eggs take longer to hatch,");
list.add("but have a better chance of hatching.");
diff --git a/src/Java/gtPlusPlus/core/util/minecraft/NBTUtils.java b/src/Java/gtPlusPlus/core/util/minecraft/NBTUtils.java
index 524e7ab7f3..66abbded15 100644
--- a/src/Java/gtPlusPlus/core/util/minecraft/NBTUtils.java
+++ b/src/Java/gtPlusPlus/core/util/minecraft/NBTUtils.java
@@ -112,8 +112,16 @@ public class NBTUtils {
return itemstack;
}
- public static ItemStack writeItemsToGtCraftingComponents(ItemStack rStack, ItemStack[] stored, boolean copyTags) {
-
+ public static ItemStack writeItemsToGtCraftingComponents(ItemStack rStack, ItemStack[] input, boolean copyTags) {
+ try {
+ ItemStack stored[] = new ItemStack[9];
+ if (input.length != 9) {
+ for (int e=0;e<input.length;e++) {
+ if (input[e] != null)
+ stored[e] = input[e];
+ }
+ }
+
if (copyTags) {
for (int i = 0; i < stored.length; i++) {
if (stored[i] != null && stored[i].hasTagCompound()) {
@@ -140,6 +148,10 @@ public class NBTUtils {
}
rNBT.setTag("GT.CraftingComponents", tNBT);
rStack.setTagCompound(rNBT);
+ }
+ catch (Throwable t) {
+ t.printStackTrace();
+ }
return rStack;
}