cn.nukkit.metadata.BlockMetadataStore Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of powernukkit Show documentation
Show all versions of powernukkit Show documentation
A Minecraft Bedrock Edition server software implementation made in Java from scratch which supports all new features.
package cn.nukkit.metadata;
import cn.nukkit.block.Block;
import cn.nukkit.level.Level;
import cn.nukkit.plugin.Plugin;
import java.util.List;
/**
* @author MagicDroidX (Nukkit Project)
*/
public class BlockMetadataStore extends MetadataStore {
private final Level owningLevel;
public BlockMetadataStore(Level owningLevel) {
this.owningLevel = owningLevel;
}
@Override
protected String disambiguate(Metadatable block, String metadataKey) {
if (!(block instanceof Block)) {
throw new IllegalArgumentException("Argument must be a Block instance");
}
return ((Block) block).x + ":" + ((Block) block).y + ":" + ((Block) block).z + ":" + metadataKey;
}
@Override
public List getMetadata(Object block, String metadataKey) {
if (!(block instanceof Block)) {
throw new IllegalArgumentException("Object must be a Block");
}
if (((Block) block).getLevel() == this.owningLevel) {
return super.getMetadata(block, metadataKey);
} else {
throw new IllegalStateException("Block does not belong to world " + this.owningLevel.getName());
}
}
@Override
public boolean hasMetadata(Object block, String metadataKey) {
if (!(block instanceof Block)) {
throw new IllegalArgumentException("Object must be a Block");
}
if (((Block) block).getLevel() == this.owningLevel) {
return super.hasMetadata(block, metadataKey);
} else {
throw new IllegalStateException("Block does not belong to world " + this.owningLevel.getName());
}
}
@Override
public void removeMetadata(Object block, String metadataKey, Plugin owningPlugin) {
if (!(block instanceof Block)) {
throw new IllegalArgumentException("Object must be a Block");
}
if (((Block) block).getLevel() == this.owningLevel) {
super.removeMetadata(block, metadataKey, owningPlugin);
} else {
throw new IllegalStateException("Block does not belong to world " + this.owningLevel.getName());
}
}
@Override
public void setMetadata(Object block, String metadataKey, MetadataValue newMetadataValue) {
if (!(block instanceof Block)) {
throw new IllegalArgumentException("Object must be a Block");
}
if (((Block) block).getLevel() == this.owningLevel) {
super.setMetadata(block, metadataKey, newMetadataValue);
} else {
throw new IllegalStateException("Block does not belong to world " + this.owningLevel.getName());
}
}
}