Access protection key

This commit is contained in:
Justin Aquadro committed 2016-02-08 23:04:37 -05:00
1 parent 280719a1ef
commit f94d25fc68
13 files changed
+165 -40

No files matched your search

@@ -32,6 +32,8 @@ item.storagedrawers.upgradeSorting.name=Sorting Upgrade
item.storagedrawers.upgradeSorting.description=For Refined Relocation
item.storagedrawers.shroudKey.name=Concealment Key
item.storagedrawers.shroudKey.description=Show or hide item labels
item.storagedrawers.personalKey.name=Personal Key
item.storagedrawers.personalKey.description=Protect access from other players
item.storagedrawers.tape.name=Packing Tape
item.storagedrawers.tape.description=Seals drawers for moving
@@ -97,6 +99,7 @@ storageDrawers.waila.nolimit=Stack Limit: ∞
storageDrawers.waila.locked=Locked
storageDrawers.waila.void=Void
storageDrawers.waila.sorting=Sorting
storageDrawers.waila.protected=Protected
# Configuration
storageDrawers.config.title=Storage Drawers Configuration
@@ -132,6 +135,7 @@ storageDrawers.config.prop.enableIndicatorUpgrades=Enable Indicator Upgrades
storageDrawers.config.prop.enableStorageUpgrades=Enable Storage Upgrades
storageDrawers.config.prop.enableLockUpgrades=Enable Drawer Locking
storageDrawers.config.prop.enableShroudUpgrades=Enable Item Concealing
storageDrawers.config.prop.enablePersonalUpgrades=Enable Access Protection
storageDrawers.config.prop.enableVoidUpgrades=Enable Void Upgrade
storageDrawers.config.prop.enableCreativeUpgrades=Enable Creative Upgrade
storageDrawers.config.prop.enableSortingUpgrades=Enable Sorting Upgrade
Binary file not shown.

After

Width:  |  Height:  |  Size: 235 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 251 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 357 B

@@ -0,0 +1,8 @@
package com.jaquadro.minecraft.storagedrawers.api.storage.attribute;
/**
* Created by Justin on 2/8/2016.
*/
public interface IProtectable
{
}
@@ -99,6 +99,10 @@ public class BlockDrawers extends BlockContainer implements IExtendedBlockClickH
@SideOnly(Side.CLIENT)
private IIcon iconLock;
@SideOnly(Side.CLIENT)
private IIcon iconClaim;
@SideOnly(Side.CLIENT)
private IIcon iconClaimLock;
@SideOnly(Side.CLIENT)
private IIcon iconVoid;
@SideOnly(Side.CLIENT)
@@ -297,6 +301,9 @@ public class BlockDrawers extends BlockContainer implements IExtendedBlockClickH
TileEntityDrawers tileDrawers = getTileEntitySafe(world, x, y, z);
ItemStack item = player.inventory.getCurrentItem();
if (tileDrawers.getOwner() != null && !player.getPersistentID().equals(tileDrawers.getOwner()))
return false;
if (StorageDrawers.config.cache.debugTrace) {
FMLLog.log(StorageDrawers.MOD_ID, Level.INFO, "BlockDrawers.onBlockActivated");
FMLLog.log(StorageDrawers.MOD_ID, Level.INFO, (item == null) ? " null item" : " " + item.toString());
@@ -340,6 +347,15 @@ public class BlockDrawers extends BlockContainer implements IExtendedBlockClickH
tileDrawers.setIsShrouded(!tileDrawers.isShrouded());
return true;
}
else if (item.getItem() == ModItems.personalKey) {
if (tileDrawers.getOwner() == null)
tileDrawers.setOwner(player.getPersistentID());
else if (player.getPersistentID().equals(tileDrawers.getOwner()))
tileDrawers.setOwner(null);
else
return false;
return true;
}
else if (item.getItem() == ModItems.tape)
return false;
}
@@ -433,6 +449,9 @@ public class BlockDrawers extends BlockContainer implements IExtendedBlockClickH
if (tileDrawers.isSealed())
return;
if (tileDrawers.getOwner() != null && !tileDrawers.getOwner().equals(player.getPersistentID()))
return;
int slot = getDrawerSlot(side, hitX, hitY, hitZ);
IDrawer drawer = tileDrawers.getDrawer(slot);
@@ -791,8 +810,15 @@ public class BlockDrawers extends BlockContainer implements IExtendedBlockClickH
}
@SideOnly(Side.CLIENT)
public IIcon getLockIcon () {
return iconLock;
public IIcon getLockIcon (boolean locked, boolean claimed) {
if (locked && claimed)
return iconClaimLock;
else if (locked)
return iconLock;
else if (claimed)
return iconClaim;
else
return null;
}
@SideOnly(Side.CLIENT)
@@ -854,6 +880,8 @@ public class BlockDrawers extends BlockContainer implements IExtendedBlockClickH
iconIndicator4[1] = register.registerIcon(StorageDrawers.MOD_ID + ":indicator/indicator_4_on");
iconLock = register.registerIcon(StorageDrawers.MOD_ID + ":indicator/lock_icon");
iconClaim = register.registerIcon(StorageDrawers.MOD_ID + ":indicator/claim_icon");
iconClaimLock = register.registerIcon(StorageDrawers.MOD_ID + ":indicator/claim_lock_icon");
iconVoid = register.registerIcon(StorageDrawers.MOD_ID + ":indicator/void_icon");
loadBlockConfig();
@@ -47,6 +47,7 @@ public abstract class TileEntityDrawers extends BaseTileEntity implements IDrawe
private boolean shrouded = false;
private boolean taped = false;
private boolean hideUpgrade = false;
private UUID owner;
private EnumSet<LockAttribute> lockAttributes = null;
@@ -241,6 +242,24 @@ public abstract class TileEntityDrawers extends BaseTileEntity implements IDrawe
}
}
public UUID getOwner () {
if (!StorageDrawers.config.cache.enablePersonalUpgrades)
return null;
return owner;
}
public void setOwner (UUID owner) {
if ((this.owner != null && !this.owner.equals(owner)) || (owner != null && !owner.equals(this.owner))) {
this.owner = owner;
if (worldObj != null && !worldObj.isRemote) {
markDirty();
worldObj.markBlockForUpdate(xCoord, yCoord, zCoord);
}
}
}
public boolean shouldHideUpgrades () {
return hideUpgrade;
}
@@ -476,6 +495,10 @@ public abstract class TileEntityDrawers extends BaseTileEntity implements IDrawe
if (tag.hasKey("Shr"))
shrouded = tag.getBoolean("Shr");
owner = null;
if (tag.hasKey("Own"))
owner = UUID.fromString(tag.getString("Own"));
hideUpgrade = false;
if (tag.hasKey("HideUp"))
hideUpgrade = tag.getBoolean("HideUp");
@@ -517,6 +540,9 @@ public abstract class TileEntityDrawers extends BaseTileEntity implements IDrawe
if (shrouded)
tag.setBoolean("Shr", shrouded);
if (owner != null)
tag.setString("Own", owner.toString());
if (hideUpgrade)
tag.setBoolean("HideUp", hideUpgrade);
@@ -136,7 +136,7 @@ public class DrawersRenderer implements ISimpleBlockRenderingHandler
if (StorageDrawers.config.cache.enableIndicatorUpgrades)
renderIndicator(block, x, y, z, side, renderer, tile.getEffectiveStatusLevel());
if (StorageDrawers.config.cache.enableLockUpgrades)
renderLock(block, x, y, z, side, renderer, tile.isLocked(LockAttribute.LOCK_POPULATED));
renderLock(block, x, y, z, side, renderer, tile.isLocked(LockAttribute.LOCK_POPULATED), tile.getOwner() != null);
if (StorageDrawers.config.cache.enableVoidUpgrades)
renderVoid(block, x, y, z, side, renderer, tile.isVoid());
if (StorageDrawers.config.cache.enableTape)
@@ -147,12 +147,12 @@ public class DrawersRenderer implements ISimpleBlockRenderingHandler
return true;
}
private void renderLock (BlockDrawers block, int x, int y, int z, int side, RenderBlocks renderer, boolean locked) {
if (!locked)
private void renderLock (BlockDrawers block, int x, int y, int z, int side, RenderBlocks renderer, boolean locked, boolean owned) {
if (!locked && !owned)
return;
double depth = block.halfDepth ? .5 : 1;
IIcon iconLock = block.getLockIcon();
IIcon iconLock = block.getLockIcon(locked, owned);
RenderHelper.instance.setRenderBounds(0.46875, 0.9375, 0, 0.53125, 1, depth + .005);
RenderHelper.instance.state.setRotateTransform(RenderHelper.ZPOS, side);
@@ -60,6 +60,7 @@ public class ConfigManager
public boolean enableVoidUpgrades;
public boolean enableCreativeUpgrades;
public boolean enableShroudUpgrades;
public boolean enablePersonalUpgrades;
public boolean enableSortingUpgrades;
public boolean renderStorageUpgrades;
public boolean enableDrawerUI;
@@ -229,6 +230,7 @@ public class ConfigManager
cache.enableVoidUpgrades = config.get(Configuration.CATEGORY_GENERAL, "enableVoidUpgrades", true).setLanguageKey(LANG_PREFIX + "prop.enableVoidUpgrades").setRequiresMcRestart(true).getBoolean();
cache.enableCreativeUpgrades = config.get(Configuration.CATEGORY_GENERAL, "enableCreativeUpgrades", true).setLanguageKey(LANG_PREFIX + "prop.enableCreativeUpgrades").setRequiresMcRestart(true).getBoolean();
cache.enableShroudUpgrades = config.get(Configuration.CATEGORY_GENERAL, "enableShroudUpgrades", true).setLanguageKey(LANG_PREFIX + "prop.enableShroudUpgrades").setRequiresMcRestart(true).getBoolean();
cache.enablePersonalUpgrades = config.get(Configuration.CATEGORY_GENERAL, "enablePersonalUpgrades", true).setLanguageKey(LANG_PREFIX + "prop.enablePersonalUpgrades").setRequiresMcRestart(true).getBoolean();
cache.enableSortingUpgrades = config.get(Configuration.CATEGORY_GENERAL, "enableSortingUpgrades", true).setLanguageKey(LANG_PREFIX + "prop.enableSortingUpgrades").setRequiresMcRestart(true).getBoolean();
cache.enableTape = config.get(Configuration.CATEGORY_GENERAL, "enableTape", true).setLanguageKey(LANG_PREFIX + "prop.enableTape").setRequiresMcRestart(true).getBoolean();
cache.itemRenderType = config.get(Configuration.CATEGORY_GENERAL, "itemRenderType", "fast", null, new String[]{"fancy", "fast"}).setLanguageKey(LANG_PREFIX + "prop.itemRenderType").getString();
@@ -14,6 +14,7 @@ public class ModItems
public static ItemUpgradeVoid upgradeVoid;
public static ItemUpgradeCreative upgradeCreative;
public static ItemShroudKey shroudKey;
public static ItemPersonalKey personalKey;
public static ItemTape tape;
public void init () {
@@ -24,6 +25,7 @@ public class ModItems
upgradeVoid = new ItemUpgradeVoid(makeName("upgradeVoid"));
upgradeCreative = new ItemUpgradeCreative(makeName("upgradeCreative"));
shroudKey = new ItemShroudKey(makeName("shroudKey"));
personalKey = new ItemPersonalKey(makeName("personalKey"));
tape = new ItemTape(makeName("tape"));
GameRegistry.registerItem(upgradeTemplate, "upgradeTemplate");
@@ -40,6 +42,8 @@ public class ModItems
GameRegistry.registerItem(upgradeLock, "upgradeLock");
if (StorageDrawers.config.cache.enableShroudUpgrades)
GameRegistry.registerItem(shroudKey, "shroudKey");
if (StorageDrawers.config.cache.enablePersonalUpgrades)
GameRegistry.registerItem(personalKey, "personalKey");
if (StorageDrawers.config.cache.enableTape)
GameRegistry.registerItem(tape, "tape");
}
@@ -116,6 +116,10 @@ public class ModRecipes
GameRegistry.addShapelessRecipe(new ItemStack(ModItems.shroudKey), ModItems.upgradeLock, Items.ender_eye);
}
if (config.cache.enablePersonalUpgrades) {
GameRegistry.addShapelessRecipe(new ItemStack(ModItems.personalKey), ModItems.upgradeLock, Items.name_tag);
}
if (config.cache.enableTape) {
GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.tape), " x ", "yyy",
'x', "slimeball", 'y', Items.paper));
@@ -13,6 +13,7 @@ import mcp.mobius.waila.api.IWailaConfigHandler;
import mcp.mobius.waila.api.IWailaDataAccessor;
import mcp.mobius.waila.api.IWailaDataProvider;
import mcp.mobius.waila.api.IWailaRegistrar;
import net.minecraft.client.Minecraft;
import net.minecraft.entity.player.EntityPlayerMP;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
@@ -61,46 +62,47 @@ public class Waila extends IntegrationModule
public List<String> getWailaBody (ItemStack itemStack, List<String> currenttip, IWailaDataAccessor accessor, IWailaConfigHandler config) {
TileEntityDrawers tile = (TileEntityDrawers) accessor.getTileEntity();
IDrawerGroup group = tile;
for (int i = 0; i < group.getDrawerCount(); i++) {
if (!group.isDrawerEnabled(i))
continue;
if (tile.getOwner() == null || tile.getOwner().equals(Minecraft.getMinecraft().thePlayer.getPersistentID())) {
IDrawerGroup group = tile;
for (int i = 0; i < group.getDrawerCount(); i++) {
if (!group.isDrawerEnabled(i))
continue;
String name = StatCollector.translateToLocal("storageDrawers.waila.empty");
String name = StatCollector.translateToLocal("storageDrawers.waila.empty");
IDrawer drawer = group.getDrawer(i);
ItemStack stack = drawer.getStoredItemPrototype();
if (stack != null && stack.getItem() != null) {
String stackName = stack.getDisplayName();
List<IWailaTooltipHandler> handlers = StorageDrawers.wailaRegistry.getTooltipHandlers();
for (int j = 0, n = handlers.size(); j < n; j++)
stackName = handlers.get(j).transformItemName(drawer, stackName);
IDrawer drawer = group.getDrawer(i);
ItemStack stack = drawer.getStoredItemPrototype();
if (stack != null && stack.getItem() != null) {
String stackName = stack.getDisplayName();
List<IWailaTooltipHandler> handlers = StorageDrawers.wailaRegistry.getTooltipHandlers();
for (int j = 0, n = handlers.size(); j < n; j++)
stackName = handlers.get(j).transformItemName(drawer, stackName);
if (drawer.getStoredItemCount() == Integer.MAX_VALUE)
name = stackName + " [\u221E]";
else if (drawer instanceof IFractionalDrawer && ((IFractionalDrawer) drawer).getConversionRate() > 1)
name = stackName + ((i == 0) ? " [" : " [+") + ((IFractionalDrawer) drawer).getStoredItemRemainder() + "]";
else if (StorageDrawers.config.cache.stackRemainderWaila) {
int stacks = drawer.getStoredItemCount() / drawer.getStoredItemStackSize();
int remainder = drawer.getStoredItemCount() - (stacks * drawer.getStoredItemStackSize());
if (stacks > 0 && remainder > 0)
name = stackName + " [" + stacks + "x" + drawer.getStoredItemStackSize() + " + " + remainder + "]";
else if (stacks > 0)
name = stackName + " [" + stacks + "x" + drawer.getStoredItemStackSize() + "]";
else
name = stackName + " [" + remainder + "]";
if (drawer.getStoredItemCount() == Integer.MAX_VALUE)
name = stackName + " [\u221E]";
else if (drawer instanceof IFractionalDrawer && ((IFractionalDrawer) drawer).getConversionRate() > 1)
name = stackName + ((i == 0) ? " [" : " [+") + ((IFractionalDrawer) drawer).getStoredItemRemainder() + "]";
else if (StorageDrawers.config.cache.stackRemainderWaila) {
int stacks = drawer.getStoredItemCount() / drawer.getStoredItemStackSize();
int remainder = drawer.getStoredItemCount() - (stacks * drawer.getStoredItemStackSize());
if (stacks > 0 && remainder > 0)
name = stackName + " [" + stacks + "x" + drawer.getStoredItemStackSize() + " + " + remainder + "]";
else if (stacks > 0)
name = stackName + " [" + stacks + "x" + drawer.getStoredItemStackSize() + "]";
else
name = stackName + " [" + remainder + "]";
} else
name = stackName + " [" + drawer.getStoredItemCount() + "]";
}
else
name = stackName + " [" + drawer.getStoredItemCount() + "]";
currenttip.add(StatCollector.translateToLocalFormatted("storageDrawers.waila.drawer", i + 1, name));
}
currenttip.add(StatCollector.translateToLocalFormatted("storageDrawers.waila.drawer", i + 1, name));
}
if (tile.isUnlimited() || tile.isVending())
currenttip.add(StatCollector.translateToLocalFormatted("storageDrawers.waila.nolimit"));
else {
int limit = tile.getDrawerCapacity() * tile.getEffectiveStorageMultiplier();
currenttip.add(StatCollector.translateToLocalFormatted("storageDrawers.waila.limit", limit, tile.getEffectiveStorageMultiplier()));
if (tile.isUnlimited() || tile.isVending())
currenttip.add(StatCollector.translateToLocalFormatted("storageDrawers.waila.nolimit"));
else {
int limit = tile.getDrawerCapacity() * tile.getEffectiveStorageMultiplier();
currenttip.add(StatCollector.translateToLocalFormatted("storageDrawers.waila.limit", limit, tile.getEffectiveStorageMultiplier()));
}
}
String attrib = "";
@@ -110,6 +112,8 @@ public class Waila extends IntegrationModule
attrib += (attrib.isEmpty() ? "" : ", ") + StatCollector.translateToLocal("storageDrawers.waila.void");
if (tile.isSorting())
attrib += (attrib.isEmpty() ? "" : ", ") + StatCollector.translateToLocal("storageDrawers.waila.sorting");
if (tile.getOwner() != null)
attrib += (attrib.isEmpty() ? "" : ", ") + StatCollector.translateToLocal("storageDrawers.waila.protected");
if (!attrib.isEmpty())
currenttip.add(attrib);
@@ -0,0 +1,45 @@
package com.jaquadro.minecraft.storagedrawers.item;
import com.google.common.collect.Multimap;
import com.jaquadro.minecraft.storagedrawers.StorageDrawers;
import com.jaquadro.minecraft.storagedrawers.core.ModCreativeTabs;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import net.minecraft.entity.SharedMonsterAttributes;
import net.minecraft.entity.ai.attributes.AttributeModifier;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.util.StatCollector;
import java.util.List;
public class ItemPersonalKey extends Item
{
public ItemPersonalKey (String name) {
setUnlocalizedName(name);
setCreativeTab(ModCreativeTabs.tabStorageDrawers);
setTextureName(StorageDrawers.MOD_ID + ":drawer_key_personal");
setMaxDamage(0);
}
@Override
@SideOnly(Side.CLIENT)
public void addInformation (ItemStack itemStack, EntityPlayer player, List list, boolean par4) {
String name = getUnlocalizedName(itemStack);
list.add(StatCollector.translateToLocalFormatted(name + ".description"));
}
@SideOnly(Side.CLIENT)
public boolean isFull3D()
{
return true;
}
@Override
public Multimap getAttributeModifiers (ItemStack item) {
Multimap multimap = super.getAttributeModifiers(item);
multimap.put(SharedMonsterAttributes.attackDamage.getAttributeUnlocalizedName(), new AttributeModifier(field_111210_e, "Weapon modifier", (double)2, 0));
return multimap;
}
}