Greenhouses/src/main/java/world/bentobox/greenhouses/ui/user/MakeCommand.java

85 lines
3.3 KiB
Java
Raw Normal View History

2019-01-19 16:52:04 +01:00
package world.bentobox.greenhouses.ui.user;
import java.util.List;
2019-01-22 00:44:01 +01:00
import org.bukkit.Bukkit;
import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.util.Vector;
2019-01-19 16:52:04 +01:00
import world.bentobox.bentobox.api.commands.CompositeCommand;
import world.bentobox.bentobox.api.user.User;
2019-01-22 00:44:01 +01:00
import world.bentobox.greenhouses.Greenhouses;
2019-02-08 00:17:55 +01:00
import world.bentobox.greenhouses.greenhouse.BiomeRecipe;
2019-01-22 00:44:01 +01:00
import world.bentobox.greenhouses.managers.GreenhouseManager.GhResult;
import world.bentobox.greenhouses.managers.GreenhouseManager.GreenhouseResult;
2019-02-08 00:17:55 +01:00
import world.bentobox.greenhouses.ui.panel.Panel;
2019-01-19 16:52:04 +01:00
/**
2019-01-26 20:10:30 +01:00
* Command to try to make a greenhouse
2019-01-19 16:52:04 +01:00
* @author tastybento
*
*/
2019-02-08 00:17:55 +01:00
class MakeCommand extends CompositeCommand {
2019-01-19 16:52:04 +01:00
/**
2019-01-26 17:38:13 +01:00
* @param parent - parent command
2019-01-19 16:52:04 +01:00
*/
public MakeCommand(CompositeCommand parent) {
super(parent, "make");
}
/* (non-Javadoc)
* @see world.bentobox.bentobox.api.commands.BentoBoxCommand#setup()
*/
@Override
public void setup() {
2019-01-26 20:10:30 +01:00
this.setPermission("greenhouses.player");
this.setOnlyPlayer(true);
this.setParametersHelp("greenhouses.commands.user.make.parameters");
this.setDescription("greenhouses.commands.user.make.description");
2019-01-19 16:52:04 +01:00
}
/* (non-Javadoc)
* @see world.bentobox.bentobox.api.commands.BentoBoxCommand#execute(world.bentobox.bentobox.api.user.User, java.lang.String, java.util.List)
*/
@Override
public boolean execute(User user, String label, List<String> args) {
2019-02-08 00:17:55 +01:00
if (args.isEmpty()) {
new Panel((Greenhouses)this.getAddon()).ShowPanel(user);
return true;
}
return makeGreenhouse(user, null);
}
2019-03-02 19:53:15 +01:00
2019-02-08 00:17:55 +01:00
private boolean makeGreenhouse(User user, BiomeRecipe br) {
2019-01-26 20:10:30 +01:00
// Check flag
if (!getIslands().getIslandAt(user.getLocation()).map(i -> i.isAllowed(user, Greenhouses.GREENHOUSES)).orElse(false)) {
user.sendMessage("greenhouses.errors.no-rank");
return false;
}
2019-01-22 00:44:01 +01:00
// Find the physical the greenhouse
Location location = user.getLocation().add(new Vector(0,1,0));
// Check if there's a gh here already
if (((Greenhouses)this.getAddon()).getManager().getMap().getGreenhouse(location).isPresent()) {
2019-01-26 20:10:30 +01:00
user.sendMessage("greenhouses.commands.user.make.error.already");
return false;
2019-01-19 16:52:04 +01:00
}
2019-02-08 00:17:55 +01:00
GhResult result = ((Greenhouses)this.getAddon()).getManager().tryToMakeGreenhouse(location, br);
2019-01-19 16:52:04 +01:00
2019-01-22 02:53:34 +01:00
if (result.getResults().contains(GreenhouseResult.SUCCESS)) {
2019-01-22 00:44:01 +01:00
// Success
2019-01-26 20:10:30 +01:00
user.sendMessage("greenhouses.commands.user.make.success", "[biome]", result.getFinder().getGh().getBiomeRecipe().getFriendlyName());
2019-01-19 16:52:04 +01:00
return true;
}
2019-01-26 20:10:30 +01:00
result.getResults().forEach(r -> user.sendMessage("greenhouses.commands.user.make.error." + r.name()));
2019-01-22 00:44:01 +01:00
if (!result.getFinder().getRedGlass().isEmpty()) {
// Show red glass
2019-01-26 17:38:13 +01:00
result.getFinder().getRedGlass().forEach(rg -> user.getPlayer().sendBlockChange(rg, Material.RED_STAINED_GLASS.createBlockData()));
Bukkit.getScheduler().runTaskLater(getPlugin(), () -> result.getFinder().getRedGlass().forEach(rg -> user.getPlayer().sendBlockChange(rg, rg.getBlock().getBlockData())), 120L);
2019-01-22 00:44:01 +01:00
}
return true;
}
2019-03-02 19:53:15 +01:00
2019-01-22 00:44:01 +01:00
}