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.PlayerDisconnectEvent;
|
||||
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.InstanceManager;
|
||||
import net.minestom.server.instance.block.Block;
|
||||
@@ -82,7 +83,14 @@ public class EndlessJumper {
|
||||
|
||||
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);
|
||||
|
||||
|
||||
@@ -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.format.TextColor;
|
||||
import net.kyori.adventure.title.Title;
|
||||
import eu.mhsl.minecraft.endlessjumper.ScoreTab;
|
||||
import net.minestom.server.coordinate.Pos;
|
||||
import net.minestom.server.entity.Player;
|
||||
import net.minestom.server.instance.InstanceContainer;
|
||||
@@ -50,7 +51,9 @@ public class JumpGenerator {
|
||||
float pitch = 1 + (combo * 0.025f);
|
||||
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.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();
|
||||
int index = this.blocks.size();
|
||||
|
||||
Reference in new issue
Block a user