use of net.minecraft.util.text.ITextComponent in project minecolonies by Minecolonies.
the class ListColoniesCommand method executeShared.
private void executeShared(@NotNull final MinecraftServer server, @NotNull final ICommandSender sender, @Nullable final Integer pageProvided, @Nullable final Integer abandonedSinceTimeInHoursProvided) throws CommandException {
int page;
if (null != pageProvided) {
page = pageProvided.intValue();
} else {
page = 1;
}
int abandonedSinceTimeInHours;
if (null != abandonedSinceTimeInHoursProvided) {
abandonedSinceTimeInHours = abandonedSinceTimeInHoursProvided.intValue();
} else {
abandonedSinceTimeInHours = 0;
}
final List<Colony> colonies;
if (abandonedSinceTimeInHours > 0) {
colonies = ColonyManager.getColoniesAbandonedSince(abandonedSinceTimeInHours);
} else {
colonies = ColonyManager.getColonies();
}
final int colonyCount = colonies.size();
// check to see if we have to add one page to show the half page
final int halfPage = (colonyCount % COLONIES_ON_PAGE == 0) ? 0 : 1;
final int pageCount = ((colonyCount) / COLONIES_ON_PAGE) + halfPage;
if (page < 1 || page > pageCount) {
page = 1;
}
final int pageStartIndex = COLONIES_ON_PAGE * (page - 1);
final int pageStopIndex = Math.min(COLONIES_ON_PAGE * page, colonyCount);
final int prevPage = Math.max(0, page - 1);
final int nextPage = Math.min(page + 1, (colonyCount / COLONIES_ON_PAGE) + halfPage);
final List<Colony> coloniesPage;
if (pageStartIndex < 0 || pageStartIndex >= colonyCount) {
coloniesPage = new ArrayList<>();
} else {
coloniesPage = colonies.subList(pageStartIndex, pageStopIndex);
}
final ITextComponent headerLine = new TextComponentString(PAGE_TOP_LEFT + page + PAGE_TOP_MIDDLE + pageCount + PAGE_TOP_RIGHT);
sender.sendMessage(headerLine);
for (final Colony colony : coloniesPage) {
sender.sendMessage(new TextComponentString(String.format(ID_AND_NAME_TEXT, colony.getID(), colony.getName())).setStyle(new Style().setClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, String.format(COMMAND_COLONY_INFO, colony.getID())))));
final BlockPos center = colony.getCenter();
final ITextComponent teleport = new TextComponentString(COORDINATES_TEXT + String.format(COORDINATES_XYZ, center.getX(), center.getY(), center.getZ()));
if (isPlayerOpped(sender)) {
teleport.setStyle(new Style().setBold(true).setColor(TextFormatting.GOLD).setClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, TELEPORT_COMMAND + colony.getID())));
}
sender.sendMessage(teleport);
}
final ITextComponent prevButton = new TextComponentString(PREV_PAGE).setStyle(new Style().setBold(true).setColor(TextFormatting.GOLD).setClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, LIST_COMMAND_SUGGESTED + prevPage)));
final ITextComponent nextButton = new TextComponentString(NEXT_PAGE).setStyle(new Style().setBold(true).setColor(TextFormatting.GOLD).setClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, LIST_COMMAND_SUGGESTED + nextPage)));
final ITextComponent beginLine = new TextComponentString(PAGE_LINE);
final ITextComponent endLine = new TextComponentString(PAGE_LINE);
sender.sendMessage(beginLine.appendSibling(prevButton).appendSibling(new TextComponentString(PAGE_LINE_DIVIDER)).appendSibling(nextButton).appendSibling(endLine));
}
use of net.minecraft.util.text.ITextComponent in project minecolonies by Minecolonies.
the class ListCitizensCommand method executeShared.
private void executeShared(@NotNull final MinecraftServer server, @NotNull final ICommandSender sender, final Colony colony, final Integer pageProvided) throws CommandException {
int page;
if (null != pageProvided) {
page = pageProvided.intValue();
} else {
page = 1;
}
if (sender instanceof EntityPlayer) {
final EntityPlayer player = (EntityPlayer) sender;
if ((null != colony) && !canPlayerUseCommand(player, LISTCITIZENS, colony.getID())) {
player.sendMessage(new TextComponentString("Not happenin bro!!, You are not permitted to do that!"));
return;
}
}
final List<CitizenData> citizens = colony.getCitizenManager().getCitizens();
final int citizenCount = citizens.size();
// check to see if we have to add one page to show the half page
final int halfPage = (citizenCount % CITIZENS_ON_PAGE == 0) ? 0 : 1;
final int pageCount = ((citizenCount) / CITIZENS_ON_PAGE) + halfPage;
if (page < 1 || page > pageCount) {
page = 1;
}
final int pageStartIndex = CITIZENS_ON_PAGE * (page - 1);
final int pageStopIndex = Math.min(CITIZENS_ON_PAGE * page, citizenCount);
final List<CitizenData> citizensPage;
if (pageStartIndex < 0 || pageStartIndex >= citizenCount) {
citizensPage = new ArrayList<>();
} else {
citizensPage = citizens.subList(pageStartIndex, pageStopIndex);
}
final ITextComponent headerLine = new TextComponentString(String.format(PAGE_TOP, page, pageCount));
sender.sendMessage(headerLine);
for (final CitizenData citizen : citizensPage) {
sender.sendMessage(new TextComponentString(String.format(CITIZEN_DESCRIPTION, citizen.getId(), citizen.getName())).setStyle(new Style().setClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, String.format(COMMAND_CITIZEN_INFO, citizen.getColony().getID(), citizen.getId())))));
citizen.getCitizenEntity().ifPresent(entityCitizen -> {
final BlockPos position = entityCitizen.getPosition();
sender.sendMessage(new TextComponentString(String.format(COORDINATES_XYZ, position.getX(), position.getY(), position.getZ())));
});
}
drawPageSwitcher(sender, page, citizenCount, halfPage, (null != colony ? colony.getID() : -1));
}
use of net.minecraft.util.text.ITextComponent in project minecolonies by Minecolonies.
the class ListCitizensCommand method drawPageSwitcher.
/**
* Draws the page switcher at the bottom.
*
* @param sender the sender.
* @param page the page number.
* @param count number of citizens.
* @param halfPage the halfPage.
* @param colonyId the colony id.
*/
private static void drawPageSwitcher(@NotNull final ICommandSender sender, final int page, final int count, final int halfPage, final int colonyId) {
final int prevPage = Math.max(0, page - 1);
final int nextPage = Math.min(page + 1, (count / CITIZENS_ON_PAGE) + halfPage);
final ITextComponent prevButton = new TextComponentString(PREV_PAGE).setStyle(new Style().setBold(true).setColor(TextFormatting.GOLD).setClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, String.format(LIST_COMMAND_SUGGESTED, colonyId, prevPage))));
final ITextComponent nextButton = new TextComponentString(NEXT_PAGE).setStyle(new Style().setBold(true).setColor(TextFormatting.GOLD).setClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, String.format(LIST_COMMAND_SUGGESTED, colonyId, nextPage))));
final ITextComponent beginLine = new TextComponentString(PAGE_LINE);
final ITextComponent endLine = new TextComponentString(PAGE_LINE);
sender.sendMessage(beginLine.appendSibling(prevButton).appendSibling(new TextComponentString(PAGE_LINE_DIVIDER)).appendSibling(nextButton).appendSibling(endLine));
}
use of net.minecraft.util.text.ITextComponent in project minecolonies by Minecolonies.
the class TileEntityInfoPoster method readFromNBT.
@Override
public void readFromNBT(final NBTTagCompound compound) {
super.readFromNBT(compound);
for (int i = 0; i < signText.length; ++i) {
final String s = compound.getString("Text" + (i + 1));
final ITextComponent itextcomponent = ITextComponent.Serializer.jsonToComponent(s);
this.signText[i] = itextcomponent;
}
this.stats.readStatsFromNBT(compound);
}
use of net.minecraft.util.text.ITextComponent in project minecolonies by Minecolonies.
the class NonSiblingFormattingTextComponent method getFormattedText.
@Override
public String getFormattedText() {
StringBuilder stringbuilder = new StringBuilder();
stringbuilder.append(this.getStyle().getFormattingCode());
for (ITextComponent itextcomponent : this) {
String s = itextcomponent.getUnformattedComponentText();
if (!s.isEmpty()) {
stringbuilder.append(s);
}
}
stringbuilder.append(TextFormatting.RESET);
return stringbuilder.toString();
}
Aggregations