cyvq

ExcellentCrates Placeholder Expansion

Jul 15th, 2026 (edited)
77
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.25 KB | Source Code | 0 0
  1. package com.cyvertray.ecratesplaceholder;
  2.  
  3. import java.lang.reflect.Method;
  4. import java.util.Map;
  5. import me.clip.placeholderapi.expansion.PlaceholderExpansion;
  6. import org.bukkit.Bukkit;
  7. import org.bukkit.entity.Player;
  8. import org.bukkit.plugin.Plugin;
  9. import org.jetbrains.annotations.NotNull;
  10. import org.jetbrains.annotations.Nullable;
  11.  
  12. public class ExcellentCratesPlaceholderExpansion extends PlaceholderExpansion {
  13.  
  14.     @Override public @NotNull String getIdentifier() { return "ec"; }
  15.     @Override public @NotNull String getAuthor() { return "Cyvertray_"; }
  16.     @Override public @NotNull String getVersion() { return "Paper/Spigot/Purpur 26.2 Java 25"; }
  17.     @Override public boolean persist() { return true; }
  18.  
  19.     @Override
  20.     public @Nullable String onPlaceholderRequest(Player player, @NotNull String params) {
  21.         if (player == null) return "0";
  22.  
  23.         if (params.startsWith("keyz_")) {
  24.             String requestedKeyId = params.substring("keyz_".length());
  25.             Plugin ecPlugin = Bukkit.getPluginManager().getPlugin("ExcellentCrates");
  26.             if (ecPlugin == null) return "0";
  27.  
  28.             try {
  29.                 Object userManager = ecPlugin.getClass().getMethod("getUserManager").invoke(ecPlugin);
  30.                 Object crateUser = userManager.getClass().getMethod("getOrFetch", Player.class).invoke(userManager, player);
  31.  
  32.                 if (crateUser == null) return "0";
  33.  
  34.                 Method getKeysMap = crateUser.getClass().getMethod("getKeysMap");
  35.                 Map<?, ?> keys = (Map<?, ?>) getKeysMap.invoke(crateUser);
  36.  
  37.                 if (keys == null || keys.isEmpty()) return "0";
  38.  
  39.                 for (Map.Entry<?, ?> entry : keys.entrySet()) {
  40.                     if (String.valueOf(entry.getKey()).equalsIgnoreCase(requestedKeyId)) {
  41.                         return String.valueOf(entry.getValue());
  42.                     }
  43.                 }
  44.                 return "0";
  45.  
  46.             } catch (Exception e) {
  47.                 return "0";
  48.             }
  49.         }
  50.  
  51.         if (params.startsWith("physicalkeyz_")) {
  52.             String requestedKeyId = params.substring("physicalkeyz_".length());
  53.             Plugin ecPlugin = Bukkit.getPluginManager().getPlugin("ExcellentCrates");
  54.             if (ecPlugin == null) return "0";
  55.  
  56.             try {
  57.                 Object keyManager = ecPlugin.getClass().getMethod("getKeyManager").invoke(ecPlugin);
  58.  
  59.                 Method getKeyById = keyManager.getClass().getMethod("getKeyById", String.class);
  60.                 Object crateKey = getKeyById.invoke(keyManager, requestedKeyId);
  61.  
  62.                 if (crateKey == null) return "0";
  63.  
  64.                 Method isVirtual = crateKey.getClass().getMethod("isVirtual");
  65.                 if ((boolean) isVirtual.invoke(crateKey)) return "0";
  66.  
  67.                 Method getKeysAmount = keyManager.getClass().getMethod(
  68.                         "getKeysAmount",
  69.                         Player.class,
  70.                         crateKey.getClass()
  71.                 );
  72.  
  73.                 Object amount = getKeysAmount.invoke(keyManager, player, crateKey);
  74.  
  75.                 return String.valueOf(amount);
  76.  
  77.             } catch (Exception e) {
  78.                 return "0";
  79.             }
  80.         }
  81.  
  82.                 return null;
  83.     }
  84. }
Add Comment
Please, Sign In to add comment