120 lines
3.1 KiB
Java
120 lines
3.1 KiB
Java
/*
|
|
* This file is part of Applied Energistics 2.
|
|
* Copyright (c) 2013 - 2014, AlgorithmX2, All rights reserved.
|
|
*
|
|
* Applied Energistics 2 is free software: you can redistribute it and/or modify
|
|
* it under the terms of the GNU Lesser General Public License as published by
|
|
* the Free Software Foundation, either version 3 of the License, or
|
|
* (at your option) any later version.
|
|
*
|
|
* Applied Energistics 2 is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU Lesser General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU Lesser General Public License
|
|
* along with Applied Energistics 2. If not, see <http://www.gnu.org/licenses/lgpl>.
|
|
*/
|
|
|
|
package appeng.util.item;
|
|
|
|
import java.util.List;
|
|
|
|
import net.minecraft.init.Items;
|
|
import net.minecraft.item.Item;
|
|
import net.minecraft.item.ItemStack;
|
|
|
|
import cpw.mods.fml.common.registry.GameRegistry.UniqueIdentifier;
|
|
import cpw.mods.fml.relauncher.Side;
|
|
import cpw.mods.fml.relauncher.SideOnly;
|
|
|
|
import appeng.util.Platform;
|
|
|
|
public class AEItemDef
|
|
{
|
|
|
|
public int myHash;
|
|
|
|
public int def;
|
|
|
|
public final int itemID;
|
|
public final Item item;
|
|
public int damageValue;
|
|
|
|
public int displayDamage;
|
|
public int maxDamage;
|
|
|
|
public AESharedNBT tagCompound;
|
|
|
|
@SideOnly(Side.CLIENT)
|
|
public String displayName;
|
|
|
|
@SideOnly(Side.CLIENT)
|
|
public List tooltip;
|
|
|
|
@SideOnly(Side.CLIENT)
|
|
public UniqueIdentifier uniqueID;
|
|
|
|
public OreReference isOre;
|
|
|
|
static final AESharedNBT LOW_TAG = new AESharedNBT( Integer.MIN_VALUE );
|
|
static final AESharedNBT HIGH_TAG = new AESharedNBT( Integer.MAX_VALUE );
|
|
|
|
public AEItemDef(Item it) {
|
|
this.item = it;
|
|
this.itemID = Item.getIdFromItem( it );
|
|
}
|
|
|
|
public AEItemDef copy()
|
|
{
|
|
AEItemDef t = new AEItemDef( this.item );
|
|
t.def = this.def;
|
|
t.damageValue = this.damageValue;
|
|
t.displayDamage = this.displayDamage;
|
|
t.maxDamage = this.maxDamage;
|
|
t.tagCompound = this.tagCompound;
|
|
t.isOre = this.isOre;
|
|
return t;
|
|
}
|
|
|
|
@Override
|
|
public boolean equals(Object obj)
|
|
{
|
|
if ( obj == null )
|
|
return false;
|
|
if ( this.getClass() != obj.getClass() )
|
|
return false;
|
|
AEItemDef other = (AEItemDef) obj;
|
|
return other.damageValue == this.damageValue && other.item == this.item && this.tagCompound == other.tagCompound;
|
|
}
|
|
|
|
public int getDamageValueHack(ItemStack is)
|
|
{
|
|
return Items.blaze_rod.getDamage( is );
|
|
}
|
|
|
|
public boolean isItem(ItemStack otherStack)
|
|
{
|
|
// hackery!
|
|
int dmg = this.getDamageValueHack( otherStack );
|
|
|
|
if ( this.item == otherStack.getItem() && dmg == this.damageValue )
|
|
{
|
|
if ( (this.tagCompound != null) == otherStack.hasTagCompound() )
|
|
return true;
|
|
|
|
if ( this.tagCompound != null && otherStack.hasTagCompound() )
|
|
return Platform.NBTEqualityTest( this.tagCompound, otherStack.getTagCompound() );
|
|
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|
|
|
|
public void reHash()
|
|
{
|
|
this.def = this.itemID << Platform.DEF_OFFSET | this.damageValue;
|
|
this.myHash = this.def ^ (this.tagCompound == null ? 0 : System.identityHashCode( this.tagCompound ));
|
|
}
|
|
}
|