Mark OreStack and WrappedStack final, and clean up some of the code in WrappedStack

This commit is contained in:
Pahimar 2016-05-27 08:41:07 -04:00
parent 79bf272f28
commit 80afa0e95c
2 changed files with 87 additions and 125 deletions

View file

@ -8,7 +8,7 @@ import net.minecraft.nbt.NBTTagCompound;
import java.util.*; import java.util.*;
import java.util.stream.Collectors; import java.util.stream.Collectors;
public class OreStack implements Comparable<OreStack> { public final class OreStack implements Comparable<OreStack> {
public String oreName; public String oreName;
public int stackSize; public int stackSize;

View file

@ -12,258 +12,224 @@ import java.util.ArrayList;
import java.util.Comparator; import java.util.Comparator;
import java.util.List; import java.util.List;
public class WrappedStack implements Comparable<WrappedStack> { public final class WrappedStack implements Comparable<WrappedStack> {
private final String objectType;
private final Object wrappedStack; private final Object wrappedStack;
private int stackSize; private int stackSize;
public WrappedStack() public WrappedStack() {
{
objectType = null;
stackSize = -1; stackSize = -1;
wrappedStack = null; wrappedStack = null;
} }
private WrappedStack(Object object) private WrappedStack(Object object) {
{
if (object instanceof Item) if (object instanceof Item) {
{
object = new ItemStack((Item) object); object = new ItemStack((Item) object);
} }
else if (object instanceof Block) else if (object instanceof Block) {
{
object = new ItemStack((Block) object); object = new ItemStack((Block) object);
} }
else if (object instanceof Fluid) else if (object instanceof Fluid) {
{
object = new FluidStack((Fluid) object, 1000); object = new FluidStack((Fluid) object, 1000);
} }
if (object instanceof ItemStack) if (object instanceof ItemStack) {
{
if (((ItemStack) object).getItem() != null) if (((ItemStack) object).getItem() != null) {
{
ItemStack itemStackObject = (ItemStack) object;
objectType = "itemstack";
stackSize = ((ItemStack) object).stackSize; stackSize = ((ItemStack) object).stackSize;
wrappedStack = ItemHelper.clone((ItemStack) object, 1); wrappedStack = ItemHelper.clone((ItemStack) object, 1);
} }
else else {
{
objectType = null;
stackSize = -1; stackSize = -1;
wrappedStack = null; wrappedStack = null;
} }
} }
else if (object instanceof OreStack) else if (object instanceof OreStack) {
{
OreStack oreStack = (OreStack) object; OreStack oreStack = (OreStack) object;
objectType = "orestack";
stackSize = oreStack.stackSize; stackSize = oreStack.stackSize;
oreStack.stackSize = 1; oreStack.stackSize = 1;
wrappedStack = oreStack; wrappedStack = oreStack;
} }
else if (object instanceof ArrayList) else if (object instanceof ArrayList) {
{
ArrayList<?> objectList = (ArrayList<?>) object; ArrayList<?> objectList = (ArrayList<?>) object;
OreStack possibleOreStack = OreStack.getOreStackFromList(objectList); OreStack possibleOreStack = OreStack.getOreStackFromList(objectList);
if (possibleOreStack != null) if (possibleOreStack != null) {
{
objectType = "orestack";
stackSize = possibleOreStack.stackSize; stackSize = possibleOreStack.stackSize;
possibleOreStack.stackSize = 1; possibleOreStack.stackSize = 1;
wrappedStack = possibleOreStack; wrappedStack = possibleOreStack;
} }
else else {
{
objectType = null;
stackSize = -1; stackSize = -1;
wrappedStack = null; wrappedStack = null;
} }
} }
else if (object instanceof FluidStack) else if (object instanceof FluidStack) {
{
FluidStack fluidStack = ((FluidStack) object).copy(); FluidStack fluidStack = ((FluidStack) object).copy();
objectType = "fluidstack";
stackSize = fluidStack.amount; stackSize = fluidStack.amount;
fluidStack.amount = 1; fluidStack.amount = 1;
wrappedStack = fluidStack; wrappedStack = fluidStack;
} }
else if (object instanceof WrappedStack) else if (object instanceof WrappedStack) {
{
WrappedStack wrappedStackObject = (WrappedStack) object; WrappedStack wrappedStackObject = (WrappedStack) object;
if (wrappedStackObject.getWrappedObject() != null) if (wrappedStackObject.getWrappedObject() != null) {
{
this.objectType = wrappedStackObject.objectType;
this.stackSize = wrappedStackObject.stackSize; this.stackSize = wrappedStackObject.stackSize;
this.wrappedStack = wrappedStackObject.wrappedStack; this.wrappedStack = wrappedStackObject.wrappedStack;
} }
else else {
{
objectType = null;
stackSize = -1; stackSize = -1;
wrappedStack = null; wrappedStack = null;
} }
} }
else else {
{
objectType = null;
stackSize = -1; stackSize = -1;
wrappedStack = null; wrappedStack = null;
} }
} }
private WrappedStack(Object object, int stackSize) private WrappedStack(Object object, int stackSize) {
{
if (object instanceof Item) if (object instanceof Item) {
{
object = new ItemStack((Item) object); object = new ItemStack((Item) object);
} }
else if (object instanceof Block) else if (object instanceof Block) {
{
object = new ItemStack((Block) object); object = new ItemStack((Block) object);
} }
else if (object instanceof Fluid) else if (object instanceof Fluid) {
{
object = new FluidStack((Fluid) object, 1000); object = new FluidStack((Fluid) object, 1000);
} }
if (object instanceof ItemStack) if (object instanceof ItemStack) {
{
objectType = "itemstack";
this.stackSize = stackSize; this.stackSize = stackSize;
wrappedStack = ItemHelper.clone((ItemStack) object, 1); wrappedStack = ItemHelper.clone((ItemStack) object, 1);
} }
else if (object instanceof OreStack) else if (object instanceof OreStack) {
{
OreStack oreStack = (OreStack) object; OreStack oreStack = (OreStack) object;
objectType = "orestack";
this.stackSize = stackSize; this.stackSize = stackSize;
oreStack.stackSize = 1; oreStack.stackSize = 1;
wrappedStack = oreStack; wrappedStack = oreStack;
} }
else if (object instanceof ArrayList) else if (object instanceof ArrayList) {
{
ArrayList<?> objectList = (ArrayList<?>) object; ArrayList<?> objectList = (ArrayList<?>) object;
OreStack possibleOreStack = OreStack.getOreStackFromList(objectList); OreStack possibleOreStack = OreStack.getOreStackFromList(objectList);
if (possibleOreStack != null) if (possibleOreStack != null) {
{
objectType = "orestack";
this.stackSize = stackSize; this.stackSize = stackSize;
possibleOreStack.stackSize = 1; possibleOreStack.stackSize = 1;
wrappedStack = possibleOreStack; wrappedStack = possibleOreStack;
} }
else else {
{
objectType = null;
this.stackSize = -1; this.stackSize = -1;
wrappedStack = null; wrappedStack = null;
} }
} }
else if (object instanceof FluidStack) else if (object instanceof FluidStack) {
{
FluidStack fluidStack = (FluidStack) object; FluidStack fluidStack = (FluidStack) object;
objectType = "fluidstack";
this.stackSize = stackSize; this.stackSize = stackSize;
fluidStack.amount = 1; fluidStack.amount = 1;
wrappedStack = fluidStack; wrappedStack = fluidStack;
} }
else if (object instanceof WrappedStack) else if (object instanceof WrappedStack) {
{
WrappedStack wrappedStackObject = (WrappedStack) object; WrappedStack wrappedStackObject = (WrappedStack) object;
if (wrappedStackObject.getWrappedObject() != null) if (wrappedStackObject.getWrappedObject() != null) {
{
this.objectType = wrappedStackObject.objectType;
this.stackSize = stackSize; this.stackSize = stackSize;
this.wrappedStack = wrappedStackObject.wrappedStack; this.wrappedStack = wrappedStackObject.wrappedStack;
} }
else else {
{
objectType = null;
this.stackSize = -1; this.stackSize = -1;
wrappedStack = null; wrappedStack = null;
} }
} }
else else {
{
objectType = null;
this.stackSize = -1; this.stackSize = -1;
wrappedStack = null; wrappedStack = null;
} }
} }
public Object getWrappedObject() public Object getWrappedObject() {
{
return wrappedStack; return wrappedStack;
} }
public static boolean canBeWrapped(Object object) public static boolean canBeWrapped(Object object) {
{
if (object instanceof WrappedStack) if (object instanceof WrappedStack) {
{
return true; return true;
} }
else if (object instanceof Item || object instanceof Block) else if (object instanceof Item || object instanceof Block) {
{
return true; return true;
} }
else if (object instanceof ItemStack) else if (object instanceof ItemStack) {
{
if (((ItemStack) object).getItem() != null) if (((ItemStack) object).getItem() != null) {
{
return true; return true;
} }
} }
else if (object instanceof OreStack) else if (object instanceof OreStack) {
{
return true; return true;
} }
else if (object instanceof List) else if (object instanceof List) {
{
if (OreStack.getOreStackFromList((List<?>) object) != null) if (OreStack.getOreStackFromList((List<?>) object) != null) {
{
return true; return true;
} }
} }
else if (object instanceof Fluid || object instanceof FluidStack) else if (object instanceof Fluid || object instanceof FluidStack) {
{
return true; return true;
} }
return false; return false;
} }
public int getStackSize() public int getStackSize() {
{
return stackSize; return stackSize;
} }
public void setStackSize(int stackSize) public void setStackSize(int stackSize) {
{
this.stackSize = stackSize; this.stackSize = stackSize;
} }
public static WrappedStack wrap(Object object) public static WrappedStack wrap(Object object) {
{
if (canBeWrapped(object)) if (canBeWrapped(object)) {
{
return new WrappedStack(object); return new WrappedStack(object);
} }
return null; return null;
} }
public static WrappedStack wrap(Object object, int stackSize) public static WrappedStack wrap(Object object, int stackSize) {
{
if (canBeWrapped(object)) if (canBeWrapped(object)) {
{
return new WrappedStack(object, stackSize); return new WrappedStack(object, stackSize);
} }
@ -271,19 +237,17 @@ public class WrappedStack implements Comparable<WrappedStack> {
} }
@Override @Override
public boolean equals(Object object) public boolean equals(Object object) {
{
return object instanceof WrappedStack && (this.compareTo((WrappedStack) object) == 0); return object instanceof WrappedStack && (this.compareTo((WrappedStack) object) == 0);
} }
/* /**
* Sort order (class-wise) goes ItemStack, OreStack, EnergyStack, * Sort order (class-wise) goes ItemStack, OreStack, EnergyStack,
* FluidStack, null * FluidStack, null
* @see java.lang.Comparable#compareTo(java.lang.Object) * @see java.lang.Comparable#compareTo(java.lang.Object)
*/ */
@Override @Override
public int compareTo(WrappedStack wrappedStack) public int compareTo(WrappedStack wrappedStack) {
{
return COMPARATOR.compare(this, wrappedStack); return COMPARATOR.compare(this, wrappedStack);
} }
@ -329,12 +293,10 @@ public class WrappedStack implements Comparable<WrappedStack> {
} }
} }
public static final Comparator<WrappedStack> COMPARATOR = new Comparator<WrappedStack>() public static final Comparator<WrappedStack> COMPARATOR = new Comparator<WrappedStack>() {
{
@Override @Override
public int compare(WrappedStack wrappedStack1, WrappedStack wrappedStack2) public int compare(WrappedStack wrappedStack1, WrappedStack wrappedStack2) {
{
if (wrappedStack1.wrappedStack instanceof ItemStack) { if (wrappedStack1.wrappedStack instanceof ItemStack) {