summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKHobbits <rob@khobbits.co.uk>2013-12-31 17:18:04 +0000
committerKHobbits <rob@khobbits.co.uk>2013-12-31 17:47:52 +0000
commit39318f84325e3839f964ee97c5c0d6a3fd1428d4 (patch)
treea678c7dd3fc6ba40f3daa035224c9d1c1bdb2530
parent27f4e338a26d1ebb073e21c16250528a44835a29 (diff)
downloadEssentials-39318f84325e3839f964ee97c5c0d6a3fd1428d4.tar
Essentials-39318f84325e3839f964ee97c5c0d6a3fd1428d4.tar.gz
Essentials-39318f84325e3839f964ee97c5c0d6a3fd1428d4.tar.lz
Essentials-39318f84325e3839f964ee97c5c0d6a3fd1428d4.tar.xz
Essentials-39318f84325e3839f964ee97c5c0d6a3fd1428d4.zip
Add and implement sign break/create/interact events to EssAPI
Implement AfkStatusChangeEvent
-rw-r--r--Essentials/src/com/earth2me/essentials/User.java18
-rw-r--r--Essentials/src/com/earth2me/essentials/UserData.java8
-rw-r--r--Essentials/src/com/earth2me/essentials/signs/EssentialsSign.java83
-rw-r--r--Essentials/src/com/earth2me/essentials/signs/SignBlockListener.java1
-rw-r--r--Essentials/src/com/earth2me/essentials/signs/Signs.java3
-rw-r--r--Essentials/src/net/ess3/api/events/AfkStatusChangeEvent.java4
-rw-r--r--Essentials/src/net/ess3/api/events/NickChangeEvent.java6
-rw-r--r--Essentials/src/net/ess3/api/events/SignBreakEvent.java13
-rw-r--r--Essentials/src/net/ess3/api/events/SignCreateEvent.java13
-rw-r--r--Essentials/src/net/ess3/api/events/SignEvent.java68
-rw-r--r--Essentials/src/net/ess3/api/events/SignInteractEvent.java13
-rw-r--r--Essentials/src/net/ess3/api/events/StateChangeEvent.java2
12 files changed, 184 insertions, 48 deletions
diff --git a/Essentials/src/com/earth2me/essentials/User.java b/Essentials/src/com/earth2me/essentials/User.java
index 91394c291..29d435070 100644
--- a/Essentials/src/com/earth2me/essentials/User.java
+++ b/Essentials/src/com/earth2me/essentials/User.java
@@ -13,6 +13,7 @@ import java.util.GregorianCalendar;
import java.util.logging.Level;
import java.util.logging.Logger;
import net.ess3.api.IEssentials;
+import net.ess3.api.events.AfkStatusChangeEvent;
import net.ess3.api.events.UserBalanceUpdateEvent;
import org.bukkit.ChatColor;
import org.bukkit.Location;
@@ -486,6 +487,13 @@ public class User extends UserData implements Comparable<User>, IReplyTo, net.es
@Override
public void setAfk(final boolean set)
{
+ final AfkStatusChangeEvent afkEvent = new AfkStatusChangeEvent(this, set);
+ ess.getServer().getPluginManager().callEvent(afkEvent);
+ if (afkEvent.isCancelled())
+ {
+ return;
+ }
+
this.setSleepingIgnored(this.isAuthorized("essentials.sleepingignored") ? true : set);
if (set && !isAfk())
{
@@ -495,15 +503,13 @@ public class User extends UserData implements Comparable<User>, IReplyTo, net.es
{
afkPosition = null;
}
- super.setAfk(set);
+ _setAfk(set);
}
-
- @Override
+
public boolean toggleAfk()
{
- final boolean now = super.toggleAfk();
- this.setSleepingIgnored(this.isAuthorized("essentials.sleepingignored") ? true : now);
- return now;
+ setAfk(!isAfk());
+ return isAfk();
}
@Override
diff --git a/Essentials/src/com/earth2me/essentials/UserData.java b/Essentials/src/com/earth2me/essentials/UserData.java
index 1148402a7..46025de8b 100644
--- a/Essentials/src/com/earth2me/essentials/UserData.java
+++ b/Essentials/src/com/earth2me/essentials/UserData.java
@@ -729,19 +729,13 @@ public abstract class UserData extends PlayerExtension implements IConf
return afk;
}
- public void setAfk(boolean set)
+ public void _setAfk(boolean set)
{
afk = set;
config.setProperty("afk", set);
config.save();
}
- public boolean toggleAfk()
- {
- boolean ret = !isAfk();
- setAfk(ret);
- return ret;
- }
private boolean newplayer;
private String geolocation;
diff --git a/Essentials/src/com/earth2me/essentials/signs/EssentialsSign.java b/Essentials/src/com/earth2me/essentials/signs/EssentialsSign.java
index 5b210df4f..95117e657 100644
--- a/Essentials/src/com/earth2me/essentials/signs/EssentialsSign.java
+++ b/Essentials/src/com/earth2me/essentials/signs/EssentialsSign.java
@@ -8,6 +8,9 @@ import java.util.HashSet;
import java.util.Locale;
import java.util.Set;
import net.ess3.api.IEssentials;
+import net.ess3.api.events.SignBreakEvent;
+import net.ess3.api.events.SignCreateEvent;
+import net.ess3.api.events.SignInteractEvent;
import org.bukkit.Material;
import org.bukkit.block.Block;
import org.bukkit.block.BlockFace;
@@ -28,7 +31,7 @@ public class EssentialsSign
this.signName = signName;
}
- public final boolean onSignCreate(final SignChangeEvent event, final IEssentials ess)
+ protected final boolean onSignCreate(final SignChangeEvent event, final IEssentials ess)
{
final ISign sign = new EventSign(event);
final User user = ess.getUser(event.getPlayer());
@@ -40,6 +43,14 @@ public class EssentialsSign
return true;
}
sign.setLine(0, _("signFormatFail", this.signName));
+
+ final SignCreateEvent signEvent = new SignCreateEvent(sign, this, user);
+ ess.getServer().getPluginManager().callEvent(signEvent);
+ if (signEvent.isCancelled())
+ {
+ return false;
+ }
+
try
{
final boolean ret = onSignCreate(sign, user, getUsername(user), ess);
@@ -76,12 +87,12 @@ public class EssentialsSign
return this.signName;
}
- private String getUsername(final User user)
+ public String getUsername(final User user)
{
return user.getName().substring(0, user.getName().length() > 13 ? 13 : user.getName().length());
}
- public final boolean onSignInteract(final Block block, final Player player, final IEssentials ess)
+ protected final boolean onSignInteract(final Block block, final Player player, final IEssentials ess)
{
final ISign sign = new BlockSign(block);
final User user = ess.getUser(player);
@@ -91,9 +102,20 @@ public class EssentialsSign
}
try
{
- return (!user.isDead() && (user.isAuthorized("essentials.signs." + signName.toLowerCase(Locale.ENGLISH) + ".use")
- || user.isAuthorized("essentials.signs.use." + signName.toLowerCase(Locale.ENGLISH))))
- && onSignInteract(sign, user, getUsername(user), ess);
+ if (user.isDead() || !(user.isAuthorized("essentials.signs." + signName.toLowerCase(Locale.ENGLISH) + ".use")
+ || user.isAuthorized("essentials.signs.use." + signName.toLowerCase(Locale.ENGLISH))))
+ {
+ return false;
+ }
+
+ final SignInteractEvent signEvent = new SignInteractEvent(sign, this, user);
+ ess.getServer().getPluginManager().callEvent(signEvent);
+ if (signEvent.isCancelled())
+ {
+ return false;
+ }
+
+ return onSignInteract(sign, user, getUsername(user), ess);
}
catch (ChargeException ex)
{
@@ -107,15 +129,26 @@ public class EssentialsSign
}
}
- public final boolean onSignBreak(final Block block, final Player player, final IEssentials ess)
+ protected final boolean onSignBreak(final Block block, final Player player, final IEssentials ess)
{
final ISign sign = new BlockSign(block);
final User user = ess.getUser(player);
try
{
- return (user.isAuthorized("essentials.signs." + signName.toLowerCase(Locale.ENGLISH) + ".break")
- || user.isAuthorized("essentials.signs.break." + signName.toLowerCase(Locale.ENGLISH)))
- && onSignBreak(sign, user, getUsername(user), ess);
+ if (!(user.isAuthorized("essentials.signs." + signName.toLowerCase(Locale.ENGLISH) + ".break")
+ || user.isAuthorized("essentials.signs.break." + signName.toLowerCase(Locale.ENGLISH))))
+ {
+ return false;
+ }
+
+ final SignBreakEvent signEvent = new SignBreakEvent(sign, this, user);
+ ess.getServer().getPluginManager().callEvent(signEvent);
+ if (signEvent.isCancelled())
+ {
+ return false;
+ }
+
+ return onSignBreak(sign, user, getUsername(user), ess);
}
catch (SignException ex)
{
@@ -139,7 +172,7 @@ public class EssentialsSign
return true;
}
- public final boolean onBlockPlace(final Block block, final Player player, final IEssentials ess)
+ protected final boolean onBlockPlace(final Block block, final Player player, final IEssentials ess)
{
User user = ess.getUser(player);
try
@@ -157,7 +190,7 @@ public class EssentialsSign
return false;
}
- public final boolean onBlockInteract(final Block block, final Player player, final IEssentials ess)
+ protected final boolean onBlockInteract(final Block block, final Player player, final IEssentials ess)
{
User user = ess.getUser(player);
try
@@ -175,7 +208,7 @@ public class EssentialsSign
return false;
}
- public final boolean onBlockBreak(final Block block, final Player player, final IEssentials ess)
+ protected final boolean onBlockBreak(final Block block, final Player player, final IEssentials ess)
{
User user = ess.getUser(player);
try
@@ -189,32 +222,32 @@ public class EssentialsSign
return false;
}
- public boolean onBlockBreak(final Block block, final IEssentials ess)
+ protected boolean onBlockBreak(final Block block, final IEssentials ess)
{
return true;
}
- public boolean onBlockExplode(final Block block, final IEssentials ess)
+ protected boolean onBlockExplode(final Block block, final IEssentials ess)
{
return true;
}
- public boolean onBlockBurn(final Block block, final IEssentials ess)
+ protected boolean onBlockBurn(final Block block, final IEssentials ess)
{
return true;
}
- public boolean onBlockIgnite(final Block block, final IEssentials ess)
+ protected boolean onBlockIgnite(final Block block, final IEssentials ess)
{
return true;
}
- public boolean onBlockPush(final Block block, final IEssentials ess)
+ protected boolean onBlockPush(final Block block, final IEssentials ess)
{
return true;
}
- public static boolean checkIfBlockBreaksSigns(final Block block)
+ protected static boolean checkIfBlockBreaksSigns(final Block block)
{
final Block sign = block.getRelative(BlockFace.UP);
if (sign.getType() == Material.SIGN_POST && isValidSign(new BlockSign(sign)))
@@ -508,8 +541,10 @@ public class EssentialsSign
public final String getLine(final int index)
{
StringBuilder builder = new StringBuilder();
- for (char c : event.getLine(index).toCharArray()) {
- if (c < 0xF700 || c > 0xF747) {
+ for (char c : event.getLine(index).toCharArray())
+ {
+ if (c < 0xF700 || c > 0xF747)
+ {
builder.append(c);
}
}
@@ -578,12 +613,12 @@ public class EssentialsSign
public interface ISign
{
- String getLine(final int index);
+ public String getLine(final int index);
- void setLine(final int index, final String text);
+ public void setLine(final int index, final String text);
public Block getBlock();
- void updateSign();
+ public void updateSign();
}
}
diff --git a/Essentials/src/com/earth2me/essentials/signs/SignBlockListener.java b/Essentials/src/com/earth2me/essentials/signs/SignBlockListener.java
index c782886cb..5f51b27f1 100644
--- a/Essentials/src/com/earth2me/essentials/signs/SignBlockListener.java
+++ b/Essentials/src/com/earth2me/essentials/signs/SignBlockListener.java
@@ -94,6 +94,7 @@ public class SignBlockListener implements Listener
}
final String topLine = event.getLine(0);
+ //We loop through all sign types here to prevent clashes with preexisting signs later
for (Signs signs : Signs.values())
{
final EssentialsSign sign = signs.getSign();
diff --git a/Essentials/src/com/earth2me/essentials/signs/Signs.java b/Essentials/src/com/earth2me/essentials/signs/Signs.java
index 41de479d3..8076cb2a7 100644
--- a/Essentials/src/com/earth2me/essentials/signs/Signs.java
+++ b/Essentials/src/com/earth2me/essentials/signs/Signs.java
@@ -1,6 +1,6 @@
package com.earth2me.essentials.signs;
-
+//This enum is used when checking to see what signs are enabled
public enum Signs
{
BALANCE(new SignBalance()),
@@ -21,7 +21,6 @@ public enum Signs
TRADE(new SignTrade()),
WARP(new SignWarp()),
WEATHER(new SignWeather());
-
private final EssentialsSign sign;
private Signs(final EssentialsSign sign)
diff --git a/Essentials/src/net/ess3/api/events/AfkStatusChangeEvent.java b/Essentials/src/net/ess3/api/events/AfkStatusChangeEvent.java
index 18110178d..048bf1ce4 100644
--- a/Essentials/src/net/ess3/api/events/AfkStatusChangeEvent.java
+++ b/Essentials/src/net/ess3/api/events/AfkStatusChangeEvent.java
@@ -5,8 +5,8 @@ import net.ess3.api.IUser;
public class AfkStatusChangeEvent extends StatusChangeEvent
{
- public AfkStatusChangeEvent(IUser affected, IUser controller, boolean value)
+ public AfkStatusChangeEvent(IUser affected, boolean value)
{
- super(affected, controller, value);
+ super(affected, affected, value);
}
}
diff --git a/Essentials/src/net/ess3/api/events/NickChangeEvent.java b/Essentials/src/net/ess3/api/events/NickChangeEvent.java
index 7ee3578dc..ac4a83b75 100644
--- a/Essentials/src/net/ess3/api/events/NickChangeEvent.java
+++ b/Essentials/src/net/ess3/api/events/NickChangeEvent.java
@@ -14,12 +14,6 @@ public class NickChangeEvent extends StateChangeEvent implements Cancellable
this.newValue = value;
}
- public NickChangeEvent(boolean isAsync, IUser affected, IUser controller, String value)
- {
- super(isAsync, affected, controller);
- this.newValue = value;
- }
-
public String getValue()
{
return newValue;
diff --git a/Essentials/src/net/ess3/api/events/SignBreakEvent.java b/Essentials/src/net/ess3/api/events/SignBreakEvent.java
new file mode 100644
index 000000000..9c3e69d7e
--- /dev/null
+++ b/Essentials/src/net/ess3/api/events/SignBreakEvent.java
@@ -0,0 +1,13 @@
+package net.ess3.api.events;
+
+import com.earth2me.essentials.signs.EssentialsSign;
+import net.ess3.api.IUser;
+
+
+public class SignBreakEvent extends SignEvent
+{
+ public SignBreakEvent(EssentialsSign.ISign sign, EssentialsSign essSign, IUser user)
+ {
+ super(sign, essSign, user);
+ }
+}
diff --git a/Essentials/src/net/ess3/api/events/SignCreateEvent.java b/Essentials/src/net/ess3/api/events/SignCreateEvent.java
new file mode 100644
index 000000000..ac0520119
--- /dev/null
+++ b/Essentials/src/net/ess3/api/events/SignCreateEvent.java
@@ -0,0 +1,13 @@
+package net.ess3.api.events;
+
+import com.earth2me.essentials.signs.EssentialsSign;
+import net.ess3.api.IUser;
+
+
+public class SignCreateEvent extends SignEvent
+{
+ public SignCreateEvent(EssentialsSign.ISign sign, EssentialsSign essSign, IUser user)
+ {
+ super(sign, essSign, user);
+ }
+}
diff --git a/Essentials/src/net/ess3/api/events/SignEvent.java b/Essentials/src/net/ess3/api/events/SignEvent.java
new file mode 100644
index 000000000..01689db19
--- /dev/null
+++ b/Essentials/src/net/ess3/api/events/SignEvent.java
@@ -0,0 +1,68 @@
+package net.ess3.api.events;
+
+import com.earth2me.essentials.signs.EssentialsSign;
+import com.earth2me.essentials.signs.EssentialsSign.ISign;
+import net.ess3.api.IUser;
+import org.bukkit.event.Cancellable;
+import org.bukkit.event.Event;
+import org.bukkit.event.HandlerList;
+
+
+/**
+ * This handles common boilerplate for other SignEvent
+ *
+ */
+public class SignEvent extends Event implements Cancellable
+{
+ private static final HandlerList handlers = new HandlerList();
+ private boolean cancelled = false;
+ ISign sign;
+ EssentialsSign essSign;
+ IUser user;
+
+ public SignEvent(final ISign sign, final EssentialsSign essSign, final IUser user)
+ {
+ super();
+ this.sign = sign;
+ this.essSign = essSign;
+ this.user = user;
+ }
+
+ public ISign getSign()
+ {
+ return sign;
+ }
+
+ public EssentialsSign getEssentialsSign()
+ {
+ return essSign;
+ }
+
+ public IUser getUser()
+ {
+ return user;
+ }
+
+ @Override
+ public HandlerList getHandlers()
+ {
+ return handlers;
+ }
+
+ public static HandlerList getHandlerList()
+ {
+ return handlers;
+ }
+
+ @Override
+ public boolean isCancelled()
+ {
+ return cancelled;
+ }
+
+ @Override
+ public void setCancelled(boolean cancelled)
+ {
+ this.cancelled = cancelled;
+ }
+}
diff --git a/Essentials/src/net/ess3/api/events/SignInteractEvent.java b/Essentials/src/net/ess3/api/events/SignInteractEvent.java
new file mode 100644
index 000000000..f67f68a0e
--- /dev/null
+++ b/Essentials/src/net/ess3/api/events/SignInteractEvent.java
@@ -0,0 +1,13 @@
+package net.ess3.api.events;
+
+import com.earth2me.essentials.signs.EssentialsSign;
+import net.ess3.api.IUser;
+
+
+public class SignInteractEvent extends SignEvent
+{
+ public SignInteractEvent(EssentialsSign.ISign sign, EssentialsSign essSign, IUser user)
+ {
+ super(sign, essSign, user);
+ }
+}
diff --git a/Essentials/src/net/ess3/api/events/StateChangeEvent.java b/Essentials/src/net/ess3/api/events/StateChangeEvent.java
index fc958b4a8..bcdfc247c 100644
--- a/Essentials/src/net/ess3/api/events/StateChangeEvent.java
+++ b/Essentials/src/net/ess3/api/events/StateChangeEvent.java
@@ -7,7 +7,7 @@ import org.bukkit.event.HandlerList;
/**
- * This handles common boilerplate for other StatusChangeEvents
+ * This handles common boilerplate for other StateChangeEvents
*
*/
public class StateChangeEvent extends Event implements Cancellable