mirror of
https://github.com/hyperdefined/ToolStats.git
synced 2025-12-06 06:41:44 +00:00
redo lore replacement
Instead of partially matching the old lore, build the old lore and match it instead.
This commit is contained in:
@@ -121,16 +121,6 @@ public class CommandToolStats implements TabExecutor {
|
|||||||
PersistentDataContainer container = finalMeta.getPersistentDataContainer();
|
PersistentDataContainer container = finalMeta.getPersistentDataContainer();
|
||||||
List<String> lore = new ArrayList<>();
|
List<String> lore = new ArrayList<>();
|
||||||
|
|
||||||
String caughtByLore = toolStats.configTools.getLoreFromConfig("fished.caught-by", false);
|
|
||||||
String lootedByLore = toolStats.configTools.getLoreFromConfig("looted.found-by", false);
|
|
||||||
String tradedByLore = toolStats.configTools.getLoreFromConfig("traded.traded-by", false);
|
|
||||||
String spawnedByLore = toolStats.configTools.getLoreFromConfig("spawned-in.spawned-by", false);
|
|
||||||
|
|
||||||
// make sure the config messages are not null
|
|
||||||
if (caughtByLore == null || lootedByLore == null || tradedByLore == null || spawnedByLore == null) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
// set how the item was obtained
|
// set how the item was obtained
|
||||||
Integer origin = -1;
|
Integer origin = -1;
|
||||||
if (container.has(toolStats.originType, PersistentDataType.INTEGER)) {
|
if (container.has(toolStats.originType, PersistentDataType.INTEGER)) {
|
||||||
@@ -155,13 +145,16 @@ public class CommandToolStats implements TabExecutor {
|
|||||||
|
|
||||||
if (flightTime != null) {
|
if (flightTime != null) {
|
||||||
if (toolStats.config.getBoolean("enabled.flight-time")) {
|
if (toolStats.config.getBoolean("enabled.flight-time")) {
|
||||||
lore.add(toolStats.configTools.getLoreFromConfig("flight-time", true).replace("{time}", toolStats.numberFormat.formatDouble((double) flightTime / 1000)));
|
String line = toolStats.configTools.formatLore("flight-time", "{time}", toolStats.numberFormat.formatDouble((double) flightTime / 1000));
|
||||||
|
lore.add(line);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (timeCreated != null) {
|
if (timeCreated != null) {
|
||||||
lore.add(toolStats.configTools.getLoreFromConfig("looted.found-by", true).replace("{player}", player.getName()));
|
String timeCreatedLine = toolStats.configTools.formatLore("looted.found-by", "{player}", player.getName());
|
||||||
lore.add(toolStats.configTools.getLoreFromConfig("looted.found-on", true).replace("{date}", toolStats.numberFormat.formatDate(new Date(timeCreated))));
|
String playerOwnerLine = toolStats.configTools.formatLore("looted.found-on", "{date}", toolStats.numberFormat.formatDate(new Date(timeCreated)));
|
||||||
|
lore.add(timeCreatedLine);
|
||||||
|
lore.add(playerOwnerLine);
|
||||||
}
|
}
|
||||||
|
|
||||||
finalMeta.setLore(lore);
|
finalMeta.setLore(lore);
|
||||||
@@ -191,27 +184,27 @@ public class CommandToolStats implements TabExecutor {
|
|||||||
// show how the item was created based on the previous lore
|
// show how the item was created based on the previous lore
|
||||||
switch (origin) {
|
switch (origin) {
|
||||||
case 0: {
|
case 0: {
|
||||||
lore.add(toolStats.configTools.getLoreFromConfig("created.created-by", true).replace("{player}", ownerName));
|
lore.add(toolStats.configTools.formatLore("created.created-by", "{player}", ownerName));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case 2: {
|
case 2: {
|
||||||
lore.add(toolStats.configTools.getLoreFromConfig("looted.looted-by", true).replace("{player}", ownerName));
|
lore.add(toolStats.configTools.formatLore("looted.looted-by", "{player}", ownerName));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case 3: {
|
case 3: {
|
||||||
lore.add(toolStats.configTools.getLoreFromConfig("traded.traded-by", true).replace("{player}", ownerName));
|
lore.add(toolStats.configTools.formatLore("traded.traded-by", "{player}", ownerName));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case 4: {
|
case 4: {
|
||||||
lore.add(toolStats.configTools.getLoreFromConfig("looted.found-by", true).replace("{player}", ownerName));
|
lore.add(toolStats.configTools.formatLore("looted.found-by", "{player}", ownerName));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case 5: {
|
case 5: {
|
||||||
lore.add(toolStats.configTools.getLoreFromConfig("fished.caught-by", true).replace("{player}", ownerName));
|
lore.add(toolStats.configTools.formatLore("fished.caught-by", "{player}", ownerName));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case 6: {
|
case 6: {
|
||||||
lore.add(toolStats.configTools.getLoreFromConfig("spawned-in.spawned-by", true).replace("{player}", ownerName));
|
lore.add(toolStats.configTools.formatLore("spawned-in.spawned-by", "{player}", ownerName));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -221,30 +214,31 @@ public class CommandToolStats implements TabExecutor {
|
|||||||
if (container.has(toolStats.timeCreated, PersistentDataType.LONG)) {
|
if (container.has(toolStats.timeCreated, PersistentDataType.LONG)) {
|
||||||
Long time = container.get(toolStats.timeCreated, PersistentDataType.LONG);
|
Long time = container.get(toolStats.timeCreated, PersistentDataType.LONG);
|
||||||
if (time != null) {
|
if (time != null) {
|
||||||
|
String date = toolStats.numberFormat.formatDate(new Date(time));
|
||||||
// show how when the item was created based on the previous lore
|
// show how when the item was created based on the previous lore
|
||||||
switch (origin) {
|
switch (origin) {
|
||||||
case 0: {
|
case 0: {
|
||||||
lore.add(toolStats.configTools.getLoreFromConfig("created.created-on", true).replace("{date}", toolStats.numberFormat.formatDate(new Date(time))));
|
lore.add(toolStats.configTools.formatLore("created.created-on", "{date}", date));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case 2: {
|
case 2: {
|
||||||
lore.add(toolStats.configTools.getLoreFromConfig("looted.looted-on", true).replace("{date}", toolStats.numberFormat.formatDate(new Date(time))));
|
lore.add(toolStats.configTools.formatLore("looted.looted-on", "{date}", date));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case 3: {
|
case 3: {
|
||||||
lore.add(toolStats.configTools.getLoreFromConfig("traded.traded-on", true).replace("{date}", toolStats.numberFormat.formatDate(new Date(time))));
|
lore.add(toolStats.configTools.formatLore("traded.traded-on", "{date}", date));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case 4: {
|
case 4: {
|
||||||
lore.add(toolStats.configTools.getLoreFromConfig("looted.found-on", true).replace("{date}", toolStats.numberFormat.formatDate(new Date(time))));
|
lore.add(toolStats.configTools.formatLore("looted.found-on", "{date}", date));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case 5: {
|
case 5: {
|
||||||
lore.add(toolStats.configTools.getLoreFromConfig("fished.caught-on", true).replace("{date}", toolStats.numberFormat.formatDate(new Date(time))));
|
lore.add(toolStats.configTools.formatLore("fished.caught-on", "{date}", date));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case 6: {
|
case 6: {
|
||||||
lore.add(toolStats.configTools.getLoreFromConfig("spawned-in.spawned-on", true).replace("{date}", toolStats.numberFormat.formatDate(new Date(time))));
|
lore.add(toolStats.configTools.formatLore("spawned-in.spawned-on", "{date}", date));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -255,7 +249,7 @@ public class CommandToolStats implements TabExecutor {
|
|||||||
if (container.has(toolStats.swordPlayerKills, PersistentDataType.INTEGER)) {
|
if (container.has(toolStats.swordPlayerKills, PersistentDataType.INTEGER)) {
|
||||||
Integer kills = container.get(toolStats.swordPlayerKills, PersistentDataType.INTEGER);
|
Integer kills = container.get(toolStats.swordPlayerKills, PersistentDataType.INTEGER);
|
||||||
if (kills != null) {
|
if (kills != null) {
|
||||||
lore.add(toolStats.configTools.getLoreFromConfig("kills.player", true).replace("{kills}", toolStats.numberFormat.formatInt(kills)));
|
lore.add(toolStats.configTools.formatLore("kills.player", "{kills}", toolStats.numberFormat.formatInt(kills)));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -263,7 +257,7 @@ public class CommandToolStats implements TabExecutor {
|
|||||||
if (container.has(toolStats.swordMobKills, PersistentDataType.INTEGER)) {
|
if (container.has(toolStats.swordMobKills, PersistentDataType.INTEGER)) {
|
||||||
Integer kills = container.get(toolStats.swordMobKills, PersistentDataType.INTEGER);
|
Integer kills = container.get(toolStats.swordMobKills, PersistentDataType.INTEGER);
|
||||||
if (kills != null) {
|
if (kills != null) {
|
||||||
lore.add(toolStats.configTools.getLoreFromConfig("kills.mob", true).replace("{kills}", toolStats.numberFormat.formatInt(kills)));
|
lore.add(toolStats.configTools.formatLore("kills.mob", "{kills}", toolStats.numberFormat.formatInt(kills)));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -272,14 +266,14 @@ public class CommandToolStats implements TabExecutor {
|
|||||||
if (container.has(toolStats.cropsHarvested, PersistentDataType.INTEGER)) {
|
if (container.has(toolStats.cropsHarvested, PersistentDataType.INTEGER)) {
|
||||||
Integer crops = container.get(toolStats.cropsHarvested, PersistentDataType.INTEGER);
|
Integer crops = container.get(toolStats.cropsHarvested, PersistentDataType.INTEGER);
|
||||||
if (crops != null) {
|
if (crops != null) {
|
||||||
lore.add(toolStats.configTools.getLoreFromConfig("crops-harvested", true).replace("{crops}", toolStats.numberFormat.formatInt(crops)));
|
lore.add(toolStats.configTools.formatLore("crops-harvested", "{crops}", toolStats.numberFormat.formatInt(crops)));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (container.has(toolStats.genericMined, PersistentDataType.INTEGER)) {
|
if (container.has(toolStats.genericMined, PersistentDataType.INTEGER)) {
|
||||||
Integer blocksMined = container.get(toolStats.genericMined, PersistentDataType.INTEGER);
|
Integer blocksMined = container.get(toolStats.genericMined, PersistentDataType.INTEGER);
|
||||||
if (blocksMined != null) {
|
if (blocksMined != null) {
|
||||||
lore.add(toolStats.configTools.getLoreFromConfig("blocks-mined", true).replace("{blocks}", toolStats.numberFormat.formatInt(blocksMined)));
|
lore.add(toolStats.configTools.formatLore("blocks-mined", "{blocks}", toolStats.numberFormat.formatInt(blocksMined)));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -287,7 +281,7 @@ public class CommandToolStats implements TabExecutor {
|
|||||||
if (container.has(toolStats.fishingRodCaught, PersistentDataType.INTEGER)) {
|
if (container.has(toolStats.fishingRodCaught, PersistentDataType.INTEGER)) {
|
||||||
Integer fish = container.get(toolStats.fishingRodCaught, PersistentDataType.INTEGER);
|
Integer fish = container.get(toolStats.fishingRodCaught, PersistentDataType.INTEGER);
|
||||||
if (fish != null) {
|
if (fish != null) {
|
||||||
lore.add(toolStats.configTools.getLoreFromConfig("fished.fish-caught", true).replace("{fish}", toolStats.numberFormat.formatInt(fish)));
|
lore.add(toolStats.configTools.formatLore("fished.fish-caught", "{fish}", toolStats.numberFormat.formatInt(fish)));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -295,7 +289,7 @@ public class CommandToolStats implements TabExecutor {
|
|||||||
if (container.has(toolStats.shearsSheared, PersistentDataType.INTEGER)) {
|
if (container.has(toolStats.shearsSheared, PersistentDataType.INTEGER)) {
|
||||||
Integer sheep = container.get(toolStats.shearsSheared, PersistentDataType.INTEGER);
|
Integer sheep = container.get(toolStats.shearsSheared, PersistentDataType.INTEGER);
|
||||||
if (sheep != null) {
|
if (sheep != null) {
|
||||||
lore.add(toolStats.configTools.getLoreFromConfig("sheep-sheared", true).replace("{sheep}", toolStats.numberFormat.formatInt(sheep)));
|
lore.add(toolStats.configTools.formatLore("sheep-sheared", "{sheep}", toolStats.numberFormat.formatInt(sheep)));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -303,7 +297,7 @@ public class CommandToolStats implements TabExecutor {
|
|||||||
if (container.has(toolStats.armorDamage, PersistentDataType.DOUBLE)) {
|
if (container.has(toolStats.armorDamage, PersistentDataType.DOUBLE)) {
|
||||||
Double damage = container.get(toolStats.armorDamage, PersistentDataType.DOUBLE);
|
Double damage = container.get(toolStats.armorDamage, PersistentDataType.DOUBLE);
|
||||||
if (damage != null) {
|
if (damage != null) {
|
||||||
lore.add(toolStats.configTools.getLoreFromConfig("damage-taken", true).replace("{damage}", toolStats.numberFormat.formatDouble(damage)));
|
toolStats.configTools.formatLore("damage-taken", "{damage}", toolStats.numberFormat.formatDouble(damage));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -311,7 +305,7 @@ public class CommandToolStats implements TabExecutor {
|
|||||||
if (container.has(toolStats.arrowsShot, PersistentDataType.INTEGER)) {
|
if (container.has(toolStats.arrowsShot, PersistentDataType.INTEGER)) {
|
||||||
Integer arrows = container.get(toolStats.arrowsShot, PersistentDataType.INTEGER);
|
Integer arrows = container.get(toolStats.arrowsShot, PersistentDataType.INTEGER);
|
||||||
if (arrows != null) {
|
if (arrows != null) {
|
||||||
lore.add(toolStats.configTools.getLoreFromConfig("arrows-shot", true).replace("{arrows}", toolStats.numberFormat.formatInt(arrows)));
|
toolStats.configTools.formatLore("arrows-shot", "{arrows}", toolStats.numberFormat.formatInt(arrows));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -104,13 +104,18 @@ public class BlocksMined implements Listener {
|
|||||||
toolStats.logger.warning(playerTool + " does not have valid generic-mined set! Resting to zero. This should NEVER happen.");
|
toolStats.logger.warning(playerTool + " does not have valid generic-mined set! Resting to zero. This should NEVER happen.");
|
||||||
}
|
}
|
||||||
|
|
||||||
blocksMined++;
|
container.set(toolStats.genericMined, PersistentDataType.INTEGER, blocksMined + 1);
|
||||||
container.set(toolStats.genericMined, PersistentDataType.INTEGER, blocksMined);
|
|
||||||
|
|
||||||
// do we add the lore based on the config?
|
// do we add the lore based on the config?
|
||||||
if (toolStats.configTools.checkConfig(playerTool.getType(), "blocks-mined")) {
|
if (toolStats.configTools.checkConfig(playerTool.getType(), "blocks-mined")) {
|
||||||
String blocksMinedFormatted = toolStats.numberFormat.formatInt(blocksMined);
|
String oldBlocksMinedFormatted = toolStats.numberFormat.formatInt(blocksMined);
|
||||||
List<String> newLore = toolStats.itemLore.addItemLore(meta, "{blocks}", blocksMinedFormatted, "blocks-mined");
|
String newBlocksMinedFormatted = toolStats.numberFormat.formatInt(blocksMined + 1);
|
||||||
|
String oldLine = toolStats.configTools.formatLore("blocks-mined", "{blocks}", oldBlocksMinedFormatted);
|
||||||
|
String newLine = toolStats.configTools.formatLore("blocks-mined", "{blocks}", newBlocksMinedFormatted);
|
||||||
|
if (oldLine == null || newLine == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
List<String> newLore = toolStats.itemLore.updateItemLore(meta, oldLine, newLine);
|
||||||
meta.setLore(newLore);
|
meta.setLore(newLore);
|
||||||
}
|
}
|
||||||
playerTool.setItemMeta(meta);
|
playerTool.setItemMeta(meta);
|
||||||
@@ -140,13 +145,18 @@ public class BlocksMined implements Listener {
|
|||||||
toolStats.logger.warning(playerTool + " does not have valid crops-mined set! Resting to zero. This should NEVER happen.");
|
toolStats.logger.warning(playerTool + " does not have valid crops-mined set! Resting to zero. This should NEVER happen.");
|
||||||
}
|
}
|
||||||
|
|
||||||
cropsMined++;
|
container.set(toolStats.cropsHarvested, PersistentDataType.INTEGER, cropsMined + 1);
|
||||||
container.set(toolStats.cropsHarvested, PersistentDataType.INTEGER, cropsMined);
|
|
||||||
|
|
||||||
// do we add the lore based on the config?
|
// do we add the lore based on the config?
|
||||||
if (toolStats.configTools.checkConfig(playerTool.getType(), "blocks-mined")) {
|
if (toolStats.configTools.checkConfig(playerTool.getType(), "blocks-mined")) {
|
||||||
String cropsMinedFormatted = toolStats.numberFormat.formatInt(cropsMined);
|
String oldCropsMinedFormatted = toolStats.numberFormat.formatInt(cropsMined);
|
||||||
List<String> newLore = toolStats.itemLore.addItemLore(meta, "{crops}", cropsMinedFormatted, "crops-harvested");
|
String newCropsMinedFormatted = toolStats.numberFormat.formatInt(cropsMined + 1);
|
||||||
|
String oldLine = toolStats.configTools.formatLore("crops-harvested", "{crops}", oldCropsMinedFormatted);
|
||||||
|
String newLine = toolStats.configTools.formatLore("crops-harvested", "{crops}", newCropsMinedFormatted);
|
||||||
|
if (oldLine == null || newLine == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
List<String> newLore = toolStats.itemLore.updateItemLore(meta, oldLine, newLine);
|
||||||
meta.setLore(newLore);
|
meta.setLore(newLore);
|
||||||
}
|
}
|
||||||
playerTool.setItemMeta(meta);
|
playerTool.setItemMeta(meta);
|
||||||
|
|||||||
@@ -64,7 +64,7 @@ public class CraftItem implements Listener {
|
|||||||
if (event.isShiftClick()) {
|
if (event.isShiftClick()) {
|
||||||
String configMessage = toolStats.config.getString("messages.shift-click-warning.crafting");
|
String configMessage = toolStats.config.getString("messages.shift-click-warning.crafting");
|
||||||
if (configMessage != null) {
|
if (configMessage != null) {
|
||||||
if (configMessage.length() != 0) {
|
if (!configMessage.isEmpty()) {
|
||||||
event.getWhoClicked().sendMessage(ChatColor.translateAlternateColorCodes('&', configMessage));
|
event.getWhoClicked().sendMessage(ChatColor.translateAlternateColorCodes('&', configMessage));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -122,21 +122,20 @@ public class CraftItem implements Listener {
|
|||||||
}
|
}
|
||||||
// do we add the lore based on the config?
|
// do we add the lore based on the config?
|
||||||
if (toolStats.configTools.checkConfig(itemStack.getType(), "created-date")) {
|
if (toolStats.configTools.checkConfig(itemStack.getType(), "created-date")) {
|
||||||
String createdOnRaw = toolStats.configTools.getLoreFromConfig("created.created-on", true);
|
String date = toolStats.numberFormat.formatDate(finalDate);
|
||||||
if (createdOnRaw == null) {
|
String newLine = toolStats.configTools.formatLore("created.created-on", "{date}", date);
|
||||||
toolStats.logger.warning("There is no lore message for messages.created.created-on!");
|
if (newLine == null) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
lore.add(createdOnRaw.replace("{date}", toolStats.numberFormat.formatDate(finalDate)));
|
lore.add(newLine);
|
||||||
meta.setLore(lore);
|
meta.setLore(lore);
|
||||||
}
|
}
|
||||||
if (toolStats.configTools.checkConfig(itemStack.getType(), "created-by")) {
|
if (toolStats.configTools.checkConfig(itemStack.getType(), "created-by")) {
|
||||||
String createdByRaw = toolStats.configTools.getLoreFromConfig("created.created-by", true);
|
String newLine = toolStats.configTools.formatLore("created.created-by", "{player}", owner.getName());
|
||||||
if (createdByRaw == null) {
|
if (newLine == null) {
|
||||||
toolStats.logger.warning("There is no lore message for messages.created.created-by!");
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
lore.add(createdByRaw.replace("{player}", owner.getName()));
|
lore.add(newLine);
|
||||||
meta.setLore(lore);
|
meta.setLore(lore);
|
||||||
}
|
}
|
||||||
newItem.setItemMeta(meta);
|
newItem.setItemMeta(meta);
|
||||||
|
|||||||
@@ -241,13 +241,18 @@ public class EntityDamage implements Listener {
|
|||||||
toolStats.logger.warning(itemStack + " does not have valid player-kills set! Resting to zero. This should NEVER happen.");
|
toolStats.logger.warning(itemStack + " does not have valid player-kills set! Resting to zero. This should NEVER happen.");
|
||||||
}
|
}
|
||||||
|
|
||||||
playerKills++;
|
container.set(toolStats.swordPlayerKills, PersistentDataType.INTEGER, playerKills + 1);
|
||||||
container.set(toolStats.swordPlayerKills, PersistentDataType.INTEGER, playerKills);
|
|
||||||
|
|
||||||
// do we add the lore based on the config?
|
// do we add the lore based on the config?
|
||||||
if (toolStats.configTools.checkConfig(itemStack.getType(), "player-kills")) {
|
if (toolStats.configTools.checkConfig(itemStack.getType(), "player-kills")) {
|
||||||
String playerKillsFormatted = toolStats.numberFormat.formatInt(playerKills);
|
String oldPlayerKillsFormatted = toolStats.numberFormat.formatInt(playerKills);
|
||||||
List<String> newLore = toolStats.itemLore.addItemLore(meta, "{kills}", playerKillsFormatted, "kills.player");
|
String newPlayerKillsFormatted = toolStats.numberFormat.formatInt(playerKills + 1);
|
||||||
|
String oldLine = toolStats.configTools.formatLore("kills.player", "{kills}", oldPlayerKillsFormatted);
|
||||||
|
String newLine = toolStats.configTools.formatLore("kills.player", "{kills}", newPlayerKillsFormatted);
|
||||||
|
if (oldLine == null || newLine == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
List<String> newLore = toolStats.itemLore.updateItemLore(meta, oldLine, newLine);
|
||||||
meta.setLore(newLore);
|
meta.setLore(newLore);
|
||||||
}
|
}
|
||||||
itemStack.setItemMeta(meta);
|
itemStack.setItemMeta(meta);
|
||||||
@@ -275,13 +280,18 @@ public class EntityDamage implements Listener {
|
|||||||
toolStats.logger.warning(itemStack + " does not have valid mob-kills set! Resting to zero. This should NEVER happen.");
|
toolStats.logger.warning(itemStack + " does not have valid mob-kills set! Resting to zero. This should NEVER happen.");
|
||||||
}
|
}
|
||||||
|
|
||||||
mobKills++;
|
container.set(toolStats.swordMobKills, PersistentDataType.INTEGER, mobKills + 1);
|
||||||
container.set(toolStats.swordMobKills, PersistentDataType.INTEGER, mobKills);
|
|
||||||
|
|
||||||
// do we add the lore based on the config?
|
// do we add the lore based on the config?
|
||||||
if (toolStats.configTools.checkConfig(itemStack.getType(), "mob-kills")) {
|
if (toolStats.configTools.checkConfig(itemStack.getType(), "mob-kills")) {
|
||||||
String mobKillsFormatted = toolStats.numberFormat.formatInt(mobKills);
|
String oldMobKillsFormatted = toolStats.numberFormat.formatInt(mobKills);
|
||||||
List<String> newLore = toolStats.itemLore.addItemLore(meta, "{kills}", mobKillsFormatted, "kills.mob");
|
String newMobKillsFormatted = toolStats.numberFormat.formatInt(mobKills + 1);
|
||||||
|
String oldLine = toolStats.configTools.formatLore("kills.mob", "{kills}", oldMobKillsFormatted);
|
||||||
|
String newLine = toolStats.configTools.formatLore("kills.mob", "{kills}", newMobKillsFormatted);
|
||||||
|
if (oldLine == null || newLine == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
List<String> newLore = toolStats.itemLore.updateItemLore(meta, oldLine, newLine);
|
||||||
meta.setLore(newLore);
|
meta.setLore(newLore);
|
||||||
}
|
}
|
||||||
itemStack.setItemMeta(meta);
|
itemStack.setItemMeta(meta);
|
||||||
@@ -315,12 +325,17 @@ public class EntityDamage implements Listener {
|
|||||||
}
|
}
|
||||||
|
|
||||||
damageTaken = damageTaken + damage;
|
damageTaken = damageTaken + damage;
|
||||||
container.set(toolStats.armorDamage, PersistentDataType.DOUBLE, damageTaken);
|
container.set(toolStats.armorDamage, PersistentDataType.DOUBLE, damageTaken + damage);
|
||||||
container.set(toolStats.armorDamageInt, PersistentDataType.INTEGER, damageTaken.intValue());
|
|
||||||
|
|
||||||
if (toolStats.config.getBoolean("enabled.armor-damage")) {
|
if (toolStats.config.getBoolean("enabled.armor-damage")) {
|
||||||
String damageTakenFormatted = toolStats.numberFormat.formatDouble(damageTaken);
|
String oldDamageFormatted = toolStats.numberFormat.formatDouble(damageTaken);
|
||||||
List<String> newLore = toolStats.itemLore.addItemLore(meta, "{damage}", damageTakenFormatted, "damage-taken");
|
String newDamageFormatted = toolStats.numberFormat.formatDouble(damageTaken + damage);
|
||||||
|
String oldLine = toolStats.configTools.formatLore("damage-taken", "{damage}", oldDamageFormatted);
|
||||||
|
String newLine = toolStats.configTools.formatLore("damage-taken", "{damage}", newDamageFormatted);
|
||||||
|
if (oldLine == null || newLine == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
List<String> newLore = toolStats.itemLore.updateItemLore(meta, oldLine, newLine);
|
||||||
meta.setLore(newLore);
|
meta.setLore(newLore);
|
||||||
}
|
}
|
||||||
itemStack.setItemMeta(meta);
|
itemStack.setItemMeta(meta);
|
||||||
@@ -349,13 +364,18 @@ public class EntityDamage implements Listener {
|
|||||||
toolStats.logger.warning(newTrident + " does not have valid mob-kills set! Resting to zero. This should NEVER happen.");
|
toolStats.logger.warning(newTrident + " does not have valid mob-kills set! Resting to zero. This should NEVER happen.");
|
||||||
}
|
}
|
||||||
|
|
||||||
mobKills++;
|
container.set(toolStats.swordMobKills, PersistentDataType.INTEGER, mobKills + 1);
|
||||||
container.set(toolStats.swordMobKills, PersistentDataType.INTEGER, mobKills);
|
|
||||||
|
|
||||||
// do we add the lore based on the config?
|
// do we add the lore based on the config?
|
||||||
if (toolStats.configTools.checkConfig(newTrident.getType(), "mob-kills")) {
|
if (toolStats.configTools.checkConfig(newTrident.getType(), "mob-kills")) {
|
||||||
String mobKillsFormatted = toolStats.numberFormat.formatInt(mobKills);
|
String oldMobKillsFormatted = toolStats.numberFormat.formatDouble(mobKills);
|
||||||
List<String> newLore = toolStats.itemLore.addItemLore(meta, "{kills}", mobKillsFormatted, "kills.mob");
|
String newMobKillsFormatted = toolStats.numberFormat.formatDouble(mobKills + 1);
|
||||||
|
String oldLine = toolStats.configTools.formatLore("kills.mob", "{kills}", oldMobKillsFormatted);
|
||||||
|
String newLine = toolStats.configTools.formatLore("kills.mob", "{kills}", newMobKillsFormatted);
|
||||||
|
if (oldLine == null || newLine == null) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
List<String> newLore = toolStats.itemLore.updateItemLore(meta, oldLine, newLine);
|
||||||
meta.setLore(newLore);
|
meta.setLore(newLore);
|
||||||
}
|
}
|
||||||
newTrident.setItemMeta(meta);
|
newTrident.setItemMeta(meta);
|
||||||
@@ -385,13 +405,18 @@ public class EntityDamage implements Listener {
|
|||||||
toolStats.logger.warning(newTrident + " does not have valid player-kills set! Resting to zero. This should NEVER happen.");
|
toolStats.logger.warning(newTrident + " does not have valid player-kills set! Resting to zero. This should NEVER happen.");
|
||||||
}
|
}
|
||||||
|
|
||||||
playerKills++;
|
container.set(toolStats.swordPlayerKills, PersistentDataType.INTEGER, playerKills + 1);
|
||||||
container.set(toolStats.swordPlayerKills, PersistentDataType.INTEGER, playerKills);
|
|
||||||
|
|
||||||
// do we add the lore based on the config?
|
// do we add the lore based on the config?
|
||||||
if (toolStats.configTools.checkConfig(newTrident.getType(), "player-kills")) {
|
if (toolStats.configTools.checkConfig(newTrident.getType(), "player-kills")) {
|
||||||
String playerKillsFormatted = toolStats.numberFormat.formatInt(playerKills);
|
String oldPlayerKillsFormatted = toolStats.numberFormat.formatDouble(playerKills);
|
||||||
List<String> newLore = toolStats.itemLore.addItemLore(meta, "{kills}", playerKillsFormatted, "kills.player");
|
String newPlayerKillsFormatted = toolStats.numberFormat.formatDouble(playerKills + 1);
|
||||||
|
String oldLine = toolStats.configTools.formatLore("kills.player", "{kills}", oldPlayerKillsFormatted);
|
||||||
|
String newLine = toolStats.configTools.formatLore("kills.player", "{kills}", newPlayerKillsFormatted);
|
||||||
|
if (oldLine == null || newLine == null) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
List<String> newLore = toolStats.itemLore.updateItemLore(meta, oldLine, newLine);
|
||||||
meta.setLore(newLore);
|
meta.setLore(newLore);
|
||||||
}
|
}
|
||||||
newTrident.setItemMeta(meta);
|
newTrident.setItemMeta(meta);
|
||||||
|
|||||||
@@ -86,7 +86,8 @@ public class EntityDeath implements Listener {
|
|||||||
container.set(toolStats.originType, PersistentDataType.INTEGER, 1);
|
container.set(toolStats.originType, PersistentDataType.INTEGER, 1);
|
||||||
|
|
||||||
if (toolStats.config.getBoolean("enabled.dropped-by")) {
|
if (toolStats.config.getBoolean("enabled.dropped-by")) {
|
||||||
List<String> newLore = toolStats.itemLore.addItemLore(meta, "{name}", mob, "dropped-by");
|
String newLine = toolStats.configTools.formatLore("dropped-by", "{name}", mob);
|
||||||
|
List<String> newLore = toolStats.itemLore.addItemLore(meta, newLine);
|
||||||
meta.setLore(newLore);
|
meta.setLore(newLore);
|
||||||
}
|
}
|
||||||
newItem.setItemMeta(meta);
|
newItem.setItemMeta(meta);
|
||||||
|
|||||||
@@ -20,7 +20,6 @@ package lol.hyper.toolstats.events;
|
|||||||
import lol.hyper.toolstats.ToolStats;
|
import lol.hyper.toolstats.ToolStats;
|
||||||
import lol.hyper.toolstats.tools.UUIDDataType;
|
import lol.hyper.toolstats.tools.UUIDDataType;
|
||||||
import org.bukkit.Location;
|
import org.bukkit.Location;
|
||||||
import org.bukkit.Material;
|
|
||||||
import org.bukkit.event.EventHandler;
|
import org.bukkit.event.EventHandler;
|
||||||
import org.bukkit.event.Listener;
|
import org.bukkit.event.Listener;
|
||||||
import org.bukkit.event.inventory.InventoryOpenEvent;
|
import org.bukkit.event.inventory.InventoryOpenEvent;
|
||||||
@@ -83,14 +82,6 @@ public class InventoryOpen implements Listener {
|
|||||||
container.set(toolStats.hash, PersistentDataType.STRING, hash);
|
container.set(toolStats.hash, PersistentDataType.STRING, hash);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// add origin tag
|
|
||||||
if (!container.has(toolStats.originType, PersistentDataType.INTEGER)) {
|
|
||||||
itemMeta = toolStats.itemLore.getOrigin(itemMeta, itemStack.getType() == Material.ELYTRA);
|
|
||||||
if (itemMeta == null) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
ItemMeta clone = itemMeta.clone();
|
ItemMeta clone = itemMeta.clone();
|
||||||
BukkitRunnable runnable = new BukkitRunnable() {
|
BukkitRunnable runnable = new BukkitRunnable() {
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -32,6 +32,7 @@ import org.bukkit.inventory.PlayerInventory;
|
|||||||
import org.bukkit.inventory.meta.ItemMeta;
|
import org.bukkit.inventory.meta.ItemMeta;
|
||||||
import org.bukkit.persistence.PersistentDataContainer;
|
import org.bukkit.persistence.PersistentDataContainer;
|
||||||
import org.bukkit.persistence.PersistentDataType;
|
import org.bukkit.persistence.PersistentDataType;
|
||||||
|
import org.jetbrains.annotations.Nullable;
|
||||||
|
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@@ -58,25 +59,8 @@ public class PlayerFish implements Listener {
|
|||||||
if (player.getGameMode() == GameMode.CREATIVE || player.getGameMode() == GameMode.SPECTATOR) {
|
if (player.getGameMode() == GameMode.CREATIVE || player.getGameMode() == GameMode.SPECTATOR) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
// make sure the player is holding a fishing rod
|
|
||||||
// player can fish with their offhand
|
|
||||||
PlayerInventory inventory = player.getInventory();
|
|
||||||
boolean isMainHand = inventory.getItemInMainHand().getType() == Material.FISHING_ROD;
|
|
||||||
boolean isOffHand = inventory.getItemInOffHand().getType() == Material.FISHING_ROD;
|
|
||||||
ItemStack fishingRod = null;
|
|
||||||
if (isMainHand) {
|
|
||||||
fishingRod = inventory.getItemInMainHand();
|
|
||||||
}
|
|
||||||
if (isOffHand) {
|
|
||||||
fishingRod = inventory.getItemInOffHand();
|
|
||||||
}
|
|
||||||
|
|
||||||
// if the player is hold fishing rods in both hands
|
|
||||||
// default to main hand since that takes priority
|
|
||||||
if (isMainHand && isOffHand) {
|
|
||||||
fishingRod = inventory.getItemInMainHand();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
ItemStack fishingRod = getItemStack(player);
|
||||||
// player swapped items?
|
// player swapped items?
|
||||||
if (fishingRod == null) {
|
if (fishingRod == null) {
|
||||||
return;
|
return;
|
||||||
@@ -99,6 +83,26 @@ public class PlayerFish implements Listener {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static @Nullable ItemStack getItemStack(Player player) {
|
||||||
|
PlayerInventory inventory = player.getInventory();
|
||||||
|
boolean isMainHand = inventory.getItemInMainHand().getType() == Material.FISHING_ROD;
|
||||||
|
boolean isOffHand = inventory.getItemInOffHand().getType() == Material.FISHING_ROD;
|
||||||
|
ItemStack fishingRod = null;
|
||||||
|
if (isMainHand) {
|
||||||
|
fishingRod = inventory.getItemInMainHand();
|
||||||
|
}
|
||||||
|
if (isOffHand) {
|
||||||
|
fishingRod = inventory.getItemInOffHand();
|
||||||
|
}
|
||||||
|
|
||||||
|
// if the player is hold fishing rods in both hands
|
||||||
|
// default to main hand since that takes priority
|
||||||
|
if (isMainHand && isOffHand) {
|
||||||
|
fishingRod = inventory.getItemInMainHand();
|
||||||
|
}
|
||||||
|
return fishingRod;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Update a fishing rod's fish count.
|
* Update a fishing rod's fish count.
|
||||||
*
|
*
|
||||||
@@ -121,12 +125,17 @@ public class PlayerFish implements Listener {
|
|||||||
toolStats.logger.warning(fishingRod + " does not have valid fish-caught set! Resting to zero. This should NEVER happen.");
|
toolStats.logger.warning(fishingRod + " does not have valid fish-caught set! Resting to zero. This should NEVER happen.");
|
||||||
}
|
}
|
||||||
|
|
||||||
fishCaught++;
|
container.set(toolStats.fishingRodCaught, PersistentDataType.INTEGER, fishCaught + 1);
|
||||||
container.set(toolStats.fishingRodCaught, PersistentDataType.INTEGER, fishCaught);
|
|
||||||
|
|
||||||
if (toolStats.config.getBoolean("enabled.fish-caught")) {
|
if (toolStats.config.getBoolean("enabled.fish-caught")) {
|
||||||
String fishCaughtFormatted = toolStats.numberFormat.formatInt(fishCaught);
|
String oldFishFormatted = toolStats.numberFormat.formatInt(fishCaught);
|
||||||
List<String> newLore = toolStats.itemLore.addItemLore(meta, "{fish}", fishCaughtFormatted, "fished.fish-caught");
|
String newFishFormatted = toolStats.numberFormat.formatInt(fishCaught + 1);
|
||||||
|
String oldLine = toolStats.configTools.formatLore("fished.fish-caught", "{fish}", oldFishFormatted);
|
||||||
|
String newLine = toolStats.configTools.formatLore("fished.fish-caught", "{fish}", newFishFormatted);
|
||||||
|
if (oldLine == null || newLine == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
List<String> newLore = toolStats.itemLore.updateItemLore(meta, oldLine, newLine);
|
||||||
meta.setLore(newLore);
|
meta.setLore(newLore);
|
||||||
}
|
}
|
||||||
fishingRod.setItemMeta(meta);
|
fishingRod.setItemMeta(meta);
|
||||||
|
|||||||
@@ -19,7 +19,6 @@ package lol.hyper.toolstats.events;
|
|||||||
|
|
||||||
import lol.hyper.toolstats.ToolStats;
|
import lol.hyper.toolstats.ToolStats;
|
||||||
import lol.hyper.toolstats.tools.UUIDDataType;
|
import lol.hyper.toolstats.tools.UUIDDataType;
|
||||||
import org.bukkit.Material;
|
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.event.EventHandler;
|
import org.bukkit.event.EventHandler;
|
||||||
import org.bukkit.event.Listener;
|
import org.bukkit.event.Listener;
|
||||||
@@ -77,14 +76,6 @@ public class PlayerJoin implements Listener {
|
|||||||
String hash = toolStats.hashMaker.makeHash(itemStack.getType(), owner, timestamp);
|
String hash = toolStats.hashMaker.makeHash(itemStack.getType(), owner, timestamp);
|
||||||
container.set(toolStats.hash, PersistentDataType.STRING, hash);
|
container.set(toolStats.hash, PersistentDataType.STRING, hash);
|
||||||
}
|
}
|
||||||
|
|
||||||
// add origin tag
|
|
||||||
if (!container.has(toolStats.originType, PersistentDataType.INTEGER)) {
|
|
||||||
itemMeta = toolStats.itemLore.getOrigin(itemMeta, itemStack.getType() == Material.ELYTRA);
|
|
||||||
if (itemMeta == null) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
ItemMeta clone = itemMeta.clone();
|
ItemMeta clone = itemMeta.clone();
|
||||||
BukkitRunnable runnable = new BukkitRunnable() {
|
BukkitRunnable runnable = new BukkitRunnable() {
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -86,13 +86,19 @@ public class PlayerMove implements Listener {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// get the duration of the flight
|
// get the duration of the flight
|
||||||
flightTime = (System.currentTimeMillis() - startTime) + flightTime;
|
long duration = (System.currentTimeMillis() - startTime) + flightTime;
|
||||||
container.set(toolStats.flightTime, PersistentDataType.LONG, flightTime);
|
container.set(toolStats.flightTime, PersistentDataType.LONG, flightTime + duration);
|
||||||
|
|
||||||
// do we add the lore based on the config?
|
// do we add the lore based on the config?
|
||||||
if (toolStats.config.getBoolean("enabled.flight-time")) {
|
if (toolStats.config.getBoolean("enabled.flight-time")) {
|
||||||
String flightTimeFormatted = toolStats.numberFormat.formatDouble((double) flightTime / 1000);
|
String oldFlightFormatted = toolStats.numberFormat.formatDouble((double) flightTime / 1000);
|
||||||
List<String> newLore = toolStats.itemLore.addItemLore(meta, "{time}", flightTimeFormatted, "flight-time");
|
String newFlightFormatted = toolStats.numberFormat.formatDouble((double) (flightTime + duration) / 1000);
|
||||||
|
String oldLine = toolStats.configTools.formatLore("flight-time", "{time}", oldFlightFormatted);
|
||||||
|
String newLine = toolStats.configTools.formatLore("flight-time", "{time}", newFlightFormatted);
|
||||||
|
if (oldLine == null || newLine == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
List<String> newLore = toolStats.itemLore.updateItemLore(meta, oldLine, newLine);
|
||||||
meta.setLore(newLore);
|
meta.setLore(newLore);
|
||||||
}
|
}
|
||||||
chest.setItemMeta(meta);
|
chest.setItemMeta(meta);
|
||||||
|
|||||||
@@ -32,6 +32,7 @@ import org.bukkit.inventory.PlayerInventory;
|
|||||||
import org.bukkit.inventory.meta.ItemMeta;
|
import org.bukkit.inventory.meta.ItemMeta;
|
||||||
import org.bukkit.persistence.PersistentDataContainer;
|
import org.bukkit.persistence.PersistentDataContainer;
|
||||||
import org.bukkit.persistence.PersistentDataType;
|
import org.bukkit.persistence.PersistentDataType;
|
||||||
|
import org.jetbrains.annotations.Nullable;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@@ -57,25 +58,7 @@ public class SheepShear implements Listener {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// make sure the player is holding shears
|
ItemStack shears = getShears(player);
|
||||||
// player can shear with their offhand
|
|
||||||
PlayerInventory inventory = player.getInventory();
|
|
||||||
boolean isMainHand = inventory.getItemInMainHand().getType() == Material.SHEARS;
|
|
||||||
boolean isOffHand = inventory.getItemInOffHand().getType() == Material.SHEARS;
|
|
||||||
ItemStack shears = null;
|
|
||||||
if (isMainHand) {
|
|
||||||
shears = inventory.getItemInMainHand();
|
|
||||||
}
|
|
||||||
if (isOffHand) {
|
|
||||||
shears = inventory.getItemInOffHand();
|
|
||||||
}
|
|
||||||
|
|
||||||
// if the player is hold fishing rods in both hands
|
|
||||||
// default to main hand since that takes priority
|
|
||||||
if (isMainHand && isOffHand) {
|
|
||||||
shears = inventory.getItemInMainHand();
|
|
||||||
}
|
|
||||||
|
|
||||||
// player swapped items?
|
// player swapped items?
|
||||||
if (shears == null) {
|
if (shears == null) {
|
||||||
return;
|
return;
|
||||||
@@ -92,6 +75,26 @@ public class SheepShear implements Listener {
|
|||||||
addLore(finalShears);
|
addLore(finalShears);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static @Nullable ItemStack getShears(Player player) {
|
||||||
|
PlayerInventory inventory = player.getInventory();
|
||||||
|
boolean isMainHand = inventory.getItemInMainHand().getType() == Material.SHEARS;
|
||||||
|
boolean isOffHand = inventory.getItemInOffHand().getType() == Material.SHEARS;
|
||||||
|
ItemStack shears = null;
|
||||||
|
if (isMainHand) {
|
||||||
|
shears = inventory.getItemInMainHand();
|
||||||
|
}
|
||||||
|
if (isOffHand) {
|
||||||
|
shears = inventory.getItemInOffHand();
|
||||||
|
}
|
||||||
|
|
||||||
|
// if the player is hold shears in both hands
|
||||||
|
// default to main hand since that takes priority
|
||||||
|
if (isMainHand && isOffHand) {
|
||||||
|
shears = inventory.getItemInMainHand();
|
||||||
|
}
|
||||||
|
return shears;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Adds tags to shears.
|
* Adds tags to shears.
|
||||||
*
|
*
|
||||||
@@ -114,12 +117,17 @@ public class SheepShear implements Listener {
|
|||||||
toolStats.logger.warning(newShears + " does not have valid sheared set! Resting to zero. This should NEVER happen.");
|
toolStats.logger.warning(newShears + " does not have valid sheared set! Resting to zero. This should NEVER happen.");
|
||||||
}
|
}
|
||||||
|
|
||||||
sheepSheared++;
|
container.set(toolStats.shearsSheared, PersistentDataType.INTEGER, sheepSheared + 1);
|
||||||
container.set(toolStats.shearsSheared, PersistentDataType.INTEGER, sheepSheared);
|
|
||||||
|
|
||||||
if (toolStats.config.getBoolean("enabled.sheep-sheared")) {
|
if (toolStats.config.getBoolean("enabled.sheep-sheared")) {
|
||||||
String sheepShearedFormatted = toolStats.numberFormat.formatInt(sheepSheared);
|
String oldSheepFormatted = toolStats.numberFormat.formatInt(sheepSheared);
|
||||||
List<String> newLore = toolStats.itemLore.addItemLore(meta, "{sheep}", sheepShearedFormatted, "sheep-sheared");
|
String newSheepFormatted = toolStats.numberFormat.formatInt(sheepSheared + 1);
|
||||||
|
String oldLine = toolStats.configTools.formatLore("sheep-sheared", "{sheep}", oldSheepFormatted);
|
||||||
|
String newLine = toolStats.configTools.formatLore("sheep-sheared", "{sheep}", newSheepFormatted);
|
||||||
|
if (oldLine == null || newLine == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
List<String> newLore = toolStats.itemLore.updateItemLore(meta, oldLine, newLine);
|
||||||
meta.setLore(newLore);
|
meta.setLore(newLore);
|
||||||
}
|
}
|
||||||
newShears.setItemMeta(meta);
|
newShears.setItemMeta(meta);
|
||||||
|
|||||||
@@ -31,6 +31,7 @@ import org.bukkit.inventory.PlayerInventory;
|
|||||||
import org.bukkit.inventory.meta.ItemMeta;
|
import org.bukkit.inventory.meta.ItemMeta;
|
||||||
import org.bukkit.persistence.PersistentDataContainer;
|
import org.bukkit.persistence.PersistentDataContainer;
|
||||||
import org.bukkit.persistence.PersistentDataType;
|
import org.bukkit.persistence.PersistentDataType;
|
||||||
|
import org.jetbrains.annotations.Nullable;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@@ -56,6 +57,17 @@ public class ShootBow implements Listener {
|
|||||||
}
|
}
|
||||||
|
|
||||||
PlayerInventory inventory = player.getInventory();
|
PlayerInventory inventory = player.getInventory();
|
||||||
|
ItemStack heldBow = getBow(inventory);
|
||||||
|
|
||||||
|
// player swapped
|
||||||
|
if (heldBow == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
updateArrowsShot(heldBow);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static @Nullable ItemStack getBow(PlayerInventory inventory) {
|
||||||
boolean isMainHand = inventory.getItemInMainHand().getType() == Material.BOW || inventory.getItemInMainHand().getType() == Material.CROSSBOW;
|
boolean isMainHand = inventory.getItemInMainHand().getType() == Material.BOW || inventory.getItemInMainHand().getType() == Material.CROSSBOW;
|
||||||
boolean isOffHand = inventory.getItemInOffHand().getType() == Material.BOW || inventory.getItemInMainHand().getType() == Material.CROSSBOW;
|
boolean isOffHand = inventory.getItemInOffHand().getType() == Material.BOW || inventory.getItemInMainHand().getType() == Material.CROSSBOW;
|
||||||
ItemStack heldBow = null;
|
ItemStack heldBow = null;
|
||||||
@@ -71,13 +83,7 @@ public class ShootBow implements Listener {
|
|||||||
if (isMainHand && isOffHand) {
|
if (isMainHand && isOffHand) {
|
||||||
heldBow = inventory.getItemInMainHand();
|
heldBow = inventory.getItemInMainHand();
|
||||||
}
|
}
|
||||||
|
return heldBow;
|
||||||
// player swapped
|
|
||||||
if (heldBow == null) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
updateArrowsShot(heldBow);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void updateArrowsShot(ItemStack bow) {
|
private void updateArrowsShot(ItemStack bow) {
|
||||||
@@ -99,13 +105,18 @@ public class ShootBow implements Listener {
|
|||||||
toolStats.logger.warning(arrowsShot + " does not have valid arrows-shot set! Resting to zero. This should NEVER happen.");
|
toolStats.logger.warning(arrowsShot + " does not have valid arrows-shot set! Resting to zero. This should NEVER happen.");
|
||||||
}
|
}
|
||||||
|
|
||||||
arrowsShot++;
|
container.set(toolStats.arrowsShot, PersistentDataType.INTEGER, arrowsShot + 1);
|
||||||
container.set(toolStats.arrowsShot, PersistentDataType.INTEGER, arrowsShot);
|
|
||||||
|
|
||||||
// do we add the lore based on the config?
|
// do we add the lore based on the config?
|
||||||
if (toolStats.config.getBoolean("enabled.arrows-shot")) {
|
if (toolStats.config.getBoolean("enabled.arrows-shot")) {
|
||||||
String arrowsShotFormatted = toolStats.numberFormat.formatInt(arrowsShot);
|
String oldArrowsFormatted = toolStats.numberFormat.formatInt(arrowsShot);
|
||||||
List<String> newLore = toolStats.itemLore.addItemLore(meta, "{arrows}", arrowsShotFormatted, "arrows-shot");
|
String newArrowsFormatted = toolStats.numberFormat.formatInt(arrowsShot + 1);
|
||||||
|
String oldLine = toolStats.configTools.formatLore("arrows-shot", "{arrows}", oldArrowsFormatted);
|
||||||
|
String newLine = toolStats.configTools.formatLore("arrows-shot", "{arrows}", newArrowsFormatted);
|
||||||
|
if (oldLine == null || newLine == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
List<String> newLore = toolStats.itemLore.updateItemLore(meta, oldLine, newLine);
|
||||||
meta.setLore(newLore);
|
meta.setLore(newLore);
|
||||||
}
|
}
|
||||||
bow.setItemMeta(meta);
|
bow.setItemMeta(meta);
|
||||||
|
|||||||
@@ -18,66 +18,68 @@
|
|||||||
package lol.hyper.toolstats.tools;
|
package lol.hyper.toolstats.tools;
|
||||||
|
|
||||||
import lol.hyper.toolstats.ToolStats;
|
import lol.hyper.toolstats.ToolStats;
|
||||||
import org.bukkit.ChatColor;
|
|
||||||
import org.bukkit.inventory.meta.ItemMeta;
|
import org.bukkit.inventory.meta.ItemMeta;
|
||||||
import org.bukkit.persistence.PersistentDataContainer;
|
import org.bukkit.persistence.PersistentDataContainer;
|
||||||
import org.bukkit.persistence.PersistentDataType;
|
import org.bukkit.persistence.PersistentDataType;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.regex.Pattern;
|
||||||
|
|
||||||
public class ItemLore {
|
public class ItemLore {
|
||||||
|
|
||||||
private final ToolStats toolStats;
|
private final ToolStats toolStats;
|
||||||
|
public static final Pattern COLOR_CODES = Pattern.compile("[&§]([0-9a-fk-or])");
|
||||||
|
public static final Pattern HEX_PATTERN = Pattern.compile("[&§]#([A-Fa-f0-9]{6})");
|
||||||
|
|
||||||
public ItemLore(ToolStats toolStats) {
|
public ItemLore(ToolStats toolStats) {
|
||||||
this.toolStats = toolStats;
|
this.toolStats = toolStats;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Adds/updates lore for an item.
|
* Updates existing lore on an item.
|
||||||
*
|
*
|
||||||
* @param placeholder The placeholder from the config. ex: {kills}
|
* @param itemMeta The item's meta.
|
||||||
* @param placeholderValue The value to replace the placeholder.
|
* @param oldLine The old line to replace.
|
||||||
* @param configLorePath The path to the config message.
|
* @param newLine The new line to replace oldLine.
|
||||||
* @return The item's new lore.
|
* @return The item's new lore.
|
||||||
*/
|
*/
|
||||||
public List<String> addItemLore(ItemMeta itemMeta, String placeholder, String placeholderValue, String configLorePath) {
|
public List<String> updateItemLore(ItemMeta itemMeta, String oldLine, String newLine) {
|
||||||
String configLore = toolStats.configTools.getLoreFromConfig(configLorePath, false);
|
List<String> itemLore;
|
||||||
String configLoreRaw = toolStats.configTools.getLoreFromConfig(configLorePath, true);
|
oldLine = toolStats.configTools.removeColor(oldLine);
|
||||||
|
|
||||||
if (configLore == null || configLoreRaw == null) {
|
|
||||||
toolStats.logger.warning("There is no lore message for messages." + configLorePath + "!");
|
|
||||||
toolStats.logger.warning("Unable to update lore for item.");
|
|
||||||
return itemMeta.getLore();
|
|
||||||
}
|
|
||||||
|
|
||||||
List<String> newLore;
|
|
||||||
// replace the placeholder with the value
|
|
||||||
// ex: {kills} -> a number
|
|
||||||
String newLine = configLoreRaw.replace(placeholder, placeholderValue);
|
|
||||||
|
|
||||||
if (itemMeta.hasLore()) {
|
if (itemMeta.hasLore()) {
|
||||||
newLore = itemMeta.getLore();
|
itemLore = itemMeta.getLore();
|
||||||
// keep track of line index
|
// keep track of line index
|
||||||
// this doesn't mess the lore of existing items
|
// this doesn't mess the lore of existing items
|
||||||
for (int x = 0; x < newLore.size(); x++) {
|
for (int x = 0; x < itemLore.size(); x++) {
|
||||||
// check to see if the line matches the config value
|
// check to see if the line matches the config value
|
||||||
// this means we update this line only!
|
// this means we update this line only!
|
||||||
String line = ChatColor.stripColor(newLore.get(x));
|
String line = toolStats.configTools.removeColor(itemLore.get(x));
|
||||||
if (line.contains(configLore)) {
|
if (line.equals(oldLine)) {
|
||||||
newLore.set(x, newLine);
|
itemLore.set(x, newLine);
|
||||||
return newLore;
|
return itemLore;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// if the item has lore, but we didn't find the line
|
// if the item has lore, but we didn't find the line
|
||||||
newLore.add(newLine);
|
itemLore.add(newLine);
|
||||||
} else {
|
} else {
|
||||||
// if the item has no lore, create a new list and add the line
|
// if the item has no lore, create a new list and add the line
|
||||||
newLore = new ArrayList<>();
|
itemLore = new ArrayList<>();
|
||||||
newLore.add(newLine);
|
itemLore.add(newLine);
|
||||||
}
|
}
|
||||||
return newLore;
|
return itemLore;
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<String> addItemLore(ItemMeta itemMeta, String newLine) {
|
||||||
|
List<String> itemLore;
|
||||||
|
if (itemMeta.hasLore()) {
|
||||||
|
itemLore = itemMeta.getLore();
|
||||||
|
itemLore.add(newLine);
|
||||||
|
} else {
|
||||||
|
itemLore = new ArrayList<>();
|
||||||
|
itemLore.add(newLine);
|
||||||
|
}
|
||||||
|
return itemLore;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -107,8 +109,8 @@ public class ItemLore {
|
|||||||
// set the lore based on the origin
|
// set the lore based on the origin
|
||||||
switch (origin) {
|
switch (origin) {
|
||||||
case 2: {
|
case 2: {
|
||||||
dateCreatedLore = toolStats.configTools.getLoreFromConfig("looted.looted-on", true);
|
dateCreatedLore = toolStats.configTools.formatLore("looted.looted-on", "{date}", formattedDate);
|
||||||
itemOwnerLore = toolStats.configTools.getLoreFromConfig("looted.looted-by", true);
|
itemOwnerLore = toolStats.configTools.formatLore("looted.looted-by", "{player}", playerName);
|
||||||
|
|
||||||
if (dateCreatedLore == null) {
|
if (dateCreatedLore == null) {
|
||||||
toolStats.logger.warning("messages.looted.looted-on is not set in your config!");
|
toolStats.logger.warning("messages.looted.looted-on is not set in your config!");
|
||||||
@@ -123,8 +125,8 @@ public class ItemLore {
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case 3: {
|
case 3: {
|
||||||
dateCreatedLore = toolStats.configTools.getLoreFromConfig("traded.traded-on", true);
|
dateCreatedLore = toolStats.configTools.formatLore("traded.traded-on", "{date}", formattedDate);
|
||||||
itemOwnerLore = toolStats.configTools.getLoreFromConfig("traded.traded-by", true);
|
itemOwnerLore = toolStats.configTools.formatLore("traded.traded-by", "{player}", playerName);
|
||||||
|
|
||||||
if (dateCreatedLore == null) {
|
if (dateCreatedLore == null) {
|
||||||
toolStats.logger.warning("messages.traded.traded-on is not set in your config!");
|
toolStats.logger.warning("messages.traded.traded-on is not set in your config!");
|
||||||
@@ -139,8 +141,8 @@ public class ItemLore {
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case 4: {
|
case 4: {
|
||||||
dateCreatedLore = toolStats.configTools.getLoreFromConfig("looted.found-on", true);
|
dateCreatedLore = toolStats.configTools.formatLore("looted.found-on", "{date}", formattedDate);
|
||||||
itemOwnerLore = toolStats.configTools.getLoreFromConfig("looted.found-by", true);
|
itemOwnerLore = toolStats.configTools.formatLore("looted.found-by", "{player}", playerName);
|
||||||
|
|
||||||
if (dateCreatedLore == null) {
|
if (dateCreatedLore == null) {
|
||||||
toolStats.logger.warning("messages.looted.found-on is not set in your config!");
|
toolStats.logger.warning("messages.looted.found-on is not set in your config!");
|
||||||
@@ -155,8 +157,8 @@ public class ItemLore {
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case 5: {
|
case 5: {
|
||||||
dateCreatedLore = toolStats.configTools.getLoreFromConfig("fished.caught-on", true);
|
dateCreatedLore = toolStats.configTools.formatLore("fished.caught-on", "{date}", formattedDate);
|
||||||
itemOwnerLore = toolStats.configTools.getLoreFromConfig("fished.caught-by", true);
|
itemOwnerLore = toolStats.configTools.formatLore("fished.caught-by", "{player}", playerName);
|
||||||
|
|
||||||
if (dateCreatedLore == null) {
|
if (dateCreatedLore == null) {
|
||||||
toolStats.logger.warning("messages.fished.caught-on is not set in your config!");
|
toolStats.logger.warning("messages.fished.caught-on is not set in your config!");
|
||||||
@@ -171,8 +173,8 @@ public class ItemLore {
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case 6: {
|
case 6: {
|
||||||
dateCreatedLore = toolStats.configTools.getLoreFromConfig("spawned-in.spawned-on", true);
|
dateCreatedLore = toolStats.configTools.formatLore("spawned-in.spawned-on", "{date}", formattedDate);
|
||||||
itemOwnerLore = toolStats.configTools.getLoreFromConfig("spawned-in.spawned-by", true);
|
itemOwnerLore = toolStats.configTools.formatLore("spawned-in.spawned-by", "{player}", playerName);
|
||||||
|
|
||||||
if (dateCreatedLore == null) {
|
if (dateCreatedLore == null) {
|
||||||
toolStats.logger.warning("messages.spawned-in.spawned-on is not set in your config!");
|
toolStats.logger.warning("messages.spawned-in.spawned-on is not set in your config!");
|
||||||
@@ -204,63 +206,4 @@ public class ItemLore {
|
|||||||
newLore.add(itemOwnerLore.replace("{player}", playerName));
|
newLore.add(itemOwnerLore.replace("{player}", playerName));
|
||||||
return newLore;
|
return newLore;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Determine an item's origin based on lore.
|
|
||||||
*
|
|
||||||
* @param itemMeta The item's meta.
|
|
||||||
* @param elytra If they item is an elytra.
|
|
||||||
* @return The new item meta with the new origin tag. Returns null if origin cannot be determined.
|
|
||||||
*/
|
|
||||||
public ItemMeta getOrigin(ItemMeta itemMeta, boolean elytra) {
|
|
||||||
List<String> lore;
|
|
||||||
if (!itemMeta.hasLore()) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
lore = itemMeta.getLore();
|
|
||||||
Integer origin = null;
|
|
||||||
|
|
||||||
String createdBy = toolStats.configTools.getLoreFromConfig("created.created-by", false);
|
|
||||||
String createdOn = toolStats.configTools.getLoreFromConfig("created.created-on", false);
|
|
||||||
String caughtBy = toolStats.configTools.getLoreFromConfig("fished.caught-by", false);
|
|
||||||
String lootedBy = toolStats.configTools.getLoreFromConfig("looted.looted-by", false);
|
|
||||||
String foundBy = toolStats.configTools.getLoreFromConfig("looted.found-by", false);
|
|
||||||
String tradedBy = toolStats.configTools.getLoreFromConfig("traded.traded-by", false);
|
|
||||||
|
|
||||||
for (String line : lore) {
|
|
||||||
// this is the worst code I have ever written
|
|
||||||
if (createdBy != null && line.contains(createdBy)) {
|
|
||||||
origin = 0;
|
|
||||||
}
|
|
||||||
if (createdOn != null && line.contains(createdOn)) {
|
|
||||||
origin = 0;
|
|
||||||
}
|
|
||||||
if (caughtBy != null && line.contains(caughtBy)) {
|
|
||||||
origin = 5;
|
|
||||||
}
|
|
||||||
if (lootedBy != null && line.contains(lootedBy)) {
|
|
||||||
origin = 2;
|
|
||||||
}
|
|
||||||
// because the config changed, "found-by" was being used for ALL looted items
|
|
||||||
// this includes elytras, so we have to check for this mistake
|
|
||||||
if (foundBy != null && line.contains(foundBy)) {
|
|
||||||
if (elytra) {
|
|
||||||
origin = 4;
|
|
||||||
} else {
|
|
||||||
origin = 5;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (tradedBy != null && line.contains(tradedBy)) {
|
|
||||||
origin = 3;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (origin == null) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
PersistentDataContainer container = itemMeta.getPersistentDataContainer();
|
|
||||||
container.set(toolStats.originType, PersistentDataType.INTEGER, origin);
|
|
||||||
return itemMeta;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -18,17 +18,15 @@
|
|||||||
package lol.hyper.toolstats.tools.config;
|
package lol.hyper.toolstats.tools.config;
|
||||||
|
|
||||||
import lol.hyper.toolstats.ToolStats;
|
import lol.hyper.toolstats.ToolStats;
|
||||||
|
import lol.hyper.toolstats.tools.ItemLore;
|
||||||
import org.bukkit.ChatColor;
|
import org.bukkit.ChatColor;
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
|
|
||||||
import java.util.regex.Matcher;
|
import java.util.regex.Matcher;
|
||||||
import java.util.regex.Pattern;
|
|
||||||
|
|
||||||
public class ConfigTools {
|
public class ConfigTools {
|
||||||
|
|
||||||
private final ToolStats toolStats;
|
private final ToolStats toolStats;
|
||||||
private final Pattern COLOR_CODES = Pattern.compile("&([0-9a-fk-or])");
|
|
||||||
private final Pattern HEX_PATTERN = Pattern.compile("&#([A-Fa-f0-9]{6})");
|
|
||||||
|
|
||||||
public ConfigTools(ToolStats toolStats) {
|
public ConfigTools(ToolStats toolStats) {
|
||||||
this.toolStats = toolStats;
|
this.toolStats = toolStats;
|
||||||
@@ -109,72 +107,46 @@ public class ConfigTools {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets the lore message from the config.
|
* Format a string to be ready for lore usage.
|
||||||
*
|
*
|
||||||
* @param configName The config name, "messages." is already in front.
|
* @param configName The message to use.
|
||||||
* @param raw If you want the raw message. False if you want no placeholders.
|
* @param placeHolder The placeholder text in the message.
|
||||||
* @return The lore message.
|
* @param value The value to set the placeholder.
|
||||||
|
* @return Formatted string, null if the configName doesn't exist.
|
||||||
*/
|
*/
|
||||||
public String getLoreFromConfig(String configName, boolean raw) {
|
public String formatLore(String configName, String placeHolder, Object value) {
|
||||||
String lore = toolStats.config.getString("messages." + configName);
|
String lore = toolStats.config.getString("messages." + configName);
|
||||||
if (lore == null) {
|
if (lore == null) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
if (raw) {
|
|
||||||
Matcher hexMatcher = HEX_PATTERN.matcher(lore);
|
|
||||||
while (hexMatcher.find()) {
|
|
||||||
String hexCode = hexMatcher.group(1);
|
|
||||||
lore = lore.replaceAll(hexMatcher.group(), net.md_5.bungee.api.ChatColor.of("#" + hexCode).toString());
|
|
||||||
}
|
|
||||||
|
|
||||||
Matcher colorMatcher = COLOR_CODES.matcher(lore);
|
// set the placeholder to the value
|
||||||
while (colorMatcher.find()) {
|
lore = lore.replace(placeHolder, String.valueOf(value));
|
||||||
String colorCode = colorMatcher.group(1);
|
|
||||||
lore = lore.replaceAll("&" + colorCode, ChatColor.getByChar(colorCode).toString());
|
|
||||||
}
|
|
||||||
|
|
||||||
return ChatColor.translateAlternateColorCodes('§', lore);
|
Matcher hexMatcher = ItemLore.HEX_PATTERN.matcher(lore);
|
||||||
} else {
|
while (hexMatcher.find()) {
|
||||||
// remove all color codes
|
String hexCode = hexMatcher.group(1);
|
||||||
// this is used to compare the current lore on the item
|
lore = lore.replaceAll(hexMatcher.group(), net.md_5.bungee.api.ChatColor.of("#" + hexCode).toString());
|
||||||
// Example: [§7Arrows shot: §8] is on the lore
|
|
||||||
// this will return [Arrows shot: ] so we can match it
|
|
||||||
lore = COLOR_CODES.matcher(lore).replaceAll("");
|
|
||||||
lore = HEX_PATTERN.matcher(lore).replaceAll("");
|
|
||||||
if (lore.contains("{player}")) {
|
|
||||||
lore = lore.replace("{player}", "");
|
|
||||||
}
|
|
||||||
if (lore.contains("{date}")) {
|
|
||||||
lore = lore.replace("{date}", "");
|
|
||||||
}
|
|
||||||
if (lore.contains("{name}")) {
|
|
||||||
lore = lore.replace("{name}", "");
|
|
||||||
}
|
|
||||||
if (lore.contains("{kills}")) {
|
|
||||||
lore = lore.replace("{kills}", "");
|
|
||||||
}
|
|
||||||
if (lore.contains("{blocks}")) {
|
|
||||||
lore = lore.replace("{blocks}", "");
|
|
||||||
}
|
|
||||||
if (lore.contains("{sheep}")) {
|
|
||||||
lore = lore.replace("{sheep}", "");
|
|
||||||
}
|
|
||||||
if (lore.contains("{damage}")) {
|
|
||||||
lore = lore.replace("{damage}", "");
|
|
||||||
}
|
|
||||||
if (lore.contains("{fish}")) {
|
|
||||||
lore = lore.replace("{fish}", "");
|
|
||||||
}
|
|
||||||
if (lore.contains("{crops}")) {
|
|
||||||
lore = lore.replace("{crops}", "");
|
|
||||||
}
|
|
||||||
if (lore.contains("{arrows}")) {
|
|
||||||
lore = lore.replace("{arrows}", "");
|
|
||||||
}
|
|
||||||
if (lore.contains("{time}")) {
|
|
||||||
lore = lore.replace("{time}", "");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return lore;
|
|
||||||
|
Matcher colorMatcher = ItemLore.COLOR_CODES.matcher(lore);
|
||||||
|
while (colorMatcher.find()) {
|
||||||
|
String colorCode = colorMatcher.group(1);
|
||||||
|
lore = lore.replaceAll("&" + colorCode, ChatColor.getByChar(colorCode).toString());
|
||||||
|
}
|
||||||
|
|
||||||
|
return ChatColor.translateAlternateColorCodes('§', lore);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Remove all color codes from a message.
|
||||||
|
*
|
||||||
|
* @param message The message.
|
||||||
|
* @return The message without color codes.
|
||||||
|
*/
|
||||||
|
public String removeColor(String message) {
|
||||||
|
message = ItemLore.COLOR_CODES.matcher(message).replaceAll("");
|
||||||
|
message = ItemLore.HEX_PATTERN.matcher(message).replaceAll("");
|
||||||
|
return message;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -21,9 +21,6 @@ import lol.hyper.toolstats.ToolStats;
|
|||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.Collections;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
public class Version7 {
|
public class Version7 {
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user