mirror of
https://github.com/moparisthebest/xAuth
synced 2024-12-22 07:08:51 -05:00
Various NullPointerException errors fixed
Players will now be teleported to ground level instead of underground or in the air when not logged in Added configuration node to turn on/off location protection (misc.protect-locaton) MineQuest entity interaction fixed
This commit is contained in:
parent
98f4fd015c
commit
88f74bfe41
2
pom.xml
2
pom.xml
@ -2,7 +2,7 @@
|
|||||||
<modelVersion>4.0.0</modelVersion>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
<groupId>com.cypherx</groupId>
|
<groupId>com.cypherx</groupId>
|
||||||
<artifactId>xauth</artifactId>
|
<artifactId>xauth</artifactId>
|
||||||
<version>1.2.4</version>
|
<version>1.2.5</version>
|
||||||
<name>xAuth</name>
|
<name>xAuth</name>
|
||||||
<properties>
|
<properties>
|
||||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||||
|
@ -152,8 +152,7 @@ public class CommandHandler
|
|||||||
if (target != null)
|
if (target != null)
|
||||||
{
|
{
|
||||||
if (plugin.mustRegister(target)) {
|
if (plugin.mustRegister(target)) {
|
||||||
plugin.loginLocation.put(target, target.getLocation());
|
plugin.saveLocation(target);
|
||||||
target.teleport(target.getWorld().getSpawnLocation());
|
|
||||||
plugin.saveInventory(target);
|
plugin.saveInventory(target);
|
||||||
}
|
}
|
||||||
target.sendMessage(xAuth.strings.getString("unregister.target"));
|
target.sendMessage(xAuth.strings.getString("unregister.target"));
|
||||||
@ -232,8 +231,7 @@ public class CommandHandler
|
|||||||
|
|
||||||
if (pTarget != null)
|
if (pTarget != null)
|
||||||
{
|
{
|
||||||
plugin.loginLocation.put(pTarget, pTarget.getLocation());
|
plugin.saveLocation(pTarget);
|
||||||
pTarget.teleport(pTarget.getWorld().getSpawnLocation());
|
|
||||||
plugin.saveInventory(pTarget);
|
plugin.saveInventory(pTarget);
|
||||||
pTarget.sendMessage(xAuth.strings.getString("logout.success.ended"));
|
pTarget.sendMessage(xAuth.strings.getString("logout.success.ended"));
|
||||||
}
|
}
|
||||||
@ -285,8 +283,7 @@ public class CommandHandler
|
|||||||
if (target != null)
|
if (target != null)
|
||||||
{
|
{
|
||||||
if (plugin.mustRegister(target)) {
|
if (plugin.mustRegister(target)) {
|
||||||
plugin.loginLocation.put(target, target.getLocation());
|
plugin.saveLocation(target);
|
||||||
target.teleport(target.getWorld().getSpawnLocation());
|
|
||||||
plugin.saveInventory(target);
|
plugin.saveInventory(target);
|
||||||
}
|
}
|
||||||
target.sendMessage(xAuth.strings.getString("unregister.target"));
|
target.sendMessage(xAuth.strings.getString("unregister.target"));
|
||||||
@ -349,8 +346,7 @@ public class CommandHandler
|
|||||||
|
|
||||||
if (pTarget != null)
|
if (pTarget != null)
|
||||||
{
|
{
|
||||||
plugin.loginLocation.put(pTarget, pTarget.getLocation());
|
plugin.saveLocation(pTarget);
|
||||||
pTarget.teleport(pTarget.getWorld().getSpawnLocation());
|
|
||||||
plugin.saveInventory(pTarget);
|
plugin.saveInventory(pTarget);
|
||||||
pTarget.sendMessage(xAuth.strings.getString("logout.success.ended"));
|
pTarget.sendMessage(xAuth.strings.getString("logout.success.ended"));
|
||||||
}
|
}
|
||||||
|
@ -19,6 +19,7 @@ public class Settings
|
|||||||
"session.verifyip",
|
"session.verifyip",
|
||||||
"notify.limit",
|
"notify.limit",
|
||||||
"misc.allowed-cmds",
|
"misc.allowed-cmds",
|
||||||
|
"misc.protect-location",
|
||||||
"login.strikes.enabled",
|
"login.strikes.enabled",
|
||||||
"login.strikes.amount",
|
"login.strikes.amount",
|
||||||
"login.strikes.action",
|
"login.strikes.action",
|
||||||
@ -79,6 +80,7 @@ public class Settings
|
|||||||
defaults.put("misc.allow-changepw", true);
|
defaults.put("misc.allow-changepw", true);
|
||||||
defaults.put("misc.allowed-cmds", Arrays.asList(new String[]{"/register", "/login"}));
|
defaults.put("misc.allowed-cmds", Arrays.asList(new String[]{"/register", "/login"}));
|
||||||
defaults.put("misc.autosave", true);
|
defaults.put("misc.autosave", true);
|
||||||
|
defaults.put("misc.protect-location", true);
|
||||||
defaults.put("login.strikes.enabled", true);
|
defaults.put("login.strikes.enabled", true);
|
||||||
defaults.put("login.strikes.amount", 5);
|
defaults.put("login.strikes.amount", 5);
|
||||||
defaults.put("login.strikes.action", "kick");
|
defaults.put("login.strikes.action", "kick");
|
||||||
|
@ -6,7 +6,6 @@ import java.security.MessageDigest;
|
|||||||
import java.util.concurrent.ConcurrentHashMap;
|
import java.util.concurrent.ConcurrentHashMap;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.regex.Matcher;
|
import java.util.regex.Matcher;
|
||||||
import java.util.regex.Pattern;
|
import java.util.regex.Pattern;
|
||||||
|
|
||||||
@ -60,7 +59,7 @@ public class xAuth extends JavaPlugin
|
|||||||
private ConcurrentHashMap<String, Session> sessions = new ConcurrentHashMap<String, Session>();
|
private ConcurrentHashMap<String, Session> sessions = new ConcurrentHashMap<String, Session>();
|
||||||
private ConcurrentHashMap<Player, Date> lastNotifyTimes = new ConcurrentHashMap<Player, Date>();
|
private ConcurrentHashMap<Player, Date> lastNotifyTimes = new ConcurrentHashMap<Player, Date>();
|
||||||
private ConcurrentHashMap<String, Integer> strikes = new ConcurrentHashMap<String, Integer>();
|
private ConcurrentHashMap<String, Integer> strikes = new ConcurrentHashMap<String, Integer>();
|
||||||
public HashMap<Player, Location> loginLocation = new HashMap<Player, Location>();
|
private ConcurrentHashMap<Player, Location> locations = new ConcurrentHashMap<Player, Location>();
|
||||||
private ArrayList<String> illegalNames = new ArrayList<String>();
|
private ArrayList<String> illegalNames = new ArrayList<String>();
|
||||||
|
|
||||||
public void onEnable()
|
public void onEnable()
|
||||||
@ -105,10 +104,9 @@ public class xAuth extends JavaPlugin
|
|||||||
{
|
{
|
||||||
for (Player player : players)
|
for (Player player : players)
|
||||||
{
|
{
|
||||||
if (mustRegister(player))
|
if (mustRegister(player) || isRegistered(player.getName()))
|
||||||
{
|
{
|
||||||
loginLocation.put(player, player.getLocation());
|
saveLocation(player);
|
||||||
player.teleport(player.getWorld().getSpawnLocation());
|
|
||||||
saveInventory(player);
|
saveInventory(player);
|
||||||
player.sendMessage(strings.getString("misc.reloaded"));
|
player.sendMessage(strings.getString("misc.reloaded"));
|
||||||
}
|
}
|
||||||
@ -171,8 +169,7 @@ public class xAuth extends JavaPlugin
|
|||||||
{
|
{
|
||||||
for (Player player : players) {
|
for (Player player : players) {
|
||||||
if (!sessionExists(player.getName())) {
|
if (!sessionExists(player.getName())) {
|
||||||
player.teleport(loginLocation.get(player));
|
restoreLocation(player);
|
||||||
loginLocation.remove(player);
|
|
||||||
restoreInventory(player);
|
restoreInventory(player);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -293,9 +290,8 @@ public class xAuth extends JavaPlugin
|
|||||||
//LOGIN / LOGOUT FUNCTIONS
|
//LOGIN / LOGOUT FUNCTIONS
|
||||||
public void login(Player player)
|
public void login(Player player)
|
||||||
{
|
{
|
||||||
player.teleport(loginLocation.get(player));
|
|
||||||
loginLocation.remove(player);
|
|
||||||
startSession(player);
|
startSession(player);
|
||||||
|
restoreLocation(player);
|
||||||
restoreInventory(player);
|
restoreInventory(player);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -334,8 +330,7 @@ public class xAuth extends JavaPlugin
|
|||||||
removeSession(pName);
|
removeSession(pName);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
player.teleport(loginLocation.get(player));
|
restoreLocation(player);
|
||||||
loginLocation.remove(player);
|
|
||||||
restoreInventory(player);
|
restoreInventory(player);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -399,11 +394,11 @@ public class xAuth extends JavaPlugin
|
|||||||
{
|
{
|
||||||
if (lastNotifyTimes.get(player) == null)
|
if (lastNotifyTimes.get(player) == null)
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
Date nextNotifyTime = new Date(lastNotifyTimes.get(player).getTime() + (settings.getInt("notify.limit") * 1000));
|
Date nextNotifyTime = new Date(lastNotifyTimes.get(player).getTime() + (settings.getInt("notify.limit") * 1000));
|
||||||
if (nextNotifyTime.compareTo(new Date()) < 0)
|
if (nextNotifyTime.compareTo(new Date()) < 0)
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -418,7 +413,26 @@ public class xAuth extends JavaPlugin
|
|||||||
lastNotifyTimes.remove(player);
|
lastNotifyTimes.remove(player);
|
||||||
lastNotifyTimes.put(player, date);
|
lastNotifyTimes.put(player, date);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void saveLocation(Player player) {
|
||||||
|
if (!settings.getBool("misc.protect-location"))
|
||||||
|
return;
|
||||||
|
|
||||||
|
locations.put(player, player.getLocation());
|
||||||
|
player.teleport(player.getWorld().getSpawnLocation());
|
||||||
|
}
|
||||||
|
|
||||||
|
public void restoreLocation(Player player) {
|
||||||
|
if (!settings.getBool("misc.protect-location"))
|
||||||
|
return;
|
||||||
|
|
||||||
|
Location loc = locations.get(player);
|
||||||
|
|
||||||
|
if (loc != null) {
|
||||||
|
player.teleport(loc);
|
||||||
|
locations.remove(player);
|
||||||
|
}
|
||||||
|
}
|
||||||
//INVENTORY FUNCTIONS
|
//INVENTORY FUNCTIONS
|
||||||
public void saveInventory(Player player)
|
public void saveInventory(Player player)
|
||||||
{
|
{
|
||||||
@ -525,8 +539,7 @@ public class xAuth extends JavaPlugin
|
|||||||
|
|
||||||
if (player != null)
|
if (player != null)
|
||||||
{
|
{
|
||||||
loginLocation.put(player, player.getLocation());
|
saveLocation(player);
|
||||||
player.teleport(player.getWorld().getSpawnLocation());
|
|
||||||
saveInventory(player);
|
saveInventory(player);
|
||||||
player.sendMessage(strings.getString("logout.success.ended"));
|
player.sendMessage(strings.getString("logout.success.ended"));
|
||||||
}
|
}
|
||||||
|
@ -25,7 +25,7 @@ public class xAuthEntityListener extends EntityListener
|
|||||||
Entity entity = event.getEntity();
|
Entity entity = event.getEntity();
|
||||||
|
|
||||||
//Player taking damage
|
//Player taking damage
|
||||||
if (entity instanceof Player)
|
if (entity instanceof Player && ((Player)entity).isOnline())
|
||||||
plugin.handleEvent((Player)entity, event);
|
plugin.handleEvent((Player)entity, event);
|
||||||
//Player dealing damage to other entity
|
//Player dealing damage to other entity
|
||||||
else if (event instanceof EntityDamageByEntityEvent)
|
else if (event instanceof EntityDamageByEntityEvent)
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
package com.cypherx.xauth;
|
package com.cypherx.xauth;
|
||||||
|
|
||||||
import org.bukkit.Location;
|
import org.bukkit.Location;
|
||||||
|
import org.bukkit.World;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.event.player.*;
|
import org.bukkit.event.player.*;
|
||||||
|
|
||||||
@ -37,14 +38,12 @@ public class xAuthPlayerListener extends PlayerListener
|
|||||||
|
|
||||||
if (!plugin.isLoggedIn(player))
|
if (!plugin.isLoggedIn(player))
|
||||||
{
|
{
|
||||||
plugin.loginLocation.put(player, player.getLocation());
|
|
||||||
player.teleport(player.getWorld().getSpawnLocation());
|
|
||||||
|
|
||||||
if (!plugin.isRegistered(player.getName()))
|
if (!plugin.isRegistered(player.getName()))
|
||||||
{
|
{
|
||||||
if (!plugin.mustRegister(player))
|
if (!plugin.mustRegister(player))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
plugin.saveLocation(player);
|
||||||
plugin.saveInventory(player);
|
plugin.saveInventory(player);
|
||||||
plugin.getServer().getScheduler().scheduleAsyncDelayedTask(plugin, new Runnable() {
|
plugin.getServer().getScheduler().scheduleAsyncDelayedTask(plugin, new Runnable() {
|
||||||
public void run() {
|
public void run() {
|
||||||
@ -54,6 +53,7 @@ public class xAuthPlayerListener extends PlayerListener
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
plugin.saveLocation(player);
|
||||||
plugin.saveInventory(player);
|
plugin.saveInventory(player);
|
||||||
plugin.getServer().getScheduler().scheduleSyncDelayedTask(plugin, new Runnable() {
|
plugin.getServer().getScheduler().scheduleSyncDelayedTask(plugin, new Runnable() {
|
||||||
public void run() {
|
public void run() {
|
||||||
@ -120,21 +120,29 @@ public class xAuthPlayerListener extends PlayerListener
|
|||||||
if (event.isCancelled())
|
if (event.isCancelled())
|
||||||
return;
|
return;
|
||||||
|
|
||||||
/*Location from = event.getFrom();
|
|
||||||
Location to = event.getTo();
|
|
||||||
|
|
||||||
if (from.getX() == to.getX() && from.getZ() == to.getZ())
|
|
||||||
{
|
|
||||||
if (from.getY() > to.getY())
|
|
||||||
return;
|
|
||||||
}*/
|
|
||||||
|
|
||||||
Player player = event.getPlayer();
|
Player player = event.getPlayer();
|
||||||
plugin.handleEvent(player, event);
|
plugin.handleEvent(player, event);
|
||||||
|
|
||||||
Location loc = player.getWorld().getSpawnLocation();
|
if (event.isCancelled()) {
|
||||||
|
Location loc;
|
||||||
|
|
||||||
if (event.isCancelled() && player.teleport(loc)) {
|
//protect location by teleporting user to spawn
|
||||||
|
if (xAuth.settings.getBool("misc.protect-location")) {
|
||||||
|
World w = player.getWorld();
|
||||||
|
loc = w.getSpawnLocation();
|
||||||
|
|
||||||
|
//underground, go up 1 block until air is reached
|
||||||
|
while (w.getBlockTypeIdAt(loc) != 0)
|
||||||
|
loc = new Location(w, loc.getX(), loc.getY() + 1, loc.getZ());
|
||||||
|
|
||||||
|
//in the air, go down 1 block until the ground is reached
|
||||||
|
while (w.getBlockTypeIdAt((int) loc.getX(), (int) loc.getY() - 1, (int) loc.getZ()) == 0)
|
||||||
|
loc = new Location(w, loc.getX(), loc.getY() - 1, loc.getZ());
|
||||||
|
}
|
||||||
|
else
|
||||||
|
loc = event.getFrom();
|
||||||
|
|
||||||
|
player.teleport(loc);
|
||||||
event.setTo(loc);
|
event.setTo(loc);
|
||||||
event.setFrom(loc);
|
event.setFrom(loc);
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
name: xAuth
|
name: xAuth
|
||||||
main: com.cypherx.xauth.xAuth
|
main: com.cypherx.xauth.xAuth
|
||||||
version: 1.2.4
|
version: 1.2.5
|
||||||
description: Allows players to register and maintain an account while the server is in offline-mode.
|
description: Allows players to register and maintain an account while the server is in offline-mode.
|
||||||
author: CypherX
|
author: CypherX
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user