diff --git a/config.yml b/config.yml index 800d01a..2f501d5 100644 --- a/config.yml +++ b/config.yml @@ -47,6 +47,11 @@ store: # By default the inventories are saved to "plugin/LimitedCreative/inventories". # default: "inventories" folder: "inventories" + + # SeparateAdventureInventory + # When true, your players get a separate inventory when switching to adventure gamemode (2). Otherwise + # they have the default survival inventory while in adventure gamemode. + adventure: false limit: # LimitsEnabled diff --git a/plugin.yml b/plugin.yml index f358dba..1e0f0bd 100644 --- a/plugin.yml +++ b/plugin.yml @@ -1,6 +1,6 @@ name: LimitedCreative main: de.jaschastarke.minecraft.limitedcreative.Core -version: 1.2.5 +version: 1.3.0a softdepend: [WorldGuard, WorldEdit, MultiInv] dev-url: http://dev.bukkit.org/server-mods/limited-creative/ commands: diff --git a/pom.xml b/pom.xml index 1d69880..45334be 100644 --- a/pom.xml +++ b/pom.xml @@ -3,7 +3,7 @@ de.jaschastarke LimitedCreative LimitedCreative - 1.2.5 + 1.3.0a https://github.com/possi/LimitedCreative scm:git:git://github.com/possi/LimitedCreative.git @@ -68,7 +68,7 @@ org.bukkit bukkit - 1.2.5-R4.0 + 1.3.1-R0.1-SNAPSHOT com.sk89q diff --git a/src/de/jaschastarke/minecraft/limitedcreative/Configuration.java b/src/de/jaschastarke/minecraft/limitedcreative/Configuration.java index 2c30456..b7fb4e6 100644 --- a/src/de/jaschastarke/minecraft/limitedcreative/Configuration.java +++ b/src/de/jaschastarke/minecraft/limitedcreative/Configuration.java @@ -43,6 +43,7 @@ public class Configuration { public enum Option { STORECREATIVE("store.creative", true), CREATIVEARMOR("store.armor.enabled", true), + ADVENTUREINV("store.adventure", false), REGION_OPTIONAL("region.optional", true), REGION_REMEMBER("region.remember", true), BLOCKPICKUP("limit.pickup", true), @@ -127,6 +128,9 @@ public class Configuration { public String getInventoryFolder() { return c.getString("store.folder", "inventories"); } + public boolean getAdventureInv() { + return this.getBoolean(Option.ADVENTUREINV); + } public boolean getBlockPickupInCreative() { return this.getBoolean(Option.BLOCKPICKUP); } diff --git a/src/de/jaschastarke/minecraft/limitedcreative/Inventory.java b/src/de/jaschastarke/minecraft/limitedcreative/Inventory.java index 8860039..cf881f9 100644 --- a/src/de/jaschastarke/minecraft/limitedcreative/Inventory.java +++ b/src/de/jaschastarke/minecraft/limitedcreative/Inventory.java @@ -35,10 +35,11 @@ public class Inventory { public enum Target { SURVIVAL, - CREATIVE; + CREATIVE, + ADVENTURE; public static Target getTarget(GameMode gm) { - return gm == GameMode.CREATIVE ? Target.CREATIVE : Target.SURVIVAL; + return Target.valueOf(gm.name()); } } @@ -60,6 +61,10 @@ public class Inventory { Core.debug(getPlayer().getName()+": store inventory: "+getPlayer().getGameMode()); storage.store(this, Target.getTarget(getPlayer().getGameMode())); } + public void save(GameMode gm) { + Core.debug(getPlayer().getName()+": store inventory: "+gm); + storage.store(this, Target.getTarget(gm)); + } public void load() { load(getPlayer().getGameMode()); diff --git a/src/de/jaschastarke/minecraft/limitedcreative/LCPlayer.java b/src/de/jaschastarke/minecraft/limitedcreative/LCPlayer.java index cc31d8f..bcbbc12 100644 --- a/src/de/jaschastarke/minecraft/limitedcreative/LCPlayer.java +++ b/src/de/jaschastarke/minecraft/limitedcreative/LCPlayer.java @@ -195,20 +195,34 @@ public class LCPlayer { if (plugin.config.getPermissionToKeepInventory() && hasPermission(Perms.KEEPINVENTORY)) return true; getPlayer().closeInventory(); - if (gm != GameMode.CREATIVE || plugin.config.getStoreCreative()) - getInv().save(); - if (gm == GameMode.CREATIVE) { - if (plugin.config.getStoreCreative() && getInv().isStored(GameMode.CREATIVE)) { - getInv().load(GameMode.CREATIVE); - } else { - getInv().clear(); - } - setCreativeArmor(); - } else if (gm == GameMode.SURVIVAL) { - if (getInv().isStored(GameMode.SURVIVAL)) - getInv().load(GameMode.SURVIVAL); - } + GameMode cgm = getPlayer().getGameMode(); + if (gm == GameMode.ADVENTURE && !plugin.config.getAdventureInv()) + gm = GameMode.SURVIVAL; + if (cgm == GameMode.ADVENTURE && !plugin.config.getAdventureInv()) + cgm = GameMode.SURVIVAL; + + if (gm != cgm) { + if (gm != GameMode.CREATIVE || plugin.config.getStoreCreative()) { + getInv().save(cgm); + } + if (gm == GameMode.CREATIVE) { + if (plugin.config.getStoreCreative() && getInv().isStored(GameMode.CREATIVE)) { + getInv().load(GameMode.CREATIVE); + } else { + getInv().clear(); + } + setCreativeArmor(); + } else if (gm == GameMode.SURVIVAL) { + if (getInv().isStored(GameMode.SURVIVAL)) + getInv().load(GameMode.SURVIVAL); + } else if (gm == GameMode.ADVENTURE) { + if (getInv().isStored(GameMode.ADVENTURE)) + getInv().load(GameMode.ADVENTURE); + else + getInv().clear(); + } + } } return true; } diff --git a/src/de/jaschastarke/minecraft/limitedcreative/regions/GameModeFlag.java b/src/de/jaschastarke/minecraft/limitedcreative/regions/GameModeFlag.java index 30a305f..e43686f 100644 --- a/src/de/jaschastarke/minecraft/limitedcreative/regions/GameModeFlag.java +++ b/src/de/jaschastarke/minecraft/limitedcreative/regions/GameModeFlag.java @@ -23,6 +23,8 @@ public class GameModeFlag extends Flag { return GameMode.CREATIVE; } else if (input.equalsIgnoreCase("survival")) { return GameMode.SURVIVAL; + } else if (input.equalsIgnoreCase("adventure")) { + return GameMode.ADVENTURE; } else if (input.equalsIgnoreCase("none")) { return null; } else {