summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorfeildmaster <admin@feildmaster.com>2012-10-30 21:24:48 -0500
committerEvilSeph <evilseph@gmail.com>2012-10-31 03:40:43 -0400
commit9e4e2c62af6b6d12cc6a15cbf117d0a7586372c6 (patch)
tree568f95e09fd51a84bcc314962209d58e2682c163 /src
parent59dc403a61e4aec5f127fbbc7e1a5a66970f97f1 (diff)
downloadcraftbukkit-9e4e2c62af6b6d12cc6a15cbf117d0a7586372c6.tar
craftbukkit-9e4e2c62af6b6d12cc6a15cbf117d0a7586372c6.tar.gz
craftbukkit-9e4e2c62af6b6d12cc6a15cbf117d0a7586372c6.tar.lz
craftbukkit-9e4e2c62af6b6d12cc6a15cbf117d0a7586372c6.tar.xz
craftbukkit-9e4e2c62af6b6d12cc6a15cbf117d0a7586372c6.zip
Expose API for managing and using GameRules. Adds BUKKIT-2757
Diffstat (limited to 'src')
-rw-r--r--src/main/java/net/minecraft/server/EntityPlayer.java29
-rw-r--r--src/main/java/net/minecraft/server/WorldServer.java5
-rw-r--r--src/main/java/org/bukkit/craftbukkit/CraftWorld.java22
3 files changed, 42 insertions, 14 deletions
diff --git a/src/main/java/net/minecraft/server/EntityPlayer.java b/src/main/java/net/minecraft/server/EntityPlayer.java
index 923e0813..2ceeac08 100644
--- a/src/main/java/net/minecraft/server/EntityPlayer.java
+++ b/src/main/java/net/minecraft/server/EntityPlayer.java
@@ -230,16 +230,19 @@ public class EntityPlayer extends EntityHuman implements ICrafting {
}
java.util.List<org.bukkit.inventory.ItemStack> loot = new java.util.ArrayList<org.bukkit.inventory.ItemStack>();
+ boolean keepInventory = this.world.getGameRules().getBoolean("keepInventory");
- for (int i = 0; i < this.inventory.items.length; ++i) {
- if (this.inventory.items[i] != null) {
- loot.add(new CraftItemStack(this.inventory.items[i]));
+ if (!keepInventory) {
+ for (int i = 0; i < this.inventory.items.length; ++i) {
+ if (this.inventory.items[i] != null) {
+ loot.add(new CraftItemStack(this.inventory.items[i]));
+ }
}
- }
- for (int i = 0; i < this.inventory.armor.length; ++i) {
- if (this.inventory.armor[i] != null) {
- loot.add(new CraftItemStack(this.inventory.armor[i]));
+ for (int i = 0; i < this.inventory.armor.length; ++i) {
+ if (this.inventory.armor[i] != null) {
+ loot.add(new CraftItemStack(this.inventory.armor[i]));
+ }
}
}
@@ -252,12 +255,14 @@ public class EntityPlayer extends EntityHuman implements ICrafting {
}
// CraftBukkit - we clean the player's inventory after the EntityDeathEvent is called so plugins can get the exact state of the inventory.
- for (int i = 0; i < this.inventory.items.length; ++i) {
- this.inventory.items[i] = null;
- }
+ if (!keepInventory) {
+ for (int i = 0; i < this.inventory.items.length; ++i) {
+ this.inventory.items[i] = null;
+ }
- for (int i = 0; i < this.inventory.armor.length; ++i) {
- this.inventory.armor[i] = null;
+ for (int i = 0; i < this.inventory.armor.length; ++i) {
+ this.inventory.armor[i] = null;
+ }
}
this.closeInventory();
diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java
index bb17c7e1..f9e246c7 100644
--- a/src/main/java/net/minecraft/server/WorldServer.java
+++ b/src/main/java/net/minecraft/server/WorldServer.java
@@ -767,11 +767,12 @@ public class WorldServer extends World implements org.bukkit.BlockChangeDelegate
explosion.b = flag1;
explosion.a();
explosion.a(false);
+ */
+ // CraftBukkit end - TODO: Check if explosions are still properly implemented
+
if (!flag1) {
explosion.blocks.clear();
}
- */
- // CraftBukkit end - TODO: Check if explosions are still properly implemented
Iterator iterator = this.players.iterator();
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
index 2ca3078d..5855b549 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
@@ -1197,4 +1197,26 @@ public class CraftWorld implements World {
getHandle().makeSound(x, y, z, CraftSound.getSound(sound), volume, pitch);
}
+
+ public String getGameRuleValue(String rule) {
+ return getHandle().getGameRules().get(rule);
+ }
+
+ public boolean setGameRuleValue(String rule, String value) {
+ // No null values allowed
+ if (rule == null || value == null) return false;
+
+ if (!isGameRule(rule)) return false;
+
+ getHandle().getGameRules().set(rule, value);
+ return true;
+ }
+
+ public String[] getGameRules() {
+ return getHandle().getGameRules().b();
+ }
+
+ public boolean isGameRule(String rule) {
+ return getHandle().getGameRules().e(rule);
+ }
}