Add basic grid opening code.

This commit is contained in:
raoulvdberge
2019-10-07 18:30:24 +02:00
parent 87a891eedc
commit b92bbfdbac
56 changed files with 302 additions and 182 deletions

View File

@@ -6,6 +6,7 @@ import com.raoulvdberge.refinedstorage.render.model.baked.FullbrightBakedModel;
import com.raoulvdberge.refinedstorage.screen.ControllerScreen;
import com.raoulvdberge.refinedstorage.screen.DiskDriveScreen;
import com.raoulvdberge.refinedstorage.screen.FilterScreen;
import com.raoulvdberge.refinedstorage.screen.factory.GridScreenFactory;
import net.minecraft.client.gui.ScreenManager;
import net.minecraft.util.ResourceLocation;
import net.minecraftforge.client.event.ModelBakeEvent;
@@ -57,6 +58,7 @@ public class ClientSetup {
ScreenManager.registerFactory(RSContainers.FILTER, FilterScreen::new);
ScreenManager.registerFactory(RSContainers.CONTROLLER, ControllerScreen::new);
ScreenManager.registerFactory(RSContainers.DISK_DRIVE, DiskDriveScreen::new);
ScreenManager.registerFactory(RSContainers.GRID, new GridScreenFactory());
}
@SubscribeEvent

View File

@@ -3,6 +3,7 @@ package com.raoulvdberge.refinedstorage;
import com.raoulvdberge.refinedstorage.api.network.grid.GridType;
import com.raoulvdberge.refinedstorage.apiimpl.API;
import com.raoulvdberge.refinedstorage.apiimpl.network.NetworkNodeListener;
import com.raoulvdberge.refinedstorage.apiimpl.network.grid.GridFactoryGridBlock;
import com.raoulvdberge.refinedstorage.apiimpl.network.node.CableNetworkNode;
import com.raoulvdberge.refinedstorage.apiimpl.network.node.GridNetworkNode;
import com.raoulvdberge.refinedstorage.apiimpl.network.node.diskdrive.DiskDriveNetworkNode;
@@ -16,6 +17,7 @@ import com.raoulvdberge.refinedstorage.config.ServerConfig;
import com.raoulvdberge.refinedstorage.container.ControllerContainer;
import com.raoulvdberge.refinedstorage.container.DiskDriveContainer;
import com.raoulvdberge.refinedstorage.container.FilterContainer;
import com.raoulvdberge.refinedstorage.container.factory.GridContainerFactory;
import com.raoulvdberge.refinedstorage.container.factory.PositionalTileContainerFactory;
import com.raoulvdberge.refinedstorage.item.*;
import com.raoulvdberge.refinedstorage.item.blockitem.ControllerBlockItem;
@@ -90,8 +92,9 @@ public final class RS {
});
API.instance().getNetworkNodeRegistry().add(CableNetworkNode.ID, (tag, world, pos) -> new CableNetworkNode(world, pos));
API.instance().getNetworkNodeRegistry().add(GridNetworkNode.ID, (tag, world, pos) -> new GridNetworkNode(world, pos, GridType.NORMAL));
API.instance().getGridManager().add(GridFactoryGridBlock.ID, new GridFactoryGridBlock());
}
@SubscribeEvent
@@ -143,6 +146,7 @@ public final class RS {
e.getRegistry().register(IForgeContainerType.create((windowId, inv, data) -> new FilterContainer(inv.player, inv.getCurrentItem(), windowId)).setRegistryName(RS.ID, "filter"));
e.getRegistry().register(IForgeContainerType.create(((windowId, inv, data) -> new ControllerContainer(null, inv.player, windowId))).setRegistryName(RS.ID, "controller"));
e.getRegistry().register(IForgeContainerType.create(new PositionalTileContainerFactory<DiskDriveContainer, DiskDriveTile>((windowId, inv, tile) -> new DiskDriveContainer(tile, inv.player, windowId))).setRegistryName(RS.ID, "disk_drive"));
e.getRegistry().register(IForgeContainerType.create(new GridContainerFactory()).setRegistryName(RS.ID, "grid"));
}
@SubscribeEvent

View File

@@ -11,6 +11,10 @@ public final class RSContainers {
@ObjectHolder(RS.ID + ":controller")
public static final ContainerType<ControllerContainer> CONTROLLER = null;
@ObjectHolder(RS.ID + ":grid")
public static final ContainerType<GridContainer> GRID = null;
//@ObjectHolder(RS.ID + ":crafter")
public static final ContainerType<CrafterContainer> CRAFTER = null;
//@ObjectHolder(RS.ID + ":crafter_manager")
@@ -36,8 +40,6 @@ public final class RSContainers {
public static final ContainerType<FluidInterfaceContainer> FLUID_INTERFACE = null;
//@ObjectHolder(RS.ID + ":fluid_storage")
public static final ContainerType<FluidInterfaceContainer> FLUID_STORAGE = null;
//@ObjectHolder(RS.ID + ":grid")
public static final ContainerType<GridContainer> GRID = null;
//@ObjectHolder(RS.ID + ":importer")
public static final ContainerType<ImporterContainer> IMPORTER = null;
//@ObjectHolder(RS.ID + ":interface")

View File

@@ -10,6 +10,7 @@ import net.minecraft.entity.player.ServerPlayerEntity;
import net.minecraft.inventory.CraftResultInventory;
import net.minecraft.inventory.CraftingInventory;
import net.minecraft.item.ItemStack;
import net.minecraft.util.text.ITextComponent;
import net.minecraftforge.items.IItemHandlerModifiable;
import javax.annotation.Nullable;
@@ -86,9 +87,9 @@ public interface IGrid {
}
/**
* @return an unlocalized gui title
* @return the title
*/
String getGuiTitle();
ITextComponent getTitle();
/**
* @return the view type

View File

@@ -4,6 +4,7 @@ import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.entity.player.ServerPlayerEntity;
import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.ResourceLocation;
import net.minecraft.util.math.BlockPos;
import org.apache.commons.lang3.tuple.Pair;
@@ -14,45 +15,45 @@ import javax.annotation.Nullable;
*/
public interface IGridManager {
/**
* @param id the id of this factory
* @param factory the factory
* @return the id of this factory
*/
int add(IGridFactory factory);
void add(ResourceLocation id, IGridFactory factory);
/**
* @param id the id of the factory
* @return the factory, or null if no factory was found
*/
@Nullable
IGridFactory get(int id);
IGridFactory get(ResourceLocation id);
/**
* Opens a grid. Can only be called on the server.
*
* @param id the grid factory id as returned from {@link #add(IGridFactory)}
* @param id the grid factory id
* @param player the player
* @param pos the block position
*/
void openGrid(int id, ServerPlayerEntity player, BlockPos pos);
void openGrid(ResourceLocation id, ServerPlayerEntity player, BlockPos pos);
/**
* Opens a grid. Can only be called on the server.
*
* @param id the grid factory id as returned from {@link #add(IGridFactory)}
* @param id the grid factory id
* @param player the player
* @param stack the stack
*/
void openGrid(int id, ServerPlayerEntity player, ItemStack stack);
void openGrid(ResourceLocation id, ServerPlayerEntity player, ItemStack stack);
/**
* Creates a grid.
*
* @param id the grid factory id as returned from {@link #add(IGridFactory)}
* @param id the grid factory id
* @param player the player
* @param stack the stack, if there is one
* @param pos the block position, if there is one
* @return a grid, or null if an error has occurred
*/
@Nullable
Pair<IGrid, TileEntity> createGrid(int id, PlayerEntity player, @Nullable ItemStack stack, @Nullable BlockPos pos);
Pair<IGrid, TileEntity> createGrid(ResourceLocation id, PlayerEntity player, @Nullable ItemStack stack, @Nullable BlockPos pos);
}

View File

@@ -1,5 +1,6 @@
package com.raoulvdberge.refinedstorage.apiimpl.network.grid;
import com.raoulvdberge.refinedstorage.RS;
import com.raoulvdberge.refinedstorage.api.network.grid.GridFactoryType;
import com.raoulvdberge.refinedstorage.api.network.grid.IGrid;
import com.raoulvdberge.refinedstorage.api.network.grid.IGridFactory;
@@ -7,12 +8,15 @@ import com.raoulvdberge.refinedstorage.tile.grid.GridTile;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.ResourceLocation;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.World;
import javax.annotation.Nullable;
public class GridFactoryGridBlock implements IGridFactory {
public static final ResourceLocation ID = new ResourceLocation(RS.ID, "grid");
@Override
@Nullable
public IGrid createFromStack(PlayerEntity player, ItemStack stack) {

View File

@@ -3,81 +3,68 @@ package com.raoulvdberge.refinedstorage.apiimpl.network.grid;
import com.raoulvdberge.refinedstorage.api.network.grid.IGrid;
import com.raoulvdberge.refinedstorage.api.network.grid.IGridFactory;
import com.raoulvdberge.refinedstorage.api.network.grid.IGridManager;
import com.raoulvdberge.refinedstorage.container.factory.GridContainerProvider;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.entity.player.ServerPlayerEntity;
import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.ResourceLocation;
import net.minecraft.util.math.BlockPos;
import net.minecraftforge.fml.network.NetworkHooks;
import org.apache.commons.lang3.tuple.Pair;
import javax.annotation.Nullable;
import java.util.ArrayList;
import java.util.List;
import java.util.HashMap;
import java.util.Map;
public class GridManager implements IGridManager {
private List<IGridFactory> factories = new ArrayList<>();
private final Map<ResourceLocation, IGridFactory> factories = new HashMap<>();
@Override
public int add(IGridFactory factory) {
factories.add(factory);
return factories.size() - 1;
public void add(ResourceLocation id, IGridFactory factory) {
factories.put(id, factory);
}
@Override
@Nullable
public IGridFactory get(int id) {
if (id < 0 || id >= factories.size()) {
return null;
}
public IGridFactory get(ResourceLocation id) {
return factories.get(id);
}
@Override
public void openGrid(int id, ServerPlayerEntity player, BlockPos pos) {
public void openGrid(ResourceLocation id, ServerPlayerEntity player, BlockPos pos) {
openGrid(id, player, null, pos);
}
@Override
public void openGrid(int id, ServerPlayerEntity player, ItemStack stack) {
public void openGrid(ResourceLocation id, ServerPlayerEntity player, ItemStack stack) {
openGrid(id, player, stack, null);
}
private void openGrid(int id, ServerPlayerEntity player, @Nullable ItemStack stack, @Nullable BlockPos pos) {
private void openGrid(ResourceLocation id, ServerPlayerEntity player, @Nullable ItemStack stack, @Nullable BlockPos pos) {
Pair<IGrid, TileEntity> grid = createGrid(id, player, stack, pos);
if (grid == null) {
return;
}
// @Volatile: FMLNetworkHandler#openGui
player.getNextWindowId();
player.closeContainer();
NetworkHooks.openGui(player, new GridContainerProvider(grid.getLeft(), grid.getRight()), buf -> {
buf.writeResourceLocation(id);
// The order of sending this packet and setting openContainer matters!
buf.writeBoolean(pos != null);
if (pos != null) {
buf.writeBlockPos(pos);
}
// We first need to send the grid open packet with the window id.
// Then we set the openContainer so the slots are getting sent (ServerPlayerEntity::update -> Container::detectAndSendChanges).
// If the client window id mismatches with the server window id this causes problems with slots not being set.
// If we would set the openContainer first, the slot packets would be sent first but wouldn't be able to be set
// on the client since the window id would mismatch.
// So we first send the window id in MessageGridOpen.
// The order is preserved by TCP.
/* TODO ! RS.INSTANCE.network.sendTo(new MessageGridOpen(player.currentWindowId, pos, id, stack), player);
player.openContainer = new ContainerGrid(grid.getLeft(), new ResizableDisplayDummy(), grid.getRight() instanceof TileBase ? (TileBase) grid.getRight() : null, player);
player.openContainer.windowId = player.currentWindowId;
player.openContainer.addListener(player);
MinecraftForge.EVENT_BUS.post(new PlayerContainerEvent.Open(player, player.openContainer));*/
buf.writeBoolean(stack != null);
if (stack != null) {
buf.writeItemStack(stack);
}
});
}
@Override
@Nullable
public Pair<IGrid, TileEntity> createGrid(int id, PlayerEntity player, @Nullable ItemStack stack, @Nullable BlockPos pos) {
public Pair<IGrid, TileEntity> createGrid(ResourceLocation id, PlayerEntity player, @Nullable ItemStack stack, @Nullable BlockPos pos) {
IGridFactory factory = get(id);
if (factory == null) {

View File

@@ -5,11 +5,8 @@ import com.raoulvdberge.refinedstorage.api.network.INetwork;
import com.raoulvdberge.refinedstorage.api.network.item.INetworkItem;
import com.raoulvdberge.refinedstorage.api.network.item.INetworkItemHandler;
import com.raoulvdberge.refinedstorage.api.network.security.Permission;
import com.raoulvdberge.refinedstorage.apiimpl.API;
import com.raoulvdberge.refinedstorage.tile.grid.WirelessFluidGrid;
import com.raoulvdberge.refinedstorage.util.WorldUtils;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.entity.player.ServerPlayerEntity;
import net.minecraft.item.ItemStack;
import net.minecraftforge.energy.CapabilityEnergy;
import net.minecraftforge.energy.IEnergyStorage;
@@ -44,7 +41,7 @@ public class NetworkItemWirelessFluidGrid implements INetworkItem {
return false;
}
API.instance().getGridManager().openGrid(WirelessFluidGrid.ID, (ServerPlayerEntity) player, stack);
// TODO API.instance().getGridManager().openGrid(WirelessFluidGrid.ID, (ServerPlayerEntity) player, stack);
drainEnergy(RS.INSTANCE.config.wirelessFluidGridOpenUsage);

View File

@@ -5,11 +5,8 @@ import com.raoulvdberge.refinedstorage.api.network.INetwork;
import com.raoulvdberge.refinedstorage.api.network.item.INetworkItem;
import com.raoulvdberge.refinedstorage.api.network.item.INetworkItemHandler;
import com.raoulvdberge.refinedstorage.api.network.security.Permission;
import com.raoulvdberge.refinedstorage.apiimpl.API;
import com.raoulvdberge.refinedstorage.tile.grid.WirelessGrid;
import com.raoulvdberge.refinedstorage.util.WorldUtils;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.entity.player.ServerPlayerEntity;
import net.minecraft.item.ItemStack;
import net.minecraftforge.energy.CapabilityEnergy;
import net.minecraftforge.energy.IEnergyStorage;
@@ -44,7 +41,7 @@ public class NetworkItemWirelessGrid implements INetworkItem {
return false;
}
API.instance().getGridManager().openGrid(WirelessGrid.ID, (ServerPlayerEntity) player, stack);
// TODO API.instance().getGridManager().openGrid(WirelessGrid.ID, (ServerPlayerEntity) player, stack);
drainEnergy(RS.INSTANCE.config.wirelessGridOpenUsage);

View File

@@ -39,6 +39,8 @@ import net.minecraft.item.crafting.IRecipeType;
import net.minecraft.nbt.CompoundNBT;
import net.minecraft.util.NonNullList;
import net.minecraft.util.math.BlockPos;
import net.minecraft.util.text.ITextComponent;
import net.minecraft.util.text.TranslationTextComponent;
import net.minecraft.world.World;
import net.minecraftforge.fluids.FluidAttributes;
import net.minecraftforge.fluids.FluidStack;
@@ -57,7 +59,6 @@ import java.util.Set;
public class GridNetworkNode extends NetworkNode implements IGridNetworkAware, IType {
public static final String ID = "grid";
public static int FACTORY_ID = 0;
public static final String NBT_VIEW_TYPE = "ViewType";
public static final String NBT_SORTING_DIRECTION = "SortingDirection";
@@ -266,18 +267,18 @@ public class GridNetworkNode extends NetworkNode implements IGridNetworkAware, I
}
@Override
public String getGuiTitle() {
public ITextComponent getTitle() {
GridType type = getGridType();
switch (type) {
case CRAFTING:
return "gui.refinedstorage:crafting_grid";
return new TranslationTextComponent("gui.refinedstorage.crafting_grid");
case PATTERN:
return "gui.refinedstorage:pattern_grid";
return new TranslationTextComponent("gui.refinedstorage.pattern_grid");
case FLUID:
return "gui.refinedstorage:fluid_grid";
return new TranslationTextComponent("gui.refinedstorage.fluid_grid");
default:
return "gui.refinedstorage:grid";
return new TranslationTextComponent("gui.refinedstorage.grid");
}
}

View File

@@ -2,13 +2,22 @@ package com.raoulvdberge.refinedstorage.block;
import com.raoulvdberge.refinedstorage.RS;
import com.raoulvdberge.refinedstorage.api.network.grid.GridType;
import com.raoulvdberge.refinedstorage.apiimpl.API;
import com.raoulvdberge.refinedstorage.apiimpl.network.grid.GridFactoryGridBlock;
import com.raoulvdberge.refinedstorage.block.info.BlockDirection;
import com.raoulvdberge.refinedstorage.tile.grid.GridTile;
import com.raoulvdberge.refinedstorage.util.BlockUtils;
import com.raoulvdberge.refinedstorage.util.NetworkUtils;
import net.minecraft.block.BlockState;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.entity.player.ServerPlayerEntity;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.BlockRenderLayer;
import net.minecraft.util.Hand;
import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.BlockRayTraceResult;
import net.minecraft.world.IBlockReader;
import net.minecraft.world.World;
import javax.annotation.Nullable;
@@ -49,6 +58,16 @@ public class GridBlock extends NodeBlock {
return new GridTile(type);
}
@Override
@SuppressWarnings("deprecation")
public boolean onBlockActivated(BlockState state, World worldIn, BlockPos pos, PlayerEntity player, Hand handIn, BlockRayTraceResult hit) {
if (!worldIn.isRemote) {
return NetworkUtils.attemptModify(worldIn, pos, hit.getFace(), player, () -> API.instance().getGridManager().openGrid(GridFactoryGridBlock.ID, (ServerPlayerEntity) player, pos));
}
return true;
}
/*
@Override
@OnlyIn(Dist.CLIENT)
@@ -64,10 +83,5 @@ public class GridBlock extends NodeBlock {
RS.ID + ":blocks/grid/cutouts/pattern_front_connected",
RS.ID + ":blocks/grid/cutouts/fluid_front_connected"
));
}
@Override
public boolean onBlockActivated(World world, BlockPos pos, BlockState state, PlayerEntity player, EnumHand hand, Direction side, float hitX, float hitY, float hitZ) {
return openNetworkGui(player, world, pos, side, () -> API.instance().getGridManager().openGrid(NetworkNodeGrid.FACTORY_ID, (ServerPlayerEntity) player, pos));
}*/
}

View File

@@ -6,7 +6,7 @@ import com.raoulvdberge.refinedstorage.apiimpl.network.node.NetworkNodeCrafter;
import com.raoulvdberge.refinedstorage.apiimpl.network.node.NetworkNodeCrafterManager;
import com.raoulvdberge.refinedstorage.container.slot.CrafterManagerSlot;
import com.raoulvdberge.refinedstorage.inventory.item.ItemHandlerBase;
import com.raoulvdberge.refinedstorage.screen.IResizableDisplay;
import com.raoulvdberge.refinedstorage.screen.IScreenInfoProvider;
import com.raoulvdberge.refinedstorage.screen.grid.filtering.GridFilterParser;
import com.raoulvdberge.refinedstorage.screen.grid.stack.GridStackItem;
import com.raoulvdberge.refinedstorage.screen.grid.stack.IGridStack;
@@ -62,7 +62,7 @@ public class CrafterManagerContainer extends BaseContainer {
}
}
private IResizableDisplay display;
private IScreenInfoProvider display;
private NetworkNodeCrafterManager crafterManager;
private Map<String, Integer> containerData;
private Map<String, IItemHandlerModifiable> dummyInventories = new HashMap<>();
@@ -83,7 +83,7 @@ public class CrafterManagerContainer extends BaseContainer {
return new ArrayList<>();
}
public CrafterManagerContainer(TileCrafterManager crafterManager, PlayerEntity player, IResizableDisplay display, int windowId) {
public CrafterManagerContainer(TileCrafterManager crafterManager, PlayerEntity player, IScreenInfoProvider display, int windowId) {
super(RSContainers.CRAFTER_MANAGER, crafterManager, player, windowId);
this.display = display;

View File

@@ -16,7 +16,7 @@ import com.raoulvdberge.refinedstorage.container.slot.grid.ResultCraftingGridSlo
import com.raoulvdberge.refinedstorage.container.slot.legacy.BaseLegacySlot;
import com.raoulvdberge.refinedstorage.container.slot.legacy.DisabledLegacySlot;
import com.raoulvdberge.refinedstorage.container.slot.legacy.FilterLegacySlot;
import com.raoulvdberge.refinedstorage.screen.IResizableDisplay;
import com.raoulvdberge.refinedstorage.screen.IScreenInfoProvider;
import com.raoulvdberge.refinedstorage.tile.BaseTile;
import com.raoulvdberge.refinedstorage.tile.config.IType;
import com.raoulvdberge.refinedstorage.tile.grid.WirelessGrid;
@@ -37,22 +37,23 @@ public class GridContainer extends BaseContainer implements IGridCraftingListene
private IGrid grid;
private IStorageCache cache;
private IStorageCacheListener listener;
private IResizableDisplay display;
private IScreenInfoProvider screenInfoProvider;
private ResultCraftingGridSlot craftingResultSlot;
private BaseLegacySlot patternResultSlot;
public GridContainer(IGrid grid, IResizableDisplay display, @Nullable BaseTile gridTile, PlayerEntity player, int windowId) {
public GridContainer(IGrid grid, @Nullable BaseTile gridTile, PlayerEntity player, int windowId) {
super(RSContainers.GRID, gridTile, player, windowId);
this.grid = grid;
this.display = display;
initSlots();
grid.addCraftingListener(this);
}
public void setScreenInfoProvider(IScreenInfoProvider screenInfoProvider) {
this.screenInfoProvider = screenInfoProvider;
}
public void initSlots() {
this.inventorySlots.clear();
// this.inventoryItemStacks.clear(); // TODO at
@@ -112,7 +113,7 @@ public class GridContainer extends BaseContainer implements IGridCraftingListene
return ItemStack.EMPTY;
});
addPlayerInventory(8, display.getYPlayerInventory());
addPlayerInventory(8, screenInfoProvider.getYPlayerInventory());
}
private void addPortableGridSlots() {
@@ -136,7 +137,7 @@ public class GridContainer extends BaseContainer implements IGridCraftingListene
}
private void addCraftingSlots() {
int headerAndSlots = display.getTopHeight() + (display.getVisibleRows() * 18);
int headerAndSlots = screenInfoProvider.getTopHeight() + (screenInfoProvider.getVisibleRows() * 18);
int x = 26;
int y = headerAndSlots + 4;
@@ -156,7 +157,7 @@ public class GridContainer extends BaseContainer implements IGridCraftingListene
}
private void addPatternSlots() {
int headerAndSlots = display.getTopHeight() + (display.getVisibleRows() * 18);
int headerAndSlots = screenInfoProvider.getTopHeight() + (screenInfoProvider.getVisibleRows() * 18);
addSlot(new SlotItemHandler(((GridNetworkNode) grid).getPatterns(), 0, 172, headerAndSlots + 4));
addSlot(new SlotItemHandler(((GridNetworkNode) grid).getPatterns(), 1, 172, headerAndSlots + 40));

View File

@@ -0,0 +1,36 @@
package com.raoulvdberge.refinedstorage.container.factory;
import com.raoulvdberge.refinedstorage.api.network.grid.IGrid;
import com.raoulvdberge.refinedstorage.apiimpl.API;
import com.raoulvdberge.refinedstorage.container.GridContainer;
import com.raoulvdberge.refinedstorage.tile.BaseTile;
import net.minecraft.entity.player.PlayerInventory;
import net.minecraft.item.ItemStack;
import net.minecraft.network.PacketBuffer;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.ResourceLocation;
import net.minecraft.util.math.BlockPos;
import net.minecraftforge.fml.network.IContainerFactory;
import org.apache.commons.lang3.tuple.Pair;
public class GridContainerFactory implements IContainerFactory<GridContainer> {
@Override
public GridContainer create(int windowId, PlayerInventory inv, PacketBuffer data) {
ResourceLocation id = data.readResourceLocation();
BlockPos pos = null;
ItemStack stack = null;
if (data.readBoolean()) {
pos = data.readBlockPos();
}
if (data.readBoolean()) {
stack = data.readItemStack();
}
Pair<IGrid, TileEntity> grid = API.instance().getGridManager().createGrid(id, inv.player, stack, pos);
return new GridContainer(grid.getLeft(), grid.getRight() instanceof BaseTile ? (BaseTile) grid.getRight() : null, inv.player, windowId);
}
}

View File

@@ -0,0 +1,40 @@
package com.raoulvdberge.refinedstorage.container.factory;
import com.raoulvdberge.refinedstorage.api.network.grid.IGrid;
import com.raoulvdberge.refinedstorage.container.GridContainer;
import com.raoulvdberge.refinedstorage.screen.EmptyScreenInfoProvider;
import com.raoulvdberge.refinedstorage.tile.BaseTile;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.entity.player.PlayerInventory;
import net.minecraft.inventory.container.Container;
import net.minecraft.inventory.container.INamedContainerProvider;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.text.ITextComponent;
import javax.annotation.Nullable;
public class GridContainerProvider implements INamedContainerProvider {
private final IGrid grid;
private final TileEntity tile;
public GridContainerProvider(IGrid grid, TileEntity tile) {
this.grid = grid;
this.tile = tile;
}
@Override
public ITextComponent getDisplayName() {
return grid.getTitle();
}
@Nullable
@Override
public Container createMenu(int windowId, PlayerInventory inv, PlayerEntity player) {
GridContainer c = new GridContainer(grid, tile instanceof BaseTile ? (BaseTile) tile : null, player, windowId);
c.setScreenInfoProvider(new EmptyScreenInfoProvider());
c.initSlots();
return c;
}
}

View File

@@ -1,15 +1,15 @@
package com.raoulvdberge.refinedstorage.container.slot;
import com.raoulvdberge.refinedstorage.apiimpl.network.node.NetworkNodeCrafterManager;
import com.raoulvdberge.refinedstorage.screen.IResizableDisplay;
import com.raoulvdberge.refinedstorage.screen.IScreenInfoProvider;
import net.minecraftforge.items.IItemHandler;
public class CrafterManagerSlot extends BaseSlot {
private boolean visible;
private NetworkNodeCrafterManager crafterManager;
private IResizableDisplay display;
private IScreenInfoProvider display;
public CrafterManagerSlot(IItemHandler itemHandler, int inventoryIndex, int x, int y, boolean visible, IResizableDisplay display, NetworkNodeCrafterManager crafterManager) {
public CrafterManagerSlot(IItemHandler itemHandler, int inventoryIndex, int x, int y, boolean visible, IScreenInfoProvider display, NetworkNodeCrafterManager crafterManager) {
super(itemHandler, inventoryIndex, x, y);
this.visible = visible;

View File

@@ -9,7 +9,7 @@ import com.raoulvdberge.refinedstorage.inventory.fluid.FluidInventoryFilter;
import com.raoulvdberge.refinedstorage.inventory.item.validator.ItemValidatorBasic;
import com.raoulvdberge.refinedstorage.item.FilterItem;
import com.raoulvdberge.refinedstorage.screen.BaseScreen;
import com.raoulvdberge.refinedstorage.screen.grid.GuiGrid;
import com.raoulvdberge.refinedstorage.screen.grid.GridScreen;
import net.minecraft.item.ItemStack;
import net.minecraftforge.fluids.FluidStack;
import net.minecraftforge.fml.LogicalSide;
@@ -47,7 +47,7 @@ public class ItemHandlerFilter extends ItemHandlerBase {
}
if (EffectiveSide.get() == LogicalSide.CLIENT) { // TODO check
BaseScreen.executeLater(GuiGrid.class, grid -> grid.getView().sort());
BaseScreen.executeLater(GridScreen.class, grid -> grid.getView().sort());
}
}

View File

@@ -43,7 +43,7 @@ public abstract class AmountSpecifyingScreen<T extends Container> extends BaseSc
}
@Override
public void init(int x, int y) {
public void onPostInit(int x, int y) {
Pair<Integer, Integer> pos = getOkCancelPos();
okButton = addButton(x + pos.getLeft(), y + pos.getRight(), 50, 20, getOkButtonText(), true, true, btn -> onOkButtonPressed(hasShiftDown()));

View File

@@ -60,6 +60,8 @@ public abstract class BaseScreen<T extends Container> extends ContainerScreen<T>
public void init() {
minecraft.keyboardListener.enableRepeatEvents(true);
onPreInit();
super.init();
buttons.clear();
@@ -67,7 +69,7 @@ public abstract class BaseScreen<T extends Container> extends ContainerScreen<T>
sideButtonY = 6;
init(guiLeft, guiTop);
onPostInit(guiLeft, guiTop);
runActions();
}
@@ -318,7 +320,11 @@ public abstract class BaseScreen<T extends Container> extends ContainerScreen<T>
GlStateManager.enableLighting();
}
public abstract void init(int x, int y);
protected void onPreInit() {
// NO OP
}
public abstract void onPostInit(int x, int y);
public abstract void tick(int x, int y);

View File

@@ -32,7 +32,7 @@ public class ControllerScreen extends BaseScreen<ControllerContainer> {
}
@Override
public void init(int x, int y) {
public void onPostInit(int x, int y) {
addSideButton(new SideButtonRedstoneMode(this, ControllerTile.REDSTONE_MODE));
}

View File

@@ -1,6 +1,6 @@
package com.raoulvdberge.refinedstorage.screen;
public class ResizableDisplayDummy implements IResizableDisplay {
public class EmptyScreenInfoProvider implements IScreenInfoProvider {
@Override
public int getVisibleRows() {
return 3;

View File

@@ -42,7 +42,7 @@ public class FilterScreen extends BaseScreen<FilterContainer> {
}
@Override
public void init(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 -> {
compare ^= IComparer.COMPARE_NBT;

View File

@@ -17,7 +17,7 @@ public class GuiConstructor extends BaseScreen<ConstructorContainer> {
}
@Override
public void init(int x, int y) {
public void onPostInit(int x, int y) {
addSideButton(new SideButtonRedstoneMode(this, TileConstructor.REDSTONE_MODE));
addSideButton(new SideButtonType(this, TileConstructor.TYPE));

View File

@@ -13,7 +13,7 @@ public class GuiCrafter extends BaseScreen<CrafterContainer> {
}
@Override
public void init(int x, int y) {
public void onPostInit(int x, int y) {
}
@Override

View File

@@ -21,7 +21,7 @@ import net.minecraft.inventory.container.Slot;
import java.util.Map;
// TODO @MouseTweaksDisableWheelTweak
public class GuiCrafterManager extends BaseScreen<CrafterManagerContainer> implements IResizableDisplay {
public class GuiCrafterManager extends BaseScreen<CrafterManagerContainer> implements IScreenInfoProvider {
private CrafterManagerContainer container;
private NetworkNodeCrafterManager crafterManager;
@@ -96,7 +96,7 @@ public class GuiCrafterManager extends BaseScreen<CrafterManagerContainer> imple
}
@Override
public void init(int x, int y) {
public void onPostInit(int x, int y) {
addSideButton(new SideButtonRedstoneMode(this, TileCrafterManager.REDSTONE_MODE));
addSideButton(new SideButtonCrafterManagerSearchBoxMode(this));
addSideButton(new SideButtonGridSize(this, () -> crafterManager.getSize(), size -> TileDataManager.setParameter(TileCrafterManager.SIZE, size)));

View File

@@ -151,7 +151,7 @@ public class GuiCraftingMonitor extends BaseScreen<CraftingMonitorContainer> {
}
@Override
public void init(int x, int y) {
public void onPostInit(int x, int y) {
this.tabs.init(xSize);
this.scrollbar = new ScrollbarWidget(this, 235, 20, 12, 149);

View File

@@ -67,7 +67,7 @@ public class GuiCraftingPreview extends BaseScreen {
}
@Override
public void init(int x, int y) {
public void onPostInit(int x, int y) {
cancelButton = addButton(x + 55, y + 201 - 20 - 7, 50, 20, I18n.format("gui.cancel"), true, true, btn -> {
});

View File

@@ -14,7 +14,7 @@ public class GuiDestructor extends BaseScreen<DestructorContainer> {
}
@Override
public void init(int x, int y) {
public void onPostInit(int x, int y) {
addSideButton(new SideButtonRedstoneMode(this, TileDestructor.REDSTONE_MODE));
addSideButton(new SideButtonType(this, TileDestructor.TYPE));

View File

@@ -19,7 +19,7 @@ public class GuiDetector extends BaseScreen<DetectorContainer> {
}
@Override
public void init(int x, int y) {
public void onPostInit(int x, int y) {
addSideButton(new SideButtonType(this, TileDetector.TYPE));
addSideButton(new SideButtonDetectorMode(this));

View File

@@ -14,7 +14,7 @@ public class GuiDiskManipulator extends BaseScreen<DiskManipulatorContainer> {
}
@Override
public void init(int x, int y) {
public void onPostInit(int x, int y) {
addSideButton(new SideButtonRedstoneMode(this, TileDiskManipulator.REDSTONE_MODE));
addSideButton(new SideButtonIOMode(this));
addSideButton(new SideButtonType(this, TileDiskManipulator.TYPE));

View File

@@ -16,7 +16,7 @@ public class GuiExporter extends BaseScreen<ExporterContainer> {
}
@Override
public void init(int x, int y) {
public void onPostInit(int x, int y) {
addSideButton(new SideButtonRedstoneMode(this, TileExporter.REDSTONE_MODE));
addSideButton(new SideButtonType(this, TileExporter.TYPE));

View File

@@ -20,7 +20,7 @@ public class GuiFluidInterface extends BaseScreen<FluidInterfaceContainer> {
}
@Override
public void init(int x, int y) {
public void onPostInit(int x, int y) {
addSideButton(new SideButtonRedstoneMode(this, TileFluidInterface.REDSTONE_MODE));
}

View File

@@ -17,7 +17,7 @@ public class GuiImporter extends BaseScreen<ImporterContainer> {
}
@Override
public void init(int x, int y) {
public void onPostInit(int x, int y) {
addSideButton(new SideButtonRedstoneMode(this, TileImporter.REDSTONE_MODE));
addSideButton(new SideButtonType(this, TileImporter.TYPE));

View File

@@ -15,7 +15,7 @@ public class GuiInterface extends BaseScreen<InterfaceContainer> {
}
@Override
public void init(int x, int y) {
public void onPostInit(int x, int y) {
addSideButton(new SideButtonRedstoneMode(this, TileInterface.REDSTONE_MODE));
addSideButton(new SideButtonCompare(this, TileInterface.COMPARE, IComparer.COMPARE_NBT));

View File

@@ -17,7 +17,7 @@ public class GuiNetworkTransmitter extends BaseScreen<NetworkTransmitterContaine
}
@Override
public void init(int x, int y) {
public void onPostInit(int x, int y) {
addSideButton(new SideButtonRedstoneMode(this, TileNetworkTransmitter.REDSTONE_MODE));
}

View File

@@ -44,7 +44,7 @@ public class GuiReaderWriter extends BaseScreen<ReaderWriterContainer> {
}
@Override
public void init(int x, int y) {
public void onPostInit(int x, int y) {
addSideButton(new SideButtonRedstoneMode(this, readerWriter.getRedstoneModeParameter()));
add = addButton(x + 128, y + 15, 20, 20, "+", true, true, btn -> {

View File

@@ -13,7 +13,7 @@ public class GuiRelay extends BaseScreen<RelayContainer> {
}
@Override
public void init(int x, int y) {
public void onPostInit(int x, int y) {
addSideButton(new SideButtonRedstoneMode(this, TileRelay.REDSTONE_MODE));
}

View File

@@ -22,7 +22,7 @@ public class GuiSecurityManager extends BaseScreen<SecurityManagerContainer> {
}
@Override
public void init(int x, int y) {
public void onPostInit(int x, int y) {
addSideButton(new SideButtonRedstoneMode(this, TileSecurityManager.REDSTONE_MODE));
int padding = 15;

View File

@@ -14,7 +14,7 @@ public class GuiStorageMonitor extends BaseScreen<StorageMonitorContainer> {
}
@Override
public void init(int x, int y) {
public void onPostInit(int x, int y) {
addSideButton(new SideButtonCompare(this, TileStorageMonitor.COMPARE, IComparer.COMPARE_NBT));
}

View File

@@ -13,7 +13,7 @@ public class GuiWirelessTransmitter extends BaseScreen<WirelessTransmitterContai
}
@Override
public void init(int x, int y) {
public void onPostInit(int x, int y) {
addSideButton(new SideButtonRedstoneMode(this, TileWirelessTransmitter.REDSTONE_MODE));
}

View File

@@ -1,6 +1,6 @@
package com.raoulvdberge.refinedstorage.screen;
public interface IResizableDisplay {
public interface IScreenInfoProvider {
int getVisibleRows();
int getRows();

View File

@@ -60,7 +60,7 @@ public class StorageScreen<T extends Container> extends BaseScreen<T> {
}
@Override
public void init(int x, int y) {
public void onPostInit(int x, int y) {
if (redstoneModeParameter != null) {
addSideButton(new SideButtonRedstoneMode(this, redstoneModeParameter));
}

View File

@@ -0,0 +1,18 @@
package com.raoulvdberge.refinedstorage.screen.factory;
import com.raoulvdberge.refinedstorage.container.GridContainer;
import com.raoulvdberge.refinedstorage.screen.grid.GridScreen;
import net.minecraft.client.gui.ScreenManager;
import net.minecraft.entity.player.PlayerInventory;
import net.minecraft.util.text.ITextComponent;
public class GridScreenFactory implements ScreenManager.IScreenFactory<GridContainer, GridScreen> {
@Override
public GridScreen create(GridContainer container, PlayerInventory inv, ITextComponent title) {
GridScreen grid = new GridScreen(container, container.getGrid(), inv, title);
container.setScreenInfoProvider(grid);
return grid;
}
}

View File

@@ -9,7 +9,7 @@ import com.raoulvdberge.refinedstorage.apiimpl.network.node.GridNetworkNode;
import com.raoulvdberge.refinedstorage.apiimpl.render.ElementDrawers;
import com.raoulvdberge.refinedstorage.container.GridContainer;
import com.raoulvdberge.refinedstorage.screen.BaseScreen;
import com.raoulvdberge.refinedstorage.screen.IResizableDisplay;
import com.raoulvdberge.refinedstorage.screen.IScreenInfoProvider;
import com.raoulvdberge.refinedstorage.screen.grid.sorting.*;
import com.raoulvdberge.refinedstorage.screen.grid.stack.GridStackItem;
import com.raoulvdberge.refinedstorage.screen.grid.stack.IGridStack;
@@ -30,12 +30,13 @@ import net.minecraft.client.renderer.RenderHelper;
import net.minecraft.client.resources.I18n;
import net.minecraft.entity.player.PlayerInventory;
import net.minecraft.item.ItemStack;
import net.minecraft.util.text.ITextComponent;
import net.minecraftforge.fml.client.config.GuiCheckBox;
import java.util.LinkedList;
import java.util.List;
public class GuiGrid extends BaseScreen<GridContainer> implements IResizableDisplay {
public class GridScreen extends BaseScreen<GridContainer> implements IScreenInfoProvider {
private IGridView view;
private SearchWidget searchField;
@@ -51,8 +52,8 @@ public class GuiGrid extends BaseScreen<GridContainer> implements IResizableDisp
private int slotNumber;
public GuiGrid(GridContainer container, IGrid grid, PlayerInventory inventory) {
super(container, 227, 0, inventory, null);
public GridScreen(GridContainer container, IGrid grid, PlayerInventory inventory, ITextComponent title) {
super(container, 227, 0, inventory, title);
this.grid = grid;
this.view = grid.getGridType() == GridType.FLUID ? new GridViewFluid(this, getDefaultSorter(), getSorters()) : new GridViewItem(this, getDefaultSorter(), getSorters());
@@ -71,15 +72,15 @@ public class GuiGrid extends BaseScreen<GridContainer> implements IResizableDisp
});
}
/* TODO - calcHeight
@Override
protected void calcHeight() {
protected void onPreInit() {
super.onPreInit();
this.ySize = getTopHeight() + getBottomHeight() + (getVisibleRows() * 18);
this.ySize = ySize;
}*/
}
@Override
public void init(int x, int y) {
public void onPostInit(int x, int y) {
container.initSlots();
this.tabs.init(xSize - 32);
@@ -208,7 +209,7 @@ public class GuiGrid extends BaseScreen<GridContainer> implements IResizableDisp
case IGrid.SIZE_STRETCH:
int screenSpaceAvailable = height - getTopHeight() - getBottomHeight();
return Math.max(3, Math.min((screenSpaceAvailable / 18) - 3, RS.INSTANCE.config.maxRowsStretch));
return Math.max(3, Math.min((screenSpaceAvailable / 18) - 3, Integer.MAX_VALUE));//@TODO: MaxRowsStretch
case IGrid.SIZE_SMALL:
return 3;
case IGrid.SIZE_MEDIUM:
@@ -324,7 +325,7 @@ public class GuiGrid extends BaseScreen<GridContainer> implements IResizableDisp
@Override
public void renderForeground(int mouseX, int mouseY) {
renderString(7, 7, I18n.format(grid.getGuiTitle()));
renderString(7, 7, title.getFormattedText());
renderString(7, getYPlayerInventory() - 12, I18n.format("container.inventory"));
int x = 8;
@@ -372,7 +373,7 @@ public class GuiGrid extends BaseScreen<GridContainer> implements IResizableDisp
}
if (isOverCreatePattern(mouseX, mouseY)) {
renderTooltip(mouseX, mouseY, I18n.format("gui.refinedstorage:grid.pattern_create"));
renderTooltip(mouseX, mouseY, I18n.format("gui.refinedstorage.grid.pattern_create"));
}
tabs.drawTooltip(font, mouseX, mouseY);

View File

@@ -111,7 +111,7 @@ public class GridStackFluid implements IGridStack {
String text;
if (displayCraftText) {
text = I18n.format("gui.refinedstorage:grid.craft");
text = I18n.format("gui.refinedstorage.grid.craft");
} else {
text = API.instance().getQuantityFormatter().formatInBucketFormWithOnlyTrailingDigitsIfZero(getQuantity());
}

View File

@@ -154,7 +154,7 @@ public class GridStackItem implements IGridStack {
String text = null;
if (displayCraftText) {
text = I18n.format("gui.refinedstorage:grid.craft");
text = I18n.format("gui.refinedstorage.grid.craft");
} else if (stack.getCount() > 1) {
text = API.instance().getQuantityFormatter().formatWithUnits(getQuantity());
}

View File

@@ -1,7 +1,7 @@
package com.raoulvdberge.refinedstorage.screen.grid.view;
import com.raoulvdberge.refinedstorage.api.network.grid.IGrid;
import com.raoulvdberge.refinedstorage.screen.grid.GuiGrid;
import com.raoulvdberge.refinedstorage.screen.grid.GridScreen;
import com.raoulvdberge.refinedstorage.screen.grid.filtering.GridFilterParser;
import com.raoulvdberge.refinedstorage.screen.grid.sorting.GridSorterDirection;
import com.raoulvdberge.refinedstorage.screen.grid.sorting.IGridSorter;
@@ -11,7 +11,7 @@ import java.util.*;
import java.util.function.Predicate;
public abstract class GridViewBase implements IGridView {
private GuiGrid gui;
private GridScreen gui;
private boolean canCraft;
private IGridSorter defaultSorter;
@@ -20,7 +20,7 @@ public abstract class GridViewBase implements IGridView {
private List<IGridStack> stacks = new ArrayList<>();
protected Map<Integer, IGridStack> map = new HashMap<>();
public GridViewBase(GuiGrid gui, IGridSorter defaultSorter, List<IGridSorter> sorters) {
public GridViewBase(GridScreen gui, IGridSorter defaultSorter, List<IGridSorter> sorters) {
this.gui = gui;
this.defaultSorter = defaultSorter;
this.sorters = sorters;

View File

@@ -1,6 +1,6 @@
package com.raoulvdberge.refinedstorage.screen.grid.view;
import com.raoulvdberge.refinedstorage.screen.grid.GuiGrid;
import com.raoulvdberge.refinedstorage.screen.grid.GridScreen;
import com.raoulvdberge.refinedstorage.screen.grid.sorting.IGridSorter;
import com.raoulvdberge.refinedstorage.screen.grid.stack.GridStackFluid;
import com.raoulvdberge.refinedstorage.screen.grid.stack.IGridStack;
@@ -8,7 +8,7 @@ import com.raoulvdberge.refinedstorage.screen.grid.stack.IGridStack;
import java.util.List;
public class GridViewFluid extends GridViewBase {
public GridViewFluid(GuiGrid gui, IGridSorter defaultSorter, List<IGridSorter> sorters) {
public GridViewFluid(GridScreen gui, IGridSorter defaultSorter, List<IGridSorter> sorters) {
super(gui, defaultSorter, sorters);
}

View File

@@ -1,6 +1,6 @@
package com.raoulvdberge.refinedstorage.screen.grid.view;
import com.raoulvdberge.refinedstorage.screen.grid.GuiGrid;
import com.raoulvdberge.refinedstorage.screen.grid.GridScreen;
import com.raoulvdberge.refinedstorage.screen.grid.sorting.IGridSorter;
import com.raoulvdberge.refinedstorage.screen.grid.stack.GridStackItem;
import com.raoulvdberge.refinedstorage.screen.grid.stack.IGridStack;
@@ -8,7 +8,7 @@ import com.raoulvdberge.refinedstorage.screen.grid.stack.IGridStack;
import java.util.List;
public class GridViewItem extends GridViewBase {
public GridViewItem(GuiGrid gui, IGridSorter defaultSorter, List<IGridSorter> sorters) {
public GridViewItem(GridScreen gui, IGridSorter defaultSorter, List<IGridSorter> sorters) {
super(gui, defaultSorter, sorters);
}

View File

@@ -1,30 +1,30 @@
package com.raoulvdberge.refinedstorage.screen.widget.sidebutton;
import com.raoulvdberge.refinedstorage.api.network.grid.IGrid;
import com.raoulvdberge.refinedstorage.screen.grid.GuiGrid;
import com.raoulvdberge.refinedstorage.screen.grid.GridScreen;
import net.minecraft.client.resources.I18n;
import net.minecraft.util.text.TextFormatting;
public class SideButtonGridSearchBoxMode extends SideButton {
public SideButtonGridSearchBoxMode(GuiGrid gui) {
public SideButtonGridSearchBoxMode(GridScreen gui) {
super(gui);
}
@Override
public String getTooltip() {
return I18n.format("sidebutton.refinedstorage:grid.search_box_mode") + "\n" + TextFormatting.GRAY + I18n.format("sidebutton.refinedstorage:grid.search_box_mode." + ((GuiGrid) screen).getGrid().getSearchBoxMode());
return I18n.format("sidebutton.refinedstorage:grid.search_box_mode") + "\n" + TextFormatting.GRAY + I18n.format("sidebutton.refinedstorage:grid.search_box_mode." + ((GridScreen) screen).getGrid().getSearchBoxMode());
}
@Override
protected void renderButtonIcon(int x, int y) {
int mode = ((GuiGrid) 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);
}
@Override
public void onPress() {
int mode = ((GuiGrid) screen).getGrid().getSearchBoxMode();
int mode = ((GridScreen) screen).getGrid().getSearchBoxMode();
if (mode == IGrid.SEARCH_BOX_MODE_NORMAL) {
mode = IGrid.SEARCH_BOX_MODE_NORMAL_AUTOSELECTED;
@@ -40,8 +40,8 @@ public class SideButtonGridSearchBoxMode extends SideButton {
mode = IGrid.SEARCH_BOX_MODE_NORMAL;
}
((GuiGrid) screen).getGrid().onSearchBoxModeChanged(mode);
((GridScreen) screen).getGrid().onSearchBoxModeChanged(mode);
((GuiGrid) screen).getSearchField().setMode(mode);
((GridScreen) screen).getSearchField().setMode(mode);
}
}

View File

@@ -5,7 +5,7 @@ import com.raoulvdberge.refinedstorage.api.network.grid.GridType;
import com.raoulvdberge.refinedstorage.api.network.grid.IGrid;
import com.raoulvdberge.refinedstorage.apiimpl.network.node.GridNetworkNode;
import com.raoulvdberge.refinedstorage.screen.BaseScreen;
import com.raoulvdberge.refinedstorage.screen.grid.GuiGrid;
import com.raoulvdberge.refinedstorage.screen.grid.GridScreen;
import com.raoulvdberge.refinedstorage.tile.NetworkNodeTile;
import com.raoulvdberge.refinedstorage.tile.config.IType;
import com.raoulvdberge.refinedstorage.tile.data.TileDataParameter;
@@ -39,17 +39,17 @@ public class GridTile extends NetworkNodeTile<GridNetworkNode> {
t.getNode().setSearchBoxMode(v);
t.getNode().markDirty();
}
}, (initial, p) -> BaseScreen.executeLater(GuiGrid.class, grid -> grid.getSearchField().setMode(p)));
}, (initial, p) -> BaseScreen.executeLater(GridScreen.class, grid -> grid.getSearchField().setMode(p)));
public static final TileDataParameter<Integer, GridTile> SIZE = new TileDataParameter<>(DataSerializers.VARINT, 0, t -> t.getNode().getSize(), (t, v) -> {
if (IGrid.isValidSize(v)) {
t.getNode().setSize(v);
t.getNode().markDirty();
}
}, (initial, p) -> BaseScreen.executeLater(GuiGrid.class, BaseScreen::init));
}, (initial, p) -> BaseScreen.executeLater(GridScreen.class, BaseScreen::init));
public static final TileDataParameter<Integer, GridTile> TAB_SELECTED = new TileDataParameter<>(DataSerializers.VARINT, 0, t -> t.getNode().getTabSelected(), (t, v) -> {
t.getNode().setTabSelected(v == t.getNode().getTabSelected() ? -1 : v);
t.getNode().markDirty();
}, (initial, p) -> BaseScreen.executeLater(GuiGrid.class, grid -> grid.getView().sort()));
}, (initial, p) -> BaseScreen.executeLater(GridScreen.class, grid -> grid.getView().sort()));
public static final TileDataParameter<Integer, GridTile> TAB_PAGE = new TileDataParameter<>(DataSerializers.VARINT, 0, t -> t.getNode().getTabPage(), (t, v) -> {
if (v >= 0 && v <= t.getNode().getTotalTabPages()) {
t.getNode().setTabPage(v);
@@ -59,17 +59,17 @@ public class GridTile extends NetworkNodeTile<GridNetworkNode> {
public static final TileDataParameter<Boolean, GridTile> OREDICT_PATTERN = new TileDataParameter<>(DataSerializers.BOOLEAN, false, t -> t.getNode().isOredictPattern(), (t, v) -> {
t.getNode().setOredictPattern(v);
t.getNode().markDirty();
}, (initial, p) -> BaseScreen.executeLater(GuiGrid.class, grid -> grid.updateOredictPattern(p)));
}, (initial, p) -> BaseScreen.executeLater(GridScreen.class, grid -> grid.updateOredictPattern(p)));
public static final TileDataParameter<Boolean, GridTile> PROCESSING_PATTERN = new TileDataParameter<>(DataSerializers.BOOLEAN, false, t -> t.getNode().isProcessingPattern(), (t, v) -> {
t.getNode().setProcessingPattern(v);
t.getNode().clearMatrix();
t.getNode().markDirty();
}, (initial, p) -> BaseScreen.executeLater(GuiGrid.class, BaseScreen::init));
public static final TileDataParameter<Integer, GridTile> PROCESSING_TYPE = IType.createParameter((initial, p) -> BaseScreen.executeLater(GuiGrid.class, BaseScreen::init));
}, (initial, p) -> BaseScreen.executeLater(GridScreen.class, BaseScreen::init));
public static final TileDataParameter<Integer, GridTile> PROCESSING_TYPE = IType.createParameter((initial, p) -> BaseScreen.executeLater(GridScreen.class, BaseScreen::init));
public static void trySortGrid(boolean initial) {
if (!initial) {
BaseScreen.executeLater(GuiGrid.class, grid -> grid.getView().sort());
BaseScreen.executeLater(GridScreen.class, grid -> grid.getView().sort());
}
}

View File

@@ -10,7 +10,7 @@ import com.raoulvdberge.refinedstorage.api.util.IFilter;
import com.raoulvdberge.refinedstorage.apiimpl.storage.StorageCacheListenerGridFluid;
import com.raoulvdberge.refinedstorage.inventory.item.ItemHandlerFilter;
import com.raoulvdberge.refinedstorage.screen.BaseScreen;
import com.raoulvdberge.refinedstorage.screen.grid.GuiGrid;
import com.raoulvdberge.refinedstorage.screen.grid.GridScreen;
import com.raoulvdberge.refinedstorage.util.StackUtils;
import net.minecraft.client.Minecraft;
import net.minecraft.entity.player.PlayerEntity;
@@ -21,6 +21,8 @@ import net.minecraft.item.ItemStack;
import net.minecraft.nbt.CompoundNBT;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.math.BlockPos;
import net.minecraft.util.text.ITextComponent;
import net.minecraft.util.text.TranslationTextComponent;
import net.minecraft.world.World;
import net.minecraftforge.items.IItemHandlerModifiable;
@@ -138,8 +140,8 @@ public class WirelessFluidGrid implements IGridNetworkAware {
}
@Override
public String getGuiTitle() {
return "gui.refinedstorage:fluid_grid";
public ITextComponent getTitle() {
return new TranslationTextComponent("gui.refinedstorage.fluid_grid");
}
@Override
@@ -193,7 +195,7 @@ public class WirelessFluidGrid implements IGridNetworkAware {
this.sortingType = type;
BaseScreen.executeLater(GuiGrid.class, grid -> grid.getView().sort());
BaseScreen.executeLater(GridScreen.class, grid -> grid.getView().sort());
}
@Override
@@ -202,7 +204,7 @@ public class WirelessFluidGrid implements IGridNetworkAware {
this.sortingDirection = direction;
BaseScreen.executeLater(GuiGrid.class, grid -> grid.getView().sort());
BaseScreen.executeLater(GridScreen.class, grid -> grid.getView().sort());
}
@Override
@@ -229,7 +231,7 @@ public class WirelessFluidGrid implements IGridNetworkAware {
// TODO RS.INSTANCE.network.sendToServer(new MessageWirelessFluidGridSettingsUpdate(getSortingDirection(), getSortingType(), getSearchBoxMode(), getSize(), tabSelected, getTabPage()));
BaseScreen.executeLater(GuiGrid.class, grid -> grid.getView().sort());
BaseScreen.executeLater(GridScreen.class, grid -> grid.getView().sort());
}
@Override

View File

@@ -10,7 +10,7 @@ import com.raoulvdberge.refinedstorage.api.util.IFilter;
import com.raoulvdberge.refinedstorage.apiimpl.storage.StorageCacheListenerGridItem;
import com.raoulvdberge.refinedstorage.inventory.item.ItemHandlerFilter;
import com.raoulvdberge.refinedstorage.screen.BaseScreen;
import com.raoulvdberge.refinedstorage.screen.grid.GuiGrid;
import com.raoulvdberge.refinedstorage.screen.grid.GridScreen;
import com.raoulvdberge.refinedstorage.util.StackUtils;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.entity.player.ServerPlayerEntity;
@@ -20,6 +20,8 @@ import net.minecraft.item.ItemStack;
import net.minecraft.nbt.CompoundNBT;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.math.BlockPos;
import net.minecraft.util.text.ITextComponent;
import net.minecraft.util.text.TranslationTextComponent;
import net.minecraft.world.World;
import net.minecraftforge.items.IItemHandlerModifiable;
@@ -139,8 +141,8 @@ public class WirelessGrid implements IGridNetworkAware {
}
@Override
public String getGuiTitle() {
return "gui.refinedstorage:grid";
public ITextComponent getTitle() {
return new TranslationTextComponent("gui.refinedstorage.grid");
}
@Override
@@ -189,7 +191,7 @@ public class WirelessGrid implements IGridNetworkAware {
this.viewType = type;
BaseScreen.executeLater(GuiGrid.class, grid -> grid.getView().sort());
BaseScreen.executeLater(GridScreen.class, grid -> grid.getView().sort());
}
@Override
@@ -198,7 +200,7 @@ public class WirelessGrid implements IGridNetworkAware {
this.sortingType = type;
BaseScreen.executeLater(GuiGrid.class, grid -> grid.getView().sort());
BaseScreen.executeLater(GridScreen.class, grid -> grid.getView().sort());
}
@Override
@@ -207,7 +209,7 @@ public class WirelessGrid implements IGridNetworkAware {
this.sortingDirection = direction;
BaseScreen.executeLater(GuiGrid.class, grid -> grid.getView().sort());
BaseScreen.executeLater(GridScreen.class, grid -> grid.getView().sort());
}
@Override
@@ -234,7 +236,7 @@ public class WirelessGrid implements IGridNetworkAware {
// TODO RS.INSTANCE.network.sendToServer(new MessageGridSettingsUpdate(getViewType(), getSortingDirection(), getSortingType(), getSearchBoxMode(), getSize(), tabSelected, getTabPage()));
BaseScreen.executeLater(GuiGrid.class, grid -> grid.getView().sort());
BaseScreen.executeLater(GridScreen.class, grid -> grid.getView().sort());
}
@Override

View File

@@ -25,7 +25,7 @@ import com.raoulvdberge.refinedstorage.apiimpl.storage.disk.StorageDiskItemPorta
import com.raoulvdberge.refinedstorage.inventory.item.ItemHandlerBase;
import com.raoulvdberge.refinedstorage.inventory.item.ItemHandlerFilter;
import com.raoulvdberge.refinedstorage.screen.BaseScreen;
import com.raoulvdberge.refinedstorage.screen.grid.GuiGrid;
import com.raoulvdberge.refinedstorage.screen.grid.GridScreen;
import com.raoulvdberge.refinedstorage.util.StackUtils;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.entity.player.ServerPlayerEntity;
@@ -33,6 +33,8 @@ import net.minecraft.inventory.CraftResultInventory;
import net.minecraft.inventory.CraftingInventory;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.CompoundNBT;
import net.minecraft.util.text.ITextComponent;
import net.minecraft.util.text.TranslationTextComponent;
import net.minecraft.world.server.ServerWorld;
import net.minecraftforge.common.util.Constants;
import net.minecraftforge.energy.CapabilityEnergy;
@@ -243,8 +245,8 @@ public class PortableGrid implements IGrid, IPortableGrid, IStorageDiskContainer
}
@Override
public String getGuiTitle() {
return "gui.refinedstorage:portable_grid";
public ITextComponent getTitle() {
return new TranslationTextComponent("gui.refinedstorage.portable_grid");
}
@Override
@@ -298,7 +300,7 @@ public class PortableGrid implements IGrid, IPortableGrid, IStorageDiskContainer
this.sortingType = type;
BaseScreen.executeLater(GuiGrid.class, grid -> grid.getView().sort());
BaseScreen.executeLater(GridScreen.class, grid -> grid.getView().sort());
}
@Override
@@ -307,7 +309,7 @@ public class PortableGrid implements IGrid, IPortableGrid, IStorageDiskContainer
this.sortingDirection = direction;
BaseScreen.executeLater(GuiGrid.class, grid -> grid.getView().sort());
BaseScreen.executeLater(GridScreen.class, grid -> grid.getView().sort());
}
@Override
@@ -334,7 +336,7 @@ public class PortableGrid implements IGrid, IPortableGrid, IStorageDiskContainer
// TODO RS.INSTANCE.network.sendToServer(new MessageGridSettingsUpdate(getViewType(), getSortingDirection(), getSortingType(), getSearchBoxMode(), getSize(), tabSelected, getTabPage()));
BaseScreen.executeLater(GuiGrid.class, grid -> grid.getView().sort());
BaseScreen.executeLater(GridScreen.class, grid -> grid.getView().sort());
}
@Override

View File

@@ -29,7 +29,7 @@ import com.raoulvdberge.refinedstorage.inventory.item.ItemHandlerBase;
import com.raoulvdberge.refinedstorage.inventory.item.ItemHandlerFilter;
import com.raoulvdberge.refinedstorage.inventory.listener.ListenerTile;
import com.raoulvdberge.refinedstorage.screen.BaseScreen;
import com.raoulvdberge.refinedstorage.screen.grid.GuiGrid;
import com.raoulvdberge.refinedstorage.screen.grid.GridScreen;
import com.raoulvdberge.refinedstorage.tile.BaseTile;
import com.raoulvdberge.refinedstorage.tile.config.IRedstoneConfigurable;
import com.raoulvdberge.refinedstorage.tile.config.RedstoneMode;
@@ -48,6 +48,8 @@ import net.minecraft.nbt.CompoundNBT;
import net.minecraft.nbt.ListNBT;
import net.minecraft.network.datasync.DataSerializers;
import net.minecraft.util.Direction;
import net.minecraft.util.text.ITextComponent;
import net.minecraft.util.text.TranslationTextComponent;
import net.minecraft.world.server.ServerWorld;
import net.minecraftforge.common.capabilities.Capability;
import net.minecraftforge.common.util.Constants;
@@ -85,17 +87,17 @@ public class TilePortableGrid extends BaseTile implements IGrid, IPortableGrid,
t.setSearchBoxMode(v);
t.markDirty();
}
}, (initial, p) -> BaseScreen.executeLater(GuiGrid.class, grid -> grid.getSearchField().setMode(p)));
}, (initial, p) -> BaseScreen.executeLater(GridScreen.class, grid -> grid.getSearchField().setMode(p)));
private static final TileDataParameter<Integer, TilePortableGrid> SIZE = new TileDataParameter<>(DataSerializers.VARINT, 0, TilePortableGrid::getSize, (t, v) -> {
if (IGrid.isValidSize(v)) {
t.setSize(v);
t.markDirty();
}
}, (initial, p) -> BaseScreen.executeLater(GuiGrid.class, BaseScreen::init));
}, (initial, p) -> BaseScreen.executeLater(GridScreen.class, BaseScreen::init));
private static final TileDataParameter<Integer, TilePortableGrid> TAB_SELECTED = new TileDataParameter<>(DataSerializers.VARINT, 0, TilePortableGrid::getTabSelected, (t, v) -> {
t.setTabSelected(v == t.getTabSelected() ? -1 : v);
t.markDirty();
}, (initial, p) -> BaseScreen.executeLater(GuiGrid.class, grid -> grid.getView().sort()));
}, (initial, p) -> BaseScreen.executeLater(GridScreen.class, grid -> grid.getView().sort()));
private static final TileDataParameter<Integer, TilePortableGrid> TAB_PAGE = new TileDataParameter<>(DataSerializers.VARINT, 0, TilePortableGrid::getTabPage, (t, v) -> {
if (v >= 0 && v <= t.getTotalTabPages()) {
t.setTabPage(v);
@@ -343,8 +345,8 @@ public class TilePortableGrid extends BaseTile implements IGrid, IPortableGrid,
}
@Override
public String getGuiTitle() {
return "gui.refinedstorage:portable_grid";
public ITextComponent getTitle() {
return new TranslationTextComponent("gui.refinedstorage.portable_grid");
}
@Override

View File

@@ -9,12 +9,13 @@
"key.refinedstorage.openWirelessCraftingMonitor": "Open Wireless Crafting Monitor",
"gui.refinedstorage.controller": "Controller",
"gui.refinedstorage.creative_controller": "Creative Controller",
"gui.refinedstorage:grid": "Grid",
"gui.refinedstorage:grid.craft": "Craft",
"gui.refinedstorage:crafting_grid": "Crafting Grid",
"gui.refinedstorage:pattern_grid": "Pattern Grid",
"gui.refinedstorage:grid.pattern_create": "Create",
"gui.refinedstorage:fluid_grid": "Fluid Grid",
"gui.refinedstorage.grid": "Grid",
"gui.refinedstorage.grid.craft": "Craft",
"gui.refinedstorage.crafting_grid": "Crafting Grid",
"gui.refinedstorage.pattern_grid": "Pattern Grid",
"gui.refinedstorage.grid.pattern_create": "Create",
"gui.refinedstorage.fluid_grid": "Fluid Grid",
"gui.refinedstorage.portable_grid": "Portable Grid",
"gui.refinedstorage:item_amount": "Item amount",
"gui.refinedstorage:fluid_amount": "Fluid amount in mB",
"gui.refinedstorage.disk_drive": "Disk Drive",
@@ -82,7 +83,6 @@
"gui.refinedstorage.security_manager.permission.5": "Security",
"gui.refinedstorage.security_manager.permission.5.tooltip": "Ability to change security options",
"gui.refinedstorage:storage_monitor": "Storage Monitor",
"gui.refinedstorage:portable_grid": "Portable Grid",
"gui.refinedstorage:crafter_manager": "Crafter Manager",
"misc.refinedstorage.energy_stored": "%d / %d FE",
"misc.refinedstorage.energy_usage": "Usage: %d FE/t",