Mirror von
https://github.com/IntellectualSites/FastAsyncWorldEdit.git
synchronisiert 2024-11-08 12:30:05 +01:00
Add support for skull blocks.
Dieser Commit ist enthalten in:
Ursprung
f2d561dae1
Commit
57327fd37f
@ -32,6 +32,7 @@ import com.sk89q.worldedit.blocks.FurnaceBlock;
|
|||||||
import com.sk89q.worldedit.blocks.MobSpawnerBlock;
|
import com.sk89q.worldedit.blocks.MobSpawnerBlock;
|
||||||
import com.sk89q.worldedit.blocks.NoteBlock;
|
import com.sk89q.worldedit.blocks.NoteBlock;
|
||||||
import com.sk89q.worldedit.blocks.SignBlock;
|
import com.sk89q.worldedit.blocks.SignBlock;
|
||||||
|
import com.sk89q.worldedit.blocks.SkullBlock;
|
||||||
import com.sk89q.worldedit.foundation.Block;
|
import com.sk89q.worldedit.foundation.Block;
|
||||||
import com.sk89q.worldedit.foundation.World;
|
import com.sk89q.worldedit.foundation.World;
|
||||||
import com.sk89q.worldedit.regions.Region;
|
import com.sk89q.worldedit.regions.Region;
|
||||||
@ -591,6 +592,12 @@ public abstract class LocalWorld implements World {
|
|||||||
return block;
|
return block;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
case BlockID.HEAD: {
|
||||||
|
SkullBlock block = new SkullBlock(data);
|
||||||
|
copyFromWorld(pt, block);
|
||||||
|
return block;
|
||||||
|
}
|
||||||
|
|
||||||
default:
|
default:
|
||||||
return new BaseBlock(type, data);
|
return new BaseBlock(type, data);
|
||||||
}
|
}
|
||||||
|
@ -59,6 +59,7 @@ import com.sk89q.worldedit.blocks.ItemType;
|
|||||||
import com.sk89q.worldedit.blocks.MobSpawnerBlock;
|
import com.sk89q.worldedit.blocks.MobSpawnerBlock;
|
||||||
import com.sk89q.worldedit.blocks.NoteBlock;
|
import com.sk89q.worldedit.blocks.NoteBlock;
|
||||||
import com.sk89q.worldedit.blocks.SignBlock;
|
import com.sk89q.worldedit.blocks.SignBlock;
|
||||||
|
import com.sk89q.worldedit.blocks.SkullBlock;
|
||||||
import com.sk89q.worldedit.commands.BiomeCommands;
|
import com.sk89q.worldedit.commands.BiomeCommands;
|
||||||
import com.sk89q.worldedit.commands.ChunkCommands;
|
import com.sk89q.worldedit.commands.ChunkCommands;
|
||||||
import com.sk89q.worldedit.commands.ClipboardCommands;
|
import com.sk89q.worldedit.commands.ClipboardCommands;
|
||||||
@ -540,6 +541,43 @@ public class WorldEdit {
|
|||||||
return new NoteBlock(data, (byte) 0);
|
return new NoteBlock(data, (byte) 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
case HEAD:
|
||||||
|
// allow setting type/player/rotation
|
||||||
|
if (blockAndExtraData.length > 1) {
|
||||||
|
// and thus, the format shall be "|type|rotation" or "|type" or "|rotation"
|
||||||
|
byte rot = 0;
|
||||||
|
String type = "";
|
||||||
|
try {
|
||||||
|
rot = Byte.parseByte(blockAndExtraData[1]);
|
||||||
|
} catch (NumberFormatException e) {
|
||||||
|
type = blockAndExtraData[1];
|
||||||
|
if (blockAndExtraData.length > 2) {
|
||||||
|
try {
|
||||||
|
rot = Byte.parseByte(blockAndExtraData[2]);
|
||||||
|
} catch (NumberFormatException e2) {
|
||||||
|
throw new InvalidItemException(arg, "Second part of skull metadata should be a number.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
byte skullType = 0;
|
||||||
|
// type is either the mob type or the player name
|
||||||
|
// sorry for the four minecraft accounts named "skeleton", "wither", "zombie", or "creeper"
|
||||||
|
if (!type.isEmpty()) {
|
||||||
|
if (type.equalsIgnoreCase("skeleton")) skullType = 0;
|
||||||
|
else if (type.equalsIgnoreCase("wither")) skullType = 1;
|
||||||
|
else if (type.equalsIgnoreCase("zombie")) skullType = 2;
|
||||||
|
else if (type.equalsIgnoreCase("creeper")) skullType = 4;
|
||||||
|
else skullType = 3;
|
||||||
|
}
|
||||||
|
if (skullType == 3) {
|
||||||
|
return new SkullBlock(data, rot, type);
|
||||||
|
} else {
|
||||||
|
return new SkullBlock(data, skullType, rot);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
return new SkullBlock(data);
|
||||||
|
}
|
||||||
|
|
||||||
default:
|
default:
|
||||||
return new BaseBlock(blockId, data);
|
return new BaseBlock(blockId, data);
|
||||||
}
|
}
|
||||||
|
196
src/main/java/com/sk89q/worldedit/blocks/SkullBlock.java
Normale Datei
196
src/main/java/com/sk89q/worldedit/blocks/SkullBlock.java
Normale Datei
@ -0,0 +1,196 @@
|
|||||||
|
// $Id$
|
||||||
|
/*
|
||||||
|
* WorldEdit
|
||||||
|
* Copyright (C) 2010 sk89q <http://www.sk89q.com> and contributors
|
||||||
|
*
|
||||||
|
* This program is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package com.sk89q.worldedit.blocks;
|
||||||
|
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
import com.sk89q.jnbt.ByteTag;
|
||||||
|
import com.sk89q.jnbt.CompoundTag;
|
||||||
|
import com.sk89q.jnbt.StringTag;
|
||||||
|
import com.sk89q.jnbt.Tag;
|
||||||
|
import com.sk89q.worldedit.data.DataException;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A skull block.
|
||||||
|
*/
|
||||||
|
public class SkullBlock extends BaseBlock implements TileEntityBlock {
|
||||||
|
|
||||||
|
private String owner = ""; // notchian
|
||||||
|
private byte skullType; // stored here for block, in damage value for item
|
||||||
|
private byte rot; // only matters if block data == 0x1 (on floor)
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Construct the skull block with a default type of skelton.
|
||||||
|
* @param data data value to set, controls placement
|
||||||
|
*/
|
||||||
|
public SkullBlock(int data) {
|
||||||
|
this(data, (byte) 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Construct the skull block with a given type.
|
||||||
|
* 0 - skeleton
|
||||||
|
* 1 - wither skelly
|
||||||
|
* 2 - zombie
|
||||||
|
* 3 - human
|
||||||
|
* 4 - creeper
|
||||||
|
* @param data data value to set, controls placement
|
||||||
|
* @param type type of skull
|
||||||
|
*/
|
||||||
|
public SkullBlock(int data, byte type) {
|
||||||
|
this(data, type, (byte) 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Construct the skull block with a given type and rotation.
|
||||||
|
* @param data data value to set, controls placement
|
||||||
|
* @param type type of skull
|
||||||
|
* @param rot rotation (if on floor)
|
||||||
|
*/
|
||||||
|
public SkullBlock(int data, byte type, byte rot) {
|
||||||
|
super(BlockID.HEAD, 1);
|
||||||
|
if (type < (byte) 0 || type > (byte) 4) {
|
||||||
|
this.skullType = (byte) 0;
|
||||||
|
} else {
|
||||||
|
this.skullType = type;
|
||||||
|
}
|
||||||
|
this.rot = rot;
|
||||||
|
this.owner = "";
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Construct the skull block with a given rotation and owner.
|
||||||
|
* The type is assumed to be player unless owner is null or empty.
|
||||||
|
* @param data data value to set, controls placement
|
||||||
|
* @param rot rotation of skull
|
||||||
|
* @param owner name of player
|
||||||
|
*/
|
||||||
|
public SkullBlock(int data, byte rot, String owner) {
|
||||||
|
super(BlockID.HEAD, 1);
|
||||||
|
this.rot = rot;
|
||||||
|
this.setOwner(owner);
|
||||||
|
if (owner == null || owner.isEmpty()) this.skullType = (byte) 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set the skull's owner. Automatically sets type to player if not empty or null.
|
||||||
|
* @param owner player name to set the skull to
|
||||||
|
*/
|
||||||
|
public void setOwner(String owner) {
|
||||||
|
if (owner == null) {
|
||||||
|
this.owner = "";
|
||||||
|
} else {
|
||||||
|
if (owner.length() > 16 || owner.isEmpty()) this.owner = "";
|
||||||
|
else this.owner = owner;
|
||||||
|
}
|
||||||
|
if (this.owner != null && !this.owner.isEmpty()) this.skullType = (byte) 3;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the skull's owner. Returns null if unset.
|
||||||
|
* @return player name or null
|
||||||
|
*/
|
||||||
|
public String getOwner() {
|
||||||
|
return owner;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the type of skull.
|
||||||
|
* @return the skullType
|
||||||
|
*/
|
||||||
|
public byte getSkullType() {
|
||||||
|
return skullType;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set the type of skull;
|
||||||
|
* @param skullType the skullType to set
|
||||||
|
*/
|
||||||
|
public void setSkullType(byte skullType) {
|
||||||
|
this.skullType = skullType;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get rotation of skull. This only means anything if the block data is 1.
|
||||||
|
* @return the rotation
|
||||||
|
*/
|
||||||
|
public byte getRot() {
|
||||||
|
return rot;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set the rotation of skull.
|
||||||
|
* @param rot the rotation to set
|
||||||
|
*/
|
||||||
|
public void setRot(byte rot) {
|
||||||
|
this.rot = rot;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean hasNbtData() {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getNbtId() {
|
||||||
|
return "Skull";
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public CompoundTag getNbtData() {
|
||||||
|
Map<String, Tag> values = new HashMap<String, Tag>();
|
||||||
|
values.put("SkullType", new ByteTag("SkullType", skullType));
|
||||||
|
if (owner == null) owner = "";
|
||||||
|
values.put("ExtraType", new StringTag("ExtraType", owner));
|
||||||
|
values.put("Rot", new ByteTag("Rot", rot));
|
||||||
|
return new CompoundTag(getNbtId(), values);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setNbtData(CompoundTag rootTag) throws DataException {
|
||||||
|
if (rootTag == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
Map<String, Tag> values = rootTag.getValue();
|
||||||
|
|
||||||
|
Tag t;
|
||||||
|
|
||||||
|
t = values.get("id");
|
||||||
|
if (!(t instanceof StringTag)
|
||||||
|
|| !((StringTag) t).getValue().equals("Skull")) {
|
||||||
|
throw new DataException("'Skull' tile entity expected");
|
||||||
|
}
|
||||||
|
|
||||||
|
t = values.get("SkullType");
|
||||||
|
if (t instanceof ByteTag) {
|
||||||
|
skullType = ((ByteTag) t).getValue();
|
||||||
|
}
|
||||||
|
t = values.get("ExtraType");
|
||||||
|
if (t != null && t instanceof StringTag) {
|
||||||
|
owner = ((StringTag) t).getValue();
|
||||||
|
}
|
||||||
|
t = values.get("Rot");
|
||||||
|
if (t instanceof ByteTag) {
|
||||||
|
rot = ((ByteTag) t).getValue();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -33,15 +33,18 @@ import java.util.logging.Logger;
|
|||||||
import org.bukkit.Effect;
|
import org.bukkit.Effect;
|
||||||
import org.bukkit.Location;
|
import org.bukkit.Location;
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
|
import org.bukkit.SkullType;
|
||||||
import org.bukkit.TreeType;
|
import org.bukkit.TreeType;
|
||||||
import org.bukkit.World;
|
import org.bukkit.World;
|
||||||
import org.bukkit.block.Biome;
|
import org.bukkit.block.Biome;
|
||||||
import org.bukkit.block.Block;
|
import org.bukkit.block.Block;
|
||||||
|
import org.bukkit.block.BlockFace;
|
||||||
import org.bukkit.block.BlockState;
|
import org.bukkit.block.BlockState;
|
||||||
import org.bukkit.block.Chest;
|
import org.bukkit.block.Chest;
|
||||||
import org.bukkit.block.CreatureSpawner;
|
import org.bukkit.block.CreatureSpawner;
|
||||||
import org.bukkit.block.Furnace;
|
import org.bukkit.block.Furnace;
|
||||||
import org.bukkit.block.Sign;
|
import org.bukkit.block.Sign;
|
||||||
|
import org.bukkit.block.Skull;
|
||||||
import org.bukkit.enchantments.Enchantment;
|
import org.bukkit.enchantments.Enchantment;
|
||||||
import org.bukkit.entity.Ambient;
|
import org.bukkit.entity.Ambient;
|
||||||
import org.bukkit.entity.Animals;
|
import org.bukkit.entity.Animals;
|
||||||
@ -82,6 +85,7 @@ import com.sk89q.worldedit.blocks.FurnaceBlock;
|
|||||||
import com.sk89q.worldedit.blocks.MobSpawnerBlock;
|
import com.sk89q.worldedit.blocks.MobSpawnerBlock;
|
||||||
import com.sk89q.worldedit.blocks.NoteBlock;
|
import com.sk89q.worldedit.blocks.NoteBlock;
|
||||||
import com.sk89q.worldedit.blocks.SignBlock;
|
import com.sk89q.worldedit.blocks.SignBlock;
|
||||||
|
import com.sk89q.worldedit.blocks.SkullBlock;
|
||||||
import com.sk89q.worldedit.bukkit.entity.BukkitEntity;
|
import com.sk89q.worldedit.bukkit.entity.BukkitEntity;
|
||||||
import com.sk89q.worldedit.regions.Region;
|
import com.sk89q.worldedit.regions.Region;
|
||||||
import com.sk89q.worldedit.util.TreeGenerator;
|
import com.sk89q.worldedit.util.TreeGenerator;
|
||||||
@ -360,6 +364,95 @@ public class BukkitWorld extends LocalWorld {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (block instanceof SkullBlock) {
|
||||||
|
// Skull block
|
||||||
|
Block bukkitBlock = world.getBlockAt(pt.getBlockX(), pt.getBlockY(), pt.getBlockZ());
|
||||||
|
if (bukkitBlock == null) return false;
|
||||||
|
BlockState state = bukkitBlock.getState();
|
||||||
|
if (!(state instanceof org.bukkit.block.Skull)) return false;
|
||||||
|
Skull bukkit = (Skull) state;
|
||||||
|
SkullBlock we = (SkullBlock) block;
|
||||||
|
// this is dumb
|
||||||
|
SkullType skullType = SkullType.SKELETON;
|
||||||
|
switch (we.getSkullType()) {
|
||||||
|
case 0:
|
||||||
|
skullType = SkullType.SKELETON;
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
skullType = SkullType.WITHER;
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
skullType = SkullType.ZOMBIE;
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
skullType = SkullType.PLAYER;
|
||||||
|
break;
|
||||||
|
case 4:
|
||||||
|
skullType = SkullType.CREEPER;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
bukkit.setSkullType(skullType);
|
||||||
|
BlockFace rotation;
|
||||||
|
switch (we.getRot()) {
|
||||||
|
// soooo dumb
|
||||||
|
case 0:
|
||||||
|
rotation = BlockFace.NORTH;
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
rotation = BlockFace.NORTH_NORTH_EAST;
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
rotation = BlockFace.NORTH_EAST;
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
rotation = BlockFace.EAST_NORTH_EAST;
|
||||||
|
break;
|
||||||
|
case 4:
|
||||||
|
rotation = BlockFace.EAST;
|
||||||
|
break;
|
||||||
|
case 5:
|
||||||
|
rotation = BlockFace.EAST_SOUTH_EAST;
|
||||||
|
break;
|
||||||
|
case 6:
|
||||||
|
rotation = BlockFace.SOUTH_EAST;
|
||||||
|
break;
|
||||||
|
case 7:
|
||||||
|
rotation = BlockFace.SOUTH_SOUTH_EAST;
|
||||||
|
break;
|
||||||
|
case 8:
|
||||||
|
rotation = BlockFace.SOUTH;
|
||||||
|
break;
|
||||||
|
case 9:
|
||||||
|
rotation = BlockFace.SOUTH_SOUTH_WEST;
|
||||||
|
break;
|
||||||
|
case 10:
|
||||||
|
rotation = BlockFace.SOUTH_WEST;
|
||||||
|
break;
|
||||||
|
case 11:
|
||||||
|
rotation = BlockFace.WEST_SOUTH_WEST;
|
||||||
|
break;
|
||||||
|
case 12:
|
||||||
|
rotation = BlockFace.WEST;
|
||||||
|
break;
|
||||||
|
case 13:
|
||||||
|
rotation = BlockFace.WEST_NORTH_WEST;
|
||||||
|
break;
|
||||||
|
case 14:
|
||||||
|
rotation = BlockFace.NORTH_WEST;
|
||||||
|
break;
|
||||||
|
case 15:
|
||||||
|
rotation = BlockFace.NORTH_NORTH_WEST;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
rotation = BlockFace.NORTH;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
bukkit.setRotation(rotation);
|
||||||
|
if (we.getOwner() != null && !we.getOwner().isEmpty()) bukkit.setOwner(we.getOwner());
|
||||||
|
bukkit.update(true);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
if (!skipNmsAccess) {
|
if (!skipNmsAccess) {
|
||||||
try {
|
try {
|
||||||
return NmsBlock.set(world, pt, block);
|
return NmsBlock.set(world, pt, block);
|
||||||
@ -432,6 +525,91 @@ public class BukkitWorld extends LocalWorld {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (block instanceof SkullBlock) {
|
||||||
|
// Skull block
|
||||||
|
Block bukkitBlock = world.getBlockAt(pt.getBlockX(), pt.getBlockY(), pt.getBlockZ());
|
||||||
|
if (bukkitBlock == null) return false;
|
||||||
|
BlockState state = bukkitBlock.getState();
|
||||||
|
if (!(state instanceof org.bukkit.block.Skull)) return false;
|
||||||
|
Skull bukkit = (Skull) state;
|
||||||
|
SkullBlock we = (SkullBlock) block;
|
||||||
|
byte skullType = 0;
|
||||||
|
switch (bukkit.getSkullType()) {
|
||||||
|
// this is dumb but whoever wrote the class is stupid
|
||||||
|
case SKELETON:
|
||||||
|
skullType = 0;
|
||||||
|
break;
|
||||||
|
case WITHER:
|
||||||
|
skullType = 1;
|
||||||
|
break;
|
||||||
|
case ZOMBIE:
|
||||||
|
skullType = 2;
|
||||||
|
break;
|
||||||
|
case PLAYER:
|
||||||
|
skullType = 3;
|
||||||
|
break;
|
||||||
|
case CREEPER:
|
||||||
|
skullType = 4;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
we.setSkullType(skullType);
|
||||||
|
byte rot = 0;
|
||||||
|
switch (bukkit.getRotation()) {
|
||||||
|
// this is even more dumb, hurray for copy/paste
|
||||||
|
case NORTH:
|
||||||
|
rot = (byte) 0;
|
||||||
|
break;
|
||||||
|
case NORTH_NORTH_EAST:
|
||||||
|
rot = (byte) 1;
|
||||||
|
break;
|
||||||
|
case NORTH_EAST:
|
||||||
|
rot = (byte) 2;
|
||||||
|
break;
|
||||||
|
case EAST_NORTH_EAST:
|
||||||
|
rot = (byte) 3;
|
||||||
|
break;
|
||||||
|
case EAST:
|
||||||
|
rot = (byte) 4;
|
||||||
|
break;
|
||||||
|
case EAST_SOUTH_EAST:
|
||||||
|
rot = (byte) 5;
|
||||||
|
break;
|
||||||
|
case SOUTH_EAST:
|
||||||
|
rot = (byte) 6;
|
||||||
|
break;
|
||||||
|
case SOUTH_SOUTH_EAST:
|
||||||
|
rot = (byte) 7;
|
||||||
|
break;
|
||||||
|
case SOUTH:
|
||||||
|
rot = (byte) 8;
|
||||||
|
break;
|
||||||
|
case SOUTH_SOUTH_WEST:
|
||||||
|
rot = (byte) 9;
|
||||||
|
break;
|
||||||
|
case SOUTH_WEST:
|
||||||
|
rot = (byte) 10;
|
||||||
|
break;
|
||||||
|
case WEST_SOUTH_WEST:
|
||||||
|
rot = (byte) 11;
|
||||||
|
break;
|
||||||
|
case WEST:
|
||||||
|
rot = (byte) 12;
|
||||||
|
break;
|
||||||
|
case WEST_NORTH_WEST:
|
||||||
|
rot = (byte) 13;
|
||||||
|
break;
|
||||||
|
case NORTH_WEST:
|
||||||
|
rot = (byte) 14;
|
||||||
|
break;
|
||||||
|
case NORTH_NORTH_WEST:
|
||||||
|
rot = (byte) 15;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
we.setRot(rot);
|
||||||
|
we.setOwner(bukkit.hasOwner() ? bukkit.getOwner() : "");
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -997,6 +1175,7 @@ public class BukkitWorld extends LocalWorld {
|
|||||||
//case BlockID.DISPENSER:
|
//case BlockID.DISPENSER:
|
||||||
//case BlockID.MOB_SPAWNER:
|
//case BlockID.MOB_SPAWNER:
|
||||||
case BlockID.NOTE_BLOCK:
|
case BlockID.NOTE_BLOCK:
|
||||||
|
case BlockID.HEAD:
|
||||||
return super.getBlock(pt);
|
return super.getBlock(pt);
|
||||||
default:
|
default:
|
||||||
if (!skipNmsAccess) {
|
if (!skipNmsAccess) {
|
||||||
|
Laden…
In neuem Issue referenzieren
Einen Benutzer sperren