13
0

Remove GhostJumpAndRun.java
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful

Dieser Commit ist enthalten in:
yoyosource 2023-04-16 10:55:09 +02:00
Ursprung c06c094d41
Commit 7a2f653928
2 geänderte Dateien mit 0 neuen und 184 gelöschten Zeilen

Datei anzeigen

@ -1,155 +0,0 @@
package de.steamwar.lobby.jumpandrun;
import de.steamwar.entity.REntityServer;
import de.steamwar.entity.RPlayer;
import de.steamwar.lobby.LobbySystem;
import de.steamwar.sql.UserConfig;
import org.bukkit.Location;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerQuitEvent;
import org.bukkit.scheduler.BukkitRunnable;
import org.bukkit.util.Vector;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.util.*;
import static de.steamwar.lobby.jumpandrun.JumpAndRun.JUMP_AND_RUN_REPLAY_CONFIG;
public class GhostJumpAndRun implements Listener {
private Player player;
private BukkitRunnable recordingRunnable;
private List<Vector> recordingList = new ArrayList<>();
private BukkitRunnable replayRunnable;
private List<Vector> replayList = new ArrayList<>();
private REntityServer entityServer;
private RPlayer entityPlayer;
public GhostJumpAndRun(Player player) {
this.player = player;
String s = UserConfig.getConfig(player.getUniqueId(), JUMP_AND_RUN_REPLAY_CONFIG);
if (s == null) return;
ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(Base64.getDecoder().decode(s));
while (byteArrayInputStream.available() > 0) {
int x = byteArrayInputStream.read() << 24;
x |= byteArrayInputStream.read() << 16;
x |= byteArrayInputStream.read() << 8;
x |= byteArrayInputStream.read();
int y = byteArrayInputStream.read() << 24;
y |= byteArrayInputStream.read() << 16;
y |= byteArrayInputStream.read() << 8;
y |= byteArrayInputStream.read();
int z = byteArrayInputStream.read() << 24;
z |= byteArrayInputStream.read() << 16;
z |= byteArrayInputStream.read() << 8;
z |= byteArrayInputStream.read();
replayList.add(new Vector(Float.intBitsToFloat(x), Float.intBitsToFloat(y), Float.intBitsToFloat(z)));
}
}
public void record() {
if (recordingRunnable != null) return;
recordingList.clear();
recordingRunnable = new BukkitRunnable() {
@Override
public void run() {
recordingList.add(player.getLocation().toVector());
}
};
recordingRunnable.runTaskTimer(LobbySystem.getPlugin(), 1, 2);
}
public void stop() {
if (recordingRunnable == null) return;
recordingRunnable.cancel();
recordingRunnable = null;
if (recordingRunnable != null) {
replayRunnable.cancel();
replayRunnable = null;
}
if (entityServer != null) {
entityServer.close();
entityServer = null;
entityPlayer = null;
}
}
public void saveBestTime() {
replayList = recordingList;
recordingList = new ArrayList<>();
}
public void saveToDB() {
if (replayList.size() > 4000) {
return;
}
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
for (Vector vector : replayList) {
int x = Float.floatToIntBits((float) vector.getX());
int y = Float.floatToIntBits((float) vector.getY());
int z = Float.floatToIntBits((float) vector.getZ());
outputStream.write(x >> 24);
outputStream.write(x >> 16);
outputStream.write(x >> 8);
outputStream.write(x);
outputStream.write(y >> 24);
outputStream.write(y >> 16);
outputStream.write(y >> 8);
outputStream.write(y);
outputStream.write(z >> 24);
outputStream.write(z >> 16);
outputStream.write(z >> 8);
outputStream.write(z);
}
String replay = Base64.getEncoder().encodeToString(outputStream.toByteArray());
UserConfig.updatePlayerConfig(player.getUniqueId(), JUMP_AND_RUN_REPLAY_CONFIG, replay);
}
public void replay() {
if (replayRunnable != null) return;
if (replayList.isEmpty()) return;
entityServer = new REntityServer();
entityServer.addPlayer(player);
entityPlayer = new RPlayer(entityServer, UUID.randomUUID(), "Ghost", player.getLocation());
entityPlayer.setGlowing(true);
entityPlayer.setInvisible(true);
Iterator<Vector> iterator = replayList.iterator();
replayRunnable = new BukkitRunnable() {
@Override
public void run() {
if (!iterator.hasNext() || entityPlayer == null) {
replayRunnable.cancel();
replayRunnable = null;
if (entityServer != null) {
entityServer.close();
}
entityServer = null;
entityPlayer = null;
return;
}
Location location = iterator.next().toLocation(player.getWorld());
if (player.getLocation().distanceSquared(location) < 25) {
location.add(0, 1000, 0);
}
entityPlayer.move(location);
}
};
replayRunnable.runTaskTimer(LobbySystem.getPlugin(), 1, 2);
}
@EventHandler
public void onPlayerQuit(PlayerQuitEvent event) {
if (event.getPlayer() != player) return;
if (entityServer != null) entityServer.close();
if (recordingRunnable != null) recordingRunnable.cancel();
if (replayRunnable != null) replayRunnable.cancel();
}
}

Datei anzeigen

@ -26,7 +26,6 @@ import java.util.*;
public class JumpAndRun extends BasicListener {
public static final String JUMP_AND_RUN_CONFIG = "jump_and_run";
public static final String JUMP_AND_RUN_REPLAY_CONFIG = "jump_and_run_replay";
private static final String BAR_EMPTY = "||||||||||||||||||||||||||||||";
@ -37,9 +36,6 @@ public class JumpAndRun extends BasicListener {
private static final Map<Player, Long> START = new HashMap<>();
private static final Map<Player, Long> CLICKED = new HashMap<>();
private static final Map<Player, Integer> CLICKED_COUNT = new HashMap<>();
private static final Map<Player, GhostJumpAndRun> GHOSTS = new HashMap<>();
private static final Leaderboard LEADERBOARD = new Leaderboard(LobbySystem.getEntityServer(false), JUMP_AND_RUN_CONFIG, new Location(Bukkit.getWorlds().get(0), 2338.5, 42.5, 1231.5), 5);
{
@ -83,11 +79,6 @@ public class JumpAndRun extends BasicListener {
LobbySystem.getMessage().sendPrefixless("JUMP_AND_RUN_PROGRESS", player, ChatMessageType.ACTION_BAR, index + 1, points.size(), FAILS.get(player), parsed.substring(0, parsed.length() - 2));
}
});
toReset.forEach(player -> {
GHOSTS.get(player).stop();
reset(player);
player.teleport(Bukkit.getWorlds().get(0).getSpawnLocation().clone().add(0.5, 0, 0.5));
});
}, 1, 1);
}
@ -126,35 +117,21 @@ public class JumpAndRun extends BasicListener {
event.getPlayer().getInventory().setItem(4, new ItemStack(Material.COMPASS, 1));
FAILS.put(event.getPlayer(), 0);
START.put(event.getPlayer(), System.currentTimeMillis());
GHOSTS.get(event.getPlayer()).record();
GHOSTS.get(event.getPlayer()).replay();
}
if (index == points.size() - 1) {
long time = System.currentTimeMillis() - START.get(event.getPlayer());
SimpleDateFormat format = new SimpleDateFormat(LobbySystem.getMessage().parse("JUMP_AND_RUN_TIME", event.getPlayer()), Locale.ROOT);
String parsed = format.format(new Date(time));
LobbySystem.getMessage().sendPrefixless("JUMP_AND_RUN_FINISHED", event.getPlayer(), parsed.substring(0, parsed.length() - 2), FAILS.get(event.getPlayer()));
GHOSTS.get(event.getPlayer()).stop();
updateJumpAndRunTime(event.getPlayer(), time);
reset(event.getPlayer());
}
}
private void updateJumpAndRunTime(Player player, long time) {
boolean needsSave = true;
if (UserConfig.getConfig(player.getUniqueId(), JUMP_AND_RUN_REPLAY_CONFIG) == null) {
GHOSTS.get(player).saveBestTime();
GHOSTS.get(player).saveToDB();
needsSave = false;
}
String jumpAndRunTimeConfig = UserConfig.getConfig(player.getUniqueId(), JUMP_AND_RUN_CONFIG);
if (jumpAndRunTimeConfig == null) {
UserConfig.updatePlayerConfig(player.getUniqueId(), JUMP_AND_RUN_CONFIG, time + "");
if (needsSave) {
GHOSTS.get(player).saveBestTime();
GHOSTS.get(player).saveToDB();
}
} else {
long jumpAndRunTime = Long.parseLong(jumpAndRunTimeConfig);
if (time < jumpAndRunTime) {
@ -162,10 +139,6 @@ public class JumpAndRun extends BasicListener {
String parsed = format.format(new Date(jumpAndRunTime - time));
LobbySystem.getMessage().sendPrefixless("JUMP_AND_RUN_PERSONAL_BEST", player, parsed);
UserConfig.updatePlayerConfig(player.getUniqueId(), JUMP_AND_RUN_CONFIG, time + "");
if (needsSave) {
GHOSTS.get(player).saveBestTime();
GHOSTS.get(player).saveToDB();
}
LEADERBOARD.update();
}
}
@ -174,7 +147,6 @@ public class JumpAndRun extends BasicListener {
@EventHandler
public void onPlayerJoin(PlayerJoinEvent event) {
Player player = event.getPlayer();
GHOSTS.put(player, new GhostJumpAndRun(player));
}
@EventHandler
@ -185,7 +157,6 @@ public class JumpAndRun extends BasicListener {
FAILS.remove(player);
CLICKED.remove(player);
CLICKED_COUNT.remove(player);
GHOSTS.remove(player);
}
@EventHandler