Write permissions to card
This commit is contained in:
@@ -143,7 +143,7 @@ public class GuiHandler implements IGuiHandler {
|
||||
case RSGui.READER_WRITER:
|
||||
return new GuiReaderWriter((ContainerReaderWriter) getContainer(ID, player, tile), (IReaderWriter) tile);
|
||||
case RSGui.SECURITY_MANAGER:
|
||||
return new GuiSecurityManager((ContainerSecurityManager) getContainer(ID, player, tile));
|
||||
return new GuiSecurityManager((ContainerSecurityManager) getContainer(ID, player, tile), (TileSecurityManager) tile);
|
||||
default:
|
||||
return null;
|
||||
}
|
||||
|
||||
@@ -1,17 +1,27 @@
|
||||
package com.raoulvdberge.refinedstorage.gui;
|
||||
|
||||
import com.raoulvdberge.refinedstorage.RS;
|
||||
import com.raoulvdberge.refinedstorage.api.network.Permission;
|
||||
import com.raoulvdberge.refinedstorage.container.ContainerSecurityManager;
|
||||
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 net.minecraft.client.gui.GuiButton;
|
||||
import net.minecraft.client.resources.I18n;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraftforge.fml.client.config.GuiCheckBox;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
public class GuiSecurityManager extends GuiBase {
|
||||
private TileSecurityManager securityManager;
|
||||
private GuiCheckBox[] permissions = new GuiCheckBox[Permission.values().length];
|
||||
|
||||
public GuiSecurityManager(ContainerSecurityManager container) {
|
||||
public GuiSecurityManager(ContainerSecurityManager container, TileSecurityManager securityManager) {
|
||||
super(container, 176, 234);
|
||||
|
||||
this.securityManager = securityManager;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -29,6 +39,22 @@ public class GuiSecurityManager extends GuiBase {
|
||||
|
||||
@Override
|
||||
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
|
||||
|
||||
@@ -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(MessageReaderWriterChannelAdd.class, MessageReaderWriterChannelAdd.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());
|
||||
|
||||
|
||||
@@ -3,8 +3,11 @@ package com.raoulvdberge.refinedstorage.tile;
|
||||
import com.raoulvdberge.refinedstorage.RS;
|
||||
import com.raoulvdberge.refinedstorage.RSItems;
|
||||
import com.raoulvdberge.refinedstorage.RSUtils;
|
||||
import com.raoulvdberge.refinedstorage.api.network.Permission;
|
||||
import com.raoulvdberge.refinedstorage.inventory.ItemHandlerBasic;
|
||||
import com.raoulvdberge.refinedstorage.inventory.ItemValidatorBasic;
|
||||
import com.raoulvdberge.refinedstorage.item.ItemSecurityCard;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
|
||||
public class TileSecurityManager extends TileNode {
|
||||
@@ -54,4 +57,12 @@ public class TileSecurityManager extends TileNode {
|
||||
public ItemHandlerBasic getEditCard() {
|
||||
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