mirror of
https://github.com/FancyInnovations/FancyPlugins.git
synced 2025-12-06 07:43:36 +00:00
fancynpcs: fix parsed placeholders being saved as skin identifier
This commit is contained in:
@@ -163,6 +163,7 @@ public class NpcData {
|
||||
*/
|
||||
public NpcData setSkin(String skin, SkinData.SkinVariant variant) {
|
||||
SkinData data = FancyNpcsPlugin.get().getSkinManager().getByIdentifier(skin, variant);
|
||||
data.setIdentifier(skin);
|
||||
return setSkinData(data);
|
||||
}
|
||||
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
package de.oliver.fancynpcs.api.skins;
|
||||
|
||||
import org.lushplugins.chatcolorhandler.ChatColorHandler;
|
||||
|
||||
public class SkinData {
|
||||
|
||||
private String identifier;
|
||||
@@ -34,6 +36,14 @@ public class SkinData {
|
||||
this.identifier = identifier;
|
||||
}
|
||||
|
||||
public String getParsedIdentifier() {
|
||||
if (identifier.startsWith("%") && identifier.endsWith("%") || identifier.startsWith("{") && identifier.endsWith("}")) {
|
||||
return ChatColorHandler.translate(identifier);
|
||||
} else {
|
||||
return identifier;
|
||||
}
|
||||
}
|
||||
|
||||
public SkinVariant getVariant() {
|
||||
return variant;
|
||||
}
|
||||
|
||||
@@ -43,6 +43,7 @@ allprojects {
|
||||
maven(url = "https://repo.fancyplugins.de/releases")
|
||||
maven(url = "https://repo.lushplugins.org/releases")
|
||||
maven(url = "https://repo.inventivetalent.org/repository/maven-snapshots/")
|
||||
maven(url = "https://repo.extendedclip.com/releases/")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -73,6 +74,7 @@ dependencies {
|
||||
annotationProcessor("org.incendo:cloud-annotations:2.1.0-SNAPSHOT")
|
||||
implementation("org.mineskin:java-client-jsoup:3.0.3-SNAPSHOT")
|
||||
|
||||
compileOnly("me.clip:placeholderapi:2.11.6")
|
||||
compileOnly("com.intellectualsites.plotsquared:plotsquared-core:7.5.1")
|
||||
}
|
||||
|
||||
|
||||
@@ -35,6 +35,7 @@ import de.oliver.fancynpcs.skins.SkinManagerImpl;
|
||||
import de.oliver.fancynpcs.skins.SkinUtils;
|
||||
import de.oliver.fancynpcs.skins.cache.SkinCacheFile;
|
||||
import de.oliver.fancynpcs.skins.cache.SkinCacheMemory;
|
||||
import de.oliver.fancynpcs.tests.PlaceholderApiEnv;
|
||||
import de.oliver.fancynpcs.tracker.TurnToPlayerTracker;
|
||||
import de.oliver.fancynpcs.tracker.VisibilityTracker;
|
||||
import de.oliver.fancynpcs.utils.OldSkinCacheMigrator;
|
||||
@@ -320,6 +321,10 @@ public class FancyNpcs extends JavaPlugin implements FancyNpcsPlugin {
|
||||
getLogger().warning("Commands and related components have not been registered. This can be changed by setting 'register_commands' to true, and restarting the server.");
|
||||
}
|
||||
|
||||
if (ENABLE_DEBUG_MODE_FEATURE_FLAG.isEnabled()) {
|
||||
PlaceholderApiEnv.registerPlaceholders();
|
||||
}
|
||||
|
||||
fancyLogger.info("FancyNpcs (" + versionConfig.getVersion() + ") has been enabled.");
|
||||
}
|
||||
|
||||
|
||||
@@ -275,6 +275,7 @@ public class NpcManagerImpl implements NpcManager {
|
||||
SkinData.SkinVariant skinVariant = SkinData.SkinVariant.valueOf(skinVariantStr);
|
||||
if (!skinIdentifier.isEmpty()) {
|
||||
skin = FancyNpcs.getInstance().getSkinManagerImpl().getByIdentifier(skinIdentifier, skinVariant);
|
||||
skin.setIdentifier(skinIdentifier);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -67,6 +67,7 @@ public enum SkinCMD {
|
||||
} else {
|
||||
SkinData.SkinVariant variant = slim ? SkinData.SkinVariant.SLIM : SkinData.SkinVariant.AUTO;
|
||||
SkinData skinData = FancyNpcs.getInstance().getSkinManagerImpl().getByIdentifier(skin, variant);
|
||||
skinData.setIdentifier(skin);
|
||||
if (!skinData.hasTexture()) {
|
||||
translator.translate("npc_skin_set_later").replace("npc", npc.getData().getName()).send(sender);
|
||||
}
|
||||
|
||||
@@ -155,12 +155,12 @@ public class SkinManagerImpl implements SkinManager, Listener {
|
||||
if (skin == null)
|
||||
continue;
|
||||
|
||||
String id = skin.getIdentifier();
|
||||
if (SkinUtils.isPlaceholder(id)) {
|
||||
id = ChatColorHandler.translate(id);
|
||||
String id = skin.getParsedIdentifier();
|
||||
if(SkinUtils.isUsername(id)) {
|
||||
id = UUIDFetcher.getUUID(id).toString();
|
||||
}
|
||||
|
||||
if (id.equals(event.getId())) {
|
||||
event.getSkin().setIdentifier(skin.getIdentifier());
|
||||
npc.getData().setSkinData(event.getSkin());
|
||||
npc.removeForAll();
|
||||
npc.spawnForAll();
|
||||
|
||||
@@ -17,4 +17,8 @@ public class SkinUtils {
|
||||
public static boolean isFile(String identifier) {
|
||||
return identifier.endsWith(".png") || identifier.endsWith(".jpg") || identifier.endsWith(".jpeg");
|
||||
}
|
||||
|
||||
public static boolean isUsername(String identifier) {
|
||||
return !identifier.isEmpty() && !isUUID(identifier) && !isURL(identifier) && !isFile(identifier);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -32,7 +32,7 @@ public class SkinCacheMemory implements SkinCache {
|
||||
@Override
|
||||
public void addSkin(SkinData skin) {
|
||||
SkinCacheData skinCacheData = new SkinCacheData(skin, System.currentTimeMillis(), CACHE_TIME);
|
||||
cache.put(skin.getIdentifier(), skinCacheData);
|
||||
cache.put(skin.getParsedIdentifier(), skinCacheData);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -0,0 +1,45 @@
|
||||
package de.oliver.fancynpcs.tests;
|
||||
|
||||
import me.clip.placeholderapi.expansion.PlaceholderExpansion;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.OfflinePlayer;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
public class PlaceholderApiEnv extends PlaceholderExpansion {
|
||||
public static void registerPlaceholders() {
|
||||
if (!Bukkit.getPluginManager().isPluginEnabled("PlaceholderAPI")) {
|
||||
return;
|
||||
}
|
||||
|
||||
PlaceholderExpansion expansion = new PlaceholderApiEnv();
|
||||
expansion.register();
|
||||
}
|
||||
|
||||
@Override
|
||||
public @NotNull String getIdentifier() {
|
||||
return "fn-test";
|
||||
}
|
||||
|
||||
@Override
|
||||
public @NotNull String getAuthor() {
|
||||
return "Oliver";
|
||||
}
|
||||
|
||||
@Override
|
||||
public @NotNull String getVersion() {
|
||||
return "1.0.0";
|
||||
}
|
||||
|
||||
@Override
|
||||
public @Nullable String onPlaceholderRequest(Player player, @NotNull String params) {
|
||||
return "Grabsky";
|
||||
}
|
||||
|
||||
@Override
|
||||
public @Nullable String onRequest(OfflinePlayer player, @NotNull String params) {
|
||||
return "Grabsky";
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user