TeamVento/src/main/java/eu/univento/teamvento/commands/Set.java

85 lines
3.2 KiB
Java

package eu.univento.teamvento.commands;
import eu.univento.commons.player.Rank;
import eu.univento.core.api.AutoCommand;
import eu.univento.core.api.languages.Messages;
import eu.univento.core.api.schematic.Cuboid;
import eu.univento.core.api.player.CustomPlayer;
import eu.univento.teamvento.TeamVento;
import eu.univento.teamvento.utils.WorldEdit;
import org.bukkit.Bukkit;
import org.bukkit.Material;
import org.bukkit.block.Block;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import java.util.List;
/**
* @author joethei
* @version 0.1
*/
public class Set extends AutoCommand<TeamVento>{
public Set(TeamVento plugin, String command, String description, String... aliases) {
super(plugin, command, description, aliases);
}
@Override
public boolean execute(CommandSender sender, String label, String[] args) {
if(sender instanceof Player) {
CustomPlayer p = CustomPlayer.getPlayer(sender.getName());
if(p.getDatabasePlayer().isAllowed(Rank.Builder)) {
Material material;
if(args.length == 0) {
material = p.getInventory().getItemInMainHand().getType();
setBlocks(material, p);
}
if(args.length == 1) {
if(Material.getMaterial(args[0]) != null) {
material = Material.getMaterial(args[0]);
setBlocks(material, p);
}else{
int id = Integer.parseInt(args[0]);
material = Material.getMaterial(id);
setBlocks(material, p);
}
}else{
p.sendMessage(p.getMessages().PREFIX() + "§cYou need to give me some kind of stuff");
}
}else{
p.sendMessage(p.getMessages().PREFIX() + p.getMessages().NO_PERMS());
}
}else{
sender.sendMessage(Messages.Console.NOT_A_PLAYER);
}
return true;
}
@Override
public List<String> tabComplete(CommandSender sender, String label, String[] args) {
return null;
}
private void setBlocks(Material material, CustomPlayer p) {
if(material.isBlock()) {
if(WorldEdit.getPos1(p) == null || WorldEdit.getPos2(p) == null) {
p.sendMessage(p.getMessages().PREFIX() + "§ca location has not been set");
return;
}
Cuboid cb = new Cuboid(WorldEdit.getPos1(p).getLocation(), WorldEdit.getPos2(p).getLocation());
Bukkit.getScheduler().runTaskAsynchronously(TeamVento.getInstance(), () -> {
long i = 0;
for(Block b : cb.getBlocks()) {
i++;
Bukkit.getScheduler().scheduleSyncDelayedTask(TeamVento.getInstance(), () -> b.setType(material), i / 90);
}
});
p.sendMessage(p.getMessages().PREFIX() + "§ayou have changed the material of the blocks");
}else{
p.sendMessage(p.getMessages().PREFIX() + "§cthe item needs to be a block");
}
}
}