|
48 | 48 | import com.sucy.skill.log.Logger; |
49 | 49 | import org.bukkit.Material; |
50 | 50 | import org.bukkit.World; |
51 | | -import org.bukkit.entity.Animals; |
52 | | -import org.bukkit.entity.LivingEntity; |
53 | | -import org.bukkit.entity.Monster; |
54 | | -import org.bukkit.entity.Player; |
55 | | -import org.bukkit.entity.Tameable; |
| 51 | +import org.bukkit.entity.*; |
56 | 52 | import org.bukkit.inventory.ItemStack; |
| 53 | +import org.bukkit.inventory.meta.Damageable; |
57 | 54 | import org.bukkit.inventory.meta.ItemMeta; |
58 | 55 | import org.bukkit.material.MaterialData; |
59 | 56 |
|
60 | | -import java.util.ArrayList; |
61 | | -import java.util.HashMap; |
62 | | -import java.util.HashSet; |
63 | | -import java.util.List; |
64 | | -import java.util.Map; |
65 | | -import java.util.Set; |
| 57 | +import java.util.*; |
66 | 58 |
|
67 | 59 | /** |
68 | 60 | * <p>The management class for SkillAPI's config.yml settings.</p> |
@@ -1464,6 +1456,7 @@ private void loadExpSettings() { |
1464 | 1456 | private ItemStack unassigned; |
1465 | 1457 | private boolean[] defaultBarLayout = new boolean[9]; |
1466 | 1458 | private boolean[] lockedSlots = new boolean[9]; |
| 1459 | + private boolean customModelData; |
1467 | 1460 |
|
1468 | 1461 | /** |
1469 | 1462 | * Checks whether or not the skill bar is enabled |
@@ -1510,20 +1503,47 @@ public boolean[] getLockedSlots() { |
1510 | 1503 | return lockedSlots; |
1511 | 1504 | } |
1512 | 1505 |
|
| 1506 | + /** |
| 1507 | + * Checks whether or not CustomModelData is enabled |
| 1508 | + * |
| 1509 | + * @return true if enabled, false otherwise |
| 1510 | + */ |
| 1511 | + public boolean useCustomModelData() { |
| 1512 | + return customModelData; |
| 1513 | + } |
| 1514 | + |
1513 | 1515 | private void loadSkillBarSettings() { |
1514 | 1516 | DataSection bar = config.getSection("Skill Bar"); |
1515 | 1517 | skillBarEnabled = bar.getBoolean("enabled", false) && !castEnabled; |
1516 | 1518 | skillBarCooldowns = bar.getBoolean("show-cooldown", true); |
| 1519 | + customModelData = bar.getBoolean("use-custommodeldata", false); |
| 1520 | + if (customModelData) { |
| 1521 | + try { |
| 1522 | + ItemMeta.class.getMethod("hasCustomModelData",null); |
| 1523 | + } catch (NoSuchMethodException e) { |
| 1524 | + customModelData = false; |
| 1525 | + Logger.log("CustomModelData not supported below 1.14+. Using item durability/data instead."); |
| 1526 | + } |
| 1527 | + } |
1517 | 1528 |
|
1518 | 1529 | DataSection icon = bar.getSection("empty-icon"); |
1519 | 1530 | Material mat = Material.matchMaterial(icon.getString("material", "PUMPKIN_SEEDS")); |
1520 | 1531 | if (mat == null) { mat = Material.PUMPKIN_SEEDS; } |
1521 | 1532 | unassigned = new ItemStack(mat); |
1522 | 1533 |
|
1523 | 1534 | ItemMeta meta = unassigned.getItemMeta(); |
1524 | | - int customModelData = icon.getInt("data", 0); |
1525 | | - if (customModelData!=0) { |
1526 | | - meta.setCustomModelData(icon.getInt("data", 0)); |
| 1535 | + |
| 1536 | + if (meta instanceof org.bukkit.inventory.meta.Damageable) { |
| 1537 | + ((Damageable) meta).setDamage((short) icon.getInt("durability", 0)); |
| 1538 | + } |
| 1539 | + |
| 1540 | + final int data = icon.getInt("data", 0); |
| 1541 | + if (customModelData) { |
| 1542 | + if (data!=0) { |
| 1543 | + meta.setCustomModelData(data); |
| 1544 | + } |
| 1545 | + } else { |
| 1546 | + unassigned.setData(new MaterialData(mat, (byte) data)); |
1527 | 1547 | } |
1528 | 1548 |
|
1529 | 1549 | if (icon.isList("text")) { |
|
0 commit comments