1
mirror of https://github.com/StarWishsama/Slimefun4.git synced 2024-09-21 20:25:54 +00:00
Slimefun4/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SlimefunMachine.java

85 lines
2.7 KiB
Java
Raw Normal View History

2016-04-14 16:24:03 +00:00
package me.mrCookieSlime.Slimefun.Objects.SlimefunItem;
import java.util.*;
2016-04-14 16:24:03 +00:00
import me.mrCookieSlime.Slimefun.Lists.RecipeType;
import me.mrCookieSlime.Slimefun.Objects.Category;
import me.mrCookieSlime.Slimefun.Objects.MultiBlock;
import org.bukkit.Material;
import org.bukkit.inventory.ItemStack;
public class SlimefunMachine extends SlimefunItem {
private List<ItemStack[]> recipes;
private List<ItemStack> shownRecipes;
private Material trigger;
2016-04-14 16:24:03 +00:00
public SlimefunMachine(Category category, ItemStack item, String id, ItemStack[] recipe, ItemStack[] machineRecipes, Material trigger) {
super(category, item, id, RecipeType.MULTIBLOCK, recipe);
this.recipes = new ArrayList<>();
this.shownRecipes = new ArrayList<>();
this.shownRecipes.addAll(Arrays.asList(machineRecipes));
2016-04-14 16:24:03 +00:00
this.trigger = trigger;
}
public SlimefunMachine(Category category, ItemStack item, String id, ItemStack[] recipe, ItemStack[] machineRecipes, Material trigger, boolean ghost) {
super(category, item, id, RecipeType.MULTIBLOCK, recipe, ghost);
this.recipes = new ArrayList<>();
this.shownRecipes = new ArrayList<>();
this.shownRecipes.addAll(Arrays.asList(machineRecipes));
2016-04-14 16:24:03 +00:00
this.trigger = trigger;
}
public SlimefunMachine(Category category, ItemStack item, String id, ItemStack[] recipe, ItemStack[] machineRecipes, Material trigger, String[] keys, Object[] values) {
super(category, item, id, RecipeType.MULTIBLOCK, recipe, keys, values);
this.recipes = new ArrayList<>();
this.shownRecipes = new ArrayList<>();
this.shownRecipes.addAll(Arrays.asList(machineRecipes));
2016-04-14 16:24:03 +00:00
this.trigger = trigger;
}
public List<ItemStack[]> getRecipes() {
return this.recipes;
}
public List<ItemStack> getDisplayRecipes() {
return this.shownRecipes;
}
public void addRecipe(ItemStack[] input, ItemStack output) {
this.recipes.add(input);
this.recipes.add(new ItemStack[] {output});
}
@Override
public void create() {
this.toMultiBlock().register();
}
@Override
public void install() {
for (ItemStack i: this.getDisplayRecipes()) {
SlimefunItem item = SlimefunItem.getByItem(i);
if (item == null) this.recipes.add(new ItemStack[] {i});
else if (!SlimefunItem.isDisabled(i)) this.recipes.add(new ItemStack[] {i});
}
}
public MultiBlock toMultiBlock() {
List<Material> mats = new ArrayList<>();
2017-10-13 13:56:48 +00:00
for (ItemStack i: this.getRecipe()) {
2016-04-14 16:24:03 +00:00
if (i == null) mats.add(null);
else if (i.getType() == Material.FLINT_AND_STEEL) mats.add(Material.FIRE);
else mats.add(i.getType());
}
Material[] build = mats.toArray(new Material[mats.size()]);
return new MultiBlock(build, this.trigger);
}
public Iterator<ItemStack[]> recipeIterator() {
return this.recipes.iterator();
}
}