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

120 lines
3.5 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;
import world.bentobox.greenhouses.managers.GreenhouseManager.GhResult;
import world.bentobox.greenhouses.managers.GreenhouseManager.GreenhouseResult;
2019-01-19 16:52:04 +01:00
/**
* @author tastybento
*
*/
public class MakeCommand extends CompositeCommand {
/**
* @param parent
* @param label
* @param aliases
*/
public MakeCommand(CompositeCommand parent) {
super(parent, "make");
}
/* (non-Javadoc)
* @see world.bentobox.bentobox.api.commands.BentoBoxCommand#setup()
*/
@Override
public void setup() {
// TODO Auto-generated method stub
}
/* (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-01-22 00:44:01 +01:00
// TODO Check permission
// 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()) {
user.sendRawMessage("You are in a greenhouse already!" );
2019-01-19 16:52:04 +01:00
return true;
}
2019-01-22 00:44:01 +01:00
GhResult result = ((Greenhouses)this.getAddon()).getManager().tryToMakeGreenhouse(location, null);
2019-01-19 16:52:04 +01:00
2019-01-22 00:44:01 +01:00
if (result.getResults().isEmpty()) {
// Success
user.sendMessage("general.success");
user.sendRawMessage(result.getFinder().getGh().getBiomeRecipe().getFriendlyName());
2019-01-19 16:52:04 +01:00
return true;
}
2019-01-22 00:44:01 +01:00
result.getResults().forEach(r -> sendErrorMessage(user, r));
if (!result.getFinder().getRedGlass().isEmpty()) {
// Show red glass
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);
}
return true;
}
2019-01-19 16:52:04 +01:00
2019-01-22 00:44:01 +01:00
private void sendErrorMessage(User user, GreenhouseResult r) {
user.sendRawMessage(r.name());
switch (r) {
case FAIL_BAD_ROOF_BLOCKS:
break;
case FAIL_BAD_WALL_BLOCKS:
break;
case FAIL_BELOW:
break;
case FAIL_BLOCKS_ABOVE:
break;
case FAIL_HOLE_IN_ROOF:
break;
case FAIL_HOLE_IN_WALL:
break;
case FAIL_NO_ROOF:
break;
case FAIL_TOO_MANY_DOORS:
break;
case FAIL_TOO_MANY_HOPPERS:
break;
case FAIL_UNEVEN_WALLS:
break;
case FAIL_INSUFFICIENT_ICE:
break;
case FAIL_INSUFFICIENT_LAVA:
break;
case FAIL_INSUFFICIENT_WATER:
break;
case FAIL_NO_ICE:
break;
case FAIL_NO_LAVA:
break;
case FAIL_NO_WATER:
break;
default:
break;
}
2019-01-19 16:52:04 +01:00
}
2019-01-22 00:44:01 +01:00
}