-
Notifications
You must be signed in to change notification settings - Fork 497
/
BoardProgrammingRecipe.java
62 lines (53 loc) · 1.84 KB
/
BoardProgrammingRecipe.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
package buildcraft.robotics;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import net.minecraft.item.ItemStack;
import buildcraft.BuildCraftRobotics;
import buildcraft.BuildCraftSilicon;
import buildcraft.api.boards.RedstoneBoardNBT;
import buildcraft.api.boards.RedstoneBoardRegistry;
import buildcraft.api.recipes.IProgrammingRecipe;
import buildcraft.core.utils.NBTUtils;
public class BoardProgrammingRecipe implements IProgrammingRecipe {
private class BoardSorter implements Comparator<ItemStack> {
private BoardProgrammingRecipe recipe;
public BoardSorter(BoardProgrammingRecipe recipe) {
this.recipe = recipe;
}
@Override
public int compare(ItemStack o1, ItemStack o2) {
return recipe.getEnergyCost(o1) - recipe.getEnergyCost(o2);
}
}
@Override
public String getId() {
return "buildcraft:redstone_board";
}
@Override
public List<ItemStack> getOptions(int width, int height) {
List<ItemStack> options = new ArrayList<ItemStack>(width * height);
for (RedstoneBoardNBT nbt : RedstoneBoardRegistry.instance.getAllBoardNBTs()) {
ItemStack stack = new ItemStack(BuildCraftRobotics.redstoneBoard);
nbt.createBoard(NBTUtils.getItemData(stack));
options.add(stack);
}
Collections.sort(options, new BoardSorter(this));
return options;
}
@Override
public int getEnergyCost(ItemStack option) {
// TODO: Replace probability with proper energy cost? (7.0.x?)
ImplRedstoneBoardRegistry impl = (ImplRedstoneBoardRegistry) RedstoneBoardRegistry.instance;
return Math.round((20.0F / impl.getProbability(option.getTagCompound().getString("id"))) * 8000);
}
@Override
public boolean canCraft(ItemStack input) {
return input.getItem() instanceof ItemRedstoneBoard;
}
@Override
public ItemStack craft(ItemStack input, ItemStack option) {
return option;
}
}