public Collection<ITrait> getApplicableTraitsForMaterial(Material material) { if(!isValidMaterial(material)) { return ImmutableList.of(); } ImmutableList.Builder<ITrait> traits = ImmutableList.builder(); // traits of the types used for(String type : neededTypes) { traits.addAll(material.getAllTraitsForStats(type)); } // use default trait if none is present if(traits.build().isEmpty()) { traits.addAll(material.getDefaultTraits()); } return traits.build(); }
List<ITrait> traits = material.getAllTraitsForStats(stat.getIdentifier()); if(!traits.isEmpty()) { boolean unified = false;
List<ITrait> traits = material.getAllTraitsForStats(stats.getIdentifier());
private void addStatsDisplay(int x, int y, int w, ArrayList<BookElement> list, LinkedHashSet<ITrait> allTraits, String stattype) { IMaterialStats stats = material.getStats(stattype); if(stats == null) { return; } List<ITrait> traits = material.getAllTraitsForStats(stats.getIdentifier()); allTraits.addAll(traits); // create a list of all valid toolparts with the stats List<ItemStack> parts = Lists.newLinkedList(); for(IToolPart part : TinkerRegistry.getToolParts()) { if(part.hasUseForStat(stats.getIdentifier())) { parts.add(part.getItemstackWithMaterial(material)); } } // said parts next to the name if(parts.size() > 0) { ElementItem display = new ElementTinkerItem(x, y + 1, 0.5f, parts); list.add(display); } // and the name itself ElementText name = new ElementText(x + 10, y, w - 10, 10, stats.getLocalizedName()); name.text[0].underlined = true; list.add(name); y += 12; List<TextData> lineData = Lists.newArrayList(); // add lines of tool information lineData.addAll(getStatLines(stats)); lineData.addAll(getTraitLines(traits, material)); list.add(new ElementText(x, y, w, GuiBook.PAGE_HEIGHT, lineData)); }
@Override public void build(BookData book, ArrayList<BookElement> list, boolean rightSide) { addTitle(list, material.getLocalizedNameColored(), true); // the cool tools to the left/right addDisplayItems(list, rightSide ? GuiBook.PAGE_WIDTH - 18 : 0); int col_margin = 22; int top = 15; int left = rightSide ? 0 : col_margin; int y = top + 10; int x = left + 10; int w = GuiBook.PAGE_WIDTH / 2 - 10; LinkedHashSet<ITrait> allTraits = new LinkedHashSet<>(); // head stats addStatsDisplay(x, y, w, list, allTraits, MaterialTypes.HEAD); // handle addStatsDisplay(x + w, y, w - 10, list, allTraits, MaterialTypes.HANDLE); // extra y += 65 + 10 * material.getAllTraitsForStats(MaterialTypes.HEAD).size(); addStatsDisplay(x, y, w, list, allTraits, MaterialTypes.EXTRA); // inspirational quote String flavour = parent.parent.parent.strings.get(String.format("%s.flavour", material.getIdentifier())); //flavour = "How much wood could a woodchuck chuck if a woodchuck could chuck wood?"; if(flavour != null) { TextData flavourData = new TextData("\"" + flavour + "\""); flavourData.italic = true; list.add(new ElementText(x + w, y, w - 16, 60, flavourData)); } }