Java 类net.minecraft.block.BlockBanner 实例源码
项目:BetterWithAddons
文件:BannerUtil.java
public static ItemStack getBannerItemFromBlock(World world, BlockPos pos)
{
IBlockState blockstate = world.getBlockState(pos);
if (blockstate.getBlock() instanceof BlockBanner) {
BlockBanner bannerblock = (BlockBanner) blockstate.getBlock();
return bannerblock.getItem(world, pos, blockstate);
}
return ItemStack.EMPTY;
}
项目:BetterWithAddons
文件:TileEntityBannerDetector.java
private boolean checkSupposedPoweredState()
{
final ItemStack filter = bannerInventory.getStackInSlot(0);
IBlockState blockState = world.getBlockState(pos);
EnumFacing facing = blockState.getValue(BlockBannerDetector.FACING);
boolean detected = false;
BlockPos lastPos = null;
if(!filter.isEmpty() && filter.getItem() instanceof ItemBanner) {
for (int i = 1; i <= maxdist; i++) {
BlockPos nextPos = new BlockPos(pos.offset(facing, i));
lastPos = nextPos;
if (world.isBlockLoaded(nextPos)) {
IBlockState nextState = world.getBlockState(nextPos);
if (nextState.isOpaqueCube()) break;
detected = checkBanner(nextPos,filter,BlockBanner.class);
if(!detected) detected = checkBanner(nextPos.up(), filter, BlockBanner.BlockBannerHanging.class);
if(!detected) detected = checkBanner(nextPos.down(), filter, BlockBanner.BlockBannerStanding.class);
if(detected) break;
}
}
if (!detected && maxdist > 0) {
List<Entity> entityList = world.getEntitiesWithinAABB(Entity.class, new AxisAlignedBB(this.pos, lastPos.add(1,1,1)), new Predicate<Entity>() {
@Override
public boolean apply(Entity input) {
return BannerUtil.isSameBanner(filter, input);
}
});
detected = entityList != null && entityList.size() > 0;
}
}
return detected;
}
项目:BetterWithAddons
文件:TileEntityBannerDetector.java
private boolean checkBanner(BlockPos pos, ItemStack filter, Class type)
{
IBlockState state = world.getBlockState(pos);
if (type.isInstance(state.getBlock())) {
BlockBanner bannerblock = (BlockBanner) state.getBlock();
ItemStack banner = bannerblock.getItem(world, pos, state);
return BannerUtil.isSameBanner(filter,banner);
}
return false;
}