Add permission system
This commit is contained in:
@@ -31,6 +31,9 @@ import net.minecraft.util.math.AxisAlignedBB;
|
|||||||
import net.minecraft.util.math.BlockPos;
|
import net.minecraft.util.math.BlockPos;
|
||||||
import net.minecraft.util.math.RayTraceResult;
|
import net.minecraft.util.math.RayTraceResult;
|
||||||
import net.minecraft.util.math.Vec3d;
|
import net.minecraft.util.math.Vec3d;
|
||||||
|
import net.minecraft.util.text.Style;
|
||||||
|
import net.minecraft.util.text.TextComponentTranslation;
|
||||||
|
import net.minecraft.util.text.TextFormatting;
|
||||||
import net.minecraftforge.common.util.Constants;
|
import net.minecraftforge.common.util.Constants;
|
||||||
import net.minecraftforge.fluids.Fluid;
|
import net.minecraftforge.fluids.Fluid;
|
||||||
import net.minecraftforge.fluids.FluidRegistry;
|
import net.minecraftforge.fluids.FluidRegistry;
|
||||||
@@ -299,6 +302,10 @@ public final class RSUtils {
|
|||||||
return stack == null ? null : stack.copy();
|
return stack == null ? null : stack.copy();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static void sendNoPermissionMessage(EntityPlayer player) {
|
||||||
|
player.sendMessage(new TextComponentTranslation("misc.refinedstorage:security.no_permission").setStyle(new Style().setColor(TextFormatting.RED)));
|
||||||
|
}
|
||||||
|
|
||||||
public static String formatQuantity(int qty) {
|
public static String formatQuantity(int qty) {
|
||||||
if (qty >= 1000000) {
|
if (qty >= 1000000) {
|
||||||
return QUANTITY_FORMATTER.format((float) qty / 1000000F) + "M";
|
return QUANTITY_FORMATTER.format((float) qty / 1000000F) + "M";
|
||||||
|
|||||||
@@ -9,6 +9,7 @@ import com.raoulvdberge.refinedstorage.api.network.readerwriter.IReaderWriterCha
|
|||||||
import com.raoulvdberge.refinedstorage.api.storage.IStorageCache;
|
import com.raoulvdberge.refinedstorage.api.storage.IStorageCache;
|
||||||
import com.raoulvdberge.refinedstorage.api.util.IComparer;
|
import com.raoulvdberge.refinedstorage.api.util.IComparer;
|
||||||
import com.raoulvdberge.refinedstorage.apiimpl.API;
|
import com.raoulvdberge.refinedstorage.apiimpl.API;
|
||||||
|
import net.minecraft.entity.player.EntityPlayer;
|
||||||
import net.minecraft.entity.player.EntityPlayerMP;
|
import net.minecraft.entity.player.EntityPlayerMP;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
import net.minecraft.util.math.BlockPos;
|
import net.minecraft.util.math.BlockPos;
|
||||||
@@ -38,6 +39,13 @@ public interface INetworkMaster {
|
|||||||
*/
|
*/
|
||||||
boolean canRun();
|
boolean canRun();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param permission the permission to check for
|
||||||
|
* @param player the player to check that permission for
|
||||||
|
* @return whether the player has the given permission
|
||||||
|
*/
|
||||||
|
boolean hasPermission(Permission permission, EntityPlayer player);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return a graph of connected nodes to this network
|
* @return a graph of connected nodes to this network
|
||||||
*/
|
*/
|
||||||
|
|||||||
27
src/main/java/com/raoulvdberge/refinedstorage/api/network/Permission.java
Executable file
27
src/main/java/com/raoulvdberge/refinedstorage/api/network/Permission.java
Executable file
@@ -0,0 +1,27 @@
|
|||||||
|
package com.raoulvdberge.refinedstorage.api.network;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The various permissions a player can have in a network.
|
||||||
|
*/
|
||||||
|
public enum Permission {
|
||||||
|
/**
|
||||||
|
* Whether the player can insert items in a network.
|
||||||
|
*/
|
||||||
|
INSERT,
|
||||||
|
/**
|
||||||
|
* Whether the player can extract items from a network.
|
||||||
|
*/
|
||||||
|
EXTRACT,
|
||||||
|
/**
|
||||||
|
* Whether the player can start, cancel or view an autocrafting task.
|
||||||
|
*/
|
||||||
|
AUTOCRAFT,
|
||||||
|
/**
|
||||||
|
* Whether the player can open network GUIs and can place or break network blocks.
|
||||||
|
*/
|
||||||
|
MODIFY,
|
||||||
|
/**
|
||||||
|
* Whether the player can manage the security options for a network.
|
||||||
|
*/
|
||||||
|
SECURITY
|
||||||
|
}
|
||||||
@@ -52,10 +52,11 @@ public interface IItemGridHandler {
|
|||||||
/**
|
/**
|
||||||
* Called when a player requested crafting for an item.
|
* Called when a player requested crafting for an item.
|
||||||
*
|
*
|
||||||
|
* @param player the player that is requesting the crafting
|
||||||
* @param stack the {@link ItemStack} to request a craft for
|
* @param stack the {@link ItemStack} to request a craft for
|
||||||
* @param quantity the amount of that item that has to be crafted
|
* @param quantity the amount of that item that has to be crafted
|
||||||
*/
|
*/
|
||||||
void onCraftingRequested(ItemStack stack, int quantity);
|
void onCraftingRequested(EntityPlayerMP player, ItemStack stack, int quantity);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Called when a player wants to cancel a crafting task.
|
* Called when a player wants to cancel a crafting task.
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ public interface INetworkItemProvider {
|
|||||||
/**
|
/**
|
||||||
* Creates a network item for the given item stack.
|
* Creates a network item for the given item stack.
|
||||||
*
|
*
|
||||||
* @param handler the network item handlelr
|
* @param handler the network item handler
|
||||||
* @param player the player
|
* @param player the player
|
||||||
* @param stack the stack
|
* @param stack the stack
|
||||||
* @return the network item
|
* @return the network item
|
||||||
|
|||||||
@@ -0,0 +1,53 @@
|
|||||||
|
package com.raoulvdberge.refinedstorage.apiimpl.network;
|
||||||
|
|
||||||
|
import com.raoulvdberge.refinedstorage.RSUtils;
|
||||||
|
import com.raoulvdberge.refinedstorage.api.network.INetworkNode;
|
||||||
|
import com.raoulvdberge.refinedstorage.api.network.Permission;
|
||||||
|
import com.raoulvdberge.refinedstorage.proxy.CapabilityNetworkNode;
|
||||||
|
import net.minecraft.tileentity.TileEntity;
|
||||||
|
import net.minecraft.util.EnumFacing;
|
||||||
|
import net.minecraftforge.event.world.BlockEvent;
|
||||||
|
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
|
||||||
|
|
||||||
|
public class NetworkListener {
|
||||||
|
@SubscribeEvent
|
||||||
|
public void onBlockPlace(BlockEvent.PlaceEvent e) {
|
||||||
|
if (!e.getWorld().isRemote) {
|
||||||
|
for (EnumFacing facing : EnumFacing.VALUES) {
|
||||||
|
TileEntity tile = e.getWorld().getTileEntity(e.getBlockSnapshot().getPos().offset(facing));
|
||||||
|
|
||||||
|
if (tile != null && tile.hasCapability(CapabilityNetworkNode.NETWORK_NODE_CAPABILITY, facing.getOpposite())) {
|
||||||
|
INetworkNode node = tile.getCapability(CapabilityNetworkNode.NETWORK_NODE_CAPABILITY, facing.getOpposite());
|
||||||
|
|
||||||
|
if (node.getNetwork() != null && !node.getNetwork().hasPermission(Permission.MODIFY, e.getPlayer())) {
|
||||||
|
RSUtils.sendNoPermissionMessage(e.getPlayer());
|
||||||
|
|
||||||
|
e.setCanceled(true);
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@SubscribeEvent
|
||||||
|
public void onBlockBreak(BlockEvent.BreakEvent e) {
|
||||||
|
if (!e.getWorld().isRemote) {
|
||||||
|
TileEntity tile = e.getWorld().getTileEntity(e.getPos());
|
||||||
|
|
||||||
|
if (tile != null && tile.hasCapability(CapabilityNetworkNode.NETWORK_NODE_CAPABILITY, null)) {
|
||||||
|
|
||||||
|
INetworkNode node = tile.getCapability(CapabilityNetworkNode.NETWORK_NODE_CAPABILITY, null);
|
||||||
|
|
||||||
|
if (node.getNetwork() != null && !node.getNetwork().hasPermission(Permission.MODIFY, e.getPlayer())) {
|
||||||
|
RSUtils.sendNoPermissionMessage(e.getPlayer());
|
||||||
|
|
||||||
|
e.setCanceled(true);
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -5,6 +5,7 @@ import com.raoulvdberge.refinedstorage.RSUtils;
|
|||||||
import com.raoulvdberge.refinedstorage.api.autocrafting.ICraftingPattern;
|
import com.raoulvdberge.refinedstorage.api.autocrafting.ICraftingPattern;
|
||||||
import com.raoulvdberge.refinedstorage.api.autocrafting.task.ICraftingTask;
|
import com.raoulvdberge.refinedstorage.api.autocrafting.task.ICraftingTask;
|
||||||
import com.raoulvdberge.refinedstorage.api.network.INetworkMaster;
|
import com.raoulvdberge.refinedstorage.api.network.INetworkMaster;
|
||||||
|
import com.raoulvdberge.refinedstorage.api.network.Permission;
|
||||||
import com.raoulvdberge.refinedstorage.api.network.grid.IItemGridHandler;
|
import com.raoulvdberge.refinedstorage.api.network.grid.IItemGridHandler;
|
||||||
import com.raoulvdberge.refinedstorage.api.network.item.INetworkItem;
|
import com.raoulvdberge.refinedstorage.api.network.item.INetworkItem;
|
||||||
import com.raoulvdberge.refinedstorage.api.util.IStackList;
|
import com.raoulvdberge.refinedstorage.api.util.IStackList;
|
||||||
@@ -31,7 +32,7 @@ public class ItemGridHandler implements IItemGridHandler {
|
|||||||
public void onExtract(int hash, int flags, EntityPlayerMP player) {
|
public void onExtract(int hash, int flags, EntityPlayerMP player) {
|
||||||
ItemStack item = network.getItemStorageCache().getList().get(hash);
|
ItemStack item = network.getItemStorageCache().getList().get(hash);
|
||||||
|
|
||||||
if (item == null) {
|
if (item == null || !network.hasPermission(Permission.EXTRACT, player)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -99,6 +100,10 @@ public class ItemGridHandler implements IItemGridHandler {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ItemStack onInsert(EntityPlayerMP player, ItemStack stack) {
|
public ItemStack onInsert(EntityPlayerMP player, ItemStack stack) {
|
||||||
|
if (!network.hasPermission(Permission.INSERT, player)) {
|
||||||
|
return stack;
|
||||||
|
}
|
||||||
|
|
||||||
ItemStack remainder = network.insertItem(stack, stack.getCount(), false);
|
ItemStack remainder = network.insertItem(stack, stack.getCount(), false);
|
||||||
|
|
||||||
INetworkItem networkItem = network.getNetworkItemHandler().getItem(player);
|
INetworkItem networkItem = network.getNetworkItemHandler().getItem(player);
|
||||||
@@ -112,7 +117,7 @@ public class ItemGridHandler implements IItemGridHandler {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onInsertHeldItem(EntityPlayerMP player, boolean single) {
|
public void onInsertHeldItem(EntityPlayerMP player, boolean single) {
|
||||||
if (player.inventory.getItemStack().isEmpty()) {
|
if (player.inventory.getItemStack().isEmpty() || !network.hasPermission(Permission.INSERT, player)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -144,6 +149,10 @@ public class ItemGridHandler implements IItemGridHandler {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onCraftingPreviewRequested(EntityPlayerMP player, int hash, int quantity) {
|
public void onCraftingPreviewRequested(EntityPlayerMP player, int hash, int quantity) {
|
||||||
|
if (!network.hasPermission(Permission.AUTOCRAFT, player)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
IStackList<ItemStack> cache = API.instance().createItemStackList();
|
IStackList<ItemStack> cache = API.instance().createItemStackList();
|
||||||
|
|
||||||
for (ICraftingPattern pattern : network.getPatterns()) {
|
for (ICraftingPattern pattern : network.getPatterns()) {
|
||||||
@@ -170,8 +179,8 @@ public class ItemGridHandler implements IItemGridHandler {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onCraftingRequested(ItemStack stack, int quantity) {
|
public void onCraftingRequested(EntityPlayerMP player, ItemStack stack, int quantity) {
|
||||||
if (quantity <= 0) {
|
if (quantity <= 0 || !network.hasPermission(Permission.AUTOCRAFT, player)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -188,6 +197,10 @@ public class ItemGridHandler implements IItemGridHandler {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onCraftingCancelRequested(EntityPlayerMP player, int id) {
|
public void onCraftingCancelRequested(EntityPlayerMP player, int id) {
|
||||||
|
if (!network.hasPermission(Permission.AUTOCRAFT, player)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (id >= 0 && id < network.getCraftingTasks().size()) {
|
if (id >= 0 && id < network.getCraftingTasks().size()) {
|
||||||
network.cancelCraftingTask(network.getCraftingTasks().get(id));
|
network.cancelCraftingTask(network.getCraftingTasks().get(id));
|
||||||
} else if (id == -1) {
|
} else if (id == -1) {
|
||||||
|
|||||||
@@ -2,7 +2,9 @@ package com.raoulvdberge.refinedstorage.apiimpl.network.item;
|
|||||||
|
|
||||||
import com.raoulvdberge.refinedstorage.RS;
|
import com.raoulvdberge.refinedstorage.RS;
|
||||||
import com.raoulvdberge.refinedstorage.RSGui;
|
import com.raoulvdberge.refinedstorage.RSGui;
|
||||||
|
import com.raoulvdberge.refinedstorage.RSUtils;
|
||||||
import com.raoulvdberge.refinedstorage.api.network.INetworkMaster;
|
import com.raoulvdberge.refinedstorage.api.network.INetworkMaster;
|
||||||
|
import com.raoulvdberge.refinedstorage.api.network.Permission;
|
||||||
import com.raoulvdberge.refinedstorage.api.network.item.INetworkItem;
|
import com.raoulvdberge.refinedstorage.api.network.item.INetworkItem;
|
||||||
import com.raoulvdberge.refinedstorage.api.network.item.INetworkItemHandler;
|
import com.raoulvdberge.refinedstorage.api.network.item.INetworkItemHandler;
|
||||||
import com.raoulvdberge.refinedstorage.item.ItemWirelessCraftingMonitor;
|
import com.raoulvdberge.refinedstorage.item.ItemWirelessCraftingMonitor;
|
||||||
@@ -36,6 +38,12 @@ public class NetworkItemWirelessCraftingMonitor implements INetworkItem {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!network.hasPermission(Permission.AUTOCRAFT, player)) {
|
||||||
|
RSUtils.sendNoPermissionMessage(player);
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
player.openGui(RS.INSTANCE, RSGui.WIRELESS_CRAFTING_MONITOR, player.getEntityWorld(), hand.ordinal(), controllerWorld.provider.getDimension(), 0);
|
player.openGui(RS.INSTANCE, RSGui.WIRELESS_CRAFTING_MONITOR, player.getEntityWorld(), hand.ordinal(), controllerWorld.provider.getDimension(), 0);
|
||||||
|
|
||||||
network.sendCraftingMonitorUpdate((EntityPlayerMP) player);
|
network.sendCraftingMonitorUpdate((EntityPlayerMP) player);
|
||||||
|
|||||||
@@ -2,7 +2,9 @@ package com.raoulvdberge.refinedstorage.apiimpl.network.item;
|
|||||||
|
|
||||||
import com.raoulvdberge.refinedstorage.RS;
|
import com.raoulvdberge.refinedstorage.RS;
|
||||||
import com.raoulvdberge.refinedstorage.RSGui;
|
import com.raoulvdberge.refinedstorage.RSGui;
|
||||||
|
import com.raoulvdberge.refinedstorage.RSUtils;
|
||||||
import com.raoulvdberge.refinedstorage.api.network.INetworkMaster;
|
import com.raoulvdberge.refinedstorage.api.network.INetworkMaster;
|
||||||
|
import com.raoulvdberge.refinedstorage.api.network.Permission;
|
||||||
import com.raoulvdberge.refinedstorage.api.network.item.INetworkItem;
|
import com.raoulvdberge.refinedstorage.api.network.item.INetworkItem;
|
||||||
import com.raoulvdberge.refinedstorage.api.network.item.INetworkItemHandler;
|
import com.raoulvdberge.refinedstorage.api.network.item.INetworkItemHandler;
|
||||||
import com.raoulvdberge.refinedstorage.item.ItemWirelessGrid;
|
import com.raoulvdberge.refinedstorage.item.ItemWirelessGrid;
|
||||||
@@ -36,6 +38,12 @@ public class NetworkItemWirelessGrid implements INetworkItem {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!network.hasPermission(Permission.MODIFY, player)) {
|
||||||
|
RSUtils.sendNoPermissionMessage(player);
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
player.openGui(RS.INSTANCE, RSGui.WIRELESS_GRID, player.getEntityWorld(), hand.ordinal(), controllerWorld.provider.getDimension(), 0);
|
player.openGui(RS.INSTANCE, RSGui.WIRELESS_GRID, player.getEntityWorld(), hand.ordinal(), controllerWorld.provider.getDimension(), 0);
|
||||||
|
|
||||||
network.sendItemStorageToClient((EntityPlayerMP) player);
|
network.sendItemStorageToClient((EntityPlayerMP) player);
|
||||||
|
|||||||
@@ -1,7 +1,11 @@
|
|||||||
package com.raoulvdberge.refinedstorage.block;
|
package com.raoulvdberge.refinedstorage.block;
|
||||||
|
|
||||||
import com.raoulvdberge.refinedstorage.RS;
|
import com.raoulvdberge.refinedstorage.RS;
|
||||||
|
import com.raoulvdberge.refinedstorage.RSUtils;
|
||||||
|
import com.raoulvdberge.refinedstorage.api.network.INetworkNode;
|
||||||
|
import com.raoulvdberge.refinedstorage.api.network.Permission;
|
||||||
import com.raoulvdberge.refinedstorage.item.ItemBlockBase;
|
import com.raoulvdberge.refinedstorage.item.ItemBlockBase;
|
||||||
|
import com.raoulvdberge.refinedstorage.proxy.CapabilityNetworkNode;
|
||||||
import com.raoulvdberge.refinedstorage.tile.TileBase;
|
import com.raoulvdberge.refinedstorage.tile.TileBase;
|
||||||
import net.minecraft.block.Block;
|
import net.minecraft.block.Block;
|
||||||
import net.minecraft.block.material.Material;
|
import net.minecraft.block.material.Material;
|
||||||
@@ -128,6 +132,32 @@ public abstract class BlockBase extends Block {
|
|||||||
world.setBlockToAir(pos);
|
world.setBlockToAir(pos);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected boolean tryOpenNetworkGui(int guiId, EntityPlayer player, World world, BlockPos pos, EnumFacing facing) {
|
||||||
|
return tryOpenNetworkGui(guiId, player, world, pos, facing, Permission.MODIFY);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected boolean tryOpenNetworkGui(int guiId, EntityPlayer player, World world, BlockPos pos, EnumFacing facing, Permission... permissions) {
|
||||||
|
TileEntity tile = world.getTileEntity(pos);
|
||||||
|
|
||||||
|
if (tile != null && tile.hasCapability(CapabilityNetworkNode.NETWORK_NODE_CAPABILITY, facing)) {
|
||||||
|
INetworkNode node = CapabilityNetworkNode.NETWORK_NODE_CAPABILITY.cast(tile.getCapability(CapabilityNetworkNode.NETWORK_NODE_CAPABILITY, facing));
|
||||||
|
|
||||||
|
if (node.getNetwork() != null) {
|
||||||
|
for (Permission permission : permissions) {
|
||||||
|
if (!node.getNetwork().hasPermission(permission, player)) {
|
||||||
|
RSUtils.sendNoPermissionMessage(player);
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
player.openGui(RS.INSTANCE, guiId, world, pos.getX(), pos.getY(), pos.getZ());
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
public EnumPlacementType getPlacementType() {
|
public EnumPlacementType getPlacementType() {
|
||||||
return EnumPlacementType.HORIZONTAL;
|
return EnumPlacementType.HORIZONTAL;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
package com.raoulvdberge.refinedstorage.block;
|
package com.raoulvdberge.refinedstorage.block;
|
||||||
|
|
||||||
import com.raoulvdberge.refinedstorage.RS;
|
|
||||||
import com.raoulvdberge.refinedstorage.RSGui;
|
import com.raoulvdberge.refinedstorage.RSGui;
|
||||||
import com.raoulvdberge.refinedstorage.tile.TileConstructor;
|
import com.raoulvdberge.refinedstorage.tile.TileConstructor;
|
||||||
import net.minecraft.block.state.IBlockState;
|
import net.minecraft.block.state.IBlockState;
|
||||||
@@ -80,7 +79,7 @@ public class BlockConstructor extends BlockCable {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (!world.isRemote) {
|
if (!world.isRemote) {
|
||||||
player.openGui(RS.INSTANCE, RSGui.CONSTRUCTOR, world, pos.getX(), pos.getY(), pos.getZ());
|
tryOpenNetworkGui(RSGui.CONSTRUCTOR, player, world, pos, side);
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
package com.raoulvdberge.refinedstorage.block;
|
package com.raoulvdberge.refinedstorage.block;
|
||||||
|
|
||||||
import com.raoulvdberge.refinedstorage.RS;
|
|
||||||
import com.raoulvdberge.refinedstorage.RSBlocks;
|
import com.raoulvdberge.refinedstorage.RSBlocks;
|
||||||
import com.raoulvdberge.refinedstorage.RSGui;
|
import com.raoulvdberge.refinedstorage.RSGui;
|
||||||
import com.raoulvdberge.refinedstorage.item.ItemBlockController;
|
import com.raoulvdberge.refinedstorage.item.ItemBlockController;
|
||||||
@@ -79,7 +78,7 @@ public class BlockController extends BlockBase {
|
|||||||
@Override
|
@Override
|
||||||
public boolean onBlockActivated(World world, BlockPos pos, IBlockState state, EntityPlayer player, EnumHand hand, EnumFacing side, float hitX, float hitY, float hitZ) {
|
public boolean onBlockActivated(World world, BlockPos pos, IBlockState state, EntityPlayer player, EnumHand hand, EnumFacing side, float hitX, float hitY, float hitZ) {
|
||||||
if (!world.isRemote) {
|
if (!world.isRemote) {
|
||||||
player.openGui(RS.INSTANCE, RSGui.CONTROLLER, world, pos.getX(), pos.getY(), pos.getZ());
|
tryOpenNetworkGui(RSGui.CONTROLLER, player, world, pos, side);
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
package com.raoulvdberge.refinedstorage.block;
|
package com.raoulvdberge.refinedstorage.block;
|
||||||
|
|
||||||
import com.raoulvdberge.refinedstorage.RS;
|
|
||||||
import com.raoulvdberge.refinedstorage.RSGui;
|
import com.raoulvdberge.refinedstorage.RSGui;
|
||||||
import com.raoulvdberge.refinedstorage.tile.TileCrafter;
|
import com.raoulvdberge.refinedstorage.tile.TileCrafter;
|
||||||
import net.minecraft.block.state.IBlockState;
|
import net.minecraft.block.state.IBlockState;
|
||||||
@@ -24,7 +23,7 @@ public class BlockCrafter extends BlockNode {
|
|||||||
@Override
|
@Override
|
||||||
public boolean onBlockActivated(World world, BlockPos pos, IBlockState state, EntityPlayer player, EnumHand hand, EnumFacing side, float hitX, float hitY, float hitZ) {
|
public boolean onBlockActivated(World world, BlockPos pos, IBlockState state, EntityPlayer player, EnumHand hand, EnumFacing side, float hitX, float hitY, float hitZ) {
|
||||||
if (!world.isRemote) {
|
if (!world.isRemote) {
|
||||||
player.openGui(RS.INSTANCE, RSGui.CRAFTER, world, pos.getX(), pos.getY(), pos.getZ());
|
tryOpenNetworkGui(RSGui.CRAFTER, player, world, pos, side);
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
package com.raoulvdberge.refinedstorage.block;
|
package com.raoulvdberge.refinedstorage.block;
|
||||||
|
|
||||||
import com.raoulvdberge.refinedstorage.RS;
|
|
||||||
import com.raoulvdberge.refinedstorage.RSGui;
|
import com.raoulvdberge.refinedstorage.RSGui;
|
||||||
|
import com.raoulvdberge.refinedstorage.api.network.Permission;
|
||||||
import com.raoulvdberge.refinedstorage.tile.craftingmonitor.TileCraftingMonitor;
|
import com.raoulvdberge.refinedstorage.tile.craftingmonitor.TileCraftingMonitor;
|
||||||
import net.minecraft.block.state.IBlockState;
|
import net.minecraft.block.state.IBlockState;
|
||||||
import net.minecraft.entity.player.EntityPlayer;
|
import net.minecraft.entity.player.EntityPlayer;
|
||||||
@@ -23,9 +23,7 @@ public class BlockCraftingMonitor extends BlockNode {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean onBlockActivated(World world, BlockPos pos, IBlockState state, EntityPlayer player, EnumHand hand, EnumFacing side, float hitX, float hitY, float hitZ) {
|
public boolean onBlockActivated(World world, BlockPos pos, IBlockState state, EntityPlayer player, EnumHand hand, EnumFacing side, float hitX, float hitY, float hitZ) {
|
||||||
if (!world.isRemote) {
|
if (!world.isRemote && tryOpenNetworkGui(RSGui.CRAFTING_MONITOR, player, world, pos, side, Permission.MODIFY, Permission.AUTOCRAFT)) {
|
||||||
player.openGui(RS.INSTANCE, RSGui.CRAFTING_MONITOR, world, pos.getX(), pos.getY(), pos.getZ());
|
|
||||||
|
|
||||||
((TileCraftingMonitor) world.getTileEntity(pos)).onOpened(player);
|
((TileCraftingMonitor) world.getTileEntity(pos)).onOpened(player);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
package com.raoulvdberge.refinedstorage.block;
|
package com.raoulvdberge.refinedstorage.block;
|
||||||
|
|
||||||
import com.raoulvdberge.refinedstorage.RS;
|
|
||||||
import com.raoulvdberge.refinedstorage.RSBlocks;
|
import com.raoulvdberge.refinedstorage.RSBlocks;
|
||||||
import com.raoulvdberge.refinedstorage.RSGui;
|
import com.raoulvdberge.refinedstorage.RSGui;
|
||||||
import com.raoulvdberge.refinedstorage.tile.TileDestructor;
|
import com.raoulvdberge.refinedstorage.tile.TileDestructor;
|
||||||
@@ -37,7 +36,7 @@ public class BlockDestructor extends BlockCable {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (!world.isRemote) {
|
if (!world.isRemote) {
|
||||||
player.openGui(RS.INSTANCE, RSGui.DESTRUCTOR, world, pos.getX(), pos.getY(), pos.getZ());
|
tryOpenNetworkGui(RSGui.DESTRUCTOR, player, world, pos, side);
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
package com.raoulvdberge.refinedstorage.block;
|
package com.raoulvdberge.refinedstorage.block;
|
||||||
|
|
||||||
import com.raoulvdberge.refinedstorage.RS;
|
|
||||||
import com.raoulvdberge.refinedstorage.RSGui;
|
import com.raoulvdberge.refinedstorage.RSGui;
|
||||||
import com.raoulvdberge.refinedstorage.tile.TileDetector;
|
import com.raoulvdberge.refinedstorage.tile.TileDetector;
|
||||||
import net.minecraft.block.properties.PropertyBool;
|
import net.minecraft.block.properties.PropertyBool;
|
||||||
@@ -70,7 +69,7 @@ public class BlockDetector extends BlockNode {
|
|||||||
@Override
|
@Override
|
||||||
public boolean onBlockActivated(World world, BlockPos pos, IBlockState state, EntityPlayer player, EnumHand hand, EnumFacing side, float hitX, float hitY, float hitZ) {
|
public boolean onBlockActivated(World world, BlockPos pos, IBlockState state, EntityPlayer player, EnumHand hand, EnumFacing side, float hitX, float hitY, float hitZ) {
|
||||||
if (!world.isRemote) {
|
if (!world.isRemote) {
|
||||||
player.openGui(RS.INSTANCE, RSGui.DETECTOR, world, pos.getX(), pos.getY(), pos.getZ());
|
tryOpenNetworkGui(RSGui.DETECTOR, player, world, pos, side);
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
package com.raoulvdberge.refinedstorage.block;
|
package com.raoulvdberge.refinedstorage.block;
|
||||||
|
|
||||||
import com.raoulvdberge.refinedstorage.RS;
|
|
||||||
import com.raoulvdberge.refinedstorage.RSGui;
|
import com.raoulvdberge.refinedstorage.RSGui;
|
||||||
import com.raoulvdberge.refinedstorage.render.PropertyObject;
|
import com.raoulvdberge.refinedstorage.render.PropertyObject;
|
||||||
import com.raoulvdberge.refinedstorage.tile.TileDiskDrive;
|
import com.raoulvdberge.refinedstorage.tile.TileDiskDrive;
|
||||||
@@ -30,7 +29,7 @@ public class BlockDiskDrive extends BlockNode {
|
|||||||
@Override
|
@Override
|
||||||
public boolean onBlockActivated(World world, BlockPos pos, IBlockState state, EntityPlayer player, EnumHand hand, EnumFacing side, float hitX, float hitY, float hitZ) {
|
public boolean onBlockActivated(World world, BlockPos pos, IBlockState state, EntityPlayer player, EnumHand hand, EnumFacing side, float hitX, float hitY, float hitZ) {
|
||||||
if (!world.isRemote) {
|
if (!world.isRemote) {
|
||||||
player.openGui(RS.INSTANCE, RSGui.DISK_DRIVE, world, pos.getX(), pos.getY(), pos.getZ());
|
tryOpenNetworkGui(RSGui.DISK_DRIVE, player, world, pos, side);
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
package com.raoulvdberge.refinedstorage.block;
|
package com.raoulvdberge.refinedstorage.block;
|
||||||
|
|
||||||
import com.raoulvdberge.refinedstorage.RS;
|
|
||||||
import com.raoulvdberge.refinedstorage.RSGui;
|
import com.raoulvdberge.refinedstorage.RSGui;
|
||||||
import com.raoulvdberge.refinedstorage.render.PropertyObject;
|
import com.raoulvdberge.refinedstorage.render.PropertyObject;
|
||||||
import com.raoulvdberge.refinedstorage.tile.TileDiskManipulator;
|
import com.raoulvdberge.refinedstorage.tile.TileDiskManipulator;
|
||||||
@@ -30,7 +29,7 @@ public class BlockDiskManipulator extends BlockNode {
|
|||||||
@Override
|
@Override
|
||||||
public boolean onBlockActivated(World world, BlockPos pos, IBlockState state, EntityPlayer player, EnumHand hand, EnumFacing side, float hitX, float hitY, float hitZ) {
|
public boolean onBlockActivated(World world, BlockPos pos, IBlockState state, EntityPlayer player, EnumHand hand, EnumFacing side, float hitX, float hitY, float hitZ) {
|
||||||
if (!world.isRemote) {
|
if (!world.isRemote) {
|
||||||
player.openGui(RS.INSTANCE, RSGui.DISK_MANIPULATOR, world, pos.getX(), pos.getY(), pos.getZ());
|
tryOpenNetworkGui(RSGui.DISK_MANIPULATOR, player, world, pos, side);
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
package com.raoulvdberge.refinedstorage.block;
|
package com.raoulvdberge.refinedstorage.block;
|
||||||
|
|
||||||
import com.raoulvdberge.refinedstorage.RS;
|
|
||||||
import com.raoulvdberge.refinedstorage.RSGui;
|
import com.raoulvdberge.refinedstorage.RSGui;
|
||||||
import com.raoulvdberge.refinedstorage.tile.TileExporter;
|
import com.raoulvdberge.refinedstorage.tile.TileExporter;
|
||||||
import net.minecraft.block.state.IBlockState;
|
import net.minecraft.block.state.IBlockState;
|
||||||
@@ -91,7 +90,7 @@ public class BlockExporter extends BlockCable {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (!world.isRemote) {
|
if (!world.isRemote) {
|
||||||
player.openGui(RS.INSTANCE, RSGui.EXPORTER, world, pos.getX(), pos.getY(), pos.getZ());
|
tryOpenNetworkGui(RSGui.EXPORTER, player, world, pos, side);
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
package com.raoulvdberge.refinedstorage.block;
|
package com.raoulvdberge.refinedstorage.block;
|
||||||
|
|
||||||
import com.raoulvdberge.refinedstorage.RS;
|
|
||||||
import com.raoulvdberge.refinedstorage.RSGui;
|
import com.raoulvdberge.refinedstorage.RSGui;
|
||||||
import com.raoulvdberge.refinedstorage.tile.externalstorage.TileExternalStorage;
|
import com.raoulvdberge.refinedstorage.tile.externalstorage.TileExternalStorage;
|
||||||
import net.minecraft.block.Block;
|
import net.minecraft.block.Block;
|
||||||
@@ -74,7 +73,7 @@ public class BlockExternalStorage extends BlockCable {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (!world.isRemote) {
|
if (!world.isRemote) {
|
||||||
player.openGui(RS.INSTANCE, RSGui.EXTERNAL_STORAGE, world, pos.getX(), pos.getY(), pos.getZ());
|
tryOpenNetworkGui(RSGui.EXTERNAL_STORAGE, player, world, pos, side);
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
package com.raoulvdberge.refinedstorage.block;
|
package com.raoulvdberge.refinedstorage.block;
|
||||||
|
|
||||||
import com.raoulvdberge.refinedstorage.RS;
|
|
||||||
import com.raoulvdberge.refinedstorage.RSGui;
|
import com.raoulvdberge.refinedstorage.RSGui;
|
||||||
|
import com.raoulvdberge.refinedstorage.api.network.Permission;
|
||||||
import com.raoulvdberge.refinedstorage.tile.TileFluidInterface;
|
import com.raoulvdberge.refinedstorage.tile.TileFluidInterface;
|
||||||
import net.minecraft.block.state.IBlockState;
|
import net.minecraft.block.state.IBlockState;
|
||||||
import net.minecraft.entity.player.EntityPlayer;
|
import net.minecraft.entity.player.EntityPlayer;
|
||||||
@@ -24,7 +24,7 @@ public class BlockFluidInterface extends BlockNode {
|
|||||||
@Override
|
@Override
|
||||||
public boolean onBlockActivated(World world, BlockPos pos, IBlockState state, EntityPlayer player, EnumHand hand, EnumFacing side, float hitX, float hitY, float hitZ) {
|
public boolean onBlockActivated(World world, BlockPos pos, IBlockState state, EntityPlayer player, EnumHand hand, EnumFacing side, float hitX, float hitY, float hitZ) {
|
||||||
if (!world.isRemote) {
|
if (!world.isRemote) {
|
||||||
player.openGui(RS.INSTANCE, RSGui.FLUID_INTERFACE, world, pos.getX(), pos.getY(), pos.getZ());
|
tryOpenNetworkGui(RSGui.FLUID_INTERFACE, player, world, pos, side, Permission.MODIFY, Permission.INSERT, Permission.EXTRACT);
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
package com.raoulvdberge.refinedstorage.block;
|
package com.raoulvdberge.refinedstorage.block;
|
||||||
|
|
||||||
import com.raoulvdberge.refinedstorage.RS;
|
|
||||||
import com.raoulvdberge.refinedstorage.RSBlocks;
|
import com.raoulvdberge.refinedstorage.RSBlocks;
|
||||||
import com.raoulvdberge.refinedstorage.RSGui;
|
import com.raoulvdberge.refinedstorage.RSGui;
|
||||||
import com.raoulvdberge.refinedstorage.item.ItemBlockFluidStorage;
|
import com.raoulvdberge.refinedstorage.item.ItemBlockFluidStorage;
|
||||||
@@ -66,7 +65,7 @@ public class BlockFluidStorage extends BlockNode {
|
|||||||
@Override
|
@Override
|
||||||
public boolean onBlockActivated(World world, BlockPos pos, IBlockState state, EntityPlayer player, EnumHand hand, EnumFacing side, float hitX, float hitY, float hitZ) {
|
public boolean onBlockActivated(World world, BlockPos pos, IBlockState state, EntityPlayer player, EnumHand hand, EnumFacing side, float hitX, float hitY, float hitZ) {
|
||||||
if (!world.isRemote) {
|
if (!world.isRemote) {
|
||||||
player.openGui(RS.INSTANCE, RSGui.FLUID_STORAGE, world, pos.getX(), pos.getY(), pos.getZ());
|
tryOpenNetworkGui(RSGui.FLUID_STORAGE, player, world, pos, side);
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
package com.raoulvdberge.refinedstorage.block;
|
package com.raoulvdberge.refinedstorage.block;
|
||||||
|
|
||||||
import com.raoulvdberge.refinedstorage.RS;
|
|
||||||
import com.raoulvdberge.refinedstorage.RSGui;
|
import com.raoulvdberge.refinedstorage.RSGui;
|
||||||
import com.raoulvdberge.refinedstorage.item.ItemBlockBase;
|
import com.raoulvdberge.refinedstorage.item.ItemBlockBase;
|
||||||
import com.raoulvdberge.refinedstorage.tile.grid.TileGrid;
|
import com.raoulvdberge.refinedstorage.tile.grid.TileGrid;
|
||||||
@@ -56,9 +55,7 @@ public class BlockGrid extends BlockNode {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean onBlockActivated(World world, BlockPos pos, IBlockState state, EntityPlayer player, EnumHand hand, EnumFacing side, float hitX, float hitY, float hitZ) {
|
public boolean onBlockActivated(World world, BlockPos pos, IBlockState state, EntityPlayer player, EnumHand hand, EnumFacing side, float hitX, float hitY, float hitZ) {
|
||||||
if (!world.isRemote) {
|
if (!world.isRemote && tryOpenNetworkGui(RSGui.GRID, player, world, pos, side)) {
|
||||||
player.openGui(RS.INSTANCE, RSGui.GRID, world, pos.getX(), pos.getY(), pos.getZ());
|
|
||||||
|
|
||||||
((TileGrid) world.getTileEntity(pos)).onOpened(player);
|
((TileGrid) world.getTileEntity(pos)).onOpened(player);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
package com.raoulvdberge.refinedstorage.block;
|
package com.raoulvdberge.refinedstorage.block;
|
||||||
|
|
||||||
import com.raoulvdberge.refinedstorage.RS;
|
|
||||||
import com.raoulvdberge.refinedstorage.RSGui;
|
import com.raoulvdberge.refinedstorage.RSGui;
|
||||||
import com.raoulvdberge.refinedstorage.tile.TileImporter;
|
import com.raoulvdberge.refinedstorage.tile.TileImporter;
|
||||||
import net.minecraft.block.state.IBlockState;
|
import net.minecraft.block.state.IBlockState;
|
||||||
@@ -91,7 +90,7 @@ public class BlockImporter extends BlockCable {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (!world.isRemote) {
|
if (!world.isRemote) {
|
||||||
player.openGui(RS.INSTANCE, RSGui.IMPORTER, world, pos.getX(), pos.getY(), pos.getZ());
|
tryOpenNetworkGui(RSGui.IMPORTER, player, world, pos, side);
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
package com.raoulvdberge.refinedstorage.block;
|
package com.raoulvdberge.refinedstorage.block;
|
||||||
|
|
||||||
import com.raoulvdberge.refinedstorage.RS;
|
|
||||||
import com.raoulvdberge.refinedstorage.RSGui;
|
import com.raoulvdberge.refinedstorage.RSGui;
|
||||||
|
import com.raoulvdberge.refinedstorage.api.network.Permission;
|
||||||
import com.raoulvdberge.refinedstorage.tile.TileInterface;
|
import com.raoulvdberge.refinedstorage.tile.TileInterface;
|
||||||
import net.minecraft.block.state.IBlockState;
|
import net.minecraft.block.state.IBlockState;
|
||||||
import net.minecraft.entity.player.EntityPlayer;
|
import net.minecraft.entity.player.EntityPlayer;
|
||||||
@@ -24,7 +24,7 @@ public class BlockInterface extends BlockNode {
|
|||||||
@Override
|
@Override
|
||||||
public boolean onBlockActivated(World world, BlockPos pos, IBlockState state, EntityPlayer player, EnumHand hand, EnumFacing side, float hitX, float hitY, float hitZ) {
|
public boolean onBlockActivated(World world, BlockPos pos, IBlockState state, EntityPlayer player, EnumHand hand, EnumFacing side, float hitX, float hitY, float hitZ) {
|
||||||
if (!world.isRemote) {
|
if (!world.isRemote) {
|
||||||
player.openGui(RS.INSTANCE, RSGui.INTERFACE, world, pos.getX(), pos.getY(), pos.getZ());
|
tryOpenNetworkGui(RSGui.INTERFACE, player, world, pos, side, Permission.MODIFY, Permission.INSERT, Permission.EXTRACT);
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
package com.raoulvdberge.refinedstorage.block;
|
package com.raoulvdberge.refinedstorage.block;
|
||||||
|
|
||||||
import com.raoulvdberge.refinedstorage.RS;
|
|
||||||
import com.raoulvdberge.refinedstorage.RSGui;
|
import com.raoulvdberge.refinedstorage.RSGui;
|
||||||
import com.raoulvdberge.refinedstorage.tile.TileNetworkTransmitter;
|
import com.raoulvdberge.refinedstorage.tile.TileNetworkTransmitter;
|
||||||
import net.minecraft.block.state.IBlockState;
|
import net.minecraft.block.state.IBlockState;
|
||||||
@@ -19,7 +18,7 @@ public class BlockNetworkTransmitter extends BlockNode {
|
|||||||
@Override
|
@Override
|
||||||
public boolean onBlockActivated(World world, BlockPos pos, IBlockState state, EntityPlayer player, EnumHand hand, EnumFacing side, float hitX, float hitY, float hitZ) {
|
public boolean onBlockActivated(World world, BlockPos pos, IBlockState state, EntityPlayer player, EnumHand hand, EnumFacing side, float hitX, float hitY, float hitZ) {
|
||||||
if (!world.isRemote) {
|
if (!world.isRemote) {
|
||||||
player.openGui(RS.INSTANCE, RSGui.NETWORK_TRANSMITTER, world, pos.getX(), pos.getY(), pos.getZ());
|
tryOpenNetworkGui(RSGui.NETWORK_TRANSMITTER, player, world, pos, side);
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
package com.raoulvdberge.refinedstorage.block;
|
package com.raoulvdberge.refinedstorage.block;
|
||||||
|
|
||||||
import com.raoulvdberge.refinedstorage.RS;
|
|
||||||
import com.raoulvdberge.refinedstorage.RSBlocks;
|
import com.raoulvdberge.refinedstorage.RSBlocks;
|
||||||
import com.raoulvdberge.refinedstorage.RSGui;
|
import com.raoulvdberge.refinedstorage.RSGui;
|
||||||
import com.raoulvdberge.refinedstorage.tile.TileReader;
|
import com.raoulvdberge.refinedstorage.tile.TileReader;
|
||||||
@@ -32,9 +31,7 @@ public class BlockReader extends BlockCable {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!world.isRemote) {
|
if (!world.isRemote && tryOpenNetworkGui(RSGui.READER_WRITER, player, world, pos, side)) {
|
||||||
player.openGui(RS.INSTANCE, RSGui.READER_WRITER, world, pos.getX(), pos.getY(), pos.getZ());
|
|
||||||
|
|
||||||
((TileReader) world.getTileEntity(pos)).onOpened(player);
|
((TileReader) world.getTileEntity(pos)).onOpened(player);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
package com.raoulvdberge.refinedstorage.block;
|
package com.raoulvdberge.refinedstorage.block;
|
||||||
|
|
||||||
import com.raoulvdberge.refinedstorage.RS;
|
|
||||||
import com.raoulvdberge.refinedstorage.RSGui;
|
import com.raoulvdberge.refinedstorage.RSGui;
|
||||||
import com.raoulvdberge.refinedstorage.tile.TileRelay;
|
import com.raoulvdberge.refinedstorage.tile.TileRelay;
|
||||||
import net.minecraft.block.state.IBlockState;
|
import net.minecraft.block.state.IBlockState;
|
||||||
@@ -24,7 +23,7 @@ public class BlockRelay extends BlockNode {
|
|||||||
@Override
|
@Override
|
||||||
public boolean onBlockActivated(World world, BlockPos pos, IBlockState state, EntityPlayer player, EnumHand hand, EnumFacing side, float hitX, float hitY, float hitZ) {
|
public boolean onBlockActivated(World world, BlockPos pos, IBlockState state, EntityPlayer player, EnumHand hand, EnumFacing side, float hitX, float hitY, float hitZ) {
|
||||||
if (!world.isRemote) {
|
if (!world.isRemote) {
|
||||||
player.openGui(RS.INSTANCE, RSGui.RELAY, world, pos.getX(), pos.getY(), pos.getZ());
|
tryOpenNetworkGui(RSGui.RELAY, player, world, pos, side);
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
package com.raoulvdberge.refinedstorage.block;
|
package com.raoulvdberge.refinedstorage.block;
|
||||||
|
|
||||||
import com.raoulvdberge.refinedstorage.RS;
|
|
||||||
import com.raoulvdberge.refinedstorage.RSGui;
|
import com.raoulvdberge.refinedstorage.RSGui;
|
||||||
import com.raoulvdberge.refinedstorage.tile.TileSolderer;
|
import com.raoulvdberge.refinedstorage.tile.TileSolderer;
|
||||||
import net.minecraft.block.state.IBlockState;
|
import net.minecraft.block.state.IBlockState;
|
||||||
@@ -46,7 +45,7 @@ public class BlockSolderer extends BlockNode {
|
|||||||
@Override
|
@Override
|
||||||
public boolean onBlockActivated(World world, BlockPos pos, IBlockState state, EntityPlayer player, EnumHand hand, EnumFacing side, float hitX, float hitY, float hitZ) {
|
public boolean onBlockActivated(World world, BlockPos pos, IBlockState state, EntityPlayer player, EnumHand hand, EnumFacing side, float hitX, float hitY, float hitZ) {
|
||||||
if (!world.isRemote) {
|
if (!world.isRemote) {
|
||||||
player.openGui(RS.INSTANCE, RSGui.SOLDERER, world, pos.getX(), pos.getY(), pos.getZ());
|
tryOpenNetworkGui(RSGui.SOLDERER, player, world, pos, side);
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
package com.raoulvdberge.refinedstorage.block;
|
package com.raoulvdberge.refinedstorage.block;
|
||||||
|
|
||||||
import com.raoulvdberge.refinedstorage.RS;
|
|
||||||
import com.raoulvdberge.refinedstorage.RSBlocks;
|
import com.raoulvdberge.refinedstorage.RSBlocks;
|
||||||
import com.raoulvdberge.refinedstorage.RSGui;
|
import com.raoulvdberge.refinedstorage.RSGui;
|
||||||
import com.raoulvdberge.refinedstorage.item.ItemBlockStorage;
|
import com.raoulvdberge.refinedstorage.item.ItemBlockStorage;
|
||||||
@@ -66,7 +65,7 @@ public class BlockStorage extends BlockNode {
|
|||||||
@Override
|
@Override
|
||||||
public boolean onBlockActivated(World world, BlockPos pos, IBlockState state, EntityPlayer player, EnumHand hand, EnumFacing side, float hitX, float hitY, float hitZ) {
|
public boolean onBlockActivated(World world, BlockPos pos, IBlockState state, EntityPlayer player, EnumHand hand, EnumFacing side, float hitX, float hitY, float hitZ) {
|
||||||
if (!world.isRemote) {
|
if (!world.isRemote) {
|
||||||
player.openGui(RS.INSTANCE, RSGui.STORAGE, world, pos.getX(), pos.getY(), pos.getZ());
|
tryOpenNetworkGui(RSGui.STORAGE, player, world, pos, side);
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
package com.raoulvdberge.refinedstorage.block;
|
package com.raoulvdberge.refinedstorage.block;
|
||||||
|
|
||||||
import com.raoulvdberge.refinedstorage.RS;
|
|
||||||
import com.raoulvdberge.refinedstorage.RSGui;
|
import com.raoulvdberge.refinedstorage.RSGui;
|
||||||
import com.raoulvdberge.refinedstorage.tile.TileWirelessTransmitter;
|
import com.raoulvdberge.refinedstorage.tile.TileWirelessTransmitter;
|
||||||
import net.minecraft.block.Block;
|
import net.minecraft.block.Block;
|
||||||
@@ -36,7 +35,7 @@ public class BlockWirelessTransmitter extends BlockNode {
|
|||||||
@Override
|
@Override
|
||||||
public boolean onBlockActivated(World world, BlockPos pos, IBlockState state, EntityPlayer player, EnumHand hand, EnumFacing side, float hitX, float hitY, float hitZ) {
|
public boolean onBlockActivated(World world, BlockPos pos, IBlockState state, EntityPlayer player, EnumHand hand, EnumFacing side, float hitX, float hitY, float hitZ) {
|
||||||
if (!world.isRemote) {
|
if (!world.isRemote) {
|
||||||
player.openGui(RS.INSTANCE, RSGui.WIRELESS_TRANSMITTER, world, pos.getX(), pos.getY(), pos.getZ());
|
tryOpenNetworkGui(RSGui.WIRELESS_TRANSMITTER, player, world, pos, side);
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
package com.raoulvdberge.refinedstorage.block;
|
package com.raoulvdberge.refinedstorage.block;
|
||||||
|
|
||||||
import com.raoulvdberge.refinedstorage.RS;
|
|
||||||
import com.raoulvdberge.refinedstorage.RSBlocks;
|
import com.raoulvdberge.refinedstorage.RSBlocks;
|
||||||
import com.raoulvdberge.refinedstorage.RSGui;
|
import com.raoulvdberge.refinedstorage.RSGui;
|
||||||
import com.raoulvdberge.refinedstorage.tile.TileWriter;
|
import com.raoulvdberge.refinedstorage.tile.TileWriter;
|
||||||
@@ -32,9 +31,7 @@ public class BlockWriter extends BlockCable {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!world.isRemote) {
|
if (!world.isRemote && tryOpenNetworkGui(RSGui.READER_WRITER, player, world, pos, side)) {
|
||||||
player.openGui(RS.INSTANCE, RSGui.READER_WRITER, world, pos.getX(), pos.getY(), pos.getZ());
|
|
||||||
|
|
||||||
((TileWriter) world.getTileEntity(pos)).onOpened(player);
|
((TileWriter) world.getTileEntity(pos)).onOpened(player);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -50,6 +50,7 @@ public class GuiGrid extends GuiBase implements IGridDisplay {
|
|||||||
public static final ListMultimap<Fluid, GridStackFluid> FLUIDS = Multimaps.synchronizedListMultimap(ArrayListMultimap.create());
|
public static final ListMultimap<Fluid, GridStackFluid> FLUIDS = Multimaps.synchronizedListMultimap(ArrayListMultimap.create());
|
||||||
|
|
||||||
public static List<IGridStack> STACKS = new ArrayList<>();
|
public static List<IGridStack> STACKS = new ArrayList<>();
|
||||||
|
public static boolean CAN_CRAFT;
|
||||||
|
|
||||||
private static boolean markedForSorting;
|
private static boolean markedForSorting;
|
||||||
|
|
||||||
@@ -515,7 +516,7 @@ public class GuiGrid extends GuiBase implements IGridDisplay {
|
|||||||
if (grid.getType() != EnumGridType.FLUID && (held.isEmpty() || (!held.isEmpty() && clickedButton == 2))) {
|
if (grid.getType() != EnumGridType.FLUID && (held.isEmpty() || (!held.isEmpty() && clickedButton == 2))) {
|
||||||
GridStackItem stack = (GridStackItem) STACKS.get(slotNumber);
|
GridStackItem stack = (GridStackItem) STACKS.get(slotNumber);
|
||||||
|
|
||||||
if (stack.isCraftable() && (stack.doesDisplayCraftText() || (GuiScreen.isShiftKeyDown() && GuiScreen.isCtrlKeyDown()))) {
|
if (stack.isCraftable() && (stack.doesDisplayCraftText() || (GuiScreen.isShiftKeyDown() && GuiScreen.isCtrlKeyDown())) && CAN_CRAFT) {
|
||||||
FMLCommonHandler.instance().showGuiScreen(new GuiCraftingStart(this, ((ContainerGrid) this.inventorySlots).getPlayer(), stack));
|
FMLCommonHandler.instance().showGuiScreen(new GuiCraftingStart(this, ((ContainerGrid) this.inventorySlots).getPlayer(), stack));
|
||||||
} else {
|
} else {
|
||||||
int flags = 0;
|
int flags = 0;
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
package com.raoulvdberge.refinedstorage.network;
|
package com.raoulvdberge.refinedstorage.network;
|
||||||
|
|
||||||
import com.raoulvdberge.refinedstorage.RSUtils;
|
import com.raoulvdberge.refinedstorage.RSUtils;
|
||||||
|
import com.raoulvdberge.refinedstorage.api.network.Permission;
|
||||||
import com.raoulvdberge.refinedstorage.block.EnumGridType;
|
import com.raoulvdberge.refinedstorage.block.EnumGridType;
|
||||||
import com.raoulvdberge.refinedstorage.tile.grid.TileGrid;
|
import com.raoulvdberge.refinedstorage.tile.grid.TileGrid;
|
||||||
import io.netty.buffer.ByteBuf;
|
import io.netty.buffer.ByteBuf;
|
||||||
@@ -46,7 +47,7 @@ public class MessageGridCraftingClear extends MessageHandlerPlayerToServer<Messa
|
|||||||
TileGrid grid = (TileGrid) tile;
|
TileGrid grid = (TileGrid) tile;
|
||||||
|
|
||||||
if (grid.hasNetwork()) {
|
if (grid.hasNetwork()) {
|
||||||
if (grid.getType() == EnumGridType.CRAFTING) {
|
if (grid.getType() == EnumGridType.CRAFTING && grid.getNetwork().hasPermission(Permission.INSERT, player)) {
|
||||||
for (int i = 0; i < grid.getMatrix().getSizeInventory(); ++i) {
|
for (int i = 0; i < grid.getMatrix().getSizeInventory(); ++i) {
|
||||||
ItemStack slot = grid.getMatrix().getStackInSlot(i);
|
ItemStack slot = grid.getMatrix().getStackInSlot(i);
|
||||||
|
|
||||||
|
|||||||
@@ -41,7 +41,7 @@ public class MessageGridCraftingStart extends MessageHandlerPlayerToServer<Messa
|
|||||||
IItemGridHandler handler = ((ContainerGrid) container).getGrid().getItemHandler();
|
IItemGridHandler handler = ((ContainerGrid) container).getGrid().getItemHandler();
|
||||||
|
|
||||||
if (handler != null) {
|
if (handler != null) {
|
||||||
handler.onCraftingRequested(message.stack, message.quantity);
|
handler.onCraftingRequested(player, message.stack, message.quantity);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -15,17 +15,21 @@ import java.util.List;
|
|||||||
|
|
||||||
public class MessageGridFluidUpdate implements IMessage, IMessageHandler<MessageGridFluidUpdate, IMessage> {
|
public class MessageGridFluidUpdate implements IMessage, IMessageHandler<MessageGridFluidUpdate, IMessage> {
|
||||||
private INetworkMaster network;
|
private INetworkMaster network;
|
||||||
|
private boolean canCraft;
|
||||||
private List<GridStackFluid> stacks = new ArrayList<>();
|
private List<GridStackFluid> stacks = new ArrayList<>();
|
||||||
|
|
||||||
public MessageGridFluidUpdate() {
|
public MessageGridFluidUpdate() {
|
||||||
}
|
}
|
||||||
|
|
||||||
public MessageGridFluidUpdate(INetworkMaster network) {
|
public MessageGridFluidUpdate(INetworkMaster network, boolean canCraft) {
|
||||||
this.network = network;
|
this.network = network;
|
||||||
|
this.canCraft = canCraft;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void fromBytes(ByteBuf buf) {
|
public void fromBytes(ByteBuf buf) {
|
||||||
|
canCraft = buf.readBoolean();
|
||||||
|
|
||||||
int items = buf.readInt();
|
int items = buf.readInt();
|
||||||
|
|
||||||
for (int i = 0; i < items; ++i) {
|
for (int i = 0; i < items; ++i) {
|
||||||
@@ -35,6 +39,8 @@ public class MessageGridFluidUpdate implements IMessage, IMessageHandler<Message
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void toBytes(ByteBuf buf) {
|
public void toBytes(ByteBuf buf) {
|
||||||
|
buf.writeBoolean(canCraft);
|
||||||
|
|
||||||
buf.writeInt(network.getFluidStorageCache().getList().getStacks().size());
|
buf.writeInt(network.getFluidStorageCache().getList().getStacks().size());
|
||||||
|
|
||||||
for (FluidStack stack : network.getFluidStorageCache().getList().getStacks()) {
|
for (FluidStack stack : network.getFluidStorageCache().getList().getStacks()) {
|
||||||
@@ -44,6 +50,8 @@ public class MessageGridFluidUpdate implements IMessage, IMessageHandler<Message
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public IMessage onMessage(MessageGridFluidUpdate message, MessageContext ctx) {
|
public IMessage onMessage(MessageGridFluidUpdate message, MessageContext ctx) {
|
||||||
|
GuiGrid.CAN_CRAFT = message.canCraft;
|
||||||
|
|
||||||
GuiGrid.FLUIDS.clear();
|
GuiGrid.FLUIDS.clear();
|
||||||
|
|
||||||
for (GridStackFluid item : message.stacks) {
|
for (GridStackFluid item : message.stacks) {
|
||||||
|
|||||||
@@ -17,17 +17,21 @@ import java.util.List;
|
|||||||
|
|
||||||
public class MessageGridItemUpdate implements IMessage, IMessageHandler<MessageGridItemUpdate, IMessage> {
|
public class MessageGridItemUpdate implements IMessage, IMessageHandler<MessageGridItemUpdate, IMessage> {
|
||||||
private INetworkMaster network;
|
private INetworkMaster network;
|
||||||
|
private boolean canCraft;
|
||||||
private List<GridStackItem> stacks = new ArrayList<>();
|
private List<GridStackItem> stacks = new ArrayList<>();
|
||||||
|
|
||||||
public MessageGridItemUpdate() {
|
public MessageGridItemUpdate() {
|
||||||
}
|
}
|
||||||
|
|
||||||
public MessageGridItemUpdate(INetworkMaster network) {
|
public MessageGridItemUpdate(INetworkMaster network, boolean canCraft) {
|
||||||
this.network = network;
|
this.network = network;
|
||||||
|
this.canCraft = canCraft;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void fromBytes(ByteBuf buf) {
|
public void fromBytes(ByteBuf buf) {
|
||||||
|
canCraft = buf.readBoolean();
|
||||||
|
|
||||||
int items = buf.readInt();
|
int items = buf.readInt();
|
||||||
|
|
||||||
for (int i = 0; i < items; ++i) {
|
for (int i = 0; i < items; ++i) {
|
||||||
@@ -37,6 +41,8 @@ public class MessageGridItemUpdate implements IMessage, IMessageHandler<MessageG
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void toBytes(ByteBuf buf) {
|
public void toBytes(ByteBuf buf) {
|
||||||
|
buf.writeBoolean(canCraft);
|
||||||
|
|
||||||
int size = network.getItemStorageCache().getList().getStacks().size();
|
int size = network.getItemStorageCache().getList().getStacks().size();
|
||||||
|
|
||||||
for (ICraftingPattern pattern : network.getPatterns()) {
|
for (ICraftingPattern pattern : network.getPatterns()) {
|
||||||
@@ -60,6 +66,8 @@ public class MessageGridItemUpdate implements IMessage, IMessageHandler<MessageG
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public IMessage onMessage(MessageGridItemUpdate message, MessageContext ctx) {
|
public IMessage onMessage(MessageGridItemUpdate message, MessageContext ctx) {
|
||||||
|
GuiGrid.CAN_CRAFT = message.canCraft;
|
||||||
|
|
||||||
GuiGrid.ITEMS.clear();
|
GuiGrid.ITEMS.clear();
|
||||||
|
|
||||||
for (GridStackItem item : message.stacks) {
|
for (GridStackItem item : message.stacks) {
|
||||||
|
|||||||
@@ -9,6 +9,7 @@ import com.raoulvdberge.refinedstorage.apiimpl.autocrafting.craftingmonitor.*;
|
|||||||
import com.raoulvdberge.refinedstorage.apiimpl.autocrafting.preview.CraftingPreviewElementFluidStack;
|
import com.raoulvdberge.refinedstorage.apiimpl.autocrafting.preview.CraftingPreviewElementFluidStack;
|
||||||
import com.raoulvdberge.refinedstorage.apiimpl.autocrafting.preview.CraftingPreviewElementItemStack;
|
import com.raoulvdberge.refinedstorage.apiimpl.autocrafting.preview.CraftingPreviewElementItemStack;
|
||||||
import com.raoulvdberge.refinedstorage.apiimpl.autocrafting.registry.CraftingTaskFactory;
|
import com.raoulvdberge.refinedstorage.apiimpl.autocrafting.registry.CraftingTaskFactory;
|
||||||
|
import com.raoulvdberge.refinedstorage.apiimpl.network.NetworkListener;
|
||||||
import com.raoulvdberge.refinedstorage.apiimpl.network.readerwriter.ReaderWriterHandlerFluids;
|
import com.raoulvdberge.refinedstorage.apiimpl.network.readerwriter.ReaderWriterHandlerFluids;
|
||||||
import com.raoulvdberge.refinedstorage.apiimpl.network.readerwriter.ReaderWriterHandlerItems;
|
import com.raoulvdberge.refinedstorage.apiimpl.network.readerwriter.ReaderWriterHandlerItems;
|
||||||
import com.raoulvdberge.refinedstorage.apiimpl.network.readerwriter.ReaderWriterHandlerRedstone;
|
import com.raoulvdberge.refinedstorage.apiimpl.network.readerwriter.ReaderWriterHandlerRedstone;
|
||||||
@@ -123,6 +124,7 @@ public class ProxyCommon {
|
|||||||
NetworkRegistry.INSTANCE.registerGuiHandler(RS.INSTANCE, new GuiHandler());
|
NetworkRegistry.INSTANCE.registerGuiHandler(RS.INSTANCE, new GuiHandler());
|
||||||
|
|
||||||
MinecraftForge.EVENT_BUS.register(new ContainerListener());
|
MinecraftForge.EVENT_BUS.register(new ContainerListener());
|
||||||
|
MinecraftForge.EVENT_BUS.register(new NetworkListener());
|
||||||
|
|
||||||
registerTile(TileController.class, "controller");
|
registerTile(TileController.class, "controller");
|
||||||
registerTile(TileGrid.class, "grid");
|
registerTile(TileGrid.class, "grid");
|
||||||
|
|||||||
@@ -14,6 +14,7 @@ import com.raoulvdberge.refinedstorage.api.autocrafting.task.ICraftingTask;
|
|||||||
import com.raoulvdberge.refinedstorage.api.network.INetworkMaster;
|
import com.raoulvdberge.refinedstorage.api.network.INetworkMaster;
|
||||||
import com.raoulvdberge.refinedstorage.api.network.INetworkNode;
|
import com.raoulvdberge.refinedstorage.api.network.INetworkNode;
|
||||||
import com.raoulvdberge.refinedstorage.api.network.INetworkNodeGraph;
|
import com.raoulvdberge.refinedstorage.api.network.INetworkNodeGraph;
|
||||||
|
import com.raoulvdberge.refinedstorage.api.network.Permission;
|
||||||
import com.raoulvdberge.refinedstorage.api.network.grid.IFluidGridHandler;
|
import com.raoulvdberge.refinedstorage.api.network.grid.IFluidGridHandler;
|
||||||
import com.raoulvdberge.refinedstorage.api.network.grid.IItemGridHandler;
|
import com.raoulvdberge.refinedstorage.api.network.grid.IItemGridHandler;
|
||||||
import com.raoulvdberge.refinedstorage.api.network.item.INetworkItemHandler;
|
import com.raoulvdberge.refinedstorage.api.network.item.INetworkItemHandler;
|
||||||
@@ -212,6 +213,11 @@ public class TileController extends TileBase implements INetworkMaster, IRedston
|
|||||||
return energy.getEnergyStored() > 0 && redstoneMode.isEnabled(getWorld(), pos);
|
return energy.getEnergyStored() > 0 && redstoneMode.isEnabled(getWorld(), pos);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean hasPermission(Permission permission, EntityPlayer player) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public INetworkNodeGraph getNodeGraph() {
|
public INetworkNodeGraph getNodeGraph() {
|
||||||
return nodeGraph;
|
return nodeGraph;
|
||||||
@@ -466,7 +472,7 @@ public class TileController extends TileBase implements INetworkMaster, IRedston
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void sendItemStorageToClient(EntityPlayerMP player) {
|
public void sendItemStorageToClient(EntityPlayerMP player) {
|
||||||
RS.INSTANCE.network.sendTo(new MessageGridItemUpdate(this), player);
|
RS.INSTANCE.network.sendTo(new MessageGridItemUpdate(this, hasPermission(Permission.AUTOCRAFT, player)), player);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -485,7 +491,7 @@ public class TileController extends TileBase implements INetworkMaster, IRedston
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void sendFluidStorageToClient(EntityPlayerMP player) {
|
public void sendFluidStorageToClient(EntityPlayerMP player) {
|
||||||
RS.INSTANCE.network.sendTo(new MessageGridFluidUpdate(this), player);
|
RS.INSTANCE.network.sendTo(new MessageGridFluidUpdate(this, hasPermission(Permission.AUTOCRAFT, player)), player);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ import com.raoulvdberge.refinedstorage.RS;
|
|||||||
import com.raoulvdberge.refinedstorage.RSBlocks;
|
import com.raoulvdberge.refinedstorage.RSBlocks;
|
||||||
import com.raoulvdberge.refinedstorage.RSItems;
|
import com.raoulvdberge.refinedstorage.RSItems;
|
||||||
import com.raoulvdberge.refinedstorage.RSUtils;
|
import com.raoulvdberge.refinedstorage.RSUtils;
|
||||||
|
import com.raoulvdberge.refinedstorage.api.network.Permission;
|
||||||
import com.raoulvdberge.refinedstorage.api.network.grid.IFluidGridHandler;
|
import com.raoulvdberge.refinedstorage.api.network.grid.IFluidGridHandler;
|
||||||
import com.raoulvdberge.refinedstorage.api.network.grid.IItemGridHandler;
|
import com.raoulvdberge.refinedstorage.api.network.grid.IItemGridHandler;
|
||||||
import com.raoulvdberge.refinedstorage.apiimpl.API;
|
import com.raoulvdberge.refinedstorage.apiimpl.API;
|
||||||
@@ -387,6 +388,10 @@ public class TileGrid extends TileNode implements IGrid {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void onRecipeTransfer(EntityPlayer player, ItemStack[][] recipe) {
|
public void onRecipeTransfer(EntityPlayer player, ItemStack[][] recipe) {
|
||||||
|
if (hasNetwork() && getType() == EnumGridType.CRAFTING && !network.hasPermission(Permission.EXTRACT, player)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
// First try to empty the crafting matrix
|
// First try to empty the crafting matrix
|
||||||
for (int i = 0; i < matrix.getSizeInventory(); ++i) {
|
for (int i = 0; i < matrix.getSizeInventory(); ++i) {
|
||||||
ItemStack slot = matrix.getStackInSlot(i);
|
ItemStack slot = matrix.getStackInSlot(i);
|
||||||
|
|||||||
@@ -78,6 +78,8 @@ misc.refinedstorage:pattern.outputs=Outputs
|
|||||||
misc.refinedstorage:pattern.invalid=Invalid pattern
|
misc.refinedstorage:pattern.invalid=Invalid pattern
|
||||||
misc.refinedstorage:pattern.oredict=Uses ore dictionary
|
misc.refinedstorage:pattern.oredict=Uses ore dictionary
|
||||||
|
|
||||||
|
misc.refinedstorage:security.no_permission=You have no permission to perform that action.
|
||||||
|
|
||||||
misc.refinedstorage:start=Start
|
misc.refinedstorage:start=Start
|
||||||
misc.refinedstorage:clear=Clear
|
misc.refinedstorage:clear=Clear
|
||||||
misc.refinedstorage:set=Set
|
misc.refinedstorage:set=Set
|
||||||
|
|||||||
Reference in New Issue
Block a user