Added support for varying log levels configurable in the server config (see log_level in default.conf)

Error logs now properly print to stderr when possible
Colour-coded logs
Addressed a scenario in which outgoing packet writes could get hung up
Fixed interface incorrect definition message on server startup
This commit is contained in:
Ceikry 2023-03-01 08:01:14 +00:00 committed by Ryan
parent e1faa64af7
commit 88a2f354b4
171 changed files with 723 additions and 475 deletions

View file

@ -197,6 +197,12 @@
"walkable": "true", "walkable": "true",
"tabIndex": "6" "tabIndex": "6"
}, },
{
"id": "195",
"interfaceType": "1",
"walkable": "true",
"tabIndex": "-1"
},
{ {
"id": "198", "id": "198",
"interfaceType": "1", "interfaceType": "1",

View file

@ -16,7 +16,7 @@
<dependencies> <dependencies>
<dependency> <dependency>
<groupId>org.jetbrains.kotlin</groupId> <groupId>org.jetbrains.kotlin</groupId>
<artifactId>kotlin-stdlib-jdk8</artifactId> <artifactId>kotlin-stdlib</artifactId>
<version>${kotlin.version}</version> <version>${kotlin.version}</version>
<scope>compile</scope> <scope>compile</scope>
</dependency> </dependency>

View file

@ -3,13 +3,13 @@ package content.data.tables;
import core.api.StartupListener; import core.api.StartupListener;
import core.game.node.item.Item; import core.game.node.item.Item;
import core.game.node.item.WeightedChanceItem; import core.game.node.item.WeightedChanceItem;
import core.tools.Log;
import core.tools.RandomFunction; import core.tools.RandomFunction;
import org.w3c.dom.Document; import org.w3c.dom.Document;
import org.w3c.dom.Element; import org.w3c.dom.Element;
import org.w3c.dom.Node; import org.w3c.dom.Node;
import org.w3c.dom.NodeList; import org.w3c.dom.NodeList;
import core.ServerConstants; import core.ServerConstants;
import core.tools.SystemLogger;
import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.DocumentBuilderFactory;
@ -18,7 +18,7 @@ import java.io.File;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import static core.tools.SystemLogger.logInfo; import static core.api.ContentAPIKt.log;
/** /**
* Handles the allotment seed drop table. * Handles the allotment seed drop table.
@ -57,11 +57,11 @@ public final class AllotmentSeedDropTable implements StartupListener {
@Override @Override
public void startup() { public void startup() {
if(ServerConstants.ASDT_DATA_PATH != null && !new File(ServerConstants.ASDT_DATA_PATH).exists()){ if(ServerConstants.ASDT_DATA_PATH != null && !new File(ServerConstants.ASDT_DATA_PATH).exists()){
SystemLogger.logErr(this.getClass(), "Can't locate ASDT file at " + ServerConstants.ASDT_DATA_PATH); log(this.getClass(), Log.ERR, "Can't locate ASDT file at " + ServerConstants.ASDT_DATA_PATH);
return; return;
} }
parse(ServerConstants.ASDT_DATA_PATH); parse(ServerConstants.ASDT_DATA_PATH);
logInfo(this.getClass(), "Initialized Allotment Seed Drop Table from " + ServerConstants.ASDT_DATA_PATH); log(this.getClass(), Log.FINE, "Initialized Allotment Seed Drop Table from " + ServerConstants.ASDT_DATA_PATH);
} }
/** /**

View file

@ -4,7 +4,7 @@ import core.api.StartupListener;
import core.ServerConstants; import core.ServerConstants;
import core.game.node.item.Item; import core.game.node.item.Item;
import core.game.node.item.WeightedChanceItem; import core.game.node.item.WeightedChanceItem;
import core.tools.SystemLogger; import core.tools.Log;
import core.tools.RandomFunction; import core.tools.RandomFunction;
import org.w3c.dom.Document; import org.w3c.dom.Document;
import org.w3c.dom.Element; import org.w3c.dom.Element;
@ -18,7 +18,7 @@ import java.io.File;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import static core.tools.SystemLogger.logInfo; import static core.api.ContentAPIKt.log;
/** /**
* Handles the Chaos Elemental's minor drop table. It is supposed to roll this table alongside its standard major drops on the main table. * Handles the Chaos Elemental's minor drop table. It is supposed to roll this table alongside its standard major drops on the main table.
@ -57,11 +57,11 @@ public final class CELEMinorTable implements StartupListener {
@Override @Override
public void startup() { public void startup() {
if(ServerConstants.CELEDT_DATA_PATH != null && !new File(ServerConstants.CELEDT_DATA_PATH).exists()){ if(ServerConstants.CELEDT_DATA_PATH != null && !new File(ServerConstants.CELEDT_DATA_PATH).exists()){
SystemLogger.logErr(this.getClass(), "Can't locate CELEDT file at " + ServerConstants.CELEDT_DATA_PATH); log(this.getClass(), Log.ERR, "Can't locate CELEDT file at " + ServerConstants.CELEDT_DATA_PATH);
return; return;
} }
parse(ServerConstants.CELEDT_DATA_PATH); parse(ServerConstants.CELEDT_DATA_PATH);
logInfo(this.getClass(), "Loaded up Chaos Elemental drop table from " + ServerConstants.CELEDT_DATA_PATH); log(this.getClass(), Log.FINE, "Loaded up Chaos Elemental drop table from " + ServerConstants.CELEDT_DATA_PATH);
} }
/** /**

View file

@ -3,13 +3,13 @@ package content.data.tables;
import core.api.StartupListener; import core.api.StartupListener;
import core.game.node.item.Item; import core.game.node.item.Item;
import core.game.node.item.WeightedChanceItem; import core.game.node.item.WeightedChanceItem;
import core.tools.Log;
import core.tools.RandomFunction; import core.tools.RandomFunction;
import org.w3c.dom.Document; import org.w3c.dom.Document;
import org.w3c.dom.Element; import org.w3c.dom.Element;
import org.w3c.dom.Node; import org.w3c.dom.Node;
import org.w3c.dom.NodeList; import org.w3c.dom.NodeList;
import core.ServerConstants; import core.ServerConstants;
import core.tools.SystemLogger;
import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.DocumentBuilderFactory;
@ -18,7 +18,7 @@ import java.io.File;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import static core.tools.SystemLogger.logInfo; import static core.api.ContentAPIKt.log;
/** /**
* Handles the gem drop table. * Handles the gem drop table.
@ -57,11 +57,11 @@ public final class GemDropTable implements StartupListener {
@Override @Override
public void startup() { public void startup() {
if(ServerConstants.GDT_DATA_PATH != null && !new File(ServerConstants.GDT_DATA_PATH).exists()){ if(ServerConstants.GDT_DATA_PATH != null && !new File(ServerConstants.GDT_DATA_PATH).exists()){
SystemLogger.logErr(this.getClass(), "Can't locate GDT file at " + ServerConstants.GDT_DATA_PATH); log(this.getClass(), Log.ERR, "Can't locate GDT file at " + ServerConstants.GDT_DATA_PATH);
return; return;
} }
parse(ServerConstants.GDT_DATA_PATH); parse(ServerConstants.GDT_DATA_PATH);
logInfo(this.getClass(), "Initialized Gem Drop Table from " + ServerConstants.GDT_DATA_PATH); log(this.getClass(), Log.FINE, "Initialized Gem Drop Table from " + ServerConstants.GDT_DATA_PATH);
} }
/** /**

View file

@ -3,13 +3,13 @@ package content.data.tables;
import core.api.StartupListener; import core.api.StartupListener;
import core.game.node.item.Item; import core.game.node.item.Item;
import core.game.node.item.WeightedChanceItem; import core.game.node.item.WeightedChanceItem;
import core.tools.Log;
import core.tools.RandomFunction; import core.tools.RandomFunction;
import org.w3c.dom.Document; import org.w3c.dom.Document;
import org.w3c.dom.Element; import org.w3c.dom.Element;
import org.w3c.dom.Node; import org.w3c.dom.Node;
import org.w3c.dom.NodeList; import org.w3c.dom.NodeList;
import core.ServerConstants; import core.ServerConstants;
import core.tools.SystemLogger;
import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.DocumentBuilderFactory;
@ -18,7 +18,7 @@ import java.io.File;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import static core.tools.SystemLogger.logInfo; import static core.api.ContentAPIKt.log;
/** /**
* Handles the herb drop table. * Handles the herb drop table.
@ -57,11 +57,11 @@ public final class HerbDropTable implements StartupListener {
@Override @Override
public void startup() { public void startup() {
if(ServerConstants.HDT_DATA_PATH != null && !new File(ServerConstants.HDT_DATA_PATH).exists()){ if(ServerConstants.HDT_DATA_PATH != null && !new File(ServerConstants.HDT_DATA_PATH).exists()){
SystemLogger.logErr(this.getClass(), "Can't locate HDT file at " + ServerConstants.HDT_DATA_PATH); log(this.getClass(), Log.ERR, "Can't locate HDT file at " + ServerConstants.HDT_DATA_PATH);
return; return;
} }
parse(ServerConstants.HDT_DATA_PATH); parse(ServerConstants.HDT_DATA_PATH);
logInfo(this.getClass(), "Initialized Herb Drop Table from " + ServerConstants.HDT_DATA_PATH); log(this.getClass(), Log.FINE, "Initialized Herb Drop Table from " + ServerConstants.HDT_DATA_PATH);
} }
/** /**

View file

@ -2,15 +2,15 @@ package content.data.tables
import core.ServerConstants import core.ServerConstants
import core.api.StartupListener import core.api.StartupListener
import core.api.log
import core.api.shouldRemoveNothings import core.api.shouldRemoveNothings
import core.api.utils.WeightBasedTable import core.api.utils.WeightBasedTable
import core.api.utils.WeightedItem import core.api.utils.WeightedItem
import core.game.node.entity.Entity import core.game.node.entity.Entity
import core.game.node.entity.player.Player import core.game.node.entity.player.Player
import core.game.node.item.Item import core.game.node.item.Item
import core.tools.Log
import core.tools.RandomFunction import core.tools.RandomFunction
import core.tools.SystemLogger.logErr
import core.tools.SystemLogger.logInfo
import org.rs09.consts.Items import org.rs09.consts.Items
import org.w3c.dom.Element import org.w3c.dom.Element
import org.w3c.dom.Node import org.w3c.dom.Node
@ -26,11 +26,11 @@ import javax.xml.parsers.ParserConfigurationException
class RareDropTable : StartupListener { class RareDropTable : StartupListener {
override fun startup() { override fun startup() {
if (ServerConstants.RDT_DATA_PATH != null && !File(ServerConstants.RDT_DATA_PATH).exists()) { if (ServerConstants.RDT_DATA_PATH != null && !File(ServerConstants.RDT_DATA_PATH).exists()) {
logErr(this.javaClass, "Can't locate RDT file at " + ServerConstants.RDT_DATA_PATH) log(this::class.java, Log.ERR, "Can't locate RDT file at " + ServerConstants.RDT_DATA_PATH)
return return
} }
parse(ServerConstants.RDT_DATA_PATH) parse(ServerConstants.RDT_DATA_PATH)
logInfo(this.javaClass, "Initialized Rare Drop Table from " + ServerConstants.RDT_DATA_PATH) log(this::class.java, Log.FINE, "Initialized Rare Drop Table from " + ServerConstants.RDT_DATA_PATH)
} }
companion object { companion object {

View file

@ -3,13 +3,13 @@ package content.data.tables;
import core.api.StartupListener; import core.api.StartupListener;
import core.game.node.item.Item; import core.game.node.item.Item;
import core.game.node.item.WeightedChanceItem; import core.game.node.item.WeightedChanceItem;
import core.tools.Log;
import core.tools.RandomFunction; import core.tools.RandomFunction;
import org.w3c.dom.Document; import org.w3c.dom.Document;
import org.w3c.dom.Element; import org.w3c.dom.Element;
import org.w3c.dom.Node; import org.w3c.dom.Node;
import org.w3c.dom.NodeList; import org.w3c.dom.NodeList;
import core.ServerConstants; import core.ServerConstants;
import core.tools.SystemLogger;
import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.DocumentBuilderFactory;
@ -18,7 +18,7 @@ import java.io.File;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import static core.tools.SystemLogger.logInfo; import static core.api.ContentAPIKt.log;
/** /**
* Handles the rare seed drop table. * Handles the rare seed drop table.
@ -57,11 +57,11 @@ public final class RareSeedDropTable implements StartupListener {
@Override @Override
public void startup() { public void startup() {
if(ServerConstants.RSDT_DATA_PATH != null && !new File(ServerConstants.RSDT_DATA_PATH).exists()){ if(ServerConstants.RSDT_DATA_PATH != null && !new File(ServerConstants.RSDT_DATA_PATH).exists()){
SystemLogger.logErr(this.getClass(), "Can't locate RSDT file at " + ServerConstants.RSDT_DATA_PATH); log(this.getClass(), Log.ERR, "Can't locate RSDT file at " + ServerConstants.RSDT_DATA_PATH);
return; return;
} }
parse(ServerConstants.RSDT_DATA_PATH); parse(ServerConstants.RSDT_DATA_PATH);
logInfo(this.getClass(), "Initialized Rare Seed Drop Table from " + ServerConstants.RSDT_DATA_PATH); log(this.getClass(), Log.FINE, "Initialized Rare Seed Drop Table from " + ServerConstants.RSDT_DATA_PATH);
} }
/** /**

View file

@ -3,13 +3,13 @@ package content.data.tables;
import core.api.StartupListener; import core.api.StartupListener;
import core.game.node.item.Item; import core.game.node.item.Item;
import core.game.node.item.WeightedChanceItem; import core.game.node.item.WeightedChanceItem;
import core.tools.Log;
import core.tools.RandomFunction; import core.tools.RandomFunction;
import org.w3c.dom.Document; import org.w3c.dom.Document;
import org.w3c.dom.Element; import org.w3c.dom.Element;
import org.w3c.dom.Node; import org.w3c.dom.Node;
import org.w3c.dom.NodeList; import org.w3c.dom.NodeList;
import core.ServerConstants; import core.ServerConstants;
import core.tools.SystemLogger;
import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.DocumentBuilderFactory;
@ -18,7 +18,7 @@ import java.io.File;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import static core.tools.SystemLogger.logInfo; import static core.api.ContentAPIKt.log;
/** /**
* Handles the uncommon seed drop table. * Handles the uncommon seed drop table.
@ -57,11 +57,11 @@ public final class UncommonSeedDropTable implements StartupListener {
@Override @Override
public void startup() { public void startup() {
if(ServerConstants.USDT_DATA_PATH != null && !new File(ServerConstants.USDT_DATA_PATH).exists()){ if(ServerConstants.USDT_DATA_PATH != null && !new File(ServerConstants.USDT_DATA_PATH).exists()){
SystemLogger.logErr(this.getClass(), "Can't locate USDT file at " + ServerConstants.USDT_DATA_PATH); log(this.getClass(), Log.ERR, "Can't locate USDT file at " + ServerConstants.USDT_DATA_PATH);
return; return;
} }
parse(ServerConstants.USDT_DATA_PATH); parse(ServerConstants.USDT_DATA_PATH);
logInfo(this.getClass(), "Initialized Uncommon Seed Drop Table from " + ServerConstants.USDT_DATA_PATH); log(this.getClass(), Log.FINE, "Initialized Uncommon Seed Drop Table from " + ServerConstants.USDT_DATA_PATH);
} }
/** /**

View file

@ -74,7 +74,7 @@ class LarryHandler(player: Player? = null) : core.game.dialogue.DialoguePlugin(p
} }
val level = getStatLevel(player, skill) val level = getStatLevel(player, skill)
System.out.println("Level: $level")
val expGained = points?.toDouble()?.times((level * 25)) val expGained = points?.toDouble()?.times((level * 25))
System.out.print("exp: $expGained") System.out.print("exp: $expGained")
player.skills.addExperience(skill,expGained!!) player.skills.addExperience(skill,expGained!!)

View file

@ -3,10 +3,12 @@ package content.global.activity.penguinhns
import org.json.simple.JSONObject import org.json.simple.JSONObject
import core.ServerStore import core.ServerStore
import core.api.StartupListener import core.api.StartupListener
import core.api.log
import core.game.worldevents.PluginSet import core.game.worldevents.PluginSet
import core.game.worldevents.WorldEvent import core.game.worldevents.WorldEvent
import core.game.world.GameWorld import core.game.world.GameWorld
import core.plugin.ClassScanner import core.plugin.ClassScanner
import core.tools.Log
import core.tools.SystemLogger import core.tools.SystemLogger
class PenguinHNSEvent : StartupListener { class PenguinHNSEvent : StartupListener {
@ -15,7 +17,7 @@ class PenguinHNSEvent : StartupListener {
override fun startup() { override fun startup() {
manager.rebuildVars() manager.rebuildVars()
ClassScanner.definePlugins(LarryHandler(), NotebookHandler()) ClassScanner.definePlugins(LarryHandler(), NotebookHandler())
SystemLogger.logInfo(this::class.java, "Penguin HNS initialized.") log(this::class.java, Log.FINE, "Penguin HNS initialized.")
} }
companion object { companion object {

View file

@ -7,6 +7,8 @@ import core.game.world.map.Location
import org.json.simple.JSONArray import org.json.simple.JSONArray
import org.json.simple.JSONObject import org.json.simple.JSONObject
import core.ServerStore.Companion.toJSONArray import core.ServerStore.Companion.toJSONArray
import core.api.log
import core.tools.Log
import java.util.* import java.util.*
class PenguinManager{ class PenguinManager{
@ -31,7 +33,7 @@ class PenguinManager{
private fun updateStoreFile(){ private fun updateStoreFile(){
val jsonTags = JSONArray() val jsonTags = JSONArray()
tagMapping.filter { it.value.isNotEmpty() }.forEach { (ordinal,taggers) -> tagMapping.filter { it.value.isNotEmpty() }.forEach { (ordinal,taggers) ->
SystemLogger.logInfo(this::class.java, "$ordinal - ${taggers.first()}") log(this::class.java, Log.FINE, "$ordinal - ${taggers.first()}")
val tag = JSONObject() val tag = JSONObject()
tag["ordinal"] = ordinal tag["ordinal"] = ordinal
tag["taggers"] = taggers tag["taggers"] = taggers
@ -64,8 +66,4 @@ class PenguinManager{
penguins = spawnedOrdinals.toMutableList() penguins = spawnedOrdinals.toMutableList()
} }
} }
fun log(message: String){
SystemLogger.logInfo(this::class.java, "[Penguins] $message")
}
} }

View file

@ -15,6 +15,7 @@ import core.game.interaction.IntType
import core.tools.SystemLogger import core.tools.SystemLogger
import core.game.system.command.Privilege import core.game.system.command.Privilege
import core.game.world.GameWorld import core.game.world.GameWorld
import core.tools.Log
import core.tools.secondsToTicks import core.tools.secondsToTicks
class ShootingStarPlugin : LoginListener, InteractionListener, TickListener, Commands, StartupListener { class ShootingStarPlugin : LoginListener, InteractionListener, TickListener, Commands, StartupListener {
@ -112,7 +113,7 @@ class ShootingStarPlugin : LoginListener, InteractionListener, TickListener, Com
} }
override fun startup() { override fun startup() {
SystemLogger.logInfo(this::class.java, "Shooting Stars initialized.") log(this::class.java, Log.FINE, "Shooting Stars initialized.")
} }
private data class ScoreboardEntry(val player: String, val time: Int) private data class ScoreboardEntry(val player: String, val time: Int)

View file

@ -3,6 +3,7 @@ package content.global.activity.ttrail;
import core.game.component.Component; import core.game.component.Component;
import core.game.node.entity.player.Player; import core.game.node.entity.player.Player;
import core.game.node.item.Item; import core.game.node.item.Item;
import core.tools.Log;
import core.tools.SystemLogger; import core.tools.SystemLogger;
import core.game.world.map.zone.MapZone; import core.game.world.map.zone.MapZone;
import core.game.world.map.zone.ZoneBorders; import core.game.world.map.zone.ZoneBorders;
@ -15,6 +16,8 @@ import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import static core.api.ContentAPIKt.log;
/** /**
* Represents a clue scroll plugin. * Represents a clue scroll plugin.
* @author Vexia * @author Vexia
@ -138,7 +141,7 @@ public abstract class ClueScrollPlugin extends MapZone implements Plugin<Object>
if(clue.getClueId() == 2681) if(clue.getClueId() == 2681)
return; return;
if (CLUE_SCROLLS.containsKey(clue.getClueId())) { if (CLUE_SCROLLS.containsKey(clue.getClueId())) {
SystemLogger.logErr(this.getClass(), "Error! Plugin already registered with clue id - " + clue.getClueId() + ", trying to register " + clue.getClass().getCanonicalName() + " the real plugin using the id is " + CLUE_SCROLLS.get(clue.getClueId()).getClass().getCanonicalName() + "!"); log(this.getClass(), Log.ERR, "Error! Plugin already registered with clue id - " + clue.getClueId() + ", trying to register " + clue.getClass().getCanonicalName() + " the real plugin using the id is " + CLUE_SCROLLS.get(clue.getClueId()).getClass().getCanonicalName() + "!");
return; return;
} }
List<ClueScrollPlugin> organized = (List<ClueScrollPlugin>) ORGANIZED.get(clue.getLevel()); List<ClueScrollPlugin> organized = (List<ClueScrollPlugin>) ORGANIZED.get(clue.getLevel());
@ -169,7 +172,7 @@ public abstract class ClueScrollPlugin extends MapZone implements Plugin<Object>
public static Item getClue(ClueLevel clueLevel) { public static Item getClue(ClueLevel clueLevel) {
List<ClueScrollPlugin> clues = ORGANIZED.get(clueLevel); List<ClueScrollPlugin> clues = ORGANIZED.get(clueLevel);
if (clues == null) { if (clues == null) {
SystemLogger.logErr(ClueScrollPlugin.class, "Error! There are no clues for level " + clueLevel + "!"); log(ClueScrollPlugin.class, Log.ERR, "Error! There are no clues for level " + clueLevel + "!");
return null; return null;
} }
ClueScrollPlugin clue = clues.get(RandomFunction.random(clues.size())); ClueScrollPlugin clue = clues.get(RandomFunction.random(clues.size()));

View file

@ -1,20 +1,17 @@
package content.global.ame package content.global.ame
import core.api.Commands import core.api.*
import core.api.LoginListener
import core.game.event.EventHook import core.game.event.EventHook
import core.game.event.TickEvent import core.game.event.TickEvent
import core.api.getAttribute
import core.api.setAttribute
import core.game.node.entity.Entity import core.game.node.entity.Entity
import core.game.node.entity.player.Player import core.game.node.entity.player.Player
import core.game.world.map.zone.ZoneRestriction import core.game.world.map.zone.ZoneRestriction
import core.tools.RandomFunction import core.tools.RandomFunction
import core.api.Event
import core.tools.SystemLogger import core.tools.SystemLogger
import core.game.system.command.Privilege import core.game.system.command.Privilege
import core.game.world.GameWorld import core.game.world.GameWorld
import core.game.world.repository.Repository import core.game.world.repository.Repository
import core.tools.Log
import kotlin.random.Random import kotlin.random.Random
class RandomEventManager(val player: Player? = null) : LoginListener, EventHook<TickEvent>, Commands { class RandomEventManager(val player: Player? = null) : LoginListener, EventHook<TickEvent>, Commands {
@ -30,7 +27,6 @@ class RandomEventManager(val player: Player? = null) : LoginListener, EventHook<
setAttribute(player, "random-manager", instance) setAttribute(player, "random-manager", instance)
instance.rollNextSpawn() instance.rollNextSpawn()
instance.enabled = true instance.enabled = true
SystemLogger.logRE("Initialized REManager for ${player.username}.")
} }
override fun process(entity: Entity, event: TickEvent) { override fun process(entity: Entity, event: TickEvent) {
@ -62,12 +58,12 @@ class RandomEventManager(val player: Player? = null) : LoginListener, EventHook<
event = ame.npc.create(player,ame.loot,ame.type) event = ame.npc.create(player,ame.loot,ame.type)
if (event!!.spawnLocation == null) { if (event!!.spawnLocation == null) {
nextSpawn = GameWorld.ticks + 3000 nextSpawn = GameWorld.ticks + 3000
SystemLogger.logWarn(this::class.java, "Tried to spawn random event for ${player.username} but spawn location was null!") log(this::class.java, Log.WARN, "Tried to spawn random event for ${player.username} but spawn location was null!")
return return
} }
event!!.init() event!!.init()
rollNextSpawn() rollNextSpawn()
SystemLogger.logRE("Fired ${event!!.name} for ${player.username}") log(this::class.java, Log.FINE, "Fired ${event!!.name} for ${player.username}")
} }
private fun rollNextSpawn() { private fun rollNextSpawn() {

View file

@ -9,6 +9,7 @@ import core.game.node.entity.player.link.audio.Audio
import core.game.node.entity.skill.Skills import core.game.node.entity.skill.Skills
import core.plugin.Initializable import core.plugin.Initializable
import core.plugin.Plugin import core.plugin.Plugin
import core.tools.Log
import core.tools.SystemLogger import core.tools.SystemLogger
/** /**
@ -70,7 +71,7 @@ class ExperienceInterface() : ComponentPlugin() {
46 -> Skills.WOODCUTTING 46 -> Skills.WOODCUTTING
40 -> Skills.FLETCHING 40 -> Skills.FLETCHING
51 -> Skills.CONSTRUCTION 51 -> Skills.CONSTRUCTION
else -> Skills.SLAYER.also { SystemLogger.logWarn(this::class.java, "EXP_INTERFACE: Invalid SKILL CHOICE BUTTON: $button") } else -> Skills.SLAYER.also { log(this::class.java, Log.WARN, "EXP_INTERFACE: Invalid SKILL CHOICE BUTTON: $button") }
} }
player.setAttribute("exp_interface:skill",skill) player.setAttribute("exp_interface:skill",skill)
} }

View file

@ -41,7 +41,7 @@ public class QuestTabInterface extends ComponentPlugin {
break; break;
default: default:
// if (GameWorld.isEconomyWorld()) { // if (GameWorld.isEconomyWorld()) {
//System.out.println("Quest button: " + button);
Quest quest = p.getQuestRepository().forButtonId(button); Quest quest = p.getQuestRepository().forButtonId(button);
if (quest != null) { if (quest != null) {
p.getInterfaceManager().open(new Component(275)); p.getInterfaceManager().open(new Component(275));

View file

@ -51,7 +51,7 @@ public final class ShoppingPlugin extends ComponentPlugin {
return true; return true;
} }
if (viewer == null) { if (viewer == null) {
System.out.println("shop is null");
return true; return true;
} }
final Container container = button == 0 ? player.getInventory() : viewer.getShop().getContainer(viewer.getTabIndex()); final Container container = button == 0 ? player.getInventory() : viewer.getShop().getContainer(viewer.getTabIndex());

View file

@ -31,7 +31,7 @@ public final class WorldMapInterface extends ComponentPlugin {
player.updateSceneGraph(true); player.updateSceneGraph(true);
return true; return true;
default: default:
//SystemLogger.logErr(this.getClass(), "World map: buttonid: " + button + ", opcode: " + opcode + ", slot: " + slot); //log(this.getClass(), Log.ERR, "World map: buttonid: " + button + ", opcode: " + opcode + ", slot: " + slot);
return true; return true;
} }
} }

View file

@ -17,6 +17,7 @@ import core.game.ge.GrandExchangeOffer
import core.game.ge.GrandExchangeRecords import core.game.ge.GrandExchangeRecords
import core.game.ge.PriceIndex import core.game.ge.PriceIndex
import core.game.interaction.InterfaceListener import core.game.interaction.InterfaceListener
import core.tools.Log
import core.tools.SystemLogger import core.tools.SystemLogger
/** /**
@ -199,7 +200,7 @@ class StockMarket : InterfaceListener {
{ {
if(offer == null) if(offer == null)
{ {
SystemLogger.logWarn(this::class.java, "Opened offer was null and was attempted to be aborted!") log(this::class.java, Log.WARN, "Opened offer was null and was attempted to be aborted!")
return return
} }
sendMessage(player, "Abort request acknowledged. Please be aware that your offer may") sendMessage(player, "Abort request acknowledged. Please be aware that your offer may")
@ -207,7 +208,7 @@ class StockMarket : InterfaceListener {
if(!offer.isActive) if(!offer.isActive)
{ {
SystemLogger.logWarn(this::class.java, "Offer ${offer.uid}[${offer.index}]: ${if(offer.sell) "s" else "b"} ${offer.itemID}x ${offer.amount} was NO LONGER active when abort attempted") log(this::class.java, Log.WARN, "Offer ${offer.uid}[${offer.index}]: ${if(offer.sell) "s" else "b"} ${offer.itemID}x ${offer.amount} was NO LONGER active when abort attempted")
return return
} }
offer.offerState = OfferState.ABORTED offer.offerState = OfferState.ABORTED
@ -341,7 +342,7 @@ class StockMarket : InterfaceListener {
val item = offer.withdraw[index] val item = offer.withdraw[index]
if(item == null) if(item == null)
{ {
SystemLogger.logWarn(this::class.java, "Offer withdraw[$index] is null!") log(this::class.java, Log.WARN, "Offer withdraw[$index] is null!")
return return
} }

View file

@ -1,5 +1,6 @@
package content.global.handlers.item package content.global.handlers.item
import core.api.log
import core.cache.def.impl.ItemDefinition import core.cache.def.impl.ItemDefinition
import core.game.interaction.OptionHandler import core.game.interaction.OptionHandler
import core.game.node.Node import core.game.node.Node
@ -8,6 +9,7 @@ import core.game.node.item.Item
import core.game.world.update.flag.context.Animation import core.game.world.update.flag.context.Animation
import core.plugin.Initializable import core.plugin.Initializable
import core.plugin.Plugin import core.plugin.Plugin
import core.tools.Log
import kotlinx.coroutines.GlobalScope import kotlinx.coroutines.GlobalScope
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
import org.rs09.consts.Items import org.rs09.consts.Items
@ -63,7 +65,7 @@ class EnchantJewelleryTabOption : OptionHandler(){
} }
if(items == null){ if(items == null){
SystemLogger.logWarn(this::class.java, "UNHANDLED ENCHANT ITEM TABLET [ID: ${node?.id}") log(this::class.java, Log.WARN, "UNHANDLED ENCHANT ITEM TABLET [ID: ${node?.id}")
return true return true
} }

View file

@ -14,7 +14,7 @@ import content.global.skill.agility.AgilityHandler;
public class RopeSwing extends UseWithHandler { public class RopeSwing extends UseWithHandler {
@Override @Override
public boolean handle(NodeUsageEvent event) { public boolean handle(NodeUsageEvent event) {
System.out.println("Trying to handle.");
if(event.getUsedWith() instanceof Scenery){ if(event.getUsedWith() instanceof Scenery){
Scenery object = event.getUsedWith().asScenery(); Scenery object = event.getUsedWith().asScenery();
int objId = object.getId(); int objId = object.getId();

View file

@ -11,9 +11,12 @@ import core.game.node.entity.player.Player;
import core.game.node.scenery.Scenery; import core.game.node.scenery.Scenery;
import core.plugin.Initializable; import core.plugin.Initializable;
import core.plugin.Plugin; import core.plugin.Plugin;
import core.tools.Log;
import core.tools.SystemLogger; import core.tools.SystemLogger;
import core.plugin.ClassScanner; import core.plugin.ClassScanner;
import static core.api.ContentAPIKt.log;
/** /**
* The build option handling plugin. * The build option handling plugin.
* @author Emperor * @author Emperor
@ -63,8 +66,8 @@ public final class BuildOptionPlugin extends OptionHandler {
} }
Hotspot hotspot = player.getHouseManager().getHotspot(object); Hotspot hotspot = player.getHouseManager().getHotspot(object);
if (hotspot == null || !isBuildable(player, object, hotspot)) { if (hotspot == null || !isBuildable(player, object, hotspot)) {
System.out.println(hotspot == null);
SystemLogger.logErr(this.getClass(), "Construction (building): " + hotspot + " : " + object + " chunkX = " + object.getLocation().getChunkX() + ", chunkY = " + object.getLocation().getChunkY()); log(this.getClass(), Log.ERR, "Construction (building): " + hotspot + " : " + object + " chunkX = " + object.getLocation().getChunkX() + ", chunkY = " + object.getLocation().getChunkY());
return true; return true;
} }

View file

@ -16,12 +16,15 @@ import core.game.world.update.flag.context.Animation;
import core.net.packet.PacketRepository; import core.net.packet.PacketRepository;
import core.net.packet.context.ContainerContext; import core.net.packet.context.ContainerContext;
import core.net.packet.out.ContainerPacket; import core.net.packet.out.ContainerPacket;
import core.tools.Log;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import core.tools.SystemLogger; import core.tools.SystemLogger;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
import static core.api.ContentAPIKt.log;
/** /**
* Utility class for building. * Utility class for building.
* @author Emperor * @author Emperor
@ -135,7 +138,7 @@ public final class BuildingUtils {
player.getPacketDispatch().sendString("Level " + decoration.getLevel(), 396, 140 + menuIndex); player.getPacketDispatch().sendString("Level " + decoration.getLevel(), 396, 140 + menuIndex);
//player.getPacketDispatch().sendItemZoomOnInterface(items[i].protocol(), 50000, 396, 49 + i); //player.getPacketDispatch().sendItemZoomOnInterface(items[i].protocol(), 50000, 396, 49 + i);
} }
System.out.println(c261Value);
player.getConfigManager().set(261, c261Value); player.getConfigManager().set(261, c261Value);
PacketRepository.send(ContainerPacket.class, new ContainerContext(player, 396, 132, 8, items, false)); PacketRepository.send(ContainerPacket.class, new ContainerContext(player, 396, 132, 8, items, false));
} }
@ -287,7 +290,7 @@ public final class BuildingUtils {
} }
} }
} else { } else {
SystemLogger.logErr(BuildingUtils.class, "Couldn't find stairs! " + plane); log(BuildingUtils.class, Log.ERR, "Couldn't find stairs! " + plane);
} }
} }
} }
@ -407,7 +410,7 @@ public final class BuildingUtils {
} }
} }
} else { } else {
SystemLogger.logErr(BuildingUtils.class, "Couldn't find stairs! " + plane); log(BuildingUtils.class, Log.ERR, "Couldn't find stairs! " + plane);
} }
} }
} }
@ -549,7 +552,7 @@ public final class BuildingUtils {
} }
} }
//(0=east, 1=south, 2=west, 3=north). //(0=east, 1=south, 2=west, 3=north).
// System.out.println("Roof information: index=" + index + ", exit count=" + count + "; array=" + Arrays.toString(exits));
if (count == 4) { if (count == 4) {
room = Room.create(player, RoomProperties.ROOF_4_EXIT); room = Room.create(player, RoomProperties.ROOF_4_EXIT);
} }

View file

@ -10,8 +10,11 @@ import core.game.node.entity.skill.Skills;
import core.game.node.scenery.Scenery; import core.game.node.scenery.Scenery;
import core.plugin.Initializable; import core.plugin.Initializable;
import core.plugin.Plugin; import core.plugin.Plugin;
import core.tools.Log;
import core.tools.SystemLogger; import core.tools.SystemLogger;
import static core.api.ContentAPIKt.log;
/** /**
* Handles the creating of a decoration object. * Handles the creating of a decoration object.
* @author Emperor * @author Emperor
@ -38,12 +41,12 @@ public final class ConstructionInterface extends ComponentPlugin {
Hotspot hotspot = player.getAttribute("con:hotspot"); Hotspot hotspot = player.getAttribute("con:hotspot");
Scenery object = player.getAttribute("con:hsobject"); Scenery object = player.getAttribute("con:hsobject");
if (hotspot == null || object == null) { if (hotspot == null || object == null) {
SystemLogger.logErr(this.getClass(), "Failed building decoration " + hotspot + " : " + object); log(this.getClass(), Log.ERR, "Failed building decoration " + hotspot + " : " + object);
break; break;
} }
slot = ((slot % 2 != 0) ? 4 : 0) + (slot >> 1); slot = ((slot % 2 != 0) ? 4 : 0) + (slot >> 1);
if (slot >= hotspot.getHotspot().getDecorations().length) { if (slot >= hotspot.getHotspot().getDecorations().length) {
SystemLogger.logErr(this.getClass(), "Failed building decoration " + slot + "/" + hotspot.getHotspot().getDecorations().length); log(this.getClass(), Log.ERR, "Failed building decoration " + slot + "/" + hotspot.getHotspot().getDecorations().length);
break; break;
} }
boolean debug = player.isStaff(); boolean debug = player.isStaff();
@ -104,7 +107,7 @@ public final class ConstructionInterface extends ComponentPlugin {
break; break;
case 402: case 402:
int index = button - 160; int index = button - 160;
SystemLogger.logErr(this.getClass(), "BuildRoom Interface Index: " + index); log(this.getClass(), Log.FINE, "BuildRoom Interface Index: " + index);
if (index > -1 && index < RoomProperties.values().length) { if (index > -1 && index < RoomProperties.values().length) {
player.getDialogueInterpreter().open("con:room", RoomProperties.values()[index]); player.getDialogueInterpreter().open("con:room", RoomProperties.values()[index]);
return true; return true;

View file

@ -17,6 +17,7 @@ import core.game.world.map.build.DynamicRegion;
import core.game.world.map.zone.ZoneBorders; import core.game.world.map.zone.ZoneBorders;
import core.game.world.map.zone.ZoneBuilder; import core.game.world.map.zone.ZoneBuilder;
import core.game.world.update.flag.context.Animation; import core.game.world.update.flag.context.Animation;
import core.tools.Log;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable; import org.jetbrains.annotations.Nullable;
import org.json.simple.JSONArray; import org.json.simple.JSONArray;
@ -27,6 +28,7 @@ import core.game.world.GameWorld;
import java.awt.*; import java.awt.*;
import java.nio.ByteBuffer; import java.nio.ByteBuffer;
import static core.api.ContentAPIKt.log;
import static core.api.regionspec.RegionSpecificationKt.fillWith; import static core.api.regionspec.RegionSpecificationKt.fillWith;
import static core.api.regionspec.RegionSpecificationKt.using; import static core.api.regionspec.RegionSpecificationKt.using;
@ -323,7 +325,7 @@ public final class HouseManager {
*/ */
public Location getEnterLocation() { public Location getEnterLocation() {
if (houseRegion == null) { if (houseRegion == null) {
SystemLogger.logErr(this.getClass(), "House wasn't constructed yet!"); log(this.getClass(), Log.ERR, "House wasn't constructed yet!");
return null; return null;
} }
for (int x = 0; x < 8; x++) { for (int x = 0; x < 8; x++) {

View file

@ -1,5 +1,6 @@
package content.global.skill.crafting.lightsources package content.global.skill.crafting.lightsources
import core.api.log
import core.cache.def.impl.ItemDefinition import core.cache.def.impl.ItemDefinition
import core.game.container.Container import core.game.container.Container
import core.game.interaction.OptionHandler import core.game.interaction.OptionHandler
@ -9,6 +10,7 @@ import core.game.node.item.Item
import core.tools.SystemLogger import core.tools.SystemLogger
import core.plugin.Initializable import core.plugin.Initializable
import core.plugin.Plugin import core.plugin.Plugin
import core.tools.Log
/** /**
@ -28,7 +30,7 @@ class LightSourceExtinguisher : OptionHandler(){
val lightSource = LightSources.forId(node.id) val lightSource = LightSources.forId(node.id)
lightSource ?: return false.also { SystemLogger.logWarn(this::class.java, "UNHANDLED EXTINGUISH OPTION: ID = ${node.id}") } lightSource ?: return false.also { log(this::class.java, Log.WARN, "UNHANDLED EXTINGUISH OPTION: ID = ${node.id}") }
player.inventory.replace(node.asItem(), Item(lightSource.fullID)) player.inventory.replace(node.asItem(), Item(lightSource.fullID))
return true return true

View file

@ -73,7 +73,6 @@ class FarmingState(player: Player? = null) : State(player) {
val cBin = CompostBins.values()[binOrdinal] val cBin = CompostBins.values()[binOrdinal]
val b = cBin.getBinForPlayer(player) val b = cBin.getBinForPlayer(player)
b.parse(bin["binData"] as JSONObject) b.parse(bin["binData"] as JSONObject)
SystemLogger.logErr(this::class.java, "bin size " + binMap.size)
} }
} }
if(_data.containsKey("farming-patches")){ if(_data.containsKey("farming-patches")){

View file

@ -1,5 +1,6 @@
package content.global.skill.farming package content.global.skill.farming
import core.api.log
import core.cache.def.impl.SceneryDefinition import core.cache.def.impl.SceneryDefinition
import core.game.interaction.OptionHandler import core.game.interaction.OptionHandler
import core.game.node.Node import core.game.node.Node
@ -8,6 +9,7 @@ import core.game.node.entity.skill.Skills
import core.tools.SystemLogger import core.tools.SystemLogger
import core.plugin.Initializable import core.plugin.Initializable
import core.plugin.Plugin import core.plugin.Plugin
import core.tools.Log
import java.util.concurrent.TimeUnit import java.util.concurrent.TimeUnit
@Initializable @Initializable
@ -39,7 +41,7 @@ class HealthChecker : OptionHandler(){
PatchType.FRUIT_TREE -> patch.setCurrentState(patch.getCurrentState() - 14) PatchType.FRUIT_TREE -> patch.setCurrentState(patch.getCurrentState() - 14)
PatchType.BUSH -> patch.setCurrentState(patch.plantable!!.value + patch.plantable!!.stages + 4) PatchType.BUSH -> patch.setCurrentState(patch.plantable!!.value + patch.plantable!!.stages + 4)
PatchType.CACTUS -> patch.setCurrentState(patch.plantable!!.value + patch.plantable!!.stages + 3) PatchType.CACTUS -> patch.setCurrentState(patch.plantable!!.value + patch.plantable!!.stages + 3)
else -> SystemLogger.logErr(this::class.java,"Unreachable patch type from when(type) switch in HealthChecker.kt line 36") else -> log(this::class.java, Log.ERR, "Unreachable patch type from when(type) switch in HealthChecker.kt line 36")
} }
if(type == PatchType.FRUIT_TREE){ if(type == PatchType.FRUIT_TREE){

View file

@ -1,6 +1,8 @@
package content.global.skill.farming package content.global.skill.farming
import core.api.log
import core.game.node.entity.player.Player import core.game.node.entity.player.Player
import core.tools.Log
import core.tools.RandomFunction import core.tools.RandomFunction
import org.rs09.consts.Items import org.rs09.consts.Items
import core.tools.SystemLogger import core.tools.SystemLogger
@ -110,7 +112,7 @@ class Patch(val player: Player, val patch: FarmingPatch, var plantable: Plantabl
PatchType.FRUIT_TREE -> player.varpManager.get(patch.varpIndex).setVarbit(patch.varpOffset,plantable!!.value + plantable!!.stages + 20) PatchType.FRUIT_TREE -> player.varpManager.get(patch.varpIndex).setVarbit(patch.varpOffset,plantable!!.value + plantable!!.stages + 20)
PatchType.BUSH -> player.varpManager.get(patch.varpIndex).setVarbit(patch.varpOffset,250 + (plantable!!.ordinal - Plantable.REDBERRY_SEED.ordinal)) PatchType.BUSH -> player.varpManager.get(patch.varpIndex).setVarbit(patch.varpOffset,250 + (plantable!!.ordinal - Plantable.REDBERRY_SEED.ordinal))
PatchType.CACTUS -> player.varpManager.get(patch.varpIndex).setVarbit(patch.varpOffset, 31) PatchType.CACTUS -> player.varpManager.get(patch.varpIndex).setVarbit(patch.varpOffset, 31)
else -> SystemLogger.logWarn(this::class.java, "Invalid setting of isCheckHealth for patch type: " + patch.type.name) else -> log(this::class.java, Log.WARN, "Invalid setting of isCheckHealth for patch type: " + patch.type.name)
} }
} else { } else {
when(patch.type){ when(patch.type){

View file

@ -59,7 +59,7 @@ public enum FishingSpot {
for(FishingOption o : this.options){ for(FishingOption o : this.options){
if(o.getName().equals(name)){return o;} if(o.getName().equals(name)){return o;}
} }
System.out.println("Unhandled fishing spot option, spot id: " + this.ids[0] + " desired fishing option: " + name);
return FishingOption.SMALL_NET; //safe, default return. return FishingOption.SMALL_NET; //safe, default return.
} }

View file

@ -645,7 +645,6 @@ public enum SkillingResource {
static { static {
for (SkillingResource resource : SkillingResource.values()) { for (SkillingResource resource : SkillingResource.values()) {
if (RESOURCES.containsKey(resource.id)) { if (RESOURCES.containsKey(resource.id)) {
SystemLogger.logErr(SkillingResource.class, "Already contained resource " + resource.getId() + " - " + resource.name());
} }
RESOURCES.put(resource.id, resource); RESOURCES.put(resource.id, resource);
} }

View file

@ -54,7 +54,7 @@ class FishingPulse(player: Player?, npc: NPC, private val option: FishingOption?
} }
player.debug(player.inventory.containsItem(option.tool).toString()) player.debug(player.inventory.containsItem(option.tool).toString())
if (!player.inventory.containsItem(option.tool) && !hasBarbTail()) { if (!player.inventory.containsItem(option.tool) && !hasBarbTail()) {
//System.out.println(isBareHanded(player));
player.dialogueInterpreter.sendDialogue("You need a " + option.tool.name.toLowerCase() + " to catch these fish.") player.dialogueInterpreter.sendDialogue("You need a " + option.tool.name.toLowerCase() + " to catch these fish.")
stop() stop()
return false return false

View file

@ -5,6 +5,7 @@ import core.game.node.entity.npc.NPC;
import core.game.node.entity.player.Player; import core.game.node.entity.player.Player;
import core.game.node.item.Item; import core.game.node.item.Item;
import core.game.node.scenery.Scenery; import core.game.node.scenery.Scenery;
import core.tools.Log;
import core.tools.SystemLogger; import core.tools.SystemLogger;
import core.game.world.map.Location; import core.game.world.map.Location;
import core.game.world.update.flag.context.Animation; import core.game.world.update.flag.context.Animation;
@ -12,6 +13,8 @@ import core.game.world.update.flag.context.Animation;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import static core.api.ContentAPIKt.log;
/** /**
* Represents a trap type. * Represents a trap type.
* @author Vexia * @author Vexia
@ -101,7 +104,7 @@ public enum Traps {
return; return;
} }
if (instance.getWrapper(object) == null) { if (instance.getWrapper(object) == null) {
SystemLogger.logErr(this.getClass(), "NO WRAPPER (HUNTER DISMANTLE)"); log(this.getClass(), Log.ERR, "NO WRAPPER (HUNTER DISMANTLE)");
return; return;
} }
player.faceLocation(object.getLocation()); player.faceLocation(object.getLocation());

View file

@ -1,5 +1,6 @@
package content.global.skill.hunter.tracking package content.global.skill.hunter.tracking
import core.api.log
import core.game.interaction.OptionHandler import core.game.interaction.OptionHandler
import core.game.node.Node import core.game.node.Node
import core.game.node.scenery.Scenery import core.game.node.scenery.Scenery
@ -14,6 +15,7 @@ import core.tools.RandomFunction
import org.rs09.consts.Items import org.rs09.consts.Items
import core.tools.SystemLogger import core.tools.SystemLogger
import core.game.world.GameWorld import core.game.world.GameWorld
import core.tools.Log
import java.util.* import java.util.*
/** /**
@ -50,7 +52,7 @@ abstract class HunterTracking : OptionHandler(){
val trail = player.getAttribute(attribute, ArrayList<TrailDefinition>()) val trail = player.getAttribute(attribute, ArrayList<TrailDefinition>())
val initialTrail = getInitialTrail(startobj) val initialTrail = getInitialTrail(startobj)
if(initialTrail == null) { if(initialTrail == null) {
SystemLogger.logWarn(this::class.java, "UNHANDLED STARTING OBJECT FOR HUNTER TRACKING $startobj") log(this::class.java, Log.WARN, "UNHANDLED STARTING OBJECT FOR HUNTER TRACKING $startobj")
return return
} }
trail.add(initialTrail) trail.add(initialTrail)

View file

@ -1,7 +1,9 @@
package content.global.skill.magic package content.global.skill.magic
import core.api.log
import core.game.node.Node import core.game.node.Node
import core.game.node.entity.player.Player import core.game.node.entity.player.Player
import core.tools.Log
import core.tools.SystemLogger import core.tools.SystemLogger
object SpellListeners { object SpellListeners {
@ -18,12 +20,12 @@ object SpellListeners {
} }
fun get(spellID: Int, type: Int, book: String): ((Player,Node?) -> Unit)?{ fun get(spellID: Int, type: Int, book: String): ((Player,Node?) -> Unit)?{
SystemLogger.logInfo(this::class.java, "Getting $book:$spellID:$type") log(this::class.java, Log.FINE, "Getting $book:$spellID:$type")
return castMap["$book:$spellID:$type"] return castMap["$book:$spellID:$type"]
} }
fun get(spellID: Int, type: Int, id: Int, book: String): ((Player,Node?) -> Unit)?{ fun get(spellID: Int, type: Int, id: Int, book: String): ((Player,Node?) -> Unit)?{
SystemLogger.logInfo(this::class.java, "Getting $book:$spellID:$type:$id") log(this::class.java, Log.FINE, "Getting $book:$spellID:$type:$id")
return castMap["$book:$spellID:$type:$id"] return castMap["$book:$spellID:$type:$id"]
} }

View file

@ -105,7 +105,7 @@ public final class ChargeOrbSpells extends MagicSpell {
&& objectId == 2151 && objectId == 2151
&& p.getInventory().containsItems(Runes.COSMIC_RUNE.getItem(15), Runes.WATER_RUNE.getItem(150), new Item(UNPOWERED_ORB.getId(), 5))) { && p.getInventory().containsItems(Runes.COSMIC_RUNE.getItem(15), Runes.WATER_RUNE.getItem(150), new Item(UNPOWERED_ORB.getId(), 5))) {
p.setAttribute("/save:diary:seers:water-orb-can-earn", true); p.setAttribute("/save:diary:seers:water-orb-can-earn", true);
System.out.println("can_earn_true");
p.setAttribute("/save:diary:seers:water-orb", 1); p.setAttribute("/save:diary:seers:water-orb", 1);
} }
if (!meetsRequirements(entity, true, true)) { if (!meetsRequirements(entity, true, true)) {

View file

@ -4,7 +4,6 @@ import core.api.*
import core.game.node.Node import core.game.node.Node
import core.plugin.ClassScanner.definePlugin import core.plugin.ClassScanner.definePlugin
import core.tools.colorize import core.tools.colorize
import core.tools.SystemLogger.logInfo
import core.game.node.scenery.Scenery import core.game.node.scenery.Scenery
import core.game.node.entity.impl.Animator import core.game.node.entity.impl.Animator
import core.game.node.entity.npc.NPC import core.game.node.entity.npc.NPC
@ -28,6 +27,7 @@ import org.rs09.consts.Scenery as Sceneries
import core.game.interaction.InteractionListener import core.game.interaction.InteractionListener
import core.game.interaction.IntType import core.game.interaction.IntType
import core.game.world.GameWorld import core.game.world.GameWorld
import core.tools.Log
import kotlin.math.cos import kotlin.math.cos
import kotlin.math.sin import kotlin.math.sin
import kotlin.random.Random import kotlin.random.Random
@ -255,7 +255,7 @@ class AbyssPlugin : InteractionListener {
const val BURN_PROGRESS = 16 const val BURN_PROGRESS = 16
const val DISTRACT_PROGRESS = 18 const val DISTRACT_PROGRESS = 18
fun handleObstacle(obstacle: Node, player: Player, skill: Int, varbitVal: Int?, animation: Animation, messages: Array<String>): Boolean { fun handleObstacle(obstacle: Node, player: Player, skill: Int, varbitVal: Int?, animation: Animation, messages: Array<String>): Boolean {
logInfo(this::class.java, "handled abyss ${obstacle.name}") log(this::class.java, Log.FINE, "handled abyss ${obstacle.name}")
player.lock() player.lock()
player.animate(animation) player.animate(animation)
GameWorld.Pulser.submit(object : Pulse(1, player) { GameWorld.Pulser.submit(object : Pulse(1, player) {

View file

@ -23,6 +23,7 @@ import core.game.world.map.zone.ZoneRestriction;
import core.game.world.update.flag.context.Animation; import core.game.world.update.flag.context.Animation;
import core.game.world.update.flag.context.Graphics; import core.game.world.update.flag.context.Graphics;
import core.plugin.Plugin; import core.plugin.Plugin;
import core.tools.Log;
import core.tools.RandomFunction; import core.tools.RandomFunction;
import core.game.node.entity.combat.CombatPulse; import core.game.node.entity.combat.CombatPulse;
import core.game.node.entity.combat.CombatSwingHandler; import core.game.node.entity.combat.CombatSwingHandler;
@ -33,6 +34,8 @@ import content.global.skill.summoning.SummoningPouch;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import static core.api.ContentAPIKt.log;
/** /**
* Represents a familiar. * Represents a familiar.
* @author Emperor * @author Emperor
@ -579,7 +582,7 @@ public abstract class Familiar extends NPC implements Plugin<Object> {
face(owner); face(owner);
} }
if (!isRenderable() && owner.isActive()) { if (!isRenderable() && owner.isActive()) {
// SystemLogger.logErr(this.getClass(), "Familiar in inactive region!"); // log(this.getClass(), Log.ERR, "Familiar in inactive region!");
getWalkingQueue().update(); getWalkingQueue().update();
getUpdateMasks().prepare(this); getUpdateMasks().prepare(this);
} }
@ -628,7 +631,7 @@ public abstract class Familiar extends NPC implements Plugin<Object> {
public Plugin<Object> newInstance(Object arg) throws Throwable { public Plugin<Object> newInstance(Object arg) throws Throwable {
for (int id : getIds()) { for (int id : getIds()) {
if (FamiliarManager.getFamiliars().containsKey(id)) { if (FamiliarManager.getFamiliars().containsKey(id)) {
SystemLogger.logErr(this.getClass(), "Familiar " + id + " was already registered!"); log(this.getClass(), Log.ERR, "Familiar " + id + " was already registered!");
return null; return null;
} }
FamiliarManager.getFamiliars().put(id, this); FamiliarManager.getFamiliars().put(id, this);

View file

@ -75,7 +75,7 @@ public class PickableDoorHandler extends OptionHandler {
door.pickLock(player, (Scenery) node); door.pickLock(player, (Scenery) node);
return true; return true;
} }
System.out.println("Unhandled door: " + node.getId());
return false; return false;
} }

View file

@ -1,8 +1,10 @@
package content.minigame.allfiredup package content.minigame.allfiredup
import core.api.log
import core.game.node.entity.player.Player import core.game.node.entity.player.Player
import core.tools.SystemLogger import core.tools.SystemLogger
import core.game.world.map.Location import core.game.world.map.Location
import core.tools.Log
/** /**
* Various data for beacons, such as varp and offset, required FM level, etc * Various data for beacons, such as varp and offset, required FM level, etc
@ -29,7 +31,7 @@ enum class AFUBeacon(val title: String, val fmLevel: Int, val varpId: Int, val o
for (beacon in values()) { for (beacon in values()) {
if (beacon.location.equals(location)) return beacon if (beacon.location.equals(location)) return beacon
} }
return content.minigame.allfiredup.AFUBeacon.RIVER_SALVE.also { SystemLogger.logWarn(this::class.java, "Unhandled Beacon Location ${location.toString()}") } return content.minigame.allfiredup.AFUBeacon.RIVER_SALVE.also { log(this::class.java, Log.WARN, "Unhandled Beacon Location ${location.toString()}") }
} }
fun resetAllBeacons(player: Player){ fun resetAllBeacons(player: Player){

View file

@ -97,7 +97,7 @@ public final class BarrowsActivityPlugin extends ActivityPlugin {
} }
} }
int drain = 8; int drain = 8;
System.out.println(getWorldTicks() % 30);
//if (p.getLocks().isLocked("barrow:drain") || RandomFunction.random(100) % 2 == 0) { //if (p.getLocks().isLocked("barrow:drain") || RandomFunction.random(100) % 2 == 0) {
// continue; // continue;
//} //}

View file

@ -3,6 +3,7 @@ package content.minigame.fishingtrawler
import core.api.LogoutListener import core.api.LogoutListener
import core.api.MapArea import core.api.MapArea
import core.api.getRegionBorders import core.api.getRegionBorders
import core.api.log
import core.game.component.Component import core.game.component.Component
import core.game.node.entity.Entity import core.game.node.entity.Entity
import core.game.node.scenery.Scenery import core.game.node.scenery.Scenery
@ -294,11 +295,11 @@ class FishingTrawlerSession(val activity: FishingTrawlerActivity? = null) : Logo
override fun areaEnter(entity: Entity) { override fun areaEnter(entity: Entity) {
super.areaEnter(entity) super.areaEnter(entity)
SystemLogger.logInfo(this::class.java, "ENTERED FTZ") log(this::class.java, Log.FINE, "ENTERED FTZ")
} }
override fun areaLeave(entity: Entity, logout: Boolean) { override fun areaLeave(entity: Entity, logout: Boolean) {
super.areaLeave(entity, logout) super.areaLeave(entity, logout)
SystemLogger.logInfo(this::class.java, "EXITED FTZ") log(this::class.java, Log.FINE, "EXITED FTZ")
} }
} }

View file

@ -1,5 +1,6 @@
package content.minigame.fog package content.minigame.fog
import core.api.log
import core.cache.def.impl.ItemDefinition import core.cache.def.impl.ItemDefinition
import core.game.component.Component import core.game.component.Component
import core.game.component.ComponentDefinition import core.game.component.ComponentDefinition
@ -8,6 +9,7 @@ import core.game.node.entity.player.Player
import core.game.node.item.Item import core.game.node.item.Item
import core.plugin.Initializable import core.plugin.Initializable
import core.plugin.Plugin import core.plugin.Plugin
import core.tools.Log
import core.tools.SystemLogger import core.tools.SystemLogger
@Initializable @Initializable
@ -52,7 +54,7 @@ class FOGRewardsInterface : ComponentPlugin(){
176 -> choice = Air_Gloves 176 -> choice = Air_Gloves
181 -> choice = Water_Gloves 181 -> choice = Water_Gloves
186 -> choice = Earth_Gloves 186 -> choice = Earth_Gloves
else -> SystemLogger.logWarn(this::class.java, "Unhandled button ID for FOG interface: $button").also { return true } else -> log(this::class.java, Log.WARN, "Unhandled button ID for FOG interface: $button").also { return true }
} }
handleOpcode(choice,opcode,player!!) handleOpcode(choice,opcode,player!!)
return true return true

View file

@ -21,7 +21,7 @@ public final class PCIslandZone extends MapZone {
@Override @Override
public boolean death(Entity e, Entity killer) { public boolean death(Entity e, Entity killer) {
if (e instanceof Player) { // Ensure players can't die on the island. if (e instanceof Player) { // Ensure players can't die on the island.
// System.out.println("[PCIslandZone] Saved player from death!");
e.getProperties().setTeleportLocation(e.getLocation()); e.getProperties().setTeleportLocation(e.getLocation());
return true; return true;
} }

View file

@ -16,6 +16,7 @@ import core.game.node.entity.player.info.Rights;
import core.game.node.item.Item; import core.game.node.item.Item;
import core.game.node.scenery.Scenery; import core.game.node.scenery.Scenery;
import core.game.system.task.Pulse; import core.game.system.task.Pulse;
import core.tools.Log;
import core.tools.SystemLogger; import core.tools.SystemLogger;
import core.game.world.GameWorld; import core.game.world.GameWorld;
import core.game.world.map.Direction; import core.game.world.map.Direction;
@ -34,6 +35,8 @@ import core.plugin.Plugin;
import core.tools.StringUtils; import core.tools.StringUtils;
import core.game.node.entity.skill.Skills; import core.game.node.entity.skill.Skills;
import static core.api.ContentAPIKt.log;
/** /**
* Handles the god wars map zone. * Handles the god wars map zone.
* @author Emperor * @author Emperor
@ -368,7 +371,7 @@ public final class GodwarsMapzone extends MapZone implements Plugin<Object> {
} }
if (DoorActionHandler.handleAutowalkDoor(player, object)) { if (DoorActionHandler.handleAutowalkDoor(player, object)) {
SystemLogger.logInfo(this.getClass(), player.getUsername() + " entered " + faction.name() + " gwd boss room"); log(this.getClass(), Log.FINE, player.getUsername() + " entered " + faction.name() + " gwd boss room");
increaseKillcount(player, faction, -required); increaseKillcount(player, faction, -required);
} }
return true; return true;

View file

@ -266,7 +266,7 @@ class TheGolemListeners : InteractionListener {
} }
fun placeStatuette(player: Player): Boolean { fun placeStatuette(player: Player): Boolean {
System.out.println("Hello from placeStatuette")
if(player.inventory.remove(Item(4618))) { if(player.inventory.remove(Item(4618))) {
player.sendMessage("You insert the statuette into the alcove.") player.sendMessage("You insert the statuette into the alcove.")
player.setAttribute("/save:the-golem:placed-statuette", true) player.setAttribute("/save:the-golem:placed-statuette", true)

View file

@ -16,6 +16,7 @@ import core.game.node.entity.npc.NPC;
import core.game.node.entity.player.Player; import core.game.node.entity.player.Player;
import core.game.node.entity.player.link.quest.Quest; import core.game.node.entity.player.link.quest.Quest;
import core.game.node.item.Item; import core.game.node.item.Item;
import core.tools.Log;
import core.tools.SystemLogger; import core.tools.SystemLogger;
import core.game.system.task.Pulse; import core.game.system.task.Pulse;
import core.game.world.GameWorld; import core.game.world.GameWorld;
@ -24,6 +25,8 @@ import core.game.world.update.flag.context.Animation;
import core.plugin.Plugin; import core.plugin.Plugin;
import core.tools.RandomFunction; import core.tools.RandomFunction;
import static core.api.ContentAPIKt.log;
/** /**
* Handles the dwarf cannon quest interactions. * Handles the dwarf cannon quest interactions.
* @author Vexia * @author Vexia
@ -289,7 +292,7 @@ public class DwarfCannonPlugin extends OptionHandler {
} }
Part part = Part.forId(button); Part part = Part.forId(button);
if (part == null) { if (part == null) {
SystemLogger.logErr(this.getClass(), "Unhandled part id - " + button + "!"); log(this.getClass(), Log.ERR, "Unhandled part id - " + button + "!");
return true; return true;
} }
if (this.tool.getPart() != part) { if (this.tool.getPart() != part) {

View file

@ -26,7 +26,7 @@ public class GarlicPipeInteraction extends PluginInteraction {
@Override @Override
public boolean handle(Player player, NodeUsageEvent event) { public boolean handle(Player player, NodeUsageEvent event) {
System.out.println("Trying to handle it");
if(event.getUsed() instanceof Item && event.getUsedWith() instanceof Scenery){ if(event.getUsed() instanceof Item && event.getUsedWith() instanceof Scenery){
Scenery usedWith = event.getUsedWith().asScenery(); Scenery usedWith = event.getUsedWith().asScenery();
Item used = event.getUsedItem(); Item used = event.getUsedItem();

View file

@ -16,6 +16,7 @@ import content.region.kandarin.seers.quest.elementalworkshop.EWUtils.WATER_WHEEL
import content.region.kandarin.seers.quest.elementalworkshop.EWUtils.currentStage import content.region.kandarin.seers.quest.elementalworkshop.EWUtils.currentStage
import core.game.interaction.InteractionListener import core.game.interaction.InteractionListener
import core.game.interaction.IntType import core.game.interaction.IntType
import core.tools.Log
import core.tools.SystemLogger import core.tools.SystemLogger
/** /**
@ -276,7 +277,7 @@ class EWListeners : InteractionListener {
} }
// Sanity error check (Should never get thrown) // Sanity error check (Should never get thrown)
if (!player.inventory.containsAll(*elementalShieldReqItems)) { if (!player.inventory.containsAll(*elementalShieldReqItems)) {
SystemLogger.logErr(this::class.java, "${player.username} tried to forge an elemental shield without all the required items.") log(this::class.java, Log.ERR, "${player.username} tried to forge an elemental shield without all the required items.")
return@onUseWith false return@onUseWith false
} }
// Successfully smith the elemental shield // Successfully smith the elemental shield
@ -451,7 +452,7 @@ class EWListeners : InteractionListener {
else -> { else -> {
offset = -1 offset = -1
enabled = 0 enabled = 0
SystemLogger.logErr(this::class.java, "Unhandled location when determining enabled water controls! ${player.location}") log(this::class.java, Log.ERR, "Unhandled location when determining enabled water controls! ${player.location}")
return@on false return@on false
} }
} }

View file

@ -5,10 +5,13 @@ import core.game.dialogue.DialoguePlugin;
import core.game.dialogue.FacialExpression; import core.game.dialogue.FacialExpression;
import core.game.node.entity.npc.NPC; import core.game.node.entity.npc.NPC;
import core.game.node.entity.player.Player; import core.game.node.entity.player.Player;
import core.tools.Log;
import core.tools.SystemLogger; import core.tools.SystemLogger;
import core.game.system.task.Pulse; import core.game.system.task.Pulse;
import core.game.world.GameWorld; import core.game.world.GameWorld;
import static core.api.ContentAPIKt.log;
/** /**
* @author Tyler Telis * @author Tyler Telis
*/ */
@ -128,7 +131,7 @@ public class GuardDialoguePlugin extends DialoguePlugin {
stage = -1; stage = -1;
break; break;
default: default:
SystemLogger.logErr(this.getClass(), "Unhandled dialogue stage=" + stage); log(this.getClass(), Log.ERR, "Unhandled dialogue stage=" + stage);
} }
return false; return false;
} }

View file

@ -203,7 +203,7 @@ public class TormentedDemonNPC extends AbstractNPC {
* @param protectionStyle The protection style to switch to. * @param protectionStyle The protection style to switch to.
*/ */
public void transformDemon(CombatStyle attackStyle, CombatStyle protectionStyle) { public void transformDemon(CombatStyle attackStyle, CombatStyle protectionStyle) {
//System.out.println("Transforming demon, selected combat style = " + style + ", the selected protection style = " + protection);
// If either attackStyle or protectionStyle are null, use the current form's values // If either attackStyle or protectionStyle are null, use the current form's values
if(attackStyle == null) { if(attackStyle == null) {
@ -216,7 +216,7 @@ public class TormentedDemonNPC extends AbstractNPC {
int oldHp = getSkills().getLifepoints(); int oldHp = getSkills().getLifepoints();
transform(id); transform(id);
getSkills().setLifepoints(oldHp); getSkills().setLifepoints(oldHp);
//System.out.println("The outcome demon, id = " + id + " combat style = " + getProperties().getCombatPulse().getStyle() + ", the protection style = " + getProperties().getProtectStyle());
TD_SWING_HANDLER.style = getProperties().getCombatPulse().getStyle(); TD_SWING_HANDLER.style = getProperties().getCombatPulse().getStyle();
} }

View file

@ -9,6 +9,7 @@ import core.game.world.map.zone.ZoneBorders
import core.GlobalStats import core.GlobalStats
import core.game.interaction.InteractionListener import core.game.interaction.InteractionListener
import core.game.interaction.IntType import core.game.interaction.IntType
import core.tools.Log
import core.tools.SystemLogger import core.tools.SystemLogger
class VarrockGuardSignpost : InteractionListener { class VarrockGuardSignpost : InteractionListener {
@ -29,7 +30,7 @@ class VarrockGuardSignpost : InteractionListener {
on(31298, IntType.SCENERY, "read"){ player, _ -> on(31298, IntType.SCENERY, "read"){ player, _ ->
val pickpocketCount = GlobalStats.getDailyGuardPickpockets() val pickpocketCount = GlobalStats.getDailyGuardPickpockets()
SystemLogger.logInfo(this::class.java, "Is equal? ${pickpocketCount == 0}") log(this::class.java, Log.FINE, "Is equal? ${pickpocketCount == 0}")
when(pickpocketCount){ when(pickpocketCount){
0 -> sendDialogue(player, "The Varrock Palace guards are pleased to announce that crime is at an all-time low, without a single guard in the palace or at the city gates being pickpocketed today.") 0 -> sendDialogue(player, "The Varrock Palace guards are pleased to announce that crime is at an all-time low, without a single guard in the palace or at the city gates being pickpocketed today.")
1 -> sendDialogue(player, "One of the Varrock Palace guards was pickpocketed today. He was close to tears at having lost his last few gold pieces." ) 1 -> sendDialogue(player, "One of the Varrock Palace guards was pickpocketed today. He was close to tears at having lost his last few gold pieces." )

View file

@ -54,19 +54,19 @@ public final class DSlayerDrainPlugin extends UseWithHandler {
player.animate(ANIMATION); player.animate(ANIMATION);
player.getPacketDispatch().sendMessage("You pour the liquid down the drain."); player.getPacketDispatch().sendMessage("You pour the liquid down the drain.");
if (quest.getStage(player) != 20) { if (quest.getStage(player) != 20) {
System.out.println("1");
return true; return true;
} }
if (player.getAttribute("demon-slayer:just-poured", false)) { if (player.getAttribute("demon-slayer:just-poured", false)) {
System.out.println("2");
return true; return true;
} }
if (!player.hasItem(DemonSlayer.FIRST_KEY)) { if (!player.hasItem(DemonSlayer.FIRST_KEY)) {
System.out.println("3");
player.getSavedData().getQuestData().getDemonSlayer()[0] = false; player.getSavedData().getQuestData().getDemonSlayer()[0] = false;
} }
if (quest.getStage(player) == 20 && !player.hasItem(DemonSlayer.FIRST_KEY) && !player.getSavedData().getQuestData().getDemonSlayer()[0]) { if (quest.getStage(player) == 20 && !player.hasItem(DemonSlayer.FIRST_KEY) && !player.getSavedData().getQuestData().getDemonSlayer()[0]) {
System.out.println("4");
player.getDialogueInterpreter().sendDialogues(player, null, "OK, I think I've washed the key down into the sewer.", "I'd better go down and get it!"); player.getDialogueInterpreter().sendDialogues(player, null, "OK, I think I've washed the key down into the sewer.", "I'd better go down and get it!");
player.getSavedData().getQuestData().getDemonSlayer()[0] = true;// poured player.getSavedData().getQuestData().getDemonSlayer()[0] = true;// poured
player.getConfigManager().set(222, 2660610, true); player.getConfigManager().set(222, 2660610, true);

View file

@ -2,11 +2,13 @@ package content.region.misthalin.varrock.quest.familycrest
import core.api.addItem import core.api.addItem
import core.api.log
import core.api.setAttribute import core.api.setAttribute
import core.game.node.entity.player.Player import core.game.node.entity.player.Player
import core.game.node.entity.player.link.quest.Quest import core.game.node.entity.player.link.quest.Quest
import core.game.node.entity.skill.Skills import core.game.node.entity.skill.Skills
import core.plugin.Initializable import core.plugin.Initializable
import core.tools.Log
import org.rs09.consts.Items import org.rs09.consts.Items
import core.tools.SystemLogger import core.tools.SystemLogger
@ -118,7 +120,7 @@ class FamilyCrest: Quest("Family Crest", 59, 58, 1, 148, 0, 1, 11) {
drawReward(player,"for the gauntlets",ln++) drawReward(player,"for the gauntlets",ln++)
if (!addItem(player, Items.FAMILY_GAUNTLETS_778)) { if (!addItem(player, Items.FAMILY_GAUNTLETS_778)) {
SystemLogger.logErr(this::class.java, "Failed to give gauntlets to ${player.username} at end of quest, this should not occur due to crest item removal needed to finish quest.") log(this::class.java, Log.ERR, "Failed to give gauntlets to ${player.username} at end of quest, this should not occur due to crest item removal needed to finish quest.")
} }
setAttribute(player, "/save:family-crest:gauntlets", Items.FAMILY_GAUNTLETS_778) setAttribute(player, "/save:family-crest:gauntlets", Items.FAMILY_GAUNTLETS_778)
} }

View file

@ -19,6 +19,7 @@ import core.game.interaction.IntType
import content.region.morytania.handlers.MortMyreGhastNPC import content.region.morytania.handlers.MortMyreGhastNPC
import core.tools.SystemLogger import core.tools.SystemLogger
import core.tools.END_DIALOGUE import core.tools.END_DIALOGUE
import core.tools.Log
class NSListeners : InteractionListener { class NSListeners : InteractionListener {
@ -114,7 +115,7 @@ class NSListeners : InteractionListener {
} }
on(WASHING_BOWL, IntType.GROUNDITEM, "take"){ player, node -> on(WASHING_BOWL, IntType.GROUNDITEM, "take"){ player, node ->
SystemLogger.logInfo(this::class.java, "Running listener") log(this::class.java, Log.FINE, "Running listener")
GroundItemManager.create(Item(MIRROR), node.location, player) GroundItemManager.create(Item(MIRROR), node.location, player)
PickupHandler.take(player, node as GroundItem) PickupHandler.take(player, node as GroundItem)
return@on true return@on true

View file

@ -1,9 +1,5 @@
package content.region.wilderness.handlers.revenants package content.region.wilderness.handlers.revenants
import core.api.Commands
import core.api.TickListener
import core.api.poofClear
import core.api.teleport
import core.game.interaction.MovementPulse import core.game.interaction.MovementPulse
import core.game.node.entity.npc.NPC import core.game.node.entity.npc.NPC
import core.game.node.entity.player.link.TeleportManager import core.game.node.entity.player.link.TeleportManager
@ -12,10 +8,12 @@ import core.game.world.map.Location
import core.game.world.update.flag.context.Graphics import core.game.world.update.flag.context.Graphics
import core.tools.RandomFunction import core.tools.RandomFunction
import core.ServerConstants import core.ServerConstants
import core.api.*
import core.tools.SystemLogger import core.tools.SystemLogger
import core.game.system.command.Privilege import core.game.system.command.Privilege
import core.game.world.GameWorld import core.game.world.GameWorld
import core.game.world.repository.Repository import core.game.world.repository.Repository
import core.tools.Log
import java.lang.Integer.min import java.lang.Integer.min
import kotlin.collections.ArrayList import kotlin.collections.ArrayList
import kotlin.collections.HashMap import kotlin.collections.HashMap
@ -94,10 +92,10 @@ class RevenantController : TickListener, Commands {
define("listrevs", Privilege.ADMIN) {player, strings -> define("listrevs", Privilege.ADMIN) {player, strings ->
for (rev in trackedRevenants) { for (rev in trackedRevenants) {
SystemLogger.logInfo(this::class.java, "REV ${rev.id}-${rev.name} @ ${rev.location.toString()}") log(this::class.java, Log.FINE, "REV ${rev.id}-${rev.name} @ ${rev.location.toString()}")
} }
SystemLogger.logInfo(this::class.java, "Total of ${trackedRevenants.size} revenants spawned.") log(this::class.java, Log.FINE, "Total of ${trackedRevenants.size} revenants spawned.")
} }
define("clearrevs", Privilege.ADMIN) {_, _ -> define("clearrevs", Privilege.ADMIN) {_, _ ->

View file

@ -1,5 +1,6 @@
package core package core
import core.api.log
import core.game.system.SystemManager import core.game.system.SystemManager
import core.game.system.SystemState import core.game.system.SystemState
import core.net.NioReactor import core.net.NioReactor
@ -9,6 +10,7 @@ import core.tools.SystemLogger
import core.game.system.config.ServerConfigParser import core.game.system.config.ServerConfigParser
import core.game.world.GameWorld import core.game.world.GameWorld
import core.game.world.repository.Repository import core.game.world.repository.Repository
import core.tools.Log
import java.io.File import java.io.File
import java.io.FileWriter import java.io.FileWriter
import java.lang.management.ManagementFactory import java.lang.management.ManagementFactory
@ -51,27 +53,27 @@ object Server {
@JvmStatic @JvmStatic
fun main(args: Array<String>) { fun main(args: Array<String>) {
if (args.isNotEmpty()) { if (args.isNotEmpty()) {
SystemLogger.logInfo(this::class.java, "Using config file: ${args[0]}") log(this::class.java, Log.INFO, "Using config file: ${args[0]}")
ServerConfigParser.parse(args[0]) ServerConfigParser.parse(args[0])
} else { } else {
SystemLogger.logInfo(this::class.java, "Using config file: ${"worldprops" + File.separator + "default.conf"}") log(this::class.java, Log.INFO, "Using config file: ${"worldprops" + File.separator + "default.conf"}")
ServerConfigParser.parse("worldprops" + File.separator + "default.conf") ServerConfigParser.parse("worldprops" + File.separator + "default.conf")
} }
startTime = System.currentTimeMillis() startTime = System.currentTimeMillis()
val t = TimeStamp() val t = TimeStamp()
GameWorld.prompt(true) GameWorld.prompt(true)
Runtime.getRuntime().addShutdownHook(ServerConstants.SHUTDOWN_HOOK) Runtime.getRuntime().addShutdownHook(ServerConstants.SHUTDOWN_HOOK)
SystemLogger.logInfo(this::class.java, "Starting networking...") log(this::class.java, Log.INFO, "Starting networking...")
try { try {
reactor = NioReactor.configure(43594 + GameWorld.settings?.worldId!!) reactor = NioReactor.configure(43594 + GameWorld.settings?.worldId!!)
reactor!!.start() reactor!!.start()
} catch (e: BindException) { } catch (e: BindException) {
SystemLogger.logErr(this::class.java, "Port " + (43594 + GameWorld.settings?.worldId!!) + " is already in use!") log(this::class.java, Log.ERR, "Port " + (43594 + GameWorld.settings?.worldId!!) + " is already in use!")
throw e throw e
} }
//WorldCommunicator.connect() //WorldCommunicator.connect()
SystemLogger.logInfo(this::class.java, GameWorld.settings?.name + " flags " + GameWorld.settings?.toString()) log(this::class.java, Log.INFO, GameWorld.settings?.name + " flags " + GameWorld.settings?.toString())
SystemLogger.logInfo(this::class.java, GameWorld.settings?.name + " started in " + t.duration(false, "") + " milliseconds.") log(this::class.java, Log.INFO, GameWorld.settings?.name + " started in " + t.duration(false, "") + " milliseconds.")
val scanner = Scanner(System.`in`) val scanner = Scanner(System.`in`)
running = true running = true
@ -80,7 +82,7 @@ object Server {
val command = scanner.nextLine() val command = scanner.nextLine()
when(command){ when(command){
"stop" -> exitProcess(0) "stop" -> exitProcess(0)
"players" -> System.out.println("Players online: " + (Repository.LOGGED_IN_PLAYERS.size))
"update" -> SystemManager.flag(SystemState.UPDATING) "update" -> SystemManager.flag(SystemState.UPDATING)
"help","commands" -> printCommands() "help","commands" -> printCommands()
"restartworker" -> SystemManager.flag(SystemState.ACTIVE) "restartworker" -> SystemManager.flag(SystemState.ACTIVE)
@ -94,8 +96,8 @@ object Server {
delay(20000) delay(20000)
while (running) { while (running) {
if (System.currentTimeMillis() - lastHeartbeat > 7200 && running) { if (System.currentTimeMillis() - lastHeartbeat > 7200 && running) {
SystemLogger.logErr(this::class.java, "Triggering reboot due to heartbeat timeout") log(this::class.java, Log.ERR, "Triggering reboot due to heartbeat timeout")
SystemLogger.logErr(this::class.java, "Creating thread dump...") log(this::class.java, Log.ERR, "Creating thread dump...")
val dump = threadDump(true, true) val dump = threadDump(true, true)
withContext(Dispatchers.IO) { withContext(Dispatchers.IO) {

View file

@ -2,6 +2,7 @@ package core
import core.game.system.SystemShutdownHook import core.game.system.SystemShutdownHook
import core.game.world.map.Location import core.game.world.map.Location
import core.tools.LogLevel
import core.tools.mysql.Database import core.tools.mysql.Database
import core.tools.secondsToTicks import core.tools.secondsToTicks
import java.math.BigInteger import java.math.BigInteger
@ -160,6 +161,12 @@ class ServerConstants {
@JvmField @JvmField
var I_AM_A_CHEATER = false var I_AM_A_CHEATER = false
@JvmField
var LOG_LEVEL = LogLevel.VERBOSE
@JvmField
var JAVA_VERSION = 8
//location names for the ::to command. //location names for the ::to command.
val TELEPORT_DESTINATIONS = arrayOf( val TELEPORT_DESTINATIONS = arrayOf(
arrayOf(Location.create(2974, 4383, 2), "corp", "corporal", "corporeal"), arrayOf(Location.create(2974, 4383, 2), "corp", "corporal", "corporeal"),

View file

@ -2,8 +2,10 @@ package core
import core.api.PersistWorld import core.api.PersistWorld
import core.api.getItemName import core.api.getItemName
import core.api.log
import core.game.node.entity.npc.NPC import core.game.node.entity.npc.NPC
import core.game.node.entity.player.Player import core.game.node.entity.player.Player
import core.tools.Log
import org.json.simple.JSONArray import org.json.simple.JSONArray
import org.json.simple.JSONObject import org.json.simple.JSONObject
import org.json.simple.parser.JSONParser import org.json.simple.parser.JSONParser
@ -38,7 +40,7 @@ class ServerStore : PersistWorld {
fileMap[key] = data fileMap[key] = data
counter++ counter++
} catch (e: Exception){ } catch (e: Exception){
SystemLogger.logErr(this::class.java, "Failed parsing ${storeFile.name} - stack trace below.") log(this::class.java, Log.ERR, "Failed parsing ${storeFile.name} - stack trace below.")
e.printStackTrace() e.printStackTrace()
return@forEach return@forEach
} }

View file

@ -57,7 +57,15 @@ fun IntArray.isNextLast(element: Int) : Boolean {
return this.isLast(this.getNext(element)) return this.isLast(this.getNext(element))
} }
fun <T> LinkedList<T>.tryPop(default: T) : T { fun <T> LinkedList<T>.tryPop(default: T?) : T? {
this.peek() ?: return default this.peek() ?: return default
return this.pop() return this.pop()
} }
inline fun <reified E: Enum<E>> parseEnumEntry(name: String) : E? {
return try {
enumValueOf<E>(name)
} catch (e: Exception) {
null
}
}

View file

@ -65,6 +65,7 @@ import core.game.world.GameWorld
import core.game.world.GameWorld.Pulser import core.game.world.GameWorld.Pulser
import core.game.world.map.path.ProjectilePathfinder import core.game.world.map.path.ProjectilePathfinder
import core.game.world.repository.Repository import core.game.world.repository.Repository
import core.tools.Log
import core.tools.tick import core.tools.tick
import kotlin.math.absoluteValue import kotlin.math.absoluteValue
@ -759,7 +760,7 @@ fun openDialogue(player: Player, dialogue: Any, vararg args: Any) {
is Int -> player.dialogueInterpreter.open(dialogue, *args) is Int -> player.dialogueInterpreter.open(dialogue, *args)
is DialogueFile -> player.dialogueInterpreter.open(dialogue, *args) is DialogueFile -> player.dialogueInterpreter.open(dialogue, *args)
is SkillDialogueHandler -> dialogue.open() is SkillDialogueHandler -> dialogue.open()
else -> SystemLogger.logErr(ContentAPI::class.java, "Invalid object type passed to openDialogue() -> ${dialogue.javaClass.simpleName}") else -> log(ContentAPI::class.java, Log.ERR, "Invalid object type passed to openDialogue() -> ${dialogue.javaClass.simpleName}")
} }
} }
@ -1045,7 +1046,7 @@ fun adjustCharge(node: Node, amount: Int) {
when (node) { when (node) {
is Item -> node.charge += amount is Item -> node.charge += amount
is Scenery -> node.charge += amount is Scenery -> node.charge += amount
else -> SystemLogger.logErr(ContentAPI::class.java, "Attempt to adjust the charge of invalid type: ${node.javaClass.simpleName}") else -> log(ContentAPI::class.java, Log.ERR, "Attempt to adjust the charge of invalid type: ${node.javaClass.simpleName}")
} }
} }
@ -1058,7 +1059,7 @@ fun getCharge(node: Node): Int {
when (node) { when (node) {
is Item -> return node.charge is Item -> return node.charge
is Scenery -> return node.charge is Scenery -> return node.charge
else -> SystemLogger.logErr(ContentAPI::class.java, "Attempt to get charge of invalid type: ${node.javaClass.simpleName}") else -> log(ContentAPI::class.java, Log.ERR, "Attempt to get charge of invalid type: ${node.javaClass.simpleName}")
.also { return -1 } .also { return -1 }
} }
} }
@ -1072,7 +1073,7 @@ fun setCharge(node: Node, charge: Int) {
when (node) { when (node) {
is Item -> node.charge = charge is Item -> node.charge = charge
is Scenery -> node.charge = charge is Scenery -> node.charge = charge
else -> SystemLogger.logErr(ContentAPI::class.java, "Attempt to set the charge of invalid type: ${node.javaClass.simpleName}") else -> log(ContentAPI::class.java, Log.ERR, "Attempt to set the charge of invalid type: ${node.javaClass.simpleName}")
} }
} }
@ -2266,6 +2267,16 @@ fun addDialogueAction(player: Player, action: core.game.dialogue.DialogueAction)
player.dialogueInterpreter.addAction(action) player.dialogueInterpreter.addAction(action)
} }
/**
* Logs a message to the server console
* @param origin simply put (Kotlin) this::class.java or (Java) this.getClass()
* @param type the type of log: Log.FINE (default, visible on VERBOSE), Log.INFO (visible on DETAILED), Log.WARN (visible on CAUTIOUS), Log.ERR (always visible)
* @param message the actual message to log.
*/
fun log(origin: Class<*>, type: Log, message: String) {
SystemLogger.processLogEntry(origin, type, message)
}
/** /**
* Used by content handlers to check if the entity is done moving yet * Used by content handlers to check if the entity is done moving yet
*/ */
@ -2310,7 +2321,7 @@ fun clearScripts(entity: Entity) : Boolean {
fun restartScript(entity: Entity) : Boolean { fun restartScript(entity: Entity) : Boolean {
if (entity.scripts.getActiveScript()?.persist != true) { if (entity.scripts.getActiveScript()?.persist != true) {
SystemLogger.logErr(entity.scripts.getActiveScript()!!::class.java, "Tried to call restartScript on a non-persistent script! Either use stopExecuting() or make the script persistent.") log(entity.scripts.getActiveScript()!!::class.java, Log.ERR, "Tried to call restartScript on a non-persistent script! Either use stopExecuting() or make the script persistent.")
return clearScripts(entity) return clearScripts(entity)
} }
return true return true
@ -2323,7 +2334,7 @@ fun keepRunning(entity: Entity) : Boolean {
fun stopExecuting(entity: Entity) : Boolean { fun stopExecuting(entity: Entity) : Boolean {
if (entity.scripts.getActiveScript()?.persist == true) { if (entity.scripts.getActiveScript()?.persist == true) {
SystemLogger.logErr(entity.scripts.getActiveScript()!!::class.java, "Tried to call stopExecuting() on a persistent script! To halt execution of a persistent script, you MUST call clearScripts()!") log(entity.scripts.getActiveScript()!!::class.java, Log.ERR, "Tried to call stopExecuting() on a persistent script! To halt execution of a persistent script, you MUST call clearScripts()!")
return clearScripts(entity) return clearScripts(entity)
} }
return true return true

View file

@ -14,10 +14,10 @@ import core.game.world.map.zone.ZoneRestriction
interface MapArea : ContentInterface { interface MapArea : ContentInterface {
var zone: MapZone var zone: MapZone
get(){ get(){
return zoneMaps[this.javaClass.simpleName + "MapArea"]!! return zoneMaps[this::class.java.simpleName + "MapArea"]!!
} }
set(value) { set(value) {
zoneMaps[this.javaClass.simpleName + "MapArea"] = value zoneMaps[this::class.java.simpleName + "MapArea"] = value
} }
fun defineAreaBorders() : Array<ZoneBorders> fun defineAreaBorders() : Array<ZoneBorders>

View file

@ -10,7 +10,9 @@ import java.io.FileWriter
import org.json.simple.JSONObject import org.json.simple.JSONObject
import org.json.simple.parser.JSONParser import org.json.simple.parser.JSONParser
import core.ServerConstants import core.ServerConstants
import core.api.log
import core.game.node.item.Item import core.game.node.item.Item
import core.tools.Log
import core.tools.SystemLogger.logShutdown import core.tools.SystemLogger.logShutdown
import core.tools.SystemLogger.logStartup import core.tools.SystemLogger.logStartup
@ -31,7 +33,7 @@ class GlobalKillCounter : StartupListener, ShutdownListener {
val tmp_rare_drops = data.get("rare_drops") val tmp_rare_drops = data.get("rare_drops")
populate(rare_drops, tmp_rare_drops) populate(rare_drops, tmp_rare_drops)
} catch (e: Exception){ } catch (e: Exception){
SystemLogger.logErr(this::class.java, "Failed parsing ${file.name} - stack trace below.") log(this::class.java, Log.ERR, "Failed parsing ${file.name} - stack trace below.")
e.printStackTrace() e.printStackTrace()
} }
} }

View file

@ -10,8 +10,11 @@ import core.cache.def.impl.GraphicDefinition;
import core.cache.def.impl.ItemDefinition; import core.cache.def.impl.ItemDefinition;
import core.cache.def.impl.NPCDefinition; import core.cache.def.impl.NPCDefinition;
import core.cache.def.impl.SceneryDefinition; import core.cache.def.impl.SceneryDefinition;
import core.tools.Log;
import core.tools.SystemLogger; import core.tools.SystemLogger;
import static core.api.ContentAPIKt.log;
/** /**
* A cache reader. * A cache reader.
* *
@ -48,7 +51,7 @@ public final class Cache {
* @throws Throwable When an exception occurs. * @throws Throwable When an exception occurs.
*/ */
public static void init(String path) throws Throwable { public static void init(String path) throws Throwable {
SystemLogger.logInfo(Cache.class, "Initializing cache..."); log(Cache.class, Log.FINE, "Initializing cache...");
byte[] cacheFileBuffer = new byte[520]; byte[] cacheFileBuffer = new byte[520];
RandomAccessFile containersInformFile = new RandomAccessFile(path + File.separator + "main_file_cache.idx255", "r"); RandomAccessFile containersInformFile = new RandomAccessFile(path + File.separator + "main_file_cache.idx255", "r");
RandomAccessFile dataFile = new RandomAccessFile(path + File.separator + "main_file_cache.dat2", "r"); RandomAccessFile dataFile = new RandomAccessFile(path + File.separator + "main_file_cache.dat2", "r");
@ -61,7 +64,7 @@ public final class Cache {
CacheFile cacheFile = new CacheFile(i, new RandomAccessFile(f, "r"), dataFile, 1000000, cacheFileBuffer); CacheFile cacheFile = new CacheFile(i, new RandomAccessFile(f, "r"), dataFile, 1000000, cacheFileBuffer);
cacheFileManagers[i] = new CacheFileManager(cacheFile, true); cacheFileManagers[i] = new CacheFileManager(cacheFile, true);
if (cacheFileManagers[i].getInformation() == null) { if (cacheFileManagers[i].getInformation() == null) {
SystemLogger.logErr(Cache.class, "Error loading cache index " + i + ": no information."); log(Cache.class, Log.ERR, "Error loading cache index " + i + ": no information.");
cacheFileManagers[i] = null; cacheFileManagers[i] = null;
} }
} }
@ -93,7 +96,7 @@ public final class Cache {
public static ByteBuffer getArchiveData(int index, int archive, boolean priority, int encryptionValue) { public static ByteBuffer getArchiveData(int index, int archive, boolean priority, int encryptionValue) {
byte[] data = index == 255 ? referenceFile.getContainerData(archive) : cacheFileManagers[index].getCacheFile().getContainerData(archive); byte[] data = index == 255 ? referenceFile.getContainerData(archive) : cacheFileManagers[index].getCacheFile().getContainerData(archive);
if (data == null || data.length < 1) { if (data == null || data.length < 1) {
SystemLogger.logErr(Cache.class, "Invalid JS-5 request - " + index + ", " + archive + ", " + priority + ", " + encryptionValue + "!"); log(Cache.class, Log.ERR, "Invalid JS-5 request - " + index + ", " + archive + ", " + priority + ", " + encryptionValue + "!");
return null; return null;
} }
int compression = data[0] & 0xff; int compression = data[0] & 0xff;

View file

@ -150,7 +150,7 @@ public final class AnimationDefinition {
} else if (opcode == 14) { } else if (opcode == 14) {
aBoolean2141 = true; aBoolean2141 = true;
} else { } else {
System.out.println("Unhandled animation opcode " + opcode);
} }
} else } else
anInt2162 = buffer.get() & 0xFF; anInt2162 = buffer.get() & 0xFF;

View file

@ -77,11 +77,9 @@ public final class ClothDefinition {
e.printStackTrace(); e.printStackTrace();
} }
int length = Cache.getIndexes()[2].getFilesSize(3); int length = Cache.getIndexes()[2].getFilesSize(3);
System.out.println("Definition size: " + length + ".");
for (int i = 0; i < length; i++) { for (int i = 0; i < length; i++) {
ClothDefinition def = forId(i); ClothDefinition def = forId(i);
if (def.unknownBool)
System.out.println("Clothing " + i + ": " + def.equipmentSlot + ", " + def.unknownBool + ", " + Arrays.toString(def.modelIds) + ", " + Arrays.toString(def.models));
} }
} }

View file

@ -3,12 +3,15 @@ package core.cache.def.impl;
import core.cache.Cache; import core.cache.Cache;
import core.cache.misc.buffer.ByteBufferUtils; import core.cache.misc.buffer.ByteBufferUtils;
import core.tools.CP1252; import core.tools.CP1252;
import core.tools.Log;
import core.tools.SystemLogger; import core.tools.SystemLogger;
import java.nio.ByteBuffer; import java.nio.ByteBuffer;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map; import java.util.Map;
import static core.api.ContentAPIKt.log;
public class DataMap { public class DataMap {
/** /**
@ -37,7 +40,7 @@ public class DataMap {
public int getInt(int key){ public int getInt(int key){
if(!dataStore.containsKey(key)){ if(!dataStore.containsKey(key)){
SystemLogger.logErr(this.getClass(), "Invalid value passed for key: " + key + " map: " + id); log(this.getClass(), Log.ERR, "Invalid value passed for key: " + key + " map: " + id);
return -1; return -1;
} }
return (int) dataStore.get(key); return (int) dataStore.get(key);

View file

@ -70,14 +70,14 @@ public class GraphicDefinition {
} }
// 5046 - 5050 are related anims & 2148 // 5046 - 5050 are related anims & 2148
GraphicDefinition d = GraphicDefinition.forId(803); GraphicDefinition d = GraphicDefinition.forId(803);
System.out.println("Graphic " + d.graphicsId + " anim id = " + d.animationId + ", " + d.defaultModel + ".");
for (int i = 0; i < 5000; i++) { for (int i = 0; i < 5000; i++) {
GraphicDefinition def = GraphicDefinition.forId(i); GraphicDefinition def = GraphicDefinition.forId(i);
if (def == null) { if (def == null) {
continue; continue;
} }
if ((def.animationId > 2000 && def.animationId < 2200) || (def.defaultModel >= 1300 && def.defaultModel < 1500)) { if ((def.animationId > 2000 && def.animationId < 2200) || (def.defaultModel >= 1300 && def.defaultModel < 1500)) {
System.out.println("Possible match [id=" + i + ", anim=" + def.animationId + "].");
} }
} }
} }

View file

@ -12,6 +12,8 @@ import core.game.node.item.Item;
import core.game.node.item.ItemPlugin; import core.game.node.item.ItemPlugin;
import core.net.packet.PacketRepository; import core.net.packet.PacketRepository;
import core.net.packet.out.WeightUpdate; import core.net.packet.out.WeightUpdate;
import core.plugin.Plugin;
import core.tools.Log;
import core.tools.StringUtils; import core.tools.StringUtils;
import core.tools.SystemLogger; import core.tools.SystemLogger;
import core.game.system.config.ItemConfigParser; import core.game.system.config.ItemConfigParser;
@ -25,6 +27,7 @@ import java.util.Map;
import java.util.Arrays; import java.util.Arrays;
import static core.api.ContentAPIKt.equipSlot; import static core.api.ContentAPIKt.equipSlot;
import static core.api.ContentAPIKt.log;
/** /**
* Represents an item's definitions. * Represents an item's definitions.
@ -268,7 +271,7 @@ public class ItemDefinition extends Definition<Item> {
} }
ItemDefinition def = ItemDefinition.parseDefinition(itemId, ByteBuffer.wrap(data)); ItemDefinition def = ItemDefinition.parseDefinition(itemId, ByteBuffer.wrap(data));
if (def == null) { if (def == null) {
SystemLogger.logErr(ItemDefinition.class, "Could not load item definitions for id " + itemId + " - no definitions found!"); log(ItemDefinition.class, Log.ERR, "Could not load item definitions for id " + itemId + " - no definitions found!");
return ; return ;
} }
if(itemId == 14958) if(itemId == 14958)
@ -447,7 +450,7 @@ public class ItemDefinition extends Definition<Item> {
def.clientScriptData.put(key, value); def.clientScriptData.put(key, value);
} }
} else { } else {
System.out.println("Unhandled item definition opcode - opcode: " + opcode);
break; break;
} }
} }
@ -1480,7 +1483,7 @@ public class ItemDefinition extends Definition<Item> {
ItemDefinition def = forId(nodeId); ItemDefinition def = forId(nodeId);
if (def == null) { if (def == null) {
if (nodeId == 22937) if (nodeId == 22937)
SystemLogger.logErr(ItemDefinition.class, "[ItemDefinition] No definition for item id " + nodeId + "!"); log(ItemDefinition.class, Log.ERR, "[ItemDefinition] No definition for item id " + nodeId + "!");
return null; return null;
} }
OptionHandler handler = def.getConfiguration("option:" + name); OptionHandler handler = def.getConfiguration("option:" + name);

View file

@ -202,7 +202,7 @@ public final class NPCDefinition extends Definition<NPC> {
byte[] data = Cache.getIndexes()[18].getFileData(id >>> 7, id & 0x7f); byte[] data = Cache.getIndexes()[18].getFileData(id >>> 7, id & 0x7f);
if (data == null) { if (data == null) {
if (id != -1) { if (id != -1) {
// System.out.println("Failed loading NPC " + id + ".");
} }
} else { } else {
def.parse(ByteBuffer.wrap(data)); def.parse(ByteBuffer.wrap(data));
@ -214,12 +214,12 @@ public final class NPCDefinition extends Definition<NPC> {
public static void main(String... args) throws Throwable { public static void main(String... args) throws Throwable {
GameWorld.prompt(false); GameWorld.prompt(false);
System.out.println("Roar: " + NPCDefinition.forId(2329).standAnimation);
// for (int i = 0; i < 11000; i++) { // for (int i = 0; i < 11000; i++) {
// ItemDefinition def = ItemDefinition.forId(i); // ItemDefinition def = ItemDefinition.forId(i);
// if (def.getMaleWornModelId1() >= 1250 && def.getMaleWornModelId1() <= // if (def.getMaleWornModelId1() >= 1250 && def.getMaleWornModelId1() <=
// 1550) { // 1550) {
// System.out.println(def.getName() + " " + i + ": " +
// def.getMaleWornModelId1()); // def.getMaleWornModelId1());
// } // }
// } // }

View file

@ -1,6 +1,7 @@
package core.cache.def.impl; package core.cache.def.impl;
import core.cache.Cache; import core.cache.Cache;
import core.tools.Log;
import core.tools.SystemLogger; import core.tools.SystemLogger;
import core.game.world.GameWorld; import core.game.world.GameWorld;
@ -9,6 +10,8 @@ import java.lang.reflect.Field;
import java.lang.reflect.Modifier; import java.lang.reflect.Modifier;
import java.nio.ByteBuffer; import java.nio.ByteBuffer;
import static core.api.ContentAPIKt.log;
/** /**
* Holds definitions for render animations. * Holds definitions for render animations.
* @author Jagex * @author Jagex
@ -72,7 +75,7 @@ public class RenderAnimationDefinition {
if (data != null) { if (data != null) {
defs.parse(ByteBuffer.wrap(data)); defs.parse(ByteBuffer.wrap(data));
} else { } else {
SystemLogger.logErr(RenderAnimationDefinition.class, "No definitions found for render animation " + animId + ", size=" + Cache.getIndexes()[2].getFilesSize(32) + "!"); log(RenderAnimationDefinition.class, Log.ERR, "No definitions found for render animation " + animId + ", size=" + Cache.getIndexes()[2].getFilesSize(32) + "!");
} }
return defs; return defs;
} }
@ -291,7 +294,7 @@ public class RenderAnimationDefinition {
public static void main(String...args) throws Throwable { public static void main(String...args) throws Throwable {
GameWorld.prompt(false); GameWorld.prompt(false);
RenderAnimationDefinition def = RenderAnimationDefinition.forId(1426); RenderAnimationDefinition def = RenderAnimationDefinition.forId(1426);
System.out.println("size: " + def.getClass().getDeclaredFields().length);
for (Field f : def.getClass().getDeclaredFields()) { for (Field f : def.getClass().getDeclaredFields()) {
if (!Modifier.isStatic(f.getModifiers())) { if (!Modifier.isStatic(f.getModifiers())) {
if (f.getType().isArray()) { if (f.getType().isArray()) {
@ -305,7 +308,7 @@ public class RenderAnimationDefinition {
continue; continue;
} }
} }
System.out.println(f.getName() + ", " + f.get(def));
} }
} }
for (Field f : def.getClass().getSuperclass().getDeclaredFields()) { for (Field f : def.getClass().getSuperclass().getDeclaredFields()) {
@ -321,7 +324,7 @@ public class RenderAnimationDefinition {
continue; continue;
} }
} }
System.out.println(f.getName() + ", " + f.get(def));
} }
} }
} }

View file

@ -6,6 +6,7 @@ import core.cache.misc.buffer.ByteBufferUtils;
import core.game.interaction.OptionHandler; import core.game.interaction.OptionHandler;
import core.game.node.entity.player.Player; import core.game.node.entity.player.Player;
import core.game.node.scenery.Scenery; import core.game.node.scenery.Scenery;
import core.tools.Log;
import core.tools.SystemLogger; import core.tools.SystemLogger;
import core.game.world.GameWorld; import core.game.world.GameWorld;
@ -13,6 +14,8 @@ import java.nio.ByteBuffer;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map; import java.util.Map;
import static core.api.ContentAPIKt.log;
/** /**
* Represents an object's definition. * Represents an object's definition.
* @author Emperor * @author Emperor
@ -520,14 +523,14 @@ public class SceneryDefinition extends Definition<Scenery> {
// for (int id = 0; id <= 27325; id++) { // for (int id = 0; id <= 27325; id++) {
// ObjectDefinition def = ObjectDefinition.forId(id); // ObjectDefinition def = ObjectDefinition.forId(id);
// if (def.mapIcon > 69) { // if (def.mapIcon > 69) {
// System.out.println(id + " - " + def.getName() + " has map icon " +
// def.mapIcon); // def.mapIcon);
// } // }
// } // }
// return; 2105 // return; 2105
// } // }
/*ObjectDefinition def = ObjectDefinition.forId(2105); /*ObjectDefinition def = ObjectDefinition.forId(2105);
System.out.println("size: " + def.getClass().getDeclaredFields().length);
for (Field f : def.getClass().getDeclaredFields()) { for (Field f : def.getClass().getDeclaredFields()) {
if (!Modifier.isStatic(f.getModifiers())) { if (!Modifier.isStatic(f.getModifiers())) {
if (f.getType().isArray()) { if (f.getType().isArray()) {
@ -538,11 +541,11 @@ public class SceneryDefinition extends Definition<Scenery> {
for (int i = 0; i < length; i++) { for (int i = 0; i < length; i++) {
System.out.print(Array.get(object, i) + (i < (length - 1) ? ", " : "]")); System.out.print(Array.get(object, i) + (i < (length - 1) ? ", " : "]"));
} }
System.out.println();
continue; continue;
} }
} }
System.out.println(f.getName() + ", " + f.get(def));
} }
} }
for (Field f : def.getClass().getSuperclass().getDeclaredFields()) { for (Field f : def.getClass().getSuperclass().getDeclaredFields()) {
@ -555,11 +558,11 @@ public class SceneryDefinition extends Definition<Scenery> {
for (int i = 0; i < length; i++) { for (int i = 0; i < length; i++) {
System.out.print(Array.get(object, i) + (i < (length - 1) ? ", " : "]")); System.out.print(Array.get(object, i) + (i < (length - 1) ? ", " : "]"));
} }
System.out.println();
continue; continue;
} }
} }
System.out.println(f.getName() + ", " + f.get(def));
} }
}*/ }*/
} }
@ -615,7 +618,7 @@ public class SceneryDefinition extends Definition<Scenery> {
// SystemLogger.logErr("----------------------------------------------------\n\n\n"); // SystemLogger.logErr("----------------------------------------------------\n\n\n");
while (true) { while (true) {
if (!buffer.hasRemaining()) { if (!buffer.hasRemaining()) {
SystemLogger.logErr(SceneryDefinition.class, "Buffer empty for " + objectId); log(SceneryDefinition.class, Log.ERR, "Buffer empty for " + objectId);
break; break;
} }
int opcode = buffer.get() & 0xFF; int opcode = buffer.get() & 0xFF;
@ -801,7 +804,7 @@ public class SceneryDefinition extends Definition<Scenery> {
} }
} else { } else {
if (opcode != 0) { if (opcode != 0) {
SystemLogger.logErr(SceneryDefinition.class, "Unhandled object definition opcode: " + opcode); log(SceneryDefinition.class, Log.ERR, "Unhandled object definition opcode: " + opcode);
} }
break; break;
} }

View file

@ -2,12 +2,15 @@ package core.cache.def.impl;
import core.cache.Cache; import core.cache.Cache;
import core.cache.misc.buffer.ByteBufferUtils; import core.cache.misc.buffer.ByteBufferUtils;
import core.tools.Log;
import core.tools.SystemLogger; import core.tools.SystemLogger;
import java.nio.ByteBuffer; import java.nio.ByteBuffer;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map; import java.util.Map;
import static core.api.ContentAPIKt.log;
public class Struct { public class Struct {
/** /**
@ -28,7 +31,7 @@ public class Struct {
public int getInt(int key){ public int getInt(int key){
if(!dataStore.containsKey(key)){ if(!dataStore.containsKey(key)){
SystemLogger.logErr(this.getClass(), "Invalid value passed for key: " + key + " struct: " + id); log(this.getClass(), Log.ERR, "Invalid value passed for key: " + key + " struct: " + id);
return -1; return -1;
} }
return (int) dataStore.get(key); return (int) dataStore.get(key);

View file

@ -1,12 +1,15 @@
package core.game.activity; package core.game.activity;
import core.game.node.entity.player.Player; import core.game.node.entity.player.Player;
import core.tools.Log;
import core.tools.SystemLogger; import core.tools.SystemLogger;
import core.game.world.GameWorld; import core.game.world.GameWorld;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map; import java.util.Map;
import static core.api.ContentAPIKt.log;
/** /**
* Manages the activities. * Manages the activities.
* @author Emperor * @author Emperor
@ -50,7 +53,7 @@ public final class ActivityManager {
ActivityPlugin plugin = ACTIVITIES.get(name); ActivityPlugin plugin = ACTIVITIES.get(name);
if (plugin == null) { if (plugin == null) {
if (GameWorld.getSettings().isDevMode()) { if (GameWorld.getSettings().isDevMode()) {
SystemLogger.logErr(ActivityManager.class, "Unhandled activity - " + name + "!"); log(ActivityManager.class, Log.ERR, "Unhandled activity - " + name + "!");
} }
return false; return false;
} }

View file

@ -25,6 +25,7 @@ import core.api.Event
import core.api.utils.PlayerCamera import core.api.utils.PlayerCamera
import core.tools.SystemLogger import core.tools.SystemLogger
import core.game.world.GameWorld import core.game.world.GameWorld
import core.tools.Log
/** /**
* A utility class for making cutscenes. * A utility class for making cutscenes.
@ -259,7 +260,7 @@ abstract class Cutscene(val player: Player) {
try { try {
endActions?.invoke() endActions?.invoke()
} catch (e: Exception) { } catch (e: Exception) {
SystemLogger.logErr(this::class.java, "There's some bad nasty code in ${this::class.java.simpleName} end actions!") log(this::class.java, Log.ERR, "There's some bad nasty code in ${this::class.java.simpleName} end actions!")
e.printStackTrace() e.printStackTrace()
} }
return true return true
@ -347,7 +348,7 @@ abstract class Cutscene(val player: Player) {
fun logCutscene(message: String) fun logCutscene(message: String)
{ {
if(ServerConstants.LOG_CUTSCENE) if(ServerConstants.LOG_CUTSCENE)
SystemLogger.logInfo(this::class.java, "$message") log(this::class.java, Log.FINE, "$message")
} }
fun clearNPCs() { fun clearNPCs() {

View file

@ -217,7 +217,7 @@ public class AIPlayer extends Player {
} }
} }
} catch (FileNotFoundException e) { } catch (FileNotFoundException e) {
System.out.println("Missing " + fileName);
e.printStackTrace(); e.printStackTrace();
} }
} }
@ -349,7 +349,7 @@ public class AIPlayer extends Player {
int meX = this.getLocation().getX(); int meX = this.getLocation().getX();
int meY = this.getLocation().getY(); int meY = this.getLocation().getY();
//int meX2 = this.getLocation().getX(); //int meX2 = this.getLocation().getX();
//System.out.println("local " + meX + " real x? " + meX2 );
ArrayList<Node> nodes = new ArrayList<Node>(); ArrayList<Node> nodes = new ArrayList<Node>();
for (NPC npc : RegionManager.getLocalNpcs(this, range)) { for (NPC npc : RegionManager.getLocalNpcs(this, range)) {
if (entrys.contains(npc.getId())) if (entrys.contains(npc.getId()))
@ -381,7 +381,7 @@ public class AIPlayer extends Player {
public Node getClosestNodeWithEntryAndDirection(int range, int entry, Direction direction) { public Node getClosestNodeWithEntryAndDirection(int range, int entry, Direction direction) {
ArrayList<Node> nodeList = getNodeInRange(range, entry); ArrayList<Node> nodeList = getNodeInRange(range, entry);
if (nodeList.isEmpty()) { if (nodeList.isEmpty()) {
//System.out.println("nodelist empty");
return null; return null;
} }
Node node = getClosestNodeinNodeListWithDirection(nodeList, direction); Node node = getClosestNodeinNodeListWithDirection(nodeList, direction);
@ -391,7 +391,7 @@ public class AIPlayer extends Player {
public Node getClosestNodeWithEntry(int range, int entry) { public Node getClosestNodeWithEntry(int range, int entry) {
ArrayList<Node> nodeList = getNodeInRange(range, entry); ArrayList<Node> nodeList = getNodeInRange(range, entry);
if (nodeList.isEmpty()) { if (nodeList.isEmpty()) {
//System.out.println("nodelist empty");
return null; return null;
} }
Node node = getClosestNodeinNodeList(nodeList); Node node = getClosestNodeinNodeList(nodeList);
@ -401,7 +401,7 @@ public class AIPlayer extends Player {
public Node getClosestNodeWithEntry(int range, List<Integer> entrys) { public Node getClosestNodeWithEntry(int range, List<Integer> entrys) {
ArrayList<Node> nodeList = getNodeInRange(range, entrys); ArrayList<Node> nodeList = getNodeInRange(range, entrys);
if (nodeList.isEmpty()) { if (nodeList.isEmpty()) {
//System.out.println("nodelist empty");
return null; return null;
} }
Node node = getClosestNodeinNodeList(nodeList); Node node = getClosestNodeinNodeList(nodeList);
@ -453,7 +453,7 @@ public class AIPlayer extends Player {
private Node getClosestNodeinNodeListWithDirection(ArrayList<Node> nodes, Direction direction) { private Node getClosestNodeinNodeListWithDirection(ArrayList<Node> nodes, Direction direction) {
if (nodes.isEmpty()) { if (nodes.isEmpty()) {
//System.out.println("nodelist empty");
return null; return null;
} }
@ -471,7 +471,7 @@ public class AIPlayer extends Player {
private Node getClosestNodeinNodeList(ArrayList<Node> nodes) { private Node getClosestNodeinNodeList(ArrayList<Node> nodes) {
if (nodes.isEmpty()) { if (nodes.isEmpty()) {
//System.out.println("nodelist empty");
return null; return null;
} }
@ -528,7 +528,7 @@ public class AIPlayer extends Player {
Repository.getPlayers().remove(player); Repository.getPlayers().remove(player);
return; return;
} }
//SystemLogger.logErr(this.getClass(), "Could not deregister AIP#" + uid + ": UID not added to the mapping!"); //log(this.getClass(), Log.ERR, "Could not deregister AIP#" + uid + ": UID not added to the mapping!");
} }
@Override @Override

View file

@ -42,6 +42,7 @@ import core.tools.SystemLogger
import core.game.system.config.ItemConfigParser import core.game.system.config.ItemConfigParser
import core.game.world.GameWorld import core.game.world.GameWorld
import core.game.world.repository.Repository import core.game.world.repository.Repository
import core.tools.Log
import core.tools.colorize import core.tools.colorize
import java.util.* import java.util.*
import java.util.concurrent.CountDownLatch import java.util.concurrent.CountDownLatch
@ -78,7 +79,7 @@ class ScriptAPI(private val bot: Player) {
val opt: Option? = node.interaction.options.filter {it != null && it.name.equals(option, true) }.firstOrNull() val opt: Option? = node.interaction.options.filter {it != null && it.name.equals(option, true) }.firstOrNull()
if(opt == null){ if(opt == null){
SystemLogger.logWarn(this::class.java, "Invalid option name provided: $option") log(this::class.java, Log.WARN, "Invalid option name provided: $option")
return return
} }
@ -491,7 +492,6 @@ class ScriptAPI(private val bot: Player) {
} }
val canSell = GrandExchange.addBotOffer(actualId, itemAmt) val canSell = GrandExchange.addBotOffer(actualId, itemAmt)
if (canSell && saleIsBigNews(actualId, itemAmt)) { if (canSell && saleIsBigNews(actualId, itemAmt)) {
SystemLogger.logAI(this::class.java, "Offered $itemAmt of $actualId on the GE.")
Repository.sendNews(SERVER_GE_NAME + " just offered " + itemAmt + " " + ItemDefinition.forId(actualId).name.toLowerCase() + " on the GE.") Repository.sendNews(SERVER_GE_NAME + " just offered " + itemAmt + " " + ItemDefinition.forId(actualId).name.toLowerCase() + " on the GE.")
} }
bot.bank.remove(Item(id, itemAmt)) bot.bank.remove(Item(id, itemAmt))

View file

@ -7,11 +7,13 @@ import core.game.node.entity.player.Player;
import core.plugin.Plugin; import core.plugin.Plugin;
import core.plugin.PluginManifest; import core.plugin.PluginManifest;
import core.plugin.PluginType; import core.plugin.PluginType;
import core.tools.Log;
import core.tools.SystemLogger; import core.tools.SystemLogger;
import java.lang.reflect.InvocationTargetException; import java.lang.reflect.InvocationTargetException;
import java.util.ArrayList; import java.util.ArrayList;
import static core.api.ContentAPIKt.log;
import static core.api.DialUtilsKt.splitLines; import static core.api.DialUtilsKt.splitLines;
import static core.tools.DialogueConstKt.DIALOGUE_INITIAL_OPTIONS_HANDLE; import static core.tools.DialogueConstKt.DIALOGUE_INITIAL_OPTIONS_HANDLE;
import static core.tools.DialogueConstKt.START_DIALOGUE; import static core.tools.DialogueConstKt.START_DIALOGUE;
@ -197,7 +199,7 @@ public abstract class DialoguePlugin implements Plugin<Player> {
} }
if (npc == null) { if (npc == null) {
SystemLogger.logWarn(this.getClass(), log(this.getClass(), Log.WARN,
args[0].getClass().getSimpleName() + args[0].getClass().getSimpleName() +
"Is not assigning an NPC. Whoever did that should fix it." "Is not assigning an NPC. Whoever did that should fix it."
); );

View file

@ -11,6 +11,7 @@ import core.game.system.command.Privilege
import core.game.system.config.ItemConfigParser import core.game.system.config.ItemConfigParser
import core.game.world.GameWorld import core.game.world.GameWorld
import core.game.world.repository.Repository import core.game.world.repository.Repository
import core.tools.Log
import core.tools.colorize import core.tools.colorize
import java.lang.Integer.max import java.lang.Integer.max
import java.util.concurrent.LinkedBlockingDeque import java.util.concurrent.LinkedBlockingDeque
@ -218,7 +219,7 @@ class GrandExchange : StartupListener, Commands {
if ( offer.offerState != OfferState.PENDING || offer.uid != 0L ) if ( offer.offerState != OfferState.PENDING || offer.uid != 0L )
{ {
SystemLogger.logWarn(this::class.java, "[GE] DISPATCH FAILURE: ${offer.offerState.name}, UID: ${offer.uid}") log(this::class.java, Log.WARN, "[GE] DISPATCH FAILURE: ${offer.offerState.name}, UID: ${offer.uid}")
return false return false
} }

View file

@ -3,6 +3,7 @@ package core.game.global.action;
import core.game.node.entity.player.Player; import core.game.node.entity.player.Player;
import core.game.system.communication.CommunicationInfo; import core.game.system.communication.CommunicationInfo;
import content.global.handlers.item.SpadeDigListener; import content.global.handlers.item.SpadeDigListener;
import core.tools.Log;
import core.tools.SystemLogger; import core.tools.SystemLogger;
import core.game.system.task.Pulse; import core.game.system.task.Pulse;
import core.game.world.GameWorld; import core.game.world.GameWorld;
@ -12,6 +13,8 @@ import core.game.world.update.flag.context.Animation;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map; import java.util.Map;
import static core.api.ContentAPIKt.log;
/** /**
* Handles digging with a spade. * Handles digging with a spade.
* @author Emperor * @author Emperor
@ -63,7 +66,7 @@ public final class DigSpadeHandler {
*/ */
public static boolean register(Location location, DigAction action) { public static boolean register(Location location, DigAction action) {
if (ACTIONS.containsKey(location)) { if (ACTIONS.containsKey(location)) {
SystemLogger.logErr(CommunicationInfo.class, "Already contained dig reward for location " + location + "."); log(CommunicationInfo.class, Log.ERR, "Already contained dig reward for location " + location + ".");
return false; return false;
} }
ACTIONS.put(location, action); ACTIONS.put(location, action);

View file

@ -39,7 +39,6 @@ object PickupHandler {
return true return true
} }
if (player.getAttribute("droppedItem:" + item.id, 0) > GameWorld.ticks) { //Splinter if (player.getAttribute("droppedItem:" + item.id, 0) > GameWorld.ticks) { //Splinter
SystemLogger.logAlert(this::class.java, "$player tried to do the drop & quick pick-up Ground Item dupe.")
return true return true
} }
if (item !is GroundSpawnLoader.GroundSpawn && item.isRemainPrivate && !item.droppedBy(player)) { if (item !is GroundSpawnLoader.GroundSpawn && item.isRemainPrivate && !item.droppedBy(player)) {

View file

@ -115,7 +115,7 @@ public class DestinationFlag {
if (dir != null) { if (dir != null) {
return getDestination(mover, object, sizeX, sizeY, dir, 3); return getDestination(mover, object, sizeX, sizeY, dir, 3);
} }
// System.out.println(dir);
return getDestination(mover, object, sizeX, sizeY, Direction.getLogicalDirection(object.getLocation(), mover.getLocation()), 0); return getDestination(mover, object, sizeX, sizeY, Direction.getLogicalDirection(object.getLocation(), mover.getLocation()), 0);
} }

View file

@ -13,9 +13,12 @@ import core.game.world.update.flag.player.FaceLocationFlag;
import core.net.packet.PacketRepository; import core.net.packet.PacketRepository;
import core.net.packet.context.InteractionOptionContext; import core.net.packet.context.InteractionOptionContext;
import core.net.packet.out.InteractionOption; import core.net.packet.out.InteractionOption;
import core.tools.Log;
import core.tools.SystemLogger; import core.tools.SystemLogger;
import core.game.world.GameWorld; import core.game.world.GameWorld;
import static core.api.ContentAPIKt.log;
/** /**
* Handles interaction between nodes. * Handles interaction between nodes.
* @author Emperor * @author Emperor
@ -85,7 +88,7 @@ public class InteractPlugin {
player.dispatch(new InteractionEvent(node, option.getName().toLowerCase())); player.dispatch(new InteractionEvent(node, option.getName().toLowerCase()));
} catch (Exception e){ } catch (Exception e){
e.printStackTrace(); e.printStackTrace();
SystemLogger.logErr(this.getClass(), this.getClass().getName() + e.getMessage()); log(this.getClass(), Log.ERR, this.getClass().getName() + e.getMessage());
} }
} }
@ -118,7 +121,7 @@ public class InteractPlugin {
} }
} catch (Exception e){ } catch (Exception e){
e.printStackTrace(); e.printStackTrace();
SystemLogger.logErr(this.getClass(), this.getClass().getName() + e.getMessage()); log(this.getClass(), Log.ERR, this.getClass().getName() + e.getMessage());
} }
return true; return true;
} }
@ -149,7 +152,7 @@ public class InteractPlugin {
player.getPacketDispatch().sendMessage("Nothing interesting happens."); player.getPacketDispatch().sendMessage("Nothing interesting happens.");
} catch (Exception e){ } catch (Exception e){
e.printStackTrace(); e.printStackTrace();
SystemLogger.logErr(this.getClass(), this.getClass().getName() + e.getMessage()); log(this.getClass(), Log.ERR, this.getClass().getName() + e.getMessage());
} }
return true; return true;
} }
@ -187,7 +190,7 @@ public class InteractPlugin {
} }
} catch (Exception e){ } catch (Exception e){
e.printStackTrace(); e.printStackTrace();
SystemLogger.logErr(this.getClass(), this.getClass().getName() + e.getMessage()); log(this.getClass(), Log.ERR, this.getClass().getName() + e.getMessage());
} }
return true; return true;
} }

View file

@ -233,9 +233,6 @@ public abstract class MovementPulse extends Pulse {
return; return;
} }
if(destination.getLocation() == null){ if(destination.getLocation() == null){
SystemLogger.logAlert(this.getClass(), destination.getId() + " < ID");
SystemLogger.logAlert(this.getClass(), destination.getName() + " < NAME");
SystemLogger.logAlert(this.getClass(), "ASDAD");
return; return;
} }
boolean inside = isInsideEntity(mover.getLocation()); boolean inside = isInsideEntity(mover.getLocation());

View file

@ -88,7 +88,7 @@ public final class Option {
if (node instanceof Item) { if (node instanceof Item) {
return ItemDefinition.getOptionHandler(nodeId, name); return ItemDefinition.getOptionHandler(nodeId, name);
} }
System.out.println("Unhandled node type " + node + "!");
return null; return null;
} }

View file

@ -3,6 +3,7 @@ package core.game.interaction;
import core.cache.def.impl.SceneryDefinition; import core.cache.def.impl.SceneryDefinition;
import core.game.node.Node; import core.game.node.Node;
import core.game.node.entity.player.Player; import core.game.node.entity.player.Player;
import core.tools.Log;
import core.tools.SystemLogger; import core.tools.SystemLogger;
import core.game.world.map.Location; import core.game.world.map.Location;
import core.plugin.Plugin; import core.plugin.Plugin;
@ -10,6 +11,8 @@ import core.plugin.Plugin;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import static core.api.ContentAPIKt.log;
/** /**
* Handles an interaction option. * Handles an interaction option.
* @author Emperor * @author Emperor
@ -71,7 +74,7 @@ public abstract class OptionHandler implements Plugin<Object> {
final SceneryDefinition definition = SceneryDefinition.forId(wrapper); final SceneryDefinition definition = SceneryDefinition.forId(wrapper);
final List<Integer> list = new ArrayList<>(20); final List<Integer> list = new ArrayList<>(20);
if (definition.getChildrenIds() == null) { if (definition.getChildrenIds() == null) {
SystemLogger.logErr(this.getClass(), "Null child wrapper in option handler wrapperId=" + wrapper); log(this.getClass(), Log.ERR, "Null child wrapper in option handler wrapperId=" + wrapper);
return new int[] { wrapper }; return new int[] { wrapper };
} }
for (int child : definition.getChildrenIds()) { for (int child : definition.getChildrenIds()) {

View file

@ -10,6 +10,7 @@ import core.game.node.scenery.Scenery
import core.game.world.GameWorld import core.game.world.GameWorld
import core.game.world.map.Location import core.game.world.map.Location
import core.game.world.map.path.Pathfinder import core.game.world.map.path.Pathfinder
import core.tools.Log
import core.tools.SystemLogger import core.tools.SystemLogger
import java.lang.Integer.max import java.lang.Integer.max
@ -150,7 +151,7 @@ class ScriptProcessor(val entity: Entity) {
continue continue
if (entity !is Player) { if (entity !is Player) {
toRemove.add(script) toRemove.add(script)
SystemLogger.logErr(this::class.java, "Tried to queue an item UseWith interaction for a non-player!") log(this::class.java, Log.ERR, "Tried to queue an item UseWith interaction for a non-player!")
continue continue
} }
if (script.nextExecution > GameWorld.ticks) if (script.nextExecution > GameWorld.ticks)
@ -273,7 +274,7 @@ class ScriptProcessor(val entity: Entity) {
fun addToQueue(script: Script<*>, strength: QueueStrength) { fun addToQueue(script: Script<*>, strength: QueueStrength) {
if (script !is QueuedScript && script !is QueuedUseWith) { if (script !is QueuedScript && script !is QueuedUseWith) {
SystemLogger.logErr(this::class.java, "Tried to queue ${script::class.java.simpleName} as a queueable script but it's not!") log(this::class.java, Log.ERR, "Tried to queue ${script::class.java.simpleName} as a queueable script but it's not!")
return return
} }
if (strength == QueueStrength.STRONG && entity is Player) { if (strength == QueueStrength.STRONG && entity is Player) {

View file

@ -8,6 +8,7 @@ import core.game.node.entity.npc.NPC;
import core.game.node.entity.player.Player; import core.game.node.entity.player.Player;
import core.game.node.item.Item; import core.game.node.item.Item;
import core.game.node.scenery.Scenery; import core.game.node.scenery.Scenery;
import core.tools.Log;
import core.tools.SystemLogger; import core.tools.SystemLogger;
import core.game.system.task.Pulse; import core.game.system.task.Pulse;
import core.game.world.map.Location; import core.game.world.map.Location;
@ -19,6 +20,8 @@ import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import static core.api.ContentAPIKt.log;
/** /**
* Handles the "use {@code node a} with {@code node b}" option. * Handles the "use {@code node a} with {@code node b}" option.
* *
@ -210,7 +213,7 @@ public abstract class UseWithHandler implements Plugin<Object> {
final SceneryDefinition definition = SceneryDefinition.forId(wrapper); final SceneryDefinition definition = SceneryDefinition.forId(wrapper);
final List<Integer> list = new ArrayList<>(20); final List<Integer> list = new ArrayList<>(20);
if (definition.getChildrenIds() == null) { if (definition.getChildrenIds() == null) {
SystemLogger.logErr(this.getClass(), "Null child wrapper in option handler wrapperId=" + wrapper); log(this.getClass(), Log.ERR, "Null child wrapper in option handler wrapperId=" + wrapper);
return new int[]{wrapper}; return new int[]{wrapper};
} }
for (int child : definition.getChildrenIds()) { for (int child : definition.getChildrenIds()) {

View file

@ -11,6 +11,7 @@ import core.game.node.entity.player.link.audio.Audio
import core.game.node.entity.player.link.prayer.PrayerType import core.game.node.entity.player.link.prayer.PrayerType
import core.game.node.entity.skill.Skills import core.game.node.entity.skill.Skills
import content.global.skill.summoning.familiar.Familiar import content.global.skill.summoning.familiar.Familiar
import core.api.log
import core.game.world.map.Direction import core.game.world.map.Direction
import core.game.world.map.Location import core.game.world.map.Location
import core.game.world.map.RegionManager import core.game.world.map.RegionManager
@ -21,6 +22,7 @@ import core.game.world.update.flag.context.Animation
import core.tools.RandomFunction import core.tools.RandomFunction
import core.tools.SystemLogger import core.tools.SystemLogger
import core.game.system.config.ItemConfigParser import core.game.system.config.ItemConfigParser
import core.tools.Log
import java.util.* import java.util.*
import kotlin.math.floor import kotlin.math.floor
@ -187,7 +189,7 @@ abstract class CombatSwingHandler(var type: CombatStyle?) {
val block = floor(101 - ratio) val block = floor(101 - ratio)
val acc = Math.random() * accuracy val acc = Math.random() * accuracy
val def = Math.random() * block val def = Math.random() * block
return (acc > def).also { if(entity?.username?.toLowerCase() == "test10") SystemLogger.logInfo(this::class.java, "Should hit: $it") } return (acc > def).also { if(entity?.username?.toLowerCase() == "test10") log(this::class.java, Log.FINE, "Should hit: $it") }
} }
/** /**
@ -597,7 +599,7 @@ abstract class CombatSwingHandler(var type: CombatStyle?) {
specialHandlers = HashMap() specialHandlers = HashMap()
} }
if (specialHandlers!!.containsKey(itemId)) { if (specialHandlers!!.containsKey(itemId)) {
SystemLogger.logErr(this::class.java, "Already contained special attack handler for item " + itemId + " - [old=" + specialHandlers!![itemId]!!::class.java.simpleName + ", new=" + handler.javaClass.simpleName + "].") log(this::class.java, Log.ERR, "Already contained special attack handler for item " + itemId + " - [old=" + specialHandlers!![itemId]!!::class.java.simpleName + ", new=" + handler.javaClass.simpleName + "].")
return false return false
} }
return specialHandlers!!.put(itemId, handler) == null return specialHandlers!!.put(itemId, handler) == null

View file

@ -211,7 +211,7 @@ open class MeleeSwingHandler
override fun getSetMultiplier(e: Entity?, skillId: Int): Double { override fun getSetMultiplier(e: Entity?, skillId: Int): Double {
if (e!!.properties.armourSet === ArmourSet.DHAROK && skillId == Skills.STRENGTH) { if (e!!.properties.armourSet === ArmourSet.DHAROK && skillId == Skills.STRENGTH) {
// System.out.println("Fiist number -> " + 1.0 + ((e.getSkills().getMaximumLifepoints() - e.getSkills().getLifepoints()) * 0.01));
return 1.0 + (e!!.skills.maximumLifepoints - e.skills.lifepoints) * 0.01 return 1.0 + (e!!.skills.maximumLifepoints - e.skills.lifepoints) * 0.01
} }
if(e is Player && e.isWearingVoid(CombatStyle.MELEE) && (skillId == Skills.ATTACK || skillId == Skills.STRENGTH)) { if(e is Player && e.isWearingVoid(CombatStyle.MELEE) && (skillId == Skills.ATTACK || skillId == Skills.STRENGTH)) {

View file

@ -1,6 +1,7 @@
package core.game.node.entity.combat package core.game.node.entity.combat
import content.global.skill.skillcapeperks.SkillcapePerks import content.global.skill.skillcapeperks.SkillcapePerks
import core.api.log
import core.game.container.impl.EquipmentContainer import core.game.container.impl.EquipmentContainer
import core.game.node.entity.Entity import core.game.node.entity.Entity
import core.game.node.entity.combat.equipment.* import core.game.node.entity.combat.equipment.*
@ -20,6 +21,7 @@ import core.game.world.update.flag.context.Graphics
import core.tools.RandomFunction import core.tools.RandomFunction
import core.tools.SystemLogger import core.tools.SystemLogger
import core.game.world.GameWorld import core.game.world.GameWorld
import core.tools.Log
import java.util.* import java.util.*
import kotlin.math.ceil import kotlin.math.ceil
import kotlin.math.floor import kotlin.math.floor
@ -75,7 +77,7 @@ open class RangeSwingHandler
} }
var hit = 0 var hit = 0
if (isAccurateImpact(entity, victim, CombatStyle.RANGE)) { if (isAccurateImpact(entity, victim, CombatStyle.RANGE)) {
val max = calculateHit(entity, victim, 1.0).also { if(entity?.name?.toLowerCase() == "test10") SystemLogger.logInfo(this::class.java, "Damage: $it") } val max = calculateHit(entity, victim, 1.0).also { if(entity?.name?.toLowerCase() == "test10") log(this::class.java, Log.FINE, "Damage: $it") }
state.maximumHit = max state.maximumHit = max
hit = RandomFunction.random(max + 1) hit = RandomFunction.random(max + 1)
} }
@ -106,7 +108,7 @@ open class RangeSwingHandler
if (entity is Player) { if (entity is Player) {
val rw = RangeWeapon.get(entity.equipment.getNew(3).id) val rw = RangeWeapon.get(entity.equipment.getNew(3).id)
if (rw == null) { if (rw == null) {
SystemLogger.logErr(this::class.java, "Unhandled range weapon used - [item id=" + entity.equipment.getNew(3).id + "].") log(this::class.java, Log.ERR, "Unhandled range weapon used - [item id=" + entity.equipment.getNew(3).id + "].")
return return
} }
w = Weapon(entity.equipment[3], rw.ammunitionSlot, entity.equipment.getNew(rw.ammunitionSlot)) w = Weapon(entity.equipment[3], rw.ammunitionSlot, entity.equipment.getNew(rw.ammunitionSlot))

View file

@ -95,7 +95,7 @@ public final class RangeWeapon {
return false; return false;
} }
NodeList nodeList = doc.getDocumentElement().getChildNodes(); NodeList nodeList = doc.getDocumentElement().getChildNodes();
System.out.println("Loading range weapon info...");
for (short i = 1; i < nodeList.getLength(); i += 2) { for (short i = 1; i < nodeList.getLength(); i += 2) {
Node n = nodeList.item(i); Node n = nodeList.item(i);
if (n != null) { if (n != null) {
@ -131,7 +131,7 @@ public final class RangeWeapon {
} }
} }
} }
System.out.println("Loaded " + RANGE_WEAPONS.size() + " range weapon definitions.");
return true; return true;
} }

View file

@ -107,10 +107,10 @@ public enum SpellType {
BARRAGE(1.4) { BARRAGE(1.4) {
@Override @Override
public int getImpactAmount(Entity e, Entity victim, int base) { public int getImpactAmount(Entity e, Entity victim, int base) {
System.out.println("Attacker - >" + e.getName());
System.out.println("Victim - >" + victim.getName());
System.out.println("Accuracy Mod -> " + getAccuracyMod());
System.out.println("Base Mod -> " + base);
return 26 + base; return 26 + base;
} }
}, },

View file

@ -8,11 +8,14 @@ import core.game.world.map.Direction;
import core.game.world.map.Location; import core.game.world.map.Location;
import core.game.world.map.Point; import core.game.world.map.Point;
import core.game.world.map.RegionManager; import core.game.world.map.RegionManager;
import core.tools.Log;
import core.tools.SystemLogger; import core.tools.SystemLogger;
import java.util.Deque; import java.util.Deque;
import java.util.LinkedList; import java.util.LinkedList;
import static core.api.ContentAPIKt.log;
/** /**
* The walking queue. * The walking queue.
* @author Emperor * @author Emperor
@ -375,7 +378,7 @@ public final class WalkingQueue {
Location loc = entity.getLocation(); Location loc = entity.getLocation();
if (loc == null) { if (loc == null) {
SystemLogger.logErr(this.getClass(), log(this.getClass(), Log.ERR,
"The entity location provided was null." "The entity location provided was null."
+ "Are you sure anything down the stack trace isn't providing an NPC with a null location?" + "Are you sure anything down the stack trace isn't providing an NPC with a null location?"
); );

View file

@ -1,5 +1,6 @@
package core.game.node.entity.npc; package core.game.node.entity.npc;
import core.tools.Log;
import core.tools.SystemLogger; import core.tools.SystemLogger;
import core.game.world.map.Location; import core.game.world.map.Location;
import core.plugin.Plugin; import core.plugin.Plugin;
@ -7,6 +8,8 @@ import core.plugin.Plugin;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map; import java.util.Map;
import static core.api.ContentAPIKt.log;
/** /**
* Used as superclass for "special NPC" plugins. * Used as superclass for "special NPC" plugins.
* @author Emperor * @author Emperor
@ -63,7 +66,7 @@ public abstract class AbstractNPC extends NPC implements Plugin<Object> {
if (mapping.containsKey(id)) { if (mapping.containsKey(id)) {
String name = mapping.get(id).getClass().getSimpleName(); String name = mapping.get(id).getClass().getSimpleName();
if (name != getClass().getSimpleName()) { if (name != getClass().getSimpleName()) {
SystemLogger.logErr(this.getClass(), "[" + getClass().getSimpleName() + "] - Warning: Mapping already contained NPC id " + id + "! (" + name + ")"); log(this.getClass(), Log.ERR, "[" + getClass().getSimpleName() + "] - Warning: Mapping already contained NPC id " + id + "! (" + name + ")");
continue; continue;
} }
} }

View file

@ -56,9 +56,7 @@ import core.net.packet.context.SkillContext;
import core.net.packet.out.BuildDynamicScene; import core.net.packet.out.BuildDynamicScene;
import core.net.packet.out.SkillLevel; import core.net.packet.out.SkillLevel;
import core.net.packet.out.UpdateSceneGraph; import core.net.packet.out.UpdateSceneGraph;
import core.tools.RandomFunction; import core.tools.*;
import core.tools.StringUtils;
import core.tools.TickUtilsKt;
import kotlin.Unit; import kotlin.Unit;
import kotlin.jvm.functions.Function1; import kotlin.jvm.functions.Function1;
import org.rs09.consts.Items; import org.rs09.consts.Items;
@ -73,7 +71,6 @@ import core.game.node.entity.combat.graves.GraveController;
import core.game.node.entity.player.info.login.PlayerSaver; import core.game.node.entity.player.info.login.PlayerSaver;
import core.game.node.entity.state.State; import core.game.node.entity.state.State;
import core.game.node.entity.state.StateRepository; import core.game.node.entity.state.StateRepository;
import core.tools.SystemLogger;
import core.game.world.GameWorld; import core.game.world.GameWorld;
import core.game.world.repository.Repository; import core.game.world.repository.Repository;
import core.game.world.update.MapChunkRenderer; import core.game.world.update.MapChunkRenderer;
@ -318,6 +315,8 @@ public class Player extends Entity {
private int archeryTotal = 0; private int archeryTotal = 0;
public byte[] opCounts = new byte[255];
/** /**
* Constructs a new {@code Player} {@code Object}. * Constructs a new {@code Player} {@code Object}.
* @param details The player's details. * @param details The player's details.
@ -333,7 +332,7 @@ public class Player extends Entity {
@Override @Override
public void init() { public void init() {
if(!artificial) if(!artificial)
SystemLogger.logInfo(this.getClass(), getUsername() + " initialising..."); log(this.getClass(), Log.INFO, getUsername() + " initialising...");
if (!artificial) { if (!artificial) {
getProperties().setSpawnLocation(ServerConstants.HOME_LOCATION); getProperties().setSpawnLocation(ServerConstants.HOME_LOCATION);
getDetails().getSession().setObject(this); getDetails().getSession().setObject(this);
@ -528,6 +527,7 @@ public class Player extends Entity {
PlayerParser.saveImmediately(this); PlayerParser.saveImmediately(this);
removeAttribute("flagged-for-save"); removeAttribute("flagged-for-save");
} }
Arrays.fill(opCounts, (byte) 0);
} }
@Override @Override

View file

@ -8,6 +8,7 @@ import core.integrations.discord.Discord
import kotlinx.coroutines.* import kotlinx.coroutines.*
import org.sqlite.SQLiteDataSource import org.sqlite.SQLiteDataSource
import core.ServerConstants import core.ServerConstants
import core.tools.Log
import core.tools.SystemLogger import core.tools.SystemLogger
import java.io.File import java.io.File
import java.sql.Connection import java.sql.Connection
@ -138,7 +139,7 @@ object PlayerMonitor {
} }
@JvmStatic fun flushRemainingEventsImmediately() { @JvmStatic fun flushRemainingEventsImmediately() {
SystemLogger.logInfo(this::class.java, "Flushing player log events...") core.api.log(this::class.java, Log.FINE, "Flushing player log events...")
val path = ServerConstants.LOGS_PATH + "playerlogs.db" val path = ServerConstants.LOGS_PATH + "playerlogs.db"
if (!File(path).exists()) { if (!File(path).exists()) {
createSqliteDatabase(path) createSqliteDatabase(path)

View file

@ -14,6 +14,7 @@ import core.plugin.Plugin;
import core.ServerConstants; import core.ServerConstants;
import core.game.interaction.InteractionListeners; import core.game.interaction.InteractionListeners;
import content.global.handlers.iface.RulesAndInfo; import content.global.handlers.iface.RulesAndInfo;
import core.tools.Log;
import core.tools.SystemLogger; import core.tools.SystemLogger;
import core.game.world.GameWorld; import core.game.world.GameWorld;
import core.game.world.repository.Repository; import core.game.world.repository.Repository;
@ -26,6 +27,8 @@ import java.util.Random;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
import java.util.stream.IntStream; import java.util.stream.IntStream;
import static core.api.ContentAPIKt.log;
/** /**
* Sends the login configuration packets. * Sends the login configuration packets.
@ -209,7 +212,7 @@ public final class LoginConfiguration {
*/ */
public static final void config(final Player player) { public static final void config(final Player player) {
if(!player.isArtificial()) if(!player.isArtificial())
SystemLogger.logInfo(LoginConfiguration.class, "configuring player " + player.getUsername()); log(LoginConfiguration.class, Log.INFO, "configuring player " + player.getUsername());
player.getInventory().refresh(); player.getInventory().refresh();
player.getEquipment().refresh(); player.getEquipment().refresh();
player.getSkills().refresh(); player.getSkills().refresh();
@ -226,7 +229,7 @@ public final class LoginConfiguration {
player.getEmoteManager().refresh(); player.getEmoteManager().refresh();
player.getInterfaceManager().openInfoBars(); player.getInterfaceManager().openInfoBars();
if(!player.isArtificial()) if(!player.isArtificial())
SystemLogger.logInfo(LoginConfiguration.class, "finished configuring player " + player.getUsername()); log(LoginConfiguration.class, Log.INFO, "finished configuring player " + player.getUsername());
} }
/** /**

View file

@ -2,10 +2,13 @@ package core.game.node.entity.player.info.login;
import core.game.node.entity.player.Player; import core.game.node.entity.player.Player;
import core.ServerConstants; import core.ServerConstants;
import core.tools.Log;
import core.tools.SystemLogger; import core.tools.SystemLogger;
import java.io.*; import java.io.*;
import static core.api.ContentAPIKt.log;
/** /**
* Class used to abstract the process of loading a player save. * Class used to abstract the process of loading a player save.
* @author Ceikry * @author Ceikry
@ -61,7 +64,7 @@ public final class PlayerParser {
assert os != null; assert os != null;
os.close(); os.close();
} catch (Exception f){ } catch (Exception f){
SystemLogger.logWarn(PlayerParser.class, "Unable to close file copiers in PlayerParser.java line 216."); log(PlayerParser.class, Log.ERR, "Unable to close file copiers in PlayerParser.java line 216.");
f.printStackTrace(); f.printStackTrace();
} }
} }

Some files were not shown because too many files have changed in this diff Show more