2018-10-27 01:49:57 +02:00
|
|
|
package de.ellpeck.naturesaura.blocks;
|
|
|
|
|
|
|
|
import de.ellpeck.naturesaura.NaturesAura;
|
2018-10-30 11:08:50 +01:00
|
|
|
import net.minecraft.block.Block;
|
2018-10-27 01:49:57 +02:00
|
|
|
import net.minecraft.block.BlockLog;
|
|
|
|
import net.minecraft.block.BlockSapling;
|
|
|
|
import net.minecraft.block.BlockStoneBrick;
|
|
|
|
import net.minecraft.block.BlockStoneBrick.EnumType;
|
2018-10-30 11:08:50 +01:00
|
|
|
import net.minecraft.block.state.IBlockState;
|
2018-10-27 01:49:57 +02:00
|
|
|
import net.minecraft.init.Blocks;
|
|
|
|
import net.minecraft.util.ResourceLocation;
|
2018-10-30 11:08:50 +01:00
|
|
|
import vazkii.patchouli.api.IMultiblock;
|
|
|
|
import vazkii.patchouli.api.IStateMatcher;
|
|
|
|
import vazkii.patchouli.api.PatchouliAPI;
|
|
|
|
|
|
|
|
import java.util.function.Predicate;
|
2018-10-27 01:49:57 +02:00
|
|
|
|
|
|
|
public final class Multiblocks {
|
|
|
|
|
2018-10-30 11:08:50 +01:00
|
|
|
public static final IMultiblock ALTAR = make(
|
2018-10-27 01:49:57 +02:00
|
|
|
new ResourceLocation(NaturesAura.MOD_ID, "altar"),
|
2018-10-30 11:08:50 +01:00
|
|
|
new String[][]{
|
2018-10-27 01:49:57 +02:00
|
|
|
{" M ", " ", " ", " ", "M M", " ", " ", " ", " M "},
|
|
|
|
{" B ", " ", " ", " ", "B B", " ", " ", " ", " B "},
|
|
|
|
{" B ", " ", " M M ", " ", "B 0 B", " ", " M M ", " ", " B "},
|
|
|
|
{" ", " WBW ", " WBW ", " WWCWCWW ", " BBW WBB ", " WWCWCWW ", " WBW ", " WBW ", " "}},
|
2018-10-30 11:08:50 +01:00
|
|
|
'C', Blocks.STONEBRICK.getDefaultState().withProperty(BlockStoneBrick.VARIANT, EnumType.CHISELED),
|
|
|
|
'B', Blocks.STONEBRICK.getDefaultState(),
|
|
|
|
'W', Blocks.PLANKS,
|
|
|
|
'M', Blocks.STONEBRICK.getDefaultState().withProperty(BlockStoneBrick.VARIANT, EnumType.MOSSY),
|
|
|
|
'0', ModBlocks.NATURE_ALTAR,
|
|
|
|
' ', anyMatcher()
|
2018-10-27 01:49:57 +02:00
|
|
|
).setSymmetrical(true);
|
2018-10-30 11:08:50 +01:00
|
|
|
public static final IMultiblock TREE_RITUAL = make(
|
2018-10-27 01:49:57 +02:00
|
|
|
new ResourceLocation(NaturesAura.MOD_ID, "tree_ritual"),
|
2018-10-30 11:08:50 +01:00
|
|
|
new String[][]{
|
2018-10-27 01:49:57 +02:00
|
|
|
{" W ", " W W ", " GGG ", " GG GG ", "W G 0 G W", " GG GG ", " GGG ", " W W ", " W "}},
|
2018-10-30 11:08:50 +01:00
|
|
|
'W', ModBlocks.WOOD_STAND,
|
|
|
|
'G', ModBlocks.GOLD_POWDER,
|
|
|
|
'0', matcher(Blocks.SAPLING, state -> state.getBlock() instanceof BlockSapling || state.getBlock() instanceof BlockLog),
|
|
|
|
' ', anyMatcher()
|
2018-10-27 01:49:57 +02:00
|
|
|
).setSymmetrical(true);
|
2018-10-30 11:08:50 +01:00
|
|
|
public static final IMultiblock POTION_GENERATOR = make(
|
2018-10-28 13:46:09 +01:00
|
|
|
new ResourceLocation(NaturesAura.MOD_ID, "potion_generator"),
|
2018-10-30 11:08:50 +01:00
|
|
|
new String[][]{
|
2018-10-28 13:46:09 +01:00
|
|
|
{"R R", " ", " ", " ", " ", " ", "R R"},
|
|
|
|
{"N N", " ", " ", " ", " ", " ", "N N"},
|
|
|
|
{"N N", " ", " ", " 0 ", " ", " ", "N N"},
|
|
|
|
{" N N ", "NNN NNN", " NRRRN ", " R R ", " NRRRN ", "NNN NNN", " N N "}},
|
2018-10-30 11:08:50 +01:00
|
|
|
'N', Blocks.NETHER_BRICK,
|
|
|
|
'R', Blocks.RED_NETHER_BRICK,
|
|
|
|
'0', ModBlocks.POTION_GENERATOR,
|
|
|
|
' ', anyMatcher()
|
2018-10-28 13:46:09 +01:00
|
|
|
).setSymmetrical(true);
|
2018-10-30 11:08:50 +01:00
|
|
|
|
|
|
|
private static IStateMatcher anyMatcher() {
|
|
|
|
return PatchouliAPI.instance.anyMatcher();
|
|
|
|
}
|
|
|
|
|
|
|
|
private static IStateMatcher matcher(Block block, Predicate<IBlockState> predicate) {
|
|
|
|
return PatchouliAPI.instance.predicateMatcher(block, predicate);
|
|
|
|
}
|
|
|
|
|
|
|
|
private static IMultiblock make(ResourceLocation res, String[][] pattern, Object... targets) {
|
|
|
|
IMultiblock multi = PatchouliAPI.instance.makeMultiblock(pattern, targets);
|
|
|
|
PatchouliAPI.instance.registerMultiblock(res, multi);
|
|
|
|
return multi;
|
|
|
|
}
|
2018-10-27 01:49:57 +02:00
|
|
|
}
|