Write permissions to card

This commit is contained in:
Raoul Van den Berge
2016-12-16 23:43:39 +01:00
parent 31d8f25cc4
commit 21a0ed2080
5 changed files with 107 additions and 2 deletions

View File

@@ -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;
}

View File

@@ -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

View File

@@ -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);
}
}
}

View File

@@ -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());

View File

@@ -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);
}
}
}