From bd18f3f4a1f322145de65ccadc8d09114c2dc8bd Mon Sep 17 00:00:00 2001 From: sky Date: Thu, 16 Apr 2020 00:00:22 +0800 Subject: [PATCH] Update 5.26 --- build.gradle | 2 +- .../taboolib/module/lite/SimpleEquip.java | 125 ++++++++++++++++-- .../io/izzel/taboolib/util/lite/Numbers.java | 8 +- .../taboolib/util/tag/TagDataHandler.java | 15 +++ .../taboolib/util/tag/TagPlayerData.java | 22 ++- 5 files changed, 158 insertions(+), 14 deletions(-) diff --git a/build.gradle b/build.gradle index fe8d070..b5d17fc 100644 --- a/build.gradle +++ b/build.gradle @@ -6,7 +6,7 @@ plugins { } group = 'me.skymc' -version = '5.25' +version = '5.26' sourceCompatibility = 1.8 targetCompatibility = 1.8 diff --git a/src/main/scala/io/izzel/taboolib/module/lite/SimpleEquip.java b/src/main/scala/io/izzel/taboolib/module/lite/SimpleEquip.java index fa71c3d..a965636 100644 --- a/src/main/scala/io/izzel/taboolib/module/lite/SimpleEquip.java +++ b/src/main/scala/io/izzel/taboolib/module/lite/SimpleEquip.java @@ -1,5 +1,7 @@ package io.izzel.taboolib.module.lite; +import io.izzel.taboolib.Version; +import org.bukkit.entity.LivingEntity; import org.bukkit.entity.Player; import org.bukkit.inventory.EquipmentSlot; import org.bukkit.inventory.ItemStack; @@ -29,6 +31,7 @@ public enum SimpleEquip { private EquipmentSlot bukkit; private String nms; private int slot; + private boolean supported = Version.isAfter(Version.v1_9); SimpleEquip(EquipmentSlot bukkit, String nms, int slot) { this.bukkit = bukkit; @@ -37,18 +40,118 @@ public enum SimpleEquip { } public void setItem(Player player, ItemStack item) { - if (this != HAND) { - player.getInventory().setItem(slot, item); - } else { - player.setItemInHand(item); + setItem((LivingEntity) player, item); + } + + public void setItem(LivingEntity entity, ItemStack item) { + switch (this) { + case HAND: + if (supported) { + entity.getEquipment().setItemInMainHand(item); + } else { + entity.getEquipment().setItemInHand(item); + } + break; + case OFF_HAND: + if (supported) { + entity.getEquipment().setItemInOffHand(item); + } + break; + case FEET: + entity.getEquipment().setBoots(item); + break; + case LEGS: + entity.getEquipment().setLeggings(item); + break; + case CHEST: + entity.getEquipment().setChestplate(item); + break; + case HEAD: + entity.getEquipment().setHelmet(item); + break; + } + } + + public void setItemDropChance(LivingEntity entity, float chance) { + switch (this) { + case HAND: + if (supported) { + entity.getEquipment().setItemInMainHandDropChance(chance); + } else { + entity.getEquipment().setItemInHandDropChance(chance); + } + break; + case OFF_HAND: + if (supported) { + entity.getEquipment().setItemInOffHandDropChance(chance); + } + break; + case FEET: + entity.getEquipment().setBootsDropChance(chance); + break; + case LEGS: + entity.getEquipment().setLeggingsDropChance(chance); + break; + case CHEST: + entity.getEquipment().setChestplateDropChance(chance); + break; + case HEAD: + entity.getEquipment().setHelmetDropChance(chance); + break; } } public ItemStack getItem(Player player) { - if (this != HAND) { - return player.getInventory().getItem(slot); - } else { - return player.getItemInHand(); + return getItem((LivingEntity) player); + } + + public ItemStack getItem(LivingEntity entity) { + switch (this) { + case HAND: + if (supported) { + return entity.getEquipment().getItemInMainHand(); + } else { + return entity.getEquipment().getItemInHand(); + } + case OFF_HAND: + if (supported) { + return entity.getEquipment().getItemInOffHand(); + } + case FEET: + return entity.getEquipment().getBoots(); + case LEGS: + return entity.getEquipment().getLeggings(); + case CHEST: + return entity.getEquipment().getChestplate(); + case HEAD: + return entity.getEquipment().getHelmet(); + default: + return null; + } + } + + public float getItemDropChance(LivingEntity entity) { + switch (this) { + case HAND: + if (supported) { + return entity.getEquipment().getItemInMainHandDropChance(); + } else { + return entity.getEquipment().getItemInHandDropChance(); + } + case OFF_HAND: + if (supported) { + return entity.getEquipment().getItemInOffHandDropChance(); + } + case FEET: + return entity.getEquipment().getBootsDropChance(); + case LEGS: + return entity.getEquipment().getLeggingsDropChance(); + case CHEST: + return entity.getEquipment().getChestplateDropChance(); + case HEAD: + return entity.getEquipment().getHelmetDropChance(); + default: + return 0f; } } @@ -61,7 +164,11 @@ public enum SimpleEquip { } public static Map getItems(Player player) { - return Arrays.stream(values()).collect(Collectors.toMap(equipment -> equipment, equipment -> equipment.getItem(player), (a, b) -> b)); + return getItems((LivingEntity) player); + } + + public static Map getItems(LivingEntity entity) { + return Arrays.stream(values()).collect(Collectors.toMap(equipment -> equipment, equipment -> equipment.getItem(entity), (a, b) -> b)); } // ********************************* diff --git a/src/main/scala/io/izzel/taboolib/util/lite/Numbers.java b/src/main/scala/io/izzel/taboolib/util/lite/Numbers.java index 72e28ad..a9409fd 100644 --- a/src/main/scala/io/izzel/taboolib/util/lite/Numbers.java +++ b/src/main/scala/io/izzel/taboolib/util/lite/Numbers.java @@ -12,12 +12,16 @@ public class Numbers { private static Random random = new Random(); private static DecimalFormat doubleFormat = new DecimalFormat("#.##"); + public static Random getRandom() { + return random; + } + public static boolean random(double v) { return random.nextDouble() <= v; } - public static Random getRandom() { - return random; + public static int random(int v) { + return random.nextInt(v); } public static Double format(Double num) { diff --git a/src/main/scala/io/izzel/taboolib/util/tag/TagDataHandler.java b/src/main/scala/io/izzel/taboolib/util/tag/TagDataHandler.java index e567037..4f84196 100644 --- a/src/main/scala/io/izzel/taboolib/util/tag/TagDataHandler.java +++ b/src/main/scala/io/izzel/taboolib/util/tag/TagDataHandler.java @@ -49,6 +49,10 @@ public class TagDataHandler implements Listener { return getPlayerDataComputeIfAbsent(player).getNameDisplay(); } + public boolean isNameVisibility(Player player) { + return getPlayerDataComputeIfAbsent(player).isNameVisibility(); + } + public void setPrefix(Player player, String prefix) { updatePlayerVariable(getPlayerDataComputeIfAbsent(player).setPrefix(prefix)); updatePlayerListName(player); @@ -64,6 +68,11 @@ public class TagDataHandler implements Listener { updatePlayerListName(player); } + public void setNameVisibility(Player player, boolean v) { + updatePlayerVariable(getPlayerDataComputeIfAbsent(player).setNameVisibility(v)); + updatePlayerListName(player); + } + public void resetVariable(Player player) { updatePlayerVariable(getPlayerDataComputeIfAbsent(player).reset()); updatePlayerListName(player); @@ -104,6 +113,12 @@ public class TagDataHandler implements Listener { if (entryTeam.getSuffix() == null || !entryTeam.getSuffix().equals(playerData.getSuffix())) { entryTeam.setSuffix(playerData.getSuffix()); } + Team.OptionStatus option = entryTeam.getOption(Team.Option.NAME_TAG_VISIBILITY); + if (option == Team.OptionStatus.ALWAYS && !playerData.isNameVisibility()) { + entryTeam.setOption(Team.Option.NAME_TAG_VISIBILITY, Team.OptionStatus.NEVER); + } else if (option == Team.OptionStatus.NEVER && playerData.isNameVisibility()) { + entryTeam.setOption(Team.Option.NAME_TAG_VISIBILITY, Team.OptionStatus.ALWAYS); + } if (TabooLib.getConfig().getBoolean("TABLIST-AUTO-CLEAN-TEAM", true)) { TagUtils.cleanEmptyTeamInScoreboard(scoreboard); } diff --git a/src/main/scala/io/izzel/taboolib/util/tag/TagPlayerData.java b/src/main/scala/io/izzel/taboolib/util/tag/TagPlayerData.java index df290e0..7f97777 100644 --- a/src/main/scala/io/izzel/taboolib/util/tag/TagPlayerData.java +++ b/src/main/scala/io/izzel/taboolib/util/tag/TagPlayerData.java @@ -1,7 +1,6 @@ package io.izzel.taboolib.util.tag; import io.izzel.taboolib.TabooLib; -import io.izzel.taboolib.util.Strings; import org.bukkit.entity.Player; import java.util.Objects; @@ -18,6 +17,7 @@ public class TagPlayerData { private String nameDisplay; private String prefix; private String suffix; + private boolean nameAllow; public TagPlayerData(Player player) { this.uuid = player.getUniqueId(); @@ -25,6 +25,7 @@ public class TagPlayerData { this.nameDisplay = player.getName(); this.prefix = ""; this.suffix = ""; + this.nameAllow = true; } public String getTeamHash() { @@ -39,12 +40,20 @@ public class TagPlayerData { this.nameDisplay = getNameOrigin(); this.prefix = ""; this.suffix = ""; + this.nameAllow = true; return this; } @Override public String toString() { - return Strings.replaceWithOrder("TagPlayerData'{'uuid={0}, nameOrigin=''{1}'', nameDisplay=''{2}'', prefix=''{3}'', suffix=''{4}'''}'", uuid, nameOrigin, nameDisplay, prefix, suffix); + return "TagPlayerData{" + + "uuid=" + uuid + + ", nameOrigin='" + nameOrigin + '\'' + + ", nameDisplay='" + nameDisplay + '\'' + + ", prefix='" + prefix + '\'' + + ", suffix='" + suffix + '\'' + + ", nameAllow=" + nameAllow + + '}'; } // ********************************* @@ -73,6 +82,15 @@ public class TagPlayerData { return suffix == null ? "" : suffix; } + public boolean isNameVisibility() { + return nameAllow; + } + + public TagPlayerData setNameVisibility(boolean nameAllow) { + this.nameAllow = nameAllow; + return this; + } + public TagPlayerData setNameDisplay(String nameDisplay) { this.nameDisplay = nameDisplay.length() > 16 ? nameDisplay.substring(0, 16) : nameDisplay; return this;