diff --git a/build.gradle b/build.gradle index eecc1de..382e70e 100644 --- a/build.gradle +++ b/build.gradle @@ -28,16 +28,23 @@ repositories { } } +java { + toolchain { + languageVersion = JavaLanguageVersion.of(17) + } +} + dependencies { testImplementation 'org.junit.jupiter:junit-jupiter-api:5.9.0' testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.9.0' //https://jitpack.io/#Minestom/Minestom - implementation 'com.github.waxeria:Minestom:e0427a36f3' +// implementation 'com.github.Minestom:Minestom:c496ee357' +// implementation 'com.github.waxeria:Minestom:e0427a36f3' // implementation 'dev.hollowcube:minestom-ce:5bcc72b911' -// implementation 'dev.hollowcube:minestom-ce:e146a9393e' -// implementation 'dev.hollowcube:minestom-ce-extensions:1.2.0' + implementation 'dev.hollowcube:minestom-ce:8715f4305d' + implementation 'dev.hollowcube:minestom-ce-extensions:1.2.0' //Tools diff --git a/src/main/java/eu/mhsl/minenet/minigames/Main.java b/src/main/java/eu/mhsl/minenet/minigames/Main.java index a7a242e..206814e 100644 --- a/src/main/java/eu/mhsl/minenet/minigames/Main.java +++ b/src/main/java/eu/mhsl/minenet/minigames/Main.java @@ -64,7 +64,6 @@ public class Main { if(globalConfig.node("velocity", "enabled").getBoolean()) { VelocityProxy.enable(Objects.requireNonNull(globalConfig.node("velocity", "secret").getString())); - } server.start("0.0.0.0", serverConfig.node("port").getInt(25565)); diff --git a/src/main/java/eu/mhsl/minenet/minigames/command/privileged/DebugCommand.java b/src/main/java/eu/mhsl/minenet/minigames/command/privileged/DebugCommand.java index 4298529..4e78ce2 100644 --- a/src/main/java/eu/mhsl/minenet/minigames/command/privileged/DebugCommand.java +++ b/src/main/java/eu/mhsl/minenet/minigames/command/privileged/DebugCommand.java @@ -5,6 +5,7 @@ import eu.mhsl.minenet.minigames.message.Icon; import eu.mhsl.minenet.minigames.message.type.ActionBarMessage; import eu.mhsl.minenet.minigames.message.type.ChatMessage; import eu.mhsl.minenet.minigames.message.type.TitleMessage; +import eu.mhsl.minenet.minigames.util.PacketUtil; import net.minestom.server.entity.Player; import java.util.ArrayList; @@ -35,6 +36,8 @@ public class DebugCommand extends PrivilegedCommand { .appendTranslated("score#thanks") .send(sender); + PacketUtil.resendPlayerList(((Player) sender)); + new ChatMessage(Icon.SCIENCE).appendStatic(((Player) sender).getUuid().toString()).send(sender); }); diff --git a/src/main/java/eu/mhsl/minenet/minigames/handler/global/AddEntityToInstanceEventListener.java b/src/main/java/eu/mhsl/minenet/minigames/handler/global/AddEntityToInstanceEventListener.java index d5b7058..5fa1e83 100644 --- a/src/main/java/eu/mhsl/minenet/minigames/handler/global/AddEntityToInstanceEventListener.java +++ b/src/main/java/eu/mhsl/minenet/minigames/handler/global/AddEntityToInstanceEventListener.java @@ -1,10 +1,7 @@ package eu.mhsl.minenet.minigames.handler.global; -import eu.mhsl.minenet.minigames.message.type.ActionBarMessage; -import eu.mhsl.minenet.minigames.message.type.ChatMessage; -import eu.mhsl.minenet.minigames.message.Icon; -import net.kyori.adventure.text.Component; -import net.kyori.adventure.text.format.NamedTextColor; +import eu.mhsl.minenet.minigames.instance.Spawnable; +import eu.mhsl.minenet.minigames.util.PacketUtil; import net.minestom.server.MinecraftServer; import net.minestom.server.entity.Player; import net.minestom.server.event.EventListener; @@ -25,6 +22,12 @@ public class AddEntityToInstanceEventListener implements EventListener { public @NotNull Result run(@NotNull PlayerLoginEvent event) { Player p = event.getPlayer(); - UUID pushQueue = QueuedPlayerRooms.pullQueue(event.getPlayer().getUuid()); - if(pushQueue != null) { - Room target = Room.getRoom(pushQueue).orElseThrow(); - Transfer transferInstance = new Transfer(); - p.setRespawnPoint(transferInstance.getSpawn()); - event.setSpawningInstance(transferInstance); - MinecraftServer.getSchedulerManager().scheduleTask( - () -> Room.setRoom(p, target), - TaskSchedule.seconds(1), - TaskSchedule.stop() - ); - } else { - p.setRespawnPoint(Hub.INSTANCE.getSpawn()); - event.setSpawningInstance(Hub.INSTANCE); - } + Transfer transferInstance = new Transfer(); + p.setRespawnPoint(transferInstance.getSpawn()); + event.setSpawningInstance(transferInstance); -// SkinCache.applySkin(p); + UUID pushQueue = QueuedPlayerRooms.pullQueue(event.getPlayer().getUuid()); + + MinecraftServer.getSchedulerManager().scheduleTask( + () -> { + if(pushQueue != null) { + Room.setRoom(p, Room.getRoom(pushQueue).orElseThrow()); + } else { + MoveInstance.move(p, Hub.INSTANCE); + } + }, + TaskSchedule.seconds(5), + TaskSchedule.stop() + ); + + SkinCache.applySkin(p); try { if(Objects.requireNonNull(Main.globalConfig.node("admins").getList(String.class)).stream().anyMatch(s -> s.equalsIgnoreCase(p.getUsername()))) { diff --git a/src/main/java/eu/mhsl/minenet/minigames/server/provider/ByPlayerNameUuidProvider.java b/src/main/java/eu/mhsl/minenet/minigames/server/provider/ByPlayerNameUuidProvider.java index e8808d1..11566e5 100644 --- a/src/main/java/eu/mhsl/minenet/minigames/server/provider/ByPlayerNameUuidProvider.java +++ b/src/main/java/eu/mhsl/minenet/minigames/server/provider/ByPlayerNameUuidProvider.java @@ -19,12 +19,9 @@ public class ByPlayerNameUuidProvider implements UuidProvider { return UuidUtil.unTrimm(client); } catch (NullPointerException e) { - - Logger.getGlobal().info("Player " + username + " is an known by Mojang! (Using random UUID)"); - + Logger.getGlobal().info("Player " + username + " is unknown by Mojang! (Using random UUID)"); } catch (IllegalStateException e) { - - Logger.getGlobal().info("Player with the username " + username + " is already online. (Using random UUID)"); + Logger.getGlobal().info("Player with the username " + username + " is already online."); playerConnection.disconnect(); } diff --git a/src/main/java/eu/mhsl/minenet/minigames/util/MoveInstance.java b/src/main/java/eu/mhsl/minenet/minigames/util/MoveInstance.java index 6b2365e..33aeaf5 100644 --- a/src/main/java/eu/mhsl/minenet/minigames/util/MoveInstance.java +++ b/src/main/java/eu/mhsl/minenet/minigames/util/MoveInstance.java @@ -15,7 +15,7 @@ public class MoveInstance { playerList.forEach(player -> move(player, destination)); } public static void move(Entity p, Spawnable destination) { - p.setInstance((Instance) destination, destination.getSpawn()); + if(p.getInstance() != destination) p.setInstance((Instance) destination, destination.getSpawn()); } public static void forceCloseInstance(InstanceContainer instance) { diff --git a/src/main/java/eu/mhsl/minenet/minigames/util/PacketUtil.java b/src/main/java/eu/mhsl/minenet/minigames/util/PacketUtil.java new file mode 100644 index 0000000..17e5434 --- /dev/null +++ b/src/main/java/eu/mhsl/minenet/minigames/util/PacketUtil.java @@ -0,0 +1,40 @@ +package eu.mhsl.minenet.minigames.util; + +import net.minestom.server.MinecraftServer; +import net.minestom.server.entity.GameMode; +import net.minestom.server.entity.Player; +import net.minestom.server.entity.PlayerSkin; +import net.minestom.server.network.packet.server.play.PlayerInfoUpdatePacket; +import net.minestom.server.network.packet.server.play.SpawnPlayerPacket; + +import java.util.List; + +public class PacketUtil { + public static void resendPlayerList(Player p) { + MinecraftServer.getConnectionManager().getOnlinePlayers().forEach(player -> { + if(player.getUuid().equals(p.getUuid())) return; + + final PlayerSkin skin = player.getSkin(); + List properties = + skin != null ? List.of(new PlayerInfoUpdatePacket.Property("textures", skin.textures(), skin.signature())) : List.of(); + + p.sendPacket( + new PlayerInfoUpdatePacket(PlayerInfoUpdatePacket.Action.ADD_PLAYER, + new PlayerInfoUpdatePacket.Entry( + player.getUuid(), + player.getUsername(), + properties, + true, + 0, + GameMode.SURVIVAL, + null, + null + ) + ) + ); + p.sendPacket( + new SpawnPlayerPacket(player.getEntityId(), player.getUuid(), player.getPosition()) + ); + }); + } +}