From c4f64365fa418c1397a4658ed8f8a7976f5b5aa1 Mon Sep 17 00:00:00 2001
From: Efnilite <35348263+Efnilite@users.noreply.github.com>
Date: Sat, 25 May 2024 11:50:53 +0200
Subject: [PATCH 01/19] Oops, fixed <1.20.5 support
---
CHANGES.md | 4 +++-
pom.xml | 2 +-
src/main/java/dev/efnilite/ip/player/ParkourPlayer.java | 6 ++++--
src/main/resources/plugin.yml | 2 +-
4 files changed, 9 insertions(+), 5 deletions(-)
diff --git a/CHANGES.md b/CHANGES.md
index c6f620c6..1755d273 100644
--- a/CHANGES.md
+++ b/CHANGES.md
@@ -2,6 +2,8 @@
- Running Multiverse with IP now does not require VoidGen
- Improved responsiveness of parkour and scoreboard
+- Added update checker
- Fixed leaderboards sorting being wrong
- Fixed placeholders returning wrong values
-- Fixed vague sorting locale in leaderboard menu
\ No newline at end of file
+- Fixed vague sorting locale in leaderboard menu
+- Fixed MySQL causing problems in some locales
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
index 5a79f432..7ff23b4b 100644
--- a/pom.xml
+++ b/pom.xml
@@ -6,7 +6,7 @@
dev.efnilite
IP
- 5.2.4
+ 5.2.5
17
diff --git a/src/main/java/dev/efnilite/ip/player/ParkourPlayer.java b/src/main/java/dev/efnilite/ip/player/ParkourPlayer.java
index 8e2ee126..9dba183c 100644
--- a/src/main/java/dev/efnilite/ip/player/ParkourPlayer.java
+++ b/src/main/java/dev/efnilite/ip/player/ParkourPlayer.java
@@ -19,8 +19,8 @@
import dev.efnilite.vilib.util.Task;
import org.bukkit.GameMode;
import org.bukkit.Location;
-import org.bukkit.Registry;
import org.bukkit.entity.Player;
+import org.bukkit.potion.PotionEffectType;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
@@ -87,7 +87,9 @@ public ParkourPlayer(@NotNull Player player, @NotNull Session session, @Nullable
player.setAllowFlight(false);
player.setInvisible(false);
- Registry.EFFECT.stream().forEach(player::removePotionEffect);
+ for (var effect : PotionEffectType.values()) {
+ player.removePotionEffect(effect);
+ }
}
private static boolean parseBoolean(String string) {
diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml
index 255ab8cf..027dd9c2 100644
--- a/src/main/resources/plugin.yml
+++ b/src/main/resources/plugin.yml
@@ -1,7 +1,7 @@
name: 'IP'
description: 'Infinitely automatically generating parkour plugin.'
author: Efnilite
-version: 5.2.4
+version: 5.2.5
api-version: 1.16
main: dev.efnilite.ip.IP
softdepend: [floodgate, Vault, PlaceholderAPI, Multiverse-Core, VoidGen]
From 43fafc876761eb4170d65a12c691653e43ae1fbd Mon Sep 17 00:00:00 2001
From: Efnilite <35348263+Efnilite@users.noreply.github.com>
Date: Wed, 29 May 2024 19:20:35 +0200
Subject: [PATCH 02/19] Fixed checking for existing generator error
---
src/main/java/dev/efnilite/ip/mode/DefaultMode.java | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/main/java/dev/efnilite/ip/mode/DefaultMode.java b/src/main/java/dev/efnilite/ip/mode/DefaultMode.java
index 86b20847..37b77c95 100644
--- a/src/main/java/dev/efnilite/ip/mode/DefaultMode.java
+++ b/src/main/java/dev/efnilite/ip/mode/DefaultMode.java
@@ -44,9 +44,10 @@ public void create(Player player) {
}
ParkourPlayer pp = ParkourPlayer.getPlayer(player);
- if (pp != null && pp.session.generator.getMode() instanceof DefaultMode) {
+ if (pp != null && pp.session.generator != null && pp.session.generator.getMode() instanceof DefaultMode) {
return;
}
+
player.closeInventory();
Session.create(ParkourGenerator::new, null, null, player);
From 670a438664a8f6d011adaf244f829fd0d9250351 Mon Sep 17 00:00:00 2001
From: Efnilite <35348263+Efnilite@users.noreply.github.com>
Date: Wed, 26 Jun 2024 16:49:13 +0200
Subject: [PATCH 03/19] Improved Style docs
---
src/main/java/dev/efnilite/ip/style/Style.java | 11 +++++++++++
1 file changed, 11 insertions(+)
diff --git a/src/main/java/dev/efnilite/ip/style/Style.java b/src/main/java/dev/efnilite/ip/style/Style.java
index 7be5eb4a..8a8db9a8 100644
--- a/src/main/java/dev/efnilite/ip/style/Style.java
+++ b/src/main/java/dev/efnilite/ip/style/Style.java
@@ -2,10 +2,21 @@
import org.bukkit.Material;
+/**
+ * Represents a parkour style.
+ */
public interface Style {
+ /**
+ * The material to be used for the next block.
+ * @return A material.
+ */
Material getNext();
+ /**
+ * The name of the style.
+ * @return A name.
+ */
String getName();
}
From af39bca9767224739fdc011db18fae2b1a1332a7 Mon Sep 17 00:00:00 2001
From: Efnilite <35348263+Efnilite@users.noreply.github.com>
Date: Wed, 26 Jun 2024 16:52:58 +0200
Subject: [PATCH 04/19] Renamed WorldManager -> World
---
src/main/java/dev/efnilite/ip/Events.java | 10 +++++-----
src/main/java/dev/efnilite/ip/IP.java | 6 +++---
src/main/java/dev/efnilite/ip/world/Divider.java | 2 +-
.../ip/world/{WorldManager.java => World.java} | 8 ++++----
4 files changed, 13 insertions(+), 13 deletions(-)
rename src/main/java/dev/efnilite/ip/world/{WorldManager.java => World.java} (95%)
diff --git a/src/main/java/dev/efnilite/ip/Events.java b/src/main/java/dev/efnilite/ip/Events.java
index 4e9d078f..b9f8dd58 100644
--- a/src/main/java/dev/efnilite/ip/Events.java
+++ b/src/main/java/dev/efnilite/ip/Events.java
@@ -9,7 +9,7 @@
import dev.efnilite.ip.player.ParkourPlayer;
import dev.efnilite.ip.player.ParkourUser;
import dev.efnilite.ip.session.Session;
-import dev.efnilite.ip.world.WorldManager;
+import dev.efnilite.ip.world.World;
import dev.efnilite.vilib.event.EventWatcher;
import dev.efnilite.vilib.particle.ParticleData;
import dev.efnilite.vilib.particle.Particles;
@@ -81,11 +81,11 @@ public void join(PlayerJoinEvent event) {
return;
}
- if (!player.getWorld().equals(WorldManager.getWorld())) {
+ if (!player.getWorld().equals(World.getWorld())) {
return;
}
- World fallback = Bukkit.getWorld(Config.CONFIG.getString("world.fall-back"));
+ org.bukkit.World fallback = Bukkit.getWorld(Config.CONFIG.getString("world.fall-back"));
if (fallback != null) {
PaperLib.teleportAsync(player, fallback.getSpawnLocation(), PlayerTeleportEvent.TeleportCause.PLUGIN);
@@ -93,7 +93,7 @@ public void join(PlayerJoinEvent event) {
}
PaperLib.teleportAsync(player, Bukkit.getWorlds().stream()
- .filter(world -> !world.equals(WorldManager.getWorld()))
+ .filter(world -> !world.equals(World.getWorld()))
.findAny()
.orElseThrow(() -> new NoSuchElementException("No fallback world was found!"))
.getSpawnLocation());
@@ -234,7 +234,7 @@ private ItemStack getHeldItem(Player player) {
public void switchWorld(PlayerChangedWorldEvent event) {
Player player = event.getPlayer();
ParkourUser user = ParkourUser.getUser(player);
- World parkour = WorldManager.getWorld();
+ org.bukkit.World parkour = World.getWorld();
boolean isAdmin = Config.CONFIG.getBoolean("permissions.enabled") ? ParkourOption.ADMIN.mayPerform(player) : player.isOp();
diff --git a/src/main/java/dev/efnilite/ip/IP.java b/src/main/java/dev/efnilite/ip/IP.java
index a8ab5552..7efaa3ff 100644
--- a/src/main/java/dev/efnilite/ip/IP.java
+++ b/src/main/java/dev/efnilite/ip/IP.java
@@ -12,7 +12,7 @@
import dev.efnilite.ip.player.ParkourUser;
import dev.efnilite.ip.reward.Rewards;
import dev.efnilite.ip.storage.Storage;
-import dev.efnilite.ip.world.WorldManager;
+import dev.efnilite.ip.world.World;
import dev.efnilite.vilib.ViPlugin;
import dev.efnilite.vilib.bstats.bukkit.Metrics;
import dev.efnilite.vilib.bstats.charts.SimplePie;
@@ -115,7 +115,7 @@ public void enable() {
// ----- Worlds -----
if (Config.CONFIG.getBoolean("joining")) {
- WorldManager.create();
+ World.create();
}
// ----- Events -----
@@ -149,7 +149,7 @@ public void disable() {
Modes.DEFAULT.getLeaderboard().write(false);
Storage.close();
- WorldManager.delete();
+ World.delete();
} catch (Throwable ignored) {
}
diff --git a/src/main/java/dev/efnilite/ip/world/Divider.java b/src/main/java/dev/efnilite/ip/world/Divider.java
index 378118be..38a44b0d 100644
--- a/src/main/java/dev/efnilite/ip/world/Divider.java
+++ b/src/main/java/dev/efnilite/ip/world/Divider.java
@@ -63,7 +63,7 @@ public static void remove(Session session) {
public static Location toLocation(Session session) {
int[] xz = spiralAt(sections.get(session));
- return new Location(WorldManager.getWorld(),
+ return new Location(World.getWorld(),
xz[0] * Option.BORDER_SIZE,
(Option.MAX_Y + Option.MIN_Y) / 2.0,
xz[1] * Option.BORDER_SIZE);
diff --git a/src/main/java/dev/efnilite/ip/world/WorldManager.java b/src/main/java/dev/efnilite/ip/world/World.java
similarity index 95%
rename from src/main/java/dev/efnilite/ip/world/WorldManager.java
rename to src/main/java/dev/efnilite/ip/world/World.java
index 726c8767..b9a648de 100644
--- a/src/main/java/dev/efnilite/ip/world/WorldManager.java
+++ b/src/main/java/dev/efnilite/ip/world/World.java
@@ -11,10 +11,10 @@
import java.util.Comparator;
import java.util.stream.Stream;
-public class WorldManager {
+public class World {
private static String name;
- private static World world;
+ private static org.bukkit.World world;
/**
* Creates a new world and sets all according settings in it.
@@ -48,7 +48,7 @@ private static void createWorld() {
.generateStructures(false)
.type(WorldType.NORMAL)
.generator(VoidGenerator.getGenerator()) // to fix No keys in MapLayer etc.
- .environment(World.Environment.NORMAL);
+ .environment(org.bukkit.World.Environment.NORMAL);
world = Bukkit.createWorld(creator);
} catch (Exception ex) {
@@ -120,7 +120,7 @@ public static String getName() {
/**
* @return the Bukkit world wherein IP is currently active.
*/
- public static World getWorld() {
+ public static org.bukkit.World getWorld() {
return world;
}
}
\ No newline at end of file
From 883c1b039c1b74687c878840b6d480ebe466f848 Mon Sep 17 00:00:00 2001
From: Efnilite <35348263+Efnilite@users.noreply.github.com>
Date: Wed, 3 Jul 2024 12:57:12 +0200
Subject: [PATCH 05/19] Fixed some reduced angle generations requiring jumps
---
src/main/java/dev/efnilite/ip/generator/ParkourGenerator.java | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/main/java/dev/efnilite/ip/generator/ParkourGenerator.java b/src/main/java/dev/efnilite/ip/generator/ParkourGenerator.java
index 115a1fd2..a6468307 100644
--- a/src/main/java/dev/efnilite/ip/generator/ParkourGenerator.java
+++ b/src/main/java/dev/efnilite/ip/generator/ParkourGenerator.java
@@ -318,7 +318,7 @@ protected Block selectNext(Block current, int distance, int height) {
}
double mean = 0;
- double standardDeviation = generatorOptions.contains(GeneratorOption.REDUCE_RANDOM_BLOCK_SELECTION_ANGLE) ? 0.6 : 1;
+ double standardDeviation = generatorOptions.contains(GeneratorOption.REDUCE_RANDOM_BLOCK_SELECTION_ANGLE) ? 0.5 : 1;
int randomOffset = new JumpOffsetGenerator(height, distance).getRandomOffset(mean, standardDeviation);
From 0f893b3564803d9ddf5502105fe5a929fcfc88fd Mon Sep 17 00:00:00 2001
From: Efnilite <35348263+Efnilite@users.noreply.github.com>
Date: Sat, 13 Jul 2024 20:35:24 +0200
Subject: [PATCH 06/19] Fixed kicking
---
src/main/java/dev/efnilite/ip/Events.java | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/src/main/java/dev/efnilite/ip/Events.java b/src/main/java/dev/efnilite/ip/Events.java
index b9f8dd58..9b6d9312 100644
--- a/src/main/java/dev/efnilite/ip/Events.java
+++ b/src/main/java/dev/efnilite/ip/Events.java
@@ -239,7 +239,10 @@ public void switchWorld(PlayerChangedWorldEvent event) {
boolean isAdmin = Config.CONFIG.getBoolean("permissions.enabled") ? ParkourOption.ADMIN.mayPerform(player) : player.isOp();
if (player.getWorld() == parkour && user == null && !isAdmin && player.getTicksLived() > 20) {
- player.kickPlayer("You can't enter the parkour world by teleporting!");
+ Bukkit.getWorlds().stream()
+ .filter(world -> !world.equals(parkour))
+ .findAny()
+ .ifPresent(world -> PaperLib.teleportAsync(player, world.getSpawnLocation()));
return;
}
From bb2a2fc50c86052aa4b9ff2617780c9916a22da0 Mon Sep 17 00:00:00 2001
From: Efnilite <35348263+Efnilite@users.noreply.github.com>
Date: Tue, 16 Jul 2024 20:17:46 +0200
Subject: [PATCH 07/19] Fixed sessions not using old locations for 1 player
---
src/main/java/dev/efnilite/ip/session/Session.java | 9 ++++++---
1 file changed, 6 insertions(+), 3 deletions(-)
diff --git a/src/main/java/dev/efnilite/ip/session/Session.java b/src/main/java/dev/efnilite/ip/session/Session.java
index 61c60db6..1414d28c 100644
--- a/src/main/java/dev/efnilite/ip/session/Session.java
+++ b/src/main/java/dev/efnilite/ip/session/Session.java
@@ -66,11 +66,13 @@ public static Session create(Function generatorFuncti
Function isAcceptingPlayers,
Function isAcceptingSpectators,
Player... players) {
- IP.log("Creating session with players %s".formatted(Arrays.toString(players)));
+ IP.log("Creating session");
- Session session = new Session();
+ if (players != null) {
+ IP.log("Players in session: %s".formatted(Arrays.stream(players).map(Player::getName).toList()));
+ }
- var location = Divider.add(session);
+ Session session = new Session();
if (isAcceptingPlayers != null) session.isAcceptingPlayers = isAcceptingPlayers;
if (isAcceptingSpectators != null) session.isAcceptingSpectators = isAcceptingSpectators;
@@ -90,6 +92,7 @@ public static Session create(Function generatorFuncti
pps.forEach(p -> p.updateGeneratorSettings(session.generator));
}
+ var location = Divider.add(session);
session.generator.island.build(location);
return session;
From 0911cde3fea9d89e050fb6ea904d3a8d900d074f Mon Sep 17 00:00:00 2001
From: Efnilite <35348263+Efnilite@users.noreply.github.com>
Date: Tue, 16 Jul 2024 20:50:12 +0200
Subject: [PATCH 08/19] reduce divider visibility
---
src/main/java/dev/efnilite/ip/session/Session.java | 14 ++++++++++++--
src/main/java/dev/efnilite/ip/world/Divider.java | 2 +-
2 files changed, 13 insertions(+), 3 deletions(-)
diff --git a/src/main/java/dev/efnilite/ip/session/Session.java b/src/main/java/dev/efnilite/ip/session/Session.java
index 1414d28c..57748014 100644
--- a/src/main/java/dev/efnilite/ip/session/Session.java
+++ b/src/main/java/dev/efnilite/ip/session/Session.java
@@ -7,6 +7,7 @@
import dev.efnilite.ip.player.ParkourSpectator;
import dev.efnilite.ip.player.ParkourUser;
import dev.efnilite.ip.world.Divider;
+import org.bukkit.Location;
import org.bukkit.entity.Player;
import org.jetbrains.annotations.NotNull;
@@ -23,6 +24,8 @@
*/
public class Session {
+ private Location location;
+
/**
* List of muted users.
*/
@@ -86,14 +89,14 @@ public static Session create(Function generatorFuncti
}
}
+ session.location = Divider.add(session);
session.generator = generatorFunction.apply(session);
if (players != null) {
pps.forEach(p -> p.updateGeneratorSettings(session.generator));
}
- var location = Divider.add(session);
- session.generator.island.build(location);
+ session.generator.island.build(session.location);
return session;
}
@@ -201,6 +204,13 @@ public List getUsers() {
return new ArrayList<>(users.values());
}
+ /**
+ * @return the spawn location for this {@link Session}.
+ */
+ public Location getSpawnLocation() {
+ return location.clone();
+ }
+
/**
* Toggles mute for the specified user.
*
diff --git a/src/main/java/dev/efnilite/ip/world/Divider.java b/src/main/java/dev/efnilite/ip/world/Divider.java
index 38a44b0d..dbe2cad6 100644
--- a/src/main/java/dev/efnilite/ip/world/Divider.java
+++ b/src/main/java/dev/efnilite/ip/world/Divider.java
@@ -60,7 +60,7 @@ public static void remove(Session session) {
* @param session The session.
* @return The location at the center of section n.
*/
- public static Location toLocation(Session session) {
+ private static Location toLocation(Session session) {
int[] xz = spiralAt(sections.get(session));
return new Location(World.getWorld(),
From 8b7befb43220d6df7d8c15ca624b881ff7948cfb Mon Sep 17 00:00:00 2001
From: Efnilite <35348263+Efnilite@users.noreply.github.com>
Date: Tue, 16 Jul 2024 21:29:39 +0200
Subject: [PATCH 09/19] reduce session visibility
---
src/main/java/dev/efnilite/ip/Events.java | 2 +-
.../dev/efnilite/ip/menu/lobby/LobbyMenu.java | 8 +--
.../ip/menu/lobby/PlayerManagementMenu.java | 2 +-
.../java/dev/efnilite/ip/session/Session.java | 51 ++++++++++++++-----
4 files changed, 45 insertions(+), 18 deletions(-)
diff --git a/src/main/java/dev/efnilite/ip/Events.java b/src/main/java/dev/efnilite/ip/Events.java
index 9b6d9312..c08e573b 100644
--- a/src/main/java/dev/efnilite/ip/Events.java
+++ b/src/main/java/dev/efnilite/ip/Events.java
@@ -60,7 +60,7 @@ public void chat(AsyncPlayerChatEvent event) {
Session session = user.session;
- if (session.muted.contains(user)) {
+ if (session.isMuted(user)) {
return;
}
diff --git a/src/main/java/dev/efnilite/ip/menu/lobby/LobbyMenu.java b/src/main/java/dev/efnilite/ip/menu/lobby/LobbyMenu.java
index 81665928..82b4ead4 100644
--- a/src/main/java/dev/efnilite/ip/menu/lobby/LobbyMenu.java
+++ b/src/main/java/dev/efnilite/ip/menu/lobby/LobbyMenu.java
@@ -29,7 +29,7 @@ public LobbyMenu() {
List values = Locales.getStringList(user.locale, "lobby.visibility.values");
- return new SliderItem().initial(switch (user.session.visibility) {
+ return new SliderItem().initial(switch (user.session.getVisibility()) {
case PUBLIC -> 0;
case ID_ONLY -> 1;
case PRIVATE -> 2;
@@ -37,7 +37,7 @@ public LobbyMenu() {
ParkourUser u = ParkourUser.getUser(event.getPlayer());
if (u != null) {
- u.session.visibility = Session.Visibility.PUBLIC;
+ u.session.setVisibility(Session.Visibility.PUBLIC);
}
return true;
@@ -45,7 +45,7 @@ public LobbyMenu() {
ParkourUser u = ParkourUser.getUser(event.getPlayer());
if (u != null) {
- u.session.visibility = Session.Visibility.ID_ONLY;
+ u.session.setVisibility(Session.Visibility.ID_ONLY);
}
return true;
@@ -53,7 +53,7 @@ public LobbyMenu() {
ParkourUser u = ParkourUser.getUser(event.getPlayer());
if (u != null) {
- u.session.visibility = Session.Visibility.PRIVATE;
+ u.session.setVisibility(Session.Visibility.PRIVATE);
}
return true;
diff --git a/src/main/java/dev/efnilite/ip/menu/lobby/PlayerManagementMenu.java b/src/main/java/dev/efnilite/ip/menu/lobby/PlayerManagementMenu.java
index a98bea54..6d131809 100644
--- a/src/main/java/dev/efnilite/ip/menu/lobby/PlayerManagementMenu.java
+++ b/src/main/java/dev/efnilite/ip/menu/lobby/PlayerManagementMenu.java
@@ -59,7 +59,7 @@ private void add(PagedMenu menu, ParkourUser viewer, Collection use
Item item = Locales.getItem(viewer.locale, "lobby.player_management.head", other.getName());
item.material(Material.PLAYER_HEAD);
- boolean muted = session.muted.contains(other);
+ boolean muted = session.isMuted(other);
List lore = new ArrayList<>();
if (muted) {
diff --git a/src/main/java/dev/efnilite/ip/session/Session.java b/src/main/java/dev/efnilite/ip/session/Session.java
index 57748014..9fee9d54 100644
--- a/src/main/java/dev/efnilite/ip/session/Session.java
+++ b/src/main/java/dev/efnilite/ip/session/Session.java
@@ -24,27 +24,30 @@
*/
public class Session {
- private Location location;
+ /**
+ * The spawn location of this session.
+ */
+ private Location spawnLocation;
/**
- * List of muted users.
+ * The generator.
*/
- public final List muted = new ArrayList<>();
+ public ParkourGenerator generator;
/**
- * List of users.
+ * The visibility of this session. Default public.
*/
- protected final Map users = new HashMap<>();
+ private Visibility visibility = Visibility.PUBLIC;
/**
- * The generator.
+ * List of muted users.
*/
- public ParkourGenerator generator;
+ private final List muted = new ArrayList<>();
/**
- * The visibility of this session. Default public.
+ * List of users.
*/
- public Visibility visibility = Visibility.PUBLIC;
+ private final Map users = new HashMap<>();
/**
* Function that takes the current session and returns whether new players should be accepted.
@@ -89,18 +92,33 @@ public static Session create(Function generatorFuncti
}
}
- session.location = Divider.add(session);
+ session.spawnLocation = Divider.add(session);
session.generator = generatorFunction.apply(session);
if (players != null) {
pps.forEach(p -> p.updateGeneratorSettings(session.generator));
}
- session.generator.island.build(session.location);
+ session.generator.island.build(session.spawnLocation);
return session;
}
+ /**
+ * Sets the visibility of this session.
+ * @param visibility The visibility.
+ */
+ public void setVisibility(Visibility visibility) {
+ this.visibility = visibility;
+ }
+
+ /**
+ * @return The visibility of this session.
+ */
+ public Visibility getVisibility() {
+ return visibility;
+ }
+
/**
* Adds provided players to this session's player list.
*
@@ -207,8 +225,9 @@ public List getUsers() {
/**
* @return the spawn location for this {@link Session}.
*/
+ @SuppressWarnings("unused")
public Location getSpawnLocation() {
- return location.clone();
+ return spawnLocation.clone();
}
/**
@@ -222,6 +241,14 @@ public void toggleMute(@NotNull ParkourUser user) {
}
}
+ /**
+ * @param user The user.
+ * @return True when the user is muted, false if not.
+ */
+ public boolean isMuted(@NotNull ParkourUser user) {
+ return muted.contains(user);
+ }
+
/**
* @return True when players may join this session, false if not.
*/
From 4fa1d97038be4faab5c7bd6facf198a1886752ad Mon Sep 17 00:00:00 2001
From: Efnilite <35348263+Efnilite@users.noreply.github.com>
Date: Tue, 30 Jul 2024 13:34:35 +0200
Subject: [PATCH 10/19] fixed npe
---
.../efnilite/ip/menu/play/SpectatorMenu.java | 41 ++++++++-----------
.../dev/efnilite/ip/player/ParkourUser.java | 3 +-
2 files changed, 19 insertions(+), 25 deletions(-)
diff --git a/src/main/java/dev/efnilite/ip/menu/play/SpectatorMenu.java b/src/main/java/dev/efnilite/ip/menu/play/SpectatorMenu.java
index e41afe72..9576b1a7 100644
--- a/src/main/java/dev/efnilite/ip/menu/play/SpectatorMenu.java
+++ b/src/main/java/dev/efnilite/ip/menu/play/SpectatorMenu.java
@@ -1,17 +1,13 @@
package dev.efnilite.ip.menu.play;
-import dev.efnilite.ip.IP;
import dev.efnilite.ip.config.Locales;
import dev.efnilite.ip.config.Option;
import dev.efnilite.ip.menu.Menus;
import dev.efnilite.ip.menu.ParkourOption;
-import dev.efnilite.ip.mode.Modes;
-import dev.efnilite.ip.player.ParkourPlayer;
import dev.efnilite.ip.player.ParkourUser;
import dev.efnilite.ip.session.Session;
import dev.efnilite.ip.world.Divider;
import dev.efnilite.vilib.inventory.PagedMenu;
-import dev.efnilite.vilib.inventory.item.AutoSliderItem;
import dev.efnilite.vilib.inventory.item.Item;
import dev.efnilite.vilib.inventory.item.MenuItem;
import dev.efnilite.vilib.util.SkullSetter;
@@ -45,33 +41,32 @@ public void open(Player player) {
continue;
}
- AutoSliderItem slider = new AutoSliderItem(1, spectator, IP.getPlugin()).initial(0); // slideritem
+ if (session.getPlayers().isEmpty()) { // weird but possible
+ continue;
+ }
- int index = 0;
- for (ParkourPlayer pp : session.getPlayers()) {
- Item item = Locales.getItem(locale, "play.spectator.head", pp.getName());
- // Player head gathering
- item.material(Material.PLAYER_HEAD);
+ var pp = session.getPlayers().get(0);
- ItemStack stack = item.build(); // Updating meta requires building
- stack.setType(Material.PLAYER_HEAD);
+ Item item = Locales.getItem(locale, "play.spectator.head", pp.getName());
+ // Player head gathering
+ item.material(Material.PLAYER_HEAD);
- // bedrock has no player skull support
- if (!ParkourUser.isBedrockPlayer(player)) {
- if (pp.getName() != null && !pp.getName().startsWith(".")) { // bedrock players' names with geyser start with a .
- SkullMeta meta = (SkullMeta) stack.getItemMeta();
+ ItemStack stack = item.build(); // Updating meta requires building
+ stack.setType(Material.PLAYER_HEAD);
- if (meta != null) {
- SkullSetter.setPlayerHead(pp.player, meta);
- item.meta(meta);
- }
+ // bedrock has no player skull support
+ if (!ParkourUser.isBedrockPlayer(player)) {
+ if (pp.getName() != null && !pp.getName().startsWith(".")) { // bedrock players' names with geyser start with a .
+ SkullMeta meta = (SkullMeta) stack.getItemMeta();
+
+ if (meta != null) {
+ SkullSetter.setPlayerHead(pp.player, meta);
+ item.meta(meta);
}
}
-
- slider.add(index, item, (event) -> Modes.SPECTATOR.create(player, session));
}
- display.add(slider);
+ display.add(item);
}
spectator.displayRows(0, 1)
diff --git a/src/main/java/dev/efnilite/ip/player/ParkourUser.java b/src/main/java/dev/efnilite/ip/player/ParkourUser.java
index 8f3d382a..b4d35300 100644
--- a/src/main/java/dev/efnilite/ip/player/ParkourUser.java
+++ b/src/main/java/dev/efnilite/ip/player/ParkourUser.java
@@ -106,7 +106,6 @@ public static void unregister(@NotNull ParkourUser user, boolean restorePrevious
new ParkourLeaveEvent(user).call();
IP.log("Unregistering player %s, restorePreviousData = %s, kickIfBungee = %s".formatted(user.getName(), restorePreviousData, kickIfBungee));
- Mode mode = user.session.generator.getMode();
try {
user.unregister();
@@ -128,7 +127,7 @@ public static void unregister(@NotNull ParkourUser user, boolean restorePrevious
user.previousData.apply(user.player, urgent);
if (user instanceof ParkourPlayer player) {
- user.previousData.onLeave.forEach(r -> r.execute(player, mode));
+ user.previousData.onLeave.forEach(r -> r.execute(player, user.session.generator.getMode()));
}
}
From fb2f7900f6ca104efebda100bb3bdd76d0255136 Mon Sep 17 00:00:00 2001
From: Efnilite <35348263+Efnilite@users.noreply.github.com>
Date: Wed, 31 Jul 2024 15:57:00 +0200
Subject: [PATCH 11/19] fixed update being synced
---
pom.xml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/pom.xml b/pom.xml
index 7ff23b4b..31c5ee7d 100644
--- a/pom.xml
+++ b/pom.xml
@@ -102,7 +102,7 @@
com.github.Efnilite
vilib
- e0352344d6
+ d6394f7174
compile
From 158024ae1051d60750de4e673a1545f56cfd887d Mon Sep 17 00:00:00 2001
From: Efnilite <35348263+Efnilite@users.noreply.github.com>
Date: Mon, 12 Aug 2024 15:47:46 +0200
Subject: [PATCH 12/19] minor fixes
---
pom.xml | 2 +-
src/main/java/dev/efnilite/ip/storage/StorageSQL.java | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/pom.xml b/pom.xml
index 31c5ee7d..f1d3e967 100644
--- a/pom.xml
+++ b/pom.xml
@@ -102,7 +102,7 @@
com.github.Efnilite
vilib
- d6394f7174
+ dd786231c3
compile
diff --git a/src/main/java/dev/efnilite/ip/storage/StorageSQL.java b/src/main/java/dev/efnilite/ip/storage/StorageSQL.java
index 61514771..e61b577e 100644
--- a/src/main/java/dev/efnilite/ip/storage/StorageSQL.java
+++ b/src/main/java/dev/efnilite/ip/storage/StorageSQL.java
@@ -82,7 +82,7 @@ public static void close() {
}
public static void writeScores(@NotNull String mode, @NotNull Map scores) {
- scores.forEach((uuid, score) -> sendUpdate(
+ new HashMap<>(scores).forEach((uuid, score) -> sendUpdate(
"""
INSERT INTO `%s`
(uuid, name, time, difficulty, score)
From 8bafb34bcb5959b8bd86eab063e588fbfe8eeaf1 Mon Sep 17 00:00:00 2001
From: Efnilite <35348263+Efnilite@users.noreply.github.com>
Date: Mon, 12 Aug 2024 15:56:24 +0200
Subject: [PATCH 13/19] update changes
---
CHANGES.md | 13 ++++++-------
.../java/dev/efnilite/ip/player/ParkourUser.java | 10 +++++++++-
2 files changed, 15 insertions(+), 8 deletions(-)
diff --git a/CHANGES.md b/CHANGES.md
index 1755d273..319117b5 100644
--- a/CHANGES.md
+++ b/CHANGES.md
@@ -1,9 +1,8 @@
**[Infinite Elytra Parkour](https://www.spigotmc.org/resources/115322/) | [Infinite Parkour+](https://www.spigotmc.org/resources/105019/)**
-- Running Multiverse with IP now does not require VoidGen
-- Improved responsiveness of parkour and scoreboard
-- Added update checker
-- Fixed leaderboards sorting being wrong
-- Fixed placeholders returning wrong values
-- Fixed vague sorting locale in leaderboard menu
-- Fixed MySQL causing problems in some locales
\ No newline at end of file
+- Added model id support (thanks **[@wilddip](https://github.com/wilddip)**)
+- Added SkinsRestorer support (thanks **[@TheJCN](https://github.com/TheJCN)**)
+- Fixed Chinese translation (thanks **[@jhqwqmc](https://github.com/jhqwqmc)**)
+- Fixed MySQL error on score saving
+- Fixed being able to take out items in the leaderboard
+- Fixed error on joining spectator
\ No newline at end of file
diff --git a/src/main/java/dev/efnilite/ip/player/ParkourUser.java b/src/main/java/dev/efnilite/ip/player/ParkourUser.java
index b4d35300..0ad8aaf4 100644
--- a/src/main/java/dev/efnilite/ip/player/ParkourUser.java
+++ b/src/main/java/dev/efnilite/ip/player/ParkourUser.java
@@ -14,6 +14,7 @@
import dev.efnilite.ip.leaderboard.Score;
import dev.efnilite.ip.menu.ParkourOption;
import dev.efnilite.ip.mode.Mode;
+import dev.efnilite.ip.mode.Modes;
import dev.efnilite.ip.player.data.PreviousData;
import dev.efnilite.ip.session.Session;
import dev.efnilite.ip.storage.Storage;
@@ -126,8 +127,15 @@ public static void unregister(@NotNull ParkourUser user, boolean restorePrevious
user.previousData.apply(user.player, urgent);
+ Mode mode = user.session.generator.getMode();
+ if (mode == null) {
+ IP.logging().error("Mode is null for %s".formatted(user.getName()));
+ mode = Modes.DEFAULT;
+ }
+
if (user instanceof ParkourPlayer player) {
- user.previousData.onLeave.forEach(r -> r.execute(player, user.session.generator.getMode()));
+ Mode finalMode = mode;
+ user.previousData.onLeave.forEach(r -> r.execute(player, finalMode));
}
}
From cf61b5a2940e4e246859cea51624735f47adf293 Mon Sep 17 00:00:00 2001
From: Efnilite <35348263+Efnilite@users.noreply.github.com>
Date: Mon, 12 Aug 2024 16:04:00 +0200
Subject: [PATCH 14/19] minor fixes
---
.../java/dev/efnilite/ip/generator/ParkourGenerator.java | 5 ++++-
src/main/java/dev/efnilite/ip/hook/HoloHook.java | 4 ++++
src/main/java/dev/efnilite/ip/hook/PAPIHook.java | 7 ++++---
3 files changed, 12 insertions(+), 4 deletions(-)
diff --git a/src/main/java/dev/efnilite/ip/generator/ParkourGenerator.java b/src/main/java/dev/efnilite/ip/generator/ParkourGenerator.java
index a6468307..697fc391 100644
--- a/src/main/java/dev/efnilite/ip/generator/ParkourGenerator.java
+++ b/src/main/java/dev/efnilite/ip/generator/ParkourGenerator.java
@@ -283,7 +283,10 @@ protected BlockData selectBlockData() {
Style style = Registry.getStyle(profile.get("style").value());
if (style == null) {
- profile.set("style", Registry.getStyles().stream().findFirst().get().getName());
+ profile.set("style", Registry.getStyles().stream()
+ .findFirst()
+ .orElseThrow()
+ .getName());
return selectBlockData();
}
diff --git a/src/main/java/dev/efnilite/ip/hook/HoloHook.java b/src/main/java/dev/efnilite/ip/hook/HoloHook.java
index 952d2ecf..d416888f 100644
--- a/src/main/java/dev/efnilite/ip/hook/HoloHook.java
+++ b/src/main/java/dev/efnilite/ip/hook/HoloHook.java
@@ -40,6 +40,10 @@ public static void init() {
Leaderboard leaderboard = mode.getLeaderboard();
+ if (leaderboard == null) {
+ return "?";
+ }
+
String type = split[1].toLowerCase();
String rank = split[2].replace("#", "");
diff --git a/src/main/java/dev/efnilite/ip/hook/PAPIHook.java b/src/main/java/dev/efnilite/ip/hook/PAPIHook.java
index 8925c8e2..f09ad6b4 100644
--- a/src/main/java/dev/efnilite/ip/hook/PAPIHook.java
+++ b/src/main/java/dev/efnilite/ip/hook/PAPIHook.java
@@ -162,7 +162,7 @@ private String parseDifficulty(double difficulty) {
private String getInfiniteScore(String rankData, Function f) {
int rank;
- Leaderboard leaderboard;
+ Leaderboard leaderboard = null;
Matcher matcher = INFINITE_REGEX.matcher(rankData);
// use mode-specific format
@@ -174,13 +174,14 @@ private String getInfiniteScore(String rankData, Function f) {
Mode mode = Registry.getMode(name);
if (mode != null) {
leaderboard = mode.getLeaderboard();
- } else {
- leaderboard = Modes.DEFAULT.getLeaderboard();
}
// use generic format
// x_rank
} else {
rank = Integer.parseInt(rankData);
+ }
+
+ if (leaderboard == null) {
leaderboard = Modes.DEFAULT.getLeaderboard();
}
From 636461fd5cfd5cb652dcedbcc0b1d8a1f9bcfc80 Mon Sep 17 00:00:00 2001
From: Efnilite <35348263+Efnilite@users.noreply.github.com>
Date: Sat, 17 Aug 2024 00:32:28 +0200
Subject: [PATCH 15/19] fixed heading not working
---
.../java/dev/efnilite/ip/config/Option.java | 19 ++++++++++++++-----
.../ip/generator/ParkourGenerator.java | 15 +++++++++++----
2 files changed, 25 insertions(+), 9 deletions(-)
diff --git a/src/main/java/dev/efnilite/ip/config/Option.java b/src/main/java/dev/efnilite/ip/config/Option.java
index e3a644f6..2f286304 100644
--- a/src/main/java/dev/efnilite/ip/config/Option.java
+++ b/src/main/java/dev/efnilite/ip/config/Option.java
@@ -7,6 +7,7 @@
import dev.efnilite.ip.style.Style;
import dev.efnilite.vilib.particle.ParticleData;
import org.bukkit.*;
+import org.bukkit.block.BlockFace;
import org.bukkit.configuration.file.FileConfiguration;
import org.bukkit.util.Vector;
@@ -22,7 +23,7 @@ public class Option {
public static List POSSIBLE_LEADS;
// Advanced settings
- public static Vector HEADING;
+ public static BlockFace HEADING;
public static Map OPTIONS_ENABLED;
public static Map OPTIONS_DEFAULTS;
@@ -88,7 +89,15 @@ public static void init(boolean firstLoad) {
}
// Generation
- HEADING = stringToVector(Config.GENERATION.getString("advanced.island.parkour.heading"));
+ String heading = Config.GENERATION.getString("advanced.island.parkour.heading");
+
+ switch (heading.toLowerCase()) {
+ case "north" -> HEADING = BlockFace.NORTH;
+ case "south" -> HEADING = BlockFace.SOUTH;
+ case "west" -> HEADING = BlockFace.WEST;
+ case "east" -> HEADING = BlockFace.EAST;
+ default -> IP.logging().error("Invalid heading: %s".formatted(heading));
+ }
// Scoring
@@ -100,9 +109,9 @@ public static void init(boolean firstLoad) {
private static Vector stringToVector(String direction) {
return switch (direction.toLowerCase()) {
- case "north" -> new org.bukkit.util.Vector(0, 0, -1);
- case "south" -> new org.bukkit.util.Vector(0, 0, 1);
- case "west" -> new org.bukkit.util.Vector(-1, 0, 0);
+ case "north" -> new Vector(0, 0, -1);
+ case "south" -> new Vector(0, 0, 1);
+ case "west" -> new Vector(-1, 0, 0);
default -> new Vector(1, 0, 0); // east
};
}
diff --git a/src/main/java/dev/efnilite/ip/generator/ParkourGenerator.java b/src/main/java/dev/efnilite/ip/generator/ParkourGenerator.java
index 697fc391..ca6986e2 100644
--- a/src/main/java/dev/efnilite/ip/generator/ParkourGenerator.java
+++ b/src/main/java/dev/efnilite/ip/generator/ParkourGenerator.java
@@ -110,7 +110,7 @@ public class ParkourGenerator {
/**
* The direction of the parkour
*/
- public Vector heading = Option.HEADING.clone();
+ public Vector heading = Option.HEADING.getDirection();
/**
* Generator options
@@ -325,10 +325,17 @@ protected Block selectNext(Block current, int distance, int height) {
int randomOffset = new JumpOffsetGenerator(height, distance).getRandomOffset(mean, standardDeviation);
- Vector offset = new Vector(distance + 1, height, randomOffset);
+ Vector offset = heading.clone()
+ .multiply(distance + 1)
+ .setY(height);
+ if (offset.getX() == 0) {
+ offset.setX(randomOffset);
+ } else {
+ offset.setZ(randomOffset);
+ }
// rotate offset to match heading
- offset.rotateAroundY(angleInY(heading, Option.HEADING.clone()));
+ offset.rotateAroundY(angleInY(heading, Option.HEADING.getDirection()));
return current.getLocation().add(offset).getBlock();
}
@@ -544,7 +551,7 @@ int record = leaderboard != null ? leaderboard.get(player.getUUID()).score() : 0
score = 0;
start = null;
- heading = Option.HEADING;
+ heading = Option.HEADING.getDirection();
if (regenerate) { // generate back the blocks
player.teleport(playerSpawn);
From 64a23d9a885301277ec14ac866781e867d1fcedc Mon Sep 17 00:00:00 2001
From: Efnilite <35348263+Efnilite@users.noreply.github.com>
Date: Sat, 17 Aug 2024 01:11:39 +0200
Subject: [PATCH 16/19] fixed heading not working
---
CHANGES.md | 3 ++-
pom.xml | 2 +-
src/main/java/dev/efnilite/ip/player/ParkourPlayer.java | 4 +++-
src/main/resources/plugin.yml | 2 +-
4 files changed, 7 insertions(+), 4 deletions(-)
diff --git a/CHANGES.md b/CHANGES.md
index 319117b5..92b4bddf 100644
--- a/CHANGES.md
+++ b/CHANGES.md
@@ -5,4 +5,5 @@
- Fixed Chinese translation (thanks **[@jhqwqmc](https://github.com/jhqwqmc)**)
- Fixed MySQL error on score saving
- Fixed being able to take out items in the leaderboard
-- Fixed error on joining spectator
\ No newline at end of file
+- Fixed errors on joining spectator
+- Fixed heading not working on parkour
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
index f1d3e967..ebdb2588 100644
--- a/pom.xml
+++ b/pom.xml
@@ -6,7 +6,7 @@
dev.efnilite
IP
- 5.2.5
+ 5.3.0
17
diff --git a/src/main/java/dev/efnilite/ip/player/ParkourPlayer.java b/src/main/java/dev/efnilite/ip/player/ParkourPlayer.java
index 9dba183c..9ea70184 100644
--- a/src/main/java/dev/efnilite/ip/player/ParkourPlayer.java
+++ b/src/main/java/dev/efnilite/ip/player/ParkourPlayer.java
@@ -130,7 +130,9 @@ public static List getPlayers() {
public void unregister() {
IP.log("Unregistering player %s".formatted(player.getName()));
- if (session.generator.getMode() instanceof MultiMode mode) {
+ if (session.generator != null &&
+ session.generator.getMode() != null &&
+ session.generator.getMode() instanceof MultiMode mode) {
mode.leave(player, session);
}
diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml
index 027dd9c2..7c2a5da2 100644
--- a/src/main/resources/plugin.yml
+++ b/src/main/resources/plugin.yml
@@ -1,7 +1,7 @@
name: 'IP'
description: 'Infinitely automatically generating parkour plugin.'
author: Efnilite
-version: 5.2.5
+version: 5.3.0
api-version: 1.16
main: dev.efnilite.ip.IP
softdepend: [floodgate, Vault, PlaceholderAPI, Multiverse-Core, VoidGen]
From 5eabe25d0c3f226770512e7bbc19f1262ab4abe0 Mon Sep 17 00:00:00 2001
From: Efnilite <35348263+Efnilite@users.noreply.github.com>
Date: Sun, 18 Aug 2024 16:42:15 +0200
Subject: [PATCH 17/19] Revert "Adding optional SkinsRetorer support for
displaying skin heads in the leaderboard"
This reverts commit c04b20578aab66f8acdb95a7c1f9fec0fe6a1189.
---
pom.xml | 11 ---
src/main/java/dev/efnilite/ip/IP.java | 7 --
.../efnilite/ip/hook/SkinsRestorerHook.java | 67 -------------------
.../menu/community/SingleLeaderboardMenu.java | 14 +---
4 files changed, 1 insertion(+), 98 deletions(-)
delete mode 100644 src/main/java/dev/efnilite/ip/hook/SkinsRestorerHook.java
diff --git a/pom.xml b/pom.xml
index 549639a9..ebdb2588 100644
--- a/pom.xml
+++ b/pom.xml
@@ -89,10 +89,6 @@
Maven Central
https://repo.maven.apache.org/maven2/
-
- codemc
- https://repo.codemc.org/repository/maven-public/
-
@@ -158,12 +154,5 @@
5.11.0-M1
test
-
-
- net.skinsrestorer
- skinsrestorer-api
- 15.2.0
- provided
-
\ No newline at end of file
diff --git a/src/main/java/dev/efnilite/ip/IP.java b/src/main/java/dev/efnilite/ip/IP.java
index 79418f2e..7efaa3ff 100644
--- a/src/main/java/dev/efnilite/ip/IP.java
+++ b/src/main/java/dev/efnilite/ip/IP.java
@@ -6,7 +6,6 @@
import dev.efnilite.ip.config.Option;
import dev.efnilite.ip.hook.HoloHook;
import dev.efnilite.ip.hook.PAPIHook;
-import dev.efnilite.ip.hook.SkinsRestorerHook;
import dev.efnilite.ip.mode.DefaultMode;
import dev.efnilite.ip.mode.Modes;
import dev.efnilite.ip.mode.SpectatorMode;
@@ -93,12 +92,6 @@ public void enable() {
Registry.register(new DefaultMode());
Registry.register(new SpectatorMode());
- try {
- SkinsRestorerHook.initialize();
- } catch (NoClassDefFoundError e) {
- getLogger().warning("SkinsRestorer is not available: " + e.getMessage());
- }
-
Modes.init();
Menu.init(this);
diff --git a/src/main/java/dev/efnilite/ip/hook/SkinsRestorerHook.java b/src/main/java/dev/efnilite/ip/hook/SkinsRestorerHook.java
deleted file mode 100644
index 0d84a953..00000000
--- a/src/main/java/dev/efnilite/ip/hook/SkinsRestorerHook.java
+++ /dev/null
@@ -1,67 +0,0 @@
-package dev.efnilite.ip.hook;
-
-import net.skinsrestorer.api.PropertyUtils;
-import net.skinsrestorer.api.SkinsRestorer;
-import net.skinsrestorer.api.SkinsRestorerProvider;
-import net.skinsrestorer.api.exception.DataRequestException;
-import net.skinsrestorer.api.property.SkinProperty;
-import net.skinsrestorer.api.storage.PlayerStorage;
-import org.bukkit.Bukkit;
-import org.bukkit.profile.PlayerProfile;
-import org.bukkit.profile.PlayerTextures;
-
-import java.net.MalformedURLException;
-import java.net.URL;
-import java.util.Optional;
-import java.util.UUID;
-
-public class SkinsRestorerHook {
- private static SkinsRestorer skinsRestorer;
- private static boolean isInit;
-
- public static void initialize() {
- try {
- if (Bukkit.getServer().getPluginManager().getPlugin("SkinsRestorer") != null) {
- skinsRestorer = SkinsRestorerProvider.get();
- isInit = skinsRestorer != null;
- if (isInit) {
- Bukkit.getLogger().info("Registered SkinsRestorer hook");
- } else {
- Bukkit.getLogger().warning("Failed to initialize SkinsRestorer hook");
- }
- } else {
- isInit = false;
- Bukkit.getLogger().warning("SkinsRestorer plugin is not enabled or not present");
- }
- } catch (NoClassDefFoundError e) {
- isInit = false;
- Bukkit.getLogger().warning("SkinsRestorer classes not found: " + e.getMessage());
- }
- }
-
- public static PlayerProfile getPlayerHead(UUID uuid, String name) {
- if (isInit) {
- try {
- PlayerStorage playerStorage = skinsRestorer.getPlayerStorage();
- Optional skinProperty = playerStorage.getSkinForPlayer(uuid, name);
- if (skinProperty.isPresent()) {
- SkinProperty property = skinProperty.get();
- String url = PropertyUtils.getSkinTextureUrl(property);
- PlayerTextures textures = Bukkit.createPlayerProfile("RandomName").getTextures();
- textures.setSkin(new URL(url));
- PlayerProfile profile = Bukkit.createPlayerProfile("Random");
- profile.setTextures(textures);
- return profile;
- }
- return null;
- } catch (MalformedURLException | DataRequestException e) {
- throw new RuntimeException(e);
- }
- }
- else return null;
- }
-
- public static boolean isInitialized() {
- return isInit;
- }
-}
diff --git a/src/main/java/dev/efnilite/ip/menu/community/SingleLeaderboardMenu.java b/src/main/java/dev/efnilite/ip/menu/community/SingleLeaderboardMenu.java
index 7c831dd1..764a4dc9 100644
--- a/src/main/java/dev/efnilite/ip/menu/community/SingleLeaderboardMenu.java
+++ b/src/main/java/dev/efnilite/ip/menu/community/SingleLeaderboardMenu.java
@@ -4,7 +4,6 @@
import dev.efnilite.ip.api.Registry;
import dev.efnilite.ip.config.Locales;
import dev.efnilite.ip.config.Option;
-import dev.efnilite.ip.hook.SkinsRestorerHook;
import dev.efnilite.ip.leaderboard.Leaderboard;
import dev.efnilite.ip.leaderboard.Score;
import dev.efnilite.ip.menu.Menus;
@@ -15,16 +14,13 @@
import dev.efnilite.vilib.inventory.item.Item;
import dev.efnilite.vilib.inventory.item.MenuItem;
import dev.efnilite.vilib.util.SkullSetter;
-import net.skinsrestorer.api.exception.DataRequestException;
import org.bukkit.Bukkit;
import org.bukkit.Material;
import org.bukkit.OfflinePlayer;
import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.SkullMeta;
-import org.bukkit.profile.PlayerProfile;
-import java.net.MalformedURLException;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
@@ -88,14 +84,6 @@ public void open(Player player, Mode mode, Leaderboard.Sort sort) {
if (meta != null) {
SkullSetter.setPlayerHead(op, meta);
item.meta(meta);
- } else {
- if (SkinsRestorerHook.isInitialized()) {
- PlayerProfile pp = SkinsRestorerHook.getPlayerHead(op.getUniqueId(), op.getName());
- if (pp != null) {
- meta.setOwnerProfile(pp);
- item.meta(meta);
- }
- }
}
}
}
@@ -147,4 +135,4 @@ public void open(Player player, Mode mode, Leaderboard.Sort sort) {
}))
.open(player);
}
-}
+}
\ No newline at end of file
From f391dc7755941697e3bb6c4b762a1b84d5d40e3c Mon Sep 17 00:00:00 2001
From: Efnilite <35348263+Efnilite@users.noreply.github.com>
Date: Sun, 18 Aug 2024 16:42:19 +0200
Subject: [PATCH 18/19] Revert "Back 1 line"
This reverts commit 944e4c0672d16a63a0a92bd906ee5bf962099ffb.
---
.../dev/efnilite/ip/menu/community/SingleLeaderboardMenu.java | 1 -
1 file changed, 1 deletion(-)
diff --git a/src/main/java/dev/efnilite/ip/menu/community/SingleLeaderboardMenu.java b/src/main/java/dev/efnilite/ip/menu/community/SingleLeaderboardMenu.java
index 764a4dc9..e322ed68 100644
--- a/src/main/java/dev/efnilite/ip/menu/community/SingleLeaderboardMenu.java
+++ b/src/main/java/dev/efnilite/ip/menu/community/SingleLeaderboardMenu.java
@@ -71,7 +71,6 @@ public void open(Player player, Mode mode, Leaderboard.Sort sort) {
// Player head gathering
ItemStack stack = item.build();
- stack.setType(Material.PLAYER_HEAD);
// if there are more than 36 players, don't show the heads to avoid server crashing
// and bedrock has no player skull support
From 9ef21a10494f6b7483ed5c7295074075bad8e159 Mon Sep 17 00:00:00 2001
From: Efnilite <35348263+Efnilite@users.noreply.github.com>
Date: Sun, 18 Aug 2024 16:43:44 +0200
Subject: [PATCH 19/19] update changes
---
CHANGES.md | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/CHANGES.md b/CHANGES.md
index 92b4bddf..c43f78c0 100644
--- a/CHANGES.md
+++ b/CHANGES.md
@@ -1,9 +1,9 @@
**[Infinite Elytra Parkour](https://www.spigotmc.org/resources/115322/) | [Infinite Parkour+](https://www.spigotmc.org/resources/105019/)**
- Added model id support (thanks **[@wilddip](https://github.com/wilddip)**)
-- Added SkinsRestorer support (thanks **[@TheJCN](https://github.com/TheJCN)**)
- Fixed Chinese translation (thanks **[@jhqwqmc](https://github.com/jhqwqmc)**)
- Fixed MySQL error on score saving
- Fixed being able to take out items in the leaderboard
- Fixed errors on joining spectator
-- Fixed heading not working on parkour
\ No newline at end of file
+- Fixed errors on leaving
+- Fixed heading not working on parkour