2023-05-25 20:02:08 +02:00
|
|
|
package com.minelittlepony.unicopia.block;
|
|
|
|
|
|
|
|
import net.minecraft.block.AbstractBlock;
|
2023-06-02 21:20:30 +02:00
|
|
|
import net.minecraft.block.BlockSetType;
|
2023-05-25 20:02:08 +02:00
|
|
|
import net.minecraft.block.BlockState;
|
|
|
|
import net.minecraft.block.ButtonBlock;
|
|
|
|
import net.minecraft.block.LeavesBlock;
|
|
|
|
import net.minecraft.block.MapColor;
|
|
|
|
import net.minecraft.block.Material;
|
|
|
|
import net.minecraft.block.PillarBlock;
|
|
|
|
import net.minecraft.entity.EntityType;
|
|
|
|
import net.minecraft.sound.BlockSoundGroup;
|
|
|
|
import net.minecraft.util.math.BlockPos;
|
|
|
|
import net.minecraft.util.math.Direction;
|
|
|
|
import net.minecraft.world.BlockView;
|
|
|
|
|
|
|
|
interface BlockConstructionUtils {
|
|
|
|
static ButtonBlock woodenButton() {
|
2023-06-02 21:20:30 +02:00
|
|
|
return woodenButton(BlockSoundGroup.WOOD, BlockSetType.OAK);
|
2023-05-25 20:02:08 +02:00
|
|
|
}
|
|
|
|
|
2023-06-02 21:20:30 +02:00
|
|
|
static ButtonBlock woodenButton(BlockSoundGroup soundGroup, BlockSetType setType) {
|
|
|
|
return new ButtonBlock(AbstractBlock.Settings.of(Material.DECORATION).noCollision().strength(0.5f).sounds(soundGroup), setType, 30, true);
|
2023-05-25 20:02:08 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
static boolean never(BlockState state, BlockView world, BlockPos pos, EntityType<?> type) {
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
|
|
|
static boolean never(BlockState state, BlockView world, BlockPos pos) {
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
|
|
|
static PillarBlock createLogBlock(MapColor topMapColor, MapColor sideMapColor) {
|
|
|
|
return new PillarBlock(AbstractBlock.Settings.of(Material.WOOD, state -> state.get(PillarBlock.AXIS) == Direction.Axis.Y ? topMapColor : sideMapColor).strength(2).sounds(BlockSoundGroup.WOOD));
|
|
|
|
}
|
|
|
|
|
|
|
|
static PillarBlock createWoodBlock(MapColor mapColor) {
|
|
|
|
return new PillarBlock(AbstractBlock.Settings.of(Material.WOOD, mapColor).strength(2).sounds(BlockSoundGroup.WOOD));
|
|
|
|
}
|
|
|
|
|
|
|
|
static LeavesBlock createLeavesBlock(BlockSoundGroup soundGroup) {
|
|
|
|
return new LeavesBlock(AbstractBlock.Settings.of(Material.LEAVES).strength(0.2F).ticksRandomly().sounds(soundGroup).nonOpaque().allowsSpawning(BlockConstructionUtils::canSpawnOnLeaves).suffocates(BlockConstructionUtils::never).blockVision(BlockConstructionUtils::never));
|
|
|
|
}
|
|
|
|
|
|
|
|
static Boolean canSpawnOnLeaves(BlockState state, BlockView world, BlockPos pos, EntityType<?> type) {
|
|
|
|
return type == EntityType.OCELOT || type == EntityType.PARROT;
|
|
|
|
}
|
|
|
|
}
|