Example usage for net.minecraftforge.fluids FluidStack loadFluidStackFromNBT

List of usage examples for net.minecraftforge.fluids FluidStack loadFluidStackFromNBT

Introduction

In this page you can find the example usage for net.minecraftforge.fluids FluidStack loadFluidStackFromNBT.

Prototype

public static FluidStack loadFluidStackFromNBT(CompoundNBT nbt) 

Source Link

Document

This provides a safe method for retrieving a FluidStack - if the Fluid is invalid, the stack will return as null.

Usage

From source file:appeng.util.item.AEFluidStack.java

License:Open Source License

public static IAEFluidStack loadFluidStackFromPacket(ByteBuf data) throws IOException {
    byte mask = data.readByte();
    // byte PriorityType = (byte) (mask & 0x03);
    byte stackType = (byte) ((mask & 0x0C) >> 2);
    byte countReqType = (byte) ((mask & 0x30) >> 4);
    boolean isCraftable = (mask & 0x40) > 0;
    boolean hasTagCompound = (mask & 0x80) > 0;

    // don't send this...
    NBTTagCompound d = new NBTTagCompound();

    byte len2 = data.readByte();
    byte[] name = new byte[len2];
    data.readBytes(name, 0, len2);/*  ww  w .  j  a v a2 s.  c  o m*/

    d.setString("FluidName", new String(name, "UTF-8"));
    d.setByte("Count", (byte) 0);

    if (hasTagCompound) {
        int len = data.readInt();

        byte[] bd = new byte[len];
        data.readBytes(bd);

        DataInputStream di = new DataInputStream(new ByteArrayInputStream(bd));
        d.setTag("tag", CompressedStreamTools.read(di));
    }

    // long priority = getPacketValue( PriorityType, data );
    long stackSize = getPacketValue(stackType, data);
    long countRequestable = getPacketValue(countReqType, data);

    FluidStack fluidStack = FluidStack.loadFluidStackFromNBT(d);
    if (fluidStack == null) {
        return null;
    }

    AEFluidStack fluid = AEFluidStack.create(fluidStack);
    // fluid.priority = (int) priority;
    fluid.stackSize = stackSize;
    fluid.setCountRequestable(countRequestable);
    fluid.setCraftable(isCraftable);
    return fluid;
}

From source file:blusunrize.immersiveengineering.api.crafting.MixerRecipe.java

public static MixerRecipe loadFromNBT(NBTTagCompound nbt) {
    FluidStack fluidInput = FluidStack.loadFluidStackFromNBT(nbt.getCompoundTag("fluidInput"));
    IngredientStack[] itemInputs = null;
    if (nbt.hasKey("itemInputs")) {
        NBTTagList list = nbt.getTagList("itemInputs", 10);
        itemInputs = new IngredientStack[list.tagCount()];
        for (int i = 0; i < itemInputs.length; i++)
            itemInputs[i] = IngredientStack.readFromNBT(list.getCompoundTagAt(i));
    }//from  w ww .jav  a 2 s .c om
    for (MixerRecipe recipe : recipeList)
        if (recipe.fluidInput.equals(fluidInput)) {
            if (itemInputs == null && recipe.itemInputs.length < 1)
                return recipe;
            else if (itemInputs != null && recipe.itemInputs.length == itemInputs.length) {
                boolean b = true;
                for (int i = 0; i < itemInputs.length; i++)
                    if (!itemInputs[i].equals(recipe.itemInputs[i])) {
                        b = false;
                        break;
                    }
                if (b)
                    return recipe;
            }
        }
    return null;
}

From source file:blusunrize.immersiveengineering.api.crafting.RefineryRecipe.java

public static RefineryRecipe loadFromNBT(NBTTagCompound nbt) {
    FluidStack input0 = FluidStack.loadFluidStackFromNBT(nbt.getCompoundTag("input0"));
    FluidStack input1 = FluidStack.loadFluidStackFromNBT(nbt.getCompoundTag("input1"));
    return findRecipe(input0, input1);
}

From source file:blusunrize.immersiveengineering.common.blocks.ItemBlockIEBase.java

@Override
public void addInformation(ItemStack stack, @Nullable World world, List<String> tooltip,
        ITooltipFlag tooltipFlag) {//w  ww.j  av  a  2  s . c  om
    if (((BlockIEBase) block).hasFlavour(stack)) {
        String subName = ((BlockIEBase) this.block).getStateFromMeta(stack.getItemDamage())
                .getValue(((BlockIEBase) this.block).property).toString().toLowerCase(Locale.US);
        String flavourKey = Lib.DESC_FLAVOUR + ((BlockIEBase) this.block).name + "." + subName;
        tooltip.add(TextFormatting.GRAY.toString() + I18n.format(flavourKey));
    }
    super.addInformation(stack, world, tooltip, tooltipFlag);
    if (ItemNBTHelper.hasKey(stack, "energyStorage"))
        tooltip.add(I18n.format("desc.immersiveengineering.info.energyStored",
                ItemNBTHelper.getInt(stack, "energyStorage")));
    if (ItemNBTHelper.hasKey(stack, "tank")) {
        FluidStack fs = FluidStack.loadFluidStackFromNBT(ItemNBTHelper.getTagCompound(stack, "tank"));
        if (fs != null)
            tooltip.add(fs.getLocalizedName() + ": " + fs.amount + "mB");
    }
}

From source file:blusunrize.immersiveengineering.common.blocks.wooden.TileEntityFluidSorter.java

@Override
public void receiveMessageFromClient(NBTTagCompound message) {
    if (message.hasKey("sideConfig"))
        this.sortWithNBT = message.getByteArray("sideConfig");
    if (message.hasKey("filter_side")) {
        int side = message.getInteger("filter_side");
        int slot = message.getInteger("filter_slot");
        this.filters[side][slot] = FluidStack.loadFluidStackFromNBT(message.getCompoundTag("filter"));
    }//w  w  w. j ava  2  s  .  co m
    this.markDirty();
}

From source file:blusunrize.immersiveengineering.common.blocks.wooden.TileEntityFluidSorter.java

@Override
public void readCustomNBT(NBTTagCompound nbt, boolean descPacket) {
    sortWithNBT = nbt.getByteArray("sortWithNBT");
    for (int side = 0; side < 6; side++) {
        NBTTagList filterList = nbt.getTagList("filter_" + side, 10);
        for (int i = 0; i < filterList.tagCount(); i++)
            filters[side][i] = FluidStack.loadFluidStackFromNBT(filterList.getCompoundTagAt(i));
    }//w w  w .java2s  .co m
}

From source file:blusunrize.immersiveengineering.common.util.compat.waila.IEWailaDataProvider.java

@Override
public List<String> getWailaBody(ItemStack itemStack, List<String> currenttip, IWailaDataAccessor accessor,
        IWailaConfigHandler config) {/*from w w  w  . ja v a2s  . c om*/
    Block b = accessor.getBlock();
    TileEntity tile = accessor.getTileEntity();
    if (b instanceof BlockIECrop) {
        int meta = accessor.getMetadata();
        int min = ((BlockIECrop) b).getMinMeta(meta);
        int max = ((BlockIECrop) b).getMaxMeta(meta);
        if (min == max)
            currenttip.add(
                    String.format("%s : %s", I18n.format("hud.msg.growth"), I18n.format("hud.msg.mature")));
        else {
            float growth = ((meta - min) / (float) (max - min)) * 100f;
            if (growth < 100.0)
                currenttip.add(String.format("%s : %.0f %%", I18n.format("hud.msg.growth"), growth));
            else
                currenttip.add(
                        String.format("%s : %s", I18n.format("hud.msg.growth"), I18n.format("hud.msg.mature")));
        }
        return currenttip;
    } else if (tile instanceof TileEntityWoodenBarrel) {
        NBTTagCompound tank = accessor.getNBTData().getCompoundTag("tank");
        if (!tank.hasKey("Empty") && !tank.isEmpty()) {
            FluidStack fluid = FluidStack.loadFluidStackFromNBT(tank);
            currenttip.add(String.format("%s: %d / %d mB", fluid.getLocalizedName(),
                    Integer.valueOf(fluid.amount), 12000));
        } else
            currenttip.add(I18n.format("hud.msg.empty"));
    }
    if (accessor.getNBTData().hasKey("Energy")) {
        int cur = accessor.getNBTInteger(accessor.getNBTData(), "Energy");
        int max = accessor.getNBTInteger(accessor.getNBTData(), "MaxStorage");
        if (max > 0 && ((ITaggedList) currenttip).getEntries("IFEnergyStorage").size() == 0)
            ((ITaggedList) currenttip).add(String.format("%d / %d IF", cur, max), "IFEnergyStorage");
        if (tile instanceof TileEntityTeslaCoil
                && ((ITaggedList) currenttip).getEntries("teslaCoil").size() == 0) {
            boolean rsInv = accessor.getNBTData().getBoolean("redstoneInverted");
            boolean lowPower = accessor.getNBTData().getBoolean("lowPower");
            ((ITaggedList) currenttip).add(
                    I18n.format(Lib.CHAT_INFO + "rsControl." + (rsInv ? "invertedOn" : "invertedOff")),
                    "teslaCoil");
            currenttip.add(I18n.format(Lib.CHAT_INFO + "tesla." + (lowPower ? "lowPower" : "highPower")));
        }
    }
    return currenttip;
}

From source file:blusunrize.immersiveengineering.common.util.inventory.MultiFluidTank.java

public MultiFluidTank readFromNBT(NBTTagCompound nbt) {
    if (nbt.hasKey("fluids")) {
        fluids.clear();//ww  w  .j a v  a  2 s  .c o  m
        NBTTagList tagList = nbt.getTagList("fluids", 10);
        for (int i = 0; i < tagList.tagCount(); i++) {
            FluidStack fs = FluidStack.loadFluidStackFromNBT(tagList.getCompoundTagAt(i));
            if (fs != null)
                this.fluids.add(fs);
        }
    }
    return this;
}

From source file:blusunrize.immersiveengineering.common.util.ItemNBTHelper.java

public static FluidStack getFluidStack(ItemStack stack, String key) {
    if (hasTag(stack)) {
        return FluidStack.loadFluidStackFromNBT(getTagCompound(stack, key));
    }/*www  . j  a  v a 2  s . c o  m*/
    return null;
}

From source file:buildcraft.core.InterModComms.java

License:Minecraft Mod Public

public static void processRefineryRecipeIMC(IMCEvent event, IMCMessage msg) {
    boolean failed = false;
    if (!msg.isNBTMessage()) {
        failed = true;/*w w  w  . j a v a 2  s.c o m*/
    } else {
        NBTTagCompound recipe = msg.getNBTValue();
        if (!recipe.hasKey("input", 10) || !recipe.hasKey("output", 10) || !recipe.hasKey("energy", 3)
                || !recipe.hasKey("delay", 3)) {
            failed = true;
        } else {
            FluidStack output = FluidStack.loadFluidStackFromNBT(recipe.getCompoundTag("output"));
            FluidStack input = FluidStack.loadFluidStackFromNBT(recipe.getCompoundTag("input"));
            FluidStack input2 = null;
            if (recipe.hasKey("input_2", 10)) {
                input2 = FluidStack.loadFluidStackFromNBT(recipe.getCompoundTag("input_2"));
            }
            if (input != null && output != null) {
                RefineryRecipeManager.INSTANCE.addRecipe(input, input2, output, recipe.getInteger("energy"),
                        recipe.getInteger("delay"));
            } else {
                failed = true;
            }
        }
    }
    if (failed) {
        Logger.getLogger("Buildcraft").log(Level.WARNING,
                "Received invalid refinery recipe IMC message from %s!", msg.getSender());
    }
}