fix 50%
This commit is contained in:
parent
547fe6d9bb
commit
8705cad578
118 changed files with 2714 additions and 4761 deletions
|
|
@ -1,5 +1,9 @@
|
|||
package dev.loki.loparkour.player;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
import dev.lolib.scheduler.Scheduler;
|
||||
|
||||
import com.google.gson.annotations.Expose;
|
||||
import dev.loki.loparkour.LoParkour;
|
||||
import dev.loki.loparkour.config.Config;
|
||||
|
|
@ -13,10 +17,8 @@ import dev.loki.loparkour.player.data.PreviousData;
|
|||
import dev.loki.loparkour.session.Session;
|
||||
import dev.loki.loparkour.storage.Storage;
|
||||
import dev.loki.loparkour.world.Divider;
|
||||
import dev.efnilite.vilib.inventory.Menu;
|
||||
import dev.efnilite.vilib.inventory.item.Item;
|
||||
import dev.efnilite.vilib.util.Colls;
|
||||
import dev.efnilite.vilib.util.Task;
|
||||
|
||||
import dev.lolib.scheduler.Scheduler;
|
||||
import org.bukkit.GameMode;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.entity.Player;
|
||||
|
|
@ -190,7 +192,7 @@ public class ParkourPlayer extends ParkourUser {
|
|||
Runnable write = () -> Storage.writePlayer(this);
|
||||
|
||||
if (async) {
|
||||
Task.create(LoParkour.getPlugin()).async().execute(write).run();
|
||||
Scheduler.get(LoParkour.getPlugin()).runAsync(write);
|
||||
} else {
|
||||
write.run();
|
||||
}
|
||||
|
|
@ -207,12 +209,12 @@ public class ParkourPlayer extends ParkourUser {
|
|||
|
||||
// -= Inventory =-
|
||||
if (Config.CONFIG.getBoolean("options.inventory-handling")) {
|
||||
Task.create(LoParkour.getPlugin()).delay(5).execute(() -> {
|
||||
Scheduler.get(LoParkour.getPlugin()).runLater(() -> {
|
||||
LoParkour.log("Setting up inventory for player %s".formatted(player.getName()));
|
||||
|
||||
player.getInventory().clear();
|
||||
|
||||
List<Item> items = new ArrayList<>();
|
||||
List<dev.loki.loparkour.util.Item> items = new ArrayList<>();
|
||||
|
||||
if (ParkourOption.PLAY.mayPerform(player)) items.add(Locales.getItem(locale, "play.item"));
|
||||
if (ParkourOption.COMMUNITY.mayPerform(player)) items.add(Locales.getItem(locale, "community.item"));
|
||||
|
|
@ -221,9 +223,11 @@ public class ParkourPlayer extends ParkourUser {
|
|||
|
||||
if (ParkourOption.QUIT.mayPerform(player)) items.add(Locales.getItem(locale, "other.quit"));
|
||||
|
||||
List<Integer> slots = Menu.getEvenlyDistributedSlots(items.size());
|
||||
Colls.range(0, items.size()).forEach(idx -> player.getInventory().setItem(slots.get(idx), items.get(idx).build()));
|
||||
}).run();
|
||||
List<Integer> slots = getEvenlyDistributedSlots(items.size());
|
||||
for (int idx = 0; idx < items.size(); idx++) {
|
||||
player.getInventory().setItem(slots.get(idx), items.get(idx).build());
|
||||
}
|
||||
}, 5);
|
||||
} else {
|
||||
sendTranslated("other.customize");
|
||||
}
|
||||
|
|
@ -232,4 +236,13 @@ public class ParkourPlayer extends ParkourUser {
|
|||
public record OptionContainer(ParkourOption option, BiConsumer<ParkourPlayer, String> consumer) {
|
||||
|
||||
}
|
||||
|
||||
private List<Integer> getEvenlyDistributedSlots(int count) {
|
||||
List<Integer> slots = new ArrayList<>();
|
||||
int[] positions = {10, 11, 12, 13, 14, 15, 16, 19, 20, 21, 22, 23, 24, 25};
|
||||
for (int i = 0; i < Math.min(count, positions.length); i++) {
|
||||
slots.add(positions[i]);
|
||||
}
|
||||
return slots;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,17 +1,19 @@
|
|||
package dev.loki.loparkour.player;
|
||||
|
||||
import dev.lolib.scheduler.Scheduler;
|
||||
|
||||
import dev.loki.loparkour.LoParkour;
|
||||
import dev.loki.loparkour.api.event.ParkourSpectateEvent;
|
||||
import dev.loki.loparkour.config.Locales;
|
||||
import dev.loki.loparkour.player.data.PreviousData;
|
||||
import dev.loki.loparkour.session.Session;
|
||||
import dev.efnilite.vilib.util.Strings;
|
||||
import dev.efnilite.vilib.util.Task;
|
||||
import dev.loki.loparkour.util.ColorUtil;
|
||||
import dev.lolib.scheduler.Scheduler;
|
||||
import net.md_5.bungee.api.ChatMessageType;
|
||||
import net.md_5.bungee.api.chat.TextComponent;
|
||||
import org.bukkit.GameMode;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.scheduler.BukkitTask;
|
||||
import dev.lolib.scheduler.ScheduledTask;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
|
|
@ -24,7 +26,7 @@ import java.util.Comparator;
|
|||
*/
|
||||
public class ParkourSpectator extends ParkourUser {
|
||||
|
||||
private final BukkitTask closestChecker;
|
||||
private final dev.lolib.scheduler.ScheduledTask closestChecker;
|
||||
/**
|
||||
* The closest player.
|
||||
*/
|
||||
|
|
@ -38,9 +40,7 @@ public class ParkourSpectator extends ParkourUser {
|
|||
|
||||
new ParkourSpectateEvent(this).call();
|
||||
|
||||
Task.create(LoParkour.getPlugin())
|
||||
.delay(1)
|
||||
.execute(() -> {
|
||||
Scheduler.get(LoParkour.getPlugin()).runLater(() -> {
|
||||
teleport(closest.getLocation());
|
||||
|
||||
sendTranslated("play.spectator.join");
|
||||
|
|
@ -52,14 +52,9 @@ public class ParkourSpectator extends ParkourUser {
|
|||
player.setInvisible(true);
|
||||
player.setCollidable(false);
|
||||
}
|
||||
})
|
||||
.run();
|
||||
}, 1);
|
||||
|
||||
closestChecker = Task.create(LoParkour.getPlugin())
|
||||
.async()
|
||||
.delay(1)
|
||||
.repeat(10)
|
||||
.execute(() -> {
|
||||
closestChecker = Scheduler.get(LoParkour.getPlugin()).runTimerAsync(() -> {
|
||||
if (session.getPlayers().isEmpty()) {
|
||||
return;
|
||||
}
|
||||
|
|
@ -67,15 +62,14 @@ public class ParkourSpectator extends ParkourUser {
|
|||
closest = session.getPlayers().stream()
|
||||
.min(Comparator.comparing(other -> other.getLocation().distanceSquared(player.getLocation()))) // x or x^2 doesn't matter in getting smallest
|
||||
.orElse(closest);
|
||||
})
|
||||
.run();
|
||||
}, 1, 10);
|
||||
}
|
||||
|
||||
/**
|
||||
* Updates the spectator's action bar, scoreboard and checks distance.
|
||||
*/
|
||||
public void update() {
|
||||
player.spigot().sendMessage(ChatMessageType.ACTION_BAR, TextComponent.fromLegacyText(Strings.colour(Locales.getString(player, "play.spectator.action_bar"))));
|
||||
player.spigot().sendMessage(ChatMessageType.ACTION_BAR, TextComponent.fromLegacyText(ColorUtil.color(Locales.getString(player, "play.spectator.action_bar"))));
|
||||
player.setGameMode(GameMode.SPECTATOR);
|
||||
updateScoreboard(session.generator);
|
||||
|
||||
|
|
|
|||
|
|
@ -19,8 +19,10 @@ import dev.loki.loparkour.player.data.PreviousData;
|
|||
import dev.loki.loparkour.session.Session;
|
||||
import dev.loki.loparkour.storage.Storage;
|
||||
import dev.loki.loparkour.world.Divider;
|
||||
import dev.efnilite.vilib.fastboard.FastBoard;
|
||||
import dev.efnilite.vilib.util.Strings;
|
||||
import org.bukkit.scoreboard.Scoreboard;
|
||||
import org.bukkit.scoreboard.Objective;
|
||||
import org.bukkit.scoreboard.DisplaySlot;
|
||||
import dev.loki.loparkour.util.ColorUtil;
|
||||
import io.papermc.lib.PaperLib;
|
||||
import me.clip.placeholderapi.PlaceholderAPI;
|
||||
import org.bukkit.Bukkit;
|
||||
|
|
@ -110,11 +112,13 @@ public abstract class ParkourUser {
|
|||
try {
|
||||
user.unregister();
|
||||
|
||||
if (user.board != null && !user.board.isDeleted()) {
|
||||
user.board.delete();
|
||||
}
|
||||
// TODO: Implement scoreboard deletion with LoLib
|
||||
// if (user.board != null) {
|
||||
// user.board.delete();
|
||||
// }
|
||||
} catch (Exception ex) { // safeguard to prevent people from losing data
|
||||
LoParkour.logging().stack("Error while trying to make player %s leave".formatted(user.getName()), ex);
|
||||
LoParkour.getPlugin().getLogger().log(java.util.logging.Level.SEVERE,
|
||||
"Error while trying to make player " + user.getName() + " leave", ex);
|
||||
user.send("<red><bold>There was an error while trying to handle leaving.");
|
||||
}
|
||||
|
||||
|
|
@ -129,7 +133,7 @@ public abstract class ParkourUser {
|
|||
|
||||
Mode mode = user.session.generator.getMode();
|
||||
if (mode == null) {
|
||||
LoParkour.logging().error("Mode is null for %s".formatted(user.getName()));
|
||||
LoParkour.getPlugin().getLogger().severe("Mode is null for %s".formatted(user.getName()));
|
||||
mode = Modes.DEFAULT;
|
||||
}
|
||||
|
||||
|
|
@ -148,7 +152,7 @@ public abstract class ParkourUser {
|
|||
try {
|
||||
player.sendPluginMessage(LoParkour.getPlugin(), "BungeeCord", out.toByteArray());
|
||||
} catch (ChannelNotRegisteredException ex) {
|
||||
LoParkour.logging().stack("Error while trying to send %s to server %s. This server is not registered.".formatted(player.getName(), server), ex);
|
||||
LoParkour.getPlugin().getLogger().severe("Error while trying to send %s to server %s. This server is not registered.".formatted(player.getName(), server) + " - " + ex.getMessage());
|
||||
player.kickPlayer("Couldn't move you to %s. Please rejoin.".formatted(server));
|
||||
}
|
||||
}
|
||||
|
|
@ -190,7 +194,7 @@ public abstract class ParkourUser {
|
|||
/**
|
||||
* This user's scoreboard
|
||||
*/
|
||||
public FastBoard board;
|
||||
public Scoreboard board;
|
||||
|
||||
/**
|
||||
* This user's PreviousData
|
||||
|
|
@ -230,7 +234,7 @@ public abstract class ParkourUser {
|
|||
this.previousData = previousData == null ? new PreviousData(player) : previousData;
|
||||
|
||||
if (Boolean.parseBoolean(Option.OPTIONS_DEFAULTS.get(ParkourOption.SCOREBOARD))) {
|
||||
this.board = new FastBoard(player);
|
||||
this.board = Bukkit.getScoreboardManager().getNewScoreboard();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -254,7 +258,7 @@ public abstract class ParkourUser {
|
|||
* @param message The message
|
||||
*/
|
||||
public void send(String message) {
|
||||
player.sendMessage(Strings.colour(message));
|
||||
player.sendMessage(ColorUtil.color(message));
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -274,7 +278,7 @@ public abstract class ParkourUser {
|
|||
*/
|
||||
public void updateScoreboard(ParkourGenerator generator) {
|
||||
// board can be null a few ticks after on player leave
|
||||
if (board == null || board.isDeleted() || !generator.profile.get("showScoreboard").asBoolean()) {
|
||||
if (board == null || false || !generator.profile.get("showScoreboard").asBoolean()) {
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
@ -285,8 +289,8 @@ public abstract class ParkourUser {
|
|||
top = new Score("?", "?", "?", 0);
|
||||
}
|
||||
|
||||
board.updateTitle(replace(Locales.getString(locale, "scoreboard.title"), top, high, generator));
|
||||
board.updateLines(replace(Locales.getStringList(locale, "scoreboard.lines"), top, high, generator));
|
||||
// board.updateTitle(replace(Locales.getString(locale, "scoreboard.title"), top, high, generator));
|
||||
// board.updateLines(replace(Locales.getStringList(locale, "scoreboard.lines"), top, high, generator));
|
||||
}
|
||||
|
||||
private List<String> replace(List<String> s, Score top, Score high, ParkourGenerator generator) {
|
||||
|
|
@ -294,7 +298,7 @@ public abstract class ParkourUser {
|
|||
}
|
||||
|
||||
private String replace(String s, Score top, Score high, ParkourGenerator generator) {
|
||||
return Strings.colour(translate(player, s)
|
||||
return ColorUtil.color(translate(player, s)
|
||||
.replace("%score%", Integer.toString(generator.score))
|
||||
.replace("%time%", generator.getFormattedTime())
|
||||
.replace("%difficulty%", Double.toString(generator.getDifficultyScore()))
|
||||
|
|
|
|||
|
|
@ -1,8 +1,10 @@
|
|||
package dev.loki.loparkour.player.data;
|
||||
|
||||
import dev.lolib.scheduler.Scheduler;
|
||||
|
||||
import dev.loki.loparkour.LoParkour;
|
||||
import dev.loki.loparkour.config.Config;
|
||||
import dev.efnilite.vilib.util.Task;
|
||||
import dev.lolib.scheduler.Scheduler;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.inventory.Inventory;
|
||||
|
|
@ -46,7 +48,7 @@ public class InventoryData {
|
|||
return;
|
||||
}
|
||||
|
||||
Task.create(LoParkour.getPlugin()).async().execute(() -> loadFile(onFinish)).run();
|
||||
Scheduler.get(LoParkour.getPlugin()).runAsync(() -> loadFile(onFinish));
|
||||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
|
|
@ -56,7 +58,7 @@ public class InventoryData {
|
|||
|
||||
onFinish.accept(this);
|
||||
} catch (IOException | ClassNotFoundException ex) {
|
||||
LoParkour.logging().stack("Error while reading inventory of %s from file %s".formatted(player.getName(), file.getName()), ex);
|
||||
LoParkour.getPlugin().getLogger().severe("Error while reading inventory of %s from file %s".formatted(player.getName(), file.getName()) + " - " + ex.getMessage());
|
||||
onFinish.accept(null);
|
||||
}
|
||||
}
|
||||
|
|
@ -84,7 +86,7 @@ public class InventoryData {
|
|||
}
|
||||
|
||||
if (toFile) {
|
||||
Task.create(LoParkour.getPlugin()).async().execute(this::saveFile).run();
|
||||
Scheduler.get(LoParkour.getPlugin()).runAsync(this::saveFile);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -93,14 +95,14 @@ public class InventoryData {
|
|||
file.getParentFile().mkdirs();
|
||||
file.createNewFile();
|
||||
} catch (IOException ex) {
|
||||
LoParkour.logging().stack("Error while creating file to save inventory of %s to file %s".formatted(player.getName(), file.getName()), ex);
|
||||
LoParkour.getPlugin().getLogger().severe("Error while creating file to save inventory of %s to file %s".formatted(player.getName(), file.getName()) + " - " + ex.getMessage());
|
||||
}
|
||||
|
||||
try (ObjectOutputStream stream = new BukkitObjectOutputStream(new BufferedOutputStream(new FileOutputStream(file)))) {
|
||||
stream.writeObject(items);
|
||||
stream.flush();
|
||||
} catch (IOException ex) {
|
||||
LoParkour.logging().stack("Error while saving inventory of %s to file %s".formatted(player.getName(), file.getName()), ex);
|
||||
LoParkour.getPlugin().getLogger().severe("Error while saving inventory of %s to file %s".formatted(player.getName(), file.getName()) + " - " + ex.getMessage());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -86,7 +86,7 @@ public class PreviousData {
|
|||
player.setVelocity(new Vector(0, 0, 0));
|
||||
player.setFallDistance(0f);
|
||||
} catch (Exception ex) { // not the best way to do this... too bad!
|
||||
LoParkour.logging().stack("Error while recovering stats of %s".formatted(player.getName()), ex);
|
||||
LoParkour.getPlugin().getLogger().severe("Error while recovering stats of %s".formatted(player.getName()) + " - " + ex.getMessage());
|
||||
}
|
||||
|
||||
if (inventoryData != null) {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue