summaryrefslogtreecommitdiffstats
path: root/EssentialsProtect/src/com/earth2me
diff options
context:
space:
mode:
authorsnowleo <snowleo@e251c2fe-e539-e718-e476-b85c1f46cddb>2011-03-30 12:56:34 +0000
committersnowleo <snowleo@e251c2fe-e539-e718-e476-b85c1f46cddb>2011-03-30 12:56:34 +0000
commit08041599fffe85ef4e5da59cc060a690c7dc8994 (patch)
tree9c214b0328d346aaefb4d9f69cc10d3877fd44eb /EssentialsProtect/src/com/earth2me
parent81c9b91561fa978bcfa9f5824d5d60c949a622e5 (diff)
downloadEssentials-08041599fffe85ef4e5da59cc060a690c7dc8994.tar
Essentials-08041599fffe85ef4e5da59cc060a690c7dc8994.tar.gz
Essentials-08041599fffe85ef4e5da59cc060a690c7dc8994.tar.lz
Essentials-08041599fffe85ef4e5da59cc060a690c7dc8994.tar.xz
Essentials-08041599fffe85ef4e5da59cc060a690c7dc8994.zip
Revert to 1013
git-svn-id: https://svn.java.net/svn/essentials~svn/trunk@1021 e251c2fe-e539-e718-e476-b85c1f46cddb
Diffstat (limited to 'EssentialsProtect/src/com/earth2me')
-rw-r--r--EssentialsProtect/src/com/earth2me/essentials/protect/EssentialsProtect.java68
-rw-r--r--EssentialsProtect/src/com/earth2me/essentials/protect/EssentialsProtectBlockListener.java107
-rw-r--r--EssentialsProtect/src/com/earth2me/essentials/protect/EssentialsProtectPlayerListener.java78
3 files changed, 106 insertions, 147 deletions
diff --git a/EssentialsProtect/src/com/earth2me/essentials/protect/EssentialsProtect.java b/EssentialsProtect/src/com/earth2me/essentials/protect/EssentialsProtect.java
index d6869519b..798153b1c 100644
--- a/EssentialsProtect/src/com/earth2me/essentials/protect/EssentialsProtect.java
+++ b/EssentialsProtect/src/com/earth2me/essentials/protect/EssentialsProtect.java
@@ -1,13 +1,7 @@
package com.earth2me.essentials.protect;
import com.earth2me.essentials.Essentials;
-import com.earth2me.essentials.IConf;
import com.earth2me.essentials.User;
-import com.earth2me.essentials.protect.data.IProtectedBlock;
-import com.earth2me.essentials.protect.data.ProtectedBlockMemory;
-import com.earth2me.essentials.protect.data.ProtectedBlockMySQL;
-import com.earth2me.essentials.protect.data.ProtectedBlockSQLite;
-import java.beans.PropertyVetoException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.logging.Level;
@@ -21,7 +15,7 @@ import org.bukkit.plugin.PluginManager;
import org.bukkit.plugin.java.JavaPlugin;
-public class EssentialsProtect extends JavaPlugin implements IConf
+public class EssentialsProtect extends JavaPlugin
{
private EssentialsProtectBlockListener blockListener = null;
private EssentialsProtectPlayerListener playerListener = null;
@@ -39,8 +33,6 @@ public class EssentialsProtect extends JavaPlugin implements IConf
public static ArrayList onUseAlert = null;
public static ArrayList onBreakAlert = null;
- private IProtectedBlock storage = null;
- private static EssentialsProtect instance = null;
public EssentialsProtect()
{
@@ -50,18 +42,15 @@ public class EssentialsProtect extends JavaPlugin implements IConf
{
PluginManager pm = this.getServer().getPluginManager();
Essentials ess = (Essentials)pm.getPlugin("Essentials");
- if (!ess.isEnabled()) {
+ if (!ess.isEnabled())
pm.enablePlugin(ess);
- }
-
- instance = this;
- reloadConfig();
playerListener = new EssentialsProtectPlayerListener(this);
blockListener = new EssentialsProtectBlockListener(this);
entityListener = new EssentialsProtectEntityListener(this);
- pm.registerEvent(Type.PLAYER_PICKUP_ITEM, playerListener, Priority.Low, this);
pm.registerEvent(Type.PLAYER_INTERACT, playerListener, Priority.Low, this);
+ // Why is this commented?
+ //pm.registerEvent(Type.BLOCK_DAMAGED, blockListener, Priority.High, this);
pm.registerEvent(Type.BLOCK_PLACE, blockListener, Priority.Highest, this);
pm.registerEvent(Type.BLOCK_FROMTO, blockListener, Priority.Highest, this);
pm.registerEvent(Type.BLOCK_IGNITE, blockListener, Priority.Highest, this);
@@ -71,6 +60,7 @@ public class EssentialsProtect extends JavaPlugin implements IConf
pm.registerEvent(Type.BLOCK_BREAK, blockListener, Priority.Highest, this);
pm.registerEvent(Type.CREATURE_SPAWN, entityListener, Priority.Highest, this);
+ loadSettings();
if (!this.getDescription().getVersion().equals(Essentials.getStatic().getDescription().getVersion())) {
logger.log(Level.WARNING, "Version mismatch! Please update all Essentials jars to the same version.");
}
@@ -102,23 +92,8 @@ public class EssentialsProtect extends JavaPlugin implements IConf
onBreakAlert = null;
}
- public void alert(User user, String item, String type)
+ public static void loadSettings()
{
- Location loc = user.getLocation();
- for (Player p : this.getServer().getOnlinePlayers())
- {
- User alertUser = User.get(p);
- if (alertUser.isAuthorized("essentials.protect.alerts"))
- alertUser.sendMessage(ChatColor.DARK_AQUA + "[" + user.getName() + "] " + ChatColor.WHITE + type + ChatColor.GOLD + item + " at: " + formatCoords(loc.getBlockX(), loc.getBlockY(), loc.getBlockZ()));
- }
- }
-
- public static String formatCoords(int x, int y, int z)
- {
- return x + "," + y + "," + z;
- }
-
- public void reloadConfig() {
dataSettings = Essentials.getSettings().getEpDBSettings();
genSettings = Essentials.getSettings().getEpSettings();
guardSettings = Essentials.getSettings().getEpGuardSettings();
@@ -129,26 +104,17 @@ public class EssentialsProtect extends JavaPlugin implements IConf
onUseAlert = Essentials.getSettings().getEpAlertOnUse();
onBreakAlert = Essentials.getSettings().getEpAlertOnBreak();
playerSettings = Essentials.getSettings().getEpPlayerSettings();
-
- if (dataSettings.get("protect.datatype").equals("mysql")) {
- try {
- storage = new ProtectedBlockMySQL(dataSettings.get("protect.mysqlDb"), dataSettings.get("protect.username"), dataSettings.get("protect.password"));
- } catch (PropertyVetoException ex) {
- logger.log(Level.SEVERE, null, ex);
- }
- } else {
- try {
- storage = new ProtectedBlockSQLite("jdbc:sqlite:plugins/Essentials/EssentialsProtect.db");
- } catch (PropertyVetoException ex) {
- logger.log(Level.SEVERE, null, ex);
- }
- }
- if (genSettings.get("protect.memstore")) {
- storage = new ProtectedBlockMemory(storage);
- }
+ EssentialsProtectData.createSqlTable();
}
-
- public static IProtectedBlock getStorage() {
- return EssentialsProtect.instance.storage;
+
+ public void alert(User user, String item, String type)
+ {
+ Location loc = user.getLocation();
+ for (Player p : this.getServer().getOnlinePlayers())
+ {
+ User alertUser = User.get(p);
+ if (alertUser.isAuthorized("essentials.protect.alerts"))
+ alertUser.sendMessage(ChatColor.DARK_AQUA + "[" + user.getName() + "] " + ChatColor.WHITE + type + ChatColor.GOLD + item + " at: " + EssentialsProtectData.formatCoords(loc.getBlockX(), loc.getBlockY(), loc.getBlockZ()));
+ }
}
}
diff --git a/EssentialsProtect/src/com/earth2me/essentials/protect/EssentialsProtectBlockListener.java b/EssentialsProtect/src/com/earth2me/essentials/protect/EssentialsProtectBlockListener.java
index 2028edf42..e96165ecd 100644
--- a/EssentialsProtect/src/com/earth2me/essentials/protect/EssentialsProtectBlockListener.java
+++ b/EssentialsProtect/src/com/earth2me/essentials/protect/EssentialsProtectBlockListener.java
@@ -2,24 +2,28 @@ package com.earth2me.essentials.protect;
import com.earth2me.essentials.Essentials;
import com.earth2me.essentials.User;
-import java.util.ArrayList;
-import java.util.List;
+import org.bukkit.ChatColor;
import org.bukkit.Material;
import org.bukkit.block.Block;
-import org.bukkit.block.BlockFace;
import org.bukkit.entity.Player;
import org.bukkit.event.block.BlockBreakEvent;
import org.bukkit.event.block.BlockBurnEvent;
import org.bukkit.event.block.BlockFromToEvent;
import org.bukkit.event.block.BlockIgniteEvent;
+import org.bukkit.event.block.BlockInteractEvent;
import org.bukkit.event.block.BlockListener;
import org.bukkit.event.block.BlockPlaceEvent;
+import org.bukkit.event.block.BlockRightClickEvent;
import org.bukkit.inventory.ItemStack;
public class EssentialsProtectBlockListener extends BlockListener
{
private EssentialsProtect parent;
+ private int railBlockX;
+ private int railBlockY;
+ private int railBlockZ;
+ private EssentialsProtectData spData;
public EssentialsProtectBlockListener(EssentialsProtect parent)
{
@@ -27,10 +31,17 @@ public class EssentialsProtectBlockListener extends BlockListener
this.parent = parent;
}
+ private void initialize()
+ {
+ if (spData != null) return;
+ spData = new EssentialsProtectData();
+ }
+
@Override
public void onBlockPlace(BlockPlaceEvent event)
{
if (event.isCancelled()) return;
+ initialize();
ItemStack item = event.getItemInHand();
User user = User.get(event.getPlayer());
@@ -40,6 +51,7 @@ public class EssentialsProtectBlockListener extends BlockListener
return;
}
+ Block blockPlaced = event.getBlockAgainst();
int id = event.getBlockPlaced().getTypeId();
if (EssentialsProtect.checkProtectionItems(EssentialsProtect.blackListPlace, id) && !user.isAuthorized("essentials.protect.exemptplacement"))
@@ -53,48 +65,33 @@ public class EssentialsProtectBlockListener extends BlockListener
parent.alert(user, item.getType().toString(), "placed: ");
}
- Block blockPlaced = event.getBlockPlaced();
- Block below = blockPlaced.getFace(BlockFace.DOWN);
- if (below.getType() == Material.RAILS) {
+ if (spData.isBlockAboveProtectedRail(blockPlaced))
+ {
if (EssentialsProtect.genSettings.get("protect.protect.prevent.block-on-rail"))
{
- if (EssentialsProtect.getStorage().isProtected(below, user.getName())) {
- event.setCancelled(true);
- return;
- }
+ event.setCancelled(true);
+ return;
}
}
- List<Block> protect = new ArrayList<Block>();
- if (blockPlaced.getType() == Material.RAILS) {
+ if (item.getTypeId() == 66)
+ {
if (EssentialsProtect.genSettings.get("protect.protect.rails"))
{
if (user.isAuthorized("essentials.protect"))
{
- protect.add(blockPlaced);
- if (EssentialsProtect.genSettings.get("protect.protect.block-below"))
- {
- protect.add(blockPlaced.getFace(BlockFace.DOWN));
- }
- }
- }
- }
- if (blockPlaced.getType() == Material.SIGN_POST || blockPlaced.getType() == Material.WALL_SIGN) {
- if (EssentialsProtect.genSettings.get("protect.protect.signs"))
- {
- if (user.isAuthorized("essentials.protect"))
- {
- protect.add(blockPlaced);
+ railBlockX = blockPlaced.getX();
+ railBlockY = blockPlaced.getY();
+ railBlockZ = blockPlaced.getZ();
+
+ spData.insertProtectionIntoDb(user.getWorld().getName(), user.getName(), railBlockX, railBlockY + 1, railBlockZ);
if (EssentialsProtect.genSettings.get("protect.protect.block-below"))
{
- protect.add(event.getBlockAgainst());
+ spData.insertProtectionIntoDb(user.getWorld().getName(), user.getName(), railBlockX, railBlockY, railBlockZ);
}
}
}
}
- for (Block block : protect) {
- EssentialsProtect.getStorage().protectBlock(block, user.getName());
- }
}
@Override
@@ -131,7 +128,7 @@ public class EssentialsProtectBlockListener extends BlockListener
}
@Override
- public void onBlockFromTo(BlockFromToEvent event)
+ public void onBlockFlow(BlockFromToEvent event)
{
if (event.isCancelled()) return;
Block block = event.getBlock();
@@ -190,6 +187,7 @@ public class EssentialsProtectBlockListener extends BlockListener
public void onBlockBreak(BlockBreakEvent event)
{
if (event.isCancelled()) return;
+ initialize();
User user = User.get(event.getPlayer());
Block block = event.getBlock();
if (EssentialsProtect.playerSettings.get("protect.disable.build") && !user.canBuild())
@@ -213,57 +211,28 @@ public class EssentialsProtectBlockListener extends BlockListener
{
if (block.getType() == Material.WALL_SIGN || block.getType() == Material.SIGN_POST || block.getType() == Material.RAILS)
{
- EssentialsProtect.getStorage().unprotectBlock(block);
- if (block.getType() == Material.RAILS || block.getType() == Material.SIGN_POST) {
- Block below = block.getFace(BlockFace.DOWN);
- EssentialsProtect.getStorage().unprotectBlock(below);
- } else {
- BlockFace[] faces = new BlockFace[] {
- BlockFace.NORTH,
- BlockFace.EAST,
- BlockFace.SOUTH,
- BlockFace.WEST
- };
- for (BlockFace blockFace : faces) {
- Block against = block.getFace(blockFace);
- EssentialsProtect.getStorage().unprotectBlock(against);
- }
- }
+ spData.removeProtectionFromDB(block, true);
}
else
{
- EssentialsProtect.getStorage().unprotectBlock(block);
+ spData.removeProtectionFromDB(block);
}
return;
}
else
{
-
- boolean isProtected = EssentialsProtect.getStorage().isProtected(block, user.getName());
- if (!isProtected) {
+ boolean canDestroy = spData.canDestroy(user.getWorld().getName(), user.getName(), block);
+ if (canDestroy)
+ {
if (block.getType() == Material.WALL_SIGN || block.getType() == Material.SIGN_POST || block.getType() == Material.RAILS)
- {
- EssentialsProtect.getStorage().unprotectBlock(block);
- if (block.getType() == Material.RAILS || block.getType() == Material.SIGN_POST) {
- Block below = block.getFace(BlockFace.DOWN);
- EssentialsProtect.getStorage().unprotectBlock(below);
- } else {
- BlockFace[] faces = new BlockFace[] {
- BlockFace.NORTH,
- BlockFace.EAST,
- BlockFace.SOUTH,
- BlockFace.WEST
- };
- for (BlockFace blockFace : faces) {
- Block against = block.getFace(blockFace);
- EssentialsProtect.getStorage().unprotectBlock(against);
- }
- }
+ {
+ spData.removeProtectionFromDB(block, true);
}
else
{
- EssentialsProtect.getStorage().unprotectBlock(block);
+ spData.removeProtectionFromDB(block);
}
+ return;
}
event.setCancelled(true);
return;
diff --git a/EssentialsProtect/src/com/earth2me/essentials/protect/EssentialsProtectPlayerListener.java b/EssentialsProtect/src/com/earth2me/essentials/protect/EssentialsProtectPlayerListener.java
index 2497a733d..c75bb6324 100644
--- a/EssentialsProtect/src/com/earth2me/essentials/protect/EssentialsProtectPlayerListener.java
+++ b/EssentialsProtect/src/com/earth2me/essentials/protect/EssentialsProtectPlayerListener.java
@@ -3,68 +3,92 @@ package com.earth2me.essentials.protect;
import com.earth2me.essentials.Essentials;
import com.earth2me.essentials.User;
import org.bukkit.ChatColor;
+import org.bukkit.block.Block;
import org.bukkit.event.player.PlayerInteractEvent;
+import org.bukkit.event.player.PlayerItemEvent;
import org.bukkit.event.player.PlayerListener;
-import org.bukkit.event.player.PlayerPickupItemEvent;
import org.bukkit.inventory.ItemStack;
public class EssentialsProtectPlayerListener extends PlayerListener
{
private EssentialsProtect parent;
-
+ private int signBlockX;
+ private int signBlockY;
+ private int signBlockZ;
+ private EssentialsProtectData spData = null;
+
public EssentialsProtectPlayerListener(EssentialsProtect parent)
{
Essentials.loadClasses();
this.parent = parent;
}
+ public void initialize()
+ {
+ if (spData != null) return;
+ spData = new EssentialsProtectData();
+ }
+
@Override
public void onPlayerInteract(PlayerInteractEvent event)
{
+ initialize();
if (event.isCancelled()) return;
+ ItemStack item = event.getItem();
User user = User.get(event.getPlayer());
+ Block blockClicked = event.getClickedBlock();
if (EssentialsProtect.playerSettings.get("protect.disable.build") && !user.canBuild())
{
event.setCancelled(true);
return;
}
-
- if (user.isAuthorized("essentials.protect.admin"))
- {
- StringBuilder sb = new StringBuilder();
- boolean first = true;
- for (String owner : EssentialsProtect.getStorage().getOwners(event.getClickedBlock())) {
- if (!first) {
- sb.append(", ");
- }
- first = false;
- sb.append(owner);
- }
- String ownerNames = sb.toString();
- if (ownerNames != null)
- {
- user.sendMessage(ChatColor.GOLD + "[EssentialsProtect] Protection owners: " + ownerNames);
- }
- }
- }
- @Override
- public void onPlayerPickupItem(PlayerPickupItemEvent event)
- {
- if(event.isCancelled()) return;
- ItemStack item = event.getItem().getItemStack();
- User user = User.get(event.getPlayer());
if (EssentialsProtect.checkProtectionItems(EssentialsProtect.usageList, item.getTypeId()) && !user.isAuthorized("essentials.protect.exemptusage"))
{
event.setCancelled(true);
return;
}
+ if (user.isAuthorized("essentials.protect.admin"))
+ {
+ String ownerName = spData.getBlockOwner(user.getWorld().getName(), user.getName(),
+ blockClicked);
+ if (ownerName != null)
+ {
+ user.sendMessage(ChatColor.GOLD + "[EssentialsProtect] Protection owner: "
+ + ownerName);
+ }
+ }
if (EssentialsProtect.onUseAlert.contains(String.valueOf(item.getTypeId())))
{
parent.alert(user, item.getType().toString(), "used: ");
}
+
+ if (item.getTypeId() == 323)
+ {
+ if (EssentialsProtect.genSettings.get("protect.protect.signs"))
+ {
+ if (user.isAuthorized("essentials.protect"))
+ {
+
+ signBlockX = blockClicked.getX();
+ signBlockY = blockClicked.getY();
+ signBlockZ = blockClicked.getZ();
+
+ initialize();
+ spData.insertProtectionIntoDb(user.getWorld().getName(), user.getName(), signBlockX,
+ signBlockY + 1, signBlockZ);
+
+ if (EssentialsProtect.genSettings.get("protect.protect.block-below"))
+ {
+ spData.insertProtectionIntoDb(user.getWorld().getName(), user.getName(), signBlockX,
+ signBlockY, signBlockZ);
+ }
+ }
+ }
+ }
+
}
}