Should fix problems with FluidStacks in later Forge versions. Also prevents hoppers from putting too many items into the input slot of the Research Station

This commit is contained in:
pahimar 2015-05-03 11:48:18 -04:00
parent a0ffb84891
commit eec200f133
5 changed files with 19 additions and 20 deletions

View file

@ -5,6 +5,8 @@ import net.minecraft.nbt.JsonToNBT;
import net.minecraft.nbt.NBTBase;
import net.minecraft.nbt.NBTException;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraftforge.fluids.Fluid;
import net.minecraftforge.fluids.FluidRegistry;
import net.minecraftforge.fluids.FluidStack;
import java.lang.reflect.Type;
@ -13,31 +15,24 @@ public class JsonFluidStack implements JsonSerializer<JsonFluidStack>, JsonDeser
{
public static final Gson jsonSerializer = (new GsonBuilder()).registerTypeAdapter(JsonFluidStack.class, new JsonFluidStack()).create();
public int fluidID;
public Fluid fluid;
public int amount;
public NBTTagCompound tag;
public JsonFluidStack()
{
this.fluidID = Integer.MIN_VALUE;
this.fluid = null;
this.amount = 0;
this.tag = null;
}
public JsonFluidStack(FluidStack fluidStack)
{
this.fluidID = fluidStack.fluidID;
this.fluid = fluidStack.getFluid();
this.amount = fluidStack.amount;
this.tag = fluidStack.tag;
}
public JsonFluidStack(int fluidID, int amount, NBTTagCompound tag)
{
this.fluidID = fluidID;
this.amount = amount;
this.tag = tag;
}
@Override
public JsonFluidStack deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException
{
@ -46,9 +41,9 @@ public class JsonFluidStack implements JsonSerializer<JsonFluidStack>, JsonDeser
JsonObject jsonObject = (JsonObject) json;
JsonFluidStack jsonFluidStack = new JsonFluidStack();
if (jsonObject.has("fluidID"))
if (jsonObject.has("fluidName"))
{
jsonFluidStack.fluidID = jsonObject.get("fluidID").getAsInt();
jsonFluidStack.fluid = FluidRegistry.getFluid(jsonObject.get("fluidName").getAsString());
}
else
{
@ -92,7 +87,7 @@ public class JsonFluidStack implements JsonSerializer<JsonFluidStack>, JsonDeser
{
JsonObject jsonObject = new JsonObject();
jsonObject.addProperty("fluidID", src.fluidID);
jsonObject.addProperty("fluidName", src.fluid.getName());
jsonObject.addProperty("amount", src.amount);
if (src.tag != null)
@ -106,6 +101,6 @@ public class JsonFluidStack implements JsonSerializer<JsonFluidStack>, JsonDeser
@Override
public String toString()
{
return String.format("fluidID: %s, amount: %s, tag: %s", fluidID, amount, tag);
return String.format("fluid: %s, amount: %s, tag: %s", fluid, amount, tag);
}
}

View file

@ -443,7 +443,7 @@ public class WrappedStack implements Comparable<WrappedStack>, JsonDeserializer<
else if (objectType.equalsIgnoreCase("FluidStack"))
{
JsonFluidStack jsonFluidStack = JsonFluidStack.jsonSerializer.fromJson(jsonWrappedStack.get("objectData"), JsonFluidStack.class);
FluidStack fluidStack = new FluidStack(jsonFluidStack.fluidID, jsonFluidStack.amount, jsonFluidStack.tag);
FluidStack fluidStack = new FluidStack(jsonFluidStack.fluid, jsonFluidStack.amount, jsonFluidStack.tag);
if (stackSize > 0)
{

View file

@ -103,6 +103,7 @@ public class ItemAlchemicalBag extends ItemEE implements IOwnable
// Set a UUID on the Alchemical Bag, if one doesn't exist already
NBTHelper.setUUID(itemStack);
// TODO Do a scan of inventory and if we find a bag with the same UUID, change it's UUID
NBTHelper.setBoolean(itemStack, Names.NBT.ALCHEMICAL_BAG_GUI_OPEN, true);
entityPlayer.openGui(EquivalentExchange3.instance, GUIs.ALCHEMICAL_BAG.ordinal(), entityPlayer.worldObj, (int) entityPlayer.posX, (int) entityPlayer.posY, (int) entityPlayer.posZ);
}

View file

@ -100,7 +100,7 @@ public class TileEntityResearchStation extends TileEntityEE implements IInventor
@Override
public int getInventoryStackLimit()
{
return 64;
return 1;
}
@Override

View file

@ -22,7 +22,8 @@ public class FluidHelper
{
if (fluidStack2 != null)
{
if (fluidStack1.fluidID == fluidStack2.fluidID)
// if (fluidStack1.fluidID == fluidStack2.fluidID)
if (FluidRegistry.getFluidID(fluidStack1.getFluid()) == FluidRegistry.getFluidID(fluidStack2.getFluid()))
{
if (fluidStack1.amount == fluidStack2.amount)
{
@ -56,7 +57,7 @@ public class FluidHelper
}
else
{
return (fluidStack1.fluidID - fluidStack2.fluidID);
return (FluidRegistry.getFluidID(fluidStack1.getFluid()) - FluidRegistry.getFluidID(fluidStack2.getFluid()));
}
}
else
@ -84,8 +85,10 @@ public class FluidHelper
if (!FluidRegistry.isFluidRegistered("milk"))
{
Fluid milk = new Fluid("milk").setUnlocalizedName(Names.Fluids.MILK);
FluidRegistry.registerFluid(milk);
FluidContainerRegistry.registerFluidContainer(new FluidStack(milk, 1000), new ItemStack(Items.milk_bucket), new ItemStack(Items.bucket));
if (FluidRegistry.registerFluid(milk))
{
FluidContainerRegistry.registerFluidContainer(new FluidStack(milk, 1000), new ItemStack(Items.milk_bucket), new ItemStack(Items.bucket));
}
}
}