Skip to content

Commit

Permalink
Merge branch 'master' into l10n_master
Browse files Browse the repository at this point in the history
  • Loading branch information
LlmDl authored Oct 29, 2024
2 parents 69c5d14 + 7b7bad4 commit 672dc6f
Show file tree
Hide file tree
Showing 37 changed files with 747 additions and 283 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/compile-on-push.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ jobs:
runs-on: ubuntu-latest
strategy:
matrix:
java: ['17']
java: ['21']
steps:
- uses: actions/checkout@v3
- name: Set up Java
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/javadoc-test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,6 @@ jobs:
with:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
javadoc-branch: javadoc
java-version: 17
java-version: 21
target-folder: javadoc/prerelease
project: maven
2 changes: 1 addition & 1 deletion .github/workflows/publish-javadoc-on-full-release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,6 @@ jobs:
with:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
javadoc-branch: javadoc
java-version: 17
java-version: 21
target-folder: javadoc/release
project: maven
2 changes: 1 addition & 1 deletion .github/workflows/publish_to_glare_repo.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ jobs:
runs-on: ubuntu-latest
strategy:
matrix:
java: ['17']
java: ['21']
name: mvn deploy @ glare repo
steps:
- name: checkout repo content
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ jobs:
runs-on: ubuntu-latest
strategy:
matrix:
java: ['17']
java: ['21']
steps:
- uses: actions/checkout@v3
- name: Set up Java
Expand Down
19 changes: 13 additions & 6 deletions Towny/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@

<artifactId>towny</artifactId>
<packaging>jar</packaging>
<version>0.100.4.7</version>
<version>0.100.4.8</version>

<licenses>
<license>
Expand Down Expand Up @@ -76,10 +76,17 @@
</repositories>

<dependencies>
<!-- Here to satisfy MockBukkit testing. -->
<dependency>
<groupId>io.papermc.paper</groupId>
<artifactId>paper-api</artifactId>
<version>1.21.1-R0.1-SNAPSHOT</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.spigotmc</groupId>
<artifactId>spigot-api</artifactId>
<version>1.20.4-R0.1-SNAPSHOT</version>
<version>1.21.2-R0.1-SNAPSHOT</version>
<scope>provided</scope>
</dependency>
<dependency>
Expand Down Expand Up @@ -210,13 +217,13 @@
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter</artifactId>
<version>5.11.2</version>
<version>5.11.3</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-api</artifactId>
<version>5.11.2</version>
<version>5.11.3</version>
<scope>test</scope>
</dependency>
<dependency>
Expand All @@ -227,8 +234,8 @@
</dependency>
<dependency>
<groupId>com.github.seeseemelk</groupId>
<artifactId>MockBukkit-v1.20</artifactId>
<version>3.88.1</version>
<artifactId>MockBukkit-v1.21</artifactId>
<version>3.133.2</version>
<scope>test</scope>
</dependency>
</dependencies>
Expand Down
32 changes: 25 additions & 7 deletions Towny/src/main/java/com/palmergames/bukkit/towny/Towny.java
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,7 @@
import com.palmergames.bukkit.towny.object.Translation;
import com.palmergames.bukkit.towny.object.WorldCoord;
import com.palmergames.bukkit.towny.object.metadata.MetadataLoader;
import com.palmergames.bukkit.towny.object.resident.mode.ResidentModeHandler;
import com.palmergames.bukkit.towny.permissions.TownyPerms;
import com.palmergames.bukkit.towny.regen.TownyRegenAPI;
import com.palmergames.bukkit.towny.scheduling.TaskScheduler;
Expand Down Expand Up @@ -236,6 +237,9 @@ public void loadFoundation(boolean reload) {
// Initialize the special log4j hook logger.
TownyLogger.initialize();

// Initialize the ResidentModeHandler.
ResidentModeHandler.initialize();

// Clear all objects from the TownyUniverse class.
townyUniverse.clearAllObjects();

Expand Down Expand Up @@ -682,46 +686,60 @@ public void resetCache(Player player) {
getCache(player).resetAndUpdate(WorldCoord.parseWorldCoord(player));
}

/**
* @deprecated since 0.100.4.6, use {@link ResidentModeHandler#toggleModes(Player, String[], boolean)} instead.
* @param player Player to act upon.
* @param modes String[] of mode names to toggle.
* @param notify whether to notify the player of their modes afterwards.
*/
@Deprecated
public void setPlayerMode(Player player, String[] modes, boolean notify) {

if (player == null)
return;

Resident resident = TownyUniverse.getInstance().getResident(player.getName());
if (resident != null)
resident.setModes(modes, notify);
if (resident == null)
return;

ResidentModeHandler.toggleModes(resident, modes, notify, false);
}

/**
* Remove ALL current modes (and set the defaults)
*
* @param player - player, whose modes are to be reset (all removed).
* @deprecated since 0.100.4.6, use {@link ResidentModeHandler#clearModes(Player))} instead.
* @param player Player, whose modes are to be reset (all removed).
*/
@Deprecated
public void removePlayerMode(Player player) {

Resident resident = TownyUniverse.getInstance().getResident(player.getName());
if (resident != null)
resident.clearModes();
ResidentModeHandler.clearModes(resident, false);
}

/**
* Remove ALL current modes.
*
* @deprecated since 0.100.4.6, use {@link ResidentModeHandler#clearModes(Player)} instead.
* @param player - player, whose modes are to be reset (all removed).
*/
@Deprecated
public void removePlayerModes(Player player) {

Resident resident = TownyUniverse.getInstance().getResident(player.getName());
if (resident != null)
resident.resetModes(new String[0], true);
}
ResidentModeHandler.clearModes(resident, false);
}

/**
* Fetch a list of all the players current modes.
*
* @deprecated since 0.100.4.6, use {@link ResidentModeHandler#getModes(Player)} instead.
* @param player - player, whose modes are to be listed, taken.
* @return list of modes
*/
@Deprecated
public List<String> getPlayerMode(Player player) {

return getPlayerMode(player.getName());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@
import com.palmergames.bukkit.towny.TownyUniverse;
import com.palmergames.bukkit.towny.TownyCommandAddonAPI.CommandType;
import com.palmergames.bukkit.towny.confirmations.Confirmation;
import com.palmergames.bukkit.towny.exceptions.NoPermissionException;
import com.palmergames.bukkit.towny.exceptions.TownyException;
import com.palmergames.bukkit.towny.object.Resident;
import com.palmergames.bukkit.towny.object.SpawnType;
Expand All @@ -19,6 +18,7 @@
import com.palmergames.bukkit.towny.object.Translatable;
import com.palmergames.bukkit.towny.object.Translator;
import com.palmergames.bukkit.towny.object.jail.UnJailReason;
import com.palmergames.bukkit.towny.object.resident.mode.ResidentModeHandler;
import com.palmergames.bukkit.towny.permissions.PermissionNodes;
import com.palmergames.bukkit.towny.tasks.CooldownTimerTask;
import com.palmergames.bukkit.towny.tasks.CooldownTimerTask.CooldownType;
Expand Down Expand Up @@ -68,43 +68,6 @@ public class ResidentCommand extends BaseCommand implements CommandExecutor {
"list"
);

private static final List<String> residentToggleTabCompletes = Arrays.asList(
"pvp",
"fire",
"mobs",
"explosion",
"adminbypass",
"bedspawn",
"plotborder",
"constantplotborder",
"townborder",
"ignoreplots",
"ignoreotherchannels",
"bordertitles",
"townclaim",
"townunclaim",
"plotgroup",
"map",
"spy",
"reset",
"clear",
"infotool"
);

private static final List<String> residentModeTabCompletes = Arrays.asList(
"map",
"townclaim",
"townunclaim",
"plotborder",
"constantplotborder",
"townborder",
"ignoreplots",
"ignoreotherchannels",
"reset",
"clear",
"infotool"
);

private static final List<String> residentConsoleTabCompletes = Arrays.asList(
"?",
"help",
Expand All @@ -129,14 +92,17 @@ public class ResidentCommand extends BaseCommand implements CommandExecutor {
"mobs",
"explosion"
);

private static final List<String> residentToggleModes = new ArrayList<>(residentToggleTabCompletes).stream()
.filter(str -> !residentToggleChoices.contains(str))
.collect(Collectors.toList());

private static final List<String> residentToggleModesUnionToggles = Stream.concat(
new ArrayList<>(residentToggleModes).stream(),
BaseCommand.setOnOffCompletes.stream()
private static final List<String> residentToggleModeTabCompletes = ResidentModeHandler.getValidModeNames();

private static final List<String> residentSetModeTabCompletesWithClearAndReset = Stream.concat(
Arrays.asList("reset", "clear").stream(),
new ArrayList<>(residentToggleModeTabCompletes).stream()
).collect(Collectors.toList());

private static final List<String> residentCompleteToggleChoices = Stream.concat(
new ArrayList<>(residentToggleChoices).stream(),
new ArrayList<>(residentToggleModeTabCompletes).stream()
).collect(Collectors.toList());

public ResidentCommand(Towny instance) {
Expand Down Expand Up @@ -191,16 +157,9 @@ public List<String> onTabComplete(CommandSender sender, Command command, String
break;
case "toggle":
if (args.length == 2) {
return NameUtil.filterByStart(TownyCommandAddonAPI.getTabCompletes(CommandType.RESIDENT_TOGGLE, residentToggleTabCompletes), args[1]);
return NameUtil.filterByStart(TownyCommandAddonAPI.getTabCompletes(CommandType.RESIDENT_TOGGLE, residentCompleteToggleChoices), args[1]);
} else if (args.length == 3 && residentToggleChoices.contains(args[1].toLowerCase(Locale.ROOT))) {
return NameUtil.filterByStart(BaseCommand.setOnOffCompletes, args[2]);
} else if (args.length >= 3) {
String prevArg = args[args.length - 2].toLowerCase(Locale.ROOT);
if (residentToggleModes.contains(prevArg)) {
return NameUtil.filterByStart(residentToggleModesUnionToggles, args[args.length - 1]);
} else if (BaseCommand.setOnOffCompletes.contains(prevArg)) {
return NameUtil.filterByStart(residentToggleModes, args[args.length - 1]);
}
}
break;
case "set":
Expand All @@ -212,7 +171,10 @@ public List<String> onTabComplete(CommandSender sender, Command command, String

switch (args[1].toLowerCase(Locale.ROOT)) {
case "mode":
return NameUtil.filterByStart(residentModeTabCompletes, args[args.length - 1]);
if (args.length == 3)
return NameUtil.filterByStart(residentSetModeTabCompletesWithClearAndReset, args[2]);
else
return NameUtil.filterByStart(residentToggleModeTabCompletes, args[args.length - 1]);
case "perm":
return permTabComplete(StringMgmt.remArgs(args, 2));
case "about":
Expand Down Expand Up @@ -430,8 +392,14 @@ private void residentToggle(Player player, String[] newSplit) throws TownyExcept
}

// Check if we're reseting before trying for nodes.
if (newSplit[0].equalsIgnoreCase("reset") || newSplit[0].equalsIgnoreCase("clear")) {
plugin.removePlayerMode(player);
if (newSplit[0].equalsIgnoreCase("clear")) {
checkPermOrThrow(resident.getPlayer(), PermissionNodes.TOWNY_COMMAND_RESIDENT_SET_MODE_CLEAR.getNode());
ResidentModeHandler.clearModes(resident, false);
return;
}

if (newSplit[0].equalsIgnoreCase("reset")) {
ResidentModeHandler.resetModes(resident, false);
return;
}
TownyPermission perm = resident.getPermissions();
Expand All @@ -441,14 +409,7 @@ private void residentToggle(Player player, String[] newSplit) throws TownyExcept
choice = BaseCommand.parseToggleChoice(newSplit[1]);
}

// Special case chat spy
if (StringMgmt.containsIgnoreCase(Arrays.asList(newSplit), "spy")) {
checkPermOrThrow(player, PermissionNodes.TOWNY_CHAT_SPY.getNode());

resident.toggleMode(newSplit, true);
return;

} else if (newSplit[0].equalsIgnoreCase("pvp")) {
if (newSplit[0].equalsIgnoreCase("pvp")) {
checkPermOrThrow(player, PermissionNodes.TOWNY_COMMAND_RESIDENT_TOGGLE_PVP.getNode());

Town town = resident.getTownOrNull();
Expand Down Expand Up @@ -481,8 +442,7 @@ private void residentToggle(Player player, String[] newSplit) throws TownyExcept
TownyCommandAddonAPI.getAddonCommand(CommandType.RESIDENT_TOGGLE, newSplit[0]).execute(player, "resident", newSplit);
return;
} else {

resident.toggleMode(newSplit, true);
ResidentModeHandler.toggleMode(resident, newSplit[0].toLowerCase(Locale.ROOT), true);
return;

}
Expand Down Expand Up @@ -545,7 +505,7 @@ public void residentSet(Player player, String[] split) throws TownyException {
checkPermOrThrow(player, PermissionNodes.TOWNY_COMMAND_RESIDENT_SET_PERM.getNode());
TownCommand.setTownBlockPermissions(player, resident, resident.getPermissions(), StringMgmt.remFirstArg(split), true);
}
case "mode" -> setMode(player, StringMgmt.remFirstArg(split));
case "mode" -> setMode(resident, StringMgmt.remFirstArg(split));
case "about" -> setAbout(player, String.join(" ", StringMgmt.remFirstArg(split)), resident);
default -> {
if (TownyCommandAddonAPI.hasCommand(CommandType.RESIDENT_SET, split[0])) {
Expand All @@ -559,31 +519,26 @@ public void residentSet(Player player, String[] split) throws TownyException {
resident.save();
}

private void setMode(Player player, String[] split) throws NoPermissionException {
checkPermOrThrow(player, PermissionNodes.TOWNY_COMMAND_RESIDENT_SET_MODE.getNode());

private void setMode(Resident resident, String[] split) throws TownyException {
if (split.length == 0) {
HelpMenu.RESIDENT_SET_MODE.send(player);
HelpMenu.RESIDENT_SET_MODE.send(resident.getPlayer());
return;
}

if (split[0].equalsIgnoreCase("clear")) {
plugin.removePlayerModes(player);
checkPermOrThrow(resident.getPlayer(), PermissionNodes.TOWNY_COMMAND_RESIDENT_SET_MODE_CLEAR.getNode());
ResidentModeHandler.clearModes(resident, true);
return;
}

if (split[0].equalsIgnoreCase("reset")) {
plugin.removePlayerMode(player);
ResidentModeHandler.resetModes(resident, true);
return;
}

List<String> list = Arrays.asList(split);
if (list.contains("spy"))
checkPermOrThrow(player, PermissionNodes.TOWNY_CHAT_SPY.getNode());

plugin.setPlayerMode(player, split, true);
ResidentModeHandler.toggleModes(resident, split, true, false);
}

private void setAbout(Player player, String about, Resident resident) throws TownyException {
checkPermOrThrow(player, PermissionNodes.TOWNY_COMMAND_RESIDENT_SET_ABOUT.getNode());

Expand Down
Loading

0 comments on commit 672dc6f

Please sign in to comment.