mirror of
https://github.com/plexusorg/Plex-FAWE.git
synced 2025-07-01 02:46:41 +00:00
Moved legacy block classes to the legacy source root.
This commit is contained in:
@ -1,112 +0,0 @@
|
||||
/*
|
||||
* WorldEdit, a Minecraft world manipulation toolkit
|
||||
* Copyright (C) sk89q <http://www.sk89q.com>
|
||||
* Copyright (C) WorldEdit team and contributors
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify it
|
||||
* under the terms of the GNU Lesser 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 Lesser General Public License
|
||||
* for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
package com.sk89q.worldedit.blocks;
|
||||
|
||||
import com.sk89q.jnbt.CompoundTag;
|
||||
import com.sk89q.jnbt.ListTag;
|
||||
import com.sk89q.jnbt.NBTUtils;
|
||||
import com.sk89q.jnbt.StringTag;
|
||||
import com.sk89q.jnbt.Tag;
|
||||
import com.sk89q.worldedit.world.DataException;
|
||||
import com.sk89q.worldedit.world.storage.InvalidFormatException;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* Represents a chest block.
|
||||
*
|
||||
* @author sk89q
|
||||
*/
|
||||
public class ChestBlock extends ContainerBlock {
|
||||
|
||||
/**
|
||||
* Construct an empty chest block with the default orientation (data value).
|
||||
*/
|
||||
public ChestBlock() {
|
||||
super(BlockID.CHEST, 27);
|
||||
}
|
||||
|
||||
/**
|
||||
* Construct an empty chest block with a custom data value.
|
||||
*
|
||||
* @param data data indicating the position of the chest
|
||||
*/
|
||||
public ChestBlock(int data) {
|
||||
super(BlockID.CHEST, data, 27);
|
||||
}
|
||||
|
||||
/**
|
||||
* Construct the chest block with a custom data value and a list of items.
|
||||
*
|
||||
* @param data data indicating the position of the chest
|
||||
* @param items array of items
|
||||
*/
|
||||
public ChestBlock(int data, BaseItemStack[] items) {
|
||||
super(BlockID.CHEST, data, 27);
|
||||
setItems(items);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getNbtId() {
|
||||
return "Chest";
|
||||
}
|
||||
|
||||
@Override
|
||||
public CompoundTag getNbtData() {
|
||||
Map<String, Tag> values = new HashMap<String, Tag>();
|
||||
values.put("Items", new ListTag("Items", CompoundTag.class, serializeInventory(getItems())));
|
||||
return new CompoundTag(getNbtId(), values);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setNbtData(CompoundTag rootTag) {
|
||||
if (rootTag == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
Map<String, Tag> values = rootTag.getValue();
|
||||
|
||||
Tag t = values.get("id");
|
||||
if (!(t instanceof StringTag) || !((StringTag) t).getValue().equals("Chest")) {
|
||||
throw new RuntimeException("'Chest' tile entity expected");
|
||||
}
|
||||
|
||||
List<CompoundTag> items = new ArrayList<CompoundTag>();
|
||||
|
||||
try {
|
||||
for (Tag tag : NBTUtils.getChildTag(values, "Items", ListTag.class).getValue()) {
|
||||
if (!(tag instanceof CompoundTag)) {
|
||||
throw new RuntimeException("CompoundTag expected as child tag of Chest's Items");
|
||||
}
|
||||
|
||||
items.add((CompoundTag) tag);
|
||||
}
|
||||
|
||||
setItems(deserializeInventory(items));
|
||||
} catch (InvalidFormatException e) {
|
||||
throw new RuntimeException(e);
|
||||
} catch (DataException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
}
|
||||
}
|
@ -1,142 +0,0 @@
|
||||
/*
|
||||
* WorldEdit, a Minecraft world manipulation toolkit
|
||||
* Copyright (C) sk89q <http://www.sk89q.com>
|
||||
* Copyright (C) WorldEdit team and contributors
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify it
|
||||
* under the terms of the GNU Lesser 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 Lesser General Public License
|
||||
* for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
package com.sk89q.worldedit.blocks;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import com.sk89q.jnbt.ByteTag;
|
||||
import com.sk89q.jnbt.CompoundTag;
|
||||
import com.sk89q.jnbt.ListTag;
|
||||
import com.sk89q.jnbt.NBTUtils;
|
||||
import com.sk89q.jnbt.ShortTag;
|
||||
import com.sk89q.jnbt.Tag;
|
||||
import com.sk89q.worldedit.world.DataException;
|
||||
|
||||
/**
|
||||
* Represents a block that stores items.
|
||||
*
|
||||
* @author sk89q
|
||||
*/
|
||||
public abstract class ContainerBlock extends BaseBlock implements TileEntityBlock {
|
||||
|
||||
private BaseItemStack[] items;
|
||||
|
||||
public ContainerBlock(int type, int inventorySize) {
|
||||
super(type);
|
||||
this.items = new BaseItemStack[inventorySize];
|
||||
}
|
||||
|
||||
public ContainerBlock(int type, int data, int inventorySize) {
|
||||
super(type, data);
|
||||
this.items = new BaseItemStack[inventorySize];
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the list of items.
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
public BaseItemStack[] getItems() {
|
||||
return this.items;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the list of items.
|
||||
*
|
||||
* @param items
|
||||
*/
|
||||
public void setItems(BaseItemStack[] items) {
|
||||
this.items = items;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasNbtData() {
|
||||
return true;
|
||||
}
|
||||
|
||||
public Map<String, Tag> serializeItem(BaseItemStack item) {
|
||||
Map<String, Tag> data = new HashMap<String, Tag>();
|
||||
data.put("id", new ShortTag("id", (short) item.getType()));
|
||||
data.put("Damage", new ShortTag("Damage", item.getData()));
|
||||
data.put("Count", new ByteTag("Count", (byte) item.getAmount()));
|
||||
if (item.getEnchantments().size() > 0) {
|
||||
List<CompoundTag> enchantmentList = new ArrayList<CompoundTag>();
|
||||
for(Map.Entry<Integer, Integer> entry : item.getEnchantments().entrySet()) {
|
||||
Map<String, Tag> enchantment = new HashMap<String, Tag>();
|
||||
enchantment.put("id", new ShortTag("id", entry.getKey().shortValue()));
|
||||
enchantment.put("lvl", new ShortTag("lvl", entry.getValue().shortValue()));
|
||||
enchantmentList.add(new CompoundTag(null, enchantment));
|
||||
}
|
||||
|
||||
Map<String, Tag> auxData = new HashMap<String, Tag>();
|
||||
auxData.put("ench", new ListTag("ench", CompoundTag.class, enchantmentList));
|
||||
data.put("tag", new CompoundTag("tag", auxData));
|
||||
}
|
||||
return data;
|
||||
}
|
||||
|
||||
public BaseItemStack deserializeItem(Map<String, Tag> data) throws DataException {
|
||||
short id = NBTUtils.getChildTag(data, "id", ShortTag.class).getValue();
|
||||
short damage = NBTUtils.getChildTag(data, "Damage", ShortTag.class).getValue();
|
||||
byte count = NBTUtils.getChildTag(data, "Count", ByteTag.class).getValue();
|
||||
|
||||
BaseItemStack stack = new BaseItemStack(id, count, damage);
|
||||
|
||||
if (data.containsKey("tag")) {
|
||||
Map<String, Tag> auxData = NBTUtils.getChildTag(data, "tag", CompoundTag.class).getValue();
|
||||
ListTag ench = (ListTag)auxData.get("ench");
|
||||
for(Tag e : ench.getValue()) {
|
||||
Map<String, Tag> vars = ((CompoundTag) e).getValue();
|
||||
short enchId = NBTUtils.getChildTag(vars, "id", ShortTag.class).getValue();
|
||||
short enchLevel = NBTUtils.getChildTag(vars, "lvl", ShortTag.class).getValue();
|
||||
stack.getEnchantments().put((int) enchId, (int) enchLevel);
|
||||
}
|
||||
}
|
||||
return stack;
|
||||
}
|
||||
|
||||
public BaseItemStack[] deserializeInventory(List<CompoundTag> items) throws DataException {
|
||||
BaseItemStack[] stacks = new BaseItemStack[items.size()];
|
||||
for (CompoundTag tag : items) {
|
||||
Map<String, Tag> item = tag.getValue();
|
||||
BaseItemStack stack = deserializeItem(item);
|
||||
byte slot = NBTUtils.getChildTag(item, "Slot", ByteTag.class).getValue();
|
||||
if (slot >= 0 && slot < stacks.length) {
|
||||
stacks[slot] = stack;
|
||||
}
|
||||
}
|
||||
return stacks;
|
||||
}
|
||||
|
||||
public List<CompoundTag> serializeInventory(BaseItemStack[] items) {
|
||||
List<CompoundTag> tags = new ArrayList<CompoundTag>();
|
||||
for (int i = 0; i < items.length; ++i) {
|
||||
if (items[i] != null) {
|
||||
Map<String, Tag> tagData = serializeItem(items[i]);
|
||||
tagData.put("Slot", new ByteTag("Slot", (byte) i));
|
||||
tags.add(new CompoundTag("", tagData));
|
||||
}
|
||||
}
|
||||
return tags;
|
||||
}
|
||||
}
|
@ -1,109 +0,0 @@
|
||||
/*
|
||||
* WorldEdit, a Minecraft world manipulation toolkit
|
||||
* Copyright (C) sk89q <http://www.sk89q.com>
|
||||
* Copyright (C) WorldEdit team and contributors
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify it
|
||||
* under the terms of the GNU Lesser 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 Lesser General Public License
|
||||
* for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
package com.sk89q.worldedit.blocks;
|
||||
|
||||
import com.sk89q.jnbt.CompoundTag;
|
||||
import com.sk89q.jnbt.ListTag;
|
||||
import com.sk89q.jnbt.NBTUtils;
|
||||
import com.sk89q.jnbt.StringTag;
|
||||
import com.sk89q.jnbt.Tag;
|
||||
import com.sk89q.worldedit.world.DataException;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* Represents dispensers.
|
||||
*
|
||||
* @author sk89q
|
||||
*/
|
||||
public class DispenserBlock extends ContainerBlock {
|
||||
|
||||
/**
|
||||
* Construct an empty dispenser block.
|
||||
*/
|
||||
public DispenserBlock() {
|
||||
super(BlockID.DISPENSER, 9);
|
||||
}
|
||||
|
||||
/**
|
||||
* Construct an empty dispenser block.
|
||||
*
|
||||
* @param data data value (orientation)
|
||||
*/
|
||||
public DispenserBlock(int data) {
|
||||
super(BlockID.DISPENSER, data, 9);
|
||||
}
|
||||
|
||||
/**
|
||||
* Construct a dispenser block with the given orientation and inventory.
|
||||
*
|
||||
* @param data data value (orientation)
|
||||
* @param items array of items in the inventory
|
||||
*/
|
||||
public DispenserBlock(int data, BaseItemStack[] items) {
|
||||
super(BlockID.DISPENSER, data, 9);
|
||||
this.setItems(items);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getNbtId() {
|
||||
return "Trap";
|
||||
}
|
||||
|
||||
@Override
|
||||
public CompoundTag getNbtData() {
|
||||
Map<String, Tag> values = new HashMap<String, Tag>();
|
||||
values.put("Items", new ListTag("Items", CompoundTag.class,
|
||||
serializeInventory(getItems())));
|
||||
return new CompoundTag(getNbtId(), values);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setNbtData(CompoundTag rootTag) {
|
||||
try {
|
||||
if (rootTag == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
Map<String, Tag> values = rootTag.getValue();
|
||||
|
||||
Tag t = values.get("id");
|
||||
if (!(t instanceof StringTag) || !((StringTag) t).getValue().equals("Trap")) {
|
||||
throw new DataException("'Trap' tile entity expected");
|
||||
}
|
||||
|
||||
List<CompoundTag> items = new ArrayList<CompoundTag>();
|
||||
for (Tag tag : NBTUtils.getChildTag(values, "Items", ListTag.class).getValue()) {
|
||||
if (!(tag instanceof CompoundTag)) {
|
||||
throw new DataException("CompoundTag expected as child tag of Trap Items");
|
||||
}
|
||||
|
||||
items.add((CompoundTag) tag);
|
||||
}
|
||||
|
||||
setItems(deserializeInventory(items));
|
||||
} catch (DataException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
}
|
||||
}
|
@ -1,167 +0,0 @@
|
||||
/*
|
||||
* WorldEdit, a Minecraft world manipulation toolkit
|
||||
* Copyright (C) sk89q <http://www.sk89q.com>
|
||||
* Copyright (C) WorldEdit team and contributors
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify it
|
||||
* under the terms of the GNU Lesser 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 Lesser General Public License
|
||||
* for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
package com.sk89q.worldedit.blocks;
|
||||
|
||||
import com.sk89q.jnbt.CompoundTag;
|
||||
import com.sk89q.jnbt.ListTag;
|
||||
import com.sk89q.jnbt.NBTUtils;
|
||||
import com.sk89q.jnbt.ShortTag;
|
||||
import com.sk89q.jnbt.StringTag;
|
||||
import com.sk89q.jnbt.Tag;
|
||||
import com.sk89q.worldedit.world.DataException;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* Represents a furnace block.
|
||||
*
|
||||
* @author sk89q
|
||||
*/
|
||||
public class FurnaceBlock extends ContainerBlock {
|
||||
|
||||
private short burnTime;
|
||||
private short cookTime;
|
||||
|
||||
/**
|
||||
* Construct an empty furnace block with the default orientation.
|
||||
*
|
||||
* @param type type ID
|
||||
*/
|
||||
public FurnaceBlock(int type) {
|
||||
super(type, 2);
|
||||
}
|
||||
|
||||
/**
|
||||
* Construct an empty furnace block with a given orientation.
|
||||
*
|
||||
* @param type type ID
|
||||
* @param data orientation
|
||||
*/
|
||||
public FurnaceBlock(int type, int data) {
|
||||
super(type, data, 2);
|
||||
}
|
||||
|
||||
/**
|
||||
* Construct an furnace block with a given orientation and inventory.
|
||||
*
|
||||
* @param type type ID
|
||||
* @param data orientation
|
||||
* @param items inventory items
|
||||
*/
|
||||
public FurnaceBlock(int type, int data, BaseItemStack[] items) {
|
||||
super(type, data, 2);
|
||||
setItems(items);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the burn time.
|
||||
*
|
||||
* @return the burn time
|
||||
*/
|
||||
public short getBurnTime() {
|
||||
return burnTime;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the burn time.
|
||||
*
|
||||
* @param burnTime the burn time
|
||||
*/
|
||||
public void setBurnTime(short burnTime) {
|
||||
this.burnTime = burnTime;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the cook time.
|
||||
*
|
||||
* @return the cook time
|
||||
*/
|
||||
public short getCookTime() {
|
||||
return cookTime;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the cook time.
|
||||
*
|
||||
* @param cookTime the cook time to set
|
||||
*/
|
||||
public void setCookTime(short cookTime) {
|
||||
this.cookTime = cookTime;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getNbtId() {
|
||||
return "Furnace";
|
||||
}
|
||||
|
||||
@Override
|
||||
public CompoundTag getNbtData() {
|
||||
Map<String, Tag> values = new HashMap<String, Tag>();
|
||||
values.put("Items", new ListTag("Items", CompoundTag.class,
|
||||
serializeInventory(getItems())));
|
||||
values.put("BurnTime", new ShortTag("BurnTime", burnTime));
|
||||
values.put("CookTime", new ShortTag("CookTime", cookTime));
|
||||
return new CompoundTag(getNbtId(), values);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setNbtData(CompoundTag rootTag) {
|
||||
if (rootTag == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
try {
|
||||
Map<String, Tag> values = rootTag.getValue();
|
||||
|
||||
Tag t = values.get("id");
|
||||
if (!(t instanceof StringTag)
|
||||
|| !((StringTag) t).getValue().equals("Furnace")) {
|
||||
throw new RuntimeException("'Furnace' tile entity expected");
|
||||
}
|
||||
|
||||
ListTag items = NBTUtils.getChildTag(values, "Items", ListTag.class);
|
||||
|
||||
List<CompoundTag> compound = new ArrayList<CompoundTag>();
|
||||
|
||||
for (Tag tag : items.getValue()) {
|
||||
if (!(tag instanceof CompoundTag)) {
|
||||
throw new RuntimeException("CompoundTag expected as child tag of Furnace Items");
|
||||
}
|
||||
compound.add((CompoundTag) tag);
|
||||
}
|
||||
setItems(deserializeInventory(compound));
|
||||
|
||||
t = values.get("BurnTime");
|
||||
if (t instanceof ShortTag) {
|
||||
burnTime = ((ShortTag) t).getValue();
|
||||
}
|
||||
|
||||
t = values.get("CookTime");
|
||||
if (t instanceof ShortTag) {
|
||||
cookTime = ((ShortTag) t).getValue();
|
||||
}
|
||||
} catch (DataException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
}
|
||||
}
|
@ -1,100 +0,0 @@
|
||||
/*
|
||||
* WorldEdit, a Minecraft world manipulation toolkit
|
||||
* Copyright (C) sk89q <http://www.sk89q.com>
|
||||
* Copyright (C) WorldEdit team and contributors
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify it
|
||||
* under the terms of the GNU Lesser 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 Lesser General Public License
|
||||
* for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
package com.sk89q.worldedit.blocks;
|
||||
|
||||
import com.sk89q.jnbt.CompoundTag;
|
||||
import com.sk89q.worldedit.Vector;
|
||||
import com.sk89q.worldedit.extent.Extent;
|
||||
|
||||
import static com.google.common.base.Preconditions.checkNotNull;
|
||||
|
||||
/**
|
||||
* A implementation of a lazy block for {@link Extent#getLazyBlock(Vector)}
|
||||
* that takes the block's ID and metadata, but will defer loading of NBT
|
||||
* data until time of access.
|
||||
* </p>
|
||||
* NBT data is later loaded using a call to {@link Extent#getBlock(Vector)}
|
||||
* with a stored {@link Extent} and location.
|
||||
* </p>
|
||||
* All mutators on this object will throw an
|
||||
* {@link UnsupportedOperationException}.
|
||||
*/
|
||||
public class LazyBlock extends BaseBlock {
|
||||
|
||||
private final Extent extent;
|
||||
private final Vector position;
|
||||
private boolean loaded = false;
|
||||
|
||||
/**
|
||||
* Create a new lazy block.
|
||||
*
|
||||
* @param type the block type
|
||||
* @param extent the extent to later load the full block data from
|
||||
* @param position the position to later load the full block data from
|
||||
*/
|
||||
public LazyBlock(int type, Extent extent, Vector position) {
|
||||
super(type);
|
||||
checkNotNull(extent);
|
||||
checkNotNull(position);
|
||||
this.extent = extent;
|
||||
this.position = position;
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a new lazy block.
|
||||
*
|
||||
* @param type the block type
|
||||
* @param data the data value
|
||||
* @param extent the extent to later load the full block data from
|
||||
* @param position the position to later load the full block data from
|
||||
*/
|
||||
public LazyBlock(int type, int data, Extent extent, Vector position) {
|
||||
super(type, data);
|
||||
checkNotNull(extent);
|
||||
checkNotNull(position);
|
||||
this.extent = extent;
|
||||
this.position = position;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setId(int id) {
|
||||
throw new UnsupportedOperationException("This object is immutable");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setData(int data) {
|
||||
throw new UnsupportedOperationException("This object is immutable");
|
||||
}
|
||||
|
||||
@Override
|
||||
public CompoundTag getNbtData() {
|
||||
if (!loaded) {
|
||||
BaseBlock loadedBlock = extent.getBlock(position);
|
||||
super.setNbtData(loadedBlock.getNbtData());
|
||||
}
|
||||
return super.getNbtData();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setNbtData(CompoundTag nbtData) {
|
||||
throw new UnsupportedOperationException("This object is immutable");
|
||||
}
|
||||
|
||||
}
|
@ -1,252 +0,0 @@
|
||||
/*
|
||||
* WorldEdit, a Minecraft world manipulation toolkit
|
||||
* Copyright (C) sk89q <http://www.sk89q.com>
|
||||
* Copyright (C) WorldEdit team and contributors
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify it
|
||||
* under the terms of the GNU Lesser 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 Lesser General Public License
|
||||
* for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
package com.sk89q.worldedit.blocks;
|
||||
|
||||
import com.sk89q.jnbt.CompoundTag;
|
||||
import com.sk89q.jnbt.ListTag;
|
||||
import com.sk89q.jnbt.NBTUtils;
|
||||
import com.sk89q.jnbt.ShortTag;
|
||||
import com.sk89q.jnbt.StringTag;
|
||||
import com.sk89q.jnbt.Tag;
|
||||
import com.sk89q.worldedit.MobType;
|
||||
import com.sk89q.worldedit.world.storage.InvalidFormatException;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* A mob spawner block.
|
||||
*
|
||||
* @author sk89q
|
||||
*/
|
||||
public class MobSpawnerBlock extends BaseBlock implements TileEntityBlock {
|
||||
|
||||
private String mobType;
|
||||
private short delay;
|
||||
|
||||
// advanced mob spawner features
|
||||
private short spawnCount;
|
||||
private short spawnRange;
|
||||
private CompoundTag spawnData;
|
||||
private ListTag spawnPotentials;
|
||||
private short minSpawnDelay;
|
||||
private short maxSpawnDelay;
|
||||
private short maxNearbyEntities;
|
||||
private short requiredPlayerRange;
|
||||
|
||||
/**
|
||||
* Construct the mob spawner block with a pig as the mob type.
|
||||
*/
|
||||
public MobSpawnerBlock() {
|
||||
super(BlockID.MOB_SPAWNER);
|
||||
this.mobType = MobType.PIG.getName();
|
||||
}
|
||||
|
||||
/**
|
||||
* Construct the mob spawner block with a given mob type.
|
||||
*
|
||||
* @param mobType mob type
|
||||
*/
|
||||
public MobSpawnerBlock(String mobType) {
|
||||
super(BlockID.MOB_SPAWNER);
|
||||
this.mobType = mobType;
|
||||
}
|
||||
|
||||
/**
|
||||
* Construct the mob spawner block with a specified data value.
|
||||
*
|
||||
* @param data data value
|
||||
*/
|
||||
public MobSpawnerBlock(int data) {
|
||||
super(BlockID.MOB_SPAWNER, data);
|
||||
}
|
||||
|
||||
/**
|
||||
* Construct the mob spawner block.
|
||||
*
|
||||
* @param data data value
|
||||
* @param mobType mob type
|
||||
*/
|
||||
public MobSpawnerBlock(int data, String mobType) {
|
||||
super(BlockID.MOB_SPAWNER, data);
|
||||
this.mobType = mobType;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the mob type.
|
||||
*
|
||||
* @return the mob type
|
||||
*/
|
||||
public String getMobType() {
|
||||
return mobType;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the mob type.
|
||||
*
|
||||
* @param mobType the mob type
|
||||
*/
|
||||
public void setMobType(String mobType) {
|
||||
this.mobType = mobType;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the spawn delay.
|
||||
*
|
||||
* @return the delay
|
||||
*/
|
||||
public short getDelay() {
|
||||
return delay;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the spawn delay.
|
||||
*
|
||||
* @param delay the delay to set
|
||||
*/
|
||||
public void setDelay(short delay) {
|
||||
this.delay = delay;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasNbtData() {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getNbtId() {
|
||||
return "MobSpawner";
|
||||
}
|
||||
|
||||
@Override
|
||||
public CompoundTag getNbtData() {
|
||||
Map<String, Tag> values = new HashMap<String, Tag>();
|
||||
values.put("EntityId", new StringTag("EntityId", mobType));
|
||||
values.put("Delay", new ShortTag("Delay", delay));
|
||||
values.put("SpawnCount", new ShortTag("SpawnCount", spawnCount));
|
||||
values.put("SpawnRange", new ShortTag("SpawnRange", spawnRange));
|
||||
values.put("MinSpawnDelay", new ShortTag("MinSpawnDelay", minSpawnDelay));
|
||||
values.put("MaxSpawnDelay", new ShortTag("MaxSpawnDelay", maxSpawnDelay));
|
||||
values.put("MaxNearbyEntities", new ShortTag("MaxNearbyEntities", maxNearbyEntities));
|
||||
values.put("RequiredPlayerRange", new ShortTag("RequiredPlayerRange", requiredPlayerRange));
|
||||
if (spawnData != null) {
|
||||
values.put("SpawnData", new CompoundTag("SpawnData", spawnData.getValue()));
|
||||
}
|
||||
if (spawnPotentials != null) {
|
||||
values.put("SpawnPotentials", new ListTag("SpawnPotentials", CompoundTag.class, spawnPotentials.getValue()));
|
||||
}
|
||||
|
||||
return new CompoundTag(getNbtId(), values);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setNbtData(CompoundTag rootTag) {
|
||||
if (rootTag == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
Map<String, Tag> values = rootTag.getValue();
|
||||
|
||||
Tag t = values.get("id");
|
||||
if (!(t instanceof StringTag) || !((StringTag) t).getValue().equals("MobSpawner")) {
|
||||
throw new RuntimeException("'MobSpawner' tile entity expected");
|
||||
}
|
||||
|
||||
StringTag mobTypeTag;
|
||||
ShortTag delayTag;
|
||||
|
||||
try {
|
||||
mobTypeTag = NBTUtils.getChildTag(values, "EntityId", StringTag.class);
|
||||
delayTag = NBTUtils.getChildTag(values, "Delay", ShortTag.class);
|
||||
} catch (InvalidFormatException ignored) {
|
||||
throw new RuntimeException("Invalid mob spawner data: no EntityId and/or no Delay");
|
||||
}
|
||||
|
||||
this.mobType = mobTypeTag.getValue();
|
||||
this.delay = delayTag.getValue();
|
||||
|
||||
ShortTag spawnCountTag = null;
|
||||
ShortTag spawnRangeTag = null;
|
||||
ShortTag minSpawnDelayTag = null;
|
||||
ShortTag maxSpawnDelayTag = null;
|
||||
ShortTag maxNearbyEntitiesTag = null;
|
||||
ShortTag requiredPlayerRangeTag = null;
|
||||
ListTag spawnPotentialsTag = null;
|
||||
CompoundTag spawnDataTag = null;
|
||||
try {
|
||||
spawnCountTag = NBTUtils.getChildTag(values, "SpawnCount", ShortTag.class);
|
||||
} catch (InvalidFormatException ignored) {
|
||||
}
|
||||
try {
|
||||
spawnRangeTag = NBTUtils.getChildTag(values, "SpawnRange", ShortTag.class);
|
||||
} catch (InvalidFormatException ignored) {
|
||||
}
|
||||
try {
|
||||
minSpawnDelayTag = NBTUtils.getChildTag(values, "MinSpawnDelay", ShortTag.class);
|
||||
} catch (InvalidFormatException ignored) {
|
||||
}
|
||||
try {
|
||||
maxSpawnDelayTag = NBTUtils.getChildTag(values, "MaxSpawnDelay", ShortTag.class);
|
||||
} catch (InvalidFormatException ignored) {
|
||||
}
|
||||
try {
|
||||
maxNearbyEntitiesTag = NBTUtils.getChildTag(values, "MaxNearbyEntities", ShortTag.class);
|
||||
} catch (InvalidFormatException ignored) {
|
||||
}
|
||||
try {
|
||||
requiredPlayerRangeTag = NBTUtils.getChildTag(values, "RequiredPlayerRange", ShortTag.class);
|
||||
} catch (InvalidFormatException ignored) {
|
||||
}
|
||||
try {
|
||||
spawnPotentialsTag = NBTUtils.getChildTag(values, "SpawnPotentials", ListTag.class);
|
||||
} catch (InvalidFormatException ignored) {
|
||||
}
|
||||
try {
|
||||
spawnDataTag = NBTUtils.getChildTag(values, "SpawnData", CompoundTag.class);
|
||||
} catch (InvalidFormatException ignored) {
|
||||
}
|
||||
|
||||
if (spawnCountTag != null) {
|
||||
this.spawnCount = spawnCountTag.getValue();
|
||||
}
|
||||
if (spawnRangeTag != null) {
|
||||
this.spawnRange =spawnRangeTag.getValue();
|
||||
}
|
||||
if (minSpawnDelayTag != null) {
|
||||
this.minSpawnDelay = minSpawnDelayTag.getValue();
|
||||
}
|
||||
if (maxSpawnDelayTag != null) {
|
||||
this.maxSpawnDelay = maxSpawnDelayTag.getValue();
|
||||
}
|
||||
if (maxNearbyEntitiesTag != null) {
|
||||
this.maxNearbyEntities = maxNearbyEntitiesTag.getValue();
|
||||
}
|
||||
if (requiredPlayerRangeTag != null) {
|
||||
this.requiredPlayerRange = requiredPlayerRangeTag.getValue();
|
||||
}
|
||||
if (spawnPotentialsTag != null) {
|
||||
this.spawnPotentials = new ListTag("SpawnPotentials", CompoundTag.class, spawnPotentialsTag.getValue());
|
||||
}
|
||||
if (spawnDataTag != null) {
|
||||
this.spawnData = new CompoundTag("SpawnData", spawnDataTag.getValue());
|
||||
}
|
||||
|
||||
}
|
||||
}
|
@ -1,123 +0,0 @@
|
||||
/*
|
||||
* WorldEdit, a Minecraft world manipulation toolkit
|
||||
* Copyright (C) sk89q <http://www.sk89q.com>
|
||||
* Copyright (C) WorldEdit team and contributors
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify it
|
||||
* under the terms of the GNU Lesser 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 Lesser General Public License
|
||||
* for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
package com.sk89q.worldedit.blocks;
|
||||
|
||||
import com.sk89q.jnbt.ByteTag;
|
||||
import com.sk89q.jnbt.CompoundTag;
|
||||
import com.sk89q.jnbt.StringTag;
|
||||
import com.sk89q.jnbt.Tag;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* A note block.
|
||||
*
|
||||
* @author sk89q
|
||||
*/
|
||||
public class NoteBlock extends BaseBlock implements TileEntityBlock {
|
||||
|
||||
private byte note;
|
||||
|
||||
/**
|
||||
* Construct the note block with a data value of 0.
|
||||
*/
|
||||
public NoteBlock() {
|
||||
super(BlockID.NOTE_BLOCK);
|
||||
this.note = 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* Construct the note block with a given data value.
|
||||
*
|
||||
* @param data data value
|
||||
*/
|
||||
public NoteBlock(int data) {
|
||||
super(BlockID.NOTE_BLOCK, data);
|
||||
this.note = 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* Construct the note block with a given data value and note.
|
||||
*
|
||||
* @param data data value
|
||||
* @param note note
|
||||
*/
|
||||
public NoteBlock(int data, byte note) {
|
||||
super(BlockID.NOTE_BLOCK, data);
|
||||
this.note = note;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the note.
|
||||
*
|
||||
* @return the note
|
||||
*/
|
||||
public byte getNote() {
|
||||
return note;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the note.
|
||||
*
|
||||
* @param note the note to set
|
||||
*/
|
||||
public void setNote(byte note) {
|
||||
this.note = note;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasNbtData() {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getNbtId() {
|
||||
return "Music";
|
||||
}
|
||||
|
||||
@Override
|
||||
public CompoundTag getNbtData() {
|
||||
Map<String, Tag> values = new HashMap<String, Tag>();
|
||||
values.put("note", new ByteTag("note", note));
|
||||
return new CompoundTag(getNbtId(), values);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setNbtData(CompoundTag rootTag) {
|
||||
if (rootTag == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
Map<String, Tag> values = rootTag.getValue();
|
||||
|
||||
Tag t;
|
||||
|
||||
t = values.get("id");
|
||||
if (!(t instanceof StringTag) || !((StringTag) t).getValue().equals("Music")) {
|
||||
throw new RuntimeException("'Music' tile entity expected");
|
||||
}
|
||||
|
||||
t = values.get("note");
|
||||
if (t instanceof ByteTag) {
|
||||
note = ((ByteTag) t).getValue();
|
||||
}
|
||||
}
|
||||
}
|
@ -1,142 +0,0 @@
|
||||
/*
|
||||
* WorldEdit, a Minecraft world manipulation toolkit
|
||||
* Copyright (C) sk89q <http://www.sk89q.com>
|
||||
* Copyright (C) WorldEdit team and contributors
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify it
|
||||
* under the terms of the GNU Lesser 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 Lesser General Public License
|
||||
* for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
package com.sk89q.worldedit.blocks;
|
||||
|
||||
import com.sk89q.jnbt.CompoundTag;
|
||||
import com.sk89q.jnbt.StringTag;
|
||||
import com.sk89q.jnbt.Tag;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* Represents a sign block.
|
||||
*
|
||||
* @author sk89q
|
||||
*/
|
||||
public class SignBlock extends BaseBlock implements TileEntityBlock {
|
||||
|
||||
private String[] text;
|
||||
|
||||
/**
|
||||
* Construct the sign without text.
|
||||
*
|
||||
* @param type type ID
|
||||
* @param data data value (orientation)
|
||||
*/
|
||||
public SignBlock(int type, int data) {
|
||||
super(type, data);
|
||||
this.text = new String[] { "", "", "", "" };
|
||||
}
|
||||
|
||||
/**
|
||||
* Construct the sign with text.
|
||||
*
|
||||
* @param type type ID
|
||||
* @param data data value (orientation)
|
||||
* @param text lines of text
|
||||
*/
|
||||
public SignBlock(int type, int data, String[] text) {
|
||||
super(type, data);
|
||||
if (text == null) {
|
||||
this.text = new String[] { "", "", "", "" };
|
||||
}
|
||||
this.text = text;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the text.
|
||||
*
|
||||
* @return the text
|
||||
*/
|
||||
public String[] getText() {
|
||||
return text;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the text.
|
||||
*
|
||||
* @param text the text to set
|
||||
*/
|
||||
public void setText(String[] text) {
|
||||
if (text == null) {
|
||||
throw new IllegalArgumentException("Can't set null text for a sign");
|
||||
}
|
||||
this.text = text;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasNbtData() {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getNbtId() {
|
||||
return "Sign";
|
||||
}
|
||||
|
||||
@Override
|
||||
public CompoundTag getNbtData() {
|
||||
Map<String, Tag> values = new HashMap<String, Tag>();
|
||||
values.put("Text1", new StringTag("Text1", text[0]));
|
||||
values.put("Text2", new StringTag("Text2", text[1]));
|
||||
values.put("Text3", new StringTag("Text3", text[2]));
|
||||
values.put("Text4", new StringTag("Text4", text[3]));
|
||||
return new CompoundTag(getNbtId(), values);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setNbtData(CompoundTag rootTag) {
|
||||
if (rootTag == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
Map<String, Tag> values = rootTag.getValue();
|
||||
|
||||
Tag t;
|
||||
|
||||
text = new String[] { "", "", "", "" };
|
||||
|
||||
t = values.get("id");
|
||||
if (!(t instanceof StringTag) || !((StringTag) t).getValue().equals("Sign")) {
|
||||
throw new RuntimeException("'Sign' tile entity expected");
|
||||
}
|
||||
|
||||
t = values.get("Text1");
|
||||
if (t instanceof StringTag) {
|
||||
text[0] = ((StringTag) t).getValue();
|
||||
}
|
||||
|
||||
t = values.get("Text2");
|
||||
if (t instanceof StringTag) {
|
||||
text[1] = ((StringTag) t).getValue();
|
||||
}
|
||||
|
||||
t = values.get("Text3");
|
||||
if (t instanceof StringTag) {
|
||||
text[2] = ((StringTag) t).getValue();
|
||||
}
|
||||
|
||||
t = values.get("Text4");
|
||||
if (t instanceof StringTag) {
|
||||
text[3] = ((StringTag) t).getValue();
|
||||
}
|
||||
}
|
||||
}
|
@ -1,194 +0,0 @@
|
||||
/*
|
||||
* WorldEdit, a Minecraft world manipulation toolkit
|
||||
* Copyright (C) sk89q <http://www.sk89q.com>
|
||||
* Copyright (C) WorldEdit team and contributors
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify it
|
||||
* under the terms of the GNU Lesser 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 Lesser General Public License
|
||||
* for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
package com.sk89q.worldedit.blocks;
|
||||
|
||||
import com.sk89q.jnbt.ByteTag;
|
||||
import com.sk89q.jnbt.CompoundTag;
|
||||
import com.sk89q.jnbt.StringTag;
|
||||
import com.sk89q.jnbt.Tag;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* 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, data);
|
||||
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, data);
|
||||
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) {
|
||||
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 RuntimeException("'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();
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user