diff --git a/src/main/java/com/syncleus/aethermud/storage/graphdb/GraphDbAetherMudStorage.java b/src/main/java/com/syncleus/aethermud/storage/graphdb/GraphDbAetherMudStorage.java index 2bf0f8f09c1bb76371613fb5cf8968c1fb8e57a9..3d516ec562896a6841c97b29fefaccda1c008573 100644 --- a/src/main/java/com/syncleus/aethermud/storage/graphdb/GraphDbAetherMudStorage.java +++ b/src/main/java/com/syncleus/aethermud/storage/graphdb/GraphDbAetherMudStorage.java @@ -64,7 +64,7 @@ public class GraphDbAetherMudStorage implements AetherMudStorage { @Override public Optional<ItemData> getItemEntity(String itemId) { - return Optional.ofNullable(framedGraph.traverse((g) -> framedGraph.getTypeResolver().hasType(g.V(), ItemData.class).has("ItemId", itemId)).nextOrDefault(ItemData.class, null)); + return Optional.ofNullable(framedGraph.traverse((g) -> framedGraph.getTypeResolver().hasType(g.V(), ItemData.class).has("itemId", itemId)).nextOrDefault(ItemData.class, null)); } @Override diff --git a/src/main/java/com/syncleus/aethermud/storage/graphdb/GraphStorageFactory.java b/src/main/java/com/syncleus/aethermud/storage/graphdb/GraphStorageFactory.java index 6b13676402fd4e1e8b20b62357c9910d050c24eb..de0dc9bc333ed8113101a0a0c2b31e22048d73b9 100644 --- a/src/main/java/com/syncleus/aethermud/storage/graphdb/GraphStorageFactory.java +++ b/src/main/java/com/syncleus/aethermud/storage/graphdb/GraphStorageFactory.java @@ -34,14 +34,14 @@ public class GraphStorageFactory { graphFactory = new OrientGraphFactory(connectUrl, username, password); txFactory = new OrientTransactionFactoryImpl(graphFactory, true, "com.syncleus.aethermud.storage.graphdb.model"); txFactory.setupElementClasses(); - txFactory.addEdgeClass("ItemApplyStats"); + txFactory.addEdgeClass("itemApplyStats"); } public GraphStorageFactory(String connectUrl) { graphFactory = new OrientGraphFactory(connectUrl); txFactory = new OrientTransactionFactoryImpl(graphFactory, true, "com.syncleus.aethermud.storage.graphdb.model"); txFactory.setupElementClasses(); - txFactory.addEdgeClass("ItemApplyStats"); + txFactory.addEdgeClass("itemApplyStats"); } public GraphStorageFactory() { diff --git a/src/main/java/com/syncleus/aethermud/storage/graphdb/model/AetherMudMessageData.java b/src/main/java/com/syncleus/aethermud/storage/graphdb/model/AetherMudMessageData.java index 8ba9bfaad48cab304d3408606a964abd604f1b5c..29f3be61f592b3a4d87b6488e97335a52ba359b0 100644 --- a/src/main/java/com/syncleus/aethermud/storage/graphdb/model/AetherMudMessageData.java +++ b/src/main/java/com/syncleus/aethermud/storage/graphdb/model/AetherMudMessageData.java @@ -25,16 +25,16 @@ import java.lang.reflect.InvocationTargetException; @GraphElement public abstract class AetherMudMessageData extends AbstractVertexFrame { - @Property("MessageType") + @Property("messageType") public abstract AetherMudMessage.Type getType(); - @Property("MessageType") + @Property("messageType") public abstract void setType(AetherMudMessage.Type type); - @Property("Message") + @Property("message") public abstract String getMessage(); - @Property("Message") + @Property("message") public abstract void setMessage(String message); public static void copyAetherMudMessage(AetherMudMessageData dest, AetherMudMessage src) { diff --git a/src/main/java/com/syncleus/aethermud/storage/graphdb/model/EffectData.java b/src/main/java/com/syncleus/aethermud/storage/graphdb/model/EffectData.java index acddb917a69929ccb6691fb6eb1b65fb630a56dd..e7cc275aab4f48322149e0a94cec9abc0f239f13 100644 --- a/src/main/java/com/syncleus/aethermud/storage/graphdb/model/EffectData.java +++ b/src/main/java/com/syncleus/aethermud/storage/graphdb/model/EffectData.java @@ -32,49 +32,49 @@ import java.util.List; @GraphElement public abstract class EffectData extends AbstractInterceptingVertexFrame { - @Property("EffectName") + @Property("effectName") public abstract String getEffectName(); - @Property("EffectDescription") + @Property("effectDescription") public abstract String getEffectDescription(); - @Property("EffectApplyMessages") + @Property("effectApplyMessages") public abstract List<String> getEffectApplyMessages(); - @Property("MaxEffectApplications") + @Property("maxEffectApplications") public abstract int getMaxEffectApplications(); - @Property("FrozenMovement") + @Property("frozenMovement") public abstract boolean isFrozenMovement(); - @Property("EffectApplications") + @Property("effectApplications") public abstract int getEffectApplications(); - @Property("EffectApplications") + @Property("effectApplications") public abstract void setEffectApplications(int effectApplications); - @Property("PlayerId") + @Property("playerId") public abstract String getPlayerId(); - @Property("PlayerId") + @Property("playerId") public abstract void setPlayerId(String playerId); - @Property("EffectName") + @Property("effectName") public abstract void setEffectName(String effectName); - @Property("EffectDescription") + @Property("effectDescription") public abstract void setEffectDescription(String effectDescription); - @Property("EffectApplyMessages") + @Property("effectApplyMessages") public abstract void setEffectApplyMessages(List<String> effectApplyMessages); - @Property("MaxEffectApplications") + @Property("maxEffectApplications") public abstract void setMaxEffectApplications(int maxEffectApplications); - @Property("FrozenMovement") + @Property("frozenMovement") public abstract void setFrozenMovement(boolean frozenMovement); - @Adjacency(label = "ApplyStatsOnTick", direction = Direction.OUT) + @Adjacency(label = "applyStatsOnTick", direction = Direction.OUT) public abstract <N extends StatData> Iterator<? extends N> getApplyStatOnTickDataIterator(Class<? extends N> type); public StatData getApplyStatOnTickData() { @@ -85,10 +85,10 @@ public abstract class EffectData extends AbstractInterceptingVertexFrame { return null; } - @Adjacency(label = "ApplyStatsOnTick", direction = Direction.OUT) + @Adjacency(label = "applyStatsOnTick", direction = Direction.OUT) public abstract StatData addApplyStatOnTickData(StatData stats); - @Adjacency(label = "ApplyStatsOnTick", direction = Direction.OUT) + @Adjacency(label = "applyStatsOnTick", direction = Direction.OUT) public abstract void removeApplyStatOnTickData(StatData stats); public void setApplyStatOnTickData(StatData stat) { @@ -101,7 +101,7 @@ public abstract class EffectData extends AbstractInterceptingVertexFrame { return statData; } - @Adjacency(label = "DurationStats", direction = Direction.OUT) + @Adjacency(label = "durationStats", direction = Direction.OUT) public abstract <N extends StatData> Iterator<? extends N> getDurationStatDataIterator(Class<? extends N> type); public StatData getDurationStatData() { @@ -112,10 +112,10 @@ public abstract class EffectData extends AbstractInterceptingVertexFrame { return null; } - @Adjacency(label = "DurationStats", direction = Direction.OUT) + @Adjacency(label = "durationStats", direction = Direction.OUT) public abstract StatData addDurationStatData(StatData stats); - @Adjacency(label = "DurationStats", direction = Direction.OUT) + @Adjacency(label = "durationStats", direction = Direction.OUT) public abstract void removeDurationStatData(StatData stats); public void setDurationStatData(StatData stat) { diff --git a/src/main/java/com/syncleus/aethermud/storage/graphdb/model/EquipmentData.java b/src/main/java/com/syncleus/aethermud/storage/graphdb/model/EquipmentData.java index 67d2cc50df58faf25a6942bcfd639ebcd1df4a08..1bff49e216b2afa0891d21058ce5679038c8eaa6 100644 --- a/src/main/java/com/syncleus/aethermud/storage/graphdb/model/EquipmentData.java +++ b/src/main/java/com/syncleus/aethermud/storage/graphdb/model/EquipmentData.java @@ -31,10 +31,10 @@ import java.util.Iterator; @GraphElement public abstract class EquipmentData extends AbstractVertexFrame { - @Property("EquipmentSlotType") + @Property("equipmentSlotType") public abstract void setEquipmentSlotType(EquipmentSlotType slotType); - @Property("EquipmentSlotType") + @Property("equipmentSlotType") public abstract EquipmentSlotType getEquipmentSlotType(); @Adjacency(label = "stats", direction = Direction.OUT) diff --git a/src/main/java/com/syncleus/aethermud/storage/graphdb/model/ItemData.java b/src/main/java/com/syncleus/aethermud/storage/graphdb/model/ItemData.java index 76e6d691fcb28df0b1e715e8c7a566d3b85b9965..2c5f7eeaf647cc1aba9b516ddefa2122e18ee76a 100644 --- a/src/main/java/com/syncleus/aethermud/storage/graphdb/model/ItemData.java +++ b/src/main/java/com/syncleus/aethermud/storage/graphdb/model/ItemData.java @@ -33,100 +33,100 @@ import java.util.*; @GraphElement public abstract class ItemData extends AbstractInterceptingVertexFrame { - @Property("ValidTimeOfDays") + @Property("validTimeOfDays") public abstract List<TimeTracker.TimeOfDay> getValidTimeOfDays(); - @Property("ValidTimeOfDays") + @Property("validTimeOfDays") public abstract void setValidTimeOfDays(List<TimeTracker.TimeOfDay> validTimeOfDays); - @Property("ValidTimeOfDays") + @Property("validTimeOfDays") public abstract void setValidTimeOfDays(Set<TimeTracker.TimeOfDay> validTimeOfDays); - @Property("Disposable") + @Property("disposable") public abstract boolean isDisposable(); - @Property("MaxUses") + @Property("maxUses") public abstract int getMaxUses(); - @Property("WithPlayer") + @Property("withPlayer") public abstract boolean isWithPlayer(); - @Property("WithPlayer") + @Property("withPlayer") public abstract void setWithPlayer(boolean isWithPlayer); - @Property("NumberOfUses") + @Property("numberOfUses") public abstract int getNumberOfUses(); - @Property("NumberOfUses") + @Property("numberOfUses") public abstract void setNumberOfUses(int numberOfUses); - @Property("ItemId") + @Property("itemId") public abstract String getItemId(); - @Property("InternalItemName") + @Property("internalItemName") public abstract String getInternalItemName(); - @Property("ItemName") + @Property("itemName") public abstract String getItemName(); - @Property("ItemDescription") + @Property("itemDescription") public abstract String getItemDescription(); - @Property("ItemTriggers") + @Property("itemTriggers") public abstract List<String> getItemTriggers(); - @Property("ItemTriggers") + @Property("itemTriggers") public abstract void setItemTriggers(List<String> itemTriggers); - @Property("RestingName") + @Property("restingName") public abstract String getRestingName(); - @Property("ItemHalfLifeTicks") + @Property("itemHalfLifeTicks") public abstract int getItemHalfLifeTicks(); - @Property("HasBeenWithPlayer") + @Property("hasBeenWithPlayer") public abstract void setHasBeenWithPlayer(boolean hasBeenWithPlayer); - @Property("Rarity") + @Property("rarity") public abstract Rarity getRarity(); - @Property("Rarity") + @Property("rarity") public abstract void setRarity(Rarity rarity); - @Property("ValueInGold") + @Property("valueInGold") public abstract int getValueInGold(); - @Property("ItemName") + @Property("itemName") public abstract void setItemName(String itemName); - @Property("ItemDescription") + @Property("itemDescription") public abstract void setItemDescription(String itemDescription); - @Property("InternalItemName") + @Property("internalItemName") public abstract void setInternalItemName(String internalItemName); - @Property("RestingName") + @Property("restingName") public abstract void setRestingName(String restingName); - @Property("ItemId") + @Property("itemId") public abstract void setItemId(String itemId); - @Property("ItemHalfLifeTicks") + @Property("itemHalfLifeTicks") public abstract void setItemHalfLifeTicks(int itemHalfLifeTicks); - @Property("ValueInGold") + @Property("valueInGold") public abstract void setValueInGold(int valueInGold); - @Property("MaxUses") + @Property("maxUses") public abstract void setMaxUses(int maxUses); - @Property("Disposable") + @Property("disposable") public abstract void setDisposable(boolean disposable); - @Property("HasBeenWithPlayer") + @Property("hasBeenWithPlayer") public abstract boolean isHasBeenWithPlayer(); - @Adjacency(label = "Equipment", direction = Direction.OUT) + @Adjacency(label = "equipment", direction = Direction.OUT) public abstract <N extends EquipmentData> Iterator<? extends N> getEquipmentDataIterator(Class<? extends N> type); public EquipmentData getEquipmentData() { @@ -137,10 +137,10 @@ public abstract class ItemData extends AbstractInterceptingVertexFrame { return null; } - @Adjacency(label = "Equipment", direction = Direction.OUT) + @Adjacency(label = "equipment", direction = Direction.OUT) public abstract EquipmentData addEquipmentData(EquipmentData equipment); - @Adjacency(label = "Equipment", direction = Direction.OUT) + @Adjacency(label = "equipment", direction = Direction.OUT) public abstract void removeEquipmentData(EquipmentData equipment); public void setEquipmentData(EquipmentData equipment) { @@ -155,13 +155,13 @@ public abstract class ItemData extends AbstractInterceptingVertexFrame { return equipment; } - @Adjacency(label = "Effect", direction = Direction.OUT) + @Adjacency(label = "effect", direction = Direction.OUT) public abstract EffectData addEffectData(EffectData effects); - @Adjacency(label = "Effect", direction = Direction.OUT) + @Adjacency(label = "effect", direction = Direction.OUT) public abstract void removeEffectData(EffectData stats); - @Adjacency(label = "Effect", direction = Direction.OUT) + @Adjacency(label = "effect", direction = Direction.OUT) public abstract <N extends EffectData> Iterator<? extends N> getEffectDatasIterator(Class<? extends N> type); public Set<EffectData> getEffectDatas() { @@ -178,7 +178,7 @@ public abstract class ItemData extends AbstractInterceptingVertexFrame { return effect; } - @Adjacency(label = "ItemApplyStats", direction = Direction.OUT) + @Adjacency(label = "itemApplyStats", direction = Direction.OUT) public abstract <N extends StatData> Iterator<? extends N> getItemApplyStatDatasIterator(Class<? extends N> type); public StatData getItemApplyStatData() { @@ -189,10 +189,10 @@ public abstract class ItemData extends AbstractInterceptingVertexFrame { return null; } - @Adjacency(label = "ItemApplyStats", direction = Direction.OUT) + @Adjacency(label = "itemApplyStats", direction = Direction.OUT) public abstract StatData addStatData(StatData stats); - @Adjacency(label = "ItemApplyStats", direction = Direction.OUT) + @Adjacency(label = "itemApplyStats", direction = Direction.OUT) public abstract void removeStatData(StatData stats); public void setItemApplyStatData(StatData stats) { diff --git a/src/main/java/com/syncleus/aethermud/storage/graphdb/model/LootData.java b/src/main/java/com/syncleus/aethermud/storage/graphdb/model/LootData.java index 2a33b0936516dc81d49939f5a683dcf69f41eff1..71f12f732bd09a2f874d89d7a7d7cfe7e94520ed 100644 --- a/src/main/java/com/syncleus/aethermud/storage/graphdb/model/LootData.java +++ b/src/main/java/com/syncleus/aethermud/storage/graphdb/model/LootData.java @@ -27,22 +27,22 @@ import java.util.List; @GraphElement public abstract class LootData extends AbstractInterceptingVertexFrame { - @Property("InternalItemNames") + @Property("internalItemNames") public abstract List<String> getInternalItemNames(); - @Property("InternalItemNames") + @Property("internalItemNames") public abstract void setInternalItemNames(List<String> internalItemNames); - @Property("GoldMax") + @Property("goldMax") public abstract int getLootGoldMax(); - @Property("GoldMin") + @Property("goldMin") public abstract int getLootGoldMin(); - @Property("GoldMax") + @Property("goldMax") public abstract void setLootGoldMax(int lootGoldMax); - @Property("GoldMin") + @Property("goldMin") public abstract void setLootGoldMin(int lootGoldMin); public static void copyLoot(LootData dest, Loot src) { diff --git a/src/main/java/com/syncleus/aethermud/storage/graphdb/model/NpcData.java b/src/main/java/com/syncleus/aethermud/storage/graphdb/model/NpcData.java index 360df09500e2e73c6edaf56b2ba8cdf783da9755..6750709e7320f2773764edd3fba3cddfd95733b4 100644 --- a/src/main/java/com/syncleus/aethermud/storage/graphdb/model/NpcData.java +++ b/src/main/java/com/syncleus/aethermud/storage/graphdb/model/NpcData.java @@ -180,17 +180,17 @@ public abstract class NpcData extends AbstractInterceptingVertexFrame { return stats; } - @Adjacency(label = "AttackMessage", direction = Direction.OUT) + @Adjacency(label = "attackMessage", direction = Direction.OUT) public abstract <N extends AetherMudMessageData> Iterator<? extends N> getAttackMessageDataIterator(Class<? extends N> type); public List<AetherMudMessageData> getAttackMessageDatas() { return Lists.newArrayList(this.getIdleMessageDataIterator(AetherMudMessageData.class)); } - @Adjacency(label = "AttackMessage", direction = Direction.OUT) + @Adjacency(label = "attackMessage", direction = Direction.OUT) public abstract void addAttackMessageData(AetherMudMessageData message); - @Adjacency(label = "AttackMessage", direction = Direction.OUT) + @Adjacency(label = "attackMessage", direction = Direction.OUT) public abstract void removeAttackMessageData(AetherMudMessageData message); public void setAttackMessageDatas(List<AetherMudMessageData> messages) { @@ -203,17 +203,17 @@ public abstract class NpcData extends AbstractInterceptingVertexFrame { return message; } - @Adjacency(label = "IdleMessage", direction = Direction.OUT) + @Adjacency(label = "idleMessage", direction = Direction.OUT) public abstract <N extends AetherMudMessageData> Iterator<? extends N> getIdleMessageDataIterator(Class<? extends N> type); public List<AetherMudMessageData> getIdleMessageDatas() { return Lists.newArrayList(this.getIdleMessageDataIterator(AetherMudMessageData.class)); } - @Adjacency(label = "IdleMessage", direction = Direction.OUT) + @Adjacency(label = "idleMessage", direction = Direction.OUT) public abstract void addIdleMessageData(AetherMudMessageData message); - @Adjacency(label = "IdleMessage", direction = Direction.OUT) + @Adjacency(label = "idleMessage", direction = Direction.OUT) public abstract void removeIdleMessageData(AetherMudMessageData message); public void setIdleMessageDatas(List<AetherMudMessageData> messages) { @@ -226,17 +226,17 @@ public abstract class NpcData extends AbstractInterceptingVertexFrame { return message; } - @Adjacency(label = "BattleMessage", direction = Direction.OUT) + @Adjacency(label = "battleMessage", direction = Direction.OUT) public abstract <N extends AetherMudMessageData> Iterator<? extends N> getBattleMessageDataIterator(Class<? extends N> type); public List<AetherMudMessageData> getBattleMessageDatas() { return Lists.newArrayList(this.getBattleMessageDataIterator(AetherMudMessageData.class)); } - @Adjacency(label = "BattleMessage", direction = Direction.OUT) + @Adjacency(label = "battleMessage", direction = Direction.OUT) public abstract void addBattleMessageData(AetherMudMessageData message); - @Adjacency(label = "BattleMessage", direction = Direction.OUT) + @Adjacency(label = "battleMessage", direction = Direction.OUT) public abstract void removeBattleMessageData(AetherMudMessageData message); public void setBattleMessageDatas(List<AetherMudMessageData> messages) { @@ -249,17 +249,17 @@ public abstract class NpcData extends AbstractInterceptingVertexFrame { return message; } - @Adjacency(label = "CriticalAttackMessageData", direction = Direction.OUT) + @Adjacency(label = "criticalAttackMessageData", direction = Direction.OUT) public abstract <N extends AetherMudMessageData> Iterator<? extends N> getCriticalAttackMessageDataIterator(Class<? extends N> type); public List<AetherMudMessageData> getCriticalAttackMessageDatas() { return Lists.newArrayList(this.getCriticalAttackMessageDataIterator(AetherMudMessageData.class)); } - @Adjacency(label = "CriticalAttackMessageData", direction = Direction.OUT) + @Adjacency(label = "criticalAttackMessageData", direction = Direction.OUT) public abstract void addCriticalAttackMessageData(AetherMudMessageData message); - @Adjacency(label = "CriticalAttackMessageData", direction = Direction.OUT) + @Adjacency(label = "criticalAttackMessageData", direction = Direction.OUT) public abstract void removeCriticalAttackMessageData(AetherMudMessageData message); public void setCriticalAttackMessageDatas(List<AetherMudMessageData> messages) { diff --git a/src/main/java/com/syncleus/aethermud/storage/graphdb/model/PlayerData.java b/src/main/java/com/syncleus/aethermud/storage/graphdb/model/PlayerData.java index 172f4a67685db9eaf3cc291defadfa58fc07904c..6502b8efbb90aafaf5a23b27205828931acd6a9a 100644 --- a/src/main/java/com/syncleus/aethermud/storage/graphdb/model/PlayerData.java +++ b/src/main/java/com/syncleus/aethermud/storage/graphdb/model/PlayerData.java @@ -139,13 +139,13 @@ public abstract class PlayerData extends AbstractInterceptingVertexFrame { @Property("currentRoomId") public abstract void setCurrentRoomId(Integer currentRoomId); - @Adjacency(label = "Effect", direction = Direction.OUT) + @Adjacency(label = "effect", direction = Direction.OUT) public abstract EffectData addEffect(EffectData effects); - @Adjacency(label = "Effect", direction = Direction.OUT) + @Adjacency(label = "effect", direction = Direction.OUT) public abstract void removeEffect(EffectData stats); - @Adjacency(label = "Effect", direction = Direction.OUT) + @Adjacency(label = "effect", direction = Direction.OUT) public abstract <N extends EffectData> Iterator<? extends N> getEffects(Class<? extends N> type); public Set<EffectData> getEffects() { @@ -181,13 +181,13 @@ public abstract class PlayerData extends AbstractInterceptingVertexFrame { } } - @Adjacency(label = "coolDowns", direction = Direction.OUT) + @Adjacency(label = "coolDown", direction = Direction.OUT) public abstract <N extends CoolDownData> Iterator<? extends N> getCoolDowns(Class<? extends N> type); - @Adjacency(label = "coolDowns", direction = Direction.OUT) + @Adjacency(label = "coolDown", direction = Direction.OUT) public abstract void removeCoolDown(CoolDownData stats); - @Adjacency(label = "coolDowns", direction = Direction.OUT) + @Adjacency(label = "coolDown", direction = Direction.OUT) public abstract void addCoolDown(CoolDownData coolDown); public void setCoolDowns(Map<CoolDownType, CoolDownData> coolDowns) { diff --git a/src/main/java/com/syncleus/aethermud/storage/graphdb/model/SpawnRuleData.java b/src/main/java/com/syncleus/aethermud/storage/graphdb/model/SpawnRuleData.java index bacbebc7a1426e50501cb1b58a38aaca2d0091f4..8a3fda23607e8a649790f75f17049e73a39d0f80 100644 --- a/src/main/java/com/syncleus/aethermud/storage/graphdb/model/SpawnRuleData.java +++ b/src/main/java/com/syncleus/aethermud/storage/graphdb/model/SpawnRuleData.java @@ -28,34 +28,34 @@ import java.lang.reflect.InvocationTargetException; @GraphElement public abstract class SpawnRuleData extends AbstractInterceptingVertexFrame { - @Property("RandomChance") + @Property("randomChance") public abstract int getRandomChance(); - @Property("MaxPerRoom") + @Property("maxPerRoom") public abstract int getMaxPerRoom(); - @Property("IntervalTicks") + @Property("intervalTicks") public abstract int getSpawnIntervalTicks(); - @Property("MaxInstances") + @Property("maxInstances") public abstract int getMaxInstances(); - @Property("Area") + @Property("area") public abstract Area getArea(); - @Property("Area") + @Property("area") public abstract void setArea(Area area); - @Property("RandomChance") + @Property("randomChance") public abstract void setRandomChance(int randomChance); - @Property("IntervalTicks") + @Property("intervalTicks") public abstract void setSpawnIntervalTicks(int spawnIntervalTicks); - @Property("MaxInstances") + @Property("maxInstances") public abstract void setMaxInstances(int maxInstances); - @Property("MaxPerRoom") + @Property("maxPerRoom") public abstract void setMaxPerRoom(int maxPerRoom); public static void copySpawnRule(SpawnRuleData dest, SpawnRule src) {