1
0
mirror of https://github.com/moparisthebest/xAuth synced 2024-12-22 07:08:51 -05:00

Players are now teleported to the spawn until they have logged in (this should fix falling into the void)

Compatibility for MultiInv, Backpack, and iZone
Strike system can now be toggled between kicking and banning the player's IP
Added alias /l (L) for /login
This commit is contained in:
CypherX 2011-04-30 21:01:21 -04:00
parent 5b5e11e372
commit 98f4fd015c
6 changed files with 96 additions and 48 deletions

16
pom.xml
View File

@ -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.3</version> <version>1.2.4</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>
@ -16,13 +16,6 @@
<type>jar</type> <type>jar</type>
<scope>compile</scope> <scope>compile</scope>
</dependency> </dependency>
<dependency>
<groupId>org.bukkit</groupId>
<artifactId>craftbukkit</artifactId>
<version>0.0.1-SNAPSHOT</version>
<type>jar</type>
<scope>compile</scope>
</dependency>
<dependency> <dependency>
<groupId>com.nijikokun.bukkit</groupId> <groupId>com.nijikokun.bukkit</groupId>
<artifactId>Permissions</artifactId> <artifactId>Permissions</artifactId>
@ -30,6 +23,13 @@
<type>jar</type> <type>jar</type>
<scope>compile</scope> <scope>compile</scope>
</dependency> </dependency>
<dependency>
<groupId>org.bukkit</groupId>
<artifactId>craftbukkit</artifactId>
<version>0.0.1-SNAPSHOT</version>
<type>jar</type>
<scope>compile</scope>
</dependency>
</dependencies> </dependencies>
<build> <build>
<finalName>${project.name}</finalName> <finalName>${project.name}</finalName>

View File

@ -1,10 +1,9 @@
package com.cypherx.xauth; package com.cypherx.xauth;
import org.bukkit.Server;
import org.bukkit.command.Command; import org.bukkit.command.Command;
import org.bukkit.command.ConsoleCommandSender;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.plugin.PluginDescriptionFile; import org.bukkit.plugin.PluginDescriptionFile;
import org.bukkit.craftbukkit.CraftServer;
public class CommandHandler public class CommandHandler
{ {
@ -67,12 +66,20 @@ public class CommandHandler
if (plugin.getStrikes(player) >= xAuth.settings.getInt("login.strikes.amount")) if (plugin.getStrikes(player) >= xAuth.settings.getInt("login.strikes.amount"))
{ {
String addr = player.getAddress().getAddress().getHostAddress(); String action;
Server server = plugin.getServer();
server.dispatchCommand(((CraftServer)server).getServer().console, "ban-ip " + addr); if (xAuth.settings.getStr("login.strikes.action").equals("banip"))
{
String addr = player.getAddress().getAddress().getHostAddress();
plugin.getServer().dispatchCommand(new ConsoleCommandSender(plugin.getServer()), "ban-ip " + addr);
action = addr + " banned";
}
else
action = player.getName() + " kicked";
player.kickPlayer(xAuth.strings.getString("login.err.kick")); player.kickPlayer(xAuth.strings.getString("login.err.kick"));
plugin.clearStrikes(player); plugin.clearStrikes(player);
System.out.println("[" + pdfFile.getName() + "] " + addr + " banned by Strike system"); System.out.println("[" + pdfFile.getName() + "] " + action + " by strike system");
} }
} }
} }
@ -144,8 +151,11 @@ public class CommandHandler
if (target != null) if (target != null)
{ {
if (plugin.mustRegister(target)) if (plugin.mustRegister(target)) {
plugin.loginLocation.put(target, target.getLocation());
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"));
} }
@ -222,6 +232,8 @@ public class CommandHandler
if (pTarget != null) if (pTarget != null)
{ {
plugin.loginLocation.put(pTarget, pTarget.getLocation());
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"));
} }
@ -272,8 +284,11 @@ public class CommandHandler
if (target != null) if (target != null)
{ {
if (plugin.mustRegister(target)) if (plugin.mustRegister(target)) {
plugin.loginLocation.put(target, target.getLocation());
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"));
} }
@ -334,6 +349,8 @@ public class CommandHandler
if (pTarget != null) if (pTarget != null)
{ {
plugin.loginLocation.put(pTarget, pTarget.getLocation());
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"));
} }

View File

@ -21,6 +21,7 @@ public class Settings
"misc.allowed-cmds", "misc.allowed-cmds",
"login.strikes.enabled", "login.strikes.enabled",
"login.strikes.amount", "login.strikes.amount",
"login.strikes.action",
"filter.enabled", "filter.enabled",
"filter.allowed", "filter.allowed",
"filter.block-blankname", "filter.block-blankname",
@ -80,6 +81,7 @@ public class Settings
defaults.put("misc.autosave", true); defaults.put("misc.autosave", 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("filter.enabled", true); defaults.put("filter.enabled", true);
defaults.put("filter.allowed", "abcdefghijklmnopqrstuvwxyz0123456789_- ()[]{}"); defaults.put("filter.allowed", "abcdefghijklmnopqrstuvwxyz0123456789_- ()[]{}");
defaults.put("filter.block-blankname", true); defaults.put("filter.block-blankname", true);
@ -111,10 +113,8 @@ public class Settings
private void removeKeys() private void removeKeys()
{ {
for (String key : keyRemovals) for (String key : keyRemovals)
{
if (config.getProperty(key) != null) if (config.getProperty(key) != null)
config.removeProperty(key); config.removeProperty(key);
}
} }
public void load() public void load()
@ -164,22 +164,11 @@ public class Settings
if (!(settings.get(key) instanceof List)) if (!(settings.get(key) instanceof List))
{ {
System.out.println("[xAuth] COMMAND_PREPROCESS Error: Report this in the xAuth thread."); System.out.println("[xAuth] COMMAND_PREPROCESS Error: Report this in the xAuth thread.");
System.out.println("[xAuth] Value:" + settings.get(key)); System.out.println("[xAuth] Value: " + settings.get(key));
System.out.println("[xAuth] Attempting to autocorrect.."); System.out.println("[xAuth] Attempting to autocorrect..");
xAuth.settings = new Settings(file); xAuth.settings = new Settings(file);
} }
/*Object value = settings.get(key);
if (value instanceof String[])
System.out.println("string array");
else if (value instanceof String)
System.out.println("string");
else if (value instanceof List)
System.out.println("list");
System.out.println(value);*/
return (List<String>)settings.get(key); return (List<String>)settings.get(key);
} }
} }

View File

@ -1,6 +1,3 @@
//xAuth 1.2.3
//Built against Bukkit #660, CraftBukkit #703, and Permissions v2.7
package com.cypherx.xauth; package com.cypherx.xauth;
import java.io.*; import java.io.*;
@ -9,10 +6,13 @@ 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;
import net.minecraft.server.PropertyManager; import net.minecraft.server.PropertyManager;
import org.bukkit.Location;
import org.bukkit.command.Command; import org.bukkit.command.Command;
import org.bukkit.command.CommandSender; import org.bukkit.command.CommandSender;
import org.bukkit.command.ConsoleCommandSender; import org.bukkit.command.ConsoleCommandSender;
@ -60,6 +60,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 ArrayList<String> illegalNames = new ArrayList<String>(); private ArrayList<String> illegalNames = new ArrayList<String>();
public void onEnable() public void onEnable()
@ -104,8 +105,10 @@ public class xAuth extends JavaPlugin
{ {
for (Player player : players) for (Player player : players)
{ {
if (isRegistered(player.getName())) if (mustRegister(player))
{ {
loginLocation.put(player, player.getLocation());
player.teleport(player.getWorld().getSpawnLocation());
saveInventory(player); saveInventory(player);
player.sendMessage(strings.getString("misc.reloaded")); player.sendMessage(strings.getString("misc.reloaded"));
} }
@ -118,10 +121,10 @@ public class xAuth extends JavaPlugin
pm.registerEvent(Event.Type.PLAYER_DROP_ITEM, playerListener, Event.Priority.Lowest, this); pm.registerEvent(Event.Type.PLAYER_DROP_ITEM, playerListener, Event.Priority.Lowest, this);
pm.registerEvent(Event.Type.PLAYER_PICKUP_ITEM, playerListener, Event.Priority.Lowest, this); pm.registerEvent(Event.Type.PLAYER_PICKUP_ITEM, playerListener, Event.Priority.Lowest, this);
pm.registerEvent(Event.Type.PLAYER_INTERACT, playerListener, Event.Priority.Lowest, this); pm.registerEvent(Event.Type.PLAYER_INTERACT, playerListener, Event.Priority.Lowest, this);
pm.registerEvent(Event.Type.PLAYER_JOIN, playerListener, Event.Priority.Lowest, this); pm.registerEvent(Event.Type.PLAYER_JOIN, playerListener, Event.Priority.Monitor, this);
pm.registerEvent(Event.Type.PLAYER_LOGIN, playerListener, Event.Priority.Lowest, this); pm.registerEvent(Event.Type.PLAYER_LOGIN, playerListener, Event.Priority.Lowest, this);
pm.registerEvent(Event.Type.PLAYER_MOVE, playerListener, Event.Priority.Lowest, this); pm.registerEvent(Event.Type.PLAYER_MOVE, playerListener, Event.Priority.Lowest, this);
pm.registerEvent(Event.Type.PLAYER_QUIT, playerListener, Event.Priority.Lowest, this); pm.registerEvent(Event.Type.PLAYER_QUIT, playerListener, Event.Priority.Monitor, this);
pm.registerEvent(Event.Type.BLOCK_BREAK, blockListener, Priority.Lowest, this); pm.registerEvent(Event.Type.BLOCK_BREAK, blockListener, Priority.Lowest, this);
pm.registerEvent(Event.Type.BLOCK_PLACE, blockListener, Priority.Lowest, this); pm.registerEvent(Event.Type.BLOCK_PLACE, blockListener, Priority.Lowest, this);
@ -142,7 +145,7 @@ public class xAuth extends JavaPlugin
try try
{ {
BufferedReader authReader = new BufferedReader(new FileReader(DIR + AUTH_FILE)); BufferedReader authReader = new BufferedReader(new FileReader(DIR + AUTH_FILE));
String line; String line;
while ((line = authReader.readLine()) != null) while ((line = authReader.readLine()) != null)
{ {
@ -162,13 +165,17 @@ public class xAuth extends JavaPlugin
{ {
getServer().getScheduler().cancelAllTasks(); getServer().getScheduler().cancelAllTasks();
//Restore players inventories so they are not lost //Restore players inventories and locations so they are not lost
Player[] players = getServer().getOnlinePlayers(); Player[] players = getServer().getOnlinePlayers();
if (players.length > 0) if (players.length > 0)
{ {
for (Player player : players) for (Player player : players) {
if (!sessionExists(player.getName())) if (!sessionExists(player.getName())) {
player.teleport(loginLocation.get(player));
loginLocation.remove(player);
restoreInventory(player); restoreInventory(player);
}
}
} }
if (fullyEnabled) if (fullyEnabled)
@ -286,6 +293,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);
restoreInventory(player); restoreInventory(player);
} }
@ -324,8 +333,11 @@ public class xAuth extends JavaPlugin
if (session.isExpired(new Date(session.getLoginTime() + (settings.getInt("session.timeout") * 1000)))) if (session.isExpired(new Date(session.getLoginTime() + (settings.getInt("session.timeout") * 1000))))
removeSession(pName); removeSession(pName);
} }
else else {
player.teleport(loginLocation.get(player));
loginLocation.remove(player);
restoreInventory(player); restoreInventory(player);
}
} }
public void addStrike(Player player) public void addStrike(Player player)
@ -374,6 +386,9 @@ public class xAuth extends JavaPlugin
public Boolean isCmdAllowed(String cmd) public Boolean isCmdAllowed(String cmd)
{ {
if (cmd.equals("/register") || cmd.equals("/login") || cmd.equals("/l"))
return true;
if (settings.getStrList("misc.allowed-cmds").contains(cmd)) if (settings.getStrList("misc.allowed-cmds").contains(cmd))
return true; return true;
@ -415,6 +430,10 @@ public class xAuth extends JavaPlugin
playerInv.setChestplate(null); playerInv.setChestplate(null);
playerInv.setLeggings(null); playerInv.setLeggings(null);
playerInv.setBoots(null); playerInv.setBoots(null);
//Backpack fix
player.saveData();
//end Backpack fix
} }
public void restoreInventory(Player player) public void restoreInventory(Player player)
@ -423,7 +442,21 @@ public class xAuth extends JavaPlugin
if (inventory.containsKey(player)) if (inventory.containsKey(player))
{ {
playerInv.setContents(inventory.get(player)); ItemStack[] inv = inventory.get(player);
//Backpack fix
if (playerInv.getSize() > inv.length)
{
ItemStack[] newInv = new ItemStack[playerInv.getSize()];
for(int i = 0; i < inv.length; i++)
newInv[i] = inv[i];
inv = newInv;
}
//end Backpack fix
playerInv.setContents(inv);
inventory.remove(player); inventory.remove(player);
} }
@ -492,6 +525,8 @@ public class xAuth extends JavaPlugin
if (player != null) if (player != null)
{ {
loginLocation.put(player, player.getLocation());
player.teleport(player.getWorld().getSpawnLocation());
saveInventory(player); saveInventory(player);
player.sendMessage(strings.getString("logout.success.ended")); player.sendMessage(strings.getString("logout.success.ended"));
} }

View File

@ -1,6 +1,6 @@
package com.cypherx.xauth; package com.cypherx.xauth;
//import org.bukkit.Location; import org.bukkit.Location;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.event.player.*; import org.bukkit.event.player.*;
@ -37,6 +37,9 @@ 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))
@ -129,8 +132,12 @@ public class xAuthPlayerListener extends PlayerListener
Player player = event.getPlayer(); Player player = event.getPlayer();
plugin.handleEvent(player, event); plugin.handleEvent(player, event);
if (event.isCancelled()) Location loc = player.getWorld().getSpawnLocation();
player.teleport(event.getFrom());
if (event.isCancelled() && player.teleport(loc)) {
event.setTo(loc);
event.setFrom(loc);
}
} }
//Prevents player from picking up items //Prevents player from picking up items

View File

@ -1,15 +1,15 @@
name: xAuth name: xAuth
main: com.cypherx.xauth.xAuth main: com.cypherx.xauth.xAuth
version: 1.2.3 version: 1.2.4
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.
authors: author: CypherX
- CypherX
commands: commands:
register: register:
description: Register your player name description: Register your player name
usage: /register <password> usage: /register <password>
login: login:
aliases: [l]
description: Authenticate yourself description: Authenticate yourself
usage: /login <password> usage: /login <password>
changepw: changepw: