package com.nicewuerfel.blockown.command; import com.nicewuerfel.blockown.InvalidWorldNameException; import com.nicewuerfel.blockown.Message; import com.nicewuerfel.blockown.OwnedBlock; import com.nicewuerfel.blockown.Setting; import com.nicewuerfel.blockown.User; import com.nicewuerfel.blockown.database.Database; import com.nicewuerfel.blockown.database.DatabaseAction; import org.bukkit.block.Block; import org.bukkit.entity.Player; import java.util.Iterator; public class OwnRunner implements Runnable { private final Setting setting; private final Database database; private final Iterator<Block> region; private final User user; private final Player player; private final Message message; public OwnRunner(Setting setting, Database database, Iterator<Block> region, User user, Player player, Message message) { this.setting = setting; this.database = database; this.region = region; this.user = user; this.player = player; this.message = message; } @Override public void run() { Block bukkitBlock; OwnedBlock block; int ownedCounter = 0; while (region.hasNext()) { bukkitBlock = region.next(); block = OwnedBlock.newInstance(bukkitBlock); try { if (bukkitBlock.getType() != org.bukkit.Material.AIR && setting.isOwnEnabled(block.getMaterial())) { if (!database.getOwner(block).isPresent()) { DatabaseAction databaseAction = DatabaseAction.newOwnInstance(block, user); database.enqueue(databaseAction); ownedCounter++; } } } catch (InvalidWorldNameException e) { // Should never happen, since world name is from bukkit Block instance setting.getOutput().printException("This should never happen! OwnRunner", e); } } player.sendMessage(message.getMessage(ownedCounter, user.getName())); } }