本文整理了Java中org.bukkit.util.Vector.getBlockX()
方法的一些代码示例,展示了Vector.getBlockX()
的具体用法。这些代码示例主要来源于Github
/Stackoverflow
/Maven
等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。Vector.getBlockX()
方法的具体详情如下:
包路径:org.bukkit.util.Vector
类名称:Vector
方法名:getBlockX
[英]Gets the floored value of the X component, indicating the block that this vector is contained with.
[中]获取X分量的下限值,指示包含此向量的块。
代码示例来源:origin: GlowstoneMC/Glowstone
/**
* Whether this box intersects the given vertically-infinite box.
*
* @param minX the minimum X coordinate
* @param minZ the minimum Z coordinate
* @param maxX the maximum X coordinate
* @param maxZ the maximum Z coordinate
* @return true if the given box intersects this box; false otherwise
*/
public boolean intersectsWith(int minX, int minZ, int maxX, int maxZ) {
return minX <= max.getBlockX() && maxX >= min.getBlockX()
&& minZ <= max.getBlockZ() && maxZ >= min.getBlockZ();
}
代码示例来源:origin: GlowstoneMC/Glowstone
/**
* Creates a temple piece.
*
* @param random the PRNG that will choose the orientation
* @param location the root location
* @param size the size as a width-height-depth vector
*/
public GlowTemplePiece(Random random, Location location, Vector size) {
super(random, location, size);
width = size.getBlockX();
height = size.getBlockY();
depth = size.getBlockZ();
}
代码示例来源:origin: GlowstoneMC/Glowstone
/**
* Checks whether the given point is inside a block that intersects this box.
*
* @param vec the point to check
* @return true if this box intersects the block containing {@code vec}
*/
public boolean isVectorInside(Vector vec) {
return vec.getBlockX() >= min.getBlockX() && vec.getBlockX() <= max.getBlockX()
&& vec.getBlockY() >= min.getBlockY() && vec.getBlockY() <= max.getBlockY()
&& vec.getBlockZ() >= min.getBlockZ() && vec.getBlockZ() <= max.getBlockZ();
}
代码示例来源:origin: GlowstoneMC/Glowstone
/**
* Changes this bounding box to the bounding box of the union of itself and another bounding
* box.
*
* @param boundingBox the other bounding box to contain
*/
public void expandTo(StructureBoundingBox boundingBox) {
min = new Vector(Math.min(min.getBlockX(), boundingBox.getMin().getBlockX()),
Math.min(min.getBlockY(), boundingBox.getMin().getBlockY()),
Math.min(min.getBlockZ(), boundingBox.getMin().getBlockZ()));
max = new Vector(Math.max(max.getBlockX(), boundingBox.getMax().getBlockX()),
Math.max(max.getBlockY(), boundingBox.getMax().getBlockY()),
Math.max(max.getBlockZ(), boundingBox.getMax().getBlockZ()));
}
代码示例来源:origin: GlowstoneMC/Glowstone
/**
* Write an encoded block vector (position) to the buffer.
*
* @param buf The buffer.
* @param vector The vector to write.
*/
public static void writeBlockPosition(ByteBuf buf, Vector vector) {
writeBlockPosition(buf, vector.getBlockX(), vector.getBlockY(), vector.getBlockZ());
}
代码示例来源:origin: GlowstoneMC/Glowstone
/**
* Used to get the locations that neighbor a vector's faces.
* @param vector The vector we're grabbing the face neighbors of.
*
* @return A set of vector's that neighbor the specified vector's faces.
*/
default Set<Vector> getFaceNeighbors(final Vector vector) {
Vector[] faces = new Vector[] {
new Vector(vector.getBlockX() + 1, vector.getBlockY(), vector.getBlockZ()),
new Vector(vector.getBlockX() - 1, vector.getBlockY(), vector.getBlockZ()),
new Vector(vector.getBlockX(), vector.getBlockY() + 1, vector.getBlockZ()),
new Vector(vector.getBlockX(), vector.getBlockY() - 1, vector.getBlockZ()),
new Vector(vector.getBlockX(), vector.getBlockY(), vector.getBlockZ() + 1),
new Vector(vector.getBlockX(), vector.getBlockY(), vector.getBlockZ() - 1)
};
return Sets.newHashSet(faces);
}
代码示例来源:origin: GlowstoneMC/Glowstone
/**
* Used to get the locations that neighbor a vector's corners.
* @param vector The vector we're grabbing the corner neighbors of.
*
* @return A set of vector's that neighbor the specified vector's corners.
*/
default Set<Vector> getCornerNeighbors(final Vector vector) {
Vector[] faces = new Vector[] {
new Vector(vector.getBlockX() + 1, vector.getBlockY() - 1, vector.getBlockZ() + 1),
new Vector(vector.getBlockX() + 1, vector.getBlockY() - 1, vector.getBlockZ() - 1),
new Vector(vector.getBlockX() + 1, vector.getBlockY() + 1, vector.getBlockZ() + 1),
new Vector(vector.getBlockX() + 1, vector.getBlockY() + 1, vector.getBlockZ() - 1),
new Vector(vector.getBlockX() - 1, vector.getBlockY() + 1, vector.getBlockZ() + 1),
new Vector(vector.getBlockX() - 1, vector.getBlockY() + 1, vector.getBlockZ() - 1),
new Vector(vector.getBlockX() - 1, vector.getBlockY() - 1, vector.getBlockZ() + 1),
new Vector(vector.getBlockX() - 1, vector.getBlockY() - 1, vector.getBlockZ() - 1)
};
return Sets.newHashSet(faces);
}
}
代码示例来源:origin: GlowstoneMC/Glowstone
/**
* Whether this box intersects the given box.
*
* @param boundingBox the box to check intersection with
* @return true if the given box intersects this box; false otherwise
*/
public boolean intersectsWith(StructureBoundingBox boundingBox) {
return boundingBox.getMin().getBlockX() <= max.getBlockX()
&& boundingBox.getMax().getBlockX() >= min.getBlockX()
&& boundingBox.getMin().getBlockY() <= max.getBlockY()
&& boundingBox.getMax().getBlockY() >= min.getBlockY()
&& boundingBox.getMin().getBlockZ() <= max.getBlockZ()
&& boundingBox.getMax().getBlockZ() >= min.getBlockZ();
}
代码示例来源:origin: GlowstoneMC/Glowstone
public BlockState getBlockState(Vector pos) {
Vector vec = translate(pos);
return delegate.getBlockState(world, vec.getBlockX(), vec.getBlockY(), vec.getBlockZ());
}
代码示例来源:origin: GlowstoneMC/Glowstone
private int countAvailableBlocks(Vector from, Vector to, World world) {
int n = 0;
Vector target = to.subtract(from);
int maxDistance = Math.max(Math.abs(target.getBlockY()),
Math.max(Math.abs(target.getBlockX()), Math.abs(target.getBlockZ())));
float dx = (float) target.getX() / maxDistance;
float dy = (float) target.getY() / maxDistance;
float dz = (float) target.getZ() / maxDistance;
for (int i = 0; i <= maxDistance; i++, n++) {
target = from.clone()
.add(new Vector((double) (0.5F + i * dx), 0.5F + i * dy, 0.5F + i * dz));
if (target.getBlockY() < 0 || target.getBlockY() > 255
|| !overridables.contains(blockTypeAt(
target.getBlockX(), target.getBlockY(), target.getBlockZ(), world))) {
return n;
}
}
return -1;
}
代码示例来源:origin: GlowstoneMC/Glowstone
/**
* Creates a structure piece.
*
* @param random the PRNG that will choose the orientation
* @param location the root location
* @param size the size as a width-height-depth vector
*/
public GlowStructurePiece(Random random, Location location, Vector size) {
orientation = getOrientationFromOrdinal(random.nextInt(4));
switch (orientation) {
case EAST:
case WEST:
size = new Vector(size.getBlockZ(), size.getBlockY(), size.getBlockX());
break;
default:
break;
}
createNewBoundingBox(location, size);
}
代码示例来源:origin: GlowstoneMC/Glowstone
/**
* Sets the block at a given point, if it is inside this structure's bounding box.
*
* @param pos a point relative to this structure's root point
* @param type the new block type
* @param data the new block data
*/
public void setBlock(Vector pos, Material type, MaterialData data) {
Vector vec = translate(pos);
if (boundingBox.isVectorInside(vec)) {
delegate.setTypeAndData(world, vec.getBlockX(), vec.getBlockY(), vec.getBlockZ(), type,
data);
}
}
代码示例来源:origin: GlowstoneMC/Glowstone
private Vector translate(Vector pos) {
StructureBoundingBox boundingBox = structure.getBoundingBox();
switch (structure.getOrientation()) {
case EAST:
return new Vector(boundingBox.getMax().getBlockX() - pos.getBlockZ(),
boundingBox.getMin().getBlockY() + pos.getBlockY(),
boundingBox.getMin().getBlockZ() + pos.getBlockX());
case SOUTH:
return new Vector(boundingBox.getMin().getBlockX() + pos.getBlockX(),
boundingBox.getMin().getBlockY() + pos.getBlockY(),
boundingBox.getMax().getBlockZ() - pos.getBlockZ());
case WEST:
return new Vector(boundingBox.getMin().getBlockX() + pos.getBlockZ(),
boundingBox.getMin().getBlockY() + pos.getBlockY(),
boundingBox.getMin().getBlockZ() + pos.getBlockX());
default: // NORTH
return new Vector(boundingBox.getMin().getBlockX() + pos.getBlockX(),
boundingBox.getMin().getBlockY() + pos.getBlockY(),
boundingBox.getMin().getBlockZ() + pos.getBlockZ());
}
}
代码示例来源:origin: GlowstoneMC/Glowstone
/**
* Sets a box of blocks to have random types, chosen independently.
*
* @param min the minimum coordinates, relative to this structure's root point
* @param max the maximum coordinates, relative to this structure's root point
* @param random the PRNG to use
* @param materials a map of possible blocks to integer weights
*/
public void fillWithRandomMaterial(Vector min, Vector max, Random random,
Map<StructureMaterial, Integer> materials) {
for (int y = min.getBlockY(); y <= max.getBlockY(); y++) {
for (int x = min.getBlockX(); x <= max.getBlockX(); x++) {
for (int z = min.getBlockZ(); z <= max.getBlockZ(); z++) {
StructureMaterial material = getRandomMaterial(random, materials);
setBlock(new Vector(x, y, z), material.getType(), material.getData());
}
}
}
}
代码示例来源:origin: GlowstoneMC/Glowstone
/**
* Sets the block at a given point, if it is inside this builder's bounding box.
*
* @param pos a point relative to this structure's root point
* @param type the new block type
* @param data the new block data
*/
public void setBlock(Vector pos, Material type, int data) {
Vector vec = translate(pos);
if (boundingBox.isVectorInside(vec)) {
delegate
.setTypeAndRawData(world, vec.getBlockX(), vec.getBlockY(), vec
.getBlockZ(), type,
data);
}
}
代码示例来源:origin: GlowstoneMC/Glowstone
/**
* Builds a 1x1 column out of the given block, replacing non-solid blocks starting at a given
* location and proceeding downward until a solid block is reached.
*
* @param pos the highest point to possibly replace, relative to this structure's root
* point
* @param type the block type to fill
* @param data the block data
*/
public void setBlockDownward(Vector pos, Material type, int data) {
Vector vec = translate(pos);
if (boundingBox.isVectorInside(vec)) {
int y = vec.getBlockY();
while (!world.getBlockAt(vec.getBlockX(), y, vec.getBlockZ()).getType().isSolid()
&& y > 1) {
delegate.setTypeAndRawData(world, vec.getBlockX(), y, vec.getBlockZ(), type, data);
y--;
}
}
}
代码示例来源:origin: GlowstoneMC/Glowstone
/**
* Spawns an entity if the given position is within this structure's bounding box.
*
* @param pos a point relative to this structure's root point
* @param entityType the type of entity to spawn
* @return true if the entity was spawned; false if {@code pos} is outside the builder's
* bounding box or {@link World#spawnEntity(Location, EntityType)} fails
*/
public boolean spawnMob(Vector pos, EntityType entityType) {
Vector vec = translate(pos);
return boundingBox.isVectorInside(vec) && world
.spawnEntity(new Location(world, vec.getBlockX(), vec.getBlockY(), vec.getBlockZ()),
entityType) != null;
}
代码示例来源:origin: GlowstoneMC/Glowstone
/**
* Sets the given block to a spawner for the given entity type.
*
* @param pos a point relative to this structure's root point
* @param entityType the type of entity the spawner will spawn
*/
public void createMobSpawner(Vector pos, EntityType entityType) {
Vector vec = translate(pos);
if (boundingBox.isVectorInside(vec)) {
BlockState state = world.getBlockAt(vec.getBlockX(), vec.getBlockY(), vec.getBlockZ())
.getState();
delegate.backupBlockState(state.getBlock());
state.setType(Material.MOB_SPAWNER);
state.update(true);
state = world.getBlockAt(vec.getBlockX(), vec.getBlockY(), vec.getBlockZ()).getState();
if (state instanceof CreatureSpawner) {
((CreatureSpawner) state).setSpawnedType(entityType);
}
}
}
代码示例来源:origin: GlowstoneMC/Glowstone
/**
* Save information about this structure piece to the given tag.
*
* @param structurePiece The structure piece to save.
* @param compound The target tag.
*/
public void save(T structurePiece, CompoundTag compound) {
compound.putInt("GD", structurePiece.getUnknownGd());
compound.putInt("O", structurePiece.getNumericOrientation());
StructureBoundingBox boundingBox = structurePiece.getBoundingBox();
int[] bb = new int[6];
bb[0] = boundingBox.getMin().getBlockX();
bb[1] = boundingBox.getMin().getBlockY();
bb[2] = boundingBox.getMin().getBlockZ();
bb[3] = boundingBox.getMax().getBlockX();
bb[4] = boundingBox.getMax().getBlockY();
bb[5] = boundingBox.getMax().getBlockZ();
compound.putIntArray("BB", bb);
}
}
代码示例来源:origin: GlowstoneMC/Glowstone
private void createNewBoundingBox(Location location, Vector size) {
Vector min = new Vector(location.getBlockX(), location.getBlockY(), location.getBlockZ());
Vector max = new Vector(location.getBlockX() + size.getBlockX() - 1,
location.getBlockY() + size.getBlockY() - 1,
location.getBlockZ() + size.getBlockZ() - 1);
boundingBox = new StructureBoundingBox(min, max);
}
内容来源于网络,如有侵权,请联系作者删除!