05aa6972c4
Second update pass which fixes all compile errors. Some parts may have aftermath effect, hence why 3rd pass will check those maked with "aftermath". Errors: 82 -> 0. Mod can be launched.
224 lines
4.6 KiB
Java
224 lines
4.6 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 net.minecraft.util.ResourceLocation;
|
|
import net.minecraftforge.fml.relauncher.Side;
|
|
import net.minecraftforge.fml.relauncher.SideOnly;
|
|
|
|
import appeng.util.Platform;
|
|
|
|
|
|
public class AEItemDef
|
|
{
|
|
|
|
static final AESharedNBT LOW_TAG = new AESharedNBT( Integer.MIN_VALUE );
|
|
static final AESharedNBT HIGH_TAG = new AESharedNBT( Integer.MAX_VALUE );
|
|
|
|
private final int itemID;
|
|
private final Item item;
|
|
private int myHash;
|
|
private int def;
|
|
private int damageValue;
|
|
private int displayDamage;
|
|
private int maxDamage;
|
|
private AESharedNBT tagCompound;
|
|
@SideOnly( Side.CLIENT )
|
|
private String displayName;
|
|
@SideOnly( Side.CLIENT )
|
|
private List tooltip;
|
|
@SideOnly( Side.CLIENT )
|
|
private ResourceLocation uniqueID;
|
|
private OreReference isOre;
|
|
|
|
public AEItemDef( final Item it )
|
|
{
|
|
this.item = it;
|
|
this.itemID = Item.getIdFromItem( it );
|
|
}
|
|
|
|
AEItemDef copy()
|
|
{
|
|
final AEItemDef t = new AEItemDef( this.getItem() );
|
|
t.def = this.def;
|
|
t.setDamageValue( this.getDamageValue() );
|
|
t.setDisplayDamage( this.getDisplayDamage() );
|
|
t.setMaxDamage( this.getMaxDamage() );
|
|
t.setTagCompound( this.getTagCompound() );
|
|
t.setIsOre( this.getIsOre() );
|
|
return t;
|
|
}
|
|
|
|
@Override
|
|
public boolean equals( final Object obj )
|
|
{
|
|
if( obj == null )
|
|
{
|
|
return false;
|
|
}
|
|
if( this.getClass() != obj.getClass() )
|
|
{
|
|
return false;
|
|
}
|
|
final AEItemDef other = (AEItemDef) obj;
|
|
return other.getDamageValue() == this.getDamageValue() && other.getItem() == this.getItem() && this.getTagCompound() == other.getTagCompound();
|
|
}
|
|
|
|
boolean isItem( final ItemStack otherStack )
|
|
{
|
|
// hackery!
|
|
final int dmg = this.getDamageValueHack( otherStack );
|
|
|
|
if( this.getItem() == otherStack.getItem() && dmg == this.getDamageValue() )
|
|
{
|
|
if( ( this.getTagCompound() != null ) == otherStack.hasTagCompound() )
|
|
{
|
|
return true;
|
|
}
|
|
|
|
if( this.getTagCompound() != null && otherStack.hasTagCompound() )
|
|
{
|
|
return Platform.NBTEqualityTest( this.getTagCompound(), otherStack.getTagCompound() );
|
|
}
|
|
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|
|
|
|
int getDamageValueHack( final ItemStack is )
|
|
{
|
|
return Items.BLAZE_ROD.getDamage( is );
|
|
}
|
|
|
|
void reHash()
|
|
{
|
|
this.def = this.getItemID() << Platform.DEF_OFFSET | this.getDamageValue();
|
|
this.myHash = this.def ^ ( this.getTagCompound() == null ? 0 : System.identityHashCode( this.getTagCompound() ) );
|
|
}
|
|
|
|
AESharedNBT getTagCompound()
|
|
{
|
|
return this.tagCompound;
|
|
}
|
|
|
|
void setTagCompound( final AESharedNBT tagCompound )
|
|
{
|
|
this.tagCompound = tagCompound;
|
|
}
|
|
|
|
int getDamageValue()
|
|
{
|
|
return this.damageValue;
|
|
}
|
|
|
|
int setDamageValue( final int damageValue )
|
|
{
|
|
this.damageValue = damageValue;
|
|
return damageValue;
|
|
}
|
|
|
|
Item getItem()
|
|
{
|
|
return this.item;
|
|
}
|
|
|
|
int getDisplayDamage()
|
|
{
|
|
return this.displayDamage;
|
|
}
|
|
|
|
void setDisplayDamage( final int displayDamage )
|
|
{
|
|
this.displayDamage = displayDamage;
|
|
}
|
|
|
|
String getDisplayName()
|
|
{
|
|
return this.displayName;
|
|
}
|
|
|
|
void setDisplayName( final String displayName )
|
|
{
|
|
this.displayName = displayName;
|
|
}
|
|
|
|
List getTooltip()
|
|
{
|
|
return this.tooltip;
|
|
}
|
|
|
|
List setTooltip( final List tooltip )
|
|
{
|
|
this.tooltip = tooltip;
|
|
return tooltip;
|
|
}
|
|
|
|
ResourceLocation getUniqueID()
|
|
{
|
|
return this.uniqueID;
|
|
}
|
|
|
|
ResourceLocation setUniqueID( final ResourceLocation uniqueID )
|
|
{
|
|
this.uniqueID = uniqueID;
|
|
return uniqueID;
|
|
}
|
|
|
|
OreReference getIsOre()
|
|
{
|
|
return this.isOre;
|
|
}
|
|
|
|
void setIsOre( final OreReference isOre )
|
|
{
|
|
this.isOre = isOre;
|
|
}
|
|
|
|
int getItemID()
|
|
{
|
|
return this.itemID;
|
|
}
|
|
|
|
int getMaxDamage()
|
|
{
|
|
return this.maxDamage;
|
|
}
|
|
|
|
void setMaxDamage( final int maxDamage )
|
|
{
|
|
this.maxDamage = maxDamage;
|
|
}
|
|
|
|
/**
|
|
* TODO: Check if replaceable by hashCode();
|
|
*/
|
|
int getMyHash()
|
|
{
|
|
return this.myHash;
|
|
}
|
|
|
|
}
|