From 591f139f0678591df6370ad53b4e3175600f2c14 Mon Sep 17 00:00:00 2001 From: raoulvdberge Date: Fri, 1 Sep 2017 09:51:12 +0200 Subject: [PATCH] Always store owner of a network node --- .../apiimpl/network/node/NetworkNode.java | 24 ++++++++++++++++++ .../node/NetworkNodeSecurityManager.java | 25 ------------------- .../refinedstorage/block/BlockNode.java | 11 +++++--- .../block/BlockSecurityManager.java | 11 -------- .../refinedstorage/item/ItemBase.java | 16 ++++++------ .../refinedstorage/tile/TileBase.java | 12 ++++----- .../refinedstorage/tile/TileController.java | 8 +++--- 7 files changed, 51 insertions(+), 56 deletions(-) diff --git a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNode.java b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNode.java index 5ef36b2d6..f578d9128 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNode.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNode.java @@ -22,14 +22,19 @@ import net.minecraftforge.items.IItemHandler; import javax.annotation.Nonnull; import javax.annotation.Nullable; +import java.util.UUID; public abstract class NetworkNode implements INetworkNode, INetworkNodeVisitor, IWrenchable { + private static final String NBT_OWNER = "Owner"; + @Nullable protected INetwork network; protected World world; protected BlockPos pos; protected int ticks; protected RedstoneMode redstoneMode = RedstoneMode.IGNORE; + @Nullable + protected UUID owner; private EnumFacing direction; @@ -131,6 +136,10 @@ public abstract class NetworkNode implements INetworkNode, INetworkNodeVisitor, @Override public NBTTagCompound write(NBTTagCompound tag) { + if (owner != null) { + tag.setUniqueId(NBT_OWNER, owner); + } + writeConfiguration(tag); return tag; @@ -144,6 +153,10 @@ public abstract class NetworkNode implements INetworkNode, INetworkNodeVisitor, } public void read(NBTTagCompound tag) { + if (tag.hasKey(NBT_OWNER)) { + owner = tag.getUniqueId(NBT_OWNER); + } + readConfiguration(tag); } @@ -219,6 +232,17 @@ public abstract class NetworkNode implements INetworkNode, INetworkNodeVisitor, this.active = active; } + public void setOwner(@Nullable UUID owner) { + this.owner = owner; + + markDirty(); + } + + @Nullable + public UUID getOwner() { + return owner; + } + @Override public boolean equals(Object o) { return API.instance().isNetworkNodeEqual(this, o); diff --git a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeSecurityManager.java b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeSecurityManager.java index 86dea50b7..669937052 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeSecurityManager.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeSecurityManager.java @@ -19,7 +19,6 @@ import net.minecraft.world.World; import net.minecraftforge.items.IItemHandler; import net.minecraftforge.items.wrapper.CombinedInvWrapper; -import javax.annotation.Nullable; import java.util.ArrayList; import java.util.List; import java.util.UUID; @@ -27,8 +26,6 @@ import java.util.UUID; public class NetworkNodeSecurityManager extends NetworkNode implements ISecurityCardContainer { public static final String ID = "security_manager"; - private static final String NBT_OWNER = "Owner"; - private List actualCards = new ArrayList<>(); private ItemHandlerBase cards = new ItemHandlerBase(9 * 2, new ItemHandlerListenerNetworkNode(this), new ItemValidatorBasic(RSItems.SECURITY_CARD)) { @@ -47,9 +44,6 @@ public class NetworkNodeSecurityManager extends NetworkNode implements ISecurity }; private ItemHandlerBase editCard = new ItemHandlerBase(1, new ItemHandlerListenerNetworkNode(this), new ItemValidatorBasic(RSItems.SECURITY_CARD)); - @Nullable - private UUID owner; - public NetworkNodeSecurityManager(World world, BlockPos pos) { super(world, pos); } @@ -76,17 +70,6 @@ public class NetworkNodeSecurityManager extends NetworkNode implements ISecurity } } - public void setOwner(@Nullable UUID owner) { - this.owner = owner; - - markDirty(); - } - - @Nullable - public UUID getOwner() { - return owner; - } - private void rebuildCards() { actualCards.clear(); @@ -115,10 +98,6 @@ public class NetworkNodeSecurityManager extends NetworkNode implements ISecurity public void read(NBTTagCompound tag) { super.read(tag); - if (tag.hasKey(NBT_OWNER)) { - owner = UUID.fromString(tag.getString(NBT_OWNER)); - } - StackUtils.readItems(cards, 0, tag); StackUtils.readItems(editCard, 1, tag); } @@ -132,10 +111,6 @@ public class NetworkNodeSecurityManager extends NetworkNode implements ISecurity public NBTTagCompound write(NBTTagCompound tag) { super.write(tag); - if (owner != null) { - tag.setString(NBT_OWNER, owner.toString()); - } - StackUtils.writeItems(cards, 0, tag); StackUtils.writeItems(editCard, 1, tag); diff --git a/src/main/java/com/raoulvdberge/refinedstorage/block/BlockNode.java b/src/main/java/com/raoulvdberge/refinedstorage/block/BlockNode.java index 54484844f..3fc572318 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/block/BlockNode.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/block/BlockNode.java @@ -10,6 +10,7 @@ import net.minecraft.block.properties.PropertyBool; import net.minecraft.block.state.BlockStateContainer; import net.minecraft.block.state.IBlockState; import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.math.BlockPos; @@ -35,13 +36,17 @@ public abstract class BlockNode extends BlockBase { super.onBlockPlacedBy(world, pos, state, placer, stack); if (!world.isRemote) { - if (stack.hasTagCompound() && stack.getTagCompound().hasKey(NBT_REFINED_STORAGE_DATA)) { - TileEntity tile = world.getTileEntity(pos); + TileEntity tile = world.getTileEntity(pos); - if (tile instanceof TileNode) { + if (tile instanceof TileNode) { + if (stack.hasTagCompound() && stack.getTagCompound().hasKey(NBT_REFINED_STORAGE_DATA)) { ((TileNode) tile).getNode().readConfiguration(stack.getTagCompound().getCompoundTag(NBT_REFINED_STORAGE_DATA)); ((TileNode) tile).getNode().markDirty(); } + + if (placer instanceof EntityPlayer) { + ((TileNode) tile).getNode().setOwner(((EntityPlayer) placer).getGameProfile().getId()); + } } API.instance().discoverNode(world, pos); diff --git a/src/main/java/com/raoulvdberge/refinedstorage/block/BlockSecurityManager.java b/src/main/java/com/raoulvdberge/refinedstorage/block/BlockSecurityManager.java index f57392e13..3bdf6fac2 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/block/BlockSecurityManager.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/block/BlockSecurityManager.java @@ -5,9 +5,7 @@ import com.raoulvdberge.refinedstorage.RSGui; import com.raoulvdberge.refinedstorage.api.network.security.Permission; import com.raoulvdberge.refinedstorage.tile.TileSecurityManager; import net.minecraft.block.state.IBlockState; -import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.EnumFacing; import net.minecraft.util.EnumHand; @@ -24,15 +22,6 @@ public class BlockSecurityManager extends BlockNode { return new TileSecurityManager(); } - @Override - public void onBlockPlacedBy(World world, BlockPos pos, IBlockState state, EntityLivingBase placer, ItemStack stack) { - super.onBlockPlacedBy(world, pos, state, placer, stack); - - if (!world.isRemote && placer instanceof EntityPlayer) { - ((TileSecurityManager) world.getTileEntity(pos)).getNode().setOwner(((EntityPlayer) placer).getGameProfile().getId()); - } - } - @Override public boolean onBlockActivated(World world, BlockPos pos, IBlockState state, EntityPlayer player, EnumHand hand, EnumFacing side, float hitX, float hitY, float hitZ) { if (!world.isRemote) { diff --git a/src/main/java/com/raoulvdberge/refinedstorage/item/ItemBase.java b/src/main/java/com/raoulvdberge/refinedstorage/item/ItemBase.java index 25fcbb2c1..534fe1d5e 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/item/ItemBase.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/item/ItemBase.java @@ -5,22 +5,24 @@ import net.minecraft.item.Item; import net.minecraft.item.ItemStack; public abstract class ItemBase extends Item { + private final String domain; private final String name; public ItemBase(String name) { - this.name = name; - - setRegistryName(getDomain(), name); - setCreativeTab(RS.INSTANCE.tab); + this(RS.ID, name); } - protected String getDomain() { - return RS.ID; + public ItemBase(String domain, String name) { + this.domain = domain; + this.name = name; + + setRegistryName(domain, name); + setCreativeTab(RS.INSTANCE.tab); } @Override public String getUnlocalizedName() { - return "item." + getDomain() + ":" + name; + return "item." + domain + ":" + name; } @Override diff --git a/src/main/java/com/raoulvdberge/refinedstorage/tile/TileBase.java b/src/main/java/com/raoulvdberge/refinedstorage/tile/TileBase.java index d315a16e2..a21c4ec92 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/tile/TileBase.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/tile/TileBase.java @@ -68,37 +68,37 @@ public abstract class TileBase extends TileEntity { } @Override - public NBTTagCompound getUpdateTag() { + public final NBTTagCompound getUpdateTag() { return writeUpdate(super.getUpdateTag()); } @Nullable @Override - public SPacketUpdateTileEntity getUpdatePacket() { + public final SPacketUpdateTileEntity getUpdatePacket() { return new SPacketUpdateTileEntity(pos, 1, getUpdateTag()); } @Override - public void onDataPacket(NetworkManager net, SPacketUpdateTileEntity packet) { + public final void onDataPacket(NetworkManager net, SPacketUpdateTileEntity packet) { readUpdate(packet.getNbtCompound()); } @Override - public void handleUpdateTag(NBTTagCompound tag) { + public final void handleUpdateTag(NBTTagCompound tag) { super.readFromNBT(tag); readUpdate(tag); } @Override - public void readFromNBT(NBTTagCompound tag) { + public final void readFromNBT(NBTTagCompound tag) { super.readFromNBT(tag); read(tag); } @Override - public NBTTagCompound writeToNBT(NBTTagCompound tag) { + public final NBTTagCompound writeToNBT(NBTTagCompound tag) { return write(super.writeToNBT(tag)); } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/tile/TileController.java b/src/main/java/com/raoulvdberge/refinedstorage/tile/TileController.java index 9ae1fc8e1..6319bd374 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/tile/TileController.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/tile/TileController.java @@ -570,8 +570,8 @@ public class TileController extends TileBase implements ITickable, INetwork, IRe } @Override - public void readFromNBT(NBTTagCompound tag) { - super.readFromNBT(tag); + public void read(NBTTagCompound tag) { + super.read(tag); if (tag.hasKey(NBT_ENERGY)) { energy.setEnergyStored(tag.getInteger(NBT_ENERGY)); @@ -599,8 +599,8 @@ public class TileController extends TileBase implements ITickable, INetwork, IRe } @Override - public NBTTagCompound writeToNBT(NBTTagCompound tag) { - super.writeToNBT(tag); + public NBTTagCompound write(NBTTagCompound tag) { + super.write(tag); tag.setInteger(NBT_ENERGY, energy.getEnergyStored());