Skip to content

Commit 354025b

Browse files
committed
New WG flag: uc-showroom
1 parent b9eb6c0 commit 354025b

17 files changed

Lines changed: 146 additions & 91 deletions

File tree

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

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -48,27 +48,28 @@ public Cosmetic(UltraPlayer owner, T type, UltraCosmetics ultraCosmetics) {
4848
}
4949

5050
public final void equip() {
51+
Player player = getPlayer();
5152
if (!cosmeticType.isEnabled()) {
52-
getPlayer().sendMessage(MessageManager.getMessage("Cosmetic-Disabled"));
53+
player.sendMessage(MessageManager.getMessage("Cosmetic-Disabled"));
5354
return;
5455
}
5556

56-
if (!ultraCosmetics.getPermissionManager().hasPermission(getPlayer(), cosmeticType)) {
57-
getPlayer().sendMessage(MessageManager.getMessage("No-Permission"));
57+
if (!owner.canEquip(cosmeticType)) {
58+
player.sendMessage(MessageManager.getMessage("No-Permission"));
5859
return;
5960
}
6061

61-
if (PlayerAffectingCosmetic.isVanished(getPlayer()) && SettingsManager.getConfig().getBoolean("Prevent-Cosmetics-In-Vanish")) {
62+
if (PlayerAffectingCosmetic.isVanished(player) && SettingsManager.getConfig().getBoolean("Prevent-Cosmetics-In-Vanish")) {
6263
owner.clear();
63-
getPlayer().sendMessage(MessageManager.getMessage("Not-Allowed-In-Vanish"));
64+
player.sendMessage(MessageManager.getMessage("Not-Allowed-In-Vanish"));
6465
return;
6566
}
66-
CosmeticRegionState state = ultraCosmetics.getWorldGuardManager().allowedCosmeticsState(getPlayer(), category);
67+
CosmeticRegionState state = ultraCosmetics.getWorldGuardManager().allowedCosmeticsState(player, category);
6768
if (state == CosmeticRegionState.BLOCKED_ALL) {
68-
getPlayer().sendMessage(MessageManager.getMessage("Region-Disabled"));
69+
player.sendMessage(MessageManager.getMessage("Region-Disabled"));
6970
return;
7071
} else if (state == CosmeticRegionState.BLOCKED_CATEGORY) {
71-
getPlayer().sendMessage(MessageManager.getMessage("Region-Disabled-Category")
72+
player.sendMessage(MessageManager.getMessage("Region-Disabled-Category")
7273
.replace("%category%", ChatColor.stripColor(MessageManager.getMessage("Menu." + category.getMessagesName() + ".Title"))));
7374
return;
7475
}

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

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,8 @@ public abstract class Gadget extends Cosmetic<GadgetType> implements UnmovableIt
7979

8080
private final boolean showCooldownInBar = UltraCosmeticsData.get().displaysCooldownInBar();
8181

82+
private final boolean requiresAmmo = UltraCosmeticsData.get().isAmmoEnabled() && getType().requiresAmmo();
83+
8284
private boolean handledThisTick = false;
8385

8486
public Gadget(UltraPlayer owner, GadgetType type, UltraCosmetics ultraCosmetics) {
@@ -99,8 +101,7 @@ public boolean tryEquip() {
99101
return false;
100102
}
101103

102-
updateItemStack();
103-
getPlayer().getInventory().setItem(slot, itemStack);
104+
equipItem();
104105
return true;
105106
}
106107

@@ -183,12 +184,17 @@ public ItemStack getItemStack() {
183184

184185
public void updateItemStack() {
185186
String ammo = "";
186-
if (UltraCosmeticsData.get().isAmmoEnabled() && getType().requiresAmmo()) {
187+
if (requiresAmmo && !getUltraCosmetics().getWorldGuardManager().isInShowroom(getPlayer())) {
187188
ammo = ChatColor.WHITE.toString() + ChatColor.BOLD + getOwner().getAmmo(getType()) + " ";
188189
}
189190
itemStack = ItemFactory.create(getType().getMaterial(), ammo + getTypeName(), MessageManager.getMessage("Gadgets.Lore"));
190191
}
191192

193+
public void equipItem() {
194+
updateItemStack();
195+
getPlayer().getInventory().setItem(slot, this.itemStack);
196+
}
197+
192198
protected boolean checkRequirements(PlayerInteractEvent event) {
193199
return true;
194200
}
@@ -234,7 +240,8 @@ public void handleInteract(PlayerInteractEvent event) {
234240
return;
235241
}
236242

237-
if (UltraCosmeticsData.get().isAmmoEnabled() && getType().requiresAmmo() && ultraPlayer.getAmmo(getType()) < 1) {
243+
boolean inShowroom = getUltraCosmetics().getWorldGuardManager().isInShowroom(player);
244+
if (requiresAmmo && ultraPlayer.getAmmo(getType()) < 1 && !inShowroom) {
238245
if (UltraCosmeticsData.get().isAmmoPurchaseEnabled() && getUltraCosmetics().getEconomyHandler().isUsingEconomy()) {
239246
getUltraCosmetics().getMenus().openAmmoPurchaseMenu(getType(), getOwner(), () -> {
240247
});
@@ -257,10 +264,9 @@ public void handleInteract(PlayerInteractEvent event) {
257264
return;
258265
}
259266
ultraPlayer.setCoolDown(getType(), getType().getCountdown(), getType().getRunTime());
260-
if (UltraCosmeticsData.get().isAmmoEnabled() && getType().requiresAmmo()) {
267+
if (requiresAmmo && !inShowroom) {
261268
ultraPlayer.removeAmmo(getType());
262-
updateItemStack();
263-
getPlayer().getInventory().setItem(slot, this.itemStack);
269+
equipItem();
264270
}
265271
if (event.getAction() == Action.RIGHT_CLICK_BLOCK || event.getAction() == Action.LEFT_CLICK_BLOCK) {
266272
lastClickedBlock = event.getClickedBlock();

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

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -82,8 +82,7 @@ public void onItemPickup(org.bukkit.event.player.PlayerPickupItemEvent event) {
8282
}
8383

8484
private void pickupItem() {
85-
updateItemStack();
86-
getPlayer().getInventory().setItem(slot, itemStack);
85+
equipItem();
8786
hammer.remove();
8887
hammer = null;
8988
}

core/src/main/java/be/isach/ultracosmetics/menu/CosmeticMenu.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -210,7 +210,7 @@ protected Map<Integer, T> getSlots(int page, UltraPlayer player) {
210210

211211

212212
protected boolean shouldHideItem(UltraPlayer player, CosmeticType<?> cosmeticType) {
213-
if ((hideNoPermissionItems || player.isFilteringByOwned()) && !pm.hasPermission(player, cosmeticType)) {
213+
if ((hideNoPermissionItems || player.isFilteringByOwned()) && !player.canEquip(cosmeticType)) {
214214
return true;
215215
}
216216
return cosmeticType instanceof CosmeticEntType
@@ -219,8 +219,9 @@ protected boolean shouldHideItem(UltraPlayer player, CosmeticType<?> cosmeticTyp
219219
}
220220

221221
protected boolean hasUnlockable(UltraPlayer player) {
222+
if (ultraCosmetics.getWorldGuardManager().isInShowroom(player.getBukkitPlayer())) return false;
222223
for (CosmeticType<?> type : CosmeticType.enabledOf(category)) {
223-
if (!pm.hasPermission(player, type)) {
224+
if (!player.canEquip(type)) {
224225
return true;
225226
}
226227
}

core/src/main/java/be/isach/ultracosmetics/menu/buttons/CosmeticButton.java

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -33,8 +33,7 @@ public abstract class CosmeticButton implements Button {
3333
private ItemStack stack = null;
3434

3535
public static CosmeticButton fromType(CosmeticType<?> cosmeticType, UltraPlayer ultraPlayer, UltraCosmetics ultraCosmetics) {
36-
if (SettingsManager.getConfig().getBoolean("No-Permission.Custom-Item.enabled")
37-
&& !ultraCosmetics.getPermissionManager().hasPermission(ultraPlayer, cosmeticType)) {
36+
if (SettingsManager.getConfig().getBoolean("No-Permission.Custom-Item.enabled") && !ultraPlayer.canEquip(cosmeticType)) {
3837
return new CosmeticNoPermissionButton(ultraCosmetics, cosmeticType);
3938
}
4039
if (cosmeticType instanceof GadgetType) {
@@ -90,14 +89,14 @@ protected boolean handleClick(ClickData data) {
9089
UltraPlayer ultraPlayer = data.getClicker();
9190
ItemStack clicked = data.getClicked();
9291
if (data.getClick().isRightClick()) {
93-
if (pm.hasPermission(ultraPlayer, cosmeticType)) {
92+
if (ultraPlayer.canEquip(cosmeticType)) {
9493
handleRightClick(data);
9594
return false;
9695
}
9796
}
9897

9998
if (ignoreTooltip || startsWithColorless(clicked.getItemMeta().getDisplayName(), cosmeticType.getCategory().getActivateTooltip())) {
100-
if (pm.hasPermission(ultraPlayer, cosmeticType)) {
99+
if (ultraPlayer.canEquip(cosmeticType)) {
101100
cosmeticType.equip(ultraPlayer, ultraCosmetics);
102101
if (ultraPlayer.hasCosmetic(cosmeticType.getCategory())) {
103102
return handleActivate(data);
@@ -136,7 +135,7 @@ protected boolean handleClick(ClickData data) {
136135
}
137136

138137
private void addPurchaseLore(ItemStack stack, UltraPlayer player) {
139-
if (price > 0 && !pm.hasPermission(player, cosmeticType) && allowPurchase) {
138+
if (price > 0 && !player.canEquip(cosmeticType) && allowPurchase) {
140139
ItemMeta meta = stack.getItemMeta();
141140
List<String> lore = meta.getLore();
142141
lore.add("");

core/src/main/java/be/isach/ultracosmetics/menu/buttons/EquipWholeSuitButton.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ public void onClick(ClickData clickData) {
4343
UltraPlayer player = clickData.getClicker();
4444
for (ArmorSlot armorSlot : ArmorSlot.values()) {
4545
SuitType type = category.getPiece(armorSlot);
46-
if (ultraCosmetics.getPermissionManager().hasPermission(player, type)) {
46+
if (player.canEquip(type)) {
4747
if (player.hasCosmetic(type.getCategory()) && player.getCosmetic(type.getCategory()).getType() == type) {
4848
continue;
4949
}

core/src/main/java/be/isach/ultracosmetics/menu/buttons/ToggleCosmeticButton.java

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ public class ToggleCosmeticButton extends CosmeticButton {
1616
private final boolean showPermissionInLore = SettingsManager.getConfig().getBoolean("No-Permission.Show-In-Lore");
1717
private final String permissionYes = SettingsManager.getConfig().getString("No-Permission.Lore-Message-Yes");
1818
private final String permissionNo = SettingsManager.getConfig().getString("No-Permission.Lore-Message-No");
19+
private final String permissionShowroom = SettingsManager.getConfig().getString("No-Permission.Lore-Message-Showroom");
1920

2021
public ToggleCosmeticButton(UltraCosmetics ultraCosmetics, CosmeticType<?> cosmeticType) {
2122
super(ultraCosmetics, cosmeticType, false);
@@ -42,7 +43,14 @@ protected ItemStack getBaseItem(UltraPlayer ultraPlayer) {
4243

4344
if (showPermissionInLore) {
4445
loreList.add("");
45-
String permissionLore = pm.hasPermission(ultraPlayer, cosmeticType) ? permissionYes : permissionNo;
46+
String permissionLore;
47+
if (ultraCosmetics.getPermissionManager().hasPermission(ultraPlayer, cosmeticType)) {
48+
permissionLore = permissionYes;
49+
} else if (ultraCosmetics.getWorldGuardManager().isInShowroom(ultraPlayer.getBukkitPlayer())) {
50+
permissionLore = permissionShowroom;
51+
} else {
52+
permissionLore = permissionNo;
53+
}
4654
loreList.add(ChatColor.translateAlternateColorCodes('&', permissionLore));
4755
}
4856
meta.setLore(loreList);

core/src/main/java/be/isach/ultracosmetics/menu/menus/MenuGadgets.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,8 +37,7 @@ protected void putItems(Inventory inventory, UltraPlayer player, int page) {
3737

3838
@Override
3939
protected void filterItem(ItemStack itemStack, GadgetType gadgetType, UltraPlayer player) {
40-
if (!UltraCosmeticsData.get().isAmmoEnabled() || !gadgetType.requiresAmmo()
41-
|| !ultraCosmetics.getPermissionManager().hasPermission(player, gadgetType)) {
40+
if (!UltraCosmeticsData.get().isAmmoEnabled() || !gadgetType.requiresAmmo() || !player.canEquip(gadgetType)) {
4241
return;
4342
}
4443
ItemMeta itemMeta = itemStack.getItemMeta();

core/src/main/java/be/isach/ultracosmetics/menu/menus/MenuSuits.java

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -72,10 +72,10 @@ protected int getMaxPages(UltraPlayer player) {
7272
PermissionManager pm = ultraCosmetics.getPermissionManager();
7373
int i = 0;
7474
for (SuitCategory cat : SuitCategory.enabled()) {
75-
if (pm.hasPermission(player, cat.getHelmet())
76-
|| pm.hasPermission(player, cat.getChestplate())
77-
|| pm.hasPermission(player, cat.getLeggings())
78-
|| pm.hasPermission(player, cat.getBoots())) {
75+
if (player.canEquip(cat.getHelmet())
76+
|| player.canEquip(cat.getChestplate())
77+
|| player.canEquip(cat.getLeggings())
78+
|| player.canEquip(cat.getBoots())) {
7979
i++;
8080
}
8181
}
@@ -86,10 +86,10 @@ protected int getMaxPages(UltraPlayer player) {
8686
protected boolean hasUnlockable(UltraPlayer player) {
8787
PermissionManager pm = ultraCosmetics.getPermissionManager();
8888
for (SuitCategory cat : SuitCategory.enabled()) {
89-
if (!pm.hasPermission(player, cat.getHelmet())
90-
|| !pm.hasPermission(player, cat.getChestplate())
91-
|| !pm.hasPermission(player, cat.getLeggings())
92-
|| !pm.hasPermission(player, cat.getBoots())) {
89+
if (!player.canEquip(cat.getHelmet())
90+
|| !player.canEquip(cat.getChestplate())
91+
|| !player.canEquip(cat.getLeggings())
92+
|| !player.canEquip(cat.getBoots())) {
9393
return true;
9494
}
9595
}

core/src/main/java/be/isach/ultracosmetics/player/UltraPlayer.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -142,6 +142,17 @@ public boolean canUse(CosmeticType<?> type) {
142142
return getCooldown(type) == 0;
143143
}
144144

145+
/**
146+
* Checks if the player can equip a cosmetic, whether due to permissions or a showroom.
147+
*
148+
* @param type the type of cosmetic to check for
149+
* @return true if the cosmetic can be equipped
150+
*/
151+
public boolean canEquip(CosmeticType<?> type) {
152+
return ultraCosmetics.getWorldGuardManager().isInShowroom(getBukkitPlayer())
153+
|| ultraCosmetics.getPermissionManager().hasPermission(this, type);
154+
}
155+
145156
/**
146157
* Sets the cooldown of a gadget.
147158
*

0 commit comments

Comments
 (0)