Skip to content

Commit

Permalink
Added unique model data for each icon
Browse files Browse the repository at this point in the history
- Each menu now has unique icons for each thing
- Abilities have unique numbers, unless the config thing is disabled (then they only have numbers for the element)
  • Loading branch information
StrangeOne101 committed Jul 4, 2024
1 parent 255fc75 commit 6031a3d
Show file tree
Hide file tree
Showing 9 changed files with 132 additions and 10 deletions.
23 changes: 21 additions & 2 deletions src/main/java/com/strangeone101/bendinggui/MenuItem.java
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@
import java.util.Collections;
import java.util.List;

import com.strangeone101.bendinggui.config.ConfigStandard;
import org.bukkit.ChatColor;
import org.bukkit.Material;
import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemFlag;
Expand All @@ -12,7 +14,7 @@
import org.bukkit.inventory.meta.PotionMeta;
import org.bukkit.potion.PotionType;

public abstract class MenuItem{
public abstract class MenuItem {

protected List<String> lore = new ArrayList<String>();
protected MenuBase menu;
Expand All @@ -21,6 +23,7 @@ public abstract class MenuItem{
protected String text;
protected boolean isShiftClicked = false;
protected boolean isEnchanted = false;
protected int modelData = 0;

public MenuItem(String text, Material icon, int number) {
this.text = text;
Expand Down Expand Up @@ -55,9 +58,17 @@ public String getText() {
public ItemStack getItemStack() {
ItemStack slot = new ItemStack(getIcon(), getNumber());
ItemMeta meta = slot.getItemMeta();
meta.setLore(lore);

List<String> clonedLore = new ArrayList<>(lore);

if (ConfigStandard.getInstance().isAdminModelData()) {
clonedLore.add(ChatColor.GRAY + "Model Data: " + modelData);
}

meta.setLore(clonedLore);
meta.setDisplayName(getText());
meta.addItemFlags(ItemFlag.HIDE_ATTRIBUTES); //So weapons don't show damage, etc. Kinda pointless for UIs
meta.setCustomModelData(modelData);
if (meta instanceof PotionMeta) {
((PotionMeta) meta).setBasePotionType(PotionType.WATER);
}
Expand Down Expand Up @@ -86,4 +97,12 @@ public void setMenu(MenuBase menu) {
public boolean isShiftClicked() {
return this.isShiftClicked;
}

public int getModelData() {
return modelData;
}

public void setModelData(int modelData) {
this.modelData = modelData;
}
}
62 changes: 57 additions & 5 deletions src/main/java/com/strangeone101/bendinggui/Util.java
Original file line number Diff line number Diff line change
@@ -1,18 +1,31 @@
package com.strangeone101.bendinggui;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.TreeSet;
import java.util.UUID;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import com.jogamp.common.util.ArrayHashSet;
import com.projectkorra.projectkorra.Element;
import com.projectkorra.projectkorra.ability.CoreAbility;
import com.strangeone101.bendinggui.config.ConfigStandard;
import org.bukkit.Bukkit;
import org.bukkit.enchantments.Enchantment;
import org.bukkit.inventory.ItemFlag;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta;

import static com.projectkorra.projectkorra.Element.*;

public class Util {

private static List<Element> elementMagicNumbers = new ArrayList<>();
private static Map<CoreAbility, Integer> abilityMagicNumbers = new HashMap<>();

public static String getStaff(UUID id) {
String key = "";
Expand All @@ -24,7 +37,7 @@ public static String getStaff(UUID id) {
case "96f40c81-dd5d-46b6-9afe-365114d4a082": // Coolade
case "833a7132-a9ec-4f0a-ad9c-c3d6b8a1c7eb": // Jacklin213
case "4eb6315e-9dd1-49f7-b582-c1170e497ab0": // jedk1
case "d7757be8-86de-4898-ab4f-2b1b2fbc3dfa": // StrangeOne101

case "3b5bdfab-8ae1-4794-b160-4f33f31fde99": // kingbirdy
case "1c30007f-f8ef-4b4e-aff0-787aa1bc09a3": // Sorin
case "623df34e-9cd4-438d-b07c-1905e1fc46b6": // Loony
Expand All @@ -39,14 +52,17 @@ public static String getStaff(UUID id) {
case "9c18ff57-04b3-4841-9726-9d64373d0d65": // coastyo
case "c364ffe2-de9e-4117-9735-6d14bde038f6": // Carbogen
case "9636d66a-bff8-48e4-993e-68f0e7891c3b": // Runefist
key = "Staff.Contributor"; break;
case "592fb564-701a-4a5e-9d65-13f7ed0acf59": // Vahagn
case "e98a2f7d-d571-4900-a625-483cbe6774fe": // Aztl
case "7bb267eb-cf0b-4fb9-a697-27c2a913ed92": // Finn
case "81adae76-d647-4b41-bfb0-8166516fa189": // AlexTheCoder
case "592fb564-701a-4a5e-9d65-13f7ed0acf59": // Vahagn
case "e98a2f7d-d571-4900-a625-483cbe6774fe": // Aztl
case "f6c4aac7-9cc2-4da2-9038-e26bb808461d": // Tyson / xLumos
key = "Staff.Contributor"; break;
case "5031c4e3-8103-49ea-b531-0d6ae71bad69": // Simplicitee
case "5e7db6d3-add9-4aab-b1fc-3dda8f5713f4": // Prride
case "f6c4aac7-9cc2-4da2-9038-e26bb808461d": // Tyson / xLumos
case "d7757be8-86de-4898-ab4f-2b1b2fbc3dfa": // StrangeOne101
case "476ca51b-ec04-431b-87da-dd22b20aa8bf": // Just-a-human
case "71d42b35-dd94-408e-941d-88d4a61031c7": //Dreig
key = "Staff.Developer"; break;
default: key = null;

Expand Down Expand Up @@ -78,6 +94,42 @@ public static String getStaff(String playerName) {
return getStaff(Bukkit.getOfflinePlayer(playerName).getUniqueId());
}

public static int getMagicNumber(Element element) {
if (elementMagicNumbers.isEmpty()) {
for (Element parentElement : Element.getMainElements()) {
elementMagicNumbers.add(parentElement);
}
elementMagicNumbers.add(AVATAR);
for (Element subElement : Element.getSubElements()) {
elementMagicNumbers.add(subElement);
}
for (Element addonElement : Element.getAddonElements()) {
elementMagicNumbers.add(addonElement);
}
for (Element addonElementSub : Element.getAddonSubElements()) {
elementMagicNumbers.add(addonElementSub);
}
}

return elementMagicNumbers.indexOf(element);
}

public static int getMagicNumber(CoreAbility ability) {
if (abilityMagicNumbers.isEmpty()) {
Map<Element, Integer> amount = new HashMap<>();
for (CoreAbility coreAbility : CoreAbility.getAbilities()) {
if (!coreAbility.isEnabled() || coreAbility.isHiddenAbility()) continue;

int localAmount = amount.getOrDefault(coreAbility.getElement(), 0);

abilityMagicNumbers.put(coreAbility, localAmount);
amount.put(coreAbility.getElement(), localAmount + 1);
}
}
int base = getMagicNumber(ability.getElement()) >> 6;
return base + (ConfigStandard.getInstance().isAdminModelData() ? abilityMagicNumbers.getOrDefault(ability, -1) : 0);
}

public static void addGlow(ItemStack itemStack) {
ItemMeta itemMeta = itemStack.getItemMeta();
itemMeta.addItemFlags(ItemFlag.HIDE_ENCHANTS);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@ public class ConfigStandard extends ConfigBase {
private boolean useItem;

private int modelDataBase;
private boolean uniqueAbilityModels;

private boolean destroyOnDeath;
private boolean destroyOnThrow;
Expand Down Expand Up @@ -156,6 +157,18 @@ public Map<String, Object> addDefaults() {
return defaults;
}

public boolean isAdminModelData() {
return adminModelData;
}

public int getModelDataBase() {
return modelDataBase;
}

public boolean isUniqueAbilityModels() {
return uniqueAbilityModels;
}

@Override
public void load() {
if (YamlConfiguration.loadConfiguration(getFile()).contains("General.Description.Fire")) { //Old config
Expand Down Expand Up @@ -186,6 +199,7 @@ public void load() {
adminAlerts = getBoolean("Admin.Alerts");
adminModelData = getBoolean("Admin.ShowModelData");
modelDataBase = getInteger("Admin.ModelDataBase");
uniqueAbilityModels = getBoolean("Admin.UniqueAbilityModelData");
useItem = getBoolean("Item.Enabled");

item = getMaterial("Item.Material");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -174,6 +174,7 @@ else if (this.abilityIndex == move)
desc = desc + "\n\n" + new LangBuilder("Display.Main.Ability.Selected").ability(ability).toString();
}
item.setDescriptions(Arrays.asList(desc.split("\n")));
item.setModelData(ConfigStandard.getInstance().getModelDataBase() + Util.getMagicNumber(ability) + 128);
if (abilityIndex == move)
{
item.setEnchanted(true);
Expand Down Expand Up @@ -311,6 +312,7 @@ else if (mode == Mode.INFO && move != null)
}
};
item.setDescriptions(Arrays.asList((ChatColor.GRAY + desc).split("\n")));
item.setModelData(ConfigStandard.getInstance().getModelDataBase() + Util.getMagicNumber(CoreAbility.getAbility(move).getElement()) + 256);
if (index == this.slotIndex)
{
item.setEnchanted(true);
Expand Down Expand Up @@ -352,6 +354,7 @@ public void onClick(Player player)
}
};
item.addDescription(ChatColor.GRAY + new LangBuilder(key + ".Lore").player(thePlayer).yourOrPlayer(thePlayer, openPlayer).toString());
item.setModelData(ConfigStandard.getInstance().getModelDataBase() + 1024);
if (this.mode == Mode.DELETE)
{
item.setEnchanted(true);
Expand Down Expand Up @@ -383,6 +386,7 @@ public void onClick(Player player)

}
};
item.setModelData(ConfigStandard.getInstance().getModelDataBase() + 1025);
item.addDescription(ChatColor.GRAY + new LangBuilder(key + "Lore").player(thePlayer).yourOrPlayer(thePlayer, openPlayer).toString());
return item;
}
Expand All @@ -408,6 +412,7 @@ public void onClick(Player player)
}
};
item.addDescription(ChatColor.GRAY + new LangBuilder(key + ".Lore").toString());
item.setModelData(ConfigStandard.getInstance().getModelDataBase() + 1026);
if (this.mode == Mode.INFO)
{
item.setEnchanted(true);
Expand Down Expand Up @@ -459,6 +464,7 @@ public void onClick(Player player)
DynamicUpdater.updateMenu(thePlayer, getInstance());
}
};
item.setModelData(ConfigStandard.getInstance().getModelDataBase() + 1027 + (isRightDirection ? 1 : 0));
item.setDescriptions(Arrays.asList((ChatColor.GRAY + new LangBuilder(baseKey + ".Lore").toString()).split("\\n")));
return item;
}
Expand Down Expand Up @@ -505,6 +511,7 @@ else if (player.hasPermission("bending.command.rechoose"))
item.addDescription(ChatColor.GRAY + new LangBuilder("Display.Main.Change.Lore").toString());
}
}
item.setModelData(ConfigStandard.getInstance().getModelDataBase() + 1029);

return item;
}
Expand All @@ -522,6 +529,7 @@ public void onClick(Player player)
}
};
item.addDescription(ChatColor.GRAY + new LangBuilder("Display.Main.Combos.Lore").toString());
item.setModelData(ConfigStandard.getInstance().getModelDataBase() + 1030);
if (combos) item.setEnchanted(true);
return item;
}
Expand All @@ -537,6 +545,7 @@ public void onClick(Player player)
switchMenu(player, presetMenu);
}
};
item.setModelData(ConfigStandard.getInstance().getModelDataBase() + 1031);
item.addDescription(ChatColor.GRAY + new LangBuilder("Display.Main.Presets.Lore").player(thePlayer).yourOrPlayer(thePlayer, openPlayer).toString());
return item;
}
Expand Down Expand Up @@ -579,6 +588,7 @@ public void onClick(Player player)
DynamicUpdater.updateMenu(thePlayer, getInstance());
}
};
item.setModelData(ConfigStandard.getInstance().getModelDataBase() + 1031);
item.addDescription(ChatColor.GRAY + new LangBuilder(key + "Lore").player(thePlayer).yourOrPlayer(thePlayer, openPlayer).toString());
return item;
}
Expand Down Expand Up @@ -650,6 +660,7 @@ else if (this.openPlayer.hasPermission("bending.command.who"))
item.addDescription("");
item.addDescription(ChatColor.YELLOW + "" + new LangBuilder("Display.Main.Overview.Lore.Who"));
}
item.setModelData(ConfigStandard.getInstance().getModelDataBase() + 1032);

return item;
}
Expand Down Expand Up @@ -710,8 +721,8 @@ public void onClick(Player player)
desc = desc + "\n" + new LangBuilder("Display.Main.Ability.Info").ability(coreAbility);

item.setDescriptions(Arrays.asList(desc.split("\n")));

item.setModelData(ConfigStandard.getInstance().getModelDataBase() + Util.getMagicNumber(CoreAbility.getAbility(move).getElement()) + 256);

return item;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@

import com.strangeone101.bendinggui.LangBuilder;
import com.strangeone101.bendinggui.Util;
import com.strangeone101.bendinggui.config.ConfigStandard;
import org.bukkit.ChatColor;
import org.bukkit.Material;
import org.bukkit.entity.Player;
Expand Down Expand Up @@ -49,6 +50,7 @@ public void onClick(Player player)
};
confirm.setDescriptions(Util.lengthSplit(ChatColor.GRAY + this.contextProvider.apply(
new LangBuilder("Display." + lang + ".Confirm.Yes.Lore")).toString(), 45));
confirm.setModelData(ConfigStandard.getInstance().getModelDataBase());
return confirm;
}

Expand All @@ -63,6 +65,7 @@ public void onClick(Player player)
}
};
cancel.setDescriptions(Util.lengthSplit(ChatColor.GRAY + this.contextProvider.apply(new LangBuilder("Display." + lang + ".Confirm.No.Lore")).toString(), 45));
cancel.setModelData(ConfigStandard.getInstance().getModelDataBase());
return cancel;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -133,6 +133,7 @@ public void onClick(Player player)
}
};
item.addDescription(ChatColor.GRAY + new LangBuilder("Display.Edit.RemoveAll.Lore").yourOrPlayer(thePlayer, openPlayer).plural(thePlayer.getName()).player(thePlayer).toString());
item.setModelData(ConfigStandard.getInstance().getModelDataBase() + 33);
return item;
}

Expand Down Expand Up @@ -221,6 +222,7 @@ public void onClick(Player playerwhoclicked)
String lore = new LangBuilder(key + ".Lore." + (b ? "Has" : "HasNot")).yourOrPlayer(player, openPlayer).anOrA(element.getName()).element(element).player(player).toString();

item.setDescriptions(Util.lengthSplit(lore, 58));
item.setModelData(ConfigStandard.getInstance().getModelDataBase() + Util.getMagicNumber(element) + 1);
if (BendingPlayer.getBendingPlayer(player).hasElement(element)) {
item.setEnchanted(true);
}
Expand All @@ -246,6 +248,7 @@ public void onClick(Player player)
};
//String s1 = this.prev == null ? "Exit menu and return to your normal inventory" : "Return to the previous menu";
item.addDescription(ChatColor.DARK_GRAY + new LangBuilder(key + ".Lore").toString());
item.setModelData(ConfigStandard.getInstance().getModelDataBase() + 32);
return item;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -210,7 +210,14 @@ public void onClick(Player player)
}
};
item.setDescriptions(Arrays.asList((ChatColor.GRAY + new LangBuilder(baseKey + typeKey + ".Lore").toString()).split("\\n")));


if (!isRight && page == 0) {
item.setModelData(ConfigStandard.getInstance().getModelDataBase() + 32);
} else {
item.setModelData(ConfigStandard.getInstance().getModelDataBase() + 2056 + (isRight ? 1 : 0));
}


return item;
}

Expand All @@ -233,6 +240,7 @@ public void onClick(Player player)
item.setEnchanted(true);
}
item.addDescription(ChatColor.GRAY + new LangBuilder(key + ".Lore").toString());
item.setModelData(ConfigStandard.getInstance().getModelDataBase() + 2060);
return item;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -185,6 +185,7 @@ public void onClick(Player player)
};
item.setDescriptions(Util.lengthSplit(new LangBuilder("Display.Choose." + element.getName() + ".Lore").toString(),
ConfigStandard.getInstance().getElementTrim()));
item.setModelData(Util.getMagicNumber(element) + ConfigStandard.getInstance().getModelDataBase() + 1);

return item;
}
Expand Down
Loading

0 comments on commit 6031a3d

Please sign in to comment.