本文整理汇总了Java中cn.nukkit.block.Block.getId方法的典型用法代码示例。如果您正苦于以下问题:Java Block.getId方法的具体用法?Java Block.getId怎么用?Java Block.getId使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类cn.nukkit.block.Block
的用法示例。
在下文中一共展示了Block.getId方法的12个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。
示例1: useOn
import cn.nukkit.block.Block; //导入方法依赖的package包/类
@Override
public boolean useOn(Block block) {
if (this.isUnbreakable() || !canReduceDamage()) {
return true;
}
if (block.getToolType() == ItemTool.TYPE_PICKAXE && this.isPickaxe() ||
block.getToolType() == ItemTool.TYPE_SHOVEL && this.isShovel() ||
block.getToolType() == ItemTool.TYPE_AXE && this.isAxe() ||
block.getToolType() == ItemTool.TYPE_SWORD && this.isSword() ||
block.getToolType() == ItemTool.SHEARS && this.isShears()
) {
this.meta++;
} else if (!this.isShears() && block.getBreakTime(this) > 0) {
this.meta += 2;
} else if (this.isHoe()) {
if (block.getId() == GRASS || block.getId() == DIRT) {
this.meta++;
}
} else {
this.meta++;
}
return true;
}
示例2: checkBlockCollision
import cn.nukkit.block.Block; //导入方法依赖的package包/类
@Override
protected void checkBlockCollision() {
boolean portal = false;
Block block = this.getLevelBlock();
if (block.getId() == Block.NETHER_PORTAL) {
portal = true;
}
block.onEntityCollide(this);
if (portal) {
inPortalTicks++;
}
}
示例3: onActivate
import cn.nukkit.block.Block; //导入方法依赖的package包/类
@Override
public boolean onActivate(Level level, Player player, Block block, Block target, BlockFace face, double fx, double fy, double fz) {
if (target.getId() == WATER || target.getId() == STILL_WATER) {
Item potion = new ItemPotion();
if (this.count == 1) {
player.getInventory().setItemInHand(potion);
} else if (this.count > 1) {
this.count--;
player.getInventory().setItemInHand(this);
if (player.getInventory().canAddItem(potion)) {
player.getInventory().addItem(potion);
} else {
player.getLevel().dropItem(player.add(0, 1.3, 0), potion, player.getDirectionVector().multiply(0.4));
}
}
}
return false;
}
示例4: checkBlockCollision
import cn.nukkit.block.Block; //导入方法依赖的package包/类
protected void checkBlockCollision() {
Vector3 vector = new Vector3(0, 0, 0);
boolean portal = false;
for (Block block : this.getCollisionBlocks()) {
if (block.getId() == Block.NETHER_PORTAL) {
portal = true;
continue;
}
block.onEntityCollide(this);
block.addVelocityToEntity(this, vector);
}
if (portal) {
inPortalTicks++;
}
if (vector.lengthSquared() > 0) {
vector = vector.normalize();
double d = 0.014d;
this.motionX += vector.x * d;
this.motionY += vector.y * d;
this.motionZ += vector.z * d;
}
}
示例5: checkBlockCollision
import cn.nukkit.block.Block; //导入方法依赖的package包/类
protected void checkBlockCollision() {
Vector3 vector = new Vector3(0, 0, 0);
boolean portal = false;
for (Block block : this.getCollisionBlocks()) {
if (block.getId() == Block.NETHER_PORTAL) {
portal = true;
continue;
}
block.onEntityCollide(this);
block.addVelocityToEntity(this, vector);
}
if (portal) {
inPortalTicks++;
} else {
this.inPortalTicks = 0;
}
if (vector.lengthSquared() > 0) {
vector = vector.normalize();
double d = 0.014d;
this.motionX += vector.x * d;
this.motionY += vector.y * d;
this.motionZ += vector.z * d;
}
}
示例6: getLineOfSight
import cn.nukkit.block.Block; //导入方法依赖的package包/类
public Block[] getLineOfSight(int maxDistance, int maxLength, Integer[] transparent) {
if (maxDistance > 120) {
maxDistance = 120;
}
if (transparent != null && transparent.length == 0) {
transparent = null;
}
List<Block> blocks = new ArrayList<>();
BlockIterator itr = new BlockIterator(this.level, this.getPosition(), this.getDirectionVector(), this.getEyeHeight(), maxDistance);
while (itr.hasNext()) {
Block block = itr.next();
blocks.add(block);
if (maxLength != 0 && blocks.size() > maxLength) {
blocks.remove(0);
}
int id = block.getId();
if (transparent == null) {
if (id != 0) {
break;
}
} else {
if (Arrays.binarySearch(transparent, id) < 0) {
break;
}
}
}
return blocks.stream().toArray(Block[]::new);
}
示例7: initEntity
import cn.nukkit.block.Block; //导入方法依赖的package包/类
@Override
protected void initEntity() {
super.initEntity();
this.setHealth(4);
this.setMaxHealth(4);
this.state = 2;
this.liveTime = this.level.rand.nextInt(3) + 1;
if (isEffect && this.level.gameRules.getBoolean("doFireTick") && (this.server.getDifficulty() >= 2)) {
Block block = this.getLevelBlock();
if (block.getId() == 0 || block.getId() == Block.TALL_GRASS) {
BlockFire fire = new BlockFire();
fire.x = block.x;
fire.y = block.y;
fire.z = block.z;
fire.level = level;
this.getLevel().setBlock(fire, fire, true);
if (fire.isBlockTopFacingSurfaceSolid(fire.down()) || fire.canNeighborBurn()) {
BlockIgniteEvent e = new BlockIgniteEvent(block, null, this, BlockIgniteEvent.BlockIgniteCause.LIGHTNING);
getServer().getPluginManager().callEvent(e);
if (!e.isCancelled()) {
level.setBlock(fire, fire, true);
level.scheduleUpdate(fire, fire.tickRate() + level.rand.nextInt(10));
}
}
}
}
}
示例8: TerrainParticle
import cn.nukkit.block.Block; //导入方法依赖的package包/类
public TerrainParticle(Vector3 pos, Block block) {
super(pos, Particle.TYPE_TERRAIN, (block.getDamage() << 8) | block.getId());
}
示例9: onActivate
import cn.nukkit.block.Block; //导入方法依赖的package包/类
@Override
public boolean onActivate(Level level, Player player, Block block, Block target, BlockFace face, double fx, double fy, double fz) {
if (block.getId() == AIR && (target instanceof BlockSolid)) {
if (target.getId() == OBSIDIAN) {
int targetX = target.getFloorX();
int targetY = target.getFloorY();
int targetZ = target.getFloorZ();
int x_max = targetX;
int x_min = targetX;
int x;
for (x = targetX + 1; level.getBlock(new Vector3(x, targetY, targetZ)).getId() == OBSIDIAN; x++) {
x_max++;
}
for (x = targetX - 1; level.getBlock(new Vector3(x, targetY, targetZ)).getId() == OBSIDIAN; x--) {
x_min--;
}
int count_x = x_max - x_min + 1;
int z_max = targetZ;
int z_min = targetZ;
int z;
for (z = targetZ + 1; level.getBlock(new Vector3(targetX, targetY, z)).getId() == OBSIDIAN; z++) {
z_max++;
}
for (z = targetZ - 1; level.getBlock(new Vector3(targetX, targetY, z)).getId() == OBSIDIAN; z--) {
z_min--;
}
int count_z = z_max - z_min + 1;
int z_max_y = targetY;
int z_min_y = targetY;
int y;
for (y = targetY; level.getBlock(new Vector3(targetX, y, z_max)).getId() == OBSIDIAN; y++) {
z_max_y++;
}
for (y = targetY; level.getBlock(new Vector3(targetX, y, z_min)).getId() == OBSIDIAN; y++) {
z_min_y++;
}
int y_max = Math.min(z_max_y, z_min_y) - 1;
int count_y = y_max - targetY + 2;
if ((count_x >= 4 && count_x <= 23 || count_z >= 4 && count_z <= 23) && count_y >= 5 && count_y <= 23) {
int count_up = 0;
for (int up_z = z_min; level.getBlock(new Vector3(targetX, y_max, up_z)).getId() == OBSIDIAN && up_z <= z_max; up_z++) {
count_up++;
}
if (count_up == count_z) {
for (int block_z = z_min + 1; block_z < z_max; block_z++) {
for (int block_y = targetY + 1; block_y < y_max; block_y++) {
level.setBlock(new Vector3(targetX, block_y, block_z), new BlockNetherPortal());
}
}
return true;
}
}
}
BlockFire fire = new BlockFire();
fire.x = block.x;
fire.y = block.y;
fire.z = block.z;
fire.level = level;
if (fire.isBlockTopFacingSurfaceSolid(fire.down()) || fire.canNeighborBurn()) {
BlockIgniteEvent e = new BlockIgniteEvent(block, null, player, BlockIgniteEvent.BlockIgniteCause.FLINT_AND_STEEL);
block.getLevel().getServer().getPluginManager().callEvent(e);
if (!e.isCancelled()) {
level.setBlock(fire, fire, true);
level.scheduleUpdate(fire, fire.tickRate() + level.rand.nextInt(10));
}
return true;
}
if ((player.gamemode & 0x01) == 0 && this.useOn(block)) {
if (this.getDamage() >= this.getMaxDurability()) {
player.getInventory().setItemInHand(new Item(Item.AIR, 0, 0));
} else {
this.meta++;
player.getInventory().setItemInHand(this);
}
}
return true;
}
return false;
}
示例10: DestroyBlockParticle
import cn.nukkit.block.Block; //导入方法依赖的package包/类
public DestroyBlockParticle(Vector3 pos, Block block) {
super(pos.x, pos.y, pos.z);
this.data = block.getId() | (block.getDamage() << 8);
}
示例11: PunchBlockParticle
import cn.nukkit.block.Block; //导入方法依赖的package包/类
public PunchBlockParticle(Vector3 pos, Block block, BlockFace face) {
this(pos, block.getId(), block.getDamage(), face);
}
示例12: onUpdate
import cn.nukkit.block.Block; //导入方法依赖的package包/类
@Override
public boolean onUpdate(int currentTick) {
if (this.closed) {
return false;
}
int tickDiff = currentTick - this.lastUpdate;
if (tickDiff <= 0 && !this.justCreated) {
return true;
}
this.lastUpdate = currentTick;
this.entityBaseTick(tickDiff);
if (this.state == 2) {
this.level.addLevelSoundEvent(LevelSoundEventPacket.SOUND_THUNDER, 93, -1, this, false, false);
this.level.addLevelSoundEvent(LevelSoundEventPacket.SOUND_EXPLODE, 93, -1, this, false, false);
}
this.state--;
if (this.state < 0) {
if (this.liveTime == 0) {
this.close();
return false;
} else if (this.state < -this.level.rand.nextInt(10)) {
this.liveTime--;
this.state = 1;
if (this.isEffect && this.level.gameRules.getBoolean("doFireTick")) {
Block block = this.getLevelBlock();
if (block.getId() == Block.AIR || block.getId() == Block.TALL_GRASS) {
BlockIgniteEvent e = new BlockIgniteEvent(block, null, this, BlockIgniteEvent.BlockIgniteCause.LIGHTNING);
getServer().getPluginManager().callEvent(e);
if (!e.isCancelled()) {
Block fire = new BlockFire();
this.level.setBlock(block, fire);
this.getLevel().scheduleUpdate(fire, fire.tickRate());
}
}
}
}
}
if (this.state >= 0) {
if (this.isEffect) {
AxisAlignedBB bb = getBoundingBox().grow(3, 3, 3);
bb.maxX += 6;
for (Entity entity : this.level.getCollidingEntities(bb, this)) {
entity.onStruckByLightning(this);
}
}
}
return true;
}