Relocate the move protection so that we only register it if enabled.
This way we save on a tiny bit of performance when it is disabled.
This commit is contained in:
parent
683b4457f4
commit
b1f4b7bb41
@ -12,6 +12,7 @@ import com.graywolf336.jail.enums.Settings;
|
|||||||
import com.graywolf336.jail.listeners.BlockListener;
|
import com.graywolf336.jail.listeners.BlockListener;
|
||||||
import com.graywolf336.jail.listeners.EntityListener;
|
import com.graywolf336.jail.listeners.EntityListener;
|
||||||
import com.graywolf336.jail.listeners.HandCuffListener;
|
import com.graywolf336.jail.listeners.HandCuffListener;
|
||||||
|
import com.graywolf336.jail.listeners.MoveProtectionListener;
|
||||||
import com.graywolf336.jail.listeners.PlayerListener;
|
import com.graywolf336.jail.listeners.PlayerListener;
|
||||||
import com.graywolf336.jail.listeners.ProtectionListener;
|
import com.graywolf336.jail.listeners.ProtectionListener;
|
||||||
|
|
||||||
@ -53,6 +54,16 @@ public class JailMain extends JavaPlugin {
|
|||||||
plm.registerEvents(new PlayerListener(this), this);
|
plm.registerEvents(new PlayerListener(this), this);
|
||||||
plm.registerEvents(new ProtectionListener(this), this);
|
plm.registerEvents(new ProtectionListener(this), this);
|
||||||
|
|
||||||
|
//Only register the move protection listener if this is enabled in the
|
||||||
|
//config when we first start the plugin. The reason for this change is
|
||||||
|
//that the move event is called a ton of times per single move and so
|
||||||
|
//not registering this event listener will hopefully safe some performance.
|
||||||
|
//But doing this also forces people to restart their server if they to
|
||||||
|
//enable it after disabling it.
|
||||||
|
if(getConfig().getBoolean(Settings.MOVEPROTECTION.getPath())) {
|
||||||
|
plm.registerEvents(new MoveProtectionListener(this), this);
|
||||||
|
}
|
||||||
|
|
||||||
jt = new JailTimer(this);
|
jt = new JailTimer(this);
|
||||||
|
|
||||||
debug = getConfig().getBoolean(Settings.DEBUG.getPath());
|
debug = getConfig().getBoolean(Settings.DEBUG.getPath());
|
||||||
|
@ -0,0 +1,86 @@
|
|||||||
|
package com.graywolf336.jail.listeners;
|
||||||
|
|
||||||
|
import java.util.concurrent.TimeUnit;
|
||||||
|
|
||||||
|
import org.bukkit.event.EventHandler;
|
||||||
|
import org.bukkit.event.Listener;
|
||||||
|
import org.bukkit.event.player.PlayerMoveEvent;
|
||||||
|
import org.bukkit.event.player.PlayerTeleportEvent;
|
||||||
|
|
||||||
|
import com.graywolf336.jail.JailMain;
|
||||||
|
import com.graywolf336.jail.Util;
|
||||||
|
import com.graywolf336.jail.beans.Jail;
|
||||||
|
import com.graywolf336.jail.beans.Prisoner;
|
||||||
|
import com.graywolf336.jail.enums.LangString;
|
||||||
|
import com.graywolf336.jail.enums.Settings;
|
||||||
|
|
||||||
|
public class MoveProtectionListener implements Listener {
|
||||||
|
private JailMain pl;
|
||||||
|
|
||||||
|
public MoveProtectionListener(JailMain plugin) {
|
||||||
|
this.pl = plugin;
|
||||||
|
}
|
||||||
|
|
||||||
|
@EventHandler(ignoreCancelled=true)
|
||||||
|
public void moveProtection(PlayerMoveEvent event) {
|
||||||
|
//If we have the move protection enabled, then let's do it.
|
||||||
|
//Other wise we don't need to deal with it.
|
||||||
|
if(pl.getConfig().getBoolean(Settings.MOVEPROTECTION.getPath())) {
|
||||||
|
//Let's be sure the player we're dealing with is in jail
|
||||||
|
if(pl.getJailManager().isPlayerJailed(event.getPlayer().getName())) {
|
||||||
|
Jail j = pl.getJailManager().getJailPlayerIsIn(event.getPlayer().getName());
|
||||||
|
Prisoner p = j.getPrisoner(event.getPlayer().getName());
|
||||||
|
|
||||||
|
//If the player is being teleported, let's ignore it
|
||||||
|
if(p.isTeleporting()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
//They moved, so they're no longer afk
|
||||||
|
p.setAFKTime(0L);
|
||||||
|
|
||||||
|
//If the event's to location is NOT inside the jail, then let's do some action.
|
||||||
|
//For right now, we're only going to apply the time. Later we're going to do
|
||||||
|
//the guards, but first get a beta version out.
|
||||||
|
if (!j.isInside(event.getTo())) {
|
||||||
|
try {
|
||||||
|
long add = Util.getTime(pl.getConfig().getString(Settings.MOVEPENALTY.getPath()));
|
||||||
|
pl.getJailManager().getPrisoner(event.getPlayer().getName()).addTime(add);
|
||||||
|
|
||||||
|
String msg = "";
|
||||||
|
if(add == 0L) {
|
||||||
|
//Generate the protection message, provide the method with one argument
|
||||||
|
//which is the thing we are protecting against
|
||||||
|
msg = pl.getJailIO().getLanguageString(LangString.PROTECTIONMESSAGENOPENALTY, pl.getJailIO().getLanguageString(LangString.MOVING));
|
||||||
|
}else {
|
||||||
|
//Generate the protection message, provide the method with two arguments
|
||||||
|
//First is the time in minutes and second is the thing we are protecting against
|
||||||
|
msg = pl.getJailIO().getLanguageString(LangString.PROTECTIONMESSAGE,
|
||||||
|
new String[] { String.valueOf(TimeUnit.MINUTES.convert(add, TimeUnit.MILLISECONDS)),
|
||||||
|
pl.getJailIO().getLanguageString(LangString.MOVING) });
|
||||||
|
}
|
||||||
|
|
||||||
|
//Send the message
|
||||||
|
event.getPlayer().sendMessage(msg);
|
||||||
|
}catch(Exception e) {
|
||||||
|
pl.getLogger().severe("Moving (escaping) outside a jail penalty time is in the wrong format, please fix.");
|
||||||
|
}
|
||||||
|
|
||||||
|
//If the prisoner is in a cell, then let's teleport them to the cell's in location
|
||||||
|
if(j.isJailedInACell(event.getPlayer().getName())) {
|
||||||
|
event.setTo(j.getCellPrisonerIsIn(event.getPlayer().getName()).getTeleport());
|
||||||
|
}else {
|
||||||
|
//Otherwise let's teleport them to the in location of the jail
|
||||||
|
event.setTo(j.getTeleportIn());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@EventHandler(ignoreCancelled=true)
|
||||||
|
public void onPlayerTeleport(PlayerTeleportEvent event) {
|
||||||
|
PlayerMoveEvent move = new PlayerMoveEvent(event.getPlayer(), event.getFrom(), event.getTo());
|
||||||
|
moveProtection(move);
|
||||||
|
}
|
||||||
|
}
|
@ -11,13 +11,9 @@ import org.bukkit.event.block.BlockBreakEvent;
|
|||||||
import org.bukkit.event.block.BlockPlaceEvent;
|
import org.bukkit.event.block.BlockPlaceEvent;
|
||||||
import org.bukkit.event.player.PlayerCommandPreprocessEvent;
|
import org.bukkit.event.player.PlayerCommandPreprocessEvent;
|
||||||
import org.bukkit.event.player.PlayerInteractEvent;
|
import org.bukkit.event.player.PlayerInteractEvent;
|
||||||
import org.bukkit.event.player.PlayerMoveEvent;
|
|
||||||
import org.bukkit.event.player.PlayerTeleportEvent;
|
|
||||||
|
|
||||||
import com.graywolf336.jail.JailMain;
|
import com.graywolf336.jail.JailMain;
|
||||||
import com.graywolf336.jail.Util;
|
import com.graywolf336.jail.Util;
|
||||||
import com.graywolf336.jail.beans.Jail;
|
|
||||||
import com.graywolf336.jail.beans.Prisoner;
|
|
||||||
import com.graywolf336.jail.enums.LangString;
|
import com.graywolf336.jail.enums.LangString;
|
||||||
import com.graywolf336.jail.enums.Settings;
|
import com.graywolf336.jail.enums.Settings;
|
||||||
|
|
||||||
@ -320,68 +316,4 @@ public class ProtectionListener implements Listener {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler(ignoreCancelled=true)
|
|
||||||
public void moveProtection(PlayerMoveEvent event) {
|
|
||||||
//If we have the move protection enabled, then let's do it.
|
|
||||||
//Other wise we don't need to deal with it.
|
|
||||||
//TODO: Should probably figure out how to not register this, as this is called so many times per step
|
|
||||||
if(pl.getConfig().getBoolean(Settings.MOVEPROTECTION.getPath())) {
|
|
||||||
//Let's be sure the player we're dealing with is in jail
|
|
||||||
if(pl.getJailManager().isPlayerJailed(event.getPlayer().getName())) {
|
|
||||||
Jail j = pl.getJailManager().getJailPlayerIsIn(event.getPlayer().getName());
|
|
||||||
Prisoner p = j.getPrisoner(event.getPlayer().getName());
|
|
||||||
|
|
||||||
//If the player is being teleported, let's ignore it
|
|
||||||
if(p.isTeleporting()) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
//They moved, so they're no longer afk
|
|
||||||
p.setAFKTime(0L);
|
|
||||||
|
|
||||||
//If the event's to location is NOT inside the jail, then let's do some action.
|
|
||||||
//For right now, we're only going to apply the time. Later we're going to do
|
|
||||||
//the guards, but first get a beta version out.
|
|
||||||
if (!j.isInside(event.getTo())) {
|
|
||||||
try {
|
|
||||||
long add = Util.getTime(pl.getConfig().getString(Settings.MOVEPENALTY.getPath()));
|
|
||||||
pl.getJailManager().getPrisoner(event.getPlayer().getName()).addTime(add);
|
|
||||||
|
|
||||||
String msg = "";
|
|
||||||
if(add == 0L) {
|
|
||||||
//Generate the protection message, provide the method with one argument
|
|
||||||
//which is the thing we are protecting against
|
|
||||||
msg = pl.getJailIO().getLanguageString(LangString.PROTECTIONMESSAGENOPENALTY, pl.getJailIO().getLanguageString(LangString.MOVING));
|
|
||||||
}else {
|
|
||||||
//Generate the protection message, provide the method with two arguments
|
|
||||||
//First is the time in minutes and second is the thing we are protecting against
|
|
||||||
msg = pl.getJailIO().getLanguageString(LangString.PROTECTIONMESSAGE,
|
|
||||||
new String[] { String.valueOf(TimeUnit.MINUTES.convert(add, TimeUnit.MILLISECONDS)),
|
|
||||||
pl.getJailIO().getLanguageString(LangString.MOVING) });
|
|
||||||
}
|
|
||||||
|
|
||||||
//Send the message
|
|
||||||
event.getPlayer().sendMessage(msg);
|
|
||||||
}catch(Exception e) {
|
|
||||||
pl.getLogger().severe("Moving (escaping) outside a jail penalty time is in the wrong format, please fix.");
|
|
||||||
}
|
|
||||||
|
|
||||||
//If the prisoner is in a cell, then let's teleport them to the cell's in location
|
|
||||||
if(j.isJailedInACell(event.getPlayer().getName())) {
|
|
||||||
event.setTo(j.getCellPrisonerIsIn(event.getPlayer().getName()).getTeleport());
|
|
||||||
}else {
|
|
||||||
//Otherwise let's teleport them to the in location of the jail
|
|
||||||
event.setTo(j.getTeleportIn());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@EventHandler(ignoreCancelled=true)
|
|
||||||
public void onPlayerTeleport(PlayerTeleportEvent event) {
|
|
||||||
PlayerMoveEvent move = new PlayerMoveEvent(event.getPlayer(), event.getFrom(), event.getTo());
|
|
||||||
moveProtection(move);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user