Write permissions to card
This commit is contained in:
@@ -143,7 +143,7 @@ public class GuiHandler implements IGuiHandler {
|
|||||||
case RSGui.READER_WRITER:
|
case RSGui.READER_WRITER:
|
||||||
return new GuiReaderWriter((ContainerReaderWriter) getContainer(ID, player, tile), (IReaderWriter) tile);
|
return new GuiReaderWriter((ContainerReaderWriter) getContainer(ID, player, tile), (IReaderWriter) tile);
|
||||||
case RSGui.SECURITY_MANAGER:
|
case RSGui.SECURITY_MANAGER:
|
||||||
return new GuiSecurityManager((ContainerSecurityManager) getContainer(ID, player, tile));
|
return new GuiSecurityManager((ContainerSecurityManager) getContainer(ID, player, tile), (TileSecurityManager) tile);
|
||||||
default:
|
default:
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,17 +1,27 @@
|
|||||||
package com.raoulvdberge.refinedstorage.gui;
|
package com.raoulvdberge.refinedstorage.gui;
|
||||||
|
|
||||||
|
import com.raoulvdberge.refinedstorage.RS;
|
||||||
import com.raoulvdberge.refinedstorage.api.network.Permission;
|
import com.raoulvdberge.refinedstorage.api.network.Permission;
|
||||||
import com.raoulvdberge.refinedstorage.container.ContainerSecurityManager;
|
import com.raoulvdberge.refinedstorage.container.ContainerSecurityManager;
|
||||||
import com.raoulvdberge.refinedstorage.gui.sidebutton.SideButtonRedstoneMode;
|
import com.raoulvdberge.refinedstorage.gui.sidebutton.SideButtonRedstoneMode;
|
||||||
|
import com.raoulvdberge.refinedstorage.item.ItemSecurityCard;
|
||||||
|
import com.raoulvdberge.refinedstorage.network.MessageSecurityManagerUpdate;
|
||||||
import com.raoulvdberge.refinedstorage.tile.TileSecurityManager;
|
import com.raoulvdberge.refinedstorage.tile.TileSecurityManager;
|
||||||
|
import net.minecraft.client.gui.GuiButton;
|
||||||
import net.minecraft.client.resources.I18n;
|
import net.minecraft.client.resources.I18n;
|
||||||
|
import net.minecraft.item.ItemStack;
|
||||||
import net.minecraftforge.fml.client.config.GuiCheckBox;
|
import net.minecraftforge.fml.client.config.GuiCheckBox;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
|
||||||
public class GuiSecurityManager extends GuiBase {
|
public class GuiSecurityManager extends GuiBase {
|
||||||
|
private TileSecurityManager securityManager;
|
||||||
private GuiCheckBox[] permissions = new GuiCheckBox[Permission.values().length];
|
private GuiCheckBox[] permissions = new GuiCheckBox[Permission.values().length];
|
||||||
|
|
||||||
public GuiSecurityManager(ContainerSecurityManager container) {
|
public GuiSecurityManager(ContainerSecurityManager container, TileSecurityManager securityManager) {
|
||||||
super(container, 176, 234);
|
super(container, 176, 234);
|
||||||
|
|
||||||
|
this.securityManager = securityManager;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -29,6 +39,22 @@ public class GuiSecurityManager extends GuiBase {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void update(int x, int y) {
|
public void update(int x, int y) {
|
||||||
|
ItemStack card = securityManager.getEditCard().getStackInSlot(0);
|
||||||
|
|
||||||
|
for (Permission permission : Permission.values()) {
|
||||||
|
permissions[permission.getId()].setIsChecked(!card.isEmpty() && ItemSecurityCard.hasPermission(card, permission));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void actionPerformed(GuiButton button) throws IOException {
|
||||||
|
super.actionPerformed(button);
|
||||||
|
|
||||||
|
for (int i = 0; i < permissions.length; ++i) {
|
||||||
|
if (button == permissions[i]) {
|
||||||
|
RS.INSTANCE.network.sendToServer(new MessageSecurityManagerUpdate(securityManager, Permission.values()[i], permissions[i].isChecked()));
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -0,0 +1,67 @@
|
|||||||
|
package com.raoulvdberge.refinedstorage.network;
|
||||||
|
|
||||||
|
import com.raoulvdberge.refinedstorage.api.network.Permission;
|
||||||
|
import com.raoulvdberge.refinedstorage.tile.TileSecurityManager;
|
||||||
|
import io.netty.buffer.ByteBuf;
|
||||||
|
import net.minecraft.entity.player.EntityPlayerMP;
|
||||||
|
import net.minecraft.tileentity.TileEntity;
|
||||||
|
import net.minecraft.util.math.BlockPos;
|
||||||
|
import net.minecraftforge.fml.common.network.simpleimpl.IMessage;
|
||||||
|
|
||||||
|
public class MessageSecurityManagerUpdate extends MessageHandlerPlayerToServer<MessageSecurityManagerUpdate> implements IMessage {
|
||||||
|
private int x;
|
||||||
|
private int y;
|
||||||
|
private int z;
|
||||||
|
private Permission permission;
|
||||||
|
private boolean state;
|
||||||
|
|
||||||
|
public MessageSecurityManagerUpdate() {
|
||||||
|
}
|
||||||
|
|
||||||
|
public MessageSecurityManagerUpdate(TileSecurityManager securityManager, Permission permission, boolean state) {
|
||||||
|
this.x = securityManager.getPos().getX();
|
||||||
|
this.y = securityManager.getPos().getY();
|
||||||
|
this.z = securityManager.getPos().getZ();
|
||||||
|
this.permission = permission;
|
||||||
|
this.state = state;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void fromBytes(ByteBuf buf) {
|
||||||
|
x = buf.readInt();
|
||||||
|
y = buf.readInt();
|
||||||
|
z = buf.readInt();
|
||||||
|
|
||||||
|
int id = buf.readInt();
|
||||||
|
|
||||||
|
permission = Permission.INSERT;
|
||||||
|
state = buf.readBoolean();
|
||||||
|
|
||||||
|
for (Permission otherPermission : Permission.values()) {
|
||||||
|
if (otherPermission.getId() == id) {
|
||||||
|
permission = otherPermission;
|
||||||
|
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void toBytes(ByteBuf buf) {
|
||||||
|
buf.writeInt(x);
|
||||||
|
buf.writeInt(y);
|
||||||
|
buf.writeInt(z);
|
||||||
|
buf.writeInt(permission.getId());
|
||||||
|
buf.writeBoolean(state);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void handle(MessageSecurityManagerUpdate message, EntityPlayerMP player) {
|
||||||
|
TileEntity tile = player.getEntityWorld().getTileEntity(new BlockPos(message.x, message.y, message.z));
|
||||||
|
|
||||||
|
if (tile instanceof TileSecurityManager) {
|
||||||
|
((TileSecurityManager) tile).updatePermission(message.permission, message.state);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -120,6 +120,7 @@ public class ProxyCommon {
|
|||||||
RS.INSTANCE.network.registerMessage(MessageReaderWriterUpdate.class, MessageReaderWriterUpdate.class, id++, Side.CLIENT);
|
RS.INSTANCE.network.registerMessage(MessageReaderWriterUpdate.class, MessageReaderWriterUpdate.class, id++, Side.CLIENT);
|
||||||
RS.INSTANCE.network.registerMessage(MessageReaderWriterChannelAdd.class, MessageReaderWriterChannelAdd.class, id++, Side.SERVER);
|
RS.INSTANCE.network.registerMessage(MessageReaderWriterChannelAdd.class, MessageReaderWriterChannelAdd.class, id++, Side.SERVER);
|
||||||
RS.INSTANCE.network.registerMessage(MessageReaderWriterChannelRemove.class, MessageReaderWriterChannelRemove.class, id++, Side.SERVER);
|
RS.INSTANCE.network.registerMessage(MessageReaderWriterChannelRemove.class, MessageReaderWriterChannelRemove.class, id++, Side.SERVER);
|
||||||
|
RS.INSTANCE.network.registerMessage(MessageSecurityManagerUpdate.class, MessageSecurityManagerUpdate.class, id++, Side.SERVER);
|
||||||
|
|
||||||
NetworkRegistry.INSTANCE.registerGuiHandler(RS.INSTANCE, new GuiHandler());
|
NetworkRegistry.INSTANCE.registerGuiHandler(RS.INSTANCE, new GuiHandler());
|
||||||
|
|
||||||
|
|||||||
@@ -3,8 +3,11 @@ package com.raoulvdberge.refinedstorage.tile;
|
|||||||
import com.raoulvdberge.refinedstorage.RS;
|
import com.raoulvdberge.refinedstorage.RS;
|
||||||
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.inventory.ItemHandlerBasic;
|
import com.raoulvdberge.refinedstorage.inventory.ItemHandlerBasic;
|
||||||
import com.raoulvdberge.refinedstorage.inventory.ItemValidatorBasic;
|
import com.raoulvdberge.refinedstorage.inventory.ItemValidatorBasic;
|
||||||
|
import com.raoulvdberge.refinedstorage.item.ItemSecurityCard;
|
||||||
|
import net.minecraft.item.ItemStack;
|
||||||
import net.minecraft.nbt.NBTTagCompound;
|
import net.minecraft.nbt.NBTTagCompound;
|
||||||
|
|
||||||
public class TileSecurityManager extends TileNode {
|
public class TileSecurityManager extends TileNode {
|
||||||
@@ -54,4 +57,12 @@ public class TileSecurityManager extends TileNode {
|
|||||||
public ItemHandlerBasic getEditCard() {
|
public ItemHandlerBasic getEditCard() {
|
||||||
return editCard;
|
return editCard;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void updatePermission(Permission permission, boolean state) {
|
||||||
|
ItemStack card = getEditCard().getStackInSlot(0);
|
||||||
|
|
||||||
|
if (!card.isEmpty()) {
|
||||||
|
ItemSecurityCard.setPermission(card, permission, state);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user