Compare commits

..

No commits in common. "11b0f680bc1dddb0f1730476dd49637eae1b68f9" and "ab2ffcbd379b88946c7ba3b37c39fefccc4ee247" have entirely different histories.

View file

@ -2,17 +2,14 @@ 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.*; import com.github.retrooper.packetevents.wrapper.play.server.WrapperPlayServerDestroyEntities;
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;
@ -24,8 +21,6 @@ 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;
@ -101,11 +96,8 @@ public class PacketEventsPacketSender implements PacketSender {
@Override @Override
public void sendEntityMetadataUpdate() { public void sendEntityMetadataUpdate() {
// This was surprisingly easy to write? // TODO (Ineanto, 27/06/2025): Entity Metadata packet
final EntityData<Byte> entityData = new EntityData<>(17, EntityDataTypes.BYTE, (byte) 0x7f); //sendPacket(data, player);
final WrapperPlayServerEntityMetadata metadata = new WrapperPlayServerEntityMetadata(player.getEntityId(), List.of(entityData));
sendPacket(metadata, player);
} }
@Override @Override
@ -132,52 +124,14 @@ public class PacketEventsPacketSender implements PacketSender {
@Override @Override
public void sendTabListUpdate(String displayName) { public void sendTabListUpdate(String displayName) {
final EnumSet<WrapperPlayServerPlayerInfoUpdate.Action> actions = EnumSet.of( // TODO (Ineanto, 27/06/2025): TabList packet
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);
} }