All packet creating methods now create Packet instead of byte[]

This commit got way too big...
- Remove deprecated methods for sending packets
- Favor OutPacket & Packet over MaplePacketLittleEndianWriter, LittleEndianWriter, and byte array
- Split up some packet creating methods into separate classes
This commit is contained in:
P0nk
2021-08-21 01:36:51 +02:00
parent b5cd6887ae
commit 8f6860d7d7
231 changed files with 6403 additions and 6927 deletions

View File

@@ -26,6 +26,7 @@ import client.status.MonsterStatus;
import client.status.MonsterStatusEffect;
import config.YamlConfig;
import constants.skills.*;
import net.packet.Packet;
import net.server.audit.LockCollector;
import net.server.audit.locks.MonitoredLockType;
import net.server.audit.locks.MonitoredReentrantLock;
@@ -365,16 +366,16 @@ public class MapleMonster extends AbstractLoadedMapleLife {
from.getMap().broadcastBossHpMessage(this, this.hashCode(), makeBossHPBarPacket(), getPosition());
} else if (!isBoss()) {
int remainingHP = (int) Math.max(1, hp.get() * 100f / getMaxHp());
byte[] packet = PacketCreator.showMonsterHP(getObjectId(), remainingHP);
Packet packet = PacketCreator.showMonsterHP(getObjectId(), remainingHP);
if (from.getParty() != null) {
for (MaplePartyCharacter mpc : from.getParty().getMembers()) {
MapleCharacter member = from.getMap().getCharacterById(mpc.getId()); // god bless
if (member != null) {
member.announce(packet.clone()); // clone it just in case of crypto
member.sendPacket(packet);
}
}
} else {
from.announce(packet);
from.sendPacket(packet);
}
}
}
@@ -1005,7 +1006,7 @@ public class MapleMonster extends AbstractLoadedMapleLife {
this.controllerHasPuppet = controllerHasPuppet;
}
public byte[] makeBossHPBarPacket() {
public Packet makeBossHPBarPacket() {
return PacketCreator.showBossHP(getId(), getHp(), getMaxHp(), getTagColor(), getTagBgColor());
}
@@ -1019,9 +1020,9 @@ public class MapleMonster extends AbstractLoadedMapleLife {
return;
}
if (fake) {
client.announce(PacketCreator.spawnFakeMonster(this, 0));
client.sendPacket(PacketCreator.spawnFakeMonster(this, 0));
} else {
client.announce(PacketCreator.spawnMonster(this, false));
client.sendPacket(PacketCreator.spawnMonster(this, false));
}
if (hasBossHPBar()) {
@@ -1031,8 +1032,8 @@ public class MapleMonster extends AbstractLoadedMapleLife {
@Override
public void sendDestroyData(MapleClient client) {
client.announce(PacketCreator.killMonster(getObjectId(), false));
client.announce(PacketCreator.killMonster(getObjectId(), true));
client.sendPacket(PacketCreator.killMonster(getObjectId(), false));
client.sendPacket(PacketCreator.killMonster(getObjectId(), true));
}
@Override
@@ -1086,18 +1087,18 @@ public class MapleMonster extends AbstractLoadedMapleLife {
}
}
private void broadcastMonsterStatusMessage(byte[] packet) {
private void broadcastMonsterStatusMessage(Packet packet) {
map.broadcastMessage(packet, getPosition());
MapleCharacter chrController = getActiveController();
if (chrController != null && !chrController.isMapObjectVisible(MapleMonster.this)) {
chrController.announce(packet);
chrController.sendPacket(packet);
}
}
private int broadcastStatusEffect(final MonsterStatusEffect status) {
int animationTime = status.getSkill().getAnimationTime();
byte[] packet = PacketCreator.applyMonsterStatus(getObjectId(), status, null);
Packet packet = PacketCreator.applyMonsterStatus(getObjectId(), status, null);
broadcastMonsterStatusMessage(packet);
return animationTime;
@@ -1172,7 +1173,7 @@ public class MapleMonster extends AbstractLoadedMapleLife {
final Runnable cancelTask = () -> {
if (isAlive()) {
byte[] packet = PacketCreator.cancelMonsterStatus(getObjectId(), status.getStati());
Packet packet = PacketCreator.cancelMonsterStatus(getObjectId(), status.getStati());
broadcastMonsterStatusMessage(packet);
}
@@ -1284,7 +1285,7 @@ public class MapleMonster extends AbstractLoadedMapleLife {
public void applyMonsterBuff(final Map<MonsterStatus, Integer> stats, final int x, int skillId, long duration, MobSkill skill, final List<Integer> reflection) {
final Runnable cancelTask = () -> {
if (isAlive()) {
byte[] packet = PacketCreator.cancelMonsterStatus(getObjectId(), stats);
Packet packet = PacketCreator.cancelMonsterStatus(getObjectId(), stats);
broadcastMonsterStatusMessage(packet);
statiLock.lock();
@@ -1298,7 +1299,7 @@ public class MapleMonster extends AbstractLoadedMapleLife {
}
};
final MonsterStatusEffect effect = new MonsterStatusEffect(stats, null, skill, true);
byte[] packet = PacketCreator.applyMonsterStatus(getObjectId(), effect, reflection);
Packet packet = PacketCreator.applyMonsterStatus(getObjectId(), effect, reflection);
broadcastMonsterStatusMessage(packet);
statiLock.lock();
@@ -1339,7 +1340,7 @@ public class MapleMonster extends AbstractLoadedMapleLife {
}
if (oldEffect != null) {
byte[] packet = PacketCreator.cancelMonsterStatus(getObjectId(), oldEffect.getStati());
Packet packet = PacketCreator.cancelMonsterStatus(getObjectId(), oldEffect.getStati());
broadcastMonsterStatusMessage(packet);
}
}
@@ -1884,7 +1885,7 @@ public class MapleMonster extends AbstractLoadedMapleLife {
}
if (chrController != null) { // this can/should only happen when a hidden gm attacks the monster
if (!this.isFake()) chrController.announce(PacketCreator.stopControllingMonster(this.getObjectId()));
if (!this.isFake()) chrController.sendPacket(PacketCreator.stopControllingMonster(this.getObjectId()));
chrController.stopControllingMonster(this);
}
@@ -2088,7 +2089,7 @@ public class MapleMonster extends AbstractLoadedMapleLife {
Maybe Nexon intended to interchange controllers at every attack...
else if (chrController != null) {
chrController.announce(PacketCreator.stopControllingMonster(this.getObjectId()));
chrController.sendPacket(PacketCreator.stopControllingMonster(this.getObjectId()));
aggroMonsterControl(chrController.getClient(), this, true);
}
*/
@@ -2099,7 +2100,7 @@ public class MapleMonster extends AbstractLoadedMapleLife {
}
private static void aggroMonsterControl(MapleClient c, MapleMonster mob, boolean immediateAggro) {
c.announce(PacketCreator.controlMonster(mob, false, immediateAggro));
c.sendPacket(PacketCreator.controlMonster(mob, false, immediateAggro));
}
private void aggroRefreshPuppetVisibility(MapleCharacter chrController, MapleSummon puppet) {
@@ -2113,15 +2114,15 @@ public class MapleMonster extends AbstractLoadedMapleLife {
}
for (MapleMonster mob : puppetControlled) {
chrController.announce(PacketCreator.stopControllingMonster(mob.getObjectId()));
chrController.sendPacket(PacketCreator.stopControllingMonster(mob.getObjectId()));
}
chrController.announce(PacketCreator.removeSummon(puppet, false));
chrController.sendPacket(PacketCreator.removeSummon(puppet, false));
MapleClient c = chrController.getClient();
for (MapleMonster mob : puppetControlled) { // thanks BHB for noticing puppets disrupting mobstatuses for bowmans
aggroMonsterControl(c, mob, mob.isControllerKnowsAboutAggro());
}
chrController.announce(PacketCreator.spawnSummon(puppet, false));
chrController.sendPacket(PacketCreator.spawnSummon(puppet, false));
}
public void aggroUpdatePuppetVisibility() {
@@ -2151,7 +2152,7 @@ public class MapleMonster extends AbstractLoadedMapleLife {
if (controllerHasPuppet) {
controllerHasPuppet = false;
chrController.announce(PacketCreator.stopControllingMonster(MapleMonster.this.getObjectId()));
chrController.sendPacket(PacketCreator.stopControllingMonster(MapleMonster.this.getObjectId()));
aggroMonsterControl(chrController.getClient(), MapleMonster.this, MapleMonster.this.isControllerHasAggro());
}
} finally {

View File

@@ -27,7 +27,7 @@ import server.maps.MapleMapObjectType;
import tools.PacketCreator;
public class MapleNPC extends AbstractLoadedMapleLife {
private MapleNPCStats stats;
private final MapleNPCStats stats;
public MapleNPC(int id, MapleNPCStats stats) {
super(id);
@@ -44,14 +44,14 @@ public class MapleNPC extends AbstractLoadedMapleLife {
@Override
public void sendSpawnData(MapleClient client) {
client.announce(PacketCreator.spawnNPC(this));
client.announce(PacketCreator.spawnNPCRequestController(this, true));
client.sendPacket(PacketCreator.spawnNPC(this));
client.sendPacket(PacketCreator.spawnNPCRequestController(this, true));
}
@Override
public void sendDestroyData(MapleClient client) {
client.announce(PacketCreator.removeNPCController(getObjectId()));
client.announce(PacketCreator.removeNPC(getObjectId()));
client.sendPacket(PacketCreator.removeNPCController(getObjectId()));
client.sendPacket(PacketCreator.removeNPC(getObjectId()));
}
@Override

View File

@@ -200,14 +200,14 @@ public class MaplePlayerNPC extends AbstractMapleMapObject {
@Override
public void sendSpawnData(MapleClient client) {
client.announce(PacketCreator.spawnPlayerNPC(this));
client.announce(PacketCreator.getPlayerNPC(this));
client.sendPacket(PacketCreator.spawnPlayerNPC(this));
client.sendPacket(PacketCreator.getPlayerNPC(this));
}
@Override
public void sendDestroyData(MapleClient client) {
client.announce(PacketCreator.removeNPCController(this.getObjectId()));
client.announce(PacketCreator.removePlayerNPC(this.getObjectId()));
client.sendPacket(PacketCreator.removeNPCController(this.getObjectId()));
client.sendPacket(PacketCreator.removePlayerNPC(this.getObjectId()));
}
private static void getRunningMetadata() {