From 63592bf21d54d28aa7e05bf9cd5007de81c144c4 Mon Sep 17 00:00:00 2001 From: Wolfstorm Date: Sun, 18 Jul 2021 00:41:14 +0200 Subject: [PATCH 001/369] Update pom.xml --- pom.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pom.xml b/pom.xml index 624f982f..97c87140 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ io.github.rypofalem.armorstandeditor armorstandeditor jar - 1.16-25 + 1.17-26 armorstandeditor http://maven.apache.org @@ -24,7 +24,7 @@ org.spigotmc spigot-api - 1.16.1-R0.1-SNAPSHOT + 1.17-R0.1-SNAPSHOT provided From 1425661754e0f1971bf518d671750e7eceb2f4dc Mon Sep 17 00:00:00 2001 From: Wolfstorm Date: Sun, 18 Jul 2021 00:43:33 +0200 Subject: [PATCH 002/369] Update plugin.yml --- src/main/resources/plugin.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index 303722c8..7bf6f3d9 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -1,6 +1,6 @@ name: ArmorStandEditor main: io.github.rypofalem.armorstandeditor.ArmorStandEditorPlugin -version: 1.16-24 +version: 1.17-26 api-version: "1.13" website: rypofalem.github.io author: RypoFalem From ba605beec621a917e8504bd231eb8e774f516236 Mon Sep 17 00:00:00 2001 From: Wolfstorm Date: Sun, 18 Jul 2021 01:04:38 +0200 Subject: [PATCH 003/369] Update pom.xml --- pom.xml | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/pom.xml b/pom.xml index 97c87140..42fe163e 100644 --- a/pom.xml +++ b/pom.xml @@ -4,11 +4,12 @@ io.github.rypofalem.armorstandeditor armorstandeditor jar - 1.17-26 + 1.17.1-26 armorstandeditor http://maven.apache.org + 1.8 UTF-8 @@ -35,10 +36,13 @@ org.apache.maven.plugins maven-compiler-plugin - 3.6.0 + 3.8.1 - 1.8 - 1.8 + ${java.version} + ${java.version} + + -parameters + From 29a527c1422aca18777655254bf923d171c4b5b6 Mon Sep 17 00:00:00 2001 From: Wolfstorm Date: Tue, 20 Jul 2021 18:48:23 +0200 Subject: [PATCH 004/369] [1.17-26] Update to 1.17 and add some new features. Signed-off-by: Wolfstorm --- .../ArmorStandEditorPlugin.java | 58 ++- .../rypofalem/armorstandeditor/CommandEx.java | 76 ++-- .../armorstandeditor/PlayerEditor.java | 52 +++ .../armorstandeditor/PlayerEditorManager.java | 385 ++++++++++++------ .../rypofalem/armorstandeditor/menu/Menu.java | 120 +++--- .../modes/ArmorStandData.java | 12 +- .../armorstandeditor/modes/EditMode.java | 2 +- src/main/resources/config.yml | 3 + src/main/resources/plugin.yml | 5 +- 9 files changed, 468 insertions(+), 245 deletions(-) diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/ArmorStandEditorPlugin.java b/src/main/java/io/github/rypofalem/armorstandeditor/ArmorStandEditorPlugin.java index 1727343e..0b93d44c 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/ArmorStandEditorPlugin.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/ArmorStandEditorPlugin.java @@ -25,10 +25,12 @@ import org.bukkit.NamespacedKey; import org.bukkit.entity.Player; import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.Damageable; import org.bukkit.plugin.Plugin; import org.bukkit.plugin.java.JavaPlugin; import java.io.File; +import java.util.List; public class ArmorStandEditorPlugin extends JavaPlugin{ private NamespacedKey iconKey; @@ -46,6 +48,7 @@ public class ArmorStandEditorPlugin extends JavaPlugin{ boolean debug = false; //weather or not to broadcast messages via print(String message) double coarseRot; double fineRot; + public boolean glowItemFrames; public ArmorStandEditorPlugin(){ instance = this; @@ -78,6 +81,9 @@ public void onEnable(){ debug = getConfig().getBoolean("debug", true); sendToActionBar = getConfig().getBoolean("sendMessagesToActionBar", true); + //NEW: Glowing Item Frame Support + glowItemFrames = getConfig().getBoolean("glowingItemFrame", true); + editorManager = new PlayerEditorManager(this); execute = new CommandEx(this); getCommand("ase").setExecutor(execute); @@ -115,17 +121,6 @@ public void print(String message){ } } - public String listPlugins(){ - Plugin[] plugins = getServer().getPluginManager().getPlugins(); - StringBuilder list = new StringBuilder(); - for(Plugin p : plugins){ - if(p!=null){ - list.append(" :").append(p.getName()).append(" ").append(p.getDescription().getVersion()).append(": "); - } - } - return list.toString(); - } - public static ArmorStandEditorPlugin instance(){ return instance; } @@ -133,25 +128,48 @@ public static ArmorStandEditorPlugin instance(){ public Language getLang(){ return lang; } - - public boolean isEditTool(ItemStack item){ - if(item == null) return false; - if(editTool != item.getType()) return false; - if(requireToolData && item.getDurability() != (short)editToolData) return false; + + public boolean isEditTool(ItemStack itemStk){ + if (itemStk == null) { return false; } + if (editTool != itemStk.getType()) { return false; } + + //FIX: Depreciated Stack for getDurability + // if(requireToolData && item.getDurability() != (short)editToolData) return false; + if (requireToolData){ + Damageable d1 = (Damageable) itemStk.getItemMeta(); //Get the Damageable Options for itemStk + if (d1 != null) { //We do this to prevent NullPointers + if (d1.getDamage() != (short) editToolData) { return false; } + } + } + if(requireToolLore && editToolLore != null){ - if(!item.hasItemMeta()) return false; - if(!item.getItemMeta().hasLore()) return false; - if(item.getItemMeta().getLore().isEmpty()) return false; - if(!item.getItemMeta().getLore().get(0).equals(editToolLore)) return false; + + //If the ItemStack does not have Meta Data then we return false + if(!itemStk.hasItemMeta()) { return false; } + + //Get the lore of the Item and if it is null - Return False + List itemLore = itemStk.getItemMeta().getLore(); //TODO: Fix NullPointerException on Method getLore + if (itemLore == null){ return false; } + + //If the Item does not have Lore - Return False + boolean hasTheItemLore = itemStk.getItemMeta().hasLore(); + if (!hasTheItemLore) { return false; } + + //Item the first thing in the ItemLore List does not Equal the Config Value "editToolLore" - return false + if (!itemLore.get(0).equals(editToolLore)) { return false; } //Does not need simplified - IntelliJ likes to complain here + } + return true; } + public NamespacedKey getIconKey() { if(iconKey == null) iconKey = new NamespacedKey(this, "command_icon"); return iconKey; } } //todo: + //Access to "DisabledSlots" data (probably simplified just a toggle enable/disable) //Access to the "Marker" switch (so you can make the hitbox super small) \ No newline at end of file diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/CommandEx.java b/src/main/java/io/github/rypofalem/armorstandeditor/CommandEx.java index da4eb697..3c0e4808 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/CommandEx.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/CommandEx.java @@ -29,36 +29,37 @@ import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; -public class CommandEx implements CommandExecutor{ +public class CommandEx implements CommandExecutor { ArmorStandEditorPlugin plugin; final String LISTMODE = ChatColor.GREEN + "/ase mode <" + Util.getEnumList(EditMode.class) + ">"; final String LISTAXIS = ChatColor.GREEN + "/ase axis <" + Util.getEnumList(Axis.class) + ">"; final String LISTADJUSTMENT = ChatColor.GREEN + "/ase adj <" + Util.getEnumList(AdjustmentMode.class) + ">"; - final String LISTSLOT = ChatColor.GREEN + "/ase slot <1-9>"; + final String LISTSLOT = ChatColor.GREEN + "/ase slot <1-9>"; final String HELP = ChatColor.GREEN + "/ase help"; - public CommandEx(ArmorStandEditorPlugin armorStandEditorPlugin) { + public CommandEx( ArmorStandEditorPlugin armorStandEditorPlugin) { this.plugin = armorStandEditorPlugin; } @Override public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { - if(!(sender instanceof Player - && checkPermission((Player)sender,"basic",true))){ + if (!(sender instanceof Player + && checkPermission((Player) sender, "basic", true))) { sender.sendMessage(plugin.getLang().getMessage("noperm", "warn")); return true; } - Player player = (Player) sender; - if(args.length == 0){ + Player player = (Player) sender; + if (args.length == 0) { player.sendMessage(LISTMODE); player.sendMessage(LISTAXIS); player.sendMessage(LISTSLOT); player.sendMessage(LISTADJUSTMENT); return true; } - switch(args[0].toLowerCase()){ - case "mode": commandMode(player, args); + switch (args[0].toLowerCase()) { + case "mode": + commandMode(player, args); break; case "axis": commandAxis(player, args); break; @@ -81,35 +82,35 @@ && checkPermission((Player)sender,"basic",true))){ private void commandSlot(Player player, String[] args) { - if(args.length <=1){ + if (args.length <= 1) { player.sendMessage(plugin.getLang().getMessage("noslotnumcom", "warn")); player.sendMessage(LISTSLOT); } - if(args.length > 1){ - try{ + if (args.length > 1) { + try { byte slot = (byte) (Byte.parseByte(args[1]) - 0b1); - if(slot >= 0 && slot < 9){ + if (slot >= 0 && slot < 9) { plugin.editorManager.getPlayerEditor(player.getUniqueId()).setCopySlot(slot); - }else{ + } else { player.sendMessage(LISTSLOT); } - }catch(NumberFormatException nfe){ + } catch ( NumberFormatException nfe) { player.sendMessage(LISTSLOT); } } } private void commandAdj(Player player, String[] args) { - if(args.length <=1){ + if (args.length <= 1) { player.sendMessage(plugin.getLang().getMessage("noadjcom", "warn")); - player.sendMessage(LISTADJUSTMENT ); + player.sendMessage(LISTADJUSTMENT); } - if(args.length > 1){ - for(AdjustmentMode adj : AdjustmentMode.values()){ - if(adj.toString().toLowerCase().contentEquals(args[1].toLowerCase())){ + if (args.length > 1) { + for ( AdjustmentMode adj : AdjustmentMode.values()) { + if (adj.toString().toLowerCase().contentEquals(args[1].toLowerCase())) { plugin.editorManager.getPlayerEditor(player.getUniqueId()).setAdjMode(adj); return; } @@ -118,15 +119,15 @@ private void commandAdj(Player player, String[] args) { } } - private void commandAxis(Player player, String[] args) { - if(args.length <=1){ + private void commandAxis( Player player, String[] args) { + if (args.length <= 1) { player.sendMessage(plugin.getLang().getMessage("noaxiscom", "warn")); player.sendMessage(LISTAXIS); } - if(args.length > 1){ - for(Axis axis : Axis.values()){ - if(axis.toString().toLowerCase().contentEquals(args[1].toLowerCase())){ + if (args.length > 1) { + for ( Axis axis : Axis.values()) { + if (axis.toString().toLowerCase().contentEquals(args[1].toLowerCase())) { plugin.editorManager.getPlayerEditor(player.getUniqueId()).setAxis(axis); return; } @@ -135,16 +136,17 @@ private void commandAxis(Player player, String[] args) { } } - private void commandMode(Player player, String[] args) { - if(args.length <=1){ + private void commandMode( Player player, String[] args) { + if (args.length <= 1) { player.sendMessage(plugin.getLang().getMessage("nomodecom", "warn")); player.sendMessage(LISTMODE); } - if(args.length > 1){ - for(EditMode mode : EditMode.values()){ - if(mode.toString().toLowerCase().contentEquals(args[1].toLowerCase())){ - if(args[1].equals("invisible") && !checkPermission(player, "invisible",true)) return; + if (args.length > 1) { + for ( EditMode mode : EditMode.values()) { + if (mode.toString().toLowerCase().contentEquals(args[1].toLowerCase())) { + if (args[1].equals("invisible") && !checkPermission(player, "invisible", true)) return; + if (args[1].equals("itemframe") && !checkPermission(player, "itemframe", true)) return; plugin.editorManager.getPlayerEditor(player.getUniqueId()).setMode(mode); return; } @@ -152,7 +154,7 @@ private void commandMode(Player player, String[] args) { } } - private void commandHelp(Player player){ + private void commandHelp( Player player) { player.closeInventory(); player.playSound(player.getLocation(), Sound.ENTITY_EXPERIENCE_ORB_PICKUP, 1f, 1f); player.sendMessage(plugin.getLang().getMessage("help", "info", plugin.editTool.name())); @@ -162,14 +164,14 @@ private void commandHelp(Player player){ player.sendRawMessage(plugin.getLang().getMessage("helpurl", "")); } - private boolean checkPermission(Player player, String permName, boolean sendMessageOnInvalidation){ - if(permName.toLowerCase().equals("paste")){ + private boolean checkPermission( Player player, String permName, boolean sendMessageOnInvalidation) { + if (permName.toLowerCase().equals("paste")) { permName = "copy"; } - if(player.hasPermission("asedit." + permName.toLowerCase())){ + if (player.hasPermission("asedit." + permName.toLowerCase())) { return true; - }else{ - if(sendMessageOnInvalidation){ + } else { + if (sendMessageOnInvalidation) { player.sendMessage(plugin.getLang().getMessage("noperm", "warn")); } return false; diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditor.java b/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditor.java index 82b565dd..9e93126a 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditor.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditor.java @@ -36,6 +36,7 @@ import org.bukkit.GameMode; import org.bukkit.Location; import org.bukkit.entity.ArmorStand; +import org.bukkit.entity.ItemFrame; import org.bukkit.entity.Player; import org.bukkit.potion.PotionEffect; import org.bukkit.potion.PotionEffectType; @@ -54,7 +55,12 @@ public class PlayerEditor { Menu chestMenu; ArmorStand target; ArrayList targetList = null; + + //NEW: ItemFrame Stuff + ItemFrame frameTarget; + ArrayList frameTargetList = null; int targetIndex = 0; + int frameTargetIndex = 0; EquipmentMenu equipMenu; long lastCancelled = 0; @@ -143,6 +149,21 @@ public void editArmorStand(ArmorStand armorStand) { } } + public void editItemFrame(ItemFrame itemFrame) { + if (!getPlayer().hasPermission("asedit.basic")) return; + itemFrame = (ItemFrame) attemptTarget((ArmorStand) itemFrame); + switch (eMode) { + case ITEMFRAME: + toggleVisible((ArmorStand) itemFrame); + break; + case RESET: + itemFrame.setVisible(true); + case NONE: + sendMessage("nomode", null); + break; + } + } + private void resetPosition(ArmorStand armorStand) { armorStand.setHeadPose(new EulerAngle(0,0,0)); armorStand.setBodyPose(new EulerAngle(0,0,0)); @@ -348,6 +369,37 @@ public void setTarget(ArrayList armorStands){ highlight(target); } + public void setFrameTarget(final ArrayList itemFrames) { + if (itemFrames == null || itemFrames.isEmpty()) { + frameTarget = null; + frameTargetList = null; + sendMessage("noframetarget", null); + return; + } + + if (frameTargetList == null) { + frameTargetList = itemFrames; + frameTargetIndex = 0; + sendMessage("target", null); + } else { + boolean same = frameTargetList.size() == itemFrames.size(); + if (same) for (final ItemFrame itemf : itemFrames) { + same = frameTargetList.contains(itemf); + if (!same) break; + } + + if (same) { + frameTargetIndex = ++frameTargetIndex % frameTargetList.size(); + } else { + frameTargetList = itemFrames; + frameTargetIndex = 0; + sendMessage("frametarget", null); + } + frameTarget = frameTargetList.get(frameTargetIndex); + } + } + + ArmorStand attemptTarget(ArmorStand armorStand){ if(target == null || !target.isValid() diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditorManager.java b/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditorManager.java index 27b2e4ca..fb98dabc 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditorManager.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditorManager.java @@ -21,9 +21,8 @@ import io.github.rypofalem.armorstandeditor.menu.ASEHolder; import org.bukkit.*; -import org.bukkit.entity.ArmorStand; -import org.bukkit.entity.Entity; -import org.bukkit.entity.Player; +import org.bukkit.block.BlockFace; +import org.bukkit.entity.*; import org.bukkit.event.*; import org.bukkit.event.block.Action; import org.bukkit.event.entity.EntityDamageByEntityEvent; @@ -41,20 +40,20 @@ import java.util.UUID; //Manages PlayerEditors and Player Events related to editing armorstands -public class PlayerEditorManager implements Listener{ - private ArmorStandEditorPlugin plugin; - private HashMap players; - private ASEHolder menuHolder = new ASEHolder(); //Inventory holder that owns the main ase menu inventories for the plugin - private ASEHolder equipmentHolder = new ASEHolder(); //Inventory holder that owns the equipment menu +public class PlayerEditorManager implements Listener { + private ArmorStandEditorPlugin plugin; + private HashMap players; + private ASEHolder menuHolder = new ASEHolder(); //Inventory holder that owns the main ase menu inventories for the plugin + private ASEHolder equipmentHolder = new ASEHolder(); //Inventory holder that owns the equipment menu double coarseAdj; double fineAdj; double coarseMov; double fineMov; private boolean ignoreNextInteract = false; - private TickCounter counter; + private TickCounter counter; - PlayerEditorManager(ArmorStandEditorPlugin plugin){ + PlayerEditorManager( ArmorStandEditorPlugin plugin) { this.plugin = plugin; players = new HashMap<>(); coarseAdj = Util.FULLCIRCLE / plugin.coarseRot; @@ -65,130 +64,216 @@ public class PlayerEditorManager implements Listener{ Bukkit.getServer().getScheduler().runTaskTimer(plugin, counter, 0, 1); } - @EventHandler (priority = EventPriority.LOWEST, ignoreCancelled=false) - void onArmorStandDamage(EntityDamageByEntityEvent event){ - if(!(event.getDamager() instanceof Player))return; - Player player = (Player) event.getDamager(); - if(!plugin.isEditTool(player.getInventory().getItemInMainHand())) return; - if(!(event.getEntity() instanceof ArmorStand)){ + @EventHandler(priority = EventPriority.LOWEST, ignoreCancelled = false) + void onArmorStandDamage( EntityDamageByEntityEvent event) { + if (!(event.getDamager() instanceof Player)) return; + Player player = (Player) event.getDamager(); + if (!plugin.isEditTool(player.getInventory().getItemInMainHand())) return; + if (!((event.getEntity() instanceof ArmorStand) || event.getEntity() instanceof ItemFrame)) { event.setCancelled(true); getPlayerEditor(player.getUniqueId()).openMenu(); return; } - ArmorStand as = (ArmorStand)event.getEntity(); - getPlayerEditor(player.getUniqueId()).cancelOpenMenu(); - event.setCancelled(true); - if(canEdit(player, as)) applyLeftTool(player, as); - } - - @EventHandler (priority = EventPriority.LOWEST, ignoreCancelled=false) - void onArmorStandInteract(PlayerInteractAtEntityEvent event){ - if(ignoreNextInteract) return; - if(event.getHand() != EquipmentSlot.HAND) return; - Player player = event.getPlayer(); - if(!(event.getRightClicked() instanceof ArmorStand)) return; - final ArmorStand as = (ArmorStand)event.getRightClicked(); - - if(!canEdit(player, as)) return; - if(plugin.isEditTool(player.getInventory().getItemInMainHand())){ + if (event.getEntity() instanceof ArmorStand) { + ArmorStand as = (ArmorStand) event.getEntity(); getPlayerEditor(player.getUniqueId()).cancelOpenMenu(); event.setCancelled(true); - applyRightTool(player, as); - return; + if (canEdit(player, as)) applyLeftTool(player, as); + } else if (event.getEntity() instanceof ItemFrame) { + ItemFrame itemf = (ItemFrame) event.getEntity(); + getPlayerEditor(player.getUniqueId()).cancelOpenMenu(); + event.setCancelled(true); + if (canEdit(player, itemf)) applyLeftTool(player, itemf); } + } - //Attempt rename - if(player.getInventory().getItemInMainHand().getType() == Material.NAME_TAG && player.hasPermission("asedit.rename")){ - ItemStack nameTag = player.getInventory().getItemInMainHand(); - final String name; - if(nameTag.getItemMeta() != null && nameTag.getItemMeta().hasDisplayName()){ - name = nameTag.getItemMeta().getDisplayName().replace('&', ChatColor.COLOR_CHAR); - } else { - name = null; - } + @EventHandler(priority = EventPriority.LOWEST, ignoreCancelled = false) + void onArmorStandInteract( PlayerInteractAtEntityEvent event) { + if (ignoreNextInteract) return; + if (event.getHand() != EquipmentSlot.HAND) return; + Player player = event.getPlayer(); + if (!((event.getRightClicked() instanceof ArmorStand) || event.getRightClicked() instanceof ItemFrame)) return; - if(name == null){ - as.setCustomName(null); - as.setCustomNameVisible(false); - event.setCancelled(true); - } else if(!name.equals("")){ // nametag is not blank + if (event.getRightClicked() instanceof ArmorStand) { + ArmorStand as = (ArmorStand) event.getRightClicked(); + + if (!canEdit(player, as)) return; + if (plugin.isEditTool(player.getInventory().getItemInMainHand())) { + getPlayerEditor(player.getUniqueId()).cancelOpenMenu(); event.setCancelled(true); + applyRightTool(player, as); + return; + } + + + //Attempt rename + if (player.getInventory().getItemInMainHand().getType() == Material.NAME_TAG && player.hasPermission("asedit.rename")) { + ItemStack nameTag = player.getInventory().getItemInMainHand(); + String name; + if (nameTag.getItemMeta() != null && nameTag.getItemMeta().hasDisplayName()) { + name = nameTag.getItemMeta().getDisplayName().replace('&', ChatColor.COLOR_CHAR); + } else { + name = null; + } - if((player.getGameMode() != GameMode.CREATIVE)){ - if(nameTag.getAmount() > 1){ - nameTag.setAmount(nameTag.getAmount() - 1); - }else{ - nameTag = new ItemStack(Material.AIR); + if (name == null) { + as.setCustomName(null); + as.setCustomNameVisible(false); + event.setCancelled(true); + } else if (!name.equals("")) { // nametag is not blank + event.setCancelled(true); + + if ((player.getGameMode() != GameMode.CREATIVE)) { + if (nameTag.getAmount() > 1) { + nameTag.setAmount(nameTag.getAmount() - 1); + } else { + nameTag = new ItemStack(Material.AIR); + } + player.getInventory().setItemInMainHand(nameTag); } - player.getInventory().setItemInMainHand(nameTag); + + //minecraft will set the name after this event even if the event is cancelled. + //change it 1 tick later to apply formatting without it being overwritten + Bukkit.getScheduler().runTaskLater(plugin, () -> { + as.setCustomName(name); + as.setCustomNameVisible(true); + }, 1); + } + } + } else if (event.getRightClicked() instanceof ItemFrame) { + ItemFrame itemFrame = (ItemFrame) event.getRightClicked(); + + if (!canEdit(player, itemFrame)) return; + if (plugin.isEditTool(player.getInventory().getItemInMainHand())) { + getPlayerEditor(player.getUniqueId()).cancelOpenMenu(); + if (!itemFrame.getItem().getType().equals(Material.AIR)) { + event.setCancelled(true); + } + applyRightTool(player, itemFrame); + return; + } + + if (player.getInventory().getItemInMainHand().getType().equals(Material.GLOW_INK_SAC) //attempt glowing + && player.hasPermission("asedit.itemframeglow") + && plugin.glowItemFrames && player.isSneaking()) { + ItemStack glowSacs = player.getInventory().getItemInMainHand(); + ItemStack contents = null; + Rotation rotation = null; + if (itemFrame.getItem().getType() != Material.AIR) { + contents = itemFrame.getItem(); //save item + rotation = itemFrame.getRotation(); // save item rotation + } + Location itemFrameLocation = itemFrame.getLocation(); + BlockFace facing = itemFrame.getFacing(); + + if (player.getGameMode() != GameMode.CREATIVE) { + if (glowSacs.getAmount() > 1) { + glowSacs.setAmount(glowSacs.getAmount() - 1); + } else glowSacs = new ItemStack(Material.AIR); + } + + itemFrame.remove(); + GlowItemFrame glowFrame = (GlowItemFrame) player.getWorld().spawnEntity(itemFrameLocation, EntityType.GLOW_ITEM_FRAME); + glowFrame.setFacingDirection(facing); + if (contents != null) { + glowFrame.setItem(contents); + glowFrame.setRotation(rotation); } - //minecraft will set the name after this event even if the event is cancelled. - //change it 1 tick later to apply formatting without it being overwritten - Bukkit.getScheduler().runTaskLater(plugin, () -> { - as.setCustomName(name); - as.setCustomNameVisible(true); - }, 1); } } } - @EventHandler (priority = EventPriority.LOW, ignoreCancelled=true) - public void onSwitchHands(PlayerSwapHandItemsEvent event){ - if(!plugin.isEditTool(event.getOffHandItem())) return; //event assumes they are already switched + @EventHandler(priority = EventPriority.LOW, ignoreCancelled = true) + public void onSwitchHands( PlayerSwapHandItemsEvent event) { + if (!plugin.isEditTool(event.getOffHandItem())) return; //event assumes they are already switched event.setCancelled(true); - Player player = event.getPlayer(); + Player player = event.getPlayer(); getPlayerEditor(event.getPlayer().getUniqueId()).setTarget(getTargets(player)); + getPlayerEditor(event.getPlayer().getUniqueId()).setFrameTarget(getFrameTargets(player)); } - private ArrayList getTargets(Player player){ - Location eyeLaser = player.getEyeLocation(); - Vector direction = player.getLocation().getDirection(); - ArrayList armorStands = new ArrayList<>(); - - final double STEPSIZE = .5; - final Vector STEP = direction.multiply(STEPSIZE); - final double RANGE = 10; - final double LASERRADIUS = .3; - List nearbyEntities = player.getNearbyEntities(RANGE, RANGE, RANGE); - if(nearbyEntities.isEmpty()) return null; - - for(double i = 0; i nearby = (List) player.getWorld().getNearbyEntities(eyeLaser, LASERRADIUS, LASERRADIUS, LASERRADIUS); - if(!nearby.isEmpty()){ + private ArrayList getTargets( Player player) { + Location eyeLaser = player.getEyeLocation(); + Vector direction = player.getLocation().getDirection(); + ArrayList armorStands = new ArrayList<>(); + + double STEPSIZE = .5; + Vector STEP = direction.multiply(STEPSIZE); + double RANGE = 10; + double LASERRADIUS = .3; + List nearbyEntities = player.getNearbyEntities(RANGE, RANGE, RANGE); + if (nearbyEntities.isEmpty()) return null; + + for (double i = 0; i < RANGE; i += STEPSIZE) { + List nearby = (List) player.getWorld().getNearbyEntities(eyeLaser, LASERRADIUS, LASERRADIUS, LASERRADIUS); + if (!nearby.isEmpty()) { boolean endLaser = false; - for(Entity e : nearby){ - if(e instanceof ArmorStand){ - if(canEdit(player, (ArmorStand)e)){ - armorStands.add((ArmorStand)e); + for ( Entity e : nearby) { + if (e instanceof ArmorStand) { + if (canEdit(player, (ArmorStand) e)) { + armorStands.add((ArmorStand) e); endLaser = true; } } } - if(endLaser) break; + if (endLaser) break; } - if(eyeLaser.getBlock().getType().isSolid()) break; + if (eyeLaser.getBlock().getType().isSolid()) break; eyeLaser.add(STEP); } return armorStands; } - boolean canEdit(Player player, ArmorStand as){ + private ArrayList getFrameTargets( Player player) { + Location eyeLaser = player.getEyeLocation(); + Vector direction = player.getLocation().getDirection(); + ArrayList itemFrames = new ArrayList<>(); + + double STEPSIZE = .5; + Vector STEP = direction.multiply(STEPSIZE); + double RANGE = 10; + double LASERRADIUS = .3; + List nearbyEntities = player.getNearbyEntities(RANGE, RANGE, RANGE); + if (nearbyEntities.isEmpty()) return null; + + for (double i = 0; i < RANGE; i += STEPSIZE) { + List nearby = (List) player.getWorld().getNearbyEntities(eyeLaser, LASERRADIUS, LASERRADIUS, LASERRADIUS); + if (!nearby.isEmpty()) { + boolean endLaser = false; + for ( Entity e : nearby) { + if (e instanceof ItemFrame) { + if (canEdit(player, (ItemFrame) e)) { + itemFrames.add((ItemFrame) e); + endLaser = true; + } + } + } + if (endLaser) break; + } + if (eyeLaser.getBlock().getType().isSolid()) break; + eyeLaser.add(STEP); + } + + return itemFrames; + } + + boolean canEdit( Player player, ArmorStand as) { ignoreNextInteract = true; - ArrayList events = new ArrayList<>(); + ArrayList events = new ArrayList<>(); events.add(new PlayerInteractEntityEvent(player, as, EquipmentSlot.HAND)); events.add(new PlayerInteractAtEntityEvent(player, as, as.getLocation().toVector(), EquipmentSlot.HAND)); //events.add(new PlayerArmorStandManipulateEvent(player, as, player.getEquipment().getItemInMainHand(), as.getItemInHand(), EquipmentSlot.HAND)); - for(Event event : events){ - if(!(event instanceof Cancellable)) continue; - try{ + for ( Event event : events) { + if (!(event instanceof Cancellable)) continue; + try { plugin.getServer().getPluginManager().callEvent(event); - } catch(IllegalStateException ise){ + } catch ( IllegalStateException ise) { ise.printStackTrace(); ignoreNextInteract = false; return false; //Something went wrong, don't allow edit just in case } - if(((Cancellable)event).isCancelled()){ + if (((Cancellable) event).isCancelled()) { ignoreNextInteract = false; return false; } @@ -197,94 +282,128 @@ boolean canEdit(Player player, ArmorStand as){ return true; } - void applyLeftTool(Player player, ArmorStand as){ + boolean canEdit( Player player, ItemFrame itemf) { + ignoreNextInteract = true; + ArrayList events = new ArrayList<>(); + events.add(new PlayerInteractEntityEvent(player, itemf, EquipmentSlot.HAND)); + events.add(new PlayerInteractAtEntityEvent(player, itemf, itemf.getLocation().toVector(), EquipmentSlot.HAND)); + //events.add(new PlayerArmorStandManipulateEvent(player, as, player.getEquipment().getItemInMainHand(), as.getItemInHand(), EquipmentSlot.HAND)); + for ( Event event : events) { + if (!(event instanceof Cancellable)) continue; + try { + plugin.getServer().getPluginManager().callEvent(event); + } catch ( IllegalStateException ise) { + ise.printStackTrace(); + ignoreNextInteract = false; + return false; //Something went wrong, don't allow edit just in case + } + if (((Cancellable) event).isCancelled()) { + ignoreNextInteract = false; + return false; + } + } + ignoreNextInteract = false; + return true; + } + + void applyLeftTool( Player player, ArmorStand as) { getPlayerEditor(player.getUniqueId()).cancelOpenMenu(); getPlayerEditor(player.getUniqueId()).editArmorStand(as); } - void applyRightTool(Player player, ArmorStand as){ + void applyLeftTool( Player player, ItemFrame itemf) { + getPlayerEditor(player.getUniqueId()).cancelOpenMenu(); + getPlayerEditor(player.getUniqueId()).editItemFrame(itemf); + } + + void applyRightTool( Player player, ItemFrame itemf) { + getPlayerEditor(player.getUniqueId()).cancelOpenMenu(); + getPlayerEditor(player.getUniqueId()).editItemFrame(itemf); + } + + void applyRightTool( Player player, ArmorStand as) { getPlayerEditor(player.getUniqueId()).cancelOpenMenu(); getPlayerEditor(player.getUniqueId()).reverseEditArmorStand(as); } - @EventHandler (priority = EventPriority.LOWEST, ignoreCancelled=false) - void onRightClickTool(PlayerInteractEvent e){ - if( !(e.getAction() == Action.LEFT_CLICK_AIR + @EventHandler(priority = EventPriority.LOWEST, ignoreCancelled = false) + void onRightClickTool( PlayerInteractEvent e) { + if (!(e.getAction() == Action.LEFT_CLICK_AIR || e.getAction() == Action.RIGHT_CLICK_AIR || e.getAction() == Action.LEFT_CLICK_BLOCK || e.getAction() == Action.RIGHT_CLICK_BLOCK)) return; - Player player = e.getPlayer(); - if(!plugin.isEditTool(player.getInventory().getItemInMainHand())) return; + Player player = e.getPlayer(); + if (!plugin.isEditTool(player.getInventory().getItemInMainHand())) return; e.setCancelled(true); getPlayerEditor(player.getUniqueId()).openMenu(); } - @EventHandler (priority = EventPriority.NORMAL, ignoreCancelled=true) - void onScrollNCrouch(PlayerItemHeldEvent e){ - Player player = e.getPlayer(); - if(!player.isSneaking()) return; - if(!plugin.isEditTool(player.getInventory().getItem(e.getPreviousSlot()))) return; + @EventHandler(priority = EventPriority.NORMAL, ignoreCancelled = true) + void onScrollNCrouch( PlayerItemHeldEvent e) { + Player player = e.getPlayer(); + if (!player.isSneaking()) return; + if (!plugin.isEditTool(player.getInventory().getItem(e.getPreviousSlot()))) return; e.setCancelled(true); - if(e.getNewSlot() == e.getPreviousSlot() +1 || (e.getNewSlot() == 0 && e.getPreviousSlot() == 8)){ + if (e.getNewSlot() == e.getPreviousSlot() + 1 || (e.getNewSlot() == 0 && e.getPreviousSlot() == 8)) { getPlayerEditor(player.getUniqueId()).cycleAxis(1); - }else if(e.getNewSlot() == e.getPreviousSlot() - 1 || (e.getNewSlot() == 8 && e.getPreviousSlot() == 0)){ + } else if (e.getNewSlot() == e.getPreviousSlot() - 1 || (e.getNewSlot() == 8 && e.getPreviousSlot() == 0)) { getPlayerEditor(player.getUniqueId()).cycleAxis(-1); } } - @EventHandler (priority = EventPriority.LOWEST, ignoreCancelled=false) - void onPlayerMenuSelect(InventoryClickEvent e){ - if(e.getInventory().getHolder() == null) return; - if(!(e.getInventory().getHolder() instanceof ASEHolder)) return; - if(e.getInventory().getHolder() == menuHolder){ + @EventHandler(priority = EventPriority.LOWEST, ignoreCancelled = false) + void onPlayerMenuSelect( InventoryClickEvent e) { + if (e.getInventory().getHolder() == null) return; + if (!(e.getInventory().getHolder() instanceof ASEHolder)) return; + if (e.getInventory().getHolder() == menuHolder) { e.setCancelled(true); - ItemStack item = e.getCurrentItem(); - if(item!= null && item.hasItemMeta()){ - Player player = (Player) e.getWhoClicked(); - String command = item.getItemMeta().getPersistentDataContainer().get(plugin.getIconKey(), PersistentDataType.STRING); - if(command != null){ + ItemStack item = e.getCurrentItem(); + if (item != null && item.hasItemMeta()) { + Player player = (Player) e.getWhoClicked(); + String command = item.getItemMeta().getPersistentDataContainer().get(plugin.getIconKey(), PersistentDataType.STRING); + if (command != null) { player.performCommand(command); return; } } } - if(e.getInventory().getHolder() == equipmentHolder){ - ItemStack item = e.getCurrentItem(); - if(item == null) return; - if(item.getItemMeta() == null ) return; - if(item.getItemMeta().getPersistentDataContainer().has(plugin.getIconKey(), PersistentDataType.STRING)){ + if (e.getInventory().getHolder() == equipmentHolder) { + ItemStack item = e.getCurrentItem(); + if (item == null) return; + if (item.getItemMeta() == null) return; + if (item.getItemMeta().getPersistentDataContainer().has(plugin.getIconKey(), PersistentDataType.STRING)) { e.setCancelled(true); } } } - @EventHandler (priority = EventPriority.MONITOR, ignoreCancelled=true) - void onPlayerMenuClose(InventoryCloseEvent e){ - if(e.getInventory().getHolder() == null) return; - if(!(e.getInventory().getHolder() instanceof ASEHolder)) return; - if(e.getInventory().getHolder() == equipmentHolder){ - PlayerEditor pe = players.get(e.getPlayer().getUniqueId()); + @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true) + void onPlayerMenuClose( InventoryCloseEvent e) { + if (e.getInventory().getHolder() == null) return; + if (!(e.getInventory().getHolder() instanceof ASEHolder)) return; + if (e.getInventory().getHolder() == equipmentHolder) { + PlayerEditor pe = players.get(e.getPlayer().getUniqueId()); pe.equipMenu.equipArmorstand(); } } - @EventHandler (priority = EventPriority.MONITOR) - void onPlayerLogOut(PlayerQuitEvent e){ + @EventHandler(priority = EventPriority.MONITOR) + void onPlayerLogOut( PlayerQuitEvent e) { removePlayerEditor(e.getPlayer().getUniqueId()); } - public PlayerEditor getPlayerEditor(UUID uuid){ + public PlayerEditor getPlayerEditor( UUID uuid) { return players.containsKey(uuid) ? players.get(uuid) : addPlayerEditor(uuid); } - PlayerEditor addPlayerEditor(UUID uuid){ - PlayerEditor pe = new PlayerEditor(uuid, plugin); + PlayerEditor addPlayerEditor( UUID uuid) { + PlayerEditor pe = new PlayerEditor(uuid, plugin); players.put(uuid, pe); return pe; } - private void removePlayerEditor(UUID uuid){ + private void removePlayerEditor( UUID uuid) { players.remove(uuid); } diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/menu/Menu.java b/src/main/java/io/github/rypofalem/armorstandeditor/menu/Menu.java index d20a48c3..8f55d83a 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/menu/Menu.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/menu/Menu.java @@ -39,7 +39,7 @@ public class Menu { private PlayerEditor pe; private static String name = "Armor Stand Editor Menu"; - public Menu(PlayerEditor pe){ + public Menu(PlayerEditor pe) { this.pe = pe; name = pe.plugin.getLang().getMessage("mainmenutitle", "menutitle"); menuInv = Bukkit.createInventory(pe.getManager().getMenuHolder(), 54, name); @@ -49,10 +49,36 @@ public Menu(PlayerEditor pe){ private void fillInventory() { menuInv.clear(); - ItemStack xAxis= null, yAxis= null, zAxis= null, coarseAdj= null, fineAdj= null, rotate = null, place = null, headPos= null, - rightArmPos= null, bodyPos= null, leftArmPos= null, reset = null, showArms= null, visibility= null, size= null, - rightLegPos= null, equipment = null, leftLegPos= null, disableSlots = null, gravity= null, plate= null, copy= null, paste= null, - slot1= null, slot2= null, slot3= null, slot4= null, help= null; + ItemStack xAxis = null; + ItemStack yAxis = null; + ItemStack zAxis = null; + ItemStack coarseAdj = null; + ItemStack fineAdj = null; + ItemStack rotate = null; + ItemStack place = null; + ItemStack headPos = null; + ItemStack rightArmPos = null; + ItemStack bodyPos = null; + ItemStack leftArmPos = null; + ItemStack reset = null; + ItemStack showArms = null; + ItemStack visibility = null; + ItemStack size = null; + ItemStack rightLegPos = null; + ItemStack equipment = null; + ItemStack leftLegPos = null; + ItemStack disableSlots = null; + ItemStack gravity = null; + ItemStack plate = null; + ItemStack copy = null; + ItemStack paste = null; + ItemStack slot1 = null; + ItemStack slot2 = null; + ItemStack slot3 = null; + ItemStack slot4 = null; + ItemStack help = null; + ItemStack itemFrameVisible = null; + ItemStack itemFrameGlow = null; //Unused? xAxis = createIcon(new ItemStack(Material.RED_WOOL, 1), "xaxis", "axis x"); @@ -66,103 +92,107 @@ private void fillInventory() { coarseAdj = createIcon(new ItemStack(Material.DIRT, 1), "coarseadj", "adj coarse"); - fineAdj = createIcon( new ItemStack(Material.SANDSTONE), + fineAdj = createIcon(new ItemStack(Material.SANDSTONE), "fineadj", "adj fine"); - - reset = createIcon( new ItemStack(Material.LEVER), + reset = createIcon(new ItemStack(Material.LEVER), "reset", "mode reset"); - headPos = createIcon( new ItemStack(Material.LEATHER_HELMET), + headPos = createIcon(new ItemStack(Material.LEATHER_HELMET), "head", "mode head"); - bodyPos = createIcon( new ItemStack(Material.LEATHER_CHESTPLATE), + bodyPos = createIcon(new ItemStack(Material.LEATHER_CHESTPLATE), "body", "mode body"); - leftLegPos = createIcon( new ItemStack(Material.LEATHER_LEGGINGS), + leftLegPos = createIcon(new ItemStack(Material.LEATHER_LEGGINGS), "leftleg", "mode leftleg"); - rightLegPos = createIcon( new ItemStack(Material.LEATHER_LEGGINGS), + rightLegPos = createIcon(new ItemStack(Material.LEATHER_LEGGINGS), "rightleg", "mode rightleg"); - leftArmPos = createIcon( new ItemStack(Material.STICK), + leftArmPos = createIcon(new ItemStack(Material.STICK), "leftarm", "mode leftarm"); - rightArmPos = createIcon( new ItemStack(Material.STICK), + rightArmPos = createIcon(new ItemStack(Material.STICK), "rightarm", "mode rightarm"); - showArms = createIcon( new ItemStack(Material.STICK), + showArms = createIcon(new ItemStack(Material.STICK), "showarms", "mode showarms"); - if(pe.getPlayer().hasPermission("asedit.invisible")){ + if (pe.getPlayer().hasPermission("asedit.invisible")) { visibility = new ItemStack(Material.POTION, 1); - PotionMeta potionMeta = (PotionMeta) visibility.getItemMeta(); - PotionEffect eff1 = new PotionEffect(PotionEffectType.INVISIBILITY, 1, 0); + PotionMeta potionMeta = (PotionMeta) visibility.getItemMeta(); + PotionEffect eff1 = new PotionEffect(PotionEffectType.INVISIBILITY, 1, 0); potionMeta.addCustomEffect(eff1, true); visibility.setItemMeta(potionMeta); - visibility = createIcon( visibility, "invisible", "mode invisible"); + visibility = createIcon(visibility, "invisible", "mode invisible"); + } + + if (pe.getPlayer().hasPermission("asedit.basic")) { + itemFrameVisible = new ItemStack(Material.ITEM_FRAME, 1); + itemFrameVisible = createIcon(itemFrameVisible, "itemframevisible", "mode itemframe"); } - size = createIcon( new ItemStack(Material.PUFFERFISH, 1), + size = createIcon(new ItemStack(Material.PUFFERFISH, 1), "size", "mode size"); - if(pe.getPlayer().hasPermission("asedit.disableslots")){ + if (pe.getPlayer().hasPermission("asedit.disableslots")) { disableSlots = createIcon(new ItemStack(Material.BARRIER), "disableslots", "mode disableslots"); } - gravity = createIcon( new ItemStack(Material.SAND), "gravity", "mode gravity"); + gravity = createIcon(new ItemStack(Material.SAND), "gravity", "mode gravity"); - plate = createIcon( new ItemStack(Material.STONE_SLAB, 1), + plate = createIcon(new ItemStack(Material.STONE_SLAB, 1), "baseplate", "mode baseplate"); - place = createIcon( new ItemStack(Material.MINECART, 1), + place = createIcon(new ItemStack(Material.MINECART, 1), "placement", "mode placement"); - rotate = createIcon( new ItemStack(Material.COMPASS, 1), + rotate = createIcon(new ItemStack(Material.COMPASS, 1), "rotate", "mode rotate"); equipment = createIcon(new ItemStack(Material.CHEST, 1), "equipment", "mode equipment"); copy = createIcon(new ItemStack(Material.WRITABLE_BOOK), - "copy","mode copy"); + "copy", "mode copy"); paste = createIcon(new ItemStack(Material.ENCHANTED_BOOK), - "paste","mode paste"); + "paste", "mode paste"); slot1 = createIcon(new ItemStack(Material.DANDELION), - "copyslot","slot 1", "1"); + "copyslot", "slot 1", "1"); slot2 = createIcon(new ItemStack(Material.AZURE_BLUET, 2), "copyslot", "slot 2", "2"); slot3 = createIcon(new ItemStack(Material.BLUE_ORCHID, 3), - "copyslot","slot 3", "3"); + "copyslot", "slot 3", "3"); - slot4 = createIcon( new ItemStack(Material.PEONY, 4), - "copyslot","slot 4", "4"); + slot4 = createIcon(new ItemStack(Material.PEONY, 4), + "copyslot", "slot 4", "4"); help = createIcon(new ItemStack(Material.NETHER_STAR), "helpgui", "help"); - ItemStack[] items = + ItemStack[] items = { xAxis, yAxis, zAxis, null, coarseAdj, fineAdj, null, rotate, place, null, headPos, null, null, null, null, null, null, null, rightArmPos, bodyPos, leftArmPos, reset, null, null, showArms, visibility, size, - rightLegPos, equipment, leftLegPos, null, null, null, null, gravity, plate, - null, copy, paste, null, null, null, null, null, null, + rightLegPos, equipment, leftLegPos, null, null, null, disableSlots, gravity, plate, + null, copy, paste, null, null, null, null, itemFrameVisible, null, slot1, slot2, slot3, slot4, null, null, null, null, help }; menuInv.setContents(items); } - private ItemStack createIcon(ItemStack icon, String path, String command){ + private ItemStack createIcon( ItemStack icon, String path, String command) { return createIcon(icon, path, command, null); } - private ItemStack createIcon(ItemStack icon, String path, String command, String option){ + private ItemStack createIcon( ItemStack icon, String path, String command, String option) { ItemMeta meta = icon.getItemMeta(); meta.getPersistentDataContainer().set(ArmorStandEditorPlugin.instance().getIconKey(), PersistentDataType.STRING, "ase " + command); meta.setDisplayName(getIconName(path, option)); @@ -175,30 +205,24 @@ private ItemStack createIcon(ItemStack icon, String path, String command, String return icon; } - private String getIconName(String path){ - return getIconName(path, null); - } - private String getIconName(String path, String option){ + private String getIconName( String path, String option) { return pe.plugin.getLang().getMessage(path, "iconname", option); } - private String getIconDescription(String path){ - return getIconDescription(path, null); - } - private String getIconDescription(String path, String option){ + private String getIconDescription( String path, String option) { return pe.plugin.getLang().getMessage(path + ".description", "icondescription", option); } - public void openMenu(){ - if(pe.getPlayer().hasPermission("asedit.basic")){ + public void openMenu() { + if (pe.getPlayer().hasPermission("asedit.basic")) { fillInventory(); pe.getPlayer().openInventory(menuInv); } } - public static String getName(){ + public static String getName() { return name; } -} +} \ No newline at end of file diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/modes/ArmorStandData.java b/src/main/java/io/github/rypofalem/armorstandeditor/modes/ArmorStandData.java index 27c10546..7ac85f56 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/modes/ArmorStandData.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/modes/ArmorStandData.java @@ -40,11 +40,13 @@ public class ArmorStandData { this.gravity = as.hasGravity(); this.showArms = as.hasArms(); this.visible = as.isVisible(); - this.head = as.getHelmet(); - this.body = as.getChestplate(); - this.legs = as.getLeggings(); - this.feetsies = as.getBoots(); - this.rightHand = as.getItemInHand(); + + //Fix for Depreciate Armor Stand STuff + this.head = as.getEquipment().getHelmet(); + this.body = as.getEquipment().getChestplate(); + this.legs = as.getEquipment().getLeggings(); + this.feetsies = as.getEquipment().getBoots(); + this.rightHand = as.getEquipment().getItemInMainHand(); this.leftHand = as.getEquipment().getItemInOffHand(); } } diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/modes/EditMode.java b/src/main/java/io/github/rypofalem/armorstandeditor/modes/EditMode.java index da6d38c2..81529924 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/modes/EditMode.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/modes/EditMode.java @@ -22,7 +22,7 @@ public enum EditMode { NONE("None"), INVISIBLE("Invisible"), SHOWARMS("ShowArms"), GRAVITY("Gravity"), BASEPLATE("BasePlate"), SIZE("Size"), COPY("Copy"), PASTE("Paste"), HEAD("Head"), BODY("Body"), LEFTARM("LeftArm"), RIGHTARM("RightArm"), LEFTLEG("LeftLeg"), RIGHTLEG("RightLeg"), - PLACEMENT("Placement"), DISABLESLOTS("DisableSlots"), ROTATE("Rotate"), EQUIPMENT("Equipment"), RESET("Reset"); + PLACEMENT("Placement"), DISABLESLOTS("DisableSlots"), ROTATE("Rotate"), EQUIPMENT("Equipment"), RESET("Reset"), ITEMFRAME("ItemFrame"), ITEMFRAMEGLOW("ItemFrameGlow");; private String name; diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml index 56a6f773..0e9af8ff 100644 --- a/src/main/resources/config.yml +++ b/src/main/resources/config.yml @@ -21,5 +21,8 @@ lang: en_US.yml #If false plugin notifications will be sent to the chat box. If true messages will be sent to the action bar. sendMessagesToActionBar: true +#(Optional) Glowing Item Frames Supportfor Item Frames in 1.17 +glowingItemFrame: true + #Don't set to true unless you want players to see random messages or other undesirable behavior debug: false \ No newline at end of file diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index 7bf6f3d9..94b6439a 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -3,7 +3,10 @@ main: io.github.rypofalem.armorstandeditor.ArmorStandEditorPlugin version: 1.17-26 api-version: "1.13" website: rypofalem.github.io -author: RypoFalem +authors: + - Rypofalem + - Wolfstorm + - Marfjeh description: Allows players to edit data of armorstands without any commands. commands: ase: From efa5a1160724a3bd88f414876f8859372bff325f Mon Sep 17 00:00:00 2001 From: Wolfstorm Date: Tue, 20 Jul 2021 18:55:59 +0200 Subject: [PATCH 005/369] Update README.md --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index d582ef68..8d70c3da 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,6 @@ # ArmorStandEditor +[![Build Status](https://travis-ci.org/Wolfst0rm/ArmorStandEditor.svg?branch=master)](https://travis-ci.org/Wolfst0rm/ArmorStandEditor) + Bukkit plugin to allow players to edit armorstands without commands. Read the [wiki](https://github.com/RypoFalem/ArmorStandEditor/wiki) for more info. From 02fab7ca360d3dc7d81c2c8b657032144d7e24b0 Mon Sep 17 00:00:00 2001 From: Wolfstorm Date: Tue, 20 Jul 2021 18:58:46 +0200 Subject: [PATCH 006/369] Create maven-publish.yml --- .github/workflows/maven-publish.yml | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 .github/workflows/maven-publish.yml diff --git a/.github/workflows/maven-publish.yml b/.github/workflows/maven-publish.yml new file mode 100644 index 00000000..cc76c580 --- /dev/null +++ b/.github/workflows/maven-publish.yml @@ -0,0 +1,29 @@ +name: Maven CI/CD + +on: + push: + branches: [ master ] + pull_request: + branches: [ master ] + +jobs: + build_and_test: + + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v2 + - name: Set up JDK 14 + uses: actions/setup-java@v1 + with: + java-version: 14 + + - name: Cache the Maven packages to speed up build + uses: actions/cache@v1 + with: + path: ~/.m2 + key: ${{ runner.os }}-m2-${{ hashFiles('**/pom.xml') }} + restore-keys: ${{ runner.os }}-m2 + + - name: Build and test project with Maven + run: mvn -B package --file pom.xml From c753a8b40e390847bfff314cb17241a33bd0d402 Mon Sep 17 00:00:00 2001 From: Wolfstorm Date: Tue, 20 Jul 2021 18:59:16 +0200 Subject: [PATCH 007/369] Update maven-publish.yml --- .github/workflows/maven-publish.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.github/workflows/maven-publish.yml b/.github/workflows/maven-publish.yml index cc76c580..c2370730 100644 --- a/.github/workflows/maven-publish.yml +++ b/.github/workflows/maven-publish.yml @@ -1,11 +1,10 @@ name: Maven CI/CD on: - push: + push: branches: [ master ] pull_request: branches: [ master ] - jobs: build_and_test: From 8c96b0fbfda5ef58bd1ae03ea80ccb96480e8d08 Mon Sep 17 00:00:00 2001 From: Wolfstorm Date: Tue, 20 Jul 2021 18:59:52 +0200 Subject: [PATCH 008/369] Update maven-publish.yml --- .github/workflows/maven-publish.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/maven-publish.yml b/.github/workflows/maven-publish.yml index c2370730..6ce6470e 100644 --- a/.github/workflows/maven-publish.yml +++ b/.github/workflows/maven-publish.yml @@ -16,8 +16,8 @@ jobs: uses: actions/setup-java@v1 with: java-version: 14 - - - name: Cache the Maven packages to speed up build + + - name: Cache the Maven packages to speed up build uses: actions/cache@v1 with: path: ~/.m2 From cae064bc4836920f85d3bd37907a6cedd1ba9f4e Mon Sep 17 00:00:00 2001 From: Wolfstorm Date: Tue, 20 Jul 2021 19:03:12 +0200 Subject: [PATCH 009/369] Create .travis-ci.yml --- .travis-ci.yml | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 .travis-ci.yml diff --git a/.travis-ci.yml b/.travis-ci.yml new file mode 100644 index 00000000..87c48d30 --- /dev/null +++ b/.travis-ci.yml @@ -0,0 +1,10 @@ +dist: xenial + +language: java + +jdk: + - openjdk8 + - openjdk11 + +after_success: + - bash <(curl -s https://codecov.io/bash) From 3bd3c9f1f5275918edee93923ca7bc44da3c3d24 Mon Sep 17 00:00:00 2001 From: Wolfstorm Date: Tue, 20 Jul 2021 19:05:07 +0200 Subject: [PATCH 010/369] Update maven-publish.yml --- .github/workflows/maven-publish.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.github/workflows/maven-publish.yml b/.github/workflows/maven-publish.yml index 6ce6470e..aa60101e 100644 --- a/.github/workflows/maven-publish.yml +++ b/.github/workflows/maven-publish.yml @@ -26,3 +26,7 @@ jobs: - name: Build and test project with Maven run: mvn -B package --file pom.xml + + - name: action-maven-publish + uses: samuelmeuli/action-maven-publish@v1.4.0 + From b01e03b550302da6f9d5ae87fdd629e3c832d16b Mon Sep 17 00:00:00 2001 From: Wolfstorm Date: Tue, 20 Jul 2021 19:15:04 +0200 Subject: [PATCH 011/369] [Admin] Github Workflow for Publishing Signed-off-by: Wolfstorm --- .github/workflows/maven-publish.yml | 52 +++++++++++++++++------------ pom.xml | 7 ++++ 2 files changed, 38 insertions(+), 21 deletions(-) diff --git a/.github/workflows/maven-publish.yml b/.github/workflows/maven-publish.yml index aa60101e..e5d30805 100644 --- a/.github/workflows/maven-publish.yml +++ b/.github/workflows/maven-publish.yml @@ -1,32 +1,42 @@ -name: Maven CI/CD +name: Maven Package on: - push: - branches: [ master ] + release: + types: [created] + pull: + branches: [master] pull_request: - branches: [ master ] + branches: [master] + jobs: - build_and_test: + build: runs-on: ubuntu-latest + permissions: + contents: read + packages: write steps: - - uses: actions/checkout@v2 - - name: Set up JDK 14 - uses: actions/setup-java@v1 - with: - java-version: 14 + - uses: actions/checkout@v2 + - name: Set up JDK 16 + uses: actions/setup-java@v2 + with: + java-version: '16' + distribution: 'adopt' + server-id: github # Value of the distributionManagement/repository/id field of the pom.xml + settings-path: ${{ github.workspace }} # location for the settings.xml file - - name: Cache the Maven packages to speed up build - uses: actions/cache@v1 - with: - path: ~/.m2 - key: ${{ runner.os }}-m2-${{ hashFiles('**/pom.xml') }} - restore-keys: ${{ runner.os }}-m2 + - name: Cache the Maven packages to speed up build + uses: actions/cache@v1 + with: + path: ~/.m2 + key: ${{ runner.os }}-m2-${{ hashFiles('**/pom.xml') }} + restore-keys: ${{ runner.os }}-m2 - - name: Build and test project with Maven - run: mvn -B package --file pom.xml - - - name: action-maven-publish - uses: samuelmeuli/action-maven-publish@v1.4.0 + - name: Build with Maven + run: mvn -B package --file pom.xml + - name: Publish to GitHub Packages Apache Maven + run: mvn deploy -s $GITHUB_WORKSPACE/settings.xml + env: + GITHUB_TOKEN: ${{ github.token }} \ No newline at end of file diff --git a/pom.xml b/pom.xml index 42fe163e..cd11facc 100644 --- a/pom.xml +++ b/pom.xml @@ -47,5 +47,12 @@ + + + github + GitHub Packages + https://maven.pkg.github.com/Wolfst0rm/ArmorStandEditor + + From 7fdf1d3645bdd9fec3ca558255fddf8a4e5c2270 Mon Sep 17 00:00:00 2001 From: Wolfstorm Date: Tue, 20 Jul 2021 19:15:04 +0200 Subject: [PATCH 012/369] [Admin] Github Workflow for Publishing Signed-off-by: Wolfstorm --- .github/workflows/maven-publish.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/maven-publish.yml b/.github/workflows/maven-publish.yml index e5d30805..dd011e59 100644 --- a/.github/workflows/maven-publish.yml +++ b/.github/workflows/maven-publish.yml @@ -3,7 +3,7 @@ name: Maven Package on: release: types: [created] - pull: + push: branches: [master] pull_request: branches: [master] From b5d32613201e622c17b574d846aba829390a2738 Mon Sep 17 00:00:00 2001 From: Wolfstorm Date: Tue, 20 Jul 2021 19:32:01 +0200 Subject: [PATCH 013/369] [Admin] Github Workflow for Publishing Signed-off-by: Wolfstorm --- .github/workflows/maven-publish.yml | 12 ++++++++---- pom.xml | 16 +++++++++------- 2 files changed, 17 insertions(+), 11 deletions(-) diff --git a/.github/workflows/maven-publish.yml b/.github/workflows/maven-publish.yml index dd011e59..75fe99e9 100644 --- a/.github/workflows/maven-publish.yml +++ b/.github/workflows/maven-publish.yml @@ -36,7 +36,11 @@ jobs: - name: Build with Maven run: mvn -B package --file pom.xml - - name: Publish to GitHub Packages Apache Maven - run: mvn deploy -s $GITHUB_WORKSPACE/settings.xml - env: - GITHUB_TOKEN: ${{ github.token }} \ No newline at end of file + - name: Clean Package w/ Maven + run: mvn clean package + + - name: Publish Artifact + uses: actions/upload-artifact@v1 + with: + name: artifact + path: target/ diff --git a/pom.xml b/pom.xml index cd11facc..2085fa56 100644 --- a/pom.xml +++ b/pom.xml @@ -11,6 +11,7 @@ 1.8 UTF-8 + 2.5.3 @@ -45,14 +46,15 @@ + + maven-release-plugin + ${maven-release-plugin.version} + + [ci skip] + @{project.version} + + - - - github - GitHub Packages - https://maven.pkg.github.com/Wolfst0rm/ArmorStandEditor - - From 4b62a304db3d63974046b1811bb352d0b525cea2 Mon Sep 17 00:00:00 2001 From: Wolfstorm Date: Tue, 20 Jul 2021 19:37:31 +0200 Subject: [PATCH 014/369] [Admin] Github Workflow for Publishing Signed-off-by: Wolfstorm --- .github/workflows/maven-publish.yml | 68 ++++++++++++++++------------- 1 file changed, 37 insertions(+), 31 deletions(-) diff --git a/.github/workflows/maven-publish.yml b/.github/workflows/maven-publish.yml index 75fe99e9..2a110558 100644 --- a/.github/workflows/maven-publish.yml +++ b/.github/workflows/maven-publish.yml @@ -1,46 +1,52 @@ -name: Maven Package +# This workflow automatically tests new commits and pull requests as they come in. +# Note that this does not upload any artifacts, you will need to compile mcMMO manually +# if you wish to create the actual jar. +name: Compile and test on: - release: - types: [created] + # We run our tests whenever the pom or a source file was touched. + # There is no need to run Maven when only the changelog was touched. + # We may also want to re-run this workflow when the workflow file itself + # was updated too. push: - branches: [master] + paths: + - 'src/**' + - 'pom.xml' + - '.github/workflows/maven-publish.yml' + + # Whenever someone submits a new pull request which modified the pom or a source file, + # we want to ensure it compiles successfully and that all tests will pass. pull_request: - branches: [master] + paths: + - 'src/**' + - 'pom.xml' jobs: - build: - + compile: + name: Maven compiler runs-on: ubuntu-latest - permissions: - contents: read - packages: write - steps: - - uses: actions/checkout@v2 - - name: Set up JDK 16 - uses: actions/setup-java@v2 + + # 1. Check out the current working tree + - name: Checkout repository + uses: actions/checkout@v2 + + # 2. Setup Java 1.8 JDK + - name: Java 1.8 setup + uses: actions/setup-java@v1.4.3 with: - java-version: '16' - distribution: 'adopt' - server-id: github # Value of the distributionManagement/repository/id field of the pom.xml - settings-path: ${{ github.workspace }} # location for the settings.xml file + java-package: jdk + java-version: 1.8 - - name: Cache the Maven packages to speed up build - uses: actions/cache@v1 + # 3. Setup local Maven package cache to speed up building + - name: Cache Maven packages + uses: actions/cache@v2 with: path: ~/.m2 key: ${{ runner.os }}-m2-${{ hashFiles('**/pom.xml') }} restore-keys: ${{ runner.os }}-m2 - - name: Build with Maven - run: mvn -B package --file pom.xml - - - name: Clean Package w/ Maven - run: mvn clean package - - - name: Publish Artifact - uses: actions/upload-artifact@v1 - with: - name: artifact - path: target/ + # 4. Build via Maven + - name: Build via Maven + run: mvn verify -B --file pom.xml + {"mode":"full","isActive":false} \ No newline at end of file From 59ac6f857d2a329fc437edde7aa38ec248f502b2 Mon Sep 17 00:00:00 2001 From: Wolfstorm Date: Tue, 20 Jul 2021 19:37:31 +0200 Subject: [PATCH 015/369] [Admin] Github Workflow for Publishing Signed-off-by: Wolfstorm --- .github/workflows/maven-publish.yml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/maven-publish.yml b/.github/workflows/maven-publish.yml index 2a110558..ce6a6ae0 100644 --- a/.github/workflows/maven-publish.yml +++ b/.github/workflows/maven-publish.yml @@ -31,12 +31,12 @@ jobs: - name: Checkout repository uses: actions/checkout@v2 - # 2. Setup Java 1.8 JDK - - name: Java 1.8 setup - uses: actions/setup-java@v1.4.3 + # 2. Setup Java 16 JDK + - name: Set up JDK 16 + uses: actions/setup-java@v2 with: - java-package: jdk - java-version: 1.8 + java-version: '16' + distribution: 'adopt' # 3. Setup local Maven package cache to speed up building - name: Cache Maven packages From fedc54202fb5885bf2410056722f5875063643e1 Mon Sep 17 00:00:00 2001 From: Wolfstorm Date: Tue, 20 Jul 2021 19:41:01 +0200 Subject: [PATCH 016/369] [CI] Fix CI Error Signed-off-by: Wolfstorm --- .github/workflows/maven-publish.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.github/workflows/maven-publish.yml b/.github/workflows/maven-publish.yml index ce6a6ae0..a327bad9 100644 --- a/.github/workflows/maven-publish.yml +++ b/.github/workflows/maven-publish.yml @@ -48,5 +48,4 @@ jobs: # 4. Build via Maven - name: Build via Maven - run: mvn verify -B --file pom.xml - {"mode":"full","isActive":false} \ No newline at end of file + run: mvn verify -B --file pom.xml \ No newline at end of file From 1b64024157011045b80b9623bd70ee458f9102fb Mon Sep 17 00:00:00 2001 From: Wolfstorm Date: Tue, 20 Jul 2021 19:43:10 +0200 Subject: [PATCH 017/369] [CI] Add Upload of Artifacts Signed-off-by: Wolfstorm --- .github/workflows/maven-publish.yml | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/.github/workflows/maven-publish.yml b/.github/workflows/maven-publish.yml index a327bad9..e7468bfb 100644 --- a/.github/workflows/maven-publish.yml +++ b/.github/workflows/maven-publish.yml @@ -48,4 +48,12 @@ jobs: # 4. Build via Maven - name: Build via Maven - run: mvn verify -B --file pom.xml \ No newline at end of file + run: mvn verify -B --file pom.xml + + #5 Upload Artifacts + - name: Upload a Build Artifact + uses: actions/upload-artifact@v2.1.4 + with: + name: ArmorStandEditor-Artifact + path: build/libs/armorstandeditor-*.*.jar + if-no-files-found: error \ No newline at end of file From 1bf9c7e9577639fb8d2e9423945384d5b9c01139 Mon Sep 17 00:00:00 2001 From: Wolfstorm Date: Tue, 20 Jul 2021 19:43:10 +0200 Subject: [PATCH 018/369] [CI] Add Upload of Artifacts Signed-off-by: Wolfstorm --- .github/workflows/maven-publish.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/maven-publish.yml b/.github/workflows/maven-publish.yml index e7468bfb..3daf88b4 100644 --- a/.github/workflows/maven-publish.yml +++ b/.github/workflows/maven-publish.yml @@ -55,5 +55,5 @@ jobs: uses: actions/upload-artifact@v2.1.4 with: name: ArmorStandEditor-Artifact - path: build/libs/armorstandeditor-*.*.jar + path: build/libs/armorstandeditor *-*.jar if-no-files-found: error \ No newline at end of file From c6b211030ec0c6767963b65ec32f240a3698013e Mon Sep 17 00:00:00 2001 From: Wolfstorm Date: Tue, 20 Jul 2021 19:46:13 +0200 Subject: [PATCH 019/369] [CI] Add Upload of Artifacts Signed-off-by: Wolfstorm --- .github/workflows/maven-publish.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/maven-publish.yml b/.github/workflows/maven-publish.yml index 3daf88b4..252546b0 100644 --- a/.github/workflows/maven-publish.yml +++ b/.github/workflows/maven-publish.yml @@ -50,6 +50,9 @@ jobs: - name: Build via Maven run: mvn verify -B --file pom.xml + - name: Clean package + run: mvn clean package + #5 Upload Artifacts - name: Upload a Build Artifact uses: actions/upload-artifact@v2.1.4 From 119536c78156b090229d50361b4be231bcdcf73a Mon Sep 17 00:00:00 2001 From: Wolfstorm Date: Tue, 20 Jul 2021 19:52:15 +0200 Subject: [PATCH 020/369] [CI] Add Upload of Artifacts Signed-off-by: Wolfstorm --- .github/workflows/maven-publish.yml | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/.github/workflows/maven-publish.yml b/.github/workflows/maven-publish.yml index 252546b0..70627d1d 100644 --- a/.github/workflows/maven-publish.yml +++ b/.github/workflows/maven-publish.yml @@ -50,13 +50,17 @@ jobs: - name: Build via Maven run: mvn verify -B --file pom.xml + #5: Create a Clean Package - name: Clean package - run: mvn clean package + run: mvn -B clean package + + - name: Clean Verify + run: mvn -B clean verify #5 Upload Artifacts - name: Upload a Build Artifact uses: actions/upload-artifact@v2.1.4 with: name: ArmorStandEditor-Artifact - path: build/libs/armorstandeditor *-*.jar + path: build/libs/armorstandeditor-*-*.jar if-no-files-found: error \ No newline at end of file From 00461529e8af7f6a3df3a1012039004fb047bd2f Mon Sep 17 00:00:00 2001 From: Wolfstorm Date: Tue, 20 Jul 2021 19:52:15 +0200 Subject: [PATCH 021/369] [CI] Add Upload of Artifacts Signed-off-by: Wolfstorm --- .github/workflows/maven-publish.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/maven-publish.yml b/.github/workflows/maven-publish.yml index 70627d1d..b367a3bb 100644 --- a/.github/workflows/maven-publish.yml +++ b/.github/workflows/maven-publish.yml @@ -61,6 +61,6 @@ jobs: - name: Upload a Build Artifact uses: actions/upload-artifact@v2.1.4 with: - name: ArmorStandEditor-Artifact - path: build/libs/armorstandeditor-*-*.jar + name: artifact + path: ${{ runner.os }}/ArmorStandEditor/ArmorStandEditor/target/armorstandeditor-*-*.jar if-no-files-found: error \ No newline at end of file From d72604c7ae91ae6c2b61f7c87f7024ed0db5b54d Mon Sep 17 00:00:00 2001 From: Wolfstorm Date: Tue, 20 Jul 2021 19:56:07 +0200 Subject: [PATCH 022/369] [CI] Add Upload of Artifacts Signed-off-by: Wolfstorm --- .github/workflows/maven-publish.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/maven-publish.yml b/.github/workflows/maven-publish.yml index b367a3bb..7878143f 100644 --- a/.github/workflows/maven-publish.yml +++ b/.github/workflows/maven-publish.yml @@ -62,5 +62,5 @@ jobs: uses: actions/upload-artifact@v2.1.4 with: name: artifact - path: ${{ runner.os }}/ArmorStandEditor/ArmorStandEditor/target/armorstandeditor-*-*.jar + path: /home/runner/work/ArmorStandEditor/ArmorStandEditor/target/armorstandeditor-*-*.jar if-no-files-found: error \ No newline at end of file From 3d67b41805d9b8ea5630be9e994518b0003b0786 Mon Sep 17 00:00:00 2001 From: Wolfstorm Date: Tue, 20 Jul 2021 20:35:50 +0200 Subject: [PATCH 023/369] [FIX] Permissions - Remove ase.itemGlow into ase.basics [FIX] Dobule PlayerInteractAtEntityEvent firing Twice - #48 [CI] Fix maven-publish.yml issues Signed-off-by: Wolfstorm --- .github/workflows/maven-publish.yml | 6 +++--- .../armorstandeditor/PlayerEditorManager.java | 18 +++++++++--------- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/.github/workflows/maven-publish.yml b/.github/workflows/maven-publish.yml index 7878143f..3cc2782f 100644 --- a/.github/workflows/maven-publish.yml +++ b/.github/workflows/maven-publish.yml @@ -50,17 +50,17 @@ jobs: - name: Build via Maven run: mvn verify -B --file pom.xml - #5: Create a Clean Package + #5: Create a Clean Package - and Verify it - name: Clean package run: mvn -B clean package - name: Clean Verify run: mvn -B clean verify - #5 Upload Artifacts + #6 Upload Artifacts - name: Upload a Build Artifact uses: actions/upload-artifact@v2.1.4 with: name: artifact path: /home/runner/work/ArmorStandEditor/ArmorStandEditor/target/armorstandeditor-*-*.jar - if-no-files-found: error \ No newline at end of file + if-no-files-found: error diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditorManager.java b/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditorManager.java index fb98dabc..2cfd36bf 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditorManager.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditorManager.java @@ -64,7 +64,7 @@ public class PlayerEditorManager implements Listener { Bukkit.getServer().getScheduler().runTaskTimer(plugin, counter, 0, 1); } - @EventHandler(priority = EventPriority.LOWEST, ignoreCancelled = false) + @EventHandler(priority = EventPriority.LOWEST) void onArmorStandDamage( EntityDamageByEntityEvent event) { if (!(event.getDamager() instanceof Player)) return; Player player = (Player) event.getDamager(); @@ -87,7 +87,7 @@ void onArmorStandDamage( EntityDamageByEntityEvent event) { } } - @EventHandler(priority = EventPriority.LOWEST, ignoreCancelled = false) + @EventHandler(priority = EventPriority.LOWEST) void onArmorStandInteract( PlayerInteractAtEntityEvent event) { if (ignoreNextInteract) return; if (event.getHand() != EquipmentSlot.HAND) return; @@ -154,7 +154,7 @@ void onArmorStandInteract( PlayerInteractAtEntityEvent event) { } if (player.getInventory().getItemInMainHand().getType().equals(Material.GLOW_INK_SAC) //attempt glowing - && player.hasPermission("asedit.itemframeglow") + && player.hasPermission("asedit.basic") && plugin.glowItemFrames && player.isSneaking()) { ItemStack glowSacs = player.getInventory().getItemInMainHand(); ItemStack contents = null; @@ -260,9 +260,9 @@ private ArrayList getFrameTargets( Player player) { boolean canEdit( Player player, ArmorStand as) { ignoreNextInteract = true; - ArrayList events = new ArrayList<>(); - events.add(new PlayerInteractEntityEvent(player, as, EquipmentSlot.HAND)); - events.add(new PlayerInteractAtEntityEvent(player, as, as.getLocation().toVector(), EquipmentSlot.HAND)); + ArrayList events = new ArrayList<>(); + //events.add(new PlayerInteractEntityEvent(player, as, EquipmentSlot.HAND)); + events.add(new PlayerInteractAtEntityEvent(player, as, as.getLocation().toVector(), EquipmentSlot.HAND)); //FIX for Issue RypoFalem/ArmorStandEditor #48: PlayerInteractAtEntityEvent //events.add(new PlayerArmorStandManipulateEvent(player, as, player.getEquipment().getItemInMainHand(), as.getItemInHand(), EquipmentSlot.HAND)); for ( Event event : events) { if (!(event instanceof Cancellable)) continue; @@ -326,7 +326,7 @@ void applyRightTool( Player player, ArmorStand as) { getPlayerEditor(player.getUniqueId()).reverseEditArmorStand(as); } - @EventHandler(priority = EventPriority.LOWEST, ignoreCancelled = false) + @EventHandler(priority = EventPriority.LOWEST) void onRightClickTool( PlayerInteractEvent e) { if (!(e.getAction() == Action.LEFT_CLICK_AIR || e.getAction() == Action.RIGHT_CLICK_AIR @@ -338,7 +338,7 @@ void onRightClickTool( PlayerInteractEvent e) { getPlayerEditor(player.getUniqueId()).openMenu(); } - @EventHandler(priority = EventPriority.NORMAL, ignoreCancelled = true) + @EventHandler(priority = EventPriority.NORMAL) void onScrollNCrouch( PlayerItemHeldEvent e) { Player player = e.getPlayer(); if (!player.isSneaking()) return; @@ -352,7 +352,7 @@ void onScrollNCrouch( PlayerItemHeldEvent e) { } } - @EventHandler(priority = EventPriority.LOWEST, ignoreCancelled = false) + @EventHandler(priority = EventPriority.LOWEST) void onPlayerMenuSelect( InventoryClickEvent e) { if (e.getInventory().getHolder() == null) return; if (!(e.getInventory().getHolder() instanceof ASEHolder)) return; From 2f48fb58d363f9cf3af19162de44676a7fcea9c4 Mon Sep 17 00:00:00 2001 From: Wolfstorm Date: Tue, 20 Jul 2021 21:01:06 +0200 Subject: [PATCH 024/369] [FIX] Change Chat Help Color [LANG] Update en_US.yml Signed-off-by: Wolfstorm --- .../rypofalem/armorstandeditor/CommandEx.java | 10 +- src/main/resources/lang/en_US.yml | 120 ++++++++++-------- 2 files changed, 71 insertions(+), 59 deletions(-) diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/CommandEx.java b/src/main/java/io/github/rypofalem/armorstandeditor/CommandEx.java index 3c0e4808..096f8062 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/CommandEx.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/CommandEx.java @@ -31,11 +31,11 @@ public class CommandEx implements CommandExecutor { ArmorStandEditorPlugin plugin; - final String LISTMODE = ChatColor.GREEN + "/ase mode <" + Util.getEnumList(EditMode.class) + ">"; - final String LISTAXIS = ChatColor.GREEN + "/ase axis <" + Util.getEnumList(Axis.class) + ">"; - final String LISTADJUSTMENT = ChatColor.GREEN + "/ase adj <" + Util.getEnumList(AdjustmentMode.class) + ">"; - final String LISTSLOT = ChatColor.GREEN + "/ase slot <1-9>"; - final String HELP = ChatColor.GREEN + "/ase help"; + final String LISTMODE = ChatColor.YELLOW + "/ase mode <" + Util.getEnumList(EditMode.class) + ">"; + final String LISTAXIS = ChatColor.YELLOW + "/ase axis <" + Util.getEnumList(Axis.class) + ">"; + final String LISTADJUSTMENT = ChatColor.YELLOW + "/ase adj <" + Util.getEnumList(AdjustmentMode.class) + ">"; + final String LISTSLOT = ChatColor.YELLOW + "/ase slot <1-9>"; + final String HELP = ChatColor.YELLOW + "/ase help"; public CommandEx( ArmorStandEditorPlugin armorStandEditorPlugin) { this.plugin = armorStandEditorPlugin; diff --git a/src/main/resources/lang/en_US.yml b/src/main/resources/lang/en_US.yml index 1fffc8bd..5f0fc250 100644 --- a/src/main/resources/lang/en_US.yml +++ b/src/main/resources/lang/en_US.yml @@ -12,7 +12,7 @@ warn: c menutitle: 8 #info -setmode: +setmode: msg: Setting mode to . head: Head Position body: Body Position @@ -32,31 +32,38 @@ setmode: copy: Copy paste: Paste reset: Reset Pose -setaxis: + itemframe: Toggle Itemframe Visibility +setaxis: msg: Setting axis to . x: X y: Y z: Z -setslot: +setslot: msg: Setting copy slot to . setadj: msg: Setting adjustment to . coarse: Coarse fine: Fine -setgravity: +setgravity: msg: Gravity turned . on: on off: off -nomode: +nomode: msg: Click with the edit tool away from an armorstand to select an editing mode first! -copied: +copied: msg: ArmorStand state copied to slot . -pasted: +pasted: msg: ArmorStand state pasted from slot . +disabledslots: + msg: Toggled Equipment locks target: msg: ArmorStand target locked. notarget: msg: ArmorStand target unlocked. +frametarget: + msg: Itemframe target locked +noframetarget: + msg: Itemframe target unlocked. help: msg: "1. Hold the editing tool() in your main hand @@ -81,9 +88,9 @@ helpurl: #warn cantedit: msg: Sorry, you cannot edit armor stands here! -noperm: +noperm: msg: You don't have permission to use this! -noslotnumcom: +noslotnumcom: msg: You must specify a slot number! noadjcom: msg: You must specify Coarse or Fine adjustment! @@ -101,93 +108,93 @@ equiptitle: #icons xaxis: msg: X Axis - description: + description: msg: Rotate body parts along the X Axis -yaxis: +yaxis: msg: Y Axis - description: + description: msg: Rotate body parts along the Y Axis -zaxis: +zaxis: msg: Z Axis - description: + description: msg: Rotate body parts along the Z Axis -coarseadj: +coarseadj: msg: Coarse Adjustment - description: + description: msg: Make large adjustments -fineadj: +fineadj: msg: Fine Adjustment - description: + description: msg: Make tiny adjustments -head: +head: msg: Head Position - description: + description: msg: Rotate the head -body: +body: msg: Body Position - description: + description: msg: Rotate the body -leftleg: +leftleg: msg: Left Leg Position - description: + description: msg: Rotate the left leg -rightleg: +rightleg: msg: Right Leg Position - description: + description: msg: Rotate the right leg -leftarm: +leftarm: msg: Left Arm Position - description: + description: msg: Rotate the left arm -rightarm: +rightarm: msg: Right Arm Position - description: + description: msg: Rotate the right arm -equipment: +equipment: msg: Equipment - description: + description: msg: Edit equipment -showarms: +showarms: msg: Show Arms - description: + description: msg: Turn arms on and off -invisible: +invisible: msg: Visibility - description: + description: msg: Make it visibile or invisible -size: +size: msg: Size - description: + description: msg: Make it big or small -disableslots: +disableslots: msg: Disable Slots - description: + description: msg: Enable and disable equipment lock -gravity: +gravity: msg: Gravity - description: + description: msg: Turn gravity on or off -baseplate: +baseplate: msg: BasePlate - description: + description: msg: Turn baseplate on or off -placement: +placement: msg: Placement - description: + description: msg: Move the entire armorstand -rotate: +rotate: msg: Rotate description: msg: Rotate the entire armorstand -copy: +copy: msg: Copy description: msg: Copy the armorstand's settings -paste: +paste: msg: Paste - description: + description: msg: Paste the armorstand's settings -copyslot: +copyslot: msg: Copy Slot description: msg: Select a slot to store settings @@ -199,13 +206,17 @@ helpgui: msg: Help! description: msg: Click here to get help! +itemframevisible: + msg: Itemframe Visibility + description: + msg: Toggles an itemframes visibility #icons (equipment menu) -disabled: +disabled: msg: Disabled -equipslot: +equipslot: msg: Slot - description: + description: msg: Drag your into the slot below helm: Helmet chest: Chestplate @@ -219,3 +230,4 @@ equipslot: boots: Feetsies rhand: Right Hand lhand: Left Hand + {"mode":"full","isActive":false} \ No newline at end of file From bb95603830539caa0a6fa58650244eeb3cba07a7 Mon Sep 17 00:00:00 2001 From: Wolfstorm Date: Tue, 20 Jul 2021 21:01:06 +0200 Subject: [PATCH 025/369] [FIX] Change Chat Help Color [LANG] Update en_US.yml Signed-off-by: Wolfstorm --- src/main/resources/lang/en_US.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/main/resources/lang/en_US.yml b/src/main/resources/lang/en_US.yml index 5f0fc250..9e6919d8 100644 --- a/src/main/resources/lang/en_US.yml +++ b/src/main/resources/lang/en_US.yml @@ -229,5 +229,4 @@ equipslot: pants: Pants boots: Feetsies rhand: Right Hand - lhand: Left Hand - {"mode":"full","isActive":false} \ No newline at end of file + lhand: Left Hand \ No newline at end of file From c6f8cdba9a985e8aac605760f09a9cec000a3b4b Mon Sep 17 00:00:00 2001 From: Wolfstorm Date: Tue, 20 Jul 2021 21:14:32 +0200 Subject: [PATCH 026/369] [FIX] Issue with itemFrame setting it to Visible and Invisible [CORE] Version Bump: 1.17.1-27 Signed-off-by: Wolfstorm Signed-off-by: Wolfstorm --- .../java/io/github/rypofalem/armorstandeditor/PlayerEditor.java | 2 +- src/main/resources/plugin.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditor.java b/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditor.java index 9e93126a..c297c3cb 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditor.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditor.java @@ -154,7 +154,7 @@ public void editItemFrame(ItemFrame itemFrame) { itemFrame = (ItemFrame) attemptTarget((ArmorStand) itemFrame); switch (eMode) { case ITEMFRAME: - toggleVisible((ArmorStand) itemFrame); + itemFrame.setVisible(false); //FIX for java.lang.ClassCastException: class org.bukkit.craftbukkit.v1_17_R1.entity.CraftGlowItemFrame cannot be cast to class org.bukkit.entity.ArmorStand break; case RESET: itemFrame.setVisible(true); diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index 94b6439a..4fa1af99 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -1,6 +1,6 @@ name: ArmorStandEditor main: io.github.rypofalem.armorstandeditor.ArmorStandEditorPlugin -version: 1.17-26 +version: 1.17-27 api-version: "1.13" website: rypofalem.github.io authors: From 141d3e1976c11bc1f2cb12793e300ee1fe612bd0 Mon Sep 17 00:00:00 2001 From: Wolfstorm Date: Tue, 20 Jul 2021 21:14:32 +0200 Subject: [PATCH 027/369] [FIX] Issue with itemFrame setting it to Visible and Invisible [CORE] Version Bump: 1.17.1-27 Signed-off-by: Wolfstorm Signed-off-by: Wolfstorm --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 2085fa56..74fbfb7a 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ io.github.rypofalem.armorstandeditor armorstandeditor jar - 1.17.1-26 + 1.17.1-27 armorstandeditor http://maven.apache.org From 00af98fd93fb95757e4cc74f1e05eb7c6772f989 Mon Sep 17 00:00:00 2001 From: Wolfstorm Date: Tue, 20 Jul 2021 21:14:32 +0200 Subject: [PATCH 028/369] [FIX] Issue with itemFrame setting it to Visible and Invisible [CORE] Version Bump: 1.17.1-27 Signed-off-by: Wolfstorm Signed-off-by: Wolfstorm --- .../github/rypofalem/armorstandeditor/PlayerEditor.java | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditor.java b/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditor.java index c297c3cb..7515faec 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditor.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditor.java @@ -36,6 +36,7 @@ import org.bukkit.GameMode; import org.bukkit.Location; import org.bukkit.entity.ArmorStand; +import org.bukkit.entity.Item; import org.bukkit.entity.ItemFrame; import org.bukkit.entity.Player; import org.bukkit.potion.PotionEffect; @@ -150,11 +151,10 @@ public void editArmorStand(ArmorStand armorStand) { } public void editItemFrame(ItemFrame itemFrame) { - if (!getPlayer().hasPermission("asedit.basic")) return; - itemFrame = (ItemFrame) attemptTarget((ArmorStand) itemFrame); + if(!getPlayer().hasPermission("asedit.basic")) return; switch (eMode) { case ITEMFRAME: - itemFrame.setVisible(false); //FIX for java.lang.ClassCastException: class org.bukkit.craftbukkit.v1_17_R1.entity.CraftGlowItemFrame cannot be cast to class org.bukkit.entity.ArmorStand + itemFrame.setVisible(false); break; case RESET: itemFrame.setVisible(true); @@ -162,6 +162,9 @@ public void editItemFrame(ItemFrame itemFrame) { sendMessage("nomode", null); break; } + + + } } private void resetPosition(ArmorStand armorStand) { From b8f56de6be9d2a6305a54783fe82d6595392ecee Mon Sep 17 00:00:00 2001 From: Wolfstorm Date: Tue, 20 Jul 2021 21:30:55 +0200 Subject: [PATCH 029/369] [FIX] Issue with itemFrame setting it to Visible and Invisible [CORE] Version Bump: 1.17.1-27 Signed-off-by: Wolfstorm Signed-off-by: Wolfstorm --- .../armorstandeditor/PlayerEditor.java | 252 ++++++++++-------- 1 file changed, 145 insertions(+), 107 deletions(-) diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditor.java b/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditor.java index 7515faec..39cb25bb 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditor.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditor.java @@ -65,93 +65,113 @@ public class PlayerEditor { EquipmentMenu equipMenu; long lastCancelled = 0; - public PlayerEditor(UUID uuid, ArmorStandEditorPlugin plugin){ - this.uuid =uuid; + public PlayerEditor(UUID uuid, ArmorStandEditorPlugin plugin) { + this.uuid = uuid; this.plugin = plugin; eMode = EditMode.NONE; adjMode = AdjustmentMode.COARSE; axis = Axis.X; copySlots = new CopySlots(); eulerAngleChange = getManager().coarseAdj; - degreeAngleChange = eulerAngleChange /Math.PI * 180; + degreeAngleChange = eulerAngleChange / Math.PI * 180; movChange = getManager().coarseMov; chestMenu = new Menu(this); } - public void setMode(EditMode editMode){ + public void setMode(EditMode editMode) { this.eMode = editMode; sendMessage("setmode", editMode.toString().toLowerCase()); } - public void setAxis(Axis axis){ + public void setAxis(Axis axis) { this.axis = axis; sendMessage("setaxis", axis.toString().toLowerCase()); } - public void setAdjMode(AdjustmentMode adjMode){ + public void setAdjMode(AdjustmentMode adjMode) { this.adjMode = adjMode; - if(adjMode == AdjustmentMode.COARSE){ + if (adjMode == AdjustmentMode.COARSE) { eulerAngleChange = getManager().coarseAdj; movChange = getManager().coarseMov; - }else{ + } else { eulerAngleChange = getManager().fineAdj; movChange = getManager().fineMov; } - degreeAngleChange = eulerAngleChange /Math.PI * 180; + degreeAngleChange = eulerAngleChange / Math.PI * 180; sendMessage("setadj", adjMode.toString().toLowerCase()); } - public void setCopySlot(byte slot){ + public void setCopySlot(byte slot) { copySlots.changeSlots(slot); - sendMessage("setslot" , String.valueOf((slot + 1))); + sendMessage("setslot", String.valueOf((slot + 1))); } public void editArmorStand(ArmorStand armorStand) { - if(!getPlayer().hasPermission("asedit.basic")) return; + if (!getPlayer().hasPermission("asedit.basic")) return; armorStand = attemptTarget(armorStand); - switch(eMode){ - case LEFTARM: armorStand.setLeftArmPose(subEulerAngle(armorStand.getLeftArmPose())); + switch (eMode) { + case LEFTARM: + armorStand.setLeftArmPose(subEulerAngle(armorStand.getLeftArmPose())); break; - case RIGHTARM: armorStand.setRightArmPose(subEulerAngle(armorStand.getRightArmPose())); + case RIGHTARM: + armorStand.setRightArmPose(subEulerAngle(armorStand.getRightArmPose())); break; - case BODY: armorStand.setBodyPose(subEulerAngle(armorStand.getBodyPose())); + case BODY: + armorStand.setBodyPose(subEulerAngle(armorStand.getBodyPose())); break; - case HEAD: armorStand.setHeadPose(subEulerAngle(armorStand.getHeadPose())); + case HEAD: + armorStand.setHeadPose(subEulerAngle(armorStand.getHeadPose())); break; - case LEFTLEG: armorStand.setLeftLegPose(subEulerAngle(armorStand.getLeftLegPose())); + case LEFTLEG: + armorStand.setLeftLegPose(subEulerAngle(armorStand.getLeftLegPose())); break; - case RIGHTLEG: armorStand.setRightLegPose(subEulerAngle(armorStand.getRightLegPose())); + case RIGHTLEG: + armorStand.setRightLegPose(subEulerAngle(armorStand.getRightLegPose())); break; - case SHOWARMS: toggleArms(armorStand); + case SHOWARMS: + toggleArms(armorStand); break; - case SIZE: toggleSize(armorStand); + case SIZE: + toggleSize(armorStand); break; - case INVISIBLE: toggleVisible(armorStand); + case INVISIBLE: + toggleVisible(armorStand); break; - case BASEPLATE: togglePlate(armorStand); + case BASEPLATE: + togglePlate(armorStand); break; - case GRAVITY: toggleGravity(armorStand); + case GRAVITY: + toggleGravity(armorStand); break; - case COPY: copy(armorStand); + case COPY: + copy(armorStand); break; - case PASTE: paste(armorStand); + case PASTE: + paste(armorStand); break; - case PLACEMENT: move(armorStand); + case PLACEMENT: + move(armorStand); break; - case ROTATE: rotate(armorStand); + case ROTATE: + rotate(armorStand); break; - case DISABLESLOTS: toggleDisableSlots(armorStand); + case DISABLESLOTS: + toggleDisableSlots(armorStand); break; - case EQUIPMENT: openEquipment(armorStand); + case EQUIPMENT: + openEquipment(armorStand); break; - case RESET: resetPosition(armorStand); + case RESET: + resetPosition(armorStand); + break; + case NONE: + sendMessage("nomode", null); break; - case NONE: sendMessage("nomode", null); break; } } public void editItemFrame(ItemFrame itemFrame) { - if(!getPlayer().hasPermission("asedit.basic")) return; + if (!getPlayer().hasPermission("asedit.basic")) return; switch (eMode) { case ITEMFRAME: itemFrame.setVisible(false); @@ -162,18 +182,15 @@ public void editItemFrame(ItemFrame itemFrame) { sendMessage("nomode", null); break; } - - - } } private void resetPosition(ArmorStand armorStand) { - armorStand.setHeadPose(new EulerAngle(0,0,0)); - armorStand.setBodyPose(new EulerAngle(0,0,0)); - armorStand.setLeftArmPose(new EulerAngle(0,0,0)); - armorStand.setRightArmPose(new EulerAngle(0,0,0)); - armorStand.setLeftLegPose(new EulerAngle(0,0,0)); - armorStand.setRightLegPose(new EulerAngle(0,0,0)); + armorStand.setHeadPose(new EulerAngle(0, 0, 0)); + armorStand.setBodyPose(new EulerAngle(0, 0, 0)); + armorStand.setLeftArmPose(new EulerAngle(0, 0, 0)); + armorStand.setRightArmPose(new EulerAngle(0, 0, 0)); + armorStand.setLeftLegPose(new EulerAngle(0, 0, 0)); + armorStand.setRightLegPose(new EulerAngle(0, 0, 0)); } private void openEquipment(ArmorStand armorStand) { @@ -181,38 +198,50 @@ private void openEquipment(ArmorStand armorStand) { equipMenu.open(); } - public void reverseEditArmorStand(ArmorStand armorStand){ - if(!getPlayer().hasPermission("asedit.basic")) return; + public void reverseEditArmorStand(ArmorStand armorStand) { + if (!getPlayer().hasPermission("asedit.basic")) return; armorStand = attemptTarget(armorStand); - switch(eMode){ - case LEFTARM: armorStand.setLeftArmPose(addEulerAngle(armorStand.getLeftArmPose())); + switch (eMode) { + case LEFTARM: + armorStand.setLeftArmPose(addEulerAngle(armorStand.getLeftArmPose())); break; - case RIGHTARM: armorStand.setRightArmPose(addEulerAngle(armorStand.getRightArmPose())); + case RIGHTARM: + armorStand.setRightArmPose(addEulerAngle(armorStand.getRightArmPose())); break; - case BODY: armorStand.setBodyPose(addEulerAngle(armorStand.getBodyPose())); + case BODY: + armorStand.setBodyPose(addEulerAngle(armorStand.getBodyPose())); break; - case HEAD: armorStand.setHeadPose(addEulerAngle(armorStand.getHeadPose())); + case HEAD: + armorStand.setHeadPose(addEulerAngle(armorStand.getHeadPose())); break; - case LEFTLEG: armorStand.setLeftLegPose(addEulerAngle(armorStand.getLeftLegPose())); + case LEFTLEG: + armorStand.setLeftLegPose(addEulerAngle(armorStand.getLeftLegPose())); break; - case RIGHTLEG: armorStand.setRightLegPose(addEulerAngle(armorStand.getRightLegPose())); + case RIGHTLEG: + armorStand.setRightLegPose(addEulerAngle(armorStand.getRightLegPose())); break; - case PLACEMENT: reverseMove(armorStand); + case PLACEMENT: + reverseMove(armorStand); break; - case ROTATE: reverseRotate(armorStand); + case ROTATE: + reverseRotate(armorStand); break; - default: editArmorStand(armorStand); + default: + editArmorStand(armorStand); } } private void move(ArmorStand armorStand) { Location loc = armorStand.getLocation(); - switch(axis){ - case X: loc.add(movChange, 0, 0); + switch (axis) { + case X: + loc.add(movChange, 0, 0); break; - case Y: loc.add(0, movChange, 0); + case Y: + loc.add(0, movChange, 0); break; - case Z: loc.add(0, 0, movChange); + case Z: + loc.add(0, 0, movChange); break; } armorStand.teleport(loc); @@ -220,40 +249,43 @@ private void move(ArmorStand armorStand) { private void reverseMove(ArmorStand armorStand) { Location loc = armorStand.getLocation(); - switch(axis){ - case X: loc.subtract(movChange, 0, 0); + switch (axis) { + case X: + loc.subtract(movChange, 0, 0); break; - case Y: loc.subtract(0, movChange, 0); + case Y: + loc.subtract(0, movChange, 0); break; - case Z: loc.subtract(0, 0, movChange); + case Z: + loc.subtract(0, 0, movChange); break; } armorStand.teleport(loc); } - private void rotate(ArmorStand armorStand){ + private void rotate(ArmorStand armorStand) { Location loc = armorStand.getLocation(); float yaw = loc.getYaw(); - loc.setYaw((yaw + 180 + (float)degreeAngleChange)%360 - 180); + loc.setYaw((yaw + 180 + (float) degreeAngleChange) % 360 - 180); armorStand.teleport(loc); } - private void reverseRotate(ArmorStand armorStand){ + private void reverseRotate(ArmorStand armorStand) { Location loc = armorStand.getLocation(); float yaw = loc.getYaw(); - loc.setYaw((yaw + 180 - (float)degreeAngleChange)%360 - 180); + loc.setYaw((yaw + 180 - (float) degreeAngleChange) % 360 - 180); armorStand.teleport(loc); } private void copy(ArmorStand armorStand) { copySlots.copyDataToSlot(armorStand); - sendMessage("copied" , "" + (copySlots.currentSlot + 1)); + sendMessage("copied", "" + (copySlots.currentSlot + 1)); setMode(EditMode.PASTE); } - private void paste(ArmorStand armorStand){ + private void paste(ArmorStand armorStand) { ArmorStandData data = copySlots.getDataToPaste(); - if(data == null ) return; + if (data == null) return; armorStand.setHeadPose(data.headPos); armorStand.setBodyPose(data.bodyPos); armorStand.setLeftArmPose(data.leftArmPos); @@ -265,7 +297,7 @@ private void paste(ArmorStand armorStand){ armorStand.setBasePlate(data.basePlate); armorStand.setArms(data.showArms); armorStand.setVisible(data.visible); - if(this.getPlayer().getGameMode() == GameMode.CREATIVE){ + if (this.getPlayer().getGameMode() == GameMode.CREATIVE) { armorStand.getEquipment().setHelmet(data.head); armorStand.getEquipment().setChestplate(data.body); armorStand.getEquipment().setLeggings(data.legs); @@ -273,7 +305,7 @@ private void paste(ArmorStand armorStand){ armorStand.getEquipment().setItemInMainHand(data.rightHand); armorStand.getEquipment().setItemInOffHand(data.leftHand); } - sendMessage("pasted", ""+ (copySlots.currentSlot + 1)); + sendMessage("pasted", "" + (copySlots.currentSlot + 1)); } private void toggleDisableSlots(ArmorStand armorStand) { @@ -290,16 +322,16 @@ void togglePlate(ArmorStand armorStand) { armorStand.setBasePlate(!armorStand.hasBasePlate()); } - void toggleArms(ArmorStand armorStand){ + void toggleArms(ArmorStand armorStand) { armorStand.setArms(!armorStand.hasArms()); } - void toggleVisible(ArmorStand armorStand){ - if(!getPlayer().hasPermission("asedit.invisible")) return; + void toggleVisible(ArmorStand armorStand) { + if (!getPlayer().hasPermission("asedit.invisible")) return; armorStand.setVisible(!armorStand.isVisible()); } - void toggleSize(ArmorStand armorStand){ + void toggleSize(ArmorStand armorStand) { armorStand.setSmall(!armorStand.isSmall()); } @@ -307,19 +339,22 @@ void cycleAxis(int i) { int index = axis.ordinal(); index += i; index = index % Axis.values().length; - while(index < 0){ + while (index < 0) { index += Axis.values().length; } setAxis(Axis.values()[index]); } private EulerAngle addEulerAngle(EulerAngle angle) { - switch(axis){ - case X: angle = angle.setX(Util.addAngle(angle.getX(), eulerAngleChange)); + switch (axis) { + case X: + angle = angle.setX(Util.addAngle(angle.getX(), eulerAngleChange)); break; - case Y: angle = angle.setY(Util.addAngle(angle.getY(), eulerAngleChange)); + case Y: + angle = angle.setY(Util.addAngle(angle.getY(), eulerAngleChange)); break; - case Z: angle = angle.setZ(Util.addAngle(angle.getZ(), eulerAngleChange)); + case Z: + angle = angle.setZ(Util.addAngle(angle.getZ(), eulerAngleChange)); break; default: break; @@ -328,12 +363,15 @@ private EulerAngle addEulerAngle(EulerAngle angle) { } private EulerAngle subEulerAngle(EulerAngle angle) { - switch(axis){ - case X: angle = angle.setX(Util.subAngle(angle.getX(), eulerAngleChange)); + switch (axis) { + case X: + angle = angle.setX(Util.subAngle(angle.getX(), eulerAngleChange)); break; - case Y: angle = angle.setY(Util.subAngle(angle.getY(), eulerAngleChange)); + case Y: + angle = angle.setY(Util.subAngle(angle.getY(), eulerAngleChange)); break; - case Z: angle = angle.setZ(Util.subAngle(angle.getZ(), eulerAngleChange)); + case Z: + angle = angle.setZ(Util.subAngle(angle.getZ(), eulerAngleChange)); break; default: break; @@ -341,28 +379,28 @@ private EulerAngle subEulerAngle(EulerAngle angle) { return angle; } - public void setTarget(ArrayList armorStands){ - if(armorStands == null || armorStands.isEmpty()){ + public void setTarget(ArrayList armorStands) { + if (armorStands == null || armorStands.isEmpty()) { target = null; targetList = null; sendMessage("notarget", null); return; } - if(targetList == null){ + if (targetList == null) { targetList = armorStands; targetIndex = 0; sendMessage("target", null); - } else{ + } else { boolean same = targetList.size() == armorStands.size(); - if(same) for(ArmorStand as : armorStands){ + if (same) for (ArmorStand as : armorStands) { same = targetList.contains(as); - if(!same) break; + if (!same) break; } - if(same){ + if (same) { targetIndex = ++targetIndex % targetList.size(); - }else{ + } else { targetList = armorStands; targetIndex = 0; sendMessage("target", null); @@ -403,8 +441,8 @@ public void setFrameTarget(final ArrayList itemFrames) { } - ArmorStand attemptTarget(ArmorStand armorStand){ - if(target == null + ArmorStand attemptTarget(ArmorStand armorStand) { + if (target == null || !target.isValid() || target.getWorld() != getPlayer().getWorld() || target.getLocation().distanceSquared(getPlayer().getLocation()) > 100) @@ -414,35 +452,35 @@ ArmorStand attemptTarget(ArmorStand armorStand){ return armorStand; } - void sendMessage(String path, String format, String option){ + void sendMessage(String path, String format, String option) { String message = plugin.getLang().getMessage(path, format, option); - if(plugin.sendToActionBar){ - if(ArmorStandEditorPlugin.instance().hasSpigot){ + if (plugin.sendToActionBar) { + if (ArmorStandEditorPlugin.instance().hasSpigot) { plugin.getServer().getPlayer(getUUID()).spigot().sendMessage(ChatMessageType.ACTION_BAR, new TextComponent(message)); - } else{ + } else { String rawText = plugin.getLang().getRawMessage(path, format, option); String command = String.format("title %s actionbar %s", plugin.getServer().getPlayer(getUUID()).getName(), rawText); Bukkit.dispatchCommand(Bukkit.getConsoleSender(), command); } - } else{ + } else { plugin.getServer().getPlayer(getUUID()).sendMessage(message); } } - void sendMessage(String path, String option){ + void sendMessage(String path, String option) { sendMessage(path, "info", option); } - private void highlight(ArmorStand armorStand){ + private void highlight(ArmorStand armorStand) { armorStand.removePotionEffect(PotionEffectType.GLOWING); armorStand.addPotionEffect(new PotionEffect(PotionEffectType.GLOWING, 15, 1, false, false)); } - public PlayerEditorManager getManager(){ + public PlayerEditorManager getManager() { return plugin.editorManager; } - public Player getPlayer(){ + public Player getPlayer() { return plugin.getServer().getPlayer(getUUID()); } @@ -451,7 +489,7 @@ public UUID getUUID() { } public void openMenu() { - if(!isMenuCancelled()){ + if (!isMenuCancelled()) { plugin.getServer().getScheduler().runTaskLater(plugin, new OpenMenuTask(), 1).getTaskId(); } } @@ -460,15 +498,15 @@ public void cancelOpenMenu() { lastCancelled = getManager().getTime(); } - boolean isMenuCancelled(){ + boolean isMenuCancelled() { return getManager().getTime() - lastCancelled < 2; } - private class OpenMenuTask implements Runnable{ + private class OpenMenuTask implements Runnable { @Override public void run() { - if(isMenuCancelled()) return; + if (isMenuCancelled()) return; chestMenu.openMenu(); } } From d276a629f5409369594b7b83e106cee974cc0b7c Mon Sep 17 00:00:00 2001 From: Wolfstorm Date: Tue, 20 Jul 2021 21:46:55 +0200 Subject: [PATCH 030/369] [CORE] Point Issues to the correct Issue Tracker Signed by: Wolfstorm --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 8d70c3da..5a4eb029 100644 --- a/README.md +++ b/README.md @@ -3,4 +3,6 @@ Bukkit plugin to allow players to edit armorstands without commands. +Issue with the plugin? Please report it [here](https://github.com/Wolfst0rm/ArmorStandEditor-Issues) + Read the [wiki](https://github.com/RypoFalem/ArmorStandEditor/wiki) for more info. From 98159f1316c6a2ce0af8f3e6726f54ff01f0220d Mon Sep 17 00:00:00 2001 From: Wolfstorm Date: Tue, 20 Jul 2021 21:50:46 +0200 Subject: [PATCH 031/369] [LANG] Introduce es_ES Translation Closes RypoFalem/ArmorStandEditor #50 --- src/main/resources/lang/es_ES.yml | 217 ++++++++++++++++++++++++++++++ 1 file changed, 217 insertions(+) create mode 100644 src/main/resources/lang/es_ES.yml diff --git a/src/main/resources/lang/es_ES.yml b/src/main/resources/lang/es_ES.yml new file mode 100644 index 00000000..201e680e --- /dev/null +++ b/src/main/resources/lang/es_ES.yml @@ -0,0 +1,217 @@ +# Traducido por agent_joojoo y BenjamonSRL#6153 + +iconname: 2n +icondescription: 5 +info: 6 +warn: c +menutitle: 8 + +#info +setmode: + msg: Ajustando modo a . + head: Posición de la cabeza + body: Posición del cuerpo + leftleg: Posición del pie izquierdo + rightleg: Posición del pie derecho + leftarm: Posición de la mano izquierda + rightarm: Posición de la mano derecha + equipment: Equipamiento + showarms: Alternar la vista de los brazos + invisible: Alternar visibilidad + size: Alternar tamaño + disableslots: Alternar la deshabilitacion de slots + gravity: Alternar gravedad + baseplate: Toggle BasePlate + placement: Colocacion + rotate: Rotar + copy: Copiar + paste: Pegar + reset: Reiniciar pose +setaxis: + msg: Fijando eje para . + x: X + y: Y + z: Z +setslot: + msg: Preparando el slot de copia para . +setadj: + msg: ajustando el ajuste a . + coarse: Coarse + fine: bien +setgravity: + msg: La gravedad esta en . + on: on + off: off +nomode: + msg: Haz click con la herramienta de edicion en un soporte de armaduras para seleccionar un modo de edicion primero +copied: + msg: El estado del soporte de armaduras se copio al slot . +pasted: + msg: Estado del soporte de armaduras pegado del slot . +target: + msg: Soporte de armaduras bloqueado. +notarget: + msg: Soporte de armaduras desbloqueado. +help: + msg: "1. Manten la herramienta de edición () en tu mano principal. + + 2. Click derecho o izquierdo sobre un soporte de armaduras para abrir el menu. + + 3. Selecciona el menú de opciones etiquetado. + + 4. Click izquierdo sobre el soporte con la herramienta de edición en mano para aplicar esas opciones. + + 5. Haz click derecho para revertirlos" +helptips: + msg: " Tips: + + 1. Presiona F mientras mantienes la herramienta de edicion para apuntar a un soporte especifico, si hay mas soportes en el camino. + + 2. Puede aplicar etiquetas a los soportes. Tambien puedes usar el simbolo & para darles nombres coloridos. + + 3. Puedes usar Shift + rueda del raton mientras usas la herramienta de edición para cambiar el eje sin abrir el menu. " +helpurl: + msg: " More info: https://github.com/RypoFalem/ArmorStandEditor/wiki " + +#warn +cantedit: + msg: Lo siento, no puedes editar soportes aqui. +noperm: + msg: No tienes permiso para usar esto +noslotnumcom: + msg: Tienes que especificar un número de soot +noadjcom: + msg: tienes que especificar un ajuste de Coarse or Fine +noaxiscom: + msg: Tienes que especificar un eje. +nomodecom: + msg: Tienes que especificar un modo + +#menutitle +mainmenutitle: + msg: Menu de edición de soporte de armaduras +equiptitle: + msg: Equipamiento del soporte de armaduras + +#icons +xaxis: + msg: X Axis + description: + msg: Girar partes del cuerpo sobre el eje X +yaxis: + msg: Y Axis + description: + msg: Girar partes del cuerpo sobre el eje Y +zaxis: + msg: Z Axis + description: + msg: Girar partes del cuerpo sobre el eje Z +coarseadj: + msg: Ajuste del Coarse + description: + msg: Hacer ajustes largos +fineadj: + msg: Ajuste del Fine + description: + msg: Hacer ajustes pequeños +head: + msg: Posición de la cabeza + description: + msg: Girar la cabeza +body: + msg: Posición del cuerpo + description: + msg: Girar el cuerpo +leftleg: + msg: Posición de la pierna izquierda + description: + msg: Girar la pierna izquierda +rightleg: + msg: Posicion de la pierna derecha + description: + msg: Girar la pierna derecha +leftarm: + msg: Posicion de la mano izquierda + description: + msg: Girar la mano izquierda +rightarm: + msg: Posición de la mano derecha + description: + msg: Girar la mano derecha +equipment: + msg: Equipamiento + description: + msg: Editar equipamiento +showarms: + msg: mostrar brazos + description: + msg: mostrar o no mostrar los brazos +invisible: + msg: Visibilidad + description: + msg: hazlo visible o invisible +size: + msg: Tamaño + description: + msg: Hazlo grande o pequeño +disableslots: + msg: Deshabilitar slots + description: + msg: Habilitar o Deshabilitar el bloqueo de equipamiento +gravity: + msg: Gravedad + description: + msg: habilitar o deshabilitar la gravedad +baseplate: + msg: BasePlate + description: + msg: Habilitar o deshabilitar el baseplate +placement: + msg: colocación + description: + msg: mover todo el soporte de armaduras +rotate: + msg: Girar + description: + msg: Girar el soporte entero +copy: + msg: Copiar + description: + msg: Copia los ajustes del soporte +paste: + msg: Pegar + description: + msg: Pega los ajustes del soporte +copyslot: + msg: Copiar slot + description: + msg: Selecciona un slot para guardar ajustes +reset: + msg: Reiniciar pose + description: + msg: Reiniciar pose a la predeterminada +helpgui: + msg: ayuda + description: + msg: haz click aqui para obtener ayuda + +#icons (equipment menu) +disabled: + msg: deshabilitado +equipslot: + msg: Slot + description: + msg: Arrastra tu a alguno de los siguientes slots + helm: Casco + chest: Peto + pants: Pantalones + boots: Botas + rhand: Item de la mano derecha + lhand: Item de la mano izquierda + helm: Casco + chest: Peto + pants: Pantalones + boots: Pies + rhand: Mano derecha + lhand: Mano izquierda +{"mode":"full","isActive":false} From 584358a92b675d4c903cff1e002a6a4e581e91ca Mon Sep 17 00:00:00 2001 From: Wolfstorm Date: Tue, 20 Jul 2021 21:52:43 +0200 Subject: [PATCH 032/369] Update es_ES.yml --- src/main/resources/lang/es_ES.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/src/main/resources/lang/es_ES.yml b/src/main/resources/lang/es_ES.yml index 201e680e..9ae6483a 100644 --- a/src/main/resources/lang/es_ES.yml +++ b/src/main/resources/lang/es_ES.yml @@ -214,4 +214,3 @@ equipslot: boots: Pies rhand: Mano derecha lhand: Mano izquierda -{"mode":"full","isActive":false} From 0c72f701f44341089b71feacb64759b8e20a90cf Mon Sep 17 00:00:00 2001 From: Wolfstorm Date: Tue, 20 Jul 2021 21:53:25 +0200 Subject: [PATCH 033/369] [CORE] Full Spanish Translation Support --- .../rypofalem/armorstandeditor/ArmorStandEditorPlugin.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/ArmorStandEditorPlugin.java b/src/main/java/io/github/rypofalem/armorstandeditor/ArmorStandEditorPlugin.java index 0b93d44c..2bddb0b4 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/ArmorStandEditorPlugin.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/ArmorStandEditorPlugin.java @@ -66,6 +66,7 @@ public void onEnable(){ updateConfig("lang/", "ro_RO.yml"); updateConfig("lang/", "ja_JP.yml"); updateConfig("lang/", "de_DE.yml"); + updateConfig("lang/", "es_ES.yml"); //English is the default language and needs to be unaltered to so that there is always a backup message string saveResource("lang/en_US.yml", true); lang = new Language(getConfig().getString("lang"), this); @@ -172,4 +173,4 @@ public NamespacedKey getIconKey() { //todo: //Access to "DisabledSlots" data (probably simplified just a toggle enable/disable) -//Access to the "Marker" switch (so you can make the hitbox super small) \ No newline at end of file +//Access to the "Marker" switch (so you can make the hitbox super small) From 4ae411674bebb37e2b855e6312398408617731fd Mon Sep 17 00:00:00 2001 From: Wolfstorm Date: Tue, 20 Jul 2021 23:31:30 +0200 Subject: [PATCH 034/369] [CORE/FIX] Don't Cancel the Interact Event If the player doesn't have permission to use the basic functionality of the plugin, don't cancel the interact event. Fixes RypoFalem#30 --- .../github/rypofalem/armorstandeditor/PlayerEditorManager.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditorManager.java b/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditorManager.java index 2cfd36bf..b7d0a876 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditorManager.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditorManager.java @@ -334,6 +334,7 @@ void onRightClickTool( PlayerInteractEvent e) { || e.getAction() == Action.RIGHT_CLICK_BLOCK)) return; Player player = e.getPlayer(); if (!plugin.isEditTool(player.getInventory().getItemInMainHand())) return; + if(!player.hasPermission("asedit.basic")) return; e.setCancelled(true); getPlayerEditor(player.getUniqueId()).openMenu(); } @@ -425,4 +426,4 @@ class TickCounter implements Runnable{ public void run() {ticks++;} public long getTime() {return ticks;} } -} \ No newline at end of file +} From a5f1f1abc57432c1bf3ec542b520f570bf8d9c96 Mon Sep 17 00:00:00 2001 From: Wolfstorm Date: Wed, 21 Jul 2021 12:17:13 +0200 Subject: [PATCH 035/369] [CORE] Add in Toggling of Disabled Slots [CORE] Version Bump: 1.17.1-28 Signed-off-by: Wolfstorm --- pom.xml | 2 +- .../armorstandeditor/PlayerEditor.java | 20 +++++++++++++++---- src/main/resources/config.yml | 3 ++- src/main/resources/plugin.yml | 2 +- 4 files changed, 20 insertions(+), 7 deletions(-) diff --git a/pom.xml b/pom.xml index 74fbfb7a..8a833dbd 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ io.github.rypofalem.armorstandeditor armorstandeditor jar - 1.17.1-27 + 1.17.1-28 armorstandeditor http://maven.apache.org diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditor.java b/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditor.java index 39cb25bb..a1f91b39 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditor.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditor.java @@ -32,13 +32,12 @@ import net.md_5.bungee.api.ChatMessageType; import net.md_5.bungee.api.chat.TextComponent; -import org.bukkit.Bukkit; -import org.bukkit.GameMode; -import org.bukkit.Location; +import org.bukkit.*; import org.bukkit.entity.ArmorStand; import org.bukkit.entity.Item; import org.bukkit.entity.ItemFrame; import org.bukkit.entity.Player; +import org.bukkit.inventory.EquipmentSlot; import org.bukkit.potion.PotionEffect; import org.bukkit.potion.PotionEffectType; import org.bukkit.util.EulerAngle; @@ -309,7 +308,20 @@ private void paste(ArmorStand armorStand) { } private void toggleDisableSlots(ArmorStand armorStand) { - //TODO + if (armorStand.hasEquipmentLock(EquipmentSlot.HAND, ArmorStand.LockType.REMOVING_OR_CHANGING)) { //Adds a lock to every slot or removes it + for (final EquipmentSlot slot : EquipmentSlot.values()) { + armorStand.removeEquipmentLock(slot, ArmorStand.LockType.REMOVING_OR_CHANGING); + armorStand.removeEquipmentLock(slot, ArmorStand.LockType.ADDING); + getPlayer().playSound(getPlayer().getLocation(), Sound.ENTITY_ITEM_BREAK, SoundCategory.PLAYERS, 1.0f, 1.0f); + } + } else { + for (final EquipmentSlot slot : EquipmentSlot.values()) { + armorStand.addEquipmentLock(slot, ArmorStand.LockType.REMOVING_OR_CHANGING); + armorStand.addEquipmentLock(slot, ArmorStand.LockType.ADDING); + } + getPlayer().playSound(getPlayer().getLocation(), Sound.ITEM_ARMOR_EQUIP_IRON, SoundCategory.PLAYERS, 1.0f, 1.0f); + } + sendMessage("disabledslots", null); } private void toggleGravity(ArmorStand armorStand) { diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml index 0e9af8ff..fe4974cc 100644 --- a/src/main/resources/config.yml +++ b/src/main/resources/config.yml @@ -21,7 +21,8 @@ lang: en_US.yml #If false plugin notifications will be sent to the chat box. If true messages will be sent to the action bar. sendMessagesToActionBar: true -#(Optional) Glowing Item Frames Supportfor Item Frames in 1.17 +#(Optional) Glowing Item Frames Support for Item Frames in 1.17 and Higher - WILL NOT WORK IN 1.16 OR LOWER +#If true, players can make itemFrames glow by right clicking with a Glow Ink Sac glowingItemFrame: true #Don't set to true unless you want players to see random messages or other undesirable behavior diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index 4fa1af99..60975e39 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -1,6 +1,6 @@ name: ArmorStandEditor main: io.github.rypofalem.armorstandeditor.ArmorStandEditorPlugin -version: 1.17-27 +version: 1.17-28 api-version: "1.13" website: rypofalem.github.io authors: From 2c1f585452e329c0bdd0b7949c332b893de1c4e9 Mon Sep 17 00:00:00 2001 From: Wolfstorm Date: Wed, 21 Jul 2021 12:20:06 +0200 Subject: [PATCH 036/369] [LANG] Updated Simplified Chinese Translation Fixes #44 Signed-off-by: Wolfstorm --- .../rypofalem/armorstandeditor/ArmorStandEditorPlugin.java | 2 +- src/main/resources/lang/{zh.yml => zh_CN.yml} | 0 2 files changed, 1 insertion(+), 1 deletion(-) rename src/main/resources/lang/{zh.yml => zh_CN.yml} (100%) diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/ArmorStandEditorPlugin.java b/src/main/java/io/github/rypofalem/armorstandeditor/ArmorStandEditorPlugin.java index 2bddb0b4..fdb24a51 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/ArmorStandEditorPlugin.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/ArmorStandEditorPlugin.java @@ -61,7 +61,7 @@ public void onEnable(){ updateConfig("lang/", "test_NA.yml"); updateConfig("lang/", "nl_NL.yml"); updateConfig("lang/", "uk_UA.yml"); - updateConfig("lang/", "zh.yml"); + updateConfig("lang/", "zh_CN.yml"); updateConfig("lang/", "fr_FR.yml"); updateConfig("lang/", "ro_RO.yml"); updateConfig("lang/", "ja_JP.yml"); diff --git a/src/main/resources/lang/zh.yml b/src/main/resources/lang/zh_CN.yml similarity index 100% rename from src/main/resources/lang/zh.yml rename to src/main/resources/lang/zh_CN.yml From 3f0d81381e2d0cb825a3614bf9fdd072837cc3a0 Mon Sep 17 00:00:00 2001 From: Wolfstorm Date: Wed, 21 Jul 2021 12:21:44 +0200 Subject: [PATCH 037/369] [CORE] Fix Spigot Derivative Detection Fixes #31 Signed-off-by: Wolfstorm --- .../rypofalem/armorstandeditor/ArmorStandEditorPlugin.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/ArmorStandEditorPlugin.java b/src/main/java/io/github/rypofalem/armorstandeditor/ArmorStandEditorPlugin.java index fdb24a51..e249403f 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/ArmorStandEditorPlugin.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/ArmorStandEditorPlugin.java @@ -92,7 +92,7 @@ public void onEnable(){ hasSpigot = true; try { - Class.forName("org.spigotmc.package-info", false, this.getClassLoader()); + Class.forName("org.spigotmc.SpigotConfig", false, this.getClassLoader()); } catch (ClassNotFoundException e) { hasSpigot = false; } From 96a7249d4523f6670bb81fb416e75234e89aefd9 Mon Sep 17 00:00:00 2001 From: Wolfstorm Date: Wed, 21 Jul 2021 12:30:17 +0200 Subject: [PATCH 038/369] [CORE] Permission Check for Disabling Slots Signed-off-by: Wolfstorm --- .../io/github/rypofalem/armorstandeditor/PlayerEditor.java | 2 ++ .../io/github/rypofalem/armorstandeditor/menu/Menu.java | 6 ++++-- src/main/resources/plugin.yml | 3 +++ 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditor.java b/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditor.java index a1f91b39..4cf251de 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditor.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditor.java @@ -193,6 +193,7 @@ private void resetPosition(ArmorStand armorStand) { } private void openEquipment(ArmorStand armorStand) { + if(!getPlayer().hasPermission("assedit.equipment")) return; equipMenu = new EquipmentMenu(this, armorStand); equipMenu.open(); } @@ -308,6 +309,7 @@ private void paste(ArmorStand armorStand) { } private void toggleDisableSlots(ArmorStand armorStand) { + if(!getPlayer().hasPermission("ase.basic")) return; if (armorStand.hasEquipmentLock(EquipmentSlot.HAND, ArmorStand.LockType.REMOVING_OR_CHANGING)) { //Adds a lock to every slot or removes it for (final EquipmentSlot slot : EquipmentSlot.values()) { armorStand.removeEquipmentLock(slot, ArmorStand.LockType.REMOVING_OR_CHANGING); diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/menu/Menu.java b/src/main/java/io/github/rypofalem/armorstandeditor/menu/Menu.java index 8f55d83a..0218e5ca 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/menu/Menu.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/menu/Menu.java @@ -153,8 +153,10 @@ private void fillInventory() { rotate = createIcon(new ItemStack(Material.COMPASS, 1), "rotate", "mode rotate"); - equipment = createIcon(new ItemStack(Material.CHEST, 1), - "equipment", "mode equipment"); + if(pe.getPlayer().hasPermission("asedit.equipment")) { + equipment = createIcon(new ItemStack(Material.CHEST, 1), + "equipment", "mode equipment"); + } copy = createIcon(new ItemStack(Material.WRITABLE_BOOK), "copy", "mode copy"); diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index 60975e39..09c1ce6f 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -23,3 +23,6 @@ permissions: asedit.rename: description: Rename armorstands default: true + asedit.equipment: + description: Access armorstand equipment GUI + default: true \ No newline at end of file From aac13c09999093afccc133d2a30ea8d8dad46439 Mon Sep 17 00:00:00 2001 From: Wolfstorm Date: Sat, 24 Jul 2021 13:59:06 +0200 Subject: [PATCH 039/369] [CORE] Fix for Item Frames not going invisible Fixes ArmorStandEditor-Issues#1 --- .../rypofalem/armorstandeditor/PlayerEditor.java | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditor.java b/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditor.java index 4cf251de..d7270af2 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditor.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditor.java @@ -171,9 +171,10 @@ public void editArmorStand(ArmorStand armorStand) { public void editItemFrame(ItemFrame itemFrame) { if (!getPlayer().hasPermission("asedit.basic")) return; + itemFrame = attemptTarget(itemFrame); switch (eMode) { case ITEMFRAME: - itemFrame.setVisible(false); + toggleVisible(itemFrame); break; case RESET: itemFrame.setVisible(true); @@ -182,7 +183,7 @@ public void editItemFrame(ItemFrame itemFrame) { break; } } - + private void resetPosition(ArmorStand armorStand) { armorStand.setHeadPose(new EulerAngle(0, 0, 0)); armorStand.setBodyPose(new EulerAngle(0, 0, 0)); @@ -344,6 +345,10 @@ void toggleVisible(ArmorStand armorStand) { if (!getPlayer().hasPermission("asedit.invisible")) return; armorStand.setVisible(!armorStand.isVisible()); } + void toggleVisible(ItemFrame itemFrame) { + if (!getPlayer().hasPermission("asedit.basic")) return; + itemFrame.setVisible(!itemFrame.isVisible()); + } void toggleSize(ArmorStand armorStand) { armorStand.setSmall(!armorStand.isSmall()); @@ -524,4 +529,4 @@ public void run() { chestMenu.openMenu(); } } -} \ No newline at end of file +} From 2d94b228e5eadb1e9f63f2c205c81c6fcb3f327c Mon Sep 17 00:00:00 2001 From: Wolfstorm Date: Sat, 24 Jul 2021 14:05:48 +0200 Subject: [PATCH 040/369] [CORE] Fix Build - ItemFrame not targeted properly Signed-off-by: Wolfstorm --- .../io/github/rypofalem/armorstandeditor/PlayerEditor.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditor.java b/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditor.java index d7270af2..dbe70c77 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditor.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditor.java @@ -171,13 +171,13 @@ public void editArmorStand(ArmorStand armorStand) { public void editItemFrame(ItemFrame itemFrame) { if (!getPlayer().hasPermission("asedit.basic")) return; - itemFrame = attemptTarget(itemFrame); switch (eMode) { case ITEMFRAME: - toggleVisible(itemFrame); + toggleItemFrameVisible(itemFrame); break; case RESET: itemFrame.setVisible(true); + break; case NONE: sendMessage("nomode", null); break; @@ -345,7 +345,7 @@ void toggleVisible(ArmorStand armorStand) { if (!getPlayer().hasPermission("asedit.invisible")) return; armorStand.setVisible(!armorStand.isVisible()); } - void toggleVisible(ItemFrame itemFrame) { + void toggleItemFrameVisible(ItemFrame itemFrame) { if (!getPlayer().hasPermission("asedit.basic")) return; itemFrame.setVisible(!itemFrame.isVisible()); } From 5db0a89e897139686f5dadaeba9b32b14575c5b4 Mon Sep 17 00:00:00 2001 From: Wolfstorm Date: Sat, 24 Jul 2021 14:11:31 +0200 Subject: [PATCH 041/369] [CORE] Dont break in case of Reset - ItemFrame.RESET Signed-off-by: Wolfstorm --- .../java/io/github/rypofalem/armorstandeditor/PlayerEditor.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditor.java b/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditor.java index dbe70c77..0f3444cb 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditor.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditor.java @@ -177,7 +177,6 @@ public void editItemFrame(ItemFrame itemFrame) { break; case RESET: itemFrame.setVisible(true); - break; case NONE: sendMessage("nomode", null); break; From ce3f4d9f4bedaa6fd51e54c0d84f6eedbc5065ff Mon Sep 17 00:00:00 2001 From: Wolfstorm Date: Sat, 24 Jul 2021 14:25:13 +0200 Subject: [PATCH 042/369] [FIX] Wrong Permission Node for Disabling Slots Signed-off-by: Wolfstorm --- .../java/io/github/rypofalem/armorstandeditor/PlayerEditor.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditor.java b/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditor.java index 0f3444cb..957bbc2b 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditor.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditor.java @@ -309,7 +309,7 @@ private void paste(ArmorStand armorStand) { } private void toggleDisableSlots(ArmorStand armorStand) { - if(!getPlayer().hasPermission("ase.basic")) return; + if(!getPlayer().hasPermission("asedit.equipment")) return; if (armorStand.hasEquipmentLock(EquipmentSlot.HAND, ArmorStand.LockType.REMOVING_OR_CHANGING)) { //Adds a lock to every slot or removes it for (final EquipmentSlot slot : EquipmentSlot.values()) { armorStand.removeEquipmentLock(slot, ArmorStand.LockType.REMOVING_OR_CHANGING); From a28bc70604b4bf7807da6f5d8c62e40ce8e027f2 Mon Sep 17 00:00:00 2001 From: Wolfstorm Date: Sat, 24 Jul 2021 14:25:13 +0200 Subject: [PATCH 043/369] [FIX] Wrong Permission Node for Disabling Slots Signed-off-by: Wolfstorm --- .../java/io/github/rypofalem/armorstandeditor/PlayerEditor.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditor.java b/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditor.java index 957bbc2b..1e8dba62 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditor.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditor.java @@ -193,7 +193,7 @@ private void resetPosition(ArmorStand armorStand) { } private void openEquipment(ArmorStand armorStand) { - if(!getPlayer().hasPermission("assedit.equipment")) return; + if(!getPlayer().hasPermission("asedit.equipment")) return; equipMenu = new EquipmentMenu(this, armorStand); equipMenu.open(); } From 63ccba2d2fc2c6d8585191f5c3ef45469d916790 Mon Sep 17 00:00:00 2001 From: Wolfstorm Date: Sat, 24 Jul 2021 14:38:07 +0200 Subject: [PATCH 044/369] [CORE] Version Bump to 1.17-29 Signed-off-by: Wolfstorm --- pom.xml | 2 +- src/main/resources/plugin.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/pom.xml b/pom.xml index 8a833dbd..99f1d6f1 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ io.github.rypofalem.armorstandeditor armorstandeditor jar - 1.17.1-28 + 1.17.1-29 armorstandeditor http://maven.apache.org diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index 09c1ce6f..9f56900b 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -1,6 +1,6 @@ name: ArmorStandEditor main: io.github.rypofalem.armorstandeditor.ArmorStandEditorPlugin -version: 1.17-28 +version: 1.17-29 api-version: "1.13" website: rypofalem.github.io authors: From 761ba1aa6a905f6eb8fd207646db01ebc7f7121c Mon Sep 17 00:00:00 2001 From: Wolfstorm Date: Sat, 24 Jul 2021 15:48:36 +0200 Subject: [PATCH 045/369] [FIX] Invalid Command Permission being Searched Signed-off-by: Wolfstorm --- .github/workflows/maven-publish.yml | 66 ------------------- .../rypofalem/armorstandeditor/CommandEx.java | 4 +- .../armorstandeditor/PlayerEditor.java | 2 +- .../armorstandeditor/modes/EditMode.java | 2 +- src/main/resources/plugin.yml | 2 +- 5 files changed, 5 insertions(+), 71 deletions(-) delete mode 100644 .github/workflows/maven-publish.yml diff --git a/.github/workflows/maven-publish.yml b/.github/workflows/maven-publish.yml deleted file mode 100644 index 3cc2782f..00000000 --- a/.github/workflows/maven-publish.yml +++ /dev/null @@ -1,66 +0,0 @@ -# This workflow automatically tests new commits and pull requests as they come in. -# Note that this does not upload any artifacts, you will need to compile mcMMO manually -# if you wish to create the actual jar. -name: Compile and test - -on: - # We run our tests whenever the pom or a source file was touched. - # There is no need to run Maven when only the changelog was touched. - # We may also want to re-run this workflow when the workflow file itself - # was updated too. - push: - paths: - - 'src/**' - - 'pom.xml' - - '.github/workflows/maven-publish.yml' - - # Whenever someone submits a new pull request which modified the pom or a source file, - # we want to ensure it compiles successfully and that all tests will pass. - pull_request: - paths: - - 'src/**' - - 'pom.xml' - -jobs: - compile: - name: Maven compiler - runs-on: ubuntu-latest - steps: - - # 1. Check out the current working tree - - name: Checkout repository - uses: actions/checkout@v2 - - # 2. Setup Java 16 JDK - - name: Set up JDK 16 - uses: actions/setup-java@v2 - with: - java-version: '16' - distribution: 'adopt' - - # 3. Setup local Maven package cache to speed up building - - name: Cache Maven packages - uses: actions/cache@v2 - with: - path: ~/.m2 - key: ${{ runner.os }}-m2-${{ hashFiles('**/pom.xml') }} - restore-keys: ${{ runner.os }}-m2 - - # 4. Build via Maven - - name: Build via Maven - run: mvn verify -B --file pom.xml - - #5: Create a Clean Package - and Verify it - - name: Clean package - run: mvn -B clean package - - - name: Clean Verify - run: mvn -B clean verify - - #6 Upload Artifacts - - name: Upload a Build Artifact - uses: actions/upload-artifact@v2.1.4 - with: - name: artifact - path: /home/runner/work/ArmorStandEditor/ArmorStandEditor/target/armorstandeditor-*-*.jar - if-no-files-found: error diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/CommandEx.java b/src/main/java/io/github/rypofalem/armorstandeditor/CommandEx.java index 096f8062..2150fe1a 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/CommandEx.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/CommandEx.java @@ -49,7 +49,7 @@ && checkPermission((Player) sender, "basic", true))) { return true; } - Player player = (Player) sender; + Player player = (Player) sender; if (args.length == 0) { player.sendMessage(LISTMODE); player.sendMessage(LISTAXIS); @@ -146,7 +146,7 @@ private void commandMode( Player player, String[] args) { for ( EditMode mode : EditMode.values()) { if (mode.toString().toLowerCase().contentEquals(args[1].toLowerCase())) { if (args[1].equals("invisible") && !checkPermission(player, "invisible", true)) return; - if (args[1].equals("itemframe") && !checkPermission(player, "itemframe", true)) return; + if (args[1].equals("itemframe") && !checkPermission(player, "basic", true)) return; plugin.editorManager.getPlayerEditor(player.getUniqueId()).setMode(mode); return; } diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditor.java b/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditor.java index 1e8dba62..f650d0f9 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditor.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditor.java @@ -345,7 +345,7 @@ void toggleVisible(ArmorStand armorStand) { armorStand.setVisible(!armorStand.isVisible()); } void toggleItemFrameVisible(ItemFrame itemFrame) { - if (!getPlayer().hasPermission("asedit.basic")) return; + if (!getPlayer().hasPermission("asedit.invisible")) return; itemFrame.setVisible(!itemFrame.isVisible()); } diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/modes/EditMode.java b/src/main/java/io/github/rypofalem/armorstandeditor/modes/EditMode.java index 81529924..5133dcba 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/modes/EditMode.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/modes/EditMode.java @@ -22,7 +22,7 @@ public enum EditMode { NONE("None"), INVISIBLE("Invisible"), SHOWARMS("ShowArms"), GRAVITY("Gravity"), BASEPLATE("BasePlate"), SIZE("Size"), COPY("Copy"), PASTE("Paste"), HEAD("Head"), BODY("Body"), LEFTARM("LeftArm"), RIGHTARM("RightArm"), LEFTLEG("LeftLeg"), RIGHTLEG("RightLeg"), - PLACEMENT("Placement"), DISABLESLOTS("DisableSlots"), ROTATE("Rotate"), EQUIPMENT("Equipment"), RESET("Reset"), ITEMFRAME("ItemFrame"), ITEMFRAMEGLOW("ItemFrameGlow");; + PLACEMENT("Placement"), DISABLESLOTS("DisableSlots"), ROTATE("Rotate"), EQUIPMENT("Equipment"), RESET("Reset"), ITEMFRAME("ItemFrame"), ITEMFRAMEGLOW("ItemFrameGlow"); private String name; diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index 9f56900b..ac225a73 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -18,7 +18,7 @@ permissions: description: Allow use armorstand edit functions. If set to false it will override all other functions. default: true asedit.invisible: - description: Toggle armorstand visible/invisible. + description: Toggle armorstand and item frame visible/invisible. default: true asedit.rename: description: Rename armorstands From c52c90aaa059c4d8bd09b6a6f94dc8855b40f0eb Mon Sep 17 00:00:00 2001 From: Wolfstorm Date: Sat, 24 Jul 2021 15:50:53 +0200 Subject: [PATCH 046/369] [CORE] Hotfix Version: 1.17.1-28.2 Signed-off-by: Wolfstorm --- pom.xml | 2 +- src/main/resources/plugin.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/pom.xml b/pom.xml index 99f1d6f1..6d9b7f18 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ io.github.rypofalem.armorstandeditor armorstandeditor jar - 1.17.1-29 + 1.17-28.2 armorstandeditor http://maven.apache.org diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index ac225a73..0f5b6038 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -1,6 +1,6 @@ name: ArmorStandEditor main: io.github.rypofalem.armorstandeditor.ArmorStandEditorPlugin -version: 1.17-29 +version: 1.17-28.2 api-version: "1.13" website: rypofalem.github.io authors: From 40099e5f406d4a5dcf7a3cfa6bf7f13ea9c3c3d3 Mon Sep 17 00:00:00 2001 From: Wolfstorm Date: Sat, 24 Jul 2021 15:52:07 +0200 Subject: [PATCH 047/369] [CI] Reinstate Artifact Build Checks Signed-off-by: Wolfstorm --- .github/workflows/maven-publish.yml | 66 +++++++++++++++++++++++++++++ 1 file changed, 66 insertions(+) create mode 100644 .github/workflows/maven-publish.yml diff --git a/.github/workflows/maven-publish.yml b/.github/workflows/maven-publish.yml new file mode 100644 index 00000000..3cc2782f --- /dev/null +++ b/.github/workflows/maven-publish.yml @@ -0,0 +1,66 @@ +# This workflow automatically tests new commits and pull requests as they come in. +# Note that this does not upload any artifacts, you will need to compile mcMMO manually +# if you wish to create the actual jar. +name: Compile and test + +on: + # We run our tests whenever the pom or a source file was touched. + # There is no need to run Maven when only the changelog was touched. + # We may also want to re-run this workflow when the workflow file itself + # was updated too. + push: + paths: + - 'src/**' + - 'pom.xml' + - '.github/workflows/maven-publish.yml' + + # Whenever someone submits a new pull request which modified the pom or a source file, + # we want to ensure it compiles successfully and that all tests will pass. + pull_request: + paths: + - 'src/**' + - 'pom.xml' + +jobs: + compile: + name: Maven compiler + runs-on: ubuntu-latest + steps: + + # 1. Check out the current working tree + - name: Checkout repository + uses: actions/checkout@v2 + + # 2. Setup Java 16 JDK + - name: Set up JDK 16 + uses: actions/setup-java@v2 + with: + java-version: '16' + distribution: 'adopt' + + # 3. Setup local Maven package cache to speed up building + - name: Cache Maven packages + uses: actions/cache@v2 + with: + path: ~/.m2 + key: ${{ runner.os }}-m2-${{ hashFiles('**/pom.xml') }} + restore-keys: ${{ runner.os }}-m2 + + # 4. Build via Maven + - name: Build via Maven + run: mvn verify -B --file pom.xml + + #5: Create a Clean Package - and Verify it + - name: Clean package + run: mvn -B clean package + + - name: Clean Verify + run: mvn -B clean verify + + #6 Upload Artifacts + - name: Upload a Build Artifact + uses: actions/upload-artifact@v2.1.4 + with: + name: artifact + path: /home/runner/work/ArmorStandEditor/ArmorStandEditor/target/armorstandeditor-*-*.jar + if-no-files-found: error From 83c04282e23eae6d9e7f6953dff18297762e1fea Mon Sep 17 00:00:00 2001 From: Wolfstorm Date: Sat, 24 Jul 2021 16:08:49 +0200 Subject: [PATCH 048/369] [CI-SKIP] Fix: Incorrect Permission Descriptions Signed-off-by: Wolfstorm --- src/main/resources/plugin.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index 0f5b6038..f89cef96 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -18,7 +18,7 @@ permissions: description: Allow use armorstand edit functions. If set to false it will override all other functions. default: true asedit.invisible: - description: Toggle armorstand and item frame visible/invisible. + description: Toggle armorstand visible/invisible. default: true asedit.rename: description: Rename armorstands From 3db451e55b7d9b602ed6e50d78cf33db918251c2 Mon Sep 17 00:00:00 2001 From: Wolfstorm Date: Sat, 24 Jul 2021 16:27:01 +0200 Subject: [PATCH 049/369] [CI-SKIP] Add Comments related to Wolfstorm/ArmorStandEditor-Issues#1. Potentially move all of this to asedit.invisible in the next major version or perhaps to be asedit.itemframes Signed-off-by: Wolfstorm --- .../io/github/rypofalem/armorstandeditor/PlayerEditor.java | 4 ++-- .../rypofalem/armorstandeditor/PlayerEditorManager.java | 1 + 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditor.java b/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditor.java index f650d0f9..97919ebe 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditor.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditor.java @@ -170,7 +170,7 @@ public void editArmorStand(ArmorStand armorStand) { } public void editItemFrame(ItemFrame itemFrame) { - if (!getPlayer().hasPermission("asedit.basic")) return; + if (!getPlayer().hasPermission("asedit.basic")) return; //Change to be asedit.invisible? switch (eMode) { case ITEMFRAME: toggleItemFrameVisible(itemFrame); @@ -345,7 +345,7 @@ void toggleVisible(ArmorStand armorStand) { armorStand.setVisible(!armorStand.isVisible()); } void toggleItemFrameVisible(ItemFrame itemFrame) { - if (!getPlayer().hasPermission("asedit.invisible")) return; + if (!getPlayer().hasPermission("asedit.basic")) return; //Change to be asedit.invisible? itemFrame.setVisible(!itemFrame.isVisible()); } diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditorManager.java b/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditorManager.java index b7d0a876..d4372bd3 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditorManager.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditorManager.java @@ -326,6 +326,7 @@ void applyRightTool( Player player, ArmorStand as) { getPlayerEditor(player.getUniqueId()).reverseEditArmorStand(as); } + //Unused? @EventHandler(priority = EventPriority.LOWEST) void onRightClickTool( PlayerInteractEvent e) { if (!(e.getAction() == Action.LEFT_CLICK_AIR From ccd3fd65894fb82d0478bd3fc60d2fa80f3815c8 Mon Sep 17 00:00:00 2001 From: Wolfstorm Date: Sat, 24 Jul 2021 18:01:21 +0200 Subject: [PATCH 050/369] [CORE] Version Bump 1.17.1-29 Signed-off-by: Wolfstorm --- .../io/github/rypofalem/armorstandeditor/PlayerEditor.java | 1 + .../java/io/github/rypofalem/armorstandeditor/menu/Menu.java | 4 ++-- src/main/resources/plugin.yml | 2 +- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditor.java b/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditor.java index 97919ebe..64d87b1a 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditor.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditor.java @@ -346,6 +346,7 @@ void toggleVisible(ArmorStand armorStand) { } void toggleItemFrameVisible(ItemFrame itemFrame) { if (!getPlayer().hasPermission("asedit.basic")) return; //Change to be asedit.invisible? + //Potential for OnInteractEvent for ItemFrame to Disable Interaction itemFrame.setVisible(!itemFrame.isVisible()); } diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/menu/Menu.java b/src/main/java/io/github/rypofalem/armorstandeditor/menu/Menu.java index 0218e5ca..99927c00 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/menu/Menu.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/menu/Menu.java @@ -123,8 +123,8 @@ private void fillInventory() { if (pe.getPlayer().hasPermission("asedit.invisible")) { visibility = new ItemStack(Material.POTION, 1); - PotionMeta potionMeta = (PotionMeta) visibility.getItemMeta(); - PotionEffect eff1 = new PotionEffect(PotionEffectType.INVISIBILITY, 1, 0); + PotionMeta potionMeta = (PotionMeta) visibility.getItemMeta(); + PotionEffect eff1 = new PotionEffect(PotionEffectType.INVISIBILITY, 1, 0); potionMeta.addCustomEffect(eff1, true); visibility.setItemMeta(potionMeta); visibility = createIcon(visibility, "invisible", "mode invisible"); diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index f89cef96..9f56900b 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -1,6 +1,6 @@ name: ArmorStandEditor main: io.github.rypofalem.armorstandeditor.ArmorStandEditorPlugin -version: 1.17-28.2 +version: 1.17-29 api-version: "1.13" website: rypofalem.github.io authors: From 2dc3b63b4974de9cbdbe2fd52396fbc4d590ce37 Mon Sep 17 00:00:00 2001 From: Wolfstorm Date: Mon, 26 Jul 2021 12:01:27 +0200 Subject: [PATCH 051/369] [CORE] Version Bump Fix - Not bumped in Maven Not Bumped in Maven. My Bad --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 6d9b7f18..6f247d35 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ io.github.rypofalem.armorstandeditor armorstandeditor jar - 1.17-28.2 + 1.17-29 armorstandeditor http://maven.apache.org From 229321fed370aed07041086dd256c7ed03662720 Mon Sep 17 00:00:00 2001 From: Wolfstorm Date: Mon, 26 Jul 2021 12:02:30 +0200 Subject: [PATCH 052/369] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 5a4eb029..be8fc8ab 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@ # ArmorStandEditor -[![Build Status](https://travis-ci.org/Wolfst0rm/ArmorStandEditor.svg?branch=master)](https://travis-ci.org/Wolfst0rm/ArmorStandEditor) +[![Build Status](https://github.com/Wolfst0rm/ArmorStandEditor/actions/workflows/maven-publish.yml/badge.svg)](https://github.com/Wolfst0rm/ArmorStandEditor/actions/workflows/maven-publish.yml) Bukkit plugin to allow players to edit armorstands without commands. From ebcd4088466b2f33fe14c75dc82f55ed99a42e5b Mon Sep 17 00:00:00 2001 From: Wolfstorm Date: Mon, 26 Jul 2021 12:27:45 +0200 Subject: [PATCH 053/369] Add .circleci/config.yml --- .circleci/config.yml | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 .circleci/config.yml diff --git a/.circleci/config.yml b/.circleci/config.yml new file mode 100644 index 00000000..39e7d852 --- /dev/null +++ b/.circleci/config.yml @@ -0,0 +1,33 @@ +# Use the latest 2.1 version of CircleCI pipeline process engine. +# See: https://circleci.com/docs/2.0/configuration-reference +version: 2.1 + +jobs: + # Below is the definition of your job to build and test your app, you can rename and customize it as you want. + build-and-test: + # These next lines define a Docker executor: https://circleci.com/docs/2.0/executor-types/ + # You can specify an image from Dockerhub or use one of our Convenience Images from CircleCI's Developer Hub. + # Be sure to update the Docker image tag below to openjdk version of your application. + # A list of available CircleCI Docker Convenience Images are available here: https://circleci.com/developer/images/image/cimg/openjdk + docker: + - image: cimg/openjdk:11.0 + steps: + # Checkout the code as the first step. + - checkout + # Use mvn clean and package as the standard maven build phase + - run: + name: Build + command: mvn -B -DskipTests clean package + # Then run your tests! + - run: + name: Test + command: mvn test + +workflows: + # Below is the definition of your workflow. + # Inside the workflow, you provide the jobs you want to run, e.g this workflow runs the build-and-test job above. + # CircleCI will run this workflow on every commit. + # For more details on extending your workflow, see the configuration docs: https://circleci.com/docs/2.0/configuration-reference/#workflows + sample: + jobs: + - build-and-test From 6997b08c1f5f483397fbbd2aaf95a1cef4429c0b Mon Sep 17 00:00:00 2001 From: Wolfstorm Date: Mon, 26 Jul 2021 12:30:30 +0200 Subject: [PATCH 054/369] Delete .circleci directory --- .circleci/config.yml | 33 --------------------------------- 1 file changed, 33 deletions(-) delete mode 100644 .circleci/config.yml diff --git a/.circleci/config.yml b/.circleci/config.yml deleted file mode 100644 index 39e7d852..00000000 --- a/.circleci/config.yml +++ /dev/null @@ -1,33 +0,0 @@ -# Use the latest 2.1 version of CircleCI pipeline process engine. -# See: https://circleci.com/docs/2.0/configuration-reference -version: 2.1 - -jobs: - # Below is the definition of your job to build and test your app, you can rename and customize it as you want. - build-and-test: - # These next lines define a Docker executor: https://circleci.com/docs/2.0/executor-types/ - # You can specify an image from Dockerhub or use one of our Convenience Images from CircleCI's Developer Hub. - # Be sure to update the Docker image tag below to openjdk version of your application. - # A list of available CircleCI Docker Convenience Images are available here: https://circleci.com/developer/images/image/cimg/openjdk - docker: - - image: cimg/openjdk:11.0 - steps: - # Checkout the code as the first step. - - checkout - # Use mvn clean and package as the standard maven build phase - - run: - name: Build - command: mvn -B -DskipTests clean package - # Then run your tests! - - run: - name: Test - command: mvn test - -workflows: - # Below is the definition of your workflow. - # Inside the workflow, you provide the jobs you want to run, e.g this workflow runs the build-and-test job above. - # CircleCI will run this workflow on every commit. - # For more details on extending your workflow, see the configuration docs: https://circleci.com/docs/2.0/configuration-reference/#workflows - sample: - jobs: - - build-and-test From c1593e25fa9112833a3d3ca80fd02116f9c3d23f Mon Sep 17 00:00:00 2001 From: Wolfstorm Date: Mon, 26 Jul 2021 12:31:52 +0200 Subject: [PATCH 055/369] [CI-SKip] Work on External CIs --- .travis-ci.yml | 10 ---------- 1 file changed, 10 deletions(-) delete mode 100644 .travis-ci.yml diff --git a/.travis-ci.yml b/.travis-ci.yml deleted file mode 100644 index 87c48d30..00000000 --- a/.travis-ci.yml +++ /dev/null @@ -1,10 +0,0 @@ -dist: xenial - -language: java - -jdk: - - openjdk8 - - openjdk11 - -after_success: - - bash <(curl -s https://codecov.io/bash) From 67c5b57f9465f5819168039bb9650301c6292ba1 Mon Sep 17 00:00:00 2001 From: Wolfstorm Date: Mon, 26 Jul 2021 12:38:07 +0200 Subject: [PATCH 056/369] [CI] Update Maven Take better account of the Branches for this to be checked on --- .github/workflows/maven-publish.yml | 21 +++++++++------------ 1 file changed, 9 insertions(+), 12 deletions(-) diff --git a/.github/workflows/maven-publish.yml b/.github/workflows/maven-publish.yml index 3cc2782f..d117b2e9 100644 --- a/.github/workflows/maven-publish.yml +++ b/.github/workflows/maven-publish.yml @@ -1,30 +1,27 @@ -# This workflow automatically tests new commits and pull requests as they come in. -# Note that this does not upload any artifacts, you will need to compile mcMMO manually -# if you wish to create the actual jar. -name: Compile and test +# This workflow will build a Java project with Maven +# For more information see: https://help.github.com/actions/language-and-framework-guides/building-and-testing-java-with-maven + +name: Java CI with Maven on: - # We run our tests whenever the pom or a source file was touched. - # There is no need to run Maven when only the changelog was touched. - # We may also want to re-run this workflow when the workflow file itself - # was updated too. push: + branches: [ master ] paths: - 'src/**' - 'pom.xml' - '.github/workflows/maven-publish.yml' - # Whenever someone submits a new pull request which modified the pom or a source file, - # we want to ensure it compiles successfully and that all tests will pass. pull_request: + branches: [ master ] paths: - 'src/**' - 'pom.xml' - + jobs: compile: - name: Maven compiler + runs-on: ubuntu-latest + steps: # 1. Check out the current working tree From 36bd45469908507e9c286257d8e72ba4002e76a8 Mon Sep 17 00:00:00 2001 From: Wolfstorm Date: Tue, 27 Jul 2021 14:46:26 +0200 Subject: [PATCH 057/369] [CI-SKIP] Update GitIgnore to take into account other IDE Files --- .gitignore | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index e6ebc35e..323ea198 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,6 @@ .idea/ target/ -*.iml \ No newline at end of file +*.iml +/bin/ +/.project +/.classpath From 9cffd8c18a27dc3688129b9b47a8d0da7ec01f04 Mon Sep 17 00:00:00 2001 From: Github Date: Tue, 27 Jul 2021 14:58:58 +0200 Subject: [PATCH 058/369] [CORE] Start Add Reload Command Signed-off-by: Github --- .../io/github/rypofalem/armorstandeditor/CommandEx.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/CommandEx.java b/src/main/java/io/github/rypofalem/armorstandeditor/CommandEx.java index 2150fe1a..e14c3834 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/CommandEx.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/CommandEx.java @@ -67,6 +67,8 @@ && checkPermission((Player) sender, "basic", true))) { break; case "slot": commandSlot(player, args); break; + case "reload": commandReload(); + break; case "help": case "?": commandHelp(player); break; @@ -80,6 +82,10 @@ && checkPermission((Player) sender, "basic", true))) { return true; } + private void commandReload(){ + //TODO: Reload Command + } + private void commandSlot(Player player, String[] args) { if (args.length <= 1) { From 18c291364a15788dc6f24b631501c3cfd228c7dc Mon Sep 17 00:00:00 2001 From: Github Date: Tue, 27 Jul 2021 15:46:58 +0200 Subject: [PATCH 059/369] [CORE] Reload: Add rest of things to be done Signed-off-by: Github --- .../ArmorStandEditorPlugin.java | 24 +++++++++++++++---- .../rypofalem/armorstandeditor/CommandEx.java | 16 ++++++++++--- src/main/resources/plugin.yml | 5 +++- 3 files changed, 37 insertions(+), 8 deletions(-) diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/ArmorStandEditorPlugin.java b/src/main/java/io/github/rypofalem/armorstandeditor/ArmorStandEditorPlugin.java index e249403f..40a82890 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/ArmorStandEditorPlugin.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/ArmorStandEditorPlugin.java @@ -20,15 +20,19 @@ package io.github.rypofalem.armorstandeditor; import io.github.rypofalem.armorstandeditor.language.Language; +import org.apache.commons.lang.ObjectUtils; import org.bukkit.Bukkit; import org.bukkit.Material; import org.bukkit.NamespacedKey; import org.bukkit.entity.Player; import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.meta.Damageable; +import org.bukkit.configuration.file.FileConfiguration; +import org.bukkit.configuration.file.YamlConfiguration; import org.bukkit.plugin.Plugin; import org.bukkit.plugin.java.JavaPlugin; +import javax.print.DocFlavor; import java.io.File; import java.util.List; @@ -39,7 +43,8 @@ public class ArmorStandEditorPlugin extends JavaPlugin{ private Language lang; public boolean hasSpigot; public PlayerEditorManager editorManager; - public Material editTool = Material.FLINT; + + Material editTool = Material.FLINT; boolean requireToolData = false; boolean sendToActionBar = true; int editToolData = Integer.MIN_VALUE; @@ -48,7 +53,12 @@ public class ArmorStandEditorPlugin extends JavaPlugin{ boolean debug = false; //weather or not to broadcast messages via print(String message) double coarseRot; double fineRot; - public boolean glowItemFrames; + boolean glowItemFrames; + String toolType = null; + + + private static ArmorStandEditorPlugin plugin; + public ArmorStandEditorPlugin(){ instance = this; @@ -73,7 +83,7 @@ public void onEnable(){ coarseRot = getConfig().getDouble("coarse"); fineRot = getConfig().getDouble("fine"); - String toolType = getConfig().getString("tool", "FLINT"); + toolType = getConfig().getString("tool", "FLINT"); editTool = Material.getMaterial(toolType); requireToolData = getConfig().getBoolean("requireToolData", false); if(requireToolData) editToolData = getConfig().getInt("toolData", Integer.MIN_VALUE); @@ -81,7 +91,6 @@ public void onEnable(){ if(requireToolLore) editToolLore= getConfig().getString("toolLore", null); debug = getConfig().getBoolean("debug", true); sendToActionBar = getConfig().getBoolean("sendMessagesToActionBar", true); - //NEW: Glowing Item Frame Support glowItemFrames = getConfig().getBoolean("glowingItemFrame", true); @@ -130,6 +139,13 @@ public Language getLang(){ return lang; } + public void reload(){ + //TODO: Get Everything already set in Plugin File + //TODO: Rehook into things if required + //TODO: Display Reload Complete Message + //SEE https://github.com/IntellectualSites/PlotSquared/blob/v6/Core/src/main/java/com/plotsquared/core/command/Reload.java as EXAMPLE! + } + public boolean isEditTool(ItemStack itemStk){ if (itemStk == null) { return false; } if (editTool != itemStk.getType()) { return false; } diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/CommandEx.java b/src/main/java/io/github/rypofalem/armorstandeditor/CommandEx.java index e14c3834..aaee1fe6 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/CommandEx.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/CommandEx.java @@ -22,19 +22,26 @@ import io.github.rypofalem.armorstandeditor.modes.AdjustmentMode; import io.github.rypofalem.armorstandeditor.modes.Axis; import io.github.rypofalem.armorstandeditor.modes.EditMode; +import org.bukkit.Bukkit; import org.bukkit.ChatColor; import org.bukkit.Sound; import org.bukkit.command.Command; import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandSender; +import org.bukkit.configuration.file.FileConfiguration; +import org.bukkit.configuration.file.YamlConfiguration; import org.bukkit.entity.Player; +import java.io.File; + + public class CommandEx implements CommandExecutor { ArmorStandEditorPlugin plugin; final String LISTMODE = ChatColor.YELLOW + "/ase mode <" + Util.getEnumList(EditMode.class) + ">"; final String LISTAXIS = ChatColor.YELLOW + "/ase axis <" + Util.getEnumList(Axis.class) + ">"; final String LISTADJUSTMENT = ChatColor.YELLOW + "/ase adj <" + Util.getEnumList(AdjustmentMode.class) + ">"; final String LISTSLOT = ChatColor.YELLOW + "/ase slot <1-9>"; + final String RELOAD = ChatColor.YELLOW + "/ase reload"; final String HELP = ChatColor.YELLOW + "/ase help"; public CommandEx( ArmorStandEditorPlugin armorStandEditorPlugin) { @@ -67,7 +74,7 @@ && checkPermission((Player) sender, "basic", true))) { break; case "slot": commandSlot(player, args); break; - case "reload": commandReload(); + case "reload": commandReload(player); break; case "help": case "?": commandHelp(player); @@ -77,13 +84,16 @@ && checkPermission((Player) sender, "basic", true))) { sender.sendMessage(LISTAXIS); sender.sendMessage(LISTSLOT); sender.sendMessage(LISTADJUSTMENT); + sender.sendMessage(RELOAD); sender.sendMessage(HELP); } return true; } - private void commandReload(){ - //TODO: Reload Command + private void commandReload(Player player){ + if(!(checkPermission(player, "reload", true))) return; //Basic sanity Check for Reload Permission! + //TODO: Hook this into Main Plugin File + } private void commandSlot(Player player, String[] args) { diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index 9f56900b..a54aae89 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -25,4 +25,7 @@ permissions: default: true asedit.equipment: description: Access armorstand equipment GUI - default: true \ No newline at end of file + default: true + asedit.reload: + description: Reload Configs for ArmorStandEditor + default: false \ No newline at end of file From 7a121e103168201a5203821377f28fc0475391c4 Mon Sep 17 00:00:00 2001 From: Wolfstorm Date: Fri, 30 Jul 2021 10:56:38 +0200 Subject: [PATCH 060/369] [CORE] Add Simple Reload Command, New Language Strings for Translation etc. Signed-off-by: Github --- .../ArmorStandEditorPlugin.java | 7 ------- .../rypofalem/armorstandeditor/CommandEx.java | 21 ++++++++++++++++--- src/main/resources/lang/en_US.yml | 4 ++++ 3 files changed, 22 insertions(+), 10 deletions(-) diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/ArmorStandEditorPlugin.java b/src/main/java/io/github/rypofalem/armorstandeditor/ArmorStandEditorPlugin.java index 40a82890..b3ede7c6 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/ArmorStandEditorPlugin.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/ArmorStandEditorPlugin.java @@ -139,13 +139,6 @@ public Language getLang(){ return lang; } - public void reload(){ - //TODO: Get Everything already set in Plugin File - //TODO: Rehook into things if required - //TODO: Display Reload Complete Message - //SEE https://github.com/IntellectualSites/PlotSquared/blob/v6/Core/src/main/java/com/plotsquared/core/command/Reload.java as EXAMPLE! - } - public boolean isEditTool(ItemStack itemStk){ if (itemStk == null) { return false; } if (editTool != itemStk.getType()) { return false; } diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/CommandEx.java b/src/main/java/io/github/rypofalem/armorstandeditor/CommandEx.java index aaee1fe6..2fa617a2 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/CommandEx.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/CommandEx.java @@ -31,6 +31,7 @@ import org.bukkit.configuration.file.FileConfiguration; import org.bukkit.configuration.file.YamlConfiguration; import org.bukkit.entity.Player; +import org.bukkit.plugin.PluginDescriptionFile; import java.io.File; @@ -74,7 +75,7 @@ && checkPermission((Player) sender, "basic", true))) { break; case "slot": commandSlot(player, args); break; - case "reload": commandReload(player); + case "reload": commandReload(player, args); break; case "help": case "?": commandHelp(player); @@ -90,12 +91,26 @@ && checkPermission((Player) sender, "basic", true))) { return true; } - private void commandReload(Player player){ + //Simple Reload Command - Might be expanded upon later. + private void commandReload(Player player, String[] args){ if(!(checkPermission(player, "reload", true))) return; //Basic sanity Check for Reload Permission! - //TODO: Hook this into Main Plugin File + if(args.length > 0 ){ + player.sendMessage(plugin.getLang().getMessage("noreload", "warn")); + player.sendMessage(RELOAD); + } else { + PluginDescriptionFile pdfFile = plugin.getDescription(); + if (checkPermission(player, "reload", true)) { + plugin.reloadConfig(); + player.sendMessage(plugin.getLang().getMessage("reloaded", "info")); + Bukkit.getServer().getLogger().info("[ArmorStandEditor] Configuration File (" + pdfFile.getFullName() + ") Reloaded by" + player.getName() + "."); + } else { + return; + } + } } + private void commandSlot(Player player, String[] args) { if (args.length <= 1) { diff --git a/src/main/resources/lang/en_US.yml b/src/main/resources/lang/en_US.yml index 9e6919d8..f5a68e27 100644 --- a/src/main/resources/lang/en_US.yml +++ b/src/main/resources/lang/en_US.yml @@ -64,6 +64,8 @@ frametarget: msg: Itemframe target locked noframetarget: msg: Itemframe target unlocked. +reloaded: + msg: Configuration File has been reloaded. help: msg: "1. Hold the editing tool() in your main hand @@ -98,6 +100,8 @@ noaxiscom: msg: You must specify an Axis! nomodecom: msg: You must specify a Mode! +noreload: + msg: You don't have permission to use the reload command! #menutitle mainmenutitle: From b63379c1be496f7b7a3f5d0a0f3376604c0d0e5e Mon Sep 17 00:00:00 2001 From: Wolfstorm Date: Fri, 30 Jul 2021 10:56:38 +0200 Subject: [PATCH 061/369] [CORE] Add Simple Reload Command, New Language Strings for Translation etc. Signed-off-by: Github --- .../java/io/github/rypofalem/armorstandeditor/CommandEx.java | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/CommandEx.java b/src/main/java/io/github/rypofalem/armorstandeditor/CommandEx.java index 2fa617a2..1608d8c7 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/CommandEx.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/CommandEx.java @@ -103,9 +103,7 @@ private void commandReload(Player player, String[] args){ if (checkPermission(player, "reload", true)) { plugin.reloadConfig(); player.sendMessage(plugin.getLang().getMessage("reloaded", "info")); - Bukkit.getServer().getLogger().info("[ArmorStandEditor] Configuration File (" + pdfFile.getFullName() + ") Reloaded by" + player.getName() + "."); - } else { - return; + plugin.log("Configuration File ("+ pdfFile.getFullName() + ") Reloaded by " + player.getName() + ""); } } } From 61f99ef4cce64d1aee0d8a3267846b05952ac742 Mon Sep 17 00:00:00 2001 From: Wolfstorm Date: Fri, 30 Jul 2021 10:56:38 +0200 Subject: [PATCH 062/369] [CORE] Add Simple Reload Command, New Language Strings for Translation etc. Signed-off-by: Github --- .../java/io/github/rypofalem/armorstandeditor/CommandEx.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/CommandEx.java b/src/main/java/io/github/rypofalem/armorstandeditor/CommandEx.java index 1608d8c7..7c70cc76 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/CommandEx.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/CommandEx.java @@ -102,6 +102,7 @@ private void commandReload(Player player, String[] args){ PluginDescriptionFile pdfFile = plugin.getDescription(); if (checkPermission(player, "reload", true)) { plugin.reloadConfig(); + //plugin.saveConfig(); Determine If We need this player.sendMessage(plugin.getLang().getMessage("reloaded", "info")); plugin.log("Configuration File ("+ pdfFile.getFullName() + ") Reloaded by " + player.getName() + ""); } From 78b0c2ff95c5835733a5e720cb32e94b0e924ef0 Mon Sep 17 00:00:00 2001 From: Wolfstorm Date: Fri, 30 Jul 2021 10:56:38 +0200 Subject: [PATCH 063/369] [CORE] Add Simple Reload Command, New Language Strings for Translation etc. Signed-off-by: Github Signed-off-by: Wolfstorm --- .../java/io/github/rypofalem/armorstandeditor/CommandEx.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/CommandEx.java b/src/main/java/io/github/rypofalem/armorstandeditor/CommandEx.java index 7c70cc76..458da226 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/CommandEx.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/CommandEx.java @@ -93,12 +93,12 @@ && checkPermission((Player) sender, "basic", true))) { //Simple Reload Command - Might be expanded upon later. private void commandReload(Player player, String[] args){ - if(!(checkPermission(player, "reload", true))) return; //Basic sanity Check for Reload Permission! if(args.length > 0 ){ player.sendMessage(plugin.getLang().getMessage("noreload", "warn")); player.sendMessage(RELOAD); - } else { + } + if (args.length == 0 && checkPermission(player, "reload", true)){ PluginDescriptionFile pdfFile = plugin.getDescription(); if (checkPermission(player, "reload", true)) { plugin.reloadConfig(); From effec0d1db9770388464e4931b79d0b8f659f7e7 Mon Sep 17 00:00:00 2001 From: Wolfstorm Date: Sat, 31 Jul 2021 11:43:57 +0200 Subject: [PATCH 064/369] [CORE] Add Simple Reload Command, New Language Strings for Translation etc. Signed-off-by: Github Signed-off-by: Wolfstorm --- .../rypofalem/armorstandeditor/CommandEx.java | 26 ++++++++++--------- src/main/resources/lang/en_US.yml | 2 +- 2 files changed, 15 insertions(+), 13 deletions(-) diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/CommandEx.java b/src/main/java/io/github/rypofalem/armorstandeditor/CommandEx.java index 458da226..89e9575a 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/CommandEx.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/CommandEx.java @@ -63,6 +63,8 @@ && checkPermission((Player) sender, "basic", true))) { player.sendMessage(LISTAXIS); player.sendMessage(LISTSLOT); player.sendMessage(LISTADJUSTMENT); + player.sendMessage(RELOAD); + player.sendMessage(HELP); return true; } switch (args[0].toLowerCase()) { @@ -93,20 +95,20 @@ && checkPermission((Player) sender, "basic", true))) { //Simple Reload Command - Might be expanded upon later. private void commandReload(Player player, String[] args){ - if(args.length > 0 ){ - player.sendMessage(plugin.getLang().getMessage("noreload", "warn")); - player.sendMessage(RELOAD); - } - - if (args.length == 0 && checkPermission(player, "reload", true)){ - PluginDescriptionFile pdfFile = plugin.getDescription(); - if (checkPermission(player, "reload", true)) { - plugin.reloadConfig(); - //plugin.saveConfig(); Determine If We need this - player.sendMessage(plugin.getLang().getMessage("reloaded", "info")); - plugin.log("Configuration File ("+ pdfFile.getFullName() + ") Reloaded by " + player.getName() + ""); + try{ + if (args[0].equalsIgnoreCase("reload")){ + if (checkPermission(player, "reload", true)){ + plugin.reloadConfig(); + player.sendMessage(plugin.getLang().getMessage("reloaded", "info")); + } + } else { + player.sendMessage(plugin.getLang().getMessage("noperm", "warn")); + player.sendMessage(RELOAD); } + } catch ( Exception e ) { + e.printStackTrace(); } + } diff --git a/src/main/resources/lang/en_US.yml b/src/main/resources/lang/en_US.yml index f5a68e27..9af0dea0 100644 --- a/src/main/resources/lang/en_US.yml +++ b/src/main/resources/lang/en_US.yml @@ -100,7 +100,7 @@ noaxiscom: msg: You must specify an Axis! nomodecom: msg: You must specify a Mode! -noreload: +noreloadcom: msg: You don't have permission to use the reload command! #menutitle From a661dfef248504b2201b7d8211f2272cfcc75cbf Mon Sep 17 00:00:00 2001 From: Wolfstorm Date: Sat, 31 Jul 2021 11:59:15 +0200 Subject: [PATCH 065/369] [CORE] Fix Reload Command Permission checks Signed-off-by: Github Signed-off-by: Wolfstorm --- .../java/io/github/rypofalem/armorstandeditor/CommandEx.java | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/CommandEx.java b/src/main/java/io/github/rypofalem/armorstandeditor/CommandEx.java index 89e9575a..66492a84 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/CommandEx.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/CommandEx.java @@ -96,11 +96,10 @@ && checkPermission((Player) sender, "basic", true))) { //Simple Reload Command - Might be expanded upon later. private void commandReload(Player player, String[] args){ try{ - if (args[0].equalsIgnoreCase("reload")){ - if (checkPermission(player, "reload", true)){ + if (args[0].equalsIgnoreCase("reload") && checkPermission(player, "reload", true)){ plugin.reloadConfig(); + plugin.saveConfig(); player.sendMessage(plugin.getLang().getMessage("reloaded", "info")); - } } else { player.sendMessage(plugin.getLang().getMessage("noperm", "warn")); player.sendMessage(RELOAD); From 09c48ff058b1e981683d045b2edecbd7c4462ecb Mon Sep 17 00:00:00 2001 From: Wolfstorm Date: Sat, 31 Jul 2021 12:06:31 +0200 Subject: [PATCH 066/369] [CORE] Fix Reload Command Permission checks Signed-off-by: Github Signed-off-by: Wolfstorm --- .../rypofalem/armorstandeditor/CommandEx.java | 22 ++++++++++++------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/CommandEx.java b/src/main/java/io/github/rypofalem/armorstandeditor/CommandEx.java index 66492a84..12f80e18 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/CommandEx.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/CommandEx.java @@ -95,19 +95,25 @@ && checkPermission((Player) sender, "basic", true))) { //Simple Reload Command - Might be expanded upon later. private void commandReload(Player player, String[] args){ - try{ - if (args[0].equalsIgnoreCase("reload") && checkPermission(player, "reload", true)){ + + if (args.length > 0){ + player.sendMessage(plugin.getLang().getMessage("noperm", "warn")); + player.sendMessage(RELOAD); + } + + if (args.length == 0) { + if (checkPermission(player, "reload", true)) { + try { + plugin.reloadConfig(); plugin.saveConfig(); player.sendMessage(plugin.getLang().getMessage("reloaded", "info")); - } else { - player.sendMessage(plugin.getLang().getMessage("noperm", "warn")); - player.sendMessage(RELOAD); + } catch (Exception e) { + e.printStackTrace(); + } + } - } catch ( Exception e ) { - e.printStackTrace(); } - } From 8bf502216bbd9f456fb5b5c02f11420a43d901c6 Mon Sep 17 00:00:00 2001 From: Wolfstorm Date: Sat, 31 Jul 2021 12:07:32 +0200 Subject: [PATCH 067/369] [CORE] Fix Reload Command Permission checks Signed-off-by: Github Signed-off-by: Wolfstorm --- .../io/github/rypofalem/armorstandeditor/CommandEx.java | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/CommandEx.java b/src/main/java/io/github/rypofalem/armorstandeditor/CommandEx.java index 12f80e18..510c56e0 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/CommandEx.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/CommandEx.java @@ -108,10 +108,17 @@ private void commandReload(Player player, String[] args){ plugin.reloadConfig(); plugin.saveConfig(); player.sendMessage(plugin.getLang().getMessage("reloaded", "info")); + } catch (Exception e) { + + player.sendMessage(plugin.getLang().getMessage("noperm", "warn")); e.printStackTrace(); + } + }else{ + player.sendMessage(plugin.getLang().getMessage("noperm", "warn")); + player.sendMessage(RELOAD); } } } From 6fe536269746d6e4113a99f867e78d02fd58c201 Mon Sep 17 00:00:00 2001 From: Wolfstorm Date: Sat, 31 Jul 2021 12:27:07 +0200 Subject: [PATCH 068/369] [CORE] Fix Reload Command Permission checks Signed-off-by: Github Signed-off-by: Wolfstorm --- .../java/io/github/rypofalem/armorstandeditor/CommandEx.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/CommandEx.java b/src/main/java/io/github/rypofalem/armorstandeditor/CommandEx.java index 510c56e0..3915fc47 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/CommandEx.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/CommandEx.java @@ -96,12 +96,12 @@ && checkPermission((Player) sender, "basic", true))) { //Simple Reload Command - Might be expanded upon later. private void commandReload(Player player, String[] args){ - if (args.length > 0){ + if (args.length <= 1){ player.sendMessage(plugin.getLang().getMessage("noperm", "warn")); player.sendMessage(RELOAD); } - if (args.length == 0) { + if (args.length == 1) { if (checkPermission(player, "reload", true)) { try { From 26afdefead45d194a94b79dd3868f6e4b2acd35f Mon Sep 17 00:00:00 2001 From: Wolfstorm Date: Sat, 31 Jul 2021 12:27:07 +0200 Subject: [PATCH 069/369] [CORE] Fix Reload Command Permission checks Signed-off-by: Github Signed-off-by: Wolfstorm --- .../java/io/github/rypofalem/armorstandeditor/CommandEx.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/CommandEx.java b/src/main/java/io/github/rypofalem/armorstandeditor/CommandEx.java index 3915fc47..1548b20a 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/CommandEx.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/CommandEx.java @@ -96,7 +96,7 @@ && checkPermission((Player) sender, "basic", true))) { //Simple Reload Command - Might be expanded upon later. private void commandReload(Player player, String[] args){ - if (args.length <= 1){ + if (args.length < 1){ player.sendMessage(plugin.getLang().getMessage("noperm", "warn")); player.sendMessage(RELOAD); } From 87c41ad8f126a4f5af4dbe8e01b0d2df391e469e Mon Sep 17 00:00:00 2001 From: Wolfstorm Date: Sat, 31 Jul 2021 12:40:54 +0200 Subject: [PATCH 070/369] [CORE] Initial Reload Command Inital command is in but requires a bit of tweaking. What isnt working is the actual refresh of the file if it has been modified Signed-off-by: Wolfstorm --- .../java/io/github/rypofalem/armorstandeditor/CommandEx.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/CommandEx.java b/src/main/java/io/github/rypofalem/armorstandeditor/CommandEx.java index 1548b20a..2267a160 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/CommandEx.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/CommandEx.java @@ -104,7 +104,8 @@ private void commandReload(Player player, String[] args){ if (args.length == 1) { if (checkPermission(player, "reload", true)) { try { - + //DOES NOT YET TAKE INTO ACCOUNT FILE CHANGES + //TODO: MAKE IT TAKE FILE CHANGES INTO ACCOUNT plugin.reloadConfig(); plugin.saveConfig(); player.sendMessage(plugin.getLang().getMessage("reloaded", "info")); From ab8345599dff386cb263741de47b7dba55a1f21c Mon Sep 17 00:00:00 2001 From: Renovate Bot Date: Wed, 4 Aug 2021 06:46:36 +0000 Subject: [PATCH 071/369] Add renovate.json --- renovate.json | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 renovate.json diff --git a/renovate.json b/renovate.json new file mode 100644 index 00000000..f45d8f11 --- /dev/null +++ b/renovate.json @@ -0,0 +1,5 @@ +{ + "extends": [ + "config:base" + ] +} From 662127f5b2cf5029215a47c2497813df06b77d57 Mon Sep 17 00:00:00 2001 From: Renovate Bot Date: Wed, 4 Aug 2021 06:47:55 +0000 Subject: [PATCH 072/369] Update actions/upload-artifact action to v2.2.4 --- .github/workflows/maven-publish.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/maven-publish.yml b/.github/workflows/maven-publish.yml index d117b2e9..728e3297 100644 --- a/.github/workflows/maven-publish.yml +++ b/.github/workflows/maven-publish.yml @@ -56,7 +56,7 @@ jobs: #6 Upload Artifacts - name: Upload a Build Artifact - uses: actions/upload-artifact@v2.1.4 + uses: actions/upload-artifact@v2.2.4 with: name: artifact path: /home/runner/work/ArmorStandEditor/ArmorStandEditor/target/armorstandeditor-*-*.jar From fb6a5a6a1c8cdcf91235fa9e3f5afb0f46148afc Mon Sep 17 00:00:00 2001 From: Github Date: Tue, 17 Aug 2021 10:59:01 +0200 Subject: [PATCH 073/369] [CORE] Expand Reload Command and Remove Assignment of editTool Signed-off-by: Github --- .../ArmorStandEditorPlugin.java | 14 ++-- .../rypofalem/armorstandeditor/CommandEx.java | 68 ++++++++++++------- 2 files changed, 54 insertions(+), 28 deletions(-) diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/ArmorStandEditorPlugin.java b/src/main/java/io/github/rypofalem/armorstandeditor/ArmorStandEditorPlugin.java index b3ede7c6..34290385 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/ArmorStandEditorPlugin.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/ArmorStandEditorPlugin.java @@ -44,7 +44,8 @@ public class ArmorStandEditorPlugin extends JavaPlugin{ public boolean hasSpigot; public PlayerEditorManager editorManager; - Material editTool = Material.FLINT; + Material editTool; + String toolType; boolean requireToolData = false; boolean sendToActionBar = true; int editToolData = Integer.MIN_VALUE; @@ -54,7 +55,6 @@ public class ArmorStandEditorPlugin extends JavaPlugin{ double coarseRot; double fineRot; boolean glowItemFrames; - String toolType = null; private static ArmorStandEditorPlugin plugin; @@ -81,17 +81,23 @@ public void onEnable(){ saveResource("lang/en_US.yml", true); lang = new Language(getConfig().getString("lang"), this); + //Rotation coarseRot = getConfig().getDouble("coarse"); fineRot = getConfig().getDouble("fine"); - toolType = getConfig().getString("tool", "FLINT"); + + //Set Tool to be used in game + toolType = getConfig().getString("tool"); editTool = Material.getMaterial(toolType); + + //Is there NBT Required for the tool requireToolData = getConfig().getBoolean("requireToolData", false); if(requireToolData) editToolData = getConfig().getInt("toolData", Integer.MIN_VALUE); requireToolLore = getConfig().getBoolean("requireToolLore", false); if(requireToolLore) editToolLore= getConfig().getString("toolLore", null); + + //Optional Information debug = getConfig().getBoolean("debug", true); sendToActionBar = getConfig().getBoolean("sendMessagesToActionBar", true); - //NEW: Glowing Item Frame Support glowItemFrames = getConfig().getBoolean("glowingItemFrame", true); editorManager = new PlayerEditorManager(this); diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/CommandEx.java b/src/main/java/io/github/rypofalem/armorstandeditor/CommandEx.java index 2267a160..32ed0dae 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/CommandEx.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/CommandEx.java @@ -22,16 +22,18 @@ import io.github.rypofalem.armorstandeditor.modes.AdjustmentMode; import io.github.rypofalem.armorstandeditor.modes.Axis; import io.github.rypofalem.armorstandeditor.modes.EditMode; -import org.bukkit.Bukkit; import org.bukkit.ChatColor; +import org.bukkit.Material; import org.bukkit.Sound; import org.bukkit.command.Command; import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandSender; +import org.bukkit.configuration.ConfigurationSection; import org.bukkit.configuration.file.FileConfiguration; import org.bukkit.configuration.file.YamlConfiguration; import org.bukkit.entity.Player; import org.bukkit.plugin.PluginDescriptionFile; +import org.yaml.snakeyaml.Yaml; import java.io.File; @@ -45,6 +47,19 @@ public class CommandEx implements CommandExecutor { final String RELOAD = ChatColor.YELLOW + "/ase reload"; final String HELP = ChatColor.YELLOW + "/ase help"; + //Reload STuff + Material editTool; + boolean requireToolData = false; + boolean sendToActionBar = true; + int editToolData = Integer.MIN_VALUE; + boolean requireToolLore = false; + String editToolLore = null; + boolean debug = false; //weather or not to broadcast messages via print(String message) + double coarseRot; + double fineRot; + boolean glowItemFrames; + String toolType; + public CommandEx( ArmorStandEditorPlugin armorStandEditorPlugin) { this.plugin = armorStandEditorPlugin; } @@ -63,8 +78,6 @@ && checkPermission((Player) sender, "basic", true))) { player.sendMessage(LISTAXIS); player.sendMessage(LISTSLOT); player.sendMessage(LISTADJUSTMENT); - player.sendMessage(RELOAD); - player.sendMessage(HELP); return true; } switch (args[0].toLowerCase()) { @@ -93,35 +106,42 @@ && checkPermission((Player) sender, "basic", true))) { return true; } - //Simple Reload Command - Might be expanded upon later. + //Simple Reload Command - Expand Upon this. private void commandReload(Player player, String[] args){ - - if (args.length < 1){ - player.sendMessage(plugin.getLang().getMessage("noperm", "warn")); + if(!(checkPermission(player, "reload", true))) return; //Basic sanity Check for Reload Permission! + if(args.length > 0 ){ + player.sendMessage(plugin.getLang().getMessage("noreload", "warn")); player.sendMessage(RELOAD); - } + } else { + + PluginDescriptionFile pdfFile = plugin.getDescription(); - if (args.length == 1) { if (checkPermission(player, "reload", true)) { - try { - //DOES NOT YET TAKE INTO ACCOUNT FILE CHANGES - //TODO: MAKE IT TAKE FILE CHANGES INTO ACCOUNT - plugin.reloadConfig(); - plugin.saveConfig(); - player.sendMessage(plugin.getLang().getMessage("reloaded", "info")); + plugin.reloadConfig(); + this.loadConfig(); + player.sendMessage(plugin.getLang().getMessage("reloaded", "info")); + plugin.log("Configuration File ("+ pdfFile.getFullName() + ") Reloaded by " + player.getName() + ""); + } + } + } - } catch (Exception e) { + //Potential to add Validation In Here SOMEHOW? + private void loadConfig(){ + //Get all the Changes + coarseRot = plugin.getConfig().getDouble("coarse"); + fineRot = plugin.getConfig().getDouble("fine"); - player.sendMessage(plugin.getLang().getMessage("noperm", "warn")); - e.printStackTrace(); + toolType = plugin.getConfig().getString("tool"); + editTool = Material.getMaterial(toolType); - } + requireToolData = plugin.getConfig().getBoolean("requireToolData", false); + if(requireToolData) editToolData = plugin.getConfig().getInt("toolData", Integer.MIN_VALUE); + requireToolLore = plugin.getConfig().getBoolean("requireToolLore", false); + if(requireToolLore) editToolLore= plugin.getConfig().getString("toolLore", null); - }else{ - player.sendMessage(plugin.getLang().getMessage("noperm", "warn")); - player.sendMessage(RELOAD); - } - } + debug = plugin.getConfig().getBoolean("debug", true); + sendToActionBar = plugin.getConfig().getBoolean("sendMessagesToActionBar", true); + glowItemFrames = plugin.getConfig().getBoolean("glowingItemFrame", true); } From aa266961dda5b826d4322c0887a69fd503e88bc5 Mon Sep 17 00:00:00 2001 From: Github Date: Tue, 17 Aug 2021 11:01:58 +0200 Subject: [PATCH 074/369] [CI] Update Workflow Step Names to be more concrete Signed-off-by: Github --- .github/workflows/maven-publish.yml | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/.github/workflows/maven-publish.yml b/.github/workflows/maven-publish.yml index 728e3297..f92831a8 100644 --- a/.github/workflows/maven-publish.yml +++ b/.github/workflows/maven-publish.yml @@ -14,7 +14,7 @@ on: pull_request: branches: [ master ] paths: - - 'src/**' + - 'src/*' - 'pom.xml' jobs: @@ -25,11 +25,11 @@ jobs: steps: # 1. Check out the current working tree - - name: Checkout repository + - name: Checkout ArmorStandEditor Repository uses: actions/checkout@v2 # 2. Setup Java 16 JDK - - name: Set up JDK 16 + - name: Set up JDK 16 Environment uses: actions/setup-java@v2 with: java-version: '16' @@ -44,7 +44,7 @@ jobs: restore-keys: ${{ runner.os }}-m2 # 4. Build via Maven - - name: Build via Maven + - name: Build Project based on Maven File run: mvn verify -B --file pom.xml #5: Create a Clean Package - and Verify it @@ -54,9 +54,9 @@ jobs: - name: Clean Verify run: mvn -B clean verify - #6 Upload Artifacts - - name: Upload a Build Artifact - uses: actions/upload-artifact@v2.2.4 + #6 Upload Artifacts (Debug Purposes + - name: Upload Artifact for Debugging + uses: actions/upload-artifact@v2.1.4 with: name: artifact path: /home/runner/work/ArmorStandEditor/ArmorStandEditor/target/armorstandeditor-*-*.jar From 2dfe8ddef80a125544f7c5647a90bddd851bbe9d Mon Sep 17 00:00:00 2001 From: Github Date: Tue, 17 Aug 2021 11:06:21 +0200 Subject: [PATCH 075/369] [CORE] Cleanup Workflow and Update Authors List in plugin.yml Signed-off-by: Github --- .../github/rypofalem/armorstandeditor/CommandEx.java | 10 ++-------- src/main/resources/plugin.yml | 6 ++---- 2 files changed, 4 insertions(+), 12 deletions(-) diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/CommandEx.java b/src/main/java/io/github/rypofalem/armorstandeditor/CommandEx.java index 32ed0dae..0236f842 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/CommandEx.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/CommandEx.java @@ -28,14 +28,8 @@ import org.bukkit.command.Command; import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandSender; -import org.bukkit.configuration.ConfigurationSection; -import org.bukkit.configuration.file.FileConfiguration; -import org.bukkit.configuration.file.YamlConfiguration; import org.bukkit.entity.Player; import org.bukkit.plugin.PluginDescriptionFile; -import org.yaml.snakeyaml.Yaml; - -import java.io.File; public class CommandEx implements CommandExecutor { @@ -47,7 +41,7 @@ public class CommandEx implements CommandExecutor { final String RELOAD = ChatColor.YELLOW + "/ase reload"; final String HELP = ChatColor.YELLOW + "/ase help"; - //Reload STuff + //Reload Stuff Material editTool; boolean requireToolData = false; boolean sendToActionBar = true; @@ -58,7 +52,7 @@ public class CommandEx implements CommandExecutor { double coarseRot; double fineRot; boolean glowItemFrames; - String toolType; + String toolType = null; public CommandEx( ArmorStandEditorPlugin armorStandEditorPlugin) { this.plugin = armorStandEditorPlugin; diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index a54aae89..69fc6d55 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -3,10 +3,8 @@ main: io.github.rypofalem.armorstandeditor.ArmorStandEditorPlugin version: 1.17-29 api-version: "1.13" website: rypofalem.github.io -authors: - - Rypofalem - - Wolfstorm - - Marfjeh +author: Wolfstorm +authors: [Wolfstorm, Marfjeh, sekwah41, Sikatsu1997, Cool_boy, sumdream, Amaury Carrade, nicuch, kotarobo, prettydude, Jumpy91, Niasio, Patbox, Puremin0rez, Prof-Bloodstone] description: Allows players to edit data of armorstands without any commands. commands: ase: From 1d4227922d68cd0bdb174881fea87b084fcd8fa1 Mon Sep 17 00:00:00 2001 From: Github Date: Tue, 17 Aug 2021 11:21:59 +0200 Subject: [PATCH 076/369] [CI-SKIP] Comments... Comments... Comments... Signed-off-by: Github --- .../rypofalem/armorstandeditor/CommandEx.java | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/CommandEx.java b/src/main/java/io/github/rypofalem/armorstandeditor/CommandEx.java index 0236f842..22d41cba 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/CommandEx.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/CommandEx.java @@ -31,6 +31,9 @@ import org.bukkit.entity.Player; import org.bukkit.plugin.PluginDescriptionFile; +import java.time.DateTimeException; +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; public class CommandEx implements CommandExecutor { ArmorStandEditorPlugin plugin; @@ -53,6 +56,7 @@ public class CommandEx implements CommandExecutor { double fineRot; boolean glowItemFrames; String toolType = null; + LocalDateTime now = LocalDateTime.now(); public CommandEx( ArmorStandEditorPlugin armorStandEditorPlugin) { this.plugin = armorStandEditorPlugin; @@ -100,26 +104,29 @@ && checkPermission((Player) sender, "basic", true))) { return true; } - //Simple Reload Command - Expand Upon this. + //Reload Command Now Expanded Upon. private void commandReload(Player player, String[] args){ if(!(checkPermission(player, "reload", true))) return; //Basic sanity Check for Reload Permission! if(args.length > 0 ){ + // Check the Length of Args. If > 0 then pass noReload player.sendMessage(plugin.getLang().getMessage("noreload", "warn")); player.sendMessage(RELOAD); } else { + // else if = 0 then get do one final check on the permission - PluginDescriptionFile pdfFile = plugin.getDescription(); + DateTimeFormatter format = DateTimeFormatter.ofPattern("EEEE, dd MMMM yyyy HH:mm:ss.aa"); if (checkPermission(player, "reload", true)) { + // if permission true then run Reload and Load all the Values, Message that it has been reloaded successfully. Log to Console, Reload on DateTime by Player plugin.reloadConfig(); this.loadConfig(); player.sendMessage(plugin.getLang().getMessage("reloaded", "info")); - plugin.log("Configuration File ("+ pdfFile.getFullName() + ") Reloaded by " + player.getName() + ""); + plugin.log("Configuration File has reloaded on "+ now.format(format) + " by " + player.getName() + ""); } } } - //Potential to add Validation In Here SOMEHOW? + //Potential to add Validation In Here SOMEHOW? TO Validate that the file is good in that regard. private void loadConfig(){ //Get all the Changes coarseRot = plugin.getConfig().getDouble("coarse"); From 1fab6fe79ad4f981cb232bf2724b01ee1449cd6d Mon Sep 17 00:00:00 2001 From: Github Date: Tue, 17 Aug 2021 11:21:59 +0200 Subject: [PATCH 077/369] [CI-SKIP] Comments... Comments... Comments... Signed-off-by: Github --- .../ArmorStandEditorPlugin.java | 17 ++++++----------- .../rypofalem/armorstandeditor/CommandEx.java | 15 +++++++++++---- 2 files changed, 17 insertions(+), 15 deletions(-) diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/ArmorStandEditorPlugin.java b/src/main/java/io/github/rypofalem/armorstandeditor/ArmorStandEditorPlugin.java index 34290385..4ba74245 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/ArmorStandEditorPlugin.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/ArmorStandEditorPlugin.java @@ -20,22 +20,18 @@ package io.github.rypofalem.armorstandeditor; import io.github.rypofalem.armorstandeditor.language.Language; -import org.apache.commons.lang.ObjectUtils; import org.bukkit.Bukkit; import org.bukkit.Material; import org.bukkit.NamespacedKey; import org.bukkit.entity.Player; import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.meta.Damageable; -import org.bukkit.configuration.file.FileConfiguration; -import org.bukkit.configuration.file.YamlConfiguration; -import org.bukkit.plugin.Plugin; import org.bukkit.plugin.java.JavaPlugin; -import javax.print.DocFlavor; import java.io.File; import java.util.List; + public class ArmorStandEditorPlugin extends JavaPlugin{ private NamespacedKey iconKey; private static ArmorStandEditorPlugin instance; @@ -87,7 +83,8 @@ public void onEnable(){ //Set Tool to be used in game toolType = getConfig().getString("tool"); - editTool = Material.getMaterial(toolType); + + editTool = Material.getMaterial(toolType); //Ignore Warning //Is there NBT Required for the tool requireToolData = getConfig().getBoolean("requireToolData", false); @@ -102,7 +99,7 @@ public void onEnable(){ editorManager = new PlayerEditorManager(this); execute = new CommandEx(this); - getCommand("ase").setExecutor(execute); + getCommand("ase").setExecutor(execute); getServer().getPluginManager().registerEvents(editorManager, this); hasSpigot = true; @@ -164,7 +161,7 @@ public boolean isEditTool(ItemStack itemStk){ if(!itemStk.hasItemMeta()) { return false; } //Get the lore of the Item and if it is null - Return False - List itemLore = itemStk.getItemMeta().getLore(); //TODO: Fix NullPointerException on Method getLore + List itemLore = itemStk.getItemMeta().getLore(); //Ignore warnings this gives. getItemMeta is noted as NULLABLE if (itemLore == null){ return false; } //If the Item does not have Lore - Return False @@ -185,7 +182,5 @@ public NamespacedKey getIconKey() { return iconKey; } } -//todo: - -//Access to "DisabledSlots" data (probably simplified just a toggle enable/disable) +//todo: //Access to the "Marker" switch (so you can make the hitbox super small) diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/CommandEx.java b/src/main/java/io/github/rypofalem/armorstandeditor/CommandEx.java index 0236f842..22d41cba 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/CommandEx.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/CommandEx.java @@ -31,6 +31,9 @@ import org.bukkit.entity.Player; import org.bukkit.plugin.PluginDescriptionFile; +import java.time.DateTimeException; +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; public class CommandEx implements CommandExecutor { ArmorStandEditorPlugin plugin; @@ -53,6 +56,7 @@ public class CommandEx implements CommandExecutor { double fineRot; boolean glowItemFrames; String toolType = null; + LocalDateTime now = LocalDateTime.now(); public CommandEx( ArmorStandEditorPlugin armorStandEditorPlugin) { this.plugin = armorStandEditorPlugin; @@ -100,26 +104,29 @@ && checkPermission((Player) sender, "basic", true))) { return true; } - //Simple Reload Command - Expand Upon this. + //Reload Command Now Expanded Upon. private void commandReload(Player player, String[] args){ if(!(checkPermission(player, "reload", true))) return; //Basic sanity Check for Reload Permission! if(args.length > 0 ){ + // Check the Length of Args. If > 0 then pass noReload player.sendMessage(plugin.getLang().getMessage("noreload", "warn")); player.sendMessage(RELOAD); } else { + // else if = 0 then get do one final check on the permission - PluginDescriptionFile pdfFile = plugin.getDescription(); + DateTimeFormatter format = DateTimeFormatter.ofPattern("EEEE, dd MMMM yyyy HH:mm:ss.aa"); if (checkPermission(player, "reload", true)) { + // if permission true then run Reload and Load all the Values, Message that it has been reloaded successfully. Log to Console, Reload on DateTime by Player plugin.reloadConfig(); this.loadConfig(); player.sendMessage(plugin.getLang().getMessage("reloaded", "info")); - plugin.log("Configuration File ("+ pdfFile.getFullName() + ") Reloaded by " + player.getName() + ""); + plugin.log("Configuration File has reloaded on "+ now.format(format) + " by " + player.getName() + ""); } } } - //Potential to add Validation In Here SOMEHOW? + //Potential to add Validation In Here SOMEHOW? TO Validate that the file is good in that regard. private void loadConfig(){ //Get all the Changes coarseRot = plugin.getConfig().getDouble("coarse"); From 396ce956f8d08837ccf6133cd917e87cc4a71aa9 Mon Sep 17 00:00:00 2001 From: Github Date: Tue, 17 Aug 2021 13:50:41 +0200 Subject: [PATCH 078/369] [CORE] Version Detection and other Checks for Spigot and NMS Versions Signed-off-by: Github --- .../armorstandeditor/ArmorStandEditorPlugin.java | 13 +------------ 1 file changed, 1 insertion(+), 12 deletions(-) diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/ArmorStandEditorPlugin.java b/src/main/java/io/github/rypofalem/armorstandeditor/ArmorStandEditorPlugin.java index 7b3839cd..59fde461 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/ArmorStandEditorPlugin.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/ArmorStandEditorPlugin.java @@ -39,8 +39,7 @@ public class ArmorStandEditorPlugin extends JavaPlugin{ private Language lang; //Server Version Detection: Paper or Spigot and Invalid NMS Version - private boolean hasSpigot = false; - private boolean hasPaper = false; + public boolean hasSpigot = false; private String nmsVersion = null; private String nmsVersionNotLatest = ""; @@ -76,16 +75,6 @@ public void onEnable(){ getLogger().info("======= ArmorStandEditor ======="); getLogger().info("Plugin Version: " + plugin.getDescription().getVersion()); - //Paper Check - try { - Class.forName("com.destroystokyo.paper.PaperConfig"); - hasPaper = true; - nmsVersionNotLatest = "Paper ASAP. Load Continuing"; - } catch (ClassNotFoundException e){ - hasPaper = false; - } - getLogger().info("Paper: " + hasPaper); - //Spigot Check try { Class.forName("org.spigotmc.SpigotConfig"); From 8669043d7eb283c5384b671c3c0aae863b17d120 Mon Sep 17 00:00:00 2001 From: Github Date: Tue, 17 Aug 2021 14:08:16 +0200 Subject: [PATCH 079/369] [CORE] Fix Build Signed-off-by: Github --- .../rypofalem/armorstandeditor/ArmorStandEditorPlugin.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/ArmorStandEditorPlugin.java b/src/main/java/io/github/rypofalem/armorstandeditor/ArmorStandEditorPlugin.java index 59fde461..8f1020f0 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/ArmorStandEditorPlugin.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/ArmorStandEditorPlugin.java @@ -26,6 +26,7 @@ import org.bukkit.entity.Player; import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.meta.Damageable; +import org.bukkit.plugin.PluginDescriptionFile; import org.bukkit.plugin.java.JavaPlugin; import java.io.File; @@ -42,6 +43,7 @@ public class ArmorStandEditorPlugin extends JavaPlugin{ public boolean hasSpigot = false; private String nmsVersion = null; private String nmsVersionNotLatest = ""; + PluginDescriptionFile pdfFile = this.getDescription(); public PlayerEditorManager editorManager; @@ -73,7 +75,7 @@ public void onEnable(){ //Load Messages in Console getLogger().info("======= ArmorStandEditor ======="); - getLogger().info("Plugin Version: " + plugin.getDescription().getVersion()); + getLogger().info("Plugin Version: " + pdfFile.getVersion()); //Spigot Check try { From e56cd9142ab11605a23e934d9bc744cf6b2380a0 Mon Sep 17 00:00:00 2001 From: Github Date: Tue, 17 Aug 2021 14:21:27 +0200 Subject: [PATCH 080/369] [CORE] Typo when Enabling Plugin when detecting Minecraft Version Signed-off-by: Github --- .../rypofalem/armorstandeditor/ArmorStandEditorPlugin.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/ArmorStandEditorPlugin.java b/src/main/java/io/github/rypofalem/armorstandeditor/ArmorStandEditorPlugin.java index 8f1020f0..15d199e3 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/ArmorStandEditorPlugin.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/ArmorStandEditorPlugin.java @@ -107,7 +107,7 @@ public void onEnable(){ getLogger().warning("ArmorStandEditor will still work, but please update to the latest Version of " + nmsVersionNotLatest + ". Loading continuing."); setEnabled(true); } else { - getLogger().info("Minecraft Version: " + nmsVersion + "is supported. Loading continuing."); + getLogger().info("Minecraft Version: " + nmsVersion + " is supported. Loading continuing."); setEnabled(true); } getLogger().info("================================"); From bf3b1eba2a78b9c86e80c598913eedb785103418 Mon Sep 17 00:00:00 2001 From: Github Date: Tue, 17 Aug 2021 14:25:11 +0200 Subject: [PATCH 081/369] [CI-SKIP] Update Readme Files Signed-off-by: Github --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index be8fc8ab..3e24c031 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,6 @@ # ArmorStandEditor [![Build Status](https://github.com/Wolfst0rm/ArmorStandEditor/actions/workflows/maven-publish.yml/badge.svg)](https://github.com/Wolfst0rm/ArmorStandEditor/actions/workflows/maven-publish.yml) +[![wakatime](https://wakatime.com/badge/github/Wolfst0rm/ArmorStandEditor.svg)](https://wakatime.com/badge/github/Wolfst0rm/ArmorStandEditor) Bukkit plugin to allow players to edit armorstands without commands. From 78c04643c62a1118ff81f2fce23d2230ce35eb4e Mon Sep 17 00:00:00 2001 From: Github Date: Tue, 17 Aug 2021 14:56:19 +0200 Subject: [PATCH 082/369] [CORe] Fix Config so that Glowing Item Frames message comment is correct. Signed-off-by: Github --- src/main/resources/config.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml index fe4974cc..0cd51ea5 100644 --- a/src/main/resources/config.yml +++ b/src/main/resources/config.yml @@ -21,7 +21,7 @@ lang: en_US.yml #If false plugin notifications will be sent to the chat box. If true messages will be sent to the action bar. sendMessagesToActionBar: true -#(Optional) Glowing Item Frames Support for Item Frames in 1.17 and Higher - WILL NOT WORK IN 1.16 OR LOWER +#(Optional) Glowing Item Frames Support for Item Frames in 1.17 - WILL NOT WORK IN 1.16 OR LOWER AND 1.17.1 OR HIGHER #If true, players can make itemFrames glow by right clicking with a Glow Ink Sac glowingItemFrame: true From 5e07298bb243953830d70419fd639eeb6ed2635e Mon Sep 17 00:00:00 2001 From: Github Date: Wed, 18 Aug 2021 09:58:10 +0200 Subject: [PATCH 083/369] [CORE] Better Spigot / Paper / Forks detection. Fix toolType NullPointer - Should never be the case but if it is, then disable the plugin Signed-off-by: Github --- .../ArmorStandEditorPlugin.java | 39 +++++++++++++++---- .../armorstandeditor/PlayerEditor.java | 2 +- 2 files changed, 32 insertions(+), 9 deletions(-) diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/ArmorStandEditorPlugin.java b/src/main/java/io/github/rypofalem/armorstandeditor/ArmorStandEditorPlugin.java index 15d199e3..bcfa876d 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/ArmorStandEditorPlugin.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/ArmorStandEditorPlugin.java @@ -41,8 +41,9 @@ public class ArmorStandEditorPlugin extends JavaPlugin{ //Server Version Detection: Paper or Spigot and Invalid NMS Version public boolean hasSpigot = false; + public boolean hasPaper = false; private String nmsVersion = null; - private String nmsVersionNotLatest = ""; + private String nmsVersionNotLatest = null; PluginDescriptionFile pdfFile = this.getDescription(); public PlayerEditorManager editorManager; @@ -87,6 +88,23 @@ public void onEnable(){ } getLogger().info("SpigotMC: " + hasSpigot); + //Paper Check + try{ + Class.forName("com.destroystokyo.paper.PaperConfig"); + hasPaper = true; + nmsVersionNotLatest = "Paper ASAP. Load Continuing"; + } catch (ClassNotFoundException e){ + hasPaper = false; + } + getLogger().info("PaperMC: " + hasPaper); + + //If Paper and Spigot are both FALSE + if (!hasPaper && !hasSpigot){ + getLogger().severe("This plugin requires either Paper, Spigot or one of its forks to run"); + getServer().getPluginManager().disablePlugin(this); + return; + } + //Minimum Version Check - No Lower than 1.13. Will be tuned out in the future if ( nmsVersion.startsWith("v1_8") || nmsVersion.startsWith("v1_9") || @@ -94,7 +112,7 @@ public void onEnable(){ nmsVersion.startsWith("v1_11") || nmsVersion.startsWith("v1_12")){ getLogger().warning("Minecraft Version: " + nmsVersion + " is not supported. Loading Plugin Failed."); - setEnabled(false); + getServer().getPluginManager().disablePlugin(this); return; } @@ -105,10 +123,10 @@ public void onEnable(){ nmsVersion.startsWith("v1_16")){ getLogger().warning("Minecraft Version: " + nmsVersion + " is supported, but not latest."); getLogger().warning("ArmorStandEditor will still work, but please update to the latest Version of " + nmsVersionNotLatest + ". Loading continuing."); - setEnabled(true); + getServer().getPluginManager().enablePlugin(this); } else { getLogger().info("Minecraft Version: " + nmsVersion + " is supported. Loading continuing."); - setEnabled(true); + getServer().getPluginManager().enablePlugin(this); } getLogger().info("================================"); @@ -133,8 +151,13 @@ public void onEnable(){ //Set Tool to be used in game toolType = getConfig().getString("tool"); - - editTool = Material.getMaterial(toolType); //Ignore Warning + if (toolType != null) { + editTool = Material.getMaterial(toolType); //Ignore Warning + } else { + getLogger().severe("Unable to get Tool for Use with Plugin. Unable to continue!"); + getServer().getPluginManager().disablePlugin(this); + return; + } //Is there NBT Required for the tool requireToolData = getConfig().getBoolean("requireToolData", false); @@ -149,7 +172,7 @@ public void onEnable(){ editorManager = new PlayerEditorManager(this); execute = new CommandEx(this); - getCommand("ase").setExecutor(execute); + getCommand("ase").setExecutor(execute); //Ignore the warning with this. GetCommand is Nullable. Will be fixed in the future getServer().getPluginManager().registerEvents(editorManager, this); } @@ -204,7 +227,7 @@ public boolean isEditTool(ItemStack itemStk){ if(!itemStk.hasItemMeta()) { return false; } //Get the lore of the Item and if it is null - Return False - List itemLore = itemStk.getItemMeta().getLore(); //Ignore warnings this gives. getItemMeta is noted as NULLABLE + List itemLore = itemStk.getItemMeta().getLore(); //Ignore warnings this gives. Will be fixed in the future if (itemLore == null){ return false; } //If the Item does not have Lore - Return False diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditor.java b/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditor.java index 64d87b1a..fb69908a 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditor.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditor.java @@ -474,7 +474,7 @@ ArmorStand attemptTarget(ArmorStand armorStand) { void sendMessage(String path, String format, String option) { String message = plugin.getLang().getMessage(path, format, option); if (plugin.sendToActionBar) { - if (ArmorStandEditorPlugin.instance().hasSpigot) { + if (ArmorStandEditorPlugin.instance().hasSpigot || ArmorStandEditorPlugin.instance().hasPaper) { //Paper and Spigot having the same Interaction for sendToActionBar plugin.getServer().getPlayer(getUUID()).spigot().sendMessage(ChatMessageType.ACTION_BAR, new TextComponent(message)); } else { String rawText = plugin.getLang().getRawMessage(path, format, option); From d0f734923a66db7c7d9fab11a1980ef06fb0eb5a Mon Sep 17 00:00:00 2001 From: Github Date: Wed, 18 Aug 2021 10:06:26 +0200 Subject: [PATCH 084/369] [CORE] Tidy Up NMS Version Detection if Supported but not latest NMS Version Signed-off-by: Github --- .../armorstandeditor/ArmorStandEditorPlugin.java | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/ArmorStandEditorPlugin.java b/src/main/java/io/github/rypofalem/armorstandeditor/ArmorStandEditorPlugin.java index bcfa876d..bdf6fdaa 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/ArmorStandEditorPlugin.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/ArmorStandEditorPlugin.java @@ -82,7 +82,7 @@ public void onEnable(){ try { Class.forName("org.spigotmc.SpigotConfig"); hasSpigot = true; - nmsVersionNotLatest = "SpigotMC ASAP. Load Continuing"; + nmsVersionNotLatest = "SpigotMC ASAP"; } catch (ClassNotFoundException e){ hasSpigot = false; } @@ -92,13 +92,13 @@ public void onEnable(){ try{ Class.forName("com.destroystokyo.paper.PaperConfig"); hasPaper = true; - nmsVersionNotLatest = "Paper ASAP. Load Continuing"; + nmsVersionNotLatest = "Paper ASAP"; } catch (ClassNotFoundException e){ hasPaper = false; } getLogger().info("PaperMC: " + hasPaper); - //If Paper and Spigot are both FALSE + //If Paper and Spigot are both FALSE - Disable the plugin if (!hasPaper && !hasSpigot){ getLogger().severe("This plugin requires either Paper, Spigot or one of its forks to run"); getServer().getPluginManager().disablePlugin(this); @@ -123,11 +123,10 @@ public void onEnable(){ nmsVersion.startsWith("v1_16")){ getLogger().warning("Minecraft Version: " + nmsVersion + " is supported, but not latest."); getLogger().warning("ArmorStandEditor will still work, but please update to the latest Version of " + nmsVersionNotLatest + ". Loading continuing."); - getServer().getPluginManager().enablePlugin(this); } else { getLogger().info("Minecraft Version: " + nmsVersion + " is supported. Loading continuing."); - getServer().getPluginManager().enablePlugin(this); } + getServer().getPluginManager().enablePlugin(this); getLogger().info("================================"); //saveResource doesn't accept File.separator on windows, need to hardcode unix separator "/" instead From cadfe09aae823a00db29847c24b89aaf6df6bec0 Mon Sep 17 00:00:00 2001 From: Wolfstorm Date: Wed, 18 Aug 2021 20:25:31 +0200 Subject: [PATCH 085/369] [CORE] Tidy up Imports and fix NULL Issue when running Reload Command Signed-off-by: Wolfstorm Signed-off-by: Wolfstorm --- .gitignore | 1 + src/main/java/META-INF/MANIFEST.MF | 2 ++ .../java/io/github/rypofalem/armorstandeditor/CommandEx.java | 2 +- .../java/io/github/rypofalem/armorstandeditor/PlayerEditor.java | 1 - 4 files changed, 4 insertions(+), 2 deletions(-) create mode 100644 src/main/java/META-INF/MANIFEST.MF diff --git a/.gitignore b/.gitignore index 323ea198..6016180e 100644 --- a/.gitignore +++ b/.gitignore @@ -4,3 +4,4 @@ target/ /bin/ /.project /.classpath +/src/main/java/META-INF/ diff --git a/src/main/java/META-INF/MANIFEST.MF b/src/main/java/META-INF/MANIFEST.MF new file mode 100644 index 00000000..59499bce --- /dev/null +++ b/src/main/java/META-INF/MANIFEST.MF @@ -0,0 +1,2 @@ +Manifest-Version: 1.0 + diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/CommandEx.java b/src/main/java/io/github/rypofalem/armorstandeditor/CommandEx.java index 22d41cba..638355c1 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/CommandEx.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/CommandEx.java @@ -109,7 +109,7 @@ private void commandReload(Player player, String[] args){ if(!(checkPermission(player, "reload", true))) return; //Basic sanity Check for Reload Permission! if(args.length > 0 ){ // Check the Length of Args. If > 0 then pass noReload - player.sendMessage(plugin.getLang().getMessage("noreload", "warn")); + player.sendMessage(plugin.getLang().getMessage("noreloadcom", "warn")); player.sendMessage(RELOAD); } else { // else if = 0 then get do one final check on the permission diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditor.java b/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditor.java index fb69908a..442da810 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditor.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditor.java @@ -34,7 +34,6 @@ import net.md_5.bungee.api.chat.TextComponent; import org.bukkit.*; import org.bukkit.entity.ArmorStand; -import org.bukkit.entity.Item; import org.bukkit.entity.ItemFrame; import org.bukkit.entity.Player; import org.bukkit.inventory.EquipmentSlot; From af939d61d3b16a10fae741aa1ca938ec46ed9e2b Mon Sep 17 00:00:00 2001 From: Wolfstorm Date: Wed, 18 Aug 2021 21:10:44 +0200 Subject: [PATCH 086/369] [CORE] Reload Command Fixes following Debugging: - Mostly on L121 to L124: Load, Save, Reload Signed-off-by: Wolfstorm --- .../rypofalem/armorstandeditor/CommandEx.java | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/CommandEx.java b/src/main/java/io/github/rypofalem/armorstandeditor/CommandEx.java index 638355c1..0e6b121f 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/CommandEx.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/CommandEx.java @@ -107,19 +107,20 @@ && checkPermission((Player) sender, "basic", true))) { //Reload Command Now Expanded Upon. private void commandReload(Player player, String[] args){ if(!(checkPermission(player, "reload", true))) return; //Basic sanity Check for Reload Permission! - if(args.length > 0 ){ + if(args.length < 1 ){ // Check the Length of Args. If > 0 then pass noReload player.sendMessage(plugin.getLang().getMessage("noreloadcom", "warn")); player.sendMessage(RELOAD); } else { // else if = 0 then get do one final check on the permission - DateTimeFormatter format = DateTimeFormatter.ofPattern("EEEE, dd MMMM yyyy HH:mm:ss.aa"); + DateTimeFormatter format = DateTimeFormatter.ofPattern("EEEE, dd MMMM yyyy HH:mm:ss"); if (checkPermission(player, "reload", true)) { // if permission true then run Reload and Load all the Values, Message that it has been reloaded successfully. Log to Console, Reload on DateTime by Player - plugin.reloadConfig(); this.loadConfig(); + plugin.saveConfig(); + plugin.reloadConfig(); player.sendMessage(plugin.getLang().getMessage("reloaded", "info")); plugin.log("Configuration File has reloaded on "+ now.format(format) + " by " + player.getName() + ""); } @@ -128,12 +129,19 @@ private void commandReload(Player player, String[] args){ //Potential to add Validation In Here SOMEHOW? TO Validate that the file is good in that regard. private void loadConfig(){ - //Get all the Changes + //Get all the Changes - Not accepting changes without a FULL RELOAD coarseRot = plugin.getConfig().getDouble("coarse"); fineRot = plugin.getConfig().getDouble("fine"); + //Set Tool to be used in game toolType = plugin.getConfig().getString("tool"); - editTool = Material.getMaterial(toolType); + if (toolType != null) { + editTool = Material.getMaterial(toolType); //Ignore Warning + } else { + plugin.getLogger().severe("Unable to get Tool for Use with Plugin. Unable to continue!"); + plugin.getServer().getPluginManager().disablePlugin(plugin); + return; + } requireToolData = plugin.getConfig().getBoolean("requireToolData", false); if(requireToolData) editToolData = plugin.getConfig().getInt("toolData", Integer.MIN_VALUE); @@ -143,6 +151,7 @@ private void loadConfig(){ debug = plugin.getConfig().getBoolean("debug", true); sendToActionBar = plugin.getConfig().getBoolean("sendMessagesToActionBar", true); glowItemFrames = plugin.getConfig().getBoolean("glowingItemFrame", true); + } From 197f1f89532c07c4232b7317a4f2726b04d59e45 Mon Sep 17 00:00:00 2001 From: Wolfstorm Date: Thu, 19 Aug 2021 22:19:51 +0200 Subject: [PATCH 087/369] [CORE] Fix for Wolfst0rm/ArmorStandEditor-Issues#2: Fixes wrong message being used when looking at an ArmorStand and an ItemFrame. Also warns when looking at both and correctly unlocks when not looking at either. Props to miknes123 for all the work helping me debug this! Comment Out Reload Logic - Not Production Ready at this Stage. Signed-off-by: Wolfstorm --- .gitignore | 1 + .../rypofalem/armorstandeditor/CommandEx.java | 8 +- .../armorstandeditor/PlayerEditor.java | 83 ++++++++++--------- .../armorstandeditor/PlayerEditorManager.java | 62 +++++++++----- src/main/resources/lang/de_DE.yml | 6 ++ src/main/resources/lang/en_US.yml | 2 + src/main/resources/lang/es_ES.yml | 6 ++ src/main/resources/lang/fr_FR.yml | 6 ++ src/main/resources/lang/ja_JP.yml | 6 ++ src/main/resources/lang/nl_NL.yml | 8 ++ src/main/resources/lang/pl_PL.yml | 6 ++ 11 files changed, 130 insertions(+), 64 deletions(-) diff --git a/.gitignore b/.gitignore index 6016180e..e094a13a 100644 --- a/.gitignore +++ b/.gitignore @@ -5,3 +5,4 @@ target/ /.project /.classpath /src/main/java/META-INF/ +/.settings/ diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/CommandEx.java b/src/main/java/io/github/rypofalem/armorstandeditor/CommandEx.java index 0e6b121f..b3985aa2 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/CommandEx.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/CommandEx.java @@ -88,8 +88,8 @@ && checkPermission((Player) sender, "basic", true))) { break; case "slot": commandSlot(player, args); break; - case "reload": commandReload(player, args); - break; + /*case "reload": commandReload(player, args); + break;*/ case "help": case "?": commandHelp(player); break; @@ -105,7 +105,7 @@ && checkPermission((Player) sender, "basic", true))) { } //Reload Command Now Expanded Upon. - private void commandReload(Player player, String[] args){ +/* private void commandReload(Player player, String[] args){ if(!(checkPermission(player, "reload", true))) return; //Basic sanity Check for Reload Permission! if(args.length < 1 ){ // Check the Length of Args. If > 0 then pass noReload @@ -152,7 +152,7 @@ private void loadConfig(){ sendToActionBar = plugin.getConfig().getBoolean("sendMessagesToActionBar", true); glowItemFrames = plugin.getConfig().getBoolean("glowingItemFrame", true); - } + }*/ private void commandSlot(Player player, String[] args) { diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditor.java b/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditor.java index 442da810..52fb6690 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditor.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditor.java @@ -181,7 +181,7 @@ public void editItemFrame(ItemFrame itemFrame) { break; } } - + private void resetPosition(ArmorStand armorStand) { armorStand.setHeadPose(new EulerAngle(0, 0, 0)); armorStand.setBodyPose(new EulerAngle(0, 0, 0)); @@ -192,7 +192,7 @@ private void resetPosition(ArmorStand armorStand) { } private void openEquipment(ArmorStand armorStand) { - if(!getPlayer().hasPermission("asedit.equipment")) return; + if (!getPlayer().hasPermission("asedit.equipment")) return; equipMenu = new EquipmentMenu(this, armorStand); equipMenu.open(); } @@ -308,7 +308,7 @@ private void paste(ArmorStand armorStand) { } private void toggleDisableSlots(ArmorStand armorStand) { - if(!getPlayer().hasPermission("asedit.equipment")) return; + if (!getPlayer().hasPermission("asedit.equipment")) return; if (armorStand.hasEquipmentLock(EquipmentSlot.HAND, ArmorStand.LockType.REMOVING_OR_CHANGING)) { //Adds a lock to every slot or removes it for (final EquipmentSlot slot : EquipmentSlot.values()) { armorStand.removeEquipmentLock(slot, ArmorStand.LockType.REMOVING_OR_CHANGING); @@ -343,6 +343,7 @@ void toggleVisible(ArmorStand armorStand) { if (!getPlayer().hasPermission("asedit.invisible")) return; armorStand.setVisible(!armorStand.isVisible()); } + void toggleItemFrameVisible(ItemFrame itemFrame) { if (!getPlayer().hasPermission("asedit.basic")) return; //Change to be asedit.invisible? //Potential for OnInteractEvent for ItemFrame to Disable Interaction @@ -402,63 +403,71 @@ public void setTarget(ArrayList armorStands) { target = null; targetList = null; sendMessage("notarget", null); - return; - } - - if (targetList == null) { - targetList = armorStands; - targetIndex = 0; - sendMessage("target", null); + //plugin.getServer().getLogger().info("ArmorStand Target Unlocked"); } else { - boolean same = targetList.size() == armorStands.size(); - if (same) for (ArmorStand as : armorStands) { - same = targetList.contains(as); - if (!same) break; - } - if (same) { - targetIndex = ++targetIndex % targetList.size(); - } else { + if (targetList == null) { targetList = armorStands; targetIndex = 0; sendMessage("target", null); + //plugin.getServer().getLogger().info("ArmorStand Target Locked"); + } else { + boolean same = targetList.size() == armorStands.size(); + if (same) for (ArmorStand as : armorStands) { + same = targetList.contains(as); + if (!same) break; + } + + if (same) { + targetIndex = ++targetIndex % targetList.size(); + } else { + targetList = armorStands; + targetIndex = 0; + sendMessage("target", null); + //plugin.getServer().getLogger().info("ArmorStand Target Locked"); + } } + target = targetList.get(targetIndex); + highlight(target); } - target = targetList.get(targetIndex); - highlight(target); } - public void setFrameTarget(final ArrayList itemFrames) { + + public void setFrameTarget(ArrayList itemFrames) { if (itemFrames == null || itemFrames.isEmpty()) { frameTarget = null; frameTargetList = null; sendMessage("noframetarget", null); - return; - } - - if (frameTargetList == null) { - frameTargetList = itemFrames; - frameTargetIndex = 0; - sendMessage("target", null); + //plugin.getServer().getLogger().info("ItemFrame Target Unlocked"); } else { - boolean same = frameTargetList.size() == itemFrames.size(); - if (same) for (final ItemFrame itemf : itemFrames) { - same = frameTargetList.contains(itemf); - if (!same) break; - } - if (same) { - frameTargetIndex = ++frameTargetIndex % frameTargetList.size(); - } else { + if (frameTargetList == null) { frameTargetList = itemFrames; frameTargetIndex = 0; sendMessage("frametarget", null); + //plugin.getServer().getLogger().info("ItemFrame Target Un;ocked"); + } else { + boolean same = frameTargetList.size() == itemFrames.size(); + if (same) for (final ItemFrame itemf : itemFrames) { + same = frameTargetList.contains(itemf); + if (!same) break; + } + + if (same) { + frameTargetIndex = ++frameTargetIndex % frameTargetList.size(); + } else { + frameTargetList = itemFrames; + frameTargetIndex = 0; + sendMessage("frametarget", null); + //plugin.getServer().getLogger().info("ItemFrame Target Locked"); + } + frameTarget = frameTargetList.get(frameTargetIndex); } - frameTarget = frameTargetList.get(frameTargetIndex); } } + ArmorStand attemptTarget(ArmorStand armorStand) { if (target == null || !target.isValid() diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditorManager.java b/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditorManager.java index d4372bd3..7fd2ed85 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditorManager.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditorManager.java @@ -51,6 +51,8 @@ public class PlayerEditorManager implements Listener { double fineMov; private boolean ignoreNextInteract = false; private TickCounter counter; + private ArrayList as = null; + private ArrayList itemF = null; PlayerEditorManager( ArmorStandEditorPlugin plugin) { @@ -185,28 +187,42 @@ void onArmorStandInteract( PlayerInteractAtEntityEvent event) { } @EventHandler(priority = EventPriority.LOW, ignoreCancelled = true) - public void onSwitchHands( PlayerSwapHandItemsEvent event) { + public void onSwitchHands(PlayerSwapHandItemsEvent event) { if (!plugin.isEditTool(event.getOffHandItem())) return; //event assumes they are already switched event.setCancelled(true); - Player player = event.getPlayer(); - getPlayerEditor(event.getPlayer().getUniqueId()).setTarget(getTargets(player)); - getPlayerEditor(event.getPlayer().getUniqueId()).setFrameTarget(getFrameTargets(player)); + Player player = event.getPlayer(); + + as = getTargets(player); //Get All ArmorStand closest to player + itemF = getFrameTargets(player); //Get ItemFrame Closest to Player + + //Check + if(!(as.isEmpty()) && itemF.isEmpty()) { + getPlayerEditor(event.getPlayer().getUniqueId()).setTarget(as); + } else if(!(itemF.isEmpty()) && as.isEmpty()) { + getPlayerEditor(event.getPlayer().getUniqueId()).setFrameTarget(itemF); + } else if (!(itemF.isEmpty()) && !(as.isEmpty())) { + getPlayerEditor(event.getPlayer().getUniqueId()).sendMessage("doubletarget", "warn"); + } else { + getPlayerEditor(event.getPlayer().getUniqueId()).setTarget(null); + getPlayerEditor(event.getPlayer().getUniqueId()).setFrameTarget(null); + } + } - private ArrayList getTargets( Player player) { - Location eyeLaser = player.getEyeLocation(); - Vector direction = player.getLocation().getDirection(); - ArrayList armorStands = new ArrayList<>(); + private ArrayList getTargets(Player player) { + Location eyeLaser = player.getEyeLocation(); + Vector direction = player.getLocation().getDirection(); + ArrayList armorStands = new ArrayList<>(); - double STEPSIZE = .5; - Vector STEP = direction.multiply(STEPSIZE); - double RANGE = 10; - double LASERRADIUS = .3; - List nearbyEntities = player.getNearbyEntities(RANGE, RANGE, RANGE); + double STEPSIZE = .5; + Vector STEP = direction.multiply(STEPSIZE); + double RANGE = 10; + double LASERRADIUS = .3; + List nearbyEntities = player.getNearbyEntities(RANGE, RANGE, RANGE); if (nearbyEntities.isEmpty()) return null; for (double i = 0; i < RANGE; i += STEPSIZE) { - List nearby = (List) player.getWorld().getNearbyEntities(eyeLaser, LASERRADIUS, LASERRADIUS, LASERRADIUS); + List nearby = (List) player.getWorld().getNearbyEntities(eyeLaser, LASERRADIUS, LASERRADIUS, LASERRADIUS); if (!nearby.isEmpty()) { boolean endLaser = false; for ( Entity e : nearby) { @@ -225,16 +241,16 @@ private ArrayList getTargets( Player player) { return armorStands; } - private ArrayList getFrameTargets( Player player) { - Location eyeLaser = player.getEyeLocation(); - Vector direction = player.getLocation().getDirection(); - ArrayList itemFrames = new ArrayList<>(); + private ArrayList getFrameTargets(Player player) { + Location eyeLaser = player.getEyeLocation(); + Vector direction = player.getLocation().getDirection(); + ArrayList itemFrames = new ArrayList<>(); - double STEPSIZE = .5; - Vector STEP = direction.multiply(STEPSIZE); - double RANGE = 10; - double LASERRADIUS = .3; - List nearbyEntities = player.getNearbyEntities(RANGE, RANGE, RANGE); + double STEPSIZE = .5; + Vector STEP = direction.multiply(STEPSIZE); + double RANGE = 10; + double LASERRADIUS = .3; + List nearbyEntities = player.getNearbyEntities(RANGE, RANGE, RANGE); if (nearbyEntities.isEmpty()) return null; for (double i = 0; i < RANGE; i += STEPSIZE) { diff --git a/src/main/resources/lang/de_DE.yml b/src/main/resources/lang/de_DE.yml index a27bf7c6..3a7c2670 100644 --- a/src/main/resources/lang/de_DE.yml +++ b/src/main/resources/lang/de_DE.yml @@ -55,6 +55,12 @@ target: msg: Ziel Ruestungsstaender wurde gesperrt. notarget: msg: Ziel Ruestungsstaender wurde entsperrt. +frametarget: + msg: Itemframe target locked +noframetarget: + msg: Itemframe target unlocked. +doubletarget: + msg: Please look at either an ArmorStand or an ItemFrame, not both! help: msg: "1. Halte das Bearbeitungswerkzeug() in deiner Haupthand. diff --git a/src/main/resources/lang/en_US.yml b/src/main/resources/lang/en_US.yml index 9af0dea0..e1877a4e 100644 --- a/src/main/resources/lang/en_US.yml +++ b/src/main/resources/lang/en_US.yml @@ -64,6 +64,8 @@ frametarget: msg: Itemframe target locked noframetarget: msg: Itemframe target unlocked. +doubletarget: + msg: Please look at either an ArmorStand or an ItemFrame, not both! reloaded: msg: Configuration File has been reloaded. help: diff --git a/src/main/resources/lang/es_ES.yml b/src/main/resources/lang/es_ES.yml index 9ae6483a..455b34cd 100644 --- a/src/main/resources/lang/es_ES.yml +++ b/src/main/resources/lang/es_ES.yml @@ -52,6 +52,12 @@ target: msg: Soporte de armaduras bloqueado. notarget: msg: Soporte de armaduras desbloqueado. +frametarget: + msg: Itemframe target locked +noframetarget: + msg: Itemframe target unlocked. +doubletarget: + msg: Please look at either an ArmorStand or an ItemFrame, not both! help: msg: "1. Manten la herramienta de edición () en tu mano principal. diff --git a/src/main/resources/lang/fr_FR.yml b/src/main/resources/lang/fr_FR.yml index 53d7d188..ec020ede 100644 --- a/src/main/resources/lang/fr_FR.yml +++ b/src/main/resources/lang/fr_FR.yml @@ -54,6 +54,12 @@ target: msg: Valet cible verrouillé. notarget: msg: Valet cible déverrouillé. +frametarget: + msg: Itemframe target locked +noframetarget: + msg: Itemframe target unlocked. +doubletarget: + msg: Please look at either an ArmorStand or an ItemFrame, not both! help: msg: "1. Tenez l'outil d'édition () dans votre main principale. diff --git a/src/main/resources/lang/ja_JP.yml b/src/main/resources/lang/ja_JP.yml index 129f68a0..d5f299d6 100644 --- a/src/main/resources/lang/ja_JP.yml +++ b/src/main/resources/lang/ja_JP.yml @@ -55,6 +55,12 @@ target: msg: アーマースタンドの編集対象を保持しました。 notarget: msg: アーマースタンドの編集対象を保持していません。 +frametarget: + msg: Itemframe target locked +noframetarget: + msg: Itemframe target unlocked. +doubletarget: + msg: Please look at either an ArmorStand or an ItemFrame, not both! help: msg: "1. 編集ツール()を手に持ちます。 diff --git a/src/main/resources/lang/nl_NL.yml b/src/main/resources/lang/nl_NL.yml index 284b9934..cb7e8b37 100644 --- a/src/main/resources/lang/nl_NL.yml +++ b/src/main/resources/lang/nl_NL.yml @@ -51,6 +51,14 @@ copied: msg: Armorstand status gekopieerd naar slot . pasted: msg: Armorstand status geplakt vanuit slot . +notarget: + msg: ArmorStand target unlocked. +frametarget: + msg: Itemframe target locked +noframetarget: + msg: Itemframe target unlocked. +doubletarget: + msg: Please look at either an ArmorStand or an ItemFrame, not both! #warn cantedit: diff --git a/src/main/resources/lang/pl_PL.yml b/src/main/resources/lang/pl_PL.yml index c7b4fcb2..885f0e4f 100644 --- a/src/main/resources/lang/pl_PL.yml +++ b/src/main/resources/lang/pl_PL.yml @@ -54,6 +54,12 @@ target: msg: Zablokowano cel. notarget: msg: Odblokowano cel. +frametarget: + msg: Itemframe target locked +noframetarget: + msg: Itemframe target unlocked. +doubletarget: + msg: Please look at either an ArmorStand or an ItemFrame, not both! help: msg: "1. Trzymaj narzędzie edycji (). From 3d2865d80e6a50848bc96d23e405c168efbd331a Mon Sep 17 00:00:00 2001 From: Wolfstorm Date: Thu, 19 Aug 2021 22:19:51 +0200 Subject: [PATCH 088/369] [CORE] Fix for Wolfst0rm/ArmorStandEditor-Issues#2: Fixes wrong message being used when looking at an ArmorStand and an ItemFrame. Also warns when looking at both and correctly unlocks when not looking at either. Props to miknes123 for all the work helping me debug this! Comment Out Reload Logic - Not Production Ready at this Stage. Signed-off-by: Wolfstorm --- .../armorstandeditor/PlayerEditorManager.java | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditorManager.java b/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditorManager.java index 7fd2ed85..7990add8 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditorManager.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditorManager.java @@ -197,14 +197,14 @@ public void onSwitchHands(PlayerSwapHandItemsEvent event) { //Check if(!(as.isEmpty()) && itemF.isEmpty()) { - getPlayerEditor(event.getPlayer().getUniqueId()).setTarget(as); + getPlayerEditor(player.getUniqueId()).setTarget(as); } else if(!(itemF.isEmpty()) && as.isEmpty()) { - getPlayerEditor(event.getPlayer().getUniqueId()).setFrameTarget(itemF); + getPlayerEditor(player.getUniqueId()).setFrameTarget(itemF); } else if (!(itemF.isEmpty()) && !(as.isEmpty())) { - getPlayerEditor(event.getPlayer().getUniqueId()).sendMessage("doubletarget", "warn"); + getPlayerEditor(player.getUniqueId()).sendMessage("doubletarget", "warn"); } else { - getPlayerEditor(event.getPlayer().getUniqueId()).setTarget(null); - getPlayerEditor(event.getPlayer().getUniqueId()).setFrameTarget(null); + getPlayerEditor(player.getUniqueId()).setTarget(null); + getPlayerEditor(player.getUniqueId()).setFrameTarget(null); } } From 7b3defe7defc9cd2aaed7da0e63c8e0b28006eed Mon Sep 17 00:00:00 2001 From: Github Date: Fri, 20 Aug 2021 11:27:00 +0200 Subject: [PATCH 089/369] [CORE] Move ItemFrame Visibility setting to asedit.invisible permission node. Update description for asedit.invisible. Remove asedit.reload from this version and specify that its for a later update. Signed-off-by: Github --- .../github/rypofalem/armorstandeditor/PlayerEditor.java | 2 +- src/main/resources/plugin.yml | 9 +++++---- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditor.java b/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditor.java index 52fb6690..96e80124 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditor.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditor.java @@ -345,7 +345,7 @@ void toggleVisible(ArmorStand armorStand) { } void toggleItemFrameVisible(ItemFrame itemFrame) { - if (!getPlayer().hasPermission("asedit.basic")) return; //Change to be asedit.invisible? + if (!getPlayer().hasPermission("asedit.invisble")) return; //Changed to Invisible, better that visibility is all under same permission node //Potential for OnInteractEvent for ItemFrame to Disable Interaction itemFrame.setVisible(!itemFrame.isVisible()); } diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index 69fc6d55..7c386898 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -16,7 +16,7 @@ permissions: description: Allow use armorstand edit functions. If set to false it will override all other functions. default: true asedit.invisible: - description: Toggle armorstand visible/invisible. + description: Toggles ArmorStand and ItemFrame visibility. default: true asedit.rename: description: Rename armorstands @@ -24,6 +24,7 @@ permissions: asedit.equipment: description: Access armorstand equipment GUI default: true - asedit.reload: - description: Reload Configs for ArmorStandEditor - default: false \ No newline at end of file +# NOT CURRENTLY IN USE! Coming in a future update +# asedit.reload: +# description: Reload Configs for ArmorStandEditor +# default: false \ No newline at end of file From 4cddaf324b714135e1906af95b07836dc6197bd6 Mon Sep 17 00:00:00 2001 From: Github Date: Thu, 26 Aug 2021 16:15:09 +0200 Subject: [PATCH 090/369] [CORE] Version Bump 1.17-30 Signed-off-by: Github --- pom.xml | 2 +- src/main/resources/plugin.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/pom.xml b/pom.xml index 6f247d35..4cdc5fa4 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ io.github.rypofalem.armorstandeditor armorstandeditor jar - 1.17-29 + 1.17-30 armorstandeditor http://maven.apache.org diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index 7c386898..a5e1360e 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -1,6 +1,6 @@ name: ArmorStandEditor main: io.github.rypofalem.armorstandeditor.ArmorStandEditorPlugin -version: 1.17-29 +version: 1.17-30 api-version: "1.13" website: rypofalem.github.io author: Wolfstorm From 27ad25bb810e2c2a22f28af84f287cf43d722fa2 Mon Sep 17 00:00:00 2001 From: Wolfstorm Date: Sat, 28 Aug 2021 12:15:29 +0200 Subject: [PATCH 091/369] [CORE] Hotfix for Permission Node for ItemFrame Visibility not being set properly Signed-off-by: Wolfstorm Signed-off-by: Wolfstorm --- pom.xml | 2 +- .../java/io/github/rypofalem/armorstandeditor/PlayerEditor.java | 2 +- src/main/resources/plugin.yml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/pom.xml b/pom.xml index 4cdc5fa4..e0ebd4fa 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ io.github.rypofalem.armorstandeditor armorstandeditor jar - 1.17-30 + 1.17-29.1 armorstandeditor http://maven.apache.org diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditor.java b/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditor.java index 96e80124..228c2786 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditor.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditor.java @@ -345,7 +345,7 @@ void toggleVisible(ArmorStand armorStand) { } void toggleItemFrameVisible(ItemFrame itemFrame) { - if (!getPlayer().hasPermission("asedit.invisble")) return; //Changed to Invisible, better that visibility is all under same permission node + if (!getPlayer().hasPermission("asedit.invisible")) return; //Changed to Invisible, better that visibility is all under same permission node //Potential for OnInteractEvent for ItemFrame to Disable Interaction itemFrame.setVisible(!itemFrame.isVisible()); } diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index a5e1360e..d1c6d46f 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -1,6 +1,6 @@ name: ArmorStandEditor main: io.github.rypofalem.armorstandeditor.ArmorStandEditorPlugin -version: 1.17-30 +version: 1.17-29.1 api-version: "1.13" website: rypofalem.github.io author: Wolfstorm From 5449d364707145add2595f91d1082608d2e32460 Mon Sep 17 00:00:00 2001 From: Wolfstorm Date: Sat, 28 Aug 2021 12:23:30 +0200 Subject: [PATCH 092/369] [CORE] Version Bump: 1.17.1-30 Signed-off-by: Wolfstorm Signed-off-by: Wolfstorm --- pom.xml | 2 +- src/main/resources/plugin.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/pom.xml b/pom.xml index e0ebd4fa..4cdc5fa4 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ io.github.rypofalem.armorstandeditor armorstandeditor jar - 1.17-29.1 + 1.17-30 armorstandeditor http://maven.apache.org diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index d1c6d46f..a5e1360e 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -1,6 +1,6 @@ name: ArmorStandEditor main: io.github.rypofalem.armorstandeditor.ArmorStandEditorPlugin -version: 1.17-29.1 +version: 1.17-30 api-version: "1.13" website: rypofalem.github.io author: Wolfstorm From a29d009dd0ab6c1f08c658782765ac1e54891258 Mon Sep 17 00:00:00 2001 From: Wolfstorm Date: Sat, 28 Aug 2021 12:23:30 +0200 Subject: [PATCH 093/369] [CORE] Version Bump: 1.17.1-30 Signed-off-by: Wolfstorm Signed-off-by: Wolfstorm --- pom.xml | 2 +- src/main/resources/plugin.yml | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/pom.xml b/pom.xml index e0ebd4fa..4cdc5fa4 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ io.github.rypofalem.armorstandeditor armorstandeditor jar - 1.17-29.1 + 1.17-30 armorstandeditor http://maven.apache.org diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index d1c6d46f..dea54545 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -1,10 +1,10 @@ name: ArmorStandEditor main: io.github.rypofalem.armorstandeditor.ArmorStandEditorPlugin -version: 1.17-29.1 +version: 1.17-30 api-version: "1.13" website: rypofalem.github.io author: Wolfstorm -authors: [Wolfstorm, Marfjeh, sekwah41, Sikatsu1997, Cool_boy, sumdream, Amaury Carrade, nicuch, kotarobo, prettydude, Jumpy91, Niasio, Patbox, Puremin0rez, Prof-Bloodstone] +authors: [Wolfstorm, Marfjeh, rypofalem, sekwah41, Sikatsu1997, Cool_boy, sumdream, Amaury Carrade, nicuch, kotarobo, prettydude, Jumpy91, Niasio, Patbox, Puremin0rez, Prof-Bloodstone] description: Allows players to edit data of armorstands without any commands. commands: ase: From a52271dd1b23507ea803d52a81b6b4216cd23d4c Mon Sep 17 00:00:00 2001 From: Wolfstorm Date: Mon, 30 Aug 2021 08:24:17 +0200 Subject: [PATCH 094/369] [CORE] Wolfst0rm/ArmorStandEditor-Issues#5: Add DisableSlots Permission and Fix for Invisible ItemFrame issue in Menu Signed-off-by: Github --- .../java/io/github/rypofalem/armorstandeditor/CommandEx.java | 2 +- .../io/github/rypofalem/armorstandeditor/PlayerEditor.java | 2 +- .../java/io/github/rypofalem/armorstandeditor/menu/Menu.java | 2 +- src/main/resources/plugin.yml | 3 +++ 4 files changed, 6 insertions(+), 3 deletions(-) diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/CommandEx.java b/src/main/java/io/github/rypofalem/armorstandeditor/CommandEx.java index b3985aa2..d9ea9be3 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/CommandEx.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/CommandEx.java @@ -221,7 +221,7 @@ private void commandMode( Player player, String[] args) { for ( EditMode mode : EditMode.values()) { if (mode.toString().toLowerCase().contentEquals(args[1].toLowerCase())) { if (args[1].equals("invisible") && !checkPermission(player, "invisible", true)) return; - if (args[1].equals("itemframe") && !checkPermission(player, "basic", true)) return; + if (args[1].equals("itemframe") && !checkPermission(player, "invisible", true)) return; plugin.editorManager.getPlayerEditor(player.getUniqueId()).setMode(mode); return; } diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditor.java b/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditor.java index 228c2786..df2ce84f 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditor.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditor.java @@ -308,7 +308,7 @@ private void paste(ArmorStand armorStand) { } private void toggleDisableSlots(ArmorStand armorStand) { - if (!getPlayer().hasPermission("asedit.equipment")) return; + if (!getPlayer().hasPermission("asedit.disableSlots")) return; if (armorStand.hasEquipmentLock(EquipmentSlot.HAND, ArmorStand.LockType.REMOVING_OR_CHANGING)) { //Adds a lock to every slot or removes it for (final EquipmentSlot slot : EquipmentSlot.values()) { armorStand.removeEquipmentLock(slot, ArmorStand.LockType.REMOVING_OR_CHANGING); diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/menu/Menu.java b/src/main/java/io/github/rypofalem/armorstandeditor/menu/Menu.java index 99927c00..0ceb427a 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/menu/Menu.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/menu/Menu.java @@ -130,7 +130,7 @@ private void fillInventory() { visibility = createIcon(visibility, "invisible", "mode invisible"); } - if (pe.getPlayer().hasPermission("asedit.basic")) { + if (pe.getPlayer().hasPermission("asedit.invisible")) { itemFrameVisible = new ItemStack(Material.ITEM_FRAME, 1); itemFrameVisible = createIcon(itemFrameVisible, "itemframevisible", "mode itemframe"); } diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index dea54545..7ebb1d89 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -24,6 +24,9 @@ permissions: asedit.equipment: description: Access armorstand equipment GUI default: true + asedit.disableslots: + description: Lock/Unlock contents of an ArmorStand. Prevents adding, changing and removing of items from ArmorStand. + default: true # NOT CURRENTLY IN USE! Coming in a future update # asedit.reload: # description: Reload Configs for ArmorStandEditor From 67b1e8b45f8572b245883dfe960642f4229f79d0 Mon Sep 17 00:00:00 2001 From: Github Date: Mon, 30 Aug 2021 10:31:00 +0200 Subject: [PATCH 095/369] [CORE] Wolfst0rm/ArmorStandEditor-Issues#5: Implementation using Teams/Scoreboards for glowing entities Register Teams for Scoreboards on Load of Plugin. Unregister Teams for Scoreboards when disabled. Signed-off-by: Github --- .../ArmorStandEditorPlugin.java | 36 +++++++++++++++++++ .../armorstandeditor/PlayerEditor.java | 20 ++++++++++- 2 files changed, 55 insertions(+), 1 deletion(-) diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/ArmorStandEditorPlugin.java b/src/main/java/io/github/rypofalem/armorstandeditor/ArmorStandEditorPlugin.java index bdf6fdaa..a5029a45 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/ArmorStandEditorPlugin.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/ArmorStandEditorPlugin.java @@ -21,6 +21,7 @@ import io.github.rypofalem.armorstandeditor.language.Language; import org.bukkit.Bukkit; +import org.bukkit.ChatColor; import org.bukkit.Material; import org.bukkit.NamespacedKey; import org.bukkit.entity.Player; @@ -28,6 +29,8 @@ import org.bukkit.inventory.meta.Damageable; import org.bukkit.plugin.PluginDescriptionFile; import org.bukkit.plugin.java.JavaPlugin; +import org.bukkit.scoreboard.Scoreboard; +import org.bukkit.scoreboard.Team; import java.io.File; import java.util.List; @@ -60,9 +63,15 @@ public class ArmorStandEditorPlugin extends JavaPlugin{ double fineRot; boolean glowItemFrames; + //Glow Entity Colors + public Scoreboard scoreboard; + public Team team; + private static ArmorStandEditorPlugin plugin; + + public ArmorStandEditorPlugin(){ instance = this; } @@ -71,6 +80,8 @@ public ArmorStandEditorPlugin(){ @Override public void onEnable(){ + registerScoreboards(); + //Get NMS Version nmsVersion = getServer().getClass().getPackage().getName().replace(".",",").split(",")[3]; @@ -175,6 +186,29 @@ public void onEnable(){ getServer().getPluginManager().registerEvents(editorManager, this); } + private void registerScoreboards() { + scoreboard = this.getServer().getScoreboardManager().getMainScoreboard(); + + scoreboard.registerNewTeam("ArmorStandLocked"); + scoreboard.getTeam("ArmorStandLocked").setColor(ChatColor.GRAY); + + scoreboard.registerNewTeam("ArmorStandTargeted"); + scoreboard.getTeam("ArmorStandTargeted").setColor(ChatColor.WHITE); + } + + private void unregisterScoreboards() { + scoreboard = this.getServer().getScoreboardManager().getMainScoreboard(); + team = scoreboard.getTeam("ArmorStandLocked"); + + assert team != null; + team.unregister(); + + team = scoreboard.getTeam("ArmorStandTargeted"); + + assert team != null; + team.unregister(); + } + private void updateConfig(String folder, String config) { if(!new File(getDataFolder() + File.separator + folder + config).exists()){ saveResource(folder + config, false); @@ -186,6 +220,8 @@ public void onDisable(){ for(Player player : Bukkit.getServer().getOnlinePlayers()){ if(player.getOpenInventory().getTopInventory().getHolder() == editorManager.getMenuHolder()) player.closeInventory(); } + + unregisterScoreboards(); } public void log(String message){ diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditor.java b/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditor.java index df2ce84f..1b19e533 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditor.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditor.java @@ -39,11 +39,15 @@ import org.bukkit.inventory.EquipmentSlot; import org.bukkit.potion.PotionEffect; import org.bukkit.potion.PotionEffectType; +import org.bukkit.scoreboard.Scoreboard; +import org.bukkit.scoreboard.Team; import org.bukkit.util.EulerAngle; public class PlayerEditor { public ArmorStandEditorPlugin plugin; + Team team; private UUID uuid; + UUID armorStandID; EditMode eMode; AdjustmentMode adjMode; CopySlots copySlots; @@ -169,7 +173,7 @@ public void editArmorStand(ArmorStand armorStand) { } public void editItemFrame(ItemFrame itemFrame) { - if (!getPlayer().hasPermission("asedit.basic")) return; //Change to be asedit.invisible? + if (!getPlayer().hasPermission("asedit.invisible")) return; //Change to be asedit.invisible? switch (eMode) { case ITEMFRAME: toggleItemFrameVisible(itemFrame); @@ -309,20 +313,27 @@ private void paste(ArmorStand armorStand) { private void toggleDisableSlots(ArmorStand armorStand) { if (!getPlayer().hasPermission("asedit.disableSlots")) return; + if (armorStand.hasEquipmentLock(EquipmentSlot.HAND, ArmorStand.LockType.REMOVING_OR_CHANGING)) { //Adds a lock to every slot or removes it + team = plugin.scoreboard.getTeam("ArmorStandLocked"); for (final EquipmentSlot slot : EquipmentSlot.values()) { armorStand.removeEquipmentLock(slot, ArmorStand.LockType.REMOVING_OR_CHANGING); armorStand.removeEquipmentLock(slot, ArmorStand.LockType.ADDING); getPlayer().playSound(getPlayer().getLocation(), Sound.ENTITY_ITEM_BREAK, SoundCategory.PLAYERS, 1.0f, 1.0f); } + armorStandID = armorStand.getUniqueId(); + team.addEntry(armorStandID.toString()); } else { for (final EquipmentSlot slot : EquipmentSlot.values()) { armorStand.addEquipmentLock(slot, ArmorStand.LockType.REMOVING_OR_CHANGING); armorStand.addEquipmentLock(slot, ArmorStand.LockType.ADDING); } getPlayer().playSound(getPlayer().getLocation(), Sound.ITEM_ARMOR_EQUIP_IRON, SoundCategory.PLAYERS, 1.0f, 1.0f); + armorStandID = armorStand.getUniqueId(); + team.removeEntry(armorStandID.toString()); } sendMessage("disabledslots", null); + } private void toggleGravity(ArmorStand armorStand) { @@ -399,11 +410,14 @@ private EulerAngle subEulerAngle(EulerAngle angle) { } public void setTarget(ArrayList armorStands) { + team = plugin.scoreboard.getTeam("ArmorStandTargeted"); if (armorStands == null || armorStands.isEmpty()) { target = null; targetList = null; sendMessage("notarget", null); //plugin.getServer().getLogger().info("ArmorStand Target Unlocked"); + armorStandID = target.getUniqueId(); + team.removeEntry(target.toString()); } else { if (targetList == null) { @@ -428,7 +442,11 @@ public void setTarget(ArrayList armorStands) { } } target = targetList.get(targetIndex); + armorStandID = target.getUniqueId(); + team.addEntry(target.toString()); + highlight(target); + } } From 841da5c6d37e792d453faa695d09cc39fd0b2c66 Mon Sep 17 00:00:00 2001 From: Github Date: Mon, 30 Aug 2021 10:32:56 +0200 Subject: [PATCH 096/369] [CORE] Fix some more missed Invisible LeftOvers Signed-off-by: Github --- .../io/github/rypofalem/armorstandeditor/CommandEx.java | 4 ++-- .../rypofalem/armorstandeditor/PlayerEditorManager.java | 2 +- .../rypofalem/armorstandeditor/language/Language.java | 6 +++--- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/CommandEx.java b/src/main/java/io/github/rypofalem/armorstandeditor/CommandEx.java index d9ea9be3..2d175719 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/CommandEx.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/CommandEx.java @@ -44,7 +44,7 @@ public class CommandEx implements CommandExecutor { final String RELOAD = ChatColor.YELLOW + "/ase reload"; final String HELP = ChatColor.YELLOW + "/ase help"; - //Reload Stuff + /*//Reload Stuff Material editTool; boolean requireToolData = false; boolean sendToActionBar = true; @@ -56,7 +56,7 @@ public class CommandEx implements CommandExecutor { double fineRot; boolean glowItemFrames; String toolType = null; - LocalDateTime now = LocalDateTime.now(); + LocalDateTime now = LocalDateTime.now();*/ public CommandEx( ArmorStandEditorPlugin armorStandEditorPlugin) { this.plugin = armorStandEditorPlugin; diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditorManager.java b/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditorManager.java index 7990add8..8d53e2c5 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditorManager.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditorManager.java @@ -82,7 +82,7 @@ void onArmorStandDamage( EntityDamageByEntityEvent event) { event.setCancelled(true); if (canEdit(player, as)) applyLeftTool(player, as); } else if (event.getEntity() instanceof ItemFrame) { - ItemFrame itemf = (ItemFrame) event.getEntity(); + ItemFrame itemf = (ItemFrame) event.getEntity(); getPlayerEditor(player.getUniqueId()).cancelOpenMenu(); event.setCancelled(true); if (canEdit(player, itemf)) applyLeftTool(player, itemf); diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/language/Language.java b/src/main/java/io/github/rypofalem/armorstandeditor/language/Language.java index 7a35c548..5fe46070 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/language/Language.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/language/Language.java @@ -28,7 +28,7 @@ import java.nio.charset.StandardCharsets; public class Language { - final String DEFAULTLANG = "en_US.yml"; + final String DEFAULT_LANG = "en_US.yml"; private YamlConfiguration langConfig = null; private YamlConfiguration defConfig = null; private File langFile = null; @@ -40,11 +40,11 @@ public Language(String langFileName, ArmorStandEditorPlugin plugin) { } public void reloadLang(String langFileName) { - if (langFileName == null) langFileName = DEFAULTLANG; + if (langFileName == null) langFileName = DEFAULT_LANG; File langFolder = new File(plugin.getDataFolder().getPath() + File.separator + "lang"); langFile = new File(langFolder, langFileName); - InputStream input = plugin.getResource("lang" + "/" + DEFAULTLANG); //getResource doesn't accept File.seperator on windows, need to hardcode unix seperator "/" instead + InputStream input = plugin.getResource("lang" + "/" + DEFAULT_LANG); //getResource doesn't accept File.seperator on windows, need to hardcode unix seperator "/" instead assert input != null; Reader defaultLangStream = new InputStreamReader(input, StandardCharsets.UTF_8); defConfig = YamlConfiguration.loadConfiguration(defaultLangStream); From c6a3e95ef4cf950c8bc08f10b1aa61989738bed4 Mon Sep 17 00:00:00 2001 From: Github Date: Mon, 30 Aug 2021 13:51:45 +0200 Subject: [PATCH 097/369] [CORE] Wolfst0rm/ArmorStandEditor-Issues#5: Fix for Description and PlayerEditor pointing to the wrong UniqueID Signed-off-by: Github --- .../armorstandeditor/ArmorStandEditorPlugin.java | 14 ++++++++------ .../rypofalem/armorstandeditor/PlayerEditor.java | 5 ++--- src/main/resources/plugin.yml | 2 +- 3 files changed, 11 insertions(+), 10 deletions(-) diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/ArmorStandEditorPlugin.java b/src/main/java/io/github/rypofalem/armorstandeditor/ArmorStandEditorPlugin.java index a5029a45..51ea389d 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/ArmorStandEditorPlugin.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/ArmorStandEditorPlugin.java @@ -79,7 +79,7 @@ public ArmorStandEditorPlugin(){ @Override public void onEnable(){ - + scoreboard = this.getServer().getScoreboardManager().getMainScoreboard(); registerScoreboards(); //Get NMS Version @@ -116,13 +116,14 @@ public void onEnable(){ return; } - //Minimum Version Check - No Lower than 1.13. Will be tuned out in the future + //Minimum Version Check - No Lower than 1.13-API. Will be tuned out in the future if ( nmsVersion.startsWith("v1_8") || nmsVersion.startsWith("v1_9") || nmsVersion.startsWith("v1_10") || nmsVersion.startsWith("v1_11") || nmsVersion.startsWith("v1_12")){ getLogger().warning("Minecraft Version: " + nmsVersion + " is not supported. Loading Plugin Failed."); + getLogger().info("================================"); getServer().getPluginManager().disablePlugin(this); return; } @@ -165,6 +166,7 @@ public void onEnable(){ editTool = Material.getMaterial(toolType); //Ignore Warning } else { getLogger().severe("Unable to get Tool for Use with Plugin. Unable to continue!"); + getLogger().info("================================"); getServer().getPluginManager().disablePlugin(this); return; } @@ -187,7 +189,7 @@ public void onEnable(){ } private void registerScoreboards() { - scoreboard = this.getServer().getScoreboardManager().getMainScoreboard(); + getLogger().info("Registering Scoreboards required for Glowing Effects"); scoreboard.registerNewTeam("ArmorStandLocked"); scoreboard.getTeam("ArmorStandLocked").setColor(ChatColor.GRAY); @@ -197,14 +199,13 @@ private void registerScoreboards() { } private void unregisterScoreboards() { - scoreboard = this.getServer().getScoreboardManager().getMainScoreboard(); - team = scoreboard.getTeam("ArmorStandLocked"); + getLogger().info("Removing Scoreboards required for Glowing Effects"); + team = scoreboard.getTeam("ArmorStandLocked"); assert team != null; team.unregister(); team = scoreboard.getTeam("ArmorStandTargeted"); - assert team != null; team.unregister(); } @@ -221,6 +222,7 @@ public void onDisable(){ if(player.getOpenInventory().getTopInventory().getHolder() == editorManager.getMenuHolder()) player.closeInventory(); } + scoreboard = this.getServer().getScoreboardManager().getMainScoreboard(); unregisterScoreboards(); } diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditor.java b/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditor.java index 1b19e533..cdc0803d 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditor.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditor.java @@ -417,7 +417,7 @@ public void setTarget(ArrayList armorStands) { sendMessage("notarget", null); //plugin.getServer().getLogger().info("ArmorStand Target Unlocked"); armorStandID = target.getUniqueId(); - team.removeEntry(target.toString()); + team.removeEntry(armorStandID.toString()); } else { if (targetList == null) { @@ -443,8 +443,7 @@ public void setTarget(ArrayList armorStands) { } target = targetList.get(targetIndex); armorStandID = target.getUniqueId(); - team.addEntry(target.toString()); - + team.addEntry(armorStandID.toString()); highlight(target); } diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index 7ebb1d89..672e6d68 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -25,7 +25,7 @@ permissions: description: Access armorstand equipment GUI default: true asedit.disableslots: - description: Lock/Unlock contents of an ArmorStand. Prevents adding, changing and removing of items from ArmorStand. + description: Allows locking and unlocking the contents of an ArmorStand. When locked, armor and equipement can not be added or removed without unlocking it first. default: true # NOT CURRENTLY IN USE! Coming in a future update # asedit.reload: From f0c5b8215eebdc97e28bf4e2c9ad5907720177c4 Mon Sep 17 00:00:00 2001 From: Github Date: Mon, 30 Aug 2021 14:15:36 +0200 Subject: [PATCH 098/369] [CORE] Wolfst0rm/ArmorStandEditor-Issues#5: Fix Startup Issues for Registering Teams being too long Signed-off-by: Github --- .../armorstandeditor/ArmorStandEditorPlugin.java | 14 +++++++------- .../rypofalem/armorstandeditor/PlayerEditor.java | 6 ++++-- 2 files changed, 11 insertions(+), 9 deletions(-) diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/ArmorStandEditorPlugin.java b/src/main/java/io/github/rypofalem/armorstandeditor/ArmorStandEditorPlugin.java index 51ea389d..8efda969 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/ArmorStandEditorPlugin.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/ArmorStandEditorPlugin.java @@ -191,21 +191,21 @@ public void onEnable(){ private void registerScoreboards() { getLogger().info("Registering Scoreboards required for Glowing Effects"); - scoreboard.registerNewTeam("ArmorStandLocked"); - scoreboard.getTeam("ArmorStandLocked").setColor(ChatColor.GRAY); + scoreboard.registerNewTeam("ASLocked"); + scoreboard.getTeam("ASLocked").setColor(ChatColor.GRAY); - scoreboard.registerNewTeam("ArmorStandTargeted"); - scoreboard.getTeam("ArmorStandTargeted").setColor(ChatColor.WHITE); + scoreboard.registerNewTeam("ASTargeted"); + scoreboard.getTeam("ASTargeted").setColor(ChatColor.WHITE); } - private void unregisterScoreboards() { + private void unregisterScoreboards() { //Implemented GlowingEffects for getLogger().info("Removing Scoreboards required for Glowing Effects"); - team = scoreboard.getTeam("ArmorStandLocked"); + team = scoreboard.getTeam("ASLocked"); assert team != null; team.unregister(); - team = scoreboard.getTeam("ArmorStandTargeted"); + team = scoreboard.getTeam("ASTargeted"); assert team != null; team.unregister(); } diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditor.java b/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditor.java index cdc0803d..360f5c4d 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditor.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditor.java @@ -315,7 +315,7 @@ private void toggleDisableSlots(ArmorStand armorStand) { if (!getPlayer().hasPermission("asedit.disableSlots")) return; if (armorStand.hasEquipmentLock(EquipmentSlot.HAND, ArmorStand.LockType.REMOVING_OR_CHANGING)) { //Adds a lock to every slot or removes it - team = plugin.scoreboard.getTeam("ArmorStandLocked"); + team = plugin.scoreboard.getTeam("ASLocked"); for (final EquipmentSlot slot : EquipmentSlot.values()) { armorStand.removeEquipmentLock(slot, ArmorStand.LockType.REMOVING_OR_CHANGING); armorStand.removeEquipmentLock(slot, ArmorStand.LockType.ADDING); @@ -410,7 +410,7 @@ private EulerAngle subEulerAngle(EulerAngle angle) { } public void setTarget(ArrayList armorStands) { - team = plugin.scoreboard.getTeam("ArmorStandTargeted"); + team = plugin.scoreboard.getTeam("ASTargeted"); if (armorStands == null || armorStands.isEmpty()) { target = null; targetList = null; @@ -439,6 +439,8 @@ public void setTarget(ArrayList armorStands) { targetIndex = 0; sendMessage("target", null); //plugin.getServer().getLogger().info("ArmorStand Target Locked"); + armorStandID = target.getUniqueId(); + team.addEntry(armorStandID.toString()); } } target = targetList.get(targetIndex); From ed3292f084808d098c21be6018b4667e22ab0c02 Mon Sep 17 00:00:00 2001 From: Github Date: Mon, 30 Aug 2021 14:57:46 +0200 Subject: [PATCH 099/369] [CORE] Wolfst0rm/ArmorStandEditor-Issues#5: Test Review Remarks. Signed-off-by: Github --- .../rypofalem/armorstandeditor/ArmorStandEditorPlugin.java | 5 +++-- .../io/github/rypofalem/armorstandeditor/PlayerEditor.java | 3 --- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/ArmorStandEditorPlugin.java b/src/main/java/io/github/rypofalem/armorstandeditor/ArmorStandEditorPlugin.java index 8efda969..dc5b89af 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/ArmorStandEditorPlugin.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/ArmorStandEditorPlugin.java @@ -188,17 +188,18 @@ public void onEnable(){ getServer().getPluginManager().registerEvents(editorManager, this); } + //Implement Glow Effects for Wolfstorm/ArmorStandEditor-Issues#5 - Add Disable Slots with Different Glow than Default private void registerScoreboards() { getLogger().info("Registering Scoreboards required for Glowing Effects"); scoreboard.registerNewTeam("ASLocked"); - scoreboard.getTeam("ASLocked").setColor(ChatColor.GRAY); + scoreboard.getTeam("ASLocked").setColor(ChatColor.RED); scoreboard.registerNewTeam("ASTargeted"); scoreboard.getTeam("ASTargeted").setColor(ChatColor.WHITE); } - private void unregisterScoreboards() { //Implemented GlowingEffects for + private void unregisterScoreboards() { getLogger().info("Removing Scoreboards required for Glowing Effects"); team = scoreboard.getTeam("ASLocked"); diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditor.java b/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditor.java index 360f5c4d..25adcb41 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditor.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditor.java @@ -313,7 +313,6 @@ private void paste(ArmorStand armorStand) { private void toggleDisableSlots(ArmorStand armorStand) { if (!getPlayer().hasPermission("asedit.disableSlots")) return; - if (armorStand.hasEquipmentLock(EquipmentSlot.HAND, ArmorStand.LockType.REMOVING_OR_CHANGING)) { //Adds a lock to every slot or removes it team = plugin.scoreboard.getTeam("ASLocked"); for (final EquipmentSlot slot : EquipmentSlot.values()) { @@ -439,8 +438,6 @@ public void setTarget(ArrayList armorStands) { targetIndex = 0; sendMessage("target", null); //plugin.getServer().getLogger().info("ArmorStand Target Locked"); - armorStandID = target.getUniqueId(); - team.addEntry(armorStandID.toString()); } } target = targetList.get(targetIndex); From 5890a57accd40039e3d2c6fe2cd786015fe97642 Mon Sep 17 00:00:00 2001 From: Github Date: Mon, 30 Aug 2021 14:57:46 +0200 Subject: [PATCH 100/369] [CORE] Wolfst0rm/ArmorStandEditor-Issues#5: Test Review Remarks. Signed-off-by: Github --- .../io/github/rypofalem/armorstandeditor/PlayerEditor.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditor.java b/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditor.java index 25adcb41..fba023a1 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditor.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditor.java @@ -321,7 +321,7 @@ private void toggleDisableSlots(ArmorStand armorStand) { getPlayer().playSound(getPlayer().getLocation(), Sound.ENTITY_ITEM_BREAK, SoundCategory.PLAYERS, 1.0f, 1.0f); } armorStandID = armorStand.getUniqueId(); - team.addEntry(armorStandID.toString()); + team.removeEntry(armorStandID.toString()); } else { for (final EquipmentSlot slot : EquipmentSlot.values()) { armorStand.addEquipmentLock(slot, ArmorStand.LockType.REMOVING_OR_CHANGING); @@ -329,7 +329,7 @@ private void toggleDisableSlots(ArmorStand armorStand) { } getPlayer().playSound(getPlayer().getLocation(), Sound.ITEM_ARMOR_EQUIP_IRON, SoundCategory.PLAYERS, 1.0f, 1.0f); armorStandID = armorStand.getUniqueId(); - team.removeEntry(armorStandID.toString()); + team.addEntry(armorStandID.toString()); } sendMessage("disabledslots", null); From 8c36ed02775c88436684010c7186f786c0203396 Mon Sep 17 00:00:00 2001 From: Wolfstorm Date: Mon, 30 Aug 2021 19:43:36 +0200 Subject: [PATCH 101/369] [CORE] Wolfst0rm/ArmorStandEditor-Issues#5: Review Remarks RE Colors and Potion Effects Signed-off-by: Wolfstorm Signed-off-by: Wolfstorm --- .../armorstandeditor/PlayerEditor.java | 28 +++++++++++-------- 1 file changed, 16 insertions(+), 12 deletions(-) diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditor.java b/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditor.java index fba023a1..84e643ec 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditor.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditor.java @@ -315,21 +315,30 @@ private void toggleDisableSlots(ArmorStand armorStand) { if (!getPlayer().hasPermission("asedit.disableSlots")) return; if (armorStand.hasEquipmentLock(EquipmentSlot.HAND, ArmorStand.LockType.REMOVING_OR_CHANGING)) { //Adds a lock to every slot or removes it team = plugin.scoreboard.getTeam("ASLocked"); - for (final EquipmentSlot slot : EquipmentSlot.values()) { + armorStandID = armorStand.getUniqueId(); + + for (final EquipmentSlot slot : EquipmentSlot.values()) { // UNLOCKED armorStand.removeEquipmentLock(slot, ArmorStand.LockType.REMOVING_OR_CHANGING); armorStand.removeEquipmentLock(slot, ArmorStand.LockType.ADDING); - getPlayer().playSound(getPlayer().getLocation(), Sound.ENTITY_ITEM_BREAK, SoundCategory.PLAYERS, 1.0f, 1.0f); } - armorStandID = armorStand.getUniqueId(); - team.removeEntry(armorStandID.toString()); + getPlayer().playSound(getPlayer().getLocation(), Sound.ENTITY_ITEM_BREAK, SoundCategory.PLAYERS, 1.0f, 1.0f); + + if(team != null) { + team.removeEntry(armorStandID.toString()); + armorStand.addPotionEffect(new PotionEffect(PotionEffectType.GLOWING, 15, 1, false, false)); + } + + } else { - for (final EquipmentSlot slot : EquipmentSlot.values()) { + for (final EquipmentSlot slot : EquipmentSlot.values()) { //LOCKED armorStand.addEquipmentLock(slot, ArmorStand.LockType.REMOVING_OR_CHANGING); armorStand.addEquipmentLock(slot, ArmorStand.LockType.ADDING); } getPlayer().playSound(getPlayer().getLocation(), Sound.ITEM_ARMOR_EQUIP_IRON, SoundCategory.PLAYERS, 1.0f, 1.0f); - armorStandID = armorStand.getUniqueId(); - team.addEntry(armorStandID.toString()); + if(team != null) { + team.addEntry(armorStandID.toString()); + armorStand.addPotionEffect(new PotionEffect(PotionEffectType.GLOWING, 60, 1, false, false)); + } } sendMessage("disabledslots", null); @@ -409,14 +418,11 @@ private EulerAngle subEulerAngle(EulerAngle angle) { } public void setTarget(ArrayList armorStands) { - team = plugin.scoreboard.getTeam("ASTargeted"); if (armorStands == null || armorStands.isEmpty()) { target = null; targetList = null; sendMessage("notarget", null); //plugin.getServer().getLogger().info("ArmorStand Target Unlocked"); - armorStandID = target.getUniqueId(); - team.removeEntry(armorStandID.toString()); } else { if (targetList == null) { @@ -441,8 +447,6 @@ public void setTarget(ArrayList armorStands) { } } target = targetList.get(targetIndex); - armorStandID = target.getUniqueId(); - team.addEntry(armorStandID.toString()); highlight(target); } From 1ccf4de20617ca9419cc35b8af2279935ce7df14 Mon Sep 17 00:00:00 2001 From: Wolfstorm Date: Mon, 30 Aug 2021 20:15:22 +0200 Subject: [PATCH 102/369] [CORE] Wolfst0rm/ArmorStandEditor-Issues#5: Review Remarks RE Colors and Potion Effects Signed-off-by: Wolfstorm Signed-off-by: Wolfstorm --- .../armorstandeditor/ArmorStandEditorPlugin.java | 13 +++++-------- .../rypofalem/armorstandeditor/PlayerEditor.java | 6 ++++-- 2 files changed, 9 insertions(+), 10 deletions(-) diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/ArmorStandEditorPlugin.java b/src/main/java/io/github/rypofalem/armorstandeditor/ArmorStandEditorPlugin.java index dc5b89af..1511958c 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/ArmorStandEditorPlugin.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/ArmorStandEditorPlugin.java @@ -195,20 +195,17 @@ private void registerScoreboards() { scoreboard.registerNewTeam("ASLocked"); scoreboard.getTeam("ASLocked").setColor(ChatColor.RED); - scoreboard.registerNewTeam("ASTargeted"); - scoreboard.getTeam("ASTargeted").setColor(ChatColor.WHITE); } private void unregisterScoreboards() { getLogger().info("Removing Scoreboards required for Glowing Effects"); team = scoreboard.getTeam("ASLocked"); - assert team != null; - team.unregister(); - - team = scoreboard.getTeam("ASTargeted"); - assert team != null; - team.unregister(); + try { + team.unregister(); + } catch (Exception e){ + getLogger().severe("Team Already Appears to be removed. Please do not do this manually!"); + } } private void updateConfig(String folder, String config) { diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditor.java b/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditor.java index 84e643ec..c08411b8 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditor.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditor.java @@ -325,7 +325,7 @@ private void toggleDisableSlots(ArmorStand armorStand) { if(team != null) { team.removeEntry(armorStandID.toString()); - armorStand.addPotionEffect(new PotionEffect(PotionEffectType.GLOWING, 15, 1, false, false)); + armorStand.addPotionEffect(new PotionEffect(PotionEffectType.GLOWING, 60, 1, false, false)); } @@ -340,6 +340,7 @@ private void toggleDisableSlots(ArmorStand armorStand) { armorStand.addPotionEffect(new PotionEffect(PotionEffectType.GLOWING, 60, 1, false, false)); } } + sendMessage("disabledslots", null); } @@ -447,7 +448,8 @@ public void setTarget(ArrayList armorStands) { } } target = targetList.get(targetIndex); - highlight(target); + highlight(target); //NOTE: If Targeted and Locked, it displays the TEAM Color Glow: RED + // Otherwise, its unlocked and will display WHITE as its not in a team by default } } From 556898d883463e9a775c49aa4b3ff0e15dd30014 Mon Sep 17 00:00:00 2001 From: Wolfstorm Date: Mon, 30 Aug 2021 20:16:01 +0200 Subject: [PATCH 103/369] [CORE] Wolfst0rm/ArmorStandEditor-Issues#5: Review Remarks RE Colors and Potion Effects Signed-off-by: Wolfstorm Signed-off-by: Wolfstorm --- .../rypofalem/armorstandeditor/ArmorStandEditorPlugin.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/ArmorStandEditorPlugin.java b/src/main/java/io/github/rypofalem/armorstandeditor/ArmorStandEditorPlugin.java index 1511958c..0705e032 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/ArmorStandEditorPlugin.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/ArmorStandEditorPlugin.java @@ -201,9 +201,9 @@ private void unregisterScoreboards() { getLogger().info("Removing Scoreboards required for Glowing Effects"); team = scoreboard.getTeam("ASLocked"); - try { + if(team != null) { //Basic Sanity Check to ensure that the team is there team.unregister(); - } catch (Exception e){ + } else{ getLogger().severe("Team Already Appears to be removed. Please do not do this manually!"); } } From 4331a386b98f81f3c6cd15437d226a4423e52f75 Mon Sep 17 00:00:00 2001 From: Wolfstorm Date: Mon, 30 Aug 2021 20:31:52 +0200 Subject: [PATCH 104/369] [CORE] Wolfst0rm/ArmorStandEditor-Issues#5: Fix Durations (in Ticks not seconds >.>) Signed-off-by: Wolfstorm Signed-off-by: Wolfstorm --- .../io/github/rypofalem/armorstandeditor/PlayerEditor.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditor.java b/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditor.java index c08411b8..6d0f504d 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditor.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditor.java @@ -325,7 +325,7 @@ private void toggleDisableSlots(ArmorStand armorStand) { if(team != null) { team.removeEntry(armorStandID.toString()); - armorStand.addPotionEffect(new PotionEffect(PotionEffectType.GLOWING, 60, 1, false, false)); + armorStand.addPotionEffect(new PotionEffect(PotionEffectType.GLOWING, 1200, 1, false, false)); } @@ -337,7 +337,7 @@ private void toggleDisableSlots(ArmorStand armorStand) { getPlayer().playSound(getPlayer().getLocation(), Sound.ITEM_ARMOR_EQUIP_IRON, SoundCategory.PLAYERS, 1.0f, 1.0f); if(team != null) { team.addEntry(armorStandID.toString()); - armorStand.addPotionEffect(new PotionEffect(PotionEffectType.GLOWING, 60, 1, false, false)); + armorStand.addPotionEffect(new PotionEffect(PotionEffectType.GLOWING, 1200, 1, false, false)); } } @@ -522,7 +522,7 @@ void sendMessage(String path, String option) { private void highlight(ArmorStand armorStand) { armorStand.removePotionEffect(PotionEffectType.GLOWING); - armorStand.addPotionEffect(new PotionEffect(PotionEffectType.GLOWING, 15, 1, false, false)); + armorStand.addPotionEffect(new PotionEffect(PotionEffectType.GLOWING, 300, 1, false, false)); } public PlayerEditorManager getManager() { From 993bde41547cbcf4f76ac4a758dd64d55115bc9a Mon Sep 17 00:00:00 2001 From: Wolfstorm Date: Mon, 30 Aug 2021 20:54:34 +0200 Subject: [PATCH 105/369] [CORE] Wolfst0rm/ArmorStandEditor-Issues#5: Fix Highlighting when attempting to target. Signed-off-by: Wolfstorm --- .../java/io/github/rypofalem/armorstandeditor/PlayerEditor.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditor.java b/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditor.java index 6d0f504d..a76c744e 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditor.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditor.java @@ -497,7 +497,7 @@ ArmorStand attemptTarget(ArmorStand armorStand) { || target.getLocation().distanceSquared(getPlayer().getLocation()) > 100) return armorStand; armorStand = target; - highlight(armorStand); + //highlight(armorStand); return armorStand; } From 142910ff32744dfa444e4e4aa2cb81c18143de57 Mon Sep 17 00:00:00 2001 From: Wolfstorm Date: Mon, 30 Aug 2021 21:08:39 +0200 Subject: [PATCH 106/369] [CORE] Wolfst0rm/ArmorStandEditor-Issues#5: Shorten Highlighting duration from 1200 ticks to 300 Ticks (60 -> 15 seconds) Signed-off-by: Wolfstorm --- .../io/github/rypofalem/armorstandeditor/PlayerEditor.java | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditor.java b/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditor.java index a76c744e..846e5659 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditor.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditor.java @@ -325,7 +325,7 @@ private void toggleDisableSlots(ArmorStand armorStand) { if(team != null) { team.removeEntry(armorStandID.toString()); - armorStand.addPotionEffect(new PotionEffect(PotionEffectType.GLOWING, 1200, 1, false, false)); + armorStand.addPotionEffect(new PotionEffect(PotionEffectType.GLOWING, 300, 1, false, false)); //300 Ticks = 15 seconds } @@ -337,7 +337,7 @@ private void toggleDisableSlots(ArmorStand armorStand) { getPlayer().playSound(getPlayer().getLocation(), Sound.ITEM_ARMOR_EQUIP_IRON, SoundCategory.PLAYERS, 1.0f, 1.0f); if(team != null) { team.addEntry(armorStandID.toString()); - armorStand.addPotionEffect(new PotionEffect(PotionEffectType.GLOWING, 1200, 1, false, false)); + armorStand.addPotionEffect(new PotionEffect(PotionEffectType.GLOWING, 300, 1, false, false)); //300 Ticks = 15 seconds } } @@ -497,7 +497,6 @@ ArmorStand attemptTarget(ArmorStand armorStand) { || target.getLocation().distanceSquared(getPlayer().getLocation()) > 100) return armorStand; armorStand = target; - //highlight(armorStand); return armorStand; } @@ -522,7 +521,7 @@ void sendMessage(String path, String option) { private void highlight(ArmorStand armorStand) { armorStand.removePotionEffect(PotionEffectType.GLOWING); - armorStand.addPotionEffect(new PotionEffect(PotionEffectType.GLOWING, 300, 1, false, false)); + armorStand.addPotionEffect(new PotionEffect(PotionEffectType.GLOWING, 300, 1, false, false)); //300 Ticks = 15 seconds } public PlayerEditorManager getManager() { From 35849af208fbfb63a1608d35f36b6ad7a3615669 Mon Sep 17 00:00:00 2001 From: Wolfstorm Date: Tue, 31 Aug 2021 16:54:53 +0200 Subject: [PATCH 107/369] [CORE] Wolfst0rm/ArmorStandEditor-Issues#5 - Lower Duration from 15 seconds to 2.5 seconds. From 300 ticks to 50 ticks. Signed-off-by: Github --- .../io/github/rypofalem/armorstandeditor/PlayerEditor.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditor.java b/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditor.java index 846e5659..58ade5a7 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditor.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditor.java @@ -325,7 +325,7 @@ private void toggleDisableSlots(ArmorStand armorStand) { if(team != null) { team.removeEntry(armorStandID.toString()); - armorStand.addPotionEffect(new PotionEffect(PotionEffectType.GLOWING, 300, 1, false, false)); //300 Ticks = 15 seconds + armorStand.addPotionEffect(new PotionEffect(PotionEffectType.GLOWING, 50, 1, false, false)); //300 Ticks = 15 seconds } @@ -337,7 +337,7 @@ private void toggleDisableSlots(ArmorStand armorStand) { getPlayer().playSound(getPlayer().getLocation(), Sound.ITEM_ARMOR_EQUIP_IRON, SoundCategory.PLAYERS, 1.0f, 1.0f); if(team != null) { team.addEntry(armorStandID.toString()); - armorStand.addPotionEffect(new PotionEffect(PotionEffectType.GLOWING, 300, 1, false, false)); //300 Ticks = 15 seconds + armorStand.addPotionEffect(new PotionEffect(PotionEffectType.GLOWING, 50, 1, false, false)); //300 Ticks = 15 seconds } } @@ -521,7 +521,7 @@ void sendMessage(String path, String option) { private void highlight(ArmorStand armorStand) { armorStand.removePotionEffect(PotionEffectType.GLOWING); - armorStand.addPotionEffect(new PotionEffect(PotionEffectType.GLOWING, 300, 1, false, false)); //300 Ticks = 15 seconds + armorStand.addPotionEffect(new PotionEffect(PotionEffectType.GLOWING, 50, 1, false, false)); //300 Ticks = 15 seconds } public PlayerEditorManager getManager() { From fe88a5d226907f0875bb31b9dcbc52ff5dee12fc Mon Sep 17 00:00:00 2001 From: Github Date: Wed, 1 Sep 2021 14:01:19 +0200 Subject: [PATCH 108/369] [CI-SKIP] Readme Update to include CodeFactor Review Signed-off-by: Github --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 3e24c031..0549e4bd 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,7 @@ # ArmorStandEditor [![Build Status](https://github.com/Wolfst0rm/ArmorStandEditor/actions/workflows/maven-publish.yml/badge.svg)](https://github.com/Wolfst0rm/ArmorStandEditor/actions/workflows/maven-publish.yml) [![wakatime](https://wakatime.com/badge/github/Wolfst0rm/ArmorStandEditor.svg)](https://wakatime.com/badge/github/Wolfst0rm/ArmorStandEditor) +[![CodeFactor](https://www.codefactor.io/repository/github/wolfst0rm/armorstandeditor/badge)](https://www.codefactor.io/repository/github/wolfst0rm/armorstandeditor) Bukkit plugin to allow players to edit armorstands without commands. From c9c5b44867a78c36cc4756943c92ab090df91214 Mon Sep 17 00:00:00 2001 From: Github Date: Wed, 1 Sep 2021 15:00:12 +0200 Subject: [PATCH 109/369] [CORE] bStats Initial Support. Signed-off-by: Github --- pom.xml | 29 +++++++++++++++++++ .../ArmorStandEditorPlugin.java | 17 ++++++++--- 2 files changed, 42 insertions(+), 4 deletions(-) diff --git a/pom.xml b/pom.xml index 4cdc5fa4..d477b948 100644 --- a/pom.xml +++ b/pom.xml @@ -29,6 +29,13 @@ 1.17-R0.1-SNAPSHOT provided + + + org.bstats + bstats-bukkit + 2.2.1 + compile + @@ -54,6 +61,28 @@ @{project.version} + + org.apache.maven.plugins + maven-shade-plugin + 3.1.0 + + + + org.bstats + + io.github.rypofalem.armorstandeditor + + + + + + package + + shade + + + + diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/ArmorStandEditorPlugin.java b/src/main/java/io/github/rypofalem/armorstandeditor/ArmorStandEditorPlugin.java index 0705e032..5af81571 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/ArmorStandEditorPlugin.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/ArmorStandEditorPlugin.java @@ -20,6 +20,8 @@ package io.github.rypofalem.armorstandeditor; import io.github.rypofalem.armorstandeditor.language.Language; +import org.bstats.bukkit.Metrics; +import org.bstats.charts.SimplePie; import org.bukkit.Bukkit; import org.bukkit.ChatColor; import org.bukkit.Material; @@ -69,19 +71,26 @@ public class ArmorStandEditorPlugin extends JavaPlugin{ private static ArmorStandEditorPlugin plugin; - - - public ArmorStandEditorPlugin(){ instance = this; } - @Override public void onEnable(){ scoreboard = this.getServer().getScoreboardManager().getMainScoreboard(); registerScoreboards(); + //Metrics/bStats Support + int pluginID = 12668; + Metrics metrics = new Metrics(this, pluginID); + + //TODO: Metrics Charts + metrics.addCustomChart(new SimplePie("Language_used", () -> { + return getConfig().getString("lang"); + })); + + + //Get NMS Version nmsVersion = getServer().getClass().getPackage().getName().replace(".",",").split(",")[3]; From 819b888dbde83b991b819866e9ce521bb575d9ad Mon Sep 17 00:00:00 2001 From: Github Date: Wed, 1 Sep 2021 15:00:12 +0200 Subject: [PATCH 110/369] [CORE] bStats Initial Support. Signed-off-by: Github --- .../rypofalem/armorstandeditor/ArmorStandEditorPlugin.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/ArmorStandEditorPlugin.java b/src/main/java/io/github/rypofalem/armorstandeditor/ArmorStandEditorPlugin.java index 5af81571..56491eb7 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/ArmorStandEditorPlugin.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/ArmorStandEditorPlugin.java @@ -85,7 +85,7 @@ public void onEnable(){ Metrics metrics = new Metrics(this, pluginID); //TODO: Metrics Charts - metrics.addCustomChart(new SimplePie("Language_used", () -> { + metrics.addCustomChart(new SimplePie("language_used", () -> { return getConfig().getString("lang"); })); From 799cc0bcc1015c76c1f51922e71e8f8fade2a02c Mon Sep 17 00:00:00 2001 From: Renovate Bot Date: Wed, 1 Sep 2021 13:03:05 +0000 Subject: [PATCH 111/369] Update dependency org.apache.maven.plugins:maven-shade-plugin to v3.2.4 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index d477b948..095fa8bd 100644 --- a/pom.xml +++ b/pom.xml @@ -64,7 +64,7 @@ org.apache.maven.plugins maven-shade-plugin - 3.1.0 + 3.2.4 From c29ee720fb5a34e4a3de70f0f76924467b413839 Mon Sep 17 00:00:00 2001 From: Github Date: Wed, 1 Sep 2021 15:08:55 +0200 Subject: [PATCH 112/369] [CI-SKIP] Move Imports around. Seperate them! Signed-off-by: Github --- .../rypofalem/armorstandeditor/ArmorStandEditorPlugin.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/ArmorStandEditorPlugin.java b/src/main/java/io/github/rypofalem/armorstandeditor/ArmorStandEditorPlugin.java index 56491eb7..132f6ead 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/ArmorStandEditorPlugin.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/ArmorStandEditorPlugin.java @@ -20,8 +20,7 @@ package io.github.rypofalem.armorstandeditor; import io.github.rypofalem.armorstandeditor.language.Language; -import org.bstats.bukkit.Metrics; -import org.bstats.charts.SimplePie; + import org.bukkit.Bukkit; import org.bukkit.ChatColor; import org.bukkit.Material; @@ -37,6 +36,9 @@ import java.io.File; import java.util.List; +import org.bstats.bukkit.Metrics; +import org.bstats.charts.SimplePie; + public class ArmorStandEditorPlugin extends JavaPlugin{ private NamespacedKey iconKey; From 26642f72739db361dbc2215a9a34841fe5d74810 Mon Sep 17 00:00:00 2001 From: Github Date: Wed, 1 Sep 2021 15:19:19 +0200 Subject: [PATCH 113/369] [CORE] bStats: Initial Charts toDo. Will most likely add something in for NMS Version SOON! Signed-off-by: Github --- .../armorstandeditor/ArmorStandEditorPlugin.java | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/ArmorStandEditorPlugin.java b/src/main/java/io/github/rypofalem/armorstandeditor/ArmorStandEditorPlugin.java index 132f6ead..550f110b 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/ArmorStandEditorPlugin.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/ArmorStandEditorPlugin.java @@ -21,6 +21,7 @@ import io.github.rypofalem.armorstandeditor.language.Language; +import org.bstats.charts.AdvancedPie; import org.bukkit.Bukkit; import org.bukkit.ChatColor; import org.bukkit.Material; @@ -34,7 +35,10 @@ import org.bukkit.scoreboard.Team; import java.io.File; +import java.util.HashMap; import java.util.List; +import java.util.Map; +import java.util.concurrent.Callable; import org.bstats.bukkit.Metrics; import org.bstats.charts.SimplePie; @@ -87,11 +91,6 @@ public void onEnable(){ Metrics metrics = new Metrics(this, pluginID); //TODO: Metrics Charts - metrics.addCustomChart(new SimplePie("language_used", () -> { - return getConfig().getString("lang"); - })); - - //Get NMS Version nmsVersion = getServer().getClass().getPackage().getName().replace(".",",").split(",")[3]; From d1bfdadd3ed9c1cd4541daf216ad121e73d8a13f Mon Sep 17 00:00:00 2001 From: Github Date: Wed, 1 Sep 2021 15:26:23 +0200 Subject: [PATCH 114/369] [CI-SKIP] Comments wrt what we could potentially use Metrics to Track Signed-off-by: Github --- .../armorstandeditor/ArmorStandEditorPlugin.java | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/ArmorStandEditorPlugin.java b/src/main/java/io/github/rypofalem/armorstandeditor/ArmorStandEditorPlugin.java index 550f110b..8d2b231b 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/ArmorStandEditorPlugin.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/ArmorStandEditorPlugin.java @@ -90,7 +90,15 @@ public void onEnable(){ int pluginID = 12668; Metrics metrics = new Metrics(this, pluginID); - //TODO: Metrics Charts + /*TODO: Metrics Charts (Optional but might add some useful stuff) + * TODO: Useful to Track Language Usage (config: lang) + * TODO: Useful to Track RequireToolData Usage (config: requireToolData) + * TODO: Useful to Track RequireToolLore Usage (config: requireToolLore) + * TODO: Useful to Track ActionBar Usage (config: sendMessagesToActionBar) + * TODO: Useful to Track DebugMode Usage (config: debug) + * TODO: Useful to Track Java Version (java.Version) + * + */ //Get NMS Version nmsVersion = getServer().getClass().getPackage().getName().replace(".",",").split(",")[3]; From 49dbd7abebd8f5855e1be451f7d3d05afc01db91 Mon Sep 17 00:00:00 2001 From: Github Date: Wed, 1 Sep 2021 16:43:43 +0200 Subject: [PATCH 115/369] [CI-SKIP] Remove Comment from Maven Core File and Update README.md Signed-off-by: Github --- README.md | 65 +++++++++++++++++++++++++++++++++++++++++++++++++++---- pom.xml | 1 - 2 files changed, 61 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 0549e4bd..3a346f0d 100644 --- a/README.md +++ b/README.md @@ -1,10 +1,67 @@ -# ArmorStandEditor +
+ +## ArmorStandEditor [![Build Status](https://github.com/Wolfst0rm/ArmorStandEditor/actions/workflows/maven-publish.yml/badge.svg)](https://github.com/Wolfst0rm/ArmorStandEditor/actions/workflows/maven-publish.yml) [![wakatime](https://wakatime.com/badge/github/Wolfst0rm/ArmorStandEditor.svg)](https://wakatime.com/badge/github/Wolfst0rm/ArmorStandEditor) [![CodeFactor](https://www.codefactor.io/repository/github/wolfst0rm/armorstandeditor/badge)](https://www.codefactor.io/repository/github/wolfst0rm/armorstandeditor) +[![Compatibility](https://img.shields.io/badge/Compatable%20With-Paper%2C%20Spigot%20and%20related%20Forks-green)](https://img.shields.io/badge/Compatable%20With-Paper%2C%20Spigot%20and%20related%20Forks-green) +[![License](https://img.shields.io/badge/Licence-GNU%20Public%20V2%20-red)](https://img.shields.io/badge/Licence-GNU%20Public%20V2%20-red) + + +ArmorStandEditor is a plugin for [Spigot and related forks](https://www.spigotmc.org/resources/armorstandeditor-reborn.94503/) to allow players in survival to easily edit armor stand pose and attributes. +
+ +##Downloads +Downloads for Version 1.17 and higher can be obtained from the [download page](https://www.spigotmc.org/resources/armorstandeditor-reborn.94503/) or our [release tracker](https://github.com/Wolfst0rm/ArmorStandEditor/releases) here on Github. + +For versions older than 1.17, then please use [the original versions download page](https://www.spigotmc.org/resources/armor-stand-editor-dead.7688/). + +The Latest Downloads Shortcut Links: +* [Unstable Versions](https://github.com/Wolfst0rm/ArmorStandEditor/actions) - **Use these at your own risk. Limited Support is provided for testing purposes** +* [1.17.1](https://www.spigotmc.org/threads/armorstandeditor-reborn.517132) +* [1.17](https://github.com/Wolfst0rm/ArmorStandEditor/releases/tag/1.17.1-27) +* [1.16](https://www.spigotmc.org/resources/armor-stand-editor-dead.7688/download?version=342891) +* [1.14](https://www.spigotmc.org/resources/armor-stand-editor-dead.7688/download?version=299267) +* [1.13](https://www.spigotmc.org/resources/armor-stand-editor-dead.7688/download?version=235185) +* [1.11.2](https://www.spigotmc.org/resources/armor-stand-editor-dead.7688/download?version=152723) +* [1.11](https://www.spigotmc.org/resources/armor-stand-editor-dead.7688/download?version=127136) +* [1.10.2](https://www.spigotmc.org/resources/armor-stand-editor-dead.7688/download?version=124213) +* [1.9.4](https://www.spigotmc.org/resources/armor-stand-editor-dead.7688/download?version=92457) +* [1.9.2](https://www.spigotmc.org/resources/armor-stand-editor-dead.7688/download?version=83792) +* [1.9](https://www.spigotmc.org/resources/armor-stand-editor-dead.7688/download?version=78164) +* [1.8](https://www.spigotmc.org/resources/armor-stand-editor-dead.7688/download?version=29676) + +**NOTE:** The 1.17 Versions introduce NMS Version Checks and will not load on versions older than 1.13. + +It will also advise that if you are on 1.13 to 1.16, that you update to 1.17.x or Higher. This will be +subject to change in the future. The minimum enforced API Version is 1.13. + +## Features +* Editing ArmorStands with no commands required +* Rotation of all ArmorStand Parts along each axis +* Rotation of entire ArmorStand after Placement. Supported by Crouching and Scrolling, so you never have to open the menu +* Finer Adjustment to allow for Fine Tuning of Positions. +* Coarser Adustments to allow you to quikly to get to the intended position +* Toggles for: Disabling Slots, Invisiblity, Gravity, Base Plates, Size (Normal and Small) +* Copying and Pasting ArmorStand Settings between ArmorStandEditor in a Survival Friendly way +* Storage of Copied Settings in one of 9 available slots. +* Naming of ArmorStands through the use of Vanilla Name tags, with colored name support +* Multiple Language Support through the use of community translations +* Respects multiple protection plugins: WorldGaurd, Towny, GriefPrevention, Residence etc. +* Targeting of an ArmorStand by pressing F with the tool in your hand +* Glowing ArmorStand to signify Targetting and Slot Disables through the use of Scoreboards. + +## Support +Support for ArmorStandEditor is provided: +* For API-Versions Higher than 1.13 but Fixes will not be retrofitted to older releases. +* For Latest Release and Unstable versions of the Plugin + +If there are issues with the plugin on the latest release, you can report them [here](https://github.com/Wolfst0rm/ArmorStandEditor-Issues/issues/new?assignees=&labels=P1%3A+To+Be+Tested&template=behaviour-bug.yml). + +If there are new feature requests, you can ask them to be implemented [here](https://github.com/Wolfst0rm/ArmorStandEditor-Issues/issues/new?assignees=&labels=&template=feature-request.yml). + +**NOTE:** Feature Requests are first evaluated and analyzed before an implementation can be considered. -Bukkit plugin to allow players to edit armorstands without commands. +Bugs are also first tested to ensure that they can be reproduced according to the reported steps. -Issue with the plugin? Please report it [here](https://github.com/Wolfst0rm/ArmorStandEditor-Issues) -Read the [wiki](https://github.com/RypoFalem/ArmorStandEditor/wiki) for more info. diff --git a/pom.xml b/pom.xml index 095fa8bd..0293acc9 100644 --- a/pom.xml +++ b/pom.xml @@ -69,7 +69,6 @@ org.bstats - io.github.rypofalem.armorstandeditor From 1a0010921f6f72879ff185329a6509401243b680 Mon Sep 17 00:00:00 2001 From: Wolfie / Larry Date: Wed, 1 Sep 2021 16:44:37 +0200 Subject: [PATCH 116/369] Update README.md --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 3a346f0d..cd23b6f3 100644 --- a/README.md +++ b/README.md @@ -12,6 +12,8 @@ ArmorStandEditor is a plugin for [Spigot and related forks](https://www.spigotmc ##Downloads + + Downloads for Version 1.17 and higher can be obtained from the [download page](https://www.spigotmc.org/resources/armorstandeditor-reborn.94503/) or our [release tracker](https://github.com/Wolfst0rm/ArmorStandEditor/releases) here on Github. For versions older than 1.17, then please use [the original versions download page](https://www.spigotmc.org/resources/armor-stand-editor-dead.7688/). From 690a7e3829e3e2e1e476b92bb8a78898ebf32c11 Mon Sep 17 00:00:00 2001 From: Wolfie / Larry Date: Wed, 1 Sep 2021 16:44:48 +0200 Subject: [PATCH 117/369] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index cd23b6f3..5772d6b3 100644 --- a/README.md +++ b/README.md @@ -11,7 +11,7 @@ ArmorStandEditor is a plugin for [Spigot and related forks](https://www.spigotmc.org/resources/armorstandeditor-reborn.94503/) to allow players in survival to easily edit armor stand pose and attributes. -##Downloads +## Downloads Downloads for Version 1.17 and higher can be obtained from the [download page](https://www.spigotmc.org/resources/armorstandeditor-reborn.94503/) or our [release tracker](https://github.com/Wolfst0rm/ArmorStandEditor/releases) here on Github. From 3a1d20b6a5253e5df596216cb73aa968fbbf7af4 Mon Sep 17 00:00:00 2001 From: Wolfie / Larry Date: Wed, 1 Sep 2021 21:10:09 +0200 Subject: [PATCH 118/369] [CORE] Add bStats Metrics (#5) * [bStats] Add Metrics to be Tracked. Signed-off-by: Wolfstorm * [bStats] Code Review Remarks from CodeFactor Signed-off-by: Wolfstorm --- .../ArmorStandEditorPlugin.java | 85 +++++++++++++++---- 1 file changed, 69 insertions(+), 16 deletions(-) diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/ArmorStandEditorPlugin.java b/src/main/java/io/github/rypofalem/armorstandeditor/ArmorStandEditorPlugin.java index 8d2b231b..3e8924f7 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/ArmorStandEditorPlugin.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/ArmorStandEditorPlugin.java @@ -22,6 +22,7 @@ import io.github.rypofalem.armorstandeditor.language.Language; import org.bstats.charts.AdvancedPie; +import org.bstats.charts.DrilldownPie; import org.bukkit.Bukkit; import org.bukkit.ChatColor; import org.bukkit.Material; @@ -38,10 +39,10 @@ import java.util.HashMap; import java.util.List; import java.util.Map; -import java.util.concurrent.Callable; import org.bstats.bukkit.Metrics; import org.bstats.charts.SimplePie; +import org.bstats.charts.DrilldownPie; public class ArmorStandEditorPlugin extends JavaPlugin{ @@ -77,6 +78,8 @@ public class ArmorStandEditorPlugin extends JavaPlugin{ private static ArmorStandEditorPlugin plugin; + private static final int PLUGIN_ID = 12668; + public ArmorStandEditorPlugin(){ instance = this; } @@ -86,20 +89,6 @@ public void onEnable(){ scoreboard = this.getServer().getScoreboardManager().getMainScoreboard(); registerScoreboards(); - //Metrics/bStats Support - int pluginID = 12668; - Metrics metrics = new Metrics(this, pluginID); - - /*TODO: Metrics Charts (Optional but might add some useful stuff) - * TODO: Useful to Track Language Usage (config: lang) - * TODO: Useful to Track RequireToolData Usage (config: requireToolData) - * TODO: Useful to Track RequireToolLore Usage (config: requireToolLore) - * TODO: Useful to Track ActionBar Usage (config: sendMessagesToActionBar) - * TODO: Useful to Track DebugMode Usage (config: debug) - * TODO: Useful to Track Java Version (java.Version) - * - */ - //Get NMS Version nmsVersion = getServer().getClass().getPackage().getName().replace(".",",").split(",")[3]; @@ -200,16 +189,20 @@ public void onEnable(){ sendToActionBar = getConfig().getBoolean("sendMessagesToActionBar", true); glowItemFrames = getConfig().getBoolean("glowingItemFrame", true); + //Get Metrics from bStats + getMetrics(); + editorManager = new PlayerEditorManager(this); execute = new CommandEx(this); getCommand("ase").setExecutor(execute); //Ignore the warning with this. GetCommand is Nullable. Will be fixed in the future getServer().getPluginManager().registerEvents(editorManager, this); + + } //Implement Glow Effects for Wolfstorm/ArmorStandEditor-Issues#5 - Add Disable Slots with Different Glow than Default private void registerScoreboards() { getLogger().info("Registering Scoreboards required for Glowing Effects"); - scoreboard.registerNewTeam("ASLocked"); scoreboard.getTeam("ASLocked").setColor(ChatColor.RED); @@ -295,6 +288,66 @@ public boolean isEditTool(ItemStack itemStk){ return true; } + //Metrics/bStats Support + private void getMetrics(){ + + Metrics metrics = new Metrics(this, PLUGIN_ID); + + //RequireToolLore Metric + metrics.addCustomChart(new SimplePie("tool_lore_enabled", () -> { + return getConfig().getString("requireToolLore"); + })); + + //RequireToolData + metrics.addCustomChart(new SimplePie("tool_data_enabled", () ->{ + return getConfig().getString("requireToolData"); + })); + + //Send Messages to ActionBar + metrics.addCustomChart(new SimplePie("action_bar_messages", () -> { + return getConfig().getString("sendMessagesToActionBar"); + })); + + //Debug Mode Enabled? + metrics.addCustomChart(new SimplePie("uses_debug_mode", () -> { + return getConfig().getString("debug"); + })); + + //Language is used + metrics.addCustomChart(new DrilldownPie("language_used", () -> { + Map> map = new HashMap<>(); + Map entry = new HashMap<>(); + + String languageUsed = getConfig().getString("lang"); + entry.put(languageUsed, 1); + + assert languageUsed != null; + if(languageUsed.startsWith("nl")){ + map.put("Dutch", entry); + } else if(languageUsed.startsWith("de")){ + map.put("German", entry); + } else if(languageUsed.startsWith("es")){ + map.put("Spanish", entry); + } else if(languageUsed.startsWith("fr")){ + map.put("French", entry); + } else if(languageUsed.startsWith("ja")){ + map.put("Japanese", entry); + } else if(languageUsed.startsWith("pl")){ + map.put("Polish", entry); + } else if(languageUsed.startsWith("ro")){ + map.put("Romanian", entry); + } else if(languageUsed.startsWith("uk")){ + map.put("Ukrainian", entry); + } else if(languageUsed.startsWith("zh")){ + map.put("Chinese", entry); + } else{ + map.put("Other", entry); + } + + return map; + })); + + } public NamespacedKey getIconKey() { if(iconKey == null) iconKey = new NamespacedKey(this, "command_icon"); From efc9ccced2c5045ec9971141407c44a6c74c1903 Mon Sep 17 00:00:00 2001 From: Wolfstorm Date: Wed, 1 Sep 2021 21:14:15 +0200 Subject: [PATCH 119/369] [CORe] Update GitIgnore Signed-off-by: Wolfstorm --- .gitignore | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index e094a13a..478dd2cd 100644 --- a/.gitignore +++ b/.gitignore @@ -4,5 +4,6 @@ target/ /bin/ /.project /.classpath -/src/main/java/META-INF/ /.settings/ +/src/main/java/META-INF/*.MF +/src/main/java/META-INF/ From 5263abcb47c940a1ddffb43f5340d0aeb3562b06 Mon Sep 17 00:00:00 2001 From: Wolfstorm Date: Wed, 1 Sep 2021 21:33:54 +0200 Subject: [PATCH 120/369] [CORE] Fix bStats Import Issues and Crashes when using Latest Unstable. Insert TODO to fix Wolfst0rm/ArmorStandEditor-Issues#3 Signed-off-by: Wolfstorm --- .../ArmorStandEditorPlugin.java | 7 +- .../rypofalem/armorstandeditor/Metrics.java | 848 ++++++++++++++++++ .../armorstandeditor/PlayerEditor.java | 1 + 3 files changed, 851 insertions(+), 5 deletions(-) create mode 100644 src/main/java/io/github/rypofalem/armorstandeditor/Metrics.java diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/ArmorStandEditorPlugin.java b/src/main/java/io/github/rypofalem/armorstandeditor/ArmorStandEditorPlugin.java index 3e8924f7..d0301e29 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/ArmorStandEditorPlugin.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/ArmorStandEditorPlugin.java @@ -20,9 +20,9 @@ package io.github.rypofalem.armorstandeditor; import io.github.rypofalem.armorstandeditor.language.Language; +import io.github.rypofalem.armorstandeditor.Metrics.DrilldownPie; +import io.github.rypofalem.armorstandeditor.Metrics.SimplePie; -import org.bstats.charts.AdvancedPie; -import org.bstats.charts.DrilldownPie; import org.bukkit.Bukkit; import org.bukkit.ChatColor; import org.bukkit.Material; @@ -40,9 +40,6 @@ import java.util.List; import java.util.Map; -import org.bstats.bukkit.Metrics; -import org.bstats.charts.SimplePie; -import org.bstats.charts.DrilldownPie; public class ArmorStandEditorPlugin extends JavaPlugin{ diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/Metrics.java b/src/main/java/io/github/rypofalem/armorstandeditor/Metrics.java new file mode 100644 index 00000000..0f1481bd --- /dev/null +++ b/src/main/java/io/github/rypofalem/armorstandeditor/Metrics.java @@ -0,0 +1,848 @@ +package io.github.rypofalem.armorstandeditor; + +import java.io.BufferedReader; +import java.io.ByteArrayOutputStream; +import java.io.DataOutputStream; +import java.io.File; +import java.io.IOException; +import java.io.InputStreamReader; +import java.lang.reflect.Method; +import java.net.URL; +import java.nio.charset.StandardCharsets; +import java.util.Arrays; +import java.util.Collection; +import java.util.HashSet; +import java.util.Map; +import java.util.Objects; +import java.util.Set; +import java.util.UUID; +import java.util.concurrent.Callable; +import java.util.concurrent.Executors; +import java.util.concurrent.ScheduledExecutorService; +import java.util.concurrent.TimeUnit; +import java.util.function.BiConsumer; +import java.util.function.Consumer; +import java.util.function.Supplier; +import java.util.logging.Level; +import java.util.stream.Collectors; +import java.util.zip.GZIPOutputStream; +import javax.net.ssl.HttpsURLConnection; +import org.bukkit.Bukkit; +import org.bukkit.configuration.file.YamlConfiguration; +import org.bukkit.entity.Player; +import org.bukkit.plugin.Plugin; +import org.bukkit.plugin.java.JavaPlugin; + +public class Metrics { + + private final Plugin plugin; + + private final MetricsBase metricsBase; + + /** + * Creates a new Metrics instance. + * + * @param plugin Your plugin instance. + * @param serviceId The id of the service. It can be found at What is my plugin id? + */ + public Metrics(JavaPlugin plugin, int serviceId) { + this.plugin = plugin; + // Get the config file + File bStatsFolder = new File(plugin.getDataFolder().getParentFile(), "bStats"); + File configFile = new File(bStatsFolder, "config.yml"); + YamlConfiguration config = YamlConfiguration.loadConfiguration(configFile); + if (!config.isSet("serverUuid")) { + config.addDefault("enabled", true); + config.addDefault("serverUuid", UUID.randomUUID().toString()); + config.addDefault("logFailedRequests", false); + config.addDefault("logSentData", false); + config.addDefault("logResponseStatusText", false); + // Inform the server owners about bStats + config + .options() + .header( + "bStats (https://bStats.org) collects some basic information for plugin authors, like how\n" + + "many people use their plugin and their total player count. It's recommended to keep bStats\n" + + "enabled, but if you're not comfortable with this, you can turn this setting off. There is no\n" + + "performance penalty associated with having metrics enabled, and data sent to bStats is fully\n" + + "anonymous.") + .copyDefaults(true); + try { + config.save(configFile); + } catch (IOException ignored) { + } + } + // Load the data + boolean enabled = config.getBoolean("enabled", true); + String serverUUID = config.getString("serverUuid"); + boolean logErrors = config.getBoolean("logFailedRequests", false); + boolean logSentData = config.getBoolean("logSentData", false); + boolean logResponseStatusText = config.getBoolean("logResponseStatusText", false); + metricsBase = + new MetricsBase( + "bukkit", + serverUUID, + serviceId, + enabled, + this::appendPlatformData, + this::appendServiceData, + submitDataTask -> Bukkit.getScheduler().runTask(plugin, submitDataTask), + plugin::isEnabled, + (message, error) -> this.plugin.getLogger().log(Level.WARNING, message, error), + (message) -> this.plugin.getLogger().log(Level.INFO, message), + logErrors, + logSentData, + logResponseStatusText); + } + + /** + * Adds a custom chart. + * + * @param chart The chart to add. + */ + public void addCustomChart(CustomChart chart) { + metricsBase.addCustomChart(chart); + } + + private void appendPlatformData(JsonObjectBuilder builder) { + builder.appendField("playerAmount", getPlayerAmount()); + builder.appendField("onlineMode", Bukkit.getOnlineMode() ? 1 : 0); + builder.appendField("bukkitVersion", Bukkit.getVersion()); + builder.appendField("bukkitName", Bukkit.getName()); + builder.appendField("javaVersion", System.getProperty("java.version")); + builder.appendField("osName", System.getProperty("os.name")); + builder.appendField("osArch", System.getProperty("os.arch")); + builder.appendField("osVersion", System.getProperty("os.version")); + builder.appendField("coreCount", Runtime.getRuntime().availableProcessors()); + } + + private void appendServiceData(JsonObjectBuilder builder) { + builder.appendField("pluginVersion", plugin.getDescription().getVersion()); + } + + private int getPlayerAmount() { + try { + // Around MC 1.8 the return type was changed from an array to a collection, + // This fixes java.lang.NoSuchMethodError: + // org.bukkit.Bukkit.getOnlinePlayers()Ljava/util/Collection; + Method onlinePlayersMethod = Class.forName("org.bukkit.Server").getMethod("getOnlinePlayers"); + return onlinePlayersMethod.getReturnType().equals(Collection.class) + ? ((Collection) onlinePlayersMethod.invoke(Bukkit.getServer())).size() + : ((Player[]) onlinePlayersMethod.invoke(Bukkit.getServer())).length; + } catch (Exception e) { + // Just use the new method if the reflection failed + return Bukkit.getOnlinePlayers().size(); + } + } + + public static class MetricsBase { + + /** The version of the Metrics class. */ + public static final String METRICS_VERSION = "2.2.1"; + + private static final ScheduledExecutorService scheduler = + Executors.newScheduledThreadPool(1, task -> new Thread(task, "bStats-Metrics")); + + private static final String REPORT_URL = "https://bStats.org/api/v2/data/%s"; + + private final String platform; + + private final String serverUuid; + + private final int serviceId; + + private final Consumer appendPlatformDataConsumer; + + private final Consumer appendServiceDataConsumer; + + private final Consumer submitTaskConsumer; + + private final Supplier checkServiceEnabledSupplier; + + private final BiConsumer errorLogger; + + private final Consumer infoLogger; + + private final boolean logErrors; + + private final boolean logSentData; + + private final boolean logResponseStatusText; + + private final Set customCharts = new HashSet<>(); + + private final boolean enabled; + + /** + * Creates a new MetricsBase class instance. + * + * @param platform The platform of the service. + * @param serviceId The id of the service. + * @param serverUuid The server uuid. + * @param enabled Whether or not data sending is enabled. + * @param appendPlatformDataConsumer A consumer that receives a {@code JsonObjectBuilder} and + * appends all platform-specific data. + * @param appendServiceDataConsumer A consumer that receives a {@code JsonObjectBuilder} and + * appends all service-specific data. + * @param submitTaskConsumer A consumer that takes a runnable with the submit task. This can be + * used to delegate the data collection to a another thread to prevent errors caused by + * concurrency. Can be {@code null}. + * @param checkServiceEnabledSupplier A supplier to check if the service is still enabled. + * @param errorLogger A consumer that accepts log message and an error. + * @param infoLogger A consumer that accepts info log messages. + * @param logErrors Whether or not errors should be logged. + * @param logSentData Whether or not the sent data should be logged. + * @param logResponseStatusText Whether or not the response status text should be logged. + */ + public MetricsBase( + String platform, + String serverUuid, + int serviceId, + boolean enabled, + Consumer appendPlatformDataConsumer, + Consumer appendServiceDataConsumer, + Consumer submitTaskConsumer, + Supplier checkServiceEnabledSupplier, + BiConsumer errorLogger, + Consumer infoLogger, + boolean logErrors, + boolean logSentData, + boolean logResponseStatusText) { + this.platform = platform; + this.serverUuid = serverUuid; + this.serviceId = serviceId; + this.enabled = enabled; + this.appendPlatformDataConsumer = appendPlatformDataConsumer; + this.appendServiceDataConsumer = appendServiceDataConsumer; + this.submitTaskConsumer = submitTaskConsumer; + this.checkServiceEnabledSupplier = checkServiceEnabledSupplier; + this.errorLogger = errorLogger; + this.infoLogger = infoLogger; + this.logErrors = logErrors; + this.logSentData = logSentData; + this.logResponseStatusText = logResponseStatusText; + checkRelocation(); + if (enabled) { + startSubmitting(); + } + } + + public void addCustomChart(CustomChart chart) { + this.customCharts.add(chart); + } + + private void startSubmitting() { + final Runnable submitTask = + () -> { + if (!enabled || !checkServiceEnabledSupplier.get()) { + // Submitting data or service is disabled + scheduler.shutdown(); + return; + } + if (submitTaskConsumer != null) { + submitTaskConsumer.accept(this::submitData); + } else { + this.submitData(); + } + }; + // Many servers tend to restart at a fixed time at xx:00 which causes an uneven distribution + // of requests on the + // bStats backend. To circumvent this problem, we introduce some randomness into the initial + // and second delay. + // WARNING: You must not modify and part of this Metrics class, including the submit delay or + // frequency! + // WARNING: Modifying this code will get your plugin banned on bStats. Just don't do it! + long initialDelay = (long) (1000 * 60 * (3 + Math.random() * 3)); + long secondDelay = (long) (1000 * 60 * (Math.random() * 30)); + scheduler.schedule(submitTask, initialDelay, TimeUnit.MILLISECONDS); + scheduler.scheduleAtFixedRate( + submitTask, initialDelay + secondDelay, 1000 * 60 * 30, TimeUnit.MILLISECONDS); + } + + private void submitData() { + final JsonObjectBuilder baseJsonBuilder = new JsonObjectBuilder(); + appendPlatformDataConsumer.accept(baseJsonBuilder); + final JsonObjectBuilder serviceJsonBuilder = new JsonObjectBuilder(); + appendServiceDataConsumer.accept(serviceJsonBuilder); + JsonObjectBuilder.JsonObject[] chartData = + customCharts.stream() + .map(customChart -> customChart.getRequestJsonObject(errorLogger, logErrors)) + .filter(Objects::nonNull) + .toArray(JsonObjectBuilder.JsonObject[]::new); + serviceJsonBuilder.appendField("id", serviceId); + serviceJsonBuilder.appendField("customCharts", chartData); + baseJsonBuilder.appendField("service", serviceJsonBuilder.build()); + baseJsonBuilder.appendField("serverUUID", serverUuid); + baseJsonBuilder.appendField("metricsVersion", METRICS_VERSION); + JsonObjectBuilder.JsonObject data = baseJsonBuilder.build(); + scheduler.execute( + () -> { + try { + // Send the data + sendData(data); + } catch (Exception e) { + // Something went wrong! :( + if (logErrors) { + errorLogger.accept("Could not submit bStats metrics data", e); + } + } + }); + } + + private void sendData(JsonObjectBuilder.JsonObject data) throws Exception { + if (logSentData) { + infoLogger.accept("Sent bStats metrics data: " + data.toString()); + } + String url = String.format(REPORT_URL, platform); + HttpsURLConnection connection = (HttpsURLConnection) new URL(url).openConnection(); + // Compress the data to save bandwidth + byte[] compressedData = compress(data.toString()); + connection.setRequestMethod("POST"); + connection.addRequestProperty("Accept", "application/json"); + connection.addRequestProperty("Connection", "close"); + connection.addRequestProperty("Content-Encoding", "gzip"); + connection.addRequestProperty("Content-Length", String.valueOf(compressedData.length)); + connection.setRequestProperty("Content-Type", "application/json"); + connection.setRequestProperty("User-Agent", "Metrics-Service/1"); + connection.setDoOutput(true); + try (DataOutputStream outputStream = new DataOutputStream(connection.getOutputStream())) { + outputStream.write(compressedData); + } + StringBuilder builder = new StringBuilder(); + try (BufferedReader bufferedReader = + new BufferedReader(new InputStreamReader(connection.getInputStream()))) { + String line; + while ((line = bufferedReader.readLine()) != null) { + builder.append(line); + } + } + if (logResponseStatusText) { + infoLogger.accept("Sent data to bStats and received response: " + builder); + } + } + + /** Checks that the class was properly relocated. */ + private void checkRelocation() { + // You can use the property to disable the check in your test environment + if (System.getProperty("bstats.relocatecheck") == null + || !System.getProperty("bstats.relocatecheck").equals("false")) { + // Maven's Relocate is clever and changes strings, too. So we have to use this little + // "trick" ... :D + final String defaultPackage = + new String(new byte[] {'o', 'r', 'g', '.', 'b', 's', 't', 'a', 't', 's'}); + final String examplePackage = + new String(new byte[] {'y', 'o', 'u', 'r', '.', 'p', 'a', 'c', 'k', 'a', 'g', 'e'}); + // We want to make sure no one just copy & pastes the example and uses the wrong package + // names + if (MetricsBase.class.getPackage().getName().startsWith(defaultPackage) + || MetricsBase.class.getPackage().getName().startsWith(examplePackage)) { + throw new IllegalStateException("bStats Metrics class has not been relocated correctly!"); + } + } + } + + /** + * Gzips the given string. + * + * @param str The string to gzip. + * @return The gzipped string. + */ + private static byte[] compress(final String str) throws IOException { + if (str == null) { + return null; + } + ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + try (GZIPOutputStream gzip = new GZIPOutputStream(outputStream)) { + gzip.write(str.getBytes(StandardCharsets.UTF_8)); + } + return outputStream.toByteArray(); + } + } + + public static class AdvancedBarChart extends CustomChart { + + private final Callable> callable; + + /** + * Class constructor. + * + * @param chartId The id of the chart. + * @param callable The callable which is used to request the chart data. + */ + public AdvancedBarChart(String chartId, Callable> callable) { + super(chartId); + this.callable = callable; + } + + @Override + protected JsonObjectBuilder.JsonObject getChartData() throws Exception { + JsonObjectBuilder valuesBuilder = new JsonObjectBuilder(); + Map map = callable.call(); + if (map == null || map.isEmpty()) { + // Null = skip the chart + return null; + } + boolean allSkipped = true; + for (Map.Entry entry : map.entrySet()) { + if (entry.getValue().length == 0) { + // Skip this invalid + continue; + } + allSkipped = false; + valuesBuilder.appendField(entry.getKey(), entry.getValue()); + } + if (allSkipped) { + // Null = skip the chart + return null; + } + return new JsonObjectBuilder().appendField("values", valuesBuilder.build()).build(); + } + } + + public static class SimpleBarChart extends CustomChart { + + private final Callable> callable; + + /** + * Class constructor. + * + * @param chartId The id of the chart. + * @param callable The callable which is used to request the chart data. + */ + public SimpleBarChart(String chartId, Callable> callable) { + super(chartId); + this.callable = callable; + } + + @Override + protected JsonObjectBuilder.JsonObject getChartData() throws Exception { + JsonObjectBuilder valuesBuilder = new JsonObjectBuilder(); + Map map = callable.call(); + if (map == null || map.isEmpty()) { + // Null = skip the chart + return null; + } + for (Map.Entry entry : map.entrySet()) { + valuesBuilder.appendField(entry.getKey(), new int[] {entry.getValue()}); + } + return new JsonObjectBuilder().appendField("values", valuesBuilder.build()).build(); + } + } + + public static class MultiLineChart extends CustomChart { + + private final Callable> callable; + + /** + * Class constructor. + * + * @param chartId The id of the chart. + * @param callable The callable which is used to request the chart data. + */ + public MultiLineChart(String chartId, Callable> callable) { + super(chartId); + this.callable = callable; + } + + @Override + protected JsonObjectBuilder.JsonObject getChartData() throws Exception { + JsonObjectBuilder valuesBuilder = new JsonObjectBuilder(); + Map map = callable.call(); + if (map == null || map.isEmpty()) { + // Null = skip the chart + return null; + } + boolean allSkipped = true; + for (Map.Entry entry : map.entrySet()) { + if (entry.getValue() == 0) { + // Skip this invalid + continue; + } + allSkipped = false; + valuesBuilder.appendField(entry.getKey(), entry.getValue()); + } + if (allSkipped) { + // Null = skip the chart + return null; + } + return new JsonObjectBuilder().appendField("values", valuesBuilder.build()).build(); + } + } + + public static class AdvancedPie extends CustomChart { + + private final Callable> callable; + + /** + * Class constructor. + * + * @param chartId The id of the chart. + * @param callable The callable which is used to request the chart data. + */ + public AdvancedPie(String chartId, Callable> callable) { + super(chartId); + this.callable = callable; + } + + @Override + protected JsonObjectBuilder.JsonObject getChartData() throws Exception { + JsonObjectBuilder valuesBuilder = new JsonObjectBuilder(); + Map map = callable.call(); + if (map == null || map.isEmpty()) { + // Null = skip the chart + return null; + } + boolean allSkipped = true; + for (Map.Entry entry : map.entrySet()) { + if (entry.getValue() == 0) { + // Skip this invalid + continue; + } + allSkipped = false; + valuesBuilder.appendField(entry.getKey(), entry.getValue()); + } + if (allSkipped) { + // Null = skip the chart + return null; + } + return new JsonObjectBuilder().appendField("values", valuesBuilder.build()).build(); + } + } + + public abstract static class CustomChart { + + private final String chartId; + + protected CustomChart(String chartId) { + if (chartId == null) { + throw new IllegalArgumentException("chartId must not be null"); + } + this.chartId = chartId; + } + + public JsonObjectBuilder.JsonObject getRequestJsonObject( + BiConsumer errorLogger, boolean logErrors) { + JsonObjectBuilder builder = new JsonObjectBuilder(); + builder.appendField("chartId", chartId); + try { + JsonObjectBuilder.JsonObject data = getChartData(); + if (data == null) { + // If the data is null we don't send the chart. + return null; + } + builder.appendField("data", data); + } catch (Throwable t) { + if (logErrors) { + errorLogger.accept("Failed to get data for custom chart with id " + chartId, t); + } + return null; + } + return builder.build(); + } + + protected abstract JsonObjectBuilder.JsonObject getChartData() throws Exception; + } + + public static class SingleLineChart extends CustomChart { + + private final Callable callable; + + /** + * Class constructor. + * + * @param chartId The id of the chart. + * @param callable The callable which is used to request the chart data. + */ + public SingleLineChart(String chartId, Callable callable) { + super(chartId); + this.callable = callable; + } + + @Override + protected JsonObjectBuilder.JsonObject getChartData() throws Exception { + int value = callable.call(); + if (value == 0) { + // Null = skip the chart + return null; + } + return new JsonObjectBuilder().appendField("value", value).build(); + } + } + + public static class SimplePie extends CustomChart { + + private final Callable callable; + + /** + * Class constructor. + * + * @param chartId The id of the chart. + * @param callable The callable which is used to request the chart data. + */ + public SimplePie(String chartId, Callable callable) { + super(chartId); + this.callable = callable; + } + + @Override + protected JsonObjectBuilder.JsonObject getChartData() throws Exception { + String value = callable.call(); + if (value == null || value.isEmpty()) { + // Null = skip the chart + return null; + } + return new JsonObjectBuilder().appendField("value", value).build(); + } + } + + public static class DrilldownPie extends CustomChart { + + private final Callable>> callable; + + /** + * Class constructor. + * + * @param chartId The id of the chart. + * @param callable The callable which is used to request the chart data. + */ + public DrilldownPie(String chartId, Callable>> callable) { + super(chartId); + this.callable = callable; + } + + @Override + public JsonObjectBuilder.JsonObject getChartData() throws Exception { + JsonObjectBuilder valuesBuilder = new JsonObjectBuilder(); + Map> map = callable.call(); + if (map == null || map.isEmpty()) { + // Null = skip the chart + return null; + } + boolean reallyAllSkipped = true; + for (Map.Entry> entryValues : map.entrySet()) { + JsonObjectBuilder valueBuilder = new JsonObjectBuilder(); + boolean allSkipped = true; + for (Map.Entry valueEntry : map.get(entryValues.getKey()).entrySet()) { + valueBuilder.appendField(valueEntry.getKey(), valueEntry.getValue()); + allSkipped = false; + } + if (!allSkipped) { + reallyAllSkipped = false; + valuesBuilder.appendField(entryValues.getKey(), valueBuilder.build()); + } + } + if (reallyAllSkipped) { + // Null = skip the chart + return null; + } + return new JsonObjectBuilder().appendField("values", valuesBuilder.build()).build(); + } + } + + /** + * An extremely simple JSON builder. + * + *

While this class is neither feature-rich nor the most performant one, it's sufficient enough + * for its use-case. + */ + public static class JsonObjectBuilder { + + private StringBuilder builder = new StringBuilder(); + + private boolean hasAtLeastOneField = false; + + public JsonObjectBuilder() { + builder.append("{"); + } + + /** + * Appends a null field to the JSON. + * + * @param key The key of the field. + * @return A reference to this object. + */ + public JsonObjectBuilder appendNull(String key) { + appendFieldUnescaped(key, "null"); + return this; + } + + /** + * Appends a string field to the JSON. + * + * @param key The key of the field. + * @param value The value of the field. + * @return A reference to this object. + */ + public JsonObjectBuilder appendField(String key, String value) { + if (value == null) { + throw new IllegalArgumentException("JSON value must not be null"); + } + appendFieldUnescaped(key, "\"" + escape(value) + "\""); + return this; + } + + /** + * Appends an integer field to the JSON. + * + * @param key The key of the field. + * @param value The value of the field. + * @return A reference to this object. + */ + public JsonObjectBuilder appendField(String key, int value) { + appendFieldUnescaped(key, String.valueOf(value)); + return this; + } + + /** + * Appends an object to the JSON. + * + * @param key The key of the field. + * @param object The object. + * @return A reference to this object. + */ + public JsonObjectBuilder appendField(String key, JsonObject object) { + if (object == null) { + throw new IllegalArgumentException("JSON object must not be null"); + } + appendFieldUnescaped(key, object.toString()); + return this; + } + + /** + * Appends a string array to the JSON. + * + * @param key The key of the field. + * @param values The string array. + * @return A reference to this object. + */ + public JsonObjectBuilder appendField(String key, String[] values) { + if (values == null) { + throw new IllegalArgumentException("JSON values must not be null"); + } + String escapedValues = + Arrays.stream(values) + .map(value -> "\"" + escape(value) + "\"") + .collect(Collectors.joining(",")); + appendFieldUnescaped(key, "[" + escapedValues + "]"); + return this; + } + + /** + * Appends an integer array to the JSON. + * + * @param key The key of the field. + * @param values The integer array. + * @return A reference to this object. + */ + public JsonObjectBuilder appendField(String key, int[] values) { + if (values == null) { + throw new IllegalArgumentException("JSON values must not be null"); + } + String escapedValues = + Arrays.stream(values).mapToObj(String::valueOf).collect(Collectors.joining(",")); + appendFieldUnescaped(key, "[" + escapedValues + "]"); + return this; + } + + /** + * Appends an object array to the JSON. + * + * @param key The key of the field. + * @param values The integer array. + * @return A reference to this object. + */ + public JsonObjectBuilder appendField(String key, JsonObject[] values) { + if (values == null) { + throw new IllegalArgumentException("JSON values must not be null"); + } + String escapedValues = + Arrays.stream(values).map(JsonObject::toString).collect(Collectors.joining(",")); + appendFieldUnescaped(key, "[" + escapedValues + "]"); + return this; + } + + /** + * Appends a field to the object. + * + * @param key The key of the field. + * @param escapedValue The escaped value of the field. + */ + private void appendFieldUnescaped(String key, String escapedValue) { + if (builder == null) { + throw new IllegalStateException("JSON has already been built"); + } + if (key == null) { + throw new IllegalArgumentException("JSON key must not be null"); + } + if (hasAtLeastOneField) { + builder.append(","); + } + builder.append("\"").append(escape(key)).append("\":").append(escapedValue); + hasAtLeastOneField = true; + } + + /** + * Builds the JSON string and invalidates this builder. + * + * @return The built JSON string. + */ + public JsonObject build() { + if (builder == null) { + throw new IllegalStateException("JSON has already been built"); + } + JsonObject object = new JsonObject(builder.append("}").toString()); + builder = null; + return object; + } + + /** + * Escapes the given string like stated in https://www.ietf.org/rfc/rfc4627.txt. + * + *

This method escapes only the necessary characters '"', '\'. and '\u0000' - '\u001F'. + * Compact escapes are not used (e.g., '\n' is escaped as "\u000a" and not as "\n"). + * + * @param value The value to escape. + * @return The escaped value. + */ + private static String escape(String value) { + final StringBuilder builder = new StringBuilder(); + for (int i = 0; i < value.length(); i++) { + char c = value.charAt(i); + if (c == '"') { + builder.append("\\\""); + } else if (c == '\\') { + builder.append("\\\\"); + } else if (c <= '\u000F') { + builder.append("\\u000").append(Integer.toHexString(c)); + } else if (c <= '\u001F') { + builder.append("\\u00").append(Integer.toHexString(c)); + } else { + builder.append(c); + } + } + return builder.toString(); + } + + /** + * A super simple representation of a JSON object. + * + *

This class only exists to make methods of the {@link JsonObjectBuilder} type-safe and not + * allow a raw string inputs for methods like {@link JsonObjectBuilder#appendField(String, + * JsonObject)}. + */ + public static class JsonObject { + + private final String value; + + private JsonObject(String value) { + this.value = value; + } + + @Override + public String toString() { + return value; + } + } + } +} \ No newline at end of file diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditor.java b/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditor.java index 58ade5a7..15544a36 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditor.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditor.java @@ -367,6 +367,7 @@ void toggleVisible(ArmorStand armorStand) { void toggleItemFrameVisible(ItemFrame itemFrame) { if (!getPlayer().hasPermission("asedit.invisible")) return; //Changed to Invisible, better that visibility is all under same permission node //Potential for OnInteractEvent for ItemFrame to Disable Interaction + //TODO: Wolfst0rm/ArmorStandEditor-Issues#3 - ItemFrame Invisible Rotate Issue itemFrame.setVisible(!itemFrame.isVisible()); } From 9fb85c148cbd1c02821306a4f98cbff2602e7e6a Mon Sep 17 00:00:00 2001 From: Wolfstorm Date: Wed, 1 Sep 2021 21:35:18 +0200 Subject: [PATCH 121/369] [CORE] Remove Maven bStats unless Required. Signed-off-by: Wolfstorm --- pom.xml | 29 ----------------------------- 1 file changed, 29 deletions(-) diff --git a/pom.xml b/pom.xml index 0293acc9..63576d98 100644 --- a/pom.xml +++ b/pom.xml @@ -29,14 +29,6 @@ 1.17-R0.1-SNAPSHOT provided - - - org.bstats - bstats-bukkit - 2.2.1 - compile - - @@ -61,27 +53,6 @@ @{project.version} - - org.apache.maven.plugins - maven-shade-plugin - 3.2.4 - - - - org.bstats - io.github.rypofalem.armorstandeditor - - - - - - package - - shade - - - - From 8f4e99886a36442f66594f196eba4340629336f5 Mon Sep 17 00:00:00 2001 From: Wolfstorm Date: Sat, 4 Sep 2021 21:42:39 +0200 Subject: [PATCH 122/369] [CORE] Fix for Wolfst0rm/ArmorStandEditor-Issues#6: Translation of Off and On Keys in ToggleGravity no longer works. Updated nl_NL to include new Strings. Will move over the other Languages shortly. Signed-off-by: Wolfstorm --- .../rypofalem/armorstandeditor/PlayerEditor.java | 11 ++++++++--- src/main/resources/lang/nl_NL.yml | 4 ++-- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditor.java b/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditor.java index 15544a36..8c85de11 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditor.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditor.java @@ -66,6 +66,7 @@ public class PlayerEditor { int frameTargetIndex = 0; EquipmentMenu equipMenu; long lastCancelled = 0; + private boolean state; public PlayerEditor(UUID uuid, ArmorStandEditorPlugin plugin) { this.uuid = uuid; @@ -345,10 +346,13 @@ private void toggleDisableSlots(ArmorStand armorStand) { } - private void toggleGravity(ArmorStand armorStand) { + private void toggleGravity(ArmorStand armorStand) { //Fix for Wolfst0rm/ArmorStandEditor-Issues#6: Translation of On/Off Keys are broken + armorStand.setGravity(!armorStand.hasGravity()); - String state = armorStand.hasGravity() ? "on" : "off"; - sendMessage("setgravity", state); + //String state = armorStand.hasGravity() ? "on" : "off"; + //sendMessage("setgravity", state); + sendMessage("setgravity", String.valueOf(armorStand.hasGravity())); + } void togglePlate(ArmorStand armorStand) { @@ -367,6 +371,7 @@ void toggleVisible(ArmorStand armorStand) { void toggleItemFrameVisible(ItemFrame itemFrame) { if (!getPlayer().hasPermission("asedit.invisible")) return; //Changed to Invisible, better that visibility is all under same permission node //Potential for OnInteractEvent for ItemFrame to Disable Interaction + //TODO: Wolfst0rm/ArmorStandEditor-Issues#3 - ItemFrame Invisible Rotate Issue itemFrame.setVisible(!itemFrame.isVisible()); } diff --git a/src/main/resources/lang/nl_NL.yml b/src/main/resources/lang/nl_NL.yml index cb7e8b37..121d9b61 100644 --- a/src/main/resources/lang/nl_NL.yml +++ b/src/main/resources/lang/nl_NL.yml @@ -43,8 +43,8 @@ setadj: fine: Fijn setgravity: msg: Zwaartekracht staat nu . - 'true': aan - 'false': uit + true: aan + false: uit nomode: msg: Klik met het aanpas tool weg van een armorstand om een aanpas modus te selecteren! copied: From 301387bc16d3fbbefe16b8931889e23ca770df84 Mon Sep 17 00:00:00 2001 From: Wolfstorm Date: Sat, 4 Sep 2021 21:45:59 +0200 Subject: [PATCH 123/369] [CI-SKIP] Fix Language Files to reflect changes related to Wolfst0rm/ArmorStandEditor-Issues#6 Signed-off-by: Wolfstorm --- src/main/resources/lang/de_DE.yml | 4 ++-- src/main/resources/lang/en_US.yml | 4 ++-- src/main/resources/lang/es_ES.yml | 4 ++-- src/main/resources/lang/fr_FR.yml | 4 ++-- src/main/resources/lang/ja_JP.yml | 4 ++-- src/main/resources/lang/pl_PL.yml | 4 ++-- src/main/resources/lang/ro_RO.yml | 4 ++-- src/main/resources/lang/test_NA.yml | 4 ++-- src/main/resources/lang/uk_UA.yml | 4 ++-- src/main/resources/lang/zh_CN.yml | 4 ++-- 10 files changed, 20 insertions(+), 20 deletions(-) diff --git a/src/main/resources/lang/de_DE.yml b/src/main/resources/lang/de_DE.yml index 3a7c2670..121bee41 100644 --- a/src/main/resources/lang/de_DE.yml +++ b/src/main/resources/lang/de_DE.yml @@ -43,8 +43,8 @@ setadj: fine: Fein setgravity: msg: Erdanziehungskraft . - on: an - off: aus + true: an + false: aus nomode: msg: Klicke mit dem Bearbeitungswerkzeug weg vom Ruestungsstaender um den Bearbeitungsmodus auszuwählen! copied: diff --git a/src/main/resources/lang/en_US.yml b/src/main/resources/lang/en_US.yml index e1877a4e..28990d07 100644 --- a/src/main/resources/lang/en_US.yml +++ b/src/main/resources/lang/en_US.yml @@ -46,8 +46,8 @@ setadj: fine: Fine setgravity: msg: Gravity turned . - on: on - off: off + true: on + false: off nomode: msg: Click with the edit tool away from an armorstand to select an editing mode first! copied: diff --git a/src/main/resources/lang/es_ES.yml b/src/main/resources/lang/es_ES.yml index 455b34cd..6ba123f5 100644 --- a/src/main/resources/lang/es_ES.yml +++ b/src/main/resources/lang/es_ES.yml @@ -40,8 +40,8 @@ setadj: fine: bien setgravity: msg: La gravedad esta en . - on: on - off: off + true: on + false: off nomode: msg: Haz click con la herramienta de edicion en un soporte de armaduras para seleccionar un modo de edicion primero copied: diff --git a/src/main/resources/lang/fr_FR.yml b/src/main/resources/lang/fr_FR.yml index ec020ede..0f65aaae 100644 --- a/src/main/resources/lang/fr_FR.yml +++ b/src/main/resources/lang/fr_FR.yml @@ -42,8 +42,8 @@ setadj: fine: fin setgravity: msg: Gravité . - on: activée - off: désactivée + true: activée + false: désactivée nomode: msg: Cliquez d'abord avec cet outil hors d'un valet pour sélectionner un mode d'édition. copied: diff --git a/src/main/resources/lang/ja_JP.yml b/src/main/resources/lang/ja_JP.yml index d5f299d6..bf92ed15 100644 --- a/src/main/resources/lang/ja_JP.yml +++ b/src/main/resources/lang/ja_JP.yml @@ -43,8 +43,8 @@ setadj: fine: 細かい setgravity: msg: 自由落下を に変更しました。 - on: ON - off: OFF + true: ON + false: OFF nomode: msg: 編集ツールをアーマスタンドから目を逸らした方向でクリックをして、最初の編集モードを選択してください! copied: diff --git a/src/main/resources/lang/pl_PL.yml b/src/main/resources/lang/pl_PL.yml index 885f0e4f..ea2bc4fa 100644 --- a/src/main/resources/lang/pl_PL.yml +++ b/src/main/resources/lang/pl_PL.yml @@ -42,8 +42,8 @@ setadj: fine: Małe setgravity: msg: Grawitacja została . - on: włączona - off: wyłączona + true: włączona + false: wyłączona nomode: msg: Kliknij narzędziem z dala od stojaka na zbroję, aby najpierw wybrać tryb edycji! copied: diff --git a/src/main/resources/lang/ro_RO.yml b/src/main/resources/lang/ro_RO.yml index b278207a..e06a4dee 100644 --- a/src/main/resources/lang/ro_RO.yml +++ b/src/main/resources/lang/ro_RO.yml @@ -41,8 +41,8 @@ setadj: fine: Fin setgravity: msg: Gravitatie . - on: pornita - off: oprita + true: pornita + false: oprita nomode: msg: Click cu unealta de editare departe de un armorstand pentru a selecta mai intai modul de editare! copied: diff --git a/src/main/resources/lang/test_NA.yml b/src/main/resources/lang/test_NA.yml index c97977f2..618d4ca1 100644 --- a/src/main/resources/lang/test_NA.yml +++ b/src/main/resources/lang/test_NA.yml @@ -41,8 +41,8 @@ setadj: fine: Fine setgravity: msg: Gravity turned . - on: on - off: off + true: on + false: off nomode: msg: Click with the edit tool away from an armorstand to select an editing mode first! copied: diff --git a/src/main/resources/lang/uk_UA.yml b/src/main/resources/lang/uk_UA.yml index 41218840..0a1e156e 100644 --- a/src/main/resources/lang/uk_UA.yml +++ b/src/main/resources/lang/uk_UA.yml @@ -39,8 +39,8 @@ setadj: fine: Делікатну setgravity: msg: Гравітація . - 'true': увімкнена - 'false': вимкнена + true: увімкнена + false: вимкнена nomode: msg: Натисни інструментом редагування поза стендом щоб обрати режим! copied: diff --git a/src/main/resources/lang/zh_CN.yml b/src/main/resources/lang/zh_CN.yml index 968b99cf..70be67c3 100644 --- a/src/main/resources/lang/zh_CN.yml +++ b/src/main/resources/lang/zh_CN.yml @@ -44,8 +44,8 @@ setadj: fine: 微调 setgravity: msg: 重力 . - on: 开启 - off: 关闭 + true: 开启 + false: 关闭 nomode: msg: 请先点击空气选择设定模式! copied: From 7cfa53434294ab9f3ac1ed741c0171d8d8c24235 Mon Sep 17 00:00:00 2001 From: Wolfstorm Date: Sat, 4 Sep 2021 21:49:19 +0200 Subject: [PATCH 124/369] [CI-SKIP] Fix CI Skip in Maven Run Signed-off-by: Wolfstorm --- pom.xml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 63576d98..9d2d2582 100644 --- a/pom.xml +++ b/pom.xml @@ -49,7 +49,8 @@ maven-release-plugin ${maven-release-plugin.version} - [ci skip] + [CI-SKIP] + [CI SKIP] @{project.version} From a13c9f0bc954743be63212362dad0407769d7842 Mon Sep 17 00:00:00 2001 From: Wolfstorm Date: Sat, 4 Sep 2021 21:50:44 +0200 Subject: [PATCH 125/369] [CI SKIP] Fix CI Skip in Maven Run Signed-off-by: Wolfstorm --- pom.xml | 1 - 1 file changed, 1 deletion(-) diff --git a/pom.xml b/pom.xml index 9d2d2582..e2ce0b81 100644 --- a/pom.xml +++ b/pom.xml @@ -49,7 +49,6 @@ maven-release-plugin ${maven-release-plugin.version} - [CI-SKIP] [CI SKIP] @{project.version} From 49a80a5c9a3283c2dc93be252da1322c0bd6e1d0 Mon Sep 17 00:00:00 2001 From: Wolfstorm Date: Sat, 4 Sep 2021 21:56:28 +0200 Subject: [PATCH 126/369] [CI SKIP] Fix CI Skip in Maven Run Signed-off-by: Wolfstorm --- .github/workflows/maven-publish.yml | 4 +--- pom.xml | 2 +- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/.github/workflows/maven-publish.yml b/.github/workflows/maven-publish.yml index f92831a8..a1f514db 100644 --- a/.github/workflows/maven-publish.yml +++ b/.github/workflows/maven-publish.yml @@ -19,11 +19,9 @@ on: jobs: compile: - + if: "!contains(github.event.head_commit.message, 'ci-skip') || !contains(github.event.head_commit.message, 'CI-SKIP') || !contains(github.event.head_commit.message, 'CI SKIP') || !contains(github.event.head_commit.message, 'ci skip') " runs-on: ubuntu-latest - steps: - # 1. Check out the current working tree - name: Checkout ArmorStandEditor Repository uses: actions/checkout@v2 diff --git a/pom.xml b/pom.xml index e2ce0b81..63576d98 100644 --- a/pom.xml +++ b/pom.xml @@ -49,7 +49,7 @@ maven-release-plugin ${maven-release-plugin.version} - [CI SKIP] + [ci skip] @{project.version} From 413ee96530c87459b29e419a9c55859a935ced0b Mon Sep 17 00:00:00 2001 From: Wolfie / Larry Date: Tue, 7 Sep 2021 15:32:30 +0200 Subject: [PATCH 127/369] [CI] Fix CI for PRs --- .github/workflows/maven-publish.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/maven-publish.yml b/.github/workflows/maven-publish.yml index a1f514db..ce77dc99 100644 --- a/.github/workflows/maven-publish.yml +++ b/.github/workflows/maven-publish.yml @@ -12,7 +12,6 @@ on: - '.github/workflows/maven-publish.yml' pull_request: - branches: [ master ] paths: - 'src/*' - 'pom.xml' From 9b2617dccf7a8087c8488b21324fdff5e5225a1b Mon Sep 17 00:00:00 2001 From: Github Date: Tue, 7 Sep 2021 15:37:31 +0200 Subject: [PATCH 128/369] [CORE] CI Fix Signed-off-by: Github --- .github/workflows/maven-publish.yml | 14 +------------- 1 file changed, 1 insertion(+), 13 deletions(-) diff --git a/.github/workflows/maven-publish.yml b/.github/workflows/maven-publish.yml index ce77dc99..6f3a53a5 100644 --- a/.github/workflows/maven-publish.yml +++ b/.github/workflows/maven-publish.yml @@ -2,20 +2,8 @@ # For more information see: https://help.github.com/actions/language-and-framework-guides/building-and-testing-java-with-maven name: Java CI with Maven +on: [push, pull_request] -on: - push: - branches: [ master ] - paths: - - 'src/**' - - 'pom.xml' - - '.github/workflows/maven-publish.yml' - - pull_request: - paths: - - 'src/*' - - 'pom.xml' - jobs: compile: if: "!contains(github.event.head_commit.message, 'ci-skip') || !contains(github.event.head_commit.message, 'CI-SKIP') || !contains(github.event.head_commit.message, 'CI SKIP') || !contains(github.event.head_commit.message, 'ci skip') " From e955fb7a764373705fda5521fafecab889119f2a Mon Sep 17 00:00:00 2001 From: Github Date: Mon, 20 Sep 2021 11:00:20 +0200 Subject: [PATCH 129/369] [ci skip] Readme Update to point to Devel/Feature Roadmap Signed-off-by: Wolfstorm Signed-off-by: Github --- README.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 5772d6b3..69e8a910 100644 --- a/README.md +++ b/README.md @@ -4,16 +4,14 @@ [![Build Status](https://github.com/Wolfst0rm/ArmorStandEditor/actions/workflows/maven-publish.yml/badge.svg)](https://github.com/Wolfst0rm/ArmorStandEditor/actions/workflows/maven-publish.yml) [![wakatime](https://wakatime.com/badge/github/Wolfst0rm/ArmorStandEditor.svg)](https://wakatime.com/badge/github/Wolfst0rm/ArmorStandEditor) [![CodeFactor](https://www.codefactor.io/repository/github/wolfst0rm/armorstandeditor/badge)](https://www.codefactor.io/repository/github/wolfst0rm/armorstandeditor) -[![Compatibility](https://img.shields.io/badge/Compatable%20With-Paper%2C%20Spigot%20and%20related%20Forks-green)](https://img.shields.io/badge/Compatable%20With-Paper%2C%20Spigot%20and%20related%20Forks-green) -[![License](https://img.shields.io/badge/Licence-GNU%20Public%20V2%20-red)](https://img.shields.io/badge/Licence-GNU%20Public%20V2%20-red) - +[![Compatibility/GetBukkit](https://img.shields.io/badge/Compatability-Paper%2C%20Spigot%2C%20Bukkit%20etc.%20(GetBukkit.org)-yellowgreen)](https://getbukkit.org/) +[![License](https://img.shields.io/badge/Licence-GNU%20Public%20V2%20-red)](https://github.com/Wolfst0rm/ArmorStandEditor/LICENSE.md) +[![Roadmap](https://img.shields.io/badge/Roadmap-ArmorStandEditor--Issues%2311-orange)](https://github.com/Wolfst0rm/ArmorStandEditor-Issues/issues/11) ArmorStandEditor is a plugin for [Spigot and related forks](https://www.spigotmc.org/resources/armorstandeditor-reborn.94503/) to allow players in survival to easily edit armor stand pose and attributes. ## Downloads - - Downloads for Version 1.17 and higher can be obtained from the [download page](https://www.spigotmc.org/resources/armorstandeditor-reborn.94503/) or our [release tracker](https://github.com/Wolfst0rm/ArmorStandEditor/releases) here on Github. For versions older than 1.17, then please use [the original versions download page](https://www.spigotmc.org/resources/armor-stand-editor-dead.7688/). @@ -53,6 +51,8 @@ subject to change in the future. The minimum enforced API Version is 1.13. * Targeting of an ArmorStand by pressing F with the tool in your hand * Glowing ArmorStand to signify Targetting and Slot Disables through the use of Scoreboards. +You can also follow our [Feature Roadmap](https://github.com/Wolfst0rm/ArmorStandEditor-Issues/issues/11) to see what we have planned (Updated as required). + ## Support Support for ArmorStandEditor is provided: * For API-Versions Higher than 1.13 but Fixes will not be retrofitted to older releases. From 610c7d55fbef8329588bbc61550fdf111e4050e7 Mon Sep 17 00:00:00 2001 From: Wolfstorm Date: Wed, 13 Oct 2021 20:13:24 +0200 Subject: [PATCH 130/369] [CORE] Update ItemFrame References in Language Files to future proof - More info soon! Signed-off-by: Wolfstorm --- .../github/rypofalem/armorstandeditor/PlayerEditor.java | 8 ++------ src/main/resources/lang/de_DE.yml | 2 ++ src/main/resources/lang/en_US.yml | 2 ++ src/main/resources/lang/es_ES.yml | 2 ++ src/main/resources/lang/fr_FR.yml | 2 ++ src/main/resources/lang/ja_JP.yml | 2 ++ src/main/resources/lang/nl_NL.yml | 2 ++ src/main/resources/lang/pl_PL.yml | 2 ++ src/main/resources/lang/ro_RO.yml | 2 ++ src/main/resources/lang/test_NA.yml | 2 ++ src/main/resources/lang/uk_UA.yml | 6 ++---- src/main/resources/lang/zh_CN.yml | 2 ++ 12 files changed, 24 insertions(+), 10 deletions(-) diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditor.java b/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditor.java index 8c85de11..4752fe81 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditor.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditor.java @@ -182,7 +182,7 @@ public void editItemFrame(ItemFrame itemFrame) { case RESET: itemFrame.setVisible(true); case NONE: - sendMessage("nomode", null); + sendMessage("nomodeif", null); break; } } @@ -349,8 +349,6 @@ private void toggleDisableSlots(ArmorStand armorStand) { private void toggleGravity(ArmorStand armorStand) { //Fix for Wolfst0rm/ArmorStandEditor-Issues#6: Translation of On/Off Keys are broken armorStand.setGravity(!armorStand.hasGravity()); - //String state = armorStand.hasGravity() ? "on" : "off"; - //sendMessage("setgravity", state); sendMessage("setgravity", String.valueOf(armorStand.hasGravity())); } @@ -370,9 +368,7 @@ void toggleVisible(ArmorStand armorStand) { void toggleItemFrameVisible(ItemFrame itemFrame) { if (!getPlayer().hasPermission("asedit.invisible")) return; //Changed to Invisible, better that visibility is all under same permission node - //Potential for OnInteractEvent for ItemFrame to Disable Interaction - - //TODO: Wolfst0rm/ArmorStandEditor-Issues#3 - ItemFrame Invisible Rotate Issue + //W0lfstorm/ArmorStandEditor-Issues#3 isnt going to be fixed in the near future. Ignoring for now itemFrame.setVisible(!itemFrame.isVisible()); } diff --git a/src/main/resources/lang/de_DE.yml b/src/main/resources/lang/de_DE.yml index 121bee41..ac22fd56 100644 --- a/src/main/resources/lang/de_DE.yml +++ b/src/main/resources/lang/de_DE.yml @@ -47,6 +47,8 @@ setgravity: false: aus nomode: msg: Klicke mit dem Bearbeitungswerkzeug weg vom Ruestungsstaender um den Bearbeitungsmodus auszuwählen! +nomodeif: + msg: Click with the Edit Tool away from the ItemFrame to select a mode first! copied: msg: Zustand des Ruestungsstaenders wurde zum Slot kopiert. pasted: diff --git a/src/main/resources/lang/en_US.yml b/src/main/resources/lang/en_US.yml index 28990d07..1bf14f1e 100644 --- a/src/main/resources/lang/en_US.yml +++ b/src/main/resources/lang/en_US.yml @@ -50,6 +50,8 @@ setgravity: false: off nomode: msg: Click with the edit tool away from an armorstand to select an editing mode first! +nomodeif: + msg: Click with the Edit Tool away from the ItemFrame to select a mode first! copied: msg: ArmorStand state copied to slot . pasted: diff --git a/src/main/resources/lang/es_ES.yml b/src/main/resources/lang/es_ES.yml index 6ba123f5..44af2637 100644 --- a/src/main/resources/lang/es_ES.yml +++ b/src/main/resources/lang/es_ES.yml @@ -44,6 +44,8 @@ setgravity: false: off nomode: msg: Haz click con la herramienta de edicion en un soporte de armaduras para seleccionar un modo de edicion primero +nomodeif: + msg: Click with the Edit Tool away from the ItemFrame to select a mode first! copied: msg: El estado del soporte de armaduras se copio al slot . pasted: diff --git a/src/main/resources/lang/fr_FR.yml b/src/main/resources/lang/fr_FR.yml index 0f65aaae..bd453dc8 100644 --- a/src/main/resources/lang/fr_FR.yml +++ b/src/main/resources/lang/fr_FR.yml @@ -46,6 +46,8 @@ setgravity: false: désactivée nomode: msg: Cliquez d'abord avec cet outil hors d'un valet pour sélectionner un mode d'édition. +nomodeif: + msg: Click with the Edit Tool away from the ItemFrame to select a mode firs copied: msg: État du valet copié dans l'emplacement . pasted: diff --git a/src/main/resources/lang/ja_JP.yml b/src/main/resources/lang/ja_JP.yml index bf92ed15..5b0f6844 100644 --- a/src/main/resources/lang/ja_JP.yml +++ b/src/main/resources/lang/ja_JP.yml @@ -47,6 +47,8 @@ setgravity: false: OFF nomode: msg: 編集ツールをアーマスタンドから目を逸らした方向でクリックをして、最初の編集モードを選択してください! +nomodeif: + msg: Click with the Edit Tool away from the ItemFrame to select a mode firs copied: msg: スロットにアーマースタンドの状態をコピーしました。 pasted: diff --git a/src/main/resources/lang/nl_NL.yml b/src/main/resources/lang/nl_NL.yml index 121d9b61..b60cc4d3 100644 --- a/src/main/resources/lang/nl_NL.yml +++ b/src/main/resources/lang/nl_NL.yml @@ -47,6 +47,8 @@ setgravity: false: uit nomode: msg: Klik met het aanpas tool weg van een armorstand om een aanpas modus te selecteren! +nomodeif: + msg: Klik met het aanpas tool weg van een itemframe om een aanpas modus te selecteren! copied: msg: Armorstand status gekopieerd naar slot . pasted: diff --git a/src/main/resources/lang/pl_PL.yml b/src/main/resources/lang/pl_PL.yml index ea2bc4fa..cd7889ec 100644 --- a/src/main/resources/lang/pl_PL.yml +++ b/src/main/resources/lang/pl_PL.yml @@ -46,6 +46,8 @@ setgravity: false: wyłączona nomode: msg: Kliknij narzędziem z dala od stojaka na zbroję, aby najpierw wybrać tryb edycji! +nomodeif: + msg: Click with the Edit Tool away from the ItemFrame to select a mode first! copied: msg: Skopiowano stoja do slotu . pasted: diff --git a/src/main/resources/lang/ro_RO.yml b/src/main/resources/lang/ro_RO.yml index e06a4dee..cd4e4051 100644 --- a/src/main/resources/lang/ro_RO.yml +++ b/src/main/resources/lang/ro_RO.yml @@ -45,6 +45,8 @@ setgravity: false: oprita nomode: msg: Click cu unealta de editare departe de un armorstand pentru a selecta mai intai modul de editare! +nomodeif: + msg: Click with the Edit Tool away from the ItemFrame to select a mode first! copied: msg: Starea ArmorStand-ului copiata in slotul . pasted: diff --git a/src/main/resources/lang/test_NA.yml b/src/main/resources/lang/test_NA.yml index 618d4ca1..5f9d9158 100644 --- a/src/main/resources/lang/test_NA.yml +++ b/src/main/resources/lang/test_NA.yml @@ -45,6 +45,8 @@ setgravity: false: off nomode: msg: Click with the edit tool away from an armorstand to select an editing mode first! +nomodeif: + msg: Click with the Edit Tool away from the ItemFrame to select a mode first! copied: msg: ArmorStand state copied to slot . pasted: diff --git a/src/main/resources/lang/uk_UA.yml b/src/main/resources/lang/uk_UA.yml index 0a1e156e..5726693a 100644 --- a/src/main/resources/lang/uk_UA.yml +++ b/src/main/resources/lang/uk_UA.yml @@ -43,6 +43,8 @@ setgravity: false: вимкнена nomode: msg: Натисни інструментом редагування поза стендом щоб обрати режим! +nomodeif: + msg: Click with the Edit Tool away from the ItemFrame to select a mode first! copied: msg: Стенд скопійовано в слот . pasted: @@ -153,10 +155,6 @@ rotate: msg: Обернути description: msg: Обертай стенд -target: - msg: Ціль - description: - msg: СКОРО! copy: msg: Копія description: diff --git a/src/main/resources/lang/zh_CN.yml b/src/main/resources/lang/zh_CN.yml index 70be67c3..bedf1b49 100644 --- a/src/main/resources/lang/zh_CN.yml +++ b/src/main/resources/lang/zh_CN.yml @@ -48,6 +48,8 @@ setgravity: false: 关闭 nomode: msg: 请先点击空气选择设定模式! +nomodeif: + msg: Click with the Edit Tool away from the ItemFrame to select a mode first! copied: msg: 盔甲架装备存档在 . pasted: From 8b192e7c2b16f7ede937d91e3712cd5e128449ce Mon Sep 17 00:00:00 2001 From: Wolfstorm Date: Wed, 13 Oct 2021 20:16:22 +0200 Subject: [PATCH 131/369] [CORE] Fix for Double Event on itemFrames Signed-off-by: Wolfstorm --- .../rypofalem/armorstandeditor/PlayerEditorManager.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditorManager.java b/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditorManager.java index 8d53e2c5..6cfaa62c 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditorManager.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditorManager.java @@ -300,8 +300,8 @@ boolean canEdit( Player player, ArmorStand as) { boolean canEdit( Player player, ItemFrame itemf) { ignoreNextInteract = true; - ArrayList events = new ArrayList<>(); - events.add(new PlayerInteractEntityEvent(player, itemf, EquipmentSlot.HAND)); + ArrayList events = new ArrayList<>(); + //events.add(new PlayerInteractEntityEvent(player, itemf, EquipmentSlot.HAND)); events.add(new PlayerInteractAtEntityEvent(player, itemf, itemf.getLocation().toVector(), EquipmentSlot.HAND)); //events.add(new PlayerArmorStandManipulateEvent(player, as, player.getEquipment().getItemInMainHand(), as.getItemInHand(), EquipmentSlot.HAND)); for ( Event event : events) { From 38e6237c0e6df8db607093f68bfc350f27d0bd0f Mon Sep 17 00:00:00 2001 From: Wolfie / Larry Date: Fri, 22 Oct 2021 09:02:34 +0200 Subject: [PATCH 132/369] [CI-SKIP] Add Sonar Quality Gate to PomXML --- pom.xml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/pom.xml b/pom.xml index 63576d98..92993369 100644 --- a/pom.xml +++ b/pom.xml @@ -12,6 +12,8 @@ 1.8 UTF-8 2.5.3 + wolfst0rm + https://sonarcloud.io From 2d0f4a54c719cd8d10010c185150729dff1106e5 Mon Sep 17 00:00:00 2001 From: Wolfie / Larry Date: Fri, 22 Oct 2021 09:04:21 +0200 Subject: [PATCH 133/369] [CI] Update to include Sonar Quality Gate --- .github/workflows/maven-publish.yml | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/.github/workflows/maven-publish.yml b/.github/workflows/maven-publish.yml index 6f3a53a5..c144e212 100644 --- a/.github/workflows/maven-publish.yml +++ b/.github/workflows/maven-publish.yml @@ -21,16 +21,28 @@ jobs: distribution: 'adopt' # 3. Setup local Maven package cache to speed up building + - name: Cache SonarCloud packages + uses: actions/cache@v1 + with: + path: ~/.sonar/cache + key: ${{ runner.os }}-sonar + restore-keys: ${{ runner.os }}-sonar + - name: Cache Maven packages - uses: actions/cache@v2 + uses: actions/cache@v1 with: path: ~/.m2 key: ${{ runner.os }}-m2-${{ hashFiles('**/pom.xml') }} restore-keys: ${{ runner.os }}-m2 + + #Cache Sonar # 4. Build via Maven - - name: Build Project based on Maven File - run: mvn verify -B --file pom.xml + - name: Build and analyze + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # Needed to get PR information, if any + SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} + run: mvn -B verify org.sonarsource.scanner.maven:sonar-maven-plugin:sonar -Dsonar.projectKey=Wolfst0rm_ArmorStandEditor #5: Create a Clean Package - and Verify it - name: Clean package From d709607c4889a6117bdbb5a87d7a0e006ffc9727 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 22 Oct 2021 11:45:27 +0200 Subject: [PATCH 134/369] [CI] Update actions/cache action to v2 (#8) Co-authored-by: Renovate Bot --- .github/workflows/maven-publish.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/maven-publish.yml b/.github/workflows/maven-publish.yml index c144e212..03c517d6 100644 --- a/.github/workflows/maven-publish.yml +++ b/.github/workflows/maven-publish.yml @@ -22,14 +22,14 @@ jobs: # 3. Setup local Maven package cache to speed up building - name: Cache SonarCloud packages - uses: actions/cache@v1 + uses: actions/cache@v2 with: path: ~/.sonar/cache key: ${{ runner.os }}-sonar restore-keys: ${{ runner.os }}-sonar - name: Cache Maven packages - uses: actions/cache@v1 + uses: actions/cache@v2 with: path: ~/.m2 key: ${{ runner.os }}-m2-${{ hashFiles('**/pom.xml') }} From 0a69a265f7eedbc6c5b23e7610cde19ad40abfe8 Mon Sep 17 00:00:00 2001 From: Wolfie / Larry Date: Fri, 22 Oct 2021 15:59:51 +0200 Subject: [PATCH 135/369] [CORE] Update Readme Badges - Includes stats from Sonar and makes them flat. --- README.md | 30 +++++++++++++++++++----------- 1 file changed, 19 insertions(+), 11 deletions(-) diff --git a/README.md b/README.md index 69e8a910..ec4fd266 100644 --- a/README.md +++ b/README.md @@ -1,14 +1,22 @@

- ## ArmorStandEditor -[![Build Status](https://github.com/Wolfst0rm/ArmorStandEditor/actions/workflows/maven-publish.yml/badge.svg)](https://github.com/Wolfst0rm/ArmorStandEditor/actions/workflows/maven-publish.yml) -[![wakatime](https://wakatime.com/badge/github/Wolfst0rm/ArmorStandEditor.svg)](https://wakatime.com/badge/github/Wolfst0rm/ArmorStandEditor) -[![CodeFactor](https://www.codefactor.io/repository/github/wolfst0rm/armorstandeditor/badge)](https://www.codefactor.io/repository/github/wolfst0rm/armorstandeditor) -[![Compatibility/GetBukkit](https://img.shields.io/badge/Compatability-Paper%2C%20Spigot%2C%20Bukkit%20etc.%20(GetBukkit.org)-yellowgreen)](https://getbukkit.org/) -[![License](https://img.shields.io/badge/Licence-GNU%20Public%20V2%20-red)](https://github.com/Wolfst0rm/ArmorStandEditor/LICENSE.md) -[![Roadmap](https://img.shields.io/badge/Roadmap-ArmorStandEditor--Issues%2311-orange)](https://github.com/Wolfst0rm/ArmorStandEditor-Issues/issues/11) - -ArmorStandEditor is a plugin for [Spigot and related forks](https://www.spigotmc.org/resources/armorstandeditor-reborn.94503/) to allow players in survival to easily edit armor stand pose and attributes. + + [![Build Status](https://github.com/Wolfst0rm/ArmorStandEditor/actions/workflows/maven-publish.yml/badge.svg?style=flat)](https://github.com/Wolfst0rm/ArmorStandEditor/actions/workflows/maven-publish.yml) + [![Maintainability Rating](https://sonarcloud.io/api/project_badges/measure?project=Wolfst0rm_ArmorStandEditor&metric=sqale_rating&style=flat)](https://sonarcloud.io/summary/new_code?id=Wolfst0rm_ArmorStandEditor) + [![CodeFactor](https://www.codefactor.io/repository/github/wolfst0rm/armorstandeditor/badge?style=flat)](https://www.codefactor.io/repository/github/wolfst0rm/armorstandeditor) + [![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=Wolfst0rm_ArmorStandEditor&metric=alert_status&style=flat)](https://sonarcloud.io/summary/new_code?id=Wolfst0rm_ArmorStandEditor) + [![Scanned with Sonarcloud](https://img.shields.io/badge/Scanned%20With-Sonarcloud-orange?style=flat&logo=sonarcloud)](https://sonarcloud.io/summary/new_code?id=Wolfst0rm_ArmorStandEditor) + +
+ + [![wakatime](https://wakatime.com/badge/github/Wolfst0rm/ArmorStandEditor.svg?style=flat)](https://wakatime.com/badge/github/Wolfst0rm/ArmorStandEditor) + [![Compatibility/GetBukkit](https://img.shields.io/badge/Compatability-Paper%2C%20Spigot%2C%20Bukkit%20etc.%20(GetBukkit.org)-yellowgreen?style=flat)](https://getbukkit.org/) + [![License](https://img.shields.io/badge/Licence-GNU%20Public%20V2%20-red?style=flat)](https://github.com/Wolfst0rm/ArmorStandEditor/LICENSE.md) + [![Roadmap](https://img.shields.io/badge/Roadmap-ArmorStandEditor--Issues%2311-orange?style=flat)](https://github.com/Wolfst0rm/ArmorStandEditor-Issues/issues/11) + + + ArmorStandEditor is a plugin for [Spigot and related forks](https://www.spigotmc.org/resources/armorstandeditor-reborn.94503/) to allow players in survival to easily edit armor stand pose and attributes. +
## Downloads @@ -17,8 +25,8 @@ Downloads for Version 1.17 and higher can be obtained from the [download page](h For versions older than 1.17, then please use [the original versions download page](https://www.spigotmc.org/resources/armor-stand-editor-dead.7688/). The Latest Downloads Shortcut Links: -* [Unstable Versions](https://github.com/Wolfst0rm/ArmorStandEditor/actions) - **Use these at your own risk. Limited Support is provided for testing purposes** -* [1.17.1](https://www.spigotmc.org/threads/armorstandeditor-reborn.517132) +* [Unstable 1.1x-DEV Versions](https://github.com/Wolfst0rm/ArmorStandEditor/actions) - **Use these at your own risk. Limited Support is provided for testing purposes** +* [1.17.1](https://www.spigotmc.org/threads/armorstandeditor-reborn.517132) * [1.17](https://github.com/Wolfst0rm/ArmorStandEditor/releases/tag/1.17.1-27) * [1.16](https://www.spigotmc.org/resources/armor-stand-editor-dead.7688/download?version=342891) * [1.14](https://www.spigotmc.org/resources/armor-stand-editor-dead.7688/download?version=299267) From 2bbcafe29e13e62dffdc8b5d85ddac8d314a5e9a Mon Sep 17 00:00:00 2001 From: Wolfie / Larry Date: Fri, 22 Oct 2021 16:00:37 +0200 Subject: [PATCH 136/369] [CI SKIP] Fix Spacing Issues and Display issues in Readme --- README.md | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index ec4fd266..98579f24 100644 --- a/README.md +++ b/README.md @@ -1,14 +1,12 @@
-## ArmorStandEditor + + ## ArmorStandEditor [![Build Status](https://github.com/Wolfst0rm/ArmorStandEditor/actions/workflows/maven-publish.yml/badge.svg?style=flat)](https://github.com/Wolfst0rm/ArmorStandEditor/actions/workflows/maven-publish.yml) [![Maintainability Rating](https://sonarcloud.io/api/project_badges/measure?project=Wolfst0rm_ArmorStandEditor&metric=sqale_rating&style=flat)](https://sonarcloud.io/summary/new_code?id=Wolfst0rm_ArmorStandEditor) [![CodeFactor](https://www.codefactor.io/repository/github/wolfst0rm/armorstandeditor/badge?style=flat)](https://www.codefactor.io/repository/github/wolfst0rm/armorstandeditor) [![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=Wolfst0rm_ArmorStandEditor&metric=alert_status&style=flat)](https://sonarcloud.io/summary/new_code?id=Wolfst0rm_ArmorStandEditor) - [![Scanned with Sonarcloud](https://img.shields.io/badge/Scanned%20With-Sonarcloud-orange?style=flat&logo=sonarcloud)](https://sonarcloud.io/summary/new_code?id=Wolfst0rm_ArmorStandEditor) - -
- + [![Scanned with Sonarcloud](https://img.shields.io/badge/Scanned%20With-Sonarcloud-orange?style=flat&logo=sonarcloud)](https://sonarcloud.io/summary/new_code?id=Wolfst0rm_ArmorStandEditor) [![wakatime](https://wakatime.com/badge/github/Wolfst0rm/ArmorStandEditor.svg?style=flat)](https://wakatime.com/badge/github/Wolfst0rm/ArmorStandEditor) [![Compatibility/GetBukkit](https://img.shields.io/badge/Compatability-Paper%2C%20Spigot%2C%20Bukkit%20etc.%20(GetBukkit.org)-yellowgreen?style=flat)](https://getbukkit.org/) [![License](https://img.shields.io/badge/Licence-GNU%20Public%20V2%20-red?style=flat)](https://github.com/Wolfst0rm/ArmorStandEditor/LICENSE.md) From 58007b3e05ef0fc13e3f7ece900ce44288ff48c7 Mon Sep 17 00:00:00 2001 From: Wolfie / Larry Date: Tue, 30 Nov 2021 18:26:42 +0100 Subject: [PATCH 137/369] [CORE] 1.18 Update (#9) * [LANG] Update de_DE.yml - New Translation by Sulort Signed-off-by: Wolfstorm * [CORE] 1.18-pre5 Support. Signed-off-by: Wolfstorm * [CI] Update Java ENV Option. Signed-off-by: Wolfstorm * [CORE] Extend Preliminary Support to 1.18 RC3 Signed-off-by: Wolfstorm * [CORE] Towny Support: Fixes Wolfst0rm/ArmorStandEditor-Issues#15 Signed-off-by: Wolfstorm * [CORE] Metrics Fix! Signed-off-by: Wolfstorm * [CORE] Better Towny Support! - Only run checks if the Plugin for Towny is available - Without this check, plugin will not work for servers not using Towny Signed-off-by: Wolfstorm * [CORE] Introduce Version Command to quickly output version to game chat Signed-off-by: Wolfstorm * [CORE] Introduce Version Command to quickly output version to game chat Signed-off-by: Wolfstorm * [CORE] Update Supported NMS Versions, Set work for moving V1_17 to the nmsVersionNotLatest category. Signed-off-by: Wolfstorm * [CORE] Update Supported NMS Versions - Introduce messages about loading at the moment on V1_18 while still Preliminary - Move V1_17 to Supported but not latest - Move V1_13 to unsupported Signed-off-by: Wolfstorm * [CORE] Update to support 1.18 Final Signed-off-by: Wolfstorm * [CORE] Up version number to 1.18-31 Signed-off-by: Wolfstorm * [CORE] Code Review Remarks from SonarCloud Signed-off-by: Wolfstorm * [CORE] Code Review Remarks from SonarCloud Signed-off-by: Wolfstorm --- .github/workflows/maven-publish.yml | 8 +- pom.xml | 22 +- .../ArmorStandEditorPlugin.java | 19 +- .../rypofalem/armorstandeditor/CommandEx.java | 80 +------ .../armorstandeditor/PlayerEditor.java | 14 ++ src/main/resources/lang/de_DE.yml | 196 +++++++++--------- src/main/resources/plugin.yml | 9 +- 7 files changed, 154 insertions(+), 194 deletions(-) diff --git a/.github/workflows/maven-publish.yml b/.github/workflows/maven-publish.yml index 03c517d6..61e297a3 100644 --- a/.github/workflows/maven-publish.yml +++ b/.github/workflows/maven-publish.yml @@ -13,12 +13,12 @@ jobs: - name: Checkout ArmorStandEditor Repository uses: actions/checkout@v2 - # 2. Setup Java 16 JDK - - name: Set up JDK 16 Environment + # 2. Setup Java 17 JDK + - name: Set up JDK 17 Environment uses: actions/setup-java@v2 with: - java-version: '16' - distribution: 'adopt' + java-version: '17' # move this over to 17 when Github Actions Supports it + distribution: 'zulu' # 3. Setup local Maven package cache to speed up building - name: Cache SonarCloud packages diff --git a/pom.xml b/pom.xml index 92993369..307891ba 100644 --- a/pom.xml +++ b/pom.xml @@ -4,12 +4,12 @@ io.github.rypofalem.armorstandeditor armorstandeditor jar - 1.17-30 + 1.18-31 armorstandeditor http://maven.apache.org - 1.8 + 17 UTF-8 2.5.3 wolfst0rm @@ -21,6 +21,11 @@ spigot-repo https://hub.spigotmc.org/nexus/content/repositories/snapshots/ + + + jitpack.io + https://jitpack.io + @@ -28,7 +33,14 @@ org.spigotmc spigot-api - 1.17-R0.1-SNAPSHOT + 1.18-R0.1-SNAPSHOT + provided + + + + com.github.TownyAdvanced + Towny + 0.96.7.0 provided @@ -40,8 +52,8 @@ maven-compiler-plugin 3.8.1 - ${java.version} - ${java.version} + 11 + 11 -parameters diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/ArmorStandEditorPlugin.java b/src/main/java/io/github/rypofalem/armorstandeditor/ArmorStandEditorPlugin.java index d0301e29..9e47e1fa 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/ArmorStandEditorPlugin.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/ArmorStandEditorPlugin.java @@ -54,6 +54,7 @@ public class ArmorStandEditorPlugin extends JavaPlugin{ private String nmsVersion = null; private String nmsVersionNotLatest = null; PluginDescriptionFile pdfFile = this.getDescription(); + final static String SEPERATOR = "================================"; public PlayerEditorManager editorManager; @@ -125,25 +126,27 @@ public void onEnable(){ nmsVersion.startsWith("v1_9") || nmsVersion.startsWith("v1_10") || nmsVersion.startsWith("v1_11") || - nmsVersion.startsWith("v1_12")){ + nmsVersion.startsWith("v1_12") || + nmsVersion.startsWith("v1_13") + ){ getLogger().warning("Minecraft Version: " + nmsVersion + " is not supported. Loading Plugin Failed."); - getLogger().info("================================"); + getLogger().info(SEPERATOR); getServer().getPluginManager().disablePlugin(this); return; } //Also Warn People to Update if using nmsVersion lower than latest - if ( nmsVersion.startsWith("v1_13") || - nmsVersion.startsWith("v1_14") || + if ( nmsVersion.startsWith("v1_14") || nmsVersion.startsWith("v1_15") || - nmsVersion.startsWith("v1_16")){ + nmsVersion.startsWith("v1_16") || + nmsVersion.startsWith("v1_17")){ getLogger().warning("Minecraft Version: " + nmsVersion + " is supported, but not latest."); getLogger().warning("ArmorStandEditor will still work, but please update to the latest Version of " + nmsVersionNotLatest + ". Loading continuing."); } else { getLogger().info("Minecraft Version: " + nmsVersion + " is supported. Loading continuing."); } getServer().getPluginManager().enablePlugin(this); - getLogger().info("================================"); + getLogger().info(SEPERATOR); //saveResource doesn't accept File.separator on windows, need to hardcode unix separator "/" instead updateConfig("", "config.yml"); @@ -170,7 +173,7 @@ public void onEnable(){ editTool = Material.getMaterial(toolType); //Ignore Warning } else { getLogger().severe("Unable to get Tool for Use with Plugin. Unable to continue!"); - getLogger().info("================================"); + getLogger().info(SEPERATOR); getServer().getPluginManager().disablePlugin(this); return; } @@ -351,5 +354,3 @@ public NamespacedKey getIconKey() { return iconKey; } } -//todo: -//Access to the "Marker" switch (so you can make the hitbox super small) diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/CommandEx.java b/src/main/java/io/github/rypofalem/armorstandeditor/CommandEx.java index 2d175719..63cf902a 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/CommandEx.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/CommandEx.java @@ -23,17 +23,11 @@ import io.github.rypofalem.armorstandeditor.modes.Axis; import io.github.rypofalem.armorstandeditor.modes.EditMode; import org.bukkit.ChatColor; -import org.bukkit.Material; import org.bukkit.Sound; import org.bukkit.command.Command; import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; -import org.bukkit.plugin.PluginDescriptionFile; - -import java.time.DateTimeException; -import java.time.LocalDateTime; -import java.time.format.DateTimeFormatter; public class CommandEx implements CommandExecutor { ArmorStandEditorPlugin plugin; @@ -41,22 +35,8 @@ public class CommandEx implements CommandExecutor { final String LISTAXIS = ChatColor.YELLOW + "/ase axis <" + Util.getEnumList(Axis.class) + ">"; final String LISTADJUSTMENT = ChatColor.YELLOW + "/ase adj <" + Util.getEnumList(AdjustmentMode.class) + ">"; final String LISTSLOT = ChatColor.YELLOW + "/ase slot <1-9>"; - final String RELOAD = ChatColor.YELLOW + "/ase reload"; final String HELP = ChatColor.YELLOW + "/ase help"; - - /*//Reload Stuff - Material editTool; - boolean requireToolData = false; - boolean sendToActionBar = true; - int editToolData = Integer.MIN_VALUE; - boolean requireToolLore = false; - String editToolLore = null; - boolean debug = false; //weather or not to broadcast messages via print(String message) - double coarseRot; - double fineRot; - boolean glowItemFrames; - String toolType = null; - LocalDateTime now = LocalDateTime.now();*/ + final String VERSION = ChatColor.YELLOW + "/ase version"; public CommandEx( ArmorStandEditorPlugin armorStandEditorPlugin) { this.plugin = armorStandEditorPlugin; @@ -88,72 +68,28 @@ && checkPermission((Player) sender, "basic", true))) { break; case "slot": commandSlot(player, args); break; - /*case "reload": commandReload(player, args); - break;*/ case "help": case "?": commandHelp(player); break; + case "version": commandVersion(player); + break; default: sender.sendMessage(LISTMODE); sender.sendMessage(LISTAXIS); sender.sendMessage(LISTSLOT); sender.sendMessage(LISTADJUSTMENT); - sender.sendMessage(RELOAD); + sender.sendMessage(VERSION); sender.sendMessage(HELP); } return true; } - //Reload Command Now Expanded Upon. -/* private void commandReload(Player player, String[] args){ - if(!(checkPermission(player, "reload", true))) return; //Basic sanity Check for Reload Permission! - if(args.length < 1 ){ - // Check the Length of Args. If > 0 then pass noReload - player.sendMessage(plugin.getLang().getMessage("noreloadcom", "warn")); - player.sendMessage(RELOAD); - } else { - // else if = 0 then get do one final check on the permission - - DateTimeFormatter format = DateTimeFormatter.ofPattern("EEEE, dd MMMM yyyy HH:mm:ss"); - - if (checkPermission(player, "reload", true)) { - // if permission true then run Reload and Load all the Values, Message that it has been reloaded successfully. Log to Console, Reload on DateTime by Player - this.loadConfig(); - plugin.saveConfig(); - plugin.reloadConfig(); - player.sendMessage(plugin.getLang().getMessage("reloaded", "info")); - plugin.log("Configuration File has reloaded on "+ now.format(format) + " by " + player.getName() + ""); - } - } + private void commandVersion(Player player) { + if (!(checkPermission(player, "basic", true))) return; + String verString = plugin.pdfFile.getVersion(); + player.sendMessage(ChatColor.YELLOW + "[ArmorStandEditor] Version: " + verString); } - //Potential to add Validation In Here SOMEHOW? TO Validate that the file is good in that regard. - private void loadConfig(){ - //Get all the Changes - Not accepting changes without a FULL RELOAD - coarseRot = plugin.getConfig().getDouble("coarse"); - fineRot = plugin.getConfig().getDouble("fine"); - - //Set Tool to be used in game - toolType = plugin.getConfig().getString("tool"); - if (toolType != null) { - editTool = Material.getMaterial(toolType); //Ignore Warning - } else { - plugin.getLogger().severe("Unable to get Tool for Use with Plugin. Unable to continue!"); - plugin.getServer().getPluginManager().disablePlugin(plugin); - return; - } - - requireToolData = plugin.getConfig().getBoolean("requireToolData", false); - if(requireToolData) editToolData = plugin.getConfig().getInt("toolData", Integer.MIN_VALUE); - requireToolLore = plugin.getConfig().getBoolean("requireToolLore", false); - if(requireToolLore) editToolLore= plugin.getConfig().getString("toolLore", null); - - debug = plugin.getConfig().getBoolean("debug", true); - sendToActionBar = plugin.getConfig().getBoolean("sendMessagesToActionBar", true); - glowItemFrames = plugin.getConfig().getBoolean("glowingItemFrame", true); - - }*/ - private void commandSlot(Player player, String[] args) { diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditor.java b/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditor.java index 4752fe81..9ab9a94b 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditor.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditor.java @@ -19,6 +19,8 @@ package io.github.rypofalem.armorstandeditor; +import com.palmergames.bukkit.towny.TownyAPI; +import com.palmergames.bukkit.towny.event.executors.TownyActionEventExecutor; import io.github.rypofalem.armorstandeditor.menu.EquipmentMenu; import io.github.rypofalem.armorstandeditor.menu.Menu; import io.github.rypofalem.armorstandeditor.modes.AdjustmentMode; @@ -111,6 +113,13 @@ public void setCopySlot(byte slot) { public void editArmorStand(ArmorStand armorStand) { if (!getPlayer().hasPermission("asedit.basic")) return; + + //FIX for https://github.com/Wolfst0rm/ArmorStandEditor-Issues/issues/15 + if (plugin.getServer().getPluginManager().getPlugin("Towny") != null) { + if (TownyAPI.getInstance().isWilderness(getPlayer().getLocation())) return; + if (!TownyActionEventExecutor.canDestroy(getPlayer(), getPlayer().getLocation().getBlock().getLocation(), Material.ARMOR_STAND)) return; + } + armorStand = attemptTarget(armorStand); switch (eMode) { case LEFTARM: @@ -204,6 +213,11 @@ private void openEquipment(ArmorStand armorStand) { public void reverseEditArmorStand(ArmorStand armorStand) { if (!getPlayer().hasPermission("asedit.basic")) return; + //FIX for https://github.com/Wolfst0rm/ArmorStandEditor-Issues/issues/15 - Towny Support not working! + if (plugin.getServer().getPluginManager().getPlugin("Towny") != null) { + if (TownyAPI.getInstance().isWilderness(getPlayer().getLocation())) return; + if (!TownyActionEventExecutor.canDestroy(getPlayer(), getPlayer().getLocation().getBlock().getLocation(), Material.ARMOR_STAND)) return; + } armorStand = attemptTarget(armorStand); switch (eMode) { case LEFTARM: diff --git a/src/main/resources/lang/de_DE.yml b/src/main/resources/lang/de_DE.yml index ac22fd56..1fa1f410 100644 --- a/src/main/resources/lang/de_DE.yml +++ b/src/main/resources/lang/de_DE.yml @@ -10,10 +10,10 @@ warn: c menutitle: 8 #info -setmode: +setmode: msg: Setze Modus zu . head: Kopf Position - body: Koerper Position + body: Körper Position leftleg: Linkes Bein Position rightleg: Rechtes Bein Position leftarm: Linker Arm Position @@ -25,193 +25,193 @@ setmode: disableslots: Deaktivierte Slots umschalten gravity: Erdanziehungskraft umschalten baseplate: Bodenplatte umschalten - placement: Plazierung + placement: Platzierung rotate: Drehen copy: Kopieren paste: Einfügen reset: Reset Pose -setaxis: - msg: Setze Axen zu . +setaxis: + msg: Setze Achsen zu . x: X y: Y z: Z -setslot: - msg: Setze Kopier Slot zu . +setslot: + msg: Setze Kopier-Slot zu . setadj: msg: Setze Anpassung zu . coarse: Grob fine: Fein -setgravity: +setgravity: msg: Erdanziehungskraft . true: an false: aus -nomode: - msg: Klicke mit dem Bearbeitungswerkzeug weg vom Ruestungsstaender um den Bearbeitungsmodus auszuwählen! +nomode: + msg: Klicke mit dem Bearbeitungswerkzeug weg vom Rüstungsständer um den Bearbeitungsmodus auszuwählen! nomodeif: - msg: Click with the Edit Tool away from the ItemFrame to select a mode first! -copied: - msg: Zustand des Ruestungsstaenders wurde zum Slot kopiert. -pasted: - msg: Zustand des Ruestungsstaenders wurde vom Slot eingefuegt. + msg: Um zuerst einem Modus auszuwählen, klicke mit dem Bearbeitungswerkzeug neben einem ItemFrame! +copied: + msg: Zustand des Rüstungsständers wurde zum Slot kopiert. +pasted: + msg: Zustand des Rüstungsständers wurde vom Slot eingefügt. target: - msg: Ziel Ruestungsstaender wurde gesperrt. + msg: Ziel Rüstungsständer wurde gesperrt. notarget: - msg: Ziel Ruestungsstaender wurde entsperrt. + msg: Ziel Rüstungsständer wurde entsperrt. frametarget: - msg: Itemframe target locked + msg: Itemframe Ziel gesperrt. noframetarget: - msg: Itemframe target unlocked. + msg: Itemframe Ziel entsperrt. doubletarget: - msg: Please look at either an ArmorStand or an ItemFrame, not both! + msg: Bitte schaue entweder auf einen Rüstungsständer oder einem ItemFrame, nicht beides! help: msg: "1. Halte das Bearbeitungswerkzeug() in deiner Haupthand. - 2. Links oder Rechsklicke entfernt von einem Ruestungsstaender um das Menue zu oeffnen. + 2. Links oder Rechsklicke entfernt von einem Rüstungsständer um das Menü zu öffnen. - 3. Waehle zwischen den beschrifteten Menue Optionen. + 3. Wähle zwischen den beschrifteten Menü Optionen. - 4. Linksklicke den Ruestungsstaender mit dem Bearbeitungswerzeug um die Aenderungen zu uebernehmen. + 4. Linksklicke den Rüstungsständer mit dem Bearbeitungswerkzeug um die Änderungen zu übernehmen. - 5. Rechtsklicke um die Aenderungen zu verwerfen!" + 5. Rechtsklicke um die Änderungen zu verwerfen!" helptips: msg: "Tipps: - 1. Druecke die \"Gegenstand in den Haenden wechseln\" Taste (Standard: F) waehrend du das Bearbeitungswerkzeug haeltst um einen speziellen Ruestungsstaender auszuwaehlen falls mehrere in der Naehe sind. + 1. Drücke die \"Gegenstand in den Händen wechseln\" Taste (Standard: F) während du das Bearbeitungswerkzeug hältst um einen speziellen Rüstungsständer auszuwählen falls mehrere in der Nähe sind. - 2. Du kannst Nametags zu Ruestungsstaender hinzufuegen. Du kannst das \"&\" Symbol für Farben benutzen. + 2. Du kannst Nametags zu Rüstungsständer hinzufügen. Du kannst das \"&\" Symbol für Farben benutzen. - 3. Du kannst sneaken und das Scrollrad drehen waehrend du das Bearbeitungswerkzeug haelst um die Axen zu waechseln ohne das Menue zu oeffnen." + 3. Du kannst sneaken und das Scrollrad drehen während du das Bearbeitungswerkzeug hältst um die Achsen zu wechseln ohne das Menü zu öffnen." helpurl: msg: "Weitere Infos: https://github.com/RypoFalem/ArmorStandEditor/wiki" #warn cantedit: - msg: Entschuldigung, du kannst hier keine Ruestungsstaender bearbeiten! -noperm: + msg: Entschuldigung, du kannst hier keine Rüstungsständer bearbeiten! +noperm: msg: Du hast keine Erlaubnis diesen Befehl zu nutzen! -noslotnumcom: +noslotnumcom: msg: Du musst eine Slotnummer angeben! noadjcom: - msg: Du musst Grob oder Fein auswaehlen! + msg: Du musst Grob oder Fein auswählen! noaxiscom: - msg: Du musst eine Axe auswaehlen! + msg: Du musst eine Achse auswählen! nomodecom: - msg: Du musst einen Modus auswaehlen! + msg: Du musst einen Modus auswählen! #menutitle mainmenutitle: - msg: Ruestungsstaender Editor Menue + msg: Rüstungsständer Editor Menü equiptitle: - msg: Ruestungsstaender Ausruestung + msg: Rüstungsständer Ausrüstung #icons xaxis: - msg: X Axe - description: - msg: Rotiere Koerperteile entlang der X Axe -yaxis: - msg: Y Axe - description: - msg: Rotiere Koerperteile entlang der Y Axe -zaxis: - msg: Z Axe - description: - msg: Rotiere Koerperteile entlang der Z Axe -coarseadj: + msg: X Achse + description: + msg: Rotiere Körperteile entlang der X Achse +yaxis: + msg: Y Achse + description: + msg: Rotiere Körperteile entlang der Y Achse +zaxis: + msg: Z Achse + description: + msg: Rotiere Körperteile entlang der Z Achse +coarseadj: msg: Grobe Anpassungen - description: + description: msg: Mache Grobe Anpassungen -fineadj: +fineadj: msg: Feine Anpassungen - description: + description: msg: Mache Feine Anpassungen -head: +head: msg: Kopf Position - description: + description: msg: Rotiere den Kopf -body: - msg: Koerper Position - description: +body: + msg: Körper Position + description: msg: Rotiere den Körper -leftleg: +leftleg: msg: Linkes Bein Position - description: + description: msg: Rotiere das linke Bein -rightleg: +rightleg: msg: Rechtes Bein Position - description: + description: msg: Rotiere das rechte Bein -leftarm: +leftarm: msg: Linker Arm Position - description: + description: msg: Rotiere den linken Arm -rightarm: +rightarm: msg: Rechter Arm Position - description: + description: msg: Rotiere den rechten Arm -equipment: - msg: Ausruestung - description: - msg: Bearbeite Ausruestung -showarms: +equipment: + msg: Ausrüstung + description: + msg: Bearbeite Ausrüstung +showarms: msg: Zeige Arme - description: + description: msg: Aktiviere oder Deaktiviere die Arme -invisible: +invisible: msg: Sichtbarkeit - description: + description: msg: Mach es Sichtbar oder Unsichtbar -size: +size: msg: Größe - description: + description: msg: Mach es Groß oder Klein -disableslots: +disableslots: msg: Deaktiviere Slots - description: - msg: Aktiviere und Deaktiviere die Ausruestungssperre -gravity: + description: + msg: Aktiviere und Deaktiviere die Ausrüstungssperre +gravity: msg: Erdanziehungskraft - description: + description: msg: Schalte die Erdanziehungskraft an oder aus -baseplate: +baseplate: msg: Bodenplatte - description: + description: msg: Schalte die Bodenplatte an oder aus -placement: +placement: msg: Plazierung - description: - msg: Verschiebe den kompletten Ruestungsstaender -rotate: + description: + msg: Verschiebe den kompletten Rüstungsständer +rotate: msg: Rotiere description: - msg: Rotiere den kompletten Ruestungsstaender -copy: + msg: Rotiere den kompletten Rüstungsständer +copy: msg: Kopieren description: - msg: Kopiere die Ruestungsstaender Einstellungen -paste: + msg: Kopiere die Rüstungsständer Einstellungen +paste: msg: Einfügen - description: - msg: Füge den Ruestungsstaender ein -copyslot: + description: + msg: Füge den Rüstungsständer ein +copyslot: msg: Kopiere Slot description: - msg: Waehle einen Slot um die Einstellungen zu speichern + msg: Wähle einen Slot um die Einstellungen zu speichern reset: - msg: Pose zuruecksetzen + msg: Pose zurücksetzen description: - msg: Setze die Pose zurueck + msg: Setze die Pose zurück helpgui: msg: Hilfe! description: msg: Klicke hier um Hilfe zu erhalten! #icons (equipment menu) -disabled: +disabled: msg: Deaktiviert -equipslot: +equipslot: msg: Slot - description: + description: msg: Ziehe deine in den Slot unterhalb helm: Helm chest: Brustplatte @@ -224,4 +224,4 @@ equipslot: pants: Hose boots: Schuhe rhand: Rechte Hand - lhand: Linke Hand + lhand: Linke Hand \ No newline at end of file diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index 672e6d68..9e004668 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -1,11 +1,12 @@ name: ArmorStandEditor main: io.github.rypofalem.armorstandeditor.ArmorStandEditorPlugin -version: 1.17-30 +version: 1.18-31 api-version: "1.13" website: rypofalem.github.io author: Wolfstorm authors: [Wolfstorm, Marfjeh, rypofalem, sekwah41, Sikatsu1997, Cool_boy, sumdream, Amaury Carrade, nicuch, kotarobo, prettydude, Jumpy91, Niasio, Patbox, Puremin0rez, Prof-Bloodstone] description: Allows players to edit data of armorstands without any commands. +softdepend: [Towny] commands: ase: description: Changes the function of the armorstand edit tool. @@ -26,8 +27,4 @@ permissions: default: true asedit.disableslots: description: Allows locking and unlocking the contents of an ArmorStand. When locked, armor and equipement can not be added or removed without unlocking it first. - default: true -# NOT CURRENTLY IN USE! Coming in a future update -# asedit.reload: -# description: Reload Configs for ArmorStandEditor -# default: false \ No newline at end of file + default: true \ No newline at end of file From 1b8fc8fbce0b4843bbff8a0f935b7a22190bee32 Mon Sep 17 00:00:00 2001 From: Wolfstorm Date: Tue, 30 Nov 2021 18:31:42 +0100 Subject: [PATCH 138/369] [CI] Fix Warning about shadow clones #SonarFix Signed-off-by: Wolfstorm --- .github/workflows/maven-publish.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/maven-publish.yml b/.github/workflows/maven-publish.yml index 61e297a3..13e2eca6 100644 --- a/.github/workflows/maven-publish.yml +++ b/.github/workflows/maven-publish.yml @@ -12,12 +12,14 @@ jobs: # 1. Check out the current working tree - name: Checkout ArmorStandEditor Repository uses: actions/checkout@v2 + with: + fetch-depth: 0 # Shallow clones should be disabled for a better relevancy of analysis # 2. Setup Java 17 JDK - name: Set up JDK 17 Environment uses: actions/setup-java@v2 with: - java-version: '17' # move this over to 17 when Github Actions Supports it + java-version: '17' distribution: 'zulu' # 3. Setup local Maven package cache to speed up building @@ -35,8 +37,6 @@ jobs: key: ${{ runner.os }}-m2-${{ hashFiles('**/pom.xml') }} restore-keys: ${{ runner.os }}-m2 - #Cache Sonar - # 4. Build via Maven - name: Build and analyze env: From c516ffa15c055276a7a9ea3e955bc10dc389160d Mon Sep 17 00:00:00 2001 From: Wolfstorm Date: Tue, 30 Nov 2021 18:49:19 +0100 Subject: [PATCH 139/369] [ci-skip] Update to include links to 1.18 Signed-off-by: Wolfstorm --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 98579f24..340fcb16 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,6 @@ [![Build Status](https://github.com/Wolfst0rm/ArmorStandEditor/actions/workflows/maven-publish.yml/badge.svg?style=flat)](https://github.com/Wolfst0rm/ArmorStandEditor/actions/workflows/maven-publish.yml) [![Maintainability Rating](https://sonarcloud.io/api/project_badges/measure?project=Wolfst0rm_ArmorStandEditor&metric=sqale_rating&style=flat)](https://sonarcloud.io/summary/new_code?id=Wolfst0rm_ArmorStandEditor) [![CodeFactor](https://www.codefactor.io/repository/github/wolfst0rm/armorstandeditor/badge?style=flat)](https://www.codefactor.io/repository/github/wolfst0rm/armorstandeditor) - [![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=Wolfst0rm_ArmorStandEditor&metric=alert_status&style=flat)](https://sonarcloud.io/summary/new_code?id=Wolfst0rm_ArmorStandEditor) [![Scanned with Sonarcloud](https://img.shields.io/badge/Scanned%20With-Sonarcloud-orange?style=flat&logo=sonarcloud)](https://sonarcloud.io/summary/new_code?id=Wolfst0rm_ArmorStandEditor) [![wakatime](https://wakatime.com/badge/github/Wolfst0rm/ArmorStandEditor.svg?style=flat)](https://wakatime.com/badge/github/Wolfst0rm/ArmorStandEditor) [![Compatibility/GetBukkit](https://img.shields.io/badge/Compatability-Paper%2C%20Spigot%2C%20Bukkit%20etc.%20(GetBukkit.org)-yellowgreen?style=flat)](https://getbukkit.org/) @@ -24,7 +23,8 @@ For versions older than 1.17, then please use [the original versions download pa The Latest Downloads Shortcut Links: * [Unstable 1.1x-DEV Versions](https://github.com/Wolfst0rm/ArmorStandEditor/actions) - **Use these at your own risk. Limited Support is provided for testing purposes** -* [1.17.1](https://www.spigotmc.org/threads/armorstandeditor-reborn.517132) +* [1.18](https://www.spigotmc.org/threads/armorstandeditor-reborn.517132) +* [1.17.1](https://github.com/Wolfst0rm/ArmorStandEditor/releases/tag/1.17.1-30) * [1.17](https://github.com/Wolfst0rm/ArmorStandEditor/releases/tag/1.17.1-27) * [1.16](https://www.spigotmc.org/resources/armor-stand-editor-dead.7688/download?version=342891) * [1.14](https://www.spigotmc.org/resources/armor-stand-editor-dead.7688/download?version=299267) From ebfb6cdad2babb2961b864700e18181eec1bb40d Mon Sep 17 00:00:00 2001 From: Wolfie / Larry Date: Tue, 30 Nov 2021 19:01:12 +0100 Subject: [PATCH 140/369] [CI] Add Dependabot Support for Dependencies --- .github/dependabot.yml | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 .github/dependabot.yml diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 00000000..2efe7116 --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,18 @@ +# To get started with Dependabot version updates, you'll need to specify which +# package ecosystems to update and where the package manifests are located. +# Please see the documentation for all configuration options: +# https://help.github.com/github/administering-a-repository/configuration-options-for-dependency-updates + +version: 2 +updates: + # Maintain dependencies for GitHub Actions + - package-ecosystem: "github-actions" + directory: "/" + schedule: + interval: "daily" + + # Maintain dependencies for maven + - package-ecosystem: "maven" + directory: "/" + schedule: + interval: "daily" From d04ffe7c512ab3b881e18a78b19fc75dadc50638 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 30 Nov 2021 19:02:32 +0100 Subject: [PATCH 141/369] [CI] Update CI - Upload Atrifact Version Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 2.1.4 to 2.2.4. - [Release notes](https://github.com/actions/upload-artifact/releases) - [Commits](https://github.com/actions/upload-artifact/compare/v2.1.4...v2.2.4) --- updated-dependencies: - dependency-name: actions/upload-artifact dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/maven-publish.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/maven-publish.yml b/.github/workflows/maven-publish.yml index 13e2eca6..0af3f988 100644 --- a/.github/workflows/maven-publish.yml +++ b/.github/workflows/maven-publish.yml @@ -53,7 +53,7 @@ jobs: #6 Upload Artifacts (Debug Purposes - name: Upload Artifact for Debugging - uses: actions/upload-artifact@v2.1.4 + uses: actions/upload-artifact@v2.2.4 with: name: artifact path: /home/runner/work/ArmorStandEditor/ArmorStandEditor/target/armorstandeditor-*-*.jar From a0aeb051ad72412c0f40a1bf4055c881da3d2a7a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 30 Nov 2021 19:03:22 +0100 Subject: [PATCH 142/369] [CI] Update Towny to Latest (0.97.3.1) Bumps [Towny](https://github.com/TownyAdvanced/Towny) from 0.96.7.0 to 0.97.3.1. - [Release notes](https://github.com/TownyAdvanced/Towny/releases) - [Commits](https://github.com/TownyAdvanced/Towny/compare/0.96.7.0...0.97.3.1) --- updated-dependencies: - dependency-name: com.github.TownyAdvanced:Towny dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 307891ba..a5af71aa 100644 --- a/pom.xml +++ b/pom.xml @@ -40,7 +40,7 @@ com.github.TownyAdvanced Towny - 0.96.7.0 + 0.97.3.1 provided From 495a3b0fc4d495cef7ec1253d7e55461e5512417 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 1 Dec 2021 08:20:53 +0100 Subject: [PATCH 143/369] [CORE] Update Towny to 0.97.3.2 (#12) Bumps [Towny](https://github.com/TownyAdvanced/Towny) from 0.97.3.1 to 0.97.3.2. - [Release notes](https://github.com/TownyAdvanced/Towny/releases) - [Commits](https://github.com/TownyAdvanced/Towny/compare/0.97.3.1...0.97.3.2) --- updated-dependencies: - dependency-name: com.github.TownyAdvanced:Towny dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index a5af71aa..84cca51b 100644 --- a/pom.xml +++ b/pom.xml @@ -40,7 +40,7 @@ com.github.TownyAdvanced Towny - 0.97.3.1 + 0.97.3.2 provided From 5cda7be8ef085bf0b922881a155e41a74d468b87 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 2 Dec 2021 21:01:31 +0100 Subject: [PATCH 144/369] [CORE] Update Towny to v0.97.4.0 (#13) Co-authored-by: Renovate Bot --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 84cca51b..0bc99cfb 100644 --- a/pom.xml +++ b/pom.xml @@ -40,7 +40,7 @@ com.github.TownyAdvanced Towny - 0.97.3.2 + 0.97.4.0 provided From 5c1cb845307b2dfcc177a4466b277bd2d22d2442 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 4 Dec 2021 18:54:53 +0100 Subject: [PATCH 145/369] [CORE] Update dependency Towny to v0.97.5.0 (#14) Co-authored-by: Renovate Bot --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 0bc99cfb..a7f48a65 100644 --- a/pom.xml +++ b/pom.xml @@ -40,7 +40,7 @@ com.github.TownyAdvanced Towny - 0.97.4.0 + 0.97.5.0 provided From 20dc80145cfc3096c1e714df2ea66240418f96bb Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 8 Dec 2021 10:42:20 +0100 Subject: [PATCH 146/369] [CI] Update actions/upload-artifact action to v2.3.0 (#15) Co-authored-by: Renovate Bot --- .github/workflows/maven-publish.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/maven-publish.yml b/.github/workflows/maven-publish.yml index 0af3f988..b775eb9c 100644 --- a/.github/workflows/maven-publish.yml +++ b/.github/workflows/maven-publish.yml @@ -53,7 +53,7 @@ jobs: #6 Upload Artifacts (Debug Purposes - name: Upload Artifact for Debugging - uses: actions/upload-artifact@v2.2.4 + uses: actions/upload-artifact@v2.3.0 with: name: artifact path: /home/runner/work/ArmorStandEditor/ArmorStandEditor/target/armorstandeditor-*-*.jar From d7d9867982cd1c4475c0a6f83051957bd63474d2 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 10 Dec 2021 08:58:00 +0100 Subject: [PATCH 147/369] [CORE] Update dependency com.github.TownyAdvanced:Towny to v0.97.5.1 (#18) Co-authored-by: Renovate Bot --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index a7f48a65..eb327143 100644 --- a/pom.xml +++ b/pom.xml @@ -40,7 +40,7 @@ com.github.TownyAdvanced Towny - 0.97.5.0 + 0.97.5.1 provided From 97a79925d7ec9c00cace19b603759a6f10c45698 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 16 Dec 2021 10:40:26 +0100 Subject: [PATCH 148/369] [CI] Update actions/upload-artifact action to v2.3.1 (#20) Co-authored-by: Renovate Bot --- .github/workflows/maven-publish.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/maven-publish.yml b/.github/workflows/maven-publish.yml index b775eb9c..e166713b 100644 --- a/.github/workflows/maven-publish.yml +++ b/.github/workflows/maven-publish.yml @@ -53,7 +53,7 @@ jobs: #6 Upload Artifacts (Debug Purposes - name: Upload Artifact for Debugging - uses: actions/upload-artifact@v2.3.0 + uses: actions/upload-artifact@v2.3.1 with: name: artifact path: /home/runner/work/ArmorStandEditor/ArmorStandEditor/target/armorstandeditor-*-*.jar From 71926cf6460b19b31e6d8ed8fb273636406280ad Mon Sep 17 00:00:00 2001 From: Wolfie / Larry Date: Fri, 17 Dec 2021 09:39:56 +0100 Subject: [PATCH 149/369] Version: ArmorStandEditor 1.18.1-32 (#19) * [CORE] Version Bump to 1.18.1-32 Signed-off-by: Wolfstorm Signed-off-by: Github * [CORE] Wolfst0rm/ArmorStandEditor-Issues#18: Fix for Scoreboards existing when Enabling. Signed-off-by: Wolfstorm Signed-off-by: Github * [CORE] Wolfst0rm/ArmorStandEditor-Issues#18: Fix for Scoreboards existing when Enabling. Signed-off-by: Wolfstorm Signed-off-by: Github * [CORE] Make Scoreboard be generally the way to get the Main Scoreboards. Signed-off-by: Wolfstorm Signed-off-by: Github * [CORE] Make Scoreboard be generally the way to get the Main Scoreboards. Signed-off-by: Wolfstorm Signed-off-by: Github * [CORE] Wolfst0rm/ArmorStandEditor-Issues#17: Introduction of requireSneaking option Signed-off-by: Wolfstorm Signed-off-by: Github * [CORE] Wolfst0rm/ArmorStandEditor-Issues#17: RequireSneaking Implementation Signed-off-by: Wolfstorm Signed-off-by: Github * [CORE] Split of ArmorStand and ItemFrame Invisibility to 2 different permission nodes. Signed-off-by: Wolfstorm Signed-off-by: Github * [CORE] Revert addition of asedit.* node. Signed-off-by: Wolfstorm Signed-off-by: Github * [CORE] Code Review Remarks Rd 1 Signed-off-by: Wolfstorm Signed-off-by: Github * [CORE] Code Review Remarks Rd 2 Signed-off-by: Wolfstorm Signed-off-by: Github * [CORE] Fix on Load for not getting scoreboards correctly. Signed-off-by: Wolfstorm Signed-off-by: Github * [CORE] Fix for switch xyz when you were sneaking and scrolling Signed-off-by: Wolfstorm Signed-off-by: Github * [CORE] Fix for switch xyz when you were sneaking and scrolling Signed-off-by: Wolfstorm Signed-off-by: Github * [CORE] Fix for switch xyz when you were sneaking and scrolling Signed-off-by: Wolfstorm Signed-off-by: Github * [CORE] Fix for switch xyz when you were sneaking and scrolling Signed-off-by: Wolfstorm Signed-off-by: Github * [CORE] Code review Round 3 - THANK YOU MIKNES123 Signed-off-by: Wolfstorm Signed-off-by: Github * [CORE] Add Miknes123 to Authors List and then Fix Remarks from Sonar Signed-off-by: Wolfstorm Signed-off-by: Github * [ci-skip] Typo's suck lol Signed-off-by: Wolfstorm Signed-off-by: Github * [ci-skip] Code Review Round 4: Reorder the modifiers to comply with the Java Language Specification. Signed-off-by: Wolfstorm Signed-off-by: Github * [ci-skip] Code Review Round 4: Reorder the modifiers to comply with the Java Language Specification. Signed-off-by: Wolfstorm Signed-off-by: Github * [ci-skip] Update Readme -> 1.18.1 Support and change 1.18 link to point to Github Signed-off-by: Wolfstorm * [ci-skip] Code Review Round 4: Fix constant naming scheme for FINAL Modifier Signed-off-by: Wolfstorm Signed-off-by: Github * [CORE] Things that went unnoticed. Reactivate some internal Debug Options. Remove Debug Output from config - Internal Testing Only Fix Permissions in Commands for Mode Invisible. Reorder Config Options. Signed-off-by: Wolfstorm Signed-off-by: Github * [CORE] Introduce Config Options for toggling invisiblity. Either that is set true or people set the permission. Both with work. Signed-off-by: Wolfstorm Signed-off-by: Github * [ci-skip] Sonar Quality Remarks for Unconditional exectution of statements. Signed-off-by: Wolfstorm Signed-off-by: Github * [ci-skip] Add Note to refactor print messages to not broadcast messages to the entire server. Signed-off-by: Wolfstorm Signed-off-by: Github * [ci-skip] More Debug Output and move around Invisiblity Config Options Signed-off-by: Wolfstorm Signed-off-by: Github * [CORE] Comments to Explain toggle of Visiblity and Foretting Permission in editItemFrame method. Signed-off-by: Wolfstorm Signed-off-by: Github * [CORE] Move Spigot/Paper Checks out to apart methods. Move NMS VErsion String out to apart method. Signed-off-by: Wolfstorm Signed-off-by: Github * [ci-skip] Rename Scoreboard which hides the field declared at line 78 - Sonar Remark Signed-off-by: Wolfstorm Signed-off-by: Github * [CORE] Fix Failing Build. Signed-off-by: Wolfstorm Signed-off-by: Github * [CORE] Introduce UpdateChecker and Update command. Fix Typos in armorStandVisibility Signed-off-by: Wolfstorm Signed-off-by: Github * [CORE] Wolfst0rm/ArmorStandEditor-Issues#16: Introduce UpdateChecker and Update command. Fix Typos in armorStandVisibility Signed-off-by: Wolfstorm Signed-off-by: Github * [CORE] Introduce UpdateCheck to Version Command - Code Review Remark made by Miknes123 Fix Typos in armorStandVisibility Signed-off-by: Wolfstorm Signed-off-by: Github * [CORE] Change UserAgent to Default Signed-off-by: Wolfstorm Signed-off-by: Github * [CORE] Fix Broken Method Signed-off-by: Wolfstorm Signed-off-by: Github * [CORE] Revert runUpdateChecker method and drop color support for commandVersion and commandUpdate Signed-off-by: Wolfstorm Signed-off-by: Github * [CORE] Revert runUpdateChecker method Signed-off-by: Wolfstorm Signed-off-by: Github --- README.md | 4 +- pom.xml | 39 ++++- .../ArmorStandEditorPlugin.java | 150 ++++++++++++++---- .../rypofalem/armorstandeditor/CommandEx.java | 42 +++-- .../armorstandeditor/PlayerEditor.java | 11 +- .../armorstandeditor/PlayerEditorManager.java | 5 +- src/main/resources/config.yml | 12 +- src/main/resources/plugin.yml | 20 ++- 8 files changed, 217 insertions(+), 66 deletions(-) diff --git a/README.md b/README.md index 340fcb16..892d8ca5 100644 --- a/README.md +++ b/README.md @@ -23,7 +23,8 @@ For versions older than 1.17, then please use [the original versions download pa The Latest Downloads Shortcut Links: * [Unstable 1.1x-DEV Versions](https://github.com/Wolfst0rm/ArmorStandEditor/actions) - **Use these at your own risk. Limited Support is provided for testing purposes** -* [1.18](https://www.spigotmc.org/threads/armorstandeditor-reborn.517132) +* [1.18.1 - Coming SOON!](https://www.spigotmc.org/threads/armorstandeditor-reborn.517132) +* [1.18](https://github.com/Wolfst0rm/ArmorStandEditor/releases/tag/1.18-31) * [1.17.1](https://github.com/Wolfst0rm/ArmorStandEditor/releases/tag/1.17.1-30) * [1.17](https://github.com/Wolfst0rm/ArmorStandEditor/releases/tag/1.17.1-27) * [1.16](https://www.spigotmc.org/resources/armor-stand-editor-dead.7688/download?version=342891) @@ -56,6 +57,7 @@ subject to change in the future. The minimum enforced API Version is 1.13. * Respects multiple protection plugins: WorldGaurd, Towny, GriefPrevention, Residence etc. * Targeting of an ArmorStand by pressing F with the tool in your hand * Glowing ArmorStand to signify Targetting and Slot Disables through the use of Scoreboards. +* You can also follow our [Feature Roadmap](https://github.com/Wolfst0rm/ArmorStandEditor-Issues/issues/11) to see what we have planned (Updated as required). diff --git a/pom.xml b/pom.xml index eb327143..0e0333f9 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ io.github.rypofalem.armorstandeditor armorstandeditor jar - 1.18-31 + 1.18.1-32 armorstandeditor http://maven.apache.org @@ -26,6 +26,11 @@ jitpack.io https://jitpack.io + + + jeff-media-public + https://hub.jeff-media.com/nexus/repository/jeff-media-public/ + @@ -33,7 +38,7 @@ org.spigotmc spigot-api - 1.18-R0.1-SNAPSHOT + 1.18.1-R0.1-SNAPSHOT provided @@ -43,6 +48,13 @@ 0.97.5.1 provided + + + de.jeff_media + SpigotUpdateChecker + 1.3.0 + compile + @@ -67,6 +79,29 @@ @{project.version} + + org.apache.maven.plugins + maven-shade-plugin + 3.2.4 + + + + + + de.jeff_media.updatechecker + io.github.rypofalem.armorstandeditor.updatechecker + + + + + + package + + shade + + + + diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/ArmorStandEditorPlugin.java b/src/main/java/io/github/rypofalem/armorstandeditor/ArmorStandEditorPlugin.java index 9e47e1fa..fd309698 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/ArmorStandEditorPlugin.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/ArmorStandEditorPlugin.java @@ -19,6 +19,8 @@ package io.github.rypofalem.armorstandeditor; +import de.jeff_media.updatechecker.UpdateChecker; +import de.jeff_media.updatechecker.UserAgentBuilder; import io.github.rypofalem.armorstandeditor.language.Language; import io.github.rypofalem.armorstandeditor.Metrics.DrilldownPie; import io.github.rypofalem.armorstandeditor.Metrics.SimplePie; @@ -43,6 +45,8 @@ public class ArmorStandEditorPlugin extends JavaPlugin{ + + private static final int SPIGOT_RESOURCE_ID = 94503; //Used for Update Checker private NamespacedKey iconKey; private static ArmorStandEditorPlugin instance; private CommandEx execute; @@ -51,10 +55,10 @@ public class ArmorStandEditorPlugin extends JavaPlugin{ //Server Version Detection: Paper or Spigot and Invalid NMS Version public boolean hasSpigot = false; public boolean hasPaper = false; - private String nmsVersion = null; - private String nmsVersionNotLatest = null; + String nmsVersion = null; + String nmsVersionNotLatest = null; PluginDescriptionFile pdfFile = this.getDescription(); - final static String SEPERATOR = "================================"; + static final String SEPARATOR_FIELD = "================================"; public PlayerEditorManager editorManager; @@ -63,16 +67,20 @@ public class ArmorStandEditorPlugin extends JavaPlugin{ boolean requireToolData = false; boolean sendToActionBar = true; int editToolData = Integer.MIN_VALUE; + boolean requireSneaking = false; boolean requireToolLore = false; String editToolLore = null; boolean debug = false; //weather or not to broadcast messages via print(String message) double coarseRot; double fineRot; - boolean glowItemFrames; + boolean glowItemFrames = false; + boolean invisibleItemFrames = true; + boolean armorStandVisibility = true; //Glow Entity Colors public Scoreboard scoreboard; public Team team; + String lockedTeam = "ASLocked"; private static ArmorStandEditorPlugin plugin; @@ -84,34 +92,26 @@ public ArmorStandEditorPlugin(){ @Override public void onEnable(){ + + //Run UpdateChecker + runUpdateChecker(); + scoreboard = this.getServer().getScoreboardManager().getMainScoreboard(); - registerScoreboards(); //Get NMS Version - nmsVersion = getServer().getClass().getPackage().getName().replace(".",",").split(",")[3]; + nmsVersion = getNmsVersion(); + print("Net.Minecraft.Server version is: " + nmsVersion); //Load Messages in Console getLogger().info("======= ArmorStandEditor ======="); getLogger().info("Plugin Version: " + pdfFile.getVersion()); //Spigot Check - try { - Class.forName("org.spigotmc.SpigotConfig"); - hasSpigot = true; - nmsVersionNotLatest = "SpigotMC ASAP"; - } catch (ClassNotFoundException e){ - hasSpigot = false; - } + hasSpigot = getHasSpigot(); getLogger().info("SpigotMC: " + hasSpigot); //Paper Check - try{ - Class.forName("com.destroystokyo.paper.PaperConfig"); - hasPaper = true; - nmsVersionNotLatest = "Paper ASAP"; - } catch (ClassNotFoundException e){ - hasPaper = false; - } + hasPaper = getHasPaper(); getLogger().info("PaperMC: " + hasPaper); //If Paper and Spigot are both FALSE - Disable the plugin @@ -130,7 +130,7 @@ public void onEnable(){ nmsVersion.startsWith("v1_13") ){ getLogger().warning("Minecraft Version: " + nmsVersion + " is not supported. Loading Plugin Failed."); - getLogger().info(SEPERATOR); + getLogger().info(SEPARATOR_FIELD); getServer().getPluginManager().disablePlugin(this); return; } @@ -146,9 +146,10 @@ public void onEnable(){ getLogger().info("Minecraft Version: " + nmsVersion + " is supported. Loading continuing."); } getServer().getPluginManager().enablePlugin(this); - getLogger().info(SEPERATOR); + registerScoreboards(scoreboard); + getLogger().info(SEPARATOR_FIELD); - //saveResource doesn't accept File.separator on windows, need to hardcode unix separator "/" instead + //saveResource doesn't accept File.separator on Windows, need to hardcode unix separator "/" instead updateConfig("", "config.yml"); updateConfig("lang/", "test_NA.yml"); updateConfig("lang/", "nl_NL.yml"); @@ -162,6 +163,7 @@ public void onEnable(){ //English is the default language and needs to be unaltered to so that there is always a backup message string saveResource("lang/en_US.yml", true); lang = new Language(getConfig().getString("lang"), this); + print("Language in use: " + getConfig().getString("lang")); //Rotation coarseRot = getConfig().getDouble("coarse"); @@ -170,24 +172,52 @@ public void onEnable(){ //Set Tool to be used in game toolType = getConfig().getString("tool"); if (toolType != null) { + print("Edit Tool used to interact with Plugin is: " + toolType); editTool = Material.getMaterial(toolType); //Ignore Warning } else { getLogger().severe("Unable to get Tool for Use with Plugin. Unable to continue!"); - getLogger().info(SEPERATOR); + getLogger().info(SEPARATOR_FIELD); getServer().getPluginManager().disablePlugin(this); return; } + //ArmorStandVisility Node + armorStandVisibility = getConfig().getBoolean("armorStandVisibility", true); + print("ArmorStands allowed to be made visible/invisible?: " + armorStandVisibility); + //Is there NBT Required for the tool requireToolData = getConfig().getBoolean("requireToolData", false); - if(requireToolData) editToolData = getConfig().getInt("toolData", Integer.MIN_VALUE); + print("NBT Data Required: " + requireToolData); + + if(requireToolData) { + editToolData = getConfig().getInt("toolData", Integer.MIN_VALUE); + print("Tool Data is: " + editToolData); + } + requireToolLore = getConfig().getBoolean("requireToolLore", false); - if(requireToolLore) editToolLore= getConfig().getString("toolLore", null); + print("Lore Required?: " + requireToolLore); + + if(requireToolLore) { + editToolLore = getConfig().getString("toolLore", null); + print("Lore needs to be: " + editToolLore); + } + + //Require Sneaking - Wolfst0rm/ArmorStandEditor#17 + requireSneaking = getConfig().getBoolean("requireSneaking",false); + print("Sneaking required to activate the UI: " + requireSneaking); //Optional Information debug = getConfig().getBoolean("debug", true); + sendToActionBar = getConfig().getBoolean("sendMessagesToActionBar", true); + print("Messages being sent to action bar?: " + sendToActionBar); + + //All ItemFrame Stuff glowItemFrames = getConfig().getBoolean("glowingItemFrame", true); + print("Are glowing Item Frames enabled for 1.17 Users?: " + glowItemFrames); + + invisibleItemFrames = getConfig().getBoolean("invisibleItemFrames", true); + print("Can users turn ItemFrames invisible?: " + invisibleItemFrames); //Get Metrics from bStats getMetrics(); @@ -200,20 +230,41 @@ public void onEnable(){ } + private void runUpdateChecker() { + UpdateChecker.init(this, SPIGOT_RESOURCE_ID) + .setDownloadLink("https://www.spigotmc.org/resources/armorstandeditor-reborn.94503/") + .setChangelogLink("https://www.spigotmc.org/resources/armorstandeditor-reborn.94503/history") + .setNotifyOpsOnJoin(true) + .setNotifyByPermissionOnJoin("asedit.update") + .setColoredConsoleOutput(true) + .setUserAgent(new UserAgentBuilder().addPluginNameAndVersion().addServerVersion()) + .checkEveryXHours(72) //Warn people every 72 hours + .checkNow(); + } + //Implement Glow Effects for Wolfstorm/ArmorStandEditor-Issues#5 - Add Disable Slots with Different Glow than Default - private void registerScoreboards() { + private void registerScoreboards(Scoreboard scoreboard) { getLogger().info("Registering Scoreboards required for Glowing Effects"); - scoreboard.registerNewTeam("ASLocked"); - scoreboard.getTeam("ASLocked").setColor(ChatColor.RED); + //Fix for Scoreboard Issue reported by Starnos - Wolfst0rm/ArmorStandEditor-Issues/issues/18 + if (scoreboard.getTeam(lockedTeam) == null) { + print("Team '" + lockedTeam + "' does not exist, proceeding to create new team"); + scoreboard.registerNewTeam(lockedTeam); + + print("Setting Team '" + lockedTeam + "' color to RED"); + scoreboard.getTeam(lockedTeam).setColor(ChatColor.RED); + } else { + getLogger().info("Scoreboard for ASLocked Already exists. Continuing to load"); + } } - private void unregisterScoreboards() { + private void unregisterScoreboards(Scoreboard scoreboard) { getLogger().info("Removing Scoreboards required for Glowing Effects"); - team = scoreboard.getTeam("ASLocked"); + team = scoreboard.getTeam(lockedTeam); if(team != null) { //Basic Sanity Check to ensure that the team is there team.unregister(); + print("Team '" + lockedTeam + "sucessfully removed."); } else{ getLogger().severe("Team Already Appears to be removed. Please do not do this manually!"); } @@ -232,13 +283,48 @@ public void onDisable(){ } scoreboard = this.getServer().getScoreboardManager().getMainScoreboard(); - unregisterScoreboards(); + unregisterScoreboards(scoreboard); } public void log(String message){ this.getServer().getLogger().info("ArmorStandEditor: " + message); } + public String getNmsVersion(){ + return this.getServer().getClass().getPackage().getName().replace(".",",").split(",")[3]; + } + + public boolean getHasSpigot(){ + try { + Class.forName("org.spigotmc.SpigotConfig"); + print("SpigotMC Detected."); + nmsVersionNotLatest = "SpigotMC ASAP."; + return true; + } catch (ClassNotFoundException e){ + nmsVersionNotLatest = ""; + return false; + } + } + + public boolean getHasPaper(){ + try { + Class.forName("com.destroystokyo.paper.PaperConfig"); + print("PaperMC Detected."); + nmsVersionNotLatest = "SpigotMC ASAP."; + return true; + } catch (ClassNotFoundException e){ + nmsVersionNotLatest = ""; + return false; + } + } + /* + * For Internal Debugging - + * + * set debug: true in Config.yml + * NOTE: NOT RECOMMENDED FOR PROD! INTERNAL TESTING ONLY! + * + * To be refactored - Apart Log File. + */ public void print(String message){ if(debug){ this.getServer().broadcastMessage(message); diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/CommandEx.java b/src/main/java/io/github/rypofalem/armorstandeditor/CommandEx.java index 63cf902a..c1f180df 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/CommandEx.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/CommandEx.java @@ -19,6 +19,7 @@ package io.github.rypofalem.armorstandeditor; +import de.jeff_media.updatechecker.UpdateChecker; import io.github.rypofalem.armorstandeditor.modes.AdjustmentMode; import io.github.rypofalem.armorstandeditor.modes.Axis; import io.github.rypofalem.armorstandeditor.modes.EditMode; @@ -37,6 +38,7 @@ public class CommandEx implements CommandExecutor { final String LISTSLOT = ChatColor.YELLOW + "/ase slot <1-9>"; final String HELP = ChatColor.YELLOW + "/ase help"; final String VERSION = ChatColor.YELLOW + "/ase version"; + final String UPDATE = ChatColor.YELLOW + "/ase update"; public CommandEx( ArmorStandEditorPlugin armorStandEditorPlugin) { this.plugin = armorStandEditorPlugin; @@ -56,11 +58,13 @@ && checkPermission((Player) sender, "basic", true))) { player.sendMessage(LISTAXIS); player.sendMessage(LISTSLOT); player.sendMessage(LISTADJUSTMENT); + player.sendMessage(VERSION); + player.sendMessage(UPDATE); + player.sendMessage(HELP); return true; } switch (args[0].toLowerCase()) { - case "mode": - commandMode(player, args); + case "mode": commandMode(player, args); break; case "axis": commandAxis(player, args); break; @@ -73,24 +77,20 @@ && checkPermission((Player) sender, "basic", true))) { break; case "version": commandVersion(player); break; + case "update": commandUpdate(player); + break; default: sender.sendMessage(LISTMODE); sender.sendMessage(LISTAXIS); sender.sendMessage(LISTSLOT); sender.sendMessage(LISTADJUSTMENT); sender.sendMessage(VERSION); + sender.sendMessage(UPDATE); sender.sendMessage(HELP); } return true; } - private void commandVersion(Player player) { - if (!(checkPermission(player, "basic", true))) return; - String verString = plugin.pdfFile.getVersion(); - player.sendMessage(ChatColor.YELLOW + "[ArmorStandEditor] Version: " + verString); - } - - private void commandSlot(Player player, String[] args) { if (args.length <= 1) { @@ -156,9 +156,10 @@ private void commandMode( Player player, String[] args) { if (args.length > 1) { for ( EditMode mode : EditMode.values()) { if (mode.toString().toLowerCase().contentEquals(args[1].toLowerCase())) { - if (args[1].equals("invisible") && !checkPermission(player, "invisible", true)) return; - if (args[1].equals("itemframe") && !checkPermission(player, "invisible", true)) return; + if (args[1].equals("invisible") && !checkPermission(player, "armorstand.invisible", true)) return; + if (args[1].equals("itemframe") && !checkPermission(player, "itemframe.invisible", true)) return; plugin.editorManager.getPlayerEditor(player.getUniqueId()).setMode(mode); + plugin.print("Mode set to '" + mode + "' for player '" + player.getDisplayName()); return; } } @@ -175,14 +176,31 @@ private void commandHelp( Player player) { player.sendRawMessage(plugin.getLang().getMessage("helpurl", "")); } + private void commandUpdate(Player player) { + if(!(checkPermission(player, "update", true))) return; + UpdateChecker.getInstance().checkNow(player); + } + + private void commandVersion(Player player) { + if (!(checkPermission(player, "update", true))) return; + String verString = plugin.pdfFile.getVersion(); + plugin.print("Output of VerString: " + verString); + player.sendMessage(ChatColor.YELLOW + "[ArmorStandEditor] Version: " + verString); + UpdateChecker.getInstance().checkNow(player); + } + + + private boolean checkPermission( Player player, String permName, boolean sendMessageOnInvalidation) { - if (permName.toLowerCase().equals("paste")) { + if (permName.equalsIgnoreCase("paste")) { permName = "copy"; } if (player.hasPermission("asedit." + permName.toLowerCase())) { + plugin.print("Player '"+ player.getDisplayName() +" has Permission: asedit." + permName.toLowerCase()); return true; } else { if (sendMessageOnInvalidation) { + plugin.print("Player '"+ player.getDisplayName() +" does not have Permission: asedit." + permName.toLowerCase()); player.sendMessage(plugin.getLang().getMessage("noperm", "warn")); } return false; diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditor.java b/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditor.java index 9ab9a94b..b30dd0b5 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditor.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditor.java @@ -41,7 +41,6 @@ import org.bukkit.inventory.EquipmentSlot; import org.bukkit.potion.PotionEffect; import org.bukkit.potion.PotionEffectType; -import org.bukkit.scoreboard.Scoreboard; import org.bukkit.scoreboard.Team; import org.bukkit.util.EulerAngle; @@ -183,7 +182,7 @@ public void editArmorStand(ArmorStand armorStand) { } public void editItemFrame(ItemFrame itemFrame) { - if (!getPlayer().hasPermission("asedit.invisible")) return; //Change to be asedit.invisible? + if (!getPlayer().hasPermission("asedit.itemframe.invisible") || !plugin.invisibleItemFrames) return; //Option to use perms or Config switch (eMode) { case ITEMFRAME: toggleItemFrameVisible(itemFrame); @@ -329,7 +328,7 @@ private void paste(ArmorStand armorStand) { private void toggleDisableSlots(ArmorStand armorStand) { if (!getPlayer().hasPermission("asedit.disableSlots")) return; if (armorStand.hasEquipmentLock(EquipmentSlot.HAND, ArmorStand.LockType.REMOVING_OR_CHANGING)) { //Adds a lock to every slot or removes it - team = plugin.scoreboard.getTeam("ASLocked"); + team = plugin.scoreboard.getTeam(plugin.lockedTeam); armorStandID = armorStand.getUniqueId(); for (final EquipmentSlot slot : EquipmentSlot.values()) { // UNLOCKED @@ -361,7 +360,6 @@ private void toggleDisableSlots(ArmorStand armorStand) { } private void toggleGravity(ArmorStand armorStand) { //Fix for Wolfst0rm/ArmorStandEditor-Issues#6: Translation of On/Off Keys are broken - armorStand.setGravity(!armorStand.hasGravity()); sendMessage("setgravity", String.valueOf(armorStand.hasGravity())); @@ -376,13 +374,12 @@ void toggleArms(ArmorStand armorStand) { } void toggleVisible(ArmorStand armorStand) { - if (!getPlayer().hasPermission("asedit.invisible")) return; + if (!getPlayer().hasPermission("asedit.armorstand.invisible") || !plugin.armorStandVisibility) return; //Option to use perms or Config armorStand.setVisible(!armorStand.isVisible()); } void toggleItemFrameVisible(ItemFrame itemFrame) { - if (!getPlayer().hasPermission("asedit.invisible")) return; //Changed to Invisible, better that visibility is all under same permission node - //W0lfstorm/ArmorStandEditor-Issues#3 isnt going to be fixed in the near future. Ignoring for now + if (!getPlayer().hasPermission("asedit.itemframe.invisible") || !plugin.invisibleItemFrames) return; //Option to use perms or Config itemFrame.setVisible(!itemFrame.isVisible()); } diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditorManager.java b/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditorManager.java index 6cfaa62c..0017a037 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditorManager.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditorManager.java @@ -349,8 +349,9 @@ void onRightClickTool( PlayerInteractEvent e) { || e.getAction() == Action.RIGHT_CLICK_AIR || e.getAction() == Action.LEFT_CLICK_BLOCK || e.getAction() == Action.RIGHT_CLICK_BLOCK)) return; - Player player = e.getPlayer(); + Player player = e.getPlayer(); if (!plugin.isEditTool(player.getInventory().getItemInMainHand())) return; + if (plugin.requireSneaking && !player.isSneaking()) return; if(!player.hasPermission("asedit.basic")) return; e.setCancelled(true); getPlayerEditor(player.getUniqueId()).openMenu(); @@ -358,7 +359,7 @@ void onRightClickTool( PlayerInteractEvent e) { @EventHandler(priority = EventPriority.NORMAL) void onScrollNCrouch( PlayerItemHeldEvent e) { - Player player = e.getPlayer(); + Player player = e.getPlayer(); if (!player.isSneaking()) return; if (!plugin.isEditTool(player.getInventory().getItem(e.getPreviousSlot()))) return; diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml index 0cd51ea5..f879dd06 100644 --- a/src/main/resources/config.yml +++ b/src/main/resources/config.yml @@ -7,6 +7,13 @@ fine: 120 #Name of the edit tool's item Material. You can find a full list at https://hub.spigotmc.org/javadocs/bukkit/org/bukkit/Material.html tool: FLINT +#If true, the GUI will only open if the player is sneaking +requireSneaking: false + +#Allow the option to toggle invisiblity for ItemFrames and ArmorStand +ivisibleItemFrames: true +armorStandVisibility: true + #(Optional) data that the plugin looks for to identify the edit tool, such as the damage value of a sword or the pattern of sandstone. requireToolData: false toolData: 0 @@ -23,7 +30,4 @@ sendMessagesToActionBar: true #(Optional) Glowing Item Frames Support for Item Frames in 1.17 - WILL NOT WORK IN 1.16 OR LOWER AND 1.17.1 OR HIGHER #If true, players can make itemFrames glow by right clicking with a Glow Ink Sac -glowingItemFrame: true - -#Don't set to true unless you want players to see random messages or other undesirable behavior -debug: false \ No newline at end of file +glowingItemFrame: true \ No newline at end of file diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index 9e004668..533adb52 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -1,23 +1,28 @@ name: ArmorStandEditor main: io.github.rypofalem.armorstandeditor.ArmorStandEditorPlugin -version: 1.18-31 +version: 1.18.1-32 api-version: "1.13" -website: rypofalem.github.io +website: https://www.spigotmc.org/resources/94503/ author: Wolfstorm -authors: [Wolfstorm, Marfjeh, rypofalem, sekwah41, Sikatsu1997, Cool_boy, sumdream, Amaury Carrade, nicuch, kotarobo, prettydude, Jumpy91, Niasio, Patbox, Puremin0rez, Prof-Bloodstone] +authors: [Wolfstorm, Marfjeh, miknes123, rypofalem, sekwah41, Sikatsu1997, Cool_boy, sumdream, Amaury Carrade, nicuch, kotarobo, prettydude, Jumpy91, Niasio, Patbox, Puremin0rez, Prof-Bloodstone] description: Allows players to edit data of armorstands without any commands. softdepend: [Towny] commands: ase: description: Changes the function of the armorstand edit tool. usage: / ? - list subcommands + aliases: [ase, asedit, armorstandeditor] permission: asedit.basic + permission-message: "You are lacking the permission node 'asedit.basic'" permissions: asedit.basic: description: Allow use armorstand edit functions. If set to false it will override all other functions. default: true - asedit.invisible: - description: Toggles ArmorStand and ItemFrame visibility. + asedit.armorstand.invisible: + description: Toggles ArmorStand visibility. + default: true + asedit.itemframe.invisible: + description: Allows setting of ItemFrame Visibility default: true asedit.rename: description: Rename armorstands @@ -27,4 +32,7 @@ permissions: default: true asedit.disableslots: description: Allows locking and unlocking the contents of an ArmorStand. When locked, armor and equipement can not be added or removed without unlocking it first. - default: true \ No newline at end of file + default: true + asedit.update: + description: Allows the checking for updates. + default: false \ No newline at end of file From 4be4158de715d4acb7d80c84baaa282866f7d9c3 Mon Sep 17 00:00:00 2001 From: Wolfstorm Date: Sat, 18 Dec 2021 19:28:48 +0100 Subject: [PATCH 150/369] [CORE] Hotifx: Debug Output showing without Flag being there. Signed-off-by: Wolfstorm --- src/main/resources/config.yml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml index f879dd06..93dee387 100644 --- a/src/main/resources/config.yml +++ b/src/main/resources/config.yml @@ -30,4 +30,7 @@ sendMessagesToActionBar: true #(Optional) Glowing Item Frames Support for Item Frames in 1.17 - WILL NOT WORK IN 1.16 OR LOWER AND 1.17.1 OR HIGHER #If true, players can make itemFrames glow by right clicking with a Glow Ink Sac -glowingItemFrame: true \ No newline at end of file +glowingItemFrame: true + +#DO NOT REMOVE THIS - Internal Testing Usage. Enable => Unintended Side Effects +debug: false \ No newline at end of file From f93bfc8e5fd32ef8915e6713fad9c14c7ce8a08e Mon Sep 17 00:00:00 2001 From: "Larry (Wolfieheart)" Date: Thu, 6 Jan 2022 21:37:22 +0100 Subject: [PATCH 151/369] Version: ArmorStandEditor 1.18.1-33 (#22) * [CORE] Version Bump to 1.18.1-33 Signed-off-by: Wolfstorm Signed-off-by: Github * [CORE] Hotifx: Debug Output showing without Flag being there. Signed-off-by: Wolfstorm * [CORE] Wolfst0rm/ArmorStandIssues#20: Going on An Adventure Part 1 Signed-off-by: Wolfstorm Signed-off-by: Github * Revert "[CORE] Hotifx: Debug Output showing without Flag being there." This reverts commit 525e70fa7777604dd099adde8f05e1bdaa4dea1c. * [CORE] Wolfst0rm/ArmorStandEditor-Issues#19: Debug Output to File Signed-off-by: Wolfstorm Signed-off-by: Github * [CORE] Fix Security Hotspot found by SonarCloud Signed-off-by: Wolfstorm Signed-off-by: Github * [CORE] Wolfst0rm/ArmorStandEditor-Issues#19: Tidy Up with Code Smells from SonarCloud Signed-off-by: Wolfstorm Signed-off-by: Github * [ci-skip] Remove "- Coming Soon" from the 1.18.1 version link in Readme files Signed-off-by: Wolfstorm Signed-off-by: Github * [ci-skip] Update and Cleanup Readme file Signed-off-by: Wolfstorm Signed-off-by: Github * [CORE] Update Dependencies - Remove Adventure Signed-off-by: Wolfstorm Signed-off-by: Github * [CORE] Revert Maven to Master Version Signed-off-by: Wolfstorm Signed-off-by: Github * [CORE] Fix itemFrameVisible not appearing in the Menu after Permission Move Signed-off-by: Wolfstorm * [CORE] Fix itemFrameVisible and armorstandVisiblity not appearing in the Menu after Permission Move Signed-off-by: Wolfstorm * [CORE] Bump Maven Version Signed-off-by: Wolfstorm * [CORE] Fix for Invisibility Item Not Appearing in Menu Bug Signed-off-by: Wolfstorm * [CORE] Return the right values when getting ArmorStand and ItemFrame Visibility Checks in Menu Signed-off-by: Wolfstorm * [CORE] Remove conflicting Manifest File per Github Actions remarks Signed-off-by: Wolfstorm * [ci-skip] Typos... Typos... Typos... Typos... Signed-off-by: Wolfstorm * [CORE] Update BStats Signed-off-by: Wolfstorm * [CORE] Fix Alot of Compliation Issues on my end wrt UpdateChecker Signed-off-by: Wolfstorm * [CORE] Left Debug Enabled Accidentally again on Dev Branch! Signed-off-by: Wolfstorm * [CORE] Set MenuItem to not appear when visibility is not enabled. Signed-off-by: Wolfstorm * [CORE] Finalise new Visibility Logic for ItemFrames and ArmorStands. Signed-off-by: Wolfstorm * [CORE] Fix Remarks from SonarCloud, Simplify return when getArmorStandVisibility and getItemFrameVisibility Signed-off-by: Wolfstorm * [ci-skip] Fix Remark as to who noticed this being broken. Signed-off-by: Wolfstorm * [CORE] Fix Remarks from SonarCloud, Simplify return when getArmorStandVisibility and getItemFrameVisibility from config.yml Signed-off-by: Wolfstorm * [CORE] Resolve Merge Conflicts Signed-off-by: Wolfstorm * [CORE] Typos and Working Debug File Logic. Signed-off-by: Wolfstorm * [CORE] Fix Remarks from Sonar - 2 Hotspots and 1 Bug Signed-off-by: Wolfstorm * [CORE] Fix Remarks from Sonar Round 3 >.> Signed-off-by: Wolfstorm * [CORE] Fix Remarks from Sonar Round 3 >.> Signed-off-by: Wolfstorm * [CORE] Fix Remarks from Sonar Round 3 >.> Signed-off-by: Wolfstorm --- README.md | 21 ++-- pom.xml | 54 +++++---- src/main/java/META-INF/MANIFEST.MF | 2 - .../ArmorStandEditorPlugin.java | 106 +++++++++++++----- .../armorstandeditor/PlayerEditorManager.java | 2 +- .../rypofalem/armorstandeditor/menu/Menu.java | 14 ++- src/main/resources/config.yml | 5 +- src/main/resources/plugin.yml | 4 +- 8 files changed, 139 insertions(+), 69 deletions(-) delete mode 100644 src/main/java/META-INF/MANIFEST.MF diff --git a/README.md b/README.md index 892d8ca5..e9f3c5fe 100644 --- a/README.md +++ b/README.md @@ -13,9 +13,15 @@ ArmorStandEditor is a plugin for [Spigot and related forks](https://www.spigotmc.org/resources/armorstandeditor-reborn.94503/) to allow players in survival to easily edit armor stand pose and attributes. - +
+## Credits + +* RypoFalem for the original version of this plugin. Thank you for all your hard work (Archived in branch [Original-Version](https://github.com/Wolfst0rm/ArmorStandEditor/tree/Original-Version) ) +* Anyone who has contributed to this project with tests, issues, code reviews etc. Thank you! +* Shamblecraft for allowing me to test on the server as required before publishing to production. + ## Downloads Downloads for Version 1.17 and higher can be obtained from the [download page](https://www.spigotmc.org/resources/armorstandeditor-reborn.94503/) or our [release tracker](https://github.com/Wolfst0rm/ArmorStandEditor/releases) here on Github. @@ -23,7 +29,7 @@ For versions older than 1.17, then please use [the original versions download pa The Latest Downloads Shortcut Links: * [Unstable 1.1x-DEV Versions](https://github.com/Wolfst0rm/ArmorStandEditor/actions) - **Use these at your own risk. Limited Support is provided for testing purposes** -* [1.18.1 - Coming SOON!](https://www.spigotmc.org/threads/armorstandeditor-reborn.517132) +* [1.18.1](https://www.spigotmc.org/threads/armorstandeditor-reborn.517132) * [1.18](https://github.com/Wolfst0rm/ArmorStandEditor/releases/tag/1.18-31) * [1.17.1](https://github.com/Wolfst0rm/ArmorStandEditor/releases/tag/1.17.1-30) * [1.17](https://github.com/Wolfst0rm/ArmorStandEditor/releases/tag/1.17.1-27) @@ -47,17 +53,16 @@ subject to change in the future. The minimum enforced API Version is 1.13. * Editing ArmorStands with no commands required * Rotation of all ArmorStand Parts along each axis * Rotation of entire ArmorStand after Placement. Supported by Crouching and Scrolling, so you never have to open the menu -* Finer Adjustment to allow for Fine Tuning of Positions. -* Coarser Adustments to allow you to quikly to get to the intended position -* Toggles for: Disabling Slots, Invisiblity, Gravity, Base Plates, Size (Normal and Small) +* Finer Adjustment to allow for Fine-Tuning of Positions. +* Coarser Adjustments to allow you to quickly to get to the intended position +* Toggles for: Disabling Slots, Invisibility, Gravity, Base Plates, Size (Normal and Small) * Copying and Pasting ArmorStand Settings between ArmorStandEditor in a Survival Friendly way * Storage of Copied Settings in one of 9 available slots. * Naming of ArmorStands through the use of Vanilla Name tags, with colored name support * Multiple Language Support through the use of community translations -* Respects multiple protection plugins: WorldGaurd, Towny, GriefPrevention, Residence etc. +* Respects multiple protection plugins: WorldGuard, Towny, GriefPrevention, Residence etc. * Targeting of an ArmorStand by pressing F with the tool in your hand -* Glowing ArmorStand to signify Targetting and Slot Disables through the use of Scoreboards. -* +* Glowing ArmorStand to signify Targeting and Slot Disables through the use of Scoreboards. You can also follow our [Feature Roadmap](https://github.com/Wolfst0rm/ArmorStandEditor-Issues/issues/11) to see what we have planned (Updated as required). diff --git a/pom.xml b/pom.xml index 0e0333f9..54bfcb0b 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ io.github.rypofalem.armorstandeditor armorstandeditor jar - 1.18.1-32 + 1.18.1-33 armorstandeditor http://maven.apache.org @@ -16,6 +16,13 @@ https://sonarcloud.io + + + maven2 + https://repo.maven.apache.org/maven2/ + + + spigot-repo @@ -26,7 +33,7 @@ jitpack.io https://jitpack.io - + jeff-media-public https://hub.jeff-media.com/nexus/repository/jeff-media-public/ @@ -59,30 +66,10 @@ - - org.apache.maven.plugins - maven-compiler-plugin - 3.8.1 - - 11 - 11 - - -parameters - - - - - maven-release-plugin - ${maven-release-plugin.version} - - [ci skip] - @{project.version} - - org.apache.maven.plugins maven-shade-plugin - 3.2.4 + 3.2.1 @@ -102,7 +89,26 @@ + + org.apache.maven.plugins + maven-compiler-plugin + 3.8.1 + + 11 + 11 + + -parameters + + + + + maven-release-plugin + ${maven-release-plugin.version} + + [ci skip] + @{project.version} + + - diff --git a/src/main/java/META-INF/MANIFEST.MF b/src/main/java/META-INF/MANIFEST.MF deleted file mode 100644 index 59499bce..00000000 --- a/src/main/java/META-INF/MANIFEST.MF +++ /dev/null @@ -1,2 +0,0 @@ -Manifest-Version: 1.0 - diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/ArmorStandEditorPlugin.java b/src/main/java/io/github/rypofalem/armorstandeditor/ArmorStandEditorPlugin.java index fd309698..ff34bcb3 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/ArmorStandEditorPlugin.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/ArmorStandEditorPlugin.java @@ -19,11 +19,9 @@ package io.github.rypofalem.armorstandeditor; -import de.jeff_media.updatechecker.UpdateChecker; -import de.jeff_media.updatechecker.UserAgentBuilder; +import de.jeff_media.updatechecker.*; import io.github.rypofalem.armorstandeditor.language.Language; -import io.github.rypofalem.armorstandeditor.Metrics.DrilldownPie; -import io.github.rypofalem.armorstandeditor.Metrics.SimplePie; +import io.github.rypofalem.armorstandeditor.Metrics.*; import org.bukkit.Bukkit; import org.bukkit.ChatColor; @@ -37,12 +35,14 @@ import org.bukkit.scoreboard.Scoreboard; import org.bukkit.scoreboard.Team; +import java.io.*; +import java.time.*; +import java.nio.file.Files; +import java.text.SimpleDateFormat; +import java.time.format.DateTimeFormatter; +import java.time.format.FormatStyle; +import java.util.*; import java.io.File; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - - public class ArmorStandEditorPlugin extends JavaPlugin{ @@ -82,6 +82,17 @@ public class ArmorStandEditorPlugin extends JavaPlugin{ public Team team; String lockedTeam = "ASLocked"; + //Better Debug Output + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); + Date date = Calendar.getInstance().getTime(); + Instant instant = Instant.now(); + DateTimeFormatter formatter = DateTimeFormatter.ofLocalizedDateTime( FormatStyle.SHORT ).withLocale( Locale.UK ).withZone( ZoneId.systemDefault() ); + String dateAsString = dateFormat.format(date); + String timeAsString = formatter.format(instant); + final String debugOutputFileName = getDataFolder() + File.separator + "DEBUG-" + dateAsString + ".log"; + FileOutputStream fos = null; + File f = new File(debugOutputFileName); + private static ArmorStandEditorPlugin plugin; private static final int PLUGIN_ID = 12668; @@ -149,6 +160,14 @@ public void onEnable(){ registerScoreboards(scoreboard); getLogger().info(SEPARATOR_FIELD); + //Is Debug Enabled + debug = getConfig().getBoolean("debug", true); + print("Debug Mode Enabled? Well if you can read this its true"); + + if(debug){ + createDebugFile(); + } + //saveResource doesn't accept File.separator on Windows, need to hardcode unix separator "/" instead updateConfig("", "config.yml"); updateConfig("lang/", "test_NA.yml"); @@ -181,7 +200,7 @@ public void onEnable(){ return; } - //ArmorStandVisility Node + //ArmorStandVisibility Node armorStandVisibility = getConfig().getBoolean("armorStandVisibility", true); print("ArmorStands allowed to be made visible/invisible?: " + armorStandVisibility); @@ -206,9 +225,9 @@ public void onEnable(){ requireSneaking = getConfig().getBoolean("requireSneaking",false); print("Sneaking required to activate the UI: " + requireSneaking); - //Optional Information - debug = getConfig().getBoolean("debug", true); + //Send Messages to Action Bar - NEW SINCE 1.16 at least (?) + //TODO: Fix above comment with correct version - FUTURE CHORE! sendToActionBar = getConfig().getBoolean("sendMessagesToActionBar", true); print("Messages being sent to action bar?: " + sendToActionBar); @@ -264,7 +283,7 @@ private void unregisterScoreboards(Scoreboard scoreboard) { team = scoreboard.getTeam(lockedTeam); if(team != null) { //Basic Sanity Check to ensure that the team is there team.unregister(); - print("Team '" + lockedTeam + "sucessfully removed."); + print("Team '" + lockedTeam + "' successfully removed."); } else{ getLogger().severe("Team Already Appears to be removed. Please do not do this manually!"); } @@ -286,8 +305,41 @@ public void onDisable(){ unregisterScoreboards(scoreboard); } + public void createDebugFile(){ + try { + if (!f.exists() && f.createNewFile()) { + Files.setAttribute(f.toPath(), "dos:hidden", false); + } + } catch (IOException e) { + this.getServer().getLogger().warning(e.getMessage()); + } + } + public void log(String message){ + //Output to Server Console - Safer than doing a Broadcast to everyone on the Server + String timeMsgSep = ": "; this.getServer().getLogger().info("ArmorStandEditor: " + message); + + try{ + fos = new FileOutputStream(f, true); + + //Write the Content as Bytes + fos.write(timeAsString.getBytes()); + fos.write(timeMsgSep.getBytes()); + fos.write(message.getBytes()); + fos.write(10); + fos.flush(); + }catch(IOException e){ + this.getServer().getLogger().warning(e.getMessage()); + }finally{ + if(fos != null){ + try { + fos.close(); + } catch (IOException e) { + this.getServer().getLogger().warning(e.getMessage()); + } + } + } } public String getNmsVersion(){ @@ -306,6 +358,14 @@ public boolean getHasSpigot(){ } } + public boolean getArmorStandVisibility(){ + return getConfig().getBoolean("armorStandVisibility"); + } + + public boolean getItemFrameVisibility(){ + return getConfig().getBoolean("invisibleItemFrames"); + } + public boolean getHasPaper(){ try { Class.forName("com.destroystokyo.paper.PaperConfig"); @@ -327,7 +387,6 @@ public boolean getHasPaper(){ */ public void print(String message){ if(debug){ - this.getServer().broadcastMessage(message); log(message); } } @@ -355,7 +414,7 @@ public boolean isEditTool(ItemStack itemStk){ if(requireToolLore && editToolLore != null){ - //If the ItemStack does not have Meta Data then we return false + //If the ItemStack does not have Metadata then we return false if(!itemStk.hasItemMeta()) { return false; } //Get the lore of the Item and if it is null - Return False @@ -380,24 +439,16 @@ private void getMetrics(){ Metrics metrics = new Metrics(this, PLUGIN_ID); //RequireToolLore Metric - metrics.addCustomChart(new SimplePie("tool_lore_enabled", () -> { - return getConfig().getString("requireToolLore"); - })); + metrics.addCustomChart(new SimplePie("tool_lore_enabled", () -> getConfig().getString("requireToolLore"))); //RequireToolData - metrics.addCustomChart(new SimplePie("tool_data_enabled", () ->{ - return getConfig().getString("requireToolData"); - })); + metrics.addCustomChart(new SimplePie("tool_data_enabled", () -> getConfig().getString("requireToolData"))); //Send Messages to ActionBar - metrics.addCustomChart(new SimplePie("action_bar_messages", () -> { - return getConfig().getString("sendMessagesToActionBar"); - })); + metrics.addCustomChart(new SimplePie("action_bar_messages", () -> getConfig().getString("sendMessagesToActionBar"))); //Debug Mode Enabled? - metrics.addCustomChart(new SimplePie("uses_debug_mode", () -> { - return getConfig().getString("debug"); - })); + metrics.addCustomChart(new SimplePie("uses_debug_mode", () -> getConfig().getString("debug"))); //Language is used metrics.addCustomChart(new DrilldownPie("language_used", () -> { @@ -429,7 +480,6 @@ private void getMetrics(){ } else{ map.put("Other", entry); } - return map; })); diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditorManager.java b/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditorManager.java index 0017a037..b6462140 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditorManager.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditorManager.java @@ -111,7 +111,7 @@ void onArmorStandInteract( PlayerInteractAtEntityEvent event) { //Attempt rename if (player.getInventory().getItemInMainHand().getType() == Material.NAME_TAG && player.hasPermission("asedit.rename")) { ItemStack nameTag = player.getInventory().getItemInMainHand(); - String name; + String name; if (nameTag.getItemMeta() != null && nameTag.getItemMeta().hasDisplayName()) { name = nameTag.getItemMeta().getDisplayName().replace('&', ChatColor.COLOR_CHAR); } else { diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/menu/Menu.java b/src/main/java/io/github/rypofalem/armorstandeditor/menu/Menu.java index 0ceb427a..e8dcd8f1 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/menu/Menu.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/menu/Menu.java @@ -39,6 +39,7 @@ public class Menu { private PlayerEditor pe; private static String name = "Armor Stand Editor Menu"; + public Menu(PlayerEditor pe) { this.pe = pe; name = pe.plugin.getLang().getMessage("mainmenutitle", "menutitle"); @@ -121,20 +122,29 @@ private void fillInventory() { showArms = createIcon(new ItemStack(Material.STICK), "showarms", "mode showarms"); - if (pe.getPlayer().hasPermission("asedit.invisible")) { + //Praise Start - Sikatsu and cowgod, Nicely spotted this being broken + if (pe.getPlayer().hasPermission("asedit.armorstand.invisible") || + pe.plugin.getArmorStandVisibility() ) { visibility = new ItemStack(Material.POTION, 1); PotionMeta potionMeta = (PotionMeta) visibility.getItemMeta(); PotionEffect eff1 = new PotionEffect(PotionEffectType.INVISIBILITY, 1, 0); potionMeta.addCustomEffect(eff1, true); visibility.setItemMeta(potionMeta); visibility = createIcon(visibility, "invisible", "mode invisible"); + } else { + visibility = null; } - if (pe.getPlayer().hasPermission("asedit.invisible")) { + if (pe.getPlayer().hasPermission("asedit.itemframe.invisible") || + pe.plugin.getItemFrameVisibility() ) { itemFrameVisible = new ItemStack(Material.ITEM_FRAME, 1); itemFrameVisible = createIcon(itemFrameVisible, "itemframevisible", "mode itemframe"); + } else { + itemFrameVisible = null; } + //Praise end + size = createIcon(new ItemStack(Material.PUFFERFISH, 1), "size", "mode size"); diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml index 93dee387..9b3d4987 100644 --- a/src/main/resources/config.yml +++ b/src/main/resources/config.yml @@ -10,7 +10,7 @@ tool: FLINT #If true, the GUI will only open if the player is sneaking requireSneaking: false -#Allow the option to toggle invisiblity for ItemFrames and ArmorStand +#Allow the option to toggle invisibility for ItemFrames and ArmorStand ivisibleItemFrames: true armorStandVisibility: true @@ -32,5 +32,6 @@ sendMessagesToActionBar: true #If true, players can make itemFrames glow by right clicking with a Glow Ink Sac glowingItemFrame: true -#DO NOT REMOVE THIS - Internal Testing Usage. Enable => Unintended Side Effects +#DO NOT ENABLE - For Testing Purposes. Can lead to unwanted sideaffects +#Enable if you are submitting a bug report PLEASE! debug: false \ No newline at end of file diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index 533adb52..8b5998fe 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -1,6 +1,6 @@ name: ArmorStandEditor main: io.github.rypofalem.armorstandeditor.ArmorStandEditorPlugin -version: 1.18.1-32 +version: 1.18.1-33 api-version: "1.13" website: https://www.spigotmc.org/resources/94503/ author: Wolfstorm @@ -25,7 +25,7 @@ permissions: description: Allows setting of ItemFrame Visibility default: true asedit.rename: - description: Rename armorstands + description: Rename armorstands - Now Supports Color default: true asedit.equipment: description: Access armorstand equipment GUI From d7016a5fc9f9336c8279974641cec7e2e97559ff Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 9 Jan 2022 20:55:46 +0100 Subject: [PATCH 152/369] Bump maven-shade-plugin from 3.2.1 to 3.2.4 (#23) Bumps [maven-shade-plugin](https://github.com/apache/maven-shade-plugin) from 3.2.1 to 3.2.4. - [Release notes](https://github.com/apache/maven-shade-plugin/releases) - [Commits](https://github.com/apache/maven-shade-plugin/compare/maven-shade-plugin-3.2.1...maven-shade-plugin-3.2.4) --- updated-dependencies: - dependency-name: org.apache.maven.plugins:maven-shade-plugin dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 54bfcb0b..368a3e02 100644 --- a/pom.xml +++ b/pom.xml @@ -69,7 +69,7 @@ org.apache.maven.plugins maven-shade-plugin - 3.2.1 + 3.2.4 From 59b58c70043c2618b4bb75c8e015c585e5b60beb Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 13 Jan 2022 09:34:13 +0100 Subject: [PATCH 153/369] [CI] Update dependency org.apache.maven.plugins:maven-compiler-plugin to v3.9.0 (#25) Co-authored-by: Renovate Bot --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 368a3e02..dceaa8af 100644 --- a/pom.xml +++ b/pom.xml @@ -92,7 +92,7 @@ org.apache.maven.plugins maven-compiler-plugin - 3.8.1 + 3.9.0 11 11 From 0c5df11756d68c8ff89f92dee65feb74d50f1a09 Mon Sep 17 00:00:00 2001 From: "Larry (Wolfieheart)" Date: Fri, 14 Jan 2022 10:26:37 +0100 Subject: [PATCH 154/369] [CI] Fix Build Failures and Sonar API issues Signed-off-by: Wolfieheart Signed-off-by: Github --- .github/workflows/maven-publish.yml | 4 +-- README.md | 42 ++++++++++++++--------------- pom.xml | 2 +- 3 files changed, 23 insertions(+), 25 deletions(-) diff --git a/.github/workflows/maven-publish.yml b/.github/workflows/maven-publish.yml index e166713b..fad4c7a0 100644 --- a/.github/workflows/maven-publish.yml +++ b/.github/workflows/maven-publish.yml @@ -42,7 +42,7 @@ jobs: env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # Needed to get PR information, if any SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} - run: mvn -B verify org.sonarsource.scanner.maven:sonar-maven-plugin:sonar -Dsonar.projectKey=Wolfst0rm_ArmorStandEditor + run: mvn -B verify org.sonarsource.scanner.maven:sonar-maven-plugin:sonar -Dsonar.projectKey=wolfieheart_ArmorStandEditor #5: Create a Clean Package - and Verify it - name: Clean package @@ -51,7 +51,7 @@ jobs: - name: Clean Verify run: mvn -B clean verify - #6 Upload Artifacts (Debug Purposes + #6 Upload Artifacts (Debug Purposes) - name: Upload Artifact for Debugging uses: actions/upload-artifact@v2.3.1 with: diff --git a/README.md b/README.md index e9f3c5fe..d1786f71 100644 --- a/README.md +++ b/README.md @@ -1,18 +1,18 @@
- - ## ArmorStandEditor - - [![Build Status](https://github.com/Wolfst0rm/ArmorStandEditor/actions/workflows/maven-publish.yml/badge.svg?style=flat)](https://github.com/Wolfst0rm/ArmorStandEditor/actions/workflows/maven-publish.yml) - [![Maintainability Rating](https://sonarcloud.io/api/project_badges/measure?project=Wolfst0rm_ArmorStandEditor&metric=sqale_rating&style=flat)](https://sonarcloud.io/summary/new_code?id=Wolfst0rm_ArmorStandEditor) - [![CodeFactor](https://www.codefactor.io/repository/github/wolfst0rm/armorstandeditor/badge?style=flat)](https://www.codefactor.io/repository/github/wolfst0rm/armorstandeditor) - [![Scanned with Sonarcloud](https://img.shields.io/badge/Scanned%20With-Sonarcloud-orange?style=flat&logo=sonarcloud)](https://sonarcloud.io/summary/new_code?id=Wolfst0rm_ArmorStandEditor) - [![wakatime](https://wakatime.com/badge/github/Wolfst0rm/ArmorStandEditor.svg?style=flat)](https://wakatime.com/badge/github/Wolfst0rm/ArmorStandEditor) - [![Compatibility/GetBukkit](https://img.shields.io/badge/Compatability-Paper%2C%20Spigot%2C%20Bukkit%20etc.%20(GetBukkit.org)-yellowgreen?style=flat)](https://getbukkit.org/) - [![License](https://img.shields.io/badge/Licence-GNU%20Public%20V2%20-red?style=flat)](https://github.com/Wolfst0rm/ArmorStandEditor/LICENSE.md) - [![Roadmap](https://img.shields.io/badge/Roadmap-ArmorStandEditor--Issues%2311-orange?style=flat)](https://github.com/Wolfst0rm/ArmorStandEditor-Issues/issues/11) - - - ArmorStandEditor is a plugin for [Spigot and related forks](https://www.spigotmc.org/resources/armorstandeditor-reborn.94503/) to allow players in survival to easily edit armor stand pose and attributes. + +## ArmorStandEditor + +[![Build Status](https://github.com/Wolfst0rm/ArmorStandEditor/actions/workflows/maven-publish.yml/badge.svg?style=flat)](https://github.com/Wolfst0rm/ArmorStandEditor/actions/workflows/maven-publish.yml) +[![Maintainability Rating](https://sonarcloud.io/api/project_badges/measure?project=wolfieheart_ArmorStandEditor&metric=sqale_rating&style=flat)](https://sonarcloud.io/summary/new_code?id=wolfieheart_ArmorStandEditor) +[![CodeFactor](https://www.codefactor.io/repository/github/wolfieheart/armorstandeditor/badge?style=flat)](https://www.codefactor.io/repository/github/wolfieheart/armorstandeditor) +[![Scanned with Sonarcloud](https://img.shields.io/badge/Scanned%20With-Sonarcloud-orange?style=flat&logo=sonarcloud)](https://sonarcloud.io/summary/new_code?id=Wolfst0rm_ArmorStandEditor) +[![wakatime](https://wakatime.com/badge/github/Wolfst0rm/ArmorStandEditor.svg?style=flat)](https://wakatime.com/badge/github/Wolfst0rm/ArmorStandEditor) +[![Compatibility/GetBukkit](https://img.shields.io/badge/Compatability-Paper%2C%20Spigot%2C%20Bukkit%20etc.%20(GetBukkit.org)-yellowgreen?style=flat)](https://getbukkit.org/) +[![License](https://img.shields.io/badge/Licence-GNU%20Public%20V2%20-red?style=flat)](https://github.com/Wolfst0rm/ArmorStandEditor/LICENSE.md) +[![Roadmap](https://img.shields.io/badge/Roadmap-ArmorStandEditor--Issues%2311-orange?style=flat)](https://github.com/Wolfst0rm/ArmorStandEditor-Issues/issues/11) + + +ArmorStandEditor is a plugin for [Spigot and related forks](https://www.spigotmc.org/resources/armorstandeditor-reborn.94503/) to allow players in survival to easily edit armor stand pose and attributes.
@@ -23,7 +23,7 @@ * Shamblecraft for allowing me to test on the server as required before publishing to production. ## Downloads -Downloads for Version 1.17 and higher can be obtained from the [download page](https://www.spigotmc.org/resources/armorstandeditor-reborn.94503/) or our [release tracker](https://github.com/Wolfst0rm/ArmorStandEditor/releases) here on Github. +Downloads for Version 1.17 and higher can be obtained from the [download page](https://www.spigotmc.org/resources/armorstandeditor-reborn.94503/) or our [release tracker](https://github.com/Wolfst0rm/ArmorStandEditor/releases) here on Github. For versions older than 1.17, then please use [the original versions download page](https://www.spigotmc.org/resources/armor-stand-editor-dead.7688/). @@ -31,7 +31,7 @@ The Latest Downloads Shortcut Links: * [Unstable 1.1x-DEV Versions](https://github.com/Wolfst0rm/ArmorStandEditor/actions) - **Use these at your own risk. Limited Support is provided for testing purposes** * [1.18.1](https://www.spigotmc.org/threads/armorstandeditor-reborn.517132) * [1.18](https://github.com/Wolfst0rm/ArmorStandEditor/releases/tag/1.18-31) -* [1.17.1](https://github.com/Wolfst0rm/ArmorStandEditor/releases/tag/1.17.1-30) +* [1.17.1](https://github.com/Wolfst0rm/ArmorStandEditor/releases/tag/1.17.1-30) * [1.17](https://github.com/Wolfst0rm/ArmorStandEditor/releases/tag/1.17.1-27) * [1.16](https://www.spigotmc.org/resources/armor-stand-editor-dead.7688/download?version=342891) * [1.14](https://www.spigotmc.org/resources/armor-stand-editor-dead.7688/download?version=299267) @@ -46,7 +46,7 @@ The Latest Downloads Shortcut Links: **NOTE:** The 1.17 Versions introduce NMS Version Checks and will not load on versions older than 1.13. -It will also advise that if you are on 1.13 to 1.16, that you update to 1.17.x or Higher. This will be +It will also advise that if you are on 1.13 to 1.16, that you update to 1.17.x or Higher. This will be subject to change in the future. The minimum enforced API Version is 1.13. ## Features @@ -56,10 +56,10 @@ subject to change in the future. The minimum enforced API Version is 1.13. * Finer Adjustment to allow for Fine-Tuning of Positions. * Coarser Adjustments to allow you to quickly to get to the intended position * Toggles for: Disabling Slots, Invisibility, Gravity, Base Plates, Size (Normal and Small) -* Copying and Pasting ArmorStand Settings between ArmorStandEditor in a Survival Friendly way +* Copying and Pasting ArmorStand Settings between ArmorStandEditor in a Survival Friendly way * Storage of Copied Settings in one of 9 available slots. * Naming of ArmorStands through the use of Vanilla Name tags, with colored name support -* Multiple Language Support through the use of community translations +* Multiple Language Support through the use of community translations * Respects multiple protection plugins: WorldGuard, Towny, GriefPrevention, Residence etc. * Targeting of an ArmorStand by pressing F with the tool in your hand * Glowing ArmorStand to signify Targeting and Slot Disables through the use of Scoreboards. @@ -67,7 +67,7 @@ subject to change in the future. The minimum enforced API Version is 1.13. You can also follow our [Feature Roadmap](https://github.com/Wolfst0rm/ArmorStandEditor-Issues/issues/11) to see what we have planned (Updated as required). ## Support -Support for ArmorStandEditor is provided: +Support for ArmorStandEditor is provided: * For API-Versions Higher than 1.13 but Fixes will not be retrofitted to older releases. * For Latest Release and Unstable versions of the Plugin @@ -78,5 +78,3 @@ If there are new feature requests, you can ask them to be implemented [here](htt **NOTE:** Feature Requests are first evaluated and analyzed before an implementation can be considered. Bugs are also first tested to ensure that they can be reproduced according to the reported steps. - - diff --git a/pom.xml b/pom.xml index dceaa8af..78b8209c 100644 --- a/pom.xml +++ b/pom.xml @@ -12,7 +12,7 @@ 17 UTF-8 2.5.3 - wolfst0rm + wolfieheart https://sonarcloud.io From ca0106a8e9cc15f1cd48ac74d1a95741d1f65832 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 26 Jan 2022 10:42:04 +0100 Subject: [PATCH 155/369] Update dependency de.jeff_media:SpigotUpdateChecker to v1.3.2 (#28) Co-authored-by: Renovate Bot --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 78b8209c..9d69f31f 100644 --- a/pom.xml +++ b/pom.xml @@ -59,7 +59,7 @@ de.jeff_media SpigotUpdateChecker - 1.3.0 + 1.3.2 compile From af4869dda397141668425f4a751cff42e4900671 Mon Sep 17 00:00:00 2001 From: Wolfstorm Date: Wed, 23 Feb 2022 20:15:13 +0100 Subject: [PATCH 156/369] [CI-SKIP]Ignore ToDoList File, Using it for Development Notes Signed-off-by: Wolfieheart Signed-off-by: Wolfstorm --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 478dd2cd..72b2208e 100644 --- a/.gitignore +++ b/.gitignore @@ -7,3 +7,4 @@ target/ /.settings/ /src/main/java/META-INF/*.MF /src/main/java/META-INF/ +/TODO-LIST.MD From 1b2595bf856175d79440bd2244ea44ddaa95e272 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 23 Feb 2022 20:17:01 +0100 Subject: [PATCH 157/369] Merge pull request #29 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Update dependency org.apache.maven.plugins:maven-compiler-plugin to v… --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 9d69f31f..25f348b1 100644 --- a/pom.xml +++ b/pom.xml @@ -92,7 +92,7 @@ org.apache.maven.plugins maven-compiler-plugin - 3.9.0 + 3.10.0 11 11 From 0eadfa84aaeabfc1f7014363d690360f90f76fd6 Mon Sep 17 00:00:00 2001 From: "Larry (Wolfieheart)" Date: Fri, 25 Feb 2022 11:07:25 +0100 Subject: [PATCH 158/369] [CORE] ArmorStandEditor v1.18.1-33.1 (#31) * [CORE] Wolfieheart/ArmorStandEditor-Issues#27: Potential fix for PlayerInteractAtEntityEvent Double Firing Signed-off-by: Wolfieheart Signed-off-by: Wolfstorm * [CORE] Version Bump to 1.18.1-33.1 - Hotfix tested and confirmed working! Signed-off-by: Wolfieheart Signed-off-by: Github * Update actions/setup-java action to v3 Co-authored-by: Renovate Bot --- .github/workflows/maven-publish.yml | 2 +- pom.xml | 2 +- .../rypofalem/armorstandeditor/PlayerEditorManager.java | 6 +++--- src/main/resources/plugin.yml | 2 +- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/workflows/maven-publish.yml b/.github/workflows/maven-publish.yml index fad4c7a0..0a4d5524 100644 --- a/.github/workflows/maven-publish.yml +++ b/.github/workflows/maven-publish.yml @@ -17,7 +17,7 @@ jobs: # 2. Setup Java 17 JDK - name: Set up JDK 17 Environment - uses: actions/setup-java@v2 + uses: actions/setup-java@v3 with: java-version: '17' distribution: 'zulu' diff --git a/pom.xml b/pom.xml index 25f348b1..9a15b78b 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ io.github.rypofalem.armorstandeditor armorstandeditor jar - 1.18.1-33 + 1.18.1-33.1 armorstandeditor http://maven.apache.org diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditorManager.java b/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditorManager.java index b6462140..7faaa9ba 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditorManager.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditorManager.java @@ -93,7 +93,7 @@ void onArmorStandDamage( EntityDamageByEntityEvent event) { void onArmorStandInteract( PlayerInteractAtEntityEvent event) { if (ignoreNextInteract) return; if (event.getHand() != EquipmentSlot.HAND) return; - Player player = event.getPlayer(); + Player player = event.getPlayer(); if (!((event.getRightClicked() instanceof ArmorStand) || event.getRightClicked() instanceof ItemFrame)) return; if (event.getRightClicked() instanceof ArmorStand) { @@ -278,7 +278,7 @@ boolean canEdit( Player player, ArmorStand as) { ignoreNextInteract = true; ArrayList events = new ArrayList<>(); //events.add(new PlayerInteractEntityEvent(player, as, EquipmentSlot.HAND)); - events.add(new PlayerInteractAtEntityEvent(player, as, as.getLocation().toVector(), EquipmentSlot.HAND)); //FIX for Issue RypoFalem/ArmorStandEditor #48: PlayerInteractAtEntityEvent + //events.add(new PlayerInteractAtEntityEvent(player, as, as.getLocation().toVector(), EquipmentSlot.HAND)); //FIX for Issue RypoFalem/ArmorStandEditor #48: PlayerInteractAtEntityEvent //events.add(new PlayerArmorStandManipulateEvent(player, as, player.getEquipment().getItemInMainHand(), as.getItemInHand(), EquipmentSlot.HAND)); for ( Event event : events) { if (!(event instanceof Cancellable)) continue; @@ -302,7 +302,7 @@ boolean canEdit( Player player, ItemFrame itemf) { ignoreNextInteract = true; ArrayList events = new ArrayList<>(); //events.add(new PlayerInteractEntityEvent(player, itemf, EquipmentSlot.HAND)); - events.add(new PlayerInteractAtEntityEvent(player, itemf, itemf.getLocation().toVector(), EquipmentSlot.HAND)); + //events.add(new PlayerInteractAtEntityEvent(player, itemf, itemf.getLocation().toVector(), EquipmentSlot.HAND)); //events.add(new PlayerArmorStandManipulateEvent(player, as, player.getEquipment().getItemInMainHand(), as.getItemInHand(), EquipmentSlot.HAND)); for ( Event event : events) { if (!(event instanceof Cancellable)) continue; diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index 8b5998fe..558966e9 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -1,6 +1,6 @@ name: ArmorStandEditor main: io.github.rypofalem.armorstandeditor.ArmorStandEditorPlugin -version: 1.18.1-33 +version: 1.18.1-33.1 api-version: "1.13" website: https://www.spigotmc.org/resources/94503/ author: Wolfstorm From 9f2c3f44e5a16b9acf618aeb786ace73bfc88951 Mon Sep 17 00:00:00 2001 From: "Larry (Wolfieheart)" Date: Sun, 6 Mar 2022 11:29:02 +0100 Subject: [PATCH 159/369] [CORE] ArmorStandEditor v1.18.2-34 (#38) * [CORE] Bump Version to 1.18.2-34 Signed-off-by: Wolfieheart Signed-off-by: Wolfstorm * Update zh_CN.yml (#33) [LANG] Update Simplified Chinese Translation (#33) * Update actions/checkout action to v3 (#34) [CI] Update actions/checkout action to v3 (#34) * Update actions/upload-artifact action to v3 (#36) [CI] Update actions/upload-artifact action to v3 (#36) * [CORE] Update Metrics Signed-off-by: Wolfieheart Signed-off-by: Wolfstorm Co-authored-by: 10935336 Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .github/workflows/maven-publish.yml | 4 +- README.md | 3 +- pom.xml | 15 +- .../ArmorStandEditorPlugin.java | 8 +- .../bstats/bukkit}/Metrics.java | 149 ++++++++++-------- src/main/resources/lang/zh_CN.yml | 119 +++++++++----- src/main/resources/plugin.yml | 2 +- 7 files changed, 178 insertions(+), 122 deletions(-) rename src/main/java/{io/github/rypofalem/armorstandeditor => org/bstats/bukkit}/Metrics.java (97%) diff --git a/.github/workflows/maven-publish.yml b/.github/workflows/maven-publish.yml index 0a4d5524..7b886859 100644 --- a/.github/workflows/maven-publish.yml +++ b/.github/workflows/maven-publish.yml @@ -11,7 +11,7 @@ jobs: steps: # 1. Check out the current working tree - name: Checkout ArmorStandEditor Repository - uses: actions/checkout@v2 + uses: actions/checkout@v3 with: fetch-depth: 0 # Shallow clones should be disabled for a better relevancy of analysis @@ -53,7 +53,7 @@ jobs: #6 Upload Artifacts (Debug Purposes) - name: Upload Artifact for Debugging - uses: actions/upload-artifact@v2.3.1 + uses: actions/upload-artifact@v3.0.0 with: name: artifact path: /home/runner/work/ArmorStandEditor/ArmorStandEditor/target/armorstandeditor-*-*.jar diff --git a/README.md b/README.md index d1786f71..eb6f637b 100644 --- a/README.md +++ b/README.md @@ -29,7 +29,8 @@ For versions older than 1.17, then please use [the original versions download pa The Latest Downloads Shortcut Links: * [Unstable 1.1x-DEV Versions](https://github.com/Wolfst0rm/ArmorStandEditor/actions) - **Use these at your own risk. Limited Support is provided for testing purposes** -* [1.18.1](https://www.spigotmc.org/threads/armorstandeditor-reborn.517132) +* [1.18.2](https://www.spigotmc.org/threads/armorstandeditor-reborn.517132) +* [1.18.1](https://github.com/Wolfieheart/ArmorStandEditor/releases/tag/1.18.1-33) * [1.18](https://github.com/Wolfst0rm/ArmorStandEditor/releases/tag/1.18-31) * [1.17.1](https://github.com/Wolfst0rm/ArmorStandEditor/releases/tag/1.17.1-30) * [1.17](https://github.com/Wolfst0rm/ArmorStandEditor/releases/tag/1.17.1-27) diff --git a/pom.xml b/pom.xml index 9a15b78b..5c928ec0 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ io.github.rypofalem.armorstandeditor armorstandeditor jar - 1.18.1-33.1 + 1.18.2-34 armorstandeditor http://maven.apache.org @@ -24,14 +24,15 @@ + spigot-repo https://hub.spigotmc.org/nexus/content/repositories/snapshots/ - jitpack.io - https://jitpack.io + glaremasters repo + https://repo.glaremasters.me/repository/towny/ @@ -45,14 +46,14 @@ org.spigotmc spigot-api - 1.18.1-R0.1-SNAPSHOT + 1.18.2-R0.1-SNAPSHOT provided - com.github.TownyAdvanced - Towny - 0.97.5.1 + com.palmergames.bukkit.towny + towny + 0.98.0.0 provided diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/ArmorStandEditorPlugin.java b/src/main/java/io/github/rypofalem/armorstandeditor/ArmorStandEditorPlugin.java index ff34bcb3..d1f44381 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/ArmorStandEditorPlugin.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/ArmorStandEditorPlugin.java @@ -19,9 +19,12 @@ package io.github.rypofalem.armorstandeditor; -import de.jeff_media.updatechecker.*; import io.github.rypofalem.armorstandeditor.language.Language; -import io.github.rypofalem.armorstandeditor.Metrics.*; + +import de.jeff_media.updatechecker.*; + +import org.bstats.bukkit.Metrics; +import org.bstats.bukkit.Metrics.*; import org.bukkit.Bukkit; import org.bukkit.ChatColor; @@ -153,7 +156,6 @@ public void onEnable(){ nmsVersion.startsWith("v1_17")){ getLogger().warning("Minecraft Version: " + nmsVersion + " is supported, but not latest."); getLogger().warning("ArmorStandEditor will still work, but please update to the latest Version of " + nmsVersionNotLatest + ". Loading continuing."); - } else { getLogger().info("Minecraft Version: " + nmsVersion + " is supported. Loading continuing."); } getServer().getPluginManager().enablePlugin(this); diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/Metrics.java b/src/main/java/org/bstats/bukkit/Metrics.java similarity index 97% rename from src/main/java/io/github/rypofalem/armorstandeditor/Metrics.java rename to src/main/java/org/bstats/bukkit/Metrics.java index 0f1481bd..0b2c7105 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/Metrics.java +++ b/src/main/java/org/bstats/bukkit/Metrics.java @@ -1,4 +1,18 @@ -package io.github.rypofalem.armorstandeditor; +/* + * This Metrics class was auto-generated and can be copied into your project if you are + * not using a build tool like Gradle or Maven for dependency management. + * + * IMPORTANT: You are not allowed to modify this class, except changing the package. + * + * Unallowed modifications include but are not limited to: + * - Remove the option for users to opt-out + * - Change the frequency for data submission + * - Obfuscate the code (every obfucator should allow you to make an exception for specific files) + * - Reformat the code (if you use a linter, add an exception) + * + * Violations will result in a ban of your plugin and account from bStats. + */ +package org.bstats.bukkit; import java.io.BufferedReader; import java.io.ByteArrayOutputStream; @@ -139,7 +153,7 @@ private int getPlayerAmount() { public static class MetricsBase { /** The version of the Metrics class. */ - public static final String METRICS_VERSION = "2.2.1"; + public static final String METRICS_VERSION = "3.0.0"; private static final ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1, task -> new Thread(task, "bStats-Metrics")); @@ -224,6 +238,7 @@ public MetricsBase( this.logResponseStatusText = logResponseStatusText; checkRelocation(); if (enabled) { + // WARNING: Removing the option to opt-out will get your plugin banned from bStats startSubmitting(); } } @@ -360,9 +375,9 @@ private static byte[] compress(final String str) throws IOException { } } - public static class AdvancedBarChart extends CustomChart { + public static class DrilldownPie extends CustomChart { - private final Callable> callable; + private final Callable>> callable; /** * Class constructor. @@ -370,29 +385,33 @@ public static class AdvancedBarChart extends CustomChart { * @param chartId The id of the chart. * @param callable The callable which is used to request the chart data. */ - public AdvancedBarChart(String chartId, Callable> callable) { + public DrilldownPie(String chartId, Callable>> callable) { super(chartId); this.callable = callable; } @Override - protected JsonObjectBuilder.JsonObject getChartData() throws Exception { + public JsonObjectBuilder.JsonObject getChartData() throws Exception { JsonObjectBuilder valuesBuilder = new JsonObjectBuilder(); - Map map = callable.call(); + Map> map = callable.call(); if (map == null || map.isEmpty()) { // Null = skip the chart return null; } - boolean allSkipped = true; - for (Map.Entry entry : map.entrySet()) { - if (entry.getValue().length == 0) { - // Skip this invalid - continue; + boolean reallyAllSkipped = true; + for (Map.Entry> entryValues : map.entrySet()) { + JsonObjectBuilder valueBuilder = new JsonObjectBuilder(); + boolean allSkipped = true; + for (Map.Entry valueEntry : map.get(entryValues.getKey()).entrySet()) { + valueBuilder.appendField(valueEntry.getKey(), valueEntry.getValue()); + allSkipped = false; + } + if (!allSkipped) { + reallyAllSkipped = false; + valuesBuilder.appendField(entryValues.getKey(), valueBuilder.build()); } - allSkipped = false; - valuesBuilder.appendField(entry.getKey(), entry.getValue()); } - if (allSkipped) { + if (reallyAllSkipped) { // Null = skip the chart return null; } @@ -400,7 +419,7 @@ protected JsonObjectBuilder.JsonObject getChartData() throws Exception { } } - public static class SimpleBarChart extends CustomChart { + public static class AdvancedPie extends CustomChart { private final Callable> callable; @@ -410,7 +429,7 @@ public static class SimpleBarChart extends CustomChart { * @param chartId The id of the chart. * @param callable The callable which is used to request the chart data. */ - public SimpleBarChart(String chartId, Callable> callable) { + public AdvancedPie(String chartId, Callable> callable) { super(chartId); this.callable = callable; } @@ -423,8 +442,18 @@ protected JsonObjectBuilder.JsonObject getChartData() throws Exception { // Null = skip the chart return null; } + boolean allSkipped = true; for (Map.Entry entry : map.entrySet()) { - valuesBuilder.appendField(entry.getKey(), new int[] {entry.getValue()}); + if (entry.getValue() == 0) { + // Skip this invalid + continue; + } + allSkipped = false; + valuesBuilder.appendField(entry.getKey(), entry.getValue()); + } + if (allSkipped) { + // Null = skip the chart + return null; } return new JsonObjectBuilder().appendField("values", valuesBuilder.build()).build(); } @@ -470,7 +499,7 @@ protected JsonObjectBuilder.JsonObject getChartData() throws Exception { } } - public static class AdvancedPie extends CustomChart { + public static class SimpleBarChart extends CustomChart { private final Callable> callable; @@ -480,7 +509,7 @@ public static class AdvancedPie extends CustomChart { * @param chartId The id of the chart. * @param callable The callable which is used to request the chart data. */ - public AdvancedPie(String chartId, Callable> callable) { + public SimpleBarChart(String chartId, Callable> callable) { super(chartId); this.callable = callable; } @@ -493,18 +522,8 @@ protected JsonObjectBuilder.JsonObject getChartData() throws Exception { // Null = skip the chart return null; } - boolean allSkipped = true; for (Map.Entry entry : map.entrySet()) { - if (entry.getValue() == 0) { - // Skip this invalid - continue; - } - allSkipped = false; - valuesBuilder.appendField(entry.getKey(), entry.getValue()); - } - if (allSkipped) { - // Null = skip the chart - return null; + valuesBuilder.appendField(entry.getKey(), new int[] {entry.getValue()}); } return new JsonObjectBuilder().appendField("values", valuesBuilder.build()).build(); } @@ -544,9 +563,9 @@ public JsonObjectBuilder.JsonObject getRequestJsonObject( protected abstract JsonObjectBuilder.JsonObject getChartData() throws Exception; } - public static class SingleLineChart extends CustomChart { + public static class SimplePie extends CustomChart { - private final Callable callable; + private final Callable callable; /** * Class constructor. @@ -554,15 +573,15 @@ public static class SingleLineChart extends CustomChart { * @param chartId The id of the chart. * @param callable The callable which is used to request the chart data. */ - public SingleLineChart(String chartId, Callable callable) { + public SimplePie(String chartId, Callable callable) { super(chartId); this.callable = callable; } @Override protected JsonObjectBuilder.JsonObject getChartData() throws Exception { - int value = callable.call(); - if (value == 0) { + String value = callable.call(); + if (value == null || value.isEmpty()) { // Null = skip the chart return null; } @@ -570,9 +589,9 @@ protected JsonObjectBuilder.JsonObject getChartData() throws Exception { } } - public static class SimplePie extends CustomChart { + public static class AdvancedBarChart extends CustomChart { - private final Callable callable; + private final Callable> callable; /** * Class constructor. @@ -580,25 +599,39 @@ public static class SimplePie extends CustomChart { * @param chartId The id of the chart. * @param callable The callable which is used to request the chart data. */ - public SimplePie(String chartId, Callable callable) { + public AdvancedBarChart(String chartId, Callable> callable) { super(chartId); this.callable = callable; } @Override protected JsonObjectBuilder.JsonObject getChartData() throws Exception { - String value = callable.call(); - if (value == null || value.isEmpty()) { + JsonObjectBuilder valuesBuilder = new JsonObjectBuilder(); + Map map = callable.call(); + if (map == null || map.isEmpty()) { // Null = skip the chart return null; } - return new JsonObjectBuilder().appendField("value", value).build(); + boolean allSkipped = true; + for (Map.Entry entry : map.entrySet()) { + if (entry.getValue().length == 0) { + // Skip this invalid + continue; + } + allSkipped = false; + valuesBuilder.appendField(entry.getKey(), entry.getValue()); + } + if (allSkipped) { + // Null = skip the chart + return null; + } + return new JsonObjectBuilder().appendField("values", valuesBuilder.build()).build(); } } - public static class DrilldownPie extends CustomChart { + public static class SingleLineChart extends CustomChart { - private final Callable>> callable; + private final Callable callable; /** * Class constructor. @@ -606,37 +639,19 @@ public static class DrilldownPie extends CustomChart { * @param chartId The id of the chart. * @param callable The callable which is used to request the chart data. */ - public DrilldownPie(String chartId, Callable>> callable) { + public SingleLineChart(String chartId, Callable callable) { super(chartId); this.callable = callable; } @Override - public JsonObjectBuilder.JsonObject getChartData() throws Exception { - JsonObjectBuilder valuesBuilder = new JsonObjectBuilder(); - Map> map = callable.call(); - if (map == null || map.isEmpty()) { - // Null = skip the chart - return null; - } - boolean reallyAllSkipped = true; - for (Map.Entry> entryValues : map.entrySet()) { - JsonObjectBuilder valueBuilder = new JsonObjectBuilder(); - boolean allSkipped = true; - for (Map.Entry valueEntry : map.get(entryValues.getKey()).entrySet()) { - valueBuilder.appendField(valueEntry.getKey(), valueEntry.getValue()); - allSkipped = false; - } - if (!allSkipped) { - reallyAllSkipped = false; - valuesBuilder.appendField(entryValues.getKey(), valueBuilder.build()); - } - } - if (reallyAllSkipped) { + protected JsonObjectBuilder.JsonObject getChartData() throws Exception { + int value = callable.call(); + if (value == 0) { // Null = skip the chart return null; } - return new JsonObjectBuilder().appendField("values", valuesBuilder.build()).build(); + return new JsonObjectBuilder().appendField("value", value).build(); } } diff --git a/src/main/resources/lang/zh_CN.yml b/src/main/resources/lang/zh_CN.yml index bedf1b49..056e6d87 100644 --- a/src/main/resources/lang/zh_CN.yml +++ b/src/main/resources/lang/zh_CN.yml @@ -2,16 +2,16 @@ #A section symbol will be inserted between each character in this section #http://minecraft.gamepedia.com/Formatting_codes #translated by sumdream -#由 sumdream 翻译 +#由 sumdream 和 10935336 翻译 iconname: 2n icondescription: 5 -info: 2 +info: 6 warn: c menutitle: 8 -#info +#信息 setmode: - msg: 设置为 ,点击盔甲架开始调整. + msg: 设置对象更改为 , 点击盔甲架开始调整。 head: 头部 body: 躯体 leftleg: 左腿 @@ -27,73 +27,106 @@ setmode: baseplate: 底座切换 placement: 位置 rotate: 旋转 - target: 目标 copy: 复制 paste: 粘贴 reset: 重设角度 setaxis: - msg: 设置坐标为 . + msg: 设置坐标为 。 x: X y: Y z: Z setslot: - msg: 设定存档 . + msg: 设定存档槽位 。 setadj: - msg: 设置调整模式 . + msg: 设置调整模式 。 coarse: 粗调 fine: 微调 setgravity: - msg: 重力 . - true: 开启 - false: 关闭 + msg: 重力 。 + on: 开启 + off: 关闭 nomode: msg: 请先点击空气选择设定模式! nomodeif: - msg: Click with the Edit Tool away from the ItemFrame to select a mode first! + msg: 请先点击空气选择设定模式! copied: - msg: 盔甲架装备存档在 . + msg: 盔甲架状态已保存于 。 pasted: - msg: 盔甲架装备复制于 . + msg: 已从 粘贴盔甲架状态。 +target: + msg: 目标盔甲架已锁定。 +notarget: + msg: 目标盔甲架已解锁。 +frametarget: + msg: 目标物品展示框已锁定。 +noframetarget: + msg: 目标物品展示框已解锁。 +doubletarget: + msg: 请看向盔甲架或物品展示框,不要两个同时看! +reloaded: + msg: 配置文件已重新加载。 +help: + msg: "1. 手持编辑工具() + + 2. 对着盔甲架“左键或右键”来打开菜单。 + + 3. 选择标记的菜单选项。 + + 4. 使用编辑工具对着盔甲架“左键”以应用那些选项。 + + 5. 右键单击可反方向编辑!" +helptips: + msg: "小提示: + + 1. 当有别的盔甲架挡着你要编辑的盔甲架时,你可以拿着编辑工具按下“切换副手物品”键 (默认为 F) 来标记你想要编辑的盔甲架。 + + 2. 你可以将“命名牌(NameTags)”用于盔甲架 。更重要的是,你可以使用“&样式代码”标签赋予命名牌更多色彩。 -#warn + 3. 你可以在手持编辑工具时使用“潜行(Shift) + 鼠标滚轮”来快速更改要修改的轴而不需要打开菜单。" +helpurl: + msg: "更多信息: https://github.com/RypoFalem/ArmorStandEditor/wiki" + +#警告 cantedit: - msg: 对不起,你无法在这边编辑盔甲架! + msg: 对不起,你无法在这编辑盔甲架! noperm: - msg: 你没有权限这么做! + msg: 你没有权限这样做! noslotnumcom: - msg: 你必须选择一个畜存栏! + msg: 你必须选择一个物品栏! noadjcom: msg: 你必须选择一个调整模式(粗调/微调)! noaxiscom: msg: 你必须选择一个坐标轴! nomodecom: msg: 你必须选择一个部位! +noreloadcom: + msg: 你没有权限运行重载命令! -#menutitle +#菜单标题 mainmenutitle: msg: 盔甲架编辑器 equiptitle: msg: 盔甲架装备 -#icons +#图标 xaxis: msg: X 轴 description: - msg: 在 X 轴调整位置 + msg: 调整 X 轴位置 yaxis: msg: Y 轴 description: - msg: 在 Y 轴调整位置 + msg: 调整 Y 轴位置 zaxis: msg: Z 轴 description: - msg: 在 Z 轴调整位置 + msg: 调整 Z 轴位置 coarseadj: - msg: 粗调 + msg: 粗略调整 description: msg: 调整幅度较大 fineadj: - msg: 微调 + msg: 精细调整 description: msg: 调整幅度较小 head: @@ -129,21 +162,21 @@ showarms: description: msg: 切换是否显示手臂 invisible: - msg: 显隐 - description: - msg: 是否显示盔甲架 + msg: 盔甲架显隐切换 + description: + msg: 显示/隐形盔甲架 size: msg: 大小 description: msg: 调整大小 disableslots: - msg: 禁用slots + msg: 禁用盔甲槽操作 description: - msg: 开启关闭装备锁定 + msg: 开启或关闭装备锁定 gravity: msg: 重力 description: - msg: 开启关闭重力 + msg: 开启或关闭盔甲架重力 baseplate: msg: 底座 description: @@ -156,10 +189,6 @@ rotate: msg: 旋转 description: msg: 旋转盔甲架位置 -target: - msg: 目标 - description: - msg: 马上实现! copy: msg: 复制 description: @@ -171,19 +200,27 @@ paste: copyslot: msg: 设定存档 description: - msg: 选择存档保存盔甲架设定 + msg: 选择保存盔甲架设定的一个存档位 reset: msg: 重设角度 description: msg: 重设各个部件的角度 - -#icons (equipment) +helpgui: + msg: 我需要帮助! + description: + msg: 点击获得帮助! +itemframevisible: + msg: 物品展示框显隐切换 + description: + msg: 显示/隐形物品展示框 + +#图标 (装备) disabled: msg: 关闭 equipslot: - msg: Slot + msg: 槽 description: - msg: 拖动你的 放置到 + msg: 将你的 放置到下面的格子 helm: 头盔 chest: 胸甲 pants: 护膝 @@ -195,4 +232,4 @@ equipslot: pants: 护膝 boots: 靴子 rhand: 右手 - lhand: 左手 \ No newline at end of file + lhand: 左手 diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index 558966e9..3b5e7605 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -1,6 +1,6 @@ name: ArmorStandEditor main: io.github.rypofalem.armorstandeditor.ArmorStandEditorPlugin -version: 1.18.1-33.1 +version: 1.18.2-34 api-version: "1.13" website: https://www.spigotmc.org/resources/94503/ author: Wolfstorm From aaf10f5a80fe97937ac5711856d919de8fb6539f Mon Sep 17 00:00:00 2001 From: Wolfstorm Date: Sun, 6 Mar 2022 11:36:30 +0100 Subject: [PATCH 160/369] [CORE] Fix TODOs in Comments after Version Update. - No Hotfix required. Minor Update. No Functionality Changed. Signed-off-by: Wolfieheart Signed-off-by: Wolfstorm --- .../rypofalem/armorstandeditor/ArmorStandEditorPlugin.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/ArmorStandEditorPlugin.java b/src/main/java/io/github/rypofalem/armorstandeditor/ArmorStandEditorPlugin.java index d1f44381..c002aece 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/ArmorStandEditorPlugin.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/ArmorStandEditorPlugin.java @@ -228,8 +228,7 @@ public void onEnable(){ print("Sneaking required to activate the UI: " + requireSneaking); - //Send Messages to Action Bar - NEW SINCE 1.16 at least (?) - //TODO: Fix above comment with correct version - FUTURE CHORE! + //Send Messages to Action Bar sendToActionBar = getConfig().getBoolean("sendMessagesToActionBar", true); print("Messages being sent to action bar?: " + sendToActionBar); From 75702ec9b383cfc3716c8f0bd5cb9f909bfeee55 Mon Sep 17 00:00:00 2001 From: Wolfstorm Date: Sun, 6 Mar 2022 13:43:12 +0100 Subject: [PATCH 161/369] [CORE] Hotfix: ArmorStandEditor v1.18.2-34.1 Signed-off-by: Wolfieheart Signed-off-by: Wolfstorm --- pom.xml | 2 +- .../rypofalem/armorstandeditor/ArmorStandEditorPlugin.java | 3 +-- .../github/rypofalem/armorstandeditor}/Metrics.java | 2 +- src/main/resources/plugin.yml | 2 +- 4 files changed, 4 insertions(+), 5 deletions(-) rename src/main/java/{org/bstats/bukkit => io/github/rypofalem/armorstandeditor}/Metrics.java (99%) diff --git a/pom.xml b/pom.xml index 5c928ec0..8be44d58 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ io.github.rypofalem.armorstandeditor armorstandeditor jar - 1.18.2-34 + 1.18.2-34.1 armorstandeditor http://maven.apache.org diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/ArmorStandEditorPlugin.java b/src/main/java/io/github/rypofalem/armorstandeditor/ArmorStandEditorPlugin.java index c002aece..9e0353f5 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/ArmorStandEditorPlugin.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/ArmorStandEditorPlugin.java @@ -23,8 +23,7 @@ import de.jeff_media.updatechecker.*; -import org.bstats.bukkit.Metrics; -import org.bstats.bukkit.Metrics.*; +import io.github.rypofalem.armorstandeditor.Metrics.*; import org.bukkit.Bukkit; import org.bukkit.ChatColor; diff --git a/src/main/java/org/bstats/bukkit/Metrics.java b/src/main/java/io/github/rypofalem/armorstandeditor/Metrics.java similarity index 99% rename from src/main/java/org/bstats/bukkit/Metrics.java rename to src/main/java/io/github/rypofalem/armorstandeditor/Metrics.java index 0b2c7105..6d7848c6 100644 --- a/src/main/java/org/bstats/bukkit/Metrics.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/Metrics.java @@ -12,7 +12,7 @@ * * Violations will result in a ban of your plugin and account from bStats. */ -package org.bstats.bukkit; +package io.github.rypofalem.armorstandeditor; import java.io.BufferedReader; import java.io.ByteArrayOutputStream; diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index 3b5e7605..c014c9ec 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -1,6 +1,6 @@ name: ArmorStandEditor main: io.github.rypofalem.armorstandeditor.ArmorStandEditorPlugin -version: 1.18.2-34 +version: 1.18.2-34.1 api-version: "1.13" website: https://www.spigotmc.org/resources/94503/ author: Wolfstorm From 05fc35ee401aaf739d839d90cfccbc947df0c4eb Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 6 Mar 2022 13:45:00 +0100 Subject: [PATCH 162/369] Update dependency com.palmergames.bukkit.towny:towny to v0.98.0.3 (#39) Co-authored-by: Renovate Bot --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 8be44d58..845f13fd 100644 --- a/pom.xml +++ b/pom.xml @@ -53,7 +53,7 @@ com.palmergames.bukkit.towny towny - 0.98.0.0 + 0.98.0.3 provided From c5bb598f285ca1676d6625e6df81bf8dd1e49522 Mon Sep 17 00:00:00 2001 From: "Larry (Wolfieheart)" Date: Sat, 14 May 2022 21:44:42 +0200 Subject: [PATCH 163/369] [CORE] ArmorStandEditor 1.18.2-34.2 (#64) * [CORE] Hotfix: Invisibility COnfig Issues and Debug being enabled by default Signed-off-by: Wolfieheart Signed-off-by: Wolfstorm * [CORE] Version Bump to 1.18.2-34.2 Signed-off-by: Wolfieheart Signed-off-by: Wolfstorm * [CORE] Version Bump to 1.18.2-34.2 Signed-off-by: Wolfieheart Signed-off-by: Wolfstorm * [CORE] Code Review Remarks - Sonar! Signed-off-by: Wolfieheart Signed-off-by: Wolfstorm --- README.md | 3 ++- pom.xml | 2 +- .../rypofalem/armorstandeditor/ArmorStandEditorPlugin.java | 2 +- src/main/resources/config.yml | 2 +- src/main/resources/plugin.yml | 2 +- 5 files changed, 6 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index eb6f637b..9fa74c1d 100644 --- a/README.md +++ b/README.md @@ -5,13 +5,13 @@ [![Build Status](https://github.com/Wolfst0rm/ArmorStandEditor/actions/workflows/maven-publish.yml/badge.svg?style=flat)](https://github.com/Wolfst0rm/ArmorStandEditor/actions/workflows/maven-publish.yml) [![Maintainability Rating](https://sonarcloud.io/api/project_badges/measure?project=wolfieheart_ArmorStandEditor&metric=sqale_rating&style=flat)](https://sonarcloud.io/summary/new_code?id=wolfieheart_ArmorStandEditor) [![CodeFactor](https://www.codefactor.io/repository/github/wolfieheart/armorstandeditor/badge?style=flat)](https://www.codefactor.io/repository/github/wolfieheart/armorstandeditor) +[![Official Discord](https://img.shields.io/discord/955408323522494464?label=Discord%20for%20ASE)](https://discord.gg/aUf4AWAKmr) [![Scanned with Sonarcloud](https://img.shields.io/badge/Scanned%20With-Sonarcloud-orange?style=flat&logo=sonarcloud)](https://sonarcloud.io/summary/new_code?id=Wolfst0rm_ArmorStandEditor) [![wakatime](https://wakatime.com/badge/github/Wolfst0rm/ArmorStandEditor.svg?style=flat)](https://wakatime.com/badge/github/Wolfst0rm/ArmorStandEditor) [![Compatibility/GetBukkit](https://img.shields.io/badge/Compatability-Paper%2C%20Spigot%2C%20Bukkit%20etc.%20(GetBukkit.org)-yellowgreen?style=flat)](https://getbukkit.org/) [![License](https://img.shields.io/badge/Licence-GNU%20Public%20V2%20-red?style=flat)](https://github.com/Wolfst0rm/ArmorStandEditor/LICENSE.md) [![Roadmap](https://img.shields.io/badge/Roadmap-ArmorStandEditor--Issues%2311-orange?style=flat)](https://github.com/Wolfst0rm/ArmorStandEditor-Issues/issues/11) - ArmorStandEditor is a plugin for [Spigot and related forks](https://www.spigotmc.org/resources/armorstandeditor-reborn.94503/) to allow players in survival to easily edit armor stand pose and attributes. @@ -66,6 +66,7 @@ subject to change in the future. The minimum enforced API Version is 1.13. * Glowing ArmorStand to signify Targeting and Slot Disables through the use of Scoreboards. You can also follow our [Feature Roadmap](https://github.com/Wolfst0rm/ArmorStandEditor-Issues/issues/11) to see what we have planned (Updated as required). +You can also find us on our Discord at: [https://discord.com/invite/aUf4AWAKmr](https://discord.com/invite/aUf4AWAKmr) ## Support Support for ArmorStandEditor is provided: diff --git a/pom.xml b/pom.xml index 845f13fd..c4dc0b6c 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ io.github.rypofalem.armorstandeditor armorstandeditor jar - 1.18.2-34.1 + 1.18.2-34.2 armorstandeditor http://maven.apache.org diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/ArmorStandEditorPlugin.java b/src/main/java/io/github/rypofalem/armorstandeditor/ArmorStandEditorPlugin.java index 9e0353f5..49ac467c 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/ArmorStandEditorPlugin.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/ArmorStandEditorPlugin.java @@ -162,7 +162,7 @@ public void onEnable(){ getLogger().info(SEPARATOR_FIELD); //Is Debug Enabled - debug = getConfig().getBoolean("debug", true); + debug = getConfig().getBoolean("debug", false); print("Debug Mode Enabled? Well if you can read this its true"); if(debug){ diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml index 9b3d4987..002796d6 100644 --- a/src/main/resources/config.yml +++ b/src/main/resources/config.yml @@ -11,7 +11,7 @@ tool: FLINT requireSneaking: false #Allow the option to toggle invisibility for ItemFrames and ArmorStand -ivisibleItemFrames: true +invisibleItemFrames: true armorStandVisibility: true #(Optional) data that the plugin looks for to identify the edit tool, such as the damage value of a sword or the pattern of sandstone. diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index c014c9ec..ca24de30 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -1,6 +1,6 @@ name: ArmorStandEditor main: io.github.rypofalem.armorstandeditor.ArmorStandEditorPlugin -version: 1.18.2-34.1 +version: 1.18.2-34.2 api-version: "1.13" website: https://www.spigotmc.org/resources/94503/ author: Wolfstorm From e8d276c8776e2f0e89bf72ceba6e93c46accfee9 Mon Sep 17 00:00:00 2001 From: "whitesource-bolt-for-github[bot]" <42819689+whitesource-bolt-for-github[bot]@users.noreply.github.com> Date: Tue, 17 May 2022 09:53:12 +0200 Subject: [PATCH 164/369] [CI] Add .whitesource configuration file (#65) Co-authored-by: whitesource-bolt-for-github[bot] <42819689+whitesource-bolt-for-github[bot]@users.noreply.github.com> --- .whitesource | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 .whitesource diff --git a/.whitesource b/.whitesource new file mode 100644 index 00000000..0d7ea094 --- /dev/null +++ b/.whitesource @@ -0,0 +1,13 @@ +{ + "scanSettings": { + "baseBranches": [] + }, + "checkRunSettings": { + "vulnerableCheckRunConclusionLevel": "failure", + "displayMode": "diff" + }, + "issueSettings": { + "minSeverityLevel": "LOW", + "issueType": "DEPENDENCY" + } +} \ No newline at end of file From ad8969bb84400ce7678aba1d38ffa279dc117602 Mon Sep 17 00:00:00 2001 From: Wolfstorm Date: Sun, 22 May 2022 10:49:30 +0200 Subject: [PATCH 165/369] [CI] Introduce Stale System Signed-off-by: Wolfieheart Signed-off-by: Wolfstorm --- .github/stale.yml | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 .github/stale.yml diff --git a/.github/stale.yml b/.github/stale.yml new file mode 100644 index 00000000..f50acf83 --- /dev/null +++ b/.github/stale.yml @@ -0,0 +1,21 @@ +daysUntilStale: 60 +daysUntilClose: 7 +exemptLabels: + - "Build: Devel" + - "bug" + - "NF-0: Accepted" + - "NF-2: Implementation - In Progress" + - "NF-4: Rebase Required" + - "BUG-1: Reproduced" + - "Work in Progress" + - "Blocked" + - "question" +staleLabel: "Stale" +markComment: > + This issue has been automatically marked as stale because it has not had + recent activity. It will be closed if no further activity occurs. Thank you + for your contributions. +closeComment: > + This issue has been automatically closed because it has not had activity in + a long time. If the issue still applies to the most recent supported + version, please open a new issue referencing this original issue. \ No newline at end of file From ac34c26d15aa2f824e609e7eaa9f70cac0982f68 Mon Sep 17 00:00:00 2001 From: Wolfstorm Date: Sun, 22 May 2022 10:54:07 +0200 Subject: [PATCH 166/369] [CI] Move Issue Templates over to this Repository Signed-off-by: Wolfieheart Signed-off-by: Wolfstorm --- .github/ISSUE_TEMPLATE/behaviour-bug.yml | 55 ++++++++++++++++++++++ .github/ISSUE_TEMPLATE/feature-request.yml | 45 ++++++++++++++++++ 2 files changed, 100 insertions(+) create mode 100644 .github/ISSUE_TEMPLATE/behaviour-bug.yml create mode 100644 .github/ISSUE_TEMPLATE/feature-request.yml diff --git a/.github/ISSUE_TEMPLATE/behaviour-bug.yml b/.github/ISSUE_TEMPLATE/behaviour-bug.yml new file mode 100644 index 00000000..37bd340d --- /dev/null +++ b/.github/ISSUE_TEMPLATE/behaviour-bug.yml @@ -0,0 +1,55 @@ +name: Behavior Bug or other issue +description: Report issues with the plugin or other behavior related issues. +labels: ["bug", "BUG-0: Pending Investigation"] +title: "[Bug]: " +body: + - type: markdown + attributes: + value: | + Before reporting a crash here, please make sure you are on the latest version of the Plugin. + Forks of the plugin receive no support here. If you are using a fork, please make sure that this issue also happens when using the latest release. + + - type: textarea + attributes: + label: Expected behavior + description: What you expected to see. + validations: + required: true + - type: textarea + attributes: + label: Observed/Actual behavior + description: What you actually saw. + validations: + required: true + - type: textarea + attributes: + label: Steps/models to reproduce + description: This may include a build schematic, a video, or detailed instructions to help reconstruct the issue. + validations: + required: true + - type: textarea + attributes: + label: Plugin list + description: All plugins running on the server. + validations: + required: true + - type: textarea + attributes: + label: Plugin Version + description: What version of the Plugin are you using for this? As of 1.18, you can get this via /ase version. + validations: + required: true + - type: textarea + attributes: + label: Server Version + description: What Server Backend are you using? Put your output of /version ingame here + validations: + required: true + - type: textarea + attributes: + label: Other + description: | + Please include other helpful information below. + The more information we receive, the quicker and more effective we can be at finding the solution to the issue. + validations: + required: false \ No newline at end of file diff --git a/.github/ISSUE_TEMPLATE/feature-request.yml b/.github/ISSUE_TEMPLATE/feature-request.yml new file mode 100644 index 00000000..6cca2008 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/feature-request.yml @@ -0,0 +1,45 @@ +name: Feature Request +description: Suggest an idea for ArmorStandEditor +labels: ["NF-0: Pending Investigation"] +body: + - type: markdown + attributes: + value: | + Thank you for filling out a feature request for ArmorStandEditor! Please be as detailed as possible so that we may consider and review the request easier. + We ask that you search all the issues to avoid a duplicate feature request. If one exists, please reply if you have anything to add. + + - type: textarea + attributes: + label: Is your feature request related to a problem? + description: Please give some context for this request. Why do you want it added? + validations: + required: true + - type: textarea + attributes: + label: Describe the solution you'd like. + description: A clear and concise description of what you want. + validations: + required: true + - type: textarea + attributes: + label: Describe alternatives you've considered. + description: List any alternatives you might have tried to get the feature you want. + validations: + required: true + + - type: checkboxes + attributes: + label: Agreements + description: Please agree to the following. + options: + - label: I have searched for and ensured there isn't already an open issue regarding this. + required: true + - label: I have ensured the feature I'm requesting isn't already in the latest supported Paper build. + required: true + + - type: textarea + attributes: + label: Other + description: Add any other context or screenshots about the feature request below. + validations: + required: false \ No newline at end of file From 51d476cf894668ce064cd486a64fa431177d2796 Mon Sep 17 00:00:00 2001 From: "Larry (Wolfieheart)" Date: Wed, 22 Jun 2022 21:49:58 +0200 Subject: [PATCH 167/369] [CORE] ArmorStandEditor 1.19-35 (#40) * [CORE] Version Bump to 1.18.2-35 Signed-off-by: Wolfieheart Signed-off-by: Github * [MVN] Introduce WorldGuard, Plotsquared, GriefPrevention Addons Signed-off-by: Wolfieheart Signed-off-by: Github * [CORE] Introduce WorldGuard Protection Signed-off-by: Wolfieheart Signed-off-by: Github * [CORE] PlotSquared and Towny Implementations Signed-off-by: Wolfieheart Signed-off-by: Github * [CORE] PlotSquared Added to SoftDepend List Signed-off-by: Wolfieheart Signed-off-by: Github * [CORE] Fix Towny Protection not returning correctly and implement protection checks in Edit Class Signed-off-by: Wolfieheart Signed-off-by: Wolfstorm * [CORE] Comments added to explain the changes to CanEdit Function Signed-off-by: Wolfieheart Signed-off-by: Wolfstorm * [CORE] Add GriefPreventionProtection - Closes Wolfieheart/ArmorStandEditor-Issues#24 in FULL Signed-off-by: Wolfieheart Signed-off-by: Wolfstorm * [CORE] Code Review Remarks from Sonar. Signed-off-by: Wolfieheart Signed-off-by: Wolfstorm * [CORE] Code Review Remarks from Sonar. Signed-off-by: Wolfieheart Signed-off-by: Wolfstorm * [CORE] Bump PlotSquared to 6.6.0 Signed-off-by: Wolfieheart Signed-off-by: Github * [CORE] Bump WorldGuard to 7.0.7 and Towny to 0.98.0.3 Signed-off-by: Wolfieheart Signed-off-by: Github * Create ru_RU.yml * Update ru_RU.yml * Update ru_RU.yml * [CORE] Update CanEdit with Protections Signed-off-by: Wolfieheart Signed-off-by: Wolfstorm * [CORE] Fix Metrics - English not a language, which was bizzare. Signed-off-by: Wolfieheart Signed-off-by: Wolfstorm * [CORE] Fix Metrics - English not a language, which was bizzare. Signed-off-by: Wolfieheart Signed-off-by: Wolfstorm * [CORE] Revert "Update CanEdit with Protections" Signed-off-by: Wolfieheart Signed-off-by: Wolfstorm * Update dependency org.apache.maven.plugins:maven-compiler-plugin to v3.10.1 (#42) Co-authored-by: Renovate Bot * [CORE] Merge ItemFrame and ArmorStand canEdit Checks to 1 consolodated if Statement Signed-off-by: Wolfieheart Signed-off-by: Wolfstorm * [CI] Bump Towny to v0.98.1.0 (#45) Co-authored-by: Renovate Bot * [CORE] Reimplement Protection Fix and Split ItemFrame and ArmorStand CanEdit. Potential Fix for: Wolfieheart/ArmorStandEditor-Issues#28 Signed-off-by: Wolfieheart Signed-off-by: Github * [CI] Update actions/cache action to v3 (#48) Co-authored-by: Renovate Bot * [CI] Update dependency com.palmergames.bukkit.towny:towny to v0.98.1.2 (#47) Co-authored-by: Renovate Bot Co-authored-by: Larry (Wolfieheart) * [CORE] Fix for Invisible ArmorStands being unable to be moved. Fix Wolfieheart/ArmorStandEditor-Issues#28 Signed-off-by: Wolfieheart Signed-off-by: Wolfstorm * [CI] Update Towny from 0.98.1.2 -> 0.98.1.3 Signed-off-by: Wolfieheart Signed-off-by: Github * [CI] Update maven-shade-plugin to v3.3.0 (#52) Co-authored-by: Renovate Bot * [CI] Bump towny to v0.98.1.4 (#56) Co-authored-by: Renovate Bot Co-authored-by: Larry (Wolfieheart) * [CI] Dependancy Updates: Towny, Plotsquared etc. Signed-off-by: Wolfieheart Signed-off-by: Github * [CORE] Update Protections to have Permission to IgnoreProtection + Implement asedit.* Ignore Protection Perms are defauled to false, ASEdit.* is ONLY FOR OP USE! Signed-off-by: Wolfieheart Signed-off-by: Github * [ci-skip] Fix Spacing Issues in plugin.yml Signed-off-by: Wolfieheart Signed-off-by: Github * [CORE] Add List of Developers and Small Improvement to Calculations in Util - Thanks Havens-Edge-MC / Gyztor! Signed-off-by: Wolfieheart Signed-off-by: Github Signed-off-by: Wolfieheart * [CORE] Correct Spelling in Util - FULLCIRCLE to fullCircle - #JustIDEComplaints Signed-off-by: Wolfieheart Signed-off-by: Github Signed-off-by: Wolfieheart * [CI-SKIP] Add Havens-Edge-MC to authors list - Fantastic Repo with good ideas for improvements. Will keep an eye on ;) Signed-off-by: Wolfieheart Signed-off-by: Github Signed-off-by: Wolfieheart * [CORE] Revert and continue rework of WorldGuard Protection to introduce custom flag. Signed-off-by: Wolfieheart Signed-off-by: Github Signed-off-by: Wolfieheart * [CORE] Revert WorldGuard Custom Flag Implementation to 1.18.2-35pre2 Base. Fixes and Tested for Wolfieheart/ArmorStandEditor-Issues#32 # This reverts commit d7ebdb6fd3b37f2feded68fe6d85f2799eee36c5. * [CI-SKIP] Add Placeholder TODO for Metrics RE: Invisibilty Signed-off-by: Wolfieheart Signed-off-by: Laurence Somers * [CORE] Optimize Imports for Language Signed-off-by: Wolfieheart * [CORE] Fix apparent typo for InvisibleItemFrames in Config and Add Metrics to check Config Usage Signed-off-by: Wolfieheart * [CORE] Protections & Debug Logging - Introduce One of the Many Skyblock Plugins to the Protection List. - Introduce more Debug Logging: Need to think on what and where. - Optimize Protection Import - Reorder Finals for SpigotResourceId and PluginID for Bstats and Updater etc. etc. Signed-off-by: Wolfieheart Signed-off-by: Wolfstorm * [CORE] Fix the Build - Could not find NMSVersion Signed-off-by: Wolfieheart Signed-off-by: Wolfstorm * [CORE] Version Bump to 1.18.2-35 Signed-off-by: Wolfieheart Signed-off-by: Github * [CORE] Re-commit permissions to ignore Protections Signed-off-by: Wolfieheart * [CORE] Better GriefPrevention Implementation for Wolfieheart/ArmorStandEditor-Issues#36 Has to be tested in full later on. Signed-off-by: Wolfieheart * [CORE] Code Review Remarks from Sonar + Add Event that we cant getEnabledClaimsForWorld in GriefPrevention Has to be tested in full later on. Signed-off-by: Wolfieheart * [CORE] Code Review Remarks from Sonar + Add Event that we cant getEnabledClaimsForWorld in GriefPrevention Has to be tested in full later on. Signed-off-by: Wolfieheart * [CORE] Remove TODO in ArmorStandEditorPlugin - Made it a ? for 1.19 Signed-off-by: Wolfieheart * [CORE] CustomModelData Support on EditTool Functionality ONLY! To be Tested Throughly later. Signed-off-by: Wolfieheart * [CORE] CR Remarks + Add TODO to add to Lang File for Failure. Signed-off-by: Wolfieheart * [CI-SKIP] Fix comment RE: EditTool and commandGive Signed-off-by: Wolfieheart * [CORE] Add GiveCommand Language Message on Success. Still to be added to Lang Files Signed-off-by: Wolfieheart * [CORE] Fix Crash in relation SkyblockProtection - Not Initialized in PlayerEditorManager Signed-off-by: Wolfieheart * [CORE] Fix Bug Per Sonar Remarks Signed-off-by: Wolfieheart Signed-off-by: Wolfstorm * [CI] Update actions/upload-artifact action to v3.1.0 (#71) Co-authored-by: Renovate Bot * [CI] Introduce Stale System Signed-off-by: Wolfieheart Signed-off-by: Wolfstorm * [CI] Move Issue Templates over to this Repository Signed-off-by: Wolfieheart Signed-off-by: Wolfstorm * Update dependency com.palmergames.bukkit.towny:towny to v0.98.1.13 (#75) [CI] Update dependency com.palmergames.bukkit.towny:towny to v0.98.1.13 (#75) * [CI] Move Dependabot over to a Weekly Schedule Signed-off-by: Wolfieheart Signed-off-by: Wolfstorm * [CORE] Update Language to include messages RE: Give Command. Signed-off-by: Wolfieheart Signed-off-by: Wolfstorm * [CORE] Update All Language Files to Match. - Run NL Translations through Miknes123 Signed-off-by: Wolfieheart Signed-off-by: Wolfstorm * [CORE] Add Debug Output for Commands. Signed-off-by: Wolfieheart Signed-off-by: Wolfstorm * [CORE] Add Alternate Chat Color Support and Better Checks in Skyblock Protection for Bypass Mode Signed-off-by: Wolfieheart * [CORE] FIX Check for CustomModelData Signed-off-by: Wolfieheart Signed-off-by: Wolfstorm * [CORE] Prep Move to 1.19.x Signed-off-by: Wolfieheart Signed-off-by: Wolfstorm * [CORE] Prep Move to 1.19.x - Fix after fact. Signed-off-by: Wolfieheart Signed-off-by: Wolfstorm * [CORE] Prep Move to 1.19.x part 3 Signed-off-by: Wolfieheart Signed-off-by: Wolfstorm * [CORE] Fix Tab Spaces to be 4 Standard for all files. Update License to GNU v3, Add Java 11 Build. Signed-off-by: Wolfieheart Signed-off-by: Wolfstorm * [CORE] Prep 1.19.x Part 4 - Wolfie keeps missing things Update :P Signed-off-by: Wolfieheart Signed-off-by: Wolfstorm * [CORE] Fix Java Failure, Drop 11 Build and only support 17 and 18 for now. Signed-off-by: Wolfieheart Signed-off-by: Wolfstorm * [CI] Introduction of CONTRIBUTING.MD and pull_request_templates Signed-off-by: Wolfieheart Signed-off-by: Wolfstorm * Delete LICENSE.md * Create LICENSE.md * [CI] Update CONTRIBUTING.MD and PR Template to follow the standard we are now using for Major Versions Signed-off-by: Wolfieheart * [CI] Fix up CONTRIBUTING.MD Signed-off-by: Wolfieheart * [CI] Fix up Dependencies: - Bump PlotSquared-Bukkit and PlotSquared-Core to 6.7.0 - Bump Towny to 0.98.2.2 Signed-off-by: Wolfieheart * [CORE] Add in 1.19 Version Notes and info RE Contributions Signed-off-by: Wolfieheart * [CORE] Version Bump - Spigot 1.19 Support as base API Signed-off-by: Wolfieheart Signed-off-by: Wolfstorm * [CORE] Fix to remove the Additional Message if Give Fails Signed-off-by: Wolfieheart Signed-off-by: Wolfstorm * [CORE] POM Builds still 1.19.x-35 instead of 1.19-35 Signed-off-by: Wolfieheart Signed-off-by: Wolfstorm * [CORE] Bump PS to 6.9.0 Signed-off-by: Wolfieheart Signed-off-by: xMakeItRain94@gmail.com * Update dependency com.palmergames.bukkit.towny:towny to v0.98.2.4 (#79) * [CI] Introduce Stale System Signed-off-by: Wolfieheart Signed-off-by: Wolfstorm * [CI] Move Issue Templates over to this Repository Signed-off-by: Wolfieheart Signed-off-by: Wolfstorm * Update dependency com.palmergames.bukkit.towny:towny to v0.98.2.4 Co-authored-by: Wolfstorm Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * [CORE] Introduce GriefDefender Protection - Fixes #81 Signed-off-by: xMakeItRain94@gmail.com * [CORE] Add IgnoreProtections to Plugin.yml -> Basically I forgot to do this Signed-off-by: Wolfieheart * [CI SKIP] Add in Info RE: GriefPrevention no longer being active Signed-off-by: Wolfieheart * [CORE] Fix issue with UpdateChecker post Relocation Signed-off-by: Wolfieheart * [CORE] Fix issue with UpdateChecker post Relocation Signed-off-by: Wolfieheart * [CORE] Fix Debug Output being active by default. Signed-off-by: Wolfieheart * [CI] Update Towny to 0.98.2.6 - Closes #82 Signed-off-by: Wolfieheart * [CI-SKIP] Fix Description for GriefDefender Ignore Protection Perms. #CopyPasteError Signed-off-by: Wolfieheart Co-authored-by: KPidS Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Renovate Bot Co-authored-by: Laurence Somers --- .github/CONTRIBUTING.MD | 49 + .github/dependabot.yml | 4 +- .github/pull_request_template.md | 32 + .github/workflows/maven-publish.yml | 15 +- .whitesource | 13 - LICENSE.md | 903 +++++++++----- README.md | 16 +- pom.xml | 167 ++- .../ArmorStandEditorPlugin.java | 934 ++++++++------- .../rypofalem/armorstandeditor/CommandEx.java | 390 +++--- .../armorstandeditor/PlayerEditor.java | 1048 ++++++++--------- .../armorstandeditor/PlayerEditorManager.java | 807 ++++++------- .../rypofalem/armorstandeditor/Util.java | 87 +- .../armorstandeditor/language/Language.java | 8 +- .../armorstandeditor/menu/EquipmentMenu.java | 162 +-- .../rypofalem/armorstandeditor/menu/Menu.java | 388 +++--- .../modes/AdjustmentMode.java | 22 +- .../modes/ArmorStandData.java | 48 +- .../armorstandeditor/modes/Axis.java | 22 +- .../armorstandeditor/modes/CopySlots.java | 42 +- .../armorstandeditor/modes/EditMode.java | 26 +- .../protections/GriefDefenderProtection.java | 52 + .../GriefPreventionProtection.java | 49 + .../protections/PlotSquaredProtection.java | 43 + .../protections/SkyblockProtection.java | 36 + .../protections/TownyProtection.java | 35 + .../protections/WorldGuardProtection.java | 56 + src/main/resources/config.yml | 57 +- src/main/resources/lang/de_DE.yml | 4 + src/main/resources/lang/en_US.yml | 4 + src/main/resources/lang/es_ES.yml | 4 + src/main/resources/lang/fr_FR.yml | 5 + src/main/resources/lang/ja_JP.yml | 5 + src/main/resources/lang/nl_NL.yml | 8 +- src/main/resources/lang/pl_PL.yml | 24 +- src/main/resources/lang/ro_RO.yml | 4 + src/main/resources/lang/ru_RU.yml | 237 ++++ src/main/resources/lang/uk_UA.yml | 7 +- src/main/resources/lang/zh_CN.yml | 4 + src/main/resources/plugin.yml | 81 +- 40 files changed, 3557 insertions(+), 2341 deletions(-) create mode 100644 .github/CONTRIBUTING.MD create mode 100644 .github/pull_request_template.md delete mode 100644 .whitesource create mode 100644 src/main/java/io/github/rypofalem/armorstandeditor/protections/GriefDefenderProtection.java create mode 100644 src/main/java/io/github/rypofalem/armorstandeditor/protections/GriefPreventionProtection.java create mode 100644 src/main/java/io/github/rypofalem/armorstandeditor/protections/PlotSquaredProtection.java create mode 100644 src/main/java/io/github/rypofalem/armorstandeditor/protections/SkyblockProtection.java create mode 100644 src/main/java/io/github/rypofalem/armorstandeditor/protections/TownyProtection.java create mode 100644 src/main/java/io/github/rypofalem/armorstandeditor/protections/WorldGuardProtection.java create mode 100644 src/main/resources/lang/ru_RU.yml diff --git a/.github/CONTRIBUTING.MD b/.github/CONTRIBUTING.MD new file mode 100644 index 00000000..6bd4afd0 --- /dev/null +++ b/.github/CONTRIBUTING.MD @@ -0,0 +1,49 @@ +## Contributing to ArmorStandEditor + +We are happy that you are willing to contribute. Usually, we are very lenient with all PRs, but there are still some guidelines you can follow to make the approval process go smoother. + +- Do you run a server and have experience in Development? Take a look at our ["Help Wanted"](https://github.com/Wolfieheart/ArmorStandEditor/labels/help%20wanted) and ["BUG-0: Pending Investigation"](https://github.com/Wolfieheart/ArmorStandEditor/labels/BUG-0%3A%20Pending%20Investigation) Issues, where you can find issues that need extra testing and investigation. +- Do you speak multiple languages? If so, we always welcome contributions for our Language Files/Translations + +## Contributing Code? +Code Contributions are always welcomed and are made via GitHub's Pull Request System. Make a Personal Fork of the ArmorStandEditor repository (this) and open it in your IDE of Choice. +You can ask for any information/help on your idea/contribution to the [ASE Discord](https://discord.com/invite/aUf4AWAKmr) in the #development channel. + +- Please make sure to read our [License](https://github.com/Wolfieheart/ArmorStandEditor/blob/master/LICENSE.md) before contributing. If you do not agree with the terms and conditions of our license, please do not contribute any code. +- By making a pull request, you represent that you have the right to waive copyright and related rights to your contribution, and agree that all copyright and related rights in your contributions are waived, and you acknowledge that we have the copyright to use and modify your contribution under our [License](https://github.com/Wolfieheart/ArmorStandEditor/blob/master/LICENSE.md) for perpetuity. + +## Making Any Changes +- Create a personal fork (not an org fork) of the ArmorStandEditor repository (this). + - Name your branch something relevant (i.e: /dev/\/\) + - Work off the Development Branch unless already Merged into Main - This will therefore allow Developments to be merged together to 1 big branch + - To create a branch in Git; + - `git branch relevantBranchName` + - Then checkout the new branch with `git checkout relevantBranchName` + - Check for unnecessary whitespace with `git diff --check` before committing. + - Please follow the below for Commits: + - `[CORE]` annotation for New Features, Bug Fixes, Performance Improvements etc. + - `[CI]` annotation for changes related to Continuous Integration + - `[DOC]` annotation for Documenting - Either code or fixing the wiki + - `[LANG]` annotation for new languages/updated translations + - `[MISC]` annotation for anything that does not fit the above requirements + +## Code requirements +- You must use Tabs (Size 4 Spaces). +- Keep your environment in Java 17. GitHub handles building all of this into Java 17 and 18, but keep in mind that, while you will be able to use modern language features that way (like patterns), some standard library methods added after jdk 11 (the minimum supported version: 55.0 for certain plugins) will not work and cause "cannot find symbol" errors when building (like String.isBlank). +- Avoid Wildcard Imports (Preferred, but is allowed. Let me know if this can't be avoided on Discord.) +- Don't run IDE Formatters over entire class files, unless it's a new class-file you're implementing + - This is done to avoid us changing the lines everytime, each IDE is different, so we don't have a constant here and there. + - This also keeps file compares on GitHub simple. +- Reflection should be a last resort. +- Do not use NMS or CraftBukkit Code. Bukkit/Spigot API calls only. + + +## Contributing translations +Translations of ArmorStandEditor's Base Language File [English (US)](https://github.com/Wolfieheart/ArmorStandEditor/blob/master/src/main/resources/lang/en_US.yml) are welcomed and can be done following the Code Guidelines outlined above. + +- Do not work on the en_US.yml base file, this gets overwritten when the plugin gets enabled. Please create a new language file +- Language files are stored in `resources/lang/.yml` + - Usually Name_Here points to Language Code and Land Code (ex: nl_BE.yml). + - Examples can be found [here](https://www.fincher.org/Utilities/CountryLanguageList.shtml). +- Change the formatting codes at the start of a file as desired. +- Please add your language/translation on the Discord, so we know that you added it. We will handle the rest by working off your branch such as adding it to the Metrics tool and adding it to the update routine. diff --git a/.github/dependabot.yml b/.github/dependabot.yml index 2efe7116..2c4ac4c7 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -9,10 +9,10 @@ updates: - package-ecosystem: "github-actions" directory: "/" schedule: - interval: "daily" + interval: "weekly" # Maintain dependencies for maven - package-ecosystem: "maven" directory: "/" schedule: - interval: "daily" + interval: "weekly" diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md new file mode 100644 index 00000000..dbfa411d --- /dev/null +++ b/.github/pull_request_template.md @@ -0,0 +1,32 @@ + +#### Description: + + +---- +### [CORE] Changes +*Changes to the core of the plugin - Performance Fixes, Bug Fixes, New Features, New Permission Nodes, New Config Options etc.* + + + + +---- +### [CI] Changes +*Changes relating to the Continuous Integration of other Plugin APIs, Github Workflows, Issue Templates etc.* + + +---- +### [DOC] Changes +*Changes relating to plugin Documentation - See the Wiki for more info* + + +---- +### [MISC] Changes +*Changes that does not fit in the above list* + + + +____ +- [ ] I have tested this pull request for defects on a server. + + +By making this pull request, I represent that I have the right to waive copyright and related rights to my contribution, and agree that all copyright and related rights in my contributions are waived, and I acknowledge that the ArmorStandEditor Project Owners have the copyright to use and modify my contribution under the ArmorStandEditor [License](https://github.com/Wolfieheart/ArmorStandEditor/blob/master/LICENSE.md) for perpetuity. \ No newline at end of file diff --git a/.github/workflows/maven-publish.yml b/.github/workflows/maven-publish.yml index 7b886859..736780d7 100644 --- a/.github/workflows/maven-publish.yml +++ b/.github/workflows/maven-publish.yml @@ -8,6 +8,9 @@ jobs: compile: if: "!contains(github.event.head_commit.message, 'ci-skip') || !contains(github.event.head_commit.message, 'CI-SKIP') || !contains(github.event.head_commit.message, 'CI SKIP') || !contains(github.event.head_commit.message, 'ci skip') " runs-on: ubuntu-latest + strategy: + matrix: + java: ['17', '18'] steps: # 1. Check out the current working tree - name: Checkout ArmorStandEditor Repository @@ -15,23 +18,23 @@ jobs: with: fetch-depth: 0 # Shallow clones should be disabled for a better relevancy of analysis - # 2. Setup Java 17 JDK - - name: Set up JDK 17 Environment + # 2. Setup Java JDK + - name: Set up JDK Environments uses: actions/setup-java@v3 with: - java-version: '17' + java-version: ${{ matrix.java }} distribution: 'zulu' # 3. Setup local Maven package cache to speed up building - name: Cache SonarCloud packages - uses: actions/cache@v2 + uses: actions/cache@v3 with: path: ~/.sonar/cache key: ${{ runner.os }}-sonar restore-keys: ${{ runner.os }}-sonar - name: Cache Maven packages - uses: actions/cache@v2 + uses: actions/cache@v3 with: path: ~/.m2 key: ${{ runner.os }}-m2-${{ hashFiles('**/pom.xml') }} @@ -53,7 +56,7 @@ jobs: #6 Upload Artifacts (Debug Purposes) - name: Upload Artifact for Debugging - uses: actions/upload-artifact@v3.0.0 + uses: actions/upload-artifact@v3.1.0 with: name: artifact path: /home/runner/work/ArmorStandEditor/ArmorStandEditor/target/armorstandeditor-*-*.jar diff --git a/.whitesource b/.whitesource deleted file mode 100644 index 0d7ea094..00000000 --- a/.whitesource +++ /dev/null @@ -1,13 +0,0 @@ -{ - "scanSettings": { - "baseBranches": [] - }, - "checkRunSettings": { - "vulnerableCheckRunConclusionLevel": "failure", - "displayMode": "diff" - }, - "issueSettings": { - "minSeverityLevel": "LOW", - "issueType": "DEPENDENCY" - } -} \ No newline at end of file diff --git a/LICENSE.md b/LICENSE.md index 23cb7903..f288702d 100644 --- a/LICENSE.md +++ b/LICENSE.md @@ -1,281 +1,622 @@ GNU GENERAL PUBLIC LICENSE - Version 2, June 1991 + Version 3, 29 June 2007 - Copyright (C) 1989, 1991 Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + Copyright (C) 2007 Free Software Foundation, Inc. Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -License is intended to guarantee your freedom to share and change free -software--to make sure the software is free for all its users. This -General Public License applies to most of the Free Software -Foundation's software and to any other program whose authors commit to -using it. (Some other Free Software Foundation software is covered by -the GNU Lesser General Public License instead.) You can apply it to + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for -this service if you wish), that you receive source code or can get it -if you want it, that you can change the software or use pieces of it -in new free programs; and that you know you can do these things. +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. - To protect your rights, we need to make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if you -distribute copies of the software, or if you modify it. + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. For example, if you distribute copies of such a program, whether -gratis or for a fee, you must give the recipients all the rights that -you have. You must make sure that they, too, receive or can get the -source code. And you must show them these terms so they know their -rights. - - We protect your rights with two steps: (1) copyright the software, and -(2) offer you this license which gives you legal permission to copy, -distribute and/or modify the software. - - Also, for each author's protection and ours, we want to make certain -that everyone understands that there is no warranty for this free -software. If the software is modified by someone else and passed on, we -want its recipients to know that what they have is not the original, so -that any problems introduced by others will not reflect on the original -authors' reputations. - - Finally, any free program is threatened constantly by software -patents. We wish to avoid the danger that redistributors of a free -program will individually obtain patent licenses, in effect making the -program proprietary. To prevent this, we have made it clear that any -patent must be licensed for everyone's free use or not licensed at all. +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. The precise terms and conditions for copying, distribution and modification follow. - GNU GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License applies to any program or other work which contains -a notice placed by the copyright holder saying it may be distributed -under the terms of this General Public License. The "Program", below, -refers to any such program or work, and a "work based on the Program" -means either the Program or any derivative work under copyright law: -that is to say, a work containing the Program or a portion of it, -either verbatim or with modifications and/or translated into another -language. (Hereinafter, translation is included without limitation in -the term "modification".) Each licensee is addressed as "you". - -Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running the Program is not restricted, and the output from the Program -is covered only if its contents constitute a work based on the -Program (independent of having been made by running the Program). -Whether that is true depends on what the Program does. - - 1. You may copy and distribute verbatim copies of the Program's -source code as you receive it, in any medium, provided that you -conspicuously and appropriately publish on each copy an appropriate -copyright notice and disclaimer of warranty; keep intact all the -notices that refer to this License and to the absence of any warranty; -and give any other recipients of the Program a copy of this License -along with the Program. - -You may charge a fee for the physical act of transferring a copy, and -you may at your option offer warranty protection in exchange for a fee. - - 2. You may modify your copy or copies of the Program or any portion -of it, thus forming a work based on the Program, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) You must cause the modified files to carry prominent notices - stating that you changed the files and the date of any change. - - b) You must cause any work that you distribute or publish, that in - whole or in part contains or is derived from the Program or any - part thereof, to be licensed as a whole at no charge to all third - parties under the terms of this License. - - c) If the modified program normally reads commands interactively - when run, you must cause it, when started running for such - interactive use in the most ordinary way, to print or display an - announcement including an appropriate copyright notice and a - notice that there is no warranty (or else, saying that you provide - a warranty) and that users may redistribute the program under - these conditions, and telling the user how to view a copy of this - License. (Exception: if the Program itself is interactive but - does not normally print such an announcement, your work based on - the Program is not required to print an announcement.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Program, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Program, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Program. - -In addition, mere aggregation of another work not based on the Program -with the Program (or with a work based on the Program) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may copy and distribute the Program (or a work based on it, -under Section 2) in object code or executable form under the terms of -Sections 1 and 2 above provided that you also do one of the following: - - a) Accompany it with the complete corresponding machine-readable - source code, which must be distributed under the terms of Sections - 1 and 2 above on a medium customarily used for software interchange; or, - - b) Accompany it with a written offer, valid for at least three - years, to give any third party, for a charge no more than your - cost of physically performing source distribution, a complete - machine-readable copy of the corresponding source code, to be - distributed under the terms of Sections 1 and 2 above on a medium - customarily used for software interchange; or, - - c) Accompany it with the information you received as to the offer - to distribute corresponding source code. (This alternative is - allowed only for noncommercial distribution and only if you - received the program in object code or executable form with such - an offer, in accord with Subsection b above.) - -The source code for a work means the preferred form of the work for -making modifications to it. For an executable work, complete source -code means all the source code for all modules it contains, plus any -associated interface definition files, plus the scripts used to -control compilation and installation of the executable. However, as a -special exception, the source code distributed need not include -anything that is normally distributed (in either source or binary -form) with the major components (compiler, kernel, and so on) of the -operating system on which the executable runs, unless that component -itself accompanies the executable. - -If distribution of executable or object code is made by offering -access to copy from a designated place, then offering equivalent -access to copy the source code from the same place counts as -distribution of the source code, even though third parties are not -compelled to copy the source along with the object code. - - 4. You may not copy, modify, sublicense, or distribute the Program -except as expressly provided under this License. Any attempt -otherwise to copy, modify, sublicense or distribute the Program is -void, and will automatically terminate your rights under this License. -However, parties who have received copies, or rights, from you under -this License will not have their licenses terminated so long as such -parties remain in full compliance. - - 5. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Program or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Program (or any work based on the -Program), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Program or works based on it. - - 6. Each time you redistribute the Program (or any work based on the -Program), the recipient automatically receives a license from the -original licensor to copy, distribute or modify the Program subject to -these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties to + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of this License. - 7. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Program at all. For example, if a patent -license would not permit royalty-free redistribution of the Program by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Program. - -If any portion of this section is held invalid or unenforceable under -any particular circumstance, the balance of the section is intended to -apply and the section as a whole is intended to apply in other -circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system, which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 8. If the distribution and/or use of the Program is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Program under this License -may add an explicit geographical distribution limitation excluding -those countries, so that distribution is permitted only in or among -countries not thus excluded. In such case, this License incorporates -the limitation as if written in the body of this License. - - 9. The Free Software Foundation may publish revised and/or new versions -of the General Public License from time to time. Such new versions will +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. -Each version is given a distinguishing version number. If the Program -specifies a version number of this License which applies to it and "any -later version", you have the option of following the terms and conditions -either of that version or of any later version published by the Free -Software Foundation. If the Program does not specify a version number of -this License, you may choose any version ever published by the Free Software -Foundation. - - 10. If you wish to incorporate parts of the Program into other free -programs whose distribution conditions are different, write to the author -to ask for permission. For software which is copyrighted by the Free -Software Foundation, write to the Free Software Foundation; we sometimes -make exceptions for this. Our decision will be guided by the two goals -of preserving the free status of all derivatives of our free software and -of promoting the sharing and reuse of software generally. - - NO WARRANTY - - 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY -FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN -OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES -PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED -OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS -TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE -PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, -REPAIR OR CORRECTION. - - 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR -REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, -INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING -OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED -TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY -YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER -PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE -POSSIBILITY OF SUCH DAMAGES. + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. END OF TERMS AND CONDITIONS @@ -287,15 +628,15 @@ free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively -convey the exclusion of warranty; and each file should have at least +state the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. - {description} - Copyright (C) {year} {fullname} + + Copyright (C) - This program is free software; you can redistribute it and/or modify + This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or + the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, @@ -303,37 +644,31 @@ the "copyright" line and a pointer to where the full notice is found. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. - You should have received a copy of the GNU General Public License along - with this program; if not, write to the Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + You should have received a copy of the GNU General Public License + along with this program. If not, see . Also add information on how to contact you by electronic and paper mail. -If the program is interactive, make it output a short notice like this -when it starts in an interactive mode: + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: - Gnomovision version 69, Copyright (C) year name of author - Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + Copyright (C) + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, the commands you use may -be called something other than `show w' and `show c'; they could even be -mouse-clicks or menu items--whatever suits your program. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the program, if -necessary. Here is a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright interest in the program - `Gnomovision' (which makes passes at compilers) written by James Hacker. - - {signature of Ty Coon}, 1 April 1989 - Ty Coon, President of Vice - -This General Public License does not permit incorporating your program into -proprietary programs. If your program is a subroutine library, you may -consider it more useful to permit linking proprietary applications with the -library. If this is what you want to do, use the GNU Lesser General -Public License instead of this License. +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +. diff --git a/README.md b/README.md index 9fa74c1d..59442670 100644 --- a/README.md +++ b/README.md @@ -23,13 +23,13 @@ ArmorStandEditor is a plugin for [Spigot and related forks](https://www.spigotmc * Shamblecraft for allowing me to test on the server as required before publishing to production. ## Downloads -Downloads for Version 1.17 and higher can be obtained from the [download page](https://www.spigotmc.org/resources/armorstandeditor-reborn.94503/) or our [release tracker](https://github.com/Wolfst0rm/ArmorStandEditor/releases) here on Github. - +Downloads for Version 1.17 and higher can be obtained from the [download page](https://www.spigotmc.org/resources/armorstandeditor-reborn.94503/) or our [release tracker](https://github.com/Wolfst0rm/ArmorStandEditor/releases) here on GitHub. For versions older than 1.17, then please use [the original versions download page](https://www.spigotmc.org/resources/armor-stand-editor-dead.7688/). The Latest Downloads Shortcut Links: * [Unstable 1.1x-DEV Versions](https://github.com/Wolfst0rm/ArmorStandEditor/actions) - **Use these at your own risk. Limited Support is provided for testing purposes** -* [1.18.2](https://www.spigotmc.org/threads/armorstandeditor-reborn.517132) +* [1.19](https://www.spigotmc.org/threads/armorstandeditor-reborn.517132) +* [1.18.2](https://github.com/Wolfieheart/ArmorStandEditor/releases/tag/1.18.2-34.2) * [1.18.1](https://github.com/Wolfieheart/ArmorStandEditor/releases/tag/1.18.1-33) * [1.18](https://github.com/Wolfst0rm/ArmorStandEditor/releases/tag/1.18-31) * [1.17.1](https://github.com/Wolfst0rm/ArmorStandEditor/releases/tag/1.17.1-30) @@ -70,13 +70,11 @@ You can also find us on our Discord at: [https://discord.com/invite/aUf4AWAKmr]( ## Support Support for ArmorStandEditor is provided: -* For API-Versions Higher than 1.13 but Fixes will not be retrofitted to older releases. +* For API-Versions Higher than 1.13 * For Latest Release and Unstable versions of the Plugin -If there are issues with the plugin on the latest release, you can report them [here](https://github.com/Wolfst0rm/ArmorStandEditor-Issues/issues/new?assignees=&labels=P1%3A+To+Be+Tested&template=behaviour-bug.yml). - -If there are new feature requests, you can ask them to be implemented [here](https://github.com/Wolfst0rm/ArmorStandEditor-Issues/issues/new?assignees=&labels=&template=feature-request.yml). +If there are issues with the plugin on the latest release, you can report them [here](https://github.com/Wolfst0rm/ArmorStandEditor/issues/new?assignees=&labels=P1%3A+To+Be+Tested&template=behaviour-bug.yml). -**NOTE:** Feature Requests are first evaluated and analyzed before an implementation can be considered. +If there are new feature requests, you can ask them to be implemented [here](https://github.com/Wolfst0rm/ArmorStandEditor/issues/new?assignees=&labels=&template=feature-request.yml). -Bugs are also first tested to ensure that they can be reproduced according to the reported steps. +**NOTE:** Bugs are also first tested to ensure that they can be reproduced according to the reported steps. If they can not, we will ask for more info. \ No newline at end of file diff --git a/pom.xml b/pom.xml index c4dc0b6c..3d2587c9 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ io.github.rypofalem.armorstandeditor armorstandeditor jar - 1.18.2-34.2 + 1.19-35 armorstandeditor http://maven.apache.org @@ -16,12 +16,18 @@ https://sonarcloud.io - - - maven2 - https://repo.maven.apache.org/maven2/ - - + + + Wolfieheart + Wolfieheart + https://github.com/Wolfieheart + + + RypoFalem + RypoFalem + https://github.com/RypoFalem + + @@ -29,16 +35,40 @@ spigot-repo https://hub.spigotmc.org/nexus/content/repositories/snapshots/ - + + + sk89q-repo + https://maven.enginehub.org/repo/ + + + + sonatype + https://oss.sonatype.org/content/groups/public/ + + glaremasters repo https://repo.glaremasters.me/repository/towny/ + + glaremasters + https://repo.glaremasters.me/repository/bloodshot + jeff-media-public https://hub.jeff-media.com/nexus/repository/jeff-media-public/ + + + jitpack.io + https://jitpack.io + + + + bg-repo + https://repo.bg-software.com/repository/api/ + @@ -46,67 +76,138 @@ org.spigotmc spigot-api - 1.18.2-R0.1-SNAPSHOT + 1.19-R0.1-SNAPSHOT + provided + + + + com.sk89q.worldguard + worldguard-bukkit + 7.0.7 + provided + + + + com.plotsquared + PlotSquared-Core + 6.9.0 + provided + + + + com.plotsquared + PlotSquared-Bukkit + 6.9.0 + provided + + + PlotSquared-Core + * + + + + + + com.github.TechFortress + GriefPrevention + 16.18 provided com.palmergames.bukkit.towny towny - 0.98.0.3 + 0.98.2.6 provided - de.jeff_media + com.jeff_media SpigotUpdateChecker - 1.3.2 + 3.0.0 compile + + + com.bgsoftware + SuperiorSkyblockAPI + 1.10.0 + provided + + + + com.griefdefender + api + 2.1.0-20220608.043832-6 + provided + + - org.apache.maven.plugins - maven-shade-plugin - 3.2.4 - - - - - - de.jeff_media.updatechecker - io.github.rypofalem.armorstandeditor.updatechecker - - - + org.codehaus.mojo + build-helper-maven-plugin + 3.3.0 + compile package - shade + attach-artifact + + + + ${project.build.directory}/${project.artifactId}.jar + jar + optional + + + + org.apache.maven.plugins maven-compiler-plugin - 3.10.0 + 3.10.1 - 11 - 11 - - -parameters - + 1.8 + 1.8 + + + org.apache.maven.plugins + maven-shade-plugin + 3.3.0 + + + package + + shade + + + + + com.jeff_media.updatechecker + io.github.rypofalem.armorstandeditor.updatechecker + + + + + + + + org.apache.maven.plugins maven-release-plugin ${maven-release-plugin.version} - [ci skip] + [ci skip] || [CI SKIP] @{project.version} diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/ArmorStandEditorPlugin.java b/src/main/java/io/github/rypofalem/armorstandeditor/ArmorStandEditorPlugin.java index 49ac467c..a81bd2a0 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/ArmorStandEditorPlugin.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/ArmorStandEditorPlugin.java @@ -1,6 +1,6 @@ /* * ArmorStandEditor: Bukkit plugin to allow editing armor stand attributes - * Copyright (C) 2016 RypoFalem + * Copyright (C) 2016-2022 RypoFalem * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License @@ -21,7 +21,7 @@ import io.github.rypofalem.armorstandeditor.language.Language; -import de.jeff_media.updatechecker.*; +import com.jeff_media.updatechecker.*; import io.github.rypofalem.armorstandeditor.Metrics.*; @@ -48,445 +48,493 @@ public class ArmorStandEditorPlugin extends JavaPlugin{ - private static final int SPIGOT_RESOURCE_ID = 94503; //Used for Update Checker - private NamespacedKey iconKey; - private static ArmorStandEditorPlugin instance; - private CommandEx execute; - private Language lang; - - //Server Version Detection: Paper or Spigot and Invalid NMS Version - public boolean hasSpigot = false; - public boolean hasPaper = false; - String nmsVersion = null; - String nmsVersionNotLatest = null; - PluginDescriptionFile pdfFile = this.getDescription(); - static final String SEPARATOR_FIELD = "================================"; - - public PlayerEditorManager editorManager; - - Material editTool; - String toolType; - boolean requireToolData = false; - boolean sendToActionBar = true; - int editToolData = Integer.MIN_VALUE; - boolean requireSneaking = false; - boolean requireToolLore = false; - String editToolLore = null; - boolean debug = false; //weather or not to broadcast messages via print(String message) - double coarseRot; - double fineRot; - boolean glowItemFrames = false; - boolean invisibleItemFrames = true; - boolean armorStandVisibility = true; - - //Glow Entity Colors - public Scoreboard scoreboard; - public Team team; - String lockedTeam = "ASLocked"; - - //Better Debug Output - SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); - Date date = Calendar.getInstance().getTime(); - Instant instant = Instant.now(); - DateTimeFormatter formatter = DateTimeFormatter.ofLocalizedDateTime( FormatStyle.SHORT ).withLocale( Locale.UK ).withZone( ZoneId.systemDefault() ); - String dateAsString = dateFormat.format(date); - String timeAsString = formatter.format(instant); - final String debugOutputFileName = getDataFolder() + File.separator + "DEBUG-" + dateAsString + ".log"; - FileOutputStream fos = null; - File f = new File(debugOutputFileName); - - private static ArmorStandEditorPlugin plugin; - - private static final int PLUGIN_ID = 12668; - - public ArmorStandEditorPlugin(){ - instance = this; - } - - @Override - public void onEnable(){ - - //Run UpdateChecker - runUpdateChecker(); - - scoreboard = this.getServer().getScoreboardManager().getMainScoreboard(); - - //Get NMS Version - nmsVersion = getNmsVersion(); - print("Net.Minecraft.Server version is: " + nmsVersion); - - //Load Messages in Console - getLogger().info("======= ArmorStandEditor ======="); - getLogger().info("Plugin Version: " + pdfFile.getVersion()); - - //Spigot Check - hasSpigot = getHasSpigot(); - getLogger().info("SpigotMC: " + hasSpigot); - - //Paper Check - hasPaper = getHasPaper(); - getLogger().info("PaperMC: " + hasPaper); - - //If Paper and Spigot are both FALSE - Disable the plugin - if (!hasPaper && !hasSpigot){ - getLogger().severe("This plugin requires either Paper, Spigot or one of its forks to run"); - getServer().getPluginManager().disablePlugin(this); - return; - } - - //Minimum Version Check - No Lower than 1.13-API. Will be tuned out in the future - if ( nmsVersion.startsWith("v1_8") || - nmsVersion.startsWith("v1_9") || - nmsVersion.startsWith("v1_10") || - nmsVersion.startsWith("v1_11") || - nmsVersion.startsWith("v1_12") || - nmsVersion.startsWith("v1_13") - ){ - getLogger().warning("Minecraft Version: " + nmsVersion + " is not supported. Loading Plugin Failed."); - getLogger().info(SEPARATOR_FIELD); - getServer().getPluginManager().disablePlugin(this); - return; - } - - //Also Warn People to Update if using nmsVersion lower than latest - if ( nmsVersion.startsWith("v1_14") || - nmsVersion.startsWith("v1_15") || - nmsVersion.startsWith("v1_16") || - nmsVersion.startsWith("v1_17")){ - getLogger().warning("Minecraft Version: " + nmsVersion + " is supported, but not latest."); - getLogger().warning("ArmorStandEditor will still work, but please update to the latest Version of " + nmsVersionNotLatest + ". Loading continuing."); - getLogger().info("Minecraft Version: " + nmsVersion + " is supported. Loading continuing."); - } - getServer().getPluginManager().enablePlugin(this); - registerScoreboards(scoreboard); - getLogger().info(SEPARATOR_FIELD); - - //Is Debug Enabled - debug = getConfig().getBoolean("debug", false); - print("Debug Mode Enabled? Well if you can read this its true"); - - if(debug){ - createDebugFile(); - } - - //saveResource doesn't accept File.separator on Windows, need to hardcode unix separator "/" instead - updateConfig("", "config.yml"); - updateConfig("lang/", "test_NA.yml"); - updateConfig("lang/", "nl_NL.yml"); - updateConfig("lang/", "uk_UA.yml"); - updateConfig("lang/", "zh_CN.yml"); - updateConfig("lang/", "fr_FR.yml"); - updateConfig("lang/", "ro_RO.yml"); - updateConfig("lang/", "ja_JP.yml"); - updateConfig("lang/", "de_DE.yml"); - updateConfig("lang/", "es_ES.yml"); - //English is the default language and needs to be unaltered to so that there is always a backup message string - saveResource("lang/en_US.yml", true); - lang = new Language(getConfig().getString("lang"), this); - print("Language in use: " + getConfig().getString("lang")); - - //Rotation - coarseRot = getConfig().getDouble("coarse"); - fineRot = getConfig().getDouble("fine"); - - //Set Tool to be used in game - toolType = getConfig().getString("tool"); - if (toolType != null) { - print("Edit Tool used to interact with Plugin is: " + toolType); - editTool = Material.getMaterial(toolType); //Ignore Warning - } else { - getLogger().severe("Unable to get Tool for Use with Plugin. Unable to continue!"); - getLogger().info(SEPARATOR_FIELD); - getServer().getPluginManager().disablePlugin(this); - return; - } - - //ArmorStandVisibility Node - armorStandVisibility = getConfig().getBoolean("armorStandVisibility", true); - print("ArmorStands allowed to be made visible/invisible?: " + armorStandVisibility); - - //Is there NBT Required for the tool - requireToolData = getConfig().getBoolean("requireToolData", false); - print("NBT Data Required: " + requireToolData); - - if(requireToolData) { - editToolData = getConfig().getInt("toolData", Integer.MIN_VALUE); - print("Tool Data is: " + editToolData); - } - - requireToolLore = getConfig().getBoolean("requireToolLore", false); - print("Lore Required?: " + requireToolLore); - - if(requireToolLore) { - editToolLore = getConfig().getString("toolLore", null); - print("Lore needs to be: " + editToolLore); - } - - //Require Sneaking - Wolfst0rm/ArmorStandEditor#17 - requireSneaking = getConfig().getBoolean("requireSneaking",false); - print("Sneaking required to activate the UI: " + requireSneaking); - - - //Send Messages to Action Bar - sendToActionBar = getConfig().getBoolean("sendMessagesToActionBar", true); - print("Messages being sent to action bar?: " + sendToActionBar); - - //All ItemFrame Stuff - glowItemFrames = getConfig().getBoolean("glowingItemFrame", true); - print("Are glowing Item Frames enabled for 1.17 Users?: " + glowItemFrames); - - invisibleItemFrames = getConfig().getBoolean("invisibleItemFrames", true); - print("Can users turn ItemFrames invisible?: " + invisibleItemFrames); - - //Get Metrics from bStats - getMetrics(); - - editorManager = new PlayerEditorManager(this); - execute = new CommandEx(this); - getCommand("ase").setExecutor(execute); //Ignore the warning with this. GetCommand is Nullable. Will be fixed in the future - getServer().getPluginManager().registerEvents(editorManager, this); - - - } - - private void runUpdateChecker() { - UpdateChecker.init(this, SPIGOT_RESOURCE_ID) - .setDownloadLink("https://www.spigotmc.org/resources/armorstandeditor-reborn.94503/") - .setChangelogLink("https://www.spigotmc.org/resources/armorstandeditor-reborn.94503/history") - .setNotifyOpsOnJoin(true) - .setNotifyByPermissionOnJoin("asedit.update") - .setColoredConsoleOutput(true) - .setUserAgent(new UserAgentBuilder().addPluginNameAndVersion().addServerVersion()) - .checkEveryXHours(72) //Warn people every 72 hours - .checkNow(); - } - - //Implement Glow Effects for Wolfstorm/ArmorStandEditor-Issues#5 - Add Disable Slots with Different Glow than Default - private void registerScoreboards(Scoreboard scoreboard) { - getLogger().info("Registering Scoreboards required for Glowing Effects"); - - //Fix for Scoreboard Issue reported by Starnos - Wolfst0rm/ArmorStandEditor-Issues/issues/18 - if (scoreboard.getTeam(lockedTeam) == null) { - print("Team '" + lockedTeam + "' does not exist, proceeding to create new team"); - scoreboard.registerNewTeam(lockedTeam); - - print("Setting Team '" + lockedTeam + "' color to RED"); - scoreboard.getTeam(lockedTeam).setColor(ChatColor.RED); - } else { - getLogger().info("Scoreboard for ASLocked Already exists. Continuing to load"); - } - } - - private void unregisterScoreboards(Scoreboard scoreboard) { - getLogger().info("Removing Scoreboards required for Glowing Effects"); - - team = scoreboard.getTeam(lockedTeam); - if(team != null) { //Basic Sanity Check to ensure that the team is there - team.unregister(); - print("Team '" + lockedTeam + "' successfully removed."); - } else{ - getLogger().severe("Team Already Appears to be removed. Please do not do this manually!"); - } - } - - private void updateConfig(String folder, String config) { - if(!new File(getDataFolder() + File.separator + folder + config).exists()){ - saveResource(folder + config, false); - } - } - - @Override - public void onDisable(){ - for(Player player : Bukkit.getServer().getOnlinePlayers()){ - if(player.getOpenInventory().getTopInventory().getHolder() == editorManager.getMenuHolder()) player.closeInventory(); - } - - scoreboard = this.getServer().getScoreboardManager().getMainScoreboard(); - unregisterScoreboards(scoreboard); - } - - public void createDebugFile(){ - try { - if (!f.exists() && f.createNewFile()) { - Files.setAttribute(f.toPath(), "dos:hidden", false); - } - } catch (IOException e) { - this.getServer().getLogger().warning(e.getMessage()); - } - } - - public void log(String message){ - //Output to Server Console - Safer than doing a Broadcast to everyone on the Server - String timeMsgSep = ": "; - this.getServer().getLogger().info("ArmorStandEditor: " + message); - - try{ - fos = new FileOutputStream(f, true); - - //Write the Content as Bytes - fos.write(timeAsString.getBytes()); - fos.write(timeMsgSep.getBytes()); - fos.write(message.getBytes()); - fos.write(10); - fos.flush(); - }catch(IOException e){ - this.getServer().getLogger().warning(e.getMessage()); - }finally{ - if(fos != null){ - try { - fos.close(); - } catch (IOException e) { - this.getServer().getLogger().warning(e.getMessage()); - } - } - } - } - - public String getNmsVersion(){ - return this.getServer().getClass().getPackage().getName().replace(".",",").split(",")[3]; - } - - public boolean getHasSpigot(){ - try { - Class.forName("org.spigotmc.SpigotConfig"); - print("SpigotMC Detected."); - nmsVersionNotLatest = "SpigotMC ASAP."; - return true; - } catch (ClassNotFoundException e){ - nmsVersionNotLatest = ""; - return false; - } - } - - public boolean getArmorStandVisibility(){ - return getConfig().getBoolean("armorStandVisibility"); - } - - public boolean getItemFrameVisibility(){ - return getConfig().getBoolean("invisibleItemFrames"); - } - - public boolean getHasPaper(){ - try { - Class.forName("com.destroystokyo.paper.PaperConfig"); - print("PaperMC Detected."); - nmsVersionNotLatest = "SpigotMC ASAP."; - return true; - } catch (ClassNotFoundException e){ - nmsVersionNotLatest = ""; - return false; - } - } - /* - * For Internal Debugging - - * - * set debug: true in Config.yml - * NOTE: NOT RECOMMENDED FOR PROD! INTERNAL TESTING ONLY! - * - * To be refactored - Apart Log File. - */ - public void print(String message){ - if(debug){ - log(message); - } - } - - public static ArmorStandEditorPlugin instance(){ - return instance; - } - - public Language getLang(){ - return lang; - } - - public boolean isEditTool(ItemStack itemStk){ - if (itemStk == null) { return false; } - if (editTool != itemStk.getType()) { return false; } - - //FIX: Depreciated Stack for getDurability - // if(requireToolData && item.getDurability() != (short)editToolData) return false; - if (requireToolData){ - Damageable d1 = (Damageable) itemStk.getItemMeta(); //Get the Damageable Options for itemStk - if (d1 != null) { //We do this to prevent NullPointers - if (d1.getDamage() != (short) editToolData) { return false; } - } - } - - if(requireToolLore && editToolLore != null){ - - //If the ItemStack does not have Metadata then we return false - if(!itemStk.hasItemMeta()) { return false; } - - //Get the lore of the Item and if it is null - Return False - List itemLore = itemStk.getItemMeta().getLore(); //Ignore warnings this gives. Will be fixed in the future - if (itemLore == null){ return false; } - - //If the Item does not have Lore - Return False - boolean hasTheItemLore = itemStk.getItemMeta().hasLore(); - if (!hasTheItemLore) { return false; } - - //Item the first thing in the ItemLore List does not Equal the Config Value "editToolLore" - return false - if (!itemLore.get(0).equals(editToolLore)) { return false; } //Does not need simplified - IntelliJ likes to complain here - - } - - return true; - } - - //Metrics/bStats Support - private void getMetrics(){ - - Metrics metrics = new Metrics(this, PLUGIN_ID); - - //RequireToolLore Metric - metrics.addCustomChart(new SimplePie("tool_lore_enabled", () -> getConfig().getString("requireToolLore"))); - - //RequireToolData - metrics.addCustomChart(new SimplePie("tool_data_enabled", () -> getConfig().getString("requireToolData"))); - - //Send Messages to ActionBar - metrics.addCustomChart(new SimplePie("action_bar_messages", () -> getConfig().getString("sendMessagesToActionBar"))); - - //Debug Mode Enabled? - metrics.addCustomChart(new SimplePie("uses_debug_mode", () -> getConfig().getString("debug"))); - - //Language is used - metrics.addCustomChart(new DrilldownPie("language_used", () -> { - Map> map = new HashMap<>(); - Map entry = new HashMap<>(); - - String languageUsed = getConfig().getString("lang"); - entry.put(languageUsed, 1); - - assert languageUsed != null; - if(languageUsed.startsWith("nl")){ - map.put("Dutch", entry); - } else if(languageUsed.startsWith("de")){ - map.put("German", entry); - } else if(languageUsed.startsWith("es")){ - map.put("Spanish", entry); - } else if(languageUsed.startsWith("fr")){ - map.put("French", entry); - } else if(languageUsed.startsWith("ja")){ - map.put("Japanese", entry); - } else if(languageUsed.startsWith("pl")){ - map.put("Polish", entry); - } else if(languageUsed.startsWith("ro")){ - map.put("Romanian", entry); - } else if(languageUsed.startsWith("uk")){ - map.put("Ukrainian", entry); - } else if(languageUsed.startsWith("zh")){ - map.put("Chinese", entry); - } else{ - map.put("Other", entry); - } - return map; - })); - - } - - public NamespacedKey getIconKey() { - if(iconKey == null) iconKey = new NamespacedKey(this, "command_icon"); - return iconKey; - } + private static final int SPIGOT_RESOURCE_ID = 94503; //Used for Update Checker + private static final int PLUGIN_ID = 12668; //Used for BStats Metrics + + private NamespacedKey iconKey; + private static ArmorStandEditorPlugin instance; + private CommandEx execute; + private Language lang; + + //Server Version Detection: Paper or Spigot and Invalid NMS Version + String nmsVersion; + public boolean hasSpigot = false; + public boolean hasPaper = false; + String nmsVersionNotLatest = null; + PluginDescriptionFile pdfFile = this.getDescription(); + static final String SEPARATOR_FIELD = "================================"; + + public PlayerEditorManager editorManager; + + Material editTool; + String toolType; + boolean requireToolData = false; + boolean sendToActionBar = true; + + int editToolData = Integer.MIN_VALUE; + boolean requireSneaking = false; + boolean requireToolLore = false; + String editToolLore = null; + boolean allowCustomModelData = false; + Integer customModelDataInt = Integer.MIN_VALUE; + + boolean debug = false; //weather or not to broadcast messages via print(String message) + double coarseRot; + double fineRot; + boolean glowItemFrames = false; + boolean invisibleItemFrames = true; + boolean armorStandVisibility = true; + + //Glow Entity Colors + public Scoreboard scoreboard; + public Team team; + String lockedTeam = "ASLocked"; + + //Better Debug Output + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); + Date date = Calendar.getInstance().getTime(); + Instant instant = Instant.now(); + DateTimeFormatter formatter = DateTimeFormatter.ofLocalizedDateTime( FormatStyle.SHORT ).withLocale( Locale.UK ).withZone( ZoneId.systemDefault() ); + String dateAsString = dateFormat.format(date); + String timeAsString = formatter.format(instant); + final String debugOutputFileName = getDataFolder() + File.separator + "DEBUG-" + dateAsString + ".log"; + FileOutputStream fos = null; + File f = new File(debugOutputFileName); + + private static ArmorStandEditorPlugin plugin; + + //1.19?: Add in Custom WG Flag? To be seen if needed if WG Protection is enough! + + public ArmorStandEditorPlugin(){ + instance = this; + } + + @Override + public void onEnable(){ + + //Run UpdateChecker + runUpdateChecker(); + + scoreboard = this.getServer().getScoreboardManager().getMainScoreboard(); + + //Get NMS Version + nmsVersion = getNmsVersion(); + print("Net.Minecraft.Server version is: " + nmsVersion); + + //Load Messages in Console + getLogger().info("======= ArmorStandEditor ======="); + getLogger().info("Plugin Version: " + pdfFile.getVersion()); + + //Spigot Check + hasSpigot = getHasSpigot(); + getLogger().info("SpigotMC: " + hasSpigot); + + //Paper Check + hasPaper = getHasPaper(); + getLogger().info("PaperMC: " + hasPaper); + + //If Paper and Spigot are both FALSE - Disable the plugin + if (!hasPaper && !hasSpigot){ + getLogger().severe("This plugin requires either Paper, Spigot or one of its forks to run"); + getServer().getPluginManager().disablePlugin(this); + return; + } + + //Minimum Version Check - No Lower than 1.13-API. Will be tuned out in the future + if ( nmsVersion.startsWith("v1_8") || + nmsVersion.startsWith("v1_9") || + nmsVersion.startsWith("v1_10") || + nmsVersion.startsWith("v1_11") || + nmsVersion.startsWith("v1_12") || + nmsVersion.startsWith("v1_13") + ){ + getLogger().warning("Minecraft Version: " + nmsVersion + " is not supported. Loading Plugin Failed."); + getLogger().info(SEPARATOR_FIELD); + getServer().getPluginManager().disablePlugin(this); + return; + } + + //Also Warn People to Update if using nmsVersion lower than latest + if ( nmsVersion.startsWith("v1_14") || + nmsVersion.startsWith("v1_15") || + nmsVersion.startsWith("v1_16") || + nmsVersion.startsWith("v1_17") || + nmsVersion.startsWith("v1_18")){ + getLogger().warning("Minecraft Version: " + nmsVersion + " is supported, but not latest."); + getLogger().warning("ArmorStandEditor will still work, but please update to the latest Version of " + nmsVersionNotLatest + ". Loading continuing."); + } else { + getLogger().info("Minecraft Version: " + nmsVersion + " is supported. Loading continuing."); + } + getServer().getPluginManager().enablePlugin(this); + registerScoreboards(scoreboard); + getLogger().info(SEPARATOR_FIELD); + + //Is Debug Enabled + debug = getConfig().getBoolean("debug", false); + print("Debug Mode Enabled? Well if you can read this its true"); + if(debug){ + createDebugFile(); + } + + //saveResource doesn't accept File.separator on Windows, need to hardcode unix separator "/" instead + updateConfig("", "config.yml"); + updateConfig("lang/", "test_NA.yml"); + updateConfig("lang/", "nl_NL.yml"); + updateConfig("lang/", "uk_UA.yml"); + updateConfig("lang/", "zh_CN.yml"); + updateConfig("lang/", "fr_FR.yml"); + updateConfig("lang/", "ro_RO.yml"); + updateConfig("lang/", "ja_JP.yml"); + updateConfig("lang/", "de_DE.yml"); + updateConfig("lang/", "es_ES.yml"); + //English is the default language and needs to be unaltered to so that there is always a backup message string + saveResource("lang/en_US.yml", true); + lang = new Language(getConfig().getString("lang"), this); + print("Language in use: " + getConfig().getString("lang")); + + //Rotation + coarseRot = getConfig().getDouble("coarse"); + fineRot = getConfig().getDouble("fine"); + + //Set Tool to be used in game + toolType = getConfig().getString("tool"); + if (toolType != null) { + print("Edit Tool used to interact with Plugin is: " + toolType); + editTool = Material.getMaterial(toolType); //Ignore Warning + } else { + getLogger().severe("Unable to get Tool for Use with Plugin. Unable to continue!"); + getLogger().info(SEPARATOR_FIELD); + getServer().getPluginManager().disablePlugin(this); + return; + } + + //Custom Model Data + allowCustomModelData = getConfig().getBoolean("allowCustomModelData", false); + print("Do we allow CustomModelData?: " + allowCustomModelData); + + if(allowCustomModelData){ + customModelDataInt = getConfig().getInt("customModelDataInt", Integer.MIN_VALUE); + print("CustomModelData Integer is: " + customModelDataInt); + } + + //ArmorStandVisibility Node + armorStandVisibility = getConfig().getBoolean("armorStandVisibility", true); + print("ArmorStands allowed to be made visible/invisible?: " + armorStandVisibility); + + //Is there NBT Required for the tool + requireToolData = getConfig().getBoolean("requireToolData", false); + print("NBT Data Required: " + requireToolData); + + if(requireToolData) { + editToolData = getConfig().getInt("toolData", Integer.MIN_VALUE); + print("Tool Data is: " + editToolData); + } + + requireToolLore = getConfig().getBoolean("requireToolLore", false); + print("Lore Required?: " + requireToolLore); + + if(requireToolLore) { + editToolLore = getConfig().getString("toolLore", null); + if(editToolLore != null) editToolLore = ChatColor.translateAlternateColorCodes('&', editToolLore); + print("Lore needs to be: " + editToolLore); + } + + //Require Sneaking - Wolfst0rm/ArmorStandEditor#17 + requireSneaking = getConfig().getBoolean("requireSneaking", false); + print("Sneaking required to activate the UI: " + requireSneaking); + + //Send Messages to Action Bar + sendToActionBar = getConfig().getBoolean("sendMessagesToActionBar", true); + print("Messages being sent to action bar?: " + sendToActionBar); + + //All ItemFrame Stuff + glowItemFrames = getConfig().getBoolean("glowingItemFrame", true); + print("Are glowing Item Frames enabled for 1.17 Users?: " + glowItemFrames); + + invisibleItemFrames = getConfig().getBoolean("invisibleItemFrames", true); + print("Can users turn ItemFrames invisible?: " + invisibleItemFrames); + + //Get Metrics from bStats + getMetrics(); + + editorManager = new PlayerEditorManager(this); + execute = new CommandEx(this); + getCommand("ase").setExecutor(execute); //Ignore the warning with this. GetCommand is Nullable. Will be fixed in the future + getServer().getPluginManager().registerEvents(editorManager, this); + + + } + + private void runUpdateChecker() { + UpdateChecker.init(this, SPIGOT_RESOURCE_ID) + .setDownloadLink("https://www.spigotmc.org/resources/armorstandeditor-reborn.94503/") + .setChangelogLink("https://www.spigotmc.org/resources/armorstandeditor-reborn.94503/history") + .setNotifyOpsOnJoin(true) + .setNotifyByPermissionOnJoin("asedit.update") + .setColoredConsoleOutput(true) + .setUserAgent(new UserAgentBuilder().addPluginNameAndVersion().addServerVersion()) + .checkEveryXHours(72) //Warn people every 72 hours + .checkNow(); + } + + //Implement Glow Effects for Wolfstorm/ArmorStandEditor-Issues#5 - Add Disable Slots with Different Glow than Default + private void registerScoreboards(Scoreboard scoreboard) { + getLogger().info("Registering Scoreboards required for Glowing Effects"); + + //Fix for Scoreboard Issue reported by Starnos - Wolfst0rm/ArmorStandEditor-Issues/issues/18 + if (scoreboard.getTeam(lockedTeam) == null) { + print("Team '" + lockedTeam + "' does not exist, proceeding to create new team"); + scoreboard.registerNewTeam(lockedTeam); + + print("Setting Team '" + lockedTeam + "' color to RED"); + scoreboard.getTeam(lockedTeam).setColor(ChatColor.RED); + } else { + getLogger().info("Scoreboard for ASLocked Already exists. Continuing to load"); + } + } + + private void unregisterScoreboards(Scoreboard scoreboard) { + getLogger().info("Removing Scoreboards required for Glowing Effects"); + + team = scoreboard.getTeam(lockedTeam); + if(team != null) { //Basic Sanity Check to ensure that the team is there + team.unregister(); + print("Team '" + lockedTeam + "' successfully removed."); + } else{ + getLogger().severe("Team Already Appears to be removed. Please do not do this manually!"); + } + } + + private void updateConfig(String folder, String config) { + if(!new File(getDataFolder() + File.separator + folder + config).exists()){ + saveResource(folder + config, false); + } + } + + @Override + public void onDisable(){ + for(Player player : Bukkit.getServer().getOnlinePlayers()){ + if(player.getOpenInventory().getTopInventory().getHolder() == editorManager.getMenuHolder()) player.closeInventory(); + } + + scoreboard = this.getServer().getScoreboardManager().getMainScoreboard(); + unregisterScoreboards(scoreboard); + } + + public void createDebugFile(){ + try { + if (!f.exists() && f.createNewFile()) { + Files.setAttribute(f.toPath(), "dos:hidden", true); + } + } catch (IOException e) { + this.getServer().getLogger().warning(e.getMessage()); + } + } + + + public String getNmsVersion(){ + return this.getServer().getClass().getPackage().getName().replace(".",",").split(",")[3]; + } + + public boolean getHasSpigot(){ + try { + Class.forName("org.spigotmc.SpigotConfig"); + print("SpigotMC Detected."); + nmsVersionNotLatest = "SpigotMC ASAP."; + return true; + } catch (ClassNotFoundException e){ + nmsVersionNotLatest = ""; + return false; + } + } + + public boolean getArmorStandVisibility(){ + return getConfig().getBoolean("armorStandVisibility"); + } + + public boolean getItemFrameVisibility(){ + return getConfig().getBoolean("invisibleItemFrames"); + } + + public boolean getHasPaper(){ + try { + Class.forName("com.destroystokyo.paper.PaperConfig"); + print("PaperMC Detected."); + nmsVersionNotLatest = "SpigotMC ASAP."; + return true; + } catch (ClassNotFoundException e){ + nmsVersionNotLatest = ""; + return false; + } + } + public Language getLang(){ + return lang; + } + + public boolean getAllowCustomModelData() { + return this.getConfig().getBoolean("allowCustomModelData"); + } + + public Material getEditTool() { + return this.editTool; + } + + public Integer getCustomModelDataInt() { return this.getConfig().getInt("customModelDataInt"); } + + public boolean isEditTool(ItemStack itemStk){ + if (itemStk == null) { return false; } + if (editTool != itemStk.getType()) { return false; } + + //FIX: Depreciated Stack for getDurability + // if(requireToolData && item.getDurability() != (short)editToolData) return false; + if (requireToolData){ + Damageable d1 = (Damageable) itemStk.getItemMeta(); //Get the Damageable Options for itemStk + if (d1 != null) { //We do this to prevent NullPointers + if (d1.getDamage() != (short) editToolData) { return false; } + } + } + + if(requireToolLore && editToolLore != null){ + + //If the ItemStack does not have Metadata then we return false + if(!itemStk.hasItemMeta()) { return false; } + + //Get the lore of the Item and if it is null - Return False + List itemLore = itemStk.getItemMeta().getLore(); //Ignore warnings this gives. Will be fixed in the future + if (itemLore == null){ return false; } + + //If the Item does not have Lore - Return False + boolean hasTheItemLore = itemStk.getItemMeta().hasLore(); + if (!hasTheItemLore) { return false; } + + //Item the first thing in the ItemLore List does not Equal the Config Value "editToolLore" - return false + if (!itemLore.get(0).equals(editToolLore)) { return false; } //Does not need simplified - IntelliJ likes to complain here + + } + + if (allowCustomModelData && customModelDataInt != null) { + //If the ItemStack does not have Metadata then we return false + if(!itemStk.hasItemMeta()) { return false; } + + Integer itemCustomModel = itemStk.getItemMeta().getCustomModelData(); + if (itemCustomModel == null) { return false; } + + if(!itemCustomModel.equals(customModelDataInt)) { return false; } + } + + return true; + } + + public void log(String message){ + //Output to Server Console - Safer than doing a Broadcast to everyone on the Server + String timeMsgSep = ": "; + this.getServer().getLogger().info("ArmorStandEditor: " + message); + + try{ + fos = new FileOutputStream(f, true); + + //Write the Content as Bytes + fos.write(timeAsString.getBytes()); + fos.write(timeMsgSep.getBytes()); + fos.write(message.getBytes()); + fos.write(10); + fos.flush(); + }catch(IOException e){ + this.getServer().getLogger().warning(e.getMessage()); + }finally{ + if(fos != null){ + try { + fos.close(); + } catch (IOException e) { + this.getServer().getLogger().warning(e.getMessage()); + } + } + } + } + + /* + * For Internal Debugging - + * + * set debug: true in Config.yml + * NOTE: NOT RECOMMENDED FOR PROD! INTERNAL TESTING ONLY! + * + * To be refactored - Apart Log File. + */ + public void print(String message){ + if(debug){ + log(message); + } + } + + public static ArmorStandEditorPlugin instance(){ + return instance; + } + + //Metrics/bStats Support + private void getMetrics(){ + + Metrics metrics = new Metrics(this, PLUGIN_ID); + + //RequireToolLore Metric + metrics.addCustomChart(new SimplePie("tool_lore_enabled", () -> getConfig().getString("requireToolLore"))); + + //RequireToolData + metrics.addCustomChart(new SimplePie("tool_data_enabled", () -> getConfig().getString("requireToolData"))); + + //Send Messages to ActionBar + metrics.addCustomChart(new SimplePie("action_bar_messages", () -> getConfig().getString("sendMessagesToActionBar"))); + + //Debug Mode Enabled? + metrics.addCustomChart(new SimplePie("uses_debug_mode", () -> getConfig().getString("debug"))); + + //Language is used + metrics.addCustomChart(new DrilldownPie("language_used", () -> { + Map> map = new HashMap<>(); + Map entry = new HashMap<>(); + + String languageUsed = getConfig().getString("lang"); + entry.put(languageUsed, 1); + + assert languageUsed != null; + + if (languageUsed.startsWith("nl")) { + map.put("Dutch", entry); + } else if (languageUsed.startsWith("de")) { + map.put("German", entry); + } else if (languageUsed.startsWith("en")) { + map.put("English", entry); + } else if (languageUsed.startsWith("es")) { + map.put("Spanish", entry); + } else if (languageUsed.startsWith("fr")) { + map.put("French", entry); + } else if (languageUsed.startsWith("ja")) { + map.put("Japanese", entry); + } else if (languageUsed.startsWith("pl")) { + map.put("Polish", entry); + }else if(languageUsed.startsWith("ru")){ //See PR# 41 by KPidS + map.put("Russian", entry); + }else if(languageUsed.startsWith("ro")){ + map.put("Romanian", entry); + } else if(languageUsed.startsWith("uk")){ + map.put("Ukrainian", entry); + } else if(languageUsed.startsWith("zh")){ + map.put("Chinese", entry); + } else{ + map.put("Other", entry); + } + return map; + })); + + //ArmorStandInvis Config + metrics.addCustomChart(new SimplePie("armor_stand_invisibility_usage", () -> getConfig().getString("armorStandVisibility"))); + + //ArmorStandInvis Config + metrics.addCustomChart(new SimplePie("itemframe_invisibility_used", () -> getConfig().getString("invisibleItemFrames"))); + + } + + public NamespacedKey getIconKey() { + if(iconKey == null) iconKey = new NamespacedKey(this, "command_icon"); + return iconKey; + } } diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/CommandEx.java b/src/main/java/io/github/rypofalem/armorstandeditor/CommandEx.java index c1f180df..72efcf4c 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/CommandEx.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/CommandEx.java @@ -19,7 +19,7 @@ package io.github.rypofalem.armorstandeditor; -import de.jeff_media.updatechecker.UpdateChecker; +import com.jeff_media.updatechecker.UpdateChecker; import io.github.rypofalem.armorstandeditor.modes.AdjustmentMode; import io.github.rypofalem.armorstandeditor.modes.Axis; import io.github.rypofalem.armorstandeditor.modes.EditMode; @@ -29,181 +29,219 @@ import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; +import org.bukkit.inventory.ItemFlag; +import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.ItemMeta; public class CommandEx implements CommandExecutor { - ArmorStandEditorPlugin plugin; - final String LISTMODE = ChatColor.YELLOW + "/ase mode <" + Util.getEnumList(EditMode.class) + ">"; - final String LISTAXIS = ChatColor.YELLOW + "/ase axis <" + Util.getEnumList(Axis.class) + ">"; - final String LISTADJUSTMENT = ChatColor.YELLOW + "/ase adj <" + Util.getEnumList(AdjustmentMode.class) + ">"; - final String LISTSLOT = ChatColor.YELLOW + "/ase slot <1-9>"; - final String HELP = ChatColor.YELLOW + "/ase help"; - final String VERSION = ChatColor.YELLOW + "/ase version"; - final String UPDATE = ChatColor.YELLOW + "/ase update"; - - public CommandEx( ArmorStandEditorPlugin armorStandEditorPlugin) { - this.plugin = armorStandEditorPlugin; - } - - @Override - public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { - if (!(sender instanceof Player - && checkPermission((Player) sender, "basic", true))) { - sender.sendMessage(plugin.getLang().getMessage("noperm", "warn")); - return true; - } - - Player player = (Player) sender; - if (args.length == 0) { - player.sendMessage(LISTMODE); - player.sendMessage(LISTAXIS); - player.sendMessage(LISTSLOT); - player.sendMessage(LISTADJUSTMENT); - player.sendMessage(VERSION); - player.sendMessage(UPDATE); - player.sendMessage(HELP); - return true; - } - switch (args[0].toLowerCase()) { - case "mode": commandMode(player, args); - break; - case "axis": commandAxis(player, args); - break; - case "adj": commandAdj(player, args); - break; - case "slot": commandSlot(player, args); - break; - case "help": - case "?": commandHelp(player); - break; - case "version": commandVersion(player); - break; - case "update": commandUpdate(player); - break; - default: - sender.sendMessage(LISTMODE); - sender.sendMessage(LISTAXIS); - sender.sendMessage(LISTSLOT); - sender.sendMessage(LISTADJUSTMENT); - sender.sendMessage(VERSION); - sender.sendMessage(UPDATE); - sender.sendMessage(HELP); - } - return true; - } - - private void commandSlot(Player player, String[] args) { - - if (args.length <= 1) { - player.sendMessage(plugin.getLang().getMessage("noslotnumcom", "warn")); - player.sendMessage(LISTSLOT); - } - - if (args.length > 1) { - try { - byte slot = (byte) (Byte.parseByte(args[1]) - 0b1); - if (slot >= 0 && slot < 9) { - plugin.editorManager.getPlayerEditor(player.getUniqueId()).setCopySlot(slot); - } else { - player.sendMessage(LISTSLOT); - } - - } catch ( NumberFormatException nfe) { - player.sendMessage(LISTSLOT); - } - } - } - - private void commandAdj(Player player, String[] args) { - if (args.length <= 1) { - player.sendMessage(plugin.getLang().getMessage("noadjcom", "warn")); - player.sendMessage(LISTADJUSTMENT); - } - - if (args.length > 1) { - for ( AdjustmentMode adj : AdjustmentMode.values()) { - if (adj.toString().toLowerCase().contentEquals(args[1].toLowerCase())) { - plugin.editorManager.getPlayerEditor(player.getUniqueId()).setAdjMode(adj); - return; - } - } - player.sendMessage(LISTADJUSTMENT); - } - } - - private void commandAxis( Player player, String[] args) { - if (args.length <= 1) { - player.sendMessage(plugin.getLang().getMessage("noaxiscom", "warn")); - player.sendMessage(LISTAXIS); - } - - if (args.length > 1) { - for ( Axis axis : Axis.values()) { - if (axis.toString().toLowerCase().contentEquals(args[1].toLowerCase())) { - plugin.editorManager.getPlayerEditor(player.getUniqueId()).setAxis(axis); - return; - } - } - player.sendMessage(LISTAXIS); - } - } - - private void commandMode( Player player, String[] args) { - if (args.length <= 1) { - player.sendMessage(plugin.getLang().getMessage("nomodecom", "warn")); - player.sendMessage(LISTMODE); - } - - if (args.length > 1) { - for ( EditMode mode : EditMode.values()) { - if (mode.toString().toLowerCase().contentEquals(args[1].toLowerCase())) { - if (args[1].equals("invisible") && !checkPermission(player, "armorstand.invisible", true)) return; - if (args[1].equals("itemframe") && !checkPermission(player, "itemframe.invisible", true)) return; - plugin.editorManager.getPlayerEditor(player.getUniqueId()).setMode(mode); - plugin.print("Mode set to '" + mode + "' for player '" + player.getDisplayName()); - return; - } - } - } - } - - private void commandHelp( Player player) { - player.closeInventory(); - player.playSound(player.getLocation(), Sound.ENTITY_EXPERIENCE_ORB_PICKUP, 1f, 1f); - player.sendMessage(plugin.getLang().getMessage("help", "info", plugin.editTool.name())); - player.sendMessage(""); - player.sendMessage(plugin.getLang().getMessage("helptips", "info")); - player.sendMessage(""); - player.sendRawMessage(plugin.getLang().getMessage("helpurl", "")); - } - - private void commandUpdate(Player player) { - if(!(checkPermission(player, "update", true))) return; - UpdateChecker.getInstance().checkNow(player); - } - - private void commandVersion(Player player) { - if (!(checkPermission(player, "update", true))) return; - String verString = plugin.pdfFile.getVersion(); - plugin.print("Output of VerString: " + verString); - player.sendMessage(ChatColor.YELLOW + "[ArmorStandEditor] Version: " + verString); - UpdateChecker.getInstance().checkNow(player); - } - - - - private boolean checkPermission( Player player, String permName, boolean sendMessageOnInvalidation) { - if (permName.equalsIgnoreCase("paste")) { - permName = "copy"; - } - if (player.hasPermission("asedit." + permName.toLowerCase())) { - plugin.print("Player '"+ player.getDisplayName() +" has Permission: asedit." + permName.toLowerCase()); - return true; - } else { - if (sendMessageOnInvalidation) { - plugin.print("Player '"+ player.getDisplayName() +" does not have Permission: asedit." + permName.toLowerCase()); - player.sendMessage(plugin.getLang().getMessage("noperm", "warn")); - } - return false; - } - } + ArmorStandEditorPlugin plugin; + final String LISTMODE = ChatColor.YELLOW + "/ase mode <" + Util.getEnumList(EditMode.class) + ">"; + final String LISTAXIS = ChatColor.YELLOW + "/ase axis <" + Util.getEnumList(Axis.class) + ">"; + final String LISTADJUSTMENT = ChatColor.YELLOW + "/ase adj <" + Util.getEnumList(AdjustmentMode.class) + ">"; + final String LISTSLOT = ChatColor.YELLOW + "/ase slot <1-9>"; + final String HELP = ChatColor.YELLOW + "/ase help"; + final String VERSION = ChatColor.YELLOW + "/ase version"; + final String UPDATE = ChatColor.YELLOW + "/ase update"; + final String GIVECUSTOMMODEL = ChatColor.YELLOW + "/ase give"; + String debugPlayerDisplayName; + + public CommandEx( ArmorStandEditorPlugin armorStandEditorPlugin) { + this.plugin = armorStandEditorPlugin; + } + + @Override + public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { + if (!(sender instanceof Player + && checkPermission((Player) sender, "basic", true))) { + sender.sendMessage(plugin.getLang().getMessage("noperm", "warn")); + plugin.log("CommandSender is not an instance of Player"); + return true; + } + + Player player = (Player) sender; + debugPlayerDisplayName = player.getDisplayName(); + if (args.length == 0) { + plugin.log("Sending List of Commands to: " + debugPlayerDisplayName); + player.sendMessage(LISTMODE); + player.sendMessage(LISTAXIS); + player.sendMessage(LISTSLOT); + player.sendMessage(LISTADJUSTMENT); + player.sendMessage(VERSION); + player.sendMessage(UPDATE); + player.sendMessage(HELP); + player.sendMessage(GIVECUSTOMMODEL); + return true; + } + switch (args[0].toLowerCase()) { + case "mode": commandMode(player, args); + break; + case "axis": commandAxis(player, args); + break; + case "adj": commandAdj(player, args); + break; + case "slot": commandSlot(player, args); + break; + case "help": + case "?": commandHelp(player); + break; + case "version": commandVersion(player); + break; + case "update": commandUpdate(player); + break; + case "give": commandGive(player); + break; + default: + plugin.log("Sending List of Commands to: " + debugPlayerDisplayName); + sender.sendMessage(LISTMODE); + sender.sendMessage(LISTAXIS); + sender.sendMessage(LISTSLOT); + sender.sendMessage(LISTADJUSTMENT); + sender.sendMessage(VERSION); + sender.sendMessage(UPDATE); + sender.sendMessage(HELP); + sender.sendMessage(GIVECUSTOMMODEL); + } + return true; + } + + // Implemented to fix: + // https://github.com/Wolfieheart/ArmorStandEditor-Issues/issues/35 & + // https://github.com/Wolfieheart/ArmorStandEditor-Issues/issues/30 - See Remarks OTHER + private void commandGive(Player player) { + if (plugin.getAllowCustomModelData() && checkPermission(player, "give", true)) { + plugin.log("Does Plugin Allow CustomModelData?: " + plugin.getAllowCustomModelData()); + plugin.log("CustomModelData Int is: " + plugin.getCustomModelDataInt()); + ItemStack stack = new ItemStack(plugin.getEditTool()); //Only Support EditTool at the MOMENT + ItemMeta meta = stack.getItemMeta(); + meta.setCustomModelData(plugin.getCustomModelDataInt()); + meta.setUnbreakable(true); + meta.addItemFlags(ItemFlag.HIDE_UNBREAKABLE); + stack.setItemMeta(meta); + player.getInventory().addItem(stack); + player.sendMessage(plugin.getLang().getMessage("give", "info")); + } else{ + player.sendMessage(plugin.getLang().getMessage("nogive", "warn")); + } + } + private void commandSlot(Player player, String[] args) { + + if (args.length <= 1) { + player.sendMessage(plugin.getLang().getMessage("noslotnumcom", "warn")); + player.sendMessage(LISTSLOT); + } + + if (args.length > 1) { + try { + byte slot = (byte) (Byte.parseByte(args[1]) - 0b1); + if (slot >= 0 && slot < 9) { + plugin.log("Copying ArmorStand to slot: " + slot); + plugin.editorManager.getPlayerEditor(player.getUniqueId()).setCopySlot(slot); + } else { + player.sendMessage(LISTSLOT); + } + + } catch ( NumberFormatException nfe) { + player.sendMessage(LISTSLOT); + } + } + } + + private void commandAdj(Player player, String[] args) { + if (args.length <= 1) { + player.sendMessage(plugin.getLang().getMessage("noadjcom", "warn")); + player.sendMessage(LISTADJUSTMENT); + } + + if (args.length > 1) { + for ( AdjustmentMode adj : AdjustmentMode.values()) { + if (adj.toString().toLowerCase().contentEquals(args[1].toLowerCase())) { + plugin.log("Adjustment mode set to: " + adj); + plugin.editorManager.getPlayerEditor(player.getUniqueId()).setAdjMode(adj); + return; + } + } + player.sendMessage(LISTADJUSTMENT); + } + } + + private void commandAxis( Player player, String[] args) { + if (args.length <= 1) { + player.sendMessage(plugin.getLang().getMessage("noaxiscom", "warn")); + player.sendMessage(LISTAXIS); + } + + if (args.length > 1) { + for ( Axis axis : Axis.values()) { + if (axis.toString().toLowerCase().contentEquals(args[1].toLowerCase())) { + plugin.log("Axis set to: " + axis); + plugin.editorManager.getPlayerEditor(player.getUniqueId()).setAxis(axis); + return; + } + } + player.sendMessage(LISTAXIS); + } + } + + private void commandMode( Player player, String[] args) { + if (args.length <= 1) { + player.sendMessage(plugin.getLang().getMessage("nomodecom", "warn")); + player.sendMessage(LISTMODE); + } + + if (args.length > 1) { + for ( EditMode mode : EditMode.values()) { + if (mode.toString().toLowerCase().contentEquals(args[1].toLowerCase())) { + plugin.log("Argument 1 is: " + args[1].toLowerCase()); + if (args[1].equals("invisible") && !checkPermission(player, "armorstand.invisible", true)) return; + if (args[1].equals("itemframe") && !checkPermission(player, "itemframe.invisible", true)) return; + plugin.editorManager.getPlayerEditor(player.getUniqueId()).setMode(mode); + plugin.log("Mode set to '" + mode + "' for player '" + debugPlayerDisplayName + "'"); + return; + } + } + } + } + + private void commandHelp( Player player) { + plugin.log("Player '" + debugPlayerDisplayName + "' has ran the help command, closing Inventory"); + player.closeInventory(); + player.playSound(player.getLocation(), Sound.ENTITY_EXPERIENCE_ORB_PICKUP, 1f, 1f); + player.sendMessage(plugin.getLang().getMessage("help", "info", plugin.editTool.name())); + player.sendMessage(""); + player.sendMessage(plugin.getLang().getMessage("helptips", "info")); + player.sendMessage(""); + player.sendRawMessage(plugin.getLang().getMessage("helpurl", "")); + } + + private void commandUpdate(Player player) { + if(!(checkPermission(player, "update", true))) return; + plugin.log("Running the Built in UpdateChecker - Activated by '" + debugPlayerDisplayName + "'"); + UpdateChecker.getInstance().checkNow(player); + } + + private void commandVersion(Player player) { + if (!(checkPermission(player, "update", true))) return; + String verString = plugin.pdfFile.getVersion(); + plugin.log("Output of VerString: " + verString); + player.sendMessage(ChatColor.YELLOW + "[ArmorStandEditor] Version: " + verString); + UpdateChecker.getInstance().checkNow(player); + } + + + + private boolean checkPermission( Player player, String permName, boolean sendMessageOnInvalidation) { + if (permName.equalsIgnoreCase("paste")) { + permName = "copy"; + } + if (player.hasPermission("asedit." + permName.toLowerCase())) { + plugin.print("Player '"+ player.getDisplayName() +" has Permission: asedit." + permName.toLowerCase()); + return true; + } else { + if (sendMessageOnInvalidation) { + plugin.print("Player '"+ player.getDisplayName() +" does not have Permission: asedit." + permName.toLowerCase()); + player.sendMessage(plugin.getLang().getMessage("noperm", "warn")); + } + return false; + } + } } \ No newline at end of file diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditor.java b/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditor.java index b30dd0b5..dda1e01a 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditor.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditor.java @@ -19,8 +19,6 @@ package io.github.rypofalem.armorstandeditor; -import com.palmergames.bukkit.towny.TownyAPI; -import com.palmergames.bukkit.towny.event.executors.TownyActionEventExecutor; import io.github.rypofalem.armorstandeditor.menu.EquipmentMenu; import io.github.rypofalem.armorstandeditor.menu.Menu; import io.github.rypofalem.armorstandeditor.modes.AdjustmentMode; @@ -29,6 +27,7 @@ import io.github.rypofalem.armorstandeditor.modes.CopySlots; import io.github.rypofalem.armorstandeditor.modes.EditMode; + import java.util.ArrayList; import java.util.UUID; @@ -45,530 +44,523 @@ import org.bukkit.util.EulerAngle; public class PlayerEditor { - public ArmorStandEditorPlugin plugin; - Team team; - private UUID uuid; - UUID armorStandID; - EditMode eMode; - AdjustmentMode adjMode; - CopySlots copySlots; - Axis axis; - double eulerAngleChange; - double degreeAngleChange; - double movChange; - Menu chestMenu; - ArmorStand target; - ArrayList targetList = null; - - //NEW: ItemFrame Stuff - ItemFrame frameTarget; - ArrayList frameTargetList = null; - int targetIndex = 0; - int frameTargetIndex = 0; - EquipmentMenu equipMenu; - long lastCancelled = 0; - private boolean state; - - public PlayerEditor(UUID uuid, ArmorStandEditorPlugin plugin) { - this.uuid = uuid; - this.plugin = plugin; - eMode = EditMode.NONE; - adjMode = AdjustmentMode.COARSE; - axis = Axis.X; - copySlots = new CopySlots(); - eulerAngleChange = getManager().coarseAdj; - degreeAngleChange = eulerAngleChange / Math.PI * 180; - movChange = getManager().coarseMov; - chestMenu = new Menu(this); - } - - public void setMode(EditMode editMode) { - this.eMode = editMode; - sendMessage("setmode", editMode.toString().toLowerCase()); - } - - public void setAxis(Axis axis) { - this.axis = axis; - sendMessage("setaxis", axis.toString().toLowerCase()); - } - - public void setAdjMode(AdjustmentMode adjMode) { - this.adjMode = adjMode; - if (adjMode == AdjustmentMode.COARSE) { - eulerAngleChange = getManager().coarseAdj; - movChange = getManager().coarseMov; - } else { - eulerAngleChange = getManager().fineAdj; - movChange = getManager().fineMov; - } - degreeAngleChange = eulerAngleChange / Math.PI * 180; - sendMessage("setadj", adjMode.toString().toLowerCase()); - } - - public void setCopySlot(byte slot) { - copySlots.changeSlots(slot); - sendMessage("setslot", String.valueOf((slot + 1))); - } - - public void editArmorStand(ArmorStand armorStand) { - if (!getPlayer().hasPermission("asedit.basic")) return; - - //FIX for https://github.com/Wolfst0rm/ArmorStandEditor-Issues/issues/15 - if (plugin.getServer().getPluginManager().getPlugin("Towny") != null) { - if (TownyAPI.getInstance().isWilderness(getPlayer().getLocation())) return; - if (!TownyActionEventExecutor.canDestroy(getPlayer(), getPlayer().getLocation().getBlock().getLocation(), Material.ARMOR_STAND)) return; - } - - armorStand = attemptTarget(armorStand); - switch (eMode) { - case LEFTARM: - armorStand.setLeftArmPose(subEulerAngle(armorStand.getLeftArmPose())); - break; - case RIGHTARM: - armorStand.setRightArmPose(subEulerAngle(armorStand.getRightArmPose())); - break; - case BODY: - armorStand.setBodyPose(subEulerAngle(armorStand.getBodyPose())); - break; - case HEAD: - armorStand.setHeadPose(subEulerAngle(armorStand.getHeadPose())); - break; - case LEFTLEG: - armorStand.setLeftLegPose(subEulerAngle(armorStand.getLeftLegPose())); - break; - case RIGHTLEG: - armorStand.setRightLegPose(subEulerAngle(armorStand.getRightLegPose())); - break; - case SHOWARMS: - toggleArms(armorStand); - break; - case SIZE: - toggleSize(armorStand); - break; - case INVISIBLE: - toggleVisible(armorStand); - break; - case BASEPLATE: - togglePlate(armorStand); - break; - case GRAVITY: - toggleGravity(armorStand); - break; - case COPY: - copy(armorStand); - break; - case PASTE: - paste(armorStand); - break; - case PLACEMENT: - move(armorStand); - break; - case ROTATE: - rotate(armorStand); - break; - case DISABLESLOTS: - toggleDisableSlots(armorStand); - break; - case EQUIPMENT: - openEquipment(armorStand); - break; - case RESET: - resetPosition(armorStand); - break; - case NONE: - sendMessage("nomode", null); - break; - } - } - - public void editItemFrame(ItemFrame itemFrame) { - if (!getPlayer().hasPermission("asedit.itemframe.invisible") || !plugin.invisibleItemFrames) return; //Option to use perms or Config - switch (eMode) { - case ITEMFRAME: - toggleItemFrameVisible(itemFrame); - break; - case RESET: - itemFrame.setVisible(true); - case NONE: - sendMessage("nomodeif", null); - break; - } - } - - private void resetPosition(ArmorStand armorStand) { - armorStand.setHeadPose(new EulerAngle(0, 0, 0)); - armorStand.setBodyPose(new EulerAngle(0, 0, 0)); - armorStand.setLeftArmPose(new EulerAngle(0, 0, 0)); - armorStand.setRightArmPose(new EulerAngle(0, 0, 0)); - armorStand.setLeftLegPose(new EulerAngle(0, 0, 0)); - armorStand.setRightLegPose(new EulerAngle(0, 0, 0)); - } - - private void openEquipment(ArmorStand armorStand) { - if (!getPlayer().hasPermission("asedit.equipment")) return; - equipMenu = new EquipmentMenu(this, armorStand); - equipMenu.open(); - } - - public void reverseEditArmorStand(ArmorStand armorStand) { - if (!getPlayer().hasPermission("asedit.basic")) return; - //FIX for https://github.com/Wolfst0rm/ArmorStandEditor-Issues/issues/15 - Towny Support not working! - if (plugin.getServer().getPluginManager().getPlugin("Towny") != null) { - if (TownyAPI.getInstance().isWilderness(getPlayer().getLocation())) return; - if (!TownyActionEventExecutor.canDestroy(getPlayer(), getPlayer().getLocation().getBlock().getLocation(), Material.ARMOR_STAND)) return; - } - armorStand = attemptTarget(armorStand); - switch (eMode) { - case LEFTARM: - armorStand.setLeftArmPose(addEulerAngle(armorStand.getLeftArmPose())); - break; - case RIGHTARM: - armorStand.setRightArmPose(addEulerAngle(armorStand.getRightArmPose())); - break; - case BODY: - armorStand.setBodyPose(addEulerAngle(armorStand.getBodyPose())); - break; - case HEAD: - armorStand.setHeadPose(addEulerAngle(armorStand.getHeadPose())); - break; - case LEFTLEG: - armorStand.setLeftLegPose(addEulerAngle(armorStand.getLeftLegPose())); - break; - case RIGHTLEG: - armorStand.setRightLegPose(addEulerAngle(armorStand.getRightLegPose())); - break; - case PLACEMENT: - reverseMove(armorStand); - break; - case ROTATE: - reverseRotate(armorStand); - break; - default: - editArmorStand(armorStand); - } - } - - private void move(ArmorStand armorStand) { - Location loc = armorStand.getLocation(); - switch (axis) { - case X: - loc.add(movChange, 0, 0); - break; - case Y: - loc.add(0, movChange, 0); - break; - case Z: - loc.add(0, 0, movChange); - break; - } - armorStand.teleport(loc); - } - - private void reverseMove(ArmorStand armorStand) { - Location loc = armorStand.getLocation(); - switch (axis) { - case X: - loc.subtract(movChange, 0, 0); - break; - case Y: - loc.subtract(0, movChange, 0); - break; - case Z: - loc.subtract(0, 0, movChange); - break; - } - armorStand.teleport(loc); - } - - private void rotate(ArmorStand armorStand) { - Location loc = armorStand.getLocation(); - float yaw = loc.getYaw(); - loc.setYaw((yaw + 180 + (float) degreeAngleChange) % 360 - 180); - armorStand.teleport(loc); - } - - private void reverseRotate(ArmorStand armorStand) { - Location loc = armorStand.getLocation(); - float yaw = loc.getYaw(); - loc.setYaw((yaw + 180 - (float) degreeAngleChange) % 360 - 180); - armorStand.teleport(loc); - } - - private void copy(ArmorStand armorStand) { - copySlots.copyDataToSlot(armorStand); - sendMessage("copied", "" + (copySlots.currentSlot + 1)); - setMode(EditMode.PASTE); - } - - private void paste(ArmorStand armorStand) { - ArmorStandData data = copySlots.getDataToPaste(); - if (data == null) return; - armorStand.setHeadPose(data.headPos); - armorStand.setBodyPose(data.bodyPos); - armorStand.setLeftArmPose(data.leftArmPos); - armorStand.setRightArmPose(data.rightArmPos); - armorStand.setLeftLegPose(data.leftLegPos); - armorStand.setRightLegPose(data.rightLegPos); - armorStand.setSmall(data.size); - armorStand.setGravity(data.gravity); - armorStand.setBasePlate(data.basePlate); - armorStand.setArms(data.showArms); - armorStand.setVisible(data.visible); - if (this.getPlayer().getGameMode() == GameMode.CREATIVE) { - armorStand.getEquipment().setHelmet(data.head); - armorStand.getEquipment().setChestplate(data.body); - armorStand.getEquipment().setLeggings(data.legs); - armorStand.getEquipment().setBoots(data.feetsies); - armorStand.getEquipment().setItemInMainHand(data.rightHand); - armorStand.getEquipment().setItemInOffHand(data.leftHand); - } - sendMessage("pasted", "" + (copySlots.currentSlot + 1)); - } - - private void toggleDisableSlots(ArmorStand armorStand) { - if (!getPlayer().hasPermission("asedit.disableSlots")) return; - if (armorStand.hasEquipmentLock(EquipmentSlot.HAND, ArmorStand.LockType.REMOVING_OR_CHANGING)) { //Adds a lock to every slot or removes it - team = plugin.scoreboard.getTeam(plugin.lockedTeam); - armorStandID = armorStand.getUniqueId(); - - for (final EquipmentSlot slot : EquipmentSlot.values()) { // UNLOCKED - armorStand.removeEquipmentLock(slot, ArmorStand.LockType.REMOVING_OR_CHANGING); - armorStand.removeEquipmentLock(slot, ArmorStand.LockType.ADDING); - } - getPlayer().playSound(getPlayer().getLocation(), Sound.ENTITY_ITEM_BREAK, SoundCategory.PLAYERS, 1.0f, 1.0f); - - if(team != null) { - team.removeEntry(armorStandID.toString()); - armorStand.addPotionEffect(new PotionEffect(PotionEffectType.GLOWING, 50, 1, false, false)); //300 Ticks = 15 seconds - } - - - } else { - for (final EquipmentSlot slot : EquipmentSlot.values()) { //LOCKED - armorStand.addEquipmentLock(slot, ArmorStand.LockType.REMOVING_OR_CHANGING); - armorStand.addEquipmentLock(slot, ArmorStand.LockType.ADDING); - } - getPlayer().playSound(getPlayer().getLocation(), Sound.ITEM_ARMOR_EQUIP_IRON, SoundCategory.PLAYERS, 1.0f, 1.0f); - if(team != null) { - team.addEntry(armorStandID.toString()); - armorStand.addPotionEffect(new PotionEffect(PotionEffectType.GLOWING, 50, 1, false, false)); //300 Ticks = 15 seconds - } - } - - sendMessage("disabledslots", null); - - } - - private void toggleGravity(ArmorStand armorStand) { //Fix for Wolfst0rm/ArmorStandEditor-Issues#6: Translation of On/Off Keys are broken - armorStand.setGravity(!armorStand.hasGravity()); - sendMessage("setgravity", String.valueOf(armorStand.hasGravity())); - - } - - void togglePlate(ArmorStand armorStand) { - armorStand.setBasePlate(!armorStand.hasBasePlate()); - } - - void toggleArms(ArmorStand armorStand) { - armorStand.setArms(!armorStand.hasArms()); - } - - void toggleVisible(ArmorStand armorStand) { - if (!getPlayer().hasPermission("asedit.armorstand.invisible") || !plugin.armorStandVisibility) return; //Option to use perms or Config - armorStand.setVisible(!armorStand.isVisible()); - } - - void toggleItemFrameVisible(ItemFrame itemFrame) { - if (!getPlayer().hasPermission("asedit.itemframe.invisible") || !plugin.invisibleItemFrames) return; //Option to use perms or Config - itemFrame.setVisible(!itemFrame.isVisible()); - } - - void toggleSize(ArmorStand armorStand) { - armorStand.setSmall(!armorStand.isSmall()); - } - - void cycleAxis(int i) { - int index = axis.ordinal(); - index += i; - index = index % Axis.values().length; - while (index < 0) { - index += Axis.values().length; - } - setAxis(Axis.values()[index]); - } - - private EulerAngle addEulerAngle(EulerAngle angle) { - switch (axis) { - case X: - angle = angle.setX(Util.addAngle(angle.getX(), eulerAngleChange)); - break; - case Y: - angle = angle.setY(Util.addAngle(angle.getY(), eulerAngleChange)); - break; - case Z: - angle = angle.setZ(Util.addAngle(angle.getZ(), eulerAngleChange)); - break; - default: - break; - } - return angle; - } - - private EulerAngle subEulerAngle(EulerAngle angle) { - switch (axis) { - case X: - angle = angle.setX(Util.subAngle(angle.getX(), eulerAngleChange)); - break; - case Y: - angle = angle.setY(Util.subAngle(angle.getY(), eulerAngleChange)); - break; - case Z: - angle = angle.setZ(Util.subAngle(angle.getZ(), eulerAngleChange)); - break; - default: - break; - } - return angle; - } - - public void setTarget(ArrayList armorStands) { - if (armorStands == null || armorStands.isEmpty()) { - target = null; - targetList = null; - sendMessage("notarget", null); - //plugin.getServer().getLogger().info("ArmorStand Target Unlocked"); - } else { - - if (targetList == null) { - targetList = armorStands; - targetIndex = 0; - sendMessage("target", null); - //plugin.getServer().getLogger().info("ArmorStand Target Locked"); - } else { - boolean same = targetList.size() == armorStands.size(); - if (same) for (ArmorStand as : armorStands) { - same = targetList.contains(as); - if (!same) break; - } - - if (same) { - targetIndex = ++targetIndex % targetList.size(); - } else { - targetList = armorStands; - targetIndex = 0; - sendMessage("target", null); - //plugin.getServer().getLogger().info("ArmorStand Target Locked"); - } - } - target = targetList.get(targetIndex); - highlight(target); //NOTE: If Targeted and Locked, it displays the TEAM Color Glow: RED - // Otherwise, its unlocked and will display WHITE as its not in a team by default - - } - } - - - public void setFrameTarget(ArrayList itemFrames) { - if (itemFrames == null || itemFrames.isEmpty()) { - frameTarget = null; - frameTargetList = null; - sendMessage("noframetarget", null); - //plugin.getServer().getLogger().info("ItemFrame Target Unlocked"); - } else { - - if (frameTargetList == null) { - frameTargetList = itemFrames; - frameTargetIndex = 0; - sendMessage("frametarget", null); - //plugin.getServer().getLogger().info("ItemFrame Target Un;ocked"); - } else { - boolean same = frameTargetList.size() == itemFrames.size(); - if (same) for (final ItemFrame itemf : itemFrames) { - same = frameTargetList.contains(itemf); - if (!same) break; - } - - if (same) { - frameTargetIndex = ++frameTargetIndex % frameTargetList.size(); - } else { - frameTargetList = itemFrames; - frameTargetIndex = 0; - sendMessage("frametarget", null); - //plugin.getServer().getLogger().info("ItemFrame Target Locked"); - } - frameTarget = frameTargetList.get(frameTargetIndex); - } - } - } - - - - ArmorStand attemptTarget(ArmorStand armorStand) { - if (target == null - || !target.isValid() - || target.getWorld() != getPlayer().getWorld() - || target.getLocation().distanceSquared(getPlayer().getLocation()) > 100) - return armorStand; - armorStand = target; - return armorStand; - } - - void sendMessage(String path, String format, String option) { - String message = plugin.getLang().getMessage(path, format, option); - if (plugin.sendToActionBar) { - if (ArmorStandEditorPlugin.instance().hasSpigot || ArmorStandEditorPlugin.instance().hasPaper) { //Paper and Spigot having the same Interaction for sendToActionBar - plugin.getServer().getPlayer(getUUID()).spigot().sendMessage(ChatMessageType.ACTION_BAR, new TextComponent(message)); - } else { - String rawText = plugin.getLang().getRawMessage(path, format, option); - String command = String.format("title %s actionbar %s", plugin.getServer().getPlayer(getUUID()).getName(), rawText); - Bukkit.dispatchCommand(Bukkit.getConsoleSender(), command); - } - } else { - plugin.getServer().getPlayer(getUUID()).sendMessage(message); - } - } - - void sendMessage(String path, String option) { - sendMessage(path, "info", option); - } - - private void highlight(ArmorStand armorStand) { - armorStand.removePotionEffect(PotionEffectType.GLOWING); - armorStand.addPotionEffect(new PotionEffect(PotionEffectType.GLOWING, 50, 1, false, false)); //300 Ticks = 15 seconds - } - - public PlayerEditorManager getManager() { - return plugin.editorManager; - } - - public Player getPlayer() { - return plugin.getServer().getPlayer(getUUID()); - } - - public UUID getUUID() { - return uuid; - } - - public void openMenu() { - if (!isMenuCancelled()) { - plugin.getServer().getScheduler().runTaskLater(plugin, new OpenMenuTask(), 1).getTaskId(); - } - } - - public void cancelOpenMenu() { - lastCancelled = getManager().getTime(); - } - - boolean isMenuCancelled() { - return getManager().getTime() - lastCancelled < 2; - } - - private class OpenMenuTask implements Runnable { - - @Override - public void run() { - if (isMenuCancelled()) return; - chestMenu.openMenu(); - } - } + public ArmorStandEditorPlugin plugin; + Team team; + private UUID uuid; + UUID armorStandID; + EditMode eMode; + AdjustmentMode adjMode; + CopySlots copySlots; + Axis axis; + double eulerAngleChange; + double degreeAngleChange; + double movChange; + Menu chestMenu; + ArmorStand target; + ArrayList targetList = null; + + //NEW: ItemFrame Stuff + ItemFrame frameTarget; + ArrayList frameTargetList = null; + int targetIndex = 0; + int frameTargetIndex = 0; + EquipmentMenu equipMenu; + long lastCancelled = 0; + private boolean state; + + public PlayerEditor(UUID uuid, ArmorStandEditorPlugin plugin) { + this.uuid = uuid; + this.plugin = plugin; + eMode = EditMode.NONE; + adjMode = AdjustmentMode.COARSE; + axis = Axis.X; + copySlots = new CopySlots(); + eulerAngleChange = getManager().coarseAdj; + degreeAngleChange = eulerAngleChange / Math.PI * 180; + movChange = getManager().coarseMov; + chestMenu = new Menu(this); + } + + public void setMode(EditMode editMode) { + this.eMode = editMode; + sendMessage("setmode", editMode.toString().toLowerCase()); + } + + public void setAxis(Axis axis) { + this.axis = axis; + sendMessage("setaxis", axis.toString().toLowerCase()); + } + + public void setAdjMode(AdjustmentMode adjMode) { + this.adjMode = adjMode; + if (adjMode == AdjustmentMode.COARSE) { + eulerAngleChange = getManager().coarseAdj; + movChange = getManager().coarseMov; + } else { + eulerAngleChange = getManager().fineAdj; + movChange = getManager().fineMov; + } + degreeAngleChange = eulerAngleChange / Math.PI * 180; + sendMessage("setadj", adjMode.toString().toLowerCase()); + } + + public void setCopySlot(byte slot) { + copySlots.changeSlots(slot); + sendMessage("setslot", String.valueOf((slot + 1))); + } + + public void editArmorStand(ArmorStand armorStand) { + if (!getPlayer().hasPermission("asedit.basic")) return; + + armorStand = attemptTarget(armorStand); + switch (eMode) { + case LEFTARM: + armorStand.setLeftArmPose(subEulerAngle(armorStand.getLeftArmPose())); + break; + case RIGHTARM: + armorStand.setRightArmPose(subEulerAngle(armorStand.getRightArmPose())); + break; + case BODY: + armorStand.setBodyPose(subEulerAngle(armorStand.getBodyPose())); + break; + case HEAD: + armorStand.setHeadPose(subEulerAngle(armorStand.getHeadPose())); + break; + case LEFTLEG: + armorStand.setLeftLegPose(subEulerAngle(armorStand.getLeftLegPose())); + break; + case RIGHTLEG: + armorStand.setRightLegPose(subEulerAngle(armorStand.getRightLegPose())); + break; + case SHOWARMS: + toggleArms(armorStand); + break; + case SIZE: + toggleSize(armorStand); + break; + case INVISIBLE: + toggleVisible(armorStand); + break; + case BASEPLATE: + togglePlate(armorStand); + break; + case GRAVITY: + toggleGravity(armorStand); + break; + case COPY: + copy(armorStand); + break; + case PASTE: + paste(armorStand); + break; + case PLACEMENT: + move(armorStand); + break; + case ROTATE: + rotate(armorStand); + break; + case DISABLESLOTS: + toggleDisableSlots(armorStand); + break; + case EQUIPMENT: + openEquipment(armorStand); + break; + case RESET: + resetPosition(armorStand); + break; + case NONE: + sendMessage("nomode", null); + break; + } + } + + public void editItemFrame(ItemFrame itemFrame) { + if (!getPlayer().hasPermission("asedit.itemframe.invisible") || !plugin.invisibleItemFrames) return; //Option to use perms or Config + switch (eMode) { + case ITEMFRAME: + toggleItemFrameVisible(itemFrame); + break; + case RESET: + itemFrame.setVisible(true); + case NONE: + sendMessage("nomodeif", null); + break; + } + } + + private void resetPosition(ArmorStand armorStand) { + armorStand.setHeadPose(new EulerAngle(0, 0, 0)); + armorStand.setBodyPose(new EulerAngle(0, 0, 0)); + armorStand.setLeftArmPose(new EulerAngle(0, 0, 0)); + armorStand.setRightArmPose(new EulerAngle(0, 0, 0)); + armorStand.setLeftLegPose(new EulerAngle(0, 0, 0)); + armorStand.setRightLegPose(new EulerAngle(0, 0, 0)); + } + + private void openEquipment(ArmorStand armorStand) { + if (!getPlayer().hasPermission("asedit.equipment")) return; + equipMenu = new EquipmentMenu(this, armorStand); + equipMenu.open(); + } + + public void reverseEditArmorStand(ArmorStand armorStand) { + if (!getPlayer().hasPermission("asedit.basic")) return; + + armorStand = attemptTarget(armorStand); + switch (eMode) { + case LEFTARM: + armorStand.setLeftArmPose(addEulerAngle(armorStand.getLeftArmPose())); + break; + case RIGHTARM: + armorStand.setRightArmPose(addEulerAngle(armorStand.getRightArmPose())); + break; + case BODY: + armorStand.setBodyPose(addEulerAngle(armorStand.getBodyPose())); + break; + case HEAD: + armorStand.setHeadPose(addEulerAngle(armorStand.getHeadPose())); + break; + case LEFTLEG: + armorStand.setLeftLegPose(addEulerAngle(armorStand.getLeftLegPose())); + break; + case RIGHTLEG: + armorStand.setRightLegPose(addEulerAngle(armorStand.getRightLegPose())); + break; + case PLACEMENT: + reverseMove(armorStand); + break; + case ROTATE: + reverseRotate(armorStand); + break; + default: + editArmorStand(armorStand); + } + } + + private void move(ArmorStand armorStand) { + Location loc = armorStand.getLocation(); + switch (axis) { + case X: + loc.add(movChange, 0, 0); + break; + case Y: + loc.add(0, movChange, 0); + break; + case Z: + loc.add(0, 0, movChange); + break; + } + armorStand.teleport(loc); + } + + private void reverseMove(ArmorStand armorStand) { + Location loc = armorStand.getLocation(); + switch (axis) { + case X: + loc.subtract(movChange, 0, 0); + break; + case Y: + loc.subtract(0, movChange, 0); + break; + case Z: + loc.subtract(0, 0, movChange); + break; + } + armorStand.teleport(loc); + } + + private void rotate(ArmorStand armorStand) { + Location loc = armorStand.getLocation(); + float yaw = loc.getYaw(); + loc.setYaw((yaw + 180 + (float) degreeAngleChange) % 360 - 180); + armorStand.teleport(loc); + } + + private void reverseRotate(ArmorStand armorStand) { + Location loc = armorStand.getLocation(); + float yaw = loc.getYaw(); + loc.setYaw((yaw + 180 - (float) degreeAngleChange) % 360 - 180); + armorStand.teleport(loc); + } + + private void copy(ArmorStand armorStand) { + copySlots.copyDataToSlot(armorStand); + sendMessage("copied", "" + (copySlots.currentSlot + 1)); + setMode(EditMode.PASTE); + } + + private void paste(ArmorStand armorStand) { + ArmorStandData data = copySlots.getDataToPaste(); + if (data == null) return; + armorStand.setHeadPose(data.headPos); + armorStand.setBodyPose(data.bodyPos); + armorStand.setLeftArmPose(data.leftArmPos); + armorStand.setRightArmPose(data.rightArmPos); + armorStand.setLeftLegPose(data.leftLegPos); + armorStand.setRightLegPose(data.rightLegPos); + armorStand.setSmall(data.size); + armorStand.setGravity(data.gravity); + armorStand.setBasePlate(data.basePlate); + armorStand.setArms(data.showArms); + armorStand.setVisible(data.visible); + if (this.getPlayer().getGameMode() == GameMode.CREATIVE) { + armorStand.getEquipment().setHelmet(data.head); + armorStand.getEquipment().setChestplate(data.body); + armorStand.getEquipment().setLeggings(data.legs); + armorStand.getEquipment().setBoots(data.feetsies); + armorStand.getEquipment().setItemInMainHand(data.rightHand); + armorStand.getEquipment().setItemInOffHand(data.leftHand); + } + sendMessage("pasted", "" + (copySlots.currentSlot + 1)); + } + + private void toggleDisableSlots(ArmorStand armorStand) { + if (!getPlayer().hasPermission("asedit.disableSlots")) return; + if (armorStand.hasEquipmentLock(EquipmentSlot.HAND, ArmorStand.LockType.REMOVING_OR_CHANGING)) { //Adds a lock to every slot or removes it + team = plugin.scoreboard.getTeam(plugin.lockedTeam); + armorStandID = armorStand.getUniqueId(); + + for (final EquipmentSlot slot : EquipmentSlot.values()) { // UNLOCKED + armorStand.removeEquipmentLock(slot, ArmorStand.LockType.REMOVING_OR_CHANGING); + armorStand.removeEquipmentLock(slot, ArmorStand.LockType.ADDING); + } + getPlayer().playSound(getPlayer().getLocation(), Sound.ENTITY_ITEM_BREAK, SoundCategory.PLAYERS, 1.0f, 1.0f); + + if(team != null) { + team.removeEntry(armorStandID.toString()); + armorStand.addPotionEffect(new PotionEffect(PotionEffectType.GLOWING, 50, 1, false, false)); //300 Ticks = 15 seconds + } + + + } else { + for (final EquipmentSlot slot : EquipmentSlot.values()) { //LOCKED + armorStand.addEquipmentLock(slot, ArmorStand.LockType.REMOVING_OR_CHANGING); + armorStand.addEquipmentLock(slot, ArmorStand.LockType.ADDING); + } + getPlayer().playSound(getPlayer().getLocation(), Sound.ITEM_ARMOR_EQUIP_IRON, SoundCategory.PLAYERS, 1.0f, 1.0f); + if(team != null) { + team.addEntry(armorStandID.toString()); + armorStand.addPotionEffect(new PotionEffect(PotionEffectType.GLOWING, 50, 1, false, false)); //300 Ticks = 15 seconds + } + } + + sendMessage("disabledslots", null); + + } + + private void toggleGravity(ArmorStand armorStand) { //Fix for Wolfst0rm/ArmorStandEditor-Issues#6: Translation of On/Off Keys are broken + armorStand.setGravity(!armorStand.hasGravity()); + sendMessage("setgravity", String.valueOf(armorStand.hasGravity())); + + } + + void togglePlate(ArmorStand armorStand) { + armorStand.setBasePlate(!armorStand.hasBasePlate()); + } + + void toggleArms(ArmorStand armorStand) { + armorStand.setArms(!armorStand.hasArms()); + } + + void toggleVisible(ArmorStand armorStand) { + if (!getPlayer().hasPermission("asedit.armorstand.invisible") || !plugin.armorStandVisibility) return; //Option to use perms or Config + String asLoc = armorStand.getLocation().toString(); + String result = String.valueOf(!armorStand.isVisible()); + plugin.log("Player (" + getPlayer().getDisplayName() + ") has made the ArmorStand at " + asLoc + " " + result); + armorStand.setVisible(!armorStand.isVisible()); + } + + void toggleItemFrameVisible(ItemFrame itemFrame) { + if (!getPlayer().hasPermission("asedit.itemframe.invisible") || !plugin.invisibleItemFrames) return; //Option to use perms or Config + itemFrame.setVisible(!itemFrame.isVisible()); + } + + void toggleSize(ArmorStand armorStand) { + armorStand.setSmall(!armorStand.isSmall()); + } + + void cycleAxis(int i) { + int index = axis.ordinal(); + index += i; + index = index % Axis.values().length; + while (index < 0) { + index += Axis.values().length; + } + setAxis(Axis.values()[index]); + } + + private EulerAngle addEulerAngle(EulerAngle angle) { + switch (axis) { + case X: + angle = angle.setX(Util.addAngle(angle.getX(), eulerAngleChange)); + break; + case Y: + angle = angle.setY(Util.addAngle(angle.getY(), eulerAngleChange)); + break; + case Z: + angle = angle.setZ(Util.addAngle(angle.getZ(), eulerAngleChange)); + break; + default: + break; + } + return angle; + } + + private EulerAngle subEulerAngle(EulerAngle angle) { + switch (axis) { + case X: + angle = angle.setX(Util.subAngle(angle.getX(), eulerAngleChange)); + break; + case Y: + angle = angle.setY(Util.subAngle(angle.getY(), eulerAngleChange)); + break; + case Z: + angle = angle.setZ(Util.subAngle(angle.getZ(), eulerAngleChange)); + break; + default: + break; + } + return angle; + } + + public void setTarget(ArrayList armorStands) { + if (armorStands == null || armorStands.isEmpty()) { + target = null; + targetList = null; + sendMessage("notarget", null); + plugin.log("ArmorStand targeted: UNLOCKED"); + } else { + + if (targetList == null) { + targetList = armorStands; + targetIndex = 0; + sendMessage("target", null); + plugin.log("ArmorStand targeted: UNLOCKED"); + } else { + boolean same = targetList.size() == armorStands.size(); + if (same) for (ArmorStand as : armorStands) { + same = targetList.contains(as); + if (!same) break; + } + + if (same) { + targetIndex = ++targetIndex % targetList.size(); + } else { + targetList = armorStands; + targetIndex = 0; + sendMessage("target", null); + plugin.log("ArmorStand targeted: LOCKED"); + } + } + target = targetList.get(targetIndex); + highlight(target); //NOTE: If Targeted and Locked, it displays the TEAM Color Glow: RED + // Otherwise, its unlocked and will display WHITE as its not in a team by default + + } + } + + + public void setFrameTarget(ArrayList itemFrames) { + if (itemFrames == null || itemFrames.isEmpty()) { + frameTarget = null; + frameTargetList = null; + sendMessage("noframetarget", null); + plugin.log("ItemFrame targeted: UNLOCKED"); + } else { + + if (frameTargetList == null) { + frameTargetList = itemFrames; + frameTargetIndex = 0; + sendMessage("frametarget", null); + plugin.log("ItemFrame targeted: UNLOCKED"); + } else { + boolean same = frameTargetList.size() == itemFrames.size(); + if (same) for (final ItemFrame itemf : itemFrames) { + same = frameTargetList.contains(itemf); + if (!same) break; + } + + if (same) { + frameTargetIndex = ++frameTargetIndex % frameTargetList.size(); + } else { + frameTargetList = itemFrames; + frameTargetIndex = 0; + sendMessage("frametarget", null); + plugin.log("ItemFrame targeted: LOCKED"); + } + frameTarget = frameTargetList.get(frameTargetIndex); + } + } + } + + + + ArmorStand attemptTarget(ArmorStand armorStand) { + if (target == null + || !target.isValid() + || target.getWorld() != getPlayer().getWorld() + || target.getLocation().distanceSquared(getPlayer().getLocation()) > 100) + return armorStand; + armorStand = target; + return armorStand; + } + + void sendMessage(String path, String format, String option) { + String message = plugin.getLang().getMessage(path, format, option); + if (plugin.sendToActionBar) { + if (ArmorStandEditorPlugin.instance().hasSpigot || ArmorStandEditorPlugin.instance().hasPaper) { //Paper and Spigot having the same Interaction for sendToActionBar + plugin.getServer().getPlayer(getUUID()).spigot().sendMessage(ChatMessageType.ACTION_BAR, new TextComponent(message)); + } else { + String rawText = plugin.getLang().getRawMessage(path, format, option); + String command = String.format("title %s actionbar %s", plugin.getServer().getPlayer(getUUID()).getName(), rawText); + Bukkit.dispatchCommand(Bukkit.getConsoleSender(), command); + } + } else { + plugin.getServer().getPlayer(getUUID()).sendMessage(message); + } + } + + void sendMessage(String path, String option) { + sendMessage(path, "info", option); + } + + private void highlight(ArmorStand armorStand) { + armorStand.removePotionEffect(PotionEffectType.GLOWING); + armorStand.addPotionEffect(new PotionEffect(PotionEffectType.GLOWING, 50, 1, false, false)); //300 Ticks = 15 seconds + } + + public PlayerEditorManager getManager() { + return plugin.editorManager; + } + + public Player getPlayer() { + return plugin.getServer().getPlayer(getUUID()); + } + + public UUID getUUID() { + return uuid; + } + + public void openMenu() { + if (!isMenuCancelled()) { + plugin.getServer().getScheduler().runTaskLater(plugin, new OpenMenuTask(), 1).getTaskId(); + } + } + + public void cancelOpenMenu() { + lastCancelled = getManager().getTime(); + } + + boolean isMenuCancelled() { + return getManager().getTime() - lastCancelled < 2; + } + + private class OpenMenuTask implements Runnable { + + @Override + public void run() { + if (isMenuCancelled()) return; + chestMenu.openMenu(); + } + } } diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditorManager.java b/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditorManager.java index 7faaa9ba..ebacce2d 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditorManager.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditorManager.java @@ -20,7 +20,10 @@ package io.github.rypofalem.armorstandeditor; import io.github.rypofalem.armorstandeditor.menu.ASEHolder; +import io.github.rypofalem.armorstandeditor.protections.*; +import me.ryanhamshire.GriefPrevention.GriefPrevention; import org.bukkit.*; +import org.bukkit.block.Block; import org.bukkit.block.BlockFace; import org.bukkit.entity.*; import org.bukkit.event.*; @@ -41,407 +44,405 @@ //Manages PlayerEditors and Player Events related to editing armorstands public class PlayerEditorManager implements Listener { - private ArmorStandEditorPlugin plugin; - private HashMap players; - private ASEHolder menuHolder = new ASEHolder(); //Inventory holder that owns the main ase menu inventories for the plugin - private ASEHolder equipmentHolder = new ASEHolder(); //Inventory holder that owns the equipment menu - double coarseAdj; - double fineAdj; - double coarseMov; - double fineMov; - private boolean ignoreNextInteract = false; - private TickCounter counter; - private ArrayList as = null; - private ArrayList itemF = null; - - - PlayerEditorManager( ArmorStandEditorPlugin plugin) { - this.plugin = plugin; - players = new HashMap<>(); - coarseAdj = Util.FULLCIRCLE / plugin.coarseRot; - fineAdj = Util.FULLCIRCLE / plugin.fineRot; - coarseMov = 1; - fineMov = .03125; // 1/32 - counter = new TickCounter(); - Bukkit.getServer().getScheduler().runTaskTimer(plugin, counter, 0, 1); - } - - @EventHandler(priority = EventPriority.LOWEST) - void onArmorStandDamage( EntityDamageByEntityEvent event) { - if (!(event.getDamager() instanceof Player)) return; - Player player = (Player) event.getDamager(); - if (!plugin.isEditTool(player.getInventory().getItemInMainHand())) return; - if (!((event.getEntity() instanceof ArmorStand) || event.getEntity() instanceof ItemFrame)) { - event.setCancelled(true); - getPlayerEditor(player.getUniqueId()).openMenu(); - return; - } - if (event.getEntity() instanceof ArmorStand) { - ArmorStand as = (ArmorStand) event.getEntity(); - getPlayerEditor(player.getUniqueId()).cancelOpenMenu(); - event.setCancelled(true); - if (canEdit(player, as)) applyLeftTool(player, as); - } else if (event.getEntity() instanceof ItemFrame) { - ItemFrame itemf = (ItemFrame) event.getEntity(); - getPlayerEditor(player.getUniqueId()).cancelOpenMenu(); - event.setCancelled(true); - if (canEdit(player, itemf)) applyLeftTool(player, itemf); - } - } - - @EventHandler(priority = EventPriority.LOWEST) - void onArmorStandInteract( PlayerInteractAtEntityEvent event) { - if (ignoreNextInteract) return; - if (event.getHand() != EquipmentSlot.HAND) return; - Player player = event.getPlayer(); - if (!((event.getRightClicked() instanceof ArmorStand) || event.getRightClicked() instanceof ItemFrame)) return; - - if (event.getRightClicked() instanceof ArmorStand) { - ArmorStand as = (ArmorStand) event.getRightClicked(); - - if (!canEdit(player, as)) return; - if (plugin.isEditTool(player.getInventory().getItemInMainHand())) { - getPlayerEditor(player.getUniqueId()).cancelOpenMenu(); - event.setCancelled(true); - applyRightTool(player, as); - return; - } - - - //Attempt rename - if (player.getInventory().getItemInMainHand().getType() == Material.NAME_TAG && player.hasPermission("asedit.rename")) { - ItemStack nameTag = player.getInventory().getItemInMainHand(); - String name; - if (nameTag.getItemMeta() != null && nameTag.getItemMeta().hasDisplayName()) { - name = nameTag.getItemMeta().getDisplayName().replace('&', ChatColor.COLOR_CHAR); - } else { - name = null; - } - - if (name == null) { - as.setCustomName(null); - as.setCustomNameVisible(false); - event.setCancelled(true); - } else if (!name.equals("")) { // nametag is not blank - event.setCancelled(true); - - if ((player.getGameMode() != GameMode.CREATIVE)) { - if (nameTag.getAmount() > 1) { - nameTag.setAmount(nameTag.getAmount() - 1); - } else { - nameTag = new ItemStack(Material.AIR); - } - player.getInventory().setItemInMainHand(nameTag); - } - - //minecraft will set the name after this event even if the event is cancelled. - //change it 1 tick later to apply formatting without it being overwritten - Bukkit.getScheduler().runTaskLater(plugin, () -> { - as.setCustomName(name); - as.setCustomNameVisible(true); - }, 1); - } - } - } else if (event.getRightClicked() instanceof ItemFrame) { - ItemFrame itemFrame = (ItemFrame) event.getRightClicked(); - - if (!canEdit(player, itemFrame)) return; - if (plugin.isEditTool(player.getInventory().getItemInMainHand())) { - getPlayerEditor(player.getUniqueId()).cancelOpenMenu(); - if (!itemFrame.getItem().getType().equals(Material.AIR)) { - event.setCancelled(true); - } - applyRightTool(player, itemFrame); - return; - } - - if (player.getInventory().getItemInMainHand().getType().equals(Material.GLOW_INK_SAC) //attempt glowing - && player.hasPermission("asedit.basic") - && plugin.glowItemFrames && player.isSneaking()) { - ItemStack glowSacs = player.getInventory().getItemInMainHand(); - ItemStack contents = null; - Rotation rotation = null; - if (itemFrame.getItem().getType() != Material.AIR) { - contents = itemFrame.getItem(); //save item - rotation = itemFrame.getRotation(); // save item rotation - } - Location itemFrameLocation = itemFrame.getLocation(); - BlockFace facing = itemFrame.getFacing(); - - if (player.getGameMode() != GameMode.CREATIVE) { - if (glowSacs.getAmount() > 1) { - glowSacs.setAmount(glowSacs.getAmount() - 1); - } else glowSacs = new ItemStack(Material.AIR); - } - - itemFrame.remove(); - GlowItemFrame glowFrame = (GlowItemFrame) player.getWorld().spawnEntity(itemFrameLocation, EntityType.GLOW_ITEM_FRAME); - glowFrame.setFacingDirection(facing); - if (contents != null) { - glowFrame.setItem(contents); - glowFrame.setRotation(rotation); - } - - } - } - } - - @EventHandler(priority = EventPriority.LOW, ignoreCancelled = true) - public void onSwitchHands(PlayerSwapHandItemsEvent event) { - if (!plugin.isEditTool(event.getOffHandItem())) return; //event assumes they are already switched - event.setCancelled(true); - Player player = event.getPlayer(); - - as = getTargets(player); //Get All ArmorStand closest to player - itemF = getFrameTargets(player); //Get ItemFrame Closest to Player - - //Check - if(!(as.isEmpty()) && itemF.isEmpty()) { - getPlayerEditor(player.getUniqueId()).setTarget(as); - } else if(!(itemF.isEmpty()) && as.isEmpty()) { - getPlayerEditor(player.getUniqueId()).setFrameTarget(itemF); - } else if (!(itemF.isEmpty()) && !(as.isEmpty())) { - getPlayerEditor(player.getUniqueId()).sendMessage("doubletarget", "warn"); - } else { - getPlayerEditor(player.getUniqueId()).setTarget(null); - getPlayerEditor(player.getUniqueId()).setFrameTarget(null); - } - - } - - private ArrayList getTargets(Player player) { - Location eyeLaser = player.getEyeLocation(); - Vector direction = player.getLocation().getDirection(); - ArrayList armorStands = new ArrayList<>(); - - double STEPSIZE = .5; - Vector STEP = direction.multiply(STEPSIZE); - double RANGE = 10; - double LASERRADIUS = .3; - List nearbyEntities = player.getNearbyEntities(RANGE, RANGE, RANGE); - if (nearbyEntities.isEmpty()) return null; - - for (double i = 0; i < RANGE; i += STEPSIZE) { - List nearby = (List) player.getWorld().getNearbyEntities(eyeLaser, LASERRADIUS, LASERRADIUS, LASERRADIUS); - if (!nearby.isEmpty()) { - boolean endLaser = false; - for ( Entity e : nearby) { - if (e instanceof ArmorStand) { - if (canEdit(player, (ArmorStand) e)) { - armorStands.add((ArmorStand) e); - endLaser = true; - } - } - } - if (endLaser) break; - } - if (eyeLaser.getBlock().getType().isSolid()) break; - eyeLaser.add(STEP); - } - return armorStands; - } - - private ArrayList getFrameTargets(Player player) { - Location eyeLaser = player.getEyeLocation(); - Vector direction = player.getLocation().getDirection(); - ArrayList itemFrames = new ArrayList<>(); - - double STEPSIZE = .5; - Vector STEP = direction.multiply(STEPSIZE); - double RANGE = 10; - double LASERRADIUS = .3; - List nearbyEntities = player.getNearbyEntities(RANGE, RANGE, RANGE); - if (nearbyEntities.isEmpty()) return null; - - for (double i = 0; i < RANGE; i += STEPSIZE) { - List nearby = (List) player.getWorld().getNearbyEntities(eyeLaser, LASERRADIUS, LASERRADIUS, LASERRADIUS); - if (!nearby.isEmpty()) { - boolean endLaser = false; - for ( Entity e : nearby) { - if (e instanceof ItemFrame) { - if (canEdit(player, (ItemFrame) e)) { - itemFrames.add((ItemFrame) e); - endLaser = true; - } - } - } - if (endLaser) break; - } - if (eyeLaser.getBlock().getType().isSolid()) break; - eyeLaser.add(STEP); - } - - return itemFrames; - } - - boolean canEdit( Player player, ArmorStand as) { - ignoreNextInteract = true; - ArrayList events = new ArrayList<>(); - //events.add(new PlayerInteractEntityEvent(player, as, EquipmentSlot.HAND)); - //events.add(new PlayerInteractAtEntityEvent(player, as, as.getLocation().toVector(), EquipmentSlot.HAND)); //FIX for Issue RypoFalem/ArmorStandEditor #48: PlayerInteractAtEntityEvent - //events.add(new PlayerArmorStandManipulateEvent(player, as, player.getEquipment().getItemInMainHand(), as.getItemInHand(), EquipmentSlot.HAND)); - for ( Event event : events) { - if (!(event instanceof Cancellable)) continue; - try { - plugin.getServer().getPluginManager().callEvent(event); - } catch ( IllegalStateException ise) { - ise.printStackTrace(); - ignoreNextInteract = false; - return false; //Something went wrong, don't allow edit just in case - } - if (((Cancellable) event).isCancelled()) { - ignoreNextInteract = false; - return false; - } - } - ignoreNextInteract = false; - return true; - } - - boolean canEdit( Player player, ItemFrame itemf) { - ignoreNextInteract = true; - ArrayList events = new ArrayList<>(); - //events.add(new PlayerInteractEntityEvent(player, itemf, EquipmentSlot.HAND)); - //events.add(new PlayerInteractAtEntityEvent(player, itemf, itemf.getLocation().toVector(), EquipmentSlot.HAND)); - //events.add(new PlayerArmorStandManipulateEvent(player, as, player.getEquipment().getItemInMainHand(), as.getItemInHand(), EquipmentSlot.HAND)); - for ( Event event : events) { - if (!(event instanceof Cancellable)) continue; - try { - plugin.getServer().getPluginManager().callEvent(event); - } catch ( IllegalStateException ise) { - ise.printStackTrace(); - ignoreNextInteract = false; - return false; //Something went wrong, don't allow edit just in case - } - if (((Cancellable) event).isCancelled()) { - ignoreNextInteract = false; - return false; - } - } - ignoreNextInteract = false; - return true; - } - - void applyLeftTool( Player player, ArmorStand as) { - getPlayerEditor(player.getUniqueId()).cancelOpenMenu(); - getPlayerEditor(player.getUniqueId()).editArmorStand(as); - } - - void applyLeftTool( Player player, ItemFrame itemf) { - getPlayerEditor(player.getUniqueId()).cancelOpenMenu(); - getPlayerEditor(player.getUniqueId()).editItemFrame(itemf); - } - - void applyRightTool( Player player, ItemFrame itemf) { - getPlayerEditor(player.getUniqueId()).cancelOpenMenu(); - getPlayerEditor(player.getUniqueId()).editItemFrame(itemf); - } - - void applyRightTool( Player player, ArmorStand as) { - getPlayerEditor(player.getUniqueId()).cancelOpenMenu(); - getPlayerEditor(player.getUniqueId()).reverseEditArmorStand(as); - } - - //Unused? - @EventHandler(priority = EventPriority.LOWEST) - void onRightClickTool( PlayerInteractEvent e) { - if (!(e.getAction() == Action.LEFT_CLICK_AIR - || e.getAction() == Action.RIGHT_CLICK_AIR - || e.getAction() == Action.LEFT_CLICK_BLOCK - || e.getAction() == Action.RIGHT_CLICK_BLOCK)) return; - Player player = e.getPlayer(); - if (!plugin.isEditTool(player.getInventory().getItemInMainHand())) return; - if (plugin.requireSneaking && !player.isSneaking()) return; - if(!player.hasPermission("asedit.basic")) return; - e.setCancelled(true); - getPlayerEditor(player.getUniqueId()).openMenu(); - } - - @EventHandler(priority = EventPriority.NORMAL) - void onScrollNCrouch( PlayerItemHeldEvent e) { - Player player = e.getPlayer(); - if (!player.isSneaking()) return; - if (!plugin.isEditTool(player.getInventory().getItem(e.getPreviousSlot()))) return; - - e.setCancelled(true); - if (e.getNewSlot() == e.getPreviousSlot() + 1 || (e.getNewSlot() == 0 && e.getPreviousSlot() == 8)) { - getPlayerEditor(player.getUniqueId()).cycleAxis(1); - } else if (e.getNewSlot() == e.getPreviousSlot() - 1 || (e.getNewSlot() == 8 && e.getPreviousSlot() == 0)) { - getPlayerEditor(player.getUniqueId()).cycleAxis(-1); - } - } - - @EventHandler(priority = EventPriority.LOWEST) - void onPlayerMenuSelect( InventoryClickEvent e) { - if (e.getInventory().getHolder() == null) return; - if (!(e.getInventory().getHolder() instanceof ASEHolder)) return; - if (e.getInventory().getHolder() == menuHolder) { - e.setCancelled(true); - ItemStack item = e.getCurrentItem(); - if (item != null && item.hasItemMeta()) { - Player player = (Player) e.getWhoClicked(); - String command = item.getItemMeta().getPersistentDataContainer().get(plugin.getIconKey(), PersistentDataType.STRING); - if (command != null) { - player.performCommand(command); - return; - } - } - } - if (e.getInventory().getHolder() == equipmentHolder) { - ItemStack item = e.getCurrentItem(); - if (item == null) return; - if (item.getItemMeta() == null) return; - if (item.getItemMeta().getPersistentDataContainer().has(plugin.getIconKey(), PersistentDataType.STRING)) { - e.setCancelled(true); - } - } - } - - @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true) - void onPlayerMenuClose( InventoryCloseEvent e) { - if (e.getInventory().getHolder() == null) return; - if (!(e.getInventory().getHolder() instanceof ASEHolder)) return; - if (e.getInventory().getHolder() == equipmentHolder) { - PlayerEditor pe = players.get(e.getPlayer().getUniqueId()); - pe.equipMenu.equipArmorstand(); - } - } - - @EventHandler(priority = EventPriority.MONITOR) - void onPlayerLogOut( PlayerQuitEvent e) { - removePlayerEditor(e.getPlayer().getUniqueId()); - } - - public PlayerEditor getPlayerEditor( UUID uuid) { - return players.containsKey(uuid) ? players.get(uuid) : addPlayerEditor(uuid); - } - - PlayerEditor addPlayerEditor( UUID uuid) { - PlayerEditor pe = new PlayerEditor(uuid, plugin); - players.put(uuid, pe); - return pe; - } - - private void removePlayerEditor( UUID uuid) { - players.remove(uuid); - } - - public ASEHolder getMenuHolder() { - return menuHolder; - } - - public ASEHolder getEquipmentHolder() { - return equipmentHolder; - } - - long getTime(){ - return counter.ticks; - } - - class TickCounter implements Runnable{ - long ticks = 0; //I am optimistic - @Override - public void run() {ticks++;} - public long getTime() {return ticks;} - } + private ArmorStandEditorPlugin plugin; + private HashMap players; + private ASEHolder menuHolder = new ASEHolder(); //Inventory holder that owns the main ase menu inventories for the plugin + private ASEHolder equipmentHolder = new ASEHolder(); //Inventory holder that owns the equipment menu + double coarseAdj; + double fineAdj; + double coarseMov; + double fineMov; + private boolean ignoreNextInteract = false; + private TickCounter counter; + private ArrayList as = null; + private ArrayList itemF = null; + private TownyProtection townyProtection; + private PlotSquaredProtection plotSquaredProtection; + private WorldGuardProtection worldGuardProtection; + private GriefPreventionProtection griefPreventionProtection; + private SkyblockProtection skyblockProtection; + private GriefDefenderProtection griefDefenderProtection; + + PlayerEditorManager( ArmorStandEditorPlugin plugin) { + this.plugin = plugin; + players = new HashMap<>(); + coarseAdj = Util.FULL_CIRCLE / plugin.coarseRot; + fineAdj = Util.FULL_CIRCLE / plugin.fineRot; + coarseMov = 1; + fineMov = .03125; // 1/32 + counter = new TickCounter(); + Bukkit.getServer().getScheduler().runTaskTimer(plugin, counter, 0, 1); + + //Implementation of Protection Support - PlotSquared, WorldGuard, Towny, GriefPrevention etc. + townyProtection = new TownyProtection(); + plotSquaredProtection = new PlotSquaredProtection(); + worldGuardProtection = new WorldGuardProtection(); + griefPreventionProtection = new GriefPreventionProtection(); + skyblockProtection = new SkyblockProtection(); + griefDefenderProtection = new GriefDefenderProtection(); + } + + @EventHandler(priority = EventPriority.LOWEST) + void onArmorStandDamage( EntityDamageByEntityEvent event) { + if (!(event.getDamager() instanceof Player)) return; + Player player = (Player) event.getDamager(); + if (!plugin.isEditTool(player.getInventory().getItemInMainHand())) return; + if (!((event.getEntity() instanceof ArmorStand) || event.getEntity() instanceof ItemFrame)) { + event.setCancelled(true); + getPlayerEditor(player.getUniqueId()).openMenu(); + return; + } + if (event.getEntity() instanceof ArmorStand) { + ArmorStand as = (ArmorStand) event.getEntity(); + getPlayerEditor(player.getUniqueId()).cancelOpenMenu(); + event.setCancelled(true); + if (canEdit(player, as)) + applyLeftTool(player, as); + } else if (event.getEntity() instanceof ItemFrame) { + ItemFrame itemf = (ItemFrame) event.getEntity(); + getPlayerEditor(player.getUniqueId()).cancelOpenMenu(); + event.setCancelled(true); + if (canEdit(player, itemf)) applyLeftTool(player, itemf); + } + } + + @EventHandler(priority = EventPriority.LOWEST) + void onArmorStandInteract( PlayerInteractAtEntityEvent event) { + if (ignoreNextInteract) return; + if (event.getHand() != EquipmentSlot.HAND) return; + Player player = event.getPlayer(); + if (!((event.getRightClicked() instanceof ArmorStand) || event.getRightClicked() instanceof ItemFrame)) return; + + if (event.getRightClicked() instanceof ArmorStand) { + ArmorStand as = (ArmorStand) event.getRightClicked(); + + if (!canEdit(player, as)) return; + if (plugin.isEditTool(player.getInventory().getItemInMainHand())) { + getPlayerEditor(player.getUniqueId()).cancelOpenMenu(); + event.setCancelled(true); + applyRightTool(player, as); + return; + } + + + //Attempt rename + if (player.getInventory().getItemInMainHand().getType() == Material.NAME_TAG && player.hasPermission("asedit.rename")) { + ItemStack nameTag = player.getInventory().getItemInMainHand(); + String name; + if (nameTag.getItemMeta() != null && nameTag.getItemMeta().hasDisplayName()) { + name = nameTag.getItemMeta().getDisplayName().replace('&', ChatColor.COLOR_CHAR); + } else { + name = null; + } + + if (name == null) { + as.setCustomName(null); + as.setCustomNameVisible(false); + event.setCancelled(true); + } else if (!name.equals("")) { // nametag is not blank + event.setCancelled(true); + + if ((player.getGameMode() != GameMode.CREATIVE)) { + if (nameTag.getAmount() > 1) { + nameTag.setAmount(nameTag.getAmount() - 1); + } else { + nameTag = new ItemStack(Material.AIR); + } + player.getInventory().setItemInMainHand(nameTag); + } + + //minecraft will set the name after this event even if the event is cancelled. + //change it 1 tick later to apply formatting without it being overwritten + Bukkit.getScheduler().runTaskLater(plugin, () -> { + as.setCustomName(name); + as.setCustomNameVisible(true); + }, 1); + } + } + } else if (event.getRightClicked() instanceof ItemFrame) { + ItemFrame itemFrame = (ItemFrame) event.getRightClicked(); + + if (!canEdit(player, itemFrame)) return; + if (plugin.isEditTool(player.getInventory().getItemInMainHand())) { + getPlayerEditor(player.getUniqueId()).cancelOpenMenu(); + if (!itemFrame.getItem().getType().equals(Material.AIR)) { + event.setCancelled(true); + } + applyRightTool(player, itemFrame); + return; + } + + if (player.getInventory().getItemInMainHand().getType().equals(Material.GLOW_INK_SAC) //attempt glowing + && player.hasPermission("asedit.basic") + && plugin.glowItemFrames && player.isSneaking()) { + ItemStack glowSacs = player.getInventory().getItemInMainHand(); + ItemStack contents = null; + Rotation rotation = null; + if (itemFrame.getItem().getType() != Material.AIR) { + contents = itemFrame.getItem(); //save item + rotation = itemFrame.getRotation(); // save item rotation + } + Location itemFrameLocation = itemFrame.getLocation(); + BlockFace facing = itemFrame.getFacing(); + + if (player.getGameMode() != GameMode.CREATIVE) { + if (glowSacs.getAmount() > 1) { + glowSacs.setAmount(glowSacs.getAmount() - 1); + } else glowSacs = new ItemStack(Material.AIR); + } + + itemFrame.remove(); + GlowItemFrame glowFrame = (GlowItemFrame) player.getWorld().spawnEntity(itemFrameLocation, EntityType.GLOW_ITEM_FRAME); + glowFrame.setFacingDirection(facing); + if (contents != null) { + glowFrame.setItem(contents); + glowFrame.setRotation(rotation); + } + + } + } + } + + @EventHandler(priority = EventPriority.LOW, ignoreCancelled = true) + public void onSwitchHands(PlayerSwapHandItemsEvent event) { + if (!plugin.isEditTool(event.getOffHandItem())) return; //event assumes they are already switched + event.setCancelled(true); + Player player = event.getPlayer(); + + as = getTargets(player); //Get All ArmorStand closest to player + itemF = getFrameTargets(player); //Get ItemFrame Closest to Player + + //Check + if(!(as.isEmpty()) && itemF.isEmpty()) { + getPlayerEditor(player.getUniqueId()).setTarget(as); + } else if(!(itemF.isEmpty()) && as.isEmpty()) { + getPlayerEditor(player.getUniqueId()).setFrameTarget(itemF); + } else if (!(itemF.isEmpty()) && !(as.isEmpty())) { + getPlayerEditor(player.getUniqueId()).sendMessage("doubletarget", "warn"); + } else { + getPlayerEditor(player.getUniqueId()).setTarget(null); + getPlayerEditor(player.getUniqueId()).setFrameTarget(null); + } + + } + + private ArrayList getTargets(Player player) { + Location eyeLaser = player.getEyeLocation(); + Vector direction = player.getLocation().getDirection(); + ArrayList armorStands = new ArrayList<>(); + + double STEPSIZE = .5; + Vector STEP = direction.multiply(STEPSIZE); + double RANGE = 10; + double LASERRADIUS = .3; + List nearbyEntities = player.getNearbyEntities(RANGE, RANGE, RANGE); + if (nearbyEntities.isEmpty()) return null; + + for (double i = 0; i < RANGE; i += STEPSIZE) { + List nearby = (List) player.getWorld().getNearbyEntities(eyeLaser, LASERRADIUS, LASERRADIUS, LASERRADIUS); + if (!nearby.isEmpty()) { + boolean endLaser = false; + for ( Entity e : nearby) { + if (e instanceof ArmorStand) { + armorStands.add((ArmorStand) e); + endLaser = true; + } + } + + if (endLaser) break; + } + if (eyeLaser.getBlock().getType().isSolid()) break; + eyeLaser.add(STEP); + } + return armorStands; + } + + private ArrayList getFrameTargets(Player player) { + Location eyeLaser = player.getEyeLocation(); + Vector direction = player.getLocation().getDirection(); + ArrayList itemFrames = new ArrayList<>(); + + double STEPSIZE = .5; + Vector STEP = direction.multiply(STEPSIZE); + double RANGE = 10; + double LASERRADIUS = .3; + List nearbyEntities = player.getNearbyEntities(RANGE, RANGE, RANGE); + if (nearbyEntities.isEmpty()) return null; + + for (double i = 0; i < RANGE; i += STEPSIZE) { + List nearby = (List) player.getWorld().getNearbyEntities(eyeLaser, LASERRADIUS, LASERRADIUS, LASERRADIUS); + if (!nearby.isEmpty()) { + boolean endLaser = false; + for ( Entity e : nearby) { + if (e instanceof ItemFrame) { + itemFrames.add((ItemFrame) e); + endLaser = true; + } + } + + if (endLaser) break; + } + if (eyeLaser.getBlock().getType().isSolid()) break; + eyeLaser.add(STEP); + } + + return itemFrames; + } + + + boolean canEdit( Player player, ArmorStand as) { + + //Get the Entity being checked for editing + Block block = as.getLocation().getBlock(); + + //Permission checks for Protection + boolean protectTActive = townyProtection.checkPermission(block, player); + boolean protectPSActive = plotSquaredProtection.checkPermission(block, player); + boolean protectWGActive = worldGuardProtection.checkPermission(block, player); + boolean protectGPActive = griefPreventionProtection.checkPermission(block, player); + boolean protectSkyActive = skyblockProtection.checkPermission(player); + boolean protectGDActive = griefDefenderProtection.checkPermission(block, player); + + return protectTActive && protectPSActive && protectWGActive && protectGPActive && protectSkyActive && protectGDActive; + + } + + boolean canEdit( Player player, ItemFrame itemf) { + + //Get the Entity being checked for editing + Block block = itemf.getLocation().getBlock(); + + //Permission checks for Protection + boolean protectTActive = townyProtection.checkPermission(block, player); + boolean protectPSActive = plotSquaredProtection.checkPermission(block, player); + boolean protectWGActive = worldGuardProtection.checkPermission(block, player); + boolean protectGPActive = griefPreventionProtection.checkPermission(block, player); + boolean protectSkyActive = skyblockProtection.checkPermission(player); + boolean protectGDActive = griefDefenderProtection.checkPermission(block, player); + + return protectTActive && protectPSActive && protectWGActive && protectGPActive && protectSkyActive && protectGDActive; + } + + void applyLeftTool( Player player, ArmorStand as) { + getPlayerEditor(player.getUniqueId()).cancelOpenMenu(); + getPlayerEditor(player.getUniqueId()).editArmorStand(as); + } + + void applyLeftTool( Player player, ItemFrame itemf) { + getPlayerEditor(player.getUniqueId()).cancelOpenMenu(); + getPlayerEditor(player.getUniqueId()).editItemFrame(itemf); + } + + void applyRightTool( Player player, ItemFrame itemf) { + getPlayerEditor(player.getUniqueId()).cancelOpenMenu(); + getPlayerEditor(player.getUniqueId()).editItemFrame(itemf); + } + + void applyRightTool( Player player, ArmorStand as) { + getPlayerEditor(player.getUniqueId()).cancelOpenMenu(); + getPlayerEditor(player.getUniqueId()).reverseEditArmorStand(as); + } + + //Unused? + @EventHandler(priority = EventPriority.LOWEST) + void onRightClickTool( PlayerInteractEvent e) { + if (!(e.getAction() == Action.LEFT_CLICK_AIR + || e.getAction() == Action.RIGHT_CLICK_AIR + || e.getAction() == Action.LEFT_CLICK_BLOCK + || e.getAction() == Action.RIGHT_CLICK_BLOCK)) return; + Player player = e.getPlayer(); + if (!plugin.isEditTool(player.getInventory().getItemInMainHand())) return; + if (plugin.requireSneaking && !player.isSneaking()) return; + if(!player.hasPermission("asedit.basic")) return; + e.setCancelled(true); + getPlayerEditor(player.getUniqueId()).openMenu(); + } + + @EventHandler(priority = EventPriority.NORMAL) + void onScrollNCrouch( PlayerItemHeldEvent e) { + Player player = e.getPlayer(); + if (!player.isSneaking()) return; + if (!plugin.isEditTool(player.getInventory().getItem(e.getPreviousSlot()))) return; + + e.setCancelled(true); + if (e.getNewSlot() == e.getPreviousSlot() + 1 || (e.getNewSlot() == 0 && e.getPreviousSlot() == 8)) { + getPlayerEditor(player.getUniqueId()).cycleAxis(1); + } else if (e.getNewSlot() == e.getPreviousSlot() - 1 || (e.getNewSlot() == 8 && e.getPreviousSlot() == 0)) { + getPlayerEditor(player.getUniqueId()).cycleAxis(-1); + } + } + + @EventHandler(priority = EventPriority.LOWEST) + void onPlayerMenuSelect( InventoryClickEvent e) { + if (e.getInventory().getHolder() == null) return; + if (!(e.getInventory().getHolder() instanceof ASEHolder)) return; + if (e.getInventory().getHolder() == menuHolder) { + e.setCancelled(true); + ItemStack item = e.getCurrentItem(); + if (item != null && item.hasItemMeta()) { + Player player = (Player) e.getWhoClicked(); + String command = item.getItemMeta().getPersistentDataContainer().get(plugin.getIconKey(), PersistentDataType.STRING); + if (command != null) { + player.performCommand(command); + return; + } + } + } + if (e.getInventory().getHolder() == equipmentHolder) { + ItemStack item = e.getCurrentItem(); + if (item == null) return; + if (item.getItemMeta() == null) return; + if (item.getItemMeta().getPersistentDataContainer().has(plugin.getIconKey(), PersistentDataType.STRING)) { + e.setCancelled(true); + } + } + } + + @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true) + void onPlayerMenuClose( InventoryCloseEvent e) { + if (e.getInventory().getHolder() == null) return; + if (!(e.getInventory().getHolder() instanceof ASEHolder)) return; + if (e.getInventory().getHolder() == equipmentHolder) { + PlayerEditor pe = players.get(e.getPlayer().getUniqueId()); + pe.equipMenu.equipArmorstand(); + } + } + + @EventHandler(priority = EventPriority.MONITOR) + void onPlayerLogOut( PlayerQuitEvent e) { + removePlayerEditor(e.getPlayer().getUniqueId()); + } + + public PlayerEditor getPlayerEditor( UUID uuid) { + return players.containsKey(uuid) ? players.get(uuid) : addPlayerEditor(uuid); + } + + PlayerEditor addPlayerEditor( UUID uuid) { + PlayerEditor pe = new PlayerEditor(uuid, plugin); + players.put(uuid, pe); + return pe; + } + + private void removePlayerEditor( UUID uuid) { + players.remove(uuid); + } + + public ASEHolder getMenuHolder() { + return menuHolder; + } + + public ASEHolder getEquipmentHolder() { + return equipmentHolder; + } + + long getTime(){ + return counter.ticks; + } + + class TickCounter implements Runnable{ + long ticks = 0; //I am optimistic + @Override + public void run() {ticks++;} + public long getTime() {return ticks;} + } } diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/Util.java b/src/main/java/io/github/rypofalem/armorstandeditor/Util.java index 9fb944d7..52f202ff 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/Util.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/Util.java @@ -20,51 +20,50 @@ package io.github.rypofalem.armorstandeditor; public abstract class Util { - - public static final double FULLCIRCLE = Math.PI*2; - - public static > String getEnumList(Class enumType){ - return getEnumList(enumType, " | "); - } - public static > String getEnumList(Class enumType, String delimiter){ - StringBuilder list = new StringBuilder(); - boolean put =false; - for(Enum e : enumType.getEnumConstants()){ - list.append(e.toString()).append(delimiter); - put = true; - } - if(put) list = new StringBuilder(list.substring(0, list.length() - delimiter.length())); - return list.toString(); - } - - public static double addAngle(double current, double angleChange) { - current += angleChange; - current = fixAngle(current, angleChange); - return current; - } + public static final double FULL_CIRCLE = Math.PI*2; - public static double subAngle(double current, double angleChange){ - current -= angleChange; - current = fixAngle(current, angleChange); - return current; - } + public static > String getEnumList(Class enumType){ + return getEnumList(enumType, " | "); + } - //clamps angle to 0 if it exceeds 2PI rad (360 degrees), is closer to 0 than angleChange value, or is closer to 2PI rad than 2PI rad - angleChange value. - private static double fixAngle(double angle, double angleChange){ - if(angle > FULLCIRCLE){ - return 0; - } - if(angle > 0 && angle < angleChange){ - if(angle < angleChange/2){ - return 0; - } - } - if(angle > FULLCIRCLE-angle){ - if(angle > FULLCIRCLE - (angleChange/2)){ - return 0; - } - } - return angle; - } + public static > String getEnumList(Class enumType, String delimiter){ + StringBuilder list = new StringBuilder(); + boolean put =false; + for(Enum e : enumType.getEnumConstants()){ + list.append(e.toString()).append(delimiter); + put = true; + } + if(put) list = new StringBuilder(list.substring(0, list.length() - delimiter.length())); + return list.toString(); + } + + public static double addAngle(double current, double angleChange) { + current += angleChange; + current = fixAngle(current, angleChange); + return current; + } + + public static double subAngle(double current, double angleChange){ + current -= angleChange; + current = fixAngle(current, angleChange); + return current; + } + + //clamps angle to 0 if it exceeds 2PI rad (360 degrees), is closer to 0 than angleChange value, or is closer to 2PI rad than 2PI rad - angleChange value. + private static double fixAngle(double angle, double angleChange){ + if(angle > FULL_CIRCLE){ + return 0; + } + + if(angle > 0 && angle < angleChange && angle < angleChange/2){ + return 0; + } + + if(angle > FULL_CIRCLE -angle && angle > FULL_CIRCLE - (angleChange/2)){ + return 0; + } + + return angle; + } } diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/language/Language.java b/src/main/java/io/github/rypofalem/armorstandeditor/language/Language.java index 5fe46070..9b11a0a4 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/language/Language.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/language/Language.java @@ -23,8 +23,12 @@ import org.bukkit.ChatColor; import org.bukkit.configuration.file.YamlConfiguration; -import java.io.*; -import java.nio.charset.Charset; +import java.io.File; +import java.io.FileInputStream; +import java.io.FileNotFoundException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.io.Reader; import java.nio.charset.StandardCharsets; public class Language { diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/menu/EquipmentMenu.java b/src/main/java/io/github/rypofalem/armorstandeditor/menu/EquipmentMenu.java index 8e17626d..49672fbc 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/menu/EquipmentMenu.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/menu/EquipmentMenu.java @@ -33,85 +33,85 @@ import java.util.ArrayList; public class EquipmentMenu { - Inventory menuInv; - private PlayerEditor pe; - private ArmorStand armorstand; - static String name = "ArmorStand Equipment"; - ItemStack helmet, chest, pants, feetsies, rightHand, leftHand; - - public EquipmentMenu(PlayerEditor pe, ArmorStand as){ - this.pe = pe; - this.armorstand = as; - name = pe.plugin.getLang().getMessage("equiptitle", "menutitle"); - menuInv = Bukkit.createInventory(pe.getManager().getEquipmentHolder(), 18, name); - } - - private void fillInventory(){ - menuInv.clear(); - EntityEquipment equipment = armorstand.getEquipment(); - assert equipment != null; - ItemStack helmet = equipment.getHelmet(); - ItemStack chest = equipment.getChestplate(); - ItemStack pants = equipment.getLeggings(); - ItemStack feetsies = equipment.getBoots(); - ItemStack rightHand = equipment.getItemInMainHand(); - ItemStack leftHand = equipment.getItemInOffHand(); - equipment.clear(); - - ItemStack disabledIcon = new ItemStack(Material.BARRIER); - ItemMeta meta = disabledIcon.getItemMeta(); - meta.setDisplayName(pe.plugin.getLang().getMessage("disabled", "warn")); //equipslot.msg
glaremasters - https://repo.glaremasters.me/repository/bloodshot + https://repo.glaremasters.me/repository/bloodshot/ @@ -76,7 +76,7 @@ org.spigotmc spigot-api - 1.19-R0.1-SNAPSHOT + 1.19.1-R0.1-SNAPSHOT provided @@ -90,14 +90,14 @@ com.plotsquared PlotSquared-Core - 6.9.0 + 6.9.3 provided com.plotsquared PlotSquared-Bukkit - 6.9.0 + 6.9.3 provided @@ -117,7 +117,7 @@ com.palmergames.bukkit.towny towny - 0.98.2.6 + 0.98.3.2 provided @@ -131,14 +131,14 @@ com.bgsoftware SuperiorSkyblockAPI - 1.10.0 + 1.11.0 provided com.griefdefender api - 2.1.0-20220608.043832-6 + 2.1.0-SNAPSHOT provided diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/ArmorStandEditorPlugin.java b/src/main/java/io/github/rypofalem/armorstandeditor/ArmorStandEditorPlugin.java index a81bd2a0..4b648d07 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/ArmorStandEditorPlugin.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/ArmorStandEditorPlugin.java @@ -37,25 +37,23 @@ import org.bukkit.scoreboard.Scoreboard; import org.bukkit.scoreboard.Team; -import java.io.*; -import java.time.*; -import java.nio.file.Files; -import java.text.SimpleDateFormat; -import java.time.format.DateTimeFormatter; -import java.time.format.FormatStyle; -import java.util.*; import java.io.File; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Objects; public class ArmorStandEditorPlugin extends JavaPlugin{ - private static final int SPIGOT_RESOURCE_ID = 94503; //Used for Update Checker + public static final int SPIGOT_RESOURCE_ID = 94503; //Used for Update Checker private static final int PLUGIN_ID = 12668; //Used for BStats Metrics private NamespacedKey iconKey; private static ArmorStandEditorPlugin instance; - private CommandEx execute; private Language lang; + + boolean opUpdateNotification = false; //Server Version Detection: Paper or Spigot and Invalid NMS Version String nmsVersion; public boolean hasSpigot = false; @@ -91,19 +89,7 @@ public class ArmorStandEditorPlugin extends JavaPlugin{ String lockedTeam = "ASLocked"; //Better Debug Output - SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); - Date date = Calendar.getInstance().getTime(); - Instant instant = Instant.now(); - DateTimeFormatter formatter = DateTimeFormatter.ofLocalizedDateTime( FormatStyle.SHORT ).withLocale( Locale.UK ).withZone( ZoneId.systemDefault() ); - String dateAsString = dateFormat.format(date); - String timeAsString = formatter.format(instant); - final String debugOutputFileName = getDataFolder() + File.separator + "DEBUG-" + dateAsString + ".log"; - FileOutputStream fos = null; - File f = new File(debugOutputFileName); - - private static ArmorStandEditorPlugin plugin; - - //1.19?: Add in Custom WG Flag? To be seen if needed if WG Protection is enough! + private static ArmorStandEditorPlugin plugin; public ArmorStandEditorPlugin(){ instance = this; @@ -112,14 +98,10 @@ public ArmorStandEditorPlugin(){ @Override public void onEnable(){ - //Run UpdateChecker - runUpdateChecker(); - - scoreboard = this.getServer().getScoreboardManager().getMainScoreboard(); + scoreboard = Objects.requireNonNull(this.getServer().getScoreboardManager()).getMainScoreboard(); //Get NMS Version nmsVersion = getNmsVersion(); - print("Net.Minecraft.Server version is: " + nmsVersion); //Load Messages in Console getLogger().info("======= ArmorStandEditor ======="); @@ -146,8 +128,7 @@ public void onEnable(){ nmsVersion.startsWith("v1_10") || nmsVersion.startsWith("v1_11") || nmsVersion.startsWith("v1_12") || - nmsVersion.startsWith("v1_13") - ){ + nmsVersion.startsWith("v1_13")){ getLogger().warning("Minecraft Version: " + nmsVersion + " is not supported. Loading Plugin Failed."); getLogger().info(SEPARATOR_FIELD); getServer().getPluginManager().disablePlugin(this); @@ -165,17 +146,11 @@ public void onEnable(){ } else { getLogger().info("Minecraft Version: " + nmsVersion + " is supported. Loading continuing."); } + getServer().getPluginManager().enablePlugin(this); registerScoreboards(scoreboard); getLogger().info(SEPARATOR_FIELD); - //Is Debug Enabled - debug = getConfig().getBoolean("debug", false); - print("Debug Mode Enabled? Well if you can read this its true"); - if(debug){ - createDebugFile(); - } - //saveResource doesn't accept File.separator on Windows, need to hardcode unix separator "/" instead updateConfig("", "config.yml"); updateConfig("lang/", "test_NA.yml"); @@ -187,10 +162,10 @@ public void onEnable(){ updateConfig("lang/", "ja_JP.yml"); updateConfig("lang/", "de_DE.yml"); updateConfig("lang/", "es_ES.yml"); + updateConfig("lang/", "pt_BR.yml"); //English is the default language and needs to be unaltered to so that there is always a backup message string saveResource("lang/en_US.yml", true); lang = new Language(getConfig().getString("lang"), this); - print("Language in use: " + getConfig().getString("lang")); //Rotation coarseRot = getConfig().getDouble("coarse"); @@ -199,7 +174,6 @@ public void onEnable(){ //Set Tool to be used in game toolType = getConfig().getString("tool"); if (toolType != null) { - print("Edit Tool used to interact with Plugin is: " + toolType); editTool = Material.getMaterial(toolType); //Ignore Warning } else { getLogger().severe("Unable to get Tool for Use with Plugin. Unable to continue!"); @@ -210,71 +184,89 @@ public void onEnable(){ //Custom Model Data allowCustomModelData = getConfig().getBoolean("allowCustomModelData", false); - print("Do we allow CustomModelData?: " + allowCustomModelData); if(allowCustomModelData){ customModelDataInt = getConfig().getInt("customModelDataInt", Integer.MIN_VALUE); - print("CustomModelData Integer is: " + customModelDataInt); } //ArmorStandVisibility Node armorStandVisibility = getConfig().getBoolean("armorStandVisibility", true); - print("ArmorStands allowed to be made visible/invisible?: " + armorStandVisibility); //Is there NBT Required for the tool requireToolData = getConfig().getBoolean("requireToolData", false); - print("NBT Data Required: " + requireToolData); if(requireToolData) { editToolData = getConfig().getInt("toolData", Integer.MIN_VALUE); - print("Tool Data is: " + editToolData); } requireToolLore = getConfig().getBoolean("requireToolLore", false); - print("Lore Required?: " + requireToolLore); if(requireToolLore) { editToolLore = getConfig().getString("toolLore", null); if(editToolLore != null) editToolLore = ChatColor.translateAlternateColorCodes('&', editToolLore); - print("Lore needs to be: " + editToolLore); } //Require Sneaking - Wolfst0rm/ArmorStandEditor#17 requireSneaking = getConfig().getBoolean("requireSneaking", false); - print("Sneaking required to activate the UI: " + requireSneaking); //Send Messages to Action Bar sendToActionBar = getConfig().getBoolean("sendMessagesToActionBar", true); - print("Messages being sent to action bar?: " + sendToActionBar); //All ItemFrame Stuff glowItemFrames = getConfig().getBoolean("glowingItemFrame", true); - print("Are glowing Item Frames enabled for 1.17 Users?: " + glowItemFrames); invisibleItemFrames = getConfig().getBoolean("invisibleItemFrames", true); - print("Can users turn ItemFrames invisible?: " + invisibleItemFrames); + + //Add Ability to check for UpdatePerms that Notify Ops - https://github.com/Wolfieheart/ArmorStandEditor/issues/86 + opUpdateNotification = getConfig().getBoolean("opUpdateNotification", true); + + //Run UpdateChecker - Reports out to Console on Startup ONLY! + if(opUpdateNotification){ + runUpdateCheckerWithOPNotifyOnJoinEnabled(); + } else { + runUpdateCheckerConsoleUpdateCheck(); + } //Get Metrics from bStats getMetrics(); editorManager = new PlayerEditorManager(this); - execute = new CommandEx(this); - getCommand("ase").setExecutor(execute); //Ignore the warning with this. GetCommand is Nullable. Will be fixed in the future + CommandEx execute = new CommandEx(this); + Objects.requireNonNull(getCommand("ase")).setExecutor(execute); //Ignore the warning with this. GetCommand is Nullable. Will be fixed in the future getServer().getPluginManager().registerEvents(editorManager, this); } - private void runUpdateChecker() { - UpdateChecker.init(this, SPIGOT_RESOURCE_ID) - .setDownloadLink("https://www.spigotmc.org/resources/armorstandeditor-reborn.94503/") - .setChangelogLink("https://www.spigotmc.org/resources/armorstandeditor-reborn.94503/history") - .setNotifyOpsOnJoin(true) - .setNotifyByPermissionOnJoin("asedit.update") - .setColoredConsoleOutput(true) - .setUserAgent(new UserAgentBuilder().addPluginNameAndVersion().addServerVersion()) - .checkEveryXHours(72) //Warn people every 72 hours - .checkNow(); + private void runUpdateCheckerConsoleUpdateCheck() { + if (Objects.requireNonNull(getConfig().getString("version")).contains(".x")) { + //noinspection UnnecessaryReturnStatement + return; + } else { + new UpdateChecker(this, UpdateCheckSource.SPIGET, "" + SPIGOT_RESOURCE_ID + "") + .setDownloadLink("https://www.spigotmc.org/resources/armorstandeditor-reborn.94503/") + .setChangelogLink("https://www.spigotmc.org/resources/armorstandeditor-reborn.94503/history") + .setColoredConsoleOutput(true) + .setUserAgent(new UserAgentBuilder().addPluginNameAndVersion().addServerVersion()) + .checkEveryXHours(72) //Warn people every 72 hours + .checkNow(); + } + } + + private void runUpdateCheckerWithOPNotifyOnJoinEnabled() { //We Can Not Dynamically change the setting for NotifyOpsOnJoin :( + if (Objects.requireNonNull(getConfig().getString("version")).contains(".x")) { + //noinspection UnnecessaryReturnStatement + return; + } else { + new UpdateChecker(this, UpdateCheckSource.SPIGET, "" + SPIGOT_RESOURCE_ID + "") + .setDownloadLink("https://www.spigotmc.org/resources/armorstandeditor-reborn.94503/") + .setChangelogLink("https://www.spigotmc.org/resources/armorstandeditor-reborn.94503/history") + .setColoredConsoleOutput(true) + .setNotifyOpsOnJoin(true) + .setUserAgent(new UserAgentBuilder().addPluginNameAndVersion().addServerVersion()) + .checkEveryXHours(72) //Warn people every 72 hours + .checkNow(); + } } //Implement Glow Effects for Wolfstorm/ArmorStandEditor-Issues#5 - Add Disable Slots with Different Glow than Default @@ -283,11 +275,8 @@ private void registerScoreboards(Scoreboard scoreboard) { //Fix for Scoreboard Issue reported by Starnos - Wolfst0rm/ArmorStandEditor-Issues/issues/18 if (scoreboard.getTeam(lockedTeam) == null) { - print("Team '" + lockedTeam + "' does not exist, proceeding to create new team"); scoreboard.registerNewTeam(lockedTeam); - - print("Setting Team '" + lockedTeam + "' color to RED"); - scoreboard.getTeam(lockedTeam).setColor(ChatColor.RED); + Objects.requireNonNull(scoreboard.getTeam(lockedTeam)).setColor(ChatColor.RED); } else { getLogger().info("Scoreboard for ASLocked Already exists. Continuing to load"); } @@ -299,7 +288,6 @@ private void unregisterScoreboards(Scoreboard scoreboard) { team = scoreboard.getTeam(lockedTeam); if(team != null) { //Basic Sanity Check to ensure that the team is there team.unregister(); - print("Team '" + lockedTeam + "' successfully removed."); } else{ getLogger().severe("Team Already Appears to be removed. Please do not do this manually!"); } @@ -317,21 +305,10 @@ public void onDisable(){ if(player.getOpenInventory().getTopInventory().getHolder() == editorManager.getMenuHolder()) player.closeInventory(); } - scoreboard = this.getServer().getScoreboardManager().getMainScoreboard(); + scoreboard = Objects.requireNonNull(this.getServer().getScoreboardManager()).getMainScoreboard(); unregisterScoreboards(scoreboard); } - public void createDebugFile(){ - try { - if (!f.exists() && f.createNewFile()) { - Files.setAttribute(f.toPath(), "dos:hidden", true); - } - } catch (IOException e) { - this.getServer().getLogger().warning(e.getMessage()); - } - } - - public String getNmsVersion(){ return this.getServer().getClass().getPackage().getName().replace(".",",").split(",")[3]; } @@ -339,7 +316,6 @@ public String getNmsVersion(){ public boolean getHasSpigot(){ try { Class.forName("org.spigotmc.SpigotConfig"); - print("SpigotMC Detected."); nmsVersionNotLatest = "SpigotMC ASAP."; return true; } catch (ClassNotFoundException e){ @@ -356,10 +332,10 @@ public boolean getItemFrameVisibility(){ return getConfig().getBoolean("invisibleItemFrames"); } + public boolean getHasPaper(){ try { Class.forName("com.destroystokyo.paper.PaperConfig"); - print("PaperMC Detected."); nmsVersionNotLatest = "SpigotMC ASAP."; return true; } catch (ClassNotFoundException e){ @@ -400,7 +376,7 @@ public boolean isEditTool(ItemStack itemStk){ if(!itemStk.hasItemMeta()) { return false; } //Get the lore of the Item and if it is null - Return False - List itemLore = itemStk.getItemMeta().getLore(); //Ignore warnings this gives. Will be fixed in the future + List itemLore = Objects.requireNonNull(itemStk.getItemMeta()).getLore(); //Ignore warnings this gives. Will be fixed in the future if (itemLore == null){ return false; } //If the Item does not have Lore - Return False @@ -416,56 +392,14 @@ public boolean isEditTool(ItemStack itemStk){ //If the ItemStack does not have Metadata then we return false if(!itemStk.hasItemMeta()) { return false; } - Integer itemCustomModel = itemStk.getItemMeta().getCustomModelData(); - if (itemCustomModel == null) { return false; } + Integer itemCustomModel = Objects.requireNonNull(itemStk.getItemMeta()).getCustomModelData(); - if(!itemCustomModel.equals(customModelDataInt)) { return false; } + return itemCustomModel.equals(customModelDataInt); } return true; } - public void log(String message){ - //Output to Server Console - Safer than doing a Broadcast to everyone on the Server - String timeMsgSep = ": "; - this.getServer().getLogger().info("ArmorStandEditor: " + message); - - try{ - fos = new FileOutputStream(f, true); - - //Write the Content as Bytes - fos.write(timeAsString.getBytes()); - fos.write(timeMsgSep.getBytes()); - fos.write(message.getBytes()); - fos.write(10); - fos.flush(); - }catch(IOException e){ - this.getServer().getLogger().warning(e.getMessage()); - }finally{ - if(fos != null){ - try { - fos.close(); - } catch (IOException e) { - this.getServer().getLogger().warning(e.getMessage()); - } - } - } - } - - /* - * For Internal Debugging - - * - * set debug: true in Config.yml - * NOTE: NOT RECOMMENDED FOR PROD! INTERNAL TESTING ONLY! - * - * To be refactored - Apart Log File. - */ - public void print(String message){ - if(debug){ - log(message); - } - } - public static ArmorStandEditorPlugin instance(){ return instance; } @@ -517,8 +451,10 @@ private void getMetrics(){ map.put("Romanian", entry); } else if(languageUsed.startsWith("uk")){ map.put("Ukrainian", entry); - } else if(languageUsed.startsWith("zh")){ + } else if(languageUsed.startsWith("zh")) { map.put("Chinese", entry); + } else if(languageUsed.startsWith("pt")) { + map.put("Brazilian", entry); } else{ map.put("Other", entry); } diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/CommandEx.java b/src/main/java/io/github/rypofalem/armorstandeditor/CommandEx.java index 72efcf4c..7729422a 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/CommandEx.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/CommandEx.java @@ -19,6 +19,7 @@ package io.github.rypofalem.armorstandeditor; +import com.jeff_media.updatechecker.UpdateCheckSource; import com.jeff_media.updatechecker.UpdateChecker; import io.github.rypofalem.armorstandeditor.modes.AdjustmentMode; import io.github.rypofalem.armorstandeditor.modes.Axis; @@ -54,14 +55,12 @@ public boolean onCommand(CommandSender sender, Command command, String label, St if (!(sender instanceof Player && checkPermission((Player) sender, "basic", true))) { sender.sendMessage(plugin.getLang().getMessage("noperm", "warn")); - plugin.log("CommandSender is not an instance of Player"); return true; } Player player = (Player) sender; debugPlayerDisplayName = player.getDisplayName(); if (args.length == 0) { - plugin.log("Sending List of Commands to: " + debugPlayerDisplayName); player.sendMessage(LISTMODE); player.sendMessage(LISTAXIS); player.sendMessage(LISTSLOT); @@ -91,7 +90,6 @@ && checkPermission((Player) sender, "basic", true))) { case "give": commandGive(player); break; default: - plugin.log("Sending List of Commands to: " + debugPlayerDisplayName); sender.sendMessage(LISTMODE); sender.sendMessage(LISTAXIS); sender.sendMessage(LISTSLOT); @@ -109,8 +107,6 @@ && checkPermission((Player) sender, "basic", true))) { // https://github.com/Wolfieheart/ArmorStandEditor-Issues/issues/30 - See Remarks OTHER private void commandGive(Player player) { if (plugin.getAllowCustomModelData() && checkPermission(player, "give", true)) { - plugin.log("Does Plugin Allow CustomModelData?: " + plugin.getAllowCustomModelData()); - plugin.log("CustomModelData Int is: " + plugin.getCustomModelDataInt()); ItemStack stack = new ItemStack(plugin.getEditTool()); //Only Support EditTool at the MOMENT ItemMeta meta = stack.getItemMeta(); meta.setCustomModelData(plugin.getCustomModelDataInt()); @@ -134,7 +130,6 @@ private void commandSlot(Player player, String[] args) { try { byte slot = (byte) (Byte.parseByte(args[1]) - 0b1); if (slot >= 0 && slot < 9) { - plugin.log("Copying ArmorStand to slot: " + slot); plugin.editorManager.getPlayerEditor(player.getUniqueId()).setCopySlot(slot); } else { player.sendMessage(LISTSLOT); @@ -155,7 +150,6 @@ private void commandAdj(Player player, String[] args) { if (args.length > 1) { for ( AdjustmentMode adj : AdjustmentMode.values()) { if (adj.toString().toLowerCase().contentEquals(args[1].toLowerCase())) { - plugin.log("Adjustment mode set to: " + adj); plugin.editorManager.getPlayerEditor(player.getUniqueId()).setAdjMode(adj); return; } @@ -173,7 +167,6 @@ private void commandAxis( Player player, String[] args) { if (args.length > 1) { for ( Axis axis : Axis.values()) { if (axis.toString().toLowerCase().contentEquals(args[1].toLowerCase())) { - plugin.log("Axis set to: " + axis); plugin.editorManager.getPlayerEditor(player.getUniqueId()).setAxis(axis); return; } @@ -191,11 +184,9 @@ private void commandMode( Player player, String[] args) { if (args.length > 1) { for ( EditMode mode : EditMode.values()) { if (mode.toString().toLowerCase().contentEquals(args[1].toLowerCase())) { - plugin.log("Argument 1 is: " + args[1].toLowerCase()); if (args[1].equals("invisible") && !checkPermission(player, "armorstand.invisible", true)) return; if (args[1].equals("itemframe") && !checkPermission(player, "itemframe.invisible", true)) return; plugin.editorManager.getPlayerEditor(player.getUniqueId()).setMode(mode); - plugin.log("Mode set to '" + mode + "' for player '" + debugPlayerDisplayName + "'"); return; } } @@ -203,7 +194,6 @@ private void commandMode( Player player, String[] args) { } private void commandHelp( Player player) { - plugin.log("Player '" + debugPlayerDisplayName + "' has ran the help command, closing Inventory"); player.closeInventory(); player.playSound(player.getLocation(), Sound.ENTITY_EXPERIENCE_ORB_PICKUP, 1f, 1f); player.sendMessage(plugin.getLang().getMessage("help", "info", plugin.editTool.name())); @@ -214,31 +204,26 @@ private void commandHelp( Player player) { } private void commandUpdate(Player player) { - if(!(checkPermission(player, "update", true))) return; - plugin.log("Running the Built in UpdateChecker - Activated by '" + debugPlayerDisplayName + "'"); - UpdateChecker.getInstance().checkNow(player); + if (!(checkPermission(player, "update", true))) return; + new UpdateChecker(plugin, UpdateCheckSource.SPIGOT, "" + ArmorStandEditorPlugin.SPIGOT_RESOURCE_ID + "").checkNow(player); //Runs Update Check + } private void commandVersion(Player player) { if (!(checkPermission(player, "update", true))) return; String verString = plugin.pdfFile.getVersion(); - plugin.log("Output of VerString: " + verString); player.sendMessage(ChatColor.YELLOW + "[ArmorStandEditor] Version: " + verString); - UpdateChecker.getInstance().checkNow(player); } - private boolean checkPermission( Player player, String permName, boolean sendMessageOnInvalidation) { if (permName.equalsIgnoreCase("paste")) { permName = "copy"; } if (player.hasPermission("asedit." + permName.toLowerCase())) { - plugin.print("Player '"+ player.getDisplayName() +" has Permission: asedit." + permName.toLowerCase()); return true; } else { if (sendMessageOnInvalidation) { - plugin.print("Player '"+ player.getDisplayName() +" does not have Permission: asedit." + permName.toLowerCase()); player.sendMessage(plugin.getLang().getMessage("noperm", "warn")); } return false; diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/Metrics.java b/src/main/java/io/github/rypofalem/armorstandeditor/Metrics.java index 6d7848c6..84cc1d97 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/Metrics.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/Metrics.java @@ -860,4 +860,4 @@ public String toString() { } } } -} \ No newline at end of file +} diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditor.java b/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditor.java index dda1e01a..05b198b0 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditor.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditor.java @@ -238,6 +238,7 @@ public void reverseEditArmorStand(ArmorStand armorStand) { } private void move(ArmorStand armorStand) { + if(!getPlayer().hasPermission("asedit.placement")) return; Location loc = armorStand.getLocation(); switch (axis) { case X: @@ -254,6 +255,7 @@ private void move(ArmorStand armorStand) { } private void reverseMove(ArmorStand armorStand) { + if(!getPlayer().hasPermission("asedit.placement")) return; Location loc = armorStand.getLocation(); switch (axis) { case X: @@ -364,9 +366,6 @@ void toggleArms(ArmorStand armorStand) { void toggleVisible(ArmorStand armorStand) { if (!getPlayer().hasPermission("asedit.armorstand.invisible") || !plugin.armorStandVisibility) return; //Option to use perms or Config - String asLoc = armorStand.getLocation().toString(); - String result = String.valueOf(!armorStand.isVisible()); - plugin.log("Player (" + getPlayer().getDisplayName() + ") has made the ArmorStand at " + asLoc + " " + result); armorStand.setVisible(!armorStand.isVisible()); } @@ -428,14 +427,11 @@ public void setTarget(ArrayList armorStands) { target = null; targetList = null; sendMessage("notarget", null); - plugin.log("ArmorStand targeted: UNLOCKED"); } else { - if (targetList == null) { targetList = armorStands; targetIndex = 0; sendMessage("target", null); - plugin.log("ArmorStand targeted: UNLOCKED"); } else { boolean same = targetList.size() == armorStands.size(); if (same) for (ArmorStand as : armorStands) { @@ -449,7 +445,6 @@ public void setTarget(ArrayList armorStands) { targetList = armorStands; targetIndex = 0; sendMessage("target", null); - plugin.log("ArmorStand targeted: LOCKED"); } } target = targetList.get(targetIndex); @@ -465,14 +460,12 @@ public void setFrameTarget(ArrayList itemFrames) { frameTarget = null; frameTargetList = null; sendMessage("noframetarget", null); - plugin.log("ItemFrame targeted: UNLOCKED"); } else { if (frameTargetList == null) { frameTargetList = itemFrames; frameTargetIndex = 0; sendMessage("frametarget", null); - plugin.log("ItemFrame targeted: UNLOCKED"); } else { boolean same = frameTargetList.size() == itemFrames.size(); if (same) for (final ItemFrame itemf : itemFrames) { @@ -486,7 +479,6 @@ public void setFrameTarget(ArrayList itemFrames) { frameTargetList = itemFrames; frameTargetIndex = 0; sendMessage("frametarget", null); - plugin.log("ItemFrame targeted: LOCKED"); } frameTarget = frameTargetList.get(frameTargetIndex); } diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/menu/Menu.java b/src/main/java/io/github/rypofalem/armorstandeditor/menu/Menu.java index ecaf4061..22bd900b 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/menu/Menu.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/menu/Menu.java @@ -35,11 +35,10 @@ import java.util.ArrayList; public class Menu { - private Inventory menuInv; - private PlayerEditor pe; + private final Inventory menuInv; + private final PlayerEditor pe; private static String name = "Armor Stand Editor Menu"; - public Menu(PlayerEditor pe) { this.pe = pe; name = pe.plugin.getLang().getMessage("mainmenutitle", "menutitle"); @@ -48,38 +47,38 @@ public Menu(PlayerEditor pe) { } private void fillInventory() { + menuInv.clear(); - ItemStack xAxis = null; - ItemStack yAxis = null; - ItemStack zAxis = null; - ItemStack coarseAdj = null; - ItemStack fineAdj = null; - ItemStack rotate = null; + ItemStack xAxis; + ItemStack yAxis; + ItemStack zAxis; + ItemStack coarseAdj; + ItemStack fineAdj; + ItemStack rotate; ItemStack place = null; - ItemStack headPos = null; - ItemStack rightArmPos = null; - ItemStack bodyPos = null; - ItemStack leftArmPos = null; - ItemStack reset = null; - ItemStack showArms = null; - ItemStack visibility = null; - ItemStack size = null; - ItemStack rightLegPos = null; + ItemStack headPos; + ItemStack rightArmPos; + ItemStack bodyPos; + ItemStack leftArmPos; + ItemStack reset; + ItemStack showArms; + ItemStack visibility; + ItemStack size; + ItemStack rightLegPos; ItemStack equipment = null; - ItemStack leftLegPos = null; + ItemStack leftLegPos; ItemStack disableSlots = null; ItemStack gravity = null; - ItemStack plate = null; - ItemStack copy = null; - ItemStack paste = null; - ItemStack slot1 = null; - ItemStack slot2 = null; - ItemStack slot3 = null; - ItemStack slot4 = null; - ItemStack help = null; - ItemStack itemFrameVisible = null; - ItemStack itemFrameGlow = null; //Unused? + ItemStack plate; + ItemStack copy; + ItemStack paste; + ItemStack slot1; + ItemStack slot2; + ItemStack slot3; + ItemStack slot4; + ItemStack help; + ItemStack itemFrameVisible; xAxis = createIcon(new ItemStack(Material.RED_WOOL, 1), "xaxis", "axis x"); @@ -124,21 +123,22 @@ private void fillInventory() { //Praise Start - Sikatsu and cowgod, Nicely spotted this being broken if (pe.getPlayer().hasPermission("asedit.armorstand.invisible") || - pe.plugin.getArmorStandVisibility() ) { + pe.plugin.getArmorStandVisibility()) { visibility = new ItemStack(Material.POTION, 1); PotionMeta potionMeta = (PotionMeta) visibility.getItemMeta(); PotionEffect eff1 = new PotionEffect(PotionEffectType.INVISIBILITY, 1, 0); + assert potionMeta != null; potionMeta.addCustomEffect(eff1, true); visibility.setItemMeta(potionMeta); - visibility = createIcon(visibility, "invisible", "mode invisible"); + createIcon(visibility, "invisible", "mode invisible"); } else { visibility = null; } if (pe.getPlayer().hasPermission("asedit.itemframe.invisible") || - pe.plugin.getItemFrameVisibility() ) { + pe.plugin.getItemFrameVisibility()) { itemFrameVisible = new ItemStack(Material.ITEM_FRAME, 1); - itemFrameVisible = createIcon(itemFrameVisible, "itemframevisible", "mode itemframe"); + createIcon(itemFrameVisible, "itemframevisible", "mode itemframe"); } else { itemFrameVisible = null; } @@ -152,18 +152,22 @@ private void fillInventory() { disableSlots = createIcon(new ItemStack(Material.BARRIER), "disableslots", "mode disableslots"); } - gravity = createIcon(new ItemStack(Material.SAND), "gravity", "mode gravity"); + if (pe.getPlayer().hasPermission("asedit.gravity")) { + gravity = createIcon(new ItemStack(Material.SAND), "gravity", "mode gravity"); + } plate = createIcon(new ItemStack(Material.STONE_SLAB, 1), "baseplate", "mode baseplate"); - place = createIcon(new ItemStack(Material.MINECART, 1), - "placement", "mode placement"); + if (pe.getPlayer().hasPermission("asedit.placement")) { + place = createIcon(new ItemStack(Material.MINECART, 1), + "placement", "mode placement"); + } rotate = createIcon(new ItemStack(Material.COMPASS, 1), "rotate", "mode rotate"); - if(pe.getPlayer().hasPermission("asedit.equipment")) { + if (pe.getPlayer().hasPermission("asedit.equipment")) { equipment = createIcon(new ItemStack(Material.CHEST, 1), "equipment", "mode equipment"); } @@ -200,12 +204,13 @@ private void fillInventory() { menuInv.setContents(items); } - private ItemStack createIcon( ItemStack icon, String path, String command) { + private ItemStack createIcon(ItemStack icon, String path, String command) { return createIcon(icon, path, command, null); } - private ItemStack createIcon( ItemStack icon, String path, String command, String option) { + private ItemStack createIcon(ItemStack icon, String path, String command, String option) { ItemMeta meta = icon.getItemMeta(); + assert meta != null; meta.getPersistentDataContainer().set(ArmorStandEditorPlugin.instance().getIconKey(), PersistentDataType.STRING, "ase " + command); meta.setDisplayName(getIconName(path, option)); ArrayList loreList = new ArrayList<>(); @@ -218,12 +223,12 @@ private ItemStack createIcon( ItemStack icon, String path, String command, St } - private String getIconName( String path, String option) { + private String getIconName(String path, String option) { return pe.plugin.getLang().getMessage(path, "iconname", option); } - private String getIconDescription( String path, String option) { + private String getIconDescription(String path, String option) { return pe.plugin.getLang().getMessage(path + ".description", "icondescription", option); } diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/protections/GriefDefenderProtection.java b/src/main/java/io/github/rypofalem/armorstandeditor/protections/GriefDefenderProtection.java index 9b4509ff..bee0fb38 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/protections/GriefDefenderProtection.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/protections/GriefDefenderProtection.java @@ -8,19 +8,16 @@ import org.bukkit.Location; import org.bukkit.block.Block; import org.bukkit.entity.Player; -import org.bukkit.plugin.Plugin; import static com.griefdefender.api.claim.TrustTypes.BUILDER; -import static com.griefdefender.api.claim.TrustTypes.RESIDENT; public class GriefDefenderProtection { - private boolean gdEnabled; + private final boolean gdEnabled; public GriefDefenderProtection() { gdEnabled = Bukkit.getPluginManager().isPluginEnabled("GriefDefender"); - if (!gdEnabled) return; } public boolean checkPermission(Block block, Player player) { @@ -35,16 +32,8 @@ public boolean checkPermission(Block block, Player player) { if (landClaim == null || landClaim.isWilderness() || landClaim.isAdminClaim()) { return true; - } else if (landClaim.isBasicClaim() && - !landClaim.isUserTrusted(player.getUniqueId(), RESIDENT) && - !landClaim.allowEdit(player.getUniqueId()) || - landClaim.isBasicClaim() && - !landClaim.isUserTrusted(player.getUniqueId(), BUILDER) && - !landClaim.allowEdit(player.getUniqueId())) { - return false; - } else { - return true; - } + } else + return (!landClaim.isBasicClaim() || landClaim.isUserTrusted(player.getUniqueId(), BUILDER) || landClaim.allowEdit(player.getUniqueId())); } else { return true; } diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/protections/SkyblockProtection.java b/src/main/java/io/github/rypofalem/armorstandeditor/protections/SkyblockProtection.java index 96f23354..2b30e655 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/protections/SkyblockProtection.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/protections/SkyblockProtection.java @@ -14,23 +14,25 @@ public SkyblockProtection(){ //IF YOU WANT YOUR SKYBLOCK ADDED, PLEASE SUBMIT A FEATURE REQUEST! skyblockEnabled = Bukkit.getPluginManager().isPluginEnabled("SuperiorSkyblock2"); - if (!skyblockEnabled) return; } - public boolean checkPermission(Player player){ - if(!skyblockEnabled) return true; - if(player.isOp()) return true; - if(player.hasPermission("asedit.ignoreProtection.skyblock")) return true; //Add Additional Permission + public boolean checkPermission(Player player) { + if (!skyblockEnabled) return true; + if (player.isOp()) return true; + if (player.hasPermission("asedit.ignoreProtection.skyblock")) return true; //Add Additional Permission SuperiorPlayer sp = SuperiorSkyblockAPI.getPlayer(player); //GET ISLAND FOR A GIVEN LOCATION Island island = SuperiorSkyblockAPI.getIslandAt(sp.getLocation()); - - if(!island.isMember(sp) && !island.isCoop(sp) && !sp.hasBypassModeEnabled()){ - return false; - } else { + if (island == null) { return true; + } else { + if (!island.isMember(sp) && !island.isCoop(sp) && !sp.hasBypassModeEnabled()) { + return false; + } else { + return true; + } } } } diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/protections/TownyProtection.java b/src/main/java/io/github/rypofalem/armorstandeditor/protections/TownyProtection.java index 47d779e3..f9b52413 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/protections/TownyProtection.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/protections/TownyProtection.java @@ -16,7 +16,6 @@ public class TownyProtection { public TownyProtection(){ tEnabled = Bukkit.getPluginManager().isPluginEnabled("Towny"); - if (!tEnabled) return; } public boolean checkPermission(Block block, Player player){ diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/protections/WorldGuardProtection.java b/src/main/java/io/github/rypofalem/armorstandeditor/protections/WorldGuardProtection.java index 41d1cc60..0cda9b42 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/protections/WorldGuardProtection.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/protections/WorldGuardProtection.java @@ -34,12 +34,11 @@ public class WorldGuardProtection { private final boolean wgEnabled; - private RegionQuery regionQry = null; + private RegionQuery regionQry; public WorldGuardProtection(){ wgEnabled = Bukkit.getPluginManager().isPluginEnabled("WorldGuard"); - if(!wgEnabled) return; RegionContainer regionContainer = WorldGuard.getInstance().getPlatform().getRegionContainer(); regionQry = regionContainer.createQuery(); } diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml index dbaa2054..7dbc7c10 100644 --- a/src/main/resources/config.yml +++ b/src/main/resources/config.yml @@ -3,7 +3,7 @@ #-----------------------------# #DO NOT CHANGE THIS - CHANGES AUTOMATICALLY PER UPDATE -version: 1.19-35 +version: "1.19.1-36" #----------- LANGUAGE #Name of the language file you wish to use @@ -12,6 +12,10 @@ version: 1.19-35 #Please read the comments at the top of that file before editing/changing/modifying. lang: en_US.yml +#----------- UPDATE NOTIFICATIONS +#Set this to allow your operators to get messages w.r.t Plugin updates +opUpdateNotification: false + #----------- TOOL SETTINGS #Name of the edit tool's item Material. You can find a full list at https://hub.spigotmc.org/javadocs/bukkit/org/bukkit/Material.html @@ -26,8 +30,9 @@ requireToolLore: false toolLore: Let's get dangerous #(Optional) Allow the use of CustomModelData - NOTE: This looks at the editTool set by Config -#and at the Int set here to know what to set. Also please if you are using this, ensure that -#you also give people the ability asedit.give in order to allow them to change their edit +#and at the Int set here to know what to set. +#Also please if you are using this, ensure that you also give people the ability asedit.give in +#order to allow them to change their edit #tool for the right Custom Model Data allowCustomModelData: false customModelDataInt: 0 @@ -41,8 +46,12 @@ coarse: 12 fine: 120 #Allow the option to toggle invisibility for ItemFrames and ArmorStand -invisibleItemFrames: true +#YOu can either use this or the below permissions to allow visibility changes +#asedit.armorstand.invisible armorStandVisibility: true +#asedit.itemframe.invisible +invisibleItemFrames: true + #------ GUI Options @@ -53,8 +62,4 @@ requireSneaking: false #(Optional) Glowing Item Frames Support for Item Frames in 1.17 - WILL NOT WORK IN 1.16 OR LOWER AND 1.17.1 OR HIGHER #If true, players can make itemFrames glow by right-clicking with a Glow Ink Sac -glowingItemFrame: true - -#DO NOT ENABLE - For Testing Purposes. Can lead to unwanted side effects -#Enable if you are submitting a bug report PLEASE! -debug: false \ No newline at end of file +glowingItemFrame: true \ No newline at end of file diff --git a/src/main/resources/lang/pt_BR.yml b/src/main/resources/lang/pt_BR.yml new file mode 100644 index 00000000..84094412 --- /dev/null +++ b/src/main/resources/lang/pt_BR.yml @@ -0,0 +1,239 @@ +#Traduzido por thiagogebrim + +iconname: e +icondescription: 6 +info: 6 +warn: c +menutitle: 8 + +#info +setmode: + msg: "Modo definido: ." + head: Posição da Cabeça + body: Posição do corpo + leftleg: Posição da perna esquerda + rightleg: Posição da perna direita + leftarm: Posição do braço esquerdo + rightarm: Posição do braço direito + equipment: Equipamento + showarms: Alternar exibição de braços + invisible: Toggle Visibility + size: Alterar tamanho + disableslots: Alternar Desativar Slots + gravity: Toggle Gravity + baseplate: Alternar a placa da base + placement: Placement + rotate: Rotação + copy: Copiar + paste: Colar + reset: Redefinir posição + itemframe: Toggle Itemframe Visibility +setaxis: + msg: Configurando o eixo para . + x: X + y: Y + z: Z +setslot: + msg: Configurando o slot de cópia para . +setadj: + msg: Ajuste definido para . + coarse: Grande + fine: Pequeno +setgravity: + msg: A gravidade virou . + true: sim + false: não +nomode: + msg: Primeiro clique com a ferramenta de edição sem olhar para um suporte de armadura para selecionar um modo de edição! +nomodeif: + msg: Click with the Edit Tool away from the ItemFrame to select a mode first! +copied: + msg: ArmorStand state copied to slot . +pasted: + msg: ArmorStand state pasted from slot . +disabledslots: + msg: Toggled Equipment locks +target: + msg: ArmorStand target locked. +notarget: + msg: ArmorStand target unlocked. +frametarget: + msg: Itemframe target locked +noframetarget: + msg: Itemframe target unlocked. +give: + msg: Player given Item with CustomModelData +doubletarget: + msg: Please look at either an ArmorStand or an ItemFrame, not both! +reloaded: + msg: Configuration File has been reloaded. +help: + msg: "1. Segure a ferramenta de edição em sua mão principal. + + 2. Clique com o botão esquerdo ou direito longe de um suporte de armadura para abrir o menu. + + 3. Selecione as opções no menu. + + 4. Clique com o botão esquerdo no suporte de armadura com a ferramenta de edição na mão para aplicar as opções. + + 5. Clique com o botão direito para editar ao contrário!" +helptips: + msg: "Tips: + + 1. Press the \"Swap Item in Hands\" key (default F) while holding the edit tool to target a specific armor stand, if other armor stands are in the way. + + 2. You can apply NameTags to armor stands. You may use the & symbol to make colored names. + + 3. You can use crouch + scroll wheel while holding the edit tool to change Axis without opening the menu" +helpurl: + msg: "" + +#warn +cantedit: + msg: Sorry, you cannot edit armor stands here! +noperm: + msg: You don't have permission to use this! +noslotnumcom: + msg: You must specify a slot number! +noadjcom: + msg: You must specify Coarse or Fine adjustment! +noaxiscom: + msg: You must specify an Axis! +nomodecom: + msg: You must specify a Mode! +noreloadcom: + msg: You don't have permission to use the reload command! +nogive: + msg: You do not have permission to use the give command. + +#menutitle +mainmenutitle: + msg: Editor do suporte de armaduras +equiptitle: + msg: Suporte de armaduras equipamentos + +#icons +xaxis: + msg: Eixo X + description: + msg: Girar partes do corpo ao longo do eixo X +yaxis: + msg: Eixo Y + description: + msg: Girar partes do corpo ao longo do eixo Y +zaxis: + msg: Eixo Z + description: + msg: Girar partes do corpo ao longo do eixo Z +coarseadj: + msg: Ajuste grande + description: + msg: Faça grandes ajustes +fineadj: + msg: Ajuste pequeno + description: + msg: Faça pequenos ajustes +head: + msg: Posição da cabeça + description: + msg: Rotaciona a cabeça +body: + msg: Posição do corpo + description: + msg: Rotaciona o corpo +leftleg: + msg: Posição da perna esquerda + description: + msg: Rotaciona a perna esquerda +rightleg: + msg: Posição da perna direita + description: + msg: Rotaciona a perna direita +leftarm: + msg: Posição do braço esquerdo + description: + msg: Rotaciona o braço esquerdo +rightarm: + msg: Posição do braço direito + description: + msg: Rotaciona o braço direito +equipment: + msg: Equipamento + description: + msg: Edita o equipamento +showarms: + msg: Exibir braços + description: + msg: Defina braços aparentes ou escondidos +invisible: + msg: Visibility + description: + msg: Make it visibile or invisible +size: + msg: Tamanho + description: + msg: Defina como grande ou pequeno +disableslots: + msg: Desativar slots + description: + msg: Habilitar e desabilitar o bloqueio do equipamento +gravity: + msg: Gravidade + description: + msg: (não funciona) +baseplate: + msg: Placa da base + description: + msg: Ativar ou desativar a placa da base +placement: + msg: Placement + description: + msg: Move the entire armorstand +rotate: + msg: Girar + description: + msg: Gira a entidade do suporte de armaduras +copy: + msg: Copiar + description: + msg: Copie as configurações do suporte de armaduras +paste: + msg: Colar + description: + msg: Cole as configurações do suporte de armaduras +copyslot: + msg: Copiar Slot + description: + msg: Selecionar esse slot para copiar as configurações +reset: + msg: Resetar Posição + description: + msg: Redefinir a posição da parte do corpo para o padrão +helpgui: + msg: Ajuda! + description: + msg: Clique para conseguir ajuda! +itemframevisible: + msg: Itemframe Visibility + description: + msg: Toggles an itemframes visibility + +#icons (equipment menu) +disabled: + msg: Desativado +equipslot: + msg: + description: + msg: Arraste seu para o slot abaixo + helm: Capacete + chest: Peitoral + pants: Calças + boots: Botas + rhand: Item na mão direita + lhand: Item na mão esquerda + helm: Capacete + chest: Peitoral + pants: Calças + boots: Botas + rhand: Mão direita + lhand: Mão esquerda \ No newline at end of file diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index 44310662..ea07ff8c 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -1,6 +1,6 @@ name: ArmorStandEditor main: io.github.rypofalem.armorstandeditor.ArmorStandEditorPlugin -version: 1.19-35 +version: 1.19.1-36 api-version: "1.13" website: https://www.spigotmc.org/resources/94503/ author: Wolfstorm @@ -39,7 +39,13 @@ permissions: asedit.equipment: description: Access armorstand equipment GUI default: true - asedit.disableslots: + asedit.gravity: + description: Changes whether the armor stand has gravity + default: true + asedit.placement: + description: Changes whether the armor stand can be moved using the item for editing + default: true + asedit.disableSlots: description: Allows locking and unlocking the contents of an ArmorStand. When locked, armor and equipement can not be added or removed without unlocking it first. default: true asedit.give: @@ -49,6 +55,7 @@ permissions: description: Allows the checking for updates. default: false + asedit.ignoreProtection.towny: description: Allows user to ignore Towny's Protection Limitations. default: false @@ -95,7 +102,9 @@ permissions: children: asedit.basic: true asedit.equipment: true - asedit.disableslots: true + asedit.gravity: true + asedit.placement: true + asedit.disableSlots: true asedit.rename: true asedit.update: false asedit.give: false @@ -107,7 +116,9 @@ permissions: asedit.itemframe.invisible: true asedit.armorstand.invisible: true asedit.equipment: true - asedit.disableslots: true + asedit.gravity: true + asedit.placement: true + asedit.disableSlots: true asedit.rename: true asedit.update: true asedit.ignorePermissions.*: true \ No newline at end of file From 3725e170130d256f95b1d64c9d5dffb0248a39d8 Mon Sep 17 00:00:00 2001 From: PlanetTeamSpeak Date: Mon, 29 Aug 2022 18:27:05 +0200 Subject: [PATCH 169/369] [CORE] Add Lands protection (#116) * Add Lands protection and clean up protection system a bit * Didn't mean to add that * Add Lands to softdepend * Bump version * Bump version * Add comment * Add author * Add another comment * Add override permission check and add comment Co-Authored with: PlanetTeamSpeakk --- pom.xml | 9 +++- .../armorstandeditor/PlayerEditorManager.java | 53 ++++--------------- .../protections/GriefDefenderProtection.java | 2 +- .../GriefPreventionProtection.java | 2 +- .../protections/LandsProtection.java | 33 ++++++++++++ .../protections/PlotSquaredProtection.java | 2 +- .../protections/Protection.java | 8 +++ .../protections/SkyblockProtection.java | 5 +- .../protections/TownyProtection.java | 2 +- .../protections/WorldGuardProtection.java | 2 +- src/main/resources/plugin.yml | 9 ++-- 11 files changed, 72 insertions(+), 55 deletions(-) create mode 100644 src/main/java/io/github/rypofalem/armorstandeditor/protections/LandsProtection.java create mode 100644 src/main/java/io/github/rypofalem/armorstandeditor/protections/Protection.java diff --git a/pom.xml b/pom.xml index a427d317..6f1adde8 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ io.github.rypofalem.armorstandeditor armorstandeditor jar - 1.19.1-36 + 1.19.2-37 armorstandeditor http://maven.apache.org @@ -141,6 +141,13 @@ 2.1.0-SNAPSHOT provided + + + com.github.angeschossen + LandsAPI + 6.12.1 + provided + diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditorManager.java b/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditorManager.java index ebacce2d..b3d6954f 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditorManager.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditorManager.java @@ -19,6 +19,7 @@ package io.github.rypofalem.armorstandeditor; +import com.google.common.collect.ImmutableList; import io.github.rypofalem.armorstandeditor.menu.ASEHolder; import io.github.rypofalem.armorstandeditor.protections.*; import me.ryanhamshire.GriefPrevention.GriefPrevention; @@ -56,12 +57,10 @@ public class PlayerEditorManager implements Listener { private TickCounter counter; private ArrayList as = null; private ArrayList itemF = null; - private TownyProtection townyProtection; - private PlotSquaredProtection plotSquaredProtection; - private WorldGuardProtection worldGuardProtection; - private GriefPreventionProtection griefPreventionProtection; - private SkyblockProtection skyblockProtection; - private GriefDefenderProtection griefDefenderProtection; + // Instantiate protections used to determine whether a player may edit an armor stand or item frame + private final List protections = ImmutableList.of( + new GriefDefenderProtection(), new GriefPreventionProtection(), new LandsProtection(), + new PlotSquaredProtection(), new SkyblockProtection(), new TownyProtection(), new WorldGuardProtection()); PlayerEditorManager( ArmorStandEditorPlugin plugin) { this.plugin = plugin; @@ -72,14 +71,6 @@ public class PlayerEditorManager implements Listener { fineMov = .03125; // 1/32 counter = new TickCounter(); Bukkit.getServer().getScheduler().runTaskTimer(plugin, counter, 0, 1); - - //Implementation of Protection Support - PlotSquared, WorldGuard, Towny, GriefPrevention etc. - townyProtection = new TownyProtection(); - plotSquaredProtection = new PlotSquaredProtection(); - worldGuardProtection = new WorldGuardProtection(); - griefPreventionProtection = new GriefPreventionProtection(); - skyblockProtection = new SkyblockProtection(); - griefDefenderProtection = new GriefDefenderProtection(); } @EventHandler(priority = EventPriority.LOWEST) @@ -290,37 +281,11 @@ private ArrayList getFrameTargets(Player player) { } - boolean canEdit( Player player, ArmorStand as) { - + boolean canEdit( Player player, Entity entity) { //Get the Entity being checked for editing - Block block = as.getLocation().getBlock(); - - //Permission checks for Protection - boolean protectTActive = townyProtection.checkPermission(block, player); - boolean protectPSActive = plotSquaredProtection.checkPermission(block, player); - boolean protectWGActive = worldGuardProtection.checkPermission(block, player); - boolean protectGPActive = griefPreventionProtection.checkPermission(block, player); - boolean protectSkyActive = skyblockProtection.checkPermission(player); - boolean protectGDActive = griefDefenderProtection.checkPermission(block, player); - - return protectTActive && protectPSActive && protectWGActive && protectGPActive && protectSkyActive && protectGDActive; - - } - - boolean canEdit( Player player, ItemFrame itemf) { - - //Get the Entity being checked for editing - Block block = itemf.getLocation().getBlock(); - - //Permission checks for Protection - boolean protectTActive = townyProtection.checkPermission(block, player); - boolean protectPSActive = plotSquaredProtection.checkPermission(block, player); - boolean protectWGActive = worldGuardProtection.checkPermission(block, player); - boolean protectGPActive = griefPreventionProtection.checkPermission(block, player); - boolean protectSkyActive = skyblockProtection.checkPermission(player); - boolean protectGDActive = griefDefenderProtection.checkPermission(block, player); - - return protectTActive && protectPSActive && protectWGActive && protectGPActive && protectSkyActive && protectGDActive; + Block block = entity.getLocation().getBlock(); + // Check if all protections allow this edit, if one fails, don't allow edit + return protections.stream().allMatch(protection -> protection.checkPermission(block, player)); } void applyLeftTool( Player player, ArmorStand as) { diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/protections/GriefDefenderProtection.java b/src/main/java/io/github/rypofalem/armorstandeditor/protections/GriefDefenderProtection.java index bee0fb38..18221a7c 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/protections/GriefDefenderProtection.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/protections/GriefDefenderProtection.java @@ -12,7 +12,7 @@ import static com.griefdefender.api.claim.TrustTypes.BUILDER; -public class GriefDefenderProtection { +public class GriefDefenderProtection implements Protection { private final boolean gdEnabled; diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/protections/GriefPreventionProtection.java b/src/main/java/io/github/rypofalem/armorstandeditor/protections/GriefPreventionProtection.java index dc852f65..7e92e0e7 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/protections/GriefPreventionProtection.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/protections/GriefPreventionProtection.java @@ -10,7 +10,7 @@ import org.bukkit.entity.Player; -public class GriefPreventionProtection { +public class GriefPreventionProtection implements Protection { private boolean gpEnabled; private GriefPrevention griefPrevention = null; diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/protections/LandsProtection.java b/src/main/java/io/github/rypofalem/armorstandeditor/protections/LandsProtection.java new file mode 100644 index 00000000..aac12c11 --- /dev/null +++ b/src/main/java/io/github/rypofalem/armorstandeditor/protections/LandsProtection.java @@ -0,0 +1,33 @@ +package io.github.rypofalem.armorstandeditor.protections; + +import io.github.rypofalem.armorstandeditor.ArmorStandEditorPlugin; +import me.angeschossen.lands.api.integration.LandsIntegration; +import me.angeschossen.lands.api.land.Area; +import me.angeschossen.lands.api.land.Land; +import me.angeschossen.lands.api.player.LandPlayer; +import org.bukkit.Bukkit; +import org.bukkit.block.Block; +import org.bukkit.entity.Player; + +public class LandsProtection implements Protection { + private final boolean landsEnabled; + private LandsIntegration lands; + + public LandsProtection() { + landsEnabled = Bukkit.getPluginManager().isPluginEnabled("Lands"); + + if (landsEnabled) + lands = new LandsIntegration(ArmorStandEditorPlugin.instance()); + } + + @Override + public boolean checkPermission(Block block, Player player) { + if (!landsEnabled || player.hasPermission("asedit.ignoreProtection.lands")) return true; + + // Check if the player is trusted in the area or land, in case they're not in an area, they're in. + Land land = lands.getLand(block.getLocation()); + Area area = land == null ? null : land.getArea(block.getLocation()); + LandPlayer lPlayer = lands.getLandPlayer(player.getUniqueId()); + return area == null ? land == null || land.isTrusted(lPlayer) : area.isTrusted(player.getUniqueId()); + } +} diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/protections/PlotSquaredProtection.java b/src/main/java/io/github/rypofalem/armorstandeditor/protections/PlotSquaredProtection.java index 175081fd..850faa42 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/protections/PlotSquaredProtection.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/protections/PlotSquaredProtection.java @@ -9,7 +9,7 @@ import org.bukkit.block.Block; import org.bukkit.entity.Player; -public class PlotSquaredProtection { +public class PlotSquaredProtection implements Protection { private final boolean psEnabled; private BukkitPlatform psPlatform = null; diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/protections/Protection.java b/src/main/java/io/github/rypofalem/armorstandeditor/protections/Protection.java new file mode 100644 index 00000000..971c1126 --- /dev/null +++ b/src/main/java/io/github/rypofalem/armorstandeditor/protections/Protection.java @@ -0,0 +1,8 @@ +package io.github.rypofalem.armorstandeditor.protections; + +import org.bukkit.block.Block; +import org.bukkit.entity.Player; + +public interface Protection { + boolean checkPermission(Block block, Player player); +} diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/protections/SkyblockProtection.java b/src/main/java/io/github/rypofalem/armorstandeditor/protections/SkyblockProtection.java index 2b30e655..7dd5a0f0 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/protections/SkyblockProtection.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/protections/SkyblockProtection.java @@ -4,9 +4,10 @@ import com.bgsoftware.superiorskyblock.api.island.Island; import com.bgsoftware.superiorskyblock.api.wrappers.SuperiorPlayer; import org.bukkit.Bukkit; +import org.bukkit.block.Block; import org.bukkit.entity.Player; -public class SkyblockProtection { +public class SkyblockProtection implements Protection { private final boolean skyblockEnabled; public SkyblockProtection(){ @@ -16,7 +17,7 @@ public SkyblockProtection(){ skyblockEnabled = Bukkit.getPluginManager().isPluginEnabled("SuperiorSkyblock2"); } - public boolean checkPermission(Player player) { + public boolean checkPermission(Block block, Player player) { if (!skyblockEnabled) return true; if (player.isOp()) return true; if (player.hasPermission("asedit.ignoreProtection.skyblock")) return true; //Add Additional Permission diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/protections/TownyProtection.java b/src/main/java/io/github/rypofalem/armorstandeditor/protections/TownyProtection.java index f9b52413..04f1c511 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/protections/TownyProtection.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/protections/TownyProtection.java @@ -10,7 +10,7 @@ import org.bukkit.entity.Player; //FIX for https://github.com/Wolfieheart/ArmorStandEditor-Issues/issues/15 -public class TownyProtection { +public class TownyProtection implements Protection { private final boolean tEnabled; diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/protections/WorldGuardProtection.java b/src/main/java/io/github/rypofalem/armorstandeditor/protections/WorldGuardProtection.java index 0cda9b42..25cc4941 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/protections/WorldGuardProtection.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/protections/WorldGuardProtection.java @@ -32,7 +32,7 @@ import org.bukkit.block.Block; import org.bukkit.entity.Player; -public class WorldGuardProtection { +public class WorldGuardProtection implements Protection { private final boolean wgEnabled; private RegionQuery regionQry; diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index ea07ff8c..4f26e0a5 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -1,12 +1,12 @@ name: ArmorStandEditor main: io.github.rypofalem.armorstandeditor.ArmorStandEditorPlugin -version: 1.19.1-36 +version: 1.19.2-37 api-version: "1.13" website: https://www.spigotmc.org/resources/94503/ author: Wolfstorm -authors: [Wolfstorm, Marfjeh, miknes123, rypofalem, sekwah41, Sikatsu1997, Cool_boy, sumdream, Amaury Carrade, nicuch, kotarobo, prettydude, Jumpy91, Niasio, Patbox, Puremin0rez, Prof-Bloodstone] +authors: [Wolfstorm, Marfjeh, miknes123, rypofalem, sekwah41, Sikatsu1997, Cool_boy, sumdream, Amaury Carrade, nicuch, kotarobo, prettydude, Jumpy91, Niasio, Patbox, Puremin0rez, Prof-Bloodstone, PlanetTeamSpeak] description: Allows players to edit data of armorstands without any commands. -softdepend: [Towny, WorldGuard, GriefPrevention, PlotSquared] +softdepend: [Towny, WorldGuard, GriefPrevention, PlotSquared, Lands] commands: ase: @@ -74,6 +74,9 @@ permissions: asedit.ignoreProtection.griefDefender: description: Allows user to ignore GriefDefender's Protection Limitations. default: false + asedit.ignoreProtection.lands: + description: Allows user to ignore Lands' Protection Limitations. + default: false asedit.ignoreProtection.*: From 30c449535a4f0a1c5fbc3efdeb797023e10ae926 Mon Sep 17 00:00:00 2001 From: "Larry (Wolfieheart)" Date: Mon, 29 Aug 2022 18:30:58 +0200 Subject: [PATCH 170/369] [CORE] Add Lands Protection Bypass to permpack Add in Lands Protection Byspass to the relevant Permpacks - Extension done at the end of #106 --- src/main/resources/plugin.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index 4f26e0a5..2f89b56c 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -89,6 +89,7 @@ permissions: asedit.ignoreProtection.worldGuard: true asedit.ignoreProtection.skyblock: true asedit.ignoreProtection.griefDefender: true + asedit.ignoreProtection.lands: true asedit.permpack.dontIgnoreProtections: default: true @@ -99,6 +100,7 @@ permissions: asedit.ignoreProtection.worldGuard: false asedit.ignoreProtection.skyblock: false asedit.ignoreProtection.griefDefender: false + asedit.ignoreProtection.lands: false asedit.permpack.basic: default: true @@ -124,4 +126,4 @@ permissions: asedit.disableSlots: true asedit.rename: true asedit.update: true - asedit.ignorePermissions.*: true \ No newline at end of file + asedit.ignorePermissions.*: true From 72380c2c487448d7832dd602f72896221f9f20b5 Mon Sep 17 00:00:00 2001 From: "Larry (Wolfieheart)" Date: Fri, 9 Sep 2022 12:00:59 +0200 Subject: [PATCH 171/369] [CORE] Remove Discord Closing of the community Discord for the time being. --- README.md | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/README.md b/README.md index 59442670..1999d67d 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,6 @@ [![Build Status](https://github.com/Wolfst0rm/ArmorStandEditor/actions/workflows/maven-publish.yml/badge.svg?style=flat)](https://github.com/Wolfst0rm/ArmorStandEditor/actions/workflows/maven-publish.yml) [![Maintainability Rating](https://sonarcloud.io/api/project_badges/measure?project=wolfieheart_ArmorStandEditor&metric=sqale_rating&style=flat)](https://sonarcloud.io/summary/new_code?id=wolfieheart_ArmorStandEditor) [![CodeFactor](https://www.codefactor.io/repository/github/wolfieheart/armorstandeditor/badge?style=flat)](https://www.codefactor.io/repository/github/wolfieheart/armorstandeditor) -[![Official Discord](https://img.shields.io/discord/955408323522494464?label=Discord%20for%20ASE)](https://discord.gg/aUf4AWAKmr) [![Scanned with Sonarcloud](https://img.shields.io/badge/Scanned%20With-Sonarcloud-orange?style=flat&logo=sonarcloud)](https://sonarcloud.io/summary/new_code?id=Wolfst0rm_ArmorStandEditor) [![wakatime](https://wakatime.com/badge/github/Wolfst0rm/ArmorStandEditor.svg?style=flat)](https://wakatime.com/badge/github/Wolfst0rm/ArmorStandEditor) [![Compatibility/GetBukkit](https://img.shields.io/badge/Compatability-Paper%2C%20Spigot%2C%20Bukkit%20etc.%20(GetBukkit.org)-yellowgreen?style=flat)](https://getbukkit.org/) @@ -66,7 +65,6 @@ subject to change in the future. The minimum enforced API Version is 1.13. * Glowing ArmorStand to signify Targeting and Slot Disables through the use of Scoreboards. You can also follow our [Feature Roadmap](https://github.com/Wolfst0rm/ArmorStandEditor-Issues/issues/11) to see what we have planned (Updated as required). -You can also find us on our Discord at: [https://discord.com/invite/aUf4AWAKmr](https://discord.com/invite/aUf4AWAKmr) ## Support Support for ArmorStandEditor is provided: @@ -77,4 +75,4 @@ If there are issues with the plugin on the latest release, you can report them [ If there are new feature requests, you can ask them to be implemented [here](https://github.com/Wolfst0rm/ArmorStandEditor/issues/new?assignees=&labels=&template=feature-request.yml). -**NOTE:** Bugs are also first tested to ensure that they can be reproduced according to the reported steps. If they can not, we will ask for more info. \ No newline at end of file +**NOTE:** Bugs are also first tested to ensure that they can be reproduced according to the reported steps. If they can not, we will ask for more info. From 14589f55e134191ce7b7b2d0f78d1224b7e10f7c Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 9 Sep 2022 12:09:09 +0200 Subject: [PATCH 172/369] [CORE] Bump LandsAPI to v6.14.4 (#117) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Larry (Wolfieheart) --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 6f1adde8..2ffd5391 100644 --- a/pom.xml +++ b/pom.xml @@ -145,7 +145,7 @@ com.github.angeschossen LandsAPI - 6.12.1 + 6.14.4 provided From 16f14b8c1145544c84178edc0b39e55bc507c1f5 Mon Sep 17 00:00:00 2001 From: "Larry (Wolfieheart)" Date: Fri, 9 Sep 2022 12:13:39 +0200 Subject: [PATCH 173/369] [CORE] Apply Towny Bump here as well --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 2ffd5391..e39ae7e4 100644 --- a/pom.xml +++ b/pom.xml @@ -117,7 +117,7 @@ com.palmergames.bukkit.towny towny - 0.98.3.2 + 0.98.3.8 provided From 5aa69152c643baa672178123dd4d2f36ca94e550 Mon Sep 17 00:00:00 2001 From: Wolfieheart Date: Sat, 10 Sep 2022 11:43:21 +0200 Subject: [PATCH 174/369] [CORE] Hotfix - Protections not detecting Plugins Enabled Correctly. Closes #120 Signed-off-by: Wolfieheart --- .../armorstandeditor/protections/GriefDefenderProtection.java | 1 + .../rypofalem/armorstandeditor/protections/LandsProtection.java | 2 ++ .../armorstandeditor/protections/SkyblockProtection.java | 1 + .../rypofalem/armorstandeditor/protections/TownyProtection.java | 1 + .../armorstandeditor/protections/WorldGuardProtection.java | 1 + 5 files changed, 6 insertions(+) diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/protections/GriefDefenderProtection.java b/src/main/java/io/github/rypofalem/armorstandeditor/protections/GriefDefenderProtection.java index 18221a7c..60ac7919 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/protections/GriefDefenderProtection.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/protections/GriefDefenderProtection.java @@ -18,6 +18,7 @@ public class GriefDefenderProtection implements Protection { public GriefDefenderProtection() { gdEnabled = Bukkit.getPluginManager().isPluginEnabled("GriefDefender"); + if(!gdEnabled) return; } public boolean checkPermission(Block block, Player player) { diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/protections/LandsProtection.java b/src/main/java/io/github/rypofalem/armorstandeditor/protections/LandsProtection.java index aac12c11..c55ecec5 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/protections/LandsProtection.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/protections/LandsProtection.java @@ -18,6 +18,8 @@ public LandsProtection() { if (landsEnabled) lands = new LandsIntegration(ArmorStandEditorPlugin.instance()); + else + return; } @Override diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/protections/SkyblockProtection.java b/src/main/java/io/github/rypofalem/armorstandeditor/protections/SkyblockProtection.java index 7dd5a0f0..b1a41d65 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/protections/SkyblockProtection.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/protections/SkyblockProtection.java @@ -15,6 +15,7 @@ public SkyblockProtection(){ //IF YOU WANT YOUR SKYBLOCK ADDED, PLEASE SUBMIT A FEATURE REQUEST! skyblockEnabled = Bukkit.getPluginManager().isPluginEnabled("SuperiorSkyblock2"); + if(!skyblockEnabled) return; } public boolean checkPermission(Block block, Player player) { diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/protections/TownyProtection.java b/src/main/java/io/github/rypofalem/armorstandeditor/protections/TownyProtection.java index 04f1c511..9c5a1da0 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/protections/TownyProtection.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/protections/TownyProtection.java @@ -16,6 +16,7 @@ public class TownyProtection implements Protection { public TownyProtection(){ tEnabled = Bukkit.getPluginManager().isPluginEnabled("Towny"); + if(!tEnabled) return; } public boolean checkPermission(Block block, Player player){ diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/protections/WorldGuardProtection.java b/src/main/java/io/github/rypofalem/armorstandeditor/protections/WorldGuardProtection.java index 25cc4941..5d172cbf 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/protections/WorldGuardProtection.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/protections/WorldGuardProtection.java @@ -38,6 +38,7 @@ public class WorldGuardProtection implements Protection { public WorldGuardProtection(){ wgEnabled = Bukkit.getPluginManager().isPluginEnabled("WorldGuard"); + if(!wgEnabled) return; RegionContainer regionContainer = WorldGuard.getInstance().getPlatform().getRegionContainer(); regionQry = regionContainer.createQuery(); From d78c49e761ca7ca4e8f492d7fb328dddf5b74f21 Mon Sep 17 00:00:00 2001 From: Wolfieheart Date: Sat, 10 Sep 2022 11:43:49 +0200 Subject: [PATCH 175/369] [CORE] Bump to 1.19.2-37.2 Signed-off-by: Wolfieheart --- pom.xml | 2 +- src/main/resources/config.yml | 2 +- src/main/resources/plugin.yml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/pom.xml b/pom.xml index e39ae7e4..99b24d8a 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ io.github.rypofalem.armorstandeditor armorstandeditor jar - 1.19.2-37 + 1.19.2-37.2 armorstandeditor http://maven.apache.org diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml index 7dbc7c10..b191dd27 100644 --- a/src/main/resources/config.yml +++ b/src/main/resources/config.yml @@ -3,7 +3,7 @@ #-----------------------------# #DO NOT CHANGE THIS - CHANGES AUTOMATICALLY PER UPDATE -version: "1.19.1-36" +version: "1.19.2-37.2" #----------- LANGUAGE #Name of the language file you wish to use diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index 2f89b56c..dfa073aa 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -1,6 +1,6 @@ name: ArmorStandEditor main: io.github.rypofalem.armorstandeditor.ArmorStandEditorPlugin -version: 1.19.2-37 +version: 1.19.2-37.2 api-version: "1.13" website: https://www.spigotmc.org/resources/94503/ author: Wolfstorm From 22ccc01af61ae65b7b431b628fb3bb8fae8de8ed Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 11 Sep 2022 13:41:17 +0200 Subject: [PATCH 176/369] [CORE] Bump LandsAPI to v6.15.0 (#121) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 99b24d8a..e25ae5af 100644 --- a/pom.xml +++ b/pom.xml @@ -145,7 +145,7 @@ com.github.angeschossen LandsAPI - 6.14.4 + 6.15.0 provided From f023285992ea02f46dadb5697b39a250d342843d Mon Sep 17 00:00:00 2001 From: "Larry (Wolfieheart)" Date: Mon, 12 Sep 2022 21:06:36 +0200 Subject: [PATCH 177/369] [CORE] Add in Custom Item Name Support - Closes #118 (#122) * [CORE] Add in Functionality for Custom Names * [CORE] Bump to 1.19.2-37.3 * [CORE] Bump to 1.19.2-37.3 * [CORE] Bump PlotSquared to 6.9.4 * [CORE] Optimize Imports * [CORE] Fix Bugs in Implementation Part 1 - Objests.RequireNonNull * [CORE] Fix Bug in Checking String Comparison * [CORE] Fix Build Compliation due to incorrect variable * [CORE] Bump to 1.19.2-38 - After Debug Fixes. Signed-off-by: Wolfieheart Signed-off-by: Wolfieheart --- pom.xml | 6 ++-- .../ArmorStandEditorPlugin.java | 30 ++++++++++++++++--- src/main/resources/config.yml | 10 +++++-- src/main/resources/plugin.yml | 2 +- 4 files changed, 38 insertions(+), 10 deletions(-) diff --git a/pom.xml b/pom.xml index e25ae5af..f8fbe29d 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ io.github.rypofalem.armorstandeditor armorstandeditor jar - 1.19.2-37.2 + 1.19.2-37.3 armorstandeditor http://maven.apache.org @@ -90,14 +90,14 @@ com.plotsquared PlotSquared-Core - 6.9.3 + 6.9.4 provided com.plotsquared PlotSquared-Bukkit - 6.9.3 + 6.9.4 provided diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/ArmorStandEditorPlugin.java b/src/main/java/io/github/rypofalem/armorstandeditor/ArmorStandEditorPlugin.java index 4b648d07..65dd151d 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/ArmorStandEditorPlugin.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/ArmorStandEditorPlugin.java @@ -20,9 +20,7 @@ package io.github.rypofalem.armorstandeditor; import io.github.rypofalem.armorstandeditor.language.Language; - import com.jeff_media.updatechecker.*; - import io.github.rypofalem.armorstandeditor.Metrics.*; import org.bukkit.Bukkit; @@ -71,11 +69,14 @@ public class ArmorStandEditorPlugin extends JavaPlugin{ int editToolData = Integer.MIN_VALUE; boolean requireSneaking = false; + boolean requireToolName = false; + String editToolName = null; boolean requireToolLore = false; String editToolLore = null; boolean allowCustomModelData = false; Integer customModelDataInt = Integer.MIN_VALUE; + boolean debug = false; //weather or not to broadcast messages via print(String message) double coarseRot; double fineRot; @@ -192,6 +193,13 @@ public void onEnable(){ //ArmorStandVisibility Node armorStandVisibility = getConfig().getBoolean("armorStandVisibility", true); + //Do we require a custom tool name? + requireToolName = getConfig().getBoolean("requireToolName", false); + if(requireToolName){ + editToolName = getConfig().getString("toolName", null); + if(editToolName != null) editToolName = ChatColor.translateAlternateColorCodes('&', editToolName); + } + //Is there NBT Required for the tool requireToolData = getConfig().getBoolean("requireToolData", false); @@ -370,14 +378,24 @@ public boolean isEditTool(ItemStack itemStk){ } } + if(requireToolName && editToolName != null){ + if(!itemStk.hasItemMeta()) { return false; } + + //Get the name of the Edit Tool - If Null, return false + String itemName = Objects.requireNonNull(itemStk.getItemMeta()).getDisplayName(); + + //If the name of the Edit Tool is not the Name specified in Config then Return false + if(!itemName.equals(editToolName)) { return false; } + + } + if(requireToolLore && editToolLore != null){ //If the ItemStack does not have Metadata then we return false if(!itemStk.hasItemMeta()) { return false; } //Get the lore of the Item and if it is null - Return False - List itemLore = Objects.requireNonNull(itemStk.getItemMeta()).getLore(); //Ignore warnings this gives. Will be fixed in the future - if (itemLore == null){ return false; } + List itemLore = Objects.requireNonNull(itemStk.getItemMeta()).getLore(); //If the Item does not have Lore - Return False boolean hasTheItemLore = itemStk.getItemMeta().hasLore(); @@ -467,6 +485,10 @@ private void getMetrics(){ //ArmorStandInvis Config metrics.addCustomChart(new SimplePie("itemframe_invisibility_used", () -> getConfig().getString("invisibleItemFrames"))); + //TODO: Add tracking to see who is using Custom Naming in BStats - AKA Remove this soon TM + //metrics.addCustomChart(new SimplePie("custom_toolname_enabled", () -> getConfig().getString("requireToolName"))); + + } public NamespacedKey getIconKey() { diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml index b191dd27..68cdf88b 100644 --- a/src/main/resources/config.yml +++ b/src/main/resources/config.yml @@ -3,7 +3,7 @@ #-----------------------------# #DO NOT CHANGE THIS - CHANGES AUTOMATICALLY PER UPDATE -version: "1.19.2-37.2" +version: "1.19.2-38" #----------- LANGUAGE #Name of the language file you wish to use @@ -25,12 +25,18 @@ tool: FLINT requireToolData: false toolData: 0 +#(Optional) data that the plugin looks for to identify the name of the Edit Tool. Useful for Public Servers that do not want +#normal use of Flint to be impacted. +requireToolName: false +toolName: Example Name here + #(Optional) The first "Lore" entry that the plugin looks for to identify the edit tool. requireToolLore: false toolLore: Let's get dangerous #(Optional) Allow the use of CustomModelData - NOTE: This looks at the editTool set by Config #and at the Int set here to know what to set. + #Also please if you are using this, ensure that you also give people the ability asedit.give in #order to allow them to change their edit #tool for the right Custom Model Data @@ -62,4 +68,4 @@ requireSneaking: false #(Optional) Glowing Item Frames Support for Item Frames in 1.17 - WILL NOT WORK IN 1.16 OR LOWER AND 1.17.1 OR HIGHER #If true, players can make itemFrames glow by right-clicking with a Glow Ink Sac -glowingItemFrame: true \ No newline at end of file +glowingItemFrame: true diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index dfa073aa..45563200 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -1,6 +1,6 @@ name: ArmorStandEditor main: io.github.rypofalem.armorstandeditor.ArmorStandEditorPlugin -version: 1.19.2-37.2 +version: 1.19.2-38 api-version: "1.13" website: https://www.spigotmc.org/resources/94503/ author: Wolfstorm From 17453743d67ad4206b552a09d1afea310f1c70e7 Mon Sep 17 00:00:00 2001 From: "Larry (Wolfieheart)" Date: Tue, 11 Oct 2022 10:07:02 +0200 Subject: [PATCH 178/369] [CORE] ArmorStandEditor 1.19.2-38 * [CORE] Fix BStats Language and Add TODOs Fix TODOs * [CORE] ArmorStandEditor 1.19.2-38: Prerequisits (#105) * [CORE] Bump to 1.xx.x-37 (1.xx as I dont know when we will have to update again) Signed-off-by: Wolfieheart * [CI] Bump PlotSquared-Core to v6.9.4 (#112) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * [CI] Bump PlotSquared-Bukkit to v6.9.4 (#111) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * [CI] Bump SuperiorSkyblockAPI to v1.11.1 (#109) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * [CI] Bump towny to v0.98.3.4 (#108) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * [CORE] Bump Towny to 0.98.3.8 (#115) * [CORE] Add Lands protection (#116) * Add Lands protection and clean up protection system a bit * Didn't mean to add that * Add Lands to softdepend * Bump version * Bump version * Add comment * Add author * Add another comment * Add override permission check and add comment Co-Authored with: PlanetTeamSpeakk * [CORE] Add Lands Protection Bypass to permpack Add in Lands Protection Byspass to the relevant Permpacks - Extension done at the end of #106 * Update dependency com.palmergames.bukkit.towny:towny to v0.98.3.8 Co-authored-by: PlanetTeamSpeak Co-authored-by: Larry (Wolfieheart) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * [CORE] Remove Discord Closing of the community Discord for the time being. * [CORE] Bump LandsAPI to v6.14.4 (#117) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Larry (Wolfieheart) * [CORE] Hotfix - Protections not detecting Plugins Enabled Correctly. Closes #120 Signed-off-by: Wolfieheart * [CORE] Bump to 1.19.2-37.2 Signed-off-by: Wolfieheart * [CORE] Add in Functionality for Custom Names * [CORE] Bump to 1.19.2-37.3 * [CORE] Bump to 1.19.2-37.3 * [CORE] Bump PlotSquared to 6.9.4 * [CORE] Optimize Imports * [CORE] Fix Bugs in Implementation Part 1 - Objests.RequireNonNull * [CORE] Fix Bug in Checking String Comparison * [CORE] Fix Build Compliation due to incorrect variable Signed-off-by: Wolfieheart Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: PlanetTeamSpeak * [CORE] Bump Version to 1.19.2-38 (something forgotten) * [CORE] Build Compilation Fix. * [CORE] Fix as this is DEV not for Production Use * [CORE] Bump SuperiorSkyblockAPI to v1.11.1 (#126) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * [CORE] Clean Up TODOs and add message regarding development builds Signed-off-by: Wolfieheart * [CORE] Fix the idiotic bug of ListSTring Indexes Signed-off-by: Wolfieheart * Update dependency org.apache.maven.plugins:maven-shade-plugin to v3.4.0 (#128) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * Update dependency com.bgsoftware:SuperiorSkyblockAPI to v2022 (#129) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Larry (Wolfieheart) * Update dependency com.palmergames.bukkit.towny:towny to v0.98.3.10 (#131) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * Update dependency com.plotsquared:PlotSquared-Bukkit to v6.10.1 (#132) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * Update dependency com.plotsquared:PlotSquared-Core to v6.10.1 (#133) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * [CORE] Define that that Warning is NAB and shouldnt be reported! * [CORE] CR Remarks Signed-off-by: Wolfieheart Signed-off-by: Wolfieheart Signed-off-by: Wolfieheart Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: PlanetTeamSpeak --- pom.xml | 12 +- .../ArmorStandEditorPlugin.java | 106 +++++++++--------- 2 files changed, 60 insertions(+), 58 deletions(-) diff --git a/pom.xml b/pom.xml index f8fbe29d..ba7e63c8 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ io.github.rypofalem.armorstandeditor armorstandeditor jar - 1.19.2-37.3 + 1.19.2-38 armorstandeditor http://maven.apache.org @@ -90,14 +90,14 @@ com.plotsquared PlotSquared-Core - 6.9.4 + 6.10.1 provided com.plotsquared PlotSquared-Bukkit - 6.9.4 + 6.10.1 provided @@ -117,7 +117,7 @@ com.palmergames.bukkit.towny towny - 0.98.3.8 + 0.98.3.10 provided @@ -131,7 +131,7 @@ com.bgsoftware SuperiorSkyblockAPI - 1.11.0 + 2022.8.1 provided @@ -190,7 +190,7 @@ org.apache.maven.plugins maven-shade-plugin - 3.3.0 + 3.4.0 package diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/ArmorStandEditorPlugin.java b/src/main/java/io/github/rypofalem/armorstandeditor/ArmorStandEditorPlugin.java index 65dd151d..1aeec1fd 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/ArmorStandEditorPlugin.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/ArmorStandEditorPlugin.java @@ -37,21 +37,19 @@ import java.io.File; import java.util.HashMap; -import java.util.List; import java.util.Map; import java.util.Objects; public class ArmorStandEditorPlugin extends JavaPlugin{ - public static final int SPIGOT_RESOURCE_ID = 94503; //Used for Update Checker + //!!! DO NOT REMOVE THESE UNDER ANY CIRCUMSTANCES !!! + public static final int SPIGOT_RESOURCE_ID = 94503; //Used for Update Checker private static final int PLUGIN_ID = 12668; //Used for BStats Metrics private NamespacedKey iconKey; private static ArmorStandEditorPlugin instance; private Language lang; - - - boolean opUpdateNotification = false; + //Server Version Detection: Paper or Spigot and Invalid NMS Version String nmsVersion; public boolean hasSpigot = false; @@ -61,23 +59,27 @@ public class ArmorStandEditorPlugin extends JavaPlugin{ static final String SEPARATOR_FIELD = "================================"; public PlayerEditorManager editorManager; - + + //Output for Updates + boolean opUpdateNotification = false; + + //Edit Tool Information Material editTool; String toolType; - boolean requireToolData = false; - boolean sendToActionBar = true; - int editToolData = Integer.MIN_VALUE; - boolean requireSneaking = false; + boolean requireToolData = false; boolean requireToolName = false; String editToolName = null; boolean requireToolLore = false; String editToolLore = null; boolean allowCustomModelData = false; Integer customModelDataInt = Integer.MIN_VALUE; - - - boolean debug = false; //weather or not to broadcast messages via print(String message) + + //GUI Settings + boolean requireSneaking = false; + boolean sendToActionBar = true; + + //Armor Stand Specific Settings double coarseRot; double fineRot; boolean glowItemFrames = false; @@ -89,7 +91,6 @@ public class ArmorStandEditorPlugin extends JavaPlugin{ public Team team; String lockedTeam = "ASLocked"; - //Better Debug Output private static ArmorStandEditorPlugin plugin; public ArmorStandEditorPlugin(){ @@ -97,7 +98,7 @@ public ArmorStandEditorPlugin(){ } @Override - public void onEnable(){ + public void onEnable() { scoreboard = Objects.requireNonNull(this.getServer().getScoreboardManager()).getMainScoreboard(); @@ -108,21 +109,6 @@ public void onEnable(){ getLogger().info("======= ArmorStandEditor ======="); getLogger().info("Plugin Version: " + pdfFile.getVersion()); - //Spigot Check - hasSpigot = getHasSpigot(); - getLogger().info("SpigotMC: " + hasSpigot); - - //Paper Check - hasPaper = getHasPaper(); - getLogger().info("PaperMC: " + hasPaper); - - //If Paper and Spigot are both FALSE - Disable the plugin - if (!hasPaper && !hasSpigot){ - getLogger().severe("This plugin requires either Paper, Spigot or one of its forks to run"); - getServer().getPluginManager().disablePlugin(this); - return; - } - //Minimum Version Check - No Lower than 1.13-API. Will be tuned out in the future if ( nmsVersion.startsWith("v1_8") || nmsVersion.startsWith("v1_9") || @@ -147,6 +133,23 @@ public void onEnable(){ } else { getLogger().info("Minecraft Version: " + nmsVersion + " is supported. Loading continuing."); } + //Spigot Check + hasSpigot = getHasSpigot(); + hasPaper = getHasPaper(); + + //If Paper and Spigot are both FALSE - Disable the plugin + if (!hasPaper && !hasSpigot){ + getLogger().severe("This plugin requires either Paper, Spigot or one of its forks to run"); + getServer().getPluginManager().disablePlugin(this); + getLogger().info(SEPARATOR_FIELD); + return; + } else { + if (hasSpigot) { + getLogger().info("SpigotMC: " + hasSpigot); + } else { + getLogger().info("PaperMC: " + hasPaper); + } + } getServer().getPluginManager().enablePlugin(this); registerScoreboards(scoreboard); @@ -164,6 +167,7 @@ public void onEnable(){ updateConfig("lang/", "de_DE.yml"); updateConfig("lang/", "es_ES.yml"); updateConfig("lang/", "pt_BR.yml"); + //English is the default language and needs to be unaltered to so that there is always a backup message string saveResource("lang/en_US.yml", true); lang = new Language(getConfig().getString("lang"), this); @@ -182,6 +186,13 @@ public void onEnable(){ getServer().getPluginManager().disablePlugin(this); return; } + + //Do we require a custom tool name? + requireToolName = getConfig().getBoolean("requireToolName", false); + if(requireToolName){ + editToolName = getConfig().getString("toolName", null); + if(editToolName != null) editToolName = ChatColor.translateAlternateColorCodes('&', editToolName); + } //Custom Model Data allowCustomModelData = getConfig().getBoolean("allowCustomModelData", false); @@ -193,13 +204,6 @@ public void onEnable(){ //ArmorStandVisibility Node armorStandVisibility = getConfig().getBoolean("armorStandVisibility", true); - //Do we require a custom tool name? - requireToolName = getConfig().getBoolean("requireToolName", false); - if(requireToolName){ - editToolName = getConfig().getString("toolName", null); - if(editToolName != null) editToolName = ChatColor.translateAlternateColorCodes('&', editToolName); - } - //Is there NBT Required for the tool requireToolData = getConfig().getBoolean("requireToolData", false); @@ -222,7 +226,6 @@ public void onEnable(){ //All ItemFrame Stuff glowItemFrames = getConfig().getBoolean("glowingItemFrame", true); - invisibleItemFrames = getConfig().getBoolean("invisibleItemFrames", true); //Add Ability to check for UpdatePerms that Notify Ops - https://github.com/Wolfieheart/ArmorStandEditor/issues/86 @@ -248,8 +251,10 @@ public void onEnable(){ private void runUpdateCheckerConsoleUpdateCheck() { if (Objects.requireNonNull(getConfig().getString("version")).contains(".x")) { - //noinspection UnnecessaryReturnStatement - return; + getLogger().warning("It appears that you are using the development version of ArmorStandEditor"); + getLogger().warning("This version can be unstable and is not recommended for Production Environments."); + getLogger().warning("Please, report bugs to: https://github.com/Wolfieheart/ArmorStandEditor . This warning"); + getLogger().warning("is intended to be displayed when using a Dev build and is NOT A BUG!"); } else { new UpdateChecker(this, UpdateCheckSource.SPIGET, "" + SPIGOT_RESOURCE_ID + "") .setDownloadLink("https://www.spigotmc.org/resources/armorstandeditor-reborn.94503/") @@ -261,10 +266,12 @@ private void runUpdateCheckerConsoleUpdateCheck() { } } - private void runUpdateCheckerWithOPNotifyOnJoinEnabled() { //We Can Not Dynamically change the setting for NotifyOpsOnJoin :( + private void runUpdateCheckerWithOPNotifyOnJoinEnabled() { if (Objects.requireNonNull(getConfig().getString("version")).contains(".x")) { - //noinspection UnnecessaryReturnStatement - return; + getLogger().warning("It appears that you are using the development version of ArmorStandEditor"); + getLogger().warning("This version can be unstable and is not recommended for Production Environments."); + getLogger().warning("Please, report bugs to: https://github.com/Wolfieheart/ArmorStandEditor . This warning"); + getLogger().warning("is intended to be displayed when using a Dev build and is NOT A BUG!"); } else { new UpdateChecker(this, UpdateCheckSource.SPIGET, "" + SPIGOT_RESOURCE_ID + "") .setDownloadLink("https://www.spigotmc.org/resources/armorstandeditor-reborn.94503/") @@ -395,26 +402,23 @@ public boolean isEditTool(ItemStack itemStk){ if(!itemStk.hasItemMeta()) { return false; } //Get the lore of the Item and if it is null - Return False - List itemLore = Objects.requireNonNull(itemStk.getItemMeta()).getLore(); + String itemLore = String.valueOf(Objects.requireNonNull(itemStk.getItemMeta()).getLore()); //If the Item does not have Lore - Return False boolean hasTheItemLore = itemStk.getItemMeta().hasLore(); if (!hasTheItemLore) { return false; } //Item the first thing in the ItemLore List does not Equal the Config Value "editToolLore" - return false - if (!itemLore.get(0).equals(editToolLore)) { return false; } //Does not need simplified - IntelliJ likes to complain here + if (!itemLore.equals(editToolLore)) { return false; } //Does not need simplified - IntelliJ likes to complain here } if (allowCustomModelData && customModelDataInt != null) { //If the ItemStack does not have Metadata then we return false if(!itemStk.hasItemMeta()) { return false; } - Integer itemCustomModel = Objects.requireNonNull(itemStk.getItemMeta()).getCustomModelData(); - return itemCustomModel.equals(customModelDataInt); } - return true; } @@ -445,8 +449,6 @@ private void getMetrics(){ Map entry = new HashMap<>(); String languageUsed = getConfig().getString("lang"); - entry.put(languageUsed, 1); - assert languageUsed != null; if (languageUsed.startsWith("nl")) { @@ -485,8 +487,8 @@ private void getMetrics(){ //ArmorStandInvis Config metrics.addCustomChart(new SimplePie("itemframe_invisibility_used", () -> getConfig().getString("invisibleItemFrames"))); - //TODO: Add tracking to see who is using Custom Naming in BStats - AKA Remove this soon TM - //metrics.addCustomChart(new SimplePie("custom_toolname_enabled", () -> getConfig().getString("requireToolName"))); + //Add tracking to see who is using Custom Naming in BStats + metrics.addCustomChart(new SimplePie("custom_toolname_enabled", () -> getConfig().getString("requireToolName"))); } From 997787e704e933cbf26a6d1b8c709f496466fd99 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 19 Oct 2022 22:13:32 +0200 Subject: [PATCH 179/369] [CORE] Bump PlotSquared-Core to v6.10.2 (#142) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index ba7e63c8..c4a3d173 100644 --- a/pom.xml +++ b/pom.xml @@ -90,7 +90,7 @@ com.plotsquared PlotSquared-Core - 6.10.1 + 6.10.2 provided From 8d1a13154da4101ffd680cc4a34c68b9b439339f Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 19 Oct 2022 22:15:49 +0200 Subject: [PATCH 180/369] [CORE] Bump PlotSquared-Bukkit to v6.10.2 (#141) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index c4a3d173..ad622dd0 100644 --- a/pom.xml +++ b/pom.xml @@ -97,7 +97,7 @@ com.plotsquared PlotSquared-Bukkit - 6.10.1 + 6.10.2 provided From 91f051678be5a97849bd324d4f4e33feb8c618e4 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 19 Oct 2022 22:16:17 +0200 Subject: [PATCH 181/369] [CORE] Bump Towny to v0.98.3.14 (#139) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index ad622dd0..5c126436 100644 --- a/pom.xml +++ b/pom.xml @@ -117,7 +117,7 @@ com.palmergames.bukkit.towny towny - 0.98.3.10 + 0.98.3.14 provided From d729629325c00e5c5cfc1b3f5da288a2c477f530 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 22 Oct 2022 21:48:32 +0200 Subject: [PATCH 182/369] Update dependency com.github.angeschossen:LandsAPI to v6.20.0 (#144) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 5c126436..9d666ebc 100644 --- a/pom.xml +++ b/pom.xml @@ -145,7 +145,7 @@ com.github.angeschossen LandsAPI - 6.15.0 + 6.20.0 provided From 4a8962d80311ec2ad641c66cc1ab98dd205b67f3 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 22 Oct 2022 21:48:42 +0200 Subject: [PATCH 183/369] Update actions/upload-artifact action to v3.1.1 (#143) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .github/workflows/maven-publish.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/maven-publish.yml b/.github/workflows/maven-publish.yml index 736780d7..44dc1ba2 100644 --- a/.github/workflows/maven-publish.yml +++ b/.github/workflows/maven-publish.yml @@ -56,7 +56,7 @@ jobs: #6 Upload Artifacts (Debug Purposes) - name: Upload Artifact for Debugging - uses: actions/upload-artifact@v3.1.0 + uses: actions/upload-artifact@v3.1.1 with: name: artifact path: /home/runner/work/ArmorStandEditor/ArmorStandEditor/target/armorstandeditor-*-*.jar From f49bed3f465c9fcf20db089f10447de64be88933 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 1 Nov 2022 20:59:47 +0100 Subject: [PATCH 184/369] Update dependency com.palmergames.bukkit.towny:towny to v0.98.3.16 (#146) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 9d666ebc..5f1406ed 100644 --- a/pom.xml +++ b/pom.xml @@ -117,7 +117,7 @@ com.palmergames.bukkit.towny towny - 0.98.3.14 + 0.98.3.16 provided From e30c7723ad24a0359633fd4ee86c72e1129813ff Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 1 Nov 2022 21:00:18 +0100 Subject: [PATCH 185/369] Update dependency org.apache.maven.plugins:maven-shade-plugin to v3.4.1 (#147) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 5f1406ed..eeed403f 100644 --- a/pom.xml +++ b/pom.xml @@ -190,7 +190,7 @@ org.apache.maven.plugins maven-shade-plugin - 3.4.0 + 3.4.1 package From 66ebb753246d756834e9ecc9090858797c321ec1 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 1 Nov 2022 21:01:23 +0100 Subject: [PATCH 186/369] Update dependency com.bgsoftware:SuperiorSkyblockAPI to v2022.9 (#148) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index eeed403f..23bfb5dd 100644 --- a/pom.xml +++ b/pom.xml @@ -131,7 +131,7 @@ com.bgsoftware SuperiorSkyblockAPI - 2022.8.1 + 2022.9 provided From 0f92c0e9f76e79008788a68643b8dae162ccfbe4 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 3 Nov 2022 11:42:09 +0100 Subject: [PATCH 187/369] Update dependency com.palmergames.bukkit.towny:towny to v0.98.3.19 (#151) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 23bfb5dd..859667e8 100644 --- a/pom.xml +++ b/pom.xml @@ -117,7 +117,7 @@ com.palmergames.bukkit.towny towny - 0.98.3.16 + 0.98.3.19 provided From 80bb7f1032f32e0224eb9c1204d547d796a6c7e4 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 3 Nov 2022 11:42:16 +0100 Subject: [PATCH 188/369] Update dependency com.plotsquared:PlotSquared-Bukkit to v6.10.3 (#152) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 859667e8..66c372a2 100644 --- a/pom.xml +++ b/pom.xml @@ -97,7 +97,7 @@ com.plotsquared PlotSquared-Bukkit - 6.10.2 + 6.10.3 provided From 9897c0d5fa6a7b611599c430c23f79e306749544 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 3 Nov 2022 11:42:24 +0100 Subject: [PATCH 189/369] Update dependency com.plotsquared:PlotSquared-Core to v6.10.3 (#153) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 66c372a2..667bf38c 100644 --- a/pom.xml +++ b/pom.xml @@ -90,7 +90,7 @@ com.plotsquared PlotSquared-Core - 6.10.2 + 6.10.3 provided From 18b1f6c9e88fa3c6d23dc6de3a863c4e752e06fe Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 29 Nov 2022 14:54:21 +0100 Subject: [PATCH 190/369] Bump PlotSquared-Core from 6.10.3 to 6.10.4 (#161) Bumps [PlotSquared-Core](https://github.com/IntellectualSites/PlotSquared) from 6.10.3 to 6.10.4. - [Release notes](https://github.com/IntellectualSites/PlotSquared/releases) - [Commits](https://github.com/IntellectualSites/PlotSquared/compare/6.10.3...6.10.4) --- updated-dependencies: - dependency-name: com.plotsquared:PlotSquared-Core dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 667bf38c..e0180ee9 100644 --- a/pom.xml +++ b/pom.xml @@ -90,7 +90,7 @@ com.plotsquared PlotSquared-Core - 6.10.3 + 6.10.4 provided From 50638ef71d383cebfa9686ebd23a0d90fcf4af00 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 29 Nov 2022 14:55:56 +0100 Subject: [PATCH 191/369] Update dependency com.plotsquared:PlotSquared-Bukkit to v6.10.5 (#157) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index e0180ee9..2bbef3e0 100644 --- a/pom.xml +++ b/pom.xml @@ -97,7 +97,7 @@ com.plotsquared PlotSquared-Bukkit - 6.10.3 + 6.10.5 provided From 6b1429aa36304819779f6188a2ccdb24e26e10cd Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 29 Nov 2022 14:56:11 +0100 Subject: [PATCH 192/369] Update dependency com.github.angeschossen:LandsAPI to v6.22.0 (#154) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 2bbef3e0..49a99836 100644 --- a/pom.xml +++ b/pom.xml @@ -145,7 +145,7 @@ com.github.angeschossen LandsAPI - 6.20.0 + 6.22.0 provided From ca9d6f35b9f88d4f79df2dd916cab7cecc58ec27 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 29 Nov 2022 14:56:44 +0100 Subject: [PATCH 193/369] Update dependency com.palmergames.bukkit.towny:towny to v0.98.4.4 (#156) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 49a99836..0176ea65 100644 --- a/pom.xml +++ b/pom.xml @@ -117,7 +117,7 @@ com.palmergames.bukkit.towny towny - 0.98.3.19 + 0.98.4.4 provided From e36b3aaf2f91f731acf176cee161e36d81bc9889 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 29 Nov 2022 14:57:10 +0100 Subject: [PATCH 194/369] Update dependency com.plotsquared:PlotSquared-Core to v6.10.5 (#158) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 0176ea65..c41f7e03 100644 --- a/pom.xml +++ b/pom.xml @@ -90,7 +90,7 @@ com.plotsquared PlotSquared-Core - 6.10.4 + 6.10.5 provided From d9e2aca48c5b35743d6cc970d1b57974baf25b60 Mon Sep 17 00:00:00 2001 From: "Larry (Wolfieheart)" Date: Tue, 29 Nov 2022 14:59:56 +0100 Subject: [PATCH 195/369] Revert LandsAPI update --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index c41f7e03..07a68872 100644 --- a/pom.xml +++ b/pom.xml @@ -145,7 +145,7 @@ com.github.angeschossen LandsAPI - 6.22.0 + 6.20.0 provided From 3859ccd0e45ec3cf8d7bff3f09a25f8b1772f7da Mon Sep 17 00:00:00 2001 From: "Larry (Wolfieheart)" Date: Fri, 16 Dec 2022 14:54:36 +0100 Subject: [PATCH 196/369] [CORE] ArmorStandEditor 1.19.3 (#165) * [CORE] Bump to 1.19.3 Signed-off-by: Wolfieheart * [CORE] Add Russian Translation Support being Broken in Older Updates - fixes #159 Signed-off-by: Wolfieheart * [CORE] Implement Check to warn on 1_19_R1 since the version is now 1_19_R2 (?) DUNNO WHY THEY DID THAT! Signed-off-by: Wolfieheart * [CORE] Implement a way to disable the running of the Update Checker via Config Options Signed-off-by: Wolfieheart * [CI] Bump Towny to 0.98.4.5 Signed-off-by: Wolfieheart * [CORE] Implement Tab Completion for Commands Signed-off-by: Wolfieheart * [CORE] Fix Code Review Remarks Signed-off-by: Wolfieheart * [CORE] Fix Code Review Remarks Signed-off-by: Wolfieheart Signed-off-by: Wolfieheart --- pom.xml | 6 +- .../ArmorStandEditorPlugin.java | 30 +++- .../rypofalem/armorstandeditor/CommandEx.java | 140 +++++++++++++++++- src/main/resources/config.yml | 5 +- src/main/resources/plugin.yml | 2 +- 5 files changed, 163 insertions(+), 20 deletions(-) diff --git a/pom.xml b/pom.xml index 07a68872..3b2e278c 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ io.github.rypofalem.armorstandeditor armorstandeditor jar - 1.19.2-38 + 1.19.3-39 armorstandeditor http://maven.apache.org @@ -76,7 +76,7 @@ org.spigotmc spigot-api - 1.19.1-R0.1-SNAPSHOT + 1.19.3-R0.1-SNAPSHOT provided @@ -117,7 +117,7 @@ com.palmergames.bukkit.towny towny - 0.98.4.4 + 0.98.4.5 provided diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/ArmorStandEditorPlugin.java b/src/main/java/io/github/rypofalem/armorstandeditor/ArmorStandEditorPlugin.java index 1aeec1fd..70d56ba9 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/ArmorStandEditorPlugin.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/ArmorStandEditorPlugin.java @@ -62,6 +62,7 @@ public class ArmorStandEditorPlugin extends JavaPlugin{ //Output for Updates boolean opUpdateNotification = false; + boolean runTheUpdateChecker = false; //Edit Tool Information Material editTool; @@ -127,7 +128,8 @@ public void onEnable() { nmsVersion.startsWith("v1_15") || nmsVersion.startsWith("v1_16") || nmsVersion.startsWith("v1_17") || - nmsVersion.startsWith("v1_18")){ + nmsVersion.startsWith("v1_18") || + nmsVersion.equals("v1_19_R1")){ //Temp: Will change it to .startsWith("v1_19") once 1.20 Drops getLogger().warning("Minecraft Version: " + nmsVersion + " is supported, but not latest."); getLogger().warning("ArmorStandEditor will still work, but please update to the latest Version of " + nmsVersionNotLatest + ". Loading continuing."); } else { @@ -160,6 +162,7 @@ public void onEnable() { updateConfig("lang/", "test_NA.yml"); updateConfig("lang/", "nl_NL.yml"); updateConfig("lang/", "uk_UA.yml"); + updateConfig("lang/", "ru_RU.yml"); updateConfig("lang/", "zh_CN.yml"); updateConfig("lang/", "fr_FR.yml"); updateConfig("lang/", "ro_RO.yml"); @@ -228,14 +231,19 @@ public void onEnable() { glowItemFrames = getConfig().getBoolean("glowingItemFrame", true); invisibleItemFrames = getConfig().getBoolean("invisibleItemFrames", true); + //Add ability to enable ot Disable the running of the Updater + runTheUpdateChecker = getConfig().getBoolean("runTheUpdateChecker", true); + //Add Ability to check for UpdatePerms that Notify Ops - https://github.com/Wolfieheart/ArmorStandEditor/issues/86 opUpdateNotification = getConfig().getBoolean("opUpdateNotification", true); //Run UpdateChecker - Reports out to Console on Startup ONLY! - if(opUpdateNotification){ - runUpdateCheckerWithOPNotifyOnJoinEnabled(); - } else { - runUpdateCheckerConsoleUpdateCheck(); + if(runTheUpdateChecker) { + if (opUpdateNotification) { + runUpdateCheckerWithOPNotifyOnJoinEnabled(); + } else { + runUpdateCheckerConsoleUpdateCheck(); + } } //Get Metrics from bStats @@ -243,9 +251,12 @@ public void onEnable() { editorManager = new PlayerEditorManager(this); CommandEx execute = new CommandEx(this); - Objects.requireNonNull(getCommand("ase")).setExecutor(execute); //Ignore the warning with this. GetCommand is Nullable. Will be fixed in the future - getServer().getPluginManager().registerEvents(editorManager, this); + //CommandExecution and TabCompletion + Objects.requireNonNull(getCommand("ase")).setExecutor(execute); + Objects.requireNonNull(getCommand("ase")).setTabCompleter(execute); + + getServer().getPluginManager().registerEvents(editorManager, this); } @@ -370,6 +381,10 @@ public Material getEditTool() { return this.editTool; } + public boolean getRunTheUpdateChecker() { + return this.getConfig().getBoolean("runTheUpdateChecker"); + } + public Integer getCustomModelDataInt() { return this.getConfig().getInt("customModelDataInt"); } public boolean isEditTool(ItemStack itemStk){ @@ -497,4 +512,5 @@ public NamespacedKey getIconKey() { if(iconKey == null) iconKey = new NamespacedKey(this, "command_icon"); return iconKey; } + } diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/CommandEx.java b/src/main/java/io/github/rypofalem/armorstandeditor/CommandEx.java index 7729422a..77d85631 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/CommandEx.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/CommandEx.java @@ -19,22 +19,34 @@ package io.github.rypofalem.armorstandeditor; +//UpdateChecker import com.jeff_media.updatechecker.UpdateCheckSource; import com.jeff_media.updatechecker.UpdateChecker; + +//Plugin Self import io.github.rypofalem.armorstandeditor.modes.AdjustmentMode; import io.github.rypofalem.armorstandeditor.modes.Axis; import io.github.rypofalem.armorstandeditor.modes.EditMode; + +//Bukkit import org.bukkit.ChatColor; import org.bukkit.Sound; import org.bukkit.command.Command; import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandSender; +import org.bukkit.command.TabCompleter; import org.bukkit.entity.Player; import org.bukkit.inventory.ItemFlag; import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.meta.ItemMeta; -public class CommandEx implements CommandExecutor { +//Java +import java.util.ArrayList; +import java.util.List; +import java.util.Objects; +import java.util.stream.Collectors; + +public class CommandEx implements CommandExecutor, TabCompleter { ArmorStandEditorPlugin plugin; final String LISTMODE = ChatColor.YELLOW + "/ase mode <" + Util.getEnumList(EditMode.class) + ">"; final String LISTAXIS = ChatColor.YELLOW + "/ase axis <" + Util.getEnumList(Axis.class) + ">"; @@ -44,7 +56,6 @@ public class CommandEx implements CommandExecutor { final String VERSION = ChatColor.YELLOW + "/ase version"; final String UPDATE = ChatColor.YELLOW + "/ase update"; final String GIVECUSTOMMODEL = ChatColor.YELLOW + "/ase give"; - String debugPlayerDisplayName; public CommandEx( ArmorStandEditorPlugin armorStandEditorPlugin) { this.plugin = armorStandEditorPlugin; @@ -53,13 +64,12 @@ public CommandEx( ArmorStandEditorPlugin armorStandEditorPlugin) { @Override public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { if (!(sender instanceof Player - && checkPermission((Player) sender, "basic", true))) { + && getPermissionBasic( (Player) sender))) { sender.sendMessage(plugin.getLang().getMessage("noperm", "warn")); return true; } Player player = (Player) sender; - debugPlayerDisplayName = player.getDisplayName(); if (args.length == 0) { player.sendMessage(LISTMODE); player.sendMessage(LISTAXIS); @@ -109,7 +119,7 @@ private void commandGive(Player player) { if (plugin.getAllowCustomModelData() && checkPermission(player, "give", true)) { ItemStack stack = new ItemStack(plugin.getEditTool()); //Only Support EditTool at the MOMENT ItemMeta meta = stack.getItemMeta(); - meta.setCustomModelData(plugin.getCustomModelDataInt()); + Objects.requireNonNull(meta).setCustomModelData(plugin.getCustomModelDataInt()); meta.setUnbreakable(true); meta.addItemFlags(ItemFlag.HIDE_UNBREAKABLE); stack.setItemMeta(meta); @@ -205,18 +215,23 @@ private void commandHelp( Player player) { private void commandUpdate(Player player) { if (!(checkPermission(player, "update", true))) return; - new UpdateChecker(plugin, UpdateCheckSource.SPIGOT, "" + ArmorStandEditorPlugin.SPIGOT_RESOURCE_ID + "").checkNow(player); //Runs Update Check + //Only Run if the Update Command Works + if(plugin.getRunTheUpdateChecker()) { + new UpdateChecker(plugin, UpdateCheckSource.SPIGOT, "" + ArmorStandEditorPlugin.SPIGOT_RESOURCE_ID + "").checkNow(player); //Runs Update Check + } else{ + player.sendMessage(ChatColor.YELLOW + "[ArmorStandEditor] Update Checker is not enabled on this server"); + } } private void commandVersion(Player player) { - if (!(checkPermission(player, "update", true))) return; + if (!(getPermissionUpdate(player))) return; String verString = plugin.pdfFile.getVersion(); player.sendMessage(ChatColor.YELLOW + "[ArmorStandEditor] Version: " + verString); } - private boolean checkPermission( Player player, String permName, boolean sendMessageOnInvalidation) { + private boolean checkPermission(Player player, String permName, boolean sendMessageOnInvalidation) { if (permName.equalsIgnoreCase("paste")) { permName = "copy"; } @@ -229,4 +244,113 @@ private boolean checkPermission( Player player, String permName, boolean sendMe return false; } } + + private boolean getPermissionBasic(Player player) { + return checkPermission(player, "basic", true); + } + + private boolean getPermissionUpdate(Player player){ + return checkPermission(player, "update", true); + } + + private boolean getPermissionGive(Player player){ + return checkPermission(player, "give", true); + } + + //REFACTOR COMPLETION + @Override + @SuppressWarnings({"deprecated"}) + public List onTabComplete(CommandSender sender, Command command, String label, String[] args) { + if (command.getName().equalsIgnoreCase("ase") || command.getName().equalsIgnoreCase("armorstandeditor") || command.getName().equalsIgnoreCase("asedit")) { + List argList = new ArrayList<>(); + + //Needed for Permission Checks + Player player = (Player) sender; + + if (args.length == 1 && getPermissionBasic(player)) { + + + + //Basic Permission Check + if (getPermissionBasic(player)) { + argList.add("mode"); + argList.add("axis"); + argList.add("adj"); + argList.add("slot"); + argList.add("help"); + } + + //Update Permission Check + if (getPermissionUpdate(player)) { + argList.add("update"); + argList.add("version"); + } + + //Give Permission Check + if (getPermissionGive(player)) { + argList.add("give"); + } + + return argList.stream().filter(a -> a.startsWith(args[0])).collect(Collectors.toList()); + } + + //Options for Mode + if (args.length == 2 && args[0].equalsIgnoreCase("mode")){ + argList.add("None"); + argList.add("Invisible"); + argList.add("ShowArms"); + argList.add("Gravity"); + argList.add("BasePlate"); + argList.add("Size"); + argList.add("Copy"); + argList.add("Paste"); + argList.add("Head"); + argList.add("Body"); + argList.add("LeftArm"); + argList.add("RightArm"); + argList.add("LeftLeg"); + argList.add("RightLeg"); + argList.add("Placement"); + argList.add("DisableSlots"); + argList.add("Rotate"); + argList.add("Equipment"); + argList.add("Reset"); + argList.add("ItemFrame"); + argList.add("ItemFrameGlow"); + + return argList; //New List + } + + if(args.length == 2 && args[0].equalsIgnoreCase("axis")){ + argList.add("X"); + argList.add("Y"); + argList.add("Z"); + return argList; //New List + } + + if(args.length == 2 && args[0].equalsIgnoreCase("slot")) { + argList.add("0"); + argList.add("1"); + argList.add("2"); + argList.add("3"); + argList.add("4"); + argList.add("5"); + argList.add("6"); + argList.add("7"); + argList.add("8"); + argList.add("9"); + return argList; //New List + } + + if(args.length == 2 && args[0].equalsIgnoreCase("adj")) { + argList.add("Coarse"); + argList.add("Fine"); + return argList; //New List + } + + return argList; //Empty List + } + + return null; //Default + } } \ No newline at end of file diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml index 68cdf88b..881aa4c8 100644 --- a/src/main/resources/config.yml +++ b/src/main/resources/config.yml @@ -3,7 +3,7 @@ #-----------------------------# #DO NOT CHANGE THIS - CHANGES AUTOMATICALLY PER UPDATE -version: "1.19.2-38" +version: "1.19.3-39" #----------- LANGUAGE #Name of the language file you wish to use @@ -13,6 +13,9 @@ version: "1.19.2-38" lang: en_US.yml #----------- UPDATE NOTIFICATIONS +#Enable or Disable the Update Checker +runTheUpdateChecker: true + #Set this to allow your operators to get messages w.r.t Plugin updates opUpdateNotification: false diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index 45563200..92c6a0b8 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -1,6 +1,6 @@ name: ArmorStandEditor main: io.github.rypofalem.armorstandeditor.ArmorStandEditorPlugin -version: 1.19.2-38 +version: 1.19.3-39 api-version: "1.13" website: https://www.spigotmc.org/resources/94503/ author: Wolfstorm From f2f9a0592caa6c757d1a8bb5e28ae415d6a5a529 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 20 Dec 2022 19:04:32 +0100 Subject: [PATCH 197/369] [CI] Bump Towny to v0.98.4.11 (#167) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 3b2e278c..2bf27c50 100644 --- a/pom.xml +++ b/pom.xml @@ -117,7 +117,7 @@ com.palmergames.bukkit.towny towny - 0.98.4.5 + 0.98.4.11 provided From 80be97db5baaf7c8eae4bff2cd435d7a80ea4ea1 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 22 Dec 2022 11:48:32 +0100 Subject: [PATCH 198/369] [CI] Bump Towny to v0.98.4.13 (#168) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 2bf27c50..99311c31 100644 --- a/pom.xml +++ b/pom.xml @@ -117,7 +117,7 @@ com.palmergames.bukkit.towny towny - 0.98.4.11 + 0.98.4.13 provided From fe58f44cd1559bfa3c31ee1bdea0dbe633b983e1 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 9 Jan 2023 11:36:21 +0100 Subject: [PATCH 199/369] [CI] Update actions/upload-artifact action to v3.1.2 (#173) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .github/workflows/maven-publish.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/maven-publish.yml b/.github/workflows/maven-publish.yml index 44dc1ba2..6e5eac21 100644 --- a/.github/workflows/maven-publish.yml +++ b/.github/workflows/maven-publish.yml @@ -56,7 +56,7 @@ jobs: #6 Upload Artifacts (Debug Purposes) - name: Upload Artifact for Debugging - uses: actions/upload-artifact@v3.1.1 + uses: actions/upload-artifact@v3.1.2 with: name: artifact path: /home/runner/work/ArmorStandEditor/ArmorStandEditor/target/armorstandeditor-*-*.jar From 1d6a4d4d735bbad2dcd3b8eae0e610b024ac2a19 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 11 Jan 2023 14:26:39 +0100 Subject: [PATCH 200/369] Update dependency com.plotsquared:PlotSquared-Bukkit to v6.10.8 (#178) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 99311c31..1aa3d11f 100644 --- a/pom.xml +++ b/pom.xml @@ -97,7 +97,7 @@ com.plotsquared PlotSquared-Bukkit - 6.10.5 + 6.10.8 provided From a66481ee1bf752b55425c10191b339249719d2be Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 11 Jan 2023 14:26:48 +0100 Subject: [PATCH 201/369] Update dependency com.plotsquared:PlotSquared-Core to v6.10.8 (#179) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 1aa3d11f..b8f81ec7 100644 --- a/pom.xml +++ b/pom.xml @@ -90,7 +90,7 @@ com.plotsquared PlotSquared-Core - 6.10.5 + 6.10.8 provided From 3cd3cdf94b29f9076202c8bf0e1f452f0cf754a6 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 23 Jan 2023 13:43:29 +0000 Subject: [PATCH 202/369] Update dependency com.plotsquared:PlotSquared-Bukkit to v6.10.9 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index b8f81ec7..1db7fd2b 100644 --- a/pom.xml +++ b/pom.xml @@ -97,7 +97,7 @@ com.plotsquared PlotSquared-Bukkit - 6.10.8 + 6.10.9 provided From cbcf3d57c57ff19e76812a12749c59fa84390014 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 23 Jan 2023 13:43:34 +0000 Subject: [PATCH 203/369] Update dependency com.plotsquared:PlotSquared-Core to v6.10.9 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index b8f81ec7..18232de5 100644 --- a/pom.xml +++ b/pom.xml @@ -90,7 +90,7 @@ com.plotsquared PlotSquared-Core - 6.10.8 + 6.10.9 provided From c723b5aa72be241ba264ea60dfe7822b901dac2a Mon Sep 17 00:00:00 2001 From: Wolfieheart Date: Tue, 24 Jan 2023 18:35:24 +0100 Subject: [PATCH 204/369] [CORE] Bump to 1.19.3-40 Signed-off-by: Wolfieheart --- pom.xml | 14 +++++++++++++- .../armorstandeditor/ArmorStandEditorPlugin.java | 4 ++-- src/main/resources/config.yml | 2 +- src/main/resources/plugin.yml | 10 +++++++--- 4 files changed, 23 insertions(+), 7 deletions(-) diff --git a/pom.xml b/pom.xml index 2567a18b..07ec90d8 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ io.github.rypofalem.armorstandeditor armorstandeditor jar - 1.19.3-39 + 1.19.3-40 armorstandeditor http://maven.apache.org @@ -69,6 +69,11 @@ bg-repo https://repo.bg-software.com/repository/api/ + + + codemc-repo + https://repo.codemc.org/repository/maven-public/ +
@@ -148,6 +153,13 @@ 6.20.0 provided + + + world.bentobox + bentobox + 1.22.0-SNAPSHOT + provided + diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/ArmorStandEditorPlugin.java b/src/main/java/io/github/rypofalem/armorstandeditor/ArmorStandEditorPlugin.java index 70d56ba9..467d488e 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/ArmorStandEditorPlugin.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/ArmorStandEditorPlugin.java @@ -128,8 +128,8 @@ public void onEnable() { nmsVersion.startsWith("v1_15") || nmsVersion.startsWith("v1_16") || nmsVersion.startsWith("v1_17") || - nmsVersion.startsWith("v1_18") || - nmsVersion.equals("v1_19_R1")){ //Temp: Will change it to .startsWith("v1_19") once 1.20 Drops + nmsVersion.startsWith("v1_18") ){ + //Revert NMS Check for any 1.19 Version getLogger().warning("Minecraft Version: " + nmsVersion + " is supported, but not latest."); getLogger().warning("ArmorStandEditor will still work, but please update to the latest Version of " + nmsVersionNotLatest + ". Loading continuing."); } else { diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml index 881aa4c8..20252dc4 100644 --- a/src/main/resources/config.yml +++ b/src/main/resources/config.yml @@ -3,7 +3,7 @@ #-----------------------------# #DO NOT CHANGE THIS - CHANGES AUTOMATICALLY PER UPDATE -version: "1.19.3-39" +version: "1.19.3-40" #----------- LANGUAGE #Name of the language file you wish to use diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index 92c6a0b8..b2c30cb1 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -1,12 +1,12 @@ name: ArmorStandEditor main: io.github.rypofalem.armorstandeditor.ArmorStandEditorPlugin -version: 1.19.3-39 +version: 1.19.3-40 api-version: "1.13" website: https://www.spigotmc.org/resources/94503/ author: Wolfstorm authors: [Wolfstorm, Marfjeh, miknes123, rypofalem, sekwah41, Sikatsu1997, Cool_boy, sumdream, Amaury Carrade, nicuch, kotarobo, prettydude, Jumpy91, Niasio, Patbox, Puremin0rez, Prof-Bloodstone, PlanetTeamSpeak] description: Allows players to edit data of armorstands without any commands. -softdepend: [Towny, WorldGuard, GriefPrevention, PlotSquared, Lands] +softdepend: [Towny, WorldGuard, GriefPrevention, PlotSquared, Lands, bentobox] commands: ase: @@ -77,7 +77,9 @@ permissions: asedit.ignoreProtection.lands: description: Allows user to ignore Lands' Protection Limitations. default: false - + asedit.ignoreProtection.bentobox: + description: Allows user to ignore Bentobox' Protection Limitations. + default: false asedit.ignoreProtection.*: description: Ignore all Protection Limitations @@ -90,6 +92,7 @@ permissions: asedit.ignoreProtection.skyblock: true asedit.ignoreProtection.griefDefender: true asedit.ignoreProtection.lands: true + asedit.ignoreProtection.bentobox: true asedit.permpack.dontIgnoreProtections: default: true @@ -101,6 +104,7 @@ permissions: asedit.ignoreProtection.skyblock: false asedit.ignoreProtection.griefDefender: false asedit.ignoreProtection.lands: false + asedit.ignoreProtection.bentobox: false asedit.permpack.basic: default: true From 84d853e47756802051999c2cf4df15134707589f Mon Sep 17 00:00:00 2001 From: Wolfieheart Date: Tue, 24 Jan 2023 18:55:38 +0100 Subject: [PATCH 205/369] [CORE] Cleanup Protections Code and Fix Lands to new API Signed-off-by: Wolfieheart --- pom.xml | 2 +- .../protections/LandsProtection.java | 23 +++++++++++++------ .../protections/PlotSquaredProtection.java | 3 --- 3 files changed, 17 insertions(+), 11 deletions(-) diff --git a/pom.xml b/pom.xml index 07ec90d8..ef4e74f5 100644 --- a/pom.xml +++ b/pom.xml @@ -150,7 +150,7 @@ com.github.angeschossen LandsAPI - 6.20.0 + 6.26.18 provided diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/protections/LandsProtection.java b/src/main/java/io/github/rypofalem/armorstandeditor/protections/LandsProtection.java index c55ecec5..b04a1bb8 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/protections/LandsProtection.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/protections/LandsProtection.java @@ -1,23 +1,24 @@ package io.github.rypofalem.armorstandeditor.protections; import io.github.rypofalem.armorstandeditor.ArmorStandEditorPlugin; -import me.angeschossen.lands.api.integration.LandsIntegration; +import me.angeschossen.lands.api.LandsIntegration; import me.angeschossen.lands.api.land.Area; import me.angeschossen.lands.api.land.Land; import me.angeschossen.lands.api.player.LandPlayer; import org.bukkit.Bukkit; import org.bukkit.block.Block; import org.bukkit.entity.Player; +import org.jetbrains.annotations.NotNull; public class LandsProtection implements Protection { private final boolean landsEnabled; - private LandsIntegration lands; + private @NotNull LandsIntegration lands; public LandsProtection() { landsEnabled = Bukkit.getPluginManager().isPluginEnabled("Lands"); if (landsEnabled) - lands = new LandsIntegration(ArmorStandEditorPlugin.instance()); + lands = LandsIntegration.of(ArmorStandEditorPlugin.instance()); else return; } @@ -26,10 +27,18 @@ public LandsProtection() { public boolean checkPermission(Block block, Player player) { if (!landsEnabled || player.hasPermission("asedit.ignoreProtection.lands")) return true; - // Check if the player is trusted in the area or land, in case they're not in an area, they're in. - Land land = lands.getLand(block.getLocation()); - Area area = land == null ? null : land.getArea(block.getLocation()); + //Get the land of the current block + Land land = lands.getLandByChunk(block.getWorld(), block.getX(), block.getZ()); + + //Get the Area that the block is in + Area area = land.getArea(block.getLocation()); + + //Get the Lands Player LandPlayer lPlayer = lands.getLandPlayer(player.getUniqueId()); - return area == null ? land == null || land.isTrusted(lPlayer) : area.isTrusted(player.getUniqueId()); + + //Return if Trusted in the area or not either based on BukktiPlayer or LandsPlayer + return area == null ? area.isTrusted(player.getUniqueId()) : area.isTrusted(lPlayer.getUID()); + + } } diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/protections/PlotSquaredProtection.java b/src/main/java/io/github/rypofalem/armorstandeditor/protections/PlotSquaredProtection.java index 850faa42..ad3a209d 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/protections/PlotSquaredProtection.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/protections/PlotSquaredProtection.java @@ -33,11 +33,8 @@ public boolean checkPermission(Block block, Player player){ PlotArea area = psPlatform.plotAreaManager().getPlotArea(location); - if(area == null) return true; - Plot plot = area.getPlot(location); - return plot == null || plot.isAdded(player.getUniqueId()); } } From 0ea8ca4dc1962bc33b1237e85c85aeee96fdcb73 Mon Sep 17 00:00:00 2001 From: Wolfieheart Date: Tue, 24 Jan 2023 19:24:29 +0100 Subject: [PATCH 206/369] [CORE] SonarLint Remarks. Mark GriefPreventionProtection as Deprecated for now Signed-off-by: Wolfieheart --- .gitignore | 1 + .../ArmorStandEditorPlugin.java | 39 ++++++++++--------- .../armorstandeditor/PlayerEditor.java | 11 +++++- .../armorstandeditor/PlayerEditorManager.java | 5 ++- .../protections/GriefDefenderProtection.java | 1 - .../GriefPreventionProtection.java | 3 ++ .../protections/LandsProtection.java | 11 +++--- .../protections/TownyProtection.java | 5 +-- 8 files changed, 43 insertions(+), 33 deletions(-) diff --git a/.gitignore b/.gitignore index 72b2208e..9d631327 100644 --- a/.gitignore +++ b/.gitignore @@ -8,3 +8,4 @@ target/ /src/main/java/META-INF/*.MF /src/main/java/META-INF/ /TODO-LIST.MD +/dependency-reduced-pom.xml diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/ArmorStandEditorPlugin.java b/src/main/java/io/github/rypofalem/armorstandeditor/ArmorStandEditorPlugin.java index 467d488e..dee54abb 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/ArmorStandEditorPlugin.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/ArmorStandEditorPlugin.java @@ -39,6 +39,7 @@ import java.util.HashMap; import java.util.Map; import java.util.Objects; +import java.util.logging.Level; public class ArmorStandEditorPlugin extends JavaPlugin{ @@ -52,6 +53,8 @@ public class ArmorStandEditorPlugin extends JavaPlugin{ //Server Version Detection: Paper or Spigot and Invalid NMS Version String nmsVersion; + String languageFolderLocation = "lang/"; + String warningMCVer = "Minecraft Version: "; public boolean hasSpigot = false; public boolean hasPaper = false; String nmsVersionNotLatest = null; @@ -117,7 +120,7 @@ public void onEnable() { nmsVersion.startsWith("v1_11") || nmsVersion.startsWith("v1_12") || nmsVersion.startsWith("v1_13")){ - getLogger().warning("Minecraft Version: " + nmsVersion + " is not supported. Loading Plugin Failed."); + getLogger().log(Level.WARNING,"Minecraft Version: {0} is unsupported. Please Update Immediately. Loading failed.",nmsVersion); getLogger().info(SEPARATOR_FIELD); getServer().getPluginManager().disablePlugin(this); return; @@ -130,10 +133,10 @@ public void onEnable() { nmsVersion.startsWith("v1_17") || nmsVersion.startsWith("v1_18") ){ //Revert NMS Check for any 1.19 Version - getLogger().warning("Minecraft Version: " + nmsVersion + " is supported, but not latest."); - getLogger().warning("ArmorStandEditor will still work, but please update to the latest Version of " + nmsVersionNotLatest + ". Loading continuing."); + getLogger().log(Level.WARNING,"Minecraft Version: {0} is supported, but not latest.",nmsVersion); + getLogger().log(Level.WARNING, "ArmorStandEditor will still work on your current version. Loading Continuing."); } else { - getLogger().info("Minecraft Version: " + nmsVersion + " is supported. Loading continuing."); + getLogger().log(Level.INFO, "Minecraft Version: {0} is supported. Loading Continuing.",nmsVersion); } //Spigot Check hasSpigot = getHasSpigot(); @@ -147,9 +150,10 @@ public void onEnable() { return; } else { if (hasSpigot) { - getLogger().info("SpigotMC: " + hasSpigot); + getLogger().log(Level.INFO,"SpigotMC: {0}",hasSpigot); + //getLogger().info("SpigotMC: " + hasSpigot); } else { - getLogger().info("PaperMC: " + hasPaper); + getLogger().log(Level.INFO,"PaperMC: {0}",hasPaper); } } @@ -159,17 +163,17 @@ public void onEnable() { //saveResource doesn't accept File.separator on Windows, need to hardcode unix separator "/" instead updateConfig("", "config.yml"); - updateConfig("lang/", "test_NA.yml"); - updateConfig("lang/", "nl_NL.yml"); - updateConfig("lang/", "uk_UA.yml"); - updateConfig("lang/", "ru_RU.yml"); - updateConfig("lang/", "zh_CN.yml"); - updateConfig("lang/", "fr_FR.yml"); - updateConfig("lang/", "ro_RO.yml"); - updateConfig("lang/", "ja_JP.yml"); - updateConfig("lang/", "de_DE.yml"); - updateConfig("lang/", "es_ES.yml"); - updateConfig("lang/", "pt_BR.yml"); + updateConfig(languageFolderLocation, "test_NA.yml"); + updateConfig(languageFolderLocation, "nl_NL.yml"); + updateConfig(languageFolderLocation, "uk_UA.yml"); + updateConfig(languageFolderLocation, "ru_RU.yml"); + updateConfig(languageFolderLocation, "zh_CN.yml"); + updateConfig(languageFolderLocation, "fr_FR.yml"); + updateConfig(languageFolderLocation, "ro_RO.yml"); + updateConfig(languageFolderLocation, "ja_JP.yml"); + updateConfig(languageFolderLocation, "de_DE.yml"); + updateConfig(languageFolderLocation, "es_ES.yml"); + updateConfig(languageFolderLocation, "pt_BR.yml"); //English is the default language and needs to be unaltered to so that there is always a backup message string saveResource("lang/en_US.yml", true); @@ -392,7 +396,6 @@ public boolean isEditTool(ItemStack itemStk){ if (editTool != itemStk.getType()) { return false; } //FIX: Depreciated Stack for getDurability - // if(requireToolData && item.getDurability() != (short)editToolData) return false; if (requireToolData){ Damageable d1 = (Damageable) itemStk.getItemMeta(); //Get the Damageable Options for itemStk if (d1 != null) { //We do this to prevent NullPointers diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditor.java b/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditor.java index 05b198b0..4b3b750f 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditor.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditor.java @@ -66,7 +66,6 @@ public class PlayerEditor { int frameTargetIndex = 0; EquipmentMenu equipMenu; long lastCancelled = 0; - private boolean state; public PlayerEditor(UUID uuid, ArmorStandEditorPlugin plugin) { this.uuid = uuid; @@ -171,6 +170,10 @@ public void editArmorStand(ArmorStand armorStand) { case NONE: sendMessage("nomode", null); break; + default: + sendMessage("nomode", null); + break; + } } @@ -182,9 +185,13 @@ public void editItemFrame(ItemFrame itemFrame) { break; case RESET: itemFrame.setVisible(true); + break; case NONE: sendMessage("nomodeif", null); break; + default: + sendMessage("nomodeif", null); + break; } } @@ -500,7 +507,7 @@ ArmorStand attemptTarget(ArmorStand armorStand) { void sendMessage(String path, String format, String option) { String message = plugin.getLang().getMessage(path, format, option); if (plugin.sendToActionBar) { - if (ArmorStandEditorPlugin.instance().hasSpigot || ArmorStandEditorPlugin.instance().hasPaper) { //Paper and Spigot having the same Interaction for sendToActionBar + if (ArmorStandEditorPlugin.instance().getHasPaper() || ArmorStandEditorPlugin.instance().getHasSpigot()) { //Paper and Spigot having the same Interaction for sendToActionBar plugin.getServer().getPlayer(getUUID()).spigot().sendMessage(ChatMessageType.ACTION_BAR, new TextComponent(message)); } else { String rawText = plugin.getLang().getRawMessage(path, format, option); diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditorManager.java b/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditorManager.java index b3d6954f..59a29f26 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditorManager.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditorManager.java @@ -22,7 +22,7 @@ import com.google.common.collect.ImmutableList; import io.github.rypofalem.armorstandeditor.menu.ASEHolder; import io.github.rypofalem.armorstandeditor.protections.*; -import me.ryanhamshire.GriefPrevention.GriefPrevention; + import org.bukkit.*; import org.bukkit.block.Block; import org.bukkit.block.BlockFace; @@ -60,7 +60,8 @@ public class PlayerEditorManager implements Listener { // Instantiate protections used to determine whether a player may edit an armor stand or item frame private final List protections = ImmutableList.of( new GriefDefenderProtection(), new GriefPreventionProtection(), new LandsProtection(), - new PlotSquaredProtection(), new SkyblockProtection(), new TownyProtection(), new WorldGuardProtection()); + new PlotSquaredProtection(), new SkyblockProtection(), new TownyProtection(), new WorldGuardProtection(), + new BentoBoxProtection()); PlayerEditorManager( ArmorStandEditorPlugin plugin) { this.plugin = plugin; diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/protections/GriefDefenderProtection.java b/src/main/java/io/github/rypofalem/armorstandeditor/protections/GriefDefenderProtection.java index 60ac7919..18221a7c 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/protections/GriefDefenderProtection.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/protections/GriefDefenderProtection.java @@ -18,7 +18,6 @@ public class GriefDefenderProtection implements Protection { public GriefDefenderProtection() { gdEnabled = Bukkit.getPluginManager().isPluginEnabled("GriefDefender"); - if(!gdEnabled) return; } public boolean checkPermission(Block block, Player player) { diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/protections/GriefPreventionProtection.java b/src/main/java/io/github/rypofalem/armorstandeditor/protections/GriefPreventionProtection.java index 7e92e0e7..bd494cbf 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/protections/GriefPreventionProtection.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/protections/GriefPreventionProtection.java @@ -9,12 +9,14 @@ import org.bukkit.block.Block; import org.bukkit.entity.Player; +/** @deprecated **/ public class GriefPreventionProtection implements Protection { private boolean gpEnabled; private GriefPrevention griefPrevention = null; + /** @deprecated **/ public GriefPreventionProtection(){ gpEnabled = Bukkit.getPluginManager().isPluginEnabled("GriefPrevention"); @@ -22,6 +24,7 @@ public GriefPreventionProtection(){ griefPrevention = (GriefPrevention) Bukkit.getPluginManager().getPlugin("GriefPrevention"); } + /** @deprecated **/ public boolean checkPermission(Block block, Player player){ if(!gpEnabled) return true; if(player.hasPermission("asedit.ignoreProtection.griefPrevention")) return true; diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/protections/LandsProtection.java b/src/main/java/io/github/rypofalem/armorstandeditor/protections/LandsProtection.java index b04a1bb8..3eee0ffb 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/protections/LandsProtection.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/protections/LandsProtection.java @@ -4,7 +4,6 @@ import me.angeschossen.lands.api.LandsIntegration; import me.angeschossen.lands.api.land.Area; import me.angeschossen.lands.api.land.Land; -import me.angeschossen.lands.api.player.LandPlayer; import org.bukkit.Bukkit; import org.bukkit.block.Block; import org.bukkit.entity.Player; @@ -33,12 +32,12 @@ public boolean checkPermission(Block block, Player player) { //Get the Area that the block is in Area area = land.getArea(block.getLocation()); - //Get the Lands Player - LandPlayer lPlayer = lands.getLandPlayer(player.getUniqueId()); - - //Return if Trusted in the area or not either based on BukktiPlayer or LandsPlayer - return area == null ? area.isTrusted(player.getUniqueId()) : area.isTrusted(lPlayer.getUID()); + if(area != null) + //Return if Trusted in the area or not either based on BukkitPlayer + return area.isTrusted(player.getUniqueId()); + else + return false; } } diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/protections/TownyProtection.java b/src/main/java/io/github/rypofalem/armorstandeditor/protections/TownyProtection.java index 9c5a1da0..46c9f6d7 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/protections/TownyProtection.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/protections/TownyProtection.java @@ -16,7 +16,6 @@ public class TownyProtection implements Protection { public TownyProtection(){ tEnabled = Bukkit.getPluginManager().isPluginEnabled("Towny"); - if(!tEnabled) return; } public boolean checkPermission(Block block, Player player){ @@ -27,9 +26,7 @@ public boolean checkPermission(Block block, Player player){ Location playerLoc = player.getLocation(); if (TownyAPI.getInstance().isWilderness(playerLoc)) return false; - if (!TownyActionEventExecutor.canDestroy(player, block.getLocation(), Material.ARMOR_STAND)) return false; - - return true; + return TownyActionEventExecutor.canDestroy(player, block.getLocation(), Material.ARMOR_STAND); } } From aeb6e8a609cc7c153fa4dfa75f19f0e31079e9ad Mon Sep 17 00:00:00 2001 From: Wolfieheart Date: Tue, 24 Jan 2023 19:25:46 +0100 Subject: [PATCH 207/369] [CORE] Introduce BentoBox Protection Class Signed-off-by: Wolfieheart --- .../protections/BentoBoxProtection.java | 25 +++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 src/main/java/io/github/rypofalem/armorstandeditor/protections/BentoBoxProtection.java diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/protections/BentoBoxProtection.java b/src/main/java/io/github/rypofalem/armorstandeditor/protections/BentoBoxProtection.java new file mode 100644 index 00000000..addca4d3 --- /dev/null +++ b/src/main/java/io/github/rypofalem/armorstandeditor/protections/BentoBoxProtection.java @@ -0,0 +1,25 @@ +package io.github.rypofalem.armorstandeditor.protections; + +import org.bukkit.Bukkit; +import org.bukkit.block.Block; +import org.bukkit.entity.Player; + +public class BentoBoxProtection implements Protection { + + private final boolean bentoEnabled; + + public BentoBoxProtection() { + bentoEnabled = Bukkit.getPluginManager().isPluginEnabled("BentoBox"); + if(!bentoEnabled) return; + } + + @Override + public boolean checkPermission(Block block, Player player) { + if(!bentoEnabled || player.isOp() || player.hasPermission("asedit.ignoreProtection.bentobox")) return true; + + //TODO: Add API Items here + + return true; + + } +} From 4b96ff84e81492223a4ec7424771b23df278f289 Mon Sep 17 00:00:00 2001 From: Wolfieheart Date: Mon, 30 Jan 2023 20:49:27 +0100 Subject: [PATCH 208/369] [CORE] Update Bentobox Protection Signed-off-by: Wolfieheart --- pom.xml | 2 +- .../protections/BentoBoxProtection.java | 33 ++++++++++++++++--- 2 files changed, 30 insertions(+), 5 deletions(-) diff --git a/pom.xml b/pom.xml index ef4e74f5..453b8bfa 100644 --- a/pom.xml +++ b/pom.xml @@ -122,7 +122,7 @@ com.palmergames.bukkit.towny towny - 0.98.4.13 + 0.98.6.1 provided diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/protections/BentoBoxProtection.java b/src/main/java/io/github/rypofalem/armorstandeditor/protections/BentoBoxProtection.java index addca4d3..e66a69fa 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/protections/BentoBoxProtection.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/protections/BentoBoxProtection.java @@ -3,23 +3,48 @@ import org.bukkit.Bukkit; import org.bukkit.block.Block; import org.bukkit.entity.Player; +import world.bentobox.bentobox.BentoBox; +import world.bentobox.bentobox.api.user.User; +import world.bentobox.bentobox.database.objects.Island; +import world.bentobox.bentobox.lists.Flags; +import world.bentobox.bentobox.managers.AddonsManager; +import world.bentobox.bentobox.managers.IslandsManager; + +import java.util.Optional; public class BentoBoxProtection implements Protection { private final boolean bentoEnabled; + public BentoBoxProtection() { bentoEnabled = Bukkit.getPluginManager().isPluginEnabled("BentoBox"); - if(!bentoEnabled) return; } @Override public boolean checkPermission(Block block, Player player) { - if(!bentoEnabled || player.isOp() || player.hasPermission("asedit.ignoreProtection.bentobox")) return true; + BentoBox myBento = BentoBox.getInstance(); + + if(!bentoEnabled || player.isOp() || + player.hasPermission("asedit.ignoreProtection.bentobox") || + player.hasPermission("bentobox.admin") || + myBento == null ) return true; + + IslandsManager islandsManager = myBento.getIslandsManager(); + AddonsManager addonsManager = myBento.getAddonsManager(); + + //Check first if BSkyblock is enabled or if the Player is Owner of that Island + if(!addonsManager.getAddonByName("BSkyblock").isPresent()) return true; + + //Get the Location of the ArmorStand + Optional islandOptional = islandsManager.getIslandAt(block.getLocation()); - //TODO: Add API Items here + //If there are no Islands Present + if(!islandOptional.isPresent()) return false; - return true; + //Get the Island from the Island Optional + Island theIsland = islandOptional.get(); + return theIsland.isAllowed(User.getInstance(player), Flags.BREAK_BLOCKS); } } From b1ea42f78bb392b3e20c8fd4e50aa434cd3be2c2 Mon Sep 17 00:00:00 2001 From: Wolfieheart Date: Mon, 30 Jan 2023 20:56:08 +0100 Subject: [PATCH 209/369] [CORE] Update Bentobox Protection Signed-off-by: Wolfieheart --- .../armorstandeditor/protections/BentoBoxProtection.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/protections/BentoBoxProtection.java b/src/main/java/io/github/rypofalem/armorstandeditor/protections/BentoBoxProtection.java index e66a69fa..2bbab31e 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/protections/BentoBoxProtection.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/protections/BentoBoxProtection.java @@ -30,6 +30,7 @@ public boolean checkPermission(Block block, Player player) { player.hasPermission("bentobox.admin") || myBento == null ) return true; + //Get the Various Managers for Bentobox IslandsManager islandsManager = myBento.getIslandsManager(); AddonsManager addonsManager = myBento.getAddonsManager(); @@ -40,11 +41,15 @@ public boolean checkPermission(Block block, Player player) { Optional islandOptional = islandsManager.getIslandAt(block.getLocation()); //If there are no Islands Present - if(!islandOptional.isPresent()) return false; + if(!islandOptional.isPresent()) return true; + + //Do not run this check if the player is the owner of the island + if(islandsManager.isOwner(player.getWorld(), player.getUniqueId())) return true; //Get the Island from the Island Optional Island theIsland = islandOptional.get(); + //Return if that User isAllowed to break blocks on that Land return theIsland.isAllowed(User.getInstance(player), Flags.BREAK_BLOCKS); } } From 1eef4e3cb9687b735b9c5491ca94b60f7d537281 Mon Sep 17 00:00:00 2001 From: Wolfieheart Date: Mon, 30 Jan 2023 20:56:27 +0100 Subject: [PATCH 210/369] [CORE] Update Bentobox Protection Signed-off-by: Wolfieheart --- .../armorstandeditor/protections/BentoBoxProtection.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/protections/BentoBoxProtection.java b/src/main/java/io/github/rypofalem/armorstandeditor/protections/BentoBoxProtection.java index 2bbab31e..ab982c54 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/protections/BentoBoxProtection.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/protections/BentoBoxProtection.java @@ -23,6 +23,8 @@ public BentoBoxProtection() { @Override public boolean checkPermission(Block block, Player player) { + + //Get the Bento Instance BentoBox myBento = BentoBox.getInstance(); if(!bentoEnabled || player.isOp() || From afe71216f073c95ca61e4dcff54101fcfad9a30f Mon Sep 17 00:00:00 2001 From: Wolfieheart Date: Wed, 15 Mar 2023 17:53:57 +0100 Subject: [PATCH 211/369] [CORE] Fix Depends and Update Protection Parameters Signed-off-by: Wolfieheart --- pom.xml | 18 +++++++++--------- .../armorstandeditor/PlayerEditorManager.java | 12 +++++++----- .../protections/GriefPreventionProtection.java | 3 ++- .../protections/LandsProtection.java | 1 - .../protections/PlotSquaredProtection.java | 1 - .../protections/SkyblockProtection.java | 6 +----- 6 files changed, 19 insertions(+), 22 deletions(-) diff --git a/pom.xml b/pom.xml index 453b8bfa..aa974f6b 100644 --- a/pom.xml +++ b/pom.xml @@ -81,7 +81,7 @@ org.spigotmc spigot-api - 1.19.3-R0.1-SNAPSHOT + 1.19.4-R0.1-SNAPSHOT provided @@ -95,14 +95,14 @@ com.plotsquared PlotSquared-Core - 6.10.9 + 6.11.1 provided com.plotsquared PlotSquared-Bukkit - 6.10.9 + 6.11.1 provided @@ -115,21 +115,21 @@ com.github.TechFortress GriefPrevention - 16.18 + 16.18.1 provided com.palmergames.bukkit.towny towny - 0.98.6.1 + 0.98.6.19 provided com.jeff_media SpigotUpdateChecker - 3.0.0 + 3.0.2 compile @@ -150,7 +150,7 @@ com.github.angeschossen LandsAPI - 6.26.18 + 6.28.11 provided @@ -192,7 +192,7 @@ org.apache.maven.plugins maven-compiler-plugin - 3.10.1 + 3.11.0 1.8 1.8 @@ -226,7 +226,7 @@ maven-release-plugin ${maven-release-plugin.version} - [ci skip] || [CI SKIP] + [ci skip] || [CI SKIP] || [CI-SKIP] @{project.version} diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditorManager.java b/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditorManager.java index 59a29f26..17bae97b 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditorManager.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditorManager.java @@ -45,19 +45,21 @@ //Manages PlayerEditors and Player Events related to editing armorstands public class PlayerEditorManager implements Listener { - private ArmorStandEditorPlugin plugin; - private HashMap players; - private ASEHolder menuHolder = new ASEHolder(); //Inventory holder that owns the main ase menu inventories for the plugin - private ASEHolder equipmentHolder = new ASEHolder(); //Inventory holder that owns the equipment menu + private ArmorStandEditorPlugin plugin; + private HashMap players; + private ASEHolder menuHolder = new ASEHolder(); //Inventory holder that owns the main ase menu inventories for the plugin + private ASEHolder equipmentHolder = new ASEHolder(); //Inventory holder that owns the equipment menu double coarseAdj; double fineAdj; double coarseMov; double fineMov; private boolean ignoreNextInteract = false; - private TickCounter counter; + private TickCounter counter; private ArrayList as = null; private ArrayList itemF = null; + // Instantiate protections used to determine whether a player may edit an armor stand or item frame + //NOTE: GriefPreventionProtection is Depreciated as of v1.19.3-40 private final List protections = ImmutableList.of( new GriefDefenderProtection(), new GriefPreventionProtection(), new LandsProtection(), new PlotSquaredProtection(), new SkyblockProtection(), new TownyProtection(), new WorldGuardProtection(), diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/protections/GriefPreventionProtection.java b/src/main/java/io/github/rypofalem/armorstandeditor/protections/GriefPreventionProtection.java index bd494cbf..99433abc 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/protections/GriefPreventionProtection.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/protections/GriefPreventionProtection.java @@ -9,7 +9,8 @@ import org.bukkit.block.Block; import org.bukkit.entity.Player; -/** @deprecated **/ +/** @deprecated + * Plugin has gone unsupported for a while - Might be cleaned up later. **/ public class GriefPreventionProtection implements Protection { diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/protections/LandsProtection.java b/src/main/java/io/github/rypofalem/armorstandeditor/protections/LandsProtection.java index 3eee0ffb..2f9d144a 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/protections/LandsProtection.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/protections/LandsProtection.java @@ -33,7 +33,6 @@ public boolean checkPermission(Block block, Player player) { Area area = land.getArea(block.getLocation()); if(area != null) - //Return if Trusted in the area or not either based on BukkitPlayer return area.isTrusted(player.getUniqueId()); else diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/protections/PlotSquaredProtection.java b/src/main/java/io/github/rypofalem/armorstandeditor/protections/PlotSquaredProtection.java index ad3a209d..69e7d187 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/protections/PlotSquaredProtection.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/protections/PlotSquaredProtection.java @@ -31,7 +31,6 @@ public boolean checkPermission(Block block, Player player){ block.getLocation().getBlockY(), block.getLocation().getBlockZ()); - PlotArea area = psPlatform.plotAreaManager().getPlotArea(location); if(area == null) return true; Plot plot = area.getPlot(location); diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/protections/SkyblockProtection.java b/src/main/java/io/github/rypofalem/armorstandeditor/protections/SkyblockProtection.java index b1a41d65..b2632dad 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/protections/SkyblockProtection.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/protections/SkyblockProtection.java @@ -30,11 +30,7 @@ public boolean checkPermission(Block block, Player player) { if (island == null) { return true; } else { - if (!island.isMember(sp) && !island.isCoop(sp) && !sp.hasBypassModeEnabled()) { - return false; - } else { - return true; - } + return island.isMember(sp) || island.isCoop(sp) || sp.hasBypassModeEnabled(); } } } From 30bc254ada3a39614cac0f479671e991faa1da2b Mon Sep 17 00:00:00 2001 From: Wolfieheart Date: Wed, 15 Mar 2023 17:58:28 +0100 Subject: [PATCH 212/369] [CORE] Update to 1.19.4-30 and Fix a Bug in Lands Protection Signed-off-by: Wolfieheart --- .../armorstandeditor/protections/LandsProtection.java | 5 +---- src/main/resources/config.yml | 2 +- src/main/resources/plugin.yml | 2 +- 3 files changed, 3 insertions(+), 6 deletions(-) diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/protections/LandsProtection.java b/src/main/java/io/github/rypofalem/armorstandeditor/protections/LandsProtection.java index 2f9d144a..45e5a52e 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/protections/LandsProtection.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/protections/LandsProtection.java @@ -7,19 +7,16 @@ import org.bukkit.Bukkit; import org.bukkit.block.Block; import org.bukkit.entity.Player; -import org.jetbrains.annotations.NotNull; public class LandsProtection implements Protection { private final boolean landsEnabled; - private @NotNull LandsIntegration lands; + private LandsIntegration lands; public LandsProtection() { landsEnabled = Bukkit.getPluginManager().isPluginEnabled("Lands"); if (landsEnabled) lands = LandsIntegration.of(ArmorStandEditorPlugin.instance()); - else - return; } @Override diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml index 20252dc4..a1c992d2 100644 --- a/src/main/resources/config.yml +++ b/src/main/resources/config.yml @@ -3,7 +3,7 @@ #-----------------------------# #DO NOT CHANGE THIS - CHANGES AUTOMATICALLY PER UPDATE -version: "1.19.3-40" +version: "1.19.4-40" #----------- LANGUAGE #Name of the language file you wish to use diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index b2c30cb1..5f5f7351 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -1,6 +1,6 @@ name: ArmorStandEditor main: io.github.rypofalem.armorstandeditor.ArmorStandEditorPlugin -version: 1.19.3-40 +version: 1.19.4-40 api-version: "1.13" website: https://www.spigotmc.org/resources/94503/ author: Wolfstorm From dd3ffec374ade2c80bf98e28feab3a39af080374 Mon Sep 17 00:00:00 2001 From: Wolfieheart Date: Wed, 15 Mar 2023 18:55:00 +0100 Subject: [PATCH 213/369] [CORE] Introduce Residence Protection. Fixes #193 Signed-off-by: Wolfieheart --- pom.xml | 8 ++ .../armorstandeditor/PlayerEditorManager.java | 3 +- .../protections/ResidenceProtection.java | 69 ++++++++++++++++++ src/main/resources/Residence5.1.1.1.jar | Bin 0 -> 1003824 bytes src/main/resources/plugin.yml | 10 ++- 5 files changed, 86 insertions(+), 4 deletions(-) create mode 100644 src/main/java/io/github/rypofalem/armorstandeditor/protections/ResidenceProtection.java create mode 100644 src/main/resources/Residence5.1.1.1.jar diff --git a/pom.xml b/pom.xml index aa974f6b..a14fc48f 100644 --- a/pom.xml +++ b/pom.xml @@ -160,6 +160,14 @@ 1.22.0-SNAPSHOT provided + + + com.bekvon + Residence + 5.1.1.1 + system + ${project.basedir}/src/main/resources/Residence5.1.1.1.jar + diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditorManager.java b/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditorManager.java index 17bae97b..1a746b08 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditorManager.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditorManager.java @@ -63,7 +63,7 @@ public class PlayerEditorManager implements Listener { private final List protections = ImmutableList.of( new GriefDefenderProtection(), new GriefPreventionProtection(), new LandsProtection(), new PlotSquaredProtection(), new SkyblockProtection(), new TownyProtection(), new WorldGuardProtection(), - new BentoBoxProtection()); + new BentoBoxProtection(), new ResidenceProtection()); PlayerEditorManager( ArmorStandEditorPlugin plugin) { this.plugin = plugin; @@ -287,6 +287,7 @@ private ArrayList getFrameTargets(Player player) { boolean canEdit( Player player, Entity entity) { //Get the Entity being checked for editing Block block = entity.getLocation().getBlock(); + // Check if all protections allow this edit, if one fails, don't allow edit return protections.stream().allMatch(protection -> protection.checkPermission(block, player)); } diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/protections/ResidenceProtection.java b/src/main/java/io/github/rypofalem/armorstandeditor/protections/ResidenceProtection.java new file mode 100644 index 00000000..f1cfd605 --- /dev/null +++ b/src/main/java/io/github/rypofalem/armorstandeditor/protections/ResidenceProtection.java @@ -0,0 +1,69 @@ +package io.github.rypofalem.armorstandeditor.protections; + +import com.bekvon.bukkit.residence.Residence; +import com.bekvon.bukkit.residence.api.ResidenceApi; +import com.bekvon.bukkit.residence.containers.Flags; +import com.bekvon.bukkit.residence.protection.ClaimedResidence; +import com.bekvon.bukkit.residence.protection.ResidencePermissions; +import org.bukkit.Bukkit; +import org.bukkit.Location; +import org.bukkit.block.Block; +import org.bukkit.entity.Player; +import org.bukkit.plugin.Plugin; +import static java.lang.Boolean.TRUE; + +public class ResidenceProtection implements Protection { + + private final boolean resEnabled; + private Plugin residencePlugin; + private ResidenceApi residenceApi; + private Residence resInstance; + private boolean permChecker = TRUE; + + public ResidenceProtection() { + resEnabled = Bukkit.getPluginManager().isPluginEnabled("Residence"); //Check if Plugin is Enabled + + if (!resEnabled) return; + else residencePlugin = Bukkit.getPluginManager().getPlugin("Residence"); + + if (residencePlugin == null) return; + else { + resInstance = Residence.getInstance(); + residenceApi = resInstance.getAPI(); + } + + } + + @Override + public boolean checkPermission(Block block, Player player) { + if(residencePlugin == null) return true; + if(!resEnabled) return true; + if(player.hasPermission("asedit.ignoreProtection.residence")) return true; + + //Get the Blocks Location + Location loc = block.getLocation(); + + //Get the Claimed Residence by Location + ClaimedResidence resClaim = resInstance.getResidenceManager().getByLoc(loc); + + if(resClaim != null ){ + + //Get the permissions for that Claimed Residence + ResidencePermissions resPerms = resClaim.getPermissions(); + + //Check: Is player has Admin Flag? + boolean isPlayerAdmin = resPerms.playerHas(player, Flags.admin, permChecker); + if(isPlayerAdmin) return true; + + //Check if Player can Build / Destory / Place ? + boolean playerCanBuild = resPerms.playerHas(player, Flags.build, permChecker); + boolean playerCanDestory = resPerms.playerHas(player, Flags.destroy, permChecker); + boolean playerCanPlace = resPerms.playerHas(player, Flags.place, permChecker); + + if(playerCanBuild || playerCanDestory || playerCanPlace) return true; + else return false; + } else{ + return true; + } + } +} diff --git a/src/main/resources/Residence5.1.1.1.jar b/src/main/resources/Residence5.1.1.1.jar new file mode 100644 index 0000000000000000000000000000000000000000..fc31d035b7cd0bb100e58fe9f539a257c90e3fac GIT binary patch literal 1003824 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

<&~l;iTkUCc!CFNyj><(b_$#M>>h6!4_rw( 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

RAeF!UMz)%fh88!lly^& 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 ?3jhN+&el*trQCJ3aFf$9hCZiHh(Q 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 z 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 z

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ⅆ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

0c$`2?^RQRzfQC3X7M0Q=0=HvXb2aRyKN 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

#=ipfCPC2vZ)y{&4(V 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�nv%1 zXZ4u^jolM&e+%gYm7gOVpA$*#-uxc9VQ#s;!Vy^r@u}% zHVadSZZfAK0#T7&&YD*g=<)9~$BO*28l1YFOySvE`xsxF8j^a%x2`MYza}}~6=@dS ze*Egj7jmQ)N*4_D(8s`GVLei-YXZltv+g155q;B`>8x%(-0Hd1j%~-*VVK=3iG`PI zdpiT6Yf`8$jY&I`%3IzKcAP8LrV& zZs)0-4ss51li+r*>E_Ze4;M+jQi7vm4yx&nqUun0rgLl8~lV8yP(Efrv zb1Tu%000L#|DE>d`v1`WHijOiPX9&ow`f6otDL0plV@abGk3(t-(#I1k_a$KLQoJO zfsp!(B;^N(`9ldaK>{aba4-`RM9QP!6RfIHzYEk9zM$#@Q--wE2(8_^Zr!f-T6fvG z?X23iX?N{(u0Q+rdY#P@CozQTevo#&d1X8IKKw-G59w=O{N~MW(IWzH(RU zO|@#tk-~72re3{jfwHu`y}e(WpmI%A+Q4OboLuJYLdB3fdQrT@P&x=k(_K+zoW$R_ z*hUFKkIo*f?LDy4D)`xeGP994AR;Q)fhY^%f zdc_i9m0n9bH`o*XAgs^(9i9NmKZ{#QP--~Cs6VCVFdXcr>LJXrn2P`e1!}}C12Z?c z4U|c1Farn-o=7L$O;sMvn!{X=Ygbtk#hRIyngN4;)hr-D8ys9(5L z(hL!>w1FDbrBuMkq-Fb?8u=q@rzIoJsx`>MgDaUshuku&vCaT&h@_NFbt@0_{HNku zF-Fk|TqpDfxj)bpI&{!>(UO|BeXH?^ z+fonK4zSzv-O2^uCUwMAA8%?0X6Et2xo;`7^Y;5yV6Q+}--=Ua*6V@_|k6>BYx#9J2md^rN2@ah;c}i$s5i$;Lf5pcE!h8qC8W+hDjs!-I-rn`O%rZwu zQBZ@XF=y8V`WY8n72Slh{N*zWZ_Ez9i;PL*g=Ps{qZboz(Gp#!W-i>-GY+9XYS|+< z;YOC|V`l(b8^PHCaCPj3DB~4r>7-2|n96mm9h{pzT=Sp{8JHv5DW4C3^6P>%SC5=M z0c&{C--K8J7AQ1P(f9ob`Vc2cKQho|F3MP{F@`l+@e69K7b4;85Q&`F1$9Jt2>gg| z8;a_se?=GR)48I$0R~n4hlOqDS6Dupk~v7Vw2jOe&zwess#-F3=5xc1mWX*_PQ^=`F2l^)>rECqhrC(dab^E$J~K{v5>0 z_=|0k*^0nlt;^pcxeX6~(uH z249}y3|(H#ufx@eSi)~$KEVpJQmQE);+JIm!Y_Stjx{uy zLA?VCNm-DdsaE97x)c08%lyYGU(BOZ;L_rSMSD{LhatN{G#VN=`PLgz$}QJzG%Cz@ zgli5xfTPtf3jMrWVUmOsmi>!(>pKBVzg*RXVBn#Ii$2jgWk|xo=)x!`?Otge@ntMp z`idsZtfT(Gv=C&gDONb+W?1r+Ek~G(jQ}aW&l$?>Ru>Fx790eSbb{{LEJ-P zoM-kTvE+XsuUs+w^hH3q<@BPiG z69($K=4Ssb_oh*bfwB{e#96?OFskswng#rr&&|Jd?Iu;Tf?{2|PC!O)hfQ2g9p@Bb ze}<1^TxS;pDpNV-h>DEBGcEODfzch2WMvaW&T6sQ`3D|C)-EYp}Ulv+hTq1vrI{j#&*59f*rEj6&b_NJSSm->8aM2H|2gl7fqa2(jC-|D zxZT(%&e|l~3GM21+(W2=k%}}ysnUb%MNd24aR~#L!VBs0A(A7QNREm5L`Qr%Z;yOI zUY7XI$3(nmO%9*t1QEY~x%del^aG=lI$AnE1b+fY^W-@+Yg|uGCEB&=EL?mgT&D)* zs`*NL^{b=H?;?w^8U+G-f|7hL66f0px3XWHvFZk7FjbX2B5mqCsgGDN`BC31&`3X|BpJaFOVmAkxSeveIhXMwh#=Wr-Y|P9&)wdjbDCW~$?sg;-ZcgTXJaRfHD9hH94? z8^Ol-KP$%j;T=ce>Ir9?j+tnQy-dbVxNzzgcr$5gCfCsf28p8-;DaVvE()I~v`nMi zghCq#WoPadHjY**vpiy?)YR|@QDgPg+pZWosScd8T333~0F(Rci!@o1%oH@Z5Uz5k zl@8*fvcQwg$vdvgOwDJM4v7f~EgI5Ia?7G(rEH|cT*+X=r`uI2v6W`H$(<-_?Wy=A ziiPK_h>x4EZ_IT|3rt84M2a#r#Evc)-J3yvx6zEmsiu0UPI^gzrFs|-gs44c`HH+} zi`@tM8JTBUnzvm{ErK*VTJZ~zmV&pD(Hs@qg0;dzbcr#PLAuh0@v4`!)3BPHQrV0d z@LJ+zf#o{0SbE)w{P={o_ZiHW0a@afa2b3tMxg#KSz%Xq0Ff z!h;EeZM~V4S8q<#NsQ8xomhs(#E9IT!~*jZ{({u{fc~UE9o})Z{{`D`O}xog@@`yc zIw1mGREXk7VKRz6eqETgU{&0qJ&ch`4!(;Ww@@Qt)W%+lO)AovuZ8&se2M4F@X`Ic zr#b9`c9VTh?WAGE(k~lNgSciL1OC}ZVWp_tOt~}<{6*yE9Tz}G`&?%;vK?Yk=(`47 zNL`^!Ym(;VUd);@=2R&={}}xO5rY$~!Gz-v8`Co&7X)maQL$Z&=d_Lk>&YA8G7eUQ zSQKlg>T2!6j!4mG{JE{=O>y^Q`$-CUvbtG0ZJ-5j;6*$D^R~9BSs?w(zW~KV@9%4# ztTER_vj}_{e9mEUxGC{ht2o|+f1o$<72Xv|eAzHX5#9TKHjITBn0nmiy#SU!z(_Z8 zAZIc6V{-Ej=ry1=hjpM(%`d5at67$_aD!5K6G6ctlg=OU%<3MqV3MI{*QsaGig6h# zJ>fQGmc?RCUjW&q-zrgUzI4szu9$k>yN`!ys0(SCS&>WHoOJwh^v?=L#xCXV8##kU zWi2RWsPb~28F~XS34aqwyTnb-WJj~Q^B5M=&6)S>y{^l~4;o&=*JMSShnlyFG{ZS~ zVmW%WzR6^`n8rA70Z^lz_=NmzkKVp4Vd+9$Lafo%M_Q9C6CNTRukaSn66P zj{nYB-#oslIA`zjO6_q9{gM!gVHNe|#Vwq3$h;o99X=0n{8cHa%Q$!QvZ-5`i(RBQ zED;S9oiuhcmVGJ{U;ZEm+`l87K_oyXFLTIjvYb@+oBf3imb!@%%K< zP&-NgHiV-5<;AA-%aNQMb0#|pqb&ZGnCOLqOIEoFynetb`yEI5QJI80Yz*$AIiQ0k zPK!t=|HvshKL)EBT+snHYjym^B=;42kj4vchlJ8EZ!8i zm&{#!brj~N?)paXl-*%OM> z+m$ra=2Dm=uxx0-hmEwsglotNBl1+w*m}b&1oxc(2`i@|CpoC}oxcVerpE0Uy(=jo z?=t?pUb;8TsV}NO9(ca}K#P8mavz*PAE3Y^<(hE9fd$6N5@D3x@Cp}cgkBr5u5_aKjejQ^XTPZ zkOYBGZ+Zs<$x`u~t7emz=E6o>eXlWGv1{y$L&Wcu+F%k_pTshxT?q^%E5@K#T4m22 zO$1fadNI;JA>4z9e_>etLbUi{6>eIZD`@ZP-&lr!p;-M2g~$l2T=52NPWoCQD#E$O zV>_yk*AiCN@C9vN{9Sq@Qi%&BzMG<1A(Kb)Fqs^z}5zjH2lsJQ~DRLn^;Z^~eQyW7Wnv3907?WMs-JD*IGK?jK)UHjUk;QL`Ok;)XD5eU-0087n_r3T(!o$VvQ?zomz*KAe(Uhb?E4% zlxbV(P6SZ-xa{wewre|HMmUQ)@}3|*e4d5SqI&9b0TMg+UFw>| z>FO_A+ z<)(#^O8zQ^^Jj38w|e%SY!+;P@ggNt7mgBafh#YmkPaTK*`EClo-LP*T?5T*o)_wE zg)z4EcfMx1j=1qY8UMa*(LpyRB`JUy7~`d<)iK06MoA7%(ayH0yfb^x_|^sLu3+5* z>@(Y4@!JR4XSmzK-G|v{x_yECJ~sB=EM0F<*i+8L6LVu9ByR3>VF+IF>+#sX&Gim?vIB?$o)~q=WST`-*F*$0%+cJq(MCC zyfG-lxClwZUj#hs;Cn$|CTWN#WvXEO8JL4Ggh6(jPwM~hfR`C& zZnIGV0D3w9I}iBZ&HvZ>4;fQKXVd>`0c%3K>zJl`60%B4D{E~AGRWF35&nk@d=W^|2w4b36;2zamO!LJgSr?B6)06@fePY=;`X49 zc%uI-IP;r(w<}||SR8ZmdtiAw+m?MtbLTPlam({tN1g}fQ2V_tl)9h&s^RuRR%UHY zqt#QKas|R^doXK3v4MSd9XY)rI%B+C!iQA& z9J>0h}8>Nx{ajasQcdqFFJJGB6@X&Z%8Bu(Ry53wd3-o4Q6ubaRNngW!dfL~pS+#-j&}6(>gcGYt-HhF=oV zbq@41MxbHQr~6|X0-Dfj%UDtFi#6rV#Ddq_RE0S7(!$1OR@({p^r}hrVQO9cTNoj*zgz7fB%}Ub+YHAYq@%}|;o&+}Saod;NL3W< z37Fe|OlKP0&+>EOlDIpHJXJ}WgJhf*Ls=+w^<$}Nx}QJ{?czj}2%U_06mc(F9Z4ai zx+ptYQ6SxP8kP;3AKR@=Aj+2(=k1Dso2S=u3>3DQuZu`h2V*Zi-6zqSwbI7oqNo9;XkSwqI5C_{c64Bk$ob#jM+1w>^mR+(O|U zMt^D$S<2WcgkCl|3Vh72Qq9&fE~52jp1vN%hmbQ*I!aS?jEtt;qg)j4K#C_zVNYT| z-kb7RA7BbTSRgb%pn9*^qHOn8)Y}9@<%XR(3=bY47mrz>ZM}2#3VvF`i>BG_;zYSc z%lv^o!G6xS-+WJ{gD3N3Cp{{7H9^=zJI16>X&o+{h0}fcAFRD&kSN`@CAw?ZF59+k z+qP}nwySp8wr$(CZQFkJ-P5-_`bG5Vz8#&Bk+C9w6*2YYyDYln$Z(%!<6;2RSgn-oz3&pS3|995GSaiMIM63QLpgVdgF=41H zM$r)hbQOSGt|7t10Tru>0q9A5JRoUhPvg|lGe*`CIL@m5IX0&)wlItjx6Iz07z5UH zAmO)lb22VVkGxz!DziR&5V?FPmMd9T5DIj(qNYJCL8lbWz8>FSzkJ@j;52;~E!k+4 zCQ0I8dWiWubjLrwW&X$Mbv!YZemqWIIkp*ZC`lnP!arbEiDtU#misx&OMHY+4BKqF#p=ZxK8q z9s*8u<33eJZU?kjOd)EbR5G}LHc_xK$*)bBv`$`Fm%I~J$2wPnck)AyQmV%HA{NV& zE@_{F*XAIBIbJgA+y%Xc;Du-%{qjRBGSsGE7pw=tr@keW_=w}bE5DCGb&8a|< z#Ne}m0WGr)vTQh{f7IxLfUiRtO!bK9d(Ldq#8YW&EoS(3#>i#KI%~*mu!wh5o#P(L zBbN;)HxrD?5ioadKs2%^U-CNb3PKtioGQ-?i` zMhh~TWmOO?DrgO(cA^gJBOC^^ap+d}o4f*>JcS$%Dutx?tTuK7I3gW_>&62v|5OrH z^YO+z?)hyY{2}b#1<7ml@yUd=VNy+-ai}y(w_QQ6&?#NJi;+S8*3qQrbB*NNtBCZ3 zdVl)}-L`c9N{Z!#ws|b22@!7E+)d1m#Uz-rl~HTxwraOVGmW*as!B0gZb^|sBm2`a zQ4uRMS!*2TjWf$~s>Qx{I1TPHcq)67^3qyj^1tQ_597)kM1P`ebl2hL`vxoaI`-Z7 zUMjavQcC8Z`_Zb~Tpn7g+o@Vv?hixt7~kY!oNRtpL0WFJ@#2SJ-;1YEgz$0~9;q!L1Xde9nNlZRq zlGQy&jXT(EcswtR_x<&aJQ z>`j%nLpO~svTc2H*!5d1D|fz;K)&0n+c(8G|O zhU4Sx1zh4sx}>)YS>HJ?0545 zc12ap*Jh*8l;~lBz_>J#kEw-6q!W9IeZ?vWhNm>TAI7&D$o?Pc{S;B$$Gt};vD)0U zQ9i@>8Y36Kic~Or0>j5hXlwK8V1#6J%?I%$b$os?Wb>XH7{8Z(aDcf3r2+F4DO^Av z7!Y?S?lCf${Ly2UW?9ZUJ>u;=pXf#7ESmV6bUqnsfb^jVWZo+A4D_%u)>#_w2t{fk zYL83A=F1>wML1n(xE$l;KDlS&eF$gx{v^Mm77}~8eZFqdk%vEw29qfFY9C%AijbKN zpLrctwOfy)=9eSq^Hp-j;`)^?D|gFEJm=d|{RatLTBhDh}ct!^^n zfRIV>sT7Y&DFm*9J=EykP-iTSECDh@fNJ`1-p$b&>UmlO4>_$~T#KxQRPM{+j*lNRuXe;Jqfp_P`>AwC*&p<->(r(rD3HlQLHC z!B{`3>~7+_UFtR2%UjK9ZP_VE?JI5-IF_IcPMo=&5>L~-epS|9rFV07`SLq?*~vQd zW}^KNCNPBQE?On084>Y({Gh1;a7FKGOW;uT;RSoXO;EX*__lHf%5vIE1GS`cf5Irx(F5iEK^kQX5Dx0&1M^hL*X!v` z&hKVuo(()`=3=xA=n=kv`$%-PqY;=^(a|>q0x|L=49x?I+e`f0yPC4kmm6HojsEMM zUYDk+%l;~LpRjJ2?6T3NXb_9vi6FPF=;b5iV_Q;9&MYu_#rCjVRWZ}cz!E- zCqso>voyx-BJCh)N;K~?OWm8!Ri9F~Hac>}1lw;n$#EMGDMhpX6;VQr? zq<~9D2?v-%XhdvYu8pKUjB}V}lcfuO1tM5!q8_w`a}zLyDJ%?W0rIDhW&y#pa*jyz zxe-kCeRE5b^h*MP9T8#(CS`=S+;N8al@q~Mf?Lj(eeJDp=vD48B3lxQI^(=LAu{yw zPrJaJK^V7~BHKOhKW;ZklpFZmo~qKlR`P-CM$A_+^S5%P1H%WD8)Oo;$&|yJ_H^8M z7Bvc01JtK|o%UQ;46^NOK~uO3F9-J7+^w<{$xtsu-a_qVWV_2RP*!EJ$RA1SM*E)P z-Dxra3-=YYi2F<*S*xv)ZQmeYyuMq4W%ZN%!>%W-ROXLNT!l6m>1`_?0h! z%ZF#zLs`hj_w7HS5g7~8-t{hj$KmI@$;*BJ*^i?&?z)!si9o#%@28a@)grTBcD%`k zIw?E_V)io)N6{%$2h2(~v2~p)JmcO^G%T~xnAK7jPEd2_)xEC4_rNkQR$XVi;g-F; zc7k%8lnyOECF`>P1n9Nl4vSoptb%+W@a@%=u?Znu#v4mm2p4<{+J#_wK|x z|L-+WA5rvMc4cMG(HuZ+I>ozDM~;(>^6Z9pDyb{*y}Ih{U8j8!kZ1HqW`$Ey@xv$R zMeK6fTS39nb@}K~e*$-^9L7!@i#ZiCJDZi>%uH~`7Re#Ut>~G=qx6OjCZ@|X^}&lp z-SZBCrl+%Ajf}ao{@2buzI36pW(`8@XWc~%r4ElAH9IbasN38IN%>oW6%6&$N-3c% z=7XrU-O$WEyCR$9&O$a2{_j{cvP9u z*vct>aj~FxC_WQAS?&d6HF>S70cVy|m}6jOGt{=2;0E5xSE?u4ZDWMn-(-(M@MkV!Sv0YXIzw77*jK~P zwHQ3Q++VOEw*(#jIPr?!{@r(GzjzWyUxFn2X^a58h5X+eD~4?d1GmLdyWOG4I$z=+cAeP#Sq_XogtUis>i^gnNA~*|C+CptBWP&qGQzNU!n z&Q;_r^D&K<+mn=c;7s0yZxG>_G-=|~jBa8==;mWGEm-KqV=@~e7HC`Dftklrv~$AS z9s+kVcEGy@G(`W1H~7|<;OH?2 zQYPWUqSyzIYOeL_mi%q@;oXW7=*jLL%_;aOBb4en_29_Vac#=_d&n zwsNtXlfcGS6pM*fmE997ozYG3>27`_^YA`6wp;X5DIzH3VD=HjP^bQ!y5BE_dB86* z4NTnQ^DYJEyh9Q7Md+|gkve6){s0!NHAO6oD?a;v6%^7b27*f=AcX|v09PtA>~^l& zRYGql(_^k*60Z)}wU|XO>C-wT!fXWZH4fz%g-i{~{RUQ0&2taHtxSj}S?PV`PzU*8 zTm`7n`$?L}+d%q!!=zRp<&NBJKu zdp6gDGY9oy0#}~(R_k#ITwWY$Qx)DeodHQ7+O@-cL}PqKO8{JVTu?Gc4Tv5LY2x0^ zQW^QKHS2YYlmRv_b%nUFMc8;(oh{L7(abW{cn2WWfYT$^!mCWoRkq87)52l#nJq~u zB{CUj1m?6@SX`m|ePxX*!TS}?X;qjESfBW}y6~owOp)@ZDhB10lfTR9Z()7ksA*>c z{nK((s4>FH1734lBue976%Tq6QRdCyZ{) z$aq8q_YVk^3b(;zzTBMY#v!f(YJ% z!{d3ddX!2K!~*Yv8DLqV4=LSH(uS(E4GZmpo^j#3t0(lmv=R_-h4P0Vrdb(IS9C3W zaY1(8Id!TH?ahwQKbrM@xPvr*=fq}|nrGLaPNAvs#K zn66bSlD0_(h*I+Fwa!kpe$^u5CT;Puy-bP6Xk!^#5RF`!{|pLbxH!H6YAIsc-*V4z zFKL)!HWP85ofZRl{(+KM+v33)z^`9?fBqemIR1~IWaMCGXk=|*^be-~Cv7}4icY4V z7cwY&y}?h`bZ}?{7;@uRD8K?x7@4o4>~njBQkB?sfyLbSVBkOx%#H|N#xD$nri0^Y z_qwg&<8=;S2TAz{P!#5hgk5`t4tgoIHgzHGcK=Qzq(+K`3ltN6m$h@CVMH*!x&@3% z@=KJnUdq*_z}?3Csx0_7kzogZdj#;Qnc*i;KuECt4Yw{E<>38zW+a5CdtE1{<=Ms$ z2gx&&W@62wZ*Ui(5o`ejs_nL?^V#qmG0^)sik5`cdYe}RI6{`&t{n*JYCQ_#rR z$lCCKP;=aRo)zfm(<{U2)9DO^STP_vaMY`^57l{8Pbz;CA&CFmnG zN@Xu!R3NrFhoM2HgCUwk+kImDjRc<*P5rfffCGiCzkXK9pD!s%J0ZMdN2LCs!6CZ$ zDV{PkB7ieOXsieNn2a1ua74EwbgpE>WCcUhWx{qMr+b25kFUQB3IaNS88u3Zwqn(^ zFGhP=7=mK1-Kc*6Jb>YcoAC-d2RNKOaFCgD$gZO+;{<3bVx1p|NRS`mT|Q6Z%`Q#QYhYDoii=@J@gmif}1n z6?_%~*L5Nu_?5Z8fc%3cyPa+S^ZzY3IsePt{HJ8u$ofA)Rj8z)q9B603FsGan-hws zxe&hC#21vmpn)Df2PzKc2OMs3%PclTdqf+;lv*>Ub2~|r{m!rAW&66}GsC0sJ~=9c z53JHBAboV_^?vcWImPqc=>fBYt<8F(=PC>8+}S~T4Kg;aGHztXNkv{qs>tV>HlCMk zVd>B?J`xTmZVCbyoU7uQ?ZK@=WJC2Wj`%mgJNTA28C_OihjgDQ1NH5=AkH`|mxZoz z5LOIC2u_G*s?CHG@O-(`G{_jzFrtely2KgeQ*}Cw>i*BDPANDn_ji5 z?Bc0CW@AiA1wZU=r`=s>rBZkwS-L@VP!V*ZL)|333se14)d@e9c>R2b=|L~foQ*YG z1#(p5ZuskcAQ^Lu&oid9-hMxZ9NH^IvDBbjB#KPaSQAA%l9kO2p>q}6wwZ-i(T znSdf8J)Xk?IYz$)V{4_F$6_wfgWWF>F-u%E7OBegv7D<6tf01Sn~2(}T&GFFD^# zo*s^LLchc!uv;E3U|>LKMP-_eeH~bBL>Pi?{VIaZxFp*n8lu4d;zrF{{SC^oIickL z9@PjzhNA3sN(5lS*c72D1(dlpGQ2+Yyhs>hw_ zja@+J8uik~h#SnWA78T_ZkU;(#Wjd8hu%+`bn{n~vv?lWojXo!0Knm-d{0&*o}{1N z`;vD^90QGlie6bd365X~E)I?ajV>87A9$Xp+o%jU2DSOZpc#aGe*fBjkm`*-^Z^M82_Af)?Ow}M1P zEg1wpL@ogdl{4^0Z-1QfzA#JKK;hyb!^o z)MJ0lsFquh3ze2{!i^jt#4?6*f*2qLJZjg8jrS?1bDXt%js1FIN_S%9htQ-fLC>u*6W`>|PHY{V4Qq&At)2NQg+jWKN zE7zH?8pya8(%PZ&Oa*DyPzSlhk(pLEwl?eP^K=xy5NlG_z1Duxgx{I5ckmKB;onM& zz4RrT1LRJwfig2-)N?7Y-Q=jQW84Q=Wk+SimthduBq2HxXTUi749Y+n5j*IUWflW{ z?zh`lrDw0|x6j(ecQNxcz&~&=8ul;i2RThX@S85EzF_f0583xz&P-Ow0VUzZ%*!tG@jH^~)dl|1r1d|HZ9B z#dGN&ZhaM1YPD+>C=Wo8o2pnr)Tz>_M&vN2q#!cszUWChwq+*dj#I8~K52PEBJ_^K z;PiyhXRRU!4e*AiUreR4ZNE-stbctxeuDVEt1`#vrZ{|B6_c@Z>99>&7ZVVWz~)+l z9fFhW)E!n_+AN!zs6ZB=+G}(SV?~!Y-IuizZH(}y;e9_lR+b~$xclQ_S&hwP5y(XD zYA&MEb6u_K4FrVdIv2E_fFWTu=`1@_yk(@!LCBAq#_}PBbPoBvP+8FyoOw$a_RyO5 z_Lxy+Hpcjw;fFaO*P$ASA~QKQ;3c}QZd!-$Nb$J624CCT1c1n2gM^S}$_0PS;2KawON%ax9(ZN(ISQy4gtJKS2#iYnX74v z^!7jnj~e74TW%Em7{Y01Py~nV@qKygKhK-)F^dC-LoOny^z)<5L#m-Iv5|4fH0%v@ zFCMs1PW0t+=k|RBc&P+u^(OeLc+8D3ZJ)j1o|^zldP9qdS7b^V_mIVppFHpI`{2%9{6r-& zhXo>{fq+oSEW5y|fwMD$;V@O}U`!|G8xe4No<)kc#s!r`4Fe7l#Wq$sSOOJerX_HR z{hfk3nTOyRN&(DN52l$L-iUJYLeClohRKEgXo^6H@mjAI2Gs-;Xo+)Y82hDk&{a8S zn%}dMM74lP2uQ7uAx_fY0?^$X@E@e3TSZ$3{~$dY=>IX&8UBUzOa+Vo*hQKvDL0|z zVd1vJm70ZC`ES(*3IyYcg`jY8KA1P9*Q}cBjZGrHgM9e*06%tMZbZ;bnuK=Ko#Nd# zhuKV?wq9S)-(h}PxSHV!k$UKDTZM0VlWrd6EZ-Zjz>nF0or1CKd5>>$vss@jCq{V& zO`WVEs>79}Q%z}z9byzfcH>{81DJ=>31kj2T%=<{ zB!2@xHN~~k>@$LZ2t2%nMXlN)$2%^6t|P)X5HIkd4P8dF{@da7N-Yj=xzU#wv>upB zYo0B;5Erxy4IXHzF~EVph61;nr(l^8j*(W*wh>^k`=u6>8=o5r?}r9kO`smov%_j) zw-9DB@Ig{%?#QF-8fw%>_{^CbxAYQyx8y)-u-FHldqcATiBth+8Ep}&n_Qk%RjxpD zg(en_mX%U9QY!sZQ$nt^|E8?KLHF#g@v&b5b&+Wc>$caJ%{Yd}HC}Y@#M2q44NI=m z)GW9G=JctZ0&b)r|7KM5Fw(cQqO9zz$4ETmC$8;j{!aajKMz{0hfkksoPO_<(jnaRgJtx}n9<(+6jb zy-(e%8dc*6$r99``yPuYP9k`(j{EZ~{BBnkMF?EB=!PetC_ht8*h7XFr@Lg zGN;#%jQ2C3(ldmckR$_lMu3VKn9CazE8(o7HUs{b06Y#&{V~?YQMr*E= zu-C}C$OVYhtO3j7kWzIYMDP-CtE@5u+mYtQiYDAH_tug5+143BS8^xo616(tAWmCx z5;!(1*xvRLT1ap)Q}@0iAB&Oll;JOb*J#aqQlADu=d&ug->DhTrw~EU5H8F~60V8| zT72`_@|aP@M~D`bO3ofot99V`a!xZwh!hO81Bc|pMEH>*!4=;>fmq08g*;VJx$Nf}nvopy)8xI5O_) z)$3J1y>0uCP}gJnJ2Uj>b9eFQegChe6UP5?sQa%s-KhrQiMY7PV^TLtn2vW~gbNxD zo&ti0ijT{u7?}ptE`?l#*g0kwyJND zy@p(_WMN@tRavQy)9{vh?Q=CTHD%3Ab9P-$#NdGQ)0hkU+hJ;xgy&<6Kv1z?zV%B!LVtJw@6AJ4#)K6>(6X=jaTO+oyT;G^Wa6EK1O8*YtoAcHBmq))X43oi^PF zm}7B+)yKufW(H@ojT!Y3B*orywxrr19u4>%-$I9mxNQ1Xh?(;FQP)B`qMPC*;wf0F zh$%pY(h;gsYkfhMN}kwf@6u%yy1n^9sG(#E{?GJKts(%iC11n;-~`78DnPx9|v zVq&wq8T#am8GBUv1u1Z*q><#CFWsvqqkl!3fh;xJopTxAer2;8Fp_L;N2alC?4z=YZ0)0S8((SykO9+sz)|?t zl`})f&@wjdAb2jcPR=6A(|9x2NtpFbf247ApU4Jz$Y)2cZbbFEromeqo`RYK=?2m^ z7z3VRnF^4n#;%OObVBubp)k8fF_9!fh`P}X+n?j{OZt3^fUgL5soVO#x;sT0luRmy zlGG#vI}uXU$Jc;Zqa)=agRwLPygwCsE!cxQh(%%o<0q8me(Q~*h<)5mclNjn`H_fG zg4UR${r+#Vq%&x1@B{p}1XHJ=r<4hrfragXD9d_kZ zODNvkksHzv;M+0hV2X(-w#hvR2>sS+GN@OHpalmr4{rilwaAF~Kvn zL#^S;qc}bU_sh8aZ#AGY4Gy0c*db^;6|k11?UCn9%|T73 zui4khV^#x#Bacw>*@IcpTK=ldjL`#{YnPD^M$6*wgTmbhmWl@FlRmIAg_5PPVrvFc zQI*hoEGnch-wRjp$2n(!obuEoY%DgvObe*Cs45Y{z{#r_;}mCM_5n1`f_anFvY~@A z?KVH_xC6%^+OG`0=9y!-A+Aoj+kjq5VWJSyUFCo-(Pn^sUu+2hR`cRS^<&8DW5!ax z2aa#k$bgQ$=)d%kNcLWsCmxsruHbP3 zNN@Wjg1hx*Hv7b5&ME}4UgYrQmm`;9S1@Z?R4en@b zCM{KWg9H#Z@#D;+3+-s0<%dAJtAZK|M38@>K4%h^HU)T`r^!I968deiP=XsHj-$YG#0Jj z%(8{WvjX8@zniW?jm2H1yd?6;h?N+=YZkSRhLJzdZKFG?CW#|k+O<`0h~6y+&mgyF z$8gc0KIEwqF5{?C(1&u;f5q{&li{{JiUepUA+3ImjOqSrn#@%>p<(}IYb{7%&O;YG z7XYx^RXMG;-5s2?z)%S9E^s2<(#cIN*%BKU6Sy{_Z>KZe-HB zdsivRV?L+(M2Fg|A>vxgdx6d7gdmEKw$vkKi_SE@B zlGDS|&T_Z$5om((ajKHSJ!E&@AB#9G<)5c%e|ZU{S*A%*zQr0HW@O*e_WR(D6~ z>b5nHthgQVd~N6hp7H`1+~$tu6aahQs-=(pS>c$Y$EDEXXao_HJ#|blRMF@Piy`x! zJ@)ZAXV&R~+#GX@uUw}G0z9-1Gn93n2)D3;tyhWkvA(0L!T8?1^sPNya?acinB;PF zD=6wX-O!o8ruj_$LY&jlq)FVz^ti%{Yi6{Bxdu9a=P&Js6HcYHFkqLox+C2>1h=#) zl0gnzre(yxX=P1Zsl^ihmi9IcB(?X3)XQj--wm^>Jv-o43GWCDZ4-8E^;XkXeI^_Hsm2hPaF+sN&EDa*|Bh`nFKh0Chqi$*NvP2<{-P?AG;7gX59EUX23K%?B%|i`_aG?iRXzDBu?9Q!&XS?nbtS>+<-5$r5CZL z!5D#CYQQu{?h#vRnHU}fvr5J-1VLF=ViHD?z%;w{l~{Gi-XW}j(1}cp3C%~g2sHC< zW^Wxc@SET^yT;m4Z&ii27l)A)ON`8#stg{XA300q4%LjVNZA%>;*rosq!tlG<`KOX z14NE&nl_AtC$r`^Zhx`YBM{Gj@qgO-(w3bh+jG|U-{E#{q6>!5w@r%oMHxGIjZtM) zx@6Kwc2US44H6?lI+q#aK9QX8XUcg^V@zF7OtNaxhvRxMkCh~IxOOsf4ZFDk+AOR_ z$2gT5)w-j0gaO_Hw>FRCIR5%BFxI8@_r&OyF^&H}ksfX{=nn*tR`{c7`x`gpTCaiFM z850rQgRWzUfD0g6)N@ZCkd+T17j}OLY!ff8`D1vVs^Qc{?>%^$5Q_idEaqbxV*-6u z6Z|A)=+(8fb53~fv0oUodU}ZQBAm&?;ZFnUpkR0-<;lPaNnd^AlwOJ@iW%eU-VAz{ z%XTG755402?w`5%xKuw#ZuKo8XgOIZ+_ktvb7!UOMPcO|8qH3;I&>SxK09y;e7%#Y z99vh%LjI8yD1~5=l9W)m$-Gf1-u8&Uf(7go?i%G(4OV1p(BdL*~e3JaQz=-~1W%LyE7_PFVo9`qJ*r z18R!`Dg%+Xd_S3N{gnfFJ9%u=oR9L#b{7P)4P@c=Nh`p+>gse?i{KNN5wZt#Du@zL z)FxS)Nwt<;yCQGdG;TYnre)xiJAI=Yag-06{zcEcHmQJ36uNT%8snp6V+VOGLx|Wr zI=%EKU)@!y?BIn;IE!ab-#8o?8tsE?7r$mX;ln`5+i)gk7J*sm6-(qe8?`~0+B?;U zI8#$}%NtL{5-;|eEFfE%Wy0C%8uZH|z=r^VZK`BynwAPP|4U_cZiUn*B|Fjoo~ zY<IZc<2ybL@XHsQv6tF^H?!34ilaYY2o6B--8w+ZJ zL~2{%p%nYK#|3%n{vp9f*8)NFAQ2@p7zkt}qcORYM9bO*ogZ#5wZsscL84sX0{sxR zVWrCai&xS2&~ICOAHmN%aM0WL-=^e*0T!#lNdg#`(utQ1TdF2hU& zn!|;+D1Qo=w`S@Vm@wlagi1!7KI30Ds+TQ)ZP5U#0<9`uem)e&$cCpw|{+$+6pme>dLH$ znNy0y269^Psc6kZLE*}yr1YTRv<|>-#Is1KZ9&oS$*A%*k<0@@PX0XK2Z9(P^uhsA zhma|WohG^WJ-DMHu3&~fr6WZmN3|uLf2yh>{1|frSwUTUki&3Fi9`-1&hz&h*&veW zGEy}@x41sx<3(acX#o8DUP0?(t>vX~2(%}fx^3p-%O7*aCvYN7v?b$#fkET2;RS3&9O0dPP4$!o? zR{d4X{Kof^O5FWLsCBOz0rE<9luG>&WOb5|q$0*tBIZ)bm4R~MUT ztGr*zYTnyip`upgu|{TLIr6nctn1FNw@4tRB*N*rHxl}eZe>Nv_(#gEj7(dz3$AVQ zuYs_geZ+0p6^4tDhpBXJk6w;h?zE1c6cRGAuZE{~ZW3XZc!_(|umPh1ZPi^wwhhJ| zq9aqC>ez(0FY;{|sI~2?S2>_S@qK?emR?Y{+HLJQe zFv>4O(>y}ay$O{qG@2E3A;N0{m(m0+BnzBb8N|FL_ltclfM$I=mL2N=$!u~59)GVn zmlV(OOH@Lrn^T&)3FaKK2=I?L5>h=WwgJrCt>WbzE;|ciIz!JH;~0i>%=(wVt46tBaK*}NEUigB-{ve zWDAZfTs|XRtTGA0FJ2P9wYN}Moa=(9`jhl>PG9Go-@bH?=bIEo_aiCMz4b$nm6xoE z`23t4yfy<^A7rww9o&^0xW(b?Hng*wG#K&UJt!KBvRx-f(73EiKW}V$S(Pc z8v*=x*zAd2V4qh-#BIs!rZkT;&3@e5eh8Zo)m=E&x4$+;-cRt}sJWt2KG?dl{o1?4 zKu!eMM^YC;&eHf2l%PtT1x`FxTOGBX5}gvQ7Y?zOBV>?T|HiW;1|cJKu5~ z;&xmDvsT<;MAqWth)Ba7@tRsmpGwIY^Sp!J*#T1|OIKy~J?NwVrA<_-u=<49aZUA> zd}#6kjVvl~+sAi=YN9l>V&SIgyj$x*T5qfWcbMuX!96P{Ac0H+(DaVbgn0d6+zK3ZW`DqWV^833)K5w|3o71|h(p@C<}e+p(i?eu5Oq-nY5xC3XY;eCKb&@H3~hCvGj7iR`}u zktWcZze=S!z<4*qw(y3ybGA3M6t||atmN%*bn9PnU6h{enuAwDM;vi%W=G6VunS(> zOIFacum4UDFaI|2^keAaWeTV3VgwSLauE3C18n0t$k$~qw1|+<7$S|JvpT%&O6lS! zOV@>cb<5^fdA3hOt2Fo`u~!x{QbPXtaGT5|q>wv!g=nk-6Qmkqs-UC^<)Uu=r){gx z;F6V9Fn+MGi`b_tHYItQtLhLzq?VI5@kl!yN)(vTIvnyD7(1%RLebt;Y91@(nFJ1QryGk)t> z;RKL7p8LST%vU3pdD^6f!2&a{`Bi`E^*&?L#U6TlQrkPmp*0%HJ8<}RKVw+NfxCMG z=z|>P?p$-g#;$g#!a|#Rk@&WD&5l!zBQ{zAV4DC1eof4|M&SnWZ#Ef3^*Er;x=SSOy1o1Q}tRc-ro_%L^S5;c5nx$4(MNv z&iy`|8^E(=CKtKzZjBz_S_K|YF(i%e#|WB-3%6BQJQ4Kv5L1C#hs_}AgUo-yyQZ4B z>Ra!?#*i^vad5X`ve-OIM70mG194WhC!$~XpK;N``jUzjn5S_8LCAOLRp^-4kFuqV zK3e#lVhNM!xpRJ-_O!#39N-kR@9p5Q4@)`>_A-QY?(LAwDQ78>C6W|(g2&+?UrcJn zh#*ZRhLjY{!I7$f&z5l|R9+omi_QvBMII}d{hrPr<@5*A5=rWMK3rO&6 zA9*=Zw>y8#yFIoQR8f16XGO(-pOhkc*u;m|iXDgA&-okGg|22yd1=MUY#H{ljAO*x zd$sVdN*V?9UH1EnjU=lNPj?jj<*)B~C10d_jZLo)XJRpNX?2f+%DrFT!(|)x;je&y zN;%(N1TqO_+EFafku9cz4Ta1l-C zl&^9zT9dDO?$0|04}IFL3Z)9mUx}#ZpSoKUVtIV&H4zN=lBsg`Bb?eqj|l+bX`Td& zJox(_gh(u>oBN&1&W-I+kcbkPPO{`5V?W3;j^-KRrUg-@rJ#@YLl0em(&a{=kHQaT zZZ4FdOHV^edb}gdwo;OgjZ3evUhHc&fPu9ADjbM-Psvfv!BH#%b+Ki7Zer;&=#k1Q z6tp3dmUk1Dp?$_YL*(iwOBUFTVkxfXx1R4JsmBUO6YTy};!<^Svr%?!(L;6}nOFp= z$4c3^LFk|qY*k6AC=R?bR;qq-2~)_WO&#DPbq`dpPZKOD%vX>+njtjIRb+hs$FDiz zIn}-dLni=d`W|tM1WX{RC=6mkD*H%rSP9Y$wm}6l$@Td8q8i=b+{S%TtM7dp!I55w+RH3Z;Pp<5 zxpCohQDgKIgPc%{;PW!{BEzRC)wXNCW;S*ecOSJ4P1YUQ%SShV@{;5!3#_o=jZ_1P z(2*$?5O)@85ywZ)N|jXQ*6kW=*Fj-0!u)KTtp?!%sa~l}XKjP|J9mIE zB~%}Lk9c$hC?Ntdr9xV0v??%}hRRokWuzJc!PFtBC#DzRSTPJtOl#y^$37skrx92C z$03IrM%%6*8`1_0||T`NjqDeubjx^`D`V`qRz4iDcWd!+p@cEJk*=0YVn3V zXie;+uD7)^8l6nz?weh+8kX@uNv~1{Te5J7Y$Io%$(4%ADJ?({ER%OaMM}No)022k zyLi7SzMwLR+O0lno|Y?6!>&Dez3wqrmtm-MNlCl&3FAFm@e6&%ZV$&mE*b} z2DLSx480!p>-WNaMh`NXtjoD;ydvdkt8{O>qVn~u-F4uiwpypoa5_oFlh~vO@36)# zE33A`g*Z;;C7UYxoZgjxuJ4#{Znv=fgSa6pJQ_>hiFIz1He|03q`_g%ah<5 zGrW8R_1M0jLc-+N12$*DZl_x?gpaRN2TTZ>K~)@;GNrZZJEEiyOV;1%Qq`~D9_McZ zdm&Dqyp$!5VeONm^l*hx@TMY;o}f6+4Bbv19?zoWi4B&;?$2f~pu;o%WLLz}pwYUD zYa6q_1x%w$ycCBGUPz05O(`?!FGg}sxasOD?uLgpEYiVBB{82NJxu1pLzX%4C^L`j zux&MqYbi$)^A^ZkYv?UbHzb=2ZZ?L*h%OJ)eV#|-B`ryd9K#TjEHN75JPIlteBV9- ztxqm#ljY?rHsza+6gk|pb=CjUoWA_dN~n86!fG#oKxFuP;9x*IN?iOlRH{Y=xjlCa z#Yy&QA9~wj3*V>)wLO1pHDZ>{GnY zQiqXeGZAQ3OL7-q?>u*1l91R?zinAb@HwjL*lC0=&H2f<+d*cOHO@i@&F`u#yvIYA zAfx61I=w>^C+2eq%Mhf#O)&OVwU6UEWyOUx%Eh(1lF4E>hFxpWzni7G`i*k6bYl}l z?gNh3B0~KfAp{eawBP1$8tdK4#!Q<+;0X+KpBL_gB+EC{qTopq#W9CSOw+e-X9-3o zB{i>TmW9?IEz(7&9ITj1zKnROxiftHsNMvo)H_NOErqQW0m><*GQS8}#57G5u}WV% z8Z*x@b$&0(mYTF@TuLrAsmy9%j@g!$e?+b*saRQ4YioFL+Ot1UlS{P7i6v7$kHq{g z;n_Q&DQk#zF4?1tSs&LKx?u1|U*923J9u@R9B^kKKA=_{QiScsn8U%QFEk-VS31G; z>NBQ>SBM#*W*dR`J@$eq2v&{0z1B*8uI?qUPbwaLQwxfxEzki7A*L#TtQ#u@Fn|6kirzqwxK~AoQCiDdz?c_#Xtbq#CT=~vjm#c z5B#{1J*Ky;s)$6FC%CZ_%78Tl$IYOH7cXEb-CpK$OJP_lzomeU)z7tDq+^j_%iX`F zpevVMRV%LdNdS}?1TaL%2e@-E#OzCrHT2zB=`O zbDy>xoVYOX7GVSs9B3VR`G!^ zaN(||iv;%jz;Zk1@DacNbZpzU`;BeeMn`YdaWeT1zL|4otutrMnpw|&{z2{9wePz2UEuZC zNf)uxAUt=EI9nun)`%KVc&whHF4At&s*oPHH$T6wd869#hc`zYE3kR1WWm<~N6tzN zJ11{utQq}KH{$B--A_^ugH$XyF$5ygnz#Fb9mdRvz`=uw%MTN6P1|2Nk)kr%!lE5N zn!UQXI}+4tU1jhH8X|eKUsh)7KcbxwcpSlas1H$tyCFPG-ni27AM~7=E|P}VuKEnc ztU{i-gc-}^LWq6XiEa8hd{Og@&~&Ju7N6nuohhvZqba2*88V}Vqy!aOhq;l+jz77_ z;p6z$Ljl1}pk10w`{O3oJ&u3{D^Qbd8;3w&I_~gLmVlNmijoa%2`pJ zyGIcMbW7C>{k_kyp9y1#nu*yA0{?=qCHVcOfW6lqUGR4GS0abJKj5d1pbOjB;_NLP z6um;2wtjXesgE~*@t5Xj*1v@;za{6`;>wBAC$@8Kd6_b4!OGspbZ`1n1Ifr$tc34j zFZuM?$43dOWkiFl-6=1UE8)uTovKy;c3Gawecs}I-s-bYao!ywE{R;8;yd3)6)tI8 zL)bemq)a3*+}O?3q!*PjCMsmS=q4&MO{%iO4xp#2O<(QJm>q9AjT?rf5AZs@SqD18 zeA-z=>`jsgg&3p5hmTUg@{T*$t_YZFPpTpKw8)FB3#$s>?Rz?EH4Y!B#^o%RP=nOy{RsbqP@}ryNzyFUVN>_QEJ?w%bcRvt5 z;n4cdpaKE~C%Al4D##MnWKZ19EzD27+)u7g>u&^q)EI3Bjx_8)%L8a|?RJ~1Yb8V_ z+<%H_qveraDs>D*l6C&8Z-IUC)CXTL3IZ2>&1mnua;~@Utt3sVLsZr13B0 zRlN>Kf|I-9(-=>ZJX=CpOc1WvY2WW21T+_egMyFL@1=O{a~us0GAP|{or6-f8pM1x z%A9kW6@e{=_f{ZBNUNN<&}gO!_DHuIOYw^UK=CC^T-#EpIbgT_A_@j&RV~iOtq}@ z#LAh!MA0DVaI{RdZsIb+%+}yPFm{j`-wPyucY}%d?btSm%k$&70waKyg*-S0)3cKkZOcloZBog(i$}Vj>CeL@fuDy zXun`tp?ClX}q;dRH0jt>+j@C6wJ?z!44ejrZ6Q;_3Wj{Esc+CF~qy4`T$hGR*s(9+?U;6e^ zG97csxJ*hi^o8=EY$+NwLdu1|=1atbD{iBw&GFLc08So*zh|D;zWOyIGUMW>*q(2H zS>(JPJfDQz@bC!m^!%+jWhmSqWT7`<0X%Kp^Paw6^FM7h?|ytNul}g(gDD8wud=Q! zz0I~SsVo6d>$*Gyn^);f%)`sOxdk@?R3w;Fi_AwQK!MDm8mVsNW>n_PZnV8J zm>|zM18!F$!)&Qth0M>}7~7EuXeO_oDTnaW7f~pzbnLaf42k9Zc~RAP)Rn{`32bw= zn@x)VjaZe|8OIkXon;n%aZdJ4Y5H>oapngk{*i(Q2E2)Ib5_?TN7KnZ)g`Y73kc8>Pie*+PoU}Gx(*|3Wp-j24#&pze z45#d+ifK@TYs@Yfc!i{U?!&ecs39QmOfA>5X?@5HsPUp+z!i?wP@`|#S7U5`!pc4~ zy~1P$ywoCl7CkQKTR6aiCvtHIZeKI}NBr?mApS^2M|2jiU1s~EacsU3RUTK8OFs9l z!Y`IU8~DgkcT`VsFv$+bEQfO<^z6I81Fv>RB#Tuuroi!eb zS$cl*E-Y#C&ei3HHMH3Li4Orog_9deZWyg8$`h@S$WuBPy36Kn+>!WlN8&i4S>rL4 zxM{`N!!ajyS`a}jJLNYb64X|zY5E1AMS19gRg=m#m@X8l8!d%gaVL9p?2HPEr0<0Z zm)=5DbUt~U9IFz4J$9tFXYeXl=QUe`@|ZTp-_WJ+*^uTu1-O;O$+)$|Eu1T&ELr|m z7xCiQ)f7?U+-lBezvC-9czrT^zl{^=737-|o8^>$LEz#XoNY$V_!q4CFMOnSMa(cJ z{>u1C{a1R`H@QdIkaL>!DPd!TbrXA6%(Qm^NUxZ;Q|)DhM(~DV%JP>~{)wZ^BOK4? zR+D3%Zn?*9E5*AL)!W*zU2S~3m zmOGK};hSXa$Y1qTNkb^Zvs%RC5m2UuCaKm{Vg}0KpM@(+*guj53+lg$e=LRXKy%|5 z;MDY&%u8O424A5t*CU@jG5$yXQzI_|rhFs4jsL@|rvDG~-+yxH^Va|Ix@j?X-Mraq zm2FuoS%=*^Yo$&Jr4o0j=qH&*jM(_5DQn51t;OUe#hl_TD|qo)2+^Koq{j-ncmn5hPWr-iw6gf6mqt96FpC+;vc|=J3h2Zk_J`?x<5*SE=*!o?GnDB zcUw5us*i^QdGlMbgUFfv0qIq8s3Fme>Qmc~RU_(2v_C-}(M%5@8CCm2M#Rj8M!2FN z;!ndis6)Fj*!)9;oQ3<*u-s>83a4z2hlJ!J@ztc#biwp&x_ z9E$@JLB}aE#AL22nokc3lL0_gF!gJBy6`wn?O^%2gYjW=*NmpEC@@0*o362l#!=-B z@8(vmzfuvWd z*|*oDCUf?YFxvRLQTU_5QZMk>t4uvmlPy+;zBTeQ4gwc~4#g%@Dfu0KUB$!(w!V>H zyiqwf=?x-XpzM;C%_0)P2FWH=KSX&zU2Tj-O*wDaJKq{?d4v+Z*En|{Oat0yq+Izm zW`h@PNhX9LG3*h%Zdq*D`&AS8m(G*)xCvHX*NS1YLzcsYC!9b8aef-))gRFG%*y${s{ZzpHA z5bXzv?a7u)zRxT_`A}VbX-~%6qE+(-wZdK-Ihu7 z7JH3p=fNWSZr(|pHf3f4dMoZ+2pqz2-Pu?ZQXTe788$OcB%IeaP8^MFM z3-ZR?UH5BY*^v3!IkQXaOwN+L{v425yWHx~mZsT69V=p!JEue0vI1B8C}QJ)D9?Ur zhW)Dga+TB8oU^TP4qxrVshsp}Z9>0kO~))%2t-`&(Ang~@C5sXt->7RQBl`n!-79y z&``~ZKUp`#vQHqm9#;h%C>J{UB@#9jG|&&AK}USY-%{N_{n^(KMFWce;DW3&k3^I& zuC_H`7rv=I$#FkDm~?K7Q(867lu?@+`!{Z13qN}J2N}HbMy!QKE>%@V?7+Notv&k~ z9}cWxKB>Y`1dW=nn6k)zH@xAq)-Wg`>lnMmZc}X4uXr7{0?wE_;TbMxw0{J6%VpA$ zrDsR-N2sGoF_iHAvVL5ZoKvD0`NaKuocN<$)T?m{zegvxX;Si%leJEwO5tw+bS(6~ zlMOE7$qu2CFwz*4QYe1uqBR<^-u&+BQ{R$&OfO#ky#hQC(^SnjSkcUuDMlar#Kyb% zoz5j5@(Zx zK)GH!T{zuy|LdjH)+Z0mMJ!w_UzwbFqW-6lj(h8Yb#FCT-SsI?$4n;~|HuuV7ckKe z*&(r4SY&q)?9=xNPRj`x_WbhokJFXe+!7E0v?{Q8hH62}>hIXWlk2Fk!^~%#Z zK7#_01I~T->i~jKAO9f{WJ{DLAB~f>%R5Vwd9%7z@v=7Gh~bX)#KIrFl$7}L=j9<8 z@vR30U6NybvzkQo0%a!2yi}R=h;Ab0l?+LU&k&6kXtOQEJzb=DnnX_Ryq&&el3C*j z2cud0wfQLNGx4m+cQ-C`j!i`0Cz}?pr;jeImi9EkpFon=HGM=zzY(4gSH6m-?VsXm$A^FF3)zW?3Q9 z0@r@Fpo02n3Yf<}bdXLs320BA0?#PdXcZV^bhM!f{VmB1*U;wxIq$?M=_Cc>ct$C~ zVZt5?`j7GpKZfjhrUnYqH>B&p#FIfDj^~7{X$DB=6tswYD(G%$qi3J7vnO=j$oYW( zl9q@Cj*&^f55*qn|DV#*f99$GmX@?(eAPU1zdk8h?=y}Rp(THA%|S|01fj!Hdk}+U z34x}RDE;!0W0^f-PtJ5TA1DPFRJYVgcEi=#w9@D(gVBSvj{d2G)2Xg=)7N$D)_1t7 z)6u+&+TH!?o=T)3E3*^yy7~GXy?Oqe`2r5*3qEoMrdmfp ze=|-jc2_adkR@4Xm)eZ`?xxTG**3S!4His0)2ma;>n$gr$3dCcxr1Gh@!+kTutC>o zk5SZ1+E86@tMBY?Ja79qjXAzyXw&0sztfjg)L%9zU zVcAt9v^!(S>Nn)Dv5^%7!2{^A#wqB<(2Hy`%5_R=>fM?e=9b{dY8guhLsz*U-30DU z{0k_>zg59!)^?;85*-{C7z1h8VpMnV8Nl00CKWivRNSK*k7BC+8re~c%&ayr6=K6V zwT4xrmmxMQ7o)mhfaW%eK9zc&c%Kr7m>}*Ga0oxocFLRp1-$E`oaJ?A8-?@Ks5&!yk=+GLjLDraw_?$Y z7bVp8)CAS+&Zb`{T69ipaam`UnAJOlh4X`KTIzmtau3#e(W%2^$#Z9-oYIs@%9MnW zTYw(0tFg%$Bh^4_&S4IGvlG=dei0JF>W)qG zg6_l-Npqh3akQ4Oo!nNEe8TO$TEcI* z?yZCbjmid<$MRgQT!4hVL%%NlRxy*`GXbsxS}#JR@*4Z&Wx0El7**{+ z>tWw$v>>GbcECX}CELkwxE`pRR$#nbf)lU4$ItVJ(!aR6*}6H1;|u4|*%>8r8EbRT zlwGr}WR>je;4vR&UdupXSI(XKTM%JQ#1=9{08s1s=OE2$S(^tXTEupq$ofJcVzX%% zkQA3_7)%bjq%C=P<%-f7u&H%)sK4cno8JJu4K`TQUwkHm)Ka+OeIsp5N%XY@OyOT= zMazeNCFIJ<+Vd!NYyRXdPwWqoGpNifzVj14G{xwK3QN8Cr@GvA+At};CRSy%Z7 zdvW{l+2XuT&iId=$3Ud)Kuu>+CLC3U@fRa*et)k@%Z^&Qh((aNR3#^B{6gNzw)tpr z((}m7-X0T`w8`j4qGkO9c~n7|%66jVfuk-`v-wBr{VmY`Z}7WUEF~~Z&!c_4IPnt%HzQuBY%;9;ILjA=vlxtMt}x-!KcesRXDW>jC#B|J*Zz1Qc!OcG2Cn#nIt+ zSA$i^!hP7q6&z9A;$vS^nWdKV3BxKdeuwXE0J?;w9vW5M%DzY0N%#vB9Bmr7h54*% z@w-8*PrT86t`2;~EcnIC2_JGk*Xrs!NKw4LjVL`uT)|BnMcw0n&JNs2(w2}W&pn5r zV_tEn+P`8{1uS^(xXKu$lXF%HMlTwq9kq&Im&Q|-rYf??H>O+3<>-tH!|A;U1VE&C ziC#MQY6?^imd|D>ueIgsBWYDZ!n6)106%CT22P^*?M5~?f@#4>gs>;4?K zHSq}Oity{os#<1?{DX?-X0Ml8ab7i`!ip^`3YVtAx=a^LiuIGYG1IHpy9ANkVa3)! zv*@J4D=kY`YOThK-B9k3azEQ_Q>3;IH-}3|v{L3<`>{Mj*r+YiZL?*TR;HiViXmsI zTG0w350;G8XnpZ)dCYd#vcDWyd*5MFQ(EaE&4uAu!pFad{3Pv8B=sd=tyiK+M>sK{ zrlDTlt}+PiRj`j76k$Jb04+5@Up1=TJ6Y-Cf4MWZ8BPxZXAi_gdoX7JM+C~=*e9;@P5&& z2tE0k?r;_HI{7|%fc=z-+m}#vu=SMbBZgS1-=b36K-Tzz%OE~8JXA667p6IwIa!S# z*|@|UX;-ep@Y51dG{XZXjVH_)$GqWJ;G%fA=bUZl4)XG~d;A&6r#3LvwmBy1K|B81 z{0`;1&=Em8cd#p`V%WSeQO98%jWq>>)ieR6u}bMGG1|*mBhnU2`5+3La1XHZQS&HJ zE*N75%e`K%YPAQsU`z62`h6$PYlyX6Ry~iw|Cu7y+5M&A$MVUKDgwv?{qLaw-{q!t z1n80k@`mIOsw0r0>}JX9u14B9@m(!9&`IipqlgBIkPFr|Z&1Jhj;&x21<07bwI4R; zt0QXl%t2Yu`!ip+&PbAFRKTNutQS%;p$pv~*|TmF*H*@G|9BlN2^vbpmi@lJp;n&WAH-_@ zY(rqeI*ot_YLF2|&qJ^mv$IWYrp0>>31~UXv(`*eG!AJ29cC%azJZJ{>b=*K{_iIi z>m5mu>p|Qu!PzQZ{%&*9ODh-pvORdoI(5oIss}!EEzjDwqwr?Wxy1vFgK6K0?J;V& z*_l0JuN=WJSVhOkvgT*Cc@wIMy+w!O$CYibK+jk!%Ncfi$eoecR`V zTkZF3D7sFC>=8E&6~!b2#(Fx(+lPD<#TPwDMRTATi5pgL-o&2ZzvE{B&K=s(mvngl z57kv15jT$br(n7ph>70pCCTaSA@qbSKSNiI6X^|Lb%!^LVHA{_Nkb z0w)+@>9+&)?WlIH!1UZZyy#Oid}nk_ifj#Lz6rt`-{2k0$r2+=SIu*_x}238?o7KA_5Nrn<5HZcIm*js{C?Bo7Y9ChQELK({# zAunLq$nUscFtl*b;p?`J3&o@I)0pKS-Y$H!rF+|9TL<`u0Ma=#p zChsXD&p5HSaJYx*Y$NrSF&2g;%o7Ho%uA*zJ|oagxe4!g;kFK@kk+vDWfOjum0nuY zCo4_Y2>A3&#j!3E6x#+j`Lwe_&nR?T`TTsR9U14(TZgC1%Q&qaj*VN4)rtg+NF9^v z5E9U*L06Nq3%&c#?R5RUqVzXyv_PNWcc|bu$&y>jw8B$_1U!9uzMr%SYO>2Lf2q=| zc|ea2&vlpC@i7udrmeXp{Z%%KHL!oCzS|_FSG0NaZ=+K)VHK9<>526P{Grkm+Df~2 zHn?FSulFzlr8zu`xAIFj&6Q;N`3KRIolQ+mnJ_g_QoPb;`PY5hyljr}`E@yx6}Z*e zk7j)aa>(WxbT));CVx;vpk=G7%|7d5b-DE($`(CE7G>n$E}c}H?WtVh)Q0k9=*mbh zkr_HQ^*ZzFW_$(j1^bjA_Bac3z}}6nJafdalgVA`m7%PA>sY>(ToGk?g%~eX5^GrT z+$bIO8GtW@MpdR(vAGey!y@-Ir?)YL)*qMQ0&MZw;MKiP`!*o7w#ouSX4qVk7 zm%Y$meLZl0Uq^}PcTmjHWWB%u3jMwDM9TipP=fXcl5-zxUj-XXLL_GBMse0hslS-3 zUJzMV{=Uq3q^L{C#4!tf5OWN63LUJHRdiWYD{o$Zi6@Y1^4UpA%bR=5E(B z5g;oMxys?eQFcMwn#&%tzg_PCs78}!0&wpb`gsiJ7CuzfK8Zo5&J<(a5e6?>wE#DM zVsi>*6xwsuHnA+iFW=bCPL`)^}S33sXEq`EH#2xm0*AmXl-MGe>z#Q+6viqPpNEtVRj#r90?ygtJg~ zlT9$md&Y#$D6?yQtz78*m{nTECB|(Ic+A{CWT(_P!wP_D#)b9lZ*Xj!t}=lXe)-dr zUY=plYwelnaONHd8s_Q*QiFuK7SG5S%7`&j z-fv+JNRMRZu~L83q(9iKxRDG^5~S`^Tw?#uABdB0Au*1qn^riSz4(i`a$*@%;w(~(g{z&n!yVPO(} zK}&Uj(s7Z2;lN~aCI2kAsI9s7uBG$@!2T^Fv6jNbGIJXq*7eZe9(2RdcW~EtQ2tc^ z*y-YSHgbP@dh0oxx>#M-*H{1kmbV9kZUS1devIJx$sob^hfC%kC1Veo2l~u(2`Gy@Lc($5*_PK{Bvt#Jg zM*iQ~`5h-19Y7O1D(FTU0Ph zuUkTL)MsEHl_VBRO?Rf)(4!elzg<~+(u4b%z==~wejAxN&Q!RQim~cmh8sE7zzm{5 zx-Kj9Lt{t&f(&l`gmmB!p2AVTCIOYCmV!JE=NscRVjF0bEd2#LA_USXe3S-`tMRtF zb|*4M84M6XSDk+{SDoCTW( z`4L+foWy;M@u?m&wxCb5~J6o(SnX1OVY5jeFzt!wJQ%+S|G2M49i+_6QEO8 zLXef7DPf)`qzOS6WFb|T7Y-QAGRC5dz@T`CCN9?{PI=Yv$-Wp@(Hy8``(iCuSDXGh zy4roy!i(zWVuYcnj4%+%eHF>=Emw?ri=LEPF3dAKjSJyMw^XB5$di|)n_pJI*)CC` zxd+;ghg&co`oqdvOjZW;aX(D6|6J&^NYm0p6rs`qtoCQC_c(42TKmuVD4$biDLI$~ z%k^3lerQ@_*PQpfUMrLSF7F!&mB+e|1!el>@dgl%OredVb6ac(ivexuak13_$glJ1 z9%qh&9Oc_d85m&4w%m}k?eI?(-P;5j(ZLXvrZ0V}jtm{E#L$=mLU$5oTC@;>tw`Od9e zOlsT5M`w28@SxmFZK6GIdv%0aYb-hqs`q$0c2uIzcaV#5WKYlm9T84gF7foRZ6lA^ zqg)Ouj^tZ0N-M)>1SD4t&gWE3f3?3b)MCafR(;Lf*ZM%?O-}p^_Y^v!GvLId2a^|J zjIW#Y`?sC+TllWkfwF7D*QhPz$m7($3xD0tCX7g?fz3u+g#X zB`?wY4(Y20Ays`&oj)n*Hg_Vu!q{&igMOTsA(ZQedc#@_PJ{l>xiE^OWP0j&qVfVd zNl1OH==4i$P$6RdpkF+@_yKv!?#Vq=2@lW&V| zNRWqn?HZOF%*S|#__S7@P92&Xs^hm9?VuC*D%+EP=7l&9wX+AKElq4*QYmf6zz_A{ zav~?sAhfivC@nm3E7cU_^D!wMd@QNsKeLGt^|qZfA91I?p6S|&fE5UiujTt)tQZBO zB?OK3N1B!=yI2&+i1xW2>+P|o-CuqgkeL+Khhsz|Z89!BH|5E$tv^|1Qbe_S{*&uM zi-PU2v`0clcsw%^(PGwtLb&ce@#q76OVP#>nk_87xJQ|b)K3b0cff-JpW;3m_tzhP zs%OHu1buGR2&OXL1!IdOS2X2*AE1B*&6W2^B}8Y9Xhs23BE)9&PqP%eFt2Z55SF|+ zYnd2>KQmy+)H$ZYwQ7fulDiL%DOLAjq31Vd5QwdD+!K|976Fw*M%m+o3NWd+_P3oV_Pt}rfQb`$ zq=mjE!oYjohc2D)jXY{xMJsZjX1uP3mqr3TRf4Ny>&bSd~iWAb98|i>B z2+y3>46aDWH95=&Pv%HeC47w{5BxaJ+h_YWUf$6HM^J^5<=<3!81QVW4C-6CmppP{ zZWcS){o}B3+N-L*2wmAsAtQ)2o0cTn?i%lW3J(8PS5>qERd2=66o1Epxx#65CjXhW z94YNXzfB;PJ}xTJuz-uPsY%&B+WS{ z-S@uG)bPZ!mIW=O;HZ`fb8*Tu)6k1xD$Ne-fg6vbaXa+Y`(>;ilOO{&O=g0*Aac^d z_MQLB%$l_JQFj8RtYNj}I;h?C?GIQ&6R$YB@S%n=W}*j(_F)mJTPtAyM3M3!^U}+( z$HkK;PThuym@=ushF=w5#MU#|27=zPr~SqJr`1J~#F@P`xYMH0ru##S_Z?Qzcp&kr*O+o6KUa@7Mg z_FvMu=`GCyLTLCR3-d#NaWF7kuv{GHlxb@fF4moAezRsM)UwzzNp~d5Il#!C$c0%n znx>HA7`Ts_&uDle-Yhi<>KNCGpYB6YB$r^!~Ib zTy1H;IV`!uJJDs+0~s(Ll?x(cV-bt;(9Sa=vYixO5ceAW6ZFOuX>O~b4^JoBQ6`35 z>r_*WR4|Gcw_cW*MaCJS$f}$CvqC>3nrDaYtfMJc@Jf4n;cUALHsE)AvHfd6P#iS@ zqDQd7#Ets1Y+DFjlA-C{X>zsA!wQf_#O_+vQ?UJi%yIpjp3S!IUp>HtSiAE6KfN22218t2mT^s&+B*k;jkhQNMwVL$;|rk$CxCJQnQ) ztw4ssyXfBOj3ib{)CX$N8{dVfoH#2D-epJ%q%(ueOxV*h7(A%J-QAvji#XLFRbm z!aZuw7^3K+m~SHTMtz*Hy>35PyHNT(V0$fuSimsBaj(2VWPYxeYn-fOo2EwI`o?uD+H*1*7wZ{n<=4_#5s=A`O%7sH-ryqZ7j~zTiFf zEhkfNCAI6AgNFna*ejqUpOuQ~Ji`+=O|xh`XcQpA4r4WJ zk1RP)(MF|a40P!*fA?{tMsHUmWpc>M&e`G#e7|xQ>MT*oWm4|`vF103WoBel4%Ikz zn;3=qg9c1%92^0$Z3m6xP*b;bl*NZ=k$>f(mWP6%Y*L^nzt{w!!VP*>b-oyrr#arE z3*0zOr4Y-eYK%5VYYczzSN?{(iqW46prUIkXb87#(fYCCrJ5M~?11i)9 zMz6MwnyKr_PsvxPe4%!alMG?NcFoKTs>S&6LbXp3)RT6cpCHLWZQaiIuj7tcA6&_U z;jgw4dE)xfS!~hl8EQ2TVj6BG+Q-rGQrAp%_u&ahRfyn&L?7|Aqp)b4P$p^Si4H>0>NaYI z6g`PjKFZ_5*KYNzh7`SKSdHcLsL~xU_9ljjet)4!POR8w7ecwHD{QB}3D} zDl0XPDjMPojE~H9I+GL|0alpLimsVvvV%o!P%@ZxLtIAi{dbV)2Ko+j zmL$(fedQ^#v8@7c^O-BhL^=cgDSd0xvp{Z`-FD$Yr=7Af=d4}67Qf+zLrzcP>KzBf zX{2GJb-G8#XB1l6t)`?x(Td3Qrm|royipC7cMMwQP^BLh=wOZ$nhi zKqa7YfYuX5B5K2V_a^u~r>!@;+P760cHNSh#NnV;|MV1~almT->A~RFk3d}{P42rh zMv!L8rR!Te#OX^!$9$%XrFFBYj2$BTHw$mYdG{veS;H`H?n&HY=`~v~gIZYn=wtd4 zn0I-=)WR~ymVAShkjl+JkZzU|=JP6XapvTR6=ei5uttG4UQ&Y7YiDdX2V8+O+(~30 z->!kGT=^!$CLq8po~=6t%^2a#U`Nf|Hw|RUxa~d=_S>e^9mwC9G%Nqr*{Qq8$1;l5 zfti&Ju=~nV7=@Ht!{A+=QoMEAoABTClhwg3y=o@s5iF|1mPre9D~$`^VbgZS{ek`z z>@+>wJ8h=o78@^oZ7J*uN;3+$l7X7i-S{4VtxQ;b1buqa)JyF9gku&LEO&O3*6CP7 zeednhJcpA6Gok4$_YnRPEEI@}7>-|lqy?vPYPfympw-;O<`{nM(v@`h=sLYNcV<@+ z3n{PWtYS+!!-cIv;LPl6YuP}8`o^q4uhukHZ?Sbc^{yvkD%GD{G1;c}*u~z& zTGHnLqtQ&3!w2Knt zoUIps&la_1KDBIQ*j$ZBc}HDR_%!n*Rc9@9c32-U-{c_m3Xa0y_b$!zdMnFjp5<`@ zqmSCP$MeU`TAt~1EaciR{Hu;;J7%bI0Ub%S44QYaby8#yT3W54)paU&-)<&M^#gUC z65}?cv1!iBk1{)ZY(=-Ax9GoLsy0Pb?Kt215>YZV8&ft#@jqN)A7FymoV;~k$qNd#ilKa8|6EL z9ev}*Gf@~q`-r5cTiDD3O-&M>IpmiYF*?Mi$WnskuXca@)T3p%72qNA$-5>C0LU1p zXKIFYuNcd+#U$58)v4RIFmwjsM>jQ=8FJ;xG}=yi&d6)L7nnaVb-GTuzqxOskf&Zg!S1tE7G+eTXI_Oa;-IxG;b9 zLyvbfw-AvK(>k($|LXpTvTvqLnWbrzsk}@nxNhE(UbnKRX+;OY6 z?jDS1J-$IPcMqFy&x4NDOL3eFcaw!WX6;DS?IAHd_PmV0?frLtrXqQo%|#dPaC{;2 zDgDXqOCH_qMM;2z2_Q#JzKbBwr~9J$GXEZybLFw9HqLpx`}lp`@}7n&mt|hEfw4qh zl+f#`JreE)+#sc%P4n*%Cg1$?T{WxG?IGPYS?`VqCg)Xe2DrRMJ5#+BzOSVa4No)_ zFFKJ6!Z;w^SMMk$eyQCVcI77-?`GB)`FE9)_+Fq){3&@nON~2()|m`u@5%I6h+sJk zV+n7KUb6K5Ifq^ZQRfs_U&)|^=R8?|#98*9)%5h663AJDRP%_TW_eK%ZlI%^1uCrb zJ(VlMs%KTa3OO%Uz^The}`eGF<-(45pP za>7b)rY18y`=FLED-q228^{#z&W1ep8YNtg$%MptDyYj|fHh$+E7h-GD4T~eT2i*S zEs)_8WLbB;Xu*-?Rx~unTqhaT~j9;qz1JU-Lv?U;JKbtaMAp} zswO}4JrvYhoE!8JIJdd^FmkANd*dJ&}fhTrtLjHaO z_d#(N5(J6%enm1m!fsVX!o`*J4k$fHKS%E4Yr$aR4$zVPO67+bk24%3!H`MI2Z559 z^g)a^+vFcegIs6~KgUuXQ{}gZ+tfx~#kN%waiS+~_S|FS?hlSRVG53-tcw=7AW zF^Mx`hBR2JyU$@SU%FXI_K3{6DQa8%B<78{sE0w0TwQk=I#2H?*~4($-q*I(C3o#ujV!k(zn@L8wPdckci4U24gCM*xCryJ|(vp+4t%v&4M0zYl!s# z>uyGGmV(aIA*724()BFBw2TBgobPFyeh7x6^JPB^LcJcmD5E7F!)JakGoPtq+*&`j*Ly-L1Ut&xDHsA3{c63UigvQ?V zeNt_0!p6qgsGwL2kCb|Vh0r_NNhUN9Z1vlMSiG>awveR`^i zmS1ECT#^agAUpDl-bgSn278k+Rvlp8hki#5*OZ5TKOhfgsCXiHToGH(kGeYpY|2x` z5kFaYiJ50sOJ>ZMVAq*3D&$p|T>FW(rYgMagT zOK03Bc~;p-1MAuCr0E)zAET1MrGE~%(*WT3glq*xZ3XedI?_Wr(x>z60CIyiXMa=P z$^T{eS+co0w2qib>@7b#8Ilxx;cPw2EOq$hIK8dGuOB)iH)0W9{ATSOJb+hqABqJ^ z9$c~?Ts{^b+cH)a=VE)hN^T8x&BsQSh3ONDhf90YcX8o68vk)uzqI698eb2?8L1c6 zn4G6ytH*%SXx(d&*~XSk(z}m}u`Pxe#U$r~rmzcw@oA{w>BT6&9I^6iXo0ZMsW9KH zXhPF*RG`fp7=vC5j;6V<@Nyf<)MmciJUT=Yq3MCcc_tL6ClW&Omr}SSjWQGrcezE@ z3;l}HnP+tO>|RT=gamgY#|aGdtr$^F9K0o|5Mrz&In0!pX$U_cu@NWwLGlQlgBVFs z0E0IsB$s1-z?ED?K@zT5KvxOVPR^cF@Arn8GjVx*HNYeN-nzH(`}vM1VRwV-R{f+I z7-PAQ(DcSVz=Cg7J8jZ`Jrb^uZP|Y!(9w@_MPZRb)PB&3(%-f(4tfCiC<(Doci+8g zLj0q@)1#ZiG(fATEaEQW2{JiNiV@h}Ch7pVRd+x94LJq*DL!mrnwg(`_!gYAlim{J zC$BxlsU!h%F7l3ud+W0nC%K29av>MQr3Z~qN~VAbnMZ}{_(y6;H56waIfrNknMNCz z1vz2^mxZ8b(VMsszGunXNNFUcE}c(S)H~!o?`t_(G)==7g3-y^6M3gGw;z$0BJc0i zDLVnR01DPbl&KU7tco}dKB;#Su!{F7DPBLdW%*NPKyn7k5^V<)UK z^DN!IRGkVHIMweF$|ZJy=!G#R9qCq`o8Y0#mRv&hj2?o#f{AW%KTk)f`Nwu48FwN@ zZ)GB0CabAt9FH$Z*>~KIedNK%1Im~NlM7)A zvI;13H%ojL?rWn&4q!Y(g36zrCm4ic%BW`|{EGt1p18OaV!}w65hsRjnG9nhRENbX zFp>)t&qX${k>Wa~h(HNQvpOSL?VwrJhnPPz zamAI_5WdRwwzNQU8k|25EUBoj=NL5Pe;013UD?Lt^MeEWG^GKrM%15)GWHc=4nTIA z+g^bOh#rMfH7>ZF0m1!z;#jh8$TaNl!oIgB^q0)xKjQmN$lZcJ@DskAd%G2Nj9t>g zm)UCR5JY|G@4U-qCN!Qv`l<^_T4-edmRmxyE?aQbf>jU4oD^;CU10}mBvC^&B>ZqO z8U&8UX&QuBYCo`1GJk~g2f_7e-WHOus}mw`f{(2Yj)6iWa`(o8u6BrU3xKmW_rIpk zxEV$A=jdvNG#s;>U}oNi5yHHOs9nI>F7eZ-Y$bG0A53 zvW*Vj8)vR8LOY<5bBAJte%#RfqO`20*pu4;Nm`I>O`vNd>i@ynIR;l6ZR@&Y+binW zw$m|I$F^5TQgU{=4`Y{g;iUN*cm5lc$TxnhA5Stt*Vy{THAQ{2 zPUNbyL+I=I8*>mbgpTPTD?EemhKq)%G|zG;=kY2Jzef*eB!Y%_2?RooL<2Z%(7$gH z#VA97(J3S6j+B9hm-eZA9fd>tz7PkzB}~J$EURX zSWJ-eBk;_Jx3O!cjAhB$TAuBW?lqT%=PmYSU8f0Wj&5md)RH0iKZqdR4;3c~ui+1* zQ737ylxJq6KKXx~txC^b*IwZ|A9u_?3YAMb>q}Rn- znUL~b-ZYY#(4V`+8a4DGD)unEbo9Zs!^X#`se3oO)U+r9qhj`SIW#qcufv!dU+tNx zyC(V(nnRrSooV!!$kDs>_BAWymspQs-Mc#W66axUpf~0#7;@t-5W9NpFnmIOo)i{JxMmZlly@@5;og$$RdYX(0V+S}G;`s;|H1Bb@4*zj{4MCqh|&HEQ%8Y+s^*-OgNTvNTqX2j=X}< zdaUNK@=U&RbavxoRauKjPJMfq2rHDu`(r@P52n-*q(>vpYaEx)hUuIpiO(iXd7FNk z^AGSV+>@ru%1wOHv?2lH>K^hXQd zGa7tI-w$?Gj(^JYVyzEJfvo3$`q9OSUa^6n8v9$YQm&H*-rgC8GWqpF)}v5mpfFdQ zCru4a(-|~dOG^G}scO_*0Op3&-M{KQr;If9(X8i(Nnj`a#0gQu5|cO(s|2E3$Wg*B zStU0&gd=FG(_JhX#d0=sbF3GsxP!Sw61IjrQVHi1U|IQt8$w}ZMT6Ooi*Bm8on~Y@ z+1@m=+mi(Z@1CA&U3yn9-i1VNe6ZUaf&!f^|I9kIhH0ulw%di)lbnlFzH_J3-u{3^ zA_xH9FdBtp!X|3!$C(wJEa}W0i!D>bI;wDeuCRVag7`-e{^Z;>gtRG9c&H-y!+>Ik;xJR@z|U~}iFngU+!Iv)zD<{~)4J)I>!!F9-dB#T+y2pBMV%9e0- zMp=fvx#I*R_&fqd8L0WO2D%NZJyfD;(pv1TR}M_{?6&A2P@?t zE7vn`j z9HuH}+S!n(IYh{k2${ppM8y)0x2%g|Bhc{jgTgCqT>Q)dQGyFg%YlHBi|}QVI^!+a zu1X7>%K-)$CoLH@saK(eIJqCI7pw(hD#>7#!e&QzzfSJGhR3c>Y{xFqVwo(aJsQ&Q zS+qW!StO^Bdbwcgt@Xn5AIC18H6rR|&}6xh!ZZ5~dvbyvsPPfhxRn+ojt}W3%2fiF zRfy6J($|5>;~&U&`olBS6`IsnTpq%tttSwLHMhjAH;Z44+jnnyTQcw4uJF!RjW=M&lmXM7RYp$70+GI44&4(M8`* zeO~XDzr`m@fqU;FH*N6$mh))rWX?T)a^0^2Ub#*#QrRO4HNcBnD^Qt|9z+$L$D^JI z@M|WsF7$Q)PX0c{|6Y_Zos+=zU|dL@nb&RaF3urv9-!|*{cWSQM3l#iwy>`*zkYTy zBX_bREOv8BG;iCdz8BbEZ6B!bOF4J;-H7pKY7Uub+Uv6Eez{j*odx=dYWve z_|@E9cy^~I_;QF%IeRS8iX2xdFrwl1(-s#d%{wN|9qHwUn?qKKg@1}Ry3R%T<4Q}% z#g~6)gQ~Vvijo^ssMl}f$H`pT1=ehA5GS_BO~}QNUNz+{A4`RtHkwNlGxIgvGq4b| zyMgNBBz&DwIxrBo)M}))Apm!}s^sM#5}V&L_f^`IHlaDjGIwm;;hM&H^kci=5XY>q z12$^N+Sd}|Nyf48vwh?rFxH#1bd%IupgiS0%8cS{Jv2V-x;?=Z~Ak1{MFFcrQ?GxF4zaeOgaob!*1vk_6s-NWam0;t$0p z?m_beNY~$90r-T#!SCMKa!C@AXa`viYL$5W^BagTqLS4Pq(6)BjJ4wuyiQ=7ar`-d zzEbr~`ZE-NJ1;oWJGBXZ36{($lDB-~S=<21`=;>in|Vr9&;b{!`6Tg9km_0hRlIp~ z7xs##tu@zeI5w^fbuv6+tD%hR!(zCM^aOSlKPQ&3twf_Pf{y2*Yj`8JCjdX0HpIAz z2+SK0((s`AWH06?4C*kLT5iAokaH?Y=2pR`K|N?)G<+jr+X6x{1V$eAu$o*-;b6WnxtVZ!$65tXVZ{{8WEAW&#tfuV z4#D?m4F{v;GR1MMST2Qg<5FOm>0yOD#Q`B!nO>S@FWf1~(ubE0%&Kp|&Cdu+Y@Elt zpW-(J11S^}oJnZy$BqKCN!(*X=T~CwJx?FWRcYP{2sXLv0O#{}JO;u5;%8`xpVf@g zUodU2q=1rcbXGpd)bY_B?slZhgkFEogT(8wH@c?r(rwB1+>QCgYp7?QCpiK?*?ktX zG1K{^Swq`rP>=mcPGC4Fx39~QweXF?WF4s+B4D{uqRY}|5a!LNu=UU&S)%l zi0Rgl>4y(7`J`}x!iQoOu>i*8LGLj2bGjOZ09NTF!;t!|w0+N;looj}W^de9nDwpZ zO&KpOLE@Goy|YM{g!F1BWW+22(a*uS?r8AUWr-wVc*Pjjgt0R1hAF$r#Au@vwxlYy z1*63H8tt3CB=opOM~6xiidKt~xI3S2aP~=y2}ROz?|LmM5DQSrE;XKYk%U*HcCFC3 z%pI*~5`JV9D7{MM01Evgt$uNml}ya=d>tnj4jDA^-QZs z#UFa*ER32&VXLX~wQ*kvZ%WH!(+RB^2H^U#viW;nPqL4}qEk$YCZ}Ix8ayTG=7hf!@{h(aPa-=-^o^WcV}H&z z&T%fQaUzJ?Y1D|+bmN%}(SfD`1pq@K3xnO{Mu{XdAA!3{zyCZn} zi059Nyg!8@vGAG906s3mkyz*mO~jtdJSH&?I5*ol8!+2==>e0*&JLo_FM?jBLt)ag z52T8vMwN;VNt1{p&H<^!m9Vi&hS5ssEDDZZrJ2N$VE_5L5b`8rxj%$Xfh@TrNXoX` zqh7%FmYu$!uNQAHSxqTsV>%K$KNF0bbh>S`5h}~Q+?pG@Cz;3_XJjOtGLO^{4PqC? zgdBn!xb3!wou&uxPc_0w$rK`-$OJmWBsL%_hPVTOcm%XxmoWhzaG$SL4dJ`Y@t_C+ zhC8|=oSas8vE9)(Y39J8{t;3svG$2U}x`jIQI6t_sfymbN>$#XL~ht@b+&*Cc_t|ri?xHm$*j0oX3=xa~KG)c#{oe}-LU0h`Y{4Ze0r_*B z_$4?$()5G$TIRu%#aNVZ&h+c;A!#|-`^rbe%GlU{WZRo4HF#&_NXr0KC+J8`N!6zk zG@T6+WN9{|Z^>UTB>`!nL}y^{F!xb!wnel(7Y2I7ckVCeIs)uDIizN7x3Ze4nBl8SWb*5ol6)tdubcM)00 zR!tGd(E+!IJ*f**H+GCx&bnk#Q|hE!n#k-pBZAZk7Z~*py2nhYab1Bl*MYDUg+s-$ zgh7BWnTcb!?k6*h-ZR0ol=J2>rv3tjd+VF9aites@6V55V6|vZGudIos#%ZtW!4Ec zQVe45$(U<}qj+M^yD;HV(>T(~Dqe(@Mih}IWIV_TG1^NwEjBSPqtabqeSrXaBBCq` zSiTe9N~CgmJ|o zbz$x=!k`2%m1d8jyRLo7d)J!BgqGkSFIA>*tO4o#sA%qfVgrJ45r9?G0XNIKh@xZY zRm_$oa19~QU+hqF_46NG&($bt&LhTe-<+KO`}EMXlhVH=ob&wK(?kDAI2U);cQE2m zb~3m6=eSU|8kC#jGR8-(^$F244k!`$JhBjWJQQV8T~UypRS4R88@s*1VhXP`(zAXw zujGo{8tYGug+EPH){>beiHK{U5I91O+^88PPQ{7re>|^}Ywvom%)e`55bMw~b3F#>_65QXPfO+mR>FRpu^+`Mf`OJgv)Z`w??!yRxI9VNR zHey1W3mG^Xj?xohlx3)GMy)O4e?^^qzP#iDr^Gfa+<}{1CciV_gL10Se(Al&<*OCwupvmmS{Br-170LC7*I6fLcyO5G+P0Z6#CeIjYGzpX#H+Zk$<1 zXYSxJ@TD*-czWZbSl8M>PQXg1-6*MOD0VQ|1Oa|(!!2o8CV*Kk|JlJ!k_swD#X`$W z*)FObBv=q`AqU~$b@LB!2bCr_(!o&G>k&kFR9LC*Yu;p18grnYb5TRC+ozYa$H0Uw z<1)z<5|h$X8CK9DVa$eY8i67MRY>uqFNMW=rr^*Y zuTYk!z?$AJs1|Dz;NU_)z+(*v&*o9|VAaRnh(2gj@t56RKz&oH>VpescIcQMFl#L8 zl^L$su#3f0D>SgS$y-Jcs8K~8=%`u^l40H^FXW>hj28P#D!m?w{A%94FhMP=W#nMP4=zK5o(ZXC;UZmK~0k zvfLFU_$yIMG%o|wI-E=~10yeT1k_$%TQH(cU6f|+{8!ZKQcW99aruab^%ywzB5{vM zN(&|6JYSIQ%i4$KZh&!-0xCHbM5fc`nr7_QCyj`h!h(-1)C4hz(;`a1Zx$5bw!#7@ zhb#KdcfZ$*Nv;Rt!+Jn;85_72I$Oen^AAE0fSf` zpH2&EW@i>`zVbdW9(S9g&Xq{tEH?*j}Tuf7M2E2l!Gh4T64JoWvZd+GX1e0Zk1b7H}{ODhYNWmo6Fi1+( z>nA(UAl6`BU7FSRPBfS5s-sBOPVMWe=V2BSHf$C2lg;PYGf<)GIBrOw3+9_X)zJ?! z!s4EQ+^}w%V~N#;B`%t(JCpNOW;@Asx5f)gKa5-4JPf;s8Sb8@0xLMO#EhA90$IB&` z9T4c{?Gy*`ZE1?}<;QMMA#y|=gk@e;V01^Mmf302zWuAn{s7*RyuOU?cYgSM5*5MK zwh=6TofaStVKG?`b0}rGfTh3bfhRj>-jcxs_h+(&uLEZu74+WNncBbvpOC+F_wQ4{ zkQuYped?Y`nk4iJQwR9i$1Q1&f<2~gldND1lVDQX` z-@W1-$z}ultNEJL@7@>!V>HzW2gxeegZ7B}SgUR85+%)H^|Bm)+za9;Kh5=`NE};vr{1L|-kbZFZ6&di@tW?Rsw1`}`7Fvpm8EEn zNrgW0c4ME=G&78Rz3dEm@!{l0W6BAhq%)>o#&)K>fp%h5jg_=<5AI5W=Qy=$$%oR_ zoxA2NWwz`_9a((4ks}T`=)85ULv3>v#oV0@pHY96%d8%MR5!juVKVnC-5zb%3i*_R zRJmdqot7W2o5ZMIU)JD;XsG(4vc%j}gR;11%V_A)SEK>7(n8g}G7S~?6s91nN+-vX z598IR4%O?CWtQwNtp*kC!U~-!7)b)#vG{b&`8bU1oOu{@e1BDW^ct!|PCjXlZ=EWt z9l3f`a1t}n91H^#XSPQOVh6t>ln2f3WO;%Q;cd91U3TdLFG}q+AsOyFdFf}H;Dvlz zN4)`^5Hf+|bF~B^%Y`|R_|KdVua&WT828Gt+c`N>vd)mTCllMwq1$&#gvlbdsGLqa ztAln=*}If5JkNa>}`Nl#_uNjFg1M&S}?V5 zzx#VVYIH*Gfr#1HKL%mp^~o*=sCmPFar(3EcSLwC??{5vR$c{CU!=FbsN)Usm{~vH z$#g~Xs|O+NAQR*fG`lfuPE(Zs1#?4k=cYWfiQyN?=0+KPeJYZ>yl@lX7ra8qhalYd zz;a&kL)v5Pe);bGfik1ASD4g*5YgE20-8`J{~g^6*iQ^GS^epW{#5<>4!a@-A9w$~ z?g>=cC5Ai&Oq^7UKU{Xz4#ksdMUv?@iRz3b3D8GfEOzZBgee4=J9Uzalvz7 zSExN2z8%Zu-urirlOlFJQ67TA=iDEm5JC4X#kYc-sSpERc!RkoHLwmadkmP!hz4{Y z79cxBLKn7AJpSLaPlSSBcn|0FNk2m|ELk`(GI8HF0 z7$qJwe8v(frEvsu9XAQrjvN-TFCW=Oh!i%7YHO-%Yx!}M!VeBl<(Mg|$oCMT8Sct$ zvAJ53SB^Czih3-#rUvgPEQ5uQjijcJ?#HVyq;r6uDp<=`G;6pP)3+(0BpdLc)L~R> zR7s0k4kJ`|s@QK?-t=BglcpOn!#wv)c|K-)&N|FKU$r0Y-yF&Cf$BlfQ&FO-p+t#$ zcYAzpx=k%-o?dYPb%kUBM0}V_-jaL;P(K3|d3M7k%p9epgIY4hMEr%fBly;Irm^M? z^mRS22x=6!(aU0p$(`RoPW17W%gIqQHV%iKSeKjC=B$+5iD@~jDi^lO2yK_yrk9oGMVX0MFf7r(d~_CRdiN;E&#Unl*_fiV zl)4{@o_h(Z`GT(G7=50;XnF@Ogw!?Z-|Yq!bDo^lNqUU66!k-J9v(nG zZap5YepG+UzZWH6TJ-_SOrCdVK!H}#uDh>_S4x?76qY#t)J21H^ZRnGg1vCc1{uu# z*X)u|E1a_$NxUx!Qk>~v2*Rdc02a)K+bUzdcQadK`u)a^go0Uw*?3VvNfvP4oIFZx zCD?hT%m9sjebc%?jwL>!6GQEC^%t`kEDEoXuHfXWKq=PPe`6!P~WATbiE<$Ob z3SCLCGaMw3(z!?~T_0#i-?Hf96Qz4tqtZqqJ`(o@@p+Kj0!`E@?YEo|FhWR-cSK>7lx-$?Kx zQF&8q56m4teJmGEobE#Sm9>f-xD)fSWdYDc{0J@>OhXV_gKgWG)Q!iIH~crN+%^zM z__6Y$GeNLuRG_2V#+B-$Rx*gTjv+E2fh)CogtlEbjnp=Slj$M`FZ_!kn{9c?JIQU@ z{gvRqv8Gx*h%HDHTUq z=8C8D>tDz5kgy&d<%YH0_z+GO6G(_5RF1S3StHconf|C<$?#$BI(J)kN!YeJ-TtB8 z4D$p>hqZ2e8{hv^y*&+tC85QAgt!M;oT#xyQDbGE$1Cgs(E%9>bGFKSk@(F)j>_Ct zRb*8E-R^!U7<{knCV>P{Dz6Zi&Ve3iZ@if~m!m^2XB1>~!8!xAVXdU%@%QiML7|O+ zWw971H(L5`na|p2N`4HpcyN&>InZ7~H!Vk#uRP-|Jrp!asZ_(1tK8du-y@6<4)HD!z9`17gXdDHdxDpN-oWsKc_8s1)-BKF+; znBBQUR#`mJuT3lJ#v?cDyLjbu`-Nc%ruH8uQ}c+Ui3%*5^x0V<*5EEI0i3S&RGj4o zh&9xM=Dbzgj-Z=D1_3u|<@N60X^DY)vD<&)GptQ!CDPY>RAoh)K>RZT*bkr^BX$|e zo`?yOv44g@1Sm=frsjX&YR01+eSd0*s2u~A&mCB6D5VndR_<21ZPeUbL$#{G^kdyHV|sr;mSd_=<#z~9Vmv32u> z^3Q=&=3{>{iQLYce}RABEkEnf5eR%vmhFO@xteC z$CSlW_UgT?P2BU zZ0(qej+q)%{)H7m3wzc2&LE}MM5R`t(-ao7zo{lu5`~2pnS%x;Dc=Oz3)XcH=_hIJ z)QI=-D0Dm^iFzk598yc_*L5%H1;Y8J?)0P{RPp>rwe3-df|c@e`e-c1HYDCH0IqSb zU+UMXa`d2p0~)X6ZXYG-OZ{^4X;5Stuy2y0%TsNoUwN`@JuduZ1_klJ;#EYX4MK~w zgTQ2g)fp+uxG6gT;`e%a(F>FCyxCOs@u>wHszo=R@6YNZ&^LIy>Q&3ti76Rmrwt}E zCqT&&874)OirWsaWB=gt;MwfwWa!(v`BK6yZtjd*(gphgk)m$w-GPc%jKLxzclkXCnp(p zy$;V)Oq|74!Yu!cEc8%-CAr$=uNK zUqW8~gSDvi3*$r9gq$Irw@*Znn3{(a8Ff_&wG|n3gj^p660P}~*`0J2XtFz%`AwyA z_qR&Dg?aT-2Mv9jJbqc(uixE2HKpQJG&@&*)%^bbo9+F|)3!lIXkz(Fdei%H^E1cu zvi<1osLTC6ks=qQP7c$23^@xsq9v6z-8y?-LQ=7ydb&Z{z+}UMorI{7)Fxy)&f30$ ze#xQ*w*@0&85^Z=ILiDQE{1dKm{n>(tf<&Xbn!XJVhlZtl{wy$#xux+86q8jMxrgd+60+DY9T&)9#r>-zBjuYDL$Y9+_0iL zOg+=gmf6rUs-%u;tTHAf%B~xwQE3bJZoOJXtIlnuI+W>4x%>euYHOPxKiuDmT|kLk z%jt`#({Ik4_C{Pzi}nI8*){1o3^hpu3{}LtiV8|9)-0&YISlQar!1ZE0u3S5v;Y2{ z)~vI+=j~rQ6|Sa&Q}`goPh=8h+>B5qHDF>fP}Pb1>Yg<)RimpuB{oIJ(~#3QL|$YR z9(39jcXH-7F-Q@#Wx8mdS8Ho;SZ#n9h6s*n-?gTo>&Y`J%wXh-Pgo4pI(fppXBfgm zXhhn19mG}_M>*`UNE!te@?x^E!^u!m@|q4UrErN7+@FKq*&> ziP+Prwp(2UO9`~@-D9$wHpqm@DgCZ_<q(h?S-c2_n(`ni6Awa}hfMx?d>u>UEUE7~-v{?x?$#NFQ(&|gYd^{Bn@=MVmn2I~p5 z|HCitXuAQedVe1|xnHV1r6k5Sf|Vhd{q=)3HG>1s0a;<~^$~#~gAR=^_yf~;?=m|G z5cRP7_!kkmj#FU<8_F;&`W9iZCB-ZaXD=A~m4#FmLmA1H+Ib|93Qj7#^G2gl$S{RX z-|2MSnBsDP9-u|oF!GdJ}vgZ7?Z^BRQ`U3I}q+xc@$m&`dSi0QNLX5 z8af9q{!r+edeCsqdT~JOA|W`x-|EC0d9<;wV7OK-ud{q&USnyLbt0AbqbCrHm6sun z5nXIF(k-05l{kBz9d&ItpnsoDA;J@4>x+~*yTPN{PG#h>BIEtQXWYPq&l{|5iksiU zX2f{A^$3CXnzaB=W{}d|ZkioJ*zj^TxfbDJJqdHjUq*N@9z19gi9(MQ?8fCSCt#w^ ziH%_?*;Lt4i}jeHH=`G+JTFEcS;b_~RmuxA_UA1mCuR~$lzYbKp|woL+WHSMAIfdMR7G*6l+x)$IY@+W`xL#W!L6S zf)&7=B#BVSh}j3pjN}`Z}Zoj`eZ+3qV%Cd;8#*btgRK#Q5$B*tnIV?%E5Zzw$l11Ni4|i1-ae z?A2ol@4O6B+(E^*p~0{k>ED73URS;+e^*woQ{$77k6jFWQu6{z4cP9(m{ZpjOQ$BV zktsH?&WnBEGs_WbH;^5p9wkgGiPkl2nNVF!h;x6)=rg=Sj&D{w`kG)wT-PE zBk}9rG_7jcnk}PrGQND?f@MLdDk`y%6=&;e6f`x(IsN-H9>=dz!>$T4)aY~!u?;-p zc#aAL@>7SX>qNFW{UK}ONhIxa_#^u0Qvi9qzws@yd+W%G(!3Pgl*!Q<*=A@uGdh!T zkl6#gvaHe2VfpA=zQT1}!cr{uw8=_S`eKVjK7C_WL746@S~T$H&`(1_4;q{J_6~G7 z0iMPUzTb6OGx*rW(X`5H&CA@}Uj*I1%%N;cX|I@7k>mzMix*LZcaviEsG(Hf5pD$f zKH={tVYjIqp^+bNbRoS0)ANa|_!s)4mDZw(pwl*K=%&?ny*J zWVPBSNpbH@$=3jV;l!O_$5(=3Jnc57p`To4eDDkt(q0lga`*TXDX*t%S0i^r3P@vQ zcfnh^R;^{$qsf{#jf#2HPh?a&5{o}}Qc@r(Kco1{=%=SD{UazB zLql^F9~GbP;c%W713`U^ zv20{^&!mjmB{%F>EIqkh8^_n@Y3SPE9u+6`P-D;g0v7O8Cu&HVc;X73d<~$;D_mqZ z75Uew!cA}4dY%%V9@dub?}cZvVY|V8EITp0x*A07OVmV(rqZSY)W=;aH%QmjU9FQ- z54_(5b&?;I&h8)G-@SEwdzZJa?vdQy!E`?JmIaRQJG*?ayj7pCyQ|*)_l|oLk24cb zsuhn*6`A7GPt~USoTh}hVC!PqBAG%7^&IUH630~VW_Mlqb^1WNf`i>~Bd-x<&UQYff!g?R(*tmecU-YI%_->K;j1{&>8;_b8>o`u>bh(39*A;dCfNsy zeYx0gA5$C%zB|7k^?))mdARas01@H*5O+X?qOUJRhk3c)8W%z(YhBky0ePoUqlc3r zmqUoSC!EeR^xhNiDcD&2pZzSN2h}lP#^DuT5sSYPI=InbzJz$Z(9ijNs(dp>k|hG4 zr{}-#GK`L@R0#X8kK5S`eTc^qIoMP^+0P*2WW(g2)YDEJ?!FBCHk1l}mzB@xoU-j6 ztwy9|auohb!O@9iH;!s}}&-Zu~=-@d_rE`K2T&J7aY zT|@D`{bT9s{zQ+ob+FUP>y;WRi?R@1gr~;`GoH7_9v>%kr=J+qbqv?O+N z!I=u;hDP6K9cGV}iFs8t&9N(QHGsA_>j#0pN`jJEHf z0a{gxtX!X~CZ1c1#x#*~cF=k0*h4)Qw+Lq)@3vj8*lIP7n6RgPpG9~AUtzqjeK(Pc z6ob&&W0eS5fNhONQIY}Vw1^8lLGowIBrB={xhK1`J3gS9>xaoTUF55!o2E%Z$ZyAP zjU7kIBdaL#1Fs-?_^a4>J2!o4j^qg-liyb$Xhay=hkAN$pUbhIV{n3I<#>^e3PBG+ z7ua86wRv}1|D*C`Y6}3A;-LPh%TIaghR6hky2OP)nK`FPnjDGAEyC~LT)=Jei)}^O zt{M?r_h>gx)O;E$ZAbVhZXo+ails?h<3MZd;cAu`1UxD`M8LQbbZd_J`!pkDQ*@yn&#lj^`Lf~Q#wkp z&g*&oGo}=QrR@|xU3~JXO)T*_h61r=9yD3lc;}xSlkn8^{ag5N-yHD&Cs+Lc0pGk5LB|yD)L+q$+yYXu>Qm4Ry#2jV|~<5iVK;Li-ExSG95yVsiEW7qBeGPiGpdK?9D)a3mOJi=4%U#f}2wW+?JI$28I~W!; zib>i*i3%N0k^TG-nbzSm@@oft5kERz0EPHd_dGZ@3ijI1d8=)88S`=zdtHVYCjX&J zchb0_pqXGv|HbjU#L7cw7x+D6wAyXh*eO-zlkvWLC!Mb#PCZ3(ok3*{%1Y&fxykTB zIV5 zJK!FT{B*Nc<{^g zH6dO1YK6&T9c;CEfb9IhM<0c~9bVlm%1`bV;_b+imxzUe9qtKRKedfXs1`$|V|%|~9H3?seyz`v(i9Gkz|_nw5> zSntBVOYA}N=dsAwFx3sKoFm6N=p%YP{R09B;?|ek^@U*b{TJTR|9Lg}?|&y$MgPl& z`IqlRc5J=Opdft6r=_qEoP<>uDDB1q2n;*8B1kz-+)7qtvW{cBaH=Iij6c+NKC+DR zkl&CWlxDA$@5ATK^8=!ue;(evvoRN~+8)nkECwNae~Vz= zhEf^3*w0ZqUmse;*_ z7*5XCTwQIw$gZ7u>DlqV=)0bK;<}X?tRLI^F~sq>>G)+}d6{-TPW(#Mg^-K(H6KG& z+lPbV%l44f<=j7sy1&CNp(qfKrsvyVQ| zV4B@1!qaGxh>h!Eu(Sk<{qlGv+pvEQinY40|k3@Io5?ndeSymL^UU9LOfLTnPhj#lM=ah#*ZPpbGMT? z5TYwOA`mGy(rWV+wnt#N#0y~Iu=AD%RjO8TZ(r`i`V^>HQo=SRR)E{7^@-G5QNaKk zl(L?bchpF^pR{H2Qqq|}^d{BnWLaTCB&roRE8^7xia`_IPFw6q1xsJPtijTmKs3ha_rW(VrMnl()aJ8H~5ENd!~ zfC=96NqinkH0n#4siK8dc;#Z9NtO_Y6ra5T{%=dOsWO-9cX>r5DJwxVmOogLBF9a1 zVsf_ZpdiTwv|wl1W`dE_aJUdQ_?=}@#m_Gh)zq4oaVt?OQkT)`)DfYkKHtU*em2As+=th`|T+{r^cq%H z$`~Hmog7n5orjYudY?3xGz!LS$wV11<4J)+RF^C-51J$$QwCdiYwIY=Hh)uQ6++d& zTNBlCChBCH8mq#U1kI-IJ4f)7@3o8KX5Teg=V1!xKghNsD1#l>w$Q0wIPx2MRgNe> zEnJuk2id6J3A`JD-X*=1_c(e2-HEFSxX=lIwG&8h=QB2_KwFAggjtAoI@SSrBO{r+ z*=0F!bbyB=?U6W%R|w2Qx}<21Sb>ua`XUo1K0Ps-!(kktq2>;it~}!u^Z(&DobPm2 z2)$kS;U%`)h|{nFFCd;wu>yZ)n5|!EX)N-{Z4Vt=*6~y(sQerz9s{5ay@m*9pk}~Y zSaA;N<&jir8YRn-YZ_PCzm!dcyiOWgee@Em1fZ|~o6L;u~7w2t{U zYe@Q(^A~k%D*(zVnfZu}zDzWka(c6~g=R#RtS80Dsuf3fkPJZ=OU)q~R>I40j_QJX zw1>~*f>8(t&$M8Th(cXRiAzMYXdDa)=2>B?K6?NCir zS5*vl8K}cGfnWE-_6XpPqAEnuGOWvbu(9wuMou zlc3I!hjj?Xe}85U`+8~Fm#8;NzRgl#j&f;DhVHleHL^RH-n0&RV+nlvUR>z2(6`^fA5F3=nE#L@0g(UA&mi>V~QlGnUJalck)J!n@(9$a5LpU@*`) zkZ#lY9)pWy$al23S5_7^xX7CuG#r4_4V1UFl>D0`F6{Y>tBNo3kdxh7F_T)>Q2K#p zET(V|XNrLK!CTV9G@u4J)&fiufBn&1B3I9>75i*;gD_+XcW8i{YsqcnCrNLdvaZ5u ztP-`v$65+6y(7*MofGSTy&}EJS9C;tCa|I+79%)u{tL#axHDl5BH872!H=6x1A=dd z0K5p8O^HT99WJkF@X)wq!Tfy_09v%Sv<>l>7@$EttM6MKSf)HYUn`)L^zM>JUP@Xj z0pyS1G6Z86h(TI9TNBTPg((PLMXCD582;OlmhOGXmWE4Ne_^)Bp2#SDVeu0+j)dZ!zmPA6Nq7UBby)R##vZ$$~@Vfc=yyk*{eBDO@*o+AgZP)R*Awj*{1XQs{% zAEQg>M?#*XWbR;Duh4MMlLSDA=>&-qK7_v_qdbz36Nu-!fxho@B8D9?eV6$g;DO>A zxojWnmY7k_>AMoMZItC`G};b$2eoB}JB)C2gX<+lJV?5xG06mz9zuBo^y**ShQB}2 zJv+Gfu10Rz7u^(TKk$=?^H(NRpD<0tpxWXQigS?9)_ZIE1Hh;6W=DpTo(A}yn+OPg6Z;0la{0Z zPxUM3zb&ey&23DLY^@#tTThoNoFm$ormDGDldkGVwuyM6t zfka6>l3E*!EY@~yZty2J&xl)KXV8#Z<6Uclp|Y0JNH9M@CQqMnB2Pa7ehQNJk|t6; zU)C7CAvfsncY8i={{5KYJ9_E;{5*&Irg;+{!0lhtlpI@nR}V88RT^Pv7=qS%9}qu3 z-9*4}%*A(sz2Py&*oZ@;%ejlq1>xgAvbPq5Icsjh&Y#3BL+!uqR+GjC^q&sb5JFNm z={9PgWkfJd6|{7U=dCaD>)o0-)_&tH79G&{JENj<)bD?h_KrcG2Hlrnbs1f@ZQC|}WuwcsZM)01 zZC96V+qTWEcV>1rW@F<&yRi|^hy4Cz-aL8kJ?Aus7MpWSpG^_+N>lk4H0fZr(3a5D zcBj@y$>da7{;LZzHr+QghP`bxM#GtOf@bPVa|;l*#i&3~sMXY)&lf7n2eUlk1XQT= zm8NN`wt%e_IHDZ=%W_j4Kfi_GbSreK7aQ=hAz)y|)sm4y#$Xq! z7=w%{QeiJRle1B_O7ApNty5hMnfQB1o#WG{8v;|Cj@zs01R7Fl79ANEZrU1&QxhfU z;%cEdF$5mpm4)p?WIq%nXN^xJTvb0wLFrIk^{Sd6nB&{u+X~RRRFR=o9m2&+D8;BMon=iGsZVOB3rcDGgarkJruIe}$TNn40K+bD7?IP^5+;WBejM<>6cOz6q=;J&g8Jo=|GX4#B_(uT8&DN$t^nn%Y*TdT)k1&$i zFqdU>m=2TEvP_DQ`f%qo_(6k;K>qUkhI5eXyzt*W5=|n!>@i?i-okmm+kRIMsZn2C zIu_Pq|4_4IgW|Uu)v4d=@sROm<$_TJ=G5p*Z>CFp8xl9!`DQ6J$gsw5j5G76(}{Ea z1$4Fc<2$5F92qco|0}J8+`hh6HJy?co)^#%i&tluHUtyPg1#g(=-%F-03taZTE?J( z*%e@GgLpMYsA8c8)1!o>KMX8+>zvVajf;(D$rLRRS&FxYJpK78^hRKF4PHfsoiYJF z*SwV(m~URl(0G7}e`>9RX9U?wx5zxxpf22!>7f=js~RHERvr~jjoy!pLIv+W*iJ>ft`bKBpt7e!#3N> z#ev64T}}00v(-!em0QBT;Iu@!tFDEw#tV!ZUP zvaCPJv82qtpnuu7O=3%{YxNBYb`^Nxn{@}UExGY;^GI#_N4llXTW5mP8+Z2<;PNUT_4MN%lf5s>>VIf-3JVVFUV2uZ7^G+ur;u3jGJY@Qiol~0R{Zq53tJRSqLI?{MDj^Q{+GJ)0X zeMqdM_^cO*Bx0f^->3$i)L@5$67^Dk(G#RyG67e$uXq=8eXh%e@t@2yW3-pK4yP``5H5;9_-d3Iion# z@se=zI`AlnDjD70whMRblJmy5M?1h6-oAz3qpX9;ll_DPK)+}97(f5@{^0%3j5%Xe zEXz1J5Kt-ne|2Gs{=dF3|C_*1)X3cFe^L?uE1#nVrH!(T`OWX5j{q*iQ=kwv6sR*p zi^VDw73TIAxXzEFkQJ^2q_X4U@2XBL3&5k0Rc*boNzEhYskWKz6e(X}eW4K$+xXOV z{mwV{uJ-QB+|Up?0W22ee!unX{eAtp{p@|6QS$Y?f(f*|+YKE7$`%}*C!d4Itw$o{ zeX35A4xQ$~gf)w-&zrcg@4+qwUkD-Kt7cc)gN&Qwp3d>^XwUD;5w20g#?H^~l6V+ZFWRJ_xW7)*3`)Af>u6 zz>wA2{pR%`LIvQ$T}D}kn)A$X!vZ&`O!PVdlhTejXa~PSA3)S4jyP?rrTRdm$-RTit>n?N)vs!73x zvM8C;G0Z3~1Oo#Ofdxl(nOr_Y)`idnxw1wgI{vIe8<&d73;KCZ_HJyns#p%mFP9~s0726{wCBeF`!*q&9I$U3KSE` zoi)5~iE<>|rc}C4u?ez*fi-T$dxT~~==d8I0lv|b8%73)!5H!$;w6(2&X_u-toM-! zY+`N(e6>j;d34u_gFRbnz??3TzQNVtO~KnZA4Z0;;5aOnAtP6|K+u$~V&&Y_C|sSa zyc3V|fw(eL zl5T-*EiE14PxKwtpKCrDASpP=XGRkev_`yB0oN!2qmLSQ;S`&B zqQ>|)>x5PqBER0|+LS^qc3b#IxtObELsD%(VM|;wuKw~HwZAnwE*>w&jFNX8k=f%N zRCJ#ChKHQg0m&RJY9+0$am9n85?=ZjDumtNn|_%cWm74b;dU9?N-fW8RXg>a^h{N0 zo@#ir+sWP9Y?*d4lumiQQ8!9Q0$!1p`-49u^2~h8TB)1OEjsCv7I!FD20Bxejo4YI zH@P}kcR_!M?418l&h?uoD7OJGU6N`br|PCE*u3QO(a4`;s&9d5Qq|c&E&vJ-R5T8} zxvhfltfrM3QZ$mKWynPXk;%+_wiMbVT4+3R*wLvgm2BoivhWPrJr%C&h2+H!Emb<< zm?^nSNhRggV_7iE1i@<1)w!Fh*6`Y}lf|}6_W*9p(VA+dMp^Gg1($N!d+V6r9{>X+T}QoXpP|LAC;8(6EzCq8<%19*{CuA})hw z)#fETh}oviWF(UR$n_}bacGKiFDG|OSRJg1K7;Z+(Vv&#ylnS&$N=ax z%+Tqj1k^C;(rM|O`REL?8%ZmU=324BnM^Cvc}owrG;EH=ob>3~Tv9Zr?0dfW2V6G{ z$ZZjgXnlsd5MPm6MQ>z$4!@KI7pF4l0LGCz*#m{8ezyl2U7Ifq{Y3t`CpE_q4-Tk{jyb9{{)IPPYUy zDRfW(7uYz8mGVsQw*wI+-JEAmhuP#S)O)UH7n9!yOC!B{La!yBP~G(lC62RtvZL)^ zUp%bd^)-xN*AqLNcN6^bnY{OS-%-(bJ6VGU$1k2AO-!IJ_`+qP|Gqic>w-v|Llf7h z*Rzgsr|xBs(~3IBB09K`TGFpATicV*&m{&uE)JKQ3R%tGujbmP^PHh<210N2=hmdd z_vv&Tcd0u@VkJ`I3+PC#ATnjvq*2YA0rbhhp>xdZf1cW zGgFHZ(CFoT!R0;spnse8WPbTIYyshdo)q?0Q-ahU+OJX_#SSh7^gw3ch^+{(;+;Lq zjxD*v2*zX&n9?+_Aabg6w-PNc=uJXq--*S4ZAc}0qs`%HZHX%4k`QuJ(pTs{G-Ktd zWTCy2*S)cHU8wT{VB5yUsGXT#pnbcCwr$56jpM#zRIJuD+`7lHZxlW#0(DpDMKM22 zP<-$F)6Q)9%~cA)$)=fQk*4Ziwx(A(kR8G-p{({yePdR|mK(%AK)xGk7Pv;$2BqBj zzYa<8T^-_zFE=`N4z`#p1z%bQdwjp({{!OkbL_7ae@3DS(f=zD$MU}eab~u5N>0uu zCiF@_D^**k|Dg^{Qj(U#Qb75lBY=#FAmS@u68HXHU|jiBXSQDqKn`0Yqj>)%j_cps z6D9dAuBPLGk;Hy0EIQ5$k0iAT$;mY0Xn0veJ%*E*3063$p0^D?V^s!e#jsjQlHXap=x2p2bCHQcX%!X7h0A;^LoNNL^(@-8RT=?9uWLt|N##gdCxlt*PIyV;cL*fyQeyaOKe(Ee;r z{$&TlauS&Qar>LIpVVOaz`P{!bcj7nv_^;Ey;hJpDcVV7CE?N3#R`;B*p4l1_zbLJ zr)#`25TJi{q1Zenk}sFIx0UK?J(zgWaxTg0C0Vte5q3idqjMxD?|uJsMqKcA#QT1t zVF&-0XxRUI$C~l~^%)Ve{V_55?`_s3wNEAGWlSHqcYD`W7%CG)5f--mi-6U_a7!u) z1VIwuH9v$(^UjMu`o^m|*ITT58O2qNZ07T^59{g00P{52_rSDp4ie_9j|JIxPv4WA z8UDO1)wfJX`g0#fCCt|6%;(Je&TIFrgd_D!>eKN2cLbK28zL=aKZC5*pMo3X7{CS~AzH|ep!mvXU|gthu>ptH zZ7xKtDU25ZgQwzDA)c0R=lkX0ZRMbDuA^fOVm>|-BlfDcO^d8$pMVurD(2;eDr8?< zs)YJ?P@b$f%3s%~R&$l15c;?sGblklc({Bo#uX}|M~!Pvpa=^yQ>A!6nKBwf^&3jO zPlPnbyk!M=gs?e?D=Mfayl`9%Tuv+op*=CP%0oExG*jtIg^U?w8UUuHheZ7%qit4? z%U6_B4z4#0^JCdZku?^Y6s6M+tziWgsFwwxh9C9cRjokd{Wl3C6KP%c;;jacIGQ6^ z#A)!{U`(G!Ic=Opg5MBr6n3P=waPC9e%iowPSZ8iJxEtEi?M>5C)o>cc zzzhihkmRH!uD4rU9-!#BTy>=*j@6k3CenFKgaA4#!uC($q9LW400bT@-{d&yyRyH!S6(<-Mq zK{|ag4a`+^d(nPN8SBGTIFN<~0>n(2lu%U?#_$TPiF&THAG6?op39>j5_u|i!ni)! zeQhK|F^84KQF6!|Fbq6L6aT;^;7;F}A2Az-Gk!9X96c#OinO@PoE|w5vt$6=vZpNP9B!z>o>esM*vF`V)chR) zPHFdht2Ix-IWA^WXk9BbV?MC^lZXY~@!t@H9Pyl$qs+(t4xtwbB%+0iqSs`k+u zZn?$1>(5t@`&XqTP1IDRz|3sQe7NRN=j>QPD)CQ!ZySK7v93Kq+h+TOeMdu0+EUu$ zD6+*5+kbe}W2Z2|w62x%kUh2b7}9VTYtm$;gnlw?+u`U`mM6~MkxhRNZYoXxY1J#0 zYO2Vj^LVD}t{LAaN}LvDo+XR@+L^X|vtFOyi{iK}g-^prl88^ow=l|`RK?|9AoO*^ zr((O6l37$y2hQitjP}mGihTFy$dR4aJRhp7U>3rSi0Z09gHJO*`+Wub6ZG8#Pw(3s zNAI2>LvC|84<2<&pYM6T;o*qXS`(Q3F(A91ord-2&bWqdgQ{5* z(UzS9t3Rn0Yu0C zY|-oXrL=9r$&_xm-G)dvGC!fl{F5A)d|@v$uK~}CvyMi^&Ts?g8_v~_C*uql8X5wW zH(HVHc8%#ZBYioKI&3pK|rw^vWT>(&@+NvERnJ^4KeU$CcB*9{@RQtuS+d z)z@XJuF@B;^CYcKdZ(D04E`K-%jHPfq=tU(AwS8ne@0lc=|BwqH@d#ta|!Ws1in?? z{}7=Y^m$p4@rs%Q`M##gou7SxG> zbC@EOurn+&ao~5-2UU}m9s*f+4jMz$IY;F3Ez-PC3>03!E8|a8YsU8d`H^AqSB>_o ztIR%OQuS@5CHYjCs+3g3aeV@*8qe^JTqnqDO%KACU?#!6d)#^Va5BXG3&M8FY6&QR z5B$nq?-2YgotBS>u0FQ}pi_|bBdp2~Nez_yDQrd<2VKbQTfe#G>njqDPzXZkTWGl( zafg2M3xnSt-aE(hpLC}72^kUk=`2d_VRzkmG)6PT6+0yjYb0qG(9SGf6q+b#TGaI=iLqm!|XvBUqE z!1_N`gw5>C?pFHYf^4j2NXZnUJ)nO{K$%HMQiFm(lVnZsc1Mj&xR{}Y*q@s;TP*T4 z2UV3^1#rVG)h@c|o0}qkJ{_y7O)Kf|_pQoN5+n+I=KG)7t8CBYZyI{tuj~0~5Opdo z)&t07w?OYC-k}(Oz1;c|-(fgrO-weT;%P{?=&_L}y;9n>Zfh-L?40xoi3LaueOUK^ zQFKpmo+KZ++?M*HV}pL|MR@`Ws1Q$NgQ#D`2vssTNGO%8A7TqTvt;L1z6%dp>x;mq z8LQYgBJcehbhyp`>M5O7v{kk4sxkSU0kn`n;|(hkk7U@=L5x-l6F zD!|%|4{-xJ+jFO97*rTojU@pb7pp}R_IZ%=&J#UGYqfJ+CqX+uibb3NNq|X@+12$q zW8Y;q9zQ*$1+)k67o6OR@;OIc{sl%A-L)Md`urlQqZ5iyiO=k%iAb%J4AiP{jZo47 zqRek_<(&=xQp6{>f&k|6bTI;ggXasTz9j6b98k-DYvrn2ROXlPB9nXt{ZXkbRb&W| zb8Tbu0d2%Z8W7k#zjC(ch7h4MdTTK^NmJRO?}s=b+L~Z#C$FB8Rol}nAo|6!LS0@y zL+Dc|3F&BlM1zr_FhlymF;bb5-49p_o@xvgl{~_jSQwkA{8~C;r0V6nI#I7?JX}*l zOjzP^S-rK}QO1C^25inaUBe^w{o_?kx`E z7P!X-(bmS%N$3GeAsXhdWyAOnSEY>_hyb!8e-_2kXv|WFHV`Q zaH1$egIj^n&0GIMrDKWWl)#} zlJA_V?5Gb_#QrlNiD4F4uhkL0Zq)?rHNqjI!#v!FadmgIoj|>ti750zm7(Qp3taKd z6u>DNo3cn`nHt%(?>jk!_OLzSMPRj65CbRIcly~&I<@xi?qto@HV$n^X46xxjX@^%xuy4&@-->VC z3ZXNGi1NeXp?+?*iVZilPEFau%w|;C9I1M;pS;Kq{YlB+D%|hKT(CJ@)NyfX0DUIPRhvg#9{v{mDvo|no*AmhJdT8j*9%D+3 zQ}*zD`oeLge=Fa*YB7z$H-7qiHq~$PuL0`3H`i4^d8wmrklUk)var;d;d)tRgYSBj zU+kb44!YH7ygTmL&bu>DE={V1#txiY;4Xt}LeFbr48-kUoh|io6~do^namkUV-0EX zWTd=Z#N_ndgEgOdIcglYD8z!T`}{n2I-aOc3qDQ;=s#R2!^m9O14>cF^g2((-v+abuta*OK-EcIN2pIUM3_5;T|o+1qA9oG=gKm z9)ewqfYR4iF|_RSI?r**0%tT!wk8Pww1U`QB5AsVb{Q1z+6lJ|Y z%$vJ%Y#6BO9quU6PC1sdAF{kkuSl)B zZ{^|X8^;a^c5LqbXzxqz#^!}}fx}W;kb#Gam!c3|$fe9u8r*KhA{CerZ|d zYu_M=gM@T|OpzWaiZbcE8)v1+l{Ctei8*3f?bV;jIhn#oXcD+xjyPEeEQ)Ki&}N@BuII~i$aWvm?dFEa9TCTd1ysu|}Q zeZ&|oCh?TEB?1$%vv;9c9g)(^e1tc$>!f)nN);6)l>{_j=;3lXim7>(D_p%Ui8Q)H z3$YBnNwaY5g(+Yiv~ui-Ii~P^^bG8drHK7U7=Wa$z(o;&HtW&)5<1@Wv|i+8D|38T zaq@|HcA=_x)pm5XohIQBMf8NUBlrw>(}h`cqE5QpsZ7;y*~s!jaak1EwK%k$&Ptuv zV6j!mI*UkNsh2N>R{jP2-=13$1!7G@FkUxSKVv16Nhd}##6_aUd7{Q~Ga$#DU#WpZ7hP3(s@c_1Ogh=Krl{qz zae}C2wQCFeLW{-RXdFG**pZ%Ax9dCC{LTAW|1QBchenCEb?+C$d1P5g73Ha~wpOJq zQsWg6`UOK=7~HNY_zVCl3-yo6ff}O>!wkdbV+kV zpP$Um+k8TXMB$bAK;C$2l~*aN-`N;ZgmzCgbKv%l;cP*cfEz(x^oBO+#+`8{!w6vB&~I7&en8^S5Ys#c{FuxX-+GjV=ummSzc06 zmX6^MfRcWj^llY+O5MelMng$qM((L4HYmO&AHeTE;W&{|x|WxSLe#N8a~=%YT@ys? zCCUv^n#0MH!yC2u{we;Hn(r(`11_RjnPL0D4*qw>@UpKnbwsTnxSAa<6B{EvjbR^m@sF zYq!{{aVp>Bqb)~Si%(*gomnm{Oxr@ONWTs2=fo|7U1E8gn2qMQFjR8=tVX3N6Cj=C zl;YY)Tw%(pd_beMD!Ql)8BBw%&SN%g5AqU8@8xis<=KI9}|(jORE}pSgXG1{rCx- z_sfk3*do&e%_a`qYc9k+(inh#Ey46SnZyWAYjv=I{aQYUcYS1ZxfvmT=Ir=+W7qenl2 z(j3I@%7`YP5_cWVnCv(+R#1a_lC1RA>YTIz{WWwmZ~W1WcYV%n4)N= zgE7j*wT?^*xuBQQ!*Kl)Hy6DkU^qk9{v_Ug6c3W850q&io{Z$APV~ivvIANveWJ6{ zBBN<&g!E+6muwW&aATae`Pp|<7H?p!aeVFJwXJD*t-*Y)(M1m~$#dK@0o-+no{$0m zKznss(Olsh2#iQ+Ji-aAV9Rx}D!Vpa3Y3j9 zP=Ezsack5Q@f&ZKEdaUsJ;C0c3T6g{O85pn^NOMHOf}c?Plm8cVlT~vthK`aE*C!4 z9cE)_{&F39)D`_a+kazMe>;wz>DF&7XV88nFZ)pP;u1N8PxxZF_6qU7)_7_;o=enC zQuaYjaxJ0eU(Ne^K*b--t~KFT4GOI9inKQMJ=Qn(_|i}_45lJ;BkeXuaL>}VIuMek zS!<<`pb5)UySorwMy~haw@s6oG?9c*x^POoZvnpUWBQ^ip+0}f$Y3K%CJ`4Y+BLUh zGpm24$oO}o=Ixxzcn`xlR}>@BVpRtnWp~geK&Pp6_uniPy>cPCqhNu6`U(E47vGQJ z^?&X9_dj2J|5ukJT7F!rUmk(CMG{-d&~X1N%HEP9;eavSCLKvE_aX6c=K>_dHhPtg|0?7RLyzi^*iR&%v7L+(}xx6o~)lAb;`2P3#*0b%~a_mw#HJK zODmsvcj%w{%*q&IFH}vp zKZA;$&FAy6*Q7p^4SGvHm7US)5Iy63Q*iEoJ{|^O3tmg$20wz5{`ScLthi0-L>ZNC zHPUxA8cZKns`GjVXutv^R=>)kgpc&V^o@`r_X)(KM`-u4#QyryFLb|AI^0Ac&QRNP z);mIWz{f1qyUPRwZ8P>YtTOh%M%_uZBU-V>t;mv*(2AuuGdyD|1u4l)XZs^>@XEsR zntsOBqH*Kts76P)rJlgJ4NwFRL&-Wj7j3sADH_&rMv!l!9HmJ*Mo&y+6Y&r4gUZEv zD&`%?1Cj+f1y$LDF(=68IBE3aWe0rUeiW%8 z(o5jXP~}YU3=DoIv^G8t7czMV`2F_=qR!;AHNEfl8cM zB`9q|g~*wv-^+~dP1M~3>#3>){H;~qyyHAq5OQju2vR8zVpq_KY`;%1VWvGAFIh8^ zA}Q#HHgJE(RXgAOw?TI7E3b*F6%?KH4x}mv8Eu^)fgS|Gha=-zYPb{{=_jvS7qFT= z=g`d)YvkfI?_6PO5SJY$vwCe`t1nL2*)5KLNf)a)Ep@qz`G>E({^_r=C6im-X!b8w>e=*0cXn%`{=WGF6iJkEdk1Mh~RZP1o}hL*|ls zuqnLBXd5NpBr*ycCFhI%7$m!j2@}#7m?>dVKm}pIbaN?oh$w7O6a-Hj86#fQ)irvZ zjW^M+`iJ-0;Z^I-t2Nud9lLG2CP)(EReic;uQoiV+MctIzc+RdTe{zP5UZ50*(DgO zPNLx!AJqdx^W)mH<9d7jMRX=2;2$*N{#4NUFmP?eVQ|{zRtt-Pe8%yH`_~HoDel7- z4i$3Vl`rhJF`bT9wGE(jRpQvdfE|3>Q@2?>Cnl(|#0?|Is-^kJ8<3bVXtx-8i;;9!9yus0 zy$Db*$s5M?1xNgb29Q;3N=N=uafRm@ohf>_~gR5~2t9OBV8BV=#c z$c}OaJqUi#!F&q9!SMrDn^Gh`4e7ucLV9C5sjPSTdE)6^dinAgLw7{>64|j5zu8(BY#uMHQo-bzBTKUZA+$fQ`$(?IT8{)U}qD<)YQY z$C71%{MQO9K;1s@Ngz#gNubeYTmVDEklq=)G1mOF@-ABP{S+(gvIS`}PsB``Wy4hP zHJEad(*XO!DGP_J>Gp0m&(4qQ)I;(|pQoc3Cz)OR93x^yFbDq(FAx8SxiGGr;-Y2t z)+6vOA*0)N1(bT;E-buT{9v9y!_}jVGPKEzMpDVlUTwuIz6$FQ9Y_Wn7VhZ8GGJ^m zQ&=l=_&ii8-)GTc)4YhCryrPKCKF|?9ozvN8cBBQI2Io;?!EwJwcA(6@%Wz3O z6J+jzw5W4kX&QNC2|gS5{CbafIC{=_`1O{1IrC&yF=Z=Ve`X|=bTc2C=4S2}GaDEW z#n;zJkX3W4N3o>8$zp(h_9^uIR}#M#;Uc+Towo7sCxE>^GN4ahqHkNHH7 zNvbcKmv)lOJ08yz8YfIN)GFDvEAU3}ri9>S4~SRN*J8#Lfi;1LHZEw)Q zM7XXsxDB%tw%jKoo9*Pjtp9Xz$*gd@kbVYzcTUq!W`aQ9(=R)Z9{a(nxK3;z%5tQz zX2y|2=URfsL=-6tL|AoQfP;nu)MU#>KHmKG;xr5Jo$3Z*wehP zux54{aqb3_ov}HXD9=YS7*-VD8 zR;+!NwY)Q^m~=e9owB2@G#X*`j7crIWz!0d4O@kw!Q)fAc5!h>p8&qpV!kIw3pforZE- z>?`jR^!fsR%Uwmo#jn0(V(h=$WF0x5}1wp+smpG>eQP%bUhIH z2twCplOSaqI_Q`GxDZB6`9%WgW&u3{UiUM01`9h(0<~osY%#wfeV*=lGTo7AAX*ax zDP+8Qe+Sn~KXuI<1bf9rXI+41uJ#lv@&+Ykcrnt0|AB>t*FrpnGz|ftk1Y|UVRSFM zIFb{&6jhe%LLiNxmZ>&k5gf{scN&upd9;!m%F#68AJuyk+p4(H`cF>=}G$^d%2 zLCWjeI6w`!4$@S!!?7ybfVDmhMx`}v`<1$!+Nnwq!~o-kaO9zHgK%_dYRET;Ez=cW zBcvIj#hlwrqjrV#12Whh67=T&KAedvVI#PA$Eo`{+r&t6k2gM5nj0T^5nwuTByvz# z7s;-GBe|qZ^`~T677G#jXS3l76>MCO{2<&%Z^i0lOo2aU?CucPMrZu*AbqQf@0^!q zc}m)Q{X3g7Dh;M!3;VJO&kQumCv0+bQx)D2nJI!X2y4UduvcOl>8uH(%V7=Z98+D` z7A;%_zqSUKB^}(*+ruJ`(B897yg9KuB)>y7%34NRyF^$Jp@}is*EK4f_2hTp9lN1G zf$25A#aDowH__4j?aW8RW-)jaJBLG{MKKjN(6B-Xmt?ZW6^-Xj(hG=r^(oW9#TBi? zk2cUE@IhVuLghbmmosEyB&%V654ei;6*x=+k-z-yCB}>nqLr^-oQzk?pf0gZ9xm{z z=xxabGRj;yAojw}_jLnx)yg3Km&LowsbtXZN*sKP+iq@-rqwxo(18(ct&f9cg(GTL zAYHH9I7VGuYS%9HnP<0B_mpWK$#-j7S;<9T#eB&@-ss3?i)g+ZanCjM+CK3~5qdft z`&-l70jll>LgtIW7jmrubize_{zIjk>&DwDr5B#5is#w%iZlh{<=5?0=*vF1@9(SR z%SB*`Q+*#1DG;mJ35H8bp8YD~LktQ`a9^TevbpNxp}_){;T<`X&M!ls@Q^F_4-9_& zyOM)V=3yV_xH59USCouo_DMWf%o1I-Ay%fq<(;ZR`lYu@cF<*VZYArui@NQ2OcnE~ ziMg76p^iq(?eLh@3-L=H<>v@hx2c2(zu}Mkl7`@BoXl60OFrjH;L~fv9ci)fj^ykZ zc}hAbJ07A;!JQ&!{}@UzC|sV#zNzt3eYYm#qqDO=Y*CX4YUUP(%r~K%ls35YPf^&e ze2)DPi7-Ct1{ku2dKytxx^Z#<#jwZt z!M4Qb^me+<1`zM)H!uKW(ybF9dkPO^xc%V zx{48%>ey3cV*8P?OKf$Q9`+$?l3YxYu20|WRq_WZkmS%O$D?J zE4iV2w=U|aLjj*mc$w58gNbiC<%dOev0ve?>B3fzAXRb6qlBV{9r$Z}O2 zyE}?(7#6FqNinFunv_)tfR&5%itk_Jn(D_*0|lujm72<@V*uXG;f9-u zW%I;4;vf_X7P*ubrK6`X8w-UZuPfOX!JUh;EE}&GbpD!0NKD03-Qbu;TO(jC*P|0T#(yas4e z@|mM-w84T3-lzSHGn=r09<1VN(zs+=v|04mMn+$u<3}M{YTyNhyv0*;KGiJ{!vSkp zBiB)-zA0X_Ew@zs)nZP;g(P`Ue!lP+;<3!#NHisvu1fO<9gk@dmMTb9r1Qdqau2vZ zZmxX#EDMvU@LlQO3C~HxNoAsOIS4fA2s6s?@l`{IdvUI1F*S?yY`i60>X{g)YaUWlqx1 zY3W4A$sdPZD8^mR)`NJsV8(cwr%&LhnZ!88iDHb`U1D}`ficW&8rN+V$xiRzsZ1-J zGGBo?JQyWy^`PxJvgv6XhZp>0_l6ZSsKw4Jih7bK>ESzZHmaq#$j|eZN-ioFwA5rN z?A_5IsR`_%UK89p$eV|IDQhK^mT*a`HHNR)YmO^l;}*~gUUO8Ldibk0FB>#%p+Brf z4q?zjV@(+tddmVBOf%C_d4)I)5AOMBEw$3{IPVP+^TZ{m=T`7uO4by8QOn>t2ZL!?Gb5wIKQ{O&Ot{ZD>(PF+u(PQ#i<_F6@P zvvQ4lv2AUbXZUx4KrD&fP6kRwFg%t)on3?gj>yU?Ue=Hws+Z0ZP%Hw=-thB?KHBWB zF^ekrt4uRvD7XZ#%bvmiNqW>&j_+)}Wir|zG?-)KRXi_7 z*k7wLR3kS(`Y;xxax;kW!+~qhZRpwDhQ>emH9xst(BnT=mQL?`FsG`0FeKv@M_$f~ z|D%?jD|jT^$miQmLsD$w+SY%lE~SS=L*dVB8{3dfLy)S>DwM048s0pz*coh2qj5 zj@^*yI3d!S*M)tH$f5Tkl-!n@i*#5`ImmVlXp?;V!@zzbHwQ0b+jsZGp0mhl#YkHO z37By`^?bnkH}z|(WZ4as{T9uuCF{$$H51eh(K>|L222g+rMdr$8v(%@a?&X7 zCh&0qN_;bLn$GL0K=7;>aZRpep7jAiM>@7Yjvuf*kB&$*O@u>M3h$})K=nAkJsbVN z1v`t)F+TeW4h%t?*RL(uV#kWRtK!7XKHK4rz1eH+g#J9s zij!C1g}yodJj2)(d$kWg`}x7RHY_&-;UrHMH@KT8E01;?dMf_FezV=?#s5hwn`g&N z|H=Ca65zm#-;?GOr9kaE%Rk4jZ~WKtBjzu$uH zDzz}jFfla4C-@8XnThZm?+xq|+u#tka9!7+3F!HLrhDF3PdWPGHs?VX!#dC@jd}ne zbqaX19Z4{fzsf#P;|TxvU9bg3X|i}imo#X*fi-Q0^x8nSEY5?R#8%s7ff6bclU5L;Q%yC2<_e46A=G} z4s{LhX&Gs_RWn~_BL`IxL*l6f#Y_P5bnTqaKkDwXbRRvtOhSHE`5bXDjedGRlBLZs zb&`vpTzPW>n&Ogjvw_T`tBQuwE&tI;0{18JK>Ey4F>RrCwQ*&G@eJ~a%OF-d9u-r9 zy7PiW7g}&6u2Z5*jl2y`m_+3L-B_{`V_i3-JjEUwy-q-Y9n zMO#Q<@<+|#a$?jVx1vewT(IMezeL%nut?Zu4yLgtas{ksFL+Y7a%h7p|5Fp<&R2`Hh8y;8pY{0#M>Pt?Pr@G7^-mp5xd9KK1JSe{C@pOhd3{SBT;ZVRF6Rl%`uiKfX*d$F;Y0AKs0-rn@%8gLS$%CwnClaOcmb<`oRT z5%K{2?^Qdl?sOZt%Y6{+fQCA=3FF`2e@5$-D4s%oAF`<&HxDQiosl}-d{z_c-ZQJa zt$C@~uG00<)Avm+fyd)mY_HT#Nz)Fv9o`!4r#X399XuDIuW@L+JR-Y%!HT*AeZIo? z2+jha>n4zyrl3=*(Qf%qW4CIF+}bW}BiHsQyzpG>zu^^m;PaL|d->%4cr)HuS2(jc zl>k;%?+qz-Me(E`RdJSVJxNK%t|FlD&UpJ~m&RZ=RQFv8*EeVnQe4%34ZzQXEjEj{ zsl2e;Kah-!yw-*JhX!3aYbDybp>OaW{5?zZHnVzEe*U1e{F+Xn+{%+Ah+1s3!;TlC z>xTa&F_@Q>XRBRgC&RvWrE0>umEom}OK}o=8+|J2U;(|3eRWNTw{?dI_;o#c?x*w)hN&fPy?1h;8 zwGjD(Ley_gwVGvvS2U%$#rL(|(+>7wFwQESu262mxqnH&y0CZIlFX%5y*0M93@8@2 zX#ON;Tl6G5fAJ*T&7d<^1(2pw*({Q0yDX6{u-)qy$pPlw7&!9M$o^@m*_*pxibI!q z&`CZtmg~lG?ZA=i%FzQPJ9~|z$R2$n@7!WQseKbg>)Hk@%9dZVS3%-uk(FyA34%!a zkrhQ`DaoE;S@~d(=7Y+^)?B-nr_P zCFT@}**syZd-0L+P!8ow$N8GU%h~CvftQ~9x+Lk_mV?vFEt(v-3LyC={yHFiC079^ z^SwHHvYBol_CfF0+G9`ql((i$al%u{UsH4XrSq$8b1@3sys|;=cw3!&cvBb zGa6zy9RC>lM4>xgS8&lU3VrsvEh__kAS^23A=P{Y1AHL}HOpTUh^-+r+)>%7Bccs> zGH{cVnQ(utS_mE?e3LV{egIpYWd@I@w?Mlx)(+>vxaan!Zi~XX-!JRb{2FaS^~JJ9`h_|MbExmu z7=z-M?>CZM;G!(So1P@lp3H7fPsc}TMUMsvc@9kGuPSB_Oy*Y&i{Cm}D%|tBCYa2t z&ww<6{fonvw{81?CU_Lqc;76(pe$4eT|BRYq(8rYRmf9XnIr1kgDuZ;cH{Il0QWT@ zy;`B-9xR^tF6V9QO2yrCdgh#;l5g~KbmmmLgS6hK;Otkv5bB2D0_wz=_`u>nNc|0= z0Glm6>;g*v;yCg=@%S$M&qO{9Ae393;(iwZJnGLKKZTD5y6>4gS>sJ?C~WwGY>2kk zn}}iA(M?~jDNED8bCx9%o=s>u*wu9S*Ed`BbA2&&oE2#>)S}V{|B^4vT~#2T%_*v| z)L42qEptItKUC6R=P7Q5bX??xbaGt=xG0`ta!ptf(}j{Tu|rP7EL|Q_Ue(EQBO7I zd@`;j0LTxieJYv{N$O{(6lz=1z;OG}Kd$^XJ0et2N8RFJecF)X6)j=qyy?e%?%Fz+ z`T99-jwhKoN78U3D&!#RH;grGhcK@e)fK&$jN8c0c8doNiI#R<8L=r#;FCpXzQG4T zMor2;VpJo7bnEQJ_~NzsGFwPL}0UMR=agjQz5)&DND~MM7jvj>E8U8tlYYBxxX-fzy8PaqVKe| zGim09!MSBn$G*0!%;H^s{t1Lv8=AZg&S&UxVTkbT$3oKI)(|1P4-!9*D`1Onl&xSc zcy<+T7F6s+Bz6woJze)W^TZ6Nkj*{VcP#8graObjJ6-ApO}RtMgAIR|#~XWl!VL(p zF-CXm^>XZQV|Tatq2*i4_)_-!#-$>;V?mIg-QigaG@~rJV|ssn%F2!7TXZwlaJMhQ zuVAbC&#tDg&St>P)9wTEne6A<=FoKcb6H0`3HWQ$neAuzlR&o$$UBfNqRO?(wGinC zY1%y9g2KfU8J+yIKkYVH^^-2T0oXgG2qkQYEtfb@8%lEQH#=(-IZgUPo6qF4tqZHsvw>x5nRFm3>?YVtJeM3v5 z#E=c!k$uSwyH8!JhDr}08KpM6l^*A8?{DPze7~MT`#ZTK31#}*a-w!os4d}W(W$Db zQtP=Do6(4`C%2oWSl8~Tp`$+n(_F7b$-*E8DA0I01B^_ghlx)*)5HThv>nUGY zhfQdyL4oA^0edy@*BGoxT5SGMZ#+7<1|F>$8UiFfU?w6loIgK0EdINd3g=hS6 z=Fm5kZvn|C`P{yLuQTU$Tk)Ih(?}~0SDHmNwVRdj07U~Z!$f9H)m!bt`7KcZLsqN+ zI{RyDB=y{U?ybrI`xGRMJpNMAIdXBSY+iHSK^rp&qhCSiBzB35?0|*z>9J1E}&EvOU6^lD3(r`a;?cbBC zPzZN%*I6kV`*I0B*9F3cq8()&rLC41FxjP%Eex|g$jMdLw|B&cVgspXjOsN6H7l$+ z=S`7>%;X^s9%B5w7;n+#d-xNNxCO10O|fNKl~QO#^OKTk+qYscuR4g&-$p<|$+!d; zDlU3+6*7xHVGH0-w>Hio5PxmGgf?~87E3D}H^21ds%dKrB*$jK|51cmklMqH2>nC; zt)%8KH=%!??+=HHV@`kv8<8vAZaQc+ZYntNYxf_v@X*_dSQcQ?cb_z@5u5!T6@6I< z_Pva~E_Z{QzZjk#uv2nYw#kC;#m*@aPiG_s zt1v?pdaNT;*c7Dom`y85emX9}XXIOdTW3S5WCOnPO*ldVc8RK?b5yH1mgx0$68teq zj=*nkG`~pHrmgi z{{KAr}BRd;9LlY}kJ6k$K7b`0ZXF5j{CktZ}TO$)Xr~i8Lo&G!G zp{!$vB!I#Lf&$utV%|z)$=BpdomYj0Y-A2duaH4rD8i8Trq@WNl+|z@Yj|+8*b{r` z6T|;d80I3L0jtMyZFDoe+HgAB;6nHP_;`cu_1Taj=(nGEYBx=CljT{qhU3IVOy|9h zLUXgReG*x}Tn_5Ht=CAK2Q`FQMLu6(#GSCoqyvy|z+ohc5kn3Pta(K9Y(qm5ncHpG z3#YXX&rk_1+**To9lc&6HXW^|!jx{l)YyyEi5ZC2_aUr5YjTHBps|o7NCp~63;^#r zrq0Lrg550yPvpY4%Uty|0pLz2q(n;%UIlByrqpj#A26woEpuzYB_y9c=oLrnZ2u|K z4wb<72Uv;T(s7jF-RDeOjA_Ay6b4|+$6yuEi60R!KLVqQE2>$UE!&4CB(CiyF(YBL zXXzMSty8ipwgqN`)-ZCXCkYR*Xq%~%MN|Za*@|n$Miw|?f%Y?;bC;DkAP<4Ugbqc( z!jdMJ!&af8O0ZeZ!)nlUlZo@xT}&}mvUM6(^C(16WwZJfT0$Tjm$$Rs*nBCoTM{Z& ziYqA7Crb3RK>93X#KS)pH%PnEtTI>U$b%L-ls{lZ`bahoYV^D{AT6i2oH6_pt6%&e4~ov`alWKp8l@E+Y)ek_d?2azPRQ5IO8Ba>byX zr&yIi6_7~bC3v@$##58!A+a%_wh1~}>FEo}*pab@?XwH@IAyGre&zDXt?K%CtUq4V^_#1WNxZ?G9{f)7Vuqa?l*(Ubb3`* z*3t8yD4qiL%BJ%Vw$l7x@TEEb|GKBy{{QXi|CPhbR$8~6=SSc{4oh#-+6#5;X>qAU zLLduF6Wk>QE?3M`1o3IjwrPlI6zx7Bj^ELX_e^l#0eLB_Xe3kdppvAyoVu7=buu+u z@{{%b1i$%h#Yz?InjHNpA4?YTG+@ZA_&0Z4`ms2+D7QRd%G0C1_4s+^GqG~TYP}3; z<5M5$#UT&k%e9TJa6>d^hI@OHvI(wV9m(=l-ee0p^=zu_F;rhJaK#A0V84G}Z=U3s z8fApjA#b>$#|h0Sb**HM%1;cVb~ zZV9$&Rz=g7YB*n-@0&)uF;iHe6T4`+JE@7ElsJEBMs7~?*DM>-L(aVTx6nvS}m{!d&EOVa6rY5SJ!u%hgxPmJ;SZ4&BE-p zM$Esc1K8Ya7!Y1UGr6PY>~_#>8%a0%_L7fS3T335;L;C)t`M(soY;#`+)_Vp;p5Wp z)U#@ShR`!?Qn3F9F5aP}uz$(^C+kL5QwTQt!#QpJ6v6*}0sQ~@>GMC0S*x|6^pzL? zetk0~ZDfqWu7ZFB8Yl>%DIx}uL<;sJN&6=Pfy?70N?@e_3(kN-Xx2n;id3y``R$?x z(5#M};4f-f8)~ksy|!S}%9XQux74$;LWe%``Tpxh#$>=BsKVrQ#qs?*-9vXAOXv6S zz!qVi%Bdf3SaAyZykLD}w}l0_XnnHY$$?NA@lqHd>sL0QhYaf+R#08vT~h;4g;5&@ z76{6ce$DjO@?jCsE9)>_4VC$d#ZYp!tE=TgFyt(LHOEjR5q*@_2xJ;}K2vau&daA< zKpoz?U;@eKx29DRd1c69^Fd8&B-}WCjt_E_ah%5>6MKD70Y8kBg%J!4yQ5f^krpAt zJV;cCkkCk;OkT!;d`)|Lw7wBr^TrPJE$Kh952I@vM~511x(moJ-@tu8ufY%7Q~7*nm?9@oFTgexE$b!7cVQML%Iz!WPu&qHPmx9imF`} zN}^CRrXMOQXO5vXOW9(A+<^=Kl{o187Qd!GZ28R|e`rQO3Xb(4;&m_Ysg%IAN`Woot8#HBFffdqH zfS10=ophuGk|c)hzl2?NbfU_KB=`Bi(tie=gf>S+W>iSmuIvQXRhu9Lkk%yn+KGK@ zdAlqmS7?-=VMZhh2dAAwJHI|PkyKfkwFY%Pf()yxE#e3YuG0iup?!8iEw4C7lV@cV zBrK_uAe`0UXR99tMlNQQy|?O5*~GkZvVxROrgm^#oHvDd;Z-w~;fngCXQnr)GAAq| zKD-lwXHOejrt`O%8W4n^H0OAO>x??jF%0n}vC2c32OzS(8Fq*4>X+ifCFIhZVcT>? z1q;e-Mt|kxg)J$xf{w*VD^1J`z^BE$T#yOcu0)Gt#X6Ip1l+X)Z~EAm0)=1n9|2tT zyKM^71?C?l!?M)y}w4@^u_7p7$04-a;$(P7elFjrjW2`Tk zEdJOSVL|^g-CB>gxK5y)3J19Y$L+jo}QX^jJm@aHiA&mxEY5 zetR!OGFy&@$;DffO^b@H)xRt8bP;05Xo5nXv@JD#NZ!hU1pU&mrx||%y#S|@ zl`Zd2lR33hfj_MlE5u{$CWWCv(fEdY_rgkgY^R8x3qR0ro7~7~bnMDWLD$N{RRQ@; zNbf5O3^iEe0pjk6klY+E!^x-g{y02eM}57*g$FH<&D^gy@Cr0Y+Io+J)WOcwF*XDA z^qZN+2b-WAp%gD>s3>F+t0MI%zyt2vPe3}gb0wc4wy~D`%giZ0c?$`yqAicz9P|Ux z$J%l^)0l%Yup+orlQ3#Jo(|y}ZMm2jwvmA!(v4G1aj(vd$Ol>l9r zvG}lHxi?p0DGDAf8-=nq4Q576yq{KPjfQEotoRJ8YQ_;xE3rWOy7MmI9C&>lu3yXx z2(mX~?C(&n;C*S%FdySY;m|u{TE|g8e6LO{i8_JrpcURk&7duV3LdQSPth^ytx22AhuBBphe;(#cq8|7f*WRa*-fDQRh}@0Bbygvd-nj~}(B(d4u?IW$1- zgCu>4`iT+3Z#NHx8gd4`*YYR^Jjx~UCTo(k67PlKuej2tya_~j9)kM>%QHFNe{}mV zc+;w5n`nXMgu&JKqq*V`?$scLQztd9_LAw@)$#=+_z8Nd|p+ka@8~*kVDG zE82N(8}C2Qz)i7uz#R8cw@BJGRapsx*K<`#YXG1T`b|%meZr%HM-7w3Mw0i!BC;on z$>I(j=tHiWE;u5wNQD%AlYWBf1dIua(}ao3a>xPP5wkj61#_c0i2(~RS+$P0#s*g z3BS3NFvU`R5kufWRsZ^6*@dUQym%a%>AbNA0m#M`;lAUU7?5ntQwzBFC4e$kTm*yy zrdchxW%$RBJjkYx8+V>kGc+{TH|u7%>sPUIT|N#qli1Jjbj|OGbgk1mzeZIP3?v>BlFkEJ{7y zF>B-H7seNuDl|p)LVW@y*}~NBEQ1u_Ww_A5Wq9Le>*8d9nx4Wqu|5U#dU_fs(M9&T zm?qt;&SwCJZ+{lM)E+_v9r5LRj6IV!%0WqlJIBtYdG%;JBaz&^Wb%{q4kBK>`j;kQ z@UT9+5POsb!^d=YkZ~%3XMyUbphNl@aQ;c!h=1wTZ4IQ| z6odPPT1bxKS85TMl*70IN*d~5s|!Rcg=I7p6$TvHk)nkcoj=}yw=vBri&g}|hLt!)1YfIX2A_-0AMN2(ob z;g;Fyw!I@}Jp3)JcA`y|6qnJNhTm#?R<&xHi=xxWSAusNbZsx^7t>9Iy9HUzGv*L9 zOO@-2vo5nWa#8@h;A8Vk0hf;9#lpQjRq9_4t_JbUJoW=yAh~c5o}M)5J#11gV&8#9 zA55)>dwh!dgGN&BzTE&$(z3FOs zdN=I_HAqj^3nX40<>lI}W>#sv0o1+A{#7W+Z;-F01`P=sDUPvEYV3jPdtv8WoU6MJ zJ$S{3;F<5WhuSeya5i1eEbxI16Kcj&;GuntZ$DS)r>LH>i34Q|4aud)=&s{Kt8xx$ zUy|xQdRFtXZp&}lj~?UmplW~B?#?UvsGj}Q`2Njs7xhc`L1|Xb)u~1F;#-dFTjRnn z3-=j`+#lwFh@SVJ!akbTsq_#yC(G&W zDU_Da!?Hm0@2zmFg zKR%P!A6e6W$&>#&TE5u++9b%M&8Y+oggpmNQlmrSz;;HpP)8#&9wV=|f(3|pH$V6J zlsG(1)8paElWSdju?3?_2Rp-W4lMs?XR192~ zSN0g`hP-*8C{Q9HlOJmjI*AUqxJC`_mSTb7Qy>w8WE zwLX4AOKR6;DtuAH|2W2jNX-*QtGX`Ttn;X)ux_~Bu9*A8pc36}Fs*>D)R<2z;cn*$ z27RWeq*F43z|nq)R!PDmx!#|4;~P?5qdfQf@r_79nXsN%n~^nwMcbyrO89v75*m=1 zR_$7DrBJuFw|cUEMz_8LVV_}B`!&^|-Ueeahjw_-P=aCFpE)r|AE5 z0?0DqnH>vlr*u#$-c3{!$|I{#iDtds$Nl+XKIKM;D|;u}X}Xv#vKIrYY$|XVhr$D6 zmib5~^V&*&T{Q;LJze-$Z1}cPIe#N-Bd50Wl9h`8rBAV8YUi<~4@poGp zzKjQn@|{)qvP?1Y6c_^u7ijkUp$0omMUF~DvcetGK*I~KZ#PoQ%$L`*+q{Kv9_6A%CdoedPBEx-Rp?VCcy*>25h7R z>4SZiYQBKavY@{v7p3Xlweu5C5=@4S6A+H_HCbRCt?mmMdd(fZLDEw();BN7PwAbe zd_ml}2XxqcT^LweR#$LGNwrmpn7r2*pY=jLay-UQpB-5qIBZz5uqM4fDpe%rn67;o zR|@rn$nus!QMo5Uy5~NHw@YjLUjO7Ti(hdI8O(YA=Xyh+ENT!k!Jroil zC#qtGgorbiIzYs1#|v+94j52P`Db2H+feDK;I%0^HK64;me9oMe4cFx4Y*Y`%ipEY zzbWc}$XGy`WrJ2`#HNV!O*O$NCJT)i9~2;4tdgp#dHK)RZk2ILp?`BdE2udg`u=WG zMh)Fx=*Z0SdZcK10J5>Gb%mJ|iF}$hJI~TJ%c@Cs!PHhs^w-;L(W(>&|Q1!zvE{2apuBYqUgku=UHcVe=d_jfvJxdy6-6 z85PJyAPXGA949ZQp1~IyLq`|>NJLOqEvuW{+M-K#HFM#(*qMlTn#d!BH()As=D1J! zSO`C6<_?&frie@v)P}YMnqe(iAsKLrcVYwI^rmuhuV8)yvPa{v}6`R|jU1D0@vCA7K z`v>V{UhX`dKHv46GWTboqrf)%8>*;B-drBr$+EKleRYD^dihI+%bA^hh59kx9ZtdT zpe4+vQ-o~unIUi+{Cy_>?-c@2{OKLyrGvJ( zDd@nr-{Q}rO!SV71fCLuJIa8A;n3;jq7BHQGcPkEir8V0?pdKJyI4-Y_`%ew5%@tq== zre3C1jw@0*YOVM((`olU*wGEQtOoy*Ol`5}(gWvNW9X0j@?ru>bac10Gfts`93(jH za~sjM`2}qixU~(lJ{Lo33jd<=pG{Uos4ota&8H7sM#Jy}9mWevcvhgZDV8$F)&aNh z4R||+YKIJ6gs@Hn-ZpvAdZX?VQ!~HUF_Tzg-3Csd|Fh;Tb?U+^lX*?@#xNcDm&@M^ ze)-N?eqJh@6T@^j>;44>qdFkz=pHA%3Hqh6E%v+~KraB@4a;O0cu#RoteGzVwk{O@ zS+07+s>OOk_ZvQ-pz48?wGBKYc>196BHAH!%0u`nl6^V^W*RfYu|{@G`^xyp(TeSt zpzV$*_99sp^=^+fA00+Ax|^X5gu8~9$RY370~8l`fPn2p!6Nbffy-zR8}PLYq&Qn~ zQ9{Fkg~?ie2!K%+1e1y*?W%d&XH3?!nZVD6Xh25Nxa}`ZiVFQt-89%lRVkOaT24F& z#uAeZ>;OaA_$}Eju5=o|2u!Sf6B9PpleXoU?QGXi!sfl6Yg4cSmUdNT1UK zSA&;NMbeM;FIT`zsVy_br=-*;mY=M;7psV93 zH+(1rgft<~&cdnQz}Bflm(u~std7&$h>p{Q-^sY%GTE65QEgE#?d*E+5Oa-eONZ`G zI7|xohwNsCtM=ifd{eCim+Wh}x^7lkZm@URaCe?Lr4qUW8QoWyx@--RFS=goJlx5i zXD=@D<(R%S9)Lt(LZj zdBo@3))Dnq%jI>cyVYUk+I1Eb`tf`9-yw8>%PWZHO}ZbSPxoL~ROiw-MEM^OW&O#o z0W!qm{M{Qgb5#=&)^_}3KUn#v{SSqfEkKdbt#8WW+7(XD%}GSnZp6mtI8i>r+YOqg zI}I+n0PKKsIZ|c~QB=(wOe0jxSWWrT8@m~m1b-D-(Oogws(10J?H;YC$3tidS?OLw zNeL;naCX7pe~7eBNTR7zg6%%C;P|KK15X_MN=cO|W5}i#YD`S&21KJbg2~{*a)c$9 zN%%ee^|>Y9%B#f>Fq~a>`D#9BE^kiZpxdHvuXv0v&=k+Q!hdg&vg7WIc+L(d%QRZ^ zRJS5IJ-CQI56cp3MKGOs0;g>tMcs&TE(L5p5GwYL6+n6d0WY}1<9x)`_(gh!vfr?3 zGvD^8T@$5q*YS?u=%@quFF2lY=rj0#Grk6KAIz=_pI?dIpnss4L+lefZ>G;|yHdZK z><2l=(muPLQ#r|vg@==hS~xU{s6(YuCX3~?^XH|!(aPn=VSx3RRmef1gSoHd8YxbTh{ zMs#v1{Qp+Pg(1Tt_%GZACqqGJp1AO42{jbD_kCT!Be_Sn97+K}2}!c{8zpD*TgI~* zvDFp2*%8JqtM%&H#YaTIb`Jm4%+3`rHQV*FgA%YEyTm33MnT2^mfe2nP zk)%1vn4D(i_b8eL9Ulv=0{>qM3=)P zanlLPZ%8d>|Gpsb9?R>Jq{xw0eR@z-RGf3#Rmkv1p_z>`RzkfRwwEPBchOmjr(#FW zV8=)HCr;zqqsB92ob30pSk_Cp`<=Xaddc=JrX&AM`Tk;B<->0`I1KYn;Nt&voQMrqgyoJ=G28Aho{4sJ_^SL?;spz+ z&id`aIm!Q4Ch(R%#AHtEdBgHSsTq~yjyzpJu{`Jc(1l*O-xYFx0_WTzN8HspYBmoa zZ|M8){*=Wz1^-5nIX!A6K(`@0?S`EwxknryI$MKuj`7?3c)s}CenKIc zA^sOXv9t$%ky|Jwx#9#=Vw+Xn1hM(zdMcFmFMz8@+?`8Zm#B7Bq=>uAv#19llK4yS zD7cr^ohP!*?~dMk%JAew)~g)}D*xbMlsM2=(tjD^2iNBd$x`?Pe|z$6g$yYQez|ac z!bBJ#Z3^%~q$3CQCpx!V)l=t+P#m^E{=vcC$5)w|&vO$Y@BdeSktNv@9RnGn= z`San2HlznWw4~vd=aD>hATrJ&&H`S|C7uFqgH<4TC;lOy9nlet39fT-Aj}uYoNB@0 z5XGVfKU0Mx9I1egUsMm?#UlKu><-gW_iN^#qes52GhPuDHEuzKDne48H_DuT>2g8R zasW(73NjXLq$WkvYT@jm3r zZjb93qm(#Ot?3MU*gYC~^I%iQWHkF|O?f{bKWuwh^V*5h1{`OiVqqFBaaS;EjBy z{sVkA^>hFzRV!(ky8aLf{iKXAxy{qr!bNaq5ffC0M{&k{f-iHWzM7NpB*#)}#zmGu z=d5fJD-SiWh*M=j*GxiHaOFfVseeirKx^$q^Egx4&_*(G9^8gMX|)7 zz(Wyk)E91(eymQQFj#J z#U%V(%p3YM*=~_jBfl0=SL*D5MT?xQt01RWyicU3I%jZH0QX?t({YY0i_~+xAiE`} z0ny*lrP|EmLU^24II7CnH(a)XSuJ}ZOF)u`R6u%Yk=N(F#2r)P`=7%5;{58>e~SYJ z4HryBzyku36Z~IW&MI+~ivI(+`C0s5P5=KVb3RB|QyIODQ8Y zFEu4WO?xy40Y%Wrb3b>N@S0DW!Exe^Dg=W_41;J?2Kk@3#Org{pa1Zda{YP!X9xWM zn?dk@b$hY4urU#Jv87Y`kARe|^ zNydQjG>x;Y(6E&%GYrpC5mO$LpR96Z_DQv(6>`~*5Q0#Ixj^_a5T0<>UUYs}8Q3RW zYe+)T?svejfm6%tZp^QcXea_W$i!OkKCG%+up zsM+Xrq6f2N^Gah7QpYpkKY|{@oi+_U9c;R%60BS2EaIlE!`R$55RgX}3S0SM$e5?r zB^z{`m_@a}e}+Yys87kK9oj~&69an~bh2m^pob$rsz<0G86pb=N?=yjhYFw(tRYOh zhxSIu4LU?Jg=CK~BP&SuYGR((kVofV`xBq#fJ0)LtauLecx2XBq=zY4eb(M%8 z%u7ZfoFq+5P0EJJ(J}I)r0Y!Y%4ThGi~_VS!%{rs*t)80DMnw!3QN%gVPHvT!xv`i zdih?-&O(#LOqLU5p~NZR#o9X|e1nmi8$zm8^X)2|I~nO#L!de?i!;;r>J`0x>HCNG zsh6SkAY7yy6Ll>_AjTKK8N70ZKHoosrlQSSY%e@a!C%~H3&)i!boHQ0}ya`^P+{=rN@eG zI$##_Yw8HLG?8%h(#u2=3)HLL@T3NX1nD00BmhXUGUi?a)}&eb<~gD1n;`-iJSR!F z1aCojGXtB1e+KH@0NmL*hC1b4toY2MGNk-@08@5SBOrJMGnIP}qvS;F+!ocSmiR{a zBvd1u-}?$#2{#x6i5V>k`9w0#Gn0r`=_k#N3m19!a`YVpmf2JlU>=*Uy(raO$i%V7 zDrz$4p;xiPQwnz@e~8LFXW<}Bj2VOt&=+otjhZx=>Yrs!P(-kV86ZmgF+^np`|O=l zEy#$Wln`EGL#1V0R+*chq(+f-M${f*SC{_o%v3s-OJb^S*8gG<|7+M3JM9^PNbU$m zMVFmX&>QW! zU%%3iAghs6eQT>TSmrQyXjLdqp7Q29;fTAedjBgVi(YpC8%ftpoo6aO50_E`AAqtb zpyEX1r97PJ9+l6_Mr-)e(PW0I3cdrO!enG$N@}4opzAx#nB6Xab8|%&L^Dxqlg+ta zj3p}R=24IjUMtIa7{$}d7wFdSOr@Pr52ht?%hMh?^rx*%_~zF@`zb+bB+-lb#cg@C znSH?13rQd}*s2OhXc>#=pL4|+^rJs8>&<7YXxj~A_5!Ho)o{`{YWas14`qf zO%EZbhs2;B5yWrMy7(Ly_28k9p^-5>hGlOMDO*D@+yI-_8KRcR`D>Xb35>Alg2*qr zl3P%NB^gCpr!*8y>mw0e6#4S z?UEk1u}ApN*^w8R-1kDd8`SP$wj$EscUt4KaprIT$-3)%w?BvdWQ#ujAG1Y&r1}3$ zy#5!t`_Vnc{}+apu`_nD{_i1G)oNP*A$wnNB$$vvL@0lh*DVXlHbg56kSaqUu_F9Q z!~;}0B|_=xGx{V%rL>xxo1g!5soQLKsG`G5YDsozs^wm2ev*Dd`LQ zb$*+Xe@01>$Fvnw0^`7_Am4Fl%o+0#K8lhjt84m4<%_Wt1q1L}3lu%IBQ(oT%K(uY zMO&(zrl(${GBJRLawTlG?;SK7TESk%T;^XhMIcu{x(XPR%eLf+2zu zdT(dNy~N7q3$b#dm2w12xjFvxZc)l1E#(&AsZMX;F{8kQVr+veZwK)Hs~f^*{5M!Y zrvylmr-bynd6#8k2NuQlUj(NK(En?zm;hvh8JmM(2{RW&@bNG;a(oX}5F!=VVK&Z!-V@gi2!kq`@70PuRx>s*Z`XxiQu_yJsAahuz(%aq4 z^;bJ2{FA-6F4oL|wv^&MZUe&E1`Y50>f4Jjx^N3|rK z4q8nMl_YTRKrzZuvsuEt?0grNIK$AKREfVCQE7g2p=HXB{08$%t#8*eGW#FaVH%zWPSR* zdek?xfCjn^atJ<&`opQ0_-l^+SmbBtEj=~I34O7qp)ibZs%LXjQ5b>^8v1DB@Khcw zLWi3@D@i{)$GPeDz_RjTBukKB>I1c;0f`NGX}}o_RVTMz{y{L&!Ku%`9&Y~L5)}X& zhr)Waa9#uii4GN6gb36A&cgnU1Uy`(SR)@G94$1dN;UbDTA8Hc{##)x<$^_#C87xE zl9ndEq-0Lgpkn1NpIR>%E(otNy~-^;k~@QC~xDm-TsKkYGu8yoEe!3>qgGFQ2lkPDh-_ZfvlcsegnJmIL4tcO z+rr)i12Lf-u4E zNZ;rkn3!S@31y>!QG-1o=EB7GGAp-mnO&Xz+{zQ$k6=e8Mf**(uebkn5KeLRuQK@& zwS@npsL}mjM9ta6-I-3>z}C#g!0f*(Sh1RiyYeFH_oi_odZ?Jc0Wv}iFk_N*dSn}E zq~Qv15@gD^JUQ}_9*LEgN5`Wz`+qRe66xZ{Hlkc(HRM+#+H?Idwuj7Y~PzXOkVt7dVWWZ&F zdl?rKz5Z%`az=~iKleeH)gu{K3hTjlM$z2zK4N;C%=%485z5~#&UQ@1E&MTlg}|Adilbt~zT7_FmPysFDEH3!6`>f1E<c-pSd?>oj`j6Hger%7m-o=t_Pozky_u3+T7UVo4*VW3}v=dXX*J zl+-Y^7u$8$IXgD~G=KcmPU_#QoA?JL(rAAr(k>qjXZ|zqKbf@$50IbHgbGPSzqc<5 zeFcspM@ftYW0%sG%(bXxv^J6gtDki*Rnq*r1SZyElYKaxQZtFp)JD&HpBiIcLlg= z6ZWi7+Iw`izhr5`k|EAtSIWNPkd3%%W^Y~Vn8^w2qJ{0Xf&B+AN)(paE+%zqo zXI4Fam~Y<_uBZWr`c-laUc^$TC|DX%>iiF{6vA1eaouGDa$rm=c9+Y(F*F-EYJ6or zF`P{C3}2{Wkq@`E?A3KVytL4m;gm=J3Sq`jmfbNK#CLwIqZ2xJjI^Ns$ZDXFt*Sop zVCcP0Y~WpP7FJUF{KcQzGKRs9`NB72rHj*c;4;~UtpKyJ&<#amSWj;N7q}0Kwu{X2 zp}1=$4F2@Rek#P3c=+y9d;Ls*LPv&VlVJKPEXNx&aKb3M^YRn|$&{{qm#O+}GmA`rKhb4b-$E+!w zIN<16goT+!4*PrZ=8@^o#tt5uN1jcIw5C~^12J@^cT%|1d+d1KckAk{{*I%OMB_XgSW{$5ZgH7zLoY(%W-@naD;v#23l1TPH+Z!hW z31o7(LN>--)1AK{dQHI2)k!_)u&--dv@a$i`(^K;!t(0F9BMm$;8fS~?{URN^K`W) zBp1F);C9Ek0~+Pi=6shOKES#S6*0NF^PBoLDjh}(y{q>fT?yykA|2Y*2KCFA8|;qm zC8$Tyr>Ek$3eh8QM>k0HXF=GvQ%4F2i|qep#PK?aYG(B3P`cihAEX}>L<>arv9fc&rQdJ?Ydyk6izYIZkP{ z`qi*ZU!JQ6^>D%)uQ#LeFzlCcf zW-#%cKC)U-JxF#QZ9?zz#mHkfe!7C!&xzSlZ`^t!?;g?u(^^TFSw!y4!WA#Ru(dM7 zIb?-t7b!Ga|Yj*=gZd+>ecPYH>GVv+b6#T?V5OxCZQYp`e?2BNMu<~pQlWECJ_pje;?E@ z+7VBk=c}Itv?_QPumh5rP~^<~(pG=68Vw5DWohcoyUVZp17dtCO$SF9AYW?(|+>T)K^pzm33qJhloX-|$G`ySx zIhY;LF)d+@L!EeFB_8nV9W59narU+7_Y{B1rh9coxHOyYvG8E3jp92%VCTej@r@}< zNqb83v}{qS2Ivkq9B=$RX;KTM`e?B1^#06%E%n~XHd}o7W_I!2Z(1TwnPK%@JKx56 z`w9}RxE#<4k1%`Amn|`?Ey-+aIkpA%@gv)l5qsONaUsk_6osF->tDFa9mp@#e3d=N z3d5frVLOVnf20hz^g!xL@NfncoY@>OqH!GZF|m4;LFlK1$hu*3m+VoFmd13Bb-A=c z?6cMwp6ooZ_d7CeFZAcz{83$vz~*l62f-;b8Xx+Ipa9BtAiK3eb}|XFu92$_SlH5 zqp8}yY#(Ud=e(TgMK`zeGMSto|d%$^Q#}ancJ)@j0 zzY~;^8maoeZY)DJmuZ_z@Iq*)?ovDMD!Yv$)o%S5?55lf&~L|(_wu>7_3!_hMxbe> z5n4k1`nB>uQp5jme!TyB$(k5i*wBgoEJ9WecCPWQ1o>=X0e>zm}c3Su?6UI5E>w^9EYSYNhk8 z1-0g~#W2yYZTs!?QR38pHD6yhx?7sl+{YXC-Nza4Sv-yB&+DNkervjMdX%MRB~+y_ zRcf2E+JMytGevSWBsgLI#oo6v9Wf>s@rD9Ym30+65HF)8k$!V2h7`9<6ct?ZQrLxR z>QrS{Kn>-X!2d! z-%_)(mZKN4#FU$;xrvXyCh{2JlGh8KBNv@0c@_-hYH69Ty*D2{;s}R!q}K$BCNM%| zjIB^m(V)lk*k%5h0}IP}7Gt_&sgYv#>1UMwyMexAYBaV2iaAd!|JaBfi)Zaa1W2oM z$}0kg-$sOhY0hLi1D|xlHxB4c@k@#{Yf5)*bSg!U^9h(_hc3-yqZy>Iwse6l^5%Hw z2YTEprFalsVzZJoHl%1#&%URbqC3Ty@(EjmsDE{6O_BTDEc z)wHQryi|UVi@i3guX7J)MjRt~{-r3;dXTxSLT00Y~fdj1{Y*;Yy4AQ{2_jx6FaUN{clkoi_*C4ci%& zs*^F?Y%E?yRJ{`okIGw}@yw}3ykJBvX6&Jrg1b%|&eY0RpwyDE9p&Lkt&d&AW)Q6){_g8{Z<$|R|Yo|Sp0Fx)2v;F;X)*Y z#x$ZWB3^7MqW7LDa@S0Cs{BE9vRt99Z`?AO9j)WlI)N@`$4QKgP(djqt??7?t-b53 znwL`RXKD(@2@wY2CgM?(GN<8CjFRRM}_TgiRK|6jsnb6Xfh^Cm9laS-l~PMd$XP<0HRG)agt^ygPY9QR{3Tc3=@Y zQ?!W+E{w$fB-$onq^e1UiCU;B(EXf!xlr@$B@iMrY)vUUcg;uEeY{wA5vNobJ?uKN zV)#|w@0xB1vr+Ce8E18e=nMq-CSxPd#$+$>Q6%-N!bvt#UHS`;HNDx-hhJPwJ{+>x z6xyoW2yoKyf_|F=KoXrO!K!eal1ZjbC4pY>FEC6(*uQ)T1i9AWrOzOd3T{1i*z(*{ z@17-ppIJBP=N7j82p`2pDeQn)7cqc#4Jxs748&v>3#8xkxS@H|*q{%*g8 zpBR(1-+b9~$E2P?9=Yb#LfSLQar~wiml&3u*gJ*QJ2pxof;?|QUCgJvlE`i-Q*243 zN~jg+xSk^4pgf^bAe|Xj5u$E{H zzgMD{YsW*PQL#zeQ%JvE${Il6{saTt=A$67}(%Fv$o>TFJxPE z5uu%UG)(RNz5st2b)v(kmqyz9PBlt}hk>he`3vvc_cKX*iWQA=`z2=@=ad5kf9NTN zH^kHy>{8e~zvqEx1AdqolbU%N14TnWYeCyv5+%JpB&=v7 zox^}pijGGdM2kk$zg^i{8`qEj-0$SV!!ti%8x2Ls&l~|)@z{-W+Ni z{eaJqs&{cqE*v5v+e<~8jw2qXqvg>k)Rq}<7)$E8f}v%>%!CMkvC`GF@WXXLa;8B?ps_^N zzNl=Xg-ukLM^vGXqN{fZ@)vK#butCy>$DD|5uTt@*c$2LN9`j^@_50c&FRJsj=u`# zxPT}cD=!1R7b!`KY^cvba?Sgi77i*#{OT#E^Q9!dJP&Cz>FYs#s2!!^%%SCw41Ioc z_`|^u{x4Odznr=X6`pLjK4>4Ss=0+P4P=km2dEal+Oh>`WA?to18wHAh2GEaSjB@jn+%Ju0AC896RoJ%n{WM|rt2SrlerK?6(Qz> z(HRV#TzZW=`44eP;wlaoZi&EAa)z&@H(AXi70jZ29BhBU=M+}zQLdE7`HB!tpmiemb1<#WtPNRQZ zbd6D$Dl}wyJl#+)IEm&4Oj^o`vC$r;31{vG7>!r7lRySFhmg9ZdvVXmN(=rh|B8 zegF4#J7tSfRj@ff;=9*&cuGd(sjxzOEIhzqYNKgpS z>afeJHBx5OfXvT-Db#TXT{DlvyLlFGUXGXO{>ktP2m5#6rTFg){gk7N#O<|vhE zX0ob!FTJ<9!GokP>VP>0t2^E{4U!S9I}sUt|<_G+y zymCdFH%I0YhXF+e%RI*3vAXG${-*!NmWTvlgqD*gs$nY<)6YE;O?R1gw{xtt7YHzw zR?Cu0?U1UC*R}VBsTb7`$JARxV2z2O+hknUg!*3PJZTb(-$obC%qlIt%MRwTcYrL2 zX*A9hfp?OUeV=t+T&l6iQCmtD`4qtX`xrv?<+i}rG?WsVKpXyePpc+bge)*I<S3*ioKDVXp*9U6GdJNpnOs{Z`mt-t- z2=XF~#H2#K&!`TWD|9l~q#<{A)CE_oWD7?h;P6azeRrIo3ApbI6t}NiP$X4mQpsK_ z(8G03Mq>eRzu>_sliq~pka~n(pjkGoCshp_aOSsod9Chg_WSa$qR@2eg(UxiS43fy zVz>oW4J%3My}w)4Jse~2DpKQwg2c1U^4g|{1a5Im|8WtPAGeR`?o~u-aj6km*^YB7 zRLa=^w?>DPOfMi2N$SlaDw7IV(Xup015I@e=lD4mi?3vUp)^{R{euK& zkK|q8)*@60PU1t4GVTJMtUxiC;h333rI=(Y%}iBa@uQ1prVG&6I? zh1WBFdCeY&oh=RXh?s45h{qpGa~sC&djpuO1eQ6r^tL0L1dE;&fn8={ z6*?gv8J@ozXQLDYh#PE^V+2wQd&B- zWBCT#6O_15DUn;%X9M3C{IULyhK zRY8%rGa)ydXKa8R+E7TffEQM{75>d#&idgXuL(cvZg_s&o%gX-CVDcy%?e-O(;?i0 zZ#^4~%^pZabuB1jP5etv2!1X{Zrx-gu9E424~u2&QDn?JMz|sV3>++U$S>Dc$Aasz z5ZL6e)J(zqYCzA>S6U>2LQb-gYw9(%b3qmIVT79x7&l+mM&2Y~ErK*z>yNs*9?}6X z1Ot8rr1}#|uuU!AxZO54DaDXM1x>ko1H|RWo5OkTj+-4+bQW3GU8JT8z?`t(fbuW0EuJL1rK*+;(RN_?%#R)w!F^Z{Qv8NJ^}_MAF2zX1Ue4 z4T0u4T`wYMv#STT$q4yYuJL`Q;)NCA`(%q;9xrET8Xc^TM6_hLk1RHt^?$9C4IL)X zptZ|YY?W;?Y1pJ`^t2D{_Y-JPRBj0*KZx#y0MQoW$XOrCJO#RHW$Im?fh>{YF ztg}-N(@X|WY`mSan7f$d+3t;*=Gpr+iuz@TIPi~G<(sy}zZU3QkI9BrGK>!mEzQjF z>aywxRsvhm1^&h!0e(hT;*6hZZda=OZNSFK>r825DdJ z&;f@g*G*0QIM;yyS0;G|(t(Pm*oY&xX?LI*K=O%ei9ZYV7N9ieO)l7eLYyU0{(@1q zKd3NmJge6gA$|0Sa`a5zmo2NXe)QP1N)mxrX!!tMtDNu^!c!>GoqwsfO#TTe0z^J^ zE#R5@ca3375`Lb@M6(ZkCO<{j?)fgqW40xAtWn@ zi~?DMCWkkF62uzw0YzLZqFE-YbBR$!LRuQw@KY38vh1(vm-N^U3(hr8{7Qi~qu1Rf z-V)6#Te%CD!~?LDoaKz8(KFF$w?b?78eglt+@{$6tvk%usr(!I@xw3<8y$usHQC^$ zb2EUhyWPYl%Qxs)Z=rpDRidx&AGbAZf-O{l8uVhexEBYkIER3Bzd^bck~=d!dhsKPu>-`4-=u1FDmWMxU4B1fZ6gRfZ z#m*xa#}M15?U4a~ddi?DC$k#cP=>$2VWj;vEEA4ku+?st5E#xTlCqwLPzLzf;znB` zlK^j;Yc?Qzds+M?^d4e!jOaK2R0T<)QpR()dXs+T34P5i)@qEe%h~0Px~GdmhKO}e z7rh#JBa$Xn#4NS95k4LnL`@<*Lgj4$8$QbMC|0sjlF^WfOB;c_e9()f(QIR&af_~O z3|YQj=;MqSz3bGcxCZ2&3gnBgB+HdY+)f!(GX+ zYbu5#G?A0pZqAlGR`QB`6~!Z4dE<>(-RLWzY`&28VLgj>D?_kl+?360dZ?5qIS2@U zXirrfy+=k1q@z8+?1W)wmhJ=)(UDPAzf?uuc#XVwOFoE3&@#hlwePU@M-jx%3+n4Enp zTK1Y{fJqCy@0T{D1NI7-pr|RUYU;%xARDQXpyqt8@ciWAIw2_o-?V0j0RA&}$V6vi zdTeZ)PhdSK-RiiBVD8Ll(st1D7m-Y|G#dhsKb}ob!v^Gdh1|_-abw(i%dn#i(%(yr z=iG#z330#tujtL0Y^0w^b7KyJ?1aepnEDdo)VPA!Y0m@)W&$Tx=7?tAO9chPXTXOe#`IAN%f1o5#$rfT$NWiqAS+Xtk^6AW zTg_P;`K;)iWH+8x$wP1t+5L9Y0(IynAY+3MaY;HUPLw2Kkm5LyZ}Le;>ZVrjNE#++ zm@Lgt($B!{=yyVJ@nmeAXXvEi7EHw!#e^#}SMZmAUlnKEVOc)i##r9tEnXh?MlFTe zrqQphDj!1|U*ed|J3||{`qZu;94fW{aMUiR?SOppsJ}wAT<1o$uDny&c1;tc5on9C z?Rugzo%z3N$NU|e&2PqD+&{J=(gJiOR#P+EK)jRzST~A5P*uH}%LA+BiRC=0rtjU~ zZX#(s>LFY|$ZfHNoDSB5t!?u(yBZfB(kq!(ts!*$#W&P)*)r}84afdh4F`N^L{2+6$=bKzh z*n;0v8@fY>U!R?JVth?jvv*hQcrsc~pPO#72T~1)B~^{UE^FgCA_8^#IT&sbFk&Fo zhaW#e_LGnj@Sd?Ry(l6Kl27p2%JGRt-pF9~kTZg0b}M=M**|e0Z_(MNwdY{oSgEh5 z%JQn|kFh~)zjLW>Iv}%7t=4`ktcX?5M4N1a>R80XPrDK`ChxfZ#a3CJG{5DFW^5?T zpp3=T?uowL=Q!)~QMa7fVZ@yn*=7C+fP4P9snN>-gWX5{ApXW|V#+9gp>W}VZ%ON$ z?h#2{05OPrS%;>jJvN>-zY~qr2q}6sq4ZIf99Xp5v&5PvF}b0x?31K~LwKRrH|(&9sKCauZ*+?F@e#hydeUbAIT&=<;L1GR3}&uO0Ej%E8N>M#t4 za{>LKM|g6W{4o1D&^wtbox_a%dwqN@&L^7)`6ZRNSXBL@9Ge_@=nc!lSZ>zjRqEfV zIYZ8-)zfcYBx85>^dLJpR69DX;Z9SeGx-)7sIsYp+j`VTHt$&e59;*oD@{x4Zu!Ws#p z?-Rj@Wb^k#`ut4U>b$`1#1dOkxw^r`9+cD&>JoBxcE#XjhlO1)JLDl7?|7;3M~6UvXKfsFj^xtQtF{X$H4J-kTq>h-5^4+5;Y*>;Tq6 zrB^!Pc4T(E)drsDqm);Bl3L_jFh6Fm3au%0zQ4ELD;N5OKrLD&V zxrdm$zF{}DO->}vQ&ip;HI3J$et&jUo_1Bk#uA>iLuymUfZMgLDRg`5r}sE&;}^!C zm*QGz(YyGH%GByCyjAaghQxN47jl-e1=h`Lv&)vt@UC`7;PIxn_Un~2m--f#t1`|s znG<)78$wn!f^v4HK4MiD=Ct=d#dmsCQ^eT2G;+h;ca0NqmVXc{j2FaoUnytxhTn0) zJk=Y~++nJysNzp7)#6UddQ6)3@|gZmGXT55+km-?sFtWA zA~DItq>R_9BI)Mb($k!c_k>})(L z(3n;EQ?>>H8KkP!O$pS)fG;FQ829IVJ$JLVm4D$J85C7fK$zu;U@w&|9BoYF*^87- zNrv(>`RHROEowN*WTM@jpX~Hl2h+AHsENmWEag=YjZ2UP=QN+UI&7dbMb#F* zX?Yoat$HZ3qOabpHyvkr*0BXr_p?OY;w=5?&~kYTRHIO+`Z&sfrAjAMBND}uvGhe# z332--nF%MUi8u^KGCK1P#t$6#mp1CD@v-r(g(o>l*p0lUL^U6a7mno@p0l`?Hp%v` z37WGq0G05k<2`ezkc5%BSe<+QOjT4>I3a*ivu!_|D1IxMnuJQjv!Ov`3Y@2vQ6WPO$8t`;H0>c0Wr%G#SOPNzeoC($=$r zxVG;Dto5}!OCh{b+-}7|z497;dy5b^U2b%{OFf&{`s{-oox-o%=Cb6t+Q={>Ct)z3 z6(ioUBcQYXz=h~=gkzL>2t0v74Sr--YMLWkh3WlM7#^Rhf1cbjc~Tw-gD*O5*%GI6 zwE1MO2ySWch3GB}orA%%?OcI8f;!LiGWpgn9G=sRCn8y)lKN=Iw(QS)M6Q4F2jA~3 zwz7|JK(fZ;UGS1`J+ffYh$tAG7njLRNBI8TW^eGN3d<{a1CNd9={0hTXv1U_*k>> z?5ju8y*ll4cJ*hDb~`=qrL^;IpW;n8w?e<*IU{~gac5mSPVY@#<-hPe18wbT4LrA( zvt4QRPF~%&4tk=5d>^R}TD#<7*pqf2wkB;q zSsXZXrN3|wm|eT8y$DSAf5aZse+3`Aeia{EW8Cw6kKZGDAFYmNr>B0TrVeYT0l!e$ zYk#d}3~Z;=-(>uNDN#SP>yx@!Wd`kWzjd@mc+-+^Y46dj7_H?kwn`IT!4Da}3pS4Q z$Mn03B=2Dpb-jAbC#DsnUNg@Oy{a9y`p`!&16et3nf>DI>CPsVycb(bm(S&@3A-KS znvxgHN7!Mp%)D~Hinbw8?+ZDkpL_bI6|2uT9O&z?Lgzb2WTO?Vb0)*dy9GZrldA;L ztc*+7xlqrf61ZlBa@{04rHTljkI!&1i;LP>OPvp;7Xw$q)n?6Gon`@R6Tq)mb%le@gSdxV7|V3h+(DO--@m zw(#z^?awT09`I^tmG{mVkAX^q(=d(7?%y9!rS07E((fr=rSnDFxV9$r&>;Gte{zD$Iv($AkwYHM|QL@_+)Bm^lr%?XV4EYC0Fz?Z5+h}U` zAzD6!#k}cNfruz~E29`vKxtVzqb=<;Y_K+Ik(#OCNln0a8w|gb5Ag=EmuV^?1VTVN zk-=I2oW<@ub+w$G-TkY@e;riv?*??d*9@XNcqkNyeii zlr{9qo(TCd&N;A(6?%jr!Rhrkyk1pXZ}?Odgw$`>pu5qlp??%xp`Zd=4+d)8LS#+D zoOizkZheLy6-q=+f&!iL+J`{|SC1*7mf&pX4`l}{Dn+*_5iN1>W9O{aDR3|_!PV75 z9J^#%<)b!jEHPBVd+W^sL-}0_4UGa)TnXZ7A~0?AR_NbKpXj!gnS+)=7ivhM6n_=C zQ2v_c-{Td@Hp~ja7w@c^O!b>))XtK?&y%CZ_M*Zwme3nuC7HC*B)agNI0tNTI23P4 z^W$0D(_FrpFq+fox9}R3Kay&i3BxNOvev5n^WVL4k;L;zz$A4QeQJ#^X-S1~AkPvn zufH??D(mDkyAOrhCr&JDrgue21Zf#)$d0-ufMh8tq8DjU7|6ERLbm_hgwf`k7&S_7NSBhBpR<)zB$sp&~&ZHIev+IlgJbn&UO1D zS5wRSE%k|ZG+XJo#*Fnoay2f=xTo5dBwm%6IQ!+AYXd}dut+qrL z4ij;iZBJM@!i8bZ2(RuU;A)84KAOj3Mez|!fq(V$O_v*Kd2&~DdFOK|ro2~%JUi=B zI<<%ggB8NdnfORya|mf2owP1g)>b82SyjIX@p1~0jcfgCRHC)krC^yQ0*-ssJ#b^( z1f;h-GLKh>>O}-#`3!mZkqF1R>-6kX(q%~O{QE$TRb|FZD4d37EwMEo zYpmQ=xQxN+^0h7tH3BOBhXfsvida@gj7F;zHE8D$zxy37Z}IvMxfhv1ZEh6gDavZK z1YmXLX8n39OAOai%vajXR|5=%8Z1{`jcR_dz##{EB_@hHP791Ur0L=+ar?3eo>ExD z%#=l9s@G+>0A177OrZ3dR7|$o{Gen1CIC~8T#ncsEDZJ)4|f&=(+8C9{9=#vTGIF) z#;&M@Ml=c39=%UH`wAsV#(F`0`s(N6B_p48*(&;gQ-j$GUyHr27wSr=CeFgBi z3ypGQbcdf5--U2{kUJ!^G7(0dr1J4gL#8Mf!Hlo;)0wnC*~3dOEsy`jpn5fBU5J1@ zgnEt0&g99|zf429iy>+bf(O0qpw58C`#P~4`1jR(NaK_l&&Phvibc;@zWZ_bB>^G zpJ!l)XPQQjr>ZktkjI#}Ntt<&*rBokxo|ZUG{((z6|n^?)ZPk7`+d3%4!U*aYCckT zQ9{(~9o)l7Vv(!GnJ6T66yprtAwn8>ZZDQQn19k3N5B>EZ2F?uciC+N0^Nb%J(L=x z@2qU$Vt{WQ^QcD>TxAGRdT|czrjR0@{;z&zre~sWGSoHa)-Xcm}Apc$9SDPG43+UJab3I8@)$H4sKFn&Us9Qf@NSaNBd;_o0zW*s_j*BeKeFL$|Rg<0}s(n zilDg|z1n2bxf&$oikR=T__!gSN%IgxnZ(#MG#4!eRTzcgb&uk^mp`deTY!8J;EVI4kro&#__-wb8mTCos51p+lH0X_?ADsfl z<6BwJa@gnem3^d1GDZB1sW0P;@K9`OpjK79*5W2^AG@TPsC`%(+JaSTKhnn!vct_e z7s@X1_KUQuaJP@SEXkoAdDXN9kk(W066MLBfyp4c$hbOXdIk+5itQ!8(|ofYp*&&Q zcwu$r!SxA#uoezPH`@4bA{JU$f&Y#Zh)zOu?0)!NN4@v%8uH^S;&4LmzQy1*tOtJw zo-xMoXx&lOghi9c5<3H?Vt{Qr#mXQp2Kg9&-yQ2KV5a7moiFd;bLSI3esW-&2Mb`X z2p{636+JVM)Oa>d__MGF{#H4|zFyc+ZLQr)E}mF*sbup7+qXNBVelc;X5-Hn-gn6^ zJ_I)Ufa;FO3q5PFz(lw}r_|lMv9EIHXbI1i=;$})jWyt|4(G7f^0tL}h)6#IF_!6@ z;3ga4VlXce;S2gZf44gvAYE@b2)mge_ub7f3xgu8?=;K!QVjG>Hb^@eerfx7%Th1U zECM@yw+u=vUYh5k%esZ|qDo&{yxf#vemOgwnqV5jHP;8~giGPKaC&o1zh`SC>czLF z0e3ySUq>w~D?6gT9n1HY1H#%)+X}@Oe$pnH70>m&QcEDfGHP$U%B(OHiLS|;zul%+ zopjz@K#A&?kU|=xEz&CElN;)r4oOP1`4Xu`HF8fZ+i3dAtrj|boE2O*` zLF|OR$wuU>RTyX>%nJFV?mHB(hviY6JG%@V$SA@*1P5p(dlkO2x6hNAR^~V|GzQ~j zNw|&j{96o&1D^7K94@$d^s^%A3J9$0TV3}+&n9}GuEv`IqXkJM=&G5u^s`E~&9mK~ z8(l_?#9HaZ6PpNY7%JFyH_gxCG?gbsY)FkNPe<}eGbi>tH4i_qP0kVCTffjds?~IM zbX8CK1a>Dw=TQx<_@lk&S6S+!@wN^r$GtiEOy3r4WAAvo)M{mH=UtzJW~yvDv5HsU z>BdES>0U8TjMmuGegO) ziKQ40m%)N)&3N3rMflx*?N&{BOsYu3NarMUjCNVE>@^#J4kAIw{sMd|;44m%}&xiz| z4y!73)l71=q?C)2cs3=7;&@2aBe*<=wl3aEBw0NEE@|KDEKLw67!>`H@LHx|N0DJC zvOD_C*Tl+*(u@NKkql>^Fy@(Yv+@+RvXmk@>Nj)(p$x-~bty&?kMkMT>*y_%3->yi zl_zp~iN&olU^yI1KtuuWpQ8`B*&`MK?$3jdd|LC^5_phyYZkuVb5NNfWp#(=yUu;S zBZ%w7(uQiedALDcZr??J-to_+7ze zFxsKPj%F`Hc}Ss#_UFn;f>KJlv+#k>O@+v6*E+TMFJJVC3{@dqGzSKqXG%Qe?d9k( z3{symHM9oB!+cBm8Z+BF#Xl)=B+nsAENT&SW8ZMcCfVEl zNp-r_LUM`d6)|LT%Qis$B?5<5$*HS)t)ZtXY?akMrywrlge@Hv-=z9G);X{)bv3wL zj468>qI|tNsl`lYv zwA&Qe@bE6Y>6tq4*Uo;oP)n3E%~5kDm(pvi!Dr>MY*W`0&e-y{O;m8aiqqOU?vXa{ zHJDde;s;g7Gl@#z;s^1D4=SdX8mj~)=t6P=4SG$HH&P<*`E(vvWct)T8h^f2%jwL4=mUud7~!cN$^OiqxQl^VMz$g3VMIME3DTPik=zAV zGuNx@JL48}(+<{1c*$J>?oTtP2S{s$I9yM)C>1aLKQbO3X)l6^x1of4$e;tgT(`&K z3Zl~mUy?#7_ zyczGm;|8`KoTli(iFI?*oVFX^iVW&W>t0$^d9%b*#eWIu>(Cx~X9Dk0f6+n{bbraC z)s_p~(3xdDZ5Q9HH9~qZNZowj6Sgo(*|@UsiKTfUuken0QMR&_p`>idcO`lgH_tKA zOfgJfQ^C7XR*d=ew>YG z$}0?dK`6}7boiQK0XOdYpeU>JIc7KzbutPLvHr+jn;Ip(f6vc>{-)vq{&aV`JIx0a7DnW*7&k$>m#!>A?vS}Q zIdYtV=lyDIHz?6Bv7{ojj0~n&*?G>Qm6Rt0t`#4qZunFReAm+@j#)fA{ift*&1L1J z#SM{X^p6<4L}&VE`VI;5MUvs$Lcrf$Q(||7#VZmj!K||V%FmoOnCUM+7c0+(1k_L| z$aD<8@hjRF)~LBk3d5Kc3NLl~3*els~(|k9dD}^5{QC7j^*$4Z&*y zlBa-20>3D_rt&3qm>n5xh9b8<0n}bN!q00ttk9uO9-bWqQCycU)GKh=T|v%S$70|fE`z< zR(>Yd<&&1i^|uxRueOLOBQF|F+eC<&y+v|+)SK!nodm0miAQ2KWz+of2~2mT!3)hB zSY|uf#iIUeweK9$A^aE4f4Vn+DPk`Q;eP$1`SU* aT+-JAa|ha1%(buttYzmB#y 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

(n=YV;cH9ld}{}Wlp-MrviJs6 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


N>qHqDp>iTyF=QE}bB7dY^0GVm2 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 P5PKX3%ds_3EhGO2$9!FW literal 0 HcmV?d00001 diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index 5f5f7351..6995b1d1 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -55,7 +55,6 @@ permissions: description: Allows the checking for updates. default: false - asedit.ignoreProtection.towny: description: Allows user to ignore Towny's Protection Limitations. default: false @@ -75,10 +74,13 @@ permissions: description: Allows user to ignore GriefDefender's Protection Limitations. default: false asedit.ignoreProtection.lands: - description: Allows user to ignore Lands' Protection Limitations. + description: Allows user to ignore Lands Protection Limitations. default: false asedit.ignoreProtection.bentobox: - description: Allows user to ignore Bentobox' Protection Limitations. + description: Allows user to ignore Bentobox Protection Limitations. + default: false + asedit.ignoreProtection.residence: + description: Allows user to ignore Residence Protection Limitations. default: false asedit.ignoreProtection.*: @@ -93,6 +95,7 @@ permissions: asedit.ignoreProtection.griefDefender: true asedit.ignoreProtection.lands: true asedit.ignoreProtection.bentobox: true + asedit.ignoreProtection.residence: true asedit.permpack.dontIgnoreProtections: default: true @@ -105,6 +108,7 @@ permissions: asedit.ignoreProtection.griefDefender: false asedit.ignoreProtection.lands: false asedit.ignoreProtection.bentobox: false + asedit.ignoreProtection.residence: false asedit.permpack.basic: default: true From a8a8dce4909871cdaac763856068987c88d6815e Mon Sep 17 00:00:00 2001 From: Wolfieheart Date: Wed, 15 Mar 2023 19:03:29 +0100 Subject: [PATCH 214/369] [CORE] Fix Maven Error while compliling - Change from projectBaseDir to pomXMLBaseDir Signed-off-by: Wolfieheart --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index a14fc48f..e28e295e 100644 --- a/pom.xml +++ b/pom.xml @@ -166,7 +166,7 @@ Residence 5.1.1.1 system - ${project.basedir}/src/main/resources/Residence5.1.1.1.jar + ${pom.basedir}/src/main/resources/Residence5.1.1.1.jar From 24bf19e1b2aadc7e96c0959992b6ebacdb85561f Mon Sep 17 00:00:00 2001 From: Wolfieheart Date: Wed, 15 Mar 2023 20:39:42 +0100 Subject: [PATCH 215/369] [CORE] Fix BentoBoxProtection after Testing Signed-off-by: Wolfieheart --- pom.xml | 4 ---- .../armorstandeditor/PlayerEditorManager.java | 12 +++++++++--- .../protections/BentoBoxProtection.java | 9 ++++----- 3 files changed, 13 insertions(+), 12 deletions(-) diff --git a/pom.xml b/pom.xml index e28e295e..41bf126b 100644 --- a/pom.xml +++ b/pom.xml @@ -172,7 +172,6 @@ - org.codehaus.mojo build-helper-maven-plugin @@ -196,7 +195,6 @@ - org.apache.maven.plugins maven-compiler-plugin @@ -206,7 +204,6 @@ 1.8 - org.apache.maven.plugins maven-shade-plugin @@ -228,7 +225,6 @@ - org.apache.maven.plugins maven-release-plugin diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditorManager.java b/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditorManager.java index 1a746b08..a4b049b3 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditorManager.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditorManager.java @@ -61,9 +61,15 @@ public class PlayerEditorManager implements Listener { // Instantiate protections used to determine whether a player may edit an armor stand or item frame //NOTE: GriefPreventionProtection is Depreciated as of v1.19.3-40 private final List protections = ImmutableList.of( - new GriefDefenderProtection(), new GriefPreventionProtection(), new LandsProtection(), - new PlotSquaredProtection(), new SkyblockProtection(), new TownyProtection(), new WorldGuardProtection(), - new BentoBoxProtection(), new ResidenceProtection()); + new GriefDefenderProtection(), + new GriefPreventionProtection(), + new LandsProtection(), + new PlotSquaredProtection(), + new SkyblockProtection(), + new TownyProtection(), + new WorldGuardProtection(), + new BentoBoxProtection(), + new ResidenceProtection()); PlayerEditorManager( ArmorStandEditorPlugin plugin) { this.plugin = plugin; diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/protections/BentoBoxProtection.java b/src/main/java/io/github/rypofalem/armorstandeditor/protections/BentoBoxProtection.java index ab982c54..490c4d84 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/protections/BentoBoxProtection.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/protections/BentoBoxProtection.java @@ -23,14 +23,13 @@ public BentoBoxProtection() { @Override public boolean checkPermission(Block block, Player player) { + if(!bentoEnabled || player.isOp() || + player.hasPermission("asedit.ignoreProtection.bentobox") || + player.hasPermission("bentobox.admin")) return true; //Get the Bento Instance BentoBox myBento = BentoBox.getInstance(); - - if(!bentoEnabled || player.isOp() || - player.hasPermission("asedit.ignoreProtection.bentobox") || - player.hasPermission("bentobox.admin") || - myBento == null ) return true; + if( myBento == null ) return true; //Get the Various Managers for Bentobox IslandsManager islandsManager = myBento.getIslandsManager(); From c5fb71a1dd6b402b9a2f71e75baad0507523eab3 Mon Sep 17 00:00:00 2001 From: Wolfieheart Date: Wed, 15 Mar 2023 21:04:59 +0100 Subject: [PATCH 216/369] [CORE] Add new Metrics and Fix Polish Language Support #Sorry Signed-off-by: Wolfieheart --- .../ArmorStandEditorPlugin.java | 50 ++++++++++--------- 1 file changed, 26 insertions(+), 24 deletions(-) diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/ArmorStandEditorPlugin.java b/src/main/java/io/github/rypofalem/armorstandeditor/ArmorStandEditorPlugin.java index dee54abb..f6bc254e 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/ArmorStandEditorPlugin.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/ArmorStandEditorPlugin.java @@ -43,7 +43,7 @@ public class ArmorStandEditorPlugin extends JavaPlugin{ - //!!! DO NOT REMOVE THESE UNDER ANY CIRCUMSTANCES !!! + //!!! DO NOT REMOVE THESE UNDER ANY CIRCUMSTANCES - Required for BStats and !!! public static final int SPIGOT_RESOURCE_ID = 94503; //Used for Update Checker private static final int PLUGIN_ID = 12668; //Used for BStats Metrics @@ -95,7 +95,7 @@ public class ArmorStandEditorPlugin extends JavaPlugin{ public Team team; String lockedTeam = "ASLocked"; - private static ArmorStandEditorPlugin plugin; + private static ArmorStandEditorPlugin plugin; public ArmorStandEditorPlugin(){ instance = this; @@ -132,7 +132,6 @@ public void onEnable() { nmsVersion.startsWith("v1_16") || nmsVersion.startsWith("v1_17") || nmsVersion.startsWith("v1_18") ){ - //Revert NMS Check for any 1.19 Version getLogger().log(Level.WARNING,"Minecraft Version: {0} is supported, but not latest.",nmsVersion); getLogger().log(Level.WARNING, "ArmorStandEditor will still work on your current version. Loading Continuing."); } else { @@ -144,14 +143,13 @@ public void onEnable() { //If Paper and Spigot are both FALSE - Disable the plugin if (!hasPaper && !hasSpigot){ - getLogger().severe("This plugin requires either Paper, Spigot or one of its forks to run"); + getLogger().severe("This plugin requires either Paper, Spigot or one of its forks to run. This is not an error, please do not report this!"); getServer().getPluginManager().disablePlugin(this); getLogger().info(SEPARATOR_FIELD); return; } else { if (hasSpigot) { getLogger().log(Level.INFO,"SpigotMC: {0}",hasSpigot); - //getLogger().info("SpigotMC: " + hasSpigot); } else { getLogger().log(Level.INFO,"PaperMC: {0}",hasPaper); } @@ -163,17 +161,18 @@ public void onEnable() { //saveResource doesn't accept File.separator on Windows, need to hardcode unix separator "/" instead updateConfig("", "config.yml"); - updateConfig(languageFolderLocation, "test_NA.yml"); - updateConfig(languageFolderLocation, "nl_NL.yml"); - updateConfig(languageFolderLocation, "uk_UA.yml"); - updateConfig(languageFolderLocation, "ru_RU.yml"); - updateConfig(languageFolderLocation, "zh_CN.yml"); - updateConfig(languageFolderLocation, "fr_FR.yml"); - updateConfig(languageFolderLocation, "ro_RO.yml"); - updateConfig(languageFolderLocation, "ja_JP.yml"); updateConfig(languageFolderLocation, "de_DE.yml"); updateConfig(languageFolderLocation, "es_ES.yml"); + updateConfig(languageFolderLocation, "fr_FR.yml"); + updateConfig(languageFolderLocation, "ja_JP.yml"); + updateConfig(languageFolderLocation, "nl_NL.yml"); + updateConfig(languageFolderLocation, "pl_PL.yml"); updateConfig(languageFolderLocation, "pt_BR.yml"); + updateConfig(languageFolderLocation, "ro_RO.yml"); + updateConfig(languageFolderLocation, "ru_RU.yml"); + updateConfig(languageFolderLocation, "test_NA.yml"); + updateConfig(languageFolderLocation, "uk_UA.yml"); + updateConfig(languageFolderLocation, "zh_CN.yml"); //English is the default language and needs to be unaltered to so that there is always a backup message string saveResource("lang/en_US.yml", true); @@ -354,15 +353,6 @@ public boolean getHasSpigot(){ } } - public boolean getArmorStandVisibility(){ - return getConfig().getBoolean("armorStandVisibility"); - } - - public boolean getItemFrameVisibility(){ - return getConfig().getBoolean("invisibleItemFrames"); - } - - public boolean getHasPaper(){ try { Class.forName("com.destroystokyo.paper.PaperConfig"); @@ -373,6 +363,15 @@ public boolean getHasPaper(){ return false; } } + + public boolean getArmorStandVisibility(){ + return getConfig().getBoolean("armorStandVisibility"); + } + + public boolean getItemFrameVisibility(){ + return getConfig().getBoolean("invisibleItemFrames"); + } + public Language getLang(){ return lang; } @@ -458,8 +457,8 @@ private void getMetrics(){ //Send Messages to ActionBar metrics.addCustomChart(new SimplePie("action_bar_messages", () -> getConfig().getString("sendMessagesToActionBar"))); - //Debug Mode Enabled? - metrics.addCustomChart(new SimplePie("uses_debug_mode", () -> getConfig().getString("debug"))); + //Check for Sneaking + metrics.addCustomChart(new SimplePie("require_sneaking", () -> getConfig().getString("requireSneaking"))); //Language is used metrics.addCustomChart(new DrilldownPie("language_used", () -> { @@ -508,6 +507,9 @@ private void getMetrics(){ //Add tracking to see who is using Custom Naming in BStats metrics.addCustomChart(new SimplePie("custom_toolname_enabled", () -> getConfig().getString("requireToolName"))); + metrics.addCustomChart(new SimplePie("using_the_update_checker", () -> getConfig().getString("runTheUpdateChecker"))); + metrics.addCustomChart(new SimplePie("op_updates", () -> getConfig().getString("opUpdateNotification"))); + } From 90444d05385ae2ca5aab018cf9223237c1cd5e1c Mon Sep 17 00:00:00 2001 From: Wolfieheart Date: Fri, 17 Mar 2023 21:37:19 +0100 Subject: [PATCH 217/369] [CORE] Add in check-interval for Update Checker Signed-off-by: Wolfieheart --- .../armorstandeditor/ArmorStandEditorPlugin.java | 12 ++++++++---- src/main/resources/config.yml | 5 ++++- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/ArmorStandEditorPlugin.java b/src/main/java/io/github/rypofalem/armorstandeditor/ArmorStandEditorPlugin.java index f6bc254e..40df967b 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/ArmorStandEditorPlugin.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/ArmorStandEditorPlugin.java @@ -66,7 +66,8 @@ public class ArmorStandEditorPlugin extends JavaPlugin{ //Output for Updates boolean opUpdateNotification = false; boolean runTheUpdateChecker = false; - + double updateCheckerInterval; + //Edit Tool Information Material editTool; String toolType; @@ -239,14 +240,17 @@ public void onEnable() { //Add Ability to check for UpdatePerms that Notify Ops - https://github.com/Wolfieheart/ArmorStandEditor/issues/86 opUpdateNotification = getConfig().getBoolean("opUpdateNotification", true); + updateCheckerInterval = getConfig().getDouble("updateCheckerInterval", 24); //Run UpdateChecker - Reports out to Console on Startup ONLY! if(runTheUpdateChecker) { - if (opUpdateNotification) { + + if(opUpdateNotification){ runUpdateCheckerWithOPNotifyOnJoinEnabled(); } else { runUpdateCheckerConsoleUpdateCheck(); } + } //Get Metrics from bStats @@ -275,7 +279,7 @@ private void runUpdateCheckerConsoleUpdateCheck() { .setChangelogLink("https://www.spigotmc.org/resources/armorstandeditor-reborn.94503/history") .setColoredConsoleOutput(true) .setUserAgent(new UserAgentBuilder().addPluginNameAndVersion().addServerVersion()) - .checkEveryXHours(72) //Warn people every 72 hours + .checkEveryXHours(updateCheckerInterval) .checkNow(); } } @@ -293,7 +297,7 @@ private void runUpdateCheckerWithOPNotifyOnJoinEnabled() { .setColoredConsoleOutput(true) .setNotifyOpsOnJoin(true) .setUserAgent(new UserAgentBuilder().addPluginNameAndVersion().addServerVersion()) - .checkEveryXHours(72) //Warn people every 72 hours + .checkEveryXHours(updateCheckerInterval) .checkNow(); } } diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml index a1c992d2..41472d94 100644 --- a/src/main/resources/config.yml +++ b/src/main/resources/config.yml @@ -16,7 +16,10 @@ lang: en_US.yml #Enable or Disable the Update Checker runTheUpdateChecker: true -#Set this to allow your operators to get messages w.r.t Plugin updates +# When runTheUpdateChecker is true, we will also check every X hours +check-interval: 24 + +#Set this to allow your operators to get messages in game w.r.t Plugin updates opUpdateNotification: false #----------- TOOL SETTINGS From eca7cb45567d900539515af6d8dd43eefee11051 Mon Sep 17 00:00:00 2001 From: "Larry (Wolfieheart)" Date: Fri, 17 Mar 2023 21:45:20 +0100 Subject: [PATCH 218/369] [CORE] Forgot one thing while updating --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 41bf126b..92d2bc3b 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ io.github.rypofalem.armorstandeditor armorstandeditor jar - 1.19.3-40 + 1.19.4-40 armorstandeditor http://maven.apache.org From 1134d784018e6d1db0ce06851cbafd7b51def956 Mon Sep 17 00:00:00 2001 From: Wolfieheart Date: Wed, 22 Mar 2023 18:50:51 +0100 Subject: [PATCH 219/369] [CORE] Hotfix to Lands. Fixes #203 Signed-off-by: Wolfieheart --- .../protections/LandsProtection.java | 28 +++++++++++-------- 1 file changed, 17 insertions(+), 11 deletions(-) diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/protections/LandsProtection.java b/src/main/java/io/github/rypofalem/armorstandeditor/protections/LandsProtection.java index 45e5a52e..58ee6c3e 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/protections/LandsProtection.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/protections/LandsProtection.java @@ -2,38 +2,44 @@ import io.github.rypofalem.armorstandeditor.ArmorStandEditorPlugin; import me.angeschossen.lands.api.LandsIntegration; +import me.angeschossen.lands.api.flags.type.Flags; import me.angeschossen.lands.api.land.Area; import me.angeschossen.lands.api.land.Land; +import me.angeschossen.lands.api.land.LandWorld; import org.bukkit.Bukkit; import org.bukkit.block.Block; import org.bukkit.entity.Player; public class LandsProtection implements Protection { private final boolean landsEnabled; - private LandsIntegration lands; + private LandsIntegration landsAPI; public LandsProtection() { landsEnabled = Bukkit.getPluginManager().isPluginEnabled("Lands"); if (landsEnabled) - lands = LandsIntegration.of(ArmorStandEditorPlugin.instance()); + landsAPI = LandsIntegration.of(ArmorStandEditorPlugin.instance()); } @Override public boolean checkPermission(Block block, Player player) { if (!landsEnabled || player.hasPermission("asedit.ignoreProtection.lands")) return true; - //Get the land of the current block - Land land = lands.getLandByChunk(block.getWorld(), block.getX(), block.getZ()); + LandWorld landWorld = landsAPI.getWorld(block.getWorld()); - //Get the Area that the block is in - Area area = land.getArea(block.getLocation()); + if (landWorld != null){ - if(area != null) - //Return if Trusted in the area or not either based on BukkitPlayer - return area.isTrusted(player.getUniqueId()); - else - return false; + //Get the area that the player is in + Area landArea = landWorld.getArea(block.getLocation()); + if(landArea != null){ + return landArea.isTrusted(player.getUniqueId()); + } else { + return false; + } + + } else { + return true; + } } } From 447d87a2d9e57489a0a50164492350e8cedde24e Mon Sep 17 00:00:00 2001 From: Wolfieheart Date: Wed, 22 Mar 2023 18:51:39 +0100 Subject: [PATCH 220/369] [CORE] Bump CIs. Closes #204,#205. Bump Version to 1.19.4-40.1 Signed-off-by: Wolfieheart --- pom.xml | 6 +++--- src/main/resources/config.yml | 2 +- src/main/resources/plugin.yml | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/pom.xml b/pom.xml index 92d2bc3b..8f4a7206 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ io.github.rypofalem.armorstandeditor armorstandeditor jar - 1.19.4-40 + 1.19.4-40.1 armorstandeditor http://maven.apache.org @@ -122,7 +122,7 @@ com.palmergames.bukkit.towny towny - 0.98.6.19 + 0.98.6.23 provided @@ -157,7 +157,7 @@ world.bentobox bentobox - 1.22.0-SNAPSHOT + 1.22.0 provided diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml index 41472d94..5e5460e7 100644 --- a/src/main/resources/config.yml +++ b/src/main/resources/config.yml @@ -3,7 +3,7 @@ #-----------------------------# #DO NOT CHANGE THIS - CHANGES AUTOMATICALLY PER UPDATE -version: "1.19.4-40" +version: "1.19.4-40.1" #----------- LANGUAGE #Name of the language file you wish to use diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index 6995b1d1..23597b16 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -1,6 +1,6 @@ name: ArmorStandEditor main: io.github.rypofalem.armorstandeditor.ArmorStandEditorPlugin -version: 1.19.4-40 +version: 1.19.4-40.1 api-version: "1.13" website: https://www.spigotmc.org/resources/94503/ author: Wolfstorm From c9f3cd57ea9c6643010510d6bdf0dc9d1088e30f Mon Sep 17 00:00:00 2001 From: Wolfieheart Date: Wed, 22 Mar 2023 18:59:18 +0100 Subject: [PATCH 221/369] [CORE] Bump Maven Compiler Build to J17 Signed-off-by: Wolfieheart --- pom.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pom.xml b/pom.xml index 8f4a7206..3e28b55b 100644 --- a/pom.xml +++ b/pom.xml @@ -200,8 +200,8 @@ maven-compiler-plugin 3.11.0 - 1.8 - 1.8 + 17 + 17 From 408bcabf5462f968bc6b03ce643514ef29896d23 Mon Sep 17 00:00:00 2001 From: Wolfieheart Date: Wed, 22 Mar 2023 19:00:04 +0100 Subject: [PATCH 222/369] [CI-SKIP] Optimise Imports Signed-off-by: Wolfieheart --- .../rypofalem/armorstandeditor/protections/LandsProtection.java | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/protections/LandsProtection.java b/src/main/java/io/github/rypofalem/armorstandeditor/protections/LandsProtection.java index 58ee6c3e..5826c93f 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/protections/LandsProtection.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/protections/LandsProtection.java @@ -2,9 +2,7 @@ import io.github.rypofalem.armorstandeditor.ArmorStandEditorPlugin; import me.angeschossen.lands.api.LandsIntegration; -import me.angeschossen.lands.api.flags.type.Flags; import me.angeschossen.lands.api.land.Area; -import me.angeschossen.lands.api.land.Land; import me.angeschossen.lands.api.land.LandWorld; import org.bukkit.Bukkit; import org.bukkit.block.Block; From 2cd95b6879817ec5ce2816d3827e8aae627697a6 Mon Sep 17 00:00:00 2001 From: Wolfieheart Date: Sat, 25 Mar 2023 15:09:16 +0100 Subject: [PATCH 223/369] [CORE] Hotfix to ensure that itemLore is properly taken into account Signed-off-by: Wolfieheart --- pom.xml | 2 +- .../rypofalem/armorstandeditor/ArmorStandEditorPlugin.java | 4 ++-- src/main/resources/config.yml | 2 +- src/main/resources/plugin.yml | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/pom.xml b/pom.xml index 3e28b55b..21d7dae5 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ io.github.rypofalem.armorstandeditor armorstandeditor jar - 1.19.4-40.1 + 1.19.4-40.2 armorstandeditor http://maven.apache.org diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/ArmorStandEditorPlugin.java b/src/main/java/io/github/rypofalem/armorstandeditor/ArmorStandEditorPlugin.java index 40df967b..2d1de30c 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/ArmorStandEditorPlugin.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/ArmorStandEditorPlugin.java @@ -423,14 +423,14 @@ public boolean isEditTool(ItemStack itemStk){ if(!itemStk.hasItemMeta()) { return false; } //Get the lore of the Item and if it is null - Return False - String itemLore = String.valueOf(Objects.requireNonNull(itemStk.getItemMeta()).getLore()); + String itemLore = String.valueOf(Objects.requireNonNull(itemStk.getItemMeta().getLore()).get(0)); //If the Item does not have Lore - Return False boolean hasTheItemLore = itemStk.getItemMeta().hasLore(); if (!hasTheItemLore) { return false; } //Item the first thing in the ItemLore List does not Equal the Config Value "editToolLore" - return false - if (!itemLore.equals(editToolLore)) { return false; } //Does not need simplified - IntelliJ likes to complain here + if (!itemLore.equalsIgnoreCase(editToolLore)) { return false; } //Does not need simplified - IntelliJ likes to complain here } diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml index 5e5460e7..1549b861 100644 --- a/src/main/resources/config.yml +++ b/src/main/resources/config.yml @@ -3,7 +3,7 @@ #-----------------------------# #DO NOT CHANGE THIS - CHANGES AUTOMATICALLY PER UPDATE -version: "1.19.4-40.1" +version: "1.19.4-40.2" #----------- LANGUAGE #Name of the language file you wish to use diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index 23597b16..a59a6d24 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -1,6 +1,6 @@ name: ArmorStandEditor main: io.github.rypofalem.armorstandeditor.ArmorStandEditorPlugin -version: 1.19.4-40.1 +version: 1.19.4-40.2 api-version: "1.13" website: https://www.spigotmc.org/resources/94503/ author: Wolfstorm From c3fadffc8d48f4069f8cc897dfdc5bf47d9ef8a2 Mon Sep 17 00:00:00 2001 From: Wolfieheart Date: Sat, 25 Mar 2023 15:27:07 +0100 Subject: [PATCH 224/369] [CI-SKIP] Update Download Shortcuts for releases Signed-off-by: Wolfieheart --- README.md | 27 +++++++++++---------------- 1 file changed, 11 insertions(+), 16 deletions(-) diff --git a/README.md b/README.md index 1999d67d..3017db2c 100644 --- a/README.md +++ b/README.md @@ -26,22 +26,17 @@ Downloads for Version 1.17 and higher can be obtained from the [download page](h For versions older than 1.17, then please use [the original versions download page](https://www.spigotmc.org/resources/armor-stand-editor-dead.7688/). The Latest Downloads Shortcut Links: -* [Unstable 1.1x-DEV Versions](https://github.com/Wolfst0rm/ArmorStandEditor/actions) - **Use these at your own risk. Limited Support is provided for testing purposes** -* [1.19](https://www.spigotmc.org/threads/armorstandeditor-reborn.517132) -* [1.18.2](https://github.com/Wolfieheart/ArmorStandEditor/releases/tag/1.18.2-34.2) -* [1.18.1](https://github.com/Wolfieheart/ArmorStandEditor/releases/tag/1.18.1-33) -* [1.18](https://github.com/Wolfst0rm/ArmorStandEditor/releases/tag/1.18-31) -* [1.17.1](https://github.com/Wolfst0rm/ArmorStandEditor/releases/tag/1.17.1-30) -* [1.17](https://github.com/Wolfst0rm/ArmorStandEditor/releases/tag/1.17.1-27) -* [1.16](https://www.spigotmc.org/resources/armor-stand-editor-dead.7688/download?version=342891) -* [1.14](https://www.spigotmc.org/resources/armor-stand-editor-dead.7688/download?version=299267) -* [1.13](https://www.spigotmc.org/resources/armor-stand-editor-dead.7688/download?version=235185) -* [1.11.2](https://www.spigotmc.org/resources/armor-stand-editor-dead.7688/download?version=152723) -* [1.11](https://www.spigotmc.org/resources/armor-stand-editor-dead.7688/download?version=127136) -* [1.10.2](https://www.spigotmc.org/resources/armor-stand-editor-dead.7688/download?version=124213) -* [1.9.4](https://www.spigotmc.org/resources/armor-stand-editor-dead.7688/download?version=92457) -* [1.9.2](https://www.spigotmc.org/resources/armor-stand-editor-dead.7688/download?version=83792) -* [1.9](https://www.spigotmc.org/resources/armor-stand-editor-dead.7688/download?version=78164) +* [Unstable 1.2x-DEV Versions](https://github.com/Wolfst0rm/ArmorStandEditor/actions) - **Use these at your own risk. Limited Support is provided for testing purposes** +* [1.20 - Not yet Available (Spigot Redirect to latest release)](https://www.spigotmc.org/resources/armorstandeditor-reborn.94503/) +* [1.19 to 1.19.4](https://github.com/Wolfieheart/ArmorStandEditor/releases/tag/1.19.4-40.2) +* [1.18 to 1.18.2](https://github.com/Wolfieheart/ArmorStandEditor/releases/tag/1.18.2-34.2) +* [1.17 to 1.17.1](https://github.com/Wolfst0rm/ArmorStandEditor/releases/tag/1.17.1-27) +* [1.16 to 1.16.5](https://www.spigotmc.org/resources/armor-stand-editor-dead.7688/download?version=342891) +* [1.14 to 1.14.4](https://www.spigotmc.org/resources/armor-stand-editor-dead.7688/download?version=299267) +* [1.13 to 1.13.2](https://www.spigotmc.org/resources/armor-stand-editor-dead.7688/download?version=235185) +* [1.11 to 1.11.2](https://www.spigotmc.org/resources/armor-stand-editor-dead.7688/download?version=152723) +* [1.10 to 1.10.2](https://www.spigotmc.org/resources/armor-stand-editor-dead.7688/download?version=124213) +* [1.9 to 1.9.4](https://www.spigotmc.org/resources/armor-stand-editor-dead.7688/download?version=92457) * [1.8](https://www.spigotmc.org/resources/armor-stand-editor-dead.7688/download?version=29676) **NOTE:** The 1.17 Versions introduce NMS Version Checks and will not load on versions older than 1.13. From 0e3a0a7b8d00cdc349e1ad573621ce14fcdab419 Mon Sep 17 00:00:00 2001 From: Wolfieheart Date: Sat, 25 Mar 2023 15:27:38 +0100 Subject: [PATCH 225/369] [CI-SKIP] Update Download Shortcuts for releases Signed-off-by: Wolfieheart --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 3017db2c..595bf372 100644 --- a/README.md +++ b/README.md @@ -26,7 +26,7 @@ Downloads for Version 1.17 and higher can be obtained from the [download page](h For versions older than 1.17, then please use [the original versions download page](https://www.spigotmc.org/resources/armor-stand-editor-dead.7688/). The Latest Downloads Shortcut Links: -* [Unstable 1.2x-DEV Versions](https://github.com/Wolfst0rm/ArmorStandEditor/actions) - **Use these at your own risk. Limited Support is provided for testing purposes** +* [ArmorStandEditor-Last (Unstable)](https://github.com/Wolfst0rm/ArmorStandEditor/actions) - **Use these at your own risk. Limited Support is provided for testing purposes** * [1.20 - Not yet Available (Spigot Redirect to latest release)](https://www.spigotmc.org/resources/armorstandeditor-reborn.94503/) * [1.19 to 1.19.4](https://github.com/Wolfieheart/ArmorStandEditor/releases/tag/1.19.4-40.2) * [1.18 to 1.18.2](https://github.com/Wolfieheart/ArmorStandEditor/releases/tag/1.18.2-34.2) From 558e01844ce10607bb5a775e11a63aa18960fc5f Mon Sep 17 00:00:00 2001 From: Wolfieheart Date: Wed, 29 Mar 2023 21:18:34 +0200 Subject: [PATCH 226/369] [CORE] Update Lands to actually do something useful in terms of allowing people to ensure ArmorStand Safety in claims and allow building in Wilderness Signed-off-by: Wolfieheart --- .../protections/LandsProtection.java | 41 +++++++++++++------ src/main/resources/config.yml | 2 +- src/main/resources/plugin.yml | 2 +- 3 files changed, 30 insertions(+), 15 deletions(-) diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/protections/LandsProtection.java b/src/main/java/io/github/rypofalem/armorstandeditor/protections/LandsProtection.java index 5826c93f..28cf0c43 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/protections/LandsProtection.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/protections/LandsProtection.java @@ -8,6 +8,10 @@ import org.bukkit.block.Block; import org.bukkit.entity.Player; +import java.util.UUID; + +import static me.angeschossen.lands.api.flags.type.Flags.*; + public class LandsProtection implements Protection { private final boolean landsEnabled; private LandsIntegration landsAPI; @@ -23,20 +27,31 @@ public LandsProtection() { public boolean checkPermission(Block block, Player player) { if (!landsEnabled || player.hasPermission("asedit.ignoreProtection.lands")) return true; - LandWorld landWorld = landsAPI.getWorld(block.getWorld()); - - if (landWorld != null){ - - //Get the area that the player is in - Area landArea = landWorld.getArea(block.getLocation()); - - if(landArea != null){ - return landArea.isTrusted(player.getUniqueId()); - } else { - return false; + //Get the players UUID + UUID playerUUID = player.getUniqueId(); + + //Get the world the play is in + LandWorld landWorld = landsAPI.getWorld(player.getWorld()); + + if(landWorld != null) { + + //Prep to do check for ClaimedArea + Area landArea = landsAPI.getArea(block.getLocation()); + + if (landArea != null) { + if (landArea.isTrusted(playerUUID)) { + return true; + } else if (landArea.hasRoleFlag(playerUUID, BLOCK_BREAK) || + landArea.hasRoleFlag(playerUUID, BLOCK_PLACE) || + landArea.hasRoleFlag(playerUUID, INTERACT_GENERAL)) { + return true; + } else { + return false; + } + }else { + return true; } - - } else { + }else{ return true; } } diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml index 1549b861..0f894334 100644 --- a/src/main/resources/config.yml +++ b/src/main/resources/config.yml @@ -3,7 +3,7 @@ #-----------------------------# #DO NOT CHANGE THIS - CHANGES AUTOMATICALLY PER UPDATE -version: "1.19.4-40.2" +version: "1.19.4-40.x" #----------- LANGUAGE #Name of the language file you wish to use diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index a59a6d24..0fd73799 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -1,6 +1,6 @@ name: ArmorStandEditor main: io.github.rypofalem.armorstandeditor.ArmorStandEditorPlugin -version: 1.19.4-40.2 +version: 1.19.4-40.x api-version: "1.13" website: https://www.spigotmc.org/resources/94503/ author: Wolfstorm From e506a24f847c6090ccea8a35956812ca8f8729c4 Mon Sep 17 00:00:00 2001 From: Wolfieheart Date: Wed, 29 Mar 2023 21:20:16 +0200 Subject: [PATCH 227/369] [CORE] CI Updates for Maven-Release and Superior Sky Block Signed-off-by: Wolfieheart --- pom.xml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pom.xml b/pom.xml index 21d7dae5..1be40a07 100644 --- a/pom.xml +++ b/pom.xml @@ -4,14 +4,14 @@ io.github.rypofalem.armorstandeditor armorstandeditor jar - 1.19.4-40.2 + 1.19.4-40.x armorstandeditor http://maven.apache.org 17 UTF-8 - 2.5.3 + 3.0.0 wolfieheart https://sonarcloud.io @@ -136,7 +136,7 @@ com.bgsoftware SuperiorSkyblockAPI - 2022.9 + 2023.1 provided From 34ed5406136588a7432bc162535ebbf64ef9861a Mon Sep 17 00:00:00 2001 From: Wolfieheart Date: Wed, 29 Mar 2023 21:47:39 +0200 Subject: [PATCH 228/369] [CORE] Better Output for Update Checker when running /asedit update on Development Builds Signed-off-by: Wolfieheart --- .../ArmorStandEditorPlugin.java | 18 ++++++++++++------ .../rypofalem/armorstandeditor/CommandEx.java | 13 +++++++++---- 2 files changed, 21 insertions(+), 10 deletions(-) diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/ArmorStandEditorPlugin.java b/src/main/java/io/github/rypofalem/armorstandeditor/ArmorStandEditorPlugin.java index 2d1de30c..1948600a 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/ArmorStandEditorPlugin.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/ArmorStandEditorPlugin.java @@ -268,11 +268,13 @@ public void onEnable() { } private void runUpdateCheckerConsoleUpdateCheck() { - if (Objects.requireNonNull(getConfig().getString("version")).contains(".x")) { + if (getArmorStandEditorVersion().contains(".x")) { + getLogger().warning("Note from the development team: "); getLogger().warning("It appears that you are using the development version of ArmorStandEditor"); getLogger().warning("This version can be unstable and is not recommended for Production Environments."); - getLogger().warning("Please, report bugs to: https://github.com/Wolfieheart/ArmorStandEditor . This warning"); - getLogger().warning("is intended to be displayed when using a Dev build and is NOT A BUG!"); + getLogger().warning("Please, report bugs to: https://github.com/Wolfieheart/ArmorStandEditor . "); + getLogger().warning("This warning is intended to be displayed when using a Dev build and is NOT A BUG!"); + getLogger().info("Update Checker does not work on Development Builds."); } else { new UpdateChecker(this, UpdateCheckSource.SPIGET, "" + SPIGOT_RESOURCE_ID + "") .setDownloadLink("https://www.spigotmc.org/resources/armorstandeditor-reborn.94503/") @@ -285,11 +287,13 @@ private void runUpdateCheckerConsoleUpdateCheck() { } private void runUpdateCheckerWithOPNotifyOnJoinEnabled() { - if (Objects.requireNonNull(getConfig().getString("version")).contains(".x")) { + if (getArmorStandEditorVersion().contains(".x")) { + getLogger().warning("Note from the development team: "); getLogger().warning("It appears that you are using the development version of ArmorStandEditor"); getLogger().warning("This version can be unstable and is not recommended for Production Environments."); - getLogger().warning("Please, report bugs to: https://github.com/Wolfieheart/ArmorStandEditor . This warning"); - getLogger().warning("is intended to be displayed when using a Dev build and is NOT A BUG!"); + getLogger().warning("Please, report bugs to: https://github.com/Wolfieheart/ArmorStandEditor . "); + getLogger().warning("This warning is intended to be displayed when using a Dev build and is NOT A BUG!"); + getLogger().info("Update Checker does not work on Development Builds."); } else { new UpdateChecker(this, UpdateCheckSource.SPIGET, "" + SPIGOT_RESOURCE_ID + "") .setDownloadLink("https://www.spigotmc.org/resources/armorstandeditor-reborn.94503/") @@ -368,6 +372,8 @@ public boolean getHasPaper(){ } } + public String getArmorStandEditorVersion(){ return getConfig().getString("version"); } + public boolean getArmorStandVisibility(){ return getConfig().getBoolean("armorStandVisibility"); } diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/CommandEx.java b/src/main/java/io/github/rypofalem/armorstandeditor/CommandEx.java index 77d85631..88ef174d 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/CommandEx.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/CommandEx.java @@ -217,10 +217,15 @@ private void commandUpdate(Player player) { if (!(checkPermission(player, "update", true))) return; //Only Run if the Update Command Works - if(plugin.getRunTheUpdateChecker()) { - new UpdateChecker(plugin, UpdateCheckSource.SPIGOT, "" + ArmorStandEditorPlugin.SPIGOT_RESOURCE_ID + "").checkNow(player); //Runs Update Check - } else{ - player.sendMessage(ChatColor.YELLOW + "[ArmorStandEditor] Update Checker is not enabled on this server"); + if (plugin.getArmorStandEditorVersion().contains(".x")) { + player.sendMessage(ChatColor.YELLOW + "[ArmorStandEditor] Update Checker will not work on Development Versions."); + player.sendMessage(ChatColor.YELLOW + "[ArmorStandEditor] Report all bugs to: https://github.com/Wolfieheart/ArmorStandEditor/issues"); + } else { + if (plugin.getRunTheUpdateChecker()) { + new UpdateChecker(plugin, UpdateCheckSource.SPIGOT, "" + ArmorStandEditorPlugin.SPIGOT_RESOURCE_ID + "").checkNow(player); //Runs Update Check + } else { + player.sendMessage(ChatColor.YELLOW + "[ArmorStandEditor] Update Checker is not enabled on this server"); + } } } From c0597947a40d1a2bd17dc8e51bc842103ac0ba5f Mon Sep 17 00:00:00 2001 From: Wolfieheart Date: Fri, 31 Mar 2023 19:47:28 +0200 Subject: [PATCH 229/369] [CORE] Even better Lands Checks..... This has been a WILD RIDE - Jesus Signed-off-by: Wolfieheart --- .../protections/LandsProtection.java | 32 ++++++++++++------- 1 file changed, 21 insertions(+), 11 deletions(-) diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/protections/LandsProtection.java b/src/main/java/io/github/rypofalem/armorstandeditor/protections/LandsProtection.java index 28cf0c43..ca6f4f6b 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/protections/LandsProtection.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/protections/LandsProtection.java @@ -4,6 +4,7 @@ import me.angeschossen.lands.api.LandsIntegration; import me.angeschossen.lands.api.land.Area; import me.angeschossen.lands.api.land.LandWorld; +import me.angeschossen.lands.api.player.LandPlayer; import org.bukkit.Bukkit; import org.bukkit.block.Block; import org.bukkit.entity.Player; @@ -29,6 +30,7 @@ public boolean checkPermission(Block block, Player player) { //Get the players UUID UUID playerUUID = player.getUniqueId(); + LandPlayer landPlayer = landsAPI.getLandPlayer(playerUUID); //Get the world the play is in LandWorld landWorld = landsAPI.getWorld(player.getWorld()); @@ -36,19 +38,27 @@ public boolean checkPermission(Block block, Player player) { if(landWorld != null) { //Prep to do check for ClaimedArea - Area landArea = landsAPI.getArea(block.getLocation()); - - if (landArea != null) { - if (landArea.isTrusted(playerUUID)) { - return true; - } else if (landArea.hasRoleFlag(playerUUID, BLOCK_BREAK) || - landArea.hasRoleFlag(playerUUID, BLOCK_PLACE) || - landArea.hasRoleFlag(playerUUID, INTERACT_GENERAL)) { - return true; - } else { + Area landAreaOfAS = landsAPI.getArea(block.getLocation()); + Area landAreaOfPlayer = landsAPI.getArea(player.getLocation()); + + if (landAreaOfAS != null) { //Block is in a Claimed Area + if(landAreaOfPlayer == landAreaOfAS) { + if (landAreaOfAS.isTrusted(playerUUID) || landAreaOfAS.getOwnerUID() == landPlayer.getUID()) { + // Trusted Players and Owners can build + return true; + } else if (landAreaOfAS.hasRoleFlag(playerUUID, BLOCK_BREAK) || + landAreaOfAS.hasRoleFlag(playerUUID, BLOCK_PLACE) || + landAreaOfAS.hasRoleFlag(playerUUID, INTERACT_CONTAINER) || + landAreaOfAS.hasRoleFlag(playerUUID, INTERACT_GENERAL)) { + //If Player can break Blocks, Place or Interact with in Claimed Area and add items to a container + return true; + } else{ + return landAreaOfAS.hasRoleFlag(playerUUID, INTERACT_CONTAINER) || landAreaOfAS.hasRoleFlag(playerUUID, INTERACT_GENERAL); + } + } else{ return false; } - }else { + } else { return true; } }else{ From c965cf279f93c9cb53c2e415116996531e5b3ed6 Mon Sep 17 00:00:00 2001 From: Wolfieheart Date: Mon, 3 Apr 2023 22:07:41 +0200 Subject: [PATCH 230/369] [CORE] Optimise Residence Protection Checks - Typos, Typos, Typos - Introduce Checking for Containers, like Lands - etc. Signed-off-by: Wolfieheart --- .../protections/ResidenceProtection.java | 31 +++++++++---------- 1 file changed, 14 insertions(+), 17 deletions(-) diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/protections/ResidenceProtection.java b/src/main/java/io/github/rypofalem/armorstandeditor/protections/ResidenceProtection.java index f1cfd605..881a576b 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/protections/ResidenceProtection.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/protections/ResidenceProtection.java @@ -6,7 +6,6 @@ import com.bekvon.bukkit.residence.protection.ClaimedResidence; import com.bekvon.bukkit.residence.protection.ResidencePermissions; import org.bukkit.Bukkit; -import org.bukkit.Location; import org.bukkit.block.Block; import org.bukkit.entity.Player; import org.bukkit.plugin.Plugin; @@ -16,9 +15,9 @@ public class ResidenceProtection implements Protection { private final boolean resEnabled; private Plugin residencePlugin; - private ResidenceApi residenceApi; + ResidenceApi residenceApi; private Residence resInstance; - private boolean permChecker = TRUE; + private static final boolean PERMCHECKER = TRUE; public ResidenceProtection() { resEnabled = Bukkit.getPluginManager().isPluginEnabled("Residence"); //Check if Plugin is Enabled @@ -36,15 +35,10 @@ public ResidenceProtection() { @Override public boolean checkPermission(Block block, Player player) { - if(residencePlugin == null) return true; - if(!resEnabled) return true; - if(player.hasPermission("asedit.ignoreProtection.residence")) return true; - - //Get the Blocks Location - Location loc = block.getLocation(); + if(residenceApi == null || residencePlugin == null || !resEnabled || player.hasPermission("asedit.ignoreProtection.residence") ) return true; //Get the Claimed Residence by Location - ClaimedResidence resClaim = resInstance.getResidenceManager().getByLoc(loc); + ClaimedResidence resClaim = resInstance.getResidenceManager().getByLoc(block.getLocation()); if(resClaim != null ){ @@ -52,16 +46,19 @@ public boolean checkPermission(Block block, Player player) { ResidencePermissions resPerms = resClaim.getPermissions(); //Check: Is player has Admin Flag? - boolean isPlayerAdmin = resPerms.playerHas(player, Flags.admin, permChecker); + boolean isPlayerAdmin = resPerms.playerHas(player, Flags.admin, PERMCHECKER); if(isPlayerAdmin) return true; - //Check if Player can Build / Destory / Place ? - boolean playerCanBuild = resPerms.playerHas(player, Flags.build, permChecker); - boolean playerCanDestory = resPerms.playerHas(player, Flags.destroy, permChecker); - boolean playerCanPlace = resPerms.playerHas(player, Flags.place, permChecker); + //Check if Player can Build / Destroy / Place ? + boolean playerCanBuild = resPerms.playerHas(player, Flags.build, PERMCHECKER); + boolean playerCanDestroy = resPerms.playerHas(player, Flags.destroy, PERMCHECKER); + boolean playerCanPlace = resPerms.playerHas(player, Flags.place, PERMCHECKER); + boolean playerCanInteractWContainer = resPerms.playerHas(player, Flags.container, PERMCHECKER); + - if(playerCanBuild || playerCanDestory || playerCanPlace) return true; - else return false; + if(playerCanBuild || playerCanDestroy || playerCanPlace){ + return playerCanInteractWContainer; + } else return false; } else{ return true; } From 270c78117616a39c1e5f4ba8f339ac99aad2d674 Mon Sep 17 00:00:00 2001 From: Wolfieheart Date: Mon, 3 Apr 2023 22:52:12 +0200 Subject: [PATCH 231/369] [CORE] Add in Check for Player being a Visitor - Basically if a player has the Visitor role in a claim, do not allow edits Signed-off-by: Wolfieheart --- .../protections/LandsProtection.java | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/protections/LandsProtection.java b/src/main/java/io/github/rypofalem/armorstandeditor/protections/LandsProtection.java index ca6f4f6b..1e276df1 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/protections/LandsProtection.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/protections/LandsProtection.java @@ -5,6 +5,7 @@ import me.angeschossen.lands.api.land.Area; import me.angeschossen.lands.api.land.LandWorld; import me.angeschossen.lands.api.player.LandPlayer; +import me.angeschossen.lands.api.role.Role; import org.bukkit.Bukkit; import org.bukkit.block.Block; import org.bukkit.entity.Player; @@ -43,17 +44,21 @@ public boolean checkPermission(Block block, Player player) { if (landAreaOfAS != null) { //Block is in a Claimed Area if(landAreaOfPlayer == landAreaOfAS) { - if (landAreaOfAS.isTrusted(playerUUID) || landAreaOfAS.getOwnerUID() == landPlayer.getUID()) { - // Trusted Players and Owners can build - return true; - } else if (landAreaOfAS.hasRoleFlag(playerUUID, BLOCK_BREAK) || + + //If Player has the Visitor Role + Role visitorRole = landAreaOfAS.getVisitorRole(); + if(landAreaOfAS.getRole(playerUUID) == visitorRole) return false; + + // Trusted Players and Owners can build + if (landAreaOfAS.isTrusted(playerUUID) || landAreaOfAS.getOwnerUID() == landPlayer.getUID())return true; + else if (landAreaOfAS.hasRoleFlag(playerUUID, BLOCK_BREAK) || landAreaOfAS.hasRoleFlag(playerUUID, BLOCK_PLACE) || landAreaOfAS.hasRoleFlag(playerUUID, INTERACT_CONTAINER) || landAreaOfAS.hasRoleFlag(playerUUID, INTERACT_GENERAL)) { //If Player can break Blocks, Place or Interact with in Claimed Area and add items to a container return true; } else{ - return landAreaOfAS.hasRoleFlag(playerUUID, INTERACT_CONTAINER) || landAreaOfAS.hasRoleFlag(playerUUID, INTERACT_GENERAL); + return false; } } else{ return false; @@ -61,7 +66,7 @@ public boolean checkPermission(Block block, Player player) { } else { return true; } - }else{ + }else { return true; } } From a459b2d5fdcb049af4967a8b28c50a2154531196 Mon Sep 17 00:00:00 2001 From: Wolfieheart Date: Mon, 3 Apr 2023 23:08:12 +0200 Subject: [PATCH 232/369] [CORE] Add in Check for Player being a Visitor - Basically if a player has the Visitor role in a claim, do not allow edits Signed-off-by: Wolfieheart --- .../protections/LandsProtection.java | 25 ++++++++++++------- 1 file changed, 16 insertions(+), 9 deletions(-) diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/protections/LandsProtection.java b/src/main/java/io/github/rypofalem/armorstandeditor/protections/LandsProtection.java index 1e276df1..e7380cbb 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/protections/LandsProtection.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/protections/LandsProtection.java @@ -45,28 +45,35 @@ public boolean checkPermission(Block block, Player player) { if (landAreaOfAS != null) { //Block is in a Claimed Area if(landAreaOfPlayer == landAreaOfAS) { - //If Player has the Visitor Role + //Get Visitor Role for the Area of the AS Role visitorRole = landAreaOfAS.getVisitorRole(); + + //If Player is a Visitor - Dont allow Edits if(landAreaOfAS.getRole(playerUUID) == visitorRole) return false; - // Trusted Players and Owners can build + // If Player is Trusted OR Player is Owner of the Area/Claim, Allow Edits if (landAreaOfAS.isTrusted(playerUUID) || landAreaOfAS.getOwnerUID() == landPlayer.getUID())return true; + + // If in the Claim a Player can: + // break Blocks, + // Place + // Interact with in Claimed Area + // add items to a container + // Allow Edits else if (landAreaOfAS.hasRoleFlag(playerUUID, BLOCK_BREAK) || landAreaOfAS.hasRoleFlag(playerUUID, BLOCK_PLACE) || landAreaOfAS.hasRoleFlag(playerUUID, INTERACT_CONTAINER) || landAreaOfAS.hasRoleFlag(playerUUID, INTERACT_GENERAL)) { - //If Player can break Blocks, Place or Interact with in Claimed Area and add items to a container + return true; - } else{ + } else{ // Any other case, dont allow edits return false; } - } else{ - return false; - } - } else { + } else return false; //If the land areas are different + } else { //If the AS is in the Wilderness return true; } - }else { + }else { //if the ArmorStand is in a world return true; } } From e963f262f5ab61dc90ea970796d7545d41479b3d Mon Sep 17 00:00:00 2001 From: Wolfieheart Date: Sat, 8 Apr 2023 19:28:20 +0200 Subject: [PATCH 233/369] [CORE] Fix for IsEditTool and onSwitchHands returning NULL. Fixes #218 Signed-off-by: Wolfieheart --- .../ArmorStandEditorPlugin.java | 14 +++++++---- .../armorstandeditor/PlayerEditorManager.java | 23 ++++++++++--------- 2 files changed, 21 insertions(+), 16 deletions(-) diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/ArmorStandEditorPlugin.java b/src/main/java/io/github/rypofalem/armorstandeditor/ArmorStandEditorPlugin.java index 1948600a..1aa12156 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/ArmorStandEditorPlugin.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/ArmorStandEditorPlugin.java @@ -30,6 +30,7 @@ import org.bukkit.entity.Player; import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.meta.Damageable; +import org.bukkit.inventory.meta.ItemMeta; import org.bukkit.plugin.PluginDescriptionFile; import org.bukkit.plugin.java.JavaPlugin; import org.bukkit.scoreboard.Scoreboard; @@ -404,9 +405,12 @@ public boolean isEditTool(ItemStack itemStk){ if (itemStk == null) { return false; } if (editTool != itemStk.getType()) { return false; } + ItemMeta itemMeta = itemStk.getItemMeta(); + if(itemMeta == null) return false; + //FIX: Depreciated Stack for getDurability if (requireToolData){ - Damageable d1 = (Damageable) itemStk.getItemMeta(); //Get the Damageable Options for itemStk + Damageable d1 = (Damageable) itemMeta; //Get the Damageable Options for itemStk if (d1 != null) { //We do this to prevent NullPointers if (d1.getDamage() != (short) editToolData) { return false; } } @@ -416,7 +420,7 @@ public boolean isEditTool(ItemStack itemStk){ if(!itemStk.hasItemMeta()) { return false; } //Get the name of the Edit Tool - If Null, return false - String itemName = Objects.requireNonNull(itemStk.getItemMeta()).getDisplayName(); + String itemName = itemMeta.getDisplayName(); //If the name of the Edit Tool is not the Name specified in Config then Return false if(!itemName.equals(editToolName)) { return false; } @@ -429,10 +433,10 @@ public boolean isEditTool(ItemStack itemStk){ if(!itemStk.hasItemMeta()) { return false; } //Get the lore of the Item and if it is null - Return False - String itemLore = String.valueOf(Objects.requireNonNull(itemStk.getItemMeta().getLore()).get(0)); + String itemLore = String.valueOf(itemMeta.getLore().get(0)); //If the Item does not have Lore - Return False - boolean hasTheItemLore = itemStk.getItemMeta().hasLore(); + boolean hasTheItemLore = itemMeta.hasLore(); if (!hasTheItemLore) { return false; } //Item the first thing in the ItemLore List does not Equal the Config Value "editToolLore" - return false @@ -443,7 +447,7 @@ public boolean isEditTool(ItemStack itemStk){ if (allowCustomModelData && customModelDataInt != null) { //If the ItemStack does not have Metadata then we return false if(!itemStk.hasItemMeta()) { return false; } - Integer itemCustomModel = Objects.requireNonNull(itemStk.getItemMeta()).getCustomModelData(); + Integer itemCustomModel = itemMeta.getCustomModelData(); return itemCustomModel.equals(customModelDataInt); } return true; diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditorManager.java b/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditorManager.java index a4b049b3..11e1ebd9 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditorManager.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditorManager.java @@ -212,18 +212,19 @@ public void onSwitchHands(PlayerSwapHandItemsEvent event) { as = getTargets(player); //Get All ArmorStand closest to player itemF = getFrameTargets(player); //Get ItemFrame Closest to Player - //Check - if(!(as.isEmpty()) && itemF.isEmpty()) { - getPlayerEditor(player.getUniqueId()).setTarget(as); - } else if(!(itemF.isEmpty()) && as.isEmpty()) { - getPlayerEditor(player.getUniqueId()).setFrameTarget(itemF); - } else if (!(itemF.isEmpty()) && !(as.isEmpty())) { - getPlayerEditor(player.getUniqueId()).sendMessage("doubletarget", "warn"); - } else { - getPlayerEditor(player.getUniqueId()).setTarget(null); - getPlayerEditor(player.getUniqueId()).setFrameTarget(null); + if(as == null) + getPlayerEditor(player.getUniqueId()).sendMessage("nodoubletarget", "warn"); + else if(itemF == null) + getPlayerEditor(player.getUniqueId()).sendMessage("nodoubletarget", "warn"); + else { + if (!as.isEmpty() && itemF.isEmpty()) { + getPlayerEditor(player.getUniqueId()).setTarget(as); + } else if (!itemF.isEmpty() && as.isEmpty()) { + getPlayerEditor(player.getUniqueId()).setFrameTarget(itemF); + } else{ + getPlayerEditor(player.getUniqueId()).sendMessage("doubletarget", "warn"); + } } - } private ArrayList getTargets(Player player) { From 967ce3e4160da824ce3652654da618351dae283d Mon Sep 17 00:00:00 2001 From: Wolfieheart Date: Sat, 8 Apr 2023 19:28:42 +0200 Subject: [PATCH 234/369] [CORE] Update Translations (following the fix for #218) Signed-off-by: Wolfieheart --- src/main/resources/lang/de_DE.yml | 2 ++ src/main/resources/lang/en_US.yml | 4 +++- src/main/resources/lang/es_ES.yml | 2 ++ src/main/resources/lang/fr_FR.yml | 2 ++ src/main/resources/lang/ja_JP.yml | 2 ++ src/main/resources/lang/nl_NL.yml | 2 ++ src/main/resources/lang/pl_PL.yml | 3 ++- src/main/resources/lang/pt_BR.yml | 2 ++ src/main/resources/lang/ro_RO.yml | 3 ++- src/main/resources/lang/ru_RU.yml | 2 ++ src/main/resources/lang/test_NA.yml | 2 ++ src/main/resources/lang/uk_UA.yml | 3 ++- src/main/resources/lang/zh_CN.yml | 2 ++ 13 files changed, 27 insertions(+), 4 deletions(-) diff --git a/src/main/resources/lang/de_DE.yml b/src/main/resources/lang/de_DE.yml index 2a2d472c..3bef403d 100644 --- a/src/main/resources/lang/de_DE.yml +++ b/src/main/resources/lang/de_DE.yml @@ -63,6 +63,8 @@ noframetarget: msg: Itemframe Ziel entsperrt. doubletarget: msg: Bitte schaue entweder auf einen Rüstungsständer oder einem ItemFrame, nicht beides! +nodoubletarget: + msg: Please look at an ArmorStand or an ItemFrame before switching hands! help: msg: "1. Halte das Bearbeitungswerkzeug() in deiner Haupthand. diff --git a/src/main/resources/lang/en_US.yml b/src/main/resources/lang/en_US.yml index 97d93923..fcfb11f3 100644 --- a/src/main/resources/lang/en_US.yml +++ b/src/main/resources/lang/en_US.yml @@ -70,6 +70,8 @@ give: msg: Player given Item with CustomModelData doubletarget: msg: Please look at either an ArmorStand or an ItemFrame, not both! +nodoubletarget: + msg: Please look at an ArmorStand or an ItemFrame before switching hands! reloaded: msg: Configuration File has been reloaded. help: @@ -129,7 +131,7 @@ yaxis: zaxis: msg: Z Axis description: - msg: Rotate body parts along the Z Axis + msg: Rotate body part s along the Z Axis coarseadj: msg: Coarse Adjustment description: diff --git a/src/main/resources/lang/es_ES.yml b/src/main/resources/lang/es_ES.yml index 7fda2f65..f4b6ba14 100644 --- a/src/main/resources/lang/es_ES.yml +++ b/src/main/resources/lang/es_ES.yml @@ -60,6 +60,8 @@ noframetarget: msg: Itemframe target unlocked. doubletarget: msg: Please look at either an ArmorStand or an ItemFrame, not both! +nodoubletarget: + msg: Please look at an ArmorStand or an ItemFrame before switching hands! help: msg: "1. Manten la herramienta de edición () en tu mano principal. diff --git a/src/main/resources/lang/fr_FR.yml b/src/main/resources/lang/fr_FR.yml index e844224d..b90ae320 100644 --- a/src/main/resources/lang/fr_FR.yml +++ b/src/main/resources/lang/fr_FR.yml @@ -62,6 +62,8 @@ noframetarget: msg: Itemframe target unlocked. doubletarget: msg: Please look at either an ArmorStand or an ItemFrame, not both! +nodoubletarget: + msg: Please look at an ArmorStand or an ItemFrame before switching hands! help: msg: "1. Tenez l'outil d'édition () dans votre main principale. diff --git a/src/main/resources/lang/ja_JP.yml b/src/main/resources/lang/ja_JP.yml index d3229016..efcaa34e 100644 --- a/src/main/resources/lang/ja_JP.yml +++ b/src/main/resources/lang/ja_JP.yml @@ -63,6 +63,8 @@ noframetarget: msg: Itemframe target unlocked. doubletarget: msg: Please look at either an ArmorStand or an ItemFrame, not both! +nodoubletarget: + msg: Please look at an ArmorStand or an ItemFrame before switching hands! help: msg: "1. 編集ツール()を手に持ちます。 diff --git a/src/main/resources/lang/nl_NL.yml b/src/main/resources/lang/nl_NL.yml index b829b23f..cb522a8c 100644 --- a/src/main/resources/lang/nl_NL.yml +++ b/src/main/resources/lang/nl_NL.yml @@ -61,6 +61,8 @@ noframetarget: msg: Itemframe target unlocked. doubletarget: msg: Kijk aub naar een ArmorStand of een ItemFrame, niet allebei! +nodoubletarget: + msg: Kijk naar een ArmorStand of een ItemFrame voor je van hand verandert! give: msg: Speler heeft een item met CustomModelData ontvangen diff --git a/src/main/resources/lang/pl_PL.yml b/src/main/resources/lang/pl_PL.yml index 657af7c4..df43ce53 100644 --- a/src/main/resources/lang/pl_PL.yml +++ b/src/main/resources/lang/pl_PL.yml @@ -64,7 +64,8 @@ doubletarget: msg: Please look at either an ArmorStand or an ItemFrame, not both! give: msg: Player given Item with CustomModelData - +nodoubletarget: + msg: Please look at an ArmorStand or an ItemFrame before switching hands! #warn cantedit: msg: Nie możesz tego zrobić diff --git a/src/main/resources/lang/pt_BR.yml b/src/main/resources/lang/pt_BR.yml index 84094412..3b1b0285 100644 --- a/src/main/resources/lang/pt_BR.yml +++ b/src/main/resources/lang/pt_BR.yml @@ -65,6 +65,8 @@ give: msg: Player given Item with CustomModelData doubletarget: msg: Please look at either an ArmorStand or an ItemFrame, not both! +nodoubletarget: + msg: Please look at an ArmorStand or an ItemFrame before switching hands! reloaded: msg: Configuration File has been reloaded. help: diff --git a/src/main/resources/lang/ro_RO.yml b/src/main/resources/lang/ro_RO.yml index 21120345..7b1f87a9 100644 --- a/src/main/resources/lang/ro_RO.yml +++ b/src/main/resources/lang/ro_RO.yml @@ -57,7 +57,8 @@ notarget: msg: Tinta ArmorStand-ului deblocata. give: msg: Player given Item with CustomModelData - +nodoubletarget: + msg: Please look at an ArmorStand or an ItemFrame before switching hands! #warn cantedit: msg: Nu poti edita armorstand-ul aici! diff --git a/src/main/resources/lang/ru_RU.yml b/src/main/resources/lang/ru_RU.yml index f25283a3..22905b9e 100644 --- a/src/main/resources/lang/ru_RU.yml +++ b/src/main/resources/lang/ru_RU.yml @@ -63,6 +63,8 @@ noframetarget: msg: Цель рамки разблокирована doubletarget: msg: Наведитесь на стойку или на рамку, а не на то и другое одновременно. +nodoubletarget: + msg: Please look at an ArmorStand or an ItemFrame before switching hands! reloaded: msg: Конфиг перезагружен. help: diff --git a/src/main/resources/lang/test_NA.yml b/src/main/resources/lang/test_NA.yml index 5f9d9158..926bfa14 100644 --- a/src/main/resources/lang/test_NA.yml +++ b/src/main/resources/lang/test_NA.yml @@ -65,6 +65,8 @@ noaxiscom: msg: You must specify an Axis! nomodecom: msg: You must specify a Mode! +nodoubletarget: + msg: Please look at an ArmorStand or an ItemFrame before switching hands! #menutitle mainmenutitle: diff --git a/src/main/resources/lang/uk_UA.yml b/src/main/resources/lang/uk_UA.yml index 984c988c..61d61205 100644 --- a/src/main/resources/lang/uk_UA.yml +++ b/src/main/resources/lang/uk_UA.yml @@ -55,7 +55,8 @@ notarget: msg: Ціль стенду розблоковано. give: msg: Player given Item with CustomModelData - +nodoubletarget: + msg: Please look at an ArmorStand or an ItemFrame before switching hands! #warn cantedit: diff --git a/src/main/resources/lang/zh_CN.yml b/src/main/resources/lang/zh_CN.yml index 80b937b8..043b9784 100644 --- a/src/main/resources/lang/zh_CN.yml +++ b/src/main/resources/lang/zh_CN.yml @@ -65,6 +65,8 @@ doubletarget: msg: 请看向盔甲架或物品展示框,不要两个同时看! reloaded: msg: 配置文件已重新加载。 +nodoubletarget: + msg: Please look at an ArmorStand or an ItemFrame before switching hands! help: msg: "1. 手持编辑工具() From 00b39e34e0d6d5416c5c07ab6267da50df70a5c2 Mon Sep 17 00:00:00 2001 From: Wolfieheart Date: Sun, 9 Apr 2023 12:26:33 +0200 Subject: [PATCH 235/369] [CORE] Version Bump to 1.19.4-41 - Closes #207, #208, #212, #213, #214 Signed-off-by: Wolfieheart --- ArmorStandEditorHeader.png | Bin 0 -> 666547 bytes pom.xml | 4 ++-- src/main/resources/config.yml | 2 +- src/main/resources/plugin.yml | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) create mode 100644 ArmorStandEditorHeader.png diff --git a/ArmorStandEditorHeader.png b/ArmorStandEditorHeader.png new file mode 100644 index 0000000000000000000000000000000000000000..9ef4aa7844d00875c7071fab036d13fb82e3be87 GIT binary patch literal 666547 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 P|K{Ib@%^{|$!GsR;d?#D literal 0 HcmV?d00001 diff --git a/pom.xml b/pom.xml index 1be40a07..ef859479 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ io.github.rypofalem.armorstandeditor armorstandeditor jar - 1.19.4-40.x + 1.19.4-41 armorstandeditor http://maven.apache.org @@ -122,7 +122,7 @@ com.palmergames.bukkit.towny towny - 0.98.6.23 + 0.99.0.0 provided diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml index 0f894334..0f32cfba 100644 --- a/src/main/resources/config.yml +++ b/src/main/resources/config.yml @@ -3,7 +3,7 @@ #-----------------------------# #DO NOT CHANGE THIS - CHANGES AUTOMATICALLY PER UPDATE -version: "1.19.4-40.x" +version: "1.19.4-41" #----------- LANGUAGE #Name of the language file you wish to use diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index 0fd73799..61233707 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -1,6 +1,6 @@ name: ArmorStandEditor main: io.github.rypofalem.armorstandeditor.ArmorStandEditorPlugin -version: 1.19.4-40.x +version: 1.19.4-41 api-version: "1.13" website: https://www.spigotmc.org/resources/94503/ author: Wolfstorm From 34333663f868ff2b611b89b66b7535647fa72d58 Mon Sep 17 00:00:00 2001 From: Wolfieheart Date: Sun, 9 Apr 2023 12:59:34 +0200 Subject: [PATCH 236/369] [CORE] Update Readme to add Modrinth Support for Downloads Signed-off-by: Wolfieheart --- README.md | 23 +++++++++++++++++------ 1 file changed, 17 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index 595bf372..37936066 100644 --- a/README.md +++ b/README.md @@ -26,12 +26,23 @@ Downloads for Version 1.17 and higher can be obtained from the [download page](h For versions older than 1.17, then please use [the original versions download page](https://www.spigotmc.org/resources/armor-stand-editor-dead.7688/). The Latest Downloads Shortcut Links: -* [ArmorStandEditor-Last (Unstable)](https://github.com/Wolfst0rm/ArmorStandEditor/actions) - **Use these at your own risk. Limited Support is provided for testing purposes** -* [1.20 - Not yet Available (Spigot Redirect to latest release)](https://www.spigotmc.org/resources/armorstandeditor-reborn.94503/) -* [1.19 to 1.19.4](https://github.com/Wolfieheart/ArmorStandEditor/releases/tag/1.19.4-40.2) -* [1.18 to 1.18.2](https://github.com/Wolfieheart/ArmorStandEditor/releases/tag/1.18.2-34.2) -* [1.17 to 1.17.1](https://github.com/Wolfst0rm/ArmorStandEditor/releases/tag/1.17.1-27) -* [1.16 to 1.16.5](https://www.spigotmc.org/resources/armor-stand-editor-dead.7688/download?version=342891) +* [ArmorStandEditor-Last (Unstable)](https://github.com/Wolfst0rm/ArmorStandEditor/actions) + - **Use these at your own risk. Limited Support is provided for testing purposes** +* 1.20 - Not yet available + * [Spigot Redirect to latest release](https://www.spigotmc.org/resources/armorstandeditor-reborn.94503/) + * [Modrinth Redirect to Latest Release](https://modrinth.com/plugin/armorstandeditor-reborn) +* 1.19 to 1.19.4 + * [Spigot/Github](https://github.com/Wolfieheart/ArmorStandEditor/releases/tag/1.19.4-40.2) + * [Modrinth](https://modrinth.com/plugin/armorstandeditor-reborn/version/1.19.4-40.2) +* 1.18 to 1.18.2 + * [Spigot/Github](https://github.com/Wolfieheart/ArmorStandEditor/releases/tag/1.18.2-34.2) + * [Modrinth](https://modrinth.com/plugin/armorstandeditor-reborn/version/1.18.2-34.2) +* 1.17 to 1.17.1 + * [Spigot/Github](https://github.com/Wolfst0rm/ArmorStandEditor/releases/tag/1.17.1-30) + * [Modrinth](https://modrinth.com/plugin/armorstandeditor-reborn/version/1.17-30) +* 1.16 to 1.16.5 + * [Spigot/Github](https://www.spigotmc.org/resources/armor-stand-editor-dead.7688/download?version=342891) + * [Modrinth](https://modrinth.com/plugin/armorstandeditor-reborn/version/1.16-25) * [1.14 to 1.14.4](https://www.spigotmc.org/resources/armor-stand-editor-dead.7688/download?version=299267) * [1.13 to 1.13.2](https://www.spigotmc.org/resources/armor-stand-editor-dead.7688/download?version=235185) * [1.11 to 1.11.2](https://www.spigotmc.org/resources/armor-stand-editor-dead.7688/download?version=152723) From d255674b5e6235acd24a0c617ae886ffeb915871 Mon Sep 17 00:00:00 2001 From: "Larry (Wolfieheart)" Date: Mon, 10 Apr 2023 12:17:37 +0200 Subject: [PATCH 237/369] [CORE] Update Readme to have new Banner and Version Bump --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 37936066..36b53cc8 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@

-## ArmorStandEditor + [![Build Status](https://github.com/Wolfst0rm/ArmorStandEditor/actions/workflows/maven-publish.yml/badge.svg?style=flat)](https://github.com/Wolfst0rm/ArmorStandEditor/actions/workflows/maven-publish.yml) [![Maintainability Rating](https://sonarcloud.io/api/project_badges/measure?project=wolfieheart_ArmorStandEditor&metric=sqale_rating&style=flat)](https://sonarcloud.io/summary/new_code?id=wolfieheart_ArmorStandEditor) @@ -32,8 +32,8 @@ The Latest Downloads Shortcut Links: * [Spigot Redirect to latest release](https://www.spigotmc.org/resources/armorstandeditor-reborn.94503/) * [Modrinth Redirect to Latest Release](https://modrinth.com/plugin/armorstandeditor-reborn) * 1.19 to 1.19.4 - * [Spigot/Github](https://github.com/Wolfieheart/ArmorStandEditor/releases/tag/1.19.4-40.2) - * [Modrinth](https://modrinth.com/plugin/armorstandeditor-reborn/version/1.19.4-40.2) + * [Spigot/Github](https://github.com/Wolfieheart/ArmorStandEditor/releases/tag/1.19.4-41) + * [Modrinth](https://modrinth.com/plugin/armorstandeditor-reborn/version/1.19.4-41) * 1.18 to 1.18.2 * [Spigot/Github](https://github.com/Wolfieheart/ArmorStandEditor/releases/tag/1.18.2-34.2) * [Modrinth](https://modrinth.com/plugin/armorstandeditor-reborn/version/1.18.2-34.2) From f79549b4d91af7b89fc699afff112e443305e5c8 Mon Sep 17 00:00:00 2001 From: "Sofiane H. Djerbi" Date: Wed, 12 Apr 2023 11:52:47 +0300 Subject: [PATCH 238/369] Fix French translation (#222) [CORE/i8n] Update French Translations (#222) --- src/main/resources/lang/fr_FR.yml | 53 +++++++++++++++++-------------- 1 file changed, 29 insertions(+), 24 deletions(-) diff --git a/src/main/resources/lang/fr_FR.yml b/src/main/resources/lang/fr_FR.yml index b90ae320..755e4bfe 100644 --- a/src/main/resources/lang/fr_FR.yml +++ b/src/main/resources/lang/fr_FR.yml @@ -17,18 +17,19 @@ setmode: rightleg: Position de la jambe droite leftarm: Position du bras gauche rightarm: Position du bras droit - equipment: Équipment + equipment: Équipement showarms: Afficher ou masquer les bras - invisible: Inversion de la visibilité - size: Inversion de la taille + invisible: Modifier la visibilité + size: Modifier la taille disableslots: Activation ou désactivation des slots - gravity: Inversion de la gravité + gravity: Modifier la gravité baseplate: Affichage ou retrait de la plaque de base placement: Position rotate: Rotation copy: Copie paste: Collage reset: Réinitialisation de la pose + itemframe: Modifier la visibilité d'un item frame setaxis: msg: Axe sélectionné. x: X @@ -45,25 +46,25 @@ setgravity: true: activée false: désactivée nomode: - msg: Cliquez d'abord avec cet outil hors d'un valet pour sélectionner un mode d'édition. + msg: Cliquez d'abord avec cet outil hors d'un armor stand pour sélectionner un mode d'édition. nomodeif: - msg: Click with the Edit Tool away from the ItemFrame to select a mode firs + msg: Cliquez d'abord avec cet outil hors d'un item frame pour séléctionner un mode d'édition. copied: - msg: État du valet copié dans l'emplacement . + msg: État de l'armor stand copié dans l'emplacement . pasted: - msg: État du valet collé depuis l'emplacement . + msg: État de l'armor stand collé depuis l'emplacement . target: - msg: Valet cible verrouillé. + msg: Armor stand sélectionné. notarget: - msg: Valet cible déverrouillé. + msg: Armor stand désélectionné. frametarget: - msg: Itemframe target locked + msg: Itemframe sélectionné. noframetarget: - msg: Itemframe target unlocked. + msg: Itemframe désélectionné. doubletarget: - msg: Please look at either an ArmorStand or an ItemFrame, not both! + msg: Regardez un armor stand ou un item frame, pas les deux! nodoubletarget: - msg: Please look at an ArmorStand or an ItemFrame before switching hands! + msg: Regardez un armor stand ou un item frame avant de changer de main! help: msg: "1. Tenez l'outil d'édition () dans votre main principale. @@ -79,17 +80,17 @@ helptips: 1. Appuyez sur le bouton « changer un objet de main » (par défaut F) tout en tenant l'outil d'édition pour cibler un support d'armure spécifique, si d'autres armure sont sur le chemin. - 2. Vous pouvez mettre des étiquettes aux valets. Vous pouvez utiliser le symbole & pour créer des noms colorés. + 2. Vous pouvez mettre des étiquettes aux armor stands. Vous pouvez utiliser le symbole & pour créer des noms colorés. 3. Vous pouvez vous accroupir puis utiliser la molette de la souris tout en maintenant l'outil d'édition pour changer d'axe de modification sans ouvrir le menu." helpurl: msg: "Plus d'infos : https://github.com/RypoFalem/ArmorStandEditor/wiki" give: - msg: Player given Item with CustomModelData + msg: CustomModelData donné au joueur. #warn cantedit: - msg: Désolé, vous ne pouvez modifier des valets ici ! + msg: Désolé, vous ne pouvez pas modifier des armor stands ici ! noperm: msg: Vous n'avez pas la permission d'utiliser ceci ! noslotnumcom: @@ -101,14 +102,14 @@ noaxiscom: nomodecom: msg: Vous devez préciser un mode ! nogive: - msg: You have no permission to use the give command ! + msg: Vous n'avez pas le droit d'utiliser cette commande! #menutitle mainmenutitle: msg: Menu d'Armor Stand Editor equiptitle: - msg: Équipement du valet + msg: Équipement de l'armor stand #icons xaxis: @@ -186,19 +187,19 @@ baseplate: placement: msg: Position description: - msg: Déplace le valet dans son ensemble + msg: Déplace l'armor stand dans son ensemble rotate: msg: Rotation description: - msg: Fait tourner l'ensemble du valet sur lui-même + msg: Fait tourner l'ensemble de l'armor stand sur lui-même copy: msg: Copie description: - msg: Copie les propriétés du valet + msg: Copie les propriétés de l'armor stand paste: msg: Collage description: - msg: Applique les propriétés préalablement copiées sur un valet + msg: Applique les propriétés copiées sur un armor stand copyslot: msg: Emplacement de copie description: @@ -211,6 +212,10 @@ helpgui: msg: À l'aide ! description: msg: Cliquez ici pour obtenir de l'aide ! +itemframevisible: + msg: Visibilité (Item Frame) + description: + msg: Rend visible ou invisible un Item Frame #icons (equipment menu) disabled: @@ -222,7 +227,7 @@ equipslot: helm: casque chest: plastron pants: pantalon - boots: paire de bottes + boots: bottes rhand: élément dans la main droite lhand: élément dans la main gauche helm: casques From 9193d01388ec6caf2b23e449759af90358fa979e Mon Sep 17 00:00:00 2001 From: "Sofiane H. Djerbi" Date: Wed, 12 Apr 2023 12:03:23 +0300 Subject: [PATCH 239/369] [CORE] Introduce Support for Folia (#221) * Folia support * Remove useless scheduler parts * TeleportAsync support * Added warning on update command * Bump version to 1.19.4-42 --- pom.xml | 2 +- .../ArmorStandEditorPlugin.java | 13 +-- .../rypofalem/armorstandeditor/CommandEx.java | 5 +- .../rypofalem/armorstandeditor/Metrics.java | 2 +- .../armorstandeditor/PlayerEditor.java | 12 +-- .../armorstandeditor/PlayerEditorManager.java | 4 +- .../rypofalem/armorstandeditor/Scheduler.java | 84 +++++++++++++++++++ src/main/resources/plugin.yml | 3 +- 8 files changed, 108 insertions(+), 17 deletions(-) create mode 100644 src/main/java/io/github/rypofalem/armorstandeditor/Scheduler.java diff --git a/pom.xml b/pom.xml index ef859479..d523aa54 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ io.github.rypofalem.armorstandeditor armorstandeditor jar - 1.19.4-41 + 1.19.4-42 armorstandeditor http://maven.apache.org diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/ArmorStandEditorPlugin.java b/src/main/java/io/github/rypofalem/armorstandeditor/ArmorStandEditorPlugin.java index 1aa12156..78d3f428 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/ArmorStandEditorPlugin.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/ArmorStandEditorPlugin.java @@ -106,7 +106,8 @@ public ArmorStandEditorPlugin(){ @Override public void onEnable() { - scoreboard = Objects.requireNonNull(this.getServer().getScoreboardManager()).getMainScoreboard(); + if (!Scheduler.isFolia()) + scoreboard = Objects.requireNonNull(this.getServer().getScoreboardManager()).getMainScoreboard(); //Get NMS Version nmsVersion = getNmsVersion(); @@ -158,7 +159,7 @@ public void onEnable() { } getServer().getPluginManager().enablePlugin(this); - registerScoreboards(scoreboard); + if (!Scheduler.isFolia()) registerScoreboards(scoreboard); getLogger().info(SEPARATOR_FIELD); //saveResource doesn't accept File.separator on Windows, need to hardcode unix separator "/" instead @@ -244,7 +245,7 @@ public void onEnable() { updateCheckerInterval = getConfig().getDouble("updateCheckerInterval", 24); //Run UpdateChecker - Reports out to Console on Startup ONLY! - if(runTheUpdateChecker) { + if(!Scheduler.isFolia() && runTheUpdateChecker) { if(opUpdateNotification){ runUpdateCheckerWithOPNotifyOnJoinEnabled(); @@ -343,8 +344,10 @@ public void onDisable(){ if(player.getOpenInventory().getTopInventory().getHolder() == editorManager.getMenuHolder()) player.closeInventory(); } - scoreboard = Objects.requireNonNull(this.getServer().getScoreboardManager()).getMainScoreboard(); - unregisterScoreboards(scoreboard); + if (!Scheduler.isFolia()) { + scoreboard = Objects.requireNonNull(this.getServer().getScoreboardManager()).getMainScoreboard(); + unregisterScoreboards(scoreboard); + } } public String getNmsVersion(){ diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/CommandEx.java b/src/main/java/io/github/rypofalem/armorstandeditor/CommandEx.java index 88ef174d..5b6c970d 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/CommandEx.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/CommandEx.java @@ -221,8 +221,11 @@ private void commandUpdate(Player player) { player.sendMessage(ChatColor.YELLOW + "[ArmorStandEditor] Update Checker will not work on Development Versions."); player.sendMessage(ChatColor.YELLOW + "[ArmorStandEditor] Report all bugs to: https://github.com/Wolfieheart/ArmorStandEditor/issues"); } else { - if (plugin.getRunTheUpdateChecker()) { + if (!Scheduler.isFolia() && plugin.getRunTheUpdateChecker()) { new UpdateChecker(plugin, UpdateCheckSource.SPIGOT, "" + ArmorStandEditorPlugin.SPIGOT_RESOURCE_ID + "").checkNow(player); //Runs Update Check + } else if (Scheduler.isFolia()) { + player.sendMessage(ChatColor.YELLOW + "[ArmorStandEditor] Update Checker does not currently work on Folia."); + player.sendMessage(ChatColor.YELLOW + "[ArmorStandEditor] Report all bugs to: https://github.com/Wolfieheart/ArmorStandEditor/issues"); } else { player.sendMessage(ChatColor.YELLOW + "[ArmorStandEditor] Update Checker is not enabled on this server"); } diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/Metrics.java b/src/main/java/io/github/rypofalem/armorstandeditor/Metrics.java index 84cc1d97..1cc318cf 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/Metrics.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/Metrics.java @@ -101,7 +101,7 @@ public Metrics(JavaPlugin plugin, int serviceId) { enabled, this::appendPlatformData, this::appendServiceData, - submitDataTask -> Bukkit.getScheduler().runTask(plugin, submitDataTask), + submitDataTask -> Scheduler.runTask(plugin, submitDataTask), plugin::isEnabled, (message, error) -> this.plugin.getLogger().log(Level.WARNING, message, error), (message) -> this.plugin.getLogger().log(Level.INFO, message), diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditor.java b/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditor.java index 4b3b750f..bb741fe8 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditor.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditor.java @@ -258,7 +258,7 @@ private void move(ArmorStand armorStand) { loc.add(0, 0, movChange); break; } - armorStand.teleport(loc); + Scheduler.teleport(armorStand, loc); } private void reverseMove(ArmorStand armorStand) { @@ -275,21 +275,21 @@ private void reverseMove(ArmorStand armorStand) { loc.subtract(0, 0, movChange); break; } - armorStand.teleport(loc); + Scheduler.teleport(armorStand, loc); } private void rotate(ArmorStand armorStand) { Location loc = armorStand.getLocation(); float yaw = loc.getYaw(); loc.setYaw((yaw + 180 + (float) degreeAngleChange) % 360 - 180); - armorStand.teleport(loc); + Scheduler.teleport(armorStand, loc); } private void reverseRotate(ArmorStand armorStand) { Location loc = armorStand.getLocation(); float yaw = loc.getYaw(); loc.setYaw((yaw + 180 - (float) degreeAngleChange) % 360 - 180); - armorStand.teleport(loc); + Scheduler.teleport(armorStand, loc); } private void copy(ArmorStand armorStand) { @@ -326,7 +326,7 @@ private void paste(ArmorStand armorStand) { private void toggleDisableSlots(ArmorStand armorStand) { if (!getPlayer().hasPermission("asedit.disableSlots")) return; if (armorStand.hasEquipmentLock(EquipmentSlot.HAND, ArmorStand.LockType.REMOVING_OR_CHANGING)) { //Adds a lock to every slot or removes it - team = plugin.scoreboard.getTeam(plugin.lockedTeam); + team = Scheduler.isFolia() ? null : plugin.scoreboard.getTeam(plugin.lockedTeam); armorStandID = armorStand.getUniqueId(); for (final EquipmentSlot slot : EquipmentSlot.values()) { // UNLOCKED @@ -542,7 +542,7 @@ public UUID getUUID() { public void openMenu() { if (!isMenuCancelled()) { - plugin.getServer().getScheduler().runTaskLater(plugin, new OpenMenuTask(), 1).getTaskId(); + Scheduler.runTaskLater(plugin, new OpenMenuTask(), 1); } } diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditorManager.java b/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditorManager.java index 11e1ebd9..ba8c79bd 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditorManager.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditorManager.java @@ -79,7 +79,7 @@ public class PlayerEditorManager implements Listener { coarseMov = 1; fineMov = .03125; // 1/32 counter = new TickCounter(); - Bukkit.getServer().getScheduler().runTaskTimer(plugin, counter, 0, 1); + Scheduler.runTaskTimer(plugin, counter, 1, 1); } @EventHandler(priority = EventPriority.LOWEST) @@ -153,7 +153,7 @@ void onArmorStandInteract( PlayerInteractAtEntityEvent event) { //minecraft will set the name after this event even if the event is cancelled. //change it 1 tick later to apply formatting without it being overwritten - Bukkit.getScheduler().runTaskLater(plugin, () -> { + Scheduler.runTaskLater(plugin, () -> { as.setCustomName(name); as.setCustomNameVisible(true); }, 1); diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/Scheduler.java b/src/main/java/io/github/rypofalem/armorstandeditor/Scheduler.java new file mode 100644 index 00000000..594ae083 --- /dev/null +++ b/src/main/java/io/github/rypofalem/armorstandeditor/Scheduler.java @@ -0,0 +1,84 @@ +package io.github.rypofalem.armorstandeditor; + +import org.bukkit.Bukkit; +import org.bukkit.Location; +import org.bukkit.entity.Entity; +import org.bukkit.plugin.Plugin; + +import java.util.function.Consumer; + +public class Scheduler { + + private static Boolean IS_FOLIA = null; + private static Object GLOBAL_REGION_SCHEDULER = null; + + public static T callMethod(Class clazz, Object object, String methodName, Class[] parameterTypes, Object... args) { + try { + return (T) clazz.getDeclaredMethod(methodName, parameterTypes).invoke(object, args); + } catch (Throwable t) { + throw new IllegalStateException(t); + } + } + + public static T callMethod(Object object, String methodName, Class[] parameterTypes, Object... args) { + return callMethod(object.getClass(), object, methodName, parameterTypes, args); + } + + public static T callMethod(Class clazz, String methodName) { + return callMethod(clazz, null, methodName, new Class[]{}); + } + + private static boolean methodExist(Class clazz, String methodName, Class... parameterTypes) { + try { + clazz.getDeclaredMethod(methodName, parameterTypes); + return true; + } catch (Throwable ignored) {} + return false; + } + + public static Boolean isFolia() { + if (IS_FOLIA == null) IS_FOLIA = methodExist(Bukkit.class, "getGlobalRegionScheduler"); + return IS_FOLIA; + } + + public static Object getGlobalRegionScheduler() { + if (GLOBAL_REGION_SCHEDULER == null) { + GLOBAL_REGION_SCHEDULER = callMethod(Bukkit.class, "getGlobalRegionScheduler"); + } + return GLOBAL_REGION_SCHEDULER; + } + + public static void runTask(Plugin plugin, Runnable runnable) { + if (isFolia()) { + Object globalRegionScheduler = getGlobalRegionScheduler(); + callMethod(globalRegionScheduler, "run", new Class[]{Plugin.class, Consumer.class}, plugin, (Consumer) (task) -> runnable.run()); + return; + } + Bukkit.getScheduler().runTask(plugin, runnable); + } + + public static void runTaskTimer(Plugin plugin, Runnable runnable, long initialDelayTicks, long periodTicks) { + if (isFolia()) { + Object globalRegionScheduler = getGlobalRegionScheduler(); + callMethod(globalRegionScheduler, "runAtFixedRate", new Class[]{Plugin.class, Consumer.class, long.class, long.class}, + plugin, (Consumer) (task) -> runnable.run(), initialDelayTicks, periodTicks); + return; + } + Bukkit.getScheduler().runTaskTimerAsynchronously(plugin, runnable, initialDelayTicks, periodTicks); + } + + public static void runTaskLater(Plugin plugin, Runnable runnable, long delayedTicks) { + if (isFolia()) { + Object globalRegionScheduler = getGlobalRegionScheduler(); + callMethod(globalRegionScheduler, "runDelayed", new Class[]{Plugin.class, Consumer.class, long.class}, + plugin, (Consumer) (task) -> runnable.run(), delayedTicks); + return; + } + Bukkit.getScheduler().runTaskLater(plugin, runnable, delayedTicks); + } + + public static void teleport(Entity entity, Location location) { + if (IS_FOLIA) callMethod(Entity.class, entity, "teleportAsync", new Class[]{Location.class}, location); + else entity.teleport(location); + } +} diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index 61233707..d3e73803 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -1,7 +1,8 @@ name: ArmorStandEditor main: io.github.rypofalem.armorstandeditor.ArmorStandEditorPlugin -version: 1.19.4-41 +version: 1.19.4-42 api-version: "1.13" +folia-supported: true website: https://www.spigotmc.org/resources/94503/ author: Wolfstorm authors: [Wolfstorm, Marfjeh, miknes123, rypofalem, sekwah41, Sikatsu1997, Cool_boy, sumdream, Amaury Carrade, nicuch, kotarobo, prettydude, Jumpy91, Niasio, Patbox, Puremin0rez, Prof-Bloodstone, PlanetTeamSpeak] From e28de718ac27c2ea8fa2af21db6d9e09b7005b07 Mon Sep 17 00:00:00 2001 From: "Larry (Wolfieheart)" Date: Thu, 13 Apr 2023 19:31:14 +0200 Subject: [PATCH 240/369] [CORE] ArmorStandEditor 1.19.4-42 (#223) * [CORE] SonarLint Code Review Remarks Signed-off-by: Wolfieheart * [CORE] Update Copyright Signed-off-by: Wolfieheart * [CORE] Add Kugge as Contributer/Author in plugin.yml Signed-off-by: Wolfieheart * [CORE] Sonar Remarks and remove useless comments on Imports (More Readable without them) Signed-off-by: Wolfieheart * [CORE] Add Support Discord to Translation Files. Signed-off-by: Wolfieheart * [CORE] Fis a Comment and Update Metrics Version Signed-off-by: Wolfieheart --------- Signed-off-by: Wolfieheart --- README.md | 18 +- pom.xml | 14 +- .../ArmorStandEditorPlugin.java | 4 +- .../rypofalem/armorstandeditor/CommandEx.java | 20 +- .../rypofalem/armorstandeditor/Metrics.java | 219 ++++++++++-------- .../armorstandeditor/PlayerEditor.java | 3 +- .../armorstandeditor/PlayerEditorManager.java | 2 +- .../rypofalem/armorstandeditor/Scheduler.java | 18 ++ .../rypofalem/armorstandeditor/Util.java | 2 +- .../armorstandeditor/language/Language.java | 3 +- .../armorstandeditor/menu/ASEHolder.java | 2 +- .../armorstandeditor/menu/EquipmentMenu.java | 2 +- .../rypofalem/armorstandeditor/menu/Menu.java | 2 +- .../modes/AdjustmentMode.java | 2 +- .../modes/ArmorStandData.java | 2 +- .../armorstandeditor/modes/Axis.java | 2 +- .../armorstandeditor/modes/CopySlots.java | 2 +- .../armorstandeditor/modes/EditMode.java | 2 +- .../protections/BentoBoxProtection.java | 19 ++ .../protections/GriefDefenderProtection.java | 20 +- .../GriefPreventionProtection.java | 19 ++ .../protections/LandsProtection.java | 18 ++ .../protections/PlotSquaredProtection.java | 18 ++ .../protections/Protection.java | 18 ++ .../protections/ResidenceProtection.java | 18 ++ .../protections/SkyblockProtection.java | 18 ++ .../protections/TownyProtection.java | 18 ++ .../protections/WorldGuardProtection.java | 2 +- src/main/resources/config.yml | 2 +- src/main/resources/lang/de_DE.yml | 2 + src/main/resources/lang/en_US.yml | 2 + src/main/resources/lang/es_ES.yml | 2 + src/main/resources/lang/fr_FR.yml | 3 + src/main/resources/lang/nl_NL.yml | 24 ++ src/main/resources/lang/pt_BR.yml | 5 +- src/main/resources/lang/ru_RU.yml | 4 +- src/main/resources/lang/zh_CN.yml | 2 + src/main/resources/plugin.yml | 2 +- 38 files changed, 387 insertions(+), 148 deletions(-) diff --git a/README.md b/README.md index 36b53cc8..2e41e099 100644 --- a/README.md +++ b/README.md @@ -8,18 +8,18 @@ [![Scanned with Sonarcloud](https://img.shields.io/badge/Scanned%20With-Sonarcloud-orange?style=flat&logo=sonarcloud)](https://sonarcloud.io/summary/new_code?id=Wolfst0rm_ArmorStandEditor) [![wakatime](https://wakatime.com/badge/github/Wolfst0rm/ArmorStandEditor.svg?style=flat)](https://wakatime.com/badge/github/Wolfst0rm/ArmorStandEditor) [![Compatibility/GetBukkit](https://img.shields.io/badge/Compatability-Paper%2C%20Spigot%2C%20Bukkit%20etc.%20(GetBukkit.org)-yellowgreen?style=flat)](https://getbukkit.org/) -[![License](https://img.shields.io/badge/Licence-GNU%20Public%20V2%20-red?style=flat)](https://github.com/Wolfst0rm/ArmorStandEditor/LICENSE.md) -[![Roadmap](https://img.shields.io/badge/Roadmap-ArmorStandEditor--Issues%2311-orange?style=flat)](https://github.com/Wolfst0rm/ArmorStandEditor-Issues/issues/11) +[![License](https://img.shields.io/badge/Licence-GNU%20Public%20V3%20-red?style=flat)](https://github.com/Wolfst0rm/ArmorStandEditor/LICENSE.md) +[![Support Discord](https://dcbadge.vercel.app/api/server/3BbJKWpTCj?style=flat)](https://discord.gg/3BbJKWpTCj) -ArmorStandEditor is a plugin for [Spigot and related forks](https://www.spigotmc.org/resources/armorstandeditor-reborn.94503/) to allow players in survival to easily edit armor stand pose and attributes. +ArmorStandEditor is a plugin for [Spigot](https://www.spigotmc.org/resources/armorstandeditor-reborn.94503/) / [Paper, All related forks](https://papermc.io/downloads/paper) / [Folia etc.](https://github.com/PaperMC/Folia) to allow players in survival to easily edit armor stand pose and attributes.
## Credits -* RypoFalem for the original version of this plugin. Thank you for all your hard work (Archived in branch [Original-Version](https://github.com/Wolfst0rm/ArmorStandEditor/tree/Original-Version) ) +* RypoFalem for the original version of this plugin. Thank you for all your hard work (Archived on this repository on the branch [Original-Version](https://github.com/Wolfst0rm/ArmorStandEditor/tree/Original-Version) ) * Anyone who has contributed to this project with tests, issues, code reviews etc. Thank you! -* Shamblecraft for allowing me to test on the server as required before publishing to production. +* Shamblecraft for using the plugin originally and giving me the idea to maintain it. ## Downloads Downloads for Version 1.17 and higher can be obtained from the [download page](https://www.spigotmc.org/resources/armorstandeditor-reborn.94503/) or our [release tracker](https://github.com/Wolfst0rm/ArmorStandEditor/releases) here on GitHub. @@ -29,8 +29,8 @@ The Latest Downloads Shortcut Links: * [ArmorStandEditor-Last (Unstable)](https://github.com/Wolfst0rm/ArmorStandEditor/actions) - **Use these at your own risk. Limited Support is provided for testing purposes** * 1.20 - Not yet available - * [Spigot Redirect to latest release](https://www.spigotmc.org/resources/armorstandeditor-reborn.94503/) - * [Modrinth Redirect to Latest Release](https://modrinth.com/plugin/armorstandeditor-reborn) + * [Spigot Redirect to the latest release](https://www.spigotmc.org/resources/armorstandeditor-reborn.94503/) + * [Modrinth Redirect to the latest Release](https://modrinth.com/plugin/armorstandeditor-reborn) * 1.19 to 1.19.4 * [Spigot/Github](https://github.com/Wolfieheart/ArmorStandEditor/releases/tag/1.19.4-41) * [Modrinth](https://modrinth.com/plugin/armorstandeditor-reborn/version/1.19.4-41) @@ -69,8 +69,7 @@ subject to change in the future. The minimum enforced API Version is 1.13. * Respects multiple protection plugins: WorldGuard, Towny, GriefPrevention, Residence etc. * Targeting of an ArmorStand by pressing F with the tool in your hand * Glowing ArmorStand to signify Targeting and Slot Disables through the use of Scoreboards. - -You can also follow our [Feature Roadmap](https://github.com/Wolfst0rm/ArmorStandEditor-Issues/issues/11) to see what we have planned (Updated as required). +* Folia Support (as of 1.19.4) ## Support Support for ArmorStandEditor is provided: @@ -78,7 +77,6 @@ Support for ArmorStandEditor is provided: * For Latest Release and Unstable versions of the Plugin If there are issues with the plugin on the latest release, you can report them [here](https://github.com/Wolfst0rm/ArmorStandEditor/issues/new?assignees=&labels=P1%3A+To+Be+Tested&template=behaviour-bug.yml). - If there are new feature requests, you can ask them to be implemented [here](https://github.com/Wolfst0rm/ArmorStandEditor/issues/new?assignees=&labels=&template=feature-request.yml). **NOTE:** Bugs are also first tested to ensure that they can be reproduced according to the reported steps. If they can not, we will ask for more info. diff --git a/pom.xml b/pom.xml index d523aa54..1b4b9c64 100644 --- a/pom.xml +++ b/pom.xml @@ -35,6 +35,10 @@ spigot-repo https://hub.spigotmc.org/nexus/content/repositories/snapshots/ + + paper-repo + https://repo.papermc.io/repository/maven-public/ + sk89q-repo @@ -77,13 +81,19 @@
- + org.spigotmc spigot-api 1.19.4-R0.1-SNAPSHOT provided + + dev.folia + folia-api + 1.19.4-R0.1-SNAPSHOT + provided + com.sk89q.worldguard @@ -122,7 +132,7 @@ com.palmergames.bukkit.towny towny - 0.99.0.0 + 0.99.0.1 provided diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/ArmorStandEditorPlugin.java b/src/main/java/io/github/rypofalem/armorstandeditor/ArmorStandEditorPlugin.java index 78d3f428..7aaef88d 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/ArmorStandEditorPlugin.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/ArmorStandEditorPlugin.java @@ -1,6 +1,6 @@ /* * ArmorStandEditor: Bukkit plugin to allow editing armor stand attributes - * Copyright (C) 2016-2022 RypoFalem + * Copyright (C) 2016-2023 RypoFalem * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License @@ -44,7 +44,7 @@ public class ArmorStandEditorPlugin extends JavaPlugin{ - //!!! DO NOT REMOVE THESE UNDER ANY CIRCUMSTANCES - Required for BStats and !!! + //!!! DO NOT REMOVE THESE UNDER ANY CIRCUMSTANCES - Required for BStats and UpdateChecker !!! public static final int SPIGOT_RESOURCE_ID = 94503; //Used for Update Checker private static final int PLUGIN_ID = 12668; //Used for BStats Metrics diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/CommandEx.java b/src/main/java/io/github/rypofalem/armorstandeditor/CommandEx.java index 5b6c970d..269e323b 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/CommandEx.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/CommandEx.java @@ -1,6 +1,6 @@ /* * ArmorStandEditor: Bukkit plugin to allow editing armor stand attributes - * Copyright (C) 2016 RypoFalem + * Copyright (C) 2016-2023 RypoFalem * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License @@ -19,16 +19,13 @@ package io.github.rypofalem.armorstandeditor; -//UpdateChecker import com.jeff_media.updatechecker.UpdateCheckSource; import com.jeff_media.updatechecker.UpdateChecker; -//Plugin Self import io.github.rypofalem.armorstandeditor.modes.AdjustmentMode; import io.github.rypofalem.armorstandeditor.modes.Axis; import io.github.rypofalem.armorstandeditor.modes.EditMode; -//Bukkit import org.bukkit.ChatColor; import org.bukkit.Sound; import org.bukkit.command.Command; @@ -40,11 +37,9 @@ import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.meta.ItemMeta; -//Java import java.util.ArrayList; import java.util.List; import java.util.Objects; -import java.util.stream.Collectors; public class CommandEx implements CommandExecutor, TabCompleter { ArmorStandEditorPlugin plugin; @@ -52,7 +47,7 @@ public class CommandEx implements CommandExecutor, TabCompleter { final String LISTAXIS = ChatColor.YELLOW + "/ase axis <" + Util.getEnumList(Axis.class) + ">"; final String LISTADJUSTMENT = ChatColor.YELLOW + "/ase adj <" + Util.getEnumList(AdjustmentMode.class) + ">"; final String LISTSLOT = ChatColor.YELLOW + "/ase slot <1-9>"; - final String HELP = ChatColor.YELLOW + "/ase help"; + final String HELP = ChatColor.YELLOW + "/ase help or /ase ?"; final String VERSION = ChatColor.YELLOW + "/ase version"; final String UPDATE = ChatColor.YELLOW + "/ase update"; final String GIVECUSTOMMODEL = ChatColor.YELLOW + "/ase give"; @@ -90,8 +85,7 @@ && getPermissionBasic( (Player) sender))) { break; case "slot": commandSlot(player, args); break; - case "help": - case "?": commandHelp(player); + case "help","?": commandHelp(player); break; case "version": commandVersion(player); break; @@ -203,7 +197,7 @@ private void commandMode( Player player, String[] args) { } } - private void commandHelp( Player player) { + private void commandHelp(Player player) { player.closeInventory(); player.playSound(player.getLocation(), Sound.ENTITY_EXPERIENCE_ORB_PICKUP, 1f, 1f); player.sendMessage(plugin.getLang().getMessage("help", "info", plugin.editTool.name())); @@ -211,6 +205,7 @@ private void commandHelp( Player player) { player.sendMessage(plugin.getLang().getMessage("helptips", "info")); player.sendMessage(""); player.sendRawMessage(plugin.getLang().getMessage("helpurl", "")); + player.sendRawMessage(plugin.getLang().getMessage("helpdiscord", "")); } private void commandUpdate(Player player) { @@ -277,8 +272,6 @@ public List onTabComplete(CommandSender sender, Command command, String if (args.length == 1 && getPermissionBasic(player)) { - - //Basic Permission Check if (getPermissionBasic(player)) { argList.add("mode"); @@ -286,6 +279,7 @@ public List onTabComplete(CommandSender sender, Command command, String argList.add("adj"); argList.add("slot"); argList.add("help"); + argList.add("?"); } //Update Permission Check @@ -299,7 +293,7 @@ public List onTabComplete(CommandSender sender, Command command, String argList.add("give"); } - return argList.stream().filter(a -> a.startsWith(args[0])).collect(Collectors.toList()); + return argList.stream().filter(a -> a.startsWith(args[0])).toList(); } //Options for Mode diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/Metrics.java b/src/main/java/io/github/rypofalem/armorstandeditor/Metrics.java index 1cc318cf..8a3666bb 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/Metrics.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/Metrics.java @@ -13,7 +13,6 @@ * Violations will result in a ban of your plugin and account from bStats. */ package io.github.rypofalem.armorstandeditor; - import java.io.BufferedReader; import java.io.ByteArrayOutputStream; import java.io.DataOutputStream; @@ -31,8 +30,8 @@ import java.util.Set; import java.util.UUID; import java.util.concurrent.Callable; -import java.util.concurrent.Executors; import java.util.concurrent.ScheduledExecutorService; +import java.util.concurrent.ScheduledThreadPoolExecutor; import java.util.concurrent.TimeUnit; import java.util.function.BiConsumer; import java.util.function.Consumer; @@ -101,7 +100,7 @@ public Metrics(JavaPlugin plugin, int serviceId) { enabled, this::appendPlatformData, this::appendServiceData, - submitDataTask -> Scheduler.runTask(plugin, submitDataTask), + submitDataTask -> Bukkit.getScheduler().runTask(plugin, submitDataTask), plugin::isEnabled, (message, error) -> this.plugin.getLogger().log(Level.WARNING, message, error), (message) -> this.plugin.getLogger().log(Level.INFO, message), @@ -110,6 +109,11 @@ public Metrics(JavaPlugin plugin, int serviceId) { logResponseStatusText); } + /** Shuts down the underlying scheduler service. */ + public void shutdown() { + metricsBase.shutdown(); + } + /** * Adds a custom chart. * @@ -153,13 +157,12 @@ private int getPlayerAmount() { public static class MetricsBase { /** The version of the Metrics class. */ - public static final String METRICS_VERSION = "3.0.0"; - - private static final ScheduledExecutorService scheduler = - Executors.newScheduledThreadPool(1, task -> new Thread(task, "bStats-Metrics")); + public static final String METRICS_VERSION = "3.0.2"; private static final String REPORT_URL = "https://bStats.org/api/v2/data/%s"; + private final ScheduledExecutorService scheduler; + private final String platform; private final String serverUuid; @@ -223,6 +226,14 @@ public MetricsBase( boolean logErrors, boolean logSentData, boolean logResponseStatusText) { + ScheduledThreadPoolExecutor scheduler = + new ScheduledThreadPoolExecutor(1, task -> new Thread(task, "bStats-Metrics")); + // We want delayed tasks (non-periodic) that will execute in the future to be + // cancelled when the scheduler is shutdown. + // Otherwise, we risk preventing the server from shutting down even when + // MetricsBase#shutdown() is called + scheduler.setExecuteExistingDelayedTasksAfterShutdownPolicy(false); + this.scheduler = scheduler; this.platform = platform; this.serverUuid = serverUuid; this.serviceId = serviceId; @@ -238,7 +249,8 @@ public MetricsBase( this.logResponseStatusText = logResponseStatusText; checkRelocation(); if (enabled) { - // WARNING: Removing the option to opt-out will get your plugin banned from bStats + // WARNING: Removing the option to opt-out will get your plugin banned from + // bStats startSubmitting(); } } @@ -247,6 +259,10 @@ public void addCustomChart(CustomChart chart) { this.customCharts.add(chart); } + public void shutdown() { + scheduler.shutdown(); + } + private void startSubmitting() { final Runnable submitTask = () -> { @@ -261,13 +277,14 @@ private void startSubmitting() { this.submitData(); } }; - // Many servers tend to restart at a fixed time at xx:00 which causes an uneven distribution - // of requests on the - // bStats backend. To circumvent this problem, we introduce some randomness into the initial - // and second delay. - // WARNING: You must not modify and part of this Metrics class, including the submit delay or - // frequency! - // WARNING: Modifying this code will get your plugin banned on bStats. Just don't do it! + // Many servers tend to restart at a fixed time at xx:00 which causes an uneven + // distribution of requests on the + // bStats backend. To circumvent this problem, we introduce some randomness into + // the initial and second delay. + // WARNING: You must not modify and part of this Metrics class, including the + // submit delay or frequency! + // WARNING: Modifying this code will get your plugin banned on bStats. Just + // don't do it! long initialDelay = (long) (1000 * 60 * (3 + Math.random() * 3)); long secondDelay = (long) (1000 * 60 * (Math.random() * 30)); scheduler.schedule(submitTask, initialDelay, TimeUnit.MILLISECONDS); @@ -342,14 +359,14 @@ private void checkRelocation() { // You can use the property to disable the check in your test environment if (System.getProperty("bstats.relocatecheck") == null || !System.getProperty("bstats.relocatecheck").equals("false")) { - // Maven's Relocate is clever and changes strings, too. So we have to use this little - // "trick" ... :D + // Maven's Relocate is clever and changes strings, too. So we have to use this + // little "trick" ... :D final String defaultPackage = new String(new byte[] {'o', 'r', 'g', '.', 'b', 's', 't', 'a', 't', 's'}); final String examplePackage = new String(new byte[] {'y', 'o', 'u', 'r', '.', 'p', 'a', 'c', 'k', 'a', 'g', 'e'}); - // We want to make sure no one just copy & pastes the example and uses the wrong package - // names + // We want to make sure no one just copy & pastes the example and uses the wrong + // package names if (MetricsBase.class.getPackage().getName().startsWith(defaultPackage) || MetricsBase.class.getPackage().getName().startsWith(examplePackage)) { throw new IllegalStateException("bStats Metrics class has not been relocated correctly!"); @@ -375,9 +392,9 @@ private static byte[] compress(final String str) throws IOException { } } - public static class DrilldownPie extends CustomChart { + public static class SimplePie extends CustomChart { - private final Callable>> callable; + private final Callable callable; /** * Class constructor. @@ -385,41 +402,23 @@ public static class DrilldownPie extends CustomChart { * @param chartId The id of the chart. * @param callable The callable which is used to request the chart data. */ - public DrilldownPie(String chartId, Callable>> callable) { + public SimplePie(String chartId, Callable callable) { super(chartId); this.callable = callable; } @Override - public JsonObjectBuilder.JsonObject getChartData() throws Exception { - JsonObjectBuilder valuesBuilder = new JsonObjectBuilder(); - Map> map = callable.call(); - if (map == null || map.isEmpty()) { - // Null = skip the chart - return null; - } - boolean reallyAllSkipped = true; - for (Map.Entry> entryValues : map.entrySet()) { - JsonObjectBuilder valueBuilder = new JsonObjectBuilder(); - boolean allSkipped = true; - for (Map.Entry valueEntry : map.get(entryValues.getKey()).entrySet()) { - valueBuilder.appendField(valueEntry.getKey(), valueEntry.getValue()); - allSkipped = false; - } - if (!allSkipped) { - reallyAllSkipped = false; - valuesBuilder.appendField(entryValues.getKey(), valueBuilder.build()); - } - } - if (reallyAllSkipped) { + protected JsonObjectBuilder.JsonObject getChartData() throws Exception { + String value = callable.call(); + if (value == null || value.isEmpty()) { // Null = skip the chart return null; } - return new JsonObjectBuilder().appendField("values", valuesBuilder.build()).build(); + return new JsonObjectBuilder().appendField("value", value).build(); } } - public static class AdvancedPie extends CustomChart { + public static class MultiLineChart extends CustomChart { private final Callable> callable; @@ -429,7 +428,7 @@ public static class AdvancedPie extends CustomChart { * @param chartId The id of the chart. * @param callable The callable which is used to request the chart data. */ - public AdvancedPie(String chartId, Callable> callable) { + public MultiLineChart(String chartId, Callable> callable) { super(chartId); this.callable = callable; } @@ -459,7 +458,7 @@ protected JsonObjectBuilder.JsonObject getChartData() throws Exception { } } - public static class MultiLineChart extends CustomChart { + public static class AdvancedPie extends CustomChart { private final Callable> callable; @@ -469,7 +468,7 @@ public static class MultiLineChart extends CustomChart { * @param chartId The id of the chart. * @param callable The callable which is used to request the chart data. */ - public MultiLineChart(String chartId, Callable> callable) { + public AdvancedPie(String chartId, Callable> callable) { super(chartId); this.callable = callable; } @@ -529,43 +528,9 @@ protected JsonObjectBuilder.JsonObject getChartData() throws Exception { } } - public abstract static class CustomChart { - - private final String chartId; - - protected CustomChart(String chartId) { - if (chartId == null) { - throw new IllegalArgumentException("chartId must not be null"); - } - this.chartId = chartId; - } - - public JsonObjectBuilder.JsonObject getRequestJsonObject( - BiConsumer errorLogger, boolean logErrors) { - JsonObjectBuilder builder = new JsonObjectBuilder(); - builder.appendField("chartId", chartId); - try { - JsonObjectBuilder.JsonObject data = getChartData(); - if (data == null) { - // If the data is null we don't send the chart. - return null; - } - builder.appendField("data", data); - } catch (Throwable t) { - if (logErrors) { - errorLogger.accept("Failed to get data for custom chart with id " + chartId, t); - } - return null; - } - return builder.build(); - } - - protected abstract JsonObjectBuilder.JsonObject getChartData() throws Exception; - } - - public static class SimplePie extends CustomChart { + public static class AdvancedBarChart extends CustomChart { - private final Callable callable; + private final Callable> callable; /** * Class constructor. @@ -573,25 +538,39 @@ public static class SimplePie extends CustomChart { * @param chartId The id of the chart. * @param callable The callable which is used to request the chart data. */ - public SimplePie(String chartId, Callable callable) { + public AdvancedBarChart(String chartId, Callable> callable) { super(chartId); this.callable = callable; } @Override protected JsonObjectBuilder.JsonObject getChartData() throws Exception { - String value = callable.call(); - if (value == null || value.isEmpty()) { + JsonObjectBuilder valuesBuilder = new JsonObjectBuilder(); + Map map = callable.call(); + if (map == null || map.isEmpty()) { // Null = skip the chart return null; } - return new JsonObjectBuilder().appendField("value", value).build(); + boolean allSkipped = true; + for (Map.Entry entry : map.entrySet()) { + if (entry.getValue().length == 0) { + // Skip this invalid + continue; + } + allSkipped = false; + valuesBuilder.appendField(entry.getKey(), entry.getValue()); + } + if (allSkipped) { + // Null = skip the chart + return null; + } + return new JsonObjectBuilder().appendField("values", valuesBuilder.build()).build(); } } - public static class AdvancedBarChart extends CustomChart { + public static class DrilldownPie extends CustomChart { - private final Callable> callable; + private final Callable>> callable; /** * Class constructor. @@ -599,29 +578,33 @@ public static class AdvancedBarChart extends CustomChart { * @param chartId The id of the chart. * @param callable The callable which is used to request the chart data. */ - public AdvancedBarChart(String chartId, Callable> callable) { + public DrilldownPie(String chartId, Callable>> callable) { super(chartId); this.callable = callable; } @Override - protected JsonObjectBuilder.JsonObject getChartData() throws Exception { + public JsonObjectBuilder.JsonObject getChartData() throws Exception { JsonObjectBuilder valuesBuilder = new JsonObjectBuilder(); - Map map = callable.call(); + Map> map = callable.call(); if (map == null || map.isEmpty()) { // Null = skip the chart return null; } - boolean allSkipped = true; - for (Map.Entry entry : map.entrySet()) { - if (entry.getValue().length == 0) { - // Skip this invalid - continue; + boolean reallyAllSkipped = true; + for (Map.Entry> entryValues : map.entrySet()) { + JsonObjectBuilder valueBuilder = new JsonObjectBuilder(); + boolean allSkipped = true; + for (Map.Entry valueEntry : map.get(entryValues.getKey()).entrySet()) { + valueBuilder.appendField(valueEntry.getKey(), valueEntry.getValue()); + allSkipped = false; + } + if (!allSkipped) { + reallyAllSkipped = false; + valuesBuilder.appendField(entryValues.getKey(), valueBuilder.build()); } - allSkipped = false; - valuesBuilder.appendField(entry.getKey(), entry.getValue()); } - if (allSkipped) { + if (reallyAllSkipped) { // Null = skip the chart return null; } @@ -629,6 +612,40 @@ protected JsonObjectBuilder.JsonObject getChartData() throws Exception { } } + public abstract static class CustomChart { + + private final String chartId; + + protected CustomChart(String chartId) { + if (chartId == null) { + throw new IllegalArgumentException("chartId must not be null"); + } + this.chartId = chartId; + } + + public JsonObjectBuilder.JsonObject getRequestJsonObject( + BiConsumer errorLogger, boolean logErrors) { + JsonObjectBuilder builder = new JsonObjectBuilder(); + builder.appendField("chartId", chartId); + try { + JsonObjectBuilder.JsonObject data = getChartData(); + if (data == null) { + // If the data is null we don't send the chart. + return null; + } + builder.appendField("data", data); + } catch (Throwable t) { + if (logErrors) { + errorLogger.accept("Failed to get data for custom chart with id " + chartId, t); + } + return null; + } + return builder.build(); + } + + protected abstract JsonObjectBuilder.JsonObject getChartData() throws Exception; + } + public static class SingleLineChart extends CustomChart { private final Callable callable; diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditor.java b/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditor.java index bb741fe8..518da38d 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditor.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditor.java @@ -1,6 +1,6 @@ /* * ArmorStandEditor: Bukkit plugin to allow editing armor stand attributes - * Copyright (C) 2016 RypoFalem + * Copyright (C) 2016-2023 RypoFalem * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License @@ -16,7 +16,6 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ - package io.github.rypofalem.armorstandeditor; import io.github.rypofalem.armorstandeditor.menu.EquipmentMenu; diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditorManager.java b/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditorManager.java index ba8c79bd..b6d9385d 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditorManager.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditorManager.java @@ -1,6 +1,6 @@ /* * ArmorStandEditor: Bukkit plugin to allow editing armor stand attributes - * Copyright (C) 2016 RypoFalem + * Copyright (C) 2016-2023 RypoFalem * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/Scheduler.java b/src/main/java/io/github/rypofalem/armorstandeditor/Scheduler.java index 594ae083..1066726c 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/Scheduler.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/Scheduler.java @@ -1,3 +1,21 @@ +/* + * ArmorStandEditor: Bukkit plugin to allow editing armor stand attributes + * Copyright (C) 2016-2023 RypoFalem + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ package io.github.rypofalem.armorstandeditor; import org.bukkit.Bukkit; diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/Util.java b/src/main/java/io/github/rypofalem/armorstandeditor/Util.java index 52f202ff..1b9a4550 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/Util.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/Util.java @@ -1,6 +1,6 @@ /* * ArmorStandEditor: Bukkit plugin to allow editing armor stand attributes - * Copyright (C) 2016 RypoFalem + * Copyright (C) 2016-2023 RypoFalem * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/language/Language.java b/src/main/java/io/github/rypofalem/armorstandeditor/language/Language.java index 9b11a0a4..ea579ca7 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/language/Language.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/language/Language.java @@ -1,6 +1,6 @@ /* * ArmorStandEditor: Bukkit plugin to allow editing armor stand attributes - * Copyright (C) 2016 RypoFalem + * Copyright (C) 2016-2023 RypoFalem * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License @@ -17,6 +17,7 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ + package io.github.rypofalem.armorstandeditor.language; import io.github.rypofalem.armorstandeditor.ArmorStandEditorPlugin; diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/menu/ASEHolder.java b/src/main/java/io/github/rypofalem/armorstandeditor/menu/ASEHolder.java index 2f8dedb8..f3fe45f0 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/menu/ASEHolder.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/menu/ASEHolder.java @@ -1,6 +1,6 @@ /* * ArmorStandEditor: Bukkit plugin to allow editing armor stand attributes - * Copyright (C) 2016 RypoFalem + * Copyright (C) 2016-2023 RypoFalem * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/menu/EquipmentMenu.java b/src/main/java/io/github/rypofalem/armorstandeditor/menu/EquipmentMenu.java index 49672fbc..d1eb2f6e 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/menu/EquipmentMenu.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/menu/EquipmentMenu.java @@ -1,6 +1,6 @@ /* * ArmorStandEditor: Bukkit plugin to allow editing armor stand attributes - * Copyright (C) 2016 RypoFalem + * Copyright (C) 2016-2023 RypoFalem * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/menu/Menu.java b/src/main/java/io/github/rypofalem/armorstandeditor/menu/Menu.java index 22bd900b..3ac66fb4 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/menu/Menu.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/menu/Menu.java @@ -1,6 +1,6 @@ /* * ArmorStandEditor: Bukkit plugin to allow editing armor stand attributes - * Copyright (C) 2016 RypoFalem + * Copyright (C) 2016-2023 RypoFalem * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/modes/AdjustmentMode.java b/src/main/java/io/github/rypofalem/armorstandeditor/modes/AdjustmentMode.java index f2ea381a..631af300 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/modes/AdjustmentMode.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/modes/AdjustmentMode.java @@ -1,6 +1,6 @@ /* * ArmorStandEditor: Bukkit plugin to allow editing armor stand attributes - * Copyright (C) 2016 RypoFalem + * Copyright (C) 2016-2023 RypoFalem * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/modes/ArmorStandData.java b/src/main/java/io/github/rypofalem/armorstandeditor/modes/ArmorStandData.java index f7cb23ec..70c190f0 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/modes/ArmorStandData.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/modes/ArmorStandData.java @@ -1,6 +1,6 @@ /* * ArmorStandEditor: Bukkit plugin to allow editing armor stand attributes - * Copyright (C) 2016 RypoFalem + * Copyright (C) 2016-2023 RypoFalem * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/modes/Axis.java b/src/main/java/io/github/rypofalem/armorstandeditor/modes/Axis.java index b1b28937..178335ef 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/modes/Axis.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/modes/Axis.java @@ -1,6 +1,6 @@ /* * ArmorStandEditor: Bukkit plugin to allow editing armor stand attributes - * Copyright (C) 2016 RypoFalem + * Copyright (C) 2016-2023 RypoFalem * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/modes/CopySlots.java b/src/main/java/io/github/rypofalem/armorstandeditor/modes/CopySlots.java index a7a22276..ace6efd4 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/modes/CopySlots.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/modes/CopySlots.java @@ -1,6 +1,6 @@ /* * ArmorStandEditor: Bukkit plugin to allow editing armor stand attributes - * Copyright (C) 2016 RypoFalem + * Copyright (C) 2016-2023 RypoFalem * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/modes/EditMode.java b/src/main/java/io/github/rypofalem/armorstandeditor/modes/EditMode.java index b00453eb..b161d91b 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/modes/EditMode.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/modes/EditMode.java @@ -1,6 +1,6 @@ /* * ArmorStandEditor: Bukkit plugin to allow editing armor stand attributes - * Copyright (C) 2016 RypoFalem + * Copyright (C) 2016-2023 RypoFalem * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/protections/BentoBoxProtection.java b/src/main/java/io/github/rypofalem/armorstandeditor/protections/BentoBoxProtection.java index 490c4d84..1a434f75 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/protections/BentoBoxProtection.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/protections/BentoBoxProtection.java @@ -1,3 +1,22 @@ +/* + * ArmorStandEditor: Bukkit plugin to allow editing armor stand attributes + * Copyright (C) 2016-2023 RypoFalem + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + package io.github.rypofalem.armorstandeditor.protections; import org.bukkit.Bukkit; diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/protections/GriefDefenderProtection.java b/src/main/java/io/github/rypofalem/armorstandeditor/protections/GriefDefenderProtection.java index 18221a7c..0d7dc403 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/protections/GriefDefenderProtection.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/protections/GriefDefenderProtection.java @@ -1,5 +1,23 @@ -package io.github.rypofalem.armorstandeditor.protections; +/* + * ArmorStandEditor: Bukkit plugin to allow editing armor stand attributes + * Copyright (C) 2016-2023 RypoFalem + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ +package io.github.rypofalem.armorstandeditor.protections; import com.griefdefender.api.GriefDefender; import com.griefdefender.api.claim.Claim; diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/protections/GriefPreventionProtection.java b/src/main/java/io/github/rypofalem/armorstandeditor/protections/GriefPreventionProtection.java index 99433abc..06e05c0b 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/protections/GriefPreventionProtection.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/protections/GriefPreventionProtection.java @@ -1,3 +1,22 @@ +/* + * ArmorStandEditor: Bukkit plugin to allow editing armor stand attributes + * Copyright (C) 2016-2023 RypoFalem + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + package io.github.rypofalem.armorstandeditor.protections; import me.ryanhamshire.GriefPrevention.Claim; diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/protections/LandsProtection.java b/src/main/java/io/github/rypofalem/armorstandeditor/protections/LandsProtection.java index e7380cbb..56914a19 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/protections/LandsProtection.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/protections/LandsProtection.java @@ -1,3 +1,21 @@ +/* + * ArmorStandEditor: Bukkit plugin to allow editing armor stand attributes + * Copyright (C) 2016-2023 RypoFalem + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ package io.github.rypofalem.armorstandeditor.protections; import io.github.rypofalem.armorstandeditor.ArmorStandEditorPlugin; diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/protections/PlotSquaredProtection.java b/src/main/java/io/github/rypofalem/armorstandeditor/protections/PlotSquaredProtection.java index 69e7d187..3d25ecac 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/protections/PlotSquaredProtection.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/protections/PlotSquaredProtection.java @@ -1,3 +1,21 @@ +/* + * ArmorStandEditor: Bukkit plugin to allow editing armor stand attributes + * Copyright (C) 2016-2023 RypoFalem + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ package io.github.rypofalem.armorstandeditor.protections; import com.plotsquared.bukkit.BukkitPlatform; diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/protections/Protection.java b/src/main/java/io/github/rypofalem/armorstandeditor/protections/Protection.java index 971c1126..066ef2fa 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/protections/Protection.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/protections/Protection.java @@ -1,3 +1,21 @@ +/* + * ArmorStandEditor: Bukkit plugin to allow editing armor stand attributes + * Copyright (C) 2016-2023 RypoFalem + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ package io.github.rypofalem.armorstandeditor.protections; import org.bukkit.block.Block; diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/protections/ResidenceProtection.java b/src/main/java/io/github/rypofalem/armorstandeditor/protections/ResidenceProtection.java index 881a576b..f6fdce89 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/protections/ResidenceProtection.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/protections/ResidenceProtection.java @@ -1,3 +1,21 @@ +/* + * ArmorStandEditor: Bukkit plugin to allow editing armor stand attributes + * Copyright (C) 2016-2023 RypoFalem + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ package io.github.rypofalem.armorstandeditor.protections; import com.bekvon.bukkit.residence.Residence; diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/protections/SkyblockProtection.java b/src/main/java/io/github/rypofalem/armorstandeditor/protections/SkyblockProtection.java index b2632dad..6d26ec14 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/protections/SkyblockProtection.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/protections/SkyblockProtection.java @@ -1,3 +1,21 @@ +/* + * ArmorStandEditor: Bukkit plugin to allow editing armor stand attributes + * Copyright (C) 2016-2023 RypoFalem + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ package io.github.rypofalem.armorstandeditor.protections; import com.bgsoftware.superiorskyblock.api.SuperiorSkyblockAPI; diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/protections/TownyProtection.java b/src/main/java/io/github/rypofalem/armorstandeditor/protections/TownyProtection.java index 46c9f6d7..6be3332f 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/protections/TownyProtection.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/protections/TownyProtection.java @@ -1,3 +1,21 @@ +/* + * ArmorStandEditor: Bukkit plugin to allow editing armor stand attributes + * Copyright (C) 2016-2023 RypoFalem + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ package io.github.rypofalem.armorstandeditor.protections; import com.palmergames.bukkit.towny.TownyAPI; diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/protections/WorldGuardProtection.java b/src/main/java/io/github/rypofalem/armorstandeditor/protections/WorldGuardProtection.java index 5d172cbf..814939d2 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/protections/WorldGuardProtection.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/protections/WorldGuardProtection.java @@ -1,6 +1,6 @@ /* * ArmorStandEditor: Bukkit plugin to allow editing armor stand attributes - * Copyright (C) 2016-2022 RypoFalem + * Copyright (C) 2016-2023 RypoFalem * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml index 0f32cfba..920ddbb7 100644 --- a/src/main/resources/config.yml +++ b/src/main/resources/config.yml @@ -3,7 +3,7 @@ #-----------------------------# #DO NOT CHANGE THIS - CHANGES AUTOMATICALLY PER UPDATE -version: "1.19.4-41" +version: "1.19.4-42" #----------- LANGUAGE #Name of the language file you wish to use diff --git a/src/main/resources/lang/de_DE.yml b/src/main/resources/lang/de_DE.yml index 3bef403d..31f78883 100644 --- a/src/main/resources/lang/de_DE.yml +++ b/src/main/resources/lang/de_DE.yml @@ -85,6 +85,8 @@ helptips: 3. Du kannst sneaken und das Scrollrad drehen während du das Bearbeitungswerkzeug hältst um die Achsen zu wechseln ohne das Menü zu öffnen." helpurl: msg: "Weitere Infos: https://github.com/RypoFalem/ArmorStandEditor/wiki" +helpdiscord: + msg: "or join our Discord: https://discord.gg/3BbJKWpTCj" give: msg: Player given Item with CustomModelData diff --git a/src/main/resources/lang/en_US.yml b/src/main/resources/lang/en_US.yml index fcfb11f3..8bce74b1 100644 --- a/src/main/resources/lang/en_US.yml +++ b/src/main/resources/lang/en_US.yml @@ -94,6 +94,8 @@ helptips: 3. You can use crouch + scroll wheel while holding the edit tool to change Axis without opening the menu" helpurl: msg: "More info: https://github.com/RypoFalem/ArmorStandEditor/wiki" +helpdiscord: + msg: "or join our Discord: https://discord.gg/3BbJKWpTCj" #warn cantedit: diff --git a/src/main/resources/lang/es_ES.yml b/src/main/resources/lang/es_ES.yml index f4b6ba14..0770fc97 100644 --- a/src/main/resources/lang/es_ES.yml +++ b/src/main/resources/lang/es_ES.yml @@ -82,6 +82,8 @@ helptips: 3. Puedes usar Shift + rueda del raton mientras usas la herramienta de edición para cambiar el eje sin abrir el menu. " helpurl: msg: " More info: https://github.com/RypoFalem/ArmorStandEditor/wiki " +helpdiscord: + msg: "or join our Discord: https://discord.gg/3BbJKWpTCj" give: msg: Player given Item with CustomModelData diff --git a/src/main/resources/lang/fr_FR.yml b/src/main/resources/lang/fr_FR.yml index 755e4bfe..5ac1e93e 100644 --- a/src/main/resources/lang/fr_FR.yml +++ b/src/main/resources/lang/fr_FR.yml @@ -1,4 +1,5 @@ # Translations by Amaury Carrade (https://github.com/AmauryCarrade) and Niasio (https://github.com/Niasio) +# Updated on 12 avril 2023 by kugge (https://github.com/kugge) #A section symbol will be inserted between each character in this section #http://minecraft.gamepedia.com/Formatting_codes @@ -85,6 +86,8 @@ helptips: 3. Vous pouvez vous accroupir puis utiliser la molette de la souris tout en maintenant l'outil d'édition pour changer d'axe de modification sans ouvrir le menu." helpurl: msg: "Plus d'infos : https://github.com/RypoFalem/ArmorStandEditor/wiki" +helpdiscord: + msg: "ou rejoignez notre Discord: https://discord.gg/3BbJKWpTCj" give: msg: CustomModelData donné au joueur. diff --git a/src/main/resources/lang/nl_NL.yml b/src/main/resources/lang/nl_NL.yml index cb522a8c..4b2d1c53 100644 --- a/src/main/resources/lang/nl_NL.yml +++ b/src/main/resources/lang/nl_NL.yml @@ -66,6 +66,30 @@ nodoubletarget: give: msg: Speler heeft een item met CustomModelData ontvangen +#Help +help: + msg: "1. Houd het wijzigingsgereedschap () in uw hoofdhand. + + 2. Links of rechts klikken vanaf een armor stand om het menu te openen. + + 3. Selecteer een gelabelde menu-optie.. + + 4. Linksklik op de armor stand met het wijzigingsgereedschap in de hand om die optie toe te passen. + + 5. Rechtsklik in plaats daarvan om achteruit te bewerken!" +helptips: + msg: "Tips: + + 1. Druk op de toets \"Verwissel item in handen\" (standaard F) terwijl je het wijzigingsgereedschap vasthoudt om een specifieke armor stand te richten, als er andere armor stands in de weg staan. + + 2. Je kunt NameTags toepassen op armor stands. Je kunt het & symbool gebruiken om gekleurde namen te maken. + + 3. Je kunt crouch + scrollwiel gebruiken terwijl je het bewerkingsgereedschap vasthoudt om de as te veranderen zonder het menu te openen." +helpurl: + msg: "Meer info: https://github.com/RypoFalem/ArmorStandEditor/wiki" +helpdiscord: + msg: "or kom naar onze Discord: https://discord.gg/3BbJKWpTCj" + #warn cantedit: msg: Sorry, je kunt hier geen armorstands aanpassen! diff --git a/src/main/resources/lang/pt_BR.yml b/src/main/resources/lang/pt_BR.yml index 3b1b0285..d3a7673f 100644 --- a/src/main/resources/lang/pt_BR.yml +++ b/src/main/resources/lang/pt_BR.yml @@ -88,8 +88,9 @@ helptips: 3. You can use crouch + scroll wheel while holding the edit tool to change Axis without opening the menu" helpurl: - msg: "" - + msg: "More info: https://github.com/RypoFalem/ArmorStandEditor/wiki" +helpdiscord: + msg: "or join our Discord: https://discord.gg/3BbJKWpTCj" #warn cantedit: msg: Sorry, you cannot edit armor stands here! diff --git a/src/main/resources/lang/ru_RU.yml b/src/main/resources/lang/ru_RU.yml index 22905b9e..ba35014e 100644 --- a/src/main/resources/lang/ru_RU.yml +++ b/src/main/resources/lang/ru_RU.yml @@ -85,7 +85,9 @@ helptips: 3. Используйте Shift + Колёсико мыши, чтобы переключать ось (X, Y, Z) не открывая меню." helpurl: - msg: "Больше информации: https://github.com/Wolfieheart/ArmorStandEditor" + msg: "Больше информации: https://github.com/RypoFalem/ArmorStandEditor/wiki" +helpdiscord: + msg: "or join our Discord: https://discord.gg/3BbJKWpTCj" give: msg: Player given Item with CustomModelData diff --git a/src/main/resources/lang/zh_CN.yml b/src/main/resources/lang/zh_CN.yml index 043b9784..f4b7fe23 100644 --- a/src/main/resources/lang/zh_CN.yml +++ b/src/main/resources/lang/zh_CN.yml @@ -87,6 +87,8 @@ helptips: 3. 你可以在手持编辑工具时使用“潜行(Shift) + 鼠标滚轮”来快速更改要修改的轴而不需要打开菜单。" helpurl: msg: "更多信息: https://github.com/RypoFalem/ArmorStandEditor/wiki" +helpdiscord: + msg: "或加入我们的讨论区: https://discord.gg/3BbJKWpTCj" give: msg: Player given Item with CustomModelData diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index d3e73803..3a11ec2c 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -5,7 +5,7 @@ api-version: "1.13" folia-supported: true website: https://www.spigotmc.org/resources/94503/ author: Wolfstorm -authors: [Wolfstorm, Marfjeh, miknes123, rypofalem, sekwah41, Sikatsu1997, Cool_boy, sumdream, Amaury Carrade, nicuch, kotarobo, prettydude, Jumpy91, Niasio, Patbox, Puremin0rez, Prof-Bloodstone, PlanetTeamSpeak] +authors: [Wolfstorm, Kugge, Marfjeh, miknes123, rypofalem, sekwah41, Sikatsu1997, Cool_boy, sumdream, Amaury Carrade, nicuch, kotarobo, prettydude, Jumpy91, Niasio, Patbox, Puremin0rez, Prof-Bloodstone, PlanetTeamSpeak] description: Allows players to edit data of armorstands without any commands. softdepend: [Towny, WorldGuard, GriefPrevention, PlotSquared, Lands, bentobox] From 376871604101186eea46055e225c277919e1432f Mon Sep 17 00:00:00 2001 From: "Larry (Wolfieheart)" Date: Mon, 22 May 2023 22:43:16 +0200 Subject: [PATCH 241/369] [CORE] ArmorStandEditor 1.19.4-42.1: Hotfixes and Longstanding Fixes (#242) * [CORE] Hotfix for Switching Hands issue. Signed-off-by: Wolfieheart * [CORE] Hotfix for Switching Hands issue. Signed-off-by: Wolfieheart * [CORE] Add Reload Command. Add Support for MultiLine Tool Lore. Bump to 1.19.4-42.1 Signed-off-by: Wolfieheart * [CORE] Add in MultiLine Example to Config and readd sendMessagesToActionBar to config.yml Signed-off-by: Wolfieheart * [CI] All the Version Bumps (Closes #241,#240,#238,#237,#236,#235,#232,#231) Signed-off-by: Wolfieheart * [CORE/i18n] New NoTarget Messages Signed-off-by: Wolfieheart * [CORE] NUllPointer Fix when SwitchingHands Signed-off-by: Wolfieheart * [CORE] NUllPointer Fix when SwitchingHands Signed-off-by: Wolfieheart * [CORE] NUllPointer Fix when SwitchingHands Signed-off-by: Wolfieheart * [CORE] Fix for last part of the Check to remove the doubleTarget Message Signed-off-by: Wolfieheart * [CORE] Add Comment to fix Else Statement in a later update Signed-off-by: Wolfieheart --------- Signed-off-by: Wolfieheart --- pom.xml | 10 +- .../ArmorStandEditorPlugin.java | 139 +++++++++-- .../rypofalem/armorstandeditor/CommandEx.java | 22 +- .../armorstandeditor/PlayerEditor.java | 4 +- .../armorstandeditor/PlayerEditorManager.java | 24 +- src/main/resources/config.yml | 11 +- src/main/resources/lang/de_DE.yml | 6 +- src/main/resources/lang/en_US.yml | 8 +- src/main/resources/lang/es_ES.yml | 6 +- src/main/resources/lang/fr_FR.yml | 6 +- src/main/resources/lang/ja_JP.yml | 6 +- src/main/resources/lang/nl_NL.yml | 6 +- src/main/resources/lang/pl_PL.yml | 6 +- src/main/resources/lang/pt_BR.yml | 6 +- src/main/resources/lang/ro_RO.yml | 7 +- src/main/resources/lang/ru_RU.yml | 2 - src/main/resources/lang/test_NA.yml | 4 + src/main/resources/lang/uk_UA.yml | 4 +- src/main/resources/lang/zh_CN.yml | 6 +- src/main/resources/plugin.yml | 231 +++++++++--------- 20 files changed, 319 insertions(+), 195 deletions(-) diff --git a/pom.xml b/pom.xml index 1b4b9c64..d82a9020 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ io.github.rypofalem.armorstandeditor armorstandeditor jar - 1.19.4-42 + 1.19.4-42.1 armorstandeditor http://maven.apache.org @@ -132,14 +132,14 @@ com.palmergames.bukkit.towny towny - 0.99.0.1 + 0.99.0.9 provided com.jeff_media SpigotUpdateChecker - 3.0.2 + 3.0.3 compile @@ -167,7 +167,7 @@ world.bentobox bentobox - 1.22.0 + 1.23.1 provided @@ -185,7 +185,7 @@ org.codehaus.mojo build-helper-maven-plugin - 3.3.0 + 3.4.0 compile diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/ArmorStandEditorPlugin.java b/src/main/java/io/github/rypofalem/armorstandeditor/ArmorStandEditorPlugin.java index 7aaef88d..e23c53fb 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/ArmorStandEditorPlugin.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/ArmorStandEditorPlugin.java @@ -37,9 +37,7 @@ import org.bukkit.scoreboard.Team; import java.io.File; -import java.util.HashMap; -import java.util.Map; -import java.util.Objects; +import java.util.*; import java.util.logging.Level; public class ArmorStandEditorPlugin extends JavaPlugin{ @@ -77,7 +75,7 @@ public class ArmorStandEditorPlugin extends JavaPlugin{ boolean requireToolName = false; String editToolName = null; boolean requireToolLore = false; - String editToolLore = null; + List editToolLore = null; boolean allowCustomModelData = false; Integer customModelDataInt = Integer.MIN_VALUE; @@ -116,29 +114,23 @@ public void onEnable() { getLogger().info("======= ArmorStandEditor ======="); getLogger().info("Plugin Version: " + pdfFile.getVersion()); - //Minimum Version Check - No Lower than 1.13-API. Will be tuned out in the future - if ( nmsVersion.startsWith("v1_8") || - nmsVersion.startsWith("v1_9") || - nmsVersion.startsWith("v1_10") || - nmsVersion.startsWith("v1_11") || - nmsVersion.startsWith("v1_12") || - nmsVersion.startsWith("v1_13")){ - getLogger().log(Level.WARNING,"Minecraft Version: {0} is unsupported. Please Update Immediately. Loading failed.",nmsVersion); - getLogger().info(SEPARATOR_FIELD); + // Check if the Minecraft version is supported + if (nmsVersion.compareTo("v1_13") < 0) { + getLogger().log(Level.WARNING,"Minecraft Version: {0}",nmsVersion); + getLogger().warning("ArmorStandEditor is not compatible with this version of Minecraft. Please update to at least version 1.13. Loading failed."); getServer().getPluginManager().disablePlugin(this); + getLogger().info(SEPARATOR_FIELD); return; } //Also Warn People to Update if using nmsVersion lower than latest - if ( nmsVersion.startsWith("v1_14") || - nmsVersion.startsWith("v1_15") || - nmsVersion.startsWith("v1_16") || - nmsVersion.startsWith("v1_17") || - nmsVersion.startsWith("v1_18") ){ - getLogger().log(Level.WARNING,"Minecraft Version: {0} is supported, but not latest.",nmsVersion); - getLogger().log(Level.WARNING, "ArmorStandEditor will still work on your current version. Loading Continuing."); + if (nmsVersion.compareTo("v1_19") < 0) { + getLogger().log(Level.WARNING,"Minecraft Version: {0}",nmsVersion); + getLogger().warning("ArmorStandEditor is compatible with this version of Minecraft, but it is not the latest supported version."); + getLogger().warning("Loading continuing, but please consider updating to the latest version."); } else { - getLogger().log(Level.INFO, "Minecraft Version: {0} is supported. Loading Continuing.",nmsVersion); + getLogger().log(Level.INFO, "Minecraft Version: {0}",nmsVersion); + getLogger().info("ArmorStandEditor is compatible with this version of Minecraft. Loading continuing."); } //Spigot Check hasSpigot = getHasSpigot(); @@ -223,10 +215,10 @@ public void onEnable() { requireToolLore = getConfig().getBoolean("requireToolLore", false); if(requireToolLore) { - editToolLore = getConfig().getString("toolLore", null); - if(editToolLore != null) editToolLore = ChatColor.translateAlternateColorCodes('&', editToolLore); + editToolLore = getConfig().getList("toolLore", null); } + //Require Sneaking - Wolfst0rm/ArmorStandEditor#17 requireSneaking = getConfig().getBoolean("requireSneaking", false); @@ -436,14 +428,17 @@ public boolean isEditTool(ItemStack itemStk){ if(!itemStk.hasItemMeta()) { return false; } //Get the lore of the Item and if it is null - Return False - String itemLore = String.valueOf(itemMeta.getLore().get(0)); + List itemLore = itemMeta.getLore(); //If the Item does not have Lore - Return False boolean hasTheItemLore = itemMeta.hasLore(); if (!hasTheItemLore) { return false; } - //Item the first thing in the ItemLore List does not Equal the Config Value "editToolLore" - return false - if (!itemLore.equalsIgnoreCase(editToolLore)) { return false; } //Does not need simplified - IntelliJ likes to complain here + //Get the localised ListString of editToolLore + List listStringOfEditToolLore = (List) editToolLore; + + //Return False if itemLore on the item does not match what we expect in the config. + if(!itemLore.equals(listStringOfEditToolLore)) { return false; } } @@ -456,6 +451,98 @@ public boolean isEditTool(ItemStack itemStk){ return true; } + + public void performReload() { + + //Unregister Scoreboard before before performing the reload + if (!Scheduler.isFolia()) { + scoreboard = Objects.requireNonNull(this.getServer().getScoreboardManager()).getMainScoreboard(); + unregisterScoreboards(scoreboard); + } + + //Perform Reload + reloadConfig(); + + //Re-Register Scoreboards + if (!Scheduler.isFolia()) registerScoreboards(scoreboard); + + //Reload Config File + reloadConfig(); + + //Set Language + lang = new Language(getConfig().getString("lang"), this); + + + //Rotation + coarseRot = getConfig().getDouble("coarse"); + fineRot = getConfig().getDouble("fine"); + + //Set Tool to be used in game + toolType = getConfig().getString("tool"); + if (toolType != null) { + editTool = Material.getMaterial(toolType); //Ignore Warning + } + + //Do we require a custom tool name? + requireToolName = getConfig().getBoolean("requireToolName", false); + if(requireToolName){ + editToolName = getConfig().getString("toolName", null); + if(editToolName != null) editToolName = ChatColor.translateAlternateColorCodes('&', editToolName); + } + + //Custom Model Data + allowCustomModelData = getConfig().getBoolean("allowCustomModelData", false); + + if(allowCustomModelData){ + customModelDataInt = getConfig().getInt("customModelDataInt", Integer.MIN_VALUE); + } + + //ArmorStandVisibility Node + armorStandVisibility = getConfig().getBoolean("armorStandVisibility", true); + + //Is there NBT Required for the tool + requireToolData = getConfig().getBoolean("requireToolData", false); + + if(requireToolData) { + editToolData = getConfig().getInt("toolData", Integer.MIN_VALUE); + } + + requireToolLore = getConfig().getBoolean("requireToolLore", false); + + if(requireToolLore) { + editToolLore = getConfig().getList("toolLore", null); + } + + //Require Sneaking - Wolfst0rm/ArmorStandEditor#17 + requireSneaking = getConfig().getBoolean("requireSneaking", false); + + //Send Messages to Action Bar + sendToActionBar = getConfig().getBoolean("sendMessagesToActionBar", true); + + //All ItemFrame Stuff + glowItemFrames = getConfig().getBoolean("glowingItemFrame", true); + invisibleItemFrames = getConfig().getBoolean("invisibleItemFrames", true); + + //Add ability to enable ot Disable the running of the Updater + runTheUpdateChecker = getConfig().getBoolean("runTheUpdateChecker", true); + + //Add Ability to check for UpdatePerms that Notify Ops - https://github.com/Wolfieheart/ArmorStandEditor/issues/86 + opUpdateNotification = getConfig().getBoolean("opUpdateNotification", true); + updateCheckerInterval = getConfig().getDouble("updateCheckerInterval", 24); + + //Run UpdateChecker - Reports out to Console on Startup ONLY! + if(!Scheduler.isFolia() && runTheUpdateChecker) { + + if(opUpdateNotification){ + runUpdateCheckerWithOPNotifyOnJoinEnabled(); + } else { + runUpdateCheckerConsoleUpdateCheck(); + } + + } + + } + public static ArmorStandEditorPlugin instance(){ return instance; } diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/CommandEx.java b/src/main/java/io/github/rypofalem/armorstandeditor/CommandEx.java index 269e323b..d183e5cc 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/CommandEx.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/CommandEx.java @@ -50,6 +50,7 @@ public class CommandEx implements CommandExecutor, TabCompleter { final String HELP = ChatColor.YELLOW + "/ase help or /ase ?"; final String VERSION = ChatColor.YELLOW + "/ase version"; final String UPDATE = ChatColor.YELLOW + "/ase update"; + final String RELOAD = ChatColor.YELLOW + "/ase reload"; final String GIVECUSTOMMODEL = ChatColor.YELLOW + "/ase give"; public CommandEx( ArmorStandEditorPlugin armorStandEditorPlugin) { @@ -73,6 +74,7 @@ && getPermissionBasic( (Player) sender))) { player.sendMessage(VERSION); player.sendMessage(UPDATE); player.sendMessage(HELP); + player.sendMessage(RELOAD); player.sendMessage(GIVECUSTOMMODEL); return true; } @@ -93,6 +95,8 @@ && getPermissionBasic( (Player) sender))) { break; case "give": commandGive(player); break; + case "reload": commandReload(player); + break; default: sender.sendMessage(LISTMODE); sender.sendMessage(LISTAXIS); @@ -101,6 +105,7 @@ && getPermissionBasic( (Player) sender))) { sender.sendMessage(VERSION); sender.sendMessage(UPDATE); sender.sendMessage(HELP); + sender.sendMessage(RELOAD); sender.sendMessage(GIVECUSTOMMODEL); } return true; @@ -229,10 +234,16 @@ private void commandUpdate(Player player) { private void commandVersion(Player player) { if (!(getPermissionUpdate(player))) return; - String verString = plugin.pdfFile.getVersion(); + String verString = plugin.getArmorStandEditorVersion(); player.sendMessage(ChatColor.YELLOW + "[ArmorStandEditor] Version: " + verString); } + private void commandReload(Player player){ + if(!(getPermissionReload(player))) return; + plugin.performReload(); + player.sendMessage(plugin.getLang().getMessage("reloaded", "")); + } + private boolean checkPermission(Player player, String permName, boolean sendMessageOnInvalidation) { if (permName.equalsIgnoreCase("paste")) { @@ -260,6 +271,10 @@ private boolean getPermissionGive(Player player){ return checkPermission(player, "give", true); } + private boolean getPermissionReload(Player player) { + return checkPermission(player, "reload", true); + } + //REFACTOR COMPLETION @Override @SuppressWarnings({"deprecated"}) @@ -293,6 +308,11 @@ public List onTabComplete(CommandSender sender, Command command, String argList.add("give"); } + //Reload Permission Check + if (getPermissionReload(player)){ + argList.add("reload"); + } + return argList.stream().filter(a -> a.startsWith(args[0])).toList(); } diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditor.java b/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditor.java index 518da38d..c19d2b1b 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditor.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditor.java @@ -432,7 +432,7 @@ public void setTarget(ArrayList armorStands) { if (armorStands == null || armorStands.isEmpty()) { target = null; targetList = null; - sendMessage("notarget", null); + sendMessage("notarget", "armorstand"); } else { if (targetList == null) { targetList = armorStands; @@ -465,7 +465,7 @@ public void setFrameTarget(ArrayList itemFrames) { if (itemFrames == null || itemFrames.isEmpty()) { frameTarget = null; frameTargetList = null; - sendMessage("noframetarget", null); + sendMessage("notarget", "itemframe"); } else { if (frameTargetList == null) { diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditorManager.java b/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditorManager.java index b6d9385d..cfefb548 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditorManager.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditorManager.java @@ -57,6 +57,7 @@ public class PlayerEditorManager implements Listener { private TickCounter counter; private ArrayList as = null; private ArrayList itemF = null; + private Integer noSize = 0; // Instantiate protections used to determine whether a player may edit an armor stand or item frame //NOTE: GriefPreventionProtection is Depreciated as of v1.19.3-40 @@ -212,18 +213,17 @@ public void onSwitchHands(PlayerSwapHandItemsEvent event) { as = getTargets(player); //Get All ArmorStand closest to player itemF = getFrameTargets(player); //Get ItemFrame Closest to Player - if(as == null) - getPlayerEditor(player.getUniqueId()).sendMessage("nodoubletarget", "warn"); - else if(itemF == null) - getPlayerEditor(player.getUniqueId()).sendMessage("nodoubletarget", "warn"); - else { - if (!as.isEmpty() && itemF.isEmpty()) { - getPlayerEditor(player.getUniqueId()).setTarget(as); - } else if (!itemF.isEmpty() && as.isEmpty()) { - getPlayerEditor(player.getUniqueId()).setFrameTarget(itemF); - } else{ - getPlayerEditor(player.getUniqueId()).sendMessage("doubletarget", "warn"); - } + + // Check for null and empty lists + if (as != null && itemF != null && !as.isEmpty() && !itemF.isEmpty()) { + getPlayerEditor(player.getUniqueId()).sendMessage("doubletarget", "warn"); + } else if (as != null && !as.isEmpty()) { + getPlayerEditor(player.getUniqueId()).setTarget(as); + } else if (itemF != null && !itemF.isEmpty()) { + getPlayerEditor(player.getUniqueId()).setFrameTarget(itemF); + } else { //TODO: Fix the sending of the message Twice in this Statement + getPlayerEditor(player.getUniqueId()).setTarget(null); + getPlayerEditor(player.getUniqueId()).setFrameTarget(null); } } diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml index 920ddbb7..d952ae7f 100644 --- a/src/main/resources/config.yml +++ b/src/main/resources/config.yml @@ -3,7 +3,7 @@ #-----------------------------# #DO NOT CHANGE THIS - CHANGES AUTOMATICALLY PER UPDATE -version: "1.19.4-42" +version: "1.19.4-42.1" #----------- LANGUAGE #Name of the language file you wish to use @@ -36,9 +36,11 @@ toolData: 0 requireToolName: false toolName: Example Name here -#(Optional) The first "Lore" entry that the plugin looks for to identify the edit tool. +#(Optional) The first "Lore" entry that the plugin looks for to identify the edit tool. - Now has MultiLine Support requireToolLore: false -toolLore: Let's get dangerous +toolLore: + - "TIME TO GET REALLY" + - "REALLY DANGEROUS!" #(Optional) Allow the use of CustomModelData - NOTE: This looks at the editTool set by Config #and at the Int set here to know what to set. @@ -70,6 +72,9 @@ invisibleItemFrames: true #If true, the GUI will only open if the player is sneaking requireSneaking: false +#Sends messages to the ActionBar +sendMessagesToActionBar: true + #------ Misc Options #(Optional) Glowing Item Frames Support for Item Frames in 1.17 - WILL NOT WORK IN 1.16 OR LOWER AND 1.17.1 OR HIGHER diff --git a/src/main/resources/lang/de_DE.yml b/src/main/resources/lang/de_DE.yml index 31f78883..314d96f6 100644 --- a/src/main/resources/lang/de_DE.yml +++ b/src/main/resources/lang/de_DE.yml @@ -56,11 +56,11 @@ pasted: target: msg: Ziel Rüstungsständer wurde gesperrt. notarget: - msg: Ziel Rüstungsständer wurde entsperrt. + msg: wurde entsperrt. + armorstand: Ziel Rüstungsständer + itemframe: ItemFrame frametarget: msg: Itemframe Ziel gesperrt. -noframetarget: - msg: Itemframe Ziel entsperrt. doubletarget: msg: Bitte schaue entweder auf einen Rüstungsständer oder einem ItemFrame, nicht beides! nodoubletarget: diff --git a/src/main/resources/lang/en_US.yml b/src/main/resources/lang/en_US.yml index 8bce74b1..6a4f5641 100644 --- a/src/main/resources/lang/en_US.yml +++ b/src/main/resources/lang/en_US.yml @@ -61,11 +61,11 @@ disabledslots: target: msg: ArmorStand target locked. notarget: - msg: ArmorStand target unlocked. + msg: target unlocked. + armorstand: ArmorStand + itemframe: ItemFrame frametarget: - msg: Itemframe target locked -noframetarget: - msg: Itemframe target unlocked. + msg: Itemframe target locked. give: msg: Player given Item with CustomModelData doubletarget: diff --git a/src/main/resources/lang/es_ES.yml b/src/main/resources/lang/es_ES.yml index 0770fc97..662fcaf7 100644 --- a/src/main/resources/lang/es_ES.yml +++ b/src/main/resources/lang/es_ES.yml @@ -53,11 +53,11 @@ pasted: target: msg: Soporte de armaduras bloqueado. notarget: - msg: Soporte de armaduras desbloqueado. + msg: target unlocked. + armorstand: ArmorStand + itemframe: ItemFrame frametarget: msg: Itemframe target locked -noframetarget: - msg: Itemframe target unlocked. doubletarget: msg: Please look at either an ArmorStand or an ItemFrame, not both! nodoubletarget: diff --git a/src/main/resources/lang/fr_FR.yml b/src/main/resources/lang/fr_FR.yml index 5ac1e93e..72b41423 100644 --- a/src/main/resources/lang/fr_FR.yml +++ b/src/main/resources/lang/fr_FR.yml @@ -57,11 +57,11 @@ pasted: target: msg: Armor stand sélectionné. notarget: - msg: Armor stand désélectionné. + msg: désélectionné. + armorstand: Armor stand + itemframe: Itemframe frametarget: msg: Itemframe sélectionné. -noframetarget: - msg: Itemframe désélectionné. doubletarget: msg: Regardez un armor stand ou un item frame, pas les deux! nodoubletarget: diff --git a/src/main/resources/lang/ja_JP.yml b/src/main/resources/lang/ja_JP.yml index efcaa34e..44e49e5c 100644 --- a/src/main/resources/lang/ja_JP.yml +++ b/src/main/resources/lang/ja_JP.yml @@ -56,11 +56,11 @@ pasted: target: msg: アーマースタンドの編集対象を保持しました。 notarget: - msg: アーマースタンドの編集対象を保持していません。 + msg: target unlocked. + armorstand: ArmorStand + itemframe: ItemFrame frametarget: msg: Itemframe target locked -noframetarget: - msg: Itemframe target unlocked. doubletarget: msg: Please look at either an ArmorStand or an ItemFrame, not both! nodoubletarget: diff --git a/src/main/resources/lang/nl_NL.yml b/src/main/resources/lang/nl_NL.yml index 4b2d1c53..c8a4cc81 100644 --- a/src/main/resources/lang/nl_NL.yml +++ b/src/main/resources/lang/nl_NL.yml @@ -54,11 +54,11 @@ copied: pasted: msg: Armorstand status geplakt vanuit slot . notarget: - msg: ArmorStand target unlocked. + msg: target unlocked. + armorstand: ArmorStand + itemframe: ItemFrame frametarget: msg: Itemframe target locked -noframetarget: - msg: Itemframe target unlocked. doubletarget: msg: Kijk aub naar een ArmorStand of een ItemFrame, niet allebei! nodoubletarget: diff --git a/src/main/resources/lang/pl_PL.yml b/src/main/resources/lang/pl_PL.yml index df43ce53..2707dcab 100644 --- a/src/main/resources/lang/pl_PL.yml +++ b/src/main/resources/lang/pl_PL.yml @@ -55,11 +55,11 @@ pasted: target: msg: Zablokowano cel. notarget: - msg: Odblokowano cel. + msg: target unlocked. + armorstand: ArmorStand + itemframe: ItemFrame frametarget: msg: Itemframe target locked -noframetarget: - msg: Itemframe target unlocked. doubletarget: msg: Please look at either an ArmorStand or an ItemFrame, not both! give: diff --git a/src/main/resources/lang/pt_BR.yml b/src/main/resources/lang/pt_BR.yml index d3a7673f..941e67ef 100644 --- a/src/main/resources/lang/pt_BR.yml +++ b/src/main/resources/lang/pt_BR.yml @@ -56,11 +56,11 @@ disabledslots: target: msg: ArmorStand target locked. notarget: - msg: ArmorStand target unlocked. + msg: target unlocked. + armorstand: ArmorStand + itemframe: ItemFrame frametarget: msg: Itemframe target locked -noframetarget: - msg: Itemframe target unlocked. give: msg: Player given Item with CustomModelData doubletarget: diff --git a/src/main/resources/lang/ro_RO.yml b/src/main/resources/lang/ro_RO.yml index 7b1f87a9..2ea5b6de 100644 --- a/src/main/resources/lang/ro_RO.yml +++ b/src/main/resources/lang/ro_RO.yml @@ -1,5 +1,5 @@ #Translation by nicuch - +#TODO: Needs Updated! iconname: 2n icondescription: 5 @@ -54,11 +54,14 @@ pasted: target: msg: Tinta ArmorStand-ului blocata. notarget: - msg: Tinta ArmorStand-ului deblocata. + msg: target unlocked. + armorstand: ArmorStand + itemframe: ItemFrame give: msg: Player given Item with CustomModelData nodoubletarget: msg: Please look at an ArmorStand or an ItemFrame before switching hands! + #warn cantedit: msg: Nu poti edita armorstand-ul aici! diff --git a/src/main/resources/lang/ru_RU.yml b/src/main/resources/lang/ru_RU.yml index ba35014e..3913aaae 100644 --- a/src/main/resources/lang/ru_RU.yml +++ b/src/main/resources/lang/ru_RU.yml @@ -59,8 +59,6 @@ notarget: msg: Цель стойки разблокирована frametarget: msg: Цель рамки заблокирована -noframetarget: - msg: Цель рамки разблокирована doubletarget: msg: Наведитесь на стойку или на рамку, а не на то и другое одновременно. nodoubletarget: diff --git a/src/main/resources/lang/test_NA.yml b/src/main/resources/lang/test_NA.yml index 926bfa14..7de2930b 100644 --- a/src/main/resources/lang/test_NA.yml +++ b/src/main/resources/lang/test_NA.yml @@ -67,6 +67,10 @@ nomodecom: msg: You must specify a Mode! nodoubletarget: msg: Please look at an ArmorStand or an ItemFrame before switching hands! +notarget: + msg: target unlocked. + armorstand: ArmorStand + itemframe: ItemFrame #menutitle mainmenutitle: diff --git a/src/main/resources/lang/uk_UA.yml b/src/main/resources/lang/uk_UA.yml index 61d61205..40411d60 100644 --- a/src/main/resources/lang/uk_UA.yml +++ b/src/main/resources/lang/uk_UA.yml @@ -52,7 +52,9 @@ pasted: target: msg: Ціль стенду заблоковано. notarget: - msg: Ціль стенду розблоковано. + msg: target unlocked. + armorstand: ArmorStand + itemframe: ItemFrame give: msg: Player given Item with CustomModelData nodoubletarget: diff --git a/src/main/resources/lang/zh_CN.yml b/src/main/resources/lang/zh_CN.yml index f4b7fe23..b3af7992 100644 --- a/src/main/resources/lang/zh_CN.yml +++ b/src/main/resources/lang/zh_CN.yml @@ -56,11 +56,11 @@ pasted: target: msg: 目标盔甲架已锁定。 notarget: - msg: 目标盔甲架已解锁。 + msg: target unlocked. + armorstand: ArmorStand + itemframe: ItemFrame frametarget: msg: 目标物品展示框已锁定。 -noframetarget: - msg: 目标物品展示框已解锁。 doubletarget: msg: 请看向盔甲架或物品展示框,不要两个同时看! reloaded: diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index 3a11ec2c..8d65571f 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -1,6 +1,6 @@ name: ArmorStandEditor main: io.github.rypofalem.armorstandeditor.ArmorStandEditorPlugin -version: 1.19.4-42 +version: 1.19.4-42.1 api-version: "1.13" folia-supported: true website: https://www.spigotmc.org/resources/94503/ @@ -18,121 +18,126 @@ commands: permission-message: "You are lacking the permission node 'asedit.basic'" permissions: - asedit.*: - description: All ArmorStandEditor Commands - default: op - children: - asedit.permpack.admin: true - asedit.ignoreProtection.*: true + asedit.*: + description: All ArmorStandEditor Commands + default: op + children: + asedit.permpack.admin: true + asedit.ignoreProtection.*: true - asedit.basic: - description: Allow use armorstand edit functions. If set to false it will override all other functions. - default: true - asedit.armorstand.invisible: - description: Toggles ArmorStand visibility. - default: true - asedit.itemframe.invisible: - description: Allows setting of ItemFrame Visibility - default: true - asedit.rename: - description: Rename armorstands - Now Supports Color - default: true - asedit.equipment: - description: Access armorstand equipment GUI - default: true - asedit.gravity: - description: Changes whether the armor stand has gravity - default: true - asedit.placement: - description: Changes whether the armor stand can be moved using the item for editing - default: true - asedit.disableSlots: - description: Allows locking and unlocking the contents of an ArmorStand. When locked, armor and equipement can not be added or removed without unlocking it first. - default: true - asedit.give: - description: Gives player the EditTool with Proper CustomModelData - default: false - asedit.update: - description: Allows the checking for updates. - default: false + asedit.basic: + description: Allow use armorstand edit functions. If set to false it will override all other functions. + default: true + asedit.armorstand.invisible: + description: Toggles ArmorStand visibility. + default: true + asedit.itemframe.invisible: + description: Allows setting of ItemFrame Visibility + default: true + asedit.rename: + description: Rename armorstands - Now Supports Color + default: true + asedit.equipment: + description: Access armorstand equipment GUI + default: true + asedit.gravity: + description: Changes whether the armor stand has gravity + default: true + asedit.placement: + description: Changes whether the armor stand can be moved using the item for editing + default: true + asedit.disableSlots: + description: Allows locking and unlocking the contents of an ArmorStand. When locked, armor and equipement can not be added or removed without unlocking it first. + default: true + asedit.give: + description: Gives player the EditTool with Proper CustomModelData + default: false + asedit.update: + description: Allows the checking for updates. + default: false + asedit.reload: + description: Allows Reloading of the ASE Config. + default: false - asedit.ignoreProtection.towny: - description: Allows user to ignore Towny's Protection Limitations. - default: false - asedit.ignoreProtection.griefProtection: - description: Allows user to ignore GriefProtection's Protection Limitations. - default: false - asedit.ignoreProtection.plotSquared: - description: Allows user to ignore PlotSquared's Protection Limitations. - default: false - asedit.ignoreProtection.worldGuard: - description: Allows user to ignore WorldGuard's Protection Limitations. - default: false - asedit.ignoreProtection.skyblock: - description: Allows user to ignore Skyblock's Protection Limitations. - default: false - asedit.ignoreProtection.griefDefender: - description: Allows user to ignore GriefDefender's Protection Limitations. - default: false - asedit.ignoreProtection.lands: - description: Allows user to ignore Lands Protection Limitations. - default: false - asedit.ignoreProtection.bentobox: - description: Allows user to ignore Bentobox Protection Limitations. - default: false - asedit.ignoreProtection.residence: - description: Allows user to ignore Residence Protection Limitations. - default: false + asedit.ignoreProtection.towny: + description: Allows user to ignore Towny's Protection Limitations. + default: false + asedit.ignoreProtection.griefProtection: + description: Allows user to ignore GriefProtection's Protection Limitations. + default: false + asedit.ignoreProtection.plotSquared: + description: Allows user to ignore PlotSquared's Protection Limitations. + default: false + asedit.ignoreProtection.worldGuard: + description: Allows user to ignore WorldGuard's Protection Limitations. + default: false + asedit.ignoreProtection.skyblock: + description: Allows user to ignore Skyblock's Protection Limitations. + default: false + asedit.ignoreProtection.griefDefender: + description: Allows user to ignore GriefDefender's Protection Limitations. + default: false + asedit.ignoreProtection.lands: + description: Allows user to ignore Lands Protection Limitations. + default: false + asedit.ignoreProtection.bentobox: + description: Allows user to ignore Bentobox Protection Limitations. + default: false + asedit.ignoreProtection.residence: + description: Allows user to ignore Residence Protection Limitations. + default: false - asedit.ignoreProtection.*: - description: Ignore all Protection Limitations - default: op - children: - asedit.ignoreProtection.towny: true - asedit.ignoreProtection.griefProtection: true - asedit.ignoreProtection.plotSquared: true - asedit.ignoreProtection.worldGuard: true - asedit.ignoreProtection.skyblock: true - asedit.ignoreProtection.griefDefender: true - asedit.ignoreProtection.lands: true - asedit.ignoreProtection.bentobox: true - asedit.ignoreProtection.residence: true + asedit.ignoreProtection.*: + description: Ignore all Protection Limitations + default: op + children: + asedit.ignoreProtection.towny: true + asedit.ignoreProtection.griefProtection: true + asedit.ignoreProtection.plotSquared: true + asedit.ignoreProtection.worldGuard: true + asedit.ignoreProtection.skyblock: true + asedit.ignoreProtection.griefDefender: true + asedit.ignoreProtection.lands: true + asedit.ignoreProtection.bentobox: true + asedit.ignoreProtection.residence: true - asedit.permpack.dontIgnoreProtections: - default: true - children: - asedit.ignoreProtection.towny: false - asedit.ignoreProtection.griefProtection: false - asedit.ignoreProtection.plotSquared: false - asedit.ignoreProtection.worldGuard: false - asedit.ignoreProtection.skyblock: false - asedit.ignoreProtection.griefDefender: false - asedit.ignoreProtection.lands: false - asedit.ignoreProtection.bentobox: false - asedit.ignoreProtection.residence: false + asedit.permpack.dontIgnoreProtections: + default: true + children: + asedit.ignoreProtection.towny: false + asedit.ignoreProtection.griefProtection: false + asedit.ignoreProtection.plotSquared: false + asedit.ignoreProtection.worldGuard: false + asedit.ignoreProtection.skyblock: false + asedit.ignoreProtection.griefDefender: false + asedit.ignoreProtection.lands: false + asedit.ignoreProtection.bentobox: false + asedit.ignoreProtection.residence: false - asedit.permpack.basic: - default: true - children: - asedit.basic: true - asedit.equipment: true - asedit.gravity: true - asedit.placement: true - asedit.disableSlots: true - asedit.rename: true - asedit.update: false - asedit.give: false + asedit.permpack.basic: + default: true + children: + asedit.basic: true + asedit.equipment: true + asedit.gravity: true + asedit.placement: true + asedit.disableSlots: true + asedit.rename: true + asedit.update: false + asedit.give: false + asedit.reload: false - asedit.permpack.admin: - default: op - children: - asedit.basic: true - asedit.itemframe.invisible: true - asedit.armorstand.invisible: true - asedit.equipment: true - asedit.gravity: true - asedit.placement: true - asedit.disableSlots: true - asedit.rename: true - asedit.update: true - asedit.ignorePermissions.*: true + asedit.permpack.admin: + default: op + children: + asedit.basic: true + asedit.itemframe.invisible: true + asedit.armorstand.invisible: true + asedit.equipment: true + asedit.gravity: true + asedit.placement: true + asedit.disableSlots: true + asedit.rename: true + asedit.update: true + asedit.ignorePermissions.*: true + asedit.reload: true From 7eb3e9f3ee8f33535855568ceb964342d0232bc7 Mon Sep 17 00:00:00 2001 From: "Larry (Wolfieheart)" Date: Wed, 28 Jun 2023 20:09:12 +0200 Subject: [PATCH 242/369] [CORE] ArmorStandEditor-Reborn 1.20.1-43 (#258) * [CORE] Version Bump: 1.20.0-43 Signed-off-by: Wolfieheart * [CORE] Initial Implementation for Invulnerability Toggle #258 Signed-off-by: Wolfieheart * [CORE] Implementation of Invulnerable ArmorStands. Signed-off-by: Wolfieheart * [i18n] Update Translations to support Vulnerability Implementation Signed-off-by: Wolfieheart * [CORE] Implement Ability to get a Player Head from a Command #257 Signed-off-by: Wolfieheart * [CORE] Sonar Fixes Signed-off-by: Wolfieheart * [CORE] Pre-Final Implementation: Player Head via ASE w/ Admin Notifications Signed-off-by: Wolfieheart * [CORE] Update Readme to contain latest features Signed-off-by: Wolfieheart * [CORE] Finalise #257 Signed-off-by: Wolfieheart * [API] Initial Commit of the API for ASE Signed-off-by: Wolfieheart * [CORE] Fix for asedit.give not being part of the Admin Permpack Signed-off-by: Wolfieheart * [CORE] Fix in the TabComplete Mechanism for #263 Signed-off-by: Wolfieheart * [CORE] Fix in the TabComplete Mechanism for #263 Signed-off-by: Wolfieheart * [CORE] Drop an unused Variable in the TabCompletor Signed-off-by: Wolfieheart * [CORE] Drop an unused Variable in the TabCompletor Signed-off-by: Wolfieheart * [CI] Update various dependencies to the 1.20 Versions. Signed-off-by: Wolfieheart * [CORE] Add Explaination as to how to re-enable SingleLine ToolLore after the MultiLine Implementation (Part of #264) Signed-off-by: Wolfieheart * [CORE] Typos.... Signed-off-by: Wolfieheart * [API] Add Example Testing Plugin for the API Signed-off-by: Wolfieheart * [CORE] Attribution: Pinnkk for the CustomAPI help :D [API] Update Example API Tester Plugin Signed-off-by: Wolfieheart * [CORE] Fix Hangar Link in ReadMe.md Signed-off-by: Wolfieheart * [API] Update API Tester with ItemFrame Events Signed-off-by: Wolfieheart * [CORE] Permission System Refactor. Closes #249 Signed-off-by: Wolfieheart * [CORE] Permission System Refactor. Closes #249 Signed-off-by: Wolfieheart * [CORE] Permission System Refactor - Update asedit.gravity to asedit.togglegravity Signed-off-by: Wolfieheart * [CORE] Permission System Refactor - Fixes during Testing #LongLiveForgettingThings Signed-off-by: Wolfieheart * [CORE] Fix for PlayerHead Implementation not doing the permission check on the command Signed-off-by: Wolfieheart * [CORE] Bump Towny to 0.99.1.2 Signed-off-by: Wolfieheart * [CI / DEP] Bump Spigot to 1.20.1 [CI / DEP] Bump IS Bom to Newest [CI / DEP] Bump WorldGuard to 7.1.0-SNAPSHOT [CI / DEP] Bump Towny to 0.99.1.3 [CI / DEP] Bump bentobox to 1.23.2 [CI / DEP] Bump Residence to 5.1.1.3 Signed-off-by: Wolfieheart * [CORE] Special Thanks Addendum JetBrains OSS Licence and Shamblecraft Logo * [CI / DEP] Bump Spigot to 1.20.1 [CI / DEP] Bump PlotSquared to v7 [CI / DEP] Bump WorldGuard to 7.1.0-SNAPSHOT [CI / DEP] Bump Towny to 0.99.1.3 [CI / DEP] Bump bentobox to 1.23.2 [CI / DEP] Bump Residence to 5.1.1.3 Signed-off-by: Wolfieheart * [API] Update API Test Plugin Signed-off-by: Wolfieheart * [CORE] Support for 1.20.1 (#BlameMojang) Signed-off-by: Wolfieheart * [CORE] Fix for the Mode Visibility not working. Closes #273 Signed-off-by: Wolfieheart * [CORE] Update ArmorStand/ItemFrame Visibility Options in config to be `false` from the start :) Signed-off-by: Wolfieheart * [CORE] "thanks, I'm an expert at finding my own typo's" - InnerAbyssal, 2023 Signed-off-by: Wolfieheart * [CORE] Fix for Comamnds appearing but shouldnt appear in TabCompletion. Also Closes #275 - Language issue for ASEdit.Give Signed-off-by: Wolfieheart * [CORE] Fix the broken build - Left a debug test in... GGz Signed-off-by: Wolfieheart * [CORE] Add ability to run `reload`,`version` and `help or ?` from Console. Closes #267 Signed-off-by: Wolfieheart * [CORE] Sonar Review Remarks - Hope this fixes it Signed-off-by: Wolfieheart * Revert "[CORE] Sonar Review Remarks - Hope this fixes it" This reverts commit e698f94e9d9acfc03f29e30c0d07d6d6554a39de. * [CI SKIP] Comment Update. Internal Signed-off-by: Wolfieheart * [CI SKIP] Comments. Comments.... COMMENTS!!!!! Signed-off-by: Wolfieheart * [CI SKIP] Small fix for Spacing Issues Signed-off-by: Wolfieheart * [CI] Bump SuperiorSkyblockAPI to 2023.2 [CI] Bump Mojang AuthLib to 4.0.43 Signed-off-by: Wolfieheart * [CORE] Fix for Basic PermPack not working Signed-off-by: Wolfieheart * [CI] Bump Towny to 0.99.2.5 --------- Signed-off-by: Wolfieheart --- API-Example-Plugin/pom.xml | 115 ++++++ .../rypofalem/apiexample/ASEventTester.java | 94 +++++ .../apiexample/ArmorStandEditorAPITest.java | 33 ++ .../rypofalem/apiexample/IFEventTester.java | 77 ++++ .../src/main/resources/plugin.yml | 7 + README.md | 68 +++- jitpack.yml | 2 + pom.xml | 95 +++-- .../ArmorStandEditorPlugin.java | 29 +- .../rypofalem/armorstandeditor/CommandEx.java | 380 +++++++++++------- .../armorstandeditor/PlayerEditor.java | 76 +++- .../armorstandeditor/PlayerEditorManager.java | 12 + .../armorstandeditor/api/ArmorStandEvent.java | 35 ++ .../api/ArmorStandManipulatedEvent.java | 45 +++ .../api/ArmorStandRenameEvent.java | 49 +++ .../api/ArmorStandTargetedEvent.java | 45 +++ .../armorstandeditor/api/ItemFrameEvent.java | 35 ++ .../api/ItemFrameGlowEvent.java | 26 ++ .../api/ItemFrameManipulatedEvent.java | 46 +++ .../api/ItemFrameTargetedEvent.java | 45 +++ .../api/PlayerOpenMenuEvent.java | 44 ++ .../rypofalem/armorstandeditor/menu/Menu.java | 100 +++-- .../armorstandeditor/modes/EditMode.java | 3 +- .../GriefPreventionProtection.java | 6 +- ...idence5.1.1.1.jar => Residence5.1.1.3.jar} | Bin 1003824 -> 1011245 bytes src/main/resources/config.yml | 33 +- src/main/resources/lang/de_DE.yml | 15 + src/main/resources/lang/en_US.yml | 26 +- src/main/resources/lang/es_ES.yml | 15 + src/main/resources/lang/fr_FR.yml | 16 +- src/main/resources/lang/ja_JP.yml | 15 + src/main/resources/lang/nl_NL.yml | 17 +- src/main/resources/lang/pl_PL.yml | 15 + src/main/resources/lang/pt_BR.yml | 16 +- src/main/resources/lang/ro_RO.yml | 15 + src/main/resources/lang/ru_RU.yml | 16 + src/main/resources/lang/test_NA.yml | 4 + src/main/resources/lang/uk_UA.yml | 17 +- src/main/resources/lang/zh_CN.yml | 11 + src/main/resources/plugin.yml | 98 +++-- 40 files changed, 1505 insertions(+), 291 deletions(-) create mode 100644 API-Example-Plugin/pom.xml create mode 100644 API-Example-Plugin/src/main/java/io/github/rypofalem/apiexample/ASEventTester.java create mode 100644 API-Example-Plugin/src/main/java/io/github/rypofalem/apiexample/ArmorStandEditorAPITest.java create mode 100644 API-Example-Plugin/src/main/java/io/github/rypofalem/apiexample/IFEventTester.java create mode 100644 API-Example-Plugin/src/main/resources/plugin.yml create mode 100644 jitpack.yml create mode 100644 src/main/java/io/github/rypofalem/armorstandeditor/api/ArmorStandEvent.java create mode 100644 src/main/java/io/github/rypofalem/armorstandeditor/api/ArmorStandManipulatedEvent.java create mode 100644 src/main/java/io/github/rypofalem/armorstandeditor/api/ArmorStandRenameEvent.java create mode 100644 src/main/java/io/github/rypofalem/armorstandeditor/api/ArmorStandTargetedEvent.java create mode 100644 src/main/java/io/github/rypofalem/armorstandeditor/api/ItemFrameEvent.java create mode 100644 src/main/java/io/github/rypofalem/armorstandeditor/api/ItemFrameGlowEvent.java create mode 100644 src/main/java/io/github/rypofalem/armorstandeditor/api/ItemFrameManipulatedEvent.java create mode 100644 src/main/java/io/github/rypofalem/armorstandeditor/api/ItemFrameTargetedEvent.java create mode 100644 src/main/java/io/github/rypofalem/armorstandeditor/api/PlayerOpenMenuEvent.java rename src/main/resources/{Residence5.1.1.1.jar => Residence5.1.1.3.jar} (63%) diff --git a/API-Example-Plugin/pom.xml b/API-Example-Plugin/pom.xml new file mode 100644 index 00000000..5b1b1067 --- /dev/null +++ b/API-Example-Plugin/pom.xml @@ -0,0 +1,115 @@ + + 4.0.0 + io.github.rypofalem.apiexample + armorstandeditor-apitest + jar + 1.20.0-43 + armorstandeditor-apitest + http://maven.apache.org + + + 17 + UTF-8 + 3.0.1 + wolfieheart + https://sonarcloud.io + + + + + Wolfieheart + Wolfieheart + https://github.com/Wolfieheart + + + RypoFalem + RypoFalem + https://github.com/RypoFalem + + + + + + + spigot-repo + https://hub.spigotmc.org/nexus/content/repositories/snapshots/ + + + paper-repo + https://repo.papermc.io/repository/maven-public/ + + + jitpack.io + https://jitpack.io + + + + + + + org.spigotmc + spigot-api + 1.20.1-R0.1-SNAPSHOT + provided + + + dev.folia + folia-api + 1.19.4-R0.1-SNAPSHOT + provided + + + com.github.wolfieheart + armorstandeditor + 1.20.0-43.beta + provided + + + + + + + org.codehaus.mojo + build-helper-maven-plugin + 3.4.0 + + + compile + package + + attach-artifact + + + + + ${project.build.directory}/${project.artifactId}.jar + jar + optional + + + + + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.11.0 + + 17 + 17 + + + + org.apache.maven.plugins + maven-release-plugin + ${maven-release-plugin.version} + + [ci skip] || [CI SKIP] || [CI-SKIP] + @{project.version} + + + + + diff --git a/API-Example-Plugin/src/main/java/io/github/rypofalem/apiexample/ASEventTester.java b/API-Example-Plugin/src/main/java/io/github/rypofalem/apiexample/ASEventTester.java new file mode 100644 index 00000000..0dc20762 --- /dev/null +++ b/API-Example-Plugin/src/main/java/io/github/rypofalem/apiexample/ASEventTester.java @@ -0,0 +1,94 @@ +/* + * ArmorStandEditor: Bukkit plugin to allow editing armor stand attributes + * Copyright (C) 2016-2023 RypoFalem + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +package io.github.rypofalem.apiexample; + +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.entity.EntityDamageByEntityEvent; +import org.bukkit.event.player.PlayerInteractAtEntityEvent; +import org.bukkit.event.player.PlayerInteractEvent; +import org.bukkit.event.player.PlayerSwapHandItemsEvent; + +public class ASEventTester implements Listener { + + Player player; + + //ArmorStandRenameEvent + @EventHandler + public void renameArmorStand(PlayerInteractAtEntityEvent ASRenameEvent){ + player = ASRenameEvent.getPlayer(); + ASRenameEvent.setCancelled(true); + if(ASRenameEvent.isCancelled()) { + player.sendMessage("ArmorStandRenameEvent has been cancelled"); + } else{ + player.sendMessage("ArmorStandRenameEvent has not been cancelled. Continuing...."); + } + } + + //ArmorStandManipEvent + @EventHandler + public void manipulateArmorStand(PlayerInteractAtEntityEvent ASManipEvent){ + player = ASManipEvent.getPlayer(); + ASManipEvent.setCancelled(true); + if(ASManipEvent.isCancelled()) { + player.sendMessage("ArmorStandManipulationEvent has been cancelled"); + } else{ + player.sendMessage("ArmorStandManipulationEvent has not been cancelled. Continuing...."); + } + } + + //ArmorStandTargetedEvent + @EventHandler + public void targetEvent(PlayerSwapHandItemsEvent targetASEvent){ + player = targetASEvent.getPlayer(); + targetASEvent.setCancelled(true); + if(targetASEvent.isCancelled()) { + player.sendMessage("ArmorStandTargetedEvent has been cancelled"); + } else{ + player.sendMessage("ArmorStandTargetedEvent has not been cancelled. Continuing...."); + } + } + + //PlayerOpenMenuEvent + //onArmorStandDamage EntityDamageByEntityEvent event + @EventHandler + public void playerOpeningMenuEvent(EntityDamageByEntityEvent ASEDamageMenuOpenEvent){ + player = (Player) ASEDamageMenuOpenEvent.getDamager(); + ASEDamageMenuOpenEvent.setCancelled(true); + if(ASEDamageMenuOpenEvent.isCancelled()) { + player.sendMessage("PlayerOpenMenuEvent has been cancelled"); + } else{ + player.sendMessage("PlayerOpenMenuEvent has not been cancelled. Continuing...."); + } + } + + //Also PlayerOpenMenuEvent when RightClicking/Interacting + @EventHandler + public void playerOpeningMenuRightClickEvent(PlayerInteractEvent ASERightClickMenuOpenEvent){ + player = ASERightClickMenuOpenEvent.getPlayer(); + ASERightClickMenuOpenEvent.setCancelled(true); + if(ASERightClickMenuOpenEvent.isCancelled()) { + player.sendMessage("PlayerOpenMenuEvent has been cancelled"); + } else{ + player.sendMessage("PlayerOpenMenuEvent has not been cancelled. Continuing...."); + } + } +} diff --git a/API-Example-Plugin/src/main/java/io/github/rypofalem/apiexample/ArmorStandEditorAPITest.java b/API-Example-Plugin/src/main/java/io/github/rypofalem/apiexample/ArmorStandEditorAPITest.java new file mode 100644 index 00000000..53f39d22 --- /dev/null +++ b/API-Example-Plugin/src/main/java/io/github/rypofalem/apiexample/ArmorStandEditorAPITest.java @@ -0,0 +1,33 @@ +/* + * ArmorStandEditor: Bukkit plugin to allow editing armor stand attributes + * Copyright (C) 2016-2023 RypoFalem + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +package io.github.rypofalem.apiexample; + +import org.bukkit.plugin.java.JavaPlugin; + +public class ArmorStandEditorAPITest extends JavaPlugin { + + @Override + public void onEnable(){ + this.getLogger().info("[ArmorStandEditor] API Testing Plugin v1.20.0-43 - Enable"); + this.getServer().getPluginManager().registerEvents(new ASEventTester(), this); + this.getServer().getPluginManager().registerEvents(new IFEventTester(), this); + } + +} diff --git a/API-Example-Plugin/src/main/java/io/github/rypofalem/apiexample/IFEventTester.java b/API-Example-Plugin/src/main/java/io/github/rypofalem/apiexample/IFEventTester.java new file mode 100644 index 00000000..fe18a9bd --- /dev/null +++ b/API-Example-Plugin/src/main/java/io/github/rypofalem/apiexample/IFEventTester.java @@ -0,0 +1,77 @@ +/* + * ArmorStandEditor: Bukkit plugin to allow editing armor stand attributes + * Copyright (C) 2016-2023 RypoFalem + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +package io.github.rypofalem.apiexample; + +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.entity.EntityDamageByEntityEvent; +import org.bukkit.event.player.PlayerInteractAtEntityEvent; +import org.bukkit.event.player.PlayerSwapHandItemsEvent; + +public class IFEventTester implements Listener { + Player player; + + //ItemFrameGlowEvent + @EventHandler + public void manipulateArmorStand(PlayerInteractAtEntityEvent IFGlowEvent){ + player = IFGlowEvent.getPlayer(); + IFGlowEvent.setCancelled(true); + if(IFGlowEvent.isCancelled()) { + player.sendMessage("ItemFrameGlowEvent has been cancelled"); + } else{ + player.sendMessage("ItemFrameGlowEvent has not been cancelled. Continuing...."); + } + } + + @EventHandler + public void manipulateItemFrame(EntityDamageByEntityEvent IFManipulationLeftClickEvent){ + player = (Player) IFManipulationLeftClickEvent.getDamager(); + IFManipulationLeftClickEvent.setCancelled(true); + if(IFManipulationLeftClickEvent.isCancelled()) { + player.sendMessage("ItemFrameManipulatedEvent has been cancelled"); + } else{ + player.sendMessage("ItemFrameManipulatedEvent has not been cancelled. Continuing...."); + } + } + + @EventHandler + public void manipulateItemFrameRightClick(PlayerInteractAtEntityEvent IFManipulationRightClickEvent){ + player = IFManipulationRightClickEvent.getPlayer(); + IFManipulationRightClickEvent.setCancelled(true); + if(IFManipulationRightClickEvent.isCancelled()) { + player.sendMessage("ItemFrameManipulatedEvent has been cancelled"); + } else{ + player.sendMessage("ItemFrameManipulatedEvent has not been cancelled. Continuing...."); + } + } + + @EventHandler + public void targetEvent(PlayerSwapHandItemsEvent targetIFEvent){ + player = targetIFEvent.getPlayer(); + targetIFEvent.setCancelled(true); + if(targetIFEvent.isCancelled()) { + player.sendMessage("ItemFrameTargetedEvent has been cancelled"); + } else{ + player.sendMessage("ItemFrameTargetedEvent has not been cancelled. Continuing...."); + } + } + +} diff --git a/API-Example-Plugin/src/main/resources/plugin.yml b/API-Example-Plugin/src/main/resources/plugin.yml new file mode 100644 index 00000000..3ca5486d --- /dev/null +++ b/API-Example-Plugin/src/main/resources/plugin.yml @@ -0,0 +1,7 @@ +name: ArmorStandEditor-APITester +main: io.github.rypofalem.apiexample.ArmorStandEditorAPITest +version: 1.20.0-43 +api-version: "1.13" +website: https://www.spigotmc.org/resources/94503/ +authors: [Wolfstorm, Pinnkk] +description: Allows players to edit data of armorstands without any commands. \ No newline at end of file diff --git a/README.md b/README.md index 2e41e099..b9f41873 100644 --- a/README.md +++ b/README.md @@ -15,34 +15,23 @@ ArmorStandEditor is a plugin for [Spigot](https://www.spigotmc.org/resources/arm -## Credits - -* RypoFalem for the original version of this plugin. Thank you for all your hard work (Archived on this repository on the branch [Original-Version](https://github.com/Wolfst0rm/ArmorStandEditor/tree/Original-Version) ) -* Anyone who has contributed to this project with tests, issues, code reviews etc. Thank you! -* Shamblecraft for using the plugin originally and giving me the idea to maintain it. - ## Downloads Downloads for Version 1.17 and higher can be obtained from the [download page](https://www.spigotmc.org/resources/armorstandeditor-reborn.94503/) or our [release tracker](https://github.com/Wolfst0rm/ArmorStandEditor/releases) here on GitHub. For versions older than 1.17, then please use [the original versions download page](https://www.spigotmc.org/resources/armor-stand-editor-dead.7688/). The Latest Downloads Shortcut Links: -* [ArmorStandEditor-Last (Unstable)](https://github.com/Wolfst0rm/ArmorStandEditor/actions) +* [ArmorStandEditor-Last (Unstable)](https://github.com/Wolfst0rm/ArmorStandEditor/actions) - **Use these at your own risk. Limited Support is provided for testing purposes** -* 1.20 - Not yet available - * [Spigot Redirect to the latest release](https://www.spigotmc.org/resources/armorstandeditor-reborn.94503/) - * [Modrinth Redirect to the latest Release](https://modrinth.com/plugin/armorstandeditor-reborn) -* 1.19 to 1.19.4 - * [Spigot/Github](https://github.com/Wolfieheart/ArmorStandEditor/releases/tag/1.19.4-41) - * [Modrinth](https://modrinth.com/plugin/armorstandeditor-reborn/version/1.19.4-41) -* 1.18 to 1.18.2 - * [Spigot/Github](https://github.com/Wolfieheart/ArmorStandEditor/releases/tag/1.18.2-34.2) - * [Modrinth](https://modrinth.com/plugin/armorstandeditor-reborn/version/1.18.2-34.2) -* 1.17 to 1.17.1 - * [Spigot/Github](https://github.com/Wolfst0rm/ArmorStandEditor/releases/tag/1.17.1-30) - * [Modrinth](https://modrinth.com/plugin/armorstandeditor-reborn/version/1.17-30) -* 1.16 to 1.16.5 - * [Spigot/Github](https://www.spigotmc.org/resources/armor-stand-editor-dead.7688/download?version=342891) - * [Modrinth](https://modrinth.com/plugin/armorstandeditor-reborn/version/1.16-25) +* 1.20(.1) - Not available yet, currently in progress. + * [Spigot/Github](https://media.giphy.com/media/hNRvZFeBDgLsI/giphy.gif) + * [Hangar](https://media.giphy.com/media/hNRvZFeBDgLsI/giphy.gif) + * [Modrinth](https://media.giphy.com/media/hNRvZFeBDgLsI/giphy.gif) +* 1.19 to 1.19.4 + * [Spigot/Github](https://github.com/Wolfieheart/ArmorStandEditor/releases/tag/1.19.4-41) + * [Modrinth](https://modrinth.com/plugin/armorstandeditor-reborn/version/1.19.4-41) +* [1.18 to 1.18.2](https://github.com/Wolfieheart/ArmorStandEditor/releases/tag/1.18.2-34.2) +* [1.17 to 1.17.1](https://github.com/Wolfieheart/ArmorStandEditor/releases/tag/1.17.1-30) +* [1.16 to 1.16.5](https://www.spigotmc.org/resources/armor-stand-editor-dead.7688/download?version=342891) * [1.14 to 1.14.4](https://www.spigotmc.org/resources/armor-stand-editor-dead.7688/download?version=299267) * [1.13 to 1.13.2](https://www.spigotmc.org/resources/armor-stand-editor-dead.7688/download?version=235185) * [1.11 to 1.11.2](https://www.spigotmc.org/resources/armor-stand-editor-dead.7688/download?version=152723) @@ -68,6 +57,8 @@ subject to change in the future. The minimum enforced API Version is 1.13. * Multiple Language Support through the use of community translations * Respects multiple protection plugins: WorldGuard, Towny, GriefPrevention, Residence etc. * Targeting of an ArmorStand by pressing F with the tool in your hand +* Toggle for Vulnerability of the ArmorStand (New in 1.20) +* Ability to get Player Heads via a Command (New in 1.20) * Glowing ArmorStand to signify Targeting and Slot Disables through the use of Scoreboards. * Folia Support (as of 1.19.4) @@ -80,3 +71,36 @@ If there are issues with the plugin on the latest release, you can report them [ If there are new feature requests, you can ask them to be implemented [here](https://github.com/Wolfst0rm/ArmorStandEditor/issues/new?assignees=&labels=&template=feature-request.yml). **NOTE:** Bugs are also first tested to ensure that they can be reproduced according to the reported steps. If they can not, we will ask for more info. + +## Adding ArmorStandEditor as a Dependency +ArmorStandEditor has an API and is supported through [Jitpack](https://jitpack.io/#Wolfieheart/ArmorStandEditor). The Source Code for that API can be found [here](https://github.com/Wolfieheart/ArmorStandEditor/src/main/java/io/github/rypofalem/armorstandeditor/api). +You can find an example plugin [here](https://github.com/Wolfieheart/ArmorStandEditor/API-Example-Plugin/src/main/java/io/github/rypofalem/apiexample). It contains very basic tests and examples of what you could do with such an API. + +For Maven Users, if you want to interact directly, you need to add the following to your pom.xml file: +```XML + + jitpack.io + https://jitpack.io + +``` +```XML + + com.github.Wolfieheart + ArmorStandEditor + latest + +``` + + +## Credits / Special Thanks + +![JetBrains Logo (Main) logo](https://resources.jetbrains.com/storage/products/company/brand/logos/jb_beam.png) +[JetBrains](https://www.jetbrains.com/), creators of IntelliJ Idea, who are supporting ArmorStandEditor with one of their [Open Source Licenses](https://www.jetbrains.com/opensource/). IntelliJ Idea is the IDE recommended for working with ArmorStandEditor. + +RypoFalem for the original version of this plugin. Thank you for all your hard work (Archived on this repository on the branch [Original-Version](https://github.com/Wolfst0rm/ArmorStandEditor/tree/Original-Version) ) + +Anyone who has contributed to this project with tests, issues, code reviews etc. Thank you! + +![Shamblecraft](https://pbs.twimg.com/profile_images/1466015518029193221/lemURPH9_400x400.jpg) + +Shamblecraft for using the plugin originally and giving me the idea to maintain it. diff --git a/jitpack.yml b/jitpack.yml new file mode 100644 index 00000000..1e41e00b --- /dev/null +++ b/jitpack.yml @@ -0,0 +1,2 @@ +jdk: + - openjdk17 \ No newline at end of file diff --git a/pom.xml b/pom.xml index d82a9020..5e9f2986 100644 --- a/pom.xml +++ b/pom.xml @@ -4,14 +4,14 @@ io.github.rypofalem.armorstandeditor armorstandeditor jar - 1.19.4-42.1 + 1.20.1-43 armorstandeditor http://maven.apache.org 17 UTF-8 - 3.0.0 + 3.0.1 wolfieheart https://sonarcloud.io @@ -49,6 +49,10 @@ sonatype https://oss.sonatype.org/content/groups/public/ + + sonatype snapshots + https://s01.oss.sonatype.org/content/groups/public/ + glaremasters repo @@ -78,14 +82,31 @@ codemc-repo https://repo.codemc.org/repository/maven-public/ + + + minecraft-repo + https://libraries.minecraft.net/ + + + + + com.intellectualsites.bom + bom-1.18.x + 1.28 + import + pom + + + + org.spigotmc spigot-api - 1.19.4-R0.1-SNAPSHOT + 1.20.1-R0.1-SNAPSHOT provided @@ -98,30 +119,30 @@ com.sk89q.worldguard worldguard-bukkit - 7.0.7 + 7.1.0-SNAPSHOT provided - - com.plotsquared - PlotSquared-Core - 6.11.1 - provided - + + com.intellectualsites.plotsquared + plotsquared-core + 7.0.0-SNAPSHOT + provided + - - com.plotsquared - PlotSquared-Bukkit - 6.11.1 - provided - - - PlotSquared-Core - * - - - - + + com.intellectualsites.plotsquared + plotsquared-bukkit + 7.0.0-SNAPSHOT + provided + + + plotsquared-core + * + + + + com.github.TechFortress GriefPrevention @@ -132,7 +153,7 @@ com.palmergames.bukkit.towny towny - 0.99.0.9 + 0.99.2.5 provided @@ -146,7 +167,7 @@ com.bgsoftware SuperiorSkyblockAPI - 2023.1 + 2023.2 provided @@ -160,23 +181,37 @@ com.github.angeschossen LandsAPI - 6.28.11 + 6.29.12 provided world.bentobox bentobox - 1.23.1 + 1.23.2 provided com.bekvon Residence - 5.1.1.1 + 5.1.1.3 system - ${pom.basedir}/src/main/resources/Residence5.1.1.1.jar + ${pom.basedir}/src/main/resources/Residence5.1.1.3.jar + + + + com.mojang + authlib + 4.0.43 + provided + + + + org.projectlombok + lombok + 1.18.28 + provided @@ -217,7 +252,7 @@ org.apache.maven.plugins maven-shade-plugin - 3.4.1 + 3.5.0 package diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/ArmorStandEditorPlugin.java b/src/main/java/io/github/rypofalem/armorstandeditor/ArmorStandEditorPlugin.java index e23c53fb..84ba2282 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/ArmorStandEditorPlugin.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/ArmorStandEditorPlugin.java @@ -90,6 +90,10 @@ public class ArmorStandEditorPlugin extends JavaPlugin{ boolean invisibleItemFrames = true; boolean armorStandVisibility = true; + //Misc Options + boolean allowedToRetrievePlayerHead = false; + boolean adminOnlyNotifications = false; + //Glow Entity Colors public Scoreboard scoreboard; public Team team; @@ -124,7 +128,7 @@ public void onEnable() { } //Also Warn People to Update if using nmsVersion lower than latest - if (nmsVersion.compareTo("v1_19") < 0) { + if (nmsVersion.compareTo("v1_20") < 0) { getLogger().log(Level.WARNING,"Minecraft Version: {0}",nmsVersion); getLogger().warning("ArmorStandEditor is compatible with this version of Minecraft, but it is not the latest supported version."); getLogger().warning("Loading continuing, but please consider updating to the latest version."); @@ -236,6 +240,11 @@ public void onEnable() { opUpdateNotification = getConfig().getBoolean("opUpdateNotification", true); updateCheckerInterval = getConfig().getDouble("updateCheckerInterval", 24); + //Ability to get Player Heads via a command + allowedToRetrievePlayerHead = getConfig().getBoolean("allowedToRetrievePlayerHead", true); + + adminOnlyNotifications = getConfig().getBoolean("adminOnlyNotifications", true); + //Run UpdateChecker - Reports out to Console on Startup ONLY! if(!Scheduler.isFolia() && runTheUpdateChecker) { @@ -280,7 +289,7 @@ private void runUpdateCheckerConsoleUpdateCheck() { } } - private void runUpdateCheckerWithOPNotifyOnJoinEnabled() { + private void runUpdateCheckerWithOPNotifyOnJoinEnabled() { if (getArmorStandEditorVersion().contains(".x")) { getLogger().warning("Note from the development team: "); getLogger().warning("It appears that you are using the development version of ArmorStandEditor"); @@ -368,6 +377,8 @@ public boolean getHasPaper(){ } } + + public String getArmorStandEditorVersion(){ return getConfig().getString("version"); } public boolean getArmorStandVisibility(){ @@ -396,6 +407,11 @@ public boolean getRunTheUpdateChecker() { public Integer getCustomModelDataInt() { return this.getConfig().getInt("customModelDataInt"); } + //New in 1.20-43: Allow the ability to get a player head from a command - ENABLED VIA CONFIG ONLY! + public boolean getAllowedToRetrievePlayerHead() { return this.getConfig().getBoolean("allowedToRetrievePlayerHead"); } + + public boolean getAdminOnlyNotifications() { return this.getConfig().getBoolean("adminOnlyNotifications"); } + public boolean isEditTool(ItemStack itemStk){ if (itemStk == null) { return false; } if (editTool != itemStk.getType()) { return false; } @@ -526,6 +542,10 @@ public void performReload() { //Add ability to enable ot Disable the running of the Updater runTheUpdateChecker = getConfig().getBoolean("runTheUpdateChecker", true); + //Ability to get Player Heads via a command + allowedToRetrievePlayerHead = getConfig().getBoolean("allowedToRetrievePlayerHead", true); + adminOnlyNotifications = getConfig().getBoolean("adminOnlyNotifications", true); + //Add Ability to check for UpdatePerms that Notify Ops - https://github.com/Wolfieheart/ArmorStandEditor/issues/86 opUpdateNotification = getConfig().getBoolean("opUpdateNotification", true); updateCheckerInterval = getConfig().getDouble("updateCheckerInterval", 24); @@ -540,7 +560,6 @@ public void performReload() { } } - } public static ArmorStandEditorPlugin instance(){ @@ -576,8 +595,6 @@ private void getMetrics(){ map.put("Dutch", entry); } else if (languageUsed.startsWith("de")) { map.put("German", entry); - } else if (languageUsed.startsWith("en")) { - map.put("English", entry); } else if (languageUsed.startsWith("es")) { map.put("Spanish", entry); } else if (languageUsed.startsWith("fr")) { @@ -597,7 +614,7 @@ private void getMetrics(){ } else if(languageUsed.startsWith("pt")) { map.put("Brazilian", entry); } else{ - map.put("Other", entry); + map.put("English", entry); } return map; })); diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/CommandEx.java b/src/main/java/io/github/rypofalem/armorstandeditor/CommandEx.java index d183e5cc..0ce4c76b 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/CommandEx.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/CommandEx.java @@ -19,27 +19,35 @@ package io.github.rypofalem.armorstandeditor; +import com.google.gson.Gson; +import com.google.gson.JsonObject; + import com.jeff_media.updatechecker.UpdateCheckSource; import com.jeff_media.updatechecker.UpdateChecker; +import com.mojang.authlib.GameProfile; +import com.mojang.authlib.properties.Property; + import io.github.rypofalem.armorstandeditor.modes.AdjustmentMode; import io.github.rypofalem.armorstandeditor.modes.Axis; import io.github.rypofalem.armorstandeditor.modes.EditMode; +import org.bukkit.Bukkit; import org.bukkit.ChatColor; +import org.bukkit.Material; import org.bukkit.Sound; -import org.bukkit.command.Command; -import org.bukkit.command.CommandExecutor; -import org.bukkit.command.CommandSender; -import org.bukkit.command.TabCompleter; +import org.bukkit.command.*; import org.bukkit.entity.Player; import org.bukkit.inventory.ItemFlag; import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.meta.ItemMeta; +import org.bukkit.inventory.meta.SkullMeta; -import java.util.ArrayList; -import java.util.List; -import java.util.Objects; +import java.io.IOException; +import java.io.InputStreamReader; +import java.lang.reflect.Field; +import java.net.URL; +import java.util.*; public class CommandEx implements CommandExecutor, TabCompleter { ArmorStandEditorPlugin plugin; @@ -52,6 +60,8 @@ public class CommandEx implements CommandExecutor, TabCompleter { final String UPDATE = ChatColor.YELLOW + "/ase update"; final String RELOAD = ChatColor.YELLOW + "/ase reload"; final String GIVECUSTOMMODEL = ChatColor.YELLOW + "/ase give"; + final String GIVEPLAYERHEAD = ChatColor.YELLOW + "/ase playerhead "; + Gson gson = new Gson(); public CommandEx( ArmorStandEditorPlugin armorStandEditorPlugin) { this.plugin = armorStandEditorPlugin; @@ -59,58 +69,73 @@ public CommandEx( ArmorStandEditorPlugin armorStandEditorPlugin) { @Override public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { - if (!(sender instanceof Player - && getPermissionBasic( (Player) sender))) { + if(sender instanceof ConsoleCommandSender){ //Fix to Support #267 + if(args.length == 0){ + sender.sendMessage(VERSION); + sender.sendMessage(HELP); + sender.sendMessage(RELOAD); + } else{ + switch(args[0].toLowerCase()) { + case "reload" -> commandReloadConsole(sender); + case "help", "?" -> commandHelpConsole(sender); + case "version" -> commandVersionConsole(sender); + default -> { + sender.sendMessage(plugin.getLang().getMessage("noconsolecom","warn")); + } + } + return true; + } + + } + + if(sender instanceof Player && !getPermissionBasic( (Player) sender)){ sender.sendMessage(plugin.getLang().getMessage("noperm", "warn")); return true; - } + } else { - Player player = (Player) sender; - if (args.length == 0) { - player.sendMessage(LISTMODE); - player.sendMessage(LISTAXIS); - player.sendMessage(LISTSLOT); - player.sendMessage(LISTADJUSTMENT); - player.sendMessage(VERSION); - player.sendMessage(UPDATE); - player.sendMessage(HELP); - player.sendMessage(RELOAD); - player.sendMessage(GIVECUSTOMMODEL); + Player player = (Player) sender; + if (args.length == 0) { + player.sendMessage(LISTMODE); + player.sendMessage(LISTAXIS); + player.sendMessage(LISTSLOT); + player.sendMessage(LISTADJUSTMENT); + player.sendMessage(VERSION); + player.sendMessage(UPDATE); + player.sendMessage(HELP); + player.sendMessage(RELOAD); + player.sendMessage(GIVECUSTOMMODEL); + player.sendMessage(GIVEPLAYERHEAD); + return true; + } + switch (args[0].toLowerCase()) { + case "mode" -> commandMode(player, args); + case "axis" -> commandAxis(player, args); + case "adj" -> commandAdj(player, args); + case "slot" -> commandSlot(player, args); + case "help", "?" -> commandHelp(player); + case "version" -> commandVersion(player); + case "update" -> commandUpdate(player); + case "give" -> commandGive(player); + case "playerhead" -> commandGivePlayerHead(player, args); + case "reload" -> commandReload(player); + default -> { + sender.sendMessage(LISTMODE); + sender.sendMessage(LISTAXIS); + sender.sendMessage(LISTSLOT); + sender.sendMessage(LISTADJUSTMENT); + sender.sendMessage(VERSION); + sender.sendMessage(UPDATE); + sender.sendMessage(HELP); + sender.sendMessage(RELOAD); + sender.sendMessage(GIVECUSTOMMODEL); + sender.sendMessage(GIVEPLAYERHEAD); + } + } return true; } - switch (args[0].toLowerCase()) { - case "mode": commandMode(player, args); - break; - case "axis": commandAxis(player, args); - break; - case "adj": commandAdj(player, args); - break; - case "slot": commandSlot(player, args); - break; - case "help","?": commandHelp(player); - break; - case "version": commandVersion(player); - break; - case "update": commandUpdate(player); - break; - case "give": commandGive(player); - break; - case "reload": commandReload(player); - break; - default: - sender.sendMessage(LISTMODE); - sender.sendMessage(LISTAXIS); - sender.sendMessage(LISTSLOT); - sender.sendMessage(LISTADJUSTMENT); - sender.sendMessage(VERSION); - sender.sendMessage(UPDATE); - sender.sendMessage(HELP); - sender.sendMessage(RELOAD); - sender.sendMessage(GIVECUSTOMMODEL); - } - return true; } + // Implemented to fix: // https://github.com/Wolfieheart/ArmorStandEditor-Issues/issues/35 & // https://github.com/Wolfieheart/ArmorStandEditor-Issues/issues/30 - See Remarks OTHER @@ -128,6 +153,88 @@ private void commandGive(Player player) { player.sendMessage(plugin.getLang().getMessage("nogive", "warn")); } } + + private void commandGivePlayerHead(Player player,String[] args) { + if(plugin.getAllowedToRetrievePlayerHead() && checkPermission(player, "head", true)){ + + if(args.length == 2){ + + //Get the Player head Texture + String skinTexture = getPlayerHeadTexture(args[1]); + + if(skinTexture == null){ + player.sendMessage(plugin.getLang().getMessage("playerheaderror", "warn")); + } + + //Create the ItemStack for the PlayerHead + ItemStack playerHead = new ItemStack(Material.PLAYER_HEAD, 1); + + // Get the meta therefore + SkullMeta playerHeadMeta = (SkullMeta) playerHead.getItemMeta(); + assert playerHeadMeta != null; + + //Generate a Random UUID + GameProfile gameProfile = new GameProfile(UUID.randomUUID(), null); + gameProfile.getProperties().put("textures", new Property("textures", skinTexture)); + Field profileField = null; + + try { + profileField = playerHeadMeta.getClass().getDeclaredField("profile"); + profileField.setAccessible(true); + profileField.set(playerHeadMeta, gameProfile); + } catch (NoSuchFieldException | IllegalAccessException e) { + player.sendMessage(plugin.getLang().getMessage("playerheaderror", "warn")); + } finally { + if (profileField != null) { + profileField.setAccessible(false); + } + } + + //Set the Display Name to be that of the Player Given + playerHeadMeta.setDisplayName(args[1]); + + //Set the Item Meta + playerHead.setItemMeta(playerHeadMeta); + + //Add the head to the Players Inventory + display PlayerHead Success Message + player.getInventory().addItem(playerHead); + player.sendMessage(plugin.getLang().getMessage("playerhead","info")); + + //Let Admins know this command has been ran + for(Player onlineList : Bukkit.getOnlinePlayers()){ + if(onlineList.hasPermission("asedit.permpack.admin") && plugin.getAdminOnlyNotifications()){ + onlineList.sendMessage(ChatColor.YELLOW + "[ArmorStandEditor] " + player.getName() + "has just used the /ase playerhead command to get the head for " + args[1]); + } + } + } + } else{ + player.sendMessage(plugin.getLang().getMessage("noplayerhead", "warn")); + } + } + + private String getPlayerHeadTexture(String playerName) { + try { + // Get the UUID of the Player in Question + URL uuidURL = new URL("https://api.mojang.com/users/profiles/minecraft/" + playerName); + try (InputStreamReader uuidURLReader = new InputStreamReader(uuidURL.openStream())) { + JsonObject uuidObject = gson.fromJson(uuidURLReader, JsonObject.class); + String uuid = uuidObject.get("id").getAsString(); + + + // Get the Skin from that UUID + URL skinURL = new URL("https://sessionserver.mojang.com/session/minecraft/profile/" + uuid + "?unsigned=false"); + try (InputStreamReader skinURLReader = new InputStreamReader(skinURL.openStream())) { + JsonObject skinObject = gson.fromJson(skinURLReader, JsonObject.class); + JsonObject skinTextureProperty = skinObject.get("properties").getAsJsonArray().get(0).getAsJsonObject(); + return skinTextureProperty.get("value").getAsString(); + } + } + } catch (IOException | IllegalStateException e) { + return null; + } + } + + private void commandSlot(Player player, String[] args) { if (args.length <= 1) { @@ -193,8 +300,8 @@ private void commandMode( Player player, String[] args) { if (args.length > 1) { for ( EditMode mode : EditMode.values()) { if (mode.toString().toLowerCase().contentEquals(args[1].toLowerCase())) { - if (args[1].equals("invisible") && !checkPermission(player, "armorstand.invisible", true)) return; - if (args[1].equals("itemframe") && !checkPermission(player, "itemframe.invisible", true)) return; + if (args[1].equals("invisible") && !checkPermission(player, "togglearmorstandvisibility", true)) return; + if (args[1].equals("itemframe") && !checkPermission(player, "toggleitemframevisibility", true)) return; plugin.editorManager.getPlayerEditor(player.getUniqueId()).setMode(mode); return; } @@ -213,6 +320,15 @@ private void commandHelp(Player player) { player.sendRawMessage(plugin.getLang().getMessage("helpdiscord", "")); } + private void commandHelpConsole(CommandSender sender) { + sender.sendMessage(plugin.getLang().getMessage("help", "info", plugin.editTool.name())); + sender.sendMessage(""); + sender.sendMessage(plugin.getLang().getMessage("helptips", "info")); + sender.sendMessage(""); + sender.sendMessage(plugin.getLang().getMessage("helpurl", "info")); + sender.sendMessage(plugin.getLang().getMessage("helpdiscord", "info")); + } + private void commandUpdate(Player player) { if (!(checkPermission(player, "update", true))) return; @@ -238,12 +354,21 @@ private void commandVersion(Player player) { player.sendMessage(ChatColor.YELLOW + "[ArmorStandEditor] Version: " + verString); } + private void commandVersionConsole(CommandSender sender){ + String verString = plugin.getArmorStandEditorVersion(); + sender.sendMessage(ChatColor.YELLOW + "[ArmorStandEditor] Version: " + verString); + } + private void commandReload(Player player){ if(!(getPermissionReload(player))) return; plugin.performReload(); player.sendMessage(plugin.getLang().getMessage("reloaded", "")); } + private void commandReloadConsole(CommandSender sender) { + plugin.performReload(); + sender.sendMessage(plugin.getLang().getMessage("reloaded", "info")); + } private boolean checkPermission(Player player, String permName, boolean sendMessageOnInvalidation) { if (permName.equalsIgnoreCase("paste")) { @@ -260,119 +385,100 @@ private boolean checkPermission(Player player, String permName, boolean sendMes } private boolean getPermissionBasic(Player player) { - return checkPermission(player, "basic", true); + return checkPermission(player, "basic", false); } - private boolean getPermissionUpdate(Player player){ - return checkPermission(player, "update", true); - } + private boolean getPermissionGive(Player player) { return checkPermission(player, "give", false); } - private boolean getPermissionGive(Player player){ - return checkPermission(player, "give", true); + private boolean getPermissionUpdate(Player player){ + return checkPermission(player, "update", false); } private boolean getPermissionReload(Player player) { - return checkPermission(player, "reload", true); + return checkPermission(player, "reload", false); } + private boolean getPermissionPlayerHead(Player player) { return checkPermission(player, "head", false); } + //REFACTOR COMPLETION @Override - @SuppressWarnings({"deprecated"}) public List onTabComplete(CommandSender sender, Command command, String label, String[] args) { - if (command.getName().equalsIgnoreCase("ase") || command.getName().equalsIgnoreCase("armorstandeditor") || command.getName().equalsIgnoreCase("asedit")) { - List argList = new ArrayList<>(); + List argList = new ArrayList<>(); + Player player = (Player) sender; - //Needed for Permission Checks - Player player = (Player) sender; + if (isCommandValid(command.getName())) { - if (args.length == 1 && getPermissionBasic(player)) { + if (args.length == 1) { + argList.add("mode"); + argList.add("axis"); + argList.add("adj"); + argList.add("slot"); + argList.add("help"); + argList.add("?"); - //Basic Permission Check - if (getPermissionBasic(player)) { - argList.add("mode"); - argList.add("axis"); - argList.add("adj"); - argList.add("slot"); - argList.add("help"); - argList.add("?"); + //Will Only work with permissions + if(getPermissionGive(player)){ + argList.add("give"); } - - //Update Permission Check - if (getPermissionUpdate(player)) { + if(getPermissionUpdate(player)){ argList.add("update"); - argList.add("version"); - } - - //Give Permission Check - if (getPermissionGive(player)) { - argList.add("give"); } - - //Reload Permission Check - if (getPermissionReload(player)){ + if(getPermissionReload(player)){ argList.add("reload"); } - - return argList.stream().filter(a -> a.startsWith(args[0])).toList(); + if(getPermissionPlayerHead(player) && plugin.getAllowedToRetrievePlayerHead()){ + argList.add("playerhead"); + } } - //Options for Mode - if (args.length == 2 && args[0].equalsIgnoreCase("mode")){ - argList.add("None"); - argList.add("Invisible"); - argList.add("ShowArms"); - argList.add("Gravity"); - argList.add("BasePlate"); - argList.add("Size"); - argList.add("Copy"); - argList.add("Paste"); - argList.add("Head"); - argList.add("Body"); - argList.add("LeftArm"); - argList.add("RightArm"); - argList.add("LeftLeg"); - argList.add("RightLeg"); - argList.add("Placement"); - argList.add("DisableSlots"); - argList.add("Rotate"); - argList.add("Equipment"); - argList.add("Reset"); - argList.add("ItemFrame"); - argList.add("ItemFrameGlow"); - - return argList; //New List + if (args.length == 2 && args[0].equalsIgnoreCase("mode")) { + argList.addAll(getModeOptions()); } - if(args.length == 2 && args[0].equalsIgnoreCase("axis")){ - argList.add("X"); - argList.add("Y"); - argList.add("Z"); - return argList; //New List + if (args.length == 2 && args[0].equalsIgnoreCase("axis")) { + argList.addAll(getAxisOptions()); } - if(args.length == 2 && args[0].equalsIgnoreCase("slot")) { - argList.add("0"); - argList.add("1"); - argList.add("2"); - argList.add("3"); - argList.add("4"); - argList.add("5"); - argList.add("6"); - argList.add("7"); - argList.add("8"); - argList.add("9"); - return argList; //New List + if (args.length == 2 && args[0].equalsIgnoreCase("slot")) { + argList.addAll(getSlotOptions()); } - if(args.length == 2 && args[0].equalsIgnoreCase("adj")) { - argList.add("Coarse"); - argList.add("Fine"); - return argList; //New List + if (args.length == 2 && args[0].equalsIgnoreCase("adj")) { + argList.addAll(getAdjOptions()); } - return argList; //Empty List + return argList.stream().filter(a -> a.startsWith(args[0])).toList(); } - return null; //Default + return Collections.emptyList(); + } + + private boolean isCommandValid(String commandName) { + return commandName.equalsIgnoreCase("ase") || + commandName.equalsIgnoreCase("armorstandeditor") || + commandName.equalsIgnoreCase("asedit"); + } + + private List getModeOptions() { + return List.of( + "None", "Invisible", "ShowArms", "Gravity", "BasePlate", + "Size", "Copy", "Paste", "Head", "Body", "LeftArm", + "RightArm", "LeftLeg", "RightLeg", "Placement", + "DisableSlots", "Rotate", "Equipment", "Reset", + "ItemFrame", "ItemFrameGlow" + ); + } + + private List getAxisOptions() { + return List.of("X", "Y", "Z"); } + + private List getSlotOptions() { + return List.of("0", "1", "2", "3", "4", "5", "6", "7", "8", "9"); + } + + private List getAdjOptions() { + return List.of("Coarse", "Fine"); + } + } \ No newline at end of file diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditor.java b/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditor.java index c19d2b1b..8e3c6b62 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditor.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditor.java @@ -18,6 +18,7 @@ */ package io.github.rypofalem.armorstandeditor; +import io.github.rypofalem.armorstandeditor.api.*; import io.github.rypofalem.armorstandeditor.menu.EquipmentMenu; import io.github.rypofalem.armorstandeditor.menu.Menu; import io.github.rypofalem.armorstandeditor.modes.AdjustmentMode; @@ -160,6 +161,9 @@ public void editArmorStand(ArmorStand armorStand) { case DISABLESLOTS: toggleDisableSlots(armorStand); break; + case VULNERABILITY: + toggleInvulnerability(armorStand); + break; case EQUIPMENT: openEquipment(armorStand); break; @@ -167,8 +171,6 @@ public void editArmorStand(ArmorStand armorStand) { resetPosition(armorStand); break; case NONE: - sendMessage("nomode", null); - break; default: sendMessage("nomode", null); break; @@ -178,6 +180,12 @@ public void editArmorStand(ArmorStand armorStand) { public void editItemFrame(ItemFrame itemFrame) { if (!getPlayer().hasPermission("asedit.itemframe.invisible") || !plugin.invisibleItemFrames) return; //Option to use perms or Config + + //Generate a new ArmorStandManipulationEvent and call it out. + ItemFrameManipulatedEvent event = new ItemFrameManipulatedEvent(itemFrame, getPlayer()); + Bukkit.getPluginManager().callEvent(event); // Bukkit handles the call out + if (event.isCancelled()) return; //do nothing if cancelled + switch (eMode) { case ITEMFRAME: toggleItemFrameVisible(itemFrame); @@ -186,8 +194,6 @@ public void editItemFrame(ItemFrame itemFrame) { itemFrame.setVisible(true); break; case NONE: - sendMessage("nomodeif", null); - break; default: sendMessage("nomodeif", null); break; @@ -195,6 +201,7 @@ public void editItemFrame(ItemFrame itemFrame) { } private void resetPosition(ArmorStand armorStand) { + if(!getPlayer().hasPermission("asedit.reset")) return; armorStand.setHeadPose(new EulerAngle(0, 0, 0)); armorStand.setBodyPose(new EulerAngle(0, 0, 0)); armorStand.setLeftArmPose(new EulerAngle(0, 0, 0)); @@ -212,6 +219,11 @@ private void openEquipment(ArmorStand armorStand) { public void reverseEditArmorStand(ArmorStand armorStand) { if (!getPlayer().hasPermission("asedit.basic")) return; + //Generate a new ArmorStandManipulationEvent and call it out. + ArmorStandManipulatedEvent event = new ArmorStandManipulatedEvent(armorStand, getPlayer()); + Bukkit.getPluginManager().callEvent(event); // Bukkit handles the call out //TODO: Folia Refactor + if (event.isCancelled()) return; //do nothing if cancelled + armorStand = attemptTarget(armorStand); switch (eMode) { case LEFTARM: @@ -244,7 +256,13 @@ public void reverseEditArmorStand(ArmorStand armorStand) { } private void move(ArmorStand armorStand) { - if(!getPlayer().hasPermission("asedit.placement")) return; + if(!getPlayer().hasPermission("asedit.movement")) return; + + //Generate a new ArmorStandManipulationEvent and call it out. + ArmorStandManipulatedEvent event = new ArmorStandManipulatedEvent(armorStand, getPlayer()); + Bukkit.getPluginManager().callEvent(event); // Bukkit handles the call out //TODO: Folia Refactor + if (event.isCancelled()) return; //do nothing if cancelled + Location loc = armorStand.getLocation(); switch (axis) { case X: @@ -261,7 +279,7 @@ private void move(ArmorStand armorStand) { } private void reverseMove(ArmorStand armorStand) { - if(!getPlayer().hasPermission("asedit.placement")) return; + if(!getPlayer().hasPermission("asedit.movement")) return; Location loc = armorStand.getLocation(); switch (axis) { case X: @@ -278,6 +296,7 @@ private void reverseMove(ArmorStand armorStand) { } private void rotate(ArmorStand armorStand) { + if(!getPlayer().hasPermission("asedit.rotation")) return; Location loc = armorStand.getLocation(); float yaw = loc.getYaw(); loc.setYaw((yaw + 180 + (float) degreeAngleChange) % 360 - 180); @@ -285,6 +304,7 @@ private void rotate(ArmorStand armorStand) { } private void reverseRotate(ArmorStand armorStand) { + if(!getPlayer().hasPermission("asedit.rotation")) return; Location loc = armorStand.getLocation(); float yaw = loc.getYaw(); loc.setYaw((yaw + 180 - (float) degreeAngleChange) % 360 - 180); @@ -292,12 +312,14 @@ private void reverseRotate(ArmorStand armorStand) { } private void copy(ArmorStand armorStand) { + if(!getPlayer().hasPermission("asedit.copy")) return; copySlots.copyDataToSlot(armorStand); sendMessage("copied", "" + (copySlots.currentSlot + 1)); setMode(EditMode.PASTE); } private void paste(ArmorStand armorStand) { + if(!getPlayer().hasPermission("asedit.paste")) return; ArmorStandData data = copySlots.getDataToPaste(); if (data == null) return; armorStand.setHeadPose(data.headPos); @@ -311,6 +333,8 @@ private void paste(ArmorStand armorStand) { armorStand.setBasePlate(data.basePlate); armorStand.setArms(data.showArms); armorStand.setVisible(data.visible); + + //Only Paste the Items on the stand if in Creative Mode - Do not run elsewhere for good fecking reason! if (this.getPlayer().getGameMode() == GameMode.CREATIVE) { armorStand.getEquipment().setHelmet(data.head); armorStand.getEquipment().setChestplate(data.body); @@ -356,31 +380,44 @@ private void toggleDisableSlots(ArmorStand armorStand) { } - private void toggleGravity(ArmorStand armorStand) { //Fix for Wolfst0rm/ArmorStandEditor-Issues#6: Translation of On/Off Keys are broken + private void toggleInvulnerability(ArmorStand armorStand) { //See NewFeature-Request #256 for more info + if(!getPlayer().hasPermission("asedit.toggleInvulnerability")) return; + armorStand.setInvulnerable(!armorStand.isInvulnerable()); + sendMessage("toggleinvulnerability", String.valueOf(armorStand.isInvulnerable())); + } + + + + private void toggleGravity(ArmorStand armorStand) { + if(!getPlayer().hasPermission("asedit.togglegravity")) return; + + //Fix for Wolfst0rm/ArmorStandEditor-Issues#6: Translation of On/Off Keys are broken armorStand.setGravity(!armorStand.hasGravity()); sendMessage("setgravity", String.valueOf(armorStand.hasGravity())); - } void togglePlate(ArmorStand armorStand) { + if(!getPlayer().hasPermission("asedit.togglebaseplate")) return; armorStand.setBasePlate(!armorStand.hasBasePlate()); } void toggleArms(ArmorStand armorStand) { + if(!getPlayer().hasPermission("asedit.togglearms")) return; armorStand.setArms(!armorStand.hasArms()); } void toggleVisible(ArmorStand armorStand) { - if (!getPlayer().hasPermission("asedit.armorstand.invisible") || !plugin.armorStandVisibility) return; //Option to use perms or Config + if (!getPlayer().hasPermission("asedit.togglearmorstandvisiblity") || !plugin.armorStandVisibility) return; //Option to use perms or Config armorStand.setVisible(!armorStand.isVisible()); } void toggleItemFrameVisible(ItemFrame itemFrame) { - if (!getPlayer().hasPermission("asedit.itemframe.invisible") || !plugin.invisibleItemFrames) return; //Option to use perms or Config + if (!getPlayer().hasPermission("asedit.toggleitemframevisibility") || !plugin.invisibleItemFrames) return; //Option to use perms or Config itemFrame.setVisible(!itemFrame.isVisible()); } void toggleSize(ArmorStand armorStand) { + if(!getPlayer().hasPermission("asedit.togglesize")) return; armorStand.setSmall(!armorStand.isSmall()); } @@ -453,6 +490,12 @@ public void setTarget(ArrayList armorStands) { sendMessage("target", null); } } + + //API: ArmorStandTargetedEvent + ArmorStandTargetedEvent e = new ArmorStandTargetedEvent(targetList.get(targetIndex), getPlayer()); + Bukkit.getPluginManager().callEvent(e); //TODO: Folia Refactor + if (e.isCancelled()) return; + target = targetList.get(targetIndex); highlight(target); //NOTE: If Targeted and Locked, it displays the TEAM Color Glow: RED // Otherwise, its unlocked and will display WHITE as its not in a team by default @@ -486,6 +529,12 @@ public void setFrameTarget(ArrayList itemFrames) { frameTargetIndex = 0; sendMessage("frametarget", null); } + + //API: ItemFrameTargetedEvent + ItemFrameTargetedEvent e = new ItemFrameTargetedEvent(frameTargetList.get(frameTargetIndex), getPlayer()); + Bukkit.getPluginManager().callEvent(e); //TODO: Folia Refactor + if (e.isCancelled()) return; + frameTarget = frameTargetList.get(frameTargetIndex); } } @@ -558,6 +607,13 @@ private class OpenMenuTask implements Runnable { @Override public void run() { if (isMenuCancelled()) return; + + + //API: PlayerOpenMenuEvent + PlayerOpenMenuEvent event = new PlayerOpenMenuEvent(getPlayer()); + Bukkit.getPluginManager().callEvent(event); //TODO: Folia Refactor + if (event.isCancelled()) return; + chestMenu.openMenu(); } } diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditorManager.java b/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditorManager.java index cfefb548..5328e3d8 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditorManager.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditorManager.java @@ -20,6 +20,8 @@ package io.github.rypofalem.armorstandeditor; import com.google.common.collect.ImmutableList; +import io.github.rypofalem.armorstandeditor.api.ArmorStandRenameEvent; +import io.github.rypofalem.armorstandeditor.api.ItemFrameGlowEvent; import io.github.rypofalem.armorstandeditor.menu.ASEHolder; import io.github.rypofalem.armorstandeditor.protections.*; @@ -136,6 +138,11 @@ void onArmorStandInteract( PlayerInteractAtEntityEvent event) { name = null; } + //API: ArmorStandRenameEvent + ArmorStandRenameEvent e = new ArmorStandRenameEvent(as, player, name); + Bukkit.getPluginManager().callEvent(e); + if (e.isCancelled()) return; + if (name == null) { as.setCustomName(null); as.setCustomNameVisible(false); @@ -176,6 +183,11 @@ void onArmorStandInteract( PlayerInteractAtEntityEvent event) { if (player.getInventory().getItemInMainHand().getType().equals(Material.GLOW_INK_SAC) //attempt glowing && player.hasPermission("asedit.basic") && plugin.glowItemFrames && player.isSneaking()) { + + ItemFrameGlowEvent e = new ItemFrameGlowEvent(itemFrame, player); + Bukkit.getPluginManager().callEvent(e); + if (e.isCancelled()) return; + ItemStack glowSacs = player.getInventory().getItemInMainHand(); ItemStack contents = null; Rotation rotation = null; diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/api/ArmorStandEvent.java b/src/main/java/io/github/rypofalem/armorstandeditor/api/ArmorStandEvent.java new file mode 100644 index 00000000..4de03817 --- /dev/null +++ b/src/main/java/io/github/rypofalem/armorstandeditor/api/ArmorStandEvent.java @@ -0,0 +1,35 @@ +/* + * ArmorStandEditor: Bukkit plugin to allow editing armor stand attributes + * Copyright (C) 2016-2023 RypoFalem + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +package io.github.rypofalem.armorstandeditor.api; + +import lombok.Getter; +import org.bukkit.entity.ArmorStand; +import org.bukkit.event.Event; + +public abstract class ArmorStandEvent extends Event{ + + @Getter + protected final ArmorStand armorStand; + + public ArmorStandEvent(ArmorStand armorStand) { + this.armorStand = armorStand; + } + +} \ No newline at end of file diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/api/ArmorStandManipulatedEvent.java b/src/main/java/io/github/rypofalem/armorstandeditor/api/ArmorStandManipulatedEvent.java new file mode 100644 index 00000000..8f7ae220 --- /dev/null +++ b/src/main/java/io/github/rypofalem/armorstandeditor/api/ArmorStandManipulatedEvent.java @@ -0,0 +1,45 @@ +/* + * ArmorStandEditor: Bukkit plugin to allow editing armor stand attributes + * Copyright (C) 2016-2023 RypoFalem + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ +package io.github.rypofalem.armorstandeditor.api; + +import lombok.Getter; +import lombok.Setter; +import org.bukkit.entity.ArmorStand; +import org.bukkit.entity.Player; +import org.bukkit.event.Cancellable; +import org.bukkit.event.HandlerList; + +public class ArmorStandManipulatedEvent extends ArmorStandEvent implements Cancellable { + + @Getter @Setter + private boolean cancelled = false; + + @Getter + protected final Player player; + + public ArmorStandManipulatedEvent(ArmorStand armorStand, Player player) { + super(armorStand); + this.player = player; + } + + /* Generated for Bukkit */ + private static final HandlerList handlers = new HandlerList(); + public static HandlerList getHandlerList() { return (handlers); } + @Override public HandlerList getHandlers() { return (handlers); } +} diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/api/ArmorStandRenameEvent.java b/src/main/java/io/github/rypofalem/armorstandeditor/api/ArmorStandRenameEvent.java new file mode 100644 index 00000000..07a62dbf --- /dev/null +++ b/src/main/java/io/github/rypofalem/armorstandeditor/api/ArmorStandRenameEvent.java @@ -0,0 +1,49 @@ +/* + * ArmorStandEditor: Bukkit plugin to allow editing armor stand attributes + * Copyright (C) 2016-2023 RypoFalem + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ +package io.github.rypofalem.armorstandeditor.api; + +import lombok.Getter; +import lombok.Setter; +import org.bukkit.entity.ArmorStand; +import org.bukkit.entity.Player; +import org.bukkit.event.Cancellable; +import org.bukkit.event.HandlerList; + +public class ArmorStandRenameEvent extends ArmorStandEvent implements Cancellable { + + @Getter @Setter + private boolean cancelled = false; + @Getter @Setter + protected String name; + + @Getter + protected final Player player; + + public ArmorStandRenameEvent(ArmorStand armorStand, Player player, String name) { + super(armorStand); + this.player = player; + this.name = name; + } + + /* Generated for Bukkit */ + private static final HandlerList handlers = new HandlerList(); + public static HandlerList getHandlerList() { return (handlers); } + @Override public HandlerList getHandlers() { return (handlers); } + +} diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/api/ArmorStandTargetedEvent.java b/src/main/java/io/github/rypofalem/armorstandeditor/api/ArmorStandTargetedEvent.java new file mode 100644 index 00000000..696b7ff9 --- /dev/null +++ b/src/main/java/io/github/rypofalem/armorstandeditor/api/ArmorStandTargetedEvent.java @@ -0,0 +1,45 @@ +/* + * ArmorStandEditor: Bukkit plugin to allow editing armor stand attributes + * Copyright (C) 2016-2023 RypoFalem + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +package io.github.rypofalem.armorstandeditor.api; + +import lombok.Getter; +import lombok.Setter; +import org.bukkit.entity.ArmorStand; +import org.bukkit.entity.Player; +import org.bukkit.event.Cancellable; +import org.bukkit.event.HandlerList; + +public class ArmorStandTargetedEvent extends ArmorStandEvent implements Cancellable { + @Getter @Setter + private boolean cancelled = false; + + @Getter + protected final Player player; + + public ArmorStandTargetedEvent(ArmorStand armorStand, Player player) { + super(armorStand); + this.player = player; + } + + /* Generated for Bukkit */ + private static final HandlerList handlers = new HandlerList(); + public static HandlerList getHandlerList() { return (handlers); } + @Override public HandlerList getHandlers() { return (handlers); } +} \ No newline at end of file diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/api/ItemFrameEvent.java b/src/main/java/io/github/rypofalem/armorstandeditor/api/ItemFrameEvent.java new file mode 100644 index 00000000..ec93be97 --- /dev/null +++ b/src/main/java/io/github/rypofalem/armorstandeditor/api/ItemFrameEvent.java @@ -0,0 +1,35 @@ +/* + * ArmorStandEditor: Bukkit plugin to allow editing armor stand attributes + * Copyright (C) 2016-2023 RypoFalem + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +package io.github.rypofalem.armorstandeditor.api; + +import lombok.Getter; +import org.bukkit.entity.ItemFrame; +import org.bukkit.event.Event; + +public abstract class ItemFrameEvent extends Event{ + + @Getter + protected final ItemFrame itemFrame; + + public ItemFrameEvent(ItemFrame itemFrame) { + this.itemFrame = itemFrame; + } + +} \ No newline at end of file diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/api/ItemFrameGlowEvent.java b/src/main/java/io/github/rypofalem/armorstandeditor/api/ItemFrameGlowEvent.java new file mode 100644 index 00000000..1d0b662e --- /dev/null +++ b/src/main/java/io/github/rypofalem/armorstandeditor/api/ItemFrameGlowEvent.java @@ -0,0 +1,26 @@ +package io.github.rypofalem.armorstandeditor.api; + +import lombok.Getter; +import lombok.Setter; +import org.bukkit.entity.ItemFrame; +import org.bukkit.entity.Player; +import org.bukkit.event.Cancellable; +import org.bukkit.event.HandlerList; + +public class ItemFrameGlowEvent extends ItemFrameEvent implements Cancellable { + @Getter @Setter + private boolean cancelled = false; + + @Getter + protected final Player player; + + public ItemFrameGlowEvent(ItemFrame itemFrame, Player player) { + super(itemFrame); + this.player = player; + } + + /* Generated for Bukkit */ + private static final HandlerList handlers = new HandlerList(); + public static HandlerList getHandlerList() { return (handlers); } + @Override public HandlerList getHandlers() { return (handlers); } +} \ No newline at end of file diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/api/ItemFrameManipulatedEvent.java b/src/main/java/io/github/rypofalem/armorstandeditor/api/ItemFrameManipulatedEvent.java new file mode 100644 index 00000000..6e190c92 --- /dev/null +++ b/src/main/java/io/github/rypofalem/armorstandeditor/api/ItemFrameManipulatedEvent.java @@ -0,0 +1,46 @@ +/* + * ItemFrameEditor: Bukkit plugin to allow editing armor stand attributes + * Copyright (C) 2016-2023 RypoFalem + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ +package io.github.rypofalem.armorstandeditor.api; + +import lombok.Getter; +import lombok.Setter; +import org.bukkit.entity.ItemFrame; +import org.bukkit.entity.Player; +import org.bukkit.event.Cancellable; +import org.bukkit.event.HandlerList; + +public class ItemFrameManipulatedEvent extends ItemFrameEvent implements Cancellable { + + @Getter @Setter + private boolean cancelled = false; + + @Getter + protected final Player player; + + public ItemFrameManipulatedEvent(ItemFrame itemFrame, Player player) { + super(itemFrame); + this.player = player; + } + + /* Generated for Bukkit */ + private static final HandlerList handlers = new HandlerList(); + public static HandlerList getHandlerList() { return (handlers); } + @Override public HandlerList getHandlers() { return (handlers); } +} + diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/api/ItemFrameTargetedEvent.java b/src/main/java/io/github/rypofalem/armorstandeditor/api/ItemFrameTargetedEvent.java new file mode 100644 index 00000000..9b1f8bfe --- /dev/null +++ b/src/main/java/io/github/rypofalem/armorstandeditor/api/ItemFrameTargetedEvent.java @@ -0,0 +1,45 @@ +/* + * ArmorStandEditor: Bukkit plugin to allow editing armor stand attributes + * Copyright (C) 2016-2023 RypoFalem + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +package io.github.rypofalem.armorstandeditor.api; + +import lombok.Getter; +import lombok.Setter; +import org.bukkit.entity.ItemFrame; +import org.bukkit.entity.Player; +import org.bukkit.event.Cancellable; +import org.bukkit.event.HandlerList; + +public class ItemFrameTargetedEvent extends ItemFrameEvent implements Cancellable { + @Getter @Setter + private boolean cancelled = false; + + @Getter + protected final Player player; + + public ItemFrameTargetedEvent(ItemFrame itemFrame, Player player) { + super(itemFrame); + this.player = player; + } + + /* Generated for Bukkit */ + private static final HandlerList handlers = new HandlerList(); + public static HandlerList getHandlerList() { return (handlers); } + @Override public HandlerList getHandlers() { return (handlers); } +} diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/api/PlayerOpenMenuEvent.java b/src/main/java/io/github/rypofalem/armorstandeditor/api/PlayerOpenMenuEvent.java new file mode 100644 index 00000000..865233a2 --- /dev/null +++ b/src/main/java/io/github/rypofalem/armorstandeditor/api/PlayerOpenMenuEvent.java @@ -0,0 +1,44 @@ +/* + * ArmorStandEditor: Bukkit plugin to allow editing armor stand attributes + * Copyright (C) 2016-2023 RypoFalem + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ +package io.github.rypofalem.armorstandeditor.api; + +import lombok.Getter; +import lombok.Setter; +import org.bukkit.entity.Player; +import org.bukkit.event.Cancellable; +import org.bukkit.event.Event; +import org.bukkit.event.HandlerList; + +public class PlayerOpenMenuEvent extends Event implements Cancellable { + @Getter + @Setter + private boolean cancelled = false; + + @Getter + protected final Player player; + + public PlayerOpenMenuEvent(Player player) { + this.player = player; + } + + /* Generated for Bukkit */ + private static final HandlerList handlers = new HandlerList(); + public static HandlerList getHandlerList() { return (handlers); } + @Override public HandlerList getHandlers() { return (handlers); } +} \ No newline at end of file diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/menu/Menu.java b/src/main/java/io/github/rypofalem/armorstandeditor/menu/Menu.java index 3ac66fb4..bd6edf94 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/menu/Menu.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/menu/Menu.java @@ -55,8 +55,7 @@ private void fillInventory() { ItemStack zAxis; ItemStack coarseAdj; ItemStack fineAdj; - ItemStack rotate; - ItemStack place = null; + ItemStack rotate = null; ItemStack headPos; ItemStack rightArmPos; ItemStack bodyPos; @@ -64,22 +63,27 @@ private void fillInventory() { ItemStack reset; ItemStack showArms; ItemStack visibility; - ItemStack size; + ItemStack size = null; ItemStack rightLegPos; - ItemStack equipment = null; ItemStack leftLegPos; - ItemStack disableSlots = null; - ItemStack gravity = null; - ItemStack plate; - ItemStack copy; - ItemStack paste; - ItemStack slot1; - ItemStack slot2; - ItemStack slot3; - ItemStack slot4; + ItemStack plate = null; + ItemStack copy = null; + ItemStack paste = null; + ItemStack slot1 = null; + ItemStack slot2 = null; + ItemStack slot3 = null; + ItemStack slot4 = null; ItemStack help; ItemStack itemFrameVisible; + //Variables that need to be Initialized + ItemStack place = null; + ItemStack equipment = null; + ItemStack disableSlots = null; + ItemStack gravity = null; + ItemStack playerHead = null; + ItemStack toggleVulnerabilty = null; + xAxis = createIcon(new ItemStack(Material.RED_WOOL, 1), "xaxis", "axis x"); @@ -95,11 +99,9 @@ private void fillInventory() { fineAdj = createIcon(new ItemStack(Material.SANDSTONE), "fineadj", "adj fine"); - reset = createIcon(new ItemStack(Material.LEVER), "reset", "mode reset"); - headPos = createIcon(new ItemStack(Material.LEATHER_HELMET), "head", "mode head"); @@ -122,7 +124,7 @@ private void fillInventory() { "showarms", "mode showarms"); //Praise Start - Sikatsu and cowgod, Nicely spotted this being broken - if (pe.getPlayer().hasPermission("asedit.armorstand.invisible") || + if (pe.getPlayer().hasPermission("asedit.togglearmorstandvisibility") || pe.plugin.getArmorStandVisibility()) { visibility = new ItemStack(Material.POTION, 1); PotionMeta potionMeta = (PotionMeta) visibility.getItemMeta(); @@ -135,7 +137,7 @@ private void fillInventory() { visibility = null; } - if (pe.getPlayer().hasPermission("asedit.itemframe.invisible") || + if (pe.getPlayer().hasPermission("asedit.toggleitemframevisibility") || pe.plugin.getItemFrameVisibility()) { itemFrameVisible = new ItemStack(Material.ITEM_FRAME, 1); createIcon(itemFrameVisible, "itemframevisible", "mode itemframe"); @@ -145,59 +147,79 @@ private void fillInventory() { //Praise end - size = createIcon(new ItemStack(Material.PUFFERFISH, 1), - "size", "mode size"); + if (pe.getPlayer().hasPermission("asedit.toggleInvulnerability")) { + toggleVulnerabilty = createIcon(new ItemStack(Material.BEDROCK, 1), + "vulnerability", "mode vulnerability"); + } + if (pe.getPlayer().hasPermission("asedit.togglesize")) { + size = createIcon(new ItemStack(Material.PUFFERFISH, 1), + "size", "mode size"); + } if (pe.getPlayer().hasPermission("asedit.disableslots")) { disableSlots = createIcon(new ItemStack(Material.BARRIER), "disableslots", "mode disableslots"); } - if (pe.getPlayer().hasPermission("asedit.gravity")) { + if (pe.getPlayer().hasPermission("asedit.togglegravity")) { gravity = createIcon(new ItemStack(Material.SAND), "gravity", "mode gravity"); } - plate = createIcon(new ItemStack(Material.STONE_SLAB, 1), - "baseplate", "mode baseplate"); + if (pe.getPlayer().hasPermission("asedit.togglebaseplate")) { + plate = createIcon(new ItemStack(Material.STONE_SLAB, 1), + "baseplate", "mode baseplate"); + } - if (pe.getPlayer().hasPermission("asedit.placement")) { + if (pe.getPlayer().hasPermission("asedit.movement")) { place = createIcon(new ItemStack(Material.MINECART, 1), "placement", "mode placement"); } - rotate = createIcon(new ItemStack(Material.COMPASS, 1), - "rotate", "mode rotate"); + if (pe.getPlayer().hasPermission("asedit.rotation")) { + rotate = createIcon(new ItemStack(Material.COMPASS, 1), + "rotate", "mode rotate"); + } if (pe.getPlayer().hasPermission("asedit.equipment")) { equipment = createIcon(new ItemStack(Material.CHEST, 1), "equipment", "mode equipment"); } - copy = createIcon(new ItemStack(Material.WRITABLE_BOOK), - "copy", "mode copy"); + if (pe.getPlayer().hasPermission("asedit.copy")) { + copy = createIcon(new ItemStack(Material.WRITABLE_BOOK), + "copy", "mode copy"); - paste = createIcon(new ItemStack(Material.ENCHANTED_BOOK), - "paste", "mode paste"); + slot1 = createIcon(new ItemStack(Material.DANDELION), + "copyslot", "slot 1", "1"); - slot1 = createIcon(new ItemStack(Material.DANDELION), - "copyslot", "slot 1", "1"); + slot2 = createIcon(new ItemStack(Material.AZURE_BLUET, 2), + "copyslot", "slot 2", "2"); - slot2 = createIcon(new ItemStack(Material.AZURE_BLUET, 2), - "copyslot", "slot 2", "2"); + slot3 = createIcon(new ItemStack(Material.BLUE_ORCHID, 3), + "copyslot", "slot 3", "3"); - slot3 = createIcon(new ItemStack(Material.BLUE_ORCHID, 3), - "copyslot", "slot 3", "3"); + slot4 = createIcon(new ItemStack(Material.PEONY, 4), + "copyslot", "slot 4", "4"); + } + + if (pe.getPlayer().hasPermission("asedit.paste")){ + paste = createIcon(new ItemStack(Material.ENCHANTED_BOOK), + "paste", "mode paste"); + } - slot4 = createIcon(new ItemStack(Material.PEONY, 4), - "copyslot", "slot 4", "4"); + if(pe.getPlayer().hasPermission("asedit.head") && pe.plugin.getAllowedToRetrievePlayerHead()){ + playerHead = createIcon(new ItemStack(Material.PLAYER_HEAD, 1), + "playerheadmenu", + "playerhead"); + } help = createIcon(new ItemStack(Material.NETHER_STAR), "helpgui", "help"); ItemStack[] items = { xAxis, yAxis, zAxis, null, coarseAdj, fineAdj, null, rotate, place, - null, headPos, null, null, null, null, null, null, null, + null, headPos, playerHead, null, null, null, null, null, null, rightArmPos, bodyPos, leftArmPos, reset, null, null, showArms, visibility, size, - rightLegPos, equipment, leftLegPos, null, null, null, disableSlots, gravity, plate, + rightLegPos, equipment, leftLegPos, null, null, toggleVulnerabilty, disableSlots, gravity, plate, null, copy, paste, null, null, null, null, itemFrameVisible, null, slot1, slot2, slot3, slot4, null, null, null, null, help }; diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/modes/EditMode.java b/src/main/java/io/github/rypofalem/armorstandeditor/modes/EditMode.java index b161d91b..eda5095c 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/modes/EditMode.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/modes/EditMode.java @@ -22,7 +22,8 @@ public enum EditMode { NONE("None"), INVISIBLE("Invisible"), SHOWARMS("ShowArms"), GRAVITY("Gravity"), BASEPLATE("BasePlate"), SIZE("Size"), COPY("Copy"), PASTE("Paste"), HEAD("Head"), BODY("Body"), LEFTARM("LeftArm"), RIGHTARM("RightArm"), LEFTLEG("LeftLeg"), RIGHTLEG("RightLeg"), - PLACEMENT("Placement"), DISABLESLOTS("DisableSlots"), ROTATE("Rotate"), EQUIPMENT("Equipment"), RESET("Reset"), ITEMFRAME("ItemFrame"), ITEMFRAMEGLOW("ItemFrameGlow"); + PLACEMENT("Placement"), DISABLESLOTS("DisableSlots"), ROTATE("Rotate"), EQUIPMENT("Equipment"), RESET("Reset"), ITEMFRAME("ItemFrame"), ITEMFRAMEGLOW("ItemFrameGlow"), + VULNERABILITY("Vulnerability"), PLAYERHEAD("playerheadmenu"); private String name; diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/protections/GriefPreventionProtection.java b/src/main/java/io/github/rypofalem/armorstandeditor/protections/GriefPreventionProtection.java index 06e05c0b..626a0e4e 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/protections/GriefPreventionProtection.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/protections/GriefPreventionProtection.java @@ -28,7 +28,7 @@ import org.bukkit.block.Block; import org.bukkit.entity.Player; -/** @deprecated +/** @Deprecated * Plugin has gone unsupported for a while - Might be cleaned up later. **/ public class GriefPreventionProtection implements Protection { @@ -36,7 +36,7 @@ public class GriefPreventionProtection implements Protection { private boolean gpEnabled; private GriefPrevention griefPrevention = null; - /** @deprecated **/ + /** @Deprecated **/ public GriefPreventionProtection(){ gpEnabled = Bukkit.getPluginManager().isPluginEnabled("GriefPrevention"); @@ -44,7 +44,7 @@ public GriefPreventionProtection(){ griefPrevention = (GriefPrevention) Bukkit.getPluginManager().getPlugin("GriefPrevention"); } - /** @deprecated **/ + /** @Deprecated **/ public boolean checkPermission(Block block, Player player){ if(!gpEnabled) return true; if(player.hasPermission("asedit.ignoreProtection.griefPrevention")) return true; diff --git a/src/main/resources/Residence5.1.1.1.jar b/src/main/resources/Residence5.1.1.3.jar similarity index 63% rename from src/main/resources/Residence5.1.1.1.jar rename to src/main/resources/Residence5.1.1.3.jar index fc31d035b7cd0bb100e58fe9f539a257c90e3fac..60ff464a63e12d881a26e375e25d8d6f49961594 100644 GIT binary patch delta 358437 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

0Lm+W0+deEcJNm0Ew+hr^^Dj?2S&Mh9Y5 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�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 PFj`eHFx>qNEE*U9vfRbv delta 351051 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

  • n`{-!qH%0Mz8Hm`8`W9xCH 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¥$8`49#lh-z&q7;(2$7GhQu?F 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⋙;cZ2dBw0byprENp|4~ z4usEj^k279AA|7ue4lfySgH#ke4zj*?K6|`Cm?(==cz{CNcd6+f09p9PuiZkPeJ(8 zY-4|*v(V1X6fSMUpM~(}SosdxlcwnT0))TFMnmsLcMoLR2G9T;$T6cM{3QrqLCBpE z*^8`|pl>MB5ovuKJA4&{zs#G-pr)*&^co0%h4+jj>u~hi`%~yItk$FwKAC@V6oS9nn5BcO8~S_yN4BEP}_eT`8$N)wMi7l$Uh*=u3tq2&}EAJ3&J1RBw3cg ze;~|G-hvG5v`_vA5y|e_vJoO4h$wc~+(w9aA;QkwfB|h&CZa>cZ?|F@GLZm8z$V8u zV{#O@{ZitNChHQUWvyLowwv7pMeOAxXd-N&W|orfzLyPgx!z?H@qo z7Qq+{EmGq8&^BUge;Y(tqIFo{v+=$G3VIRlhY(>o*1MRv#@`jEqIW@rWnAw(T~RiH zKY<8KzFt&cvYUUd8=39h3lWxry>NnhXJ z9?z0P<>1(-Ao4pWiG65!Guoel$nTw_r{s%7Jzx9*BJ6)InKzZ_<$b;Ykrz3HOm~93 z43R%_QA3cl9m$Nm3XwnYy~IA1?!NIBc^x8u=90#NWxiwNFA(`_eMQTGjJySrzwz0t z$C_SbAszWW4QEM*aB@G{D7=UD8cc5Tc=a zn%sV8Gy>5m-_edD-1&^of#_Vv+`A(=(fJTv;FvT=JSVycqC3=Av{pU36GV4*P}Lx| z6WtY}yG?FDta@}0i0Wta`&JQ1lRp9_m>2sbfLW!ytONW7Q`|grY}6w5gt^x>Y|4qDMPc z-5DK<9s|+1gOsT~`)CV9TZIHkF~=*~2GMpdEt9E!Gh)z-eJALwFPelXvlMlP?qWty zGzEXrPHwj)I~`Ibnt^DSDBNkvlV}#AIlHjUQ#}yv<-*;DTikRUMEjkUOg=guq9+J> z*XfcQ(UTxLz^wx(#=$#zh_1JZ6I?R{(Sn%x&MBnCMu-mEbk=doDG=QxX0Nk>WEh2L zi7SaoXp1|>AbP4;*v@)sP=#pC?z@g7HbZ}O3pa)tQt-kAL{Ar0((U|+qbt+Rvpb__ zLi8iNuT;D|_ zq=O-@fasMjas^L(8KNv@X^{zU$QECL=(R4&>p0_U5M`-L^DKNlb9@7$EO}{%h9xZi z_$EYI0#nQ^=BDFY5WU$&M;(`Z2cql%5G=f4lullg zfG9fvoGajzBj;kEJ0Z$W1B0FMbbEg`(`)(o(Yqnaj{E%c7f#|)0et~oO`O%+4 z^geg1!jOwT0MTCv-Vhkm*N;93(OIhaviin;^^Ik3I^~$Hau0IOg$3ABX4@ z?n;)=AAJ&{PYHfAag${4(-3_|ETmN?(-m*;;alNZi2lJn95dJ(eIBAOxaWUB`0CM@ zAo_A0h6e_suR!!wH?>x1Ao?0a*&$)n!a0Hi(KjIa7dM^G@IdrUh`#0SQlt(?--akV zF;sZ2K=fURzQw%$|0x_Q5)R|1JwJ(2~#eCq~iTS}X9b$gIJ2Pu=7?aO=V*!W(Cq9!AH@uzP z9t%M%%;%5=NZkS1SQKI`J$?Qpthqq3xe#L+>I)kbF;^4aFCOClRX`Gc`8h#kv$&qgr$%?6c&Sht|u!nQDB8ta8v zpO_3A)sf87c8&EzY+Zf5HkOzXI{{)Ra$#blI>kf{K-VP+z|**^U#(s2YY?vA*jZ&p3;1g4js?aB_br$`~(|AXcug*cWFP zCu65VtTGwL!r`$R#Mp~VKI?X7YzxHL8%ug;e@jAKZHt`_G4{MtC>`(VPNsTt1N5E< zqw6COV^1uJPwCOQI}gpr&W0FInzAvb;*FgLv5(c`Ouqj(#8}$YTpQ;K9mXz#7z^x0 z>;hKsFm?&VF0Fr~haX?WE`!*o>iRT~DPo_27>nq|Y@8#g82dcLSUfLkqwO<@*yRxW zQeDHjmMqf?u`3~VRUNI?Aw}$Jh+R`(QJhr7u7wzj-WeQ6M_dHH4r2TPCg*ifLR=5A z8yw?y2#gycc9UalV(**wL+oaVecLg%I+5~Sh_Q&=95;W~k}5xd*e#Q5n}X#wh~4fO zpfepl_CwH0TtVFlvAdjYh^I^*QsM}9K8%dm^R0x@P0 zY4(k;*lQ4b-70FCbFnud#!aAx_q<|nLX4R}0rwTJ*xL|$$0A?YOR;w$_MQzCEc8!^ zy>InvbIu14WA+c!UFVAZ7h*g~s{SU|90}&gR`Y+t5}TvI9F+r`bBQdE9?tRoAJ)DD zu!>@9_{`RuFw|}L(tAmvCrz2#fM^_$tt_s9^^y_=`Xz zObu}lL0pcv1~l4HqkViu*RU`;QlpcA&&`Rg0F5rx;L%ccLSAeEXmqDWk0798{b%%| z29KEvyUC3$|BMuBqy}M*U;P>B)ZnpHrk8)6u=q3jQ-cRpMH(yMt^JJSsllVHTDzs< zVaT9{xSGk!osvDCDOh7LH8O+1#V-ksq0~4@u&~Y-CY`hguo2ykJ-{wm~ccj8mzR7fcqmq%oNqJjyCG2{AiaNT@N58a%qHC1QAVyaU9TNev!jrA`{* z0zZoyJh-aWByk^4T=6;7;4xMf|E=1r{88+9N1TYvqeh`*sP-_>k3 ziN$-w*zf{sTqp>{(}k8;OO1LCa0Nfzh~}8dn4>dHUfhYFvNqf}9(7 z|Dtg%HF#i^8J82#4L4BZ#u#v}X1IwOH@hgzZT#{@qmmj`F*p;n!fn*p;36uw;nj=A z?bP6rRZhcfUn6X$hKRG`W#aqZN{wwo5O|)a4ep}G_83SBy5Jsa@KCEHk?CrJ`>DaB ztu%kBW;{rZ8W+cWf73k_WbA*UhPb&JXU7?_J1>mg)TkA`iuB+~BI99d>=Erx96eKX z`7dfbD%gACcz!;?KQP2{AEU)2qvr^XLQZOa?RPt^F25Jj(0 zFb>Z6g&MyKQEZUygY$noHF)S(q_HwSG=EX!;L%$0fT^d(VVAqTGXCL3;|MiDX!e9m z4-iwLrkv14;&Db(rKT3&MJ%%13{f*FzKetqbF&#WX?zzAV$IDK)NJYUI8NLwoH6cB zFS9i@+lc89^VxK0n$)y}l8s$=WIEIgySl*@aI-Bn+qvaf5;uS6%?{M;=#>-O8)j!} zc5%lsnW>Nl7t)*Es3|UC@Je{Mwwpbv*~?`Jkt5FIxQFn~KGaN!&kkN0Zl+N)J=m^) zLAcqEn*CknBytk2X*Q3e=JCOn<8Nj)PoQQ-a7+y@q%=>Y=HOu8{%wcm5NZx}^`6KH zUf5&~qvpxMmK%TE`D2ct=ExxIiP!L$qp6wYauqKSyh_9zOU-dE&$yWlF2yiUq2`3R z1_Bo!m^swU6;q4IbR)OSNz~--ul8Pg;vp)pfqZIC4vw%vxSctbn$uhv<|P{41T|++ zb7rtqqYixYbZX8D5;9?^v#B}96%UaeZ?v0psW~sMdYpd|ZWd8RHq*58}^_qzMeFf||>M95RjBUZVpnw1S!| zgZ;Y&d=5IBnyZ7Oo;Hpt6(53gsktUDdpvhiLawh~*HiN*Au0_@`0Di*YE}wN#>$M!o56gcJpWc|3a?u5+7$AM17tHMb_#bmuLznwobBY)pR{gTm>Cm6>-_^B&QlpBzB`ebl^P zAU~EHwARcW)a33pJ$8kuxs#f^1fktuikQSNwKJpC+%0sU_X`s4mXTRU&4&dE<9}Pi ze1w|+a;xM`$__X#%)Qin%pH!%;Y$+p32HtWtl%$7%%`ZiU$9v)$6J<|&rtK(_=@hr z#C(6AnlA{Xx;e3>iTM&WMSNO9UTkqt|}q?qqh^8=v^8!6x|Q_PR3`LW9ayi`04pHlO)APn(q67vgce(4fh zWQ$da`874aaY>qo|M$I*=6BTm-bXZM@O6JEZ|X;C{^U0`#rHUvKU4FUV2v2R|3*z7 zpQZ_qD@*#5nmiLTm12_#*!|HID>ye26SUEgp2%%*}BjvJ`5m!5Th9 zmQF1mUZ(jMKU&Gu;&EinMAGar;s-sf=G1BtOdluqSgcmm;vr+L-1MNlSq8PtU?qQd z%gVB;)|NY?tuVE?gRXVnh^YMWXtRWl)Rz*_wa*S=l3U*z{x#rWSX!(S+z=Ybdo&if@g_wX&>} zsl~l)hM&dR-_IXOtx@s4O%oSRTUpc^BM{9kOjlg2an#~2Hk~JPon=j+R<>W%S6Egq zwYUeZWh~j#R@SN1$_rF+Rh2cFT2s6s2KAIRjat*aaWtZ&teMn0%?C?pC~JQfwYWpg z$`cx+fqJs$P^-Z2E?}rw^Qgt0X>EcTF&fRM)&jwzSq-lRwTh{Arr&R4dpcGLwZ!!c z4NLffSVpZSjkn@Xh*mkZmU^7UFGggE%c!;7BWT<`iq=YMt@6jz;2uS5HMO{3%}mJl z0a`=xt@l%E~nNN9)~B;@G5GF zvy4Gw(z=#f*ZI)IYkcblYTfAL%~ki-P1L&C9sc;-F(@7hi*&1!s?CIgx|LeDxzwAK zHG(;N8(jKrZKT%iF2F*4jmTvyRF<`gTAPIiL_Nxv&wOvp+Cr_ZVjzELZ+fc=tD0Kk z(sZ7hCj{JOHH#aF*1Obt&+Auk$NSXchDsZoikA|qTQ9+-30M+P-~2f zIeYCM)b1I~@hwTaH?{k?umy5FVYE}JohHx}pX~{x-Issb{elG&XB2w?wRz-vq_F~i zKLe@FL)Y6iUdr!o5VcPf%0ZNi>nfAlJZ9ZW%=EiCiP}75-Dz0D?_xLrOF*>0wMPgQ z;Fj^4A4ToaLIMIAe$!*9JyuA7Sn=EAsV(BvS%Swt+0@PvT*cS_9`{V7_9Q`{iBqy? z2Y%AS&ZBm|P@gP+$4i|;?WqDrmKxI<_H=5`h!xMD$bAI%Y1BSl^vY5_yUsp?+Oq}E zvgA0M&n}=gk4@J(Cky^6q;`?u#z|SDCbL86-VZF=3#ctlG{)WGWS>dxMS@%nf1bl$ zOzl!J=t($_kBbF`+e@f@mf-D46La}(O!iW0SGa{IayRFH#Qc12hS|%hy+TN&@CCV% z8}=${pY7HV>E2F&eGaw7<>zirT*QZc9<|R8w&w;s*cVd!B7t*}?!|rB7gPI^U~_Sy zANHlxzAOlaAN^rpLG3GDoQWJB0AgQF?Q4P+{1_1XI%;1p_}k4%+_bQ7r1pB3LJ58` z`(|q25*(I)tElZNYTp`{?(*{nYHtjJ5fhL*sJ%(BjmQZ^h1hpedy7kOo)-)ZvA0pX zI@pyP8)9##_T55KCe82+KKov3-zR!$aHWv_0JV3Bsnxyk)UKiSP5~`TnGp-&2& z)Gh1EaV@p$1Q;v@Cuebf&fY`qM}+Kf!4_d-_M_B)-Ydu+zw>23PVFbeP#f-b+54z1 z?z(Jrcgud7+Rrqo>l!llbJTu5*rU(4FH-xZ0DvN3&VGg3uew9$J6V3joBcYq#m!Mi z+2gX`r1o2Zp8SwE`yFb(D_Ap5$Nihy?+45KxxE#OQjbC3RZ4 zTn=EQ$|e|+h<}%cDhqXcz$AeQz!EMFQ*rE#Bbg41GX$Bg*vH1T>K-qEIFNj zI(>z_PKj-DIsK_KK=e8VXT?$DS>%B0;BtvWk2!;>!(BeDy{w=hIYX(#{XWT)nJV^{9nQ(r;Xa?{JUOr+aYj;ydwaCW>~aF$ zLl$*}n?-OdDm>SVhaLJnOs!O5i#_x8w>`GpP6snp361#{zm z&B~cf9q!{%J%hxVMjh_lX*GEwyO(a_nAuZuN6!$d!I?=NamOYLwPsfhG&oG=%%aX2 zV!$|EiOpbf{irjCI^4mdb3G&gn@1h)+X*q&alKv6eCjN4n-Gbpg8A(dPBC?V&UAAo zB2C%NJ!0pVra>ToBHGIJG$3kY*6sl#KWOzdtn5`ohL%zWvbX;b8e>& zkBka2t>FG7owJ!bJQOM^X!bZ;sUw1*;w)_EF6!_gsJ7GC7B$~2cDXlyuIGEG!^5Fk zvC{wvKjG%wPaPf=)!fx=zOCRqNF5Oz<>t5snzM^KJUEJa`=YKD>+GfukB({`%81y)W9I|veCW|~lIL^uK=_zCp9BdI7xwOaMjal#q|mg*^D}jSesR$ppXp=gH|lVo zkkhb)kEcJW!#zW$DAV8;V&@Qb>RkqkD-Z|E-_+sWq7FwZ7Yaj#bu&u{{lU5G>RPbe(8e{HE~H;Oa`l z-2{G*1yK(g=I*O@O~BHdhWiL<&B~e-oLIuCG|c^2MqG|RuY~*3a6h4=v)Epw>vaeZ zpyA_$)VcShga^{_2}0~yiodxZ9z??@3XQ|VMf{C~a3&3Z4-s>M$l%WT@JTd0EKuCv z4+{^c;SoX$1TwrGvG6Dw9vxTB-4hFsq2aMY1&EB;u2^_H4WA;IJT5D?FBZu02I+(gXn1Y_uK2y3a3KvB31W*}vAYvqK*QoEWu}dvJSyG- z3!h2Di$q6p;XdKTG+Zi>E7BYIsl!WX_$##-?>01lG5*@&@P#ydkq{!0<$DFf7t^r# zbw4l1UFL@`rD5UYnwB@7JE*;D*TPrO@Rgzp=1dlsGxLnAX;^r<#BX^8sB;|+b1zr2 zmm?(RMjBoptPm5Kn`xMPw%Wwy_%c&P!?(s)^n_*u4RaS)OD`uNHFwZ3cXHVYc>%Gx zlZLl{1OavBW*ZH2FIU)2Zd7o#)9~Fvm=h%DUK-}kFVo9T6rBfXn0vq?jTP`^r-p{P zSFE*LDjtT1XgC^#Awf!NX;`?)ylhuY_Rz4nVtr=At60O2(lGayHJdpxXXN-SFT6hd zI1O`WneC-F*y{=JqhancbKD}6#*a<>g^BQg(=_~y+cz&0m-!qGbH7={&1}@v55Gvm zF9n+jo&pHJLc`pb)|O}T(=ZJVo&X8IPN64sPlny$12kz!_)P)>diOakdtTY%eshZ! zEiWtWH+R{hMa32U%8Qm37Z#PyE9y6|thAz_xU{HzX}>Wg1q+rANy6H1)9^d62d9^R zg2Khcr7Yz=8vZv+(F#iEEi5Z%NgvSghb*aiL22>gf|5nWB_+kB3s}y_H2ew6(M8Tu zmi8G9e=eFVU0z(mQof|&uUJYlPnla@RIrF8e?!CHvSej$K`Br8o`!$mUC%8lKxkRg zPgHpl_OQ2~Y4{gWy1ZxwOZbh3e-{aV%gTA#KWX?cQGHoOg{XdrhU^zA{}U?BOh2{8K+UCGmUg%3C#-23l@}>E+{W9n$Oa^ z(MWeuwS3jGB`l>Ujr3wEa?t`t!$=<*N#PI|m8_~LFJMV&G?LEYL&jNHP|9KMMVn$nl)8^9xE!3JVs07cAh(C(uX+OK!!Ii%XZ3msJ$at0?9qiJV9ygEoXkf#zod-OJTihtMsoVFgrf2#WgN88G?FFy z!_>t7#?r_*PQ3YulG4JGRjdn^aSDx0;EgXR7mer8NG?aj!s0>{8J0AEiAGN4*jrdu zTEt0_Pa~5#1Uv;9VlGRaN+Z+wpca-@AP|BiGiYQc$5`>aqWNXzi&@&~G&0LeTU=Da z!Jkbdb9leS3rdSCIBauiWFBv?q+of0H~1nNna_bKDJodHkfki7kzzMxx!|HjG*ZG5 zxwvdD5~{GgjMKc7M#?yUcVIGhvDiyLi$==5;xVy~RM5yW-hEICR?x^wo>&?XowI3V zHAhEju;{rovWDZlw5)JhdBNP`lHv-Ez4K}00*>?2GBMDLXk;x1tPBTGj+$!8at_!f zG_sDju!Qkn+2W;33RZB6Tt*|8b7Umx14UJsOx!rB}dK$Tb zk78+H6zgf^CXUCY3(Evc-9jUk98gT*^=_q++xS421_!#4Ms63am6omWn0XV8Y!*c^ z5haQ%!N?XG*~$Trv3E6%+{Kw;>9V z-3->yG9Pn~(8#|yX+*9|0TS6up%+d)q4Oe-KH}?#UJjN(h*me6f%pHZS zpO1=VNJ}m9YAZ-jMm~9$MqZSjYNA|U z`Z}m2IF?;7!i3vR*i;91>VTtp5QizlcKn;i39uFiUW`Oqj9+Dl$|Z=9a>z)khY@fw zWWyzhs&z0IF2xd;!E(49E`TfGO8nnuxC&vo5*~+ZU_V?3pTPBSHz$P5Pzm?Iy__(A zpK_8CEN{boa6gjg0ZcVPIs&(Vq65((AGvBNVDAKWK)Op56Cq zn9V`Vrg@mnW|&QFfY~%3v%BELI(QIU-UXTbC5Flj9|B z7zMY≻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

    ~YGCN}b`$uN~`>~U{4<~g$PU-=i)DB4FEsjZ* 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 diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml index d952ae7f..f29ebd24 100644 --- a/src/main/resources/config.yml +++ b/src/main/resources/config.yml @@ -3,7 +3,7 @@ #-----------------------------# #DO NOT CHANGE THIS - CHANGES AUTOMATICALLY PER UPDATE -version: "1.19.4-42.1" +version: "1.20.1-43" #----------- LANGUAGE #Name of the language file you wish to use @@ -24,7 +24,8 @@ opUpdateNotification: false #----------- TOOL SETTINGS -#Name of the edit tool's item Material. You can find a full list at https://hub.spigotmc.org/javadocs/bukkit/org/bukkit/Material.html +#Name of the edit tool's item Material. +#You can find a full list at https://hub.spigotmc.org/javadocs/bukkit/org/bukkit/Material.html tool: FLINT #(Optional) data that the plugin looks for to identify the edit tool, such as the damage value of a sword or the pattern of sandstone. @@ -37,17 +38,18 @@ requireToolName: false toolName: Example Name here #(Optional) The first "Lore" entry that the plugin looks for to identify the edit tool. - Now has MultiLine Support +#NOTE: If you wish to make use of single line tool lore, please remove the 2nd item in the list and replace the first +# text with what you want your ToolLore to be requireToolLore: false toolLore: - - "TIME TO GET REALLY" - - "REALLY DANGEROUS!" + - "TIME TO GET REALLY" #Replace if you want SingleLine ToolLore + - "REALLY DANGEROUS!" #Remove if you don't want MultiLine ToolLore #(Optional) Allow the use of CustomModelData - NOTE: This looks at the editTool set by Config #and at the Int set here to know what to set. #Also please if you are using this, ensure that you also give people the ability asedit.give in -#order to allow them to change their edit -#tool for the right Custom Model Data +#order to allow them to change their edit tool for the right Custom Model Data allowCustomModelData: false customModelDataInt: 0 @@ -60,12 +62,11 @@ coarse: 12 fine: 120 #Allow the option to toggle invisibility for ItemFrames and ArmorStand -#YOu can either use this or the below permissions to allow visibility changes -#asedit.armorstand.invisible -armorStandVisibility: true -#asedit.itemframe.invisible -invisibleItemFrames: true - +#You can either use this or the below permissions to allow visibility changes +#asedit.togglearmorstandvisibility +armorStandVisibility: false +#asedit.toggleitemframevisibility +invisibleItemFrames: false #------ GUI Options @@ -80,3 +81,11 @@ sendMessagesToActionBar: true #(Optional) Glowing Item Frames Support for Item Frames in 1.17 - WILL NOT WORK IN 1.16 OR LOWER AND 1.17.1 OR HIGHER #If true, players can make itemFrames glow by right-clicking with a Glow Ink Sac glowingItemFrame: true + +#(Optional) Allow Players to get Player Heads from a Command. NOTE: If this is False, this will not work. +#You will also need asedit.head to be set TRUE as well in your Permissions Manager / File +allowedToRetrievePlayerHead: false + +#Each time the command is used, the admins will be notified that this has been ran but only +#if this setting is made true +adminOnlyNotifications: false diff --git a/src/main/resources/lang/de_DE.yml b/src/main/resources/lang/de_DE.yml index 314d96f6..d8a0f5ab 100644 --- a/src/main/resources/lang/de_DE.yml +++ b/src/main/resources/lang/de_DE.yml @@ -23,6 +23,7 @@ setmode: invisible: Sichtbarkeit umschalten size: Größe umschalten disableslots: Deaktivierte Slots umschalten + vulnerability: Toggle Vulnerability gravity: Erdanziehungskraft umschalten baseplate: Bodenplatte umschalten placement: Platzierung @@ -45,6 +46,10 @@ setgravity: msg: Erdanziehungskraft . true: an false: aus +toggleinvulnerability: + msg: ArmorStand vulnerability state has been toggled to . + true: invulnerable + false: vulnerable nomode: msg: Klicke mit dem Bearbeitungswerkzeug weg vom Rüstungsständer um den Bearbeitungsmodus auszuwählen! nomodeif: @@ -65,6 +70,12 @@ doubletarget: msg: Bitte schaue entweder auf einen Rüstungsständer oder einem ItemFrame, nicht beides! nodoubletarget: msg: Please look at an ArmorStand or an ItemFrame before switching hands! +playerhead: + msg: Player Head retrieved. +noplayerhead: + msg: Please turn on the ability to retrieve player heads in the config file. +playerheaderror: + msg: Unable to Retrieve Player Head. help: msg: "1. Halte das Bearbeitungswerkzeug() in deiner Haupthand. @@ -177,6 +188,10 @@ disableslots: msg: Deaktiviere Slots description: msg: Aktiviere und Deaktiviere die Ausrüstungssperre +vulnerability: + msg: Toggle Vulnerability + description: + msg: Toggles an item's vulnerability state gravity: msg: Erdanziehungskraft description: diff --git a/src/main/resources/lang/en_US.yml b/src/main/resources/lang/en_US.yml index 6a4f5641..58f69c87 100644 --- a/src/main/resources/lang/en_US.yml +++ b/src/main/resources/lang/en_US.yml @@ -25,6 +25,7 @@ setmode: invisible: Toggle Visibility size: Toggle Size disableslots: Toggle Disable Slots + vulnerability: Toggle Vulnerability gravity: Toggle Gravity baseplate: Toggle BasePlate placement: Placement @@ -33,6 +34,7 @@ setmode: paste: Paste reset: Reset Pose itemframe: Toggle Itemframe Visibility + playerhead: Get a Players Head setaxis: msg: Setting axis to . x: X @@ -58,6 +60,10 @@ pasted: msg: ArmorStand state pasted from slot . disabledslots: msg: Toggled Equipment locks +toggleinvulnerability: + msg: ArmorStand vulnerability state has been toggled to . + true: invulnerable + false: vulnerable target: msg: ArmorStand target locked. notarget: @@ -74,6 +80,14 @@ nodoubletarget: msg: Please look at an ArmorStand or an ItemFrame before switching hands! reloaded: msg: Configuration File has been reloaded. +playerhead: + msg: Player Head retrieved. +noplayerhead: + msg: Please turn on the ability to retrieve player heads in the config file and/or check your permissions to confirm that you have asedit.head set to true. +playerheaderror: + msg: Unable to Retrieve Player Head. +playerheadhelp: + msg: "Please use /ase playerhead to get a players head. Ex of the command - /ase playerhead Wolfieheart_" help: msg: "1. Hold the editing tool() in your main hand @@ -113,7 +127,9 @@ nomodecom: noreloadcom: msg: You don't have permission to use the reload command! nogive: - msg: You do not have permission to use the give command. + msg: "You either do not have the permission to use the give command or do not allow it in Config.yml" +noconsolecom: + msg: Sorry but this command only works from in-game and not from Console! #menutitle mainmenutitle: @@ -186,6 +202,10 @@ disableslots: msg: Disable Slots description: msg: Enable and disable equipment lock +vulnerability: + msg: Toggle Vulnerability + description: + msg: Toggles an ArmorStand's vulnerability state gravity: msg: Gravity description: @@ -226,6 +246,10 @@ itemframevisible: msg: Itemframe Visibility description: msg: Toggles an itemframes visibility +playerheadmenu: + msg: Player Head + description: + msg: Please use /ase playerhead #icons (equipment menu) disabled: diff --git a/src/main/resources/lang/es_ES.yml b/src/main/resources/lang/es_ES.yml index 662fcaf7..6f4fc51c 100644 --- a/src/main/resources/lang/es_ES.yml +++ b/src/main/resources/lang/es_ES.yml @@ -20,6 +20,7 @@ setmode: invisible: Alternar visibilidad size: Alternar tamaño disableslots: Alternar la deshabilitacion de slots + vulnerability: Toggle Vulnerability gravity: Alternar gravedad baseplate: Toggle BasePlate placement: Colocacion @@ -58,10 +59,20 @@ notarget: itemframe: ItemFrame frametarget: msg: Itemframe target locked +toggleinvulnerability: + msg: ArmorStand vulnerability state has been toggled to . + true: invulnerable + false: vulnerable doubletarget: msg: Please look at either an ArmorStand or an ItemFrame, not both! nodoubletarget: msg: Please look at an ArmorStand or an ItemFrame before switching hands! +playerhead: + msg: Player Head retrieved. +noplayerhead: + msg: Please turn on the ability to retrieve player heads in the config file. +playerheaderror: + msg: Unable to Retrieve Player Head. help: msg: "1. Manten la herramienta de edición () en tu mano principal. @@ -210,6 +221,10 @@ helpgui: msg: ayuda description: msg: haz click aqui para obtener ayuda +vulnerability: + msg: Toggle Vulnerability + description: + msg: Toggles an item's vulnerability state #icons (equipment menu) disabled: diff --git a/src/main/resources/lang/fr_FR.yml b/src/main/resources/lang/fr_FR.yml index 72b41423..72907c83 100644 --- a/src/main/resources/lang/fr_FR.yml +++ b/src/main/resources/lang/fr_FR.yml @@ -23,6 +23,7 @@ setmode: invisible: Modifier la visibilité size: Modifier la taille disableslots: Activation ou désactivation des slots + vulnerability: Toggle Vulnerability gravity: Modifier la gravité baseplate: Affichage ou retrait de la plaque de base placement: Position @@ -62,6 +63,10 @@ notarget: itemframe: Itemframe frametarget: msg: Itemframe sélectionné. +toggleinvulnerability: + msg: ArmorStand vulnerability state has been toggled to . + true: invulnerable + false: vulnerable doubletarget: msg: Regardez un armor stand ou un item frame, pas les deux! nodoubletarget: @@ -90,6 +95,10 @@ helpdiscord: msg: "ou rejoignez notre Discord: https://discord.gg/3BbJKWpTCj" give: msg: CustomModelData donné au joueur. +playerhead: + msg: Player Head retrieved. +playerheaderror: + msg: Unable to Retrieve Player Head. #warn cantedit: @@ -106,7 +115,8 @@ nomodecom: msg: Vous devez préciser un mode ! nogive: msg: Vous n'avez pas le droit d'utiliser cette commande! - +noplayerhead: + msg: Please turn on the ability to retrieve player heads in the config file. #menutitle mainmenutitle: @@ -179,6 +189,10 @@ disableslots: msg: Désactive les slots description: msg: Verrouille ou déverrouille les emplacements de l'inventaire +vulnerability: + msg: Toggle Vulnerability + description: + msg: Toggles an item's vulnerability state gravity: msg: Gravité description: diff --git a/src/main/resources/lang/ja_JP.yml b/src/main/resources/lang/ja_JP.yml index 44e49e5c..c0fb5a1d 100644 --- a/src/main/resources/lang/ja_JP.yml +++ b/src/main/resources/lang/ja_JP.yml @@ -23,6 +23,7 @@ setmode: invisible: 透明化切り替え size: サイズ切り替え disableslots: 装備スロット無効化の切り替え + vulnerability: Toggle Vulnerability gravity: 自由落下の切り替え baseplate: 土台表示の切り替え placement: 本体の配置 @@ -61,10 +62,20 @@ notarget: itemframe: ItemFrame frametarget: msg: Itemframe target locked +toggleinvulnerability: + msg: ArmorStand vulnerability state has been toggled to . + true: invulnerable + false: vulnerable doubletarget: msg: Please look at either an ArmorStand or an ItemFrame, not both! nodoubletarget: msg: Please look at an ArmorStand or an ItemFrame before switching hands! +playerhead: + msg: Player Head retrieved. +noplayerhead: + msg: Please turn on the ability to retrieve player heads in the config file. +playerheaderror: + msg: Unable to Retrieve Player Head. help: msg: "1. 編集ツール()を手に持ちます。 @@ -212,6 +223,10 @@ helpgui: msg: ヘルプ description: msg: ここをクリックするとヘルプが確認できます! +vulnerability: + msg: Toggle Vulnerability + description: + msg: Toggles an item's vulnerability state #icons (equipment menu) disabled: diff --git a/src/main/resources/lang/nl_NL.yml b/src/main/resources/lang/nl_NL.yml index c8a4cc81..ec601cd4 100644 --- a/src/main/resources/lang/nl_NL.yml +++ b/src/main/resources/lang/nl_NL.yml @@ -23,6 +23,7 @@ setmode: invisible: Toggle Zichtbaarheid size: Toggle Grootte disableslots: Toggle Slots Uitschakelen + vulnerability: Toggle Kwetsbaarheid. gravity: Toggle Zwaartekracht baseplate: Toggle Bodemplaat placement: Plaatsing @@ -59,6 +60,10 @@ notarget: itemframe: ItemFrame frametarget: msg: Itemframe target locked +toggleinvulnerability: + msg: ArmorStand vulnerability state gezet op . + true: onkwetsbaar + false: kwetsbaar doubletarget: msg: Kijk aub naar een ArmorStand of een ItemFrame, niet allebei! nodoubletarget: @@ -89,7 +94,10 @@ helpurl: msg: "Meer info: https://github.com/RypoFalem/ArmorStandEditor/wiki" helpdiscord: msg: "or kom naar onze Discord: https://discord.gg/3BbJKWpTCj" - +playerhead: + msg: Player Head opgehaald. +playerheaderror: + msg: Probleem om Player Head af te halen. #warn cantedit: msg: Sorry, je kunt hier geen armorstands aanpassen! @@ -105,6 +113,8 @@ nomodecom: msg: Je moet een modus opgeven! nogive: msg: Sorry, je hebt geen tostemming om dit command te gebruiken! +noplayerhead: + msg: Schakel de mogelijkheid in om een player head op te halen in het configuratiebestand. #menutitle mainmenutitle: @@ -209,7 +219,10 @@ copyslot: msg: Kopieer Slot description: msg: Selecteer een slot om instellingen op te slaan - +vulnerability: + msg: Kwetsbaarheid + description: + msg: In en uit schakelen van Kwetsbaarheid. #icons (equipment menu) disabled: msg: Uitgeschakeld diff --git a/src/main/resources/lang/pl_PL.yml b/src/main/resources/lang/pl_PL.yml index 2707dcab..bf1ad66f 100644 --- a/src/main/resources/lang/pl_PL.yml +++ b/src/main/resources/lang/pl_PL.yml @@ -22,6 +22,7 @@ setmode: invisible: Zmień widoczność size: Zmień rozmiar disableslots: Zmień zablokowane sloty + vulnerability: Toggle vulnerability gravity: Zmień grawitację baseplate: Zmień podstawę placement: Położenie @@ -60,12 +61,22 @@ notarget: itemframe: ItemFrame frametarget: msg: Itemframe target locked +toggleinvulnerability: + msg: ArmorStand vulnerability state has been toggled to . + true: invulnerable + false: vulnerable doubletarget: msg: Please look at either an ArmorStand or an ItemFrame, not both! give: msg: Player given Item with CustomModelData nodoubletarget: msg: Please look at an ArmorStand or an ItemFrame before switching hands! +playerhead: + msg: Player Head retrieved. +noplayerhead: + msg: Please turn on the ability to retrieve player heads in the config file. +playerheaderror: + msg: Unable to Retrieve Player Head. #warn cantedit: msg: Nie możesz tego zrobić @@ -153,6 +164,10 @@ disableslots: msg: Wyłącz sloty description: msg: Włącza lub wyłącza możliwość ingeręcji w sloty +vulnerability: + msg: Toggle Vulnerability + description: + msg: Toggles an item's vulnerability state gravity: msg: Grawitacja description: diff --git a/src/main/resources/lang/pt_BR.yml b/src/main/resources/lang/pt_BR.yml index 941e67ef..1309bcc4 100644 --- a/src/main/resources/lang/pt_BR.yml +++ b/src/main/resources/lang/pt_BR.yml @@ -20,6 +20,7 @@ setmode: invisible: Toggle Visibility size: Alterar tamanho disableslots: Alternar Desativar Slots + vulnerability: Toggle Vulnerability gravity: Toggle Gravity baseplate: Alternar a placa da base placement: Placement @@ -61,6 +62,10 @@ notarget: itemframe: ItemFrame frametarget: msg: Itemframe target locked +toggleinvulnerability: + msg: ArmorStand vulnerability state has been toggled to . + true: invulnerable + false: vulnerable give: msg: Player given Item with CustomModelData doubletarget: @@ -108,7 +113,12 @@ noreloadcom: msg: You don't have permission to use the reload command! nogive: msg: You do not have permission to use the give command. - +playerhead: + msg: Player Head retrieved. +noplayerhead: + msg: Please turn on the ability to retrieve player heads in the config file. +playerheaderror: + msg: Unable to Retrieve Player Head. #menutitle mainmenutitle: msg: Editor do suporte de armaduras @@ -220,6 +230,10 @@ itemframevisible: msg: Itemframe Visibility description: msg: Toggles an itemframes visibility +vulnerability: + msg: Toggle Vulnerability + description: + msg: Toggles an item's vulnerability state #icons (equipment menu) disabled: diff --git a/src/main/resources/lang/ro_RO.yml b/src/main/resources/lang/ro_RO.yml index 2ea5b6de..b68570c7 100644 --- a/src/main/resources/lang/ro_RO.yml +++ b/src/main/resources/lang/ro_RO.yml @@ -21,6 +21,7 @@ setmode: invisible: Schimba Vizibilitatea size: Schimba Marimea disableslots: Schimba Sloturile Dezactivate + vulnerability: Toggle Vulnerability gravity: Schimba Gravitatia baseplate: Schimba BasePlate-ul placement: Plaseaza @@ -57,10 +58,18 @@ notarget: msg: target unlocked. armorstand: ArmorStand itemframe: ItemFrame +toggleinvulnerability: + msg: ArmorStand vulnerability state has been toggled to . + true: invulnerable + false: vulnerable give: msg: Player given Item with CustomModelData nodoubletarget: msg: Please look at an ArmorStand or an ItemFrame before switching hands! +playerhead: + msg: Player Head retrieved. +noplayerhead: + msg: Please turn on the ability to retrieve player heads in the config file. #warn cantedit: @@ -77,6 +86,8 @@ nomodecom: msg: Trebuie sa specifici un mod! nogive: msg: You have no permission to use the give command! +playerheaderror: + msg: Unable to Retrieve Player Head. #menutitle mainmenutitle: @@ -182,6 +193,10 @@ reset: msg: Reseteaza Pozitia description: msg: Reseteaza pozitia partilor de corp la normal +vulnerability: + msg: Toggle Vulnerability + description: + msg: Toggles an item's vulnerability state #icons (equipment) disabled: diff --git a/src/main/resources/lang/ru_RU.yml b/src/main/resources/lang/ru_RU.yml index 3913aaae..b312c070 100644 --- a/src/main/resources/lang/ru_RU.yml +++ b/src/main/resources/lang/ru_RU.yml @@ -20,6 +20,7 @@ setmode: invisible: переключения видимости size: переключения размера disableslots: переключения блокировки снаряжения + vulnerability: Toggle Vulnerability gravity: переключения гравитации baseplate: переключения плиты placement: изменения расположения @@ -57,6 +58,10 @@ target: msg: Цель стойки заблокирована notarget: msg: Цель стойки разблокирована +toggleinvulnerability: + msg: ArmorStand vulnerability state has been toggled to . + true: invulnerable + false: vulnerable frametarget: msg: Цель рамки заблокирована doubletarget: @@ -106,6 +111,12 @@ noreloadcom: msg: У вас нет прав, чтобы использовать эту команду nogive: msg: You have no permission to use the give command! +playerhead: + msg: Player Head retrieved. +noplayerhead: + msg: Please turn on the ability to retrieve player heads in the config file. +playerheaderror: + msg: Unable to Retrieve Player Head. #menutitle mainmenutitle: @@ -218,6 +229,11 @@ itemframevisible: msg: Видимость рамки description: msg: Включить или выключить видимость рамки +vulnerability: + msg: Toggle Vulnerability + description: + msg: Toggles an item's vulnerability state + #icons (equipment menu) disabled: msg: Выключен diff --git a/src/main/resources/lang/test_NA.yml b/src/main/resources/lang/test_NA.yml index 7de2930b..2cb377b0 100644 --- a/src/main/resources/lang/test_NA.yml +++ b/src/main/resources/lang/test_NA.yml @@ -71,6 +71,10 @@ notarget: msg: target unlocked. armorstand: ArmorStand itemframe: ItemFrame +toggleinvulnerability: + msg: ArmorStand vulnerability state has been toggled to . + true: invulnerable + false: vulnerable #menutitle mainmenutitle: diff --git a/src/main/resources/lang/uk_UA.yml b/src/main/resources/lang/uk_UA.yml index 40411d60..090abcb9 100644 --- a/src/main/resources/lang/uk_UA.yml +++ b/src/main/resources/lang/uk_UA.yml @@ -19,6 +19,7 @@ setmode: invisible: Перемкнути видимість size: Перемкнути розмір disableslots: Перемкнути вимкнені слоти + vulnerability: Toggle Vulnerability gravity: Перемкнути гравітацію baseplate: Перемкнути плиту placement: Розташування @@ -41,6 +42,10 @@ setgravity: msg: Гравітація . true: увімкнена false: вимкнена +toggleinvulnerability: + msg: ArmorStand vulnerability state has been toggled to . + true: invulnerable + false: vulnerable nomode: msg: Натисни інструментом редагування поза стендом щоб обрати режим! nomodeif: @@ -59,7 +64,13 @@ give: msg: Player given Item with CustomModelData nodoubletarget: msg: Please look at an ArmorStand or an ItemFrame before switching hands! - +playerhead: + msg: Player Head retrieved. +noplayerhead: + msg: Please turn on the ability to retrieve player heads in the config file. +playerheaderror: + msg: Unable to Retrieve Player Head. + #warn cantedit: msg: Ти не можеш змінювати стенди тут! @@ -175,6 +186,10 @@ copyslot: msg: Копіюєм в слот description: msg: Оберіть слот щоб зберегти налаштування +vulnerability: + msg: Toggle Vulnerability + description: + msg: Toggles an item's vulnerability state #icons (equipment) disabled: diff --git a/src/main/resources/lang/zh_CN.yml b/src/main/resources/lang/zh_CN.yml index b3af7992..4fed569b 100644 --- a/src/main/resources/lang/zh_CN.yml +++ b/src/main/resources/lang/zh_CN.yml @@ -23,6 +23,7 @@ setmode: invisible: 显隐切换 size: 大小切换 disableslots: 物品栏切换 + vulnerability: Toggle Vulnerability. gravity: 重力切换 baseplate: 底座切换 placement: 位置 @@ -67,6 +68,10 @@ reloaded: msg: 配置文件已重新加载。 nodoubletarget: msg: Please look at an ArmorStand or an ItemFrame before switching hands! +toggleinvulnerability: + msg: ArmorStand vulnerability state has been toggled to . + true: invulnerable + false: vulnerable help: msg: "1. 手持编辑工具() @@ -91,6 +96,12 @@ helpdiscord: msg: "或加入我们的讨论区: https://discord.gg/3BbJKWpTCj" give: msg: Player given Item with CustomModelData +playerhead: + msg: Player Head retrieved. +noplayerhead: + msg: Please turn on the ability to retrieve player heads in the config file. +playerheaderror: + msg: Unable to Retrieve Player Head. #警告 cantedit: diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index 8d65571f..0ba60538 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -1,11 +1,11 @@ name: ArmorStandEditor main: io.github.rypofalem.armorstandeditor.ArmorStandEditorPlugin -version: 1.19.4-42.1 +version: 1.20.1-43 api-version: "1.13" folia-supported: true website: https://www.spigotmc.org/resources/94503/ author: Wolfstorm -authors: [Wolfstorm, Kugge, Marfjeh, miknes123, rypofalem, sekwah41, Sikatsu1997, Cool_boy, sumdream, Amaury Carrade, nicuch, kotarobo, prettydude, Jumpy91, Niasio, Patbox, Puremin0rez, Prof-Bloodstone, PlanetTeamSpeak] +authors: [Wolfstorm, Pinnkk, Kugge, Marfjeh, miknes123, rypofalem, sekwah41, Sikatsu1997, Cool_boy, sumdream, Amaury Carrade, nicuch, kotarobo, prettydude, Jumpy91, Niasio, Patbox, Puremin0rez, Prof-Bloodstone, PlanetTeamSpeak] description: Allows players to edit data of armorstands without any commands. softdepend: [Towny, WorldGuard, GriefPrevention, PlotSquared, Lands, bentobox] @@ -28,27 +28,15 @@ permissions: asedit.basic: description: Allow use armorstand edit functions. If set to false it will override all other functions. default: true - asedit.armorstand.invisible: - description: Toggles ArmorStand visibility. - default: true - asedit.itemframe.invisible: - description: Allows setting of ItemFrame Visibility - default: true asedit.rename: description: Rename armorstands - Now Supports Color - default: true + default: false asedit.equipment: description: Access armorstand equipment GUI - default: true - asedit.gravity: - description: Changes whether the armor stand has gravity - default: true - asedit.placement: - description: Changes whether the armor stand can be moved using the item for editing - default: true + default: false asedit.disableSlots: - description: Allows locking and unlocking the contents of an ArmorStand. When locked, armor and equipement can not be added or removed without unlocking it first. - default: true + description: Allows locking and unlocking the contents of an ArmorStand. When locked, armor and equipment can not be added or removed without unlocking it first. + default: false asedit.give: description: Gives player the EditTool with Proper CustomModelData default: false @@ -58,6 +46,45 @@ permissions: asedit.reload: description: Allows Reloading of the ASE Config. default: false + asedit.head: + description: Allows players to trigger a command to retrieve a player head + default: false + asedit.movement: + description: Changes whether the armor stand can be moved using the item for editing + default: false + asedit.rotation: + description: Allows player to rotate the ArmorStand + default: false + asedit.copy: + description: Allows the players to create copies of their ArmorStand Configurations. + default: false + asedit.paste: + description: Allows the players to apply of a copy of their ArmorStand Configuration. + default: false + asedit.reset: + description: Allows the reset of the ArmorStand back to Default values + default: false + asedit.togglearmorstandvisibility: + description: Toggles ArmorStand visibility. + default: false + asedit.toggleitemframevisibility: + description: Allows setting of ItemFrame Visibility + default: false + asedit.toggleInvulnerability: + description: Allows players to toggle the vulnerability state of an ArmorStand. + default: false + asedit.togglebaseplate: + description: Allows the toggling of the Baseplate of an ArmorStand. + default: false + asedit.togglearms: + description: Allows the toggling of the Arms of an ArmorStand. + default: false + asedit.togglesize: + description: Allows the toggling of the size of an ArmorStand. + default: false + asedit.togglegravity: + description: Changes whether the armor stand has gravity + default: false asedit.ignoreProtection.towny: description: Allows user to ignore Towny's Protection Limitations. @@ -102,7 +129,6 @@ permissions: asedit.ignoreProtection.residence: true asedit.permpack.dontIgnoreProtections: - default: true children: asedit.ignoreProtection.towny: false asedit.ignoreProtection.griefProtection: false @@ -120,24 +146,46 @@ permissions: asedit.basic: true asedit.equipment: true asedit.gravity: true - asedit.placement: true + asedit.movement: true asedit.disableSlots: true asedit.rename: true asedit.update: false asedit.give: false asedit.reload: false + asedit.head: false + asedit.rotation: true + asedit.copy: true + asedit.paste: true + asedit.reset: true + asedit.toggleInvulnerability: true + asedit.togglebaseplate: true + asedit.togglearms: true + asedit.togglesize: true + asedit.togglearmorstandvisibility: true + asedit.toggleitemframevisibility: true + asedit.permpack.dontIgnoreProtections: true asedit.permpack.admin: default: op children: + asedit.ignorePermissions.*: true asedit.basic: true - asedit.itemframe.invisible: true - asedit.armorstand.invisible: true asedit.equipment: true - asedit.gravity: true - asedit.placement: true + asedit.movement: true asedit.disableSlots: true asedit.rename: true asedit.update: true - asedit.ignorePermissions.*: true asedit.reload: true + asedit.head: true + asedit.give: true + asedit.rotation: true + asedit.copy: true + asedit.paste: true + asedit.reset: true + asedit.togglebaseplate: true + asedit.togglearms: true + asedit.togglesize: true + asedit.toggleInvulnerability: true + asedit.togglegravity: true + asedit.togglearmorstandvisibility: true + asedit.toggleitemframevisibility: true \ No newline at end of file From 378685b3b705e1447cdd3b005738ededde0a86db Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 28 Jun 2023 20:15:57 +0200 Subject: [PATCH 243/369] Update dependency com.intellectualsites.bom:bom-1.18.x to v1.30 (#281) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 5e9f2986..d5cd084d 100644 --- a/pom.xml +++ b/pom.xml @@ -94,7 +94,7 @@ com.intellectualsites.bom bom-1.18.x - 1.28 + 1.30 import pom From 76b77b953c5c266a3bf0eaac3cbebbd7ffe9830a Mon Sep 17 00:00:00 2001 From: "Larry (Wolfieheart)" Date: Wed, 28 Jun 2023 20:32:51 +0200 Subject: [PATCH 244/369] [CORE] Add 1.20 Version Downloads to the Readme --- README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index b9f41873..3be37043 100644 --- a/README.md +++ b/README.md @@ -22,10 +22,10 @@ For versions older than 1.17, then please use [the original versions download pa The Latest Downloads Shortcut Links: * [ArmorStandEditor-Last (Unstable)](https://github.com/Wolfst0rm/ArmorStandEditor/actions) - **Use these at your own risk. Limited Support is provided for testing purposes** -* 1.20(.1) - Not available yet, currently in progress. - * [Spigot/Github](https://media.giphy.com/media/hNRvZFeBDgLsI/giphy.gif) - * [Hangar](https://media.giphy.com/media/hNRvZFeBDgLsI/giphy.gif) - * [Modrinth](https://media.giphy.com/media/hNRvZFeBDgLsI/giphy.gif) +* 1.20(.1) - Now Available. + * [Spigot/Github](https://www.spigotmc.org/resources/armorstandeditor-reborn.94503/) + * [Hangar](https://hangar.papermc.io/Wolfieheart/ArmorStandEditor-Reborn/versions/1.20.1-43) + * [Modrinth](https://modrinth.com/plugin/armorstandeditor-reborn/version/NuCQHkBx) * 1.19 to 1.19.4 * [Spigot/Github](https://github.com/Wolfieheart/ArmorStandEditor/releases/tag/1.19.4-41) * [Modrinth](https://modrinth.com/plugin/armorstandeditor-reborn/version/1.19.4-41) From 55d11373ee40cf2d7b945de60242a0234bbc8860 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 29 Jun 2023 07:39:09 +0200 Subject: [PATCH 245/369] [API Test] Bump ASE to Release Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- API-Example-Plugin/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/API-Example-Plugin/pom.xml b/API-Example-Plugin/pom.xml index 5b1b1067..5e829d72 100644 --- a/API-Example-Plugin/pom.xml +++ b/API-Example-Plugin/pom.xml @@ -62,7 +62,7 @@ com.github.wolfieheart armorstandeditor - 1.20.0-43.beta + 1.20.1-43 provided From 2a7dd28d0b3691a9bf153d53c4989e6e3c901623 Mon Sep 17 00:00:00 2001 From: "Larry (Wolfieheart)" Date: Thu, 29 Jun 2023 09:38:19 +0200 Subject: [PATCH 246/369] [CORE] ASE 1.20.1-43.1: Remove Residence Support (Spigot Unban) (#283) * [CI] Remove Residence from Maven XMLs * [CORE] Remove Residence * [CORE] Remove Residence * [CORE] Remove Residence --- pom.xml | 8 -- .../armorstandeditor/PlayerEditorManager.java | 3 +- .../protections/ResidenceProtection.java | 84 ------------------ src/main/resources/Residence5.1.1.3.jar | Bin 1011245 -> 0 bytes 4 files changed, 1 insertion(+), 94 deletions(-) delete mode 100644 src/main/java/io/github/rypofalem/armorstandeditor/protections/ResidenceProtection.java delete mode 100644 src/main/resources/Residence5.1.1.3.jar diff --git a/pom.xml b/pom.xml index d5cd084d..0ed28208 100644 --- a/pom.xml +++ b/pom.xml @@ -191,14 +191,6 @@ 1.23.2 provided - - - com.bekvon - Residence - 5.1.1.3 - system - ${pom.basedir}/src/main/resources/Residence5.1.1.3.jar - com.mojang diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditorManager.java b/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditorManager.java index 5328e3d8..23ca3ab6 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditorManager.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditorManager.java @@ -71,8 +71,7 @@ public class PlayerEditorManager implements Listener { new SkyblockProtection(), new TownyProtection(), new WorldGuardProtection(), - new BentoBoxProtection(), - new ResidenceProtection()); + new BentoBoxProtection()); PlayerEditorManager( ArmorStandEditorPlugin plugin) { this.plugin = plugin; diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/protections/ResidenceProtection.java b/src/main/java/io/github/rypofalem/armorstandeditor/protections/ResidenceProtection.java deleted file mode 100644 index f6fdce89..00000000 --- a/src/main/java/io/github/rypofalem/armorstandeditor/protections/ResidenceProtection.java +++ /dev/null @@ -1,84 +0,0 @@ -/* - * ArmorStandEditor: Bukkit plugin to allow editing armor stand attributes - * Copyright (C) 2016-2023 RypoFalem - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - */ -package io.github.rypofalem.armorstandeditor.protections; - -import com.bekvon.bukkit.residence.Residence; -import com.bekvon.bukkit.residence.api.ResidenceApi; -import com.bekvon.bukkit.residence.containers.Flags; -import com.bekvon.bukkit.residence.protection.ClaimedResidence; -import com.bekvon.bukkit.residence.protection.ResidencePermissions; -import org.bukkit.Bukkit; -import org.bukkit.block.Block; -import org.bukkit.entity.Player; -import org.bukkit.plugin.Plugin; -import static java.lang.Boolean.TRUE; - -public class ResidenceProtection implements Protection { - - private final boolean resEnabled; - private Plugin residencePlugin; - ResidenceApi residenceApi; - private Residence resInstance; - private static final boolean PERMCHECKER = TRUE; - - public ResidenceProtection() { - resEnabled = Bukkit.getPluginManager().isPluginEnabled("Residence"); //Check if Plugin is Enabled - - if (!resEnabled) return; - else residencePlugin = Bukkit.getPluginManager().getPlugin("Residence"); - - if (residencePlugin == null) return; - else { - resInstance = Residence.getInstance(); - residenceApi = resInstance.getAPI(); - } - - } - - @Override - public boolean checkPermission(Block block, Player player) { - if(residenceApi == null || residencePlugin == null || !resEnabled || player.hasPermission("asedit.ignoreProtection.residence") ) return true; - - //Get the Claimed Residence by Location - ClaimedResidence resClaim = resInstance.getResidenceManager().getByLoc(block.getLocation()); - - if(resClaim != null ){ - - //Get the permissions for that Claimed Residence - ResidencePermissions resPerms = resClaim.getPermissions(); - - //Check: Is player has Admin Flag? - boolean isPlayerAdmin = resPerms.playerHas(player, Flags.admin, PERMCHECKER); - if(isPlayerAdmin) return true; - - //Check if Player can Build / Destroy / Place ? - boolean playerCanBuild = resPerms.playerHas(player, Flags.build, PERMCHECKER); - boolean playerCanDestroy = resPerms.playerHas(player, Flags.destroy, PERMCHECKER); - boolean playerCanPlace = resPerms.playerHas(player, Flags.place, PERMCHECKER); - boolean playerCanInteractWContainer = resPerms.playerHas(player, Flags.container, PERMCHECKER); - - - if(playerCanBuild || playerCanDestroy || playerCanPlace){ - return playerCanInteractWContainer; - } else return false; - } else{ - return true; - } - } -} diff --git a/src/main/resources/Residence5.1.1.3.jar b/src/main/resources/Residence5.1.1.3.jar deleted file mode 100644 index 60ff464a63e12d881a26e375e25d8d6f49961594..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1011245 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

    <&~l;iTkUCc!CFNyj><(b_$#M>>h6!4_rw( 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%0AZ(}Djf3R#sJdqBFfV#u_8E^<#mIr+i@rnNOU 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

    5VhbZi?ishUeW`LgX%-L zEbP`(BnO!HT41vg(@1ZjN2c+N8(`Z8RIhCMgp?gv(T*ELFH$2a3rADHHjl{qsdqSo z2j8iwfxD4a;u(uo;i7b?-#LLAE;&_9RxJ$rA416yweYoi`j;n}#PFoGpswx_CX^b~C?1WKI z_7fEBk~vH4A?bQ)nODkxtr#%i+xkcQtFM-{c=U^$>NkjUXxI$!0}k%z5so@LscEl) zTA2le&FSTHq}&Vk@ywsj;z2+TTfz&yyJ9ONLgO!2& zJd*EQOQ%=br2jSuMYC(?U@IGM+-17n9HDGzpgRW(9`@%7;)Nx23X$70Z>NLmKl&Qg8rSDY0u^KO{i21JRZR?XhmC#pn(V43j9brj zNY6C6^-B-iao#4FDVsHq0t==-MSEK4rp4oRD-~|jFyt>HrQjX~hNlktZgW0%irI(a*Bb?Ba1&ZnX14`+rLFrP)+iY9NRc zAScDQZ10`27I3%nDPhHP>#ngmu$NETBrAn&8`UP-#LZN-9_a-eYEN)pE~lV;l|MVD zaO=BxxORCJu_MnjU3TFd^H8j<+E`uoNtO}jQ_O|O`M2S>42H3kpwikok5k}h%*i2i zbje{chLH{#{e#I?9o>T-S0bb9clK>q?i1W*m1HbbdNXjHXir9~#@~Uu&zpf*i_?z_ zBf9J%ba>Hw$F+0=)7u}rv2+8Kv>ArFF{e^2md&79BPHY6MoH)Fi9&qnNBnGSwGx_( z8T_5e^l4{}k6j6FS^CIvRoj<3yG1mj#Tjtf$|IYqcR0x*>hS$;xVRpc8!mW7+I>N0I8rRZKjG^%V4r36&*XQN`* z95~&s6d1HCWLI@8U^Cm$R|Vd~Qm(F!`@d@hmrO5`+4Tz2kxn} zds^z|zRdWCh!J2T?u?585GbKYPYVxIqk~OvADN0u!EqtI>-6$W^z@f?4EI#Wb+=dE z>7LJ17>8}aN^f4!K-DKo?|3kVMr*(yz3qkUA2w4$yoJXuuOvluP4;^Ow(MK|hTImL zmThS}hV1B>)5kRjw$&KgUSUI>QgPxz&prGSwllhRTXSF|)Nw`PWv`4FMJiE_*Y7AN zzg=`ZdVTzl%P&X>Hk+JqCIK41>-y`(yz_K&j3wyu1@;7+r82a%WD_0^tf)Z$st1|9 zg=f*8*l`==_F*()n9#Z5H=e2RZ?KlqtqMS)M2@BSeUbN$DvT#gH^>Rie+}JPY_c0P zGPH|ny4O#0WmFA>g4ji7T| zVr+H7&Nxfq-3pq1kZyd^uW38_m!~=butJ>_3wf3{+uB?&ZyodD%TvD0r&HF72t!7% zlgqTrG?}7JI=&vLV$3#c^K%XnkSc`r{oMM>-c&e~4NV%kM8?vW3WZDaa1Np+c&#R8+#y`WSreO#8~qejiu!)o2J zlgJ8YHYwR^7ASW{Ak(NgW%d(aLS{{)KEk9T+5lUw0qu0s&pW-POOA?#YvKM~|ElM9 zyG`vaLz3sJiGrB1x|C7q=i*!ucSkq%J}u5-X2oxy4F5(Uajl+BfX6j%v4BM$xJmUj z3-V*a*8kF(XhQUl=*zWw8SvmhAf^0h8`j2+8hWiW1~G&Tjr_I%9%9TcnE1^bZQ+L> zw-%g$sTMaMSnPmp!kBv!f%T8E6hePhKf1>TK!T}qm60pVxF=;~?Ix8^8iKX#EGTc} zjsS>teK9F7Iz(e+@t0e_~7mV2^X6U)JfrPnterOm;2?u}=(z zmTAAP?=N$gW_GJm{T7_y{2kytC)-N%pZ5;+S7~!CSB}o~S50%9wUf4cYUg?9Yoy%j zCP$O(R*EY%-UBJFR!FyKe8*5kWKXkt7Ib*I7Bh7>XnLknSwnJj_%Ji^{XeNyOGkI> zRcq+!^3n%?dpix_>&gZ!pw`x})Q~g?Npz~TPvGC5VtaheJc)VO^Lk3Gy_t{Ba4oDu zINDqT6?-^T(ZeP4haS>}6Leu27umeyZ>br_1UJ82j_d$_WCNcuY_H*4BqrJYv>2{z z{HkX#A1iGIb4$L%xqCCKx5j24i23uXKpKNP)Le!AkwEr_DS;K@J82{29@J{DH5ZT= zw`m4B@4VT&UUj7O7uCy~{hQ&>htR0gOf6?WR|zh2>*uQo|7%#E&^rW`+J<+l>v?qhO%eU`o@CS!Q=(Z5fWXyk(> zw6<>$Q-7&_X!a^vF)%I%B%%kn*-CDqD9~|aEI$?YrQ&#cpT!6aXylwaTVKI=Ur=6n zsS@?5?(w?We=vina870AK3fS5FMF9^Y@VbZx9gH3T%mW`ta>n_X5K z^W^h}VoO+)iA6al@0}sbI1kj!9JcqM@ea0mGfi!1?QkG!F+JmKdZ!C~%gsYm_-aM~ z(@W2FG$*Nd!D^J*K-4^Mo&Fwfic@!C+P4;BAQ|U(0ZmIGoTYHGOOL)wpYV?xq*dMH zR4qhblD{{iR(U0h8M}Ig~r7Z@nJi90_$k7x%+1Km@9#uj}oqH-T z*;JBvF~-`C`};^KUwopdz+g;vB>~bCruN9cGH1alMLobh9w%-E%PuKVC{@`{wIFSq z+@$hi z-?n{thxfv&y9dADbzRgj=?hHnTGuaj-O|41%T4cO(>}EwJGt%TGwTaqcJ^=!@)C0D zv>RTvjc}m-Qq(^4Now!d7n!wPXVmtOZtLLdS6iomc%8(c9X?i@xA-2s!Y_em&^wgb zg!V<1h%R0i$2JS1XHRR#xH9|~uN9)dR)fB|=$B8VPJI>___w;z5PYk9M6)rT!w)Q% z50^s>ynVw(>QDaAB%*X4l>%{=bUCEl!1y&q;J30CjTRg^(mI3>>#>E4mNe3D!S+RqQhyTy=$58P@@#Np_P(eCm0KM;z%&4< z++nPx8WWv4GIUE5MIo1IcD(lu`ekb*ty4wCi&&H*c9gLmhUf|LxB7{to_-q;{sXm@pMWR z*;4q4c;qO#Ee5Iy=+Zl^4~VtZ6ythH5Cnqj2fV%92^~;mGYC#UA2Ijept78QIuBkU zI64hWp@;i2wfb7FMcgZHy6gHSa`o%NgY# z+#$W%k-0;)Q<#qpJ@b1H&2uk3?Iy?fOKZ|z6i>@@chY`X6pQgbOGNeUv&zh?m3Gjx zv(uZ@Syk|lx8E7VdQ0tj9Qt<(FYrk!=23FGgStIBjDNd0i`$9Ng?A*uj5^sC$xIUd zdWPZWwG`k(3->09?yQ4;PbI*2D9E1{`k{t?AN05Z6T|)?sQh$A>*M`{>JsQV>Hj8!`__Q@a?pBRq5TN+dtVFqCWZS(fcY}e@}z_L z&dB5U*z0rMBZKsmni%}vnU`|je3vHk8@Dl$>SaweHi8>B{=74+Hu9_38o*8fV4E4m zj2mNNtrs`=ojF4I31jnH4k%3Ar9)Ywn7Nb=k$bCb46(_X zN)hDl%gi;U2cB?h=lwl@=1n~WV?88mKIB-7NNa$pbL{zt=NGJzFi233P}?vur9iwMk>XTG&ylmbgAib->Gn(5Swc5 zL@FIUjkADjMejd}WgWt*pk2?|@8v25BlL~%AMw>gCI}ZF?bk1?AAR-zo9h4HKEZdh zcX4(5UmNfo_4S`qD$H*^VA*Js`FzQ0VzB|y_zE|LOJL1-c1W;bY`ZJcj^TuHS#Fkr z|A)1I>aH~E+IHbeDyi6+v2EM7ZQC{~nz3ys72CFLvtm1`VCDYar@i0SdfL6Q+WZA` z=Ne=5^X$hl@4KVju^MgnR90h)uXM@z)F{te>aQGIx|0nB1xXU0n3(Q;?Q?#uef4~O z$^QxFfWa^M$N1#?=1Dqcek>y_d1P+RDqh!GRooW85A8cqF1D_A2fRE~Za_Z6WYbqW zRuNT?j$+E_oK%hp76X1H|HX(Y$K0$>R$-f(^-yAFIVSw2&%rdLz;96E`Ge0UiLh^G z7L|OT`PC*tJJCw%dmFzsUFnf>X@0QVL*rU!-Uhh+vh{*!9Otx|!B|BT1gIY6?rx13 zlBI5V>7r1?yxB(ClyIhYHLm)v2AHH7usU`CotYQrI~4`(o208T%ibo%cOb^^?m8;!!E8l z+8~>ey2x%!HkyWYQEV4vvqvhtGvekLTKyGVXuZCx#Q8z_4P-K=7oz0F%0TWMB;xXX zv(_O89-J~r;b|t^ac(Cq&0$Hh3tjhYwM(f z9l}&=-ajIO^?-%vi3A6JI7JGHL&7QPGmL}fh9gy#W*bBsNpWCEG1(Vj?Hq650pbh7f}LDRSZ% z)Mz=E)u@bdQ1t4bW)gLPbvNbZR&Le;>SeJd6Si6;VtM0c{q#t~i2HevSi;~eDO zwpx=BNX{{(KRIGcNp${fHE{zbJh0HqJQJ)7J;ib0wX!<+;H$5Ui|y*Mx**f2h@p^A z-CL)fOa3Z|>;LQn+xo@Hn>$BQ@XxCAU=V!&h)!7i@xA0+y@^R>ZK`6^$As8YLDZF* zVFsfn_DW;JvE8_G$j#fQi#9o*@W8bn<@_p0Dc-lDnD(HIt+kMZhE`m8eAGclnkpz`T3-3=WK)T!-?2J^DU(Y zdwG`%c`3%44RaM!?@}r(bq!2YX7{Gb;etEEec7c^g*9!vNw zAoH{nUQo-vM3=d$g{&5ic3_oGq@LtVcW%Y&Q|$cv9gV$uD?Ouc5zXd;K8t5Xkw?9b zVMUWiP8CuFil-r<-NM1w{oA(j1&-XeWtTdyN3Rxn!Qjsx8J;o4uFN9--B*xVs!hGb z6Lb6Khl?Y=736Cqj*!hhSx(tNBlRS>fX7SRxh#xeUG@{BGsOlDqpo91S<4%Ko9DeTSB}WwIB8tM)seb zLG|xr7!S^ETp#8aH;`*NcL@IKo)G!z*T7ua&E6(Zw2}!y_yk4)de9{BDVA!ty}Wa^ zNb>3vwcnHPc>JxNcZCz)AO8P2MoM=4V~)Q`E@l7gg42JU;hC74ncDr<<4JlmY5r zz~{DIeZ$&E8#0QnNVJ84@Nd<_&EHPa1cY${h=>jeGX1?~ZrRztEvuHOnw~A2X8#pE z$1jH@N!3B{UK(n9w>))UZ)lx(Gk0WenMe|entXkIT>D-7Uw_<(IOB7}84%*m?-H}P zkp45u9_|yCq+VY0zsWltv>~>2!&Xa0I%weAI+Gh|kH#A~TUHQD^Ag}M8bNMf!nVHT zF>v9;0uAOgZm7fAYJ}y+JwH1qlaar@{#XLo8 zC$*tgi8FB@e$_QWQkA3|HdaYJNFfW9Av6`BoFN=h<0?V*w?b7OAw`8WpdS*sgr$L) z?fKai>xr$4xzA0NjlAPQB-Adm-aUZuMR5!?`-6;{$zG;HY%uI{RtdP3*!U09%|&M3 z@IEuq&HjpKf}wf%pRIWbaI3Y$ljG_###XB$}|gQx_U#oSG#15w~DhDnwOdDx_q^LCf3g1s+Qe z73#jQu%WhFp@Qgrm|@wd3+OtOt{7bCz|7{rlzyrvop+_{{X)R0+=SF~%uW)(`h@DYVpR5Yo2TpO@HJ8e1O)1pnbQb-o#Y})8&(ggEe!?)O- zZ@e)IrrZq7o=h7$B+j{i7(S6OG{#mz+(7EwEZV4Ypnh^lrcX+KRy!E%VogYEyAG<} zW9v_dG|8V0r?X?NTt5q#^1?qBkRIddSlvbz!+oK8%v*^pTlDTbEJ36l-`)(cPAYTw z0l~?t+w~GwOR9zZZ=W?0>@1PRK(`sdNKcjfC4Zq@%epD2;p2#dI`06P+JLhBu)$W5 zj1h;dVKBrzo~uX~SK%kISF7`A*;bLmkM;q9niFDEug^=qmo$%oI=7< zUv);kLN;XHl&a>A*>-iv&8da!^3EI68v3y7VX5r6<$-&481ptGLcId`gLitP^&@T8 z?7gD&;1GWl-hg(-br9d*R}YiUz0J7`A9iZ&k$O-TI#DLy#yAXVU^YqXbf^xOs8e(z z*X;LCFhMpHkiPX>#7X!F?6G>pMgNVLmA`RO)QwmMJZOa!avbU2>4ax0`n*OwCQ5Ya z?ZF|JNwF(!do;~V{6P953t^Ym3$q6kHhNMEY1zBvkz%r`lJ4cCjaW*>upfGHr@|TO zcu8sS@XpiaVW@&k7t|5h4tloqpg%U43+Vsed$H7uF+7)>PgyIDYo>%T|ApV52SjL~ zEtCiF1;*ahT4K6$5Fcc^764&at_+oyKi6Fg954_Liu&Ui;<7eOV1pf?5iDLf44oVy zp!Qg%Enb2rzXt5|FFz$b@JJ_V=Uj(j=SoreF4<1!2#ubl_joIAG{<(wkdc_PjkF|9 zZby#+-2_wm8#Sfu4Y$a>^pre6dgturjt*y#Bv9u%a0Rgp%9rx~6_TN!&2yPDVpZow$_-h{QlU%Th@@6<2y^Q1usbcVR_bflPsu~ zu$umv8)u;~*YPuHi_F>sdIrUma#i`=ROp`m8qPbMzqWSkH56;N$Myg}a-N_` z=bsSi8{7D;1F?tg?K?6Ka^Sb*a!k!d%lEprkUb;%haj&jNUk)cGNA_Vx_jTnC-Q_G zDaK@x>ZEOS#B~aq&#Idwov^&b2YAufQotwmc&Ntfg$VubeMBzx`!bdEwLBhKCAPCj z+Mfmv-_e>sHY%1)37298q0-dgsFqA1(wMH9;p+TK8uWvNqI-&|-IUq6lh-AZ5o8ln z@R_G%){(X*6U?%zEVM8?bnM!@{dH1vq=g(#!@MxTb$>T_xABkn;U>psEAw>X1K#P+Gg<`sgQfm@@|LuaCrA*N7Q_mTb}S zs!L9{?-?d|@5I z4+U2gbrp{n*cIfYPIrZ_xTBduXV0H>UZvmd~*4a2~(af&cwmzPirbekH zYu#xsmzeD4;?7rtU)qJrC$ZlsH|N#9=B?(Pb&oJ~`=)~AWgM1aktl{eVksml5|I&( zy`R)+bL|~N?xjMpk_lz}^B=L{>KX#SEzfYn2|-gm$}-j|omeUk{JdI!GPZNeR>hmH zm~F!I>&UOB1-Iztx^9$|!3Jj6s5JcgXD6cQ06OKx zR`U*%z-0=*Q#4`DWHi0mS;Kcl*uX)MtnLo#>r-A=*ACujT19>dvgZt;u%c-}QK)@t z9ZKQA?Xj|4DGYe>h{ZOG@PH~2+oW|F-Me_Z{k8$!R^Byxcg(;(%|lM_?i(}OOd2{d z9mEAo;;MM%2a?_MiNE7jP_0-xxi4Q%FNjI8vz^sHJka-DTP^g5xkDsj(BL~t-2z$@>Z!mTqLs%l|*hTLR8-;a;@BHE21-{g&+LXUC;bvu2w zPYcs{u3gqL>t_Wgxq)XuiB|%<8-7s#UlZeCa<@N*SjBvpwXly~(M=qbc`%@Ih5{uV zAa&ZDRAfU`;4oPxI9noMn}?bX(#G<1={~kSb~(yTuqp9{S`02?A&3HIn1~6fX9x(1 zm?VyR`+NLRzYGVtr}weYPp6s0)=%9HF?ra7{;fNc#Q#R@JfWbCwJujcN5Xs!XMwwA{WGw>Q>Z4F!`fnG>$i+z<}*rPBD0&C31#g)i6QH**T8v;lsfx z?v!MQHZdOhN9+A~7#N+f8Vod6<_qZkbD)8)_}UxXz%w-0HoM4b;!Z5A%!h-X96bR= zPxlwIJihf1^?``Fb7Gh*Q~@Wu_B?P@VrpQBa013XXxPUL@;tCsRbt;`*5{(1u93k_ z)kPFo?R3qy63SFYiaKJZr$3~cpJF{GqvDj^8VGTbo)%5<)dKnWzM35gNDEC)i+$8d z(sIOY-t)Q`0>v4GdoR%#ocSDTMVD@kqaCVf{pS5JHL}%-D$Uu_@n0>_uxOj>Bs(im){Tj zYVqj)lK05}+VQB<_Gi9etS(u5o1o5+T#=AHT53`uC(TxGuwZjX))ZYcH~sVQ6?0|@ zzj6uq6fX-na+1|Q<(Iv;;1e$ZP*aMnIErHii>)xzgk8VZ$a z3P$ucLZK}og?w$E^R}QoP<@eO?%oYq9Uh|7OQU7f?PQ=eHnrZJxC=Y3+xJ->HUAD* zd84i1TvKxfh~UIoidZVEe4rCc7Z-V=!8`e5brrB)vN2aI+QiuJ%IQMCvx8dNEX%LH zv->Q@d`8As!76!gtOif+jyE1Qqj`*zkWTgN5uxA_VY8>_8|L>CAM37EUb@StlEg+P zVQc2b{I>iEHubp_*rvghatiLHbMNaU3O+RhUU)ygS=PwG{8~C{Oam5Ysj9jCk+vRk%qdos}4a^l90-W zs@if(OetX@6a7zvvt(bYNPDp$kU|SQR*6NHQbh#}9K6&1mhZM(A^7F{ z`N!Ep@;7$N^V<8m!++;_+xxK1I~J5fJ}a-6Tp@J~f%M<^YR#QleNC%(%N_~s7F&IL z`dp$8_WWdJ_Qj0l&*s42z5TlDc(myYlL3b*-MU`GiijDi5vLZwGHo{|<|Kec&E=V# zt^JP2-zQhw)5j*0sz(iL-sN@2<#nj#b+~!3=N{tRC2${ZWzc+9pe2Vj`1|c3e1HIV zD$$K`cLbFP7+TTTrY6qWLe-^~evHkW3t!=1H;WX)V^X7DOct8};KOFn9915wO9j6@ z9F)fG@!w4~yrz=-WdYAF68g0(-wqe%3hgTH1r(4gCz=5qi%VIVf~LRsoVv_q-DcWz zE>VQOp@!HGM%k7}xKoUGWW1K?Ly5P+NlEey$_}G!Kxob_`6S2yhd!pels#ByJPyP@ zOO0}a@ZN9~wqhA^{8?H+=>hCmo@TRLhJdS2343@_ATzjJPWP-DixaE>hPfh}?NYrk z5YyQhw}S&s5Y~L6h>jn)i0dS-BMR#JAV7_ZAs0Y;t70^Klu)8JHkVg`B+Ifs<{b%2 zK4f0+aLuVvwyU$wMj2vzB|b!zf`VoO*OAAW-lrr3t~O#m;|{LwHDH0JfEgrtrT-fZ z99<5|8w#3As}5+fS@<{NEyXWj=r$ruv6oAeMNr>gRg8W#iCHg1$FX(6&vByULGaol1mFzvN!^gBQy-k11A9Y?35ZOU7IlTDN4{1 zM`Rx524y7#H-LdGoRhh%6_lP3W5l)Pc*@VXSK0PVu6~6Hy7FI)%KC}49fQ-G*f4Ra zwxs<5n{FZ{%z@OeJ*BN_hYm1F46OTjHXHJk>t_c{!Cz4<0Xb<627r$|M!yVl2f+}b z>Tlbpq#?$j{DTxVi$}MW?pCG-JRchWKlj+a%^8 z12L~n*xa^8PfEih#!qe@&nn759=+;31vNF7C>^J4Q_F#7Xqe^;&gLk1B&^&hr|UQx z?!Edk+bSjxQOsyw&|_R?c$9zUkO~f}ZP=}Y(HXp}#oXTsvk&DvfJ!gi8iNeju4@2T z;4j8Ak&8&#xKI3;RI3-q9&eH->tO5F8nQMCQlT)bID!?cg{euTJ$?k8I2dtpv1+a+ zPHB(uE#7Z1J?PSFKEo!VIZn6@Px%nrEZUU?9XoIl8_K*zdlDPS5xSaZ)`O|^`12s; zYp;Ck))_>e0&60={S?86v(PIgq;(LUJi5Y)jq;iYbx$Cys+Lp*yt+ zR!KI3lU!mWW_BA~>~#{{)oq9K9eX$V%bk|{OiFIaf@(_P`*PazFB>I=45Jvj@lYcVVB=5j*?t zNkyg&oquXaJ-ppK2qv&)J3+NWwBvlb!lDE|9JA)4hU{7n(Pb*!pW*+)j*rNNoTt>} z?mYk?cS;U^;so^_%cb(Pq09Sqsf1a zqRIWb&35ioWe%97itv;h!Z?T#(AEQ5Kf<7s`jp>DE9O^m+G@0rQ2vRCBT<#rkrvh1 zT?~(NIqHZ=?}G#8OjNg2^3WIQ#Jc>AR1-_JJRa<_WR*l?8%dIUyyTo}Hl2V>h3idU z+&`v=taC_=LdvxRDZ{K^J$6h9ZUlo|#trmhhv3WV{fd*0G6MNhwf~8>FYaP&ee{C9YWNFvb1bh78D;bcvXUvP5f%B8Y)0qI%az`M6(jd|9XYFi z*T&QvLkts7V9rUTu>trZLB(jP0=35k8`6|qkCFNw<4~O<+}#?)_z_X z6!5REVg!H6HM$=sV8Iv6+Z*1nwa^btUHbUdcZou80#c*~w+|a50BN%ofjY&-=7s7alIym$nrERlBv~QOwzu7f$9HG#(C)iDIKx)&Na$hAbyACk zs+9)=J)y0e6Qv(htr`~tr28O^;Sh6lc*9<|6l`H5aZlO7@cOV--CQ=eRfB3RYSjkr z1TNA|$hV|7-rt~4%RBH})TS4Q!d4Xj{#?v*ZU?x}e#PHtu=_PQA%Ff!&VK@b(0Z&E zhm?JJy=NCvu|d@2d(3}ITGlsLi@j*pPMD%@vH=^UMaj&ea{eq<0H~Jlc;5!QfqD_j|;zBW{o~cTaz!*2lqFLIG$@*OA|s85O7A-^^Xq*St(1 z$CMcrv87A zsQ+t_i;KPe|D_;XYh#O|`jtvH5ZchnQZ`#{G(vCvFzqs^Dl($%$_GhuKq}uSNe>SA z4-_opJktXrbHEOFj8RXz!WL;{ zzvDV-ej4t*=H~x7k&jgjQ3A;jk*g^g5|iB zw^d!#b%`HpJA`iPYnO2cG!C^tkdiVUbJ+F%JmpFnm5CKuCt%BVr%T)mroYS}HB!+S zj;r*Xe>8CrI3FAU(HZE#+CJ4hZ-$syzQwC%*6|{<2-4mFS3JN&(5YeH9jQE2Y7N)M zVuCI74X8R`+a@sR;4?1;9A-OuQxrR*riD68>Fc8#e?C6sEs}z9ERgXbF zt}e=O%>~fZJ%q1;?%%DB=UupmauqT}R>rz|qUa5m=92Njc#Y{V;Hv1w7#?jQ26diD zWF;Ed7t%wU3K3Y{Gm3`@TpuJV#W&U(Act-7wmyGBeg4Bex`EtM)&`8WVJ`z{JiGc- z_hMNw8uyj8A{ix)o_gdJ;E`}=e`xY7-jK$ZRS>&O?jf~p9jocmsAGslv9rh(m@QSz z8@4W(uau`iQVP93mmqbKZB{6u=wp<1%4$VatF5JE}nGLkL(1lo`>yUFKc ziskg<*}$otEAhsqa2|WU_pa>ql9D;`)B8r)Epl8Ujk{Mmdxc^wVJlkY`CZ5P05auONBV&uXW0WH5%bKex(ffVT7)Ss%+trb!g0w^lS&C^6 z(Edm~aLY4GeJoU#UjL|)c{6|T_j?B@g_2|i$?b@=dLp5pRER@+L@u-JGXzT)C6jrE zsijKdZTADBXm&4W4++!NV^YY;zIvBd^}|>lgvam)CAXtwSsY41-uzT7@O<3f4USd? z&)wc3_20MQ?MPVoW$pk`^HwQ1{vj2HwF~j*X0=ioBL@rtraXPh^?60+9x)mew6jwj z+5TH%gQbVbDW1VTKX+JaGjb*Di+k*MN20@B(uJyQhUd9Mh%eX_HopHLwfGIf7s|G4 zkwegIo8(WrAWEvfkQ*A7Em(Tdy`DjOLn!$Ee?8s5{u7Ee$aLxGe1nRK{#Q`(fBiCc zarnOos%$me|H$C{fSopwkx2siWnt2Fwn9?qhh2h2sBu!zt4T(Y5s4-V@LLzdTe8+Z zeP4U{Hx+M$1;@K{^mwuS{r&~tDmWHf3&QVSO?C_SOxJVU^Yo{>aRzK{|*jFreT08a0j*yW8iH5lx zisqT(Z&?wInl$X(#C*yp0H{FKHHw(yDD^FZdpem#G+s?5-s66>5^RO(G=Kt%Oj9~p z$9E`2ZzLM}i+aJLw0-i9GFhUr2NMN=c04UzW5>!Ckf1_)q||>vrl`b*+#U(sX2gy6UTV6Z_pS~?3663a;%`c zO2LFLc5|VLG3KZ?3^r_}mvik5Q3U=3?71HuwN6p@n~s*u)0-9?aq*Gjz1s5iaCSfl zW30prWf&slR}3m9z=lG(!hmDLn0WmnXO&^l@enQMA~QrjF1peRa=^SQc2iku(Pl;~ z#i6tp znRd=33MT93Wf>N=1h|+uwg`pz8HC;k3JGI*l$Ad;{O!d6Km+&CL&HzST%*}a{A)k| zNN4rp8AuL<@+#F^C&rla6mb_9dJor4)Xyu~!tCg{nMTJfwykB+q_G#1+9?jw>}AmQ zdG@JZ7`>!Pe4F8j!l|i@JqF{(VRmlRgZE&h7jahDE8VKF<<@q^LPI$?BCw!MJa@QU zlLT}^N1cF?WtWr|Foa{>#*t#s2HN!C(htxEgF$vOQnntRF{%hYQKe$m? z*|ld-dM-AV>!7pu;99PgdmQP?dXO++XXzz zHK6x)Mhns@X6z+v@Z+B(mEZ>m7H-~WpDFDAEDbzFoIkM)^lxmG9^(`3K_Pj@_m4q) zjEo4A42FdGT*l$q!SFH*rZDbx9lW)UD^Z*pOnx1 zU?~Dqc>NPBwRHaA!MhTN;onpuDDECq*~L5gJ+|A|AldFvD2O7K7)2wOD8GY;2#f(v zuXc)1_@>52+z4Y({rw687kvl}`Op8KH%|D+S0BZ9HD%;~6>0p}*GC5v)Bm|XMyqM7 zW2>Tm$~mXAWN*(4<)d?V{eVIgv%Vy?oD-@N6)r0R2dT(0k(;MXOy^)0RJ3k7i=_8m zF8u`a&8N|IJFVy$QP;gHgX)R zdsH%ZoO^Ip_b4H}sGmL6j@|&4uD}^mhB4uI^rp7jId+uGC*y_H*APrIyf~3I&&X=G z=IB*p!roGs*uE9Q#=DpS3AwH?h{7SC{wTy5tm+f&X-8{Gwz_+aA;XphDjzMwy34lN zIl&Of5iEmg*>7e2kB~ER!Mehy&#}UKC-dy#)`1Rs1JTYezZNg4;5x&N zl|OgQf$fMRWtT1eI@@lwTN8!3#2h)yy7}^DlN~qn_o3U5d1#}Bmp4--oaafcEo3Aq z8e@q?-33Qk|MaH|eDE$!M`VP;HT1NU z$kXib)n7wCpeq<@VixCWg;wjZKXH-u>#1fZ9K6goRN^+PkYf>=C?W0)_-+K4V)iTy zx!J~%X&vRGCdA^cN-gZ?j{gox>e)93Y^m-+Tm~pPU@t&#o1dIR=0y-)F65D(PC91AL)SRNu>R0}Y^)Xyl1mNgDpi47}gi*Gt{`Ce@pIaiMADT|GXsDz0^s zL9V63o(-dnm4s4t4--=n*7jy$s^6fzI1%S!dQK&oEO@us1t%F_J{e4bZ|+ z3jU=;VIpEZK&ANi5IILoYVLJmxhcz?Z6@YybAy@CGjD{hf_2ch=XX)82nSvp`}FW< z?+1K>O2jgRg?rd?=I46Pf|Ut)jT!N=g-mv-Avn5Pd}g#1VC}fBw6(G8UE2xM z)|=IVu$Qh+7t#QijJ(6bKREB909*W&l@FN65%WDs>Ucnu6CBWu*h1il#y^dZZ?OZ; zX7t5XFh)Uucmg3*>B*9`p#gt!V*G4(+IK|>l>n;74m+_&p-Qym46Wx=ZW|I z&LQS)(MtD}VN%*Sp(;^xa0hn|$zL3y><+xUP#BN;2ncACu&U!gmtBgea8R2~!?nrr zqm%E+Tc}x9UdJ`z4^ZkPCf12^YU->`t|L4}r41%49 z^8LMS|6gyt|8=9>*xuH`(E0x+La**9D}c`&Q_ElsWQJe@A>`EBQS68S5(7o#LY8nW z%rMalBcW3budu#COj9$FeY&;w66y9LYT3*Z+owjv42n23xefer&W}tE-jD4lnl+6& zaDEGx`=hPPj-9US>F1Wm(tox`|@c7U!FK{huk=rL0T|IqZ_zc43DeQSwn1 z(#1SGL53hOnTur*+-}PGzE8_kt6e2Rm}>lX3xNHNGbvg9%hi zwVfQdg=n`VB?&jTW8x6Eh3C0DpD`Qm3uc~9lHHkRr@wf&qeORF=5b1!dzT}H#U?{O zX2oWwaujNT8FS>1EqC``X3Ug^SW0+txbc98bXtUQj%Jw_Q~v{WfX5Om?#hGtYh@2X zTwbF%J|vNP`?OW7u)#oQD@oU#`9dhIv06KI9g_Q5D~!9cvgTW2j5VY4xsvaFKBO8m z^)2USp&@gd;|Djcc5U+cqQW1nnN_OjaqWN&bgK;Sctv2#xkP@fQO-ky;d%@Po$KtL zigsCdH~^zJ4k#GV4Nure#pOmoTYIZG20p-5*Nc`|0}JnxfmD$oX@Jqea)G+Kj#TB6 zvgcbF7@>|vQIbNw2KU008*7-2Tm**Ks|V)|woGGG5`*+-pTk&#)$^pN_f16`w5Ip? zHt(0(^@-AU?J!lzF{M^10{is{>;{FjI}D*hBo|)4g}@ZSIEpq9yk7d(TKswx@FGwQ zfL3J1s6TrPi3i7--IQh%&{Xzn_$zYK1U}aKg~)r(wZ`R;k*rpVk&B`wNK6zMQuhah z1agTGH}n<^TnY&-pQKoF#St_(lYb+yc>WxvF zJfk_Og_(=yrd3mt*_dWdQ5_5P*)^xc#&(@iT8buYdrom^!SF3sLRt-X#ol#!4}4N< zc8U4YyE@|c;FBsC_Bz`@pjAj+xhi#LV{O-fvNEnDNFq2J{frylNn0csU86w~ z)p&Orbe1AgowvVRqfHem@~ZcO4vde|*t#o9S%K#SWdfV6pt&@~iPEaC8YSo zZ8WDP1JMWb3M`QaG=d%)UZQsD0z!Rp!D|a8k&WlEktzEx%&%z;@?4Icqz*G|uSMbpVqPsJ>8)HZ@-{f(@VcjdxMe0Rm|elLpsBMJbQ|pqaZ!2#{)bFNuA3XaNYA-F zzkP$YQXO|Kih5!~&pj#?M*14UBJO{>Mj?p0Ei*DAOAmhrMUQFV%CoBaiRQ)ZYd(N+ zO~7UEcdom7iAY?Zq77(n|z8 zh3B*H-)cn(;@JrecZScr<>(P0tAoR9J^=Sq>l|#jGQIKu7xqZL|FRbOfZL30p>Txf zzO|n|ggz-1YQ++$=)jr=+tnXp_DIRA=+N{5#P42Nzi_pm4)xr?@r;1U-i7()pcywd zM%U^NxWSFsw*i;1x}D*8vAV^jckJ)>zq`LrZu)}= zXD^PpHAfI$ehc>-Tz>4Fv-hP8+`RT^bo-ZFpG<2z8XPkrFtk`z2pBEsQ1EZo@q}dm zY9mq3%6E11dXQ{EKV-JZ8@EFu1Kvq}uqt7$zPRc5ll~8=)MN1{?#s7BL>%$|lQH=J zf0$IIZtd`&L$#X5GDNeN5hKnsJT&TE2-V_8xu)z=5o(VH&E4tKXDT;DR66Bv*Uh(7xte3E54{8~b zxN}M}Y=(sb0eU*F`w(Q}?V6=BCBrNC`vtUDEs5X2Qa0Rh`QP)FndLcFXBF8jEei}R)h9)K9t;&5 zRvGRUDN=GQ=k12n%~mIe5;niYp$U$X<#EXR{G?^gS@gsLOko3}%CJhTVrQ@GW-$)Q{!^o$VdBuzIE^|(Eyh%X(C{@$qC;*B(vWoOK2cM&K})&a@D6RL zKtV;cgjiuiJ!T0~T4TUrgoVar(SSC@SYxif(>Ko0u!zFs?;p{wU@oA86 zoiGHc)xp|VwB+$tluXKuBD-VAG1HSUR8`e_ZQ2Z>3u(Ey4jk<{5<<21c=m|6IyiU6 zNm63&)^s)6iQ@Yh?H}F=Kk98DGDv;G`rWXNOfE!V20&AHrZSEa{9;RrMu%zR(-S*1 z?4GCk?JkmQ&4=$aCA4U1jq$Z8(Y0KOx-xjw7~GGr*d!wok?>QH#IXUhjmbt5N&BLw z&}8b&EraY!ZZJ$O6DPgme>6CJc=C$I?wXC#{jqH-MN6aTkm@@oo0maO=TBZKwWhVCg%t0ck75b%>7g7fo5u5q9?9%UNv3V+eY zcPFKH^C>>G7)gLh6(;Bgk~tbdxCEs2%|7}UIe~mbQxchE6fmg5I%t7>e@dWRgbrXs ztj66U?9oa|U}xf9mEp%YqLF}il|vzl-Uv-xUGllD%6xPOCD<<#6&#qokp#Ss8>E(!{!btSj0}^VLT=kT7CIIOdKiGrIQ!JyJI~cz5ZhiqT-zR zTX3KFbr#}*NB9X=1N)RTw|z65-058HDrDcP0^0}kMjI)TlXc|p_?(0j)<}budE!rx zij1T9B>nu>T(%6>9eCg)=P)EaX88_2h&YitM)P+4u?Y71D8YuwhKE|@Q)^g=GnXwX z<6?=)-Q``S&q9HtVBYn(2gZ)GcDmYDJ>VFxJUf6>nfehNb7ur$Gs}rIHA`8!Ik6Uh zUlEEwgRry&C&3XZ76}TbeJjdY^?WntDcuU_^|yJsl?!pJ(8>oNT>Zd|j}^g5G??=@ zJ_=+aF*rd14$mzJ@Z3> zv2s(MXlYahr(R1DsXsMM3#Fhh;J4+f_$;8Kj2Gp5p)`TyXyt9n1n9^!IkU~6zztz> z9rQP0@nHXlx+$7icqQSPLc7F8{9XVsx>%a36BpDYW?Ui_sh)$}ho!wmcsLKnL^!Nm ze>DCOw4)HGr#~&Y;($JyCOO5T!IFyD1^f$ZMp=zgEz2Yn(rxez?0n7$_+AA{iHpcNBA5*0;F@eb`Upo0Cdh_HGl=j ztq*F~T}3j22J-Ana2WrVT*{a?GmNfWnuKZVo(LeRB9elbZF0I*|7&g`FpMh*94cK0fbSv(k9fPdxk!5yoM}|E-9di zQ|*l5q^LxmGrJ?jkvU^Hn_h1Mwjgnb@w})K=U!0m!(h?=?h=Hr;F#--=KG;7p|sQt zWPo7L!JK)vBm^rtdf3HetQi)4zmwIDS|L_uEf^!skROdO_Y~d`^qHBkgfW0MyTTF8 z`sPQ!2O_HnnDs3MQEM>Qx6iP;0EE5(X@#O;yVvU-7yCxu%lad-I%=t;@|4PA_HH{$AzR9UU%@%3)aR4_SwEq zL4+3n{KOAz-3wV9Bm4Xf6oFWCczAEB*>lYZz8R?pZ!3qz29Ob+OvYVH!TyDqqEeV3 zJZ#DtOq}P6dznA1v(%`uQg4h5yFBn9Ltkec<$j ztYN-My$bQG@)|s0p?`k!#Nod}#x}ezS=Zit>jge@T*Ub94l&)6eLRVJ-pKF-6b_>49_oG_Ix3*hfcUUuM7IJtF^w^%6Iyx7A!mXMd5sJEbYEK{;beg)>eC!F|TR4b26`~ zxm%m2eldloe^`{fnwK^@HLZKFGOy{mbJhC#5CPGZYyQbLcyGi9ECbCgfVWP=aLmYg zBZgmw(fxU+ky;4uKdhhS^{y^H-Sh?epK-@=1=JkZH@$TIe{CoH*PiC@h|k{L&eZ9D z^ls{!9@yV{H+vFKRL}WAC!4cbu%>8~u^67Jh1Rm{t!k7OH{{B}VYi^RlV6w-MDn&Wr9)Ulm6+p$hpQM8;*wI=s@bGp-<&op10 z&zq^A_x-9r+;^{`ml;VG)Z{XenHy5dWC3PoF6s>-h33KOXjqqjThkp`#9Nntmec~k zFxj#X8g!Uj)0gCAvQaG61#yKp#sg(i&q;dc=G$O}xA?Xew|>F~co+o}u3DRlfPpMl zC?J}xa!3r0z_d{s=I$#4zqOTGmUdAN+Nt*;LwVk6?ih`Is+e;Fd50mqwriZfxVwq& zZ}$I~&(=3Y{(~WE();2korDd~#-QOQ`@7zreu*hhqseWg3EU;a-C@#U(B&l;a}g&O zhR-bd>!jWy!&K4{!AL4jhofgk*5?|NGl5Mc0P;(i!~Q&_s>7MZ-ism-ty8fN4G1*l zDr<$(9;0p8qzFSGFh?^|XuaBm^Xww%M-+{8*1NTf8@C2#(*Sm3ql9*M zm9>~&`{97cnT-@_tAv%N73M_q>p@-UC#KCdF(j&X!5=#E<+$nG)6OQN3Z%kTs&y;7 zNd)OmpOPn+>W%_NWrn>ZMQ7<_^KM|F4kCSf>u??)AXHv+;*QFr+@unJ2TnwjK8HiY;FAR8pbtt=_$#Sw4FX_BBPS4 zWDRCwvYkvz2F*bIyMk~XFE;ah~3)3Vri{B_)*CK?{SLGoNgg?%6&oz+n=8VHZE1Nfe}J$!>H`RNiV-6 zAW~OX?X@}mtx=CvJ9VER;dpY{kKP7Z=rQbi^zF27;Q`l!14(2imQphrrMlUJ7u80& z!bx)Dv@-J6kuoN$9k+i1#sBnZkXA%I?{*a#5a#Yx$5ntC;gkGRvtw7I`puLOdXpA0 za_iSKn{$XvUs3)Jm^gz_^^r*Ve@OevuDF6QO#%Uey9W#I?g4@XX)L(AOXKbVg1bAx z8h3YZ+^umZxVsKJv-@%9%sKNHZq=<<9!mzzTot6Kb(kYai7I)E4@gq|G%jUzS!b_W zLEG6uK0Z5+O znpZL}pQ_lY&f@LkhhVhRPqPku(nS*GfQ!*^DS{29OQ3hiQ*`{U5{i@>hBGlA!ZS&> zqJ0T~#+^7J-2Cz@*L`7~7n76LrbNs1S8J)%{nf@b);ESK^H|sNylGFJM$7 z_!7oZG{=5MoY{v2e2vWWXc6hb~v;8Di`^^JmBH;I6~82Yy$;aRb0bM{2|&#s=u&7V=yoG%|7RT(Ht zy%|0nx;W>eajk}w)q3QSq(xeq4~|jkhOq7OCP;opyotZO$29HEJ*E)?^uXlL#>njtQ?(DC+`&;F3T-K zN7VsGrKAVoRk!#o)VWeh>d*4#a}8+ZvBRe>u~=)y->sMetpLFxzePXL!C0n%U;PwzdI)B7DA{Rb z?91~mcqM#j%y=ihM1E(r_rcfC+JS!syVc)QK@Y>J{xbG!myGYa8_G%nCh32* z>3Rq+B+9>(uObgI~$th{26${=Q7o zLD(L!t3mcOJ7?Oi(O)IGa`f_NBmO?WOCjn{94M)_R>UIZb*@@J;fibiF;E;`qZu=BIjM=~}qzXkG7h1{t|s z-Iz8Kd+SDe=@1e+=bM%9#?q+@8Mwp=JY641cz|ar;{)5#w2vQoFA|eHI}fXlK{sPc z6=PF;rhLi5I8XpwwjdaB2B0$4#CzQO1|sGIDd4uermH)UfYJPl<8<$ZD2~g z0!NL9_BY6aJ_wL_wc8_vfwEa%&X4v zV&NWObff51wR9Rv?7fEev*E@4I90|uQd+lmbHx@g_?QO$xH-^`*3xU$Hgo_{O#f)E z8?!mWjSHC#S)aa$f4z@Y%ue+IxCHIyt|}F*L+@iteKd0$=7HVxxY74{mt=-e37Pa& z0gGQE&hP-0ppMcc3c!&tl9SZAI=q|%hBNXsU$a$V3fWqx3M(olM2|E)Fv3)lvDc)k z?kJjyqZJ`>Zvnm3ML|W1PO`eYnjotq3bC9rUwD=swiX+Ra3HE)#<<7^)VE6WpSugu zOd%g4jksaw)Lv=~ath`4%rvg ze%V-!Rm*w;8VcFrjPs4+PSS2P#+ns3Gd7QSf6Y8DnMx!q|+Wi7C-$p$*QyndbLKO0e(|eRVM{4+9 zka)u&0)M=teNPb-tUO3W)(%3&!uqOg#itr;ryAU4>~3#n8*`(8ADSovteR$OLh~VfK;fTR3^#LPu*PVjUS@rStXSup86?Qh8 z)KB{k46I9(Yx15Oq|aEd!rw^vx;H0{{r>u~C;Q+$mrxCH8Y1`CPKVi;Y@5}G#TCcH zJz)C_1Ywxy^r0-@$F*r66m_lO_w(wiBSM@HK(MkE;8>LIbsFLX|C0IV2dFp$E|D%; z%~qNB7jG#t()fBL;-`&+=^;*C{L}iEAE5cmLzwSYMx|j2*J-;tSDIM*<)-m6H5)bU zB+`}G3;DzIy`MU5xA&GUWJZz_6Y8B4Ct1J3Sgqe0Nv$P0zoU?gO%CFt_8uY$Hug$? zG;NK6R~o;wvi$xt`ypI3e=+ofBH8*eLH+-^-Tz~-_+xqk8d}=^Kl$L&2Utw-u1jeh z^!<}jb&UnCh!us0;c_BowFb2OY;)3Yjc7U$9f8c^m4T&18iB|vxAeWwhFpp>%38*h zT5P@j@~qRcljqZF`%MLl$Dv=h<#QW_W^zppwy=fszqb1o-wnsE$7etN4g>>XTMGy! zYoZeX9GTg500GOI`mSH0sC%mEE%RC0SD7q(OkNb|vomRnX&9`)Ugue2%e5I~rnite zbq0racRxAWlL|Hk6Ajz!uNb(?gV!}LVZI18WwMyx6X9ax9 ziO{+PH0HQPvWrURE=G`?y6?Yz(s;JTw0^6xbNDST}eH?F_S zNpjU|J#kvMparvT+Gz@gQGS&Ao^XG;&|{>y5| zh!OGqmT!RTG^5&XiRSO@-Sp^zY9cfX2*uPQE{K0UQt0<7>>-cE4hV=_zz{1BTKJiF z!Y`y8<4e@UQ6w-O(ZL@th2X5z3Lth-GN38s7OAcmnT2O7H6q5a(;YZ#1LL@fK@MSl?;`j`O)`EFj>ljc3GU5&1 zAtbRCzH2fD?R=KdBujQXim!;jU&k@4qOEtf(xUSYiI%*S=jI1FD{7hx?9CgG8$@8RiZ~!0`Ksu-U)6~*Q7ukL@zUIzp z1)oZR)QU8a6*eQ`8qZ&e6bp9*c}D|kzW+>Y$8KF5*|99#&y2p`mNrtnPY~eZgne3+ zeN&~J$0Ui_q8qbdRo5|WfZ=x>Ne5mXhHKt{5gT_#6lW7k3Gp{Hlh)Uw&@)N1D9Xml znrZv@oiz~IOg9RYg@E+tIL`D^*ZkqM^W4^IO~fEjrgo3?3Gw%e+*Rmjfy-n2o;FZf z%Qf>S{uaHnMs4dR>B0^iof&(@&2BJdv5~vP=Ec+Et*4LNI6<6ajZ(Ec+6nM_L0#Qy z%JlPH{h4^V>?{*HI&u-z?EOeNfyM=qDt0HW^_AjKI#gA=vjVnXUQnnr3E8~0~a(Y$w+Cy!0 z)n-|PXQ{O9+^jv42t%|oWbslCWy8W@w!&cMl8Lbv$m1Nte^;(rT+&!*C)=i$*0=Pa z0ZwNlX$Ze!+g41hR21MPmrJ5k^v)pr{;lI{Oj-BOOWld@nulIt?U|<7S7E`h2(vQ9 zJzQG?2zC=KiN%Rn-lOAboy+uXChpY1co#4z8$}$zjNF}&2Mp!NiDJF_53g;j3dNV8 zFk!PvenlM&_rLl=TNtHr;_sjS8087M(!`^LC@H?kZVGvNnVa7aTp+yw`dCuZT?U%M z!48XDc;AV;z;+rxKq)of)7MjUj*TW6>q?9*|4faJ?3JCQyE(f)zR-VCe2EqjSY*AG zPWquryl9`*F*o*4lZX)tb+c22C-4V*%W@@`R-l#Kw<5E`I}RzbWEXl{`BE%sPvSiv z0B=N);$BrCDfCg!hKjfCenyX9&wKQ5>(Gv|0qO&93Fz&$<_LujS19djRUb(MqQi`- zfm`lQ;6Kkn&emy;;4DDFg8~_eyU)SoK}V#;0l#Yp=MBwGv@`OCPJi-N#una@3L7Rt zrw4&xpep4yan)b_zu~{*hHz|D3$~^LRohJ|F=Jj(1mHp{jr3Qx;EU{<_VCyaj^~j(9O^9*Nc2k$p$=jqL&(?&$OS`#EK*#ibT+X~hI-F>Stz zIP1~8!xJDhc;ZfyW0z+ShME=gH3jx}e-r5aH zEXfRo*~|`LS55aM`Z2Y;Y0{T5CH_qT(i1{zZM1J zuj}|IN=g>BAQ}CNB-J`Sw1LMMSd=kRBMa`=us$F8Fuxd89A~~yTt3>fqMGg|(4Aig z5C?_-)|}V6a&&bNLlGD1)cIAO;yE%f(eGrYR+d$0M5Smhp-_@)aq=cOzix}Zd`UZR zHK1BpNYpA525=IHD8saiPLZlHvaPYnZqyY1ezwH)ye91|k=VYZ#S^9Q-NCozP!2DH zn~E8Y)+JpcCX@vaw+&FIhUXOy1i{G0*ld-mdL0c+EEQ^X=+G(sYvsvWQ9eyqt(cRA zr)u@qGfgst`xf$AZ#3aK8>!{ZHTn`5_0^`zEJc9-K^cp+Y7*+Qj}`9DLS%9Q&Sq3^awGe=`rrG4p@$vnDz zBUFWe?LR4rt)AAj21vie3ml^20H8}%KoZwE1mb;oDvuCzZo7(V63}wq@x?FA)W;4qx z3ugO)9yo9o?SoC`$;)1)KtjYX@fCrbuIKnY2m4ighO zFBsBQS>RJOi(w%6V$j#xIrNik7uOMEMS7aQ4~mh+YVW$Ii+o{oZQb0u1z|wlD3?SC z>+%m3YY){wU8QY0TBq4|e>Ty*_*Pakv`-J|7vfmH?T;YWx8@UNi;q7yBz>{VFHJ$h_*~PXE@!br|%rz@*yejYQAXuc%B@v~%`!5vi#q?{r44y>pyyMFeb; z%Y@UCmATyK*0HgpsYZ3As+Q0FO9|(_gy-A*%Z_@Q*#YjVVP4~^Z7tI4J92iDFI>|z z-C>|C)CLAmpOnVY+?CeN8ETO(bup-7KTBAt|EfhZ8wJQ;Zz!iuZv)Ev*V()8TvU>4WDe9P0EUj-_9HHq^W3ayVIox(- zHBkYyOc2_;`(@Y35c^zsMB!OkiLIV(jT;cN)Bv?aHncc# zb+vf=ZOlB2WCa~IEO`$x=VRcqDZPryyF1FGuLdk7@_0gFZ{vm>R49_YdlrJ zxXG9F?55C5*oy%;E@qnyxN%0c1$+_yz^I_u%3-r@FQl=5>*)Fu%r5HI3*|K_7EBHI z*iq37cddh^32=ZHeoujlVG*PLG;0KZMsE0iwWBFBGHzY`NTwC?XvB&cSI$x6euz~K zOuT}@KGRW|qAt5QZf`qae8Kknywuy9oQR9T0mf>sutj3Ls&)jw5s{+?mcUL}Zq!D| zR_5)R>l|8)h|&IjaJ0jyzyfdFwYb_Cw>Mrc;t)?Y%*g3}47G(>gWJ5-izh;{8%%iO zZo~8lxLty2=hwAX`9ucEarG8T`Mea-Y_7ybrB$9wtI+Q>yPAGirMx%f_~xK{Yv>+r z)XywOJ%ijGkuB1=^2#iXWm73j?VqO6#kDxu(rww?%%#v2766-JAj0RKc0n$ex=$O( z+KC21#!yV{1GM(fi=mR9+r--rX?9joS?Z6SRr7P)-YUpwa^46qu{zT2Pf8q!ZBg$n z)qr)U0FqC63K#2L?a42H_iaTXD0@BQ?z8q9N>&UhPljBM1qr7|hZS*5GEJD@pFbg0 zxDv5-%PbMCP{P@kkZfe=1C3=U*k*83JX=S&Zal3yTH6G8IBzAtpNrURG(FSB|8imt zF9(HR)61>>yosa{GPCJH1-_-4?3ThoLUa>`EUX+%CEDiKX9?9Zs~eS%zKj%D*mBCtFFrp?2LEc`dJO-W2h)ghR8HrsVe@RrM}D~` zxeazpb)OVca(7q8nX5($hxmmNu=?o|SwD1Mdzo2odI;BHBklFeOqB5{F5*#n2yljh zBjLA55rlaFdMqOUrlV;B<7fuZRXKKm`@wtjdIDd^Tw10-m-f}BL%WWMf_F8v8Zk(= zTRZi_1!-E(nD1k6N@CS*cUNZCNsKF4^4ONq&JL;*U`W-0EN(Vr7+5nA5E`uGeRZ&( z#r7=2q^7oQS=%J{oDt;>5n&Pop;yJiL$BCMsjlu%&X3_sybh%gtP}AuP&+NoW zyFj-KS^#)j282S?(gzRiM$CqoSs9nq-Y#g6_yjm;s&~>!hNWTLM}$UVDI5 zTYcP(STdeuoQLOFxxryj5Q)5;ldNe!qcR%D7z|C}?vAxe=7wf|{rA#-(eV26^-&x7 z94);i^MMd|P@(tQ<@yaLJPW(YZl7yXHUrR-{Zh*rO~`IxQ7e$il>OOK_Lv&%Ad^R( zNE;IS#+na7&L^qgf#-=8lkt(#D(mo(+K2d8SwW4qW}Hnn<|fiEh=%>!{dglw!Xk6# z#U&JoGJ`HWbT)t`omD zAxH!DqY;Q~+zl_pCL)YnjIc%_3+YB~`=wSF!AHzJVZ-bY_626z^|6R_*{YLjfpp=X zq=NCbthTzoGultKK0?FiOm(MC0{O0^rOP8N`ibQI~QXJIfS}~w?ENNSNF70J`AZa1hw{q zzbjN=b(#jp+GRt8p$T=q@HM0dB@(jBSY6HEreYmI`oj;+!EaDdfvLC56B#A%sL+L@ zY#{rtIldzl?=}@By-yaK>aQ!feqdj9xm2(jbL_xg0w}Ch{Go|RCx`axXfzV_voP|rQ1Y{I zT!lsXvZ9h<1GAcRXQh7PTB)%-UKX@+*U{tGY$2A5_WSrI__$S*G(K2qo%Y_{$M9O{ zv+G{mo=7i>UQHuJSt9#8Y$IU(*wycP4Vd7z(z=XyPlZ1bFxZf|2nqo|up5Ikr1fOb zcX;Z9FJ88n^A2ZxA98;Z1)TXAFIbhShYawf6ZfAQK_tq?1&@HAeo)Rx#CTMqc!hsO!#cW$;(P zfpthVL!HHCyq}jZ_~O(e^c-?t^AJ0LfX6ZI7Q!gBdInE0-MxR87$pg5F|2IZch0X+ z!=1wYvZ#J(L6Kuu*I7;UqdAd%f?R}`x`n8?ozx3aRxm@m!_-+$4F;JI0Rivsf8V_vSq>Z~Z# zrp~VfMk6pi@^m6Fw-6b}sI9GOv(@%i7biHhnr>+0a2hTBBA&iCv*TGR5X;DRqFw6f z%jgbvNX55y;drnd5CGd~+V%;RQ9VJTA$(x5dc*B?faB0ashZca^};IQLgawVLMws9 z(pmz(;YsVDzJnf-ypLOo?rYTQUMs%qDf^m`{n~!pS>efzzLu_Oxd?KG0i)??)LPxA zB#FTWSG>iKCCFf?g&EPAG>rZx#++n32Wn=eDF5D6HG@O`52(NzYS9?Nb zx*|l_`d3d&v0(fyhm!|t9(AfmYUV?Xz^tkI(ZAAREej8W*voD%7P2&h)IaCSe`nxh zeeE)Zxcqj>z;}i*jnkDind{hw_9VYIS;tMvERvoWmU1wzUkb_vDLlsUGz0YOr!NhJXU z0VtwxiL#A>n3|NM!*fH_zP3ozSZC$ps0c~2r$!s()CIqgm7^3z$>+(^2*^?E`%}5D)lprmVv(lAqhze& z(bDt9gE+-ZkNiQCCPi#m#Krx;C}-Fkp!z46fF~BXM;`-kB@@0U_xXzQU;L_y7Ab@% zu8`rmco6kpT7xs0B>Z5`KGUNqkeg|G@65cJg-dFLsCJD~G2t^R>7q76Lq!7{Dei3?H-VAqXi(b2hVLYF`CcheV|Mf5c&Le|=8{C&|ad-LnydmhrRU;1*B z?4__7F>O9ggX!jUHB1Yu@}LPW)UBeq{@3otkw<_{h$;ZoX97ELQsCz_E%6GIrMGwVc$&yxzkB&NPGy%tm0VhE= zk|T4v5EvLPkVO0v*B%L#gi#i5TI(e0)E`x`*~Zpi{jFhVK0m^6DOWW?BvypOcjQRY z8{}JkfRo6ee3PRxGTbG!sJefwv+G)4ztK4_LsSg08}kc+oOd2;&Y~z{j%GJWknMg~ zdCnBDFTHcxuzAi!F=qY+LcZyd1N!v?0?K-s%${o5@jK7D0zDg{$N4wq4cW%Gi}ww! z_e9LLO)S@>lJfwKi>}+rk*m_Ei*wH2jjQ);%(iduZ0xs@I5`;$0vX+pA%IAc31icv z7L!q)50y*$$yab|t?wVVrA_Ta^y{Q8t#hxzNZ?(V1Q*ncd zZoX6cRrR}5uF8S3d4hp52qDMyqNC#JFn&r#Jne!apf^M#HJQuL6r<(})|Pc>I^TO< zxU6>j*(hkD2>3iWzhN=eKBvYhe}GWoL$vi1HN7NEh0{y}39-i;iK+fNG$V7PWZ=en zf}-Uyn}t3#A=hn{#;ArXkY;^*UcY#`urx@|Zp>^pW5^_H?Lq&banvdKPsKF|GogCI zB+YZBlu|q7KHAB=y{zA)U`ZFW-q*yGR@Gc*8JlaP4dh27T2R%|KQLQdaje2Ix}7yt z*@AmH8?Si%5w;e0jGgxMg^EtF#jLeZApy9Ss#&BPQ;jU7XoSd~Ndh)y&5iL?irDND_W{%T1Ky%)!GydXQE)KYG*zz%Oo3#Ke*$BIm5=l(M>Zysw;7m-qSTAb@ODEe?Ar^EgKR; zSkRySP;AMb1<%$}C~mkb>Z98*1$1IWByQF+u)&YBq%D`ITjW+WWx?M{8-Y~G5bj})Vkuf6{V_|wZb}L=hxXg zh&!jLYr>U95wk9dfK~nLLuRCD>j?d34ugL~w>GsT?TQL*6pcs=R@Fh0JOs~_iQB$; zmpSXIVLox5!f7NSFqAz_CMl{8s45-?sfyvsoP0V=32TWEv=6uFLuoQ)i6#= zx?u!ErXbn#-xB)6w<=28OS#Fc<{89g zE1rpk%DlAG#$%L{)7QR4UZ}^hghPsx*bV%gB&zEzL~6H5IDJ!>_bX9P#k( zl_Xy5p1zB1c`DSth&^}1liNLahi2K05FP4Yu*O-W(H9u(ud!aLtKcA>sGq){*S}-3 zbe8tVxf`}!SOdQP!IK=l!6Jk9?y4*z0SoA>Z(Fq2iGsTRG^W0GOVDeou4`6QiZH2^ z<6T6MzcwXl{Jt3+x|voyvnA*G;B^I%fBx=Vcg|Y%(Gq4HKtC1OQZwhSTZj}RLgPA zl(SuKeR#@6k!<08ZgWEj`O@yj&VR{$hy#V`6-D8Q*1v4ds^HjT>$A0XX^D zjT8Eb2i^Q-CQo)`u0Xo!nGT1BQ%KW#;Um%b_NVLzH!3y5(|Pt+#85USWnjp!yl9Uu z%RdzMw%eW)FG`ZHwAQPHl5ST+VI0*@)_`*Gk!hMQRzLG=8`g20Q~YhwP}gUm5A8N6I$&u@t~I;CoPW5HN31EW&L1Z zXucMpQmv(G24`qcC(dW#imeVf)*Lhqrd9k|Ynw(8&R$@W`ESAsR!$I5CYommaHg1c zV6RKNRnjrQ)ecZ3@IAlQHh~M1`Jx3zMUo|=<3-MyaLgC?$l`ks~%|-+`ZiPaiYE%InVP7Jqb?~Q-F(WE@abKEYS%z@A73jwA zMbsYTm+VyXqT30k`>fa_${!DCTedqj{4iu{_-keVu*Q}XyA!q*#P~9Q7hjzcK%jjkmBnv4xM7 zjC+QLGOKRuQ1UC7RsKNWnRaFX?|RuxFevF1_IpSfE9TTw&Kc zl+3cZxDW7=-lW19FxmlTz5$I}bDF8p5pKSqepUB>R%wrgufcbysBFp1Qa9FAl@fW@ zCi`x8DsUOh5lCC^_huTEv`t1GD+M%c>2hfMmzpPMXN)N}TzZ=OaLy`T>G{wJT9Gz2$FYApEJ0XTHB@X16U0(i z9*00P7zz%4fhEoz%7kX38iWF?bVj|=fmG2PNoF^|WU8o_FIzSljtT>HLyH1t{>Z_ZCtde*WiO__Aq4}S>nv2)+y=P zW>j7ClM#0`QvTYdZdF<-5I+J2?FbTCGdLbCz|rHtwkWF5@`k zE@f&^L7 z^ST^w=7n4xm%;i$8G_2rJs&9b_VbV+!z$J=By5veXNQ33Fv9(v{IDS}X`ylIDLWNI z<)F7d8`32XPR?gbBEj zBkriFGfCyeZBGodw1iRRk(f)Vc~UQE8i6}c=A7OP?c?;| zZ2oS{;{$8iMc*OMnYUId=U7r>xdrAhn^mtFp_mbvsI>!9@A27Y7@ho;jJ;DltY|pH zvSXsJ=dLpG1YdbzBXm)BV4bLINnA3j$TR{r8Wbi|h4lLfW2Dcqt>1Wf@+;oI)tQg| z9jqSNnGu-%U@s*p=$hU}n%?lLd5L=d8(>K0#CFaQ)A`H0uTc!c4aR)Ib@T>!y5$Ey-8Ajqltk4}q(&)_SJ}y&zfF28Xz4+| z&=?!~67l&+dV+g(jMTTv`xKA&gcowvEZfx`|K@%A{mja{J=*wnT&J@djV<`d?SgzG zX`SN0@b-gdlLIWL!kk^#sNNU|SCBbJXydosJ+L~CR7Gl-pLdZm9)lFc?R(8|n4O^O zXamzk&BgFJkm(}no&^gYI&ZQYBVZxg3_vx<_X^x>HegrGoN(-V9qpHru(GHn;a^E% zH5y#HrW^D4J;L2blTzn2u2Fv#pgt2!KNV|lGu&$KaB@u6va4Nl3>|46zRu7W`o2-g zUue}N2o=`k_|nX>T*~UB4_hpy{X_ zGuz@Dr|gV?h1mdcS%~W)pP{_N zI5XIp9aCIr*?buz&F?3zUM4LR&SnC7Ds{bn6$)67a?fxh4l&?NEjBT2H zt`0LIN;0kx(@vrE?hS=7Ve))o89&_UX`#rY%t!QR3lkvD@%TcNuwF%xmVRv4)r>HKeu&(Vsy~H=n%&XUL+|1i6?)C~bO2Ql!-X5zLuQM@otBpEkay$hf{oJ%j^?GiuLjSJCX z!X&q$-)clyF>EpR!R63zqIEcIcK~`I_QWZj)S(o!%D953z%MvL(;c5$W~fen?-RuN9sNK zhNVeHx;SX1@e%1js7vt%J3d@xL?^#{1V8lhULybUbB zioUU{*R~l7X^d!ZRBqilJ$V}kvybt|03v5&fotKO?I&&j8s zXWmO2rc?Scmj=XMB$M1pErnv=cDRx8X-GKXb`t>J{*9>$~ zsrR;=;oK@^6FzT+uy?YMn1Xj?)YV$# zDI`7MAA5g$)rXA3f>0HT_ALxZnSL9OusXg$Y%$d*ral-7jbuxRL$|uH1iMGl?}Doekp85P>_%&u z5|)&t4x-p$ctln&B=1ANpa=nFiE+~%A|JhXELfp+R1>JEm4oK3Q?d%Ey4D{f-Gghw z$`aG%4LpU=WBUQW;P^6DO)9KbBd2es14R&7(~xS}hXPZ%{aI_(nEBzP2aU>!Ej!lg zuWMwT$nZ;{lsn020=LNS9y!e{q;@>(+581~Y!bK35Lvm96OkKFy7)&)(ae(-yHDET zwHdm_+3+a?Pp43`Q)9y~gPH#AUZ`~%c)_Of!3CODD?7g1cWfbUsrfdg;EfBm^_qhe zlLjQF@}RIr3__75XnL!tyms-~YHi26$vX_xVN=cFJP0Cp*30@EJR)&dMtOT9vTV8F zS6F|clMcSm;W3HN zSR%51La9f-YlNGEDgZ|8PyAf=!7&&iKu+k9J(j9#SusVEugloT2%K)DFk|SZ?#;qV$Uv@w|_4io1F(Wy8!j!sP7D$8UrUV zw8@CQOLhD=b{H=+AIfRmK$0L+A$OX@D_Spb@ed+v6|!r550z`7fY4c`|M8hrh)N1w zHzylDT_D40LGK#Qom4SgQ5lYb7JmKECjW62uRJ)f;aHbbh>*+nm;a+-bse&8bjt7I z;8!pg9;>BFi|Qw{@E%%%)!#ky)B~|!bkky16WqN!nidoUS4*IjdkyN5&qUzwIh@Bp z)h_|iW1j*r(~+r`W^eZ+xHO@}o$xhQV9 ze>~|9%5VRzR7%TNS}_h1G@c*CHaNqHOzKHk=!0}=Z3J0u{PL$$WtE3hSmGtm`q3;M z^AZg$TNQB0{*bNP|CLuBe~^O>?kKNF4i0b@+abM0@)TXE?^PcfErgesVC!-MDKq0ZP$*jJBR@y26yhbkX=`cN$zeFS@_-r zJysDQXnOHGDeBI@725P9wMPBS8G2h7k(CD#G`xvLG(@Q+;5STsR#$FGFP#g;k!#SJ zXnFjtpP=F{Q7!}5_T7rtI7*sD5H=MK)=Qd>57BBefis{@qK`f;t&fPM+DPpawP4S> z5^61ULb_GO_h`hF#~10^rag4n)Q!*2QhakHuH8kF{N~7BGN{V_EppXWi5Z%4(dO@$ z9$%OP6>W2&oYD=1>6*9|HbRp=jIhp-<5%drKU1fY@7*o9=HGE=1daJf!lr^ga}?V2 zFa;$2I_9j>S8wufU!qjsyr&u%B_2*-eut7~>e2VU8s`^0aBzD8fu0 z9_kzBLCZ=7@F|_G|HHVu$bRDj(RXuFrZVi+3&o@=e?7qPqU+Y7gy@g>RFth2SC_X5 zKO)1XMt+8u;%h_m`_5VH_owCK{J-o=^G$+EXeJg`HH3)^pk^aBf6(E@=Vumk*efup z`O`_*$0k<1lGMd@YJs4zLJT?+LvFpsx;tE&p~qkXV3kNr^@TM}|GsJELS6eB|G3gLpW$UZbgp5zXB4?$ zQw2WD6zHtH`2Y5@?0}Y~2vDO_`1{hB>id_OU;2|7UXK!;g5|!D{d*<|>N?6GEz$hj z>s-yBeW+?dP7|$B%4IBuNj3j4Df`gGe@g`sHGc}G&cu9vLysv0h!wWGLs@wRCw+~B4+zx( zN zwLygfe8Te|Q=rEt115fS+Lfbu-KbR6OnnI159w^X6S@mt(B1ar`rB(nwcAUj!akI) zCcs^)yKV%xgq>(5-x>7AKe}`~qZo=d--yClae~lE^XA=M<^CM9!t}CSmDEy55>LO^ zmrq|4&Bxk!s&(Q$(I+9n7~ez!RtNNVay9zlgMbOQD>aK4@=RSkbsSNAJ&2+U zUec)+39g%V&9PBV}&+{CXKSIONof%R0V_*Z{1Jxn_vjVsRC?5KoYEdAHVzBoY%GoUa=Q<{Us;>}{bwN+r4>^wk|+xCWVS>A4j2<@=Fm@3aUl)b_Km2s zz1JK+K4HRBbY-&+vUDJi#;zf``xOdo%`we~_M&#l(Q~VYYG@N9X3$ ztN#g=ZMZVP$;6#?5c;lt!pnTqf&*v)Mh0%p5Y4OynO~HxQvBqRa3R+k_8F*UJ&L>y zbQND!&@8X~tzkswsT9EzR$8n0rr)CAwug?X)ecqPA~-wS(&Fg-oH=dxKJJv^wAZ=F@>rXza0;~P_VYhd-_eo4~ z{;Vr3KTrUmwfmVm8<&xYO9ry!ieD^MD1fio6~Eq`2`XibM{&J1ZZvsSI<_u+Mw`F> zjV=A>XTSNp2__J6nlS0xJ@l$BFcyK}N76W@g6aZ(hdi;G$qXwampmW-%33c)FD&AA zNewMTQX^CmIo3c~(<`xNb$$;HwT+*7tge~nMCn{tL3D824ne(!-D({5av`gg(&ewt zEST4X3GVSr`W~^DBGto^t?V06Gkc|GarkGKqExW_63Rk!^2FXC_wF2YCxap|Se6faf7gv-WsWO`V#vwaP!pLrcEhaIz4@J(soRBj%+dx*%VNJY8o zKr550fOKIrkF+`V@o%j@Tcxa$tk@W(iE9z{ERrp&#^$~a@0Bi%nT#Vp7LovIy8Px^ zD2@9LTipDu`+u!?#bX)`E6Obg?wMY}XQ)@uND~^nf5akPde`OlI&XMc$d-+Me>xfgn< z1Y2}u&9yLt&+w)SZVf$od60UAsdR=`dRDNc0{-i=#7k8u2>ZDkD-bUS+<}Ifo5imMS5itd(p! zTT}kElB`TO{N>mhW*_B|+X~Mblk#Fye_8K)c}?iVAHyXt_t`cbEK=W!!aU|nklo(n z7|xI`(Nt9}t+Z3#zUQ4RJgn{1wn#|-@uKPu?3*mmPAz5QJgM$Dq6 z-ej(OtnE<3NnYRuL}1VL2;rd@Mnenw!za~kVkJuj=3CRld(}YP^;FAU@f8PCk95k%I;%s|i$&Xu4s0b%f$pC#SCgrEA znynYeAY87nEdu7hh`$2wv3dP)@qD|0>~pq10$pfew31cT`R^F<%{YXkEqp{ERWs5Y z=TidAJ5PV5qute6=*9iYd2u=2v|I{$4_v3&tBd(Xr}4gcgFj}U7`jHpXr-%iyU%=E zQLAJ7=x5U{@H7LhR8^P$TDL+R-z$WIg3JycOUN*2+vP;uWz0w`HDs%LT@c_C1Z6K3 z%NI z>b_B=Yj+lO*D-6es`ICbn!WO|nz0VUb_3;)X_2g|e%|#x7D)Dicf0<&)G)`XQ=Dd4 zx1`(WS+*7XLDqtF^H>z_8#>}@(){-RW(}xHkqxcjB$K`!_~FWb_@UF*yCO$^o^jp) zy1Wu{moW3Q5(lQ)4%-U4OdjDH0!aB8s>T*u$WD$D<|bn&iUuB}Uv3?BV3=N%y{GOM z(*8*Iw)4~unME1Hm$Hg^u_q(fXB1`M^Y>ck&p7O+j2ohN^!IJ{T6!;ph5;>$e-xX9MEeLLpq1BbK= zOi^6J1)@8dt&qi_$gcHoueBexFxc+m+}WX*KSEn?1QYa8j_^)mtF~i;ZQ7kP{+Kdn zcPlD?q1QV9#n~*lj;-$17w4hw+%JdF)zbvnjjfLTyDAf}&da=njw4gs$Xvb8JKS*J z7~uV48<4)ve2>R5q{qKg-pZS+5;E`R%Ra`|sab@ZZb_hxa|-^yDY ztE1!O8+RN#D0#u&35H8v96J=FY?+?BT44)*Px7@f-h#flAtyxWMr3|#16g)1v=FRJ z*N_ZdfulZ9Iyvo|R5*mbzgbHXAr~q!a|3K$Ko?~O$L7g=CsbHWKgZTcTQy z9U7@M=CWR>rhwIx`6f<(WLAWcx>dpq8wAXn9IEjkA}>Win#K%A@x9T1P%=s)TI7$3$25X%}w&O+M(1d zA7&Ugz|HiK#0w|>UYK|#E%`P8Mh+>!Z(!+_h69&|L>M>%ndJoGfyoJDv0t`03rliy ztM&T}RUfcGve#6K{{>4*?>+SMo39wn%ub36w;C6mhkl|j&92%J*e(-%+O%9ZMviFP zmq@OZwptO^N5B4Rj?M$qXYRIJ;GY=v9xfeEPwOv*OfTEl&Z-w}p`rAg=l1$n1Y6b# zFy*TKoHynyBz8CeI2y_B$=bBw(`+JI4T;IT&ko%Xa}x-?XLb^L;qVT+&14F*B|2)3 z%a3xFgWgqm4zvh?eUoUvkqm`5<}>3vZ)u#y0<@~jEyqIIos=r{N-Gl`PsY$@t`Kl7 zU6)D2cCYGm2H@jZdT{DmT;iy2;{q^(WBdg2!EJO#e#*6-vJlx_$?TAi$cEcw!>a+> zaijOZTt^<``AGbo{Gk0pv(ax{kNz>oWvjGT_<|j)YHY4$m>d#qfSR^a4(q8Me_sPS zb40U-Os%(qmVZ7ARR&qV!8>uANSS95p5eb5qrXgALfPuTz17y|_&zN4UA<-J+(cFQ zkSg)k>(KNzP~oCa@tErmh&jm1O!s75^votNMi98A&l+$2CJLsSqz|rPHnM-`c0akr z^ltaW`fz%Qa8A)~T^99^v5eHo*TI%_F9gk`rY6~|Nj+l(@&kku_B@IRzk;Q<6He0> z87|X9pV#FgTY?z(gcyv1eWdX)&G&tc^#3*d>ns{Ap6IG?j{;lN}1 zKnUB(&cDUn&V0IC!y5fwkVGq_>oqRiAin1ht_F|_9VbpVNcpjgIoL+$GMVfsNHjB( z!D^Tbhwrd!pViX0#$5f*`K!l<$5h>d=om`&qI9>Xh#DxWxnC%(i zE3b=Jqk&x`i0X^?5649g>RB66*z1pv1 z8QUo=VRPBncFptZ&Hg$6hdEZgsj$NT?c`mP6`|$1N|MUPl>6kR_|k`88VB#oT8Dl< zq`z-3D;-G5rLzn4t)y-IA{(pCo@23ACClUE^bIu>c{@vQ{zM8-@vS_+M(Rp@Q}$7 z*wZzjHViu^Z>Tu%d>QHhqOY-ynRY{z0Gvr(^+cl(L;%-@qZ6PG>?jMUTX(bq)U7${ z0_rv@+aVXg!*)nC@UR;q1<Y6gVW%kk$)v23)Q?+5s-t91Q@M8;5Np7;Jx|imeFOjJArBx) zKSUTfy6yNf38ewp4fzPb*m6WlDggo@js!`e_8zoJp$-jcLtPF00YelG{NY1C8h{-T zR^Xck;D9M%(gE;m{XWs$B(aD1`$*O*Tvoc}`IY}MR)W9D-L;|n^&NS>p9GQ~# z>VabrctFhdDJ(#7^OO>xxOM6T%;^2Qm-L=z=r=Gx{LcK>c<| zFi^i6(gW1*gyaJCdm#{@eg`BGsNVyb2I_Y~YJmEEkaOTlJ0uFY(hV5_u5?05fGfR_ z1K>&rWV@j`eyFLwId#aZzBy@#+1`UR>C)-?MG}VNwK#xu{ZtkxI1EW@xI<1dfSh6i zNFk?IK*3(f22ijA5)brEAF{K*mIt);KvaRgsY6Hh*Lr}=ty3?cZ{`rG{WWURnB%o5 zz^@w;)8HLFlxcsh3h?WNj5XZBCADpyY62fphF0ybbpd{TkfVmXS4n=Gryc+U@Tns3 zA$h3H{#p}Yuz6|+Z0&}uHh3ow`PpA1CzUx~zfCH0x`t1(bG%jrtgfHh09Myd^#G4O zkhTWzn4!ytyU#-y4R;txqz>1tNzkeW^e5g3x-dy}fJvZPy-7<Jx1}P|Nl$=zX|#O<6md=Ra-sI}ICF{6Y@vlpqc5kA7hEglU)b+( zh+GbuyI9(V9?I@SdMo6c@jAcHb~=;Ezi`{(7r_|B_*HO?t|zs#erK4@JC|J&1Q^1Y zC=ey`#Lo`hKI3%>5{)5u78m?gU`*5q8o#(xN~h;>#?6K_&lDIFFGzo)5|Ya=L>Gu2 z*YT}am?m!gI(~kQ$y?KrP4n7Q#g{#ucOLp0P){9Sr*z)sY;!D6S6`HL-oET@Oiy87 z+4RQoY&>jF3txux#^G$u*PiOWR_Tok*|S)lKE8zMjUCxsn4Yq}y6KJ6*>%`A*LSYG zF8QKI)PGjIh4Wj%pn^Na8QmvtJn7Wf`S%g}JwkTbR^RU_D|Da0alfs;-6>sk zpU`nXNZ;O68}W@`HtCkzWWgi%A7hcn)Xc0&a*0X0h&=Y|Fy4c1Dc*M+!-~Ili$!s> z1JB}JJimxih`9K=rIT!pV+Pq~WPYF2<#uKesT)w7-nAjtdFLE@N5b3kLsSwAy1%Sq zItgT450N-NGjGzEm^Wh_>3Ww}U?MvnDIK&bo1f3?tSFMdeL1t+Lez+neG9pq*d;(u z7vD*{YvmP~%|>|bY3M7IF4&)qf~c2}nLQan+!!>Td!5YNGMpWX)yOX-n~&kP6Bk61 zo>?-zSs`cbuh0_fhaT0 zpTRrw^wz=b+1H+Wz7+}vN8^M@Ej)hZ3ajhmi-;}I&4lJd#;`p#TRG?9L43PjXR3;&RO?eMC6;d`8ZicQ!K}4-0I~3QV@jE|)1iwNrOH#L;_#j^jyNByM(M<9` zeAitrH%;jGB-uj!q;Z?KsM$ipq{(7_VmnUPKb&u9(C-Pd+xkgMCfl5M%8>4De1jDp zN3;Fj{kgtl<-HFOeU#fVI1^9zoyca!ym9o+Re0>mF2lOORy7&+}~NIBN4sDN*PLWk>GJ=$-cg; z;Kk-q!{+60lQ5Uyc6Jh}8+Q9Wtbx89GJbHX$E#|;gC2C4P_{EH6?!PQv*WF9?&`3E zFVY8TaxrTbrFqRu=a)7r=emO&C-;#%_>XdvC6JLNTuV>_rU+<)*(ihAR>Qi*c{jS1 zLb{c<5aQ~!%rhL0F_0b{C;=16+eCM&0e&Q5vMyVA=nuFZZDHM}yl1)yj~QSgiFLScv%UeaDf+dI}{c zQqHhfT)l>Qn%H2h*q}E~*q(E5SPp6!B?h@e%SD>psT8$`FQx5x2DS_d5*0IE7-7wJ z4oFgEU`TSE`hcfmGfwL?L~`BifTv+I4tQD{+0C@z6fi*1v1x-BrdzX387~PMSfsD`78XKUFF^T5_V7Yx7L!yZZisz!k%AC!JS0It5v5S#fDiEN_;Kx#2 zS&6Hc^->V@pv-Jej;q)8QuyFOnbmwx;Sh6?7IZ2l;&DddPJ+qVWHLAl!=m{!6M0Z*#)QXgA~dTn=jp63r>}T6xt91?Q_!u9&Jcm@o8l7 zP54Dx@u`%ChlGZYx|f262W1gIMG?tFM!Y)70R32hp=8arNup%sAbaI+tN#qX{Z$E+ z3eXhsgVZzP)D=IC4baD!B$}H{$Nxul`L9;UUzLyQ-&(D?{~1{PHK_ZqEZ=`#dVjq< zb^bHR7ohR^rw6Oh*?;ag>8B%8gf@|5t2lQFuQI+X`GD2%?y3c^#f~GayCbPPC9fl% zt5*S!*kPm=M-&KtAB_ye*83Jh@h>J}z2e*zZd(JXI_9PB#BO;IREzsbvBEMfSH&Z| z!{1zYk)N<1G`Ytqo{;-RNZkRUZ;#tl?e1TFkJUEb8bNT4!+z=(+09&Y^j$(wJnBw4 z?ke#@Z>~STJWdEonQ4t6yvE@=rIA?YT5$8H$b^x6n3B5FxCJ+TSxK&VOew2JzlDZSV1-Ngj9`_5;V);$AMvz?N2%O?cu6rCb9mgrIQTS<7 z>O+>Ba>Z2r0&#j0U?{J zr~_qU>*5DZ??8&elx=Uq+ALPZB$A3T{;x`a)Gw_%z!M<1mHdq8(ZW?dMpF^ zh9Ey5O8wc^24$BKle`N({sEe{(Karu$EjAQeQ(G8I|Pc8 zuNUd&+wtbxemq!qR;$4Y-pF*<1`*wS3vR4bnIB~yW+_feFZ7fK^0PpX2U2&kw}8S; zRkeXfU&@CPA3Tjyy5h}8TC5|B)t*G}aE5E4i0)hHoKt1O$Uc-&ocLepnGEFjgC0Yr zynp)O>73G4Z$9#1Jx;VnFkR#5o*IOAOD?!|P-OCRB3FyEtbXl)ep_^mR z_(!n9;TR*sOU6$4qp-o@m>@gDW}pKT=(1>4%ROLQ(ShISvRG8hUI8ty1CJNcXrf;sP%b--AZAt7P&|&pv@Q!wCGtk;s1q*_M7MQg3C;>=BA-)6aO1nu4>*c2q#<590wW;# z(gwuwUV#GJ8dK23B`pg+9rh>LeH>2o<({vgZ<%r%!J^V3OIcj`@HJxZZhP=I z7-UvBzbM0IbYLW17QX7SBW%-dJ6tjhG8FFjm3Br)Y?{Lg;Foc^X1D{uNbS`@!Iy*37xpZMkB0&3<>jxa3zCpq8^>-A~3 znO9mrort6(Lx;Ca0i;P&7ipOC+HP*V?N@=uYdGBya6pW&id(;WeU*| z(67;^Ytjr9#mAG+Y07R-OP~JUB*EOze^wnKnmrdtBj}KOrrt`j$Ual=5Y4Rq=>R`> z0MBy=Fv1K=pF2Q7K4zQf^i(v7ORk0+?zoHPtH_!F? zc>;o;{S{*jDbR^jHnJtiG#1SH51A6fwsS-Yf~8N7UFI_pl=Kuv&{n)Yy9t%Mk~8omX_E zR&?scVf(1pn2=U@12}n?dOH>|n|)x@d6zmm_%N5Sgf+3K32@#Ls6m%B!ej$kqN}o)|9eADDXepnVQ$Iv$0!2W=*>S?0#JmJJAXMZi)WW|^ zrLw>BlIg#mE`R0K`k@N&!IXg_6oKz|{@S1XZFdg%t55&=w-U|nU+TbL>K~rJ^?Akr zx+?rvb<%mqL`jN`mV<4_`9G@YU+U=8-wsy&N45TsD)}GvKi9MWsNR36jUWC}0spy1 z{73!xA64u>>VK|7|4|+Pql)~cmj35j^dHrdxUpYFDlYd}2ov~26i*wOt}+1^6IfIQ zs7%Q1SDA?b^QODRDbSiqYnVnA zH%go9nb66`+RS;Tww}W zba4#`q`_?Vf_2;3Pe7I4+b1cxpzcYk^b$YzNMCLmlMiPzH5aqbA8n*n{rX*Qz5#P7 zw+b+rkV~t2k%f3Tqm5@esFFa}#2w(}JR_c5iDNnlhyd%SL;n+&5qcOZc?|b&%s^hR zXs(w)C##%i?FD9 zW#0mmA3D~5I`dexp^)W5-zN0==sxY*V}&ox>yUq}$|F3;Oq5cyo{Bu~J4eCK91gma zhy{%hdbT)4A)SSN*4+!1 zqCM*ne1Le*x|pjg-)G%jPv7~!x^FS0|LXjFmR|qlHdRp`%#kDIf~WUo&HbJr?ICE3 ztd_=BKx?WpAn1$#On@QfLZDYjR!d+juqLg$Gv}e9-@dNrRJwL(V4=smy;9DSS$EV{ zD?L8h_@Lek`TY~Pw^93Hx(8yW+z=d-30r6iv?Welyr~yZI#_oM{kb&Jr}%1`4&W9& zsONphsHC@XI-q>5M(PIpySm<6LhbNyWAwxMm!X#Lj&`JOaD|G%L&C({>v}#VG>7Y@ zpZw!}W3M=A0hxG-2)Fe#N_gFnY-NvcF1&YrK49ob@0ow4I6^aN8Z(yeAaq` zv^ZUS<6@uPE8KiJdYR-YXHpE<=UE8#z5^&Z4CX**Y~=XF@R{uStMBMvG7+gC;`2nF zdGq5uPo)0EiT%Iiu09I?a8+vDT)D!5KGJ`6Dx`k@o&W~#JD%qvE!!ItA4)2|pZ}aW zvE#M$si&NVC-w8t^-B~cm!6f**mZ$imoGjPm#(BD5*O+%qL=^y!V1j$706E8@)Xje=E zWhBg`dfJ)#$B!*aw#HA5u?~fK3X`L>L4d;fYCx-)AjhwfGs>j+SDIw6&d9Y%@hmE}@sBMS zwpz=O*a|)Ngh;&%m%bh$0!{SuRvt`&)``+XcXQX@N>GlvUww#<)5luiIIykzEbxA<#%zQkd!d9Qxp z@QUo#;ywqPX2s+HaA-wx3;x2Ft*#s+_8RH-T{7Q%X#diXpxoB%K81* z@FhXtW9?*8W1dN~C+13`y*zhql0Mq{K|}FEymHjcfV@cPmQ6cqpTPvp$bf2({DQL* zU}QjJ#dr&^tyv*95`3@yL1Qj67#diRGwhF%S9U%yQbPkQXwWPUZOVP(NI-+S z0p#1NwBmB1qgdPvb2x1yKMfExzRWPDM}GOllKG3T%M`%IF`7yC<1gvgqrmla%P zFH|cRD>CDj!^DiJEY23kMg2kfuyCz-^2Y$NwV zZHn1vm@gY389Su$BELnOuPa{#`S5vt-Y?j9Gg<8;p}aM^@TxSg6p9r{6%f0q+Bd4) zu9EEc4Ze@F{^&>Ug?Y<9KQ#Blq|C&R%nR+7VV<uqm8RL;{(=@lW z>D^KL&Rl2_lon{s;22$AGO*?mV$=TwPtid?1PTLCAbyHyVu#L9`9Mz)2L(mSq-_FM zYA9rg0mj((MV>(B2_&Gv5B+PkxjS+L|JbpbqesS?#pWr0*W{Cz`IF7q|A=Xz;){1r z@N{@V{^TY8|c=rUapIYOd8c3kg zvG-G9!zX}ys!sL<*-wD-)Q_&GF?Bsfcu&KTeCihS({Q3GW47N!lS4sYgk+3~NFEB! z3C+L@w$t!A*3HB!;{lXgdmaxX($aU#`(50poq|AV{khPherTHWDNP1V*K7v+;44DY zdrxTrXxjFP4GU$HeF%mmuLBmIhFrG{>p=|yq@4o(x zmH_tu0qIlyjy~y-`($yp{V{CHt_OZ;XkZO$);y+r0*fag0CDaUfkx)drE870L7OcB zV{uOq4}~)+sKGU*M;RF92_l|A_6dfbfZ+*>p1|q}_MU(c3h$ouc27<{@^loehTfE@Ms|x? zz;ZA?{&%~tOdA^CLDvixu0g_Fv5g_jhX z=_TlGhp(_D$1PRC(0rMc-pC<^i@+^sLF(K+)ch2!z`o2|mVSu=K`Ph_!l$yP&m#pr zT8&4(9K?VU9KS&Og8p=b32nQMgC6;kLwlAf4W-i-prP3n%G(`3zS2m2nI?Lb{{R$* zr_6c-%3`1t^^@|Sh(+cK^zA{lI3|ZJhxxUJeXqVMN{!s#Y2Dwu)qVsQ7qKl&5*_H> z{0jLPiB>Ft9Ei|!#ghP5rp3h?6lYcYa-l>u8eqvvWZ8YL#E>VN{te}Po#_+xdr_wf zQk^ed<0^M>C6OGTY}7;vf1p%z-iY#TsC=?pf+3EST!Y;(-7zT+812os2RR@%exr8g zbjnVh$5MDd_E~kf!#>3WH_d1T&OD_myQ$%Y=eND={02PF?`6iDAH$G26xeuxJ3=CozQ^4<${OO@{J-VVU5$# z>>JLgfNOW?nvDbYiMr^TP3hpbbWP^3f0Z#%xIT#c(8@+9pe z`qXl#zl|#0ke9a50_avC_Dx)HhsPwLd@ZwU06Vm$gM)yA6-E0PXQLFxpxsKQB^s~J z`%@A357D6rke1`vv{x8IJ;z^`U}FY+SVTzzlVu)Te-s*h{f(^n^W|~QTa>D49Cw|O z0G@EL_POA&y4M=dIU#?hRES3y^0&+#RA$Pz;N0%qW0{X^%_-krmeJ_Hk}3A*!frAW zUZ-W0QyEWCLyiFPcCP2NmQz~bG$%Tz z9lf;Dmk3wnNnRdNDF$&4V012Q;(_lsamxig_`GAi5#Q%%m9tWjzR#`p$58d`{F-1? z&I$3nqJ;=vaYH=jzMj7K2A#56EAk*_<{@7(aw53q)CQ#&n0J;=k(KkE>s;}l>(9mC zFz(CyptQ;@!x-fHqTH%H2AAE-%^h(C+TBfpbsxRC!3J=v*KS?Hj}})e2Cza`so>a0 zPNIv)01Atjci%KngmTkSh4Rq?epqO>Gh4W|msu!w+F780FRL-YG1bg#S_`Dd=CR0r zaO%fy<8Tj1qrrZGtcV>pUph8u1GvT!XR->x(k-lX(yf-t6>>iFxWntJb8Xk2=a$?gk zvh6khmgE3?#!k%G&)D5L?5dUE@#d?Eeo$^Qb~*pq%i{jDn8f5GLzgWYt@!I#GiJ$J zNr|E7+9eg*8W`3YE@ZX+jp({&@_icGV@7+$rgPML6xONd#I-{b)|u&1G$wWJ(evhp z`THp4P8Xc+Di;ECR9@(=Bl-c$m0TMG^Q+*3`A4t?4}rUfpO+RL3=grnX)ooi zhxKB%A-?|G+Yix!XDY`5%`!wFH!Sp#y%@YLy^yX`+nzNK_LJ|;vkqb_I?dciPDII< zDEgqx_K9m#cMD&dX2wS%qIf@~=#k7I%}t^3jZ=dThO^b4qEol^>1&}iPB@ZiX4>98 zWM1$&oX>GcK!k%xM-+Djn5?+~EZ*E;NToo3g=0s@9T|^e(_B;j!j8c@LKWF-?I5`8 zB)XIEc(n8Oq_oq+-EGY=O{X61i0+Q$h>6W!M;V~NY#Drs>(X}{5wiYDeB&hhyTz6L z1kgKYN7cJ{hh>zu*1^o-rJ(-O8*|*tPMYx0jrble@c#Pk$?m$xmE4J=cda|&DANN; zCNrzOzBFKz*&>)Z!MP7lHe_9vYU2a~vbd5N0D700(6#DU;;z#2d{#rQ&*DJA`})35 zJU4%1{Z~hQ&L2zfB4>I4lMj4SBA~ZUR;U}2dwY`ptIa`No41s)s7u{6AN;#g!n@9z zs1^DoTS}K2Wi|9>y|EJQ%6DF~zI7kpSEmJB?2eN}nz+e(_>VyG$f9MNZX1SUqD+zw)#gbv=j|2(zh2PQ@fX-uyv zs^^2p)T7+1Er}jfTxcG2I0^lVbiTA{+O!K5wssn;_Z^Q}l0Fue_O=x@tqV=RI$r%< z0aKKZs4O6hKTSFO`!ZO)MRRVt4Jn^myPgwQWXAbTVV*FhB>-2NGhW3{3LPIO@qQ(tyf)^n4Zn$rDVD`+q^U59yo zE+AfYWAxqQ{`|Z6z0Y^kd%1~1-{?liE_~7v#toks9 z;8%J<pmd1n*#SpUxaGu3Di`2_JoILR8FiNxyG6`j_&^nL1hJ_wBMBy5mc8*Ojs zC_)*zkw0^ARY3KIW;idXxWr0^^6_$V@1C?zp&O4c4iRhj=3yW#Qf%wwhs`g^NppCC z-!lQ%y(gmYsVY;jc-XVAt`0o!nQl0&WN?Nj88^&g>H~1Pp@a|#1#YRrHXEGwZiKT2T_f4k&cKgGR z>ywN9x@kX49?Puq79ZP$_VvG;exE)uo(e!bO0>{w;-2t?13x};$9=-{wa(mm?b-PV z-GUPVaVY!4t4^yIFYXWjcUy9DzIgG%*v^Leqp6jvoh|c67b`0ZXJ$uJCkqo(TVqpZ zW4piGgGpE$nTy-HJZ}<~tE?*vBaHLVE4!j0f8hJlOEoYgE2-Qw3`>k&Du~2wwnJiB zZ$9FYo>nS=qYW%w^`f!jXleqUza+j6pk#`o9L=hO4 zalAN4AukMwPvFWs(kN4VJaOFhqOq5EVCs5VbrvnT#=02Q@nYm)d!!YG#5gL^FI9b zO7~1LnkLWdvX<}1)vq(LMTBiUji~#}qtfA$nfkA{NjHC~oR&7$T%tXl~8yu@=-+CDLSQf&y9gcnD%P0~ea=Tti7@8sEEs|v1F$OC-NXSzD zMs$mAqIV3RvB(A6zDo6ob!RNlpC!v^B*@>ds$w5E25&iALAzbtE3n&{y&=@D^nYF`rXI%_nGstssiiSA9<@E2BryLU6v>H z941P|>tf&5D@uo5stV?5CIVEc3$R~yS#oV1{_I*Ek^kh)!qR`69Y(yAy&p<$i>9W7 z;~lNQ3}RNV{yo&1nD&V#b7%*CavYagU_iI=@Iot~LQ>`Jz2;jLHorm@HlG^Ri)!;v zo$X9I^1MDdtqQmP_pgdv$^4=NbRue9qvgGH0rK&79?W&z`S z_2e1z1-aznVYHWoGIm_TOn(Yxf(z)2{#YXS(NFPf^Itd z--}qqUww+?SL?rj(@+dLN|#-L1iN}<>$Mg#Rn;kFTJcp6Wpi9FrZHhD#B%mnQ@?UD zlPGxq^)re=seef>cuU3pgtxu{$2%u4`Vr>olGfRYvHS$RoLiv#3IDJ666XECzoegT zVEY+j=XNRSCjl;v^q)yzO>6M z3r<<~cBn4?vOEZUH91Mt#Yq^V&Q;xLxW|O~KYK;+>cFs$aM!(Q!80(CP;5p9L z>W0|jzL&ycC4~7-8>?l`xf0T@RXUes*-CF;MA~AFOhB|)O(=n-9Qjj@SnoG3W4xQ;s(-Crl%ea%Kwb*B>#%bc&_v-TcoQgl2f2-LSQj_CS&g7mw2#G zG40jok7Hiy-d_kAhuK<s=UPe(F8EwWKz8QC!6`QWh3|pmNKE)M>e2_DAH&=F8&pIYjzp zWWkp$f#`xTR`+ud1}TmGT2-!Exku{rr2ta`vaB~uE3qSA4;$gn`h3E^nIYUdh1vB74*))QrPl4)Uu6ImlxaX)n!EPt(3{#GQu#jF2Md7JsC z>kWio*TJhN9`AhpC-*>Hzqwpea)<31tB9634P=x|8Y!rVWq1fRcyW|2Vgh2>??KC0 z&^?yy8t6vN6p3!B2CR`t)6Upo8BbUOKfuNCLi}8!DQ{&-r5|8Gh=mVlR^DB8#h(%# zU9kcm|7SDuH}KyC=U=^eaR=QT^?!W>;r>6rfrvw&g6wQO)I97>pMM>y*{Bk#%C1mU3s|I&Dk^@-w}%3=;;PKSiZI3OqFrWT38c7DItq)V>1Z1jroPsB#PZ;vxP zJ|CN}Q|~I6^jJ}Ati={N7aU0$pLUz(HQF%d(Qp~l=EnmY`$0M&#wc%JZJo;4tFK}s zxA&rUx7SKyd5L4c5|f#)wkWk$xu}o5+LeB!#%wzFwPF30*y_Z_S6jOtcGn-BuNimH zhD@b4AN;y015NVaOqAHp8;zRsY^Mo$N!~U>w0~)MQr%*~o<`fmic`0>vgv5`mzZ;e z=*En>HK)<*=Ginlp+1Ct^8cQnE-xyf^inh?T>lSikV=O1qu3#>&qzt~g$5fTQ_#Q# z8m@4Vi4+lPVJvqn555MO)9Wp8VK@r{GJ;*9688=m%!EsfcrqP?jEjfQ>(tG?`ZFPN zAw|EEc3WzcZcjtFESU%;7e>hQOYLo&zh1zzmU&5v>#yc-MI<+7HF$b>iI;`{l4(Y=Or@|33A&xyjX#V)n_S?q zME<3|)U2o9W#~s$Qeua2_O43xK zg}%)=<1eUSo`R1|M&ai2HTC|f8MkgG#FPXAADZ2{?76qwE^(6JVMN&*1_YY17rPFQ zFw>UqXZk`y{5((a7IB5IU*2~rO9a87V~=6##7ru)R`hvDIAAzYQmAcS!e)Djv>dm+ z6Ic3f)$=U~E^ASe^$qJ@+|4pY%`wsLx**$7-#`?SquBnv0RPoX8Ai~e=!0_PBm^a9 zH*;zI%RcU4##;rPCRV8+iHShz@1S>S2N^qrUi14bdi}0-A9L24WP*Co zkFU7OtM0w8@cFZQHhO+phYRZFjNDwr$(CZQGds=H7{zm$`BO5py0+ zoQNIgWg~NCu9dlmx}p2OdsWHtODa`uLM_J4=UQd~2FMAd1!?lDEtoqI%{|ggOw10) zL>7b$4!a;P@_hb^hA_iAz6XGpowetTDK~nA zIOH4ohnD3-+2vw>Nk_uAPGUvx>{Q-9PraK1TFGAqZwV{o4q9lW+NWcKy{wN>!(Q zTidO^%-SO2;13h=QW{4qb>j^qGOguUTc%Vl3S=gQRCAK?QBz@GHz?k* zx#so!ZbyN2r31tI-LOD%_pdSk!b=uo5Zrh(hc`Nyfr3hu!Gh8=VyQ)mkU5IY$^BnE zY$uoXW#E=iuGVYd$S9ZnkdjZcKT+E)rR6`%Jg&zu3)2fRI20Kqh++tN$_oH;p9zwX z&$X~6;_>vT5=ki$#4_3<@xwVEaJUoZ*qkQbeP1DS$*()5;sUS?#h~>BQM6rLR=l~E z9E23r3Yz+6i_46U%87#Rnk>VAJ4SK5AmUo_N0j5U(2O8ooc{B*zEEEeX52;>;;oJu zJ4QKD^{W6*3tUkHbTvQglLdc{nBxT~6f^dWGOQAmLr@4@Q3upQKBgXwxL6tE&}4d^ z?;nItsa2|P`xl{qf&QmmP5<9JSR)(be>qm~m|EF>ewdJND+{HuKBEShjX4^vxD-MH z#8MFHWa1J?;d0K<(Uh{j`Nfc|K- zY_u$2qRkVuDqkvWG9MfR(yY`WRz08l)x5N%s-@Lfsbgbh@%cUFZMW6o?v9NA_WAB@ zyp{QW#WQ}L^#~{T`Mf(Ec7pO1lYEy_)Fjdlj3t=fEK1}LJ35)(AI?vW0^b};Xp_sY z#T*Y2LX@k{T|>>&+Q8JpgL1FPtF-#sTiMHRMn8wBUbp)puN6?L$A}xj0^Tkt4T8y3 zolIu9D?Th;)JNmNHGeZ?UO_a;fFcouybc0pQE`U0*|K1>86SqUW_qUvRMY5J z)eh^7(H@w7MYk~0i)PgB-9ZS>Y*+{Nq*pn-jf6GuM2dz9w`O!SP45(OB1I}*^Z;_N zxS;PdLNuL8*$K=L@_4}RQ){?zjm z!jiGHqPbrdTWcW?#7-{W0CfiH?;zy*RN0a-8^J{yeRjSz+`G6?OO)thO;R}(XDLJm z8F^*?V8*nP5vfmOW(@_zS7Sg#o}r>{+L&@yZB}sa3#oc+jBFvMhI3jT(ivTTYQ$Ld z>}dp;d~np1Jaa7AsCiXhFSD@dJt{1Vs2L@uY1EV=^9DK#c^R{4Bx-aH0k35qiLRyT zS$1@FULk;$ewC7}-k4~nN>llg8zi@0dzPG2LX-+MnpO0eoHKQ3#Jn-DmbofrX-1PS zbDWtOEiqzg)+0qxjJ%c+sS6*&vWEkvq|BwQC>Dxxjo$_VE;3r3p{A_Otl>r>jI-nC z>hO~(bP@*nny`UT5SUHUp50=OmvlQz`(y-XDU>DH`g;9>7Gh>M#Yz*TOCO2?3M!XE zNM|9DiUpA>8(BN6zO%hh@o&G`CVew0`d>-cN5(#eO6a<*pXxd*h;9bQStp|Uignr@ z75b(KVsw0WZJUBrZLmfw~%ML2-cyvS1| zJRMmzx6^%lqV+5Hx7-uSx1WM6vdl8YO=A`ci=8I%wJJQ9W#B)4`U}vW8+TFTN-~>> z-Ds$I!|gi4Ezdpbw*9uy#0w{H3*m)jDzij=@E*^(<@#h1jz6~;TF1yHeYs`5Jvj3E-QWu#B);EIfCxJT78oK zATNrWh}tX8_1h~7>xdPl@C_({f+OJb^g_S$cCNSLZW13Kh&%5@>w$bO*wkFoEY}`e z^>70Qze{HOc5Z*z_DvQkqDyL#Ki8z} zunW`2WdvsJPGs^OE$brQKgvQZA0RjW9Ku%`cGyvQ44e8^8Y273KMYs&Z{)()6W619 zjP>zRy+u+}%h5^a(Vhshnm_MeZlio=ZVA~7%In&K>k8KJ%nQxa2KDuL?YCm%{FDYn zYmp)uy%gv9&c4eIhtXY1y95b%%4TB|ZTW>^ucI$;+>3DLo$#qnHT(+K^2q@r#tO&e znIEzbJ&bo2+s$b7DvIIJ-Z5d`UL5X_aL5%`f!aE02pF9j;Fwi6^JI87%1(}ypY=kY zL`7q2pz3vBg}1V$(^0F6pK!O7bMhT5G&C$**-oXIs$OwWFP1F&#bP) znjipE3LOz@LfghiUIlFSfl7AjL}7FS_Q#D8%M#wE&<;mWz_7SkI7bfiny(OysG>w> zWc}oCbY>6AYK)p^kX0*37qo~g?g@MJ*>*plD)3!l7U}}?7jcKxfq5R4J7HzM+2 znN3$@B6_V=XRAff-BKvNQB|VTsk&R}QDncw^3X&J2>7Q*lPS6~_jaXJ7*nnSE7cWt{QZx;m%XWYm-jc3HbUz8%M|6Daw0|XdXFzimkgpG1vds_gB zUOcR)Si;tVKS*$B1H!fJp!=t~u-CdsyagHtOg=-~<5WfI*qWv8zyty4;qxhsS0(k; zr+{N}{~?Z7gP@x`+6;@3tqpbR7M-xSmtS82!m)IWu=UxmALeGo0&;o-FR|INuTk%t z2IDyp>J35r2KuaQNa3Ubko_g#>r-6yV$ZY!`Gz{BzRc(fi|2z1h02zrDFt6smyW&I zb?unQP5>igYC_QQ-iKRRu@GC z!kTS>D%{LBd(KnT!C&EkT$1gSKBQEPBRqrePhtZo(Y;~r&XIfOY}4c#v&|4;RXI&P zstG0E)b`_@E70GbID^~!*I13g5*BVvn>Mklem=$J*+LO`hqesU+U1%gUhee5_D-l! z0#s2&v`Zv^WgM-SaCm&<)1I%b`3rBE_9OBx5lh@ylkRbsVgZ)6)2AwD0kB|TLQa*8 ze&7@dwdOZ@d;J?Um>twaH*|w(Z~AB+=}atkMRB%B7J)? z`>HvxX02^I$NUo@Q<2&~zbt5tF@c>l3_c=GUU2HUsVK3!jafO5d9|BL__qLz%Qm40 zy;*b}w*cWse#^KcH|PajN+F7fErk!yuRsMujQL?N3M(ZRE3&@J_75|~!vtQ_3s0EicvNF~ldfEZGhu_>vRZo*ha-!mateJ7e_hbS*R7^r<>m zR@se)%)ot)2(GE?+jGM9^m~acFYq0M1aHv`Uapebb+N^}xrZscknUuB%<5N%H?tV; z(WqFb7j5Rtd6x0MRj{eyh3DN|MTYJ0`f(YXxTT?{_kiL#pkPB3vbp@95}yeJ zEr~B6Fn1jTx|)HIy-wxfW`DwuQNNM7=T~<3`-hv9rhssrfcmuC(98K` z?`=wS402t9T_DjGT+A0}i=sW}h$ioxb0F$bIp&pgAfMJU-)7-A z0z%%ngT9)<6&Td~X4r#X{v-g;c`i`B5zi?mux`f_>NkvE>dR6ebyxN6rC`8E7w?1( zJx1>a2~$MqJp5Y^0C^khdHb!)!HED58j6X{HCeTKXe}9j zqyc}j_(m_2UjlbxUa_gl(WWRbe!~s!SartX@(o{1awuK_n&LzK7|JJ(kZoIF1Q(}*vE z?OJw`?mmRyZ-8?k{1JfTJoCt&i$(ty1si)V!_SG3&gl0--tBUSh?zqWr^hof z|C$UrdI&~LgnQs`OF!Wh>JNStVvq&dAFHd6Zre*g4cQ-EbDeopkuER36;;!Y<^Kdd za@B4@kQI3v*$`zba?y^{K_4~NLm!pJWRPN7^hxL&A?Ig# z|D@j9Q#|U8%D!nObt^*Zo`mP*=f{qG{R@<_Oa}sj4%FM9dRXa{KS~RU2l7t#rai zzLHMG#X;|aWY5jLpExt$JT2cpHnw?audZ7hvonvnAgs3;Te?X$&^TJZQ8&K9-h9EI zpL;&DhX+3;&_jE@^Q!D-314_9vhMwyT|_~>23%}|ms%&AU0fwr8NddSbIy$$&u8vr=gb$3=VSf;U zeRp?uR0k5lNeIk7GXAGHW;h9J!k7SKveldn(^1~ZB_1Mbv_CsJYZdaHJ95QYw=iuercOB1d04N2wNbMfH8;4+!&U&$>^{Qsyxfa4=Y-iRzfbQk zpokGI4Fw%t9S+Q6^xCwkhEkbDH1-?66WVEgYcQaj^9yFbY8Ru7I%Y8nn%rP3`m)|9*Y&i+7+DDB|pDm}|w76O{rOA^^ z@>I0-KRM=qP_ds;1t40P6K6}2-D;K{Ix{0*aV1aZdrYu6v{w>XH!Ya6E|TZ3epp;y z5IGdF-IxI>wCPM7Pp1_db-ZU_K)fmW^!n;UnqP}{)7cJZH`lEixk;+09*oYpv=rJX zRr0a|MuOECi&?z#854G*Ru%=^JHkU8QbccG0gQH{Fe^V9+N_gV6R5jkZlc>1F+@o; zAGm2wi0{1k3lppRn^vP#(e;=*Ewes(z_?yXCr+`EkeB&u7FC zk<-HSUjYc${LGyYQ=YX_%uLss2WNITZ7eS0pfQe;&Z+6jURiUe%Iqp%W}|E0!ge zDLD=zKiZ)kW}zKQ7W-JvsNy?Wt%DR>D8`@LOwH8D1B_C2wi2@T8@V-?GzGq~-KUPi z;~6Pejy!pxv3F6E^^*vi%m*U{Kc&JGzbMoMRM|mWH&tRk zuL3IUp&ZeEwsM8y=gSDd-E`6hH2fV~R*4P#s7c4CkrlWK#D6|U5cZ)$62RTHYlUE3 zrx?*y6Tm$jcJ!DQyvN--4#n}o`m>GfiOsCkWPVaFe1Dtp0Wvu}EO)v?>(wShz@)77 z0hkN}`G`t5>*px>O7Y#x@py47@a-KvULU6Z+})V#J}7wWG)nqH{fpJh_?#3krvx68 zKd8VLmtSG2{6E@4H74xS2Is3xZ?Ver%vmn$xpfpKP86om7tfu5eS`9LhFKG6 znhR)}7in=@t&M%^U3s(Zckh8;Iv{xI{HMo<$BvuDg=oK62T$#~fp(W2U$kmPOT&DJ z?NS?LS)ktyEdpL_u($9sZ@O#)n^V5ae0{(m%e_w}_UvSl?A9bwy0s%wt`CWC;mN|A z>%~*}T<*Icj^97*DtYH4A1LusnJ)e%UL?N%sGj}>1jNkupAzT)1KvzT`rm@K|C_{@ zQNj{K@XoLPbI{le{1ZJYbATbfC+SijTPpycf^bNDN0^_`3v)nNm*|qRoriT4&)B+j!e*Fh|o*@0G~YNGV3b!S=V(s`}@NKLLZ8b*$usjQkAEb zps9(5sdaW^jd7!Z2HQv}1vRchy=WX(X+@S%j~r@vSEY8&5(1VtgsS?5Rc@(8L*{7G zG?O5)v?avEv~`kR=j3PuMaX{8-byet_fXf7&B}Y+o}#-!v!gMIqT)yjCPo+F?bfEq zB;B8Bax=7N1=E$$ND*)o+B;LePe};l58xukq{@(|Zf!D9Rf4{4L>PQJzac^hB8?Wn zNn;L}YbhcM^ZUSDL=;TPE#}uxN_&JgsJ@9#(+@+bfU2%^SdVRT4A~W-+jY>xgrm?v zwQXt~I7j)Y0EuvO1r|?g26%<74>+bTrv+SjU`M)^7IV`U5&iy2ajt1s8^>Dv(jL~I zGN1$NDt>hD$r;}w=5s5Pu$&QGX0b{*jFZPZ6aL0oYD{TDczva)LzB=%o2;$7N_iK8 zq?TZELMFq+qNp=B#cqcj@RITaX#*LDqM-B?hD^_{g=Uf99J2%-Y+5hD2D4GdV7!3? z2g8^`X0-K#rT=n1Cz(w*JR<#!d<2H~4^DEo-?1h_HiH|f-Pi~y&UB5q%6@bRJsZXq z;35LruWZ~9#+ob2#H(ueb(OIJTW!JF>j!2PLbJ_QnL4Z@{;dC)AUGOq@Wr-DDJbk> z|GY&jrfbH+ci^9C@ISQLb!jdl6Ihm_Qx9u87}7hEqKgN%^F@Be$8h4V%LDbLt?vuN zx*ka0PW_H$KQtSkFcYn=SvW>f5b@uU01@5NNq+EmWcOed*sXh;V$)U+6h=M8Q6-Ea zA7kinAEHUFXx@c&c4)JTtKE^ib5>Cwf}w8qICaQ8NDxDiGbwjtd>%<_YFlL8L1iSQ zqR$Td#0>mD%*jsAwEAVjGh@3$pVv>fl^U{_UViYB^WEZ1d6@YO&D7XE2pAZ`?}zh9 ze*k?COu6E+dVCh=cd!2DRMtgM3CARWjK}GNeZwVV7+T00z#s#_n@7*6;8E}^89(-W z3d41a_V=ZPg!ZVwAIcHUf<2;b;!peFx;MCCs%h>LO2_yP>|jkKB7?seR55e?Uxok;(5C+Q|%o=X2IbW z=^(Cs7lLSssyk38|2ez-1$@QA69NSs7UwmuRiGMKk9>c|9e*M-=w^Nt*zZ( zUf#ma_FueQaD4Ay(JVs9cj-EN0l$_xbYWr=ZrMQq9d;}`0j6+4QXcceOvcjH!rIVQ z^wN1)2PQbKAK5Mi!v4$>rSP8Nw9oxF)4s;{%i|@N-|`B4Ex%jB3U`D%b1iAa_^kN* zh(j*j3Nbdxl3O8cJE4c&y>@D(>yUbNM-%A)p~0i1jB+AHf+*Q7DjBbEV2zfNb9sy< zRj$H`R|W%tx$6|9mGf0Bol5E}zbLVw(?x^xnw;5K*31r>fkL{Jl)9bk?=#urEsKOM zl3RmPYGukrwzbS%?omcx9OzbD(i_U8IP7AxF$rgeM+lnNmp)T&qe>;MwjjO}%cDtO zm)o*4ft9o5q4SJsK<<9jxtG8SS6X`_uP3Vtu@a4pvZ~}~;I}y6x-^**L(nH(HdyCA zt$|sWNsjiIZsPm>{brO?DM!k04dLkhtDXJP-5;Z1ftHbu;4-ZT2r?X-2}<_All)9J zx_|I+BitZRvE}rX`LS@ffkhLXzWnnx1NS$xk_gvmORy3N`6PO{ffD9mz&$Uo`g|^U0Qo|c$tEc!z5P4Ko z#tR5<%&o|TP4X-{0dT}se0-dKJu$7f?E};Tt|b(*+eJnCoC~ z(+)<9Pd94p&$$Sp_q;1^+QAA=i-wOOx%nak&in4iz=IzEKA#emFv$o zY34UlDnr0XiBy&@6<)n}X$?NYPv0uvwqJLq8pr!PDsqr9x%xbBZNGhXdD2aPKOZmw zCGBQILH(?{l7LxoJ^%DXx_!G+_U$%UBy*lWS={IG@RlRAwGh>oOM6T=T8quvNRci8 zLv;g0sboa ztJX^lu}P;G4_n+WN#)XN6lmo(6y8t!BY6g_lb}`s6~lp98!yVe=BBU=_ITiDkS0nv zl~QlSbv3lee5_|O0BhCAZ*-_ERB?uI!%E`u2*gdU%78-xoHbVVTM%MGF;_n=U=?^U zApkN5X3$YZT!aAF5zq>S_wi$*zZ_-aZ=QywSXtX2RN7RznURFLx&n$Uem3eCk1fVh zY-HdNe$@aWC@QcMZG-5bp*9J9G-Wese68+KQu%C>q7teliZZey^0D$lo-BWE2&)ah zD~dFwnV&|9+O1`WD1Hj&#Uk}4ZF0}W*l0PI$&*<~YEaVxe{a?(&)ig6lYKB}H?@Lmdp3 zvh_gpgCV_$k2=GapAcqr0*Ok32yj;?T!18L`^absa?cor=XuV;q>xn>x3Y{zqjbM1 zYW1LuG)OcA^;AL#w*b`&q5UPwB-o6<7Rq0C>2xI4;uM6kNg@{IxgcI5zyUgL)^flw zMvJ7KaH5B^ZKPRsDs9 zEnvE055{OUHIXc-;4BTurC&LAqB16$1vQDdGv^Nk+0)r5>EuG-N+1`?1&P+di6TP~ zSL;F{e!U1D68SiIwQQ+jJ>XE%%1K>@eV8oXKmxSW4T+t@-=~o_;2ro z2)6wnPx`W`8$}iwim;3{bCtASExp z6DyArQhG=sTBx#@yr~_j>qgGAMX7p-otJlb!3E^(sCOXb{0>K~znlVlGqEuxA}YiK zh6Byf6&l!gn)})zu7OZss!@eWK)g!z4lr?`m*ODV4GKrXLmYO5xa@c^hlutI1-9zV zDfWb;;2yNZZ?_TIL^N3M$SyHw)xiY0sX>{N2_saZIv9sbNRnGuYV7#^6}YPX;mdD(6T zdf+DyXev>A9Hf9^)895t?M54*fk)sCZg$=Y_c*iroyM(N_YG3T4fiIf(^6b_K!D!0 z;Oep$%&sd0O;0_&sO9vDN_&Z|d54V8j7Jv`AE80E+sg2V$znlD%b8CWr98NL4q564 zizh?}%x#5R9j}=L?J!Wq^|zozD$?n3_9Ps+3)9D5MVWZHdyzoVjs5i1gJ!iF3S=Q%t-k<7u_ z?M^yuout1Yu{h7w?75JRuDO6iyWx7cX~g?_`K+Rm@vdLk@lLQ~9h3l39z#e@>>Nu= zX6?YWnpr$Lps1kX3Ryf-B-(KO9{+71>paOYQHdeoZgojcW;w4;zLNXrpcRpt!!W%) zEgRZK$mAw3Xh@O)x*oC5BqfF;1KMFyoBA+<3R}tROwWj`X~9LsUI!y-U$d<_U=Atl zeq&DoA7w)6r3z%ZLOAgJPScVi)<9*xQPjh0;I}j8TwlJ>CUYO%&g> zwX_5MDw=ER90umAgLzGShdVgIDTfKqq56?^I7Y7;`Z1l`P$i9#0B__l!WR%a4EcKQ zfO1&TriW+}k^fSAZzlMqFo7F6m_6hVjBSiJ0>pSHW{lmRvMYQzy)$T~cF#-rvqY4` z5~80|Ss&6;qcyrhhfWQ>;uhbkJ!X+dc)~Zags*S;-lAd%T3skjSIozzFH$|mX~oai zApa&u1H~{Q#s8NBN1q|@+90F#FDnW=F=63XTCBdwJzGE+xP4@F9`9bn%ScWb5n3^} zH$)7QQKRACl<2;&IUVA9p9UR|czeFk#V$PZG_S`)A{Xay`hghx9W-AfkH9u6j8dy) z=kKN%h4hOZsGrB3L7^xc?|2pRHCh4(BonoK-iAwk0lr4N)Zw06TR6gzp`}vsOBUep zhr8BITJ?|O`}^_Uyc9D#I75L*mf48ZMs1a*D2sCY%F)j-E_U}d8QBSUo76A$;4_2U zdhy*vmHlDzTE7nT9Qcz!AD{{F8l_e5Y&?6P#cuYQeRfHbw5;hcHHZq?0au8-<*xyfAbRonVJ;rDiE&7=>m4hZ2`-I9HzaxpsFA5FD7tAk9t2h5r=o&K5NtM@`-pEfaK1hr6G z0uWT0EJiMtV-Q5C2^iOmROW(u-XQ7Y zPfiX5?gtQ`WQBzh!Yp=T$eG&Wr|#mpkGH4KkDAD6VnP_MCQN&&2hp)z)tPgN?DoC{ zo86Uw^|4!-Q;6k#GXHAKJUVN=R*3=hqqd`w1Mm6M8>wGRIRm~j=+N9nyl zV#FfiZf$rSCz0ygty5YEw2EfRnBDlxYWeb}y+%Sc|KS}`^FW*EPR27)c5XyIBljZh z4*jzA3_0p-iO7GB=O@#+ez^@Ye?W?R!2{2w&WYJ<@i@;82f5np0c1Hig@_*#VCHw!D;u_5lEv9BP6r zC@s<3*$&Hrp#5j9xf4*(=A!-I(>RVdm|ow$UVhd@n&1!tuj{TfYOi)dgN$D`ulrbw z)Eze)??{Y82d>@rUvR?`$62nYk1b(H$jan4Jf)w7x3+ntoyrOOjGWxhxIKvZA~;>F`5v1EMHJ ztrWD(d?T*dG7eM4a;c;h0>lb^m>H22abXC?E*3DBAkKM6nE)75ODe8U!D^{%5zDPR zqLQ5Mwoh+|dk;n&pvtF*aG=H^K3pik8Pl&XRyp(8CR#QSHV@#p=Vg8we`!2hqL z!M{%Q-}I5v-{Sj!7k4x!XvrZfAPj#OZ*Db7wW9cIB1Dwfv{LKGl?(GnlfrVNSoN(p zRn*D5$g~fFcgNF_ZtVr)^~mj$(NC@FtQBUg1r0E7rgAuObZ4f1J{}Lt0fBP=#_y?7 zY@Aw*@NqFnwJdaZFXS#IN=2f*+&q;< zOOr}l`*p6w3*`LX8qE%c?Na~A3ZPFuyxR~e*v-Git9iI{79|E&tf?1axzzx}&gbBn zoZm0n%Ak=c#Zait+Nsn21hSy(<2g46O{1BYkMjICN+D92Mti(<6j ziX<(|zW7R+9xA@JHyR|>tiJwiU>IrcvAj9-pF&f}UJBS4kH!-Tb!7X$rR7O0DS42M zz4`r^^+~>AKiyBcz`FGp5-8+~csO=PCFD$b6%2t~PdQ|g@1Tj_ZZ~m?%7-A$L#B=) z3iykeP;y(6cX6*04)Ec*W4Dzl1nazzV?U_jv-acexv5ERbCknE3;NW=*)rCVzVR=I zIl*e81ukaSI)stHQ63|B^}fL9v?Z@$TZY!Bv7_Pfcg($h3W)6s#bQUt5FD6$A#jsL zW;{P}B@Qzgy*9ib+32r2L@A6Wg3#}QH31op7$uF-_hmni(QvWa2!1h%b{p;*m8V5= zUSWwgutXJBv6sqbP)LqH^l1FrEBMLIB$yGZ<1m-Wt|2-8*h2x~FbAB$K`BXCBs zV1^8tpE`Y-A;2Yijpzv#PW%i>!d66S{Q*AaD44 zydV_UN*Tp(1ev>1Qurfc8!YzH=TCFtGN+j5m0-Si>-Ba5N&N=E`FiMXsiNL9ejk>F z+c-{T)IaNbUN)Nge7rs3^nkGQ0xR|;)2op-8^BbxTK%LaO~ve|4SC+*+n zSg8t6+uFFl`v5D1)PkJPFzSq3rL{kT*h2qxsExnfdgyhY0*~;huOP*+Q#~o4q6kPc zSg#ptXv*v>t4drTD!t&;o;pbn2eY}dh;->EP`}{RDj0!UB=fJ>tIh$avG${+Xr8&q^}&1H9V3cm2P>71$*v##Hz98#S`=ex;rHz9=ua>iD6O7zB(-~RWfY7@|Vt@qiSq- zarh9eKd=%8d*lT4#G5(A1gG_DqhxFQiE#n4=Mb4&<jTCmbWo zCUHMC^J1J+#g8m>T4!kRTs$i*SBQ0Z6%Mk#!2US^l_Sf#nSWi)(SK}z@AuE$VU9nX#hPxA*Cv8cu>13cmH6>H61)B;83S=N;=FyOv3QXn`8oVUIeCRzx(+5_MfLFrv5%5@%yKv zQ%=_#@7&qPymU_QtG;$VFgbX>u(^VLpQ96o)~Z_U*%HI1PSDUEtfuBgyv2nHn$)Qh zW-2_D7^c>mY)+Pv-8mQp$`a9x#;Poh0~$86FlCI&L#SjV z3z{Py9=d`$jArNnirO4HM8-c7WqnAGn_9r996>GhQ+?(&FhkHFvQ!NkipO(dyI^y|^WeUi>=x`zSIpmK>`od z=}9rjg2OFQ2$t?`4yN};t%DkqDT-!FF!qt`;|mRzCx#c&swUGBo9)Xo4Ly4ZrRmDA zoGfXQBK9aTq4rVMSu+>SxQs|C@%YnLtHSXd$x`8S3W>CKD3c#pW(n<%C2;d@gh9wi zE*oPW7)<)4V%7~5i`qE}V=W_*Z^EiFwAc#C*xUVWsq$!zE#jQG+oKR&Ff2h#6A6AW zi44%R6@^%2jG__2^QspCEK=GsgS;XyKkNt=X-xLztDKSCN@eq*YXH*o#wS=0fyc13c@E@RQDl}tqd|8+E; zFI(Q;xl+)*8a&yjm^**UL$jeWcMF#+ZQC#nX*@hv<2cT#NO^90b^F2f6a~>0Y$o)= z8tD=!Y3v2Q-I$;aq_HW|=QrnU2~s6;gWZMKcmE0}Z?0Yxg=QbuDbF(4D$ydwf%@#5 z69PQd5zo3B#_A=?jbTDm6~=tFJt9hF1+vyycq_hB9&Hjgvy5vlAt>fBuB|)PJQ@C- z?Hxyg#i>3ks{6+QlF!U-k%P6sg#;gM1*Ux9a{oTftCfC%sSw_y3i;9Wmi=Oj#cgs| z)1gqG4F?Sk-xFojss^mcOg=w7K{XW0VJWFBF@cbk8$P?K8#cUeaPr~z z&o`fG6S*AEVOTG|qs~*7lrP94)mdTUxKRv=%UD{d+**5r6IAdBn~p%`yQR%AD2LQs zWdd5_rG#awuF87jRNu!ghHA~EjRWrVOfou+rTR&XX0ByL)3h()~;T>fSJNzXGs&?H#$sbUTJno!2gIjg2WOvjwUtH-=dSt=AbOl`zX~zPudTBR84F;&G zS6NT=GxzjZDAzT$I6jGGxwO^Xfelv~F#q06wfJW_s3wB$w$=_-dUu;EVGJ|nCV5uc zeJ0*FPS3VlMnZj1aldeR0I`aD?d_r_Ej~We`+OgRC0zCV<=c^fT~a{v5cg*VU!h zyZ)znF`hXi!U+ZUB@m9QUs@ZVfKY=c>hwm>vwC`PgH??zZEr@Z;Uf0)4oj<>j2j|f z&XCd)ZRsrIt}5_eyek@ z_^m8jr$mE~6ihvbX_1MKf!aGIaL(O_3YjgR!TU?y{%K14yqy4VZnLnWxrK`11JdOK z(xgd~@gBP6=&Ze%tY7GzRM}`egLpidvs}X`G#i!=Rf+$M=%&q%Cx+{GB6m`qi^<)J zP3JV5rk*S&3s-N2Z=tezfMZ|Qu`k5Oiezl*442Wa#Oh!%`WyzGvvlCfKh9cp(d$6K z%vU?q6`a}an@z#rF+X!F4QbrI{tEF$hM3z2cV|U7h}MtAOh(yk+c+|4%;` zB^|kWd2}DR&814^p4@qc57A99MFsx-UwvZu8tD2J)EXU}RKp4FZd?jfH1VWurHDI@_%YCgZg_T-y5bcfpvb>bcRxdzk2=0Bw;p z=0s20RIf+rY>c<2b!ru;MwD0Gc|Z^qoJ1J}$OL=-huRa|vd?@e@3+S|tF|;?8as%KPWo}}FV`V^qd;@@6 zG)p$^o%dROD-=%XwqvPsD66JV@i4wHf}4dUulX^{;4_|x@GzMxmUl;+-E|KHib7`RDYs2k~ zXA)LcREbR37i)3)m4Xlc5b$7LwO4f@J8`}1L+6$CFnS}6*80|_$X%LDQVdJt8U?PD zO=oQ6OI}dI714<;q8Zn&nT8s}@CtIV?EqDjpXy&6m)Tn{PMrVDarCSHUvd+_eR&_N zzfd0eKlV>x{O_Us|JB*7(i74PYw+{!;*N>7sx>f2Q?r6J$Z?!QdPw!_e1ASAxik>yy>qaoh! z3#rg=O15GZ0V(nn;%D-X!KM1>kz~TJ!6?%4osaec=O`Eg$k8f{2WVl1hXIH7&SW|8 zh2lf^iU2NjL<)!V>fWE{zEl~KVO~opiz3uJldjf}AyReSNKjZvViIp8Qi~`;Nc`do zN2Zq0Ym}na3&R5q){r~GImiZeF!)IedBs5SzIXs+;Dli|Mk6BG;w!dXk^4_n;md(A zNK_c*8$m$1EZHL7jSQLb9~#V9qoG4dKi^2&5|7Wt7&KLYJulOtGPXW&eId?fgZ}!fzblu<0vl9o|O@tG?4RAX?K18|rsB zl<|RcyvcpGR?4tM9&Mz=8`NTOL@!lM*DDZT;adYVjK;=Ds1VFDVW2>UD^=7E-;pHc zTvuR-3!o85nVj!LM-o#WOr`fo=tCA0SukMaFNzWuXOToa%Wr`rB;yq1XO1XDuf&%q zE@LV7`v{3kD?W?}GUxk!J+iUFabDUC<~)6MRnM1+$&Qm#LYi`(U<*u+EiM8J;tTf7 ztX3t(q80XKQH3(HmV{=d{^0Qd@FJhbggTY#yD}vb3hHs$^NXhDhMW3H8?O46Rpu>o z6tO8eGKCK%%3K4|afRXZle&aysYgJERg}D;DYb40Vm!Z`QPqO)r^3Vi8;9|b%B-Hr zNJT0#J2B%p7gdggrjP}+%i|=OI#aqKhV-KB2j%jplo>1(5h`S|h3oFDmGKdyuZ33f z;SRu}+nYF}7Ft+D%I~Qi*E5{Sw2zR=67q-R^iXBtc({zJowtU$Zu&7zZ&r8cWw>>A zcWecMGJEpaCbPCY7Z^#-3EC4=Xu0hXT>w~Uk<$A{uZ2Gt4C`NuFvbs*0R%NeE1L)R zsr|?HB|mBn>JPp{L&F#cZ~*a}qMrT1jI5d`k%a`s*%8HPS+T|02>@3-^wdMLEr-Yt z6{fMf%wLwg4LNx93~ z`{qTalxdseE6q$-J0C7S45eIq%z#o13VhdWzLVs(lMzj%m@;*y8}~u+;{uUu;&Gwl z;j5-?@bb|b7oc1s$+J6XD5r3&lR`nascR*;3!4tRP7~*6HjO6g1RuUE2{m!z5dIBm zqSSTnsI6aDRa48>&bnlfpZ`!0+bgQRD>w!3w82-H^Up)U$XB9cMd6Q<;eXg+V-bFh zbMza!H7;^C{Ajs?0)z@Bg@r1Z#Iv%n#xTsjX(H6jsTp_hL6Z@rf+`M?+7Q>~)uX+0 z1<{#~xYJJfzEm-tJv)~i2Of}eXJHnq@YF;iYU?;dmSo4n`|OiP!&KPOJYIpszuN1N zet1o8q{$9vqjXC?KAVLyAxCEP^#`c@N-A&4b9}{dQCHqtUA?k%^um*Mj}WRUo6CSL zYx-1E;XDWbaxiiyiX~&AraUBf0kIE@_1yXo`1X$ZKE(%0(T2OD#R7FEt{F0=dZ;k1-w9JlJKdpY){uU3R(lrj zcdVu#tpT)$>}NTxk{ap?4?bOCrnKt6-*=3KED4oeYO;R?AgYUyvDC_kU-S`GBI@w} zGKDdVdyll(YUl#1CY&Ls1X$!JXs{+UQNkQas(!L0HK878wD7x?m0|eM?pxMyYT*Q_ z5tVS#rA?5iSkPHX1zDqp!5Za?PhR49)0pzFEhi+%g7TUu+zcZuLzFejJodLW z!h)>OoKstzI7dwhe`}Jg9YBU)Mm}78(znG3d< zta?}n5P?wZh4Rl@Xd;w&geZx)vn`@ixGlp1yTb`_XT>)a88S4S*N2T&^NsjTF~uZT zSQ{`+zUnc&IlIAZ6z^g~Pj9}n)1oKqO)*qyIsz`$OO3+%;0xwJ)m2zTk7h^61= zz#eKf;XsRaKnnZ2>Y6kL?eS!HSspS3b!m?0hILw{bg~1=bWO$Sg}v(bYJaTVu-vLy_HxPy6B2|YS&KrjvjSd2Gdp1^j}D`!qsi| zn)1~t!*A@fwrH@!zxQgQ_b=fu#*!!wmGE!QLZhwqH&t6$yBbnL;v@+NmCKv#9LtMm z)fInn{Bl$J#cJi?Cd`GvSKZsS5XCURb5mG*E7WrePb|&A7#XGL7%XgP7EX10TpvhP z75>L}mJr!uJ1k)W!~R|N899iZD1pBou`q{27e1t-9}DvhI*f)yPilDYr*N6T zzM`CURrs|;HlKoZDxQq7hLwLM1j>WlGguI*fKm5kk612o7*^3IOxQOEC-c>Bc0*>c z{zuJU;(IIz%MvBOJZy8n2}5>=Rpe8v>>h?lX!=;CX8%erEMYeo{3>ls3x?K>XO^*i}UdzvC-A66?QWT+fKLx?Q|A zN@6|EFlD@Xmt`Tc(JsAy_L?HjRuMOQ*`E@{g3hOcXtDT9&LBN+eejsa?oG55uMwJJ z2uAPzL)u2bFzd`wc3txV#3a5q49r%9QuSbzv!g5JvvK>uTu~=`O$mbPGDPVPbqb>p zKR2tOwi>h?xvXJ>15xr{NQ61gvy!|jfNIKIgkhE07Fgza$hf(fcZ9UM1slsHI8AhR zw?)Gh(Wpf;$92JEyohh8&abQI=}u5;%72>f*)x)$UVMdNL}xQG4}l04|5= zMk+;y0yXnF8}#Dz*G)Qnjzw!*Z+ z)r_l+7iP2U$}Up$+YoE%L`X$G_b%Tb@{tKr`#2Jg|PM- zLnc10s`<#Cm7~`TO?5$%M(&N2%uj8lD*yVVKFHh+)dp$JGlldui^~3ebDn!VSshrw$(a0S0{t4GH}-voT1{nnE-v3}RRKme{sb zZHefgKg$KMEbwNhi!Hn>Kgr1wnOlBBakZD*)Kugo|Fb5mqV>ee&*cjdq2~iid}fcf zER7&m4_pomAEB;9Y+bXru)?mF-&x%A3*EppHvyJWH255HrdsC09lL}=wN!YJ##jct z77c0GP*si1^Nti1u6LHdgll!l4)u<1R;^7s+Wo)NU;jP_0(!>>Z*SDIJxPvB3$l*y>ogFk&Ig z0a+0bLbZHkjjXenpJxeR?7TM%N9IR|YA7xLFvH9&Z%dxzoUVC{Sbw{?&EpDa8QAgE z`l8-u2B-0k49LjR4?ptN`sjxewqd>eqUrn+EOt2tZ4iyC=Qx-sr;Fa;lKYGofpcg< zU5o2@4wSxhu_>o%tHS8;6^7FckBVku554|{uN_env#xit$v6!5wh0ER(+^pQ`hl~cc6So<)8f21y(kOCJ)lQ=VVTqXe@iJ0I{06+c!eR zg0*v{~x5S>bg9>Yo1bEoE1 zThZS6Qlr=F_X;XOh9F0f2vmYg=9~3)BNXcA=R&23*l{+%hxFQ zu_d-$aOI_Owje`0U1yO*P^fyab&yHYH+rWq`DnzdcYoY|3 z<2MeHtlK9x4v0>k9dOO(w)bt{f3|ehTRrVW98U!B>VCucO}B;Ty}UMyZVu}bx&#us zD-Jz+nCOJuBur0`kT(s#`2Vc5XtxwZSF4Ycu{cr|H>!g6t!4r6zYkW>Wp~=4mFe{_ ztHq%;TQQ~$viTEYLDRLAZ>s)TX-oo3v<$%?KVEzuZX_#ljUQVU+bOp*m*2XN66U_g zAUr?Dvp?_VbVjj=X8t(l*drsV@i@1j^3%uedD}%*x4kvQ*#SQcEu3D`n$n(+ilh&~ zP=Mx!l=xKG16?K{2}(!`c`Xo_;O<@670Lx3Q8Ts-MTJw?Hyn5_X@^W%xtnTg6F|5( zR}e;cTQX~`gGCuV;;Z4qcjE37J`invKqtUs57~ezS1PI@h1j#qA!@^_lU5dac3^`| zD^FLig+fG!43qil%W_|?$?a(+=1u7UjiSH4ED*AZCvc!zI`6G;gj_1_!xqlk?px~I z>fcq;H4x@8xI9;iMOC2aJ0Wi^a0+F2pUqp7xAov=p(wN(0uCf>FohNFRk+K z{S|=WqaBdaD_Hh=C;Yk?g8x?W3DVM+etFowQ2gA&z!-WjgEKwpASsjju9D&LG{pt4 z_#R$iJOFT$b!+BwMI3EF@X;1iFz&%FD0@+{TXX#6cHsW)w6f|6_IKip7DB!$SSmjh zjRt8UVktPd?E8niz!Q@s-}c}Wuq0<+eDRd?sSbmR{P#k|>u4~v?J1KaxDv@L#o8^h z$oA5z@}t*BC9D_6&w7BH^vMA8o2=1;>4+O>kv^F}nbiF}huEDQNnHgypW44uc>ZMkvDxnaYY{d(}P=W zA8Db;O|jZPiRWN?zl%RdG-Yp{k>+0`#3F1%q7Q^?|76&fc=(LAIJKiWZcD=-gh1v0 z&ZIaKxd>Dv1QwVryTlMCt?_~PX&Qf#|8+v(I!%srUnw#+db5Fg^++RuhwvOlWU zlER-%mNfhGJLP>%lAc5uLCy<>a- zMh*|vWN0b?aN_mXQoPX83wQ!2pg+|)yf8T%n`=EkJYvqsjDAVv2;oM4#Sc)wq zO^n<})^Vr~4pNOMtw$aw#kOf`L0{>O#H)(Ih5t6?vjt5`$Nd@^d*7dxL=uhHj++1F zNciT;kdBxdXluQ1UlXAACt8>Wc~2Qf6Wb3~zNCsCe>R}$+!8O$>44R_C1}XPo?F*Y z?cD+pRBOqVO$}Uj0>ITXPz{252_IH*BFPm;;Mx8dWA1Sj)9WLI-^X@pO~suNj~cpT zN#_S-<@E=2DcN z^3l(n(vzuYkTBjXO;WM_5({|XGq+x+aGNSehdfg>9=hm8o}+wEO<-%z!wZ7+`Qny^ z3pi;hbsVAmAWJkq+?I?loN*S8Em>awh5y~Cg3@p=MFZxOOGFA}LoPyZZ!P(l&*8U~ z7LL_(LbY~c$}va$5IK?3IDU4@G=4jBMSuQB_S z$0KM9N1(u!FX&WK)B#G~G(*)#I=`&z&n&vS4*-3#srzBfBLv;d3G4PNokb^I&fVe^ z+~Thchu(XSumIdFwi7r_TO9)(NurM_a+#PVFCfx2ZSZc?FjniUITJdnE?2ZnV=nD_ zW?%)V2^~8F2SW*?IAcCP^K5MXs_81@zJ%U!F&39uOHCgO;I8P`#f z70P-r=eM3pE-CA`->{O z!aj9y1NM|EyUIRy@GmSDl}`D5g?+-{2yC2UyXb*($P_w*hGvC*$RJG!ErvR+PKkZX zAZ~~RjZTsM_hK>Z8trzzebJyCY@Bkt)&XV+5W`lbUH1Snga_kB`Ak`}s$Sl(N4RYe zG9(5z3*8f)u%=$CK*KO1Z4fae2R2S^y~I9lum|>qnpghd z9<~c3H=n7zUc#_$Fn+LpkU!)T77AS){YC>&&Q!@%%2dl#U@v(98X^@!9byrJ6EXyg zM8m6e5I&fMo?Cr~E<9gOgBJdjCRp7Io?CHad`y0aAEMb%u;!<(llN<;02Qb1S3#d2 zA%oyV2*_&DE8M@VkJlglos*1_^tZkW+diwp zkwo*?L{f)DQCp1K1c+`p4IOQCqj#rW_wZw*P>;-)HmPJLK^8Z=+48xM2;t(Wp1FN}RzLR-}Q@fu#T@ z*>H$KPmWM+uu-QQ$~A1r;`=~kkpica0wGdOn?edljHoq9Af~D-IDib`YRZcA5LGpf zSu4<$Ez0$JupHVL99v}C)(L?&%JoB;W=%Q5inI_<%JT+tZCXY7+}g0+%JY^p^;%ix z2T2dml0sqZth8szfeh5^Rx^zo{KRLef%)i<+D$f?s6LNV{3Oau<}(dis?Cy;1EAEB zT23~pnDmI!1L5e|)-zLxFX$U%70ULV?0aT;n1M|uQBKACtgB#IKI+i?ln_{w17fSf zSw2F}Ut-klvaq%F*&JQU&99ADN4V7Ov)U$2mm&M&8;54p?JL^WO?9x9Tc%NVk^=;* zC>&iX&F#Qe02xGB4LL`bLbJOfEMaP(L`@0Ddnz(71B8O)fLo0zhnF;TFD1mB^nlZ< zW7el4v@ab5qx676jda$htn*hR{tB(~U1iIlSsyCBFFizGN+4%7P1dI#^cPvhZgOB- zO$x_*RQ_8RdN(b^zvfDtXGUUo1=w9IFobHg)=|lP9N~NnnE;ELR`$nfAPpM>_Zo#v zfa%Kmrs{%GrZuw&teKX?=B71qIwg=U9;~cobQKe30CmGC16@_y%El%HSyg7hk{Yn6 z{maVAJaE&KdYuYFLhI7TrpdfP4%St2fWa!LrXx6C4;HsLe`3?zicsh{B~YE(yp3aH zleth#5SF`mU-Oa*c!?V5<48CrGXS${284sHj7NWz8t`u!StThHQ&k=*F&N*pw1Nu$ zNe?lkY+u+yPm7%pm{hW_vg!)tQG2|%*ci)Dwr_12TAf7+oSVcvl^Hm#$!T>BK=u}b zWk?8=snKn9%{V)fmU2l!*Rknn474iV=cay*RI{?;gdUhtwy#3>o~is^uMghGQ??I7 zUsvy`*&zoHGdT?_+4r5Yu|f)0;-drd(m?FB;#yxb6T1tyzSg4i+OThKvIbsgQM=2- z`kJtBY(5Cz6{3Hr!ur~JSYMM1Jw>8-(?HZ|No;Li7LM4J>?2UW2CdL-g8)C2V87@f z?6mZNUO?zC3W!_D0fA~v;CosATO9g_1}uNQwhe(~{-tm}7EHiR{igK}dLRpRIvIpY zwJWf#9H~dRTr`gXg0;rDF;GjHNdopniyxTBSe~6|*?>;h@X^|<+FYI-NJCxT3dW+O zaaKj97K2{h;JWpuO}zdSBCFV-X~pmo2)^Pf)uIBcqh40C7Kv#~ZJrDk=TcomL=R4{ zJWl~Jrl~s!l`u&O!Gdv4uu2HLMW=rrpM8-UxL?%+-eLw4Zjg{c_^k4y_$baZ0>@R0 zk+jD)Iwi$AW&cy2lia(jVl<1U|5XaDolUA`k^!<}Z|AEptqjTu3@ZPrFC1F)OA?Ip z?@N3amKI+tLksPH?ePs+$->Z~hFDyAtg4Bx(I*98lNmrzwok%neaaf)?WLh~&qDX! zxoCQ_3&(Vu#B`Gy;8X9bAws3UNeYB2-Y2%|UnRn%?q;b^7FKr!%{5XXY0a zt?i{BI{j|4Pd7b;UkhsM7bmg12J9C##J|>1>ra8e3m+j z3gVfkAJ*zt+k01iZ|~M#$jBY(7Xuwf-lLl#$ZKw2)Ws1I>3&Zd%H2sF$~^YJVE?D< zJ(T)fAEbb-X~BNW6jB2lZUj);1rKOVHwK}8nkHOOtH~#5O(9#6e$NI%&?*r|u+>0N z@am6Fz9JXyfZmRM1k+;ZdmGyb50Pe*AG8(?-Lf;#QiK&Kzv2=;rsVuLoV6+x$0 z^+x$;oO6LsiwKDIS3l5zouqRjXWCrPL8lAs3iVsx>w`}th(V{rP!Jnz=f(Of`67ai zK8`?R4^$z8wdw`=FLnb z{_s0gu(yAg(9FOxsUo|+82{W4g<#?>5b#H3G-3-pw)140WYYY;g<{s$24ur^4$Svk zmeg%29$jM`5HEz6We{?vAJPT5llhoumnBl|PI=K?zp3ppG}BGX22~Uh>x3abev~#$ zFy+t(;aF2nn~V+8xq_HAJs2Q%fu1x%84`Mdo-}b92AueZWTItnnrRmQHE7^~mN5S{ zfO>7ISxFFRx`|}a@eHYY0k3}MlrOChMeD+-dTFRxk_TJ$G*uwp_ak;WFOdDss$Tsc zQZ;MofTuBrH50Bu(E>tNG}-~x5nTPoE3P#&VNlKJRQ-%QR4bNTD1q3N;jaaTb+u)P z+Cs8r%p4>aF-~Eh1(AIQPZZq9-9Yg-qZW4*_wQVog%MwKhS1kafO3AoB@1 zWLgjGLvn!t(TOc4Rc$aRX)KXOXWC-vAMp$^LZy%R*bF_Gh^d63Xfl4#q$Pg-Nt4ci z4r{_}ON$6M_pRA*y|9Aj*?*D~z%2Go1uk2J6_z(IMr zHkaL(^HIGLUzfS-y)zW#PIgCrg8AXSW4q*hqX{+`h{8rQgnipln|by*EymHLjcbzNpmpPTv& zL+6;injB;ASUDcSCQGxCe^kQPlKI$a{!T93(gAAv4}EY-oyb2^^Mj07Lwby%O*EWW zYKO&=SQ>1aB038OBTh#3#k8E8J7MQ`KjedmQ`L5CtOZQi2w7r#`8eB+h&!d7XOE35 zoy?j)iHfZ-DyXHl##r^z#>`K!Kg9*lAI(>K3oqgu-leF-0MD5A-*I?%t+^5|#)K)_ zipGq3M~ATWrp9;6r+(V-PnnXZgoy?R|_L<2u0nv3!(g z-fSE)s!F{OCAw{z$9~`j9iH{KN(VUu=2Qd$UXQq>L&u6B9sc+UtrCwLo=cm5!5+Un zyW45Z#H5NGN~IZ=QfN#s%up83DEILlqH)qYzlpnvF}!rNud$#5U+i4`r;UKMXlE-n z((QcP9@t7#jE7YZEfNm1&Ts*3f%!4PtMLn(0m|>2oRS8Qhq{0J5FDM;aKUbT;l1z3 z(_vwT#Jpfu`%0Q&FRg=Z51}nPl2Jj6j+!PW!F)Fukhb3b83mH-U{2UWAVdac`Fn`n z2|X&zCol+jMAOu~e#e|~ZO4?bwI2~7YF!@PmU-f8d=JExd=llU3-4E8KQ`EQ!Sm<= z@d?>5qs;t@Sgcj*{4j{FaI)H3hS{oy*^c7?4CB=tu9&HWPiTop@7-~;6LAg|d{vq2 zS;(0n%MXwuYzldCnrRZ&S*BS!rn~DSs4t^|fIQP|-Ep_pxV8N`r65M1a7b$2M94X2 zLpUy% z+cDtdE6K*v?@FlXsID9KUP&q9wPRCU=UAFv9nrfzgS@_x%RR#nKhnBAu?}CXnCmut z#yYm%V5A5Q&`~us)n1qG$$y%P$NICq?ESJuFj@_gMn`I2n3W&byrI>TGG`B30Bk2s*`v}XU00F^Q{GTM9{|nxYkg$}kv#Fz*q4EE% z=S+zo`1Z(tlecV)jjM!-ih2M)1H*DFe?miqNZw}6uvsU~4w?basyyyMy{R0QXw((! zozjUy|7HEnXnRT109k97Tu^Ffu@&Rez@tpAtD1!Tv%MZT!h}O91T@^6e|#1Kdk^8r zCQ-s>coJ8sDJdTFo}i#2Ly#%3XU*i&_oa`z)X;|Q+_J)?zoKliX zTCXpv)U^4bem?(hLSUzr{U>p|^u@wOG62dvzP*Xp+h!AdFp$Oo^imKih-yuIZAN?a z&ne~M6Z@wEwNPM>=>>KAU+&YRHL#<-Z-rpdw*&S69~$((@WV-(THDK7*#1Ap(-b8+ zg+W1NADIB*3J6+X{YNrY`#@&Ga6%?B!uN)Okj2c_yDqkbboV=`*P`eq2xb%p zv!snS*4vrsDPP|nKM=rBZ6y9s1Qvo#8q%nec~{YZV6p2o+QGy8Q7cwR1*tG0YL5CT#c<)3_8ZT0dG7j%7dbi7kPCZ|)G*Pbd-* zXDK#o6HY-bW{uH9N>1ypdiIF8UvV~)Hiua$6C`5$; zwfKIK@&BWh_c!>2ZEO~j+dJx@JUs)>#bz8dAmvxAwKI1h}U z^)ZDdThB3wj%K3&yC%}6PQfd)f<35o-eQf(vYz`7ap~0(IH>j)$!ab5aKcR}%WLZ& z_eU4+E&UO;HL?#fC7$tgMnu4mqb9ejZU-V%e5RUtG(LlqYr!IMwW~g4r%uiRKxcpDybC_e;F&;JDU8mfp~S4ad}p*HSp)-2XarMC`lUKgQb}q!)1bG% zsUr>Fw~u=I5gXP-hXc$z?MIRa@*e;QBTEj5(-UF(@rrPt@PAtYYq)LtYCz`EGZr`-u)w$x|qL(s&%J6 zs`?^b>y#IZb}!hDB~q>o4UhGi8-yfeF5a6E?7sHkMV;e~J2?M4^U;J{RhkSvjulEW z46C&Kvjb$PmE8-Jr>FzZ%7}rF4knT9gxWHoT34G=>X%HF$a+Z&F-u7aF}=XiMHt|X z`|}qS?)o?Q64;P4BDYO4Qy)BnvT7x~*sF6+dNqub+CnkmEv!eIc!eWvyzW7Rxn9ar zr8zolch`Z^9q3>vx|DR^;|F41h z-@~#72xFkSvhp>XlhHjf9TFToqV!WpOBf6sLkUeVH6Q#3c;V0dL$U`{aSB!kGcZw^ zoho%Jo2nKEdNmoF7F%r8n$<;2VApL|t80_j`x=8f?LV%Uo{VWSV@V~M-EOyAzSCT% z8?HUBm)W+l2D4wAS0@p?O%uJqf3x$^kaoc-Yd8R8~E2pPSNB{wV#q3EQrczImnT^kzn_FAQt5vdz}D zq;ardjCFz7f;(GJu%a%zG}_Frz1U`V4!iem6l2&{dYihXh=spob^6KRGEA0|*!G@U>59#_U5 zl6W4|OwRZ;ScS)Zq7rw6J@vlwvo4C`a~LGmD5PEU2QhQw3|#HomKHft_CGMAU^Uzr zO}X^sg`N`1-Bp9JK|a^vg@@uwoh0sdl`U)E3#UV85jS3jUY$Nq4vD<565?#%Wurz9 z($<|3#LYy+wrhi#9YJaW=XC_vUq+Nrm!8d<>w6=bI{J7yOIw%R$!Olvs{wEG~>18=Go}u$mcP}FqHbSW@5}iNt@+{eE zLMv-WU@>qb(!Q;Wow^PavRDmk@C04mJh)NoQUcmAd{HC|IVm;`_B1W8uf;n9V4_-a zM`^!XWu_R4aN5c`2k$3UJ1NZ=`Fr_L6z1f_7+Wsob(s9bdpx#HC3srPF167bBtP$E z%mBPc-Da$qE3nszVl@+!o8&2=)*_;XQ<&z|`J|+3P=%PStf;XjogBIB(;&02IG4-q z*!W1svyC0Z_*-Vvg5@|1uO9dppJ!xqt?$1U3cQ*07}$DPvAgYP*Q*fVZvxkd&Cq3 z)CsVa(lrMM&h4&p2@|F-i+wi^2yLv@YR0pHBUiHi)bSooDw&G*q2)JesK^-Ur+6gN zo`P(05_7Mrorpi>3qBk46V<>+pxS|le~_K{0YIB-jxg5viQwwh&Xel;RDsviFPy-5 z$sr57FTZVbz~CC#R?s%e*S;pis!{8JGe4JFE_5~GgULTioVQlsAV6rK&66wtoSsOV zr*2vO^Z7ssE^oZ(7%@iSP(>C`jy1TL+>zpBfur+!df$-O=wL~Q5%G4#9X-w=GJ31) zJAN$%?*udVXY%O;pHIm*x$tkXc%D0O{Ju4%Ys+XSq1y%a(BaVvew&?Fx!#AS4iXZSOR{_~;Y<*QO z_2rzILW@Wzh>eP6H1`&BMweK}j&*V3y65dJy?5~r!f0bWM;ucY37(uD66OoBv+%~- zJ2)iH)ZW-gxnaf&rT6uYV>fC?Y4(5>n13bq9S(AxgumR3qie5fClVko=T4gQrKtaV zh}`Tgvk0#piT9~iUQR2cvXY-XwHcv>BL}2I$QZyBzY35b6Eoj&66w{ZjD) zI!7x`_HhOg2>PNk9l==m2&lb03%)`K!kO98zT^hy(b$m1~)R4k(sOYq^!tG1jKm^@jDvSy4_X zsu^NBK1ZL7=vIV->@G~-%&~xE+TgqsR)*uX5}l0&sZ9A)<>p`w>yqIaT%Hsor@!au zwGF@06%PmZqWRR8EHWD8T;0oZ2!NEv#*4qBeNr$jwCPTsB~;{J-=yT3%tTcvcu9HB zJhVq$nCR2M+e!>tzG&FZwW(KpE27G`cdb?Lmb9jM(JpJcaVgAm%O@_=k>bJ)@Yx_AG=b7OWfz_6WRRXkQUowwXR+l_W-8ckk$ZBk z>$`hX zl;d!?H@L4o&o0MToxcFFDT|_yY_vj%Tu=TM#3-Yxt5rGGQ1juB=Oout`37G{B*#>2 zHepM+Gsx*WM>vTe%JTJCQf&oRrJ@o!5Kk%WbZcJuUw0S%zRM*JZrYd=bYX#Ej9VrPX# z4sjj|DbFR*)pB6e%SW*lKMzcGM#`I-f;^d<&7#xEW8?^xwL} z*2+Rr4iO@NGHdru3AxX3PfFZ;4a9fH<80K?-$yZ{pMi_qKDy7XoksavDC~*lslrq} z&uIq*xVDZiEeu_$7M3uFXeH>@DC}a}k$b7%19*|AjY0mn>eegaQf3!ZaqRTv^HE*W zE1-5WR~I9-W=SKHd|CK`xsw;MPFGSIx5Up8UCiDTW1d`qWcgNnCH8SMfSAUC)PUng zp4b2#LYW7IGX>0bIihx8H)G5N|<3O@l%#i@gFhrL1PgmOaSI?$GI%}ke zbpZ<+#2Jk2pM54pSp~(uQqa!80pf38n`^!C2&z=TNg2D3xTCN`Wf%LgH75>s?#iQ< zXKcw0ETxKTQE^HHM6qr54psN}t#scp7%QNqO=k#q_LZNK?R~TjNv^OYRjBX+HW4 zCZpKYoQFM<9!&ogz-`-Mr>(TKj&Eb+9Z_KWR4s*$6uki-{1B64T$m%6WbK$Lc~mon z)?a;;LCKuH)3CD92`NeXzWgb&~FJbj#Wy2lSK1?z6(f z{ZY5yHQ)6%$q_GC&gN0$(Vq;>9$<{J4|$LTaa;Un@y63LN!+YkO7$BTm_7ehR_Zsw zENQ_ZYeT8}s~2gwN8(|MHx3uX*7BK>j57(D-zsar~1D55Qs$;g?s(+F0sFw+c|4~w4Ss9MI~k6EyD zEp>;~SJJnf#&s4^)GxON+Afl)?EnCZ| zp-{v<-Y8dDstv)dj)qEZ1$~LO8>q(jnz}EohSneeVSAZp95kLW*)^&>4(V-4%o9mo ze}_k17$yJJ&PivUG+THyslgnl4R62~LvXF6$6;R}W~f(OGJb5=JY%bo*NFa|TYJ-- ztpYEwgR_E@CfP1oHG(>n?{tYuWJ86PXg_ajcRD(dTe^ zx8q3c?IIM+!;b}u*MD4QvWYxinhd;~X=XAP^ea?aN$+lrM35`uF1aNf4R+{n?ZQ5<-UtNikZHgq;f}DnLWl4wT656GKkvO zk+U3iSE+^}wViPy#w*sMFOvDugkE5-B{&DMvi+h_)rd?M`N62PbGW;dpB=*V9M_@xTM`kP(Q&;Tb{@M^JWrNpStp(1+@kU3c6I$gIr zf(Q01Aey&P_+}CNeOmc;^}_KlOMxm4Sj5YT30uPNVn%oS5_Jt2BZSm~=Rbrm$@<}S z3m4i?gkgX>6@J@w7B6EE7?&P(PD!w&I`+&YS1;!_{he`I<@3Ah=~|#E1un@F*oDu< zXKH5#lkxhy=o;~~(}`Xc5MH*GYxXzC)D_Y4g~)~aYX8;vPDW#x)|15j4XsyZ34b-e zQN@RCGY~kvs9LSXe1M~QJ7X`Ur)B5h{L`~_81T4G&b{!8kqT%i# zB0X?z)SU^AEGyH$CbV|79xNC~9>%=3lp5oPJ;jQ74RoaeDqQ{~Uk@3y6EBJIz1d zE;C8x-qZ6$b88Xt3SMUYQwrpO0FP-==%!csH+U@BQ{Qx+gjgqzxQydjHLF~$n~TqK zPqwMnaW-{4j!m5XMq&s4v{x;4Wpq2UL#{AnWWu?jcg+}`SHsFqtfO~kI}o_^=sYOJ zGR2%F<-csHwzahx-XK$B#>XJDe*#?4pLoS%Esc9Utedsf?fCJ|Mb+<3WJkfKM}*l7 zU}g{ZTmVDk+UMg*Y8^PgiYCVQqS>u2Lt4anZZ+NG4xU}KbazK6&^IFkJC`2|I?No2 zI1nRUtF_LL={8|8YXZc86NNb;6`Coe(qih#k=0ZfT!pXuhDxsioJg@`t1?%-#-O*Y zTysMbakB>%temG=S!E42PFk-Zo5TKbMLX~Cyjgsv4XOOY?+G_UC8oD0GDNlI50mly zIz2>dPs-Fz?)o`(L`3_k{M+gpWZ8)MZL_d{-|WXg_@%M?$6#DW-tA?|-9eC0a)*vw ze8bEHo?i|h6_v&X{C_Mys1kh#3~3b<^5Z+>LEU+b@XbvfrNQ{TS~5mH8+wczdA!}t z@F2r$neLhX95xCZZ(TAPJ@S9_VAWw8|Ks5q@Pn1T)9;P$Mwh=mIOsVpX4&~o zzieaL6$R&VY5lS;ymQpJa~#r1d14_qhFxRf$awfydxb4h}7^>49_(6}4)SG*mOw`qgyo^aXiqoL0Y>MBNuc7q$1>Dt3X zL189;rT!V#COO*2XY(?0%E(0|<*U~QSBamPZo^|94$bUj%j9d6bL~x8i*-gck<{s% z^{=UTd5f)frk_C^Q~59fzMGk>{-+3&-56%SA>OIID|5@E?5;=BBRccA-y)!(U0Bea z0oogC+Nh1`W{pKMn;zJebDB%tO?jU9DbFTqsP$>ppqXRi;9n0c{20s}F@`2IhUVGh z`5y2b_P$nz?mPXOZMhCNI=!}s|8m0AA!`WWft-il-TrWQ?AAj_4k*5{OcvH95#jS} zwSO`ffu$R`|}8 zUXGMqkkcyk?YHdeB|Z^u)x#V*#=>ZM#}1_D*mRD$FxK2t549CYYagbHOir(rOIeU`t z*WI;f-{Qf0amPB)yH)mH?n3qInR!ir@#Zy{|Ku9=3O$4G^lDo;b`HtsX@i-iU2-LF z^O)b~i>*E6VdO{<(^z7Ueyed0sx5h`?{V9|btcfA%l9L#Eyg?Rx%2XF4zV?X&HF{I zHZS+ckM4nML9!!z8#dDUv_#(?G3Igr`UVn5Yv!ZA1l2*`k2_O>n{2#HQ@w`AsU!Hv7PMLwr$(yPIheD=x8U|v2EM7ZQr~& z_0{>R?t9Ly>aMQ-(?3>s&o$SYV~i&XuJ=og#8f5QrDL!#2@jlWBnMEZE&=ZDO0GDU zZC%&&wCH(6&@1T-d2Afy&FF160pu&RgP<~wPD@oH&y+Ck_-p>+#*+ZX6LBXgZi%cM z+VdNMCcN2e(jj!{O9=|4Lx6GjAc*mhm=+{olgQsMI?-nnAzp(WyW_+YLsPQ_)(ay3 zZj~O-FFMJ9poI2ztN2>U64ooE&L?>BqHwQCK1+{dSTboGzkZ{Oc>|9CcwU z0Gj9C`L{5q_p&`_>r&LG(B`r7#=4U6FOApSsk7XEI)?p*=hKKohrOlet4vf6$Ii3g zJYODx_P_iN*`B(ZCv_l>)%n<&?FE<5W2b5CI$E-xU=s2cD_s1 zWEI_xqM?v8EWT7uX}AtJL8l$%?MR10Z@wwg=oGCKtH&wL{nQxO)2d1uqu0=7p+Muw zYj@4KdR3VLR`r3jCh2Qo_LT#Fn@?+HYKh%D9Sn)!&1dqpdJj?PUdLjS^?;&j5 zQd|_h=HtYzX9wEZvsloxNF17RDz&VUD7^S9gV>R4&X-w~-Pitalairwsfj?gL8Geb z51Rd_i1~b@9Cv|<`@$+xmEFs+sGEf>y(q-w;iLv;&B_~YyJ^r<(#_(9ASr}WWxUVc z7ZpTy*%6ebtm2ZVw0)eqx_-QB%M$SG?!F^&*`<)!DOsM#X@_KB z+J6UW+BS^|)Zat$8$+vR9Jp#ZK)e+s`t0*u_^sZ8@&YN_%YWkW9(lOC<$|MEXqu&u zbFIJn>nGfQ|~TQYfCvsYMQpe`S(dO7hwp32CjFbxT=cX=|=`QjXe-kjE5d6WBDS9`4%xdC#p zRI3$}yWIT0_jIk2txPyJg_|lCd@vb-Xk0~+LMRHZluc1IMNS5@6~0@BreUAh8oXs$9t5t~AH_gP@S70vU(2 z$%9EhFDWy)5zX+>Aax(@@ViWva z1zTVcOWDDD2Fr!9DEL9GxP_^B!^^F(HLBd;O69;k*(rpFOf$w*6L>(W=_u4y--yC= z25dpCngUto(|2oosIcOmII=ZMT8spAD~Tp4#pzC4WkS5F_kuo7$yrn!w`_lJwwn?s;82hl`aS~WH|9zn)e!j#TegV?PdKZ-c<p_I^)zHs`gjEsvq)LW?jC5 z!%2mRCzir5O@%bQIZGg<^a72hoH?lkXd&%pGoxAa5QQ^8a~1p3o$buR2LDx1uF z75xbX!7}-bvyvpV8K=f3v`PP1<7%(w(&w*#!obSiwjM-qfq>Ay32^^+WySxL&h+m& zouHGcp|Xpo&A){y(aLK|sDenmpz(1gL_5?Tg6(;v0*kPEzcHcmEP!Nbed^gWf6!{W zm5l@@Pt}g9jzMnu+!WG!yDiBUs7jQR^ZGu@Jf&ZrjVT?YH<^ZW7{R6cerPPwZd6&XE%+KX!<7MOvO^g0 z#^T}nirEWyrRJ(Iq1IiC&>GhU@RY(zU31Bel$%5_IgmUi^X<~?A_FR!uYul(#$O36 z4RGPYb?0h(NvIm^3G)`3OjZGJLHX|NZGA{ITx{_o41*jYj9LAfGJ{M#jLu4uqyBDq zM-Dl&^TBO~KXtQ-Le6a(UCQUclP`&f(C8IKsl;Y#+$UZEc4w}Frlb?Mh|EC45alC)FmNIL|hn z!#+C0++p&^A@!p7Ozlf?o^ ziZe_&1!6S7o?;@}`dgsp7hAogMC`2fAjyY%3=Uz_Wq{X`)V~SNpwEu`_E=of4D#>w zQpk9xg=gUsIK{JE2}WjV6JU@W<%EXDD_>ueI^}p$icMyOVz$5uGVm*{5+oh-U%`$O ziS;JcQzfv6DtZwZYxHr9vPxVr0mCN7u_k7IlKHMI_cr>ME&0{|{Fh!r0WQ%j_IoV- z_8)VF|DW^{GM3IRrgo-I|IV;4RGU?X+U-QHO4awvm1HAr=ca6S|Jh*7V6ZodP1>TnhYx z{Z^hW*^9n{=HMA9JC=1`byM2)9tyZrSe|Ju$&$PbBR8Mj_gez*fx_m<8mLPq9y?`O z*u6A^zhM(2?jg_ECQ_Z43MGk~ZnLhX2rqwc3etMbk=OZuD@P(>01R2~kxQbbE-NWs zP>#qpIw}--x{r`~OwyQC#|nx+!-D)td_G%~+(D|iZ#2*3Y?4pQtp;GVbVEvPf3o%| zY@lfF(j%54Fhr@3#GAY3iy*6i)O0g$`QeehIKwg|d8iBBFt;CHpbiDgQ8L3V70E4Z z7FbbOCXD)xP`>S{%}lCPDg=^|^)QF87&3;44Ee~VdJVY3jNo&9o9^(vLOlJ7Z{Jt{ z%)2_mRcKBH?pVpXEs)3HnyPJeSF5OPF^)H2{@#&nJBF*tu$k?eb5x^SEKrnUt1{Hn zOkQd#l7kGexH}CSI`J}Xc8M5#;JSsmdqw6KzfRQburktk2Jd3lDeU0C2+_W1HDi|; zQu0_^h4T3U>j=&Xcr3Mr^_>2bkMBFZB*MR1I=gqp?cVr++n`pd;F8Qi*UrT+V~Qv= zj+Y8m2pqhB|1}bw`xTeJ84n>@)xkDVcjeiqxcG8<9xt;{mN^i*D3zuE5$W| z<878B=);<}_hPRyM4FbT{{HZ|Pq*wrh-2Hd9B~f5e(~m-;7lCr>|Ls><^9}a{{A85 z&}WsEALNKksJmhhe{j)m%;3$=!B|2#c^1>;ujlcc_0k7@)M7cM(%dtQ=&i=VIvIy# zsI9Y(czf}zBU%cWy85M^$5l;r|I#&OC(g*B3ZjL4SxPs}!=M49gGENvt7@S4!$t{$ z6%++R2Z>w()+{w!+l(8vQS^GunG~x@^`3$Fl5WP&wX7`jYb2k>$3KrUzp`>ZUqALJ zewp&HAQ@{k7Fnl=erR}^wP;qa1)M~N=pyHk$rwt?e_zM7_Eo-GpM*_ZcMAj>?uQXN z&+X_^~cn#~~D_4rfYBLF`u z?F!G2_jfkRY#JHx91H z4nsH$=WaR&i-lD~(Yjuy>ZtcaqkM)IlCMc3yWp6uygb4uwTK{X_$`G&S12gccf>&9 ztv7J+Hu$cEYJ6tdr7^o*Ihr0(rJB99h-_(7*nigJ7dR*)cF3fNy{AK353x)LaITiX z0~u6Z_MkB>w#V&MUPwQj>=#c9@1dOXxmsBc@5()0jcElo&J}BO=`9ni6`?O=Ju+Z0 zA?J6!cEKGbLNj;^Q{A)$rHFYI(K9n#PK%y}&8i=MyWp#NvRn1MQf`!YO z*az3Ne1Wp+L|UBDjf!OLH;z68&ATP|X^`5lpC_J{jOvHxPa7i!f)%oK3 zGJ^VPMeYkV!g`&p`V&42XWuz92krt}abw3EwfTA@4|QC+rGkk@KkNZjP&Y_-l1m|0 zjhh*7eeQ0vHHiUj5?8`I#Zz+KGO6Lo*dO}*qBp3bo)O~Nc?XRr!;N@m4Y;mv%9Z*r zp#La2i+5&$(cc{tJH&q~IsX%h;lE0blBx4I?#Is9RLIcI`rk@EjWd0;BXmDKO)ND? zu=aj!D^`>g(G80~8F^x03>B~%3QCfw+~){m!8g^mfTw%2tI7yTD+WpXM%4^&-jmLgo|Dd-Pr6(0Q?Lxc%RyaK zX(WGt*dCzzzHU2?$=stuK*IktJd25+nW)d1o=dSj2u0Q1qiJJxRuB})J4|!ak=|!z z$vi&i29)Rqc*a<-cmXz;9}ELp=YvEuRgcF`CO}MsFq(h5R-_3x9-vHZyH|2f44TwSQ<2pr*!7?cCY_zL|U(npRpuYs8k%k$!oeQ<$t!(iUGq6`& zkgUb>b97YAm#^D5i;nR6gI3Ba(ft@Esc`+XHJT4gaL!wmDTi-?`QR&oX8q zt5IT5DezG_3?->hLjWxmCzt@(v(iDaAia%h?{N4BHkB8op?~=zalI;CORWjKQSLYE zW>PnUWozq3wP!b*M^nVaa_>Gf0Vc5HxzrlZdZZcn6SPeRd~1a5^5o=`x6UTfNZjb# zOo4%UcuhI=ZxM&fy`|FSNgHu;eN3xiV+MN~|D(;B->5H|V(f3l~-=J#My? z3Z4xtlDWu$iSR$uw`zhg8jLdODfz4gpc!>*^)M^ITji;<&M>}Jl_MX3+n^l;6Pt@5 z0byFxl@-UsVN*R8mTTts7bA$)NPpmAga;6XV~G)v@s#KIlI=o4-$-m#J5H z=n{XDvUR`^?5ip4k1(;V@AUU%vHw|9@#28FP}#Yp)^AgN}UJ&;BFe1tIH=3rvtD^o%w_;(!+SPFKfcsM1XN%zY!cF^L6yc$ROGe9%aN|0d`$SSqrjZf};lL2Ok4)YRzCy(=sz(Cu zWZcihH&*sDmGF5fGq*vMJ1U14iwZFv@z@` zN{%tzJWmgZBXl3#?U<8CVDv2k5_=okO5w4yTden#2>U(F z%eq$*aJnPXI`Y_jwTbu=_47dkzO#QYPe+bHViniM9s{=b;PKKen~U3rB5wm@E+ znyrL1OGf`^azxuSk)odZjdeK6!{{Z$z7z9qW}^wmaBNGY4*x>(^iIhGdRc*J|oF)q&O(FZ3jK_q4x8pV4V?2C^}GInXy>Q4qBsY(Z>( zydj%pLA{R^e+@`Z(nMs92_IqMfF9{6Tt+bUi#s;u_5!SzwL&7PUM%6b>Af~xY3q|0 zQQB4uozT_Q>h8HCBlMB`HHKB(jS+dDURzvf?lG1_O^{lGu~5ix?5`zrw%w~B(Md#% zkzH8#*&;qTwpFuXb`ogidlv>{pV?T8N>$#YLetGb7hVV}rg(xq_oUj< z1|LM5)0efeOlcM!5Gah6LTk>XjjMO|1lx}QRy^Z2#CqBpYCN8Al&$1aNQ3UcdwStIXvfd0a!_BvymzcDZ@id&jmNNAOub_xiGxWr+d=GL!wthxD#pb0< z$)?WeKN63M#cQKs3xcjR+oB0ek1^~$oAU5Q#75;!Hoch`xKk0}4w&~IDDREU`e$B! z1=lSf^ZUNQ$oOjZW_O(O?d|0_3p3Qc|(pesL~fK zjCvC$+#cc+*f9O#9c*-s-H8ZAd$i+kqo5Gzp|4$$+Nh78*+_cVt2!r9mux%+N|$z| zupI(YmvcPOw3DBTKlnL(r)~0_Td#5W!LQJ=&vM@X@E3Kd<8taI$Ap47>cO30W@=8D z+K7*u<|{fG#>+UeiJ`i*WNvv)VW?r`)FbSHhX>X*D)`hRxk4qh^tG#^&)%f3NbFOE zote?sa(zD54ZK<<*AIgG+qtlc=lv>5hiEhJwT#-&c-~%qzomhHaA}As=&pT7 zCuHJotH=6X^NveymkEEBrV+!^8`ONa!>U{F`Pgeu5kn~vTH=m&y?LRd`|C4p;|7(T}ZImtS9sc_P zAn8JBO$;q$OO$<3Y`NhqE-4910=8C0!BQeIWEyO@`NbhoZe%+B^HeJZf1t5{n3+XK zlH!Dpan21;OvvvA+)*kwRfS;~HD}2cRlKpVa^yR;QuqGwMCcE)EWjHK9dg#VRfi*Y z)cy2lFmKLLn8xANZtlir$jN5w&O3Bb9pUP-^ZJQU|*L;x2-+*zYkqfGYmA9=ok4(-$Mh?NX&@6*uiV+)q; zp<`6zOgdi5Nik1MQ*p${%9|ucGn7m6h&DgrbgDbj1)(FUXc_->%AUB48-?!#I_79p zjn<)IU>$B|fgRwAieADTNy1rv`>-lg2wAbK-lYZ05A2y;OaL+HDp+Pi%LPcc1KywA zux0BePG&#%-Hu>8tK}5-CIFN}tue8V+2;?TF~&Rzujb|a7D2#G&|ISS)mtc@xW>Ih zUMP+BCobqTMlRZ+WGD*BW#E3Xe`oev_`y$a)+MeKlvHvF5C<$(hH|bE%Bj}*opmcd ze>pAQ0I^xcgKpw;OlciKDJGrAhjLx+BKOrge!gKTN*OK@f;B2Ti&{pK0G9e8Xq5(W zJ`(PKH{0B!sY;9;u})Z}&`12j z(SRj7^D5|-JM7jQC~hE=(XbAhxTvFlgS{DK-e z=)Ogg&M^z7gIj(Gvfzl!8JHchZyeuVODh&XoUuOTRBth0<-M;`ie9WmYe~3Q*l)>> zt%>+MXjIr}K;sWqB>G+yyHT`&Wzu*A<*YSnLt&lM1!@arS0J2zVXZcp#t_fOjq-{T zt#*W|w7GK@U;y`7W|SdSr#vb4`^0?LUpc#6#m8 z3*Ssf`~S#vWc?pF82?o}gk>fFTiHlX)>d9q`$nfiV#A5)^cCyKgh>jpgCz=$fD6HL z$XVLt9i+@w*uWMTNJr5o?vycnK=>Y$egJtI0xlvmPlO5A(*4K*bG+h0%gYeV1llx~ zPhDLbbw|%zU!U)=-Ege@rX7m}e2r)7w8Ps@q$8Phpw_ai_vsx{XQ3{7MWbs)cQC zVk-_=1W{nZO{2#*cgtTiwQ|c#VNMaY*itpLU z)GzmB1npPbf;P)m=GH~=Pl0WB=2Ifr60VywVHU071bmA6g6OLH+?gGi{bA*TvuuY# zlRO5)D0F@gpG>%h5qOL6D`3c>wM)#;9w~1c=7$yIZ;7T!))unrDAyA`Nf`tZ$V~r+ z_G0{2q(k7PHACJdt`U$iSE1e9!=Dx>X6Voq>wH+`ZD}gC$oJhKbtJjQ-Nqz5a^~*d zP!Z(r-ae$xEMs&Mv$?dk5$5LKK0Q1_`l zj;qQ4PA(GS#-d}tD6Tzmm$TDFIQ5un%ek`Ps?E4yVM|YC1%;Y7uy}#Q7F~tMRqNUO z^Ph}xFjQ>h)bC5{Rha+OG=0yXfsE~K8H`M=-R$icj9jg)EnOI#{_DPo;lB!>sI#-F zor|TRjq`W?6Erb&_|8K3_eD~QwmPmV+R#^M5JFM_N*)@e=rJ2~{R~V;Tsb%jHG5IL zjuuU0whTmC!ua$En4tcB&p{$#-UmqMU$uvx2)<`vpIg+jFBTTbfCP=D+aJ!8S-uN0|j@3d=$9->V5?3;}a%3n*-U6(78ChK#O ztyGXYdlb=IbAT5Y)X4iNYb+y!$!N%EPV}}qt_mapDYP%1BQ&Qy)tYe;-X0dqZ@1C{ zF=tT<$mhIVJs>74UwryS>iHRBnSL1xf>~fsf~1WCCBNdiM=4~XIupenpupNV564v? zBsiz&k|!-#(%s@kzg{t}f+yZ2Fjl@ZsX?Y*SA<(*L3^h*D`{CJF3Ru-dI{nJRPQUNL}6m4A|N5a;uugES_>FWTc_{MA79< z>*P`eB|yan3XjgykVsok%L`N`&vkR*{z22WukO!wLHCJ20}yz)FZfwSA+MO963z1n zH~Pf#q*buCRO?zeCxgd`MmhMEu}n{?fPAGgb=7vcK1yWD%O9I@2?pwL+BUNvHO(A} zx3eC)X68D1EM5*v@`Lc`gufm(q)h7?O>Ih=SU1qaIz2b_DXlKGjAnIYv0F9gVOX6| z6Jf|Tq(Uz$(u5-Zc(#pm&|3!A?rel51zHBwcpWqhlNQ?)CN=0*m(FUp*6d_79(<=G zK?QWK=A&6KHiA_xwl{rG5v)}lq#$h7L@}DcGpGfPLwt$9l-SNP*lKExxW~r?vTaIC z5bTWf20$>tlVq`TxM@H-W>h8|p7uH;AfJ=W7VDK(YsV_AYf13Nmv(MzLZfoj>c=n= zY17g#h1+Fb8g3+3HO*SBbrA;IS`HsgL3bGqm8qFrKZp-Hth#Nvfw-SZ2GO6ED0nz_Ke3 zjF0L347i}It)3g+?89Pti|Y7Opc0Mn77T-Fx|-HB7Go!qS=;wOu-HH^=?NE4)2~nB zAD4^5M`m63WV5s8Zm|u$t@4gpdb5-3XoDHA&cVc88=1&3-EVmODbIt{tI7A~5HtnV z`!2>>hNtG*c|Z&I{*Tt-T}O_I-(IT&lf+>^|i;6fPDJM z+fs$AIoB*91E7Iqc`3sJ*Yr5;qGrkU`+7KC9+gvK4riLDYW5vz`u>>}KjBbv`FA`& zF`I(I12g#$!ZGlw<&~333)j#?8;@hGD)$sB?4KLa0{&}8ao-Qs@f>P1`Clt~1LwD9 zVnFMG3MuW%FfN`H>Zd~0pODAmI=;QG(G*Us)psH}gYZJtA6?VrIS|wSx4+K8B?-N3 z`f=&uhtfWeI0y-2I(lDWSwq}*NwP5XhaZV4o`kvYE19lg+X2S+)?umsf3zqZA1S)Y zzaXA+9hY{r!p(I)msa*i=yV3ytzRm5KglXS$*9iWQj0>G%_&YiaSF1oEDMkHS$c($ zHN|Gz%-e}O-7z_(ZWKcANJ1fEPs5t-8_X3Snm{9k8V>~Sy{74K7|xCE@~)e59GW2K zH3n?&r;7&YuHGN{|1pZF0X|LM_|6kRfd5Y$$^Z8BE%_ZA@;wD*|8ILpwwkRnsydn< zy{9Hrq(*<7g1!P8O5h--0C2JxF*-a0Mg+L_+JspEdV*;}wDPMsm+e;|%L1b4+T^`4 z|NT!_F5k-yQ+NhPuI%y4&9d=iUaRFpVjW1Gp6+{~smgX{>MH58=_c6LP8{Qx#%HpweG%h)AQfhENT#haJ zpaT@BJ7yu2=JWGa^Xd%L|Gap$Sg58(?>3Twasp~Pj8tq}p7cXDWZTFYwVnwR;!4cC z#X)M|$2#m4aMD*-RC>zn&OtTNm)zXzBG(4#vu9u2NN;LF^a4a!XznxS1L=5Bf}<9ru9`{`^VjeAd(CHlbRM&m>oEacn*;Fu7_s(J;D_Wy$pr zp&hwH%(ZVTFhr!JlGFoUg$Jo>0U{(OjI|htd~9h{um@8GQ;+(dU#Clqcfg;>1=Hd$ zHE!LUzw^qp{$%UY?|AoD!n0%&WzH9^i8TuUSno<^$TlibTJl0I>Y}w6hiVF9UC|Zk z*j8_ZoNJEz(9^s4jLV8-+6*Uo{k2t@4m#^iplN^3x_0!*RmM<@$WKNfBd%I8OD@8TGA4hi@-1@F>Z9M$EtE6(r$rK*R!$ISTCpH zR<^j2{y_r2FAthRKRCTynLMaT(+y0^O=HYtjvxWzrwK{bsYV~mq1i}P61k)f$oX;^YRL)-$M)uzfzFsh{8x?xof>@)gA~ ztP9b&DlXT|fbM$TAe9TKm1{<+4M@)YbJ~>8_~&@F1XO!p%a)_#10B8R8?Vl$uovPA zZ`3;;SR_@dGTi(IQYk;wd@QugYry4mK+bbOLV5@mVW2#7>L$dq2~cjo?z-}|@^gQv zzsMP5?z||n{KbzaYJn(f*(sWOzTzZ;yc0gnmeD<6Uee3@*f)H|!i3*Nydu3UdpjZ= z4pNw-fW>e~{j@~!l*V@j`g_GNz1ba*`LRLTz~jIYX+0-!}0W(^TqN*18&lB$q{3vwH#YEyG@CA z?L!X8Gos?~Dlrli?Qfoe#(*DbH8vS>OVBwx+hUz%c!UW^Oq^1M*$0#)7N1mhoPp2q zQhXLUX`L4e)Drx|urRMV)k+0J7Uf$aE{|9T{4SN}=$vccnU+)Q;;>iyF!>8)`MP{w z$qiPEr4)$9II~O~cQtIVLI{e9JXXW2Z{T~(7h^`(RGOX;|GqN7chj@oMuk?1pcFL`(O&6##{5V5EH0&&UH`v=R25%|Hv%insCksMWA|*-+W&YF+t_ z_56MV-ucyXHIbQqZq!9+a@g^9$@}!@%X!lGZa)B$fVd#oszNlvQqj7(qL%Eht2W2? zIb^Gq4XYvwte~e+pp;Dk+X6oHo9#-oB>tXX+Qo(e7mD-#!{3|8C_dD3edW{kb5zd1 zw8KeuY$aeZO;l4x9A1283;&PJwRj_h5zQ|5nNW>@Nn{sW_kJ`47q|6yW`;tPrA@~V zyjXB&z1}jCz2|0xpJ|wWlRK~QpP=}=?eWZ?g9phRF;=p>e@J0r^*g3;F%rX$5GmC-F zbU*>l-9vcs%R!I2$S3_^&P1`XlpG6&b+AnfB>v$uMXuD?$G3T5Yvnu^>|hi7zMm^l z5kS_*%u(<9XV^nwYu6LT!(V*X$`s&FHpfxUfAi11xm>dStw|uf(jFC z>=%!}te8|#y^nK#)X-qWJ@Xu(m5hC}eCkj%!q7fN*#9Y9QD--oWd@zECTknC0RF9p zVbF0YB>=`(Qt0|J0<+)-r#m&!@(Ckl&6d^P**CBqkkf{T{|&`yg#k%Q&HzN1=Yr7_ zDu>TE0w-?fK}Q03j|U<}`D{UG$~(0`OE4ME+*WHg*E8KBPrGQEkz>FkSC@IgTd(Tn<<} zL0Chz!Nhm{5oZ)opX?B^aStEa$tOgPYt;d;pUv+6p0{eA75#qbOA_pJ&P*76Qv~nY zD!9_Pzd)9{&8M^qDVO@uHzApTv>2f6j%*YBY z+hKH}GY_&0{!r@XbnNHVUBCy(h?SdX8s9DViS~rIFFGPeoH^{c!qkYU5K&ykp$IzDm$AJQyP0)kg!$MN$oJ5jfc*PaWn zpKfHqZjqm}r+bwx;AKK9(qIz2<@SO&7mD#Pn82WVJXJcQHP>nwe)N|0&*Lx9iGYBc z{SysVd?QVRh>$DwP$oKBD)#>lYe9PzavIRBZ(>A05 zoPAABecPkk=pNZc9Dtw2qt8F*YC`FuDFdcbo+lf!4d+wE{feBXRJ>)rX6`XM#_D&z z3YVF@b!4tAz4+7P20+1g`Q}{x4Z&~LI4BzmON!F8F5Ffp7%%n;3q&Bz4FdV)@x zg-b=0p;WwAcJU%-R@D9Bm@_(N*P!ol*RN|2nJ|uu@n@C?r+L)!e$Y6`t#4rmqdIjS z-dM7Q{{S{!p4pm2WyN%g-zXWYYm}8Zr@3$|aQNHXgwPU2VflDt(k5efeWgLMKuS%+ z(-vA{MUPR5S-(tOZH*XA67XuE&S<8=CF3mF)vQ5?09swFwT+!&e!JsFvxXLCgGzr` zw5ktbJHNA%5xcFlT*nLV3L^~}T2|5`hdRCJWYv37!h`RkLcQ zJy2cfj)^mNl~_dz5;U<#4wY69eCCy36B*I1QId6D$qym7n?h^$NJe7E$TXC&QrsMi zIII7`VcNCAs`vrl2F9o%1(&UQr(ss!-JRr2x`bK62*10qPtujWI&qd81zMb1N~`Z? zvJs_zoeVl$+9dL!c7W=GvW*%qqV~@^5skcQMn+EXTOCmQB=rgkw0pA2-AQSll#yZG zO?t*pT&(cm3$hm0+>Z?HX7sY3Fpjt&Gn7(*AHAKL-L!e0uuWqD(Z5Cea&aQujZ_ux zR-7m^5F6Ys|G?Ya3~?J*aDQAV7C~OluamX7%aBf^Z(?Y`FJ9nz@`bXwbAQZo-Tn3R zKEn}o0*29GqegUPjM!-iL$kR&;IMDPDph3DVRVIj zw4kPEd|@*2{5AWFb#eQyhygOuLrKKvQ3clB;?oJ>`P_#BH?13QSGX$?Su+w8j4Lg@ zHJV7hF1fhF+O{BisK?5{D?^d~Q+nQo;pdI5Z+BxZX5k$I$a|^t32qlShO*ZWD4Gx9 zse4pd;4ghWH;U#jd7%~@a-=$@G*4D)xns+yPF}`NU1b8%_m9@*}+jv{xcO`R#77KBTTnn6t{H;Rp{sf)VAj-jZt?SvHc@imujfctE!=&{im~n#| zW9u6JMq(V8?#5gikpAU6&Kf7Ioq-&h;m(w-*l5-TqGAMWfp1j~rI)>gsx^ z67s!p!2XmYv>1$jWRP&qN}D4~oO=r`J_F*OEbi1C}I&9`HmP&&OrbaSKd`|Y5_@5Z-@$ktw& z4cv8eL)oq{v0#}3>-vzih=l=fwjsX^S0}4z5B#Uy9{SKdt`3(CXg0^Q202Alxmso8e0hDHiNf@$ zhbzcALQ%xI4U9nKi{%bI|8&iKxMg0jX=ruAOG~-jg7pGXKK&0LrEa*&8LLXTk$_}Q zlK_QyhvqGLe-ZK}vlEw!gM-%}&@dN>Vh;CX;3NvAk+CJcUad+ti>dd7xEJ&(tE}5g z0vea9xK#S*E+J~>!8Vyzpf7ppuGkR|%Xh!v+ z_rpQ`iCE<=(pM3$fheL2DF3QJzF)=Z_Yt{dVKRkT8KY*z%*O|G$tXRWE3#KPhdEpf z=+j&3yfLPT8((u`xR)4o_PQIc@ZqSd`4OTgU6k}jzgg`1vYy!0xiIq$B|_$sJ!c^V zvRHsj6j5PO)nd-6P?IyO*FtjvWr&5YXkU~58Sbr<9=j|K)T1uDeddXs18bq#lCEPR zD2mc6A70+OOM04#mnrtG9~S1lj4J*;!7=$;%Xd7w&7zaVT9n+(cHH5yJ4zLMz8+co z0U0R|`pjL~Och{`*sLXuIW6i!EP}Zb!)%o7y0jw(|j=M4zB}eaS+Ld%#20VXI9=|BS!s)`NmJ{W9#>f@JLpW`SL6`GMsAV@3 zUQi4ON;yU!pX_({e%VV(uYs(6Kx)SCm|PSlnY@E1IR&vI5`Xt(#GYX?sD&{r4`EIb zf*+a{(Sn$X`AwW63{AtNB@L{VOzhQ0^N$C&Epvf<(6;1EM^e10ufQBpJ8~z|zl}XU1-StEp1np68OKDZJbcVWu=IJ@<>=7g! zQ2KCoqDMLKi|CL@(?_k;NJ%ue<}?%5^6>@oQ+8{L8BR1{e$T%eNk+?>9MCISr4>k5 zd4orS&fvYW19}nMF-}br8!>uZ_LyvFUS7vwj9xSJ?z^Vp;aHzGPS4I%eM_XF{QSSZ zRR9*uhv!n0Eu2i^Zjo)MUG0&#c*f)_S=n+|jS+gUTB-nA+6U9e*&MyqHQ@noOF{yk zy36H4`k}Np4@6lMYEX=AKNOIop@;;yuU=hEAO4Tl)ErlG-jeg?(_&1b zo!smd|2knfk}m<15g6!-HeLO8_#CloE5!G5Aogqlx?2*uXA9f{s$UkXfmmk(GT=M$ z=5t=BA|ft3)FRr38~A^(z|l%7EO2#Yk7gh4p<7WmAAyKW`E@1afx7hyB2VDEXEK4Z z+>e4efbVtDNIdcTnZ)93SVvDR_I9g*;=N^1OHo9f+!TA#H_T{H#B@y@UPzb_k zZfM!nV<2}&Zv=E!2%f*ol^UF?>}7sA6_~K7 zNw=dHiAWl+te17%4-)(oXdm3L7hB#;Kq&yXb3kkEQ8d6(BIUn9cVihh`*LG%`=-(9 z;MhV*y87PCM0!!`x3`D3H>$5W>-cxuzRUv?Fanv`fx9;edN%b6+01BxF73&K3 zaimab8X8tGa^4-CPE%m0vcX=&2D&$qHJ2Q*pIM7R+dx3VCBT&3C2jntVyZ~3caB9k8A${9ityYivy{WMMx6%)`sa1e{l_R(ZcDO2+s zy*Y}ba+LNme@-0x3}uC|8^ik~5C8u#_D;c-Md7-3Y}>Y-72CFL+v?c1opjQ%)v=9^ zy^@uV-5sa@?7dH&`p?DLXIG7yRbyPun>lNY@x9OYtZ9!s-}~ZNVO#%M90iJ%b@XLx zvD#?mB&^SLJ73;+c^2toXdn#YsPtu`Kz7q_q*QlV`sr^G6d7kizqb1O%~K$@ZWnA; zTQrq1Y-j&$mKSNGzlsw+Q%_C!>J~(rE~dvEAh?ukFjunHX*|Ev9U8ln}2urH(ucKmoOJXSc&E5^C^h) z^_fXZ8ic)Qwhfb?n#2+4qNJN6(QDf`x53v-*IV`;oKz_a3KsUU7!ww5lz-#OGBRE0 z`#xM9@S-kr@YpgJbAZLT>D&xFy_HXf><(;Ccx}PxnS1~VNxPXClbTGx9n=dSc?G<{ z!vZ>j?{%)mctHoq41R$`4lDFD+hdJgpY}Q@m7siu*|Lfnj>< zVC|m=T9?!~>kLHtNcwRb#MGa?!r2#91Zwx~h%Nf9?H?*|Dz&G~dWYhl%UUsT3wlJj zDI2)YKGoV&YGiN07Ex||0Dq+=t>D!}`B^i*G@wQPv!3CUn7epSOW{nYJ#SCv&m(wG zHRL%4|9AhKU&OQL#@grj^OLvk*3u+4R*E1ZNI(Fc$sh$dpv&D9MF-{JU>c@C{ZGdf zF-fgv<3slI4A>94muE)bJgLT-mq13urv7?)WJ&#${@8)(P7NNo-kOWp>Szgs|LrRF&(Dq0@VzG-L=3Uly5c4ne4*UBD{E^uMR;tc121rfs*o4 zYA;jFNYQCaie8OcU=V>-C^T*hICfO z^3}qtyFRs;Wf!ydzmjH?Z_DR9E}}86qd%s(r5|PyrI|M}|L=oF$IO?{dZA+l#B>UwRdW~qBk&(QzQupp4O z0x3p9c)Ax+YjWIJaB(K0nMxv((m8uD>g}I}l(FmGwK)ZYYZ=&ead8x2zyCqj`ff zvDttEiASO@7tnKX{6Z-zpLv~kPrcK+J*?rNK#9B}Zd&58h|%1)Rr$s1S|G4f|6uFQ^l%QYj~PoX%6eieKv8>K>vp^Y4xXR!N}7s>|@UD0fAF31O^Jy<6J6nzuF06$z86;Eut0};gK$%Np8$oEk3p>>8J^!K!d|ql@aGW{Zuw1 zAyIheG=qjq;U)?*0Zt<=wkxen=<`$Kb^v@oX9*Y(fYgOt(py+nijbf9CNG?wRkGh8 z_EZqjgq_4r6IM(WF;|`t9y5;wmx|_9(5*msLdI1bh>)8_af6(^dA{*!>O($-nk5~( zc@HtZSqi^D{DwE=*gj#G{R;WF8hj%gqKQ=@)jOegBnSLkebx^G4{ZdRRfO=$%C77! z%hoA>P>?-!db9eGb8Vr6f!r#0*IW@lJY=2H6(wv$lMy=sNO+a*Byj8O81$^6|I(er z{gwu<3p0mi0zTg;3G74Y=*`2quptb%ll`4Z%GniENE`6mER-)oF{40B#t@&<2Y9+hPmSY zf!y#{ncLcbQ!ZfU=|>{rQ_ae`5pDFV^}G_mPa;z7moFdP8>~C9PT0#|T3uivYadiA z<4#zbI(b6EpD-ZH`C{Gmm)Vo+I=l3nO3$*p4E1K4WTBO&J6;5DLq-_pz2na#sQ57u z;+uj93ww&^J3FN06Dr!ztSZ@Xr*Z8Z24aW zvO>-OY7h}6$>X>tPEl2+`36HHW@G@8l4y_7Qpa7CRBJY&nZnZs zv~c%jorzm;41)q_DG$ufdi-$yqCy5iq+5mTvedLI?YAn-wR7_} zUDO_GXXt2mFuWBF?3IlnUP8d?)zZuOV?(NimS($aY;m7yU4fPrv{0bRus7}DVg$3T z2E=CWy7lMwfqLyAe=X;F1l=*wj{Ci`x<>jQ-O?FD&fA-rEYW{;7u`e1p|bp~;zfP~ zWr~t)mP5mL;BZvTL=qv#tMl_oQMAl>r@VLE(ntjucyBwI2)&Gm)o#*c##&-~4p3<{ zp^E%RL}#AL(Qo6!dIc5~lk7JE3%loKkCs}i&@92Bw#5Qd{UfL_{ng(nNn36y$Dx$F zkd1O6^{mgez3k@=V$4KWY?v(DLt2jZ4ZyE_hr%}9`Yea8-7f1Bz2B$Ai69}ulP+p1 zPyFRpNzWS&z$aK|w&Ln~349Wl4kBlway}h7K3nJ9sca{e?x}JXns)O-4O($QFr6@Q z&a3HSt@9se;cu<;#y&XV{H3DEsvm8^1G5s@iroswl8fl2Y^|j z-A3yvlsC`}bt8h#hl_llJ#hiE1N!ev(j6#mg%%xc=OJbe{jlO?wkmZibZ=8V^t2!3A0V2 zBSbs|XPO4l%FMa|F!+`kW*kVIkx&h;>*oO2qY%7ot^Qp1o} zl-7C4`|L|Xst&gY)_0ttqu661;2}w$tYCj4$ml)Aw+vQI{%OA_0J$!)AZH9&wNi+N_oc9whHjAmrGe;WaUVDQV3WnE$HNJ;1tv~ za)_EzZZ|?r0Q6$712A$`HxcNkwcnCK3qOk&?le=rR3dNpAO-y`h=C{E?ZED%9gpkH z-+QP<|1J(Ez)YLo_uwJSTr4&C zL1gwXa=6r>4$Uz>PgnUvTEQ__+fQm`e%`-hn1J9SGBEz#f9q^vkd&aEcuFeR+6cog zHKjH?sqVi68UJH2*_^fAk6D7!z5BWs1_@h$j^plYL7!maH`1l!ri&S=pWg=Dxx@#A z=L%MQP{J$%n`VE*z&l}8i1CMAuJ|Y;kXbUQE)K)%!PQ%MD&I%xpw&CuB0BkM20$yj z-f74{*Bk(a9$*7kYPFgFL|U^8!8ujIDEtI@^pT5%@DdVdGQOKdkSCV;(=}kWGiMRj z#kbUcU-*@Sm7y8+9txs-B_VNz`~}DR_{~`PGY6Sjx&~OMWN?wa8|{!wuh-ley3#`3yImc#xq-gh7}}ewabJ)teyVUDNIHEU%R+ z$xfEmxTvY0F&pV!)-N)EBAS&p`XoffW#d<LiGPFOSN zR2u>SiZbfJ$q)&2XN}aZ>;FbVOIjNfw%(@PH zZtVcJ8xEjyrW~n64(pN9%sa0vOd2K~NmCJ8O_MOK(?!>AwAgS@QqK^d*R&}tCCN94 z)?={nAQ7>cBE+^}*~Xl8q2dc&)eDL_Pt}^B`nVQ-rBUxSZ9XK^lD(dMjH<-b>-e9On<{jfUIJFU2ejP=zY4U~22_U2(XpayqZ(#4SarTj?8XQE}N7RiL zxoLggbC}RUD~Ee21BgpqENoMZwf(0YqK02UZ9+DKxotu?;_-U?=wrnd^p_{VnyXJ)+jgUS_lnaH(ge}?Hg>yf)D!8>qCF2VE5t>NVhxs zB(}f5zAwk`my}2&dRQ%TGQ@GD#r4%Avl};N#ASXSbN*Xax}NNq4LYE(%KWzl$7f4Gz$GIrexe?yCq3vCY%*4Zur%wW1>!dD0!sKbmnT&EL)nqh;5|aXk z7xhI{km21YK1BsZqrE`aG$GEri4!ZyNh(jQ$HGx6zKBTX9`i6rVL6du5q&nyA-vGh z)sv~>65SocP`%T|xDR8xVALcZC8SqxFIfy)f)M zO^f=ID0ii)(cPSlOJjm5oM5OrQ18JHC1XUo_c6Hd%OSHL5u zxE+yp#5lt;fqC&KQ>keg{be3X=83E9-ydQ72LsZwJS!Kpkim+W?zm-Y&0v|oQ*J-N z-wJPO#s7`u*BpSg_Hj2C^kYN6X9jPjX#`pIslj4LCi2&o^^aBViGm`?;1Lia)feue z0nc&@6YE*$<=I@)9n{BkbPit=T8 zj@5wTY{%-w@;jlTNBU!C6G3LYaLKX=Vl3}bI4UhxY5hGjkkm$oWe|jc#aAr0!*QD+ zjOrRPZHQ6h*FHpx+Twu8{2i$`8%0mlFsH=?%@tiS%tch{N@eqf2E&dh6YXl=1-7f* z#pZ#(YELTB17Ifj+?a;DD0BBl{DEzfhrR`(wsTAcJPwy#HIZ1Sk|_@m;LpAHs0m98r_7ILO>$GuuNs!!L z^ciZ9gKYQ64F5Oei(5FHJN&#ikST&i2}$cq-;^d)wbNp_61qsfM_@bcg_|y8nA7MA zPI#ml;@g+aQ(oZMi>Xrae9#n^w8V+R%M!su--U+D_zWd{Lfbf8dCNY=QaR*G&70Es zO6z!1ZH3U!Q>0DzOv2OZ1JFB^XQGW5W*=LbnnFL6&~*QEV|`+&Y6e|oULh2Cz?m;@ zm;@l?l`tc~XQ`>v?_d()j~(Sr&{D3rniH9=LC`rO04_db_b+Ge#IW7dF6EL4v31|V;fvgM zW>5BclBeC0CK%pj+YsN^JTT5q4GZ?@q!wp&-&ULqThnSAeRkqV+)jqRM2QIPnXppz z{mVEGmr50nWV->QLu>DeY0rr*?1#Dm`o44{XZu-@z2AVs;coLrMm~Og0Jif|v$3LK zHFWtVZKKD)Fzl@uMNe4Ao}iR54waAyQ_@)mSSNiTT<63zQxr8}a2Ksa)^ihbJl#%g zudEJyRd@OvigbC(oZs3VfG;Qd4xRSe`NS>=7#NuhwAi|U8fT$A$>cWFE*1?FEuF$d zC_YXZ9wLW+IKDwBR%RnVj%BFN;7$m@x=tjKv~4zvDAsru>>q^QP2oi|9w%I^4%H$Y z9YMAzNhCBG*C~9Ke}_-_>eSdD)wn{FtsR+z+$yUT_W=S0QwkRpKv>)=MYK{DGS53EgRHd)D!G*?0#zVI{C3@zL1<(*+^0qO7yHjV zX9**jMU8lh&wQUx`8@$iiPPztD5OiCHi4WsIL^e?@~;)9zEHGGaQ!XeUmKQTU#8p- zwwY5Ogn>_7kfc&i?cFU!Z+)hnRuLCL_z{Ab6jE9=j&#MrPU;oQuI zR;S-zmSeM`oq3@EJwb9<4}%b3wut^6Gj|%H5nllX(Dz*qR;g?NgD(si-u*AVWJ=ef z1Y-iup#ED{vh>d}8IPbU5~bN1i%dKW#F-eSquSrFKe}vkFnWelNN{)X91lLxZt zs@C%=B-JjdI$fP2MUFk<>B~0gtE5#7xvez90}l@|#QZ$?>-o6*Z6XY2(Kri%5j4|x zf%@q4B74=u%^1|?S*cBg!F<=ic$n?My)?fXgop$-)mbg`j!6~thcWSL-EVAvZ!u9< zmLJKiUCS|OTTqY}U7Pv?d+lcC$dS{@PjBkYHq{vLWTwera%f8hddm)m*X@>%HS$=)9{ zkbE657=)^^fJ6~3AgNja#0s34zH-5hU+FE7F!p zspruuB$Mj~S)7bKkXuPheQxj6e zGR5#gayerR7};x4T}^eP7(#C87=&^oa`!H3K<%t|ONo2@GbQ<*B2_hZNujLq%CQn@ zu}`JgIU=Ndqow8@uWSq-AOUaGn2`L=O!&??84LK`w>LT?D|mam8SF%dK#inNggWMM z$!4wCw=td|IpDvQvH31gCnKGycmVeWOtK%fZy=i?Uyz<>u@5~ux|a-Y2ez7^!}E&3qu6sa7=OwhYfXSqq_ZILlbGc|Zk zzz7&M7G7dzBs5S~KR>e&aHytROwjRCeM$0Fj{V(E%>2MyuWxKyuvB?41C*jR#$eR| z;2#Sh<-#C^u!X>6GuiG3?rC9R_S^HnIvUwCO?t<#kL4@hNk0}@zC%&(0h<&7sNVMYGB zx_cq&^#j_n7gwjQyz2*EVC{3IQt$%wVsA#DqH42Tg*B=qj^SfFDV3Hr?#%AWG5+CX zbo6kqfsC)}2?V9{1_l1KVhr3Wx6AL)NBzmi_y=;2XEbcj5Px5mcYc=`Vt&TMY&VI8 z1hR679|A6s(gD#Bck)3-WcK4}+W0@6&MB3dzAsC4aZtwDYgr#+BszNys$Lst>tV6w zEN#^pj-I6}sx41N&QJw8q#)I4%6FJTZqu-6uC^0jJJ(n;wkq0?^=zPp1RaIKwyAOK z&f3j^TL-Bplc9Gq(B0*mX{TEkssJdOglpl*pXE^Uie$K;E9vO_(!pT8YE>sT{x zY9+^$5NAI#^u4OHJ$dW2L??BY|8#`vF3(Q;dBnfb?iSz8Max|mVn4x& zL`SK#m`T+g3O5QnI_j`FkkZQk+wVkm_qMUcF`7X=t`v3wEN3>Wm`2Zr!X@Lrs#v0?>G?=tNExwq`Q#))9=vaAyR;lK({5$f9m~QmK9wu zoOEHohdH{T`DCWL4TroV=#RW+F!)Tw@+vAQyH(WCnP-(~8M~Lci;~-6%(UGO0E20_>%~TQXOrd z6jGLZ-RUJk=KSd}+ak8{_cDuCg7B3ZQXYm{>P7k9t@Y7qQw^E_)q0rtFwN3hve5$1 zyE07+XOn>G^&EFbE|;38^Y%P)Vxr zNvev5_xK<341Q#S8rNF)dVj50?nm_1jqd%)o^ zp7XShy{PvO&Nb~H*RT-D0vA|^ZWFzQn|Y_#K>tkOc*d5g_o=bj3X&B17aDP87T|Wx zm>+e0{HELv-#+kd zw(`or^ny5257}k{;=3FamF3QsZz)+gG0d$?m*@xVfCpELR^(-C3`nUjzj`2yLh+TrQ z9amfgEG0_J z5c`bjrO-9E9A@dv%;@T0fUYaHe_GzB1Wis%06f=)tjT2&@>Jh*))gr3ZbMd93dTAP z+_Vmw3WQw{?zId~qwS`G_%fa{+*FJv8)5m5Hl3nt4VFpQ2JIoA`$jC=q?NJ zm^B-!_$rj={RjXa;sHl>(< zJ9+udzB_w&ej>iA5e7|!Q}O>fS>kxwh`88;iEvOTb7giE@49Y=U;iLDkSxos++Ss_ zrj$Mim5hmZ^8ejJ)>HS>GdEzWsZ+nH({5;2to8W~M#B}6h&`9OTmMR~!;)tzy~4`7 zhL)b8)#GI;V>8-QfxI*4ek-Nq@9Z|Do}X7!dRQ<)HwAxV+r&Sn-A3Qk*V=6wwBmN#N>ky|UTGUlDZ`+vI&debM%5501(Uu(BFW zubJIHPwn8vzhTmdLR^I9Pwwv{2_52?Kh$GU??|H$(cDvYVg~1%5&T)8gtpLsT{0Y= zFS81rlE-Dw%~VCJ5S-(&YklBsFT~B0IwCtGixwK^+0LkMuVJ~CFCp|U8FQV>XIeIG?n zT~r|*n%HvgJbF9Id-V=9GW4h+evdCo;}(8X3}m4VZt3bw2BzmanmyXl*q!6X;t7F~ z_%2q_T`?zY8Q`^dve~(XitQic-1t?*T+*eD;oa+7H?sXFqOT~%pM z$vDFU#%!Sy4c3SA>NQ1enR-puk3fi7-&gGd?1NeUkaS`q#`^i^%6S1Y69VOl=dlLk z=YD`stnGHWekvP|URd*cAIOpTR1Dqn*(WL&Jq|oF}x1I=pS;sWyTru0fejH zci%#?gps;Izekuo%J5B+(eTr6a9gOS_Zpw?;F;``s3hx;b()Kt%FL5nX$6M&ubH?SlVs}onV9<}gjgUP!rqvayv;ooU!X}Px!gy# zkZm_%a`iJD|4z)df3y|JdNs)VNQ)|Bhx<9w3%UQ)C42J(@;5|(&pC>HW#}gqDJ*Wq z6tPi|+8^NP>7O&xxTmBvr9j`EGI4T3e;@JXH(eA1Pq3o{G<)U5*ix1bA#}qk^WgUx zrQ8`=2D!OJ;3F{_wUx91G$D^>@w>gssLc!!Aw2+zd-NQgu^s43>_(pKD;7&y->kwV zll^&49q7nD(ho#oD=aW9OAvc35QxH^@gkT_k*bC~9pO2fkY`6cb(8R$AX-ZhwukIa zLw__2IS!+^3V4V0HgjGMv#3TJ9l~G2ETp#kkpv9=*odxEGLY+(O42yYkAia-;$H4YUgZu+zY^*Fu6gVl#QKv`M>tBYc9RD$}Eb~QWUQniV*BvQ-? zIIVL;o${J4`v#1;Luj~l0@r=-DcB5(AJKL*7f*8u`ApWO+==e69HOGB!?Mbbyr0;z zcVKbb-UM3P)(u9v=MBxNqd4KkqJ52lQqT^8%QO+Y28_u>E{9G5y$62PtW{nMOnv5v zb^ZJ!l^qoG@gxoR`g6{t3Y%jbd?*EKG!JW)QYrXE{;#t{v~-`?GigotQ5XxtM^{(@5|xESR$7oxdCalI#&GLHub~>WF3{26nh=bLhGWv;rBkv36bf z^+SR#{Pkg+x~R8XPhY(Cp>$uEz66`JX5C~tONg{PLk^7Jskwk+%}4KFnarYYG9YP;s8{x`AU(P z58Gu){+cYo1&p@F8{^O?jR$-x0%S;>2Vf`NTca6_Tpxnx8M}e5!6)86A^PU1?TeT0 z1$Kf@J{_DR3Ui>+wfXDc=G@9ZzS!3g&a;2a75_R(GCvoR&IbUIVHhZ*5Q#9GlT#8kM8!+BFq`OnDAX2Kp-Xu5BpNWJt+b& z-fkdsh1Sy$T_0%`5K=W^Teh4etkq4xZV6?%3~nc^ck*Lx=;N79FtYcMIuOcuV&af8 zFfHt<`amU+0Q!1pzAL-n#^YGiWKcX19v3)6wceN_{S#;AgWdGYjLg`Fs(TnTm{DPN zT+2$k>x%aG#$HIaZ1A6FYSl=}F#&Ju0zv+?Q&NEqVG zqUq#_=s^3#Im`0i_{^i`w( z0Q)Be{GgA0vZ2~D5l4NGqnK?pV+)40xC@Bm2>Dj|Oj(fdFDmmHvu^yKYQzg?>^{#(qSilmv%WcD|fUtQZplhgzpom_&)@xDcvQX1%3y#u)C|5>( zX3sc@RZniv){MTsDqiyAib)f~{W_5MuKCWwsM$(k_`02%p*2r|eE*DBC&xm4BX2 z&W)TUoE~zmwPaJ0zLZ?q>XWv_8%xT%P*k9{p#_yDHj%d2=w4WDz)?Wv7sxL_D?NZp zCHs#tr6BWyc8nL{Oazf1tk_aLm{K__x&!&7FKy%Ez+(gP!QYdNJzm@s@GKit?eE7d z2Dla}CIF?j2YcV}Bz`4O+mCO4ztfHP!?;FnBRGnXYBPm`<(68WmmDWjp;EHvkwaIr zX*g(4r|QHjTcePPwor(n%AG8!kyK|-<*JuUOXHSv{7vGlzwAwmp(zeEXU`*sYLK>u zCsv7!&Xo+8rvk+cKnf#q$}5?`fY(=qVz%QEOV)?d%BxMcs72ZQz01x2!L3Ed5Z2X* zW7tBDF%u(6n%XrhZJyK~n3O0<3rG`CP&&d?QaDVHe6O_dO`Q`o7 zq)yp#{`$n3Ke|taP|j?IfdyOc8Rg}bFHnxH97B6NHXpa?cMGuk)9Dq=M5o;s>DEf_ zI|C~U<1yFwhD}&o)zfVpN>+I8z5w6Z#}XIm=9@ zw0!FLt&Ie{`bPx=`@s)v5w?~$`%ws^;(Bz>74KM|IeC_&zDAg+uY>j-Jo}&4nCG}6 z`9E;Gw%X#J47#+zXr_;=!%&EWA@(H_;b8Wq3Kndh#cGiKhctk{Y<6{HD?}28-VE0q zrpPL>hwOswM)ti}VSBYk^1Z)6BO1$5)obF2&W6H*+)e=QDz!$=uZA;Ql_)Cp(KST{ z6wzJwhiBgOb{X&fmlj)7#sXQU$ONqc3O}xWoQ#=!TRmQG{dEuJK(+*J#-zIBw96xH`i}Kn7oZL&(M$ zheIVd;y%`f=!G$uXZc@)H$Z6sowGQ#^LPUghltvF%-oHT1v`I{)_J0JbpKW!Vb%q$ zy-RN=(kC|HmfVf?8pGh$&5cx;nq<&sH2k?|Bkm^F>ABk%ZUA@t4!0TdpTgZxv3WI` zdA6+i1T6_V-!bcJ{KTl}U005@w^yXEdI3cdMkWy7tzm}4TycRGPw(7LL;3K zzl$xP`lPmrQ2~kH|A-O}qFFM~p&x~vef4j`3H5Lv9Uz3z{=SY zy?T$gopL8>FGZaaCw;u%yd}t8w3E8iq31>;cJJ|gd#)^e{v8K%rtp8;80A}Y4CWpMmu_$w;}_(H;{NllCtF1j>kvm!_6 z2P=N2Ec_;QYjIucA%abmhK#F2<;|sz()P8eHGM*T2Q60ndgOX;-Zmk_D#R5zYvPgI zX40P2oi^vQvmCknf+a(58=58qYYD_n>=w(;f0W)fx|jXCmQVc>znXxkK|pG;VrUz$ zIAVJdYzwzQy%*K6#Xhw{pcLhWYT1%-|Huiaxq8dDGPx8XIeGuoj7J*!Ga2VL71v(F;%8$(HbHIa=wHLODIDsnPFsitY4Gtu0Mzn^FaV#N#$?rAjxM{ z5|^Vn;dtIRroGEnDx2c5{GhC3!TPyUBlj+r?HZc}XDYt;&NDr}+F$Ew%T8&W^(M;3 zlHT%Ic~d3FShkeaTi1h?1~LCJ^2JB~8RojdqP(mcK3pE^$u8kapr{>>)~_UV@wuQj zu)QpfUGfZg$FsKO*9#@KHVYycCzLn$J!AS1EKi^ltM@3JZ1BVA68AqRiD^%`w~icb zKz8Q*lptC<0_3Blm_>;M;6LH1o;l@i zZNg>d$%l#&cR_*x>G^0mcktZNNY@5Ibmy#iG76QjU3Yf)F5KWuh2~_YvCv08$t<(j z$3voSB%K*--=fE($a~8jG96%H3z5&HXdPUFHacEC1)FsIAW5IzTOhoV?O#h`^d^Ma zh>Qft+gLZziO;Prr5B1`n_U>oT@%kCmq!tkpN;ERO+AH8bUzic*SanLR;94u(Vh#* zt-aL#;`bPcoBQBMHmU|WrE^l09qsJ4SOzolPW<%3surCnbT%?ZW5pT zKd%%nh{+TmdP=DQ_DQr_j1V{I6IUTWL2kztGa8ilk2$W!NV}(ZShn;M$Dm=V3@t2* z2AblZFv=+oW=VB4#X$rGvWL4IelX9VT+7t;5qm$Jy7b?JR`-VY`@cup?;%NH0v72dw{%r)A~q$x^ zsk<(ihKyu>1S^K+N6sAU-8&A4u;EO3*apEOjm6#zo-2i6E&@7~qr7gJ@y+{%e3<*B z@K7i`{2}|KeNoCzZ&6NbP|wtxc@rR=6~@5X42@-<8SCMyC8ovbpt8yLA6wVx<$l%8 z9KsVX-L_Y5sq}b(MV%2&#-j|v1gFrF9`lY8L}i-yM`K)&xxd`Ra|1SIxoe8N z{kdlOd$HTRy+bws8=!49n&+VQ^KSh-~G%lrp;uX#JaoI?A@jR z3}YGXOGg+C+p6i<7m*GhM(O)7+%BgIEB=Xx_)<@EFTr(B%ycZUnYs^Y=SS6%O;z%l ziu`9j5Q6cB{MQZjug;W`z3SGy;K!h*z{RLfG{g^boY!#XM+2V7{^;3NtNZ&?sQ|x7 zns618T-L2ms-5j@0mtY{xs!9cMn|j|TJ*^gWbo2o*9?f0tNdS5cyW`r&ozLz z)bi!U#W6BOQ4051x7R%mltW{DSpYMy(#((a{FfT*?7o${bTJ?MzG%JXm~yigm4K3Z z+FV5I*SJR7%`Pz8I}o}4W&f!;(vm(?4NjHxeq4HfR~4?oHTVMqmFMrZ4S(h2^!1e} z)qURM-sB&bE{#IA*hG^;R*S|$%JYx#vS}*fdG7+TBP&$K3xiPI(T=Oe06Aeq;TNI; z@vG`7+(YpfjLnMdL-H4d%?h1Es}};ji1kBE`+w5?R=pLU_0;_P)6vJ?Kq=T3Jb}|# zE->i>&~Xiw;y1x=4I9D-a(gG12oAp7ak&`Oh?#BW0))4VSu~VxY^j*h`TuJo|h6naKe`p4E4zB#q_IJNYf@WW&thWGamTrePDx`#b)ZiZ;248Jh2QAD65O zC~+Zr?x>zCjWYJOdVa6%(z|G>D!I31J0VF@0_(PxLo=MD7A{o@E2(1w2WdCrj4vd) z?N4$?B4o6G$*GHO#A4s!aHf+><%1z?WopO3hwet8uyRlDB5$5ajZMX&?9tYOX(kGy>2dn%n;V*yIJ@(rODS^qO<)^2F8*_Qd;3mlZgQ{d; z-rnyj72x;nY)pX_uAO@q$=#4rVx87wQa1fhIq;2OLMdt-DUIW8OYKXn%p5HEG{?^m zdO03d+uwui0Qq3yamte!)?=MVzr1(-V1aQ;-YJ3?Blqcl|0%_Tei~(={E}kd1parR z*#EQ>?f*tmtStY3n3#r>%8Ke&C))fr!pKDAr~^id9^^^}iBtxA5>$`eSZ7O3*6_+IYC>p1tLEs}J^x^eg7`3H` za;m}G4tM1qN7PTs*6|ch7IqYWgRb$52#&mYE|cqks>+Z9t(QxqR!5HopQ(Y33zKWo zj3t5fcX{I>BZwQz{@?AC(@EwqZrD$D*4snJ(J4a(VN4^pksJgh2js|Y=POxR%OBLQ z%(=no2u8xyKgZ}uEX0N|qf(W>A8uGBPG*+ZuXTgs>m{Nr{aXo@$I&(@A|1KtOMrYM zDV9S?fC@iSsniJt=$R`WSU-m(3wUP*Uvn9Tphe^@_vz4?Ka=%q$A1IXQ+v8Tq}%7d z?NsuNpzV4EcGB(TVNk7^jrAprbA6?*1`KkX%^Bqs-MPCc>+^l(pTOisUHD~W-xT#m zJru1L&}L|)RZ?fAmDyR6V;!Hd()Ys)95`qOi7N;g%%srDJrdYxr@RXV^)cajT{*w| zAa>Gw@J|k4YQD*LLwXLpCFZi)&FogxV0&4}D)&9V5XnnEoX^=tJyR`cR?9)DKh=omQhGCNSQ*TEtWy!YS*rMssvNt^7Ossq}!Q=z#>!96=Q6|)otcMUv+HzXhh%bzYT5au8Ka|ZfR7H z7v6-qrS1ONDO7k4U^4sd`Qa9Bor(|62$<2b(f{LOgA!2s_0r! zRoxfc^^2RJ?E3jSi>kmkibX@A^`~r*rGC(W4Pa$@#ST%D%VmaEZYGWa$Ni&rDhA);(_6#qxM zsi~Q+W?2k+e}*JERSc($8n?xJ^CBdC!Q5ZTA;c5!*s*Q5?C8OHVmo|m$_9@0PUgkB zi%}a$8O&rnxC0}3+XxKI)zOZNCIu0G@zL6R||h*Sc%&Wpr9s*cP#IHFE>ZEw*8q_fRD zPbUx_X|~=?WvNA{__D<&FYLXv$2`&nFOK^5SYGW`0!8t)k|HEBU%U z)tkgeoSSR$d6Ws6qouRCvJ?vBh}^mz+)@1}`aYd14&9ST_;-Bj5Jp@9JZcqn zFDh`cl*(sRjCb@_*FjfU*~$H=;yG~9mq`UxVR3zPVyqLNU#aRXVIDy;p5}lx3ATp( z;^3DibxKSUx5a9hRghE~`Z^^8?cAu2`C6=@c24lM0sB=<7SG zs+%uu&(nWs&5akjL(yzYHcX|N4F2AIgl;pToQ~i9ooG2vBhFd1@sPkR&gyYAICD^a zLf59%K@>;E=UT8-?n1%P|A+Ynf5^54KQ2+}^d5)1cI@bnd?QwkI85BD1Zxz2e>nR? z-4QV+2W-PM_f9F7FE;y;Q5oJLUE?d0VmUmBlLF{+it;oM!NTOX7?SS0Fn4HX^(e~j z*BJ0-4I&?~+kz(cB`8qv*j_bGkV145fSZlt$$YZtIb-1v^O+OLL^e@(M^0G>k-@Bl zt7*mw9q?uDTFx^A^pn@xJ5;aou*?>0r-Sfb?#QR&mcWD0Bd%DMew_RAXP0EmT>4-#hkZmNlA!wEexJdw(eZe#@7x@*G_oa;@MLI$gFN zA%QQn8dL*kAtIu!tQZd`q&>|1%qmBF`x>HL`e`z%C_YSfwNk#rMk&A_ozCf9k`v|} zCq1gdXo++!g`6^*pBDZN@NNvSRLtL6Ocrqu5b3H9*C?u=GYm@C8*sM^OiUBMi&4^M z{NP+y{>^m0*(i2mv@nsi0`wXMfMS|jsuAWcXs0!IF_*?1P&`NA9Q=*52aomEbVw^& z#BzM3+W0MMs=^M7nvAnyg2ZHY9#iO2xvPF+v{BM?;vhh9&w^!SqAYe_k)o25k(pUo zKt z6KFXgwHgI$kcYe|9I9>I5-iPfy9As;@!{^h@?GxrZ;u=pn=VFaIMAa)0T|+gmhEyj zCBA)7oPQHe10M&T0wXkfqyRHvPGdOd5-~8aCR>%eTQ8+*aiWQBz}2VPAw)PaqH8If z?m-91ig?9USV$rk58q2La)NHvP^;$2h`kZ+Ju<|J0&akcy7$;)%VhY1Sg!4y4=BGA zPN5foI{$?mJ1<8k{&%hO|M}wlziOR-G2%bipmu13DT4h3xi`+r)3DUhF4BNoto}@Z zHPu@fmoG03rX@Rz9D$|?V{9>UG4Cw7#nzt^$0GS2$ew{u+g51pyW+pVyElB}wZ}d* zX0Yb{YTln15(%mSxm@v`yje=nKXKvfoFY07p>811-RoOEzZ@*mBP*fQ1Hl6Ibt4%G zYI)>yY|hyR7^Z-qq$XI!7a=p8O=P zli4QK_&U|xmwSvgCT~R-DNI{?+S=?MldX=MU&FT6XT~a0(`TFxaEJ`_pT6^;QXi`l zTs?*D3CSmGZspBiX^tw{L9)$6qiJ!%${Cm;m*yDOkPW=&&+{`pC{*DqB#yVJ?OpGy zwt5nTIM+XnzU6kDs?@&A+CwaHs(Uh`+Oe>2WgzGb8t)Ds-LS>aP+*jx6qFdLJhj#0 zwR2jb;B3sEa4~O@o7A|2%rX|$ z_z@hicv$e6iUfC?2KJXyg*oaZfkfD*UG?m~zvt#!R@*y~a}E^}oS(R5WPGrE0wn^Z zhup_uU*Oz_%+|3~NSMhmk+V>@lDhPI*oAt_i~HBAiX1Ga;vUe?Ag<7t3cIGbbF+$- zacj3B!&><=>OaZj6R5AKdZJ0lCGYHANYLUWW7u5_Ib&SKfkJL16#SEuQt@yX22o9E z`n$U39T;_Jymh-psY>a31qK_x9&CRjnz<_X+2RG!1b@3jLGYhNdl7qMkcg4dU-VO% z+Mxp03#jv5230E6u*Ge%Yj>*k!GLZfRasVZM5w851EVFPrRXE(1sgVjP?nAGD6{sphZyB;4+GQl9ZEo~QObnMm%uwDK_)1Jc>PYrzxz}@GL!RwlH8zQ@*>eJcNukx&$JS|rTOm% zPsyI8)cf$BqKP>zuWZ{Y%BrnHa2uK#%h3cZ6|+)0v1J-mSH0@=SLx$#!qTg&OiL>Y zFnYq`J||=)KYwLpiO*JwM{O@43y#xWnPdIJ>GUl83!j>~ZxX=&;Kka7M80{}@PVs} zWMEwu7Az!s^wYgwE#S?Fa-;|Q`{<>Socc^&PV8%ZxTm2!nUiLsicuc_w2j~lzj|_{ zj|q+;leRP=NNy}?!o0~jd{gOPs`7BQ zI+$vk4QE8%tcuItci_t{IB`j`+V7Ee+2o;X2Znp`1w7my<=VKhWSuzzc6YlW3oS#T zG)c_NMBwtb#QePv_-l+3K0opbH_>MZsUDK<5E!ib#mk95il`5fDNbP2(PtLs4n@v|YCi8go*A+B)BrIw^x!5Gz&&q>GZ%<+>k z^_lNNKYPO3isuBQt&8E0y_f5#qh-66;^)}&T>CZ3>u~qjmuUNn`V&i}7XXXNcE;>H z9(9Z><&c5F+3Z%JGO=-K6Mk*o#!O&&F?C2o6HCg?2x#&Y!O5h}A2H+TDti9CO5e_4 zl9hHSp=JA%&_`gghqp&4t?!s*Z!?j9EZ~GkU}Xik==!ti$&XPA%q1o#Za$FijM~HY0muKNBepi+ASBi4-^-&3E9%dM^`P ziSO|h9%NLZBrZ#U!YtA9G7uZqH)_!m5m}lIdhfoqFK$0&7k(K(s$(nw{i>hu3ly{_ z9;H?X&JKPq5u?_vAGnZxG~koEZ9n?r8@&;JEmh35hT_IhJ7B_>&^DNexj0}@+nhzz z&Yu0G@U)s87c1ygysY#o1au0r1|8d2ua*jOnVRB$oh7LI)dSu9NxOC(&{ds)x$#V+ zVdDsf%@Y`93;Rh0g_A=&{^-fc-=K+wms^@m2nUA)AN1&kBdF9ps1zM2+7K*0xntD$ zG=>y(&jiQuW=Sx4pBu60rU7CZW%F^+^{UrGI|1!aHA8u(|A&m_`0@L5%}5ceU#PawaptVwx+<( zBo)Qd&;>>DdY6$S>q)mb{Ww=Rn^~h%9$)w0dZAouOvpWX)s~Dmxw^M!-`--q_WZui zf8ZIk%4<)K^?C?v{1`E!_dC5;0M`YvpDjPSM6ePCKN26aM4EIZ#bitb(L9FrD;jXO zV`i_$o!tbag07VX{T?0U>Gj2&^Mk zE!nqJe)3Y&RZ3OOUqV%eX?yKtLh$2f4r3UU=fZS@2TcYXpcBDalDY|{PZ%?!%cDOF z<+xuTY(a!`D^?v2F?x&bMuoIz zWKVuQ;#h7$^C7-5Os_E?T&~lYu7X|0QFJz)J-n`vf?lTDkJG8UA`v9>j{HC3z6`rcgmJD9tilnf7iCAvCg z66Aqlz0rm=k1?M=k{W9u6^k}-x28vos|zJQyU1iPz}Kb(m*s%h#-wSGVYzmuY|(RO z{5%*YgNd@I8P5jN#L!6<)8Uet%bQ7sB*%%>(22mUFWT zd4?3_d@icKo4RTczv`Od?6~}jzRAm_adUW=?4&JyM^=D7^|lnc9u_sF&mMnFW1Ugwv?vEm@$PqUIu4lDDa$T`nC#A2FHMd-#Fxo@z+hW+bD0kN z#FKChN*Z-$Xlkp9S$qoK+&ca3>C(9IyE3&gl#9sKmBEj#r&O_PyH)iXrPn@@Rx)WSAKd z-k-iZAK_p@2H*?2sbz>k?h_M>Rh@b~R$UIhaaCZ&bx9|+H{lic#g@dq8<&`Dqhv-* zEcw(I29#gVzy?r+B)$Am*xQK7q0=s5m!EQTqqT=G21`1r+;o2 zS;Pn)sD|}m&v!korSuTfZI3gF=Ree=uCD?-)C=44|JExI`{!)?(<}JRyZ^Ka@>KOy zrpXlpU&rpNx~48oe|ycYE27dbU8a z)5xO=Th%^q6thyZ5Lx5FBjoMP3sdRKg--z(vmAkF>;$Ig=cq3Q1|}3VwHhBe6!dbf zZbTHskDggBl^%A+p)cCp1Pvjwh7lzZsn*CBlpiRxbfD86NIu24w-s@;(gM^;yU;yV z>5q?C{hg5saoW0Bi)~M=sRjuH1Xn)xw~;i9zSXH=>N}ss&owF@MxVDjzF_r522!i( zO2rMD-ZNJjZDfPG9GD6+1_}l-&eK&e#AyLqU+{6NUxA=Z)cr9q7h6LRu_0%^JEup^ zIfE;DH5LvKvn(x+qv``~=zB>xOzNP>n+XeyfC%#jUOJZ8B2bG))ORs_w89R#6-OOn z+d@}=%Jl4mW|M|lfgkL-EH}EP#HT5V18A%}J(osbP0nEa*gmQiWd+M=szrB#Au~h2 zc&uw?1_AW9d)|{i43afRD$a6YUb`n2a^$|$A2pr&E*F{I+FD|$_>Bk;#l=SWU%Pm% zwo-uuKs%pfCZWF;j4(|>WG+1r?Cq*TUdc4Ebcreqhg@M1`%7iTJadVrRW@?B`>JPy zCy{z1*$(^;zMvVtYs9z|5x5MGn(oR~M!H1jpzk2w>}A`1ry7H?oZBFZnUrsw(#f<& zPkfhnN0k^{m`PuNx2yQ+o}5+u^*%yTJM&h=y29|uroND8_#M_p74a^;ZQi986~kL= z8Ha+#Z?^}s+}Ek1{u(qZW6{*1x5eUGci1Rv9Zy6wpn*9~fwLXC)%y#gZik+FWC324kn|&+8vS|>i_6*e0*I(01a^9Eif|r z)e#LQTsZIW*}?a1(a2chwK=7*@#qcw;g(~DyV}oyN(NaVB*h8IGG42_kYLt@Aec*G z7dM7nnMfqp>)J+J-SnqgC%hH=a2M-lL?AK64CK$K{3)t_LPQed&9(9#6RfgG1x;=l zZ&YsT-hF*1TQ9cZDzK-O8+&WbESqpRIic>!ALECZL(iv*-T2;v?nABBkPZluItCvy z-WF&|-=CfEdkyK2F*Jh{`x?PY4j?ig+SS=nNeI>B&`}Gpw>Mz}zf@a~ zL%^O&t&)2sayPvlvDJ2ogbR7~_|v1k*Hjc;GMncxPnOYhq50~Yzfy8~2vzi+?-G$> zlWAYJDaMn4=I_2v&~Ti?^*NfEMNd)?l?BPtW#ynUO^48LGR@p#kmGnpg0jp5FVm`V zc1nu1g4I%0a-77>n~SIj0Gh)*^XiQsj2xHf2n*SZ(d$EZ+3-$!bT;D9%nhB>s!21c zJnB!_C&B>HBA-o{bd^%dhxAZcfC;uZxbmjz)52`!E6%rEj8i{3`$Q`YwmMk3B%<1< zL4ba@zz5~I!gP1ZBes1DTh$wtrHI#^D_K*N&^W1I_a9s#EovI_ zpLNT}SQS0+WX5E^RpR!^F@lVlp8hyCn3<{*yZ*wXNthXEMCgBDN%RPQN8o|XsxKMJ<-OAKVOSK z#j;QnV39mP-F*#nF@Z{*rLQMzdD*MlwwLB%(slFI;2YF@XTBdkB;92GiXfW<5vF3| z#4-1r9AhW}F{Kj=27|U@knY-R^|UATY{K#@n#ASu-Vu@B)^|hKOWVS!duvD?t3@QC zA}fbc%78*GP&2*5n-Qj{9^V_=^5pi5$2+ve)r=6M@$%`X{5-q>S=KoSH*8q54l)z6 zGc3a8Zulc&1N;YQ6rzu+fiva18m|i>r%( z7#2rP#r^_SwZ9Gd|Iiat0ht>~*!HqxSO zM-N9cLbD=^ZkSx%C(6^4-KbdX^2U#4S|F(uvRH6gLWT{d<~C=!;a}su@!W%ad-i^W zI)$%r&@^;CgoP>TyWjfW;GW}cAg<9L*tyf*#q@61+o-PM##*Pbuib;OgqIdTDB|ip zBI~aD-gv&8&)*O;p9_K|yO0O@W|fST2&+Vi zsh(rdG#Ik+R@d0}f@nhS6#YNc@;7boPV6$+6%M{1k9EG)MVvM0x z7>mmWpl+?Y&GHej(+&;XIBsW6NE^S>5*=2z z^GK}n`sN$xNQ@Pk$eY~gdn$_R+gqbZ>z~mTfHti=n?cJQp{|%Wz8VsXdFmP@nbLYx zi!(@xiW@u{qve%%Fo$b~lN5Kw)8gpFeK_OCNCVW}Fxphbo_%+7ypnV#`$!Q?R#Pc2 zry?5&C_Plj#{up9j!$w@h6# zEVK_`wJvCi4R)=5j)q0O*n;}&#oGOtm`i}^|fq4;#3TA!*=IQ^u;Mj12uP!|v$#P&*I`7)A zb`DdMZ_jt^^-TzS*6NF2v+(gPh!+~$s5>s@7YQ=%y7`cunuI`XevCRm@-;ofJ5q}i z8hte&?UHJ~h*?bj&an6o9GGOUAfxD>ryRA$PO*E=^l&fhuFs4HG(uCV@?UD+Ib5B= z<$>uQwBF6nu_sR4PK&%#O72@Z6mh2@O`oAt4(C;y{Da6EOb~Oj#385 zqMF*qH6E>RDqAP(s$oDm->t({FZCJ}i*WEW>DmPI21O9=NaN2{^ooYrY}AKglM%ZZ}kAHZ-s0n1FTQ7uC z{9Ct3_}>yG|575V=I+KX{_lS!RJ!_qG(hmQ2M6<@Wt&heY%590MJN2H=_%#8ra32s zjFuDz2b~icbr9RXRBV;S6rMqOzKDEtrnS0`VsKD zBs=I!+`K05T3UJ<$|eM+FY;i~CY?cDGS1RYvplo5eMmi~Ht1&a z4Lb#ys?^tHn^Onx;?B?@n12aX&$KhTB<||%J>SvtPffeM2-1Y7i%Q?b4UgN3@A*0W z1r|rQSbCvLJqylI!P^f>#=r%6W0#Cv_JL`A=RGG2mZr9Nw*=(x;k%>8v0k}^HAd+MDQYV=TQeWCDULsXV{T$GbFqDB%?@)%*4wh00IOK99OBoRs=+5SX zOf)Eqaj|4VvHkN_e0VxtiU4ihJhxyn5p&1SGtlDK%TWcrm3Jg+BQ6F}Mz=EIlu>o` z&OSmjJ$fmvr5ktw_DNKN%a`(3&`e;X00Is`=U4&j>D=w=Wgd@MZIs;`9-i} z#knOcr;@Tv-#?+qbh^8DYG-j#GiAleX^Xy0=JvXW?7NkzY5!33a;@RxTn(G{D)`!m%{?CNBD7+0X6%VGQ*g62Tn45bOKjs{MZ` zp~P&htzWJt{3T7Lt6JMm{+@|-WX%K*>Vq6?uuKp1e>ggfGRXlZ81v8klBh-%^Oh@{ zRbo`GOCHtAoRl1C44o6Obej_(cUdjjUTcwYhvWfqD|(7?cRuNr z9NRH84}icB5AA^`CDjn3g=_>H9(nY3|+(PjgT8x!U@EqqQ~<$d#+ zz8zqOf_`}EdUn3{*#A_~;RTu5SX3Skx+|3dME9au&z+^M2gzE-W5MSw+MIHlY&O4% z$>`zSRU6Lv9>o`j&;F6NNE)05nsgL+YF;XKc(yi^?XX%(@G$%pF)tO^M2!|vF|0jH z&$EyRYxO@4i0aj zVO_Z)W`kL_GVza46FINEyP6^1^dIYn<3{@yg+#;vBKpOmqz~1{?f@-|;zdPn`FFi5 zB%LpZBTQ;#f1(beXXDb*J`09@UioTOwsK|tG>Ngr*yG+#MGp$NQ<$_3Yp1f4*^ewn zjNMKRi?*#s-W0nY=MXDgqD8k1aXysp*E~kZU(++ZW(fIep86eHP!$%MN+*scbA^ae zqMOM*wD26RN0B0|)u<5k#-)mJs9e`>h#hl`380?ZXVJYs87z8|?H%mlUL9E7KGBuZ zzUr56d!30Uo=A&fmZy{rKpItDpu=QSWEZy(e2+bVSrRU7fsyL3&_9FgMwP~O${O=g z95wP_P3h@vcC*0rnPyxHh%l1;93x9&Gp=2D5y7zLyjJv$o=Fm_@`p_o*Y`kWSA-Te z(OTtuZg7A=hd#i~Ic?!r%q&z5tFJPv=fRY@~I;Gn-8 zU|7I7f8(`rcYZ18l*@si;%qyznx}LjF8y3K z!y5xw)IG)swQ*W?@6>f_Wbi>xh=Z{~VM6Im0iCrj`mnubA}`pkUAu-4Ku5%GMzveB*uwf2P7s5iZV-zx+iV9?zje$%5qZoFD_#I6ChW z4eyj>Lg{P`2S5;=b$Y)}nq=kUfg8Pr`_lu``(yiLE%kpX57cM8Iec$%ioXrEuz51& z+ig1+9G*bxgI{`Y=WvK|P1FJd+~M!T1yp?mhqcvVL+swa3g!u>qn=oO8A6or2iHp- zR?akaYzpq$+~;bXzs*2jq|20&*8FZ*aT_(!+@!AS`F(jV+N6>CE9xl$z_ zeFY1R)jtZ)@(+&o*-)=uX}?(N|ND5+`+o}%|0zd|t&G8r=C(E(<_=CED|2_y?|=S+ zjoXKbkEQdb*$do?_ZBvv|Oh z)Q?b)%JO5w%t4vcNuths!%dzJ?GC%&PlSZLpW!n3O*=m-2=9q(&O;ciN+>Oyy0A}Bn-<~}l>LDwR;CqDn*qehy+|&XA1uy@ zC;(eT5rps?srky>ykb^smBrL97J!BjqVlDTDq4$UWU<_Aa{PH_vH4GpBFbJpF1=M* zb9$g3?FM5J^EH5mWArDJRJXeMGDN9}Blp^?aQ6k=87Dp?<8aokWjia=6@HF-ZMFca zWiH4^W&=Y+>v?tJo^@kKowwa=UrHflxxvH5qWe%?K@eI)Kv8z(?a&=4ncuec$0goT z2q*y{)!$a(nbD#|JA`u_Y;YZaZCHC^Tuo9z^0~(15iiP$5V9i{)2$_Nc@)`HH%wZJFOv__4vjgcMwJcQeDGLOEO2~36#9Bc-ZVE+VbKad z_BKM#h2B$6dhpkwnzIbGud#(*R0gXkFg{1*8whGauTI5wV76qNQm_c+9_V!+MJ+F6 zzAHl`6#NzF>H!(%0en`D$hnM&!lE^LZ!X+I78biLB2W7TjWWP&1bcVvQwh32k0WRU znN-OG|%|E_;7$1f7gM60J-%qDng^!}?N; zyiSZ2h35C{F-wgen5+um)3T<qg5=o=G=m+0T$58JsLPXQ44p$K?y~T))ny1Twh$ zx%G=(UOLsR19HcZz@!m@vLM*MF6{nY!tovkvuEFBLB04nQ?S1m5Q1=tFuOmP^ExWo znL9MmSKt_#eeQL&CtW|*&ebK$@3>n%Mm>J?5_doRtvLCIJ>uW~j;bTb{=bZUs9XN_ z^##S`S7L5i9>}~;;eMCV56Zp# zHF7#j+T@e|F9+s4#&{i$)6XyF8c1H@RvkzYb`@&~gqgZ+G@A9+?1+jqZ2i$8wh(w> zmU&;p*jj_SU<0@$p^fhP@s#}%r_Aqyk7g9=KwOz zM3Xct=j_`dmLhH096wJ{V&*V1OP9c|_87HC--$$)xmaI}L#gL-SLR;YJ5+Cju1NPR zDu{{Cf9F%QXdGI5#BD-pS$}<?o#uz|9!uGBTv)t8%0_rZhDSF!rJ@pj1rS4i*#EdMdr19R>)o)u<=h!x8nZ=l zv@(-kYfEYtjE$|jJ1ar3{xn=g`W#)&)qu_@;AMHN793+&Nq^qbVs2z-&&`M6+h?yx z6W`NJ14lCzkyj#BA+(4hpwm4ff@ayz*ZV8Vd5Z3I>gj|8ab8fY1(_&w_;HvGmYu8p z?UmnSx!$Lsp1bQTr@?aFoV!SoC0+fvI-sgF!K0nBdZsTAUte3dZA^}R_%Pt`T24Sj zKztHyQ>Q&w9humtyxO2qVIF{jH-Fq;*hZhbiIj0yrGWa>APYC7X^41?J(SS<^}x_x z^2r``&;J83hwgmbfWH-p`R&c6ZI=9Sf#;;7%Fh&C7ZrF^!ZMgRCm2wOfMW1o5 z+mSHp(yQa~LEi6rT3VU$ff;&L9ASO=imVu^yd7~-Kch)Op*nEtQcI1TEu z8B*yQ+T&0aSqG_8hNdelg0@G)7J zyHNa1q={dQs|GV`Y@j&ka)Y>uB?#}+x8SH?_lwR(Qobd%|6U;9QWDN)t>PQ5gzu9SlPT)-+kgtj|xqwf@T zqlBg3+`f8;%yylhRX9%my56*x!!~2>_CB&=?Ug`>2C4&q<=h@zv9QqIG`Z|wBaJxOQ|9^fLkBE-@>9i5f&A!DDd zk^-{cq&E4J?TyPM*1HY64t1e-tlGuiJZ&L;Ma<#-;khlj>-Mzn911I!b?@YTuO-e`m6r=@@C6qa9(`HQ z-{o9ILpx|@w@Dm)A<~S!#&IHL{xN6T0<-WaUP7iCWDrx<+v+e$%U)gPHoX{1UfQ ztlv1|nEWa_^&+Ht|5iu|{98Esmyr5z;3-qn`!l>Z=xHZJ`Ua8G7n-$rGJ0ph_n>D7 z%a|i_3EXn8yf(ISX;{#czNLFYAm+s2e0RI=Cp744+KdfQp*RD%94|NBq;cG=uDm>5 z@P;`>kCeY;Wo+`Hw>V|o9yB0k|s@ig#fiJ$WCsJumM zlF@){^z;A??yC?RniznZp`dJR|En!ezJ!-$M-loa{Q|M=VIP3b$ayZFk^J(fq6J`$d!})*V?cqBp|}A! za%qD%4gw~yXQ@!A-SOe&Ch>OkD(E|TS{HNAUnfE*@-(>8&b+fDIE$bhrP1RZJ0a$x zDp4F-p29Yj71N{0RI-Ylm<$HAu`fywt7Y9LWPQVQXs8<138q(-Ea6hT<82<7N16L1 z7`W63HiUrkQzs)NQCyTi?w6pXRMPIY6I2>z&0l5E#H%^hzubdSmOuiF`DcWY7vJ&S zxarY-e!{ENprNuK&Bf|~#+83NeT?$*?E>#P1=)Wf&Z*}R;3%MRVYn_=@LC?#kw2sm z*c5wc=rJ91Q?3*YH6)h6wq!Br%glT|6B_CC{UMlNWK8Eic_|!D-iBITqcrj}Cq2`_ zZ?;vC{{}xn&?QL3;|ZODWMIKh*&Xfh6$<{P>fkE~YtYbk)lx993rARID`{NZO*gNU z*jgU5C`K3@t5iN-oPGCG5%?>j)-H-K(^@vx_;MnMx^fYO)PYLWHEqf@)3Hd2i^FL` z0=g4CH~4gjC;{i`{|jad*5!)^dV~zQl*}s9)BMS8&bFuU=VR{nSTlKsezf$MT6KkV zQ5hOqK&0dJh!*5dVRVU;+mMP* zw94v`@TGaJpa5S|+QkLyS+>$(!ue9D&m)~^r#aoIDYJCD1Ir%zCw*Aou^(S?b?O>_ zz_3#>k`!;CoKVmly$TLD?0_Srxt?j2+etsF)-4YQdnAOwa3cDJGUiI>1@~|_SK9jv z?}bjO6N(DHAwjZE|Gb8jo}@Q})^$c*V`qF6U)K_P;v~6GT%D@kI!T8m`B{XTN-T68 zRatVyfono^0Pn$qkm&PS^}D(8`#(xAFm<_H`^(RP@)9-v_tNX_Kl{Pdl>U-x{xSlu zU7JT5v^-OEBV8c88&dyT?bGFI)n0*Ac^fLO)&0wQNa_hqHSH|kL8LYcl_#*>4h54tjl%##(^D^Z@UYk zXZ6M4bK$5x?W>al@%>@A^pL*Os!!ld@LKG$MmqaY1XYA<4vFLAptrtI;2~2_8+JZ^ zSo+}c(p-F*{f?eBe>km)y2~E$HS!FaMjt!TkabGSB%Y1K<2NHB1+fv^4q;3>Dna&_ z7g(r?(Dx65U7??;jiqIeKeYu0Z+$eKdAi(D za1H;R)f=C)^58(P;%Mn1Tq!gW&9<-j2itDpDXk#9^7~>z$Xy}HU9QczkjNq{;Jig_ z5tDq8`vE5T(P8;9WZ6`OqTlj^ait;wv z-MoZ#6G1A`$00*{;ahAPg*`L6`%mUOZ#eRT=ka&thDUGtO1I{6Wc-W($0s4o6f%YgCrVg0r~(x zymHvo#lr)V-(+oV^Db#U0=V8t_U!i)(EPcAqp-CnYD;CBxpPzryJcA zIANV=%WbKCe3Yaf$U%A8Y|LjoRRi}r%uX6e_3nwkMFd+re`-6o^}Xrcr288VSK2Ko zr-hkGnXWx9xX37zpyUkG49%+>8o^>twtQp9x<9yRePTxLEUY^HjaGF~#To2S2Kbs`er=0#7$GHu#z*)2RHlsN z4F_XczV{#D-3mMg?=ZRcxxdq6SmH`+{ctVB$;{|A}p#Iz2u4gn!So;izJ5 z?K8A1tYA19q_2K%BGt2EugSfprGZ9tWzWaVZf=+F#ExgWA!5|&_%w>}oIRYfD>Sr< zEA%=7%tf?X;I^ZQu>64&kgPXk&AW^S+WVk!f9M3xu;lI^Cj;vOv0Bu+@OBk`NFqAeKM{XaeL37~*M3 zr@nD9S~X%5T(T!fVAMZKiJX^K&M}>r^ z*IhOPp0-zvD^<(&?L>E-)&^wz9EVCa{kx-<(iCEks~;KwQ>GOCq2gXo5gP}2Fxh8T zb~MDd0IqUe>p3%}r=d&JhPHCs3of!iyC0mw>IsP=OP}O^P!i+^H17LOG?{Q+u5(h_6K7f}EG+r59UfAFs=N72Q`*#5t@uglad zUrxDU3(AW^4=}D576LJ_xsduBOIkYNl>j1zvT!Jr37+FAluY#ijkF0FUO|9-wnahxmemX=!gjVw<+iGm-J8oBJ zXZQuw$Y`Z+el*v3Kd-3B!tXRyoKhaOw{Gm7=wS(3#9CP1!;JJ`fpcR{_?8tQ&M`e3 z-wlZWNrR83+qdPU7*%GLZ1|N&^jg&A(HLKq;olaI-B}VJAia7e7$%}BB_{rUi%|-hi5M2P!rhm~?eO>R)AYHbc-Xm#_ zH3+*dUYPl1UE}kN|5L8bZS37okJ(0t>c??gb7?Vfp|_u!BXp7Fs?Jular+LlOs*ZF z5RF~n?gJ$Y>bG@fu^9ML!{e!-uUT2gA^MmjmbW-?&#$ePHl0E%rV97_jwj?&-zqHw zz%){OSn8b?Xi^GGKP;ngM-1=Jr>xhasTeG7p~L{%u^t!>0xcAMZ#8PH2zHqYc3$@6 zMY%XXbcb>=!1Pf@_wFA^y#b$F3LC68rqOEO8+lA8bDGOXI{_)Sy+RbGj1s?HO6@DI zZ44W{y$OWY%Y26A_4x??fx7RAk^JhdTuE*3b9d7kKY9VS=*3Z^znwOM9dEY+ot*8@ zg`h=RYT7cH9S^G0#^PHars{4ZM>j8vJEHPE(}*a`z<0S}TWX<0*!}+G>8DU4!uCAj z$)r80YKiZtcnM*D`L=G={!sRL7@+`K-sh*1fuO~Oz$#d-zP zjgU~Ju=l<%{6#FpCJkB~8PH2~kC?vj&&b~$7C#^M|B*u$AnM|GS56uK2R~ zL@+Ypbu9($J#}bxTyJgV<-4cZ$y@auT;BcG zA9RGg4CY3b83Jt^o43kCqI_A!q&gM^nXZr@H2t$q-ZPeAMHwGxg>rEIJa8V}REW+J za-en^K`|N5Zs|uS*8-pOb`oDc*`@}65Mbi#3vvMIC^HFpj=8(3ZT0ht=UJj(IoEA%8O(6rc)Qq zRI03wmO3u)&yH<-ots*4FF&%r^H#>|JkF3wmfOpC$gUzw%V)0=HgU!O=4fhJs{;J> zM33?O?P_aD*?*iag|j#tL%AxXBuKdS9BzICpB;-~pl z5wnM#;F|6FB@TL1PJfaf2Ti0w3!@y1yK5M(-h-Xq7Ny8Fj0QQOsN-3qh&e^`45=gPnBZLpJ$bCPsy+qP}nwylmkC$`H^@JaERPRmO@^=YIrAUS zr@()AKK~Kb|36He7ysz$|Cu<~3V%|-{EMd zlx;$JN58H9Cf}bF9XpklL7yr~VI)W3-1AeNp!GPD721_jXI-T5B?Jqgw8(Io_KOqZ z+_uLS9VYZ7X0Z@_RLw{tlYij|4EF`u;mt$uch#)>p<8C5)ra=s4Ah|0Hw{h6;*vK? zH9VvtwWPpMWC&;JH()ft0PSxH1cSg7b1}TFeDIBGZ)dWvJC3&0Q0+%`!pAkk+Soci zFQ0H@vHW>)fj`KI**wl0ZQ`25z3 z{d~2@&qkpuy${eo(9~3~IomY0re~>5eWA*tyS_LVYAE-x%_huT+|A4dw8C@~-n`K@ zWUu=DwqUehUN;U46EC5-hY+X?Jefz_7Zud~NdB5X!Do3ZovGWNDNpq{b*kp0p6RCv zI`Jl(J`LTLyz>_Q&K`z{0n ztv>PoZ{OL>-=0vGb>&9T3m2Sl-snXe=>}WB%c>(bdDzb<;1$hyQ}fV|;&V28XrRk8 zF8_AX;03UCuXWBYmb)*Eu)p7lU+cAMFD#uaMDtt)SCjrnXiwOEI;rgmuQ`;tGwPU{ z%PCQ`A+Xf9Azor9J%9xOTxpwP_y&v&_#z?nn_5Op%9T@X=#mEJT`sh!?o_F`)o`x- z_#>tsx@vRDL`kHlth8U>Wqz?NFc!x}TUN*PbL2yD>7l^g;$>6oRr{KH+{SSg>7FjC z{JZ>XLOBV;BtxC&LJkEbMsaE{0VpVzxeNo7bdFAmDNXPFz#E(`cYaJd2FPy z`U8jfihBH7nMZMp_m&2vOT|3u9y2ScAX15Q`|h@&jfFO0wL}wr6%b0ruP`)&7%1#Q zD@cDe*k5xiRmU*?1<%hJ0qnHFo8HM8$z1tYe7(KCsh^a0#7$$od%(xdLG?cxXO@)g zCg`3AKHLozO{+*7Qwg*rl1pvL@cCGqo?tLP9}rI*4HJuNa2#Y5Q7CkRsp8~$<^RH; z=QoUkOD$Q{r8%|2G@;}wQ0LrlbiqU-l}y7(u0>j451JRd)o1j}{yUMjCl*8$3C85@ zk3JQI?j3k_Qu6xm8@~@i?<4u^1pH?z*MG}*{1=J%f8{$iDtmwFnSOlIUa9Lpl@Jvo zl>aT^Wfe2FkO9o)5e_5*2f8Ofs4H;XCmmz2Dc`90zMO&h{qe^*+I1)iC5)rKV26qG zH(%y@=GTAG3Gj@_p%D7_fQyT#9n3W{m4B{We&w%rkf(3hI7A_|oLGbud*xPU(Eg#3 zvi`vb6!!!1H9Z!#qoxrKO-+Yr_6C&JnKsMK63bY+XrS?uPj7o$YwH5Z4?KILZO3=u z#Ah^nXGBxjhXca;_B2qOs|}%)Ipi@rPGq7&Vbu~KYe!-;Q-r`^HKGl{6@fk3Mo>XJ zN&sIljO4Mt{UqP!sSDyxI|rc0s@1WWY;*8}?%wNN@NGATLmkaL;*$G!^6^RENZfmOVqm{DJ$6z%sz9P0iKDu<1jd>Mz@}5fl+g;XOtl zl%jiP({a}F1Lt=sTLhf)AAm6a5Ob)emilTjnw+V({@CZRqtHVdDQ`=jKiC7FQ~vbX zAO*pMN{ugWL07Px9ARmT7h_8X376y2F=^>!A#o%z9b%0ki+I0T11X*dCC1})eP^#U zJbVHRr$hZzrc#oq^IdV(6Tu5Ax65F0`o#HblB25Y+R0n8P4(jvrKvI!=HMmGRiKk1 z#J)`RZfppny)_1XNNxmX&BaYtemhf0noTB>+&)lP!m^h#0c|&&=4UKY^ghnfN%&<< zv(*=BLBgJE!B^4t2_WI$Y%(N`c&$s(`NdJ%)7*rsiA{qjG z0J&Em4!BMZ8K55fv@mkjJsUzZ>6r-ovJ@`Nco-zAR7cH^8a9%{ zh{K-j#;JQ~S+Hu%pnc+BZ4_i!zvr&sc^#DOw{R15RQ(PEuvsfHh#<5;!JyODu5X3_ z+G0~vj30NvNsDu{snrfC*hc(*n&R2-(#kJehiAO zB-0z(V$xtS;pLA2mgZj&PT!w5s^m9{)gQx2)cHdACD;m~|L6y?Oz}fcvf~;h`cN8a zze3wQ?xF!KmnJ~G(?iIt8imWO8hqUni*j}x;^nf%DvSZR%bHuCz%p-lh~Z9l;mOUM z+>c}i}+7jdnryDaFDoqDFg#mcw>T8Eo%l#s@xTk zPr`LK8}+7kllH-F^&4rAuhrVyH(!dqjMX_KO7T$JI&S8x_h?W1qWAZsVft^>9_Jwu zJC>srl%idJ7FbfXwcXXL;e%&dY1pJyU%=GL*whKn7KJYhTy|57m32`Zq9Q*JptM|a zjw;Gkm-e({u(`5ad?TI(5Kv~7=xVo!NmgH^%1P?9tu4n;zIfpZ!C#AQ6~+9k{%TQJ zbyhV$Z{Jp$nF{5hWIxuB(>ty5`*?$=0`(8xY` zUAt09W_VXUsn1xQbxcOLZQ1%RuH#41_TFyU+z7E3)J-n@9J9cd-Y<&km@mPKNyQ`i%T}hrH8!woW+B+n z>xBXu3@eWM_o{6qTY&T(n&PxNz~@rnPFiFn%s8?F>V})vMn$a6xZixCFV%vGX7^@} zJ05CFS0>wl>g%buI*@vVG267oU>a}-TCgJSCHxCN&JO`;-GxZ(k&%9pC{(dYI(k=P zWKOh%LeR+Qi}|apZ+W?t@f5u(H?C~nbY>gQKovU&X0Ox~drcZ|(q_v}p?(B~ob=`1 zp*CJ5pN{;sBd>{wvnY;xt`fsDY|Z%RFNq-<9YdWEr;vxL(bC7iTskcvUWTu}?rrz~ z$YEsu|2Sdhu9o!9rY`?T0443r>`55^y~oH>v-ZXoNA(?UPC9VRqoRzGUMu^Jrs-HG znZ86wSJ+sCyr^X7WE8Kkc5g*v+p)&lP7Rr2-7=46@jVzQ6o4j?;p7-E=D3FRGyv%f z`xVj!Kya9nYC2evRp2|H%4B9f%JiK65;WO=dOl+L>ps;3*#atyv}ef|?<&rY6BbV_ zsb_c(v_%h6rRY^@H`RMfY!mCI5;Hb(bA`8k#lc@3r_*olW%x4c$?iMF>ozvE8-eA5 z+gzZ!f~$WM)<=D-z#)Y}z2k$!&OOYw=J(_QM`H2&RG4j2OS+_^sD7UPj8bEJc0)}Q zCpWE_q%&?r)HB@HE0Xm}JjbP!XSbj?80>D*`ii#>Js z9gGP$j-d9@W-h!|oNCvpJrf%@71Ns0Yx93*ChhyLzqZ0I|=vms;ZDhP-AAGc&R+4 z6aH^iyWS}6H(<_gsT!GDyi=GjD1s@!pOASxRgCB#5CexMBAvoj%$Kwpr50Cue-M8Z z3}85oe^cTcs|59^UuDk5o^hka8eajbDh~EX81MV>!&`9>FnDB;k-+aT5b7%R`sNFX zI~rTT=@4U}{|Ljw87yX%nUU1auaUs%cMOb|i7IWyre%#E`t2vSOX-FMz0vkgkqyk< z!K4zGRl$PC4wFn(kqA%bHwH7~+*6~1Ft=h@oZzmnTEgxJmm*6kS#0IO3l@_69(Nj$ zVYu{50TWFXaZPRM%RNN}^u08LypmHCW*&)+YQVWJ&M}L!e1YS1qB#Rwi!m#*^(hmG z3A6pFN3s)Ob!IkB-gvb}b(H)jw8}g9Hl7HLeGp=L;DJy!QKT6li|>+0{5zwD-tgI1 z74-zgvwlpPrDiK(#Sw_87FYcxoqR~(?sni4X&C(;^)FM`A`38-P;OoKNp__l zdY$W9)U5+L&T&6F4d2PQfGIHellD?SVYl@7(z(GS*SmsK!h2~i5&j&zlV#W(VLmTQo}&uo@! ze6|f>SD=SzyhIJyYlh z+fa@M!h*WfliPG_m!uykO0NzgPCN602HK!(l$n<)M&#hu7OB|p1*@2g;mo`FjJfE6 zn>JH81`}=`Q+hR~s%ALoa;<|hopFrir=Px#Enm}_nu;10=>95H?9TzaYzJR4slv1) zq42x78@LP|e2Rh?$lf39pSRjbEBOerx2Z+PwA0R=kMrk z^)P?Be$RJpD+ya}`M(b{Y(k%p^C?C2s}}P|HGEyPe(;+&7kBpZ-9am$Ze1ap!zI}I zJ=xSAJlUm&1$^<9gz`ci3d=Sf;l!YRy)$`s{#{sdG~4yauoO!Ubr451*?GSGB--8K z0>2GkR5led;Tq11fUPcY`X<+F!q;xVnQoyuO|Se;n5?N@xej2+4cDfl{mkB>Y#E>Z z4q$5U$^-k81d0B;j}P?m*%OsqNa+V;mzbq(|FUE|eAefXKQOmxYRbs{fOGD<_9Kitpf9d5c;z6sKP9x@JfZ;WlNjNzwsprm_3rt~8}{jeHf zj=kZsgOcA>?N}ac{8Ht4cU<}X19SB+Y7roR^;>3y|HKjdZ+kA&|MXn-XFud&)X!*J zPgBn*Q*6+pM2bow6T=k&WEn>(XO${eW zcnv3_1ZZTCvaiB^$NICMc{xoim)`AlakT+3ul3BgeS=A;xVWvo(usAM>1lTAsLqf_9B^GaOq=#^+cH_15$Rc-S%V#&Nyf4Hy%r&2p56zn1L= zlyQ{q(wA#{33BnsB*_@N8FdkXYfTk^w;kRoZBQJ=a5@eB6#LEYtd=w17;lH#ka?7< z7O-HmFPeRcQs7=uFfDx)sz(L_Q*Rp~mJz6{I!$A#*@=YT$YY+(*2Mqix$Um-6%(&a zZp}bs>ltr@KeZxf=$UUhDLG!BNGVUwYt;jwiWK2ko3J6Y)#2c&&@x&n&_7s zo~_Dk094GS;w)xlQ;EVXsvvb!*^2)o)VcIVaA`#?x3Sh=iAEmUENGuL5=_ta8R=q| zVUxBgo4t`AGwFi#T`93wk!Q)alPMQv(vFMG(Mjb?=ZK-3qc#Dty|ctMn1ncxDijh(#EcGPxV;2!)GMS6E0GGQSjQ&e7yGi(^w14t5Oap-q}1kj z@znhup}W&@rryymm;Jur!l2w4J&J>njsgS~*g%)}I~jKL!S7L_NSQ_K)!@&}72Ajb zlkAYk5{onkg~+{vJZ0PcptBk3B_04`!9&%9S39A@H_ zn#k5itHL2r)f&O@KlTx_a^@lT75*XlO3}%Lr zQ!cAiHdf&YAcvMhVx>E>PgZ%v3i@aWkExxjF^Bw1oGPXlKsYo1Lz>vPSSXO_H@AHo z>LznIWxLMOslySaoIce761B)R`0{aW$%a=&Me|eN6evlb7KaBfN%2`gw4cx)_ zM^U&vW2mlZU0QQ}E#34_@j-XbB3}QLtG`z_xG0C?N03xgdm$_*=&C8z%>m4l0h@wG zdTKYu9RinQBbYIm{Hiz1W-biG>MY+csi}N>H>N7mrj-FR2h?ew)TrHNT^v&j_9}15 zrPq!yveUKF6K`4JTg=QZeKaUOhJGqHM54}!va`cGWm2#+UOfc$KYJtBTv zpvsj7Tu4xw4BRlN5wdG%ap28i`BO;`H%H3^c0o0;7%f+xE>A(Y6&RBvo;~C`TCqx{U9|7*b@@+tBsu+#I0{&9KKcxs&W;|^Eo5lX?h7>bog8z?XkbpvVCF3F!!^`t63$YI#;&yv4a{?0 zOx$ep+h^gy&0_I^VNqcw;%;sv+0jMKOBFRk5~fA{qtOyx!NS@bsput~S&>8B63PpB zl8vPKx^3|UCJ8RZ`L*do7C)T}-Zvbq=Ib2LDZfw7Mtg8>r%b?FR~P=zMj^yg_E>!<)>4dHC8)$LoZ5HidNMB{L+>4Sh|@D%Lc+F z>X_4|Zdgq_*^B!vwMH7d0@hjhv0{qQp|r-Lz3M~$Y`Y#crA8*Z7SA5W=Db}g1B`J~Q)Vj5mT6D&O4)^M1{xnSM`G z7z6QvP%|a|{o7m7on;A6^3=&%reXUhjD=_8YHzKybcix^IWka1e43#$F3Hys-cL!X{o-f?kbvdC>{f?K3k|&+Yq+pIzNzpFG)SgRem4VY;*Ygu} zpof;lqKi32r#muCa3g#jZi6h9FS7s~?G>wQ%BN5U&e05M9D5wWxaz0b%)up#Bf8h| zcb|$b8XN?7i#Cp1ho))l60;r`ItTVH%WXWhYVpZ|fzFocCC6M{+?m5hV)rm#QFPN6 zHarH0ZiA^=M}}Ht1f~z}bEd$#NLuO*Q(C{p13U^L2yei-nZ_d~Yc2W~>Gw7%Cu?Vt z%^Z;S&}0O|?tqZji39&I@oS1BvH3U?j;w9?s4M2?-V^em;TxatTgJ644hsXw90DQ{ z;&jrF@-^^sSWkjEr_oL+OXWSH9HHd0ZxWbK7D2Z}+Nc0un_Y64JzvOJC8@{AupFwa zHLIv1>F@mGT-}W;c_M);i0aaXs=G(BZ=j7L3$i;Z$iegB+u+FbyXtPDH7kLaqCrIi z#6ps$Z`jE6Cq~A3rKGhY)*MZZd{s5;Rl6NVyUk_tifZ`M(*Qlz8!SC@tkan&Zk<#2 zwm=Uw`&18Qb!KhbELv|c2Pi+5YslVJ@uSFR=3im_JGPf6Wl7~{mU;Pr7@lrVs&##t zH`P`zbb1?`s^x4y_M7Mj4B30Q@~KMw6Y<*g1AMZNQnMRU;;b-QMA76=mK%MKlyzBY zR`PhuOC@-RiabF|6FEu9~o15JqXOrpPv9he7~MYUT!VKdIal*eDdtv-A1 zVdZyy|2DvT``$PfKNo?I;0c2!zCp>M7uE+Ukql!PJvhEVEWx4GG>%Y2Z2^U193e{U zM=+F!q-qIPHW#OGEoDg9VC8TZo?)33Sh|8o;w9`B9j+Q+!aW6V#%n8h3x7%aJbjn{ zM4lt4!?kM+0A+&*CDFPb1B1qN%H00dpWQ2)Rx&umm_boYcVJNMp8vkU>)a;xxULLw zQzl`a;>D@Ynxrv%snD+3QG1D_B4mn>;BFPRoRo!Yab}|*7iklzCuZM#g$Xt<<`B~J zYu-Ih(5hz$WX2*XxEOa-1k%~%&s%Q;)^nXXoR2ND5D3KP6XKLwDEzIkS(;M*2xe#z zjz3xUm`zkp0;}&*5&{wbd`G6$m}RMB5k(T;wY1Hx(R32 zY?qR$fQGsRG2_FlUiZ%|t>d7g3YAUJvh`gD8dSwrwX`~|7UxS@D#dXFq<8v?=?=Q1 zj5@U|fnkS`Go+iS*|_3+zI_=f^pOxi>otRA=QN2j+lZ)}2z4D9ie{x#uvBx*6Pf*S zo;g@rgX$WbC9(`=_FQ79O#}R}S|Dfb`E`ZmhHR0@fswXgk`?P7srjF>{#12EV(zfO zArd=@;@>s}&N7k`DLxBzc82{Y*CXhvR&?o!4TPnLbY;#ScCnX)b^}Y4-O{qHGUWu7 zpNkr8-%~RF8n*UvKG)f6iil=0CPr~{>Le5rPyAG=V){}6E9C@vuNOJ+Y>rZvroX&J zP^ym)Lpes3pJBMnV~aDG>c!b4oB>*s*L^)aWu9Ap28!ynbZ+htmQY~Na>1P~h*bWi zRIW<#%jZ-IK1|hQL$Y4M;WHkC`>T0YB!2c7DB6-lj9kjbz-4SZp!JqPLdgLp(lvdKc*}sdm837)!6qoUAaE=$ zo7gx@t>=&N82f=<_-vX{lMW{j*nL))ufZboNMr5k1FdpbWna3cA#34D&-bG9g@D=B zfTX2|#f_;Z;Q7Hbe@@yNQf+Ef9MAkXpE6#2$UR+KXV!fJ zfr`h^v3aeq6L`;oL~++%BBEPh@REd->|G1xR>GAtvSprFrxF(^He3szatNovnBX%= zmOuQwh3;51^_jf6&t{(a_x87I8yI`VHbE-U0Bd5!tBFU~;gP`=yLqFi;)#C3PU3X9 z8dTyC^>D0)hRR^E~O^%&q+-;)okWIaoyUOyI4Ge?M|T{;V`1jE18AS^1zpV zpES0)aU9Rh#4T-gb~ssUG&Z(O*%T>DIJ6Pf2)XrV-*xLOS_jb3#BYF>J8Od`ofp!YdjNq2 zZ-hboDMmSOxL-aa*&|=F-yjBLq-L3$QBHK!Fqkjia5MMFX8+L%YCB?CtZu4GErRmW z<RUxkL7Jo;xl)~_P9+L{ zkBe_|ZYF=dgd+?UBf2WbYF_h_=~k)#qSE_-RVk3Jys)mFHcZ}`z z%?%*d8||Vv=lelb?gF`^37aVorup@)%vf1nj+Jz5f{&ow132d@y2k5XlU7-9$ewda zXXPO197R&~u7^}&3Yo?I6lwQ-Wzx{PN^8>3b9`|;Ax|q@J=P`e?aC+kvCGNYI`DM! zT1H#Ykf<8>4}t{h%PaQh3PJK5$rDJqs#E?}yVy~>_ik|Sy0@qy#?{9ayv)X?rFy@B z*9knHAAe=IT4z@WwW__Nt6RF3N+t{>Z#*$+w6(Px{N!eM$!CHVbMxYRMjJnTEcCFM z9t`g7D&U@(TLhr#N4E2{@(0W}0@4VpT#97k$G9`ojd(GI3Wo1RUy1*AYp zd)K|MFx@~|d2^ZeCkYnoCP@>>w*IsWxlbEYc7@J@)9m=>NV8&VFwhjLv(D*_*PzL+ z_#d=@QahmXedYZ|o^d>ARt))Q2zToRiaU0hHh`-Y@E>ASVz}=p>4??i##9?nFJH&s z!s|pMBwUJY$Ycw?Y=Tz3AU3@{l^A(=%IKGmuRVj{ZrR1RaeY6|`NnHqZQVXgyDoV4EaoI35luAomcIwZ$d`$3CW}VU zCThrE&=EBGgkE98Y*=L)=ayICIz&0m_wvQ*_LSF-thgmP2Vi>lI_dlH1Ys{|^J39p zZiwi=GCjUfkK_EXTnnl;a}bBv8rjxv#4{Iz*jkOy4eVSYFS)<}&9=WDG5m|$t!7Eu zZzTf%^jMkBW;l`R=v|S;^32kfw;g@DbvAF_mu_YD)njBnWsf!(=N4cE=X$BX^dkK6 z9itHb;|!O;(>zDCvdUGpwJJq5nsd>U?KyX=RV5wZ+l?ELBC{IS zeV_15*y4!s<=*NITqy1ja74(>nbGztO4!gkQ#XxMbzwkG>V{E)Oa=I=OB0gRN zmZv&HsC6hT!zl{czH*v(*q|ZIklAE|Jp_~!_<>|Bvxv(eaY4&?i19km-IO=5Lfji3 z%ilg@hl%?)_^sVk$Cd$QV#LEWL}3R0$QDS!Z++i>8}O4E`P+;Xl>M-Y&Av8d86v5j z-H>Q#E^Jmy_CQ>_yTl%}O>aG5A%}Ti&)lJF)ZmSrk1DA}YO0TP?n~_g-ZZME zLw@m;7#s96Ue6Od=W!dt6DlV`+#$asbb4I7WfXOQZrS484L63jin3)^73hrWD;O)I1PpJarZgWQEACRI6uj?01KtR-I^T5_$K z8?Xb_&>Q8l5EHEaap_eu4HrJCCCb8rTg9#j+7(8M1J0$A949>Lc~gjCR5!ZclQwBp z6QeB5TxD=OzR2XRI18^qi`c^j_4CY4k z%x=H8QUii;8e`9Fj_)}86Iv>wi}YygfcehrE)ej~-q2z}5epHq;DJ73E8K7&ARWak z%5vwXyN_^8WuG=n1=8S<@KjXh>Nxx;0knKI3JXyEPPu=V&1)AP$)cuBE?$DZr$njE zJzVDOInp2Z?#H_S9UZ4CXHpvMKIL_akHT5sU}_z3_P#0y?>TexcTejtwNwbbryB5b z4)_XBX`%67u{zQX7??*e>eLKXZQ=5NeHfwqDs5Jwa`F&aR!$qMvU^o30?iiB%)Z2X zE91g`HdrNocu(xx7n!jU9MFubZ>O$eav**PGyo?QhBDVK;+k1`gYN$4Rhm#Qs@FrH zG_14m;@JpR}J`Kb>Hvy5FrNgC%|GDJi3N=FQF?2 z1c{Cit{vZg=o`Q4@dQKOASXM^*ZX@z&~F!eM0xJ$dx&j#$o=%t8`?`57)IZB>7bbW zsTZ1JLaY}Tv(xNE>`TtR!`g~mJx+fO#4-Bh=Ggzc9aCj|O>P#@tZRO=>fhZ)H?*ar zzKy$_^we$*`LWZ6{prL@I^3R}JX&>R5`KpI@D<``z2p%Oi4CkyV127nuk83uYQ$JS zZwh!QtXi*>+3k~BcB4*cDNV~_zLtLJw~VK7Wzl&7Iv*T#ak6pekGX$tWfIzM&@|YHXVaj6=(7& zn;fLsR+!k*nkm6*KTtc@O;3#KWhZp*m503BSEO|K6iNV0%!oYpsq?!T@k45hsoh%Ch-vpdW`h zOUc>IrPvT4PTSN`V@Vul3jKYyvq@EBhGBW3Vw0(dUf*)mqyvaDvWNO#SN#Ztj z6vJxHAL&nQu7ET*YggCUtlw~ZjI_$Ao;lYGlN0k|znX)r30+Vr|6;E`%r3CnftQbDb)}4@d-dRt>`E7ufuh(mz0<5}c)u9sx@Ih#cb@kMLQfw<-d5*p zHzwvC3!OQVFX&8SERT(<(F~A2r;3QU56&(_cBV!) z!;cHqrhUM92i2zETeB5fv@#fKm7LMobgi&P%4_o*I27_z?J4ml_H=p-kwgPnnkDSWu5_Z}+GnvzZk0gNpi9xxp}f`Hpznd_#MUSG_mw`4CEVtf5%AJMV`il5rT5_Q zP)y!cwH(l{1K3L=|A{+zB1ZsRjY&CM9k3+0d zp^u`@Q7uc0T$)^cuanGF4_md6e63|;r3~F_R0v+9j}kTWZHwewh&0!9hZ_x$?UZ3mqa7^GR{HEFWx=re8^*=`wLXseQews zp~u;89Pjz!BP8%h)dG{e*(>F-XI`mRS#K|5r=un@LEC3FrTJ;MR)2|)f_`f{3b%iL zl*BWrcmtE-NSWU9=$bQSID?CC6TD4kbj;Ltods-)b)Od8Vn><(PmiY$e+zj?Mb>lB z8=}|I8EQ8iWF+9V6>KY+KMS{ykZxMe9V-K?!8&?67VUqd_c0y0z}0YFOBxXXhecAvj! z0ob~ax-~(6j>5{KAjw89f92b(UbtCWpmwg-e_3BU|8YM$pVrs!{;tuRk75J>pSQ$h zojvAgQoO~2D+Q=GnCh++G0@0kY0KK#It?mIFzh3Egka0sX%C&P1u&rYhpOZ)nx$5N zd1uGV?t$B1U0wGx3Aa(vW>8O~0;VCUm#B(+%A5*qlc=Mu?-M23iER#A#D~~eOR4PG z#?C}!t0c9{T!9|BE#t8shYP_#jykTn8Kn`%NQApN2A~ZV0GUfH)?`GrfL715GTmY8 zS}OrXP6a1{-My9iokvHe#7FW&D#`C%iG*SN%$0xhI?>4nxY+lJO?&wgPJh-CSiXNZ zlOOZmk~7~K@ON9v(IL#HgPgZ(5QMPdXp69a!!zFEo6f8gSKik8!Vi1hi)NRNAy8fQ z#~=NDKc0mLqtl}+TN>8=dajoD-v!4WAWT;6V?412Io`tnjDC2OMHCT+iA;ynjJ(VZ zb%LsqMqMtTop*4?S8}nRfj9Dk_awZ-pmIpiTp9Tu0Zg6V5X!0WUK86!BkQ?V-F(U~ zkvD^d#yVc!;d2yoXrjD56Ry(2k)LjG^&nh9XARi-kDeQ$1w(HpSrex1z{3z;NsdT|bnJ#er2s@^9&+apsc>^IjW|Vk;S{|>nS8fiZAj=Cm0Uzcyq{XjJa@#*GyFKW0$adt=8;h~-O)fu@ z(P&IC%?f8O^C^yp?R+|C0c&=`5qd99+>x3T5-;Mj7HfxN*o35Aei?sVB1nK8NvA(<(^7`&Ec0lG&GE zIm?RF9~6aiLAC{KpemJH(960?J6B7C?BCG+X}-qmA4NQuYFl~wc7%BzJwt0R{v=63 z1axX;lETK%1SIJZSbOU9h{EC{HiqqsHcoC0(MYLK<=KsBIKzbPurS6DT8p-s;jce| znT{DJN>&Qh@MnR?r*iK*a`D5cjem?;c)1akuCNM_fcP*N~yoIDbSb%C#+RAT%x zTmdfZbA=C7-r{7d3QCjpAkPyHJFXy%IIy187tZt2%VYMjh;8H%Ep|Iti+*z(>rXiP zv6h#fL~`pMuYNAtrbNfMRh+sF*cwd+>Dvb*Hb0@QZZRvsA!mM?7Ig5n2VMUKt~6uaHT`DFA}D zgx~z}9WVc7W|R{Ln2!F^*$Vteo$Y^h*8hi%)u{6CL^cR1*l{!~(ZmcQl})-t@DA9# zIjGeF45VKk-mA&Eku>#_dJ@-@e!K1RWGWpbAK(1Gw1%L1La`6MvSyDH=g(6I>sRNG z`1)NSEdkFcS{M`I&9+I;OVQ+&P7RHuLgPmP8b@_~l~yDb;LD{|z`jY@;#dQWSe^#G zr#v)`LDF`Tv8COz%85Y<29kbR#C#OqxNjlY$@BBoyTszMit^ zcuHVqTO8rK#a2A2bjWos(>1+xFDd2-+f=aQEO zRmAZdaO4qH#zXa`$wlVI_HhU=Z`r%Z^yDdhzX4L&vHooWBFa#j6-)8~ZIuzQWS1&Y z?3gg3obvbBE@x0Ul3)-5H&FUt%}`bnr?3c`JsHaoMtf{_-3BAxVDx`Tk(}gXk)uR5 z+-s=m&=ag6A+UG4;v!tfhTdA~R3SZGoalZ&>bYnmbscjF_IwA-0~+V1nc_xE7{4=V zvYOl^h|&1Y`NxUFRbZ1nUt|hQTOxAKSndL@TtfrLY51(6?=P%=I4F@AITKQi} z3V}>BNId@Gm?Ho>Acj^-Cl&|u03Dwhywa=`^om-=dmm%p!{d(90_*sQ9x=(@3m+LJ zU-7g$a~$5?>1f5eMDVIVM$A9P%y;Q72X&_hQZ+Z!-xErXt|^AW$j>@QDJ?Dh=oasdK&ZwD z9g1MkH=G(If2oqE10oC&NO~F6NYgZ`m0xT99zgO;D08mQ~E@ zGcPDKs3p;7Y9-{RB$Eop(#rL-*lVUD_qT3sg_4xHzI|w?OGdLpZD+V=k$R{g79;=>EClf7Gk8;NfrclE zX%dKdejlqv8$94V_>(Yn`FAJfR9Z7qA;b69ss3ou(j(H+a4-*YqiULwC=JMq^XARP zQ53?%LGVa4F<|ZUVp-@Z`O-{Y`iLQ}qqv(?UJj(liODjjH+)1|GyI}-cCkcyzm53e ze_&C^>GEvWWTK2B$ck1MB!^7Zu@KvN^>BB-KCrl+^VC#VR%!x8yTd_nOq%j@z?#q$ zEZC@+Sm2>UwGi@tE_lyEAQ1$RK*!D{D9Rp2;6C?ZBUqKz_;T1Dg&5s}(Jg&3}K_0*}CpO10=>b!yTl5STC)!mv{MAjqD^9_j)9>#SIXxXHIdkBx z_SelSsIdFSedpep6Rt+l;El*S@L<&|-)0@G+)hD@nzgY|M6K>W1J~J!Zc;mpU?o+- zKWF2;R%a5=R~^f3)>7OiZPw*p?t$<}dKqtF zLXCU0*8Ifqn;2N&{3PuXpeDrO7(1;c9acq!&a1&fh011(&CCk)Xfv#Z4&79kc@pqq zEfG95hPR#A=!~6X&X3O}_Cg@1)3P?*>L& zE+V->o{~c`{s{T-M-$lXyPk5h)4kC4Okz_=8P*cRI-YInC51qUk|lMTl*Vd2wpFB+ zn9Nm%O@~)Hi851*bZ_YY!Pr~H))j2`DRmhHVhf47ZFi+ue%|B+ojleFMf8@LtGi=_4j zBS7xY?8==1QJvG~dCXKVD3)>c$%P`{O?qdmS`C}2@l6(O zMb2U6!}NkfoBAh9>THHs$noz+TZ^mwEaM*vxZ@QtWUA+V9h_=8J>Dn*nY&N1o#ZxF zogrN&ik6wN0zKZK9-3!dK(nRh#g$FGhD0A? zgShciBZGSQgn?7}nB}`{Xx9yKNFPgo9*B9@#FP23;z@B;o|z3YJ&lCf|8cZEa4=UW8&1o$Wj+r}k zcqPzf29-l%Wf{R}V4Jo*r0YWK>R(!H1l4a$SuW^}jY)AM()tWQDb&C3*Mn%Jo1j1C zSb9Me%go$E+yOqH5yD%>E8M#pVokJq==JWw6xJzkkd`Zh3;}E`Z-LJ1_5lQRsB>~o zQ&0ibTqeoK&d{&B8%Ob7AJ;`=xblT6D7x$~zkPJ-xZ6_D%c$gcoeM0_ibZ<3O2pmuh0;Ox8#dk0EFX%1tTJPCSSfGI&UVgV?n0ZOzd1bx_U`P9grKjC6F zMlkLhVC8-3kB?Ei(W`oeD+jeQwKDl48+O4j;*9irjUrywXz-eN)ux*$MDHn+o&N-z zs#Qp6jz;$_C?^C6Jb$}FFjE9HF$GOY?DFz|9QM~IxMzdYu~E!XDqi!3;QCA_7(jL* z*;WBpDCw`OVPkR|*n?=8Td9LE34&j-9(GP?)Z*YDJX2=WOjQxgkSpAx_8i=DT_Mc6 zUg_aYZ%A?`j;D9pJ%>to!ypSd=Y7CxaQdQvBtaa@USMvypuO$0dy^Z)vat?`=r6O_ z2@)aIaz!~AGHu<#@0wFNbNyHvL5G_db4bcKt8j zTb)=fd&=Hm8*4k)xn(@JFi-r^eC&G~rgf9VSG~sWgm!TP`uA5)`{0>t<7r5HB6v-E z+}>D(c@g$I8OKb~I*C2OcLLJVo6?v3AsZ)kuZjUN_u@$WQfbshrl#H?X1n7_B3@(G znLI&C)2ap^)ub$?(vp5$M)7;{W3#vdN zKd~k84SWY-UkAGC6DX*@pE0YFhat1M9^e%AvG|rOz zXD(F&3pao8p0(qeZkamo?C;u{%W(!>N9|Ba-7;@jPL#nrVCPwoy8!CYY$Nk0eu(k3 zqcr!~&sebtJrTS?2ozNVA6WX&Yb69m7%o=N`xtI%cpN-$tk?JQCvBhUd?jvLjL>~! z1a9Pi)c%ZyJ(Xpj(V7^F(`h7^xMj7(seGJU6_5gZ&BT6NI_3`WGy4rA?G+p`mxm`Z zTVhfm(t5tdhP~USHQY}UePk-ZJ}~s=1I(G)lJKFgR)5jKuG92={wueqq=4p6Bf0bb z=Ij4#vDlvS5E+~9V-YA{_;0T7<-O365V4O)4K-{{^Rn(%R^A|~kq+~(r1n*<1gb!| znlkM#U-|9g@IxcWx^+;IQ4wc~rqu6whbSf>FT0#PRjaV8KAyI!g%XOLSDUx& zp4OWK*Cr&!DRiB5<#gPwRJ>C9;+N=^t*Zf*>U`=3Q-B1WO~n#8BH~h~})HycdmY$F&miKBj*q>u02-5So#6 z5}W$}2JpoA2t$Z6np=&^@A}IWcWzLW`)_39HLEE$;MP;CdWuGsPT}hT&Tdd&YX|t1 zDTLd8eTN0!o+3b4+Y}49yfr%M?jP?U<6g`}8U4&Tp6wqP{qW*`dP`ZQo$eTX`pA|pitN|Qf1L-qGyod7YG@ybzYz;n zC=){>Y^#bI+hU{FdCF#SAm;?FgH%h=Ll3ZuWzF^`AqD|URz4{uXGjh&#q_v3?anV3 z5j~PAubDdjAt6-sy0pv`ubEv>El({o*;xV~A1@r=%x{7N$wQp5d1~lxicB}=F+egh zAthX!Z1tPt4pTSo+pIbY9eU_;v7}RH;k3V1@E^-!QX z#eyu_cV>KaO(m0^Ljl>0V(#7<6_IIz$@IVq&0=FiCDZZPEa;7wPy$ z@TEmL_gY$;Eyx2o!@~j@2hz4qD#A#_oqy)zjNg3^IfcTujAS_gs`p`s+;?<(f?k16T3)N9wj$vV-< zBuyMeVo{ztBQd}KJP!BW8an0Fy4s2|< zkLuu(-+%&Buu1r7MkgyI4de67GZO?kjv)if$7t4QMJDa}GCW8Qske4F{?%8fE%G#0 zz_o-25b23&_ql|CZ|tZuMXi)t@$p=8g(MlD6#rYTRZ1ooRq4*l$Mg}JgmrTA{WIV~ z#~j9SQyd5YiKA+m%;#YdbM%2SJ*I#dpd)GxJmLGsU~IJUa9rY*>If z2W(?(KG=^;xn#Gbv~f0<_9Kt9SBw;2Ou2NHC|YX2$6RTVFlTM^LATJ+l7!ZtuXSRP zU>)i@mPggz0?LINj4j5JycQ7)XEjM@ zcF=VP?MCDFRj!m)T))$O9lwG{r}BVe2~>RGjSEn5Yh4d?GI!tjo+S3q6$|R1Pr?xS z1dpGT_rLkLj=js*&x>h8&j#5214rOcMuJ8GJCI&A2QG;aWE_Cj>2@tp(bRdP=Q!#x zBdhm+oH`6>bPVE=Oz;)X(Y*g2FR}IwL>GXUxG`BH$0bS&bENzCi(8r#hh}%sA(uh1 zf7W4Qw`Nx1ZW=W^D(;})XY#2jkr7D9kuP%YzROP{O!pUD&*}wTrC~~hOh;x0N|IBh z|D0@7HsxlSqg9bB$=1ER0!Y0gTOvskXr0`bl^g3XvKl&owu)i_@yQ##hY`JN48KD! zSF1lyh4LWDm8m^z-5N!fw#k+{I+0k}7f9#Zu|ojs9vZ(K#pAGps+KKlw!^@LG>jfO z481Ytg)&jtMzZi;O=_I<02#&C<3EK;T%qDD|sMx9=4*$0ud)EK4V`u*j5R2`=Tx`}Mp@wN5@Rv=J%w;KD zJbg|~{spz3D5Wy|K|_bc$j!|ET7dU7=n&TjogrKQYU}#s{b!6^z|V&d{05J~)R~bs z(ORu)5GmR!THOi{Z#DbquDxp_i+RN+MuWz6Yrz=^4)-#?~5)=hRmSl64t`Ha%wp7SAO?tYEv?^1ur6)r2x%L$BvUV)C zy_{EL{n(VD>JRe#5WzTq&n7g~eh7k0^NeQyPjr@4JC&*~T6SDcN0J>KT?PkIYr&XVC+?Ipj4HnkK0)HFm5e$M5P# z7OtfK{0C@6jP}0O0}ToSqJC`f&_YEri=b)DiMee3=10Mh_`ua<+WwW5`-Jt*j|KB$ zFbgeWNC^LGz`7U2^uj}27VO)AWo0-^8v?*$kBGwQw z*vqe>GGLOx`3=j(#^xCaof3>9EvQ)duRBtTI8>BxuprkvpfKVt0D~Nat9(|OiZaPw z6sN+Q{o!4O+mVZ0aGHkTSx8BeP3@S>9sC#k;*Sez_P=cwRMHDxCS(%qEQZ=f=7<0E zpsEv{wTby6EY<(Vmfin$ulm2?%Kx+R{|luwX})@)En)kbH*_?t!5ff-YeAq#wvLfk zlH`-eg2hdok=H@|$R|lKS%uef-M@keSKH7&uL5a91}k5aRTX2PfyH^AirLuKRsGHH zYH4n&`V`J7zUE@#S+j|^y5s$b=ez$(WuAET`QtS`2Ke-OQTrxy69*d;*gpLbZ4o-x zz>)=WeRzCGRcAFenWF!-WGN~)u^PwPpw2ohlnIWm2U%jf;&wJym@O>|;AzIqN(QUZ z97=1=JZqRVQKhw4RNOQpS8iWQVM5E)XY8WQo+bsVXShs^rh3-r#dUP5`!R6n;N--+ zsqM``T@^xoGP9U!N5SIsFQ_SZ#YM9gbwm=OP0lL@E})?WS8!n5cgTt`1tyM6CC<&a z6by{o%<{xLx6@`{EhgZ)Kn>VSoHVshRR*3cdK=;e6zSKwe&7gEZ2(lQ?|I**(m!A6^uA6fUSE5QnM3S>^} z9y_5PHnmVxsxdfy@L#HxU6j8qe;zNU*{^Fx5H>CdnUS=7ZC?#p5~j8tMlEw5Zf=tn zNzg=ztg^M#y{7$S3?hx8=g!t}z+LLmT?rXbt2TsS zY_XobkXsPcWLQ*lb;-so=b6kjgQ!q?!0c?vSQ{l;ucGi5y9#fJ;>L1)5mk^wOK?8O z-?k%!fOM^c9?I2FUCyFmClRGd4te1O{jzs>xyo5wNQ~3ZbTZD#1&Vic)WUS%obAD| zgc8O$MGYoeL{R9We~S7adSdkSkaBVyW9z$9Yq0#oSz4u#*7x8;u&^KFopJ-mw~($B zBH5g~OSdt{3s8Ayt_b@5_^unrL1{315)C3o*E@{G-rU>u2~VCp&Cw-k)d%mR8~mo$TD27ka`0= z`WhU!V5}0UO+t_tSK|e0I!B0IWTL6|`&>o5XHOjQYsIQUA#76R8B2n$IC+@Q-sC&? zK>D}QZ`q1FWqcBqp3(yg?ja??)63Ggtz{XV4kH_ul*1g1xqC!1^fQVoEp}{03Hj7L z;r2=|Y!&;r%dS6WAS!Tv|C)i5fP%X?j-HmfjL2fJc#hr)^-pT1ka56bD07c9KQ{Sh z#Ti&o*+FY;$6l|+XDF+DcOcd+Zo>FhPn?u1#O(XwCgsN<1XKUS;J6%t=KcN z+QqXugFDb2yaB@RU2_0XUo?4fhTo;$le>c{?EovFa?9@F7-@>|b!cC8?(zwq+|_*l zY;z00_@)Q5lOpR8onxv0P4MTQ86ZqhaB^*eJ{tpVFE4g^4WFhTa=gUX%pOi*BKTBC z=OcI5=S@kdefC`8-Kal;o+Yn1GUEbzIr|jyo$8fp`~loC@=dO@dG3B{j z0eEyXzL9)2;f!M~>j*PBs-;KzKs{?zhIY*&#h1ahx*xDf27aH`Ny6{ScLUNu=}~<_ z-{H`=$4gOC2aEDEzp+L*=6yq0#v7PSA5}^uNIq9M{*$Jx!sVv!aE+ZhRRinAR)p@4 zm-StVQSVmW*|~a;e;dIO$3=ZPQ}86+nDd_U2*V1|aRqO(KTWy8?Ano)h7-=5=U@IC zx>I-hFG{`x>RXxJz|JXtw|g#Bm^zP$p9ZD}q=9k!nzcyX`9fCdxY)xl1n|IW%9*lY z_yg}N_~YQOSWG~;_M*}~Np#muBFu<;g@a96bXB?1<10%3F3`|j;Cu5Srsu40Yp)%h z%gQaVo^r-6$-0GlhQ5z4Wgub``PyNUo`9_*W@m#?#-hT)!HBT4pl^mavp0CLB{f=S z@H)bgASVcOC!RMHqXUtS0B$f77@g8CsB`6Bc*w<+{+^p@O*A`k=WJbVH#Ii}J{slN zJGYAE@sq!1RR1)h^?}Ijcw}<$s5lu@-UE855ciry8(Kd{uhQUvM$4^&F~)wXp)Q?$ zg($G8742LxhUUbScVWoDQcUiJAcNxI0vGx*$j+0nDxp?&n$=1?dx>b{Z)Nn@^N z2H2SG+cZ~$@KC`w6Z%q(bU$*`r$2UkSPlLd4gQfnimZ-=(Ky}Yf%9H1-V^bmJ#2rj zwdZW0$jJ|{rvc}(6}u9`xTEp-D+dr|1UW{+G8b=*q)u>5+9v^Iy|ylsai`R*z-#k?z~$IMK?)4JxG=$1YRa{N=?H0XfxJ z7S)y9uMpfeo``dU+tc-tB_6Jh2o{cl9EPe52RN5)kXP%q;U+y>b&HVWx1YZVAMeFS zl7{Nnri+uIe*jTzoA!vklL+W2YLWI)q-%_6!V>QTj-&r_hS$1X9m*>iY@lH6_SP6B zz={o-Qd=q?p2PeiMPSpfG=if*yKMvPo_n{nWci7g0{gdyZlY1(5dF|%xWaQLutWhi zUwm?9Rt=jM?xnD^a_6YrZGh)>=X*V0vQ0F?rHn$G8yiTUN3OioIw%$oWTcqI~TFXfF#Drg2w8YyFQ?|Ks zmE*<_yuJN=(T4vBMB(&?f2^01mp71vM+6x8tX&^Qr#Ec3CBfnTbf zp(PJ`V7HW6ev#1IdU{Jw6Fb&epdBF3GdBFWS||C3$7E8CQ;o!t=5L!6MK0c7q^voS zdtUM|MVmK1Z~hUN6XQsx%L;Brr~CmNsgE4{uE+w)5SHSIV&m%&d5F6d1J9Ny>semn z_o<2^9(l{l2)p>NJ5B@dM9P2ds=D-{?A)xPIw|?&8*>a|6_^`K+!@@{zw-`!_$K@O zh3_~bYQELPfy~?ZPV8UxjP6S()ke@`c<9+$G5FmuMx^a;`O~JF7uC;iQzCPIig|mB zFf;nN#VU3Mi498IBlfzvz7z@FV}>tjh)u)R?u(zktTBH*UU}sZkC;AW-@@f#-QJ%Y zNF#L?Hk_`<7`nl9to`CF%ksZ${QU9#mP6!vW;VGdD;n7XBC zhfBs9FN(W#V8zb@tTm?Wp@mHfm3jy#GIUtw%HBV>NaIhfCpIp~wJXQ*KQRyhbn`%I zvtg-;eiV|!y5RU*2yH^?$&YZqF?h-gEXYqilz;z8IR>tSyBdE{j!`)O6XnSBzsT;I5#5WMe=L4no)j)rE`f4JISITZy3JqTmq4 zD#GpIU}CPf;uqHOGR~J4#M!Pp|5+j3+NVFgqUYxu;k*6v7+T0#clrnYaQs2cSMq;%$l+DaK_0828irGkt&fGdB&m}o>%)(ezXT{x@p`$@TQ=D@9!c%Tn=zeR+@VvTW6 z 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%0DG|E2;NVjROsHG|_sfU}w)LdBllr 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

    %PKSC^vPUy#Z?j9ktww4+=m0F# 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�Gg3$TKL8hYPi$r4?zxmGOkFXX?E&0s8* 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

    VvE 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 z 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 bXm!1FjcN%y!2Ji*>L|mTjAE&e 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 Date: Thu, 29 Jun 2023 09:51:43 +0200 Subject: [PATCH 247/369] [CORE] ArmorStandEditor-Reborn 1.20.1-43: Remove Residence Leftover --- src/main/resources/plugin.yml | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index 0ba60538..696d31d2 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -110,9 +110,6 @@ permissions: asedit.ignoreProtection.bentobox: description: Allows user to ignore Bentobox Protection Limitations. default: false - asedit.ignoreProtection.residence: - description: Allows user to ignore Residence Protection Limitations. - default: false asedit.ignoreProtection.*: description: Ignore all Protection Limitations @@ -126,7 +123,6 @@ permissions: asedit.ignoreProtection.griefDefender: true asedit.ignoreProtection.lands: true asedit.ignoreProtection.bentobox: true - asedit.ignoreProtection.residence: true asedit.permpack.dontIgnoreProtections: children: @@ -138,7 +134,6 @@ permissions: asedit.ignoreProtection.griefDefender: false asedit.ignoreProtection.lands: false asedit.ignoreProtection.bentobox: false - asedit.ignoreProtection.residence: false asedit.permpack.basic: default: true @@ -188,4 +183,4 @@ permissions: asedit.toggleInvulnerability: true asedit.togglegravity: true asedit.togglearmorstandvisibility: true - asedit.toggleitemframevisibility: true \ No newline at end of file + asedit.toggleitemframevisibility: true From 9454e269d1d8bfc7b712efca3f99a80cecc1d3b8 Mon Sep 17 00:00:00 2001 From: "Larry (Wolfieheart)" Date: Thu, 29 Jun 2023 10:24:29 +0200 Subject: [PATCH 248/369] Update README.md --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 3be37043..aa500650 100644 --- a/README.md +++ b/README.md @@ -27,8 +27,8 @@ The Latest Downloads Shortcut Links: * [Hangar](https://hangar.papermc.io/Wolfieheart/ArmorStandEditor-Reborn/versions/1.20.1-43) * [Modrinth](https://modrinth.com/plugin/armorstandeditor-reborn/version/NuCQHkBx) * 1.19 to 1.19.4 - * [Spigot/Github](https://github.com/Wolfieheart/ArmorStandEditor/releases/tag/1.19.4-41) - * [Modrinth](https://modrinth.com/plugin/armorstandeditor-reborn/version/1.19.4-41) + * [Spigot/Github](https://github.com/Wolfieheart/ArmorStandEditor/releases/tag/1.19.4-38) + * [Modrinth](https://modrinth.com/plugin/armorstandeditor-reborn/version/1.19.4-38) * [1.18 to 1.18.2](https://github.com/Wolfieheart/ArmorStandEditor/releases/tag/1.18.2-34.2) * [1.17 to 1.17.1](https://github.com/Wolfieheart/ArmorStandEditor/releases/tag/1.17.1-30) * [1.16 to 1.16.5](https://www.spigotmc.org/resources/armor-stand-editor-dead.7688/download?version=342891) From 8a3307dfff543aed5f4790da1d58a7c9bfa0945f Mon Sep 17 00:00:00 2001 From: "Larry (Wolfieheart)" Date: Thu, 29 Jun 2023 10:33:16 +0200 Subject: [PATCH 249/369] Update README.md --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index aa500650..a62c74b5 100644 --- a/README.md +++ b/README.md @@ -4,6 +4,7 @@ [![Build Status](https://github.com/Wolfst0rm/ArmorStandEditor/actions/workflows/maven-publish.yml/badge.svg?style=flat)](https://github.com/Wolfst0rm/ArmorStandEditor/actions/workflows/maven-publish.yml) [![Maintainability Rating](https://sonarcloud.io/api/project_badges/measure?project=wolfieheart_ArmorStandEditor&metric=sqale_rating&style=flat)](https://sonarcloud.io/summary/new_code?id=wolfieheart_ArmorStandEditor) +[![](https://jitpack.io/v/Wolfieheart/ArmorStandEditor.svg)](https://jitpack.io/#Wolfieheart/ArmorStandEditor) [![CodeFactor](https://www.codefactor.io/repository/github/wolfieheart/armorstandeditor/badge?style=flat)](https://www.codefactor.io/repository/github/wolfieheart/armorstandeditor) [![Scanned with Sonarcloud](https://img.shields.io/badge/Scanned%20With-Sonarcloud-orange?style=flat&logo=sonarcloud)](https://sonarcloud.io/summary/new_code?id=Wolfst0rm_ArmorStandEditor) [![wakatime](https://wakatime.com/badge/github/Wolfst0rm/ArmorStandEditor.svg?style=flat)](https://wakatime.com/badge/github/Wolfst0rm/ArmorStandEditor) From ebe07ebd639b8e69e89c3e7bfd2c32c39b873575 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 29 Jun 2023 13:09:04 +0200 Subject: [PATCH 250/369] [API-TEST] Bump ASE to v1.20.1-43.1 (#285) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- API-Example-Plugin/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/API-Example-Plugin/pom.xml b/API-Example-Plugin/pom.xml index 5e829d72..54c13577 100644 --- a/API-Example-Plugin/pom.xml +++ b/API-Example-Plugin/pom.xml @@ -62,7 +62,7 @@ com.github.wolfieheart armorstandeditor - 1.20.1-43 + 1.20.1-43.1 provided From 5cb7197a66b858056dfed764cad256115e8d9b43 Mon Sep 17 00:00:00 2001 From: "Larry (Wolfieheart)" Date: Thu, 29 Jun 2023 13:54:41 +0200 Subject: [PATCH 251/369] Update README.md --- README.md | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index a62c74b5..87987cd5 100644 --- a/README.md +++ b/README.md @@ -24,12 +24,14 @@ The Latest Downloads Shortcut Links: * [ArmorStandEditor-Last (Unstable)](https://github.com/Wolfst0rm/ArmorStandEditor/actions) - **Use these at your own risk. Limited Support is provided for testing purposes** * 1.20(.1) - Now Available. - * [Spigot/Github](https://www.spigotmc.org/resources/armorstandeditor-reborn.94503/) + * [Github](https://github.com/Wolfieheart/ArmorStandEditor/releases/tag/1.20.1-43.1) + * Spigot: Currently Offline due to Ban. * [Hangar](https://hangar.papermc.io/Wolfieheart/ArmorStandEditor-Reborn/versions/1.20.1-43) * [Modrinth](https://modrinth.com/plugin/armorstandeditor-reborn/version/NuCQHkBx) * 1.19 to 1.19.4 - * [Spigot/Github](https://github.com/Wolfieheart/ArmorStandEditor/releases/tag/1.19.4-38) - * [Modrinth](https://modrinth.com/plugin/armorstandeditor-reborn/version/1.19.4-38) + * [Github](https://github.com/Wolfieheart/ArmorStandEditor/releases/tag/1.19.2-38) + * Spigot: Currently Offline due to Ban. + * [Modrinth](https://modrinth.com/plugin/armorstandeditor-reborn/version/1.19.2-38) * [1.18 to 1.18.2](https://github.com/Wolfieheart/ArmorStandEditor/releases/tag/1.18.2-34.2) * [1.17 to 1.17.1](https://github.com/Wolfieheart/ArmorStandEditor/releases/tag/1.17.1-30) * [1.16 to 1.16.5](https://www.spigotmc.org/resources/armor-stand-editor-dead.7688/download?version=342891) @@ -50,13 +52,14 @@ subject to change in the future. The minimum enforced API Version is 1.13. * Rotation of all ArmorStand Parts along each axis * Rotation of entire ArmorStand after Placement. Supported by Crouching and Scrolling, so you never have to open the menu * Finer Adjustment to allow for Fine-Tuning of Positions. +* Adjust the Vulnerability State of your ArmorStand * Coarser Adjustments to allow you to quickly to get to the intended position * Toggles for: Disabling Slots, Invisibility, Gravity, Base Plates, Size (Normal and Small) * Copying and Pasting ArmorStand Settings between ArmorStandEditor in a Survival Friendly way * Storage of Copied Settings in one of 9 available slots. * Naming of ArmorStands through the use of Vanilla Name tags, with colored name support * Multiple Language Support through the use of community translations -* Respects multiple protection plugins: WorldGuard, Towny, GriefPrevention, Residence etc. +* Respects multiple protection plugins: WorldGuard, Towny, GriefPrevention, PlotSquared etc. * Targeting of an ArmorStand by pressing F with the tool in your hand * Toggle for Vulnerability of the ArmorStand (New in 1.20) * Ability to get Player Heads via a Command (New in 1.20) @@ -94,7 +97,7 @@ For Maven Users, if you want to interact directly, you need to add the following ## Credits / Special Thanks - +

    ![JetBrains Logo (Main) logo](https://resources.jetbrains.com/storage/products/company/brand/logos/jb_beam.png) [JetBrains](https://www.jetbrains.com/), creators of IntelliJ Idea, who are supporting ArmorStandEditor with one of their [Open Source Licenses](https://www.jetbrains.com/opensource/). IntelliJ Idea is the IDE recommended for working with ArmorStandEditor. @@ -103,5 +106,5 @@ RypoFalem for the original version of this plugin. Thank you for all your hard w Anyone who has contributed to this project with tests, issues, code reviews etc. Thank you! ![Shamblecraft](https://pbs.twimg.com/profile_images/1466015518029193221/lemURPH9_400x400.jpg) - Shamblecraft for using the plugin originally and giving me the idea to maintain it. +
    From b593e6edb69d7b29352530c32a01a4e300d64420 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 29 Jun 2023 20:40:47 +0200 Subject: [PATCH 252/369] Update dependency com.intellectualsites.bom:bom-1.18.x to v1.31 (#286) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 0ed28208..a9930084 100644 --- a/pom.xml +++ b/pom.xml @@ -94,7 +94,7 @@ com.intellectualsites.bom bom-1.18.x - 1.30 + 1.31 import pom From f500c62a4da1e459254c60c75d2620789b487de4 Mon Sep 17 00:00:00 2001 From: "Larry (Wolfieheart)" Date: Fri, 30 Jun 2023 16:13:21 +0200 Subject: [PATCH 253/369] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 87987cd5..5e90268c 100644 --- a/README.md +++ b/README.md @@ -12,7 +12,7 @@ [![License](https://img.shields.io/badge/Licence-GNU%20Public%20V3%20-red?style=flat)](https://github.com/Wolfst0rm/ArmorStandEditor/LICENSE.md) [![Support Discord](https://dcbadge.vercel.app/api/server/3BbJKWpTCj?style=flat)](https://discord.gg/3BbJKWpTCj) -ArmorStandEditor is a plugin for [Spigot](https://www.spigotmc.org/resources/armorstandeditor-reborn.94503/) / [Paper, All related forks](https://papermc.io/downloads/paper) / [Folia etc.](https://github.com/PaperMC/Folia) to allow players in survival to easily edit armor stand pose and attributes. +ArmorStandEditor is a plugin for [Spigot](https://www.spigotmc.org/) / [Paper, All related forks](https://papermc.io/downloads/paper) / [Folia etc.](https://github.com/PaperMC/Folia) to allow players in survival to easily edit armor stand pose and attributes. From 120233dff34282ea4dc5095161a17f1ffd1b3031 Mon Sep 17 00:00:00 2001 From: "Larry (Wolfieheart)" Date: Mon, 3 Jul 2023 11:16:48 +0200 Subject: [PATCH 254/369] [CORE] Re-add Spigot to Readme (Post Unban Action) --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 5e90268c..63e80887 100644 --- a/README.md +++ b/README.md @@ -25,12 +25,12 @@ The Latest Downloads Shortcut Links: - **Use these at your own risk. Limited Support is provided for testing purposes** * 1.20(.1) - Now Available. * [Github](https://github.com/Wolfieheart/ArmorStandEditor/releases/tag/1.20.1-43.1) - * Spigot: Currently Offline due to Ban. + * [Spigot](https://www.spigotmc.org/resources/armorstandeditor-reborn.94503/update?update=507126) * [Hangar](https://hangar.papermc.io/Wolfieheart/ArmorStandEditor-Reborn/versions/1.20.1-43) * [Modrinth](https://modrinth.com/plugin/armorstandeditor-reborn/version/NuCQHkBx) * 1.19 to 1.19.4 * [Github](https://github.com/Wolfieheart/ArmorStandEditor/releases/tag/1.19.2-38) - * Spigot: Currently Offline due to Ban. + * [Spigot](https://www.spigotmc.org/resources/armorstandeditor-reborn.94503/download?version=472773) * [Modrinth](https://modrinth.com/plugin/armorstandeditor-reborn/version/1.19.2-38) * [1.18 to 1.18.2](https://github.com/Wolfieheart/ArmorStandEditor/releases/tag/1.18.2-34.2) * [1.17 to 1.17.1](https://github.com/Wolfieheart/ArmorStandEditor/releases/tag/1.17.1-30) @@ -98,7 +98,7 @@ For Maven Users, if you want to interact directly, you need to add the following ## Credits / Special Thanks
    -![JetBrains Logo (Main) logo](https://resources.jetbrains.com/storage/products/company/brand/logos/jb_beam.png) +[![JetBrains Logo (Main) logo](https://resources.jetbrains.com/storage/products/company/brand/logos/jb_beam.png) [JetBrains](https://www.jetbrains.com/), creators of IntelliJ Idea, who are supporting ArmorStandEditor with one of their [Open Source Licenses](https://www.jetbrains.com/opensource/). IntelliJ Idea is the IDE recommended for working with ArmorStandEditor. RypoFalem for the original version of this plugin. Thank you for all your hard work (Archived on this repository on the branch [Original-Version](https://github.com/Wolfst0rm/ArmorStandEditor/tree/Original-Version) ) From 43605dceed085dda017aac5ed84cedcf988b7dec Mon Sep 17 00:00:00 2001 From: "Larry (Wolfieheart)" Date: Mon, 3 Jul 2023 15:57:45 +0200 Subject: [PATCH 255/369] [CI] Create ToDo To Issue Logger --- .github/workflows/todo.yml | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 .github/workflows/todo.yml diff --git a/.github/workflows/todo.yml b/.github/workflows/todo.yml new file mode 100644 index 00000000..f503720b --- /dev/null +++ b/.github/workflows/todo.yml @@ -0,0 +1,12 @@ +name: "TODO Issue Creator" +on: ["push"] +jobs: + build: + runs-on: "ubuntu-latest" + steps: + - uses: "actions/checkout@master" + - name: "TODO to Issue" + uses: "alstr/todo-to-issue-action@v3.0.2-beta" + id: "todo" + with: + TOKEN: ${{ secrets.GITHUB_TOKEN }} From aa244eea83dfca260db2611e6331a0e8729b55ba Mon Sep 17 00:00:00 2001 From: "Larry (Wolfieheart)" Date: Mon, 3 Jul 2023 16:01:43 +0200 Subject: [PATCH 256/369] Update todo.yml --- .github/workflows/todo.yml | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/.github/workflows/todo.yml b/.github/workflows/todo.yml index f503720b..7b29c319 100644 --- a/.github/workflows/todo.yml +++ b/.github/workflows/todo.yml @@ -1,12 +1,11 @@ -name: "TODO Issue Creator" +name: "Run TODO to Issue" on: ["push"] jobs: - build: - runs-on: "ubuntu-latest" - steps: - - uses: "actions/checkout@master" - - name: "TODO to Issue" - uses: "alstr/todo-to-issue-action@v3.0.2-beta" - id: "todo" - with: - TOKEN: ${{ secrets.GITHUB_TOKEN }} + build: + runs-on: "ubuntu-latest" + steps: + - uses: "actions/checkout@v3" + - name: "TODO to Issue" + uses: "alstr/todo-to-issue-action@v4" + with: + AUTO_ASSIGN: true From 8bccc6ed7ff32845b613bab58dad32f14486f8c0 Mon Sep 17 00:00:00 2001 From: "Larry (Wolfieheart)" Date: Mon, 3 Jul 2023 16:03:00 +0200 Subject: [PATCH 257/369] [CI] Update ToDo To Issue File --- .github/workflows/todo.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/todo.yml b/.github/workflows/todo.yml index 7b29c319..549e9134 100644 --- a/.github/workflows/todo.yml +++ b/.github/workflows/todo.yml @@ -9,3 +9,4 @@ jobs: uses: "alstr/todo-to-issue-action@v4" with: AUTO_ASSIGN: true + IDENTIFIERS: '[{"name": "TODO", "labels": ["help wanted"]}, {"name": "FIXME", "labels": ["bug"]}]' From 4fbd8d9523ae0943318983f5898784b69b2337bc Mon Sep 17 00:00:00 2001 From: "Larry (Wolfieheart)" Date: Mon, 3 Jul 2023 16:04:02 +0200 Subject: [PATCH 258/369] [CI] Update Stale Checks --- .github/stale.yml | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/.github/stale.yml b/.github/stale.yml index f50acf83..a5dda050 100644 --- a/.github/stale.yml +++ b/.github/stale.yml @@ -8,8 +8,6 @@ exemptLabels: - "NF-4: Rebase Required" - "BUG-1: Reproduced" - "Work in Progress" - - "Blocked" - - "question" staleLabel: "Stale" markComment: > This issue has been automatically marked as stale because it has not had @@ -18,4 +16,4 @@ markComment: > closeComment: > This issue has been automatically closed because it has not had activity in a long time. If the issue still applies to the most recent supported - version, please open a new issue referencing this original issue. \ No newline at end of file + version, please open a new issue referencing this original issue. From a07994f441f362de37755efda8e9e6d5df6b4fbf Mon Sep 17 00:00:00 2001 From: "Larry (Wolfieheart)" Date: Sat, 12 Aug 2023 14:44:32 +0200 Subject: [PATCH 259/369] [CORE] ArmorStandEditor 1.20.1-43.2 (#307) --- README.md | 7 +++++-- .../armorstandeditor/ArmorStandEditorPlugin.java | 8 ++++---- .../github/rypofalem/armorstandeditor/PlayerEditor.java | 4 ++-- src/main/resources/config.yml | 2 +- src/main/resources/plugin.yml | 2 +- 5 files changed, 13 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 63e80887..095c49ad 100644 --- a/README.md +++ b/README.md @@ -98,13 +98,16 @@ For Maven Users, if you want to interact directly, you need to add the following ## Credits / Special Thanks
    -[![JetBrains Logo (Main) logo](https://resources.jetbrains.com/storage/products/company/brand/logos/jb_beam.png) + +![JetBrains Logo (Main) logo](https://resources.jetbrains.com/storage/products/company/brand/logos/jb_beam.svg) + [JetBrains](https://www.jetbrains.com/), creators of IntelliJ Idea, who are supporting ArmorStandEditor with one of their [Open Source Licenses](https://www.jetbrains.com/opensource/). IntelliJ Idea is the IDE recommended for working with ArmorStandEditor. RypoFalem for the original version of this plugin. Thank you for all your hard work (Archived on this repository on the branch [Original-Version](https://github.com/Wolfst0rm/ArmorStandEditor/tree/Original-Version) ) Anyone who has contributed to this project with tests, issues, code reviews etc. Thank you! -![Shamblecraft](https://pbs.twimg.com/profile_images/1466015518029193221/lemURPH9_400x400.jpg) +[![Shamblecraft](https://media.discordapp.net/attachments/1017882838739189760/1129352283054940160/logo_trans.png)](https://namemc.com/server/mc.shamblecraft.net) + Shamblecraft for using the plugin originally and giving me the idea to maintain it.
    diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/ArmorStandEditorPlugin.java b/src/main/java/io/github/rypofalem/armorstandeditor/ArmorStandEditorPlugin.java index 84ba2282..3c22191a 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/ArmorStandEditorPlugin.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/ArmorStandEditorPlugin.java @@ -120,7 +120,7 @@ public void onEnable() { // Check if the Minecraft version is supported if (nmsVersion.compareTo("v1_13") < 0) { - getLogger().log(Level.WARNING,"Minecraft Version: {0}",nmsVersion); + getLogger().log(Level.WARNING,warningMCVer + "{0}",nmsVersion); getLogger().warning("ArmorStandEditor is not compatible with this version of Minecraft. Please update to at least version 1.13. Loading failed."); getServer().getPluginManager().disablePlugin(this); getLogger().info(SEPARATOR_FIELD); @@ -129,11 +129,11 @@ public void onEnable() { //Also Warn People to Update if using nmsVersion lower than latest if (nmsVersion.compareTo("v1_20") < 0) { - getLogger().log(Level.WARNING,"Minecraft Version: {0}",nmsVersion); + getLogger().log(Level.WARNING,warningMCVer + "{0}",nmsVersion); getLogger().warning("ArmorStandEditor is compatible with this version of Minecraft, but it is not the latest supported version."); getLogger().warning("Loading continuing, but please consider updating to the latest version."); } else { - getLogger().log(Level.INFO, "Minecraft Version: {0}",nmsVersion); + getLogger().log(Level.INFO,warningMCVer + "{0}",nmsVersion); getLogger().info("ArmorStandEditor is compatible with this version of Minecraft. Loading continuing."); } //Spigot Check @@ -275,7 +275,7 @@ private void runUpdateCheckerConsoleUpdateCheck() { getLogger().warning("Note from the development team: "); getLogger().warning("It appears that you are using the development version of ArmorStandEditor"); getLogger().warning("This version can be unstable and is not recommended for Production Environments."); - getLogger().warning("Please, report bugs to: https://github.com/Wolfieheart/ArmorStandEditor . "); + getLogger().warning("Please, report bugs to: https://github.com/Wolfieheart/ArmorStandEditor. "); getLogger().warning("This warning is intended to be displayed when using a Dev build and is NOT A BUG!"); getLogger().info("Update Checker does not work on Development Builds."); } else { diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditor.java b/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditor.java index 8e3c6b62..0e35a2a7 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditor.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditor.java @@ -179,7 +179,7 @@ public void editArmorStand(ArmorStand armorStand) { } public void editItemFrame(ItemFrame itemFrame) { - if (!getPlayer().hasPermission("asedit.itemframe.invisible") || !plugin.invisibleItemFrames) return; //Option to use perms or Config + if (!getPlayer().hasPermission("asedit.toggleitemframevisibility") || !plugin.invisibleItemFrames) return; //Option to use perms or Config //Generate a new ArmorStandManipulationEvent and call it out. ItemFrameManipulatedEvent event = new ItemFrameManipulatedEvent(itemFrame, getPlayer()); @@ -407,7 +407,7 @@ void toggleArms(ArmorStand armorStand) { } void toggleVisible(ArmorStand armorStand) { - if (!getPlayer().hasPermission("asedit.togglearmorstandvisiblity") || !plugin.armorStandVisibility) return; //Option to use perms or Config + if (!getPlayer().hasPermission("asedit.togglearmorstandvisibility") || !plugin.armorStandVisibility) return; //Option to use perms or Config armorStand.setVisible(!armorStand.isVisible()); } diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml index f29ebd24..2d51bd1e 100644 --- a/src/main/resources/config.yml +++ b/src/main/resources/config.yml @@ -3,7 +3,7 @@ #-----------------------------# #DO NOT CHANGE THIS - CHANGES AUTOMATICALLY PER UPDATE -version: "1.20.1-43" +version: "1.20.1-43.2" #----------- LANGUAGE #Name of the language file you wish to use diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index 696d31d2..f38b3dac 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -1,6 +1,6 @@ name: ArmorStandEditor main: io.github.rypofalem.armorstandeditor.ArmorStandEditorPlugin -version: 1.20.1-43 +version: 1.20.1-43.2 api-version: "1.13" folia-supported: true website: https://www.spigotmc.org/resources/94503/ From ee612bb6875bbac4d42f8d0d0b77997b6f95f27a Mon Sep 17 00:00:00 2001 From: "Larry (Wolfieheart)" Date: Sat, 12 Aug 2023 15:09:19 +0200 Subject: [PATCH 260/369] [CORE] Forgot to update Version here --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index a9930084..f7f75f2f 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ io.github.rypofalem.armorstandeditor armorstandeditor jar - 1.20.1-43 + 1.20.1-43.2 armorstandeditor http://maven.apache.org From 6859bc4ce13b89b2a51805613f67a6334224a045 Mon Sep 17 00:00:00 2001 From: "Larry (Wolfieheart)" Date: Sun, 13 Aug 2023 11:20:49 +0200 Subject: [PATCH 261/369] [API-TEST] Bump API Dependencies to Latest --- API-Example-Plugin/pom.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/API-Example-Plugin/pom.xml b/API-Example-Plugin/pom.xml index 54c13577..aeb7fbab 100644 --- a/API-Example-Plugin/pom.xml +++ b/API-Example-Plugin/pom.xml @@ -4,7 +4,7 @@ io.github.rypofalem.apiexample armorstandeditor-apitest jar - 1.20.0-43 + 1.20.1-43.2 armorstandeditor-apitest http://maven.apache.org @@ -62,7 +62,7 @@ com.github.wolfieheart armorstandeditor - 1.20.1-43.1 + 1.20.1-43.2 provided From 8d28488461919846e171ce9ca11a118834ad82ac Mon Sep 17 00:00:00 2001 From: "Larry (Wolfieheart)" Date: Sun, 13 Aug 2023 11:21:17 +0200 Subject: [PATCH 262/369] [API-TEST} Bump to 1.20.1-43.2 --- API-Example-Plugin/src/main/resources/plugin.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/API-Example-Plugin/src/main/resources/plugin.yml b/API-Example-Plugin/src/main/resources/plugin.yml index 3ca5486d..407101c7 100644 --- a/API-Example-Plugin/src/main/resources/plugin.yml +++ b/API-Example-Plugin/src/main/resources/plugin.yml @@ -1,7 +1,7 @@ name: ArmorStandEditor-APITester main: io.github.rypofalem.apiexample.ArmorStandEditorAPITest -version: 1.20.0-43 +version: 1.20.1-43.2 api-version: "1.13" website: https://www.spigotmc.org/resources/94503/ authors: [Wolfstorm, Pinnkk] -description: Allows players to edit data of armorstands without any commands. \ No newline at end of file +description: Allows players to edit data of armorstands without any commands. From b036f2217d6353b2cf2ae204f262bce55f3a3a4f Mon Sep 17 00:00:00 2001 From: thaumiel9 <58509557+thaumiel9@users.noreply.github.com> Date: Wed, 30 Aug 2023 20:20:51 +0800 Subject: [PATCH 263/369] [LANG] Update zh_CN.yml (#320) --- src/main/resources/lang/zh_CN.yml | 72 +++++++++++++++---------------- 1 file changed, 36 insertions(+), 36 deletions(-) diff --git a/src/main/resources/lang/zh_CN.yml b/src/main/resources/lang/zh_CN.yml index 4fed569b..7a7bae7d 100644 --- a/src/main/resources/lang/zh_CN.yml +++ b/src/main/resources/lang/zh_CN.yml @@ -2,7 +2,7 @@ #A section symbol will be inserted between each character in this section #http://minecraft.gamepedia.com/Formatting_codes #translated by sumdream -#由 sumdream 和 10935336 翻译 +#由 sumdream , 10935336 和 Thaumiel9 翻译 iconname: 2n icondescription: 5 info: 6 @@ -11,7 +11,7 @@ menutitle: 8 #信息 setmode: - msg: 设置对象更改为 , 点击盔甲架开始调整。 + msg: 设置对象更改为 , 点击盔甲架开始调整 head: 头部 body: 躯体 leftleg: 左腿 @@ -23,7 +23,7 @@ setmode: invisible: 显隐切换 size: 大小切换 disableslots: 物品栏切换 - vulnerability: Toggle Vulnerability. + vulnerability: 可破坏状态切换 gravity: 重力切换 baseplate: 底座切换 placement: 位置 @@ -32,18 +32,18 @@ setmode: paste: 粘贴 reset: 重设角度 setaxis: - msg: 设置坐标为 。 + msg: 设置坐标为 x: X y: Y z: Z setslot: - msg: 设定存档槽位 。 + msg: 设定存档槽位 setadj: - msg: 设置调整模式 。 + msg: 设置调整模式 coarse: 粗调 fine: 微调 setgravity: - msg: 重力 。 + msg: 重力 on: 开启 off: 关闭 nomode: @@ -51,75 +51,75 @@ nomode: nomodeif: msg: 请先点击空气选择设定模式! copied: - msg: 盔甲架状态已保存于 。 + msg: 盔甲架状态已保存于 pasted: - msg: 已从 粘贴盔甲架状态。 + msg: 已从 粘贴盔甲架状态 target: - msg: 目标盔甲架已锁定。 + msg: 目标盔甲架已锁定 notarget: - msg: target unlocked. - armorstand: ArmorStand - itemframe: ItemFrame + msg: 目标 已解锁 + armorstand: 盔甲架 + itemframe: 物品展示框 frametarget: - msg: 目标物品展示框已锁定。 + msg: 目标物品展示框已锁定 doubletarget: - msg: 请看向盔甲架或物品展示框,不要两个同时看! + msg: 请看向盔甲架或物品展示框, 不要同时看向多个! reloaded: - msg: 配置文件已重新加载。 + msg: 配置文件已重新加载 nodoubletarget: - msg: Please look at an ArmorStand or an ItemFrame before switching hands! + msg: 请在切换副手前看向盔甲架或物品展示框! toggleinvulnerability: - msg: ArmorStand vulnerability state has been toggled to . - true: invulnerable - false: vulnerable + msg: 盔甲架可破坏状态已更改为 + true: 不可破坏 + false: 可破坏 help: - msg: "1. 手持编辑工具() + msg: "1. 手持编辑工具(). - 2. 对着盔甲架“左键或右键”来打开菜单。 + 2. 对着盔甲架“左键或右键”来打开菜单. - 3. 选择标记的菜单选项。 + 3. 选择标记的菜单选项. - 4. 使用编辑工具对着盔甲架“左键”以应用那些选项。 + 4. 使用编辑工具对着盔甲架“左键”以应用那些选项. 5. 右键单击可反方向编辑!" helptips: msg: "小提示: - 1. 当有别的盔甲架挡着你要编辑的盔甲架时,你可以拿着编辑工具按下“切换副手物品”键 (默认为 F) 来标记你想要编辑的盔甲架。 + 1. 当有别的盔甲架挡着你要编辑的盔甲架时, 你可以拿着编辑工具按下“切换副手物品”键(默认为 F)来标记你想要编辑的盔甲架. - 2. 你可以将“命名牌(NameTags)”用于盔甲架 。更重要的是,你可以使用“&样式代码”标签赋予命名牌更多色彩。 + 2. 你可以将“命名牌(NameTags)”用于盔甲架. 更重要的是, 你可以使用“&样式代码”标签赋予命名牌更多色彩. - 3. 你可以在手持编辑工具时使用“潜行(Shift) + 鼠标滚轮”来快速更改要修改的轴而不需要打开菜单。" + 3. 你可以在手持编辑工具时使用“潜行(Shift) + 鼠标滚轮”来快速更改要修改的轴而不需要打开菜单." helpurl: msg: "更多信息: https://github.com/RypoFalem/ArmorStandEditor/wiki" helpdiscord: msg: "或加入我们的讨论区: https://discord.gg/3BbJKWpTCj" give: - msg: Player given Item with CustomModelData + msg: 玩家已获取自定义模型数据的物品 playerhead: - msg: Player Head retrieved. + msg: 玩家头颅已获取 noplayerhead: - msg: Please turn on the ability to retrieve player heads in the config file. + msg: 请先在配置文件中开启获取玩家头颅功能 playerheaderror: - msg: Unable to Retrieve Player Head. + msg: 无法获取玩家头颅 #警告 cantedit: - msg: 对不起,你无法在这编辑盔甲架! + msg: 对不起, 你无法在这里编辑盔甲架! noperm: - msg: 你没有权限这样做! + msg: 你没有权限这样做! noslotnumcom: msg: 你必须选择一个物品栏! noadjcom: - msg: 你必须选择一个调整模式(粗调/微调)! + msg: 你必须选择一个调整模式(粗调/微调)! noaxiscom: msg: 你必须选择一个坐标轴! nomodecom: msg: 你必须选择一个部位! noreloadcom: - msg: 你没有权限运行重载命令! + msg: 你没有权限运行重载命令! nogive: - msg: You have no permission to use the give command! + msg: 你没有权限运行给予命令! #菜单标题 mainmenutitle: From 1dbdae635787cad5588a705177ccf0643771de53 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 30 Aug 2023 14:27:33 +0200 Subject: [PATCH 264/369] [CI] Bump PlotSquared to 7.0.0 (#319) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index f7f75f2f..643ba4b5 100644 --- a/pom.xml +++ b/pom.xml @@ -126,7 +126,7 @@ com.intellectualsites.plotsquared plotsquared-core - 7.0.0-SNAPSHOT + 7.0.0 provided From 250750bfc51cf2dc15642c8ebfdd4ff84afd6059 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 30 Aug 2023 14:27:48 +0200 Subject: [PATCH 265/369] [CI] Bump Towny to 0.99.5.15 (#318) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 643ba4b5..cb722a77 100644 --- a/pom.xml +++ b/pom.xml @@ -153,7 +153,7 @@ com.palmergames.bukkit.towny towny - 0.99.2.5 + 0.99.5.15 provided From 0b126fd2dec72918f7f487e91649da7777e5d243 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 30 Aug 2023 14:28:12 +0200 Subject: [PATCH 266/369] [CI] Bump Lands to 6.33.16 (#317) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index cb722a77..06280343 100644 --- a/pom.xml +++ b/pom.xml @@ -181,7 +181,7 @@ com.github.angeschossen LandsAPI - 6.29.12 + 6.33.16 provided From fd5494e999453b424c4764b63e6c17d9096c48c4 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 30 Aug 2023 14:28:28 +0200 Subject: [PATCH 267/369] [CI] Bump PlotSquared to 7.0.0 (#316) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 06280343..ac649d1d 100644 --- a/pom.xml +++ b/pom.xml @@ -133,7 +133,7 @@ com.intellectualsites.plotsquared plotsquared-bukkit - 7.0.0-SNAPSHOT + 7.0.0 provided From e34ee2b8f281154d8a2427765b8550154b0658aa Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 8 Sep 2023 22:12:22 +0200 Subject: [PATCH 268/369] Update actions/upload-artifact action to v3.1.3 (#325) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .github/workflows/maven-publish.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/maven-publish.yml b/.github/workflows/maven-publish.yml index 6e5eac21..1b9a8f27 100644 --- a/.github/workflows/maven-publish.yml +++ b/.github/workflows/maven-publish.yml @@ -56,7 +56,7 @@ jobs: #6 Upload Artifacts (Debug Purposes) - name: Upload Artifact for Debugging - uses: actions/upload-artifact@v3.1.2 + uses: actions/upload-artifact@v3.1.3 with: name: artifact path: /home/runner/work/ArmorStandEditor/ArmorStandEditor/target/armorstandeditor-*-*.jar From be498f2fae4a42876d47636ccdde653744e3aed7 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 8 Sep 2023 22:12:31 +0200 Subject: [PATCH 269/369] Update actions/checkout action to v4 (#324) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .github/workflows/maven-publish.yml | 2 +- .github/workflows/todo.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/maven-publish.yml b/.github/workflows/maven-publish.yml index 1b9a8f27..a9c2ac4b 100644 --- a/.github/workflows/maven-publish.yml +++ b/.github/workflows/maven-publish.yml @@ -14,7 +14,7 @@ jobs: steps: # 1. Check out the current working tree - name: Checkout ArmorStandEditor Repository - uses: actions/checkout@v3 + uses: actions/checkout@v4 with: fetch-depth: 0 # Shallow clones should be disabled for a better relevancy of analysis diff --git a/.github/workflows/todo.yml b/.github/workflows/todo.yml index 549e9134..c9b01e43 100644 --- a/.github/workflows/todo.yml +++ b/.github/workflows/todo.yml @@ -4,7 +4,7 @@ jobs: build: runs-on: "ubuntu-latest" steps: - - uses: "actions/checkout@v3" + - uses: "actions/checkout@v4" - name: "TODO to Issue" uses: "alstr/todo-to-issue-action@v4" with: From 659b12ef52bb60624607bc8e857a39dd5e44dc89 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 8 Sep 2023 22:12:49 +0200 Subject: [PATCH 270/369] [CI] Bump Lands to 6.34.0 (#323) Bumps com.github.angeschossen:LandsAPI from 6.33.16 to 6.34.0. --- updated-dependencies: - dependency-name: com.github.angeschossen:LandsAPI dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index ac649d1d..289d0bc1 100644 --- a/pom.xml +++ b/pom.xml @@ -181,7 +181,7 @@ com.github.angeschossen LandsAPI - 6.33.16 + 6.34.0 provided From 24444251eccfe7087abfbaac2281a10148cb1ef0 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 8 Sep 2023 22:13:23 +0200 Subject: [PATCH 271/369] [CI] Bump Towny to v0.99.5.17 (#314) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 289d0bc1..741f3db8 100644 --- a/pom.xml +++ b/pom.xml @@ -153,7 +153,7 @@ com.palmergames.bukkit.towny towny - 0.99.5.15 + 0.99.5.17 provided From 7e1067a35c42b65c46ae33564075b130d1a55ee8 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 6 Oct 2023 15:17:58 +0200 Subject: [PATCH 272/369] Update dependency com.bgsoftware:SuperiorSkyblockAPI to v2023.3 (#335) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 741f3db8..50260efc 100644 --- a/pom.xml +++ b/pom.xml @@ -167,7 +167,7 @@ com.bgsoftware SuperiorSkyblockAPI - 2023.2 + 2023.3 provided From 06c941e8185df2d328c01c84e12da386b47918e0 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 6 Oct 2023 15:18:10 +0200 Subject: [PATCH 273/369] Update dependency com.palmergames.bukkit.towny:towny to v0.99.6.0 (#340) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 50260efc..e2edae68 100644 --- a/pom.xml +++ b/pom.xml @@ -153,7 +153,7 @@ com.palmergames.bukkit.towny towny - 0.99.5.17 + 0.99.6.0 provided From d03900f14257ae6a6b3feff2832a109e168c6f50 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 6 Oct 2023 15:23:13 +0200 Subject: [PATCH 274/369] Bump org.apache.maven.plugins:maven-shade-plugin from 3.5.0 to 3.5.1 (#337) Bumps [org.apache.maven.plugins:maven-shade-plugin](https://github.com/apache/maven-shade-plugin) from 3.5.0 to 3.5.1. - [Release notes](https://github.com/apache/maven-shade-plugin/releases) - [Commits](https://github.com/apache/maven-shade-plugin/compare/maven-shade-plugin-3.5.0...maven-shade-plugin-3.5.1) --- updated-dependencies: - dependency-name: org.apache.maven.plugins:maven-shade-plugin dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index e2edae68..6d571e8f 100644 --- a/pom.xml +++ b/pom.xml @@ -244,7 +244,7 @@ org.apache.maven.plugins maven-shade-plugin - 3.5.0 + 3.5.1 package From 297c079d8b39a28e7df71b98c7ddab943b8eecfd Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 12 Oct 2023 21:49:02 +0200 Subject: [PATCH 275/369] Update dependency com.palmergames.bukkit.towny:towny to v0.99.6.1 (#343) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 6d571e8f..4b4b7d83 100644 --- a/pom.xml +++ b/pom.xml @@ -153,7 +153,7 @@ com.palmergames.bukkit.towny towny - 0.99.6.0 + 0.99.6.1 provided From 0fa7d2709bcffdf9f574f09d827b84a50c32bdac Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 12 Oct 2023 21:50:10 +0200 Subject: [PATCH 276/369] Update dependency com.intellectualsites.plotsquared:plotsquared-core to v7.1.0 (#342) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 4b4b7d83..dd69796d 100644 --- a/pom.xml +++ b/pom.xml @@ -126,7 +126,7 @@ com.intellectualsites.plotsquared plotsquared-core - 7.0.0 + 7.1.0 provided From 4937bc873de31a39654194ff3fbd8491d32382f8 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 12 Oct 2023 21:50:28 +0200 Subject: [PATCH 277/369] Update dependency com.intellectualsites.plotsquared:plotsquared-bukkit to v7.1.0 (#341) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index dd69796d..92b807d7 100644 --- a/pom.xml +++ b/pom.xml @@ -133,7 +133,7 @@ com.intellectualsites.plotsquared plotsquared-bukkit - 7.0.0 + 7.1.0 provided From c1fce65b88a8861ffec97d294fa2724b9a3acd72 Mon Sep 17 00:00:00 2001 From: "Larry (Wolfieheart)" Date: Thu, 12 Oct 2023 22:02:46 +0200 Subject: [PATCH 278/369] [CORE] ArmorStandEditor 1.20-44: Fixes and New UI! (#311) * [CORE] Version Bump: 1.20-44 * [CORE] Fix for #309. Add Check for ArmorStand Vulnerability and prevent destruction in Creative Mode when its Invulnerable * [CORE] Upgrade Codebase to 17 * [CORE] Bump Base API Version to 1.17 * [CORE] Autoformatting and Order Imports * [CORE] Per World Support for ArmorStandEditor * [CORE] Better Implementation for Per World Support for ArmorStandEditor. More in line with what is expected! * [CORE] Better Implementation for Per World Support for ArmorStandEditor. More in line with what is expected! * [CORE] Version Bump: 1.20-44 * [CORE] Fix for #309. Add Check for ArmorStand Vulnerability and prevent destruction in Creative Mode when its Invulnerable * [CORE] Upgrade Codebase to 17 * [CORE] Bump Base API Version to 1.17 * [CORE] Autoformatting and Order Imports * [CORE] Per World Support for ArmorStandEditor * [CORE] Better Implementation for Per World Support for ArmorStandEditor. More in line with what is expected! * [CORE] Better Implementation for Per World Support for ArmorStandEditor. More in line with what is expected! * [CORE] Config Support for Per World ArmorStandEditor. * [CI-SKIP] Something to use for later if we ever move to Paper. * [CORE] Fix for Messages not being sent properly in ASE. Bug from #315 Plus Potential Fix for #272 * [CORE] Bump ASE to 1.20.2-44 * [CORE] New UI Design #DreiFxn * [CORE] Upgrade Fix: Fix ArmorStandVisibility Not working Properly * [CORE] Bump Lands to 6.35.0 - Closes #310 and #328 * [CORE] Bump Towny to 0.99.5.20 - Closes #326 and #332 * [CORE] Bump Lombok to 1.18.30 * [CORE] Bump MavenShade to 3.5.1 * [CORE] Fixes found when Debugging 1.20.2-44: - Add in No Perm Message if a user cant run a certain toggle - Fix for the PlayerHead Menu Option - Add all new strings for NoPermOption to the Language Files - Fix Toggles * [CORE] Refactor PlotSquared Protection * [CORE] Refactor PlotSquared Protection (Part 2 - Comments + Readability) * [CORE] Stats Command #334 (Part 1) - Add the Java Logic, No Language Support or Perm Support YET! * [CI-SKIP] Tabbing was outta sync. Fixed it * [CORE] Stats (Part 2 of 3) - Add missing Language Strings to test realm * [CORE] Temporary fix for ArmorStand Names being weird and wacky when broken and placed back down. * [CORE] Temporary fix for ArmorStand Names being weird and wacky when broken and placed back down. * [CORE] Temporary fix for ArmorStand Names being weird and wacky when broken and placed back down. * [CORE] Introduce Glowing Toggle: - Requires `asedit.togglearmorstandglow` to be true - Will only Glow `white`, otherwise will need to implement a whole scoreboard system just for all the colors. Something I dont wanna impose on people. - Menu Option: `Glow Ink Sac`, Placement might vary - Add to Stats tracker - Add Language Strings for it. * [CORE] Code Review Remarks - Apparently `CodeFactor` didnt like how I was doing the Stats calculations * [CORE] Add Missing Modes to TabCompletion * [CORE/LANG] Stats (part 3) - Add translation things * [CORE] Change Version for Beta Deployment * [CORE] Fix PlotSquared Protection Error on PlotAPI * [CORE] One Final P2 Change and Bump to Final * [CORE] Fix Dependencies * [CORE] Fix Bug and Dependencies * [CORE] Bump RU_RU.yml --- .../rypofalem/apiexample/ASEventTester.java | 114 ++--- .../apiexample/ArmorStandEditorAPITest.java | 12 +- .../rypofalem/apiexample/IFEventTester.java | 84 ++-- pom.xml | 35 +- .../ArmorStandEditorPlugin.java | 206 +++++---- .../rypofalem/armorstandeditor/CommandEx.java | 227 ++++++++-- .../armorstandeditor/PlayerEditor.java | 415 ++++++++++-------- .../armorstandeditor/PlayerEditorManager.java | 128 ++++-- .../rypofalem/armorstandeditor/Scheduler.java | 7 +- .../rypofalem/armorstandeditor/Util.java | 22 +- .../armorstandeditor/api/ArmorStandEvent.java | 13 +- .../api/ArmorStandManipulatedEvent.java | 33 +- .../api/ArmorStandRenameEvent.java | 40 +- .../api/ArmorStandTargetedEvent.java | 33 +- .../armorstandeditor/api/ItemFrameEvent.java | 13 +- .../api/ItemFrameGlowEvent.java | 33 +- .../api/ItemFrameManipulatedEvent.java | 33 +- .../api/ItemFrameTargetedEvent.java | 33 +- .../api/PlayerOpenMenuEvent.java | 32 +- .../armorstandeditor/language/Language.java | 18 +- .../armorstandeditor/menu/ASEHolder.java | 8 +- .../armorstandeditor/menu/EquipmentMenu.java | 19 +- .../rypofalem/armorstandeditor/menu/Menu.java | 147 ++++--- .../modes/AdjustmentMode.java | 4 +- .../modes/ArmorStandData.java | 2 +- .../armorstandeditor/modes/Axis.java | 4 +- .../armorstandeditor/modes/CopySlots.java | 12 +- .../armorstandeditor/modes/EditMode.java | 6 +- .../protections/BentoBoxProtection.java | 23 +- .../protections/GriefDefenderProtection.java | 2 +- .../GriefPreventionProtection.java | 19 +- .../protections/LandsProtection.java | 29 +- .../protections/PlotSquaredProtection.java | 58 ++- .../protections/SkyblockProtection.java | 7 +- .../protections/TownyProtection.java | 12 +- .../protections/WorldGuardProtection.java | 9 +- src/main/resources/config.yml | 14 +- src/main/resources/lang/de_DE.yml | 40 ++ src/main/resources/lang/en_US.yml | 32 ++ src/main/resources/lang/es_ES.yml | 42 +- src/main/resources/lang/fr_FR.yml | 40 +- src/main/resources/lang/ja_JP.yml | 44 +- src/main/resources/lang/nl_NL.yml | 45 +- src/main/resources/lang/pl_PL.yml | 42 +- src/main/resources/lang/pt_BR.yml | 39 +- src/main/resources/lang/ro_RO.yml | 43 +- src/main/resources/lang/ru_RU.yml | 30 +- src/main/resources/lang/test_NA.yml | 26 +- src/main/resources/lang/uk_UA.yml | 41 +- src/main/resources/lang/zh_CN.yml | 38 +- src/main/resources/plugin.yml | 40 +- 51 files changed, 1641 insertions(+), 807 deletions(-) diff --git a/API-Example-Plugin/src/main/java/io/github/rypofalem/apiexample/ASEventTester.java b/API-Example-Plugin/src/main/java/io/github/rypofalem/apiexample/ASEventTester.java index 0dc20762..06e6d50b 100644 --- a/API-Example-Plugin/src/main/java/io/github/rypofalem/apiexample/ASEventTester.java +++ b/API-Example-Plugin/src/main/java/io/github/rypofalem/apiexample/ASEventTester.java @@ -29,66 +29,66 @@ public class ASEventTester implements Listener { - Player player; + Player player; - //ArmorStandRenameEvent - @EventHandler - public void renameArmorStand(PlayerInteractAtEntityEvent ASRenameEvent){ - player = ASRenameEvent.getPlayer(); - ASRenameEvent.setCancelled(true); - if(ASRenameEvent.isCancelled()) { - player.sendMessage("ArmorStandRenameEvent has been cancelled"); - } else{ - player.sendMessage("ArmorStandRenameEvent has not been cancelled. Continuing...."); - } - } + //ArmorStandRenameEvent + @EventHandler + public void renameArmorStand(PlayerInteractAtEntityEvent ASRenameEvent) { + player = ASRenameEvent.getPlayer(); + ASRenameEvent.setCancelled(true); + if (ASRenameEvent.isCancelled()) { + player.sendMessage("ArmorStandRenameEvent has been cancelled"); + } else { + player.sendMessage("ArmorStandRenameEvent has not been cancelled. Continuing...."); + } + } - //ArmorStandManipEvent - @EventHandler - public void manipulateArmorStand(PlayerInteractAtEntityEvent ASManipEvent){ - player = ASManipEvent.getPlayer(); - ASManipEvent.setCancelled(true); - if(ASManipEvent.isCancelled()) { - player.sendMessage("ArmorStandManipulationEvent has been cancelled"); - } else{ - player.sendMessage("ArmorStandManipulationEvent has not been cancelled. Continuing...."); - } - } + //ArmorStandManipEvent + @EventHandler + public void manipulateArmorStand(PlayerInteractAtEntityEvent ASManipEvent) { + player = ASManipEvent.getPlayer(); + ASManipEvent.setCancelled(true); + if (ASManipEvent.isCancelled()) { + player.sendMessage("ArmorStandManipulationEvent has been cancelled"); + } else { + player.sendMessage("ArmorStandManipulationEvent has not been cancelled. Continuing...."); + } + } - //ArmorStandTargetedEvent - @EventHandler - public void targetEvent(PlayerSwapHandItemsEvent targetASEvent){ - player = targetASEvent.getPlayer(); - targetASEvent.setCancelled(true); - if(targetASEvent.isCancelled()) { - player.sendMessage("ArmorStandTargetedEvent has been cancelled"); - } else{ - player.sendMessage("ArmorStandTargetedEvent has not been cancelled. Continuing...."); - } - } + //ArmorStandTargetedEvent + @EventHandler + public void targetEvent(PlayerSwapHandItemsEvent targetASEvent) { + player = targetASEvent.getPlayer(); + targetASEvent.setCancelled(true); + if (targetASEvent.isCancelled()) { + player.sendMessage("ArmorStandTargetedEvent has been cancelled"); + } else { + player.sendMessage("ArmorStandTargetedEvent has not been cancelled. Continuing...."); + } + } - //PlayerOpenMenuEvent - //onArmorStandDamage EntityDamageByEntityEvent event - @EventHandler - public void playerOpeningMenuEvent(EntityDamageByEntityEvent ASEDamageMenuOpenEvent){ - player = (Player) ASEDamageMenuOpenEvent.getDamager(); - ASEDamageMenuOpenEvent.setCancelled(true); - if(ASEDamageMenuOpenEvent.isCancelled()) { - player.sendMessage("PlayerOpenMenuEvent has been cancelled"); - } else{ - player.sendMessage("PlayerOpenMenuEvent has not been cancelled. Continuing...."); - } - } + //PlayerOpenMenuEvent + //onArmorStandDamage EntityDamageByEntityEvent event + @EventHandler + public void playerOpeningMenuEvent(EntityDamageByEntityEvent ASEDamageMenuOpenEvent) { + player = (Player) ASEDamageMenuOpenEvent.getDamager(); + ASEDamageMenuOpenEvent.setCancelled(true); + if (ASEDamageMenuOpenEvent.isCancelled()) { + player.sendMessage("PlayerOpenMenuEvent has been cancelled"); + } else { + player.sendMessage("PlayerOpenMenuEvent has not been cancelled. Continuing...."); + } + } - //Also PlayerOpenMenuEvent when RightClicking/Interacting - @EventHandler - public void playerOpeningMenuRightClickEvent(PlayerInteractEvent ASERightClickMenuOpenEvent){ - player = ASERightClickMenuOpenEvent.getPlayer(); - ASERightClickMenuOpenEvent.setCancelled(true); - if(ASERightClickMenuOpenEvent.isCancelled()) { - player.sendMessage("PlayerOpenMenuEvent has been cancelled"); - } else{ - player.sendMessage("PlayerOpenMenuEvent has not been cancelled. Continuing...."); - } - } + //Also PlayerOpenMenuEvent when RightClicking/Interacting + @EventHandler + public void playerOpeningMenuRightClickEvent(PlayerInteractEvent ASERightClickMenuOpenEvent) { + player = ASERightClickMenuOpenEvent.getPlayer(); + ASERightClickMenuOpenEvent.setCancelled(true); + if (ASERightClickMenuOpenEvent.isCancelled()) { + player.sendMessage("PlayerOpenMenuEvent has been cancelled"); + } else { + player.sendMessage("PlayerOpenMenuEvent has not been cancelled. Continuing...."); + } + } } diff --git a/API-Example-Plugin/src/main/java/io/github/rypofalem/apiexample/ArmorStandEditorAPITest.java b/API-Example-Plugin/src/main/java/io/github/rypofalem/apiexample/ArmorStandEditorAPITest.java index 53f39d22..7d366781 100644 --- a/API-Example-Plugin/src/main/java/io/github/rypofalem/apiexample/ArmorStandEditorAPITest.java +++ b/API-Example-Plugin/src/main/java/io/github/rypofalem/apiexample/ArmorStandEditorAPITest.java @@ -23,11 +23,11 @@ public class ArmorStandEditorAPITest extends JavaPlugin { - @Override - public void onEnable(){ - this.getLogger().info("[ArmorStandEditor] API Testing Plugin v1.20.0-43 - Enable"); - this.getServer().getPluginManager().registerEvents(new ASEventTester(), this); - this.getServer().getPluginManager().registerEvents(new IFEventTester(), this); - } + @Override + public void onEnable() { + this.getLogger().info("[ArmorStandEditor] API Testing Plugin v1.20.0-43 - Enable"); + this.getServer().getPluginManager().registerEvents(new ASEventTester(), this); + this.getServer().getPluginManager().registerEvents(new IFEventTester(), this); + } } diff --git a/API-Example-Plugin/src/main/java/io/github/rypofalem/apiexample/IFEventTester.java b/API-Example-Plugin/src/main/java/io/github/rypofalem/apiexample/IFEventTester.java index fe18a9bd..d80bf182 100644 --- a/API-Example-Plugin/src/main/java/io/github/rypofalem/apiexample/IFEventTester.java +++ b/API-Example-Plugin/src/main/java/io/github/rypofalem/apiexample/IFEventTester.java @@ -27,51 +27,51 @@ import org.bukkit.event.player.PlayerSwapHandItemsEvent; public class IFEventTester implements Listener { - Player player; + Player player; - //ItemFrameGlowEvent - @EventHandler - public void manipulateArmorStand(PlayerInteractAtEntityEvent IFGlowEvent){ - player = IFGlowEvent.getPlayer(); - IFGlowEvent.setCancelled(true); - if(IFGlowEvent.isCancelled()) { - player.sendMessage("ItemFrameGlowEvent has been cancelled"); - } else{ - player.sendMessage("ItemFrameGlowEvent has not been cancelled. Continuing...."); - } - } + //ItemFrameGlowEvent + @EventHandler + public void manipulateArmorStand(PlayerInteractAtEntityEvent IFGlowEvent) { + player = IFGlowEvent.getPlayer(); + IFGlowEvent.setCancelled(true); + if (IFGlowEvent.isCancelled()) { + player.sendMessage("ItemFrameGlowEvent has been cancelled"); + } else { + player.sendMessage("ItemFrameGlowEvent has not been cancelled. Continuing...."); + } + } - @EventHandler - public void manipulateItemFrame(EntityDamageByEntityEvent IFManipulationLeftClickEvent){ - player = (Player) IFManipulationLeftClickEvent.getDamager(); - IFManipulationLeftClickEvent.setCancelled(true); - if(IFManipulationLeftClickEvent.isCancelled()) { - player.sendMessage("ItemFrameManipulatedEvent has been cancelled"); - } else{ - player.sendMessage("ItemFrameManipulatedEvent has not been cancelled. Continuing...."); - } - } + @EventHandler + public void manipulateItemFrame(EntityDamageByEntityEvent IFManipulationLeftClickEvent) { + player = (Player) IFManipulationLeftClickEvent.getDamager(); + IFManipulationLeftClickEvent.setCancelled(true); + if (IFManipulationLeftClickEvent.isCancelled()) { + player.sendMessage("ItemFrameManipulatedEvent has been cancelled"); + } else { + player.sendMessage("ItemFrameManipulatedEvent has not been cancelled. Continuing...."); + } + } - @EventHandler - public void manipulateItemFrameRightClick(PlayerInteractAtEntityEvent IFManipulationRightClickEvent){ - player = IFManipulationRightClickEvent.getPlayer(); - IFManipulationRightClickEvent.setCancelled(true); - if(IFManipulationRightClickEvent.isCancelled()) { - player.sendMessage("ItemFrameManipulatedEvent has been cancelled"); - } else{ - player.sendMessage("ItemFrameManipulatedEvent has not been cancelled. Continuing...."); - } - } + @EventHandler + public void manipulateItemFrameRightClick(PlayerInteractAtEntityEvent IFManipulationRightClickEvent) { + player = IFManipulationRightClickEvent.getPlayer(); + IFManipulationRightClickEvent.setCancelled(true); + if (IFManipulationRightClickEvent.isCancelled()) { + player.sendMessage("ItemFrameManipulatedEvent has been cancelled"); + } else { + player.sendMessage("ItemFrameManipulatedEvent has not been cancelled. Continuing...."); + } + } - @EventHandler - public void targetEvent(PlayerSwapHandItemsEvent targetIFEvent){ - player = targetIFEvent.getPlayer(); - targetIFEvent.setCancelled(true); - if(targetIFEvent.isCancelled()) { - player.sendMessage("ItemFrameTargetedEvent has been cancelled"); - } else{ - player.sendMessage("ItemFrameTargetedEvent has not been cancelled. Continuing...."); - } - } + @EventHandler + public void targetEvent(PlayerSwapHandItemsEvent targetIFEvent) { + player = targetIFEvent.getPlayer(); + targetIFEvent.setCancelled(true); + if (targetIFEvent.isCancelled()) { + player.sendMessage("ItemFrameTargetedEvent has been cancelled"); + } else { + player.sendMessage("ItemFrameTargetedEvent has not been cancelled. Continuing...."); + } + } } diff --git a/pom.xml b/pom.xml index 92b807d7..7c614120 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ io.github.rypofalem.armorstandeditor armorstandeditor jar - 1.20.1-43.2 + 1.20.x-44 armorstandeditor http://maven.apache.org @@ -106,7 +106,7 @@ org.spigotmc spigot-api - 1.20.1-R0.1-SNAPSHOT + 1.20.2-R0.1-SNAPSHOT provided @@ -129,7 +129,6 @@ 7.1.0 provided - com.intellectualsites.plotsquared plotsquared-bukkit @@ -181,7 +180,7 @@ com.github.angeschossen LandsAPI - 6.34.0 + 6.35.0 provided @@ -198,17 +197,40 @@ 4.0.43 provided + org.projectlombok lombok - 1.18.28 + 1.18.30 provided + + org.openrewrite.maven + rewrite-maven-plugin + 5.4.1 + + + org.openrewrite.java.migrate.UpgradeToJava17 + org.openrewrite.java.format.AutoFormat + org.openrewrite.java.recipes.FindRecipes + org.openrewrite.java.OrderImports + org.openrewrite.java.ShortenFullyQualifiedTypeReferences + org.openrewrite.java.RemoveUnusedImports + + + + + org.openrewrite.recipe + rewrite-migrate-java + 2.0.9 + + + org.codehaus.mojo build-helper-maven-plugin @@ -237,8 +259,7 @@ maven-compiler-plugin 3.11.0 - 17 - 17 + ${java.version} diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/ArmorStandEditorPlugin.java b/src/main/java/io/github/rypofalem/armorstandeditor/ArmorStandEditorPlugin.java index 3c22191a..43179151 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/ArmorStandEditorPlugin.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/ArmorStandEditorPlugin.java @@ -19,9 +19,12 @@ package io.github.rypofalem.armorstandeditor; -import io.github.rypofalem.armorstandeditor.language.Language; -import com.jeff_media.updatechecker.*; +import com.jeff_media.updatechecker.UpdateCheckSource; +import com.jeff_media.updatechecker.UpdateChecker; +import com.jeff_media.updatechecker.UserAgentBuilder; + import io.github.rypofalem.armorstandeditor.Metrics.*; +import io.github.rypofalem.armorstandeditor.language.Language; import org.bukkit.Bukkit; import org.bukkit.ChatColor; @@ -40,7 +43,7 @@ import java.util.*; import java.util.logging.Level; -public class ArmorStandEditorPlugin extends JavaPlugin{ +public class ArmorStandEditorPlugin extends JavaPlugin { //!!! DO NOT REMOVE THESE UNDER ANY CIRCUMSTANCES - Required for BStats and UpdateChecker !!! public static final int SPIGOT_RESOURCE_ID = 94503; //Used for Update Checker @@ -49,7 +52,7 @@ public class ArmorStandEditorPlugin extends JavaPlugin{ private NamespacedKey iconKey; private static ArmorStandEditorPlugin instance; private Language lang; - + //Server Version Detection: Paper or Spigot and Invalid NMS Version String nmsVersion; String languageFolderLocation = "lang/"; @@ -61,7 +64,7 @@ public class ArmorStandEditorPlugin extends JavaPlugin{ static final String SEPARATOR_FIELD = "================================"; public PlayerEditorManager editorManager; - + //Output for Updates boolean opUpdateNotification = false; boolean runTheUpdateChecker = false; @@ -76,13 +79,14 @@ public class ArmorStandEditorPlugin extends JavaPlugin{ String editToolName = null; boolean requireToolLore = false; List editToolLore = null; + List allowedWorldList = null; boolean allowCustomModelData = false; Integer customModelDataInt = Integer.MIN_VALUE; - + //GUI Settings boolean requireSneaking = false; boolean sendToActionBar = true; - + //Armor Stand Specific Settings double coarseRot; double fineRot; @@ -101,7 +105,7 @@ public class ArmorStandEditorPlugin extends JavaPlugin{ private static ArmorStandEditorPlugin plugin; - public ArmorStandEditorPlugin(){ + public ArmorStandEditorPlugin() { instance = this; } @@ -119,9 +123,9 @@ public void onEnable() { getLogger().info("Plugin Version: " + pdfFile.getVersion()); // Check if the Minecraft version is supported - if (nmsVersion.compareTo("v1_13") < 0) { - getLogger().log(Level.WARNING,warningMCVer + "{0}",nmsVersion); - getLogger().warning("ArmorStandEditor is not compatible with this version of Minecraft. Please update to at least version 1.13. Loading failed."); + if (nmsVersion.compareTo("v1_17") < 0) { + getLogger().log(Level.WARNING, warningMCVer + "{0}", nmsVersion); + getLogger().warning("ArmorStandEditor is not compatible with this version of Minecraft. Please update to at least version 1.17. Loading failed."); getServer().getPluginManager().disablePlugin(this); getLogger().info(SEPARATOR_FIELD); return; @@ -129,11 +133,11 @@ public void onEnable() { //Also Warn People to Update if using nmsVersion lower than latest if (nmsVersion.compareTo("v1_20") < 0) { - getLogger().log(Level.WARNING,warningMCVer + "{0}",nmsVersion); + getLogger().log(Level.WARNING, warningMCVer + "{0}", nmsVersion); getLogger().warning("ArmorStandEditor is compatible with this version of Minecraft, but it is not the latest supported version."); getLogger().warning("Loading continuing, but please consider updating to the latest version."); } else { - getLogger().log(Level.INFO,warningMCVer + "{0}",nmsVersion); + getLogger().log(Level.INFO, warningMCVer + "{0}", nmsVersion); getLogger().info("ArmorStandEditor is compatible with this version of Minecraft. Loading continuing."); } //Spigot Check @@ -141,16 +145,16 @@ public void onEnable() { hasPaper = getHasPaper(); //If Paper and Spigot are both FALSE - Disable the plugin - if (!hasPaper && !hasSpigot){ + if (!hasPaper && !hasSpigot) { getLogger().severe("This plugin requires either Paper, Spigot or one of its forks to run. This is not an error, please do not report this!"); getServer().getPluginManager().disablePlugin(this); getLogger().info(SEPARATOR_FIELD); return; } else { if (hasSpigot) { - getLogger().log(Level.INFO,"SpigotMC: {0}",hasSpigot); + getLogger().log(Level.INFO, "SpigotMC: {0}", hasSpigot); } else { - getLogger().log(Level.INFO,"PaperMC: {0}",hasPaper); + getLogger().log(Level.INFO, "PaperMC: {0}", hasPaper); } } @@ -191,18 +195,18 @@ public void onEnable() { getServer().getPluginManager().disablePlugin(this); return; } - + //Do we require a custom tool name? requireToolName = getConfig().getBoolean("requireToolName", false); - if(requireToolName){ + if (requireToolName) { editToolName = getConfig().getString("toolName", null); - if(editToolName != null) editToolName = ChatColor.translateAlternateColorCodes('&', editToolName); + if (editToolName != null) editToolName = ChatColor.translateAlternateColorCodes('&', editToolName); } //Custom Model Data allowCustomModelData = getConfig().getBoolean("allowCustomModelData", false); - if(allowCustomModelData){ + if (allowCustomModelData) { customModelDataInt = getConfig().getInt("customModelDataInt", Integer.MIN_VALUE); } @@ -212,16 +216,17 @@ public void onEnable() { //Is there NBT Required for the tool requireToolData = getConfig().getBoolean("requireToolData", false); - if(requireToolData) { + if (requireToolData) { editToolData = getConfig().getInt("toolData", Integer.MIN_VALUE); } requireToolLore = getConfig().getBoolean("requireToolLore", false); - if(requireToolLore) { + if (requireToolLore) { editToolLore = getConfig().getList("toolLore", null); } + allowedWorldList = getConfig().getList("allowed-worlds", null); //Require Sneaking - Wolfst0rm/ArmorStandEditor#17 requireSneaking = getConfig().getBoolean("requireSneaking", false); @@ -246,9 +251,9 @@ public void onEnable() { adminOnlyNotifications = getConfig().getBoolean("adminOnlyNotifications", true); //Run UpdateChecker - Reports out to Console on Startup ONLY! - if(!Scheduler.isFolia() && runTheUpdateChecker) { + if (!Scheduler.isFolia() && runTheUpdateChecker) { - if(opUpdateNotification){ + if (opUpdateNotification) { runUpdateCheckerWithOPNotifyOnJoinEnabled(); } else { runUpdateCheckerConsoleUpdateCheck(); @@ -280,12 +285,12 @@ private void runUpdateCheckerConsoleUpdateCheck() { getLogger().info("Update Checker does not work on Development Builds."); } else { new UpdateChecker(this, UpdateCheckSource.SPIGET, "" + SPIGOT_RESOURCE_ID + "") - .setDownloadLink("https://www.spigotmc.org/resources/armorstandeditor-reborn.94503/") - .setChangelogLink("https://www.spigotmc.org/resources/armorstandeditor-reborn.94503/history") - .setColoredConsoleOutput(true) - .setUserAgent(new UserAgentBuilder().addPluginNameAndVersion().addServerVersion()) - .checkEveryXHours(updateCheckerInterval) - .checkNow(); + .setDownloadLink("https://www.spigotmc.org/resources/armorstandeditor-reborn.94503/") + .setChangelogLink("https://www.spigotmc.org/resources/armorstandeditor-reborn.94503/history") + .setColoredConsoleOutput(true) + .setUserAgent(new UserAgentBuilder().addPluginNameAndVersion().addServerVersion()) + .checkEveryXHours(updateCheckerInterval) + .checkNow(); } } @@ -299,13 +304,13 @@ private void runUpdateCheckerWithOPNotifyOnJoinEnabled() { getLogger().info("Update Checker does not work on Development Builds."); } else { new UpdateChecker(this, UpdateCheckSource.SPIGET, "" + SPIGOT_RESOURCE_ID + "") - .setDownloadLink("https://www.spigotmc.org/resources/armorstandeditor-reborn.94503/") - .setChangelogLink("https://www.spigotmc.org/resources/armorstandeditor-reborn.94503/history") - .setColoredConsoleOutput(true) - .setNotifyOpsOnJoin(true) - .setUserAgent(new UserAgentBuilder().addPluginNameAndVersion().addServerVersion()) - .checkEveryXHours(updateCheckerInterval) - .checkNow(); + .setDownloadLink("https://www.spigotmc.org/resources/armorstandeditor-reborn.94503/") + .setChangelogLink("https://www.spigotmc.org/resources/armorstandeditor-reborn.94503/history") + .setColoredConsoleOutput(true) + .setNotifyOpsOnJoin(true) + .setUserAgent(new UserAgentBuilder().addPluginNameAndVersion().addServerVersion()) + .checkEveryXHours(updateCheckerInterval) + .checkNow(); } } @@ -326,23 +331,23 @@ private void unregisterScoreboards(Scoreboard scoreboard) { getLogger().info("Removing Scoreboards required for Glowing Effects"); team = scoreboard.getTeam(lockedTeam); - if(team != null) { //Basic Sanity Check to ensure that the team is there + if (team != null) { //Basic Sanity Check to ensure that the team is there team.unregister(); - } else{ + } else { getLogger().severe("Team Already Appears to be removed. Please do not do this manually!"); } } private void updateConfig(String folder, String config) { - if(!new File(getDataFolder() + File.separator + folder + config).exists()){ + if (!new File(getDataFolder() + File.separator + folder + config).exists()) { saveResource(folder + config, false); } } @Override - public void onDisable(){ - for(Player player : Bukkit.getServer().getOnlinePlayers()){ - if(player.getOpenInventory().getTopInventory().getHolder() == editorManager.getMenuHolder()) player.closeInventory(); + public void onDisable() { + for (Player player : Bukkit.getServer().getOnlinePlayers()) { + if (player.getOpenInventory().getTopInventory().getHolder() == editorManager.getMenuHolder()) player.closeInventory(); } if (!Scheduler.isFolia()) { @@ -351,45 +356,46 @@ public void onDisable(){ } } - public String getNmsVersion(){ - return this.getServer().getClass().getPackage().getName().replace(".",",").split(",")[3]; + public String getNmsVersion() { + return this.getServer().getClass().getPackage().getName().replace(".", ",").split(",")[3]; } - public boolean getHasSpigot(){ + public boolean getHasSpigot() { try { Class.forName("org.spigotmc.SpigotConfig"); nmsVersionNotLatest = "SpigotMC ASAP."; return true; - } catch (ClassNotFoundException e){ + } catch (ClassNotFoundException e) { nmsVersionNotLatest = ""; return false; } } - public boolean getHasPaper(){ + public boolean getHasPaper() { try { Class.forName("com.destroystokyo.paper.PaperConfig"); nmsVersionNotLatest = "SpigotMC ASAP."; return true; - } catch (ClassNotFoundException e){ + } catch (ClassNotFoundException e) { nmsVersionNotLatest = ""; return false; } } + public String getArmorStandEditorVersion() { + return getConfig().getString("version"); + } - public String getArmorStandEditorVersion(){ return getConfig().getString("version"); } - - public boolean getArmorStandVisibility(){ + public boolean getArmorStandVisibility() { return getConfig().getBoolean("armorStandVisibility"); } - public boolean getItemFrameVisibility(){ + public boolean getItemFrameVisibility() { return getConfig().getBoolean("invisibleItemFrames"); } - public Language getLang(){ + public Language getLang() { return lang; } @@ -405,62 +411,86 @@ public boolean getRunTheUpdateChecker() { return this.getConfig().getBoolean("runTheUpdateChecker"); } - public Integer getCustomModelDataInt() { return this.getConfig().getInt("customModelDataInt"); } + public Integer getCustomModelDataInt() { + return this.getConfig().getInt("customModelDataInt"); + } //New in 1.20-43: Allow the ability to get a player head from a command - ENABLED VIA CONFIG ONLY! - public boolean getAllowedToRetrievePlayerHead() { return this.getConfig().getBoolean("allowedToRetrievePlayerHead"); } + public boolean getAllowedToRetrievePlayerHead() { + return this.getConfig().getBoolean("allowedToRetrievePlayerHead"); + } - public boolean getAdminOnlyNotifications() { return this.getConfig().getBoolean("adminOnlyNotifications"); } + public boolean getAdminOnlyNotifications() { + return this.getConfig().getBoolean("adminOnlyNotifications"); + } - public boolean isEditTool(ItemStack itemStk){ - if (itemStk == null) { return false; } - if (editTool != itemStk.getType()) { return false; } + public boolean isEditTool(ItemStack itemStk) { + if (itemStk == null) { + return false; + } + if (editTool != itemStk.getType()) { + return false; + } ItemMeta itemMeta = itemStk.getItemMeta(); - if(itemMeta == null) return false; + if (itemMeta == null) return false; //FIX: Depreciated Stack for getDurability - if (requireToolData){ + if (requireToolData) { Damageable d1 = (Damageable) itemMeta; //Get the Damageable Options for itemStk if (d1 != null) { //We do this to prevent NullPointers - if (d1.getDamage() != (short) editToolData) { return false; } + if (d1.getDamage() != (short) editToolData) { + return false; + } } } - if(requireToolName && editToolName != null){ - if(!itemStk.hasItemMeta()) { return false; } + if (requireToolName && editToolName != null) { + if (!itemStk.hasItemMeta()) { + return false; + } //Get the name of the Edit Tool - If Null, return false String itemName = itemMeta.getDisplayName(); //If the name of the Edit Tool is not the Name specified in Config then Return false - if(!itemName.equals(editToolName)) { return false; } + if (!itemName.equals(editToolName)) { + return false; + } } - if(requireToolLore && editToolLore != null){ + if (requireToolLore && editToolLore != null) { //If the ItemStack does not have Metadata then we return false - if(!itemStk.hasItemMeta()) { return false; } + if (!itemStk.hasItemMeta()) { + return false; + } //Get the lore of the Item and if it is null - Return False List itemLore = itemMeta.getLore(); //If the Item does not have Lore - Return False boolean hasTheItemLore = itemMeta.hasLore(); - if (!hasTheItemLore) { return false; } + if (!hasTheItemLore) { + return false; + } //Get the localised ListString of editToolLore List listStringOfEditToolLore = (List) editToolLore; //Return False if itemLore on the item does not match what we expect in the config. - if(!itemLore.equals(listStringOfEditToolLore)) { return false; } + if (!itemLore.equals(listStringOfEditToolLore)) { + return false; + } } if (allowCustomModelData && customModelDataInt != null) { //If the ItemStack does not have Metadata then we return false - if(!itemStk.hasItemMeta()) { return false; } + if (!itemStk.hasItemMeta()) { + return false; + } Integer itemCustomModel = itemMeta.getCustomModelData(); return itemCustomModel.equals(customModelDataInt); } @@ -501,15 +531,15 @@ public void performReload() { //Do we require a custom tool name? requireToolName = getConfig().getBoolean("requireToolName", false); - if(requireToolName){ + if (requireToolName) { editToolName = getConfig().getString("toolName", null); - if(editToolName != null) editToolName = ChatColor.translateAlternateColorCodes('&', editToolName); + if (editToolName != null) editToolName = ChatColor.translateAlternateColorCodes('&', editToolName); } //Custom Model Data allowCustomModelData = getConfig().getBoolean("allowCustomModelData", false); - if(allowCustomModelData){ + if (allowCustomModelData) { customModelDataInt = getConfig().getInt("customModelDataInt", Integer.MIN_VALUE); } @@ -519,16 +549,18 @@ public void performReload() { //Is there NBT Required for the tool requireToolData = getConfig().getBoolean("requireToolData", false); - if(requireToolData) { + if (requireToolData) { editToolData = getConfig().getInt("toolData", Integer.MIN_VALUE); } requireToolLore = getConfig().getBoolean("requireToolLore", false); - if(requireToolLore) { + if (requireToolLore) { editToolLore = getConfig().getList("toolLore", null); } + allowedWorldList = getConfig().getList("allowed-worlds", null); + //Require Sneaking - Wolfst0rm/ArmorStandEditor#17 requireSneaking = getConfig().getBoolean("requireSneaking", false); @@ -551,9 +583,9 @@ public void performReload() { updateCheckerInterval = getConfig().getDouble("updateCheckerInterval", 24); //Run UpdateChecker - Reports out to Console on Startup ONLY! - if(!Scheduler.isFolia() && runTheUpdateChecker) { + if (!Scheduler.isFolia() && runTheUpdateChecker) { - if(opUpdateNotification){ + if (opUpdateNotification) { runUpdateCheckerWithOPNotifyOnJoinEnabled(); } else { runUpdateCheckerConsoleUpdateCheck(); @@ -562,12 +594,12 @@ public void performReload() { } } - public static ArmorStandEditorPlugin instance(){ + public static ArmorStandEditorPlugin instance() { return instance; } //Metrics/bStats Support - private void getMetrics(){ + private void getMetrics() { Metrics metrics = new Metrics(this, PLUGIN_ID); @@ -603,17 +635,17 @@ private void getMetrics(){ map.put("Japanese", entry); } else if (languageUsed.startsWith("pl")) { map.put("Polish", entry); - }else if(languageUsed.startsWith("ru")){ //See PR# 41 by KPidS + } else if (languageUsed.startsWith("ru")) { //See PR# 41 by KPidS map.put("Russian", entry); - }else if(languageUsed.startsWith("ro")){ + } else if (languageUsed.startsWith("ro")) { map.put("Romanian", entry); - } else if(languageUsed.startsWith("uk")){ + } else if (languageUsed.startsWith("uk")) { map.put("Ukrainian", entry); - } else if(languageUsed.startsWith("zh")) { + } else if (languageUsed.startsWith("zh")) { map.put("Chinese", entry); - } else if(languageUsed.startsWith("pt")) { + } else if (languageUsed.startsWith("pt")) { map.put("Brazilian", entry); - } else{ + } else { map.put("English", entry); } return map; @@ -635,7 +667,7 @@ private void getMetrics(){ } public NamespacedKey getIconKey() { - if(iconKey == null) iconKey = new NamespacedKey(this, "command_icon"); + if (iconKey == null) iconKey = new NamespacedKey(this, "command_icon"); return iconKey; } diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/CommandEx.java b/src/main/java/io/github/rypofalem/armorstandeditor/CommandEx.java index 0ce4c76b..409d6814 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/CommandEx.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/CommandEx.java @@ -37,6 +37,8 @@ import org.bukkit.Material; import org.bukkit.Sound; import org.bukkit.command.*; +import org.bukkit.entity.ArmorStand; +import org.bukkit.entity.Entity; import org.bukkit.entity.Player; import org.bukkit.inventory.ItemFlag; import org.bukkit.inventory.ItemStack; @@ -61,26 +63,28 @@ public class CommandEx implements CommandExecutor, TabCompleter { final String RELOAD = ChatColor.YELLOW + "/ase reload"; final String GIVECUSTOMMODEL = ChatColor.YELLOW + "/ase give"; final String GIVEPLAYERHEAD = ChatColor.YELLOW + "/ase playerhead "; + final String GETARMORSTATS = ChatColor.YELLOW + "/ase stats"; Gson gson = new Gson(); - public CommandEx( ArmorStandEditorPlugin armorStandEditorPlugin) { + public CommandEx(ArmorStandEditorPlugin armorStandEditorPlugin) { this.plugin = armorStandEditorPlugin; } @Override public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { - if(sender instanceof ConsoleCommandSender){ //Fix to Support #267 - if(args.length == 0){ + + if (sender instanceof ConsoleCommandSender) { //Fix to Support #267 + if (args.length == 0) { sender.sendMessage(VERSION); sender.sendMessage(HELP); sender.sendMessage(RELOAD); - } else{ - switch(args[0].toLowerCase()) { + } else { + switch (args[0].toLowerCase()) { case "reload" -> commandReloadConsole(sender); case "help", "?" -> commandHelpConsole(sender); case "version" -> commandVersionConsole(sender); default -> { - sender.sendMessage(plugin.getLang().getMessage("noconsolecom","warn")); + sender.sendMessage(plugin.getLang().getMessage("noconsolecom", "warn")); } } return true; @@ -88,8 +92,8 @@ public boolean onCommand(CommandSender sender, Command command, String label, St } - if(sender instanceof Player && !getPermissionBasic( (Player) sender)){ - sender.sendMessage(plugin.getLang().getMessage("noperm", "warn")); + if (sender instanceof Player player && !getPermissionBasic(player)) { + sender.sendMessage(plugin.getLang().getMessage("nopermoption", "warn", "basic")); return true; } else { @@ -105,6 +109,7 @@ public boolean onCommand(CommandSender sender, Command command, String label, St player.sendMessage(RELOAD); player.sendMessage(GIVECUSTOMMODEL); player.sendMessage(GIVEPLAYERHEAD); + player.sendMessage(GETARMORSTATS); return true; } switch (args[0].toLowerCase()) { @@ -118,6 +123,7 @@ public boolean onCommand(CommandSender sender, Command command, String label, St case "give" -> commandGive(player); case "playerhead" -> commandGivePlayerHead(player, args); case "reload" -> commandReload(player); + case "stats" -> commandStats(player); default -> { sender.sendMessage(LISTMODE); sender.sendMessage(LISTAXIS); @@ -129,13 +135,13 @@ public boolean onCommand(CommandSender sender, Command command, String label, St sender.sendMessage(RELOAD); sender.sendMessage(GIVECUSTOMMODEL); sender.sendMessage(GIVEPLAYERHEAD); + sender.sendMessage(GETARMORSTATS); } } return true; } } - // Implemented to fix: // https://github.com/Wolfieheart/ArmorStandEditor-Issues/issues/35 & // https://github.com/Wolfieheart/ArmorStandEditor-Issues/issues/30 - See Remarks OTHER @@ -149,20 +155,20 @@ private void commandGive(Player player) { stack.setItemMeta(meta); player.getInventory().addItem(stack); player.sendMessage(plugin.getLang().getMessage("give", "info")); - } else{ + } else { player.sendMessage(plugin.getLang().getMessage("nogive", "warn")); } } - private void commandGivePlayerHead(Player player,String[] args) { - if(plugin.getAllowedToRetrievePlayerHead() && checkPermission(player, "head", true)){ + private void commandGivePlayerHead(Player player, String[] args) { + if (plugin.getAllowedToRetrievePlayerHead() && checkPermission(player, "head", true)) { - if(args.length == 2){ + if (args.length == 2) { //Get the Player head Texture String skinTexture = getPlayerHeadTexture(args[1]); - if(skinTexture == null){ + if (skinTexture == null) { player.sendMessage(plugin.getLang().getMessage("playerheaderror", "warn")); } @@ -198,16 +204,16 @@ private void commandGivePlayerHead(Player player,String[] args) { //Add the head to the Players Inventory + display PlayerHead Success Message player.getInventory().addItem(playerHead); - player.sendMessage(plugin.getLang().getMessage("playerhead","info")); + player.sendMessage(plugin.getLang().getMessage("playerhead", "info")); //Let Admins know this command has been ran - for(Player onlineList : Bukkit.getOnlinePlayers()){ - if(onlineList.hasPermission("asedit.permpack.admin") && plugin.getAdminOnlyNotifications()){ + for (Player onlineList : Bukkit.getOnlinePlayers()) { + if (onlineList.hasPermission("asedit.permpack.admin") && plugin.getAdminOnlyNotifications()) { onlineList.sendMessage(ChatColor.YELLOW + "[ArmorStandEditor] " + player.getName() + "has just used the /ase playerhead command to get the head for " + args[1]); } } } - } else{ + } else { player.sendMessage(plugin.getLang().getMessage("noplayerhead", "warn")); } } @@ -251,7 +257,7 @@ private void commandSlot(Player player, String[] args) { player.sendMessage(LISTSLOT); } - } catch ( NumberFormatException nfe) { + } catch (NumberFormatException nfe) { player.sendMessage(LISTSLOT); } } @@ -264,7 +270,7 @@ private void commandAdj(Player player, String[] args) { } if (args.length > 1) { - for ( AdjustmentMode adj : AdjustmentMode.values()) { + for (AdjustmentMode adj : AdjustmentMode.values()) { if (adj.toString().toLowerCase().contentEquals(args[1].toLowerCase())) { plugin.editorManager.getPlayerEditor(player.getUniqueId()).setAdjMode(adj); return; @@ -274,14 +280,14 @@ private void commandAdj(Player player, String[] args) { } } - private void commandAxis( Player player, String[] args) { + private void commandAxis(Player player, String[] args) { if (args.length <= 1) { player.sendMessage(plugin.getLang().getMessage("noaxiscom", "warn")); player.sendMessage(LISTAXIS); } if (args.length > 1) { - for ( Axis axis : Axis.values()) { + for (Axis axis : Axis.values()) { if (axis.toString().toLowerCase().contentEquals(args[1].toLowerCase())) { plugin.editorManager.getPlayerEditor(player.getUniqueId()).setAxis(axis); return; @@ -291,17 +297,17 @@ private void commandAxis( Player player, String[] args) { } } - private void commandMode( Player player, String[] args) { + private void commandMode(Player player, String[] args) { if (args.length <= 1) { player.sendMessage(plugin.getLang().getMessage("nomodecom", "warn")); player.sendMessage(LISTMODE); } if (args.length > 1) { - for ( EditMode mode : EditMode.values()) { + for (EditMode mode : EditMode.values()) { if (mode.toString().toLowerCase().contentEquals(args[1].toLowerCase())) { - if (args[1].equals("invisible") && !checkPermission(player, "togglearmorstandvisibility", true)) return; - if (args[1].equals("itemframe") && !checkPermission(player, "toggleitemframevisibility", true)) return; + if (args[1].equals("invisible") && !(checkPermission(player, "togglearmorstandvisibility", true) || plugin.getArmorStandVisibility())) return; + if (args[1].equals("itemframe") && !(checkPermission(player, "toggleitemframevisibility", true) || plugin.getItemFrameVisibility())) return; plugin.editorManager.getPlayerEditor(player.getUniqueId()).setMode(mode); return; } @@ -354,13 +360,13 @@ private void commandVersion(Player player) { player.sendMessage(ChatColor.YELLOW + "[ArmorStandEditor] Version: " + verString); } - private void commandVersionConsole(CommandSender sender){ + private void commandVersionConsole(CommandSender sender) { String verString = plugin.getArmorStandEditorVersion(); sender.sendMessage(ChatColor.YELLOW + "[ArmorStandEditor] Version: " + verString); } - private void commandReload(Player player){ - if(!(getPermissionReload(player))) return; + private void commandReload(Player player) { + if (!(getPermissionReload(player))) return; plugin.performReload(); player.sendMessage(plugin.getLang().getMessage("reloaded", "")); } @@ -370,7 +376,125 @@ private void commandReloadConsole(CommandSender sender) { sender.sendMessage(plugin.getLang().getMessage("reloaded", "info")); } - private boolean checkPermission(Player player, String permName, boolean sendMessageOnInvalidation) { + private void commandStats(Player player) { + if(!getPermissionStats(player)) return; + for(Entity e : player.getNearbyEntities(1,1,1)){ + if(e instanceof ArmorStand as){ + + //Calculation TIME - Might move this out later, but is OK here for now + double headX = as.getHeadPose().getX(); + headX = Math.toDegrees(headX); + headX = Math.rint(headX); + + double headY = as.getHeadPose().getY(); + headY = Math.toDegrees(headY); + headY = Math.rint(headY); + + double headZ = as.getHeadPose().getZ(); + headZ = Math.toDegrees(headZ); + headZ = Math.rint(headZ); + + //Body + double bodyX = as.getBodyPose().getX(); + bodyX = Math.toDegrees(bodyX); + bodyX = Math.rint(bodyX); + + double bodyY = as.getBodyPose().getY(); + bodyY = Math.toDegrees(bodyY); + bodyY = Math.rint(bodyY); + + double bodyZ = as.getBodyPose().getZ(); + bodyZ = Math.toDegrees(bodyZ); + bodyZ = Math.rint(bodyZ); + + + //Arms + double rightArmX = as.getRightArmPose().getX(); + rightArmX = Math.toDegrees(rightArmX); + rightArmX = Math.rint(rightArmX); + + double rightArmY = as.getRightArmPose().getY(); + rightArmY = Math.toDegrees(rightArmY); + rightArmY = Math.rint(rightArmY); + + double rightArmZ = as.getRightArmPose().getZ(); + rightArmZ = Math.toDegrees(rightArmZ); + rightArmZ = Math.rint(rightArmZ); + + + double leftArmX = as.getLeftArmPose().getX(); + leftArmX = Math.toDegrees(leftArmX); + leftArmX = Math.rint(leftArmX); + + double leftArmY = as.getLeftArmPose().getY(); + leftArmY = Math.toDegrees(leftArmY); + leftArmY = Math.rint(leftArmY); + + double leftArmZ = as.getLeftArmPose().getZ(); + leftArmZ = Math.toDegrees(leftArmZ); + leftArmZ = Math.rint(leftArmZ); + + //Legs + double rightLegX = as.getRightLegPose().getX(); + rightLegX = Math.toDegrees(rightLegX); + rightLegX = Math.rint(rightLegX); + + double rightLegY = as.getRightLegPose().getY(); + rightLegY = Math.toDegrees(rightLegY); + rightLegY = Math.rint(rightLegY); + + double rightLegZ = as.getRightLegPose().getZ(); + rightLegZ = Math.toDegrees(rightLegZ); + rightArmX = Math.rint(rightLegZ); + + double leftLegX = as.getLeftLegPose().getX(); + leftLegX = Math.toDegrees(leftLegX); + leftLegX = Math.rint(leftLegX); + + double leftLegY = as.getLeftLegPose().getY(); + leftLegY = Math.toDegrees(leftLegY); + leftLegY = Math.rint(leftLegY); + + double leftLegZ = as.getLeftLegPose().getZ(); + leftLegZ = Math.toDegrees(leftLegZ); + leftLegZ = Math.rint(leftLegZ); + + //Coordinates + float locationX = (float) as.getLocation().getX(); + float locationY = (float) as.getLocation().getY(); + float locationZ = (float) as.getLocation().getZ(); + + //Toggles + boolean isVisible = as.isVisible(); + boolean armsVisible = as.hasArms(); + boolean basePlateVisible = as.hasBasePlate(); + boolean isVulnerable = as.isInvulnerable(); + boolean hasGravity = as.hasGravity(); + boolean isSmall = as.isSmall(); + boolean isGlowing = as.isGlowing(); + boolean isLocked = plugin.scoreboard.getTeam(plugin.lockedTeam).hasEntry(as.getUniqueId().toString()); + + player.sendMessage(ChatColor.YELLOW + "----------- Armor Stand Statistics -----------"); + player.sendMessage(ChatColor.YELLOW + plugin.getLang().getMessage("stats")); + player.sendMessage(ChatColor.YELLOW + "Head: " + ChatColor.AQUA + headX + " / " + headY + " / " + headZ); + player.sendMessage(ChatColor.YELLOW + "Body: " + ChatColor.AQUA + bodyX + " / " + bodyY + " / " + bodyZ); + player.sendMessage(ChatColor.YELLOW + "Right Arm: " + ChatColor.AQUA + rightArmX + " / " + rightArmY + " / " + rightArmZ); + player.sendMessage(ChatColor.YELLOW + "Left Arm: " + ChatColor.AQUA + leftArmX + " / " + leftArmY + " / " + leftArmZ); + player.sendMessage(ChatColor.YELLOW + "Right Leg: " + ChatColor.AQUA + rightLegX + " / " + rightLegY + " / " + rightLegZ); + player.sendMessage(ChatColor.YELLOW + "Left Leg: " + ChatColor.AQUA + leftLegX + " / " + leftLegY + " / " + leftLegZ); + player.sendMessage(ChatColor.YELLOW + "Coordinates: " + ChatColor.AQUA + " x: " + locationX + " / y: " + locationY + " / z: " + locationZ); + player.sendMessage(ChatColor.YELLOW + "Is Visible: " + ChatColor.AQUA + isVisible + ". " + ChatColor.YELLOW + "Arms Visible: " + ChatColor.AQUA + armsVisible + ". " + ChatColor.YELLOW + "Base Plate Visible: "+ ChatColor.AQUA + basePlateVisible); + player.sendMessage(ChatColor.YELLOW + "Is Vulnerable: " + ChatColor.AQUA + isVulnerable + ". " + ChatColor.YELLOW + "Affected by Gravity: " + ChatColor.AQUA + hasGravity); + player.sendMessage(ChatColor.YELLOW + "Is Small: " + ChatColor.AQUA + isSmall + ". " + ChatColor.YELLOW + "Is Glowing: " + ChatColor.AQUA + isGlowing + ". " + ChatColor.YELLOW + "Is Locked: " + ChatColor.AQUA + isLocked); + player.sendMessage(ChatColor.YELLOW + "----------------------------------------------"); + } else{ + player.sendMessage(plugin.getLang().getMessage("norangeforstats", "warn")); + } + } + } + + + private boolean checkPermission(Player player, String permName, boolean sendMessageOnInvalidation) { if (permName.equalsIgnoreCase("paste")) { permName = "copy"; } @@ -387,18 +511,21 @@ private boolean checkPermission(Player player, String permName, boolean sendMes private boolean getPermissionBasic(Player player) { return checkPermission(player, "basic", false); } - - private boolean getPermissionGive(Player player) { return checkPermission(player, "give", false); } - - private boolean getPermissionUpdate(Player player){ + private boolean getPermissionGive(Player player) { + return checkPermission(player, "give", false); + } + private boolean getPermissionUpdate(Player player) { return checkPermission(player, "update", false); } - private boolean getPermissionReload(Player player) { return checkPermission(player, "reload", false); } - - private boolean getPermissionPlayerHead(Player player) { return checkPermission(player, "head", false); } + private boolean getPermissionPlayerHead(Player player) { + return checkPermission(player, "head", false); + } + private boolean getPermissionStats(Player player) { + return checkPermission(player, "stats", false); + } //REFACTOR COMPLETION @Override @@ -417,18 +544,22 @@ public List onTabComplete(CommandSender sender, Command command, String argList.add("?"); //Will Only work with permissions - if(getPermissionGive(player)){ + if (getPermissionGive(player)) { argList.add("give"); } - if(getPermissionUpdate(player)){ + if (getPermissionUpdate(player)) { argList.add("update"); } - if(getPermissionReload(player)){ + if (getPermissionReload(player)) { argList.add("reload"); } - if(getPermissionPlayerHead(player) && plugin.getAllowedToRetrievePlayerHead()){ + if (getPermissionPlayerHead(player) && plugin.getAllowedToRetrievePlayerHead()) { argList.add("playerhead"); } + + if (getPermissionStats(player)){ + argList.add("stats"); + } } if (args.length == 2 && args[0].equalsIgnoreCase("mode")) { @@ -455,17 +586,17 @@ public List onTabComplete(CommandSender sender, Command command, String private boolean isCommandValid(String commandName) { return commandName.equalsIgnoreCase("ase") || - commandName.equalsIgnoreCase("armorstandeditor") || - commandName.equalsIgnoreCase("asedit"); + commandName.equalsIgnoreCase("armorstandeditor") || + commandName.equalsIgnoreCase("asedit"); } private List getModeOptions() { return List.of( - "None", "Invisible", "ShowArms", "Gravity", "BasePlate", - "Size", "Copy", "Paste", "Head", "Body", "LeftArm", - "RightArm", "LeftLeg", "RightLeg", "Placement", - "DisableSlots", "Rotate", "Equipment", "Reset", - "ItemFrame", "ItemFrameGlow" + "None", "Invisible", "ShowArms", "Gravity", "BasePlate", + "Size", "Copy", "Paste", "Head", "Body", "LeftArm", + "RightArm", "LeftLeg", "RightLeg", "Placement", + "DisableSlots", "Rotate", "Equipment", "Reset", + "ItemFrame", "ItemFrameGlow", "Vulnerability", "ArmorStandGlow" ); } diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditor.java b/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditor.java index 0e35a2a7..81c30121 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditor.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditor.java @@ -18,6 +18,9 @@ */ package io.github.rypofalem.armorstandeditor; +import net.md_5.bungee.api.ChatMessageType; +import net.md_5.bungee.api.chat.TextComponent; + import io.github.rypofalem.armorstandeditor.api.*; import io.github.rypofalem.armorstandeditor.menu.EquipmentMenu; import io.github.rypofalem.armorstandeditor.menu.Menu; @@ -27,12 +30,6 @@ import io.github.rypofalem.armorstandeditor.modes.CopySlots; import io.github.rypofalem.armorstandeditor.modes.EditMode; - -import java.util.ArrayList; -import java.util.UUID; - -import net.md_5.bungee.api.ChatMessageType; -import net.md_5.bungee.api.chat.TextComponent; import org.bukkit.*; import org.bukkit.entity.ArmorStand; import org.bukkit.entity.ItemFrame; @@ -43,6 +40,9 @@ import org.bukkit.scoreboard.Team; import org.bukkit.util.EulerAngle; +import java.util.ArrayList; +import java.util.UUID; + public class PlayerEditor { public ArmorStandEditorPlugin plugin; Team team; @@ -109,109 +109,105 @@ public void setCopySlot(byte slot) { } public void editArmorStand(ArmorStand armorStand) { - if (!getPlayer().hasPermission("asedit.basic")) return; - - armorStand = attemptTarget(armorStand); - switch (eMode) { - case LEFTARM: - armorStand.setLeftArmPose(subEulerAngle(armorStand.getLeftArmPose())); - break; - case RIGHTARM: - armorStand.setRightArmPose(subEulerAngle(armorStand.getRightArmPose())); - break; - case BODY: - armorStand.setBodyPose(subEulerAngle(armorStand.getBodyPose())); - break; - case HEAD: - armorStand.setHeadPose(subEulerAngle(armorStand.getHeadPose())); - break; - case LEFTLEG: - armorStand.setLeftLegPose(subEulerAngle(armorStand.getLeftLegPose())); - break; - case RIGHTLEG: - armorStand.setRightLegPose(subEulerAngle(armorStand.getRightLegPose())); - break; - case SHOWARMS: - toggleArms(armorStand); - break; - case SIZE: - toggleSize(armorStand); - break; - case INVISIBLE: - toggleVisible(armorStand); - break; - case BASEPLATE: - togglePlate(armorStand); - break; - case GRAVITY: - toggleGravity(armorStand); - break; - case COPY: - copy(armorStand); - break; - case PASTE: - paste(armorStand); - break; - case PLACEMENT: - move(armorStand); - break; - case ROTATE: - rotate(armorStand); - break; - case DISABLESLOTS: - toggleDisableSlots(armorStand); - break; - case VULNERABILITY: - toggleInvulnerability(armorStand); - break; - case EQUIPMENT: - openEquipment(armorStand); - break; - case RESET: - resetPosition(armorStand); - break; - case NONE: - default: - sendMessage("nomode", null); - break; + if (getPlayer().hasPermission("asedit.basic")) { + + armorStand = attemptTarget(armorStand); + switch (eMode) { + case LEFTARM: + armorStand.setLeftArmPose(subEulerAngle(armorStand.getLeftArmPose())); + break; + case RIGHTARM: + armorStand.setRightArmPose(subEulerAngle(armorStand.getRightArmPose())); + break; + case BODY: + armorStand.setBodyPose(subEulerAngle(armorStand.getBodyPose())); + break; + case HEAD: + armorStand.setHeadPose(subEulerAngle(armorStand.getHeadPose())); + break; + case LEFTLEG: + armorStand.setLeftLegPose(subEulerAngle(armorStand.getLeftLegPose())); + break; + case RIGHTLEG: + armorStand.setRightLegPose(subEulerAngle(armorStand.getRightLegPose())); + break; + case SHOWARMS: + toggleArms(armorStand); + break; + case SIZE: + toggleSize(armorStand); + break; + case INVISIBLE: + toggleVisible(armorStand); + break; + case BASEPLATE: + togglePlate(armorStand); + break; + case GRAVITY: + toggleGravity(armorStand); + break; + case COPY: + copy(armorStand); + break; + case PASTE: + paste(armorStand); + break; + case PLACEMENT: + move(armorStand); + break; + case ROTATE: + rotate(armorStand); + break; + case DISABLESLOTS: + toggleDisableSlots(armorStand); + break; + case VULNERABILITY: + toggleInvulnerability(armorStand); + break; + case EQUIPMENT: + openEquipment(armorStand); + break; + case RESET: + resetPosition(armorStand); + break; + case GLOWING: + toggleGlowing(armorStand); + break; + case NONE: + default: + sendMessage("nomode", null); + break; - } + } + }else return; } public void editItemFrame(ItemFrame itemFrame) { - if (!getPlayer().hasPermission("asedit.toggleitemframevisibility") || !plugin.invisibleItemFrames) return; //Option to use perms or Config - - //Generate a new ArmorStandManipulationEvent and call it out. - ItemFrameManipulatedEvent event = new ItemFrameManipulatedEvent(itemFrame, getPlayer()); - Bukkit.getPluginManager().callEvent(event); // Bukkit handles the call out - if (event.isCancelled()) return; //do nothing if cancelled - - switch (eMode) { - case ITEMFRAME: - toggleItemFrameVisible(itemFrame); - break; - case RESET: - itemFrame.setVisible(true); - break; - case NONE: - default: - sendMessage("nomodeif", null); - break; - } - } - - private void resetPosition(ArmorStand armorStand) { - if(!getPlayer().hasPermission("asedit.reset")) return; - armorStand.setHeadPose(new EulerAngle(0, 0, 0)); - armorStand.setBodyPose(new EulerAngle(0, 0, 0)); - armorStand.setLeftArmPose(new EulerAngle(0, 0, 0)); - armorStand.setRightArmPose(new EulerAngle(0, 0, 0)); - armorStand.setLeftLegPose(new EulerAngle(0, 0, 0)); - armorStand.setRightLegPose(new EulerAngle(0, 0, 0)); + if (getPlayer().hasPermission("asedit.toggleitemframevisibility") || plugin.invisibleItemFrames) { + + //Generate a new ArmorStandManipulationEvent and call it out. + ItemFrameManipulatedEvent event = new ItemFrameManipulatedEvent(itemFrame, getPlayer()); + Bukkit.getPluginManager().callEvent(event); // Bukkit handles the call out + if (event.isCancelled()) return; //do nothing if cancelled + + switch (eMode) { + case ITEMFRAME: + toggleItemFrameVisible(itemFrame); + break; + case RESET: + itemFrame.setVisible(true); + break; + case NONE: + default: + sendMessage("nomodeif", null); + break; + } + }else return; } private void openEquipment(ArmorStand armorStand) { if (!getPlayer().hasPermission("asedit.equipment")) return; + //if (team != null && team.hasEntry(armorStand.getName())) return; //Do not allow editing if the ArmorStand is Disabled equipMenu = new EquipmentMenu(this, armorStand); equipMenu.open(); } @@ -256,7 +252,7 @@ public void reverseEditArmorStand(ArmorStand armorStand) { } private void move(ArmorStand armorStand) { - if(!getPlayer().hasPermission("asedit.movement")) return; + if (!getPlayer().hasPermission("asedit.movement")) return; //Generate a new ArmorStandManipulationEvent and call it out. ArmorStandManipulatedEvent event = new ArmorStandManipulatedEvent(armorStand, getPlayer()); @@ -279,7 +275,7 @@ private void move(ArmorStand armorStand) { } private void reverseMove(ArmorStand armorStand) { - if(!getPlayer().hasPermission("asedit.movement")) return; + if (!getPlayer().hasPermission("asedit.movement")) return; Location loc = armorStand.getLocation(); switch (axis) { case X: @@ -296,7 +292,7 @@ private void reverseMove(ArmorStand armorStand) { } private void rotate(ArmorStand armorStand) { - if(!getPlayer().hasPermission("asedit.rotation")) return; + if (!getPlayer().hasPermission("asedit.rotation")) return; Location loc = armorStand.getLocation(); float yaw = loc.getYaw(); loc.setYaw((yaw + 180 + (float) degreeAngleChange) % 360 - 180); @@ -304,7 +300,7 @@ private void rotate(ArmorStand armorStand) { } private void reverseRotate(ArmorStand armorStand) { - if(!getPlayer().hasPermission("asedit.rotation")) return; + if (!getPlayer().hasPermission("asedit.rotation")) return; Location loc = armorStand.getLocation(); float yaw = loc.getYaw(); loc.setYaw((yaw + 180 - (float) degreeAngleChange) % 360 - 180); @@ -312,113 +308,170 @@ private void reverseRotate(ArmorStand armorStand) { } private void copy(ArmorStand armorStand) { - if(!getPlayer().hasPermission("asedit.copy")) return; - copySlots.copyDataToSlot(armorStand); - sendMessage("copied", "" + (copySlots.currentSlot + 1)); - setMode(EditMode.PASTE); + if (getPlayer().hasPermission("asedit.copy")) { + copySlots.copyDataToSlot(armorStand); + sendMessage("copied", "" + (copySlots.currentSlot + 1)); + setMode(EditMode.PASTE); + }else{ + sendMessage("nopermoption", "warn", "copy"); + } + } private void paste(ArmorStand armorStand) { - if(!getPlayer().hasPermission("asedit.paste")) return; - ArmorStandData data = copySlots.getDataToPaste(); - if (data == null) return; - armorStand.setHeadPose(data.headPos); - armorStand.setBodyPose(data.bodyPos); - armorStand.setLeftArmPose(data.leftArmPos); - armorStand.setRightArmPose(data.rightArmPos); - armorStand.setLeftLegPose(data.leftLegPos); - armorStand.setRightLegPose(data.rightLegPos); - armorStand.setSmall(data.size); - armorStand.setGravity(data.gravity); - armorStand.setBasePlate(data.basePlate); - armorStand.setArms(data.showArms); - armorStand.setVisible(data.visible); - - //Only Paste the Items on the stand if in Creative Mode - Do not run elsewhere for good fecking reason! - if (this.getPlayer().getGameMode() == GameMode.CREATIVE) { - armorStand.getEquipment().setHelmet(data.head); - armorStand.getEquipment().setChestplate(data.body); - armorStand.getEquipment().setLeggings(data.legs); - armorStand.getEquipment().setBoots(data.feetsies); - armorStand.getEquipment().setItemInMainHand(data.rightHand); - armorStand.getEquipment().setItemInOffHand(data.leftHand); + if (getPlayer().hasPermission("asedit.paste")) { + ArmorStandData data = copySlots.getDataToPaste(); + if (data == null) return; + armorStand.setHeadPose(data.headPos); + armorStand.setBodyPose(data.bodyPos); + armorStand.setLeftArmPose(data.leftArmPos); + armorStand.setRightArmPose(data.rightArmPos); + armorStand.setLeftLegPose(data.leftLegPos); + armorStand.setRightLegPose(data.rightLegPos); + armorStand.setSmall(data.size); + armorStand.setGravity(data.gravity); + armorStand.setBasePlate(data.basePlate); + armorStand.setArms(data.showArms); + armorStand.setVisible(data.visible); + + //Only Paste the Items on the stand if in Creative Mode + // - Do not run elsewhere for good fecking reason! + if (this.getPlayer().getGameMode() == GameMode.CREATIVE) { + armorStand.getEquipment().setHelmet(data.head); + armorStand.getEquipment().setChestplate(data.body); + armorStand.getEquipment().setLeggings(data.legs); + armorStand.getEquipment().setBoots(data.feetsies); + armorStand.getEquipment().setItemInMainHand(data.rightHand); + armorStand.getEquipment().setItemInOffHand(data.leftHand); + } + sendMessage("pasted", "" + (copySlots.currentSlot + 1)); + }else{ + sendMessage("nopermoption", "warn", "paste"); + } + } + + private void resetPosition(ArmorStand armorStand) { + if (getPlayer().hasPermission("asedit.reset")) { + armorStand.setHeadPose(new EulerAngle(0, 0, 0)); + armorStand.setBodyPose(new EulerAngle(0, 0, 0)); + armorStand.setLeftArmPose(new EulerAngle(0, 0, 0)); + armorStand.setRightArmPose(new EulerAngle(0, 0, 0)); + armorStand.setLeftLegPose(new EulerAngle(0, 0, 0)); + armorStand.setRightLegPose(new EulerAngle(0, 0, 0)); + } else{ + sendMessage("nopermoption", "warn", "reset"); } - sendMessage("pasted", "" + (copySlots.currentSlot + 1)); } private void toggleDisableSlots(ArmorStand armorStand) { - if (!getPlayer().hasPermission("asedit.disableSlots")) return; - if (armorStand.hasEquipmentLock(EquipmentSlot.HAND, ArmorStand.LockType.REMOVING_OR_CHANGING)) { //Adds a lock to every slot or removes it - team = Scheduler.isFolia() ? null : plugin.scoreboard.getTeam(plugin.lockedTeam); - armorStandID = armorStand.getUniqueId(); - - for (final EquipmentSlot slot : EquipmentSlot.values()) { // UNLOCKED - armorStand.removeEquipmentLock(slot, ArmorStand.LockType.REMOVING_OR_CHANGING); - armorStand.removeEquipmentLock(slot, ArmorStand.LockType.ADDING); - } - getPlayer().playSound(getPlayer().getLocation(), Sound.ENTITY_ITEM_BREAK, SoundCategory.PLAYERS, 1.0f, 1.0f); + if (!getPlayer().hasPermission("asedit.disableSlots")){ + sendMessage("nopermoption", "warn", "disableslots"); + } else { + if (armorStand.hasEquipmentLock(EquipmentSlot.HAND, ArmorStand.LockType.REMOVING_OR_CHANGING)) { //Adds a lock to every slot or removes it + team = Scheduler.isFolia() ? null : plugin.scoreboard.getTeam(plugin.lockedTeam); + armorStandID = armorStand.getUniqueId(); - if(team != null) { - team.removeEntry(armorStandID.toString()); - armorStand.addPotionEffect(new PotionEffect(PotionEffectType.GLOWING, 50, 1, false, false)); //300 Ticks = 15 seconds - } + for (final EquipmentSlot slot : EquipmentSlot.values()) { // UNLOCKED + armorStand.removeEquipmentLock(slot, ArmorStand.LockType.REMOVING_OR_CHANGING); + armorStand.removeEquipmentLock(slot, ArmorStand.LockType.ADDING); + } + getPlayer().playSound(getPlayer().getLocation(), Sound.ENTITY_ITEM_BREAK, SoundCategory.PLAYERS, 1.0f, 1.0f); + if (team != null) { + team.removeEntry(armorStandID.toString()); + armorStand.addPotionEffect(new PotionEffect(PotionEffectType.GLOWING, 50, 1, false, false)); //300 Ticks = 15 seconds + } - } else { - for (final EquipmentSlot slot : EquipmentSlot.values()) { //LOCKED - armorStand.addEquipmentLock(slot, ArmorStand.LockType.REMOVING_OR_CHANGING); - armorStand.addEquipmentLock(slot, ArmorStand.LockType.ADDING); - } - getPlayer().playSound(getPlayer().getLocation(), Sound.ITEM_ARMOR_EQUIP_IRON, SoundCategory.PLAYERS, 1.0f, 1.0f); - if(team != null) { - team.addEntry(armorStandID.toString()); - armorStand.addPotionEffect(new PotionEffect(PotionEffectType.GLOWING, 50, 1, false, false)); //300 Ticks = 15 seconds + + } else { + for (final EquipmentSlot slot : EquipmentSlot.values()) { //LOCKED + armorStand.addEquipmentLock(slot, ArmorStand.LockType.REMOVING_OR_CHANGING); + armorStand.addEquipmentLock(slot, ArmorStand.LockType.ADDING); + } + getPlayer().playSound(getPlayer().getLocation(), Sound.ITEM_ARMOR_EQUIP_IRON, SoundCategory.PLAYERS, 1.0f, 1.0f); + if (team != null) { + team.addEntry(armorStandID.toString()); + armorStand.addPotionEffect(new PotionEffect(PotionEffectType.GLOWING, 50, 1, false, false)); //300 Ticks = 15 seconds + } } - } - sendMessage("disabledslots", null); + sendMessage("disabledslots", null); + } } private void toggleInvulnerability(ArmorStand armorStand) { //See NewFeature-Request #256 for more info - if(!getPlayer().hasPermission("asedit.toggleInvulnerability")) return; - armorStand.setInvulnerable(!armorStand.isInvulnerable()); - sendMessage("toggleinvulnerability", String.valueOf(armorStand.isInvulnerable())); + if (getPlayer().hasPermission("asedit.toggleInvulnerability")) { + armorStand.setInvulnerable(!armorStand.isInvulnerable()); + sendMessage("toggleinvulnerability", String.valueOf(armorStand.isInvulnerable())); + } else { + sendMessage("nopermoption","warn", "vulnerability"); + } } - private void toggleGravity(ArmorStand armorStand) { - if(!getPlayer().hasPermission("asedit.togglegravity")) return; + if (getPlayer().hasPermission("asedit.togglegravity")){ + armorStand.setGravity(!armorStand.hasGravity()); + sendMessage("setgravity", String.valueOf(armorStand.hasGravity()));//Fix for Wolfst0rm/ArmorStandEditor-Issues#6: Translation of On/Off Keys are broken + } else{ + sendMessage("nopermoption","warn", "gravity"); + } + + - //Fix for Wolfst0rm/ArmorStandEditor-Issues#6: Translation of On/Off Keys are broken - armorStand.setGravity(!armorStand.hasGravity()); - sendMessage("setgravity", String.valueOf(armorStand.hasGravity())); } void togglePlate(ArmorStand armorStand) { - if(!getPlayer().hasPermission("asedit.togglebaseplate")) return; - armorStand.setBasePlate(!armorStand.hasBasePlate()); + if(getPlayer().hasPermission("asedit.togglebaseplate")){ + armorStand.setBasePlate(!armorStand.hasBasePlate()); + } else{ + sendMessage("nopermoption", "warn", "baseplate"); + } + + } + + void toggleGlowing(ArmorStand armorStand){ + if(getPlayer().hasPermission("asedit.togglearmorstandglow")){ + //Will only make it glow white - Not something we can do like with Locking. Do not request this! + //Otherwise, this simple function becomes a mess to maintain. As you would need a Team generated with each + //Color and I ain't going to impose that on servers. + armorStand.setGlowing(!armorStand.isGlowing()); + } else{ + sendMessage("nopermoption", "warn", "armorstandglow"); + } } void toggleArms(ArmorStand armorStand) { - if(!getPlayer().hasPermission("asedit.togglearms")) return; - armorStand.setArms(!armorStand.hasArms()); + if(getPlayer().hasPermission("asedit.togglearms")){ + armorStand.setArms(!armorStand.hasArms()); + }else{ + sendMessage("nopermoption", "warn", "showarms"); + } } void toggleVisible(ArmorStand armorStand) { - if (!getPlayer().hasPermission("asedit.togglearmorstandvisibility") || !plugin.armorStandVisibility) return; //Option to use perms or Config - armorStand.setVisible(!armorStand.isVisible()); + if(getPlayer().hasPermission("asedit.togglearmorstandvisibility") || plugin.getArmorStandVisibility()){ + armorStand.setVisible(!armorStand.isVisible()); + } else{ //Throw No Permission Message + sendMessage("nopermoption", "warn", "armorstandvisibility"); + } } void toggleItemFrameVisible(ItemFrame itemFrame) { - if (!getPlayer().hasPermission("asedit.toggleitemframevisibility") || !plugin.invisibleItemFrames) return; //Option to use perms or Config - itemFrame.setVisible(!itemFrame.isVisible()); + if (getPlayer().hasPermission("asedit.toggleitemframevisibility") || plugin.invisibleItemFrames) { //Option to use perms or Config + itemFrame.setVisible(!itemFrame.isVisible()); + }else { + sendMessage("nopermoption", "warn", "itemframevisibility"); + } } void toggleSize(ArmorStand armorStand) { - if(!getPlayer().hasPermission("asedit.togglesize")) return; - armorStand.setSmall(!armorStand.isSmall()); + if (getPlayer().hasPermission("asedit.togglesize")) { + armorStand.setSmall(!armorStand.isSmall()); + } else { + sendMessage("nopermoption", "warn", "size"); + } } void cycleAxis(int i) { @@ -541,12 +594,11 @@ public void setFrameTarget(ArrayList itemFrames) { } - ArmorStand attemptTarget(ArmorStand armorStand) { if (target == null - || !target.isValid() - || target.getWorld() != getPlayer().getWorld() - || target.getLocation().distanceSquared(getPlayer().getLocation()) > 100) + || !target.isValid() + || target.getWorld() != getPlayer().getWorld() + || target.getLocation().distanceSquared(getPlayer().getLocation()) > 100) return armorStand; armorStand = target; return armorStand; @@ -559,7 +611,7 @@ void sendMessage(String path, String format, String option) { plugin.getServer().getPlayer(getUUID()).spigot().sendMessage(ChatMessageType.ACTION_BAR, new TextComponent(message)); } else { String rawText = plugin.getLang().getRawMessage(path, format, option); - String command = String.format("title %s actionbar %s", plugin.getServer().getPlayer(getUUID()).getName(), rawText); + String command = "title %s actionbar %s".formatted(plugin.getServer().getPlayer(getUUID()).getName(), rawText); Bukkit.dispatchCommand(Bukkit.getConsoleSender(), command); } } else { @@ -608,7 +660,6 @@ private class OpenMenuTask implements Runnable { public void run() { if (isMenuCancelled()) return; - //API: PlayerOpenMenuEvent PlayerOpenMenuEvent event = new PlayerOpenMenuEvent(getPlayer()); Bukkit.getPluginManager().callEvent(event); //TODO: Folia Refactor diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditorManager.java b/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditorManager.java index 23ca3ab6..2ae09182 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditorManager.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditorManager.java @@ -20,6 +20,7 @@ package io.github.rypofalem.armorstandeditor; import com.google.common.collect.ImmutableList; + import io.github.rypofalem.armorstandeditor.api.ArmorStandRenameEvent; import io.github.rypofalem.armorstandeditor.api.ItemFrameGlowEvent; import io.github.rypofalem.armorstandeditor.menu.ASEHolder; @@ -37,6 +38,7 @@ import org.bukkit.event.player.*; import org.bukkit.inventory.EquipmentSlot; import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.PlayerInventory; import org.bukkit.persistence.PersistentDataType; import org.bukkit.util.Vector; @@ -64,16 +66,16 @@ public class PlayerEditorManager implements Listener { // Instantiate protections used to determine whether a player may edit an armor stand or item frame //NOTE: GriefPreventionProtection is Depreciated as of v1.19.3-40 private final List protections = ImmutableList.of( - new GriefDefenderProtection(), - new GriefPreventionProtection(), - new LandsProtection(), - new PlotSquaredProtection(), - new SkyblockProtection(), - new TownyProtection(), - new WorldGuardProtection(), - new BentoBoxProtection()); - - PlayerEditorManager( ArmorStandEditorPlugin plugin) { + new GriefDefenderProtection(), + new GriefPreventionProtection(), + new LandsProtection(), + new PlotSquaredProtection(), + new SkyblockProtection(), + new TownyProtection(), + new WorldGuardProtection(), + new BentoBoxProtection()); + + PlayerEditorManager(ArmorStandEditorPlugin plugin) { this.plugin = plugin; players = new HashMap<>(); coarseAdj = Util.FULL_CIRCLE / plugin.coarseRot; @@ -85,7 +87,7 @@ public class PlayerEditorManager implements Listener { } @EventHandler(priority = EventPriority.LOWEST) - void onArmorStandDamage( EntityDamageByEntityEvent event) { + void onArmorStandDamage(EntityDamageByEntityEvent event) { if (!(event.getDamager() instanceof Player)) return; Player player = (Player) event.getDamager(); if (!plugin.isEditTool(player.getInventory().getItemInMainHand())) return; @@ -109,7 +111,7 @@ void onArmorStandDamage( EntityDamageByEntityEvent event) { } @EventHandler(priority = EventPriority.LOWEST) - void onArmorStandInteract( PlayerInteractAtEntityEvent event) { + void onArmorStandInteract(PlayerInteractAtEntityEvent event) { if (ignoreNextInteract) return; if (event.getHand() != EquipmentSlot.HAND) return; Player player = event.getPlayer(); @@ -180,8 +182,8 @@ void onArmorStandInteract( PlayerInteractAtEntityEvent event) { } if (player.getInventory().getItemInMainHand().getType().equals(Material.GLOW_INK_SAC) //attempt glowing - && player.hasPermission("asedit.basic") - && plugin.glowItemFrames && player.isSneaking()) { + && player.hasPermission("asedit.basic") + && plugin.glowItemFrames && player.isSneaking()) { ItemFrameGlowEvent e = new ItemFrameGlowEvent(itemFrame, player); Bukkit.getPluginManager().callEvent(e); @@ -215,6 +217,32 @@ void onArmorStandInteract( PlayerInteractAtEntityEvent event) { } } + @EventHandler(priority = EventPriority.LOW, ignoreCancelled = true) + void onArmorStandBreak(EntityDamageByEntityEvent event) { // Fixes issue #309 + if (!(event.getDamager() instanceof Player)) return; // If the damager is not a player, ignore. + if (!(event.getEntity() instanceof ArmorStand)) return; // If the damaged entity is not an ArmorStand, ignore. + + if (event.getEntity() instanceof ArmorStand entityAS) { + // Check if the ArmorStand is invulnerable and if the damager is a player. + if (entityAS.isInvulnerable() && event.getDamager() instanceof Player p) { + // Check if the player is in Creative mode. + if (p.getGameMode() == GameMode.CREATIVE) { + // If the player is in Creative mode and the ArmorStand is invulnerable, + // cancel the event to prevent breaking the ArmorStand. + p.sendMessage(plugin.getLang().getMessage("unabledestroycreative")); + event.setCancelled(true); // Cancel the event to prevent ArmorStand destruction. + } + } + } + + if(event.getEntity() instanceof ArmorStand entityAS && entityAS.isDead()){ + //TODO: Find a more permanent fix for "Once you destroy that armor stand, the armor stand will keep it's name and colour given by the name tag." THIS IS A TEMP SOLUTION FOR NOW. + event.getEntity().setCustomName(null); + event.getEntity().setCustomNameVisible(false); + event.setCancelled(false); + } + } + @EventHandler(priority = EventPriority.LOW, ignoreCancelled = true) public void onSwitchHands(PlayerSwapHandItemsEvent event) { if (!plugin.isEditTool(event.getOffHandItem())) return; //event assumes they are already switched @@ -232,9 +260,8 @@ public void onSwitchHands(PlayerSwapHandItemsEvent event) { getPlayerEditor(player.getUniqueId()).setTarget(as); } else if (itemF != null && !itemF.isEmpty()) { getPlayerEditor(player.getUniqueId()).setFrameTarget(itemF); - } else { //TODO: Fix the sending of the message Twice in this Statement - getPlayerEditor(player.getUniqueId()).setTarget(null); - getPlayerEditor(player.getUniqueId()).setFrameTarget(null); + } else { + getPlayerEditor(player.getUniqueId()).sendMessage("nodoubletarget","warn"); } } @@ -254,9 +281,9 @@ private ArrayList getTargets(Player player) { List nearby = (List) player.getWorld().getNearbyEntities(eyeLaser, LASERRADIUS, LASERRADIUS, LASERRADIUS); if (!nearby.isEmpty()) { boolean endLaser = false; - for ( Entity e : nearby) { - if (e instanceof ArmorStand) { - armorStands.add((ArmorStand) e); + for (Entity e : nearby) { + if (e instanceof ArmorStand stand) { + armorStands.add(stand); endLaser = true; } } @@ -285,9 +312,9 @@ private ArrayList getFrameTargets(Player player) { List nearby = (List) player.getWorld().getNearbyEntities(eyeLaser, LASERRADIUS, LASERRADIUS, LASERRADIUS); if (!nearby.isEmpty()) { boolean endLaser = false; - for ( Entity e : nearby) { - if (e instanceof ItemFrame) { - itemFrames.add((ItemFrame) e); + for (Entity e : nearby) { + if (e instanceof ItemFrame frame) { + itemFrames.add(frame); endLaser = true; } } @@ -302,7 +329,7 @@ private ArrayList getFrameTargets(Player player) { } - boolean canEdit( Player player, Entity entity) { + boolean canEdit(Player player, Entity entity) { //Get the Entity being checked for editing Block block = entity.getLocation().getBlock(); @@ -310,43 +337,50 @@ boolean canEdit( Player player, Entity entity) { return protections.stream().allMatch(protection -> protection.checkPermission(block, player)); } - void applyLeftTool( Player player, ArmorStand as) { + void applyLeftTool(Player player, ArmorStand as) { getPlayerEditor(player.getUniqueId()).cancelOpenMenu(); getPlayerEditor(player.getUniqueId()).editArmorStand(as); } - void applyLeftTool( Player player, ItemFrame itemf) { + void applyLeftTool(Player player, ItemFrame itemf) { getPlayerEditor(player.getUniqueId()).cancelOpenMenu(); getPlayerEditor(player.getUniqueId()).editItemFrame(itemf); } - void applyRightTool( Player player, ItemFrame itemf) { + void applyRightTool(Player player, ItemFrame itemf) { getPlayerEditor(player.getUniqueId()).cancelOpenMenu(); getPlayerEditor(player.getUniqueId()).editItemFrame(itemf); } - void applyRightTool( Player player, ArmorStand as) { + void applyRightTool(Player player, ArmorStand as) { getPlayerEditor(player.getUniqueId()).cancelOpenMenu(); getPlayerEditor(player.getUniqueId()).reverseEditArmorStand(as); } //Unused? @EventHandler(priority = EventPriority.LOWEST) - void onRightClickTool( PlayerInteractEvent e) { + void onRightClickTool(PlayerInteractEvent e) { if (!(e.getAction() == Action.LEFT_CLICK_AIR - || e.getAction() == Action.RIGHT_CLICK_AIR - || e.getAction() == Action.LEFT_CLICK_BLOCK - || e.getAction() == Action.RIGHT_CLICK_BLOCK)) return; + || e.getAction() == Action.RIGHT_CLICK_AIR + || e.getAction() == Action.LEFT_CLICK_BLOCK + || e.getAction() == Action.RIGHT_CLICK_BLOCK)) return; Player player = e.getPlayer(); if (!plugin.isEditTool(player.getInventory().getItemInMainHand())) return; if (plugin.requireSneaking && !player.isSneaking()) return; - if(!player.hasPermission("asedit.basic")) return; + if (!player.hasPermission("asedit.basic")) return; + + if (!plugin.allowedWorldList.contains(player.getWorld().getName())) { //Implementation for Per World ASE + getPlayerEditor(player.getUniqueId()).sendMessage("notincorrectworld", "warn"); + e.setCancelled(true); + return; + } + e.setCancelled(true); getPlayerEditor(player.getUniqueId()).openMenu(); } @EventHandler(priority = EventPriority.NORMAL) - void onScrollNCrouch( PlayerItemHeldEvent e) { + void onScrollNCrouch(PlayerItemHeldEvent e) { Player player = e.getPlayer(); if (!player.isSneaking()) return; if (!plugin.isEditTool(player.getInventory().getItem(e.getPreviousSlot()))) return; @@ -360,7 +394,7 @@ void onScrollNCrouch( PlayerItemHeldEvent e) { } @EventHandler(priority = EventPriority.LOWEST) - void onPlayerMenuSelect( InventoryClickEvent e) { + void onPlayerMenuSelect(InventoryClickEvent e) { if (e.getInventory().getHolder() == null) return; if (!(e.getInventory().getHolder() instanceof ASEHolder)) return; if (e.getInventory().getHolder() == menuHolder) { @@ -386,7 +420,7 @@ void onPlayerMenuSelect( InventoryClickEvent e) { } @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true) - void onPlayerMenuClose( InventoryCloseEvent e) { + void onPlayerMenuClose(InventoryCloseEvent e) { if (e.getInventory().getHolder() == null) return; if (!(e.getInventory().getHolder() instanceof ASEHolder)) return; if (e.getInventory().getHolder() == equipmentHolder) { @@ -396,21 +430,21 @@ void onPlayerMenuClose( InventoryCloseEvent e) { } @EventHandler(priority = EventPriority.MONITOR) - void onPlayerLogOut( PlayerQuitEvent e) { + void onPlayerLogOut(PlayerQuitEvent e) { removePlayerEditor(e.getPlayer().getUniqueId()); } - public PlayerEditor getPlayerEditor( UUID uuid) { + public PlayerEditor getPlayerEditor(UUID uuid) { return players.containsKey(uuid) ? players.get(uuid) : addPlayerEditor(uuid); } - PlayerEditor addPlayerEditor( UUID uuid) { + PlayerEditor addPlayerEditor(UUID uuid) { PlayerEditor pe = new PlayerEditor(uuid, plugin); players.put(uuid, pe); return pe; } - private void removePlayerEditor( UUID uuid) { + private void removePlayerEditor(UUID uuid) { players.remove(uuid); } @@ -422,14 +456,20 @@ public ASEHolder getEquipmentHolder() { return equipmentHolder; } - long getTime(){ + long getTime() { return counter.ticks; } - class TickCounter implements Runnable{ + class TickCounter implements Runnable { long ticks = 0; //I am optimistic + @Override - public void run() {ticks++;} - public long getTime() {return ticks;} + public void run() { + ticks++; + } + + public long getTime() { + return ticks; + } } } diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/Scheduler.java b/src/main/java/io/github/rypofalem/armorstandeditor/Scheduler.java index 1066726c..1dad84d8 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/Scheduler.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/Scheduler.java @@ -50,7 +50,8 @@ private static boolean methodExist(Class clazz, String methodName, Class.. try { clazz.getDeclaredMethod(methodName, parameterTypes); return true; - } catch (Throwable ignored) {} + } catch (Throwable ignored) { + } return false; } @@ -79,7 +80,7 @@ public static void runTaskTimer(Plugin plugin, Runnable runnable, long initialDe if (isFolia()) { Object globalRegionScheduler = getGlobalRegionScheduler(); callMethod(globalRegionScheduler, "runAtFixedRate", new Class[]{Plugin.class, Consumer.class, long.class, long.class}, - plugin, (Consumer) (task) -> runnable.run(), initialDelayTicks, periodTicks); + plugin, (Consumer) (task) -> runnable.run(), initialDelayTicks, periodTicks); return; } Bukkit.getScheduler().runTaskTimerAsynchronously(plugin, runnable, initialDelayTicks, periodTicks); @@ -89,7 +90,7 @@ public static void runTaskLater(Plugin plugin, Runnable runnable, long delayedTi if (isFolia()) { Object globalRegionScheduler = getGlobalRegionScheduler(); callMethod(globalRegionScheduler, "runDelayed", new Class[]{Plugin.class, Consumer.class, long.class}, - plugin, (Consumer) (task) -> runnable.run(), delayedTicks); + plugin, (Consumer) (task) -> runnable.run(), delayedTicks); return; } Bukkit.getScheduler().runTaskLater(plugin, runnable, delayedTicks); diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/Util.java b/src/main/java/io/github/rypofalem/armorstandeditor/Util.java index 1b9a4550..3c77e847 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/Util.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/Util.java @@ -21,20 +21,20 @@ public abstract class Util { - public static final double FULL_CIRCLE = Math.PI*2; + public static final double FULL_CIRCLE = Math.PI * 2; - public static > String getEnumList(Class enumType){ + public static > String getEnumList(Class enumType) { return getEnumList(enumType, " | "); } - public static > String getEnumList(Class enumType, String delimiter){ + public static > String getEnumList(Class enumType, String delimiter) { StringBuilder list = new StringBuilder(); - boolean put =false; - for(Enum e : enumType.getEnumConstants()){ + boolean put = false; + for (Enum e : enumType.getEnumConstants()) { list.append(e.toString()).append(delimiter); put = true; } - if(put) list = new StringBuilder(list.substring(0, list.length() - delimiter.length())); + if (put) list = new StringBuilder(list.substring(0, list.length() - delimiter.length())); return list.toString(); } @@ -44,23 +44,23 @@ public static double addAngle(double current, double angleChange) { return current; } - public static double subAngle(double current, double angleChange){ + public static double subAngle(double current, double angleChange) { current -= angleChange; current = fixAngle(current, angleChange); return current; } //clamps angle to 0 if it exceeds 2PI rad (360 degrees), is closer to 0 than angleChange value, or is closer to 2PI rad than 2PI rad - angleChange value. - private static double fixAngle(double angle, double angleChange){ - if(angle > FULL_CIRCLE){ + private static double fixAngle(double angle, double angleChange) { + if (angle > FULL_CIRCLE) { return 0; } - if(angle > 0 && angle < angleChange && angle < angleChange/2){ + if (angle > 0 && angle < angleChange && angle < angleChange / 2) { return 0; } - if(angle > FULL_CIRCLE -angle && angle > FULL_CIRCLE - (angleChange/2)){ + if (angle > FULL_CIRCLE - angle && angle > FULL_CIRCLE - (angleChange / 2)) { return 0; } diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/api/ArmorStandEvent.java b/src/main/java/io/github/rypofalem/armorstandeditor/api/ArmorStandEvent.java index 4de03817..e82445c1 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/api/ArmorStandEvent.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/api/ArmorStandEvent.java @@ -20,16 +20,17 @@ package io.github.rypofalem.armorstandeditor.api; import lombok.Getter; + import org.bukkit.entity.ArmorStand; import org.bukkit.event.Event; -public abstract class ArmorStandEvent extends Event{ +public abstract class ArmorStandEvent extends Event { - @Getter - protected final ArmorStand armorStand; + @Getter + protected final ArmorStand armorStand; - public ArmorStandEvent(ArmorStand armorStand) { - this.armorStand = armorStand; - } + public ArmorStandEvent(ArmorStand armorStand) { + this.armorStand = armorStand; + } } \ No newline at end of file diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/api/ArmorStandManipulatedEvent.java b/src/main/java/io/github/rypofalem/armorstandeditor/api/ArmorStandManipulatedEvent.java index 8f7ae220..9df80d7a 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/api/ArmorStandManipulatedEvent.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/api/ArmorStandManipulatedEvent.java @@ -20,6 +20,7 @@ import lombok.Getter; import lombok.Setter; + import org.bukkit.entity.ArmorStand; import org.bukkit.entity.Player; import org.bukkit.event.Cancellable; @@ -27,19 +28,27 @@ public class ArmorStandManipulatedEvent extends ArmorStandEvent implements Cancellable { - @Getter @Setter - private boolean cancelled = false; + @Getter + @Setter + private boolean cancelled = false; + + @Getter + protected final Player player; + + public ArmorStandManipulatedEvent(ArmorStand armorStand, Player player) { + super(armorStand); + this.player = player; + } - @Getter - protected final Player player; + /* Generated for Bukkit */ + private static final HandlerList handlers = new HandlerList(); - public ArmorStandManipulatedEvent(ArmorStand armorStand, Player player) { - super(armorStand); - this.player = player; - } + public static HandlerList getHandlerList() { + return (handlers); + } - /* Generated for Bukkit */ - private static final HandlerList handlers = new HandlerList(); - public static HandlerList getHandlerList() { return (handlers); } - @Override public HandlerList getHandlers() { return (handlers); } + @Override + public HandlerList getHandlers() { + return (handlers); + } } diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/api/ArmorStandRenameEvent.java b/src/main/java/io/github/rypofalem/armorstandeditor/api/ArmorStandRenameEvent.java index 07a62dbf..5b243872 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/api/ArmorStandRenameEvent.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/api/ArmorStandRenameEvent.java @@ -20,6 +20,7 @@ import lombok.Getter; import lombok.Setter; + import org.bukkit.entity.ArmorStand; import org.bukkit.entity.Player; import org.bukkit.event.Cancellable; @@ -27,23 +28,32 @@ public class ArmorStandRenameEvent extends ArmorStandEvent implements Cancellable { - @Getter @Setter - private boolean cancelled = false; - @Getter @Setter - protected String name; + @Getter + @Setter + private boolean cancelled = false; + @Getter + @Setter + protected String name; + + @Getter + protected final Player player; + + public ArmorStandRenameEvent(ArmorStand armorStand, Player player, String name) { + super(armorStand); + this.player = player; + this.name = name; + } - @Getter - protected final Player player; + /* Generated for Bukkit */ + private static final HandlerList handlers = new HandlerList(); - public ArmorStandRenameEvent(ArmorStand armorStand, Player player, String name) { - super(armorStand); - this.player = player; - this.name = name; - } + public static HandlerList getHandlerList() { + return (handlers); + } - /* Generated for Bukkit */ - private static final HandlerList handlers = new HandlerList(); - public static HandlerList getHandlerList() { return (handlers); } - @Override public HandlerList getHandlers() { return (handlers); } + @Override + public HandlerList getHandlers() { + return (handlers); + } } diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/api/ArmorStandTargetedEvent.java b/src/main/java/io/github/rypofalem/armorstandeditor/api/ArmorStandTargetedEvent.java index 696b7ff9..196a039e 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/api/ArmorStandTargetedEvent.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/api/ArmorStandTargetedEvent.java @@ -21,25 +21,34 @@ import lombok.Getter; import lombok.Setter; + import org.bukkit.entity.ArmorStand; import org.bukkit.entity.Player; import org.bukkit.event.Cancellable; import org.bukkit.event.HandlerList; public class ArmorStandTargetedEvent extends ArmorStandEvent implements Cancellable { - @Getter @Setter - private boolean cancelled = false; + @Getter + @Setter + private boolean cancelled = false; + + @Getter + protected final Player player; + + public ArmorStandTargetedEvent(ArmorStand armorStand, Player player) { + super(armorStand); + this.player = player; + } - @Getter - protected final Player player; + /* Generated for Bukkit */ + private static final HandlerList handlers = new HandlerList(); - public ArmorStandTargetedEvent(ArmorStand armorStand, Player player) { - super(armorStand); - this.player = player; - } + public static HandlerList getHandlerList() { + return (handlers); + } - /* Generated for Bukkit */ - private static final HandlerList handlers = new HandlerList(); - public static HandlerList getHandlerList() { return (handlers); } - @Override public HandlerList getHandlers() { return (handlers); } + @Override + public HandlerList getHandlers() { + return (handlers); + } } \ No newline at end of file diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/api/ItemFrameEvent.java b/src/main/java/io/github/rypofalem/armorstandeditor/api/ItemFrameEvent.java index ec93be97..d6358613 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/api/ItemFrameEvent.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/api/ItemFrameEvent.java @@ -20,16 +20,17 @@ package io.github.rypofalem.armorstandeditor.api; import lombok.Getter; + import org.bukkit.entity.ItemFrame; import org.bukkit.event.Event; -public abstract class ItemFrameEvent extends Event{ +public abstract class ItemFrameEvent extends Event { - @Getter - protected final ItemFrame itemFrame; + @Getter + protected final ItemFrame itemFrame; - public ItemFrameEvent(ItemFrame itemFrame) { - this.itemFrame = itemFrame; - } + public ItemFrameEvent(ItemFrame itemFrame) { + this.itemFrame = itemFrame; + } } \ No newline at end of file diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/api/ItemFrameGlowEvent.java b/src/main/java/io/github/rypofalem/armorstandeditor/api/ItemFrameGlowEvent.java index 1d0b662e..7f5cdc97 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/api/ItemFrameGlowEvent.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/api/ItemFrameGlowEvent.java @@ -2,25 +2,34 @@ import lombok.Getter; import lombok.Setter; + import org.bukkit.entity.ItemFrame; import org.bukkit.entity.Player; import org.bukkit.event.Cancellable; import org.bukkit.event.HandlerList; public class ItemFrameGlowEvent extends ItemFrameEvent implements Cancellable { - @Getter @Setter - private boolean cancelled = false; + @Getter + @Setter + private boolean cancelled = false; + + @Getter + protected final Player player; + + public ItemFrameGlowEvent(ItemFrame itemFrame, Player player) { + super(itemFrame); + this.player = player; + } - @Getter - protected final Player player; + /* Generated for Bukkit */ + private static final HandlerList handlers = new HandlerList(); - public ItemFrameGlowEvent(ItemFrame itemFrame, Player player) { - super(itemFrame); - this.player = player; - } + public static HandlerList getHandlerList() { + return (handlers); + } - /* Generated for Bukkit */ - private static final HandlerList handlers = new HandlerList(); - public static HandlerList getHandlerList() { return (handlers); } - @Override public HandlerList getHandlers() { return (handlers); } + @Override + public HandlerList getHandlers() { + return (handlers); + } } \ No newline at end of file diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/api/ItemFrameManipulatedEvent.java b/src/main/java/io/github/rypofalem/armorstandeditor/api/ItemFrameManipulatedEvent.java index 6e190c92..9c80c077 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/api/ItemFrameManipulatedEvent.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/api/ItemFrameManipulatedEvent.java @@ -20,6 +20,7 @@ import lombok.Getter; import lombok.Setter; + import org.bukkit.entity.ItemFrame; import org.bukkit.entity.Player; import org.bukkit.event.Cancellable; @@ -27,20 +28,28 @@ public class ItemFrameManipulatedEvent extends ItemFrameEvent implements Cancellable { - @Getter @Setter - private boolean cancelled = false; + @Getter + @Setter + private boolean cancelled = false; + + @Getter + protected final Player player; + + public ItemFrameManipulatedEvent(ItemFrame itemFrame, Player player) { + super(itemFrame); + this.player = player; + } - @Getter - protected final Player player; + /* Generated for Bukkit */ + private static final HandlerList handlers = new HandlerList(); - public ItemFrameManipulatedEvent(ItemFrame itemFrame, Player player) { - super(itemFrame); - this.player = player; - } + public static HandlerList getHandlerList() { + return (handlers); + } - /* Generated for Bukkit */ - private static final HandlerList handlers = new HandlerList(); - public static HandlerList getHandlerList() { return (handlers); } - @Override public HandlerList getHandlers() { return (handlers); } + @Override + public HandlerList getHandlers() { + return (handlers); + } } diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/api/ItemFrameTargetedEvent.java b/src/main/java/io/github/rypofalem/armorstandeditor/api/ItemFrameTargetedEvent.java index 9b1f8bfe..1c9c162c 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/api/ItemFrameTargetedEvent.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/api/ItemFrameTargetedEvent.java @@ -21,25 +21,34 @@ import lombok.Getter; import lombok.Setter; + import org.bukkit.entity.ItemFrame; import org.bukkit.entity.Player; import org.bukkit.event.Cancellable; import org.bukkit.event.HandlerList; public class ItemFrameTargetedEvent extends ItemFrameEvent implements Cancellable { - @Getter @Setter - private boolean cancelled = false; + @Getter + @Setter + private boolean cancelled = false; + + @Getter + protected final Player player; + + public ItemFrameTargetedEvent(ItemFrame itemFrame, Player player) { + super(itemFrame); + this.player = player; + } - @Getter - protected final Player player; + /* Generated for Bukkit */ + private static final HandlerList handlers = new HandlerList(); - public ItemFrameTargetedEvent(ItemFrame itemFrame, Player player) { - super(itemFrame); - this.player = player; - } + public static HandlerList getHandlerList() { + return (handlers); + } - /* Generated for Bukkit */ - private static final HandlerList handlers = new HandlerList(); - public static HandlerList getHandlerList() { return (handlers); } - @Override public HandlerList getHandlers() { return (handlers); } + @Override + public HandlerList getHandlers() { + return (handlers); + } } diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/api/PlayerOpenMenuEvent.java b/src/main/java/io/github/rypofalem/armorstandeditor/api/PlayerOpenMenuEvent.java index 865233a2..908b6693 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/api/PlayerOpenMenuEvent.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/api/PlayerOpenMenuEvent.java @@ -20,25 +20,33 @@ import lombok.Getter; import lombok.Setter; + import org.bukkit.entity.Player; import org.bukkit.event.Cancellable; import org.bukkit.event.Event; import org.bukkit.event.HandlerList; public class PlayerOpenMenuEvent extends Event implements Cancellable { - @Getter - @Setter - private boolean cancelled = false; + @Getter + @Setter + private boolean cancelled = false; + + @Getter + protected final Player player; + + public PlayerOpenMenuEvent(Player player) { + this.player = player; + } - @Getter - protected final Player player; + /* Generated for Bukkit */ + private static final HandlerList handlers = new HandlerList(); - public PlayerOpenMenuEvent(Player player) { - this.player = player; - } + public static HandlerList getHandlerList() { + return (handlers); + } - /* Generated for Bukkit */ - private static final HandlerList handlers = new HandlerList(); - public static HandlerList getHandlerList() { return (handlers); } - @Override public HandlerList getHandlers() { return (handlers); } + @Override + public HandlerList getHandlers() { + return (handlers); + } } \ No newline at end of file diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/language/Language.java b/src/main/java/io/github/rypofalem/armorstandeditor/language/Language.java index ea579ca7..16b6e783 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/language/Language.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/language/Language.java @@ -21,15 +21,11 @@ package io.github.rypofalem.armorstandeditor.language; import io.github.rypofalem.armorstandeditor.ArmorStandEditorPlugin; + import org.bukkit.ChatColor; import org.bukkit.configuration.file.YamlConfiguration; -import java.io.File; -import java.io.FileInputStream; -import java.io.FileNotFoundException; -import java.io.InputStream; -import java.io.InputStreamReader; -import java.io.Reader; +import java.io.*; import java.nio.charset.StandardCharsets; public class Language { @@ -93,14 +89,14 @@ public String getMessage(String path) { return getMessage(path, "info"); } - public String getRawMessage(String path, String format, String option){ + public String getRawMessage(String path, String format, String option) { String message = ChatColor.stripColor(getMessage(path, format, option)); format = getFormat(format); ChatColor color = ChatColor.WHITE; String bold = "" , italic = "" , underlined = "" , obfuscated = "" , strikethrough = ""; - for(int i = 0; i < format.length(); i++){ + for (int i = 0; i < format.length(); i++) { ChatColor code = ChatColor.getByChar(format.charAt(i)); - switch(code) { + switch (code) { case MAGIC: obfuscated = ", \"obfuscated\": true"; break; @@ -119,11 +115,11 @@ public String getRawMessage(String path, String format, String option){ default: color = !code.isColor() ? color : code; } } - return String.format("{\"text\":\"%s\", \"color\":\"%s\"%s%s%s%s%s}", message, color.name().toLowerCase(), + return "{\"text\":\"%s\", \"color\":\"%s\"%s%s%s%s%s}".formatted(message, color.name().toLowerCase(), obfuscated, bold, strikethrough, underlined, italic); } - private String getFormat(String format){ + private String getFormat(String format) { format = getString(format); return format == null ? "" : format; } diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/menu/ASEHolder.java b/src/main/java/io/github/rypofalem/armorstandeditor/menu/ASEHolder.java index f3fe45f0..c5d341cd 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/menu/ASEHolder.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/menu/ASEHolder.java @@ -25,9 +25,9 @@ public class ASEHolder implements InventoryHolder { - @Override - public Inventory getInventory() { - return null; - } + @Override + public Inventory getInventory() { + return null; + } } diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/menu/EquipmentMenu.java b/src/main/java/io/github/rypofalem/armorstandeditor/menu/EquipmentMenu.java index d1eb2f6e..81aa44e7 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/menu/EquipmentMenu.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/menu/EquipmentMenu.java @@ -20,6 +20,7 @@ package io.github.rypofalem.armorstandeditor.menu; import io.github.rypofalem.armorstandeditor.PlayerEditor; + import org.bukkit.Bukkit; import org.bukkit.Material; import org.bukkit.entity.ArmorStand; @@ -39,14 +40,14 @@ public class EquipmentMenu { static String name = "ArmorStand Equipment"; ItemStack helmet, chest, pants, feetsies, rightHand, leftHand; - public EquipmentMenu(PlayerEditor pe, ArmorStand as){ + public EquipmentMenu(PlayerEditor pe, ArmorStand as) { this.pe = pe; this.armorstand = as; name = pe.plugin.getLang().getMessage("equiptitle", "menutitle"); menuInv = Bukkit.createInventory(pe.getManager().getEquipmentHolder(), 18, name); } - private void fillInventory(){ + private void fillInventory() { menuInv.clear(); EntityEquipment equipment = armorstand.getEquipment(); assert equipment != null; @@ -71,13 +72,13 @@ private void fillInventory(){ ItemStack rightHandIcon = createIcon(Material.WOODEN_SWORD, "rhand"); ItemStack leftHandIcon = createIcon(Material.SHIELD, "lhand"); ItemStack[] items = - { helmetIcon, chestIcon, pantsIcon, feetsiesIcon, rightHandIcon, leftHandIcon, disabledIcon, disabledIcon, disabledIcon, - helmet, chest, pants, feetsies, rightHand, leftHand, disabledIcon, disabledIcon, disabledIcon - }; + {helmetIcon, chestIcon, pantsIcon, feetsiesIcon, rightHandIcon, leftHandIcon, disabledIcon, disabledIcon, disabledIcon, + helmet, chest, pants, feetsies, rightHand, leftHand, disabledIcon, disabledIcon, disabledIcon + }; menuInv.setContents(items); } - private ItemStack createIcon(Material mat, String slot){ + private ItemStack createIcon(Material mat, String slot) { ItemStack icon = new ItemStack(mat); ItemMeta meta = icon.getItemMeta(); meta.getPersistentDataContainer().set(pe.plugin.getIconKey(), PersistentDataType.STRING, "ase icon"); @@ -91,12 +92,12 @@ private ItemStack createIcon(Material mat, String slot){ return icon; } - public void open(){ + public void open() { fillInventory(); pe.getPlayer().openInventory(menuInv); } - public void equipArmorstand(){ + public void equipArmorstand() { helmet = menuInv.getItem(9); chest = menuInv.getItem(10); pants = menuInv.getItem(11); @@ -111,7 +112,7 @@ public void equipArmorstand(){ armorstand.getEquipment().setItemInOffHand(leftHand); } - public static String getName(){ + public static String getName() { return name; } } diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/menu/Menu.java b/src/main/java/io/github/rypofalem/armorstandeditor/menu/Menu.java index bd6edf94..38e2e4c1 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/menu/Menu.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/menu/Menu.java @@ -21,6 +21,7 @@ import io.github.rypofalem.armorstandeditor.ArmorStandEditorPlugin; import io.github.rypofalem.armorstandeditor.PlayerEditor; + import org.bukkit.Bukkit; import org.bukkit.Material; import org.bukkit.inventory.Inventory; @@ -65,6 +66,7 @@ private void fillInventory() { ItemStack visibility; ItemStack size = null; ItemStack rightLegPos; + ItemStack glowing; ItemStack leftLegPos; ItemStack plate = null; ItemStack copy = null; @@ -75,6 +77,7 @@ private void fillInventory() { ItemStack slot4 = null; ItemStack help; ItemStack itemFrameVisible; + ItemStack blankSlot; //Variables that need to be Initialized ItemStack place = null; @@ -84,53 +87,62 @@ private void fillInventory() { ItemStack playerHead = null; ItemStack toggleVulnerabilty = null; - xAxis = createIcon(new ItemStack(Material.RED_WOOL, 1), - "xaxis", "axis x"); + //Slots with No Value + blankSlot = createIcon(new ItemStack(Material.BLACK_STAINED_GLASS_PANE, 1), + "blankslot", ""); + + //Axis - X, Y, Z for Movement + xAxis = createIcon(new ItemStack(Material.RED_CONCRETE, 1), + "xaxis", "axis x"); - yAxis = createIcon(new ItemStack(Material.GREEN_WOOL, 1), - "yaxis", "axis y"); + yAxis = createIcon(new ItemStack(Material.GREEN_CONCRETE, 1), + "yaxis", "axis y"); - zAxis = createIcon(new ItemStack(Material.BLUE_WOOL, 1), - "zaxis", "axis z"); + zAxis = createIcon(new ItemStack(Material.BLUE_CONCRETE, 1), + "zaxis", "axis z"); - coarseAdj = createIcon(new ItemStack(Material.DIRT, 1), - "coarseadj", "adj coarse"); + //Movement Speed + coarseAdj = createIcon(new ItemStack(Material.COARSE_DIRT, 1), + "coarseadj", "adj coarse"); - fineAdj = createIcon(new ItemStack(Material.SANDSTONE), - "fineadj", "adj fine"); + fineAdj = createIcon(new ItemStack(Material.SMOOTH_SANDSTONE), + "fineadj", "adj fine"); - reset = createIcon(new ItemStack(Material.LEVER), - "reset", "mode reset"); + //Reset Changes + reset = createIcon(new ItemStack(Material.WATER_BUCKET), + "reset", "mode reset"); - headPos = createIcon(new ItemStack(Material.LEATHER_HELMET), - "head", "mode head"); + //Which Part to Move + headPos = createIcon(new ItemStack(Material.IRON_HELMET), + "head", "mode head"); - bodyPos = createIcon(new ItemStack(Material.LEATHER_CHESTPLATE), - "body", "mode body"); + bodyPos = createIcon(new ItemStack(Material.IRON_CHESTPLATE), + "body", "mode body"); - leftLegPos = createIcon(new ItemStack(Material.LEATHER_LEGGINGS), - "leftleg", "mode leftleg"); + leftLegPos = createIcon(new ItemStack(Material.IRON_LEGGINGS), + "leftleg", "mode leftleg"); - rightLegPos = createIcon(new ItemStack(Material.LEATHER_LEGGINGS), - "rightleg", "mode rightleg"); + rightLegPos = createIcon(new ItemStack(Material.IRON_LEGGINGS), + "rightleg", "mode rightleg"); leftArmPos = createIcon(new ItemStack(Material.STICK), - "leftarm", "mode leftarm"); + "leftarm", "mode leftarm"); rightArmPos = createIcon(new ItemStack(Material.STICK), - "rightarm", "mode rightarm"); + "rightarm", "mode rightarm"); showArms = createIcon(new ItemStack(Material.STICK), - "showarms", "mode showarms"); + "showarms", "mode showarms"); //Praise Start - Sikatsu and cowgod, Nicely spotted this being broken if (pe.getPlayer().hasPermission("asedit.togglearmorstandvisibility") || - pe.plugin.getArmorStandVisibility()) { + pe.plugin.getArmorStandVisibility()) { visibility = new ItemStack(Material.POTION, 1); PotionMeta potionMeta = (PotionMeta) visibility.getItemMeta(); - PotionEffect eff1 = new PotionEffect(PotionEffectType.INVISIBILITY, 1, 0); - assert potionMeta != null; - potionMeta.addCustomEffect(eff1, true); + PotionEffect effect = new PotionEffect(PotionEffectType.INVISIBILITY, 1, 0); + if (potionMeta != null) { + potionMeta.addCustomEffect(effect, true); + } visibility.setItemMeta(potionMeta); createIcon(visibility, "invisible", "mode invisible"); } else { @@ -138,7 +150,7 @@ private void fillInventory() { } if (pe.getPlayer().hasPermission("asedit.toggleitemframevisibility") || - pe.plugin.getItemFrameVisibility()) { + pe.plugin.getItemFrameVisibility()) { itemFrameVisible = new ItemStack(Material.ITEM_FRAME, 1); createIcon(itemFrameVisible, "itemframevisible", "mode itemframe"); } else { @@ -148,13 +160,13 @@ private void fillInventory() { //Praise end if (pe.getPlayer().hasPermission("asedit.toggleInvulnerability")) { - toggleVulnerabilty = createIcon(new ItemStack(Material.BEDROCK, 1), - "vulnerability", "mode vulnerability"); + toggleVulnerabilty = createIcon(new ItemStack(Material.TOTEM_OF_UNDYING, 1), + "vulnerability", "mode vulnerability"); } if (pe.getPlayer().hasPermission("asedit.togglesize")) { size = createIcon(new ItemStack(Material.PUFFERFISH, 1), - "size", "mode size"); + "size", "mode size"); } if (pe.getPlayer().hasPermission("asedit.disableslots")) { disableSlots = createIcon(new ItemStack(Material.BARRIER), "disableslots", "mode disableslots"); @@ -165,64 +177,75 @@ private void fillInventory() { } if (pe.getPlayer().hasPermission("asedit.togglebaseplate")) { - plate = createIcon(new ItemStack(Material.STONE_SLAB, 1), - "baseplate", "mode baseplate"); + plate = createIcon(new ItemStack(Material.SMOOTH_STONE_SLAB, 1), + "baseplate", "mode baseplate"); } if (pe.getPlayer().hasPermission("asedit.movement")) { - place = createIcon(new ItemStack(Material.MINECART, 1), - "placement", "mode placement"); + place = createIcon(new ItemStack(Material.RAIL, 1), + "placement", "mode placement"); } if (pe.getPlayer().hasPermission("asedit.rotation")) { rotate = createIcon(new ItemStack(Material.COMPASS, 1), - "rotate", "mode rotate"); + "rotate", "mode rotate"); } if (pe.getPlayer().hasPermission("asedit.equipment")) { equipment = createIcon(new ItemStack(Material.CHEST, 1), - "equipment", "mode equipment"); + "equipment", "mode equipment"); } if (pe.getPlayer().hasPermission("asedit.copy")) { - copy = createIcon(new ItemStack(Material.WRITABLE_BOOK), - "copy", "mode copy"); + copy = createIcon(new ItemStack(Material.FLOWER_BANNER_PATTERN), + "copy", "mode copy"); - slot1 = createIcon(new ItemStack(Material.DANDELION), - "copyslot", "slot 1", "1"); + slot1 = createIcon(new ItemStack(Material.BOOK), + "copyslot", "slot 1", "1"); - slot2 = createIcon(new ItemStack(Material.AZURE_BLUET, 2), - "copyslot", "slot 2", "2"); + slot2 = createIcon(new ItemStack(Material.BOOK, 2), + "copyslot", "slot 2", "2"); - slot3 = createIcon(new ItemStack(Material.BLUE_ORCHID, 3), - "copyslot", "slot 3", "3"); + slot3 = createIcon(new ItemStack(Material.BOOK, 3), + "copyslot", "slot 3", "3"); - slot4 = createIcon(new ItemStack(Material.PEONY, 4), - "copyslot", "slot 4", "4"); + slot4 = createIcon(new ItemStack(Material.BOOK, 4), + "copyslot", "slot 4", "4"); } - if (pe.getPlayer().hasPermission("asedit.paste")){ - paste = createIcon(new ItemStack(Material.ENCHANTED_BOOK), - "paste", "mode paste"); + if (pe.getPlayer().hasPermission("asedit.paste")) { + paste = createIcon(new ItemStack(Material.FEATHER), + "paste", "mode paste"); } - if(pe.getPlayer().hasPermission("asedit.head") && pe.plugin.getAllowedToRetrievePlayerHead()){ + if (pe.getPlayer().hasPermission("asedit.head") && pe.plugin.getAllowedToRetrievePlayerHead()) { playerHead = createIcon(new ItemStack(Material.PLAYER_HEAD, 1), - "playerheadmenu", - "playerhead"); + "playerheadmenu", + "playerhead"); + } else{ + playerHead = blankSlot; + } + + if (pe.getPlayer().hasPermission("asedit.togglearmorstandglow")){ + glowing = createIcon(new ItemStack(Material.GLOW_INK_SAC, 1), + "armorstandglow", + "mode armorstandglow"); + } else{ + glowing = blankSlot; } help = createIcon(new ItemStack(Material.NETHER_STAR), "helpgui", "help"); - ItemStack[] items = - { - xAxis, yAxis, zAxis, null, coarseAdj, fineAdj, null, rotate, place, - null, headPos, playerHead, null, null, null, null, null, null, - rightArmPos, bodyPos, leftArmPos, reset, null, null, showArms, visibility, size, - rightLegPos, equipment, leftLegPos, null, null, toggleVulnerabilty, disableSlots, gravity, plate, - null, copy, paste, null, null, null, null, itemFrameVisible, null, - slot1, slot2, slot3, slot4, null, null, null, null, help - }; + + ItemStack[] items = { + blankSlot, blankSlot, blankSlot, xAxis, yAxis, zAxis, blankSlot, blankSlot, help, + copy, paste, blankSlot, playerHead, headPos, reset, blankSlot, itemFrameVisible, blankSlot, + slot1, slot2, blankSlot, rightArmPos, bodyPos, leftArmPos, blankSlot, rotate, place, + slot3, slot4, blankSlot, rightLegPos, equipment, leftLegPos, blankSlot, coarseAdj, fineAdj, + blankSlot, glowing, blankSlot, blankSlot, blankSlot, blankSlot, blankSlot, blankSlot, blankSlot, + blankSlot, showArms, visibility, size, gravity, plate, toggleVulnerabilty, disableSlots, blankSlot + }; + menuInv.setContents(items); } diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/modes/AdjustmentMode.java b/src/main/java/io/github/rypofalem/armorstandeditor/modes/AdjustmentMode.java index 631af300..0e0f1386 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/modes/AdjustmentMode.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/modes/AdjustmentMode.java @@ -24,11 +24,11 @@ public enum AdjustmentMode { private String name; - AdjustmentMode(String name){ + AdjustmentMode(String name) { this.name = name; } - public String toString(){ + public String toString() { return name; } } diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/modes/ArmorStandData.java b/src/main/java/io/github/rypofalem/armorstandeditor/modes/ArmorStandData.java index 70c190f0..7f906422 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/modes/ArmorStandData.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/modes/ArmorStandData.java @@ -28,7 +28,7 @@ public class ArmorStandData { public boolean visible, size, basePlate, gravity, showArms; public ItemStack head, body, legs, feetsies, rightHand, leftHand; - ArmorStandData(ArmorStand as){ + ArmorStandData(ArmorStand as) { this.headPos = as.getHeadPose(); this.leftArmPos = as.getLeftArmPose(); this.rightArmPos = as.getRightArmPose(); diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/modes/Axis.java b/src/main/java/io/github/rypofalem/armorstandeditor/modes/Axis.java index 178335ef..afa6c45c 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/modes/Axis.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/modes/Axis.java @@ -24,11 +24,11 @@ public enum Axis { String name; - Axis(String name){ + Axis(String name) { this.name = name; } - public String toString(){ + public String toString() { return name; } } diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/modes/CopySlots.java b/src/main/java/io/github/rypofalem/armorstandeditor/modes/CopySlots.java index ace6efd4..3e826ade 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/modes/CopySlots.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/modes/CopySlots.java @@ -23,24 +23,24 @@ public class CopySlots { ArmorStandData[] slots = new ArmorStandData[9]; - public byte currentSlot =0; + public byte currentSlot = 0; //returns true if parameters are acceptable, false otherwise. - public boolean changeSlots(byte slot){ - if(slot < slots.length && slot>=0){ + public boolean changeSlots(byte slot) { + if (slot < slots.length && slot >= 0) { currentSlot = slot; return true; - }else{ + } else { return false; } } - public void copyDataToSlot(ArmorStand armorStand){ + public void copyDataToSlot(ArmorStand armorStand) { slots[currentSlot] = new ArmorStandData(armorStand); } //returns null if there is not data in current slot - public ArmorStandData getDataToPaste(){ + public ArmorStandData getDataToPaste() { return slots[currentSlot]; } } diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/modes/EditMode.java b/src/main/java/io/github/rypofalem/armorstandeditor/modes/EditMode.java index eda5095c..00f3488c 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/modes/EditMode.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/modes/EditMode.java @@ -23,15 +23,15 @@ public enum EditMode { NONE("None"), INVISIBLE("Invisible"), SHOWARMS("ShowArms"), GRAVITY("Gravity"), BASEPLATE("BasePlate"), SIZE("Size"), COPY("Copy"), PASTE("Paste"), HEAD("Head"), BODY("Body"), LEFTARM("LeftArm"), RIGHTARM("RightArm"), LEFTLEG("LeftLeg"), RIGHTLEG("RightLeg"), PLACEMENT("Placement"), DISABLESLOTS("DisableSlots"), ROTATE("Rotate"), EQUIPMENT("Equipment"), RESET("Reset"), ITEMFRAME("ItemFrame"), ITEMFRAMEGLOW("ItemFrameGlow"), - VULNERABILITY("Vulnerability"), PLAYERHEAD("playerheadmenu"); + VULNERABILITY("Vulnerability"), PLAYERHEAD("playerheadmenu"), GLOWING("armorstandglow"); private String name; - EditMode(String name){ + EditMode(String name) { this.name = name; } - public String toString(){ + public String toString() { return name; } } diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/protections/BentoBoxProtection.java b/src/main/java/io/github/rypofalem/armorstandeditor/protections/BentoBoxProtection.java index 1a434f75..1c78b52b 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/protections/BentoBoxProtection.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/protections/BentoBoxProtection.java @@ -19,9 +19,6 @@ package io.github.rypofalem.armorstandeditor.protections; -import org.bukkit.Bukkit; -import org.bukkit.block.Block; -import org.bukkit.entity.Player; import world.bentobox.bentobox.BentoBox; import world.bentobox.bentobox.api.user.User; import world.bentobox.bentobox.database.objects.Island; @@ -29,9 +26,13 @@ import world.bentobox.bentobox.managers.AddonsManager; import world.bentobox.bentobox.managers.IslandsManager; +import org.bukkit.Bukkit; +import org.bukkit.block.Block; +import org.bukkit.entity.Player; + import java.util.Optional; -public class BentoBoxProtection implements Protection { +public class BentoBoxProtection implements Protection { private final boolean bentoEnabled; @@ -42,29 +43,29 @@ public BentoBoxProtection() { @Override public boolean checkPermission(Block block, Player player) { - if(!bentoEnabled || player.isOp() || - player.hasPermission("asedit.ignoreProtection.bentobox") || - player.hasPermission("bentobox.admin")) return true; + if (!bentoEnabled || player.isOp() || + player.hasPermission("asedit.ignoreProtection.bentobox") || + player.hasPermission("bentobox.admin")) return true; //Get the Bento Instance BentoBox myBento = BentoBox.getInstance(); - if( myBento == null ) return true; + if (myBento == null) return true; //Get the Various Managers for Bentobox IslandsManager islandsManager = myBento.getIslandsManager(); AddonsManager addonsManager = myBento.getAddonsManager(); //Check first if BSkyblock is enabled or if the Player is Owner of that Island - if(!addonsManager.getAddonByName("BSkyblock").isPresent()) return true; + if (addonsManager.getAddonByName("BSkyblock").isEmpty()) return true; //Get the Location of the ArmorStand Optional islandOptional = islandsManager.getIslandAt(block.getLocation()); //If there are no Islands Present - if(!islandOptional.isPresent()) return true; + if (islandOptional.isEmpty()) return true; //Do not run this check if the player is the owner of the island - if(islandsManager.isOwner(player.getWorld(), player.getUniqueId())) return true; + if (islandsManager.isOwner(player.getWorld(), player.getUniqueId())) return true; //Get the Island from the Island Optional Island theIsland = islandOptional.get(); diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/protections/GriefDefenderProtection.java b/src/main/java/io/github/rypofalem/armorstandeditor/protections/GriefDefenderProtection.java index 0d7dc403..cfc2c179 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/protections/GriefDefenderProtection.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/protections/GriefDefenderProtection.java @@ -30,7 +30,7 @@ import static com.griefdefender.api.claim.TrustTypes.BUILDER; -public class GriefDefenderProtection implements Protection { +public class GriefDefenderProtection implements Protection { private final boolean gdEnabled; diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/protections/GriefPreventionProtection.java b/src/main/java/io/github/rypofalem/armorstandeditor/protections/GriefPreventionProtection.java index 626a0e4e..d9153e00 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/protections/GriefPreventionProtection.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/protections/GriefPreventionProtection.java @@ -21,6 +21,7 @@ import me.ryanhamshire.GriefPrevention.Claim; import me.ryanhamshire.GriefPrevention.GriefPrevention; + import org.bukkit.Bukkit; import org.bukkit.ChatColor; import org.bukkit.Location; @@ -31,37 +32,37 @@ /** @Deprecated * Plugin has gone unsupported for a while - Might be cleaned up later. **/ -public class GriefPreventionProtection implements Protection { +public class GriefPreventionProtection implements Protection { private boolean gpEnabled; private GriefPrevention griefPrevention = null; /** @Deprecated **/ - public GriefPreventionProtection(){ + public GriefPreventionProtection() { gpEnabled = Bukkit.getPluginManager().isPluginEnabled("GriefPrevention"); - if(!gpEnabled) return; + if (!gpEnabled) return; griefPrevention = (GriefPrevention) Bukkit.getPluginManager().getPlugin("GriefPrevention"); } /** @Deprecated **/ - public boolean checkPermission(Block block, Player player){ - if(!gpEnabled) return true; - if(player.hasPermission("asedit.ignoreProtection.griefPrevention")) return true; + public boolean checkPermission(Block block, Player player) { + if (!gpEnabled) return true; + if (player.hasPermission("asedit.ignoreProtection.griefPrevention")) return true; Location blockLoc = block.getLocation(); - if(GriefPrevention.instance.claimsEnabledForWorld(blockLoc.getWorld())){ + if (GriefPrevention.instance.claimsEnabledForWorld(blockLoc.getWorld())) { Claim landClaim = griefPrevention.dataStore.getClaimAt(blockLoc, false, null); Material blockMat = block.getType(); - if(landClaim != null && landClaim.allowEdit(player) != null && landClaim.allowBuild(player,blockMat) != null){ + if (landClaim != null && landClaim.allowEdit(player) != null && landClaim.allowBuild(player, blockMat) != null) { player.sendMessage(ChatColor.RED + landClaim.allowEdit(player)); player.sendMessage(ChatColor.RED + landClaim.allowBuild(player, blockMat)); return false; } - } else{ + } else { return true; } diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/protections/LandsProtection.java b/src/main/java/io/github/rypofalem/armorstandeditor/protections/LandsProtection.java index 56914a19..2d00f3e5 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/protections/LandsProtection.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/protections/LandsProtection.java @@ -18,12 +18,14 @@ */ package io.github.rypofalem.armorstandeditor.protections; -import io.github.rypofalem.armorstandeditor.ArmorStandEditorPlugin; import me.angeschossen.lands.api.LandsIntegration; import me.angeschossen.lands.api.land.Area; import me.angeschossen.lands.api.land.LandWorld; import me.angeschossen.lands.api.player.LandPlayer; import me.angeschossen.lands.api.role.Role; + +import io.github.rypofalem.armorstandeditor.ArmorStandEditorPlugin; + import org.bukkit.Bukkit; import org.bukkit.block.Block; import org.bukkit.entity.Player; @@ -54,44 +56,37 @@ public boolean checkPermission(Block block, Player player) { //Get the world the play is in LandWorld landWorld = landsAPI.getWorld(player.getWorld()); - if(landWorld != null) { + if (landWorld != null) { //Prep to do check for ClaimedArea Area landAreaOfAS = landsAPI.getArea(block.getLocation()); Area landAreaOfPlayer = landsAPI.getArea(player.getLocation()); if (landAreaOfAS != null) { //Block is in a Claimed Area - if(landAreaOfPlayer == landAreaOfAS) { + if (landAreaOfPlayer == landAreaOfAS) { //Get Visitor Role for the Area of the AS Role visitorRole = landAreaOfAS.getVisitorRole(); //If Player is a Visitor - Dont allow Edits - if(landAreaOfAS.getRole(playerUUID) == visitorRole) return false; + if (landAreaOfAS.getRole(playerUUID) == visitorRole) return false; // If Player is Trusted OR Player is Owner of the Area/Claim, Allow Edits - if (landAreaOfAS.isTrusted(playerUUID) || landAreaOfAS.getOwnerUID() == landPlayer.getUID())return true; - - // If in the Claim a Player can: - // break Blocks, - // Place - // Interact with in Claimed Area - // add items to a container - // Allow Edits + if (landAreaOfAS.isTrusted(playerUUID) || landAreaOfAS.getOwnerUID() == landPlayer.getUID()) return true; else if (landAreaOfAS.hasRoleFlag(playerUUID, BLOCK_BREAK) || - landAreaOfAS.hasRoleFlag(playerUUID, BLOCK_PLACE) || - landAreaOfAS.hasRoleFlag(playerUUID, INTERACT_CONTAINER) || - landAreaOfAS.hasRoleFlag(playerUUID, INTERACT_GENERAL)) { + landAreaOfAS.hasRoleFlag(playerUUID, BLOCK_PLACE) || + landAreaOfAS.hasRoleFlag(playerUUID, INTERACT_CONTAINER) || + landAreaOfAS.hasRoleFlag(playerUUID, INTERACT_GENERAL)) { return true; - } else{ // Any other case, dont allow edits + } else { // Any other case, dont allow edits return false; } } else return false; //If the land areas are different } else { //If the AS is in the Wilderness return true; } - }else { //if the ArmorStand is in a world + } else { //if the ArmorStand is in a world return true; } } diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/protections/PlotSquaredProtection.java b/src/main/java/io/github/rypofalem/armorstandeditor/protections/PlotSquaredProtection.java index 3d25ecac..b1f78436 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/protections/PlotSquaredProtection.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/protections/PlotSquaredProtection.java @@ -19,39 +19,63 @@ package io.github.rypofalem.armorstandeditor.protections; import com.plotsquared.bukkit.BukkitPlatform; +import com.plotsquared.core.PlotAPI; +import com.plotsquared.core.location.Location; +import com.plotsquared.core.player.PlotPlayer; import com.plotsquared.core.plot.Plot; import com.plotsquared.core.plot.PlotArea; -import com.plotsquared.core.location.Location; +import com.sk89q.worldedit.math.BlockVector3; import org.bukkit.Bukkit; import org.bukkit.block.Block; import org.bukkit.entity.Player; -public class PlotSquaredProtection implements Protection { +import java.util.UUID; + +public class PlotSquaredProtection implements Protection { private final boolean psEnabled; - private BukkitPlatform psPlatform = null; + private PlotAPI plotAPI; - public PlotSquaredProtection(){ + public PlotSquaredProtection() { psEnabled = Bukkit.getPluginManager().isPluginEnabled("PlotSquared"); if (!psEnabled) return; - psPlatform = (BukkitPlatform) Bukkit.getPluginManager().getPlugin("PlotSquared"); } - public boolean checkPermission(Block block, Player player){ - if(!psEnabled) return true; - if(player.isOp()) return true; - if(player.hasPermission("asedit.ignoreProtection.plotSquared")) return true; + public boolean checkPermission(Block block, Player player) { + if (!psEnabled) return true; + if (player.isOp()) return true; + if (player.hasPermission("asedit.ignoreProtection.plotSquared")) return true; + if (plotAPI == null) plotAPI = new PlotAPI(); + + //Get the Location of the Plot + Location plotLocation = Location.at(player.getWorld().getName(), BlockVector3.at(block.getX(), block.getY(), block.getZ())); + + //Get the Area of the PLot + PlotArea area = plotLocation.getPlotArea(); + + //If the Area is not a Plot, then we assume its a road, we return if a player can build on roads or not + if(area == null) + return player.hasPermission("plots.admin.build.road"); + + //Get the Plot + Plot plot = area.getPlot(plotLocation); + + //Rerun the Area check + if(plot == null) + return player.hasPermission("plots.admin.build.road"); + + //Get the Player + PlotPlayer plotPlayer = plotAPI.wrapPlayer(player.getUniqueId()); + + if(plotPlayer == null) return true; + + //Get the UUID of the PlotPlayer + UUID uuid = plotPlayer.getUUID(); - Location location = Location.at(block.getWorld().getName(), - block.getLocation().getBlockX(), - block.getLocation().getBlockY(), - block.getLocation().getBlockZ()); + //Return if they are added to the plot or if they are OP and have the Permission to build anywhere + return plot.isAdded(uuid) || plotPlayer.hasPermission("plots.admin.build.other"); - PlotArea area = psPlatform.plotAreaManager().getPlotArea(location); - if(area == null) return true; - Plot plot = area.getPlot(location); - return plot == null || plot.isAdded(player.getUniqueId()); } } diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/protections/SkyblockProtection.java b/src/main/java/io/github/rypofalem/armorstandeditor/protections/SkyblockProtection.java index 6d26ec14..30f52eca 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/protections/SkyblockProtection.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/protections/SkyblockProtection.java @@ -21,19 +21,20 @@ import com.bgsoftware.superiorskyblock.api.SuperiorSkyblockAPI; import com.bgsoftware.superiorskyblock.api.island.Island; import com.bgsoftware.superiorskyblock.api.wrappers.SuperiorPlayer; + import org.bukkit.Bukkit; import org.bukkit.block.Block; import org.bukkit.entity.Player; -public class SkyblockProtection implements Protection { +public class SkyblockProtection implements Protection { private final boolean skyblockEnabled; - public SkyblockProtection(){ + public SkyblockProtection() { //NOTE FROM AUTHOR: I know there are many plugins that have Skyblock. I am using SuperiorSkyBlock2 as an Example! //IF YOU WANT YOUR SKYBLOCK ADDED, PLEASE SUBMIT A FEATURE REQUEST! skyblockEnabled = Bukkit.getPluginManager().isPluginEnabled("SuperiorSkyblock2"); - if(!skyblockEnabled) return; + if (!skyblockEnabled) return; } public boolean checkPermission(Block block, Player player) { diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/protections/TownyProtection.java b/src/main/java/io/github/rypofalem/armorstandeditor/protections/TownyProtection.java index 6be3332f..0ad76435 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/protections/TownyProtection.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/protections/TownyProtection.java @@ -28,18 +28,18 @@ import org.bukkit.entity.Player; //FIX for https://github.com/Wolfieheart/ArmorStandEditor-Issues/issues/15 -public class TownyProtection implements Protection { +public class TownyProtection implements Protection { private final boolean tEnabled; - public TownyProtection(){ + public TownyProtection() { tEnabled = Bukkit.getPluginManager().isPluginEnabled("Towny"); } - public boolean checkPermission(Block block, Player player){ - if(!tEnabled) return true; - if(player.isOp()) return true; - if(player.hasPermission("asedit.ignoreProtection.towny")) return true; //Add Additional Permission + public boolean checkPermission(Block block, Player player) { + if (!tEnabled) return true; + if (player.isOp()) return true; + if (player.hasPermission("asedit.ignoreProtection.towny")) return true; //Add Additional Permission Location playerLoc = player.getLocation(); diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/protections/WorldGuardProtection.java b/src/main/java/io/github/rypofalem/armorstandeditor/protections/WorldGuardProtection.java index 814939d2..f49b9de2 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/protections/WorldGuardProtection.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/protections/WorldGuardProtection.java @@ -27,7 +27,6 @@ import com.sk89q.worldguard.protection.regions.RegionContainer; import com.sk89q.worldguard.protection.regions.RegionQuery; - import org.bukkit.Bukkit; import org.bukkit.block.Block; import org.bukkit.entity.Player; @@ -36,17 +35,17 @@ public class WorldGuardProtection implements Protection { private final boolean wgEnabled; private RegionQuery regionQry; - public WorldGuardProtection(){ + public WorldGuardProtection() { wgEnabled = Bukkit.getPluginManager().isPluginEnabled("WorldGuard"); - if(!wgEnabled) return; + if (!wgEnabled) return; RegionContainer regionContainer = WorldGuard.getInstance().getPlatform().getRegionContainer(); regionQry = regionContainer.createQuery(); } - public boolean checkPermission(Block block, Player player){ + public boolean checkPermission(Block block, Player player) { if (!wgEnabled) return true; - if(player.isOp()) return true; + if (player.isOp()) return true; if (player.hasPermission("asedit.ignoreProtection.worldGuard")) return true; LocalPlayer localPlayer = WorldGuardPlugin.inst().wrapPlayer(player); diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml index 2d51bd1e..601c6f23 100644 --- a/src/main/resources/config.yml +++ b/src/main/resources/config.yml @@ -3,7 +3,7 @@ #-----------------------------# #DO NOT CHANGE THIS - CHANGES AUTOMATICALLY PER UPDATE -version: "1.20.1-43.2" +version: "1.20.2-44" #----------- LANGUAGE #Name of the language file you wish to use @@ -13,15 +13,23 @@ version: "1.20.1-43.2" lang: en_US.yml #----------- UPDATE NOTIFICATIONS -#Enable or Disable the Update Checker +# Enable or Disable the Update Checker runTheUpdateChecker: true # When runTheUpdateChecker is true, we will also check every X hours check-interval: 24 -#Set this to allow your operators to get messages in game w.r.t Plugin updates +# Set this to allow your operators to get messages in game w.r.t Plugin updates opUpdateNotification: false +#----------- WORLD SETTINGS +# Add in a list of Worlds where ArmorStandEditing is allowed to happen +# Please add your own worlds to this list. All Default Worlds are supported. +allowed-worlds: + - world + - world_nether + - world_the_end + #----------- TOOL SETTINGS #Name of the edit tool's item Material. diff --git a/src/main/resources/lang/de_DE.yml b/src/main/resources/lang/de_DE.yml index d8a0f5ab..be6b04ee 100644 --- a/src/main/resources/lang/de_DE.yml +++ b/src/main/resources/lang/de_DE.yml @@ -76,6 +76,12 @@ noplayerhead: msg: Please turn on the ability to retrieve player heads in the config file. playerheaderror: msg: Unable to Retrieve Player Head. +notincorrectworld: + msg: Sorry but you are not in the correct world to use ArmorStandEditor. +unabledestroycreative: + msg: Unable to Destroy this Invulnerable ArmorStand in Creative Mode. +stats: + msg: Here are the statistics for your ArmorStand. help: msg: "1. Halte das Bearbeitungswerkzeug() in deiner Haupthand. @@ -106,8 +112,26 @@ cantedit: msg: Entschuldigung, du kannst hier keine Rüstungsständer bearbeiten! noperm: msg: Du hast keine Erlaubnis diesen Befehl zu nutzen! +nopermoption: + msg: You don't have permission to use the Option! + basic: Normal ArmorStand + showarms: Show Arms + armorstandvisibility: Armor Stand Visibility + baseplate: Set Baseplate Visibility + gravity: Toggle Gravity + vulnerability: Toggle Vulnerability! + itemframevisibility: Item Frame Visibility + size: Toggle ArmorStand Size + disableslots: Toggle Equipment Lock + paste: Paste ArmorStand Config + copy: Copy ArmorStand Config + reset: Reset ArmorStand Config + stats: View ArmorStand Statistics + armorstandglow: Toggle ArmorStand Glow noslotnumcom: msg: Du musst eine Slotnummer angeben! +norangestats: + msg: Please get next to an ArmorStand before running this command. noadjcom: msg: Du musst Grob oder Fein auswählen! noaxiscom: @@ -228,6 +252,22 @@ helpgui: msg: Hilfe! description: msg: Klicke hier um Hilfe zu erhalten! +itemframevisible: + msg: Itemframe Visibility + description: + msg: Toggles an itemframes visibility +playerheadmenu: + msg: Player Head + description: + msg: Please use /ase playerhead +blankslot: + msg: Nothing here + description: + msg: Just a placeholder item. Clicking me will not do anything. +armorstandglow: + msg: Toggle ArmorStand Glow + description: + msg: Turn ArmorStand Glowing on or off. #icons (equipment menu) disabled: diff --git a/src/main/resources/lang/en_US.yml b/src/main/resources/lang/en_US.yml index 58f69c87..5a0e6153 100644 --- a/src/main/resources/lang/en_US.yml +++ b/src/main/resources/lang/en_US.yml @@ -86,6 +86,12 @@ noplayerhead: msg: Please turn on the ability to retrieve player heads in the config file and/or check your permissions to confirm that you have asedit.head set to true. playerheaderror: msg: Unable to Retrieve Player Head. +unabledestroycreative: + msg: Unable to Destroy this Invulnerable ArmorStand in Creative Mode. +notincorrectworld: + msg: Sorry but you are not in the correct world to use ArmorStandEditor. +stats: + msg: Here are the statistics for your ArmorStand. playerheadhelp: msg: "Please use /ase playerhead to get a players head. Ex of the command - /ase playerhead Wolfieheart_" help: @@ -116,6 +122,24 @@ cantedit: msg: Sorry, you cannot edit armor stands here! noperm: msg: You don't have permission to use this! +nopermoption: + msg: You don't have permission to use the Option! + basic: Normal ArmorStand + showarms: Show Arms + armorstandvisibility: Armor Stand Visibility + baseplate: Set Baseplate Visibility + gravity: Toggle Gravity + vulnerability: Toggle Vulnerability + itemframevisibility: Item Frame Visibility + size: Toggle ArmorStand Size + disableslots: Toggle Equipment Lock + paste: Paste ArmorStand Config + copy: Copy ArmorStand Config + reset: Reset ArmorStand Config + stats: View ArmorStand Statistics + armorstandglow: Toggle ArmorStand Glow +norangestats: + msg: Please get next to an ArmorStand before running this command. noslotnumcom: msg: You must specify a slot number! noadjcom: @@ -250,6 +274,14 @@ playerheadmenu: msg: Player Head description: msg: Please use /ase playerhead +blankslot: + msg: Nothing here + description: + msg: Just a placeholder item. Clicking me will not do anything. +armorstandglow: + msg: Toggle ArmorStand Glow + description: + msg: Turn ArmorStand Glowing on or off. #icons (equipment menu) disabled: diff --git a/src/main/resources/lang/es_ES.yml b/src/main/resources/lang/es_ES.yml index 6f4fc51c..4e66c87e 100644 --- a/src/main/resources/lang/es_ES.yml +++ b/src/main/resources/lang/es_ES.yml @@ -73,6 +73,10 @@ noplayerhead: msg: Please turn on the ability to retrieve player heads in the config file. playerheaderror: msg: Unable to Retrieve Player Head. +notincorrectworld: + msg: Sorry but you are not in the correct world to use ArmorStandEditor. +unabledestroycreative: + msg: Unable to Destroy this Invulnerable ArmorStand in Creative Mode. help: msg: "1. Manten la herramienta de edición () en tu mano principal. @@ -97,12 +101,32 @@ helpdiscord: msg: "or join our Discord: https://discord.gg/3BbJKWpTCj" give: msg: Player given Item with CustomModelData +stats: + msg: Here are the statistics for your ArmorStand. #warn cantedit: msg: Lo siento, no puedes editar soportes aqui. -noperm: +noperm: msg: No tienes permiso para usar esto +norangestats: + msg: Please get next to an ArmorStand before running this command. +nopermoption: + msg: You don't have permission to use the Option! + basic: Normal ArmorStand + showarms: Show Arms + armorstandvisibility: Armor Stand Visibility + baseplate: Set Baseplate Visibility + gravity: Toggle Gravity + vulnerability: Toggle Vulnerability! + itemframevisibility: Item Frame Visibility + size: Toggle ArmorStand Size + disableslots: Toggle Equipment Lock + paste: Paste ArmorStand Config + copy: Copy ArmorStand Config + reset: Reset ArmorStand Config + stats: View ArmorStand Statistics + armorstandglow: Toggle ArmorStand Glow noslotnumcom: msg: Tienes que especificar un número de soot noadjcom: @@ -225,6 +249,22 @@ vulnerability: msg: Toggle Vulnerability description: msg: Toggles an item's vulnerability state +itemframevisible: + msg: Itemframe Visibility + description: + msg: Toggles an itemframes visibility +playerheadmenu: + msg: Player Head + description: + msg: Please use /ase playerhead +blankslot: + msg: Nothing here + description: + msg: Just a placeholder item. Clicking me will not do anything. +armorstandglow: + msg: Toggle ArmorStand Glow + description: + msg: Turn ArmorStand Glowing on or off. #icons (equipment menu) disabled: diff --git a/src/main/resources/lang/fr_FR.yml b/src/main/resources/lang/fr_FR.yml index 72907c83..f0f96185 100644 --- a/src/main/resources/lang/fr_FR.yml +++ b/src/main/resources/lang/fr_FR.yml @@ -71,6 +71,14 @@ doubletarget: msg: Regardez un armor stand ou un item frame, pas les deux! nodoubletarget: msg: Regardez un armor stand ou un item frame avant de changer de main! +notincorrectworld: + msg: Sorry but you are not in the correct world to use ArmorStandEditor. +unabledestroycreative: + msg: Unable to Destroy this Invulnerable ArmorStand in Creative Mode. +stats: + msg: Here are the statistics for your ArmorStand. +playerheadhelp: + msg: "Please use /ase playerhead to get a players head. Ex of the command - /ase playerhead Wolfieheart_" help: msg: "1. Tenez l'outil d'édition () dans votre main principale. @@ -103,8 +111,26 @@ playerheaderror: #warn cantedit: msg: Désolé, vous ne pouvez pas modifier des armor stands ici ! -noperm: +noperm: msg: Vous n'avez pas la permission d'utiliser ceci ! +nopermoption: + msg: You don't have permission to use the Option! + basic: Normal ArmorStand + showarms: Show Arms + armorstandvisibility: Armor Stand Visibility + baseplate: Set Baseplate Visibility + gravity: Toggle Gravity + vulnerability: Toggle Vulnerability! + itemframevisibility: Item Frame Visibility + size: Toggle ArmorStand Size + disableslots: Toggle Equipment Lock + paste: Paste ArmorStand Config + copy: Copy ArmorStand Config + reset: Reset ArmorStand Config + stats: View ArmorStand Statistics + armorstandglow: Toggle ArmorStand Glow +norangestats: + msg: Please get next to an ArmorStand before running this command. noslotnumcom: msg: Vous devez spécifier un numéro d'emplacement de copie ! noadjcom: @@ -233,6 +259,18 @@ itemframevisible: msg: Visibilité (Item Frame) description: msg: Rend visible ou invisible un Item Frame +playerheadmenu: + msg: Player Head + description: + msg: Please use /ase playerhead +blankslot: + msg: Nothing here + description: + msg: Just a placeholder item. Clicking me will not do anything. +armorstandglow: + msg: Toggle ArmorStand Glow + description: + msg: Turn ArmorStand Glowing on or off. #icons (equipment menu) disabled: diff --git a/src/main/resources/lang/ja_JP.yml b/src/main/resources/lang/ja_JP.yml index c0fb5a1d..fcdc6393 100644 --- a/src/main/resources/lang/ja_JP.yml +++ b/src/main/resources/lang/ja_JP.yml @@ -76,6 +76,14 @@ noplayerhead: msg: Please turn on the ability to retrieve player heads in the config file. playerheaderror: msg: Unable to Retrieve Player Head. +unabledestroycreative: + msg: Unable to Destroy this Invulnerable ArmorStand in Creative Mode. +notincorrectworld: + msg: Sorry but you are not in the correct world to use ArmorStandEditor. +stats: + msg: Here are the statistics for your ArmorStand. +playerheadhelp: + msg: "Please use /ase playerhead to get a players head. Ex of the command - /ase playerhead Wolfieheart_" help: msg: "1. 編集ツール()を手に持ちます。 @@ -104,6 +112,24 @@ cantedit: msg: 申し訳ありません、ここでアーマースタンドを編集することができません! noperm: msg: 使用する権限がありません! +nopermoption: + msg: You don't have permission to use the Option! + basic: Normal ArmorStand + showarms: Show Arms + armorstandvisibility: Armor Stand Visibility + baseplate: Set Baseplate Visibility + gravity: Toggle Gravity + vulnerability: Toggle Vulnerability! + itemframevisibility: Item Frame Visibility + size: Toggle ArmorStand Size + disableslots: Toggle Equipment Lock + paste: Paste ArmorStand Config + copy: Copy ArmorStand Config + reset: Reset ArmorStand Config + stats: View ArmorStand Statistics + armorstandglow: Toggle ArmorStand Glow +norangestats: + msg: Please get next to an ArmorStand before running this command. noslotnumcom: msg: スロット番号を指定する必要があります! noadjcom: @@ -223,10 +249,22 @@ helpgui: msg: ヘルプ description: msg: ここをクリックするとヘルプが確認できます! -vulnerability: - msg: Toggle Vulnerability +itemframevisible: + msg: Itemframe Visibility description: - msg: Toggles an item's vulnerability state + msg: Toggles an itemframes visibility +playerheadmenu: + msg: Player Head + description: + msg: Please use /ase playerhead +blankslot: + msg: Nothing here + description: + msg: Just a placeholder item. Clicking me will not do anything. +armorstandglow: + msg: Toggle ArmorStand Glow + description: + msg: Turn ArmorStand Glowing on or off. #icons (equipment menu) disabled: diff --git a/src/main/resources/lang/nl_NL.yml b/src/main/resources/lang/nl_NL.yml index ec601cd4..183b66cf 100644 --- a/src/main/resources/lang/nl_NL.yml +++ b/src/main/resources/lang/nl_NL.yml @@ -70,7 +70,12 @@ nodoubletarget: msg: Kijk naar een ArmorStand of een ItemFrame voor je van hand verandert! give: msg: Speler heeft een item met CustomModelData ontvangen - +unabledestroycreative: + msg: Unable to Destroy this Invulnerable ArmorStand in Creative Mode. +notincorrectworld: + msg: Sorry but you are not in the correct world to use ArmorStandEditor. +playerheadhelp: + msg: "Please use /ase playerhead to get a players head. Ex of the command - /ase playerhead Wolfieheart_" #Help help: msg: "1. Houd het wijzigingsgereedschap () in uw hoofdhand. @@ -98,11 +103,32 @@ playerhead: msg: Player Head opgehaald. playerheaderror: msg: Probleem om Player Head af te halen. +stats: + msg: Here are the statistics for your ArmorStand. + #warn cantedit: msg: Sorry, je kunt hier geen armorstands aanpassen! noperm: msg: Sorry, je hebt geen tostemming om dit command te gebruiken! +nopermoption: + msg: Sorry, je hebt geen tostemming om optie te gebruiken! + basic: Normal ArmorStand + showarms: Show Arms + armorstandvisibility: Armor Stand Visibility + baseplate: Set Baseplate Visibility + gravity: Toggle Gravity + vulnerability: Toggle Vulnerability! + itemframevisibility: Item Frame Visibility + size: Toggle ArmorStand Size + disableslots: Toggle Equipment Lock + paste: Paste ArmorStand Config + copy: Copy ArmorStand Config + reset: Reset ArmorStand Config + stats: View ArmorStand Statistics + armorstandglow: Toggle ArmorStand Glow +norangestats: + msg: Please get next to an ArmorStand before running this command. noslotnumcom: msg: Je moet een slot nummer opgeven! noadjcom: @@ -223,6 +249,23 @@ vulnerability: msg: Kwetsbaarheid description: msg: In en uit schakelen van Kwetsbaarheid. +itemframevisible: + msg: Itemframe Visibility + description: + msg: Toggles an itemframes visibility +playerheadmenu: + msg: Player Head + description: + msg: Please use /ase playerhead +blankslot: + msg: Nothing here + description: + msg: Just a placeholder item. Clicking me will not do anything. +armorstandglow: + msg: Toggle ArmorStand Glow + description: + msg: Turn ArmorStand Glowing on or off. + #icons (equipment menu) disabled: msg: Uitgeschakeld diff --git a/src/main/resources/lang/pl_PL.yml b/src/main/resources/lang/pl_PL.yml index bf1ad66f..e9ecfe83 100644 --- a/src/main/resources/lang/pl_PL.yml +++ b/src/main/resources/lang/pl_PL.yml @@ -77,11 +77,35 @@ noplayerhead: msg: Please turn on the ability to retrieve player heads in the config file. playerheaderror: msg: Unable to Retrieve Player Head. +notincorrectworld: + msg: Sorry but you are not in the correct world to use ArmorStandEditor. +unabledestroycreative: + msg: Unable to Destroy this Invulnerable ArmorStand in Creative Mode. +stats: + msg: Here are the statistics for your ArmorStand. #warn cantedit: msg: Nie możesz tego zrobić -noperm: +noperm: msg: Nie posiadasz wymaganych uprawnień +nopermoption: + msg: You don't have permission to use the Option! + basic: Normal ArmorStand + showarms: Show Arms + armorstandvisibility: Armor Stand Visibility + baseplate: Set Baseplate Visibility + gravity: Toggle Gravity + vulnerability: Toggle Vulnerability! + itemframevisibility: Item Frame Visibility + size: Toggle ArmorStand Size + disableslots: Toggle Equipment Lock + paste: Paste ArmorStand Config + copy: Copy ArmorStand Config + reset: Reset ArmorStand Config + stats: View ArmorStand Statistics + armorstandglow: Toggle ArmorStand Glow +norangestats: + msg: Please get next to an ArmorStand before running this command. noslotnumcom: msg: Musisz wybrać slot! noadjcom: @@ -204,6 +228,22 @@ helpgui: msg: Pomocy! description: msg: Kliknij tutaj, aby dostać pomoc! +itemframevisible: + msg: Itemframe Visibility + description: + msg: Toggles an itemframes visibility +playerheadmenu: + msg: Player Head + description: + msg: Please use /ase playerhead +blankslot: + msg: Nothing here + description: + msg: Just a placeholder item. Clicking me will not do anything. +armorstandglow: + msg: Toggle ArmorStand Glow + description: + msg: Turn ArmorStand Glowing on or off. #icons (equipment menu) disabled: diff --git a/src/main/resources/lang/pt_BR.yml b/src/main/resources/lang/pt_BR.yml index 1309bcc4..dbf67001 100644 --- a/src/main/resources/lang/pt_BR.yml +++ b/src/main/resources/lang/pt_BR.yml @@ -96,11 +96,32 @@ helpurl: msg: "More info: https://github.com/RypoFalem/ArmorStandEditor/wiki" helpdiscord: msg: "or join our Discord: https://discord.gg/3BbJKWpTCj" +stats: + msg: Here are the statistics for your ArmorStand. + #warn cantedit: msg: Sorry, you cannot edit armor stands here! noperm: msg: You don't have permission to use this! +nopermoption: + msg: You don't have permission to use the Option! + basic: Normal ArmorStand + showarms: Show Arms + armorstandvisibility: Armor Stand Visibility + baseplate: Set Baseplate Visibility + gravity: Toggle Gravity + vulnerability: Toggle Vulnerability! + itemframevisibility: Item Frame Visibility + size: Toggle ArmorStand Size + disableslots: Toggle Equipment Lock + paste: Paste ArmorStand Config + copy: Copy ArmorStand Config + reset: Reset ArmorStand Config + stats: View ArmorStand Statistics + armorstandglow: Toggle ArmorStand Glow +norangestats: + msg: Please get next to an ArmorStand before running this command. noslotnumcom: msg: You must specify a slot number! noadjcom: @@ -119,6 +140,10 @@ noplayerhead: msg: Please turn on the ability to retrieve player heads in the config file. playerheaderror: msg: Unable to Retrieve Player Head. +notincorrectworld: + msg: Sorry but you are not in the correct world to use ArmorStandEditor. +unabledestroycreative: + msg: Unable to Destroy this Invulnerable ArmorStand in Creative Mode. #menutitle mainmenutitle: msg: Editor do suporte de armaduras @@ -230,10 +255,18 @@ itemframevisible: msg: Itemframe Visibility description: msg: Toggles an itemframes visibility -vulnerability: - msg: Toggle Vulnerability +playerheadmenu: + msg: Player Head + description: + msg: Please use /ase playerhead +blankslot: + msg: Nothing here + description: + msg: Just a placeholder item. Clicking me will not do anything. +armorstandglow: + msg: Toggle ArmorStand Glow description: - msg: Toggles an item's vulnerability state + msg: Turn ArmorStand Glowing on or off. #icons (equipment menu) disabled: diff --git a/src/main/resources/lang/ro_RO.yml b/src/main/resources/lang/ro_RO.yml index b68570c7..ae083396 100644 --- a/src/main/resources/lang/ro_RO.yml +++ b/src/main/resources/lang/ro_RO.yml @@ -70,12 +70,32 @@ playerhead: msg: Player Head retrieved. noplayerhead: msg: Please turn on the ability to retrieve player heads in the config file. +stats: + msg: Here are the statistics for your ArmorStand. #warn cantedit: msg: Nu poti edita armorstand-ul aici! -noperm: +noperm: msg: Nu ai permisiunea sa folosesti asta! +nopermoption: + msg: You don't have permission to use the Option! + basic: Normal ArmorStand + showarms: Show Arms + armorstandvisibility: Armor Stand Visibility + baseplate: Set Baseplate Visibility + gravity: Toggle Gravity + vulnerability: Toggle Vulnerability! + itemframevisibility: Item Frame Visibility + size: Toggle ArmorStand Size + disableslots: Toggle Equipment Lock + paste: Paste ArmorStand Config + copy: Copy ArmorStand Config + reset: Reset ArmorStand Config + stats: View ArmorStand Statistics + armorstandglow: Toggle ArmorStand Glow +norangestats: + msg: Please get next to an ArmorStand before running this command. noslotnumcom: msg: Trebuie sa specifici numarul unui slot. noadjcom: @@ -88,7 +108,10 @@ nogive: msg: You have no permission to use the give command! playerheaderror: msg: Unable to Retrieve Player Head. - +notincorrectworld: + msg: Sorry but you are not in the correct world to use ArmorStandEditor. +unabledestroycreative: + msg: Unable to Destroy this Invulnerable ArmorStand in Creative Mode. #menutitle mainmenutitle: msg: Armor Stand Editor Menu @@ -197,6 +220,22 @@ vulnerability: msg: Toggle Vulnerability description: msg: Toggles an item's vulnerability state +itemframevisible: + msg: Itemframe Visibility + description: + msg: Toggles an itemframes visibility +playerheadmenu: + msg: Player Head + description: + msg: Please use /ase playerhead +blankslot: + msg: Nothing here + description: + msg: Just a placeholder item. Clicking me will not do anything. +armorstandglow: + msg: Toggle ArmorStand Glow + description: + msg: Turn ArmorStand Glowing on or off. #icons (equipment) disabled: diff --git a/src/main/resources/lang/ru_RU.yml b/src/main/resources/lang/ru_RU.yml index b312c070..1bcfe6bc 100644 --- a/src/main/resources/lang/ru_RU.yml +++ b/src/main/resources/lang/ru_RU.yml @@ -1,4 +1,4 @@ -# Translated by KPidS +# Translated by KPidS+Hopak120 iconname: 2n icondescription: 5 @@ -20,7 +20,7 @@ setmode: invisible: переключения видимости size: переключения размера disableslots: переключения блокировки снаряжения - vulnerability: Toggle Vulnerability + vulnerability: переключения неуязвимости gravity: переключения гравитации baseplate: переключения плиты placement: изменения расположения @@ -59,15 +59,15 @@ target: notarget: msg: Цель стойки разблокирована toggleinvulnerability: - msg: ArmorStand vulnerability state has been toggled to . - true: invulnerable - false: vulnerable + msg: Стойка стала . + true: неуязвимой + false: уязвимой frametarget: msg: Цель рамки заблокирована doubletarget: msg: Наведитесь на стойку или на рамку, а не на то и другое одновременно. nodoubletarget: - msg: Please look at an ArmorStand or an ItemFrame before switching hands! + msg: Пожалуйста, смотрите на стойку или на рамку прежде чем менять руки! reloaded: msg: Конфиг перезагружен. help: @@ -90,9 +90,9 @@ helptips: helpurl: msg: "Больше информации: https://github.com/RypoFalem/ArmorStandEditor/wiki" helpdiscord: - msg: "or join our Discord: https://discord.gg/3BbJKWpTCj" + msg: "или присоединитесь к нашему Discord: https://discord.gg/3BbJKWpTCj" give: - msg: Player given Item with CustomModelData + msg: Игроку выдан предмет с CustomModelData. #warn cantedit: @@ -110,13 +110,13 @@ nomodecom: noreloadcom: msg: У вас нет прав, чтобы использовать эту команду nogive: - msg: You have no permission to use the give command! + msg: У вас нет прав на команду give playerhead: - msg: Player Head retrieved. + msg: Получена голова игрока. noplayerhead: - msg: Please turn on the ability to retrieve player heads in the config file. + msg: Пожалуйста включите возможность получения головы игрока в конфиге. playerheaderror: - msg: Unable to Retrieve Player Head. + msg: Невозможно получить голову игрока #menutitle mainmenutitle: @@ -230,9 +230,9 @@ itemframevisible: description: msg: Включить или выключить видимость рамки vulnerability: - msg: Toggle Vulnerability + msg: Неуязвимость description: - msg: Toggles an item's vulnerability state + msg: Включить или выключить неуязвимость #icons (equipment menu) disabled: @@ -245,7 +245,7 @@ equipslot: chest: нагрудник pants: штаны boots: ботинки - rhand: предмет для правой руки + rhand: предмет для правой руки lhand: предмет для левой руки helm: Шлем chest: Нагрудник diff --git a/src/main/resources/lang/test_NA.yml b/src/main/resources/lang/test_NA.yml index 2cb377b0..88916e28 100644 --- a/src/main/resources/lang/test_NA.yml +++ b/src/main/resources/lang/test_NA.yml @@ -55,8 +55,20 @@ pasted: #warn cantedit: msg: Sorry, you cannot edit armor stands here! -noperm: - msg: You don't have permission to use this! +noperm: + msg: You don't have permission to use the Option! + basic: Normal ArmorStand + showarms: Show Arms + armorstandvisibility: Armor Stand Visibility + baseplate: Set Baseplate Visibility + gravity: Toggle Gravity + vulnerability: Toggle Vulnerability! + itemframevisibility: Item Frame Visibility + size: Toggle ArmorStand Size + disableslots: Toggle Equipment Lock + paste: Paste ArmorStand Config + copy: Copy ArmorStand Config + reset: Reset ArmorStand Config noslotnumcom: msg: You must specify a slot number! noadjcom: @@ -75,7 +87,10 @@ toggleinvulnerability: msg: ArmorStand vulnerability state has been toggled to . true: invulnerable false: vulnerable - +notincorrectworld: + msg: Sorry but you are not in the correct world to use ArmorStandEditor. +unabledestroycreative: + msg: Unable to Destroy this Invulnerable ArmorStand in Creative Mode. #menutitle mainmenutitle: msg: Armor Stand Editor Menu @@ -179,7 +194,10 @@ copyslot: msg: Copy Slot description: msg: Select a slot to store settings - +blankslot: + msg: Nothing here + description: + msg: Just a placeholder item. Clicking me will not do anything. #icons (equipment) disabled: msg: Disabled diff --git a/src/main/resources/lang/uk_UA.yml b/src/main/resources/lang/uk_UA.yml index 090abcb9..e728be8e 100644 --- a/src/main/resources/lang/uk_UA.yml +++ b/src/main/resources/lang/uk_UA.yml @@ -70,12 +70,35 @@ noplayerhead: msg: Please turn on the ability to retrieve player heads in the config file. playerheaderror: msg: Unable to Retrieve Player Head. - +notincorrectworld: + msg: Sorry but you are not in the correct world to use ArmorStandEditor. +unabledestroycreative: + msg: Unable to Destroy this Invulnerable ArmorStand in Creative Mode. +stats: + msg: Here are the statistics for your ArmorStand. #warn cantedit: msg: Ти не можеш змінювати стенди тут! noperm: msg: У тебе нема прав! +nopermoption: + msg: You don't have permission to use the Option! + basic: Normal ArmorStand + showarms: Show Arms + armorstandvisibility: Armor Stand Visibility + baseplate: Set Baseplate Visibility + gravity: Toggle Gravity + vulnerability: Toggle Vulnerability! + itemframevisibility: Item Frame Visibility + size: Toggle ArmorStand Size + disableslots: Toggle Equipment Lock + paste: Paste ArmorStand Config + copy: Copy ArmorStand Config + reset: Reset ArmorStand Config + stats: View ArmorStand Statistics + armorstandglow: Toggle ArmorStand Glow +norangestats: + msg: Please get next to an ArmorStand before running this command. noslotnumcom: msg: Уточніть слот! noadjcom: @@ -190,6 +213,22 @@ vulnerability: msg: Toggle Vulnerability description: msg: Toggles an item's vulnerability state +itemframevisible: + msg: Itemframe Visibility + description: + msg: Toggles an itemframes visibility +playerheadmenu: + msg: Player Head + description: + msg: Please use /ase playerhead +blankslot: + msg: Nothing here + description: + msg: Just a placeholder item. Clicking me will not do anything. +armorstandglow: + msg: Toggle ArmorStand Glow + description: + msg: Turn ArmorStand Glowing on or off. #icons (equipment) disabled: diff --git a/src/main/resources/lang/zh_CN.yml b/src/main/resources/lang/zh_CN.yml index 7a7bae7d..082f30ae 100644 --- a/src/main/resources/lang/zh_CN.yml +++ b/src/main/resources/lang/zh_CN.yml @@ -102,12 +102,36 @@ noplayerhead: msg: 请先在配置文件中开启获取玩家头颅功能 playerheaderror: msg: 无法获取玩家头颅 +notincorrectworld: + msg: Sorry but you are not in the correct world to use ArmorStandEditor. +unabledestroycreative: + msg: Unable to Destroy this Invulnerable ArmorStand in Creative Mode. +stats: + msg: Here are the statistics for your ArmorStand. #警告 cantedit: msg: 对不起, 你无法在这里编辑盔甲架! noperm: msg: 你没有权限这样做! +nopermoption: + msg: You don't have permission to use the Option! + basic: Normal ArmorStand + showarms: Show Arms + armorstandvisibility: Armor Stand Visibility + baseplate: Set Baseplate Visibility + gravity: Toggle Gravity + vulnerability: Toggle Vulnerability! + itemframevisibility: Item Frame Visibility + size: Toggle ArmorStand Size + disableslots: Toggle Equipment Lock + paste: Paste ArmorStand Config + copy: Copy ArmorStand Config + reset: Reset ArmorStand Config + stats: View ArmorStand Statistics + armorstandglow: Toggle ArmorStand Glow +norangestats: + msg: Please get next to an ArmorStand before running this command. noslotnumcom: msg: 你必须选择一个物品栏! noadjcom: @@ -232,7 +256,19 @@ itemframevisible: msg: 物品展示框显隐切换 description: msg: 显示/隐形物品展示框 - +blankslot: + msg: Nothing here + description: + msg: Just a placeholder item. Clicking me will not do anything. +playerheadmenu: + msg: Player Head + description: + msg: Please use /ase playerhead +armorstandglow: + msg: Toggle ArmorStand Glow + description: + msg: Turn ArmorStand Glowing on or off. + #图标 (装备) disabled: msg: 关闭 diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index f38b3dac..b8f90924 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -1,11 +1,11 @@ name: ArmorStandEditor main: io.github.rypofalem.armorstandeditor.ArmorStandEditorPlugin -version: 1.20.1-43.2 -api-version: "1.13" +version: 1.20.2-44 +api-version: "1.17" folia-supported: true website: https://www.spigotmc.org/resources/94503/ author: Wolfstorm -authors: [Wolfstorm, Pinnkk, Kugge, Marfjeh, miknes123, rypofalem, sekwah41, Sikatsu1997, Cool_boy, sumdream, Amaury Carrade, nicuch, kotarobo, prettydude, Jumpy91, Niasio, Patbox, Puremin0rez, Prof-Bloodstone, PlanetTeamSpeak] +authors: [Wolfstorm, DreiFxn, Pinnkk, Kugge, Marfjeh, miknes123, rypofalem, sekwah41, Sikatsu1997, Cool_boy, sumdream, Amaury Carrade, nicuch, kotarobo, prettydude, Jumpy91, Niasio, Patbox, Puremin0rez, Prof-Bloodstone, PlanetTeamSpeak] description: Allows players to edit data of armorstands without any commands. softdepend: [Towny, WorldGuard, GriefPrevention, PlotSquared, Lands, bentobox] @@ -24,19 +24,20 @@ permissions: children: asedit.permpack.admin: true asedit.ignoreProtection.*: true + asedit.head: true asedit.basic: description: Allow use armorstand edit functions. If set to false it will override all other functions. default: true asedit.rename: description: Rename armorstands - Now Supports Color - default: false + default: true asedit.equipment: description: Access armorstand equipment GUI - default: false + default: true asedit.disableSlots: description: Allows locking and unlocking the contents of an ArmorStand. When locked, armor and equipment can not be added or removed without unlocking it first. - default: false + default: true asedit.give: description: Gives player the EditTool with Proper CustomModelData default: false @@ -51,10 +52,10 @@ permissions: default: false asedit.movement: description: Changes whether the armor stand can be moved using the item for editing - default: false + default: true asedit.rotation: description: Allows player to rotate the ArmorStand - default: false + default: true asedit.copy: description: Allows the players to create copies of their ArmorStand Configurations. default: false @@ -63,28 +64,34 @@ permissions: default: false asedit.reset: description: Allows the reset of the ArmorStand back to Default values - default: false + default: true asedit.togglearmorstandvisibility: description: Toggles ArmorStand visibility. - default: false + default: true asedit.toggleitemframevisibility: description: Allows setting of ItemFrame Visibility - default: false + default: true asedit.toggleInvulnerability: description: Allows players to toggle the vulnerability state of an ArmorStand. - default: false + default: true asedit.togglebaseplate: description: Allows the toggling of the Baseplate of an ArmorStand. - default: false + default: true asedit.togglearms: description: Allows the toggling of the Arms of an ArmorStand. - default: false + default: true asedit.togglesize: description: Allows the toggling of the size of an ArmorStand. - default: false + default: true asedit.togglegravity: description: Changes whether the armor stand has gravity - default: false + default: true + asedit.togglearmorstandglow: + description: Allows toggling of the Glowing State of an ArmorStand. + default: true + asedit.stats: + description: Ability to view ArmorStand Stats. + default: true asedit.ignoreProtection.towny: description: Allows user to ignore Towny's Protection Limitations. @@ -158,6 +165,7 @@ permissions: asedit.togglesize: true asedit.togglearmorstandvisibility: true asedit.toggleitemframevisibility: true + asedit.togglearmorstandglow: true asedit.permpack.dontIgnoreProtections: true asedit.permpack.admin: From 150107a88626c8bd742b56fd8fbca5b07509bdcc Mon Sep 17 00:00:00 2001 From: Wolfieheart Date: Thu, 12 Oct 2023 22:09:52 +0200 Subject: [PATCH 279/369] [CORE] For got to change this to 1.20.2-44 (HOTFIX) --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 7c614120..b7787352 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ io.github.rypofalem.armorstandeditor armorstandeditor jar - 1.20.x-44 + 1.20.2-44 armorstandeditor http://maven.apache.org From 5cfac1d8cff9f6ff612b14eb27b8be79d2a0c8c9 Mon Sep 17 00:00:00 2001 From: "Larry (Wolfieheart)" Date: Thu, 19 Oct 2023 17:24:45 +0200 Subject: [PATCH 280/369] [CORE] ArmorStandEditor 1.20.2-44.1 - QoL Hotfixes (#349) * [CORE] Bump to 1.20.2-44.1 * [CORE] Allow easy way to allow all worlds by default. Fixes #348 * [CORE] Forgot to change the call for the check to see if a user can RMB to activate the UI. Fixes #348 * [CORE] Update Folia Check and Fix Scoreboard is Null Errors * [CORE] Stricter Check for `/ase stats` usage * [CORE] Better Implementation for the Per World Support Fix * [CORE] Make Per World Support a toggleable thing instead of having a default * [CORE] Merge if Statements when checking PerWorld Signed-off-by: Wolfieheart * [CORE] Fix Folia Leftoever, Fix P2 Protection and add Debug in a few places. Signed-off-by: Wolfieheart * [CORE] Move glowing Item to a better slot Signed-off-by: Wolfieheart * [CORE] Update Config.yml comments to better explain the ASE Per World Implementation Signed-off-by: Wolfieheart --------- Signed-off-by: Wolfieheart --- pom.xml | 2 +- .../ArmorStandEditorPlugin.java | 84 ++++-- .../rypofalem/armorstandeditor/CommandEx.java | 243 +++++++++--------- .../armorstandeditor/PlayerEditorManager.java | 17 +- .../rypofalem/armorstandeditor/Scheduler.java | 11 +- .../rypofalem/armorstandeditor/menu/Menu.java | 4 +- .../protections/PlotSquaredProtection.java | 7 +- src/main/resources/config.yml | 15 +- src/main/resources/plugin.yml | 3 +- 9 files changed, 227 insertions(+), 159 deletions(-) diff --git a/pom.xml b/pom.xml index b7787352..addddfd0 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ io.github.rypofalem.armorstandeditor armorstandeditor jar - 1.20.2-44 + 1.20.2-44.1 armorstandeditor http://maven.apache.org diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/ArmorStandEditorPlugin.java b/src/main/java/io/github/rypofalem/armorstandeditor/ArmorStandEditorPlugin.java index 43179151..b6a8d3bd 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/ArmorStandEditorPlugin.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/ArmorStandEditorPlugin.java @@ -26,10 +26,7 @@ import io.github.rypofalem.armorstandeditor.Metrics.*; import io.github.rypofalem.armorstandeditor.language.Language; -import org.bukkit.Bukkit; -import org.bukkit.ChatColor; -import org.bukkit.Material; -import org.bukkit.NamespacedKey; +import org.bukkit.*; import org.bukkit.entity.Player; import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.meta.Damageable; @@ -59,9 +56,10 @@ public class ArmorStandEditorPlugin extends JavaPlugin { String warningMCVer = "Minecraft Version: "; public boolean hasSpigot = false; public boolean hasPaper = false; + public boolean hasFolia = false; String nmsVersionNotLatest = null; PluginDescriptionFile pdfFile = this.getDescription(); - static final String SEPARATOR_FIELD = "================================"; + public static final String SEPARATOR_FIELD = "================================"; public PlayerEditorManager editorManager; @@ -79,6 +77,7 @@ public class ArmorStandEditorPlugin extends JavaPlugin { String editToolName = null; boolean requireToolLore = false; List editToolLore = null; + boolean enablePerWorld = false; List allowedWorldList = null; boolean allowCustomModelData = false; Integer customModelDataInt = Integer.MIN_VALUE; @@ -103,6 +102,9 @@ public class ArmorStandEditorPlugin extends JavaPlugin { public Team team; String lockedTeam = "ASLocked"; + //Debugging Options.... Not Exposed + boolean debugFlag; + private static ArmorStandEditorPlugin plugin; public ArmorStandEditorPlugin() { @@ -143,6 +145,7 @@ public void onEnable() { //Spigot Check hasSpigot = getHasSpigot(); hasPaper = getHasPaper(); + hasFolia = Scheduler.isFolia(); //If Paper and Spigot are both FALSE - Disable the plugin if (!hasPaper && !hasSpigot) { @@ -159,7 +162,15 @@ public void onEnable() { } getServer().getPluginManager().enablePlugin(this); - if (!Scheduler.isFolia()) registerScoreboards(scoreboard); + + if (!hasFolia) { + scoreboard = Objects.requireNonNull(this.getServer().getScoreboardManager()).getMainScoreboard(); + registerScoreboards(scoreboard); + } else { + getServer().getLogger().warning("Scoreboards currently do not work on Folia. Scoreboard Coloring will not work"); + } + + getLogger().info(SEPARATOR_FIELD); //saveResource doesn't accept File.separator on Windows, need to hardcode unix separator "/" instead @@ -226,7 +237,13 @@ public void onEnable() { editToolLore = getConfig().getList("toolLore", null); } - allowedWorldList = getConfig().getList("allowed-worlds", null); + enablePerWorld = getConfig().getBoolean("enablePerWorldSupport", false); + if(enablePerWorld) { + allowedWorldList = getConfig().getList("allowed-worlds", null); + if (allowedWorldList != null && allowedWorldList.get(0).equals("*")) { + allowedWorldList = getServer().getWorlds().stream().map(World::getName).toList(); + } + } //Require Sneaking - Wolfst0rm/ArmorStandEditor#17 requireSneaking = getConfig().getBoolean("requireSneaking", false); @@ -250,8 +267,17 @@ public void onEnable() { adminOnlyNotifications = getConfig().getBoolean("adminOnlyNotifications", true); + debugFlag = getConfig().getBoolean("debugFlag", false); + if(debugFlag){ + getServer().getLogger().warning(ArmorStandEditorPlugin.SEPARATOR_FIELD); + getServer().getLogger().warning(" ArmorStandEditor - Debug Mode "); + getServer().getLogger().warning(" Debug Mode: ENABLED! "); + getServer().getLogger().warning(" USE THIS FOR DEVELOPMENT PURPOSES ONLY! "); + getServer().getLogger().warning(ArmorStandEditorPlugin.SEPARATOR_FIELD); + } + //Run UpdateChecker - Reports out to Console on Startup ONLY! - if (!Scheduler.isFolia() && runTheUpdateChecker) { + if (!hasFolia && runTheUpdateChecker) { if (opUpdateNotification) { runUpdateCheckerWithOPNotifyOnJoinEnabled(); @@ -316,14 +342,14 @@ private void runUpdateCheckerWithOPNotifyOnJoinEnabled() { //Implement Glow Effects for Wolfstorm/ArmorStandEditor-Issues#5 - Add Disable Slots with Different Glow than Default private void registerScoreboards(Scoreboard scoreboard) { - getLogger().info("Registering Scoreboards required for Glowing Effects"); + getServer().getLogger().info("Registering Scoreboards required for Glowing Effects"); //Fix for Scoreboard Issue reported by Starnos - Wolfst0rm/ArmorStandEditor-Issues/issues/18 if (scoreboard.getTeam(lockedTeam) == null) { scoreboard.registerNewTeam(lockedTeam); - Objects.requireNonNull(scoreboard.getTeam(lockedTeam)).setColor(ChatColor.RED); + scoreboard.getTeam(lockedTeam).setColor(ChatColor.RED); } else { - getLogger().info("Scoreboard for ASLocked Already exists. Continuing to load"); + getServer().getLogger().info("Scoreboard for ASLocked Already exists. Continuing to load"); } } @@ -350,7 +376,7 @@ public void onDisable() { if (player.getOpenInventory().getTopInventory().getHolder() == editorManager.getMenuHolder()) player.closeInventory(); } - if (!Scheduler.isFolia()) { + if (!hasFolia) { scoreboard = Objects.requireNonNull(this.getServer().getScoreboardManager()).getMainScoreboard(); unregisterScoreboards(scoreboard); } @@ -374,7 +400,7 @@ public boolean getHasSpigot() { public boolean getHasPaper() { try { Class.forName("com.destroystokyo.paper.PaperConfig"); - nmsVersionNotLatest = "SpigotMC ASAP."; + nmsVersionNotLatest = "PaperMC ASAP."; return true; } catch (ClassNotFoundException e) { nmsVersionNotLatest = ""; @@ -382,6 +408,9 @@ public boolean getHasPaper() { } } + public boolean getHasFolia() { + return Scheduler.isFolia(); + } public String getArmorStandEditorVersion() { return getConfig().getString("version"); @@ -496,12 +525,10 @@ public boolean isEditTool(ItemStack itemStk) { } return true; } - - - public void performReload() { + public void performReload() { //Unregister Scoreboard before before performing the reload - if (!Scheduler.isFolia()) { + if (!hasFolia) { scoreboard = Objects.requireNonNull(this.getServer().getScoreboardManager()).getMainScoreboard(); unregisterScoreboards(scoreboard); } @@ -510,7 +537,7 @@ public void performReload() { reloadConfig(); //Re-Register Scoreboards - if (!Scheduler.isFolia()) registerScoreboards(scoreboard); + if (!hasFolia) registerScoreboards(scoreboard); //Reload Config File reloadConfig(); @@ -559,7 +586,14 @@ public void performReload() { editToolLore = getConfig().getList("toolLore", null); } - allowedWorldList = getConfig().getList("allowed-worlds", null); + + enablePerWorld = getConfig().getBoolean("enablePerWorldSupport", false); + if(enablePerWorld) { + allowedWorldList = getConfig().getList("allowed-worlds", null); + if (allowedWorldList != null && allowedWorldList.get(0).equals("*")) { + allowedWorldList = getServer().getWorlds().stream().map(World::getName).toList(); + } + } //Require Sneaking - Wolfst0rm/ArmorStandEditor#17 requireSneaking = getConfig().getBoolean("requireSneaking", false); @@ -583,7 +617,7 @@ public void performReload() { updateCheckerInterval = getConfig().getDouble("updateCheckerInterval", 24); //Run UpdateChecker - Reports out to Console on Startup ONLY! - if (!Scheduler.isFolia() && runTheUpdateChecker) { + if (!hasFolia && runTheUpdateChecker) { if (opUpdateNotification) { runUpdateCheckerWithOPNotifyOnJoinEnabled(); @@ -671,4 +705,14 @@ public NamespacedKey getIconKey() { return iconKey; } + /** + * For debugging ASE - Do not use this outside of Development or stuff + */ + public boolean isDebug() { + return debugFlag; + } + + public void debugMsgHandler(String msg){ + if(isDebug()) getServer().getLogger().log(Level.WARNING, "[ASE-DEBUG]: {0}", msg); + } } diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/CommandEx.java b/src/main/java/io/github/rypofalem/armorstandeditor/CommandEx.java index 409d6814..ee1f3fb9 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/CommandEx.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/CommandEx.java @@ -74,6 +74,7 @@ public CommandEx(ArmorStandEditorPlugin armorStandEditorPlugin) { public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { if (sender instanceof ConsoleCommandSender) { //Fix to Support #267 + if(plugin.isDebug()) plugin.debugMsgHandler("Sender is CONSOLE!"); if (args.length == 0) { sender.sendMessage(VERSION); sender.sendMessage(HELP); @@ -93,11 +94,13 @@ public boolean onCommand(CommandSender sender, Command command, String label, St } if (sender instanceof Player player && !getPermissionBasic(player)) { + if(plugin.isDebug()) plugin.debugMsgHandler("Sender is Player but asedit.basic is" + getPermissionBasic(player)); sender.sendMessage(plugin.getLang().getMessage("nopermoption", "warn", "basic")); return true; } else { - Player player = (Player) sender; + + if(plugin.isDebug()) plugin.debugMsgHandler("Sender is Player and asedit.basic is" + getPermissionBasic(player)); if (args.length == 0) { player.sendMessage(LISTMODE); player.sendMessage(LISTAXIS); @@ -161,6 +164,7 @@ private void commandGive(Player player) { } private void commandGivePlayerHead(Player player, String[] args) { + if (plugin.getAllowedToRetrievePlayerHead() && checkPermission(player, "head", true)) { if (args.length == 2) { @@ -309,6 +313,7 @@ private void commandMode(Player player, String[] args) { if (args[1].equals("invisible") && !(checkPermission(player, "togglearmorstandvisibility", true) || plugin.getArmorStandVisibility())) return; if (args[1].equals("itemframe") && !(checkPermission(player, "toggleitemframevisibility", true) || plugin.getItemFrameVisibility())) return; plugin.editorManager.getPlayerEditor(player.getUniqueId()).setMode(mode); + if(plugin.isDebug()) plugin.debugMsgHandler(player.getDisplayName() + " chose the mode: " + mode); return; } } @@ -339,13 +344,14 @@ private void commandUpdate(Player player) { if (!(checkPermission(player, "update", true))) return; //Only Run if the Update Command Works + if (plugin.isDebug()) plugin.debugMsgHandler("Current ArmorStandEditor Version is: " + plugin.getArmorStandEditorVersion()); if (plugin.getArmorStandEditorVersion().contains(".x")) { player.sendMessage(ChatColor.YELLOW + "[ArmorStandEditor] Update Checker will not work on Development Versions."); player.sendMessage(ChatColor.YELLOW + "[ArmorStandEditor] Report all bugs to: https://github.com/Wolfieheart/ArmorStandEditor/issues"); } else { - if (!Scheduler.isFolia() && plugin.getRunTheUpdateChecker()) { + if (!plugin.getHasFolia() && plugin.getRunTheUpdateChecker()) { new UpdateChecker(plugin, UpdateCheckSource.SPIGOT, "" + ArmorStandEditorPlugin.SPIGOT_RESOURCE_ID + "").checkNow(player); //Runs Update Check - } else if (Scheduler.isFolia()) { + } else if (plugin.getHasFolia()) { player.sendMessage(ChatColor.YELLOW + "[ArmorStandEditor] Update Checker does not currently work on Folia."); player.sendMessage(ChatColor.YELLOW + "[ArmorStandEditor] Report all bugs to: https://github.com/Wolfieheart/ArmorStandEditor/issues"); } else { @@ -355,6 +361,8 @@ private void commandUpdate(Player player) { } private void commandVersion(Player player) { + if (plugin.isDebug()) plugin.debugMsgHandler(player.getDisplayName() + " permission check for asedit.update: " + getPermissionUpdate(player)); + if (!(getPermissionUpdate(player))) return; String verString = plugin.getArmorStandEditorVersion(); player.sendMessage(ChatColor.YELLOW + "[ArmorStandEditor] Version: " + verString); @@ -366,6 +374,8 @@ private void commandVersionConsole(CommandSender sender) { } private void commandReload(Player player) { + if (plugin.isDebug()) plugin.debugMsgHandler(player.getDisplayName() + " permission check for asedit.reload: " + getPermissionReload(player)); + if (!(getPermissionReload(player))) return; plugin.performReload(); player.sendMessage(plugin.getLang().getMessage("reloaded", "")); @@ -377,119 +387,122 @@ private void commandReloadConsole(CommandSender sender) { } private void commandStats(Player player) { - if(!getPermissionStats(player)) return; - for(Entity e : player.getNearbyEntities(1,1,1)){ - if(e instanceof ArmorStand as){ - - //Calculation TIME - Might move this out later, but is OK here for now - double headX = as.getHeadPose().getX(); - headX = Math.toDegrees(headX); - headX = Math.rint(headX); - - double headY = as.getHeadPose().getY(); - headY = Math.toDegrees(headY); - headY = Math.rint(headY); - - double headZ = as.getHeadPose().getZ(); - headZ = Math.toDegrees(headZ); - headZ = Math.rint(headZ); - - //Body - double bodyX = as.getBodyPose().getX(); - bodyX = Math.toDegrees(bodyX); - bodyX = Math.rint(bodyX); - - double bodyY = as.getBodyPose().getY(); - bodyY = Math.toDegrees(bodyY); - bodyY = Math.rint(bodyY); - - double bodyZ = as.getBodyPose().getZ(); - bodyZ = Math.toDegrees(bodyZ); - bodyZ = Math.rint(bodyZ); - - - //Arms - double rightArmX = as.getRightArmPose().getX(); - rightArmX = Math.toDegrees(rightArmX); - rightArmX = Math.rint(rightArmX); - - double rightArmY = as.getRightArmPose().getY(); - rightArmY = Math.toDegrees(rightArmY); - rightArmY = Math.rint(rightArmY); - - double rightArmZ = as.getRightArmPose().getZ(); - rightArmZ = Math.toDegrees(rightArmZ); - rightArmZ = Math.rint(rightArmZ); - - - double leftArmX = as.getLeftArmPose().getX(); - leftArmX = Math.toDegrees(leftArmX); - leftArmX = Math.rint(leftArmX); - - double leftArmY = as.getLeftArmPose().getY(); - leftArmY = Math.toDegrees(leftArmY); - leftArmY = Math.rint(leftArmY); - - double leftArmZ = as.getLeftArmPose().getZ(); - leftArmZ = Math.toDegrees(leftArmZ); - leftArmZ = Math.rint(leftArmZ); - - //Legs - double rightLegX = as.getRightLegPose().getX(); - rightLegX = Math.toDegrees(rightLegX); - rightLegX = Math.rint(rightLegX); - - double rightLegY = as.getRightLegPose().getY(); - rightLegY = Math.toDegrees(rightLegY); - rightLegY = Math.rint(rightLegY); - - double rightLegZ = as.getRightLegPose().getZ(); - rightLegZ = Math.toDegrees(rightLegZ); - rightArmX = Math.rint(rightLegZ); - - double leftLegX = as.getLeftLegPose().getX(); - leftLegX = Math.toDegrees(leftLegX); - leftLegX = Math.rint(leftLegX); - - double leftLegY = as.getLeftLegPose().getY(); - leftLegY = Math.toDegrees(leftLegY); - leftLegY = Math.rint(leftLegY); - - double leftLegZ = as.getLeftLegPose().getZ(); - leftLegZ = Math.toDegrees(leftLegZ); - leftLegZ = Math.rint(leftLegZ); - - //Coordinates - float locationX = (float) as.getLocation().getX(); - float locationY = (float) as.getLocation().getY(); - float locationZ = (float) as.getLocation().getZ(); - - //Toggles - boolean isVisible = as.isVisible(); - boolean armsVisible = as.hasArms(); - boolean basePlateVisible = as.hasBasePlate(); - boolean isVulnerable = as.isInvulnerable(); - boolean hasGravity = as.hasGravity(); - boolean isSmall = as.isSmall(); - boolean isGlowing = as.isGlowing(); - boolean isLocked = plugin.scoreboard.getTeam(plugin.lockedTeam).hasEntry(as.getUniqueId().toString()); - - player.sendMessage(ChatColor.YELLOW + "----------- Armor Stand Statistics -----------"); - player.sendMessage(ChatColor.YELLOW + plugin.getLang().getMessage("stats")); - player.sendMessage(ChatColor.YELLOW + "Head: " + ChatColor.AQUA + headX + " / " + headY + " / " + headZ); - player.sendMessage(ChatColor.YELLOW + "Body: " + ChatColor.AQUA + bodyX + " / " + bodyY + " / " + bodyZ); - player.sendMessage(ChatColor.YELLOW + "Right Arm: " + ChatColor.AQUA + rightArmX + " / " + rightArmY + " / " + rightArmZ); - player.sendMessage(ChatColor.YELLOW + "Left Arm: " + ChatColor.AQUA + leftArmX + " / " + leftArmY + " / " + leftArmZ); - player.sendMessage(ChatColor.YELLOW + "Right Leg: " + ChatColor.AQUA + rightLegX + " / " + rightLegY + " / " + rightLegZ); - player.sendMessage(ChatColor.YELLOW + "Left Leg: " + ChatColor.AQUA + leftLegX + " / " + leftLegY + " / " + leftLegZ); - player.sendMessage(ChatColor.YELLOW + "Coordinates: " + ChatColor.AQUA + " x: " + locationX + " / y: " + locationY + " / z: " + locationZ); - player.sendMessage(ChatColor.YELLOW + "Is Visible: " + ChatColor.AQUA + isVisible + ". " + ChatColor.YELLOW + "Arms Visible: " + ChatColor.AQUA + armsVisible + ". " + ChatColor.YELLOW + "Base Plate Visible: "+ ChatColor.AQUA + basePlateVisible); - player.sendMessage(ChatColor.YELLOW + "Is Vulnerable: " + ChatColor.AQUA + isVulnerable + ". " + ChatColor.YELLOW + "Affected by Gravity: " + ChatColor.AQUA + hasGravity); - player.sendMessage(ChatColor.YELLOW + "Is Small: " + ChatColor.AQUA + isSmall + ". " + ChatColor.YELLOW + "Is Glowing: " + ChatColor.AQUA + isGlowing + ". " + ChatColor.YELLOW + "Is Locked: " + ChatColor.AQUA + isLocked); - player.sendMessage(ChatColor.YELLOW + "----------------------------------------------"); - } else{ - player.sendMessage(plugin.getLang().getMessage("norangeforstats", "warn")); + if (plugin.isDebug()) plugin.debugMsgHandler(player.getDisplayName() + " permission check for asedit.stats: " + getPermissionStats(player)); + + if(getPermissionStats(player)) { + for (Entity e : player.getNearbyEntities(1, 1, 1)) { + if (e instanceof ArmorStand as) { + + //Calculation TIME - Might move this out later, but is OK here for now + double headX = as.getHeadPose().getX(); + headX = Math.toDegrees(headX); + headX = Math.rint(headX); + + double headY = as.getHeadPose().getY(); + headY = Math.toDegrees(headY); + headY = Math.rint(headY); + + double headZ = as.getHeadPose().getZ(); + headZ = Math.toDegrees(headZ); + headZ = Math.rint(headZ); + + //Body + double bodyX = as.getBodyPose().getX(); + bodyX = Math.toDegrees(bodyX); + bodyX = Math.rint(bodyX); + + double bodyY = as.getBodyPose().getY(); + bodyY = Math.toDegrees(bodyY); + bodyY = Math.rint(bodyY); + + double bodyZ = as.getBodyPose().getZ(); + bodyZ = Math.toDegrees(bodyZ); + bodyZ = Math.rint(bodyZ); + + + //Arms + double rightArmX = as.getRightArmPose().getX(); + rightArmX = Math.toDegrees(rightArmX); + rightArmX = Math.rint(rightArmX); + + double rightArmY = as.getRightArmPose().getY(); + rightArmY = Math.toDegrees(rightArmY); + rightArmY = Math.rint(rightArmY); + + double rightArmZ = as.getRightArmPose().getZ(); + rightArmZ = Math.toDegrees(rightArmZ); + rightArmZ = Math.rint(rightArmZ); + + + double leftArmX = as.getLeftArmPose().getX(); + leftArmX = Math.toDegrees(leftArmX); + leftArmX = Math.rint(leftArmX); + + double leftArmY = as.getLeftArmPose().getY(); + leftArmY = Math.toDegrees(leftArmY); + leftArmY = Math.rint(leftArmY); + + double leftArmZ = as.getLeftArmPose().getZ(); + leftArmZ = Math.toDegrees(leftArmZ); + leftArmZ = Math.rint(leftArmZ); + + //Legs + double rightLegX = as.getRightLegPose().getX(); + rightLegX = Math.toDegrees(rightLegX); + rightLegX = Math.rint(rightLegX); + + double rightLegY = as.getRightLegPose().getY(); + rightLegY = Math.toDegrees(rightLegY); + rightLegY = Math.rint(rightLegY); + + double rightLegZ = as.getRightLegPose().getZ(); + rightLegZ = Math.toDegrees(rightLegZ); + rightArmX = Math.rint(rightLegZ); + + double leftLegX = as.getLeftLegPose().getX(); + leftLegX = Math.toDegrees(leftLegX); + leftLegX = Math.rint(leftLegX); + + double leftLegY = as.getLeftLegPose().getY(); + leftLegY = Math.toDegrees(leftLegY); + leftLegY = Math.rint(leftLegY); + + double leftLegZ = as.getLeftLegPose().getZ(); + leftLegZ = Math.toDegrees(leftLegZ); + leftLegZ = Math.rint(leftLegZ); + + //Coordinates + float locationX = (float) as.getLocation().getX(); + float locationY = (float) as.getLocation().getY(); + float locationZ = (float) as.getLocation().getZ(); + + //Toggles + boolean isVisible = as.isVisible(); + boolean armsVisible = as.hasArms(); + boolean basePlateVisible = as.hasBasePlate(); + boolean isVulnerable = as.isInvulnerable(); + boolean hasGravity = as.hasGravity(); + boolean isSmall = as.isSmall(); + boolean isGlowing = as.isGlowing(); + boolean isLocked = plugin.scoreboard.getTeam(plugin.lockedTeam).hasEntry(as.getUniqueId().toString()); + + player.sendMessage(ChatColor.YELLOW + "----------- Armor Stand Statistics -----------"); + player.sendMessage(ChatColor.YELLOW + plugin.getLang().getMessage("stats")); + player.sendMessage(ChatColor.YELLOW + "Head: " + ChatColor.AQUA + headX + " / " + headY + " / " + headZ); + player.sendMessage(ChatColor.YELLOW + "Body: " + ChatColor.AQUA + bodyX + " / " + bodyY + " / " + bodyZ); + player.sendMessage(ChatColor.YELLOW + "Right Arm: " + ChatColor.AQUA + rightArmX + " / " + rightArmY + " / " + rightArmZ); + player.sendMessage(ChatColor.YELLOW + "Left Arm: " + ChatColor.AQUA + leftArmX + " / " + leftArmY + " / " + leftArmZ); + player.sendMessage(ChatColor.YELLOW + "Right Leg: " + ChatColor.AQUA + rightLegX + " / " + rightLegY + " / " + rightLegZ); + player.sendMessage(ChatColor.YELLOW + "Left Leg: " + ChatColor.AQUA + leftLegX + " / " + leftLegY + " / " + leftLegZ); + player.sendMessage(ChatColor.YELLOW + "Coordinates: " + ChatColor.AQUA + " X: " + locationX + " / Y: " + locationY + " / Z: " + locationZ); + player.sendMessage(ChatColor.YELLOW + "Is Visible: " + ChatColor.AQUA + isVisible + ". " + ChatColor.YELLOW + "Arms Visible: " + ChatColor.AQUA + armsVisible + ". " + ChatColor.YELLOW + "Base Plate Visible: " + ChatColor.AQUA + basePlateVisible); + player.sendMessage(ChatColor.YELLOW + "Is Vulnerable: " + ChatColor.AQUA + isVulnerable + ". " + ChatColor.YELLOW + "Affected by Gravity: " + ChatColor.AQUA + hasGravity); + player.sendMessage(ChatColor.YELLOW + "Is Small: " + ChatColor.AQUA + isSmall + ". " + ChatColor.YELLOW + "Is Glowing: " + ChatColor.AQUA + isGlowing + ". " + ChatColor.YELLOW + "Is Locked: " + ChatColor.AQUA + isLocked); + player.sendMessage(ChatColor.YELLOW + "----------------------------------------------"); + } } + }else{ + player.sendMessage(plugin.getLang().getMessage("norangeforstats", "warn")); } } diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditorManager.java b/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditorManager.java index 2ae09182..9dfb5c14 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditorManager.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditorManager.java @@ -361,20 +361,19 @@ void applyRightTool(Player player, ArmorStand as) { @EventHandler(priority = EventPriority.LOWEST) void onRightClickTool(PlayerInteractEvent e) { if (!(e.getAction() == Action.LEFT_CLICK_AIR - || e.getAction() == Action.RIGHT_CLICK_AIR - || e.getAction() == Action.LEFT_CLICK_BLOCK - || e.getAction() == Action.RIGHT_CLICK_BLOCK)) return; + || e.getAction() == Action.RIGHT_CLICK_AIR + || e.getAction() == Action.LEFT_CLICK_BLOCK + || e.getAction() == Action.RIGHT_CLICK_BLOCK)) return; Player player = e.getPlayer(); if (!plugin.isEditTool(player.getInventory().getItemInMainHand())) return; if (plugin.requireSneaking && !player.isSneaking()) return; if (!player.hasPermission("asedit.basic")) return; - - if (!plugin.allowedWorldList.contains(player.getWorld().getName())) { //Implementation for Per World ASE - getPlayerEditor(player.getUniqueId()).sendMessage("notincorrectworld", "warn"); - e.setCancelled(true); - return; + if (plugin.enablePerWorld && (!plugin.allowedWorldList.contains(player.getWorld().getName()))) { + //Implementation for Per World ASE + getPlayerEditor(player.getUniqueId()).sendMessage("notincorrectworld", "warn"); + e.setCancelled(true); + return; } - e.setCancelled(true); getPlayerEditor(player.getUniqueId()).openMenu(); } diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/Scheduler.java b/src/main/java/io/github/rypofalem/armorstandeditor/Scheduler.java index 1dad84d8..b2014351 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/Scheduler.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/Scheduler.java @@ -56,8 +56,13 @@ private static boolean methodExist(Class clazz, String methodName, Class.. } public static Boolean isFolia() { - if (IS_FOLIA == null) IS_FOLIA = methodExist(Bukkit.class, "getGlobalRegionScheduler"); - return IS_FOLIA; + try { + Class.forName("io.papermc.paper.threadedregions.ThreadedRegionizer"); + } + catch (Exception e) { + return false; + } + return true; } public static Object getGlobalRegionScheduler() { @@ -97,7 +102,7 @@ public static void runTaskLater(Plugin plugin, Runnable runnable, long delayedTi } public static void teleport(Entity entity, Location location) { - if (IS_FOLIA) callMethod(Entity.class, entity, "teleportAsync", new Class[]{Location.class}, location); + if (isFolia()) callMethod(Entity.class, entity, "teleportAsync", new Class[]{Location.class}, location); else entity.teleport(location); } } diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/menu/Menu.java b/src/main/java/io/github/rypofalem/armorstandeditor/menu/Menu.java index 38e2e4c1..5db9d701 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/menu/Menu.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/menu/Menu.java @@ -239,10 +239,10 @@ private void fillInventory() { ItemStack[] items = { blankSlot, blankSlot, blankSlot, xAxis, yAxis, zAxis, blankSlot, blankSlot, help, - copy, paste, blankSlot, playerHead, headPos, reset, blankSlot, itemFrameVisible, blankSlot, + copy, paste, blankSlot, playerHead, headPos, reset, blankSlot, itemFrameVisible, glowing, slot1, slot2, blankSlot, rightArmPos, bodyPos, leftArmPos, blankSlot, rotate, place, slot3, slot4, blankSlot, rightLegPos, equipment, leftLegPos, blankSlot, coarseAdj, fineAdj, - blankSlot, glowing, blankSlot, blankSlot, blankSlot, blankSlot, blankSlot, blankSlot, blankSlot, + blankSlot, blankSlot, blankSlot, blankSlot, blankSlot, blankSlot, blankSlot, blankSlot, blankSlot, blankSlot, showArms, visibility, size, gravity, plate, toggleVulnerabilty, disableSlots, blankSlot }; diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/protections/PlotSquaredProtection.java b/src/main/java/io/github/rypofalem/armorstandeditor/protections/PlotSquaredProtection.java index b1f78436..780c56cf 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/protections/PlotSquaredProtection.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/protections/PlotSquaredProtection.java @@ -49,15 +49,14 @@ public boolean checkPermission(Block block, Player player) { if (player.hasPermission("asedit.ignoreProtection.plotSquared")) return true; if (plotAPI == null) plotAPI = new PlotAPI(); - //Get the Location of the Plot - Location plotLocation = Location.at(player.getWorld().getName(), BlockVector3.at(block.getX(), block.getY(), block.getZ())); + //Get the Location of the Plot + Location plotLocation = Location.at(block.getWorld().getName(), BlockVector3.at(block.getX(), block.getY(), block.getZ())); //Get the Area of the PLot PlotArea area = plotLocation.getPlotArea(); //If the Area is not a Plot, then we assume its a road, we return if a player can build on roads or not - if(area == null) - return player.hasPermission("plots.admin.build.road"); + if(area == null) return true; //Get the Plot Plot plot = area.getPlot(plotLocation); diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml index 601c6f23..7fffef6e 100644 --- a/src/main/resources/config.yml +++ b/src/main/resources/config.yml @@ -3,7 +3,7 @@ #-----------------------------# #DO NOT CHANGE THIS - CHANGES AUTOMATICALLY PER UPDATE -version: "1.20.2-44" +version: "1.20.2-44.1" #----------- LANGUAGE #Name of the language file you wish to use @@ -23,12 +23,15 @@ check-interval: 24 opUpdateNotification: false #----------- WORLD SETTINGS +# Enable Per World Support for ArmorStandEditor - Not Enabling this +# means it will work for all worlds by default +enablePerWorldSupport: false + # Add in a list of Worlds where ArmorStandEditing is allowed to happen # Please add your own worlds to this list. All Default Worlds are supported. +# To allow ALL Worlds by default - Make sure that your first listed world is "*" allowed-worlds: - - world - - world_nether - - world_the_end + - "*" #----------- TOOL SETTINGS @@ -97,3 +100,7 @@ allowedToRetrievePlayerHead: false #Each time the command is used, the admins will be notified that this has been ran but only #if this setting is made true adminOnlyNotifications: false + +#Debug Mode - For Development and Support Purposes ONLY! +# Do Not Enable. Will Generate ALOT OF NOISE in your Log Files +debugFlag: false diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index b8f90924..0fade9b5 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -1,6 +1,6 @@ name: ArmorStandEditor main: io.github.rypofalem.armorstandeditor.ArmorStandEditorPlugin -version: 1.20.2-44 +version: 1.20.2-44.1 api-version: "1.17" folia-supported: true website: https://www.spigotmc.org/resources/94503/ @@ -159,6 +159,7 @@ permissions: asedit.copy: true asedit.paste: true asedit.reset: true + asedit.stats: true asedit.toggleInvulnerability: true asedit.togglebaseplate: true asedit.togglearms: true From ceb099b43a8fc2d38d8758bff2d79166e9a6de1e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 19 Oct 2023 17:24:58 +0200 Subject: [PATCH 281/369] Bump com.github.angeschossen:LandsAPI from 6.35.0 to 6.37.0 (#355) Bumps [com.github.angeschossen:LandsAPI](https://github.com/Angeschossen/LandsAPI) from 6.35.0 to 6.37.0. - [Release notes](https://github.com/Angeschossen/LandsAPI/releases) - [Commits](https://github.com/Angeschossen/LandsAPI/compare/6.35.0...6.37.0) --- updated-dependencies: - dependency-name: com.github.angeschossen:LandsAPI dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index addddfd0..7c19cc90 100644 --- a/pom.xml +++ b/pom.xml @@ -180,7 +180,7 @@ com.github.angeschossen LandsAPI - 6.35.0 + 6.37.0 provided From 5a6d9c77b990c92709a3529f6c291a59754f3c52 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 19 Oct 2023 17:25:07 +0200 Subject: [PATCH 282/369] Bump org.openrewrite.recipe:rewrite-migrate-java from 2.0.9 to 2.1.1 (#354) Bumps [org.openrewrite.recipe:rewrite-migrate-java](https://github.com/openrewrite/rewrite-migrate-java) from 2.0.9 to 2.1.1. - [Release notes](https://github.com/openrewrite/rewrite-migrate-java/releases) - [Commits](https://github.com/openrewrite/rewrite-migrate-java/compare/v2.0.9...v2.1.1) --- updated-dependencies: - dependency-name: org.openrewrite.recipe:rewrite-migrate-java dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 7c19cc90..7151a62d 100644 --- a/pom.xml +++ b/pom.xml @@ -227,7 +227,7 @@ org.openrewrite.recipe rewrite-migrate-java - 2.0.9 + 2.1.1 From 58d8fcd7da77abae3300dc0669f620bcd3cb1c87 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 19 Oct 2023 17:25:15 +0200 Subject: [PATCH 283/369] Bump org.openrewrite.maven:rewrite-maven-plugin from 5.4.1 to 5.8.1 (#353) Bumps [org.openrewrite.maven:rewrite-maven-plugin](https://github.com/openrewrite/rewrite-maven-plugin) from 5.4.1 to 5.8.1. - [Release notes](https://github.com/openrewrite/rewrite-maven-plugin/releases) - [Commits](https://github.com/openrewrite/rewrite-maven-plugin/compare/v5.4.1...v5.8.1) --- updated-dependencies: - dependency-name: org.openrewrite.maven:rewrite-maven-plugin dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 7151a62d..fe8eb1e1 100644 --- a/pom.xml +++ b/pom.xml @@ -212,7 +212,7 @@ org.openrewrite.maven rewrite-maven-plugin - 5.4.1 + 5.8.1 org.openrewrite.java.migrate.UpgradeToJava17 From 2a9a85442c2b66e477cc88452ea0e9647628ef74 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 19 Oct 2023 17:25:23 +0200 Subject: [PATCH 284/369] Bump com.palmergames.bukkit.towny:towny from 0.99.6.1 to 0.99.6.2 (#352) Bumps [com.palmergames.bukkit.towny:towny](https://github.com/TownyAdvanced/Towny) from 0.99.6.1 to 0.99.6.2. - [Release notes](https://github.com/TownyAdvanced/Towny/releases) - [Commits](https://github.com/TownyAdvanced/Towny/compare/0.99.6.1...0.99.6.2) --- updated-dependencies: - dependency-name: com.palmergames.bukkit.towny:towny dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index fe8eb1e1..f03ffd0c 100644 --- a/pom.xml +++ b/pom.xml @@ -152,7 +152,7 @@ com.palmergames.bukkit.towny towny - 0.99.6.1 + 0.99.6.2 provided From e15528419a842aaad135b1f06b573569c86bccad Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 19 Oct 2023 17:27:12 +0200 Subject: [PATCH 285/369] Update dependency com.github.wolfieheart:armorstandeditor to v1.20.2-44 (#347) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Larry (Wolfieheart) --- API-Example-Plugin/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/API-Example-Plugin/pom.xml b/API-Example-Plugin/pom.xml index aeb7fbab..4416601e 100644 --- a/API-Example-Plugin/pom.xml +++ b/API-Example-Plugin/pom.xml @@ -62,7 +62,7 @@ com.github.wolfieheart armorstandeditor - 1.20.1-43.2 + 1.20.2-44 provided From 3de9c6bcf7a4d9aa8e8e8429d8588ab3236ab3c6 Mon Sep 17 00:00:00 2001 From: "Larry (Wolfieheart)" Date: Thu, 19 Oct 2023 17:35:41 +0200 Subject: [PATCH 286/369] [CORE] Fix Broken allowed-world list --- src/main/resources/config.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml index 7fffef6e..7f0ab03d 100644 --- a/src/main/resources/config.yml +++ b/src/main/resources/config.yml @@ -31,7 +31,9 @@ enablePerWorldSupport: false # Please add your own worlds to this list. All Default Worlds are supported. # To allow ALL Worlds by default - Make sure that your first listed world is "*" allowed-worlds: - - "*" + - world + - world_nether + - world_the_end #----------- TOOL SETTINGS From d958aeeb5fd343f38a92a64954868d0ca1d53213 Mon Sep 17 00:00:00 2001 From: "Larry (Wolfieheart)" Date: Thu, 19 Oct 2023 17:35:54 +0200 Subject: [PATCH 287/369] Update config.yml --- src/main/resources/config.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml index 7f0ab03d..64893269 100644 --- a/src/main/resources/config.yml +++ b/src/main/resources/config.yml @@ -29,7 +29,6 @@ enablePerWorldSupport: false # Add in a list of Worlds where ArmorStandEditing is allowed to happen # Please add your own worlds to this list. All Default Worlds are supported. -# To allow ALL Worlds by default - Make sure that your first listed world is "*" allowed-worlds: - world - world_nether From e75ff6083dd9268689ef187d3738397fd1dc2e31 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 6 Dec 2023 09:29:50 +0100 Subject: [PATCH 288/369] Bump actions/setup-java from 3 to 4 (#381) Bumps [actions/setup-java](https://github.com/actions/setup-java) from 3 to 4. - [Release notes](https://github.com/actions/setup-java/releases) - [Commits](https://github.com/actions/setup-java/compare/v3...v4) --- updated-dependencies: - dependency-name: actions/setup-java dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/maven-publish.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/maven-publish.yml b/.github/workflows/maven-publish.yml index a9c2ac4b..1445c90a 100644 --- a/.github/workflows/maven-publish.yml +++ b/.github/workflows/maven-publish.yml @@ -20,7 +20,7 @@ jobs: # 2. Setup Java JDK - name: Set up JDK Environments - uses: actions/setup-java@v3 + uses: actions/setup-java@v4 with: java-version: ${{ matrix.java }} distribution: 'zulu' From bcc23e37b486a1339585957a06db239898ede62d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 6 Dec 2023 09:30:01 +0100 Subject: [PATCH 289/369] Bump org.openrewrite.maven:rewrite-maven-plugin from 5.8.1 to 5.14.1 (#380) Bumps [org.openrewrite.maven:rewrite-maven-plugin](https://github.com/openrewrite/rewrite-maven-plugin) from 5.8.1 to 5.14.1. - [Release notes](https://github.com/openrewrite/rewrite-maven-plugin/releases) - [Commits](https://github.com/openrewrite/rewrite-maven-plugin/compare/v5.8.1...v5.14.1) --- updated-dependencies: - dependency-name: org.openrewrite.maven:rewrite-maven-plugin dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index f03ffd0c..0ddf0dfe 100644 --- a/pom.xml +++ b/pom.xml @@ -212,7 +212,7 @@ org.openrewrite.maven rewrite-maven-plugin - 5.8.1 + 5.14.1 org.openrewrite.java.migrate.UpgradeToJava17 From f67139e9d03f4eb339b933728e122a54503f0e82 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 6 Dec 2023 09:30:09 +0100 Subject: [PATCH 290/369] Bump org.openrewrite.recipe:rewrite-migrate-java from 2.1.1 to 2.4.0 (#378) Bumps [org.openrewrite.recipe:rewrite-migrate-java](https://github.com/openrewrite/rewrite-migrate-java) from 2.1.1 to 2.4.0. - [Release notes](https://github.com/openrewrite/rewrite-migrate-java/releases) - [Commits](https://github.com/openrewrite/rewrite-migrate-java/compare/v2.1.1...v2.4.0) --- updated-dependencies: - dependency-name: org.openrewrite.recipe:rewrite-migrate-java dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 0ddf0dfe..eaac57eb 100644 --- a/pom.xml +++ b/pom.xml @@ -227,7 +227,7 @@ org.openrewrite.recipe rewrite-migrate-java - 2.1.1 + 2.4.0 From 0808ec073a65f21c68994fea8d821123e4aa1b54 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 6 Dec 2023 09:30:16 +0100 Subject: [PATCH 291/369] Bump com.palmergames.bukkit.towny:towny from 0.99.6.2 to 0.100.0.7 (#377) Bumps [com.palmergames.bukkit.towny:towny](https://github.com/TownyAdvanced/Towny) from 0.99.6.2 to 0.100.0.7. - [Release notes](https://github.com/TownyAdvanced/Towny/releases) - [Commits](https://github.com/TownyAdvanced/Towny/compare/0.99.6.2...0.100.0.7) --- updated-dependencies: - dependency-name: com.palmergames.bukkit.towny:towny dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index eaac57eb..29c6b174 100644 --- a/pom.xml +++ b/pom.xml @@ -152,7 +152,7 @@ com.palmergames.bukkit.towny towny - 0.99.6.2 + 0.100.0.7 provided From f4df725dfa979fe83ffbd6796b9d6a99e306df54 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 6 Dec 2023 09:30:25 +0100 Subject: [PATCH 292/369] Bump com.intellectualsites.plotsquared:plotsquared-bukkit from 7.1.0 to 7.2.0 (#369) Bump com.intellectualsites.plotsquared:plotsquared-bukkit Bumps [com.intellectualsites.plotsquared:plotsquared-bukkit](https://github.com/IntellectualSites/PlotSquared) from 7.1.0 to 7.2.0. - [Release notes](https://github.com/IntellectualSites/PlotSquared/releases) - [Commits](https://github.com/IntellectualSites/PlotSquared/compare/7.1.0...7.2.0) --- updated-dependencies: - dependency-name: com.intellectualsites.plotsquared:plotsquared-bukkit dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 29c6b174..a1aaa2ac 100644 --- a/pom.xml +++ b/pom.xml @@ -132,7 +132,7 @@ com.intellectualsites.plotsquared plotsquared-bukkit - 7.1.0 + 7.2.0 provided From 73cea902c43c4240215b8e3e94401712b56c8f0a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 6 Dec 2023 09:30:34 +0100 Subject: [PATCH 293/369] Bump com.intellectualsites.plotsquared:plotsquared-core from 7.1.0 to 7.2.0 (#368) Bump com.intellectualsites.plotsquared:plotsquared-core Bumps [com.intellectualsites.plotsquared:plotsquared-core](https://github.com/IntellectualSites/PlotSquared) from 7.1.0 to 7.2.0. - [Release notes](https://github.com/IntellectualSites/PlotSquared/releases) - [Commits](https://github.com/IntellectualSites/PlotSquared/compare/7.1.0...7.2.0) --- updated-dependencies: - dependency-name: com.intellectualsites.plotsquared:plotsquared-core dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index a1aaa2ac..c886e4e4 100644 --- a/pom.xml +++ b/pom.xml @@ -126,7 +126,7 @@ com.intellectualsites.plotsquared plotsquared-core - 7.1.0 + 7.2.0 provided From 69ac17d6e00bd1bf438b565f3c6adafcdf304a08 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 6 Dec 2023 09:31:19 +0100 Subject: [PATCH 294/369] Update dependency com.github.wolfieheart:armorstandeditor to v1.20.2-44.1 (#357) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- API-Example-Plugin/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/API-Example-Plugin/pom.xml b/API-Example-Plugin/pom.xml index 4416601e..2010c840 100644 --- a/API-Example-Plugin/pom.xml +++ b/API-Example-Plugin/pom.xml @@ -62,7 +62,7 @@ com.github.wolfieheart armorstandeditor - 1.20.2-44 + 1.20.2-44.1 provided From b84e8fecd688629710005e2f74a043990be87d86 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 6 Dec 2023 11:01:57 +0100 Subject: [PATCH 295/369] Update dependency org.codehaus.mojo:build-helper-maven-plugin to v3.5.0 (#375) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- API-Example-Plugin/pom.xml | 2 +- pom.xml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/API-Example-Plugin/pom.xml b/API-Example-Plugin/pom.xml index 2010c840..6cb72d97 100644 --- a/API-Example-Plugin/pom.xml +++ b/API-Example-Plugin/pom.xml @@ -72,7 +72,7 @@ org.codehaus.mojo build-helper-maven-plugin - 3.4.0 + 3.5.0 compile diff --git a/pom.xml b/pom.xml index c886e4e4..e16225b2 100644 --- a/pom.xml +++ b/pom.xml @@ -234,7 +234,7 @@ org.codehaus.mojo build-helper-maven-plugin - 3.4.0 + 3.5.0 compile From c760c1cedd7ce431ac0c87d347a73d03d27dc76c Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 6 Dec 2023 11:06:50 +0100 Subject: [PATCH 296/369] Update dependency com.github.angeschossen:LandsAPI to v6.42.0 (#372) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index e16225b2..67bf85b7 100644 --- a/pom.xml +++ b/pom.xml @@ -180,7 +180,7 @@ com.github.angeschossen LandsAPI - 6.37.0 + 6.42.0 provided From 99a81494d74c936c73b18f2c2a58b3b0f236723d Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 6 Dec 2023 11:07:02 +0100 Subject: [PATCH 297/369] Update dependency org.openrewrite.recipe:rewrite-migrate-java to v2.4.1 (#361) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 67bf85b7..648729d3 100644 --- a/pom.xml +++ b/pom.xml @@ -227,7 +227,7 @@ org.openrewrite.recipe rewrite-migrate-java - 2.4.0 + 2.4.1 From ed21528282567d39cad3240cbec7aeb247fb0631 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 6 Dec 2023 11:07:18 +0100 Subject: [PATCH 298/369] Update dependency org.openrewrite.maven:rewrite-maven-plugin to v5.15.2 (#358) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 648729d3..076fd904 100644 --- a/pom.xml +++ b/pom.xml @@ -212,7 +212,7 @@ org.openrewrite.maven rewrite-maven-plugin - 5.14.1 + 5.15.2 org.openrewrite.java.migrate.UpgradeToJava17 From 48e3901721fc7cee951ac9c05e2de74afe422eda Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 6 Dec 2023 11:07:31 +0100 Subject: [PATCH 299/369] Update dependency com.palmergames.bukkit.towny:towny to v0.100.0.8 (#356) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 076fd904..31801084 100644 --- a/pom.xml +++ b/pom.xml @@ -152,7 +152,7 @@ com.palmergames.bukkit.towny towny - 0.100.0.7 + 0.100.0.8 provided From 746163fcc200b16bbd8563e144d2bbee13d4e1e6 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 9 Dec 2023 16:08:34 +0100 Subject: [PATCH 300/369] Update dependency com.intellectualsites.plotsquared:plotsquared-bukkit to v7.2.1 (#364) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 31801084..c5223bfb 100644 --- a/pom.xml +++ b/pom.xml @@ -132,7 +132,7 @@ com.intellectualsites.plotsquared plotsquared-bukkit - 7.2.0 + 7.2.1 provided From f210d57efda624070c87b1d4a5a505d5f66517b2 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 9 Dec 2023 16:08:44 +0100 Subject: [PATCH 301/369] Update dependency com.intellectualsites.plotsquared:plotsquared-core to v7.2.1 (#365) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index c5223bfb..80dd7be5 100644 --- a/pom.xml +++ b/pom.xml @@ -126,7 +126,7 @@ com.intellectualsites.plotsquared plotsquared-core - 7.2.0 + 7.2.1 provided From 8a58bf673add4ec95ed5729fdfd81a3c12194394 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 9 Dec 2023 16:08:57 +0100 Subject: [PATCH 302/369] Update dependency org.openrewrite.maven:rewrite-maven-plugin to v5.15.4 (#383) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 80dd7be5..cb57ee1f 100644 --- a/pom.xml +++ b/pom.xml @@ -212,7 +212,7 @@ org.openrewrite.maven rewrite-maven-plugin - 5.15.2 + 5.15.4 org.openrewrite.java.migrate.UpgradeToJava17 From 7a81f60e58000b3f9c0ed770d21adb6173611eb8 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 9 Dec 2023 16:09:09 +0100 Subject: [PATCH 303/369] Update dependency org.openrewrite.recipe:rewrite-migrate-java to v2.4.2 (#384) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index cb57ee1f..329e2b0a 100644 --- a/pom.xml +++ b/pom.xml @@ -227,7 +227,7 @@ org.openrewrite.recipe rewrite-migrate-java - 2.4.1 + 2.4.2 From fc823829e8955a351fb6807ece5151677c80e802 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 21 Dec 2023 08:53:08 +0100 Subject: [PATCH 304/369] Update dependency com.github.angeschossen:LandsAPI to v6.42.8 (#396) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 329e2b0a..4407f88f 100644 --- a/pom.xml +++ b/pom.xml @@ -180,7 +180,7 @@ com.github.angeschossen LandsAPI - 6.42.0 + 6.42.8 provided From 334c24fda1f19a91eac4d9f97111f658d26d3548 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 21 Dec 2023 08:53:28 +0100 Subject: [PATCH 305/369] Update dependency org.apache.maven.plugins:maven-compiler-plugin to v3.12.0 (#395) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- API-Example-Plugin/pom.xml | 2 +- pom.xml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/API-Example-Plugin/pom.xml b/API-Example-Plugin/pom.xml index 6cb72d97..71a560e6 100644 --- a/API-Example-Plugin/pom.xml +++ b/API-Example-Plugin/pom.xml @@ -95,7 +95,7 @@ org.apache.maven.plugins maven-compiler-plugin - 3.11.0 + 3.12.0 17 17 diff --git a/pom.xml b/pom.xml index 4407f88f..efe8e3c2 100644 --- a/pom.xml +++ b/pom.xml @@ -257,7 +257,7 @@ org.apache.maven.plugins maven-compiler-plugin - 3.11.0 + 3.12.0 ${java.version} From cc79ebc332d3472c7ec58b294480c623819ce30f Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 21 Dec 2023 08:53:39 +0100 Subject: [PATCH 306/369] Bump actions/upload-artifact from 3.1.3 to 4.0.0 (#393) Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 3.1.3 to 4.0.0. - [Release notes](https://github.com/actions/upload-artifact/releases) - [Commits](https://github.com/actions/upload-artifact/compare/v3.1.3...v4.0.0) --- updated-dependencies: - dependency-name: actions/upload-artifact dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/maven-publish.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/maven-publish.yml b/.github/workflows/maven-publish.yml index 1445c90a..4db83226 100644 --- a/.github/workflows/maven-publish.yml +++ b/.github/workflows/maven-publish.yml @@ -56,7 +56,7 @@ jobs: #6 Upload Artifacts (Debug Purposes) - name: Upload Artifact for Debugging - uses: actions/upload-artifact@v3.1.3 + uses: actions/upload-artifact@v4.0.0 with: name: artifact path: /home/runner/work/ArmorStandEditor/ArmorStandEditor/target/armorstandeditor-*-*.jar From 729eea64a70717a7581da9fe7391fb3579b1e33a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 21 Dec 2023 08:54:05 +0100 Subject: [PATCH 307/369] Bump com.palmergames.bukkit.towny:towny from 0.100.0.8 to 0.100.0.9 (#392) Bumps [com.palmergames.bukkit.towny:towny](https://github.com/TownyAdvanced/Towny) from 0.100.0.8 to 0.100.0.9. - [Release notes](https://github.com/TownyAdvanced/Towny/releases) - [Commits](https://github.com/TownyAdvanced/Towny/compare/0.100.0.8...0.100.0.9) --- updated-dependencies: - dependency-name: com.palmergames.bukkit.towny:towny dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index efe8e3c2..94cec033 100644 --- a/pom.xml +++ b/pom.xml @@ -152,7 +152,7 @@ com.palmergames.bukkit.towny towny - 0.100.0.8 + 0.100.0.9 provided From 2227d3b28d2b49c80c3b1ff51f8ede73efadc090 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 21 Dec 2023 08:54:17 +0100 Subject: [PATCH 308/369] Bump org.openrewrite.maven:rewrite-maven-plugin from 5.15.4 to 5.16.0 (#391) Bumps [org.openrewrite.maven:rewrite-maven-plugin](https://github.com/openrewrite/rewrite-maven-plugin) from 5.15.4 to 5.16.0. - [Release notes](https://github.com/openrewrite/rewrite-maven-plugin/releases) - [Commits](https://github.com/openrewrite/rewrite-maven-plugin/compare/v5.15.4...v5.16.0) --- updated-dependencies: - dependency-name: org.openrewrite.maven:rewrite-maven-plugin dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 94cec033..cdbd7a20 100644 --- a/pom.xml +++ b/pom.xml @@ -212,7 +212,7 @@ org.openrewrite.maven rewrite-maven-plugin - 5.15.4 + 5.16.0 org.openrewrite.java.migrate.UpgradeToJava17 From 7b2ee3bbd8238add28190d4b120eb0a5afdff9c3 Mon Sep 17 00:00:00 2001 From: "Larry (Wolfieheart)" Date: Fri, 22 Dec 2023 09:30:02 +0100 Subject: [PATCH 309/369] [CORE] ArmorStandEditor v1.20.40-45 (#386) * [CORE] Bump to 1.20.4 Signed-off-by: Wolfieheart * [CORE] Fix an issue in BentoBoxProtection when using AOneBlock Signed-off-by: Wolfieheart * [CORE] Version Bump -45 Signed-off-by: Wolfieheart * [CORE] Initial Implementation - Preset Poses (NEW in 1.20.4-45) Signed-off-by: Wolfieheart * [CORE] Fix UI Issue where Cursor defailts to hanging over Gravity. Signed-off-by: Wolfieheart * [CORE] Resize and Add More Presets. - Also Update all the language Files to match. Signed-off-by: Wolfieheart * [CORE] Fix Copy Paste Error + Fix for Sand being auto clicked in UI Signed-off-by: Wolfieheart * [CORE] Lay the ground work for ASE 1.x.x-46 Signed-off-by: Wolfieheart * [CORE] Lay the ground work for ASE 1.x.x-46 Signed-off-by: Wolfieheart * [CORE] Final Patches for ASE 1.20.4-45 Signed-off-by: Wolfieheart * Revert "[CORE] Final Patches for ASE 1.20.4-45" This reverts commit c761a71d863be62a4cb423276e03604002a41c46. * [CORE] Final Patches for ASE 1.20.4-45 Signed-off-by: Wolfieheart * Update dependency com.github.angeschossen:LandsAPI to v6.42.8 (#396) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * Update dependency org.apache.maven.plugins:maven-compiler-plugin to v3.12.0 (#395) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * Bump actions/upload-artifact from 3.1.3 to 4.0.0 (#393) Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 3.1.3 to 4.0.0. - [Release notes](https://github.com/actions/upload-artifact/releases) - [Commits](https://github.com/actions/upload-artifact/compare/v3.1.3...v4.0.0) --- updated-dependencies: - dependency-name: actions/upload-artifact dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Bump com.palmergames.bukkit.towny:towny from 0.100.0.8 to 0.100.0.9 (#392) Bumps [com.palmergames.bukkit.towny:towny](https://github.com/TownyAdvanced/Towny) from 0.100.0.8 to 0.100.0.9. - [Release notes](https://github.com/TownyAdvanced/Towny/releases) - [Commits](https://github.com/TownyAdvanced/Towny/compare/0.100.0.8...0.100.0.9) --- updated-dependencies: - dependency-name: com.palmergames.bukkit.towny:towny dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Bump org.openrewrite.maven:rewrite-maven-plugin from 5.15.4 to 5.16.0 (#391) Bumps [org.openrewrite.maven:rewrite-maven-plugin](https://github.com/openrewrite/rewrite-maven-plugin) from 5.15.4 to 5.16.0. - [Release notes](https://github.com/openrewrite/rewrite-maven-plugin/releases) - [Commits](https://github.com/openrewrite/rewrite-maven-plugin/compare/v5.15.4...v5.16.0) --- updated-dependencies: - dependency-name: org.openrewrite.maven:rewrite-maven-plugin dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * [CORE] Bump to 1.20.4 Signed-off-by: Wolfieheart * [CORE] Fix an issue in BentoBoxProtection when using AOneBlock Signed-off-by: Wolfieheart * [CORE] Version Bump -45 Signed-off-by: Wolfieheart * [CORE] Initial Implementation - Preset Poses (NEW in 1.20.4-45) Signed-off-by: Wolfieheart * [CORE] Fix UI Issue where Cursor defailts to hanging over Gravity. Signed-off-by: Wolfieheart * [CORE] Resize and Add More Presets. - Also Update all the language Files to match. Signed-off-by: Wolfieheart * [CORE] Fix Copy Paste Error + Fix for Sand being auto clicked in UI Signed-off-by: Wolfieheart * [CORE] Lay the ground work for ASE 1.x.x-46 Signed-off-by: Wolfieheart * [CORE] Lay the ground work for ASE 1.x.x-46 Signed-off-by: Wolfieheart * [CORE] Final Patches for ASE 1.20.4-45 Signed-off-by: Wolfieheart * Revert "[CORE] Final Patches for ASE 1.20.4-45" This reverts commit c761a71d863be62a4cb423276e03604002a41c46. * [CORE] Final Patches for ASE 1.20.4-45 Signed-off-by: Wolfieheart --------- Signed-off-by: Wolfieheart Signed-off-by: dependabot[bot] Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- API-Example-Plugin/pom.xml | 4 +- pom.xml | 8 +- .../rypofalem/armorstandeditor/Metrics.java | 7 +- .../armorstandeditor/PlayerEditor.java | 15 +- .../armorstandeditor/PlayerEditorManager.java | 21 +- .../armorstandeditor/menu/ItemFactory.java | 130 +++++++ .../rypofalem/armorstandeditor/menu/Menu.java | 10 +- .../menu/PresetArmorPosesMenu.java | 264 ++++++++++++++ .../armorstandeditor/modes/EditMode.java | 9 +- .../protections/BentoBoxProtection.java | 45 ++- .../armorstandeditor/utils/Configuration.java | 78 +++++ src/main/resources/config.yml | 4 +- src/main/resources/lang/de_DE.yml | 68 +++- src/main/resources/lang/en_US.yml | 70 +++- src/main/resources/lang/es_ES.yml | 60 ++++ src/main/resources/lang/fr_FR.yml | 60 ++++ src/main/resources/lang/ja_JP.yml | 68 +++- src/main/resources/lang/nl_NL.yml | 66 ++++ src/main/resources/lang/pl_PL.yml | 66 ++++ src/main/resources/lang/pt_BR.yml | 68 +++- src/main/resources/lang/ro_RO.yml | 68 +++- src/main/resources/lang/ru_RU.yml | 66 ++++ src/main/resources/lang/test_NA.yml | 321 +++++++++++++----- src/main/resources/lang/uk_UA.yml | 66 ++++ src/main/resources/lang/zh_CN.yml | 66 ++++ src/main/resources/plugin.yml | 2 +- 26 files changed, 1589 insertions(+), 121 deletions(-) create mode 100644 src/main/java/io/github/rypofalem/armorstandeditor/menu/ItemFactory.java create mode 100644 src/main/java/io/github/rypofalem/armorstandeditor/menu/PresetArmorPosesMenu.java create mode 100644 src/main/java/io/github/rypofalem/armorstandeditor/utils/Configuration.java diff --git a/API-Example-Plugin/pom.xml b/API-Example-Plugin/pom.xml index 71a560e6..4e90681c 100644 --- a/API-Example-Plugin/pom.xml +++ b/API-Example-Plugin/pom.xml @@ -1,12 +1,12 @@ + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/maven-v4_0_0.xsd"> 4.0.0 io.github.rypofalem.apiexample armorstandeditor-apitest jar 1.20.1-43.2 armorstandeditor-apitest - http://maven.apache.org + s://maven.apache.org 17 diff --git a/pom.xml b/pom.xml index cdbd7a20..f742afee 100644 --- a/pom.xml +++ b/pom.xml @@ -1,12 +1,12 @@ + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/maven-v4_0_0.xsd"> 4.0.0 io.github.rypofalem.armorstandeditor armorstandeditor jar - 1.20.2-44.1 + 1.20.4-45 armorstandeditor - http://maven.apache.org + https://maven.apache.org 17 @@ -106,7 +106,7 @@ org.spigotmc spigot-api - 1.20.2-R0.1-SNAPSHOT + 1.20.4-R0.1-SNAPSHOT provided diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/Metrics.java b/src/main/java/io/github/rypofalem/armorstandeditor/Metrics.java index 8a3666bb..a842cfab 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/Metrics.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/Metrics.java @@ -4,15 +4,16 @@ * * IMPORTANT: You are not allowed to modify this class, except changing the package. * - * Unallowed modifications include but are not limited to: + * Disallowed modifications include but are not limited to: * - Remove the option for users to opt-out * - Change the frequency for data submission - * - Obfuscate the code (every obfucator should allow you to make an exception for specific files) + * - Obfuscate the code (every obfuscator should allow you to make an exception for specific files) * - Reformat the code (if you use a linter, add an exception) * * Violations will result in a ban of your plugin and account from bStats. */ package io.github.rypofalem.armorstandeditor; + import java.io.BufferedReader; import java.io.ByteArrayOutputStream; import java.io.DataOutputStream; @@ -877,4 +878,4 @@ public String toString() { } } } -} +} \ No newline at end of file diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditor.java b/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditor.java index 81c30121..9d26c0e7 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditor.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditor.java @@ -18,6 +18,7 @@ */ package io.github.rypofalem.armorstandeditor; +import io.github.rypofalem.armorstandeditor.menu.PresetArmorPosesMenu; import net.md_5.bungee.api.ChatMessageType; import net.md_5.bungee.api.chat.TextComponent; @@ -65,6 +66,7 @@ public class PlayerEditor { int targetIndex = 0; int frameTargetIndex = 0; EquipmentMenu equipMenu; + PresetArmorPosesMenu presetPoseMenu; long lastCancelled = 0; public PlayerEditor(UUID uuid, ArmorStandEditorPlugin plugin) { @@ -109,7 +111,7 @@ public void setCopySlot(byte slot) { } public void editArmorStand(ArmorStand armorStand) { - if (getPlayer().hasPermission("asedit.basic")) { + if (getPlayer().hasPermission("asedit.basic")) { armorStand = attemptTarget(armorStand); switch (eMode) { @@ -173,6 +175,9 @@ public void editArmorStand(ArmorStand armorStand) { case GLOWING: toggleGlowing(armorStand); break; + case PRESET: + choosePreset(armorStand); + break; case NONE: default: sendMessage("nomode", null); @@ -212,6 +217,12 @@ private void openEquipment(ArmorStand armorStand) { equipMenu.open(); } + private void choosePreset(ArmorStand armorStand){ + if (!getPlayer().hasPermission("asedit.basic")) return; + presetPoseMenu = new PresetArmorPosesMenu(this, armorStand); + presetPoseMenu.openMenu(); + } + public void reverseEditArmorStand(ArmorStand armorStand) { if (!getPlayer().hasPermission("asedit.basic")) return; @@ -518,6 +529,7 @@ private EulerAngle subEulerAngle(EulerAngle angle) { return angle; } + public void setTarget(ArrayList armorStands) { if (armorStands == null || armorStands.isEmpty()) { target = null; @@ -594,6 +606,7 @@ public void setFrameTarget(ArrayList itemFrames) { } + ArmorStand attemptTarget(ArmorStand armorStand) { if (target == null || !target.isValid() diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditorManager.java b/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditorManager.java index 9dfb5c14..aa341a88 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditorManager.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditorManager.java @@ -38,7 +38,6 @@ import org.bukkit.event.player.*; import org.bukkit.inventory.EquipmentSlot; import org.bukkit.inventory.ItemStack; -import org.bukkit.inventory.PlayerInventory; import org.bukkit.persistence.PersistentDataType; import org.bukkit.util.Vector; @@ -53,6 +52,7 @@ public class PlayerEditorManager implements Listener { private HashMap players; private ASEHolder menuHolder = new ASEHolder(); //Inventory holder that owns the main ase menu inventories for the plugin private ASEHolder equipmentHolder = new ASEHolder(); //Inventory holder that owns the equipment menu + private ASEHolder presetHolder = new ASEHolder(); //Inventory Holder that owns the PresetArmorStand Post Menu double coarseAdj; double fineAdj; double coarseMov; @@ -416,8 +416,21 @@ void onPlayerMenuSelect(InventoryClickEvent e) { e.setCancelled(true); } } + + if (e.getInventory().getHolder() == presetHolder){ + e.setCancelled(true); + ItemStack item = e.getCurrentItem(); + if(item != null && item.hasItemMeta()){ + Player player = (Player) e.getWhoClicked(); + String itemName = item.getItemMeta().getDisplayName(); + PlayerEditor pe = players.get(player.getUniqueId()); + pe.presetPoseMenu.handlePresetPose(itemName, player); + } + } } + + @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true) void onPlayerMenuClose(InventoryCloseEvent e) { if (e.getInventory().getHolder() == null) return; @@ -455,10 +468,16 @@ public ASEHolder getEquipmentHolder() { return equipmentHolder; } + public ASEHolder getPresetHolder() { + return presetHolder; + } + long getTime() { return counter.ticks; } + + class TickCounter implements Runnable { long ticks = 0; //I am optimistic diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/menu/ItemFactory.java b/src/main/java/io/github/rypofalem/armorstandeditor/menu/ItemFactory.java new file mode 100644 index 00000000..b91dd127 --- /dev/null +++ b/src/main/java/io/github/rypofalem/armorstandeditor/menu/ItemFactory.java @@ -0,0 +1,130 @@ +package io.github.rypofalem.armorstandeditor.menu; + +import com.mojang.authlib.GameProfile; +import com.mojang.authlib.properties.Property; +import org.bukkit.ChatColor; +import org.bukkit.Material; +import org.bukkit.configuration.ConfigurationSection; +import org.bukkit.enchantments.Enchantment; +import org.bukkit.inventory.Inventory; +import org.bukkit.inventory.ItemFlag; +import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.ItemMeta; +import org.bukkit.inventory.meta.PotionMeta; +import org.bukkit.inventory.meta.SkullMeta; +import org.bukkit.potion.PotionEffect; +import org.bukkit.potion.PotionEffectType; + +import java.lang.reflect.Field; +import java.util.Arrays; +import java.util.List; +import java.util.UUID; +import java.util.function.Function; +import java.util.stream.Collectors; + + +/* + * Currently not used but groundwork is now being laid for later + */ +public interface ItemFactory { + static ItemFactory getInstance() { + return new ItemFactory() {}; + } + + default ItemStack createItem(ConfigurationSection section, Inventory inventory, Function function) { + ItemStack itemStack = createItem(section, (Function) null, null); + if (itemStack == null || section == null) return itemStack; + + int slot = section.getInt("slot", -1); + if (slot != -1 && inventory != null) inventory.setItem(slot, function == null ? itemStack : function.apply(itemStack)); + return itemStack; + } + + default ItemStack createItem(ConfigurationSection section, Function nameReplacements, Function, List> loreReplacements) { + if (section == null) return null; // If the section is null, return null. + + String upper = section.getString( "material"); + if (upper == null) return null; + + Material material = Material.getMaterial(loreReplacements == null ? upper.toUpperCase() : nameReplacements.apply(upper)); // Get the material from the config. + if (material == null || material == Material.AIR) return null; // If the material is null or air, return null. + if (material == getSkullMaterial() && (section.getString("owner") != null || section.getString("texture") != null)) // If the material is a skull and the owner or texture is set, create a skull. + return createSkull(section, nameReplacements, loreReplacements); + + ItemStack itemStack = new ItemStack(material, section.getInt("amount", 1), (short) section.getInt("data")); // Create the item stack. + return addBaseItemMeta(itemStack, itemStack.getItemMeta(), section, nameReplacements, loreReplacements); // Add the base item meta. + } + + default ItemStack createSkull(ConfigurationSection section, Function nameReplacements, Function, List> loreReplacements) { + if (section == null) return null; + + ItemStack itemStack = new ItemStack(getSkullMaterial(), section.getInt("amount", 1), (short) section.getInt("data")); // Create the item stack. + return addBaseItemMeta(itemStack, applyBasicSkull(itemStack, section, nameReplacements), section, nameReplacements, loreReplacements); // Add the base item meta. + } + + default SkullMeta applyBasicSkull(ItemStack itemStack, ConfigurationSection section, Function nameReplacements) { + SkullMeta im = (SkullMeta) itemStack.getItemMeta(); // Get the item meta. + String owner = section.getString( "owner"); // Get the owner from the config. + if (owner == null) im.setOwner(nameReplacements == null ? owner : nameReplacements.apply(owner)); // If the owner is not empty, set the owner. + + String texture = section.getString("texture"); // Get the texture from the config. + if (texture == null) { + GameProfile profile = new GameProfile(UUID.randomUUID(), null); // Create a new game profile. + profile.getProperties().put("textures", new Property("textures", texture)); // Set the texture. + + try { + Field profileField = im.getClass().getDeclaredField("profile"); // Get the profile field. + profileField.setAccessible(true); // Set the field to accessible. + profileField.set(im, profile); // Set the profile. + } catch (Exception e) { + e.printStackTrace(); + } + } + return im; // Return the item meta. + } + + default ItemStack addBaseItemMeta(ItemStack itemStack, ItemMeta im, ConfigurationSection section, Function nameReplacements, Function, List> loreReplacements) { + if (section == null || itemStack.getAmount() <= 0) return null; // If the section is null or the amount is 0, return null. + + String name = ChatColor.translateAlternateColorCodes('&', section.getString("name")); // Get the name from the config. + im.setDisplayName((nameReplacements == null || name == null ? name : nameReplacements.apply(name))); // Set the display name. + + List lore = section.getStringList("lore"); // Get the lore from the config. + im.setLore((loreReplacements == null ? lore : loreReplacements.apply(lore).stream().flatMap(x -> Arrays.stream(x.split("\n"))).toList()).stream().map(x -> ChatColor.translateAlternateColorCodes('&', x)).collect(Collectors.toList())); // Set the lore. + + if (section.getBoolean("glowing")) { // If the item is glowing, + im.addEnchant(Enchantment.DURABILITY, 1, true); // Add the durability enchantment. + try { + im.addItemFlags(ItemFlag.HIDE_ENCHANTS); // Add the hide enchants flag. + } catch (NoClassDefFoundError ignored) { + } + } + try { + section.getStringList("item-flags").forEach(x -> im.addItemFlags(ItemFlag.valueOf(x))); // Add the item flags. + } catch (NoClassDefFoundError ignored) { + } + try { + section.getStringList("enchantments").forEach(x -> im.addEnchant(Enchantment.getByName(x.split(":")[0].toUpperCase()), Integer.parseInt(x.split(":")[1]), true)); // Add the enchantments. + } catch (NoClassDefFoundError ignored) { + } + try { + int customModelData = section.getInt("custom-model-data", -1); // Get the custom model data. + if (customModelData != -1) im.setCustomModelData(customModelData); // Set the custom model data. + } catch (Throwable ignored) {} + + if (im instanceof PotionMeta) { + try { + PotionEffect effect = new PotionEffect(PotionEffectType.getByName(section.getString("effect")), section.getInt("duration"), section.getInt("amplifier")); + ((PotionMeta) im).addCustomEffect(effect, true); + } catch (Throwable ignored) {} + } + itemStack.setItemMeta(im); // Set the item meta. + return itemStack; // Return the item stack. + } + + default Material getSkullMaterial() { + Material icon = Material.getMaterial("PLAYER_HEAD"); // Get the player head material. + if (icon == null) return Material.getMaterial("SKULL_ITEM"); // If the player head material is null, get the skull item material. + return icon; + } +} diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/menu/Menu.java b/src/main/java/io/github/rypofalem/armorstandeditor/menu/Menu.java index 5db9d701..85478910 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/menu/Menu.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/menu/Menu.java @@ -78,6 +78,7 @@ private void fillInventory() { ItemStack help; ItemStack itemFrameVisible; ItemStack blankSlot; + ItemStack presetItem = null; //Variables that need to be Initialized ItemStack place = null; @@ -134,6 +135,8 @@ private void fillInventory() { showArms = createIcon(new ItemStack(Material.STICK), "showarms", "mode showarms"); + presetItem = createIcon(new ItemStack(Material.BOOKSHELF), "presetmenu", "mode preset"); + //Praise Start - Sikatsu and cowgod, Nicely spotted this being broken if (pe.getPlayer().hasPermission("asedit.togglearmorstandvisibility") || pe.plugin.getArmorStandVisibility()) { @@ -236,16 +239,17 @@ private void fillInventory() { help = createIcon(new ItemStack(Material.NETHER_STAR), "helpgui", "help"); + ItemStack[] items ={ - ItemStack[] items = { blankSlot, blankSlot, blankSlot, xAxis, yAxis, zAxis, blankSlot, blankSlot, help, copy, paste, blankSlot, playerHead, headPos, reset, blankSlot, itemFrameVisible, glowing, slot1, slot2, blankSlot, rightArmPos, bodyPos, leftArmPos, blankSlot, rotate, place, slot3, slot4, blankSlot, rightLegPos, equipment, leftLegPos, blankSlot, coarseAdj, fineAdj, - blankSlot, blankSlot, blankSlot, blankSlot, blankSlot, blankSlot, blankSlot, blankSlot, blankSlot, - blankSlot, showArms, visibility, size, gravity, plate, toggleVulnerabilty, disableSlots, blankSlot + presetItem, blankSlot, blankSlot, blankSlot, blankSlot, blankSlot, blankSlot, blankSlot, disableSlots, + blankSlot, showArms, visibility, size, blankSlot, plate, toggleVulnerabilty, gravity, blankSlot }; + menuInv.setContents(items); } diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/menu/PresetArmorPosesMenu.java b/src/main/java/io/github/rypofalem/armorstandeditor/menu/PresetArmorPosesMenu.java new file mode 100644 index 00000000..80c808bb --- /dev/null +++ b/src/main/java/io/github/rypofalem/armorstandeditor/menu/PresetArmorPosesMenu.java @@ -0,0 +1,264 @@ +/* + * ArmorStandEditor: Bukkit plugin to allow editing armor stand attributes + * Copyright (C) 2016-2023 RypoFalem + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +package io.github.rypofalem.armorstandeditor.menu; + +import io.github.rypofalem.armorstandeditor.PlayerEditor; +import org.bukkit.Bukkit; +import org.bukkit.Material; +import org.bukkit.Sound; +import org.bukkit.entity.ArmorStand; +import org.bukkit.entity.Entity; +import org.bukkit.entity.Player; +import org.bukkit.inventory.Inventory; +import org.bukkit.inventory.ItemFlag; +import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.ItemMeta; +import org.bukkit.util.EulerAngle; + +import java.util.ArrayList; + +public class PresetArmorPosesMenu { + + Inventory menuInv; + private PlayerEditor pe; + private ArmorStand armorstand; + static String name; + + //PRESET NAMES + final String SITTING = "§2§nSitting"; + final String WAVING = "§2§nWaving"; + final String GREETING_1 = "§2§nGreeting 1"; + final String GREETING_2 = "§2§nGreeting 2"; + final String CHEERS = "§2§nCheers"; + final String ARCHER = "§2§nArcher"; + final String DANCING = "§2§nDancing"; + final String HANG = "§2§nHanging"; + final String PRESENT = "§2§nPresent"; + final String FISHING = "§2§nFishing"; + + //Menu Stuff + final String BACKTOMENU = "§2§nBack to Menu"; + final String HOWTO = "§2§nHow To"; + + public PresetArmorPosesMenu(PlayerEditor pe, ArmorStand as){ + this.pe = pe; + this.armorstand = as; + name = pe.plugin.getLang().getMessage("presettitle","menutitle"); + menuInv = Bukkit.createInventory(pe.getManager().getPresetHolder(), 36, name); + } + + private void fillInventory(){ + menuInv.clear(); + + /** + * Menu Set up in a similar way as to how we do it for + * the actual ArmorStand menu + */ + + //Blank Slots + ItemStack blank = createIcon(new ItemStack(Material.BLACK_STAINED_GLASS_PANE, 1), "blankslot"); + + //Presets -- Here to test things out, will get better names soon TM + ItemStack sitting = createIcon(new ItemStack(Material.ARMOR_STAND, 1), "sitting"); + ItemStack waving = createIcon(new ItemStack(Material.ARMOR_STAND, 2), "waving"); + ItemStack greet1 = createIcon(new ItemStack(Material.ARMOR_STAND, 3), "greeting 1"); + ItemStack greet2 = createIcon(new ItemStack(Material.ARMOR_STAND, 4), "greeting 2"); + ItemStack cheer = createIcon(new ItemStack(Material.ARMOR_STAND, 5), "cheers"); + ItemStack archer = createIcon(new ItemStack(Material.ARMOR_STAND, 6), "archer"); + ItemStack dancing = createIcon(new ItemStack(Material.ARMOR_STAND, 7), "dancing"); + ItemStack hanging = createIcon(new ItemStack(Material.ARMOR_STAND, 8), "hanging"); + ItemStack present = createIcon(new ItemStack(Material.ARMOR_STAND, 9), "present"); + ItemStack fishing = createIcon(new ItemStack(Material.ARMOR_STAND, 10), "fishing"); + + //Utilities + ItemStack backToMenu = createIcon(new ItemStack(Material.RED_WOOL, 1), "backtomenu"); + ItemStack howToPreset = createIcon(new ItemStack(Material.BOOK, 1), "howtopreset"); + + //Build for the Menu ---- DO NOT MODIFY THIS UNLESS YOU KNOW WHAT YOU ARE DOING! + ItemStack[] items = { + blank, blank, blank, blank, blank, blank, blank, blank, blank, + blank, backToMenu, sitting, waving, greet1, greet2, cheer, archer, blank, + blank, howToPreset, dancing, hanging, present, fishing, blank, blank, blank, + blank, blank, blank, blank, blank, blank, blank, blank, blank + }; + + menuInv.setContents(items); + } + + private ItemStack createIcon(ItemStack icon, String path) { + ItemMeta meta = icon.getItemMeta(); + assert meta != null; + meta.setDisplayName(getIconName(path)); + ArrayList loreList = new ArrayList<>(); + loreList.add(getIconDescription(path)); + meta.setLore(loreList); + meta.addItemFlags(ItemFlag.HIDE_ATTRIBUTES); + meta.addItemFlags(ItemFlag.HIDE_POTION_EFFECTS); + icon.setItemMeta(meta); + return icon; + } + + private String getIconName(String path) { + return pe.plugin.getLang().getMessage(path, "iconname"); + } + + private String getIconDescription(String path) { + return pe.plugin.getLang().getMessage(path + ".description", "icondescription"); + } + + public void openMenu() { + if (pe.getPlayer().hasPermission("asedit.basic")) { + fillInventory(); + pe.getPlayer().openInventory(menuInv); + } + } + + public static String getName() { + return name; + } + + public void handlePresetPose(String itemName, Player player) { + if(itemName == null) return; + if(player == null) return; + switch (itemName) { + case SITTING: + setPresetPose(player, 345, 0, 10, 350, 0, 350, 280, 20, 0, 280, 340, 0, 0, 0, 0, 0, 0, 0); + player.playSound(player.getLocation(), Sound.BLOCK_COMPARATOR_CLICK, 1, 1); + player.closeInventory(); + break; + case WAVING: + setPresetPose(player, 220, 20, 0, 350, 0, 350, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); + player.playSound(player.getLocation(), Sound.BLOCK_COMPARATOR_CLICK, 1, 1); + player.closeInventory(); + break; + case GREETING_1: + setPresetPose(player, 260, 20, 0, 260, 340, 0, 340, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0); + player.playSound(player.getLocation(), Sound.BLOCK_COMPARATOR_CLICK, 1, 1); + player.closeInventory(); + break; + case GREETING_2: + setPresetPose(player, 260, 10, 0, 260, 350, 0, 320, 0, 0, 10, 0, 0, 340, 0, 350, 0, 0, 0); + player.playSound(player.getLocation(), Sound.BLOCK_COMPARATOR_CLICK, 1, 1); + player.closeInventory(); + break; + case CHEERS: + setPresetPose(player, 250, 60, 0, 20, 10, 0, 10, 0, 0, 350, 0, 0, 340, 0, 0, 0, 0, 0); + player.playSound(player.getLocation(), Sound.BLOCK_COMPARATOR_CLICK, 1, 1); + player.closeInventory(); + break; + case ARCHER: + setPresetPose(player, 270, 350, 0, 280, 50, 0, 340, 0, 10, 20, 0, 350, 0, 0, 0, 0, 0, 0); + player.playSound(player.getLocation(), Sound.BLOCK_COMPARATOR_CLICK, 1, 1); + player.closeInventory(); + break; + case DANCING: + setPresetPose(player, 14, 0, 110, 20, 0, 250, 250, 330, 0, 15, 330, 0, 350, 350, 0, 0, 0, 0); + player.playSound(player.getLocation(), Sound.BLOCK_COMPARATOR_CLICK, 1, 1); + player.closeInventory(); + break; + case HANG: + setPresetPose(player, 1, 33, 67, -145, -33, -4, -42, 21, 1, -100, 0, -1, -29, -38, -18, 0, -4, 0); + player.playSound(player.getLocation(), Sound.BLOCK_COMPARATOR_CLICK, 1, 1); + player.closeInventory(); + break; + case PRESENT: + setPresetPose(player, 280, 330, 0, 10, 0, 350, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); + player.playSound(player.getLocation(), Sound.BLOCK_COMPARATOR_CLICK, 1, 1); + player.closeInventory(); + break; + case FISHING: + setPresetPose(player, 300, 320, 0, 300, 40, 0, 280, 20, 0, 280, 340, 0, 0, 0, 0, 0, 0, 0); + player.playSound(player.getLocation(), Sound.BLOCK_COMPARATOR_CLICK, 1, 1); + player.closeInventory(); + break; + case BACKTOMENU: + player.playSound(player.getLocation(), Sound.BLOCK_COMPARATOR_CLICK, 1, 1); + player.closeInventory(); + pe.openMenu(); + break; + case HOWTO: + player.sendMessage(pe.plugin.getLang().getMessage("howtopresetmsg")); + player.sendMessage(pe.plugin.getLang().getMessage("helpurl")); + player.sendMessage(pe.plugin.getLang().getMessage("helpdiscord")); + player.playSound(player.getLocation(), Sound.BLOCK_COMPARATOR_CLICK, 1, 1); + player.closeInventory(); + break; + } + } + + public void setPresetPose(Player player, double rightArmRoll, double rightArmYaw, double rightArmPitch, + double leftArmRoll, double leftArmYaw, double leftArmPitch, + double rightLegRoll, double rightLegYaw, double rightLegPitch, + double leftLegRoll, double LeftLegYaw, double llp_yaw, + double headRoll, double headYaw, double headPitch, + double bodyRoll, double bodyYaw, double bodyPitch){ + + for (Entity theArmorStand : player.getNearbyEntities(1, 1, 1)) { + if (theArmorStand instanceof ArmorStand armorStand) { + if(!player.hasPermission("asedit.basic")) return; + + //Do the right positions based on what is given + rightArmRoll = Math.toRadians(rightArmRoll); + rightArmYaw = Math.toRadians(rightArmYaw); + rightArmPitch = Math.toRadians(rightArmPitch); + EulerAngle rightArmEulerAngle = new EulerAngle(rightArmRoll, rightArmYaw, rightArmPitch); + armorStand.setRightArmPose(rightArmEulerAngle); + + // Calculate and set left arm settings + leftArmRoll = Math.toRadians(leftArmRoll); + leftArmYaw = Math.toRadians(leftArmYaw); + leftArmPitch = Math.toRadians(leftArmPitch); + EulerAngle leftArmEulerAngle = new EulerAngle(leftArmRoll, leftArmYaw, leftArmPitch); + armorStand.setLeftArmPose(leftArmEulerAngle); + + // Calculate and set right leg settings + rightLegRoll = Math.toRadians(rightLegRoll); + rightLegYaw = Math.toRadians(rightLegYaw); + rightLegPitch = Math.toRadians(rightLegPitch); + EulerAngle rightLegEulerAngle = new EulerAngle(rightLegRoll, rightLegYaw, rightLegPitch); + armorStand.setRightLegPose(rightLegEulerAngle); + + // Calculate and set left leg settings + leftLegRoll = Math.toRadians(leftLegRoll); + LeftLegYaw = Math.toRadians(LeftLegYaw); + llp_yaw = Math.toRadians(llp_yaw); + EulerAngle leftLegEulerAngle = new EulerAngle(leftLegRoll, LeftLegYaw, llp_yaw); + armorStand.setLeftLegPose(leftLegEulerAngle); + + // Calculate and set body settings + bodyRoll = Math.toRadians(bodyRoll); + bodyYaw = Math.toRadians(bodyYaw); + bodyPitch = Math.toRadians(bodyPitch); + EulerAngle bodyEulerAngle = new EulerAngle(bodyRoll, bodyYaw, bodyPitch); + armorStand.setBodyPose(bodyEulerAngle); + + // Calculate and set head settings + headRoll = Math.toRadians(headRoll); + headYaw = Math.toRadians(headYaw); + headPitch = Math.toRadians(headPitch); + EulerAngle headEulerAngle = new EulerAngle(headRoll, headYaw, headPitch); + armorStand.setHeadPose(headEulerAngle); + } + } + + + } + +} diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/modes/EditMode.java b/src/main/java/io/github/rypofalem/armorstandeditor/modes/EditMode.java index 00f3488c..f1a77bb3 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/modes/EditMode.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/modes/EditMode.java @@ -20,10 +20,11 @@ package io.github.rypofalem.armorstandeditor.modes; public enum EditMode { - NONE("None"), INVISIBLE("Invisible"), SHOWARMS("ShowArms"), GRAVITY("Gravity"), BASEPLATE("BasePlate"), SIZE("Size"), COPY("Copy"), PASTE("Paste"), - HEAD("Head"), BODY("Body"), LEFTARM("LeftArm"), RIGHTARM("RightArm"), LEFTLEG("LeftLeg"), RIGHTLEG("RightLeg"), - PLACEMENT("Placement"), DISABLESLOTS("DisableSlots"), ROTATE("Rotate"), EQUIPMENT("Equipment"), RESET("Reset"), ITEMFRAME("ItemFrame"), ITEMFRAMEGLOW("ItemFrameGlow"), - VULNERABILITY("Vulnerability"), PLAYERHEAD("playerheadmenu"), GLOWING("armorstandglow"); + NONE("None"), INVISIBLE("Invisible"), SHOWARMS("ShowArms"), GRAVITY("Gravity"), BASEPLATE("BasePlate"), SIZE("Size"), + COPY("Copy"), PASTE("Paste"), HEAD("Head"), BODY("Body"), LEFTARM("LeftArm"), RIGHTARM("RightArm"), LEFTLEG("LeftLeg"), + RIGHTLEG("RightLeg"), PLACEMENT("Placement"), DISABLESLOTS("DisableSlots"), ROTATE("Rotate"), EQUIPMENT("Equipment"), PRESET("Preset"), + RESET("Reset"), ITEMFRAME("ItemFrame"), ITEMFRAMEGLOW("ItemFrameGlow"), VULNERABILITY("Vulnerability"), PLAYERHEAD("playerheadmenu"), + GLOWING("armorstandglow"); private String name; diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/protections/BentoBoxProtection.java b/src/main/java/io/github/rypofalem/armorstandeditor/protections/BentoBoxProtection.java index 1c78b52b..9940484c 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/protections/BentoBoxProtection.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/protections/BentoBoxProtection.java @@ -26,15 +26,20 @@ import world.bentobox.bentobox.managers.AddonsManager; import world.bentobox.bentobox.managers.IslandsManager; +import io.github.rypofalem.armorstandeditor.ArmorStandEditorPlugin; + import org.bukkit.Bukkit; import org.bukkit.block.Block; import org.bukkit.entity.Player; import java.util.Optional; +import java.util.logging.Level; public class BentoBoxProtection implements Protection { private final boolean bentoEnabled; + private boolean bSkyBlockEnabled; + private boolean aOneBlockEnabled; public BentoBoxProtection() { @@ -44,8 +49,8 @@ public BentoBoxProtection() { @Override public boolean checkPermission(Block block, Player player) { if (!bentoEnabled || player.isOp() || - player.hasPermission("asedit.ignoreProtection.bentobox") || - player.hasPermission("bentobox.admin")) return true; + player.hasPermission("asedit.ignoreProtection.bentobox") || + player.hasPermission("bentobox.admin")) return true; //Get the Bento Instance BentoBox myBento = BentoBox.getInstance(); @@ -56,21 +61,35 @@ public boolean checkPermission(Block block, Player player) { AddonsManager addonsManager = myBento.getAddonsManager(); //Check first if BSkyblock is enabled or if the Player is Owner of that Island - if (addonsManager.getAddonByName("BSkyblock").isEmpty()) return true; + bSkyBlockEnabled = addonsManager.getAddonByName("BSkyblock").isPresent(); + aOneBlockEnabled = addonsManager.getAddonByName("AOneBlock").isPresent(); + //Logging for Debug - NOTE will trigger each time an edit is done + + if(ArmorStandEditorPlugin.instance().isDebug()) { + if (bSkyBlockEnabled && !aOneBlockEnabled) { + Bukkit.getServer().getLogger().log(Level.INFO, "[ArmorStandEditor] BentoBox Protection for ASE is looking at: BSkyBlock."); + } + if (aOneBlockEnabled && !bSkyBlockEnabled) { + Bukkit.getServer().getLogger().log(Level.INFO, "[ArmorStandEditor] BentoBox Protection for ASE is looking at: AOneBlock."); + } + if(!bSkyBlockEnabled && !aOneBlockEnabled){ + Bukkit.getServer().getLogger().log(Level.INFO, "[ArmorStandEditor] BentoBox Protection is currently not using anything. This will automatically allow edits."); + } + } + - //Get the Location of the ArmorStand - Optional islandOptional = islandsManager.getIslandAt(block.getLocation()); + if(!bSkyBlockEnabled && !aOneBlockEnabled){ + return true; + } else{ + Optional islandOptional = islandsManager.getIslandAt(block.getLocation()); - //If there are no Islands Present - if (islandOptional.isEmpty()) return true; + if (islandOptional.isEmpty()) return true; - //Do not run this check if the player is the owner of the island - if (islandsManager.isOwner(player.getWorld(), player.getUniqueId())) return true; + if (islandsManager.isOwner(block.getWorld(), player.getUniqueId())) return true; - //Get the Island from the Island Optional - Island theIsland = islandOptional.get(); + Island theIsland = islandOptional.get(); - //Return if that User isAllowed to break blocks on that Land - return theIsland.isAllowed(User.getInstance(player), Flags.BREAK_BLOCKS); + return theIsland.isAllowed(User.getInstance(player), Flags.BREAK_BLOCKS); + } } } diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/utils/Configuration.java b/src/main/java/io/github/rypofalem/armorstandeditor/utils/Configuration.java new file mode 100644 index 00000000..3ae573d1 --- /dev/null +++ b/src/main/java/io/github/rypofalem/armorstandeditor/utils/Configuration.java @@ -0,0 +1,78 @@ +package io.github.rypofalem.armorstandeditor.utils; + +import io.github.rypofalem.armorstandeditor.ArmorStandEditorPlugin; +import io.github.rypofalem.armorstandeditor.language.Language; +import org.bukkit.ChatColor; +import org.bukkit.configuration.ConfigurationSection; +import org.bukkit.configuration.file.FileConfiguration; +import org.bukkit.configuration.file.YamlConfiguration; + +import java.io.File; +import java.lang.reflect.Field; + +/* +* Currently not used but groundwork is now being laid for later +*/ +public class Configuration { + + private static String languageFolderLocation = "lang/"; + private final ArmorStandEditorPlugin plugin; + private static FileConfiguration config; + private static FileConfiguration gui; + private Language lang; + + public Configuration(ArmorStandEditorPlugin plugin) { + this.plugin = plugin; + } + + public void load() { + try { + File dataFolder = plugin.getDataFolder(); + load(new File(dataFolder, "config.yml"), getClass().getDeclaredField("config")); + load(new File(dataFolder, "guis.yml"), getClass().getDeclaredField("gui")); + lang = new Language(Configuration.getConfig().getString("lang"), plugin); + } catch (Exception ex) { + ex.printStackTrace(); + } + } + + private void load(File file, Field field) throws Exception { + if (!file.getParentFile().exists()) { + file.getParentFile().mkdirs(); + } + if (!file.exists()) { + plugin.saveResource(file.getName(), false); + } + field.set(null, YamlConfiguration.loadConfiguration(file)); + } + + public static FileConfiguration getConfig() { + return config; + } + + public static FileConfiguration getGUI() { + return gui; + } + + public static String getLanguageFolderLocation() { + return languageFolderLocation; + } + + public static String getString(ConfigurationSection section, String s) { + if (section == null) return ""; + + return section.getString(s, ""); + } + + public static String getString(YamlConfiguration config, String s) { + return config.getString(s, ""); + } + + public Language getLang() { + return lang; + } + + public static String color(String s){ + return ChatColor.translateAlternateColorCodes('&', s); + } +} \ No newline at end of file diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml index 64893269..02265bc8 100644 --- a/src/main/resources/config.yml +++ b/src/main/resources/config.yml @@ -3,7 +3,7 @@ #-----------------------------# #DO NOT CHANGE THIS - CHANGES AUTOMATICALLY PER UPDATE -version: "1.20.2-44.1" +version: "1.20.4-45" #----------- LANGUAGE #Name of the language file you wish to use @@ -103,5 +103,5 @@ allowedToRetrievePlayerHead: false adminOnlyNotifications: false #Debug Mode - For Development and Support Purposes ONLY! -# Do Not Enable. Will Generate ALOT OF NOISE in your Log Files +# --- Do Not Enable. Will Generate ALOT OF NOISE in your Log Files debugFlag: false diff --git a/src/main/resources/lang/de_DE.yml b/src/main/resources/lang/de_DE.yml index be6b04ee..9c7a283a 100644 --- a/src/main/resources/lang/de_DE.yml +++ b/src/main/resources/lang/de_DE.yml @@ -287,4 +287,70 @@ equipslot: pants: Hose boots: Schuhe rhand: Rechte Hand - lhand: Linke Hand \ No newline at end of file + lhand: Linke Hand + +#all things related to Presets +presetmenu: + msg: Preset Poses + description: + msg: Use a Preset Pose for your ArmorStand [Will Open another Menu] + +#icons (Preset Menu) +sitting: + msg: Sitting + description: + msg: Time to sit back and relax. +waving: + msg: Waving + description: + msg: Hey, Over here! +greeting 1: + msg: Greeting 1 + description: + msg: Greetings, I am your Armor Stand. +greeting 2: + msg: Greeting 2 + description: + msg: Oh Hey there, I am your Armor Stand. +archer: + msg: Archer + description: + msg: Watch out, your Armor Stand is about to shoot you :O +dancing: + msg: Dancing + description: + msg: Hey there, would you like a dance? +cheers: + msg: Cheers + description: + msg: Lets Cheers to this! +hanging: + msg: Hanging + description: + msg: Time to hang onto this mountain like our life depended on it. +present: + msg: Present + description: + msg: Your ArmorStand has a present for you <3 +fishing: + msg: Fishing + description: + msg: Time yo go on a fishing trip + +#Help for Presets +backtomenu: + msg: Back to Menu + description: + msg: Click me to go back to the main menu +howtopreset: + msg: How To + description: + msg: A short message on how to use presets. +howtopresetmsg: + msg: "1. Hold the editing tool in your main hand + + 2. Open the Menu with Preset Mode Active. + + 3. Choose one of the Armor Stand Presets that you want to select. + + 4. After choosing, your menu will close and your chosen preset will be applied. " diff --git a/src/main/resources/lang/en_US.yml b/src/main/resources/lang/en_US.yml index 5a0e6153..69c1e635 100644 --- a/src/main/resources/lang/en_US.yml +++ b/src/main/resources/lang/en_US.yml @@ -160,6 +160,8 @@ mainmenutitle: msg: Armor Stand Editor Menu equiptitle: msg: ArmorStand Equipment +presettitle: + msg: Pre-Set ArmorStand Poses #icons xaxis: @@ -301,4 +303,70 @@ equipslot: pants: Pants boots: Feetsies rhand: Right Hand - lhand: Left Hand \ No newline at end of file + lhand: Left Hand + +#all things related to Presets +presetmenu: + msg: Preset Poses + description: + msg: Use a Preset Pose for your ArmorStand [Will Open another Menu] + +#icons (Preset Menu) +sitting: + msg: Sitting + description: + msg: Time to sit back and relax. +waving: + msg: Waving + description: + msg: Hey, Over here! +greeting 1: + msg: Greeting 1 + description: + msg: Greetings, I am your Armor Stand. +greeting 2: + msg: Greeting 2 + description: + msg: Oh Hey there, I am your Armor Stand. +archer: + msg: Archer + description: + msg: Watch out, your Armor Stand is about to shoot you :O +dancing: + msg: Dancing + description: + msg: Hey there, would you like a dance? +cheers: + msg: Cheers + description: + msg: Lets Cheers to this! +hanging: + msg: Hanging + description: + msg: Time to hang onto this mountain like our life depended on it. +present: + msg: Present + description: + msg: Your ArmorStand has a present for you <3 +fishing: + msg: Fishing + description: + msg: Time yo go on a fishing trip + +#Help for Presets +backtomenu: + msg: Back to Menu + description: + msg: Click me to go back to the main menu +howtopreset: + msg: How To + description: + msg: A short message on how to use presets. +howtopresetmsg: + msg: "1. Hold the editing tool in your main hand + + 2. Open the Menu with Preset Mode Active. + + 3. Choose one of the Armor Stand Presets that you want to select. + + 4. After choosing, your menu will close and your chosen preset will be applied. " diff --git a/src/main/resources/lang/es_ES.yml b/src/main/resources/lang/es_ES.yml index 4e66c87e..2069779d 100644 --- a/src/main/resources/lang/es_ES.yml +++ b/src/main/resources/lang/es_ES.yml @@ -285,3 +285,63 @@ equipslot: boots: Pies rhand: Mano derecha lhand: Mano izquierda + +#icons (Preset Menu) +sitting: + msg: Sitting + description: + msg: Time to sit back and relax. +waving: + msg: Waving + description: + msg: Hey, Over here! +greeting 1: + msg: Greeting 1 + description: + msg: Greetings, I am your Armor Stand. +greeting 2: + msg: Greeting 2 + description: + msg: Oh Hey there, I am your Armor Stand. +archer: + msg: Archer + description: + msg: Watch out, your Armor Stand is about to shoot you :O +dancing: + msg: Dancing + description: + msg: Hy there, would you like a dance? +cheers: + msg: Cheers + description: + msg: Lets Cheers to this! +hanging: + msg: Hanging + description: + msg: Time to hang onto this mountain like our life depended on it. +presenting: + msg: Present + description: + msg: Your ArmorStand has a present for you <3 +fishing: + msg: Fishing + description: + msg: Time yo go on a fishing trip + +#Help for Presets +backtomenu: + msg: Back to Menu + description: + msg: Click me to go back to the main menu +howtopreset: + msg: How To + description: + msg: A short message on how to use presets. +howtopresetmsg: + msg: "1. Hold the editing tool in your main hand + + 2. Open the Menu with Preset Mode Active. + + 3. Choose one of the Armor Stand Presets that you want to select. + + 4. After choosing, your menu will close and your chosen preset will be applied. " \ No newline at end of file diff --git a/src/main/resources/lang/fr_FR.yml b/src/main/resources/lang/fr_FR.yml index f0f96185..a720970d 100644 --- a/src/main/resources/lang/fr_FR.yml +++ b/src/main/resources/lang/fr_FR.yml @@ -291,3 +291,63 @@ equipslot: boots: bottes rhand: éléments dans la main droite lhand: éléments dans la main gauche + +#icons (Preset Menu) +sitting: + msg: Sitting + description: + msg: Time to sit back and relax. +waving: + msg: Waving + description: + msg: Hey, Over here! +greeting 1: + msg: Greeting 1 + description: + msg: Greetings, I am your Armor Stand. +greeting 2: + msg: Greeting 2 + description: + msg: Oh Hey there, I am your Armor Stand. +archer: + msg: Archer + description: + msg: Watch out, your Armor Stand is about to shoot you :O +dancing: + msg: Dancing + description: + msg: Hy there, would you like a dance? +cheers: + msg: Cheers + description: + msg: Lets Cheers to this! +hanging: + msg: Hanging + description: + msg: Time to hang onto this mountain like our life depended on it. +presenting: + msg: Present + description: + msg: Your ArmorStand has a present for you <3 +fishing: + msg: Fishing + description: + msg: Time yo go on a fishing trip + +#Help for Presets +backtomenu: + msg: Back to Menu + description: + msg: Click me to go back to the main menu +howtopreset: + msg: How To + description: + msg: A short message on how to use presets. +howtopresetmsg: + msg: "1. Hold the editing tool in your main hand + + 2. Open the Menu with Preset Mode Active. + + 3. Choose one of the Armor Stand Presets that you want to select. + + 4. After choosing, your menu will close and your chosen preset will be applied. " \ No newline at end of file diff --git a/src/main/resources/lang/ja_JP.yml b/src/main/resources/lang/ja_JP.yml index fcdc6393..b2f68f30 100644 --- a/src/main/resources/lang/ja_JP.yml +++ b/src/main/resources/lang/ja_JP.yml @@ -284,4 +284,70 @@ equipslot: pants: レギンス boots: ブーツ rhand: 右手 - lhand: 左手 \ No newline at end of file + lhand: 左手 + +#all things related to Presets +presetmenu: + msg: Preset Poses + description: + msg: Use a Preset Pose for your ArmorStand [Will Open another Menu] + +#icons (Preset Menu) +sitting: + msg: Sitting + description: + msg: Time to sit back and relax. +waving: + msg: Waving + description: + msg: Hey, Over here! +greeting 1: + msg: Greeting 1 + description: + msg: Greetings, I am your Armor Stand. +greeting 2: + msg: Greeting 2 + description: + msg: Oh Hey there, I am your Armor Stand. +archer: + msg: Archer + description: + msg: Watch out, your Armor Stand is about to shoot you :O +dancing: + msg: Dancing + description: + msg: Hey there, would you like a dance? +cheers: + msg: Cheers + description: + msg: Lets Cheers to this! +hanging: + msg: Hanging + description: + msg: Time to hang onto this mountain like our life depended on it. +present: + msg: Present + description: + msg: Your ArmorStand has a present for you <3 +fishing: + msg: Fishing + description: + msg: Time yo go on a fishing trip + +#Help for Presets +backtomenu: + msg: Back to Menu + description: + msg: Click me to go back to the main menu +howtopreset: + msg: How To + description: + msg: A short message on how to use presets. +howtopresetmsg: + msg: "1. Hold the editing tool in your main hand + + 2. Open the Menu with Preset Mode Active. + + 3. Choose one of the Armor Stand Presets that you want to select. + + 4. After choosing, your menu will close and your chosen preset will be applied. " diff --git a/src/main/resources/lang/nl_NL.yml b/src/main/resources/lang/nl_NL.yml index 183b66cf..3749e28e 100644 --- a/src/main/resources/lang/nl_NL.yml +++ b/src/main/resources/lang/nl_NL.yml @@ -285,3 +285,69 @@ equipslot: boots: Laarzen rhand: Rechterhand lhand: Linkerhand + +#all things related to Presets +presetmenu: + msg: Preset Poses + description: + msg: Use a Preset Pose for your ArmorStand [Will Open another Menu] + +#icons (Preset Menu) +sitting: + msg: Sitting + description: + msg: Time to sit back and relax. +waving: + msg: Waving + description: + msg: Hey, Over here! +greeting 1: + msg: Greeting 1 + description: + msg: Greetings, I am your Armor Stand. +greeting 2: + msg: Greeting 2 + description: + msg: Oh Hey there, I am your Armor Stand. +archer: + msg: Archer + description: + msg: Watch out, your Armor Stand is about to shoot you :O +dancing: + msg: Dancing + description: + msg: Hey there, would you like a dance? +cheers: + msg: Cheers + description: + msg: Lets Cheers to this! +hanging: + msg: Hanging + description: + msg: Time to hang onto this mountain like our life depended on it. +present: + msg: Present + description: + msg: Your ArmorStand has a present for you <3 +fishing: + msg: Fishing + description: + msg: Time yo go on a fishing trip + +#Help for Presets +backtomenu: + msg: Back to Menu + description: + msg: Click me to go back to the main menu +howtopreset: + msg: How To + description: + msg: A short message on how to use presets. +howtopresetmsg: + msg: "1. Hold the editing tool in your main hand + + 2. Open the Menu with Preset Mode Active. + + 3. Choose one of the Armor Stand Presets that you want to select. + + 4. After choosing, your menu will close and your chosen preset will be applied. " diff --git a/src/main/resources/lang/pl_PL.yml b/src/main/resources/lang/pl_PL.yml index e9ecfe83..f8994727 100644 --- a/src/main/resources/lang/pl_PL.yml +++ b/src/main/resources/lang/pl_PL.yml @@ -264,3 +264,69 @@ equipslot: boots: Buty rhand: Prawa ręka lhand: Lewa ręka + +#all things related to Presets +presetmenu: + msg: Preset Poses + description: + msg: Use a Preset Pose for your ArmorStand [Will Open another Menu] + +#icons (Preset Menu) +sitting: + msg: Sitting + description: + msg: Time to sit back and relax. +waving: + msg: Waving + description: + msg: Hey, Over here! +greeting 1: + msg: Greeting 1 + description: + msg: Greetings, I am your Armor Stand. +greeting 2: + msg: Greeting 2 + description: + msg: Oh Hey there, I am your Armor Stand. +archer: + msg: Archer + description: + msg: Watch out, your Armor Stand is about to shoot you :O +dancing: + msg: Dancing + description: + msg: Hey there, would you like a dance? +cheers: + msg: Cheers + description: + msg: Lets Cheers to this! +hanging: + msg: Hanging + description: + msg: Time to hang onto this mountain like our life depended on it. +present: + msg: Present + description: + msg: Your ArmorStand has a present for you <3 +fishing: + msg: Fishing + description: + msg: Time yo go on a fishing trip + +#Help for Presets +backtomenu: + msg: Back to Menu + description: + msg: Click me to go back to the main menu +howtopreset: + msg: How To + description: + msg: A short message on how to use presets. +howtopresetmsg: + msg: "1. Hold the editing tool in your main hand + + 2. Open the Menu with Preset Mode Active. + + 3. Choose one of the Armor Stand Presets that you want to select. + + 4. After choosing, your menu will close and your chosen preset will be applied. " diff --git a/src/main/resources/lang/pt_BR.yml b/src/main/resources/lang/pt_BR.yml index dbf67001..7b9c0480 100644 --- a/src/main/resources/lang/pt_BR.yml +++ b/src/main/resources/lang/pt_BR.yml @@ -286,4 +286,70 @@ equipslot: pants: Calças boots: Botas rhand: Mão direita - lhand: Mão esquerda \ No newline at end of file + lhand: Mão esquerda + +#all things related to Presets +presetmenu: + msg: Preset Poses + description: + msg: Use a Preset Pose for your ArmorStand [Will Open another Menu] + +#icons (Preset Menu) +sitting: + msg: Sitting + description: + msg: Time to sit back and relax. +waving: + msg: Waving + description: + msg: Hey, Over here! +greeting 1: + msg: Greeting 1 + description: + msg: Greetings, I am your Armor Stand. +greeting 2: + msg: Greeting 2 + description: + msg: Oh Hey there, I am your Armor Stand. +archer: + msg: Archer + description: + msg: Watch out, your Armor Stand is about to shoot you :O +dancing: + msg: Dancing + description: + msg: Hey there, would you like a dance? +cheers: + msg: Cheers + description: + msg: Lets Cheers to this! +hanging: + msg: Hanging + description: + msg: Time to hang onto this mountain like our life depended on it. +present: + msg: Present + description: + msg: Your ArmorStand has a present for you <3 +fishing: + msg: Fishing + description: + msg: Time yo go on a fishing trip + +#Help for Presets +backtomenu: + msg: Back to Menu + description: + msg: Click me to go back to the main menu +howtopreset: + msg: How To + description: + msg: A short message on how to use presets. +howtopresetmsg: + msg: "1. Hold the editing tool in your main hand + + 2. Open the Menu with Preset Mode Active. + + 3. Choose one of the Armor Stand Presets that you want to select. + + 4. After choosing, your menu will close and your chosen preset will be applied. " diff --git a/src/main/resources/lang/ro_RO.yml b/src/main/resources/lang/ro_RO.yml index ae083396..622e1862 100644 --- a/src/main/resources/lang/ro_RO.yml +++ b/src/main/resources/lang/ro_RO.yml @@ -255,4 +255,70 @@ equipslot: pants: Pantaloni boots: Cizme rhand: Mana Dreapta - lhand: Mana Stanga \ No newline at end of file + lhand: Mana Stanga + +#all things related to Presets +presetmenu: + msg: Preset Poses + description: + msg: Use a Preset Pose for your ArmorStand [Will Open another Menu] + +#icons (Preset Menu) +sitting: + msg: Sitting + description: + msg: Time to sit back and relax. +waving: + msg: Waving + description: + msg: Hey, Over here! +greeting 1: + msg: Greeting 1 + description: + msg: Greetings, I am your Armor Stand. +greeting 2: + msg: Greeting 2 + description: + msg: Oh Hey there, I am your Armor Stand. +archer: + msg: Archer + description: + msg: Watch out, your Armor Stand is about to shoot you :O +dancing: + msg: Dancing + description: + msg: Hey there, would you like a dance? +cheers: + msg: Cheers + description: + msg: Lets Cheers to this! +hanging: + msg: Hanging + description: + msg: Time to hang onto this mountain like our life depended on it. +present: + msg: Present + description: + msg: Your ArmorStand has a present for you <3 +fishing: + msg: Fishing + description: + msg: Time yo go on a fishing trip + +#Help for Presets +backtomenu: + msg: Back to Menu + description: + msg: Click me to go back to the main menu +howtopreset: + msg: How To + description: + msg: A short message on how to use presets. +howtopresetmsg: + msg: "1. Hold the editing tool in your main hand + + 2. Open the Menu with Preset Mode Active. + + 3. Choose one of the Armor Stand Presets that you want to select. + + 4. After choosing, your menu will close and your chosen preset will be applied. " diff --git a/src/main/resources/lang/ru_RU.yml b/src/main/resources/lang/ru_RU.yml index 1bcfe6bc..d0777d8b 100644 --- a/src/main/resources/lang/ru_RU.yml +++ b/src/main/resources/lang/ru_RU.yml @@ -253,3 +253,69 @@ equipslot: boots: Ботинки rhand: Правая рука lhand: Левая рука + +#all things related to Presets +presetmenu: + msg: Preset Poses + description: + msg: Use a Preset Pose for your ArmorStand [Will Open another Menu] + +#icons (Preset Menu) +sitting: + msg: Sitting + description: + msg: Time to sit back and relax. +waving: + msg: Waving + description: + msg: Hey, Over here! +greeting 1: + msg: Greeting 1 + description: + msg: Greetings, I am your Armor Stand. +greeting 2: + msg: Greeting 2 + description: + msg: Oh Hey there, I am your Armor Stand. +archer: + msg: Archer + description: + msg: Watch out, your Armor Stand is about to shoot you :O +dancing: + msg: Dancing + description: + msg: Hey there, would you like a dance? +cheers: + msg: Cheers + description: + msg: Lets Cheers to this! +hanging: + msg: Hanging + description: + msg: Time to hang onto this mountain like our life depended on it. +present: + msg: Present + description: + msg: Your ArmorStand has a present for you <3 +fishing: + msg: Fishing + description: + msg: Time yo go on a fishing trip + +#Help for Presets +backtomenu: + msg: Back to Menu + description: + msg: Click me to go back to the main menu +howtopreset: + msg: How To + description: + msg: A short message on how to use presets. +howtopresetmsg: + msg: "1. Hold the editing tool in your main hand + + 2. Open the Menu with Preset Mode Active. + + 3. Choose one of the Armor Stand Presets that you want to select. + + 4. After choosing, your menu will close and your chosen preset will be applied. " diff --git a/src/main/resources/lang/test_NA.yml b/src/main/resources/lang/test_NA.yml index 88916e28..13a6bc31 100644 --- a/src/main/resources/lang/test_NA.yml +++ b/src/main/resources/lang/test_NA.yml @@ -1,15 +1,19 @@ +#This file will be regenerated by the plugin every time the plugin is enabled. +#Do not edit this file. Make a new language file instead. +#Any value not specified in another language file will default to the value listed here. + #formatting #A section symbol will be inserted between each character in this section #http://minecraft.gamepedia.com/Formatting_codes -iconname: bn5 -icondescription: b -info: b -warn: b -menutitle: b +iconname: 2n +icondescription: 5 +info: 6 +warn: c +menutitle: 8 #info -setmode: - msg: Setting §3mode to . +setmode: + msg: Setting mode to . head: Head Position body: Body Position leftleg: Left Leg Position @@ -21,55 +25,122 @@ setmode: invisible: Toggle Visibility size: Toggle Size disableslots: Toggle Disable Slots + vulnerability: Toggle Vulnerability gravity: Toggle Gravity baseplate: Toggle BasePlate placement: Placement rotate: Rotate - target: Target copy: Copy paste: Paste -setaxis: + reset: Reset Pose + itemframe: Toggle Itemframe Visibility + playerhead: Get a Players Head +setaxis: msg: Setting axis to . x: X y: Y z: Z -setslot: +setslot: msg: Setting copy slot to . setadj: msg: Setting adjustment to . coarse: Coarse fine: Fine -setgravity: +setgravity: msg: Gravity turned . true: on false: off -nomode: +nomode: msg: Click with the edit tool away from an armorstand to select an editing mode first! nomodeif: msg: Click with the Edit Tool away from the ItemFrame to select a mode first! -copied: +copied: msg: ArmorStand state copied to slot . -pasted: +pasted: msg: ArmorStand state pasted from slot . +disabledslots: + msg: Toggled Equipment locks +toggleinvulnerability: + msg: ArmorStand vulnerability state has been toggled to . + true: invulnerable + false: vulnerable +target: + msg: ArmorStand target locked. +notarget: + msg: target unlocked. + armorstand: ArmorStand + itemframe: ItemFrame +frametarget: + msg: Itemframe target locked. +give: + msg: Player given Item with CustomModelData +doubletarget: + msg: Please look at either an ArmorStand or an ItemFrame, not both! +nodoubletarget: + msg: Please look at an ArmorStand or an ItemFrame before switching hands! +reloaded: + msg: Configuration File has been reloaded. +playerhead: + msg: Player Head retrieved. +noplayerhead: + msg: Please turn on the ability to retrieve player heads in the config file and/or check your permissions to confirm that you have asedit.head set to true. +playerheaderror: + msg: Unable to Retrieve Player Head. +unabledestroycreative: + msg: Unable to Destroy this Invulnerable ArmorStand in Creative Mode. +notincorrectworld: + msg: Sorry but you are not in the correct world to use ArmorStandEditor. +stats: + msg: Here are the statistics for your ArmorStand. +playerheadhelp: + msg: "Please use /ase playerhead to get a players head. Ex of the command - /ase playerhead Wolfieheart_" +help: + msg: "1. Hold the editing tool() in your main hand + + 2. Left or right click away from an armor stand to open menu. + + 3. Select the labeled menu options. + + 4. Left click the armor stand with the edit tool in hand to apply those options. + + 5. Right click instead to edit in reverse!" +helptips: + msg: "Tips: + + 1. Press the \"Swap Item in Hands\" key (default F) while holding the edit tool to target a specific armor stand, if other armor stands are in the way. + + 2. You can apply NameTags to armor stands. You may use the & symbol to make colored names. + + 3. You can use crouch + scroll wheel while holding the edit tool to change Axis without opening the menu" +helpurl: + msg: "More info: https://github.com/RypoFalem/ArmorStandEditor/wiki" +helpdiscord: + msg: "or join our Discord: https://discord.gg/3BbJKWpTCj" #warn cantedit: msg: Sorry, you cannot edit armor stands here! noperm: + msg: You don't have permission to use this! +nopermoption: msg: You don't have permission to use the Option! basic: Normal ArmorStand showarms: Show Arms armorstandvisibility: Armor Stand Visibility baseplate: Set Baseplate Visibility gravity: Toggle Gravity - vulnerability: Toggle Vulnerability! + vulnerability: Toggle Vulnerability itemframevisibility: Item Frame Visibility size: Toggle ArmorStand Size disableslots: Toggle Equipment Lock paste: Paste ArmorStand Config copy: Copy ArmorStand Config reset: Reset ArmorStand Config -noslotnumcom: + stats: View ArmorStand Statistics + armorstandglow: Toggle ArmorStand Glow +norangestats: + msg: Please get next to an ArmorStand before running this command. +noslotnumcom: msg: You must specify a slot number! noadjcom: msg: You must specify Coarse or Fine adjustment! @@ -77,133 +148,153 @@ noaxiscom: msg: You must specify an Axis! nomodecom: msg: You must specify a Mode! -nodoubletarget: - msg: Please look at an ArmorStand or an ItemFrame before switching hands! -notarget: - msg: target unlocked. - armorstand: ArmorStand - itemframe: ItemFrame -toggleinvulnerability: - msg: ArmorStand vulnerability state has been toggled to . - true: invulnerable - false: vulnerable -notincorrectworld: - msg: Sorry but you are not in the correct world to use ArmorStandEditor. -unabledestroycreative: - msg: Unable to Destroy this Invulnerable ArmorStand in Creative Mode. +noreloadcom: + msg: You don't have permission to use the reload command! +nogive: + msg: "You either do not have the permission to use the give command or do not allow it in Config.yml" +noconsolecom: + msg: Sorry but this command only works from in-game and not from Console! + #menutitle mainmenutitle: msg: Armor Stand Editor Menu equiptitle: msg: ArmorStand Equipment +presettitle: + msg: Pre-Set ArmorStand Poses #icons xaxis: msg: X Axis - description: + description: msg: Rotate body parts along the X Axis -yaxis: +yaxis: msg: Y Axis - description: + description: msg: Rotate body parts along the Y Axis -zaxis: +zaxis: msg: Z Axis - description: - msg: Rotate body parts along the Z Axis -coarseadj: + description: + msg: Rotate body part s along the Z Axis +coarseadj: msg: Coarse Adjustment - description: + description: msg: Make large adjustments -fineadj: +fineadj: msg: Fine Adjustment - description: + description: msg: Make tiny adjustments -head: +head: msg: Head Position - description: + description: msg: Rotate the head -body: +body: msg: Body Position - description: + description: msg: Rotate the body -leftleg: +leftleg: msg: Left Leg Position - description: + description: msg: Rotate the left leg -rightleg: +rightleg: msg: Right Leg Position - description: + description: msg: Rotate the right leg -leftarm: +leftarm: msg: Left Arm Position - description: + description: msg: Rotate the left arm -rightarm: +rightarm: msg: Right Arm Position - description: + description: msg: Rotate the right arm -equipment: +equipment: msg: Equipment - description: + description: msg: Edit equipment -showarms: +showarms: msg: Show Arms - description: + description: msg: Turn arms on and off -invisible: +invisible: msg: Visibility - description: + description: msg: Make it visibile or invisible -size: +size: msg: Size - description: + description: msg: Make it big or small -disableslots: +disableslots: msg: Disable Slots - description: + description: msg: Enable and disable equipment lock -gravity: +vulnerability: + msg: Toggle Vulnerability + description: + msg: Toggles an ArmorStand's vulnerability state +gravity: msg: Gravity - description: + description: msg: Turn gravity on or off -baseplate: +baseplate: msg: BasePlate - description: + description: msg: Turn baseplate on or off -placement: +placement: msg: Placement - description: + description: msg: Move the entire armorstand -rotate: +rotate: msg: Rotate description: msg: Rotate the entire armorstand -target: - msg: Target - description: - msg: Target a specific armorstand -copy: +copy: msg: Copy description: msg: Copy the armorstand's settings -paste: +paste: msg: Paste - description: + description: msg: Paste the armorstand's settings -copyslot: +copyslot: msg: Copy Slot description: msg: Select a slot to store settings +reset: + msg: Reset Pose + description: + msg: Reset bodypart position to default +helpgui: + msg: Help! + description: + msg: Click here to get help! +itemframevisible: + msg: Itemframe Visibility + description: + msg: Toggles an itemframes visibility +playerheadmenu: + msg: Player Head + description: + msg: Please use /ase playerhead blankslot: msg: Nothing here description: msg: Just a placeholder item. Clicking me will not do anything. -#icons (equipment) -disabled: +armorstandglow: + msg: Toggle ArmorStand Glow + description: + msg: Turn ArmorStand Glowing on or off. +presetmenu: + msg: Preset Poses + description: + msg: Use a Preset Pose for your ArmorStand [Will Open another Menu] + +#icons (equipment menu) +disabled: msg: Disabled -equipslot: +equipslot: msg: Slot - description: + description: msg: Drag your into the slot below helm: Helmet chest: Chestplate @@ -216,4 +307,70 @@ equipslot: pants: Pants boots: Feetsies rhand: Right Hand - lhand: Left Hand \ No newline at end of file + lhand: Left Hand + +#all things related to Presets +presetmenu: + msg: Preset Poses + description: + msg: Use a Preset Pose for your ArmorStand [Will Open another Menu] + +#icons (Preset Menu) +sitting: + msg: Sitting + description: + msg: Time to sit back and relax. +waving: + msg: Waving + description: + msg: Hey, Over here! +greeting 1: + msg: Greeting 1 + description: + msg: Greetings, I am your Armor Stand. +greeting 2: + msg: Greeting 2 + description: + msg: Oh Hey there, I am your Armor Stand. +archer: + msg: Archer + description: + msg: Watch out, your Armor Stand is about to shoot you :O +dancing: + msg: Dancing + description: + msg: Hey there, would you like a dance? +cheers: + msg: Cheers + description: + msg: Lets Cheers to this! +hanging: + msg: Hanging + description: + msg: Time to hang onto this mountain like our life depended on it. +present: + msg: Present + description: + msg: Your ArmorStand has a present for you <3 +fishing: + msg: Fishing + description: + msg: Time yo go on a fishing trip + +#Help for Presets +backtomenu: + msg: Back to Menu + description: + msg: Click me to go back to the main menu +howtopreset: + msg: How To + description: + msg: A short message on how to use presets. +howtopresetmsg: + msg: "1. Hold the editing tool in your main hand + + 2. Open the Menu with Preset Mode Active. + + 3. Choose one of the Armor Stand Presets that you want to select. + + 4. After choosing, your menu will close and your chosen preset will be applied. " diff --git a/src/main/resources/lang/uk_UA.yml b/src/main/resources/lang/uk_UA.yml index e728be8e..37981211 100644 --- a/src/main/resources/lang/uk_UA.yml +++ b/src/main/resources/lang/uk_UA.yml @@ -249,3 +249,69 @@ equipslot: boots: Черевики rhand: Права рука lhand: Ліва рука + +#all things related to Presets +presetmenu: + msg: Preset Poses + description: + msg: Use a Preset Pose for your ArmorStand [Will Open another Menu] + +#icons (Preset Menu) +sitting: + msg: Sitting + description: + msg: Time to sit back and relax. +waving: + msg: Waving + description: + msg: Hey, Over here! +greeting 1: + msg: Greeting 1 + description: + msg: Greetings, I am your Armor Stand. +greeting 2: + msg: Greeting 2 + description: + msg: Oh Hey there, I am your Armor Stand. +archer: + msg: Archer + description: + msg: Watch out, your Armor Stand is about to shoot you :O +dancing: + msg: Dancing + description: + msg: Hey there, would you like a dance? +cheers: + msg: Cheers + description: + msg: Lets Cheers to this! +hanging: + msg: Hanging + description: + msg: Time to hang onto this mountain like our life depended on it. +present: + msg: Present + description: + msg: Your ArmorStand has a present for you <3 +fishing: + msg: Fishing + description: + msg: Time yo go on a fishing trip + +#Help for Presets +backtomenu: + msg: Back to Menu + description: + msg: Click me to go back to the main menu +howtopreset: + msg: How To + description: + msg: A short message on how to use presets. +howtopresetmsg: + msg: "1. Hold the editing tool in your main hand + + 2. Open the Menu with Preset Mode Active. + + 3. Choose one of the Armor Stand Presets that you want to select. + + 4. After choosing, your menu will close and your chosen preset will be applied. " diff --git a/src/main/resources/lang/zh_CN.yml b/src/main/resources/lang/zh_CN.yml index 082f30ae..f275a78c 100644 --- a/src/main/resources/lang/zh_CN.yml +++ b/src/main/resources/lang/zh_CN.yml @@ -288,3 +288,69 @@ equipslot: boots: 靴子 rhand: 右手 lhand: 左手 + +#all things related to Presets +presetmenu: + msg: Preset Poses + description: + msg: Use a Preset Pose for your ArmorStand [Will Open another Menu] + +#icons (Preset Menu) +sitting: + msg: Sitting + description: + msg: Time to sit back and relax. +waving: + msg: Waving + description: + msg: Hey, Over here! +greeting 1: + msg: Greeting 1 + description: + msg: Greetings, I am your Armor Stand. +greeting 2: + msg: Greeting 2 + description: + msg: Oh Hey there, I am your Armor Stand. +archer: + msg: Archer + description: + msg: Watch out, your Armor Stand is about to shoot you :O +dancing: + msg: Dancing + description: + msg: Hey there, would you like a dance? +cheers: + msg: Cheers + description: + msg: Lets Cheers to this! +hanging: + msg: Hanging + description: + msg: Time to hang onto this mountain like our life depended on it. +present: + msg: Present + description: + msg: Your ArmorStand has a present for you <3 +fishing: + msg: Fishing + description: + msg: Time yo go on a fishing trip + +#Help for Presets +backtomenu: + msg: Back to Menu + description: + msg: Click me to go back to the main menu +howtopreset: + msg: How To + description: + msg: A short message on how to use presets. +howtopresetmsg: + msg: "1. Hold the editing tool in your main hand + + 2. Open the Menu with Preset Mode Active. + + 3. Choose one of the Armor Stand Presets that you want to select. + + 4. After choosing, your menu will close and your chosen preset will be applied. " diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index 0fade9b5..c9a08583 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -1,6 +1,6 @@ name: ArmorStandEditor main: io.github.rypofalem.armorstandeditor.ArmorStandEditorPlugin -version: 1.20.2-44.1 +version: 1.20.4-45 api-version: "1.17" folia-supported: true website: https://www.spigotmc.org/resources/94503/ From fc9993a2c7f55da851911bee0070bf52c3ed1bd5 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 22 Dec 2023 15:18:49 +0100 Subject: [PATCH 310/369] Update dependency com.palmergames.bukkit.towny:towny to v0.100.0.14 (#398) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index f742afee..66ab9c39 100644 --- a/pom.xml +++ b/pom.xml @@ -152,7 +152,7 @@ com.palmergames.bukkit.towny towny - 0.100.0.9 + 0.100.0.14 provided From 75045880f229bb21ba989d0458f10c15cf9981b9 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 22 Dec 2023 20:35:04 +0100 Subject: [PATCH 311/369] Update dependency com.intellectualsites.plotsquared:plotsquared-bukkit to v7.3.0 (#399) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 66ab9c39..58b87c39 100644 --- a/pom.xml +++ b/pom.xml @@ -132,7 +132,7 @@ com.intellectualsites.plotsquared plotsquared-bukkit - 7.2.1 + 7.3.0 provided From 30d664440952aec3f6e8effbb81d4fec277c249c Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 22 Dec 2023 20:35:13 +0100 Subject: [PATCH 312/369] Update dependency com.intellectualsites.plotsquared:plotsquared-core to v7.3.0 (#400) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 58b87c39..ff7d1246 100644 --- a/pom.xml +++ b/pom.xml @@ -126,7 +126,7 @@ com.intellectualsites.plotsquared plotsquared-core - 7.2.1 + 7.3.0 provided From d83c12fe4d03c3d28dc4892b0baff8b666f4911d Mon Sep 17 00:00:00 2001 From: "Larry (Wolfieheart)" Date: Sun, 19 May 2024 21:52:56 +0200 Subject: [PATCH 313/369] [CORE] ArmorStandEditor 1.20.6-46 (#474) * [CORE] Bump to 1.20.4-46 #WolfiesBack Signed-off-by: Wolfieheart * [CORE] Add `asedit.rename.color` to allow admins the ability to block edits with colors. Signed-off-by: Wolfieheart * [CORE] Fix `/ase give` bug to work as intended Signed-off-by: Wolfieheart * [CORE] Remove Custom Playerhead Support in favor of allowing players to get their own - Was either that or remove the feature entirely and this I elected for. Signed-off-by: Wolfieheart * [CI-SKIP] Remove unused Imports from CommandEx Signed-off-by: Wolfieheart * [CORE] Fix Issue where Sonar would complain about RightArmX not being assigned correctly Signed-off-by: Wolfieheart * [CORE] Remove Unused Files Signed-off-by: Wolfieheart * [CORE] Update Bentobox and Lands Protections Signed-off-by: Wolfieheart * [CORE] Add ItemAdder/Custom Furniture Protection Signed-off-by: Wolfieheart * [CORE] Fix for Menu Items where blankSlots are not properly filled in if the user doesnt have the permission for that. Signed-off-by: Wolfieheart * [CORE] Fix Menu Item Description.msg for Player Heads Signed-off-by: Wolfieheart * [CORE] Update towny to 0.100.2.0. Closes #473 Signed-off-by: Wolfieheart * [CORE] Update PlotSquared to 7.3.7. Closes #472 Signed-off-by: Wolfieheart * [CORE] Update GriefPrevention to 17.0.0 - Closes #429 Signed-off-by: Wolfieheart * [CORE] Update actiopns/upload-artifact to 4.3.1 - Closes #447 Signed-off-by: Wolfieheart * [CORE] Update maven-shade-plugin to 3.5.2 - Closes #452 Signed-off-by: Wolfieheart * [CORE] Update Rewrite Signed-off-by: Wolfieheart * [CORE] Run Rewrite for Formatting Signed-off-by: Wolfieheart * [CORE] Update actions/cache to v4 Signed-off-by: Wolfieheart * [CORE] Remove Java 18 Builds Signed-off-by: Wolfieheart * [CORE] Bump Lombok and Maven Compiler Signed-off-by: Wolfieheart * [CORE] Fix check on Color Signed-off-by: Wolfieheart * [CORE] Bump to 1.20.5-46 and Update Java Version to 21 Signed-off-by: Wolfieheart * [CORE] Fix Menus and Fix Playerhead Logic Signed-off-by: Wolfieheart * [CORE] Fix Menus and Fix Playerhead Logic Signed-off-by: Wolfieheart * [CORE] Fixes #494 - After updating to 1.20.5, server crashes on PaperMC Signed-off-by: Wolfieheart * [CORE] Small fix on Else If /sigh Signed-off-by: Wolfieheart * [CORE] #494 - Move ASE over to depending on Paper instead of Spigot. This might break a few things. Signed-off-by: Wolfieheart * [CORE] FIX THE BUILD.... JFC! \ Signed-off-by: Wolfieheart Signed-off-by: Wolfieheart * [CORE] Make it so that Adventure-API is Provided Scope and not dumped inot the plugin.jar Signed-off-by: Wolfieheart * [CORE] Update Minecraft Version Check routine to also ensure that if the server software is FOLIA we also use the Paper Routine. Signed-off-by: Wolfieheart * [CORE] Bump to 1.20.6 - THANKS MOJANG MADGE! Signed-off-by: Wolfieheart * [CORE] Update Menu to show Blank Slots when users dont have permissions. Signed-off-by: Wolfieheart * [CORE] Fix Leftovers from Various Fixes. Signed-off-by: Wolfieheart * [CORE] Update version check to take from the config not the Plugin Description File. Signed-off-by: Wolfieheart --------- Signed-off-by: Wolfieheart --- .github/workflows/maven-publish.yml | 8 +- pom.xml | 90 +++++++----- .../ArmorStandEditorPlugin.java | 95 +++++++----- .../rypofalem/armorstandeditor/CommandEx.java | 138 +++++------------- .../armorstandeditor/PlayerEditor.java | 50 +++---- .../armorstandeditor/PlayerEditorManager.java | 25 ++-- .../armorstandeditor/menu/EquipmentMenu.java | 2 +- .../armorstandeditor/menu/ItemFactory.java | 130 ----------------- .../rypofalem/armorstandeditor/menu/Menu.java | 51 ++++--- .../menu/PresetArmorPosesMenu.java | 51 +++---- .../protections/BentoBoxProtection.java | 18 ++- .../protections/LandsProtection.java | 5 +- .../protections/PlotSquaredProtection.java | 11 +- .../protections/itemAdderProtection.java | 56 +++++++ .../armorstandeditor/utils/Configuration.java | 78 ---------- src/main/resources/config.yml | 8 +- src/main/resources/lang/en_US.yml | 10 +- src/main/resources/plugin.yml | 16 +- 18 files changed, 344 insertions(+), 498 deletions(-) delete mode 100644 src/main/java/io/github/rypofalem/armorstandeditor/menu/ItemFactory.java create mode 100644 src/main/java/io/github/rypofalem/armorstandeditor/protections/itemAdderProtection.java delete mode 100644 src/main/java/io/github/rypofalem/armorstandeditor/utils/Configuration.java diff --git a/.github/workflows/maven-publish.yml b/.github/workflows/maven-publish.yml index 4db83226..d4fec63f 100644 --- a/.github/workflows/maven-publish.yml +++ b/.github/workflows/maven-publish.yml @@ -10,7 +10,7 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - java: ['17', '18'] + java: ['21'] steps: # 1. Check out the current working tree - name: Checkout ArmorStandEditor Repository @@ -27,14 +27,14 @@ jobs: # 3. Setup local Maven package cache to speed up building - name: Cache SonarCloud packages - uses: actions/cache@v3 + uses: actions/cache@v4 with: path: ~/.sonar/cache key: ${{ runner.os }}-sonar restore-keys: ${{ runner.os }}-sonar - name: Cache Maven packages - uses: actions/cache@v3 + uses: actions/cache@v4 with: path: ~/.m2 key: ${{ runner.os }}-m2-${{ hashFiles('**/pom.xml') }} @@ -56,7 +56,7 @@ jobs: #6 Upload Artifacts (Debug Purposes) - name: Upload Artifact for Debugging - uses: actions/upload-artifact@v4.0.0 + uses: actions/upload-artifact@v4.3.1 with: name: artifact path: /home/runner/work/ArmorStandEditor/ArmorStandEditor/target/armorstandeditor-*-*.jar diff --git a/pom.xml b/pom.xml index ff7d1246..ea093ed4 100644 --- a/pom.xml +++ b/pom.xml @@ -4,12 +4,12 @@ io.github.rypofalem.armorstandeditor armorstandeditor jar - 1.20.4-45 + 1.20.5-46 armorstandeditor https://maven.apache.org - 17 + 21 UTF-8 3.0.1 wolfieheart @@ -31,10 +31,6 @@ - - spigot-repo - https://hub.spigotmc.org/nexus/content/repositories/snapshots/ - paper-repo https://repo.papermc.io/repository/maven-public/ @@ -53,6 +49,10 @@ sonatype snapshots https://s01.oss.sonatype.org/content/groups/public/ + + sonatype-oss-snapshots1 + https://s01.oss.sonatype.org/content/repositories/snapshots/ + glaremasters repo @@ -82,11 +82,6 @@ codemc-repo https://repo.codemc.org/repository/maven-public/ - - - minecraft-repo - https://libraries.minecraft.net/ - @@ -102,17 +97,24 @@ - + - org.spigotmc - spigot-api - 1.20.4-R0.1-SNAPSHOT + io.papermc.paper + paper-api + 1.20.6-R0.1-SNAPSHOT provided + + + adventure-api + net.kyori + + + - dev.folia - folia-api - 1.19.4-R0.1-SNAPSHOT + net.kyori + adventure-api + 4.16.0 provided @@ -126,33 +128,47 @@ com.intellectualsites.plotsquared plotsquared-core - 7.3.0 + 7.3.8 provided + + + adventure + * + + + * + net.kyori + + com.intellectualsites.plotsquared plotsquared-bukkit - 7.3.0 + 7.3.8 provided plotsquared-core * + + * + net.kyori + com.github.TechFortress GriefPrevention - 16.18.1 + 17.0.0 provided com.palmergames.bukkit.towny towny - 0.100.0.14 + 0.100.2.3 provided @@ -175,6 +191,12 @@ api 2.1.0-SNAPSHOT provided + + + * + net.kyori + + @@ -190,11 +212,11 @@ 1.23.2 provided - + - com.mojang - authlib - 4.0.43 + com.github.LoneDev6 + api-itemsadder + 3.2.5 provided @@ -202,7 +224,7 @@ org.projectlombok lombok - 1.18.30 + 1.18.32 provided @@ -212,10 +234,9 @@ org.openrewrite.maven rewrite-maven-plugin - 5.16.0 + 5.29.0 - org.openrewrite.java.migrate.UpgradeToJava17 org.openrewrite.java.format.AutoFormat org.openrewrite.java.recipes.FindRecipes org.openrewrite.java.OrderImports @@ -223,13 +244,6 @@ org.openrewrite.java.RemoveUnusedImports - - - org.openrewrite.recipe - rewrite-migrate-java - 2.4.2 - - org.codehaus.mojo @@ -257,7 +271,7 @@ org.apache.maven.plugins maven-compiler-plugin - 3.12.0 + 3.13.0 ${java.version} @@ -265,7 +279,7 @@ org.apache.maven.plugins maven-shade-plugin - 3.5.1 + 3.5.3 package diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/ArmorStandEditorPlugin.java b/src/main/java/io/github/rypofalem/armorstandeditor/ArmorStandEditorPlugin.java index b6a8d3bd..51b13cd8 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/ArmorStandEditorPlugin.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/ArmorStandEditorPlugin.java @@ -58,7 +58,8 @@ public class ArmorStandEditorPlugin extends JavaPlugin { public boolean hasPaper = false; public boolean hasFolia = false; String nmsVersionNotLatest = null; - PluginDescriptionFile pdfFile = this.getDescription(); + + String aseVersion; public static final String SEPARATOR_FIELD = "================================"; public PlayerEditorManager editorManager; @@ -94,7 +95,7 @@ public class ArmorStandEditorPlugin extends JavaPlugin { boolean armorStandVisibility = true; //Misc Options - boolean allowedToRetrievePlayerHead = false; + boolean allowedToRetrieveOwnPlayerHead = false; boolean adminOnlyNotifications = false; //Glow Entity Colors @@ -117,36 +118,61 @@ public void onEnable() { if (!Scheduler.isFolia()) scoreboard = Objects.requireNonNull(this.getServer().getScoreboardManager()).getMainScoreboard(); - //Get NMS Version - nmsVersion = getNmsVersion(); + // Get ASEs Version Number from the config.... + aseVersion = this.getConfig().getString("version"); //Load Messages in Console getLogger().info("======= ArmorStandEditor ======="); - getLogger().info("Plugin Version: " + pdfFile.getVersion()); + getLogger().info("Plugin Version: v" + aseVersion); - // Check if the Minecraft version is supported - if (nmsVersion.compareTo("v1_17") < 0) { - getLogger().log(Level.WARNING, warningMCVer + "{0}", nmsVersion); - getLogger().warning("ArmorStandEditor is not compatible with this version of Minecraft. Please update to at least version 1.17. Loading failed."); - getServer().getPluginManager().disablePlugin(this); - getLogger().info(SEPARATOR_FIELD); - return; - } - - //Also Warn People to Update if using nmsVersion lower than latest - if (nmsVersion.compareTo("v1_20") < 0) { - getLogger().log(Level.WARNING, warningMCVer + "{0}", nmsVersion); - getLogger().warning("ArmorStandEditor is compatible with this version of Minecraft, but it is not the latest supported version."); - getLogger().warning("Loading continuing, but please consider updating to the latest version."); - } else { - getLogger().log(Level.INFO, warningMCVer + "{0}", nmsVersion); - getLogger().info("ArmorStandEditor is compatible with this version of Minecraft. Loading continuing."); - } //Spigot Check hasSpigot = getHasSpigot(); hasPaper = getHasPaper(); hasFolia = Scheduler.isFolia(); + //Get NMS Version + if(hasPaper || hasFolia) { + nmsVersion = getServer().getMinecraftVersion(); + + // Check if the Minecraft version is supported + if(nmsVersion.contains("1.20")) { + getLogger().log(Level.INFO, warningMCVer + "{0}", nmsVersion); + getLogger().info("ArmorStandEditor is compatible with this version of Minecraft. Loading continuing."); + } else if(nmsVersion.contains("1.17") || nmsVersion.contains("1.18") || nmsVersion.contains("1.19") ){ + getLogger().log(Level.WARNING, warningMCVer + "{0}", nmsVersion); + getLogger().warning("ArmorStandEditor is compatible with this version of Minecraft, but it is not the latest supported version."); + getLogger().warning("Loading continuing, but please consider updating to the latest version."); + } else{ + getLogger().log(Level.WARNING, warningMCVer + "{0}", nmsVersion); + getLogger().warning("ArmorStandEditor is not compatible with this version of Minecraft. Please update to at least version 1.17. Loading failed."); + getServer().getPluginManager().disablePlugin(this); + getLogger().info(SEPARATOR_FIELD); + } + } else{ + nmsVersion = getNmsVersion(); + // Check if the Minecraft version is supported + if (nmsVersion.compareTo("v1_17") < 0) { + getLogger().log(Level.WARNING, warningMCVer + "{0}", nmsVersion); + getLogger().warning("ArmorStandEditor is not compatible with this version of Minecraft. Please update to at least version 1.17. Loading failed."); + getServer().getPluginManager().disablePlugin(this); + getLogger().info(SEPARATOR_FIELD); + return; + } + + //Also Warn People to Update if using nmsVersion lower than latest + if (nmsVersion.compareTo("v1_20") < 0) { + getLogger().log(Level.WARNING, warningMCVer + "{0}", nmsVersion); + getLogger().warning("ArmorStandEditor is compatible with this version of Minecraft, but it is not the latest supported version."); + getLogger().warning("Loading continuing, but please consider updating to the latest version."); + } else { + getLogger().log(Level.INFO, warningMCVer + "{0}", nmsVersion); + getLogger().info("ArmorStandEditor is compatible with this version of Minecraft. Loading continuing."); + } + + } + + + //If Paper and Spigot are both FALSE - Disable the plugin if (!hasPaper && !hasSpigot) { getLogger().severe("This plugin requires either Paper, Spigot or one of its forks to run. This is not an error, please do not report this!"); @@ -238,7 +264,7 @@ public void onEnable() { } enablePerWorld = getConfig().getBoolean("enablePerWorldSupport", false); - if(enablePerWorld) { + if (enablePerWorld) { allowedWorldList = getConfig().getList("allowed-worlds", null); if (allowedWorldList != null && allowedWorldList.get(0).equals("*")) { allowedWorldList = getServer().getWorlds().stream().map(World::getName).toList(); @@ -263,12 +289,12 @@ public void onEnable() { updateCheckerInterval = getConfig().getDouble("updateCheckerInterval", 24); //Ability to get Player Heads via a command - allowedToRetrievePlayerHead = getConfig().getBoolean("allowedToRetrievePlayerHead", true); + allowedToRetrieveOwnPlayerHead = getConfig().getBoolean("allowedToRetrieveOwnPlayerHead", true); adminOnlyNotifications = getConfig().getBoolean("adminOnlyNotifications", true); debugFlag = getConfig().getBoolean("debugFlag", false); - if(debugFlag){ + if (debugFlag) { getServer().getLogger().warning(ArmorStandEditorPlugin.SEPARATOR_FIELD); getServer().getLogger().warning(" ArmorStandEditor - Debug Mode "); getServer().getLogger().warning(" Debug Mode: ENABLED! "); @@ -366,7 +392,7 @@ private void unregisterScoreboards(Scoreboard scoreboard) { private void updateConfig(String folder, String config) { if (!new File(getDataFolder() + File.separator + folder + config).exists()) { - saveResource(folder + config, false); + saveResource(folder + config, false); } } @@ -445,8 +471,8 @@ public Integer getCustomModelDataInt() { } //New in 1.20-43: Allow the ability to get a player head from a command - ENABLED VIA CONFIG ONLY! - public boolean getAllowedToRetrievePlayerHead() { - return this.getConfig().getBoolean("allowedToRetrievePlayerHead"); + public boolean getallowedToRetrieveOwnPlayerHead() { + return this.getConfig().getBoolean("allowedToRetrieveOwnPlayerHead"); } public boolean getAdminOnlyNotifications() { @@ -525,7 +551,8 @@ public boolean isEditTool(ItemStack itemStk) { } return true; } - public void performReload() { + + public void performReload() { //Unregister Scoreboard before before performing the reload if (!hasFolia) { @@ -588,7 +615,7 @@ public void performReload() { enablePerWorld = getConfig().getBoolean("enablePerWorldSupport", false); - if(enablePerWorld) { + if (enablePerWorld) { allowedWorldList = getConfig().getList("allowed-worlds", null); if (allowedWorldList != null && allowedWorldList.get(0).equals("*")) { allowedWorldList = getServer().getWorlds().stream().map(World::getName).toList(); @@ -609,7 +636,7 @@ public void performReload() { runTheUpdateChecker = getConfig().getBoolean("runTheUpdateChecker", true); //Ability to get Player Heads via a command - allowedToRetrievePlayerHead = getConfig().getBoolean("allowedToRetrievePlayerHead", true); + allowedToRetrieveOwnPlayerHead = getConfig().getBoolean("allowedToRetrieveOwnPlayerHead", true); adminOnlyNotifications = getConfig().getBoolean("adminOnlyNotifications", true); //Add Ability to check for UpdatePerms that Notify Ops - https://github.com/Wolfieheart/ArmorStandEditor/issues/86 @@ -712,7 +739,7 @@ public boolean isDebug() { return debugFlag; } - public void debugMsgHandler(String msg){ - if(isDebug()) getServer().getLogger().log(Level.WARNING, "[ASE-DEBUG]: {0}", msg); + public void debugMsgHandler(String msg) { + if (isDebug()) getServer().getLogger().log(Level.WARNING, "[ASE-DEBUG]: {0}", msg); } } diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/CommandEx.java b/src/main/java/io/github/rypofalem/armorstandeditor/CommandEx.java index ee1f3fb9..e39ed007 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/CommandEx.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/CommandEx.java @@ -20,21 +20,17 @@ package io.github.rypofalem.armorstandeditor; import com.google.gson.Gson; -import com.google.gson.JsonObject; import com.jeff_media.updatechecker.UpdateCheckSource; import com.jeff_media.updatechecker.UpdateChecker; -import com.mojang.authlib.GameProfile; -import com.mojang.authlib.properties.Property; - import io.github.rypofalem.armorstandeditor.modes.AdjustmentMode; import io.github.rypofalem.armorstandeditor.modes.Axis; import io.github.rypofalem.armorstandeditor.modes.EditMode; -import org.bukkit.Bukkit; import org.bukkit.ChatColor; import org.bukkit.Material; +import org.bukkit.OfflinePlayer; import org.bukkit.Sound; import org.bukkit.command.*; import org.bukkit.entity.ArmorStand; @@ -45,11 +41,10 @@ import org.bukkit.inventory.meta.ItemMeta; import org.bukkit.inventory.meta.SkullMeta; -import java.io.IOException; -import java.io.InputStreamReader; -import java.lang.reflect.Field; -import java.net.URL; -import java.util.*; +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; +import java.util.Objects; public class CommandEx implements CommandExecutor, TabCompleter { ArmorStandEditorPlugin plugin; @@ -62,7 +57,7 @@ public class CommandEx implements CommandExecutor, TabCompleter { final String UPDATE = ChatColor.YELLOW + "/ase update"; final String RELOAD = ChatColor.YELLOW + "/ase reload"; final String GIVECUSTOMMODEL = ChatColor.YELLOW + "/ase give"; - final String GIVEPLAYERHEAD = ChatColor.YELLOW + "/ase playerhead "; + final String GIVEPLAYERHEAD = ChatColor.YELLOW + "/ase playerhead"; final String GETARMORSTATS = ChatColor.YELLOW + "/ase stats"; Gson gson = new Gson(); @@ -74,7 +69,7 @@ public CommandEx(ArmorStandEditorPlugin armorStandEditorPlugin) { public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { if (sender instanceof ConsoleCommandSender) { //Fix to Support #267 - if(plugin.isDebug()) plugin.debugMsgHandler("Sender is CONSOLE!"); + if (plugin.isDebug()) plugin.debugMsgHandler("Sender is CONSOLE!"); if (args.length == 0) { sender.sendMessage(VERSION); sender.sendMessage(HELP); @@ -94,13 +89,13 @@ public boolean onCommand(CommandSender sender, Command command, String label, St } if (sender instanceof Player player && !getPermissionBasic(player)) { - if(plugin.isDebug()) plugin.debugMsgHandler("Sender is Player but asedit.basic is" + getPermissionBasic(player)); + if (plugin.isDebug()) plugin.debugMsgHandler("Sender is Player but asedit.basic is" + getPermissionBasic(player)); sender.sendMessage(plugin.getLang().getMessage("nopermoption", "warn", "basic")); return true; } else { Player player = (Player) sender; - if(plugin.isDebug()) plugin.debugMsgHandler("Sender is Player and asedit.basic is" + getPermissionBasic(player)); + if (plugin.isDebug()) plugin.debugMsgHandler("Sender is Player and asedit.basic is" + getPermissionBasic(player)); if (args.length == 0) { player.sendMessage(LISTMODE); player.sendMessage(LISTAXIS); @@ -124,7 +119,7 @@ public boolean onCommand(CommandSender sender, Command command, String label, St case "version" -> commandVersion(player); case "update" -> commandUpdate(player); case "give" -> commandGive(player); - case "playerhead" -> commandGivePlayerHead(player, args); + case "playerhead" -> commandGivePlayerHead(player); case "reload" -> commandReload(player); case "stats" -> commandStats(player); default -> { @@ -149,7 +144,7 @@ public boolean onCommand(CommandSender sender, Command command, String label, St // https://github.com/Wolfieheart/ArmorStandEditor-Issues/issues/35 & // https://github.com/Wolfieheart/ArmorStandEditor-Issues/issues/30 - See Remarks OTHER private void commandGive(Player player) { - if (plugin.getAllowCustomModelData() && checkPermission(player, "give", true)) { + if (plugin.getAllowCustomModelData() || checkPermission(player, "give", true)) { ItemStack stack = new ItemStack(plugin.getEditTool()); //Only Support EditTool at the MOMENT ItemMeta meta = stack.getItemMeta(); Objects.requireNonNull(meta).setCustomModelData(plugin.getCustomModelDataInt()); @@ -163,88 +158,20 @@ private void commandGive(Player player) { } } - private void commandGivePlayerHead(Player player, String[] args) { - - if (plugin.getAllowedToRetrievePlayerHead() && checkPermission(player, "head", true)) { - - if (args.length == 2) { - - //Get the Player head Texture - String skinTexture = getPlayerHeadTexture(args[1]); - - if (skinTexture == null) { - player.sendMessage(plugin.getLang().getMessage("playerheaderror", "warn")); - } - - //Create the ItemStack for the PlayerHead - ItemStack playerHead = new ItemStack(Material.PLAYER_HEAD, 1); - - // Get the meta therefore - SkullMeta playerHeadMeta = (SkullMeta) playerHead.getItemMeta(); - assert playerHeadMeta != null; - - //Generate a Random UUID - GameProfile gameProfile = new GameProfile(UUID.randomUUID(), null); - gameProfile.getProperties().put("textures", new Property("textures", skinTexture)); - Field profileField = null; - - try { - profileField = playerHeadMeta.getClass().getDeclaredField("profile"); - profileField.setAccessible(true); - profileField.set(playerHeadMeta, gameProfile); - } catch (NoSuchFieldException | IllegalAccessException e) { - player.sendMessage(plugin.getLang().getMessage("playerheaderror", "warn")); - } finally { - if (profileField != null) { - profileField.setAccessible(false); - } - } - - //Set the Display Name to be that of the Player Given - playerHeadMeta.setDisplayName(args[1]); - - //Set the Item Meta - playerHead.setItemMeta(playerHeadMeta); - - //Add the head to the Players Inventory + display PlayerHead Success Message - player.getInventory().addItem(playerHead); - player.sendMessage(plugin.getLang().getMessage("playerhead", "info")); - - //Let Admins know this command has been ran - for (Player onlineList : Bukkit.getOnlinePlayers()) { - if (onlineList.hasPermission("asedit.permpack.admin") && plugin.getAdminOnlyNotifications()) { - onlineList.sendMessage(ChatColor.YELLOW + "[ArmorStandEditor] " + player.getName() + "has just used the /ase playerhead command to get the head for " + args[1]); - } - } - } + private void commandGivePlayerHead(Player player) { + if (player.hasPermission("asedit.head")) { + OfflinePlayer offlinePlayer = player.getPlayer(); + ItemStack item = new ItemStack(Material.PLAYER_HEAD, 1, (short) 3); + SkullMeta meta = (SkullMeta) item.getItemMeta(); + meta.setOwningPlayer(offlinePlayer); + item.setItemMeta(meta); + player.getInventory().addItem(item); + player.sendMessage(plugin.getLang().getMessage("playerhead", "info")); } else { - player.sendMessage(plugin.getLang().getMessage("noplayerhead", "warn")); - } - } - - private String getPlayerHeadTexture(String playerName) { - try { - // Get the UUID of the Player in Question - URL uuidURL = new URL("https://api.mojang.com/users/profiles/minecraft/" + playerName); - try (InputStreamReader uuidURLReader = new InputStreamReader(uuidURL.openStream())) { - JsonObject uuidObject = gson.fromJson(uuidURLReader, JsonObject.class); - String uuid = uuidObject.get("id").getAsString(); - - - // Get the Skin from that UUID - URL skinURL = new URL("https://sessionserver.mojang.com/session/minecraft/profile/" + uuid + "?unsigned=false"); - try (InputStreamReader skinURLReader = new InputStreamReader(skinURL.openStream())) { - JsonObject skinObject = gson.fromJson(skinURLReader, JsonObject.class); - JsonObject skinTextureProperty = skinObject.get("properties").getAsJsonArray().get(0).getAsJsonObject(); - return skinTextureProperty.get("value").getAsString(); - } - } - } catch (IOException | IllegalStateException e) { - return null; + player.sendMessage(plugin.getLang().getMessage("playerheaderror", "warn")); } } - private void commandSlot(Player player, String[] args) { if (args.length <= 1) { @@ -313,7 +240,7 @@ private void commandMode(Player player, String[] args) { if (args[1].equals("invisible") && !(checkPermission(player, "togglearmorstandvisibility", true) || plugin.getArmorStandVisibility())) return; if (args[1].equals("itemframe") && !(checkPermission(player, "toggleitemframevisibility", true) || plugin.getItemFrameVisibility())) return; plugin.editorManager.getPlayerEditor(player.getUniqueId()).setMode(mode); - if(plugin.isDebug()) plugin.debugMsgHandler(player.getDisplayName() + " chose the mode: " + mode); + if (plugin.isDebug()) plugin.debugMsgHandler(player.getDisplayName() + " chose the mode: " + mode); return; } } @@ -389,7 +316,7 @@ private void commandReloadConsole(CommandSender sender) { private void commandStats(Player player) { if (plugin.isDebug()) plugin.debugMsgHandler(player.getDisplayName() + " permission check for asedit.stats: " + getPermissionStats(player)); - if(getPermissionStats(player)) { + if (getPermissionStats(player)) { for (Entity e : player.getNearbyEntities(1, 1, 1)) { if (e instanceof ArmorStand as) { @@ -419,12 +346,7 @@ private void commandStats(Player player) { bodyZ = Math.toDegrees(bodyZ); bodyZ = Math.rint(bodyZ); - //Arms - double rightArmX = as.getRightArmPose().getX(); - rightArmX = Math.toDegrees(rightArmX); - rightArmX = Math.rint(rightArmX); - double rightArmY = as.getRightArmPose().getY(); rightArmY = Math.toDegrees(rightArmY); rightArmY = Math.rint(rightArmY); @@ -433,6 +355,9 @@ private void commandStats(Player player) { rightArmZ = Math.toDegrees(rightArmZ); rightArmZ = Math.rint(rightArmZ); + double rightArmX = as.getRightArmPose().getX(); + rightArmX = Math.toDegrees(rightArmX); + rightArmX = Math.rint(rightArmX); double leftArmX = as.getLeftArmPose().getX(); leftArmX = Math.toDegrees(leftArmX); @@ -501,7 +426,7 @@ private void commandStats(Player player) { player.sendMessage(ChatColor.YELLOW + "----------------------------------------------"); } } - }else{ + } else { player.sendMessage(plugin.getLang().getMessage("norangeforstats", "warn")); } } @@ -524,18 +449,23 @@ private boolean checkPermission(Player player, String permName, boolean sendMess private boolean getPermissionBasic(Player player) { return checkPermission(player, "basic", false); } + private boolean getPermissionGive(Player player) { return checkPermission(player, "give", false); } + private boolean getPermissionUpdate(Player player) { return checkPermission(player, "update", false); } + private boolean getPermissionReload(Player player) { return checkPermission(player, "reload", false); } + private boolean getPermissionPlayerHead(Player player) { return checkPermission(player, "head", false); } + private boolean getPermissionStats(Player player) { return checkPermission(player, "stats", false); } @@ -566,11 +496,11 @@ public List onTabComplete(CommandSender sender, Command command, String if (getPermissionReload(player)) { argList.add("reload"); } - if (getPermissionPlayerHead(player) && plugin.getAllowedToRetrievePlayerHead()) { + if (getPermissionPlayerHead(player) || plugin.getallowedToRetrieveOwnPlayerHead()) { argList.add("playerhead"); } - if (getPermissionStats(player)){ + if (getPermissionStats(player)) { argList.add("stats"); } } diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditor.java b/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditor.java index 9d26c0e7..4e6d464e 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditor.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditor.java @@ -18,13 +18,13 @@ */ package io.github.rypofalem.armorstandeditor; -import io.github.rypofalem.armorstandeditor.menu.PresetArmorPosesMenu; import net.md_5.bungee.api.ChatMessageType; import net.md_5.bungee.api.chat.TextComponent; import io.github.rypofalem.armorstandeditor.api.*; import io.github.rypofalem.armorstandeditor.menu.EquipmentMenu; import io.github.rypofalem.armorstandeditor.menu.Menu; +import io.github.rypofalem.armorstandeditor.menu.PresetArmorPosesMenu; import io.github.rypofalem.armorstandeditor.modes.AdjustmentMode; import io.github.rypofalem.armorstandeditor.modes.ArmorStandData; import io.github.rypofalem.armorstandeditor.modes.Axis; @@ -111,7 +111,7 @@ public void setCopySlot(byte slot) { } public void editArmorStand(ArmorStand armorStand) { - if (getPlayer().hasPermission("asedit.basic")) { + if (getPlayer().hasPermission("asedit.basic")) { armorStand = attemptTarget(armorStand); switch (eMode) { @@ -184,7 +184,7 @@ public void editArmorStand(ArmorStand armorStand) { break; } - }else return; + } else return; } public void editItemFrame(ItemFrame itemFrame) { @@ -207,7 +207,7 @@ public void editItemFrame(ItemFrame itemFrame) { sendMessage("nomodeif", null); break; } - }else return; + } else return; } private void openEquipment(ArmorStand armorStand) { @@ -217,7 +217,7 @@ private void openEquipment(ArmorStand armorStand) { equipMenu.open(); } - private void choosePreset(ArmorStand armorStand){ + private void choosePreset(ArmorStand armorStand) { if (!getPlayer().hasPermission("asedit.basic")) return; presetPoseMenu = new PresetArmorPosesMenu(this, armorStand); presetPoseMenu.openMenu(); @@ -323,7 +323,7 @@ private void copy(ArmorStand armorStand) { copySlots.copyDataToSlot(armorStand); sendMessage("copied", "" + (copySlots.currentSlot + 1)); setMode(EditMode.PASTE); - }else{ + } else { sendMessage("nopermoption", "warn", "copy"); } @@ -356,7 +356,7 @@ private void paste(ArmorStand armorStand) { armorStand.getEquipment().setItemInOffHand(data.leftHand); } sendMessage("pasted", "" + (copySlots.currentSlot + 1)); - }else{ + } else { sendMessage("nopermoption", "warn", "paste"); } } @@ -369,13 +369,13 @@ private void resetPosition(ArmorStand armorStand) { armorStand.setRightArmPose(new EulerAngle(0, 0, 0)); armorStand.setLeftLegPose(new EulerAngle(0, 0, 0)); armorStand.setRightLegPose(new EulerAngle(0, 0, 0)); - } else{ + } else { sendMessage("nopermoption", "warn", "reset"); } } private void toggleDisableSlots(ArmorStand armorStand) { - if (!getPlayer().hasPermission("asedit.disableSlots")){ + if (!getPlayer().hasPermission("asedit.disableSlots")) { sendMessage("nopermoption", "warn", "disableslots"); } else { if (armorStand.hasEquipmentLock(EquipmentSlot.HAND, ArmorStand.LockType.REMOVING_OR_CHANGING)) { //Adds a lock to every slot or removes it @@ -416,55 +416,52 @@ private void toggleInvulnerability(ArmorStand armorStand) { //See NewFeature-Req armorStand.setInvulnerable(!armorStand.isInvulnerable()); sendMessage("toggleinvulnerability", String.valueOf(armorStand.isInvulnerable())); } else { - sendMessage("nopermoption","warn", "vulnerability"); + sendMessage("nopermoption", "warn", "vulnerability"); } } private void toggleGravity(ArmorStand armorStand) { - if (getPlayer().hasPermission("asedit.togglegravity")){ + if (getPlayer().hasPermission("asedit.togglegravity")) { armorStand.setGravity(!armorStand.hasGravity()); sendMessage("setgravity", String.valueOf(armorStand.hasGravity()));//Fix for Wolfst0rm/ArmorStandEditor-Issues#6: Translation of On/Off Keys are broken - } else{ - sendMessage("nopermoption","warn", "gravity"); + } else { + sendMessage("nopermoption", "warn", "gravity"); } - - - } void togglePlate(ArmorStand armorStand) { - if(getPlayer().hasPermission("asedit.togglebaseplate")){ + if (getPlayer().hasPermission("asedit.togglebaseplate")) { armorStand.setBasePlate(!armorStand.hasBasePlate()); - } else{ + } else { sendMessage("nopermoption", "warn", "baseplate"); } } - void toggleGlowing(ArmorStand armorStand){ - if(getPlayer().hasPermission("asedit.togglearmorstandglow")){ + void toggleGlowing(ArmorStand armorStand) { + if (getPlayer().hasPermission("asedit.togglearmorstandglow")) { //Will only make it glow white - Not something we can do like with Locking. Do not request this! //Otherwise, this simple function becomes a mess to maintain. As you would need a Team generated with each //Color and I ain't going to impose that on servers. armorStand.setGlowing(!armorStand.isGlowing()); - } else{ + } else { sendMessage("nopermoption", "warn", "armorstandglow"); } } void toggleArms(ArmorStand armorStand) { - if(getPlayer().hasPermission("asedit.togglearms")){ + if (getPlayer().hasPermission("asedit.togglearms")) { armorStand.setArms(!armorStand.hasArms()); - }else{ + } else { sendMessage("nopermoption", "warn", "showarms"); } } void toggleVisible(ArmorStand armorStand) { - if(getPlayer().hasPermission("asedit.togglearmorstandvisibility") || plugin.getArmorStandVisibility()){ + if (getPlayer().hasPermission("asedit.togglearmorstandvisibility") || plugin.getArmorStandVisibility()) { armorStand.setVisible(!armorStand.isVisible()); - } else{ //Throw No Permission Message + } else { //Throw No Permission Message sendMessage("nopermoption", "warn", "armorstandvisibility"); } } @@ -472,7 +469,7 @@ void toggleVisible(ArmorStand armorStand) { void toggleItemFrameVisible(ItemFrame itemFrame) { if (getPlayer().hasPermission("asedit.toggleitemframevisibility") || plugin.invisibleItemFrames) { //Option to use perms or Config itemFrame.setVisible(!itemFrame.isVisible()); - }else { + } else { sendMessage("nopermoption", "warn", "itemframevisibility"); } } @@ -606,7 +603,6 @@ public void setFrameTarget(ArrayList itemFrames) { } - ArmorStand attemptTarget(ArmorStand armorStand) { if (target == null || !target.isValid() diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditorManager.java b/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditorManager.java index aa341a88..79778a9a 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditorManager.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/PlayerEditorManager.java @@ -73,6 +73,7 @@ public class PlayerEditorManager implements Listener { new SkyblockProtection(), new TownyProtection(), new WorldGuardProtection(), + new itemAdderProtection(), new BentoBoxProtection()); PlayerEditorManager(ArmorStandEditorPlugin plugin) { @@ -133,6 +134,7 @@ void onArmorStandInteract(PlayerInteractAtEntityEvent event) { if (player.getInventory().getItemInMainHand().getType() == Material.NAME_TAG && player.hasPermission("asedit.rename")) { ItemStack nameTag = player.getInventory().getItemInMainHand(); String name; + String name2; if (nameTag.getItemMeta() != null && nameTag.getItemMeta().hasDisplayName()) { name = nameTag.getItemMeta().getDisplayName().replace('&', ChatColor.COLOR_CHAR); } else { @@ -148,6 +150,9 @@ void onArmorStandInteract(PlayerInteractAtEntityEvent event) { as.setCustomName(null); as.setCustomNameVisible(false); event.setCancelled(true); + } else if (name.startsWith("" + ChatColor.COLOR_CHAR + "") && !player.hasPermission("asedit.rename.color")) { + event.setCancelled(true); + player.sendMessage(plugin.getLang().getMessage("renamestopped")); } else if (!name.equals("")) { // nametag is not blank event.setCancelled(true); @@ -235,7 +240,7 @@ void onArmorStandBreak(EntityDamageByEntityEvent event) { // Fixes issue #309 } } - if(event.getEntity() instanceof ArmorStand entityAS && entityAS.isDead()){ + if (event.getEntity() instanceof ArmorStand entityAS && entityAS.isDead()) { //TODO: Find a more permanent fix for "Once you destroy that armor stand, the armor stand will keep it's name and colour given by the name tag." THIS IS A TEMP SOLUTION FOR NOW. event.getEntity().setCustomName(null); event.getEntity().setCustomNameVisible(false); @@ -261,7 +266,7 @@ public void onSwitchHands(PlayerSwapHandItemsEvent event) { } else if (itemF != null && !itemF.isEmpty()) { getPlayerEditor(player.getUniqueId()).setFrameTarget(itemF); } else { - getPlayerEditor(player.getUniqueId()).sendMessage("nodoubletarget","warn"); + getPlayerEditor(player.getUniqueId()).sendMessage("nodoubletarget", "warn"); } } @@ -361,9 +366,9 @@ void applyRightTool(Player player, ArmorStand as) { @EventHandler(priority = EventPriority.LOWEST) void onRightClickTool(PlayerInteractEvent e) { if (!(e.getAction() == Action.LEFT_CLICK_AIR - || e.getAction() == Action.RIGHT_CLICK_AIR - || e.getAction() == Action.LEFT_CLICK_BLOCK - || e.getAction() == Action.RIGHT_CLICK_BLOCK)) return; + || e.getAction() == Action.RIGHT_CLICK_AIR + || e.getAction() == Action.LEFT_CLICK_BLOCK + || e.getAction() == Action.RIGHT_CLICK_BLOCK)) return; Player player = e.getPlayer(); if (!plugin.isEditTool(player.getInventory().getItemInMainHand())) return; if (plugin.requireSneaking && !player.isSneaking()) return; @@ -371,8 +376,8 @@ void onRightClickTool(PlayerInteractEvent e) { if (plugin.enablePerWorld && (!plugin.allowedWorldList.contains(player.getWorld().getName()))) { //Implementation for Per World ASE getPlayerEditor(player.getUniqueId()).sendMessage("notincorrectworld", "warn"); - e.setCancelled(true); - return; + e.setCancelled(true); + return; } e.setCancelled(true); getPlayerEditor(player.getUniqueId()).openMenu(); @@ -417,10 +422,10 @@ void onPlayerMenuSelect(InventoryClickEvent e) { } } - if (e.getInventory().getHolder() == presetHolder){ + if (e.getInventory().getHolder() == presetHolder) { e.setCancelled(true); ItemStack item = e.getCurrentItem(); - if(item != null && item.hasItemMeta()){ + if (item != null && item.hasItemMeta()) { Player player = (Player) e.getWhoClicked(); String itemName = item.getItemMeta().getDisplayName(); PlayerEditor pe = players.get(player.getUniqueId()); @@ -430,7 +435,6 @@ void onPlayerMenuSelect(InventoryClickEvent e) { } - @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true) void onPlayerMenuClose(InventoryCloseEvent e) { if (e.getInventory().getHolder() == null) return; @@ -477,7 +481,6 @@ long getTime() { } - class TickCounter implements Runnable { long ticks = 0; //I am optimistic diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/menu/EquipmentMenu.java b/src/main/java/io/github/rypofalem/armorstandeditor/menu/EquipmentMenu.java index 81aa44e7..7db42975 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/menu/EquipmentMenu.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/menu/EquipmentMenu.java @@ -87,7 +87,7 @@ private ItemStack createIcon(Material mat, String slot) { loreList.add(pe.plugin.getLang().getMessage("equipslot.description", "icondescription", slot)); //equioslot.description.msg + + @@ -273,7 +275,8 @@ maven-compiler-plugin 3.13.0 - ${java.version} + ${java.version} + ${java.version} diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/ArmorStandEditorPlugin.java b/src/main/java/io/github/rypofalem/armorstandeditor/ArmorStandEditorPlugin.java index 51b13cd8..638ab1ea 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/ArmorStandEditorPlugin.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/ArmorStandEditorPlugin.java @@ -31,7 +31,6 @@ import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.meta.Damageable; import org.bukkit.inventory.meta.ItemMeta; -import org.bukkit.plugin.PluginDescriptionFile; import org.bukkit.plugin.java.JavaPlugin; import org.bukkit.scoreboard.Scoreboard; import org.bukkit.scoreboard.Team; @@ -131,24 +130,24 @@ public void onEnable() { hasFolia = Scheduler.isFolia(); //Get NMS Version - if(hasPaper || hasFolia) { + if (hasPaper || hasFolia) { nmsVersion = getServer().getMinecraftVersion(); // Check if the Minecraft version is supported - if(nmsVersion.contains("1.20")) { + if (nmsVersion.contains("1.20")) { getLogger().log(Level.INFO, warningMCVer + "{0}", nmsVersion); getLogger().info("ArmorStandEditor is compatible with this version of Minecraft. Loading continuing."); - } else if(nmsVersion.contains("1.17") || nmsVersion.contains("1.18") || nmsVersion.contains("1.19") ){ + } else if (nmsVersion.contains("1.17") || nmsVersion.contains("1.18") || nmsVersion.contains("1.19")) { getLogger().log(Level.WARNING, warningMCVer + "{0}", nmsVersion); getLogger().warning("ArmorStandEditor is compatible with this version of Minecraft, but it is not the latest supported version."); getLogger().warning("Loading continuing, but please consider updating to the latest version."); - } else{ + } else { getLogger().log(Level.WARNING, warningMCVer + "{0}", nmsVersion); getLogger().warning("ArmorStandEditor is not compatible with this version of Minecraft. Please update to at least version 1.17. Loading failed."); getServer().getPluginManager().disablePlugin(this); getLogger().info(SEPARATOR_FIELD); } - } else{ + } else { nmsVersion = getNmsVersion(); // Check if the Minecraft version is supported if (nmsVersion.compareTo("v1_17") < 0) { @@ -172,7 +171,6 @@ public void onEnable() { } - //If Paper and Spigot are both FALSE - Disable the plugin if (!hasPaper && !hasSpigot) { getLogger().severe("This plugin requires either Paper, Spigot or one of its forks to run. This is not an error, please do not report this!"); diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/menu/Menu.java b/src/main/java/io/github/rypofalem/armorstandeditor/menu/Menu.java index aabb330c..3019c1de 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/menu/Menu.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/menu/Menu.java @@ -172,13 +172,13 @@ private void fillInventory() { if (pe.getPlayer().hasPermission("asedit.togglesize")) { size = createIcon(new ItemStack(Material.PUFFERFISH, 1), "size", "mode size"); - } else{ + } else { size = blankSlot; } if (pe.getPlayer().hasPermission("asedit.disableslots")) { disableSlots = createIcon(new ItemStack(Material.BARRIER), "disableslots", "mode disableslots"); - } else{ + } else { disableSlots = blankSlot; } @@ -198,7 +198,7 @@ private void fillInventory() { if (pe.getPlayer().hasPermission("asedit.movement")) { place = createIcon(new ItemStack(Material.RAIL, 1), "placement", "mode placement"); - } else{ + } else { place = blankSlot; } @@ -212,7 +212,7 @@ private void fillInventory() { if (pe.getPlayer().hasPermission("asedit.equipment")) { equipment = createIcon(new ItemStack(Material.CHEST, 1), "equipment", "mode equipment"); - } else{ + } else { equipment = blankSlot; } @@ -283,7 +283,6 @@ private ItemStack createIcon(ItemStack icon, String path, String command, String loreList.add(getIconDescription(path, option)); meta.setLore(loreList); meta.addItemFlags(ItemFlag.HIDE_ATTRIBUTES); - meta.addItemFlags(ItemFlag.HIDE_ADDITIONAL_TOOLTIP); icon.setItemMeta(meta); return icon; } diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml index def82420..17c41be4 100644 --- a/src/main/resources/config.yml +++ b/src/main/resources/config.yml @@ -3,7 +3,7 @@ #-----------------------------# #DO NOT CHANGE THIS - CHANGES AUTOMATICALLY PER UPDATE -version: "1.20.6-46" +version: "1.20.6-46.1" #----------- LANGUAGE #Name of the language file you wish to use diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index e5ead185..ba79408e 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -1,7 +1,7 @@ name: ArmorStandEditor main: io.github.rypofalem.armorstandeditor.ArmorStandEditorPlugin -version: 1.20.6-46 -api-version: "1.17" +version: 1.20.6-46.1 +api-version: "1.20" folia-supported: true website: https://www.spigotmc.org/resources/94503/ author: Wolfstorm From aeb633ff1ad66ebf8acbdc8d1d0430c2c9f47b9b Mon Sep 17 00:00:00 2001 From: Wolfieheart Date: Sat, 1 Jun 2024 20:15:43 +0200 Subject: [PATCH 332/369] [CORE] Revert API Version Change Signed-off-by: Wolfieheart --- src/main/resources/plugin.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index ba79408e..82d40e2a 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -1,7 +1,7 @@ name: ArmorStandEditor main: io.github.rypofalem.armorstandeditor.ArmorStandEditorPlugin version: 1.20.6-46.1 -api-version: "1.20" +api-version: "1.17" folia-supported: true website: https://www.spigotmc.org/resources/94503/ author: Wolfstorm From c58bfed98b10253033da5778575610db3b7d9694 Mon Sep 17 00:00:00 2001 From: SeemWind <50366675+SeemWind@users.noreply.github.com> Date: Wed, 5 Jun 2024 20:36:50 +0800 Subject: [PATCH 333/369] Updated zh_CN.yml (#526) * Update zh_CN.yml * Update zh_CN.yml --- src/main/resources/lang/zh_CN.yml | 116 +++++++++++++++--------------- 1 file changed, 60 insertions(+), 56 deletions(-) diff --git a/src/main/resources/lang/zh_CN.yml b/src/main/resources/lang/zh_CN.yml index f275a78c..a7592cf9 100644 --- a/src/main/resources/lang/zh_CN.yml +++ b/src/main/resources/lang/zh_CN.yml @@ -2,7 +2,7 @@ #A section symbol will be inserted between each character in this section #http://minecraft.gamepedia.com/Formatting_codes #translated by sumdream -#由 sumdream , 10935336 和 Thaumiel9 翻译 +#由 sumdream , 10935336 , LikeWind 和 Thaumiel9 翻译 iconname: 2n icondescription: 5 info: 6 @@ -103,11 +103,11 @@ noplayerhead: playerheaderror: msg: 无法获取玩家头颅 notincorrectworld: - msg: Sorry but you are not in the correct world to use ArmorStandEditor. + msg: 对不起,您没有在正确的世界中使用盔甲架编辑器。 unabledestroycreative: - msg: Unable to Destroy this Invulnerable ArmorStand in Creative Mode. + msg: 无法在创造模式中摧毁这个不可破坏的盔甲架。 stats: - msg: Here are the statistics for your ArmorStand. + msg: 以下是盔甲架的统计数据。 #警告 cantedit: @@ -115,23 +115,23 @@ cantedit: noperm: msg: 你没有权限这样做! nopermoption: - msg: You don't have permission to use the Option! - basic: Normal ArmorStand - showarms: Show Arms - armorstandvisibility: Armor Stand Visibility - baseplate: Set Baseplate Visibility - gravity: Toggle Gravity - vulnerability: Toggle Vulnerability! - itemframevisibility: Item Frame Visibility - size: Toggle ArmorStand Size - disableslots: Toggle Equipment Lock - paste: Paste ArmorStand Config - copy: Copy ArmorStand Config - reset: Reset ArmorStand Config - stats: View ArmorStand Statistics - armorstandglow: Toggle ArmorStand Glow + msg: 您无权使用 该选项! + basic: 普通盔甲架 + showarms: 显示手臂 + armorstandvisibility: 盔甲架可见性 + baseplate: 设置底板可见性 + gravity: 切换重力 + vulnerability: 切换不可破坏! + itemframevisibility: 物品展示框可见性 + size: 切换盔甲架大小 + disableslots: 切换装备锁定 + paste: 粘贴盔甲架配置 + copy: 复制盔甲架配置 + reset: 重置盔甲架配置 + stats: 查看盔甲架统计数据 + armorstandglow: 切换盔甲架发光 norangestats: - msg: Please get next to an ArmorStand before running this command. + msg: 在运行此命令之前,请靠近盔甲架。 noslotnumcom: msg: 你必须选择一个物品栏! noadjcom: @@ -156,6 +156,10 @@ xaxis: msg: X 轴 description: msg: 调整 X 轴位置 +vulnerability: + msg: 切换不可破坏 + description: + msg: 切换一个盔甲架的不可破坏状态 yaxis: msg: Y 轴 description: @@ -257,17 +261,17 @@ itemframevisible: description: msg: 显示/隐形物品展示框 blankslot: - msg: Nothing here + msg: 这里什么都没有 description: - msg: Just a placeholder item. Clicking me will not do anything. + msg: 只是一个占位符项。单击“我”不会执行任何操作。 playerheadmenu: - msg: Player Head + msg: 玩家头 description: - msg: Please use /ase playerhead + msg: 请使用 /ase playerhead armorstandglow: - msg: Toggle ArmorStand Glow + msg: 切换盔甲架发光 description: - msg: Turn ArmorStand Glowing on or off. + msg: 转动盔甲架发光打开或关闭。 #图标 (装备) disabled: @@ -291,66 +295,66 @@ equipslot: #all things related to Presets presetmenu: - msg: Preset Poses + msg: 预设姿势 description: - msg: Use a Preset Pose for your ArmorStand [Will Open another Menu] + msg: 使用预设姿势盔甲架[将打开另一个菜单] #icons (Preset Menu) sitting: - msg: Sitting + msg: 坐 description: - msg: Time to sit back and relax. + msg: 是时候坐下来放松一下了。 waving: - msg: Waving + msg: 挥舞 description: - msg: Hey, Over here! + msg: 嘿,过来! greeting 1: - msg: Greeting 1 + msg: 问候语 1 description: - msg: Greetings, I am your Armor Stand. + msg: 你好,我是你们的盔甲架。 greeting 2: - msg: Greeting 2 + msg: 问候语 2 description: - msg: Oh Hey there, I am your Armor Stand. + msg: 哦,嘿,我是你的盔甲架。 archer: - msg: Archer + msg: 射手 description: - msg: Watch out, your Armor Stand is about to shoot you :O + msg: 小心,你的装甲架即将向你开枪:O dancing: - msg: Dancing + msg: 婆娑 description: - msg: Hey there, would you like a dance? + msg: 嘿,你想跳舞吗? cheers: - msg: Cheers + msg: 干杯 description: - msg: Lets Cheers to this! + msg: 让我们为此干杯! hanging: - msg: Hanging + msg: 绞刑 description: - msg: Time to hang onto this mountain like our life depended on it. + msg: 是时候像我们的生命一样挂在这座山上了。 present: - msg: Present + msg: 礼物 description: - msg: Your ArmorStand has a present for you <3 + msg: 你的盔甲架有礼物给你 <3 fishing: - msg: Fishing + msg: 钓鱼 description: - msg: Time yo go on a fishing trip + msg: 是时候去钓鱼了 #Help for Presets backtomenu: - msg: Back to Menu + msg: 返回菜单 description: - msg: Click me to go back to the main menu + msg: 单击“我”返回主菜单 howtopreset: - msg: How To + msg: 如何 description: - msg: A short message on how to use presets. + msg: 有关如何使用预设的简短消息。 howtopresetmsg: - msg: "1. Hold the editing tool in your main hand + msg: "1. 将编辑工具握在主手中 - 2. Open the Menu with Preset Mode Active. + 2. 打开预设模式处于活动状态的菜单。 - 3. Choose one of the Armor Stand Presets that you want to select. + 3. 选择要选择的盔甲架预设之一。 - 4. After choosing, your menu will close and your chosen preset will be applied. " + 4. 选择后,您的菜单将关闭并应用您选择的预设。" From b612c162d4848efaf57c7e4392051af286993ffa Mon Sep 17 00:00:00 2001 From: "Larry (Wolfieheart)" Date: Wed, 5 Jun 2024 22:15:32 +0200 Subject: [PATCH 334/369] [CORE] ArmorStandEditor 1.20.6-46.2 (#528) [CORE] Version Bump + Fix for EquipMenu not opening. Fixes #527 Signed-off-by: Wolfieheart --- pom.xml | 15 ++++++++++++++- .../armorstandeditor/ArmorStandEditorPlugin.java | 5 +++++ .../armorstandeditor/menu/EquipmentMenu.java | 1 - src/main/resources/config.yml | 2 +- src/main/resources/plugin.yml | 2 +- 5 files changed, 21 insertions(+), 4 deletions(-) diff --git a/pom.xml b/pom.xml index 48075e90..fa1d2d66 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ io.github.rypofalem.armorstandeditor armorstandeditor jar - 1.20.6-46.1 + 1.20.6-46.2 armorstandeditor https://maven.apache.org @@ -117,6 +117,19 @@ 4.17.0 provided + + + dev.folia + folia-api + 1.20.4-R0.1-SNAPSHOT + provided + + + adventure-api + net.kyori + + + com.sk89q.worldguard diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/ArmorStandEditorPlugin.java b/src/main/java/io/github/rypofalem/armorstandeditor/ArmorStandEditorPlugin.java index 638ab1ea..573b61b9 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/ArmorStandEditorPlugin.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/ArmorStandEditorPlugin.java @@ -436,6 +436,11 @@ public boolean getHasFolia() { return Scheduler.isFolia(); } + //Will be useful for later..... + public String getMinecraftVersion(){ + return this.nmsVersion; + } + public String getArmorStandEditorVersion() { return getConfig().getString("version"); } diff --git a/src/main/java/io/github/rypofalem/armorstandeditor/menu/EquipmentMenu.java b/src/main/java/io/github/rypofalem/armorstandeditor/menu/EquipmentMenu.java index 7db42975..e8e29dd7 100644 --- a/src/main/java/io/github/rypofalem/armorstandeditor/menu/EquipmentMenu.java +++ b/src/main/java/io/github/rypofalem/armorstandeditor/menu/EquipmentMenu.java @@ -87,7 +87,6 @@ private ItemStack createIcon(Material mat, String slot) { loreList.add(pe.plugin.getLang().getMessage("equipslot.description", "icondescription", slot)); //equioslot.description.msg

    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