Skip to content
This repository was archived by the owner on May 22, 2023. It is now read-only.

Commit 316ad8d

Browse files
committed
Usage of CustomModleData can be toggled
Resorts to disabled for versions below 1.14
1 parent e198cf8 commit 316ad8d

3 files changed

Lines changed: 58 additions & 22 deletions

File tree

‎src/main/java/com/sucy/skill/api/player/PlayerCombos.java‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -159,6 +159,7 @@ private void checkExpired() {
159159
public String getCurrentComboString() {
160160
if (clickIndex == 0) { return ""; } else if (clickIndex == clicks.length) {
161161
final int id = SkillAPI.getComboManager().convertCombo(clicks);
162+
checkExpired();
162163
if (skills.containsKey(id)) {
163164
return SkillAPI.getSkill(skills.get(id)).getName();
164165
} else { return ""; }

‎src/main/java/com/sucy/skill/api/util/Data.java‎

Lines changed: 23 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -28,11 +28,14 @@
2828

2929
import com.rit.sucy.config.parse.DataSection;
3030
import com.rit.sucy.text.TextFormatter;
31+
import com.sucy.skill.SkillAPI;
32+
import com.sucy.skill.data.Settings;
3133
import org.apache.commons.lang.ObjectUtils;
3234
import org.bukkit.ChatColor;
3335
import org.bukkit.Material;
3436
import org.bukkit.entity.Item;
3537
import org.bukkit.inventory.ItemStack;
38+
import org.bukkit.inventory.meta.Damageable;
3639
import org.bukkit.inventory.meta.ItemMeta;
3740
import org.bukkit.material.MaterialData;
3841

@@ -57,11 +60,17 @@ private static ItemStack parse(final String mat, final short dur, final int data
5760

5861
final ItemStack item = new ItemStack(material);
5962
final ItemMeta meta = item.getItemMeta();
60-
if (data!=0) {
61-
meta.setCustomModelData(data);
62-
}
63-
item.setDurability(dur);
6463

64+
if (meta instanceof Damageable) {
65+
((Damageable) meta).setDamage(dur);
66+
}
67+
if (SkillAPI.getSettings().useCustomModelData()) {
68+
if (data!=0) {
69+
meta.setCustomModelData(data);
70+
}
71+
} else {
72+
item.setData(new MaterialData(material, (byte) data));
73+
}
6574
if (lore != null && !lore.isEmpty()) {
6675
final List<String> colored = TextFormatter.colorStringList(lore);
6776
meta.setDisplayName(colored.remove(0));
@@ -82,11 +91,17 @@ private static ItemStack parse(final String mat, final short dur, final int data
8291
*/
8392
public static void serializeIcon(ItemStack item, DataSection config) {
8493
config.set(MAT, item.getType().name());
85-
config.set(DURABILITY, item.getDurability());
86-
ItemMeta meta = item.getItemMeta();
87-
config.set(DATA, meta.hasCustomModelData() ? meta.getCustomModelData() : 0);
8894

89-
if (item.hasItemMeta() && item.getItemMeta().hasDisplayName()) {
95+
ItemMeta meta = item.getItemMeta();
96+
if (SkillAPI.getSettings().useCustomModelData()) {
97+
config.set(DATA, meta.hasCustomModelData() ? meta.getCustomModelData() : 0);
98+
} else {
99+
config.set(DATA, item.getData().getData());
100+
}
101+
if (meta instanceof Damageable) {
102+
config.set(DURABILITY, ((Damageable) meta).getDamage());
103+
}
104+
if (meta.hasDisplayName()) {
90105
List<String> lore = item.getItemMeta().getLore();
91106
if (lore == null) { lore = new ArrayList<>(); }
92107
lore.add(0, item.getItemMeta().getDisplayName());

‎src/main/java/com/sucy/skill/data/Settings.java‎

Lines changed: 34 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -48,21 +48,13 @@
4848
import com.sucy.skill.log.Logger;
4949
import org.bukkit.Material;
5050
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.*;
5652
import org.bukkit.inventory.ItemStack;
53+
import org.bukkit.inventory.meta.Damageable;
5754
import org.bukkit.inventory.meta.ItemMeta;
5855
import org.bukkit.material.MaterialData;
5956

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.*;
6658

6759
/**
6860
* <p>The management class for SkillAPI's config.yml settings.</p>
@@ -1464,6 +1456,7 @@ private void loadExpSettings() {
14641456
private ItemStack unassigned;
14651457
private boolean[] defaultBarLayout = new boolean[9];
14661458
private boolean[] lockedSlots = new boolean[9];
1459+
private boolean customModelData;
14671460

14681461
/**
14691462
* Checks whether or not the skill bar is enabled
@@ -1510,20 +1503,47 @@ public boolean[] getLockedSlots() {
15101503
return lockedSlots;
15111504
}
15121505

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+
15131515
private void loadSkillBarSettings() {
15141516
DataSection bar = config.getSection("Skill Bar");
15151517
skillBarEnabled = bar.getBoolean("enabled", false) && !castEnabled;
15161518
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+
}
15171528

15181529
DataSection icon = bar.getSection("empty-icon");
15191530
Material mat = Material.matchMaterial(icon.getString("material", "PUMPKIN_SEEDS"));
15201531
if (mat == null) { mat = Material.PUMPKIN_SEEDS; }
15211532
unassigned = new ItemStack(mat);
15221533

15231534
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));
15271547
}
15281548

15291549
if (icon.isList("text")) {

0 commit comments

Comments
 (0)