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

@@ -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) {