Added update checker
This commit is contained in:
parent
b2ec19387f
commit
900e2ca0ed
|
@ -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
37
pom.xml
|
@ -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>-->
|
||||
|
|
|
@ -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
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -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());
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
|
@ -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
|
||||
|
|
|
@ -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]
|
||||
|
|
Loading…
Reference in New Issue