private StorageManager storageManager;
public EditSessionListener(LockBlock plugin) {
storageManager = plugin.getStorageManager();
}
public void load() {
WorldEdit.getInstance().getEventBus().register(this);
}
@Subscribe
public void onEditSession(EditSessionEvent e) {
if (e.getStage() == EditSession.Stage.BEFORE_CHANGE) {
e.setExtent(new AbstractLoggingExtent(e.getExtent()) {
@Override
protected void onBlockChange(Vector position, BaseBlock newBlock) {
super.onBlockChange(position, newBlock);
World world = Bukkit.getWorld(e.getWorld().getName());
if (world == null) return;
Location location = new Location(world, position.getBlockX(), position.getBlockY(), position.getBlockZ());
Material originalMaterial = location.getBlock().getType();
if (newBlock.getId() != 0)
storageManager.getIStorage().put(location, originalMaterial); //добавляется каждый сетнутый блок в лист
else
storageManager.getIStorage().remove(location); //удаляется, т.е. если просан //set 0 или /undo, но когда мы пишем /undo то, если в pos1 и pos2 стояли блоки, он их не удаляет
}
});
}
}