Remove remaining uses of MaplePacketLittleEndianWriter

This commit is contained in:
P0nk
2021-08-22 21:03:51 +02:00
parent 8f6860d7d7
commit b3d422a6c5
7 changed files with 78 additions and 94 deletions

View File

@@ -1221,7 +1221,7 @@ public class MapleCharacter extends AbstractMapleCharacterObject {
}
public void broadcastStance() {
map.broadcastMessage(this, PacketCreator.movePlayer(id, this.getIdleMovement(), getIdleMovementDataLength()), false);
map.broadcastMessage(this, PacketCreator.movePlayer(id, this.getIdleMovement(), AbstractAnimatedMapleMapObject.IDLE_MOVEMENT_PACKET_LENGTH), false);
}
public MapleMap getWarpMap(int map) {

View File

@@ -28,12 +28,13 @@ import client.MapleClient;
import client.command.Command;
import net.MaplePacketHandler;
import net.PacketProcessor;
import net.packet.ByteBufOutPacket;
import net.packet.OutPacket;
import tools.FilePrinter;
import tools.HexTool;
import tools.data.input.ByteArrayByteStream;
import tools.data.input.GenericSeekableLittleEndianAccessor;
import tools.data.input.SeekableLittleEndianAccessor;
import tools.data.output.MaplePacketLittleEndianWriter;
import java.io.FileReader;
import java.io.IOException;
@@ -61,9 +62,9 @@ public class PeCommand extends Command {
return;
}
MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter();
mplew.write(HexTool.getByteArrayFromHexString(packet));
SeekableLittleEndianAccessor slea = new GenericSeekableLittleEndianAccessor(new ByteArrayByteStream(mplew.getPacket()));
OutPacket p = new ByteBufOutPacket();
p.writeBytes(HexTool.getByteArrayFromHexString(packet));
SeekableLittleEndianAccessor slea = new GenericSeekableLittleEndianAccessor(new ByteArrayByteStream(p.getBytes()));
short packetId = slea.readShort();
final MaplePacketHandler packetHandler = PacketProcessor.getProcessor(0, c.getChannel()).getHandler(packetId);
if (packetHandler != null && packetHandler.validateState(c)) {

View File

@@ -24,9 +24,6 @@ package net.server.channel.handlers;
import client.MapleCharacter;
import client.MapleClient;
import net.AbstractMaplePacketHandler;
import net.opcodes.SendOpcode;
import net.packet.OutPacket;
import net.packet.Packet;
import net.server.Server;
import net.server.guild.GuildPackets;
import net.server.guild.MapleAlliance;
@@ -34,7 +31,6 @@ import net.server.guild.MapleGuild;
import net.server.guild.MapleGuildCharacter;
import tools.PacketCreator;
import tools.data.input.SeekableLittleEndianAccessor;
import tools.data.output.MaplePacketLittleEndianWriter;
/**
*
@@ -78,7 +74,7 @@ public final class AllianceOperationHandler extends AbstractMaplePacketHandler {
// "alliance" is only null at case 0x04
switch (b) {
case 0x01:
Server.getInstance().allianceMessage(alliance.getId(), sendShowInfo(chr.getGuild().getAllianceId(), chr.getId()), -1, -1);
Server.getInstance().allianceMessage(alliance.getId(), GuildPackets.sendShowInfo(chr.getGuild().getAllianceId(), chr.getId()), -1, -1);
break;
case 0x02: { // Leave Alliance
if (chr.getGuild().getAllianceId() == 0 || chr.getGuildId() < 1 || chr.getGuildRank() != 1) {
@@ -228,53 +224,4 @@ public final class AllianceOperationHandler extends AbstractMaplePacketHandler {
alliance.dropMessage("'" + chr.getName() + "' has been reassigned to '" + alliance.getRankTitle(newRank) + "' in this Alliance.");
}
private static Packet sendShowInfo(int allianceid, int playerid) {
OutPacket p = OutPacket.create(SendOpcode.ALLIANCE_OPERATION);
p.writeByte(0x02);
p.writeInt(allianceid);
p.writeInt(playerid);
return p;
}
private static byte[] sendInvitation(int allianceid, int playerid, final String guildname) {
MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter();
mplew.writeShort(SendOpcode.ALLIANCE_OPERATION.getValue());
mplew.write(0x05);
mplew.writeInt(allianceid);
mplew.writeInt(playerid);
mplew.writeMapleAsciiString(guildname);
return mplew.getPacket();
}
private static byte[] sendChangeGuild(int allianceid, int playerid, int guildid, int option) {
MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter();
mplew.writeShort(SendOpcode.ALLIANCE_OPERATION.getValue());
mplew.write(0x07);
mplew.writeInt(allianceid);
mplew.writeInt(guildid);
mplew.writeInt(playerid);
mplew.write(option);
return mplew.getPacket();
}
private static byte[] sendChangeLeader(int allianceid, int playerid, int victim) {
MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter();
mplew.writeShort(SendOpcode.ALLIANCE_OPERATION.getValue());
mplew.write(0x08);
mplew.writeInt(allianceid);
mplew.writeInt(playerid);
mplew.writeInt(victim);
return mplew.getPacket();
}
private static byte[] sendChangeRank(int allianceid, int playerid, int int1, byte byte1) {
MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter();
mplew.writeShort(SendOpcode.ALLIANCE_OPERATION.getValue());
mplew.write(0x09);
mplew.writeInt(allianceid);
mplew.writeInt(playerid);
mplew.writeInt(int1);
mplew.writeInt(byte1);
return mplew.getPacket();
}
}

View File

@@ -540,4 +540,51 @@ public class GuildPackets {
p.writeByte(guild.getLogoColor());
return p;
}
public static Packet sendShowInfo(int allianceid, int playerid) {
OutPacket p = OutPacket.create(SendOpcode.ALLIANCE_OPERATION);
p.writeByte(0x02);
p.writeInt(allianceid);
p.writeInt(playerid);
return p;
}
public static Packet sendInvitation(int allianceid, int playerid, final String guildname) {
OutPacket p = OutPacket.create(SendOpcode.ALLIANCE_OPERATION);
p.writeByte(0x05);
p.writeInt(allianceid);
p.writeInt(playerid);
p.writeString(guildname);
return p;
}
public static Packet sendChangeGuild(int allianceid, int playerid, int guildid, int option) {
OutPacket p = OutPacket.create(SendOpcode.ALLIANCE_OPERATION);
p.writeByte(0x07);
p.writeInt(allianceid);
p.writeInt(guildid);
p.writeInt(playerid);
p.writeByte(option);
return p;
}
public static Packet sendChangeLeader(int allianceid, int playerid, int victim) {
OutPacket p = OutPacket.create(SendOpcode.ALLIANCE_OPERATION);
p.writeByte(0x08);
p.writeInt(allianceid);
p.writeInt(playerid);
p.writeInt(victim);
return p;
}
public static Packet sendChangeRank(int allianceid, int playerid, int int1, byte byte1) {
OutPacket p = OutPacket.create(SendOpcode.ALLIANCE_OPERATION);
p.writeByte(0x09);
p.writeInt(allianceid);
p.writeInt(playerid);
p.writeInt(int1);
p.writeInt(byte1);
return p;
}
}

View File

@@ -45,6 +45,7 @@ import server.MapleStatEffect;
import server.TimerManager;
import server.life.MapleLifeFactory.BanishInfo;
import server.loot.MapleLootManager;
import server.maps.AbstractAnimatedMapleMapObject;
import server.maps.MapleMap;
import server.maps.MapleMapObjectType;
import server.maps.MapleSummon;
@@ -1324,7 +1325,7 @@ public class MapleMonster extends AbstractLoadedMapleLife {
aggroRemoveController();
setPosition(newPoint);
map.broadcastMessage(PacketCreator.moveMonster(this.getObjectId(), false, -1, 0, 0, 0, this.getPosition(), this.getIdleMovement(), getIdleMovementDataLength()));
map.broadcastMessage(PacketCreator.moveMonster(this.getObjectId(), false, -1, 0, 0, 0, this.getPosition(), this.getIdleMovement(), AbstractAnimatedMapleMapObject.IDLE_MOVEMENT_PACKET_LENGTH));
map.moveMonster(this, this.getPosition());
aggroUpdateController();

View File

@@ -23,29 +23,17 @@ package server.maps;
import java.util.Arrays;
import net.packet.ByteBufOutPacket;
import net.packet.OutPacket;
import net.packet.Packet;
import tools.data.input.ByteArrayByteStream;
import tools.data.input.GenericSeekableLittleEndianAccessor;
import tools.data.input.SeekableLittleEndianAccessor;
import tools.data.output.MaplePacketLittleEndianWriter;
public abstract class AbstractAnimatedMapleMapObject extends AbstractMapleMapObject implements AnimatedMapleMapObject {
static {
MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter((int) getIdleMovementDataLength());
mplew.write(1); //movement command count
mplew.write(0);
mplew.writeShort(-1); //x
mplew.writeShort(-1); //y
mplew.writeShort(0); //xwobble
mplew.writeShort(0); //ywobble
mplew.writeShort(0); //fh
mplew.write(-1); //stance
mplew.writeShort(0); //duration
idleMovementPacketData = mplew.getPacket();
}
private static final byte[] idleMovementPacketData;
public static final int IDLE_MOVEMENT_PACKET_LENGTH = 15;
private static final Packet IDLE_MOVEMENT_PACKET = createIdleMovementPacket();
private int stance;
@Override
@@ -64,7 +52,8 @@ public abstract class AbstractAnimatedMapleMapObject extends AbstractMapleMapObj
}
public SeekableLittleEndianAccessor getIdleMovement() {
byte[] movementData = Arrays.copyOf(idleMovementPacketData, idleMovementPacketData.length);
final byte[] idleMovementBytes = IDLE_MOVEMENT_PACKET.getBytes();
byte[] movementData = Arrays.copyOf(idleMovementBytes, idleMovementBytes.length);
//seems wasteful to create a whole packet writer when only a few values are changed
int x = getPosition().x;
int y = getPosition().y;
@@ -75,8 +64,18 @@ public abstract class AbstractAnimatedMapleMapObject extends AbstractMapleMapObj
movementData[12] = (byte) (getStance() & 0xFF);
return new GenericSeekableLittleEndianAccessor(new ByteArrayByteStream(movementData));
}
public static long getIdleMovementDataLength() {
return 15;
}
private static Packet createIdleMovementPacket() {
OutPacket p = new ByteBufOutPacket();
p.writeByte(1); //movement command count
p.writeByte(0);
p.writeShort(-1); //x
p.writeShort(-1); //y
p.writeShort(0); //xwobble
p.writeShort(0); //ywobble
p.writeShort(0); //fh
p.writeByte(-1); //stance
p.writeShort(0); //duration
return p;
}
}

View File

@@ -28,14 +28,12 @@ import client.inventory.MapleInventory;
import client.inventory.MapleInventoryType;
import client.inventory.manipulator.MapleInventoryManipulator;
import client.inventory.manipulator.MapleKarmaManipulator;
import net.opcodes.SendOpcode;
import net.packet.Packet;
import net.server.audit.locks.MonitoredLockType;
import net.server.audit.locks.factory.MonitoredReentrantLockFactory;
import server.MapleTrade;
import tools.PacketCreator;
import tools.Pair;
import tools.data.output.MaplePacketLittleEndianWriter;
import java.util.*;
import java.util.concurrent.atomic.AtomicBoolean;
@@ -377,15 +375,6 @@ public class MaplePlayerShop extends AbstractMapleMapObject {
}
}
public static byte[] shopErrorMessage(int error, int type) {
MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter();
mplew.writeShort(SendOpcode.PLAYER_INTERACTION.getValue());
mplew.write(0x0A);
mplew.write(type);
mplew.write(error);
return mplew.getPacket();
}
public void broadcast(Packet packet) {
MapleClient client = owner.getClient();
if (client != null) {