diff --git a/src/main/java/noppes/npcs/DataScript.java b/src/main/java/noppes/npcs/DataScript.java index 4522b5cfd..6b6bcfdef 100644 --- a/src/main/java/noppes/npcs/DataScript.java +++ b/src/main/java/noppes/npcs/DataScript.java @@ -187,6 +187,11 @@ public class DataScript implements IScriptHandler { } + @Override + public void callScript(EnumScriptType var1, Event var2) { + + } + public boolean isClient() { return this.npc.isRemote(); } diff --git a/src/main/java/noppes/npcs/EventHooks.java b/src/main/java/noppes/npcs/EventHooks.java index 7833cb110..d880305bf 100644 --- a/src/main/java/noppes/npcs/EventHooks.java +++ b/src/main/java/noppes/npcs/EventHooks.java @@ -55,42 +55,42 @@ public class EventHooks { public static void onPlayerInit(PlayerDataScript handler) { noppes.npcs.scripted.event.PlayerEvent.InitEvent event = new noppes.npcs.scripted.event.PlayerEvent.InitEvent(handler.getPlayer()); - handler.callScript(EnumScriptType.INIT, event, "event", event); + handler.callScript(EnumScriptType.INIT, event); WrapperNpcAPI.EVENT_BUS.post(event); } public static void onPlayerTick(PlayerDataScript handler) { noppes.npcs.scripted.event.PlayerEvent.UpdateEvent event = new noppes.npcs.scripted.event.PlayerEvent.UpdateEvent(handler.getPlayer()); - handler.callScript(EnumScriptType.TICK, event, "event", event); + handler.callScript(EnumScriptType.TICK, event); WrapperNpcAPI.EVENT_BUS.post(event); } public static boolean onPlayerInteract(PlayerDataScript handler, noppes.npcs.scripted.event.PlayerEvent.InteractEvent event) { - handler.callScript(EnumScriptType.INTERACT, event,"event", event); + handler.callScript(EnumScriptType.INTERACT, event); return WrapperNpcAPI.EVENT_BUS.post(event); } public static boolean onStartUsingItem(PlayerDataScript handler, int duration, ItemStack item){ PlayerEvent.StartUsingItem event = new PlayerEvent.StartUsingItem(handler.getPlayer(), item, duration); - handler.callScript(EnumScriptType.START_USING_ITEM, event,"event", event); + handler.callScript(EnumScriptType.START_USING_ITEM, event); return WrapperNpcAPI.EVENT_BUS.post(event); } public static boolean onUsingItem(PlayerDataScript handler, int duration, ItemStack item){ PlayerEvent.UsingItem event = new PlayerEvent.UsingItem(handler.getPlayer(), item, duration); - handler.callScript(EnumScriptType.USING_ITEM, event,"event", event); + handler.callScript(EnumScriptType.USING_ITEM, event); return WrapperNpcAPI.EVENT_BUS.post(event); } public static boolean onStopUsingItem(PlayerDataScript handler, int duration, ItemStack item){ PlayerEvent.StopUsingItem event = new PlayerEvent.StopUsingItem(handler.getPlayer(), item, duration); - handler.callScript(EnumScriptType.STOP_USING_ITEM, event,"event", event); + handler.callScript(EnumScriptType.STOP_USING_ITEM, event); return WrapperNpcAPI.EVENT_BUS.post(event); } public static void onFinishUsingItem(PlayerDataScript handler, int duration, ItemStack item){ PlayerEvent.FinishUsingItem event = new PlayerEvent.FinishUsingItem(handler.getPlayer(), item, duration); - handler.callScript(EnumScriptType.FINISH_USING_ITEM, event,"event", event); + handler.callScript(EnumScriptType.FINISH_USING_ITEM, event); WrapperNpcAPI.EVENT_BUS.post(event); } @@ -99,178 +99,178 @@ public class EventHooks { for(int i = 0; i < entityItems.size(); i++){ items[i] = NpcAPI.Instance().getIItemStack(entityItems.get(i).getEntityItem()); } DropEvent event = new DropEvent(handler.getPlayer(), items); - handler.callScript(EnumScriptType.DROP, event,"event", event); + handler.callScript(EnumScriptType.DROP, event); return WrapperNpcAPI.EVENT_BUS.post(event); } public static void onPlayerPickupXP(PlayerDataScript handler, EntityXPOrb orb) { PlayerEvent.PickupXPEvent event = new PlayerEvent.PickupXPEvent(handler.getPlayer(), orb); - handler.callScript(EnumScriptType.PICKUP_XP, event,"event", event); + handler.callScript(EnumScriptType.PICKUP_XP, event); WrapperNpcAPI.EVENT_BUS.post(event); } public static boolean onPlayerToss(PlayerDataScript handler, EntityItem entityItem) { PlayerEvent.TossEvent event = new PlayerEvent.TossEvent(handler.getPlayer(), NpcAPI.Instance().getIItemStack(entityItem.getEntityItem())); - handler.callScript(EnumScriptType.TOSS, event,"event", event); + handler.callScript(EnumScriptType.TOSS, event); return WrapperNpcAPI.EVENT_BUS.post(event); } public static boolean onPlayerPickUp(PlayerDataScript handler, EntityItem entityItem) { PickUpEvent event = new PickUpEvent(handler.getPlayer(), new ScriptItemStack(entityItem.getEntityItem()));//NpcAPI.Instance().getIItemStack(entityItem.getEntityItem())); - handler.callScript(EnumScriptType.PICKUP, event,"event", event); + handler.callScript(EnumScriptType.PICKUP, event); return WrapperNpcAPI.EVENT_BUS.post(event); } public static void onPlayerContainerOpen(PlayerDataScript handler, Container container) { ContainerOpen event = new ContainerOpen(handler.getPlayer(), NpcAPI.Instance().getIContainer(container)); - handler.callScript(EnumScriptType.CONTAINER_OPEN, event,"event", event); + handler.callScript(EnumScriptType.CONTAINER_OPEN, event); WrapperNpcAPI.EVENT_BUS.post(event); } public static void onPlayerUseHoe(PlayerDataScript handler, ItemStack hoe, int x, int y, int z) { noppes.npcs.scripted.event.PlayerEvent.UseHoe event = new noppes.npcs.scripted.event.PlayerEvent.UseHoe(handler.getPlayer(), hoe, x, y, z); - handler.callScript(EnumScriptType.USE_HOE, event,"event", event); + handler.callScript(EnumScriptType.USE_HOE, event); WrapperNpcAPI.EVENT_BUS.post(event); } public static void onPlayerSleep(PlayerDataScript handler, int x, int y, int z) { noppes.npcs.scripted.event.PlayerEvent.Sleep event = new noppes.npcs.scripted.event.PlayerEvent.Sleep(handler.getPlayer(), x, y, z); - handler.callScript(EnumScriptType.SLEEP, event,"event", event); + handler.callScript(EnumScriptType.SLEEP, event); WrapperNpcAPI.EVENT_BUS.post(event); } public static void onPlayerWakeUp(PlayerDataScript handler, boolean setSpawn) { noppes.npcs.scripted.event.PlayerEvent.WakeUp event = new noppes.npcs.scripted.event.PlayerEvent.WakeUp(handler.getPlayer(), setSpawn); - handler.callScript(EnumScriptType.WAKE_UP, event,"event", event); + handler.callScript(EnumScriptType.WAKE_UP, event); WrapperNpcAPI.EVENT_BUS.post(event); } public static void onPlayerDeath(PlayerDataScript handler, DamageSource source, Entity entity) { noppes.npcs.scripted.event.PlayerEvent.DiedEvent event = new noppes.npcs.scripted.event.PlayerEvent.DiedEvent(handler.getPlayer(), source, entity); - handler.callScript(EnumScriptType.KILLED, event,"event", event); + handler.callScript(EnumScriptType.KILLED, event); WrapperNpcAPI.EVENT_BUS.post(event); } public static void onPlayerKills(PlayerDataScript handler, EntityLivingBase entityLiving) { noppes.npcs.scripted.event.PlayerEvent.KilledEntityEvent event = new noppes.npcs.scripted.event.PlayerEvent.KilledEntityEvent(handler.getPlayer(), entityLiving); - handler.callScript(EnumScriptType.KILLS, event,"event", event); + handler.callScript(EnumScriptType.KILLS, event); WrapperNpcAPI.EVENT_BUS.post(event); } public static boolean onPlayerDamaged(PlayerDataScript handler, noppes.npcs.scripted.event.PlayerEvent.DamagedEvent event) { - handler.callScript(EnumScriptType.DAMAGED, event,"event", event); + handler.callScript(EnumScriptType.DAMAGED, event); return WrapperNpcAPI.EVENT_BUS.post(event); } public static boolean onPlayerLightning(PlayerDataScript handler) { PlayerEvent.LightningEvent event = new PlayerEvent.LightningEvent(handler.getPlayer()); - handler.callScript(EnumScriptType.LIGHTNING, event, "event", event); + handler.callScript(EnumScriptType.LIGHTNING, event); return WrapperNpcAPI.EVENT_BUS.post(event); } public static boolean onPlayerSound(PlayerDataScript handler, String name, float pitch, float volume) { PlayerEvent.SoundEvent event = new PlayerEvent.SoundEvent(handler.getPlayer(), name, pitch, volume); - handler.callScript(EnumScriptType.PLAYSOUND, event,"event", event); + handler.callScript(EnumScriptType.PLAYSOUND, event); return WrapperNpcAPI.EVENT_BUS.post(event); } public static void onPlayerFall(PlayerDataScript handler, float distance) { PlayerEvent.FallEvent event = new PlayerEvent.FallEvent(handler.getPlayer(),distance); - handler.callScript(EnumScriptType.FALL, event,"event", event); + handler.callScript(EnumScriptType.FALL, event); WrapperNpcAPI.EVENT_BUS.post(event); } public static void onPlayerJump(PlayerDataScript handler) { PlayerEvent.JumpEvent event = new PlayerEvent.JumpEvent(handler.getPlayer()); - handler.callScript(EnumScriptType.JUMP, event,"event", event); + handler.callScript(EnumScriptType.JUMP, event); WrapperNpcAPI.EVENT_BUS.post(event); } public static void onPlayerLogin(PlayerDataScript handler) { LoginEvent event = new LoginEvent(handler.getPlayer()); - handler.callScript(EnumScriptType.LOGIN, event, "event", event); + handler.callScript(EnumScriptType.LOGIN, event); WrapperNpcAPI.EVENT_BUS.post(event); } public static void onPlayerAchievement(PlayerDataScript handler, String description) { PlayerEvent.Achievement event = new PlayerEvent.Achievement(handler.getPlayer(), description); - handler.callScript(EnumScriptType.ACHIEVEMENT, event, "event", event); + handler.callScript(EnumScriptType.ACHIEVEMENT, event); WrapperNpcAPI.EVENT_BUS.post(event); } public static void onPlayerFillBucket(PlayerDataScript handler, ItemStack current, ItemStack result) { PlayerEvent.FillBucket event = new PlayerEvent.FillBucket(handler.getPlayer(), current, result); - handler.callScript(EnumScriptType.FILL_BUCKET, event, "event", event); + handler.callScript(EnumScriptType.FILL_BUCKET, event); WrapperNpcAPI.EVENT_BUS.post(event); } public static void onPlayerBonemeal(PlayerDataScript handler, int x, int y, int z, World world) { PlayerEvent.Bonemeal event = new PlayerEvent.Bonemeal(handler.getPlayer(), x, y, z, world); - handler.callScript(EnumScriptType.BONEMEAL, event, "event", event); + handler.callScript(EnumScriptType.BONEMEAL, event); WrapperNpcAPI.EVENT_BUS.post(event); } public static void onPlayerRespawn(PlayerDataScript handler) { PlayerEvent.RespawnEvent event = new PlayerEvent.RespawnEvent(handler.getPlayer()); - handler.callScript(EnumScriptType.RESPAWN, event, "event", event); + handler.callScript(EnumScriptType.RESPAWN, event); WrapperNpcAPI.EVENT_BUS.post(event); } public static void onPlayerLogout(PlayerDataScript handler) { LogoutEvent event = new LogoutEvent(handler.getPlayer()); - handler.callScript(EnumScriptType.LOGOUT, event, "event", event); + handler.callScript(EnumScriptType.LOGOUT, event); WrapperNpcAPI.EVENT_BUS.post(event); } public static void onPlayerChat(PlayerDataScript handler, ChatEvent event) { - handler.callScript(EnumScriptType.CHAT, event,"event", event); + handler.callScript(EnumScriptType.CHAT, event); WrapperNpcAPI.EVENT_BUS.post(event); } public static boolean onPlayerBowCharge(PlayerDataScript handler, noppes.npcs.scripted.event.PlayerEvent.RangedChargeEvent event) { - handler.callScript(EnumScriptType.RANGED_CHARGE, event,"event", event); + handler.callScript(EnumScriptType.RANGED_CHARGE, event); return WrapperNpcAPI.EVENT_BUS.post(event); } public static boolean onPlayerRanged(PlayerDataScript handler, noppes.npcs.scripted.event.PlayerEvent.RangedLaunchedEvent event) { - handler.callScript(EnumScriptType.RANGED_LAUNCHED, event,"event", event); + handler.callScript(EnumScriptType.RANGED_LAUNCHED, event); return WrapperNpcAPI.EVENT_BUS.post(event); } public static boolean onPlayerDamagedEntity(PlayerDataScript handler, DamagedEntityEvent event) { - handler.callScript(EnumScriptType.DAMAGED_ENTITY, event,"event", event); + handler.callScript(EnumScriptType.DAMAGED_ENTITY, event); return WrapperNpcAPI.EVENT_BUS.post(event); } public static void onPlayerChangeDim(PlayerDataScript handler, int fromDim, int toDim) { PlayerEvent.ChangedDimension event = new PlayerEvent.ChangedDimension(handler.getPlayer(), fromDim, toDim); - handler.callScript(EnumScriptType.CHANGED_DIM, event,"event", event); + handler.callScript(EnumScriptType.CHANGED_DIM, event); WrapperNpcAPI.EVENT_BUS.post(event); } public static void onPlayerMouseClicked(EntityPlayerMP player, int button, int mouseWheel, boolean buttonDown) { PlayerDataScript handler = PlayerData.get(player).scriptData; PlayerEvent.MouseClickedEvent event = new PlayerEvent.MouseClickedEvent(handler.getPlayer(), button, mouseWheel, buttonDown); - handler.callScript(EnumScriptType.MOUSE_CLICKED, event,"event", event); + handler.callScript(EnumScriptType.MOUSE_CLICKED, event); WrapperNpcAPI.EVENT_BUS.post(event); } public static void onPlayerKeyPressed(EntityPlayerMP player, int button, boolean isCtrlPressed, boolean isShiftPressed, boolean isAltPressed, boolean isMetaPressed, boolean buttonDown) { PlayerDataScript handler = PlayerData.get(player).scriptData; KeyPressedEvent event = new KeyPressedEvent(handler.getPlayer(), button, isCtrlPressed, isAltPressed, isShiftPressed, isMetaPressed, buttonDown); - handler.callScript(EnumScriptType.KEY_PRESSED, event,"event", event); + handler.callScript(EnumScriptType.KEY_PRESSED, event); WrapperNpcAPI.EVENT_BUS.post(event); } public static void onPlayerTimer(PlayerData data, int id) { PlayerDataScript handler = data.scriptData; noppes.npcs.scripted.event.PlayerEvent.TimerEvent event = new noppes.npcs.scripted.event.PlayerEvent.TimerEvent(handler.getPlayer(), id); - handler.callScript(EnumScriptType.TIMER, event,"event", event); + handler.callScript(EnumScriptType.TIMER, event); WrapperNpcAPI.EVENT_BUS.post(event); } public static boolean onPlayerBreak(PlayerDataScript handler, PlayerEvent.BreakEvent event) { - handler.callScript(EnumScriptType.BREAK_BLOCK, event,"event", event); + handler.callScript(EnumScriptType.BREAK_BLOCK, event); return WrapperNpcAPI.EVENT_BUS.post(event); } diff --git a/src/main/java/noppes/npcs/ScriptPlayerEventHandler.java b/src/main/java/noppes/npcs/ScriptPlayerEventHandler.java index 8aea2035f..eca610683 100644 --- a/src/main/java/noppes/npcs/ScriptPlayerEventHandler.java +++ b/src/main/java/noppes/npcs/ScriptPlayerEventHandler.java @@ -65,7 +65,9 @@ public class ScriptPlayerEventHandler { if(event.side == Side.SERVER && event.phase == TickEvent.Phase.START) { EntityPlayer player = event.player; PlayerData data = PlayerData.get(player); - EventHooks.onPlayerTick(data.scriptData); + + if(player.ticksExisted%10 == 0) + EventHooks.onPlayerTick(data.scriptData); if(PlayerDataController.instance != null) { PlayerDataController.instance.getPlayerData(player).scriptData = data.scriptData; diff --git a/src/main/java/noppes/npcs/controllers/IScriptHandler.java b/src/main/java/noppes/npcs/controllers/IScriptHandler.java index c52b9f852..4ece1fbca 100644 --- a/src/main/java/noppes/npcs/controllers/IScriptHandler.java +++ b/src/main/java/noppes/npcs/controllers/IScriptHandler.java @@ -11,7 +11,7 @@ import cpw.mods.fml.common.eventhandler.Event; import noppes.npcs.constants.EnumScriptType; public interface IScriptHandler { - void callScript(EnumScriptType var1, Event var2, Object... obs); + void callScript(EnumScriptType var1, Event var2); boolean isClient(); diff --git a/src/main/java/noppes/npcs/controllers/ScriptContainer.java b/src/main/java/noppes/npcs/controllers/ScriptContainer.java index f252a871f..6d20281f9 100644 --- a/src/main/java/noppes/npcs/controllers/ScriptContainer.java +++ b/src/main/java/noppes/npcs/controllers/ScriptContainer.java @@ -20,6 +20,7 @@ import noppes.npcs.CustomNpcs; import noppes.npcs.NBTTags; import noppes.npcs.NoppesUtilServer; import noppes.npcs.constants.EnumScriptType; +import noppes.npcs.scripted.NpcAPI; import scala.Char; public class ScriptContainer { @@ -133,46 +134,44 @@ public class ScriptContainer { this.init = false; } - String var3 = "lock"; - synchronized("lock") { - Current = this; - CurrentType = type; - StringWriter sw = new StringWriter(); - PrintWriter pw = new PrintWriter(sw); - this.engine.getContext().setWriter(pw); - this.engine.getContext().setErrorWriter(pw); + engine.put("API", NpcAPI.Instance()); - try { - if (!this.init) { - this.engine.eval(this.getFullCode()); - this.init = true; - } + Current = this; + CurrentType = type; + StringWriter sw = new StringWriter(); + PrintWriter pw = new PrintWriter(sw); + this.engine.getContext().setWriter(pw); + this.engine.getContext().setErrorWriter(pw); - ((Invocable)this.engine).invokeFunction(type, new Object[]{event}); - } catch (NoSuchMethodException var13) { - this.unknownFunctions.add(type); - } catch (Throwable var14) { - this.errored = true; - var14.printStackTrace(pw); - } finally { - String errorString = sw.getBuffer().toString().trim(); - int startIndex = 0; - if(!errorString.isEmpty()) { - String endString = "in at line number "; - startIndex = errorString.indexOf(endString) + endString.length(); - - for (int i = startIndex; i < errorString.length(); i++) { - if (!Character.isDigit(errorString.charAt(i))) { - startIndex = i; - break; - } - } - } - this.appandConsole(errorString.substring(0, startIndex)); - pw.close(); - Current = null; + try { + if (!this.init) { + this.engine.eval(this.getFullCode()); + this.init = true; } + ((Invocable)this.engine).invokeFunction(type, new Object[]{event}); + } catch (NoSuchMethodException var13) { + this.unknownFunctions.add(type); + } catch (Throwable var14) { + this.errored = true; + var14.printStackTrace(pw); + } finally { + String errorString = sw.getBuffer().toString().trim(); + int startIndex = 0; + if(!errorString.isEmpty()) { + String endString = "in at line number "; + startIndex = errorString.indexOf(endString) + endString.length(); + + for (int i = startIndex; i < errorString.length(); i++) { + if (!Character.isDigit(errorString.charAt(i))) { + startIndex = i; + break; + } + } + } + this.appandConsole(errorString.substring(0, startIndex)); + pw.close(); + Current = null; } } } diff --git a/src/main/java/noppes/npcs/controllers/data/ForgeDataScript.java b/src/main/java/noppes/npcs/controllers/data/ForgeDataScript.java index eb831b2f1..839211186 100644 --- a/src/main/java/noppes/npcs/controllers/data/ForgeDataScript.java +++ b/src/main/java/noppes/npcs/controllers/data/ForgeDataScript.java @@ -51,7 +51,7 @@ public class ForgeDataScript implements IScriptHandler { } @Override - public void callScript(EnumScriptType var1, Event var2, Object... obs) { + public void callScript(EnumScriptType var1, Event var2) { callScript(var1.function, var2); } @@ -67,18 +67,8 @@ public class ForgeDataScript implements IScriptHandler { Iterator var3 = this.scripts.iterator(); - while (var3.hasNext()) { - ScriptContainer script = (ScriptContainer) var3.next(); - - script.setEngine(scriptLanguage); - if(script.engine == null) - return; - - Event result = (Event) script.engine.get("event"); - if(result == null) - script.engine.put("event", event); - script.engine.put("API", new WrapperNpcAPI()); - + while(var3.hasNext()) { + ScriptContainer script = (ScriptContainer)var3.next(); script.run(type, event); } //}); diff --git a/src/main/java/noppes/npcs/controllers/data/PlayerDataScript.java b/src/main/java/noppes/npcs/controllers/data/PlayerDataScript.java index 3394672b7..d6f7110ab 100644 --- a/src/main/java/noppes/npcs/controllers/data/PlayerDataScript.java +++ b/src/main/java/noppes/npcs/controllers/data/PlayerDataScript.java @@ -77,72 +77,51 @@ public class PlayerDataScript implements IScriptHandler { return compound; } - public void callScript(EnumScriptType type, Event event, Object... obs) { - if(this.isEnabled()) { + public void callScript(EnumScriptType type, Event event) { + if (this.isEnabled()) { ScriptContainer script; - if(ScriptController.Instance.lastLoaded > this.lastInited || ScriptController.Instance.lastPlayerUpdate > this.lastPlayerUpdate) { + if (ScriptController.Instance.lastLoaded > this.lastInited || ScriptController.Instance.lastPlayerUpdate > this.lastPlayerUpdate) { this.lastInited = ScriptController.Instance.lastLoaded; - //ScriptController.Instance.playerScripts.errored.clear(); - if(this.player != null) { + errored.clear(); + if (this.player != null) { this.scripts.clear(); - Iterator i = ScriptController.Instance.playerScripts.scripts.iterator(); + Iterator var3 = ScriptController.Instance.playerScripts.scripts.iterator(); - while(i.hasNext()) { - script = (ScriptContainer)i.next(); + while(var3.hasNext()) { + script = (ScriptContainer)var3.next(); ScriptContainer s = new ScriptContainer(this); s.readFromNBT(script.writeToNBT(new NBTTagCompound())); - this.scripts.add(s); } } this.lastPlayerUpdate = ScriptController.Instance.lastPlayerUpdate; - if(type != EnumScriptType.INIT) { + if (type != EnumScriptType.INIT) { EventHooks.onPlayerInit(this); } } - for(int var7 = 0; var7 < this.scripts.size(); ++var7) { - script = (ScriptContainer)this.scripts.get(var7); - - if(!ScriptController.Instance.playerScripts.errored.contains(Integer.valueOf(var7))) { - if(script == null || script.errored || !script.hasCode()) - return; - script.setEngine(scriptLanguage); - if(script.engine == null) - return; - for(int i = 0; i + 1 < obs.length; i += 2){ - Object ob = obs[i + 1]; - if(ob instanceof Entity) - ob = ScriptController.Instance.getScriptForEntity((Entity)ob); - script.engine.put(obs[i].toString(), ob); - } - - ScriptEngine engine = script.engine; - engine.put("world", dummyWorld); - engine.put("player", dummyPlayer); - PlayerEvent result = (PlayerEvent) engine.get("event"); - if(result == null) - engine.put("event", result = new PlayerEvent(this.getPlayer())); - script.engine.put("API", new WrapperNpcAPI()); + for(int i = 0; i < this.scripts.size(); ++i) { + script = (ScriptContainer)this.scripts.get(i); + if (!errored.contains(i)) { script.run(type, event); - if (script.errored) { - ScriptController.Instance.playerScripts.errored.add(var7); + errored.add(i); } Iterator var8 = script.console.entrySet().iterator(); while(var8.hasNext()) { Entry entry = (Entry)var8.next(); - if (!ScriptController.Instance.playerScripts.console.containsKey(entry.getKey())) { - ScriptController.Instance.playerScripts.console.put(entry.getKey(), " tab " + (var7 + 1) + ":\n" + (String)entry.getValue()); + if (!console.containsKey(entry.getKey())) { + console.put(entry.getKey(), " tab " + (i + 1) + ":\n" + (String)entry.getValue()); } } script.console.clear(); } } + } }