package noppes.npcs.client.gui.util; import net.minecraft.util.StatCollector; import noppes.npcs.client.gui.GuiNpcMobSpawner; import noppes.npcs.controllers.data.Tag; import java.util.UUID; public class GuiCustomScrollCloner extends GuiCustomScroll { private final GuiNpcMobSpawner parent; public GuiCustomScrollCloner(GuiNpcMobSpawner parent, int id) { super(parent, id); this.parent = parent; } protected void drawItems() { int l = 0; for(int i = 0; i < list.size(); i++) { int j = 4; int k = (14 * l + 4) - scrollY; l++; if(k >= 4 && k + 12 < ySize) { int xOffset = scrollHeight < ySize - 8?0:10; String displayString = StatCollector.translateToLocal(list.get(i)); String text = ""; float maxWidth = (xSize + xOffset - 8) * 0.8f; if(fontRendererObj.getStringWidth(displayString) > maxWidth){ for(int h = 0; h < displayString.length(); h++){ char c = displayString.charAt(h); text += c; if(fontRendererObj.getStringWidth(text) > maxWidth) break; } if(displayString.length() > text.length()) text += "..."; } else text = displayString; if((multipleSelection && selectedList.contains(text)) || (!multipleSelection && selected == i)) { drawVerticalLine(j-2, k-4, k + 10, 0xffffffff); drawVerticalLine(j + xSize - 18 + xOffset, k - 4, k + 10, 0xffffffff); drawHorizontalLine(j - 2, j + xSize - 18 + xOffset, k - 3 , 0xffffffff); drawHorizontalLine(j - 2, j + xSize - 18 + xOffset, k + 10 , 0xffffffff); fontRendererObj.drawString(text, j , k, this.colors.getOrDefault(text, 0xffffff)); } else if(i == hover) { fontRendererObj.drawString(text, j, k, 0x00ff00); } else { fontRendererObj.drawString(text, j, k, this.colors.getOrDefault(text, 0xffffff)); } if((this.parent.getShowingClones() == 0 || this.parent.getShowingClones() == 2) && this.parent.tagMap != null){ int tagStartX = j + fontRendererObj.getStringWidth(displayString) + 3; if(GuiNpcMobSpawner.displayTags == 0 || GuiNpcMobSpawner.displayTags == 1){ if (this.parent.tagMap.hasClone(list.get(i))) { for (UUID tagUUID : this.parent.tagMap.getUUIDsList(list.get(i))){ Tag tag = this.parent.tags.get(tagUUID); if(tag != null){ if(GuiNpcMobSpawner.displayTags == 1 || !tag.getIsHidden()){ fontRendererObj.drawString("[" + tag.name + "]", tagStartX, k, tag.color); tagStartX += fontRendererObj.getStringWidth("[" + tag.name + "]") + 3; } } } } } } } } } }