Exploding GT machines now drop randomly some of their crafting components.

This commit is contained in:
Blood-Asp 2016-10-17 12:37:13 +02:00
parent 637f704235
commit a6301759b1
2 changed files with 31 additions and 23 deletions

View file

@ -1091,7 +1091,6 @@ 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()) {
@ -1104,35 +1103,44 @@ public class BaseMetaTileEntity extends BaseTileEntity implements IGregTechTileE
// 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);
dropItems(tItem);
this.setInventorySlotContents(i, null); }
}
}
if (mRecipeStuff != null) {
for (int i = 0; i < 9; i++) {
if (this.getRandomNumber(100) < 50) {
dropItems(GT_Utility.loadItem(mRecipeStuff, "Ingredient." + i));
}
}
}
}
mMetaTileEntity.doExplosion(aAmount);
}
}
public void dropItems(ItemStack tItem){
if(tItem==null)return;
Random tRandom = new Random();
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);
tItem.stackSize = 0;
}
@Override
public ArrayList<ItemStack> getDrops() {

View file

@ -488,7 +488,7 @@ public class GT_Achievements {
return;
}
ItemData data = GT_OreDictUnificator.getItemData(stack);
if (data != null) {
if (data != null && data.mPrefix!=null) {
if (data.mPrefix == OrePrefixes.dust) {
if (data.mMaterial.mMaterial == Materials.Lutetium) {
issueAchievement(player, "newmetal");