mirror of
https://github.com/EssentialsX/Essentials.git
synced 2024-10-18 01:15:10 +02:00
Merge branch 'essmaster' into essrelease
This commit is contained in:
commit
401498a4f7
@ -1,6 +1,7 @@
|
|||||||
package com.earth2me.essentials;
|
package com.earth2me.essentials;
|
||||||
|
|
||||||
import java.util.logging.Logger;
|
import java.util.logging.Logger;
|
||||||
|
import org.bukkit.GameMode;
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
import org.bukkit.event.block.BlockListener;
|
import org.bukkit.event.block.BlockListener;
|
||||||
import org.bukkit.event.block.BlockPlaceEvent;
|
import org.bukkit.event.block.BlockPlaceEvent;
|
||||||
@ -93,7 +94,7 @@ public class EssentialsBlockListener extends BlockListener
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
boolean unlimitedForUser = user.hasUnlimited(is);
|
boolean unlimitedForUser = user.hasUnlimited(is);
|
||||||
if (unlimitedForUser)
|
if (unlimitedForUser && user.getGameMode() == GameMode.SURVIVAL)
|
||||||
{
|
{
|
||||||
ess.scheduleSyncDelayedTask(
|
ess.scheduleSyncDelayedTask(
|
||||||
new Runnable()
|
new Runnable()
|
||||||
|
@ -84,10 +84,12 @@ public class EssentialsEntityListener extends EntityListener
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onFoodLevelChange(FoodLevelChangeEvent event)
|
public void onFoodLevelChange(FoodLevelChangeEvent event)
|
||||||
{
|
{
|
||||||
if (event.getEntity() instanceof Player && ess.getUser(event.getEntity()).isGodModeEnabled())
|
if (event.getEntity() instanceof Player && ess.getUser(event.getEntity()).isGodModeEnabled())
|
||||||
{
|
{
|
||||||
|
//TODO: Remove the following line, when we're happy to remove backwards compatability with 1185.
|
||||||
event.setFoodLevel(20);
|
event.setFoodLevel(20);
|
||||||
|
event.setCancelled(true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -46,11 +46,11 @@ public class EssentialsPlayerListener extends PlayerListener
|
|||||||
public void onPlayerRespawn(final PlayerRespawnEvent event)
|
public void onPlayerRespawn(final PlayerRespawnEvent event)
|
||||||
{
|
{
|
||||||
final User user = ess.getUser(event.getPlayer());
|
final User user = ess.getUser(event.getPlayer());
|
||||||
user.setDisplayName(user.getNick());
|
user.setDisplayNick(user.getNick());
|
||||||
updateCompass(user);
|
updateCompass(user);
|
||||||
if (ess.getSettings().changeDisplayName())
|
if (ess.getSettings().changeDisplayName())
|
||||||
{
|
{
|
||||||
user.setDisplayName(user.getNick());
|
user.setDisplayNick(user.getNick());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -76,7 +76,7 @@ public class EssentialsPlayerListener extends PlayerListener
|
|||||||
user.updateActivity(true);
|
user.updateActivity(true);
|
||||||
if (ess.getSettings().changeDisplayName())
|
if (ess.getSettings().changeDisplayName())
|
||||||
{
|
{
|
||||||
user.setDisplayName(user.getNick());
|
user.setDisplayNick(user.getNick());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -262,7 +262,7 @@ public class EssentialsPlayerListener extends PlayerListener
|
|||||||
|
|
||||||
if (ess.getSettings().changeDisplayName())
|
if (ess.getSettings().changeDisplayName())
|
||||||
{
|
{
|
||||||
user.setDisplayName(user.getNick());
|
user.setDisplayNick(user.getNick());
|
||||||
}
|
}
|
||||||
user.updateActivity(false);
|
user.updateActivity(false);
|
||||||
if (user.isAuthorized("essentials.sleepingignored"))
|
if (user.isAuthorized("essentials.sleepingignored"))
|
||||||
@ -351,7 +351,7 @@ public class EssentialsPlayerListener extends PlayerListener
|
|||||||
final User user = ess.getUser(event.getPlayer());
|
final User user = ess.getUser(event.getPlayer());
|
||||||
if (ess.getSettings().changeDisplayName())
|
if (ess.getSettings().changeDisplayName())
|
||||||
{
|
{
|
||||||
user.setDisplayName(user.getNick());
|
user.setDisplayNick(user.getNick());
|
||||||
}
|
}
|
||||||
updateCompass(user);
|
updateCompass(user);
|
||||||
}
|
}
|
||||||
|
@ -5,6 +5,7 @@ import java.util.UUID;
|
|||||||
import org.bukkit.BlockChangeDelegate;
|
import org.bukkit.BlockChangeDelegate;
|
||||||
import org.bukkit.Chunk;
|
import org.bukkit.Chunk;
|
||||||
import org.bukkit.ChunkSnapshot;
|
import org.bukkit.ChunkSnapshot;
|
||||||
|
import org.bukkit.Difficulty;
|
||||||
import org.bukkit.Effect;
|
import org.bukkit.Effect;
|
||||||
import org.bukkit.Location;
|
import org.bukkit.Location;
|
||||||
import org.bukkit.TreeType;
|
import org.bukkit.TreeType;
|
||||||
@ -437,4 +438,21 @@ public class FakeWorld implements World
|
|||||||
throw new UnsupportedOperationException("Not supported yet.");
|
throw new UnsupportedOperationException("Not supported yet.");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Difficulty getDifficulty()
|
||||||
|
{
|
||||||
|
throw new UnsupportedOperationException("Not supported yet.");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setDifficulty(Difficulty difficulty)
|
||||||
|
{
|
||||||
|
throw new UnsupportedOperationException("Not supported yet.");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getSeaLevel()
|
||||||
|
{
|
||||||
|
throw new UnsupportedOperationException("Not supported yet.");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -73,7 +73,11 @@ public interface ISettings extends IConf
|
|||||||
|
|
||||||
boolean getRespawnAtHome();
|
boolean getRespawnAtHome();
|
||||||
|
|
||||||
int getMultipleHomes();
|
List getMultipleHomes();
|
||||||
|
|
||||||
|
int getHomeLimit(String set);
|
||||||
|
|
||||||
|
int getHomeLimit(User user);
|
||||||
|
|
||||||
boolean getSortListByGroups();
|
boolean getSortListByGroups();
|
||||||
|
|
||||||
|
@ -26,11 +26,10 @@ public enum Mob
|
|||||||
SPIDER("Spider", Enemies.ENEMY, CreatureType.SPIDER),
|
SPIDER("Spider", Enemies.ENEMY, CreatureType.SPIDER),
|
||||||
SQUID("Squid", Enemies.FRIENDLY, CreatureType.SQUID),
|
SQUID("Squid", Enemies.FRIENDLY, CreatureType.SQUID),
|
||||||
ZOMBIE("Zombie", Enemies.ENEMY, CreatureType.ZOMBIE),
|
ZOMBIE("Zombie", Enemies.ENEMY, CreatureType.ZOMBIE),
|
||||||
MONSTER("Monster", Enemies.ENEMY, CreatureType.MONSTER),
|
|
||||||
WOLF("Wolf", Enemies.NEUTRAL, CreatureType.WOLF),
|
WOLF("Wolf", Enemies.NEUTRAL, CreatureType.WOLF),
|
||||||
CAVESPIDER("CaveSpider", Enemies.ENEMY, CreatureType.CAVE_SPIDER),
|
CAVESPIDER("CaveSpider", Enemies.ENEMY, CreatureType.CAVE_SPIDER),
|
||||||
ENDERMAN("Enderman", Enemies.ENEMY, CreatureType.ENDERMAN),
|
ENDERMAN("Enderman", Enemies.ENEMY, "", CreatureType.ENDERMAN),
|
||||||
SILVERFISH("Silverfish", Enemies.ENEMY, CreatureType.SILVERFISH);
|
SILVERFISH("Silverfish", Enemies.ENEMY, "", CreatureType.SILVERFISH);
|
||||||
|
|
||||||
public static final Logger logger = Logger.getLogger("Minecraft");
|
public static final Logger logger = Logger.getLogger("Minecraft");
|
||||||
|
|
||||||
|
@ -695,7 +695,7 @@ public class OfflinePlayer implements Player
|
|||||||
{
|
{
|
||||||
throw new UnsupportedOperationException("Not supported yet.");
|
throw new UnsupportedOperationException("Not supported yet.");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Location getBedSpawnLocation()
|
public Location getBedSpawnLocation()
|
||||||
{
|
{
|
||||||
@ -713,5 +713,16 @@ public class OfflinePlayer implements Player
|
|||||||
{
|
{
|
||||||
throw new UnsupportedOperationException("Not supported yet.");
|
throw new UnsupportedOperationException("Not supported yet.");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setPlayerListName(String name)
|
||||||
|
{
|
||||||
|
throw new UnsupportedOperationException("Not supported yet.");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getPlayerListName()
|
||||||
|
{
|
||||||
|
throw new UnsupportedOperationException("Not supported yet.");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -744,4 +744,16 @@ public class PlayerWrapper implements Player
|
|||||||
base.setSprinting(bln);
|
base.setSprinting(bln);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setPlayerListName(String name)
|
||||||
|
{
|
||||||
|
base.setPlayerListName(name);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getPlayerListName()
|
||||||
|
{
|
||||||
|
return base.getPlayerListName();
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -30,12 +30,6 @@ public class Settings implements ISettings
|
|||||||
{
|
{
|
||||||
return config.getBoolean("respawn-at-home", false);
|
return config.getBoolean("respawn-at-home", false);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public int getMultipleHomes()
|
|
||||||
{
|
|
||||||
return config.getInt("multiple-homes", 5);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean getBedSetsHome()
|
public boolean getBedSetsHome()
|
||||||
@ -43,6 +37,40 @@ public class Settings implements ISettings
|
|||||||
return config.getBoolean("bed-sethome", false);
|
return config.getBoolean("bed-sethome", false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<String> getMultipleHomes()
|
||||||
|
{
|
||||||
|
return config.getKeys("sethome-multiple");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getHomeLimit(final User user)
|
||||||
|
{
|
||||||
|
final List<String> homeList = getMultipleHomes();
|
||||||
|
if (homeList == null)
|
||||||
|
{
|
||||||
|
//TODO: Replace this code to remove backwards compat, after settings are automatically updated
|
||||||
|
// return getHomeLimit("default");
|
||||||
|
return config.getInt("multiple-homes", 5);
|
||||||
|
}
|
||||||
|
int limit = getHomeLimit("default");
|
||||||
|
for (String set : homeList)
|
||||||
|
{
|
||||||
|
logger.log(Level.INFO, "Found home set: " + set);
|
||||||
|
if (user.hasPermission("essentials.sethome.multiple." + set) && limit < getHomeLimit(set))
|
||||||
|
{
|
||||||
|
limit = getHomeLimit(set);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return limit;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getHomeLimit(final String set)
|
||||||
|
{
|
||||||
|
return config.getInt("sethome-multiple." + set, config.getInt("sethome-multiple.default", 3));
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int getChatRadius()
|
public int getChatRadius()
|
||||||
{
|
{
|
||||||
@ -60,7 +88,7 @@ public class Settings implements ISettings
|
|||||||
{
|
{
|
||||||
return config.getInt("default-stack-size", 64);
|
return config.getInt("default-stack-size", 64);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int getStartingBalance()
|
public int getStartingBalance()
|
||||||
{
|
{
|
||||||
@ -84,7 +112,10 @@ public class Settings implements ISettings
|
|||||||
{
|
{
|
||||||
for (String c : config.getStringList("disabled-commands", new ArrayList<String>(0)))
|
for (String c : config.getStringList("disabled-commands", new ArrayList<String>(0)))
|
||||||
{
|
{
|
||||||
if (!c.equalsIgnoreCase(label)) continue;
|
if (!c.equalsIgnoreCase(label))
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
return config.getBoolean("disable-" + label.toLowerCase(), false);
|
return config.getBoolean("disable-" + label.toLowerCase(), false);
|
||||||
@ -101,18 +132,24 @@ public class Settings implements ISettings
|
|||||||
{
|
{
|
||||||
for (String c : config.getStringList("restricted-commands", new ArrayList<String>(0)))
|
for (String c : config.getStringList("restricted-commands", new ArrayList<String>(0)))
|
||||||
{
|
{
|
||||||
if (!c.equalsIgnoreCase(label)) continue;
|
if (!c.equalsIgnoreCase(label))
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
return config.getBoolean("restrict-" + label.toLowerCase(), false);
|
return config.getBoolean("restrict-" + label.toLowerCase(), false);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isPlayerCommand(String label)
|
public boolean isPlayerCommand(String label)
|
||||||
{
|
{
|
||||||
for (String c : config.getStringList("player-commands", new ArrayList<String>(0)))
|
for (String c : config.getStringList("player-commands", new ArrayList<String>(0)))
|
||||||
{
|
{
|
||||||
if (!c.equalsIgnoreCase(label)) continue;
|
if (!c.equalsIgnoreCase(label))
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
@ -126,7 +163,9 @@ public class Settings implements ISettings
|
|||||||
for (String c : config.getStringList("overridden-commands", defaultList))
|
for (String c : config.getStringList("overridden-commands", defaultList))
|
||||||
{
|
{
|
||||||
if (!c.equalsIgnoreCase(name))
|
if (!c.equalsIgnoreCase(name))
|
||||||
|
{
|
||||||
continue;
|
continue;
|
||||||
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
return config.getBoolean("override-" + name.toLowerCase(), false);
|
return config.getBoolean("override-" + name.toLowerCase(), false);
|
||||||
@ -143,7 +182,9 @@ public class Settings implements ISettings
|
|||||||
{
|
{
|
||||||
double cost = config.getDouble("command-costs." + label, 0.0);
|
double cost = config.getDouble("command-costs." + label, 0.0);
|
||||||
if (cost == 0.0)
|
if (cost == 0.0)
|
||||||
|
{
|
||||||
cost = config.getDouble("cost-" + label, 0.0);
|
cost = config.getDouble("cost-" + label, 0.0);
|
||||||
|
}
|
||||||
return cost;
|
return cost;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -171,13 +212,14 @@ public class Settings implements ISettings
|
|||||||
Map<String, Object> kits = (Map<String, Object>)config.getProperty("kits");
|
Map<String, Object> kits = (Map<String, Object>)config.getProperty("kits");
|
||||||
for (Map.Entry<String, Object> entry : kits.entrySet())
|
for (Map.Entry<String, Object> entry : kits.entrySet())
|
||||||
{
|
{
|
||||||
if (entry.getKey().equalsIgnoreCase(name.replace('.', '_').replace('/', '_'))) {
|
if (entry.getKey().equalsIgnoreCase(name.replace('.', '_').replace('/', '_')))
|
||||||
|
{
|
||||||
return entry.getValue();
|
return entry.getValue();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Map<String, Object> getKits()
|
public Map<String, Object> getKits()
|
||||||
{
|
{
|
||||||
@ -190,9 +232,13 @@ public class Settings implements ISettings
|
|||||||
String colorName = config.getString("ops-name-color", null);
|
String colorName = config.getString("ops-name-color", null);
|
||||||
|
|
||||||
if (colorName == null)
|
if (colorName == null)
|
||||||
|
{
|
||||||
return ChatColor.RED;
|
return ChatColor.RED;
|
||||||
if("none".equalsIgnoreCase(colorName) || colorName.isEmpty())
|
}
|
||||||
|
if ("none".equalsIgnoreCase(colorName) || colorName.isEmpty())
|
||||||
|
{
|
||||||
throw new Exception();
|
throw new Exception();
|
||||||
|
}
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
@ -228,18 +274,18 @@ public class Settings implements ISettings
|
|||||||
{
|
{
|
||||||
return config.getInt("spawnmob-limit", 10);
|
return config.getInt("spawnmob-limit", 10);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean showNonEssCommandsInHelp()
|
public boolean showNonEssCommandsInHelp()
|
||||||
{
|
{
|
||||||
return config.getBoolean("non-ess-in-help", true);
|
return config.getBoolean("non-ess-in-help", true);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean hidePermissionlessHelp()
|
public boolean hidePermissionlessHelp()
|
||||||
{
|
{
|
||||||
return config.getBoolean("hide-permissionless-help", true);
|
return config.getBoolean("hide-permissionless-help", true);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int getProtectCreeperMaxHeight()
|
public int getProtectCreeperMaxHeight()
|
||||||
@ -301,12 +347,13 @@ public class Settings implements ISettings
|
|||||||
{
|
{
|
||||||
return config.getString("newbies.spawnpoint", "default");
|
return config.getString("newbies.spawnpoint", "default");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean getPerWarpPermission()
|
public boolean getPerWarpPermission()
|
||||||
{
|
{
|
||||||
return config.getBoolean("per-warp-permission", false);
|
return config.getBoolean("per-warp-permission", false);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean getSortListByGroups()
|
public boolean getSortListByGroups()
|
||||||
{
|
{
|
||||||
@ -314,7 +361,8 @@ public class Settings implements ISettings
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void reloadConfig() {
|
public void reloadConfig()
|
||||||
|
{
|
||||||
config.load();
|
config.load();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -322,16 +370,21 @@ public class Settings implements ISettings
|
|||||||
public List<Integer> itemSpawnBlacklist()
|
public List<Integer> itemSpawnBlacklist()
|
||||||
{
|
{
|
||||||
final List<Integer> epItemSpwn = new ArrayList<Integer>();
|
final List<Integer> epItemSpwn = new ArrayList<Integer>();
|
||||||
for (String itemName : config.getString("item-spawn-blacklist", "").split(",")) {
|
for (String itemName : config.getString("item-spawn-blacklist", "").split(","))
|
||||||
|
{
|
||||||
itemName = itemName.trim();
|
itemName = itemName.trim();
|
||||||
if (itemName.isEmpty()) {
|
if (itemName.isEmpty())
|
||||||
|
{
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
ItemStack is;
|
ItemStack is;
|
||||||
try {
|
try
|
||||||
|
{
|
||||||
is = ess.getItemDb().get(itemName);
|
is = ess.getItemDb().get(itemName);
|
||||||
epItemSpwn.add(is.getTypeId());
|
epItemSpwn.add(is.getTypeId());
|
||||||
} catch (Exception ex) {
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
logger.log(Level.SEVERE, Util.format("unknownItemInList", itemName, "item-spawn-blacklist"));
|
logger.log(Level.SEVERE, Util.format("unknownItemInList", itemName, "item-spawn-blacklist"));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -355,16 +408,17 @@ public class Settings implements ISettings
|
|||||||
{
|
{
|
||||||
return config.getBoolean("nether.use-1to1-ratio", false);
|
return config.getBoolean("nether.use-1to1-ratio", false);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public double getNetherRatio()
|
public double getNetherRatio()
|
||||||
{
|
{
|
||||||
if (config.getBoolean("nether.use-1to1-ratio", false)) {
|
if (config.getBoolean("nether.use-1to1-ratio", false))
|
||||||
|
{
|
||||||
return 1.0;
|
return 1.0;
|
||||||
}
|
}
|
||||||
return config.getDouble("nether.ratio", 8.0);
|
return config.getDouble("nether.ratio", 8.0);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isDebug()
|
public boolean isDebug()
|
||||||
{
|
{
|
||||||
@ -374,9 +428,9 @@ public class Settings implements ISettings
|
|||||||
@Override
|
@Override
|
||||||
public boolean warnOnSmite()
|
public boolean warnOnSmite()
|
||||||
{
|
{
|
||||||
return config.getBoolean("warn-on-smite" ,true);
|
return config.getBoolean("warn-on-smite", true);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean permissionBasedItemSpawn()
|
public boolean permissionBasedItemSpawn()
|
||||||
{
|
{
|
||||||
@ -410,23 +464,28 @@ public class Settings implements ISettings
|
|||||||
@Override
|
@Override
|
||||||
public boolean getProtectPreventSpawn(final String creatureName)
|
public boolean getProtectPreventSpawn(final String creatureName)
|
||||||
{
|
{
|
||||||
return config.getBoolean("protect.prevent.spawn."+creatureName, false);
|
return config.getBoolean("protect.prevent.spawn." + creatureName, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<Integer> getProtectList(final String configName)
|
public List<Integer> getProtectList(final String configName)
|
||||||
{
|
{
|
||||||
final List<Integer> list = new ArrayList<Integer>();
|
final List<Integer> list = new ArrayList<Integer>();
|
||||||
for (String itemName : config.getString(configName, "").split(",")) {
|
for (String itemName : config.getString(configName, "").split(","))
|
||||||
|
{
|
||||||
itemName = itemName.trim();
|
itemName = itemName.trim();
|
||||||
if (itemName.isEmpty()) {
|
if (itemName.isEmpty())
|
||||||
|
{
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
ItemStack itemStack;
|
ItemStack itemStack;
|
||||||
try {
|
try
|
||||||
|
{
|
||||||
itemStack = ess.getItemDb().get(itemName);
|
itemStack = ess.getItemDb().get(itemName);
|
||||||
list.add(itemStack.getTypeId());
|
list.add(itemStack.getTypeId());
|
||||||
} catch (Exception ex) {
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
logger.log(Level.SEVERE, Util.format("unknownItemInList", itemName, configName));
|
logger.log(Level.SEVERE, Util.format("unknownItemInList", itemName, configName));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -444,12 +503,13 @@ public class Settings implements ISettings
|
|||||||
{
|
{
|
||||||
return config.getBoolean(configName, def);
|
return config.getBoolean(configName, def);
|
||||||
}
|
}
|
||||||
|
|
||||||
private final static double MAXMONEY = 10000000000000.0;
|
private final static double MAXMONEY = 10000000000000.0;
|
||||||
|
|
||||||
public double getMaxMoney()
|
public double getMaxMoney()
|
||||||
{
|
{
|
||||||
double max = config.getDouble("max-money", MAXMONEY);
|
double max = config.getDouble("max-money", MAXMONEY);
|
||||||
if (Math.abs(max) > MAXMONEY) {
|
if (Math.abs(max) > MAXMONEY)
|
||||||
|
{
|
||||||
max = max < 0 ? -MAXMONEY : MAXMONEY;
|
max = max < 0 ? -MAXMONEY : MAXMONEY;
|
||||||
}
|
}
|
||||||
return max;
|
return max;
|
||||||
@ -459,7 +519,7 @@ public class Settings implements ISettings
|
|||||||
{
|
{
|
||||||
return config.getBoolean("economy-log-enabled", false);
|
return config.getBoolean("economy-log-enabled", false);
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean removeGodOnDisconnect()
|
public boolean removeGodOnDisconnect()
|
||||||
{
|
{
|
||||||
return config.getBoolean("remove-god-on-disconnect", false);
|
return config.getBoolean("remove-god-on-disconnect", false);
|
||||||
|
@ -10,6 +10,7 @@ import org.bukkit.entity.Player;
|
|||||||
/**
|
/**
|
||||||
* Original authors: toi & Raphfrk
|
* Original authors: toi & Raphfrk
|
||||||
*/
|
*/
|
||||||
|
@Deprecated
|
||||||
public class TargetBlock
|
public class TargetBlock
|
||||||
{
|
{
|
||||||
private transient final Location location;
|
private transient final Location location;
|
||||||
|
@ -20,14 +20,12 @@ public class User extends UserData implements Comparable<User>, IReplyTo, IUser
|
|||||||
private transient long lastOnlineActivity;
|
private transient long lastOnlineActivity;
|
||||||
private transient long lastActivity = System.currentTimeMillis();
|
private transient long lastActivity = System.currentTimeMillis();
|
||||||
private boolean hidden = false;
|
private boolean hidden = false;
|
||||||
private transient boolean godStateBeforeAfk;
|
|
||||||
private transient Location afkPosition;
|
private transient Location afkPosition;
|
||||||
|
|
||||||
User(final Player base, final IEssentials ess)
|
User(final Player base, final IEssentials ess)
|
||||||
{
|
{
|
||||||
super(base, ess);
|
super(base, ess);
|
||||||
teleport = new Teleport(this, ess);
|
teleport = new Teleport(this, ess);
|
||||||
godStateBeforeAfk = isGodModeEnabled();
|
|
||||||
afkPosition = getLocation();
|
afkPosition = getLocation();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -284,6 +282,12 @@ public class User extends UserData implements Comparable<User>, IReplyTo, IUser
|
|||||||
|
|
||||||
return nickname.toString();
|
return nickname.toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void setDisplayNick(String name)
|
||||||
|
{
|
||||||
|
setDisplayName(name);
|
||||||
|
setPlayerListName(name);
|
||||||
|
}
|
||||||
|
|
||||||
public Teleport getTeleport()
|
public Teleport getTeleport()
|
||||||
{
|
{
|
||||||
@ -348,15 +352,6 @@ public class User extends UserData implements Comparable<User>, IReplyTo, IUser
|
|||||||
public void setAfk(final boolean set)
|
public void setAfk(final boolean set)
|
||||||
{
|
{
|
||||||
this.setSleepingIgnored(this.isAuthorized("essentials.sleepingignored") ? true : set);
|
this.setSleepingIgnored(this.isAuthorized("essentials.sleepingignored") ? true : set);
|
||||||
if (set && !isAfk() && ess.getSettings().getFreezeAfkPlayers())
|
|
||||||
{
|
|
||||||
godStateBeforeAfk = isGodModeEnabled();
|
|
||||||
setGodModeEnabled(true);
|
|
||||||
}
|
|
||||||
if (!set && isAfk() && ess.getSettings().getFreezeAfkPlayers())
|
|
||||||
{
|
|
||||||
setGodModeEnabled(godStateBeforeAfk);
|
|
||||||
}
|
|
||||||
if (set && !isAfk()) {
|
if (set && !isAfk()) {
|
||||||
afkPosition = getLocation();
|
afkPosition = getLocation();
|
||||||
}
|
}
|
||||||
@ -460,7 +455,7 @@ public class User extends UserData implements Comparable<User>, IReplyTo, IUser
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
final long autoafk = ess.getSettings().getAutoAfk();
|
final long autoafk = ess.getSettings().getAutoAfk();
|
||||||
if (!isAfk() && autoafk > 0 && lastActivity + autoafk * 1000 < System.currentTimeMillis())
|
if (!isAfk() && autoafk > 0 && lastActivity + autoafk * 1000 < System.currentTimeMillis() && isAuthorized("essentials.afk"))
|
||||||
{
|
{
|
||||||
setAfk(true);
|
setAfk(true);
|
||||||
if (!isHidden()) {
|
if (!isHidden()) {
|
||||||
@ -481,5 +476,11 @@ public class User extends UserData implements Comparable<User>, IReplyTo, IUser
|
|||||||
setFoodLevel(20);
|
setFoodLevel(20);
|
||||||
}
|
}
|
||||||
return super.toggleGodModeEnabled();
|
return super.toggleGodModeEnabled();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isGodModeEnabled()
|
||||||
|
{
|
||||||
|
return super.isGodModeEnabled() || (isAfk() && ess.getSettings().getFreezeAfkPlayers());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -58,6 +58,7 @@ public abstract class UserData extends PlayerExtension implements IConf
|
|||||||
isSocialSpyEnabled = _isSocialSpyEnabled();
|
isSocialSpyEnabled = _isSocialSpyEnabled();
|
||||||
isNPC = _isNPC();
|
isNPC = _isNPC();
|
||||||
arePowerToolsEnabled = _arePowerToolsEnabled();
|
arePowerToolsEnabled = _arePowerToolsEnabled();
|
||||||
|
kitTimestamps = _getKitTimestamps();
|
||||||
}
|
}
|
||||||
private double money;
|
private double money;
|
||||||
|
|
||||||
@ -163,7 +164,12 @@ public abstract class UserData extends PlayerExtension implements IConf
|
|||||||
|
|
||||||
public void delHome(String name) throws Exception
|
public void delHome(String name) throws Exception
|
||||||
{
|
{
|
||||||
if (getHome(name) != null)
|
String search = name;
|
||||||
|
if (!homes.containsKey(search))
|
||||||
|
{
|
||||||
|
search = Util.sanitizeFileName(name);
|
||||||
|
}
|
||||||
|
if (homes.containsKey(search))
|
||||||
{
|
{
|
||||||
homes.remove(name);
|
homes.remove(name);
|
||||||
config.removeProperty("homes." + name);
|
config.removeProperty("homes." + name);
|
||||||
@ -243,12 +249,13 @@ public abstract class UserData extends PlayerExtension implements IConf
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void clearAllPowertools() {
|
public void clearAllPowertools()
|
||||||
|
{
|
||||||
powertools.clear();
|
powertools.clear();
|
||||||
config.setProperty("powertools", powertools);
|
config.setProperty("powertools", powertools);
|
||||||
config.save();
|
config.save();
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<String> getPowertool(ItemStack stack)
|
public List<String> getPowertool(ItemStack stack)
|
||||||
{
|
{
|
||||||
return (List<String>)powertools.get(stack.getTypeId());
|
return (List<String>)powertools.get(stack.getTypeId());
|
||||||
@ -267,12 +274,11 @@ public abstract class UserData extends PlayerExtension implements IConf
|
|||||||
config.setProperty("powertools", powertools);
|
config.setProperty("powertools", powertools);
|
||||||
config.save();
|
config.save();
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean hasPowerTools()
|
public boolean hasPowerTools()
|
||||||
{
|
{
|
||||||
return powertools.size() > 0;
|
return powertools.size() > 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
private Location lastLocation;
|
private Location lastLocation;
|
||||||
|
|
||||||
private Location _getLastLocation()
|
private Location _getLastLocation()
|
||||||
@ -294,6 +300,10 @@ public abstract class UserData extends PlayerExtension implements IConf
|
|||||||
|
|
||||||
public void setLastLocation(Location loc)
|
public void setLastLocation(Location loc)
|
||||||
{
|
{
|
||||||
|
if (loc == null || loc.getWorld() == null)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
lastLocation = loc;
|
lastLocation = loc;
|
||||||
config.setProperty("lastlocation", loc);
|
config.setProperty("lastlocation", loc);
|
||||||
config.save();
|
config.save();
|
||||||
@ -781,31 +791,57 @@ public abstract class UserData extends PlayerExtension implements IConf
|
|||||||
config.setProperty("npc", set);
|
config.setProperty("npc", set);
|
||||||
config.save();
|
config.save();
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean arePowerToolsEnabled;
|
private boolean arePowerToolsEnabled;
|
||||||
|
|
||||||
public boolean arePowerToolsEnabled()
|
public boolean arePowerToolsEnabled()
|
||||||
{
|
{
|
||||||
return arePowerToolsEnabled;
|
return arePowerToolsEnabled;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setPowerToolsEnabled(boolean set)
|
public void setPowerToolsEnabled(boolean set)
|
||||||
{
|
{
|
||||||
arePowerToolsEnabled = set;
|
arePowerToolsEnabled = set;
|
||||||
config.setProperty("powertoolsenabled", set);
|
config.setProperty("powertoolsenabled", set);
|
||||||
config.save();
|
config.save();
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean togglePowerToolsEnabled()
|
public boolean togglePowerToolsEnabled()
|
||||||
{
|
{
|
||||||
boolean ret = !arePowerToolsEnabled();
|
boolean ret = !arePowerToolsEnabled();
|
||||||
setPowerToolsEnabled(ret);
|
setPowerToolsEnabled(ret);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean _arePowerToolsEnabled()
|
private boolean _arePowerToolsEnabled()
|
||||||
{
|
{
|
||||||
return config.getBoolean("powertoolsenabled", true);
|
return config.getBoolean("powertoolsenabled", true);
|
||||||
}
|
}
|
||||||
|
private Map<String, Object> kitTimestamps;
|
||||||
|
|
||||||
|
private Map<String, Object> _getKitTimestamps()
|
||||||
|
{
|
||||||
|
final Object map = config.getProperty("timestamps.kits");
|
||||||
|
|
||||||
|
if (map instanceof Map)
|
||||||
|
{
|
||||||
|
return (Map<String, Object>)map;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return new HashMap<String, Object>();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public Long getKitTimestamp(final String name)
|
||||||
|
{
|
||||||
|
final Number num = (Number)kitTimestamps.get(name.toLowerCase());
|
||||||
|
return num == null ? null : num.longValue();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setKitTimestamp(final String name, final long time)
|
||||||
|
{
|
||||||
|
kitTimestamps.put(name.toLowerCase(), time);
|
||||||
|
config.setProperty("timestamps.kits", kitTimestamps);
|
||||||
|
config.save();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -227,30 +227,36 @@ public class Util
|
|||||||
AIR_MATERIALS.add(Material.SAPLING.getId());
|
AIR_MATERIALS.add(Material.SAPLING.getId());
|
||||||
AIR_MATERIALS.add(Material.POWERED_RAIL.getId());
|
AIR_MATERIALS.add(Material.POWERED_RAIL.getId());
|
||||||
AIR_MATERIALS.add(Material.DETECTOR_RAIL.getId());
|
AIR_MATERIALS.add(Material.DETECTOR_RAIL.getId());
|
||||||
|
AIR_MATERIALS.add(Material.LONG_GRASS.getId());
|
||||||
AIR_MATERIALS.add(Material.DEAD_BUSH.getId());
|
AIR_MATERIALS.add(Material.DEAD_BUSH.getId());
|
||||||
AIR_MATERIALS.add(Material.RAILS.getId());
|
|
||||||
AIR_MATERIALS.add(Material.YELLOW_FLOWER.getId());
|
AIR_MATERIALS.add(Material.YELLOW_FLOWER.getId());
|
||||||
AIR_MATERIALS.add(Material.RED_ROSE.getId());
|
AIR_MATERIALS.add(Material.RED_ROSE.getId());
|
||||||
AIR_MATERIALS.add(Material.RED_MUSHROOM.getId());
|
|
||||||
AIR_MATERIALS.add(Material.BROWN_MUSHROOM.getId());
|
AIR_MATERIALS.add(Material.BROWN_MUSHROOM.getId());
|
||||||
|
AIR_MATERIALS.add(Material.RED_MUSHROOM.getId());
|
||||||
|
AIR_MATERIALS.add(Material.TORCH.getId());
|
||||||
|
AIR_MATERIALS.add(Material.REDSTONE_WIRE.getId());
|
||||||
AIR_MATERIALS.add(Material.SEEDS.getId());
|
AIR_MATERIALS.add(Material.SEEDS.getId());
|
||||||
AIR_MATERIALS.add(Material.SIGN_POST.getId());
|
AIR_MATERIALS.add(Material.SIGN_POST.getId());
|
||||||
AIR_MATERIALS.add(Material.WALL_SIGN.getId());
|
AIR_MATERIALS.add(Material.WOODEN_DOOR.getId());
|
||||||
AIR_MATERIALS.add(Material.LADDER.getId());
|
AIR_MATERIALS.add(Material.LADDER.getId());
|
||||||
AIR_MATERIALS.add(Material.SUGAR_CANE_BLOCK.getId());
|
AIR_MATERIALS.add(Material.RAILS.getId());
|
||||||
AIR_MATERIALS.add(Material.REDSTONE_WIRE.getId());
|
AIR_MATERIALS.add(Material.WALL_SIGN.getId());
|
||||||
|
AIR_MATERIALS.add(Material.LEVER.getId());
|
||||||
|
AIR_MATERIALS.add(Material.STONE_PLATE.getId());
|
||||||
|
AIR_MATERIALS.add(Material.IRON_DOOR_BLOCK.getId());
|
||||||
|
AIR_MATERIALS.add(Material.WOOD_PLATE.getId());
|
||||||
AIR_MATERIALS.add(Material.REDSTONE_TORCH_OFF.getId());
|
AIR_MATERIALS.add(Material.REDSTONE_TORCH_OFF.getId());
|
||||||
AIR_MATERIALS.add(Material.REDSTONE_TORCH_ON.getId());
|
AIR_MATERIALS.add(Material.REDSTONE_TORCH_ON.getId());
|
||||||
AIR_MATERIALS.add(Material.TORCH.getId());
|
|
||||||
AIR_MATERIALS.add(Material.SOIL.getId());
|
|
||||||
AIR_MATERIALS.add(Material.DIODE_BLOCK_OFF.getId());
|
|
||||||
AIR_MATERIALS.add(Material.DIODE_BLOCK_ON.getId());
|
|
||||||
AIR_MATERIALS.add(Material.TRAP_DOOR.getId());
|
|
||||||
AIR_MATERIALS.add(Material.STONE_BUTTON.getId());
|
AIR_MATERIALS.add(Material.STONE_BUTTON.getId());
|
||||||
AIR_MATERIALS.add(Material.STONE_PLATE.getId());
|
AIR_MATERIALS.add(Material.SUGAR_CANE_BLOCK.getId());
|
||||||
AIR_MATERIALS.add(Material.WOOD_PLATE.getId());
|
AIR_MATERIALS.add(Material.DIODE_BLOCK_OFF.getId());
|
||||||
AIR_MATERIALS.add(Material.IRON_DOOR_BLOCK.getId());
|
AIR_MATERIALS.add(Material.DIODE_BLOCK_ON.getId());
|
||||||
AIR_MATERIALS.add(Material.WOODEN_DOOR.getId());
|
AIR_MATERIALS.add(Material.TRAP_DOOR.getId());
|
||||||
|
AIR_MATERIALS.add(Material.PUMPKIN_STEM.getId());
|
||||||
|
AIR_MATERIALS.add(Material.MELON_STEM.getId());
|
||||||
|
AIR_MATERIALS.add(Material.VINE.getId());
|
||||||
|
//TODO: Add 1.9 materials
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static Location getSafeDestination(final Location loc) throws Exception
|
public static Location getSafeDestination(final Location loc) throws Exception
|
||||||
@ -260,9 +266,9 @@ public class Util
|
|||||||
throw new Exception(Util.i18n("destinationNotSet"));
|
throw new Exception(Util.i18n("destinationNotSet"));
|
||||||
}
|
}
|
||||||
final World world = loc.getWorld();
|
final World world = loc.getWorld();
|
||||||
int x = (int)Math.round(loc.getX());
|
int x = loc.getBlockX();
|
||||||
int y = (int)Math.round(loc.getY());
|
int y = (int)Math.round(loc.getY());
|
||||||
int z = (int)Math.round(loc.getZ());
|
int z = loc.getBlockZ();
|
||||||
|
|
||||||
while (isBlockAboveAir(world, x, y, z))
|
while (isBlockAboveAir(world, x, y, z))
|
||||||
{
|
{
|
||||||
|
@ -31,7 +31,7 @@ public class Commanddelhome extends EssentialsCommand
|
|||||||
}
|
}
|
||||||
else if (args.length > 1 && (user == null || user.isAuthorized("essentials.delhome.others")))
|
else if (args.length > 1 && (user == null || user.isAuthorized("essentials.delhome.others")))
|
||||||
{
|
{
|
||||||
user = getPlayer(server, args, 0);
|
user = getPlayer(server, args, 0, true);
|
||||||
name = args[1];
|
name = args[1];
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -34,6 +34,7 @@ public class Commandheal extends EssentialsCommand
|
|||||||
user.healCooldown();
|
user.healCooldown();
|
||||||
}
|
}
|
||||||
user.setHealth(20);
|
user.setHealth(20);
|
||||||
|
user.setFoodLevel(20);
|
||||||
user.sendMessage(Util.i18n("heal"));
|
user.sendMessage(Util.i18n("heal"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -15,22 +15,20 @@ import org.bukkit.inventory.ItemStack;
|
|||||||
|
|
||||||
public class Commandkit extends EssentialsCommand
|
public class Commandkit extends EssentialsCommand
|
||||||
{
|
{
|
||||||
static private final Map<User, Map<String, Long>> kitPlayers = new HashMap<User, Map<String, Long>>();
|
|
||||||
|
|
||||||
public Commandkit()
|
public Commandkit()
|
||||||
{
|
{
|
||||||
super("kit");
|
super("kit");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void run(Server server, User user, String commandLabel, String[] args) throws Exception
|
public void run(final Server server, final User user, final String commandLabel, final String[] args) throws Exception
|
||||||
{
|
{
|
||||||
if (args.length < 1)
|
if (args.length < 1)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
Map<String, Object> kits = ess.getSettings().getKits();
|
final Map<String, Object> kits = ess.getSettings().getKits();
|
||||||
StringBuilder list = new StringBuilder();
|
final StringBuilder list = new StringBuilder();
|
||||||
for (String k : kits.keySet())
|
for (String k : kits.keySet())
|
||||||
{
|
{
|
||||||
if (user.isAuthorized("essentials.kit." + k.toLowerCase()))
|
if (user.isAuthorized("essentials.kit." + k.toLowerCase()))
|
||||||
@ -56,8 +54,8 @@ public class Commandkit extends EssentialsCommand
|
|||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
String kitName = args[0].toLowerCase();
|
final String kitName = args[0].toLowerCase();
|
||||||
Object kit = ess.getSettings().getKit(kitName);
|
final Object kit = ess.getSettings().getKit(kitName);
|
||||||
List<String> items;
|
List<String> items;
|
||||||
|
|
||||||
if (!user.isAuthorized("essentials.kit." + kitName))
|
if (!user.isAuthorized("essentials.kit." + kitName))
|
||||||
@ -70,39 +68,26 @@ public class Commandkit extends EssentialsCommand
|
|||||||
{
|
{
|
||||||
|
|
||||||
//System.out.println("Kit is timed");
|
//System.out.println("Kit is timed");
|
||||||
Map<String, Object> els = (Map<String, Object>)kit;
|
final Map<String, Object> els = (Map<String, Object>)kit;
|
||||||
items = (List<String>)els.get("items");
|
items = (List<String>)els.get("items");
|
||||||
double delay = els.containsKey("delay") ? ((Number)els.get("delay")).doubleValue() : 0L;
|
final double delay = els.containsKey("delay") ? ((Number)els.get("delay")).doubleValue() : 0L;
|
||||||
Calendar c = new GregorianCalendar();
|
final Calendar c = new GregorianCalendar();
|
||||||
c.add(Calendar.SECOND, (int)delay);
|
c.add(Calendar.SECOND, -(int)delay);
|
||||||
c.add(Calendar.MILLISECOND, (int)((delay*1000.0)%1000.0));
|
c.add(Calendar.MILLISECOND, -(int)((delay*1000.0)%1000.0));
|
||||||
|
|
||||||
long time = c.getTimeInMillis();
|
final long mintime = c.getTimeInMillis();
|
||||||
Calendar now = new GregorianCalendar();
|
|
||||||
|
final Long lastTime = user.getKitTimestamp(kitName);
|
||||||
Map<String, Long> kitTimes;
|
if (lastTime == null || lastTime < mintime) {
|
||||||
if (!kitPlayers.containsKey(user))
|
final Calendar now = new GregorianCalendar();
|
||||||
{
|
user.setKitTimestamp(kitName, now.getTimeInMillis());
|
||||||
kitTimes = new HashMap<String, Long>();
|
} else {
|
||||||
kitTimes.put(kitName, time);
|
final Calendar future = new GregorianCalendar();
|
||||||
kitPlayers.put(user, kitTimes);
|
future.setTimeInMillis(lastTime);
|
||||||
}
|
future.add(Calendar.SECOND, (int)delay);
|
||||||
else
|
future.add(Calendar.MILLISECOND, (int)((delay*1000.0)%1000.0));
|
||||||
{
|
user.sendMessage(Util.format("kitTimed", Util.formatDateDiff(future.getTimeInMillis())));
|
||||||
kitTimes = kitPlayers.get(user);
|
return;
|
||||||
if (!kitTimes.containsKey(kitName))
|
|
||||||
{
|
|
||||||
kitTimes.put(kitName, time);
|
|
||||||
}
|
|
||||||
else if (kitTimes.get(kitName) < now.getTimeInMillis())
|
|
||||||
{
|
|
||||||
kitTimes.put(kitName, time);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
user.sendMessage(Util.format("kitTimed", Util.formatDateDiff(kitTimes.get(kitName))));
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
@ -110,7 +95,7 @@ public class Commandkit extends EssentialsCommand
|
|||||||
items = (List<String>)kit;
|
items = (List<String>)kit;
|
||||||
}
|
}
|
||||||
|
|
||||||
Trade charge = new Trade("kit-" + kitName, ess);
|
final Trade charge = new Trade("kit-" + kitName, ess);
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
charge.isAffordableFor(user);
|
charge.isAffordableFor(user);
|
||||||
@ -124,11 +109,11 @@ public class Commandkit extends EssentialsCommand
|
|||||||
boolean spew = false;
|
boolean spew = false;
|
||||||
for (String d : items)
|
for (String d : items)
|
||||||
{
|
{
|
||||||
String[] parts = d.split("[^0-9]+", 3);
|
final String[] parts = d.split("[^0-9]+", 3);
|
||||||
int id = Material.getMaterial(Integer.parseInt(parts[0])).getId();
|
final int id = Material.getMaterial(Integer.parseInt(parts[0])).getId();
|
||||||
int amount = parts.length > 1 ? Integer.parseInt(parts[parts.length > 2 ? 2 : 1]) : 1;
|
final int amount = parts.length > 1 ? Integer.parseInt(parts[parts.length > 2 ? 2 : 1]) : 1;
|
||||||
short data = parts.length > 2 ? Short.parseShort(parts[1]) : 0;
|
final short data = parts.length > 2 ? Short.parseShort(parts[1]) : 0;
|
||||||
HashMap<Integer,ItemStack> overfilled = user.getInventory().addItem(new ItemStack(id, amount, data));
|
final HashMap<Integer,ItemStack> overfilled = user.getInventory().addItem(new ItemStack(id, amount, data));
|
||||||
for (ItemStack itemStack : overfilled.values())
|
for (ItemStack itemStack : overfilled.values())
|
||||||
{
|
{
|
||||||
user.getWorld().dropItemNaturally(user.getLocation(), itemStack);
|
user.getWorld().dropItemNaturally(user.getLocation(), itemStack);
|
||||||
|
@ -23,13 +23,15 @@ public class Commandmail extends EssentialsCommand
|
|||||||
List<String> mail = user.getMails();
|
List<String> mail = user.getMails();
|
||||||
if (mail.isEmpty())
|
if (mail.isEmpty())
|
||||||
{
|
{
|
||||||
throw new Exception(Util.i18n("noMail"));
|
user.sendMessage(Util.i18n("noMail"));
|
||||||
|
throw new NoChargeException();
|
||||||
}
|
}
|
||||||
for (String s : mail)
|
for (String s : mail)
|
||||||
{
|
{
|
||||||
user.sendMessage(s);
|
user.sendMessage(s);
|
||||||
}
|
}
|
||||||
throw new Exception(Util.i18n("mailClear"));
|
user.sendMessage(Util.i18n("mailClear"));
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
if (args.length >= 3 && "send".equalsIgnoreCase(args[0]))
|
if (args.length >= 3 && "send".equalsIgnoreCase(args[0]))
|
||||||
{
|
{
|
||||||
@ -62,8 +64,9 @@ public class Commandmail extends EssentialsCommand
|
|||||||
if (args.length >= 1 && "clear".equalsIgnoreCase(args[0]))
|
if (args.length >= 1 && "clear".equalsIgnoreCase(args[0]))
|
||||||
{
|
{
|
||||||
user.setMails(null);
|
user.setMails(null);
|
||||||
throw new Exception(Util.i18n("mailCleared"));
|
user.sendMessage(Util.i18n("mailCleared"));
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
throw new NoChargeException();
|
throw new NotEnoughArgumentsException();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -41,7 +41,7 @@ public class Commandnick extends EssentialsCommand
|
|||||||
String nick = args[0];
|
String nick = args[0];
|
||||||
if ("off".equalsIgnoreCase(nick) || user.getName().equalsIgnoreCase(nick))
|
if ("off".equalsIgnoreCase(nick) || user.getName().equalsIgnoreCase(nick))
|
||||||
{
|
{
|
||||||
user.setDisplayName(user.getName());
|
user.setDisplayNick(user.getName());
|
||||||
user.setNickname(null);
|
user.setNickname(null);
|
||||||
user.sendMessage(Util.i18n("nickNoMore"));
|
user.sendMessage(Util.i18n("nickNoMore"));
|
||||||
return;
|
return;
|
||||||
@ -67,7 +67,7 @@ public class Commandnick extends EssentialsCommand
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
user.setDisplayName(ess.getSettings().getNicknamePrefix() + nick);
|
user.setDisplayNick(ess.getSettings().getNicknamePrefix() + nick);
|
||||||
user.setNickname(nick);
|
user.setNickname(nick);
|
||||||
user.sendMessage(Util.format("nickSet", user.getDisplayName() + "§7."));
|
user.sendMessage(Util.format("nickSet", user.getDisplayName() + "§7."));
|
||||||
}
|
}
|
||||||
@ -95,13 +95,13 @@ public class Commandnick extends EssentialsCommand
|
|||||||
String nick = args[1];
|
String nick = args[1];
|
||||||
if ("off".equalsIgnoreCase(nick) || target.getName().equalsIgnoreCase(nick))
|
if ("off".equalsIgnoreCase(nick) || target.getName().equalsIgnoreCase(nick))
|
||||||
{
|
{
|
||||||
target.setDisplayName(target.getName());
|
target.setDisplayNick(target.getName());
|
||||||
target.setNickname(null);
|
target.setNickname(null);
|
||||||
target.sendMessage(Util.i18n("nickNoMore"));
|
target.sendMessage(Util.i18n("nickNoMore"));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
target.setDisplayName(ess.getSettings().getNicknamePrefix() + nick);
|
target.setDisplayNick(ess.getSettings().getNicknamePrefix() + nick);
|
||||||
target.setNickname(nick);
|
target.setNickname(nick);
|
||||||
target.sendMessage(Util.format("nickSet", target.getDisplayName() + "§7."));
|
target.sendMessage(Util.format("nickSet", target.getDisplayName() + "§7."));
|
||||||
}
|
}
|
||||||
|
@ -28,14 +28,14 @@ public class Commandsethome extends EssentialsCommand
|
|||||||
{
|
{
|
||||||
if (user.isAuthorized("essentials.sethome.multiple"))
|
if (user.isAuthorized("essentials.sethome.multiple"))
|
||||||
{
|
{
|
||||||
if ((user.isAuthorized("essentials.sethome.multiple.unlimited")) || (user.getHomes().size() < ess.getSettings().getMultipleHomes())
|
if ((user.isAuthorized("essentials.sethome.multiple.unlimited")) || (user.getHomes().size() < ess.getSettings().getHomeLimit(user))
|
||||||
|| (user.getHomes().contains(args[0].toLowerCase())))
|
|| (user.getHomes().contains(args[0].toLowerCase())))
|
||||||
{
|
{
|
||||||
user.setHome(args[0].toLowerCase());
|
user.setHome(args[0].toLowerCase());
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
throw new Exception(Util.format("maxHomes", ess.getSettings().getMultipleHomes()));
|
throw new Exception(Util.format("maxHomes", ess.getSettings().getHomeLimit(user)));
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -56,11 +56,6 @@ public class Commandspawnmob extends EssentialsCommand
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ess.getSettings().getProtectPreventSpawn(mobType.toLowerCase())
|
|
||||||
|| (mountType != null && ess.getSettings().getProtectPreventSpawn(mountType.toLowerCase())))
|
|
||||||
{
|
|
||||||
throw new Exception(Util.i18n("unableToSpawnMob"));
|
|
||||||
}
|
|
||||||
|
|
||||||
Entity spawnedMob = null;
|
Entity spawnedMob = null;
|
||||||
Mob mob = null;
|
Mob mob = null;
|
||||||
@ -72,6 +67,12 @@ public class Commandspawnmob extends EssentialsCommand
|
|||||||
{
|
{
|
||||||
throw new Exception(Util.i18n("invalidMob"));
|
throw new Exception(Util.i18n("invalidMob"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (ess.getSettings().getProtectPreventSpawn(mob.getType().toString().toLowerCase()))
|
||||||
|
{
|
||||||
|
throw new Exception(Util.i18n("unableToSpawnMob"));
|
||||||
|
}
|
||||||
|
|
||||||
int[] ignore =
|
int[] ignore =
|
||||||
{
|
{
|
||||||
8, 9
|
8, 9
|
||||||
@ -79,8 +80,7 @@ public class Commandspawnmob extends EssentialsCommand
|
|||||||
Block block = (new TargetBlock(user, 300, 0.2, ignore)).getTargetBlock();
|
Block block = (new TargetBlock(user, 300, 0.2, ignore)).getTargetBlock();
|
||||||
if (block == null)
|
if (block == null)
|
||||||
{
|
{
|
||||||
user.sendMessage(Util.i18n("unableToSpawnMob"));
|
throw new Exception(Util.i18n("unableToSpawnMob"));
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
Location loc = block.getLocation();
|
Location loc = block.getLocation();
|
||||||
Location sloc = Util.getSafeDestination(loc);
|
Location sloc = Util.getSafeDestination(loc);
|
||||||
@ -90,8 +90,7 @@ public class Commandspawnmob extends EssentialsCommand
|
|||||||
}
|
}
|
||||||
catch (MobException e)
|
catch (MobException e)
|
||||||
{
|
{
|
||||||
user.sendMessage(Util.i18n("unableToSpawnMob"));
|
throw new Exception(Util.i18n("unableToSpawnMob"));
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (mountType != null)
|
if (mountType != null)
|
||||||
@ -102,14 +101,18 @@ public class Commandspawnmob extends EssentialsCommand
|
|||||||
user.sendMessage(Util.i18n("invalidMob"));
|
user.sendMessage(Util.i18n("invalidMob"));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (ess.getSettings().getProtectPreventSpawn(mobMount.getType().toString().toLowerCase()))
|
||||||
|
{
|
||||||
|
throw new Exception(Util.i18n("unableToSpawnMob"));
|
||||||
|
}
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
spawnedMount = mobMount.spawn(user, server, loc);
|
spawnedMount = mobMount.spawn(user, server, loc);
|
||||||
}
|
}
|
||||||
catch (MobException e)
|
catch (MobException e)
|
||||||
{
|
{
|
||||||
user.sendMessage(Util.i18n("unableToSpawnMob"));
|
throw new Exception(Util.i18n("unableToSpawnMob"));
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
spawnedMob.setPassenger(spawnedMount);
|
spawnedMob.setPassenger(spawnedMount);
|
||||||
}
|
}
|
||||||
@ -144,8 +147,7 @@ public class Commandspawnmob extends EssentialsCommand
|
|||||||
}
|
}
|
||||||
catch (MobException e)
|
catch (MobException e)
|
||||||
{
|
{
|
||||||
user.sendMessage(Util.i18n("unableToSpawnMob"));
|
throw new Exception(Util.i18n("unableToSpawnMob"));
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
spawnedMob.setPassenger(spawnedMount);
|
spawnedMob.setPassenger(spawnedMount);
|
||||||
}
|
}
|
||||||
|
@ -92,6 +92,7 @@ spawnmob-limit: 10
|
|||||||
warn-on-smite: true
|
warn-on-smite: true
|
||||||
|
|
||||||
# The message of the day, displayed on connect and by typing /motd.
|
# The message of the day, displayed on connect and by typing /motd.
|
||||||
|
# Valid tags are: {PLAYER}, {IP}, {BALANCE}, {MAILS}, {WORLD}, {ONLINE}, {UNIQUE}, {PLAYERLIST}
|
||||||
motd:
|
motd:
|
||||||
- '&cWelcome, {PLAYER}&c!'
|
- '&cWelcome, {PLAYER}&c!'
|
||||||
- '&fType &c/help&f for a list of commands.'
|
- '&fType &c/help&f for a list of commands.'
|
||||||
@ -259,10 +260,16 @@ bed-sethome: false
|
|||||||
# If no home is set send you to spawn when /home is used
|
# If no home is set send you to spawn when /home is used
|
||||||
spawn-if-no-home: false
|
spawn-if-no-home: false
|
||||||
|
|
||||||
# If users have essentials.sethome.multiple how many homes can they have
|
# Allow players to have multiple homes.
|
||||||
# People with essentials.sethome.multiple.unlimited are not limited by this number
|
# Define different amounts of multiple homes for different permissions, e.g. essentials.sethome.multiple.vip
|
||||||
multiple-homes: 5
|
# People with essentials.sethome.multiple.unlimited are not limited by these numbers.
|
||||||
|
sethome-multiple:
|
||||||
|
# essentials.sethome.multiple
|
||||||
|
default: 3
|
||||||
|
# essentials.sethome.multiple.vip
|
||||||
|
vip: 5
|
||||||
|
# essentials.sethome.multiple.staff
|
||||||
|
staff: 10
|
||||||
|
|
||||||
############################################################
|
############################################################
|
||||||
# +------------------------------------------------------+ #
|
# +------------------------------------------------------+ #
|
||||||
@ -485,7 +492,7 @@ protect:
|
|||||||
use: true
|
use: true
|
||||||
|
|
||||||
# Should we tell people they are not allowed to build
|
# Should we tell people they are not allowed to build
|
||||||
warn-on-build-disallow: false
|
warn-on-build-disallow: true
|
||||||
|
|
||||||
|
|
||||||
# Disable weather options
|
# Disable weather options
|
||||||
|
@ -293,7 +293,7 @@ commands:
|
|||||||
togglejail:
|
togglejail:
|
||||||
description: Prevents a player from interacting with the world and teleports him/her to the the jail specified
|
description: Prevents a player from interacting with the world and teleports him/her to the the jail specified
|
||||||
usage: /<command> [player] [jailname] <datediff>
|
usage: /<command> [player] [jailname] <datediff>
|
||||||
aliases: [tjail,etogglejail]
|
aliases: [tjail,unjail,eunjail,etogglejail]
|
||||||
top:
|
top:
|
||||||
description: Teleport to the highest block at your current position.
|
description: Teleport to the highest block at your current position.
|
||||||
usage: /<command>
|
usage: /<command>
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
package com.earth2me.essentials;
|
package com.earth2me.essentials;
|
||||||
|
|
||||||
import com.avaje.ebean.config.ServerConfig;
|
import com.avaje.ebean.config.ServerConfig;
|
||||||
|
import java.io.File;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
@ -14,7 +15,9 @@ import org.bukkit.Location;
|
|||||||
import org.bukkit.Server;
|
import org.bukkit.Server;
|
||||||
import org.bukkit.World;
|
import org.bukkit.World;
|
||||||
import org.bukkit.World.Environment;
|
import org.bukkit.World.Environment;
|
||||||
|
import org.bukkit.WorldCreator;
|
||||||
import org.bukkit.command.CommandSender;
|
import org.bukkit.command.CommandSender;
|
||||||
|
import org.bukkit.command.ConsoleCommandSender;
|
||||||
import org.bukkit.command.PluginCommand;
|
import org.bukkit.command.PluginCommand;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.generator.ChunkGenerator;
|
import org.bukkit.generator.ChunkGenerator;
|
||||||
@ -43,41 +46,48 @@ public class FakeServer implements Server
|
|||||||
return "1.0";
|
return "1.0";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public Player[] getOnlinePlayers()
|
public Player[] getOnlinePlayers()
|
||||||
{
|
{
|
||||||
return players.toArray(new Player[0]);
|
return players.toArray(new Player[0]);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setOnlinePlayers(List<Player> players)
|
public void setOnlinePlayers(List<Player> players)
|
||||||
{
|
{
|
||||||
this.players = players;
|
this.players = players;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public int getMaxPlayers()
|
public int getMaxPlayers()
|
||||||
{
|
{
|
||||||
return 100;
|
return 100;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public int getPort()
|
public int getPort()
|
||||||
{
|
{
|
||||||
return 25565;
|
return 25565;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public String getIp()
|
public String getIp()
|
||||||
{
|
{
|
||||||
return "127.0.0.1";
|
return "127.0.0.1";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public String getServerName()
|
public String getServerName()
|
||||||
{
|
{
|
||||||
return "Test Server";
|
return "Test Server";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public String getServerId()
|
public String getServerId()
|
||||||
{
|
{
|
||||||
return "Test Server";
|
return "Test Server";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public int broadcastMessage(String string)
|
public int broadcastMessage(String string)
|
||||||
{
|
{
|
||||||
int i = 0;
|
int i = 0;
|
||||||
@ -89,11 +99,19 @@ public class FakeServer implements Server
|
|||||||
return i;
|
return i;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public String getUpdateFolder()
|
public String getUpdateFolder()
|
||||||
{
|
{
|
||||||
return "update";
|
return "update";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public File getUpdateFolderFile()
|
||||||
|
{
|
||||||
|
throw new UnsupportedOperationException("Not supported yet.");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public Player getPlayer(String string)
|
public Player getPlayer(String string)
|
||||||
{
|
{
|
||||||
for (Player player : players)
|
for (Player player : players)
|
||||||
@ -106,6 +124,7 @@ public class FakeServer implements Server
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public List<Player> matchPlayer(String string)
|
public List<Player> matchPlayer(String string)
|
||||||
{
|
{
|
||||||
List<Player> matches = new ArrayList<Player>();
|
List<Player> matches = new ArrayList<Player>();
|
||||||
@ -119,15 +138,17 @@ public class FakeServer implements Server
|
|||||||
return matches;
|
return matches;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public PluginManager getPluginManager()
|
public PluginManager getPluginManager()
|
||||||
{
|
{
|
||||||
throw new UnsupportedOperationException("Not supported yet.");
|
throw new UnsupportedOperationException("Not supported yet.");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public BukkitScheduler getScheduler()
|
public BukkitScheduler getScheduler()
|
||||||
{
|
{
|
||||||
return new BukkitScheduler() {
|
return new BukkitScheduler()
|
||||||
|
{
|
||||||
@Override
|
@Override
|
||||||
public int scheduleSyncDelayedTask(Plugin plugin, Runnable r, long l)
|
public int scheduleSyncDelayedTask(Plugin plugin, Runnable r, long l)
|
||||||
{
|
{
|
||||||
@ -215,16 +236,19 @@ public class FakeServer implements Server
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public ServicesManager getServicesManager()
|
public ServicesManager getServicesManager()
|
||||||
{
|
{
|
||||||
throw new UnsupportedOperationException("Not supported yet.");
|
throw new UnsupportedOperationException("Not supported yet.");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public List<World> getWorlds()
|
public List<World> getWorlds()
|
||||||
{
|
{
|
||||||
return worlds;
|
return worlds;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public World createWorld(String string, Environment e)
|
public World createWorld(String string, Environment e)
|
||||||
{
|
{
|
||||||
World w = new FakeWorld(string, e);
|
World w = new FakeWorld(string, e);
|
||||||
@ -232,6 +256,7 @@ public class FakeServer implements Server
|
|||||||
return w;
|
return w;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public World createWorld(String string, Environment e, long l)
|
public World createWorld(String string, Environment e, long l)
|
||||||
{
|
{
|
||||||
World w = new FakeWorld(string, e);
|
World w = new FakeWorld(string, e);
|
||||||
@ -239,45 +264,54 @@ public class FakeServer implements Server
|
|||||||
return w;
|
return w;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public World getWorld(String string)
|
public World getWorld(String string)
|
||||||
{
|
{
|
||||||
for (World world : worlds)
|
for (World world : worlds)
|
||||||
{
|
{
|
||||||
if (world.getName().equalsIgnoreCase(string)) {
|
if (world.getName().equalsIgnoreCase(string))
|
||||||
|
{
|
||||||
return world;
|
return world;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public void reload()
|
public void reload()
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public Logger getLogger()
|
public Logger getLogger()
|
||||||
{
|
{
|
||||||
return Logger.getLogger("Minecraft");
|
return Logger.getLogger("Minecraft");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public PluginCommand getPluginCommand(String string)
|
public PluginCommand getPluginCommand(String string)
|
||||||
{
|
{
|
||||||
throw new UnsupportedOperationException("Not supported yet.");
|
throw new UnsupportedOperationException("Not supported yet.");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public void savePlayers()
|
public void savePlayers()
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public boolean dispatchCommand(CommandSender cs, String string)
|
public boolean dispatchCommand(CommandSender cs, String string)
|
||||||
{
|
{
|
||||||
throw new UnsupportedOperationException("Not supported yet.");
|
throw new UnsupportedOperationException("Not supported yet.");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public void configureDbConfig(ServerConfig sc)
|
public void configureDbConfig(ServerConfig sc)
|
||||||
{
|
{
|
||||||
throw new UnsupportedOperationException("Not supported yet.");
|
throw new UnsupportedOperationException("Not supported yet.");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public boolean addRecipe(Recipe recipe)
|
public boolean addRecipe(Recipe recipe)
|
||||||
{
|
{
|
||||||
throw new UnsupportedOperationException("Not supported yet.");
|
throw new UnsupportedOperationException("Not supported yet.");
|
||||||
@ -287,7 +321,7 @@ public class FakeServer implements Server
|
|||||||
{
|
{
|
||||||
players.add(base1);
|
players.add(base1);
|
||||||
}
|
}
|
||||||
|
|
||||||
public OfflinePlayer createPlayer(String name, IEssentials ess)
|
public OfflinePlayer createPlayer(String name, IEssentials ess)
|
||||||
{
|
{
|
||||||
OfflinePlayer player = new OfflinePlayer(name, ess);
|
OfflinePlayer player = new OfflinePlayer(name, ess);
|
||||||
@ -295,41 +329,55 @@ public class FakeServer implements Server
|
|||||||
return player;
|
return player;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public World createWorld(String string, Environment e, ChunkGenerator cg)
|
public World createWorld(String string, Environment e, ChunkGenerator cg)
|
||||||
{
|
{
|
||||||
throw new UnsupportedOperationException("Not supported yet.");
|
throw new UnsupportedOperationException("Not supported yet.");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public World createWorld(String string, Environment e, long l, ChunkGenerator cg)
|
public World createWorld(String string, Environment e, long l, ChunkGenerator cg)
|
||||||
{
|
{
|
||||||
throw new UnsupportedOperationException("Not supported yet.");
|
throw new UnsupportedOperationException("Not supported yet.");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public World createWorld(WorldCreator creator)
|
||||||
|
{
|
||||||
|
throw new UnsupportedOperationException("Not supported yet.");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public boolean unloadWorld(String string, boolean bln)
|
public boolean unloadWorld(String string, boolean bln)
|
||||||
{
|
{
|
||||||
throw new UnsupportedOperationException("Not supported yet.");
|
throw new UnsupportedOperationException("Not supported yet.");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public boolean unloadWorld(World world, boolean bln)
|
public boolean unloadWorld(World world, boolean bln)
|
||||||
{
|
{
|
||||||
throw new UnsupportedOperationException("Not supported yet.");
|
throw new UnsupportedOperationException("Not supported yet.");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public Map<String, String[]> getCommandAliases()
|
public Map<String, String[]> getCommandAliases()
|
||||||
{
|
{
|
||||||
throw new UnsupportedOperationException("Not supported yet.");
|
throw new UnsupportedOperationException("Not supported yet.");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public int getSpawnRadius()
|
public int getSpawnRadius()
|
||||||
{
|
{
|
||||||
throw new UnsupportedOperationException("Not supported yet.");
|
throw new UnsupportedOperationException("Not supported yet.");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public void setSpawnRadius(int i)
|
public void setSpawnRadius(int i)
|
||||||
{
|
{
|
||||||
throw new UnsupportedOperationException("Not supported yet.");
|
throw new UnsupportedOperationException("Not supported yet.");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public boolean getOnlineMode()
|
public boolean getOnlineMode()
|
||||||
{
|
{
|
||||||
throw new UnsupportedOperationException("Not supported yet.");
|
throw new UnsupportedOperationException("Not supported yet.");
|
||||||
@ -340,6 +388,7 @@ public class FakeServer implements Server
|
|||||||
throw new UnsupportedOperationException("Not supported yet.");
|
throw new UnsupportedOperationException("Not supported yet.");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public World getWorld(UUID uuid)
|
public World getWorld(UUID uuid)
|
||||||
{
|
{
|
||||||
throw new UnsupportedOperationException("Not supported yet.");
|
throw new UnsupportedOperationException("Not supported yet.");
|
||||||
@ -454,7 +503,19 @@ public class FakeServer implements Server
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setDefaultGameMode(GameMode gm)
|
public void setDefaultGameMode(GameMode gamemode)
|
||||||
|
{
|
||||||
|
throw new UnsupportedOperationException("Not supported yet.");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ConsoleCommandSender getConsoleSender()
|
||||||
|
{
|
||||||
|
throw new UnsupportedOperationException("Not supported yet.");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Set getOperators()
|
||||||
{
|
{
|
||||||
throw new UnsupportedOperationException("Not supported yet.");
|
throw new UnsupportedOperationException("Not supported yet.");
|
||||||
}
|
}
|
||||||
|
@ -22,4 +22,17 @@ v 1.1:
|
|||||||
- Added a BukkitPermsUpdateTask to only update superperms once on a load/reload.
|
- Added a BukkitPermsUpdateTask to only update superperms once on a load/reload.
|
||||||
- Fix for GM not checking inheritance for known superperms nodes.
|
- Fix for GM not checking inheritance for known superperms nodes.
|
||||||
- Optimized getAllPlayersPermissions and fixed pushing unknown perms to superperms.
|
- Optimized getAllPlayersPermissions and fixed pushing unknown perms to superperms.
|
||||||
v 1.2:
|
v 1.2:
|
||||||
|
- Changed priority of Registered events to lowest.
|
||||||
|
- Fixed an issue with superperms where plugins define perms with inheritance after the root perms
|
||||||
|
- Rewrote Config loading to use Bukkits Configuration features
|
||||||
|
- Added an opOverride setting in config.
|
||||||
|
If present and set to false, op's will not get overriding permissions in GroupManager.
|
||||||
|
(one op will not be able to alter another op's settings)
|
||||||
|
- GM will now create all relevant world data files for non mirrored worlds.
|
||||||
|
(for all worlds named in config.yml)
|
||||||
|
- Attempt to stop GM wiping groups/users yml's on a bad shut down.
|
||||||
|
- Added event handling to manage new world creation at runtime.
|
||||||
|
- Added the ability to handle unknown worlds at server start.
|
||||||
|
(GM will create the data files for any worlds it finds which are not in the config.yml)
|
||||||
|
- Fix for Bukkit passing a null To location on a player Portaling
|
@ -1,12 +1,19 @@
|
|||||||
settings:
|
settings:
|
||||||
|
config:
|
||||||
|
# With this enabled anyone set as op has full permissions when managing GroupManager
|
||||||
|
opOverrides: true
|
||||||
data:
|
data:
|
||||||
save:
|
save:
|
||||||
|
# How often GroupManager will save it's data back to groups and users.yml
|
||||||
minutes: 10
|
minutes: 10
|
||||||
logging:
|
logging:
|
||||||
|
# level of detail GroupManager will use when logging.
|
||||||
|
# Acceptable entries are - ALL,CONFIG,FINE,FINER,FINEST,INFO,OFF,SEVERE,WARNING
|
||||||
level: INFO
|
level: INFO
|
||||||
permission:
|
permission:
|
||||||
world:
|
world:
|
||||||
mirror:
|
mirror:
|
||||||
|
# Worlds listed here have their permissions mirrored in their children.
|
||||||
world:
|
world:
|
||||||
- world_nether
|
- world_nether
|
||||||
- world2
|
- world2
|
||||||
|
91
EssentialsGroupManager/src/org/anjocaido/groupmanager/GMConfiguration.java
Executable file → Normal file
91
EssentialsGroupManager/src/org/anjocaido/groupmanager/GMConfiguration.java
Executable file → Normal file
@ -5,15 +5,12 @@
|
|||||||
package org.anjocaido.groupmanager;
|
package org.anjocaido.groupmanager;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.FileInputStream;
|
|
||||||
import java.io.FileNotFoundException;
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
|
|
||||||
import org.anjocaido.groupmanager.utils.Tasks;
|
import org.anjocaido.groupmanager.utils.Tasks;
|
||||||
import org.yaml.snakeyaml.Yaml;
|
import org.bukkit.util.config.Configuration;
|
||||||
import org.yaml.snakeyaml.constructor.SafeConstructor;
|
|
||||||
import org.yaml.snakeyaml.reader.UnicodeReader;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
@ -22,9 +19,9 @@ import org.yaml.snakeyaml.reader.UnicodeReader;
|
|||||||
public class GMConfiguration {
|
public class GMConfiguration {
|
||||||
|
|
||||||
private GroupManager plugin;
|
private GroupManager plugin;
|
||||||
private Map<String, Object> rootDataNode;
|
|
||||||
private File configFile;
|
private File configFile;
|
||||||
|
private Configuration GMconfig;
|
||||||
|
|
||||||
public GMConfiguration(GroupManager plugin) {
|
public GMConfiguration(GroupManager plugin) {
|
||||||
this.plugin = plugin;
|
this.plugin = plugin;
|
||||||
load();
|
load();
|
||||||
@ -44,77 +41,37 @@ public class GMConfiguration {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Yaml yaml = new Yaml(new SafeConstructor());
|
GMconfig = new Configuration(configFile);
|
||||||
FileInputStream rx = null;
|
|
||||||
try {
|
try {
|
||||||
rx = new FileInputStream(configFile);
|
GMconfig.load();
|
||||||
} catch (FileNotFoundException ex) {
|
|
||||||
GroupManager.logger.log(Level.SEVERE, null, ex);
|
|
||||||
}
|
|
||||||
try {
|
|
||||||
rootDataNode = (Map<String, Object>) yaml.load(new UnicodeReader(rx));
|
|
||||||
if (rootDataNode == null) {
|
|
||||||
throw new NullPointerException();
|
|
||||||
}
|
|
||||||
} catch (Exception ex) {
|
} catch (Exception ex) {
|
||||||
throw new IllegalArgumentException("The following file couldn't pass on Parser.\n" + configFile.getPath(), ex);
|
throw new IllegalArgumentException("The following file couldn't pass on Parser.\n" + configFile.getPath(), ex);
|
||||||
} finally {
|
|
||||||
try {
|
|
||||||
rx.close();
|
|
||||||
} catch (IOException ex) {
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
adjustLoggerLevel();
|
adjustLoggerLevel();
|
||||||
}
|
}
|
||||||
|
|
||||||
public Map<String, Object> getMirrorsMap() {
|
public boolean isOpOverride() {
|
||||||
if (rootDataNode.get("settings") instanceof Map) {
|
return GMconfig.getBoolean("settings.config.opOverrides", true);
|
||||||
Map<String, Object> settingsNode = (Map<String, Object>) rootDataNode.get("settings");
|
|
||||||
if (settingsNode.get("permission") instanceof Map) {
|
|
||||||
Map<String, Object> permissionNode = (Map<String, Object>) settingsNode.get("permission");
|
|
||||||
if (permissionNode.get("world") instanceof Map) {
|
|
||||||
Map<String, Object> worldsNode = (Map<String, Object>) permissionNode.get("world");
|
|
||||||
if (worldsNode.get("mirror") instanceof Map) {
|
|
||||||
Map<String, Object> mirrorsNode = (Map<String, Object>) worldsNode.get("mirror");
|
|
||||||
return mirrorsNode;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public Integer getSaveInterval() {
|
@SuppressWarnings("unchecked")
|
||||||
if (rootDataNode.get("settings") instanceof Map) {
|
public Map<String, Object> getMirrorsMap() {
|
||||||
Map<String, Object> settingsNode = (Map<String, Object>) rootDataNode.get("settings");
|
return (Map<String, Object>) GMconfig.getProperty("settings.permission.world.mirror");
|
||||||
if (settingsNode.get("data") instanceof Map) {
|
}
|
||||||
Map<String, Object> dataNode = (Map<String, Object>) settingsNode.get("data");
|
|
||||||
if (dataNode.get("save") instanceof Map) {
|
public Integer getSaveInterval() {
|
||||||
Map<String, Object> saveNode = (Map<String, Object>) dataNode.get("save");
|
return GMconfig.getInt("settings.data.save.minutes", 10);
|
||||||
if (saveNode.get("minutes") instanceof Integer) {
|
|
||||||
return (Integer) saveNode.get("minutes");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return 10;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void adjustLoggerLevel() {
|
public void adjustLoggerLevel() {
|
||||||
if (rootDataNode.get("settings") instanceof Map) {
|
|
||||||
Map<String, Object> settingsNode = (Map<String, Object>) rootDataNode.get("settings");
|
try {
|
||||||
if (settingsNode.get("logging") instanceof Map) {
|
GroupManager.logger.setLevel(Level.parse(GMconfig.getString("settings.logging.level", "INFO")));
|
||||||
Map<String, Object> loggingNode = (Map<String, Object>) settingsNode.get("logging");
|
return;
|
||||||
if (loggingNode.get("level") instanceof String) {
|
} catch (Exception e) {
|
||||||
String level = (String) loggingNode.get("level");
|
|
||||||
try {
|
|
||||||
GroupManager.logger.setLevel(Level.parse(level));
|
|
||||||
return;
|
|
||||||
} catch (Exception e) {
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
GroupManager.logger.setLevel(Level.INFO);
|
|
||||||
|
GroupManager.logger.setLevel(Level.INFO);
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -24,6 +24,7 @@ import java.util.concurrent.TimeUnit;
|
|||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
import java.util.logging.Logger;
|
import java.util.logging.Logger;
|
||||||
import org.anjocaido.groupmanager.dataholder.worlds.WorldsHolder;
|
import org.anjocaido.groupmanager.dataholder.worlds.WorldsHolder;
|
||||||
|
import org.anjocaido.groupmanager.events.GMWorldListener;
|
||||||
import org.anjocaido.groupmanager.utils.GMLoggerHandler;
|
import org.anjocaido.groupmanager.utils.GMLoggerHandler;
|
||||||
import org.anjocaido.groupmanager.utils.PermissionCheckResult;
|
import org.anjocaido.groupmanager.utils.PermissionCheckResult;
|
||||||
import org.anjocaido.groupmanager.utils.Tasks;
|
import org.anjocaido.groupmanager.utils.Tasks;
|
||||||
@ -32,9 +33,12 @@ 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;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.event.Event;
|
||||||
|
import org.bukkit.event.world.WorldListener;
|
||||||
import org.bukkit.plugin.PluginDescriptionFile;
|
import org.bukkit.plugin.PluginDescriptionFile;
|
||||||
import org.bukkit.plugin.java.JavaPlugin;
|
import org.bukkit.plugin.java.JavaPlugin;
|
||||||
|
|
||||||
|
|
||||||
@SuppressWarnings("unused")
|
@SuppressWarnings("unused")
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
@ -55,6 +59,7 @@ public class GroupManager extends JavaPlugin {
|
|||||||
private GMConfiguration config;
|
private GMConfiguration config;
|
||||||
private GMLoggerHandler ch;
|
private GMLoggerHandler ch;
|
||||||
public static BukkitPermissions BukkitPermissions;
|
public static BukkitPermissions BukkitPermissions;
|
||||||
|
private static WorldListener WorldEvents;
|
||||||
public static final Logger logger = Logger.getLogger(GroupManager.class.getName());
|
public static final Logger logger = Logger.getLogger(GroupManager.class.getName());
|
||||||
|
|
||||||
//PERMISSIONS FOR COMMAND BEING LOADED
|
//PERMISSIONS FOR COMMAND BEING LOADED
|
||||||
@ -69,6 +74,10 @@ public class GroupManager extends JavaPlugin {
|
|||||||
worldsHolder.saveChanges();
|
worldsHolder.saveChanges();
|
||||||
}
|
}
|
||||||
disableScheduler();
|
disableScheduler();
|
||||||
|
|
||||||
|
WorldEvents = null;
|
||||||
|
BukkitPermissions = null;
|
||||||
|
|
||||||
// EXAMPLE: Custom code, here we just output some info so we can check all is well
|
// EXAMPLE: Custom code, here we just output some info so we can check all is well
|
||||||
PluginDescriptionFile pdfFile = this.getDescription();
|
PluginDescriptionFile pdfFile = this.getDescription();
|
||||||
System.out.println(pdfFile.getName() + " version " + pdfFile.getVersion() + " is disabled!");
|
System.out.println(pdfFile.getName() + " version " + pdfFile.getVersion() + " is disabled!");
|
||||||
@ -94,8 +103,10 @@ public class GroupManager extends JavaPlugin {
|
|||||||
throw new IllegalStateException("An error ocurred while loading GroupManager");
|
throw new IllegalStateException("An error ocurred while loading GroupManager");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Initialize the world listener and bukkit permissions to handle events.
|
||||||
|
WorldEvents = new GMWorldListener(this);
|
||||||
BukkitPermissions = new BukkitPermissions(this);
|
BukkitPermissions = new BukkitPermissions(this);
|
||||||
|
|
||||||
enableScheduler();
|
enableScheduler();
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -108,9 +119,10 @@ public class GroupManager extends JavaPlugin {
|
|||||||
setLoaded(true);
|
setLoaded(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
//setLoaded(true);
|
|
||||||
System.out.println(pdfFile.getName() + " version " + pdfFile.getVersion() + " is enabled!");
|
System.out.println(pdfFile.getName() + " version " + pdfFile.getVersion() + " is enabled!");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public static boolean isLoaded() {
|
public static boolean isLoaded() {
|
||||||
return isLoaded;
|
return isLoaded;
|
||||||
@ -232,6 +244,7 @@ public class GroupManager extends JavaPlugin {
|
|||||||
Player senderPlayer = null, targetPlayer = null;
|
Player senderPlayer = null, targetPlayer = null;
|
||||||
Group senderGroup = null;
|
Group senderGroup = null;
|
||||||
User senderUser = null;
|
User senderUser = null;
|
||||||
|
boolean isOpOverride = config.isOpOverride();
|
||||||
|
|
||||||
|
|
||||||
//DETERMINING PLAYER INFORMATION
|
//DETERMINING PLAYER INFORMATION
|
||||||
@ -239,8 +252,10 @@ public class GroupManager extends JavaPlugin {
|
|||||||
senderPlayer = (Player) sender;
|
senderPlayer = (Player) sender;
|
||||||
senderUser = worldsHolder.getWorldData(senderPlayer).getUser(senderPlayer.getName());
|
senderUser = worldsHolder.getWorldData(senderPlayer).getUser(senderPlayer.getName());
|
||||||
senderGroup = senderUser.getGroup();
|
senderGroup = senderUser.getGroup();
|
||||||
|
isOpOverride = (isOpOverride && senderPlayer.isOp());
|
||||||
|
|
||||||
System.out.println("[PLAYER_COMMAND] " + senderPlayer.getName() + ": /" + commandLabel + " " + Tasks.join(args, " "));
|
System.out.println("[PLAYER_COMMAND] " + senderPlayer.getName() + ": /" + commandLabel + " " + Tasks.join(args, " "));
|
||||||
if (senderPlayer.isOp() || worldsHolder.getWorldPermissions(senderPlayer).has(senderPlayer, "groupmanager." + cmd.getName())) {
|
if (isOpOverride || worldsHolder.getWorldPermissions(senderPlayer).has(senderPlayer, "groupmanager." + cmd.getName())) {
|
||||||
playerCanDo = true;
|
playerCanDo = true;
|
||||||
}
|
}
|
||||||
} else if (sender instanceof ConsoleCommandSender) {
|
} else if (sender instanceof ConsoleCommandSender) {
|
||||||
@ -338,27 +353,19 @@ public class GroupManager extends JavaPlugin {
|
|||||||
}
|
}
|
||||||
|
|
||||||
//VALIDANDO PERMISSAO
|
//VALIDANDO PERMISSAO
|
||||||
if (!isConsole && !senderPlayer.isOp() && (senderGroup != null ? permissionHandler.inGroup(auxUser.getName(), senderGroup.getName()) : false)) {
|
if (!isConsole && !isOpOverride && (senderGroup != null ? permissionHandler.inGroup(auxUser.getName(), senderGroup.getName()) : false)) {
|
||||||
sender.sendMessage(ChatColor.RED + "Can't modify player with same permissions than you, or higher.");
|
sender.sendMessage(ChatColor.RED + "Can't modify player with same permissions than you, or higher.");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
if (!isConsole && !senderPlayer.isOp() && (permissionHandler.hasGroupInInheritance(auxGroup, senderGroup.getName()))) {
|
if (!isConsole && !isOpOverride && (permissionHandler.hasGroupInInheritance(auxGroup, senderGroup.getName()))) {
|
||||||
sender.sendMessage(ChatColor.RED + "The destination group can't be the same as yours, or higher.");
|
sender.sendMessage(ChatColor.RED + "The destination group can't be the same as yours, or higher.");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
if (!isConsole && !senderPlayer.isOp() && (!permissionHandler.inGroup(senderUser.getName(), auxUser.getGroupName()) || !permissionHandler.inGroup(senderUser.getName(), auxGroup.getName()))) {
|
if (!isConsole && !isOpOverride && (!permissionHandler.inGroup(senderUser.getName(), auxUser.getGroupName()) || !permissionHandler.inGroup(senderUser.getName(), auxGroup.getName()))) {
|
||||||
sender.sendMessage(ChatColor.RED + "Can't modify player involving a group that you don't inherit.");
|
sender.sendMessage(ChatColor.RED + "Can't modify player involving a group that you don't inherit.");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
if (!isConsole && !senderPlayer.isOp() && (!permissionHandler.hasGroupInInheritance(auxUser.getGroup(), auxGroup.getName()) && !permissionHandler.hasGroupInInheritance(auxGroup, auxUser.getGroupName()))) {
|
|
||||||
sender.sendMessage(ChatColor.RED + "Can't modify player using groups with different heritage line.");
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
if (!isConsole && !senderPlayer.isOp() && (!permissionHandler.hasGroupInInheritance(auxGroup, auxUser.getGroupName()))) {
|
|
||||||
sender.sendMessage(ChatColor.RED + "The new group must be a higher rank.");
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
//PARECE OK
|
//PARECE OK
|
||||||
auxUser.setGroup(auxGroup);
|
auxUser.setGroup(auxGroup);
|
||||||
sender.sendMessage(ChatColor.YELLOW + "You changed player '" + auxUser.getName() + "' group to '" + auxGroup.getName() + "'.");
|
sender.sendMessage(ChatColor.YELLOW + "You changed player '" + auxUser.getName() + "' group to '" + auxGroup.getName() + "'.");
|
||||||
@ -392,7 +399,7 @@ public class GroupManager extends JavaPlugin {
|
|||||||
auxUser = dataHolder.getUser(args[0]);
|
auxUser = dataHolder.getUser(args[0]);
|
||||||
}
|
}
|
||||||
//VALIDANDO PERMISSAO
|
//VALIDANDO PERMISSAO
|
||||||
if (!isConsole && !senderPlayer.isOp() && (senderGroup != null ? permissionHandler.inGroup(auxUser.getName(), senderGroup.getName()) : false)) {
|
if (!isConsole && !isOpOverride && (senderGroup != null ? permissionHandler.inGroup(auxUser.getName(), senderGroup.getName()) : false)) {
|
||||||
sender.sendMessage(ChatColor.RED + "Can't modify player with same permissions than you, or higher.");
|
sender.sendMessage(ChatColor.RED + "Can't modify player with same permissions than you, or higher.");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@ -436,7 +443,7 @@ public class GroupManager extends JavaPlugin {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
//VALIDANDO PERMISSAO
|
//VALIDANDO PERMISSAO
|
||||||
if (!isConsole && !senderPlayer.isOp() && (senderGroup != null ? permissionHandler.inGroup(auxUser.getName(), senderGroup.getName()) : false)) {
|
if (!isConsole && !isOpOverride && (senderGroup != null ? permissionHandler.inGroup(auxUser.getName(), senderGroup.getName()) : false)) {
|
||||||
sender.sendMessage(ChatColor.RED + "Can't modify player with same permissions than you, or higher.");
|
sender.sendMessage(ChatColor.RED + "Can't modify player with same permissions than you, or higher.");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@ -472,7 +479,7 @@ public class GroupManager extends JavaPlugin {
|
|||||||
auxUser = dataHolder.getUser(args[0]);
|
auxUser = dataHolder.getUser(args[0]);
|
||||||
}
|
}
|
||||||
//VALIDANDO PERMISSAO
|
//VALIDANDO PERMISSAO
|
||||||
if (!isConsole && !senderPlayer.isOp() && (senderGroup != null ? permissionHandler.inGroup(auxUser.getName(), senderGroup.getName()) : false)) {
|
if (!isConsole && !isOpOverride && (senderGroup != null ? permissionHandler.inGroup(auxUser.getName(), senderGroup.getName()) : false)) {
|
||||||
sender.sendMessage(ChatColor.RED + "Can't modify player with same permissions than you, or higher.");
|
sender.sendMessage(ChatColor.RED + "Can't modify player with same permissions than you, or higher.");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@ -557,7 +564,7 @@ public class GroupManager extends JavaPlugin {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
permissionResult = permissionHandler.checkFullUserPermission(senderUser, args[1]);
|
permissionResult = permissionHandler.checkFullUserPermission(senderUser, args[1]);
|
||||||
if (!isConsole && !senderPlayer.isOp() && (permissionResult.resultType.equals(PermissionCheckResult.Type.NOTFOUND)
|
if (!isConsole && !isOpOverride && (permissionResult.resultType.equals(PermissionCheckResult.Type.NOTFOUND)
|
||||||
|| permissionResult.resultType.equals(PermissionCheckResult.Type.NEGATION))) {
|
|| permissionResult.resultType.equals(PermissionCheckResult.Type.NEGATION))) {
|
||||||
sender.sendMessage(ChatColor.RED + "Can't add a permission you don't have.");
|
sender.sendMessage(ChatColor.RED + "Can't add a permission you don't have.");
|
||||||
return false;
|
return false;
|
||||||
@ -620,12 +627,12 @@ public class GroupManager extends JavaPlugin {
|
|||||||
auxUser = dataHolder.getUser(args[0]);
|
auxUser = dataHolder.getUser(args[0]);
|
||||||
}
|
}
|
||||||
//VALIDANDO SUA PERMISSAO
|
//VALIDANDO SUA PERMISSAO
|
||||||
if (!isConsole && !senderPlayer.isOp() && (senderGroup != null ? permissionHandler.inGroup(auxUser.getName(), senderGroup.getName()) : false)) {
|
if (!isConsole && !isOpOverride && (senderGroup != null ? permissionHandler.inGroup(auxUser.getName(), senderGroup.getName()) : false)) {
|
||||||
sender.sendMessage(ChatColor.RED + "Can't modify player with same group than you, or higher.");
|
sender.sendMessage(ChatColor.RED + "Can't modify player with same group than you, or higher.");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
permissionResult = permissionHandler.checkFullUserPermission(senderUser, args[1]);
|
permissionResult = permissionHandler.checkFullUserPermission(senderUser, args[1]);
|
||||||
if (!isConsole && !senderPlayer.isOp() && (permissionResult.resultType.equals(PermissionCheckResult.Type.NOTFOUND)
|
if (!isConsole && !isOpOverride && (permissionResult.resultType.equals(PermissionCheckResult.Type.NOTFOUND)
|
||||||
|| permissionResult.resultType.equals(PermissionCheckResult.Type.NEGATION))) {
|
|| permissionResult.resultType.equals(PermissionCheckResult.Type.NEGATION))) {
|
||||||
sender.sendMessage(ChatColor.RED + "Can't remove a permission you don't have.");
|
sender.sendMessage(ChatColor.RED + "Can't remove a permission you don't have.");
|
||||||
return false;
|
return false;
|
||||||
@ -1554,23 +1561,23 @@ public class GroupManager extends JavaPlugin {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
//VALIDANDO PERMISSAO
|
//VALIDANDO PERMISSAO
|
||||||
if (!isConsole && !senderPlayer.isOp() && (senderGroup != null ? permissionHandler.inGroup(auxUser.getName(), senderGroup.getName()) : false)) {
|
if (!isConsole && !isOpOverride && (senderGroup != null ? permissionHandler.inGroup(auxUser.getName(), senderGroup.getName()) : false)) {
|
||||||
sender.sendMessage(ChatColor.RED + "Can't modify player with same permissions than you, or higher.");
|
sender.sendMessage(ChatColor.RED + "Can't modify player with same permissions than you, or higher.");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
if (!isConsole && !senderPlayer.isOp() && (permissionHandler.hasGroupInInheritance(auxGroup, senderGroup.getName()))) {
|
if (!isConsole && !isOpOverride && (permissionHandler.hasGroupInInheritance(auxGroup, senderGroup.getName()))) {
|
||||||
sender.sendMessage(ChatColor.RED + "The destination group can't be the same as yours, or higher.");
|
sender.sendMessage(ChatColor.RED + "The destination group can't be the same as yours, or higher.");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
if (!isConsole && !senderPlayer.isOp() && (!permissionHandler.inGroup(senderUser.getName(), auxUser.getGroupName()) || !permissionHandler.inGroup(senderUser.getName(), auxGroup.getName()))) {
|
if (!isConsole && !isOpOverride && (!permissionHandler.inGroup(senderUser.getName(), auxUser.getGroupName()) || !permissionHandler.inGroup(senderUser.getName(), auxGroup.getName()))) {
|
||||||
sender.sendMessage(ChatColor.RED + "Can't modify player involving a group that you don't inherit.");
|
sender.sendMessage(ChatColor.RED + "Can't modify player involving a group that you don't inherit.");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
if (!isConsole && !senderPlayer.isOp() && (!permissionHandler.hasGroupInInheritance(auxUser.getGroup(), auxGroup.getName()) && !permissionHandler.hasGroupInInheritance(auxGroup, auxUser.getGroupName()))) {
|
if (!isConsole && !isOpOverride && (!permissionHandler.hasGroupInInheritance(auxUser.getGroup(), auxGroup.getName()) && !permissionHandler.hasGroupInInheritance(auxGroup, auxUser.getGroupName()))) {
|
||||||
sender.sendMessage(ChatColor.RED + "Can't modify player using groups with different heritage line.");
|
sender.sendMessage(ChatColor.RED + "Can't modify player using groups with different heritage line.");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
if (!isConsole && !senderPlayer.isOp() && (!permissionHandler.hasGroupInInheritance(auxGroup, auxUser.getGroupName()))) {
|
if (!isConsole && !isOpOverride && (!permissionHandler.hasGroupInInheritance(auxGroup, auxUser.getGroupName()))) {
|
||||||
sender.sendMessage(ChatColor.RED + "The new group must be a higher rank.");
|
sender.sendMessage(ChatColor.RED + "The new group must be a higher rank.");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@ -1612,23 +1619,23 @@ public class GroupManager extends JavaPlugin {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
//VALIDANDO PERMISSAO
|
//VALIDANDO PERMISSAO
|
||||||
if (!isConsole && !senderPlayer.isOp() && (senderGroup != null ? permissionHandler.inGroup(auxUser.getName(), senderGroup.getName()) : false)) {
|
if (!isConsole && !isOpOverride && (senderGroup != null ? permissionHandler.inGroup(auxUser.getName(), senderGroup.getName()) : false)) {
|
||||||
sender.sendMessage(ChatColor.RED + "Can't modify player with same permissions than you, or higher.");
|
sender.sendMessage(ChatColor.RED + "Can't modify player with same permissions than you, or higher.");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
if (!isConsole && !senderPlayer.isOp() && (permissionHandler.hasGroupInInheritance(auxGroup, senderGroup.getName()))) {
|
if (!isConsole && !isOpOverride && (permissionHandler.hasGroupInInheritance(auxGroup, senderGroup.getName()))) {
|
||||||
sender.sendMessage(ChatColor.RED + "The destination group can't be the same as yours, or higher.");
|
sender.sendMessage(ChatColor.RED + "The destination group can't be the same as yours, or higher.");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
if (!isConsole && !senderPlayer.isOp() && (!permissionHandler.inGroup(senderUser.getName(), auxUser.getGroupName()) || !permissionHandler.inGroup(senderUser.getName(), auxGroup.getName()))) {
|
if (!isConsole && !isOpOverride && (!permissionHandler.inGroup(senderUser.getName(), auxUser.getGroupName()) || !permissionHandler.inGroup(senderUser.getName(), auxGroup.getName()))) {
|
||||||
sender.sendMessage(ChatColor.RED + "Can't modify player involving a group that you don' inherit.");
|
sender.sendMessage(ChatColor.RED + "Can't modify player involving a group that you don' inherit.");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
if (!isConsole && !senderPlayer.isOp() && (!permissionHandler.hasGroupInInheritance(auxUser.getGroup(), auxGroup.getName()) && !permissionHandler.hasGroupInInheritance(auxGroup, auxUser.getGroupName()))) {
|
if (!isConsole && !isOpOverride && (!permissionHandler.hasGroupInInheritance(auxUser.getGroup(), auxGroup.getName()) && !permissionHandler.hasGroupInInheritance(auxGroup, auxUser.getGroupName()))) {
|
||||||
sender.sendMessage(ChatColor.RED + "Can't modify player using groups with different heritage line.");
|
sender.sendMessage(ChatColor.RED + "Can't modify player using groups with different heritage line.");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
if (!isConsole && !senderPlayer.isOp() && (permissionHandler.hasGroupInInheritance(auxGroup, auxUser.getGroupName()))) {
|
if (!isConsole && !isOpOverride && (permissionHandler.hasGroupInInheritance(auxGroup, auxUser.getGroupName()))) {
|
||||||
sender.sendMessage(ChatColor.RED + "The new group must be a lower rank.");
|
sender.sendMessage(ChatColor.RED + "The new group must be a lower rank.");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
@ -18,6 +18,7 @@ public class BukkitPermsUpdateTask implements Runnable {
|
|||||||
public void run() {
|
public void run() {
|
||||||
// Signal loaded and update BukkitPermissions.
|
// Signal loaded and update BukkitPermissions.
|
||||||
GroupManager.setLoaded(true);
|
GroupManager.setLoaded(true);
|
||||||
|
GroupManager.BukkitPermissions.collectPermissions();
|
||||||
GroupManager.BukkitPermissions.updateAllPlayers();
|
GroupManager.BukkitPermissions.updateAllPlayers();
|
||||||
|
|
||||||
GroupManager.logger.info("Bukkit Permissions Updated!");
|
GroupManager.logger.info("Bukkit Permissions Updated!");
|
||||||
|
@ -767,13 +767,15 @@ public class WorldDataHolder {
|
|||||||
aGroupMap.put("permissions", group.getPermissionList());
|
aGroupMap.put("permissions", group.getPermissionList());
|
||||||
}
|
}
|
||||||
|
|
||||||
DumperOptions opt = new DumperOptions();
|
if (!root.isEmpty()) {
|
||||||
opt.setDefaultFlowStyle(DumperOptions.FlowStyle.BLOCK);
|
DumperOptions opt = new DumperOptions();
|
||||||
final Yaml yaml = new Yaml(opt);
|
opt.setDefaultFlowStyle(DumperOptions.FlowStyle.BLOCK);
|
||||||
try {
|
final Yaml yaml = new Yaml(opt);
|
||||||
yaml.dump(root, new OutputStreamWriter(new FileOutputStream(groupsFile), "UTF-8"));
|
try {
|
||||||
} catch (UnsupportedEncodingException ex) {
|
yaml.dump(root, new OutputStreamWriter(new FileOutputStream(groupsFile), "UTF-8"));
|
||||||
} catch (FileNotFoundException ex) {
|
} catch (UnsupportedEncodingException ex) {
|
||||||
|
} catch (FileNotFoundException ex) {
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/*FileWriter tx = null;
|
/*FileWriter tx = null;
|
||||||
@ -829,13 +831,16 @@ public class WorldDataHolder {
|
|||||||
aUserMap.put("subgroups", user.subGroupListStringCopy());
|
aUserMap.put("subgroups", user.subGroupListStringCopy());
|
||||||
//END SUBGROUPS NODE - BETA
|
//END SUBGROUPS NODE - BETA
|
||||||
}
|
}
|
||||||
DumperOptions opt = new DumperOptions();
|
|
||||||
opt.setDefaultFlowStyle(DumperOptions.FlowStyle.BLOCK);
|
if (!root.isEmpty()) {
|
||||||
final Yaml yaml = new Yaml(opt);
|
DumperOptions opt = new DumperOptions();
|
||||||
try {
|
opt.setDefaultFlowStyle(DumperOptions.FlowStyle.BLOCK);
|
||||||
yaml.dump(root, new OutputStreamWriter(new FileOutputStream(usersFile), "UTF-8"));
|
final Yaml yaml = new Yaml(opt);
|
||||||
} catch (UnsupportedEncodingException ex) {
|
try {
|
||||||
} catch (FileNotFoundException ex) {
|
yaml.dump(root, new OutputStreamWriter(new FileOutputStream(usersFile), "UTF-8"));
|
||||||
|
} catch (UnsupportedEncodingException ex) {
|
||||||
|
} catch (FileNotFoundException ex) {
|
||||||
|
}
|
||||||
}
|
}
|
||||||
/*FileWriter tx = null;
|
/*FileWriter tx = null;
|
||||||
try {
|
try {
|
||||||
|
@ -21,6 +21,7 @@ import org.anjocaido.groupmanager.dataholder.WorldDataHolder;
|
|||||||
import org.anjocaido.groupmanager.dataholder.OverloadedWorldHolder;
|
import org.anjocaido.groupmanager.dataholder.OverloadedWorldHolder;
|
||||||
import org.anjocaido.groupmanager.permissions.AnjoPermissionsHandler;
|
import org.anjocaido.groupmanager.permissions.AnjoPermissionsHandler;
|
||||||
import org.anjocaido.groupmanager.utils.Tasks;
|
import org.anjocaido.groupmanager.utils.Tasks;
|
||||||
|
import org.bukkit.World;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -52,6 +53,7 @@ public class WorldsHolder {
|
|||||||
*/
|
*/
|
||||||
public WorldsHolder(GroupManager plugin) {
|
public WorldsHolder(GroupManager plugin) {
|
||||||
this.plugin = plugin;
|
this.plugin = plugin;
|
||||||
|
// Setup folders and check files exist for the primary world
|
||||||
verifyFirstRun();
|
verifyFirstRun();
|
||||||
initialLoad();
|
initialLoad();
|
||||||
if (defaultWorld == null) {
|
if (defaultWorld == null) {
|
||||||
@ -60,21 +62,48 @@ public class WorldsHolder {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void initialLoad() {
|
private void initialLoad() {
|
||||||
|
// load the initial world
|
||||||
initialWorldLoading();
|
initialWorldLoading();
|
||||||
|
// Configure and load any mirrors and additional worlds as defined in config.yml
|
||||||
mirrorSetUp();
|
mirrorSetUp();
|
||||||
|
// search the worlds folder for any manually created worlds (not listed in config.yml)
|
||||||
|
loadAllSearchedWorlds();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void initialWorldLoading() {
|
private void initialWorldLoading() {
|
||||||
//LOAD EVERY WORLD POSSIBLE
|
//Load the default world
|
||||||
loadWorld(serverDefaultWorldName);
|
loadWorld(serverDefaultWorldName);
|
||||||
defaultWorld = worldsData.get(serverDefaultWorldName);
|
defaultWorld = worldsData.get(serverDefaultWorldName);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void loadAllSearchedWorlds() {
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Read all known worlds from Bukkit
|
||||||
|
* Create the data files if they don't already exist,
|
||||||
|
* and they are not mirrored.
|
||||||
|
*/
|
||||||
|
for (World world: plugin.getServer().getWorlds())
|
||||||
|
if ((!worldsData.containsKey(world.getName().toLowerCase()))
|
||||||
|
&& (!mirrors.containsKey(world.getName().toLowerCase())))
|
||||||
|
setupWorldFolder(world.getName());
|
||||||
|
/*
|
||||||
|
* Loop over all folders within the worlds folder
|
||||||
|
* and attempt to load the world data
|
||||||
|
*/
|
||||||
for (File folder : worldsFolder.listFiles()) {
|
for (File folder : worldsFolder.listFiles()) {
|
||||||
if (folder.getName().equalsIgnoreCase(serverDefaultWorldName)) {
|
if (folder.isDirectory()) {
|
||||||
continue;
|
GroupManager.logger.info("World Found: " + folder.getName());
|
||||||
}
|
|
||||||
if (folder.isDirectory()) {
|
/*
|
||||||
loadWorld(folder.getName());
|
* don't load any worlds which are already loaded
|
||||||
|
* or mirrored worlds that don't need data.
|
||||||
|
*/
|
||||||
|
if (worldsData.containsKey(folder.getName().toLowerCase())
|
||||||
|
|| mirrors.containsKey(folder.getName().toLowerCase())) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
loadWorld(folder.getName());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -85,6 +114,12 @@ public class WorldsHolder {
|
|||||||
Map<String, Object> mirrorsMap = plugin.getConfig().getMirrorsMap();
|
Map<String, Object> mirrorsMap = plugin.getConfig().getMirrorsMap();
|
||||||
if (mirrorsMap != null) {
|
if (mirrorsMap != null) {
|
||||||
for (String source : mirrorsMap.keySet()) {
|
for (String source : mirrorsMap.keySet()) {
|
||||||
|
// Make sure all non mirrored worlds have a set of data files.
|
||||||
|
setupWorldFolder(source);
|
||||||
|
// Load the world data
|
||||||
|
if (!worldsData.containsKey(source.toLowerCase()))
|
||||||
|
loadWorld(source);
|
||||||
|
|
||||||
if (mirrorsMap.get(source) instanceof ArrayList) {
|
if (mirrorsMap.get(source) instanceof ArrayList) {
|
||||||
ArrayList mirrorList = (ArrayList) mirrorsMap.get(source);
|
ArrayList mirrorList = (ArrayList) mirrorsMap.get(source);
|
||||||
for (Object o : mirrorList) {
|
for (Object o : mirrorList) {
|
||||||
@ -246,18 +281,25 @@ public class WorldsHolder {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void verifyFirstRun() {
|
private void verifyFirstRun() {
|
||||||
|
|
||||||
|
Properties server = new Properties();
|
||||||
|
try {
|
||||||
|
server.load(new FileInputStream(new File("server.properties")));
|
||||||
|
serverDefaultWorldName = server.getProperty("level-name").toLowerCase();
|
||||||
|
setupWorldFolder(serverDefaultWorldName);
|
||||||
|
} catch (IOException ex) {
|
||||||
|
GroupManager.logger.log(Level.SEVERE, null, ex);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setupWorldFolder(String worldName) {
|
||||||
worldsFolder = new File(plugin.getDataFolder(), "worlds");
|
worldsFolder = new File(plugin.getDataFolder(), "worlds");
|
||||||
if (!worldsFolder.exists()) {
|
if (!worldsFolder.exists()) {
|
||||||
worldsFolder.mkdirs();
|
worldsFolder.mkdirs();
|
||||||
}
|
}
|
||||||
Properties server = new Properties();
|
|
||||||
try {
|
File defaultWorldFolder = new File(worldsFolder, worldName);
|
||||||
server.load(new FileInputStream(new File("server.properties")));
|
|
||||||
} catch (IOException ex) {
|
|
||||||
GroupManager.logger.log(Level.SEVERE, null, ex);
|
|
||||||
}
|
|
||||||
serverDefaultWorldName = server.getProperty("level-name").toLowerCase();
|
|
||||||
File defaultWorldFolder = new File(worldsFolder, serverDefaultWorldName);
|
|
||||||
if (!defaultWorldFolder.exists()) {
|
if (!defaultWorldFolder.exists()) {
|
||||||
defaultWorldFolder.mkdirs();
|
defaultWorldFolder.mkdirs();
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,43 @@
|
|||||||
|
package org.anjocaido.groupmanager.events;
|
||||||
|
|
||||||
|
import org.anjocaido.groupmanager.GroupManager;
|
||||||
|
import org.bukkit.event.Event;
|
||||||
|
import org.bukkit.event.world.WorldInitEvent;
|
||||||
|
import org.bukkit.event.world.WorldListener;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author ElgarL
|
||||||
|
*
|
||||||
|
* Handle new world creation from other plugins
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public class GMWorldListener extends WorldListener {
|
||||||
|
|
||||||
|
private final GroupManager plugin;
|
||||||
|
|
||||||
|
public GMWorldListener(GroupManager instance) {
|
||||||
|
plugin = instance;
|
||||||
|
registerEvents();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void registerEvents() {
|
||||||
|
plugin.getServer().getPluginManager().registerEvent(Event.Type.WORLD_INIT, this, Event.Priority.Lowest, plugin);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onWorldInit(WorldInitEvent event) {
|
||||||
|
String worldName = event.getWorld().getName();
|
||||||
|
|
||||||
|
if (GroupManager.isLoaded() && !plugin.getWorldsHolder().isInList(worldName)) {
|
||||||
|
GroupManager.logger.info("New world detected...");
|
||||||
|
GroupManager.logger.info("Creating data for: " + worldName);
|
||||||
|
plugin.getWorldsHolder().setupWorldFolder(worldName);
|
||||||
|
plugin.getWorldsHolder().loadWorld(worldName);
|
||||||
|
if (plugin.getWorldsHolder().isInList(worldName)) {
|
||||||
|
GroupManager.logger.info("Don't forget to configure/mirror this world in config.yml.");
|
||||||
|
} else
|
||||||
|
GroupManager.logger.severe("Failed to configure this world.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -43,7 +43,6 @@ import org.bukkit.event.server.ServerListener;
|
|||||||
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.PermissionAttachmentInfo;
|
|
||||||
import org.bukkit.plugin.Plugin;
|
import org.bukkit.plugin.Plugin;
|
||||||
import org.bukkit.plugin.PluginManager;
|
import org.bukkit.plugin.PluginManager;
|
||||||
|
|
||||||
@ -79,13 +78,13 @@ public class BukkitPermissions {
|
|||||||
|
|
||||||
PlayerEvents playerEventListener = new PlayerEvents();
|
PlayerEvents playerEventListener = new PlayerEvents();
|
||||||
|
|
||||||
manager.registerEvent(Event.Type.PLAYER_JOIN, playerEventListener, Event.Priority.Normal, plugin);
|
manager.registerEvent(Event.Type.PLAYER_JOIN, playerEventListener, Event.Priority.Lowest, plugin);
|
||||||
manager.registerEvent(Event.Type.PLAYER_KICK, playerEventListener, Event.Priority.Normal, plugin);
|
manager.registerEvent(Event.Type.PLAYER_KICK, playerEventListener, Event.Priority.Lowest, plugin);
|
||||||
manager.registerEvent(Event.Type.PLAYER_QUIT, playerEventListener, Event.Priority.Normal, plugin);
|
manager.registerEvent(Event.Type.PLAYER_QUIT, playerEventListener, Event.Priority.Lowest, plugin);
|
||||||
|
|
||||||
manager.registerEvent(Event.Type.PLAYER_RESPAWN, playerEventListener, Event.Priority.Normal, plugin);
|
manager.registerEvent(Event.Type.PLAYER_RESPAWN, playerEventListener, Event.Priority.Lowest, plugin);
|
||||||
manager.registerEvent(Event.Type.PLAYER_TELEPORT, playerEventListener, Event.Priority.Normal, plugin);
|
manager.registerEvent(Event.Type.PLAYER_TELEPORT, playerEventListener, Event.Priority.Lowest, plugin);
|
||||||
manager.registerEvent(Event.Type.PLAYER_PORTAL, playerEventListener, Event.Priority.Normal, plugin);
|
manager.registerEvent(Event.Type.PLAYER_PORTAL, playerEventListener, Event.Priority.Lowest, plugin);
|
||||||
|
|
||||||
ServerListener serverListener = new BukkitEvents();
|
ServerListener serverListener = new BukkitEvents();
|
||||||
|
|
||||||
@ -93,7 +92,7 @@ public class BukkitPermissions {
|
|||||||
manager.registerEvent(Event.Type.PLUGIN_DISABLE, serverListener, Event.Priority.Normal, plugin);
|
manager.registerEvent(Event.Type.PLUGIN_DISABLE, serverListener, Event.Priority.Normal, plugin);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void collectPermissions() {
|
public void collectPermissions() {
|
||||||
registeredPermissions.clear();
|
registeredPermissions.clear();
|
||||||
for (Plugin bukkitPlugin : Bukkit.getServer().getPluginManager().getPlugins()) {
|
for (Plugin bukkitPlugin : Bukkit.getServer().getPluginManager().getPlugins()) {
|
||||||
for(Permission permission : bukkitPlugin.getDescription().getPermissions())
|
for(Permission permission : bukkitPlugin.getDescription().getPermissions())
|
||||||
@ -134,8 +133,8 @@ public class BukkitPermissions {
|
|||||||
Boolean value;
|
Boolean value;
|
||||||
for (Permission permission : registeredPermissions) {
|
for (Permission permission : registeredPermissions) {
|
||||||
value = worldData.getPermissionsHandler().checkUserPermission(user, permission.getName());
|
value = worldData.getPermissionsHandler().checkUserPermission(user, permission.getName());
|
||||||
|
if (value == true)
|
||||||
attachment.setPermission(permission, value);
|
attachment.setPermission(permission, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Add any missing permissions for this player (non bukkit plugins)
|
// Add any missing permissions for this player (non bukkit plugins)
|
||||||
@ -199,7 +198,7 @@ public class BukkitPermissions {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onPlayerPortal(PlayerPortalEvent event) { // will portal into another world
|
public void onPlayerPortal(PlayerPortalEvent event) { // will portal into another world
|
||||||
if(!event.getFrom().getWorld().equals(event.getTo().getWorld())){ // only if world actually changed
|
if(event.getTo() != null && !event.getFrom().getWorld().equals(event.getTo().getWorld())){ // only if world actually changed
|
||||||
updatePermissions(event.getPlayer(), event.getTo().getWorld().getName());
|
updatePermissions(event.getPlayer(), event.getTo().getWorld().getName());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -211,7 +210,7 @@ public class BukkitPermissions {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onPlayerTeleport(PlayerTeleportEvent event) { // can be teleported into another world
|
public void onPlayerTeleport(PlayerTeleportEvent event) { // can be teleported into another world
|
||||||
if (!event.getFrom().getWorld().equals(event.getTo().getWorld())) { // only if world actually changed
|
if (event.getTo() != null && !event.getFrom().getWorld().equals(event.getTo().getWorld())) { // only if world actually changed
|
||||||
updatePermissions(event.getPlayer(), event.getTo().getWorld().getName());
|
updatePermissions(event.getPlayer(), event.getTo().getWorld().getName());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Loading…
Reference in New Issue
Block a user