mirror of
https://github.com/PaperMC/Paper.git
synced 2024-11-29 19:52:55 +01:00
Expose API for managing and using GameRules. Adds BUKKIT-2757
This commit is contained in:
parent
59dc403a61
commit
9e4e2c62af
3 changed files with 42 additions and 14 deletions
|
@ -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();
|
||||
|
|
|
@ -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();
|
||||
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue