Added update checker

This commit is contained in:
WildInterloper 2024-03-09 14:43:09 -05:00
parent b2ec19387f
commit 900e2ca0ed
11 changed files with 356 additions and 73 deletions

View File

@ -26,5 +26,10 @@
<option name="name" value="JBoss Community repository" />
<option name="url" value="https://repository.jboss.org/nexus/content/repositories/public/" />
</remote-repository>
<remote-repository>
<option name="id" value="enginehub" />
<option name="name" value="enginehub" />
<option name="url" value="https://maven.enginehub.org/repo/" />
</remote-repository>
</component>
</project>

37
pom.xml
View File

@ -6,13 +6,15 @@
<groupId>me.NVus</groupId>
<artifactId>NVus_Prison_Setup</artifactId>
<version>0.6.6</version>
<version>0.7.5</version>
<packaging>jar</packaging>
<name>NVus_PrisonSetup</name>
<properties>
<java.version>1.8</java.version>
<java.version>17</java.version>
<maven.compiler.source>17</maven.compiler.source>
<maven.compiler.target>17</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<url>https://FNGnation.net</url>
@ -90,8 +92,24 @@
<id>sonatype</id>
<url>https://oss.sonatype.org/content/groups/public/</url>
</repository>
<repository>
<id>enginehub</id>
<url>https://maven.enginehub.org/repo/</url>
</repository>
</repositories>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.intellectualsites.bom</groupId>
<artifactId>bom-newest</artifactId> <!-- Ref: https://github.com/IntellectualSites/bom -->
<version>1.42</version>
<scope>import</scope>
<type>pom</type>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>io.papermc.paper</groupId>
@ -99,7 +117,20 @@
<version>1.20.4-R0.1-SNAPSHOT</version>
<scope>provided</scope>
</dependency>
<!-- <dependency>-->
<dependency>
<groupId>com.sk89q.worldguard</groupId>
<artifactId>worldguard-bukkit</artifactId>
<version>7.0.9</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.fastasyncworldedit</groupId>
<artifactId>FastAsyncWorldEdit-Core</artifactId>
<scope>provided</scope>
</dependency>
<!-- <dependency>-->
<!-- <groupId>com.github.wvengen</groupId>-->
<!-- <artifactId>proguard-maven-plugin</artifactId>-->
<!-- <version>2.6.1</version>-->

View File

@ -14,12 +14,15 @@ import org.bukkit.inventory.meta.ItemMeta;
import org.bukkit.plugin.java.JavaPlugin;
import java.util.HashMap;
import java.util.Map;
import java.util.UUID;
import java.util.concurrent.ConcurrentHashMap;
import java.util.function.Consumer;
public class SettingsMenu implements Listener {
private final JavaPlugin plugin;
private final ConfigManager configManager;
private final HashMap<UUID, Long> lastClickTime = new HashMap<>();
private final Map<UUID, Consumer<Player>> playerTasks = new ConcurrentHashMap<>();
public SettingsMenu(JavaPlugin plugin, ConfigManager configManager) {
this.plugin = plugin;
@ -29,14 +32,13 @@ public class SettingsMenu implements Listener {
public void openSettingsMenu(Player player) {
Inventory inv = Bukkit.createInventory(null, 9, ChatColor.DARK_GREEN + "Settings Menu");
// Retrieve configurations directly using ConfigManager
FileConfiguration config = configManager.getConfig("config.yml");
// Toggle items with dynamic status from config
inv.setItem(0, createToggleItem(Material.LEATHER_CHESTPLATE, "Toggle PrisonerArmor", config.getBoolean("PrisonerArmor", false)));
inv.setItem(1, createToggleItem(Material.IRON_DOOR, "Toggle RestrictArmor", config.getBoolean("RestrictArmor", false)));
inv.setItem(3, createToggleItem(Material.HOPPER, "Toggle AutoPickup", config.getBoolean("AutoPickup", false)));
inv.setItem(4, createToggleItem(Material.LEVER, "Toggle AutoSwitch", config.getBoolean("AutoSwitch", false)));
inv.setItem(5, createItem(Material.BOOK, ChatColor.GREEN + "Reload Configs"));
inv.setItem(7, createItem(Material.BOOK, ChatColor.GREEN + "Reload Configs"));
player.openInventory(inv);
}
@ -59,47 +61,69 @@ public class SettingsMenu implements Listener {
@EventHandler
public void onInventoryClick(InventoryClickEvent event) {
if (!event.getView().getTitle().equals(ChatColor.DARK_RED + "NVus Prison Settings")) return;
if (!event.getView().getTitle().equals(ChatColor.DARK_GREEN + "Settings Menu")) return;
event.setCancelled(true);
Player player = (Player) event.getWhoClicked();
UUID playerUUID = player.getUniqueId();
// Implement cooldown check
long lastClick = lastClickTime.getOrDefault(playerUUID, 0L);
long currentTime = System.currentTimeMillis();
if (currentTime - lastClick < 500) return; // 500 ms cooldown
lastClickTime.put(playerUUID, currentTime);
// Execute any pending tasks for this player before processing a new one
playerTasks.computeIfPresent(playerUUID, (uuid, task) -> {
Bukkit.getScheduler().runTask(plugin, () -> task.accept(player));
return null;
});
ItemStack clickedItem = event.getCurrentItem();
if (clickedItem == null || !clickedItem.hasItemMeta()) return;
if (clickedItem == null || !clickedItem.hasItemMeta() || !clickedItem.getItemMeta().hasDisplayName()) {
return;
}
String displayName = clickedItem.getItemMeta().getDisplayName();
String displayName = ChatColor.stripColor(clickedItem.getItemMeta().getDisplayName());
scheduleConfigToggle(playerUUID, displayName);
}
if (displayName.contains("Toggle AutoPickup")) {
private void scheduleConfigToggle(UUID playerUUID, String displayName) {
Consumer<Player> task = player -> {
if (displayName.contains("Toggle PrisonerArmor")) {
toggleConfigOption(player, "PrisonerArmor");
} else if (displayName.contains("Toggle RestrictArmor")) {
toggleConfigOption(player, "RestrictArmor");
} else if (displayName.contains("Toggle AutoPickup")) {
toggleConfigOption(player, "AutoPickup");
} else if (displayName.contains("Toggle AutoSwitch")) {
toggleConfigOption(player, "AutoSwitch");
} else if (displayName.contains("Reload Configs")) {
reloadConfigs(player);
}
};
playerTasks.put(playerUUID, task);
}
private void toggleConfigOption(Player player, String configKey) {
private void toggleConfigOption(final Player player, String configKey) {
// Close the inventory to prevent further clicks
player.closeInventory();
// Re-open menu, 10 tick delay
Bukkit.getScheduler().runTaskLater(plugin, () -> openSettingsMenu(player), 10L);
FileConfiguration config = configManager.getConfig("config.yml");
boolean currentValue = config.getBoolean(configKey, false);
config.set(configKey, !currentValue);
configManager.saveConfig("config.yml");
player.sendMessage(ChatColor.GREEN + configKey + " " + (!currentValue ? "enabled" : "disabled"));
openSettingsMenu(player); // Refresh the inventory to reflect the change
// Debug message
//player.sendMessage(ChatColor.GREEN + configKey + " " + (!currentValue ? "enabled" : "disabled"));
}
private void reloadConfigs(Player player) {
private void reloadConfigs(final Player player) {
configManager.reloadConfig("config.yml");
configManager.reloadConfig("auto_switch.yml");
configManager.reloadConfig("banned_items.yml");
configManager.saveConfig("config.yml"); // Ensure any changes are saved before reload
configManager.saveConfig("config.yml");
player.sendMessage(ChatColor.GREEN + "Configuration files reloaded.");
openSettingsMenu(player); // Refresh the inventory
}
}

View File

@ -1,35 +1,81 @@
package me.nvus.nvus_prison_setup.Listeners;
import com.sk89q.worldedit.bukkit.BukkitAdapter;
import com.sk89q.worldguard.WorldGuard;
import com.sk89q.worldguard.bukkit.WorldGuardPlugin;
import com.sk89q.worldguard.protection.flags.Flags;
import com.sk89q.worldguard.protection.regions.RegionContainer;
import com.sk89q.worldguard.protection.regions.RegionQuery;
import me.nvus.nvus_prison_setup.PrisonSetup;
import org.bukkit.Material;
import org.bukkit.block.Block;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;
import org.bukkit.event.block.BlockBreakEvent;
import org.bukkit.inventory.ItemStack;
import java.util.Arrays;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
public class BlockListener implements Listener {
private final PrisonSetup plugin;
private final Set<Material> storageBlocks = new HashSet<>(Arrays.asList(
Material.CHEST,
Material.TRAPPED_CHEST,
Material.ACACIA_CHEST_BOAT,
Material.BIRCH_CHEST_BOAT,
Material.DARK_OAK_CHEST_BOAT,
Material.JUNGLE_CHEST_BOAT,
Material.OAK_CHEST_BOAT,
Material.SPRUCE_CHEST_BOAT,
Material.FURNACE,
Material.BLAST_FURNACE,
Material.SMOKER,
Material.BARREL,
Material.DISPENSER,
Material.DROPPER,
Material.HOPPER,
Material.CAULDRON,
Material.SHULKER_BOX,
Material.CHEST_MINECART,
Material.BARREL,
Material.CHISELED_BOOKSHELF,
Material.BUNDLE
// Add more!
));
public BlockListener(PrisonSetup plugin) {
this.plugin = plugin;
}
@EventHandler
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
public void onBlockBreak(BlockBreakEvent event) {
Player player = event.getPlayer();
Block block = event.getBlock();
// Check if the player is a prisoner and auto-pickup is enabled
if (!isBlockBreakAllowed(player, block.getLocation())) {
event.setCancelled(true); // Prevent the block from being broken
event.setDropItems(false); // Prevent the block from dropping items
//player.sendMessage("You cannot break blocks in this area.");
return;
}
if (storageBlocks.contains(block.getType())) {
return;
}
if (player.hasPermission("nvus.prisoner") && plugin.getConfigManager().getConfig("config.yml").getBoolean("AutoPickup")) {
List<ItemStack> drops = Arrays.asList(block.getDrops().toArray(new ItemStack[0]));
List<ItemStack> drops = block.getDrops().stream().toList();
for (ItemStack drop : drops) {
if (player.getInventory().addItem(drop).isEmpty()) {
// Inventory has enough space, remove the dropped item
event.setDropItems(false);
} else {
// Inventory is full, drop the item on the ground
@ -39,4 +85,25 @@ public class BlockListener implements Listener {
}
}
}
private boolean isBlockBreakAllowed(Player player, org.bukkit.Location bukkitLocation) {
if (player.hasPermission("worldguard.region.bypass." + bukkitLocation.getWorld().getName()) || player.hasPermission("worldguard.region.bypass.*")) {
return true;
}
com.sk89q.worldedit.util.Location location = BukkitAdapter.adapt(bukkitLocation);
RegionContainer container = WorldGuard.getInstance().getPlatform().getRegionContainer();
RegionQuery query = container.createQuery();
com.sk89q.worldguard.LocalPlayer localPlayer = WorldGuardPlugin.inst().wrapPlayer(player);
if (query.testBuild(location, localPlayer)) {
return true;
}
// region membership, ownership, and specific flags set on the region
return query.testState(location, localPlayer, Flags.BLOCK_BREAK);
}
}

View File

@ -61,6 +61,21 @@ public class CommandListener implements CommandExecutor {
}
handleToggleConfigCommand(sender, "AutoSwitch", args[1]);
break;
case "prisonerarmor": // New case for toggling PrisonerArmor
if (args.length < 2) {
sender.sendMessage(ChatColor.RED + "Usage: /nvus prisonerarmor <true|false>");
return true;
}
handleToggleConfigCommand(sender, "PrisonerArmor", args[1]);
break;
case "restrictarmor": // New case for toggling RestrictArmor
if (args.length < 2) {
sender.sendMessage(ChatColor.RED + "Usage: /nvus restrictarmor <true|false>");
return true;
}
handleToggleConfigCommand(sender, "RestrictArmor", args[1]);
break;
default:
sender.sendMessage(ChatColor.RED + "Invalid command. Use /nvus for help.");
return true;

View File

@ -1,31 +1,82 @@
package me.nvus.nvus_prison_setup.Listeners;
import me.nvus.nvus_prison_setup.Configs.ConfigManager;
import org.bukkit.ChatColor;
import org.bukkit.Color;
import org.bukkit.Material;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;
import org.bukkit.event.inventory.InventoryClickEvent;
import org.bukkit.event.inventory.InventoryType;
import org.bukkit.event.player.PlayerJoinEvent;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.PlayerInventory;
import org.bukkit.inventory.meta.LeatherArmorMeta;
public class PlayerArmor implements Listener {
private final ConfigManager configManager;
public PlayerArmor(ConfigManager configManager) {
this.configManager = configManager;
}
@EventHandler
public void onPlayerJoin(PlayerJoinEvent event) {
Player player = event.getPlayer();
if (player.hasPermission("nvus.prisoner") && configManager.getConfig("config.yml").getBoolean("PrisonerArmor")) {
PlayerInventory inv = player.getInventory();
inv.setArmorContents(new ItemStack[]{
createArmor(Material.LEATHER_BOOTS, "Prisoner Boots"),
createArmor(Material.LEATHER_LEGGINGS, "Prisoner Leggings"),
createArmor(Material.LEATHER_CHESTPLATE, "Prisoner Chestplate"),
createArmor(Material.LEATHER_HELMET, "Prisoner Helmet")
});
player.sendMessage(ChatColor.translateAlternateColorCodes('&', "&6&lYou have been equipped with prisoner armor!"));
}
}
// Prevent Armor Unequip??
@EventHandler(priority = EventPriority.LOWEST)
public void onInventoryClick(InventoryClickEvent event) {
if (event.getClickedInventory() != null && event.getClickedInventory().getType() == InventoryType.PLAYER) {
if (event.getSlotType() == InventoryType.SlotType.ARMOR) {
Player player = (Player) event.getWhoClicked();
// Check if the player is an actual prisoner before cancelling ;)
if (player.hasPermission("nvus.prisoner")) {
if (!player.hasPermission("nvus.prisoner")) return;
if (event.getClickedInventory() != null && (event.getClickedInventory().getType() == InventoryType.PLAYER || event.getClickedInventory().getType() == InventoryType.CRAFTING)) {
if (event.getSlotType() == InventoryType.SlotType.ARMOR || isArmorItem(event.getCurrentItem()) || isArmorItem(event.getCursor())) {
boolean restrictArmor = configManager.getConfig("config.yml").getBoolean("RestrictArmor");
if (restrictArmor) {
event.setCancelled(true);
player.sendMessage(ChatColor.translateAlternateColorCodes('&',"&c&lSorry inmate! &cYou're a &6&lprisoner &cand cannot change your armor!"));
player.sendMessage(ChatColor.translateAlternateColorCodes('&', "&c&lSorry inmate! &cYou're a &6&lprisoner &cand cannot change your armor!"));
}
// If restrictArmor is false, allows the player to change armor freely.
}
}
}
// Checks if the given item is a piece of prisoner armor.
private boolean isArmorItem(ItemStack item) {
if (item == null) {
return false;
}
Material type = item.getType();
return type == Material.LEATHER_HELMET || type == Material.LEATHER_CHESTPLATE ||
type == Material.LEATHER_LEGGINGS || type == Material.LEATHER_BOOTS ||
// Add checks for other armor materials if prisoners can have those
type == Material.CHAINMAIL_BOOTS || type == Material.IRON_HELMET;
// We can later add additional armor sets here if we allow customization of what is considered "prisoner armor".
}
private ItemStack createArmor(Material material, String name) {
ItemStack item = new ItemStack(material);
LeatherArmorMeta meta = (LeatherArmorMeta) item.getItemMeta();
if (meta != null) {
meta.setDisplayName(name);
meta.setColor(Color.ORANGE); // Set the color for leather armor
item.setItemMeta(meta);
}
return item;
}
}

View File

@ -1,75 +1,93 @@
package me.nvus.nvus_prison_setup.Listeners;
import me.nvus.nvus_prison_setup.Configs.ConfigManager;
import org.bukkit.ChatColor;
import org.bukkit.Color;
import org.bukkit.Material;
import org.bukkit.entity.Player;
import org.bukkit.event.entity.PlayerDeathEvent;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;
import org.bukkit.event.entity.PlayerDeathEvent;
import org.bukkit.event.player.PlayerJoinEvent;
import org.bukkit.event.player.PlayerRespawnEvent;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.LeatherArmorMeta;
public class PlayerSpawn implements Listener {
private final ConfigManager configManager;
@EventHandler(priority = EventPriority.LOWEST)
public PlayerSpawn(ConfigManager configManager) {
this.configManager = configManager;
}
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
public void onPlayerJoin(PlayerJoinEvent event) {
Player joinedPlayer = event.getPlayer();
// Check if the player has the permission
if (joinedPlayer.hasPermission("nvus.prisoner")) {
// Create and equip prisoner armor
// Check if the player has the permission and if PrisonerArmor is enabled in config
if (joinedPlayer.hasPermission("nvus.prisoner") && configManager.getConfig("config.yml").getBoolean("PrisonerArmor", true)) {
equipPrisonerArmor(joinedPlayer);
}
}
@EventHandler(priority = EventPriority.LOWEST)
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
public void onPlayerDeath(PlayerDeathEvent event) {
Player deadPlayer = event.getEntity();
// Check if the player has the permission
if (deadPlayer.hasPermission("nvus.prisoner")) {
if (deadPlayer.hasPermission("nvus.prisoner") && configManager.getConfig("config.yml").getBoolean("PrisonerArmor", false)) {
// Remove prisoner armor from the list of dropped items
event.getDrops().removeIf(drop -> isPrisonerArmor(drop.getType()));
}
}
@EventHandler(priority = EventPriority.LOWEST)
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
public void onPlayerRespawn(PlayerRespawnEvent event) {
Player respawnedPlayer = event.getPlayer();
// Check if the player has the permission
if (respawnedPlayer.hasPermission("nvus.prisoner")) {
// Create and equip prisoner armor
if (respawnedPlayer.hasPermission("nvus.prisoner") && configManager.getConfig("config.yml").getBoolean("PrisonerArmor", true)) {
equipPrisonerArmor(respawnedPlayer);
}
}
private void equipPrisonerArmor(Player player) {
// Create Prisoner Armor
// Create Prisoner Helmet
ItemStack leatherHelmetPrison = new ItemStack(Material.LEATHER_HELMET);
LeatherArmorMeta helmetMeta = (LeatherArmorMeta) leatherHelmetPrison.getItemMeta();
if (helmetMeta != null) {
helmetMeta.setColor(Color.ORANGE);
helmetMeta.setDisplayName(ChatColor.GOLD + "Prisoner Helmet");
leatherHelmetPrison.setItemMeta(helmetMeta);
}
// Create Prisoner Chestplate
ItemStack leatherChestplatePrison = new ItemStack(Material.LEATHER_CHESTPLATE);
LeatherArmorMeta chestplateMeta = (LeatherArmorMeta) leatherChestplatePrison.getItemMeta();
if (chestplateMeta != null) {
chestplateMeta.setColor(Color.ORANGE);
chestplateMeta.setDisplayName(ChatColor.GOLD + "Prisoner Chestplate");
leatherChestplatePrison.setItemMeta(chestplateMeta);
}
// Create Prisoner Leggings
ItemStack leatherLeggingsPrison = new ItemStack(Material.LEATHER_LEGGINGS);
LeatherArmorMeta leggingsMeta = (LeatherArmorMeta) leatherLeggingsPrison.getItemMeta();
if (leggingsMeta != null) {
leggingsMeta.setColor(Color.ORANGE);
leggingsMeta.setDisplayName(ChatColor.GOLD + "Prisoner Leggings");
leatherLeggingsPrison.setItemMeta(leggingsMeta);
}
// Create Prisoner Boots
ItemStack leatherBootsPrison = new ItemStack(Material.LEATHER_BOOTS);
LeatherArmorMeta bootsMeta = (LeatherArmorMeta) leatherBootsPrison.getItemMeta();
if (bootsMeta != null) {
bootsMeta.setColor(Color.ORANGE);
bootsMeta.setDisplayName(ChatColor.GOLD + "Prisoner Boots");
leatherBootsPrison.setItemMeta(bootsMeta);
}
// Equip Prisoner Armor
player.getInventory().setHelmet(leatherHelmetPrison);
@ -77,9 +95,10 @@ public class PlayerSpawn implements Listener {
player.getInventory().setLeggings(leatherLeggingsPrison);
player.getInventory().setBoots(leatherBootsPrison);
player.sendMessage(ChatColor.translateAlternateColorCodes('&',"&6&lYou're a prisoner! &6You've been given the default prisoner armor!"));
player.sendMessage(ChatColor.translateAlternateColorCodes('&', "&6&lYou're a prisoner! &6You've been given the default prisoner armor!"));
}
// Destroy armor upon death etc.
private void destroyDefaultPrisonerArmor(Player player) {
player.getInventory().setHelmet(null);

View File

@ -8,6 +8,9 @@ import me.nvus.nvus_prison_setup.Listeners.PlayerItems;
import me.nvus.nvus_prison_setup.Listeners.PlayerSpawn;
import me.nvus.nvus_prison_setup.Listeners.BlockListener;
import me.nvus.nvus_prison_setup.Listeners.ToolSwitchListener;
import me.nvus.nvus_prison_setup.Updater.UpdateChecker;
import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
import org.bukkit.ChatColor;
import org.bukkit.plugin.java.JavaPlugin;
@ -26,16 +29,33 @@ public final class PrisonSetup extends JavaPlugin {
configManager.saveDefaultConfig("auto_switch.yml");
// Register event listeners
getServer().getPluginManager().registerEvents(new PlayerSpawn(), this);
getServer().getPluginManager().registerEvents(new PlayerArmor(), this);
getServer().getPluginManager().registerEvents(new PlayerSpawn(configManager), this);
getServer().getPluginManager().registerEvents(new PlayerArmor(configManager), this);
getServer().getPluginManager().registerEvents(new PlayerItems(configManager), this);
getServer().getPluginManager().registerEvents(new BlockListener(this), this);
getServer().getPluginManager().registerEvents(new ToolSwitchListener(configManager), this);
this.getCommand("nvus").setExecutor(new CommandListener(this, configManager));
new SettingsMenu(this, configManager);
//new SettingsMenu(this, configManager);
getServer().getPluginManager().registerEvents(new SettingsMenu(this, configManager), this);
getLogger().info(ChatColor.translateAlternateColorCodes('&',"&a&lNVus Prison Setup has been successfully enabled!"));
new UpdateChecker(this, 12345).getVersion(version -> {
if (!this.getDescription().getVersion().equals(version)) {
getLogger().info("There is a new update available for NVus Prison Setup! Grab it from SpigotMC here: https://www.spigotmc.org/resources/nvus-prison-setup.115441/");
Bukkit.getScheduler().scheduleSyncDelayedTask(this, () -> {
for (Player player : Bukkit.getOnlinePlayers()) {
if (player.isOp() || player.hasPermission("nvus.admin")) {
player.sendMessage(ChatColor.RED + "=====================================================");
player.sendMessage(ChatColor.YELLOW + "An update for NVus Prison Setup is available! Grab it from SpigotMC here: https://www.spigotmc.org/resources/nvus-prison-setup.115441/");
player.sendMessage(ChatColor.RED + "=====================================================");
}
}
}, 20L * 60);
}
});
}

View File

@ -0,0 +1,34 @@
package me.nvus.nvus_prison_setup.Updater;
import org.bukkit.Bukkit;
import org.bukkit.plugin.java.JavaPlugin;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import java.util.Scanner;
import java.util.function.Consumer;
// From: https://www.spigotmc.org/wiki/creating-an-update-checker-that-checks-for-updates
public class UpdateChecker {
private final JavaPlugin plugin;
private final int resourceId;
public UpdateChecker(JavaPlugin plugin, int resourceId) {
this.plugin = plugin;
this.resourceId = 115441;
}
public void getVersion(final Consumer<String> consumer) {
Bukkit.getScheduler().runTaskAsynchronously(this.plugin, () -> {
try (InputStream is = new URL("https://api.spigotmc.org/legacy/update.php?resource=" + this.resourceId + "/~").openStream(); Scanner scann = new Scanner(is)) {
if (scann.hasNext()) {
consumer.accept(scann.next());
}
} catch (IOException e) {
plugin.getLogger().info("Unable to check for DecorativeEndGateway updates: " + e.getMessage());
}
});
}
}

View File

@ -9,8 +9,14 @@
# Should prisoners auto pickup blocks they have mined?
# Use /nvus autopickup true|false to toggle this in-game! (Requires permission: nvus.admin)
AutoPickup: true
# DO NOT TURN THIS ON WHEN RUNNING THIS PLUGIN ON A LIVE/PRODUCTION SERVER! There may be bugs!
AutoPickup: false
# Should prisoners be able to auto switch to the correct tool for whatever they are mining?
#i.e. If hitting dirt/clay with a pickaxe, they will auto switch to a shovel (if in their quickbar)
# Use /nvus autoswitch true|false to toggle this in-game! (Requires permission: nvus.admin)
AutoSwitch: true
# Should prisoners be given a default prisoner armor set (orange leather armor) when they join the server?
PrisonerArmor: true
# Should prisoners be able to remove/change their default prisoner armor?
RestrictArmor: true

View File

@ -5,8 +5,19 @@ api-version: '1.20'
prefix: NVus Prison
authors: [never2nv]
website: https://FNGnation.net
depends:
- WorldGuard
commands:
nvus:
description: Base command for NVus Prison Setup
usage: /<command> <reload|version|autopickup|autoswitch|menu> [arguments]
description: Base command to view NVus Prison Setup commands.
usage: |
/nvus reload - Reloads all configuration files.
/nvus version - Shows the plugin version.
/nvus menu - Opens the settings menu (player only).
/nvus autopickup <true|false> - Toggles the auto item pickup feature.
/nvus autoswitch <true|false> - Toggles the auto tool switch feature.
/nvus prisonerarmor <true|false> - Toggles giving prisoners armor on join.
/nvus restrictarmor <true|false> - Toggles the restriction on changing prisoner armor.
aliases: [nvusmenu]