mirror of
https://gitlab.com/SamB440/rpgregions-2.git
synced 2025-12-27 10:49:08 +00:00
Add /rpgregions discover command
This commit is contained in:
@@ -23,17 +23,14 @@ public class DependencyRequirement extends RegionRequirement {
|
||||
return ImmutableList.copyOf(requiredRegions);
|
||||
}
|
||||
|
||||
public boolean meetsRequirements(Player player, List<String> discoveries) {
|
||||
for (String discovery : discoveries) {
|
||||
if (!requiredRegions.contains(discovery)) return false;
|
||||
}
|
||||
return true;
|
||||
public boolean meetsRequirements(List<String> discoveries) {
|
||||
return discoveries.containsAll(requiredRegions);
|
||||
}
|
||||
|
||||
@Override
|
||||
@Deprecated
|
||||
public boolean meetsRequirements(Player player) {
|
||||
return meetsRequirements(player, Collections.emptyList());
|
||||
return meetsRequirements(Collections.emptyList());
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -55,7 +55,7 @@ public class GriefPreventionIntegration implements IntegrationManager {
|
||||
return null;
|
||||
});
|
||||
|
||||
if (!player.hasPermission("rpgregions.bypassentry") && !dependencyRequirement.meetsRequirements(player, discoveries)) {
|
||||
if (!player.hasPermission("rpgregions.bypassentry") && !dependencyRequirement.meetsRequirements(discoveries)) {
|
||||
requirement.getPreventType().prevent(pme);
|
||||
Translations.CANNOT_ENTER.send(player, requirement.getText(player));
|
||||
return;
|
||||
|
||||
@@ -54,7 +54,7 @@ public class ResidenceIntegration implements IntegrationManager {
|
||||
return null;
|
||||
});
|
||||
|
||||
if (!player.hasPermission("rpgregions.bypassentry") && !dependencyRequirement.meetsRequirements(player, discoveries)) {
|
||||
if (!player.hasPermission("rpgregions.bypassentry") && !dependencyRequirement.meetsRequirements(discoveries)) {
|
||||
requirement.getPreventType().prevent(pme);
|
||||
Translations.CANNOT_ENTER.send(player, requirement.getText(player));
|
||||
return;
|
||||
|
||||
@@ -65,7 +65,7 @@ public class UltraRegionsIntegration implements IntegrationManager {
|
||||
return null;
|
||||
});
|
||||
|
||||
if (!player.hasPermission("rpgregions.bypassentry") && !dependencyRequirement.meetsRequirements(player, discoveries)) {
|
||||
if (!player.hasPermission("rpgregions.bypassentry") && !dependencyRequirement.meetsRequirements(discoveries)) {
|
||||
requirement.getPreventType().prevent(pme);
|
||||
Translations.CANNOT_ENTER.send(player, requirement.getText(player));
|
||||
return;
|
||||
|
||||
@@ -61,7 +61,7 @@ public class WorldGuardIntegration implements IntegrationManager {
|
||||
return null;
|
||||
});
|
||||
|
||||
if (!player.hasPermission("rpgregions.bypassentry") && !dependencyRequirement.meetsRequirements(player, discoveries)) {
|
||||
if (!player.hasPermission("rpgregions.bypassentry") && !dependencyRequirement.meetsRequirements(discoveries)) {
|
||||
requirement.getPreventType().prevent(pme);
|
||||
Translations.CANNOT_ENTER.send(player, requirement.getText(player));
|
||||
return;
|
||||
|
||||
@@ -13,6 +13,7 @@ import net.islandearth.rpgregions.api.integrations.IntegrationType;
|
||||
import net.islandearth.rpgregions.gui.DiscoveryGUI;
|
||||
import net.islandearth.rpgregions.gui.EditorGUI;
|
||||
import net.islandearth.rpgregions.managers.data.region.ConfiguredRegion;
|
||||
import net.islandearth.rpgregions.managers.data.region.WorldDiscovery;
|
||||
import net.islandearth.rpgregions.regenerate.Regenerate;
|
||||
import net.islandearth.rpgregions.rewards.ItemReward;
|
||||
import net.islandearth.rpgregions.utils.RegenUtils;
|
||||
@@ -28,6 +29,8 @@ import java.io.File;
|
||||
import java.io.FileReader;
|
||||
import java.io.IOException;
|
||||
import java.io.Reader;
|
||||
import java.time.LocalDateTime;
|
||||
import java.time.format.DateTimeFormatter;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
@@ -310,4 +313,19 @@ public class RPGRegionsCommand extends BaseCommand {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Subcommand("discover")
|
||||
@CommandPermission("rpgregions.discover")
|
||||
@CommandCompletion("@regions @players")
|
||||
public void onDiscover(Player player, ConfiguredRegion configuredRegion, Player target) {
|
||||
plugin.getManagers().getStorageManager().getAccount(target.getUniqueId()).thenAccept(account -> {
|
||||
LocalDateTime date = LocalDateTime.now();
|
||||
DateTimeFormatter format = DateTimeFormatter.ofPattern(plugin.getConfig().getString("settings.server.discoveries.date.format"));
|
||||
|
||||
String formattedDate = date.format(format);
|
||||
account.addDiscovery(new WorldDiscovery(formattedDate, configuredRegion.getId()));
|
||||
target.sendMessage(ChatColor.GREEN + "An administrator added a discovery to your account.");
|
||||
player.sendMessage(ChatColor.GREEN + "The player " + target.getName() + " has had the discovery added.");
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@@ -12,6 +12,7 @@ import net.islandearth.rpgregions.RPGRegions;
|
||||
import net.islandearth.rpgregions.command.IconCommand;
|
||||
import net.islandearth.rpgregions.managers.data.account.RPGRegionsAccount;
|
||||
import net.islandearth.rpgregions.managers.data.region.ConfiguredRegion;
|
||||
import net.islandearth.rpgregions.requirements.DependencyRequirement;
|
||||
import net.islandearth.rpgregions.requirements.RegionRequirement;
|
||||
import net.islandearth.rpgregions.translation.Translations;
|
||||
import net.islandearth.rpgregions.utils.ItemStackBuilder;
|
||||
@@ -217,15 +218,21 @@ public class DiscoveryGUI extends RPGRegionsGUI {
|
||||
&& hasDiscovered
|
||||
? Translations.TELEPORT.get(player)
|
||||
: null;
|
||||
StringBuilder stringBuilder = new StringBuilder();
|
||||
List<String> requirementStrings = new ArrayList<>();
|
||||
boolean requirements = true;
|
||||
if (!player.hasPermission("rpgregions.bypassentry") && configuredRegion.getRequirements() != null) {
|
||||
for (RegionRequirement requirement : configuredRegion.getRequirements()) {
|
||||
if (!requirement.meetsRequirements(player)) {
|
||||
boolean meets = requirement.meetsRequirements(player);
|
||||
if (requirement instanceof DependencyRequirement) {
|
||||
DependencyRequirement dependencyRequirement = (DependencyRequirement) requirement;
|
||||
List<String> discoveries = new ArrayList<>(account.getDiscoveredRegions().keySet());
|
||||
meets = dependencyRequirement.meetsRequirements(discoveries);
|
||||
}
|
||||
if (!meets) {
|
||||
requirements = false;
|
||||
stringBuilder.append(ChatColor.RED + "\u2718 " + requirement.getText(player));
|
||||
requirementStrings.add(ChatColor.RED + "\u2718 " + requirement.getText(player));
|
||||
} else {
|
||||
stringBuilder.append(ChatColor.GREEN + "\u2714 " + requirement.getText(player));
|
||||
requirementStrings.add(ChatColor.GREEN + "\u2714 " + requirement.getText(player));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -250,7 +257,7 @@ public class DiscoveryGUI extends RPGRegionsGUI {
|
||||
.withLore(lore2)
|
||||
.withLore(hint)
|
||||
.withLore(" ")
|
||||
.withLore(stringBuilder.toString())
|
||||
.withLore(requirementStrings)
|
||||
.withLore(teleport)
|
||||
.addFlags(ItemFlag.HIDE_ATTRIBUTES)
|
||||
.build(),
|
||||
|
||||
Reference in New Issue
Block a user