filename:
common/src/main/java/rearth/oritech/item/other/SmallFluidTankBlockItem.java
branch:
1.21
back to repo
package rearth.oritech.item.other;
import dev.architectury.fluid.FluidStack;
import dev.architectury.hooks.fluid.FluidStackHooks;
import net.minecraft.block.Block;
import net.minecraft.item.BlockItem;
import net.minecraft.item.ItemStack;
import net.minecraft.item.tooltip.TooltipType;
import net.minecraft.text.Text;
import net.minecraft.util.Formatting;
import rearth.oritech.Oritech;
import rearth.oritech.api.fluid.FluidApi;
import rearth.oritech.api.fluid.containers.SimpleItemFluidStorage;
import java.util.List;
public class SmallFluidTankBlockItem extends BlockItem implements FluidApi.ItemProvider {
public SmallFluidTankBlockItem(Block block, Settings settings) {
super(block, settings);
}
@Override
public void appendTooltip(ItemStack stack, TooltipContext context, List<Text> tooltip, TooltipType type) {
var data = stack.getOrDefault(FluidApi.ITEM.getFluidComponent(), FluidStack.empty());
if (data.isEmpty()) {
tooltip.add(Text.translatable("tooltip.oritech.fluid_empty"));
} else {
var amount = data.getAmount() / (float) FluidStackHooks.bucketAmount();
tooltip.add(Text.translatable("tooltip.oritech.fluid_content_tank_tooltip", amount, FluidStackHooks.getName(data).getString()));
}
super.appendTooltip(stack, context, tooltip, type);
}
@Override
public Text getName(ItemStack stack) {
var content = stack.getOrDefault(FluidApi.ITEM.getFluidComponent(), FluidStack.empty());
if (content.isEmpty()) {
return super.getName(stack);
} else {
return FluidStackHooks.getName(content).copy().formatted(Formatting.ITALIC).append(Text.literal(" ")).append(super.getName(stack));
}
}
@Override
public FluidApi.SingleSlotStorage getFluidStorage(ItemStack stack) {
return new SimpleItemFluidStorage(Oritech.CONFIG.portableTankCapacityBuckets() * FluidStackHooks.bucketAmount(), stack);
}
@Override
public boolean isItemBarVisible(ItemStack stack) {
var contentEmpty = stack.getOrDefault(FluidApi.ITEM.getFluidComponent(), FluidStack.empty()).isEmpty();
return !contentEmpty;
}
@Override
public int getItemBarColor(ItemStack stack) {
return 0x07bdff;
}
@Override
public int getItemBarStep(ItemStack stack) {
var capacity = Oritech.CONFIG.portableTankCapacityBuckets() * FluidStackHooks.bucketAmount();
var fillAmount = stack.getOrDefault(FluidApi.ITEM.getFluidComponent(), FluidStack.empty()).getAmount();
return Math.round((fillAmount * 100f / capacity) * ITEM_BAR_STEPS) / 100;
}
}