Migrate last set of calls to FilePrinter, delete FilePrinter

This commit is contained in:
P0nk
2022-02-10 19:48:02 +01:00
parent 8b630f7357
commit c879e36a9c
36 changed files with 174 additions and 210 deletions

View File

@@ -1724,7 +1724,7 @@ public class Character extends AbstractCharacterObject {
resetHpDecreaseTask();
}
} else {
FilePrinter.printError(FilePrinter.MAPLE_MAP, "Character " + this.getName() + " got stuck when moving to map " + map.getId() + ".");
log.warn("Chr {} got stuck when moving to map {}", getName(), map.getId());
client.disconnect(true, false); // thanks BHB for noticing a player storage stuck case here
return;
}
@@ -5607,9 +5607,8 @@ public class Character extends AbstractCharacterObject {
}
try {
merchant.saveItems(false);
} catch (SQLException ex) {
ex.printStackTrace();
FilePrinter.printError(FilePrinter.EXCEPTION_CAUGHT, "Error while saving " + name + "'s Hired Merchant items.");
} catch (SQLException e) {
log.error("Error while saving {}'s Hired Merchant items.", name, e);
}
}
}
@@ -8244,7 +8243,7 @@ public class Character extends AbstractCharacterObject {
int updateRows = ps.executeUpdate();
if (updateRows < 1) {
FilePrinter.printError(FilePrinter.INSERT_CHAR, "Error trying to insert " + name);
log.error("Error trying to insert chr {}", name);
return false;
}
@@ -8252,7 +8251,7 @@ public class Character extends AbstractCharacterObject {
if (rs.next()) {
this.id = rs.getInt(1);
} else {
FilePrinter.printError(FilePrinter.INSERT_CHAR, "Inserting char failed " + name);
log.error("Inserting chr {} failed", name);
return false;
}
}

View File

@@ -27,7 +27,8 @@ import client.Character;
import client.Client;
import client.command.Command;
import net.server.Server;
import tools.FilePrinter;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import tools.PacketCreator;
import tools.Randomizer;
@@ -36,6 +37,8 @@ public class GmCommand extends Command {
setDescription("Send a message to the game masters.");
}
private static final Logger log = LoggerFactory.getLogger(GmCommand.class);
@Override
public void execute(Client c, String[] params) {
String[] tips = {
@@ -53,7 +56,7 @@ public class GmCommand extends Command {
String message = player.getLastCommandMessage();
Server.getInstance().broadcastGMMessage(c.getWorld(), PacketCreator.sendYellowTip("[GM Message]:" + Character.makeMapleReadable(player.getName()) + ": " + message));
Server.getInstance().broadcastGMMessage(c.getWorld(), PacketCreator.serverNotice(1, message));
FilePrinter.printError(FilePrinter.COMMAND_GM, Character.makeMapleReadable(player.getName()) + ": " + message);
log.info("{}: {}", Character.makeMapleReadable(player.getName()), message);
player.dropMessage(5, "Your message '" + message + "' was sent to GMs.");
player.dropMessage(5, tips[Randomizer.nextInt(tips.length)]);
}

View File

@@ -27,7 +27,8 @@ import client.Character;
import client.Client;
import client.command.Command;
import net.server.Server;
import tools.FilePrinter;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import tools.PacketCreator;
public class ReportBugCommand extends Command {
@@ -35,6 +36,8 @@ public class ReportBugCommand extends Command {
setDescription("Send in a bug report.");
}
private static final Logger log = LoggerFactory.getLogger(ReportBugCommand.class);
@Override
public void execute(Client c, String[] params) {
Character player = c.getPlayer();
@@ -46,7 +49,7 @@ public class ReportBugCommand extends Command {
String message = player.getLastCommandMessage();
Server.getInstance().broadcastGMMessage(c.getWorld(), PacketCreator.sendYellowTip("[Bug]:" + Character.makeMapleReadable(player.getName()) + ": " + message));
Server.getInstance().broadcastGMMessage(c.getWorld(), PacketCreator.serverNotice(1, message));
FilePrinter.printError(FilePrinter.COMMAND_BUG, Character.makeMapleReadable(player.getName()) + ": " + message);
log.info("{}: {}", Character.makeMapleReadable(player.getName()), message);
player.dropMessage(5, "Your bug '" + message + "' was submitted successfully to our developers. Thank you!");
}

View File

@@ -27,9 +27,10 @@ import client.inventory.manipulator.InventoryManipulator;
import constants.inventory.ItemConstants;
import net.server.audit.locks.MonitoredLockType;
import net.server.audit.locks.factory.MonitoredReentrantLockFactory;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import server.ItemInformationProvider;
import server.ThreadManager;
import tools.FilePrinter;
import tools.Pair;
import java.util.*;
@@ -40,6 +41,7 @@ import java.util.concurrent.locks.Lock;
* @author Matze, Ronan
*/
public class Inventory implements Iterable<Item> {
private static final Logger log = LoggerFactory.getLogger(Inventory.class);
protected final Map<Short, Item> inventory;
protected final InventoryType type;
protected final Lock lock = MonitoredReentrantLockFactory.createLock(MonitoredLockType.INVENTORY, true);
@@ -117,7 +119,7 @@ public class Inventory implements Iterable<Item> {
for (Item item : list()) {
String itemName = ii.getName(item.getItemId());
if (itemName == null) {
FilePrinter.printError(FilePrinter.EXCEPTION, "[CRITICAL] Item " + item.getItemId() + " has no name.");
log.error("[CRITICAL] Item {} has no name", item.getItemId());
continue;
}

View File

@@ -29,9 +29,10 @@ import client.newyear.NewYearCardRecord;
import config.YamlConfig;
import constants.id.ItemId;
import constants.inventory.ItemConstants;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import server.ItemInformationProvider;
import server.maps.MapleMap;
import tools.FilePrinter;
import tools.PacketCreator;
import java.awt.*;
@@ -45,6 +46,7 @@ import java.util.List;
* @author Ronan - improved check space feature and removed redundant object calls
*/
public class InventoryManipulator {
private static final Logger log = LoggerFactory.getLogger(InventoryManipulator.class);
public static boolean addById(Client c, int itemId, short quantity) {
return addById(c, itemId, quantity, null, -1, -1);
@@ -269,7 +271,7 @@ public class InventoryManipulator {
chr.setHasSandboxItem();
}
} else {
FilePrinter.printError(FilePrinter.ITEM, "Tried to pickup Equip id " + itemid + " containing more than 1 quantity --> " + quantity);
log.warn("Tried to pickup Equip id {} containing more than 1 quantity --> {}", itemid, quantity);
c.sendPacket(PacketCreator.getInventoryFull());
c.sendPacket(PacketCreator.showItemUnavailable());
return false;

View File

@@ -30,10 +30,11 @@ import constants.game.GameConstants;
import constants.id.ItemId;
import constants.inventory.ItemConstants;
import net.packet.InPacket;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import server.ItemInformationProvider;
import server.MakerItemFactory;
import server.MakerItemFactory.MakerItemCreateEntry;
import tools.FilePrinter;
import tools.PacketCreator;
import tools.Pair;
@@ -46,7 +47,7 @@ import java.util.Map;
* @author Ronan
*/
public class MakerProcessor {
private static final Logger log = LoggerFactory.getLogger(MakerProcessor.class);
private static final ItemInformationProvider ii = ItemInformationProvider.getInstance();
public static void makerAction(InPacket p, Client c) {
@@ -150,7 +151,7 @@ public class MakerProcessor {
switch (createStatus) {
case -1:// non-available for Maker itemid has been tried to forge
FilePrinter.printError(FilePrinter.EXPLOITS, "Player " + c.getPlayer().getName() + " tried to craft itemid " + toCreate + " using the Maker skill.");
log.warn("Chr {} tried to craft itemid {} using the Maker skill.", c.getPlayer().getName(), toCreate);
c.sendPacket(PacketCreator.serverNotice(1, "The requested item could not be crafted on this operation."));
c.sendPacket(PacketCreator.makerEnableActions());
break;

View File

@@ -36,11 +36,12 @@ import config.YamlConfig;
import constants.id.ItemId;
import constants.inventory.ItemConstants;
import net.server.channel.Channel;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import server.DueyPackage;
import server.ItemInformationProvider;
import server.Trade;
import tools.DatabaseConnection;
import tools.FilePrinter;
import tools.PacketCreator;
import tools.Pair;
@@ -54,6 +55,7 @@ import java.util.List;
* @author RonanLana - synchronization of Duey modules
*/
public class DueyProcessor {
private static final Logger log = LoggerFactory.getLogger(DueyProcessor.class);
public enum Actions {
TOSERVER_RECV_ITEM(0x00),
@@ -204,7 +206,7 @@ public class DueyProcessor {
int updateRows = ps.executeUpdate();
if (updateRows < 1) {
FilePrinter.printError(FilePrinter.INSERT_CHAR, "Error trying to create package [mesos: " + mesos + ", " + sender + ", quick: " + quick + ", to CharacterId: " + toCid + "]");
log.error("Error trying to create package [mesos: {}, sender: {}, quick: {}, receiver chrId: {}]", mesos, sender, quick, toCid);
return -1;
}
@@ -213,7 +215,7 @@ public class DueyProcessor {
if (rs.next()) {
packageId = rs.getInt(1);
} else {
FilePrinter.printError(FilePrinter.INSERT_CHAR, "Failed inserting package [mesos: " + mesos + ", " + sender + ", quick: " + quick + ", to CharacterId: " + toCid + "]");
log.error("Failed inserting package [mesos: {}, sender: {}, quick: {}, receiver chrId: {}]", mesos, sender, quick, toCid);
return -1;
}
}
@@ -287,7 +289,7 @@ public class DueyProcessor {
fee += 5000;
} else if (!c.getPlayer().haveItem(ItemId.QUICK_DELIVERY_TICKET)) {
AutobanFactory.PACKET_EDIT.alert(c.getPlayer(), c.getPlayer().getName() + " tried to packet edit with Quick Delivery on duey.");
FilePrinter.printError(FilePrinter.EXPLOITS + c.getPlayer().getName() + ".txt", c.getPlayer().getName() + " tried to use duey with Quick Delivery, mesos " + sendMesos + " and amount " + amount);
log.warn("Chr {} tried to use duey with Quick Delivery without a ticket, mesos {} and amount {}", c.getPlayer().getName(), sendMesos, amount);
c.disconnect(true, false);
return;
}
@@ -295,7 +297,7 @@ public class DueyProcessor {
long finalcost = (long) sendMesos + fee;
if (finalcost < 0 || finalcost > Integer.MAX_VALUE || (amount < 1 && sendMesos == 0)) {
AutobanFactory.PACKET_EDIT.alert(c.getPlayer(), c.getPlayer().getName() + " tried to packet edit with duey.");
FilePrinter.printError(FilePrinter.EXPLOITS + c.getPlayer().getName() + ".txt", c.getPlayer().getName() + " tried to use duey with mesos " + sendMesos + " and amount " + amount);
log.warn("Chr {} tried to use duey with mesos {} and amount {}", c.getPlayer().getName(), sendMesos, amount);
c.disconnect(true, false);
return;
}
@@ -394,7 +396,7 @@ public class DueyProcessor {
if (dp == null) {
c.sendPacket(PacketCreator.sendDueyMSG(Actions.TOCLIENT_RECV_UNKNOWN_ERROR.getCode()));
FilePrinter.printError(FilePrinter.EXPLOITS + c.getPlayer().getName() + ".txt", c.getPlayer().getName() + " tried to receive package from duey with id " + packageId);
log.warn("Chr {} tried to receive package from duey with id {}", c.getPlayer().getName(), packageId);
return;
}

View File

@@ -30,13 +30,15 @@ import client.SkillFactory;
import client.autoban.AutobanFactory;
import constants.game.GameConstants;
import constants.skills.Aran;
import tools.FilePrinter;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import tools.PacketCreator;
/**
* @author RonanLana - synchronization of SP transaction modules
*/
public class AssignSPProcessor {
private static final Logger log = LoggerFactory.getLogger(AssignSPProcessor.class);
public static boolean canSPAssign(Client c, int skillid) {
if (skillid == Aran.HIDDEN_FULL_DOUBLE || skillid == Aran.HIDDEN_FULL_TRIPLE || skillid == Aran.HIDDEN_OVER_DOUBLE || skillid == Aran.HIDDEN_OVER_TRIPLE) {
@@ -47,7 +49,7 @@ public class AssignSPProcessor {
Character player = c.getPlayer();
if ((!GameConstants.isPqSkillMap(player.getMapId()) && GameConstants.isPqSkill(skillid)) || (!player.isGM() && GameConstants.isGMSkills(skillid)) || (!GameConstants.isInJobTree(skillid, player.getJob().getId()) && !player.isGM())) {
AutobanFactory.PACKET_EDIT.alert(player, "tried to packet edit in distributing sp.");
FilePrinter.printError(FilePrinter.EXPLOITS + c.getPlayer().getName() + ".txt", c.getPlayer().getName() + " tried to use skill " + skillid + " without it being in their job.");
log.warn("Chr {} tried to use skill {} without it being in their job.", c.getPlayer().getName(), skillid);
c.disconnect(true, false);
return false;

View File

@@ -23,7 +23,6 @@ import net.server.audit.locks.MonitoredLockType;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import server.TimerManager;
import tools.FilePrinter;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
@@ -191,7 +190,7 @@ public class ThreadTracker {
DateFormat dateFormat = new SimpleDateFormat("dd-MM-yyyy HH:mm:ss");
dateFormat.setTimeZone(TimeZone.getDefault());
FilePrinter.printError(FilePrinter.DEADLOCK_STATE, printThreadTrackerState(dateFormat.format(new Date())));
log.error("Deadlock state: {}", printThreadTrackerState(dateFormat.format(new Date())));
//FilePrinter.printError(FilePrinter.DEADLOCK_STATE, "[" + dateFormat.format(new Date()) + "] Presenting current lock path for lockid " + lockId.name() + ".\r\n" + printLockStatus(lockId) + "\r\n-------------------------------");
}
} else {

View File

@@ -21,12 +21,14 @@ package net.server.audit.locks.empty;
import net.server.audit.locks.MonitoredLockType;
import net.server.audit.locks.MonitoredReadLock;
import tools.FilePrinter;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* @author RonanLana
*/
public class EmptyReadLock extends AbstractEmptyLock implements MonitoredReadLock {
private static final Logger log = LoggerFactory.getLogger(EmptyReadLock.class);
private final MonitoredLockType id;
public EmptyReadLock(MonitoredLockType type) {
@@ -35,7 +37,7 @@ public class EmptyReadLock extends AbstractEmptyLock implements MonitoredReadLoc
@Override
public void lock() {
FilePrinter.printError(FilePrinter.DISPOSED_LOCKS, "Captured locking tentative on disposed lock " + id + ":" + printThreadStack(Thread.currentThread().getStackTrace()));
log.warn("Captured locking tentative on disposed lock {}: {}", id, printThreadStack(Thread.currentThread().getStackTrace()));
}
@Override
@@ -43,7 +45,7 @@ public class EmptyReadLock extends AbstractEmptyLock implements MonitoredReadLoc
@Override
public boolean tryLock() {
FilePrinter.printError(FilePrinter.DISPOSED_LOCKS, "Captured try-locking tentative on disposed lock " + id + ":" + printThreadStack(Thread.currentThread().getStackTrace()));
log.warn("Captured try-locking tentative on disposed lock {}: {}", id, printThreadStack(Thread.currentThread().getStackTrace()));
return false;
}

View File

@@ -21,12 +21,14 @@ package net.server.audit.locks.empty;
import net.server.audit.locks.MonitoredLockType;
import net.server.audit.locks.MonitoredReentrantLock;
import tools.FilePrinter;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* @author RonanLana
*/
public class EmptyReentrantLock extends AbstractEmptyLock implements MonitoredReentrantLock {
private static final Logger log = LoggerFactory.getLogger(EmptyReentrantLock.class);
private final MonitoredLockType id;
public EmptyReentrantLock(MonitoredLockType type) {
@@ -35,7 +37,7 @@ public class EmptyReentrantLock extends AbstractEmptyLock implements MonitoredRe
@Override
public void lock() {
FilePrinter.printError(FilePrinter.DISPOSED_LOCKS, "Captured locking tentative on disposed lock " + id + ":" + printThreadStack(Thread.currentThread().getStackTrace()));
log.warn("Captured locking tentative on disposed lock {}: {}", id, printThreadStack(Thread.currentThread().getStackTrace()));
}
@Override
@@ -43,7 +45,7 @@ public class EmptyReentrantLock extends AbstractEmptyLock implements MonitoredRe
@Override
public boolean tryLock() {
FilePrinter.printError(FilePrinter.DISPOSED_LOCKS, "Captured try-locking tentative on disposed lock " + id + ":" + printThreadStack(Thread.currentThread().getStackTrace()));
log.warn("Captured try-locking tentative on disposed lock {}: {}", id, printThreadStack(Thread.currentThread().getStackTrace()));
return false;
}

View File

@@ -21,12 +21,14 @@ package net.server.audit.locks.empty;
import net.server.audit.locks.MonitoredLockType;
import net.server.audit.locks.MonitoredWriteLock;
import tools.FilePrinter;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* @author RonanLana
*/
public class EmptyWriteLock extends AbstractEmptyLock implements MonitoredWriteLock {
private static final Logger log = LoggerFactory.getLogger(EmptyWriteLock.class);
private final MonitoredLockType id;
public EmptyWriteLock(MonitoredLockType type) {
@@ -35,7 +37,7 @@ public class EmptyWriteLock extends AbstractEmptyLock implements MonitoredWriteL
@Override
public void lock() {
FilePrinter.printError(FilePrinter.DISPOSED_LOCKS, "Captured locking tentative on disposed lock " + id + ":" + printThreadStack(Thread.currentThread().getStackTrace()));
log.warn("Captured locking tentative on disposed lock {}: {}", id, printThreadStack(Thread.currentThread().getStackTrace()));
}
@Override
@@ -43,7 +45,7 @@ public class EmptyWriteLock extends AbstractEmptyLock implements MonitoredWriteL
@Override
public boolean tryLock() {
FilePrinter.printError(FilePrinter.DISPOSED_LOCKS, "Captured try-locking tentative on disposed lock " + id + ":" + printThreadStack(Thread.currentThread().getStackTrace()));
log.warn("Captured try-locking tentative on dispsoed lock {}: {}", id, printThreadStack(Thread.currentThread().getStackTrace()));
return false;
}

View File

@@ -29,26 +29,27 @@ import constants.id.ItemId;
import constants.id.MapId;
import net.AbstractPacketHandler;
import net.packet.InPacket;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import server.Trade;
import server.maps.MapleMap;
import server.maps.Portal;
import tools.FilePrinter;
import tools.PacketCreator;
import java.awt.*;
import java.net.InetAddress;
import java.net.UnknownHostException;
import java.util.Calendar;
public final class ChangeMapHandler extends AbstractPacketHandler {
private static final Logger log = LoggerFactory.getLogger(ChangeMapHandler.class);
@Override
public final void handlePacket(InPacket p, Client c) {
public void handlePacket(InPacket p, Client c) {
Character chr = c.getPlayer();
if (chr.isChangingMaps() || chr.isBanned()) {
if (chr.isChangingMaps()) {
FilePrinter.printError(FilePrinter.PORTAL_STUCK + chr.getName() + ".txt", "Player " + chr.getName() + " got stuck when changing maps. Timestamp: " + Calendar.getInstance().getTime() + " Last visited mapids: " + chr.getLastVisitedMapids());
log.warn("Chr {} got stuck when changing maps. Last visited mapids: {}", chr.getName(), chr.getLastVisitedMapids());
}
c.sendPacket(PacketCreator.enableActions());

View File

@@ -30,10 +30,11 @@ import client.inventory.manipulator.InventoryManipulator;
import net.AbstractPacketHandler;
import net.packet.InPacket;
import net.server.Server;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import server.CashShop;
import server.ItemInformationProvider;
import tools.DatabaseConnection;
import tools.FilePrinter;
import tools.PacketCreator;
import tools.Pair;
@@ -49,6 +50,7 @@ import java.util.Map.Entry;
* @author Ronan (HeavenMS)
*/
public final class CouponCodeHandler extends AbstractPacketHandler {
private static final Logger log = LoggerFactory.getLogger(CouponCodeHandler.class);
private static List<Pair<Integer, Pair<Integer, Integer>>> getNXCodeItems(Character chr, Connection con, int codeid) throws SQLException {
Map<Integer, Integer> couponItems = new HashMap<>();
@@ -90,7 +92,7 @@ public final class CouponCodeHandler extends AbstractPacketHandler {
item = 4000000;
qty = 1;
FilePrinter.printError(FilePrinter.UNHANDLED_EVENT, "Error trying to redeem itemid " + item + " from codeid " + codeid + ".");
log.warn("Error trying to redeem itemid {} from coupon codeid {}", item, codeid);
}
if (!chr.canHold(item, qty)) {

View File

@@ -24,13 +24,15 @@ import client.Client;
import constants.game.GameConstants;
import net.AbstractPacketHandler;
import net.packet.InPacket;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import server.life.Monster;
import server.life.MonsterInformationProvider;
import server.maps.MapleMap;
import tools.FilePrinter;
import tools.PacketCreator;
public class FieldDamageMobHandler extends AbstractPacketHandler {
private static final Logger log = LoggerFactory.getLogger(FieldDamageMobHandler.class);
@Override
public final void handlePacket(InPacket p, Client c) {
@@ -41,14 +43,15 @@ public class FieldDamageMobHandler extends AbstractPacketHandler {
MapleMap map = chr.getMap();
if (map.getEnvironment().isEmpty()) { // no environment objects activated to actually hit the mob
FilePrinter.printError(FilePrinter.EXPLOITS + c.getPlayer().getName() + ".txt", c.getPlayer().getName() + " tried to use an obstacle on mapid " + map.getId() + " to attack.");
log.warn("Chr {} tried to use an obstacle on mapid {} to attack", c.getPlayer().getName(), map.getId());
return;
}
Monster mob = map.getMonsterByOid(mobOid);
if (mob != null) {
if (dmg < 0 || dmg > GameConstants.MAX_FIELD_MOB_DAMAGE) {
FilePrinter.printError(FilePrinter.EXPLOITS + c.getPlayer().getName() + ".txt", c.getPlayer().getName() + " tried to use an obstacle on mapid " + map.getId() + " to attack " + MonsterInformationProvider.getInstance().getMobNameFromId(mob.getId()) + " with damage " + dmg);
log.warn("Chr {} tried to use an obstacle on mapid {} to attack {} with damage {}", c.getPlayer().getName(),
map.getId(), MonsterInformationProvider.getInstance().getMobNameFromId(mob.getId()), dmg);
return;
}

View File

@@ -27,13 +27,16 @@ import client.autoban.AutobanFactory;
import client.command.CommandsExecutor;
import net.AbstractPacketHandler;
import net.packet.InPacket;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import server.ChatLogger;
import tools.FilePrinter;
import tools.PacketCreator;
public final class GeneralChatHandler extends AbstractPacketHandler {
private static final Logger log = LoggerFactory.getLogger(GeneralChatHandler.class);
@Override
public final void handlePacket(InPacket p, Client c) {
public void handlePacket(InPacket p, Client c) {
String s = p.readString();
Character chr = c.getPlayer();
if (chr.getAutobanManager().getLastSpam(7) + 200 > currentServerTime()) {
@@ -42,7 +45,7 @@ public final class GeneralChatHandler extends AbstractPacketHandler {
}
if (s.length() > Byte.MAX_VALUE && !chr.isGM()) {
AutobanFactory.PACKET_EDIT.alert(c.getPlayer(), c.getPlayer().getName() + " tried to packet edit in General Chat.");
FilePrinter.printError(FilePrinter.EXPLOITS + c.getPlayer().getName() + ".txt", c.getPlayer().getName() + " tried to send text with length of " + s.length());
log.warn("Chr {} tried to send text with length of {}", c.getPlayer().getName(), s.length());
c.disconnect(true, false);
return;
}

View File

@@ -27,13 +27,15 @@ import client.Client;
import client.autoban.AutobanFactory;
import net.AbstractPacketHandler;
import net.packet.InPacket;
import tools.FilePrinter;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import tools.PacketCreator;
public final class GiveFameHandler extends AbstractPacketHandler {
private static final Logger log = LoggerFactory.getLogger(GiveFameHandler.class);
@Override
public final void handlePacket(InPacket p, Client c) {
public void handlePacket(InPacket p, Client c) {
Character target = (Character) c.getPlayer().getMap().getMapObject(p.readInt());
int mode = p.readByte();
int famechange = 2 * mode - 1;
@@ -42,7 +44,7 @@ public final class GiveFameHandler extends AbstractPacketHandler {
return;
} else if (famechange != 1 && famechange != -1) {
AutobanFactory.PACKET_EDIT.alert(c.getPlayer(), c.getPlayer().getName() + " tried to packet edit fame.");
FilePrinter.printError(FilePrinter.EXPLOITS + c.getPlayer().getName() + ".txt", c.getPlayer().getName() + " tried to fame hack with famechange " + famechange);
log.warn("Chr {} tried to fame hack with famechange {}", c.getPlayer().getName(), famechange);
c.disconnect(true, false);
return;
}

View File

@@ -25,7 +25,8 @@ import constants.skills.Gunslinger;
import constants.skills.NightWalker;
import net.AbstractPacketHandler;
import net.packet.InPacket;
import tools.FilePrinter;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import tools.PacketCreator;
import java.awt.*;
@@ -34,6 +35,7 @@ import java.awt.*;
* @author GabrielSin
*/
public class GrenadeEffectHandler extends AbstractPacketHandler {
private static final Logger log = LoggerFactory.getLogger(GrenadeEffectHandler.class);
@Override
public void handlePacket(InPacket p, Client c) {
@@ -51,7 +53,7 @@ public class GrenadeEffectHandler extends AbstractPacketHandler {
}
break;
default:
FilePrinter.printError(FilePrinter.UNHANDLED_EVENT, "The skill id: " + skillId + " is not coded in " + this.getClass().getName() + ".");
log.warn("The skill id: {} is not coded in {}", skillId, getClass().getSimpleName());
}
}

View File

@@ -25,8 +25,9 @@ import client.Character;
import client.Client;
import net.AbstractPacketHandler;
import net.packet.InPacket;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import server.maps.MapObject;
import tools.FilePrinter;
import java.awt.*;
@@ -35,9 +36,10 @@ import java.awt.*;
* @author Ronan
*/
public final class ItemPickupHandler extends AbstractPacketHandler {
private static final Logger log = LoggerFactory.getLogger(ItemPickupHandler.class);
@Override
public final void handlePacket(final InPacket p, final Client c) {
public void handlePacket(final InPacket p, final Client c) {
p.readInt(); //Timestamp
p.readByte();
p.readPos(); //cpos
@@ -51,7 +53,8 @@ public final class ItemPickupHandler extends AbstractPacketHandler {
Point charPos = chr.getPosition();
Point obPos = ob.getPosition();
if (Math.abs(charPos.getX() - obPos.getX()) > 800 || Math.abs(charPos.getY() - obPos.getY()) > 600) {
FilePrinter.printError(FilePrinter.EXPLOITS + c.getPlayer().getName() + ".txt", c.getPlayer().getName() + " tried to pick up an item too far away. Mapid: " + chr.getMapId() + " Player pos: " + charPos + " Object pos: " + obPos);
log.warn("Chr {} tried to pick up an item too far away. Mapid: {}, player pos: {}, object pos: {}",
c.getPlayer().getName(), chr.getMapId(), charPos, obPos);
return;
}

View File

@@ -28,10 +28,11 @@ import client.status.MonsterStatus;
import client.status.MonsterStatusEffect;
import net.AbstractPacketHandler;
import net.packet.InPacket;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import server.life.Monster;
import server.life.MonsterInformationProvider;
import server.maps.MapleMap;
import tools.FilePrinter;
import tools.PacketCreator;
import java.util.Map;
@@ -41,8 +42,10 @@ import java.util.Map;
* @author Ronan
*/
public final class MobDamageMobHandler extends AbstractPacketHandler {
private static final Logger log = LoggerFactory.getLogger(MobDamageMobHandler.class);
@Override
public final void handlePacket(InPacket p, Client c) {
public void handlePacket(InPacket p, Client c) {
int from = p.readInt();
p.readInt();
int to = p.readInt();
@@ -59,8 +62,10 @@ public final class MobDamageMobHandler extends AbstractPacketHandler {
if (dmg > maxDmg) {
AutobanFactory.DAMAGE_HACK.alert(c.getPlayer(), "Possible packet editing hypnotize damage exploit."); // thanks Rien dev team
FilePrinter.printError(FilePrinter.EXPLOITS + c.getPlayer().getName() + ".txt", c.getPlayer().getName() + " had hypnotized " + MonsterInformationProvider.getInstance().getMobNameFromId(attacker.getId()) + " to attack " + MonsterInformationProvider.getInstance().getMobNameFromId(damaged.getId()) + " with damage " + dmg + " (max: " + maxDmg + ")");
String attackerName = MonsterInformationProvider.getInstance().getMobNameFromId(attacker.getId());
String damagedName = MonsterInformationProvider.getInstance().getMobNameFromId(damaged.getId());
log.warn("Chr {} had hypnotized {} to attack {} with damage {} (max: {})", c.getPlayer().getName(),
attackerName, damagedName, dmg, maxDmg);
dmg = maxDmg;
}

View File

@@ -28,13 +28,16 @@ import net.AbstractPacketHandler;
import net.packet.InPacket;
import net.server.Server;
import net.server.world.World;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import server.ChatLogger;
import tools.FilePrinter;
import tools.PacketCreator;
public final class MultiChatHandler extends AbstractPacketHandler {
private static final Logger log = LoggerFactory.getLogger(MultiChatHandler.class);
@Override
public final void handlePacket(InPacket p, Client c) {
public void handlePacket(InPacket p, Client c) {
Character player = c.getPlayer();
if (player.getAutobanManager().getLastSpam(7) + 200 > currentServerTime()) {
return;
@@ -49,7 +52,7 @@ public final class MultiChatHandler extends AbstractPacketHandler {
String chattext = p.readString();
if (chattext.length() > Byte.MAX_VALUE && !player.isGM()) {
AutobanFactory.PACKET_EDIT.alert(c.getPlayer(), c.getPlayer().getName() + " tried to packet edit chats.");
FilePrinter.printError(FilePrinter.EXPLOITS + c.getPlayer().getName() + ".txt", c.getPlayer().getName() + " tried to send text with length of " + chattext.length());
log.warn("Chr {} tried to send text with length of {}", c.getPlayer().getName(), chattext.length());
c.disconnect(true, false);
return;
}

View File

@@ -26,13 +26,17 @@ import client.autoban.AutobanFactory;
import constants.inventory.ItemConstants;
import net.AbstractPacketHandler;
import net.packet.InPacket;
import tools.FilePrinter;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* @author Matze
*/
public final class NPCShopHandler extends AbstractPacketHandler {
public final void handlePacket(InPacket p, Client c) {
private static final Logger log = LoggerFactory.getLogger(NPCShopHandler.class);
@Override
public void handlePacket(InPacket p, Client c) {
byte bmode = p.readByte();
if (bmode == 0) { // mode 0 = buy :)
short slot = p.readShort();// slot
@@ -40,7 +44,7 @@ public final class NPCShopHandler extends AbstractPacketHandler {
short quantity = p.readShort();
if (quantity < 1) {
AutobanFactory.PACKET_EDIT.alert(c.getPlayer(), c.getPlayer().getName() + " tried to packet edit a npc shop.");
FilePrinter.printError(FilePrinter.EXPLOITS + c.getPlayer().getName() + ".txt", c.getPlayer().getName() + " tried to buy quantity " + quantity + " of item id " + itemId);
log.warn("Chr {} tried to buy quantity {} of itemid {}", c.getPlayer().getName(), quantity, itemId);
c.disconnect(true, false);
return;
}

View File

@@ -27,16 +27,19 @@ import config.YamlConfig;
import constants.id.NpcId;
import net.AbstractPacketHandler;
import net.packet.InPacket;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import scripting.npc.NPCScriptManager;
import server.life.NPC;
import server.life.PlayerNPC;
import server.maps.MapObject;
import tools.FilePrinter;
import tools.PacketCreator;
public final class NPCTalkHandler extends AbstractPacketHandler {
private static final Logger log = LoggerFactory.getLogger(NPCTalkHandler.class);
@Override
public final void handlePacket(InPacket p, Client c) {
public void handlePacket(InPacket p, Client c) {
if (!c.getPlayer().isAlive()) {
c.sendPacket(PacketCreator.enableActions());
return;
@@ -73,7 +76,7 @@ public final class NPCTalkHandler extends AbstractPacketHandler {
boolean hasNpcScript = NPCScriptManager.getInstance().start(c, npc.getId(), oid, null);
if (!hasNpcScript) {
if (!npc.hasShop()) {
FilePrinter.printError(FilePrinter.NPC_UNCODED, "NPC " + npc.getName() + "(" + npc.getId() + ") is not coded.");
log.warn("NPC {} ({}) is not coded", npc.getName(), npc.getId());
return;
} else if (c.getPlayer().getShop() != null) {
c.sendPacket(PacketCreator.enableActions());

View File

@@ -25,14 +25,16 @@ import client.Client;
import client.autoban.AutobanFactory;
import net.AbstractPacketHandler;
import net.packet.InPacket;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import server.ChatLogger;
import tools.FilePrinter;
import tools.PacketCreator;
public final class PetChatHandler extends AbstractPacketHandler {
private static final Logger log = LoggerFactory.getLogger(PetChatHandler.class);
@Override
public final void handlePacket(InPacket p, Client c) {
public void handlePacket(InPacket p, Client c) {
int petId = p.readInt();
p.readInt();
p.readByte();
@@ -44,7 +46,7 @@ public final class PetChatHandler extends AbstractPacketHandler {
String text = p.readString();
if (text.length() > Byte.MAX_VALUE) {
AutobanFactory.PACKET_EDIT.alert(c.getPlayer(), c.getPlayer().getName() + " tried to packet edit with pets.");
FilePrinter.printError(FilePrinter.EXPLOITS + c.getPlayer().getName() + ".txt", c.getPlayer().getName() + " tried to send text with length of " + text.length());
log.warn("Chr {} tried to send text with length of {}", c.getPlayer().getName(), text.length());
c.disconnect(true, false);
return;
}

View File

@@ -41,7 +41,6 @@ import server.ItemInformationProvider;
import server.Trade;
import server.maps.*;
import server.maps.MiniGame.MiniGameType;
import tools.FilePrinter;
import tools.PacketCreator;
import java.awt.*;
@@ -601,7 +600,8 @@ public final class PlayerInteractionHandler extends AbstractPacketHandler {
int price = p.readInt();
if (perBundle <= 0 || perBundle * bundles > 2000 || bundles <= 0 || price <= 0 || price > Integer.MAX_VALUE) {
AutobanFactory.PACKET_EDIT.alert(chr, chr.getName() + " tried to packet edit with hired merchants.");
FilePrinter.printError(FilePrinter.EXPLOITS + chr.getName() + ".txt", chr.getName() + " might of possibly packet edited Hired Merchants\nperBundle: " + perBundle + "\nperBundle * bundles (This multiplied cannot be greater than 2000): " + perBundle * bundles + "\nbundles: " + bundles + "\nprice: " + price);
log.warn("Chr {} might possibly have packet edited Hired Merchants. perBundle: {}, perBundle * bundles (This multiplied cannot be greater than 2000): {}, bundles: {}, price: {}",
chr.getName(), perBundle, perBundle * bundles, bundles, price);
return;
}
@@ -672,7 +672,7 @@ public final class PlayerInteractionHandler extends AbstractPacketHandler {
int slot = p.readShort();
if (slot >= shop.getItems().size() || slot < 0) {
AutobanFactory.PACKET_EDIT.alert(chr, chr.getName() + " tried to packet edit with a player shop.");
FilePrinter.printError(FilePrinter.EXPLOITS + chr.getName() + ".txt", chr.getName() + " tried to remove item at slot " + slot);
log.warn("Chr {} tried to remove item at slot {}", chr.getName(), slot);
c.disconnect(true, false);
return;
}
@@ -738,7 +738,7 @@ public final class PlayerInteractionHandler extends AbstractPacketHandler {
short quantity = p.readShort();
if (quantity < 1) {
AutobanFactory.PACKET_EDIT.alert(chr, chr.getName() + " tried to packet edit with a hired merchant and or player shop.");
FilePrinter.printError(FilePrinter.EXPLOITS + chr.getName() + ".txt", chr.getName() + " tried to buy item " + itemid + " with quantity " + quantity);
log.warn("Chr {} tried to buy item {} with quantity {}", chr.getName(), itemid, quantity);
c.disconnect(true, false);
return;
}
@@ -767,7 +767,7 @@ public final class PlayerInteractionHandler extends AbstractPacketHandler {
int slot = p.readShort();
if (slot >= merchant.getItems().size() || slot < 0) {
AutobanFactory.PACKET_EDIT.alert(chr, chr.getName() + " tried to packet edit with a hired merchant.");
FilePrinter.printError(FilePrinter.EXPLOITS + chr.getName() + ".txt", chr.getName() + " tried to remove item at slot " + slot);
log.warn("Chr {} tried to remove item at slot {}", chr.getName(), slot);
c.disconnect(true, false);
return;
}

View File

@@ -42,10 +42,11 @@ import net.server.guild.GuildPackets;
import net.server.world.PartyCharacter;
import net.server.world.PartyOperation;
import net.server.world.World;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import scripting.event.EventInstanceManager;
import server.life.MobSkill;
import tools.DatabaseConnection;
import tools.FilePrinter;
import tools.PacketCreator;
import tools.Pair;
import tools.packets.WeddingPackets;
@@ -59,7 +60,7 @@ import java.util.Map.Entry;
import java.util.stream.Collectors;
public final class PlayerLoggedinHandler extends AbstractPacketHandler {
private static final Logger log = LoggerFactory.getLogger(PlayerLoggedinHandler.class);
private static final Set<Integer> attemptingLoginAccounts = new HashSet<>();
private boolean tryAcquireAccount(int accId) {
@@ -257,10 +258,10 @@ public final class PlayerLoggedinHandler extends AbstractPacketHandler {
c.sendPacket(PacketCreator.getFamilyInfo(familyEntry));
familyEntry.announceToSenior(PacketCreator.sendFamilyLoginNotice(player.getName(), true), true);
} else {
FilePrinter.printError(FilePrinter.FAMILY_ERROR, "Player " + player.getName() + "'s family doesn't have an entry for them. (" + f.getID() + ")");
log.error("Chr {}'s family doesn't have an entry for them. (familyId {})", player.getName(), f.getID());
}
} else {
FilePrinter.printError(FilePrinter.FAMILY_ERROR, "Player " + player.getName() + " has an invalid family ID. (" + player.getFamilyId() + ")");
log.error("Chr {} has an invalid family ID ({})", player.getName(), player.getFamilyId());
c.sendPacket(PacketCreator.getFamilyInfo(null));
}
} else {

View File

@@ -32,18 +32,20 @@ import client.inventory.WeaponType;
import client.status.MonsterStatusEffect;
import constants.skills.Outlaw;
import net.packet.InPacket;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import server.ItemInformationProvider;
import server.StatEffect;
import server.life.Monster;
import server.life.MonsterInformationProvider;
import server.maps.Summon;
import tools.FilePrinter;
import tools.PacketCreator;
import java.util.ArrayList;
import java.util.List;
public final class SummonDamageHandler extends AbstractDealDamageHandler {
private static final Logger log = LoggerFactory.getLogger(SummonDamageHandler.class);
public final class SummonAttackEntry {
@@ -108,8 +110,9 @@ public final class SummonDamageHandler extends AbstractDealDamageHandler {
if (target != null) {
if (damage > maxDmg) {
AutobanFactory.DAMAGE_HACK.alert(c.getPlayer(), "Possible packet editing summon damage exploit.");
FilePrinter.printError(FilePrinter.EXPLOITS + c.getPlayer().getName() + ".txt", c.getPlayer().getName() + " used a summon of skillid " + summon.getSkill() + " to attack " + MonsterInformationProvider.getInstance().getMobNameFromId(target.getId()) + " with damage " + damage + " (max: " + maxDmg + ")");
final String mobName = MonsterInformationProvider.getInstance().getMobNameFromId(target.getId());
log.info("Possible exploit - chr {} used a summon of skillId {} to attack {} with damage {} (max: {})",
c.getPlayer().getName(), summon.getSkill(), mobName, damage, maxDmg);
damage = maxDmg;
}

View File

@@ -35,12 +35,13 @@ import constants.inventory.ItemConstants;
import constants.skills.Aran;
import net.AbstractPacketHandler;
import net.packet.InPacket;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import server.StatEffect;
import server.life.LifeFactory.loseItem;
import server.life.*;
import server.maps.MapObject;
import server.maps.MapleMap;
import tools.FilePrinter;
import tools.PacketCreator;
import tools.Randomizer;
@@ -50,9 +51,10 @@ import java.util.Collections;
import java.util.List;
public final class TakeDamageHandler extends AbstractPacketHandler {
private static final Logger log = LoggerFactory.getLogger(TakeDamageHandler.class);
@Override
public final void handlePacket(InPacket p, Client c) {
public void handlePacket(InPacket p, Client c) {
List<Character> banishPlayers = new ArrayList<>();
Character chr = c.getPlayer();
@@ -135,10 +137,7 @@ public final class TakeDamageHandler extends AbstractPacketHandler {
}
} catch (ClassCastException e) {
//this happens due to mob on last map damaging player just before changing maps
e.printStackTrace();
FilePrinter.printError(FilePrinter.EXCEPTION_CAUGHT, "Attacker is not a mob-type, rather is a " + map.getMapObject(oid).getClass().getName() + " entity.");
log.warn("Attack is not a mob-type, rather is a {} entity", map.getMapObject(oid).getClass().getSimpleName(), e);
return;
}

View File

@@ -26,8 +26,9 @@ import client.Client;
import client.autoban.AutobanFactory;
import net.AbstractPacketHandler;
import net.packet.InPacket;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import server.ChatLogger;
import tools.FilePrinter;
import tools.PacketCreator;
import tools.PacketCreator.WhisperFlag;
@@ -35,6 +36,7 @@ import tools.PacketCreator.WhisperFlag;
* @author Chronos
*/
public final class WhisperHandler extends AbstractPacketHandler {
private static final Logger log = LoggerFactory.getLogger(WhisperHandler.class);
// result types, not sure if there are proper names for these
public static final byte RT_ITC = 0x00;
@@ -65,7 +67,7 @@ public final class WhisperHandler extends AbstractPacketHandler {
handleFind(c.getPlayer(), target, WhisperFlag.LOCATION_FRIEND);
break;
default:
FilePrinter.printError(FilePrinter.PACKET_HANDLER + c.getPlayer().getName() + ".txt", "Unknown request " + request + " triggered by " + c.getPlayer().getName());
log.warn("Unknown request {} triggered by {}", request, c.getPlayer().getName());
break;
}
}
@@ -93,7 +95,7 @@ public final class WhisperHandler extends AbstractPacketHandler {
if (message.length() > Byte.MAX_VALUE) {
AutobanFactory.PACKET_EDIT.alert(user, user.getName() + " tried to packet edit with whispers.");
FilePrinter.printError(FilePrinter.EXPLOITS + user.getName() + ".txt", user.getName() + " tried to send text with length of " + message.length());
log.warn("Chr {} tried to send text with length of {}", user.getName(), message.length());
user.getClient().disconnect(true, false);
return;
}

View File

@@ -28,7 +28,8 @@ import client.creator.novice.NoblesseCreator;
import constants.id.ItemId;
import net.AbstractPacketHandler;
import net.packet.InPacket;
import tools.FilePrinter;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import tools.PacketCreator;
import java.util.Arrays;
@@ -36,6 +37,7 @@ import java.util.HashSet;
import java.util.Set;
public final class CreateCharHandler extends AbstractPacketHandler {
private static final Logger log = LoggerFactory.getLogger(CreateCharHandler.class);
private final static Set<Integer> IDs = new HashSet<>(Arrays.asList(
ItemId.SWORD, ItemId.HAND_AXE, ItemId.WOODEN_CLUB, ItemId.BASIC_POLEARM,// weapons
@@ -77,7 +79,7 @@ public final class CreateCharHandler extends AbstractPacketHandler {
int[] items = new int[]{weapon, top, bottom, shoes, hair, face};
for (int item : items) {
if (!isLegal(item)) {
FilePrinter.printError(FilePrinter.EXPLOITS + name + ".txt", "Owner from account '" + c.getAccountName() + "' tried to packet edit in char creation.");
log.warn("Owner from account {} tried to packet edit in chr creation", c.getAccountName());
c.disconnect(true, false);
return;
}

View File

@@ -40,6 +40,8 @@ import net.server.guild.Guild;
import net.server.guild.GuildPackets;
import net.server.world.Party;
import net.server.world.PartyCharacter;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import provider.Data;
import provider.DataProviderFactory;
import provider.wz.WZFiles;
@@ -61,7 +63,6 @@ import server.partyquest.AriantColiseum;
import server.partyquest.MonsterCarnival;
import server.partyquest.Pyramid;
import server.partyquest.Pyramid.PyramidMode;
import tools.FilePrinter;
import tools.PacketCreator;
import tools.packets.WeddingPackets;
@@ -76,6 +77,7 @@ import static java.util.concurrent.TimeUnit.MINUTES;
* @author Matze
*/
public class NPCConversationManager extends AbstractPlayerInteraction {
private static final Logger log = LoggerFactory.getLogger(NPCConversationManager.class);
private final int npc;
private int npcOid;
@@ -380,7 +382,7 @@ public class NPCConversationManager extends AbstractPlayerInteraction {
if (shop != null) {
shop.sendShop(c);
} else { // check for missing shopids thanks to resinate
FilePrinter.printError(FilePrinter.NPC_UNCODED, "Shop ID: " + id + " is missing from database.");
log.warn("Shop ID: {} is missing from database.", id);
ShopFactory.getInstance().getShop(11000).sendShop(c);
}
}

View File

@@ -28,7 +28,6 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import scripting.AbstractScriptManager;
import server.quest.Quest;
import tools.FilePrinter;
import javax.script.Invocable;
import javax.script.ScriptEngine;
@@ -75,7 +74,7 @@ public class QuestScriptManager extends AbstractScriptManager {
ScriptEngine engine = getQuestScriptEngine(c, questid);
if (engine == null) {
FilePrinter.printError(FilePrinter.QUEST_UNCODED, "START Quest " + questid + " is uncoded.");
log.warn("START Quest {} is uncoded.", questid);
qm.dispose();
return;
}
@@ -127,7 +126,7 @@ public class QuestScriptManager extends AbstractScriptManager {
ScriptEngine engine = getQuestScriptEngine(c, questid);
if (engine == null) {
FilePrinter.printError(FilePrinter.QUEST_UNCODED, "END Quest " + questid + " is uncoded.");
log.warn("END Quest {} is uncoded.", questid);
qm.dispose();
return;
}

View File

@@ -33,6 +33,8 @@ import constants.skills.Assassin;
import constants.skills.Gunslinger;
import constants.skills.NightWalker;
import net.server.Server;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import provider.*;
import provider.wz.WZFiles;
import server.MakerItemFactory.MakerItemCreateEntry;
@@ -51,6 +53,7 @@ import java.util.Map.Entry;
* @author Matze
*/
public class ItemInformationProvider {
private static final Logger log = LoggerFactory.getLogger(ItemInformationProvider.class);
private final static ItemInformationProvider instance = new ItemInformationProvider();
public static ItemInformationProvider getInstance() {
@@ -1799,7 +1802,7 @@ public class ItemInformationProvider {
String itemName = ItemInformationProvider.getInstance().getName(equip.getItemId());
Server.getInstance().broadcastGMMessage(chr.getWorld(), PacketCreator.sendYellowTip("[Warning]: " + chr.getName() + " tried to equip " + itemName + " into slot " + dst + "."));
AutobanFactory.PACKET_EDIT.alert(chr, chr.getName() + " tried to forcibly equip an item.");
FilePrinter.printError(FilePrinter.EXPLOITS + chr.getName() + ".txt", chr.getName() + " tried to equip " + itemName + " into " + dst + " slot.");
log.warn("Chr {} tried to equip {} into slot {}", chr.getName(), itemName, dst);
return false;
}

View File

@@ -53,6 +53,8 @@ import net.server.services.task.channel.OverallService;
import net.server.services.type.ChannelServices;
import net.server.world.Party;
import net.server.world.World;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import scripting.event.EventInstanceManager;
import scripting.map.MapScriptManager;
import server.ItemInformationProvider;
@@ -64,7 +66,6 @@ import server.life.LifeFactory.selfDestruction;
import server.partyquest.CarnivalFactory;
import server.partyquest.CarnivalFactory.MCSkill;
import server.partyquest.GuardianSpawnPoint;
import tools.FilePrinter;
import tools.PacketCreator;
import tools.Pair;
import tools.Randomizer;
@@ -83,7 +84,7 @@ import static java.util.concurrent.TimeUnit.MINUTES;
import static java.util.concurrent.TimeUnit.SECONDS;
public class MapleMap {
private static final Logger log = LoggerFactory.getLogger(MapleMap.class);
private static final List<MapObjectType> rangedMapobjectTypes = Arrays.asList(MapObjectType.SHOP, MapObjectType.ITEM, MapObjectType.NPC, MapObjectType.MONSTER, MapObjectType.DOOR, MapObjectType.SUMMON, MapObjectType.REACTOR);
private static final Map<Integer, Pair<Integer, Integer>> dropBoundsCache = new HashMap<>(100);
@@ -1985,7 +1986,7 @@ public class MapleMap {
} else if (monster.getId() == MobId.GIANT_SNOWMAN_LV5_EASY || monster.getId() == MobId.GIANT_SNOWMAN_LV5_MEDIUM || monster.getId() == MobId.GIANT_SNOWMAN_LV5_HARD) {
monsterItemDrop(monster, monster.getDropPeriodTime());
} else {
FilePrinter.printError(FilePrinter.UNHANDLED_EVENT, "UNCODED TIMED MOB DETECTED: " + monster.getId());
log.error("UNCODED TIMED MOB DETECTED: {}", monster.getId());
}
}
@@ -2059,7 +2060,7 @@ public class MapleMap {
public Portal getDoorPortal(int doorid) {
Portal doorPortal = portals.get(0x80 + doorid);
if (doorPortal == null) {
FilePrinter.printError(FilePrinter.EXCEPTION, "[Door] " + mapName + "(" + mapid + ") does not contain door portalid " + doorid);
log.warn("[Door] {} ({}) does not contain door portalid {}", mapName, mapid, doorid);
return portals.get(0x80);
}

View File

@@ -26,7 +26,8 @@ import client.Character;
import net.server.Server;
import net.server.world.Party;
import net.server.world.PartyCharacter;
import tools.FilePrinter;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.ArrayList;
import java.util.List;
@@ -35,6 +36,8 @@ import java.util.List;
* @author kevintjuh93
*/
public class PartyQuest {
private static final Logger log = LoggerFactory.getLogger(PartyQuest.class);
int channel, world;
Party party;
List<Character> participants = new ArrayList<>();
@@ -108,7 +111,7 @@ public class PartyQuest {
} else if (PQ.equals("LudiPQLast")) {
return 800 * level / 5;
}
FilePrinter.printError(FilePrinter.NPC, "Unhandled PartyQuest: " + PQ);
log.warn("Unhandled PartyQuest: {}", PQ);
return 0;
}
}

View File

@@ -1,103 +0,0 @@
package tools;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
public class FilePrinter {
public static final String
AUTOBAN_WARNING = "game/AutoBanWarning.txt", // log naming version by Vcoc
AUTOBAN_DC = "game/AutoBanDC.txt",
ACCOUNT_STUCK = "players/AccountStuck.txt",
COMMAND_GM = "reports/Gm.txt",
COMMAND_BUG = "reports/Bug.txt",
LOG_TRADE = "interactions/Trades.txt",
LOG_EXPEDITION = "interactions/Expeditions.txt",
LOG_LEAF = "interactions/MapleLeaves.txt",
LOG_GACHAPON = "interactions/Gachapon.txt",
LOG_CHAT = "interactions/ChatLog.txt",
QUEST_RESTORE_ITEM = "game/QuestItemRestore.txt",
EXCEPTION_CAUGHT = "game/ExceptionCaught.txt",
CLIENT_START = "game/ClientStartError.txt",
MAPLE_MAP = "game/MapleMap.txt",
ERROR38 = "game/Error38.txt",
PACKET_LOG = "game/Log.txt",
CASHITEM_BOUGHT = "interactions/CashLog.txt",
EXCEPTION = "game/Exceptions.txt",
LOGIN_EXCEPTION = "game/LoginExceptions.txt",
TRADE_EXCEPTION = "game/TradeExceptions.txt",
SQL_EXCEPTION = "game/SqlExceptions.txt",
PACKET_HANDLER = "game/packethandler/",
PORTAL = "game/portals/",
PORTAL_STUCK = "game/portalblocks/",
NPC = "game/npcs/",
INVOCABLE = "game/invocable/",
REACTOR = "game/reactors/",
QUEST = "game/quests/",
ITEM = "game/items/",
MOB_MOVEMENT = "game/MobMovement.txt",
MAP_SCRIPT = "game/mapscript/",
DIRECTION = "game/directions/",
GUILD_CHAR_ERROR = "guilds/GuildCharError.txt",
SAVE_CHAR = "players/SaveToDB.txt",
INSERT_CHAR = "players/InsertCharacter.txt",
LOAD_CHAR = "players/LoadCharFromDB.txt",
CREATED_CHAR = "players/createdchars/",
DELETED_CHAR = "players/deletedchars/",
UNHANDLED_EVENT = "game/DoesNotExist.txt",
SESSION = "players/Sessions.txt",
DCS = "game/disconnections/",
EXPLOITS = "game/exploits/",
STORAGE = "game/storage/",
PACKET_LOGS = "game/packetlogs/",
PACKET_STREAM = "game/packetstream/",
FREDRICK = "game/npcs/fredrick/",
NPC_UNCODED = "game/npcs/UncodedNPCs.txt",
QUEST_UNCODED = "game/quests/UncodedQuests.txt",
AUTOSAVING_CHARACTER = "players/SaveCharAuto.txt",
SAVING_CHARACTER = "players/SaveChar.txt",
CHANGE_CHARACTER_NAME = "players/NameChange.txt",
WORLD_TRANSFER = "players/WorldTransfer.txt",
FAMILY_ERROR = "players/FamilyErrors.txt",
USED_COMMANDS = "commands/UsedCommands.txt",
DEADLOCK_ERROR = "deadlocks/Deadlocks.txt",
DEADLOCK_STACK = "deadlocks/Path.txt",
DEADLOCK_LOCKS = "deadlocks/Locks.txt",
DEADLOCK_STATE = "deadlocks/State.txt",
DISPOSED_LOCKS = "deadlocks/Disposed.txt";
private static final SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); //for file system purposes, it's nice to use yyyy-MM-dd
private static final String FILE_PATH = "logs/" + sdf.format(Calendar.getInstance().getTime()) + "/"; // + sdf.format(Calendar.getInstance().getTime()) + "/"
private static final String ERROR = "error/";
public static void printError(final String name, final String s) {
System.out.println("Error thrown: " + name);
System.out.println(s);
System.out.println();
FileOutputStream out = null;
final String file = FILE_PATH + ERROR + name;
try {
File outputFile = new File(file);
if (outputFile.getParentFile() != null) {
outputFile.getParentFile().mkdirs();
}
out = new FileOutputStream(file, true);
out.write(s.getBytes());
//out.write("\r\n---------------------------------\r\n".getBytes());
out.write("\r\n".getBytes());
} catch (IOException ess) {
ess.printStackTrace();
} finally {
try {
if (out != null) {
out.close();
}
} catch (IOException ignore) {
ignore.printStackTrace();
}
}
}
}