Pattern and wrench

This commit is contained in:
raoulvdberge
2019-09-15 20:20:04 +02:00
parent b2f6cd59c0
commit 2fbf4002d6
11 changed files with 243 additions and 207 deletions

View File

@@ -60,12 +60,9 @@ public final class RS {
e.getRegistry().register(new ItemQuartzEnrichedIron());
e.getRegistry().register(new ItemProcessorBinding());
e.getRegistry().register(new ItemProcessor(ItemProcessor.Type.RAW_BASIC));
e.getRegistry().register(new ItemProcessor(ItemProcessor.Type.RAW_IMPROVED));
e.getRegistry().register(new ItemProcessor(ItemProcessor.Type.RAW_ADVANCED));
e.getRegistry().register(new ItemProcessor(ItemProcessor.Type.BASIC));
e.getRegistry().register(new ItemProcessor(ItemProcessor.Type.IMPROVED));
e.getRegistry().register(new ItemProcessor(ItemProcessor.Type.ADVANCED));
for (ItemProcessor.Type type : ItemProcessor.Type.values()) {
e.getRegistry().register(new ItemProcessor(type));
}
e.getRegistry().register(new ItemSilicon());
@@ -94,6 +91,9 @@ public final class RS {
for (ItemUpgrade.Type type : ItemUpgrade.Type.values()) {
e.getRegistry().register(new ItemUpgrade(type));
}
e.getRegistry().register(new ItemWrench());
e.getRegistry().register(new ItemPattern());
}
/* TODO

View File

@@ -22,6 +22,14 @@ public final class RSItems {
@ObjectHolder(RS.ID + ":processor_binding")
public static final ItemProcessorBinding PROCESSOR_BINDING = null;
@ObjectHolder(RS.ID + ":wrench")
public static final ItemWrench WRENCH = null;
@ObjectHolder(RS.ID + ":pattern")
public static final ItemPattern PATTERN = null;
public static final ItemFilter FILTER = new ItemFilter();
@ObjectHolder(RS.ID + ":raw_basic_processor")
public static final ItemProcessor RAW_BASIC_PROCESSOR = null;
@ObjectHolder(RS.ID + ":raw_improved_processor")
@@ -56,9 +64,6 @@ public final class RSItems {
@ObjectHolder(RS.ID + ":creative_storage_disk")
public static final ItemStorageDisk CREATIVE_STORAGE_DISK = null;
public static final ItemPattern PATTERN = new ItemPattern();
public static final ItemFilter FILTER = new ItemFilter();
@ObjectHolder(RS.ID + ":upgrade")
public static final ItemUpgrade UPGRADE = null;
@ObjectHolder(RS.ID + ":speed_upgrade")
@@ -112,5 +117,4 @@ public final class RSItems {
public static final ItemCover COVER = new ItemCover();
public static final ItemHollowCover HOLLOW_COVER = new ItemHollowCover();
public static final ItemWrench WRENCH = new ItemWrench();
}

View File

@@ -107,7 +107,7 @@ public class GuiGrid extends GuiBase<ContainerGrid> implements IResizableDisplay
addSideButton(new SideButtonGridSize(this, () -> grid.getSize(), size -> grid.onSizeChanged(size)));
if (grid.getGridType() == GridType.PATTERN) {
processingPattern = addCheckBox(x + 7, y + getTopHeight() + (getVisibleRows() * 18) + 60, t("misc.refinedstorage:processing"), TileGrid.PROCESSING_PATTERN.getValue());
processingPattern = addCheckBox(x + 7, y + getTopHeight() + (getVisibleRows() * 18) + 60, t("misc.refinedstorage.processing"), TileGrid.PROCESSING_PATTERN.getValue());
boolean showOredict = true;
if (((NetworkNodeGrid) grid).isProcessingPattern() && ((NetworkNodeGrid) grid).getType() == IType.FLUIDS) {

View File

@@ -26,7 +26,7 @@ import javax.annotation.Nullable;
import java.util.List;
import java.util.UUID;
public class ItemFluidStorageDisk extends ItemBase implements IStorageDiskProvider {
public class ItemFluidStorageDisk extends Item implements IStorageDiskProvider {
private static final String NBT_ID = "Id";
private final FluidStorageType type;

View File

@@ -1,28 +1,55 @@
package com.raoulvdberge.refinedstorage.item;
import com.raoulvdberge.refinedstorage.RS;
import com.raoulvdberge.refinedstorage.RSItems;
import com.raoulvdberge.refinedstorage.api.autocrafting.ICraftingPattern;
import com.raoulvdberge.refinedstorage.api.autocrafting.ICraftingPatternContainer;
import com.raoulvdberge.refinedstorage.api.autocrafting.ICraftingPatternProvider;
import com.raoulvdberge.refinedstorage.apiimpl.autocrafting.CraftingPattern;
import com.raoulvdberge.refinedstorage.item.info.ItemInfo;
import com.raoulvdberge.refinedstorage.util.RenderUtils;
import net.minecraft.client.gui.screen.inventory.ContainerScreen;
import net.minecraft.client.util.ITooltipFlag;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.CompoundNBT;
import net.minecraft.util.ActionResult;
import net.minecraft.util.ActionResultType;
import net.minecraft.util.Hand;
import net.minecraft.util.text.ITextComponent;
import net.minecraft.util.text.Style;
import net.minecraft.util.text.TextFormatting;
import net.minecraft.util.text.TranslationTextComponent;
import net.minecraft.world.World;
import net.minecraftforge.fluids.FluidStack;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
public class ItemPattern extends ItemBase/* implements ICraftingPatternProvider */ {
private static Map<ItemStack, CraftingPattern> PATTERN_CACHE = new HashMap<>();
public class ItemPattern extends Item implements ICraftingPatternProvider {
private static Map<ItemStack, CraftingPattern> CACHE = new HashMap<>();
private static final String NBT_VERSION = "Version";
public static final String NBT_INPUT_SLOT = "Input_%d";
public static final String NBT_OUTPUT_SLOT = "Output_%d";
private static final String NBT_INPUT_SLOT = "Input_%d";
private static final String NBT_OUTPUT_SLOT = "Output_%d";
private static final String NBT_FLUID_INPUT_SLOT = "FluidInput_%d";
private static final String NBT_FLUID_OUTPUT_SLOT = "FluidOutput_%d";
private static final String NBT_OREDICT = "Oredict";
public static final String NBT_PROCESSING = "Processing";
private static final String NBT_OREDICT = "Oredict"; // TODO - Rename since oredict is gone
private static final String NBT_PROCESSING = "Processing";
private static final int VERSION = 1;
public ItemPattern() {
super(new ItemInfo(RS.ID, "pattern"));
super(new Item.Properties().group(RS.MAIN_GROUP));
this.setRegistryName(RS.ID, "pattern");
}
/*
/* TODO - Pattern rendering
@Override
@SideOnly(Side.CLIENT)
public void registerModels(IModelRegistration modelRegistration) {
@@ -31,176 +58,62 @@ public class ItemPattern extends ItemBase/* implements ICraftingPatternProvider
modelRegistration.addBakedModelOverride(info.getId(), BakedModelPattern::new);
modelRegistration.addItemColor(this, new ItemColorPattern());
}
}*/
public static CraftingPattern getPatternFromCache(World world, ItemStack stack) {
if (!PATTERN_CACHE.containsKey(stack)) {
PATTERN_CACHE.put(stack, new CraftingPattern(world, null, stack));
public static CraftingPattern fromCache(World world, ItemStack stack) {
if (!CACHE.containsKey(stack)) {
CACHE.put(stack, new CraftingPattern(world, null, stack));
}
return PATTERN_CACHE.get(stack);
return CACHE.get(stack);
}
@Override
public void addInformation(ItemStack stack, @Nullable World world, List<String> tooltip, ITooltipFlag flag) {
public void addInformation(ItemStack stack, @Nullable World world, List<ITextComponent> tooltip, ITooltipFlag flag) {
super.addInformation(stack, world, tooltip, flag);
if (!stack.hasTagCompound()) {
if (!stack.hasTag()) {
return;
}
ICraftingPattern pattern = getPatternFromCache(world, stack);
ICraftingPattern pattern = fromCache(world, stack);
Style yellow = new Style().setColor(TextFormatting.YELLOW);
Style blue = new Style().setColor(TextFormatting.BLUE);
Style red = new Style().setColor(TextFormatting.RED);
if (pattern.isValid()) {
if (GuiScreen.isShiftKeyDown() || isProcessing(stack)) {
tooltip.add(TextFormatting.YELLOW + I18n.format("misc.refinedstorage:pattern.inputs") + TextFormatting.RESET);
if (ContainerScreen.hasShiftDown() || isProcessing(stack)) {
tooltip.add(new TranslationTextComponent("misc.refinedstorage.pattern.inputs").setStyle(yellow));
RenderUtils.addCombinedItemsToTooltip(tooltip, true, pattern.getInputs().stream().map(i -> i.size() > 0 ? i.get(0) : ItemStack.EMPTY).collect(Collectors.toList()));
RenderUtils.addCombinedFluidsToTooltip(tooltip, true, pattern.getFluidInputs());
tooltip.add(TextFormatting.YELLOW + I18n.format("misc.refinedstorage:pattern.outputs") + TextFormatting.RESET);
tooltip.add(new TranslationTextComponent("misc.refinedstorage.pattern.outputs").setStyle(yellow));
}
RenderUtils.addCombinedItemsToTooltip(tooltip, true, pattern.getOutputs());
RenderUtils.addCombinedFluidsToTooltip(tooltip, true, pattern.getFluidOutputs());
if (isOredict(stack)) {
tooltip.add(TextFormatting.BLUE + I18n.format("misc.refinedstorage:pattern.oredict") + TextFormatting.RESET);
tooltip.add(new TranslationTextComponent("misc.refinedstorage.pattern.oredict").setStyle(blue));
}
if (isProcessing(stack)) {
tooltip.add(TextFormatting.BLUE + I18n.format("misc.refinedstorage:processing") + TextFormatting.RESET);
tooltip.add(new TranslationTextComponent("misc.refinedstorage.processing").setStyle(blue));
}
} else {
tooltip.add(TextFormatting.RED + I18n.format("misc.refinedstorage:pattern.invalid") + TextFormatting.RESET);
tooltip.add(new TranslationTextComponent("misc.refinedstorage.pattern.invalid").setStyle(red));
}
}
public static void setInputSlot(ItemStack pattern, int slot, ItemStack stack) {
if (!pattern.hasTagCompound()) {
pattern.setTagCompound(new CompoundNBT());
}
pattern.getTagCompound().put(String.format(NBT_INPUT_SLOT, slot), stack.serializeNBT());
}
@Nullable
public static ItemStack getInputSlot(ItemStack pattern, int slot) {
String id = String.format(NBT_INPUT_SLOT, slot);
if (!pattern.hasTagCompound() || !pattern.getTagCompound().hasKey(id)) {
return null;
}
ItemStack stack = new ItemStack(pattern.getTagCompound().getCompound(id));
if (stack.isEmpty()) {
return null;
}
return stack;
}
public static void setOutputSlot(ItemStack pattern, int slot, ItemStack stack) {
if (!pattern.hasTagCompound()) {
pattern.setTagCompound(new CompoundNBT());
}
pattern.getTagCompound().put(String.format(NBT_OUTPUT_SLOT, slot), stack.serializeNBT());
}
@Nullable
public static ItemStack getOutputSlot(ItemStack pattern, int slot) {
String id = String.format(NBT_OUTPUT_SLOT, slot);
if (!pattern.hasTagCompound() || !pattern.getTagCompound().hasKey(id)) {
return null;
}
ItemStack stack = new ItemStack(pattern.getTagCompound().getCompound(id));
if (stack.isEmpty()) {
return null;
}
return stack;
}
public static void setFluidInputSlot(ItemStack pattern, int slot, FluidStack stack) {
if (!pattern.hasTagCompound()) {
pattern.setTagCompound(new CompoundNBT());
}
pattern.getTagCompound().put(String.format(NBT_FLUID_INPUT_SLOT, slot), stack.writeToNBT(new CompoundNBT()));
}
@Nullable
public static FluidStack getFluidInputSlot(ItemStack pattern, int slot) {
String id = String.format(NBT_FLUID_INPUT_SLOT, slot);
if (!pattern.hasTagCompound() || !pattern.getTagCompound().hasKey(id)) {
return null;
}
return FluidStack.loadFluidStackFromNBT(pattern.getTagCompound().getCompound(id));
}
public static void setFluidOutputSlot(ItemStack pattern, int slot, FluidStack stack) {
if (!pattern.hasTagCompound()) {
pattern.setTagCompound(new CompoundNBT());
}
pattern.getTagCompound().put(String.format(NBT_FLUID_OUTPUT_SLOT, slot), stack.writeToNBT(new CompoundNBT()));
}
@Nullable
public static FluidStack getFluidOutputSlot(ItemStack pattern, int slot) {
String id = String.format(NBT_FLUID_OUTPUT_SLOT, slot);
if (!pattern.hasTagCompound() || !pattern.getTagCompound().hasKey(id)) {
return null;
}
return FluidStack.loadFluidStackFromNBT(pattern.getTagCompound().getCompound(id));
}
public static boolean isProcessing(ItemStack pattern) {
return pattern.hasTagCompound() && pattern.getTagCompound().hasKey(NBT_PROCESSING) && pattern.getTagCompound().getBoolean(NBT_PROCESSING);
}
public static void setProcessing(ItemStack pattern, boolean processing) {
if (!pattern.hasTagCompound()) {
pattern.setTagCompound(new CompoundNBT());
}
pattern.getTagCompound().putBoolean(NBT_PROCESSING, processing);
}
public static boolean isOredict(ItemStack pattern) {
return pattern.hasTagCompound() && pattern.getTagCompound().hasKey(NBT_OREDICT) && pattern.getTagCompound().getBoolean(NBT_OREDICT);
}
public static void setOredict(ItemStack pattern, boolean oredict) {
if (!pattern.hasTagCompound()) {
pattern.setTagCompound(new CompoundNBT());
}
pattern.getTagCompound().putBoolean(NBT_OREDICT, oredict);
}
public static void setVersion(ItemStack pattern) {
if (!pattern.hasTagCompound()) {
pattern.setTagCompound(new CompoundNBT());
}
pattern.getTagCompound().setString(NBT_VERSION, RS.VERSION);
}
@Override
public ActionResult<ItemStack> onItemRightClick(World world, PlayerEntity player, EnumHand hand) {
public ActionResult<ItemStack> onItemRightClick(World world, PlayerEntity player, Hand hand) {
if (!world.isRemote && player.isSneaking()) {
return new ActionResult<>(EnumActionResult.SUCCESS, new ItemStack(RSItems.PATTERN, player.getHeldItem(hand).getCount()));
return new ActionResult<>(ActionResultType.SUCCESS, new ItemStack(RSItems.PATTERN, player.getHeldItem(hand).getCount()));
}
return new ActionResult<>(EnumActionResult.PASS, player.getHeldItem(hand));
return new ActionResult<>(ActionResultType.PASS, player.getHeldItem(hand));
}
@Override
@@ -209,12 +122,121 @@ public class ItemPattern extends ItemBase/* implements ICraftingPatternProvider
return new CraftingPattern(world, container, stack);
}
@Override
public void onUpdate(ItemStack stack, World world, Entity entity, int slot, boolean isSelected) {
super.onUpdate(stack, world, entity, slot, isSelected);
if (!world.isRemote) {
API.instance().getOneSixMigrationHelper().migratePattern(stack);
public static void setInputSlot(ItemStack pattern, int slot, ItemStack stack) {
if (!pattern.hasTag()) {
pattern.setTag(new CompoundNBT());
}
}*/
pattern.getTag().put(String.format(NBT_INPUT_SLOT, slot), stack.serializeNBT());
}
@Nullable
public static ItemStack getInputSlot(ItemStack pattern, int slot) {
String id = String.format(NBT_INPUT_SLOT, slot);
if (!pattern.hasTag() || !pattern.getTag().contains(id)) {
return null;
}
ItemStack stack = ItemStack.read(pattern.getTag().getCompound(id));
if (stack.isEmpty()) {
return null;
}
return stack;
}
public static void setOutputSlot(ItemStack pattern, int slot, ItemStack stack) {
if (!pattern.hasTag()) {
pattern.setTag(new CompoundNBT());
}
pattern.getTag().put(String.format(NBT_OUTPUT_SLOT, slot), stack.serializeNBT());
}
@Nullable
public static ItemStack getOutputSlot(ItemStack pattern, int slot) {
String id = String.format(NBT_OUTPUT_SLOT, slot);
if (!pattern.hasTag() || !pattern.getTag().contains(id)) {
return null;
}
ItemStack stack = ItemStack.read(pattern.getTag().getCompound(id));
if (stack.isEmpty()) {
return null;
}
return stack;
}
public static void setFluidInputSlot(ItemStack pattern, int slot, FluidStack stack) {
if (!pattern.hasTag()) {
pattern.setTag(new CompoundNBT());
}
pattern.getTag().put(String.format(NBT_FLUID_INPUT_SLOT, slot), stack.writeToNBT(new CompoundNBT()));
}
@Nullable
public static FluidStack getFluidInputSlot(ItemStack pattern, int slot) {
String id = String.format(NBT_FLUID_INPUT_SLOT, slot);
if (!pattern.hasTag() || !pattern.getTag().contains(id)) {
return null;
}
return FluidStack.loadFluidStackFromNBT(pattern.getTag().getCompound(id));
}
public static void setFluidOutputSlot(ItemStack pattern, int slot, FluidStack stack) {
if (!pattern.hasTag()) {
pattern.setTag(new CompoundNBT());
}
pattern.getTag().put(String.format(NBT_FLUID_OUTPUT_SLOT, slot), stack.writeToNBT(new CompoundNBT()));
}
@Nullable
public static FluidStack getFluidOutputSlot(ItemStack pattern, int slot) {
String id = String.format(NBT_FLUID_OUTPUT_SLOT, slot);
if (!pattern.hasTag() || !pattern.getTag().contains(id)) {
return null;
}
return FluidStack.loadFluidStackFromNBT(pattern.getTag().getCompound(id));
}
public static boolean isProcessing(ItemStack pattern) {
return pattern.hasTag() && pattern.getTag().contains(NBT_PROCESSING) && pattern.getTag().getBoolean(NBT_PROCESSING);
}
public static void setProcessing(ItemStack pattern, boolean processing) {
if (!pattern.hasTag()) {
pattern.setTag(new CompoundNBT());
}
pattern.getTag().putBoolean(NBT_PROCESSING, processing);
}
public static boolean isOredict(ItemStack pattern) {
return pattern.hasTag() && pattern.getTag().contains(NBT_OREDICT) && pattern.getTag().getBoolean(NBT_OREDICT);
}
public static void setOredict(ItemStack pattern, boolean oredict) {
if (!pattern.hasTag()) {
pattern.setTag(new CompoundNBT());
}
pattern.getTag().putBoolean(NBT_OREDICT, oredict);
}
public static void setVersion(ItemStack pattern) {
if (!pattern.hasTag()) {
pattern.setTag(new CompoundNBT());
}
pattern.getTag().putInt(NBT_VERSION, VERSION);
}
}

View File

@@ -5,7 +5,7 @@ import com.raoulvdberge.refinedstorage.RSItems;
import com.raoulvdberge.refinedstorage.apiimpl.storage.ItemStorageType;
import net.minecraft.item.Item;
public class ItemStoragePart extends ItemBase {
public class ItemStoragePart extends Item {
public ItemStoragePart(ItemStorageType type) {
super(new Item.Properties().group(RS.MAIN_GROUP));

View File

@@ -1,43 +1,47 @@
package com.raoulvdberge.refinedstorage.item;
import com.raoulvdberge.refinedstorage.RS;
import com.raoulvdberge.refinedstorage.item.info.ItemInfo;
import com.raoulvdberge.refinedstorage.api.network.security.Permission;
import com.raoulvdberge.refinedstorage.tile.TileNode;
import com.raoulvdberge.refinedstorage.util.WorldUtils;
import net.minecraft.block.BlockState;
import net.minecraft.item.Item;
import net.minecraft.item.ItemUseContext;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.ActionResultType;
import net.minecraft.util.Rotation;
public class ItemWrench extends ItemBase {
public class ItemWrench extends Item {
public ItemWrench() {
super(new ItemInfo(RS.ID, "wrench"));
super(new Item.Properties().group(RS.MAIN_GROUP).maxStackSize(1));
//setMaxStackSize(1);
}
/* TODO
@Override
@SideOnly(Side.CLIENT)
public void registerModels(IModelRegistration modelRegistration) {
modelRegistration.setModel(this, 0, new ModelResourceLocation(info.getId(), "inventory"));
this.setRegistryName(RS.ID, "wrench");
}
@Override
public EnumActionResult onItemUse(PlayerEntity player, World world, BlockPos pos, EnumHand hand, EnumFacing facing, float hitX, float hitY, float hitZ) {
if (!player.isSneaking()) {
return EnumActionResult.FAIL;
public ActionResultType onItemUse(ItemUseContext ctx) {
if (!ctx.getPlayer().isSneaking()) {
return ActionResultType.FAIL;
}
if (world.isRemote) {
return EnumActionResult.SUCCESS;
if (ctx.getWorld().isRemote) {
return ActionResultType.SUCCESS;
}
TileEntity tile = world.getTileEntity(pos);
TileEntity tile = ctx.getWorld().getTileEntity(ctx.getPos());
if (tile instanceof TileNode && ((TileNode) tile).getNode().getNetwork() != null && !((TileNode) tile).getNode().getNetwork().getSecurityManager().hasPermission(Permission.BUILD, player)) {
WorldUtils.sendNoPermissionMessage(player);
// TODO - Better INetworkNode check
if (tile instanceof TileNode &&
((TileNode) tile).getNode().getNetwork() != null &&
!((TileNode) tile).getNode().getNetwork().getSecurityManager().hasPermission(Permission.BUILD, ctx.getPlayer())) {
WorldUtils.sendNoPermissionMessage(ctx.getPlayer());
return EnumActionResult.FAIL;
return ActionResultType.FAIL;
}
IBlockState state = world.getBlockState(pos);
Block block = state.getBlock();
BlockState state = ctx.getWorld().getBlockState(ctx.getPos());
/* TODO - Covers
if (block instanceof BlockCable && tile instanceof TileNode && ((TileNode) tile).getNode() instanceof ICoverable) {
CoverManager manager = ((ICoverable) ((TileNode) tile).getNode()).getCoverManager();
@@ -63,13 +67,13 @@ public class ItemWrench extends ItemBase {
InventoryHelper.spawnItemStack(world, pos.getX(), pos.getY(), pos.getZ(), cover);
return EnumActionResult.SUCCESS;
return ActionResultType.SUCCESS;
}
}
}
}*/
block.rotateBlock(world, pos, player.getHorizontalFacing().getOpposite());
ctx.getWorld().setBlockState(ctx.getPos(), state.rotate(Rotation.CLOCKWISE_90));
return EnumActionResult.SUCCESS;
}*/
return ActionResultType.SUCCESS;
}
}

View File

@@ -24,6 +24,7 @@ import net.minecraft.util.BlockRenderLayer;
import net.minecraft.util.Direction;
import net.minecraft.util.NonNullList;
import net.minecraft.util.text.ITextComponent;
import net.minecraft.util.text.StringTextComponent;
import net.minecraft.util.text.TextFormatting;
import net.minecraftforge.client.ForgeHooksClient;
import net.minecraftforge.client.MinecraftForgeClient;
@@ -235,14 +236,14 @@ public final class RenderUtils {
}
}
public static void addCombinedItemsToTooltip(List<String> tooltip, boolean displayAmount, List<ItemStack> stacks) {
public static void addCombinedItemsToTooltip(List<ITextComponent> tooltip, boolean displayAmount, List<ItemStack> stacks) {
Set<Integer> combinedIndices = new HashSet<>();
for (int i = 0; i < stacks.size(); ++i) {
if (!stacks.get(i).isEmpty() && !combinedIndices.contains(i)) {
ItemStack stack = stacks.get(i);
String data = stack.getDisplayName().getString(); // TODO does this work
ITextComponent data = stack.getDisplayName();
int amount = stack.getCount();
@@ -254,21 +255,23 @@ public final class RenderUtils {
}
}
data = (displayAmount ? (String.valueOf(amount) + "x ") : "") + data;
if (displayAmount) {
data = new StringTextComponent(amount + "x ").appendSibling(data);
}
tooltip.add(data);
}
}
}
public static void addCombinedFluidsToTooltip(List<String> tooltip, boolean showMb, NonNullList<FluidStack> stacks) {
public static void addCombinedFluidsToTooltip(List<ITextComponent> tooltip, boolean displayMb, NonNullList<FluidStack> stacks) {
Set<Integer> combinedIndices = new HashSet<>();
for (int i = 0; i < stacks.size(); ++i) {
if (!combinedIndices.contains(i)) {
FluidStack stack = stacks.get(i);
String data = stack.getDisplayName().getString(); // TODO does this work
ITextComponent data = stack.getDisplayName();
int amount = stack.getAmount();
@@ -280,7 +283,11 @@ public final class RenderUtils {
}
}
tooltip.add((showMb ? (API.instance().getQuantityFormatter().formatInBucketForm(amount) + " ") : "") + data);
if (displayMb) {
data = new StringTextComponent(API.instance().getQuantityFormatter().formatInBucketForm(amount) + " ").appendSibling(data);
}
tooltip.add(data);
}
}
}

View File

@@ -97,10 +97,10 @@
"misc.refinedstorage:network_item.out_of_range": "There is no Wireless Transmitter in range.",
"misc.refinedstorage:network_item.not_found": "Controller not found.",
"misc.refinedstorage.network_card.tooltip": "Linked to %d, %d, %d.",
"misc.refinedstorage:pattern.inputs": "Inputs",
"misc.refinedstorage:pattern.outputs": "Outputs",
"misc.refinedstorage:pattern.invalid": "Invalid pattern",
"misc.refinedstorage:pattern.oredict": "Uses ore dictionary",
"misc.refinedstorage.pattern.inputs": "Inputs",
"misc.refinedstorage.pattern.outputs": "Outputs",
"misc.refinedstorage.pattern.invalid": "Invalid pattern",
"misc.refinedstorage.pattern.oredict": "Uses ore dictionary",
"misc.refinedstorage:security.no_permission": "You have no permission to perform that action.",
"misc.refinedstorage:start": "Start",
"misc.refinedstorage:clear": "Clear",
@@ -108,7 +108,7 @@
"misc.refinedstorage:cancel_all": "Cancel All",
"misc.refinedstorage:priority": "Priority",
"misc.refinedstorage:oredict": "Oredict",
"misc.refinedstorage:processing": "Processing",
"misc.refinedstorage.processing": "Processing",
"misc.refinedstorage:reader_writer.redstone": "Redstone strength: %d",
"misc.refinedstorage:total": "%s total",
"misc.refinedstorage:last_modified.just_now": "Last modified just now by %s",
@@ -255,7 +255,7 @@
"item.refinedstorage.256k_fluid_storage_part": "256k Fluid Storage Part",
"item.refinedstorage.1024k_fluid_storage_part": "1024k Fluid Storage Part",
"item.refinedstorage.4096k_fluid_storage_part": "4096k Fluid Storage Part",
"item.refinedstorage:pattern": "Pattern",
"item.refinedstorage.pattern": "Pattern",
"item.refinedstorage.upgrade": "Upgrade",
"item.refinedstorage.range_upgrade": "Range Upgrade",
"item.refinedstorage.speed_upgrade": "Speed Upgrade",
@@ -268,7 +268,7 @@
"item.refinedstorage.storage_housing": "Storage Housing",
"item.refinedstorage:filter": "Filter",
"item.refinedstorage.network_card": "Network Card",
"item.refinedstorage:wrench": "Wrench",
"item.refinedstorage.wrench": "Wrench",
"item.refinedstorage.security_card": "Security Card",
"item.refinedstorage.security_card.owner": "Bound to: %s",
"item.refinedstorage.cutting_tool": "Cutting Tool",

View File

@@ -7,8 +7,7 @@
],
"key": {
"G": {
"type": "forge:ore_dict",
"ore": "blockGlass"
"tag": "forge:glass"
},
"R": {
"item": "minecraft:redstone"

View File

@@ -10,7 +10,7 @@
"item": "refinedstorage:quartz_enriched_iron"
},
"P": {
"item": "#basic_processor"
"item": "refinedstorage:basic_processor"
}
},
"result": {