diff --git a/src/main/java/com/comandante/creeper/ConfigureNpc.java b/src/main/java/com/comandante/creeper/ConfigureNpc.java
index 9e4277fe057b3c84091926755694a46980d6f72a..85d1f95c13b7e65c0f5f6b06d8d7bf67297c1b23 100755
--- a/src/main/java/com/comandante/creeper/ConfigureNpc.java
+++ b/src/main/java/com/comandante/creeper/ConfigureNpc.java
@@ -445,6 +445,6 @@ public class ConfigureNpc {
         SpellRegistry.addSpell(new ClumsinessSpell(gameManager));
         SpellRegistry.addSpell(new RestoreSpell(gameManager));
         SpellRegistry.addSpell(new AidsSpell(gameManager));
-        SpellRegistry.addSpell(new BlackholeSpell(gameManager));
+        SpellRegistry.addSpell(new BlackHoleSpell(gameManager));
     }
 }
diff --git a/src/main/java/com/comandante/creeper/Items/Loot.java b/src/main/java/com/comandante/creeper/Items/Loot.java
index ff21ac250f4f5dee7268c935bf22b0dfd202e0ad..c45ea8e9986b819519eb1579bc4b98e699d7808d 100644
--- a/src/main/java/com/comandante/creeper/Items/Loot.java
+++ b/src/main/java/com/comandante/creeper/Items/Loot.java
@@ -6,10 +6,10 @@ import java.util.Set;
 public class Loot implements Serializable {
 
     private final Set<ItemType> items;
-    private final int lootGoldMax;
-    private final int lootGoldMin;
+    private final long lootGoldMax;
+    private final long lootGoldMin;
 
-    public Loot(int lootGoldMin, int lootGoldMax, Set<ItemType> items) {
+    public Loot(long lootGoldMin, long lootGoldMax, Set<ItemType> items) {
         this.items = items;
         this.lootGoldMax = lootGoldMax;
         this.lootGoldMin = lootGoldMin;
@@ -19,11 +19,11 @@ public class Loot implements Serializable {
         return items;
     }
 
-    public int getLootGoldMax() {
+    public long getLootGoldMax() {
         return lootGoldMax;
     }
 
-    public int getLootGoldMin() {
+    public long getLootGoldMin() {
         return lootGoldMin;
     }
 }
diff --git a/src/main/java/com/comandante/creeper/Items/LootManager.java b/src/main/java/com/comandante/creeper/Items/LootManager.java
index cd7e2f97a64bb38661e9b941f2858a0316736f30..8801134428784ea65475f8a4df693c7098eb4368 100644
--- a/src/main/java/com/comandante/creeper/Items/LootManager.java
+++ b/src/main/java/com/comandante/creeper/Items/LootManager.java
@@ -2,6 +2,7 @@ package com.comandante.creeper.Items;
 
 import com.comandante.creeper.managers.GameManager;
 import com.google.common.collect.Sets;
+import org.apache.commons.lang.math.JVMRandom;
 
 import java.util.Random;
 import java.util.Set;
@@ -16,8 +17,8 @@ public class LootManager {
 
     private final Random  random = new Random();
 
-    private int randInt(int min, int max) {
-        return random.nextInt((max - min) + 1) + min;
+    private long randInt(long min, long max) {
+        return JVMRandom.nextLong((max - min) + 1) + min;
     }
 
     public boolean lootDropSuccess(double percent) {
@@ -27,7 +28,7 @@ public class LootManager {
         return randomValue <= percent;
     }
 
-    public int lootGoldAmountReturn(Loot loot) {
+    public long lootGoldAmountReturn(Loot loot) {
         return randInt(loot.getLootGoldMin(), loot.getLootGoldMax());
     }
 
diff --git a/src/main/java/com/comandante/creeper/command/Command.java b/src/main/java/com/comandante/creeper/command/Command.java
index 83cbc66592d034689429c08fb046fa05cb85b999..43a1901549b7ada1240dd9dada21e7281266a9b4 100644
--- a/src/main/java/com/comandante/creeper/command/Command.java
+++ b/src/main/java/com/comandante/creeper/command/Command.java
@@ -163,4 +163,16 @@ public abstract class Command extends SimpleChannelUpstreamHandler {
         // assumes the target class has a no-args Constructor
         return clazz.getConstructor(GameManager.class).newInstance(gameManager);
     }
+
+    public static boolean isLong(String s) {
+        try {
+            Long.parseLong(s);
+        } catch(NumberFormatException e) {
+            return false;
+        } catch(NullPointerException e) {
+            return false;
+        }
+        // only got here if we didn't return false
+        return true;
+    }
 }
\ No newline at end of file
diff --git a/src/main/java/com/comandante/creeper/command/LootCommand.java b/src/main/java/com/comandante/creeper/command/LootCommand.java
index 3b1113bf3a166603ae78d3c01884396dd18451b4..0099f075a48c25dd38534ccca885d9c437da1319 100644
--- a/src/main/java/com/comandante/creeper/command/LootCommand.java
+++ b/src/main/java/com/comandante/creeper/command/LootCommand.java
@@ -32,7 +32,7 @@ public class LootCommand extends Command {
                     if (item.getItemTypeId() == Item.CORPSE_ID_RESERVED) {
                         Loot loot = item.getLoot();
                         if (loot != null) {
-                            int gold = lootManager.lootGoldAmountReturn(loot);
+                            long gold = lootManager.lootGoldAmountReturn(loot);
                             if (gold > 0) {
                                 write("You looted " + NumberFormat.getNumberInstance(Locale.US).format(gold) + Color.YELLOW + " gold" + Color.RESET + " from a " + item.getItemName() + ".\r\n");
                                 player.incrementGold(gold);
diff --git a/src/main/java/com/comandante/creeper/npc/NpcAdapter.java b/src/main/java/com/comandante/creeper/npc/NpcAdapter.java
index a2727f5abd5bc5c6974a5b35a5bf76bcef3b04d1..ce58b46dca7b91c46cc3ef704cd4af1a1e14d956 100644
--- a/src/main/java/com/comandante/creeper/npc/NpcAdapter.java
+++ b/src/main/java/com/comandante/creeper/npc/NpcAdapter.java
@@ -108,9 +108,9 @@ public class NpcAdapter extends TypeAdapter<Npc> {
         jsonReader.nextName();
         jsonReader.beginObject();
         jsonReader.nextName();
-        final int lootGoldMin = jsonReader.nextInt();
+        final long lootGoldMin = jsonReader.nextLong();
         jsonReader.nextName();
-        final int lootGoldMax = jsonReader.nextInt();
+        final long lootGoldMax = jsonReader.nextLong();
         jsonReader.nextName();
         jsonReader.beginArray();
         Set<ItemType> items = Sets.newHashSet();
@@ -135,37 +135,37 @@ public class NpcAdapter extends TypeAdapter<Npc> {
         while (jsonReader.hasNext()) {
             String nextName = jsonReader.nextName();
             if (nextName.equals("agile")) {
-                statsBuilder.setAgile(jsonReader.nextInt());
+                statsBuilder.setAgile(jsonReader.nextLong());
             } else if (nextName.equals("aim")) {
-                statsBuilder.setAim(jsonReader.nextInt());
+                statsBuilder.setAim(jsonReader.nextLong());
             } else if (nextName.equals("armorRating")) {
-                statsBuilder.setArmorRating(jsonReader.nextInt());
+                statsBuilder.setArmorRating(jsonReader.nextLong());
             } else if (nextName.equals("currentHealth")) {
-                statsBuilder.setCurrentHealth(jsonReader.nextInt());
+                statsBuilder.setCurrentHealth(jsonReader.nextLong());
             } else if (nextName.equals("currentMana")) {
-                statsBuilder.setCurrentMana(jsonReader.nextInt());
+                statsBuilder.setCurrentMana(jsonReader.nextLong());
             } else if (nextName.equals("experience")) {
-                statsBuilder.setExperience(jsonReader.nextInt());
+                statsBuilder.setExperience(jsonReader.nextLong());
             } else if (nextName.equals("maxHealth")) {
-                statsBuilder.setMaxHealth(jsonReader.nextInt());
+                statsBuilder.setMaxHealth(jsonReader.nextLong());
             } else if (nextName.equals("maxMana")) {
-                statsBuilder.setMaxMana(jsonReader.nextInt());
+                statsBuilder.setMaxMana(jsonReader.nextLong());
             } else if (nextName.equals("meleSkill")) {
-                statsBuilder.setMeleSkill(jsonReader.nextInt());
+                statsBuilder.setMeleSkill(jsonReader.nextLong());
             } else if (nextName.equals("numberOfWeaponRolls")) {
-                statsBuilder.setNumberOfWeaponRolls(jsonReader.nextInt());
+                statsBuilder.setNumberOfWeaponRolls(jsonReader.nextLong());
             } else if (nextName.equals("strength")) {
-                statsBuilder.setStrength(jsonReader.nextInt());
+                statsBuilder.setStrength(jsonReader.nextLong());
             } else if (nextName.equals("weaponRatingMax")) {
-                statsBuilder.setWeaponRatingMax(jsonReader.nextInt());
+                statsBuilder.setWeaponRatingMax(jsonReader.nextLong());
             }else if (nextName.equals("weaponRatingMin")) {
-                statsBuilder.setWeaponRatingMin(jsonReader.nextInt());
+                statsBuilder.setWeaponRatingMin(jsonReader.nextLong());
             }else if (nextName.equals("willPower")) {
-                statsBuilder.setWillpower(jsonReader.nextInt());
+                statsBuilder.setWillpower(jsonReader.nextLong());
             }else if (nextName.equals("foraging")) {
-                statsBuilder.setForaging(jsonReader.nextInt());
+                statsBuilder.setForaging(jsonReader.nextLong());
             }else if (nextName.equals("inventorySize")) {
-                statsBuilder.setInventorySize(jsonReader.nextInt());
+                statsBuilder.setInventorySize(jsonReader.nextLong());
             }
         }
         jsonReader.endObject();
diff --git a/src/main/java/com/comandante/creeper/player/Player.java b/src/main/java/com/comandante/creeper/player/Player.java
index d741a79567f5e93432082fea2b741e3af0ca6ed4..74e2c18036ed6564d45881b44f31b9ed3f66fb01 100755
--- a/src/main/java/com/comandante/creeper/player/Player.java
+++ b/src/main/java/com/comandante/creeper/player/Player.java
@@ -251,7 +251,7 @@ public class Player extends CreeperEntity {
         }
     }
 
-    public void transferGoldToBank(int amt) {
+    public void transferGoldToBank(long amt) {
         synchronized (interner.intern(playerId)) {
             PlayerMetadata playerMetadata = getPlayerMetadata();
             playerMetadata.transferGoldToBank(amt);
@@ -267,7 +267,7 @@ public class Player extends CreeperEntity {
         }
     }
 
-    public void incrementGold(int amt) {
+    public void incrementGold(long amt) {
         synchronized (interner.intern(playerId)) {
             PlayerMetadata playerMetadata = getPlayerMetadata();
             playerMetadata.incrementGold(amt);
diff --git a/src/main/java/com/comandante/creeper/player/PlayerMetadata.java b/src/main/java/com/comandante/creeper/player/PlayerMetadata.java
index 38b092d158f29ac3acc85b7b6471ed5c5d2df19c..44004e8ad0f3137e8a051dea1ac6b4c2288150b7 100644
--- a/src/main/java/com/comandante/creeper/player/PlayerMetadata.java
+++ b/src/main/java/com/comandante/creeper/player/PlayerMetadata.java
@@ -169,7 +169,7 @@ public class PlayerMetadata implements Serializable {
         this.goldInBank = amt;
     }
 
-    protected void incrementGold(int amt) {
+    protected void incrementGold(long amt) {
         this.gold = gold + amt;
     }
 
diff --git a/src/main/java/com/comandante/creeper/spells/BlackHole.java b/src/main/java/com/comandante/creeper/spells/BlackHoleSpell.java
similarity index 94%
rename from src/main/java/com/comandante/creeper/spells/BlackHole.java
rename to src/main/java/com/comandante/creeper/spells/BlackHoleSpell.java
index bab4595bc95bf4c6e08eac4de152518bb4f4407a..800eafc1ef266607ba75616b2afa457ea2ab3f64 100644
--- a/src/main/java/com/comandante/creeper/spells/BlackHole.java
+++ b/src/main/java/com/comandante/creeper/spells/BlackHoleSpell.java
@@ -16,7 +16,7 @@ import java.util.Set;
 
 import static com.comandante.creeper.server.Color.BOLD_ON;
 
-public class BlackholeSpell extends Spell {
+public class BlackHoleSpell extends Spell {
 
     private final static String NAME = BOLD_ON + Color.BLACK + "black" + Color.RESET + " hole";
     private final static String DESCRIPTION = "A black hole.";
@@ -44,7 +44,7 @@ public class BlackholeSpell extends Spell {
             .setFrozenMovement(false)
             .setLifeSpanTicks(2);
 
-    public BlackholeSpell(GameManager gameManager) {
+    public BlackHoleSpell(GameManager gameManager) {
         super(gameManager, validTriggers, manaCost, attackStats, attackMessages, DESCRIPTION, NAME, Sets.newHashSet(holeEffect.createEffect()), isAreaSpell, null, coolDownTicks);
     }
 
@@ -52,7 +52,7 @@ public class BlackholeSpell extends Spell {
     public void attackSpell(Set<String> npcIds, Player player) {
         Stats playerStats = player.getPlayerStatsWithEquipmentAndLevel();
         long willpower = playerStats.getWillpower();
-        long i = 66666666666 + (willpower * 3);
+        long i = 66666666666L + (willpower * 3);
         this.setEffects(Sets.newHashSet(holeEffect.setApplyStatsOnTick(new StatsBuilder().setCurrentHealth(-i).createStats()).createEffect()));
         super.attackSpell(npcIds, player);
     }
diff --git a/world/npcs/luchtigen.json b/world/npcs/luchtigen.json
index 37bb48af3b526cdcf9f9d7aaef677ff4bedf0201..f5c41326d68c8e43af8b36b49c0e4165357e6f4f 100644
--- a/world/npcs/luchtigen.json
+++ b/world/npcs/luchtigen.json
@@ -32,7 +32,7 @@
       "maxPerRoom": 1,
       "spawnIntervalTicks": 600,
       "maxInstances": 3
-    }, 
+    }
   },
   "validTriggers": [
     "luchtigen",