@SuppressWarnings({ "rawtypes", "unchecked" }) private IBlockState applyProperties(BlockStateContainer stateContainer, IBlockState newState, Map<Property<?>, Object> states) { for (Map.Entry<Property<?>, Object> state : states.entrySet()) { IProperty property = stateContainer.getProperty(state.getKey().getName()); Comparable value = (Comparable) state.getValue(); // we may need to adapt this value, depending on the source prop if (property instanceof PropertyDirection) { Direction dir = (Direction) value; value = ForgeAdapter.adapt(dir); } else if (property instanceof PropertyEnum) { String enumName = (String) value; value = ((PropertyEnum<?>) property).parseValue((String) value).or(() -> { throw new IllegalStateException("Enum property " + property.getName() + " does not contain " + enumName); }); } newState = newState.withProperty(property, value); } return newState; }
@Nonnull @Override public IBlockState getStateFromMeta(int meta) { return getDefaultState().withProperty(BotaniaStateProps.POWERED, meta == 1); }
@Nonnull @Override public IBlockState getStateFromMeta(int meta) { return getDefaultState().withProperty(BotaniaStateProps.POWERED, meta == 8); }
@Nonnull @Override public IBlockState getStateFromMeta(int meta) { return getDefaultState().withProperty(BotaniaStateProps.POWERED, meta == 8); }
@Nonnull @Override public IBlockState getActualState(@Nonnull IBlockState state, IBlockAccess worldIn, BlockPos pos) { TileEntity te = worldIn instanceof ChunkCache ? ((ChunkCache)worldIn).getTileEntity(pos, Chunk.EnumCreateEntityType.CHECK) : worldIn.getTileEntity(pos); if (te instanceof TileAltar) { TileAltar altar = (TileAltar) te; if (altar.isMossy) { state = state.withProperty(BotaniaStateProps.ALTAR_VARIANT, AltarVariant.MOSSY); } } return state; }
@Nonnull @Override public IBlockState getStateFromMeta(int meta) { if (meta < 2 || meta > 5) { meta = 2; } return getDefaultState().withProperty(BotaniaStateProps.CARDINALS, EnumFacing.byIndex(meta)); }
@Nonnull @Override public IBlockState getStateFromMeta(int meta) { return getDefaultState().withProperty(BotaniaStateProps.FACING, EnumFacing.byIndex(meta)); }
public static void placeDoubleFlower(World world, BlockPos pos, EnumDyeColor color, int flags) { Block flower = color.getMetadata() >= 8 ? ModBlocks.doubleFlower2 : ModBlocks.doubleFlower1; world.setBlockState(pos, flower.getDefaultState().withProperty(color.getMetadata() >= 8 ? BotaniaStateProps.DOUBLEFLOWER_VARIANT_2 : BotaniaStateProps.DOUBLEFLOWER_VARIANT_1, color).withProperty(BlockDoublePlant.HALF, BlockDoublePlant.EnumBlockHalf.LOWER), flags); world.setBlockState(pos.up(), flower.getDefaultState().withProperty(color.getMetadata() >= 8 ? BotaniaStateProps.DOUBLEFLOWER_VARIANT_2 : BotaniaStateProps.DOUBLEFLOWER_VARIANT_1, color).withProperty(BlockDoublePlant.HALF, BlockDoublePlant.EnumBlockHalf.UPPER), flags); }
@Nonnull @Override public IBlockState getStateFromMeta(int meta) { if (meta >= BiomeBrickVariant.values().length) { meta = 0; } return getDefaultState().withProperty(BotaniaStateProps.BIOMEBRICK_VARIANT, BiomeBrickVariant.values()[meta]); }
@Nonnull @Override public IBlockState getStateFromMeta(int meta) { if (meta >= LivingRockVariant.values().length) { meta = 0; } return getDefaultState().withProperty(BotaniaStateProps.LIVINGROCK_VARIANT, LivingRockVariant.values()[meta]); }
public BlockPump() { super(Material.ROCK, LibBlockNames.PUMP); setHardness(2.0F); setResistance(10.0F); setSoundType(SoundType.STONE); setDefaultState(blockState.getBaseState().withProperty(Properties.StaticProperty, true).withProperty(BotaniaStateProps.CARDINALS, EnumFacing.SOUTH)); }
@Override public void neighborChanged(IBlockState state, World world, BlockPos pos, Block block, BlockPos fromPos) { boolean power = world.getRedstonePowerFromNeighbors(pos) > 0 || world.getRedstonePowerFromNeighbors(pos.up()) > 0; boolean powered = state.getValue(BotaniaStateProps.POWERED); if(!world.isRemote) { if(power && !powered) world.setBlockState(pos, state.withProperty(BotaniaStateProps.POWERED, true), 1 | 2); else if(!power && powered) world.setBlockState(pos, state.withProperty(BotaniaStateProps.POWERED, false), 1 | 2); } }
public BlockTinyPotato() { super(Material.CLOTH, LibBlockNames.TINY_POTATO); setHardness(0.25F); setDefaultState(blockState.getBaseState() .withProperty(BotaniaStateProps.CARDINALS, EnumFacing.SOUTH)); }
@Override public void neighborChanged(IBlockState state, World world, BlockPos pos, Block block, BlockPos fromPos) { boolean power = world.getRedstonePowerFromNeighbors(pos) > 0|| world.getRedstonePowerFromNeighbors(pos.up()) > 0; boolean powered = state.getValue(BotaniaStateProps.POWERED); if(power && !powered) { pickUpEntities(world, pos); world.setBlockState(pos, state.withProperty(BotaniaStateProps.POWERED, true), 4); } else if(!power && powered) world.setBlockState(pos, state.withProperty(BotaniaStateProps.POWERED, false), 4); }
@SideOnly(Side.CLIENT) @Override public void registerModels() { int i = 0; for(LuminizerVariant v : LuminizerVariant.values()) ModelHandler.registerBlockToState(this, i++, getDefaultState().withProperty(BotaniaStateProps.LUMINIZER_VARIANT, v)); }
public BlockForestDrum() { super(Material.WOOD, LibBlockNames.FOREST_DRUM); setHardness(2.0F); setSoundType(SoundType.WOOD); setDefaultState(blockState.getBaseState().withProperty(BotaniaStateProps.DRUM_VARIANT, DrumVariant.WILD)); }
public BlockLightLauncher() { super(Material.WOOD, LibBlockNames.LIGHT_LAUNCHER); setHardness(2.0F); setSoundType(SoundType.WOOD); setDefaultState(blockState.getBaseState().withProperty(BotaniaStateProps.POWERED, false)); }
public BlockLivingrockBrickSlab(boolean full) { super(full, ModBlocks.livingrock.getDefaultState().withProperty(BotaniaStateProps.LIVINGROCK_VARIANT, LivingRockVariant.BRICK)); setHardness(2.0F); setResistance(10.0F); setSoundType(SoundType.STONE); }
@Override public void onBlockPlacedBy(World world, BlockPos pos, IBlockState state, EntityLivingBase par5EntityLiving, ItemStack par6ItemStack) { world.setBlockState(pos, state.withProperty(BotaniaStateProps.CARDINALS, par5EntityLiving.getHorizontalFacing().getOpposite())); if (par6ItemStack.hasDisplayName()) ((TileTinyPotato) world.getTileEntity(pos)).name = par6ItemStack.getDisplayName(); }
public BlockModMushroom() { setRegistryName(new ResourceLocation(LibMisc.MOD_ID, LibBlockNames.MUSHROOM)); setTranslationKey(LibBlockNames.MUSHROOM); setLightLevel(0.2F); setHardness(0F); setSoundType(SoundType.PLANT); setTickRandomly(false); setCreativeTab(BotaniaCreativeTab.INSTANCE); setDefaultState(blockState.getBaseState().withProperty(BotaniaStateProps.COLOR, EnumDyeColor.WHITE)); }