Consolidated ContainerHelpers.
This commit is contained in:
@@ -182,7 +182,7 @@ public final class ContainerLocator {
|
||||
buf.writeByte(side.ordinal());
|
||||
break;
|
||||
case BLOCK:
|
||||
buf.writeByte(22);
|
||||
buf.writeByte(2);
|
||||
buf.writeInt(dimensionId);
|
||||
buf.writeBlockPos(blockPos);
|
||||
break;
|
||||
|
||||
@@ -1,33 +0,0 @@
|
||||
package appeng.container.helper;
|
||||
|
||||
import appeng.api.config.SecurityPermissions;
|
||||
import appeng.api.networking.IGrid;
|
||||
import appeng.api.networking.IGridNode;
|
||||
import appeng.api.networking.energy.IEnergyGrid;
|
||||
import appeng.api.networking.security.IActionHost;
|
||||
import appeng.api.networking.security.ISecurityGrid;
|
||||
import appeng.util.Platform;
|
||||
import net.minecraft.entity.player.PlayerEntity;
|
||||
import net.minecraft.util.text.TextFormatting;
|
||||
import net.minecraft.util.text.TranslationTextComponent;
|
||||
|
||||
abstract class AbstractContainerHelper {
|
||||
|
||||
private final SecurityPermissions requiredPermission;
|
||||
|
||||
public AbstractContainerHelper(SecurityPermissions requiredPermission) {
|
||||
this.requiredPermission = requiredPermission;
|
||||
}
|
||||
|
||||
protected boolean checkPermission(PlayerEntity player, Object accessInterface) {
|
||||
|
||||
if (requiredPermission != null)
|
||||
{
|
||||
return Platform.checkPermissions(player, accessInterface, requiredPermission, true);
|
||||
}
|
||||
|
||||
return true;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,107 +0,0 @@
|
||||
package appeng.container.helper;
|
||||
|
||||
import appeng.api.config.SecurityPermissions;
|
||||
import appeng.api.parts.IPart;
|
||||
import appeng.api.parts.IPartHost;
|
||||
import appeng.container.AEBaseContainer;
|
||||
import appeng.container.ContainerLocator;
|
||||
import net.minecraft.entity.player.PlayerEntity;
|
||||
import net.minecraft.entity.player.PlayerInventory;
|
||||
import net.minecraft.entity.player.ServerPlayerEntity;
|
||||
import net.minecraft.inventory.container.INamedContainerProvider;
|
||||
import net.minecraft.inventory.container.SimpleNamedContainerProvider;
|
||||
import net.minecraft.network.PacketBuffer;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
import net.minecraft.util.text.ITextComponent;
|
||||
import net.minecraftforge.fml.network.NetworkHooks;
|
||||
|
||||
/**
|
||||
* Helper for containers that can be opened for {@link appeng.api.parts.IPart parts} that are attached
|
||||
* to a {@link appeng.api.parts.IPartHost part host}.
|
||||
*
|
||||
* @param <C>
|
||||
* @param <P> The type of part this container is for.
|
||||
*/
|
||||
public final class PartContainerHelper<C extends AEBaseContainer, P extends IPart> extends AbstractContainerHelper {
|
||||
|
||||
private final Class<P> partClass;
|
||||
|
||||
private final ContainerFactory<P, C> factory;
|
||||
|
||||
public PartContainerHelper(ContainerFactory<P, C> factory, Class<P> partClass) {
|
||||
this(factory, partClass, null);
|
||||
}
|
||||
|
||||
public PartContainerHelper(ContainerFactory<P, C> factory, Class<P> partClass, SecurityPermissions requiredPermission) {
|
||||
super(requiredPermission);
|
||||
this.partClass = partClass;
|
||||
this.factory = factory;
|
||||
}
|
||||
|
||||
/**
|
||||
* Opens a container that is based around a single tile entity.
|
||||
* The tile entity's position is encoded in the packet buffer.
|
||||
*/
|
||||
public C fromNetwork(int windowId, PlayerInventory inv, PacketBuffer packetBuf) {
|
||||
BlockPos pos = packetBuf.readBlockPos();
|
||||
TileEntity te = inv.player.world.getTileEntity(pos);
|
||||
if (partClass.isInstance(te)) {
|
||||
return factory.create(windowId, inv, partClass.cast(te));
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public boolean open(PlayerEntity player, ContainerLocator locator) {
|
||||
if (!(player instanceof ServerPlayerEntity)) {
|
||||
// Cannot open containers on the client or for non-players
|
||||
// FIXME logging?
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!locator.hasBlockPos() || !locator.hasSide()) {
|
||||
return false; // No block was clicked or the side is unknown
|
||||
// FIXME: If no side is provided, should be try with INTERNAL???
|
||||
}
|
||||
|
||||
TileEntity tileEntity = player.world.getTileEntity(locator.getBlockPos());
|
||||
if (!(tileEntity instanceof IPartHost)) {
|
||||
// FIXME logging?
|
||||
return false; // Wrong tile entity at block position
|
||||
}
|
||||
IPartHost partHost = (IPartHost) tileEntity;
|
||||
IPart part = partHost.getPart(locator.getSide());
|
||||
if (!(partClass.isInstance(part))) {
|
||||
// FIXME logging?
|
||||
return false;
|
||||
}
|
||||
P actualPart = partClass.cast(tileEntity);
|
||||
|
||||
if (!checkPermission(player, actualPart)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// Use block name at position
|
||||
// FIXME: this is not right, we'd need to check the part's item stack, or custom naming interface impl
|
||||
ITextComponent title = player.world.getBlockState(locator.getBlockPos()).getBlock().getNameTextComponent();
|
||||
|
||||
INamedContainerProvider container = new SimpleNamedContainerProvider(
|
||||
(wnd, p, pl) -> {
|
||||
C c = factory.create(wnd, p, actualPart);
|
||||
// Set the original locator on the opened server-side container for it to more
|
||||
// easily remember how to re-open after being closed.
|
||||
c.setLocator(locator);
|
||||
return c;
|
||||
}, title
|
||||
);
|
||||
NetworkHooks.openGui((ServerPlayerEntity) player, container, locator.getBlockPos());
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@FunctionalInterface
|
||||
public interface ContainerFactory<T, C> {
|
||||
C create(int windowId, PlayerInventory playerInv, T part);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,91 +0,0 @@
|
||||
package appeng.container.helper;
|
||||
|
||||
import appeng.api.config.SecurityPermissions;
|
||||
import appeng.container.AEBaseContainer;
|
||||
import appeng.container.ContainerLocator;
|
||||
import net.minecraft.entity.player.PlayerEntity;
|
||||
import net.minecraft.entity.player.PlayerInventory;
|
||||
import net.minecraft.entity.player.ServerPlayerEntity;
|
||||
import net.minecraft.inventory.container.INamedContainerProvider;
|
||||
import net.minecraft.inventory.container.SimpleNamedContainerProvider;
|
||||
import net.minecraft.network.PacketBuffer;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
import net.minecraft.util.text.ITextComponent;
|
||||
import net.minecraftforge.fml.network.NetworkHooks;
|
||||
|
||||
public final class TileContainerHelper<C extends AEBaseContainer, T extends TileEntity> extends AbstractContainerHelper {
|
||||
|
||||
private final Class<T> tileEntityClass;
|
||||
|
||||
private final ContainerFactory<T, C> factory;
|
||||
|
||||
private final SecurityPermissions requiredPermission;
|
||||
|
||||
public TileContainerHelper(ContainerFactory<T, C> factory, Class<T> tileEntityClass) {
|
||||
this(factory, tileEntityClass, null);
|
||||
}
|
||||
|
||||
public TileContainerHelper(ContainerFactory<T, C> factory, Class<T> tileEntityClass, SecurityPermissions requiredPermission) {
|
||||
super(requiredPermission);
|
||||
this.tileEntityClass = tileEntityClass;
|
||||
this.factory = factory;
|
||||
this.requiredPermission = requiredPermission;
|
||||
}
|
||||
|
||||
/**
|
||||
* Opens a container that is based around a single tile entity.
|
||||
* The tile entity's position is encoded in the packet buffer.
|
||||
*/
|
||||
public C fromNetwork(int windowId, PlayerInventory inv, PacketBuffer packetBuf) {
|
||||
BlockPos pos = packetBuf.readBlockPos();
|
||||
TileEntity te = inv.player.world.getTileEntity(pos);
|
||||
if (tileEntityClass.isInstance(te)) {
|
||||
return factory.create(windowId, inv, tileEntityClass.cast(te));
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public boolean open(PlayerEntity player, ContainerLocator locator) {
|
||||
if (!(player instanceof ServerPlayerEntity)) {
|
||||
// Cannot open containers on the client or for non-players
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!locator.hasBlockPos()) {
|
||||
return false; // No block was clicked
|
||||
}
|
||||
|
||||
TileEntity tileEntity = player.world.getTileEntity(locator.getBlockPos());
|
||||
if (!tileEntityClass.isInstance(tileEntity)) {
|
||||
return false; // Wrong tile entity at block position
|
||||
}
|
||||
T te = tileEntityClass.cast(tileEntity);
|
||||
|
||||
if (!checkPermission(player, te)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// Use block name at position
|
||||
ITextComponent title = player.world.getBlockState(locator.getBlockPos()).getBlock().getNameTextComponent();
|
||||
|
||||
INamedContainerProvider container = new SimpleNamedContainerProvider(
|
||||
(wnd, p, pl) -> {
|
||||
C c = factory.create(wnd, p, te);
|
||||
// Set the original locator on the opened server-side container for it to more
|
||||
// easily remember how to re-open after being closed.
|
||||
c.setLocator(locator);
|
||||
return c;
|
||||
}, title
|
||||
);
|
||||
NetworkHooks.openGui((ServerPlayerEntity) player, container, locator.getBlockPos());
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@FunctionalInterface
|
||||
public interface ContainerFactory<T, C> {
|
||||
C create(int windowId, PlayerInventory playerInv, T tileEntity);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -22,7 +22,7 @@ package appeng.container.implementations;
|
||||
import java.util.Iterator;
|
||||
|
||||
import appeng.container.ContainerLocator;
|
||||
import appeng.container.helper.TileContainerHelper;
|
||||
import appeng.container.implementations.ContainerHelper;
|
||||
import appeng.util.EnumCycler;
|
||||
import net.minecraft.entity.player.PlayerEntity;
|
||||
import net.minecraft.entity.player.ServerPlayerEntity;
|
||||
@@ -60,8 +60,8 @@ public class ContainerCellWorkbench extends ContainerUpgradeable
|
||||
|
||||
public static ContainerType<ContainerCellWorkbench> TYPE;
|
||||
|
||||
private static final TileContainerHelper<ContainerCellWorkbench, TileCellWorkbench> helper
|
||||
= new TileContainerHelper<>(ContainerCellWorkbench::new, TileCellWorkbench.class);
|
||||
private static final ContainerHelper<ContainerCellWorkbench, TileCellWorkbench> helper
|
||||
= new ContainerHelper<>(ContainerCellWorkbench::new, TileCellWorkbench.class);
|
||||
|
||||
private final TileCellWorkbench workBench;
|
||||
@GuiSync( 2 )
|
||||
|
||||
@@ -21,7 +21,7 @@ package appeng.container.implementations;
|
||||
|
||||
import appeng.api.config.SecurityPermissions;
|
||||
import appeng.container.ContainerLocator;
|
||||
import appeng.container.helper.TileContainerHelper;
|
||||
import appeng.container.implementations.ContainerHelper;
|
||||
import net.minecraft.entity.player.PlayerEntity;
|
||||
import net.minecraft.entity.player.PlayerInventory;
|
||||
|
||||
@@ -37,8 +37,8 @@ public class ContainerChest extends AEBaseContainer
|
||||
|
||||
public static ContainerType<ContainerChest> TYPE;
|
||||
|
||||
private static final TileContainerHelper<ContainerChest, TileChest> helper
|
||||
= new TileContainerHelper<>(ContainerChest::new, TileChest.class, SecurityPermissions.BUILD);
|
||||
private static final ContainerHelper<ContainerChest, TileChest> helper
|
||||
= new ContainerHelper<>(ContainerChest::new, TileChest.class, SecurityPermissions.BUILD);
|
||||
|
||||
public ContainerChest( int id, final PlayerInventory ip, final TileChest chest )
|
||||
{
|
||||
|
||||
@@ -24,7 +24,7 @@ import appeng.api.config.Settings;
|
||||
import appeng.container.AEBaseContainer;
|
||||
import appeng.container.ContainerLocator;
|
||||
import appeng.container.guisync.GuiSync;
|
||||
import appeng.container.helper.TileContainerHelper;
|
||||
import appeng.container.implementations.ContainerHelper;
|
||||
import appeng.container.interfaces.IProgressProvider;
|
||||
import appeng.container.slot.SlotOutput;
|
||||
import appeng.container.slot.SlotRestrictedInput;
|
||||
@@ -42,8 +42,8 @@ public class ContainerCondenser extends AEBaseContainer implements IProgressProv
|
||||
|
||||
public static ContainerType<ContainerCondenser> TYPE;
|
||||
|
||||
private static final TileContainerHelper<ContainerCondenser, TileCondenser> helper
|
||||
= new TileContainerHelper<>(ContainerCondenser::new, TileCondenser.class);
|
||||
private static final ContainerHelper<ContainerCondenser, TileCondenser> helper
|
||||
= new ContainerHelper<>(ContainerCondenser::new, TileCondenser.class);
|
||||
|
||||
private final TileCondenser condenser;
|
||||
@GuiSync( 0 )
|
||||
|
||||
@@ -22,7 +22,6 @@ package appeng.container.implementations;
|
||||
import javax.annotation.Nonnull;
|
||||
|
||||
import appeng.container.ContainerLocator;
|
||||
import appeng.container.helper.ContainerHelper;
|
||||
import net.minecraft.entity.player.PlayerEntity;
|
||||
import net.minecraft.entity.player.PlayerInventory;
|
||||
import net.minecraft.inventory.container.ContainerType;
|
||||
|
||||
@@ -39,7 +39,6 @@ import appeng.container.AEBaseContainer;
|
||||
import appeng.container.ContainerLocator;
|
||||
import appeng.container.ContainerOpener;
|
||||
import appeng.container.guisync.GuiSync;
|
||||
import appeng.container.helper.ContainerHelper;
|
||||
import appeng.core.AELog;
|
||||
import appeng.core.sync.network.NetworkHandler;
|
||||
import appeng.core.sync.packets.PacketMEInventoryUpdate;
|
||||
|
||||
@@ -24,7 +24,7 @@ import java.io.IOException;
|
||||
import appeng.api.AEApi;
|
||||
import appeng.api.config.SecurityPermissions;
|
||||
import appeng.container.ContainerLocator;
|
||||
import appeng.container.helper.TileContainerHelper;
|
||||
import appeng.container.implementations.ContainerHelper;
|
||||
import net.minecraft.entity.player.PlayerEntity;
|
||||
import net.minecraft.entity.player.ServerPlayerEntity;
|
||||
import net.minecraft.entity.player.PlayerInventory;
|
||||
@@ -41,7 +41,6 @@ import appeng.api.storage.data.IAEItemStack;
|
||||
import appeng.api.storage.data.IItemList;
|
||||
import appeng.container.AEBaseContainer;
|
||||
import appeng.container.guisync.GuiSync;
|
||||
import appeng.core.AELog;
|
||||
import appeng.core.sync.network.NetworkHandler;
|
||||
import appeng.core.sync.packets.PacketMEInventoryUpdate;
|
||||
import appeng.core.sync.packets.PacketValueConfig;
|
||||
@@ -61,8 +60,8 @@ public class ContainerCraftingCPU extends AEBaseContainer implements IMEMonitorH
|
||||
|
||||
public static ContainerType<ContainerCraftingCPU> TYPE;
|
||||
|
||||
private static final TileContainerHelper<ContainerCraftingCPU, TileCraftingTile> helper
|
||||
= new TileContainerHelper<>(ContainerCraftingCPU::new, TileCraftingTile.class, SecurityPermissions.CRAFT);
|
||||
private static final ContainerHelper<ContainerCraftingCPU, TileCraftingTile> helper
|
||||
= new ContainerHelper<>(ContainerCraftingCPU::new, TileCraftingTile.class, SecurityPermissions.CRAFT);
|
||||
|
||||
private final IItemList<IAEItemStack> list = AEApi.instance().storage().getStorageChannel( IItemStorageChannel.class ).createList();
|
||||
private IGrid network;
|
||||
|
||||
@@ -25,7 +25,6 @@ import java.util.List;
|
||||
|
||||
import appeng.api.config.SecurityPermissions;
|
||||
import appeng.container.ContainerLocator;
|
||||
import appeng.container.helper.ContainerHelper;
|
||||
import com.google.common.collect.ImmutableSet;
|
||||
|
||||
import net.minecraft.entity.player.PlayerEntity;
|
||||
|
||||
@@ -21,7 +21,6 @@ package appeng.container.implementations;
|
||||
|
||||
import appeng.api.config.SecurityPermissions;
|
||||
import appeng.container.ContainerLocator;
|
||||
import appeng.container.helper.ContainerHelper;
|
||||
import net.minecraft.entity.player.PlayerEntity;
|
||||
import net.minecraft.entity.player.PlayerInventory;
|
||||
import net.minecraft.inventory.IInventory;
|
||||
|
||||
@@ -20,7 +20,7 @@ package appeng.container.implementations;
|
||||
|
||||
|
||||
import appeng.container.ContainerLocator;
|
||||
import appeng.container.helper.TileContainerHelper;
|
||||
import appeng.container.implementations.ContainerHelper;
|
||||
import net.minecraft.entity.player.PlayerEntity;
|
||||
import net.minecraft.entity.player.PlayerInventory;
|
||||
|
||||
@@ -36,8 +36,8 @@ public class ContainerDrive extends AEBaseContainer
|
||||
|
||||
public static ContainerType<ContainerDrive> TYPE;
|
||||
|
||||
private static final TileContainerHelper<ContainerDrive, TileDrive> helper
|
||||
= new TileContainerHelper<>(ContainerDrive::new, TileDrive.class);
|
||||
private static final ContainerHelper<ContainerDrive, TileDrive> helper
|
||||
= new ContainerHelper<>(ContainerDrive::new, TileDrive.class);
|
||||
|
||||
public static ContainerDrive fromNetwork(int windowId, PlayerInventory inv, PacketBuffer buf) {
|
||||
return helper.fromNetwork(windowId, inv, buf);
|
||||
|
||||
@@ -20,7 +20,7 @@ package appeng.container.implementations;
|
||||
|
||||
|
||||
import appeng.container.ContainerLocator;
|
||||
import appeng.container.helper.PartContainerHelper;
|
||||
import appeng.container.implementations.ContainerHelper;
|
||||
import net.minecraft.entity.player.PlayerEntity;
|
||||
import net.minecraft.entity.player.PlayerInventory;
|
||||
import net.minecraft.inventory.container.ContainerType;
|
||||
@@ -45,8 +45,8 @@ public class ContainerFormationPlane extends ContainerUpgradeable
|
||||
|
||||
public static ContainerType<ContainerFormationPlane> TYPE;
|
||||
|
||||
private static final PartContainerHelper<ContainerFormationPlane, PartFormationPlane> helper
|
||||
= new PartContainerHelper<>(ContainerFormationPlane::new, PartFormationPlane.class, SecurityPermissions.BUILD);
|
||||
private static final ContainerHelper<ContainerFormationPlane, PartFormationPlane> helper
|
||||
= new ContainerHelper<>(ContainerFormationPlane::new, PartFormationPlane.class, SecurityPermissions.BUILD);
|
||||
|
||||
public static ContainerFormationPlane fromNetwork(int windowId, PlayerInventory inv, PacketBuffer buf) {
|
||||
return helper.fromNetwork(windowId, inv, buf);
|
||||
|
||||
@@ -20,7 +20,7 @@ package appeng.container.implementations;
|
||||
|
||||
|
||||
import appeng.container.ContainerLocator;
|
||||
import appeng.container.helper.TileContainerHelper;
|
||||
import appeng.container.implementations.ContainerHelper;
|
||||
import net.minecraft.entity.player.PlayerEntity;
|
||||
import net.minecraft.entity.player.PlayerInventory;
|
||||
import net.minecraft.inventory.container.ContainerType;
|
||||
@@ -38,8 +38,8 @@ public class ContainerGrinder extends AEBaseContainer
|
||||
|
||||
public static ContainerType<ContainerGrinder> TYPE;
|
||||
|
||||
private static final TileContainerHelper<ContainerGrinder, TileGrinder> helper
|
||||
= new TileContainerHelper<>(ContainerGrinder::new, TileGrinder.class);
|
||||
private static final ContainerHelper<ContainerGrinder, TileGrinder> helper
|
||||
= new ContainerHelper<>(ContainerGrinder::new, TileGrinder.class);
|
||||
|
||||
public static ContainerGrinder fromNetwork(int windowId, PlayerInventory inv, PacketBuffer buf) {
|
||||
return helper.fromNetwork(windowId, inv, buf);
|
||||
|
||||
+26
-8
@@ -1,4 +1,4 @@
|
||||
package appeng.container.helper;
|
||||
package appeng.container.implementations;
|
||||
|
||||
import appeng.api.AEApi;
|
||||
import appeng.api.config.SecurityPermissions;
|
||||
@@ -12,6 +12,7 @@ import appeng.container.ContainerLocator;
|
||||
import appeng.core.AELog;
|
||||
import appeng.helpers.ICustomNameObject;
|
||||
import appeng.helpers.WirelessTerminalGuiObject;
|
||||
import appeng.util.Platform;
|
||||
import net.minecraft.entity.player.PlayerEntity;
|
||||
import net.minecraft.entity.player.PlayerInventory;
|
||||
import net.minecraft.entity.player.ServerPlayerEntity;
|
||||
@@ -23,7 +24,6 @@ import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
import net.minecraft.util.text.ITextComponent;
|
||||
import net.minecraft.util.text.StringTextComponent;
|
||||
import net.minecraft.world.IWorld;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraftforge.fml.network.NetworkHooks;
|
||||
|
||||
@@ -33,18 +33,20 @@ import net.minecraftforge.fml.network.NetworkHooks;
|
||||
*
|
||||
* @param <C>
|
||||
*/
|
||||
public final class ContainerHelper<C extends AEBaseContainer, I> extends AbstractContainerHelper {
|
||||
public final class ContainerHelper<C extends AEBaseContainer, I> {
|
||||
|
||||
private final Class<I> interfaceClass;
|
||||
|
||||
private final ContainerFactory<C, I> factory;
|
||||
|
||||
private final SecurityPermissions requiredPermission;
|
||||
|
||||
public ContainerHelper(ContainerFactory<C, I> factory, Class<I> interfaceClass) {
|
||||
this(factory, interfaceClass, null);
|
||||
}
|
||||
|
||||
public ContainerHelper(ContainerFactory<C, I> factory, Class<I> interfaceClass, SecurityPermissions requiredPermission) {
|
||||
super(requiredPermission);
|
||||
this.requiredPermission = requiredPermission;
|
||||
this.interfaceClass = interfaceClass;
|
||||
this.factory = factory;
|
||||
}
|
||||
@@ -119,9 +121,8 @@ public final class ContainerHelper<C extends AEBaseContainer, I> extends Abstrac
|
||||
return getHostFromPlayerInventory(player, locator);
|
||||
}
|
||||
|
||||
if (!locator.hasBlockPos() || !locator.hasSide()) {
|
||||
return null; // No block was clicked or the side is unknown
|
||||
// FIXME: If no side is provided, should be try with INTERNAL???
|
||||
if (!locator.hasBlockPos()) {
|
||||
return null; // No block was clicked
|
||||
}
|
||||
|
||||
TileEntity tileEntity = player.world.getTileEntity(locator.getBlockPos());
|
||||
@@ -129,7 +130,13 @@ public final class ContainerHelper<C extends AEBaseContainer, I> extends Abstrac
|
||||
// The tile entity itself can host a terminal (i.e. Chest!)
|
||||
if (interfaceClass.isInstance(tileEntity)) {
|
||||
return interfaceClass.cast(tileEntity);
|
||||
} else if (tileEntity instanceof IPartHost) {
|
||||
}
|
||||
|
||||
if (!locator.hasSide()) {
|
||||
return null;
|
||||
}
|
||||
|
||||
if (tileEntity instanceof IPartHost) {
|
||||
// But it could also be a part attached to the tile entity
|
||||
IPartHost partHost = (IPartHost) tileEntity;
|
||||
IPart part = partHost.getPart(locator.getSide());
|
||||
@@ -187,4 +194,15 @@ public final class ContainerHelper<C extends AEBaseContainer, I> extends Abstrac
|
||||
C create(int windowId, PlayerInventory playerInv, I accessObj);
|
||||
}
|
||||
|
||||
private boolean checkPermission(PlayerEntity player, Object accessInterface) {
|
||||
|
||||
if (requiredPermission != null)
|
||||
{
|
||||
return Platform.checkPermissions(player, accessInterface, requiredPermission, true);
|
||||
}
|
||||
|
||||
return true;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -20,7 +20,7 @@ package appeng.container.implementations;
|
||||
|
||||
|
||||
import appeng.container.ContainerLocator;
|
||||
import appeng.container.helper.TileContainerHelper;
|
||||
import appeng.container.implementations.ContainerHelper;
|
||||
import net.minecraft.entity.player.PlayerEntity;
|
||||
import net.minecraft.entity.player.PlayerInventory;
|
||||
import net.minecraft.inventory.container.ContainerType;
|
||||
@@ -44,8 +44,8 @@ public class ContainerIOPort extends ContainerUpgradeable
|
||||
|
||||
public static ContainerType<ContainerIOPort> TYPE;
|
||||
|
||||
private static final TileContainerHelper<ContainerIOPort, TileIOPort> helper
|
||||
= new TileContainerHelper<>(ContainerIOPort::new, TileIOPort.class, SecurityPermissions.BUILD);
|
||||
private static final ContainerHelper<ContainerIOPort, TileIOPort> helper
|
||||
= new ContainerHelper<>(ContainerIOPort::new, TileIOPort.class, SecurityPermissions.BUILD);
|
||||
|
||||
public static ContainerIOPort fromNetwork(int windowId, PlayerInventory inv, PacketBuffer buf) {
|
||||
return helper.fromNetwork(windowId, inv, buf);
|
||||
|
||||
@@ -23,7 +23,7 @@ import appeng.api.AEApi;
|
||||
import appeng.api.definitions.IItemDefinition;
|
||||
import appeng.container.ContainerLocator;
|
||||
import appeng.container.guisync.GuiSync;
|
||||
import appeng.container.helper.TileContainerHelper;
|
||||
import appeng.container.implementations.ContainerHelper;
|
||||
import appeng.container.interfaces.IProgressProvider;
|
||||
import appeng.container.slot.SlotOutput;
|
||||
import appeng.container.slot.SlotRestrictedInput;
|
||||
@@ -50,8 +50,8 @@ public class ContainerInscriber extends ContainerUpgradeable implements IProgres
|
||||
|
||||
public static ContainerType<ContainerInscriber> TYPE;
|
||||
|
||||
private static final TileContainerHelper<ContainerInscriber, TileInscriber> helper
|
||||
= new TileContainerHelper<>(ContainerInscriber::new, TileInscriber.class);
|
||||
private static final ContainerHelper<ContainerInscriber, TileInscriber> helper
|
||||
= new ContainerHelper<>(ContainerInscriber::new, TileInscriber.class);
|
||||
|
||||
public static ContainerInscriber fromNetwork(int windowId, PlayerInventory inv, PacketBuffer buf) {
|
||||
return helper.fromNetwork(windowId, inv, buf);
|
||||
|
||||
@@ -20,7 +20,6 @@ package appeng.container.implementations;
|
||||
|
||||
|
||||
import appeng.container.ContainerLocator;
|
||||
import appeng.container.helper.ContainerHelper;
|
||||
import net.minecraft.entity.player.PlayerEntity;
|
||||
import net.minecraft.entity.player.PlayerInventory;
|
||||
|
||||
|
||||
@@ -26,8 +26,6 @@ import java.util.Map.Entry;
|
||||
|
||||
import appeng.api.config.SecurityPermissions;
|
||||
import appeng.container.ContainerLocator;
|
||||
import appeng.container.helper.PartContainerHelper;
|
||||
import appeng.container.helper.TileContainerHelper;
|
||||
import net.minecraft.entity.player.PlayerEntity;
|
||||
import net.minecraft.entity.player.ServerPlayerEntity;
|
||||
import net.minecraft.entity.player.PlayerInventory;
|
||||
@@ -68,8 +66,8 @@ public final class ContainerInterfaceTerminal extends AEBaseContainer
|
||||
|
||||
public static ContainerType<ContainerInterfaceTerminal> TYPE;
|
||||
|
||||
private static final PartContainerHelper<ContainerInterfaceTerminal, PartInterfaceTerminal> helper
|
||||
= new PartContainerHelper<>(ContainerInterfaceTerminal::new, PartInterfaceTerminal.class, SecurityPermissions.BUILD);
|
||||
private static final ContainerHelper<ContainerInterfaceTerminal, PartInterfaceTerminal> helper
|
||||
= new ContainerHelper<>(ContainerInterfaceTerminal::new, PartInterfaceTerminal.class, SecurityPermissions.BUILD);
|
||||
|
||||
public static ContainerInterfaceTerminal fromNetwork(int windowId, PlayerInventory inv, PacketBuffer buf) {
|
||||
return helper.fromNetwork(windowId, inv, buf);
|
||||
|
||||
@@ -20,8 +20,6 @@ package appeng.container.implementations;
|
||||
|
||||
|
||||
import appeng.container.ContainerLocator;
|
||||
import appeng.container.helper.PartContainerHelper;
|
||||
import appeng.container.helper.TileContainerHelper;
|
||||
import net.minecraft.client.gui.widget.TextFieldWidget;
|
||||
import net.minecraft.entity.player.PlayerEntity;
|
||||
import net.minecraft.entity.player.PlayerInventory;
|
||||
@@ -49,8 +47,8 @@ public class ContainerLevelEmitter extends ContainerUpgradeable
|
||||
|
||||
public static ContainerType<ContainerLevelEmitter> TYPE;
|
||||
|
||||
private static final PartContainerHelper<ContainerLevelEmitter, PartLevelEmitter> helper
|
||||
= new PartContainerHelper<>(ContainerLevelEmitter::new, PartLevelEmitter.class, SecurityPermissions.BUILD);
|
||||
private static final ContainerHelper<ContainerLevelEmitter, PartLevelEmitter> helper
|
||||
= new ContainerHelper<>(ContainerLevelEmitter::new, PartLevelEmitter.class, SecurityPermissions.BUILD);
|
||||
|
||||
public static ContainerLevelEmitter fromNetwork(int windowId, PlayerInventory inv, PacketBuffer buf) {
|
||||
return helper.fromNetwork(windowId, inv, buf);
|
||||
|
||||
@@ -25,7 +25,7 @@ import appeng.api.config.Settings;
|
||||
import appeng.api.networking.crafting.ICraftingPatternDetails;
|
||||
import appeng.container.ContainerLocator;
|
||||
import appeng.container.guisync.GuiSync;
|
||||
import appeng.container.helper.TileContainerHelper;
|
||||
import appeng.container.implementations.ContainerHelper;
|
||||
import appeng.container.interfaces.IProgressProvider;
|
||||
import appeng.container.slot.SlotMACPattern;
|
||||
import appeng.container.slot.SlotOutput;
|
||||
@@ -47,8 +47,8 @@ public class ContainerMAC extends ContainerUpgradeable implements IProgressProvi
|
||||
|
||||
public static ContainerType<ContainerMAC> TYPE;
|
||||
|
||||
private static final TileContainerHelper<ContainerMAC, TileMolecularAssembler> helper
|
||||
= new TileContainerHelper<>(ContainerMAC::new, TileMolecularAssembler.class);
|
||||
private static final ContainerHelper<ContainerMAC, TileMolecularAssembler> helper
|
||||
= new ContainerHelper<>(ContainerMAC::new, TileMolecularAssembler.class);
|
||||
|
||||
public static ContainerMAC fromNetwork(int windowId, PlayerInventory inv, PacketBuffer buf) {
|
||||
return helper.fromNetwork(windowId, inv, buf);
|
||||
|
||||
@@ -26,7 +26,6 @@ import javax.annotation.Nonnull;
|
||||
|
||||
import appeng.api.implementations.guiobjects.IGuiItemObject;
|
||||
import appeng.container.ContainerLocator;
|
||||
import appeng.container.helper.ContainerHelper;
|
||||
import net.minecraft.entity.player.PlayerEntity;
|
||||
import net.minecraft.entity.player.ServerPlayerEntity;
|
||||
import net.minecraft.entity.player.PlayerInventory;
|
||||
|
||||
@@ -20,7 +20,6 @@ package appeng.container.implementations;
|
||||
|
||||
|
||||
import appeng.container.ContainerLocator;
|
||||
import appeng.container.helper.ContainerHelper;
|
||||
import net.minecraft.entity.player.PlayerEntity;
|
||||
import net.minecraft.entity.player.PlayerInventory;
|
||||
import net.minecraft.inventory.container.ContainerType;
|
||||
|
||||
@@ -22,7 +22,6 @@ package appeng.container.implementations;
|
||||
import java.io.IOException;
|
||||
|
||||
import appeng.container.ContainerLocator;
|
||||
import appeng.container.helper.ContainerHelper;
|
||||
import net.minecraft.entity.player.PlayerEntity;
|
||||
import net.minecraft.entity.player.ServerPlayerEntity;
|
||||
import net.minecraft.entity.player.PlayerInventory;
|
||||
|
||||
@@ -23,7 +23,6 @@ import appeng.api.implementations.guiobjects.INetworkTool;
|
||||
import appeng.container.AEBaseContainer;
|
||||
import appeng.container.ContainerLocator;
|
||||
import appeng.container.guisync.GuiSync;
|
||||
import appeng.container.helper.ContainerHelper;
|
||||
import appeng.container.slot.SlotRestrictedInput;
|
||||
import net.minecraft.entity.player.PlayerEntity;
|
||||
import net.minecraft.entity.player.PlayerInventory;
|
||||
|
||||
@@ -31,7 +31,6 @@ import appeng.api.storage.data.IItemList;
|
||||
import appeng.container.ContainerLocator;
|
||||
import appeng.container.ContainerNull;
|
||||
import appeng.container.guisync.GuiSync;
|
||||
import appeng.container.helper.ContainerHelper;
|
||||
import appeng.container.slot.*;
|
||||
import appeng.core.sync.packets.PacketPatternSlot;
|
||||
import appeng.helpers.IContainerCraftingPacket;
|
||||
|
||||
@@ -20,7 +20,6 @@ package appeng.container.implementations;
|
||||
|
||||
|
||||
import appeng.container.ContainerLocator;
|
||||
import appeng.container.helper.ContainerHelper;
|
||||
import net.minecraft.client.gui.widget.TextFieldWidget;
|
||||
import net.minecraft.entity.player.PlayerEntity;
|
||||
import net.minecraft.entity.player.PlayerInventory;
|
||||
|
||||
@@ -21,7 +21,7 @@ package appeng.container.implementations;
|
||||
|
||||
import appeng.api.config.SecurityPermissions;
|
||||
import appeng.container.ContainerLocator;
|
||||
import appeng.container.helper.TileContainerHelper;
|
||||
import appeng.container.implementations.ContainerHelper;
|
||||
import net.minecraft.entity.player.PlayerEntity;
|
||||
import net.minecraft.entity.player.PlayerInventory;
|
||||
|
||||
@@ -37,8 +37,8 @@ public class ContainerQNB extends AEBaseContainer
|
||||
|
||||
public static ContainerType<ContainerQNB> TYPE;
|
||||
|
||||
private static final TileContainerHelper<ContainerQNB, TileQuantumBridge> helper
|
||||
= new TileContainerHelper<>(ContainerQNB::new, TileQuantumBridge.class, SecurityPermissions.BUILD);
|
||||
private static final ContainerHelper<ContainerQNB, TileQuantumBridge> helper
|
||||
= new ContainerHelper<>(ContainerQNB::new, TileQuantumBridge.class, SecurityPermissions.BUILD);
|
||||
|
||||
public static ContainerQNB fromNetwork(int windowId, PlayerInventory inv, PacketBuffer buf) {
|
||||
return helper.fromNetwork(windowId, inv, buf);
|
||||
|
||||
@@ -22,7 +22,6 @@ package appeng.container.implementations;
|
||||
import javax.annotation.Nonnull;
|
||||
|
||||
import appeng.container.ContainerLocator;
|
||||
import appeng.container.helper.ContainerHelper;
|
||||
import net.minecraft.entity.player.PlayerEntity;
|
||||
import net.minecraft.entity.player.PlayerInventory;
|
||||
import net.minecraft.inventory.container.ContainerType;
|
||||
|
||||
@@ -20,7 +20,6 @@ package appeng.container.implementations;
|
||||
|
||||
|
||||
import appeng.container.ContainerLocator;
|
||||
import appeng.container.helper.ContainerHelper;
|
||||
import net.minecraft.entity.player.PlayerEntity;
|
||||
import net.minecraft.entity.player.PlayerInventory;
|
||||
import net.minecraft.inventory.container.ContainerType;
|
||||
|
||||
@@ -20,7 +20,7 @@ package appeng.container.implementations;
|
||||
|
||||
|
||||
import appeng.container.ContainerLocator;
|
||||
import appeng.container.helper.TileContainerHelper;
|
||||
import appeng.container.implementations.ContainerHelper;
|
||||
import net.minecraft.entity.player.PlayerEntity;
|
||||
import net.minecraft.entity.player.PlayerInventory;
|
||||
|
||||
@@ -36,8 +36,8 @@ public class ContainerSkyChest extends AEBaseContainer
|
||||
|
||||
public static ContainerType<ContainerSkyChest> TYPE;
|
||||
|
||||
private static final TileContainerHelper<ContainerSkyChest, TileSkyChest> helper
|
||||
= new TileContainerHelper<>(ContainerSkyChest::new, TileSkyChest.class);
|
||||
private static final ContainerHelper<ContainerSkyChest, TileSkyChest> helper
|
||||
= new ContainerHelper<>(ContainerSkyChest::new, TileSkyChest.class);
|
||||
|
||||
|
||||
private final TileSkyChest chest;
|
||||
|
||||
@@ -20,7 +20,7 @@ package appeng.container.implementations;
|
||||
|
||||
|
||||
import appeng.container.ContainerLocator;
|
||||
import appeng.container.helper.TileContainerHelper;
|
||||
import appeng.container.implementations.ContainerHelper;
|
||||
import net.minecraft.entity.player.PlayerEntity;
|
||||
import net.minecraft.entity.player.PlayerInventory;
|
||||
|
||||
@@ -45,8 +45,8 @@ public class ContainerSpatialIOPort extends AEBaseContainer
|
||||
|
||||
public static ContainerType<ContainerSpatialIOPort> TYPE;
|
||||
|
||||
private static final TileContainerHelper<ContainerSpatialIOPort, TileSpatialIOPort> helper
|
||||
= new TileContainerHelper<>(ContainerSpatialIOPort::new, TileSpatialIOPort.class, SecurityPermissions.BUILD);
|
||||
private static final ContainerHelper<ContainerSpatialIOPort, TileSpatialIOPort> helper
|
||||
= new ContainerHelper<>(ContainerSpatialIOPort::new, TileSpatialIOPort.class, SecurityPermissions.BUILD);
|
||||
|
||||
@GuiSync( 0 )
|
||||
public long currentPower;
|
||||
|
||||
@@ -22,8 +22,6 @@ package appeng.container.implementations;
|
||||
import java.util.Iterator;
|
||||
|
||||
import appeng.container.ContainerLocator;
|
||||
import appeng.container.helper.PartContainerHelper;
|
||||
import appeng.container.helper.TileContainerHelper;
|
||||
import net.minecraft.entity.player.PlayerEntity;
|
||||
import net.minecraft.entity.player.PlayerInventory;
|
||||
import net.minecraft.inventory.container.ContainerType;
|
||||
@@ -57,8 +55,8 @@ public class ContainerStorageBus extends ContainerUpgradeable
|
||||
|
||||
public static ContainerType<ContainerStorageBus> TYPE;
|
||||
|
||||
private static final PartContainerHelper<ContainerStorageBus, PartStorageBus> helper
|
||||
= new PartContainerHelper<>(ContainerStorageBus::new, PartStorageBus.class, SecurityPermissions.BUILD);
|
||||
private static final ContainerHelper<ContainerStorageBus, PartStorageBus> helper
|
||||
= new ContainerHelper<>(ContainerStorageBus::new, PartStorageBus.class, SecurityPermissions.BUILD);
|
||||
|
||||
public static ContainerStorageBus fromNetwork(int windowId, PlayerInventory inv, PacketBuffer buf) {
|
||||
return helper.fromNetwork(windowId, inv, buf);
|
||||
|
||||
@@ -20,7 +20,6 @@ package appeng.container.implementations;
|
||||
|
||||
|
||||
import appeng.container.ContainerLocator;
|
||||
import appeng.container.helper.ContainerHelper;
|
||||
import net.minecraft.entity.player.PlayerEntity;
|
||||
import net.minecraft.entity.player.PlayerInventory;
|
||||
import net.minecraft.inventory.IInventory;
|
||||
|
||||
@@ -20,7 +20,7 @@ package appeng.container.implementations;
|
||||
|
||||
|
||||
import appeng.container.ContainerLocator;
|
||||
import appeng.container.helper.TileContainerHelper;
|
||||
import appeng.container.implementations.ContainerHelper;
|
||||
import net.minecraft.entity.player.PlayerEntity;
|
||||
import net.minecraft.entity.player.PlayerInventory;
|
||||
|
||||
@@ -39,8 +39,8 @@ public class ContainerVibrationChamber extends AEBaseContainer implements IProgr
|
||||
|
||||
public static ContainerType<ContainerVibrationChamber> TYPE;
|
||||
|
||||
private static final TileContainerHelper<ContainerVibrationChamber, TileVibrationChamber> helper
|
||||
= new TileContainerHelper<>(ContainerVibrationChamber::new, TileVibrationChamber.class);
|
||||
private static final ContainerHelper<ContainerVibrationChamber, TileVibrationChamber> helper
|
||||
= new ContainerHelper<>(ContainerVibrationChamber::new, TileVibrationChamber.class);
|
||||
|
||||
public static ContainerVibrationChamber fromNetwork(int windowId, PlayerInventory inv, PacketBuffer buf) {
|
||||
return helper.fromNetwork(windowId, inv, buf);
|
||||
|
||||
@@ -21,7 +21,7 @@ package appeng.container.implementations;
|
||||
|
||||
import appeng.api.config.SecurityPermissions;
|
||||
import appeng.container.ContainerLocator;
|
||||
import appeng.container.helper.TileContainerHelper;
|
||||
import appeng.container.implementations.ContainerHelper;
|
||||
import net.minecraft.entity.player.PlayerEntity;
|
||||
import net.minecraft.entity.player.PlayerInventory;
|
||||
|
||||
@@ -39,8 +39,8 @@ public class ContainerWireless extends AEBaseContainer
|
||||
|
||||
public static ContainerType<ContainerWireless> TYPE;
|
||||
|
||||
private static final TileContainerHelper<ContainerWireless, TileWireless> helper
|
||||
= new TileContainerHelper<>(ContainerWireless::new, TileWireless.class, SecurityPermissions.BUILD);
|
||||
private static final ContainerHelper<ContainerWireless, TileWireless> helper
|
||||
= new ContainerHelper<>(ContainerWireless::new, TileWireless.class, SecurityPermissions.BUILD);
|
||||
|
||||
public static ContainerWireless fromNetwork(int windowId, PlayerInventory inv, PacketBuffer buf) {
|
||||
return helper.fromNetwork(windowId, inv, buf);
|
||||
|
||||
@@ -20,7 +20,6 @@ package appeng.container.implementations;
|
||||
|
||||
|
||||
import appeng.container.ContainerLocator;
|
||||
import appeng.container.helper.ContainerHelper;
|
||||
import net.minecraft.entity.player.PlayerEntity;
|
||||
import net.minecraft.entity.player.PlayerInventory;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user