Spigot sneakt der Spieler?
Hey Jungs und Mädels,ich mal wieder.
Da ich grade ein kleines Spigot Plugin programmier bin ich auf ein Problem gestoßen:
@EventHandler
public void onPlayerToggleSneak(PlayerToggleSneakEvent event) {
Player player = event.getPlayer();
Boolean isSneaking = player.isSneaking();
if (isSneaking) {
test = true;
event.getPlayer().sendMessage("L");
} else {
test = false;
}
}
Nun ist das Problem dass der Boolean nur dann true ist während man vom sneaken in den Normalen Zustand wechselt.
Er soll es aber immer sein solange man sneakt.
Mit einer while Schleife hab ich es natürlich auch versucht aber da ist der server immer abgestürzt(Hat 4 Ram).
Habt ihr ne Idee was ich machen kann?
Danke schonmal
3 Antworten
![](https://images.gutefrage.net/media/default/user/15_nmmslarge.png?v=1551279448000)
List<Player> sneakingPlayers = new ArrayList<>();
@EventHandler
public void onPlayerToggleSneak(PlayerToggleSneakEvent event) {
Player player = event.getPlayer();
boolean isSneaking = player.isSneaking();
if (isSneaking) {
if(!sneakingPlayers.contains(player)) {
sneakingPlayers.add(player);
}
} else {
if(sneakingPlayers.contains(player)) {
sneakingPlayers.remove(player);
}
}
}
![](https://images.gutefrage.net/media/user/Sprax2000/1553649182402_nmmslarge__0_0_1440_1440_ca5ab884ec0fabed2aadbc0606505d33.png?v=1553649182000)
Ich würde den boolean `isSneaking` lieber mit der Variable aus `event.isSneaking()` füllen. Ansonsten sieht es auf den ersten Blick richtig/sinnvoll aus. Benötigt dann natürlich weiteren Code (z. B. einen Scheduler)
![](https://images.gutefrage.net/media/user/TheMinecrafter2/1523388587597_nmmslarge__37_37_662_662_97efe2fa977965f9b26ca64738b2857d.jpg?v=1523388588000)
![](https://images.gutefrage.net/media/default/user/15_nmmslarge.png?v=1551279448000)
Ist doch klar, das Event wird nur ausgeführt wenn er Sneaken toggelt. Steht ja im Event Namen. Möglicherweiße geht es wenn du ein Scheduler benutzt. Oder Du könntest es mit Packets machen, oder oder da gibts viele Möglichkeiten wenn man so drüber nachdenkt. Wenn es sein soll während er sich bewegt dann benutz das PlayerMoveEvent.
![](https://images.gutefrage.net/media/user/TheMinecrafter2/1523388587597_nmmslarge__37_37_662_662_97efe2fa977965f9b26ca64738b2857d.jpg?v=1523388588000)
Und wenn man in den Sneak reingeht, liefert er dann auch true oder liefert er dann false? Und was liefert er wenn man garnicht sneakt?
![](https://images.gutefrage.net/media/default/user/9_nmmslarge.png?v=1551279448000)
Er gibt mir nur true zurück wenn ich aus dem Sneak rausgehe sonst bleibt der Wert immer false.