Skip to content

Commit b9eb6c0

Browse files
committed
Fix gadget hex color bug
1 parent d0dc16f commit b9eb6c0

5 files changed

Lines changed: 54 additions & 70 deletions

File tree

core/src/main/java/be/isach/ultracosmetics/cosmetics/Cosmetic.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ public abstract class Cosmetic<T extends CosmeticType<?>> extends BukkitRunnable
3333
protected boolean equipped;
3434
protected final T cosmeticType;
3535
private final UUID ownerUniqueId;
36+
private final String typeName;
3637

3738
public Cosmetic(UltraPlayer owner, T type, UltraCosmetics ultraCosmetics) {
3839
if (owner == null || owner.getBukkitPlayer() == null) {
@@ -43,6 +44,7 @@ public Cosmetic(UltraPlayer owner, T type, UltraCosmetics ultraCosmetics) {
4344
this.category = type.getCategory();
4445
this.ultraCosmetics = ultraCosmetics;
4546
this.cosmeticType = type;
47+
this.typeName = type.getName();
4648
}
4749

4850
public final void equip() {
@@ -177,8 +179,8 @@ public T getType() {
177179
return cosmeticType;
178180
}
179181

180-
protected String getTypeName() {
181-
return getType().getName();
182+
public String getTypeName() {
183+
return typeName;
182184
}
183185

184186
protected String filterPlaceholders(String message) {

core/src/main/java/be/isach/ultracosmetics/cosmetics/gadgets/Gadget.java

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ public abstract class Gadget extends Cosmetic<GadgetType> implements UnmovableIt
7373
// Cache the actual material value so we don't have to keep calling parseMaterial
7474
private final Material material;
7575

76-
private final int slot = SettingsManager.getConfig().getInt("Gadget-Slot");
76+
protected final int slot = SettingsManager.getConfig().getInt("Gadget-Slot");
7777

7878
private final boolean removeWithDrop = SettingsManager.getConfig().getBoolean("Remove-Gadget-With-Drop");
7979

@@ -147,7 +147,7 @@ public void run() {
147147
if (decimalRoundedValue == 0) {
148148
String message = MessageManager.getMessage("Gadgets.Gadget-Ready-ActionBar");
149149
message = message.replace("%gadgetname%",
150-
TextUtil.filterPlaceHolder(getType().getName()));
150+
TextUtil.filterPlaceHolder(getTypeName()));
151151
ActionBar.sendActionBar(getPlayer(), message);
152152
play(XSound.BLOCK_NOTE_BLOCK_HAT, getPlayer(), 1.4f, 1.5f);
153153
}
@@ -186,7 +186,7 @@ public void updateItemStack() {
186186
if (UltraCosmeticsData.get().isAmmoEnabled() && getType().requiresAmmo()) {
187187
ammo = ChatColor.WHITE.toString() + ChatColor.BOLD + getOwner().getAmmo(getType()) + " ";
188188
}
189-
itemStack = ItemFactory.create(getType().getMaterial(), ammo + getType().getName(), MessageManager.getMessage("Gadgets.Lore"));
189+
itemStack = ItemFactory.create(getType().getMaterial(), ammo + getTypeName(), MessageManager.getMessage("Gadgets.Lore"));
190190
}
191191

192192
protected boolean checkRequirements(PlayerInteractEvent event) {
@@ -209,7 +209,8 @@ public boolean itemMatches(ItemStack stack) {
209209
if (stack == null || stack.getType() != getItemStack().getType() || !stack.hasItemMeta() || !stack.getItemMeta().hasDisplayName()) {
210210
return false;
211211
}
212-
return stack.getItemMeta().getDisplayName().endsWith(getType().getName());
212+
// Case sensitivity causes issues with hex color codes for some reason
213+
return stack.getItemMeta().getDisplayName().toLowerCase().endsWith(getTypeName().toLowerCase());
213214
}
214215

215216
@Override
@@ -250,7 +251,7 @@ public void handleInteract(PlayerInteractEvent event) {
250251
String timeLeft = new DecimalFormat("#.#").format(coolDown);
251252
if (getType().getCountdown() > 1) {
252253
getPlayer().sendMessage(MessageManager.getMessage("Gadgets.Countdown-Message")
253-
.replace("%gadgetname%", TextUtil.filterPlaceHolder(getType().getName()))
254+
.replace("%gadgetname%", TextUtil.filterPlaceHolder(getTypeName()))
254255
.replace("%time%", timeLeft));
255256
}
256257
return;

core/src/main/java/be/isach/ultracosmetics/cosmetics/gadgets/GadgetThorHammer.java

Lines changed: 10 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -2,27 +2,21 @@
22

33
import be.isach.ultracosmetics.UltraCosmetics;
44
import be.isach.ultracosmetics.UltraCosmeticsData;
5-
import be.isach.ultracosmetics.config.MessageManager;
6-
import be.isach.ultracosmetics.config.SettingsManager;
75
import be.isach.ultracosmetics.cosmetics.PlayerAffectingCosmetic;
86
import be.isach.ultracosmetics.cosmetics.type.GadgetType;
97
import be.isach.ultracosmetics.listeners.HammerPickupListener;
108
import be.isach.ultracosmetics.player.UltraPlayer;
119
import be.isach.ultracosmetics.util.ItemFactory;
1210
import be.isach.ultracosmetics.util.MathUtils;
1311
import be.isach.ultracosmetics.util.ServerVersion;
14-
12+
import com.cryptomorin.xseries.XMaterial;
1513
import org.bukkit.Bukkit;
16-
import org.bukkit.ChatColor;
1714
import org.bukkit.entity.Item;
1815
import org.bukkit.event.EventHandler;
1916
import org.bukkit.event.HandlerList;
2017
import org.bukkit.event.entity.EntityDamageByEntityEvent;
21-
import org.bukkit.inventory.ItemStack;
2218
import org.bukkit.util.Vector;
2319

24-
import com.cryptomorin.xseries.XMaterial;
25-
2620
/**
2721
* Represents an instance of a thor hammer gadget summoned by a player.
2822
*
@@ -47,25 +41,16 @@ protected void onRightClick() {
4741
hammer.remove();
4842
}
4943
Vector velocity = getPlayer().getEyeLocation().getDirection().multiply(1.4);
50-
hammer = ItemFactory.spawnUnpickableItem(ItemFactory.create(XMaterial.IRON_AXE, MessageManager.getMessage("Gadgets.ThorHammer.name")), getPlayer().getEyeLocation(), velocity);
51-
getPlayer().getInventory().setItem(SettingsManager.getConfig().getInt("Gadget-Slot"), null);
44+
hammer = ItemFactory.spawnUnpickableItem(ItemFactory.create(XMaterial.IRON_AXE, getTypeName()), getPlayer().getEyeLocation(), velocity);
45+
getPlayer().getInventory().setItem(slot, null);
5246
v = getPlayer().getEyeLocation().getDirection().multiply(1.4).add(new Vector(0, 1, 0));
5347
Bukkit.getScheduler().runTaskLater(getUltraCosmetics(), () -> {
5448
if (hammer == null) return;
5549
hammer.setVelocity(getPlayer().getEyeLocation().toVector().subtract(hammer.getLocation().toVector()).multiply(0.2).add(new Vector(0, 0, 0)));
5650
v = null;
5751
Bukkit.getScheduler().runTaskLater(getUltraCosmetics(), () -> {
5852
if (hammer == null) return;
59-
ItemStack is;
60-
if (UltraCosmeticsData.get().isAmmoEnabled()) {
61-
is = ItemFactory.create(getType().getMaterial(), ChatColor.WHITE + "" + ChatColor.BOLD + getOwner().getAmmo(getType()) + " " + getType().getName(), ChatColor.BLUE + "Gadget");
62-
} else {
63-
is = ItemFactory.create(getType().getMaterial(), getType().getName(), MessageManager.getMessage("Gadgets.Lore"));
64-
}
65-
itemStack = is;
66-
getPlayer().getInventory().setItem(SettingsManager.getConfig().getInt("Gadget-Slot"), is);
67-
hammer.remove();
68-
hammer = null;
53+
pickupItem();
6954
}, 40);
7055
}, 20);
7156
}
@@ -93,14 +78,12 @@ public void onItemPickup(org.bukkit.event.player.PlayerPickupItemEvent event) {
9378

9479
if (hammer.getTicksLived() <= 5) return;
9580

96-
ItemStack is;
97-
if (UltraCosmeticsData.get().isAmmoEnabled()) {
98-
is = ItemFactory.create(getType().getMaterial(), ChatColor.WHITE + "" + ChatColor.BOLD + getOwner().getAmmo(getType()) + " " + getType().getName(), ChatColor.BLUE + "Gadget");
99-
} else {
100-
is = ItemFactory.create(getType().getMaterial(), getType().getName(), MessageManager.getMessage("Gadgets.Lore"));
101-
}
102-
itemStack = is;
103-
getPlayer().getInventory().setItem((int) SettingsManager.getConfig().get("Gadget-Slot"), is);
81+
pickupItem();
82+
}
83+
84+
private void pickupItem() {
85+
updateItemStack();
86+
getPlayer().getInventory().setItem(slot, itemStack);
10487
hammer.remove();
10588
hammer = null;
10689
}

core/src/main/java/be/isach/ultracosmetics/cosmetics/suits/Suit.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ public void run() {
3535
}
3636

3737
protected void setupItemStack() {
38-
itemStack = ItemFactory.create(getType().getMaterial(), getType().getName(), "", MessageManager.getMessage("Suits.Suit-Part-Lore"));
38+
itemStack = ItemFactory.create(getType().getMaterial(), getTypeName(), "", MessageManager.getMessage("Suits.Suit-Part-Lore"));
3939
}
4040

4141
@Override

core/src/main/java/be/isach/ultracosmetics/hook/PlaceholderHook.java

Lines changed: 33 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,8 @@
66
import be.isach.ultracosmetics.cosmetics.type.CosmeticType;
77
import be.isach.ultracosmetics.cosmetics.type.GadgetType;
88
import be.isach.ultracosmetics.player.UltraPlayer;
9-
10-
import org.bukkit.entity.Player;
11-
129
import me.clip.placeholderapi.expansion.PlaceholderExpansion;
10+
import org.bukkit.entity.Player;
1311

1412
/**
1513
* PlaceholderAPI hook.
@@ -35,39 +33,39 @@ public String onPlaceholderRequest(Player player, String identifier) {
3533
return String.valueOf(ultraPlayer.getAmmo(type));
3634
}
3735
switch (identifier) {
38-
// Current cosmetics
39-
case "current_gadget":
40-
return ultraPlayer.getCurrentGadget() == null ? "None" : ultraPlayer.getCurrentGadget().getType().getName();
41-
case "current_mount":
42-
return ultraPlayer.getCurrentMount() == null ? "None" : ultraPlayer.getCurrentMount().getType().getName();
43-
case "current_particleeffect":
44-
return ultraPlayer.getCurrentParticleEffect() == null ? "None" : ultraPlayer.getCurrentParticleEffect().getType().getName();
45-
case "current_pet":
46-
return ultraPlayer.getCurrentPet() == null ? "None" : ultraPlayer.getCurrentPet().getType().getName();
47-
case "current_morph":
48-
return ultraPlayer.getCurrentMorph() == null ? "None" : ultraPlayer.getCurrentMorph().getType().getName();
49-
case "current_hat":
50-
return ultraPlayer.getCurrentHat() == null ? "None" : ultraPlayer.getCurrentHat().getType().getName();
51-
case "current_emote":
52-
return ultraPlayer.getCurrentEmote() == null ? "None" : ultraPlayer.getCurrentEmote().getType().getName();
53-
case "current_suit_helmet":
54-
return ultraPlayer.getCurrentSuit(ArmorSlot.HELMET) == null ? "None" : ultraPlayer.getCurrentSuit(ArmorSlot.HELMET).getType().getName();
55-
case "current_suit_chestplate":
56-
return ultraPlayer.getCurrentSuit(ArmorSlot.CHESTPLATE) == null ? "None" : ultraPlayer.getCurrentSuit(ArmorSlot.CHESTPLATE).getType().getName();
57-
case "current_suit_leggings":
58-
return ultraPlayer.getCurrentSuit(ArmorSlot.LEGGINGS) == null ? "None" : ultraPlayer.getCurrentSuit(ArmorSlot.LEGGINGS).getType().getName();
59-
case "current_suit_boots":
60-
return ultraPlayer.getCurrentSuit(ArmorSlot.BOOTS) == null ? "None" : ultraPlayer.getCurrentSuit(ArmorSlot.BOOTS).getType().getName();
36+
// Current cosmetics
37+
case "current_gadget":
38+
return ultraPlayer.getCurrentGadget() == null ? "None" : ultraPlayer.getCurrentGadget().getTypeName();
39+
case "current_mount":
40+
return ultraPlayer.getCurrentMount() == null ? "None" : ultraPlayer.getCurrentMount().getTypeName();
41+
case "current_particleeffect":
42+
return ultraPlayer.getCurrentParticleEffect() == null ? "None" : ultraPlayer.getCurrentParticleEffect().getTypeName();
43+
case "current_pet":
44+
return ultraPlayer.getCurrentPet() == null ? "None" : ultraPlayer.getCurrentPet().getTypeName();
45+
case "current_morph":
46+
return ultraPlayer.getCurrentMorph() == null ? "None" : ultraPlayer.getCurrentMorph().getTypeName();
47+
case "current_hat":
48+
return ultraPlayer.getCurrentHat() == null ? "None" : ultraPlayer.getCurrentHat().getTypeName();
49+
case "current_emote":
50+
return ultraPlayer.getCurrentEmote() == null ? "None" : ultraPlayer.getCurrentEmote().getTypeName();
51+
case "current_suit_helmet":
52+
return ultraPlayer.getCurrentSuit(ArmorSlot.HELMET) == null ? "None" : ultraPlayer.getCurrentSuit(ArmorSlot.HELMET).getTypeName();
53+
case "current_suit_chestplate":
54+
return ultraPlayer.getCurrentSuit(ArmorSlot.CHESTPLATE) == null ? "None" : ultraPlayer.getCurrentSuit(ArmorSlot.CHESTPLATE).getTypeName();
55+
case "current_suit_leggings":
56+
return ultraPlayer.getCurrentSuit(ArmorSlot.LEGGINGS) == null ? "None" : ultraPlayer.getCurrentSuit(ArmorSlot.LEGGINGS).getTypeName();
57+
case "current_suit_boots":
58+
return ultraPlayer.getCurrentSuit(ArmorSlot.BOOTS) == null ? "None" : ultraPlayer.getCurrentSuit(ArmorSlot.BOOTS).getTypeName();
6159

62-
// Keys, and user-specific settings
63-
case "keys":
64-
return "" + ultraPlayer.getKeys();
65-
case "gadgets_enabled":
66-
return "" + ultraPlayer.hasGadgetsEnabled();
67-
case "morph_selfview":
68-
return "" + ultraPlayer.canSeeSelfMorph();
69-
case "treasurechest_active":
70-
return "" + (ultraPlayer.getCurrentTreasureChest() != null);
60+
// Keys, and user-specific settings
61+
case "keys":
62+
return "" + ultraPlayer.getKeys();
63+
case "gadgets_enabled":
64+
return "" + ultraPlayer.hasGadgetsEnabled();
65+
case "morph_selfview":
66+
return "" + ultraPlayer.canSeeSelfMorph();
67+
case "treasurechest_active":
68+
return "" + (ultraPlayer.getCurrentTreasureChest() != null);
7169
}
7270
return null;
7371
}

0 commit comments

Comments
 (0)