/** * Maps an ore (ore dictionary key) to it's weight on the nether world generation. This * is used for the Orechid Ignem flower. Check the static block in the BotaniaAPI class * to get the weights for the vanilla blocks.<br> * Alternatively get the values with the OreDetector mod:<br> * https://gist.github.com/Vazkii/9493322 */ public static void addOreWeightNether(String ore, int weight) { if(ore.contains("Nether") && OreDictionary.getOres(ore.replace("Nether", "")).size() == 0) return; oreWeightsNether.put(ore, weight); }
@Override public Optional<Match> matches(NonNullList<ItemStack> stacks) { List<ItemStack> matches = Lists.newArrayList(); Optional<Match> match = super.matches(stacks); while(match.isPresent() && matches.size() < 3) { ItemStack stack = match.get().stacks.get(0); matches.add(stack); // remove all meats of the same kind for(int i = 0; i < stacks.size(); i++) { if(stacks.get(i).getItem() == stack.getItem()) { stacks.set(i, ItemStack.EMPTY); } } match = super.matches(stacks); } if(matches.size() >= 3) { return Optional.of(new Match(matches, 1)); } return Optional.empty(); } }
/** * Builds an Itemstack of this tool with the given materials, if applicable. * * @param stacks Items to build with. Have to be in the correct order and have exact length. No nulls! * @return The built item or null if invalid input. */ @Nonnull public ItemStack buildItemFromStacks(NonNullList<ItemStack> stacks) { long itemCount = stacks.stream().filter(stack -> !stack.isEmpty()).count(); List<Material> materials = new ArrayList<>(stacks.size()); if(itemCount != requiredComponents.length) { return ItemStack.EMPTY; } // not a valid part arrangement for this tool for(int i = 0; i < itemCount; i++) { if(!validComponent(i, stacks.get(i))) { return ItemStack.EMPTY; } materials.add(TinkerUtil.getMaterialFromStack(stacks.get(i))); } return buildItem(materials); }
@Override public ItemStack repair(ItemStack repairable, NonNullList<ItemStack> repairItems) { if(repairable.getItemDamage() == 0) { // nothing to repair, full durability return ItemStack.EMPTY; } // don't accept anything that's not wheat for(ItemStack repairItem : repairItems) { if(repairItem != null && repairItem.getItem() != Items.WHEAT) { return ItemStack.EMPTY; } } ItemStack stack = repairable.copy(); int index = 0; while(stack.getItemDamage() > 0 && index < repairItems.size()) { ItemStack repairItem = repairItems.get(index); if(repairItem.getCount() > 0) { repairItem.shrink(1); //change = Math.min(change, stack.getMaxDamage() - stack.getItemDamage()); stack.setItemDamage(stack.getItemDamage() - USES_PER_WHEAT); ToolHelper.healTool(stack, USES_PER_WHEAT, null); } else { index++; } } return stack; }
NonNullList<ItemStack> input; for(int i = 0; i < stacks.size(); i++) { if(stacks.get(i).isEmpty()) { if(length < 0) {
private ItemStack buildTool() throws TinkerGuiException { NonNullList<ItemStack> input = ItemStackList.withSize(tile.getSizeInventory()); for(int i = 0; i < input.size(); i++) { input.set(i, tile.getStackInSlot(i)); } ItemStack result = ToolBuilder.tryBuildTool(input, toolName, getBuildableTools()); if(!result.isEmpty()) { TinkerCraftingEvent.ToolCraftingEvent.fireEvent(result, player, input); } return result; }
for(int i = 0; i < repairItems.size(); i++) {
for (int i = 0; i < nonnulllist.size(); ++i)
/** * Gets the sum of all the discounts on IManaDiscountArmor items equipped * on the player passed in. This discount can vary based on what the passed tool is. */ public static float getFullDiscountForTools(EntityPlayer player, ItemStack tool) { float discount = 0F; for(int i = 0; i < player.inventory.armorInventory.size(); i++) { ItemStack armor = player.inventory.armorInventory.get(i); if(!armor.isEmpty() && armor.getItem() instanceof IManaDiscountArmor) discount += ((IManaDiscountArmor) armor.getItem()).getDiscount(armor, i, player, tool); } ManaDiscountEvent event = new ManaDiscountEvent(player, discount, tool); MinecraftForge.EVENT_BUS.post(event); discount = event.getDiscount(); return discount; } }
@Override @SideOnly(Side.CLIENT) public void renderRecipe(IGuiLexiconEntry gui, int mx, int my) { T recipe = recipes.get(recipeAt); TextureManager render = Minecraft.getMinecraft().renderEngine; renderItemAtGridPos(gui, 3, 0, recipe.getOutput(), false); renderItemAtGridPos(gui, 2, 1, getMiddleStack(), false); List<Object> inputs = recipe.getInputs(); int degreePerInput = (int) (360F / inputs.size()); float currentDegree = ConfigHandler.lexiconRotatingItems ? GuiScreen.isShiftKeyDown() ? ticksElapsed : ticksElapsed + ClientTickHandler.partialTicks : 0; int inputIndex = ticksElapsed / 40; for(Object obj : inputs) { Object input = obj; if(input instanceof String) { NonNullList<ItemStack> list = OreDictionary.getOres((String) input); int size = list.size(); input = list.get(size - inputIndex % size - 1); } renderItemAtAngle(gui, currentDegree, (ItemStack) input); currentDegree += degreePerInput; } renderManaBar(gui, recipe, mx, my); render.bindTexture(petalOverlay); GlStateManager.enableBlend(); GlStateManager.blendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); GlStateManager.color(1F, 1F, 1F, 1F); ((GuiScreen) gui).drawTexturedModalRect(gui.getLeft(), gui.getTop(), 0, 0, gui.getWidth(), gui.getHeight()); GlStateManager.disableBlend(); }
@SubscribeEvent(priority = EventPriority.HIGH) public void onPlayerClone(PlayerEvent.Clone evt) { if(!evt.isWasDeath() || evt.isCanceled()) { return; } if(evt.getOriginal() == null || evt.getEntityPlayer() == null || evt.getEntityPlayer() instanceof FakePlayer) { return; } if(evt.getEntityPlayer().getEntityWorld().getGameRules().getBoolean("keepInventory")) { return; } for(int i = 0; i < evt.getOriginal().inventory.mainInventory.size(); i++) { ItemStack stack = evt.getOriginal().inventory.mainInventory.get(i); if(TinkerUtil.hasModifier(stack.getTagCompound(), this.identifier)) { evt.getEntityPlayer().inventory.addItemStackToInventory(stack); evt.getOriginal().inventory.mainInventory.set(i, ItemStack.EMPTY); } } } }
int[] counts = new int[player.inventory.getSizeInventory() - player.inventory.armorInventory.size()];
int index = y * 3 + x; if(index >= recipe.getIngredients().size()) break drawGrid;
public void writeItemStacks(NonNullList<ItemStack> itemStacks) { writeVarInt(itemStacks.size()); for (ItemStack stack : itemStacks) { writeItemStack(stack); } }
else if( x >= 0 && x < player.inventory.mainInventory.size() )
else if( x >= 0 && x < player.inventory.mainInventory.size() )
for( int i = 0; i < aitemstack.size(); ++i )