Compare commits
2 commits
ab2ffcbd37
...
11b0f680bc
Author | SHA1 | Date | |
---|---|---|---|
11b0f680bc | |||
cc61a89ec1 |
1 changed files with 54 additions and 8 deletions
|
@ -2,14 +2,17 @@ package xyz.ineanto.nicko.packet;
|
||||||
|
|
||||||
import com.destroystokyo.paper.profile.PlayerProfile;
|
import com.destroystokyo.paper.profile.PlayerProfile;
|
||||||
import com.github.retrooper.packetevents.PacketEvents;
|
import com.github.retrooper.packetevents.PacketEvents;
|
||||||
|
import com.github.retrooper.packetevents.protocol.entity.data.EntityData;
|
||||||
|
import com.github.retrooper.packetevents.protocol.entity.data.EntityDataTypes;
|
||||||
import com.github.retrooper.packetevents.protocol.entity.type.EntityTypes;
|
import com.github.retrooper.packetevents.protocol.entity.type.EntityTypes;
|
||||||
|
import com.github.retrooper.packetevents.protocol.player.TextureProperty;
|
||||||
|
import com.github.retrooper.packetevents.protocol.player.UserProfile;
|
||||||
import com.github.retrooper.packetevents.protocol.world.Difficulty;
|
import com.github.retrooper.packetevents.protocol.world.Difficulty;
|
||||||
import com.github.retrooper.packetevents.util.Vector3d;
|
import com.github.retrooper.packetevents.util.Vector3d;
|
||||||
import com.github.retrooper.packetevents.wrapper.PacketWrapper;
|
import com.github.retrooper.packetevents.wrapper.PacketWrapper;
|
||||||
import com.github.retrooper.packetevents.wrapper.play.server.WrapperPlayServerDestroyEntities;
|
import com.github.retrooper.packetevents.wrapper.play.server.*;
|
||||||
import com.github.retrooper.packetevents.wrapper.play.server.WrapperPlayServerRespawn;
|
|
||||||
import com.github.retrooper.packetevents.wrapper.play.server.WrapperPlayServerSpawnEntity;
|
|
||||||
import io.github.retrooper.packetevents.util.SpigotConversionUtil;
|
import io.github.retrooper.packetevents.util.SpigotConversionUtil;
|
||||||
|
import net.kyori.adventure.text.Component;
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.World;
|
import org.bukkit.World;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
|
@ -21,6 +24,8 @@ import xyz.ineanto.nicko.mojang.MojangSkin;
|
||||||
import xyz.ineanto.nicko.profile.NickoProfile;
|
import xyz.ineanto.nicko.profile.NickoProfile;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
import java.util.EnumSet;
|
||||||
|
import java.util.List;
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
import java.util.Random;
|
import java.util.Random;
|
||||||
import java.util.concurrent.ExecutionException;
|
import java.util.concurrent.ExecutionException;
|
||||||
|
@ -96,8 +101,11 @@ public class PacketEventsPacketSender implements PacketSender {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void sendEntityMetadataUpdate() {
|
public void sendEntityMetadataUpdate() {
|
||||||
// TODO (Ineanto, 27/06/2025): Entity Metadata packet
|
// This was surprisingly easy to write?
|
||||||
//sendPacket(data, player);
|
final EntityData<Byte> entityData = new EntityData<>(17, EntityDataTypes.BYTE, (byte) 0x7f);
|
||||||
|
final WrapperPlayServerEntityMetadata metadata = new WrapperPlayServerEntityMetadata(player.getEntityId(), List.of(entityData));
|
||||||
|
|
||||||
|
sendPacket(metadata, player);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -124,14 +132,52 @@ public class PacketEventsPacketSender implements PacketSender {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void sendTabListUpdate(String displayName) {
|
public void sendTabListUpdate(String displayName) {
|
||||||
// TODO (Ineanto, 27/06/2025): TabList packet
|
final EnumSet<WrapperPlayServerPlayerInfoUpdate.Action> actions = EnumSet.of(
|
||||||
|
WrapperPlayServerPlayerInfoUpdate.Action.ADD_PLAYER,
|
||||||
|
WrapperPlayServerPlayerInfoUpdate.Action.INITIALIZE_CHAT,
|
||||||
|
WrapperPlayServerPlayerInfoUpdate.Action.UPDATE_LISTED,
|
||||||
|
WrapperPlayServerPlayerInfoUpdate.Action.UPDATE_DISPLAY_NAME,
|
||||||
|
WrapperPlayServerPlayerInfoUpdate.Action.UPDATE_GAME_MODE,
|
||||||
|
WrapperPlayServerPlayerInfoUpdate.Action.UPDATE_LATENCY
|
||||||
|
);
|
||||||
|
|
||||||
|
final List<WrapperPlayServerPlayerInfoUpdate.PlayerInfo> entries = List.of(
|
||||||
|
new WrapperPlayServerPlayerInfoUpdate.PlayerInfo(
|
||||||
|
toUserProfile(player.getPlayerProfile()),
|
||||||
|
true,
|
||||||
|
player.getPing(),
|
||||||
|
SpigotConversionUtil.fromBukkitGameMode(player.getGameMode()),
|
||||||
|
Component.text(displayName),
|
||||||
|
null, // Welcome back fucked chat encryption
|
||||||
|
player.getPlayerListOrder(),
|
||||||
|
true
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
|
final WrapperPlayServerPlayerInfoRemove remove = new WrapperPlayServerPlayerInfoRemove(player.getUniqueId());
|
||||||
|
final WrapperPlayServerPlayerInfoUpdate update = new WrapperPlayServerPlayerInfoUpdate(actions, entries);
|
||||||
|
|
||||||
Bukkit.getOnlinePlayers().forEach(onlinePlayer -> {
|
Bukkit.getOnlinePlayers().forEach(onlinePlayer -> {
|
||||||
//sendPacket(remove, onlinePlayer);
|
sendPacket(remove, onlinePlayer);
|
||||||
//sendPacket(update, onlinePlayer);
|
sendPacket(update, onlinePlayer);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private UserProfile toUserProfile(PlayerProfile playerProfile) {
|
||||||
|
return new UserProfile(
|
||||||
|
playerProfile.getId(),
|
||||||
|
playerProfile.getName(),
|
||||||
|
playerProfile.getProperties()
|
||||||
|
.stream()
|
||||||
|
.map(profileProperty -> new TextureProperty(
|
||||||
|
profileProperty.getName(),
|
||||||
|
profileProperty.getValue(),
|
||||||
|
profileProperty.getSignature()
|
||||||
|
))
|
||||||
|
.toList()
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
private void sendPacket(PacketWrapper<?> packet, Player player) {
|
private void sendPacket(PacketWrapper<?> packet, Player player) {
|
||||||
PacketEvents.getAPI().getPlayerManager().sendPacket(player, packet);
|
PacketEvents.getAPI().getPlayerManager().sendPacket(player, packet);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue