Add bridge and rescue totem jokers and fix dark block displays during the transition
This commit is contained in:
1 parent
f56a3765c6
commit
ef1662b144
4 files changed
+272
-28
No files matched your search
@@ -7,11 +7,17 @@ import net.minestom.server.coordinate.Pos;
|
||||
import net.minestom.server.entity.Player;
|
||||
import net.minestom.server.entity.PlayerSkin;
|
||||
import net.minestom.server.event.GlobalEventHandler;
|
||||
import net.minestom.server.event.item.ItemDropEvent;
|
||||
import net.minestom.server.event.player.AsyncPlayerConfigurationEvent;
|
||||
import net.minestom.server.event.player.PlayerBlockBreakEvent;
|
||||
import net.minestom.server.event.player.PlayerBlockPlaceEvent;
|
||||
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.event.player.PlayerSwapItemEvent;
|
||||
import net.minestom.server.event.player.PlayerUseItemEvent;
|
||||
import net.minestom.server.event.player.PlayerUseItemOnBlockEvent;
|
||||
import net.minestom.server.item.ItemStack;
|
||||
import net.minestom.server.instance.InstanceContainer;
|
||||
import net.minestom.server.instance.InstanceManager;
|
||||
import net.minestom.server.instance.block.Block;
|
||||
@@ -21,6 +27,7 @@ import java.io.IOException;
|
||||
import java.nio.file.Files;
|
||||
import java.nio.file.Path;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
public class EndlessJumper {
|
||||
public static void main(String[] args) throws IOException {
|
||||
@@ -65,8 +72,7 @@ public class EndlessJumper {
|
||||
|
||||
JumpGenerator generator = games.get(p);
|
||||
|
||||
//reset when falling down
|
||||
if(p.getPosition().y() < generator.getNextLanding().y()-5 && p.getPosition().y() < generator.getCheckpoint().y()) generator.reset();
|
||||
generator.checkFall();
|
||||
|
||||
Pos p1 = BlockMath.roundToBlock(event.getNewPosition().sub(0.0,1.0,0.0));
|
||||
Pos p2 = BlockMath.roundToBlock(event.getNewPosition().sub(0.0, 2.0, 0.0));
|
||||
@@ -81,14 +87,37 @@ public class EndlessJumper {
|
||||
//if(p.getPosition().z() > target.z()+2) generator.highlight();
|
||||
});
|
||||
|
||||
eventHandler.addListener(PlayerBlockBreakEvent.class, event -> event.setCancelled(true));
|
||||
// nur Brücken- und Rettungsblöcke dürfen abgebaut werden (Notausgang), Sprungblöcke nie
|
||||
eventHandler.addListener(PlayerBlockBreakEvent.class, event -> {
|
||||
JumpGenerator generator = games.get(event.getPlayer());
|
||||
if(generator == null || !generator.isBreakable(new Pos(event.getBlockPosition()))) event.setCancelled(true);
|
||||
});
|
||||
eventHandler.addListener(PlayerBlockPlaceEvent.class, event -> event.setCancelled(true));
|
||||
eventHandler.addListener(ItemDropEvent.class, event -> event.setCancelled(true));
|
||||
eventHandler.addListener(PlayerSwapItemEvent.class, event -> event.setCancelled(true));
|
||||
|
||||
// Rechtsklick auf Luft und auf Blöcke lösen beide aus; kurze Sperre gegen doppelte Nutzung
|
||||
Map<Player, Long> lastJokerUse = new HashMap<>();
|
||||
java.util.function.BiConsumer<Player, ItemStack> useJoker = (p, item) -> {
|
||||
JumpGenerator generator = games.get(p);
|
||||
if(generator == null || !Jokers.isBridge(item)) return;
|
||||
long now = System.currentTimeMillis();
|
||||
if(now - lastJokerUse.getOrDefault(p, 0L) < 500) return;
|
||||
lastJokerUse.put(p, now);
|
||||
if(generator.useBridge()) Jokers.takeBridge(p);
|
||||
};
|
||||
eventHandler.addListener(PlayerUseItemEvent.class, event -> useJoker.accept(event.getPlayer(), event.getItemStack()));
|
||||
eventHandler.addListener(PlayerUseItemOnBlockEvent.class, event -> useJoker.accept(event.getPlayer(), event.getItemStack()));
|
||||
|
||||
eventHandler.addListener(PlayerSpawnEvent.class, event -> {
|
||||
if(event.isFirstSpawn()) ScoreTab.join(event.getPlayer());
|
||||
if(!event.isFirstSpawn()) return;
|
||||
ScoreTab.join(event.getPlayer());
|
||||
Jokers.giveStart(event.getPlayer());
|
||||
});
|
||||
|
||||
eventHandler.addListener(PlayerDisconnectEvent.class, event -> {
|
||||
games.remove(event.getPlayer());
|
||||
lastJokerUse.remove(event.getPlayer());
|
||||
ScoreTab.leave(event.getPlayer());
|
||||
});
|
||||
|
||||
|
||||
Reference in new issue
Block a user