Trimmed item name and price on signs
This commit is contained in:
parent
41cb2b2b65
commit
aa00c8d1f7
|
|
@ -119,7 +119,7 @@ public class TransactionListener extends EventListener {
|
||||||
}
|
}
|
||||||
TagResolver placeholders = TagResolver.resolver(action,
|
TagResolver placeholders = TagResolver.resolver(action,
|
||||||
Placeholder.parsed("amount", "" + playerShop.getAmount()),
|
Placeholder.parsed("amount", "" + playerShop.getAmount()),
|
||||||
Placeholder.component("item", itemComponent(playerShop.getItemStack())),
|
Placeholder.component("item", ShopUtil.itemNameComponent(playerShop.getItemStack())),
|
||||||
Placeholder.parsed("material", Util.capitalize(playerShop.getItemStack().getType().name())),
|
Placeholder.parsed("material", Util.capitalize(playerShop.getItemStack().getType().name())),
|
||||||
Placeholder.parsed("price", "" + playerShop.getPrice())
|
Placeholder.parsed("price", "" + playerShop.getPrice())
|
||||||
);
|
);
|
||||||
|
|
@ -127,44 +127,6 @@ public class TransactionListener extends EventListener {
|
||||||
player.sendMiniMessage(MessageConfig.SHOP_INFO, placeholders);
|
player.sendMiniMessage(MessageConfig.SHOP_INFO, placeholders);
|
||||||
}
|
}
|
||||||
|
|
||||||
private Component itemComponent(ItemStack item) {
|
|
||||||
Component component;
|
|
||||||
MiniMessage miniMessage = MiniMessage.miniMessage();
|
|
||||||
if (item.getType().equals(Material.AIR))
|
|
||||||
return miniMessage.deserialize("NONE");
|
|
||||||
boolean dname = item.hasItemMeta() && item.getItemMeta().hasDisplayName();
|
|
||||||
if (dname) {
|
|
||||||
component = item.getItemMeta().displayName();
|
|
||||||
} else {
|
|
||||||
component = Component.text(materialToName(item.getType()), NamedTextColor.WHITE);
|
|
||||||
}
|
|
||||||
component = component.hoverEvent(item.asHoverEvent());
|
|
||||||
return component;
|
|
||||||
}
|
|
||||||
|
|
||||||
private String materialToName(Material m) {
|
|
||||||
if (m.equals(Material.TNT)) {
|
|
||||||
return "TNT";
|
|
||||||
}
|
|
||||||
String orig = m.toString().toLowerCase();
|
|
||||||
String[] splits = orig.split("_");
|
|
||||||
StringBuilder sb = new StringBuilder(orig.length());
|
|
||||||
int pos = 0;
|
|
||||||
for (String split : splits) {
|
|
||||||
sb.append(split);
|
|
||||||
int loc = sb.lastIndexOf(split);
|
|
||||||
char charLoc = sb.charAt(loc);
|
|
||||||
if (!(split.equalsIgnoreCase("of") || split.equalsIgnoreCase("and") ||
|
|
||||||
split.equalsIgnoreCase("with") || split.equalsIgnoreCase("on")))
|
|
||||||
sb.setCharAt(loc, Character.toUpperCase(charLoc));
|
|
||||||
if (pos != splits.length - 1)
|
|
||||||
sb.append(' ');
|
|
||||||
++pos;
|
|
||||||
}
|
|
||||||
|
|
||||||
return sb.toString();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void executeTransaction(Player player, PlayerShop shop) {
|
private void executeTransaction(Player player, PlayerShop shop) {
|
||||||
if (shop == null || shop.getItemStack() == null)
|
if (shop == null || shop.getItemStack() == null)
|
||||||
return;
|
return;
|
||||||
|
|
|
||||||
|
|
@ -152,9 +152,9 @@ public class PlayerShop {
|
||||||
MiniMessage miniMessage = MiniMessage.miniMessage();
|
MiniMessage miniMessage = MiniMessage.miniMessage();
|
||||||
TagResolver tagResolver = TagResolver.resolver(
|
TagResolver tagResolver = TagResolver.resolver(
|
||||||
Placeholder.unparsed("ownername", getOwnerName()),
|
Placeholder.unparsed("ownername", getOwnerName()),
|
||||||
Placeholder.unparsed("price", String.valueOf(getPrice())),
|
Placeholder.unparsed("price", trimPrice(String.valueOf(getPrice()))),
|
||||||
Placeholder.unparsed("amount", String.valueOf(getAmount())),
|
Placeholder.unparsed("amount", String.valueOf(getAmount())),
|
||||||
Placeholder.component("itemname", ShopUtil.itemNameComponent(getItemStack()))
|
Placeholder.component("itemname", ShopUtil.trimmedItemNameComponent(getItemStack()))
|
||||||
);
|
);
|
||||||
for (int i = 0; i < 4; i++) {
|
for (int i = 0; i < 4; i++) {
|
||||||
signBlock.line(i, miniMessage.deserialize(signLines.get(i), tagResolver));
|
signBlock.line(i, miniMessage.deserialize(signLines.get(i), tagResolver));
|
||||||
|
|
@ -164,6 +164,13 @@ public class PlayerShop {
|
||||||
}.runTaskLater(PlayerShops.getInstance(), 2L);
|
}.runTaskLater(PlayerShops.getInstance(), 2L);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private String trimPrice(String price) {
|
||||||
|
if (price.length() > 15) {
|
||||||
|
return price.substring(0, 13) + "<red>!</red>";
|
||||||
|
}
|
||||||
|
return price;
|
||||||
|
}
|
||||||
|
|
||||||
public double getPricePerItem() {
|
public double getPricePerItem() {
|
||||||
return this.getPrice() / this.getAmount();
|
return this.getPrice() / this.getAmount();
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -3,6 +3,7 @@ package com.alttd.playershops.utils;
|
||||||
import com.alttd.playershops.shop.PlayerShop;
|
import com.alttd.playershops.shop.PlayerShop;
|
||||||
import net.kyori.adventure.text.Component;
|
import net.kyori.adventure.text.Component;
|
||||||
import net.kyori.adventure.text.format.NamedTextColor;
|
import net.kyori.adventure.text.format.NamedTextColor;
|
||||||
|
import net.kyori.adventure.text.minimessage.MiniMessage;
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.Location;
|
import org.bukkit.Location;
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
|
|
@ -156,17 +157,49 @@ public class ShopUtil {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static Component itemNameComponent(ItemStack item) {
|
public static Component trimmedItemNameComponent(ItemStack item) {
|
||||||
Component component = Component.empty();
|
|
||||||
if(item == null || item.getType().equals(Material.AIR))
|
if(item == null || item.getType().equals(Material.AIR))
|
||||||
return Component.text("Nothing");
|
return Component.text("Nothing");
|
||||||
boolean dname = item.hasItemMeta() && item.getItemMeta().hasDisplayName();
|
return materialToTrimmedName(item.getType());
|
||||||
if(dname) {
|
}
|
||||||
component = component.append(item.getItemMeta().displayName());
|
|
||||||
} else {
|
private static Component materialToTrimmedName(Material m) {
|
||||||
component = component.append(Component.text(materialToName(item.getType()), NamedTextColor.WHITE));
|
if (m.equals(Material.TNT)) {
|
||||||
|
return Component.text("TNT", NamedTextColor.WHITE);
|
||||||
|
}
|
||||||
|
String orig = m.name().toLowerCase();
|
||||||
|
String[] splits = orig.split("_");
|
||||||
|
StringBuilder sb = new StringBuilder(orig.length());
|
||||||
|
int pos = 0;
|
||||||
|
for (String split : splits) {
|
||||||
|
sb.append(split);
|
||||||
|
int loc = sb.lastIndexOf(split);
|
||||||
|
char charLoc = sb.charAt(loc);
|
||||||
|
if (!(split.equalsIgnoreCase("of") || split.equalsIgnoreCase("and") ||
|
||||||
|
split.equalsIgnoreCase("with") || split.equalsIgnoreCase("on")))
|
||||||
|
sb.setCharAt(loc, Character.toUpperCase(charLoc));
|
||||||
|
if (pos != splits.length - 1)
|
||||||
|
sb.append(' ');
|
||||||
|
++pos;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (sb.length() > 10)
|
||||||
|
return Component.text(sb.substring(0, 8), NamedTextColor.WHITE).append(Component.text("!", NamedTextColor.RED));
|
||||||
|
return Component.text(sb.toString(), NamedTextColor.WHITE);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Component itemNameComponent(ItemStack item) {
|
||||||
|
Component component;
|
||||||
|
MiniMessage miniMessage = MiniMessage.miniMessage();
|
||||||
|
if (item.getType().equals(Material.AIR))
|
||||||
|
return miniMessage.deserialize("NONE");
|
||||||
|
boolean dname = item.hasItemMeta() && item.getItemMeta().hasDisplayName();
|
||||||
|
if (dname) {
|
||||||
|
component = item.getItemMeta().displayName();
|
||||||
|
} else {
|
||||||
|
component = Component.text(materialToName(item.getType()), NamedTextColor.WHITE);
|
||||||
|
}
|
||||||
|
component = component.hoverEvent(item.asHoverEvent());
|
||||||
return component;
|
return component;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -174,7 +207,7 @@ public class ShopUtil {
|
||||||
if (m.equals(Material.TNT)) {
|
if (m.equals(Material.TNT)) {
|
||||||
return "TNT";
|
return "TNT";
|
||||||
}
|
}
|
||||||
String orig = m.name().toLowerCase();
|
String orig = m.toString().toLowerCase();
|
||||||
String[] splits = orig.split("_");
|
String[] splits = orig.split("_");
|
||||||
StringBuilder sb = new StringBuilder(orig.length());
|
StringBuilder sb = new StringBuilder(orig.length());
|
||||||
int pos = 0;
|
int pos = 0;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user