From d12ad2548a138e839da4a638d2a5fdaa17b10319 Mon Sep 17 00:00:00 2001 From: Matthew Miller Date: Wed, 3 Jan 2018 17:18:43 +1000 Subject: [PATCH] Add block registration to Forge WorldEdit. --- .../com/sk89q/worldedit/blocks/LazyBlock.java | 40 +++++++++++++++++++ .../sk89q/worldedit/forge/ForgeWorldEdit.java | 9 +++++ 2 files changed, 49 insertions(+) diff --git a/worldedit-core/src/legacy/java/com/sk89q/worldedit/blocks/LazyBlock.java b/worldedit-core/src/legacy/java/com/sk89q/worldedit/blocks/LazyBlock.java index cb34a71d3..2a55ba4d8 100644 --- a/worldedit-core/src/legacy/java/com/sk89q/worldedit/blocks/LazyBlock.java +++ b/worldedit-core/src/legacy/java/com/sk89q/worldedit/blocks/LazyBlock.java @@ -21,6 +21,7 @@ package com.sk89q.worldedit.blocks; import com.sk89q.jnbt.CompoundTag; import com.sk89q.worldedit.Vector; +import com.sk89q.worldedit.blocks.type.BlockType; import com.sk89q.worldedit.extent.Extent; import static com.google.common.base.Preconditions.checkNotNull; @@ -49,6 +50,22 @@ public class LazyBlock extends BaseBlock { * @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(BlockType 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 extent the extent to later load the full block data from + * @param position the position to later load the full block data from + */ + @Deprecated public LazyBlock(int type, Extent extent, Vector position) { super(type); checkNotNull(extent); @@ -65,6 +82,24 @@ public class LazyBlock extends BaseBlock { * @param extent the extent to later load the full block data from * @param position the position to later load the full block data from */ + @Deprecated + public LazyBlock(BlockType type, int data, Extent extent, Vector position) { + super(type, data); + 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 + */ + @Deprecated public LazyBlock(int type, int data, Extent extent, Vector position) { super(type, data); checkNotNull(extent); @@ -83,6 +118,11 @@ public class LazyBlock extends BaseBlock { throw new UnsupportedOperationException("This object is immutable"); } + @Override + public void setType(BlockType type) { + throw new UnsupportedOperationException("This object is immutable"); + } + @Override public CompoundTag getNbtData() { if (!loaded) { diff --git a/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/ForgeWorldEdit.java b/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/ForgeWorldEdit.java index 11d20c2f4..de09c5f64 100644 --- a/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/ForgeWorldEdit.java +++ b/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/ForgeWorldEdit.java @@ -19,6 +19,8 @@ package com.sk89q.worldedit.forge; +import net.minecraft.block.Block; +import net.minecraftforge.fml.common.registry.ForgeRegistries; import org.apache.logging.log4j.Logger; import com.google.common.base.Joiner; @@ -54,8 +56,11 @@ import net.minecraftforge.fml.common.event.FMLServerStartedEvent; import net.minecraftforge.fml.common.event.FMLServerStoppingEvent; import net.minecraftforge.fml.common.eventhandler.Event.Result; import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; +import org.spongepowered.api.Sponge; +import org.spongepowered.api.block.BlockType; import static com.google.common.base.Preconditions.checkNotNull; +import static net.minecraft.block.Block.REGISTRY; /** * The Forge implementation of WorldEdit. @@ -121,6 +126,10 @@ public class ForgeWorldEdit { } else { this.provider = new ForgePermissionsProvider.VanillaPermissionsProvider(platform); } + + for (Block block : REGISTRY) { + com.sk89q.worldedit.blocks.type.BlockTypes.registerBlock(new com.sk89q.worldedit.blocks.type.BlockType(REGISTRY.getNameForObject(block).toString())); + } } @EventHandler