mirror of
https://github.com/plexusorg/Plex-FAWE.git
synced 2024-12-23 01:37:37 +00:00
Implement item brushes and item NBT for bukkit.
This allows usage of `/br <apply|paint> <shape> item` and the `offhand` syntax for item parser to use NBT.
This commit is contained in:
parent
6e833a9fe4
commit
e1c191599c
@ -439,6 +439,9 @@ public class BukkitAdapter {
|
|||||||
*/
|
*/
|
||||||
public static BaseItemStack adapt(ItemStack itemStack) {
|
public static BaseItemStack adapt(ItemStack itemStack) {
|
||||||
checkNotNull(itemStack);
|
checkNotNull(itemStack);
|
||||||
|
if (WorldEditPlugin.getInstance().getBukkitImplAdapter() != null) {
|
||||||
|
return WorldEditPlugin.getInstance().getBukkitImplAdapter().adapt(itemStack);
|
||||||
|
}
|
||||||
return new BaseItemStack(ItemTypes.get(itemStack.getType().getKey().toString()), itemStack.getAmount());
|
return new BaseItemStack(ItemTypes.get(itemStack.getType().getKey().toString()), itemStack.getAmount());
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -450,6 +453,9 @@ public class BukkitAdapter {
|
|||||||
*/
|
*/
|
||||||
public static ItemStack adapt(BaseItemStack item) {
|
public static ItemStack adapt(BaseItemStack item) {
|
||||||
checkNotNull(item);
|
checkNotNull(item);
|
||||||
|
if (WorldEditPlugin.getInstance().getBukkitImplAdapter() != null) {
|
||||||
|
return WorldEditPlugin.getInstance().getBukkitImplAdapter().adapt(item);
|
||||||
|
}
|
||||||
return new ItemStack(adapt(item.getType()), item.getAmount());
|
return new ItemStack(adapt(item.getType()), item.getAmount());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -22,6 +22,7 @@ package com.sk89q.worldedit.bukkit;
|
|||||||
import com.sk89q.worldedit.EditSession;
|
import com.sk89q.worldedit.EditSession;
|
||||||
import com.sk89q.worldedit.WorldEdit;
|
import com.sk89q.worldedit.WorldEdit;
|
||||||
import com.sk89q.worldedit.WorldEditException;
|
import com.sk89q.worldedit.WorldEditException;
|
||||||
|
import com.sk89q.worldedit.blocks.BaseItem;
|
||||||
import com.sk89q.worldedit.blocks.BaseItemStack;
|
import com.sk89q.worldedit.blocks.BaseItemStack;
|
||||||
import com.sk89q.worldedit.bukkit.adapter.BukkitImplAdapter;
|
import com.sk89q.worldedit.bukkit.adapter.BukkitImplAdapter;
|
||||||
import com.sk89q.worldedit.entity.BaseEntity;
|
import com.sk89q.worldedit.entity.BaseEntity;
|
||||||
@ -30,6 +31,7 @@ import com.sk89q.worldedit.math.BlockVector2;
|
|||||||
import com.sk89q.worldedit.math.BlockVector3;
|
import com.sk89q.worldedit.math.BlockVector3;
|
||||||
import com.sk89q.worldedit.math.Vector3;
|
import com.sk89q.worldedit.math.Vector3;
|
||||||
import com.sk89q.worldedit.regions.Region;
|
import com.sk89q.worldedit.regions.Region;
|
||||||
|
import com.sk89q.worldedit.util.Direction;
|
||||||
import com.sk89q.worldedit.util.TreeGenerator;
|
import com.sk89q.worldedit.util.TreeGenerator;
|
||||||
import com.sk89q.worldedit.world.AbstractWorld;
|
import com.sk89q.worldedit.world.AbstractWorld;
|
||||||
import com.sk89q.worldedit.world.biome.BiomeType;
|
import com.sk89q.worldedit.world.biome.BiomeType;
|
||||||
@ -461,6 +463,16 @@ public class BukkitWorld extends AbstractWorld {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean useItem(BlockVector3 position, BaseItem item, Direction face) {
|
||||||
|
BukkitImplAdapter adapter = WorldEditPlugin.getInstance().getBukkitImplAdapter();
|
||||||
|
if (adapter != null) {
|
||||||
|
return adapter.simulateItemUse(getWorld(), position, item, face);
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public BiomeType getBiome(BlockVector2 position) {
|
public BiomeType getBiome(BlockVector2 position) {
|
||||||
return BukkitAdapter.adapt(getWorld().getBiome(position.getBlockX(), position.getBlockZ()));
|
return BukkitAdapter.adapt(getWorld().getBiome(position.getBlockX(), position.getBlockZ()));
|
||||||
|
@ -20,17 +20,22 @@
|
|||||||
package com.sk89q.worldedit.bukkit.adapter;
|
package com.sk89q.worldedit.bukkit.adapter;
|
||||||
|
|
||||||
import com.sk89q.jnbt.CompoundTag;
|
import com.sk89q.jnbt.CompoundTag;
|
||||||
|
import com.sk89q.worldedit.blocks.BaseItem;
|
||||||
|
import com.sk89q.worldedit.blocks.BaseItemStack;
|
||||||
import com.sk89q.worldedit.entity.BaseEntity;
|
import com.sk89q.worldedit.entity.BaseEntity;
|
||||||
import com.sk89q.worldedit.math.BlockVector3;
|
import com.sk89q.worldedit.math.BlockVector3;
|
||||||
import com.sk89q.worldedit.registry.state.Property;
|
import com.sk89q.worldedit.registry.state.Property;
|
||||||
|
import com.sk89q.worldedit.util.Direction;
|
||||||
import com.sk89q.worldedit.world.DataFixer;
|
import com.sk89q.worldedit.world.DataFixer;
|
||||||
import com.sk89q.worldedit.world.block.BaseBlock;
|
import com.sk89q.worldedit.world.block.BaseBlock;
|
||||||
import com.sk89q.worldedit.world.block.BlockState;
|
import com.sk89q.worldedit.world.block.BlockState;
|
||||||
import com.sk89q.worldedit.world.block.BlockStateHolder;
|
import com.sk89q.worldedit.world.block.BlockStateHolder;
|
||||||
import com.sk89q.worldedit.world.block.BlockType;
|
import com.sk89q.worldedit.world.block.BlockType;
|
||||||
import org.bukkit.Location;
|
import org.bukkit.Location;
|
||||||
|
import org.bukkit.World;
|
||||||
import org.bukkit.entity.Entity;
|
import org.bukkit.entity.Entity;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
@ -126,4 +131,33 @@ public interface BukkitImplAdapter {
|
|||||||
* @param player The player
|
* @param player The player
|
||||||
*/
|
*/
|
||||||
void sendFakeOP(Player player);
|
void sendFakeOP(Player player);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Simulates a player using an item.
|
||||||
|
*
|
||||||
|
* @param world the world
|
||||||
|
* @param position the location
|
||||||
|
* @param item the item to be used
|
||||||
|
* @param face the direction in which to "face" when using the item
|
||||||
|
* @return whether the usage was successful
|
||||||
|
*/
|
||||||
|
default boolean simulateItemUse(World world, BlockVector3 position, BaseItem item, Direction face) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Create a Bukkit ItemStack with NBT, if available.
|
||||||
|
*
|
||||||
|
* @param item the WorldEdit BaseItemStack to adapt
|
||||||
|
* @return the Bukkit ItemStack
|
||||||
|
*/
|
||||||
|
ItemStack adapt(BaseItemStack item);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Create a WorldEdit ItemStack with NBT, if available.
|
||||||
|
*
|
||||||
|
* @param itemStack the Bukkit ItemStack to adapt
|
||||||
|
* @return the WorldEdit BaseItemStack
|
||||||
|
*/
|
||||||
|
BaseItemStack adapt(ItemStack itemStack);
|
||||||
}
|
}
|
||||||
|
Binary file not shown.
Loading…
Reference in New Issue
Block a user