Show each player's current score in the tab list
This commit is contained in:
1 parent
9e1edbfc7c
commit
f56a3765c6
3 files changed
+47
-2
No files matched your search
@@ -11,6 +11,7 @@ import net.minestom.server.event.player.AsyncPlayerConfigurationEvent;
|
|||||||
import net.minestom.server.event.player.PlayerBlockBreakEvent;
|
import net.minestom.server.event.player.PlayerBlockBreakEvent;
|
||||||
import net.minestom.server.event.player.PlayerDisconnectEvent;
|
import net.minestom.server.event.player.PlayerDisconnectEvent;
|
||||||
import net.minestom.server.event.player.PlayerMoveEvent;
|
import net.minestom.server.event.player.PlayerMoveEvent;
|
||||||
|
import net.minestom.server.event.player.PlayerSpawnEvent;
|
||||||
import net.minestom.server.instance.InstanceContainer;
|
import net.minestom.server.instance.InstanceContainer;
|
||||||
import net.minestom.server.instance.InstanceManager;
|
import net.minestom.server.instance.InstanceManager;
|
||||||
import net.minestom.server.instance.block.Block;
|
import net.minestom.server.instance.block.Block;
|
||||||
@@ -82,7 +83,14 @@ public class EndlessJumper {
|
|||||||
|
|
||||||
eventHandler.addListener(PlayerBlockBreakEvent.class, event -> event.setCancelled(true));
|
eventHandler.addListener(PlayerBlockBreakEvent.class, event -> event.setCancelled(true));
|
||||||
|
|
||||||
eventHandler.addListener(PlayerDisconnectEvent.class, event -> games.remove(event.getPlayer()));
|
eventHandler.addListener(PlayerSpawnEvent.class, event -> {
|
||||||
|
if(event.isFirstSpawn()) ScoreTab.join(event.getPlayer());
|
||||||
|
});
|
||||||
|
|
||||||
|
eventHandler.addListener(PlayerDisconnectEvent.class, event -> {
|
||||||
|
games.remove(event.getPlayer());
|
||||||
|
ScoreTab.leave(event.getPlayer());
|
||||||
|
});
|
||||||
|
|
||||||
server.start("0.0.0.0", 25501);
|
server.start("0.0.0.0", 25501);
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,34 @@
|
|||||||
|
package eu.mhsl.minecraft.endlessjumper;
|
||||||
|
|
||||||
|
import net.minestom.server.entity.Player;
|
||||||
|
import net.minestom.server.network.packet.server.play.ScoreboardObjectivePacket;
|
||||||
|
import net.minestom.server.scoreboard.TabList;
|
||||||
|
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.concurrent.ConcurrentHashMap;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Zeigt den aktuellen Fortschritt jedes Spielers als Zahl in der Tab-Liste.
|
||||||
|
*/
|
||||||
|
public class ScoreTab {
|
||||||
|
private static final TabList TAB_LIST = new TabList("jumps", ScoreboardObjectivePacket.Type.INTEGER);
|
||||||
|
private static final Map<Player, Integer> scores = new ConcurrentHashMap<>();
|
||||||
|
|
||||||
|
public static void join(Player player) {
|
||||||
|
TAB_LIST.addViewer(player);
|
||||||
|
scores.put(player, 0);
|
||||||
|
// dem neuen Spieler auch die Scores aller anderen zeigen
|
||||||
|
scores.forEach(TAB_LIST::updateScore);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void update(Player player, int score) {
|
||||||
|
if(!scores.containsKey(player)) return;
|
||||||
|
scores.put(player, score);
|
||||||
|
TAB_LIST.updateScore(player, score);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void leave(Player player) {
|
||||||
|
scores.remove(player);
|
||||||
|
TAB_LIST.removeViewer(player);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -4,6 +4,7 @@ import net.kyori.adventure.sound.Sound;
|
|||||||
import net.kyori.adventure.text.Component;
|
import net.kyori.adventure.text.Component;
|
||||||
import net.kyori.adventure.text.format.TextColor;
|
import net.kyori.adventure.text.format.TextColor;
|
||||||
import net.kyori.adventure.title.Title;
|
import net.kyori.adventure.title.Title;
|
||||||
|
import eu.mhsl.minecraft.endlessjumper.ScoreTab;
|
||||||
import net.minestom.server.coordinate.Pos;
|
import net.minestom.server.coordinate.Pos;
|
||||||
import net.minestom.server.entity.Player;
|
import net.minestom.server.entity.Player;
|
||||||
import net.minestom.server.instance.InstanceContainer;
|
import net.minestom.server.instance.InstanceContainer;
|
||||||
@@ -50,7 +51,9 @@ public class JumpGenerator {
|
|||||||
float pitch = 1 + (combo * 0.025f);
|
float pitch = 1 + (combo * 0.025f);
|
||||||
this.player.playSound(Sound.sound(SoundEvent.BLOCK_NOTE_BLOCK_PLING, Sound.Source.MASTER, 0.1f, pitch));
|
this.player.playSound(Sound.sound(SoundEvent.BLOCK_NOTE_BLOCK_PLING, Sound.Source.MASTER, 0.1f, pitch));
|
||||||
this.player.showTitle(Title.title(Component.text(""), Component.text((combo)+"", TextColor.color(255, 69, 0))));
|
this.player.showTitle(Title.title(Component.text(""), Component.text((combo)+"", TextColor.color(255, 69, 0))));
|
||||||
this.player.setLevel((this.blocks.size()-this.preview-1));
|
int score = Math.max(0, this.blocks.size()-this.preview-1);
|
||||||
|
this.player.setLevel(score);
|
||||||
|
ScoreTab.update(this.player, score);
|
||||||
|
|
||||||
Random r = new Random();
|
Random r = new Random();
|
||||||
int index = this.blocks.size();
|
int index = this.blocks.size();
|
||||||
|
|||||||
Reference in new issue
Block a user