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()));
}
}