Porting
This commit is contained in:
		@@ -1,4 +1,4 @@
 | 
				
			|||||||
# Refined Storage [](https://ci.refinedmods.com/job/refinedstorage-mc1.15/) [](http://minecraft.curseforge.com/projects/refined-storage)
 | 
					# Refined Storage [](https://ci.refinedmods.com/job/refinedstorage-mc1.16/) [](http://minecraft.curseforge.com/projects/refined-storage)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
**Refined Storage is a mass storage mod for Minecraft that offers the player a network-based storage system, allowing them to store items and fluids on a massively expandable device network.**
 | 
					**Refined Storage is a mass storage mod for Minecraft that offers the player a network-based storage system, allowing them to store items and fluids on a massively expandable device network.**
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,5 +1,6 @@
 | 
				
			|||||||
package com.refinedmods.refinedstorage.api.network.grid;
 | 
					package com.refinedmods.refinedstorage.api.network.grid;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import com.mojang.blaze3d.matrix.MatrixStack;
 | 
				
			||||||
import com.refinedmods.refinedstorage.api.render.IElementDrawer;
 | 
					import com.refinedmods.refinedstorage.api.render.IElementDrawer;
 | 
				
			||||||
import com.refinedmods.refinedstorage.api.util.IFilter;
 | 
					import com.refinedmods.refinedstorage.api.util.IFilter;
 | 
				
			||||||
import net.minecraft.client.gui.FontRenderer;
 | 
					import net.minecraft.client.gui.FontRenderer;
 | 
				
			||||||
@@ -23,19 +24,21 @@ public interface IGridTab {
 | 
				
			|||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * Draws the tooltip of this tab at the given position.
 | 
					     * Draws the tooltip of this tab at the given position.
 | 
				
			||||||
     *
 | 
					     *
 | 
				
			||||||
 | 
					     * @param matrixStack  the matrix stack
 | 
				
			||||||
     * @param x            the x position
 | 
					     * @param x            the x position
 | 
				
			||||||
     * @param y            the y position
 | 
					     * @param y            the y position
 | 
				
			||||||
     * @param screenWidth  the screen width
 | 
					     * @param screenWidth  the screen width
 | 
				
			||||||
     * @param screenHeight the screen height
 | 
					     * @param screenHeight the screen height
 | 
				
			||||||
     * @param fontRenderer the font renderer
 | 
					     * @param fontRenderer the font renderer
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    void drawTooltip(int x, int y, int screenWidth, int screenHeight, FontRenderer fontRenderer);
 | 
					    void drawTooltip(MatrixStack matrixStack, int x, int y, int screenWidth, int screenHeight, FontRenderer fontRenderer);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * Draws the icon.
 | 
					     * Draws the icon.
 | 
				
			||||||
     *
 | 
					     *
 | 
				
			||||||
 | 
					     * @param matrixStack the matrix stack
 | 
				
			||||||
     * @param x           the x position
 | 
					     * @param x           the x position
 | 
				
			||||||
     * @param y           the y position
 | 
					     * @param y           the y position
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    void drawIcon(int x, int y, IElementDrawer<ItemStack> itemDrawer, IElementDrawer<FluidStack> fluidDrawer);
 | 
					    void drawIcon(MatrixStack matrixStack, int x, int y, IElementDrawer<ItemStack> itemDrawer, IElementDrawer<FluidStack> fluidDrawer);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -45,7 +45,7 @@ public class CraftingGridBehavior implements ICraftingGridBehavior {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
                        // If there is no space in the network, just dump it in the world.
 | 
					                        // If there is no space in the network, just dump it in the world.
 | 
				
			||||||
                        if (!remainderStack.isEmpty()) {
 | 
					                        if (!remainderStack.isEmpty()) {
 | 
				
			||||||
                            InventoryHelper.spawnItemStack(player.getEntityWorld(), player.getPosition().getX(), player.getPosition().getY(), player.getPosition().getZ(), remainderStack);
 | 
					                            InventoryHelper.spawnItemStack(player.getEntityWorld(), player.getPosX(), player.getPosY(), player.getPosZ(), remainderStack);
 | 
				
			||||||
                        }
 | 
					                        }
 | 
				
			||||||
                    }
 | 
					                    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -127,7 +127,7 @@ public class CraftingGridBehavior implements ICraftingGridBehavior {
 | 
				
			|||||||
                }
 | 
					                }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                if (!remainder.isEmpty()) {
 | 
					                if (!remainder.isEmpty()) {
 | 
				
			||||||
                    InventoryHelper.spawnItemStack(player.getEntityWorld(), player.getPosition().getX(), player.getPosition().getY(), player.getPosition().getZ(), remainder);
 | 
					                    InventoryHelper.spawnItemStack(player.getEntityWorld(), player.getPosX(), player.getPosY(), player.getPosZ(), remainder);
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,11 +1,14 @@
 | 
				
			|||||||
package com.refinedmods.refinedstorage.apiimpl.network.grid;
 | 
					package com.refinedmods.refinedstorage.apiimpl.network.grid;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import com.mojang.blaze3d.matrix.MatrixStack;
 | 
				
			||||||
import com.mojang.blaze3d.systems.RenderSystem;
 | 
					import com.mojang.blaze3d.systems.RenderSystem;
 | 
				
			||||||
import com.refinedmods.refinedstorage.api.network.grid.IGridTab;
 | 
					import com.refinedmods.refinedstorage.api.network.grid.IGridTab;
 | 
				
			||||||
import com.refinedmods.refinedstorage.api.render.IElementDrawer;
 | 
					import com.refinedmods.refinedstorage.api.render.IElementDrawer;
 | 
				
			||||||
import com.refinedmods.refinedstorage.api.util.IFilter;
 | 
					import com.refinedmods.refinedstorage.api.util.IFilter;
 | 
				
			||||||
import net.minecraft.client.gui.FontRenderer;
 | 
					import net.minecraft.client.gui.FontRenderer;
 | 
				
			||||||
 | 
					import net.minecraft.client.renderer.RenderHelper;
 | 
				
			||||||
import net.minecraft.item.ItemStack;
 | 
					import net.minecraft.item.ItemStack;
 | 
				
			||||||
 | 
					import net.minecraft.util.text.StringTextComponent;
 | 
				
			||||||
import net.minecraftforge.fluids.FluidStack;
 | 
					import net.minecraftforge.fluids.FluidStack;
 | 
				
			||||||
import net.minecraftforge.fml.client.gui.GuiUtils;
 | 
					import net.minecraftforge.fml.client.gui.GuiUtils;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -35,16 +38,16 @@ public class GridTab implements IGridTab {
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
    public void drawTooltip(int x, int y, int screenWidth, int screenHeight, FontRenderer fontRenderer) {
 | 
					    public void drawTooltip(MatrixStack matrixStack, int x, int y, int screenWidth, int screenHeight, FontRenderer fontRenderer) {
 | 
				
			||||||
        if (!name.trim().equals("")) {
 | 
					        if (!name.trim().equals("")) {
 | 
				
			||||||
            GuiUtils.drawHoveringText(Collections.singletonList(name), x, y, screenWidth, screenHeight, -1, fontRenderer);
 | 
					            GuiUtils.drawHoveringText(matrixStack, Collections.singletonList(new StringTextComponent(name)), x, y, screenWidth, screenHeight, -1, fontRenderer);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
    public void drawIcon(int x, int y, IElementDrawer<ItemStack> itemDrawer, IElementDrawer<FluidStack> fluidDrawer) {
 | 
					    public void drawIcon(MatrixStack matrixStack, int x, int y, IElementDrawer<ItemStack> itemDrawer, IElementDrawer<FluidStack> fluidDrawer) {
 | 
				
			||||||
        if (!icon.isEmpty()) {
 | 
					        if (!icon.isEmpty()) {
 | 
				
			||||||
            RenderSystem.setupGui3DDiffuseLighting();
 | 
					            RenderHelper.setupGui3DDiffuseLighting();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            itemDrawer.draw(x, y, icon);
 | 
					            itemDrawer.draw(x, y, icon);
 | 
				
			||||||
        } else {
 | 
					        } else {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -50,7 +50,7 @@ public class FluidGridHandler implements IFluidGridHandler {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
            if (shift) {
 | 
					            if (shift) {
 | 
				
			||||||
                if (!player.inventory.addItemStackToInventory(fluidHandler.getContainer().copy())) {
 | 
					                if (!player.inventory.addItemStackToInventory(fluidHandler.getContainer().copy())) {
 | 
				
			||||||
                    InventoryHelper.spawnItemStack(player.getEntityWorld(), player.getPosition().getX(), player.getPosition().getY(), player.getPosition().getZ(), fluidHandler.getContainer());
 | 
					                    InventoryHelper.spawnItemStack(player.getEntityWorld(), player.getPosX(), player.getPosY(), player.getPosZ(), fluidHandler.getContainer());
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
            } else {
 | 
					            } else {
 | 
				
			||||||
                player.inventory.setItemStack(fluidHandler.getContainer());
 | 
					                player.inventory.setItemStack(fluidHandler.getContainer());
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -56,7 +56,7 @@ public class PortableFluidGridHandler implements IFluidGridHandler {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
                if (shift) {
 | 
					                if (shift) {
 | 
				
			||||||
                    if (!player.inventory.addItemStackToInventory(fluidHandler.getContainer().copy())) {
 | 
					                    if (!player.inventory.addItemStackToInventory(fluidHandler.getContainer().copy())) {
 | 
				
			||||||
                        InventoryHelper.spawnItemStack(player.getEntityWorld(), player.getPosition().getX(), player.getPosition().getY(), player.getPosition().getZ(), fluidHandler.getContainer());
 | 
					                        InventoryHelper.spawnItemStack(player.getEntityWorld(), player.getPosX(), player.getPosY(), player.getPosZ(), fluidHandler.getContainer());
 | 
				
			||||||
                    }
 | 
					                    }
 | 
				
			||||||
                } else {
 | 
					                } else {
 | 
				
			||||||
                    player.inventory.setItemStack(fluidHandler.getContainer());
 | 
					                    player.inventory.setItemStack(fluidHandler.getContainer());
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -8,7 +8,7 @@ import com.refinedmods.refinedstorage.api.network.item.INetworkItemProvider;
 | 
				
			|||||||
import com.refinedmods.refinedstorage.api.network.node.INetworkNode;
 | 
					import com.refinedmods.refinedstorage.api.network.node.INetworkNode;
 | 
				
			||||||
import net.minecraft.entity.player.PlayerEntity;
 | 
					import net.minecraft.entity.player.PlayerEntity;
 | 
				
			||||||
import net.minecraft.item.ItemStack;
 | 
					import net.minecraft.item.ItemStack;
 | 
				
			||||||
import net.minecraft.util.math.Vec3d;
 | 
					import net.minecraft.util.math.vector.Vector3d;
 | 
				
			||||||
import net.minecraft.util.text.TranslationTextComponent;
 | 
					import net.minecraft.util.text.TranslationTextComponent;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import java.util.Map;
 | 
					import java.util.Map;
 | 
				
			||||||
@@ -33,7 +33,7 @@ public class NetworkItemManager implements INetworkItemManager {
 | 
				
			|||||||
                ((IWirelessTransmitter) node).getDimension() == player.dimension) {
 | 
					                ((IWirelessTransmitter) node).getDimension() == player.dimension) {
 | 
				
			||||||
                IWirelessTransmitter transmitter = (IWirelessTransmitter) node;
 | 
					                IWirelessTransmitter transmitter = (IWirelessTransmitter) node;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                Vec3d pos = player.getPositionVec();
 | 
					                Vector3d pos = player.getPositionVec();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                double distance = Math.sqrt(Math.pow(transmitter.getOrigin().getX() - pos.getX(), 2) + Math.pow(transmitter.getOrigin().getY() - pos.getY(), 2) + Math.pow(transmitter.getOrigin().getZ() - pos.getZ(), 2));
 | 
					                double distance = Math.sqrt(Math.pow(transmitter.getOrigin().getX() - pos.getX(), 2) + Math.pow(transmitter.getOrigin().getY() - pos.getY(), 2) + Math.pow(transmitter.getOrigin().getZ() - pos.getZ(), 2));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -46,7 +46,7 @@ public class NetworkItemManager implements INetworkItemManager {
 | 
				
			|||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if (!inRange) {
 | 
					        if (!inRange) {
 | 
				
			||||||
            player.sendMessage(new TranslationTextComponent("misc.refinedstorage.network_item.out_of_range"));
 | 
					            player.sendMessage(new TranslationTextComponent("misc.refinedstorage.network_item.out_of_range"), player.getUniqueID());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            return;
 | 
					            return;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -87,6 +87,6 @@ public class WirelessCraftingMonitorNetworkItem implements INetworkItem {
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    private void sendOutOfEnergyMessage() {
 | 
					    private void sendOutOfEnergyMessage() {
 | 
				
			||||||
        player.sendMessage(new TranslationTextComponent("misc.refinedstorage.network_item.out_of_energy", new TranslationTextComponent(stack.getItem().getTranslationKey())));
 | 
					        player.sendMessage(new TranslationTextComponent("misc.refinedstorage.network_item.out_of_energy", new TranslationTextComponent(stack.getItem().getTranslationKey())), player.getUniqueID());
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@@ -78,6 +78,6 @@ public class WirelessFluidGridNetworkItem implements INetworkItem {
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    private void sendOutOfEnergyMessage() {
 | 
					    private void sendOutOfEnergyMessage() {
 | 
				
			||||||
        player.sendMessage(new TranslationTextComponent("misc.refinedstorage.network_item.out_of_energy", new TranslationTextComponent(stack.getItem().getTranslationKey())));
 | 
					        player.sendMessage(new TranslationTextComponent("misc.refinedstorage.network_item.out_of_energy", new TranslationTextComponent(stack.getItem().getTranslationKey())), player.getUniqueID());
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@@ -78,6 +78,6 @@ public class WirelessGridNetworkItem implements INetworkItem {
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    private void sendOutOfEnergyMessage() {
 | 
					    private void sendOutOfEnergyMessage() {
 | 
				
			||||||
        player.sendMessage(new TranslationTextComponent("misc.refinedstorage.network_item.out_of_energy", new TranslationTextComponent(stack.getItem().getTranslationKey())));
 | 
					        player.sendMessage(new TranslationTextComponent("misc.refinedstorage.network_item.out_of_energy", new TranslationTextComponent(stack.getItem().getTranslationKey())), player.getUniqueID());
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@@ -16,8 +16,8 @@ import com.refinedmods.refinedstorage.util.StackUtils;
 | 
				
			|||||||
import com.refinedmods.refinedstorage.util.WorldUtils;
 | 
					import com.refinedmods.refinedstorage.util.WorldUtils;
 | 
				
			||||||
import net.minecraft.dispenser.DefaultDispenseItemBehavior;
 | 
					import net.minecraft.dispenser.DefaultDispenseItemBehavior;
 | 
				
			||||||
import net.minecraft.dispenser.Position;
 | 
					import net.minecraft.dispenser.Position;
 | 
				
			||||||
import net.minecraft.entity.item.FireworkRocketEntity;
 | 
					 | 
				
			||||||
import net.minecraft.entity.player.PlayerEntity;
 | 
					import net.minecraft.entity.player.PlayerEntity;
 | 
				
			||||||
 | 
					import net.minecraft.entity.projectile.FireworkRocketEntity;
 | 
				
			||||||
import net.minecraft.item.BlockItem;
 | 
					import net.minecraft.item.BlockItem;
 | 
				
			||||||
import net.minecraft.item.BlockItemUseContext;
 | 
					import net.minecraft.item.BlockItemUseContext;
 | 
				
			||||||
import net.minecraft.item.ItemStack;
 | 
					import net.minecraft.item.ItemStack;
 | 
				
			||||||
@@ -29,7 +29,7 @@ import net.minecraft.util.Hand;
 | 
				
			|||||||
import net.minecraft.util.ResourceLocation;
 | 
					import net.minecraft.util.ResourceLocation;
 | 
				
			||||||
import net.minecraft.util.math.BlockPos;
 | 
					import net.minecraft.util.math.BlockPos;
 | 
				
			||||||
import net.minecraft.util.math.BlockRayTraceResult;
 | 
					import net.minecraft.util.math.BlockRayTraceResult;
 | 
				
			||||||
import net.minecraft.util.math.Vec3d;
 | 
					import net.minecraft.util.math.vector.Vector3d;
 | 
				
			||||||
import net.minecraft.world.World;
 | 
					import net.minecraft.world.World;
 | 
				
			||||||
import net.minecraft.world.server.ServerWorld;
 | 
					import net.minecraft.world.server.ServerWorld;
 | 
				
			||||||
import net.minecraftforge.common.ForgeHooks;
 | 
					import net.minecraftforge.common.ForgeHooks;
 | 
				
			||||||
@@ -114,7 +114,7 @@ public class ConstructorNetworkNode extends NetworkNode implements IComparable,
 | 
				
			|||||||
                WorldUtils.getFakePlayer((ServerWorld) world, getOwner()),
 | 
					                WorldUtils.getFakePlayer((ServerWorld) world, getOwner()),
 | 
				
			||||||
                Hand.MAIN_HAND,
 | 
					                Hand.MAIN_HAND,
 | 
				
			||||||
                took,
 | 
					                took,
 | 
				
			||||||
                new BlockRayTraceResult(Vec3d.ZERO, getDirection(), pos, false)
 | 
					                new BlockRayTraceResult(Vector3d.ZERO, getDirection(), pos, false)
 | 
				
			||||||
            );
 | 
					            );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            ActionResultType result = ForgeHooks.onPlaceItemIntoWorld(ctx);
 | 
					            ActionResultType result = ForgeHooks.onPlaceItemIntoWorld(ctx);
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -31,7 +31,7 @@ import net.minecraft.util.ResourceLocation;
 | 
				
			|||||||
import net.minecraft.util.math.AxisAlignedBB;
 | 
					import net.minecraft.util.math.AxisAlignedBB;
 | 
				
			||||||
import net.minecraft.util.math.BlockPos;
 | 
					import net.minecraft.util.math.BlockPos;
 | 
				
			||||||
import net.minecraft.util.math.BlockRayTraceResult;
 | 
					import net.minecraft.util.math.BlockRayTraceResult;
 | 
				
			||||||
import net.minecraft.util.math.Vec3d;
 | 
					import net.minecraft.util.math.vector.Vector3d;
 | 
				
			||||||
import net.minecraft.world.World;
 | 
					import net.minecraft.world.World;
 | 
				
			||||||
import net.minecraft.world.chunk.Chunk;
 | 
					import net.minecraft.world.chunk.Chunk;
 | 
				
			||||||
import net.minecraft.world.server.ServerWorld;
 | 
					import net.minecraft.world.server.ServerWorld;
 | 
				
			||||||
@@ -127,7 +127,7 @@ public class DestructorNetworkNode extends NetworkNode implements IComparable, I
 | 
				
			|||||||
        Block frontBlock = frontBlockState.getBlock();
 | 
					        Block frontBlock = frontBlockState.getBlock();
 | 
				
			||||||
        ItemStack frontStack = frontBlock.getPickBlock(
 | 
					        ItemStack frontStack = frontBlock.getPickBlock(
 | 
				
			||||||
            frontBlockState,
 | 
					            frontBlockState,
 | 
				
			||||||
            new BlockRayTraceResult(Vec3d.ZERO, getDirection().getOpposite(), front, false),
 | 
					            new BlockRayTraceResult(Vector3d.ZERO, getDirection().getOpposite(), front, false),
 | 
				
			||||||
            world,
 | 
					            world,
 | 
				
			||||||
            front,
 | 
					            front,
 | 
				
			||||||
            WorldUtils.getFakePlayer((ServerWorld) world, getOwner())
 | 
					            WorldUtils.getFakePlayer((ServerWorld) world, getOwner())
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -165,7 +165,7 @@ public class StorageMonitorNetworkNode extends NetworkNode implements IComparabl
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
            ItemStack container = result.getLeft();
 | 
					            ItemStack container = result.getLeft();
 | 
				
			||||||
            if (!player.inventory.addItemStackToInventory(container.copy())) {
 | 
					            if (!player.inventory.addItemStackToInventory(container.copy())) {
 | 
				
			||||||
                InventoryHelper.spawnItemStack(player.getEntityWorld(), player.getPosition().getX(), player.getPosition().getY(), player.getPosition().getZ(), container);
 | 
					                InventoryHelper.spawnItemStack(player.getEntityWorld(), player.getPosX(), player.getPosY(), player.getPosZ(), container);
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
@@ -196,7 +196,7 @@ public class StorageMonitorNetworkNode extends NetworkNode implements IComparabl
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
            if (!result.isEmpty()) {
 | 
					            if (!result.isEmpty()) {
 | 
				
			||||||
                if (!player.inventory.addItemStackToInventory(result.copy())) {
 | 
					                if (!player.inventory.addItemStackToInventory(result.copy())) {
 | 
				
			||||||
                    InventoryHelper.spawnItemStack(world, player.getPosition().getX(), player.getPosition().getY(), player.getPosition().getZ(), result);
 | 
					                    InventoryHelper.spawnItemStack(world, player.getPosX(), player.getPosY(), player.getPosZ(), result);
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
@@ -222,7 +222,7 @@ public class StorageMonitorNetworkNode extends NetworkNode implements IComparabl
 | 
				
			|||||||
                fluidHandler.fill(network.extractFluid(stack, FluidAttributes.BUCKET_VOLUME, Action.PERFORM), IFluidHandler.FluidAction.EXECUTE);
 | 
					                fluidHandler.fill(network.extractFluid(stack, FluidAttributes.BUCKET_VOLUME, Action.PERFORM), IFluidHandler.FluidAction.EXECUTE);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                if (!player.inventory.addItemStackToInventory(fluidHandler.getContainer().copy())) {
 | 
					                if (!player.inventory.addItemStackToInventory(fluidHandler.getContainer().copy())) {
 | 
				
			||||||
                    InventoryHelper.spawnItemStack(player.getEntityWorld(), player.getPosition().getX(), player.getPosition().getY(), player.getPosition().getZ(), fluidHandler.getContainer());
 | 
					                    InventoryHelper.spawnItemStack(player.getEntityWorld(), player.getPosX(), player.getPosY(), player.getPosZ(), fluidHandler.getContainer());
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
            }));
 | 
					            }));
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -26,7 +26,7 @@ public class ItemStorageTracker implements IStorageTracker<ItemStack> {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
    public void changed(PlayerEntity player, ItemStack stack) {
 | 
					    public void changed(PlayerEntity player, ItemStack stack) {
 | 
				
			||||||
        changes.put(new Key(stack), new StorageTrackerEntry(System.currentTimeMillis(), player.getName().getFormattedText()));
 | 
					        changes.put(new Key(stack), new StorageTrackerEntry(System.currentTimeMillis(), player.getName().getString()));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        listener.run();
 | 
					        listener.run();
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -9,8 +9,8 @@ import net.minecraft.block.Block;
 | 
				
			|||||||
import net.minecraft.block.BlockState;
 | 
					import net.minecraft.block.BlockState;
 | 
				
			||||||
import net.minecraft.block.IWaterLoggable;
 | 
					import net.minecraft.block.IWaterLoggable;
 | 
				
			||||||
import net.minecraft.fluid.Fluid;
 | 
					import net.minecraft.fluid.Fluid;
 | 
				
			||||||
 | 
					import net.minecraft.fluid.FluidState;
 | 
				
			||||||
import net.minecraft.fluid.Fluids;
 | 
					import net.minecraft.fluid.Fluids;
 | 
				
			||||||
import net.minecraft.fluid.IFluidState;
 | 
					 | 
				
			||||||
import net.minecraft.item.BlockItemUseContext;
 | 
					import net.minecraft.item.BlockItemUseContext;
 | 
				
			||||||
import net.minecraft.state.BooleanProperty;
 | 
					import net.minecraft.state.BooleanProperty;
 | 
				
			||||||
import net.minecraft.state.StateContainer;
 | 
					import net.minecraft.state.StateContainer;
 | 
				
			||||||
@@ -126,12 +126,12 @@ public class CableBlock extends NetworkNodeBlock implements IWaterLoggable {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
    @SuppressWarnings("deprecation")
 | 
					    @SuppressWarnings("deprecation")
 | 
				
			||||||
    public IFluidState getFluidState(BlockState state) {
 | 
					    public FluidState getFluidState(BlockState state) {
 | 
				
			||||||
        return state.get(WATERLOGGED) ? Fluids.WATER.getStillFluidState(false) : super.getFluidState(state);
 | 
					        return state.get(WATERLOGGED) ? Fluids.WATER.getStillFluidState(false) : super.getFluidState(state);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
    public boolean receiveFluid(IWorld worldIn, BlockPos pos, BlockState state, IFluidState fluidStateIn) {
 | 
					    public boolean receiveFluid(IWorld worldIn, BlockPos pos, BlockState state, FluidState fluidStateIn) {
 | 
				
			||||||
        return IWaterLoggable.super.receiveFluid(worldIn, pos, state, fluidStateIn);
 | 
					        return IWaterLoggable.super.receiveFluid(worldIn, pos, state, fluidStateIn);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -46,7 +46,7 @@ public class ControllerBlock extends BaseBlock {
 | 
				
			|||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        @Override
 | 
					        @Override
 | 
				
			||||||
        public String getName() {
 | 
					        public String getString() {
 | 
				
			||||||
            return name;
 | 
					            return name;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -93,9 +93,9 @@ public class UpgradeItem extends Item {
 | 
				
			|||||||
        if (type.getFortuneLevel() > 0) {
 | 
					        if (type.getFortuneLevel() > 0) {
 | 
				
			||||||
            tooltip.add(
 | 
					            tooltip.add(
 | 
				
			||||||
                new TranslationTextComponent("enchantment.minecraft.fortune")
 | 
					                new TranslationTextComponent("enchantment.minecraft.fortune")
 | 
				
			||||||
                    .appendText(" ")
 | 
					                    .func_240702_b_(" ")
 | 
				
			||||||
                    .appendSibling(new TranslationTextComponent("enchantment.level." + type.getFortuneLevel()))
 | 
					                    .func_230529_a_(new TranslationTextComponent("enchantment.level." + type.getFortuneLevel()))
 | 
				
			||||||
                    .setStyle(Styles.GRAY)
 | 
					                    .func_230530_a_(Styles.GRAY)
 | 
				
			||||||
            );
 | 
					            );
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -7,10 +7,10 @@ import com.refinedmods.refinedstorage.RSBlocks;
 | 
				
			|||||||
import com.refinedmods.refinedstorage.apiimpl.network.node.DiskState;
 | 
					import com.refinedmods.refinedstorage.apiimpl.network.node.DiskState;
 | 
				
			||||||
import com.refinedmods.refinedstorage.tile.DiskDriveTile;
 | 
					import com.refinedmods.refinedstorage.tile.DiskDriveTile;
 | 
				
			||||||
import net.minecraft.block.BlockState;
 | 
					import net.minecraft.block.BlockState;
 | 
				
			||||||
import net.minecraft.client.renderer.Vector3f;
 | 
					 | 
				
			||||||
import net.minecraft.client.renderer.model.BakedQuad;
 | 
					import net.minecraft.client.renderer.model.BakedQuad;
 | 
				
			||||||
import net.minecraft.client.renderer.model.IBakedModel;
 | 
					import net.minecraft.client.renderer.model.IBakedModel;
 | 
				
			||||||
import net.minecraft.util.Direction;
 | 
					import net.minecraft.util.Direction;
 | 
				
			||||||
 | 
					import net.minecraft.util.math.vector.Vector3f;
 | 
				
			||||||
import net.minecraftforge.client.model.data.IModelData;
 | 
					import net.minecraftforge.client.model.data.IModelData;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import javax.annotation.Nonnull;
 | 
					import javax.annotation.Nonnull;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -8,10 +8,10 @@ import com.refinedmods.refinedstorage.apiimpl.network.node.DiskState;
 | 
				
			|||||||
import com.refinedmods.refinedstorage.block.DiskManipulatorBlock;
 | 
					import com.refinedmods.refinedstorage.block.DiskManipulatorBlock;
 | 
				
			||||||
import com.refinedmods.refinedstorage.tile.DiskManipulatorTile;
 | 
					import com.refinedmods.refinedstorage.tile.DiskManipulatorTile;
 | 
				
			||||||
import net.minecraft.block.BlockState;
 | 
					import net.minecraft.block.BlockState;
 | 
				
			||||||
import net.minecraft.client.renderer.Vector3f;
 | 
					 | 
				
			||||||
import net.minecraft.client.renderer.model.BakedQuad;
 | 
					import net.minecraft.client.renderer.model.BakedQuad;
 | 
				
			||||||
import net.minecraft.client.renderer.model.IBakedModel;
 | 
					import net.minecraft.client.renderer.model.IBakedModel;
 | 
				
			||||||
import net.minecraft.util.Direction;
 | 
					import net.minecraft.util.Direction;
 | 
				
			||||||
 | 
					import net.minecraft.util.math.vector.Vector3f;
 | 
				
			||||||
import net.minecraftforge.client.model.data.IModelData;
 | 
					import net.minecraftforge.client.model.data.IModelData;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import javax.annotation.Nonnull;
 | 
					import javax.annotation.Nonnull;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -2,11 +2,11 @@ package com.refinedmods.refinedstorage.render.model;
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
import com.google.common.collect.ImmutableList;
 | 
					import com.google.common.collect.ImmutableList;
 | 
				
			||||||
import net.minecraft.block.BlockState;
 | 
					import net.minecraft.block.BlockState;
 | 
				
			||||||
import net.minecraft.client.renderer.TransformationMatrix;
 | 
					 | 
				
			||||||
import net.minecraft.client.renderer.Vector3f;
 | 
					 | 
				
			||||||
import net.minecraft.client.renderer.model.BakedQuad;
 | 
					import net.minecraft.client.renderer.model.BakedQuad;
 | 
				
			||||||
import net.minecraft.client.renderer.model.IBakedModel;
 | 
					import net.minecraft.client.renderer.model.IBakedModel;
 | 
				
			||||||
import net.minecraft.util.Direction;
 | 
					import net.minecraft.util.Direction;
 | 
				
			||||||
 | 
					import net.minecraft.util.math.vector.TransformationMatrix;
 | 
				
			||||||
 | 
					import net.minecraft.util.math.vector.Vector3f;
 | 
				
			||||||
import net.minecraftforge.client.model.data.EmptyModelData;
 | 
					import net.minecraftforge.client.model.data.EmptyModelData;
 | 
				
			||||||
import net.minecraftforge.client.model.pipeline.BakedQuadBuilder;
 | 
					import net.minecraftforge.client.model.pipeline.BakedQuadBuilder;
 | 
				
			||||||
import net.minecraftforge.client.model.pipeline.TRSRTransformer;
 | 
					import net.minecraftforge.client.model.pipeline.TRSRTransformer;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -11,7 +11,6 @@ import net.minecraft.block.BlockState;
 | 
				
			|||||||
import net.minecraft.client.Minecraft;
 | 
					import net.minecraft.client.Minecraft;
 | 
				
			||||||
import net.minecraft.client.renderer.IRenderTypeBuffer;
 | 
					import net.minecraft.client.renderer.IRenderTypeBuffer;
 | 
				
			||||||
import net.minecraft.client.renderer.RenderType;
 | 
					import net.minecraft.client.renderer.RenderType;
 | 
				
			||||||
import net.minecraft.client.renderer.Vector3f;
 | 
					 | 
				
			||||||
import net.minecraft.client.renderer.WorldRenderer;
 | 
					import net.minecraft.client.renderer.WorldRenderer;
 | 
				
			||||||
import net.minecraft.client.renderer.model.ItemCameraTransforms;
 | 
					import net.minecraft.client.renderer.model.ItemCameraTransforms;
 | 
				
			||||||
import net.minecraft.client.renderer.texture.OverlayTexture;
 | 
					import net.minecraft.client.renderer.texture.OverlayTexture;
 | 
				
			||||||
@@ -23,6 +22,7 @@ import net.minecraft.inventory.container.PlayerContainer;
 | 
				
			|||||||
import net.minecraft.item.ItemStack;
 | 
					import net.minecraft.item.ItemStack;
 | 
				
			||||||
import net.minecraft.util.Direction;
 | 
					import net.minecraft.util.Direction;
 | 
				
			||||||
import net.minecraft.util.ResourceLocation;
 | 
					import net.minecraft.util.ResourceLocation;
 | 
				
			||||||
 | 
					import net.minecraft.util.math.vector.Vector3f;
 | 
				
			||||||
import net.minecraftforge.common.model.TransformationHelper;
 | 
					import net.minecraftforge.common.model.TransformationHelper;
 | 
				
			||||||
import net.minecraftforge.fluids.FluidAttributes;
 | 
					import net.minecraftforge.fluids.FluidAttributes;
 | 
				
			||||||
import net.minecraftforge.fluids.FluidStack;
 | 
					import net.minecraftforge.fluids.FluidStack;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,5 +1,6 @@
 | 
				
			|||||||
package com.refinedmods.refinedstorage.screen;
 | 
					package com.refinedmods.refinedstorage.screen;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import com.mojang.blaze3d.matrix.MatrixStack;
 | 
				
			||||||
import com.refinedmods.refinedstorage.RS;
 | 
					import com.refinedmods.refinedstorage.RS;
 | 
				
			||||||
import com.refinedmods.refinedstorage.render.RenderSettings;
 | 
					import com.refinedmods.refinedstorage.render.RenderSettings;
 | 
				
			||||||
import net.minecraft.client.gui.widget.TextFieldWidget;
 | 
					import net.minecraft.client.gui.widget.TextFieldWidget;
 | 
				
			||||||
@@ -8,6 +9,8 @@ import net.minecraft.client.resources.I18n;
 | 
				
			|||||||
import net.minecraft.entity.player.PlayerInventory;
 | 
					import net.minecraft.entity.player.PlayerInventory;
 | 
				
			||||||
import net.minecraft.inventory.container.Container;
 | 
					import net.minecraft.inventory.container.Container;
 | 
				
			||||||
import net.minecraft.util.text.ITextComponent;
 | 
					import net.minecraft.util.text.ITextComponent;
 | 
				
			||||||
 | 
					import net.minecraft.util.text.StringTextComponent;
 | 
				
			||||||
 | 
					import net.minecraft.util.text.TranslationTextComponent;
 | 
				
			||||||
import org.apache.commons.lang3.tuple.Pair;
 | 
					import org.apache.commons.lang3.tuple.Pair;
 | 
				
			||||||
import org.lwjgl.glfw.GLFW;
 | 
					import org.lwjgl.glfw.GLFW;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -24,7 +27,7 @@ public abstract class AmountSpecifyingScreen<T extends Container> extends BaseSc
 | 
				
			|||||||
        this.parent = parent;
 | 
					        this.parent = parent;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    protected abstract String getOkButtonText();
 | 
					    protected abstract ITextComponent getOkButtonText();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    protected abstract String getTexture();
 | 
					    protected abstract String getTexture();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -53,9 +56,9 @@ public abstract class AmountSpecifyingScreen<T extends Container> extends BaseSc
 | 
				
			|||||||
        Pair<Integer, Integer> pos = getOkCancelPos();
 | 
					        Pair<Integer, Integer> pos = getOkCancelPos();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        okButton = addButton(x + pos.getLeft(), y + pos.getRight(), getOkCancelButtonWidth(), 20, getOkButtonText(), true, true, btn -> onOkButtonPressed(hasShiftDown()));
 | 
					        okButton = addButton(x + pos.getLeft(), y + pos.getRight(), getOkCancelButtonWidth(), 20, getOkButtonText(), true, true, btn -> onOkButtonPressed(hasShiftDown()));
 | 
				
			||||||
        cancelButton = addButton(x + pos.getLeft(), y + pos.getRight() + 24, getOkCancelButtonWidth(), 20, I18n.format("gui.cancel"), true, true, btn -> close());
 | 
					        cancelButton = addButton(x + pos.getLeft(), y + pos.getRight() + 24, getOkCancelButtonWidth(), 20, new TranslationTextComponent("gui.cancel"), true, true, btn -> close());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        amountField = new TextFieldWidget(font, x + getAmountPos().getLeft(), y + getAmountPos().getRight(), 69 - 6, font.FONT_HEIGHT, "");
 | 
					        amountField = new TextFieldWidget(font, x + getAmountPos().getLeft(), y + getAmountPos().getRight(), 69 - 6, font.FONT_HEIGHT, new StringTextComponent(""));
 | 
				
			||||||
        amountField.setEnableBackgroundDrawing(false);
 | 
					        amountField.setEnableBackgroundDrawing(false);
 | 
				
			||||||
        amountField.setVisible(true);
 | 
					        amountField.setVisible(true);
 | 
				
			||||||
        amountField.setText(String.valueOf(getDefaultAmount()));
 | 
					        amountField.setText(String.valueOf(getDefaultAmount()));
 | 
				
			||||||
@@ -75,10 +78,9 @@ public abstract class AmountSpecifyingScreen<T extends Container> extends BaseSc
 | 
				
			|||||||
        for (int i = 0; i < 3; ++i) {
 | 
					        for (int i = 0; i < 3; ++i) {
 | 
				
			||||||
            int increment = increments[i];
 | 
					            int increment = increments[i];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            String text = "+" + increment;
 | 
					            ITextComponent text = new StringTextComponent("+" + increment);
 | 
				
			||||||
 | 
					            if (text.getString().equals("+1000")) {
 | 
				
			||||||
            if (text.equals("+1000")) {
 | 
					                text = new StringTextComponent("+1B");
 | 
				
			||||||
                text = "+1B";
 | 
					 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            addButton(x + xx, y + 20, width, 20, text, true, true, btn -> onIncrementButtonClicked(increment));
 | 
					            addButton(x + xx, y + 20, width, 20, text, true, true, btn -> onIncrementButtonClicked(increment));
 | 
				
			||||||
@@ -91,10 +93,9 @@ public abstract class AmountSpecifyingScreen<T extends Container> extends BaseSc
 | 
				
			|||||||
        for (int i = 0; i < 3; ++i) {
 | 
					        for (int i = 0; i < 3; ++i) {
 | 
				
			||||||
            int increment = increments[i];
 | 
					            int increment = increments[i];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            String text = "-" + increment;
 | 
					            ITextComponent text = new StringTextComponent("-" + increment);
 | 
				
			||||||
 | 
					            if (text.getString().equals("-1000")) {
 | 
				
			||||||
            if (text.equals("-1000")) {
 | 
					                text = new StringTextComponent("-1B");
 | 
				
			||||||
                text = "-1B";
 | 
					 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            addButton(x + xx, y + ySize - 20 - 7, width, 20, text, true, true, btn -> onIncrementButtonClicked(-increment));
 | 
					            addButton(x + xx, y + ySize - 20 - 7, width, 20, text, true, true, btn -> onIncrementButtonClicked(-increment));
 | 
				
			||||||
@@ -154,17 +155,17 @@ public abstract class AmountSpecifyingScreen<T extends Container> extends BaseSc
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
    public void renderBackground(int x, int y, int mouseX, int mouseY) {
 | 
					    public void renderBackground(MatrixStack matrixStack, int x, int y, int mouseX, int mouseY) {
 | 
				
			||||||
        bindTexture(RS.ID, getTexture());
 | 
					        bindTexture(RS.ID, getTexture());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        blit(x, y, 0, 0, xSize, ySize);
 | 
					        blit(matrixStack, x, y, 0, 0, xSize, ySize);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        amountField.renderButton(0, 0, 0);
 | 
					        amountField.renderButton(matrixStack, 0, 0, 0);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
    public void renderForeground(int mouseX, int mouseY) {
 | 
					    public void renderForeground(MatrixStack matrixStack, int mouseX, int mouseY) {
 | 
				
			||||||
        renderString(7, 7, title.getFormattedText());
 | 
					        renderString(matrixStack, 7, 7, title.getString());
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    protected void onOkButtonPressed(boolean shiftDown) {
 | 
					    protected void onOkButtonPressed(boolean shiftDown) {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,5 +1,6 @@
 | 
				
			|||||||
package com.refinedmods.refinedstorage.screen;
 | 
					package com.refinedmods.refinedstorage.screen;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import com.mojang.blaze3d.matrix.MatrixStack;
 | 
				
			||||||
import com.mojang.blaze3d.systems.RenderSystem;
 | 
					import com.mojang.blaze3d.systems.RenderSystem;
 | 
				
			||||||
import com.refinedmods.refinedstorage.RS;
 | 
					import com.refinedmods.refinedstorage.RS;
 | 
				
			||||||
import com.refinedmods.refinedstorage.apiimpl.API;
 | 
					import com.refinedmods.refinedstorage.apiimpl.API;
 | 
				
			||||||
@@ -26,6 +27,7 @@ import net.minecraft.inventory.container.Slot;
 | 
				
			|||||||
import net.minecraft.item.ItemStack;
 | 
					import net.minecraft.item.ItemStack;
 | 
				
			||||||
import net.minecraft.util.ResourceLocation;
 | 
					import net.minecraft.util.ResourceLocation;
 | 
				
			||||||
import net.minecraft.util.text.ITextComponent;
 | 
					import net.minecraft.util.text.ITextComponent;
 | 
				
			||||||
 | 
					import net.minecraft.util.text.StringTextComponent;
 | 
				
			||||||
import net.minecraft.util.text.TranslationTextComponent;
 | 
					import net.minecraft.util.text.TranslationTextComponent;
 | 
				
			||||||
import net.minecraftforge.fluids.FluidStack;
 | 
					import net.minecraftforge.fluids.FluidStack;
 | 
				
			||||||
import net.minecraftforge.fml.client.gui.GuiUtils;
 | 
					import net.minecraftforge.fml.client.gui.GuiUtils;
 | 
				
			||||||
@@ -37,6 +39,7 @@ import javax.annotation.Nonnull;
 | 
				
			|||||||
import javax.annotation.Nullable;
 | 
					import javax.annotation.Nullable;
 | 
				
			||||||
import java.util.*;
 | 
					import java.util.*;
 | 
				
			||||||
import java.util.function.Consumer;
 | 
					import java.util.function.Consumer;
 | 
				
			||||||
 | 
					import java.util.stream.Collectors;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
public abstract class BaseScreen<T extends Container> extends ContainerScreen<T> {
 | 
					public abstract class BaseScreen<T extends Container> extends ContainerScreen<T> {
 | 
				
			||||||
    public static final int Z_LEVEL_ITEMS = 100;
 | 
					    public static final int Z_LEVEL_ITEMS = 100;
 | 
				
			||||||
@@ -113,19 +116,19 @@ public abstract class BaseScreen<T extends Container> extends ContainerScreen<T>
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
    public void render(int mouseX, int mouseY, float partialTicks) {
 | 
					    public void render(MatrixStack matrixStack, int mouseX, int mouseY, float partialTicks) {
 | 
				
			||||||
        renderBackground();
 | 
					        renderBackground(matrixStack);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        super.render(mouseX, mouseY, partialTicks);
 | 
					        super.render(matrixStack, mouseX, mouseY, partialTicks);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        renderHoveredToolTip(mouseX, mouseY);
 | 
					        func_230459_a_(matrixStack, mouseX, mouseY);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Override
 | 
					    @Override // drawGuiContainerBackgroundLayer
 | 
				
			||||||
    protected void drawGuiContainerBackgroundLayer(float renderPartialTicks, int mouseX, int mouseY) {
 | 
					    protected void func_230450_a_(MatrixStack matrixStack, float renderPartialTicks, int mouseX, int mouseY) {
 | 
				
			||||||
        RenderSystem.color4f(1.0F, 1.0F, 1.0F, 1.0F);
 | 
					        RenderSystem.color4f(1.0F, 1.0F, 1.0F, 1.0F);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        renderBackground(guiLeft, guiTop, mouseX, mouseY);
 | 
					        renderBackground(matrixStack, guiLeft, guiTop, mouseX, mouseY);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        for (int i = 0; i < this.container.inventorySlots.size(); ++i) {
 | 
					        for (int i = 0; i < this.container.inventorySlots.size(); ++i) {
 | 
				
			||||||
            Slot slot = container.inventorySlots.get(i);
 | 
					            Slot slot = container.inventorySlots.get(i);
 | 
				
			||||||
@@ -137,7 +140,7 @@ public abstract class BaseScreen<T extends Container> extends ContainerScreen<T>
 | 
				
			|||||||
                    FluidRenderer.INSTANCE.render(guiLeft + slot.xPos, guiTop + slot.yPos, stack);
 | 
					                    FluidRenderer.INSTANCE.render(guiLeft + slot.xPos, guiTop + slot.yPos, stack);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                    if (((FluidFilterSlot) slot).isSizeAllowed()) {
 | 
					                    if (((FluidFilterSlot) slot).isSizeAllowed()) {
 | 
				
			||||||
                        renderQuantity(guiLeft + slot.xPos, guiTop + slot.yPos, API.instance().getQuantityFormatter().formatInBucketForm(stack.getAmount()), RenderSettings.INSTANCE.getSecondaryColor());
 | 
					                        renderQuantity(matrixStack, guiLeft + slot.xPos, guiTop + slot.yPos, API.instance().getQuantityFormatter().formatInBucketForm(stack.getAmount()), RenderSettings.INSTANCE.getSecondaryColor());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                        GL11.glDisable(GL11.GL_LIGHTING);
 | 
					                        GL11.glDisable(GL11.GL_LIGHTING);
 | 
				
			||||||
                    }
 | 
					                    }
 | 
				
			||||||
@@ -146,18 +149,18 @@ public abstract class BaseScreen<T extends Container> extends ContainerScreen<T>
 | 
				
			|||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Override
 | 
					    @Override // drawGuiContainerForegroundLayer
 | 
				
			||||||
    protected void drawGuiContainerForegroundLayer(int mouseX, int mouseY) {
 | 
					    protected void func_230451_b_(MatrixStack matrixStack, int mouseX, int mouseY) {
 | 
				
			||||||
        RenderSystem.color4f(1.0F, 1.0F, 1.0F, 1.0F);
 | 
					        RenderSystem.color4f(1.0F, 1.0F, 1.0F, 1.0F);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        mouseX -= guiLeft;
 | 
					        mouseX -= guiLeft;
 | 
				
			||||||
        mouseY -= guiTop;
 | 
					        mouseY -= guiTop;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        renderForeground(mouseX, mouseY);
 | 
					        renderForeground(matrixStack, mouseX, mouseY);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        for (Widget button : this.buttons) {
 | 
					        for (Widget button : this.buttons) {
 | 
				
			||||||
            if (button instanceof SideButton && button.isHovered()) {
 | 
					            if (button instanceof SideButton && button.isHovered()) {
 | 
				
			||||||
                renderTooltip(mouseX, mouseY, ((SideButton) button).getTooltip());
 | 
					                renderTooltip(matrixStack, mouseX, mouseY, ((SideButton) button).getTooltip());
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -168,7 +171,7 @@ public abstract class BaseScreen<T extends Container> extends ContainerScreen<T>
 | 
				
			|||||||
                FluidStack stack = ((FluidFilterSlot) slot).getFluidInventory().getFluid(slot.getSlotIndex());
 | 
					                FluidStack stack = ((FluidFilterSlot) slot).getFluidInventory().getFluid(slot.getSlotIndex());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                if (!stack.isEmpty() && RenderUtils.inBounds(slot.xPos, slot.yPos, 17, 17, mouseX, mouseY)) {
 | 
					                if (!stack.isEmpty() && RenderUtils.inBounds(slot.xPos, slot.yPos, 17, 17, mouseX, mouseY)) {
 | 
				
			||||||
                    renderTooltip(mouseX, mouseY, stack.getDisplayName().getFormattedText());
 | 
					                    renderTooltip(matrixStack, mouseX, mouseY, stack.getDisplayName().getString());
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
@@ -241,7 +244,7 @@ public abstract class BaseScreen<T extends Container> extends ContainerScreen<T>
 | 
				
			|||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public CheckboxWidget addCheckBox(int x, int y, String text, boolean checked, Consumer<CheckboxButton> onPress) {
 | 
					    public CheckboxWidget addCheckBox(int x, int y, ITextComponent text, boolean checked, Consumer<CheckboxButton> onPress) {
 | 
				
			||||||
        CheckboxWidget checkBox = new CheckboxWidget(x, y, text, checked, onPress);
 | 
					        CheckboxWidget checkBox = new CheckboxWidget(x, y, text, checked, onPress);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        this.addButton(checkBox);
 | 
					        this.addButton(checkBox);
 | 
				
			||||||
@@ -249,7 +252,7 @@ public abstract class BaseScreen<T extends Container> extends ContainerScreen<T>
 | 
				
			|||||||
        return checkBox;
 | 
					        return checkBox;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public Button addButton(int x, int y, int w, int h, String text, boolean enabled, boolean visible, Button.IPressable onPress) {
 | 
					    public Button addButton(int x, int y, int w, int h, ITextComponent text, boolean enabled, boolean visible, Button.IPressable onPress) {
 | 
				
			||||||
        Button button = new Button(x, y, w, h, text, onPress);
 | 
					        Button button = new Button(x, y, w, h, text, onPress);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        button.active = enabled;
 | 
					        button.active = enabled;
 | 
				
			||||||
@@ -273,11 +276,11 @@ public abstract class BaseScreen<T extends Container> extends ContainerScreen<T>
 | 
				
			|||||||
        minecraft.getTextureManager().bindTexture(TEXTURE_CACHE.computeIfAbsent(namespace + ":" + filenameInTexturesFolder, (newId) -> new ResourceLocation(namespace, "textures/" + filenameInTexturesFolder)));
 | 
					        minecraft.getTextureManager().bindTexture(TEXTURE_CACHE.computeIfAbsent(namespace + ":" + filenameInTexturesFolder, (newId) -> new ResourceLocation(namespace, "textures/" + filenameInTexturesFolder)));
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public void renderItem(int x, int y, ItemStack stack) {
 | 
					    public void renderItem(MatrixStack matrixStack, int x, int y, ItemStack stack) {
 | 
				
			||||||
        renderItem(x, y, stack, false, null, 0);
 | 
					        renderItem(matrixStack, x, y, stack, false, null, 0);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public void renderItem(int x, int y, ItemStack stack, boolean overlay, @Nullable String text, int textColor) {
 | 
					    public void renderItem(MatrixStack matrixStack, int x, int y, ItemStack stack, boolean overlay, @Nullable String text, int textColor) {
 | 
				
			||||||
        try {
 | 
					        try {
 | 
				
			||||||
            setBlitOffset(Z_LEVEL_ITEMS);
 | 
					            setBlitOffset(Z_LEVEL_ITEMS);
 | 
				
			||||||
            itemRenderer.zLevel = Z_LEVEL_ITEMS;
 | 
					            itemRenderer.zLevel = Z_LEVEL_ITEMS;
 | 
				
			||||||
@@ -292,14 +295,14 @@ public abstract class BaseScreen<T extends Container> extends ContainerScreen<T>
 | 
				
			|||||||
            itemRenderer.zLevel = 0;
 | 
					            itemRenderer.zLevel = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            if (text != null) {
 | 
					            if (text != null) {
 | 
				
			||||||
                renderQuantity(x, y, text, textColor);
 | 
					                renderQuantity(matrixStack, x, y, text, textColor);
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        } catch (Throwable t) {
 | 
					        } catch (Throwable t) {
 | 
				
			||||||
            logger.warn("Couldn't render stack: " + stack.getItem().toString(), t);
 | 
					            logger.warn("Couldn't render stack: " + stack.getItem().toString(), t);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public void renderQuantity(int x, int y, String qty, int color) {
 | 
					    public void renderQuantity(MatrixStack matrixStack, int x, int y, String qty, int color) {
 | 
				
			||||||
        boolean large = minecraft.getForceUnicodeFont() || RS.CLIENT_CONFIG.getGrid().getLargeFont();
 | 
					        boolean large = minecraft.getForceUnicodeFont() || RS.CLIENT_CONFIG.getGrid().getLargeFont();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        RenderSystem.pushMatrix();
 | 
					        RenderSystem.pushMatrix();
 | 
				
			||||||
@@ -309,29 +312,29 @@ public abstract class BaseScreen<T extends Container> extends ContainerScreen<T>
 | 
				
			|||||||
            RenderSystem.scalef(0.5f, 0.5f, 1);
 | 
					            RenderSystem.scalef(0.5f, 0.5f, 1);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        font.drawStringWithShadow(qty, (large ? 16 : 30) - font.getStringWidth(qty), large ? 8 : 22, color);
 | 
					        font.drawStringWithShadow(matrixStack, qty, (large ? 16 : 30) - font.getStringWidth(qty), large ? 8 : 22, color);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        RenderSystem.popMatrix();
 | 
					        RenderSystem.popMatrix();
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public void renderString(int x, int y, String message) {
 | 
					    public void renderString(MatrixStack matrixStack, int x, int y, String message) {
 | 
				
			||||||
        renderString(x, y, message, RenderSettings.INSTANCE.getPrimaryColor());
 | 
					        renderString(matrixStack, x, y, message, RenderSettings.INSTANCE.getPrimaryColor());
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public void renderString(int x, int y, String message, int color) {
 | 
					    public void renderString(MatrixStack matrixStack, int x, int y, String message, int color) {
 | 
				
			||||||
        font.drawString(message, x, y, color);
 | 
					        font.drawString(matrixStack, message, x, y, color);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public void renderTooltip(int x, int y, String lines) {
 | 
					    public void renderTooltip(MatrixStack matrixStack, int x, int y, String lines) {
 | 
				
			||||||
        renderTooltip(ItemStack.EMPTY, x, y, lines);
 | 
					        renderTooltip(matrixStack, ItemStack.EMPTY, x, y, lines);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public void renderTooltip(@Nonnull ItemStack stack, int x, int y, String lines) {
 | 
					    public void renderTooltip(MatrixStack matrixStack, @Nonnull ItemStack stack, int x, int y, String lines) {
 | 
				
			||||||
        renderTooltip(stack, x, y, Arrays.asList(lines.split("\n")));
 | 
					        renderTooltip(matrixStack, stack, x, y, Arrays.stream(lines.split("\n")).map(StringTextComponent::new).collect(Collectors.toList()));
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public void renderTooltip(@Nonnull ItemStack stack, int x, int y, List<String> lines) {
 | 
					    public void renderTooltip(MatrixStack matrixStack, @Nonnull ItemStack stack, int x, int y, List<ITextComponent> lines) {
 | 
				
			||||||
        GuiUtils.drawHoveringText(stack, lines, x, y, width, height, -1, font);
 | 
					        GuiUtils.drawHoveringText(stack, matrixStack, lines, x, y, width, height, -1, font);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    protected void onPreInit() {
 | 
					    protected void onPreInit() {
 | 
				
			||||||
@@ -348,9 +351,9 @@ public abstract class BaseScreen<T extends Container> extends ContainerScreen<T>
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    public abstract void tick(int x, int y);
 | 
					    public abstract void tick(int x, int y);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public abstract void renderBackground(int x, int y, int mouseX, int mouseY);
 | 
					    public abstract void renderBackground(MatrixStack matrixStack, int x, int y, int mouseX, int mouseY);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public abstract void renderForeground(int mouseX, int mouseY);
 | 
					    public abstract void renderForeground(MatrixStack matrixStack, int mouseX, int mouseY);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public static <T> void executeLater(Class<T> clazz, Consumer<T> callback) {
 | 
					    public static <T> void executeLater(Class<T> clazz, Consumer<T> callback) {
 | 
				
			||||||
        Queue<Consumer> queue = ACTIONS.get(clazz);
 | 
					        Queue<Consumer> queue = ACTIONS.get(clazz);
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,5 +1,6 @@
 | 
				
			|||||||
package com.refinedmods.refinedstorage.screen;
 | 
					package com.refinedmods.refinedstorage.screen;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import com.mojang.blaze3d.matrix.MatrixStack;
 | 
				
			||||||
import com.refinedmods.refinedstorage.RS;
 | 
					import com.refinedmods.refinedstorage.RS;
 | 
				
			||||||
import com.refinedmods.refinedstorage.container.ConstructorContainer;
 | 
					import com.refinedmods.refinedstorage.container.ConstructorContainer;
 | 
				
			||||||
import com.refinedmods.refinedstorage.screen.widget.sidebutton.ConstructorDropSideButton;
 | 
					import com.refinedmods.refinedstorage.screen.widget.sidebutton.ConstructorDropSideButton;
 | 
				
			||||||
@@ -31,15 +32,15 @@ public class ConstructorScreen extends BaseScreen<ConstructorContainer> {
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
    public void renderBackground(int x, int y, int mouseX, int mouseY) {
 | 
					    public void renderBackground(MatrixStack matrixStack, int x, int y, int mouseX, int mouseY) {
 | 
				
			||||||
        bindTexture(RS.ID, "gui/constructor.png");
 | 
					        bindTexture(RS.ID, "gui/constructor.png");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        blit(x, y, 0, 0, xSize, ySize);
 | 
					        blit(matrixStack, x, y, 0, 0, xSize, ySize);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
    public void renderForeground(int mouseX, int mouseY) {
 | 
					    public void renderForeground(MatrixStack matrixStack, int mouseX, int mouseY) {
 | 
				
			||||||
        renderString(7, 7, title.getFormattedText());
 | 
					        renderString(matrixStack, 7, 7, title.getString());
 | 
				
			||||||
        renderString(7, 43, I18n.format("container.inventory"));
 | 
					        renderString(matrixStack, 7, 43, I18n.format("container.inventory"));
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,5 +1,6 @@
 | 
				
			|||||||
package com.refinedmods.refinedstorage.screen;
 | 
					package com.refinedmods.refinedstorage.screen;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import com.mojang.blaze3d.matrix.MatrixStack;
 | 
				
			||||||
import com.mojang.blaze3d.systems.RenderSystem;
 | 
					import com.mojang.blaze3d.systems.RenderSystem;
 | 
				
			||||||
import com.refinedmods.refinedstorage.RS;
 | 
					import com.refinedmods.refinedstorage.RS;
 | 
				
			||||||
import com.refinedmods.refinedstorage.apiimpl.network.Network;
 | 
					import com.refinedmods.refinedstorage.apiimpl.network.Network;
 | 
				
			||||||
@@ -9,6 +10,7 @@ import com.refinedmods.refinedstorage.screen.widget.sidebutton.RedstoneModeSideB
 | 
				
			|||||||
import com.refinedmods.refinedstorage.tile.ClientNode;
 | 
					import com.refinedmods.refinedstorage.tile.ClientNode;
 | 
				
			||||||
import com.refinedmods.refinedstorage.tile.ControllerTile;
 | 
					import com.refinedmods.refinedstorage.tile.ControllerTile;
 | 
				
			||||||
import com.refinedmods.refinedstorage.util.RenderUtils;
 | 
					import com.refinedmods.refinedstorage.util.RenderUtils;
 | 
				
			||||||
 | 
					import net.minecraft.client.renderer.RenderHelper;
 | 
				
			||||||
import net.minecraft.client.resources.I18n;
 | 
					import net.minecraft.client.resources.I18n;
 | 
				
			||||||
import net.minecraft.entity.player.PlayerInventory;
 | 
					import net.minecraft.entity.player.PlayerInventory;
 | 
				
			||||||
import net.minecraft.util.text.ITextComponent;
 | 
					import net.minecraft.util.text.ITextComponent;
 | 
				
			||||||
@@ -43,16 +45,16 @@ public class ControllerScreen extends BaseScreen<ControllerContainer> {
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
    public void renderBackground(int x, int y, int mouseX, int mouseY) {
 | 
					    public void renderBackground(MatrixStack matrixStack, int x, int y, int mouseX, int mouseY) {
 | 
				
			||||||
        bindTexture(RS.ID, "gui/controller.png");
 | 
					        bindTexture(RS.ID, "gui/controller.png");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        blit(x, y, 0, 0, xSize, ySize);
 | 
					        blit(matrixStack, x, y, 0, 0, xSize, ySize);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        int energyBarHeightNew = Network.getEnergyScaled(ControllerTile.ENERGY_STORED.getValue(), ControllerTile.ENERGY_CAPACITY.getValue(), ENERGY_BAR_HEIGHT);
 | 
					        int energyBarHeightNew = Network.getEnergyScaled(ControllerTile.ENERGY_STORED.getValue(), ControllerTile.ENERGY_CAPACITY.getValue(), ENERGY_BAR_HEIGHT);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        blit(x + ENERGY_BAR_X, y + ENERGY_BAR_Y + ENERGY_BAR_HEIGHT - energyBarHeightNew, 178, ENERGY_BAR_HEIGHT - energyBarHeightNew, ENERGY_BAR_WIDTH, energyBarHeightNew);
 | 
					        blit(matrixStack, x + ENERGY_BAR_X, y + ENERGY_BAR_Y + ENERGY_BAR_HEIGHT - energyBarHeightNew, 178, ENERGY_BAR_HEIGHT - energyBarHeightNew, ENERGY_BAR_WIDTH, energyBarHeightNew);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        scrollbar.render();
 | 
					        scrollbar.render(matrixStack);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
@@ -78,16 +80,16 @@ public class ControllerScreen extends BaseScreen<ControllerContainer> {
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
    public void renderForeground(int mouseX, int mouseY) {
 | 
					    public void renderForeground(MatrixStack matrixStack, int mouseX, int mouseY) {
 | 
				
			||||||
        renderString(7, 7, title.getFormattedText());
 | 
					        renderString(matrixStack, 7, 7, title.getString());
 | 
				
			||||||
        renderString(7, 87, I18n.format("container.inventory"));
 | 
					        renderString(matrixStack, 7, 87, I18n.format("container.inventory"));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        int x = 33;
 | 
					        int x = 33;
 | 
				
			||||||
        int y = 26;
 | 
					        int y = 26;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        int slot = scrollbar.getOffset() * 2;
 | 
					        int slot = scrollbar.getOffset() * 2;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        RenderSystem.setupGui3DDiffuseLighting();
 | 
					        RenderHelper.setupGui3DDiffuseLighting();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        List<ClientNode> nodes = ControllerTile.NODES.getValue();
 | 
					        List<ClientNode> nodes = ControllerTile.NODES.getValue();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -97,7 +99,7 @@ public class ControllerScreen extends BaseScreen<ControllerContainer> {
 | 
				
			|||||||
            if (slot < nodes.size()) {
 | 
					            if (slot < nodes.size()) {
 | 
				
			||||||
                ClientNode node = nodes.get(slot);
 | 
					                ClientNode node = nodes.get(slot);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                renderItem(x, y + 5, node.getStack());
 | 
					                renderItem(matrixStack, x, y + 5, node.getStack());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                float scale = minecraft.getForceUnicodeFont() ? 1F : 0.5F;
 | 
					                float scale = minecraft.getForceUnicodeFont() ? 1F : 0.5F;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -105,11 +107,12 @@ public class ControllerScreen extends BaseScreen<ControllerContainer> {
 | 
				
			|||||||
                RenderSystem.scalef(scale, scale, 1);
 | 
					                RenderSystem.scalef(scale, scale, 1);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                renderString(
 | 
					                renderString(
 | 
				
			||||||
 | 
					                    matrixStack,
 | 
				
			||||||
                    RenderUtils.getOffsetOnScale(x + 1, scale),
 | 
					                    RenderUtils.getOffsetOnScale(x + 1, scale),
 | 
				
			||||||
                    RenderUtils.getOffsetOnScale(y - 2, scale),
 | 
					                    RenderUtils.getOffsetOnScale(y - 2, scale),
 | 
				
			||||||
                    trimNameIfNeeded(!minecraft.getForceUnicodeFont(), node.getStack().getDisplayName().getString())
 | 
					                    trimNameIfNeeded(!minecraft.getForceUnicodeFont(), node.getStack().getDisplayName().getString())
 | 
				
			||||||
                );
 | 
					                );
 | 
				
			||||||
                renderString(RenderUtils.getOffsetOnScale(x + 21, scale), RenderUtils.getOffsetOnScale(y + 10, scale), node.getAmount() + "x");
 | 
					                renderString(matrixStack, RenderUtils.getOffsetOnScale(x + 21, scale), RenderUtils.getOffsetOnScale(y + 10, scale), node.getAmount() + "x");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                RenderSystem.popMatrix();
 | 
					                RenderSystem.popMatrix();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -129,11 +132,11 @@ public class ControllerScreen extends BaseScreen<ControllerContainer> {
 | 
				
			|||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if (hoveringNode != null) {
 | 
					        if (hoveringNode != null) {
 | 
				
			||||||
            renderTooltip(mouseX, mouseY, I18n.format("misc.refinedstorage.energy_usage_minimal", hoveringNode.getEnergyUsage()));
 | 
					            renderTooltip(matrixStack, mouseX, mouseY, I18n.format("misc.refinedstorage.energy_usage_minimal", hoveringNode.getEnergyUsage()));
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if (RenderUtils.inBounds(ENERGY_BAR_X, ENERGY_BAR_Y, ENERGY_BAR_WIDTH, ENERGY_BAR_HEIGHT, mouseX, mouseY)) {
 | 
					        if (RenderUtils.inBounds(ENERGY_BAR_X, ENERGY_BAR_Y, ENERGY_BAR_WIDTH, ENERGY_BAR_HEIGHT, mouseX, mouseY)) {
 | 
				
			||||||
            renderTooltip(mouseX, mouseY, I18n.format("misc.refinedstorage.energy_usage", ControllerTile.ENERGY_USAGE.getValue()) + "\n" + I18n.format("misc.refinedstorage.energy_stored", ControllerTile.ENERGY_STORED.getValue(), ControllerTile.ENERGY_CAPACITY.getValue()));
 | 
					            renderTooltip(matrixStack, mouseX, mouseY, I18n.format("misc.refinedstorage.energy_usage", ControllerTile.ENERGY_USAGE.getValue()) + "\n" + I18n.format("misc.refinedstorage.energy_stored", ControllerTile.ENERGY_STORED.getValue(), ControllerTile.ENERGY_CAPACITY.getValue()));
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,5 +1,6 @@
 | 
				
			|||||||
package com.refinedmods.refinedstorage.screen;
 | 
					package com.refinedmods.refinedstorage.screen;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import com.mojang.blaze3d.matrix.MatrixStack;
 | 
				
			||||||
import com.mojang.blaze3d.systems.RenderSystem;
 | 
					import com.mojang.blaze3d.systems.RenderSystem;
 | 
				
			||||||
import com.refinedmods.refinedstorage.RS;
 | 
					import com.refinedmods.refinedstorage.RS;
 | 
				
			||||||
import com.refinedmods.refinedstorage.api.network.grid.IGrid;
 | 
					import com.refinedmods.refinedstorage.api.network.grid.IGrid;
 | 
				
			||||||
@@ -76,10 +77,10 @@ public class CrafterManagerScreen extends BaseScreen<CrafterManagerContainer> im
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
    public void renderBackground(int x, int y, int mouseX, int mouseY) {
 | 
					    public void renderBackground(MatrixStack matrixStack, int x, int y, int mouseX, int mouseY) {
 | 
				
			||||||
        bindTexture(RS.ID, "gui/crafter_manager.png");
 | 
					        bindTexture(RS.ID, "gui/crafter_manager.png");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        blit(x, y, 0, 0, xSize, getTopHeight());
 | 
					        blit(matrixStack, x, y, 0, 0, xSize, getTopHeight());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        int rows = getVisibleRows();
 | 
					        int rows = getVisibleRows();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -88,30 +89,30 @@ public class CrafterManagerScreen extends BaseScreen<CrafterManagerContainer> im
 | 
				
			|||||||
        for (int i = 0; i < rows; ++i) {
 | 
					        for (int i = 0; i < rows; ++i) {
 | 
				
			||||||
            yy += 18;
 | 
					            yy += 18;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            blit(x, yy, 0, getTopHeight() + (i > 0 ? (i == rows - 1 ? 18 * 2 : 18) : 0), xSize, 18);
 | 
					            blit(matrixStack, x, yy, 0, getTopHeight() + (i > 0 ? (i == rows - 1 ? 18 * 2 : 18) : 0), xSize, 18);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        yy += 18;
 | 
					        yy += 18;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        blit(x, yy, 0, getTopHeight() + (18 * 3), xSize, getBottomHeight());
 | 
					        blit(matrixStack, x, yy, 0, getTopHeight() + (18 * 3), xSize, getBottomHeight());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if (crafterManager.isActiveOnClient()) {
 | 
					        if (crafterManager.isActiveOnClient()) {
 | 
				
			||||||
            for (Slot slot : container.inventorySlots) {
 | 
					            for (Slot slot : container.inventorySlots) {
 | 
				
			||||||
                if (slot instanceof CrafterManagerSlot && slot.isEnabled()) {
 | 
					                if (slot instanceof CrafterManagerSlot && slot.isEnabled()) {
 | 
				
			||||||
                    blit(x + slot.xPos - 1, y + slot.yPos - 1, 0, 193, 18, 18);
 | 
					                    blit(matrixStack, x + slot.xPos - 1, y + slot.yPos - 1, 0, 193, 18, 18);
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        searchField.render(0, 0, 0);
 | 
					        searchField.render(matrixStack, 0, 0, 0);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        scrollbar.render();
 | 
					        scrollbar.render(matrixStack);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
    public void renderForeground(int mouseX, int mouseY) {
 | 
					    public void renderForeground(MatrixStack matrixStack, int mouseX, int mouseY) {
 | 
				
			||||||
        renderString(7, 7, title.getFormattedText());
 | 
					        renderString(matrixStack, 7, 7, title.getString());
 | 
				
			||||||
        renderString(7, getYPlayerInventory() - 12, I18n.format("container.inventory"));
 | 
					        renderString(matrixStack, 7, getYPlayerInventory() - 12, I18n.format("container.inventory"));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if (container != null && crafterManager.isActiveOnClient()) {
 | 
					        if (container != null && crafterManager.isActiveOnClient()) {
 | 
				
			||||||
            for (Map.Entry<String, Integer> heading : container.getHeadings().entrySet()) {
 | 
					            for (Map.Entry<String, Integer> heading : container.getHeadings().entrySet()) {
 | 
				
			||||||
@@ -123,9 +124,9 @@ public class CrafterManagerScreen extends BaseScreen<CrafterManagerContainer> im
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
                    bindTexture(RS.ID, "gui/crafter_manager.png");
 | 
					                    bindTexture(RS.ID, "gui/crafter_manager.png");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                    blit(7, y, 0, 174, 18 * 9, 18);
 | 
					                    blit(matrixStack, 7, y, 0, 174, 18 * 9, 18);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                    renderString(7 + 4, y + 6, RenderUtils.shorten(I18n.format(heading.getKey()), 25));
 | 
					                    renderString(matrixStack, 7 + 4, y + 6, RenderUtils.shorten(I18n.format(heading.getKey()), 25));
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,5 +1,6 @@
 | 
				
			|||||||
package com.refinedmods.refinedstorage.screen;
 | 
					package com.refinedmods.refinedstorage.screen;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import com.mojang.blaze3d.matrix.MatrixStack;
 | 
				
			||||||
import com.refinedmods.refinedstorage.RS;
 | 
					import com.refinedmods.refinedstorage.RS;
 | 
				
			||||||
import com.refinedmods.refinedstorage.container.CrafterContainer;
 | 
					import com.refinedmods.refinedstorage.container.CrafterContainer;
 | 
				
			||||||
import com.refinedmods.refinedstorage.util.RenderUtils;
 | 
					import com.refinedmods.refinedstorage.util.RenderUtils;
 | 
				
			||||||
@@ -21,15 +22,15 @@ public class CrafterScreen extends BaseScreen<CrafterContainer> {
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
    public void renderBackground(int x, int y, int mouseX, int mouseY) {
 | 
					    public void renderBackground(MatrixStack matrixStack, int x, int y, int mouseX, int mouseY) {
 | 
				
			||||||
        bindTexture(RS.ID, "gui/crafter.png");
 | 
					        bindTexture(RS.ID, "gui/crafter.png");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        blit(x, y, 0, 0, xSize, ySize);
 | 
					        blit(matrixStack, x, y, 0, 0, xSize, ySize);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
    public void renderForeground(int mouseX, int mouseY) {
 | 
					    public void renderForeground(MatrixStack matrixStack, int mouseX, int mouseY) {
 | 
				
			||||||
        renderString(7, 7, RenderUtils.shorten(title.getFormattedText(), 26));
 | 
					        renderString(matrixStack, 7, 7, RenderUtils.shorten(title.getString(), 26));
 | 
				
			||||||
        renderString(7, 43, I18n.format("container.inventory"));
 | 
					        renderString(matrixStack, 7, 43, I18n.format("container.inventory"));
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,6 +1,7 @@
 | 
				
			|||||||
package com.refinedmods.refinedstorage.screen;
 | 
					package com.refinedmods.refinedstorage.screen;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import com.google.common.collect.Lists;
 | 
					import com.google.common.collect.Lists;
 | 
				
			||||||
 | 
					import com.mojang.blaze3d.matrix.MatrixStack;
 | 
				
			||||||
import com.mojang.blaze3d.systems.RenderSystem;
 | 
					import com.mojang.blaze3d.systems.RenderSystem;
 | 
				
			||||||
import com.refinedmods.refinedstorage.RS;
 | 
					import com.refinedmods.refinedstorage.RS;
 | 
				
			||||||
import com.refinedmods.refinedstorage.api.autocrafting.craftingmonitor.ICraftingMonitorElement;
 | 
					import com.refinedmods.refinedstorage.api.autocrafting.craftingmonitor.ICraftingMonitorElement;
 | 
				
			||||||
@@ -21,10 +22,12 @@ import com.refinedmods.refinedstorage.tile.craftingmonitor.ICraftingMonitor;
 | 
				
			|||||||
import com.refinedmods.refinedstorage.util.RenderUtils;
 | 
					import com.refinedmods.refinedstorage.util.RenderUtils;
 | 
				
			||||||
import net.minecraft.client.gui.FontRenderer;
 | 
					import net.minecraft.client.gui.FontRenderer;
 | 
				
			||||||
import net.minecraft.client.gui.widget.button.Button;
 | 
					import net.minecraft.client.gui.widget.button.Button;
 | 
				
			||||||
 | 
					import net.minecraft.client.renderer.RenderHelper;
 | 
				
			||||||
import net.minecraft.client.resources.I18n;
 | 
					import net.minecraft.client.resources.I18n;
 | 
				
			||||||
import net.minecraft.entity.player.PlayerInventory;
 | 
					import net.minecraft.entity.player.PlayerInventory;
 | 
				
			||||||
import net.minecraft.item.ItemStack;
 | 
					import net.minecraft.item.ItemStack;
 | 
				
			||||||
import net.minecraft.util.text.ITextComponent;
 | 
					import net.minecraft.util.text.ITextComponent;
 | 
				
			||||||
 | 
					import net.minecraft.util.text.TranslationTextComponent;
 | 
				
			||||||
import net.minecraftforge.fluids.FluidStack;
 | 
					import net.minecraftforge.fluids.FluidStack;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import javax.annotation.Nullable;
 | 
					import javax.annotation.Nullable;
 | 
				
			||||||
@@ -52,8 +55,8 @@ public class CraftingMonitorScreen extends BaseScreen<CraftingMonitorContainer>
 | 
				
			|||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        @Override
 | 
					        @Override
 | 
				
			||||||
        public void drawTooltip(int x, int y, int screenWidth, int screenHeight, FontRenderer fontRenderer) {
 | 
					        public void drawTooltip(MatrixStack matrixStack, int x, int y, int screenWidth, int screenHeight, FontRenderer fontRenderer) {
 | 
				
			||||||
            List<String> textLines = Lists.newArrayList(requested.getItem() != null ? requested.getItem().getDisplayName().getFormattedText() : requested.getFluid().getDisplayName().getFormattedText());
 | 
					            List<ITextComponent> textLines = Lists.newArrayList(requested.getItem() != null ? requested.getItem().getDisplayName() : requested.getFluid().getDisplayName());
 | 
				
			||||||
            List<String> smallTextLines = Lists.newArrayList();
 | 
					            List<String> smallTextLines = Lists.newArrayList();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            int totalSecs = (int) (System.currentTimeMillis() - executionStarted) / 1000;
 | 
					            int totalSecs = (int) (System.currentTimeMillis() - executionStarted) / 1000;
 | 
				
			||||||
@@ -64,7 +67,7 @@ public class CraftingMonitorScreen extends BaseScreen<CraftingMonitorContainer>
 | 
				
			|||||||
            smallTextLines.add(String.format("%02d:%02d", minutes, seconds));
 | 
					            smallTextLines.add(String.format("%02d:%02d", minutes, seconds));
 | 
				
			||||||
            smallTextLines.add(String.format("%d%%", completionPercentage));
 | 
					            smallTextLines.add(String.format("%d%%", completionPercentage));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            RenderUtils.drawTooltipWithSmallText(textLines, smallTextLines, true, ItemStack.EMPTY, x, y, screenWidth, screenHeight, fontRenderer);
 | 
					            RenderUtils.drawTooltipWithSmallText(matrixStack, textLines, smallTextLines, true, ItemStack.EMPTY, x, y, screenWidth, screenHeight, fontRenderer);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        @Override
 | 
					        @Override
 | 
				
			||||||
@@ -73,9 +76,9 @@ public class CraftingMonitorScreen extends BaseScreen<CraftingMonitorContainer>
 | 
				
			|||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        @Override
 | 
					        @Override
 | 
				
			||||||
        public void drawIcon(int x, int y, IElementDrawer<ItemStack> itemDrawer, IElementDrawer<FluidStack> fluidDrawer) {
 | 
					        public void drawIcon(MatrixStack matrixStack, int x, int y, IElementDrawer<ItemStack> itemDrawer, IElementDrawer<FluidStack> fluidDrawer) {
 | 
				
			||||||
            if (requested.getItem() != null) {
 | 
					            if (requested.getItem() != null) {
 | 
				
			||||||
                RenderSystem.setupGui3DDiffuseLighting();
 | 
					                RenderHelper.setupGui3DDiffuseLighting();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                itemDrawer.draw(x, y, requested.getItem());
 | 
					                itemDrawer.draw(x, y, requested.getItem());
 | 
				
			||||||
            } else {
 | 
					            } else {
 | 
				
			||||||
@@ -160,11 +163,11 @@ public class CraftingMonitorScreen extends BaseScreen<CraftingMonitorContainer>
 | 
				
			|||||||
            addSideButton(new RedstoneModeSideButton(this, craftingMonitor.getRedstoneModeParameter()));
 | 
					            addSideButton(new RedstoneModeSideButton(this, craftingMonitor.getRedstoneModeParameter()));
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        String cancel = I18n.format("gui.cancel");
 | 
					        ITextComponent cancel = new TranslationTextComponent("gui.cancel");
 | 
				
			||||||
        String cancelAll = I18n.format("misc.refinedstorage.cancel_all");
 | 
					        ITextComponent cancelAll = new TranslationTextComponent("misc.refinedstorage.cancel_all");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        int cancelButtonWidth = 14 + font.getStringWidth(cancel);
 | 
					        int cancelButtonWidth = 14 + font.getStringWidth(cancel.getString());
 | 
				
			||||||
        int cancelAllButtonWidth = 14 + font.getStringWidth(cancelAll);
 | 
					        int cancelAllButtonWidth = 14 + font.getStringWidth(cancelAll.getString());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        this.cancelButton = addButton(x + 7, y + 201 - 20 - 7, cancelButtonWidth, 20, cancel, false, true, btn -> {
 | 
					        this.cancelButton = addButton(x + 7, y + 201 - 20 - 7, cancelButtonWidth, 20, cancel, false, true, btn -> {
 | 
				
			||||||
            if (hasValidTabSelected()) {
 | 
					            if (hasValidTabSelected()) {
 | 
				
			||||||
@@ -233,27 +236,27 @@ public class CraftingMonitorScreen extends BaseScreen<CraftingMonitorContainer>
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
    public void renderBackground(int x, int y, int mouseX, int mouseY) {
 | 
					    public void renderBackground(MatrixStack matrixStack, int x, int y, int mouseX, int mouseY) {
 | 
				
			||||||
        if (craftingMonitor.isActiveOnClient()) {
 | 
					        if (craftingMonitor.isActiveOnClient()) {
 | 
				
			||||||
            tabs.drawBackground(x, y - tabs.getHeight());
 | 
					            tabs.drawBackground(matrixStack, x, y - tabs.getHeight());
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        bindTexture(RS.ID, "gui/crafting_preview.png");
 | 
					        bindTexture(RS.ID, "gui/crafting_preview.png");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        blit(x, y, 0, 0, xSize, ySize);
 | 
					        blit(matrixStack, x, y, 0, 0, xSize, ySize);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        scrollbar.render();
 | 
					        scrollbar.render(matrixStack);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        tabs.drawForeground(x, y - tabs.getHeight(), mouseX, mouseY, craftingMonitor.isActiveOnClient());
 | 
					        tabs.drawForeground(matrixStack, x, y - tabs.getHeight(), mouseX, mouseY, craftingMonitor.isActiveOnClient());
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
    public void renderForeground(int mouseX, int mouseY) {
 | 
					    public void renderForeground(MatrixStack matrixStack, int mouseX, int mouseY) {
 | 
				
			||||||
        renderString(7, 7, title.getFormattedText());
 | 
					        renderString(matrixStack, 7, 7, title.getString());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        int item = scrollbar != null ? scrollbar.getOffset() * 3 : 0;
 | 
					        int item = scrollbar != null ? scrollbar.getOffset() * 3 : 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        RenderSystem.setupGui3DDiffuseLighting();
 | 
					        RenderHelper.setupGui3DDiffuseLighting();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        int x = 7;
 | 
					        int x = 7;
 | 
				
			||||||
        int y = 20;
 | 
					        int y = 20;
 | 
				
			||||||
@@ -282,10 +285,10 @@ public class CraftingMonitorScreen extends BaseScreen<CraftingMonitorContainer>
 | 
				
			|||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if (itemSelectedTooltip != null && !itemSelectedTooltip.isEmpty()) {
 | 
					        if (itemSelectedTooltip != null && !itemSelectedTooltip.isEmpty()) {
 | 
				
			||||||
            renderTooltip(mouseX, mouseY, I18n.format(itemSelectedTooltip));
 | 
					            renderTooltip(matrixStack, mouseX, mouseY, I18n.format(itemSelectedTooltip));
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        tabs.drawTooltip(font, mouseX, mouseY);
 | 
					        tabs.drawTooltip(matrixStack, font, mouseX, mouseY);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,5 +1,6 @@
 | 
				
			|||||||
package com.refinedmods.refinedstorage.screen;
 | 
					package com.refinedmods.refinedstorage.screen;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import com.mojang.blaze3d.matrix.MatrixStack;
 | 
				
			||||||
import com.refinedmods.refinedstorage.RS;
 | 
					import com.refinedmods.refinedstorage.RS;
 | 
				
			||||||
import com.refinedmods.refinedstorage.container.DestructorContainer;
 | 
					import com.refinedmods.refinedstorage.container.DestructorContainer;
 | 
				
			||||||
import com.refinedmods.refinedstorage.screen.widget.sidebutton.*;
 | 
					import com.refinedmods.refinedstorage.screen.widget.sidebutton.*;
 | 
				
			||||||
@@ -31,15 +32,15 @@ public class DestructorScreen extends BaseScreen<DestructorContainer> {
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
    public void renderBackground(int x, int y, int mouseX, int mouseY) {
 | 
					    public void renderBackground(MatrixStack matrixStack, int x, int y, int mouseX, int mouseY) {
 | 
				
			||||||
        bindTexture(RS.ID, "gui/destructor.png");
 | 
					        bindTexture(RS.ID, "gui/destructor.png");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        blit(x, y, 0, 0, xSize, ySize);
 | 
					        blit(matrixStack, x, y, 0, 0, xSize, ySize);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
    public void renderForeground(int mouseX, int mouseY) {
 | 
					    public void renderForeground(MatrixStack matrixStack, int mouseX, int mouseY) {
 | 
				
			||||||
        renderString(7, 7, title.getFormattedText());
 | 
					        renderString(matrixStack, 7, 7, title.getString());
 | 
				
			||||||
        renderString(7, 43, I18n.format("container.inventory"));
 | 
					        renderString(matrixStack, 7, 43, I18n.format("container.inventory"));
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,5 +1,6 @@
 | 
				
			|||||||
package com.refinedmods.refinedstorage.screen;
 | 
					package com.refinedmods.refinedstorage.screen;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import com.mojang.blaze3d.matrix.MatrixStack;
 | 
				
			||||||
import com.refinedmods.refinedstorage.RS;
 | 
					import com.refinedmods.refinedstorage.RS;
 | 
				
			||||||
import com.refinedmods.refinedstorage.container.DetectorContainer;
 | 
					import com.refinedmods.refinedstorage.container.DetectorContainer;
 | 
				
			||||||
import com.refinedmods.refinedstorage.render.RenderSettings;
 | 
					import com.refinedmods.refinedstorage.render.RenderSettings;
 | 
				
			||||||
@@ -12,6 +13,7 @@ import net.minecraft.client.gui.widget.TextFieldWidget;
 | 
				
			|||||||
import net.minecraft.client.resources.I18n;
 | 
					import net.minecraft.client.resources.I18n;
 | 
				
			||||||
import net.minecraft.entity.player.PlayerInventory;
 | 
					import net.minecraft.entity.player.PlayerInventory;
 | 
				
			||||||
import net.minecraft.util.text.ITextComponent;
 | 
					import net.minecraft.util.text.ITextComponent;
 | 
				
			||||||
 | 
					import net.minecraft.util.text.StringTextComponent;
 | 
				
			||||||
import org.lwjgl.glfw.GLFW;
 | 
					import org.lwjgl.glfw.GLFW;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
public class DetectorScreen extends BaseScreen<DetectorContainer> {
 | 
					public class DetectorScreen extends BaseScreen<DetectorContainer> {
 | 
				
			||||||
@@ -29,7 +31,7 @@ public class DetectorScreen extends BaseScreen<DetectorContainer> {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
        addSideButton(new ExactModeSideButton(this, DetectorTile.COMPARE));
 | 
					        addSideButton(new ExactModeSideButton(this, DetectorTile.COMPARE));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        amountField = new TextFieldWidget(font, x + 41 + 1, y + 23 + 1, 50, font.FONT_HEIGHT, "");
 | 
					        amountField = new TextFieldWidget(font, x + 41 + 1, y + 23 + 1, 50, font.FONT_HEIGHT, new StringTextComponent(""));
 | 
				
			||||||
        amountField.setText(String.valueOf(DetectorTile.AMOUNT.getValue()));
 | 
					        amountField.setText(String.valueOf(DetectorTile.AMOUNT.getValue()));
 | 
				
			||||||
        amountField.setEnableBackgroundDrawing(false);
 | 
					        amountField.setEnableBackgroundDrawing(false);
 | 
				
			||||||
        amountField.setVisible(true);
 | 
					        amountField.setVisible(true);
 | 
				
			||||||
@@ -58,16 +60,16 @@ public class DetectorScreen extends BaseScreen<DetectorContainer> {
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
    public void renderBackground(int x, int y, int mouseX, int mouseY) {
 | 
					    public void renderBackground(MatrixStack matrixStack, int x, int y, int mouseX, int mouseY) {
 | 
				
			||||||
        bindTexture(RS.ID, "gui/detector.png");
 | 
					        bindTexture(RS.ID, "gui/detector.png");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        blit(x, y, 0, 0, xSize, ySize);
 | 
					        blit(matrixStack, x, y, 0, 0, xSize, ySize);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
    public void renderForeground(int mouseX, int mouseY) {
 | 
					    public void renderForeground(MatrixStack matrixStack, int mouseX, int mouseY) {
 | 
				
			||||||
        renderString(7, 7, title.getFormattedText());
 | 
					        renderString(matrixStack, 7, 7, title.getString());
 | 
				
			||||||
        renderString(7, 43, I18n.format("container.inventory"));
 | 
					        renderString(matrixStack, 7, 43, I18n.format("container.inventory"));
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,5 +1,6 @@
 | 
				
			|||||||
package com.refinedmods.refinedstorage.screen;
 | 
					package com.refinedmods.refinedstorage.screen;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import com.mojang.blaze3d.matrix.MatrixStack;
 | 
				
			||||||
import com.refinedmods.refinedstorage.container.DiskDriveContainer;
 | 
					import com.refinedmods.refinedstorage.container.DiskDriveContainer;
 | 
				
			||||||
import com.refinedmods.refinedstorage.tile.DiskDriveTile;
 | 
					import com.refinedmods.refinedstorage.tile.DiskDriveTile;
 | 
				
			||||||
import net.minecraft.client.resources.I18n;
 | 
					import net.minecraft.client.resources.I18n;
 | 
				
			||||||
@@ -25,9 +26,9 @@ public class DiskDriveScreen extends StorageScreen<DiskDriveContainer> {
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
    public void renderForeground(int mouseX, int mouseY) {
 | 
					    public void renderForeground(MatrixStack matrixStack, int mouseX, int mouseY) {
 | 
				
			||||||
        renderString(79, 42, I18n.format("gui.refinedstorage.disk_drive.disks"));
 | 
					        renderString(matrixStack, 79, 42, I18n.format("gui.refinedstorage.disk_drive.disks"));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        super.renderForeground(mouseX, mouseY);
 | 
					        super.renderForeground(matrixStack, mouseX, mouseY);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,5 +1,6 @@
 | 
				
			|||||||
package com.refinedmods.refinedstorage.screen;
 | 
					package com.refinedmods.refinedstorage.screen;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import com.mojang.blaze3d.matrix.MatrixStack;
 | 
				
			||||||
import com.refinedmods.refinedstorage.RS;
 | 
					import com.refinedmods.refinedstorage.RS;
 | 
				
			||||||
import com.refinedmods.refinedstorage.container.DiskManipulatorContainer;
 | 
					import com.refinedmods.refinedstorage.container.DiskManipulatorContainer;
 | 
				
			||||||
import com.refinedmods.refinedstorage.screen.widget.sidebutton.*;
 | 
					import com.refinedmods.refinedstorage.screen.widget.sidebutton.*;
 | 
				
			||||||
@@ -28,17 +29,17 @@ public class DiskManipulatorScreen extends BaseScreen<DiskManipulatorContainer>
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
    public void renderBackground(int x, int y, int mouseX, int mouseY) {
 | 
					    public void renderBackground(MatrixStack matrixStack, int x, int y, int mouseX, int mouseY) {
 | 
				
			||||||
        bindTexture(RS.ID, "gui/disk_manipulator.png");
 | 
					        bindTexture(RS.ID, "gui/disk_manipulator.png");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        blit(x, y, 0, 0, xSize, ySize);
 | 
					        blit(matrixStack, x, y, 0, 0, xSize, ySize);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
    public void renderForeground(int mouseX, int mouseY) {
 | 
					    public void renderForeground(MatrixStack matrixStack, int mouseX, int mouseY) {
 | 
				
			||||||
        renderString(7, 7, title.getFormattedText());
 | 
					        renderString(matrixStack, 7, 7, title.getString());
 | 
				
			||||||
        renderString(7, 117, I18n.format("container.inventory"));
 | 
					        renderString(matrixStack, 7, 117, I18n.format("container.inventory"));
 | 
				
			||||||
        renderString(43, 45, I18n.format("gui.refinedstorage.disk_manipulator.in"));
 | 
					        renderString(matrixStack, 43, 45, I18n.format("gui.refinedstorage.disk_manipulator.in"));
 | 
				
			||||||
        renderString(115, 45, I18n.format("gui.refinedstorage.disk_manipulator.out"));
 | 
					        renderString(matrixStack, 115, 45, I18n.format("gui.refinedstorage.disk_manipulator.out"));
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,5 +1,6 @@
 | 
				
			|||||||
package com.refinedmods.refinedstorage.screen;
 | 
					package com.refinedmods.refinedstorage.screen;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import com.mojang.blaze3d.matrix.MatrixStack;
 | 
				
			||||||
import com.refinedmods.refinedstorage.RS;
 | 
					import com.refinedmods.refinedstorage.RS;
 | 
				
			||||||
import com.refinedmods.refinedstorage.container.ExporterContainer;
 | 
					import com.refinedmods.refinedstorage.container.ExporterContainer;
 | 
				
			||||||
import com.refinedmods.refinedstorage.item.UpgradeItem;
 | 
					import com.refinedmods.refinedstorage.item.UpgradeItem;
 | 
				
			||||||
@@ -44,15 +45,15 @@ public class ExporterScreen extends BaseScreen<ExporterContainer> {
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
    public void renderBackground(int x, int y, int mouseX, int mouseY) {
 | 
					    public void renderBackground(MatrixStack matrixStack, int x, int y, int mouseX, int mouseY) {
 | 
				
			||||||
        bindTexture(RS.ID, "gui/exporter.png");
 | 
					        bindTexture(RS.ID, "gui/exporter.png");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        blit(x, y, 0, 0, xSize, ySize);
 | 
					        blit(matrixStack, x, y, 0, 0, xSize, ySize);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
    public void renderForeground(int mouseX, int mouseY) {
 | 
					    public void renderForeground(MatrixStack matrixStack, int mouseX, int mouseY) {
 | 
				
			||||||
        renderString(7, 7, title.getFormattedText());
 | 
					        renderString(matrixStack, 7, 7, title.getString());
 | 
				
			||||||
        renderString(7, 43, I18n.format("container.inventory"));
 | 
					        renderString(matrixStack, 7, 43, I18n.format("container.inventory"));
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,5 +1,6 @@
 | 
				
			|||||||
package com.refinedmods.refinedstorage.screen;
 | 
					package com.refinedmods.refinedstorage.screen;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import com.mojang.blaze3d.matrix.MatrixStack;
 | 
				
			||||||
import com.refinedmods.refinedstorage.RS;
 | 
					import com.refinedmods.refinedstorage.RS;
 | 
				
			||||||
import com.refinedmods.refinedstorage.api.util.IComparer;
 | 
					import com.refinedmods.refinedstorage.api.util.IComparer;
 | 
				
			||||||
import com.refinedmods.refinedstorage.api.util.IFilter;
 | 
					import com.refinedmods.refinedstorage.api.util.IFilter;
 | 
				
			||||||
@@ -15,6 +16,8 @@ import net.minecraft.client.resources.I18n;
 | 
				
			|||||||
import net.minecraft.entity.player.PlayerInventory;
 | 
					import net.minecraft.entity.player.PlayerInventory;
 | 
				
			||||||
import net.minecraft.item.ItemStack;
 | 
					import net.minecraft.item.ItemStack;
 | 
				
			||||||
import net.minecraft.util.text.ITextComponent;
 | 
					import net.minecraft.util.text.ITextComponent;
 | 
				
			||||||
 | 
					import net.minecraft.util.text.StringTextComponent;
 | 
				
			||||||
 | 
					import net.minecraft.util.text.TranslationTextComponent;
 | 
				
			||||||
import org.lwjgl.glfw.GLFW;
 | 
					import org.lwjgl.glfw.GLFW;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
public class FilterScreen extends BaseScreen<FilterContainer> {
 | 
					public class FilterScreen extends BaseScreen<FilterContainer> {
 | 
				
			||||||
@@ -44,19 +47,19 @@ public class FilterScreen extends BaseScreen<FilterContainer> {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
    public void onPostInit(int x, int y) {
 | 
					    public void onPostInit(int x, int y) {
 | 
				
			||||||
        addCheckBox(x + 7, y + 77, I18n.format("gui.refinedstorage.filter.compare_nbt"), (compare & IComparer.COMPARE_NBT) == IComparer.COMPARE_NBT, btn -> {
 | 
					        addCheckBox(x + 7, y + 77, new TranslationTextComponent("gui.refinedstorage.filter.compare_nbt"), (compare & IComparer.COMPARE_NBT) == IComparer.COMPARE_NBT, btn -> {
 | 
				
			||||||
            compare ^= IComparer.COMPARE_NBT;
 | 
					            compare ^= IComparer.COMPARE_NBT;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            sendUpdate();
 | 
					            sendUpdate();
 | 
				
			||||||
        });
 | 
					        });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        modFilterCheckBox = addCheckBox(0, y + 71 + 25, I18n.format("gui.refinedstorage.filter.mod_filter"), modFilter, btn -> {
 | 
					        modFilterCheckBox = addCheckBox(0, y + 71 + 25, new TranslationTextComponent("gui.refinedstorage.filter.mod_filter"), modFilter, btn -> {
 | 
				
			||||||
            modFilter = !modFilter;
 | 
					            modFilter = !modFilter;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            sendUpdate();
 | 
					            sendUpdate();
 | 
				
			||||||
        });
 | 
					        });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        modeButton = addButton(x + 7, y + 71 + 21, 0, 20, "", true, true, btn -> {
 | 
					        modeButton = addButton(x + 7, y + 71 + 21, 0, 20, new StringTextComponent(""), true, true, btn -> {
 | 
				
			||||||
            mode = mode == IFilter.MODE_WHITELIST ? IFilter.MODE_BLACKLIST : IFilter.MODE_WHITELIST;
 | 
					            mode = mode == IFilter.MODE_WHITELIST ? IFilter.MODE_BLACKLIST : IFilter.MODE_WHITELIST;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            updateModeButton(mode);
 | 
					            updateModeButton(mode);
 | 
				
			||||||
@@ -66,7 +69,7 @@ public class FilterScreen extends BaseScreen<FilterContainer> {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
        updateModeButton(mode);
 | 
					        updateModeButton(mode);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        nameField = new TextFieldWidget(font, x + 34, y + 121, 137 - 6, font.FONT_HEIGHT, "");
 | 
					        nameField = new TextFieldWidget(font, x + 34, y + 121, 137 - 6, font.FONT_HEIGHT, new StringTextComponent(""));
 | 
				
			||||||
        nameField.setText(name);
 | 
					        nameField.setText(name);
 | 
				
			||||||
        nameField.setEnableBackgroundDrawing(false);
 | 
					        nameField.setEnableBackgroundDrawing(false);
 | 
				
			||||||
        nameField.setVisible(true);
 | 
					        nameField.setVisible(true);
 | 
				
			||||||
@@ -81,9 +84,11 @@ public class FilterScreen extends BaseScreen<FilterContainer> {
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    private void updateModeButton(int mode) {
 | 
					    private void updateModeButton(int mode) {
 | 
				
			||||||
        String text = mode == IFilter.MODE_WHITELIST ? I18n.format("sidebutton.refinedstorage.mode.whitelist") : I18n.format("sidebutton.refinedstorage.mode.blacklist");
 | 
					        ITextComponent text = mode == IFilter.MODE_WHITELIST
 | 
				
			||||||
 | 
					            ? new TranslationTextComponent("sidebutton.refinedstorage.mode.whitelist")
 | 
				
			||||||
 | 
					            : new TranslationTextComponent("sidebutton.refinedstorage.mode.blacklist");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        modeButton.setWidth(font.getStringWidth(text) + 12);
 | 
					        modeButton.setWidth(font.getStringWidth(text.getString()) + 12);
 | 
				
			||||||
        modeButton.setMessage(text);
 | 
					        modeButton.setMessage(text);
 | 
				
			||||||
        modFilterCheckBox.x = modeButton.x + modeButton.getWidth() + 4;
 | 
					        modFilterCheckBox.x = modeButton.x + modeButton.getWidth() + 4;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
@@ -108,16 +113,16 @@ public class FilterScreen extends BaseScreen<FilterContainer> {
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
    public void renderBackground(int x, int y, int mouseX, int mouseY) {
 | 
					    public void renderBackground(MatrixStack matrixStack, int x, int y, int mouseX, int mouseY) {
 | 
				
			||||||
        bindTexture(RS.ID, "gui/filter.png");
 | 
					        bindTexture(RS.ID, "gui/filter.png");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        blit(x, y, 0, 0, xSize, ySize);
 | 
					        blit(matrixStack, x, y, 0, 0, xSize, ySize);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
    public void renderForeground(int mouseX, int mouseY) {
 | 
					    public void renderForeground(MatrixStack matrixStack, int mouseX, int mouseY) {
 | 
				
			||||||
        renderString(7, 7, title.getFormattedText());
 | 
					        renderString(matrixStack, 7, 7, title.getString());
 | 
				
			||||||
        renderString(7, 137, I18n.format("container.inventory"));
 | 
					        renderString(matrixStack, 7, 137, I18n.format("container.inventory"));
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public int getType() {
 | 
					    public int getType() {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -7,6 +7,7 @@ import com.refinedmods.refinedstorage.util.StackUtils;
 | 
				
			|||||||
import net.minecraft.client.gui.screen.Screen;
 | 
					import net.minecraft.client.gui.screen.Screen;
 | 
				
			||||||
import net.minecraft.client.resources.I18n;
 | 
					import net.minecraft.client.resources.I18n;
 | 
				
			||||||
import net.minecraft.entity.player.PlayerEntity;
 | 
					import net.minecraft.entity.player.PlayerEntity;
 | 
				
			||||||
 | 
					import net.minecraft.util.text.ITextComponent;
 | 
				
			||||||
import net.minecraft.util.text.TranslationTextComponent;
 | 
					import net.minecraft.util.text.TranslationTextComponent;
 | 
				
			||||||
import net.minecraftforge.fluids.FluidStack;
 | 
					import net.minecraftforge.fluids.FluidStack;
 | 
				
			||||||
import org.apache.commons.lang3.tuple.Pair;
 | 
					import org.apache.commons.lang3.tuple.Pair;
 | 
				
			||||||
@@ -40,7 +41,7 @@ public class FluidAmountScreen extends AmountSpecifyingScreen<FluidAmountContain
 | 
				
			|||||||
        super.onPostInit(x, y);
 | 
					        super.onPostInit(x, y);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if (alternativesScreenFactory != null) {
 | 
					        if (alternativesScreenFactory != null) {
 | 
				
			||||||
            addButton(x + 114, cancelButton.y + 24, getOkCancelButtonWidth(), 20, I18n.format("gui.refinedstorage.alternatives"), true, true, btn -> minecraft.displayGuiScreen(alternativesScreenFactory.apply(this)));
 | 
					            addButton(x + 114, cancelButton.y + 24, getOkCancelButtonWidth(), 20, new TranslationTextComponent("gui.refinedstorage.alternatives"), true, true, btn -> minecraft.displayGuiScreen(alternativesScreenFactory.apply(this)));
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -69,8 +70,8 @@ public class FluidAmountScreen extends AmountSpecifyingScreen<FluidAmountContain
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
    protected String getOkButtonText() {
 | 
					    protected ITextComponent getOkButtonText() {
 | 
				
			||||||
        return I18n.format("misc.refinedstorage.set");
 | 
					        return new TranslationTextComponent("misc.refinedstorage.set");
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,5 +1,6 @@
 | 
				
			|||||||
package com.refinedmods.refinedstorage.screen;
 | 
					package com.refinedmods.refinedstorage.screen;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import com.mojang.blaze3d.matrix.MatrixStack;
 | 
				
			||||||
import com.refinedmods.refinedstorage.RS;
 | 
					import com.refinedmods.refinedstorage.RS;
 | 
				
			||||||
import com.refinedmods.refinedstorage.apiimpl.API;
 | 
					import com.refinedmods.refinedstorage.apiimpl.API;
 | 
				
			||||||
import com.refinedmods.refinedstorage.apiimpl.network.node.FluidInterfaceNetworkNode;
 | 
					import com.refinedmods.refinedstorage.apiimpl.network.node.FluidInterfaceNetworkNode;
 | 
				
			||||||
@@ -30,10 +31,10 @@ public class FluidInterfaceScreen extends BaseScreen<FluidInterfaceContainer> {
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
    public void renderBackground(int x, int y, int mouseX, int mouseY) {
 | 
					    public void renderBackground(MatrixStack matrixStack, int x, int y, int mouseX, int mouseY) {
 | 
				
			||||||
        bindTexture(RS.ID, "gui/fluid_interface.png");
 | 
					        bindTexture(RS.ID, "gui/fluid_interface.png");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        blit(x, y, 0, 0, xSize, ySize);
 | 
					        blit(matrixStack, x, y, 0, 0, xSize, ySize);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if (!FluidInterfaceTile.TANK_IN.getValue().isEmpty()) {
 | 
					        if (!FluidInterfaceTile.TANK_IN.getValue().isEmpty()) {
 | 
				
			||||||
            TANK_RENDERER.render(x + 46, y + 56, FluidInterfaceTile.TANK_IN.getValue());
 | 
					            TANK_RENDERER.render(x + 46, y + 56, FluidInterfaceTile.TANK_IN.getValue());
 | 
				
			||||||
@@ -45,18 +46,18 @@ public class FluidInterfaceScreen extends BaseScreen<FluidInterfaceContainer> {
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
    public void renderForeground(int mouseX, int mouseY) {
 | 
					    public void renderForeground(MatrixStack matrixStack, int mouseX, int mouseY) {
 | 
				
			||||||
        renderString(7, 7, title.getFormattedText());
 | 
					        renderString(matrixStack, 7, 7, title.getString());
 | 
				
			||||||
        renderString(43 + 4, 20, I18n.format("gui.refinedstorage.fluid_interface.in"));
 | 
					        renderString(matrixStack, 43 + 4, 20, I18n.format("gui.refinedstorage.fluid_interface.in"));
 | 
				
			||||||
        renderString(115 + 1, 20, I18n.format("gui.refinedstorage.fluid_interface.out"));
 | 
					        renderString(matrixStack, 115 + 1, 20, I18n.format("gui.refinedstorage.fluid_interface.out"));
 | 
				
			||||||
        renderString(7, 111, I18n.format("container.inventory"));
 | 
					        renderString(matrixStack, 7, 111, I18n.format("container.inventory"));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if (RenderUtils.inBounds(46, 56, 12, 47, mouseX, mouseY) && !FluidInterfaceTile.TANK_IN.getValue().isEmpty()) {
 | 
					        if (RenderUtils.inBounds(46, 56, 12, 47, mouseX, mouseY) && !FluidInterfaceTile.TANK_IN.getValue().isEmpty()) {
 | 
				
			||||||
            renderTooltip(mouseX, mouseY, FluidInterfaceTile.TANK_IN.getValue().getDisplayName().getFormattedText() + "\n" + TextFormatting.GRAY + API.instance().getQuantityFormatter().formatInBucketForm(FluidInterfaceTile.TANK_IN.getValue().getAmount()) + TextFormatting.RESET);
 | 
					            renderTooltip(matrixStack, mouseX, mouseY, FluidInterfaceTile.TANK_IN.getValue().getDisplayName().getString() + "\n" + TextFormatting.GRAY + API.instance().getQuantityFormatter().formatInBucketForm(FluidInterfaceTile.TANK_IN.getValue().getAmount()) + TextFormatting.RESET);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if (RenderUtils.inBounds(118, 56, 12, 47, mouseX, mouseY) && !FluidInterfaceTile.TANK_OUT.getValue().isEmpty()) {
 | 
					        if (RenderUtils.inBounds(118, 56, 12, 47, mouseX, mouseY) && !FluidInterfaceTile.TANK_OUT.getValue().isEmpty()) {
 | 
				
			||||||
            renderTooltip(mouseX, mouseY, FluidInterfaceTile.TANK_OUT.getValue().getDisplayName().getFormattedText() + "\n" + TextFormatting.GRAY + API.instance().getQuantityFormatter().formatInBucketForm(FluidInterfaceTile.TANK_OUT.getValue().getAmount()) + TextFormatting.RESET);
 | 
					            renderTooltip(matrixStack, mouseX, mouseY, FluidInterfaceTile.TANK_OUT.getValue().getDisplayName().getString() + "\n" + TextFormatting.GRAY + API.instance().getQuantityFormatter().formatInBucketForm(FluidInterfaceTile.TANK_OUT.getValue().getAmount()) + TextFormatting.RESET);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,5 +1,6 @@
 | 
				
			|||||||
package com.refinedmods.refinedstorage.screen;
 | 
					package com.refinedmods.refinedstorage.screen;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import com.mojang.blaze3d.matrix.MatrixStack;
 | 
				
			||||||
import com.refinedmods.refinedstorage.RS;
 | 
					import com.refinedmods.refinedstorage.RS;
 | 
				
			||||||
import com.refinedmods.refinedstorage.container.ImporterContainer;
 | 
					import com.refinedmods.refinedstorage.container.ImporterContainer;
 | 
				
			||||||
import com.refinedmods.refinedstorage.screen.widget.sidebutton.ExactModeSideButton;
 | 
					import com.refinedmods.refinedstorage.screen.widget.sidebutton.ExactModeSideButton;
 | 
				
			||||||
@@ -32,15 +33,15 @@ public class ImporterScreen extends BaseScreen<ImporterContainer> {
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
    public void renderBackground(int x, int y, int mouseX, int mouseY) {
 | 
					    public void renderBackground(MatrixStack matrixStack, int x, int y, int mouseX, int mouseY) {
 | 
				
			||||||
        bindTexture(RS.ID, "gui/importer.png");
 | 
					        bindTexture(RS.ID, "gui/importer.png");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        blit(x, y, 0, 0, xSize, ySize);
 | 
					        blit(matrixStack, x, y, 0, 0, xSize, ySize);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
    public void renderForeground(int mouseX, int mouseY) {
 | 
					    public void renderForeground(MatrixStack matrixStack, int mouseX, int mouseY) {
 | 
				
			||||||
        renderString(7, 7, title.getFormattedText());
 | 
					        renderString(matrixStack, 7, 7, title.getString());
 | 
				
			||||||
        renderString(7, 43, I18n.format("container.inventory"));
 | 
					        renderString(matrixStack, 7, 43, I18n.format("container.inventory"));
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,5 +1,6 @@
 | 
				
			|||||||
package com.refinedmods.refinedstorage.screen;
 | 
					package com.refinedmods.refinedstorage.screen;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import com.mojang.blaze3d.matrix.MatrixStack;
 | 
				
			||||||
import com.refinedmods.refinedstorage.RS;
 | 
					import com.refinedmods.refinedstorage.RS;
 | 
				
			||||||
import com.refinedmods.refinedstorage.container.InterfaceContainer;
 | 
					import com.refinedmods.refinedstorage.container.InterfaceContainer;
 | 
				
			||||||
import com.refinedmods.refinedstorage.screen.widget.sidebutton.ExactModeSideButton;
 | 
					import com.refinedmods.refinedstorage.screen.widget.sidebutton.ExactModeSideButton;
 | 
				
			||||||
@@ -26,16 +27,16 @@ public class InterfaceScreen extends BaseScreen<InterfaceContainer> {
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
    public void renderBackground(int x, int y, int mouseX, int mouseY) {
 | 
					    public void renderBackground(MatrixStack matrixStack, int x, int y, int mouseX, int mouseY) {
 | 
				
			||||||
        bindTexture(RS.ID, "gui/interface.png");
 | 
					        bindTexture(RS.ID, "gui/interface.png");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        blit(x, y, 0, 0, xSize, ySize);
 | 
					        blit(matrixStack, x, y, 0, 0, xSize, ySize);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
    public void renderForeground(int mouseX, int mouseY) {
 | 
					    public void renderForeground(MatrixStack matrixStack, int mouseX, int mouseY) {
 | 
				
			||||||
        renderString(7, 7, I18n.format("gui.refinedstorage.interface.import"));
 | 
					        renderString(matrixStack, 7, 7, I18n.format("gui.refinedstorage.interface.import"));
 | 
				
			||||||
        renderString(7, 42, I18n.format("gui.refinedstorage.interface.export"));
 | 
					        renderString(matrixStack, 7, 42, I18n.format("gui.refinedstorage.interface.export"));
 | 
				
			||||||
        renderString(7, 122, I18n.format("container.inventory"));
 | 
					        renderString(matrixStack, 7, 122, I18n.format("container.inventory"));
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -7,6 +7,7 @@ import net.minecraft.client.gui.screen.Screen;
 | 
				
			|||||||
import net.minecraft.client.resources.I18n;
 | 
					import net.minecraft.client.resources.I18n;
 | 
				
			||||||
import net.minecraft.entity.player.PlayerEntity;
 | 
					import net.minecraft.entity.player.PlayerEntity;
 | 
				
			||||||
import net.minecraft.item.ItemStack;
 | 
					import net.minecraft.item.ItemStack;
 | 
				
			||||||
 | 
					import net.minecraft.util.text.ITextComponent;
 | 
				
			||||||
import net.minecraft.util.text.TranslationTextComponent;
 | 
					import net.minecraft.util.text.TranslationTextComponent;
 | 
				
			||||||
import net.minecraftforge.items.ItemHandlerHelper;
 | 
					import net.minecraftforge.items.ItemHandlerHelper;
 | 
				
			||||||
import org.apache.commons.lang3.tuple.Pair;
 | 
					import org.apache.commons.lang3.tuple.Pair;
 | 
				
			||||||
@@ -40,7 +41,7 @@ public class ItemAmountScreen extends AmountSpecifyingScreen<AmountContainer> {
 | 
				
			|||||||
        super.onPostInit(x, y);
 | 
					        super.onPostInit(x, y);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if (alternativesScreenFactory != null) {
 | 
					        if (alternativesScreenFactory != null) {
 | 
				
			||||||
            addButton(x + 114, cancelButton.y + 24, getOkCancelButtonWidth(), 20, I18n.format("gui.refinedstorage.alternatives"), true, true, btn -> minecraft.displayGuiScreen(alternativesScreenFactory.apply(this)));
 | 
					            addButton(x + 114, cancelButton.y + 24, getOkCancelButtonWidth(), 20, new TranslationTextComponent("gui.refinedstorage.alternatives"), true, true, btn -> minecraft.displayGuiScreen(alternativesScreenFactory.apply(this)));
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -69,8 +70,8 @@ public class ItemAmountScreen extends AmountSpecifyingScreen<AmountContainer> {
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
    protected String getOkButtonText() {
 | 
					    protected ITextComponent getOkButtonText() {
 | 
				
			||||||
        return I18n.format("misc.refinedstorage.set");
 | 
					        return new TranslationTextComponent("misc.refinedstorage.set");
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -9,6 +9,7 @@ import net.minecraft.entity.player.PlayerInventory;
 | 
				
			|||||||
import net.minecraft.inventory.IInventory;
 | 
					import net.minecraft.inventory.IInventory;
 | 
				
			||||||
import net.minecraft.item.Item;
 | 
					import net.minecraft.item.Item;
 | 
				
			||||||
import net.minecraft.item.ItemStack;
 | 
					import net.minecraft.item.ItemStack;
 | 
				
			||||||
 | 
					import net.minecraft.util.Util;
 | 
				
			||||||
import net.minecraft.util.text.ITextComponent;
 | 
					import net.minecraft.util.text.ITextComponent;
 | 
				
			||||||
import net.minecraft.util.text.TranslationTextComponent;
 | 
					import net.minecraft.util.text.TranslationTextComponent;
 | 
				
			||||||
import net.minecraftforge.client.event.InputEvent;
 | 
					import net.minecraftforge.client.event.InputEvent;
 | 
				
			||||||
@@ -26,13 +27,13 @@ public class KeyInputListener {
 | 
				
			|||||||
            PlayerInventory inv = Minecraft.getInstance().player.inventory;
 | 
					            PlayerInventory inv = Minecraft.getInstance().player.inventory;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            if (RSKeyBindings.OPEN_WIRELESS_GRID.isKeyDown()) {
 | 
					            if (RSKeyBindings.OPEN_WIRELESS_GRID.isKeyDown()) {
 | 
				
			||||||
                findAndOpen(inv, (error) -> Minecraft.getInstance().player.sendMessage(error), RSItems.WIRELESS_GRID, RSItems.CREATIVE_WIRELESS_GRID);
 | 
					                findAndOpen(inv, (error) -> Minecraft.getInstance().player.sendMessage(error, Util.DUMMY_UUID), RSItems.WIRELESS_GRID, RSItems.CREATIVE_WIRELESS_GRID);
 | 
				
			||||||
            } else if (RSKeyBindings.OPEN_WIRELESS_FLUID_GRID.isKeyDown()) {
 | 
					            } else if (RSKeyBindings.OPEN_WIRELESS_FLUID_GRID.isKeyDown()) {
 | 
				
			||||||
                findAndOpen(inv, (error) -> Minecraft.getInstance().player.sendMessage(error), RSItems.WIRELESS_FLUID_GRID, RSItems.CREATIVE_WIRELESS_FLUID_GRID);
 | 
					                findAndOpen(inv, (error) -> Minecraft.getInstance().player.sendMessage(error, Util.DUMMY_UUID), RSItems.WIRELESS_FLUID_GRID, RSItems.CREATIVE_WIRELESS_FLUID_GRID);
 | 
				
			||||||
            } else if (RSKeyBindings.OPEN_PORTABLE_GRID.isKeyDown()) {
 | 
					            } else if (RSKeyBindings.OPEN_PORTABLE_GRID.isKeyDown()) {
 | 
				
			||||||
                findAndOpen(inv, (error) -> Minecraft.getInstance().player.sendMessage(error), RSItems.PORTABLE_GRID, RSItems.CREATIVE_PORTABLE_GRID);
 | 
					                findAndOpen(inv, (error) -> Minecraft.getInstance().player.sendMessage(error, Util.DUMMY_UUID), RSItems.PORTABLE_GRID, RSItems.CREATIVE_PORTABLE_GRID);
 | 
				
			||||||
            } else if (RSKeyBindings.OPEN_WIRELESS_CRAFTING_MONITOR.isKeyDown()) {
 | 
					            } else if (RSKeyBindings.OPEN_WIRELESS_CRAFTING_MONITOR.isKeyDown()) {
 | 
				
			||||||
                findAndOpen(inv, (error) -> Minecraft.getInstance().player.sendMessage(error), RSItems.WIRELESS_CRAFTING_MONITOR, RSItems.CREATIVE_WIRELESS_CRAFTING_MONITOR);
 | 
					                findAndOpen(inv, (error) -> Minecraft.getInstance().player.sendMessage(error, Util.DUMMY_UUID), RSItems.WIRELESS_CRAFTING_MONITOR, RSItems.CREATIVE_WIRELESS_CRAFTING_MONITOR);
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,5 +1,6 @@
 | 
				
			|||||||
package com.refinedmods.refinedstorage.screen;
 | 
					package com.refinedmods.refinedstorage.screen;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import com.mojang.blaze3d.matrix.MatrixStack;
 | 
				
			||||||
import com.refinedmods.refinedstorage.RS;
 | 
					import com.refinedmods.refinedstorage.RS;
 | 
				
			||||||
import com.refinedmods.refinedstorage.container.NetworkTransmitterContainer;
 | 
					import com.refinedmods.refinedstorage.container.NetworkTransmitterContainer;
 | 
				
			||||||
import com.refinedmods.refinedstorage.screen.widget.sidebutton.RedstoneModeSideButton;
 | 
					import com.refinedmods.refinedstorage.screen.widget.sidebutton.RedstoneModeSideButton;
 | 
				
			||||||
@@ -26,15 +27,15 @@ public class NetworkTransmitterScreen extends BaseScreen<NetworkTransmitterConta
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
    public void renderBackground(int x, int y, int mouseX, int mouseY) {
 | 
					    public void renderBackground(MatrixStack matrixStack, int x, int y, int mouseX, int mouseY) {
 | 
				
			||||||
        bindTexture(RS.ID, "gui/network_transmitter.png");
 | 
					        bindTexture(RS.ID, "gui/network_transmitter.png");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        blit(x, y, 0, 0, xSize, ySize);
 | 
					        blit(matrixStack, x, y, 0, 0, xSize, ySize);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
    public void renderForeground(int mouseX, int mouseY) {
 | 
					    public void renderForeground(MatrixStack matrixStack, int mouseX, int mouseY) {
 | 
				
			||||||
        renderString(7, 7, title.getFormattedText());
 | 
					        renderString(matrixStack, 7, 7, title.getString());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        String text;
 | 
					        String text;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -49,7 +50,7 @@ public class NetworkTransmitterScreen extends BaseScreen<NetworkTransmitterConta
 | 
				
			|||||||
            text = receiverDim.get().toString();
 | 
					            text = receiverDim.get().toString();
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        renderString(51, 24, text);
 | 
					        renderString(matrixStack, 51, 24, text);
 | 
				
			||||||
        renderString(7, 42, I18n.format("container.inventory"));
 | 
					        renderString(matrixStack, 7, 42, I18n.format("container.inventory"));
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@@ -6,6 +6,7 @@ import net.minecraft.client.resources.I18n;
 | 
				
			|||||||
import net.minecraft.entity.player.PlayerEntity;
 | 
					import net.minecraft.entity.player.PlayerEntity;
 | 
				
			||||||
import net.minecraft.entity.player.PlayerInventory;
 | 
					import net.minecraft.entity.player.PlayerInventory;
 | 
				
			||||||
import net.minecraft.inventory.container.Container;
 | 
					import net.minecraft.inventory.container.Container;
 | 
				
			||||||
 | 
					import net.minecraft.util.text.ITextComponent;
 | 
				
			||||||
import net.minecraft.util.text.TranslationTextComponent;
 | 
					import net.minecraft.util.text.TranslationTextComponent;
 | 
				
			||||||
import org.apache.commons.lang3.tuple.Pair;
 | 
					import org.apache.commons.lang3.tuple.Pair;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -29,8 +30,8 @@ public class PriorityScreen extends AmountSpecifyingScreen<Container> {
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
    protected String getOkButtonText() {
 | 
					    protected ITextComponent getOkButtonText() {
 | 
				
			||||||
        return I18n.format("misc.refinedstorage.set");
 | 
					        return new TranslationTextComponent("misc.refinedstorage.set");
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,5 +1,6 @@
 | 
				
			|||||||
package com.refinedmods.refinedstorage.screen;
 | 
					package com.refinedmods.refinedstorage.screen;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import com.mojang.blaze3d.matrix.MatrixStack;
 | 
				
			||||||
import com.refinedmods.refinedstorage.RS;
 | 
					import com.refinedmods.refinedstorage.RS;
 | 
				
			||||||
import com.refinedmods.refinedstorage.container.RelayContainer;
 | 
					import com.refinedmods.refinedstorage.container.RelayContainer;
 | 
				
			||||||
import com.refinedmods.refinedstorage.screen.widget.sidebutton.RedstoneModeSideButton;
 | 
					import com.refinedmods.refinedstorage.screen.widget.sidebutton.RedstoneModeSideButton;
 | 
				
			||||||
@@ -23,15 +24,15 @@ public class RelayScreen extends BaseScreen<RelayContainer> {
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
    public void renderBackground(int x, int y, int mouseX, int mouseY) {
 | 
					    public void renderBackground(MatrixStack matrixStack, int x, int y, int mouseX, int mouseY) {
 | 
				
			||||||
        bindTexture(RS.ID, "gui/relay.png");
 | 
					        bindTexture(RS.ID, "gui/relay.png");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        blit(x, y, 0, 0, xSize, ySize);
 | 
					        blit(matrixStack, x, y, 0, 0, xSize, ySize);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
    public void renderForeground(int mouseX, int mouseY) {
 | 
					    public void renderForeground(MatrixStack matrixStack, int mouseX, int mouseY) {
 | 
				
			||||||
        renderString(7, 7, title.getFormattedText());
 | 
					        renderString(matrixStack, 7, 7, title.getString());
 | 
				
			||||||
        renderString(7, 39, I18n.format("container.inventory"));
 | 
					        renderString(matrixStack, 7, 39, I18n.format("container.inventory"));
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,5 +1,6 @@
 | 
				
			|||||||
package com.refinedmods.refinedstorage.screen;
 | 
					package com.refinedmods.refinedstorage.screen;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import com.mojang.blaze3d.matrix.MatrixStack;
 | 
				
			||||||
import com.refinedmods.refinedstorage.RS;
 | 
					import com.refinedmods.refinedstorage.RS;
 | 
				
			||||||
import com.refinedmods.refinedstorage.api.network.security.Permission;
 | 
					import com.refinedmods.refinedstorage.api.network.security.Permission;
 | 
				
			||||||
import com.refinedmods.refinedstorage.container.SecurityManagerContainer;
 | 
					import com.refinedmods.refinedstorage.container.SecurityManagerContainer;
 | 
				
			||||||
@@ -13,6 +14,7 @@ import net.minecraft.client.resources.I18n;
 | 
				
			|||||||
import net.minecraft.entity.player.PlayerInventory;
 | 
					import net.minecraft.entity.player.PlayerInventory;
 | 
				
			||||||
import net.minecraft.item.ItemStack;
 | 
					import net.minecraft.item.ItemStack;
 | 
				
			||||||
import net.minecraft.util.text.ITextComponent;
 | 
					import net.minecraft.util.text.ITextComponent;
 | 
				
			||||||
 | 
					import net.minecraft.util.text.TranslationTextComponent;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
public class SecurityManagerScreen extends BaseScreen<SecurityManagerContainer> {
 | 
					public class SecurityManagerScreen extends BaseScreen<SecurityManagerContainer> {
 | 
				
			||||||
    private final SecurityManagerTile securityManager;
 | 
					    private final SecurityManagerTile securityManager;
 | 
				
			||||||
@@ -30,12 +32,12 @@ public class SecurityManagerScreen extends BaseScreen<SecurityManagerContainer>
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
        int padding = 15;
 | 
					        int padding = 15;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        permissions[0] = addCheckBox(x + 7, y + 93, I18n.format("gui.refinedstorage.security_manager.permission.0"), false, btn -> handle(0));
 | 
					        permissions[0] = addCheckBox(x + 7, y + 93, new TranslationTextComponent("gui.refinedstorage.security_manager.permission.0"), false, btn -> handle(0));
 | 
				
			||||||
        permissions[1] = addCheckBox(permissions[0].x, permissions[0].y + padding, I18n.format("gui.refinedstorage.security_manager.permission.1"), false, btn -> handle(1));
 | 
					        permissions[1] = addCheckBox(permissions[0].x, permissions[0].y + padding, new TranslationTextComponent("gui.refinedstorage.security_manager.permission.1"), false, btn -> handle(1));
 | 
				
			||||||
        permissions[2] = addCheckBox(permissions[1].x, permissions[1].y + padding, I18n.format("gui.refinedstorage.security_manager.permission.2"), false, btn -> handle(2));
 | 
					        permissions[2] = addCheckBox(permissions[1].x, permissions[1].y + padding, new TranslationTextComponent("gui.refinedstorage.security_manager.permission.2"), false, btn -> handle(2));
 | 
				
			||||||
        permissions[3] = addCheckBox(permissions[0].x + 90, permissions[0].y, I18n.format("gui.refinedstorage.security_manager.permission.3"), false, btn -> handle(3));
 | 
					        permissions[3] = addCheckBox(permissions[0].x + 90, permissions[0].y, new TranslationTextComponent("gui.refinedstorage.security_manager.permission.3"), false, btn -> handle(3));
 | 
				
			||||||
        permissions[4] = addCheckBox(permissions[3].x, permissions[3].y + padding, I18n.format("gui.refinedstorage.security_manager.permission.4"), false, btn -> handle(4));
 | 
					        permissions[4] = addCheckBox(permissions[3].x, permissions[3].y + padding, new TranslationTextComponent("gui.refinedstorage.security_manager.permission.4"), false, btn -> handle(4));
 | 
				
			||||||
        permissions[5] = addCheckBox(permissions[4].x, permissions[4].y + padding, I18n.format("gui.refinedstorage.security_manager.permission.5"), false, btn -> handle(5));
 | 
					        permissions[5] = addCheckBox(permissions[4].x, permissions[4].y + padding, new TranslationTextComponent("gui.refinedstorage.security_manager.permission.5"), false, btn -> handle(5));
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    private void handle(int i) {
 | 
					    private void handle(int i) {
 | 
				
			||||||
@@ -52,23 +54,23 @@ public class SecurityManagerScreen extends BaseScreen<SecurityManagerContainer>
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
    public void renderBackground(int x, int y, int mouseX, int mouseY) {
 | 
					    public void renderBackground(MatrixStack matrixStack, int x, int y, int mouseX, int mouseY) {
 | 
				
			||||||
        bindTexture(RS.ID, "gui/security_manager.png");
 | 
					        bindTexture(RS.ID, "gui/security_manager.png");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        blit(x, y, 0, 0, xSize, ySize);
 | 
					        blit(matrixStack, x, y, 0, 0, xSize, ySize);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
    public void renderForeground(int mouseX, int mouseY) {
 | 
					    public void renderForeground(MatrixStack matrixStack, int mouseX, int mouseY) {
 | 
				
			||||||
        renderString(7, 7, title.getFormattedText());
 | 
					        renderString(matrixStack, 7, 7, title.getString());
 | 
				
			||||||
        renderString(7, 59, I18n.format("gui.refinedstorage.security_manager.configure"));
 | 
					        renderString(matrixStack, 7, 59, I18n.format("gui.refinedstorage.security_manager.configure"));
 | 
				
			||||||
        renderString(7, 140, I18n.format("container.inventory"));
 | 
					        renderString(matrixStack, 7, 140, I18n.format("container.inventory"));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        for (int i = 0; i < permissions.length; ++i) {
 | 
					        for (int i = 0; i < permissions.length; ++i) {
 | 
				
			||||||
            CheckboxWidget permission = permissions[i];
 | 
					            CheckboxWidget permission = permissions[i];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            if (RenderUtils.inBounds(permission.x - guiLeft, permission.y - guiTop, permission.getWidth(), permission.getHeight(), mouseX, mouseY)) {
 | 
					            if (RenderUtils.inBounds(permission.x - guiLeft, permission.y - guiTop, permission.getWidth(), permission.getHeight(), mouseX, mouseY)) {
 | 
				
			||||||
                renderTooltip(mouseX, mouseY, I18n.format("gui.refinedstorage.security_manager.permission." + i + ".tooltip"));
 | 
					                renderTooltip(matrixStack, mouseX, mouseY, I18n.format("gui.refinedstorage.security_manager.permission." + i + ".tooltip"));
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,5 +1,6 @@
 | 
				
			|||||||
package com.refinedmods.refinedstorage.screen;
 | 
					package com.refinedmods.refinedstorage.screen;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import com.mojang.blaze3d.matrix.MatrixStack;
 | 
				
			||||||
import com.refinedmods.refinedstorage.RS;
 | 
					import com.refinedmods.refinedstorage.RS;
 | 
				
			||||||
import com.refinedmods.refinedstorage.container.StorageMonitorContainer;
 | 
					import com.refinedmods.refinedstorage.container.StorageMonitorContainer;
 | 
				
			||||||
import com.refinedmods.refinedstorage.screen.widget.sidebutton.ExactModeSideButton;
 | 
					import com.refinedmods.refinedstorage.screen.widget.sidebutton.ExactModeSideButton;
 | 
				
			||||||
@@ -25,15 +26,15 @@ public class StorageMonitorScreen extends BaseScreen<StorageMonitorContainer> {
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
    public void renderBackground(int x, int y, int mouseX, int mouseY) {
 | 
					    public void renderBackground(MatrixStack matrixStack, int x, int y, int mouseX, int mouseY) {
 | 
				
			||||||
        bindTexture(RS.ID, "gui/storage_monitor.png");
 | 
					        bindTexture(RS.ID, "gui/storage_monitor.png");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        blit(x, y, 0, 0, xSize, ySize);
 | 
					        blit(matrixStack, x, y, 0, 0, xSize, ySize);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
    public void renderForeground(int mouseX, int mouseY) {
 | 
					    public void renderForeground(MatrixStack matrixStack, int mouseX, int mouseY) {
 | 
				
			||||||
        renderString(7, 7, title.getFormattedText());
 | 
					        renderString(matrixStack, 7, 7, title.getString());
 | 
				
			||||||
        renderString(7, 43, I18n.format("container.inventory"));
 | 
					        renderString(matrixStack, 7, 43, I18n.format("container.inventory"));
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,5 +1,6 @@
 | 
				
			|||||||
package com.refinedmods.refinedstorage.screen;
 | 
					package com.refinedmods.refinedstorage.screen;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import com.mojang.blaze3d.matrix.MatrixStack;
 | 
				
			||||||
import com.refinedmods.refinedstorage.RS;
 | 
					import com.refinedmods.refinedstorage.RS;
 | 
				
			||||||
import com.refinedmods.refinedstorage.api.storage.AccessType;
 | 
					import com.refinedmods.refinedstorage.api.storage.AccessType;
 | 
				
			||||||
import com.refinedmods.refinedstorage.apiimpl.API;
 | 
					import com.refinedmods.refinedstorage.apiimpl.API;
 | 
				
			||||||
@@ -11,6 +12,7 @@ import net.minecraft.entity.player.PlayerInventory;
 | 
				
			|||||||
import net.minecraft.inventory.container.Container;
 | 
					import net.minecraft.inventory.container.Container;
 | 
				
			||||||
import net.minecraft.util.text.ITextComponent;
 | 
					import net.minecraft.util.text.ITextComponent;
 | 
				
			||||||
import net.minecraft.util.text.TextFormatting;
 | 
					import net.minecraft.util.text.TextFormatting;
 | 
				
			||||||
 | 
					import net.minecraft.util.text.TranslationTextComponent;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import javax.annotation.Nullable;
 | 
					import javax.annotation.Nullable;
 | 
				
			||||||
import java.util.function.Supplier;
 | 
					import java.util.function.Supplier;
 | 
				
			||||||
@@ -79,7 +81,7 @@ public class StorageScreen<T extends Container> extends BaseScreen<T> {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
        int buttonWidth = 10 + font.getStringWidth(I18n.format("misc.refinedstorage.priority"));
 | 
					        int buttonWidth = 10 + font.getStringWidth(I18n.format("misc.refinedstorage.priority"));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        addButton(x + 169 - buttonWidth, y + 41, buttonWidth, 20, I18n.format("misc.refinedstorage.priority"), true, true, btn -> minecraft.displayGuiScreen(new PriorityScreen(this, priorityParameter, playerInventory)));
 | 
					        addButton(x + 169 - buttonWidth, y + 41, buttonWidth, 20, new TranslationTextComponent("misc.refinedstorage.priority"), true, true, btn -> minecraft.displayGuiScreen(new PriorityScreen(this, priorityParameter, playerInventory)));
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
@@ -87,25 +89,25 @@ public class StorageScreen<T extends Container> extends BaseScreen<T> {
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
    public void renderBackground(int x, int y, int mouseX, int mouseY) {
 | 
					    public void renderBackground(MatrixStack matrixStack, int x, int y, int mouseX, int mouseY) {
 | 
				
			||||||
        bindTexture(RS.ID, texture);
 | 
					        bindTexture(RS.ID, texture);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        blit(x, y, 0, 0, xSize, ySize);
 | 
					        blit(matrixStack, x, y, 0, 0, xSize, ySize);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        int barHeightNew = (int) ((float) storedSupplier.get() / (float) capacitySupplier.get() * (float) BAR_HEIGHT);
 | 
					        int barHeightNew = (int) ((float) storedSupplier.get() / (float) capacitySupplier.get() * (float) BAR_HEIGHT);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        blit(x + BAR_X, y + BAR_Y + BAR_HEIGHT - barHeightNew, 179, BAR_HEIGHT - barHeightNew, BAR_WIDTH, barHeightNew);
 | 
					        blit(matrixStack, x + BAR_X, y + BAR_Y + BAR_HEIGHT - barHeightNew, 179, BAR_HEIGHT - barHeightNew, BAR_WIDTH, barHeightNew);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
    public void renderForeground(int mouseX, int mouseY) {
 | 
					    public void renderForeground(MatrixStack matrixStack, int mouseX, int mouseY) {
 | 
				
			||||||
        renderString(7, 7, title.getFormattedText());
 | 
					        renderString(matrixStack, 7, 7, title.getString());
 | 
				
			||||||
        renderString(7, 42, capacitySupplier.get() == -1 ?
 | 
					        renderString(matrixStack, 7, 42, capacitySupplier.get() == -1 ?
 | 
				
			||||||
            I18n.format("misc.refinedstorage.storage.stored_minimal", API.instance().getQuantityFormatter().formatWithUnits(storedSupplier.get())) :
 | 
					            I18n.format("misc.refinedstorage.storage.stored_minimal", API.instance().getQuantityFormatter().formatWithUnits(storedSupplier.get())) :
 | 
				
			||||||
            I18n.format("misc.refinedstorage.storage.stored_capacity_minimal", API.instance().getQuantityFormatter().formatWithUnits(storedSupplier.get()), API.instance().getQuantityFormatter().formatWithUnits(capacitySupplier.get()))
 | 
					            I18n.format("misc.refinedstorage.storage.stored_capacity_minimal", API.instance().getQuantityFormatter().formatWithUnits(storedSupplier.get()), API.instance().getQuantityFormatter().formatWithUnits(capacitySupplier.get()))
 | 
				
			||||||
        );
 | 
					        );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        renderString(7, 129, I18n.format("container.inventory"));
 | 
					        renderString(matrixStack, 7, 129, I18n.format("container.inventory"));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if (RenderUtils.inBounds(BAR_X, BAR_Y, BAR_WIDTH, BAR_HEIGHT, mouseX, mouseY)) {
 | 
					        if (RenderUtils.inBounds(BAR_X, BAR_Y, BAR_WIDTH, BAR_HEIGHT, mouseX, mouseY)) {
 | 
				
			||||||
            int full = 0;
 | 
					            int full = 0;
 | 
				
			||||||
@@ -114,7 +116,7 @@ public class StorageScreen<T extends Container> extends BaseScreen<T> {
 | 
				
			|||||||
                full = (int) ((float) storedSupplier.get() / (float) capacitySupplier.get() * 100f);
 | 
					                full = (int) ((float) storedSupplier.get() / (float) capacitySupplier.get() * 100f);
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            renderTooltip(mouseX, mouseY, (capacitySupplier.get() == -1 ?
 | 
					            renderTooltip(matrixStack, mouseX, mouseY, (capacitySupplier.get() == -1 ?
 | 
				
			||||||
                I18n.format("misc.refinedstorage.storage.stored_minimal", API.instance().getQuantityFormatter().format(storedSupplier.get())) :
 | 
					                I18n.format("misc.refinedstorage.storage.stored_minimal", API.instance().getQuantityFormatter().format(storedSupplier.get())) :
 | 
				
			||||||
                I18n.format("misc.refinedstorage.storage.stored_capacity_minimal", API.instance().getQuantityFormatter().format(storedSupplier.get()), API.instance().getQuantityFormatter().format(capacitySupplier.get()))
 | 
					                I18n.format("misc.refinedstorage.storage.stored_capacity_minimal", API.instance().getQuantityFormatter().format(storedSupplier.get()), API.instance().getQuantityFormatter().format(capacitySupplier.get()))
 | 
				
			||||||
            ) + "\n" + TextFormatting.GRAY + I18n.format("misc.refinedstorage.storage.full", full));
 | 
					            ) + "\n" + TextFormatting.GRAY + I18n.format("misc.refinedstorage.storage.full", full));
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,5 +1,6 @@
 | 
				
			|||||||
package com.refinedmods.refinedstorage.screen;
 | 
					package com.refinedmods.refinedstorage.screen;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import com.mojang.blaze3d.matrix.MatrixStack;
 | 
				
			||||||
import com.refinedmods.refinedstorage.RS;
 | 
					import com.refinedmods.refinedstorage.RS;
 | 
				
			||||||
import com.refinedmods.refinedstorage.container.WirelessTransmitterContainer;
 | 
					import com.refinedmods.refinedstorage.container.WirelessTransmitterContainer;
 | 
				
			||||||
import com.refinedmods.refinedstorage.screen.widget.sidebutton.RedstoneModeSideButton;
 | 
					import com.refinedmods.refinedstorage.screen.widget.sidebutton.RedstoneModeSideButton;
 | 
				
			||||||
@@ -23,16 +24,16 @@ public class WirelessTransmitterScreen extends BaseScreen<WirelessTransmitterCon
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
    public void renderBackground(int x, int y, int mouseX, int mouseY) {
 | 
					    public void renderBackground(MatrixStack matrixStack, int x, int y, int mouseX, int mouseY) {
 | 
				
			||||||
        bindTexture(RS.ID, "gui/wireless_transmitter.png");
 | 
					        bindTexture(RS.ID, "gui/wireless_transmitter.png");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        blit(x, y, 0, 0, xSize, ySize);
 | 
					        blit(matrixStack, x, y, 0, 0, xSize, ySize);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
    public void renderForeground(int mouseX, int mouseY) {
 | 
					    public void renderForeground(MatrixStack matrixStack, int mouseX, int mouseY) {
 | 
				
			||||||
        renderString(7, 7, title.getFormattedText());
 | 
					        renderString(matrixStack, 7, 7, title.getString());
 | 
				
			||||||
        renderString(28, 25, I18n.format("gui.refinedstorage.wireless_transmitter.distance", WirelessTransmitterTile.RANGE.getValue()));
 | 
					        renderString(matrixStack, 28, 25, I18n.format("gui.refinedstorage.wireless_transmitter.distance", WirelessTransmitterTile.RANGE.getValue()));
 | 
				
			||||||
        renderString(7, 43, I18n.format("container.inventory"));
 | 
					        renderString(matrixStack, 7, 43, I18n.format("container.inventory"));
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,5 +1,6 @@
 | 
				
			|||||||
package com.refinedmods.refinedstorage.screen.grid;
 | 
					package com.refinedmods.refinedstorage.screen.grid;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import com.mojang.blaze3d.matrix.MatrixStack;
 | 
				
			||||||
import com.mojang.blaze3d.systems.RenderSystem;
 | 
					import com.mojang.blaze3d.systems.RenderSystem;
 | 
				
			||||||
import com.refinedmods.refinedstorage.RS;
 | 
					import com.refinedmods.refinedstorage.RS;
 | 
				
			||||||
import com.refinedmods.refinedstorage.container.AlternativesContainer;
 | 
					import com.refinedmods.refinedstorage.container.AlternativesContainer;
 | 
				
			||||||
@@ -22,6 +23,8 @@ import net.minecraft.tags.FluidTags;
 | 
				
			|||||||
import net.minecraft.tags.ItemTags;
 | 
					import net.minecraft.tags.ItemTags;
 | 
				
			||||||
import net.minecraft.util.ResourceLocation;
 | 
					import net.minecraft.util.ResourceLocation;
 | 
				
			||||||
import net.minecraft.util.text.ITextComponent;
 | 
					import net.minecraft.util.text.ITextComponent;
 | 
				
			||||||
 | 
					import net.minecraft.util.text.StringTextComponent;
 | 
				
			||||||
 | 
					import net.minecraft.util.text.TranslationTextComponent;
 | 
				
			||||||
import net.minecraftforge.fluids.FluidAttributes;
 | 
					import net.minecraftforge.fluids.FluidAttributes;
 | 
				
			||||||
import net.minecraftforge.fluids.FluidStack;
 | 
					import net.minecraftforge.fluids.FluidStack;
 | 
				
			||||||
import org.lwjgl.glfw.GLFW;
 | 
					import org.lwjgl.glfw.GLFW;
 | 
				
			||||||
@@ -133,8 +136,8 @@ public class AlternativesScreen extends BaseScreen<AlternativesContainer> {
 | 
				
			|||||||
            }
 | 
					            }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        Button apply = addButton(x + 7, y + 114, 50, 20, I18n.format("gui.refinedstorage.alternatives.apply"), lines.size() > 1, true, btn -> apply());
 | 
					        Button apply = addButton(x + 7, y + 114, 50, 20, new TranslationTextComponent("gui.refinedstorage.alternatives.apply"), lines.size() > 1, true, btn -> apply());
 | 
				
			||||||
        addButton(x + apply.getWidth() + 7 + 4, y + 114, 50, 20, I18n.format("gui.cancel"), true, true, btn -> close());
 | 
					        addButton(x + apply.getWidth() + 7 + 4, y + 114, 50, 20, new TranslationTextComponent("gui.cancel"), true, true, btn -> close());
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
@@ -152,17 +155,17 @@ public class AlternativesScreen extends BaseScreen<AlternativesContainer> {
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
    public void renderBackground(int x, int y, int mouseX, int mouseY) {
 | 
					    public void renderBackground(MatrixStack matrixStack, int x, int y, int mouseX, int mouseY) {
 | 
				
			||||||
        bindTexture(RS.ID, "gui/alternatives.png");
 | 
					        bindTexture(RS.ID, "gui/alternatives.png");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        blit(x, y, 0, 0, xSize, ySize);
 | 
					        blit(matrixStack, x, y, 0, 0, xSize, ySize);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        scrollbar.render();
 | 
					        scrollbar.render(matrixStack);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
    public void renderForeground(int mouseX, int mouseY) {
 | 
					    public void renderForeground(MatrixStack matrixStack, int mouseX, int mouseY) {
 | 
				
			||||||
        renderString(7, 7, title.getFormattedText());
 | 
					        renderString(matrixStack, 7, 7, title.getString());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        int x = 8;
 | 
					        int x = 8;
 | 
				
			||||||
        int y = 20;
 | 
					        int y = 20;
 | 
				
			||||||
@@ -172,7 +175,7 @@ public class AlternativesScreen extends BaseScreen<AlternativesContainer> {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
            if (visible) {
 | 
					            if (visible) {
 | 
				
			||||||
                lines.get(i).layoutDependantControls(true, guiLeft + x + 3, guiTop + y + 3);
 | 
					                lines.get(i).layoutDependantControls(true, guiLeft + x + 3, guiTop + y + 3);
 | 
				
			||||||
                lines.get(i).render(x, y);
 | 
					                lines.get(i).render(matrixStack, x, y);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                y += 18;
 | 
					                y += 18;
 | 
				
			||||||
            } else {
 | 
					            } else {
 | 
				
			||||||
@@ -187,7 +190,7 @@ public class AlternativesScreen extends BaseScreen<AlternativesContainer> {
 | 
				
			|||||||
            boolean visible = i >= scrollbar.getOffset() && i < scrollbar.getOffset() + getVisibleRows();
 | 
					            boolean visible = i >= scrollbar.getOffset() && i < scrollbar.getOffset() + getVisibleRows();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            if (visible) {
 | 
					            if (visible) {
 | 
				
			||||||
                lines.get(i).renderTooltip(x, y, mouseX, mouseY);
 | 
					                lines.get(i).renderTooltip(matrixStack, x, y, mouseX, mouseY);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                y += 18;
 | 
					                y += 18;
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
@@ -262,10 +265,10 @@ public class AlternativesScreen extends BaseScreen<AlternativesContainer> {
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    private interface Line {
 | 
					    private interface Line {
 | 
				
			||||||
        default void render(int x, int y) {
 | 
					        default void render(MatrixStack matrixStack, int x, int y) {
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        default void renderTooltip(int x, int y, int mx, int my) {
 | 
					        default void renderTooltip(MatrixStack matrixStack, int x, int y, int mx, int my) {
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        default void layoutDependantControls(boolean visible, int x, int y) {
 | 
					        default void layoutDependantControls(boolean visible, int x, int y) {
 | 
				
			||||||
@@ -280,10 +283,10 @@ public class AlternativesScreen extends BaseScreen<AlternativesContainer> {
 | 
				
			|||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        @Override
 | 
					        @Override
 | 
				
			||||||
        public void render(int x, int y) {
 | 
					        public void render(MatrixStack matrixStack, int x, int y) {
 | 
				
			||||||
            RenderSystem.color4f(1,1,1,1);
 | 
					            RenderSystem.color4f(1,1,1,1);
 | 
				
			||||||
            renderItem(x + 3, y + 2, item);
 | 
					            renderItem(matrixStack, x + 3, y + 2, item);
 | 
				
			||||||
            renderString(x + 4 + 19, y + 7, item.getDisplayName().getFormattedText());
 | 
					            renderString(matrixStack, x + 4 + 19, y + 7, item.getDisplayName().getString());
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -295,9 +298,9 @@ public class AlternativesScreen extends BaseScreen<AlternativesContainer> {
 | 
				
			|||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        @Override
 | 
					        @Override
 | 
				
			||||||
        public void render(int x, int y) {
 | 
					        public void render(MatrixStack matrixStack, int x, int y) {
 | 
				
			||||||
            FluidRenderer.INSTANCE.render(x + 3, y + 2, fluid);
 | 
					            FluidRenderer.INSTANCE.render(x + 3, y + 2, fluid);
 | 
				
			||||||
            renderString(x + 4 + 19, y + 7, fluid.getDisplayName().getFormattedText());
 | 
					            renderString(matrixStack, x + 4 + 19, y + 7, fluid.getDisplayName().getString());
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -307,7 +310,7 @@ public class AlternativesScreen extends BaseScreen<AlternativesContainer> {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
        public TagLine(ResourceLocation tagName, boolean checked) {
 | 
					        public TagLine(ResourceLocation tagName, boolean checked) {
 | 
				
			||||||
            this.tagName = tagName;
 | 
					            this.tagName = tagName;
 | 
				
			||||||
            this.widget = addCheckBox(-100, -100, RenderUtils.shorten(tagName.toString(), 22), checked, (btn) -> {
 | 
					            this.widget = addCheckBox(-100, -100, new StringTextComponent(RenderUtils.shorten(tagName.toString(), 22)), checked, (btn) -> {
 | 
				
			||||||
            });
 | 
					            });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            widget.setFGColor(0xFF373737);
 | 
					            widget.setFGColor(0xFF373737);
 | 
				
			||||||
@@ -330,19 +333,19 @@ public class AlternativesScreen extends BaseScreen<AlternativesContainer> {
 | 
				
			|||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        @Override
 | 
					        @Override
 | 
				
			||||||
        public void render(int x, int y) {
 | 
					        public void render(MatrixStack matrixStack, int x, int y) {
 | 
				
			||||||
            for (ItemStack item : items) {
 | 
					            for (ItemStack item : items) {
 | 
				
			||||||
                renderItem(x + 3, y, item);
 | 
					                renderItem(matrixStack, x + 3, y, item);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                x += 17;
 | 
					                x += 17;
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        @Override
 | 
					        @Override
 | 
				
			||||||
        public void renderTooltip(int x, int y, int mx, int my) {
 | 
					        public void renderTooltip(MatrixStack matrixStack, int x, int y, int mx, int my) {
 | 
				
			||||||
            for (ItemStack item : items) {
 | 
					            for (ItemStack item : items) {
 | 
				
			||||||
                if (RenderUtils.inBounds(x + 3, y, 16, 16, mx, my)) {
 | 
					                if (RenderUtils.inBounds(x + 3, y, 16, 16, mx, my)) {
 | 
				
			||||||
                    AlternativesScreen.this.renderTooltip(item, mx, my, RenderUtils.getTooltipFromItem(item));
 | 
					                    AlternativesScreen.this.renderTooltip(matrixStack, item, mx, my, RenderUtils.getTooltipFromItem(item));
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                x += 17;
 | 
					                x += 17;
 | 
				
			||||||
@@ -358,7 +361,7 @@ public class AlternativesScreen extends BaseScreen<AlternativesContainer> {
 | 
				
			|||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        @Override
 | 
					        @Override
 | 
				
			||||||
        public void render(int x, int y) {
 | 
					        public void render(MatrixStack matrixStack, int x, int y) {
 | 
				
			||||||
            for (FluidStack fluid : fluids) {
 | 
					            for (FluidStack fluid : fluids) {
 | 
				
			||||||
                FluidRenderer.INSTANCE.render(x + 3, y, fluid);
 | 
					                FluidRenderer.INSTANCE.render(x + 3, y, fluid);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -367,10 +370,10 @@ public class AlternativesScreen extends BaseScreen<AlternativesContainer> {
 | 
				
			|||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        @Override
 | 
					        @Override
 | 
				
			||||||
        public void renderTooltip(int x, int y, int mx, int my) {
 | 
					        public void renderTooltip(MatrixStack matrixStack, int x, int y, int mx, int my) {
 | 
				
			||||||
            for (FluidStack fluid : fluids) {
 | 
					            for (FluidStack fluid : fluids) {
 | 
				
			||||||
                if (RenderUtils.inBounds(x + 3, y, 16, 16, mx, my)) {
 | 
					                if (RenderUtils.inBounds(x + 3, y, 16, 16, mx, my)) {
 | 
				
			||||||
                    AlternativesScreen.this.renderTooltip(mx, my, fluid.getDisplayName().getFormattedText());
 | 
					                    AlternativesScreen.this.renderTooltip(matrixStack, mx, my, fluid.getDisplayName().getString());
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                x += 17;
 | 
					                x += 17;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,5 +1,6 @@
 | 
				
			|||||||
package com.refinedmods.refinedstorage.screen.grid;
 | 
					package com.refinedmods.refinedstorage.screen.grid;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import com.mojang.blaze3d.matrix.MatrixStack;
 | 
				
			||||||
import com.mojang.blaze3d.systems.RenderSystem;
 | 
					import com.mojang.blaze3d.systems.RenderSystem;
 | 
				
			||||||
import com.refinedmods.refinedstorage.RS;
 | 
					import com.refinedmods.refinedstorage.RS;
 | 
				
			||||||
import com.refinedmods.refinedstorage.api.autocrafting.ICraftingPattern;
 | 
					import com.refinedmods.refinedstorage.api.autocrafting.ICraftingPattern;
 | 
				
			||||||
@@ -26,6 +27,7 @@ import net.minecraft.inventory.container.Container;
 | 
				
			|||||||
import net.minecraft.item.ItemStack;
 | 
					import net.minecraft.item.ItemStack;
 | 
				
			||||||
import net.minecraft.util.ResourceLocation;
 | 
					import net.minecraft.util.ResourceLocation;
 | 
				
			||||||
import net.minecraft.util.text.ITextComponent;
 | 
					import net.minecraft.util.text.ITextComponent;
 | 
				
			||||||
 | 
					import net.minecraft.util.text.TranslationTextComponent;
 | 
				
			||||||
import net.minecraftforge.fluids.FluidStack;
 | 
					import net.minecraftforge.fluids.FluidStack;
 | 
				
			||||||
import org.lwjgl.glfw.GLFW;
 | 
					import org.lwjgl.glfw.GLFW;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -75,9 +77,9 @@ public class CraftingPreviewScreen extends BaseScreen<Container> {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
    public void onPostInit(int x, int y) {
 | 
					    public void onPostInit(int x, int y) {
 | 
				
			||||||
        addButton(x + 55, y + 201 - 20 - 7, 50, 20, I18n.format("gui.cancel"), true, true, btn -> close());
 | 
					        addButton(x + 55, y + 201 - 20 - 7, 50, 20, new TranslationTextComponent("gui.cancel"), true, true, btn -> close());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        Button startButton = addButton(x + 129, y + 201 - 20 - 7, 50, 20, I18n.format("misc.refinedstorage.start"), true, true, btn -> startRequest());
 | 
					        Button startButton = addButton(x + 129, y + 201 - 20 - 7, 50, 20, new TranslationTextComponent("misc.refinedstorage.start"), true, true, btn -> startRequest());
 | 
				
			||||||
        startButton.active = stacks.stream().noneMatch(ICraftingPreviewElement::hasMissing) && getErrorType() == null;
 | 
					        startButton.active = stacks.stream().noneMatch(ICraftingPreviewElement::hasMissing) && getErrorType() == null;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -97,21 +99,21 @@ public class CraftingPreviewScreen extends BaseScreen<Container> {
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
    public void renderBackground(int x, int y, int mouseX, int mouseY) {
 | 
					    public void renderBackground(MatrixStack matrixStack, int x, int y, int mouseX, int mouseY) {
 | 
				
			||||||
        bindTexture(RS.ID, "gui/crafting_preview.png");
 | 
					        bindTexture(RS.ID, "gui/crafting_preview.png");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        blit(x, y, 0, 0, xSize, ySize);
 | 
					        blit(matrixStack, x, y, 0, 0, xSize, ySize);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if (getErrorType() != null) {
 | 
					        if (getErrorType() != null) {
 | 
				
			||||||
            fill(x + 7, y + 20, x + 228, y + 169, 0xFFDBDBDB);
 | 
					            fill(matrixStack, x + 7, y + 20, x + 228, y + 169, 0xFFDBDBDB);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        scrollbar.render();
 | 
					        scrollbar.render(matrixStack);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
    public void renderForeground(int mouseX, int mouseY) {
 | 
					    public void renderForeground(MatrixStack matrixStack, int mouseX, int mouseY) {
 | 
				
			||||||
        renderString(7, 7, title.getFormattedText());
 | 
					        renderString(matrixStack, 7, 7, title.getString());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        int x = 7;
 | 
					        int x = 7;
 | 
				
			||||||
        int y = 15;
 | 
					        int y = 15;
 | 
				
			||||||
@@ -122,16 +124,16 @@ public class CraftingPreviewScreen extends BaseScreen<Container> {
 | 
				
			|||||||
            RenderSystem.pushMatrix();
 | 
					            RenderSystem.pushMatrix();
 | 
				
			||||||
            RenderSystem.scalef(scale, scale, 1);
 | 
					            RenderSystem.scalef(scale, scale, 1);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            renderString(RenderUtils.getOffsetOnScale(x + 5, scale), RenderUtils.getOffsetOnScale(y + 11, scale), I18n.format("gui.refinedstorage.crafting_preview.error"));
 | 
					            renderString(matrixStack, RenderUtils.getOffsetOnScale(x + 5, scale), RenderUtils.getOffsetOnScale(y + 11, scale), I18n.format("gui.refinedstorage.crafting_preview.error"));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            switch (getErrorType()) {
 | 
					            switch (getErrorType()) {
 | 
				
			||||||
                case RECURSIVE: {
 | 
					                case RECURSIVE: {
 | 
				
			||||||
                    renderString(RenderUtils.getOffsetOnScale(x + 5, scale), RenderUtils.getOffsetOnScale(y + 21, scale), I18n.format("gui.refinedstorage.crafting_preview.error.recursive.0"));
 | 
					                    renderString(matrixStack, RenderUtils.getOffsetOnScale(x + 5, scale), RenderUtils.getOffsetOnScale(y + 21, scale), I18n.format("gui.refinedstorage.crafting_preview.error.recursive.0"));
 | 
				
			||||||
                    renderString(RenderUtils.getOffsetOnScale(x + 5, scale), RenderUtils.getOffsetOnScale(y + 31, scale), I18n.format("gui.refinedstorage.crafting_preview.error.recursive.1"));
 | 
					                    renderString(matrixStack, RenderUtils.getOffsetOnScale(x + 5, scale), RenderUtils.getOffsetOnScale(y + 31, scale), I18n.format("gui.refinedstorage.crafting_preview.error.recursive.1"));
 | 
				
			||||||
                    renderString(RenderUtils.getOffsetOnScale(x + 5, scale), RenderUtils.getOffsetOnScale(y + 41, scale), I18n.format("gui.refinedstorage.crafting_preview.error.recursive.2"));
 | 
					                    renderString(matrixStack, RenderUtils.getOffsetOnScale(x + 5, scale), RenderUtils.getOffsetOnScale(y + 41, scale), I18n.format("gui.refinedstorage.crafting_preview.error.recursive.2"));
 | 
				
			||||||
                    renderString(RenderUtils.getOffsetOnScale(x + 5, scale), RenderUtils.getOffsetOnScale(y + 51, scale), I18n.format("gui.refinedstorage.crafting_preview.error.recursive.3"));
 | 
					                    renderString(matrixStack, RenderUtils.getOffsetOnScale(x + 5, scale), RenderUtils.getOffsetOnScale(y + 51, scale), I18n.format("gui.refinedstorage.crafting_preview.error.recursive.3"));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                    renderString(RenderUtils.getOffsetOnScale(x + 5, scale), RenderUtils.getOffsetOnScale(y + 61, scale), I18n.format("gui.refinedstorage.crafting_preview.error.recursive.4"));
 | 
					                    renderString(matrixStack, RenderUtils.getOffsetOnScale(x + 5, scale), RenderUtils.getOffsetOnScale(y + 61, scale), I18n.format("gui.refinedstorage.crafting_preview.error.recursive.4"));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                    RenderSystem.popMatrix();
 | 
					                    RenderSystem.popMatrix();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -142,12 +144,12 @@ public class CraftingPreviewScreen extends BaseScreen<Container> {
 | 
				
			|||||||
                        if (output != null) {
 | 
					                        if (output != null) {
 | 
				
			||||||
                            RenderSystem.pushMatrix();
 | 
					                            RenderSystem.pushMatrix();
 | 
				
			||||||
                            RenderSystem.scalef(scale, scale, 1);
 | 
					                            RenderSystem.scalef(scale, scale, 1);
 | 
				
			||||||
                            renderString(RenderUtils.getOffsetOnScale(x + 25, scale), RenderUtils.getOffsetOnScale(yy + 6, scale), output.getDisplayName().getFormattedText());
 | 
					                            renderString(matrixStack, RenderUtils.getOffsetOnScale(x + 25, scale), RenderUtils.getOffsetOnScale(yy + 6, scale), output.getDisplayName().getString());
 | 
				
			||||||
                            RenderSystem.popMatrix();
 | 
					                            RenderSystem.popMatrix();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                            RenderSystem.setupGui3DDiffuseLighting();
 | 
					                            RenderHelper.setupGui3DDiffuseLighting();
 | 
				
			||||||
                            RenderSystem.enableDepthTest();
 | 
					                            RenderSystem.enableDepthTest();
 | 
				
			||||||
                            renderItem(x + 5, yy, output);
 | 
					                            renderItem(matrixStack, x + 5, yy, output);
 | 
				
			||||||
                            RenderHelper.disableStandardItemLighting();
 | 
					                            RenderHelper.disableStandardItemLighting();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                            yy += 17;
 | 
					                            yy += 17;
 | 
				
			||||||
@@ -157,8 +159,8 @@ public class CraftingPreviewScreen extends BaseScreen<Container> {
 | 
				
			|||||||
                    break;
 | 
					                    break;
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
                case TOO_COMPLEX: {
 | 
					                case TOO_COMPLEX: {
 | 
				
			||||||
                    renderString(RenderUtils.getOffsetOnScale(x + 5, scale), RenderUtils.getOffsetOnScale(y + 21, scale), I18n.format("gui.refinedstorage.crafting_preview.error.too_complex.0"));
 | 
					                    renderString(matrixStack, RenderUtils.getOffsetOnScale(x + 5, scale), RenderUtils.getOffsetOnScale(y + 21, scale), I18n.format("gui.refinedstorage.crafting_preview.error.too_complex.0"));
 | 
				
			||||||
                    renderString(RenderUtils.getOffsetOnScale(x + 5, scale), RenderUtils.getOffsetOnScale(y + 31, scale), I18n.format("gui.refinedstorage.crafting_preview.error.too_complex.1"));
 | 
					                    renderString(matrixStack, RenderUtils.getOffsetOnScale(x + 5, scale), RenderUtils.getOffsetOnScale(y + 31, scale), I18n.format("gui.refinedstorage.crafting_preview.error.too_complex.1"));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                    RenderSystem.popMatrix();
 | 
					                    RenderSystem.popMatrix();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -168,7 +170,7 @@ public class CraftingPreviewScreen extends BaseScreen<Container> {
 | 
				
			|||||||
        } else {
 | 
					        } else {
 | 
				
			||||||
            int slot = scrollbar != null ? (scrollbar.getOffset() * 3) : 0;
 | 
					            int slot = scrollbar != null ? (scrollbar.getOffset() * 3) : 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            RenderSystem.setupGui3DDiffuseLighting();
 | 
					            RenderHelper.setupGui3DDiffuseLighting();
 | 
				
			||||||
            RenderSystem.enableDepthTest();
 | 
					            RenderSystem.enableDepthTest();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            this.hoveringStack = null;
 | 
					            this.hoveringStack = null;
 | 
				
			||||||
@@ -202,21 +204,22 @@ public class CraftingPreviewScreen extends BaseScreen<Container> {
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
    public void render(int mouseX, int mouseY, float partialTicks) {
 | 
					    public void render(MatrixStack matrixStack, int mouseX, int mouseY, float partialTicks) {
 | 
				
			||||||
        super.render(mouseX, mouseY, partialTicks);
 | 
					        super.render(matrixStack, mouseX, mouseY, partialTicks);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if (hoveringStack != null) {
 | 
					        if (hoveringStack != null) {
 | 
				
			||||||
            renderTooltip(
 | 
					            renderTooltip(
 | 
				
			||||||
 | 
					                matrixStack,
 | 
				
			||||||
                hoveringStack,
 | 
					                hoveringStack,
 | 
				
			||||||
                mouseX,
 | 
					                mouseX,
 | 
				
			||||||
                mouseY,
 | 
					                mouseY,
 | 
				
			||||||
                hoveringStack.getTooltip(
 | 
					                hoveringStack.getTooltip(
 | 
				
			||||||
                    Minecraft.getInstance().player,
 | 
					                    Minecraft.getInstance().player,
 | 
				
			||||||
                    Minecraft.getInstance().gameSettings.advancedItemTooltips ? ITooltipFlag.TooltipFlags.ADVANCED : ITooltipFlag.TooltipFlags.NORMAL
 | 
					                    Minecraft.getInstance().gameSettings.advancedItemTooltips ? ITooltipFlag.TooltipFlags.ADVANCED : ITooltipFlag.TooltipFlags.NORMAL
 | 
				
			||||||
                ).stream().map(ITextComponent::getFormattedText).collect(Collectors.toList())
 | 
					                )
 | 
				
			||||||
            );
 | 
					            );
 | 
				
			||||||
        } else if (hoveringFluid != null) {
 | 
					        } else if (hoveringFluid != null) {
 | 
				
			||||||
            renderTooltip(mouseX, mouseY, hoveringFluid.getDisplayName().getFormattedText());
 | 
					            renderTooltip(matrixStack, mouseX, mouseY, hoveringFluid.getDisplayName().getString());
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -9,6 +9,7 @@ import com.refinedmods.refinedstorage.screen.grid.stack.FluidGridStack;
 | 
				
			|||||||
import com.refinedmods.refinedstorage.screen.grid.stack.IGridStack;
 | 
					import com.refinedmods.refinedstorage.screen.grid.stack.IGridStack;
 | 
				
			||||||
import net.minecraft.client.resources.I18n;
 | 
					import net.minecraft.client.resources.I18n;
 | 
				
			||||||
import net.minecraft.entity.player.PlayerEntity;
 | 
					import net.minecraft.entity.player.PlayerEntity;
 | 
				
			||||||
 | 
					import net.minecraft.util.text.ITextComponent;
 | 
				
			||||||
import net.minecraft.util.text.TranslationTextComponent;
 | 
					import net.minecraft.util.text.TranslationTextComponent;
 | 
				
			||||||
import net.minecraftforge.fluids.FluidAttributes;
 | 
					import net.minecraftforge.fluids.FluidAttributes;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -22,8 +23,8 @@ public class CraftingSettingsScreen extends AmountSpecifyingScreen<CraftingSetti
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
    protected String getOkButtonText() {
 | 
					    protected ITextComponent getOkButtonText() {
 | 
				
			||||||
        return I18n.format("misc.refinedstorage.start");
 | 
					        return new TranslationTextComponent("misc.refinedstorage.start");
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,6 +1,7 @@
 | 
				
			|||||||
package com.refinedmods.refinedstorage.screen.grid;
 | 
					package com.refinedmods.refinedstorage.screen.grid;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import com.google.common.collect.Lists;
 | 
					import com.google.common.collect.Lists;
 | 
				
			||||||
 | 
					import com.mojang.blaze3d.matrix.MatrixStack;
 | 
				
			||||||
import com.mojang.blaze3d.systems.RenderSystem;
 | 
					import com.mojang.blaze3d.systems.RenderSystem;
 | 
				
			||||||
import com.refinedmods.refinedstorage.RS;
 | 
					import com.refinedmods.refinedstorage.RS;
 | 
				
			||||||
import com.refinedmods.refinedstorage.RSKeyBindings;
 | 
					import com.refinedmods.refinedstorage.RSKeyBindings;
 | 
				
			||||||
@@ -31,11 +32,13 @@ import com.refinedmods.refinedstorage.tile.grid.portable.PortableGridTile;
 | 
				
			|||||||
import com.refinedmods.refinedstorage.util.RenderUtils;
 | 
					import com.refinedmods.refinedstorage.util.RenderUtils;
 | 
				
			||||||
import com.refinedmods.refinedstorage.util.TimeUtils;
 | 
					import com.refinedmods.refinedstorage.util.TimeUtils;
 | 
				
			||||||
import net.minecraft.client.audio.SimpleSound;
 | 
					import net.minecraft.client.audio.SimpleSound;
 | 
				
			||||||
 | 
					import net.minecraft.client.renderer.RenderHelper;
 | 
				
			||||||
import net.minecraft.client.resources.I18n;
 | 
					import net.minecraft.client.resources.I18n;
 | 
				
			||||||
import net.minecraft.entity.player.PlayerInventory;
 | 
					import net.minecraft.entity.player.PlayerInventory;
 | 
				
			||||||
import net.minecraft.item.ItemStack;
 | 
					import net.minecraft.item.ItemStack;
 | 
				
			||||||
import net.minecraft.util.SoundEvents;
 | 
					import net.minecraft.util.SoundEvents;
 | 
				
			||||||
import net.minecraft.util.text.ITextComponent;
 | 
					import net.minecraft.util.text.ITextComponent;
 | 
				
			||||||
 | 
					import net.minecraft.util.text.TranslationTextComponent;
 | 
				
			||||||
import org.lwjgl.glfw.GLFW;
 | 
					import org.lwjgl.glfw.GLFW;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import java.util.LinkedList;
 | 
					import java.util.LinkedList;
 | 
				
			||||||
@@ -125,7 +128,7 @@ public class GridScreen extends BaseScreen<GridContainer> implements IScreenInfo
 | 
				
			|||||||
        addSideButton(new GridSizeSideButton(this, () -> grid.getSize(), size -> grid.onSizeChanged(size)));
 | 
					        addSideButton(new GridSizeSideButton(this, () -> grid.getSize(), size -> grid.onSizeChanged(size)));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if (grid.getGridType() == GridType.PATTERN) {
 | 
					        if (grid.getGridType() == GridType.PATTERN) {
 | 
				
			||||||
            processingPattern = addCheckBox(x + 7, y + getTopHeight() + (getVisibleRows() * 18) + 60, I18n.format("misc.refinedstorage.processing"), GridTile.PROCESSING_PATTERN.getValue(), btn -> {
 | 
					            processingPattern = addCheckBox(x + 7, y + getTopHeight() + (getVisibleRows() * 18) + 60, new TranslationTextComponent("misc.refinedstorage.processing"), GridTile.PROCESSING_PATTERN.getValue(), btn -> {
 | 
				
			||||||
                // Rebuild the inventory slots before the slot change packet arrives.
 | 
					                // Rebuild the inventory slots before the slot change packet arrives.
 | 
				
			||||||
                GridTile.PROCESSING_PATTERN.setValue(false, processingPattern.isChecked());
 | 
					                GridTile.PROCESSING_PATTERN.setValue(false, processingPattern.isChecked());
 | 
				
			||||||
                ((GridNetworkNode) grid).clearMatrix(); // The server does this but let's do it earlier so the client doesn't notice.
 | 
					                ((GridNetworkNode) grid).clearMatrix(); // The server does this but let's do it earlier so the client doesn't notice.
 | 
				
			||||||
@@ -138,7 +141,7 @@ public class GridScreen extends BaseScreen<GridContainer> implements IScreenInfo
 | 
				
			|||||||
                exactPattern = addCheckBox(
 | 
					                exactPattern = addCheckBox(
 | 
				
			||||||
                    processingPattern.x + processingPattern.getWidth() + 5,
 | 
					                    processingPattern.x + processingPattern.getWidth() + 5,
 | 
				
			||||||
                    y + getTopHeight() + (getVisibleRows() * 18) + 60,
 | 
					                    y + getTopHeight() + (getVisibleRows() * 18) + 60,
 | 
				
			||||||
                    I18n.format("misc.refinedstorage.exact"),
 | 
					                    new TranslationTextComponent("misc.refinedstorage.exact"),
 | 
				
			||||||
                    GridTile.EXACT_PATTERN.getValue(),
 | 
					                    GridTile.EXACT_PATTERN.getValue(),
 | 
				
			||||||
                    btn -> TileDataManager.setParameter(GridTile.EXACT_PATTERN, exactPattern.isChecked())
 | 
					                    btn -> TileDataManager.setParameter(GridTile.EXACT_PATTERN, exactPattern.isChecked())
 | 
				
			||||||
                );
 | 
					                );
 | 
				
			||||||
@@ -279,8 +282,8 @@ public class GridScreen extends BaseScreen<GridContainer> implements IScreenInfo
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
    public void renderBackground(int x, int y, int mouseX, int mouseY) {
 | 
					    public void renderBackground(MatrixStack matrixStack, int x, int y, int mouseX, int mouseY) {
 | 
				
			||||||
        tabs.drawBackground(x, y - tabs.getHeight());
 | 
					        tabs.drawBackground(matrixStack, x, y - tabs.getHeight());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if (grid instanceof IPortableGrid) {
 | 
					        if (grid instanceof IPortableGrid) {
 | 
				
			||||||
            bindTexture(RS.ID, "gui/portable_grid.png");
 | 
					            bindTexture(RS.ID, "gui/portable_grid.png");
 | 
				
			||||||
@@ -294,22 +297,22 @@ public class GridScreen extends BaseScreen<GridContainer> implements IScreenInfo
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
        int yy = y;
 | 
					        int yy = y;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        blit(x, yy, 0, 0, xSize - 34, getTopHeight());
 | 
					        blit(matrixStack, x, yy, 0, 0, xSize - 34, getTopHeight());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        // Filters and/or portable grid disk
 | 
					        // Filters and/or portable grid disk
 | 
				
			||||||
        blit(x + xSize - 34 + 4, y, 197, 0, 30, grid instanceof IPortableGrid ? 114 : 82);
 | 
					        blit(matrixStack, x + xSize - 34 + 4, y, 197, 0, 30, grid instanceof IPortableGrid ? 114 : 82);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        int rows = getVisibleRows();
 | 
					        int rows = getVisibleRows();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        for (int i = 0; i < rows; ++i) {
 | 
					        for (int i = 0; i < rows; ++i) {
 | 
				
			||||||
            yy += 18;
 | 
					            yy += 18;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            blit(x, yy, 0, getTopHeight() + (i > 0 ? (i == rows - 1 ? 18 * 2 : 18) : 0), xSize - 34, 18);
 | 
					            blit(matrixStack, x, yy, 0, getTopHeight() + (i > 0 ? (i == rows - 1 ? 18 * 2 : 18) : 0), xSize - 34, 18);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        yy += 18;
 | 
					        yy += 18;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        blit(x, yy, 0, getTopHeight() + (18 * 3), xSize - 34, getBottomHeight());
 | 
					        blit(matrixStack, x, yy, 0, getTopHeight() + (18 * 3), xSize - 34, getBottomHeight());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if (grid.getGridType() == GridType.PATTERN) {
 | 
					        if (grid.getGridType() == GridType.PATTERN) {
 | 
				
			||||||
            int ty = 0;
 | 
					            int ty = 0;
 | 
				
			||||||
@@ -322,31 +325,31 @@ public class GridScreen extends BaseScreen<GridContainer> implements IScreenInfo
 | 
				
			|||||||
                ty = 2;
 | 
					                ty = 2;
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            blit(x + 172, y + getTopHeight() + (getVisibleRows() * 18) + 22, 240, ty * 16, 16, 16);
 | 
					            blit(matrixStack, x + 172, y + getTopHeight() + (getVisibleRows() * 18) + 22, 240, ty * 16, 16, 16);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        tabs.drawForeground(x, y - tabs.getHeight(), mouseX, mouseY, true);
 | 
					        tabs.drawForeground(matrixStack, x, y - tabs.getHeight(), mouseX, mouseY, true);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        searchField.render(0, 0, 0);
 | 
					        searchField.render(matrixStack, 0, 0, 0);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        scrollbar.render();
 | 
					        scrollbar.render(matrixStack);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
    public void render(int mouseX, int mouseY, float partialTicks) {
 | 
					    public void render(MatrixStack matrixStack, int mouseX, int mouseY, float partialTicks) {
 | 
				
			||||||
        super.render(mouseX, mouseY, partialTicks);
 | 
					        super.render(matrixStack, mouseX, mouseY, partialTicks);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        // Drawn in here for bug #1844 (https://github.com/refinedmods/refinedstorage/issues/1844)
 | 
					        // Drawn in here for bug #1844 (https://github.com/refinedmods/refinedstorage/issues/1844)
 | 
				
			||||||
        // Item tooltips can't be rendered in the foreground layer due to the X offset translation.
 | 
					        // Item tooltips can't be rendered in the foreground layer due to the X offset translation.
 | 
				
			||||||
        if (isOverSlotWithStack()) {
 | 
					        if (isOverSlotWithStack()) {
 | 
				
			||||||
            drawGridTooltip(view.getStacks().get(slotNumber), mouseX, mouseY);
 | 
					            drawGridTooltip(matrixStack, view.getStacks().get(slotNumber), mouseX, mouseY);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
    public void renderForeground(int mouseX, int mouseY) {
 | 
					    public void renderForeground(MatrixStack matrixStack, int mouseX, int mouseY) {
 | 
				
			||||||
        renderString(7, 7, title.getFormattedText());
 | 
					        renderString(matrixStack, 7, 7, title.getString());
 | 
				
			||||||
        renderString(7, getYPlayerInventory() - 12, I18n.format("container.inventory"));
 | 
					        renderString(matrixStack, 7, getYPlayerInventory() - 12, I18n.format("container.inventory"));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        int x = 8;
 | 
					        int x = 8;
 | 
				
			||||||
        int y = 19;
 | 
					        int y = 19;
 | 
				
			||||||
@@ -355,7 +358,7 @@ public class GridScreen extends BaseScreen<GridContainer> implements IScreenInfo
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
        int slot = scrollbar != null ? (scrollbar.getOffset() * 9) : 0;
 | 
					        int slot = scrollbar != null ? (scrollbar.getOffset() * 9) : 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        RenderSystem.setupGui3DDiffuseLighting();
 | 
					        RenderHelper.setupGui3DDiffuseLighting();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        for (int i = 0; i < 9 * getVisibleRows(); ++i) {
 | 
					        for (int i = 0; i < 9 * getVisibleRows(); ++i) {
 | 
				
			||||||
            if (RenderUtils.inBounds(x, y, 16, 16, mouseX, mouseY) || !grid.isGridActive()) {
 | 
					            if (RenderUtils.inBounds(x, y, 16, 16, mouseX, mouseY) || !grid.isGridActive()) {
 | 
				
			||||||
@@ -363,7 +366,7 @@ public class GridScreen extends BaseScreen<GridContainer> implements IScreenInfo
 | 
				
			|||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            if (slot < view.getStacks().size()) {
 | 
					            if (slot < view.getStacks().size()) {
 | 
				
			||||||
                view.getStacks().get(slot).draw(this, x, y);
 | 
					                view.getStacks().get(slot).draw(matrixStack, this, x, y);
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            if (RenderUtils.inBounds(x, y, 16, 16, mouseX, mouseY) || !grid.isGridActive()) {
 | 
					            if (RenderUtils.inBounds(x, y, 16, 16, mouseX, mouseY) || !grid.isGridActive()) {
 | 
				
			||||||
@@ -373,7 +376,7 @@ public class GridScreen extends BaseScreen<GridContainer> implements IScreenInfo
 | 
				
			|||||||
                RenderSystem.disableLighting();
 | 
					                RenderSystem.disableLighting();
 | 
				
			||||||
                RenderSystem.disableDepthTest();
 | 
					                RenderSystem.disableDepthTest();
 | 
				
			||||||
                RenderSystem.colorMask(true, true, true, false);
 | 
					                RenderSystem.colorMask(true, true, true, false);
 | 
				
			||||||
                fillGradient(x, y, x + 16, y + 16, color, color);
 | 
					                fillGradient(matrixStack, x, y, x + 16, y + 16, color, color);
 | 
				
			||||||
                RenderSystem.colorMask(true, true, true, true);
 | 
					                RenderSystem.colorMask(true, true, true, true);
 | 
				
			||||||
                RenderSystem.popMatrix();
 | 
					                RenderSystem.popMatrix();
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
@@ -389,18 +392,18 @@ public class GridScreen extends BaseScreen<GridContainer> implements IScreenInfo
 | 
				
			|||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if (isOverClear(mouseX, mouseY)) {
 | 
					        if (isOverClear(mouseX, mouseY)) {
 | 
				
			||||||
            renderTooltip(mouseX, mouseY, I18n.format("misc.refinedstorage.clear"));
 | 
					            renderTooltip(matrixStack, mouseX, mouseY, I18n.format("misc.refinedstorage.clear"));
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if (isOverCreatePattern(mouseX, mouseY)) {
 | 
					        if (isOverCreatePattern(mouseX, mouseY)) {
 | 
				
			||||||
            renderTooltip(mouseX, mouseY, I18n.format("gui.refinedstorage.grid.pattern_create"));
 | 
					            renderTooltip(matrixStack, mouseX, mouseY, I18n.format("gui.refinedstorage.grid.pattern_create"));
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        tabs.drawTooltip(font, mouseX, mouseY);
 | 
					        tabs.drawTooltip(matrixStack, font, mouseX, mouseY);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    private void drawGridTooltip(IGridStack gridStack, int mouseX, int mouseY) {
 | 
					    private void drawGridTooltip(MatrixStack matrixStack, IGridStack gridStack, int mouseX, int mouseY) {
 | 
				
			||||||
        List<String> textLines = Lists.newArrayList(gridStack.getTooltip().split("\n"));
 | 
					        List<ITextComponent> textLines = gridStack.getTooltip();
 | 
				
			||||||
        List<String> smallTextLines = Lists.newArrayList();
 | 
					        List<String> smallTextLines = Lists.newArrayList();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if (!gridStack.isCraftable()) {
 | 
					        if (!gridStack.isCraftable()) {
 | 
				
			||||||
@@ -413,7 +416,7 @@ public class GridScreen extends BaseScreen<GridContainer> implements IScreenInfo
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
        ItemStack stack = gridStack instanceof ItemGridStack ? ((ItemGridStack) gridStack).getStack() : ItemStack.EMPTY;
 | 
					        ItemStack stack = gridStack instanceof ItemGridStack ? ((ItemGridStack) gridStack).getStack() : ItemStack.EMPTY;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        RenderUtils.drawTooltipWithSmallText(textLines, smallTextLines, RS.CLIENT_CONFIG.getGrid().getDetailedTooltip(), stack, mouseX, mouseY, width, height, font);
 | 
					        RenderUtils.drawTooltipWithSmallText(matrixStack, textLines, smallTextLines, RS.CLIENT_CONFIG.getGrid().getDetailedTooltip(), stack, mouseX, mouseY, width, height, font);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,5 +1,6 @@
 | 
				
			|||||||
package com.refinedmods.refinedstorage.screen.grid.stack;
 | 
					package com.refinedmods.refinedstorage.screen.grid.stack;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import com.mojang.blaze3d.matrix.MatrixStack;
 | 
				
			||||||
import com.refinedmods.refinedstorage.api.storage.tracker.StorageTrackerEntry;
 | 
					import com.refinedmods.refinedstorage.api.storage.tracker.StorageTrackerEntry;
 | 
				
			||||||
import com.refinedmods.refinedstorage.apiimpl.API;
 | 
					import com.refinedmods.refinedstorage.apiimpl.API;
 | 
				
			||||||
import com.refinedmods.refinedstorage.render.FluidRenderer;
 | 
					import com.refinedmods.refinedstorage.render.FluidRenderer;
 | 
				
			||||||
@@ -8,14 +9,14 @@ import com.refinedmods.refinedstorage.screen.BaseScreen;
 | 
				
			|||||||
import net.minecraft.client.resources.I18n;
 | 
					import net.minecraft.client.resources.I18n;
 | 
				
			||||||
import net.minecraft.tags.FluidTags;
 | 
					import net.minecraft.tags.FluidTags;
 | 
				
			||||||
import net.minecraft.util.ResourceLocation;
 | 
					import net.minecraft.util.ResourceLocation;
 | 
				
			||||||
 | 
					import net.minecraft.util.text.ITextComponent;
 | 
				
			||||||
 | 
					import net.minecraft.util.text.StringTextComponent;
 | 
				
			||||||
import net.minecraftforge.fluids.FluidStack;
 | 
					import net.minecraftforge.fluids.FluidStack;
 | 
				
			||||||
import org.apache.logging.log4j.LogManager;
 | 
					import org.apache.logging.log4j.LogManager;
 | 
				
			||||||
import org.apache.logging.log4j.Logger;
 | 
					import org.apache.logging.log4j.Logger;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import javax.annotation.Nullable;
 | 
					import javax.annotation.Nullable;
 | 
				
			||||||
import java.util.HashSet;
 | 
					import java.util.*;
 | 
				
			||||||
import java.util.Set;
 | 
					 | 
				
			||||||
import java.util.UUID;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
public class FluidGridStack implements IGridStack {
 | 
					public class FluidGridStack implements IGridStack {
 | 
				
			||||||
    private final Logger logger = LogManager.getLogger(getClass());
 | 
					    private final Logger logger = LogManager.getLogger(getClass());
 | 
				
			||||||
@@ -31,7 +32,7 @@ public class FluidGridStack implements IGridStack {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    private Set<String> cachedTags;
 | 
					    private Set<String> cachedTags;
 | 
				
			||||||
    private String cachedName;
 | 
					    private String cachedName;
 | 
				
			||||||
    private String cachedTooltip;
 | 
					    private List<ITextComponent> cachedTooltip;
 | 
				
			||||||
    private String cachedModId;
 | 
					    private String cachedModId;
 | 
				
			||||||
    private String cachedModName;
 | 
					    private String cachedModName;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -76,7 +77,7 @@ public class FluidGridStack implements IGridStack {
 | 
				
			|||||||
    public String getName() {
 | 
					    public String getName() {
 | 
				
			||||||
        if (cachedName == null) {
 | 
					        if (cachedName == null) {
 | 
				
			||||||
            try {
 | 
					            try {
 | 
				
			||||||
                cachedName = stack.getDisplayName().getFormattedText();
 | 
					                cachedName = stack.getDisplayName().getString();
 | 
				
			||||||
            } catch (Throwable t) {
 | 
					            } catch (Throwable t) {
 | 
				
			||||||
                logger.warn("Could not retrieve fluid name of " + stack.getFluid().getRegistryName().toString(), t);
 | 
					                logger.warn("Could not retrieve fluid name of " + stack.getFluid().getRegistryName().toString(), t);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -129,14 +130,14 @@ public class FluidGridStack implements IGridStack {
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
    public String getTooltip() {
 | 
					    public List<ITextComponent> getTooltip() {
 | 
				
			||||||
        if (cachedTooltip == null) {
 | 
					        if (cachedTooltip == null) {
 | 
				
			||||||
            try {
 | 
					            try {
 | 
				
			||||||
                cachedTooltip = stack.getDisplayName().getFormattedText();
 | 
					                cachedTooltip = Arrays.asList(stack.getDisplayName());
 | 
				
			||||||
            } catch (Throwable t) {
 | 
					            } catch (Throwable t) {
 | 
				
			||||||
                cachedTooltip = "<Error>";
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                logger.warn("Could not retrieve fluid tooltip of " + stack.getFluid().getRegistryName().toString(), t);
 | 
					                logger.warn("Could not retrieve fluid tooltip of " + stack.getFluid().getRegistryName().toString(), t);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                cachedTooltip = Arrays.asList(new StringTextComponent("<Error>"));
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -159,7 +160,7 @@ public class FluidGridStack implements IGridStack {
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
    public void draw(BaseScreen<?> screen, int x, int y) {
 | 
					    public void draw(MatrixStack matrixStack, BaseScreen<?> screen, int x, int y) {
 | 
				
			||||||
        FluidRenderer.INSTANCE.render(x, y, stack);
 | 
					        FluidRenderer.INSTANCE.render(x, y, stack);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        String text;
 | 
					        String text;
 | 
				
			||||||
@@ -174,7 +175,7 @@ public class FluidGridStack implements IGridStack {
 | 
				
			|||||||
            text = API.instance().getQuantityFormatter().formatInBucketFormWithOnlyTrailingDigitsIfZero(getQuantity());
 | 
					            text = API.instance().getQuantityFormatter().formatInBucketFormWithOnlyTrailingDigitsIfZero(getQuantity());
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        screen.renderQuantity(x, y, text, color);
 | 
					        screen.renderQuantity(matrixStack, x, y, text, color);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,9 +1,12 @@
 | 
				
			|||||||
package com.refinedmods.refinedstorage.screen.grid.stack;
 | 
					package com.refinedmods.refinedstorage.screen.grid.stack;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import com.mojang.blaze3d.matrix.MatrixStack;
 | 
				
			||||||
import com.refinedmods.refinedstorage.api.storage.tracker.StorageTrackerEntry;
 | 
					import com.refinedmods.refinedstorage.api.storage.tracker.StorageTrackerEntry;
 | 
				
			||||||
import com.refinedmods.refinedstorage.screen.BaseScreen;
 | 
					import com.refinedmods.refinedstorage.screen.BaseScreen;
 | 
				
			||||||
 | 
					import net.minecraft.util.text.ITextComponent;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import javax.annotation.Nullable;
 | 
					import javax.annotation.Nullable;
 | 
				
			||||||
 | 
					import java.util.List;
 | 
				
			||||||
import java.util.Set;
 | 
					import java.util.Set;
 | 
				
			||||||
import java.util.UUID;
 | 
					import java.util.UUID;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -23,13 +26,13 @@ public interface IGridStack {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    Set<String> getTags();
 | 
					    Set<String> getTags();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    String getTooltip();
 | 
					    List<ITextComponent> getTooltip();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    int getQuantity();
 | 
					    int getQuantity();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    String getFormattedFullQuantity();
 | 
					    String getFormattedFullQuantity();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    void draw(BaseScreen<?> screen, int x, int y);
 | 
					    void draw(MatrixStack matrixStack, BaseScreen<?> screen, int x, int y);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    Object getIngredient();
 | 
					    Object getIngredient();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,5 +1,6 @@
 | 
				
			|||||||
package com.refinedmods.refinedstorage.screen.grid.stack;
 | 
					package com.refinedmods.refinedstorage.screen.grid.stack;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import com.mojang.blaze3d.matrix.MatrixStack;
 | 
				
			||||||
import com.refinedmods.refinedstorage.api.storage.tracker.StorageTrackerEntry;
 | 
					import com.refinedmods.refinedstorage.api.storage.tracker.StorageTrackerEntry;
 | 
				
			||||||
import com.refinedmods.refinedstorage.apiimpl.API;
 | 
					import com.refinedmods.refinedstorage.apiimpl.API;
 | 
				
			||||||
import com.refinedmods.refinedstorage.render.RenderSettings;
 | 
					import com.refinedmods.refinedstorage.render.RenderSettings;
 | 
				
			||||||
@@ -9,16 +10,15 @@ import net.minecraft.client.resources.I18n;
 | 
				
			|||||||
import net.minecraft.item.ItemStack;
 | 
					import net.minecraft.item.ItemStack;
 | 
				
			||||||
import net.minecraft.tags.ItemTags;
 | 
					import net.minecraft.tags.ItemTags;
 | 
				
			||||||
import net.minecraft.util.ResourceLocation;
 | 
					import net.minecraft.util.ResourceLocation;
 | 
				
			||||||
 | 
					import net.minecraft.util.text.ITextComponent;
 | 
				
			||||||
 | 
					import net.minecraft.util.text.StringTextComponent;
 | 
				
			||||||
import net.minecraftforge.fml.ModContainer;
 | 
					import net.minecraftforge.fml.ModContainer;
 | 
				
			||||||
import net.minecraftforge.fml.ModList;
 | 
					import net.minecraftforge.fml.ModList;
 | 
				
			||||||
import org.apache.logging.log4j.LogManager;
 | 
					import org.apache.logging.log4j.LogManager;
 | 
				
			||||||
import org.apache.logging.log4j.Logger;
 | 
					import org.apache.logging.log4j.Logger;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import javax.annotation.Nullable;
 | 
					import javax.annotation.Nullable;
 | 
				
			||||||
import java.util.HashSet;
 | 
					import java.util.*;
 | 
				
			||||||
import java.util.Optional;
 | 
					 | 
				
			||||||
import java.util.Set;
 | 
					 | 
				
			||||||
import java.util.UUID;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
public class ItemGridStack implements IGridStack {
 | 
					public class ItemGridStack implements IGridStack {
 | 
				
			||||||
    private final Logger logger = LogManager.getLogger(getClass());
 | 
					    private final Logger logger = LogManager.getLogger(getClass());
 | 
				
			||||||
@@ -36,7 +36,7 @@ public class ItemGridStack implements IGridStack {
 | 
				
			|||||||
    private String cachedName;
 | 
					    private String cachedName;
 | 
				
			||||||
    private String cachedModId;
 | 
					    private String cachedModId;
 | 
				
			||||||
    private String cachedModName;
 | 
					    private String cachedModName;
 | 
				
			||||||
    private String cachedTooltip;
 | 
					    private List<ITextComponent> cachedTooltip;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public ItemGridStack(ItemStack stack) {
 | 
					    public ItemGridStack(ItemStack stack) {
 | 
				
			||||||
        this.stack = stack;
 | 
					        this.stack = stack;
 | 
				
			||||||
@@ -90,7 +90,7 @@ public class ItemGridStack implements IGridStack {
 | 
				
			|||||||
    public String getName() {
 | 
					    public String getName() {
 | 
				
			||||||
        if (cachedName == null) {
 | 
					        if (cachedName == null) {
 | 
				
			||||||
            try {
 | 
					            try {
 | 
				
			||||||
                cachedName = stack.getDisplayName().getFormattedText();
 | 
					                cachedName = stack.getDisplayName().getString();
 | 
				
			||||||
            } catch (Throwable t) {
 | 
					            } catch (Throwable t) {
 | 
				
			||||||
                logger.warn("Could not retrieve item name of " + stack.getItem().toString(), t);
 | 
					                logger.warn("Could not retrieve item name of " + stack.getItem().toString(), t);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -141,14 +141,15 @@ public class ItemGridStack implements IGridStack {
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
    public String getTooltip() {
 | 
					    public List<ITextComponent> getTooltip() {
 | 
				
			||||||
        if (cachedTooltip == null) {
 | 
					        if (cachedTooltip == null) {
 | 
				
			||||||
            try {
 | 
					            try {
 | 
				
			||||||
                cachedTooltip = String.join("\n", RenderUtils.getTooltipFromItem(stack));
 | 
					                cachedTooltip = RenderUtils.getTooltipFromItem(stack);
 | 
				
			||||||
            } catch (Throwable t) {
 | 
					            } catch (Throwable t) {
 | 
				
			||||||
                logger.warn("Could not retrieve item tooltip of " + stack.getItem().toString(), t);
 | 
					                logger.warn("Could not retrieve item tooltip of " + stack.getItem().toString(), t);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                cachedTooltip = "<Error>";
 | 
					                cachedTooltip = new ArrayList<>();
 | 
				
			||||||
 | 
					                cachedTooltip.add(new StringTextComponent("<Error>"));
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -171,7 +172,7 @@ public class ItemGridStack implements IGridStack {
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
    public void draw(BaseScreen<?> screen, int x, int y) {
 | 
					    public void draw(MatrixStack matrixStack, BaseScreen<?> screen, int x, int y) {
 | 
				
			||||||
        String text = null;
 | 
					        String text = null;
 | 
				
			||||||
        int color = RenderSettings.INSTANCE.getSecondaryColor();
 | 
					        int color = RenderSettings.INSTANCE.getSecondaryColor();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -184,7 +185,7 @@ public class ItemGridStack implements IGridStack {
 | 
				
			|||||||
            text = API.instance().getQuantityFormatter().formatWithUnits(getQuantity());
 | 
					            text = API.instance().getQuantityFormatter().formatWithUnits(getQuantity());
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        screen.renderItem(x, y, stack, true, text, color);
 | 
					        screen.renderItem(matrixStack, x, y, stack, true, text, color);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,11 +1,14 @@
 | 
				
			|||||||
package com.refinedmods.refinedstorage.screen.widget;
 | 
					package com.refinedmods.refinedstorage.screen.widget;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import com.mojang.blaze3d.matrix.MatrixStack;
 | 
				
			||||||
import com.mojang.blaze3d.platform.GlStateManager;
 | 
					import com.mojang.blaze3d.platform.GlStateManager;
 | 
				
			||||||
import com.mojang.blaze3d.systems.RenderSystem;
 | 
					import com.mojang.blaze3d.systems.RenderSystem;
 | 
				
			||||||
import net.minecraft.client.Minecraft;
 | 
					import net.minecraft.client.Minecraft;
 | 
				
			||||||
import net.minecraft.client.gui.FontRenderer;
 | 
					import net.minecraft.client.gui.FontRenderer;
 | 
				
			||||||
import net.minecraft.client.gui.widget.button.CheckboxButton;
 | 
					import net.minecraft.client.gui.widget.button.CheckboxButton;
 | 
				
			||||||
import net.minecraft.util.ResourceLocation;
 | 
					import net.minecraft.util.ResourceLocation;
 | 
				
			||||||
 | 
					import net.minecraft.util.math.MathHelper;
 | 
				
			||||||
 | 
					import net.minecraft.util.text.ITextComponent;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import java.util.function.Consumer;
 | 
					import java.util.function.Consumer;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -16,11 +19,11 @@ public class CheckboxWidget extends CheckboxButton {
 | 
				
			|||||||
    private final Consumer<CheckboxButton> onPress;
 | 
					    private final Consumer<CheckboxButton> onPress;
 | 
				
			||||||
    private boolean shadow = true;
 | 
					    private boolean shadow = true;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public CheckboxWidget(int x, int y, String text, boolean isChecked, Consumer<CheckboxButton> onPress) {
 | 
					    public CheckboxWidget(int x, int y, ITextComponent text, boolean isChecked, Consumer<CheckboxButton> onPress) {
 | 
				
			||||||
        super(
 | 
					        super(
 | 
				
			||||||
            x,
 | 
					            x,
 | 
				
			||||||
            y,
 | 
					            y,
 | 
				
			||||||
            Minecraft.getInstance().fontRenderer.getStringWidth(text) + BOX_WIDTH,
 | 
					            Minecraft.getInstance().fontRenderer.getStringWidth(text.getString()) + BOX_WIDTH,
 | 
				
			||||||
            10,
 | 
					            10,
 | 
				
			||||||
            text,
 | 
					            text,
 | 
				
			||||||
            isChecked
 | 
					            isChecked
 | 
				
			||||||
@@ -45,17 +48,17 @@ public class CheckboxWidget extends CheckboxButton {
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
    public void renderButton(int p_renderButton_1_, int p_renderButton_2_, float p_renderButton_3_) {
 | 
					    public void renderButton(MatrixStack matrixStack, int p_230431_2_, int p_230431_3_, float p_230431_4_) {
 | 
				
			||||||
        Minecraft mc = Minecraft.getInstance();
 | 
					        Minecraft minecraft = Minecraft.getInstance();
 | 
				
			||||||
        mc.getTextureManager().bindTexture(TEXTURE);
 | 
					        minecraft.getTextureManager().bindTexture(TEXTURE);
 | 
				
			||||||
        RenderSystem.enableDepthTest();
 | 
					        RenderSystem.enableDepthTest();
 | 
				
			||||||
        FontRenderer fontRenderer = mc.fontRenderer;
 | 
					        FontRenderer fontrenderer = minecraft.fontRenderer;
 | 
				
			||||||
        RenderSystem.color4f(1.0F, 1.0F, 1.0F, this.alpha);
 | 
					        RenderSystem.color4f(1.0F, 1.0F, 1.0F, this.alpha);
 | 
				
			||||||
        RenderSystem.enableBlend();
 | 
					        RenderSystem.enableBlend();
 | 
				
			||||||
        RenderSystem.defaultBlendFunc();
 | 
					        RenderSystem.defaultBlendFunc();
 | 
				
			||||||
        RenderSystem.blendFunc(GlStateManager.SourceFactor.SRC_ALPHA, GlStateManager.DestFactor.ONE_MINUS_SRC_ALPHA);
 | 
					        RenderSystem.blendFunc(GlStateManager.SourceFactor.SRC_ALPHA, GlStateManager.DestFactor.ONE_MINUS_SRC_ALPHA);
 | 
				
			||||||
        blit(this.x, this.y, 0.0F, this.checked ? 10.0F : 0.0F, 10, this.height, 16, 32);
 | 
					        blit(matrixStack, this.x, this.y, this.isFocused() ? 20.0F : 0.0F, this.checked ? 20.0F : 0.0F, 20, this.height, 64, 64);
 | 
				
			||||||
        this.renderBg(mc, p_renderButton_1_, p_renderButton_2_);
 | 
					        this.renderBg(matrixStack, minecraft, p_230431_2_, p_230431_3_);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        int color = 14737632;
 | 
					        int color = 14737632;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -66,9 +69,9 @@ public class CheckboxWidget extends CheckboxButton {
 | 
				
			|||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if (shadow) {
 | 
					        if (shadow) {
 | 
				
			||||||
            super.drawString(fontRenderer, this.getMessage(), this.x + 13, this.y + (this.height - 8) / 2, color);
 | 
					            super.drawString(matrixStack, fontrenderer, this.getMessage(), this.x + 13, this.y + (this.height - 8) / 2, color);
 | 
				
			||||||
        } else {
 | 
					        } else {
 | 
				
			||||||
            fontRenderer.drawString(this.getMessage(), this.x + 13, this.y + (this.height - 8) / 2F, color);
 | 
					            fontrenderer.drawString(matrixStack, this.getMessage().getString(), this.x + 13, this.y + (this.height - 8) / 2F, color);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,5 +1,6 @@
 | 
				
			|||||||
package com.refinedmods.refinedstorage.screen.widget;
 | 
					package com.refinedmods.refinedstorage.screen.widget;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import com.mojang.blaze3d.matrix.MatrixStack;
 | 
				
			||||||
import com.mojang.blaze3d.systems.RenderSystem;
 | 
					import com.mojang.blaze3d.systems.RenderSystem;
 | 
				
			||||||
import com.refinedmods.refinedstorage.RS;
 | 
					import com.refinedmods.refinedstorage.RS;
 | 
				
			||||||
import com.refinedmods.refinedstorage.integration.jei.GridRecipeTransferHandler;
 | 
					import com.refinedmods.refinedstorage.integration.jei.GridRecipeTransferHandler;
 | 
				
			||||||
@@ -57,11 +58,11 @@ public class ScrollbarWidget implements IGuiEventListener {
 | 
				
			|||||||
        return enabled;
 | 
					        return enabled;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public void render() {
 | 
					    public void render(MatrixStack matrixStack) {
 | 
				
			||||||
        RenderSystem.color4f(1.0F, 1.0F, 1.0F, 1.0F);
 | 
					        RenderSystem.color4f(1.0F, 1.0F, 1.0F, 1.0F);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        screen.bindTexture(RS.ID, "icons.png");
 | 
					        screen.bindTexture(RS.ID, "icons.png");
 | 
				
			||||||
        screen.blit(screen.getGuiLeft() + x, screen.getGuiTop() + y + (int) Math.min(height - SCROLLER_HEIGHT, (float) offset / (float) maxOffset * (float) (height - SCROLLER_HEIGHT)), isEnabled() ? 232 : 244, 0, 12, 15);
 | 
					        screen.blit(matrixStack, screen.getGuiLeft() + x, screen.getGuiTop() + y + (int) Math.min(height - SCROLLER_HEIGHT, (float) offset / (float) maxOffset * (float) (height - SCROLLER_HEIGHT)), isEnabled() ? 232 : 244, 0, 12, 15);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -8,6 +8,7 @@ import com.refinedmods.refinedstorage.render.RenderSettings;
 | 
				
			|||||||
import com.refinedmods.refinedstorage.screen.BaseScreen;
 | 
					import com.refinedmods.refinedstorage.screen.BaseScreen;
 | 
				
			||||||
import net.minecraft.client.gui.FontRenderer;
 | 
					import net.minecraft.client.gui.FontRenderer;
 | 
				
			||||||
import net.minecraft.client.gui.widget.TextFieldWidget;
 | 
					import net.minecraft.client.gui.widget.TextFieldWidget;
 | 
				
			||||||
 | 
					import net.minecraft.util.text.StringTextComponent;
 | 
				
			||||||
import org.lwjgl.glfw.GLFW;
 | 
					import org.lwjgl.glfw.GLFW;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import java.util.ArrayList;
 | 
					import java.util.ArrayList;
 | 
				
			||||||
@@ -20,7 +21,7 @@ public class SearchWidget extends TextFieldWidget {
 | 
				
			|||||||
    private int historyIndex = -1;
 | 
					    private int historyIndex = -1;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public SearchWidget(FontRenderer fontRenderer, int x, int y, int width) {
 | 
					    public SearchWidget(FontRenderer fontRenderer, int x, int y, int width) {
 | 
				
			||||||
        super(fontRenderer, x, y, width, fontRenderer.FONT_HEIGHT, "");
 | 
					        super(fontRenderer, x, y, width, fontRenderer.FONT_HEIGHT, new StringTextComponent(""));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        this.setEnableBackgroundDrawing(false);
 | 
					        this.setEnableBackgroundDrawing(false);
 | 
				
			||||||
        this.setVisible(true);
 | 
					        this.setVisible(true);
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,5 +1,6 @@
 | 
				
			|||||||
package com.refinedmods.refinedstorage.screen.widget;
 | 
					package com.refinedmods.refinedstorage.screen.widget;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import com.mojang.blaze3d.matrix.MatrixStack;
 | 
				
			||||||
import com.mojang.blaze3d.systems.RenderSystem;
 | 
					import com.mojang.blaze3d.systems.RenderSystem;
 | 
				
			||||||
import com.refinedmods.refinedstorage.RS;
 | 
					import com.refinedmods.refinedstorage.RS;
 | 
				
			||||||
import com.refinedmods.refinedstorage.api.network.grid.IGridTab;
 | 
					import com.refinedmods.refinedstorage.api.network.grid.IGridTab;
 | 
				
			||||||
@@ -8,6 +9,7 @@ import com.refinedmods.refinedstorage.screen.BaseScreen;
 | 
				
			|||||||
import com.refinedmods.refinedstorage.util.RenderUtils;
 | 
					import com.refinedmods.refinedstorage.util.RenderUtils;
 | 
				
			||||||
import net.minecraft.client.gui.FontRenderer;
 | 
					import net.minecraft.client.gui.FontRenderer;
 | 
				
			||||||
import net.minecraft.client.gui.widget.button.Button;
 | 
					import net.minecraft.client.gui.widget.button.Button;
 | 
				
			||||||
 | 
					import net.minecraft.util.text.StringTextComponent;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import java.util.LinkedList;
 | 
					import java.util.LinkedList;
 | 
				
			||||||
import java.util.List;
 | 
					import java.util.List;
 | 
				
			||||||
@@ -47,22 +49,22 @@ public class TabListWidget {
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public void init(int width) {
 | 
					    public void init(int width) {
 | 
				
			||||||
        this.left = screen.addButton(screen.getGuiLeft(), screen.getGuiTop() - 22, 20, 20, "<", true, pages.get() > 0, btn -> listeners.forEach(t -> t.onPageChanged(page.get() - 1)));
 | 
					        this.left = screen.addButton(screen.getGuiLeft(), screen.getGuiTop() - 22, 20, 20, new StringTextComponent("<"), true, pages.get() > 0, btn -> listeners.forEach(t -> t.onPageChanged(page.get() - 1)));
 | 
				
			||||||
        this.right = screen.addButton(screen.getGuiLeft() + width - 22, screen.getGuiTop() - 22, 20, 20, ">", true, pages.get() > 0, btn -> listeners.forEach(t -> t.onPageChanged(page.get() + 1)));
 | 
					        this.right = screen.addButton(screen.getGuiLeft() + width - 22, screen.getGuiTop() - 22, 20, 20, new StringTextComponent(">"), true, pages.get() > 0, btn -> listeners.forEach(t -> t.onPageChanged(page.get() + 1)));
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public void addListener(ITabListListener listener) {
 | 
					    public void addListener(ITabListListener listener) {
 | 
				
			||||||
        listeners.add(listener);
 | 
					        listeners.add(listener);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public void drawForeground(int x, int y, int mouseX, int mouseY, boolean visible) {
 | 
					    public void drawForeground(MatrixStack matrixStack, int x, int y, int mouseX, int mouseY, boolean visible) {
 | 
				
			||||||
        this.tabHovering = -1;
 | 
					        this.tabHovering = -1;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if (visible) {
 | 
					        if (visible) {
 | 
				
			||||||
            int j = 0;
 | 
					            int j = 0;
 | 
				
			||||||
            for (int i = page.get() * tabsPerPage; i < (page.get() * tabsPerPage) + tabsPerPage; ++i) {
 | 
					            for (int i = page.get() * tabsPerPage; i < (page.get() * tabsPerPage) + tabsPerPage; ++i) {
 | 
				
			||||||
                if (i < tabs.get().size()) {
 | 
					                if (i < tabs.get().size()) {
 | 
				
			||||||
                    drawTab(tabs.get().get(i), true, x, y, i, j);
 | 
					                    drawTab(matrixStack, tabs.get().get(i), true, x, y, i, j);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                    if (RenderUtils.inBounds(x + getXOffset() + ((IGridTab.TAB_WIDTH + 1) * j), y, IGridTab.TAB_WIDTH, IGridTab.TAB_HEIGHT - (i == selected.get() ? 2 : 7), mouseX, mouseY)) {
 | 
					                    if (RenderUtils.inBounds(x + getXOffset() + ((IGridTab.TAB_WIDTH + 1) * j), y, IGridTab.TAB_WIDTH, IGridTab.TAB_HEIGHT - (i == selected.get() ? 2 : 7), mouseX, mouseY)) {
 | 
				
			||||||
                        this.tabHovering = i;
 | 
					                        this.tabHovering = i;
 | 
				
			||||||
@@ -94,11 +96,11 @@ public class TabListWidget {
 | 
				
			|||||||
        right.active = page.get() < pages.get();
 | 
					        right.active = page.get() < pages.get();
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public void drawBackground(int x, int y) {
 | 
					    public void drawBackground(MatrixStack matrixStack, int x, int y) {
 | 
				
			||||||
        int j = 0;
 | 
					        int j = 0;
 | 
				
			||||||
        for (int i = page.get() * tabsPerPage; i < (page.get() * tabsPerPage) + tabsPerPage; ++i) {
 | 
					        for (int i = page.get() * tabsPerPage; i < (page.get() * tabsPerPage) + tabsPerPage; ++i) {
 | 
				
			||||||
            if (i < tabs.get().size()) {
 | 
					            if (i < tabs.get().size()) {
 | 
				
			||||||
                drawTab(tabs.get().get(i), false, x, y, i, j++);
 | 
					                drawTab(matrixStack, tabs.get().get(i), false, x, y, i, j++);
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
@@ -115,7 +117,7 @@ public class TabListWidget {
 | 
				
			|||||||
        return 0;
 | 
					        return 0;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    private void drawTab(IGridTab tab, boolean foregroundLayer, int x, int y, int index, int num) {
 | 
					    private void drawTab(MatrixStack matrixStack, IGridTab tab, boolean foregroundLayer, int x, int y, int index, int num) {
 | 
				
			||||||
        boolean isSelected = index == selected.get();
 | 
					        boolean isSelected = index == selected.get();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if ((foregroundLayer && !isSelected) || (!foregroundLayer && isSelected)) {
 | 
					        if ((foregroundLayer && !isSelected) || (!foregroundLayer && isSelected)) {
 | 
				
			||||||
@@ -151,14 +153,14 @@ public class TabListWidget {
 | 
				
			|||||||
            uvx = 199;
 | 
					            uvx = 199;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        screen.blit(tx, ty, uvx, uvy, tbw, IGridTab.TAB_HEIGHT);
 | 
					        screen.blit(matrixStack, tx, ty, uvx, uvy, tbw, IGridTab.TAB_HEIGHT);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        tab.drawIcon(otx + 6, ty + 9 - (!isSelected ? 3 : 0), drawers.getItemDrawer(), drawers.getFluidDrawer());
 | 
					        tab.drawIcon(matrixStack, otx + 6, ty + 9 - (!isSelected ? 3 : 0), drawers.getItemDrawer(), drawers.getFluidDrawer());
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public void drawTooltip(FontRenderer fontRenderer, int mouseX, int mouseY) {
 | 
					    public void drawTooltip(MatrixStack matrixStack, FontRenderer fontRenderer, int mouseX, int mouseY) {
 | 
				
			||||||
        if (tabHovering >= 0 && tabHovering < tabs.get().size()) {
 | 
					        if (tabHovering >= 0 && tabHovering < tabs.get().size()) {
 | 
				
			||||||
            tabs.get().get(tabHovering).drawTooltip(mouseX, mouseY, screen.width, screen.height, fontRenderer);
 | 
					            tabs.get().get(tabHovering).drawTooltip(matrixStack, mouseX, mouseY, screen.width, screen.height, fontRenderer);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,5 +1,6 @@
 | 
				
			|||||||
package com.refinedmods.refinedstorage.screen.widget.sidebutton;
 | 
					package com.refinedmods.refinedstorage.screen.widget.sidebutton;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import com.mojang.blaze3d.matrix.MatrixStack;
 | 
				
			||||||
import com.refinedmods.refinedstorage.api.storage.AccessType;
 | 
					import com.refinedmods.refinedstorage.api.storage.AccessType;
 | 
				
			||||||
import com.refinedmods.refinedstorage.screen.BaseScreen;
 | 
					import com.refinedmods.refinedstorage.screen.BaseScreen;
 | 
				
			||||||
import com.refinedmods.refinedstorage.tile.data.TileDataManager;
 | 
					import com.refinedmods.refinedstorage.tile.data.TileDataManager;
 | 
				
			||||||
@@ -18,8 +19,8 @@ public class AccessTypeSideButton extends SideButton {
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
    protected void renderButtonIcon(int x, int y) {
 | 
					    protected void renderButtonIcon(MatrixStack matrixStack, int x, int y) {
 | 
				
			||||||
        screen.blit(x, y, 16 * parameter.getValue().getId(), 240, 16, 16);
 | 
					        screen.blit(matrixStack, x, y, 16 * parameter.getValue().getId(), 240, 16, 16);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,5 +1,6 @@
 | 
				
			|||||||
package com.refinedmods.refinedstorage.screen.widget.sidebutton;
 | 
					package com.refinedmods.refinedstorage.screen.widget.sidebutton;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import com.mojang.blaze3d.matrix.MatrixStack;
 | 
				
			||||||
import com.refinedmods.refinedstorage.container.ConstructorContainer;
 | 
					import com.refinedmods.refinedstorage.container.ConstructorContainer;
 | 
				
			||||||
import com.refinedmods.refinedstorage.screen.BaseScreen;
 | 
					import com.refinedmods.refinedstorage.screen.BaseScreen;
 | 
				
			||||||
import com.refinedmods.refinedstorage.tile.ConstructorTile;
 | 
					import com.refinedmods.refinedstorage.tile.ConstructorTile;
 | 
				
			||||||
@@ -13,8 +14,8 @@ public class ConstructorDropSideButton extends SideButton {
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
    protected void renderButtonIcon(int x, int y) {
 | 
					    protected void renderButtonIcon(MatrixStack matrixStack, int x, int y) {
 | 
				
			||||||
        screen.blit(x, y, 64 + (ConstructorTile.DROP.getValue() ? 16 : 0), 16, 16, 16);
 | 
					        screen.blit(matrixStack, x, y, 64 + (ConstructorTile.DROP.getValue() ? 16 : 0), 16, 16, 16);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,5 +1,6 @@
 | 
				
			|||||||
package com.refinedmods.refinedstorage.screen.widget.sidebutton;
 | 
					package com.refinedmods.refinedstorage.screen.widget.sidebutton;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import com.mojang.blaze3d.matrix.MatrixStack;
 | 
				
			||||||
import com.refinedmods.refinedstorage.api.network.grid.IGrid;
 | 
					import com.refinedmods.refinedstorage.api.network.grid.IGrid;
 | 
				
			||||||
import com.refinedmods.refinedstorage.integration.jei.JeiIntegration;
 | 
					import com.refinedmods.refinedstorage.integration.jei.JeiIntegration;
 | 
				
			||||||
import com.refinedmods.refinedstorage.screen.CrafterManagerScreen;
 | 
					import com.refinedmods.refinedstorage.screen.CrafterManagerScreen;
 | 
				
			||||||
@@ -19,10 +20,10 @@ public class CrafterManagerSearchBoxModeSideButton extends SideButton {
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
    protected void renderButtonIcon(int x, int y) {
 | 
					    protected void renderButtonIcon(MatrixStack matrixStack, int x, int y) {
 | 
				
			||||||
        int mode = ((CrafterManagerScreen) screen).getCrafterManager().getSearchBoxMode();
 | 
					        int mode = ((CrafterManagerScreen) screen).getCrafterManager().getSearchBoxMode();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        screen.blit(x, y, mode == IGrid.SEARCH_BOX_MODE_NORMAL_AUTOSELECTED || mode == IGrid.SEARCH_BOX_MODE_JEI_SYNCHRONIZED_AUTOSELECTED ? 16 : 0, 96, 16, 16);
 | 
					        screen.blit(matrixStack, x, y, mode == IGrid.SEARCH_BOX_MODE_NORMAL_AUTOSELECTED || mode == IGrid.SEARCH_BOX_MODE_JEI_SYNCHRONIZED_AUTOSELECTED ? 16 : 0, 96, 16, 16);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,5 +1,6 @@
 | 
				
			|||||||
package com.refinedmods.refinedstorage.screen.widget.sidebutton;
 | 
					package com.refinedmods.refinedstorage.screen.widget.sidebutton;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import com.mojang.blaze3d.matrix.MatrixStack;
 | 
				
			||||||
import com.refinedmods.refinedstorage.container.CrafterContainer;
 | 
					import com.refinedmods.refinedstorage.container.CrafterContainer;
 | 
				
			||||||
import com.refinedmods.refinedstorage.screen.BaseScreen;
 | 
					import com.refinedmods.refinedstorage.screen.BaseScreen;
 | 
				
			||||||
import com.refinedmods.refinedstorage.tile.CrafterTile;
 | 
					import com.refinedmods.refinedstorage.tile.CrafterTile;
 | 
				
			||||||
@@ -18,8 +19,8 @@ public class CrafterModeSideButton extends SideButton {
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
    protected void renderButtonIcon(int x, int y) {
 | 
					    protected void renderButtonIcon(MatrixStack matrixStack, int x, int y) {
 | 
				
			||||||
        screen.blit(x, y, CrafterTile.MODE.getValue() * 16, 0, 16, 16);
 | 
					        screen.blit(matrixStack, x, y, CrafterTile.MODE.getValue() * 16, 0, 16, 16);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,5 +1,6 @@
 | 
				
			|||||||
package com.refinedmods.refinedstorage.screen.widget.sidebutton;
 | 
					package com.refinedmods.refinedstorage.screen.widget.sidebutton;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import com.mojang.blaze3d.matrix.MatrixStack;
 | 
				
			||||||
import com.refinedmods.refinedstorage.container.DestructorContainer;
 | 
					import com.refinedmods.refinedstorage.container.DestructorContainer;
 | 
				
			||||||
import com.refinedmods.refinedstorage.screen.BaseScreen;
 | 
					import com.refinedmods.refinedstorage.screen.BaseScreen;
 | 
				
			||||||
import com.refinedmods.refinedstorage.tile.DestructorTile;
 | 
					import com.refinedmods.refinedstorage.tile.DestructorTile;
 | 
				
			||||||
@@ -13,8 +14,8 @@ public class DestructorPickupSideButton extends SideButton {
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
    protected void renderButtonIcon(int x, int y) {
 | 
					    protected void renderButtonIcon(MatrixStack matrixStack, int x, int y) {
 | 
				
			||||||
        screen.blit(x, y, 64 + (!DestructorTile.PICKUP.getValue() ? 16 : 0), 0, 16, 16);
 | 
					        screen.blit(matrixStack, x, y, 64 + (!DestructorTile.PICKUP.getValue() ? 16 : 0), 0, 16, 16);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,5 +1,6 @@
 | 
				
			|||||||
package com.refinedmods.refinedstorage.screen.widget.sidebutton;
 | 
					package com.refinedmods.refinedstorage.screen.widget.sidebutton;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import com.mojang.blaze3d.matrix.MatrixStack;
 | 
				
			||||||
import com.refinedmods.refinedstorage.apiimpl.network.node.DetectorNetworkNode;
 | 
					import com.refinedmods.refinedstorage.apiimpl.network.node.DetectorNetworkNode;
 | 
				
			||||||
import com.refinedmods.refinedstorage.container.DetectorContainer;
 | 
					import com.refinedmods.refinedstorage.container.DetectorContainer;
 | 
				
			||||||
import com.refinedmods.refinedstorage.screen.BaseScreen;
 | 
					import com.refinedmods.refinedstorage.screen.BaseScreen;
 | 
				
			||||||
@@ -19,8 +20,8 @@ public class DetectorModeSideButton extends SideButton {
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
    protected void renderButtonIcon(int x, int y) {
 | 
					    protected void renderButtonIcon(MatrixStack matrixStack, int x, int y) {
 | 
				
			||||||
        screen.blit(x, y, DetectorTile.MODE.getValue() * 16, 176, 16, 16);
 | 
					        screen.blit(matrixStack, x, y, DetectorTile.MODE.getValue() * 16, 176, 16, 16);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,5 +1,6 @@
 | 
				
			|||||||
package com.refinedmods.refinedstorage.screen.widget.sidebutton;
 | 
					package com.refinedmods.refinedstorage.screen.widget.sidebutton;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import com.mojang.blaze3d.matrix.MatrixStack;
 | 
				
			||||||
import com.refinedmods.refinedstorage.api.util.IComparer;
 | 
					import com.refinedmods.refinedstorage.api.util.IComparer;
 | 
				
			||||||
import com.refinedmods.refinedstorage.screen.BaseScreen;
 | 
					import com.refinedmods.refinedstorage.screen.BaseScreen;
 | 
				
			||||||
import com.refinedmods.refinedstorage.tile.data.TileDataManager;
 | 
					import com.refinedmods.refinedstorage.tile.data.TileDataManager;
 | 
				
			||||||
@@ -32,11 +33,11 @@ public class ExactModeSideButton extends SideButton {
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
    protected void renderButtonIcon(int x, int y) {
 | 
					    protected void renderButtonIcon(MatrixStack matrixStack, int x, int y) {
 | 
				
			||||||
        int ty = 16 * 12;
 | 
					        int ty = 16 * 12;
 | 
				
			||||||
        int tx = (parameter.getValue() & MASK) == MASK ? 0 : 16;
 | 
					        int tx = (parameter.getValue() & MASK) == MASK ? 0 : 16;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        screen.blit(x, y, tx, ty, 16, 16);
 | 
					        screen.blit(matrixStack, x, y, tx, ty, 16, 16);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,5 +1,6 @@
 | 
				
			|||||||
package com.refinedmods.refinedstorage.screen.widget.sidebutton;
 | 
					package com.refinedmods.refinedstorage.screen.widget.sidebutton;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import com.mojang.blaze3d.matrix.MatrixStack;
 | 
				
			||||||
import com.refinedmods.refinedstorage.screen.FilterScreen;
 | 
					import com.refinedmods.refinedstorage.screen.FilterScreen;
 | 
				
			||||||
import com.refinedmods.refinedstorage.tile.config.IType;
 | 
					import com.refinedmods.refinedstorage.tile.config.IType;
 | 
				
			||||||
import net.minecraft.client.resources.I18n;
 | 
					import net.minecraft.client.resources.I18n;
 | 
				
			||||||
@@ -20,8 +21,8 @@ public class FilterTypeSideButton extends SideButton {
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
    protected void renderButtonIcon(int x, int y) {
 | 
					    protected void renderButtonIcon(MatrixStack matrixStack, int x, int y) {
 | 
				
			||||||
        screen.blit(x, y, 16 * screen.getType(), 128, 16, 16);
 | 
					        screen.blit(matrixStack, x, y, 16 * screen.getType(), 128, 16, 16);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,5 +1,6 @@
 | 
				
			|||||||
package com.refinedmods.refinedstorage.screen.widget.sidebutton;
 | 
					package com.refinedmods.refinedstorage.screen.widget.sidebutton;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import com.mojang.blaze3d.matrix.MatrixStack;
 | 
				
			||||||
import com.refinedmods.refinedstorage.api.network.grid.IGrid;
 | 
					import com.refinedmods.refinedstorage.api.network.grid.IGrid;
 | 
				
			||||||
import com.refinedmods.refinedstorage.integration.jei.JeiIntegration;
 | 
					import com.refinedmods.refinedstorage.integration.jei.JeiIntegration;
 | 
				
			||||||
import com.refinedmods.refinedstorage.screen.grid.GridScreen;
 | 
					import com.refinedmods.refinedstorage.screen.grid.GridScreen;
 | 
				
			||||||
@@ -17,10 +18,10 @@ public class GridSearchBoxModeSideButton extends SideButton {
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
    protected void renderButtonIcon(int x, int y) {
 | 
					    protected void renderButtonIcon(MatrixStack matrixStack, int x, int y) {
 | 
				
			||||||
        int mode = ((GridScreen) screen).getGrid().getSearchBoxMode();
 | 
					        int mode = ((GridScreen) screen).getGrid().getSearchBoxMode();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        screen.blit(x, y, mode == IGrid.SEARCH_BOX_MODE_NORMAL_AUTOSELECTED || mode == IGrid.SEARCH_BOX_MODE_JEI_SYNCHRONIZED_AUTOSELECTED ? 16 : 0, 96, 16, 16);
 | 
					        screen.blit(matrixStack, x, y, mode == IGrid.SEARCH_BOX_MODE_NORMAL_AUTOSELECTED || mode == IGrid.SEARCH_BOX_MODE_JEI_SYNCHRONIZED_AUTOSELECTED ? 16 : 0, 96, 16, 16);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,5 +1,6 @@
 | 
				
			|||||||
package com.refinedmods.refinedstorage.screen.widget.sidebutton;
 | 
					package com.refinedmods.refinedstorage.screen.widget.sidebutton;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import com.mojang.blaze3d.matrix.MatrixStack;
 | 
				
			||||||
import com.refinedmods.refinedstorage.api.network.grid.IGrid;
 | 
					import com.refinedmods.refinedstorage.api.network.grid.IGrid;
 | 
				
			||||||
import com.refinedmods.refinedstorage.screen.BaseScreen;
 | 
					import com.refinedmods.refinedstorage.screen.BaseScreen;
 | 
				
			||||||
import net.minecraft.client.resources.I18n;
 | 
					import net.minecraft.client.resources.I18n;
 | 
				
			||||||
@@ -24,7 +25,7 @@ public class GridSizeSideButton extends SideButton {
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
    protected void renderButtonIcon(int x, int y) {
 | 
					    protected void renderButtonIcon(MatrixStack matrixStack, int x, int y) {
 | 
				
			||||||
        int size = this.sizeSupplier.get();
 | 
					        int size = this.sizeSupplier.get();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        int tx = 0;
 | 
					        int tx = 0;
 | 
				
			||||||
@@ -39,7 +40,7 @@ public class GridSizeSideButton extends SideButton {
 | 
				
			|||||||
            tx = 32;
 | 
					            tx = 32;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        screen.blit(x, y, 64 + tx, 64, 16, 16);
 | 
					        screen.blit(matrixStack, x, y, 64 + tx, 64, 16, 16);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,5 +1,6 @@
 | 
				
			|||||||
package com.refinedmods.refinedstorage.screen.widget.sidebutton;
 | 
					package com.refinedmods.refinedstorage.screen.widget.sidebutton;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import com.mojang.blaze3d.matrix.MatrixStack;
 | 
				
			||||||
import com.refinedmods.refinedstorage.api.network.grid.IGrid;
 | 
					import com.refinedmods.refinedstorage.api.network.grid.IGrid;
 | 
				
			||||||
import com.refinedmods.refinedstorage.container.GridContainer;
 | 
					import com.refinedmods.refinedstorage.container.GridContainer;
 | 
				
			||||||
import com.refinedmods.refinedstorage.screen.BaseScreen;
 | 
					import com.refinedmods.refinedstorage.screen.BaseScreen;
 | 
				
			||||||
@@ -21,8 +22,8 @@ public class GridSortingDirectionSideButton extends SideButton {
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
    protected void renderButtonIcon(int x, int y) {
 | 
					    protected void renderButtonIcon(MatrixStack matrixStack, int x, int y) {
 | 
				
			||||||
        screen.blit(x, y, grid.getSortingDirection() * 16, 16, 16, 16);
 | 
					        screen.blit(matrixStack, x, y, grid.getSortingDirection() * 16, 16, 16, 16);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,5 +1,6 @@
 | 
				
			|||||||
package com.refinedmods.refinedstorage.screen.widget.sidebutton;
 | 
					package com.refinedmods.refinedstorage.screen.widget.sidebutton;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import com.mojang.blaze3d.matrix.MatrixStack;
 | 
				
			||||||
import com.refinedmods.refinedstorage.api.network.grid.GridType;
 | 
					import com.refinedmods.refinedstorage.api.network.grid.GridType;
 | 
				
			||||||
import com.refinedmods.refinedstorage.api.network.grid.IGrid;
 | 
					import com.refinedmods.refinedstorage.api.network.grid.IGrid;
 | 
				
			||||||
import com.refinedmods.refinedstorage.apiimpl.network.node.GridNetworkNode;
 | 
					import com.refinedmods.refinedstorage.apiimpl.network.node.GridNetworkNode;
 | 
				
			||||||
@@ -24,11 +25,11 @@ public class GridSortingTypeSideButton extends SideButton {
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
    protected void renderButtonIcon(int x, int y) {
 | 
					    protected void renderButtonIcon(MatrixStack matrixStack, int x, int y) {
 | 
				
			||||||
        if (grid.getSortingType() == IGrid.SORTING_TYPE_LAST_MODIFIED) {
 | 
					        if (grid.getSortingType() == IGrid.SORTING_TYPE_LAST_MODIFIED) {
 | 
				
			||||||
            screen.blit(x, y, 48, 48, 16, 16);
 | 
					            screen.blit(matrixStack, x, y, 48, 48, 16, 16);
 | 
				
			||||||
        } else {
 | 
					        } else {
 | 
				
			||||||
            screen.blit(x, y, grid.getSortingType() * 16, 32, 16, 16);
 | 
					            screen.blit(matrixStack, x, y, grid.getSortingType() * 16, 32, 16, 16);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,5 +1,6 @@
 | 
				
			|||||||
package com.refinedmods.refinedstorage.screen.widget.sidebutton;
 | 
					package com.refinedmods.refinedstorage.screen.widget.sidebutton;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import com.mojang.blaze3d.matrix.MatrixStack;
 | 
				
			||||||
import com.refinedmods.refinedstorage.api.network.grid.IGrid;
 | 
					import com.refinedmods.refinedstorage.api.network.grid.IGrid;
 | 
				
			||||||
import com.refinedmods.refinedstorage.container.GridContainer;
 | 
					import com.refinedmods.refinedstorage.container.GridContainer;
 | 
				
			||||||
import com.refinedmods.refinedstorage.screen.BaseScreen;
 | 
					import com.refinedmods.refinedstorage.screen.BaseScreen;
 | 
				
			||||||
@@ -21,8 +22,8 @@ public class GridViewTypeSideButton extends SideButton {
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
    protected void renderButtonIcon(int x, int y) {
 | 
					    protected void renderButtonIcon(MatrixStack matrixStack, int x, int y) {
 | 
				
			||||||
        screen.blit(x, y, (grid.getViewType() - (grid.getViewType() >= 3 ? 3 : 0)) * 16, 112, 16, 16);
 | 
					        screen.blit(matrixStack, x, y, (grid.getViewType() - (grid.getViewType() >= 3 ? 3 : 0)) * 16, 112, 16, 16);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,5 +1,6 @@
 | 
				
			|||||||
package com.refinedmods.refinedstorage.screen.widget.sidebutton;
 | 
					package com.refinedmods.refinedstorage.screen.widget.sidebutton;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import com.mojang.blaze3d.matrix.MatrixStack;
 | 
				
			||||||
import com.refinedmods.refinedstorage.apiimpl.network.node.diskmanipulator.DiskManipulatorNetworkNode;
 | 
					import com.refinedmods.refinedstorage.apiimpl.network.node.diskmanipulator.DiskManipulatorNetworkNode;
 | 
				
			||||||
import com.refinedmods.refinedstorage.container.DiskManipulatorContainer;
 | 
					import com.refinedmods.refinedstorage.container.DiskManipulatorContainer;
 | 
				
			||||||
import com.refinedmods.refinedstorage.screen.BaseScreen;
 | 
					import com.refinedmods.refinedstorage.screen.BaseScreen;
 | 
				
			||||||
@@ -19,8 +20,8 @@ public class IoModeSideButton extends SideButton {
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
    protected void renderButtonIcon(int x, int y) {
 | 
					    protected void renderButtonIcon(MatrixStack matrixStack, int x, int y) {
 | 
				
			||||||
        screen.blit(x, y, DiskManipulatorTile.IO_MODE.getValue() == DiskManipulatorNetworkNode.IO_MODE_EXTRACT ? 0 : 16, 160, 16, 16);
 | 
					        screen.blit(matrixStack, x, y, DiskManipulatorTile.IO_MODE.getValue() == DiskManipulatorNetworkNode.IO_MODE_EXTRACT ? 0 : 16, 160, 16, 16);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,5 +1,6 @@
 | 
				
			|||||||
package com.refinedmods.refinedstorage.screen.widget.sidebutton;
 | 
					package com.refinedmods.refinedstorage.screen.widget.sidebutton;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import com.mojang.blaze3d.matrix.MatrixStack;
 | 
				
			||||||
import com.refinedmods.refinedstorage.screen.BaseScreen;
 | 
					import com.refinedmods.refinedstorage.screen.BaseScreen;
 | 
				
			||||||
import com.refinedmods.refinedstorage.tile.data.TileDataManager;
 | 
					import com.refinedmods.refinedstorage.tile.data.TileDataManager;
 | 
				
			||||||
import com.refinedmods.refinedstorage.tile.data.TileDataParameter;
 | 
					import com.refinedmods.refinedstorage.tile.data.TileDataParameter;
 | 
				
			||||||
@@ -21,8 +22,8 @@ public class RedstoneModeSideButton extends SideButton {
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
    protected void renderButtonIcon(int x, int y) {
 | 
					    protected void renderButtonIcon(MatrixStack matrixStack, int x, int y) {
 | 
				
			||||||
        screen.blit(x, y, parameter.getValue() * 16, 0, 16, 16);
 | 
					        screen.blit(matrixStack, x, y, parameter.getValue() * 16, 0, 16, 16);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,10 +1,12 @@
 | 
				
			|||||||
package com.refinedmods.refinedstorage.screen.widget.sidebutton;
 | 
					package com.refinedmods.refinedstorage.screen.widget.sidebutton;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import com.mojang.blaze3d.matrix.MatrixStack;
 | 
				
			||||||
import com.mojang.blaze3d.systems.RenderSystem;
 | 
					import com.mojang.blaze3d.systems.RenderSystem;
 | 
				
			||||||
import com.refinedmods.refinedstorage.RS;
 | 
					import com.refinedmods.refinedstorage.RS;
 | 
				
			||||||
import com.refinedmods.refinedstorage.screen.BaseScreen;
 | 
					import com.refinedmods.refinedstorage.screen.BaseScreen;
 | 
				
			||||||
import com.refinedmods.refinedstorage.util.RenderUtils;
 | 
					import com.refinedmods.refinedstorage.util.RenderUtils;
 | 
				
			||||||
import net.minecraft.client.gui.widget.button.Button;
 | 
					import net.minecraft.client.gui.widget.button.Button;
 | 
				
			||||||
 | 
					import net.minecraft.util.text.StringTextComponent;
 | 
				
			||||||
import org.lwjgl.opengl.GL11;
 | 
					import org.lwjgl.opengl.GL11;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
public abstract class SideButton extends Button {
 | 
					public abstract class SideButton extends Button {
 | 
				
			||||||
@@ -14,34 +16,34 @@ public abstract class SideButton extends Button {
 | 
				
			|||||||
    protected final BaseScreen<?> screen;
 | 
					    protected final BaseScreen<?> screen;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public SideButton(BaseScreen<?> screen) {
 | 
					    public SideButton(BaseScreen<?> screen) {
 | 
				
			||||||
        super(-1, -1, 18, 18, "", btn -> {
 | 
					        super(-1, -1, 18, 18, new StringTextComponent(""), btn -> {
 | 
				
			||||||
        });
 | 
					        });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        this.screen = screen;
 | 
					        this.screen = screen;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
    public void renderButton(int mouseX, int mouseY, float partialTicks) {
 | 
					    public void renderButton(MatrixStack matrixStack, int mouseX, int mouseY, float partialTicks) {
 | 
				
			||||||
        RenderSystem.color4f(1.0F, 1.0F, 1.0F, 1.0F);
 | 
					        RenderSystem.color4f(1.0F, 1.0F, 1.0F, 1.0F);
 | 
				
			||||||
        RenderSystem.enableAlphaTest();
 | 
					        RenderSystem.enableAlphaTest();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        isHovered = RenderUtils.inBounds(x, y, width, height, mouseX, mouseY);
 | 
					        isHovered = RenderUtils.inBounds(x, y, width, height, mouseX, mouseY);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        screen.bindTexture(RS.ID, "icons.png");
 | 
					        screen.bindTexture(RS.ID, "icons.png");
 | 
				
			||||||
        screen.blit(x, y, 238, isHovered ? 35 : 16, 18, 18);
 | 
					        screen.blit(matrixStack, x, y, 238, isHovered ? 35 : 16, 18, 18);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        renderButtonIcon(x + 1, y + 1);
 | 
					        renderButtonIcon(matrixStack, x + 1, y + 1);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if (isHovered) {
 | 
					        if (isHovered) {
 | 
				
			||||||
            RenderSystem.enableBlend();
 | 
					            RenderSystem.enableBlend();
 | 
				
			||||||
            RenderSystem.blendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);
 | 
					            RenderSystem.blendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);
 | 
				
			||||||
            RenderSystem.color4f(1.0f, 1.0f, 1.0f, 0.5f);
 | 
					            RenderSystem.color4f(1.0f, 1.0f, 1.0f, 0.5f);
 | 
				
			||||||
            screen.blit(x, y, 238, 54, 18, 18);
 | 
					            screen.blit(matrixStack, x, y, 238, 54, 18, 18);
 | 
				
			||||||
            RenderSystem.disableBlend();
 | 
					            RenderSystem.disableBlend();
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    protected abstract void renderButtonIcon(int x, int y);
 | 
					    protected abstract void renderButtonIcon(MatrixStack matrixStack, int x, int y);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public abstract String getTooltip();
 | 
					    public abstract String getTooltip();
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,5 +1,6 @@
 | 
				
			|||||||
package com.refinedmods.refinedstorage.screen.widget.sidebutton;
 | 
					package com.refinedmods.refinedstorage.screen.widget.sidebutton;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import com.mojang.blaze3d.matrix.MatrixStack;
 | 
				
			||||||
import com.refinedmods.refinedstorage.screen.BaseScreen;
 | 
					import com.refinedmods.refinedstorage.screen.BaseScreen;
 | 
				
			||||||
import com.refinedmods.refinedstorage.tile.config.IType;
 | 
					import com.refinedmods.refinedstorage.tile.config.IType;
 | 
				
			||||||
import com.refinedmods.refinedstorage.tile.data.TileDataManager;
 | 
					import com.refinedmods.refinedstorage.tile.data.TileDataManager;
 | 
				
			||||||
@@ -22,8 +23,8 @@ public class TypeSideButton extends SideButton {
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
    protected void renderButtonIcon(int x, int y) {
 | 
					    protected void renderButtonIcon(MatrixStack matrixStack, int x, int y) {
 | 
				
			||||||
        screen.blit(x, y, 16 * type.getValue(), 128, 16, 16);
 | 
					        screen.blit(matrixStack, x, y, 16 * type.getValue(), 128, 16, 16);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,5 +1,6 @@
 | 
				
			|||||||
package com.refinedmods.refinedstorage.screen.widget.sidebutton;
 | 
					package com.refinedmods.refinedstorage.screen.widget.sidebutton;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import com.mojang.blaze3d.matrix.MatrixStack;
 | 
				
			||||||
import com.refinedmods.refinedstorage.screen.BaseScreen;
 | 
					import com.refinedmods.refinedstorage.screen.BaseScreen;
 | 
				
			||||||
import com.refinedmods.refinedstorage.tile.config.IWhitelistBlacklist;
 | 
					import com.refinedmods.refinedstorage.tile.config.IWhitelistBlacklist;
 | 
				
			||||||
import com.refinedmods.refinedstorage.tile.data.TileDataManager;
 | 
					import com.refinedmods.refinedstorage.tile.data.TileDataManager;
 | 
				
			||||||
@@ -22,8 +23,8 @@ public class WhitelistBlacklistSideButton extends SideButton {
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
    protected void renderButtonIcon(int x, int y) {
 | 
					    protected void renderButtonIcon(MatrixStack matrixStack, int x, int y) {
 | 
				
			||||||
        screen.blit(x, y, parameter.getValue() == IWhitelistBlacklist.WHITELIST ? 0 : 16, 64, 16, 16);
 | 
					        screen.blit(matrixStack, x, y, parameter.getValue() == IWhitelistBlacklist.WHITELIST ? 0 : 16, 64, 16, 16);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -2,11 +2,11 @@ package com.refinedmods.refinedstorage.util;
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
import net.minecraft.util.math.AxisAlignedBB;
 | 
					import net.minecraft.util.math.AxisAlignedBB;
 | 
				
			||||||
import net.minecraft.util.math.BlockPos;
 | 
					import net.minecraft.util.math.BlockPos;
 | 
				
			||||||
import net.minecraft.util.math.Vec3d;
 | 
					 | 
				
			||||||
import net.minecraft.util.math.shapes.VoxelShape;
 | 
					import net.minecraft.util.math.shapes.VoxelShape;
 | 
				
			||||||
 | 
					import net.minecraft.util.math.vector.Vector3d;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
public final class CollisionUtils {
 | 
					public final class CollisionUtils {
 | 
				
			||||||
    public static boolean isInBounds(VoxelShape shape, BlockPos pos, Vec3d hit) {
 | 
					    public static boolean isInBounds(VoxelShape shape, BlockPos pos, Vector3d hit) {
 | 
				
			||||||
        AxisAlignedBB aabb = shape.getBoundingBox().offset(pos);
 | 
					        AxisAlignedBB aabb = shape.getBoundingBox().offset(pos);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        return hit.x >= aabb.minX
 | 
					        return hit.x >= aabb.minX
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -7,9 +7,9 @@ import net.minecraft.util.math.BlockPos;
 | 
				
			|||||||
public final class DirectionUtils {
 | 
					public final class DirectionUtils {
 | 
				
			||||||
    public static Direction getFacingFromEntity(BlockPos clickedBlock, LivingEntity entity) {
 | 
					    public static Direction getFacingFromEntity(BlockPos clickedBlock, LivingEntity entity) {
 | 
				
			||||||
        return Direction.getFacingFromVector(
 | 
					        return Direction.getFacingFromVector(
 | 
				
			||||||
            (float) (entity.getPosition().getX() - clickedBlock.getX()),
 | 
					            (float) (entity.getPosX() - clickedBlock.getX()),
 | 
				
			||||||
            (float) (entity.getPosition().getY() - clickedBlock.getY()),
 | 
					            (float) (entity.getPosY() - clickedBlock.getY()),
 | 
				
			||||||
            (float) (entity.getPosition().getZ() - clickedBlock.getZ())
 | 
					            (float) (entity.getPosZ() - clickedBlock.getZ())
 | 
				
			||||||
        );
 | 
					        );
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,6 +1,5 @@
 | 
				
			|||||||
package com.refinedmods.refinedstorage.util;
 | 
					package com.refinedmods.refinedstorage.util;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import com.google.common.collect.Lists;
 | 
					 | 
				
			||||||
import com.mojang.blaze3d.matrix.MatrixStack;
 | 
					import com.mojang.blaze3d.matrix.MatrixStack;
 | 
				
			||||||
import com.mojang.blaze3d.systems.RenderSystem;
 | 
					import com.mojang.blaze3d.systems.RenderSystem;
 | 
				
			||||||
import com.refinedmods.refinedstorage.api.util.IComparer;
 | 
					import com.refinedmods.refinedstorage.api.util.IComparer;
 | 
				
			||||||
@@ -10,13 +9,11 @@ import com.refinedmods.refinedstorage.screen.BaseScreen;
 | 
				
			|||||||
import net.minecraft.client.Minecraft;
 | 
					import net.minecraft.client.Minecraft;
 | 
				
			||||||
import net.minecraft.client.gui.FontRenderer;
 | 
					import net.minecraft.client.gui.FontRenderer;
 | 
				
			||||||
import net.minecraft.client.renderer.IRenderTypeBuffer;
 | 
					import net.minecraft.client.renderer.IRenderTypeBuffer;
 | 
				
			||||||
import net.minecraft.client.renderer.Matrix4f;
 | 
					 | 
				
			||||||
import net.minecraft.client.renderer.Tessellator;
 | 
					import net.minecraft.client.renderer.Tessellator;
 | 
				
			||||||
import net.minecraft.client.util.ITooltipFlag;
 | 
					import net.minecraft.client.util.ITooltipFlag;
 | 
				
			||||||
import net.minecraft.item.ItemStack;
 | 
					import net.minecraft.item.ItemStack;
 | 
				
			||||||
import net.minecraft.util.text.ITextComponent;
 | 
					import net.minecraft.util.math.vector.Matrix4f;
 | 
				
			||||||
import net.minecraft.util.text.StringTextComponent;
 | 
					import net.minecraft.util.text.*;
 | 
				
			||||||
import net.minecraft.util.text.TextFormatting;
 | 
					 | 
				
			||||||
import net.minecraftforge.client.event.RenderTooltipEvent;
 | 
					import net.minecraftforge.client.event.RenderTooltipEvent;
 | 
				
			||||||
import net.minecraftforge.common.MinecraftForge;
 | 
					import net.minecraftforge.common.MinecraftForge;
 | 
				
			||||||
import net.minecraftforge.fluids.FluidStack;
 | 
					import net.minecraftforge.fluids.FluidStack;
 | 
				
			||||||
@@ -49,7 +46,7 @@ public final class RenderUtils {
 | 
				
			|||||||
            if (!stacks.get(i).isEmpty() && !combinedIndices.contains(i)) {
 | 
					            if (!stacks.get(i).isEmpty() && !combinedIndices.contains(i)) {
 | 
				
			||||||
                ItemStack stack = stacks.get(i);
 | 
					                ItemStack stack = stacks.get(i);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                ITextComponent data = stack.getDisplayName();
 | 
					                IFormattableTextComponent data = stack.getDisplayName().copyRaw();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                int amount = stack.getCount();
 | 
					                int amount = stack.getCount();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -62,10 +59,10 @@ public final class RenderUtils {
 | 
				
			|||||||
                }
 | 
					                }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                if (displayAmount) {
 | 
					                if (displayAmount) {
 | 
				
			||||||
                    data = new StringTextComponent(amount + "x ").appendSibling(data);
 | 
					                    data = new StringTextComponent(amount + "x ").func_230529_a_(data);
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                tooltip.add(data.setStyle(Styles.GRAY));
 | 
					                tooltip.add(data.func_230530_a_(Styles.GRAY));
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
@@ -77,7 +74,7 @@ public final class RenderUtils {
 | 
				
			|||||||
            if (!stacks.get(i).isEmpty() && !combinedIndices.contains(i)) {
 | 
					            if (!stacks.get(i).isEmpty() && !combinedIndices.contains(i)) {
 | 
				
			||||||
                FluidStack stack = stacks.get(i);
 | 
					                FluidStack stack = stacks.get(i);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                ITextComponent data = stack.getDisplayName();
 | 
					                IFormattableTextComponent data = stack.getDisplayName().copyRaw();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                int amount = stack.getAmount();
 | 
					                int amount = stack.getAmount();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -90,16 +87,16 @@ public final class RenderUtils {
 | 
				
			|||||||
                }
 | 
					                }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                if (displayMb) {
 | 
					                if (displayMb) {
 | 
				
			||||||
                    data = new StringTextComponent(API.instance().getQuantityFormatter().formatInBucketForm(amount) + " ").appendSibling(data);
 | 
					                    data = new StringTextComponent(API.instance().getQuantityFormatter().formatInBucketForm(amount) + " ").func_230529_a_(data);
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                tooltip.add(data.setStyle(Styles.GRAY));
 | 
					                tooltip.add(data.func_230530_a_(Styles.GRAY));
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // @Volatile: Copied with some tweaks from GuiUtils#drawHoveringText(@Nonnull final ItemStack stack, List<String> textLines, int mouseX, int mouseY, int screenWidth, int screenHeight, int maxTextWidth, FontRenderer font)
 | 
					    // @Volatile: Copied with some tweaks from GuiUtils#drawHoveringText(@Nonnull final ItemStack stack, List<String> textLines, int mouseX, int mouseY, int screenWidth, int screenHeight, int maxTextWidth, FontRenderer font)
 | 
				
			||||||
    public static void drawTooltipWithSmallText(List<String> textLines, List<String> smallTextLines, boolean showSmallText, @Nonnull ItemStack stack, int mouseX, int mouseY, int screenWidth, int screenHeight, FontRenderer fontRenderer) {
 | 
					    public static void drawTooltipWithSmallText(MatrixStack matrixStack, List<? extends ITextProperties> textLines, List<String> smallTextLines, boolean showSmallText, @Nonnull ItemStack stack, int mouseX, int mouseY, int screenWidth, int screenHeight, FontRenderer fontRenderer) {
 | 
				
			||||||
        // RS begin - definitions
 | 
					        // RS begin - definitions
 | 
				
			||||||
        int maxTextWidth = -1;
 | 
					        int maxTextWidth = -1;
 | 
				
			||||||
        FontRenderer font = Minecraft.getInstance().fontRenderer;
 | 
					        FontRenderer font = Minecraft.getInstance().fontRenderer;
 | 
				
			||||||
@@ -107,7 +104,7 @@ public final class RenderUtils {
 | 
				
			|||||||
        // RS end
 | 
					        // RS end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if (!textLines.isEmpty()) {
 | 
					        if (!textLines.isEmpty()) {
 | 
				
			||||||
            RenderTooltipEvent.Pre event = new RenderTooltipEvent.Pre(stack, textLines, mouseX, mouseY, screenWidth, screenHeight, maxTextWidth, font);
 | 
					            RenderTooltipEvent.Pre event = new RenderTooltipEvent.Pre(stack, textLines, matrixStack, mouseX, mouseY, screenWidth, screenHeight, maxTextWidth, font);
 | 
				
			||||||
            if (MinecraftForge.EVENT_BUS.post(event))
 | 
					            if (MinecraftForge.EVENT_BUS.post(event))
 | 
				
			||||||
                return;
 | 
					                return;
 | 
				
			||||||
            mouseX = event.getX();
 | 
					            mouseX = event.getX();
 | 
				
			||||||
@@ -121,8 +118,8 @@ public final class RenderUtils {
 | 
				
			|||||||
            RenderSystem.disableDepthTest();
 | 
					            RenderSystem.disableDepthTest();
 | 
				
			||||||
            int tooltipTextWidth = 0;
 | 
					            int tooltipTextWidth = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            for (String textLine : textLines) {
 | 
					            for (ITextProperties  textLine : textLines) {
 | 
				
			||||||
                int textLineWidth = font.getStringWidth(textLine);
 | 
					                int textLineWidth = font.getStringWidth(textLine.getString());
 | 
				
			||||||
                if (textLineWidth > tooltipTextWidth)
 | 
					                if (textLineWidth > tooltipTextWidth)
 | 
				
			||||||
                    tooltipTextWidth = textLineWidth;
 | 
					                    tooltipTextWidth = textLineWidth;
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
@@ -162,15 +159,15 @@ public final class RenderUtils {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
            if (needsWrap) {
 | 
					            if (needsWrap) {
 | 
				
			||||||
                int wrappedTooltipWidth = 0;
 | 
					                int wrappedTooltipWidth = 0;
 | 
				
			||||||
                List<String> wrappedTextLines = new ArrayList<>();
 | 
					                List<ITextProperties> wrappedTextLines = new ArrayList<>();
 | 
				
			||||||
                for (int i = 0; i < textLines.size(); i++) {
 | 
					                for (int i = 0; i < textLines.size(); i++) {
 | 
				
			||||||
                    String textLine = textLines.get(i);
 | 
					                    ITextProperties  textLine = textLines.get(i);
 | 
				
			||||||
                    List<String> wrappedLine = font.listFormattedStringToWidth(textLine, tooltipTextWidth);
 | 
					                    List<ITextProperties> wrappedLine = font.func_238425_b_(textLine, tooltipTextWidth);
 | 
				
			||||||
                    if (i == 0)
 | 
					                    if (i == 0)
 | 
				
			||||||
                        titleLinesCount = wrappedLine.size();
 | 
					                        titleLinesCount = wrappedLine.size();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                    for (String line : wrappedLine) {
 | 
					                    for (ITextProperties line : wrappedLine) {
 | 
				
			||||||
                        int lineWidth = font.getStringWidth(line);
 | 
					                        int lineWidth = font.getStringWidth(line.getString());
 | 
				
			||||||
                        if (lineWidth > wrappedTooltipWidth)
 | 
					                        if (lineWidth > wrappedTooltipWidth)
 | 
				
			||||||
                            wrappedTooltipWidth = lineWidth;
 | 
					                            wrappedTooltipWidth = lineWidth;
 | 
				
			||||||
                        wrappedTextLines.add(line);
 | 
					                        wrappedTextLines.add(line);
 | 
				
			||||||
@@ -209,23 +206,24 @@ public final class RenderUtils {
 | 
				
			|||||||
            int backgroundColor = 0xF0100010;
 | 
					            int backgroundColor = 0xF0100010;
 | 
				
			||||||
            int borderColorStart = 0x505000FF;
 | 
					            int borderColorStart = 0x505000FF;
 | 
				
			||||||
            int borderColorEnd = (borderColorStart & 0xFEFEFE) >> 1 | borderColorStart & 0xFF000000;
 | 
					            int borderColorEnd = (borderColorStart & 0xFEFEFE) >> 1 | borderColorStart & 0xFF000000;
 | 
				
			||||||
            RenderTooltipEvent.Color colorEvent = new RenderTooltipEvent.Color(stack, textLines, tooltipX, tooltipY, font, backgroundColor, borderColorStart, borderColorEnd);
 | 
					            RenderTooltipEvent.Color colorEvent = new RenderTooltipEvent.Color(stack, textLines, matrixStack, tooltipX, tooltipY, font, backgroundColor, borderColorStart, borderColorEnd);
 | 
				
			||||||
            MinecraftForge.EVENT_BUS.post(colorEvent);
 | 
					            MinecraftForge.EVENT_BUS.post(colorEvent);
 | 
				
			||||||
            backgroundColor = colorEvent.getBackground();
 | 
					            backgroundColor = colorEvent.getBackground();
 | 
				
			||||||
            borderColorStart = colorEvent.getBorderStart();
 | 
					            borderColorStart = colorEvent.getBorderStart();
 | 
				
			||||||
            borderColorEnd = colorEvent.getBorderEnd();
 | 
					            borderColorEnd = colorEvent.getBorderEnd();
 | 
				
			||||||
 | 
					            Matrix4f matrix = matrixStack.getLast().getMatrix();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            GuiUtils.drawGradientRect(zLevel, tooltipX - 3, tooltipY - 4, tooltipX + tooltipTextWidth + 3, tooltipY - 3, backgroundColor, backgroundColor);
 | 
					            GuiUtils.drawGradientRect(matrix, zLevel, tooltipX - 3, tooltipY - 4, tooltipX + tooltipTextWidth + 3, tooltipY - 3, backgroundColor, backgroundColor);
 | 
				
			||||||
            GuiUtils.drawGradientRect(zLevel, tooltipX - 3, tooltipY + tooltipHeight + 3, tooltipX + tooltipTextWidth + 3, tooltipY + tooltipHeight + 4, backgroundColor, backgroundColor);
 | 
					            GuiUtils.drawGradientRect(matrix, zLevel, tooltipX - 3, tooltipY + tooltipHeight + 3, tooltipX + tooltipTextWidth + 3, tooltipY + tooltipHeight + 4, backgroundColor, backgroundColor);
 | 
				
			||||||
            GuiUtils.drawGradientRect(zLevel, tooltipX - 3, tooltipY - 3, tooltipX + tooltipTextWidth + 3, tooltipY + tooltipHeight + 3, backgroundColor, backgroundColor);
 | 
					            GuiUtils.drawGradientRect(matrix, zLevel, tooltipX - 3, tooltipY - 3, tooltipX + tooltipTextWidth + 3, tooltipY + tooltipHeight + 3, backgroundColor, backgroundColor);
 | 
				
			||||||
            GuiUtils.drawGradientRect(zLevel, tooltipX - 4, tooltipY - 3, tooltipX - 3, tooltipY + tooltipHeight + 3, backgroundColor, backgroundColor);
 | 
					            GuiUtils.drawGradientRect(matrix, zLevel, tooltipX - 4, tooltipY - 3, tooltipX - 3, tooltipY + tooltipHeight + 3, backgroundColor, backgroundColor);
 | 
				
			||||||
            GuiUtils.drawGradientRect(zLevel, tooltipX + tooltipTextWidth + 3, tooltipY - 3, tooltipX + tooltipTextWidth + 4, tooltipY + tooltipHeight + 3, backgroundColor, backgroundColor);
 | 
					            GuiUtils.drawGradientRect(matrix, zLevel, tooltipX + tooltipTextWidth + 3, tooltipY - 3, tooltipX + tooltipTextWidth + 4, tooltipY + tooltipHeight + 3, backgroundColor, backgroundColor);
 | 
				
			||||||
            GuiUtils.drawGradientRect(zLevel, tooltipX - 3, tooltipY - 3 + 1, tooltipX - 3 + 1, tooltipY + tooltipHeight + 3 - 1, borderColorStart, borderColorEnd);
 | 
					            GuiUtils.drawGradientRect(matrix, zLevel, tooltipX - 3, tooltipY - 3 + 1, tooltipX - 3 + 1, tooltipY + tooltipHeight + 3 - 1, borderColorStart, borderColorEnd);
 | 
				
			||||||
            GuiUtils.drawGradientRect(zLevel, tooltipX + tooltipTextWidth + 2, tooltipY - 3 + 1, tooltipX + tooltipTextWidth + 3, tooltipY + tooltipHeight + 3 - 1, borderColorStart, borderColorEnd);
 | 
					            GuiUtils.drawGradientRect(matrix, zLevel, tooltipX + tooltipTextWidth + 2, tooltipY - 3 + 1, tooltipX + tooltipTextWidth + 3, tooltipY + tooltipHeight + 3 - 1, borderColorStart, borderColorEnd);
 | 
				
			||||||
            GuiUtils.drawGradientRect(zLevel, tooltipX - 3, tooltipY - 3, tooltipX + tooltipTextWidth + 3, tooltipY - 3 + 1, borderColorStart, borderColorStart);
 | 
					            GuiUtils.drawGradientRect(matrix, zLevel, tooltipX - 3, tooltipY - 3, tooltipX + tooltipTextWidth + 3, tooltipY - 3 + 1, borderColorStart, borderColorStart);
 | 
				
			||||||
            GuiUtils.drawGradientRect(zLevel, tooltipX - 3, tooltipY + tooltipHeight + 2, tooltipX + tooltipTextWidth + 3, tooltipY + tooltipHeight + 3, borderColorEnd, borderColorEnd);
 | 
					            GuiUtils.drawGradientRect(matrix, zLevel, tooltipX - 3, tooltipY + tooltipHeight + 2, tooltipX + tooltipTextWidth + 3, tooltipY + tooltipHeight + 3, borderColorEnd, borderColorEnd);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            MinecraftForge.EVENT_BUS.post(new RenderTooltipEvent.PostBackground(stack, textLines, tooltipX, tooltipY, font, tooltipTextWidth, tooltipHeight));
 | 
					            MinecraftForge.EVENT_BUS.post(new RenderTooltipEvent.PostBackground(stack, textLines, matrixStack, tooltipX, tooltipY, font, tooltipTextWidth, tooltipHeight));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            IRenderTypeBuffer.Impl renderType = IRenderTypeBuffer.getImpl(Tessellator.getInstance().getBuffer());
 | 
					            IRenderTypeBuffer.Impl renderType = IRenderTypeBuffer.getImpl(Tessellator.getInstance().getBuffer());
 | 
				
			||||||
            MatrixStack textStack = new MatrixStack();
 | 
					            MatrixStack textStack = new MatrixStack();
 | 
				
			||||||
@@ -235,9 +233,9 @@ public final class RenderUtils {
 | 
				
			|||||||
            int tooltipTop = tooltipY;
 | 
					            int tooltipTop = tooltipY;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            for (int lineNumber = 0; lineNumber < textLines.size(); ++lineNumber) {
 | 
					            for (int lineNumber = 0; lineNumber < textLines.size(); ++lineNumber) {
 | 
				
			||||||
                String line = textLines.get(lineNumber);
 | 
					                ITextProperties line = textLines.get(lineNumber);
 | 
				
			||||||
                if (line != null)
 | 
					                if (line != null)
 | 
				
			||||||
                    font.renderString(line, (float) tooltipX, (float) tooltipY, -1, true, textLocation, renderType, false, 0, 15728880);
 | 
					                    font.renderString(line.getString(), (float) tooltipX, (float) tooltipY, -1, true, textLocation, renderType, false, 0, 15728880);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                if (lineNumber + 1 == titleLinesCount)
 | 
					                if (lineNumber + 1 == titleLinesCount)
 | 
				
			||||||
                    tooltipY += 2;
 | 
					                    tooltipY += 2;
 | 
				
			||||||
@@ -247,7 +245,7 @@ public final class RenderUtils {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
            renderType.finish();
 | 
					            renderType.finish();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            MinecraftForge.EVENT_BUS.post(new RenderTooltipEvent.PostText(stack, textLines, tooltipX, tooltipTop, font, tooltipTextWidth, tooltipHeight));
 | 
					            MinecraftForge.EVENT_BUS.post(new RenderTooltipEvent.PostText(stack, textLines, matrixStack, tooltipX, tooltipTop, font, tooltipTextWidth, tooltipHeight));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            // RS BEGIN
 | 
					            // RS BEGIN
 | 
				
			||||||
            if (showSmallText) {
 | 
					            if (showSmallText) {
 | 
				
			||||||
@@ -290,15 +288,9 @@ public final class RenderUtils {
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // @Volatile: From Screen#getTooltipFromItem
 | 
					    // @Volatile: From Screen#getTooltipFromItem
 | 
				
			||||||
    public static List<String> getTooltipFromItem(ItemStack stack) {
 | 
					    public static List<ITextComponent> getTooltipFromItem(ItemStack stack) {
 | 
				
			||||||
        List<ITextComponent> tooltip = stack.getTooltip(Minecraft.getInstance().player, Minecraft.getInstance().gameSettings.advancedItemTooltips ? ITooltipFlag.TooltipFlags.ADVANCED : ITooltipFlag.TooltipFlags.NORMAL);
 | 
					        Minecraft minecraft = Minecraft.getInstance();
 | 
				
			||||||
        List<String> tooltipStrings = Lists.newArrayList();
 | 
					        return stack.getTooltip(minecraft.player, minecraft.gameSettings.advancedItemTooltips ? ITooltipFlag.TooltipFlags.ADVANCED : ITooltipFlag.TooltipFlags.NORMAL);
 | 
				
			||||||
 | 
					 | 
				
			||||||
        for (ITextComponent itextcomponent : tooltip) {
 | 
					 | 
				
			||||||
            tooltipStrings.add(itextcomponent.getFormattedText());
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        return tooltipStrings;
 | 
					 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public static boolean inBounds(int x, int y, int w, int h, double ox, double oy) {
 | 
					    public static boolean inBounds(int x, int y, int w, int h, double ox, double oy) {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -12,10 +12,11 @@ import net.minecraft.util.Direction;
 | 
				
			|||||||
import net.minecraft.util.math.BlockPos;
 | 
					import net.minecraft.util.math.BlockPos;
 | 
				
			||||||
import net.minecraft.util.math.RayTraceContext;
 | 
					import net.minecraft.util.math.RayTraceContext;
 | 
				
			||||||
import net.minecraft.util.math.RayTraceResult;
 | 
					import net.minecraft.util.math.RayTraceResult;
 | 
				
			||||||
import net.minecraft.util.math.Vec3d;
 | 
					import net.minecraft.util.math.vector.Vector3d;
 | 
				
			||||||
import net.minecraft.util.text.TranslationTextComponent;
 | 
					import net.minecraft.util.text.TranslationTextComponent;
 | 
				
			||||||
import net.minecraft.world.World;
 | 
					import net.minecraft.world.World;
 | 
				
			||||||
import net.minecraft.world.server.ServerWorld;
 | 
					import net.minecraft.world.server.ServerWorld;
 | 
				
			||||||
 | 
					import net.minecraftforge.common.ForgeMod;
 | 
				
			||||||
import net.minecraftforge.common.util.FakePlayer;
 | 
					import net.minecraftforge.common.util.FakePlayer;
 | 
				
			||||||
import net.minecraftforge.common.util.FakePlayerFactory;
 | 
					import net.minecraftforge.common.util.FakePlayerFactory;
 | 
				
			||||||
import net.minecraftforge.fluids.capability.CapabilityFluidHandler;
 | 
					import net.minecraftforge.fluids.capability.CapabilityFluidHandler;
 | 
				
			||||||
@@ -77,15 +78,15 @@ public final class WorldUtils {
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public static void sendNoPermissionMessage(PlayerEntity player) {
 | 
					    public static void sendNoPermissionMessage(PlayerEntity player) {
 | 
				
			||||||
        player.sendMessage(new TranslationTextComponent("misc.refinedstorage.security.no_permission").setStyle(Styles.RED));
 | 
					        player.sendMessage(new TranslationTextComponent("misc.refinedstorage.security.no_permission").func_230530_a_(Styles.RED), player.getUniqueID());
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public static RayTraceResult rayTracePlayer(World world, PlayerEntity player) {
 | 
					    public static RayTraceResult rayTracePlayer(World world, PlayerEntity player) {
 | 
				
			||||||
        double reachDistance = player.getAttribute(PlayerEntity.REACH_DISTANCE).getValue();
 | 
					        double reachDistance = player.getAttribute(ForgeMod.REACH_DISTANCE.get()).getValue();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        Vec3d base = player.getEyePosition(1.0F);
 | 
					        Vector3d base = player.getEyePosition(1.0F);
 | 
				
			||||||
        Vec3d look = player.getLookVec();
 | 
					        Vector3d look = player.getLookVec();
 | 
				
			||||||
        Vec3d target = base.add(look.x * reachDistance, look.y * reachDistance, look.z * reachDistance);
 | 
					        Vector3d target = base.add(look.x * reachDistance, look.y * reachDistance, look.z * reachDistance);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        return world.rayTraceBlocks(new RayTraceContext(base, target, RayTraceContext.BlockMode.OUTLINE, RayTraceContext.FluidMode.NONE, player));
 | 
					        return world.rayTraceBlocks(new RayTraceContext(base, target, RayTraceContext.BlockMode.OUTLINE, RayTraceContext.FluidMode.NONE, player));
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user