Move away more helpers

This commit is contained in:
Raoul Van den Berge
2016-07-19 05:04:50 +02:00
parent fc0184cbfd
commit 77c1a2dbd0
21 changed files with 104 additions and 113 deletions

View File

@@ -9,20 +9,11 @@ import net.minecraft.nbt.NBTTagList;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.EnumFacing;
import net.minecraft.util.EnumHand;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.World;
import net.minecraftforge.common.util.Constants;
import net.minecraftforge.items.CapabilityItemHandler;
import net.minecraftforge.items.IItemHandler;
import net.minecraftforge.items.wrapper.InvWrapper;
import net.minecraftforge.items.wrapper.SidedInvWrapper;
import refinedstorage.api.autocrafting.ICraftingPattern;
import refinedstorage.api.network.INetworkMaster;
import refinedstorage.api.storage.CompareUtils;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
public final class RefinedStorageUtils {
private static final String NBT_INVENTORY = "Inventory_%d";
@@ -140,10 +131,6 @@ public final class RefinedStorageUtils {
}
}
public static void updateBlock(World world, BlockPos pos) {
world.notifyBlockUpdate(pos, world.getBlockState(pos), world.getBlockState(pos), 1 | 2);
}
public static IItemHandler getItemHandler(TileEntity tile, EnumFacing side) {
if (tile == null) {
return null;
@@ -161,66 +148,4 @@ public final class RefinedStorageUtils {
return handler;
}
public static int calculateOffsetOnScale(int pos, float scale) {
float multiplier = (pos / scale);
return (int) multiplier;
}
public static void combineMultipleItemsInTooltip(List<String> lines, ItemStack... stacks) {
Set<Integer> combinedIndices = new HashSet<Integer>();
for (int i = 0; i < stacks.length; ++i) {
if (!combinedIndices.contains(i)) {
String data = stacks[i].getDisplayName();
int amount = stacks[i].stackSize;
for (int j = i + 1; j < stacks.length; ++j) {
if (CompareUtils.compareStack(stacks[i], stacks[j])) {
amount += stacks[j].stackSize;
combinedIndices.add(j);
}
}
if (amount != 1) {
data += " (" + amount + "x)";
}
lines.add(data);
}
}
}
// Keep this on par with the Forestry generators (1 EU is worth 4 RF)
public static int convertIC2ToRF(double amount) {
// IC2 passes infinity sometimes as a simulate test
if (amount >= Double.POSITIVE_INFINITY) {
return Integer.MAX_VALUE;
}
return (int) Math.floor(amount) * 4;
}
public static double convertRFToIC2(int amount) {
return Math.floor(amount / 4);
}
public static ItemStack extractItem(INetworkMaster network, ItemStack stack, int size) {
return network.extractItem(stack, size, CompareUtils.COMPARE_DAMAGE | CompareUtils.COMPARE_NBT);
}
public static ICraftingPattern getPattern(INetworkMaster network, ItemStack stack) {
return network.getPattern(stack, CompareUtils.COMPARE_DAMAGE | CompareUtils.COMPARE_NBT);
}
public static boolean hasPattern(INetworkMaster network, ItemStack stack) {
return RefinedStorageUtils.getPattern(network, stack) != null;
}
public static int getItemStackHashCode(ItemStack stack) {
return stack.getItem().hashCode() * (stack.getItemDamage() + 1) * (stack.hasTagCompound() ? stack.getTagCompound().hashCode() : 1);
}
}

View File

@@ -9,6 +9,7 @@ import refinedstorage.RefinedStorageUtils;
import refinedstorage.api.autocrafting.ICraftingPattern;
import refinedstorage.api.autocrafting.ICraftingTask;
import refinedstorage.api.network.INetworkMaster;
import refinedstorage.apiimpl.network.NetworkUtils;
import java.util.ArrayList;
import java.util.List;
@@ -67,14 +68,14 @@ public class BasicCraftingTask implements ICraftingTask {
if (!satisfied[i]) {
done = false;
ItemStack took = RefinedStorageUtils.extractItem(network, input, 1);
ItemStack took = NetworkUtils.extractItem(network, input, 1);
if (took != null) {
itemsTook.add(took);
satisfied[i] = true;
} else if (!childTasks[i]) {
ICraftingPattern pattern = RefinedStorageUtils.getPattern(network, input);
ICraftingPattern pattern = NetworkUtils.getPattern(network, input);
if (pattern != null) {
network.addCraftingTask(network.createCraftingTask(pattern));

View File

@@ -10,6 +10,7 @@ import refinedstorage.api.autocrafting.ICraftingPatternContainer;
import refinedstorage.api.autocrafting.ICraftingTask;
import refinedstorage.api.network.INetworkMaster;
import refinedstorage.api.storage.CompareUtils;
import refinedstorage.apiimpl.network.NetworkUtils;
public class ProcessingCraftingTask implements ICraftingTask {
public static final int ID = 1;
@@ -53,7 +54,7 @@ public class ProcessingCraftingTask implements ICraftingTask {
for (int i = 0; i < inserted.length; ++i) {
if (!inserted[i]) {
ItemStack input = pattern.getInputs()[i];
ItemStack took = RefinedStorageUtils.extractItem(network, input, 1);
ItemStack took = NetworkUtils.extractItem(network, input, 1);
if (took != null) {
if (ItemHandlerHelper.insertItem(container.getConnectedItems(), took, true) == null) {
@@ -64,7 +65,7 @@ public class ProcessingCraftingTask implements ICraftingTask {
network.insertItem(took, took.stackSize, false);
}
} else if (!childTasks[i]) {
ICraftingPattern pattern = RefinedStorageUtils.getPattern(network, input);
ICraftingPattern pattern = NetworkUtils.getPattern(network, input);
if (pattern != null) {
childTasks[i] = true;

View File

@@ -3,7 +3,6 @@ package refinedstorage.apiimpl.network;
import net.minecraft.entity.player.EntityPlayerMP;
import net.minecraft.inventory.InventoryHelper;
import net.minecraft.item.ItemStack;
import refinedstorage.RefinedStorageUtils;
import refinedstorage.api.autocrafting.ICraftingPattern;
import refinedstorage.api.autocrafting.ICraftingTask;
import refinedstorage.api.network.GridExtractFlags;
@@ -58,7 +57,7 @@ public class GridHandler implements IGridHandler {
size = Math.min(size, item.getItem().getItemStackLimit(item));
ItemStack took = RefinedStorageUtils.extractItem(network, item, size);
ItemStack took = NetworkUtils.extractItem(network, item, size);
if (took != null) {
if ((flags & GridExtractFlags.EXTRACT_SHIFT) == GridExtractFlags.EXTRACT_SHIFT) {
@@ -126,7 +125,7 @@ public class GridHandler implements IGridHandler {
int quantityPerRequest = 0;
ICraftingPattern pattern = RefinedStorageUtils.getPattern(network, stack);
ICraftingPattern pattern = NetworkUtils.getPattern(network, stack);
if (pattern != null) {
for (ItemStack output : pattern.getOutputs()) {

View File

@@ -0,0 +1,32 @@
package refinedstorage.apiimpl.network;
import net.minecraft.item.ItemStack;
import refinedstorage.api.autocrafting.ICraftingPattern;
import refinedstorage.api.network.INetworkMaster;
import refinedstorage.api.storage.CompareUtils;
public final class NetworkUtils {
public static int convertIC2ToRF(double amount) {
return amount >= Double.POSITIVE_INFINITY ? Integer.MAX_VALUE : ((int) Math.floor(amount) * 4);
}
public static double convertRFToIC2(int amount) {
return Math.floor(amount / 4);
}
public static ItemStack extractItem(INetworkMaster network, ItemStack stack, int size) {
return network.extractItem(stack, size, CompareUtils.COMPARE_DAMAGE | CompareUtils.COMPARE_NBT);
}
public static ICraftingPattern getPattern(INetworkMaster network, ItemStack stack) {
return network.getPattern(stack, CompareUtils.COMPARE_DAMAGE | CompareUtils.COMPARE_NBT);
}
public static boolean hasPattern(INetworkMaster network, ItemStack stack) {
return getPattern(network, stack) != null;
}
public static int getItemStackHashCode(ItemStack stack) {
return stack.getItem().hashCode() * (stack.getItemDamage() + 1) * (stack.hasTagCompound() ? stack.getTagCompound().hashCode() : 1);
}
}

View File

@@ -4,8 +4,8 @@ import io.netty.buffer.ByteBuf;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraftforge.fml.common.network.ByteBufUtils;
import refinedstorage.RefinedStorageUtils;
import refinedstorage.api.network.INetworkMaster;
import refinedstorage.apiimpl.network.NetworkUtils;
public class ClientStack {
private int id;
@@ -47,7 +47,7 @@ public class ClientStack {
buf.writeInt(stack.stackSize);
buf.writeInt(stack.getItemDamage());
ByteBufUtils.writeTag(buf, stack.getTagCompound());
buf.writeInt(RefinedStorageUtils.getItemStackHashCode(stack));
buf.writeBoolean(RefinedStorageUtils.hasPattern(network, stack));
buf.writeInt(NetworkUtils.getItemStackHashCode(stack));
buf.writeBoolean(NetworkUtils.hasPattern(network, stack));
}
}

View File

@@ -4,7 +4,6 @@ import com.google.common.collect.ArrayListMultimap;
import com.google.common.collect.Multimap;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import refinedstorage.RefinedStorageUtils;
import refinedstorage.api.autocrafting.ICraftingPattern;
import refinedstorage.api.network.INetworkMaster;
import refinedstorage.api.network.INetworkNode;
@@ -12,6 +11,7 @@ import refinedstorage.api.storage.CompareUtils;
import refinedstorage.api.storage.IGroupedStorage;
import refinedstorage.api.storage.IStorage;
import refinedstorage.api.storage.IStorageProvider;
import refinedstorage.apiimpl.network.NetworkUtils;
import java.util.ArrayList;
import java.util.Collection;
@@ -83,7 +83,7 @@ public class GroupedStorage implements IGroupedStorage {
otherStack.stackSize -= stack.stackSize;
if (otherStack.stackSize == 0) {
if (!RefinedStorageUtils.hasPattern(network, stack)) {
if (!NetworkUtils.hasPattern(network, stack)) {
stacks.remove(otherStack.getItem(), otherStack);
}
}
@@ -109,7 +109,7 @@ public class GroupedStorage implements IGroupedStorage {
@Override
public ItemStack get(int id) {
for (ItemStack stack : this.stacks.values()) {
if (RefinedStorageUtils.getItemStackHashCode(stack) == id) {
if (NetworkUtils.getItemStackHashCode(stack) == id) {
return stack;
}
}

View File

@@ -17,7 +17,6 @@ import net.minecraft.world.IBlockAccess;
import net.minecraft.world.World;
import net.minecraftforge.items.IItemHandler;
import refinedstorage.RefinedStorage;
import refinedstorage.RefinedStorageUtils;
import refinedstorage.item.ItemBlockBase;
import refinedstorage.tile.TileBase;
@@ -91,7 +90,7 @@ public abstract class BlockBase extends Block {
tile.setDirection(getPlacementType().getNext(tile.getDirection()));
RefinedStorageUtils.updateBlock(world, pos);
tile.updateBlock();
return true;
}

View File

@@ -278,4 +278,10 @@ public abstract class GuiBase extends GuiContainer {
public int getGuiTop() {
return guiTop;
}
public static int calculateOffsetOnScale(int pos, float scale) {
float multiplier = (pos / scale);
return (int) multiplier;
}
}

View File

@@ -2,7 +2,6 @@ package refinedstorage.gui;
import net.minecraft.client.renderer.GlStateManager;
import net.minecraft.client.renderer.RenderHelper;
import refinedstorage.RefinedStorageUtils;
import refinedstorage.container.ContainerController;
import refinedstorage.gui.sidebutton.SideButtonRedstoneMode;
import refinedstorage.tile.controller.ClientNode;
@@ -77,8 +76,8 @@ public class GuiController extends GuiBase {
GlStateManager.pushMatrix();
GlStateManager.scale(scale, scale, 1);
drawString(RefinedStorageUtils.calculateOffsetOnScale(x + 1, scale), RefinedStorageUtils.calculateOffsetOnScale(y - 2, scale), node.stack.getDisplayName());
drawString(RefinedStorageUtils.calculateOffsetOnScale(x + 21, scale), RefinedStorageUtils.calculateOffsetOnScale(y + 10, scale), t("gui.refinedstorage:controller.machine_amount", node.amount));
drawString(calculateOffsetOnScale(x + 1, scale), calculateOffsetOnScale(y - 2, scale), node.stack.getDisplayName());
drawString(calculateOffsetOnScale(x + 21, scale), calculateOffsetOnScale(y + 10, scale), t("gui.refinedstorage:controller.machine_amount", node.amount));
GlStateManager.popMatrix();

View File

@@ -5,7 +5,6 @@ import net.minecraft.client.renderer.GlStateManager;
import net.minecraft.client.renderer.RenderHelper;
import net.minecraft.util.text.TextFormatting;
import refinedstorage.RefinedStorage;
import refinedstorage.RefinedStorageUtils;
import refinedstorage.container.ContainerCraftingMonitor;
import refinedstorage.gui.sidebutton.SideButtonRedstoneMode;
import refinedstorage.network.MessageCraftingMonitorCancel;
@@ -110,7 +109,7 @@ public class GuiCraftingMonitor extends GuiBase {
GlStateManager.pushMatrix();
GlStateManager.scale(scale, scale, 1);
drawString(RefinedStorageUtils.calculateOffsetOnScale(x + 5, scale), RefinedStorageUtils.calculateOffsetOnScale(y + 4, scale), task.output.getDisplayName());
drawString(calculateOffsetOnScale(x + 5, scale), calculateOffsetOnScale(y + 4, scale), task.output.getDisplayName());
GlStateManager.popMatrix();

View File

@@ -13,9 +13,11 @@ import net.minecraft.util.text.TextFormatting;
import net.minecraft.world.World;
import net.minecraftforge.common.util.Constants;
import refinedstorage.RefinedStorageItems;
import refinedstorage.RefinedStorageUtils;
import refinedstorage.api.storage.CompareUtils;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
public class ItemPattern extends ItemBase {
public static final String NBT_INPUTS = "Inputs";
@@ -33,12 +35,38 @@ public class ItemPattern extends ItemBase {
if (GuiScreen.isShiftKeyDown() || isProcessing(pattern)) {
list.add(TextFormatting.YELLOW + I18n.format("misc.refinedstorage:pattern.inputs") + TextFormatting.RESET);
RefinedStorageUtils.combineMultipleItemsInTooltip(list, getInputs(pattern));
combineItems(list, getInputs(pattern));
list.add(TextFormatting.YELLOW + I18n.format("misc.refinedstorage:pattern.outputs") + TextFormatting.RESET);
}
RefinedStorageUtils.combineMultipleItemsInTooltip(list, getOutputs(pattern));
combineItems(list, getOutputs(pattern));
}
}
private void combineItems(List<String> lines, ItemStack... stacks) {
Set<Integer> combinedIndices = new HashSet<Integer>();
for (int i = 0; i < stacks.length; ++i) {
if (!combinedIndices.contains(i)) {
String data = stacks[i].getDisplayName();
int amount = stacks[i].stackSize;
for (int j = i + 1; j < stacks.length; ++j) {
if (CompareUtils.compareStack(stacks[i], stacks[j])) {
amount += stacks[j].stackSize;
combinedIndices.add(j);
}
}
if (amount != 1) {
data += " (" + amount + "x)";
}
lines.add(data);
}
}
}

View File

@@ -31,8 +31,8 @@ import refinedstorage.tile.grid.TileGrid;
import javax.annotation.Nullable;
import java.util.List;
import static refinedstorage.RefinedStorageUtils.convertIC2ToRF;
import static refinedstorage.RefinedStorageUtils.convertRFToIC2;
import static refinedstorage.apiimpl.network.NetworkUtils.convertIC2ToRF;
import static refinedstorage.apiimpl.network.NetworkUtils.convertRFToIC2;
@Optional.InterfaceList({
@Optional.Interface(iface = "ic2.api.item.ISpecialElectricItem", modid = "IC2"),

View File

@@ -13,7 +13,6 @@ import net.minecraft.util.math.BlockPos;
import net.minecraft.world.World;
import net.minecraftforge.items.IItemHandler;
import refinedstorage.RefinedStorage;
import refinedstorage.RefinedStorageUtils;
import refinedstorage.network.MessageTileContainerUpdate;
import javax.annotation.Nullable;
@@ -40,6 +39,10 @@ public abstract class TileBase extends TileEntity implements ITickable {
}
}
public void updateBlock() {
worldObj.notifyBlockUpdate(pos, worldObj.getBlockState(pos), worldObj.getBlockState(pos), 1 | 2);
}
public void setDirection(EnumFacing direction) {
this.direction = direction;
@@ -69,7 +72,7 @@ public abstract class TileBase extends TileEntity implements ITickable {
public void readUpdate(NBTTagCompound tag) {
direction = EnumFacing.getFront(tag.getInteger(NBT_DIRECTION));
RefinedStorageUtils.updateBlock(worldObj, pos);
updateBlock();
}
@Override

View File

@@ -82,7 +82,7 @@ public class TileDetector extends TileNode implements ICompareConfig {
worldObj.notifyNeighborsOfStateChange(pos, RefinedStorageBlocks.DETECTOR);
RefinedStorageUtils.updateBlock(worldObj, pos);
updateBlock();
}
super.update();

View File

@@ -105,7 +105,7 @@ public class TileDiskDrive extends TileNode implements IStorageProvider, IStorag
if (stored != getStoredForDisplayServer()) {
stored = getStoredForDisplayServer();
RefinedStorageUtils.updateBlock(worldObj, pos);
updateBlock();
}
}

View File

@@ -4,7 +4,6 @@ import io.netty.buffer.ByteBuf;
import net.minecraft.block.Block;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.util.math.BlockPos;
import refinedstorage.RefinedStorageUtils;
import refinedstorage.api.network.INetworkMaster;
import refinedstorage.api.network.INetworkNode;
import refinedstorage.block.BlockNode;
@@ -46,7 +45,7 @@ public abstract class TileNode extends TileBase implements INetworkNode, ISynchr
}
if (active != isActive() && canSendConnectivityUpdate()) {
RefinedStorageUtils.updateBlock(worldObj, pos);
updateBlock();
active = isActive();
}

View File

@@ -86,7 +86,7 @@ public class TileSolderer extends TileNode {
}
if (wasWorking != working) {
RefinedStorageUtils.updateBlock(worldObj, pos);
updateBlock();
}
}

View File

@@ -3,8 +3,8 @@ package refinedstorage.tile.controller;
import ic2.api.energy.prefab.BasicSink;
import net.minecraft.util.EnumFacing;
import static refinedstorage.RefinedStorageUtils.convertIC2ToRF;
import static refinedstorage.RefinedStorageUtils.convertRFToIC2;
import static refinedstorage.apiimpl.network.NetworkUtils.convertIC2ToRF;
import static refinedstorage.apiimpl.network.NetworkUtils.convertRFToIC2;
public class IC2Energy {
private BasicSink sink;

View File

@@ -23,7 +23,6 @@ import net.minecraftforge.fml.common.network.ByteBufUtils;
import net.minecraftforge.items.ItemHandlerHelper;
import refinedstorage.RefinedStorage;
import refinedstorage.RefinedStorageBlocks;
import refinedstorage.RefinedStorageUtils;
import refinedstorage.api.autocrafting.ICraftingPattern;
import refinedstorage.api.autocrafting.ICraftingPatternContainer;
import refinedstorage.api.autocrafting.ICraftingTask;
@@ -195,7 +194,7 @@ public class TileController extends TileBase implements INetworkMaster, IEnergyR
if (getEnergyScaledForDisplay() != lastEnergyDisplay) {
lastEnergyDisplay = getEnergyScaledForDisplay();
RefinedStorageUtils.updateBlock(worldObj, pos);
updateBlock();
}
if (getEnergyScaledForComparator() != lastEnergyComparator) {

View File

@@ -16,6 +16,7 @@ import refinedstorage.RefinedStorageItems;
import refinedstorage.RefinedStorageUtils;
import refinedstorage.api.network.IGridHandler;
import refinedstorage.api.storage.CompareUtils;
import refinedstorage.apiimpl.network.NetworkUtils;
import refinedstorage.block.BlockGrid;
import refinedstorage.block.EnumGridType;
import refinedstorage.container.ContainerGrid;
@@ -152,7 +153,7 @@ public class TileGrid extends TileNode implements IGrid {
} else {
if (slot != null) {
if (slot.stackSize == 1 && isConnected()) {
matrix.setInventorySlotContents(i, RefinedStorageUtils.extractItem(network, slot, 1));
matrix.setInventorySlotContents(i, NetworkUtils.extractItem(network, slot, 1));
} else {
matrix.decrStackSize(i, 1);
}
@@ -246,7 +247,7 @@ public class TileGrid extends TileNode implements IGrid {
if (getType() == EnumGridType.CRAFTING) {
for (ItemStack possibility : possibilities) {
ItemStack took = RefinedStorageUtils.extractItem(network, possibility, 1);
ItemStack took = NetworkUtils.extractItem(network, possibility, 1);
if (took != null) {
matrix.setInventorySlotContents(i, took);