package test;

import org.bukkit.NamespacedKey;
import org.bukkit.block.BlockState;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.world.AsyncStructureGenerateEvent;
import org.bukkit.generator.LimitedRegion;
import org.bukkit.plugin.java.JavaPlugin;
import org.bukkit.util.BlockTransformer;

public class TestPlugin extends JavaPlugin {

    private NamespacedKey key;

    @Override
    public void onEnable() {
        key = new NamespacedKey(this, "test");
        getServer().getPluginManager().registerEvents(new TestListener(this), this);
    }

    public static class TestListener implements Listener {

        private final TestPlugin plugin;

        // This transformer should do absolutely nothing to any block
        private final BlockTransformer nopTransformer = new BlockTransformer() {
            @Override
            public BlockState transform(LimitedRegion region, int x, int y, int z, BlockState current, TransformationState state) {
                return current;
            }
        };

        public TestListener(final TestPlugin plugin) {
            this.plugin = plugin;
        }

        @EventHandler
        public void onStructureEvent(AsyncStructureGenerateEvent event) {
            event.setBlockTransformer(plugin.key, nopTransformer);
        }

    }

}
