Improve Performance of Freezing Players

This commit is contained in:
FirephoenixX02 2023-07-06 15:07:02 +02:00
parent de295f01b5
commit f5f7803d50
2 changed files with 9 additions and 14 deletions

View file

@ -45,6 +45,8 @@ public final class PS3Minigames extends JavaPlugin {
public MultiverseCore multiverseCore; public MultiverseCore multiverseCore;
public ArrayList<UUID> frozenPlayer = new ArrayList<>();
@Override @Override
public void onEnable() { public void onEnable() {
// Set Instance // Set Instance
@ -94,6 +96,7 @@ public final class PS3Minigames extends JavaPlugin {
Location location = new Location(gameWorld, getConfig().getDouble(configpathtospawnloc + ".x"), getConfig().getDouble(configpathtospawnloc + ".y"), getConfig().getDouble(configpathtospawnloc + ".z"), (float) getConfig().getDouble(configpathtospawnloc + ".yaw"), (float) getConfig().getDouble(configpathtospawnloc + ".pitch")); Location location = new Location(gameWorld, getConfig().getDouble(configpathtospawnloc + ".x"), getConfig().getDouble(configpathtospawnloc + ".y"), getConfig().getDouble(configpathtospawnloc + ".z"), (float) getConfig().getDouble(configpathtospawnloc + ".yaw"), (float) getConfig().getDouble(configpathtospawnloc + ".pitch"));
System.out.println(configpathtospawnloc + ".x"); System.out.println(configpathtospawnloc + ".x");
Bukkit.getServer().getPlayer(uuid).teleport(location); Bukkit.getServer().getPlayer(uuid).teleport(location);
getFrozenPlayer().add(uuid);
} }
Timer timer = new Timer(10, PS3Minigames.INSTANCE); Timer timer = new Timer(10, PS3Minigames.INSTANCE);
timer.start(); timer.start();
@ -105,7 +108,10 @@ public final class PS3Minigames extends JavaPlugin {
}); });
timer.whenComplete(() -> { timer.whenComplete(() -> {
newGame.setGameState(GameState.RUNNING); newGame.setGameState(GameState.RUNNING);
gameWorld.getPlayers().forEach(player -> player.sendMessage(ChatColor.translateAlternateColorCodes('&', getConfig().getString("messages.game-start-no-countdown")))); gameWorld.getPlayers().forEach(player -> {
frozenPlayer.remove(player.getUniqueId());
player.sendMessage(ChatColor.translateAlternateColorCodes('&', getConfig().getString("messages.game-start-no-countdown")));
});
}); });
} else { } else {
System.out.println("error while trying to load the world!"); System.out.println("error while trying to load the world!");

View file

@ -1,16 +1,10 @@
package me.firephoenix.ps3minigames.listener; package me.firephoenix.ps3minigames.listener;
import me.firephoenix.ps3minigames.PS3Minigames; import me.firephoenix.ps3minigames.PS3Minigames;
import me.firephoenix.ps3minigames.game.Game;
import me.firephoenix.ps3minigames.states.GameState;
import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.event.EventHandler; import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener; import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerMoveEvent; import org.bukkit.event.player.PlayerMoveEvent;
import java.util.Objects;
/** /**
* @author NieGestorben * @author NieGestorben
* Copyright© (c) 2023, All Rights Reserved. * Copyright© (c) 2023, All Rights Reserved.
@ -19,13 +13,8 @@ public class MoveListener implements Listener {
@EventHandler @EventHandler
public void onMove(PlayerMoveEvent e) { public void onMove(PlayerMoveEvent e) {
// TODO: Make this less performance intensive. Currently the required performance increases exponentially. if (PS3Minigames.INSTANCE.getFrozenPlayer().contains(e.getPlayer().getUniqueId()) && e.getFrom() != e.getTo()) {
for (Game game : PS3Minigames.INSTANCE.getGames()) { e.setTo(e.getFrom());
if (game.getPlayers().stream().anyMatch(uuid -> e.getPlayer().getUniqueId().equals(uuid))) {
if (game.getGameState() == GameState.STARTING) {
e.setTo(e.getFrom());
}
}
} }
} }
} }