use of net.md_5.bungee.api.chat.hover.content.Text in project solinia3-core by mixxit.
the class CommandListItems method onCommand.
@Override
public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
if (!(sender instanceof Player) && !(sender instanceof CommandSender))
return false;
if (!sender.isOp() && !sender.hasPermission("solinia.listitems")) {
sender.sendMessage("You do not have permission to access this command");
return false;
}
if (args.length == 0) {
sender.sendMessage("You must provide some text to filter the item name by");
return true;
}
if (args.length > 0 && args[0].equals(".criteria")) {
try {
ChatUtils.sendFilterByCriteria(StateManager.getInstance().getConfigurationManager().getItems(), sender, args, SoliniaItem.class);
return true;
} catch (CoreStateInitException e) {
// TODO Auto-generated catch block
sender.sendMessage(e.getMessage());
e.printStackTrace();
}
}
// Filter for name
int found = 0;
try {
for (ISoliniaItem item : StateManager.getInstance().getConfigurationManager().getItems()) {
found++;
if (item.getDisplayname().toUpperCase().contains(StringUtils.join(args, " ").toUpperCase())) {
TextComponent textComponent = new TextComponent();
String title = "" + ChatColor.GOLD + item.getId() + ChatColor.RESET + " - " + item.getDisplayname();
textComponent.setText(title);
textComponent.setHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_ITEM, new ComponentBuilder(ItemStackUtils.ConvertItemStackToJsonRegular(item.asItemStack())).create()));
String transfertext = "/spawnitem " + item.getId() + " 1";
textComponent.setClickEvent(new ClickEvent(ClickEvent.Action.SUGGEST_COMMAND, transfertext));
sender.spigot().sendMessage(textComponent);
}
}
if (found == 0) {
sender.sendMessage("Item could not be located by search string");
}
} catch (CoreStateInitException e) {
// TODO Auto-generated catch block
sender.sendMessage(e.getMessage());
e.printStackTrace();
}
return true;
}
use of net.md_5.bungee.api.chat.hover.content.Text in project solinia3-core by mixxit.
the class ChatUtils method decorateTextComponentsWithHovers.
public static TextComponent decorateTextComponentsWithHovers(TextComponent tc, ItemStack itemStack, boolean showItemLinks) {
if (itemStack != null && showItemLinks) {
try {
if (ItemStackUtils.IsSoliniaItem(itemStack)) {
int extraIndex = -1;
for (int i = 0; i < tc.getExtra().size(); i++) if (tc.getExtra().get(i) instanceof TextComponent && ((TextComponent) tc.getExtra().get(i)).getText().contains("itemlink"))
extraIndex = i;
if (extraIndex > -1) {
String text = ((TextComponent) tc.getExtra().get(extraIndex)).getText();
((TextComponent) tc.getExtra().get(extraIndex)).setText(text.replace("itemlink", ""));
}
}
TextComponent itemLinkComponent = new TextComponent();
String title = " <" + itemStack.getItemMeta().getDisplayName() + ">";
itemLinkComponent.setText(title);
itemLinkComponent.setHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_ITEM, new ComponentBuilder(ItemStackUtils.ConvertItemStackToJsonRegular(itemStack)).create()));
tc.addExtra(itemLinkComponent);
} catch (Exception e) {
System.out.println("Could not create itemlink for message: " + tc.getText() + " with itemStack");
}
}
return tc;
}
use of net.md_5.bungee.api.chat.hover.content.Text in project solinia3-core by mixxit.
the class PlayerUtils method GetCharacterText.
public static Tuple<String, TextComponent> GetCharacterText(ISoliniaPlayer solplayer, String optionalhidden, String optionalplayername, String optionalworldname, String optionalzone, boolean showPersonality) {
int lvl = (int) Math.floor(solplayer.getActualLevel());
int mentorLevel = (int) Math.floor(solplayer.getMentorLevel());
String racename = "UNKNOWN";
String classname = "UNKNOWN";
String godname = "UNKNOWN /setgod <name>";
String zone = "UNKNOWN";
if (optionalzone != null && !zone.equals(""))
zone = optionalzone;
String hidden = "";
if (optionalhidden != null && !optionalhidden.equals(""))
hidden = optionalhidden;
if (solplayer.getRace() != null)
racename = solplayer.getRace().getShortName();
if (solplayer.getClassObj() != null)
classname = solplayer.getClassObj().getShortName();
String message = hidden + " " + optionalplayername + " " + ChatColor.YELLOW + solplayer.getFullName().toUpperCase() + ChatColor.RESET + " [" + optionalworldname + "] - LVL " + ChatColor.AQUA + mentorLevel + "/" + lvl + ChatColor.RESET + " " + racename + " " + ChatColor.AQUA + classname + ChatColor.RESET + " Zone: " + ChatColor.AQUA + zone + ChatColor.RESET;
TextComponent tc = new TextComponent(TextComponent.fromLegacyText(message));
String worship = "I worship: " + godname + System.lineSeparator();
String ideal = "Ideal: I have no ideal" + System.lineSeparator();
String trait1 = "Trait: I have no primary trait" + System.lineSeparator();
String trait2 = "Trait: I have no secondary trait" + System.lineSeparator();
String bond = "Bond: I have no bond" + System.lineSeparator();
String flaw = "Flaw: I have no flaw" + System.lineSeparator();
String oath = "Oath: I have no oath" + System.lineSeparator();
if (solplayer.getGodId() > 0)
worship = "I worship: " + solplayer.getGod().getName() + System.lineSeparator();
String ageinfo = "Age: ???";
if (solplayer.getBirthday() != null) {
int age = 0;
String text = "2020-01-01 00:00:00.00";
LocalDateTime fromDate = Timestamp.valueOf(text).toLocalDateTime();
LocalDateTime toDate = solplayer.getBirthday().toLocalDateTime();
int characterbirthyear = CommandToday.getUTYear(fromDate, toDate);
int currentutyear = CommandToday.getCurrentUTYear();
ageinfo = "Age: " + (currentutyear - characterbirthyear);
}
String backstory = "My back story is a mystery" + System.lineSeparator();
if (solplayer.getBackStory() != null && !solplayer.getBackStory().equals(""))
backstory = "Backstory:" + solplayer.getBackStory() + System.lineSeparator();
if (solplayer.getPersonality().getIdealId() > 0)
ideal = "Ideal:" + solplayer.getPersonality().getIdeal().description + System.lineSeparator();
if (solplayer.getPersonality().getFirstTraitId() > 0)
trait1 = "Trait:" + solplayer.getPersonality().getFirstTrait().description + System.lineSeparator();
if (solplayer.getPersonality().getSecondTraitId() > 0)
trait2 = "Trait:" + solplayer.getPersonality().getSecondTrait().description + System.lineSeparator();
if (solplayer.getPersonality().getBondId() > 0)
bond = "Bond:" + solplayer.getPersonality().getBond().description + System.lineSeparator();
if (solplayer.getPersonality().getFlawId() > 0)
flaw = "Flaw:" + solplayer.getPersonality().getFlaw().description + System.lineSeparator();
String custom = "";
for (String customTrait : solplayer.getPersonality().getCustomPersonalityTraits()) {
custom += "Custom:" + customTrait + System.lineSeparator();
}
if (solplayer.getClassObj() != null && solplayer.getClassObj().getOaths().size() > 0 && solplayer.getOathId() != 0) {
oath = "Oath: " + solplayer.getOath().oathname + System.lineSeparator();
for (String tenet : solplayer.getOath().tenets) {
oath += " " + tenet;
}
}
String inspiration = "Inspiration Points: " + solplayer.getInspiration() + System.lineSeparator();
String details = ChatColor.GOLD + solplayer.getFullName().toUpperCase() + " Level " + lvl + " " + racename + " " + classname + ChatColor.RESET + System.lineSeparator() + ageinfo + " " + backstory + inspiration;
if (showPersonality) {
details += worship + ideal + trait1 + trait2 + bond + flaw + custom + oath;
} else {
details += "To see more information:" + System.lineSeparator() + "/personality player " + solplayer.getId() + " [or click]";
}
tc.setClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/personality player " + solplayer.getId()));
tc.setHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, new ComponentBuilder(details).create()));
return new Tuple<String, TextComponent>(message, tc);
}
use of net.md_5.bungee.api.chat.hover.content.Text in project LandLord by SpatiumPrinceps.
the class AbstractManage method create.
@Override
protected void create() {
List<String> regenerateDesc = lm.getStringList("Commands.Manage.Regenerate.description");
List<String> greetDesc = lm.getStringList("Commands.Manage.SetGreet.description");
List<String> farewellDesc = lm.getStringList("Commands.Manage.SetFarewell.description");
int position = 0;
if (regions.size() < 1)
return;
OwnedLand land = regions.get(0);
for (LLFlag iFlag : land.getFlags()) {
// For every IFlag of the land we wanna display an icon in the gui IF the flag is enabled for change
String flagName = iFlag.getWGFlag().getName();
String title = lm.getRawString("Commands.Manage.Allow" + flagName.substring(0, 1).toUpperCase() + flagName.substring(1) + ".title");
List<String> description = lm.getStringList("Commands.Manage.Allow" + flagName.substring(0, 1).toUpperCase() + flagName.substring(1) + ".description");
if (plugin.getConfig().getBoolean("Manage." + flagName + ".enable")) {
int finalPosition = position;
this.setIcon(position, new Icon(createItem(iFlag.getMaterial(), 1, title, formatList(description, iFlag.getStatus()))).addClickAction((p, icon) -> {
for (OwnedLand region : regions) {
for (LLFlag llFlag : region.getFlags()) {
if (llFlag.getWGFlag().equals(iFlag.getWGFlag())) {
llFlag.toggle();
}
}
}
updateLore(finalPosition, formatList(description, iFlag.getStatus()));
}));
position++;
}
}
// Reminder: Regenerate is not implemented in Manageall, cos it might cos some trouble. Calculating costs might be a bit tedious
if (plugin.getConfig().getBoolean("Manage.regenerate.enable") && regions.size() == 1) {
double cost = plugin.getConfig().getDouble("ResetCost");
this.setIcon(position, new Icon(createItem(Material.BARRIER, 1, lm.getRawString("Commands.Manage.Regenerate.title"), formatList(regenerateDesc, (Options.isVaultEnabled() ? plugin.getVaultHandler().format(cost) : "-1")))).addClickAction((p, ic) -> {
if (land.isOwner(player.getUniqueId())) {
ConfirmationGUI confi = new ConfirmationGUI(p, lm.getRawString("Commands.Manage.Regenerate.confirmation").replace("%cost%", (Options.isVaultEnabled() ? plugin.getVaultHandler().format(cost) : "-1")), (p1, ic1) -> {
boolean flag = false;
if (Options.isVaultEnabled())
if (plugin.getVaultHandler().hasBalance(player.getUniqueId(), cost)) {
plugin.getVaultHandler().take(player.getUniqueId(), cost);
flag = true;
} else
player.sendMessage(lm.getString("Commands.Manage.Regenerate.notEnoughMoney").replace("%cost%", plugin.getVaultHandler().format(cost)).replace("%name%", land.getName()));
else
flag = true;
if (flag) {
if (land.isOwner(player.getUniqueId())) {
player.getWorld().regenerateChunk(land.getChunk().getX(), land.getChunk().getZ());
player.sendMessage(lm.getString("Commands.Manage.Regenerate.success").replace("%land%", land.getName()));
display();
}
}
}, (p2, ic2) -> {
player.sendMessage(lm.getString("Commands.Manage.Regenerate.abort").replace("%land%", land.getName()));
display();
}, this);
confi.setConfirm(lm.getRawString("Confirmation.accept"));
confi.setDecline(lm.getRawString("Confirmation.decline"));
confi.display();
}
}));
position++;
}
// Set greet icon
if (plugin.getConfig().getBoolean("Manage.setgreet.enable")) {
String currentGreet = land.getWGLand().getFlag(DefaultFlag.GREET_MESSAGE);
this.setIcon(position, new Icon(createItem(Material.valueOf(plugin.getConfig().getString("Manage.setgreet.item")), 1, lm.getRawString("Commands.Manage.SetGreet.title"), formatList(greetDesc, currentGreet))).addClickAction(((p, ic) -> {
p.closeInventory();
ComponentBuilder builder = new ComponentBuilder(lm.getString("Commands.Manage.SetGreet.clickMsg"));
if (regions.size() > 1)
builder.event(new ClickEvent(ClickEvent.Action.SUGGEST_COMMAND, "/land manage setgreetall "));
else
builder.event(new ClickEvent(ClickEvent.Action.SUGGEST_COMMAND, "/land manage setgreet "));
p.spigot().sendMessage(builder.create());
})));
position++;
}
// TODO add functionality for manageall
if (plugin.getConfig().getBoolean("Manage.mob-spawning.enable")) {
String title = lm.getRawString("Commands.Manage.AllowMob-spawning.title");
this.setIcon(position, new Icon(createItem(Material.valueOf(plugin.getConfig().getString("Manage.mob-spawning.item")), 1, title, lm.getStringList("Commands.Manage.AllowMob-spawning.description"))).addClickAction((p, icon) -> {
// Open a new gui with spawneggs where you can manage the spawns by clicking on them
List<Icon> icons = new ArrayList<>();
EntityType[] types = EntityType.values();
List<String> lore = lm.getStringList("Commands.Manage.AllowMob-spawning.toggleItem.description");
MultiPagedGUI gui = new MultiPagedGUI(p, 4, title, icons, this) {
};
for (EntityType t : types) {
if (t.isAlive() && t.isSpawnable()) {
if (!toggleMobs.contains(t.name()))
continue;
ItemStack spawnEgg = new ItemStack(Material.MONSTER_EGG);
SpawnEggMeta meta = (SpawnEggMeta) spawnEgg.getItemMeta();
meta.setSpawnedType(t);
meta.setDisplayName(lm.getRawString("Commands.Manage.AllowMob-spawning.toggleItem.title").replace("%mob%", t.name()));
Set<EntityType> flag = land.getWGLand().getFlag(DefaultFlag.DENY_SPAWN);
String state;
if (flag != null)
state = (flag.contains(t) ? "DENY" : "ALLOW");
else
state = "ALLOW";
List<String> formattedLore = new ArrayList<>();
for (String s : lore) {
formattedLore.add(s.replace("%mob%", t.name()).replace("%value%", state));
}
meta.setLore(formattedLore);
spawnEgg.setItemMeta(meta);
Icon ic = new Icon(spawnEgg).addClickAction((clickingPlayer, ic3) -> {
for (OwnedLand region : regions) {
Set<EntityType> localFlag = region.getWGLand().getFlag(DefaultFlag.DENY_SPAWN);
// Toggle spawning of specific mob
if (localFlag != null) {
if (localFlag.contains(t))
localFlag.remove(t);
else
localFlag.add(t);
} else {
Set<EntityType> set = new HashSet<>();
set.add(t);
region.getWGLand().setFlag(DefaultFlag.DENY_SPAWN, set);
}
}
// update icon text
String iconState;
if (flag != null)
iconState = (flag.contains(t) ? "DENY" : "ALLOW");
else
iconState = "ALLOW";
List<String> newLore = new ArrayList<>();
for (String s : lore) {
newLore.add(s.replace("%mob%", t.name()).replace("%value%", iconState));
}
// System.out.println(newLore + " :" + finalIconPos);
ic3.setLore(newLore);
gui.refresh();
});
icons.add(ic);
}
}
gui.display();
}));
position++;
}
// set farewell icon
if (plugin.getConfig().getBoolean("Manage.setfarewell.enable")) {
String currentFarewell = land.getWGLand().getFlag(DefaultFlag.FAREWELL_MESSAGE);
this.setIcon(position, new Icon(createItem(Material.valueOf(plugin.getConfig().getString("Manage.setfarewell.item")), 1, lm.getRawString("Commands.Manage.SetFarewell.title"), formatList(farewellDesc, currentFarewell))).addClickAction(((p, icon) -> {
p.closeInventory();
ComponentBuilder builder = new ComponentBuilder(lm.getString("Commands.Manage.SetFarewell.clickMsg"));
if (regions.size() > 1)
builder.event(new ClickEvent(ClickEvent.Action.SUGGEST_COMMAND, "/land manage setfarewellall "));
else
builder.event(new ClickEvent(ClickEvent.Action.SUGGEST_COMMAND, "/land manage setfarewell "));
p.spigot().sendMessage(builder.create());
})));
position++;
}
// set friends icon
if (plugin.getConfig().getBoolean("Manage.friends.enable")) {
ItemStack skull = createSkull(player.getName(), lm.getRawString("Commands.Manage.ManageFriends.title"), lm.getStringList("Commands.Manage.ManageFriends.description"));
Set<UUID> friends = land.getWGLand().getMembers().getUniqueIds();
MultiPagedGUI friendsGui = new MultiPagedGUI(player, (int) Math.ceil((double) friends.size() / 9.0), lm.getRawString("Commands.Manage.ManageFriends.title"), new ArrayList<>(), this) {
};
friends.forEach(id -> friendsGui.addIcon(new Icon(createSkull(Bukkit.getOfflinePlayer(id).getName(), Bukkit.getOfflinePlayer(id).getName(), formatFriendsSegment(id))).addClickAction((player, icon) -> {
ConfirmationGUI confirmationGUI = new ConfirmationGUI(player, lm.getRawString("Commands.Manage.ManageFriends.unfriend").replace("%player%", Bukkit.getOfflinePlayer(id).getName()), (p, ic1) -> {
friendsGui.removeIcon(friendsGui.filter(Bukkit.getOfflinePlayer(id).getName()).get(0));
if (regions.size() > 1)
Bukkit.dispatchCommand(player, "land unfriendall " + Bukkit.getOfflinePlayer(id).getName());
else
Bukkit.dispatchCommand(player, "land unfriend " + Bukkit.getOfflinePlayer(id).getName());
player.closeInventory();
friendsGui.display();
}, (p, ic2) -> {
player.closeInventory();
friendsGui.display();
}, friendsGui);
confirmationGUI.setConfirm(lm.getRawString("Confirmation.accept"));
confirmationGUI.setDecline(lm.getRawString("Confirmation.decline"));
confirmationGUI.display();
})));
this.setIcon(position, new Icon(skull).setName(lm.getRawString("Commands.Manage.ManageFriends.title")).addClickAction((p, ic) -> friendsGui.display()));
position++;
}
if (plugin.getConfig().getBoolean("Manage.unclaim.enable")) {
this.setIcon(position, new Icon(createItem(Material.valueOf(plugin.getConfig().getString("Manage.unclaim.item")), 1, lm.getRawString("Commands.Manage.Unclaim.title"), lm.getStringList("Commands.Manage.Unclaim.description"))).addClickAction(((player1, icon) -> {
ConfirmationGUI gui = new ConfirmationGUI(player1, lm.getRawString("Commands.Manage.Unclaim.confirmationTitle").replace("%land%", land.getName()), (p, ic2) -> {
if (regions.size() > 1)
Bukkit.dispatchCommand(p, "ll unclaimall");
else
Bukkit.dispatchCommand(p, "ll unclaim " + land.getName());
p.closeInventory();
}, (p, ic) -> {
p.closeInventory();
display();
}, this);
gui.setConfirm(lm.getRawString("Confirmation.accept"));
gui.setDecline(lm.getRawString("Confirmation.decline"));
gui.display();
})));
position++;
}
}
use of net.md_5.bungee.api.chat.hover.content.Text in project EliteMobs by MagmaGuy.
the class TeleportsPage method teleportsPage.
protected static TextComponent[] teleportsPage() {
TextComponent configTextComponent = new TextComponent();
// Fills the non-dungeon lines
int textLineCounter = 0;
for (String string : PlayerStatusMenuConfig.getTeleportTextLines()) {
if (string == null || string.equals("null"))
continue;
TextComponent line = new TextComponent(string + "\n");
if (PlayerStatusMenuConfig.getTeleportHoverLines()[textLineCounter] != null && !PlayerStatusMenuConfig.getTeleportHoverLines()[textLineCounter].isEmpty())
PlayerStatusScreen.setHoverText(line, PlayerStatusMenuConfig.getTeleportHoverLines()[textLineCounter]);
if (PlayerStatusMenuConfig.getTeleportCommandLines()[textLineCounter] != null && !PlayerStatusMenuConfig.getTeleportCommandLines()[textLineCounter].isEmpty())
line.setClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, PlayerStatusMenuConfig.getTeleportCommandLines()[textLineCounter]));
configTextComponent.addExtra(line);
textLineCounter++;
}
// Fills the minidungeon components
int counter = 0;
ArrayList<TextComponent> textComponents = new ArrayList<>();
for (Minidungeon minidungeon : Minidungeon.getMinidungeons().values()) {
if (!minidungeon.isInstalled())
continue;
TextComponent message = new TextComponent(PlayerStatusScreen.convertLightColorsToBlack(minidungeon.getDungeonPackagerConfigFields().getName() + "\n"));
String hoverMessage = ChatColorConverter.convert(PlayerStatusMenuConfig.getOnTeleportHover() + "\n" + minidungeon.getDungeonPackagerConfigFields().getPlayerInfo().replace("$bossCount", minidungeon.getRegionalBossCount() + "").replace("$lowestTier", minidungeon.getLowestTier() + "").replace("$highestTier", minidungeon.getHighestTier() + ""));
message.setHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, new ComponentBuilder(hoverMessage).create()));
message.setClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/elitemobs dungeontp " + minidungeon.getDungeonPackagerConfigFields().getFilename()));
textComponents.add(message);
counter++;
}
if (counter == 0) {
TextComponent[] textComponent = new TextComponent[1];
textComponent[0] = configTextComponent;
return textComponent;
} else {
TextComponent[] textComponent = new TextComponent[(int) Math.floor(counter / 9D) + 1];
int internalCounter = 0;
textComponent[0] = configTextComponent;
for (TextComponent text : textComponents) {
int currentPage = (int) Math.floor(internalCounter / 9D);
if (textComponent[currentPage] == null)
textComponent[currentPage] = new TextComponent();
textComponent[currentPage].addExtra(text);
internalCounter++;
}
return textComponent;
}
}
Aggregations