feat: update wrapper

This commit is contained in:
ineanto 2023-04-28 22:47:57 +02:00
parent 7392b8aad2
commit a01b564912
3 changed files with 29 additions and 7 deletions

View file

@ -111,7 +111,7 @@ public class NickoBukkit extends JavaPlugin {
protocolManager.addPacketListener(new PacketAdapter(
this,
ListenerPriority.NORMAL,
PacketType.Play.Server.PLAYER_INFO) {
PacketType.Play.Server.RESPAWN) {
@Override
public void onPacketReceiving(PacketEvent event) {
}

View file

@ -145,6 +145,9 @@ public class AppearanceManager {
respawn.setDifficulty(world.getDifficulty());
respawn.setDimension(world);
respawn.setSeed(world.getSeed());
respawn.setLastDeathLocation(player.getLocation());
respawn.getHandle().getBooleans().write(0, false); // is debug
respawn.getHandle().getBooleans().write(1, false); // is flat
respawn.sendPacket(player);
}

View file

@ -4,12 +4,16 @@ import com.comphenix.protocol.PacketType;
import com.comphenix.protocol.events.PacketContainer;
import com.comphenix.protocol.utility.MinecraftReflection;
import com.comphenix.protocol.utility.MinecraftVersion;
import com.comphenix.protocol.wrappers.BlockPosition;
import com.comphenix.protocol.wrappers.BukkitConverters;
import com.comphenix.protocol.wrappers.EnumWrappers;
import org.bukkit.Difficulty;
import org.bukkit.GameMode;
import org.bukkit.Location;
import org.bukkit.World;
import java.util.Optional;
/**
* Up-to-date version of the Wrapper class
* for the PacketPlayServerRespawn.
@ -51,10 +55,7 @@ public class WrapperPlayServerRespawn extends AbstractPacket {
public void setDimension(World value) {
if (MinecraftVersion.WILD_UPDATE.atOrAbove()) {
// 1.19 and above
handle.getWorldKeys().withParamType(
MinecraftReflection.getResourceKey(),
BukkitConverters.getWorldKeyConverter()
).write(0, value);
handle.getWorldKeys().write(0, value);
return;
}
// 1.18 and below
@ -66,15 +67,33 @@ public class WrapperPlayServerRespawn extends AbstractPacket {
//.............
public void getGameMode() {
// Present since 1.8, we're good!
handle.getGameModes().read(0);
}
public void setGameMode(GameMode value) {
// Present since 1.8, we're good!
handle.getGameModes().write(0, EnumWrappers.NativeGameMode.fromBukkit(value));
}
//.............
// Last death location Field
// Added in 1.19.
//.............
public Optional<BlockPosition> getLastDeathLocation() {
if (MinecraftVersion.WILD_UPDATE.atOrAbove()) {
return handle.getOptionals(BlockPosition.getConverter()).read(0);
}
return Optional.empty();
}
public void setLastDeathLocation(Location value) {
if (MinecraftVersion.WILD_UPDATE.atOrAbove()) {
final BlockPosition locationToBlockPosition = BlockPosition.getConverter().getSpecific(value);
final Optional<BlockPosition> blockPosition = Optional.ofNullable(locationToBlockPosition);
handle.getOptionals(BlockPosition.getConverter()).write(0, blockPosition);
}
}
//.............
// Seed Field
// Added in 1.15.