Skip to content

Commit 0f7091d

Browse files
Merge pull request #1074 from JasperLorelai/qol
2 parents f9f6212 + 3cd0519 commit 0f7091d

21 files changed

Lines changed: 182 additions & 45 deletions

File tree

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

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1748,7 +1748,7 @@ public static String doReplacements(String message, LivingEntity recipient, Spel
17481748
return message;
17491749
}
17501750

1751-
private static final Pattern ARGUMENT_PATTERN = Pattern.compile("%arg:(\\d+):([^%]+)%", Pattern.CASE_INSENSITIVE | Pattern.MULTILINE);
1751+
private static final Pattern ARGUMENT_PATTERN = Pattern.compile("%arg:(\\d+)(?::([^%]+))?%", Pattern.CASE_INSENSITIVE | Pattern.MULTILINE);
17521752
public static String doArgumentSubstitution(String string, String[] args) {
17531753
if (string == null || string.isEmpty()) return string;
17541754

@@ -1759,6 +1759,7 @@ public static String doArgumentSubstitution(String string, String[] args) {
17591759
int argIndex = Integer.parseInt(matcher.group(1)) - 1;
17601760

17611761
String newValue = matcher.group(2);
1762+
if (newValue == null) newValue = "";
17621763
if (args != null && argIndex >= 0 && argIndex < args.length) newValue = args[argIndex];
17631764

17641765
matcher.appendReplacement(builder, Matcher.quoteReplacement(newValue));
@@ -1864,7 +1865,7 @@ public static String formatMessage(String message, String... replacements) {
18641865
* @return the formatted string
18651866
*/
18661867
public static String formatMessage(String message, SpellData data, String... replacements) {
1867-
if (message == null || message.isEmpty()) return message;
1868+
if (message == null || message.isEmpty()) return "";
18681869

18691870
List<String> replacementList = new ArrayList<>();
18701871
if (replacements != null) replacementList.addAll(Arrays.asList(replacements));
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
package com.nisovin.magicspells.castmodifiers.conditions;
2+
3+
import org.bukkit.Location;
4+
import org.bukkit.entity.LivingEntity;
5+
6+
import org.jetbrains.annotations.NotNull;
7+
8+
import com.nisovin.magicspells.Spell;
9+
import com.nisovin.magicspells.util.Name;
10+
import com.nisovin.magicspells.MagicSpells;
11+
import com.nisovin.magicspells.castmodifiers.Condition;
12+
import com.nisovin.magicspells.spells.targeted.LevitateSpell;
13+
14+
@Name("levitated")
15+
public class LevitatedCondition extends Condition {
16+
17+
private LevitateSpell levitateSpell;
18+
19+
@Override
20+
public boolean initialize(@NotNull String var) {
21+
Spell spell = MagicSpells.getSpellByInternalName(var);
22+
if (!(spell instanceof LevitateSpell levitate)) return false;
23+
levitateSpell = levitate;
24+
return true;
25+
}
26+
27+
@Override
28+
public boolean check(LivingEntity caster) {
29+
return levitateSpell.isBeingLevitated(caster);
30+
}
31+
32+
@Override
33+
public boolean check(LivingEntity caster, LivingEntity target) {
34+
for (LevitateSpell.Levitator levitator : levitateSpell.getLevitating().values()) {
35+
if (!levitator.getData().target().equals(caster)) continue;
36+
if (!levitator.getData().caster().equals(target)) continue;
37+
return true;
38+
}
39+
return false;
40+
}
41+
42+
@Override
43+
public boolean check(LivingEntity caster, Location location) {
44+
return false;
45+
}
46+
47+
}
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
package com.nisovin.magicspells.castmodifiers.conditions;
2+
3+
import org.bukkit.Location;
4+
import org.bukkit.entity.LivingEntity;
5+
6+
import org.jetbrains.annotations.NotNull;
7+
8+
import com.nisovin.magicspells.Spell;
9+
import com.nisovin.magicspells.util.Name;
10+
import com.nisovin.magicspells.MagicSpells;
11+
import com.nisovin.magicspells.castmodifiers.Condition;
12+
import com.nisovin.magicspells.spells.targeted.LevitateSpell;
13+
14+
@Name("levitating")
15+
public class LevitatingCondition extends Condition {
16+
17+
private LevitateSpell levitateSpell;
18+
19+
@Override
20+
public boolean initialize(@NotNull String var) {
21+
Spell spell = MagicSpells.getSpellByInternalName(var);
22+
if (!(spell instanceof LevitateSpell levitate)) return false;
23+
levitateSpell = levitate;
24+
return true;
25+
}
26+
27+
@Override
28+
public boolean check(LivingEntity caster) {
29+
return levitateSpell.isLevitating(caster);
30+
}
31+
32+
@Override
33+
public boolean check(LivingEntity caster, LivingEntity target) {
34+
for (LevitateSpell.Levitator levitator : levitateSpell.getLevitating().values()) {
35+
if (!levitator.getData().caster().equals(caster)) continue;
36+
if (!levitator.getData().target().equals(target)) continue;
37+
return true;
38+
}
39+
return false;
40+
}
41+
42+
@Override
43+
public boolean check(LivingEntity caster, Location location) {
44+
return false;
45+
}
46+
47+
}

core/src/main/java/com/nisovin/magicspells/commands/DebugCommand.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,8 @@
1515
import io.papermc.paper.command.brigadier.CommandSourceStack;
1616

1717
import com.nisovin.magicspells.Perm;
18-
import com.nisovin.magicspells.MagicSpells;
1918
import com.nisovin.magicspells.util.Util;
19+
import com.nisovin.magicspells.MagicSpells;
2020

2121
public class DebugCommand {
2222

core/src/main/java/com/nisovin/magicspells/commands/MagicCommands.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22

33
import java.util.Map;
44

5-
import org.incendo.cloud.parser.standard.*;
65
import org.jetbrains.annotations.NotNull;
76

87
import io.leangen.geantyref.TypeToken;
@@ -13,6 +12,7 @@
1312

1413
import com.mojang.brigadier.arguments.StringArgumentType;
1514

15+
import org.incendo.cloud.parser.standard.*;
1616
import org.incendo.cloud.parser.ArgumentParser;
1717
import org.incendo.cloud.paper.PaperCommandManager;
1818
import org.incendo.cloud.caption.StandardCaptionKeys;
@@ -36,11 +36,11 @@
3636
import io.papermc.paper.command.brigadier.CommandSourceStack;
3737
import io.papermc.paper.command.brigadier.MessageComponentSerializer;
3838

39+
import com.nisovin.magicspells.util.Util;
3940
import com.nisovin.magicspells.MagicSpells;
4041
import com.nisovin.magicspells.commands.parsers.*;
4142
import com.nisovin.magicspells.commands.exceptions.GenericCommandException;
4243
import com.nisovin.magicspells.commands.exceptions.InvalidCommandArgumentException;
43-
import com.nisovin.magicspells.util.Util;
4444

4545
public class MagicCommands {
4646

core/src/main/java/com/nisovin/magicspells/commands/MagicItemCommand.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,10 @@
22

33
import org.jetbrains.annotations.NotNull;
44

5+
import java.util.List;
56
import java.util.ArrayList;
67
import java.util.Collection;
78
import java.util.Collections;
8-
import java.util.List;
99

1010
import org.incendo.cloud.key.CloudKey;
1111
import org.incendo.cloud.context.CommandContext;

core/src/main/java/com/nisovin/magicspells/commands/ManaCommands.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,11 +32,11 @@
3232
import io.papermc.paper.command.brigadier.CommandSourceStack;
3333

3434
import com.nisovin.magicspells.Perm;
35+
import com.nisovin.magicspells.util.Util;
3536
import com.nisovin.magicspells.MagicSpells;
3637
import com.nisovin.magicspells.mana.ManaHandler;
3738
import com.nisovin.magicspells.mana.ManaChangeReason;
3839
import com.nisovin.magicspells.commands.exceptions.InvalidCommandArgumentException;
39-
import com.nisovin.magicspells.util.Util;
4040

4141
public class ManaCommands {
4242

core/src/main/java/com/nisovin/magicspells/commands/ReloadCommands.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,9 @@
22

33
import org.jetbrains.annotations.NotNull;
44

5-
import java.util.Collection;
65
import java.util.Map;
76
import java.util.UUID;
7+
import java.util.Collection;
88
import java.util.stream.Collectors;
99

1010
import net.kyori.adventure.text.Component;
@@ -24,9 +24,9 @@
2424

2525
import com.nisovin.magicspells.Perm;
2626
import com.nisovin.magicspells.Spellbook;
27+
import com.nisovin.magicspells.util.Util;
2728
import com.nisovin.magicspells.MagicSpells;
2829
import com.nisovin.magicspells.events.SpellbookReloadEvent;
29-
import com.nisovin.magicspells.util.Util;
3030

3131
public class ReloadCommands {
3232

core/src/main/java/com/nisovin/magicspells/commands/TaskInfoCommand.java

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,9 +33,7 @@ private static void taskInfo(CommandContext<CommandSourceStack> context) {
3333
.count();
3434

3535
int effectLibTasks = MagicSpells.getEffectManager().getEffects().size();
36-
3736
VolatileCodeHandle handler = MagicSpells.getVolatileCodeHandler();
38-
MagicSpells instance = MagicSpells.getInstance();
3937

4038
context.sender().getSender().sendMessage(Util.getMessageText(
4139
Component.text()

core/src/main/java/com/nisovin/magicspells/commands/parsers/SpellParser.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ public static String escapeIfRequired(@NotNull String string) {
6868

6969
private static boolean shouldQuote(char c) {
7070
return switch (c) {
71-
case ' ', '"', '\'', '[', ']', '{', '}' -> true;
71+
case ' ', '"', '\'', '[', ']', '{', '}' -> true;
7272
default -> false;
7373
};
7474
}

0 commit comments

Comments
 (0)