Add feather fall and spring jokers, drop jokers on checkpoints with 10% chance and only give a totem when starting from zero
This commit is contained in:
1 parent
555f4024e4
commit
38bb9c6dc8
3 files changed
+54
-21
No files matched your search
@@ -19,11 +19,9 @@ import net.minestom.server.event.player.PlayerMoveEvent;
|
||||
import net.minestom.server.event.player.PlayerSpawnEvent;
|
||||
import net.minestom.server.event.player.PlayerSwapItemEvent;
|
||||
import net.minestom.server.event.player.PlayerUseItemEvent;
|
||||
import net.minestom.server.event.player.PlayerUseItemOnBlockEvent;
|
||||
import net.minestom.server.instance.Instance;
|
||||
import net.minestom.server.instance.InstanceContainer;
|
||||
import net.minestom.server.instance.block.Block;
|
||||
import net.minestom.server.item.ItemStack;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.nio.file.Files;
|
||||
@@ -54,7 +52,7 @@ public class EndlessJumper {
|
||||
Player p = event.getPlayer();
|
||||
p.setCanPickupItem(true);
|
||||
ScoreTab.join(p);
|
||||
Jokers.giveStart(p);
|
||||
Jokers.clear(p);
|
||||
// sobald der Spieler in der Welt steht, geht es los
|
||||
games.put(p, new JumpGenerator(START, Progress.checkpoint(p.getUuid()), p, p.getInstance()));
|
||||
});
|
||||
@@ -70,9 +68,13 @@ public class EndlessJumper {
|
||||
eventHandler.addListener(ItemDropEvent.class, event -> event.setCancelled(true));
|
||||
eventHandler.addListener(PlayerSwapItemEvent.class, event -> event.setCancelled(true));
|
||||
|
||||
// Rechtsklick auf Luft und auf Blöcke: useBridge() baut beim zweiten Event nichts doppelt
|
||||
eventHandler.addListener(PlayerUseItemEvent.class, event -> useJoker(event.getPlayer(), event.getItemStack()));
|
||||
eventHandler.addListener(PlayerUseItemOnBlockEvent.class, event -> useJoker(event.getPlayer(), event.getItemStack()));
|
||||
// der Client meldet Rechtsklicks auch auf Blöcke als Item-Nutzung, solange der Block sie nicht
|
||||
// selbst verarbeitet (auf der Strecke nie) – ein Event genügt, Joker werden nicht doppelt verbraucht
|
||||
eventHandler.addListener(PlayerUseItemEvent.class, event -> {
|
||||
JumpGenerator generator = games.get(event.getPlayer());
|
||||
Jokers joker = Jokers.of(event.getItemStack());
|
||||
if(generator != null && joker != null && generator.useJoker(joker)) joker.take(event.getPlayer());
|
||||
});
|
||||
|
||||
eventHandler.addListener(PickupItemEvent.class, event -> {
|
||||
Jokers joker = Jokers.of(event.getItemStack());
|
||||
@@ -119,17 +121,12 @@ public class EndlessJumper {
|
||||
InstanceContainer world = createWorld();
|
||||
player.setVelocity(Vec.ZERO);
|
||||
player.setInstance(world, SPAWN).thenRun(() -> {
|
||||
Jokers.giveStart(player);
|
||||
Jokers.clear(player);
|
||||
games.put(player, new JumpGenerator(START, 0, player, world));
|
||||
releaseLater(oldWorld);
|
||||
});
|
||||
}
|
||||
|
||||
private static void useJoker(Player player, ItemStack item) {
|
||||
JumpGenerator generator = games.get(player);
|
||||
if(generator != null && Jokers.BRIDGE.matches(item) && generator.useBridge()) Jokers.BRIDGE.take(player);
|
||||
}
|
||||
|
||||
// Wie bei Velocity: Secret aus forwarding.secret im Arbeitsverzeichnis, alternativ per Umgebungsvariable
|
||||
private static String readForwardingSecret() throws IOException {
|
||||
String fromEnv = System.getenv("VELOCITY_FORWARDING_SECRET");
|
||||
|
||||
Reference in new issue
Block a user