mirror of
https://github.com/songoda/EpicFarming.git
synced 2025-02-12 18:41:52 +01:00
Package name changed.
Cleaned up code. Updated to the new CommandManager Moved GrowthHandler to a task and improved its performance. Clear task removed, improving performance. All handlers removed improving performance.
This commit is contained in:
parent
b320516696
commit
27ca9db717
@ -8,20 +8,20 @@ import com.songoda.epicfarming.api.farming.Farm;
|
||||
import com.songoda.epicfarming.api.farming.Level;
|
||||
import com.songoda.epicfarming.api.utils.ClaimableProtectionPluginHook;
|
||||
import com.songoda.epicfarming.api.utils.ProtectionPluginHook;
|
||||
import com.songoda.epicfarming.events.BlockListeners;
|
||||
import com.songoda.epicfarming.events.EntityListeners;
|
||||
import com.songoda.epicfarming.events.InteractListeners;
|
||||
import com.songoda.epicfarming.events.InventoryListeners;
|
||||
import com.songoda.epicfarming.command.CommandManager;
|
||||
import com.songoda.epicfarming.listeners.BlockListeners;
|
||||
import com.songoda.epicfarming.listeners.EntityListeners;
|
||||
import com.songoda.epicfarming.listeners.InteractListeners;
|
||||
import com.songoda.epicfarming.listeners.InventoryListeners;
|
||||
import com.songoda.epicfarming.farming.EFarm;
|
||||
import com.songoda.epicfarming.farming.EFarmManager;
|
||||
import com.songoda.epicfarming.farming.ELevel;
|
||||
import com.songoda.epicfarming.farming.ELevelManager;
|
||||
import com.songoda.epicfarming.handlers.CommandHandler;
|
||||
import com.songoda.epicfarming.handlers.FarmingHandler;
|
||||
import com.songoda.epicfarming.handlers.GrowthHandler;
|
||||
import com.songoda.epicfarming.hooks.*;
|
||||
import com.songoda.epicfarming.player.PlayerActionManager;
|
||||
import com.songoda.epicfarming.player.PlayerData;
|
||||
import com.songoda.epicfarming.tasks.FarmTask;
|
||||
import com.songoda.epicfarming.tasks.GrowthTask;
|
||||
import com.songoda.epicfarming.tasks.HopperTask;
|
||||
import com.songoda.epicfarming.utils.Debugger;
|
||||
import com.songoda.epicfarming.utils.Methods;
|
||||
import com.songoda.epicfarming.utils.SettingsManager;
|
||||
@ -32,6 +32,7 @@ import org.bukkit.ChatColor;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.configuration.ConfigurationSection;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.inventory.meta.ItemMeta;
|
||||
@ -52,20 +53,19 @@ public class EpicFarmingPlugin extends JavaPlugin implements EpicFarming {
|
||||
private List<ProtectionPluginHook> protectionHooks = new ArrayList<>();
|
||||
private ClaimableProtectionPluginHook factionsHook, townyHook, aSkyblockHook, uSkyblockHook;
|
||||
|
||||
public SettingsManager settingsManager;
|
||||
public References references;
|
||||
private SettingsManager settingsManager;
|
||||
private References references;
|
||||
private ConfigWrapper hooksFile = new ConfigWrapper(this, "", "hooks.yml");
|
||||
public ConfigWrapper dataFile = new ConfigWrapper(this, "", "data.yml");
|
||||
private ConfigWrapper dataFile = new ConfigWrapper(this, "", "data.yml");
|
||||
private Locale locale;
|
||||
private FarmingHandler farmingHandler;
|
||||
private GrowthHandler growthHandler;
|
||||
private EFarmManager farmManager;
|
||||
private ELevelManager levelManager;
|
||||
private PlayerActionManager playerActionManager;
|
||||
private CommandManager commandManager;
|
||||
|
||||
public static EpicFarmingPlugin pl() {
|
||||
return INSTANCE;
|
||||
}
|
||||
private GrowthTask growthTask;
|
||||
private HopperTask hopperTask;
|
||||
private FarmTask farmTask;
|
||||
|
||||
public static EpicFarmingPlugin getInstance() {
|
||||
return INSTANCE;
|
||||
@ -105,7 +105,7 @@ public class EpicFarmingPlugin extends JavaPlugin implements EpicFarming {
|
||||
Locale.saveDefaultLocale("en_US");
|
||||
this.locale = Locale.getLocale(this.getConfig().getString("Locale", "en_US"));
|
||||
|
||||
settingsManager = new SettingsManager(this);
|
||||
this.settingsManager = new SettingsManager(this);
|
||||
setupConfig();
|
||||
|
||||
dataFile.createNewFile("Loading Data File", "EpicFarming Data File");
|
||||
@ -113,7 +113,9 @@ public class EpicFarmingPlugin extends JavaPlugin implements EpicFarming {
|
||||
|
||||
loadLevelManager();
|
||||
|
||||
farmManager = new EFarmManager();
|
||||
this.farmManager = new EFarmManager();
|
||||
this.playerActionManager = new PlayerActionManager();
|
||||
this.commandManager = new CommandManager(this);
|
||||
|
||||
/*
|
||||
* Register Farms into FarmManger from configuration
|
||||
@ -132,14 +134,8 @@ public class EpicFarmingPlugin extends JavaPlugin implements EpicFarming {
|
||||
farmManager.addFarm(location, farm);
|
||||
}
|
||||
}
|
||||
playerActionManager = new PlayerActionManager();
|
||||
|
||||
|
||||
farmingHandler = new FarmingHandler(this);
|
||||
growthHandler = new GrowthHandler(this);
|
||||
references = new References();
|
||||
|
||||
this.getCommand("EpicFarming").setExecutor(new CommandHandler(this));
|
||||
this.references = new References();
|
||||
|
||||
PluginManager pluginManager = Bukkit.getPluginManager();
|
||||
|
||||
@ -160,7 +156,11 @@ public class EpicFarmingPlugin extends JavaPlugin implements EpicFarming {
|
||||
if (pluginManager.isPluginEnabled("USkyBlock")) this.register(HookUSkyBlock::new);
|
||||
if (pluginManager.isPluginEnabled("WorldGuard")) this.register(HookWorldGuard::new);
|
||||
|
||||
|
||||
// Start tasks
|
||||
this.growthTask = GrowthTask.startTask(this);
|
||||
this.hopperTask = HopperTask.startTask(this);
|
||||
this.farmTask = FarmTask.startTask(this);
|
||||
|
||||
Bukkit.getScheduler().scheduleSyncRepeatingTask(this, this::saveToFile, 6000, 6000);
|
||||
|
||||
new MCUpdate(this, true);
|
||||
@ -235,46 +235,48 @@ public class EpicFarmingPlugin extends JavaPlugin implements EpicFarming {
|
||||
|
||||
private void setupConfig() {
|
||||
settingsManager.updateSettings();
|
||||
|
||||
ConfigurationSection levels = getConfig().createSection("settings.levels");
|
||||
|
||||
if (!getConfig().contains("settings.levels.Level-1")) {
|
||||
getConfig().addDefault("settings.levels.Level-1.Radius", 1);
|
||||
getConfig().addDefault("settings.levels.Level-1.Speed-Multiplier", 1);
|
||||
getConfig().addDefault("settings.levels.Level-1.Cost-xp", 20);
|
||||
getConfig().addDefault("settings.levels.Level-1.Cost-eco", 5000);
|
||||
if (!levels.contains("Level-1")) {
|
||||
levels.set("Level-1.Radius", 1);
|
||||
levels.set("Level-1.Speed-Multiplier", 1);
|
||||
levels.set("Level-1.Cost-xp", 20);
|
||||
levels.set("Level-1.Cost-eco", 5000);
|
||||
|
||||
getConfig().addDefault("settings.levels.Level-2.Radius", 2);
|
||||
getConfig().addDefault("settings.levels.Level-2.Speed-Multiplier", 1.5);
|
||||
getConfig().addDefault("settings.levels.Level-2.Auto-Harvest", true);
|
||||
getConfig().addDefault("settings.levels.Level-2.Cost-xp", 20);
|
||||
getConfig().addDefault("settings.levels.Level-2.Cost-eco", 5000);
|
||||
levels.set("Level-2.Radius", 2);
|
||||
levels.set("Level-2.Speed-Multiplier", 1.5);
|
||||
levels.set("Level-2.Auto-Harvest", true);
|
||||
levels.set("Level-2.Cost-xp", 20);
|
||||
levels.set("Level-2.Cost-eco", 5000);
|
||||
|
||||
getConfig().addDefault("settings.levels.Level-3.Radius", 3);
|
||||
getConfig().addDefault("settings.levels.Level-3.Speed-Multiplier", 1.5);
|
||||
getConfig().addDefault("settings.levels.Level-3.Auto-Harvest", true);
|
||||
getConfig().addDefault("settings.levels.Level-3.Auto-Replant", true);
|
||||
getConfig().addDefault("settings.levels.Level-3.Cost-xp", 25);
|
||||
getConfig().addDefault("settings.levels.Level-3.Cost-eco", 7500);
|
||||
levels.set("Level-3.Radius", 3);
|
||||
levels.set("Level-3.Speed-Multiplier", 1.5);
|
||||
levels.set("Level-3.Auto-Harvest", true);
|
||||
levels.set("Level-3.Auto-Replant", true);
|
||||
levels.set("Level-3.Cost-xp", 25);
|
||||
levels.set("Level-3.Cost-eco", 7500);
|
||||
|
||||
getConfig().addDefault("settings.levels.Level-4.Radius", 3);
|
||||
getConfig().addDefault("settings.levels.Level-4.Speed-Multiplier", 2);
|
||||
getConfig().addDefault("settings.levels.Level-4.Auto-Harvest", true);
|
||||
getConfig().addDefault("settings.levels.Level-4.Auto-Replant", true);
|
||||
getConfig().addDefault("settings.levels.Level-4.Cost-xp", 30);
|
||||
getConfig().addDefault("settings.levels.Level-4.Cost-eco", 10000);
|
||||
levels.set("Level-4.Radius", 3);
|
||||
levels.set("Level-4.Speed-Multiplier", 2);
|
||||
levels.set("Level-4.Auto-Harvest", true);
|
||||
levels.set("Level-4.Auto-Replant", true);
|
||||
levels.set("Level-4.Cost-xp", 30);
|
||||
levels.set("Level-4.Cost-eco", 10000);
|
||||
|
||||
getConfig().addDefault("settings.levels.Level-5.Radius", 3);
|
||||
getConfig().addDefault("settings.levels.Level-5.Speed-Multiplier", 2.5);
|
||||
getConfig().addDefault("settings.levels.Level-5.Auto-Harvest", true);
|
||||
getConfig().addDefault("settings.levels.Level-5.Auto-Replant", true);
|
||||
getConfig().addDefault("settings.levels.Level-5.Cost-xp", 35);
|
||||
getConfig().addDefault("settings.levels.Level-5.Cost-eco", 12000);
|
||||
levels.set("Level-5.Radius", 3);
|
||||
levels.set("Level-5.Speed-Multiplier", 2.5);
|
||||
levels.set("Level-5.Auto-Harvest", true);
|
||||
levels.set("Level-5.Auto-Replant", true);
|
||||
levels.set("Level-5.Cost-xp", 35);
|
||||
levels.set("Level-5.Cost-eco", 12000);
|
||||
|
||||
getConfig().addDefault("settings.levels.Level-6.Radius", 4);
|
||||
getConfig().addDefault("settings.levels.Level-6.Speed-Multiplier", 3);
|
||||
getConfig().addDefault("settings.levels.Level-6.Auto-Harvest", true);
|
||||
getConfig().addDefault("settings.levels.Level-6.Auto-Replant", true);
|
||||
getConfig().addDefault("settings.levels.Level-6.Cost-xp", 40);
|
||||
getConfig().addDefault("settings.levels.Level-6.Cost-eco", 25000);
|
||||
levels.set("Level-6.Radius", 4);
|
||||
levels.set("Level-6.Speed-Multiplier", 3);
|
||||
levels.set("Level-6.Auto-Harvest", true);
|
||||
levels.set("Level-6.Auto-Replant", true);
|
||||
levels.set("Level-6.Cost-xp", 40);
|
||||
levels.set("Level-6.Cost-eco", 25000);
|
||||
}
|
||||
|
||||
getConfig().options().copyDefaults(true);
|
||||
@ -290,12 +292,10 @@ public class EpicFarmingPlugin extends JavaPlugin implements EpicFarming {
|
||||
return locale;
|
||||
}
|
||||
|
||||
|
||||
private void register(Supplier<ProtectionPluginHook> hookSupplier) {
|
||||
this.registerProtectionHook(hookSupplier.get());
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void registerProtectionHook(ProtectionPluginHook hook) {
|
||||
Preconditions.checkNotNull(hook, "Cannot register null hook");
|
||||
@ -359,15 +359,27 @@ public class EpicFarmingPlugin extends JavaPlugin implements EpicFarming {
|
||||
return levelManager;
|
||||
}
|
||||
|
||||
public FarmingHandler getFarmingHandler() {
|
||||
return farmingHandler;
|
||||
public References getReferences() {
|
||||
return references;
|
||||
}
|
||||
|
||||
public SettingsManager getSettingsManager() {
|
||||
return settingsManager;
|
||||
}
|
||||
|
||||
public CommandManager getCommandManager() {
|
||||
return commandManager;
|
||||
}
|
||||
|
||||
public PlayerActionManager getPlayerActionManager() {
|
||||
return playerActionManager;
|
||||
}
|
||||
|
||||
public GrowthHandler getGrowthHandler() {
|
||||
return growthHandler;
|
||||
public GrowthTask getGrowthTask() {
|
||||
return growthTask;
|
||||
}
|
||||
|
||||
public FarmTask getFarmTask() {
|
||||
return farmTask;
|
||||
}
|
||||
}
|
@ -0,0 +1,41 @@
|
||||
package com.songoda.epicfarming.command;
|
||||
|
||||
import com.songoda.epicfarming.EpicFarmingPlugin;
|
||||
import org.bukkit.command.CommandSender;
|
||||
|
||||
public abstract class AbstractCommand {
|
||||
|
||||
public enum ReturnType { SUCCESS, FAILURE, SYNTAX_ERROR }
|
||||
|
||||
private final AbstractCommand parent;
|
||||
|
||||
private final String command;
|
||||
|
||||
private final boolean noConsole;
|
||||
|
||||
protected AbstractCommand(String command, AbstractCommand parent, boolean noConsole) {
|
||||
this.command = command;
|
||||
this.parent = parent;
|
||||
this.noConsole = noConsole;
|
||||
}
|
||||
|
||||
public AbstractCommand getParent() {
|
||||
return parent;
|
||||
}
|
||||
|
||||
public String getCommand() {
|
||||
return command;
|
||||
}
|
||||
|
||||
public boolean isNoConsole() {
|
||||
return noConsole;
|
||||
}
|
||||
|
||||
protected abstract ReturnType runCommand(EpicFarmingPlugin instance, CommandSender sender, String... args);
|
||||
|
||||
public abstract String getPermissionNode();
|
||||
|
||||
public abstract String getSyntax();
|
||||
|
||||
public abstract String getDescription();
|
||||
}
|
@ -0,0 +1,81 @@
|
||||
package com.songoda.epicfarming.command;
|
||||
|
||||
import com.songoda.arconix.api.methods.formatting.TextComponent;
|
||||
import com.songoda.epicfarming.EpicFarmingPlugin;
|
||||
import com.songoda.epicfarming.api.EpicFarming;
|
||||
import com.songoda.epicfarming.command.commands.CommandEpicFarming;
|
||||
import com.songoda.epicfarming.command.commands.CommandGiveFarmItem;
|
||||
import com.songoda.epicfarming.command.commands.CommandReload;
|
||||
import com.songoda.epicfarming.command.commands.CommandSettings;
|
||||
import org.bukkit.command.Command;
|
||||
import org.bukkit.command.CommandExecutor;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
public class CommandManager implements CommandExecutor {
|
||||
|
||||
private EpicFarmingPlugin instance;
|
||||
|
||||
private List<AbstractCommand> commands = new ArrayList<>();
|
||||
|
||||
public CommandManager(EpicFarmingPlugin instance) {
|
||||
this.instance = instance;
|
||||
|
||||
instance.getCommand("EpicFarming").setExecutor(this);
|
||||
|
||||
AbstractCommand commandEpicSpawners = addCommand(new CommandEpicFarming());
|
||||
|
||||
addCommand(new CommandReload(commandEpicSpawners));
|
||||
addCommand(new CommandSettings(commandEpicSpawners));
|
||||
addCommand(new CommandGiveFarmItem(commandEpicSpawners));
|
||||
}
|
||||
|
||||
private AbstractCommand addCommand(AbstractCommand abstractCommand) {
|
||||
commands.add(abstractCommand);
|
||||
return abstractCommand;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onCommand(CommandSender commandSender, Command command, String s, String[] strings) {
|
||||
for (AbstractCommand abstractCommand : commands) {
|
||||
if (abstractCommand.getCommand().equalsIgnoreCase(command.getName())) {
|
||||
if (strings.length == 0) {
|
||||
processRequirements(abstractCommand, commandSender, strings);
|
||||
return true;
|
||||
}
|
||||
} else if (strings.length != 0 && abstractCommand.getParent() != null && abstractCommand.getParent().getCommand().equalsIgnoreCase(command.getName())) {
|
||||
String cmd = strings[0];
|
||||
if (cmd.equalsIgnoreCase(abstractCommand.getCommand())) {
|
||||
processRequirements(abstractCommand, commandSender, strings);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
commandSender.sendMessage(instance.getReferences().getPrefix() + TextComponent.formatText("&7The command you entered does not exist or is spelt incorrectly."));
|
||||
return true;
|
||||
}
|
||||
|
||||
private void processRequirements(AbstractCommand command, CommandSender sender, String[] strings) {
|
||||
if (!(sender instanceof Player) && command.isNoConsole()) {
|
||||
sender.sendMessage("You must be a player to use this command.");
|
||||
return;
|
||||
}
|
||||
if (command.getPermissionNode() == null || sender.hasPermission(command.getPermissionNode())) {
|
||||
AbstractCommand.ReturnType returnType = command.runCommand(instance, sender, strings);
|
||||
if (returnType == AbstractCommand.ReturnType.SYNTAX_ERROR) {
|
||||
sender.sendMessage(instance.getReferences().getPrefix() + TextComponent.formatText("&cInvalid Syntax!"));
|
||||
sender.sendMessage(instance.getReferences().getPrefix() + TextComponent.formatText("&7The valid syntax is: &6" + command.getSyntax() + "&7."));
|
||||
}
|
||||
return;
|
||||
}
|
||||
sender.sendMessage(instance.getReferences().getPrefix() + instance.getLocale().getMessage("event.general.nopermission"));
|
||||
}
|
||||
|
||||
public List<AbstractCommand> getCommands() {
|
||||
return Collections.unmodifiableList(commands);
|
||||
}
|
||||
}
|
@ -0,0 +1,43 @@
|
||||
package com.songoda.epicfarming.command.commands;
|
||||
|
||||
import com.songoda.arconix.api.methods.formatting.TextComponent;
|
||||
import com.songoda.epicfarming.EpicFarmingPlugin;
|
||||
import com.songoda.epicfarming.command.AbstractCommand;
|
||||
import org.bukkit.command.CommandSender;
|
||||
|
||||
public class CommandEpicFarming extends AbstractCommand {
|
||||
|
||||
public CommandEpicFarming() {
|
||||
super("EpicFarming", null, false);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected ReturnType runCommand(EpicFarmingPlugin instance, CommandSender sender, String... args) {
|
||||
sender.sendMessage("");
|
||||
sender.sendMessage(TextComponent.formatText(instance.getReferences().getPrefix() + "&7Version " + instance.getDescription().getVersion() + " Created with <3 by &5&l&oBrianna"));
|
||||
|
||||
for (AbstractCommand command : instance.getCommandManager().getCommands()) {
|
||||
if (command.getPermissionNode() == null || sender.hasPermission(command.getPermissionNode())) {
|
||||
sender.sendMessage(TextComponent.formatText("&8 - &a" + command.getSyntax() + "&7 - " + command.getDescription()));
|
||||
}
|
||||
}
|
||||
sender.sendMessage("");
|
||||
|
||||
return ReturnType.SUCCESS;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getPermissionNode() {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getSyntax() {
|
||||
return "/EpicFarming";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getDescription() {
|
||||
return "Displays this page.";
|
||||
}
|
||||
}
|
@ -0,0 +1,66 @@
|
||||
package com.songoda.epicfarming.command.commands;
|
||||
|
||||
import com.sk89q.worldedit.internal.expression.runtime.Return;
|
||||
import com.songoda.arconix.api.methods.formatting.TextComponent;
|
||||
import com.songoda.arconix.plugin.Arconix;
|
||||
import com.songoda.epicfarming.EpicFarmingPlugin;
|
||||
import com.songoda.epicfarming.command.AbstractCommand;
|
||||
import com.songoda.epicfarming.farming.ELevel;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
public class CommandGiveFarmItem extends AbstractCommand {
|
||||
|
||||
public CommandGiveFarmItem(AbstractCommand parent) {
|
||||
super("givefarmitem", parent, false);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected ReturnType runCommand(EpicFarmingPlugin instance, CommandSender sender, String... args) {
|
||||
if (args.length == 2) return ReturnType.SYNTAX_ERROR;
|
||||
|
||||
ELevel level = instance.getLevelManager().getLowestLevel();
|
||||
Player player;
|
||||
if (args.length != 1 && Bukkit.getPlayer(args[1]) == null) {
|
||||
sender.sendMessage(instance.getReferences().getPrefix() + Arconix.pl().getApi().format().formatText("&cThat player does not exist or is currently offline."));
|
||||
return ReturnType.FAILURE;
|
||||
} else if (args.length == 1) {
|
||||
if (!(sender instanceof Player)) {
|
||||
sender.sendMessage(instance.getReferences().getPrefix() + Arconix.pl().getApi().format().formatText("&cYou need to be a player to give a farm item to yourself."));
|
||||
return ReturnType.FAILURE;
|
||||
}
|
||||
player = (Player)sender;
|
||||
} else {
|
||||
player = Bukkit.getPlayer(args[1]);
|
||||
}
|
||||
|
||||
|
||||
if (args.length >= 3 && !instance.getLevelManager().isLevel(Integer.parseInt(args[2]))) {
|
||||
sender.sendMessage(instance.getReferences().getPrefix() + Arconix.pl().getApi().format().formatText("&cNot a valid level... The current valid levels are: &4" + instance.getLevelManager().getLowestLevel().getLevel() + "-" + instance.getLevelManager().getHighestLevel().getLevel() + "&c."));
|
||||
return ReturnType.FAILURE;
|
||||
} else if (args.length != 1){
|
||||
|
||||
level = instance.getLevelManager().getLevel(Integer.parseInt(args[2]));
|
||||
}
|
||||
player.getInventory().addItem(instance.makeFarmItem(level));
|
||||
player.sendMessage(instance.getReferences().getPrefix() + instance.getLocale().getMessage("command.give.success", level.getLevel()));
|
||||
|
||||
return ReturnType.SUCCESS;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getPermissionNode() {
|
||||
return "epicfarming.admin";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getSyntax() {
|
||||
return "/efa givefarmitem [player] <level>";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getDescription() {
|
||||
return "Give a farm item to a player.";
|
||||
}
|
||||
}
|
@ -0,0 +1,35 @@
|
||||
package com.songoda.epicfarming.command.commands;
|
||||
|
||||
import com.songoda.arconix.api.methods.formatting.TextComponent;
|
||||
import com.songoda.epicfarming.EpicFarmingPlugin;
|
||||
import com.songoda.epicfarming.command.AbstractCommand;
|
||||
import org.bukkit.command.CommandSender;
|
||||
|
||||
public class CommandReload extends AbstractCommand {
|
||||
|
||||
public CommandReload(AbstractCommand parent) {
|
||||
super("reload", parent, false);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected ReturnType runCommand(EpicFarmingPlugin instance, CommandSender sender, String... args) {
|
||||
instance.reload();
|
||||
sender.sendMessage(TextComponent.formatText(instance.getReferences().getPrefix() + "&7Configuration and Language files reloaded."));
|
||||
return ReturnType.SUCCESS;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getPermissionNode() {
|
||||
return "epicfarming.admin";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getSyntax() {
|
||||
return "/efa reload";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getDescription() {
|
||||
return "Reload the Configuration and Language files.";
|
||||
}
|
||||
}
|
@ -0,0 +1,34 @@
|
||||
package com.songoda.epicfarming.command.commands;
|
||||
|
||||
import com.songoda.epicfarming.EpicFarmingPlugin;
|
||||
import com.songoda.epicfarming.command.AbstractCommand;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
public class CommandSettings extends AbstractCommand {
|
||||
|
||||
public CommandSettings(AbstractCommand parent) {
|
||||
super("settings", parent, true);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected ReturnType runCommand(EpicFarmingPlugin instance, CommandSender sender, String... args) {
|
||||
instance.getSettingsManager().openSettingsManager((Player)sender);
|
||||
return ReturnType.SUCCESS;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getPermissionNode() {
|
||||
return "epicfarming.admin";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getSyntax() {
|
||||
return "/efa settings";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getDescription() {
|
||||
return "Edit the EpicFarming Settings.";
|
||||
}
|
||||
}
|
@ -1,95 +0,0 @@
|
||||
package com.songoda.epicfarming.handlers;
|
||||
|
||||
import com.songoda.arconix.plugin.Arconix;
|
||||
import com.songoda.epicfarming.EpicFarmingPlugin;
|
||||
import com.songoda.epicfarming.farming.ELevel;
|
||||
import com.songoda.epicfarming.utils.Debugger;
|
||||
import com.songoda.epicfarming.utils.Methods;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.command.Command;
|
||||
import org.bukkit.command.CommandExecutor;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
/**
|
||||
* Created by songoda on 3/14/2017.
|
||||
*/
|
||||
|
||||
public class CommandHandler implements CommandExecutor {
|
||||
|
||||
private EpicFarmingPlugin instance;
|
||||
|
||||
public CommandHandler(EpicFarmingPlugin instance) {
|
||||
this.instance = instance;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args) {
|
||||
try {
|
||||
if (args.length == 0 || args[0].equalsIgnoreCase("help") || args[0].equalsIgnoreCase("?")) {
|
||||
sender.sendMessage("");
|
||||
sender.sendMessage(Arconix.pl().getApi().format().formatText(instance.references.getPrefix() + "&7" + instance.getDescription().getVersion() + " Created by &5&l&oBrianna"));
|
||||
sender.sendMessage(Arconix.pl().getApi().format().formatText(" &8- &aEFA help &7Displays this page."));
|
||||
sender.sendMessage(Arconix.pl().getApi().format().formatText(" &8- &aEFA settings &7Edit the EpicFarming Settings."));
|
||||
sender.sendMessage(Arconix.pl().getApi().format().formatText(" &8- &aEFA reload &7Reloads Configuration and Language files."));
|
||||
sender.sendMessage(Arconix.pl().getApi().format().formatText(" &8- &aEFA givefarmitem [player] [level] &7Give a farm item to a player."));
|
||||
sender.sendMessage("");
|
||||
} else if (args[0].equalsIgnoreCase("reload")) {
|
||||
if (!sender.hasPermission("epicfarming.admin")) {
|
||||
sender.sendMessage(instance.references.getPrefix() + instance.getLocale().getMessage("event.general.nopermission"));
|
||||
} else {
|
||||
instance.reload();
|
||||
sender.sendMessage(Arconix.pl().getApi().format().formatText(instance.references.getPrefix() + "&8Configuration and Language files reloaded."));
|
||||
}
|
||||
} else if (args[0].equalsIgnoreCase("givefarmitem")) {
|
||||
if (!sender.hasPermission("epicfarming.admin")) {
|
||||
sender.sendMessage(instance.references.getPrefix() + instance.getLocale().getMessage("event.general.nopermission"));
|
||||
return true;
|
||||
}
|
||||
if (args.length >= 1) {
|
||||
|
||||
ELevel level = instance.getLevelManager().getLowestLevel();
|
||||
Player player;
|
||||
if (args.length != 1 && Bukkit.getPlayer(args[1]) == null) {
|
||||
sender.sendMessage(instance.references.getPrefix() + Arconix.pl().getApi().format().formatText("&cThat player does not exist or is currently offline."));
|
||||
return true;
|
||||
} else if (args.length == 1) {
|
||||
if (!(sender instanceof Player)) {
|
||||
sender.sendMessage(instance.references.getPrefix() + Arconix.pl().getApi().format().formatText("&cYou need to be a player to give a farm item to yourself."));
|
||||
return true;
|
||||
}
|
||||
player = (Player)sender;
|
||||
} else {
|
||||
player = Bukkit.getPlayer(args[1]);
|
||||
}
|
||||
|
||||
|
||||
if (args.length >= 3 && !instance.getLevelManager().isLevel(Integer.parseInt(args[2]))) {
|
||||
sender.sendMessage(instance.references.getPrefix() + Arconix.pl().getApi().format().formatText("&cNot a valid level... The current valid levels are: &4" + instance.getLevelManager().getLowestLevel().getLevel() + "-" + instance.getLevelManager().getHighestLevel().getLevel() + "&c."));
|
||||
return true;
|
||||
} else if (args.length != 1){
|
||||
level = instance.getLevelManager().getLevel(Integer.parseInt(args[2]));
|
||||
}
|
||||
player.getInventory().addItem(instance.makeFarmItem(level));
|
||||
player.sendMessage(instance.references.getPrefix() + instance.getLocale().getMessage("command.give.success", level.getLevel()));
|
||||
|
||||
} else if (Bukkit.getPlayerExact(args[1]) == null) {
|
||||
sender.sendMessage(instance.references.getPrefix() + Arconix.pl().getApi().format().formatText("&cThat username does not exist, or the user is not online!"));
|
||||
}
|
||||
} else if (sender instanceof Player) {
|
||||
if (args[0].equalsIgnoreCase("settings")) {
|
||||
if (!sender.hasPermission("epicfarming.admin")) {
|
||||
sender.sendMessage(instance.references.getPrefix() + instance.getLocale().getMessage("event.general.nopermission"));
|
||||
} else {
|
||||
Player p = (Player) sender;
|
||||
instance.settingsManager.openSettingsManager(p);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
} catch (Exception ex) {
|
||||
Debugger.runReport(ex);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
@ -1,174 +0,0 @@
|
||||
package com.songoda.epicfarming.handlers;
|
||||
|
||||
import com.songoda.epicfarming.EpicFarmingPlugin;
|
||||
import com.songoda.epicfarming.api.farming.Farm;
|
||||
import com.songoda.epicfarming.farming.Crop;
|
||||
import com.songoda.epicfarming.farming.EFarm;
|
||||
import com.songoda.epicfarming.utils.CropType;
|
||||
import com.songoda.epicfarming.utils.Debugger;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.CropState;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.block.Block;
|
||||
import org.bukkit.block.BlockFace;
|
||||
import org.bukkit.block.BlockState;
|
||||
import org.bukkit.block.Hopper;
|
||||
import org.bukkit.inventory.Inventory;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.material.Crops;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Random;
|
||||
|
||||
public class FarmingHandler {
|
||||
|
||||
private EpicFarmingPlugin instance;
|
||||
|
||||
public FarmingHandler(EpicFarmingPlugin instance) {
|
||||
this.instance = instance;
|
||||
Bukkit.getScheduler().scheduleSyncRepeatingTask(EpicFarmingPlugin.getInstance(), this::farmRunner, 0, instance.getConfig().getInt("Main.Farm Tick Speed"));
|
||||
Bukkit.getScheduler().scheduleSyncRepeatingTask(EpicFarmingPlugin.getInstance(), this::hopRunner, 0, 8);
|
||||
}
|
||||
|
||||
|
||||
private void farmRunner() {
|
||||
try {
|
||||
for (Farm farm : instance.getFarmManager().getFarms().values()) {
|
||||
if (farm.getLocation() == null) continue;
|
||||
for (Block block : getCrops(farm, true)) {
|
||||
Crops crop = (Crops) block.getState().getData();
|
||||
|
||||
// Add to GrowthHandler
|
||||
if (!instance.getGrowthHandler().liveCrops.containsKey(block.getLocation()))
|
||||
instance.getGrowthHandler().liveCrops.put(block.getLocation(), new Crop(block.getLocation(), farm));
|
||||
|
||||
if (!farm.getLevel().isAutoHarvest()
|
||||
|| !crop.getState().equals(CropState.RIPE)
|
||||
|| !doDrop(farm, block.getType())) continue;
|
||||
|
||||
|
||||
if (farm.getLevel().isAutoReplant()) {
|
||||
BlockState cropState = block.getState();
|
||||
Crops cropData = (Crops) cropState.getData();
|
||||
cropData.setState(CropState.VERY_SMALL);
|
||||
cropState.setData(cropData);
|
||||
cropState.update();
|
||||
continue;
|
||||
}
|
||||
block.setType(Material.AIR);
|
||||
}
|
||||
}
|
||||
} catch (Exception ex) {
|
||||
Debugger.runReport(ex);
|
||||
}
|
||||
}
|
||||
|
||||
private void hopRunner() {
|
||||
for (Farm farm : instance.getFarmManager().getFarms().values()) {
|
||||
if (farm.getLocation() == null || farm.getLocation().getBlock() == null) {
|
||||
instance.getFarmManager().removeFarm(farm.getLocation());
|
||||
continue;
|
||||
}
|
||||
Block block = farm.getLocation().getBlock();
|
||||
|
||||
if (block.getRelative(BlockFace.DOWN).getType() != Material.HOPPER)
|
||||
return;
|
||||
|
||||
Inventory inventory = farm.getInventory();
|
||||
Inventory hopperInventory = ((Hopper) block.getRelative(BlockFace.DOWN).getState()).getInventory();
|
||||
|
||||
for (int i = 27; i < inventory.getSize(); i++) {
|
||||
if (inventory.getItem(i) == null || inventory.getItem(i).getType() == Material.AIR) continue;
|
||||
|
||||
int amtToMove = 1;
|
||||
|
||||
ItemStack item = inventory.getItem(i);
|
||||
|
||||
ItemStack toMove = item.clone();
|
||||
toMove.setAmount(amtToMove);
|
||||
|
||||
int newAmt = item.getAmount() - amtToMove;
|
||||
|
||||
if (canHop(hopperInventory, toMove)) {
|
||||
if (newAmt <= 0)
|
||||
inventory.setItem(i, null);
|
||||
else
|
||||
item.setAmount(newAmt);
|
||||
hopperInventory.addItem(toMove);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private boolean canHop(Inventory i, ItemStack item) {
|
||||
if (i.firstEmpty() != -1) return true;
|
||||
for (ItemStack it : i.getContents()) {
|
||||
if (it == null || it.isSimilar(item) && (it.getAmount() + item.getAmount()) <= it.getMaxStackSize()) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
private boolean doDrop(Farm farm, Material material) {
|
||||
Random random = new Random();
|
||||
|
||||
CropType cropTypeData = CropType.getCropType(material);
|
||||
|
||||
if (material == null || farm == null || cropTypeData == null) return false;
|
||||
|
||||
|
||||
ItemStack stack = new ItemStack(cropTypeData.getYieldMaterial());
|
||||
ItemStack seedStack = new ItemStack(cropTypeData.getSeedMaterial(), random.nextInt(3) + 1);
|
||||
|
||||
if (!canMove(farm.getInventory(), stack)) return false;
|
||||
farm.getInventory().addItem(stack);
|
||||
farm.getInventory().addItem(seedStack);
|
||||
return true;
|
||||
}
|
||||
|
||||
public List<Block> getCrops(Farm farm, boolean add) {
|
||||
List<Block> crops = new ArrayList<>();
|
||||
|
||||
Block block = farm.getLocation().getBlock();
|
||||
int radius = farm.getLevel().getRadius();
|
||||
int bx = block.getX();
|
||||
int by = block.getY();
|
||||
int bz = block.getZ();
|
||||
for (int fx = -radius; fx <= radius; fx++) {
|
||||
for (int fy = -2; fy <= 1; fy++) {
|
||||
for (int fz = -radius; fz <= radius; fz++) {
|
||||
Block b2 = block.getWorld().getBlockAt(bx + fx, by + fy, bz + fz);
|
||||
|
||||
if (!(b2.getState().getData() instanceof Crops)) continue;
|
||||
|
||||
if (add)
|
||||
crops.add(b2);
|
||||
else {
|
||||
instance.getGrowthHandler().liveCrops.remove(b2.getLocation());
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
return crops;
|
||||
}
|
||||
|
||||
private boolean canMove(Inventory inventory, ItemStack item) {
|
||||
try {
|
||||
if (inventory.firstEmpty() != -1) return true;
|
||||
|
||||
for (ItemStack stack : inventory.getContents()) {
|
||||
if (stack.isSimilar(item) && stack.getAmount() < stack.getMaxStackSize()) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
} catch (Exception e) {
|
||||
Debugger.runReport(e);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
@ -1,13 +1,11 @@
|
||||
package com.songoda.epicfarming.events;
|
||||
package com.songoda.epicfarming.listeners;
|
||||
|
||||
import com.songoda.epicfarming.EpicFarmingPlugin;
|
||||
import com.songoda.epicfarming.api.farming.Farm;
|
||||
import com.songoda.epicfarming.api.farming.Level;
|
||||
import com.songoda.epicfarming.farming.EFarm;
|
||||
import com.songoda.epicfarming.farming.EFarmManager;
|
||||
import com.songoda.epicfarming.farming.ELevel;
|
||||
import com.songoda.epicfarming.utils.Debugger;
|
||||
import com.songoda.epicfarming.utils.Methods;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.Material;
|
||||
@ -125,7 +123,7 @@ public class BlockListeners implements Listener {
|
||||
|
||||
Farm farm = instance.getFarmManager().removeFarm(event.getBlock().getLocation());
|
||||
|
||||
instance.getFarmingHandler().getCrops(farm, false);
|
||||
instance.getFarmTask().getCrops(farm, false);
|
||||
|
||||
if (farm == null) return;
|
||||
|
@ -1,4 +1,4 @@
|
||||
package com.songoda.epicfarming.events;
|
||||
package com.songoda.epicfarming.listeners;
|
||||
|
||||
import com.songoda.epicfarming.utils.Debugger;
|
||||
import org.bukkit.event.EventHandler;
|
@ -1,4 +1,4 @@
|
||||
package com.songoda.epicfarming.events;
|
||||
package com.songoda.epicfarming.listeners;
|
||||
|
||||
import com.songoda.epicfarming.EpicFarmingPlugin;
|
||||
import com.songoda.epicfarming.farming.EFarm;
|
@ -1,4 +1,4 @@
|
||||
package com.songoda.epicfarming.events;
|
||||
package com.songoda.epicfarming.listeners;
|
||||
|
||||
import com.songoda.epicfarming.EpicFarmingPlugin;
|
||||
import com.songoda.epicfarming.api.farming.UpgradeType;
|
@ -0,0 +1,124 @@
|
||||
package com.songoda.epicfarming.tasks;
|
||||
|
||||
import com.songoda.epicfarming.EpicFarmingPlugin;
|
||||
import com.songoda.epicfarming.api.EpicFarming;
|
||||
import com.songoda.epicfarming.api.farming.Farm;
|
||||
import com.songoda.epicfarming.farming.Crop;
|
||||
import com.songoda.epicfarming.utils.CropType;
|
||||
import com.songoda.epicfarming.utils.Debugger;
|
||||
import org.bukkit.CropState;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.block.Block;
|
||||
import org.bukkit.block.BlockState;
|
||||
import org.bukkit.inventory.Inventory;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.material.Crops;
|
||||
import org.bukkit.scheduler.BukkitRunnable;
|
||||
|
||||
import java.util.*;
|
||||
|
||||
public class FarmTask extends BukkitRunnable {
|
||||
|
||||
private static FarmTask instance;
|
||||
private static EpicFarmingPlugin plugin;
|
||||
|
||||
private static final Random random = new Random();
|
||||
|
||||
public static FarmTask startTask(EpicFarmingPlugin pl) {
|
||||
if (instance == null) {
|
||||
instance = new FarmTask();
|
||||
plugin = pl;
|
||||
instance.runTaskTimer(plugin, 0, plugin.getConfig().getInt("Main.Growth Tick Speed"));
|
||||
}
|
||||
|
||||
return instance;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
for (Farm farm : plugin.getFarmManager().getFarms().values()) {
|
||||
if (farm.getLocation() == null) continue;
|
||||
for (Block block : getCrops(farm, true)) {
|
||||
Crops crop = (Crops) block.getState().getData();
|
||||
|
||||
// Add to GrowthTask
|
||||
plugin.getGrowthTask().addLiveCrop(block.getLocation(), new Crop(block.getLocation(), farm));
|
||||
|
||||
if (!farm.getLevel().isAutoHarvest()
|
||||
|| !crop.getState().equals(CropState.RIPE)
|
||||
|| !doDrop(farm, block.getType())) continue;
|
||||
|
||||
if (farm.getLevel().isAutoReplant()) {
|
||||
BlockState cropState = block.getState();
|
||||
Crops cropData = (Crops) cropState.getData();
|
||||
cropData.setState(CropState.VERY_SMALL);
|
||||
cropState.setData(cropData);
|
||||
cropState.update();
|
||||
continue;
|
||||
}
|
||||
block.setType(Material.AIR);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private boolean doDrop(Farm farm, Material material) {
|
||||
Random random = new Random();
|
||||
|
||||
CropType cropTypeData = CropType.getCropType(material);
|
||||
|
||||
if (material == null || farm == null || cropTypeData == null) return false;
|
||||
|
||||
|
||||
ItemStack stack = new ItemStack(cropTypeData.getYieldMaterial());
|
||||
ItemStack seedStack = new ItemStack(cropTypeData.getSeedMaterial(), random.nextInt(3) + 1);
|
||||
|
||||
if (!canMove(farm.getInventory(), stack)) return false;
|
||||
farm.getInventory().addItem(stack);
|
||||
farm.getInventory().addItem(seedStack);
|
||||
return true;
|
||||
}
|
||||
|
||||
public List<Block> getCrops(Farm farm, boolean add) {
|
||||
List<Block> crops = new ArrayList<>();
|
||||
|
||||
Block block = farm.getLocation().getBlock();
|
||||
int radius = farm.getLevel().getRadius();
|
||||
int bx = block.getX();
|
||||
int by = block.getY();
|
||||
int bz = block.getZ();
|
||||
for (int fx = -radius; fx <= radius; fx++) {
|
||||
for (int fy = -2; fy <= 1; fy++) {
|
||||
for (int fz = -radius; fz <= radius; fz++) {
|
||||
Block b2 = block.getWorld().getBlockAt(bx + fx, by + fy, bz + fz);
|
||||
|
||||
if (!(b2.getState().getData() instanceof Crops)) continue;
|
||||
|
||||
if (add) {
|
||||
crops.add(b2);
|
||||
continue;
|
||||
}
|
||||
plugin.getGrowthTask().removeCropByLocation(b2.getLocation());
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
return crops;
|
||||
}
|
||||
|
||||
private boolean canMove(Inventory inventory, ItemStack item) {
|
||||
try {
|
||||
if (inventory.firstEmpty() != -1) return true;
|
||||
|
||||
for (ItemStack stack : inventory.getContents()) {
|
||||
if (stack.isSimilar(item) && stack.getAmount() < stack.getMaxStackSize()) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
} catch (Exception e) {
|
||||
Debugger.runReport(e);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
}
|
@ -1,34 +1,43 @@
|
||||
package com.songoda.epicfarming.handlers;
|
||||
package com.songoda.epicfarming.tasks;
|
||||
|
||||
import com.songoda.epicfarming.EpicFarmingPlugin;
|
||||
import com.songoda.epicfarming.farming.Crop;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.CropState;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.block.BlockState;
|
||||
import org.bukkit.material.Crops;
|
||||
import org.bukkit.scheduler.BukkitRunnable;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.Random;
|
||||
import java.util.*;
|
||||
|
||||
public class GrowthHandler {
|
||||
public class GrowthTask extends BukkitRunnable {
|
||||
|
||||
public GrowthHandler(EpicFarmingPlugin instance) {
|
||||
Bukkit.getScheduler().scheduleSyncRepeatingTask(EpicFarmingPlugin.getInstance(), this::growthRunner, 0, instance.getConfig().getInt("Main.Growth Tick Speed"));
|
||||
Bukkit.getScheduler().scheduleSyncRepeatingTask(EpicFarmingPlugin.getInstance(), this::clear, 0, instance.getConfig().getInt("Main.Clear Tick Speed"));
|
||||
}
|
||||
private static GrowthTask instance;
|
||||
|
||||
Map<Location, Crop> liveCrops = new HashMap<>();
|
||||
private Map<Location, Crop> liveCrops = new HashMap<>();
|
||||
|
||||
private static final Random random = new Random();
|
||||
|
||||
private void growthRunner() {
|
||||
public static GrowthTask startTask(EpicFarmingPlugin plugin) {
|
||||
if (instance == null) {
|
||||
instance = new GrowthTask();
|
||||
instance.runTaskTimer(plugin, 0, plugin.getConfig().getInt("Main.Growth Tick Speed"));
|
||||
}
|
||||
|
||||
return instance;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
List<Crop> toRemove = new ArrayList<>();
|
||||
|
||||
for (Crop crop : liveCrops.values()) {
|
||||
|
||||
if (!(crop.getLocation().getBlock().getState().getData() instanceof Crops)) continue;
|
||||
if (!(crop.getLocation().getBlock().getState().getData() instanceof Crops)) {
|
||||
toRemove.add(crop);
|
||||
continue;
|
||||
}
|
||||
|
||||
//ToDO: This should be in config.
|
||||
int cap = (int)Math.ceil(60 / crop.getFarm().getLevel().getSpeedMultiplier()) - crop.getTicksLived();
|
||||
@ -47,10 +56,10 @@ public class GrowthHandler {
|
||||
|
||||
switch(cropData.getState()) {
|
||||
case SEEDED:
|
||||
if (material == Material.BEETROOT)
|
||||
cropData.setState(CropState.VERY_SMALL);
|
||||
else
|
||||
cropData.setState(CropState.GERMINATED);
|
||||
if (material == Material.BEETROOT)
|
||||
cropData.setState(CropState.VERY_SMALL);
|
||||
else
|
||||
cropData.setState(CropState.GERMINATED);
|
||||
break;
|
||||
case GERMINATED:
|
||||
cropData.setState(CropState.VERY_SMALL);
|
||||
@ -78,9 +87,17 @@ public class GrowthHandler {
|
||||
crop.setTicksLived(1);
|
||||
|
||||
}
|
||||
for (Crop crop : toRemove)
|
||||
liveCrops.remove(crop);
|
||||
}
|
||||
|
||||
private void clear() {
|
||||
liveCrops.clear();
|
||||
public void addLiveCrop(Location location, Crop crop) {
|
||||
if (!liveCrops.containsKey(location))
|
||||
liveCrops.put(location, crop);
|
||||
}
|
||||
}
|
||||
|
||||
public void removeCropByLocation(Location location) {
|
||||
liveCrops.remove(location);
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,88 @@
|
||||
package com.songoda.epicfarming.tasks;
|
||||
|
||||
import com.songoda.epicfarming.EpicFarmingPlugin;
|
||||
import com.songoda.epicfarming.api.farming.Farm;
|
||||
import com.songoda.epicfarming.api.farming.FarmManager;
|
||||
import com.songoda.epicfarming.farming.Crop;
|
||||
import org.bukkit.CropState;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.block.Block;
|
||||
import org.bukkit.block.BlockFace;
|
||||
import org.bukkit.block.BlockState;
|
||||
import org.bukkit.block.Hopper;
|
||||
import org.bukkit.inventory.Inventory;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.material.Crops;
|
||||
import org.bukkit.scheduler.BukkitRunnable;
|
||||
|
||||
import java.util.*;
|
||||
|
||||
public class HopperTask extends BukkitRunnable {
|
||||
|
||||
private static HopperTask instance;
|
||||
private final FarmManager manager;
|
||||
|
||||
private HopperTask(EpicFarmingPlugin plugin) {
|
||||
this.manager = plugin.getFarmManager();
|
||||
}
|
||||
|
||||
|
||||
public static HopperTask startTask(EpicFarmingPlugin plugin) {
|
||||
if (instance == null) {
|
||||
instance = new HopperTask(plugin);
|
||||
instance.runTaskTimer(plugin, 0, 8);
|
||||
}
|
||||
|
||||
return instance;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
for (Farm farm : manager.getFarms().values()) {
|
||||
if (farm.getLocation() == null || farm.getLocation().getBlock() == null) {
|
||||
manager.removeFarm(farm.getLocation());
|
||||
continue;
|
||||
}
|
||||
Block block = farm.getLocation().getBlock();
|
||||
|
||||
if (block.getRelative(BlockFace.DOWN).getType() != Material.HOPPER)
|
||||
return;
|
||||
|
||||
Inventory inventory = farm.getInventory();
|
||||
Inventory hopperInventory = ((Hopper) block.getRelative(BlockFace.DOWN).getState()).getInventory();
|
||||
|
||||
for (int i = 27; i < inventory.getSize(); i++) {
|
||||
if (inventory.getItem(i) == null || inventory.getItem(i).getType() == Material.AIR) continue;
|
||||
|
||||
int amtToMove = 1;
|
||||
|
||||
ItemStack item = inventory.getItem(i);
|
||||
|
||||
ItemStack toMove = item.clone();
|
||||
toMove.setAmount(amtToMove);
|
||||
|
||||
int newAmt = item.getAmount() - amtToMove;
|
||||
|
||||
if (canHop(hopperInventory, toMove)) {
|
||||
if (newAmt <= 0)
|
||||
inventory.setItem(i, null);
|
||||
else
|
||||
item.setAmount(newAmt);
|
||||
hopperInventory.addItem(toMove);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private boolean canHop(Inventory i, ItemStack item) {
|
||||
if (i.firstEmpty() != -1) return true;
|
||||
for (ItemStack it : i.getContents()) {
|
||||
if (it == null || it.isSimilar(item) && (it.getAmount() + item.getAmount()) <= it.getMaxStackSize()) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
@ -24,7 +24,7 @@ public class Debugger {
|
||||
}
|
||||
|
||||
public static boolean isDebug() {
|
||||
EpicFarmingPlugin plugin = EpicFarmingPlugin.pl();
|
||||
EpicFarmingPlugin plugin = EpicFarmingPlugin.getInstance();
|
||||
return plugin.getConfig().getBoolean("System.Debugger Enabled");
|
||||
}
|
||||
|
||||
|
@ -2,17 +2,13 @@ package com.songoda.epicfarming.utils;
|
||||
|
||||
import com.songoda.arconix.plugin.Arconix;
|
||||
import com.songoda.epicfarming.EpicFarmingPlugin;
|
||||
import com.songoda.epicfarming.farming.ELevel;
|
||||
import org.apache.commons.lang.math.NumberUtils;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.inventory.meta.ItemMeta;
|
||||
|
||||
public class Methods {
|
||||
|
||||
public static ItemStack getGlass() {
|
||||
try {
|
||||
EpicFarmingPlugin plugin = EpicFarmingPlugin.pl();
|
||||
EpicFarmingPlugin plugin = EpicFarmingPlugin.getInstance();
|
||||
return Arconix.pl().getApi().getGUI().getGlass(plugin.getConfig().getBoolean("settings.Rainbow-Glass"), plugin.getConfig().getInt("Interfaces.Glass Type 1"));
|
||||
} catch (Exception ex) {
|
||||
Debugger.runReport(ex);
|
||||
@ -22,7 +18,7 @@ public class Methods {
|
||||
|
||||
public static ItemStack getBackgroundGlass(boolean type) {
|
||||
try {
|
||||
EpicFarmingPlugin plugin = EpicFarmingPlugin.pl();
|
||||
EpicFarmingPlugin plugin = EpicFarmingPlugin.getInstance();
|
||||
if (type)
|
||||
return Arconix.pl().getApi().getGUI().getGlass(false, plugin.getConfig().getInt("Interfaces.Glass Type 2"));
|
||||
else
|
||||
|
@ -195,17 +195,16 @@ public class SettingsManager implements Listener {
|
||||
o4("Main.Sounds Enabled", true),
|
||||
o5("Main.Farm Tick Speed", 70),
|
||||
o6("Main.Growth Tick Speed", 20),
|
||||
o7("Main.Clear Tick Speed", 1800),
|
||||
o8("Main.Farm Block Material", "END_ROD"),
|
||||
o9("Main.Allow Non Command Issued Farm Items", false),
|
||||
o7("Main.Farm Block Material", "END_ROD"),
|
||||
o8("Main.Allow Non Command Issued Farm Items", false),
|
||||
|
||||
o10("Interfaces.Economy Icon", "SUNFLOWER"),
|
||||
o11("Interfaces.XP Icon", "EXPERIENCE_BOTTLE"),
|
||||
o12("Interfaces.Glass Type 1", 7),
|
||||
o13("Interfaces.Glass Type 2", 11),
|
||||
o14("Interfaces.Glass Type 3", 3),
|
||||
o9("Interfaces.Economy Icon", "SUNFLOWER"),
|
||||
o10("Interfaces.XP Icon", "EXPERIENCE_BOTTLE"),
|
||||
o11("Interfaces.Glass Type 1", 7),
|
||||
o12("Interfaces.Glass Type 2", 11),
|
||||
o13("Interfaces.Glass Type 3", 3),
|
||||
|
||||
o15("System.Debugger Enabled", false);
|
||||
o14("System.Debugger Enabled", false);
|
||||
|
||||
private String setting;
|
||||
private Object option;
|
||||
|
Loading…
Reference in New Issue
Block a user