From 8c17aab9c5c75ada5b35aeaa974a18c1551fc211 Mon Sep 17 00:00:00 2001 From: Kenzie Togami Date: Thu, 23 May 2019 22:19:25 -0700 Subject: [PATCH] Clean-up some misc. parts of the code --- .../com/sk89q/worldedit/bukkit/BukkitWorld.java | 13 ++++++++----- .../com/sk89q/worldedit/world/block/BlockState.java | 2 +- .../worldedit/world/registry/BlockRegistry.java | 1 + .../com/sk89q/worldedit/forge/ForgeAdapter.java | 4 ++-- .../sk89q/worldedit/forge/ForgeBlockRegistry.java | 13 +++++++++++++ .../com/sk89q/worldedit/forge/ForgeWorldEdit.java | 5 +---- 6 files changed, 26 insertions(+), 12 deletions(-) diff --git a/worldedit-bukkit/src/main/java/com/sk89q/worldedit/bukkit/BukkitWorld.java b/worldedit-bukkit/src/main/java/com/sk89q/worldedit/bukkit/BukkitWorld.java index c8d8f6259..d17999fc7 100644 --- a/worldedit-bukkit/src/main/java/com/sk89q/worldedit/bukkit/BukkitWorld.java +++ b/worldedit-bukkit/src/main/java/com/sk89q/worldedit/bukkit/BukkitWorld.java @@ -413,6 +413,8 @@ public class BukkitWorld extends AbstractWorld { getWorld().getBlockAt(pt.getBlockX(), pt.getBlockY(), pt.getBlockZ()).breakNaturally(); } + private static volatile boolean hasWarnedImplError = false; + @Override public com.sk89q.worldedit.world.block.BlockState getBlock(BlockVector3 position) { BukkitImplAdapter adapter = WorldEditPlugin.getInstance().getBukkitImplAdapter(); @@ -420,13 +422,14 @@ public class BukkitWorld extends AbstractWorld { try { return adapter.getBlock(BukkitAdapter.adapt(getWorld(), position)).toImmutableState(); } catch (Exception e) { - Block bukkitBlock = getWorld().getBlockAt(position.getBlockX(), position.getBlockY(), position.getBlockZ()); - return BukkitAdapter.adapt(bukkitBlock.getBlockData()); + if (!hasWarnedImplError) { + hasWarnedImplError = true; + logger.warn("Unable to retrieve block via impl adapter", e); + } } - } else { - Block bukkitBlock = getWorld().getBlockAt(position.getBlockX(), position.getBlockY(), position.getBlockZ()); - return BukkitAdapter.adapt(bukkitBlock.getBlockData()); } + Block bukkitBlock = getWorld().getBlockAt(position.getBlockX(), position.getBlockY(), position.getBlockZ()); + return BukkitAdapter.adapt(bukkitBlock.getBlockData()); } @Override diff --git a/worldedit-core/src/main/java/com/sk89q/worldedit/world/block/BlockState.java b/worldedit-core/src/main/java/com/sk89q/worldedit/world/block/BlockState.java index 98c5966c7..1cd83cb3e 100644 --- a/worldedit-core/src/main/java/com/sk89q/worldedit/world/block/BlockState.java +++ b/worldedit-core/src/main/java/com/sk89q/worldedit/world/block/BlockState.java @@ -65,7 +65,7 @@ public class BlockState implements BlockStateHolder { this.values = new LinkedHashMap<>(); this.emptyBaseBlock = new BaseBlock(this); } - + BlockState initializeId(BlockRegistry registry) { this.internalId = registry.getInternalBlockStateId(this); return this; diff --git a/worldedit-core/src/main/java/com/sk89q/worldedit/world/registry/BlockRegistry.java b/worldedit-core/src/main/java/com/sk89q/worldedit/world/registry/BlockRegistry.java index 58a15ff30..d17662b0e 100644 --- a/worldedit-core/src/main/java/com/sk89q/worldedit/world/registry/BlockRegistry.java +++ b/worldedit-core/src/main/java/com/sk89q/worldedit/world/registry/BlockRegistry.java @@ -73,5 +73,6 @@ public interface BlockRegistry { * @param id The internal ID * @return the block state, if available */ + @Nullable BlockState getBlockStateByInternalId(int id); } diff --git a/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/ForgeAdapter.java b/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/ForgeAdapter.java index 3618093c8..bc6448636 100644 --- a/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/ForgeAdapter.java +++ b/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/ForgeAdapter.java @@ -19,8 +19,6 @@ package com.sk89q.worldedit.forge; -import static com.google.common.base.Preconditions.checkNotNull; - import com.google.common.collect.ImmutableList; import com.sk89q.jnbt.CompoundTag; import com.sk89q.jnbt.Tag; @@ -63,6 +61,8 @@ import java.util.Map; import java.util.TreeMap; import java.util.stream.Collectors; +import static com.google.common.base.Preconditions.checkNotNull; + public final class ForgeAdapter { private ForgeAdapter() { diff --git a/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/ForgeBlockRegistry.java b/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/ForgeBlockRegistry.java index 042d9e230..998f8674e 100644 --- a/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/ForgeBlockRegistry.java +++ b/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/ForgeBlockRegistry.java @@ -27,8 +27,11 @@ import com.sk89q.worldedit.world.registry.BundledBlockRegistry; import net.minecraft.block.Block; import net.minecraft.block.material.Material; import net.minecraft.block.state.IBlockState; +import net.minecraft.init.Blocks; import net.minecraft.state.IProperty; +import net.minecraftforge.fml.common.registry.GameRegistry; import net.minecraftforge.fml.loading.FMLLoader; +import net.minecraftforge.registries.GameData; import java.util.Collection; import java.util.HashMap; @@ -40,6 +43,7 @@ import javax.annotation.Nullable; public class ForgeBlockRegistry extends BundledBlockRegistry { + private final int airId = Block.getStateId(Blocks.AIR.getDefaultState()); private Map materialMap = new HashMap<>(); @Nullable @@ -82,4 +86,13 @@ public class ForgeBlockRegistry extends BundledBlockRegistry { return OptionalInt.of(Block.getStateId(equivalent)); } + @Override + public BlockState getBlockStateByInternalId(int id) { + IBlockState equivalent = Block.getStateById(id); + if (equivalent.equals(Blocks.AIR.getDefaultState()) && id != airId) { + // We didn't find a match. + return null; + } + return ForgeAdapter.adapt(equivalent); + } } 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 d681bafea..a72a881a6 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 @@ -175,9 +175,6 @@ public class ForgeWorldEdit { ItemCategory.REGISTRY.register(name.toString(), new ItemCategory(name.toString())); } } - - config = new ForgeConfiguration(this); - config.load(); } @SubscribeEvent @@ -211,7 +208,7 @@ public class ForgeWorldEdit { InternalPacketHandler.getHandler().sendToServer(new LeftClickAirEventMessage()); return; } - + boolean isLeftDeny = event instanceof PlayerInteractEvent.LeftClickBlock && ((PlayerInteractEvent.LeftClickBlock) event) .getUseItem() == Event.Result.DENY;