Polished security desk interface and machine interaction. Need to start integrating now, so far only complete in metallurgic infuser
This commit is contained in:
parent
062671cdc4
commit
9c480954e3
16 changed files with 308 additions and 44 deletions
|
@ -12,6 +12,7 @@ import mekanism.client.gui.element.GuiProgress;
|
|||
import mekanism.client.gui.element.GuiProgress.IProgressInfoHandler;
|
||||
import mekanism.client.gui.element.GuiProgress.ProgressBar;
|
||||
import mekanism.client.gui.element.GuiRedstoneControl;
|
||||
import mekanism.client.gui.element.GuiSecurityTab;
|
||||
import mekanism.client.gui.element.GuiSideConfigurationTab;
|
||||
import mekanism.client.gui.element.GuiSlot;
|
||||
import mekanism.client.gui.element.GuiSlot.SlotOverlay;
|
||||
|
@ -46,6 +47,7 @@ public class GuiMetallurgicInfuser extends GuiMekanism
|
|||
|
||||
guiElements.add(new GuiRedstoneControl(this, tileEntity, MekanismUtils.getResource(ResourceType.GUI, "GuiMetallurgicInfuser.png")));
|
||||
guiElements.add(new GuiUpgradeTab(this, tileEntity, MekanismUtils.getResource(ResourceType.GUI, "GuiMetallurgicInfuser.png")));
|
||||
guiElements.add(new GuiSecurityTab(this, tileEntity, MekanismUtils.getResource(ResourceType.GUI, "GuiMetallurgicInfuser.png")));
|
||||
guiElements.add(new GuiSideConfigurationTab(this, tileEntity, MekanismUtils.getResource(ResourceType.GUI, "GuiMetallurgicInfuser.png")));
|
||||
guiElements.add(new GuiTransporterConfigTab(this, 34, tileEntity, MekanismUtils.getResource(ResourceType.GUI, "GuiMetallurgicInfuser.png")));
|
||||
guiElements.add(new GuiPowerBar(this, tileEntity, MekanismUtils.getResource(ResourceType.GUI, "GuiMetallurgicInfuser.png"), 164, 15));
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
package mekanism.client.gui;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
import mekanism.api.Coord4D;
|
||||
|
@ -10,12 +11,11 @@ import mekanism.client.sound.SoundHandler;
|
|||
import mekanism.common.Mekanism;
|
||||
import mekanism.common.inventory.container.ContainerSecurityDesk;
|
||||
import mekanism.common.network.PacketTileEntity.TileEntityMessage;
|
||||
import mekanism.common.security.ISecurity.SecurityMode;
|
||||
import mekanism.common.security.ISecurityTile.SecurityMode;
|
||||
import mekanism.common.tile.TileEntitySecurityDesk;
|
||||
import mekanism.common.util.LangUtils;
|
||||
import mekanism.common.util.MekanismUtils;
|
||||
import mekanism.common.util.MekanismUtils.ResourceType;
|
||||
import mekanism.common.util.SecurityUtils;
|
||||
import net.minecraft.client.gui.GuiButton;
|
||||
import net.minecraft.client.gui.GuiTextField;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
|
@ -31,7 +31,7 @@ import cpw.mods.fml.relauncher.SideOnly;
|
|||
@SideOnly(Side.CLIENT)
|
||||
public class GuiSecurityDesk extends GuiMekanism
|
||||
{
|
||||
public static int MAX_LENGTH = 24;
|
||||
public static int MAX_LENGTH = 24;
|
||||
|
||||
public ResourceLocation resource;
|
||||
|
||||
|
@ -44,6 +44,8 @@ public static int MAX_LENGTH = 24;
|
|||
public GuiScrollList scrollList;
|
||||
|
||||
public GuiTextField trustedField;
|
||||
|
||||
public static final List<Character> SPECIAL_CHARS = Arrays.asList('-', '|');
|
||||
|
||||
public GuiSecurityDesk(InventoryPlayer inventory, TileEntitySecurityDesk tentity)
|
||||
{
|
||||
|
@ -66,9 +68,9 @@ public static int MAX_LENGTH = 24;
|
|||
|
||||
buttonList.clear();
|
||||
|
||||
removeButton = new GuiButton(0, guiWidth + 13, guiHeight + 116, 122, 20, LangUtils.localize("gui.remove"));
|
||||
removeButton = new GuiButton(0, guiWidth + 13, guiHeight + 81, 122, 20, LangUtils.localize("gui.remove"));
|
||||
|
||||
trustedField = new GuiTextField(fontRendererObj, guiWidth + 35, guiHeight + 68, 86, 11);
|
||||
trustedField = new GuiTextField(fontRendererObj, guiWidth + 35, guiHeight + 69, 86, 11);
|
||||
trustedField.setMaxStringLength(MAX_LENGTH);
|
||||
trustedField.setEnableBackgroundDrawing(false);
|
||||
|
||||
|
@ -211,7 +213,7 @@ public static int MAX_LENGTH = 24;
|
|||
}
|
||||
}
|
||||
|
||||
if(Character.isDigit(c) || Character.isLetter(c) || i == Keyboard.KEY_BACK || i == Keyboard.KEY_DELETE || i == Keyboard.KEY_LEFT || i == Keyboard.KEY_RIGHT)
|
||||
if(SPECIAL_CHARS.contains(c) || Character.isDigit(c) || Character.isLetter(c) || i == Keyboard.KEY_BACK || i == Keyboard.KEY_DELETE || i == Keyboard.KEY_LEFT || i == Keyboard.KEY_RIGHT)
|
||||
{
|
||||
trustedField.textboxKeyTyped(c, i);
|
||||
}
|
||||
|
@ -252,16 +254,24 @@ public static int MAX_LENGTH = 24;
|
|||
int xAxis = (mouseX-(width-xSize)/2);
|
||||
int yAxis = (mouseY-(height-ySize)/2);
|
||||
|
||||
String ownerText = SecurityUtils.getOwnerDisplay(mc.thePlayer.getCommandSenderName(), tileEntity.owner);
|
||||
String ownerText = EnumColor.RED + tileEntity.owner != null ? (LangUtils.localize("gui.owner") + ": " + tileEntity.owner) : LangUtils.localize("gui.noOwner");
|
||||
fontRendererObj.drawString(tileEntity.getInventoryName(), (xSize/2)-(fontRendererObj.getStringWidth(tileEntity.getInventoryName())/2), 4, 0x404040);
|
||||
fontRendererObj.drawString(ownerText, (xSize - 7) - fontRendererObj.getStringWidth(ownerText), (ySize - 96) + 2, 0x404040);
|
||||
fontRendererObj.drawString(LangUtils.localize("container.inventory"), 8, (ySize - 96) + 2, 0x404040);
|
||||
fontRendererObj.drawString(LangUtils.localize("gui.trustedPlayers"), 13, 57, 0x404040);
|
||||
|
||||
String security = EnumColor.GREY + LangUtils.localize("gui.security") + ": " + tileEntity.frequency.securityMode.getDisplay();
|
||||
String trusted = LangUtils.localize("gui.trustedPlayers");
|
||||
fontRendererObj.drawString(trusted, 74-(fontRendererObj.getStringWidth(trusted)/2), 57, 0x787878);
|
||||
|
||||
String security = EnumColor.RED + LangUtils.localize("gui.securityOffline");
|
||||
|
||||
if(tileEntity.frequency != null)
|
||||
{
|
||||
security = LangUtils.localize("gui.security") + ": " + tileEntity.frequency.securityMode.getDisplay();
|
||||
}
|
||||
|
||||
fontRendererObj.drawString(security, 13, 103, 0x404040);
|
||||
|
||||
renderScaledText(LangUtils.localize("gui.add") + ":", 13, 67, 0x404040, 20);
|
||||
renderScaledText(LangUtils.localize("gui.add") + ":", 13, 70, 0x404040, 20);
|
||||
|
||||
if(tileEntity.frequency != null && xAxis >= 146 && xAxis <= 162 && yAxis >= 59 && yAxis <= 75)
|
||||
{
|
||||
|
|
|
@ -7,8 +7,8 @@ import mekanism.client.gui.IGuiWrapper;
|
|||
import mekanism.client.sound.SoundHandler;
|
||||
import mekanism.common.Mekanism;
|
||||
import mekanism.common.network.PacketSecurityMode.SecurityModeMessage;
|
||||
import mekanism.common.security.ISecurity;
|
||||
import mekanism.common.security.ISecurity.SecurityMode;
|
||||
import mekanism.common.security.ISecurityTile;
|
||||
import mekanism.common.security.ISecurityTile.SecurityMode;
|
||||
import mekanism.common.util.LangUtils;
|
||||
import mekanism.common.util.MekanismUtils;
|
||||
import mekanism.common.util.MekanismUtils.ResourceType;
|
||||
|
@ -44,10 +44,18 @@ public class GuiSecurityTab extends GuiElement
|
|||
|
||||
guiObj.drawTexturedRect(guiWidth + 176, guiHeight + 32, 0, 0, 26, 26);
|
||||
|
||||
ISecurity tile = (ISecurity)tileEntity;
|
||||
int renderX = 26 + (18*tile.getSecurity().getMode().ordinal());
|
||||
ISecurityTile tile = (ISecurityTile)tileEntity;
|
||||
SecurityMode mode = tile.getSecurity().getMode();
|
||||
|
||||
if(tile.getSecurity().getFrequency() != null && tile.getSecurity().getFrequency().override)
|
||||
{
|
||||
mode = tile.getSecurity().getFrequency().securityMode;
|
||||
}
|
||||
|
||||
int renderX = 26 + (18*mode.ordinal());
|
||||
|
||||
if(tile.getSecurity().getOwner() != null && tile.getSecurity().getOwner().equals(mc.thePlayer.getCommandSenderName()))
|
||||
if(tile.getSecurity().getOwner() != null && tile.getSecurity().getOwner().equals(mc.thePlayer.getCommandSenderName()) &&
|
||||
(tile.getSecurity().getFrequency() == null || !tile.getSecurity().getFrequency().override))
|
||||
{
|
||||
if(xAxis >= 179 && xAxis <= 197 && yAxis >= 36 && yAxis <= 54)
|
||||
{
|
||||
|
@ -69,14 +77,21 @@ public class GuiSecurityTab extends GuiElement
|
|||
{
|
||||
mc.renderEngine.bindTexture(RESOURCE);
|
||||
|
||||
ISecurity control = (ISecurity)tileEntity;
|
||||
ISecurityTile control = (ISecurityTile)tileEntity;
|
||||
|
||||
if(xAxis >= 179 && xAxis <= 197 && yAxis >= 36 && yAxis <= 54)
|
||||
{
|
||||
String securityText = EnumColor.GREY + LangUtils.localize("gui.security") + ": " + control.getSecurity().getMode().getDisplay();
|
||||
String securityText = EnumColor.GREY + LangUtils.localize("gui.security") + ": " + SecurityUtils.getSecurityDisplay((TileEntity)control);
|
||||
String ownerText = SecurityUtils.getOwnerDisplay(mc.thePlayer.getCommandSenderName(), control.getSecurity().getOwner());
|
||||
String overrideText = EnumColor.RED + "(" + LangUtils.localize("gui.overridden") + ")";
|
||||
|
||||
displayTooltips(ListUtils.asList(securityText, ownerText), xAxis, yAxis);
|
||||
if(SecurityUtils.isOverridden((TileEntity)control))
|
||||
{
|
||||
displayTooltips(ListUtils.asList(securityText, ownerText, overrideText), xAxis, yAxis);
|
||||
}
|
||||
else {
|
||||
displayTooltips(ListUtils.asList(securityText, ownerText), xAxis, yAxis);
|
||||
}
|
||||
}
|
||||
|
||||
mc.renderEngine.bindTexture(defaultLocation);
|
||||
|
@ -88,7 +103,7 @@ public class GuiSecurityTab extends GuiElement
|
|||
@Override
|
||||
public void mouseClicked(int xAxis, int yAxis, int button)
|
||||
{
|
||||
ISecurity control = (ISecurity)tileEntity;
|
||||
ISecurityTile control = (ISecurityTile)tileEntity;
|
||||
|
||||
if(button == 0)
|
||||
{
|
||||
|
|
|
@ -42,6 +42,7 @@ import mekanism.common.tile.TileEntityThermalEvaporationController;
|
|||
import mekanism.common.tile.TileEntityThermalEvaporationValve;
|
||||
import mekanism.common.util.LangUtils;
|
||||
import mekanism.common.util.MekanismUtils;
|
||||
import mekanism.common.util.SecurityUtils;
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.block.material.Material;
|
||||
import net.minecraft.client.renderer.texture.IIconRegister;
|
||||
|
@ -483,9 +484,18 @@ public class BlockBasic extends Block implements IBlockCTM, ICustomBlockIcon
|
|||
}
|
||||
else if(tile instanceof TileEntitySecurityDesk)
|
||||
{
|
||||
String owner = ((TileEntitySecurityDesk)tile).owner;
|
||||
|
||||
if(!entityplayer.isSneaking())
|
||||
{
|
||||
entityplayer.openGui(Mekanism.instance, 57, world, x, y, z);
|
||||
if(owner == null || entityplayer.getCommandSenderName().equals(owner))
|
||||
{
|
||||
entityplayer.openGui(Mekanism.instance, 57, world, x, y, z);
|
||||
}
|
||||
else {
|
||||
SecurityUtils.displayNoAccess(entityplayer);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -43,6 +43,9 @@ import mekanism.common.network.PacketElectricChest.ElectricChestPacketType;
|
|||
import mekanism.common.network.PacketLogisticalSorterGui.LogisticalSorterGuiMessage;
|
||||
import mekanism.common.network.PacketLogisticalSorterGui.SorterGuiPacket;
|
||||
import mekanism.common.recipe.ShapedMekanismRecipe;
|
||||
import mekanism.common.security.ISecurityTile;
|
||||
import mekanism.common.security.ISecurityTile.SecurityMode;
|
||||
import mekanism.common.security.ISecurityItem;
|
||||
import mekanism.common.tile.TileEntityAdvancedFactory;
|
||||
import mekanism.common.tile.TileEntityAmbientAccumulator;
|
||||
import mekanism.common.tile.TileEntityBasicBlock;
|
||||
|
@ -85,6 +88,7 @@ import mekanism.common.tile.TileEntitySolarNeutronActivator;
|
|||
import mekanism.common.tile.TileEntityTeleporter;
|
||||
import mekanism.common.util.LangUtils;
|
||||
import mekanism.common.util.MekanismUtils;
|
||||
import mekanism.common.util.SecurityUtils;
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.block.BlockContainer;
|
||||
import net.minecraft.block.material.Material;
|
||||
|
@ -578,7 +582,14 @@ public class BlockMachine extends BlockContainer implements ISpecialBounds, IBlo
|
|||
{
|
||||
if(entityplayer.isSneaking() && MachineType.get(blockType, metadata) != MachineType.ELECTRIC_CHEST)
|
||||
{
|
||||
dismantleBlock(world, x, y, z, false);
|
||||
if(SecurityUtils.canAccess(entityplayer, tileEntity))
|
||||
{
|
||||
dismantleBlock(world, x, y, z, false);
|
||||
}
|
||||
else {
|
||||
SecurityUtils.displayNoAccess(entityplayer);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
@ -753,8 +764,15 @@ public class BlockMachine extends BlockContainer implements ISpecialBounds, IBlo
|
|||
@Override
|
||||
public float getBlockHardness(World world, int x, int y, int z)
|
||||
{
|
||||
TileEntity tile = world.getTileEntity(x, y, z);
|
||||
|
||||
if(MachineType.get(blockType, world.getBlockMetadata(x, y, z)) != MachineType.ELECTRIC_CHEST)
|
||||
{
|
||||
if(tile instanceof ISecurityTile)
|
||||
{
|
||||
return SecurityUtils.getSecurity((ISecurityTile)tile) == SecurityMode.PUBLIC ? blockHardness : -1;
|
||||
}
|
||||
|
||||
return blockHardness;
|
||||
}
|
||||
else {
|
||||
|
@ -955,6 +973,13 @@ public class BlockMachine extends BlockContainer implements ISpecialBounds, IBlo
|
|||
ITierItem tierItem = (ITierItem)itemStack.getItem();
|
||||
tierItem.setBaseTier(itemStack, ((TileEntityFluidTank)tileEntity).tier.getBaseTier());
|
||||
}
|
||||
|
||||
if(tileEntity instanceof ISecurityTile)
|
||||
{
|
||||
ISecurityItem securityItem = (ISecurityItem)itemStack.getItem();
|
||||
securityItem.setOwner(itemStack, ((ISecurityTile)tileEntity).getSecurity().getOwner());
|
||||
securityItem.setSecurity(itemStack, ((ISecurityTile)tileEntity).getSecurity().getMode());
|
||||
}
|
||||
|
||||
if(tileEntity instanceof IUpgradeTile)
|
||||
{
|
||||
|
|
|
@ -34,6 +34,9 @@ import mekanism.common.integration.IC2ItemManager;
|
|||
import mekanism.common.inventory.InventoryElectricChest;
|
||||
import mekanism.common.network.PacketElectricChest.ElectricChestMessage;
|
||||
import mekanism.common.network.PacketElectricChest.ElectricChestPacketType;
|
||||
import mekanism.common.security.ISecurityItem;
|
||||
import mekanism.common.security.ISecurityTile;
|
||||
import mekanism.common.security.ISecurityTile.SecurityMode;
|
||||
import mekanism.common.tile.TileEntityBasicBlock;
|
||||
import mekanism.common.tile.TileEntityElectricBlock;
|
||||
import mekanism.common.tile.TileEntityElectricChest;
|
||||
|
@ -41,6 +44,7 @@ import mekanism.common.tile.TileEntityFactory;
|
|||
import mekanism.common.tile.TileEntityFluidTank;
|
||||
import mekanism.common.util.LangUtils;
|
||||
import mekanism.common.util.MekanismUtils;
|
||||
import mekanism.common.util.SecurityUtils;
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.block.material.Material;
|
||||
import net.minecraft.client.settings.GameSettings;
|
||||
|
@ -116,7 +120,7 @@ import cpw.mods.fml.relauncher.SideOnly;
|
|||
@InterfaceList({
|
||||
@Interface(iface = "ic2.api.item.ISpecialElectricItem", modid = "IC2")
|
||||
})
|
||||
public class ItemBlockMachine extends ItemBlock implements IEnergizedItem, ISpecialElectricItem, IFactory, ISustainedInventory, ISustainedTank, IElectricChest, IEnergyContainerItem, IFluidContainerItem, ITierItem
|
||||
public class ItemBlockMachine extends ItemBlock implements IEnergizedItem, ISpecialElectricItem, IFactory, ISustainedInventory, ISustainedTank, IElectricChest, IEnergyContainerItem, IFluidContainerItem, ITierItem, ISecurityItem
|
||||
{
|
||||
public Block metaBlock;
|
||||
|
||||
|
@ -193,6 +197,17 @@ public class ItemBlockMachine extends ItemBlock implements IEnergizedItem, ISpec
|
|||
}
|
||||
else if(!MekKeyHandler.getIsKeyPressed(MekanismKeyHandler.modeSwitchKey))
|
||||
{
|
||||
if(hasSecurity(itemstack))
|
||||
{
|
||||
list.add(SecurityUtils.getOwnerDisplay(entityplayer.getCommandSenderName(), getOwner(itemstack)));
|
||||
list.add(EnumColor.GREY + LangUtils.localize("gui.security") + ": " + SecurityUtils.getSecurityDisplay(itemstack));
|
||||
|
||||
if(SecurityUtils.isOverridden(itemstack))
|
||||
{
|
||||
list.add(EnumColor.RED + "(" + LangUtils.localize("gui.overridden") + ")");
|
||||
}
|
||||
}
|
||||
|
||||
if(type == MachineType.BASIC_FACTORY || type == MachineType.ADVANCED_FACTORY || type == MachineType.ELITE_FACTORY)
|
||||
{
|
||||
list.add(EnumColor.INDIGO + LangUtils.localize("tooltip.recipeType") + ": " + EnumColor.GREY + RecipeType.values()[getRecipeType(itemstack)].getLocalizedName());
|
||||
|
@ -301,6 +316,18 @@ public class ItemBlockMachine extends ItemBlock implements IEnergizedItem, ISpec
|
|||
tile.fluidTank.setCapacity(tile.tier.storage);
|
||||
}
|
||||
|
||||
if(tileEntity instanceof ISecurityTile)
|
||||
{
|
||||
ISecurityTile security = (ISecurityTile)tileEntity;
|
||||
security.getSecurity().setOwner(getOwner(stack));
|
||||
security.getSecurity().setMode(getSecurity(stack));
|
||||
|
||||
if(getOwner(stack) == null)
|
||||
{
|
||||
security.getSecurity().setOwner(player.getCommandSenderName());
|
||||
}
|
||||
}
|
||||
|
||||
if(tileEntity instanceof IUpgradeTile)
|
||||
{
|
||||
if(stack.stackTagCompound != null && stack.stackTagCompound.hasKey("upgrades"))
|
||||
|
@ -1019,4 +1046,60 @@ public class ItemBlockMachine extends ItemBlock implements IEnergizedItem, ISpec
|
|||
|
||||
itemstack.stackTagCompound.setInteger("tier", tier.ordinal());
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getOwner(ItemStack stack)
|
||||
{
|
||||
if(stack.stackTagCompound != null && stack.stackTagCompound.hasKey("owner"))
|
||||
{
|
||||
return stack.stackTagCompound.getString("owner");
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setOwner(ItemStack stack, String owner)
|
||||
{
|
||||
if(stack.stackTagCompound == null)
|
||||
{
|
||||
stack.setTagCompound(new NBTTagCompound());
|
||||
}
|
||||
|
||||
if(owner == null || owner.isEmpty())
|
||||
{
|
||||
stack.stackTagCompound.removeTag("owner");
|
||||
return;
|
||||
}
|
||||
|
||||
stack.stackTagCompound.setString("owner", owner);
|
||||
}
|
||||
|
||||
@Override
|
||||
public SecurityMode getSecurity(ItemStack stack)
|
||||
{
|
||||
if(stack.stackTagCompound == null)
|
||||
{
|
||||
return SecurityMode.PUBLIC;
|
||||
}
|
||||
|
||||
return SecurityMode.values()[stack.stackTagCompound.getInteger("security")];
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setSecurity(ItemStack stack, SecurityMode mode)
|
||||
{
|
||||
if(stack.stackTagCompound == null)
|
||||
{
|
||||
stack.setTagCompound(new NBTTagCompound());
|
||||
}
|
||||
|
||||
stack.stackTagCompound.setInteger("security", mode.ordinal());
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasSecurity(ItemStack stack)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -4,8 +4,8 @@ import io.netty.buffer.ByteBuf;
|
|||
import mekanism.api.Coord4D;
|
||||
import mekanism.common.PacketHandler;
|
||||
import mekanism.common.network.PacketSecurityMode.SecurityModeMessage;
|
||||
import mekanism.common.security.ISecurity;
|
||||
import mekanism.common.security.ISecurity.SecurityMode;
|
||||
import mekanism.common.security.ISecurityTile;
|
||||
import mekanism.common.security.ISecurityTile.SecurityMode;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import cpw.mods.fml.common.network.simpleimpl.IMessage;
|
||||
|
@ -20,13 +20,13 @@ public class PacketSecurityMode implements IMessageHandler<SecurityModeMessage,
|
|||
EntityPlayer player = PacketHandler.getPlayer(context);
|
||||
TileEntity tileEntity = message.coord4D.getTileEntity(player.worldObj);
|
||||
|
||||
if(tileEntity instanceof ISecurity)
|
||||
if(tileEntity instanceof ISecurityTile)
|
||||
{
|
||||
String owner = ((ISecurity)tileEntity).getSecurity().getOwner();
|
||||
String owner = ((ISecurityTile)tileEntity).getSecurity().getOwner();
|
||||
|
||||
if(owner != null && player.getCommandSenderName().equals(owner))
|
||||
{
|
||||
((ISecurity)tileEntity).getSecurity().setMode(message.value);
|
||||
((ISecurityTile)tileEntity).getSecurity().setMode(message.value);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
package mekanism.common.security;
|
||||
|
||||
import mekanism.common.security.ISecurity.SecurityMode;
|
||||
import mekanism.common.security.ISecurityTile.SecurityMode;
|
||||
import net.minecraft.item.ItemStack;
|
||||
|
||||
public interface ISecurityItem
|
||||
|
|
|
@ -4,15 +4,15 @@ import mekanism.api.EnumColor;
|
|||
import mekanism.common.tile.component.TileComponentSecurity;
|
||||
import mekanism.common.util.LangUtils;
|
||||
|
||||
public interface ISecurity
|
||||
public interface ISecurityTile
|
||||
{
|
||||
public TileComponentSecurity getSecurity();
|
||||
|
||||
public enum SecurityMode
|
||||
{
|
||||
PUBLIC(EnumColor.BRIGHT_GREEN + "security.public"),
|
||||
PRIVATE(EnumColor.RED + "security.private"),
|
||||
TRUSTED(EnumColor.ORANGE + "security.trusted");
|
||||
PUBLIC("security.public", EnumColor.BRIGHT_GREEN),
|
||||
PRIVATE("security.private", EnumColor.RED),
|
||||
TRUSTED("security.trusted", EnumColor.ORANGE);
|
||||
|
||||
private String display;
|
||||
private EnumColor color;
|
||||
|
@ -22,9 +22,10 @@ public interface ISecurity
|
|||
return color + LangUtils.localize(display);
|
||||
}
|
||||
|
||||
private SecurityMode(String s)
|
||||
private SecurityMode(String s, EnumColor c)
|
||||
{
|
||||
display = s;
|
||||
color = c;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -7,7 +7,7 @@ import java.util.ArrayList;
|
|||
import mekanism.common.HashList;
|
||||
import mekanism.common.PacketHandler;
|
||||
import mekanism.common.frequency.Frequency;
|
||||
import mekanism.common.security.ISecurity.SecurityMode;
|
||||
import mekanism.common.security.ISecurityTile.SecurityMode;
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
import net.minecraft.nbt.NBTTagList;
|
||||
import net.minecraft.nbt.NBTTagString;
|
||||
|
|
|
@ -32,8 +32,10 @@ import mekanism.common.recipe.RecipeHandler;
|
|||
import mekanism.common.recipe.RecipeHandler.Recipe;
|
||||
import mekanism.common.recipe.inputs.InfusionInput;
|
||||
import mekanism.common.recipe.machines.MetallurgicInfuserRecipe;
|
||||
import mekanism.common.security.ISecurityTile;
|
||||
import mekanism.common.tile.component.TileComponentConfig;
|
||||
import mekanism.common.tile.component.TileComponentEjector;
|
||||
import mekanism.common.tile.component.TileComponentSecurity;
|
||||
import mekanism.common.tile.component.TileComponentUpgrade;
|
||||
import mekanism.common.util.ChargeUtils;
|
||||
import mekanism.common.util.InventoryUtils;
|
||||
|
@ -42,7 +44,7 @@ import net.minecraft.item.ItemStack;
|
|||
import net.minecraft.nbt.NBTTagCompound;
|
||||
import net.minecraftforge.common.util.ForgeDirection;
|
||||
|
||||
public class TileEntityMetallurgicInfuser extends TileEntityNoisyElectricBlock implements IComputerIntegration, ISideConfiguration, IUpgradeTile, IRedstoneControl, IConfigCardAccess
|
||||
public class TileEntityMetallurgicInfuser extends TileEntityNoisyElectricBlock implements IComputerIntegration, ISideConfiguration, IUpgradeTile, IRedstoneControl, IConfigCardAccess, ISecurityTile
|
||||
{
|
||||
/** The maxiumum amount of infuse this machine can store. */
|
||||
public int MAX_INFUSE = 1000;
|
||||
|
@ -81,6 +83,7 @@ public class TileEntityMetallurgicInfuser extends TileEntityNoisyElectricBlock i
|
|||
public TileComponentUpgrade upgradeComponent;
|
||||
public TileComponentEjector ejectorComponent;
|
||||
public TileComponentConfig configComponent;
|
||||
public TileComponentSecurity securityComponent;
|
||||
|
||||
public TileEntityMetallurgicInfuser()
|
||||
{
|
||||
|
@ -104,6 +107,8 @@ public class TileEntityMetallurgicInfuser extends TileEntityNoisyElectricBlock i
|
|||
|
||||
ejectorComponent = new TileComponentEjector(this);
|
||||
ejectorComponent.setOutputData(TransmissionType.ITEM, configComponent.getOutputs(TransmissionType.ITEM).get(2));
|
||||
|
||||
securityComponent = new TileComponentSecurity(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -550,6 +555,12 @@ public class TileEntityMetallurgicInfuser extends TileEntityNoisyElectricBlock i
|
|||
{
|
||||
return ejectorComponent;
|
||||
}
|
||||
|
||||
@Override
|
||||
public TileComponentSecurity getSecurity()
|
||||
{
|
||||
return securityComponent;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void recalculateUpgradables(Upgrade upgrade)
|
||||
|
|
|
@ -9,7 +9,7 @@ import mekanism.common.Mekanism;
|
|||
import mekanism.common.PacketHandler;
|
||||
import mekanism.common.frequency.Frequency;
|
||||
import mekanism.common.frequency.FrequencyManager;
|
||||
import mekanism.common.security.ISecurity.SecurityMode;
|
||||
import mekanism.common.security.ISecurityTile.SecurityMode;
|
||||
import mekanism.common.security.ISecurityItem;
|
||||
import mekanism.common.security.SecurityFrequency;
|
||||
import mekanism.common.util.MekanismUtils;
|
||||
|
|
|
@ -10,7 +10,7 @@ import mekanism.common.PacketHandler;
|
|||
import mekanism.common.base.ITileComponent;
|
||||
import mekanism.common.frequency.Frequency;
|
||||
import mekanism.common.frequency.FrequencyManager;
|
||||
import mekanism.common.security.ISecurity.SecurityMode;
|
||||
import mekanism.common.security.ISecurityTile.SecurityMode;
|
||||
import mekanism.common.security.SecurityFrequency;
|
||||
import mekanism.common.tile.TileEntityContainerBlock;
|
||||
import mekanism.common.util.MekanismUtils;
|
||||
|
@ -34,6 +34,11 @@ public class TileComponentSecurity implements ITileComponent
|
|||
tile.components.add(this);
|
||||
}
|
||||
|
||||
public SecurityFrequency getFrequency()
|
||||
{
|
||||
return frequency;
|
||||
}
|
||||
|
||||
public String getOwner()
|
||||
{
|
||||
return owner;
|
||||
|
|
|
@ -19,6 +19,7 @@ import mekanism.common.block.BlockMachine.MachineType;
|
|||
import mekanism.common.inventory.InventoryBin;
|
||||
import mekanism.common.recipe.ShapedMekanismRecipe;
|
||||
import mekanism.common.recipe.ShapelessMekanismRecipe;
|
||||
import mekanism.common.security.ISecurityItem;
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.inventory.InventoryCrafting;
|
||||
import net.minecraft.item.Item;
|
||||
|
@ -150,6 +151,22 @@ public class RecipeUtils
|
|||
}
|
||||
}
|
||||
|
||||
if(toReturn.getItem() instanceof ISecurityItem)
|
||||
{
|
||||
for(int i = 0; i < 9; i++)
|
||||
{
|
||||
ItemStack itemstack = inv.getStackInSlot(i);
|
||||
|
||||
if(itemstack.getItem() instanceof ISecurityItem)
|
||||
{
|
||||
((ISecurityItem)toReturn.getItem()).setOwner(toReturn, ((ISecurityItem)itemstack.getItem()).getOwner(itemstack));
|
||||
((ISecurityItem)toReturn.getItem()).setSecurity(toReturn, ((ISecurityItem)itemstack.getItem()).getSecurity(itemstack));
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if(toReturn.getItem() instanceof IFluidContainerItem)
|
||||
{
|
||||
FluidStack fluidFound = null;
|
||||
|
|
|
@ -3,13 +3,14 @@ package mekanism.common.util;
|
|||
import mekanism.api.EnumColor;
|
||||
import mekanism.common.Mekanism;
|
||||
import mekanism.common.frequency.Frequency;
|
||||
import mekanism.common.security.ISecurity;
|
||||
import mekanism.common.security.ISecurity.SecurityMode;
|
||||
import mekanism.common.security.ISecurityItem;
|
||||
import mekanism.common.security.ISecurityTile;
|
||||
import mekanism.common.security.ISecurityTile.SecurityMode;
|
||||
import mekanism.common.security.SecurityFrequency;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.util.ChatComponentText;
|
||||
|
||||
public final class SecurityUtils
|
||||
{
|
||||
|
@ -27,12 +28,12 @@ public final class SecurityUtils
|
|||
|
||||
public static boolean canAccess(EntityPlayer player, TileEntity tile)
|
||||
{
|
||||
if(tile == null || !(tile instanceof ISecurity))
|
||||
if(tile == null || !(tile instanceof ISecurityTile))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
ISecurity security = (ISecurity)tile;
|
||||
ISecurityTile security = (ISecurityTile)tile;
|
||||
|
||||
return canAccess(security.getSecurity().getMode(), player.getCommandSenderName(), security.getSecurity().getOwner());
|
||||
}
|
||||
|
@ -93,4 +94,85 @@ public final class SecurityUtils
|
|||
|
||||
return EnumColor.GREY + LangUtils.localize("gui.owner") + ": " + (user.equals(owner) ? EnumColor.BRIGHT_GREEN : EnumColor.RED) + owner;
|
||||
}
|
||||
|
||||
public static void displayNoAccess(EntityPlayer player)
|
||||
{
|
||||
player.addChatMessage(new ChatComponentText(EnumColor.DARK_BLUE + "[Mekanism] " + EnumColor.RED + LangUtils.localize("gui.noAccessDesc")));
|
||||
}
|
||||
|
||||
public static SecurityMode getSecurity(ISecurityTile security)
|
||||
{
|
||||
SecurityFrequency freq = security.getSecurity().getFrequency();
|
||||
|
||||
if(freq != null && freq.override)
|
||||
{
|
||||
return freq.securityMode;
|
||||
}
|
||||
|
||||
return security.getSecurity().getMode();
|
||||
}
|
||||
|
||||
public static String getSecurityDisplay(ItemStack stack)
|
||||
{
|
||||
ISecurityItem security = (ISecurityItem)stack.getItem();
|
||||
SecurityMode mode = security.getSecurity(stack);
|
||||
|
||||
if(security.getOwner(stack) != null)
|
||||
{
|
||||
SecurityFrequency freq = getFrequency(security.getOwner(stack));
|
||||
|
||||
if(freq != null && freq.override)
|
||||
{
|
||||
mode = freq.securityMode;
|
||||
}
|
||||
}
|
||||
|
||||
return mode.getDisplay();
|
||||
}
|
||||
|
||||
public static String getSecurityDisplay(TileEntity tile)
|
||||
{
|
||||
ISecurityTile security = (ISecurityTile)tile;
|
||||
SecurityMode mode = security.getSecurity().getMode();
|
||||
|
||||
if(security.getSecurity().getOwner() != null)
|
||||
{
|
||||
SecurityFrequency freq = getFrequency(security.getSecurity().getOwner());
|
||||
|
||||
if(freq != null && freq.override)
|
||||
{
|
||||
mode = freq.securityMode;
|
||||
}
|
||||
}
|
||||
|
||||
return mode.getDisplay();
|
||||
}
|
||||
|
||||
public static boolean isOverridden(ItemStack stack)
|
||||
{
|
||||
ISecurityItem security = (ISecurityItem)stack.getItem();
|
||||
|
||||
if(security.getOwner(stack) == null)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
SecurityFrequency freq = getFrequency(security.getOwner(stack));
|
||||
|
||||
return freq != null && freq.override;
|
||||
}
|
||||
|
||||
public static boolean isOverridden(TileEntity tile)
|
||||
{
|
||||
ISecurityTile security = (ISecurityTile)tile;
|
||||
|
||||
if(security.getSecurity().getOwner() == null)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
SecurityFrequency freq = getFrequency(security.getSecurity().getOwner());
|
||||
|
||||
return freq != null && freq.override;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -545,9 +545,12 @@ gui.noOwner=No Owner
|
|||
gui.securityOverride=Security Override
|
||||
gui.remove=Remove
|
||||
gui.trustedPlayers=Trusted Players
|
||||
gui.publicMode=Public Mode (universal access)
|
||||
gui.privateMode=Private Mode (owner-exclusive access)
|
||||
gui.trustedMode=Trusted Mode (owner and trusted player access)
|
||||
gui.publicMode=Public Mode
|
||||
gui.privateMode=Private Mode
|
||||
gui.trustedMode=Trusted Mode
|
||||
gui.securityOffline=Security Offline
|
||||
gui.noAccessDesc=You don't have access to this block.
|
||||
gui.overridden=Overridden
|
||||
|
||||
gui.reactor.injectionRate=Injection Rate
|
||||
|
||||
|
|
Loading…
Reference in a new issue