summaryrefslogtreecommitdiffstats
path: root/EssentialsProtect/src/com/earth2me/essentials/protect/data/ProtectedBlockMemory.java
diff options
context:
space:
mode:
authorementalo <ementalo@e251c2fe-e539-e718-e476-b85c1f46cddb>2011-03-30 14:31:54 +0000
committerementalo <ementalo@e251c2fe-e539-e718-e476-b85c1f46cddb>2011-03-30 14:31:54 +0000
commit50e1b5a94013d578a07a8a4b91fbb9aaeff4c187 (patch)
treea1921c210842f554683a4688854991fbb2b8083e /EssentialsProtect/src/com/earth2me/essentials/protect/data/ProtectedBlockMemory.java
parent09403c7ad3625353a9d0d4e98940602259e51a7d (diff)
downloadEssentials-50e1b5a94013d578a07a8a4b91fbb9aaeff4c187.tar
Essentials-50e1b5a94013d578a07a8a4b91fbb9aaeff4c187.tar.gz
Essentials-50e1b5a94013d578a07a8a4b91fbb9aaeff4c187.tar.lz
Essentials-50e1b5a94013d578a07a8a4b91fbb9aaeff4c187.tar.xz
Essentials-50e1b5a94013d578a07a8a4b91fbb9aaeff4c187.zip
remove
git-svn-id: https://svn.java.net/svn/essentials~svn/trunk@1037 e251c2fe-e539-e718-e476-b85c1f46cddb
Diffstat (limited to 'EssentialsProtect/src/com/earth2me/essentials/protect/data/ProtectedBlockMemory.java')
-rw-r--r--EssentialsProtect/src/com/earth2me/essentials/protect/data/ProtectedBlockMemory.java205
1 files changed, 0 insertions, 205 deletions
diff --git a/EssentialsProtect/src/com/earth2me/essentials/protect/data/ProtectedBlockMemory.java b/EssentialsProtect/src/com/earth2me/essentials/protect/data/ProtectedBlockMemory.java
deleted file mode 100644
index 53dee66d2..000000000
--- a/EssentialsProtect/src/com/earth2me/essentials/protect/data/ProtectedBlockMemory.java
+++ /dev/null
@@ -1,205 +0,0 @@
-package com.earth2me.essentials.protect.data;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map.Entry;
-import java.util.Set;
-import org.bukkit.World;
-import org.bukkit.block.Block;
-import org.bukkit.plugin.Plugin;
-
-public class ProtectedBlockMemory implements IProtectedBlock {
-
- List<String> worlds = new ArrayList<String>();
- List<String> playerNames = new ArrayList<String>();
- IProtectedBlock storage;
- Plugin plugin;
-
- class ProtectedLocation {
-
- int x;
- int y;
- int z;
- int w;
-
- private ProtectedLocation(Block block, int worldId) {
- this.x = block.getX();
- this.y = block.getY();
- this.z = block.getZ();
- this.w = worldId;
- }
-
- private ProtectedLocation(OwnedBlock ownedBlock, int worldId) {
- this.x = ownedBlock.x;
- this.y = ownedBlock.y;
- this.z = ownedBlock.z;
- this.w = worldId;
- }
-
- @Override
- public boolean equals(Object o) {
- if (o instanceof ProtectedLocation) {
- ProtectedLocation pl = (ProtectedLocation) o;
- return x == pl.x && y == pl.y && z == pl.z && w == pl.w;
- }
- return false;
- }
-
- @Override
- public int hashCode() {
- return x ^ y ^ z ^ w;
- }
- }
-
- class ProtectedBy {
-
- private int playerId = -1;
- private Set<Integer> playerIds;
-
- private ProtectedBy() {
- }
-
- private void add(int playerId) {
- if (this.playerId == -1 || this.playerId == playerId) {
- this.playerId = playerId;
- } else {
- if (playerIds == null) {
- playerIds = new HashSet<Integer>(4);
- playerIds.add(this.playerId);
- }
- playerIds.add(playerId);
- }
- }
-
- private boolean contains(int playerId) {
- if (playerIds == null) {
- return this.playerId == playerId;
- }
- return playerIds.contains(playerId);
- }
-
- private List<String> getPlayers(List<String> playerNames) {
- if (playerIds == null) {
- List<String> list = new ArrayList<String>(2);
- list.add(playerNames.get(playerId));
- return list;
- }
- List<String> list = new ArrayList<String>(playerIds.size());
- for (Integer integer : playerIds) {
- list.add(playerNames.get(integer));
- }
- return list;
- }
-
- private int size() {
- if (playerIds == null) {
- return 1;
- }
- return playerIds.size();
- }
- }
- HashMap<ProtectedLocation, ProtectedBy> blocks = new HashMap<ProtectedLocation, ProtectedBy>();
-
- public ProtectedBlockMemory(IProtectedBlock storage) {
- this.storage = storage;
- importProtections(storage.exportProtections());
- }
-
- public void clearProtections() {
- blocks.clear();
- }
-
- public final void importProtections(List<OwnedBlock> blocks) {
- for (OwnedBlock ownedBlock : blocks) {
- ProtectedLocation pl = new ProtectedLocation(ownedBlock, getWorldId(ownedBlock.world));
- if (ownedBlock.playerName == null) {
- continue;
- }
- protectBlock(pl, ownedBlock.playerName);
- }
- }
-
- public List<OwnedBlock> exportProtections() {
- List<OwnedBlock> blockList = new ArrayList<OwnedBlock>(blocks.size());
- for (Entry<ProtectedLocation, ProtectedBy> entry : blocks.entrySet()) {
- for (String name : entry.getValue().getPlayers(playerNames)) {
- OwnedBlock ob = new OwnedBlock();
- ob.x = entry.getKey().x;
- ob.y = entry.getKey().y;
- ob.z = entry.getKey().z;
- ob.world = worlds.get(entry.getKey().w);
- ob.playerName = name;
- blockList.add(ob);
- }
- }
- return blockList;
- }
-
- public void protectBlock(final Block block, final String playerName) {
- ProtectedLocation pl = new ProtectedLocation(block, getWorldId(block.getWorld()));
- protectBlock(pl, playerName);
- plugin.getServer().getScheduler().scheduleAsyncDelayedTask(plugin, new Runnable() {
- public void run() {
- storage.protectBlock(block, playerName);
- }
- });
- }
-
- private void protectBlock(ProtectedLocation pl, String playerName) {
- int playerId = getPlayerId(playerName);
- ProtectedBy pb = blocks.get(pl);
- if (pb == null) {
- pb = new ProtectedBy();
- blocks.put(pl, pb);
- }
- pb.add(playerId);
- }
-
- public boolean isProtected(Block block, String playerName) {
- int playerId = getPlayerId(playerName);
- ProtectedLocation pl = new ProtectedLocation(block, getWorldId(block.getWorld()));
- ProtectedBy pb = blocks.get(pl);
- return !pb.contains(playerId);
- }
-
- public List<String> getOwners(Block block) {
- ProtectedLocation pl = new ProtectedLocation(block, getWorldId(block.getWorld()));
- ProtectedBy pb = blocks.get(pl);
- return pb.getPlayers(playerNames);
- }
-
- public int unprotectBlock(final Block block) {
- ProtectedLocation pl = new ProtectedLocation(block, getWorldId(block.getWorld()));
- ProtectedBy pb = blocks.remove(pl);
- plugin.getServer().getScheduler().scheduleAsyncDelayedTask(plugin, new Runnable() {
- public void run() {
- storage.unprotectBlock(block);
- }
- });
- return pb.size();
- }
-
- private int getPlayerId(String playername) {
- int id = playerNames.indexOf(playername);
- if (id < 0) {
- playerNames.add(playername);
- id = playerNames.indexOf(playername);
- }
- return id;
- }
-
- private int getWorldId(World world) {
- return getWorldId(world.getName());
- }
-
- private int getWorldId(String name) {
- int id = worlds.indexOf(name);
- if (id < 0) {
- worlds.add(name);
- id = worlds.indexOf(name);
- }
- return id;
- }
-}