1
mirror of https://github.com/StarWishsama/Slimefun4.git synced 2024-09-20 11:45:51 +00:00

Merge pull request #1128 from Liruxo/constructor_cleanup

Multiblock constructor refactor
This commit is contained in:
TheBusyBiscuit 2019-09-26 20:59:51 +02:00 committed by GitHub
commit 0f488c1479
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
16 changed files with 83 additions and 46 deletions

View File

@ -20,24 +20,7 @@ public class MultiBlock {
public MultiBlock(Material[] build, Material trigger) { public MultiBlock(Material[] build, Material trigger) {
this.blocks = build; this.blocks = build;
this.isSymmetric = isSymmetric(build); this.isSymmetric = isSymmetric(build);
//Hacky, the other constructor should be used this.trigger = convertTriggerMaterialToBlockFace(build, trigger);
for (int i = 1; i < 9; i +=3) {
if (trigger == build[i]) {
switch (i) {
case 1:
this.trigger = BlockFace.DOWN;
return;
case 4:
this.trigger = BlockFace.SELF;
return;
case 7:
this.trigger = BlockFace.UP;
return;
default:
break;
}
}
}
} }
public MultiBlock(Material[] build, BlockFace trigger) { public MultiBlock(Material[] build, BlockFace trigger) {
@ -107,4 +90,24 @@ public class MultiBlock {
return this.isSymmetric; return this.isSymmetric;
} }
@Deprecated
public static BlockFace convertTriggerMaterialToBlockFace(Material[] build, Material trigger)
{
//Hacky
for (int i = 1; i < 9; i +=3) {
if (trigger == build[i]) {
switch (i) {
case 1:
return BlockFace.DOWN;
case 4:
return BlockFace.SELF;
case 7:
return BlockFace.UP;
default:
break;
}
}
}
return null;
}
} }

View File

@ -6,6 +6,7 @@ import java.util.Iterator;
import java.util.List; import java.util.List;
import org.bukkit.Material; import org.bukkit.Material;
import org.bukkit.block.BlockFace;
import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.ItemStack;
import me.mrCookieSlime.Slimefun.Lists.RecipeType; import me.mrCookieSlime.Slimefun.Lists.RecipeType;
@ -16,11 +17,25 @@ import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.interfaces.RecipeDisplayIt
public class SlimefunMachine extends SlimefunItem implements RecipeDisplayItem { public class SlimefunMachine extends SlimefunItem implements RecipeDisplayItem {
protected List<ItemStack[]> recipes; protected List<ItemStack[]> recipes;
private Material trigger;
protected List<ItemStack> shownRecipes; protected List<ItemStack> shownRecipes;
private BlockFace trigger;
@Deprecated
public SlimefunMachine(Category category, ItemStack item, String id, ItemStack[] recipe, ItemStack[] machineRecipes, Material trigger) { public SlimefunMachine(Category category, ItemStack item, String id, ItemStack[] recipe, ItemStack[] machineRecipes, Material trigger) {
this(category, item, id, recipe, machineRecipes, convertTriggerMaterial(recipe, trigger));
}
@Deprecated
public SlimefunMachine(Category category, ItemStack item, String id, ItemStack[] recipe, ItemStack[] machineRecipes, Material trigger, boolean ghost) {
this(category, item, id, recipe, machineRecipes, convertTriggerMaterial(recipe, trigger), ghost);
}
@Deprecated
public SlimefunMachine(Category category, ItemStack item, String id, ItemStack[] recipe, ItemStack[] machineRecipes, Material trigger, String[] keys, Object[] values) {
this(category, item, id, recipe, machineRecipes, convertTriggerMaterial(recipe, trigger), keys, values);
}
public SlimefunMachine(Category category, ItemStack item, String id, ItemStack[] recipe, ItemStack[] machineRecipes, BlockFace trigger) {
super(category, item, id, RecipeType.MULTIBLOCK, recipe); super(category, item, id, RecipeType.MULTIBLOCK, recipe);
this.recipes = new ArrayList<>(); this.recipes = new ArrayList<>();
this.shownRecipes = new ArrayList<>(); this.shownRecipes = new ArrayList<>();
@ -28,7 +43,7 @@ public class SlimefunMachine extends SlimefunItem implements RecipeDisplayItem {
this.trigger = trigger; this.trigger = trigger;
} }
public SlimefunMachine(Category category, ItemStack item, String id, ItemStack[] recipe, ItemStack[] machineRecipes, Material trigger, boolean ghost) { public SlimefunMachine(Category category, ItemStack item, String id, ItemStack[] recipe, ItemStack[] machineRecipes, BlockFace trigger, boolean ghost) {
super(category, item, id, RecipeType.MULTIBLOCK, recipe, ghost); super(category, item, id, RecipeType.MULTIBLOCK, recipe, ghost);
this.recipes = new ArrayList<>(); this.recipes = new ArrayList<>();
this.shownRecipes = new ArrayList<>(); this.shownRecipes = new ArrayList<>();
@ -36,7 +51,7 @@ public class SlimefunMachine extends SlimefunItem implements RecipeDisplayItem {
this.trigger = trigger; this.trigger = trigger;
} }
public SlimefunMachine(Category category, ItemStack item, String id, ItemStack[] recipe, ItemStack[] machineRecipes, Material trigger, String[] keys, Object[] values) { public SlimefunMachine(Category category, ItemStack item, String id, ItemStack[] recipe, ItemStack[] machineRecipes, BlockFace trigger, String[] keys, Object[] values) {
super(category, item, id, RecipeType.MULTIBLOCK, recipe, keys, values); super(category, item, id, RecipeType.MULTIBLOCK, recipe, keys, values);
this.recipes = new ArrayList<>(); this.recipes = new ArrayList<>();
this.shownRecipes = new ArrayList<>(); this.shownRecipes = new ArrayList<>();
@ -73,20 +88,27 @@ public class SlimefunMachine extends SlimefunItem implements RecipeDisplayItem {
} }
} }
public MultiBlock toMultiBlock() { private static Material[] convertItemStacksToMaterial(ItemStack[] items) {
List<Material> mats = new ArrayList<>(); List<Material> mats = new ArrayList<>();
for (ItemStack i: this.getRecipe()) { for (ItemStack i: items) {
if (i == null) mats.add(null); if (i == null) mats.add(null);
else if (i.getType() == Material.FLINT_AND_STEEL) mats.add(Material.FIRE); else if (i.getType() == Material.FLINT_AND_STEEL) mats.add(Material.FIRE);
else mats.add(i.getType()); else mats.add(i.getType());
} }
Material[] build = mats.toArray(new Material[mats.size()]); return mats.toArray(new Material[mats.size()]);
return new MultiBlock(build, this.trigger); }
public MultiBlock toMultiBlock() {
return new MultiBlock(convertItemStacksToMaterial(this.getRecipe()), this.trigger);
} }
public Iterator<ItemStack[]> recipeIterator() { public Iterator<ItemStack[]> recipeIterator() {
return this.recipes.iterator(); return this.recipes.iterator();
} }
@Deprecated
private static BlockFace convertTriggerMaterial(ItemStack[] recipe, Material trigger) {
return MultiBlock.convertTriggerMaterialToBlockFace(convertItemStacksToMaterial(recipe), trigger);
}
} }

View File

@ -29,7 +29,7 @@ public class ArmorForge extends MultiBlockMachine {
"ARMOR_FORGE", "ARMOR_FORGE",
new ItemStack[] {null, null, null, null, new ItemStack(Material.ANVIL), null, null, new CustomItem(Material.DISPENSER, "Dispenser (Facing up)"), null}, new ItemStack[] {null, null, null, null, new ItemStack(Material.ANVIL), null, null, new CustomItem(Material.DISPENSER, "Dispenser (Facing up)"), null},
new ItemStack[0], new ItemStack[0],
Material.ANVIL BlockFace.SELF
); );
} }

View File

@ -36,7 +36,7 @@ public class AutomatedPanningMachine extends MultiBlockMachine {
new ItemStack(Material.GRAVEL), new ItemStack(Material.CLAY_BALL), new ItemStack(Material.GRAVEL), new ItemStack(Material.CLAY_BALL),
new ItemStack(Material.GRAVEL), SlimefunItems.SIFTED_ORE new ItemStack(Material.GRAVEL), SlimefunItems.SIFTED_ORE
}, },
Material.OAK_TRAPDOOR BlockFace.SELF
); );
} }

View File

@ -35,7 +35,7 @@ public class Compressor extends MultiBlockMachine {
new CustomItem(SlimefunItems.STONE_CHUNK, 4), new ItemStack(Material.COBBLESTONE), new CustomItem(SlimefunItems.STONE_CHUNK, 4), new ItemStack(Material.COBBLESTONE),
new CustomItem(SlimefunItems.REINFORCED_ALLOY_INGOT, 8), SlimefunItems.REINFORCED_PLATE new CustomItem(SlimefunItems.REINFORCED_ALLOY_INGOT, 8), SlimefunItems.REINFORCED_PLATE
}, },
Material.NETHER_BRICK_FENCE BlockFace.SELF
); );
} }

View File

@ -35,7 +35,7 @@ public class EnhancedCraftingTable extends MultiBlockMachine {
"ENHANCED_CRAFTING_TABLE", "ENHANCED_CRAFTING_TABLE",
new ItemStack[] {null, null, null, null, new ItemStack(Material.CRAFTING_TABLE), null, null, new ItemStack(Material.DISPENSER), null}, new ItemStack[] {null, null, null, null, new ItemStack(Material.CRAFTING_TABLE), null, null, new ItemStack(Material.DISPENSER), null},
new ItemStack[0], new ItemStack[0],
Material.CRAFTING_TABLE BlockFace.SELF
); );
} }

View File

@ -39,7 +39,7 @@ public class GrindStone extends MultiBlockMachine {
new ItemStack(Material.SANDSTONE), new ItemStack(Material.SAND, 4), new ItemStack(Material.SANDSTONE), new ItemStack(Material.SAND, 4),
new ItemStack(Material.RED_SANDSTONE), new ItemStack(Material.RED_SAND, 4) new ItemStack(Material.RED_SANDSTONE), new ItemStack(Material.RED_SAND, 4)
}, },
Material.OAK_FENCE BlockFace.SELF
); );
} }

View File

@ -35,7 +35,7 @@ public class Juicer extends MultiBlockMachine {
new ItemStack(Material.PUMPKIN), SlimefunItems.PUMPKIN_JUICE, new ItemStack(Material.PUMPKIN), SlimefunItems.PUMPKIN_JUICE,
new ItemStack(Material.GOLDEN_APPLE), SlimefunItems.GOLDEN_APPLE_JUICE new ItemStack(Material.GOLDEN_APPLE), SlimefunItems.GOLDEN_APPLE_JUICE
}, },
Material.NETHER_BRICK_FENCE BlockFace.SELF
); );
} }

View File

@ -9,6 +9,7 @@ import org.bukkit.Effect;
import org.bukkit.Material; import org.bukkit.Material;
import org.bukkit.Sound; import org.bukkit.Sound;
import org.bukkit.block.Block; import org.bukkit.block.Block;
import org.bukkit.block.BlockFace;
import org.bukkit.block.Dispenser; import org.bukkit.block.Dispenser;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.inventory.Inventory; import org.bukkit.inventory.Inventory;
@ -35,7 +36,7 @@ public class MagicWorkbench extends MultiBlockMachine {
"MAGIC_WORKBENCH", "MAGIC_WORKBENCH",
new ItemStack[] {null, null, null, null, null, null, new ItemStack(Material.BOOKSHELF), new ItemStack(Material.CRAFTING_TABLE), new ItemStack(Material.DISPENSER)}, new ItemStack[] {null, null, null, null, null, null, new ItemStack(Material.BOOKSHELF), new ItemStack(Material.CRAFTING_TABLE), new ItemStack(Material.DISPENSER)},
new ItemStack[0], new ItemStack[0],
Material.CRAFTING_TABLE BlockFace.UP
); );
} }

View File

@ -27,14 +27,24 @@ public abstract class MultiBlockMachine extends SlimefunMachine {
BlockFace.WEST BlockFace.WEST
}; };
@Deprecated
public MultiBlockMachine(Category category, ItemStack item, String id, ItemStack[] recipe, ItemStack[] machineRecipes, Material trigger) { public MultiBlockMachine(Category category, ItemStack item, String id, ItemStack[] recipe, ItemStack[] machineRecipes, Material trigger) {
super(category, item, id, recipe, machineRecipes, trigger); super(category, item, id, recipe, machineRecipes, trigger);
} }
@Deprecated
public MultiBlockMachine(Category category, ItemStack item, String id, ItemStack[] recipe, ItemStack[] machineRecipes, Material trigger, String[] keys, Object[] values) { public MultiBlockMachine(Category category, ItemStack item, String id, ItemStack[] recipe, ItemStack[] machineRecipes, Material trigger, String[] keys, Object[] values) {
super(category, item, id, recipe, machineRecipes, trigger, keys, values); super(category, item, id, recipe, machineRecipes, trigger, keys, values);
} }
public MultiBlockMachine(Category category, ItemStack item, String id, ItemStack[] recipe, ItemStack[] machineRecipes, BlockFace trigger) {
super(category, item, id, recipe, machineRecipes, trigger);
}
public MultiBlockMachine(Category category, ItemStack item, String id, ItemStack[] recipe, ItemStack[] machineRecipes, BlockFace trigger, String[] keys, Object[] values) {
super(category, item, id, recipe, machineRecipes, trigger, keys, values);
}
@Override @Override
public void register() { public void register() {
register(true, getInteractionHandler()); register(true, getInteractionHandler());

View File

@ -39,7 +39,7 @@ public class OreCrusher extends MultiBlockMachine {
new ItemStack(Material.GOLD_INGOT), SlimefunItems.GOLD_DUST, new ItemStack(Material.GOLD_INGOT), SlimefunItems.GOLD_DUST,
SlimefunItems.GOLD_4K, SlimefunItems.GOLD_DUST SlimefunItems.GOLD_4K, SlimefunItems.GOLD_DUST
}, },
Material.NETHER_BRICK_FENCE BlockFace.SELF
); );
} }

View File

@ -39,7 +39,7 @@ public class OreWasher extends MultiBlockMachine {
SlimefunItems.SIFTED_ORE, SlimefunItems.LEAD_DUST, SlimefunItems.SIFTED_ORE, SlimefunItems.LEAD_DUST,
SlimefunItems.SIFTED_ORE, SlimefunItems.SILVER_DUST SlimefunItems.SIFTED_ORE, SlimefunItems.SILVER_DUST
}, },
Material.OAK_FENCE BlockFace.SELF
); );
} }

View File

@ -33,7 +33,7 @@ public class PressureChamber extends MultiBlockMachine {
SlimefunItems.CARBON_CHUNK, SlimefunItems.SYNTHETIC_DIAMOND, SlimefunItems.CARBON_CHUNK, SlimefunItems.SYNTHETIC_DIAMOND,
SlimefunItems.RAW_CARBONADO, SlimefunItems.CARBONADO SlimefunItems.RAW_CARBONADO, SlimefunItems.CARBONADO
}, },
Material.CAULDRON BlockFace.UP
); );
} }

View File

@ -36,7 +36,7 @@ public class Smeltery extends MultiBlockMachine {
new ItemStack[] { new ItemStack[] {
SlimefunItems.IRON_DUST, new ItemStack(Material.IRON_INGOT) SlimefunItems.IRON_DUST, new ItemStack(Material.IRON_INGOT)
}, },
Material.NETHER_BRICK_FENCE, BlockFace.SELF,
new String[] {"chance.fireBreak"}, new Integer[] {34} new String[] {"chance.fireBreak"}, new Integer[] {34}
); );
} }

View File

@ -7,6 +7,7 @@ import org.bukkit.Effect;
import org.bukkit.Material; import org.bukkit.Material;
import org.bukkit.Tag; import org.bukkit.Tag;
import org.bukkit.block.Block; import org.bukkit.block.Block;
import org.bukkit.block.BlockFace;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.ItemStack;
@ -25,7 +26,7 @@ public class TableSaw extends MultiBlockMachine {
"TABLE_SAW", "TABLE_SAW",
new ItemStack[] {null, null, null, new ItemStack(Material.SMOOTH_STONE_SLAB), new ItemStack(Material.STONECUTTER), new ItemStack(Material.SMOOTH_STONE_SLAB), null, new ItemStack(Material.IRON_BLOCK), null}, new ItemStack[] {null, null, null, new ItemStack(Material.SMOOTH_STONE_SLAB), new ItemStack(Material.STONECUTTER), new ItemStack(Material.SMOOTH_STONE_SLAB), null, new ItemStack(Material.IRON_BLOCK), null},
new ItemStack[0], new ItemStack[0],
Material.STONECUTTER BlockFace.SELF
); );
for (Material log: Tag.LOGS.getValues()) { for (Material log: Tag.LOGS.getValues()) {

View File

@ -1061,7 +1061,7 @@ public final class SlimefunSetup {
*/ */
new SlimefunMachine(Categories.MACHINES_1, SlimefunItems.SAW_MILL, "SAW_MILL", new SlimefunMachine(Categories.MACHINES_1, SlimefunItems.SAW_MILL, "SAW_MILL",
new ItemStack[] {null, null, null, new ItemStack(Material.IRON_BARS), new ItemStack(Material.OAK_LOG), new ItemStack(Material.IRON_BARS), new ItemStack(Material.OAK_LOG), new ItemStack(Material.CRAFTING_TABLE), new ItemStack(Material.OAK_LOG)}, new ItemStack[] {null, null, null, new ItemStack(Material.IRON_BARS), new ItemStack(Material.OAK_LOG), new ItemStack(Material.IRON_BARS), new ItemStack(Material.OAK_LOG), new ItemStack(Material.CRAFTING_TABLE), new ItemStack(Material.OAK_LOG)},
new ItemStack[] {}, Material.CRAFTING_TABLE) new ItemStack[] {}, BlockFace.UP)
.register(true, new MultiBlockInteractionHandler() { .register(true, new MultiBlockInteractionHandler() {
@Override @Override
@ -1098,7 +1098,7 @@ public final class SlimefunSetup {
new SlimefunMachine(Categories.MACHINES_1, SlimefunItems.DIGITAL_MINER, "DIGITAL_MINER", new SlimefunMachine(Categories.MACHINES_1, SlimefunItems.DIGITAL_MINER, "DIGITAL_MINER",
new ItemStack[] {SlimefunItems.SOLAR_PANEL, new ItemStack(Material.CHEST), SlimefunItems.SOLAR_PANEL, new ItemStack(Material.IRON_BLOCK), new ItemStack(Material.DISPENSER), new ItemStack(Material.IRON_BLOCK), new ItemStack(Material.IRON_BLOCK), new ItemStack(Material.HOPPER), new ItemStack(Material.IRON_BLOCK)}, new ItemStack[] {SlimefunItems.SOLAR_PANEL, new ItemStack(Material.CHEST), SlimefunItems.SOLAR_PANEL, new ItemStack(Material.IRON_BLOCK), new ItemStack(Material.DISPENSER), new ItemStack(Material.IRON_BLOCK), new ItemStack(Material.IRON_BLOCK), new ItemStack(Material.HOPPER), new ItemStack(Material.IRON_BLOCK)},
new ItemStack[0], Material.DISPENSER) new ItemStack[0], BlockFace.SELF)
.register(true, new MultiBlockInteractionHandler() { .register(true, new MultiBlockInteractionHandler() {
@Override @Override
@ -1156,7 +1156,7 @@ public final class SlimefunSetup {
new SlimefunMachine(Categories.MACHINES_1, SlimefunItems.ADVANCED_DIGITAL_MINER, "ADVANCED_DIGITAL_MINER", new SlimefunMachine(Categories.MACHINES_1, SlimefunItems.ADVANCED_DIGITAL_MINER, "ADVANCED_DIGITAL_MINER",
new ItemStack[] {SlimefunItems.SOLAR_PANEL, new ItemStack(Material.CHEST), SlimefunItems.SOLAR_PANEL, SlimefunItems.GOLD_24K_BLOCK, new ItemStack(Material.DISPENSER), SlimefunItems.GOLD_24K_BLOCK, SlimefunItems.GOLD_24K_BLOCK, new ItemStack(Material.HOPPER), SlimefunItems.GOLD_24K_BLOCK}, new ItemStack[] {SlimefunItems.SOLAR_PANEL, new ItemStack(Material.CHEST), SlimefunItems.SOLAR_PANEL, SlimefunItems.GOLD_24K_BLOCK, new ItemStack(Material.DISPENSER), SlimefunItems.GOLD_24K_BLOCK, SlimefunItems.GOLD_24K_BLOCK, new ItemStack(Material.HOPPER), SlimefunItems.GOLD_24K_BLOCK},
new ItemStack[0], Material.DISPENSER) new ItemStack[0], BlockFace.SELF)
.register(true, new MultiBlockInteractionHandler() { .register(true, new MultiBlockInteractionHandler() {
@Override @Override