mirror of
https://github.com/plexusorg/Plex-FAWE.git
synced 2025-07-13 07:18:35 +00:00
Javadoc and Formatting fixes. Also, extremely minor code changes which have been tested. This commit is only part one of two commits that aim to fix problems with formatting in our project. In part two I will modify the Google Java Style Guide (since it closely matches our code style) for our project so there is guidance on how to format and document. * Updated PlotSquared URL * Removed plugin acronyms * Fixed a typo * Fixed grammar * Use modern block id's * Update YouTube video URL
102 lines
3.2 KiB
Java
102 lines
3.2 KiB
Java
package com.sk89q.worldedit.bukkit.adapter;
|
|
|
|
import com.sk89q.worldedit.registry.state.Property;
|
|
import com.sk89q.worldedit.world.block.BlockState;
|
|
import com.sk89q.worldedit.world.block.BlockType;
|
|
import com.sk89q.worldedit.world.block.BlockTypes;
|
|
import com.sk89q.worldedit.world.block.BlockTypesCache;
|
|
import com.sk89q.worldedit.world.item.ItemType;
|
|
import com.sk89q.worldedit.world.item.ItemTypes;
|
|
import org.bukkit.Material;
|
|
import org.bukkit.NamespacedKey;
|
|
import org.bukkit.block.data.BlockData;
|
|
|
|
import java.util.List;
|
|
|
|
import static com.google.common.base.Preconditions.checkNotNull;
|
|
|
|
public abstract class CachedBukkitAdapter implements IBukkitAdapter {
|
|
private int[] itemTypes;
|
|
private int[] blockTypes;
|
|
|
|
private boolean init() {
|
|
if (itemTypes == null) {
|
|
Material[] materials = Material.values();
|
|
itemTypes = new int[materials.length];
|
|
blockTypes = new int[materials.length];
|
|
for (int i = 0; i < materials.length; i++) {
|
|
Material material = materials[i];
|
|
if (material.isLegacy()) {
|
|
continue;
|
|
}
|
|
NamespacedKey key = material.getKey();
|
|
String id = key.getNamespace() + ":" + key.getKey();
|
|
if (material.isBlock()) {
|
|
blockTypes[i] = BlockTypes.get(id).getInternalId();
|
|
}
|
|
if (material.isItem()) {
|
|
itemTypes[i] = ItemTypes.get(id).getInternalId();
|
|
}
|
|
}
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|
|
|
|
/**
|
|
* Converts a Material to a ItemType.
|
|
*
|
|
* @param material The material
|
|
* @return The itemtype
|
|
*/
|
|
@Override
|
|
public ItemType asItemType(Material material) {
|
|
try {
|
|
return ItemTypes.get(itemTypes[material.ordinal()]);
|
|
} catch (NullPointerException e) {
|
|
if (init()) {
|
|
return asItemType(material);
|
|
}
|
|
return ItemTypes.get(itemTypes[material.ordinal()]);
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public BlockType asBlockType(Material material) {
|
|
try {
|
|
return BlockTypesCache.values[blockTypes[material.ordinal()]];
|
|
} catch (NullPointerException e) {
|
|
if (init()) {
|
|
return asBlockType(material);
|
|
}
|
|
throw e;
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Create a WorldEdit BlockStateHolder from a Bukkit BlockData.
|
|
*
|
|
* @param blockData The Bukkit BlockData
|
|
* @return The WorldEdit BlockState
|
|
*/
|
|
@Override
|
|
public BlockState adapt(BlockData blockData) {
|
|
try {
|
|
checkNotNull(blockData);
|
|
Material material = blockData.getMaterial();
|
|
BlockType type = BlockTypes.getFromStateId(blockTypes[material.ordinal()]);
|
|
List<? extends Property> propList = type.getProperties();
|
|
if (propList.size() == 0) {
|
|
return type.getDefaultState();
|
|
}
|
|
String properties = blockData.getAsString();
|
|
return BlockState.get(type, properties, type.getDefaultState());
|
|
} catch (NullPointerException e) {
|
|
if (init()) {
|
|
return adapt(blockData);
|
|
}
|
|
throw e;
|
|
}
|
|
}
|
|
}
|