Added a lot of functionality, still haven't tested anything.

This commit is contained in:
2025-03-26 14:36:22 -05:00
parent 7f15410220
commit 352c77449b
12 changed files with 414 additions and 64 deletions

View File

@@ -1,31 +1,164 @@
package me.trouper.armorsmp.data;
import io.github.itzispyder.pdk.plugin.builders.ItemBuilder;
import me.trouper.armorsmp.ArmorSMP;
import org.bukkit.Material;
import org.bukkit.enchantments.Enchantment;
import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;
public enum ArmorTier {
NONE(0),
LEATHER(1),
CHAINMAIL(2),
GOLD(3),
IRON(4),
DIAMOND(5);
NONE(0,
new ItemStack(Material.AIR),
new ItemStack(Material.AIR),
new ItemStack(Material.AIR),
new ItemStack(Material.AIR)
),
LEATHER(1,
ItemBuilder.create()
.material(Material.LEATHER_HELMET)
.enchant(Enchantment.BINDING_CURSE, 1)
.build(),
ItemBuilder.create()
.material(Material.LEATHER_CHESTPLATE)
.enchant(Enchantment.BINDING_CURSE, 1)
.build(),
ItemBuilder.create()
.material(Material.LEATHER_LEGGINGS)
.enchant(Enchantment.BINDING_CURSE, 1)
.build(),
ItemBuilder.create()
.material(Material.LEATHER_BOOTS)
.enchant(Enchantment.BINDING_CURSE, 1)
.build()
),
CHAINMAIL(2,
ItemBuilder.create()
.material(Material.CHAINMAIL_HELMET)
.enchant(Enchantment.BINDING_CURSE, 1)
.build(),
ItemBuilder.create()
.material(Material.CHAINMAIL_CHESTPLATE)
.enchant(Enchantment.BINDING_CURSE, 1)
.build(),
ItemBuilder.create()
.material(Material.CHAINMAIL_LEGGINGS)
.enchant(Enchantment.BINDING_CURSE, 1)
.build(),
ItemBuilder.create()
.material(Material.CHAINMAIL_BOOTS)
.enchant(Enchantment.BINDING_CURSE, 1)
.build()
),
GOLD(3,
ItemBuilder.create()
.material(Material.GOLDEN_HELMET)
.enchant(Enchantment.BINDING_CURSE, 1)
.build(),
ItemBuilder.create()
.material(Material.GOLDEN_CHESTPLATE)
.enchant(Enchantment.BINDING_CURSE, 1)
.build(),
ItemBuilder.create()
.material(Material.GOLDEN_LEGGINGS)
.enchant(Enchantment.BINDING_CURSE, 1)
.build(),
ItemBuilder.create()
.material(Material.GOLDEN_BOOTS)
.enchant(Enchantment.BINDING_CURSE, 1)
.build()
),
IRON(4,
ItemBuilder.create()
.material(Material.IRON_HELMET)
.enchant(Enchantment.BINDING_CURSE, 1)
.build(),
ItemBuilder.create()
.material(Material.IRON_CHESTPLATE)
.enchant(Enchantment.BINDING_CURSE, 1)
.build(),
ItemBuilder.create()
.material(Material.IRON_LEGGINGS)
.enchant(Enchantment.BINDING_CURSE, 1)
.build(),
ItemBuilder.create()
.material(Material.IRON_BOOTS)
.enchant(Enchantment.BINDING_CURSE, 1)
.build()
),
DIAMOND(5,
ItemBuilder.create()
.material(Material.DIAMOND_HELMET)
.enchant(Enchantment.BINDING_CURSE, 1)
.build(),
ItemBuilder.create()
.material(Material.DIAMOND_CHESTPLATE)
.enchant(Enchantment.BINDING_CURSE, 1)
.build(),
ItemBuilder.create()
.material(Material.DIAMOND_LEGGINGS)
.enchant(Enchantment.BINDING_CURSE, 1)
.build(),
ItemBuilder.create()
.material(Material.DIAMOND_BOOTS)
.enchant(Enchantment.BINDING_CURSE, 1)
.build()
);
private int numeric;
private final ItemStack helmet;
private final ItemStack chestplate;
private final ItemStack leggings;
private final ItemStack boots;
private final int numeric;
ArmorTier(int numeric) {
ArmorTier(int numeric, ItemStack helmet, ItemStack chestplate, ItemStack leggings, ItemStack boots) {
this.numeric = numeric;
}
public int getNumeric() {
return numeric;
this.helmet = helmet;
this.chestplate = chestplate;
this.leggings = leggings;
this.boots = boots;
}
public static ArmorTier getTier(int numeric) {
for (ArmorTier value : values()) {
if (value.getNumeric() == numeric) return value;
if (value.getNumeric() < 1) return NONE;
if (value.getNumeric() > 5) {
return DIAMOND;
}
if (value.getNumeric() > 5) return DIAMOND;
}
return NONE;
}
public static ArmorTier inferTier(Player p) {
for (ArmorTier value : values()) {
if (p.getInventory().getHelmet() == null || p.getInventory().getHelmet().isEmpty()) return NONE;
if (p.getInventory().getChestplate() == null || p.getInventory().getHelmet().isEmpty()) return NONE;
if (p.getInventory().getLeggings() == null || p.getInventory().getHelmet().isEmpty()) return NONE;
if (p.getInventory().getBoots() == null || p.getInventory().getHelmet().isEmpty()) return NONE;
if (value.getHelmet().getType().equals(p.getInventory().getHelmet().getType())) return value;
if (value.getChestplate().getType().equals(p.getInventory().getChestplate().getType())) return value;
if (value.getLeggings().getType().equals(p.getInventory().getLeggings().getType())) return value;
if (value.getBoots().getType().equals(p.getInventory().getBoots().getType())) return value;
}
return ArmorSMP.getInstance().getManager().armor.getTier(p);
}
public int getNumeric() {
return numeric;
}
public ItemStack getHelmet() {
return helmet;
}
public ItemStack getChestplate() {
return chestplate;
}
public ItemStack getLeggings() {
return leggings;
}
public ItemStack getBoots() {
return boots;
}
}

View File

@@ -8,6 +8,7 @@ import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;
public class Storage implements JsonSerializable<Storage> {
@@ -17,10 +18,16 @@ public class Storage implements JsonSerializable<Storage> {
}
public UserData userData = new UserData();
public Uniques uniques = new Uniques();
public Map<String,Boolean> updateCache = new ConcurrentHashMap<>();
public class Uniques {
public Map<Unique, String> owners = new HashMap<>();
}
public class UserData {
public Set<String> tipsDisabled = new HashSet<>();
public Map<String, Integer> playerTiers = new HashMap<>();
public Map<String, ArmorTier> playerTiers = new HashMap<>();
public Map<String, Set<String>> playerTrust = new HashMap<>();
}
}

View File

@@ -6,7 +6,7 @@ import org.bukkit.Material;
import org.bukkit.enchantments.Enchantment;
import org.bukkit.inventory.ItemStack;
public enum NetheritePiece {
public enum Unique {
HELMET(ItemBuilder.create()
.material(Material.NETHERITE_HELMET)
.lore(Text.legacyColor("&bAbilities:"))
@@ -18,6 +18,7 @@ public enum NetheritePiece {
.enchant(Enchantment.MENDING,1)
.enchant(Enchantment.RESPIRATION,3)
.enchant(Enchantment.AQUA_AFFINITY,1)
.customModelData(2)
.build()
),
CHESTPLATE(ItemBuilder.create()
@@ -30,6 +31,7 @@ public enum NetheritePiece {
.enchant(Enchantment.PROTECTION,4)
.enchant(Enchantment.UNBREAKING,3)
.enchant(Enchantment.MENDING,1)
.customModelData(3)
.build()
),
LEGGINGS(ItemBuilder.create()
@@ -42,6 +44,7 @@ public enum NetheritePiece {
.enchant(Enchantment.UNBREAKING,3)
.enchant(Enchantment.MENDING,1)
.enchant(Enchantment.SWIFT_SNEAK,3)
.customModelData(4)
.build()
),
BOOTS(ItemBuilder.create()
@@ -56,12 +59,64 @@ public enum NetheritePiece {
.enchant(Enchantment.SOUL_SPEED,3)
.enchant(Enchantment.FEATHER_FALLING,4)
.enchant(Enchantment.DEPTH_STRIDER,3)
.customModelData(5)
.build()
),
MACE(ItemBuilder.create()
.material(Material.MACE)
.lore(Text.legacyColor("&bAbilities:"))
.lore(Text.legacyColor("&3| &7Speed 1"))
.enchant(Enchantment.UNBREAKING,1)
.enchant(Enchantment.WIND_BURST,2)
.enchant(Enchantment.DENSITY,3)
.enchant(Enchantment.MENDING,1)
.customModelData(6)
.build()
),
SWORD(ItemBuilder.create()
.material(Material.NETHERITE_SWORD)
.enchant(Enchantment.UNBREAKING,3)
.enchant(Enchantment.MENDING,1)
.enchant(Enchantment.SHARPNESS,5)
.customModelData(7)
.build()
),
AXE(ItemBuilder.create()
.material(Material.NETHERITE_AXE)
.enchant(Enchantment.UNBREAKING,3)
.enchant(Enchantment.MENDING,1)
.enchant(Enchantment.SHARPNESS,5)
.enchant(Enchantment.EFFICIENCY,5)
.customModelData(8)
.build()
),
PICKAXE(ItemBuilder.create()
.material(Material.NETHERITE_PICKAXE)
.enchant(Enchantment.UNBREAKING,3)
.enchant(Enchantment.MENDING,1)
.enchant(Enchantment.EFFICIENCY,5)
.customModelData(9)
.build()
),
SHOVEL(ItemBuilder.create()
.material(Material.NETHERITE_SHOVEL)
.enchant(Enchantment.UNBREAKING,3)
.enchant(Enchantment.MENDING,1)
.enchant(Enchantment.EFFICIENCY,5)
.customModelData(10)
.build()
),
HOE(ItemBuilder.create()
.material(Material.NETHERITE_HOE)
.enchant(Enchantment.UNBREAKING,3)
.enchant(Enchantment.MENDING,1)
.enchant(Enchantment.EFFICIENCY,5)
.customModelData(11)
.build()
);
private ItemStack inGame;
NetheritePiece(ItemStack inGame) {
Unique(ItemStack inGame) {
this.inGame = inGame;
}

View File

@@ -7,7 +7,7 @@ import io.github.itzispyder.pdk.commands.Permission;
import io.github.itzispyder.pdk.commands.completions.CompletionBuilder;
import me.trouper.armorsmp.ArmorSMP;
import me.trouper.armorsmp.data.ArmorTier;
import me.trouper.armorsmp.data.NetheritePiece;
import me.trouper.armorsmp.data.Unique;
import me.trouper.armorsmp.server.crafting.ArmorUpgrade;
import me.trouper.armorsmp.utils.Text;
import org.bukkit.Bukkit;
@@ -17,7 +17,6 @@ import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import java.util.Arrays;
import java.util.List;
@CommandRegistry(value = "armorsmp", permission = @Permission("op"), printStackTrace = true)
public class AdminCommand implements CustomCommand {
@@ -57,7 +56,7 @@ public class AdminCommand implements CustomCommand {
Text.sendError(sender, "Usage: /armorsmp give <upgrader|netherite|mace> ...");
return;
}
String type = args.get(1).toString().toLowerCase();
final String type = args.get(1).toString().toLowerCase();
switch (type) {
case "upgrader" -> {
@@ -80,7 +79,7 @@ public class AdminCommand implements CustomCommand {
Text.sendError(sender, "Usage: /armorsmp give netherite <piece> <player>");
return;
}
NetheritePiece piece = args.get(2).toEnum(NetheritePiece.class);
final Unique piece = args.get(2).toEnum(Unique.class);
if (piece == null) {
Text.sendMessage(false, Text.Pallet.ERROR,sender,"Error: {0} is not a valid Netherite piece.",args.get(2).toString());
return;
@@ -120,7 +119,7 @@ public class AdminCommand implements CustomCommand {
Text.sendError(sender, "Usage: /armorsmp toggle <end|nether|mace>");
return;
}
String feature = args.get(1).toString().toLowerCase();
final String feature = args.get(1).toString().toLowerCase();
// TODO: toggles
Text.sendMessage(false, Text.Pallet.SUCCESS, sender, "Toggled the {0}",feature);
}
@@ -133,7 +132,7 @@ public class AdminCommand implements CustomCommand {
Text.sendMessage(false, Text.Pallet.SUCCESS, sender, "Reset Mace");
}
case "remove" -> {
String type = args.get(1).toString().toLowerCase();
final String type = args.get(1).toString().toLowerCase();
switch (type) {
case "netherite" -> {
@@ -141,7 +140,7 @@ public class AdminCommand implements CustomCommand {
Text.sendError(sender, "Usage: /armorsmp remove <piece> <player>");
return;
}
NetheritePiece piece = args.get(2).toEnum(NetheritePiece.class);
final Unique piece = args.get(2).toEnum(Unique.class);
Player target = Bukkit.getPlayer(args.get(3).toString());
if (target == null) {
@@ -169,7 +168,7 @@ public class AdminCommand implements CustomCommand {
.then(b.arg("upgrader")
.then(b.argOnlinePlayers()))
.then(b.arg("netherite")
.then(b.argEnum(NetheritePiece.class)
.then(b.argEnum(Unique.class)
.then(b.argOnlinePlayers())))
.then(b.arg("mace")
.then(b.argOnlinePlayers()))
@@ -179,7 +178,7 @@ public class AdminCommand implements CustomCommand {
).then(
b.arg("remove")
.then(b.arg("netherite")
.then(b.argEnum(NetheritePiece.class)
.then(b.argEnum(Unique.class)
.then(b.argOnlinePlayers())))
).then(b.arg("toggle")
.then(b.arg("end","nether","mace")));

View File

@@ -2,8 +2,10 @@ package me.trouper.armorsmp.server.events;
import io.github.itzispyder.pdk.events.CustomListener;
import me.trouper.armorsmp.ArmorSMP;
import me.trouper.armorsmp.data.Unique;
import me.trouper.armorsmp.utils.Text;
import me.trouper.armorsmp.utils.Verbose;
import org.bukkit.Material;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.inventory.CraftItemEvent;
@@ -13,12 +15,27 @@ public class CraftEvent implements CustomListener {
@EventHandler
public void onCraft(CraftItemEvent e) {
final ItemStack result = e.getRecipe().getResult();
ItemStack result = e.getRecipe().getResult();
final String name = result.getType().name();
final Player p = (Player) e.getWhoClicked();
Player p = (Player) e.getWhoClicked();
Verbose.send("Handling craft for %s, result: %s", p.getName(), result.getType().name());
if (result.getType().equals(Material.MACE)) {
if (!ArmorSMP.getInstance().getManager().io.config.maceCraftingEnabled) {
e.setCancelled(true);
return;
}
result.addEnchantments(Unique.MACE.getInGameItem().getEnchantments());
result.lore(Unique.MACE.getInGameItem().lore());
result.setItemMeta(Unique.MACE.getInGameItem().getItemMeta());
return;
}
if (!name.contains("HELMET")
&& !name.contains("CHESTPLATE")
&& !name.contains("LEGGINGS")
@@ -28,7 +45,6 @@ public class CraftEvent implements CustomListener {
&& !name.contains("NETHERITE_AXE")
&& !name.contains("NETHERITE_SHOVEL")
&& !name.contains("NETHERITE_HOE")
&& (!ArmorSMP.getInstance().getManager().io.config.maceCraftingEnabled && !name.contains("MACE"))
) return;
Verbose.send("%s Attempted to craft a disabled item.", p.getName());

View File

@@ -0,0 +1,21 @@
package me.trouper.armorsmp.server.events;
import io.github.itzispyder.pdk.events.CustomListener;
import me.trouper.armorsmp.ArmorSMP;
import me.trouper.armorsmp.data.ArmorTier;
import me.trouper.armorsmp.server.crafting.ArmorUpgrade;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.entity.PlayerDeathEvent;
public class DeathEvent implements CustomListener {
@EventHandler
public void onDeath(PlayerDeathEvent e) {
Player p = e.getEntity();
final ArmorTier tier = ArmorSMP.getInstance().getManager().armor.getTier(p);
if (tier.equals(ArmorTier.NONE)) return;
if (ArmorSMP.getInstance().getManager().armor.downTier(p)) {
e.getDrops().add(ArmorUpgrade.ARMOR_UGPRADE);
}
}
}

View File

@@ -0,0 +1,16 @@
package me.trouper.armorsmp.server.events;
import io.github.itzispyder.pdk.events.CustomListener;
import me.trouper.armorsmp.ArmorSMP;
import org.bukkit.entity.Player;
import org.bukkit.event.player.PlayerJoinEvent;
public class JoinEvent implements CustomListener {
public void onJoin(PlayerJoinEvent e) {
Player p = e.getPlayer();
if (ArmorSMP.getInstance().getManager().io.storage.updateCache.containsKey(e.getPlayer().getUniqueId().toString())) {
ArmorSMP.getInstance().getManager().armor.updateArmor(p,ArmorSMP.getInstance().getManager().io.storage.updateCache.get(p.getUniqueId().toString()));
ArmorSMP.getInstance().getManager().io.storage.updateCache.remove(p.getUniqueId().toString());
}
}
}

View File

@@ -0,0 +1,27 @@
package me.trouper.armorsmp.server.events;
import io.github.itzispyder.pdk.events.CustomListener;
import me.trouper.armorsmp.ArmorSMP;
import me.trouper.armorsmp.data.ArmorTier;
import me.trouper.armorsmp.server.crafting.ArmorUpgrade;
import me.trouper.armorsmp.utils.Text;
import org.bukkit.entity.Player;
import org.bukkit.event.player.PlayerInteractEvent;
import org.bukkit.inventory.ItemStack;
public class UpgradeRedeemEvent implements CustomListener {
public void onClick(PlayerInteractEvent e) {
Player p = e.getPlayer();
ItemStack holding = e.getItem();
final ArmorTier tier = ArmorSMP.getInstance().getManager().armor.getTier(p);
if (holding == null || holding.isEmpty()) return;
if (!holding.equals(ArmorUpgrade.ARMOR_UGPRADE)) return;
if (ArmorSMP.getInstance().getManager().armor.upTier(p)) {
holding.setAmount(holding.getAmount() - 1);
Text.sendMessage(true, Text.Pallet.INFO,p,"Successfully redeemed armor upgrade! Tier {0} -> Tier {1}",tier,ArmorSMP.getInstance().getManager().armor.getTier(p));
}
}
}

View File

@@ -3,8 +3,15 @@ package me.trouper.armorsmp.server.systems;
import me.trouper.armorsmp.ArmorSMP;
import me.trouper.armorsmp.data.ArmorTier;
import me.trouper.armorsmp.data.Storage;
import me.trouper.armorsmp.data.Unique;
import me.trouper.armorsmp.utils.Verbose;
import org.bukkit.Material;
import org.bukkit.OfflinePlayer;
import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.PlayerInventory;
import java.util.concurrent.atomic.AtomicReference;
public class ArmorBackend {
@@ -14,38 +21,107 @@ public class ArmorBackend {
storage = ArmorSMP.getInstance().getManager().io.storage;
}
public boolean shouldTransferEnchants(OfflinePlayer target, ArmorTier request) {
final ArmorTier current = getTier(target);
return request.getNumeric() >= current.getNumeric();
}
public void setTier(OfflinePlayer target, ArmorTier tier) {
setTier(target, tier, shouldTransferEnchants(target, tier));
}
public void setTier(OfflinePlayer target, ArmorTier tier, boolean transferEnchants) {
Verbose.send("Setting tier of %s to %s",target.getName(),tier);
storage.userData.playerTiers.put(target.getUniqueId().toString(),tier.getNumeric());
storage.userData.playerTiers.put(target.getUniqueId().toString(),tier);
if (target.getPlayer() != null && target.isOnline()) updateArmor(target.getPlayer(), transferEnchants);
else storage.updateCache.put(target.getUniqueId().toString(),transferEnchants);
storage.save();
}
public void setTier(OfflinePlayer target, int tier) {
Verbose.send("Setting tier of %s to %s",target.getName(),tier);
setTier(target,ArmorTier.getTier(tier));
public boolean downTier(OfflinePlayer target) {
final int numeric = storage.userData.playerTiers.get(target.getUniqueId().toString()).getNumeric();
if (numeric < 0) return false;
setTier(target,ArmorTier.getTier(numeric - 1),true);
return false;
}
public void downTier(OfflinePlayer target) {
int numeric = storage.userData.playerTiers.get(target.getUniqueId().toString());
setTier(target,ArmorTier.getTier(numeric - 1));
}
public boolean upTier(OfflinePlayer target) {
final int numeric = storage.userData.playerTiers.get(target.getUniqueId().toString()).getNumeric();
if (numeric > 4) return false;
public void upTier(OfflinePlayer target) {
int numeric = storage.userData.playerTiers.get(target.getUniqueId().toString());
setTier(target,ArmorTier.getTier(numeric + 1));
setTier(target,ArmorTier.getTier(numeric + 1),false);
return true;
}
public ArmorTier getTier(OfflinePlayer target) {
Verbose.send("Getting tier of %s", target.getName());
int numeric = storage.userData.playerTiers.get(target.getUniqueId().toString());
for (ArmorTier value : ArmorTier.values()) {
if (value.getNumeric() == numeric) return value;
if (value.getNumeric() > 5) {
ArmorSMP.getInstance().getLogger().warning("Detected a player above tier 5 (diamond) this should not be possible. Setting them back to diamond.");
setTier(target,ArmorTier.DIAMOND);
return ArmorTier.DIAMOND;
return storage.userData.playerTiers.getOrDefault(target.getUniqueId().toString(),ArmorTier.NONE);
}
public boolean verifyArmor(Player p) {
PlayerInventory e = p.getInventory();
final ArmorTier tier = getTier(p);
final Material correctHelmet = tier.getHelmet().getType();
final Material correctChestplate = tier.getChestplate().getType();
final Material correctLeggings = tier.getLeggings().getType();
final Material correctBoots = tier.getBoots().getType();
final Material helmet = e.getHelmet() == null ? Material.AIR : e.getHelmet().getType() == Material.NETHERITE_HELMET ? correctHelmet : e.getHelmet().getType();
final Material chestplate = e.getChestplate() == null ? Material.AIR : e.getChestplate().getType() == Material.NETHERITE_CHESTPLATE ? correctChestplate : e.getChestplate().getType();
final Material leggings = e.getLeggings() == null ? Material.AIR : e.getLeggings().getType() == Material.NETHERITE_LEGGINGS ? correctLeggings : e.getLeggings().getType();
final Material boots = e.getBoots() == null ? Material.AIR : e.getBoots().getType() == Material.NETHERITE_BOOTS ? correctBoots : e.getBoots().getType();
return helmet.equals(correctHelmet) && chestplate.equals(correctChestplate) && leggings.equals(correctLeggings) && boots.equals(correctBoots);
}
return ArmorTier.NONE;
public void updateArmor(Player p, boolean transferEnchants) {
PlayerInventory e = p.getInventory();
final ArmorTier tier = getTier(p);
final ItemStack helmet = e.getHelmet();
final ItemStack chestplate = e.getChestplate();
final ItemStack leggings = e.getLeggings();
final ItemStack boots = e.getBoots();
if (tier.equals(ArmorTier.NONE)) {
e.setHelmet(new ItemStack(Material.AIR));
e.setChestplate(new ItemStack(Material.AIR));
e.setLeggings(new ItemStack(Material.AIR));
e.setBoots(new ItemStack(Material.AIR));
return;
}
AtomicReference<ItemStack> updatedHelmet = new AtomicReference<>(tier.getHelmet());
AtomicReference<ItemStack> updatedChestplate = new AtomicReference<>(tier.getChestplate());
AtomicReference<ItemStack> updatedLeggings = new AtomicReference<>(tier.getLeggings());
AtomicReference<ItemStack> updatedBoots = new AtomicReference<>(tier.getBoots());
if (transferEnchants) {
if (helmet != null) updatedHelmet.get().addEnchantments(helmet.getEnchantments());
if (chestplate != null) updatedChestplate.get().addEnchantments(chestplate.getEnchantments());
if (leggings != null) updatedLeggings.get().addEnchantments(leggings.getEnchantments());
if (boots != null) updatedBoots.get().addEnchantments(boots.getEnchantments());
}
if (storage.uniques.owners.containsValue(p.getUniqueId().toString())) {
storage.uniques.owners.forEach((unique,owner)->{
if (owner.equals(p.getUniqueId().toString())) {
if (unique.equals(Unique.HELMET)) updatedHelmet.set(unique.getInGameItem());
if (unique.equals(Unique.CHESTPLATE)) updatedChestplate.set(unique.getInGameItem());
if (unique.equals(Unique.LEGGINGS)) updatedLeggings.set(unique.getInGameItem());
if (unique.equals(Unique.BOOTS)) updatedBoots.set(unique.getInGameItem());
}
});
}
e.setHelmet(updatedHelmet.get());
e.setChestplate(updatedChestplate.get());
e.setLeggings(updatedLeggings.get());
e.setBoots(updatedBoots.get());
}
}

View File

@@ -17,7 +17,7 @@ public class TrustBackend {
public boolean addTrust(Player truster, UUID trustee) {
Set<String> trustees = getTrustees(truster);
boolean added = trustees.add(trustee.toString());
final boolean added = trustees.add(trustee.toString());
storage.userData.playerTrust.put(truster.getUniqueId().toString(),trustees);
storage.save();
return added;
@@ -25,7 +25,7 @@ public class TrustBackend {
public boolean removeTrust(Player truster, UUID trustee) {
Set<String> trustees = getTrustees(truster);
boolean removed = trustees.remove(trustee.toString());
final boolean removed = trustees.remove(trustee.toString());
storage.userData.playerTrust.put(truster.getUniqueId().toString(),trustees);
storage.save();
return removed;

View File

@@ -2,7 +2,6 @@ package me.trouper.armorsmp.utils;
import io.github.itzispyder.pdk.utils.misc.Randomizer;
import me.trouper.armorsmp.ArmorSMP;
import net.kyori.adventure.audience.Audience;
import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.format.NamedTextColor;
import net.kyori.adventure.text.format.TextColor;
@@ -11,7 +10,10 @@ import net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import java.util.*;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

View File

@@ -4,8 +4,6 @@ import me.trouper.armorsmp.ArmorSMP;
import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
import java.util.Arrays;
public class Verbose {
public static void send(int backtrace, String message, Object... args) {