Files
NotEnoughItems/src/main/java/codechicken/nei/recipe/stackinfo/DefaultStackStringifyHandler.java
T

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

80 lines
2.7 KiB
Java
Raw Normal View History

2022-01-02 23:30:54 +02:00
package codechicken.nei.recipe.stackinfo;
2026-09-08 13:41:16 +03:00
import net.minecraft.block.Block;
import net.minecraft.block.BlockLiquid;
import net.minecraft.block.material.Material;
2022-01-02 23:30:54 +02:00
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
2026-09-08 13:41:16 +03:00
import net.minecraftforge.fluids.Fluid;
2022-01-02 23:30:54 +02:00
import net.minecraftforge.fluids.FluidContainerRegistry;
2026-09-08 13:41:16 +03:00
import net.minecraftforge.fluids.FluidRegistry;
2022-01-02 23:30:54 +02:00
import net.minecraftforge.fluids.FluidStack;
import net.minecraftforge.fluids.IFluidContainerItem;
2023-09-25 00:35:24 +02:00
import codechicken.nei.api.IStackStringifyHandler;
import cpw.mods.fml.common.registry.GameData;
public class DefaultStackStringifyHandler implements IStackStringifyHandler {
2022-01-02 23:30:54 +02:00
public NBTTagCompound convertItemStackToNBT(ItemStack stack, boolean saveStackSize) {
2022-01-07 19:06:05 +02:00
final String strId = Item.itemRegistry.getNameForObject(stack.getItem());
if (strId == null) {
return null;
}
2022-01-02 23:30:54 +02:00
final NBTTagCompound nbTag = new NBTTagCompound();
2022-01-07 19:06:05 +02:00
nbTag.setString("strId", strId);
nbTag.setInteger("Count", saveStackSize ? stack.stackSize : 1);
nbTag.setInteger("Damage", stack.getItemDamage());
2025-03-24 16:48:11 +02:00
if (stack.hasTagCompound() && !stack.getTagCompound().hasNoTags()) {
2025-09-23 06:28:05 +03:00
nbTag.setTag("tag", stack.getTagCompound().copy());
2022-01-02 23:30:54 +02:00
}
return nbTag;
}
public ItemStack convertNBTToItemStack(NBTTagCompound nbtTag) {
2022-01-02 23:30:54 +02:00
final String strId = nbtTag.getString("strId");
nbtTag = (NBTTagCompound) nbtTag.copy();
nbtTag.setInteger("id", GameData.getItemRegistry().getId(strId)); // getObject
2022-01-02 23:30:54 +02:00
final ItemStack stack = ItemStack.loadItemStackFromNBT(nbtTag);
if (stack != null) {
stack.stackSize = nbtTag.getInteger("Count");
}
return stack;
}
public FluidStack getFluid(ItemStack stack) {
2022-01-02 23:30:54 +02:00
FluidStack fluidStack = FluidContainerRegistry.getFluidForFilledItem(stack);
2026-09-08 13:41:16 +03:00
if (fluidStack == null && stack.getItem() instanceof IFluidContainerItem container) {
fluidStack = container.getFluid(stack);
}
if (fluidStack == null && Block.getBlockFromItem(stack.getItem()) instanceof BlockLiquid liquidBlock) {
Fluid fluid = FluidRegistry.lookupFluidForBlock(liquidBlock);
if (fluid == null) {
if (liquidBlock.getMaterial() == Material.water) {
fluid = FluidRegistry.WATER;
} else if (liquidBlock.getMaterial() == Material.lava) {
fluid = FluidRegistry.LAVA;
}
}
if (fluid != null) {
fluidStack = new FluidStack(fluid, FluidContainerRegistry.BUCKET_VOLUME);
}
2022-01-02 23:30:54 +02:00
}
return fluidStack;
}
2025-06-22 18:49:20 +03:00
2022-01-02 23:30:54 +02:00
}