mirror of
https://github.com/EssentialsX/Essentials.git
synced 2024-09-19 11:31:03 +02:00
Merge branch 'master' into release
This commit is contained in:
commit
a85cbdd505
@ -15,7 +15,7 @@ public class Commanddelhome extends EssentialsCommand
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void run(final Server server, final CommandSender sender, final String commandLabel, final String[] args) throws Exception
|
public void run(final Server server, final CommandSender sender, final String commandLabel, String[] args) throws Exception
|
||||||
{
|
{
|
||||||
if (args.length < 1)
|
if (args.length < 1)
|
||||||
{
|
{
|
||||||
@ -24,7 +24,18 @@ public class Commanddelhome extends EssentialsCommand
|
|||||||
|
|
||||||
User user = ess.getUser(sender);
|
User user = ess.getUser(sender);
|
||||||
String name;
|
String name;
|
||||||
final String[] expandedArg = args[0].split(":");
|
String[] expandedArg;
|
||||||
|
|
||||||
|
//Allowing both formats /sethome khobbits house | /sethome khobbits:house
|
||||||
|
final String[] nameParts = args[0].split(":");
|
||||||
|
if (nameParts[0].length() != args[0].length())
|
||||||
|
{
|
||||||
|
expandedArg = nameParts;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
expandedArg = args;
|
||||||
|
}
|
||||||
|
|
||||||
if (expandedArg.length > 1 && (user == null || user.isAuthorized("essentials.delhome.others")))
|
if (expandedArg.length > 1 && (user == null || user.isAuthorized("essentials.delhome.others")))
|
||||||
{
|
{
|
||||||
@ -41,9 +52,7 @@ public class Commanddelhome extends EssentialsCommand
|
|||||||
}
|
}
|
||||||
//TODO: Think up a nice error message
|
//TODO: Think up a nice error message
|
||||||
/*
|
/*
|
||||||
* if (name.equalsIgnoreCase("bed")) {
|
* if (name.equalsIgnoreCase("bed")) { throw new Exception("You cannot remove the vanilla home point"); }
|
||||||
* throw new Exception("You cannot remove the vanilla home point");
|
|
||||||
* }
|
|
||||||
*/
|
*/
|
||||||
user.delHome(name.toLowerCase(Locale.ENGLISH));
|
user.delHome(name.toLowerCase(Locale.ENGLISH));
|
||||||
sender.sendMessage(_("deleteHome", name));
|
sender.sendMessage(_("deleteHome", name));
|
||||||
|
@ -7,6 +7,7 @@ import com.earth2me.essentials.Util;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Locale;
|
import java.util.Locale;
|
||||||
import org.bukkit.Location;
|
import org.bukkit.Location;
|
||||||
|
import org.bukkit.Material;
|
||||||
import org.bukkit.Server;
|
import org.bukkit.Server;
|
||||||
import org.bukkit.event.player.PlayerTeleportEvent.TeleportCause;
|
import org.bukkit.event.player.PlayerTeleportEvent.TeleportCause;
|
||||||
|
|
||||||
@ -57,10 +58,14 @@ public class Commandhome extends EssentialsCommand
|
|||||||
}
|
}
|
||||||
catch (NotEnoughArgumentsException e)
|
catch (NotEnoughArgumentsException e)
|
||||||
{
|
{
|
||||||
|
Location bed = player.getBedSpawnLocation();
|
||||||
|
if (bed != null && bed.getBlock().getType() != Material.BED_BLOCK)
|
||||||
|
{
|
||||||
|
bed = null;
|
||||||
|
}
|
||||||
final List<String> homes = player.getHomes();
|
final List<String> homes = player.getHomes();
|
||||||
if (homes.isEmpty() && player.equals(user))
|
if (homes.isEmpty() && player.equals(user))
|
||||||
{
|
{
|
||||||
final Location bed = player.getBedSpawnLocation();
|
|
||||||
if (bed != null)
|
if (bed != null)
|
||||||
{
|
{
|
||||||
user.getTeleport().teleport(bed, charge, TeleportCause.COMMAND);
|
user.getTeleport().teleport(bed, charge, TeleportCause.COMMAND);
|
||||||
@ -79,7 +84,10 @@ public class Commandhome extends EssentialsCommand
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
homes.add("bed");
|
if (bed != null)
|
||||||
|
{
|
||||||
|
homes.add("bed");
|
||||||
|
}
|
||||||
user.sendMessage(_("homes", Util.joinList(homes)));
|
user.sendMessage(_("homes", Util.joinList(homes)));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -29,6 +29,9 @@ public class Commandsethome extends EssentialsCommand
|
|||||||
{
|
{
|
||||||
if (user.isAuthorized("essentials.sethome.multiple"))
|
if (user.isAuthorized("essentials.sethome.multiple"))
|
||||||
{
|
{
|
||||||
|
if ("bed".equals(args[0].toLowerCase(Locale.ENGLISH))) {
|
||||||
|
throw new NotEnoughArgumentsException();
|
||||||
|
}
|
||||||
if ((user.isAuthorized("essentials.sethome.multiple.unlimited")) || (user.getHomes().size() < ess.getSettings().getHomeLimit(user))
|
if ((user.isAuthorized("essentials.sethome.multiple.unlimited")) || (user.getHomes().size() < ess.getSettings().getHomeLimit(user))
|
||||||
|| (user.getHomes().contains(args[0].toLowerCase(Locale.ENGLISH))))
|
|| (user.getHomes().contains(args[0].toLowerCase(Locale.ENGLISH))))
|
||||||
{
|
{
|
||||||
@ -63,6 +66,9 @@ public class Commandsethome extends EssentialsCommand
|
|||||||
{
|
{
|
||||||
name = "home";
|
name = "home";
|
||||||
}
|
}
|
||||||
|
if ("bed".equals(name.toLowerCase(Locale.ENGLISH))) {
|
||||||
|
throw new NotEnoughArgumentsException();
|
||||||
|
}
|
||||||
usersHome.setHome(name, user.getLocation());
|
usersHome.setHome(name, user.getLocation());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -3,7 +3,7 @@ name: Essentials
|
|||||||
main: com.earth2me.essentials.Essentials
|
main: com.earth2me.essentials.Essentials
|
||||||
# Note to developers: This next line cannot change, or the automatic versioning system will break.
|
# Note to developers: This next line cannot change, or the automatic versioning system will break.
|
||||||
version: TeamCity
|
version: TeamCity
|
||||||
website: http://ci.earth2me.net/
|
website: http://tiny.cc/EssentialsCommands
|
||||||
description: Provides an essential, core set of commands for Bukkit.
|
description: Provides an essential, core set of commands for Bukkit.
|
||||||
authors: [Zenexer, ementalo, Aelux, Brettflan, KimKandor, snowleo, ceulemans, Xeology, KHobbits]
|
authors: [Zenexer, ementalo, Aelux, Brettflan, KimKandor, snowleo, ceulemans, Xeology, KHobbits]
|
||||||
commands:
|
commands:
|
||||||
|
@ -3,7 +3,7 @@ name: EssentialsChat
|
|||||||
main: com.earth2me.essentials.chat.EssentialsChat
|
main: com.earth2me.essentials.chat.EssentialsChat
|
||||||
# Note to developers: This next line cannot change, or the automatic versioning system will break.
|
# Note to developers: This next line cannot change, or the automatic versioning system will break.
|
||||||
version: TeamCity
|
version: TeamCity
|
||||||
website: http://www.earth2me.net:8001/
|
website: http://tiny.cc/EssentialsCommands
|
||||||
description: Provides chat control features for Essentials. Requires Permissions.
|
description: Provides chat control features for Essentials. Requires Permissions.
|
||||||
authors: [Zenexer, ementalo, Aelux, Brettflan, KimKandor, snowleo, ceulemans, Xeology, KHobbits, Okamosy]
|
authors: [Zenexer, ementalo, Aelux, Brettflan, KimKandor, snowleo, ceulemans, Xeology, KHobbits, Okamosy]
|
||||||
depend: [Essentials]
|
depend: [Essentials]
|
||||||
|
@ -3,7 +3,7 @@ name: EssentialsGeoIP
|
|||||||
main: com.earth2me.essentials.geoip.EssentialsGeoIP
|
main: com.earth2me.essentials.geoip.EssentialsGeoIP
|
||||||
# Note to developers: This next line cannot change, or the automatic versioning system will break.
|
# Note to developers: This next line cannot change, or the automatic versioning system will break.
|
||||||
version: TeamCity
|
version: TeamCity
|
||||||
website: http://www.earth2me.net:8001/
|
website: http://tiny.cc/EssentialsCommands
|
||||||
description: Shows the country or city of a user on login and /whois.
|
description: Shows the country or city of a user on login and /whois.
|
||||||
authors: [Zenexer, ementalo, Aelux, Brettflan, KimKandor, snowleo, ceulemans, Xeology]
|
authors: [Zenexer, ementalo, Aelux, Brettflan, KimKandor, snowleo, ceulemans, Xeology]
|
||||||
depend: [Essentials]
|
depend: [Essentials]
|
@ -122,4 +122,6 @@ v 1.9:
|
|||||||
- Fixed subgroups (I broke earlier).
|
- Fixed subgroups (I broke earlier).
|
||||||
- Check for a null player object in the PlayerTeleportEvent.
|
- Check for a null player object in the PlayerTeleportEvent.
|
||||||
- Trap errors in fetching the mirrors map.
|
- Trap errors in fetching the mirrors map.
|
||||||
- Fixed an infinite loop error when using '/manudel' on a logged in player. It caused setDefaultGroup to trigger a bukkit update when no GM User existed yet.
|
- Fixed an infinite loop error when using '/manudel' on a logged in player. It caused setDefaultGroup to trigger a bukkit update when no GM User existed yet.
|
||||||
|
- do not allow inherited permissions to negate higher perms.
|
||||||
|
- Fixed a bug when pushing superperms in the wrong order.
|
@ -134,14 +134,18 @@ public class AnjoPermissionsHandler extends PermissionsReaderInterface {
|
|||||||
groupPermArray = populatePerms(ph.getGroup(group).getPermissionList(), includeChildren);
|
groupPermArray = populatePerms(ph.getGroup(group).getPermissionList(), includeChildren);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Add all group permissions, unless negated by direct player perms.
|
// Add all group permissions, unless negated by earlier permissions.
|
||||||
for (String perm : groupPermArray)
|
for (String perm : groupPermArray) {
|
||||||
if ((!playerPermArray.contains(perm)) && (!playerPermArray.contains("-" + perm)))
|
boolean negated = (perm.startsWith("-"));
|
||||||
|
// Perm doesn't already exists and there is no negation for it
|
||||||
|
// or It's a negated perm where a normal perm doesn't exists (don't allow inheritance to negate higher perms)
|
||||||
|
if ((!negated && !playerPermArray.contains(perm) && !playerPermArray.contains("-" + perm))
|
||||||
|
|| (negated && !playerPermArray.contains(perm.substring(1))))
|
||||||
playerPermArray.add(perm);
|
playerPermArray.add(perm);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
// Collections.sort(playerPermArray,
|
// Collections.sort(playerPermArray, StringPermissionComparator.getInstance());
|
||||||
// StringPermissionComparator.getInstance());
|
|
||||||
|
|
||||||
return playerPermArray;
|
return playerPermArray;
|
||||||
}
|
}
|
||||||
|
@ -20,15 +20,15 @@ import java.lang.reflect.Field;
|
|||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
|
import java.util.LinkedHashMap;
|
||||||
import java.util.LinkedList;
|
import java.util.LinkedList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.ListIterator;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
import org.anjocaido.groupmanager.GroupManager;
|
import org.anjocaido.groupmanager.GroupManager;
|
||||||
//import org.anjocaido.groupmanager.data.User;
|
|
||||||
import org.anjocaido.groupmanager.dataholder.OverloadedWorldHolder;
|
import org.anjocaido.groupmanager.dataholder.OverloadedWorldHolder;
|
||||||
//import org.anjocaido.groupmanager.utils.PermissionCheckResult;
|
|
||||||
|
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
@ -46,7 +46,6 @@ import org.bukkit.event.server.PluginEnableEvent;
|
|||||||
import org.bukkit.permissions.Permission;
|
import org.bukkit.permissions.Permission;
|
||||||
import org.bukkit.permissions.PermissionAttachment;
|
import org.bukkit.permissions.PermissionAttachment;
|
||||||
import org.bukkit.permissions.PermissionAttachmentInfo;
|
import org.bukkit.permissions.PermissionAttachmentInfo;
|
||||||
//import org.bukkit.permissions.PermissionDefault;
|
|
||||||
import org.bukkit.plugin.PluginManager;
|
import org.bukkit.plugin.PluginManager;
|
||||||
|
|
||||||
|
|
||||||
@ -54,12 +53,12 @@ import org.bukkit.plugin.PluginManager;
|
|||||||
*
|
*
|
||||||
* BukkitPermissions overrides to force GM reponses to Superperms
|
* BukkitPermissions overrides to force GM reponses to Superperms
|
||||||
*
|
*
|
||||||
* @author ElgarL, originally based upon PermissionsEX implementation
|
* @author ElgarL
|
||||||
*/
|
*/
|
||||||
public class BukkitPermissions {
|
public class BukkitPermissions {
|
||||||
|
|
||||||
protected Map<Player, PermissionAttachment> attachments = new HashMap<Player, PermissionAttachment>();
|
protected Map<Player, PermissionAttachment> attachments = new HashMap<Player, PermissionAttachment>();
|
||||||
protected LinkedList<Permission> registeredPermissions = new LinkedList<Permission>();
|
protected LinkedHashMap<String, Permission> registeredPermissions = new LinkedHashMap<String, Permission>();
|
||||||
protected GroupManager plugin;
|
protected GroupManager plugin;
|
||||||
protected boolean dumpAllPermissions = true;
|
protected boolean dumpAllPermissions = true;
|
||||||
protected boolean dumpMatchedPermissions = true;
|
protected boolean dumpMatchedPermissions = true;
|
||||||
@ -112,14 +111,10 @@ public class BukkitPermissions {
|
|||||||
|
|
||||||
public void collectPermissions() {
|
public void collectPermissions() {
|
||||||
registeredPermissions.clear();
|
registeredPermissions.clear();
|
||||||
/*
|
|
||||||
for (Plugin bukkitPlugin : Bukkit.getServer().getPluginManager().getPlugins()) {
|
for (Permission perm : Bukkit.getPluginManager().getPermissions()) {
|
||||||
for (Permission permission : bukkitPlugin.getDescription().getPermissions())
|
registeredPermissions.put(perm.getName().toLowerCase(), perm);
|
||||||
registeredPermissions.push(permission);
|
|
||||||
}
|
}
|
||||||
*/
|
|
||||||
|
|
||||||
registeredPermissions = new LinkedList<Permission>(Bukkit.getPluginManager().getPermissions());
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -155,73 +150,22 @@ public class BukkitPermissions {
|
|||||||
|
|
||||||
OverloadedWorldHolder worldData = plugin.getWorldsHolder().getWorldData(world);
|
OverloadedWorldHolder worldData = plugin.getWorldsHolder().getWorldData(world);
|
||||||
Boolean value = false;
|
Boolean value = false;
|
||||||
//User user = worldData.getUser(player.getName());
|
|
||||||
|
|
||||||
/*
|
|
||||||
// clear permissions
|
|
||||||
for (String permission : attachment.getPermissions().keySet())
|
|
||||||
attachment.unsetPermission(permission);
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*
|
|
||||||
* find matching permissions
|
|
||||||
*
|
|
||||||
* and base bukkit perms if we are set to allow bukkit permissions to
|
|
||||||
* override.
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*
|
|
||||||
for (Permission permission : registeredPermissions) {
|
|
||||||
|
|
||||||
PermissionCheckResult result = worldData.getPermissionsHandler().checkFullGMPermission(user, permission.getName(), false);
|
|
||||||
|
|
||||||
// Only check bukkit override IF we don't have the permission
|
|
||||||
// directly.
|
|
||||||
if (result.resultType == PermissionCheckResult.Type.NOTFOUND) {
|
|
||||||
PermissionDefault permDefault = permission.getDefault();
|
|
||||||
|
|
||||||
if ((plugin.getGMConfig().isBukkitPermsOverride()) && ((permDefault == PermissionDefault.TRUE)
|
|
||||||
|| ((permDefault == PermissionDefault.NOT_OP) && !player.isOp())
|
|
||||||
|| ((permDefault == PermissionDefault.OP) && player.isOp()))) {
|
|
||||||
value = true;
|
|
||||||
} else {
|
|
||||||
value = false;
|
|
||||||
}
|
|
||||||
} else if (result.resultType == PermissionCheckResult.Type.NEGATION) {
|
|
||||||
value = false;
|
|
||||||
} else {
|
|
||||||
value = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Set the root permission
|
|
||||||
if ((value == true) || (result.resultType == PermissionCheckResult.Type.NEGATION)) {
|
|
||||||
attachment.setPermission(permission, value);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
|
|
||||||
// Add all permissions for this player (GM only)
|
// Add all permissions for this player (GM only)
|
||||||
// child nodes will be calculated by Bukkit.
|
// child nodes will be calculated by Bukkit.
|
||||||
Set<String> playerPermArray = worldData.getPermissionsHandler().getAllPlayersPermissions(player.getName(), false);
|
List<String> playerPermArray = new ArrayList<String>(worldData.getPermissionsHandler().getAllPlayersPermissions(player.getName(), false));
|
||||||
Map<String, Boolean> newPerms = new HashMap<String, Boolean>();
|
LinkedHashMap<String, Boolean> newPerms = new LinkedHashMap<String, Boolean>();
|
||||||
|
|
||||||
//Set<String> hash = new HashSet<String>();
|
// Sort the perm list by parent/child, so it will push to superperms correctly.
|
||||||
//for (String permission : playerPermArray)
|
playerPermArray = sort(playerPermArray);
|
||||||
// hash.add(permission);
|
|
||||||
|
|
||||||
|
|
||||||
for (String permission : playerPermArray) {
|
for (String permission : playerPermArray) {
|
||||||
value = (!permission.startsWith("-"));
|
value = (!permission.startsWith("-"));
|
||||||
/*
|
|
||||||
if (!attachment.getPermissions().containsKey(permission)) {
|
|
||||||
attachment.setPermission(permission, value);
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
newPerms.put((value? permission : permission.substring(1)), value);
|
newPerms.put((value? permission : permission.substring(1)), value);
|
||||||
}
|
}
|
||||||
|
|
||||||
//player.recalculatePermissions();
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This is put in place until such a time as Bukkit pull 466 is implemented
|
* This is put in place until such a time as Bukkit pull 466 is implemented
|
||||||
* https://github.com/Bukkit/Bukkit/pull/466
|
* https://github.com/Bukkit/Bukkit/pull/466
|
||||||
@ -241,6 +185,42 @@ public class BukkitPermissions {
|
|||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sort a permission node list by parent/child
|
||||||
|
*
|
||||||
|
* @param permList
|
||||||
|
* @return List sorted for priority
|
||||||
|
*/
|
||||||
|
private List<String> sort(List<String> permList) {
|
||||||
|
|
||||||
|
List<String> result = new ArrayList<String>();
|
||||||
|
|
||||||
|
for (String key : permList) {
|
||||||
|
String a = key.charAt(0) == '-'? key.substring(1):key;
|
||||||
|
Map<String, Boolean> allchildren = GroupManager.BukkitPermissions.getAllChildren(a, new HashSet<String>());
|
||||||
|
if (allchildren != null) {
|
||||||
|
|
||||||
|
ListIterator<String> itr = result.listIterator();
|
||||||
|
|
||||||
|
while (itr.hasNext()){
|
||||||
|
String node = (String) itr.next();
|
||||||
|
String b = node.charAt(0) == '-'? node.substring(1):node;
|
||||||
|
|
||||||
|
// Insert the parent node before the child
|
||||||
|
if (allchildren.containsKey(b)) {
|
||||||
|
itr.set(key);
|
||||||
|
itr.add(node);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!result.contains(key))
|
||||||
|
result.add(key);
|
||||||
|
}
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -254,13 +234,12 @@ public class BukkitPermissions {
|
|||||||
|
|
||||||
List<String> perms = new ArrayList<String>();
|
List<String> perms = new ArrayList<String>();
|
||||||
|
|
||||||
for (Permission permission : registeredPermissions) {
|
for (String key : registeredPermissions.keySet()) {
|
||||||
String name = permission.getName();
|
if (!perms.contains(key)) {
|
||||||
if (!perms.contains(name)) {
|
perms.add(key);
|
||||||
perms.add(name);
|
|
||||||
|
|
||||||
if (includeChildren) {
|
if (includeChildren) {
|
||||||
Map<String, Boolean> children = getAllChildren(name, new HashSet<String>());
|
Map<String, Boolean> children = getAllChildren(key, new HashSet<String>());
|
||||||
if (children != null) {
|
if (children != null) {
|
||||||
for (String node : children.keySet())
|
for (String node : children.keySet())
|
||||||
if (!perms.contains(node))
|
if (!perms.contains(node))
|
||||||
@ -316,13 +295,13 @@ public class BukkitPermissions {
|
|||||||
* @return Map of child permissions
|
* @return Map of child permissions
|
||||||
*/
|
*/
|
||||||
public Map<String, Boolean> getChildren(String node) {
|
public Map<String, Boolean> getChildren(String node) {
|
||||||
for (Permission permission : registeredPermissions) {
|
|
||||||
if (permission.getName().equalsIgnoreCase(node)) {
|
|
||||||
return permission.getChildren();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return null;
|
Permission perm = registeredPermissions.get(node.toLowerCase());
|
||||||
|
if (perm == null)
|
||||||
|
return null;
|
||||||
|
|
||||||
|
return perm.getChildren();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
name: GroupManager
|
name: GroupManager
|
||||||
version: GMBuildVer (Phoenix)
|
version: GMBuildVer (Phoenix)
|
||||||
main: org.anjocaido.groupmanager.GroupManager
|
main: org.anjocaido.groupmanager.GroupManager
|
||||||
website: http://www.anjocaido.info/
|
website: http://ess.khhq.net/wiki/Group_Manager
|
||||||
description: Provides on-the-fly system for permissions system created by Nijikokun. But all in memory, and with flat-file saving schedule.
|
description: Provides on-the-fly system for permissions system created by Nijikokun. But all in memory, and with flat-file saving schedule.
|
||||||
authors:
|
authors:
|
||||||
- AnjoCaido
|
- AnjoCaido
|
||||||
|
@ -0,0 +1,36 @@
|
|||||||
|
package com.earth2me.essentials.protect;
|
||||||
|
|
||||||
|
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.BlockListener;
|
||||||
|
|
||||||
|
@Deprecated
|
||||||
|
public class EmergencyBlockListener extends BlockListener
|
||||||
|
{
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onBlockBurn(final BlockBurnEvent event)
|
||||||
|
{
|
||||||
|
event.setCancelled(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onBlockIgnite(final BlockIgniteEvent event)
|
||||||
|
{
|
||||||
|
event.setCancelled(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onBlockFromTo(final BlockFromToEvent event)
|
||||||
|
{
|
||||||
|
event.setCancelled(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onBlockBreak(final BlockBreakEvent event)
|
||||||
|
{
|
||||||
|
event.setCancelled(true);
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,22 @@
|
|||||||
|
package com.earth2me.essentials.protect;
|
||||||
|
|
||||||
|
import org.bukkit.event.entity.EntityDamageEvent;
|
||||||
|
import org.bukkit.event.entity.EntityExplodeEvent;
|
||||||
|
import org.bukkit.event.entity.EntityListener;
|
||||||
|
|
||||||
|
@Deprecated
|
||||||
|
public class EmergencyEntityListener extends EntityListener
|
||||||
|
{
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onEntityExplode(final EntityExplodeEvent event)
|
||||||
|
{
|
||||||
|
event.setCancelled(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onEntityDamage(final EntityDamageEvent event)
|
||||||
|
{
|
||||||
|
event.setCancelled(true);
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,16 @@
|
|||||||
|
package com.earth2me.essentials.protect;
|
||||||
|
|
||||||
|
import org.bukkit.event.player.PlayerJoinEvent;
|
||||||
|
import org.bukkit.event.player.PlayerListener;
|
||||||
|
|
||||||
|
@Deprecated
|
||||||
|
public class EmergencyPlayerListener extends PlayerListener
|
||||||
|
{
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onPlayerJoin(PlayerJoinEvent event)
|
||||||
|
{
|
||||||
|
event.getPlayer().sendMessage("Essentials Protect is in emergency mode. Check your log for errors.");
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -9,6 +9,8 @@ import java.util.logging.Level;
|
|||||||
import java.util.logging.LogRecord;
|
import java.util.logging.LogRecord;
|
||||||
import java.util.logging.Logger;
|
import java.util.logging.Logger;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.event.Event.Priority;
|
||||||
|
import org.bukkit.event.Event.Type;
|
||||||
import org.bukkit.plugin.Plugin;
|
import org.bukkit.plugin.Plugin;
|
||||||
import org.bukkit.plugin.PluginManager;
|
import org.bukkit.plugin.PluginManager;
|
||||||
import org.bukkit.plugin.java.JavaPlugin;
|
import org.bukkit.plugin.java.JavaPlugin;
|
||||||
@ -63,8 +65,22 @@ public class EssentialsProtect extends JavaPlugin implements IProtect
|
|||||||
|
|
||||||
private void enableEmergencyMode(final PluginManager pm)
|
private void enableEmergencyMode(final PluginManager pm)
|
||||||
{
|
{
|
||||||
final EmergencyListener emListener = new EmergencyListener();
|
//final EmergencyListener emListener = new EmergencyListener();
|
||||||
pm.registerEvents(emListener, this);
|
//pm.registerEvents(emListener, this);
|
||||||
|
|
||||||
|
//TODO: Remove deprecated listners in a few weeks.
|
||||||
|
|
||||||
|
final EmergencyBlockListener emBlockListener = new EmergencyBlockListener();
|
||||||
|
final EmergencyEntityListener emEntityListener = new EmergencyEntityListener();
|
||||||
|
final EmergencyPlayerListener emPlayerListener = new EmergencyPlayerListener();
|
||||||
|
pm.registerEvent(Type.PLAYER_JOIN, emPlayerListener, Priority.Low, this);
|
||||||
|
pm.registerEvent(Type.BLOCK_BURN, emBlockListener, Priority.Low, this);
|
||||||
|
pm.registerEvent(Type.BLOCK_IGNITE, emBlockListener, Priority.Low, this);
|
||||||
|
pm.registerEvent(Type.BLOCK_FROMTO, emBlockListener, Priority.Low, this);
|
||||||
|
pm.registerEvent(Type.BLOCK_BREAK, emBlockListener, Priority.Low, this);
|
||||||
|
pm.registerEvent(Type.ENTITY_DAMAGE, emEntityListener, Priority.Low, this);
|
||||||
|
pm.registerEvent(Type.ENTITY_EXPLODE, emEntityListener, Priority.Low, this);
|
||||||
|
|
||||||
for (Player player : getServer().getOnlinePlayers())
|
for (Player player : getServer().getOnlinePlayers())
|
||||||
{
|
{
|
||||||
player.sendMessage("Essentials Protect is in emergency mode. Check your log for errors.");
|
player.sendMessage("Essentials Protect is in emergency mode. Check your log for errors.");
|
||||||
|
@ -8,6 +8,7 @@ import java.util.logging.Level;
|
|||||||
import java.util.logging.Logger;
|
import java.util.logging.Logger;
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.Location;
|
import org.bukkit.Location;
|
||||||
|
import org.bukkit.Material;
|
||||||
import org.bukkit.event.Listener;
|
import org.bukkit.event.Listener;
|
||||||
import org.bukkit.event.player.PlayerJoinEvent;
|
import org.bukkit.event.player.PlayerJoinEvent;
|
||||||
import org.bukkit.event.player.PlayerRespawnEvent;
|
import org.bukkit.event.player.PlayerRespawnEvent;
|
||||||
@ -33,10 +34,15 @@ public class EssentialsSpawnPlayerListener implements Listener
|
|||||||
|
|
||||||
if (ess.getSettings().getRespawnAtHome())
|
if (ess.getSettings().getRespawnAtHome())
|
||||||
{
|
{
|
||||||
Location home = user.getHome(user.getLocation());
|
Location home;
|
||||||
if (home == null)
|
final Location bed = user.getBedSpawnLocation();
|
||||||
|
if (bed != null && bed.getBlock().getType() == Material.BED_BLOCK)
|
||||||
{
|
{
|
||||||
home = user.getBedSpawnLocation();
|
home = bed;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
home = user.getHome(user.getLocation());
|
||||||
}
|
}
|
||||||
if (home != null)
|
if (home != null)
|
||||||
{
|
{
|
||||||
@ -90,7 +96,7 @@ public class EssentialsSpawnPlayerListener implements Listener
|
|||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
Location spawn = spawns.getSpawn(ess.getSettings().getNewbieSpawn());
|
Location spawn = spawns.getSpawn(ess.getSettings().getNewbieSpawn());
|
||||||
|
@ -3,7 +3,7 @@ name: EssentialsSpawn
|
|||||||
main: com.earth2me.essentials.spawn.EssentialsSpawn
|
main: com.earth2me.essentials.spawn.EssentialsSpawn
|
||||||
# Note to developers: This next line cannot change, or the automatic versioning system will break.
|
# Note to developers: This next line cannot change, or the automatic versioning system will break.
|
||||||
version: TeamCity
|
version: TeamCity
|
||||||
website: http://www.earth2me.net:8001/
|
website: http://tiny.cc/EssentialsCommands
|
||||||
description: Provides spawn control commands, utilizing Essentials.
|
description: Provides spawn control commands, utilizing Essentials.
|
||||||
authors: [Zenexer, ementalo, Aelux, Brettflan, KimKandor, snowleo, ceulemans, Xeology, KHobbits]
|
authors: [Zenexer, ementalo, Aelux, Brettflan, KimKandor, snowleo, ceulemans, Xeology, KHobbits]
|
||||||
depend: [Essentials]
|
depend: [Essentials]
|
||||||
|
@ -3,7 +3,7 @@ name: EssentialsXMPP
|
|||||||
main: com.earth2me.essentials.xmpp.EssentialsXMPP
|
main: com.earth2me.essentials.xmpp.EssentialsXMPP
|
||||||
# Note to developers: This next line cannot change, or the automatic versioning system will break.
|
# Note to developers: This next line cannot change, or the automatic versioning system will break.
|
||||||
version: TeamCity
|
version: TeamCity
|
||||||
website: http://www.earth2me.net:8001/
|
website: http://ess.khhq.net/wiki/XMPP
|
||||||
description: Provides xmpp communication.
|
description: Provides xmpp communication.
|
||||||
authors:
|
authors:
|
||||||
- snowleo
|
- snowleo
|
||||||
|
Loading…
Reference in New Issue
Block a user