Skip to content

Commit d3c6ecc

Browse files
Transition commands from ACF to Cloud
1 parent dd3002e commit d3c6ecc

File tree

72 files changed

+3122
-1425
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

72 files changed

+3122
-1425
lines changed

buildSrc/src/main/java/dev/magicspells/gradle/MSJavaPlugin.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,6 @@ public void apply(Project target) {
2727
"https://repo.dmulloy2.net/nexus/repository/public/",
2828
"https://repo.md-5.net/content/repositories/releases/",
2929
"https://repo.papermc.io/repository/maven-public/",
30-
"https://repo.aikar.co/content/groups/aikar/",
3130
"https://oss.sonatype.org/content/repositories/central",
3231
"https://oss.sonatype.org/content/repositories/snapshots",
3332
"https://hub.spigotmc.org/nexus/content/repositories/snapshots/",

core/build.gradle

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,9 @@ dependencies {
77
shadow("org.apache.commons:commons-math4-core:4.0-beta1")
88
shadow("com.github.ben-manes.caffeine:caffeine:3.2.1")
99
shadow("com.github.Chronoken:EffectLib:753da6c")
10-
shadow("co.aikar:acf-paper:0.5.1-SNAPSHOT")
10+
shadow("org.incendo:cloud-paper:2.0.0-beta.13")
11+
shadow("org.incendo:cloud-minecraft-extras:2.0.0-beta.13")
12+
shadow("org.incendo:cloud-processors-requirements:1.0.0-rc.1")
1113
shadow("org.bstats:bstats-bukkit:3.0.2")
1214
shadow("com.github.ezylang:EvalEx:0dcb042")
1315

@@ -52,8 +54,10 @@ shadowJar {
5254
relocate("com.github.benmanes.caffeine", "com.nisovin.magicspells.shaded.com.github.benmanes.caffeine")
5355
relocate("org.apache.commons.math4", "com.nisovin.magicspells.shaded.org.apache.commons.math4")
5456
relocate("de.slikey.effectlib", "com.nisovin.magicspells.shaded.effectlib")
55-
relocate("co.aikar.commands", "com.nisovin.magicspells.shaded.acf")
56-
relocate("co.aikar.locales", "com.nisovin.magicspells.shaded.locales")
57+
relocate("org.incendo.cloud", "com.nisovin.magicspells.shaded.cloud")
58+
relocate("io.leangen.geantyref", "com.nisovin.magicspells.shaded.geantyref")
59+
relocate("xyz.jpenilla.reflectionremapper", "com.nisovin.magicspells.shaded.reflectionremapper")
60+
relocate("net.fabricmc.mappingio", "com.nisovin.magicspells.shaded.mappingio")
5761
relocate("org.bstats", "com.nisovin.magicspells.shaded.bstats")
5862
relocate("de.slikey.exp4j", "com.nisovin.magicspells.shaded.exp4j")
5963
relocate("com.ezylang.evalex", "com.nisovin.magicspells.shaded.evalex")

core/src/main/java/com/nisovin/magicspells/MagicSpells.java

Lines changed: 83 additions & 59 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package com.nisovin.magicspells;
22

3+
import org.jetbrains.annotations.NotNull;
4+
35
import java.io.*;
46

57
import java.util.*;
@@ -25,17 +27,15 @@
2527
import com.google.common.collect.SetMultimap;
2628
import com.google.common.collect.LinkedHashMultimap;
2729

30+
import net.kyori.adventure.text.format.NamedTextColor;
31+
2832
import de.slikey.effectlib.EffectManager;
2933

3034
import org.bstats.bukkit.Metrics;
3135
import org.bstats.charts.SimplePie;
3236
import org.bstats.charts.AdvancedPie;
3337
import org.bstats.charts.DrilldownPie;
3438

35-
import org.jetbrains.annotations.NotNull;
36-
37-
import co.aikar.commands.PaperCommandManager;
38-
3939
import org.bukkit.*;
4040
import org.bukkit.event.Event;
4141
import org.bukkit.entity.Entity;
@@ -53,6 +53,11 @@
5353
import org.bukkit.permissions.PermissionDefault;
5454
import org.bukkit.configuration.ConfigurationSection;
5555

56+
import io.papermc.paper.command.brigadier.CommandSourceStack;
57+
58+
import org.incendo.cloud.paper.PaperCommandManager;
59+
import org.incendo.cloud.execution.ExecutionCoordinator;
60+
5661
import me.clip.placeholderapi.PlaceholderAPI;
5762

5863
import com.nisovin.magicspells.util.*;
@@ -64,16 +69,15 @@
6469
import com.nisovin.magicspells.mana.ManaHandler;
6570
import com.nisovin.magicspells.variables.Variable;
6671
import com.nisovin.magicspells.spells.PassiveSpell;
67-
import com.nisovin.magicspells.commands.MagicCommand;
6872
import com.nisovin.magicspells.util.compat.EventUtil;
73+
import com.nisovin.magicspells.commands.MagicCommands;
6974
import com.nisovin.magicspells.storage.StorageHandler;
7075
import com.nisovin.magicspells.util.prompt.PromptType;
7176
import com.nisovin.magicspells.util.compat.CompatBasics;
7277
import com.nisovin.magicspells.zones.NoMagicZoneManager;
7378
import com.nisovin.magicspells.spelleffects.SpellEffect;
7479
import com.nisovin.magicspells.util.magicitems.MagicItem;
7580
import com.nisovin.magicspells.castmodifiers.ModifierSet;
76-
import com.nisovin.magicspells.commands.CommandHelpFilter;
7781
import com.nisovin.magicspells.util.magicitems.MagicItems;
7882
import com.nisovin.magicspells.util.recipes.CustomRecipes;
7983
import com.nisovin.magicspells.util.ai.CustomGoalsManager;
@@ -141,7 +145,7 @@ public class MagicSpells extends JavaPlugin {
141145
private NoMagicZoneManager zoneManager;
142146
private CleanserManager cleanserManager;
143147
private CustomGoalsManager customGoalsManager;
144-
private PaperCommandManager commandManager;
148+
private PaperCommandManager<CommandSourceStack> commandManager;
145149
private ExperienceBarManager expBarManager;
146150

147151
private ExpressionDictionary expressionDictionary;
@@ -212,7 +216,8 @@ public class MagicSpells extends JavaPlugin {
212216

213217
private long lastReloadTime = 0;
214218

215-
private ChatColor textColor;
219+
private NamedTextColor textColor;
220+
private String textFormat;
216221

217222
private double losRaySize;
218223
private boolean losIgnorePassableBlocks;
@@ -238,45 +243,8 @@ public class MagicSpells extends JavaPlugin {
238243
@Override
239244
public void onEnable() {
240245
load();
241-
242-
Metrics metrics = new Metrics(this, 892);
243-
244-
metrics.addCustomChart(new DrilldownPie("spells", () -> {
245-
Map<String, Map<String, Integer>> map = new HashMap<>();
246-
if (spells == null) return map;
247-
248-
for (Spell spell : spells.values()) {
249-
String name = spell.getClass().getName();
250-
if (!name.startsWith("com.nisovin.magicspells.spells")) continue;
251-
name = name.replace("com.nisovin.magicspells.spells.", "");
252-
253-
String[] typeSplit = name.split("\\.", 2);
254-
String formalPackage = typeSplit[0].substring(0, 1).toUpperCase() + typeSplit[0].substring(1);
255-
256-
String spellPackage = (typeSplit.length == 1 ? "General" : formalPackage) + " Spells";
257-
String spellClass = typeSplit.length == 1 ? typeSplit[0] : typeSplit[1];
258-
259-
map.computeIfAbsent(spellPackage, key -> new HashMap<>());
260-
map.get(spellPackage).compute(spellClass, (k, v) -> (v == null ? 0 : v) + 1);
261-
}
262-
return map;
263-
}));
264-
metrics.addCustomChart(new AdvancedPie("passive_listeners", () -> {
265-
IntMap<String> map = new IntMap<>();
266-
if (spells == null) return map;
267-
268-
for (Spell spell : spells.values()) {
269-
if (!spell.getClass().getName().startsWith("com.nisovin.magicspells.spells")) continue;
270-
if (!(spell instanceof PassiveSpell passiveSpell)) continue;
271-
272-
for (PassiveListener listener : passiveSpell.getPassiveListeners()) {
273-
String name = listener.getClass().getSimpleName();
274-
map.increment(name.substring(0, name.lastIndexOf("Listener")));
275-
}
276-
}
277-
return map;
278-
}));
279-
metrics.addCustomChart(new SimplePie("reload_time", () -> "<" + (lastReloadTime - lastReloadTime % 500 + 500) + " ms"));
246+
initMetrics();
247+
initCommands();
280248
}
281249

282250
public void load() {
@@ -287,8 +255,6 @@ public void load() {
287255
effectManager = new EffectManager(this);
288256
effectManager.enableDebug(debug);
289257

290-
commandManager = new PaperCommandManager(plugin);
291-
292258
// Create storage stuff
293259
spells = new HashMap<>();
294260
spellNames = new HashMap<>();
@@ -334,7 +300,6 @@ public void load() {
334300
enableErrorLogging = config.getBoolean(path + "enable-error-logging", true);
335301
errorLogLimit = config.getInt(path + "error-log-limit", -1);
336302
enableProfiling = config.getBoolean(path + "enable-profiling", false);
337-
textColor = ChatColor.getByChar(config.getString(path + "text-color", ChatColor.DARK_AQUA.getChar() + ""));
338303
broadcastRange = config.getInt(path + "broadcast-range", 20);
339304
effectlibInstanceLimit = config.getInt(path + "effectlib-instance-limit", 20000);
340305

@@ -405,6 +370,9 @@ public void load() {
405370
}
406371
}
407372

373+
textColor = Util.getLegacyColor(config.getString("text-color", null), NamedTextColor.DARK_AQUA);
374+
textFormat = config.getString("text-format", "<" + textColor + "><text></" + textColor + ">");
375+
408376
soundFailOnCooldown = config.getString(path + "sound-on-cooldown", null);
409377
soundFailMissingReagents = config.getString(path + "sound-missing-reagents", null);
410378

@@ -570,12 +538,6 @@ public void load() {
570538
magicLogger = new MagicLogger(this);
571539
}
572540

573-
// Register commands
574-
commandManager.enableUnstableAPI("help");
575-
commandManager.registerCommand(new MagicCommand());
576-
commandManager.setValidNamePredicate(string -> true);
577-
CommandHelpFilter.mapPerms();
578-
579541
// Setup profiling
580542
if (enableProfiling) {
581543
profilingTotalTime = new HashMap<>();
@@ -588,6 +550,55 @@ public void load() {
588550
Bukkit.getScheduler().runTaskLater(this, this::loadExternalData, 1);
589551
}
590552

553+
private void initMetrics() {
554+
Metrics metrics = new Metrics(this, 892);
555+
556+
metrics.addCustomChart(new DrilldownPie("spells", () -> {
557+
Map<String, Map<String, Integer>> map = new HashMap<>();
558+
if (spells == null) return map;
559+
560+
for (Spell spell : spells.values()) {
561+
String name = spell.getClass().getName();
562+
if (!name.startsWith("com.nisovin.magicspells.spells")) continue;
563+
name = name.replace("com.nisovin.magicspells.spells.", "");
564+
565+
String[] typeSplit = name.split("\\.", 2);
566+
String formalPackage = typeSplit[0].substring(0, 1).toUpperCase() + typeSplit[0].substring(1);
567+
568+
String spellPackage = (typeSplit.length == 1 ? "General" : formalPackage) + " Spells";
569+
String spellClass = typeSplit.length == 1 ? typeSplit[0] : typeSplit[1];
570+
571+
map.computeIfAbsent(spellPackage, key -> new HashMap<>());
572+
map.get(spellPackage).compute(spellClass, (k, v) -> (v == null ? 0 : v) + 1);
573+
}
574+
return map;
575+
}));
576+
metrics.addCustomChart(new AdvancedPie("passive_listeners", () -> {
577+
IntMap<String> map = new IntMap<>();
578+
if (spells == null) return map;
579+
580+
for (Spell spell : spells.values()) {
581+
if (!spell.getClass().getName().startsWith("com.nisovin.magicspells.spells")) continue;
582+
if (!(spell instanceof PassiveSpell passiveSpell)) continue;
583+
584+
for (PassiveListener listener : passiveSpell.getPassiveListeners()) {
585+
String name = listener.getClass().getSimpleName();
586+
map.increment(name.substring(0, name.lastIndexOf("Listener")));
587+
}
588+
}
589+
return map;
590+
}));
591+
metrics.addCustomChart(new SimplePie("reload_time", () -> "<" + (lastReloadTime - lastReloadTime % 500 + 500) + " ms"));
592+
}
593+
594+
private void initCommands() {
595+
commandManager = PaperCommandManager.builder()
596+
.executionCoordinator(ExecutionCoordinator.simpleCoordinator())
597+
.buildOnEnable(this);
598+
599+
MagicCommands.register(commandManager);
600+
}
601+
591602
private void initializeSpells() {
592603
log("Initializing spells...");
593604

@@ -1077,10 +1088,19 @@ public static Spellbook getSpellbook(Player player) {
10771088
return plugin.spellbooks.computeIfAbsent(player.getUniqueId(), uuid -> new Spellbook(player));
10781089
}
10791090

1091+
@Deprecated(forRemoval = true)
10801092
public static ChatColor getTextColor() {
1093+
return ChatColor.valueOf(plugin.textColor.toString().toUpperCase());
1094+
}
1095+
1096+
public static NamedTextColor getLegacyTextColor() {
10811097
return plugin.textColor;
10821098
}
10831099

1100+
public static String getTextFormat() {
1101+
return plugin.textFormat;
1102+
}
1103+
10841104
/**
10851105
* Gets a list of blocks that are considered transparent
10861106
* @return set of block types
@@ -1246,6 +1266,10 @@ public static int getDebugLevelOriginal() {
12461266
return plugin.debugLevelOriginal;
12471267
}
12481268

1269+
public static int getDebugLevel() {
1270+
return plugin.debugLevel;
1271+
}
1272+
12491273
public static int getErrorLogLimit() {
12501274
return plugin.errorLogLimit;
12511275
}
@@ -1584,7 +1608,7 @@ public static void sendMessage(String message, LivingEntity recipient, SpellData
15841608

15851609
message = doReplacements(message, recipient, data, replacements);
15861610

1587-
recipient.sendMessage(Util.getMiniMessage(getTextColor() + message));
1611+
recipient.sendMessage(Util.getMessageText(message));
15881612
}
15891613

15901614
private static final Pattern chatVarMatchPattern = Pattern.compile("%var:(\\w+)(?::(\\d+))?%", Pattern.CASE_INSENSITIVE | Pattern.MULTILINE);
@@ -1898,13 +1922,13 @@ public static boolean requireReplacement(String message) {
18981922
public static String getTargetName(Entity target) {
18991923
if (target instanceof Player) return target.getName();
19001924

1901-
if (target.customName() != null) return Util.getStrictStringFromComponent(target.customName());
1925+
if (target.customName() != null) return Util.getStrictString(target.customName());
19021926

19031927
EntityType type = target.getType();
19041928
String name = plugin.entityNames.get(type);
19051929
if (name != null) return name;
19061930

1907-
return Util.getStrictStringFromComponent(target.name());
1931+
return Util.getStrictString(target.name());
19081932
}
19091933

19101934
public static void registerEvents(final Listener listener) {

core/src/main/java/com/nisovin/magicspells/Perm.java

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,12 @@
11
package com.nisovin.magicspells;
22

3+
import org.jetbrains.annotations.NotNull;
4+
35
import org.bukkit.permissions.Permissible;
46

5-
public enum Perm {
7+
import org.incendo.cloud.permission.Permission;
8+
9+
public enum Perm implements Permission {
610

711
SILENT("magicspells.silent"),
812
NO_REAGENTS("magicspells.noreagents"),
@@ -99,5 +103,10 @@ public boolean has(Permissible permissible, Spell spell) {
99103
if (requiresNode() && !permissible.hasPermission(getNode(spell))) return false;
100104
return true;
101105
}
102-
106+
107+
@Override
108+
public @NotNull String permissionString() {
109+
return node;
110+
}
111+
103112
}

0 commit comments

Comments
 (0)