Fix some netsync stuff with the Calcinator, as well as the read/write NBT stuff. Also reformat some of the code
This commit is contained in:
parent
990dab6bf5
commit
f48f9093ab
18 changed files with 960 additions and 608 deletions
|
@ -12,24 +12,28 @@ import net.minecraft.util.StatCollector;
|
||||||
import org.lwjgl.opengl.GL11;
|
import org.lwjgl.opengl.GL11;
|
||||||
|
|
||||||
@SideOnly(Side.CLIENT)
|
@SideOnly(Side.CLIENT)
|
||||||
public class GuiCalcinator extends GuiContainer {
|
public class GuiCalcinator extends GuiContainer
|
||||||
|
{
|
||||||
private TileEntityCalcinator tileEntityCalcinator;
|
private TileEntityCalcinator tileEntityCalcinator;
|
||||||
|
|
||||||
public GuiCalcinator(InventoryPlayer inventoryPlayer, TileEntityCalcinator tileEntityCalcinator) {
|
public GuiCalcinator(InventoryPlayer inventoryPlayer, TileEntityCalcinator tileEntityCalcinator)
|
||||||
|
{
|
||||||
super(new ContainerCalcinator(inventoryPlayer, tileEntityCalcinator));
|
super(new ContainerCalcinator(inventoryPlayer, tileEntityCalcinator));
|
||||||
ySize = 176;
|
ySize = 176;
|
||||||
this.tileEntityCalcinator = tileEntityCalcinator;
|
this.tileEntityCalcinator = tileEntityCalcinator;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void drawGuiContainerForegroundLayer(int x, int y) {
|
protected void drawGuiContainerForegroundLayer(int x, int y)
|
||||||
|
{
|
||||||
String containerName = StatCollector.translateToLocal(tileEntityCalcinator.getInventoryName());
|
String containerName = StatCollector.translateToLocal(tileEntityCalcinator.getInventoryName());
|
||||||
fontRendererObj.drawString(containerName, xSize / 2 - fontRendererObj.getStringWidth(containerName) / 2, 6, 4210752);
|
fontRendererObj.drawString(containerName, xSize / 2 - fontRendererObj.getStringWidth(containerName) / 2, 6, 4210752);
|
||||||
fontRendererObj.drawString(StatCollector.translateToLocal(Names.Containers.VANILLA_INVENTORY), 8, ySize - 96 + 2, 4210752);
|
fontRendererObj.drawString(StatCollector.translateToLocal(Names.Containers.VANILLA_INVENTORY), 8, ySize - 96 + 2, 4210752);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void drawGuiContainerBackgroundLayer(float opacity, int x, int y) {
|
protected void drawGuiContainerBackgroundLayer(float opacity, int x, int y)
|
||||||
|
{
|
||||||
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
|
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
|
||||||
|
|
||||||
this.mc.getTextureManager().bindTexture(Textures.GUI_CALCINATOR);
|
this.mc.getTextureManager().bindTexture(Textures.GUI_CALCINATOR);
|
||||||
|
@ -39,7 +43,8 @@ public class GuiCalcinator extends GuiContainer {
|
||||||
this.drawTexturedModalRect(xStart, yStart, 0, 0, xSize, ySize);
|
this.drawTexturedModalRect(xStart, yStart, 0, 0, xSize, ySize);
|
||||||
int scaleAdjustment;
|
int scaleAdjustment;
|
||||||
|
|
||||||
if (this.tileEntityCalcinator.getState() == 1) {
|
if (this.tileEntityCalcinator.getState() == 1)
|
||||||
|
{
|
||||||
scaleAdjustment = this.tileEntityCalcinator.getBurnTimeRemainingScaled(12);
|
scaleAdjustment = this.tileEntityCalcinator.getBurnTimeRemainingScaled(12);
|
||||||
this.drawTexturedModalRect(xStart + 57, yStart + 36 + 23 - scaleAdjustment, 176, 12 - scaleAdjustment, 14, scaleAdjustment + 2);
|
this.drawTexturedModalRect(xStart + 57, yStart + 36 + 23 - scaleAdjustment, 176, 12 - scaleAdjustment, 14, scaleAdjustment + 2);
|
||||||
}
|
}
|
||||||
|
|
|
@ -23,31 +23,6 @@ public class EnergyValue implements Comparable<EnergyValue>, JsonDeserializer<En
|
||||||
this(new float[EnergyType.TYPES.length]);
|
this(new float[EnergyType.TYPES.length]);
|
||||||
}
|
}
|
||||||
|
|
||||||
public EnergyValue(int value)
|
|
||||||
{
|
|
||||||
this((float) value);
|
|
||||||
}
|
|
||||||
|
|
||||||
public EnergyValue(float value)
|
|
||||||
{
|
|
||||||
this(value, EnergyType.DEFAULT);
|
|
||||||
}
|
|
||||||
|
|
||||||
public EnergyValue(float value, EnergyComponent component)
|
|
||||||
{
|
|
||||||
this(value, component.type);
|
|
||||||
}
|
|
||||||
|
|
||||||
public EnergyValue(int value, EnergyType energyType)
|
|
||||||
{
|
|
||||||
this((float) value, energyType);
|
|
||||||
}
|
|
||||||
|
|
||||||
public EnergyValue(float value, EnergyType energyType)
|
|
||||||
{
|
|
||||||
this(value, Arrays.asList(new EnergyComponent(energyType)));
|
|
||||||
}
|
|
||||||
|
|
||||||
public EnergyValue(float[] components)
|
public EnergyValue(float[] components)
|
||||||
{
|
{
|
||||||
if (components.length == EnergyType.TYPES.length)
|
if (components.length == EnergyType.TYPES.length)
|
||||||
|
@ -65,9 +40,19 @@ public class EnergyValue implements Comparable<EnergyValue>, JsonDeserializer<En
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public EnergyValue(int value, List<EnergyComponent> componentList)
|
public EnergyValue(int value)
|
||||||
{
|
{
|
||||||
this((float) value, componentList);
|
this((float) value);
|
||||||
|
}
|
||||||
|
|
||||||
|
public EnergyValue(float value)
|
||||||
|
{
|
||||||
|
this(value, EnergyType.DEFAULT);
|
||||||
|
}
|
||||||
|
|
||||||
|
public EnergyValue(float value, EnergyType energyType)
|
||||||
|
{
|
||||||
|
this(value, Arrays.asList(new EnergyComponent(energyType)));
|
||||||
}
|
}
|
||||||
|
|
||||||
public EnergyValue(float value, List<EnergyComponent> componentList)
|
public EnergyValue(float value, List<EnergyComponent> componentList)
|
||||||
|
@ -108,34 +93,6 @@ public class EnergyValue implements Comparable<EnergyValue>, JsonDeserializer<En
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Deserializes an EnergyValue object from the given serialized json String
|
|
||||||
*
|
|
||||||
* @param jsonEnergyValue
|
|
||||||
* Json encoded String representing a EnergyValue object
|
|
||||||
*
|
|
||||||
* @return The EnergyValue that was encoded as json, or null if a valid EnergyValue could not be decoded from given
|
|
||||||
* String
|
|
||||||
*/
|
|
||||||
@SuppressWarnings("unused")
|
|
||||||
public static EnergyValue createFromJson(String jsonEnergyValue)
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
return gsonSerializer.fromJson(jsonEnergyValue, EnergyValue.class);
|
|
||||||
}
|
|
||||||
catch (JsonSyntaxException exception)
|
|
||||||
{
|
|
||||||
LogHelper.error(exception.getMessage());
|
|
||||||
}
|
|
||||||
catch (JsonParseException exception)
|
|
||||||
{
|
|
||||||
LogHelper.error(exception.getMessage());
|
|
||||||
}
|
|
||||||
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
private static List<EnergyComponent> collateComponents(List<EnergyComponent> uncollatedComponents)
|
private static List<EnergyComponent> collateComponents(List<EnergyComponent> uncollatedComponents)
|
||||||
{
|
{
|
||||||
Integer[] componentCount = new Integer[EnergyType.TYPES.length];
|
Integer[] componentCount = new Integer[EnergyType.TYPES.length];
|
||||||
|
@ -168,25 +125,59 @@ public class EnergyValue implements Comparable<EnergyValue>, JsonDeserializer<En
|
||||||
return collatedComponents;
|
return collatedComponents;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static int compareComponents(float[] first, float[] second)
|
public EnergyValue(float value, EnergyComponent component)
|
||||||
{
|
{
|
||||||
if (first.length == EnergyType.TYPES.length && second.length == EnergyType.TYPES.length)
|
this(value, component.type);
|
||||||
{
|
|
||||||
|
|
||||||
for (EnergyType energyType : EnergyType.TYPES)
|
|
||||||
{
|
|
||||||
if (Float.compare(first[energyType.ordinal()], second[energyType.ordinal()]) != 0)
|
|
||||||
{
|
|
||||||
return Float.compare(first[energyType.ordinal()], second[energyType.ordinal()]);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
public EnergyValue(int value, EnergyType energyType)
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
{
|
||||||
throw new ArrayIndexOutOfBoundsException();
|
this((float) value, energyType);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public EnergyValue(int value, List<EnergyComponent> componentList)
|
||||||
|
{
|
||||||
|
this((float) value, componentList);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Deserializes an EnergyValue object from the given serialized json String
|
||||||
|
*
|
||||||
|
* @param jsonEnergyValue Json encoded String representing a EnergyValue object
|
||||||
|
* @return The EnergyValue that was encoded as json, or null if a valid EnergyValue could not be decoded from given
|
||||||
|
* String
|
||||||
|
*/
|
||||||
|
@SuppressWarnings("unused")
|
||||||
|
public static EnergyValue createFromJson(String jsonEnergyValue)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
return gsonSerializer.fromJson(jsonEnergyValue, EnergyValue.class);
|
||||||
|
}
|
||||||
|
catch (JsonSyntaxException exception)
|
||||||
|
{
|
||||||
|
LogHelper.error(exception.getMessage());
|
||||||
|
}
|
||||||
|
catch (JsonParseException exception)
|
||||||
|
{
|
||||||
|
LogHelper.error(exception.getMessage());
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int hashCode()
|
||||||
|
{
|
||||||
|
int hashCode = 1;
|
||||||
|
|
||||||
|
hashCode = 37 * hashCode + Float.floatToIntBits(getValue());
|
||||||
|
for (float subValue : components)
|
||||||
|
{
|
||||||
|
hashCode = 37 * hashCode + Float.floatToIntBits(subValue);
|
||||||
|
}
|
||||||
|
|
||||||
|
return hashCode;
|
||||||
}
|
}
|
||||||
|
|
||||||
public float getValue()
|
public float getValue()
|
||||||
|
@ -228,20 +219,6 @@ public class EnergyValue implements Comparable<EnergyValue>, JsonDeserializer<En
|
||||||
return stringBuilder.toString();
|
return stringBuilder.toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public int hashCode()
|
|
||||||
{
|
|
||||||
int hashCode = 1;
|
|
||||||
|
|
||||||
hashCode = 37 * hashCode + Float.floatToIntBits(getValue());
|
|
||||||
for (float subValue : components)
|
|
||||||
{
|
|
||||||
hashCode = 37 * hashCode + Float.floatToIntBits(subValue);
|
|
||||||
}
|
|
||||||
|
|
||||||
return hashCode;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int compareTo(EnergyValue exchangeEnergyValue)
|
public int compareTo(EnergyValue exchangeEnergyValue)
|
||||||
{
|
{
|
||||||
|
@ -255,6 +232,27 @@ public class EnergyValue implements Comparable<EnergyValue>, JsonDeserializer<En
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static int compareComponents(float[] first, float[] second)
|
||||||
|
{
|
||||||
|
if (first.length == EnergyType.TYPES.length && second.length == EnergyType.TYPES.length)
|
||||||
|
{
|
||||||
|
|
||||||
|
for (EnergyType energyType : EnergyType.TYPES)
|
||||||
|
{
|
||||||
|
if (Float.compare(first[energyType.ordinal()], second[energyType.ordinal()]) != 0)
|
||||||
|
{
|
||||||
|
return Float.compare(first[energyType.ordinal()], second[energyType.ordinal()]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
throw new ArrayIndexOutOfBoundsException();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns this EnergyValue as a json serialized String
|
* Returns this EnergyValue as a json serialized String
|
||||||
*
|
*
|
||||||
|
|
|
@ -58,17 +58,17 @@ public class OreStack implements Comparable<OreStack>
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
public OreStack(String oreName)
|
||||||
|
{
|
||||||
|
this(oreName, 1);
|
||||||
|
}
|
||||||
|
|
||||||
public OreStack(String oreName, int stackSize)
|
public OreStack(String oreName, int stackSize)
|
||||||
{
|
{
|
||||||
this.oreName = oreName;
|
this.oreName = oreName;
|
||||||
this.stackSize = stackSize;
|
this.stackSize = stackSize;
|
||||||
}
|
}
|
||||||
|
|
||||||
public OreStack(String oreName)
|
|
||||||
{
|
|
||||||
this(oreName, 1);
|
|
||||||
}
|
|
||||||
|
|
||||||
public OreStack(ItemStack itemStack)
|
public OreStack(ItemStack itemStack)
|
||||||
{
|
{
|
||||||
if (itemStack != null && OreDictionary.getOreIDs(itemStack).length > 0)
|
if (itemStack != null && OreDictionary.getOreIDs(itemStack).length > 0)
|
||||||
|
@ -94,9 +94,7 @@ public class OreStack implements Comparable<OreStack>
|
||||||
/**
|
/**
|
||||||
* Deserializes a OreStack object from the given serialized json String
|
* Deserializes a OreStack object from the given serialized json String
|
||||||
*
|
*
|
||||||
* @param jsonOreStack
|
* @param jsonOreStack Json encoded String representing a OreStack object
|
||||||
* Json encoded String representing a OreStack object
|
|
||||||
*
|
|
||||||
* @return The OreStack that was encoded as json, or null if a valid OreStack could not be decoded from given String
|
* @return The OreStack that was encoded as json, or null if a valid OreStack could not be decoded from given String
|
||||||
*/
|
*/
|
||||||
@SuppressWarnings("unused")
|
@SuppressWarnings("unused")
|
||||||
|
@ -146,18 +144,18 @@ public class OreStack implements Comparable<OreStack>
|
||||||
return comparator.compare(oreStack1, oreStack2);
|
return comparator.compare(oreStack1, oreStack2);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public String toString()
|
|
||||||
{
|
|
||||||
return String.format("%sxoreStack.%s", stackSize, oreName);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean equals(Object object)
|
public boolean equals(Object object)
|
||||||
{
|
{
|
||||||
return object instanceof OreStack && (comparator.compare(this, (OreStack) object) == Compare.EQUALS);
|
return object instanceof OreStack && (comparator.compare(this, (OreStack) object) == Compare.EQUALS);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString()
|
||||||
|
{
|
||||||
|
return String.format("%sxoreStack.%s", stackSize, oreName);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int compareTo(OreStack oreStack)
|
public int compareTo(OreStack oreStack)
|
||||||
{
|
{
|
||||||
|
|
|
@ -13,18 +13,27 @@ import cpw.mods.fml.common.network.IGuiHandler;
|
||||||
import net.minecraft.entity.player.EntityPlayer;
|
import net.minecraft.entity.player.EntityPlayer;
|
||||||
import net.minecraft.world.World;
|
import net.minecraft.world.World;
|
||||||
|
|
||||||
public class GuiHandler implements IGuiHandler {
|
public class GuiHandler implements IGuiHandler
|
||||||
|
{
|
||||||
@Override
|
@Override
|
||||||
public Object getServerGuiElement(int id, EntityPlayer player, World world, int x, int y, int z) {
|
public Object getServerGuiElement(int id, EntityPlayer player, World world, int x, int y, int z)
|
||||||
if (id == GuiIds.ALCHEMICAL_CHEST) {
|
{
|
||||||
|
if (id == GuiIds.ALCHEMICAL_CHEST)
|
||||||
|
{
|
||||||
TileEntityAlchemicalChest tileEntityAlchemicalChest = (TileEntityAlchemicalChest) world.getTileEntity(x, y, z);
|
TileEntityAlchemicalChest tileEntityAlchemicalChest = (TileEntityAlchemicalChest) world.getTileEntity(x, y, z);
|
||||||
return new ContainerAlchemicalChest(player.inventory, tileEntityAlchemicalChest);
|
return new ContainerAlchemicalChest(player.inventory, tileEntityAlchemicalChest);
|
||||||
} else if (id == GuiIds.GLASS_BELL) {
|
}
|
||||||
|
else if (id == GuiIds.GLASS_BELL)
|
||||||
|
{
|
||||||
TileEntityGlassBell tileEntityGlassBell = (TileEntityGlassBell) world.getTileEntity(x, y, z);
|
TileEntityGlassBell tileEntityGlassBell = (TileEntityGlassBell) world.getTileEntity(x, y, z);
|
||||||
return new ContainerGlassBell(player.inventory, tileEntityGlassBell);
|
return new ContainerGlassBell(player.inventory, tileEntityGlassBell);
|
||||||
} else if (id == GuiIds.ALCHEMICAL_BAG) {
|
}
|
||||||
|
else if (id == GuiIds.ALCHEMICAL_BAG)
|
||||||
|
{
|
||||||
return new ContainerAlchemicalBag(player, new InventoryAlchemicalBag(player.getHeldItem()));
|
return new ContainerAlchemicalBag(player, new InventoryAlchemicalBag(player.getHeldItem()));
|
||||||
} else if (id == GuiIds.CALCINATOR) {
|
}
|
||||||
|
else if (id == GuiIds.CALCINATOR)
|
||||||
|
{
|
||||||
TileEntityCalcinator tileEntityCalcinator = (TileEntityCalcinator) world.getTileEntity(x, y, z);
|
TileEntityCalcinator tileEntityCalcinator = (TileEntityCalcinator) world.getTileEntity(x, y, z);
|
||||||
return new ContainerCalcinator(player.inventory, tileEntityCalcinator);
|
return new ContainerCalcinator(player.inventory, tileEntityCalcinator);
|
||||||
}
|
}
|
||||||
|
@ -33,16 +42,24 @@ public class GuiHandler implements IGuiHandler {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Object getClientGuiElement(int id, EntityPlayer player, World world, int x, int y, int z) {
|
public Object getClientGuiElement(int id, EntityPlayer player, World world, int x, int y, int z)
|
||||||
if (id == GuiIds.ALCHEMICAL_CHEST) {
|
{
|
||||||
|
if (id == GuiIds.ALCHEMICAL_CHEST)
|
||||||
|
{
|
||||||
TileEntityAlchemicalChest tileEntityAlchemicalChest = (TileEntityAlchemicalChest) world.getTileEntity(x, y, z);
|
TileEntityAlchemicalChest tileEntityAlchemicalChest = (TileEntityAlchemicalChest) world.getTileEntity(x, y, z);
|
||||||
return new GuiAlchemicalChest(player.inventory, tileEntityAlchemicalChest);
|
return new GuiAlchemicalChest(player.inventory, tileEntityAlchemicalChest);
|
||||||
} else if (id == GuiIds.GLASS_BELL) {
|
}
|
||||||
|
else if (id == GuiIds.GLASS_BELL)
|
||||||
|
{
|
||||||
TileEntityGlassBell tileEntityGlassBell = (TileEntityGlassBell) world.getTileEntity(x, y, z);
|
TileEntityGlassBell tileEntityGlassBell = (TileEntityGlassBell) world.getTileEntity(x, y, z);
|
||||||
return new GuiGlassBell(player.inventory, tileEntityGlassBell);
|
return new GuiGlassBell(player.inventory, tileEntityGlassBell);
|
||||||
} else if (id == GuiIds.ALCHEMICAL_BAG) {
|
}
|
||||||
|
else if (id == GuiIds.ALCHEMICAL_BAG)
|
||||||
|
{
|
||||||
return new GuiAlchemicalBag(player, new InventoryAlchemicalBag(player.getHeldItem()));
|
return new GuiAlchemicalBag(player, new InventoryAlchemicalBag(player.getHeldItem()));
|
||||||
} else if (id == GuiIds.CALCINATOR) {
|
}
|
||||||
|
else if (id == GuiIds.CALCINATOR)
|
||||||
|
{
|
||||||
TileEntityCalcinator tileEntityCalcinator = (TileEntityCalcinator) world.getTileEntity(x, y, z);
|
TileEntityCalcinator tileEntityCalcinator = (TileEntityCalcinator) world.getTileEntity(x, y, z);
|
||||||
return new GuiCalcinator(player.inventory, tileEntityCalcinator);
|
return new GuiCalcinator(player.inventory, tileEntityCalcinator);
|
||||||
}
|
}
|
||||||
|
|
|
@ -11,13 +11,15 @@ import net.minecraft.inventory.Slot;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
import net.minecraft.tileentity.TileEntityFurnace;
|
import net.minecraft.tileentity.TileEntityFurnace;
|
||||||
|
|
||||||
public class ContainerCalcinator extends Container {
|
public class ContainerCalcinator extends Container
|
||||||
|
{
|
||||||
private TileEntityCalcinator tileEntityCalcinator;
|
private TileEntityCalcinator tileEntityCalcinator;
|
||||||
private int lastCookTime; // How much longer the Calcinator will burn
|
private int lastCookTime; // How much longer the Calcinator will burn
|
||||||
private int lastBurnTime; // The fuel value for the currently burning fuel
|
private int lastBurnTime; // The fuel value for the currently burning fuel
|
||||||
private int lastItemCookTime; // How long the current item has been "cooking"
|
private int lastItemCookTime; // How long the current item has been "cooking"
|
||||||
|
|
||||||
public ContainerCalcinator(InventoryPlayer inventoryPlayer, TileEntityCalcinator tileEntityCalcinator) {
|
public ContainerCalcinator(InventoryPlayer inventoryPlayer, TileEntityCalcinator tileEntityCalcinator)
|
||||||
|
{
|
||||||
this.tileEntityCalcinator = tileEntityCalcinator;
|
this.tileEntityCalcinator = tileEntityCalcinator;
|
||||||
|
|
||||||
// Add the fuel slot to the container
|
// Add the fuel slot to the container
|
||||||
|
@ -31,75 +33,24 @@ public class ContainerCalcinator extends Container {
|
||||||
this.addSlotToContainer(new SlotCalcinator(tileEntityCalcinator, TileEntityCalcinator.OUTPUT_RIGHT_INVENTORY_INDEX, 136, 35));
|
this.addSlotToContainer(new SlotCalcinator(tileEntityCalcinator, TileEntityCalcinator.OUTPUT_RIGHT_INVENTORY_INDEX, 136, 35));
|
||||||
|
|
||||||
// Add the player's inventory slots to the container
|
// Add the player's inventory slots to the container
|
||||||
for (int inventoryRowIndex = 0; inventoryRowIndex < 3; ++inventoryRowIndex) {
|
for (int inventoryRowIndex = 0; inventoryRowIndex < 3; ++inventoryRowIndex)
|
||||||
for (int inventoryColumnIndex = 0; inventoryColumnIndex < 9; ++inventoryColumnIndex) {
|
{
|
||||||
|
for (int inventoryColumnIndex = 0; inventoryColumnIndex < 9; ++inventoryColumnIndex)
|
||||||
|
{
|
||||||
this.addSlotToContainer(new Slot(inventoryPlayer, inventoryColumnIndex + inventoryRowIndex * 9 + 9, 8 + inventoryColumnIndex * 18, 94 + inventoryRowIndex * 18));
|
this.addSlotToContainer(new Slot(inventoryPlayer, inventoryColumnIndex + inventoryRowIndex * 9 + 9, 8 + inventoryColumnIndex * 18, 94 + inventoryRowIndex * 18));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Add the player's action bar slots to the container
|
// Add the player's action bar slots to the container
|
||||||
for (int actionBarSlotIndex = 0; actionBarSlotIndex < 9; ++actionBarSlotIndex) {
|
for (int actionBarSlotIndex = 0; actionBarSlotIndex < 9; ++actionBarSlotIndex)
|
||||||
|
{
|
||||||
this.addSlotToContainer(new Slot(inventoryPlayer, actionBarSlotIndex, 8 + actionBarSlotIndex * 18, 152));
|
this.addSlotToContainer(new Slot(inventoryPlayer, actionBarSlotIndex, 8 + actionBarSlotIndex * 18, 152));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean canInteractWith(EntityPlayer player) {
|
public void addCraftingToCrafters(ICrafting iCrafting)
|
||||||
return true;
|
{
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public ItemStack transferStackInSlot(EntityPlayer entityPlayer, int slotIndex) {
|
|
||||||
ItemStack itemStack = null;
|
|
||||||
Slot slot = (Slot) inventorySlots.get(slotIndex);
|
|
||||||
|
|
||||||
if (slot != null && slot.getHasStack()) {
|
|
||||||
|
|
||||||
ItemStack slotItemStack = slot.getStack();
|
|
||||||
itemStack = slotItemStack.copy();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* If we are shift-clicking an item out of the Aludel's container,
|
|
||||||
* attempt to put it in the first available slot in the player's
|
|
||||||
* inventory
|
|
||||||
*/
|
|
||||||
if (slotIndex < TileEntityCalcinator.INVENTORY_SIZE) {
|
|
||||||
if (!this.mergeItemStack(slotItemStack, TileEntityCalcinator.INVENTORY_SIZE, inventorySlots.size(), false)) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
/**
|
|
||||||
* If the stack being shift-clicked into the Aludel's container
|
|
||||||
* is a fuel, first try to put it in the fuel slot. If it cannot
|
|
||||||
* be merged into the fuel slot, try to put it in the input
|
|
||||||
* slot.
|
|
||||||
*/
|
|
||||||
if (TileEntityFurnace.isItemFuel(slotItemStack)) {
|
|
||||||
if (!this.mergeItemStack(slotItemStack, TileEntityCalcinator.FUEL_INVENTORY_INDEX, TileEntityCalcinator.OUTPUT_LEFT_INVENTORY_INDEX, false)) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Finally, attempt to put stack into the input slot
|
|
||||||
*/
|
|
||||||
else if (!this.mergeItemStack(slotItemStack, TileEntityCalcinator.INPUT_INVENTORY_INDEX, TileEntityCalcinator.OUTPUT_LEFT_INVENTORY_INDEX, false)) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (slotItemStack.stackSize == 0) {
|
|
||||||
slot.putStack(null);
|
|
||||||
} else {
|
|
||||||
slot.onSlotChanged();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return itemStack;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void addCraftingToCrafters(ICrafting iCrafting) {
|
|
||||||
super.addCraftingToCrafters(iCrafting);
|
super.addCraftingToCrafters(iCrafting);
|
||||||
iCrafting.sendProgressBarUpdate(this, 0, this.tileEntityCalcinator.deviceCookTime);
|
iCrafting.sendProgressBarUpdate(this, 0, this.tileEntityCalcinator.deviceCookTime);
|
||||||
iCrafting.sendProgressBarUpdate(this, 1, this.tileEntityCalcinator.fuelBurnTime);
|
iCrafting.sendProgressBarUpdate(this, 1, this.tileEntityCalcinator.fuelBurnTime);
|
||||||
|
@ -107,21 +58,26 @@ public class ContainerCalcinator extends Container {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void detectAndSendChanges() {
|
public void detectAndSendChanges()
|
||||||
|
{
|
||||||
super.detectAndSendChanges();
|
super.detectAndSendChanges();
|
||||||
|
|
||||||
for (Object crafter : this.crafters) {
|
for (Object crafter : this.crafters)
|
||||||
|
{
|
||||||
ICrafting icrafting = (ICrafting) crafter;
|
ICrafting icrafting = (ICrafting) crafter;
|
||||||
|
|
||||||
if (this.lastCookTime != this.tileEntityCalcinator.deviceCookTime) {
|
if (this.lastCookTime != this.tileEntityCalcinator.deviceCookTime)
|
||||||
|
{
|
||||||
icrafting.sendProgressBarUpdate(this, 0, this.tileEntityCalcinator.deviceCookTime);
|
icrafting.sendProgressBarUpdate(this, 0, this.tileEntityCalcinator.deviceCookTime);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (this.lastBurnTime != this.tileEntityCalcinator.fuelBurnTime) {
|
if (this.lastBurnTime != this.tileEntityCalcinator.fuelBurnTime)
|
||||||
|
{
|
||||||
icrafting.sendProgressBarUpdate(this, 1, this.tileEntityCalcinator.fuelBurnTime);
|
icrafting.sendProgressBarUpdate(this, 1, this.tileEntityCalcinator.fuelBurnTime);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (this.lastItemCookTime != this.tileEntityCalcinator.itemCookTime) {
|
if (this.lastItemCookTime != this.tileEntityCalcinator.itemCookTime)
|
||||||
|
{
|
||||||
icrafting.sendProgressBarUpdate(this, 2, this.tileEntityCalcinator.itemCookTime);
|
icrafting.sendProgressBarUpdate(this, 2, this.tileEntityCalcinator.itemCookTime);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -131,18 +87,90 @@ public class ContainerCalcinator extends Container {
|
||||||
this.lastItemCookTime = this.tileEntityCalcinator.itemCookTime;
|
this.lastItemCookTime = this.tileEntityCalcinator.itemCookTime;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ItemStack transferStackInSlot(EntityPlayer entityPlayer, int slotIndex)
|
||||||
|
{
|
||||||
|
ItemStack itemStack = null;
|
||||||
|
Slot slot = (Slot) inventorySlots.get(slotIndex);
|
||||||
|
|
||||||
|
if (slot != null && slot.getHasStack())
|
||||||
|
{
|
||||||
|
|
||||||
|
ItemStack slotItemStack = slot.getStack();
|
||||||
|
itemStack = slotItemStack.copy();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* If we are shift-clicking an item out of the Aludel's container,
|
||||||
|
* attempt to put it in the first available slot in the player's
|
||||||
|
* inventory
|
||||||
|
*/
|
||||||
|
if (slotIndex < TileEntityCalcinator.INVENTORY_SIZE)
|
||||||
|
{
|
||||||
|
if (!this.mergeItemStack(slotItemStack, TileEntityCalcinator.INVENTORY_SIZE, inventorySlots.size(), false))
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* If the stack being shift-clicked into the Aludel's container
|
||||||
|
* is a fuel, first try to put it in the fuel slot. If it cannot
|
||||||
|
* be merged into the fuel slot, try to put it in the input
|
||||||
|
* slot.
|
||||||
|
*/
|
||||||
|
if (TileEntityFurnace.isItemFuel(slotItemStack))
|
||||||
|
{
|
||||||
|
if (!this.mergeItemStack(slotItemStack, TileEntityCalcinator.FUEL_INVENTORY_INDEX, TileEntityCalcinator.OUTPUT_LEFT_INVENTORY_INDEX, false))
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Finally, attempt to put stack into the input slot
|
||||||
|
*/
|
||||||
|
else if (!this.mergeItemStack(slotItemStack, TileEntityCalcinator.INPUT_INVENTORY_INDEX, TileEntityCalcinator.OUTPUT_LEFT_INVENTORY_INDEX, false))
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (slotItemStack.stackSize == 0)
|
||||||
|
{
|
||||||
|
slot.putStack(null);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
slot.onSlotChanged();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return itemStack;
|
||||||
|
}
|
||||||
|
|
||||||
@SideOnly(Side.CLIENT)
|
@SideOnly(Side.CLIENT)
|
||||||
public void updateProgressBar(int valueType, int updatedValue) {
|
public void updateProgressBar(int valueType, int updatedValue)
|
||||||
if (valueType == 0) {
|
{
|
||||||
|
if (valueType == 0)
|
||||||
|
{
|
||||||
this.tileEntityCalcinator.deviceCookTime = updatedValue;
|
this.tileEntityCalcinator.deviceCookTime = updatedValue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (valueType == 1) {
|
if (valueType == 1)
|
||||||
|
{
|
||||||
this.tileEntityCalcinator.fuelBurnTime = updatedValue;
|
this.tileEntityCalcinator.fuelBurnTime = updatedValue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (valueType == 2) {
|
if (valueType == 2)
|
||||||
|
{
|
||||||
this.tileEntityCalcinator.itemCookTime = updatedValue;
|
this.tileEntityCalcinator.itemCookTime = updatedValue;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean canInteractWith(EntityPlayer player)
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,19 +6,23 @@ import net.minecraft.inventory.IInventory;
|
||||||
import net.minecraft.inventory.Slot;
|
import net.minecraft.inventory.Slot;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
|
|
||||||
public class SlotCalcinator extends Slot {
|
public class SlotCalcinator extends Slot
|
||||||
public SlotCalcinator(IInventory inventory, int x, int y, int z) {
|
{
|
||||||
|
public SlotCalcinator(IInventory inventory, int x, int y, int z)
|
||||||
|
{
|
||||||
super(inventory, x, y, z);
|
super(inventory, x, y, z);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isItemValid(ItemStack par1ItemStack) {
|
public void onPickupFromSlot(EntityPlayer entityPlayer, ItemStack itemStack)
|
||||||
return false;
|
{
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onPickupFromSlot(EntityPlayer entityPlayer, ItemStack itemStack) {
|
|
||||||
super.onPickupFromSlot(entityPlayer, itemStack);
|
super.onPickupFromSlot(entityPlayer, itemStack);
|
||||||
FMLCommonHandler.instance().firePlayerCraftingEvent(entityPlayer, itemStack, inventory);
|
FMLCommonHandler.instance().firePlayerCraftingEvent(entityPlayer, itemStack, inventory);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isItemValid(ItemStack par1ItemStack)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -9,34 +9,61 @@ import net.minecraftforge.oredict.OreDictionary;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
public class RecipeAludel {
|
public class RecipeAludel
|
||||||
|
{
|
||||||
private ItemStack recipeOutput;
|
private ItemStack recipeOutput;
|
||||||
private WrappedStack inputStack;
|
private WrappedStack inputStack;
|
||||||
private ItemStack dustStack;
|
private ItemStack dustStack;
|
||||||
|
|
||||||
public RecipeAludel(ItemStack recipeOutput, ItemStack inputStack, ItemStack dustStack) {
|
public RecipeAludel(ItemStack recipeOutput, ItemStack inputStack, ItemStack dustStack)
|
||||||
|
{
|
||||||
this.recipeOutput = recipeOutput.copy();
|
this.recipeOutput = recipeOutput.copy();
|
||||||
this.inputStack = new WrappedStack(inputStack);
|
this.inputStack = new WrappedStack(inputStack);
|
||||||
this.dustStack = dustStack.copy();
|
this.dustStack = dustStack.copy();
|
||||||
}
|
}
|
||||||
|
|
||||||
public RecipeAludel(ItemStack recipeOutput, OreStack inputStack, ItemStack dustStack) {
|
public RecipeAludel(ItemStack recipeOutput, OreStack inputStack, ItemStack dustStack)
|
||||||
|
{
|
||||||
this.recipeOutput = recipeOutput.copy();
|
this.recipeOutput = recipeOutput.copy();
|
||||||
this.inputStack = new WrappedStack(inputStack);
|
this.inputStack = new WrappedStack(inputStack);
|
||||||
this.dustStack = dustStack.copy();
|
this.dustStack = dustStack.copy();
|
||||||
}
|
}
|
||||||
|
|
||||||
private static boolean compareStacks(WrappedStack wrappedStack1, WrappedStack wrappedStack2) {
|
public boolean matches(ItemStack inputStack, ItemStack dustStack)
|
||||||
if (wrappedStack1 != null && wrappedStack1.getWrappedStack() != null && wrappedStack2 != null && wrappedStack2.getWrappedStack() != null) {
|
{
|
||||||
if (wrappedStack1.getWrappedStack() instanceof ItemStack && wrappedStack2.getWrappedStack() instanceof ItemStack) {
|
if (OreDictionary.getOreID(inputStack) != -1)
|
||||||
|
{
|
||||||
|
if (matches(new WrappedStack(new OreStack(inputStack)), dustStack))
|
||||||
|
{
|
||||||
|
return matches(new WrappedStack(new OreStack(inputStack)), dustStack);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return matches(new WrappedStack(inputStack), dustStack);
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean matches(WrappedStack inputStack, ItemStack dustStack)
|
||||||
|
{
|
||||||
|
return compareStacks(this.inputStack, inputStack) && compareItemStacks(this.dustStack, dustStack);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static boolean compareStacks(WrappedStack wrappedStack1, WrappedStack wrappedStack2)
|
||||||
|
{
|
||||||
|
if (wrappedStack1 != null && wrappedStack1.getWrappedStack() != null && wrappedStack2 != null && wrappedStack2.getWrappedStack() != null)
|
||||||
|
{
|
||||||
|
if (wrappedStack1.getWrappedStack() instanceof ItemStack && wrappedStack2.getWrappedStack() instanceof ItemStack)
|
||||||
|
{
|
||||||
ItemStack itemStack1 = (ItemStack) wrappedStack1.getWrappedStack();
|
ItemStack itemStack1 = (ItemStack) wrappedStack1.getWrappedStack();
|
||||||
itemStack1.stackSize = wrappedStack1.getStackSize();
|
itemStack1.stackSize = wrappedStack1.getStackSize();
|
||||||
ItemStack itemStack2 = (ItemStack) wrappedStack2.getWrappedStack();
|
ItemStack itemStack2 = (ItemStack) wrappedStack2.getWrappedStack();
|
||||||
itemStack2.stackSize = wrappedStack2.getStackSize();
|
itemStack2.stackSize = wrappedStack2.getStackSize();
|
||||||
|
|
||||||
return compareItemStacks(itemStack1, itemStack2);
|
return compareItemStacks(itemStack1, itemStack2);
|
||||||
} else if (wrappedStack1.getWrappedStack() instanceof OreStack && wrappedStack2.getWrappedStack() instanceof OreStack) {
|
}
|
||||||
if (((OreStack) wrappedStack1.getWrappedStack()).oreName.equalsIgnoreCase(((OreStack) wrappedStack2.getWrappedStack()).oreName)) {
|
else if (wrappedStack1.getWrappedStack() instanceof OreStack && wrappedStack2.getWrappedStack() instanceof OreStack)
|
||||||
|
{
|
||||||
|
if (((OreStack) wrappedStack1.getWrappedStack()).oreName.equalsIgnoreCase(((OreStack) wrappedStack2.getWrappedStack()).oreName))
|
||||||
|
{
|
||||||
return wrappedStack2.getStackSize() >= wrappedStack1.getStackSize();
|
return wrappedStack2.getStackSize() >= wrappedStack1.getStackSize();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -45,37 +72,23 @@ public class RecipeAludel {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static boolean compareItemStacks(ItemStack itemStack1, ItemStack itemStack2) {
|
private static boolean compareItemStacks(ItemStack itemStack1, ItemStack itemStack2)
|
||||||
|
{
|
||||||
return ItemHelper.equals(itemStack1, itemStack2);
|
return ItemHelper.equals(itemStack1, itemStack2);
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean matches(RecipeAludel recipeAludel) {
|
public ItemStack getRecipeOutput()
|
||||||
return compareItemStacks(this.recipeOutput, recipeAludel.recipeOutput) && matches(recipeAludel.inputStack, recipeAludel.dustStack);
|
{
|
||||||
}
|
|
||||||
|
|
||||||
public boolean matches(ItemStack inputStack, ItemStack dustStack) {
|
|
||||||
if (OreDictionary.getOreID(inputStack) != -1) {
|
|
||||||
if (matches(new WrappedStack(new OreStack(inputStack)), dustStack)) {
|
|
||||||
return matches(new WrappedStack(new OreStack(inputStack)), dustStack);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return matches(new WrappedStack(inputStack), dustStack);
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean matches(WrappedStack inputStack, ItemStack dustStack) {
|
|
||||||
return compareStacks(this.inputStack, inputStack) && compareItemStacks(this.dustStack, dustStack);
|
|
||||||
}
|
|
||||||
|
|
||||||
public ItemStack getRecipeOutput() {
|
|
||||||
return this.recipeOutput;
|
return this.recipeOutput;
|
||||||
}
|
}
|
||||||
|
|
||||||
public WrappedStack[] getRecipeInputs() {
|
public WrappedStack[] getRecipeInputs()
|
||||||
|
{
|
||||||
return new WrappedStack[]{inputStack, new WrappedStack(dustStack)};
|
return new WrappedStack[]{inputStack, new WrappedStack(dustStack)};
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<WrappedStack> getRecipeInputsAsWrappedStacks() {
|
public List<WrappedStack> getRecipeInputsAsWrappedStacks()
|
||||||
|
{
|
||||||
List<WrappedStack> recipeInputs = new ArrayList<WrappedStack>();
|
List<WrappedStack> recipeInputs = new ArrayList<WrappedStack>();
|
||||||
recipeInputs.add(new WrappedStack(inputStack));
|
recipeInputs.add(new WrappedStack(inputStack));
|
||||||
recipeInputs.add(new WrappedStack(dustStack));
|
recipeInputs.add(new WrappedStack(dustStack));
|
||||||
|
@ -83,16 +96,24 @@ public class RecipeAludel {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean equals(Object object) {
|
public boolean equals(Object object)
|
||||||
if (object instanceof RecipeAludel) {
|
{
|
||||||
|
if (object instanceof RecipeAludel)
|
||||||
|
{
|
||||||
return matches((RecipeAludel) object);
|
return matches((RecipeAludel) object);
|
||||||
}
|
}
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean matches(RecipeAludel recipeAludel)
|
||||||
|
{
|
||||||
|
return compareItemStacks(this.recipeOutput, recipeAludel.recipeOutput) && matches(recipeAludel.inputStack, recipeAludel.dustStack);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String toString() {
|
public String toString()
|
||||||
|
{
|
||||||
return String.format("Output: %s, Input: %s, Dust: %s", recipeOutput, inputStack, dustStack);
|
return String.format("Output: %s, Input: %s, Dust: %s", recipeOutput, inputStack, dustStack);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -13,17 +13,21 @@ import net.minecraftforge.oredict.OreDictionary;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
public class RecipesAludel {
|
public class RecipesAludel
|
||||||
|
{
|
||||||
private static RecipesAludel aludelRegistry = null;
|
private static RecipesAludel aludelRegistry = null;
|
||||||
|
|
||||||
private List<RecipeAludel> aludelRecipes;
|
private List<RecipeAludel> aludelRecipes;
|
||||||
|
|
||||||
private RecipesAludel() {
|
private RecipesAludel()
|
||||||
|
{
|
||||||
aludelRecipes = new ArrayList<RecipeAludel>();
|
aludelRecipes = new ArrayList<RecipeAludel>();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static RecipesAludel getInstance() {
|
public static RecipesAludel getInstance()
|
||||||
if (aludelRegistry == null) {
|
{
|
||||||
|
if (aludelRegistry == null)
|
||||||
|
{
|
||||||
aludelRegistry = new RecipesAludel();
|
aludelRegistry = new RecipesAludel();
|
||||||
aludelRegistry.init();
|
aludelRegistry.init();
|
||||||
}
|
}
|
||||||
|
@ -31,7 +35,8 @@ public class RecipesAludel {
|
||||||
return aludelRegistry;
|
return aludelRegistry;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void init() {
|
private void init()
|
||||||
|
{
|
||||||
// Ash + Verdant = Azure
|
// Ash + Verdant = Azure
|
||||||
aludelRegistry.addRecipe(new ItemStack(ModItems.alchemicalDust, 1, 2), new ItemStack(ModItems.alchemicalDust, 1, 0), new ItemStack(ModItems.alchemicalDust, 32, 1));
|
aludelRegistry.addRecipe(new ItemStack(ModItems.alchemicalDust, 1, 2), new ItemStack(ModItems.alchemicalDust, 1, 0), new ItemStack(ModItems.alchemicalDust, 32, 1));
|
||||||
|
|
||||||
|
@ -64,25 +69,34 @@ public class RecipesAludel {
|
||||||
aludelRegistry.addRecipe(new ItemStack(ModItems.stoneMinium), new ItemStack(ModItems.stoneInert), new ItemStack(ModItems.alchemicalDust, 8, 3));
|
aludelRegistry.addRecipe(new ItemStack(ModItems.stoneMinium), new ItemStack(ModItems.stoneInert), new ItemStack(ModItems.alchemicalDust, 8, 3));
|
||||||
}
|
}
|
||||||
|
|
||||||
public void addRecipe(ItemStack recipeOutput, ItemStack recipeInputStack, ItemStack recipeInputDust) {
|
public void addRecipe(ItemStack recipeOutput, ItemStack recipeInputStack, ItemStack recipeInputDust)
|
||||||
|
{
|
||||||
addRecipe(new RecipeAludel(recipeOutput, recipeInputStack, recipeInputDust));
|
addRecipe(new RecipeAludel(recipeOutput, recipeInputStack, recipeInputDust));
|
||||||
}
|
}
|
||||||
|
|
||||||
public void addRecipe(ItemStack recipeOutput, OreStack recipeInputStack, ItemStack recipeInputDust) {
|
public void addRecipe(RecipeAludel recipeAludel)
|
||||||
addRecipe(new RecipeAludel(recipeOutput, recipeInputStack, recipeInputDust));
|
{
|
||||||
}
|
if (!aludelRecipes.contains(recipeAludel))
|
||||||
|
{
|
||||||
public void addRecipe(RecipeAludel recipeAludel) {
|
|
||||||
if (!aludelRecipes.contains(recipeAludel)) {
|
|
||||||
aludelRecipes.add(recipeAludel);
|
aludelRecipes.add(recipeAludel);
|
||||||
} else {
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
LogHelper.debug(String.format("Attempted to add RecipeAludel '%s' but already exists in the recipe list", recipeAludel));
|
LogHelper.debug(String.format("Attempted to add RecipeAludel '%s' but already exists in the recipe list", recipeAludel));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public ItemStack getResult(ItemStack recipeInputStack, ItemStack recipeInputDust) {
|
public void addRecipe(ItemStack recipeOutput, OreStack recipeInputStack, ItemStack recipeInputDust)
|
||||||
for (RecipeAludel recipeAludel : aludelRecipes) {
|
{
|
||||||
if (recipeAludel.matches(recipeInputStack, recipeInputDust)) {
|
addRecipe(new RecipeAludel(recipeOutput, recipeInputStack, recipeInputDust));
|
||||||
|
}
|
||||||
|
|
||||||
|
public ItemStack getResult(ItemStack recipeInputStack, ItemStack recipeInputDust)
|
||||||
|
{
|
||||||
|
for (RecipeAludel recipeAludel : aludelRecipes)
|
||||||
|
{
|
||||||
|
if (recipeAludel.matches(recipeInputStack, recipeInputDust))
|
||||||
|
{
|
||||||
return recipeAludel.getRecipeOutput();
|
return recipeAludel.getRecipeOutput();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -90,9 +104,12 @@ public class RecipesAludel {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public RecipeAludel getRecipe(ItemStack recipeInputStack, ItemStack recipeInputDust) {
|
public RecipeAludel getRecipe(ItemStack recipeInputStack, ItemStack recipeInputDust)
|
||||||
for (RecipeAludel recipeAludel : aludelRecipes) {
|
{
|
||||||
if (recipeAludel.matches(recipeInputStack, recipeInputDust)) {
|
for (RecipeAludel recipeAludel : aludelRecipes)
|
||||||
|
{
|
||||||
|
if (recipeAludel.matches(recipeInputStack, recipeInputDust))
|
||||||
|
{
|
||||||
return recipeAludel;
|
return recipeAludel;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -100,12 +117,15 @@ public class RecipesAludel {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<RecipeAludel> getRecipes() {
|
public List<RecipeAludel> getRecipes()
|
||||||
|
{
|
||||||
return aludelRecipes;
|
return aludelRecipes;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void debugDumpMap() {
|
public void debugDumpMap()
|
||||||
for (RecipeAludel recipeAludel : aludelRecipes) {
|
{
|
||||||
|
for (RecipeAludel recipeAludel : aludelRecipes)
|
||||||
|
{
|
||||||
LogHelper.debug(String.format("Output: %s, Input Stack: %s, Dust Stack: %s", recipeAludel.getRecipeOutput(), recipeAludel.getRecipeInputs()[0], recipeAludel.getRecipeInputs()[1]));
|
LogHelper.debug(String.format("Output: %s, Input Stack: %s, Dust Stack: %s", recipeAludel.getRecipeOutput(), recipeAludel.getRecipeInputs()[0], recipeAludel.getRecipeInputs()[1]));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
package com.pahimar.ee3.reference;
|
package com.pahimar.ee3.reference;
|
||||||
|
|
||||||
public final class GuiIds {
|
public final class GuiIds
|
||||||
|
{
|
||||||
public static final int PORTABLE_CRAFTING = 0;
|
public static final int PORTABLE_CRAFTING = 0;
|
||||||
public static final int CALCINATOR = 1;
|
public static final int CALCINATOR = 1;
|
||||||
public static final int ALUDEL = 2;
|
public static final int ALUDEL = 2;
|
||||||
|
|
|
@ -10,7 +10,8 @@ import net.minecraft.item.ItemStack;
|
||||||
import net.minecraft.nbt.NBTTagCompound;
|
import net.minecraft.nbt.NBTTagCompound;
|
||||||
import net.minecraft.nbt.NBTTagList;
|
import net.minecraft.nbt.NBTTagList;
|
||||||
|
|
||||||
public class TileEntityAlchemicalChest extends TileEntityEE implements IInventory {
|
public class TileEntityAlchemicalChest extends TileEntityEE implements IInventory
|
||||||
|
{
|
||||||
/**
|
/**
|
||||||
* The current angle of the chest lid (between 0 and 1)
|
* The current angle of the chest lid (between 0 and 1)
|
||||||
*/
|
*/
|
||||||
|
@ -36,38 +37,71 @@ public class TileEntityAlchemicalChest extends TileEntityEE implements IInventor
|
||||||
*/
|
*/
|
||||||
private ItemStack[] inventory;
|
private ItemStack[] inventory;
|
||||||
|
|
||||||
public TileEntityAlchemicalChest(int metaData) {
|
public TileEntityAlchemicalChest(int metaData)
|
||||||
|
{
|
||||||
super();
|
super();
|
||||||
this.state = (byte) metaData;
|
this.state = (byte) metaData;
|
||||||
|
|
||||||
if (metaData == 0) {
|
if (metaData == 0)
|
||||||
|
{
|
||||||
inventory = new ItemStack[ContainerAlchemicalChest.SMALL_INVENTORY_SIZE];
|
inventory = new ItemStack[ContainerAlchemicalChest.SMALL_INVENTORY_SIZE];
|
||||||
} else if (metaData == 1) {
|
}
|
||||||
|
else if (metaData == 1)
|
||||||
|
{
|
||||||
inventory = new ItemStack[ContainerAlchemicalChest.MEDIUM_INVENTORY_SIZE];
|
inventory = new ItemStack[ContainerAlchemicalChest.MEDIUM_INVENTORY_SIZE];
|
||||||
} else if (metaData == 2) {
|
}
|
||||||
|
else if (metaData == 2)
|
||||||
|
{
|
||||||
inventory = new ItemStack[ContainerAlchemicalChest.LARGE_INVENTORY_SIZE];
|
inventory = new ItemStack[ContainerAlchemicalChest.LARGE_INVENTORY_SIZE];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int getSizeInventory() {
|
public void readFromNBT(NBTTagCompound nbtTagCompound)
|
||||||
|
{
|
||||||
|
super.readFromNBT(nbtTagCompound);
|
||||||
|
|
||||||
|
// Read in the ItemStacks in the inventory from NBT
|
||||||
|
NBTTagList tagList = nbtTagCompound.getTagList("Items", 10);
|
||||||
|
inventory = new ItemStack[this.getSizeInventory()];
|
||||||
|
for (int i = 0; i < tagList.tagCount(); ++i)
|
||||||
|
{
|
||||||
|
NBTTagCompound tagCompound = tagList.getCompoundTagAt(i);
|
||||||
|
byte slotIndex = tagCompound.getByte("Slot");
|
||||||
|
if (slotIndex >= 0 && slotIndex < inventory.length)
|
||||||
|
{
|
||||||
|
inventory[slotIndex] = ItemStack.loadItemStackFromNBT(tagCompound);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getSizeInventory()
|
||||||
|
{
|
||||||
return inventory.length;
|
return inventory.length;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ItemStack getStackInSlot(int slotIndex) {
|
public ItemStack getStackInSlot(int slotIndex)
|
||||||
|
{
|
||||||
return inventory[slotIndex];
|
return inventory[slotIndex];
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ItemStack decrStackSize(int slotIndex, int decrementAmount) {
|
public ItemStack decrStackSize(int slotIndex, int decrementAmount)
|
||||||
|
{
|
||||||
ItemStack itemStack = getStackInSlot(slotIndex);
|
ItemStack itemStack = getStackInSlot(slotIndex);
|
||||||
if (itemStack != null) {
|
if (itemStack != null)
|
||||||
if (itemStack.stackSize <= decrementAmount) {
|
{
|
||||||
|
if (itemStack.stackSize <= decrementAmount)
|
||||||
|
{
|
||||||
setInventorySlotContents(slotIndex, null);
|
setInventorySlotContents(slotIndex, null);
|
||||||
} else {
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
itemStack = itemStack.splitStack(decrementAmount);
|
itemStack = itemStack.splitStack(decrementAmount);
|
||||||
if (itemStack.stackSize == 0) {
|
if (itemStack.stackSize == 0)
|
||||||
|
{
|
||||||
setInventorySlotContents(slotIndex, null);
|
setInventorySlotContents(slotIndex, null);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -77,21 +111,27 @@ public class TileEntityAlchemicalChest extends TileEntityEE implements IInventor
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ItemStack getStackInSlotOnClosing(int slotIndex) {
|
public ItemStack getStackInSlotOnClosing(int slotIndex)
|
||||||
if (inventory[slotIndex] != null) {
|
{
|
||||||
|
if (inventory[slotIndex] != null)
|
||||||
|
{
|
||||||
ItemStack itemStack = inventory[slotIndex];
|
ItemStack itemStack = inventory[slotIndex];
|
||||||
inventory[slotIndex] = null;
|
inventory[slotIndex] = null;
|
||||||
return itemStack;
|
return itemStack;
|
||||||
} else {
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setInventorySlotContents(int slotIndex, ItemStack itemStack) {
|
public void setInventorySlotContents(int slotIndex, ItemStack itemStack)
|
||||||
|
{
|
||||||
inventory[slotIndex] = itemStack;
|
inventory[slotIndex] = itemStack;
|
||||||
|
|
||||||
if (itemStack != null && itemStack.stackSize > this.getInventoryStackLimit()) {
|
if (itemStack != null && itemStack.stackSize > this.getInventoryStackLimit())
|
||||||
|
{
|
||||||
itemStack.stackSize = this.getInventoryStackLimit();
|
itemStack.stackSize = this.getInventoryStackLimit();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -100,17 +140,20 @@ public class TileEntityAlchemicalChest extends TileEntityEE implements IInventor
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getInventoryName() {
|
public String getInventoryName()
|
||||||
|
{
|
||||||
return this.hasCustomName() ? this.getCustomName() : Names.Containers.ALCHEMICAL_CHEST;
|
return this.hasCustomName() ? this.getCustomName() : Names.Containers.ALCHEMICAL_CHEST;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean hasCustomInventoryName() {
|
public boolean hasCustomInventoryName()
|
||||||
|
{
|
||||||
return this.hasCustomName();
|
return this.hasCustomName();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int getInventoryStackLimit() {
|
public int getInventoryStackLimit()
|
||||||
|
{
|
||||||
return 64;
|
return 64;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -120,64 +163,42 @@ public class TileEntityAlchemicalChest extends TileEntityEE implements IInventor
|
||||||
* @param entityplayer The player we are checking to see if they can use this chest
|
* @param entityplayer The player we are checking to see if they can use this chest
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public boolean isUseableByPlayer(EntityPlayer entityplayer) {
|
public boolean isUseableByPlayer(EntityPlayer entityplayer)
|
||||||
return true;
|
{
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Called when a client event is received with the event number and argument, see World.sendClientEvent
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public boolean receiveClientEvent(int eventID, int numUsingPlayers) {
|
|
||||||
if (eventID == 1) {
|
|
||||||
this.numUsingPlayers = numUsingPlayers;
|
|
||||||
return true;
|
|
||||||
} else {
|
|
||||||
return super.receiveClientEvent(eventID, numUsingPlayers);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean isItemValidForSlot(int slotIndex, ItemStack itemStack) {
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void openInventory() {
|
public void openInventory()
|
||||||
|
{
|
||||||
++numUsingPlayers;
|
++numUsingPlayers;
|
||||||
worldObj.addBlockEvent(xCoord, yCoord, zCoord, ModBlocks.alchemicalChest, 1, numUsingPlayers);
|
worldObj.addBlockEvent(xCoord, yCoord, zCoord, ModBlocks.alchemicalChest, 1, numUsingPlayers);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void closeInventory() {
|
public void closeInventory()
|
||||||
|
{
|
||||||
--numUsingPlayers;
|
--numUsingPlayers;
|
||||||
worldObj.addBlockEvent(xCoord, yCoord, zCoord, ModBlocks.alchemicalChest, 1, numUsingPlayers);
|
worldObj.addBlockEvent(xCoord, yCoord, zCoord, ModBlocks.alchemicalChest, 1, numUsingPlayers);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void readFromNBT(NBTTagCompound nbtTagCompound) {
|
public boolean isItemValidForSlot(int slotIndex, ItemStack itemStack)
|
||||||
super.readFromNBT(nbtTagCompound);
|
{
|
||||||
|
return true;
|
||||||
// Read in the ItemStacks in the inventory from NBT
|
|
||||||
NBTTagList tagList = nbtTagCompound.getTagList("Items", 10);
|
|
||||||
inventory = new ItemStack[this.getSizeInventory()];
|
|
||||||
for (int i = 0; i < tagList.tagCount(); ++i) {
|
|
||||||
NBTTagCompound tagCompound = tagList.getCompoundTagAt(i);
|
|
||||||
byte slotIndex = tagCompound.getByte("Slot");
|
|
||||||
if (slotIndex >= 0 && slotIndex < inventory.length) {
|
|
||||||
inventory[slotIndex] = ItemStack.loadItemStackFromNBT(tagCompound);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void writeToNBT(NBTTagCompound nbtTagCompound) {
|
public void writeToNBT(NBTTagCompound nbtTagCompound)
|
||||||
|
{
|
||||||
super.writeToNBT(nbtTagCompound);
|
super.writeToNBT(nbtTagCompound);
|
||||||
|
|
||||||
// Write the ItemStacks in the inventory to NBT
|
// Write the ItemStacks in the inventory to NBT
|
||||||
NBTTagList tagList = new NBTTagList();
|
NBTTagList tagList = new NBTTagList();
|
||||||
for (int currentIndex = 0; currentIndex < inventory.length; ++currentIndex) {
|
for (int currentIndex = 0; currentIndex < inventory.length; ++currentIndex)
|
||||||
if (inventory[currentIndex] != null) {
|
{
|
||||||
|
if (inventory[currentIndex] != null)
|
||||||
|
{
|
||||||
NBTTagCompound tagCompound = new NBTTagCompound();
|
NBTTagCompound tagCompound = new NBTTagCompound();
|
||||||
tagCompound.setByte("Slot", (byte) currentIndex);
|
tagCompound.setByte("Slot", (byte) currentIndex);
|
||||||
inventory[currentIndex].writeToNBT(tagCompound);
|
inventory[currentIndex].writeToNBT(tagCompound);
|
||||||
|
@ -192,10 +213,12 @@ public class TileEntityAlchemicalChest extends TileEntityEE implements IInventor
|
||||||
* ticks and creates a new spawn inside its implementation.
|
* ticks and creates a new spawn inside its implementation.
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public void updateEntity() {
|
public void updateEntity()
|
||||||
|
{
|
||||||
super.updateEntity();
|
super.updateEntity();
|
||||||
|
|
||||||
if (++ticksSinceSync % 20 * 4 == 0) {
|
if (++ticksSinceSync % 20 * 4 == 0)
|
||||||
|
{
|
||||||
worldObj.addBlockEvent(xCoord, yCoord, zCoord, ModBlocks.alchemicalChest, 1, numUsingPlayers);
|
worldObj.addBlockEvent(xCoord, yCoord, zCoord, ModBlocks.alchemicalChest, 1, numUsingPlayers);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -203,34 +226,59 @@ public class TileEntityAlchemicalChest extends TileEntityEE implements IInventor
|
||||||
float angleIncrement = 0.1F;
|
float angleIncrement = 0.1F;
|
||||||
double adjustedXCoord, adjustedZCoord;
|
double adjustedXCoord, adjustedZCoord;
|
||||||
|
|
||||||
if (numUsingPlayers > 0 && lidAngle == 0.0F) {
|
if (numUsingPlayers > 0 && lidAngle == 0.0F)
|
||||||
|
{
|
||||||
adjustedXCoord = xCoord + 0.5D;
|
adjustedXCoord = xCoord + 0.5D;
|
||||||
adjustedZCoord = zCoord + 0.5D;
|
adjustedZCoord = zCoord + 0.5D;
|
||||||
worldObj.playSoundEffect(adjustedXCoord, yCoord + 0.5D, adjustedZCoord, Sounds.CHEST_OPEN, 0.5F, worldObj.rand.nextFloat() * 0.1F + 0.9F);
|
worldObj.playSoundEffect(adjustedXCoord, yCoord + 0.5D, adjustedZCoord, Sounds.CHEST_OPEN, 0.5F, worldObj.rand.nextFloat() * 0.1F + 0.9F);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (numUsingPlayers == 0 && lidAngle > 0.0F || numUsingPlayers > 0 && lidAngle < 1.0F) {
|
if (numUsingPlayers == 0 && lidAngle > 0.0F || numUsingPlayers > 0 && lidAngle < 1.0F)
|
||||||
|
{
|
||||||
float var8 = lidAngle;
|
float var8 = lidAngle;
|
||||||
|
|
||||||
if (numUsingPlayers > 0) {
|
if (numUsingPlayers > 0)
|
||||||
|
{
|
||||||
lidAngle += angleIncrement;
|
lidAngle += angleIncrement;
|
||||||
} else {
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
lidAngle -= angleIncrement;
|
lidAngle -= angleIncrement;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (lidAngle > 1.0F) {
|
if (lidAngle > 1.0F)
|
||||||
|
{
|
||||||
lidAngle = 1.0F;
|
lidAngle = 1.0F;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (lidAngle < 0.5F && var8 >= 0.5F) {
|
if (lidAngle < 0.5F && var8 >= 0.5F)
|
||||||
|
{
|
||||||
adjustedXCoord = xCoord + 0.5D;
|
adjustedXCoord = xCoord + 0.5D;
|
||||||
adjustedZCoord = zCoord + 0.5D;
|
adjustedZCoord = zCoord + 0.5D;
|
||||||
worldObj.playSoundEffect(adjustedXCoord, yCoord + 0.5D, adjustedZCoord, Sounds.CHEST_CLOSE, 0.5F, worldObj.rand.nextFloat() * 0.1F + 0.9F);
|
worldObj.playSoundEffect(adjustedXCoord, yCoord + 0.5D, adjustedZCoord, Sounds.CHEST_CLOSE, 0.5F, worldObj.rand.nextFloat() * 0.1F + 0.9F);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (lidAngle < 0.0F) {
|
if (lidAngle < 0.0F)
|
||||||
|
{
|
||||||
lidAngle = 0.0F;
|
lidAngle = 0.0F;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Called when a client event is received with the event number and argument, see World.sendClientEvent
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public boolean receiveClientEvent(int eventID, int numUsingPlayers)
|
||||||
|
{
|
||||||
|
if (eventID == 1)
|
||||||
|
{
|
||||||
|
this.numUsingPlayers = numUsingPlayers;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return super.receiveClientEvent(eventID, numUsingPlayers);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -49,9 +49,12 @@ public class TileEntityAludel extends TileEntityEE implements ISidedInventory
|
||||||
@Override
|
@Override
|
||||||
public boolean canInsertItem(int slotIndex, ItemStack itemStack, int side)
|
public boolean canInsertItem(int slotIndex, ItemStack itemStack, int side)
|
||||||
{
|
{
|
||||||
if (worldObj.getTileEntity(xCoord, yCoord + 1, zCoord) instanceof TileEntityGlassBell) {
|
if (worldObj.getTileEntity(xCoord, yCoord + 1, zCoord) instanceof TileEntityGlassBell)
|
||||||
|
{
|
||||||
return isItemValidForSlot(slotIndex, itemStack);
|
return isItemValidForSlot(slotIndex, itemStack);
|
||||||
} else {
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -78,12 +81,17 @@ public class TileEntityAludel extends TileEntityEE implements ISidedInventory
|
||||||
public ItemStack decrStackSize(int slotIndex, int decrementAmount)
|
public ItemStack decrStackSize(int slotIndex, int decrementAmount)
|
||||||
{
|
{
|
||||||
ItemStack itemStack = getStackInSlot(slotIndex);
|
ItemStack itemStack = getStackInSlot(slotIndex);
|
||||||
if (itemStack != null) {
|
if (itemStack != null)
|
||||||
if (itemStack.stackSize <= decrementAmount) {
|
{
|
||||||
|
if (itemStack.stackSize <= decrementAmount)
|
||||||
|
{
|
||||||
setInventorySlotContents(slotIndex, null);
|
setInventorySlotContents(slotIndex, null);
|
||||||
} else {
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
itemStack = itemStack.splitStack(decrementAmount);
|
itemStack = itemStack.splitStack(decrementAmount);
|
||||||
if (itemStack.stackSize == 0) {
|
if (itemStack.stackSize == 0)
|
||||||
|
{
|
||||||
setInventorySlotContents(slotIndex, null);
|
setInventorySlotContents(slotIndex, null);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -96,7 +104,8 @@ public class TileEntityAludel extends TileEntityEE implements ISidedInventory
|
||||||
public ItemStack getStackInSlotOnClosing(int slotIndex)
|
public ItemStack getStackInSlotOnClosing(int slotIndex)
|
||||||
{
|
{
|
||||||
ItemStack itemStack = getStackInSlot(slotIndex);
|
ItemStack itemStack = getStackInSlot(slotIndex);
|
||||||
if (itemStack != null) {
|
if (itemStack != null)
|
||||||
|
{
|
||||||
setInventorySlotContents(slotIndex, null);
|
setInventorySlotContents(slotIndex, null);
|
||||||
}
|
}
|
||||||
return itemStack;
|
return itemStack;
|
||||||
|
@ -106,7 +115,8 @@ public class TileEntityAludel extends TileEntityEE implements ISidedInventory
|
||||||
public void setInventorySlotContents(int slotIndex, ItemStack itemStack)
|
public void setInventorySlotContents(int slotIndex, ItemStack itemStack)
|
||||||
{
|
{
|
||||||
inventory[slotIndex] = itemStack;
|
inventory[slotIndex] = itemStack;
|
||||||
if (itemStack != null && itemStack.stackSize > getInventoryStackLimit()) {
|
if (itemStack != null && itemStack.stackSize > getInventoryStackLimit())
|
||||||
|
{
|
||||||
itemStack.stackSize = getInventoryStackLimit();
|
itemStack.stackSize = getInventoryStackLimit();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -150,17 +160,22 @@ public class TileEntityAludel extends TileEntityEE implements ISidedInventory
|
||||||
@Override
|
@Override
|
||||||
public boolean isItemValidForSlot(int slotIndex, ItemStack itemStack)
|
public boolean isItemValidForSlot(int slotIndex, ItemStack itemStack)
|
||||||
{
|
{
|
||||||
switch (slotIndex) {
|
switch (slotIndex)
|
||||||
case FUEL_INVENTORY_INDEX: {
|
{
|
||||||
|
case FUEL_INVENTORY_INDEX:
|
||||||
|
{
|
||||||
return TileEntityFurnace.isItemFuel(itemStack);
|
return TileEntityFurnace.isItemFuel(itemStack);
|
||||||
}
|
}
|
||||||
case INPUT_INVENTORY_INDEX: {
|
case INPUT_INVENTORY_INDEX:
|
||||||
|
{
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
case DUST_INVENTORY_INDEX: {
|
case DUST_INVENTORY_INDEX:
|
||||||
|
{
|
||||||
return itemStack.getItem() instanceof ItemAlchemicalDust;
|
return itemStack.getItem() instanceof ItemAlchemicalDust;
|
||||||
}
|
}
|
||||||
default: {
|
default:
|
||||||
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -173,50 +188,33 @@ public class TileEntityAludel extends TileEntityEE implements ISidedInventory
|
||||||
}
|
}
|
||||||
|
|
||||||
@SideOnly(Side.CLIENT)
|
@SideOnly(Side.CLIENT)
|
||||||
public int getCookProgressScaled(int scale) {
|
public int getCookProgressScaled(int scale)
|
||||||
|
{
|
||||||
return this.itemCookTime * scale / 200;
|
return this.itemCookTime * scale / 200;
|
||||||
}
|
}
|
||||||
|
|
||||||
@SideOnly(Side.CLIENT)
|
@SideOnly(Side.CLIENT)
|
||||||
public int getBurnTimeRemainingScaled(int scale) {
|
public int getBurnTimeRemainingScaled(int scale)
|
||||||
if (this.fuelBurnTime > 0) {
|
{
|
||||||
|
if (this.fuelBurnTime > 0)
|
||||||
|
{
|
||||||
return this.deviceCookTime * scale / this.fuelBurnTime;
|
return this.deviceCookTime * scale / this.fuelBurnTime;
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean canInfuse() {
|
public void infuseItem()
|
||||||
if (!hasGlassBell || inventory[INPUT_INVENTORY_INDEX] == null || inventory[DUST_INVENTORY_INDEX] == null) {
|
{
|
||||||
return false;
|
if (this.canInfuse())
|
||||||
} else {
|
{
|
||||||
ItemStack infusedItemStack = RecipesAludel.getInstance().getResult(inventory[INPUT_INVENTORY_INDEX], inventory[DUST_INVENTORY_INDEX]);
|
|
||||||
|
|
||||||
if (infusedItemStack == null) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (inventory[OUTPUT_INVENTORY_INDEX] == null) {
|
|
||||||
return true;
|
|
||||||
} else {
|
|
||||||
boolean outputEquals = this.inventory[OUTPUT_INVENTORY_INDEX].isItemEqual(infusedItemStack);
|
|
||||||
int mergedOutputStackSize = this.inventory[OUTPUT_INVENTORY_INDEX].stackSize + infusedItemStack.stackSize;
|
|
||||||
|
|
||||||
if (outputEquals) {
|
|
||||||
return mergedOutputStackSize <= getInventoryStackLimit() && mergedOutputStackSize <= infusedItemStack.getMaxStackSize();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void infuseItem() {
|
|
||||||
if (this.canInfuse()) {
|
|
||||||
RecipeAludel recipe = RecipesAludel.getInstance().getRecipe(inventory[INPUT_INVENTORY_INDEX], inventory[DUST_INVENTORY_INDEX]);
|
RecipeAludel recipe = RecipesAludel.getInstance().getRecipe(inventory[INPUT_INVENTORY_INDEX], inventory[DUST_INVENTORY_INDEX]);
|
||||||
|
|
||||||
if (this.inventory[OUTPUT_INVENTORY_INDEX] == null) {
|
if (this.inventory[OUTPUT_INVENTORY_INDEX] == null)
|
||||||
|
{
|
||||||
this.inventory[OUTPUT_INVENTORY_INDEX] = recipe.getRecipeOutput().copy();
|
this.inventory[OUTPUT_INVENTORY_INDEX] = recipe.getRecipeOutput().copy();
|
||||||
} else if (this.inventory[OUTPUT_INVENTORY_INDEX].isItemEqual(recipe.getRecipeOutput())) {
|
}
|
||||||
|
else if (this.inventory[OUTPUT_INVENTORY_INDEX].isItemEqual(recipe.getRecipeOutput()))
|
||||||
|
{
|
||||||
inventory[OUTPUT_INVENTORY_INDEX].stackSize += recipe.getRecipeOutput().stackSize;
|
inventory[OUTPUT_INVENTORY_INDEX].stackSize += recipe.getRecipeOutput().stackSize;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -224,4 +222,38 @@ public class TileEntityAludel extends TileEntityEE implements ISidedInventory
|
||||||
decrStackSize(DUST_INVENTORY_INDEX, recipe.getRecipeInputs()[1].getStackSize());
|
decrStackSize(DUST_INVENTORY_INDEX, recipe.getRecipeInputs()[1].getStackSize());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private boolean canInfuse()
|
||||||
|
{
|
||||||
|
if (!hasGlassBell || inventory[INPUT_INVENTORY_INDEX] == null || inventory[DUST_INVENTORY_INDEX] == null)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
ItemStack infusedItemStack = RecipesAludel.getInstance().getResult(inventory[INPUT_INVENTORY_INDEX], inventory[DUST_INVENTORY_INDEX]);
|
||||||
|
|
||||||
|
if (infusedItemStack == null)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (inventory[OUTPUT_INVENTORY_INDEX] == null)
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
boolean outputEquals = this.inventory[OUTPUT_INVENTORY_INDEX].isItemEqual(infusedItemStack);
|
||||||
|
int mergedOutputStackSize = this.inventory[OUTPUT_INVENTORY_INDEX].stackSize + infusedItemStack.stackSize;
|
||||||
|
|
||||||
|
if (outputEquals)
|
||||||
|
{
|
||||||
|
return mergedOutputStackSize <= getInventoryStackLimit() && mergedOutputStackSize <= infusedItemStack.getMaxStackSize();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -10,12 +10,15 @@ import net.minecraft.entity.item.EntityItem;
|
||||||
import net.minecraft.entity.player.EntityPlayer;
|
import net.minecraft.entity.player.EntityPlayer;
|
||||||
import net.minecraft.inventory.ISidedInventory;
|
import net.minecraft.inventory.ISidedInventory;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
|
import net.minecraft.nbt.NBTTagCompound;
|
||||||
|
import net.minecraft.nbt.NBTTagList;
|
||||||
import net.minecraft.network.Packet;
|
import net.minecraft.network.Packet;
|
||||||
import net.minecraft.tileentity.TileEntityFurnace;
|
import net.minecraft.tileentity.TileEntityFurnace;
|
||||||
import net.minecraft.tileentity.TileEntityHopper;
|
import net.minecraft.tileentity.TileEntityHopper;
|
||||||
import net.minecraftforge.common.util.ForgeDirection;
|
import net.minecraftforge.common.util.ForgeDirection;
|
||||||
|
|
||||||
public class TileEntityCalcinator extends TileEntityEE implements ISidedInventory {
|
public class TileEntityCalcinator extends TileEntityEE implements ISidedInventory
|
||||||
|
{
|
||||||
public static final int INVENTORY_SIZE = 4;
|
public static final int INVENTORY_SIZE = 4;
|
||||||
public static final int FUEL_INVENTORY_INDEX = 0;
|
public static final int FUEL_INVENTORY_INDEX = 0;
|
||||||
public static final int INPUT_INVENTORY_INDEX = 1;
|
public static final int INPUT_INVENTORY_INDEX = 1;
|
||||||
|
@ -34,51 +37,81 @@ public class TileEntityCalcinator extends TileEntityEE implements ISidedInventor
|
||||||
*/
|
*/
|
||||||
private ItemStack[] inventory;
|
private ItemStack[] inventory;
|
||||||
|
|
||||||
public TileEntityCalcinator() {
|
public TileEntityCalcinator()
|
||||||
|
{
|
||||||
inventory = new ItemStack[INVENTORY_SIZE];
|
inventory = new ItemStack[INVENTORY_SIZE];
|
||||||
}
|
}
|
||||||
|
|
||||||
public static boolean suckInItems(TileEntityCalcinator tileEntityCalcinator) {
|
|
||||||
EntityItem entityitem = TileEntityHopper.func_145897_a(tileEntityCalcinator.getWorldObj(), tileEntityCalcinator.xCoord, tileEntityCalcinator.yCoord + 1.0D, tileEntityCalcinator.zCoord);
|
|
||||||
|
|
||||||
return entityitem != null && TileEntityHopper.func_145898_a(tileEntityCalcinator, entityitem);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int[] getAccessibleSlotsFromSide(int side) {
|
public int[] getAccessibleSlotsFromSide(int side)
|
||||||
|
{
|
||||||
return side == ForgeDirection.DOWN.ordinal() ? new int[]{FUEL_INVENTORY_INDEX, OUTPUT_LEFT_INVENTORY_INDEX, OUTPUT_RIGHT_INVENTORY_INDEX} : new int[]{INPUT_INVENTORY_INDEX, OUTPUT_LEFT_INVENTORY_INDEX, OUTPUT_RIGHT_INVENTORY_INDEX};
|
return side == ForgeDirection.DOWN.ordinal() ? new int[]{FUEL_INVENTORY_INDEX, OUTPUT_LEFT_INVENTORY_INDEX, OUTPUT_RIGHT_INVENTORY_INDEX} : new int[]{INPUT_INVENTORY_INDEX, OUTPUT_LEFT_INVENTORY_INDEX, OUTPUT_RIGHT_INVENTORY_INDEX};
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean canInsertItem(int slotIndex, ItemStack itemStack, int side) {
|
public boolean canInsertItem(int slotIndex, ItemStack itemStack, int side)
|
||||||
|
{
|
||||||
return isItemValidForSlot(slotIndex, itemStack);
|
return isItemValidForSlot(slotIndex, itemStack);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean canExtractItem(int slotIndex, ItemStack itemStack, int side) {
|
public boolean canExtractItem(int slotIndex, ItemStack itemStack, int side)
|
||||||
|
{
|
||||||
return slotIndex == OUTPUT_LEFT_INVENTORY_INDEX || slotIndex == OUTPUT_RIGHT_INVENTORY_INDEX;
|
return slotIndex == OUTPUT_LEFT_INVENTORY_INDEX || slotIndex == OUTPUT_RIGHT_INVENTORY_INDEX;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int getSizeInventory() {
|
public void readFromNBT(NBTTagCompound nbtTagCompound)
|
||||||
|
{
|
||||||
|
super.readFromNBT(nbtTagCompound);
|
||||||
|
|
||||||
|
// Read in the ItemStacks in the inventory from NBT
|
||||||
|
NBTTagList tagList = nbtTagCompound.getTagList("Items", 10);
|
||||||
|
inventory = new ItemStack[this.getSizeInventory()];
|
||||||
|
for (int i = 0; i < tagList.tagCount(); ++i)
|
||||||
|
{
|
||||||
|
NBTTagCompound tagCompound = tagList.getCompoundTagAt(i);
|
||||||
|
byte slotIndex = tagCompound.getByte("Slot");
|
||||||
|
if (slotIndex >= 0 && slotIndex < inventory.length)
|
||||||
|
{
|
||||||
|
inventory[slotIndex] = ItemStack.loadItemStackFromNBT(tagCompound);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
deviceCookTime = nbtTagCompound.getInteger("deviceCookTime");
|
||||||
|
fuelBurnTime = nbtTagCompound.getInteger("fuelBurnTime");
|
||||||
|
itemCookTime = nbtTagCompound.getInteger("itemCookTime");
|
||||||
|
itemSuckCoolDown = nbtTagCompound.getInteger("itemSuckCoolDown");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getSizeInventory()
|
||||||
|
{
|
||||||
return inventory.length;
|
return inventory.length;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ItemStack getStackInSlot(int slotIndex) {
|
public ItemStack getStackInSlot(int slotIndex)
|
||||||
|
{
|
||||||
sendDustPileData();
|
sendDustPileData();
|
||||||
return inventory[slotIndex];
|
return inventory[slotIndex];
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ItemStack decrStackSize(int slotIndex, int decrementAmount) {
|
public ItemStack decrStackSize(int slotIndex, int decrementAmount)
|
||||||
|
{
|
||||||
ItemStack itemStack = getStackInSlot(slotIndex);
|
ItemStack itemStack = getStackInSlot(slotIndex);
|
||||||
if (itemStack != null) {
|
if (itemStack != null)
|
||||||
if (itemStack.stackSize <= decrementAmount) {
|
{
|
||||||
|
if (itemStack.stackSize <= decrementAmount)
|
||||||
|
{
|
||||||
setInventorySlotContents(slotIndex, null);
|
setInventorySlotContents(slotIndex, null);
|
||||||
} else {
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
itemStack = itemStack.splitStack(decrementAmount);
|
itemStack = itemStack.splitStack(decrementAmount);
|
||||||
if (itemStack.stackSize == 0) {
|
if (itemStack.stackSize == 0)
|
||||||
|
{
|
||||||
setInventorySlotContents(slotIndex, null);
|
setInventorySlotContents(slotIndex, null);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -88,90 +121,161 @@ public class TileEntityCalcinator extends TileEntityEE implements ISidedInventor
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ItemStack getStackInSlotOnClosing(int slotIndex) {
|
public ItemStack getStackInSlotOnClosing(int slotIndex)
|
||||||
|
{
|
||||||
ItemStack itemStack = getStackInSlot(slotIndex);
|
ItemStack itemStack = getStackInSlot(slotIndex);
|
||||||
if (itemStack != null) {
|
if (itemStack != null)
|
||||||
|
{
|
||||||
setInventorySlotContents(slotIndex, null);
|
setInventorySlotContents(slotIndex, null);
|
||||||
}
|
}
|
||||||
return itemStack;
|
return itemStack;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setInventorySlotContents(int slotIndex, ItemStack itemStack) {
|
public void setInventorySlotContents(int slotIndex, ItemStack itemStack)
|
||||||
|
{
|
||||||
inventory[slotIndex] = itemStack;
|
inventory[slotIndex] = itemStack;
|
||||||
if (itemStack != null && itemStack.stackSize > getInventoryStackLimit()) {
|
if (itemStack != null && itemStack.stackSize > getInventoryStackLimit())
|
||||||
|
{
|
||||||
itemStack.stackSize = getInventoryStackLimit();
|
itemStack.stackSize = getInventoryStackLimit();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getInventoryName() {
|
public String getInventoryName()
|
||||||
|
{
|
||||||
return this.hasCustomName() ? this.getCustomName() : Names.Containers.CALCINATOR;
|
return this.hasCustomName() ? this.getCustomName() : Names.Containers.CALCINATOR;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean hasCustomInventoryName() {
|
public boolean hasCustomInventoryName()
|
||||||
|
{
|
||||||
return this.hasCustomName();
|
return this.hasCustomName();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int getInventoryStackLimit() {
|
public int getInventoryStackLimit()
|
||||||
|
{
|
||||||
return 64;
|
return 64;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isUseableByPlayer(EntityPlayer entityplayer) {
|
public boolean isUseableByPlayer(EntityPlayer entityplayer)
|
||||||
|
{
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void openInventory() {
|
public void openInventory()
|
||||||
|
{
|
||||||
// NOOP
|
// NOOP
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void closeInventory() {
|
public void closeInventory()
|
||||||
|
{
|
||||||
// NOOP
|
// NOOP
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isItemValidForSlot(int var1, ItemStack var2) {
|
public boolean isItemValidForSlot(int var1, ItemStack var2)
|
||||||
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
private void sendDustPileData()
|
||||||
public boolean receiveClientEvent(int eventId, int eventData) {
|
{
|
||||||
if (eventId == 1) {
|
if (this.getBlockType() != null)
|
||||||
this.state = (byte) eventData;
|
{
|
||||||
// NAME UPDATE
|
this.worldObj.addBlockEvent(this.xCoord, this.yCoord, this.zCoord, this.getBlockType(), 2, getLeftStackSize());
|
||||||
// this.worldObj.updateAllLightTypes(this.xCoord, this.yCoord, this.zCoord);
|
this.worldObj.addBlockEvent(this.xCoord, this.yCoord, this.zCoord, this.getBlockType(), 3, getLeftStackMeta());
|
||||||
this.worldObj.func_147451_t(this.xCoord, this.yCoord, this.zCoord);
|
this.worldObj.addBlockEvent(this.xCoord, this.yCoord, this.zCoord, this.getBlockType(), 4, getRightStackSize());
|
||||||
return true;
|
this.worldObj.addBlockEvent(this.xCoord, this.yCoord, this.zCoord, this.getBlockType(), 5, getRightStackMeta());
|
||||||
} else if (eventId == 2) {
|
|
||||||
this.leftStackSize = (byte) eventData;
|
|
||||||
return true;
|
|
||||||
} else if (eventId == 3) {
|
|
||||||
this.leftStackMeta = (byte) eventData;
|
|
||||||
return true;
|
|
||||||
} else if (eventId == 4) {
|
|
||||||
this.rightStackSize = (byte) eventData;
|
|
||||||
return true;
|
|
||||||
} else if (eventId == 5) {
|
|
||||||
this.rightStackMeta = (byte) eventData;
|
|
||||||
return true;
|
|
||||||
} else {
|
|
||||||
return super.receiveClientEvent(eventId, eventData);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private int getLeftStackSize()
|
||||||
|
{
|
||||||
|
if (this.inventory[OUTPUT_LEFT_INVENTORY_INDEX] != null)
|
||||||
|
{
|
||||||
|
return this.inventory[OUTPUT_LEFT_INVENTORY_INDEX].stackSize;
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
private int getLeftStackMeta()
|
||||||
|
{
|
||||||
|
if (this.inventory[OUTPUT_LEFT_INVENTORY_INDEX] != null)
|
||||||
|
{
|
||||||
|
return this.inventory[OUTPUT_LEFT_INVENTORY_INDEX].getItemDamage();
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
private int getRightStackSize()
|
||||||
|
{
|
||||||
|
if (this.inventory[OUTPUT_RIGHT_INVENTORY_INDEX] != null)
|
||||||
|
{
|
||||||
|
return this.inventory[OUTPUT_RIGHT_INVENTORY_INDEX].stackSize;
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
private int getRightStackMeta()
|
||||||
|
{
|
||||||
|
if (this.inventory[OUTPUT_RIGHT_INVENTORY_INDEX] != null)
|
||||||
|
{
|
||||||
|
return this.inventory[OUTPUT_RIGHT_INVENTORY_INDEX].getItemDamage();
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void writeToNBT(NBTTagCompound nbtTagCompound)
|
||||||
|
{
|
||||||
|
super.writeToNBT(nbtTagCompound);
|
||||||
|
|
||||||
|
// Write the ItemStacks in the inventory to NBT
|
||||||
|
NBTTagList tagList = new NBTTagList();
|
||||||
|
for (int currentIndex = 0; currentIndex < inventory.length; ++currentIndex)
|
||||||
|
{
|
||||||
|
if (inventory[currentIndex] != null)
|
||||||
|
{
|
||||||
|
NBTTagCompound tagCompound = new NBTTagCompound();
|
||||||
|
tagCompound.setByte("Slot", (byte) currentIndex);
|
||||||
|
inventory[currentIndex].writeToNBT(tagCompound);
|
||||||
|
tagList.appendTag(tagCompound);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
nbtTagCompound.setTag("Items", tagList);
|
||||||
|
nbtTagCompound.setInteger("deviceCookTime", deviceCookTime);
|
||||||
|
nbtTagCompound.setInteger("fuelBurnTime", fuelBurnTime);
|
||||||
|
nbtTagCompound.setInteger("itemCookTime", itemCookTime);
|
||||||
|
nbtTagCompound.setInteger("itemSuckCoolDown", itemSuckCoolDown);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Packet getDescriptionPacket()
|
||||||
|
{
|
||||||
|
sendDustPileData();
|
||||||
|
return PacketHandler.INSTANCE.getPacketFrom(new MessageTileCalcinator(this));
|
||||||
|
}
|
||||||
|
|
||||||
@SideOnly(Side.CLIENT)
|
@SideOnly(Side.CLIENT)
|
||||||
public int getCookProgressScaled(int scale) {
|
public int getCookProgressScaled(int scale)
|
||||||
|
{
|
||||||
return this.itemCookTime * scale / 200;
|
return this.itemCookTime * scale / 200;
|
||||||
}
|
}
|
||||||
|
|
||||||
@SideOnly(Side.CLIENT)
|
@SideOnly(Side.CLIENT)
|
||||||
public int getBurnTimeRemainingScaled(int scale) {
|
public int getBurnTimeRemainingScaled(int scale)
|
||||||
if (this.fuelBurnTime > 0) {
|
{
|
||||||
|
if (this.fuelBurnTime > 0)
|
||||||
|
{
|
||||||
return this.deviceCookTime * scale / this.fuelBurnTime;
|
return this.deviceCookTime * scale / this.fuelBurnTime;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -179,32 +283,34 @@ public class TileEntityCalcinator extends TileEntityEE implements ISidedInventor
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Packet getDescriptionPacket() {
|
public void updateEntity()
|
||||||
return PacketHandler.INSTANCE.getPacketFrom(new MessageTileCalcinator(this));
|
{
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void updateEntity() {
|
|
||||||
boolean isBurning = this.deviceCookTime > 0;
|
boolean isBurning = this.deviceCookTime > 0;
|
||||||
boolean sendUpdate = false;
|
boolean sendUpdate = false;
|
||||||
|
|
||||||
// If the Calcinator still has burn time, decrement it
|
// If the Calcinator still has burn time, decrement it
|
||||||
if (this.deviceCookTime > 0) {
|
if (this.deviceCookTime > 0)
|
||||||
|
{
|
||||||
this.deviceCookTime--;
|
this.deviceCookTime--;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!this.worldObj.isRemote) {
|
if (!this.worldObj.isRemote)
|
||||||
|
{
|
||||||
// Start "cooking" a new item, if we can
|
// Start "cooking" a new item, if we can
|
||||||
if (this.deviceCookTime == 0 && this.canCalcinate()) {
|
if (this.deviceCookTime == 0 && this.canCalcinate())
|
||||||
|
{
|
||||||
this.fuelBurnTime = this.deviceCookTime = TileEntityFurnace.getItemBurnTime(this.inventory[FUEL_INVENTORY_INDEX]);
|
this.fuelBurnTime = this.deviceCookTime = TileEntityFurnace.getItemBurnTime(this.inventory[FUEL_INVENTORY_INDEX]);
|
||||||
|
|
||||||
if (this.deviceCookTime > 0) {
|
if (this.deviceCookTime > 0)
|
||||||
|
{
|
||||||
sendUpdate = true;
|
sendUpdate = true;
|
||||||
|
|
||||||
if (this.inventory[FUEL_INVENTORY_INDEX] != null) {
|
if (this.inventory[FUEL_INVENTORY_INDEX] != null)
|
||||||
|
{
|
||||||
--this.inventory[FUEL_INVENTORY_INDEX].stackSize;
|
--this.inventory[FUEL_INVENTORY_INDEX].stackSize;
|
||||||
|
|
||||||
if (this.inventory[FUEL_INVENTORY_INDEX].stackSize == 0) {
|
if (this.inventory[FUEL_INVENTORY_INDEX].stackSize == 0)
|
||||||
|
{
|
||||||
this.inventory[FUEL_INVENTORY_INDEX] = this.inventory[FUEL_INVENTORY_INDEX].getItem().getContainerItem(inventory[FUEL_INVENTORY_INDEX]);
|
this.inventory[FUEL_INVENTORY_INDEX] = this.inventory[FUEL_INVENTORY_INDEX].getItem().getContainerItem(inventory[FUEL_INVENTORY_INDEX]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -212,35 +318,45 @@ public class TileEntityCalcinator extends TileEntityEE implements ISidedInventor
|
||||||
}
|
}
|
||||||
|
|
||||||
// Continue "cooking" the same item, if we can
|
// Continue "cooking" the same item, if we can
|
||||||
if (this.deviceCookTime > 0 && this.canCalcinate()) {
|
if (this.deviceCookTime > 0 && this.canCalcinate())
|
||||||
|
{
|
||||||
this.itemCookTime++;
|
this.itemCookTime++;
|
||||||
|
|
||||||
if (this.itemCookTime == 200) {
|
if (this.itemCookTime == 200)
|
||||||
|
{
|
||||||
this.itemCookTime = 0;
|
this.itemCookTime = 0;
|
||||||
this.calcinateItem();
|
this.calcinateItem();
|
||||||
sendUpdate = true;
|
sendUpdate = true;
|
||||||
}
|
}
|
||||||
} else {
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
this.itemCookTime = 0;
|
this.itemCookTime = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
// If the state has changed, catch that something changed
|
// If the state has changed, catch that something changed
|
||||||
if (isBurning != this.deviceCookTime > 0) {
|
if (isBurning != this.deviceCookTime > 0)
|
||||||
|
{
|
||||||
sendUpdate = true;
|
sendUpdate = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
//Item sucking
|
//Item sucking
|
||||||
if (this.itemSuckCoolDown > 0) {
|
if (this.itemSuckCoolDown > 0)
|
||||||
|
{
|
||||||
itemSuckCoolDown--;
|
itemSuckCoolDown--;
|
||||||
} else {
|
}
|
||||||
if (suckInItems(this)) {
|
else
|
||||||
|
{
|
||||||
|
if (suckInItems(this))
|
||||||
|
{
|
||||||
markDirty();
|
markDirty();
|
||||||
}
|
}
|
||||||
itemSuckCoolDown = DEFAULT_ITEM_SUCK_COOL_DOWN;
|
itemSuckCoolDown = DEFAULT_ITEM_SUCK_COOL_DOWN;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (sendUpdate) {
|
if (sendUpdate)
|
||||||
|
{
|
||||||
this.markDirty();
|
this.markDirty();
|
||||||
this.state = this.deviceCookTime > 0 ? (byte) 1 : (byte) 0;
|
this.state = this.deviceCookTime > 0 ? (byte) 1 : (byte) 0;
|
||||||
this.worldObj.addBlockEvent(this.xCoord, this.yCoord, this.zCoord, this.getBlockType(), 1, this.state);
|
this.worldObj.addBlockEvent(this.xCoord, this.yCoord, this.zCoord, this.getBlockType(), 1, this.state);
|
||||||
|
@ -249,36 +365,66 @@ public class TileEntityCalcinator extends TileEntityEE implements ISidedInventor
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void calcinateItem() {
|
@Override
|
||||||
if (this.canCalcinate()) {
|
public boolean receiveClientEvent(int eventId, int eventData)
|
||||||
ItemStack alchemicalDustStack = CalcinationHelper.getCalcinationResult(this.inventory[INPUT_INVENTORY_INDEX]);
|
{
|
||||||
addItemStackToOutput(alchemicalDustStack.copy());
|
if (eventId == 1)
|
||||||
|
{
|
||||||
this.inventory[INPUT_INVENTORY_INDEX].stackSize--;
|
this.state = (byte) eventData;
|
||||||
|
// NAME UPDATE
|
||||||
if (this.inventory[INPUT_INVENTORY_INDEX].stackSize <= 0) {
|
// this.worldObj.updateAllLightTypes(this.xCoord, this.yCoord, this.zCoord);
|
||||||
this.inventory[INPUT_INVENTORY_INDEX] = null;
|
this.worldObj.func_147451_t(this.xCoord, this.yCoord, this.zCoord);
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
else if (eventId == 2)
|
||||||
|
{
|
||||||
|
this.leftStackSize = (byte) eventData;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
else if (eventId == 3)
|
||||||
|
{
|
||||||
|
this.leftStackMeta = (byte) eventData;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
else if (eventId == 4)
|
||||||
|
{
|
||||||
|
this.rightStackSize = (byte) eventData;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
else if (eventId == 5)
|
||||||
|
{
|
||||||
|
this.rightStackMeta = (byte) eventData;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return super.receiveClientEvent(eventId, eventData);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean canCalcinate() {
|
private boolean canCalcinate()
|
||||||
if (inventory[INPUT_INVENTORY_INDEX] == null) {
|
{
|
||||||
|
if (inventory[INPUT_INVENTORY_INDEX] == null)
|
||||||
|
{
|
||||||
return false;
|
return false;
|
||||||
} else {
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
ItemStack alchemicalDustStack = CalcinationHelper.getCalcinationResult(this.inventory[INPUT_INVENTORY_INDEX]);
|
ItemStack alchemicalDustStack = CalcinationHelper.getCalcinationResult(this.inventory[INPUT_INVENTORY_INDEX]);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* If we don't get a calcination result, then return false
|
* If we don't get a calcination result, then return false
|
||||||
*/
|
*/
|
||||||
if (alchemicalDustStack == null) {
|
if (alchemicalDustStack == null)
|
||||||
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* If either slot is empty, return true (we have a valid calcination result
|
* If either slot is empty, return true (we have a valid calcination result
|
||||||
*/
|
*/
|
||||||
if (this.inventory[OUTPUT_LEFT_INVENTORY_INDEX] == null || this.inventory[OUTPUT_RIGHT_INVENTORY_INDEX] == null) {
|
if (this.inventory[OUTPUT_LEFT_INVENTORY_INDEX] == null || this.inventory[OUTPUT_RIGHT_INVENTORY_INDEX] == null)
|
||||||
|
{
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -288,84 +434,79 @@ public class TileEntityCalcinator extends TileEntityEE implements ISidedInventor
|
||||||
boolean rightEquals = this.inventory[OUTPUT_RIGHT_INVENTORY_INDEX].isItemEqual(alchemicalDustStack);
|
boolean rightEquals = this.inventory[OUTPUT_RIGHT_INVENTORY_INDEX].isItemEqual(alchemicalDustStack);
|
||||||
int rightResult = this.inventory[OUTPUT_RIGHT_INVENTORY_INDEX].stackSize + alchemicalDustStack.stackSize;
|
int rightResult = this.inventory[OUTPUT_RIGHT_INVENTORY_INDEX].stackSize + alchemicalDustStack.stackSize;
|
||||||
|
|
||||||
if (!leftEquals && !rightEquals) {
|
if (!leftEquals && !rightEquals)
|
||||||
|
{
|
||||||
return false;
|
return false;
|
||||||
} else if (leftEquals && !rightEquals) {
|
}
|
||||||
|
else if (leftEquals && !rightEquals)
|
||||||
|
{
|
||||||
return leftResult <= getInventoryStackLimit() && leftResult <= alchemicalDustStack.getMaxStackSize();
|
return leftResult <= getInventoryStackLimit() && leftResult <= alchemicalDustStack.getMaxStackSize();
|
||||||
} else if (!leftEquals) {
|
}
|
||||||
|
else if (!leftEquals)
|
||||||
|
{
|
||||||
return rightResult <= getInventoryStackLimit() && rightResult <= alchemicalDustStack.getMaxStackSize();
|
return rightResult <= getInventoryStackLimit() && rightResult <= alchemicalDustStack.getMaxStackSize();
|
||||||
} else {
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
return leftResult <= getInventoryStackLimit() && leftResult <= alchemicalDustStack.getMaxStackSize() || rightResult <= getInventoryStackLimit() && rightResult <= alchemicalDustStack.getMaxStackSize();
|
return leftResult <= getInventoryStackLimit() && leftResult <= alchemicalDustStack.getMaxStackSize() || rightResult <= getInventoryStackLimit() && rightResult <= alchemicalDustStack.getMaxStackSize();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void addItemStackToOutput(ItemStack alchemicalDustStack) {
|
public void calcinateItem()
|
||||||
|
{
|
||||||
|
if (this.canCalcinate())
|
||||||
|
{
|
||||||
|
ItemStack alchemicalDustStack = CalcinationHelper.getCalcinationResult(this.inventory[INPUT_INVENTORY_INDEX]);
|
||||||
|
addItemStackToOutput(alchemicalDustStack.copy());
|
||||||
|
|
||||||
|
this.inventory[INPUT_INVENTORY_INDEX].stackSize--;
|
||||||
|
|
||||||
|
if (this.inventory[INPUT_INVENTORY_INDEX].stackSize <= 0)
|
||||||
|
{
|
||||||
|
this.inventory[INPUT_INVENTORY_INDEX] = null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static boolean suckInItems(TileEntityCalcinator tileEntityCalcinator)
|
||||||
|
{
|
||||||
|
EntityItem entityitem = TileEntityHopper.func_145897_a(tileEntityCalcinator.getWorldObj(), tileEntityCalcinator.xCoord, tileEntityCalcinator.yCoord + 1.0D, tileEntityCalcinator.zCoord);
|
||||||
|
|
||||||
|
return entityitem != null && TileEntityHopper.func_145898_a(tileEntityCalcinator, entityitem);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void addItemStackToOutput(ItemStack alchemicalDustStack)
|
||||||
|
{
|
||||||
int maxStackSize = Math.min(getInventoryStackLimit(), alchemicalDustStack.getMaxStackSize());
|
int maxStackSize = Math.min(getInventoryStackLimit(), alchemicalDustStack.getMaxStackSize());
|
||||||
|
|
||||||
if (this.inventory[OUTPUT_LEFT_INVENTORY_INDEX] == null) {
|
if (this.inventory[OUTPUT_LEFT_INVENTORY_INDEX] == null)
|
||||||
|
{
|
||||||
this.inventory[OUTPUT_LEFT_INVENTORY_INDEX] = alchemicalDustStack;
|
this.inventory[OUTPUT_LEFT_INVENTORY_INDEX] = alchemicalDustStack;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (this.inventory[OUTPUT_LEFT_INVENTORY_INDEX].isItemEqual(alchemicalDustStack)
|
if (this.inventory[OUTPUT_LEFT_INVENTORY_INDEX].isItemEqual(alchemicalDustStack)
|
||||||
&& this.inventory[OUTPUT_LEFT_INVENTORY_INDEX].stackSize < maxStackSize) {
|
&& this.inventory[OUTPUT_LEFT_INVENTORY_INDEX].stackSize < maxStackSize)
|
||||||
|
{
|
||||||
int addedSize = Math.min(alchemicalDustStack.stackSize, maxStackSize - this.inventory[OUTPUT_LEFT_INVENTORY_INDEX].stackSize);
|
int addedSize = Math.min(alchemicalDustStack.stackSize, maxStackSize - this.inventory[OUTPUT_LEFT_INVENTORY_INDEX].stackSize);
|
||||||
alchemicalDustStack.stackSize -= addedSize;
|
alchemicalDustStack.stackSize -= addedSize;
|
||||||
this.inventory[OUTPUT_LEFT_INVENTORY_INDEX].stackSize += addedSize;
|
this.inventory[OUTPUT_LEFT_INVENTORY_INDEX].stackSize += addedSize;
|
||||||
if (alchemicalDustStack == null || alchemicalDustStack.stackSize == 0) {
|
if (alchemicalDustStack == null || alchemicalDustStack.stackSize == 0)
|
||||||
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (this.inventory[OUTPUT_RIGHT_INVENTORY_INDEX] == null) {
|
if (this.inventory[OUTPUT_RIGHT_INVENTORY_INDEX] == null)
|
||||||
|
{
|
||||||
this.inventory[OUTPUT_RIGHT_INVENTORY_INDEX] = alchemicalDustStack;
|
this.inventory[OUTPUT_RIGHT_INVENTORY_INDEX] = alchemicalDustStack;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (this.inventory[OUTPUT_RIGHT_INVENTORY_INDEX].isItemEqual(alchemicalDustStack)
|
if (this.inventory[OUTPUT_RIGHT_INVENTORY_INDEX].isItemEqual(alchemicalDustStack)
|
||||||
&& this.inventory[OUTPUT_RIGHT_INVENTORY_INDEX].stackSize < maxStackSize) {
|
&& this.inventory[OUTPUT_RIGHT_INVENTORY_INDEX].stackSize < maxStackSize)
|
||||||
|
{
|
||||||
int addedSize = Math.min(alchemicalDustStack.stackSize, maxStackSize - this.inventory[OUTPUT_RIGHT_INVENTORY_INDEX].stackSize);
|
int addedSize = Math.min(alchemicalDustStack.stackSize, maxStackSize - this.inventory[OUTPUT_RIGHT_INVENTORY_INDEX].stackSize);
|
||||||
alchemicalDustStack.stackSize -= addedSize;
|
alchemicalDustStack.stackSize -= addedSize;
|
||||||
this.inventory[OUTPUT_RIGHT_INVENTORY_INDEX].stackSize += addedSize;
|
this.inventory[OUTPUT_RIGHT_INVENTORY_INDEX].stackSize += addedSize;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private int getLeftStackSize() {
|
|
||||||
if (this.inventory[OUTPUT_LEFT_INVENTORY_INDEX] != null) {
|
|
||||||
return this.inventory[OUTPUT_LEFT_INVENTORY_INDEX].stackSize;
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
private int getLeftStackMeta() {
|
|
||||||
if (this.inventory[OUTPUT_LEFT_INVENTORY_INDEX] != null) {
|
|
||||||
return this.inventory[OUTPUT_LEFT_INVENTORY_INDEX].getItemDamage();
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
private int getRightStackSize() {
|
|
||||||
if (this.inventory[OUTPUT_RIGHT_INVENTORY_INDEX] != null) {
|
|
||||||
return this.inventory[OUTPUT_RIGHT_INVENTORY_INDEX].stackSize;
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
private int getRightStackMeta() {
|
|
||||||
if (this.inventory[OUTPUT_RIGHT_INVENTORY_INDEX] != null) {
|
|
||||||
return this.inventory[OUTPUT_RIGHT_INVENTORY_INDEX].getItemDamage();
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
private void sendDustPileData() {
|
|
||||||
if (this.getBlockType() != null) {
|
|
||||||
this.worldObj.addBlockEvent(this.xCoord, this.yCoord, this.zCoord, this.getBlockType(), 2, getLeftStackSize());
|
|
||||||
this.worldObj.addBlockEvent(this.xCoord, this.yCoord, this.zCoord, this.getBlockType(), 3, getLeftStackMeta());
|
|
||||||
this.worldObj.addBlockEvent(this.xCoord, this.yCoord, this.zCoord, this.getBlockType(), 4, getRightStackSize());
|
|
||||||
this.worldObj.addBlockEvent(this.xCoord, this.yCoord, this.zCoord, this.getBlockType(), 5, getRightStackMeta());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -48,11 +48,6 @@ public class TileEntityEE extends TileEntity
|
||||||
this.state = state;
|
this.state = state;
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean hasCustomName()
|
|
||||||
{
|
|
||||||
return customName != null && customName.length() > 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getCustomName()
|
public String getCustomName()
|
||||||
{
|
{
|
||||||
return customName;
|
return customName;
|
||||||
|
@ -63,11 +58,6 @@ public class TileEntityEE extends TileEntity
|
||||||
this.customName = customName;
|
this.customName = customName;
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean hasOwner()
|
|
||||||
{
|
|
||||||
return owner != null && owner.length() > 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getOwner()
|
public String getOwner()
|
||||||
{
|
{
|
||||||
return owner;
|
return owner;
|
||||||
|
@ -123,6 +113,16 @@ public class TileEntityEE extends TileEntity
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean hasCustomName()
|
||||||
|
{
|
||||||
|
return customName != null && customName.length() > 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean hasOwner()
|
||||||
|
{
|
||||||
|
return owner != null && owner.length() > 0;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Packet getDescriptionPacket()
|
public Packet getDescriptionPacket()
|
||||||
{
|
{
|
||||||
|
|
|
@ -12,7 +12,8 @@ import net.minecraft.nbt.NBTTagCompound;
|
||||||
import net.minecraft.nbt.NBTTagList;
|
import net.minecraft.nbt.NBTTagList;
|
||||||
import net.minecraft.network.Packet;
|
import net.minecraft.network.Packet;
|
||||||
|
|
||||||
public class TileEntityGlassBell extends TileEntityEE implements IInventory {
|
public class TileEntityGlassBell extends TileEntityEE implements IInventory
|
||||||
|
{
|
||||||
public static final int INVENTORY_SIZE = 1;
|
public static final int INVENTORY_SIZE = 1;
|
||||||
public static final int DISPLAY_SLOT_INVENTORY_INDEX = 0;
|
public static final int DISPLAY_SLOT_INVENTORY_INDEX = 0;
|
||||||
public ItemStack outputItemStack;
|
public ItemStack outputItemStack;
|
||||||
|
@ -22,29 +23,57 @@ public class TileEntityGlassBell extends TileEntityEE implements IInventory {
|
||||||
*/
|
*/
|
||||||
private ItemStack[] inventory;
|
private ItemStack[] inventory;
|
||||||
|
|
||||||
public TileEntityGlassBell() {
|
public TileEntityGlassBell()
|
||||||
|
{
|
||||||
inventory = new ItemStack[INVENTORY_SIZE];
|
inventory = new ItemStack[INVENTORY_SIZE];
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int getSizeInventory() {
|
public void readFromNBT(NBTTagCompound nbtTagCompound)
|
||||||
|
{
|
||||||
|
super.readFromNBT(nbtTagCompound);
|
||||||
|
|
||||||
|
// Read in the ItemStacks in the inventory from NBT
|
||||||
|
NBTTagList tagList = nbtTagCompound.getTagList("Items", 10);
|
||||||
|
inventory = new ItemStack[this.getSizeInventory()];
|
||||||
|
for (int i = 0; i < tagList.tagCount(); ++i)
|
||||||
|
{
|
||||||
|
NBTTagCompound tagCompound = tagList.getCompoundTagAt(i);
|
||||||
|
byte slotIndex = tagCompound.getByte("Slot");
|
||||||
|
if (slotIndex >= 0 && slotIndex < inventory.length)
|
||||||
|
{
|
||||||
|
inventory[slotIndex] = ItemStack.loadItemStackFromNBT(tagCompound);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getSizeInventory()
|
||||||
|
{
|
||||||
return inventory.length;
|
return inventory.length;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ItemStack getStackInSlot(int slotIndex) {
|
public ItemStack getStackInSlot(int slotIndex)
|
||||||
|
{
|
||||||
return inventory[slotIndex];
|
return inventory[slotIndex];
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ItemStack decrStackSize(int slotIndex, int decrementAmount) {
|
public ItemStack decrStackSize(int slotIndex, int decrementAmount)
|
||||||
|
{
|
||||||
ItemStack itemStack = getStackInSlot(slotIndex);
|
ItemStack itemStack = getStackInSlot(slotIndex);
|
||||||
if (itemStack != null) {
|
if (itemStack != null)
|
||||||
if (itemStack.stackSize <= decrementAmount) {
|
{
|
||||||
|
if (itemStack.stackSize <= decrementAmount)
|
||||||
|
{
|
||||||
setInventorySlotContents(slotIndex, null);
|
setInventorySlotContents(slotIndex, null);
|
||||||
} else {
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
itemStack = itemStack.splitStack(decrementAmount);
|
itemStack = itemStack.splitStack(decrementAmount);
|
||||||
if (itemStack.stackSize == 0) {
|
if (itemStack.stackSize == 0)
|
||||||
|
{
|
||||||
setInventorySlotContents(slotIndex, null);
|
setInventorySlotContents(slotIndex, null);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -54,28 +83,36 @@ public class TileEntityGlassBell extends TileEntityEE implements IInventory {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ItemStack getStackInSlotOnClosing(int slotIndex) {
|
public ItemStack getStackInSlotOnClosing(int slotIndex)
|
||||||
|
{
|
||||||
ItemStack itemStack = getStackInSlot(slotIndex);
|
ItemStack itemStack = getStackInSlot(slotIndex);
|
||||||
if (itemStack != null) {
|
if (itemStack != null)
|
||||||
|
{
|
||||||
setInventorySlotContents(slotIndex, null);
|
setInventorySlotContents(slotIndex, null);
|
||||||
}
|
}
|
||||||
return itemStack;
|
return itemStack;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setInventorySlotContents(int slotIndex, ItemStack itemStack) {
|
public void setInventorySlotContents(int slotIndex, ItemStack itemStack)
|
||||||
|
{
|
||||||
inventory[slotIndex] = itemStack;
|
inventory[slotIndex] = itemStack;
|
||||||
|
|
||||||
if (itemStack != null && itemStack.stackSize > getInventoryStackLimit()) {
|
if (itemStack != null && itemStack.stackSize > getInventoryStackLimit())
|
||||||
|
{
|
||||||
itemStack.stackSize = getInventoryStackLimit();
|
itemStack.stackSize = getInventoryStackLimit();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!this.worldObj.isRemote) {
|
if (!this.worldObj.isRemote)
|
||||||
|
{
|
||||||
ItemStack displayStack = this.inventory[DISPLAY_SLOT_INVENTORY_INDEX];
|
ItemStack displayStack = this.inventory[DISPLAY_SLOT_INVENTORY_INDEX];
|
||||||
|
|
||||||
if (displayStack != null) {
|
if (displayStack != null)
|
||||||
|
{
|
||||||
this.state = (byte) Block.getBlockFromItem(displayStack.getItem()).getLightValue();
|
this.state = (byte) Block.getBlockFromItem(displayStack.getItem()).getLightValue();
|
||||||
} else {
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
this.state = 0;
|
this.state = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -86,62 +123,56 @@ public class TileEntityGlassBell extends TileEntityEE implements IInventory {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getInventoryName() {
|
public String getInventoryName()
|
||||||
|
{
|
||||||
return this.hasCustomName() ? this.getCustomName() : Names.Containers.GLASS_BELL;
|
return this.hasCustomName() ? this.getCustomName() : Names.Containers.GLASS_BELL;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean hasCustomInventoryName() {
|
public boolean hasCustomInventoryName()
|
||||||
|
{
|
||||||
return this.hasCustomName();
|
return this.hasCustomName();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int getInventoryStackLimit() {
|
public int getInventoryStackLimit()
|
||||||
|
{
|
||||||
return 64;
|
return 64;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isUseableByPlayer(EntityPlayer entityPlayer) {
|
public boolean isUseableByPlayer(EntityPlayer entityPlayer)
|
||||||
|
{
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void openInventory() {
|
public void openInventory()
|
||||||
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void closeInventory() {
|
public void closeInventory()
|
||||||
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isItemValidForSlot(int slotIndex, ItemStack itemStack) {
|
public boolean isItemValidForSlot(int slotIndex, ItemStack itemStack)
|
||||||
|
{
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void readFromNBT(NBTTagCompound nbtTagCompound) {
|
public void writeToNBT(NBTTagCompound nbtTagCompound)
|
||||||
super.readFromNBT(nbtTagCompound);
|
{
|
||||||
|
|
||||||
// Read in the ItemStacks in the inventory from NBT
|
|
||||||
NBTTagList tagList = nbtTagCompound.getTagList("Items", 10);
|
|
||||||
inventory = new ItemStack[this.getSizeInventory()];
|
|
||||||
for (int i = 0; i < tagList.tagCount(); ++i) {
|
|
||||||
NBTTagCompound tagCompound = tagList.getCompoundTagAt(i);
|
|
||||||
byte slotIndex = tagCompound.getByte("Slot");
|
|
||||||
if (slotIndex >= 0 && slotIndex < inventory.length) {
|
|
||||||
inventory[slotIndex] = ItemStack.loadItemStackFromNBT(tagCompound);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void writeToNBT(NBTTagCompound nbtTagCompound) {
|
|
||||||
super.writeToNBT(nbtTagCompound);
|
super.writeToNBT(nbtTagCompound);
|
||||||
|
|
||||||
// Write the ItemStacks in the inventory to NBT
|
// Write the ItemStacks in the inventory to NBT
|
||||||
NBTTagList tagList = new NBTTagList();
|
NBTTagList tagList = new NBTTagList();
|
||||||
for (int currentIndex = 0; currentIndex < inventory.length; ++currentIndex) {
|
for (int currentIndex = 0; currentIndex < inventory.length; ++currentIndex)
|
||||||
if (inventory[currentIndex] != null) {
|
{
|
||||||
|
if (inventory[currentIndex] != null)
|
||||||
|
{
|
||||||
NBTTagCompound tagCompound = new NBTTagCompound();
|
NBTTagCompound tagCompound = new NBTTagCompound();
|
||||||
tagCompound.setByte("Slot", (byte) currentIndex);
|
tagCompound.setByte("Slot", (byte) currentIndex);
|
||||||
inventory[currentIndex].writeToNBT(tagCompound);
|
inventory[currentIndex].writeToNBT(tagCompound);
|
||||||
|
@ -152,8 +183,10 @@ public class TileEntityGlassBell extends TileEntityEE implements IInventory {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Packet getDescriptionPacket() {
|
public Packet getDescriptionPacket()
|
||||||
if (getStackInSlot(DISPLAY_SLOT_INVENTORY_INDEX) != null && getStackInSlot(DISPLAY_SLOT_INVENTORY_INDEX).stackSize > 0) {
|
{
|
||||||
|
if (getStackInSlot(DISPLAY_SLOT_INVENTORY_INDEX) != null && getStackInSlot(DISPLAY_SLOT_INVENTORY_INDEX).stackSize > 0)
|
||||||
|
{
|
||||||
return PacketHandler.INSTANCE.getPacketFrom(new MessageTileEntityGlassBell(this, getStackInSlot(DISPLAY_SLOT_INVENTORY_INDEX)));
|
return PacketHandler.INSTANCE.getPacketFrom(new MessageTileEntityGlassBell(this, getStackInSlot(DISPLAY_SLOT_INVENTORY_INDEX)));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -8,37 +8,51 @@ import net.minecraft.item.ItemStack;
|
||||||
|
|
||||||
import java.util.TreeMap;
|
import java.util.TreeMap;
|
||||||
|
|
||||||
public class CalcinationHelper {
|
public class CalcinationHelper
|
||||||
public static ItemStack getCalcinationResult(ItemStack calcinedStack) {
|
{
|
||||||
|
public static ItemStack getCalcinationResult(ItemStack calcinedStack)
|
||||||
|
{
|
||||||
ItemStack itemStack = calcinedStack.copy();
|
ItemStack itemStack = calcinedStack.copy();
|
||||||
itemStack.stackSize = 1;
|
itemStack.stackSize = 1;
|
||||||
|
|
||||||
TreeMap<EnergyValue, ItemStack> sortedItems = new TreeMap<EnergyValue, ItemStack>();
|
TreeMap<EnergyValue, ItemStack> sortedItems = new TreeMap<EnergyValue, ItemStack>();
|
||||||
|
|
||||||
for (ItemStack dustStack : ItemAlchemicalDust.getAlchemicalDusts()) {
|
for (ItemStack dustStack : ItemAlchemicalDust.getAlchemicalDusts())
|
||||||
|
{
|
||||||
// If the item to be calcined is an alchemical dust, return null (you cannot calcine what's already been calcined)
|
// If the item to be calcined is an alchemical dust, return null (you cannot calcine what's already been calcined)
|
||||||
if (ItemHelper.equals(itemStack, dustStack)) {
|
if (ItemHelper.equals(itemStack, dustStack))
|
||||||
|
{
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (EnergyValueRegistry.getInstance().hasEnergyValue(dustStack)) {
|
if (EnergyValueRegistry.getInstance().hasEnergyValue(dustStack))
|
||||||
|
{
|
||||||
sortedItems.put(EnergyValueRegistry.getInstance().getEnergyValue(dustStack), dustStack);
|
sortedItems.put(EnergyValueRegistry.getInstance().getEnergyValue(dustStack), dustStack);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (EnergyValueRegistry.getInstance().hasEnergyValue(itemStack)) {
|
if (EnergyValueRegistry.getInstance().hasEnergyValue(itemStack))
|
||||||
if (sortedItems.containsKey(EnergyValueRegistry.getInstance().getEnergyValue(itemStack))) {
|
{
|
||||||
|
if (sortedItems.containsKey(EnergyValueRegistry.getInstance().getEnergyValue(itemStack)))
|
||||||
|
{
|
||||||
return sortedItems.get(EnergyValueRegistry.getInstance().getEnergyValue(itemStack));
|
return sortedItems.get(EnergyValueRegistry.getInstance().getEnergyValue(itemStack));
|
||||||
} else {
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
sortedItems.put(EnergyValueRegistry.getInstance().getEnergyValue(itemStack), itemStack);
|
sortedItems.put(EnergyValueRegistry.getInstance().getEnergyValue(itemStack), itemStack);
|
||||||
|
|
||||||
if (sortedItems.lowerEntry(EnergyValueRegistry.getInstance().getEnergyValue(itemStack)) == null) {
|
if (sortedItems.lowerEntry(EnergyValueRegistry.getInstance().getEnergyValue(itemStack)) == null)
|
||||||
|
{
|
||||||
return new ItemStack(ModItems.alchemicalDust, 1, 0);
|
return new ItemStack(ModItems.alchemicalDust, 1, 0);
|
||||||
} else {
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
return sortedItems.lowerEntry(EnergyValueRegistry.getInstance().getEnergyValue(itemStack)).getValue();
|
return sortedItems.lowerEntry(EnergyValueRegistry.getInstance().getEnergyValue(itemStack)).getValue();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
return new ItemStack(ModItems.alchemicalDust, 1, 0);
|
return new ItemStack(ModItems.alchemicalDust, 1, 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -75,11 +75,8 @@ public class ItemHelper
|
||||||
* Compares two ItemStacks for equality, testing itemID, metaData, stackSize, and their NBTTagCompounds (if they are
|
* Compares two ItemStacks for equality, testing itemID, metaData, stackSize, and their NBTTagCompounds (if they are
|
||||||
* present)
|
* present)
|
||||||
*
|
*
|
||||||
* @param first
|
* @param first The first ItemStack being tested for equality
|
||||||
* The first ItemStack being tested for equality
|
* @param second The second ItemStack being tested for equality
|
||||||
* @param second
|
|
||||||
* The second ItemStack being tested for equality
|
|
||||||
*
|
|
||||||
* @return true if the two ItemStacks are equivalent, false otherwise
|
* @return true if the two ItemStacks are equivalent, false otherwise
|
||||||
*/
|
*/
|
||||||
public static boolean equals(ItemStack first, ItemStack second)
|
public static boolean equals(ItemStack first, ItemStack second)
|
||||||
|
|
|
@ -8,33 +8,6 @@ import java.util.UUID;
|
||||||
|
|
||||||
public class NBTHelper
|
public class NBTHelper
|
||||||
{
|
{
|
||||||
/**
|
|
||||||
* Initializes the NBT Tag Compound for the given ItemStack if it is null
|
|
||||||
*
|
|
||||||
* @param itemStack
|
|
||||||
* The ItemStack for which its NBT Tag Compound is being checked for initialization
|
|
||||||
*/
|
|
||||||
private static void initNBTTagCompound(ItemStack itemStack)
|
|
||||||
{
|
|
||||||
if (itemStack.stackTagCompound == null)
|
|
||||||
{
|
|
||||||
itemStack.setTagCompound(new NBTTagCompound());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public static boolean hasTag(ItemStack itemStack, String keyName)
|
|
||||||
{
|
|
||||||
return itemStack != null && itemStack.stackTagCompound != null && itemStack.stackTagCompound.hasKey(keyName);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static void removeTag(ItemStack itemStack, String keyName)
|
|
||||||
{
|
|
||||||
if (itemStack.stackTagCompound != null)
|
|
||||||
{
|
|
||||||
itemStack.stackTagCompound.removeTag(keyName);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public static void clearStatefulNBTTags(ItemStack itemStack)
|
public static void clearStatefulNBTTags(ItemStack itemStack)
|
||||||
{
|
{
|
||||||
if (NBTHelper.hasTag(itemStack, Names.NBT.CRAFTING_GUI_OPEN))
|
if (NBTHelper.hasTag(itemStack, Names.NBT.CRAFTING_GUI_OPEN))
|
||||||
|
@ -51,6 +24,19 @@ public class NBTHelper
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static boolean hasTag(ItemStack itemStack, String keyName)
|
||||||
|
{
|
||||||
|
return itemStack != null && itemStack.stackTagCompound != null && itemStack.stackTagCompound.hasKey(keyName);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void removeTag(ItemStack itemStack, String keyName)
|
||||||
|
{
|
||||||
|
if (itemStack.stackTagCompound != null)
|
||||||
|
{
|
||||||
|
itemStack.stackTagCompound.removeTag(keyName);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public static boolean hasUUID(ItemStack itemStack)
|
public static boolean hasUUID(ItemStack itemStack)
|
||||||
{
|
{
|
||||||
return hasTag(itemStack, Names.NBT.UUID_MOST_SIG) && hasTag(itemStack, Names.NBT.UUID_LEAST_SIG);
|
return hasTag(itemStack, Names.NBT.UUID_MOST_SIG) && hasTag(itemStack, Names.NBT.UUID_LEAST_SIG);
|
||||||
|
@ -69,6 +55,26 @@ public class NBTHelper
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Initializes the NBT Tag Compound for the given ItemStack if it is null
|
||||||
|
*
|
||||||
|
* @param itemStack The ItemStack for which its NBT Tag Compound is being checked for initialization
|
||||||
|
*/
|
||||||
|
private static void initNBTTagCompound(ItemStack itemStack)
|
||||||
|
{
|
||||||
|
if (itemStack.stackTagCompound == null)
|
||||||
|
{
|
||||||
|
itemStack.setTagCompound(new NBTTagCompound());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void setLong(ItemStack itemStack, String keyName, long keyValue)
|
||||||
|
{
|
||||||
|
initNBTTagCompound(itemStack);
|
||||||
|
|
||||||
|
itemStack.stackTagCompound.setLong(keyName, keyValue);
|
||||||
|
}
|
||||||
|
|
||||||
// String
|
// String
|
||||||
public static String getString(ItemStack itemStack, String keyName)
|
public static String getString(ItemStack itemStack, String keyName)
|
||||||
{
|
{
|
||||||
|
@ -182,13 +188,6 @@ public class NBTHelper
|
||||||
return itemStack.stackTagCompound.getLong(keyName);
|
return itemStack.stackTagCompound.getLong(keyName);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void setLong(ItemStack itemStack, String keyName, long keyValue)
|
|
||||||
{
|
|
||||||
initNBTTagCompound(itemStack);
|
|
||||||
|
|
||||||
itemStack.stackTagCompound.setLong(keyName, keyValue);
|
|
||||||
}
|
|
||||||
|
|
||||||
// float
|
// float
|
||||||
public static float getFloat(ItemStack itemStack, String keyName)
|
public static float getFloat(ItemStack itemStack, String keyName)
|
||||||
{
|
{
|
||||||
|
|
|
@ -26,9 +26,7 @@ public class RecipeHelper
|
||||||
/**
|
/**
|
||||||
* Returns a list of elements that constitute the input in a crafting recipe
|
* Returns a list of elements that constitute the input in a crafting recipe
|
||||||
*
|
*
|
||||||
* @param recipe
|
* @param recipe The IRecipe being examined
|
||||||
* The IRecipe being examined
|
|
||||||
*
|
|
||||||
* @return List of elements that constitute the input of the given IRecipe. Could be an ItemStack or an Arraylist
|
* @return List of elements that constitute the input of the given IRecipe. Could be an ItemStack or an Arraylist
|
||||||
*/
|
*/
|
||||||
public static ArrayList<WrappedStack> getRecipeInputs(IRecipe recipe)
|
public static ArrayList<WrappedStack> getRecipeInputs(IRecipe recipe)
|
||||||
|
@ -137,9 +135,7 @@ public class RecipeHelper
|
||||||
/**
|
/**
|
||||||
* Collates an uncollated, unsorted List of Objects into a sorted, collated List of WrappedStacks
|
* Collates an uncollated, unsorted List of Objects into a sorted, collated List of WrappedStacks
|
||||||
*
|
*
|
||||||
* @param uncollatedStacks
|
* @param uncollatedStacks List of objects for collating
|
||||||
* List of objects for collating
|
|
||||||
*
|
|
||||||
* @return A sorted, collated List of WrappedStacks
|
* @return A sorted, collated List of WrappedStacks
|
||||||
*/
|
*/
|
||||||
public static List<WrappedStack> collateInputStacks(List<?> uncollatedStacks)
|
public static List<WrappedStack> collateInputStacks(List<?> uncollatedStacks)
|
||||||
|
|
Loading…
Reference in a new issue