@Override public List<List<ItemStack>> getItems() { return TinkerHarvestTools.pickaxe.getRequiredComponents().stream() .map(PartMaterialType::getPossibleParts) .flatMap(Collection::stream) .map(this::getItems) .collect(Collectors.toList()); }
private void registerExtraTraitModifiers(Material material, ToolCore tool) { tool.getRequiredComponents().forEach(pmt -> registerExtraTraitModifiers(material, tool, pmt)); }
/** * Register a tool, making it known to tinkers' systems. * All toolparts used to craft the tool will be registered as well. */ public static void registerTool(ToolCore tool) { tools.add(tool); for(PartMaterialType pmt : tool.getRequiredComponents()) { for(IToolPart tp : pmt.getPossibleParts()) { registerToolPart(tp); } } }
@Override public boolean canUseMaterial(Material mat) { for(ToolCore tool : TinkerRegistry.getTools()) { for(PartMaterialType pmt : tool.getRequiredComponents()) { if(pmt.isValid(this, mat)) { return true; } } } return false; }
private void registerCustomTextures(int i, ResourceLocation resourceLocation, ToolCore toolCore) { if(toolCore == null) { CustomTextureCreator.registerTexture(resourceLocation); } else { for(IToolPart part : toolCore.getRequiredComponents().get(i).getPossibleParts()) { CustomTextureCreator.registerTextureForPart(resourceLocation, part); } } }
public void recurse(ToolCore tool, ImmutableList<Material> materials, List<Triple<ItemStack, ImmutableList<Material>, Object[]>> results, Function<ItemStack, ?> fns[]) { // not enough materials yet, recurse if(tool.getRequiredComponents().size() > materials.size()) { for(Material mat : TinkerRegistry.getAllMaterials()) { if(!mat.hasStats(MaterialTypes.HEAD)) { continue; } ImmutableList.Builder<Material> mats = ImmutableList.builder(); mats.addAll(materials); mats.add(mat); recurse(tool, mats.build(), results, fns); } } // enough materials, build it and do stuff with it! else { ItemStack stack = tool.buildItem(materials); Object[] values = new Object[fns.length]; for(int i = 0; i < fns.length; i++) { values[i] = fns[i].apply(stack); } results.add(Triple.of(stack, materials, values)); } }
protected ItemStackList getDemoTools(ItemStack[][] inputItems) { ItemStackList demo = ItemStackList.withSize(tool.size()); for(int i = 0; i < tool.size(); i++) { if(tool.get(i) instanceof ToolCore) { ToolCore core = (ToolCore) tool.get(i); List<Material> mats = ImmutableList.of(TinkerMaterials.wood, TinkerMaterials.cobalt, TinkerMaterials.ardite, TinkerMaterials.manyullyn); mats = mats.subList(0, core.getRequiredComponents().size()); demo.set(i, ((ToolCore) tool.get(i)).buildItemForRendering(mats)); } else if(tool != null) { demo.set(i, new ItemStack(tool.get(i))); } if(!demo.get(i).isEmpty()) { modifier.apply(demo.get(i)); } } return demo; } }
@Override public boolean hasUseForStat(String stat) { for(ToolCore tool : TinkerRegistry.getTools()) { for(PartMaterialType pmt : tool.getRequiredComponents()) { if(pmt.isValidItem(this) && pmt.usesStat(stat)) { return true; } } } return false; }
private void registerStencil(Item pattern, ToolPart toolPart) { for(ToolCore toolCore : TinkerRegistry.getTools()) { for(PartMaterialType partMaterialType : toolCore.getRequiredComponents()) { if(partMaterialType.getPossibleParts().contains(toolPart)) { ItemStack stencil = new ItemStack(pattern); Pattern.setTagForPart(stencil, toolPart); TinkerRegistry.registerStencilTableCrafting(stencil); return; } } } }
@Override public void getTooltipComponents(ItemStack stack, List<String> tooltips) { List<Material> materials = TinkerUtil.getMaterialsFromTagList(TagUtil.getBaseMaterialsTagList(stack)); List<PartMaterialType> component = getRequiredComponents();
for(int i = 0; i < tool.getRequiredComponents().size(); i++) { builder.add(material);
List<PartMaterialType> pms = tool.getRequiredComponents(); for(int i = 0; i < pms.size(); i++) { PartMaterialType pmt = pms.get(i);
List<PartMaterialType> component = tool.getRequiredComponents();