/** * Appends a text element to the component. The text will inherit this * component's formatting * * @param text the text to append */ public void addExtra(String text) { addExtra( new TextComponent( text ) ); }
BaseComponent(BaseComponent old) { copyFormatting( old, FormatRetention.ALL, true ); if ( old.getExtra() != null ) { for ( BaseComponent extra : old.getExtra() ) { addExtra( extra.duplicate() ); } } }
/** * Appends a text element to the component. The text will inherit this * component's formatting * * @param text the text to append */ public void addExtra(String text) { addExtra( new TextComponent( text ) ); }
@Override public BaseComponent permission(String permission, int value) { ChatColor valueColor; if (value > 0) { valueColor = ChatColor.GREEN; } else if (value < 0) { valueColor = ChatColor.RED; } else { valueColor = ChatColor.GRAY; } BaseComponent ret = new TextComponent(""); BaseComponent perm = new TextComponent(permission); perm.setColor(valueColor); ret.addExtra(perm); ret.addExtra(EQUALS_SIGN); ret.addExtra(String.valueOf(value)); return ret; }
@Override public BaseComponent combined(Object... elements) { if (elements.length == 0) { return new TextComponent(""); } else { BaseComponent base = componentFrom(elements[0]); for (int i = 1; i < elements.length; ++i) { base.addExtra(componentFrom(elements[i])); } return base; } }
@Override public BaseComponent subject(Map.Entry<String, String> subject) { String name; try { name = pex.getManager().getSubjects(subject.getKey()).persistentData().getData(subject.getValue(), null).get().getOptions(PermissionsEx.GLOBAL_CONTEXT).get("name"); } catch (ExecutionException | InterruptedException e) { throw new RuntimeException(e); } BaseComponent nameText; if (name != null) { nameText = new TextComponent(""); final BaseComponent child = new TextComponent(subject.getValue()); child.setColor(ChatColor.GRAY); nameText.addExtra(child); nameText.addExtra("/"); nameText.addExtra(name); } else { nameText = new TextComponent(subject.getValue()); } // <bold>{type}>/bold>:{identifier}/{name} (on click: /pex {type} {identifier} BaseComponent ret = new TextComponent(""); BaseComponent typeComponent = new TextComponent(subject.getKey()); typeComponent.setBold(true); ret.addExtra(typeComponent); ret.addExtra(" "); ret.addExtra(nameText); ret.setHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, new BaseComponent[]{tr(t("Click to view more info"))})); ret.setClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/pex " + subject.getKey() + " " + subject.getValue() + " info")); return ret; }
BaseComponent(BaseComponent old) { setColor( old.getColorRaw() ); setBold( old.isBoldRaw() ); setItalic( old.isItalicRaw() ); setUnderlined( old.isUnderlinedRaw() ); setStrikethrough( old.isStrikethroughRaw() ); setObfuscated( old.isObfuscatedRaw() ); setInsertion( old.getInsertion() ); setClickEvent( old.getClickEvent() ); setHoverEvent( old.getHoverEvent() ); if ( old.getExtra() != null ) { for ( BaseComponent component : old.getExtra() ) { addExtra( component.duplicate() ); } } }