From 2e9248ea2e2db19ff103f8b3e688e68b4bd408fe Mon Sep 17 00:00:00 2001 From: simon Date: Sun, 24 Dec 2017 14:26:19 -0500 Subject: [PATCH] Factory Integration, NPC improvements. #19 & #31. --- .../java/net/simon987/cubotplugin/Cubot.java | 2 +- .../java/net/simon987/npcplugin/Factory.java | 133 +++++++++++++++++- .../net/simon987/npcplugin/HarvestTask.java | 7 +- .../net/simon987/npcplugin/HarvesterNPC.java | 23 +-- .../npcplugin/NonPlayerCharacter.java | 124 +++++++++++++--- .../net/simon987/npcplugin/NpcPlugin.java | 4 +- .../event/WorldCreationListener.java | 64 +++++++++ .../npcplugin/event/WorldUpdateListener.java | 67 --------- .../simon987/biomassplugin/BiomassBlob.java | 2 +- .../simon987/biomassplugin/WorldUtils.java | 2 - .../server/game/ControllableUnit.java | 2 +- .../net/simon987/server/game/GameObject.java | 6 +- .../simon987/server/game/GameUniverse.java | 2 +- config.properties | 8 ++ plugins/Cubot.jar | Bin 23827 -> 23999 bytes plugins/Plant.jar | Bin 7442 -> 7376 bytes plugins/Plugin NPC.jar | Bin 9379 -> 11837 bytes 17 files changed, 334 insertions(+), 112 deletions(-) create mode 100644 Plugin NPC/src/main/java/net/simon987/npcplugin/event/WorldCreationListener.java delete mode 100644 Plugin NPC/src/main/java/net/simon987/npcplugin/event/WorldUpdateListener.java diff --git a/Plugin Cubot/src/main/java/net/simon987/cubotplugin/Cubot.java b/Plugin Cubot/src/main/java/net/simon987/cubotplugin/Cubot.java index f70433c..f794c1b 100644 --- a/Plugin Cubot/src/main/java/net/simon987/cubotplugin/Cubot.java +++ b/Plugin Cubot/src/main/java/net/simon987/cubotplugin/Cubot.java @@ -98,7 +98,7 @@ public class Cubot extends GameObject implements Updatable, ControllableUnit { public static Cubot deserialize(JSONObject json) { Cubot cubot = new Cubot(); - cubot.setObjectId((int) (long) json.get("i")); + cubot.setObjectId((long) json.get("i")); cubot.setX((int) (long) json.get("x")); cubot.setY((int) (long) json.get("y")); cubot.hp = (int) (long) json.get("hp"); diff --git a/Plugin NPC/src/main/java/net/simon987/npcplugin/Factory.java b/Plugin NPC/src/main/java/net/simon987/npcplugin/Factory.java index 5e5dedd..85deb75 100644 --- a/Plugin NPC/src/main/java/net/simon987/npcplugin/Factory.java +++ b/Plugin NPC/src/main/java/net/simon987/npcplugin/Factory.java @@ -1,14 +1,40 @@ package net.simon987.npcplugin; +import net.simon987.server.GameServer; import net.simon987.server.game.GameObject; import net.simon987.server.game.Updatable; +import org.json.simple.JSONArray; import org.json.simple.JSONObject; +import java.awt.*; +import java.util.ArrayList; + public class Factory extends GameObject implements Updatable { private static final int MAP_INFO = 0x0200; + static final int ID = 3; - public static final int ID = 3; + private static final int MAX_NPC_COUNT = GameServer.INSTANCE.getConfig().getInt("factory_max_npc_count"); + + private static final int NPC_CREATION_COOLDOWN = NonPlayerCharacter.LIFETIME / MAX_NPC_COUNT; + + private ArrayList npcs = new ArrayList<>(); + + /** + * Number of ticks to wait until the Factory can spawn a new NPC + */ + private int cooldown = 0; + + /** + * Temporary NPC objectId array. The Factory links the NPCs to itself when initialised, + * at the first call of update(). + */ + private Object[] tmpNpcArray = new Object[0]; + + /** + * Factory are uninitialised until the first update() call + */ + private boolean initialised = false; @Override public char getMapInfo() { @@ -17,7 +43,45 @@ public class Factory extends GameObject implements Updatable { @Override public void update() { - System.out.println("Updating Factory..."); + + if (!initialised) { + + initialised = true; + + for (Object id : tmpNpcArray) { + + NonPlayerCharacter npc = (NonPlayerCharacter) GameServer.INSTANCE.getGameUniverse().getObject((int) (long) id); + npc.setFactory(this); + + npcs.add(npc); + } + + } else { + + if (cooldown == 0) { + if (npcs.size() < MAX_NPC_COUNT) { + Point p = getAdjacentTile(); + + if (p != null) { + NonPlayerCharacter npc = new HarvesterNPC(); + npc.setWorld(getWorld()); + npc.setObjectId(GameServer.INSTANCE.getGameUniverse().getNextObjectId()); + npc.setX(p.x); + npc.setY(p.y); + getWorld().getGameObjects().add(npc); + getWorld().incUpdatable(); + npc.setFactory(this); + + npcs.add(npc); + } + } + + cooldown += NPC_CREATION_COOLDOWN; + + } else { + cooldown--; + } + } } @Override @@ -42,16 +106,79 @@ public class Factory extends GameObject implements Updatable { json.put("y", getY()); json.put("t", ID); + JSONArray tmpNpcArray = new JSONArray(); + + for (NonPlayerCharacter npc : npcs) { + tmpNpcArray.add(npc.getObjectId()); + } + + json.put("n", tmpNpcArray); + return json; } public static Factory deserialise(JSONObject json) { Factory factory = new Factory(); - factory.setObjectId((int) (long) json.get("i")); + factory.setObjectId((long) json.get("i")); factory.setX((int) (long) json.get("x")); factory.setY((int) (long) json.get("y")); + factory.tmpNpcArray = (Object[]) ((JSONArray) json.get("n")).toArray(); + return factory; } + + /** + * Get the first non-blocked tile that is directly adjacent to the factory, starting from the north-east corner + * going clockwise. + * + * @return The coordinates of the first non-blocked tile, null otherwise. + */ + public Point getAdjacentTile() { + + /* + * (2,0) + * (2,1) + * (1,2) + * (0,2) + * (-1,1) + * (-1,0) + * (0,-1) + * (1,-1) + */ + + if (!getWorld().isTileBlocked(getX() + 2, getY())) { + return new Point(getX() + 2, getY()); + + } else if (!getWorld().isTileBlocked(getX() + 2, getY() + 1)) { + return new Point(getX() + 2, getY() + 1); + + } else if (!getWorld().isTileBlocked(getX() + 1, getY() + 2)) { + return new Point(getX() + 1, getY() + 2); + + } else if (!getWorld().isTileBlocked(getX(), getY() + 2)) { + return new Point(getX(), getY() + 2); + + } else if (!getWorld().isTileBlocked(getX() + -1, getY() + 1)) { + return new Point(getX() + -1, getY() + 1); + + } else if (!getWorld().isTileBlocked(getX() + -1, getY())) { + return new Point(getX() + -1, getY()); + + } else if (!getWorld().isTileBlocked(getX(), getY() + -1)) { + return new Point(getX(), getY() + -1); + + } else if (!getWorld().isTileBlocked(getX() + 1, getY() + -1)) { + return new Point(getX() + 1, getY() + -1); + + } else { + return null; + } + + } + + ArrayList getNpcs() { + return npcs; + } } diff --git a/Plugin NPC/src/main/java/net/simon987/npcplugin/HarvestTask.java b/Plugin NPC/src/main/java/net/simon987/npcplugin/HarvestTask.java index 00cee21..5c12479 100644 --- a/Plugin NPC/src/main/java/net/simon987/npcplugin/HarvestTask.java +++ b/Plugin NPC/src/main/java/net/simon987/npcplugin/HarvestTask.java @@ -84,11 +84,14 @@ public class HarvestTask extends NPCTask { if (nextWorldDirection == null) { - nextWorldDirection = Direction.getDirection(random.nextInt(3)); + while (!npc.gotoWorld(nextWorldDirection)) { + nextWorldDirection = Direction.getDirection(random.nextInt(4)); + } pause += 6; + } else { + npc.gotoWorld(nextWorldDirection); } - npc.gotoWorld(nextWorldDirection); } diff --git a/Plugin NPC/src/main/java/net/simon987/npcplugin/HarvesterNPC.java b/Plugin NPC/src/main/java/net/simon987/npcplugin/HarvesterNPC.java index 89931b4..cccef1f 100644 --- a/Plugin NPC/src/main/java/net/simon987/npcplugin/HarvesterNPC.java +++ b/Plugin NPC/src/main/java/net/simon987/npcplugin/HarvesterNPC.java @@ -17,19 +17,22 @@ public class HarvesterNPC extends NonPlayerCharacter { @Override public void update() { - if (hp <= 0) { - setDead(true); - //TODO: drop biomass + super.update(); - } + if (getFactory() != null) { + if (getTask().checkCompleted()) { + setTask(new HarvestTask()); - if (getTask().checkCompleted()) { + } else { + getTask().tick(this); + } - setTask(new HarvestTask()); - - } else { - getTask().tick(this); + //Self-destroy when age limit is reached + if (getAge() >= NonPlayerCharacter.LIFETIME) { + setDead(true); + getFactory().getNpcs().remove(this); + } } } @@ -52,7 +55,7 @@ public class HarvesterNPC extends NonPlayerCharacter { public static HarvesterNPC deserialize(JSONObject json) { HarvesterNPC npc = new HarvesterNPC(); - npc.setObjectId((int) (long) json.get("i")); + npc.setObjectId((long) json.get("i")); npc.setX((int) (long) json.get("x")); npc.setY((int) (long) json.get("y")); npc.hp = (int) (long) json.get("hp"); diff --git a/Plugin NPC/src/main/java/net/simon987/npcplugin/NonPlayerCharacter.java b/Plugin NPC/src/main/java/net/simon987/npcplugin/NonPlayerCharacter.java index 1cd5f64..e833f49 100644 --- a/Plugin NPC/src/main/java/net/simon987/npcplugin/NonPlayerCharacter.java +++ b/Plugin NPC/src/main/java/net/simon987/npcplugin/NonPlayerCharacter.java @@ -1,5 +1,7 @@ package net.simon987.npcplugin; +import net.simon987.server.GameServer; +import net.simon987.server.assembly.Util; import net.simon987.server.game.Action; import net.simon987.server.game.Direction; import net.simon987.server.game.GameObject; @@ -14,22 +16,65 @@ public abstract class NonPlayerCharacter extends GameObject implements Updatable private static final int MAP_INFO = 0x0040; - protected int hp; + private static final int MAX_FACTORY_DISTANCE = GameServer.INSTANCE.getConfig().getInt("npc_max_factory_distance"); - protected int energy; - protected int maxEnergy; + public static final int LIFETIME = GameServer.INSTANCE.getConfig().getInt("npc_lifetime"); + //Unused + int hp; + int energy; + int maxEnergy; + + /** + * Current task + */ private NPCTask task; private Action lastAction = Action.IDLE; + /** + * Factory that created this NPC + */ + private Factory factory; + + /** + * If set to true, the NPC will be destroyed next tick if it is + * not linked to a Factory + */ + private boolean selfDestroyNextTick = false; + + /** + * Age of the npc, in ticks + */ + private int age = 0; + @Override public char getMapInfo() { return MAP_INFO; } + @Override + public void update() { - public boolean moveTo(int x, int y, int range) { + age++; + + //Destroy NPCs that are not linked with a Factory + if (factory == null) { + if (selfDestroyNextTick) { + setDead(true); + } + + selfDestroyNextTick = true; + } + } + + /** + * Attempt to move the NPC to the specified coordinates + * + * @param range distance to the desired coordinates, in tiles + * @return true if the path is passable + */ + boolean moveTo(int x, int y, int range) { ArrayList path = Pathfinder.findPath(getWorld(), getX(), getY(), x, y, range); @@ -55,33 +100,62 @@ public abstract class NonPlayerCharacter extends GameObject implements Updatable return false; } - public boolean gotoWorld(Direction direction) { + /** + * Go to the next World in the specified Direction. + * + * @return true if the World in the specified Direction is within the max. distance from the Factory + */ + boolean gotoWorld(Direction direction) { if (direction == Direction.NORTH) { - if (!moveTo(8, 0, 0)) { - setDirection(Direction.NORTH); - return incrementLocation(); + + if (Util.manhattanDist(factory.getWorld().getX(), factory.getWorld().getY(), + getWorld().getX(), getWorld().getY() - 1) <= MAX_FACTORY_DISTANCE) { + if (!moveTo(8, 0, 0)) { + setDirection(Direction.NORTH); + incrementLocation(); + } + return true; + } else { + return false; } + } else if (direction == Direction.EAST) { - if (!moveTo(15, 8, 0)) { - setDirection(Direction.EAST); - return incrementLocation(); + if (Util.manhattanDist(factory.getWorld().getX(), factory.getWorld().getY(), + getWorld().getX() + 1, getWorld().getY()) <= MAX_FACTORY_DISTANCE) { + if (!moveTo(15, 7, 0)) { + setDirection(Direction.EAST); + incrementLocation(); + } + return true; + } else { + return false; } } else if (direction == Direction.SOUTH) { - if (!moveTo(7, 15, 0)) { - setDirection(Direction.SOUTH); - return incrementLocation(); + if (Util.manhattanDist(factory.getWorld().getX(), factory.getWorld().getY(), + getWorld().getX(), getWorld().getY() + 1) <= MAX_FACTORY_DISTANCE) { + if (!moveTo(8, 15, 0)) { + setDirection(Direction.SOUTH); + incrementLocation(); + } + return true; + } else { + return false; } } else if (direction == Direction.WEST) { - if (!moveTo(0, 7, 0)) { - setDirection(Direction.WEST); - return incrementLocation(); + if (Util.manhattanDist(factory.getWorld().getX(), factory.getWorld().getY(), + getWorld().getX() - 1, getWorld().getY()) <= MAX_FACTORY_DISTANCE) { + if (!moveTo(0, 7, 0)) { + setDirection(Direction.WEST); + incrementLocation(); + } + return true; + } else { + return false; } } else { return false; } - - return true; } public NPCTask getTask() { @@ -95,4 +169,16 @@ public abstract class NonPlayerCharacter extends GameObject implements Updatable public Action getAction() { return lastAction; } + + public Factory getFactory() { + return factory; + } + + public void setFactory(Factory factory) { + this.factory = factory; + } + + public int getAge() { + return age; + } } diff --git a/Plugin NPC/src/main/java/net/simon987/npcplugin/NpcPlugin.java b/Plugin NPC/src/main/java/net/simon987/npcplugin/NpcPlugin.java index 2ee01fc..36e7da6 100644 --- a/Plugin NPC/src/main/java/net/simon987/npcplugin/NpcPlugin.java +++ b/Plugin NPC/src/main/java/net/simon987/npcplugin/NpcPlugin.java @@ -1,6 +1,6 @@ package net.simon987.npcplugin; -import net.simon987.npcplugin.event.WorldUpdateListener; +import net.simon987.npcplugin.event.WorldCreationListener; import net.simon987.server.ServerConfiguration; import net.simon987.server.game.GameObject; import net.simon987.server.io.GameObjectDeserializer; @@ -14,7 +14,7 @@ public class NpcPlugin extends ServerPlugin implements GameObjectDeserializer { @Override public void init(ServerConfiguration configuration) { - listeners.add(new WorldUpdateListener()); + listeners.add(new WorldCreationListener()); LogManager.LOGGER.info("Initialised NPC plugin"); } diff --git a/Plugin NPC/src/main/java/net/simon987/npcplugin/event/WorldCreationListener.java b/Plugin NPC/src/main/java/net/simon987/npcplugin/event/WorldCreationListener.java new file mode 100644 index 0000000..6601bbf --- /dev/null +++ b/Plugin NPC/src/main/java/net/simon987/npcplugin/event/WorldCreationListener.java @@ -0,0 +1,64 @@ +package net.simon987.npcplugin.event; + +import net.simon987.npcplugin.Factory; +import net.simon987.server.GameServer; +import net.simon987.server.event.GameEvent; +import net.simon987.server.event.GameEventListener; +import net.simon987.server.event.WorldGenerationEvent; +import net.simon987.server.game.World; +import net.simon987.server.logging.LogManager; + +import java.util.Random; + +public class WorldCreationListener implements GameEventListener { + + /** + * Spawn rate. Higher = rarer: A factory will be spawn about every FACTORY_SPAWN_RATE generated Worlds + */ + private static final int FACTORY_SPAWN_RATE = 35; + + private Random random = new Random(); + + @Override + public Class getListenedEventType() { + return WorldGenerationEvent.class; + } + + @Override + public void handle(GameEvent event) { + + if (random.nextInt(FACTORY_SPAWN_RATE) == 0) { + + World world = ((WorldGenerationEvent) event).getWorld(); + + for (int x = 2; x < 12; x++) { + for (int y = 2; y < 12; y++) { + + if ((!world.isTileBlocked(x, y) && !world.isTileBlocked(x + 1, y) && + !world.isTileBlocked(x, y + 1) && !world.isTileBlocked(x + 1, y + 1))) { + + Factory factory = new Factory(); + + factory.setWorld(world); + factory.setObjectId(GameServer.INSTANCE.getGameUniverse().getNextObjectId()); + factory.setX(x); + factory.setY(y); + + if (factory.getAdjacentTile() == null) { + //Factory has no non-blocked adjacent tiles + continue; + } + + world.getGameObjects().add(factory); + world.incUpdatable(); + + LogManager.LOGGER.info("Spawned Factory at (" + world.getX() + ", " + world.getY() + + ") (" + x + ", " + y + ")"); + + return; + } + } + } + } + } +} diff --git a/Plugin NPC/src/main/java/net/simon987/npcplugin/event/WorldUpdateListener.java b/Plugin NPC/src/main/java/net/simon987/npcplugin/event/WorldUpdateListener.java deleted file mode 100644 index e99b0c8..0000000 --- a/Plugin NPC/src/main/java/net/simon987/npcplugin/event/WorldUpdateListener.java +++ /dev/null @@ -1,67 +0,0 @@ -package net.simon987.npcplugin.event; - -import net.simon987.npcplugin.Factory; -import net.simon987.npcplugin.HarvesterNPC; -import net.simon987.npcplugin.NonPlayerCharacter; -import net.simon987.server.GameServer; -import net.simon987.server.event.GameEvent; -import net.simon987.server.event.GameEventListener; -import net.simon987.server.event.WorldUpdateEvent; -import net.simon987.server.game.World; -import net.simon987.server.logging.LogManager; - -import java.awt.*; - -public class WorldUpdateListener implements GameEventListener { - - private boolean ok = true; - - @Override - public Class getListenedEventType() { - return WorldUpdateEvent.class; - } - - @Override - public void handle(GameEvent event) { - - //LogManager.LOGGER.info("Time is " + ); - - World world = ((WorldUpdateEvent) event).getWorld(); - - if (GameServer.INSTANCE.getGameUniverse().getTime() % 10 == 0) { - - if (ok) { - ok = false; - LogManager.LOGGER.info("Spawning Harvester + Factory\n--------------------------------------"); - - NonPlayerCharacter npc = new HarvesterNPC(); - - Point p = world.getRandomPassableTile(); - - if (p != null) { - npc.setWorld(world); - npc.setObjectId(GameServer.INSTANCE.getGameUniverse().getNextObjectId()); - npc.setX(p.x); - npc.setY(p.y); - world.getGameObjects().add(npc); - world.incUpdatable(); - } - - //Factory test - Factory factory = new Factory(); - - factory.setWorld(world); - factory.setObjectId(GameServer.INSTANCE.getGameUniverse().getNextObjectId()); - factory.setX(7); - factory.setY(11); - world.getGameObjects().add(factory); - world.incUpdatable(); - - } - - - } - } - - -} diff --git a/Plugin Plant/src/main/java/net/simon987/biomassplugin/BiomassBlob.java b/Plugin Plant/src/main/java/net/simon987/biomassplugin/BiomassBlob.java index 80fa1b4..dba3c04 100644 --- a/Plugin Plant/src/main/java/net/simon987/biomassplugin/BiomassBlob.java +++ b/Plugin Plant/src/main/java/net/simon987/biomassplugin/BiomassBlob.java @@ -61,7 +61,7 @@ public class BiomassBlob extends GameObject implements InventoryHolder { BiomassBlob biomassBlob = new BiomassBlob(); - biomassBlob.setObjectId((int) (long) json.get("i")); + biomassBlob.setObjectId((long) json.get("i")); biomassBlob.setX((int) (long) json.get("x")); biomassBlob.setY((int) (long) json.get("y")); // biomassBlob.style = (int) (long) json.get("style"); diff --git a/Plugin Plant/src/main/java/net/simon987/biomassplugin/WorldUtils.java b/Plugin Plant/src/main/java/net/simon987/biomassplugin/WorldUtils.java index f0217f9..fda2516 100644 --- a/Plugin Plant/src/main/java/net/simon987/biomassplugin/WorldUtils.java +++ b/Plugin Plant/src/main/java/net/simon987/biomassplugin/WorldUtils.java @@ -15,8 +15,6 @@ public class WorldUtils { */ public static ArrayList generateBlobs(World world, int minCount, int maxCount, int yield) { - System.out.println("Generating blobs..."); - Random random = new Random(); int blobCount = random.nextInt(maxCount - minCount) + minCount; ArrayList biomassBlobs = new ArrayList<>(maxCount); diff --git a/Server/src/main/java/net/simon987/server/game/ControllableUnit.java b/Server/src/main/java/net/simon987/server/game/ControllableUnit.java index 296cc65..51a97f1 100644 --- a/Server/src/main/java/net/simon987/server/game/ControllableUnit.java +++ b/Server/src/main/java/net/simon987/server/game/ControllableUnit.java @@ -7,7 +7,7 @@ import java.util.ArrayList; public interface ControllableUnit { - int getObjectId(); + long getObjectId(); void setKeyboardBuffer(ArrayList kbBuffer); diff --git a/Server/src/main/java/net/simon987/server/game/GameObject.java b/Server/src/main/java/net/simon987/server/game/GameObject.java index c64bcd1..20679dc 100755 --- a/Server/src/main/java/net/simon987/server/game/GameObject.java +++ b/Server/src/main/java/net/simon987/server/game/GameObject.java @@ -18,7 +18,7 @@ public abstract class GameObject implements JSONSerialisable { /** * Object's unique identifier */ - private int objectId; + private long objectId; /** * X coordinate of the object in its World @@ -178,11 +178,11 @@ public abstract class GameObject implements JSONSerialisable { } - public int getObjectId() { + public long getObjectId() { return objectId; } - public void setObjectId(int objectId) { + public void setObjectId(long objectId) { this.objectId = objectId; } diff --git a/Server/src/main/java/net/simon987/server/game/GameUniverse.java b/Server/src/main/java/net/simon987/server/game/GameUniverse.java index 4c850e0..77cb620 100644 --- a/Server/src/main/java/net/simon987/server/game/GameUniverse.java +++ b/Server/src/main/java/net/simon987/server/game/GameUniverse.java @@ -241,7 +241,7 @@ public class GameUniverse implements JSONSerialisable { } - public int getNextObjectId() { + public long getNextObjectId() { return ++nextObjectId; } diff --git a/config.properties b/config.properties index 7b0cf1b..87bc1c8 100644 --- a/config.properties +++ b/config.properties @@ -50,6 +50,12 @@ battery_max_energy=60000 biomassRespawnTime=64 # Respawn timer will start when biomass count is below this number biomassRespawnThreshold=1 +# NPC lifetime in ticks +npc_lifetime=1024 +# Maximum travel distance from the Factory in Worlds +npc_max_factory_distance=3 +# Maximum NPC per Factory +factory_max_npc_count=16 # ---------------------------------------------- # Minimum center point count for the WorldGenerator wg_centerPointCountMin=5 @@ -65,6 +71,8 @@ wg_maxIronCount=2 wg_minCopperCount=0 # Maximum copper tile count for the WorldGenerator wg_maxCopperCount=2 + + # ---------------------------------------------- # Maximum execution time of user code in ms user_timeout=100 \ No newline at end of file diff --git a/plugins/Cubot.jar b/plugins/Cubot.jar index a03040185dfd7e384d9535bb70b22d67f1986639..6865b395d9d793107f7d20820ad94f16c9e0e53a 100644 GIT binary patch delta 18480 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 DBLYiI delta 18311 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 MHCBb~bQnk;0DCkqVgLXD diff --git a/plugins/Plant.jar b/plugins/Plant.jar index 4c7678697f74ce2f57b64bbff7aeeb416de04587..7c885cbddccd01c7f29ec25d339b11bc57693c36 100644 GIT binary patch delta 3086 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 delta 3128 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 L$($M!{blh#m-*$U diff --git a/plugins/Plugin NPC.jar b/plugins/Plugin NPC.jar index e74e8f4c4d6b608fde8c6a5e4a0a813aca0037f8..d3be2a954b5811580f7fa74c72c19f42ea7da578 100644 GIT binary patch delta 10373 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 ga`$lX@^N