From 336e3c26633caf2bf8fb54f68cc32183ea3d6760 Mon Sep 17 00:00:00 2001 From: KAMKEEL Date: Wed, 2 Nov 2022 13:37:58 -0400 Subject: [PATCH 1/8] Additional Wing Types --- .../npcs/client/gui/model/GuiModelBody.java | 2 +- .../customnpcs/textures/parts/wings/cwing1.png | Bin 0 -> 3330 bytes .../customnpcs/textures/parts/wings/wing14.png | Bin 0 -> 2467 bytes .../customnpcs/textures/parts/wings/wing15.png | Bin 0 -> 6763 bytes 4 files changed, 1 insertion(+), 1 deletion(-) create mode 100644 src/main/resources/assets/customnpcs/textures/parts/wings/cwing1.png create mode 100644 src/main/resources/assets/customnpcs/textures/parts/wings/wing14.png create mode 100644 src/main/resources/assets/customnpcs/textures/parts/wings/wing15.png diff --git a/src/main/java/noppes/npcs/client/gui/model/GuiModelBody.java b/src/main/java/noppes/npcs/client/gui/model/GuiModelBody.java index 89a5e1f96..e1bb8c373 100644 --- a/src/main/java/noppes/npcs/client/gui/model/GuiModelBody.java +++ b/src/main/java/noppes/npcs/client/gui/model/GuiModelBody.java @@ -14,7 +14,7 @@ public class GuiModelBody extends GuiModelInterface{ private final String[] arrBody = new String[]{"gui.no","gui.yes"}; private final String[] arrBodywear = new String[]{"gui.no","gui.yes","Solid"}; private final String[] arrWing = new String[]{"gui.no","Player","Type1","Type2","Type3","Type4","Type5","Type6","Type7","Type8","Type9", - "Type10","Type11","Type12","Type13"}; + "Type10","Type11","Type12","Type13","Type14","Type15"}; private final String[] arrBreasts = new String[]{"gui.no","Type1","Type2","Type3"}; private final String[] arrParticles = new String[]{"gui.no","Player","Type1", "Type2", "Rainbow", "Type3", "Type4", "Type5", "Type6", "Type7"}; private final String[] arrfins = new String[]{"gui.no","Player","Type1","Type2","Type3","Type4","Type5","Type6"}; diff --git a/src/main/resources/assets/customnpcs/textures/parts/wings/cwing1.png b/src/main/resources/assets/customnpcs/textures/parts/wings/cwing1.png new file mode 100644 index 0000000000000000000000000000000000000000..3cdde5afffb42b6ec53b8cfea275c6a6a83defc1 GIT binary patch literal 3330 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 XmtJ}6`!DjhHnXSZ8qc46{Cocae+&Ak literal 0 HcmV?d00001 From e6dbfaa4f53b50440b28f550b6041649f7252cc0 Mon Sep 17 00:00:00 2001 From: KAMKEEL Date: Wed, 2 Nov 2022 13:38:20 -0400 Subject: [PATCH 2/8] ScriptingEnabled Fix --- src/main/java/noppes/npcs/PacketHandlerServer.java | 4 ++-- src/main/java/noppes/npcs/controllers/data/DataScript.java | 3 ++- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/src/main/java/noppes/npcs/PacketHandlerServer.java b/src/main/java/noppes/npcs/PacketHandlerServer.java index 51fd83e8c..0837aa329 100644 --- a/src/main/java/noppes/npcs/PacketHandlerServer.java +++ b/src/main/java/noppes/npcs/PacketHandlerServer.java @@ -176,7 +176,7 @@ public class PacketHandlerServer{ private void getScriptsEnabled(EnumPacketServer type, ByteBuf buffer, EntityPlayerMP player) throws IOException { if (type == EnumPacketServer.ScriptGlobalGuiDataGet) { NBTTagCompound compound = new NBTTagCompound(); - compound.setBoolean("ScriptsEnabled", CustomNpcs.GlobalPlayerScripts); + compound.setBoolean("ScriptsEnabled", CustomNpcs.ScriptingEnabled); compound.setBoolean("PlayerScriptsEnabled", CustomNpcs.GlobalPlayerScripts); compound.setBoolean("GlobalNPCScriptsEnabled", CustomNpcs.GlobalNPCScripts); compound.setBoolean("ForgeScriptsEnabled", CustomNpcs.GlobalForgeScripts); @@ -184,7 +184,7 @@ public class PacketHandlerServer{ } else if (type == EnumPacketServer.ScriptGlobalGuiDataSave) { NBTTagCompound compound = Server.readNBT(buffer); - CustomNpcs.GlobalPlayerScripts = compound.getBoolean("ScriptsEnabled"); + CustomNpcs.ScriptingEnabled = compound.getBoolean("ScriptsEnabled"); CustomNpcs.GlobalPlayerScripts = compound.getBoolean("PlayerScriptsEnabled"); CustomNpcs.GlobalNPCScripts = compound.getBoolean("GlobalNPCScriptsEnabled"); CustomNpcs.GlobalForgeScripts = compound.getBoolean("ForgeScriptsEnabled"); diff --git a/src/main/java/noppes/npcs/controllers/data/DataScript.java b/src/main/java/noppes/npcs/controllers/data/DataScript.java index 6e2998e67..facf7bd81 100644 --- a/src/main/java/noppes/npcs/controllers/data/DataScript.java +++ b/src/main/java/noppes/npcs/controllers/data/DataScript.java @@ -10,6 +10,7 @@ import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagList; import net.minecraft.world.World; import net.minecraft.world.WorldServer; +import noppes.npcs.CustomNpcs; import noppes.npcs.EventHooks; import noppes.npcs.constants.EnumScriptType; import noppes.npcs.controllers.ScriptContainer; @@ -158,7 +159,7 @@ public class DataScript implements IScriptHandler { } public boolean isEnabled(){ - return enabled && ScriptController.HasStart && !npc.worldObj.isRemote && !scripts.isEmpty(); + return enabled && ScriptController.HasStart && !npc.worldObj.isRemote && !scripts.isEmpty() && CustomNpcs.ScriptingEnabled; } public Map getConsoleText() { From 29b716a25c061111a21fd9aeda5460d781e7ba14 Mon Sep 17 00:00:00 2001 From: KAMKEEL Date: Wed, 2 Nov 2022 14:00:03 -0400 Subject: [PATCH 3/8] Fix isEnabled --- .../java/noppes/npcs/controllers/data/ForgeDataScript.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/noppes/npcs/controllers/data/ForgeDataScript.java b/src/main/java/noppes/npcs/controllers/data/ForgeDataScript.java index 50c449e3c..c282e67db 100644 --- a/src/main/java/noppes/npcs/controllers/data/ForgeDataScript.java +++ b/src/main/java/noppes/npcs/controllers/data/ForgeDataScript.java @@ -81,7 +81,7 @@ public class ForgeDataScript implements IScriptHandler { } public boolean isEnabled() { - return this.enabled && ScriptController.HasStart && this.scripts.size() > 0; + return this.enabled && CustomNpcs.GlobalForgeScripts && ScriptController.HasStart && this.scripts.size() > 0; } public boolean isClient() { @@ -89,7 +89,7 @@ public class ForgeDataScript implements IScriptHandler { } public boolean getEnabled() { - return CustomNpcs.GlobalForgeScripts && this.enabled; + return this.enabled; } public void setEnabled(boolean bo) { From 37da3f6069009b1bcb4e7d3748f8465068645fc6 Mon Sep 17 00:00:00 2001 From: KAMKEEL Date: Thu, 3 Nov 2022 02:47:55 -0400 Subject: [PATCH 4/8] NPC Script Logging Config V 1.0 Added V 1.0 (CNPC+ Script Logging) > Logs Activities for when CNPC+ Scripts are called (Writes to CustomNPCs-latest.log) Configuration Options Available in Config --- src/main/java/noppes/npcs/CustomNpcs.java | 11 ++ src/main/java/noppes/npcs/LogWriter.java | 102 +++++++++++++++++- .../npcs/controllers/data/DataScript.java | 8 +- 3 files changed, 118 insertions(+), 3 deletions(-) diff --git a/src/main/java/noppes/npcs/CustomNpcs.java b/src/main/java/noppes/npcs/CustomNpcs.java index aa11e469d..df11433aa 100644 --- a/src/main/java/noppes/npcs/CustomNpcs.java +++ b/src/main/java/noppes/npcs/CustomNpcs.java @@ -59,6 +59,12 @@ public class CustomNpcs { "Every additional compound tag adds 65535 more characters to your script length limit. Use incrementally, with caution.") public static int ExpandedScriptLimit = 2; + @ConfigProp(info = "Enables if Scripting Information should be printed to CustomNPCs Logs") + public static boolean ScriptLogging = false; + + @ConfigProp(info = "Amount of logs per minute that would be marked as SPAM [10, 300]") + public static int ScriptFrequency = 30; + @ConfigProp(info = "Navigation search range for NPCs. Not recommended to increase if you have a slow pc or on a server. Minimum of 16, maximum of 96.") public static int NpcNavRange = 32; @@ -227,6 +233,11 @@ public class CustomNpcs { if (ExpandedScriptLimit < 0) ExpandedScriptLimit = 0; + if (ScriptFrequency < 10) + ScriptFrequency = 10; + if (ScriptFrequency > 300) + ScriptFrequency = 300; + EnchantInterface.load(); CustomItems.load(); diff --git a/src/main/java/noppes/npcs/LogWriter.java b/src/main/java/noppes/npcs/LogWriter.java index 5e949c20c..353ef3556 100644 --- a/src/main/java/noppes/npcs/LogWriter.java +++ b/src/main/java/noppes/npcs/LogWriter.java @@ -1,13 +1,19 @@ package noppes.npcs; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import noppes.npcs.constants.EnumScriptType; + import java.io.File; import java.io.FileOutputStream; import java.io.IOException; -import java.io.PrintStream; import java.io.PrintWriter; import java.io.StringWriter; import java.text.SimpleDateFormat; import java.util.Date; +import java.util.UUID; +import java.util.WeakHashMap; +import java.util.concurrent.TimeUnit; import java.util.logging.ConsoleHandler; import java.util.logging.Formatter; import java.util.logging.Handler; @@ -19,6 +25,20 @@ import java.util.logging.StreamHandler; public class LogWriter { private final static String name = "CustomNPCs"; private final static Logger logger = Logger.getLogger(name); + + private final static WeakHashMap InitCacheMap = new WeakHashMap(); + private final static WeakHashMap TickCacheMap = new WeakHashMap(); + private final static WeakHashMap InteractCacheMap = new WeakHashMap(); + private final static WeakHashMap DialogCacheMap = new WeakHashMap(); + private final static WeakHashMap DamagedCacheMap = new WeakHashMap(); + private final static WeakHashMap KilledCacheMap = new WeakHashMap(); + private final static WeakHashMap AttackCacheMap = new WeakHashMap(); + private final static WeakHashMap TargetCacheMap = new WeakHashMap(); + private final static WeakHashMap CollideCacheMap = new WeakHashMap(); + private final static WeakHashMap KillsCacheMap = new WeakHashMap(); + private final static WeakHashMap DialogCloseCacheMap = new WeakHashMap(); + private final static WeakHashMap TimerCacheMap = new WeakHashMap(); + private final static SimpleDateFormat dateformat = new SimpleDateFormat("HH:mm:ss"); private static Handler handler; static { @@ -64,7 +84,7 @@ public class LogWriter { logger.setUseParentHandlers(false); Handler consoleHandler = new ConsoleHandler(); consoleHandler.setFormatter(handler.getFormatter()); - consoleHandler.setLevel(Level.ALL); + consoleHandler.setLevel(Level.FINEST); logger.addHandler(consoleHandler); logger.setLevel(Level.ALL); @@ -78,6 +98,78 @@ public class LogWriter { } } + public static void postScriptLog(UUID npcUUID, EnumScriptType type, String message) { + switch (type){ + case INIT: + scriptLogCalculator(InitCacheMap, npcUUID, message); + break; + case TICK: + scriptLogCalculator(TickCacheMap, npcUUID, message); + break; + case INTERACT: + scriptLogCalculator(InteractCacheMap, npcUUID, message); + break; + case DIALOG: + scriptLogCalculator(DialogCacheMap, npcUUID, message); + break; + case DAMAGED: + scriptLogCalculator(DamagedCacheMap, npcUUID, message); + break; + case KILLED: + scriptLogCalculator(KilledCacheMap, npcUUID, message); + break; + case ATTACK: + scriptLogCalculator(AttackCacheMap, npcUUID, message); + break; + case TARGET: + scriptLogCalculator(TargetCacheMap, npcUUID, message); + break; + case COLLIDE: + scriptLogCalculator(CollideCacheMap, npcUUID, message); + break; + case KILLS: + scriptLogCalculator(KillsCacheMap, npcUUID, message); + case DIALOG_CLOSE: + scriptLogCalculator(DialogCloseCacheMap, npcUUID, message); + break; + case TIMER: + scriptLogCalculator(TimerCacheMap, npcUUID, message); + break; + default: + break; + } + } + + public static void scriptLogCalculator(WeakHashMap map, UUID npcUUID, String message) { + if(map.containsKey(npcUUID)){ + NPCStamp stamp = map.get(npcUUID); + long secondsSinceFirst = TimeUnit.MILLISECONDS.toSeconds(new Date().getTime() - stamp.date.getTime()); + stamp.counter++; + double frequency = (float)CustomNpcs.ScriptFrequency / 60; + + if(secondsSinceFirst < 10 && stamp.counter < 5) { + LogWriter.script(message); + } + else if(secondsSinceFirst > 10 && (double)stamp.counter / secondsSinceFirst > frequency){ + // WARN + LogWriter.script("[SPAM]:" + message); + stamp.counter = 0; + } else if (secondsSinceFirst > 60) { + LogWriter.script(message); + stamp.counter = 1; + stamp.date = new Date(); + } + } else { + map.put(npcUUID, new NPCStamp()); + LogWriter.script(message); + } + } + + public static void script(Object msg) { + logger.log(Level.ALL, msg.toString()); + handler.flush(); + } + public static void info(Object msg) { logger.log(Level.INFO, msg.toString()); handler.flush(); @@ -99,3 +191,9 @@ public class LogWriter { handler.flush(); } } + +class NPCStamp +{ + public Date date = new Date(); + public int counter = 1; +}; diff --git a/src/main/java/noppes/npcs/controllers/data/DataScript.java b/src/main/java/noppes/npcs/controllers/data/DataScript.java index facf7bd81..c4a3bb652 100644 --- a/src/main/java/noppes/npcs/controllers/data/DataScript.java +++ b/src/main/java/noppes/npcs/controllers/data/DataScript.java @@ -4,7 +4,10 @@ import java.util.*; import javax.script.ScriptEngine; +import cpw.mods.fml.common.FMLCommonHandler; import cpw.mods.fml.common.eventhandler.Event; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.entity.Entity; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagList; @@ -12,6 +15,7 @@ import net.minecraft.world.World; import net.minecraft.world.WorldServer; import noppes.npcs.CustomNpcs; import noppes.npcs.EventHooks; +import noppes.npcs.LogWriter; import noppes.npcs.constants.EnumScriptType; import noppes.npcs.controllers.ScriptContainer; import noppes.npcs.controllers.IScriptHandler; @@ -132,7 +136,9 @@ public class DataScript implements IScriptHandler { ob = NpcAPI.Instance().getIEntity((Entity)ob); script.engine.put(obs[i].toString(), ob); } - + if(CustomNpcs.ScriptLogging && FMLCommonHandler.instance().getEffectiveSide() == Side.SERVER){ + LogWriter.postScriptLog(npc.field_110179_h, type, String.format("[%s] NPC %s (%s, %s, %s) | Objects: %s", ((String)type.function).toUpperCase(), npc.display.name, (int)npc.posX, (int)npc.posY, (int)npc.posZ, Arrays.toString(obs))); + } return callScript(script, event); } From fcd50b34c3118acfa1b9930ac3440c704f20caf2 Mon Sep 17 00:00:00 2001 From: KAMKEEL Date: Thu, 3 Nov 2022 20:07:28 -0400 Subject: [PATCH 5/8] ScriptIgnoreFrequency --- src/main/java/noppes/npcs/CustomNpcs.java | 6 ++++- src/main/java/noppes/npcs/LogWriter.java | 33 ++++++++++++++++------- 2 files changed, 28 insertions(+), 11 deletions(-) diff --git a/src/main/java/noppes/npcs/CustomNpcs.java b/src/main/java/noppes/npcs/CustomNpcs.java index df11433aa..3abb6503a 100644 --- a/src/main/java/noppes/npcs/CustomNpcs.java +++ b/src/main/java/noppes/npcs/CustomNpcs.java @@ -62,9 +62,13 @@ public class CustomNpcs { @ConfigProp(info = "Enables if Scripting Information should be printed to CustomNPCs Logs") public static boolean ScriptLogging = false; - @ConfigProp(info = "Amount of logs per minute that would be marked as SPAM [10, 300]") + @ConfigProp(info = "Amount of Messages marked as SPAM [5, 3000]. Higher Number means MORE accurate messages \n" + + "This frequency will determine if the log will print a line with [SPAM] to warn the console.") public static int ScriptFrequency = 30; + @ConfigProp(info = "IN Milliseconds 1s = 1000s. If a recent LOG of the same event is SENT within this threshold it will be ignored.") + public static int ScriptIgnoreTime = 2000; + @ConfigProp(info = "Navigation search range for NPCs. Not recommended to increase if you have a slow pc or on a server. Minimum of 16, maximum of 96.") public static int NpcNavRange = 32; diff --git a/src/main/java/noppes/npcs/LogWriter.java b/src/main/java/noppes/npcs/LogWriter.java index 353ef3556..e501a5b6c 100644 --- a/src/main/java/noppes/npcs/LogWriter.java +++ b/src/main/java/noppes/npcs/LogWriter.java @@ -1,7 +1,5 @@ package noppes.npcs; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; import noppes.npcs.constants.EnumScriptType; import java.io.File; @@ -143,22 +141,36 @@ public class LogWriter { public static void scriptLogCalculator(WeakHashMap map, UUID npcUUID, String message) { if(map.containsKey(npcUUID)){ NPCStamp stamp = map.get(npcUUID); - long secondsSinceFirst = TimeUnit.MILLISECONDS.toSeconds(new Date().getTime() - stamp.date.getTime()); - stamp.counter++; + long secondsSinceFirst = TimeUnit.MILLISECONDS.toSeconds(new Date().getTime() - stamp.makeDate.getTime()); + long millisecSinceLast = TimeUnit.MILLISECONDS.toMillis(stamp.recentDate.getTime() - stamp.makeDate.getTime()); + double frequency = (float)CustomNpcs.ScriptFrequency / 60; - if(secondsSinceFirst < 10 && stamp.counter < 5) { + stamp.counter++; + + // Reset Log if 3 Minutes Pass + if (secondsSinceFirst > 180) { LogWriter.script(message); + stamp.counter = 1; + stamp.makeDate = new Date(); + stamp.recentDate = new Date(); + } + // ALWAYS Log the First 3 of Event + else if(secondsSinceFirst < 10 && stamp.counter < 4) { + LogWriter.script(message); + stamp.recentDate = new Date(); + } + // IF event occurs to QUICKLY Ignore. + else if (millisecSinceLast < CustomNpcs.ScriptIgnoreTime){ + stamp.recentDate = new Date(); } else if(secondsSinceFirst > 10 && (double)stamp.counter / secondsSinceFirst > frequency){ // WARN LogWriter.script("[SPAM]:" + message); stamp.counter = 0; - } else if (secondsSinceFirst > 60) { - LogWriter.script(message); - stamp.counter = 1; - stamp.date = new Date(); + stamp.recentDate = new Date(); } + } else { map.put(npcUUID, new NPCStamp()); LogWriter.script(message); @@ -194,6 +206,7 @@ public class LogWriter { class NPCStamp { - public Date date = new Date(); + public Date makeDate = new Date(); + public Date recentDate = new Date(); public int counter = 1; }; From b757e75dc5722528aa1d09d26c6c070a1415cf3c Mon Sep 17 00:00:00 2001 From: KAMKEEL Date: Thu, 3 Nov 2022 20:21:14 -0400 Subject: [PATCH 6/8] Change Default Values --- src/main/java/noppes/npcs/CustomNpcs.java | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/src/main/java/noppes/npcs/CustomNpcs.java b/src/main/java/noppes/npcs/CustomNpcs.java index 3abb6503a..35f2e0683 100644 --- a/src/main/java/noppes/npcs/CustomNpcs.java +++ b/src/main/java/noppes/npcs/CustomNpcs.java @@ -62,9 +62,9 @@ public class CustomNpcs { @ConfigProp(info = "Enables if Scripting Information should be printed to CustomNPCs Logs") public static boolean ScriptLogging = false; - @ConfigProp(info = "Amount of Messages marked as SPAM [5, 3000]. Higher Number means MORE accurate messages \n" + + @ConfigProp(info = "Amount of Messages marked as SPAM [5, 3000]. Lower Number means MORE accurate messages \n" + "This frequency will determine if the log will print a line with [SPAM] to warn the console.") - public static int ScriptFrequency = 30; + public static int ScriptFrequency = 20; @ConfigProp(info = "IN Milliseconds 1s = 1000s. If a recent LOG of the same event is SENT within this threshold it will be ignored.") public static int ScriptIgnoreTime = 2000; @@ -237,10 +237,13 @@ public class CustomNpcs { if (ExpandedScriptLimit < 0) ExpandedScriptLimit = 0; - if (ScriptFrequency < 10) - ScriptFrequency = 10; - if (ScriptFrequency > 300) - ScriptFrequency = 300; + if (ScriptFrequency < 5) + ScriptFrequency = 5; + if (ScriptFrequency > 3000) + ScriptFrequency = 3000; + + if (ScriptIgnoreTime < 0) + ScriptIgnoreTime = 0; EnchantInterface.load(); CustomItems.load(); From eb5560ffed229a738af85f9afe38ed384f11cd96 Mon Sep 17 00:00:00 2001 From: KAMKEEL Date: Thu, 3 Nov 2022 21:08:52 -0400 Subject: [PATCH 7/8] beta 2 --- build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index 5c1774d68..49f75e853 100644 --- a/build.gradle +++ b/build.gradle @@ -24,7 +24,7 @@ configurations { apply plugin: 'forge' -version = "1.6.4" +version = "1.6.5-beta2" group= "com.kamkeel.customnpc-plus" // http://maven.apache.org/guides/mini/guide-naming-conventions.html archivesBaseName = "CustomNPC-Plus" From 5d1477539a5b5f7b67848b7cc6d3565e998dbf79 Mon Sep 17 00:00:00 2001 From: KAMKEEL Date: Thu, 3 Nov 2022 21:28:18 -0400 Subject: [PATCH 8/8] Fix Counter & Log Reset --- src/main/java/noppes/npcs/LogWriter.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/main/java/noppes/npcs/LogWriter.java b/src/main/java/noppes/npcs/LogWriter.java index e501a5b6c..6a0911139 100644 --- a/src/main/java/noppes/npcs/LogWriter.java +++ b/src/main/java/noppes/npcs/LogWriter.java @@ -146,17 +146,17 @@ public class LogWriter { double frequency = (float)CustomNpcs.ScriptFrequency / 60; - stamp.counter++; + // Reset Log if 3 Minutes Pass - if (secondsSinceFirst > 180) { + if (secondsSinceFirst > 120) { LogWriter.script(message); stamp.counter = 1; stamp.makeDate = new Date(); stamp.recentDate = new Date(); } // ALWAYS Log the First 3 of Event - else if(secondsSinceFirst < 10 && stamp.counter < 4) { + else if(secondsSinceFirst < 10 && stamp.counter < 3) { LogWriter.script(message); stamp.recentDate = new Date(); } @@ -170,7 +170,7 @@ public class LogWriter { stamp.counter = 0; stamp.recentDate = new Date(); } - + stamp.counter++; } else { map.put(npcUUID, new NPCStamp()); LogWriter.script(message);