v0.8.1:
- Debug mode for the several issue tickets - Permission via WEPIF - Sign Interact Priority-Fix - MultiInv compatibility disable
This commit is contained in:
parent
295a93b384
commit
4fc58c86aa
12 changed files with 168 additions and 45 deletions
|
@ -2,6 +2,14 @@ basic:
|
||||||
loaded:
|
loaded:
|
||||||
worldguard: Successfully loaded with WorldGuard-Integration
|
worldguard: Successfully loaded with WorldGuard-Integration
|
||||||
no_worldguard: Successfully loaded (without WorldGuard)
|
no_worldguard: Successfully loaded (without WorldGuard)
|
||||||
|
feature:
|
||||||
|
store: separated inventories
|
||||||
|
limit: creative restrictions
|
||||||
|
region: creative regions
|
||||||
|
conflict: Due to conflict with the plugin {0}, the feature {1} is disabled
|
||||||
|
warning:
|
||||||
|
worldguard_not_found: WorldGuard isn''t found, the feature {0} is disabled
|
||||||
|
# double single-quote '' because of MessageFormater to insert {0}
|
||||||
command:
|
command:
|
||||||
player: player
|
player: player
|
||||||
switch:
|
switch:
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
name: LimitedCreative
|
name: LimitedCreative
|
||||||
main: de.jaschastarke.minecraft.limitedcreative.LimitedCreativeCore
|
main: de.jaschastarke.minecraft.limitedcreative.LimitedCreativeCore
|
||||||
version: 0.8-beta
|
version: 0.8.1-beta
|
||||||
softdepend: [WorldGuard]
|
softdepend: [WorldGuard, WorldEdit, MultiInv]
|
||||||
dev-url: http://dev.bukkit.org/server-mods/limited-creative/
|
dev-url: http://dev.bukkit.org/server-mods/limited-creative/
|
||||||
commands:
|
commands:
|
||||||
limitedcreative:
|
limitedcreative:
|
||||||
|
|
|
@ -26,6 +26,7 @@ import org.bukkit.command.CommandExecutor;
|
||||||
import org.bukkit.command.CommandSender;
|
import org.bukkit.command.CommandSender;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
|
import de.jaschastarke.minecraft.utils.Util;
|
||||||
import de.jaschastarke.minecraft.worldguard.CCommand;
|
import de.jaschastarke.minecraft.worldguard.CCommand;
|
||||||
import static de.jaschastarke.minecraft.utils.Locale.L;
|
import static de.jaschastarke.minecraft.utils.Locale.L;
|
||||||
|
|
||||||
|
@ -43,6 +44,7 @@ public class Commands {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
|
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
|
||||||
|
LimitedCreativeCore.debug(sender.getName() + ": /" + label + " " + Util.join(args));
|
||||||
if (args.length > 0) {
|
if (args.length > 0) {
|
||||||
Action act = null;
|
Action act = null;
|
||||||
try {
|
try {
|
||||||
|
@ -74,6 +76,7 @@ public class Commands {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
} catch (CommandException e) {
|
} catch (CommandException e) {
|
||||||
|
LimitedCreativeCore.debug("CommandException: "+e.getMessage());
|
||||||
sender.sendMessage(ChatColor.DARK_RED + e.getLocalizedMessage());
|
sender.sendMessage(ChatColor.DARK_RED + e.getLocalizedMessage());
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -84,11 +87,11 @@ public class Commands {
|
||||||
StringBuilder message = new StringBuilder();
|
StringBuilder message = new StringBuilder();
|
||||||
message.append("/"+c+" s[urvival] ["+L("command.player")+"] - "+L("command.switch.survival")+"\n");
|
message.append("/"+c+" s[urvival] ["+L("command.player")+"] - "+L("command.switch.survival")+"\n");
|
||||||
message.append("/"+c+" c[reative] ["+L("command.player")+"] - "+L("command.switch.creative")+"\n");
|
message.append("/"+c+" c[reative] ["+L("command.player")+"] - "+L("command.switch.creative")+"\n");
|
||||||
if (sender.hasPermission("limitedcreative.config"))
|
if (plugin.perm.hasPermission(sender, "limitedcreative.config"))
|
||||||
message.append("/"+c+" e[nable] "+L("command.config.overview")+"\n");
|
message.append("/"+c+" e[nable] "+L("command.config.overview")+"\n");
|
||||||
if (sender.hasPermission("limitedcreative.config"))
|
if (plugin.perm.hasPermission(sender, "limitedcreative.config"))
|
||||||
message.append("/"+c+" d[isable] "+L("command.config.overview")+"\n");
|
message.append("/"+c+" d[isable] "+L("command.config.overview")+"\n");
|
||||||
if (sender.hasPermission("limitedcreative.regions"))
|
if (plugin.perm.hasPermission(sender, "limitedcreative.regions"))
|
||||||
message.append("/"+c+" r[egion] "+L("command.worldguard.alias")+"\n");
|
message.append("/"+c+" r[egion] "+L("command.worldguard.alias")+"\n");
|
||||||
if (message.length() > 0) {
|
if (message.length() > 0) {
|
||||||
sender.sendMessage("Usage:");
|
sender.sendMessage("Usage:");
|
||||||
|
@ -107,10 +110,11 @@ public class Commands {
|
||||||
BLOCKSIGN,
|
BLOCKSIGN,
|
||||||
PERMISSIONS,
|
PERMISSIONS,
|
||||||
PERM_KEEPINVENTORY,
|
PERM_KEEPINVENTORY,
|
||||||
|
DEBUG,
|
||||||
};
|
};
|
||||||
|
|
||||||
private void setOption(CommandSender sender, String[] args, boolean b) throws CommandException {
|
private void setOption(CommandSender sender, String[] args, boolean b) throws CommandException {
|
||||||
if (sender instanceof Player && !sender.hasPermission("limitedcreative.config") && !sender.isOp()) {
|
if (sender instanceof Player && !plugin.perm.hasPermission(sender, "limitedcreative.config")) {
|
||||||
throw new LackingPermissionException();
|
throw new LackingPermissionException();
|
||||||
}
|
}
|
||||||
if (args.length > 2)
|
if (args.length > 2)
|
||||||
|
@ -156,7 +160,7 @@ public class Commands {
|
||||||
|
|
||||||
if (target == null) {
|
if (target == null) {
|
||||||
throw new InvalidCommandException("exception.command.playernotfound");
|
throw new InvalidCommandException("exception.command.playernotfound");
|
||||||
} else if (sender instanceof Player && sender != target && !sender.hasPermission("limitedcreative.switch_gamemode.other")) {
|
} else if (sender instanceof Player && sender != target && !plugin.perm.hasPermission(sender, "limitedcreative.switch_gamemode.other")) {
|
||||||
throw new LackingPermissionException();
|
throw new LackingPermissionException();
|
||||||
} else if (target.getGameMode() != gm) {
|
} else if (target.getGameMode() != gm) {
|
||||||
if (sender == target) {
|
if (sender == target) {
|
||||||
|
|
|
@ -51,7 +51,7 @@ public class Configuration {
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean getStoreEnabled() {
|
public boolean getStoreEnabled() {
|
||||||
return c.getBoolean("store.enabled", true);
|
return getTempStoreEnabled() && c.getBoolean("store.enabled", true);
|
||||||
}
|
}
|
||||||
public boolean getLimitEnabled() {
|
public boolean getLimitEnabled() {
|
||||||
return c.getBoolean("limit.enabled", true);
|
return c.getBoolean("limit.enabled", true);
|
||||||
|
@ -86,6 +86,11 @@ public class Configuration {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public void setDebug(boolean value) {
|
||||||
|
this.reload();
|
||||||
|
c.set("debug", value);
|
||||||
|
this.save();
|
||||||
|
}
|
||||||
public void setStoreCreative(boolean value) {
|
public void setStoreCreative(boolean value) {
|
||||||
this.reload();
|
this.reload();
|
||||||
c.set("store.creative", value);
|
c.set("store.creative", value);
|
||||||
|
@ -157,4 +162,12 @@ public class Configuration {
|
||||||
}
|
}
|
||||||
return list;
|
return list;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private boolean _store_enabled = true;
|
||||||
|
public void setTempStoreEnabled(boolean b) {
|
||||||
|
_store_enabled = b;
|
||||||
|
}
|
||||||
|
public boolean getTempStoreEnabled() {
|
||||||
|
return _store_enabled;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -59,9 +59,11 @@ public class LCPlayer {
|
||||||
private LCPlayer(Player pplayer) {
|
private LCPlayer(Player pplayer) {
|
||||||
player = pplayer;
|
player = pplayer;
|
||||||
_isRegionCreative = store.getBoolean(player.getName()+".region_creative", false) && player.getGameMode() == GameMode.CREATIVE;
|
_isRegionCreative = store.getBoolean(player.getName()+".region_creative", false) && player.getGameMode() == GameMode.CREATIVE;
|
||||||
if (player.getGameMode() == GameMode.CREATIVE && !this.isRegionCreative())
|
if (player.getGameMode() == GameMode.CREATIVE && !this.isRegionCreative()) {
|
||||||
|
LimitedCreativeCore.debug(player.getName() + " was already creative");
|
||||||
setPermanentCreative(true);
|
setPermanentCreative(true);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public Player getRaw() {
|
public Player getRaw() {
|
||||||
return player;
|
return player;
|
||||||
|
@ -82,14 +84,16 @@ public class LCPlayer {
|
||||||
}
|
}
|
||||||
|
|
||||||
public void changeGameMode(GameMode gm) throws LackingPermissionException {
|
public void changeGameMode(GameMode gm) throws LackingPermissionException {
|
||||||
if (!isRegionCreative() && !getRaw().hasPermission("limitedcreative.switch_gamemode")) {
|
if (!isRegionCreative() && !hasPermission("limitedcreative.switch_gamemode")) {
|
||||||
if (gm != GameMode.SURVIVAL || !getRaw().hasPermission("limitedcreative.switch_gamemode.backonly")) {
|
if (gm != GameMode.SURVIVAL || !hasPermission("limitedcreative.switch_gamemode.backonly")) {
|
||||||
|
LimitedCreativeCore.debug(player.getName() + " lacking permission /lc [cs]");
|
||||||
throw new Commands.LackingPermissionException();
|
throw new Commands.LackingPermissionException();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
getRaw().setGameMode(gm);
|
getRaw().setGameMode(gm);
|
||||||
}
|
}
|
||||||
public void setRegionCreative(boolean b) {
|
public void setRegionCreative(boolean b) {
|
||||||
|
LimitedCreativeCore.debug(player.getName() + " region creative: " + b);
|
||||||
if (b) {
|
if (b) {
|
||||||
store.set(player.getName()+".region_creative", true);
|
store.set(player.getName()+".region_creative", true);
|
||||||
} else {
|
} else {
|
||||||
|
@ -107,16 +111,18 @@ public class LCPlayer {
|
||||||
return _isPermanentCreative;
|
return _isPermanentCreative;
|
||||||
}
|
}
|
||||||
public void setPermanentCreative(boolean b) {
|
public void setPermanentCreative(boolean b) {
|
||||||
|
LimitedCreativeCore.debug(player.getName() + " permanent creative: " + b);
|
||||||
_isPermanentCreative = b;
|
_isPermanentCreative = b;
|
||||||
if (b)
|
if (b)
|
||||||
setRegionCreative(false);
|
setRegionCreative(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean onSetCreative() {
|
public boolean onSetCreative() {
|
||||||
|
LimitedCreativeCore.debug(player.getName() + " going into creative");
|
||||||
if (!this.isRegionCreative())
|
if (!this.isRegionCreative())
|
||||||
setPermanentCreative(true);
|
setPermanentCreative(true);
|
||||||
if (plugin.config.getStoreEnabled()) {
|
if (plugin.config.getStoreEnabled()) {
|
||||||
if (plugin.config.getPermissionToKeepInventory() && player.hasPermission("limitedcreative.keepinventory"))
|
if (plugin.config.getPermissionToKeepInventory() && hasPermission("limitedcreative.keepinventory"))
|
||||||
return true;
|
return true;
|
||||||
Inventory inv = new Inventory(player);
|
Inventory inv = new Inventory(player);
|
||||||
inv.save();
|
inv.save();
|
||||||
|
@ -129,15 +135,17 @@ public class LCPlayer {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
public boolean onSetSurvival() {
|
public boolean onSetSurvival() {
|
||||||
|
LimitedCreativeCore.debug(player.getName() + " going into survival");
|
||||||
if (isRegionCreative()) {
|
if (isRegionCreative()) {
|
||||||
if (!plugin.config.getRegionOptional()) {
|
if (!plugin.config.getRegionOptional()) {
|
||||||
getRaw().sendMessage(ChatColor.RED + L("exception.region.no_survival"));
|
getRaw().sendMessage(ChatColor.RED + L("exception.region.no_survival"));
|
||||||
|
LimitedCreativeCore.debug("... denied");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
setPermanentCreative(false);
|
setPermanentCreative(false);
|
||||||
if (plugin.config.getStoreEnabled()) {
|
if (plugin.config.getStoreEnabled()) {
|
||||||
if (plugin.config.getPermissionToKeepInventory() && player.hasPermission("limitedcreative.keepinventory"))
|
if (plugin.config.getPermissionToKeepInventory() && hasPermission("limitedcreative.keepinventory"))
|
||||||
return true;
|
return true;
|
||||||
Inventory inv = new Inventory(player);
|
Inventory inv = new Inventory(player);
|
||||||
if (plugin.config.getStoreCreative()) {
|
if (plugin.config.getStoreCreative()) {
|
||||||
|
@ -150,14 +158,14 @@ public class LCPlayer {
|
||||||
}
|
}
|
||||||
public void onDropItem(PlayerDropItemEvent event) {
|
public void onDropItem(PlayerDropItemEvent event) {
|
||||||
if (player.getGameMode() == GameMode.CREATIVE) {
|
if (player.getGameMode() == GameMode.CREATIVE) {
|
||||||
if (plugin.config.getPermissionsEnabled() && event.getPlayer().hasPermission("limitedcreative.nolimit.drop"))
|
if (plugin.config.getPermissionsEnabled() && hasPermission("limitedcreative.nolimit.drop"))
|
||||||
return;
|
return;
|
||||||
event.getItemDrop().remove();
|
event.getItemDrop().remove();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
public void onPickupItem(PlayerPickupItemEvent event) {
|
public void onPickupItem(PlayerPickupItemEvent event) {
|
||||||
if (player.getGameMode() == GameMode.CREATIVE && plugin.config.getBlockPickupInCreative()) {
|
if (player.getGameMode() == GameMode.CREATIVE && plugin.config.getBlockPickupInCreative()) {
|
||||||
if (plugin.config.getPermissionsEnabled() && event.getPlayer().hasPermission("limitedcreative.nolimit.pickup"))
|
if (plugin.config.getPermissionsEnabled() && hasPermission("limitedcreative.nolimit.pickup"))
|
||||||
return;
|
return;
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
}
|
}
|
||||||
|
@ -165,7 +173,7 @@ public class LCPlayer {
|
||||||
|
|
||||||
public void onDie(EntityDeathEvent event) {
|
public void onDie(EntityDeathEvent event) {
|
||||||
if (player.getGameMode() == GameMode.CREATIVE) {
|
if (player.getGameMode() == GameMode.CREATIVE) {
|
||||||
if (!plugin.config.getPermissionsEnabled() || !player.hasPermission("limitedcreative.nolimit.drop")) {
|
if (!plugin.config.getPermissionsEnabled() || !hasPermission("limitedcreative.nolimit.drop")) {
|
||||||
event.getDrops().clear();
|
event.getDrops().clear();
|
||||||
tempinv = Items.storeInventory(player.getInventory());
|
tempinv = Items.storeInventory(player.getInventory());
|
||||||
}
|
}
|
||||||
|
@ -173,7 +181,7 @@ public class LCPlayer {
|
||||||
}
|
}
|
||||||
public void onRespawn(PlayerRespawnEvent event) {
|
public void onRespawn(PlayerRespawnEvent event) {
|
||||||
if (player.getGameMode() == GameMode.CREATIVE) {
|
if (player.getGameMode() == GameMode.CREATIVE) {
|
||||||
if (!plugin.config.getPermissionsEnabled() || !player.hasPermission("limitedcreative.nolimit.drop")) {
|
if (!plugin.config.getPermissionsEnabled() || !hasPermission("limitedcreative.nolimit.drop")) {
|
||||||
if (tempinv != null) {
|
if (tempinv != null) {
|
||||||
Items.restoreInventory(player.getInventory(), tempinv);
|
Items.restoreInventory(player.getInventory(), tempinv);
|
||||||
}
|
}
|
||||||
|
@ -187,12 +195,13 @@ public class LCPlayer {
|
||||||
// its PVP
|
// its PVP
|
||||||
Player attacker = (Player) event.getDamager();
|
Player attacker = (Player) event.getDamager();
|
||||||
if (attacker.getGameMode() == GameMode.CREATIVE) {
|
if (attacker.getGameMode() == GameMode.CREATIVE) {
|
||||||
if (!plugin.config.getPermissionsEnabled() || !attacker.hasPermission("limitedcreative.nolimit.pvp")) {
|
if (!plugin.config.getPermissionsEnabled() || !get(attacker).hasPermission("limitedcreative.nolimit.pvp")) {
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
|
return; // skip next check
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (player.getGameMode() == GameMode.CREATIVE) {
|
if (player.getGameMode() == GameMode.CREATIVE) {
|
||||||
if (!plugin.config.getPermissionsEnabled() || !player.hasPermission("limitedcreative.nolimit.pvp")) {
|
if (!plugin.config.getPermissionsEnabled() || !hasPermission("limitedcreative.nolimit.pvp")) {
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -201,7 +210,7 @@ public class LCPlayer {
|
||||||
public void onChestAccess(PlayerInteractEvent event) {
|
public void onChestAccess(PlayerInteractEvent event) {
|
||||||
if (player.getGameMode() != GameMode.CREATIVE)
|
if (player.getGameMode() != GameMode.CREATIVE)
|
||||||
return;
|
return;
|
||||||
if (plugin.config.getPermissionsEnabled() && event.getPlayer().hasPermission("limitedcreative.nolimit.chest"))
|
if (plugin.config.getPermissionsEnabled() && hasPermission("limitedcreative.nolimit.chest"))
|
||||||
return;
|
return;
|
||||||
event.getPlayer().sendMessage(L("blocked.chest"));
|
event.getPlayer().sendMessage(L("blocked.chest"));
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
|
@ -209,7 +218,7 @@ public class LCPlayer {
|
||||||
public void onChestAccess(PlayerInteractEntityEvent event) { // chest-minecarts are different events
|
public void onChestAccess(PlayerInteractEntityEvent event) { // chest-minecarts are different events
|
||||||
if (player.getGameMode() != GameMode.CREATIVE)
|
if (player.getGameMode() != GameMode.CREATIVE)
|
||||||
return;
|
return;
|
||||||
if (plugin.config.getPermissionsEnabled() && event.getPlayer().hasPermission("limitedcreative.nolimit.chest"))
|
if (plugin.config.getPermissionsEnabled() && hasPermission("limitedcreative.nolimit.chest"))
|
||||||
return;
|
return;
|
||||||
event.getPlayer().sendMessage(L("blocked.chest"));
|
event.getPlayer().sendMessage(L("blocked.chest"));
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
|
@ -217,7 +226,7 @@ public class LCPlayer {
|
||||||
public void onSignAccess(PlayerInteractEvent event) {
|
public void onSignAccess(PlayerInteractEvent event) {
|
||||||
if (!plugin.config.getSignBlock() || player.getGameMode() != GameMode.CREATIVE)
|
if (!plugin.config.getSignBlock() || player.getGameMode() != GameMode.CREATIVE)
|
||||||
return;
|
return;
|
||||||
if (plugin.config.getPermissionsEnabled() && event.getPlayer().hasPermission("limitedcreative.nolimit.sign"))
|
if (plugin.config.getPermissionsEnabled() && hasPermission("limitedcreative.nolimit.sign"))
|
||||||
return;
|
return;
|
||||||
event.getPlayer().sendMessage(L("blocked.sign"));
|
event.getPlayer().sendMessage(L("blocked.sign"));
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
|
@ -274,4 +283,8 @@ public class LCPlayer {
|
||||||
player.getLocation().getZ()));
|
player.getLocation().getZ()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean hasPermission(String permission) {
|
||||||
|
return plugin.perm.hasPermission(this.getRaw(), permission);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -26,11 +26,13 @@ import de.jaschastarke.minecraft.limitedcreative.listeners.LimitListener;
|
||||||
import de.jaschastarke.minecraft.limitedcreative.listeners.MainListener;
|
import de.jaschastarke.minecraft.limitedcreative.listeners.MainListener;
|
||||||
import de.jaschastarke.minecraft.limitedcreative.regions.WorldGuardIntegration;
|
import de.jaschastarke.minecraft.limitedcreative.regions.WorldGuardIntegration;
|
||||||
import de.jaschastarke.minecraft.utils.Locale;
|
import de.jaschastarke.minecraft.utils.Locale;
|
||||||
|
import de.jaschastarke.minecraft.utils.Permissions;
|
||||||
|
|
||||||
|
|
||||||
public class LimitedCreativeCore extends JavaPlugin {
|
public class LimitedCreativeCore extends JavaPlugin {
|
||||||
public final Logger logger = Logger.getLogger("Minecraft");
|
public final Logger logger = Logger.getLogger("Minecraft");
|
||||||
public Configuration config;
|
public Configuration config;
|
||||||
|
public Permissions perm;
|
||||||
public WorldGuardIntegration worldguard;
|
public WorldGuardIntegration worldguard;
|
||||||
public static LimitedCreativeCore plugin;
|
public static LimitedCreativeCore plugin;
|
||||||
public NoBlockItemSpawn spawnblock;
|
public NoBlockItemSpawn spawnblock;
|
||||||
|
@ -41,29 +43,43 @@ public class LimitedCreativeCore extends JavaPlugin {
|
||||||
worldguard = null;
|
worldguard = null;
|
||||||
config = null;
|
config = null;
|
||||||
spawnblock = null;
|
spawnblock = null;
|
||||||
|
try {
|
||||||
Locale.unload();
|
Locale.unload();
|
||||||
//info("cleanly unloaded.");
|
} catch (NoClassDefFoundError e) {} // prevent unload issue
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onEnable() {
|
public void onEnable() {
|
||||||
plugin = this;
|
plugin = this;
|
||||||
config = new Configuration(this);
|
config = new Configuration(this);
|
||||||
|
perm = new Permissions(this);
|
||||||
|
|
||||||
new Locale(this);
|
new Locale(this);
|
||||||
|
|
||||||
spawnblock = new NoBlockItemSpawn();
|
spawnblock = new NoBlockItemSpawn();
|
||||||
|
|
||||||
|
// 1st Feature: Separated Inventories Storage
|
||||||
|
if (config.getStoreEnabled() && getServer().getPluginManager().isPluginEnabled("MultiInv")) {
|
||||||
|
warn(L("basic.conflict", "MultiInv", L("basic.feature.store")));
|
||||||
|
config.setTempStoreEnabled(false);
|
||||||
|
}
|
||||||
getServer().getPluginManager().registerEvents(new MainListener(this), this);
|
getServer().getPluginManager().registerEvents(new MainListener(this), this);
|
||||||
|
|
||||||
|
// 2nd Feature: Creative Limitations (Restrictions)
|
||||||
if (config.getLimitEnabled())
|
if (config.getLimitEnabled())
|
||||||
getServer().getPluginManager().registerEvents(new LimitListener(this), this);
|
getServer().getPluginManager().registerEvents(new LimitListener(this), this);
|
||||||
|
|
||||||
if (config.getRegionEnabled() && WorldGuardIntegration.available()) {
|
// 3rd Feature: WorldGuard Region-Support
|
||||||
|
if (config.getRegionEnabled() && getServer().getPluginManager().isPluginEnabled("WorldGuard")) {
|
||||||
worldguard = new WorldGuardIntegration(this);
|
worldguard = new WorldGuardIntegration(this);
|
||||||
} else if(config.getRegionEnabled()) {
|
} else if(config.getRegionEnabled()) {
|
||||||
warn(L("warning.no_worldguard_found"));
|
warn(L("basic.warning.worldguard_not_found", L("basic.feature.region")));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
debug("Store: " + config.getStoreEnabled());
|
||||||
|
debug("Limit: " + config.getLimitEnabled());
|
||||||
|
debug("Region: " + (worldguard != null));
|
||||||
|
|
||||||
Commands.register(this);
|
Commands.register(this);
|
||||||
|
|
||||||
PluginDescriptionFile df = this.getDescription();
|
PluginDescriptionFile df = this.getDescription();
|
||||||
|
|
|
@ -28,6 +28,7 @@ import org.bukkit.entity.Player;
|
||||||
import org.bukkit.entity.StorageMinecart;
|
import org.bukkit.entity.StorageMinecart;
|
||||||
import org.bukkit.event.Event;
|
import org.bukkit.event.Event;
|
||||||
import org.bukkit.event.EventHandler;
|
import org.bukkit.event.EventHandler;
|
||||||
|
import org.bukkit.event.EventPriority;
|
||||||
import org.bukkit.event.Listener;
|
import org.bukkit.event.Listener;
|
||||||
import org.bukkit.event.block.Action;
|
import org.bukkit.event.block.Action;
|
||||||
import org.bukkit.event.block.BlockBreakEvent;
|
import org.bukkit.event.block.BlockBreakEvent;
|
||||||
|
@ -67,12 +68,13 @@ public class LimitListener implements Listener {
|
||||||
LCPlayer.get(event.getPlayer()).onPickupItem(event);
|
LCPlayer.get(event.getPlayer()).onPickupItem(event);
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler
|
@EventHandler(priority=EventPriority.LOWEST)
|
||||||
public void onPlayerInteract(PlayerInteractEvent event) {
|
public void onPlayerInteract(PlayerInteractEvent event) {
|
||||||
if (MainListener.isCancelled(event) || event.getPlayer().getGameMode() != GameMode.CREATIVE)
|
if (MainListener.isCancelled(event) || event.getPlayer().getGameMode() != GameMode.CREATIVE)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (!plugin.config.getPermissionsEnabled() || !event.getPlayer().hasPermission("limitedcreative.nolimit.use")) {
|
LCPlayer player = LCPlayer.get(event.getPlayer());
|
||||||
|
if (!plugin.config.getPermissionsEnabled() || !player.hasPermission("limitedcreative.nolimit.use")) {
|
||||||
if (event.getItem() != null && plugin.config.getBlockedUse().contains(event.getItem().getType())) {
|
if (event.getItem() != null && plugin.config.getBlockedUse().contains(event.getItem().getType())) {
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
event.setUseItemInHand(Event.Result.DENY);
|
event.setUseItemInHand(Event.Result.DENY);
|
||||||
|
@ -87,19 +89,20 @@ public class LimitListener implements Listener {
|
||||||
Block block = event.getClickedBlock();
|
Block block = event.getClickedBlock();
|
||||||
|
|
||||||
if (block.getState() instanceof ContainerBlock) {
|
if (block.getState() instanceof ContainerBlock) {
|
||||||
LCPlayer.get(event.getPlayer()).onChestAccess(event);
|
player.onChestAccess(event);
|
||||||
}
|
}
|
||||||
if (block.getState() instanceof Sign) {
|
if (block.getState() instanceof Sign) {
|
||||||
LCPlayer.get(event.getPlayer()).onSignAccess(event);
|
player.onSignAccess(event);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler
|
@EventHandler(priority=EventPriority.LOWEST)
|
||||||
public void onPlayerInteractEntity(PlayerInteractEntityEvent event) {
|
public void onPlayerInteractEntity(PlayerInteractEntityEvent event) {
|
||||||
if (event.isCancelled() || event.getPlayer().getGameMode() != GameMode.CREATIVE)
|
if (event.isCancelled() || event.getPlayer().getGameMode() != GameMode.CREATIVE)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (!plugin.config.getPermissionsEnabled() || !event.getPlayer().hasPermission("limitedcreative.nolimit.use")) {
|
LCPlayer player = LCPlayer.get(event.getPlayer());
|
||||||
|
if (!plugin.config.getPermissionsEnabled() || !player.hasPermission("limitedcreative.nolimit.use")) {
|
||||||
if (event.getPlayer().getItemInHand() != null && plugin.config.getBlockedUse().contains(event.getPlayer().getItemInHand().getType())) {
|
if (event.getPlayer().getItemInHand() != null && plugin.config.getBlockedUse().contains(event.getPlayer().getItemInHand().getType())) {
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
event.getPlayer().sendMessage(L("blocked.use"));
|
event.getPlayer().sendMessage(L("blocked.use"));
|
||||||
|
@ -110,7 +113,7 @@ public class LimitListener implements Listener {
|
||||||
Entity entity = event.getRightClicked();
|
Entity entity = event.getRightClicked();
|
||||||
|
|
||||||
if (entity instanceof StorageMinecart) {
|
if (entity instanceof StorageMinecart) {
|
||||||
LCPlayer.get(event.getPlayer()).onChestAccess(event);
|
player.onChestAccess(event);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -124,7 +127,7 @@ public class LimitListener implements Listener {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler
|
@EventHandler(priority=EventPriority.LOW)
|
||||||
public void onEntityDeath(EntityDeathEvent event) {
|
public void onEntityDeath(EntityDeathEvent event) {
|
||||||
if (event.getEntity() instanceof Player) {
|
if (event.getEntity() instanceof Player) {
|
||||||
Player player = (Player) event.getEntity();
|
Player player = (Player) event.getEntity();
|
||||||
|
@ -137,14 +140,15 @@ public class LimitListener implements Listener {
|
||||||
if (event.isCancelled())
|
if (event.isCancelled())
|
||||||
return;
|
return;
|
||||||
if (event.getPlayer().getGameMode() == GameMode.CREATIVE) {
|
if (event.getPlayer().getGameMode() == GameMode.CREATIVE) {
|
||||||
if (!plugin.config.getPermissionsEnabled() || !event.getPlayer().hasPermission("limitedcreative.nolimit.break")) {
|
LCPlayer player = LCPlayer.get(event.getPlayer());
|
||||||
|
if (!plugin.config.getPermissionsEnabled() || !player.hasPermission("limitedcreative.nolimit.break")) {
|
||||||
if (plugin.config.getBlockedBreaks().contains(event.getBlock().getType())) {
|
if (plugin.config.getBlockedBreaks().contains(event.getBlock().getType())) {
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
event.getPlayer().sendMessage(L("blocked.break"));
|
event.getPlayer().sendMessage(L("blocked.break"));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (plugin.config.getPermissionsEnabled() && event.getPlayer().hasPermission("limitedcreative.nolimit.drop"))
|
if (plugin.config.getPermissionsEnabled() && player.hasPermission("limitedcreative.nolimit.drop"))
|
||||||
return;
|
return;
|
||||||
// Prevent dropping of doors and beds when destroying the wrong part
|
// Prevent dropping of doors and beds when destroying the wrong part
|
||||||
Block block = event.getBlock();
|
Block block = event.getBlock();
|
||||||
|
@ -175,7 +179,8 @@ public class LimitListener implements Listener {
|
||||||
if (event.isCancelled())
|
if (event.isCancelled())
|
||||||
return;
|
return;
|
||||||
if (event.getPlayer().getGameMode() == GameMode.CREATIVE) {
|
if (event.getPlayer().getGameMode() == GameMode.CREATIVE) {
|
||||||
if (!plugin.config.getPermissionsEnabled() || !event.getPlayer().hasPermission("limitedcreative.nolimit.use")) {
|
LCPlayer player = LCPlayer.get(event.getPlayer());
|
||||||
|
if (!plugin.config.getPermissionsEnabled() || !player.hasPermission("limitedcreative.nolimit.use")) {
|
||||||
if (plugin.config.getBlockedUse().contains(event.getBlock().getType())) {
|
if (plugin.config.getBlockedUse().contains(event.getBlock().getType())) {
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
event.getPlayer().sendMessage(L("blocked.place"));
|
event.getPlayer().sendMessage(L("blocked.place"));
|
||||||
|
|
|
@ -42,10 +42,6 @@ public class WorldGuardIntegration {
|
||||||
plugin.getServer().getPluginManager().registerEvents(new RegionListener(this), plugin);
|
plugin.getServer().getPluginManager().registerEvents(new RegionListener(this), plugin);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static boolean available() {
|
|
||||||
return LimitedCreativeCore.plugin.getServer().getPluginManager().getPlugin("WorldGuard") != null;
|
|
||||||
}
|
|
||||||
|
|
||||||
public CRegionManager getRegionManager() {
|
public CRegionManager getRegionManager() {
|
||||||
return rm;
|
return rm;
|
||||||
}
|
}
|
||||||
|
|
48
src/de/jaschastarke/minecraft/utils/Permissions.java
Normal file
48
src/de/jaschastarke/minecraft/utils/Permissions.java
Normal file
|
@ -0,0 +1,48 @@
|
||||||
|
package de.jaschastarke.minecraft.utils;
|
||||||
|
|
||||||
|
import org.bukkit.command.CommandSender;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.plugin.java.JavaPlugin;
|
||||||
|
|
||||||
|
import de.jaschastarke.minecraft.limitedcreative.LimitedCreativeCore;
|
||||||
|
import de.jaschastarke.minecraft.worldedit.PermissionsBridge;
|
||||||
|
|
||||||
|
public class Permissions {
|
||||||
|
protected JavaPlugin plugin = null;
|
||||||
|
protected PermissionsBridge pif = null;
|
||||||
|
|
||||||
|
public Permissions(JavaPlugin plugin) {
|
||||||
|
this.plugin = plugin;
|
||||||
|
try {
|
||||||
|
// because worldedit may be not loaded as plugin, just as library, we check that way
|
||||||
|
Class.forName("com.sk89q.wepif.PermissionsResolverManager", false, plugin.getClass().getClassLoader());
|
||||||
|
pif = new PermissionsBridge(plugin);
|
||||||
|
} catch (ClassNotFoundException e) {}
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean hasPermission(Player player, String permission) {
|
||||||
|
boolean ret = false;
|
||||||
|
if (pif != null) {
|
||||||
|
ret = pif.hasPermission(player, permission);
|
||||||
|
} else {
|
||||||
|
// bukkit permission fallback
|
||||||
|
ret = player.hasPermission(permission);
|
||||||
|
}
|
||||||
|
debug(player, permission, ret);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean hasPermission(CommandSender sender, String permission) {
|
||||||
|
if (sender instanceof Player) {
|
||||||
|
return hasPermission((Player) sender, permission);
|
||||||
|
} else {
|
||||||
|
debug(sender, permission, true);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void debug(CommandSender player, String permission, boolean result) {
|
||||||
|
if (plugin instanceof LimitedCreativeCore && ((LimitedCreativeCore) plugin).config.getDebug())
|
||||||
|
LimitedCreativeCore.debug("hasPermission: " + player.getName() + " - " + permission + " - " + result);
|
||||||
|
}
|
||||||
|
}
|
|
@ -78,6 +78,9 @@ final public class Util {
|
||||||
return join(list, " ", from, range);
|
return join(list, " ", from, range);
|
||||||
}
|
}
|
||||||
public static String join(String[] list, int from) {
|
public static String join(String[] list, int from) {
|
||||||
return join(list, " ", from, from);
|
return join(list, " ", from, list.length - from);
|
||||||
|
}
|
||||||
|
public static String join(String[] list) {
|
||||||
|
return join(list, " ", 0, list.length);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,17 @@
|
||||||
|
package de.jaschastarke.minecraft.worldedit;
|
||||||
|
|
||||||
|
import org.bukkit.OfflinePlayer;
|
||||||
|
import org.bukkit.plugin.java.JavaPlugin;
|
||||||
|
|
||||||
|
import com.sk89q.wepif.PermissionsResolverManager;
|
||||||
|
|
||||||
|
public class PermissionsBridge {
|
||||||
|
protected com.sk89q.wepif.PermissionsResolverManager pif;
|
||||||
|
public PermissionsBridge(JavaPlugin plugin) {
|
||||||
|
PermissionsResolverManager.initialize(plugin);
|
||||||
|
pif = PermissionsResolverManager.getInstance();
|
||||||
|
}
|
||||||
|
public boolean hasPermission(OfflinePlayer sender, String permission) {
|
||||||
|
return pif.hasPermission(sender, permission);
|
||||||
|
}
|
||||||
|
}
|
|
@ -62,7 +62,7 @@ public class CCommand implements CommandExecutor {
|
||||||
if (args.length < 2) {
|
if (args.length < 2) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
if (!sender.hasPermission("limitedcreative.regions")) {
|
if (!wg.hasPermission(sender, "limitedcreative.regions")) {
|
||||||
sender.sendMessage(ChatColor.DARK_RED + L("exception.command.lackingpermission"));
|
sender.sendMessage(ChatColor.DARK_RED + L("exception.command.lackingpermission"));
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue