ChemiCraftAPI.instance.addChemicalCombinationRecipe(new ItemStack[]{new ItemStack(this.itemAtoms, 5), new ItemStack(this.itemAtoms, 7)}, new ItemStack(this.itemCompounds, 0));\r
\r
//手榴弾の追加\r
- ChemiCraftAPI.instance.addMaterialRecipe(new ItemStack[]{new ItemStack(Item.gunpowder), new ItemStack(Block.stone)}, new ItemStack(this.itemAtomGrenade, 16, 0), new NBTRecipeGrenade());\r
+ ChemiCraftAPI.instance.addMaterialRecipe(new ItemStack[]{null, new ItemStack(Block.stone), null, new ItemStack(Block.stone), new ItemStack(Item.gunpowder), new ItemStack(Block.stone), null, new ItemStack(Block.stone), null}, new ItemStack(this.itemAtomGrenade, 16, 0), new NBTRecipeGrenade());\r
\r
}\r
\r
package chemicraft.entity;
-import java.util.List;
+import java.util.Iterator;
import net.minecraft.src.DamageSource;
import net.minecraft.src.Entity;
this.isDead = true;
}else if(!this.worldObj.isRemote && isNuke){
this.worldObj.newExplosion((Entity)null, this.posX, this.posY, this.posZ, explodeSize, onFire);
- List entity = this.worldObj.getEntitiesWithinAABB(EntityLiving.class, this.boundingBox.expand(20, 20, 20));
- for(int i = 0;i < entity.size();i++){
- ((EntityLiving)entity.get(i)).addPotionEffect(new PotionEffect(18, 1, 60 * 20));
- ((EntityLiving)entity.get(i)).addPotionEffect(new PotionEffect(19, 1, 60 * 20));
+ Iterator itr = this.worldObj.getEntitiesWithinAABB(EntityLiving.class, this.boundingBox.expand(30, 30, 30)).iterator();
+ while(itr.hasNext()){
+ EntityLiving entity = (EntityLiving) itr.next();
+ double dx = Math.abs(entity.posX - this.posX);
+ double dy = Math.abs(entity.posY - this.posY);
+ double dz = Math.abs(entity.posZ - this.posZ);
+ int distance = (int)Math.sqrt( Math.pow(dx, 2) + Math.pow(dy, 2) + Math.pow(dz, 2) );
+ if(30 - distance >= 0){
+ entity.addPotionEffect(new PotionEffect(2, (60 + (30 - distance)) * 20, (30 - distance) / 5));
+ entity.addPotionEffect(new PotionEffect(4, (60 + (30 - distance)) * 20, (30 - distance) / 5));
+ entity.addPotionEffect(new PotionEffect(18, (60 + (30 - distance)) * 20, (30 - distance) / 5));
+ entity.addPotionEffect(new PotionEffect(19, (60 + (30 - distance)) * 20, (30 - distance) / 5));
+ }
}
this.isDead = true;
}
@Override
public void onInventoryChanged() {
+ this.eventHandelr.onCraftMatrixChanged(this);
}
@Override
ItemStack resultArg = null;
if(result != null){
resultArg = new ItemStack(result.itemID, result.stackSize, result.getItemDamage());
- ItemStack[] nbtInv = new ItemStack[par3IInventory.getSizeInventory()];
- for(int j = 0;j < par3IInventory.getSizeInventory();j++){
- nbtInv[j] = par3IInventory.getStackInSlot(j);
+ if(api.getMaterialRecipe().get(i).nbtMatch(par1IInventory) != null){
+ ItemStack[] nbtInv = new ItemStack[par3IInventory.getSizeInventory()];
+ for(int j = 0;j < par3IInventory.getSizeInventory();j++){
+ nbtInv[j] = par3IInventory.getStackInSlot(j);
+ }
+ api.getMaterialRecipe().get(i).nbtMatch(par1IInventory).setNBT(nbtInv, resultArg);
}
- api.getMaterialRecipe().get(i).nbtMatch(par1IInventory).setNBT(nbtInv, resultArg);
returnObj = api.getMaterialRecipe().get(i).nbtMatch(par1IInventory);
}
par2IInventory.setInventorySlotContents(0, resultArg);
public int compare(Object o1, Object o2) {
ItemStack i1 = (ItemStack) o1;
ItemStack i2 = (ItemStack) o2;
- if(i1.itemID == i2.itemID){
- return i1.getItemDamage() > i2.getItemDamage() ? 1 : -1;
+
+ if(i1 != null && i2 != null){
+ if(i1.itemID == i2.itemID){
+ return i1.getItemDamage() > i2.getItemDamage() ? 1 : -1;
+ }
+ return i1.itemID > i2.itemID ? 1 : -1;
}
- return i1.itemID > i2.itemID ? 1 : -1;
+ if(i1 == null && i2 == null) return 0;
+ if(i1 != null && i2 == null) return -1;
+ if(i1 == null && i2 != null) return 1;
+ return 0;
}
}
invItemsArray.add(par1IInventory.getStackInSlot(i));
}
invItems = invItemsArray.toArray(new ItemStack[invItemsArray.size()]);
- invItems = (ItemStack[]) ChemiCraft.instance.arrayAuxiliary.deleteNull(invItems);
if(isSharpless){
Arrays.sort(invItems, new ComparatorItemStack());
Arrays.sort(this.material, new ComparatorItemStack());
+ invItems = (ItemStack[]) ChemiCraft.instance.arrayAuxiliary.deleteNull(invItems);
if(invItems.length != this.material.length) return null;
for(int i = 0;i < this.material.length;i++){
if(this.material[i].itemID != invItems[i].itemID) return null;
invItemsArray.add(par1IInventory.getStackInSlot(i));
}
invItems = invItemsArray.toArray(new ItemStack[invItemsArray.size()]);
- invItems = (ItemStack[]) ChemiCraft.instance.arrayAuxiliary.deleteNull(invItems);
if(isSharpless){
Arrays.sort(invItems, new ComparatorItemStack());
Arrays.sort(this.material, new ComparatorItemStack());
+ invItems = (ItemStack[]) ChemiCraft.instance.arrayAuxiliary.deleteNull(invItems);
if(invItems.length != this.material.length) return null;
for(int i = 0;i < this.material.length;i++){
if(this.material[i].itemID != invItems[i].itemID) return null;
if(this.material[i].getItemDamage() != invItems[i].getItemDamage()) return null;
}
+ System.out.println(this.nbtRecipe);
return this.nbtRecipe;
}else{
if(this.material.length != invItems.length) return null;
@Override
public void setNBT(ItemStack[] materials, ItemStack result) {
+ if(result.stackTagCompound == null){
+ result.stackTagCompound = new NBTTagCompound();
+ }
+
+ if (!result.stackTagCompound.hasKey("Effect"))
+ {
+ result.stackTagCompound.setTag("Effect", new NBTTagList("Effect"));
+ }
+
+ NBTTagList tagList = (NBTTagList) result.getTagCompound().getTag("Effect");
+ NBTTagCompound tag = new NBTTagCompound();
+
+ for(int i = 0;i < materials.length;i++){
+ if(materials[i] != null){
+ if(materials[i].itemID-256 == ChemiCraft.instance.atomsID && materials[i].getItemDamage() == ChemiCraft.HYDROGEN){
+ tag.setString("GrenadeEffect" + i, "Hydrogen");
+ }
+ if(materials[i].itemID-256 == ChemiCraft.instance.atomsID && materials[i].getItemDamage() == ChemiCraft.CARBON){
+ tag.setString("GrenadeEffect" + i, "Carbon");
+ }
+ if(materials[i].itemID-256 == ChemiCraft.instance.atomsID && materials[i].getItemDamage() == ChemiCraft.URANIUM){
+ tag.setString("GrenadeEffect" + i, "Uranium");
+ }
+ }
+ }
+ tagList.appendTag(tag);
}