aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/main/java/gregtech/GT_Mod.java1
-rw-r--r--src/main/java/gregtech/api/metatileentity/BaseMetaTileEntity.java30
-rw-r--r--src/main/java/gregtech/common/GT_Proxy.java95
3 files changed, 79 insertions, 47 deletions
diff --git a/src/main/java/gregtech/GT_Mod.java b/src/main/java/gregtech/GT_Mod.java
index 1b8c9892e0..3bac537b6c 100644
--- a/src/main/java/gregtech/GT_Mod.java
+++ b/src/main/java/gregtech/GT_Mod.java
@@ -245,6 +245,7 @@ public class GT_Mod implements IGT_Mod {
gregtechproxy.mPollutionPoisonLimit = tMainConfig.get("Pollution", "PoisonLimit", 750000).getInt(750000);
gregtechproxy.mPollutionVegetationLimit = tMainConfig.get("Pollution", "VegetationLimit", 1000000).getInt(1000000);
gregtechproxy.mPollutionSourRainLimit = tMainConfig.get("Pollution", "SourRainLimit", 2000000).getInt(2000000);
+ gregtechproxy.mExplosionItemDrop = tMainConfig.get("general", "ExplosionItemDrops", false).getBoolean(false);
GregTech_API.mOutputRF = GregTech_API.sOPStuff.get(ConfigCategories.general, "OutputRF", true);
GregTech_API.mInputRF = GregTech_API.sOPStuff.get(ConfigCategories.general, "InputRF", false);
diff --git a/src/main/java/gregtech/api/metatileentity/BaseMetaTileEntity.java b/src/main/java/gregtech/api/metatileentity/BaseMetaTileEntity.java
index 1b3bafca90..1272eb8fd8 100644
--- a/src/main/java/gregtech/api/metatileentity/BaseMetaTileEntity.java
+++ b/src/main/java/gregtech/api/metatileentity/BaseMetaTileEntity.java
@@ -31,9 +31,11 @@ import net.minecraftforge.fluids.Fluid;
import net.minecraftforge.fluids.FluidStack;
import net.minecraftforge.fluids.FluidTankInfo;
+import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
+import java.util.Random;
import static gregtech.api.enums.GT_Values.NW;
import static gregtech.api.enums.GT_Values.V;
@@ -1089,6 +1091,7 @@ public class BaseMetaTileEntity extends BaseTileEntity implements IGregTechTileE
@Override
public void doExplosion(long aAmount) {
+ System.out.println("doExplosion");
if (canAccessData()) {
// This is only for Electric Machines
if (GregTech_API.sMachineWireFire && mMetaTileEntity.isElectric()) {
@@ -1100,6 +1103,33 @@ public class BaseMetaTileEntity extends BaseTileEntity implements IGregTechTileE
mReleaseEnergy = false;
// Normal Explosion Code
mMetaTileEntity.onExplosion();
+ if(GT_Mod.gregtechproxy.mExplosionItemDrop){
+ Random tRandom = new Random();
+ for (int i = 0; i < this.getSizeInventory(); i++) {
+ ItemStack tItem = this.getStackInSlot(i);
+ System.out.println("getInventory: "+i);
+ if ((tItem != null) && (tItem.stackSize > 0) && (this.isValidSlot(i))) {
+ EntityItem tItemEntity = new EntityItem(this.worldObj, this.xCoord + tRandom.nextFloat() * 0.8F + 0.1F, this.yCoord + tRandom.nextFloat() * 0.8F + 0.1F, this.zCoord + tRandom.nextFloat() * 0.8F + 0.1F, new ItemStack(tItem.getItem(), tItem.stackSize, tItem.getItemDamage()));
+ if (tItem.hasTagCompound()) {
+ tItemEntity.getEntityItem().setTagCompound((NBTTagCompound) tItem.getTagCompound().copy());
+ }
+ tItemEntity.motionX = (tRandom.nextGaussian() * 0.0500000007450581D);
+ tItemEntity.motionY = (tRandom.nextGaussian() * 0.0500000007450581D + 0.2000000029802322D);
+ tItemEntity.motionZ = (tRandom.nextGaussian() * 0.0500000007450581D);
+ tItemEntity.hurtResistantTime = 999999;
+ tItemEntity.lifespan = 60000;
+ try {
+ Field tField = tItemEntity.getClass().getDeclaredField("health");
+ tField.setAccessible(true);
+ tField.setInt(tItemEntity, 99999999);
+ } catch (Exception e) {e.printStackTrace();}
+ this.worldObj.spawnEntityInWorld(tItemEntity);
+ System.out.println("spawnItem: "+tItemEntity.getEntityItem().getDisplayName());
+ tItem.stackSize = 0;
+ this.setInventorySlotContents(i, null);
+ }
+ }
+ }
mMetaTileEntity.doExplosion(aAmount);
}
}
diff --git a/src/main/java/gregtech/common/GT_Proxy.java b/src/main/java/gregtech/common/GT_Proxy.java
index 972e04c8cb..cf444ed716 100644
--- a/src/main/java/gregtech/common/GT_Proxy.java
+++ b/src/main/java/gregtech/common/GT_Proxy.java
@@ -158,6 +158,7 @@ public abstract class GT_Proxy implements IGT_Mod, IGuiHandler, IFuelHandler {
public boolean mHideUnusedOres = true;
public boolean mHideRecyclingRecipes = true;
public boolean mPollution = true;
+ public boolean mExplosionItemDrop = false;
public int mSkeletonsShootGTArrows = 16;
public int mMaxEqualEntitiesAtOneSpot = 3;
public int mFlintChance = 30;
@@ -1386,99 +1387,99 @@ public abstract class GT_Proxy implements IGT_Mod, IGuiHandler, IFuelHandler {
NBTTagCompound tNBT = aFuel.getTagCompound();
if (tNBT != null) {
short tValue = tNBT.getShort("GT.ItemFuelValue");
- rFuelValue = (short) Math.max(rFuelValue, tValue);
+ rFuelValue = Math.max(rFuelValue, tValue);
} else if (GT_OreDictUnificator.isItemStackInstanceOf(aFuel, "gemSodium")) {
- rFuelValue = (short) Math.max(rFuelValue, 4000);
+ rFuelValue = Math.max(rFuelValue, 4000);
} else if (GT_OreDictUnificator.isItemStackInstanceOf(aFuel, "crushedSodium")) {
- rFuelValue = (short) Math.max(rFuelValue, 4000);
+ rFuelValue = Math.max(rFuelValue, 4000);
} else if (GT_OreDictUnificator.isItemStackInstanceOf(aFuel, "dustImpureSodium")) {
- rFuelValue = (short) Math.max(rFuelValue, 4000);
+ rFuelValue = Math.max(rFuelValue, 4000);
} else if (GT_OreDictUnificator.isItemStackInstanceOf(aFuel, "dustSodium")) {
- rFuelValue = (short) Math.max(rFuelValue, 4000);
+ rFuelValue = Math.max(rFuelValue, 400);
} else if (GT_OreDictUnificator.isItemStackInstanceOf(aFuel, "dustSmallSodium")) {
- rFuelValue = (short) Math.max(rFuelValue, 1000);
+ rFuelValue = Math.max(rFuelValue, 100);
} else if (GT_OreDictUnificator.isItemStackInstanceOf(aFuel, "dustTinySodium")) {
- rFuelValue = (short) Math.max(rFuelValue, 444);
+ rFuelValue = Math.max(rFuelValue, 44);
} else if (GT_OreDictUnificator.isItemStackInstanceOf(aFuel, "gemLithium")) {
- rFuelValue = (short) Math.max(rFuelValue, 6000);
+ rFuelValue = Math.max(rFuelValue, 6000);
} else if (GT_OreDictUnificator.isItemStackInstanceOf(aFuel, "crushedLithium")) {
- rFuelValue = (short) Math.max(rFuelValue, 6000);
+ rFuelValue = Math.max(rFuelValue, 6000);
} else if (GT_OreDictUnificator.isItemStackInstanceOf(aFuel, "dustImpureLithium")) {
- rFuelValue = (short) Math.max(rFuelValue, 6000);
+ rFuelValue = Math.max(rFuelValue, 6000);
} else if (GT_OreDictUnificator.isItemStackInstanceOf(aFuel, "dustLithium")) {
- rFuelValue = (short) Math.max(rFuelValue, 6000);
+ rFuelValue = Math.max(rFuelValue, 6000);
} else if (GT_OreDictUnificator.isItemStackInstanceOf(aFuel, "dustSmallLithium")) {
- rFuelValue = (short) Math.max(rFuelValue, 2000);
+ rFuelValue = Math.max(rFuelValue, 2000);
} else if (GT_OreDictUnificator.isItemStackInstanceOf(aFuel, "dustTinyLithium")) {
- rFuelValue = (short) Math.max(rFuelValue, 888);
+ rFuelValue = Math.max(rFuelValue, 888);
} else if (GT_OreDictUnificator.isItemStackInstanceOf(aFuel, "gemCaesium")) {
- rFuelValue = (short) Math.max(rFuelValue, 6000);
+ rFuelValue = Math.max(rFuelValue, 6000);
} else if (GT_OreDictUnificator.isItemStackInstanceOf(aFuel, "crushedCaesium")) {
- rFuelValue = (short) Math.max(rFuelValue, 6000);
+ rFuelValue = Math.max(rFuelValue, 6000);
} else if (GT_OreDictUnificator.isItemStackInstanceOf(aFuel, "dustImpureCaesium")) {
- rFuelValue = (short) Math.max(rFuelValue, 6000);
+ rFuelValue = Math.max(rFuelValue, 6000);
} else if (GT_OreDictUnificator.isItemStackInstanceOf(aFuel, "dustCaesium")) {
- rFuelValue = (short) Math.max(rFuelValue, 6000);
+ rFuelValue = Math.max(rFuelValue, 6000);
} else if (GT_OreDictUnificator.isItemStackInstanceOf(aFuel, "dustSmallCaesium")) {
- rFuelValue = (short) Math.max(rFuelValue, 2000);
+ rFuelValue = Math.max(rFuelValue, 2000);
} else if (GT_OreDictUnificator.isItemStackInstanceOf(aFuel, "dustTinyCaesium")) {
- rFuelValue = (short) Math.max(rFuelValue, 888);
+ rFuelValue = Math.max(rFuelValue, 888);
} else if (GT_OreDictUnificator.isItemStackInstanceOf(aFuel, "gemLignite")) {
- rFuelValue = (short) Math.max(rFuelValue, 1200);
+ rFuelValue = Math.max(rFuelValue, 1200);
} else if (GT_OreDictUnificator.isItemStackInstanceOf(aFuel, "crushedLignite")) {
- rFuelValue = (short) Math.max(rFuelValue, 1200);
+ rFuelValue = Math.max(rFuelValue, 1200);
} else if (GT_OreDictUnificator.isItemStackInstanceOf(aFuel, "dustImpureLignite")) {
- rFuelValue = (short) Math.max(rFuelValue, 1200);
+ rFuelValue = Math.max(rFuelValue, 1200);
} else if (GT_OreDictUnificator.isItemStackInstanceOf(aFuel, "dustLignite")) {
- rFuelValue = (short) Math.max(rFuelValue, 1200);
+ rFuelValue = Math.max(rFuelValue, 1200);
} else if (GT_OreDictUnificator.isItemStackInstanceOf(aFuel, "dustSmallLignite")) {
- rFuelValue = (short) Math.max(rFuelValue, 375);
+ rFuelValue = Math.max(rFuelValue, 375);
} else if (GT_OreDictUnificator.isItemStackInstanceOf(aFuel, "dustTinyLignite")) {
- rFuelValue = (short) Math.max(rFuelValue, 166);
+ rFuelValue = Math.max(rFuelValue, 166);
} else if (GT_OreDictUnificator.isItemStackInstanceOf(aFuel, "gemCoal")) {
- rFuelValue = (short) Math.max(rFuelValue, 1600);
+ rFuelValue = Math.max(rFuelValue, 1600);
} else if (GT_OreDictUnificator.isItemStackInstanceOf(aFuel, "crushedCoal")) {
- rFuelValue = (short) Math.max(rFuelValue, 1600);
+ rFuelValue = Math.max(rFuelValue, 1600);
} else if (GT_OreDictUnificator.isItemStackInstanceOf(aFuel, "dustImpureCoal")) {
- rFuelValue = (short) Math.max(rFuelValue, 1600);
+ rFuelValue = Math.max(rFuelValue, 1600);
} else if (GT_OreDictUnificator.isItemStackInstanceOf(aFuel, "dustCoal")) {
- rFuelValue = (short) Math.max(rFuelValue, 1600);
+ rFuelValue = Math.max(rFuelValue, 1600);
} else if (GT_OreDictUnificator.isItemStackInstanceOf(aFuel, "dustSmallCoal")) {
- rFuelValue = (short) Math.max(rFuelValue, 400);
+ rFuelValue = Math.max(rFuelValue, 400);
} else if (GT_OreDictUnificator.isItemStackInstanceOf(aFuel, "dustTinyCoal")) {
- rFuelValue = (short) Math.max(rFuelValue, 177);
+ rFuelValue = Math.max(rFuelValue, 177);
} else if (GT_OreDictUnificator.isItemStackInstanceOf(aFuel, "gemCharcoal")) {
- rFuelValue = (short) Math.max(rFuelValue, 1600);
+ rFuelValue = Math.max(rFuelValue, 1600);
} else if (GT_OreDictUnificator.isItemStackInstanceOf(aFuel, "crushedCharcoal")) {
- rFuelValue = (short) Math.max(rFuelValue, 1600);
+ rFuelValue = Math.max(rFuelValue, 1600);
} else if (GT_OreDictUnificator.isItemStackInstanceOf(aFuel, "dustImpureCharcoal")) {
- rFuelValue = (short) Math.max(rFuelValue, 1600);
+ rFuelValue = Math.max(rFuelValue, 1600);
} else if (GT_OreDictUnificator.isItemStackInstanceOf(aFuel, "dustCharcoal")) {
- rFuelValue = (short) Math.max(rFuelValue, 1600);
+ rFuelValue = Math.max(rFuelValue, 1600);
} else if (GT_OreDictUnificator.isItemStackInstanceOf(aFuel, "dustSmallCharcoal")) {
- rFuelValue = (short) Math.max(rFuelValue, 400);
+ rFuelValue = Math.max(rFuelValue, 400);
} else if (GT_OreDictUnificator.isItemStackInstanceOf(aFuel, "dustTinyCharcoal")) {
- rFuelValue = (short) Math.max(rFuelValue, 177);
+ rFuelValue = Math.max(rFuelValue, 177);
} else if (GT_OreDictUnificator.isItemStackInstanceOf(aFuel, "dustWood")) {
- rFuelValue = (short) Math.max(rFuelValue, 100);
+ rFuelValue = Math.max(rFuelValue, 100);
} else if (GT_OreDictUnificator.isItemStackInstanceOf(aFuel, "dustSmallWood")) {
- rFuelValue = (short) Math.max(rFuelValue, 25);
+ rFuelValue = Math.max(rFuelValue, 25);
} else if (GT_OreDictUnificator.isItemStackInstanceOf(aFuel, "dustTinyWood")) {
- rFuelValue = (short) Math.max(rFuelValue, 11);
+ rFuelValue = Math.max(rFuelValue, 11);
} else if (GT_OreDictUnificator.isItemStackInstanceOf(aFuel, "plateWood")) {
- rFuelValue = (short) Math.min(rFuelValue, 300);
+ rFuelValue = Math.min(rFuelValue, 300);
} else if (GT_OreDictUnificator.isItemStackInstanceOf(aFuel, "blockLignite")) {
- rFuelValue = (short) Math.max(rFuelValue, 12000);
+ rFuelValue = Math.max(rFuelValue, 12000);
} else if (GT_OreDictUnificator.isItemStackInstanceOf(aFuel, "blockCharcoal")) {
- rFuelValue = (short) Math.max(rFuelValue, 16000);
+ rFuelValue = Math.max(rFuelValue, 16000);
} else if (GT_Utility.areStacksEqual(aFuel, new ItemStack(Blocks.wooden_button, 1))) {
- rFuelValue = (short) Math.max(rFuelValue, 150);
+ rFuelValue = Math.max(rFuelValue, 150);
} else if (GT_Utility.areStacksEqual(aFuel, new ItemStack(Blocks.ladder, 1))) {
- rFuelValue = (short) Math.max(rFuelValue, 100);
+ rFuelValue = Math.max(rFuelValue, 100);
} else if (GT_Utility.areStacksEqual(aFuel, new ItemStack(Items.sign, 1))) {
- rFuelValue = (short) Math.max(rFuelValue, 600);
+ rFuelValue = Math.max(rFuelValue, 600);
} else if (GT_Utility.areStacksEqual(aFuel, new ItemStack(Items.wooden_door, 1))) {
- rFuelValue = (short) Math.max(rFuelValue, 600);
+ rFuelValue = Math.max(rFuelValue, 600);
} else if (GT_Utility.areStacksEqual(aFuel, ItemList.Block_MSSFUEL.get(1, new Object[0]))) {
rFuelValue = Math.max(rFuelValue, 150000);
}if (GT_Utility.areStacksEqual(aFuel, ItemList.Block_SSFUEL.get(1, new Object[0]))) {