Applied-Energistics-2-tiler.../src/main/java/appeng/util/item/AEItemDef.java
LordMZTE f67fb6a129
Some checks failed
continuous-integration/drone/push Build is failing
chore: format code
2022-12-02 17:40:47 +01:00

195 lines
5.2 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 appeng.util.Platform;
import cpw.mods.fml.common.registry.GameRegistry.UniqueIdentifier;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import net.minecraft.init.Items;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
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 UniqueIdentifier 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;
}
UniqueIdentifier getUniqueID() {
return this.uniqueID;
}
UniqueIdentifier setUniqueID(final UniqueIdentifier 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;
}
}