下面列出了org.bukkit.block.Skull#setRawData ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。
@SuppressWarnings("deprecation")
public boolean set(Block block) {
Skull skull = (Skull) block.getState();
if(skullOwnerName != null){
skull.setOwner(skullOwnerName);
}
skull.setSkullType(skullType);
skull.setRotation(skullRotation);
skull.setRawData((byte) skullStanding);
// Texture update
if(skullTextureValue != null){
setSkullWithNonPlayerProfile(skullTextureValue, skullTextureSignature, skullOwnerUUID, skullOwnerName, skull);
}
skull.update(true, false);
return true;
}
@SuppressWarnings("deprecation")
public void update(Map<String, Statistic> statistics, boolean forceBlocks, boolean delete) {
BlockFace2D rightDir = direction.right();
BlockFace2D leftDir = direction.left();
BlockFace rightFace = rightDir.getBlockFace3D();
BlockFace leftFace = leftDir.getBlockFace3D();
Block baseBlock = baseLocation.getBlock();
if (delete) {
baseBlock.setType(Material.AIR);
}
SignLayout layout = layoutConfig.getLayout();
Iterator<Entry<String, Statistic>> iterator = statistics != null ? statistics.entrySet().iterator() : null;
for (int i = 0; i < size.getStatisticAmount(); i++) {
Entry<String, Statistic> entry = iterator != null && iterator.hasNext() ? iterator.next() : null;
Block position = null;
Material type = null;
switch (i) {
case 0:
//Top
position = baseBlock.getRelative(BlockFace.UP);
type = Material.DIAMOND_BLOCK;
break;
case 1:
//First left
position = baseBlock.getRelative(leftFace);
type = Material.GOLD_BLOCK;
break;
case 2:
//First right
position = baseBlock.getRelative(rightFace);
type = Material.IRON_BLOCK;
break;
case 3:
//Second left
position = baseBlock.getRelative(leftFace, 2);
type = Material.DOUBLE_STEP;
break;
case 4:
//Second right
position = baseBlock.getRelative(rightFace, 2);
type = Material.DOUBLE_STEP;
break;
}
if (position == null) {
continue;
}
Block signBlock = position.getRelative(direction.getBlockFace3D());
Block skullBlock = position.getRelative(BlockFace.UP);
if (delete) {
signBlock.setType(Material.AIR);
skullBlock.setType(Material.AIR);
position.setType(Material.AIR);
continue;
}
if (baseBlock.getType() == Material.AIR || forceBlocks) {
baseBlock.setType(Material.DOUBLE_STEP);
}
if (position.getType() == Material.AIR || forceBlocks) {
position.setType(type);
}
if (entry == null) {
continue;
}
/* For legacy reasons and compatibility */
signBlock.setTypeId(Material.WALL_SIGN.getId(), false);
skullBlock.setTypeId(Material.SKULL.getId(), false);
Skull skull = (Skull) skullBlock.getState();
skull.setRotation(direction.getBlockFace3D());
skull.setSkullType(SkullType.PLAYER);
skull.setOwner(entry.getKey());
skull.setRawData(SKULL_ON_FLOOR);
skull.update(true, false);
Sign sign = (Sign) signBlock.getState();
Set<Variable> variables = Sets.newHashSet();
entry.getValue().supply(variables, null);
variables.add(new Variable("player", entry.getKey()));
variables.add(new Variable("rank", i + 1));
layout.inflate(sign, variables);
org.bukkit.material.Sign data = new org.bukkit.material.Sign(Material.WALL_SIGN);
data.setFacingDirection(direction.getBlockFace3D());
sign.setData(data);
sign.update();
}
}