Skip to content

Commit cc48553

Browse files
committed
3.15 update
1 parent fef1318 commit cc48553

30 files changed

+186
-168
lines changed

build.gradle

Lines changed: 13 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,8 @@
11
plugins {
22
id 'java'
3-
id 'com.github.johnrengelman.shadow' version '6.1.0'
4-
id "io.freefair.lombok" version "6.0.0-m2"
5-
id "maven-publish"
63
id 'info.solidsoft.pitest' version '1.7.0'
4+
id 'com.gradleup.shadow' version '9.0.0-beta8'
5+
id 'io.freefair.lombok' version "8.12.1"
76
}
87

98
pitest {
@@ -14,11 +13,11 @@ pitest {
1413
}
1514

1615
group 'sh.okx'
17-
version '3.14.4'
16+
version '3.15'
1817

1918
java {
20-
sourceCompatibility = JavaVersion.VERSION_1_8
21-
targetCompatibility = JavaVersion.VERSION_1_8
19+
sourceCompatibility = JavaVersion.VERSION_21
20+
targetCompatibility = JavaVersion.VERSION_21
2221
}
2322

2423
repositories {
@@ -38,34 +37,37 @@ repositories {
3837
maven {
3938
url 'https://nexus.neetgames.com/repository/maven-releases/'
4039
}
40+
maven {
41+
url 'https://repo.papermc.io/repository/maven-public/'
42+
}
4143
}
4244

4345
dependencies {
4446
testImplementation 'org.junit.platform:junit-platform-launcher:1.8.2'
4547
testImplementation 'org.junit.jupiter:junit-jupiter-engine:5.8.2'
46-
testImplementation 'com.github.MockBukkit:MockBukkit:04889261630cd6f5aaebd86a576bbcd12c442ea7'
48+
testImplementation 'com.github.MockBukkit:MockBukkit:v4.31.1'
4749

4850
implementation group: 'org.slf4j', name: 'slf4j-nop', version: '1.7.30'
4951
implementation group: 'org.slf4j', name: 'slf4j-api', version: '1.7.30'
5052

5153
compileOnly 'org.jetbrains:annotations:22.0.0'
52-
compileOnly 'org.spigotmc:spigot-api:1.20.1-R0.1-SNAPSHOT'
54+
compileOnly 'org.spigotmc:spigot-api:1.21.4-R0.1-SNAPSHOT'
5355
compileOnly('com.github.Realizedd:TokenManager:3.2.4') {
5456
transitive = false
5557
}
5658

5759
compileOnly('com.github.MilkBowl:VaultAPI:1.7') {
5860
exclude group: 'org.bukkit'
5961
}
60-
compileOnly ('me.clip:placeholderapi:2.10.9') {
62+
compileOnly('me.clip:placeholderapi:2.10.9') {
6163
exclude group: 'org.bstats'
6264
}
6365
compileOnly 'com.github.pyvesb:advanced-achievements:8.0.2'
6466
compileOnly 'com.github.astei:Superbvote:700fca43659b438cb9bb36c218a7646d2f2ef315'
6567
compileOnly('com.gmail.nossr50.mcMMO:mcMMO:2.2.004') {
6668
exclude group: 'com.sk89q.worldguard'
6769
}
68-
compileOnly ('com.bencodez:votingplugin:6.14.1') {
70+
compileOnly('com.bencodez:votingplugin:6.14.1') {
6971
transitive = false
7072
}
7173

@@ -74,7 +76,7 @@ dependencies {
7476
compileOnly 'com.github.LlmDl:Towny:25fc18a'
7577
testImplementation 'com.github.LlmDl:Towny:25fc18a'
7678

77-
implementation ('io.pebbletemplates:pebble:3.1.5') {
79+
implementation('io.pebbletemplates:pebble:3.1.5') {
7880
exclude group: 'org.slf4j'
7981
}
8082
implementation 'com.electronwill.night-config:toml:3.6.4'
@@ -120,13 +122,3 @@ test {
120122
events "passed", "skipped", "failed"
121123
}
122124
}
123-
124-
125-
publishing {
126-
publications {
127-
maven(MavenPublication) {
128-
from components.java
129-
}
130-
}
131-
}
132-
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
distributionBase=GRADLE_USER_HOME
22
distributionPath=wrapper/dists
3-
distributionUrl=https\://services.gradle.org/distributions/gradle-7.4.2-bin.zip
3+
distributionUrl=https\://services.gradle.org/distributions/gradle-8.12.1-bin.zip
44
zipStoreBase=GRADLE_USER_HOME
55
zipStorePath=wrapper/dists

src/main/java/sh/okx/rankup/RankupHelper.java

Lines changed: 9 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,5 @@
11
package sh.okx.rankup;
22

3-
import java.util.HashMap;
4-
import java.util.Map;
5-
import java.util.Objects;
63
import org.bukkit.Bukkit;
74
import org.bukkit.configuration.ConfigurationSection;
85
import org.bukkit.entity.Player;
@@ -16,6 +13,10 @@
1613
import sh.okx.rankup.ranks.RankElement;
1714
import sh.okx.rankup.ranks.Rankups;
1815

16+
import java.util.HashMap;
17+
import java.util.Map;
18+
import java.util.Objects;
19+
1920
/**
2021
* Actually performs the ranking up and prestiging for the plugin and also manages the cooldowns
2122
* between ranking up.
@@ -38,9 +39,10 @@ public RankupHelper(RankupPlugin plugin) {
3839

3940
public void doRankup(Player player, RankElement<Rank> rank) {
4041
if (rank.getRank() != null) {
41-
permissions.removeGroup(player.getUniqueId(), rank.getRank().getRank());
42+
permissions.transferGroup(player.getUniqueId(), rank.getRank().getRank(), rank.getNext().getRank().getRank());
43+
} else {
44+
permissions.transferGroup(player.getUniqueId(), null, rank.getNext().getRank().getRank());
4245
}
43-
permissions.addGroup(player.getUniqueId(), rank.getNext().getRank().getRank());
4446

4547
rank.getRank().runCommands(player, rank.getNext().getRank());
4648

@@ -65,13 +67,9 @@ public void sendRankupMessages(Player player, RankElement<Rank> rank) {
6567
public void doPrestige(Player player, RankElement<Prestige> prestige) {
6668
Prestige rank = prestige.getRank();
6769

68-
permissions.removeGroup(player.getUniqueId(), rank.getFrom());
69-
permissions.addGroup(player.getUniqueId(), rank.getTo());
70+
permissions.transferGroup(player.getUniqueId(), rank.getFrom(), rank.getTo());
7071

71-
if (rank.getRank() != null) {
72-
permissions.removeGroup(player.getUniqueId(), rank.getRank());
73-
}
74-
permissions.addGroup(player.getUniqueId(), prestige.getNext().getRank().getRank());
72+
permissions.transferGroup(player.getUniqueId(), rank.getRank(), prestige.getNext().getRank().getRank());
7573

7674
rank.runCommands(player, prestige.getNext().getRank());
7775

src/main/java/sh/okx/rankup/RankupPlugin.java

Lines changed: 31 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,14 @@
1111
import org.bukkit.entity.Player;
1212
import org.bukkit.event.inventory.InventoryType;
1313
import org.bukkit.inventory.InventoryView;
14-
import org.bukkit.plugin.PluginDescriptionFile;
1514
import org.bukkit.plugin.PluginManager;
1615
import org.bukkit.plugin.java.JavaPlugin;
17-
import org.bukkit.plugin.java.JavaPluginLoader;
18-
import sh.okx.rankup.commands.*;
16+
import sh.okx.rankup.commands.InfoCommand;
17+
import sh.okx.rankup.commands.MaxRankupCommand;
18+
import sh.okx.rankup.commands.PrestigeCommand;
19+
import sh.okx.rankup.commands.PrestigesCommand;
20+
import sh.okx.rankup.commands.RanksCommand;
21+
import sh.okx.rankup.commands.RankupCommand;
1922
import sh.okx.rankup.economy.Economy;
2023
import sh.okx.rankup.economy.EconomyProvider;
2124
import sh.okx.rankup.economy.VaultEconomyProvider;
@@ -38,15 +41,37 @@
3841
import sh.okx.rankup.ranksgui.RanksGuiListener;
3942
import sh.okx.rankup.requirements.Requirement;
4043
import sh.okx.rankup.requirements.RequirementRegistry;
41-
import sh.okx.rankup.requirements.requirement.*;
44+
import sh.okx.rankup.requirements.requirement.AdvancementRequirement;
45+
import sh.okx.rankup.requirements.requirement.BlockBreakRequirement;
46+
import sh.okx.rankup.requirements.requirement.CraftItemRequirement;
47+
import sh.okx.rankup.requirements.requirement.GroupRequirement;
48+
import sh.okx.rankup.requirements.requirement.ItemDeductibleRequirement;
49+
import sh.okx.rankup.requirements.requirement.ItemRequirement;
50+
import sh.okx.rankup.requirements.requirement.MobKillsRequirement;
51+
import sh.okx.rankup.requirements.requirement.MoneyDeductibleRequirement;
52+
import sh.okx.rankup.requirements.requirement.MoneyRequirement;
53+
import sh.okx.rankup.requirements.requirement.PermissionRequirement;
54+
import sh.okx.rankup.requirements.requirement.PlaceholderRequirement;
55+
import sh.okx.rankup.requirements.requirement.PlayerKillsRequirement;
56+
import sh.okx.rankup.requirements.requirement.PlaytimeMinutesRequirement;
57+
import sh.okx.rankup.requirements.requirement.TotalMobKillsRequirement;
58+
import sh.okx.rankup.requirements.requirement.UseItemRequirement;
59+
import sh.okx.rankup.requirements.requirement.WorldRequirement;
60+
import sh.okx.rankup.requirements.requirement.XpLevelDeductibleRequirement;
61+
import sh.okx.rankup.requirements.requirement.XpLevelRequirement;
4262
import sh.okx.rankup.requirements.requirement.advancedachievements.AdvancedAchievementsAchievementRequirement;
4363
import sh.okx.rankup.requirements.requirement.advancedachievements.AdvancedAchievementsTotalRequirement;
4464
import sh.okx.rankup.requirements.requirement.mcmmo.McMMOPowerLevelRequirement;
4565
import sh.okx.rankup.requirements.requirement.mcmmo.McMMOSkillRequirement;
4666
import sh.okx.rankup.requirements.requirement.superbvote.SuperbVoteVotesRequirement;
4767
import sh.okx.rankup.requirements.requirement.tokenmanager.TokensDeductibleRequirement;
4868
import sh.okx.rankup.requirements.requirement.tokenmanager.TokensRequirement;
49-
import sh.okx.rankup.requirements.requirement.towny.*;
69+
import sh.okx.rankup.requirements.requirement.towny.TownyKingNumberResidentsRequirement;
70+
import sh.okx.rankup.requirements.requirement.towny.TownyKingNumberTownsRequirement;
71+
import sh.okx.rankup.requirements.requirement.towny.TownyKingRequirement;
72+
import sh.okx.rankup.requirements.requirement.towny.TownyMayorNumberResidentsRequirement;
73+
import sh.okx.rankup.requirements.requirement.towny.TownyMayorRequirement;
74+
import sh.okx.rankup.requirements.requirement.towny.TownyResidentRequirement;
5075
import sh.okx.rankup.requirements.requirement.votingplugin.VotingPluginPointsDeductibleRequirement;
5176
import sh.okx.rankup.requirements.requirement.votingplugin.VotingPluginPointsRequirement;
5277
import sh.okx.rankup.requirements.requirement.votingplugin.VotingPluginVotesRequirement;
@@ -97,8 +122,7 @@ public RankupPlugin() {
97122
super();
98123
}
99124

100-
protected RankupPlugin(JavaPluginLoader loader, PluginDescriptionFile description, File dataFolder, File file, PermissionManager permissionManager, EconomyProvider economyProvider) {
101-
super(loader, description, dataFolder, file);
125+
protected RankupPlugin(PermissionManager permissionManager, EconomyProvider economyProvider) {
102126
this.permissionManager = permissionManager;
103127
this.economyProvider = economyProvider;
104128
}

src/main/java/sh/okx/rankup/commands/InfoCommand.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -146,9 +146,10 @@ public boolean onCommand(CommandSender sender, Command command, String label, St
146146
Rank prevRank = prevRankElement.getRank();
147147

148148
if (prevRankElement.getRank() != null) {
149-
plugin.getPermissions().removeGroup(player.getUniqueId(), currentRank.getRank());
149+
plugin.getPermissions().transferGroup(player.getUniqueId(), currentRank.getRank(), prevRank.getRank());
150+
} else {
151+
plugin.getPermissions().transferGroup(player.getUniqueId(), null, prevRank.getRank());
150152
}
151-
plugin.getPermissions().addGroup(player.getUniqueId(), prevRank.getRank());
152153

153154
sender.sendMessage(ChatColor.GREEN + "Successfully forced "
154155
+ ChatColor.GOLD + player.getName()

src/main/java/sh/okx/rankup/gui/Gui.java

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,5 @@
11
package sh.okx.rankup.gui;
22

3-
import java.util.Arrays;
4-
import java.util.Objects;
5-
import java.util.stream.Collectors;
63
import lombok.AccessLevel;
74
import lombok.Getter;
85
import lombok.RequiredArgsConstructor;
@@ -24,6 +21,10 @@
2421
import sh.okx.rankup.util.Colour;
2522
import sh.okx.rankup.util.ItemUtil;
2623

24+
import java.util.Arrays;
25+
import java.util.Objects;
26+
import java.util.stream.Collectors;
27+
2728
@RequiredArgsConstructor(access = AccessLevel.PRIVATE)
2829
public class Gui implements InventoryHolder {
2930

@@ -97,6 +98,11 @@ public static ItemStack getItem(RankupPlugin plugin, ConfigurationSection sectio
9798
if (section == null) {
9899
return null;
99100
}
101+
ItemStack serializedItem = section.getItemStack("item");
102+
if (serializedItem != null) {
103+
return serializedItem;
104+
}
105+
100106
String materialName = section.getString("material").toUpperCase();
101107

102108
ItemStack item;

src/main/java/sh/okx/rankup/hook/GroupProvider.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,5 @@
44

55
public interface GroupProvider {
66
boolean inGroup(UUID uuid, String group);
7-
void addGroup(UUID uuid, String group);
8-
void removeGroup(UUID uuid, String group);
7+
void transferGroup(UUID uuid, String oldGroup, String group);
98
}

src/main/java/sh/okx/rankup/hook/LuckPermsGroupProvider.java

Lines changed: 7 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,14 @@
11
package sh.okx.rankup.hook;
22

3-
import java.util.UUID;
43
import net.luckperms.api.LuckPerms;
54
import net.luckperms.api.context.ContextSet;
65
import net.luckperms.api.context.ImmutableContextSet;
76
import net.luckperms.api.model.group.Group;
87
import net.luckperms.api.model.user.User;
98
import net.luckperms.api.node.types.InheritanceNode;
109

10+
import java.util.UUID;
11+
1112
public class LuckPermsGroupProvider implements GroupProvider {
1213

1314
private final LuckPerms luckPerms;
@@ -39,26 +40,21 @@ public static LuckPermsGroupProvider createFromString(LuckPerms luckPerms, Strin
3940
public boolean inGroup(UUID uuid, String group) {
4041
User user = luckPerms.getUserManager().getUser(uuid);
4142
for (Group lpGroup : user.getInheritedGroups(user.getQueryOptions().toBuilder().context(contextSet).build())) {
42-
if (lpGroup.getName().equals(group)) {
43+
if (lpGroup.getName().equalsIgnoreCase(group)) {
4344
return true;
4445
}
4546
}
4647
return false;
4748
}
4849

4950
@Override
50-
public void addGroup(UUID uuid, String group) {
51+
public void transferGroup(UUID uuid, String oldGroup, String group) {
5152
User user = luckPerms.getUserManager().getUser(uuid);
53+
if (oldGroup != null) {
54+
user.data().remove(InheritanceNode.builder(oldGroup).context(contextSet).build());
55+
}
5256
user.data().add(InheritanceNode.builder(group).context(contextSet).build());
5357

5458
luckPerms.getUserManager().saveUser(user);
5559
}
56-
57-
@Override
58-
public void removeGroup(UUID uuid, String group) {
59-
User user = luckPerms.getUserManager().getUser(uuid);
60-
user.data().remove(InheritanceNode.builder(group).context(contextSet).build());
61-
62-
luckPerms.getUserManager().saveUser(user);
63-
}
6460
}

src/main/java/sh/okx/rankup/hook/PermissionGroupProvider.java

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
11
package sh.okx.rankup.hook;
22

3-
import java.util.UUID;
43
import org.bukkit.Bukkit;
54
import org.bukkit.entity.Player;
65

6+
import java.util.UUID;
7+
78
public class PermissionGroupProvider implements GroupProvider {
89

910
@Override
@@ -13,12 +14,7 @@ public boolean inGroup(UUID uuid, String group) {
1314
}
1415

1516
@Override
16-
public void addGroup(UUID uuid, String group) {
17-
// no-op
18-
}
19-
20-
@Override
21-
public void removeGroup(UUID uuid, String group) {
17+
public void transferGroup(UUID uuid, String oldGroup, String group) {
2218
// no-op
2319
}
2420

src/main/java/sh/okx/rankup/hook/VaultGroupProvider.java

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -28,18 +28,14 @@ public boolean inGroup(UUID uuid, String group) {
2828
}
2929

3030
@Override
31-
public void addGroup(UUID uuid, String group) {
31+
public void transferGroup(UUID uuid, String oldGroup, String group) {
3232
Objects.requireNonNull(uuid);
3333
Objects.requireNonNull(group);
3434

35-
permission.playerAddGroup(null, Bukkit.getOfflinePlayer(uuid), group);
36-
}
37-
38-
@Override
39-
public void removeGroup(UUID uuid, String group) {
40-
Objects.requireNonNull(uuid);
41-
Objects.requireNonNull(group);
35+
if (oldGroup != null) {
36+
permission.playerRemoveGroup(null, Bukkit.getOfflinePlayer(uuid), oldGroup);
37+
}
4238

43-
permission.playerRemoveGroup(null, Bukkit.getOfflinePlayer(uuid), group);
39+
permission.playerAddGroup(null, Bukkit.getOfflinePlayer(uuid), group);
4440
}
4541
}

0 commit comments

Comments
 (0)