OSDN Git Service

修正・変更
[chemicraft/ChemiCraftNext.git] / common / pcc / chemicraft / core / item / ItemAtoms.java
index 48e4714..a53d99f 100644 (file)
@@ -3,14 +3,14 @@ package pcc.chemicraft.core.item;
 import java.util.List;
 import java.util.Random;
 
+import net.minecraft.client.renderer.texture.IconRegister;
 import net.minecraft.creativetab.CreativeTabs;
 import net.minecraft.entity.Entity;
 import net.minecraft.entity.EntityLiving;
+import net.minecraft.entity.player.EntityPlayer;
 import net.minecraft.item.Item;
 import net.minecraft.item.ItemStack;
-import net.minecraft.potion.PotionEffect;
-import net.minecraft.util.DamageSource;
-import net.minecraft.util.EntityDamageSource;
+import net.minecraft.util.Icon;
 import net.minecraft.world.World;
 import pcc.chemicraft.ChemiCraft;
 import pcc.chemicraft.core.ChemiCraftCore;
@@ -20,6 +20,9 @@ import cpw.mods.fml.relauncher.SideOnly;
 
 public class ItemAtoms extends Item {
 
+       @SideOnly(Side.CLIENT)
+       private Icon[] icons;
+
        public ItemAtoms(int par1){
                super(par1);
                this.maxStackSize = 64;
@@ -40,7 +43,20 @@ public class ItemAtoms extends Item {
                                        EntityLiving entity = (EntityLiving)par3Entity;
                                        entity.attackEntityFrom(ChemiCraftCore.getRadiationDamageSource(entity), 1);
                                }
-                               par1ItemStack.setItemDamage(AtomInfo.collapseUraniumSeries(par1ItemStack.getItemDamage() + 1) - 1);
+                               if (par3Entity instanceof EntityPlayer){
+                                       EntityPlayer player = (EntityPlayer)par3Entity;
+                                       ItemStack itemstack = new ItemStack(
+                                                       par1ItemStack.itemID,
+                                                       1,
+                                                       par1ItemStack.getItemDamage());
+                                       itemstack.setItemDamage(AtomInfo.collapseUraniumSeries(itemstack.getItemDamage() + 1) - 1);
+                                       if (--par1ItemStack.stackSize <= 0) {
+                                               player.inventory.clearInventory(par1ItemStack.itemID, par1ItemStack.getItemDamage());
+                                       }
+                                       if (!player.inventory.addItemStackToInventory(itemstack)) {
+                                               player.dropItem(itemstack.itemID, itemstack.getItemDamage());
+                                       }
+                               }
                        }
                }
        }
@@ -54,30 +70,34 @@ public class ItemAtoms extends Item {
                for(int type = 0; type < ChemiCraftCore.instance.ATOMSNAME.length; type++)
                {
                        par3List.add(new ItemStack(par1, 1, type));
-                       this.setIconIndex(type);
                }
        }
 
 
 
        @Override
-       public String getItemNameIS(ItemStack par1ItemStack){
-               return super.getItemName() + "." + ChemiCraftCore.instance.ATOMSNAME[par1ItemStack.getItemDamage()];
+       @SideOnly(Side.CLIENT)
+       public Icon getIconFromDamage(int par1) {
+               return this.icons[par1];
        }
 
 
 
        @Override
-       public String getTextureFile(){
-               return ChemiCraft.ITEM_ATOMS_TEXTURE;
+       public String getUnlocalizedName(ItemStack par1ItemStack){
+               return super.getUnlocalizedName() + "." + ChemiCraftCore.instance.ATOMSNAME[par1ItemStack.getItemDamage()];
        }
 
 
 
-       @SideOnly(Side.CLIENT)
        @Override
-       public int getIconFromDamage(int par1){
-               return par1;
+       @SideOnly(Side.CLIENT)
+       public void updateIcons(IconRegister par1IconRegister) {
+               this.icons = new Icon[ChemiCraftCore.instance.ATOMSNAME.length];
+
+               for (int i = 0; i < ChemiCraftCore.instance.ATOMSNAME.length; i++) {
+                       this.icons[i] = par1IconRegister.registerIcon(ChemiCraft.TEXTURE + "atoms_" + ChemiCraftCore.instance.ATOMSNAME[i]);
+               }
        }
 
 }
\ No newline at end of file