mirror of
https://github.com/songoda/EpicFarming.git
synced 2025-02-22 15:31:34 +01:00
Merge branch 'development' of gitlab.com:Songoda/epicfarming into development
This commit is contained in:
commit
cd1c992edc
@ -16,10 +16,7 @@ import com.songoda.epicfarming.farming.Level;
|
||||
import com.songoda.epicfarming.farming.LevelManager;
|
||||
import com.songoda.epicfarming.listeners.BlockListeners;
|
||||
import com.songoda.epicfarming.listeners.InteractListeners;
|
||||
import com.songoda.epicfarming.listeners.InventoryListeners;
|
||||
import com.songoda.epicfarming.player.PlayerActionManager;
|
||||
import com.songoda.epicfarming.player.PlayerData;
|
||||
import com.songoda.epicfarming.settings.Settings;
|
||||
import com.songoda.epicfarming.settings.Setting;
|
||||
import com.songoda.epicfarming.storage.Storage;
|
||||
import com.songoda.epicfarming.storage.StorageRow;
|
||||
import com.songoda.epicfarming.storage.types.StorageYaml;
|
||||
@ -53,7 +50,6 @@ public class EpicFarming extends SongodaPlugin {
|
||||
private final GuiManager guiManager = new GuiManager(this);
|
||||
private FarmManager farmManager;
|
||||
private LevelManager levelManager;
|
||||
private PlayerActionManager playerActionManager;
|
||||
private CommandManager commandManager;
|
||||
private BoostManager boostManager;
|
||||
|
||||
@ -76,10 +72,6 @@ public class EpicFarming extends SongodaPlugin {
|
||||
public void onPluginDisable() {
|
||||
saveToFile();
|
||||
this.storage.closeConnection();
|
||||
for (PlayerData playerData : playerActionManager.getRegisteredPlayers()) {
|
||||
if (playerData.getPlayer() != null)
|
||||
playerData.getPlayer().closeInventory();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -91,11 +83,11 @@ public class EpicFarming extends SongodaPlugin {
|
||||
EconomyManager.load();
|
||||
|
||||
// Setup Config
|
||||
Settings.setupConfig();
|
||||
this.setLocale(Settings.LANGUGE_MODE.getString(), false);
|
||||
Setting.setupConfig();
|
||||
this.setLocale(Setting.LANGUGE_MODE.getString(), false);
|
||||
|
||||
// Set economy preference
|
||||
EconomyManager.getManager().setPreferredHook(Settings.ECONOMY_PLUGIN.getString());
|
||||
EconomyManager.getManager().setPreferredHook(Setting.ECONOMY_PLUGIN.getString());
|
||||
|
||||
// Register commands
|
||||
this.commandManager = new CommandManager(this);
|
||||
@ -114,7 +106,6 @@ public class EpicFarming extends SongodaPlugin {
|
||||
this.loadLevelManager();
|
||||
|
||||
this.farmManager = new FarmManager();
|
||||
this.playerActionManager = new PlayerActionManager();
|
||||
this.boostManager = new BoostManager();
|
||||
|
||||
/*
|
||||
@ -130,7 +121,7 @@ public class EpicFarming extends SongodaPlugin {
|
||||
List<ItemStack> items = row.get("contents").asItemStackList();
|
||||
UUID placedBY = UUID.fromString(row.get("placedby").asString());
|
||||
Farm farm = new Farm(location, levelManager.getLevel(level), placedBY);
|
||||
farm.loadInventory(items);
|
||||
farm.setItems(items);
|
||||
farmManager.addFarm(location, farm);
|
||||
}
|
||||
}
|
||||
@ -160,7 +151,6 @@ public class EpicFarming extends SongodaPlugin {
|
||||
PluginManager pluginManager = Bukkit.getPluginManager();
|
||||
pluginManager.registerEvents(new BlockListeners(this), this);
|
||||
pluginManager.registerEvents(new InteractListeners(this), this);
|
||||
pluginManager.registerEvents(new InventoryListeners(this), this);
|
||||
|
||||
// Start tasks
|
||||
this.growthTask = GrowthTask.startTask(this);
|
||||
@ -230,7 +220,7 @@ public class EpicFarming extends SongodaPlugin {
|
||||
}
|
||||
|
||||
public ItemStack makeFarmItem(Level level) {
|
||||
ItemStack item = Settings.FARM_BLOCK_MATERIAL.getMaterial().getItem();
|
||||
ItemStack item = Setting.FARM_BLOCK_MATERIAL.getMaterial().getItem();
|
||||
ItemMeta meta = item.getItemMeta();
|
||||
meta.setDisplayName(Methods.formatText(Methods.formatName(level.getLevel(), true)));
|
||||
String line = getLocale().getMessage("general.nametag.lore").getMessage();
|
||||
@ -255,10 +245,6 @@ public class EpicFarming extends SongodaPlugin {
|
||||
return boostManager;
|
||||
}
|
||||
|
||||
public PlayerActionManager getPlayerActionManager() {
|
||||
return playerActionManager;
|
||||
}
|
||||
|
||||
public GrowthTask getGrowthTask() {
|
||||
return growthTask;
|
||||
}
|
||||
|
@ -1,27 +1,19 @@
|
||||
package com.songoda.epicfarming.farming;
|
||||
|
||||
import com.songoda.core.compatibility.CompatibleMaterial;
|
||||
import com.songoda.core.compatibility.CompatibleParticleHandler;
|
||||
import com.songoda.core.compatibility.CompatibleSound;
|
||||
import com.songoda.core.compatibility.ServerVersion;
|
||||
import com.songoda.core.hooks.EconomyManager;
|
||||
import com.songoda.epicfarming.EpicFarming;
|
||||
import com.songoda.epicfarming.boost.BoostData;
|
||||
import com.songoda.epicfarming.player.PlayerData;
|
||||
import com.songoda.epicfarming.settings.Settings;
|
||||
import com.songoda.epicfarming.utils.Methods;
|
||||
import com.songoda.epicfarming.gui.OverviewGui;
|
||||
import com.songoda.epicfarming.settings.Setting;
|
||||
import org.bukkit.*;
|
||||
import org.bukkit.block.Block;
|
||||
import org.bukkit.block.BlockFace;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.inventory.Inventory;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.inventory.meta.ItemMeta;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Random;
|
||||
import java.util.UUID;
|
||||
import java.util.*;
|
||||
|
||||
public class Farm {
|
||||
|
||||
@ -29,7 +21,8 @@ public class Farm {
|
||||
private final List<Block> cachedCrops = new ArrayList<>();
|
||||
private Location location;
|
||||
private Level level;
|
||||
private Inventory inventory;
|
||||
private List<ItemStack> items = new ArrayList<>();
|
||||
private OverviewGui opened = null;
|
||||
private UUID placedBy;
|
||||
private UUID viewing = null;
|
||||
private long lastCached = 0;
|
||||
@ -38,138 +31,17 @@ public class Farm {
|
||||
this.location = location;
|
||||
this.level = level;
|
||||
this.placedBy = placedBy;
|
||||
this.inventory = Bukkit.createInventory(null, 54, Methods.formatName(level.getLevel(), false));
|
||||
}
|
||||
|
||||
public void view(Player player) {
|
||||
if (!player.hasPermission("epicfarming.view"))
|
||||
public void view(Player player, boolean force) {
|
||||
if (!player.hasPermission("epicfarming.view") && !force)
|
||||
return;
|
||||
|
||||
if (viewing != null) return;
|
||||
if (opened != null && !force) return;
|
||||
|
||||
setupOverview(player);
|
||||
opened = new OverviewGui(this, player);
|
||||
|
||||
player.openInventory(inventory);
|
||||
this.viewing = player.getUniqueId();
|
||||
|
||||
PlayerData playerData = EpicFarming.getInstance().getPlayerActionManager().getPlayerAction(player);
|
||||
|
||||
playerData.setFarm(this);
|
||||
|
||||
getInventory();
|
||||
}
|
||||
|
||||
private void setupOverview(Player player) {
|
||||
Inventory inventory = Bukkit.createInventory(null, 54, Methods.formatName(level.getLevel(), false));
|
||||
inventory.setContents(this.inventory.getContents());
|
||||
this.inventory = inventory;
|
||||
|
||||
EpicFarming instance = EpicFarming.getInstance();
|
||||
|
||||
Level nextLevel = instance.getLevelManager().getHighestLevel().getLevel() > level.getLevel() ? instance.getLevelManager().getLevel(level.getLevel() + 1) : null;
|
||||
|
||||
int level = this.level.getLevel();
|
||||
|
||||
ItemStack item = new ItemStack(Material.valueOf(instance.getConfig().getString("Main.Farm Block Material")), 1);
|
||||
ItemMeta itemmeta = item.getItemMeta();
|
||||
itemmeta.setDisplayName(instance.getLocale().getMessage("general.nametag.farm")
|
||||
.processPlaceholder("level", level).getMessage());
|
||||
List<String> lore = this.level.getDescription();
|
||||
lore.add("");
|
||||
if (nextLevel == null) lore.add(instance.getLocale().getMessage("event.upgrade.maxed").getMessage());
|
||||
else {
|
||||
lore.add(instance.getLocale().getMessage("interface.button.level")
|
||||
.processPlaceholder("level", nextLevel.getLevel()).getMessage());
|
||||
lore.addAll(nextLevel.getDescription());
|
||||
}
|
||||
|
||||
BoostData boostData = instance.getBoostManager().getBoost(placedBy);
|
||||
if (boostData != null) {
|
||||
String[] parts = instance.getLocale().getMessage("interface.button.boostedstats")
|
||||
.processPlaceholder("amount", Integer.toString(boostData.getMultiplier()))
|
||||
.processPlaceholder("time", Methods.makeReadable(boostData.getEndTime() - System.currentTimeMillis()))
|
||||
.getMessage().split("\\|");
|
||||
lore.add("");
|
||||
for (String line : parts)
|
||||
lore.add(Methods.formatText(line));
|
||||
}
|
||||
|
||||
itemmeta.setLore(lore);
|
||||
item.setItemMeta(itemmeta);
|
||||
|
||||
ItemStack itemXP = Settings.XP_ICON.getMaterial().getItem();
|
||||
ItemMeta itemmetaXP = itemXP.getItemMeta();
|
||||
itemmetaXP.setDisplayName(instance.getLocale().getMessage("interface.button.upgradewithxp").getMessage());
|
||||
ArrayList<String> loreXP = new ArrayList<>();
|
||||
if (nextLevel != null)
|
||||
loreXP.add(instance.getLocale().getMessage("interface.button.upgradewithxplore")
|
||||
.processPlaceholder("cost", nextLevel.getCostExperiance()).getMessage());
|
||||
else
|
||||
loreXP.add(instance.getLocale().getMessage("event.upgrade.maxed").getMessage());
|
||||
itemmetaXP.setLore(loreXP);
|
||||
itemXP.setItemMeta(itemmetaXP);
|
||||
|
||||
ItemStack itemECO = Settings.ECO_ICON.getMaterial().getItem();
|
||||
ItemMeta itemmetaECO = itemECO.getItemMeta();
|
||||
itemmetaECO.setDisplayName(instance.getLocale().getMessage("interface.button.upgradewitheconomy").getMessage());
|
||||
ArrayList<String> loreECO = new ArrayList<>();
|
||||
if (nextLevel != null)
|
||||
loreECO.add(instance.getLocale().getMessage("interface.button.upgradewitheconomylore")
|
||||
.processPlaceholder("cost", Methods.formatEconomy(nextLevel.getCostEconomy()))
|
||||
.getMessage());
|
||||
else
|
||||
loreECO.add(instance.getLocale().getMessage("event.upgrade.maxed").getMessage());
|
||||
itemmetaECO.setLore(loreECO);
|
||||
itemECO.setItemMeta(itemmetaECO);
|
||||
|
||||
if (instance.getConfig().getBoolean("Main.Upgrade With XP") && player != null && player.hasPermission("EpicFarming.Upgrade.XP")) {
|
||||
inventory.setItem(11, itemXP);
|
||||
}
|
||||
|
||||
inventory.setItem(13, item);
|
||||
|
||||
if (instance.getConfig().getBoolean("Main.Upgrade With Economy") && player != null && player.hasPermission("EpicFarming.Upgrade.ECO")) {
|
||||
inventory.setItem(15, itemECO);
|
||||
}
|
||||
/*
|
||||
inventory.setItem(0, Methods.getBackgroundGlass(true));
|
||||
inventory.setItem(1, Methods.getBackgroundGlass(true));
|
||||
inventory.setItem(2, Methods.getBackgroundGlass(false));
|
||||
inventory.setItem(6, Methods.getBackgroundGlass(false));
|
||||
inventory.setItem(7, Methods.getBackgroundGlass(true));
|
||||
inventory.setItem(8, Methods.getBackgroundGlass(true));
|
||||
inventory.setItem(9, Methods.getBackgroundGlass(true));
|
||||
inventory.setItem(10, Methods.getBackgroundGlass(false));
|
||||
inventory.setItem(16, Methods.getBackgroundGlass(false));
|
||||
inventory.setItem(17, Methods.getBackgroundGlass(true));
|
||||
inventory.setItem(18, Methods.getBackgroundGlass(true));
|
||||
inventory.setItem(19, Methods.getBackgroundGlass(true));
|
||||
inventory.setItem(20, Methods.getBackgroundGlass(false));
|
||||
inventory.setItem(24, Methods.getBackgroundGlass(false));
|
||||
inventory.setItem(25, Methods.getBackgroundGlass(true));
|
||||
inventory.setItem(26, Methods.getBackgroundGlass(true)); */
|
||||
}
|
||||
|
||||
public Inventory getInventory() {
|
||||
return inventory;
|
||||
}
|
||||
|
||||
public void loadInventory(List<ItemStack> items) {
|
||||
setupOverview(null);
|
||||
int i = 27;
|
||||
for (ItemStack item : items) {
|
||||
inventory.setItem(i++, item);
|
||||
}
|
||||
}
|
||||
|
||||
public List<ItemStack> dumpInventory() {
|
||||
List<ItemStack> items = new ArrayList<>();
|
||||
|
||||
for (int i = 27; i < inventory.getSize(); i++) {
|
||||
items.add(inventory.getItem(i));
|
||||
}
|
||||
|
||||
return items;
|
||||
EpicFarming.getInstance().getGuiManager().showGUI(player, opened);
|
||||
}
|
||||
|
||||
public void upgrade(UpgradeType type, Player player) {
|
||||
@ -237,7 +109,7 @@ public class Farm {
|
||||
}
|
||||
|
||||
public boolean tillLand(Location location) {
|
||||
if (Settings.DISABLE_AUTO_TIL_LAND.getBoolean()) return true;
|
||||
if (Setting.DISABLE_AUTO_TIL_LAND.getBoolean()) return true;
|
||||
Block block = location.getBlock();
|
||||
int radius = level.getRadius();
|
||||
int bx = block.getX();
|
||||
@ -277,6 +149,57 @@ public class Farm {
|
||||
return false;
|
||||
}
|
||||
|
||||
public List<ItemStack> getItems() {
|
||||
return Collections.unmodifiableList(items);
|
||||
}
|
||||
|
||||
public void addItem(ItemStack toAdd) {
|
||||
for (ItemStack item : getItems()) {
|
||||
if (item.getType() != toAdd.getType()
|
||||
|| item.getAmount() + toAdd.getAmount() > item.getMaxStackSize()) continue;
|
||||
item.setAmount(item.getAmount() + toAdd.getAmount());
|
||||
if (opened != null)
|
||||
opened.updateInventory();
|
||||
return;
|
||||
}
|
||||
items.add(toAdd);
|
||||
if (opened != null)
|
||||
opened.updateInventory();
|
||||
}
|
||||
|
||||
|
||||
public void removeMaterial(Material material, int amount) {
|
||||
for (ItemStack item : getItems()) {
|
||||
if (material == item.getType()) {
|
||||
item.setAmount(item.getAmount() - amount);
|
||||
|
||||
if (item.getAmount() <= 0)
|
||||
this.items.remove(item);
|
||||
if (opened != null)
|
||||
opened.updateInventory();
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public boolean willFit(ItemStack item) {
|
||||
if (items.size() < 27) return true;
|
||||
|
||||
for (ItemStack stack : items) {
|
||||
if (stack.isSimilar(item) && stack.getAmount() < stack.getMaxStackSize()) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public void setItems(List<ItemStack> items) {
|
||||
this.items.clear();
|
||||
this.items.addAll(items);
|
||||
if (opened != null)
|
||||
opened.updateInventory();
|
||||
}
|
||||
|
||||
public UUID getViewing() {
|
||||
return viewing;
|
||||
}
|
||||
@ -328,4 +251,8 @@ public class Farm {
|
||||
public Level getLevel() {
|
||||
return level;
|
||||
}
|
||||
|
||||
public void close() {
|
||||
this.opened = null;
|
||||
}
|
||||
}
|
@ -1,6 +0,0 @@
|
||||
package com.songoda.epicfarming.gui;
|
||||
|
||||
import com.songoda.core.gui.Gui;
|
||||
|
||||
public class GUIOverview extends Gui {
|
||||
}
|
166
src/main/java/com/songoda/epicfarming/gui/OverviewGui.java
Normal file
166
src/main/java/com/songoda/epicfarming/gui/OverviewGui.java
Normal file
@ -0,0 +1,166 @@
|
||||
package com.songoda.epicfarming.gui;
|
||||
|
||||
import com.songoda.core.gui.Gui;
|
||||
import com.songoda.core.gui.GuiUtils;
|
||||
import com.songoda.epicfarming.EpicFarming;
|
||||
import com.songoda.epicfarming.boost.BoostData;
|
||||
import com.songoda.epicfarming.farming.Farm;
|
||||
import com.songoda.epicfarming.farming.Level;
|
||||
import com.songoda.epicfarming.farming.UpgradeType;
|
||||
import com.songoda.epicfarming.settings.Setting;
|
||||
import com.songoda.epicfarming.utils.Methods;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.inventory.Inventory;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.inventory.meta.ItemMeta;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class OverviewGui extends Gui {
|
||||
|
||||
private EpicFarming plugin;
|
||||
private Farm farm;
|
||||
private Level level;
|
||||
private Player player;
|
||||
|
||||
public OverviewGui(Farm farm, Player player) {
|
||||
this.plugin = EpicFarming.getInstance();
|
||||
this.farm = farm;
|
||||
this.level = farm.getLevel();
|
||||
this.player = player;
|
||||
this.setRows(6);
|
||||
this.setTitle(Methods.formatName(level.getLevel(), false));
|
||||
this.setAcceptsItems(true);
|
||||
this.setUnlockedRange(3, 0, 5, 8);
|
||||
|
||||
constructGUI();
|
||||
}
|
||||
|
||||
private void constructGUI() {
|
||||
ItemStack glass1 = GuiUtils.getBorderItem(Setting.GLASS_TYPE_1.getMaterial());
|
||||
ItemStack glass2 = GuiUtils.getBorderItem(Setting.GLASS_TYPE_2.getMaterial());
|
||||
ItemStack glass3 = GuiUtils.getBorderItem(Setting.GLASS_TYPE_3.getMaterial());
|
||||
|
||||
this.setDefaultItem(null);
|
||||
|
||||
GuiUtils.mirrorFill(this, 0, 0, false, true, glass2);
|
||||
GuiUtils.mirrorFill(this, 0, 1, false, true, glass2);
|
||||
GuiUtils.mirrorFill(this, 0, 2, false, true, glass3);
|
||||
GuiUtils.mirrorFill(this, 1, 0, false, true, glass2);
|
||||
GuiUtils.mirrorFill(this, 1, 1, false, true, glass3);
|
||||
GuiUtils.mirrorFill(this, 2, 0, false, true, glass2);
|
||||
GuiUtils.mirrorFill(this, 2, 1, false, true, glass2);
|
||||
GuiUtils.mirrorFill(this, 2, 2, false, true, glass3);
|
||||
|
||||
GuiUtils.mirrorFill(this, 0, 3, false, true, glass1);
|
||||
GuiUtils.mirrorFill(this, 0, 4, false, false, glass1);
|
||||
GuiUtils.mirrorFill(this, 1, 3, false, true, glass1);
|
||||
GuiUtils.mirrorFill(this, 1, 2, false, true, glass1);
|
||||
GuiUtils.mirrorFill(this, 2, 3, false, true, glass1);
|
||||
GuiUtils.mirrorFill(this, 2, 4, false, false, glass1);
|
||||
|
||||
Level nextLevel = plugin.getLevelManager().getHighestLevel().getLevel() > level.getLevel() ? plugin.getLevelManager().getLevel(level.getLevel() + 1) : null;
|
||||
|
||||
|
||||
ItemStack item = new ItemStack(Material.valueOf(plugin.getConfig().getString("Main.Farm Block Material")), 1);
|
||||
ItemMeta itemmeta = item.getItemMeta();
|
||||
itemmeta.setDisplayName(plugin.getLocale().getMessage("general.nametag.farm")
|
||||
.processPlaceholder("level", level.getLevel()).getMessage());
|
||||
List<String> lore = level.getDescription();
|
||||
lore.add("");
|
||||
if (nextLevel == null) lore.add(plugin.getLocale().getMessage("event.upgrade.maxed").getMessage());
|
||||
else {
|
||||
lore.add(plugin.getLocale().getMessage("interface.button.level")
|
||||
.processPlaceholder("level", nextLevel.getLevel()).getMessage());
|
||||
lore.addAll(nextLevel.getDescription());
|
||||
}
|
||||
|
||||
BoostData boostData = plugin.getBoostManager().getBoost(farm.getPlacedBy());
|
||||
if (boostData != null) {
|
||||
String[] parts = plugin.getLocale().getMessage("interface.button.boostedstats")
|
||||
.processPlaceholder("amount", Integer.toString(boostData.getMultiplier()))
|
||||
.processPlaceholder("time", Methods.makeReadable(boostData.getEndTime() - System.currentTimeMillis()))
|
||||
.getMessage().split("\\|");
|
||||
lore.add("");
|
||||
for (String line : parts)
|
||||
lore.add(Methods.formatText(line));
|
||||
}
|
||||
|
||||
itemmeta.setLore(lore);
|
||||
item.setItemMeta(itemmeta);
|
||||
|
||||
ItemStack itemXP = Setting.XP_ICON.getMaterial().getItem();
|
||||
ItemMeta itemmetaXP = itemXP.getItemMeta();
|
||||
itemmetaXP.setDisplayName(plugin.getLocale().getMessage("interface.button.upgradewithxp").getMessage());
|
||||
ArrayList<String> loreXP = new ArrayList<>();
|
||||
if (nextLevel != null)
|
||||
loreXP.add(plugin.getLocale().getMessage("interface.button.upgradewithxplore")
|
||||
.processPlaceholder("cost", nextLevel.getCostExperiance()).getMessage());
|
||||
else
|
||||
loreXP.add(plugin.getLocale().getMessage("event.upgrade.maxed").getMessage());
|
||||
itemmetaXP.setLore(loreXP);
|
||||
itemXP.setItemMeta(itemmetaXP);
|
||||
|
||||
ItemStack itemECO = Setting.ECO_ICON.getMaterial().getItem();
|
||||
ItemMeta itemmetaECO = itemECO.getItemMeta();
|
||||
itemmetaECO.setDisplayName(plugin.getLocale().getMessage("interface.button.upgradewitheconomy").getMessage());
|
||||
ArrayList<String> loreECO = new ArrayList<>();
|
||||
if (nextLevel != null)
|
||||
loreECO.add(plugin.getLocale().getMessage("interface.button.upgradewitheconomylore")
|
||||
.processPlaceholder("cost", Methods.formatEconomy(nextLevel.getCostEconomy()))
|
||||
.getMessage());
|
||||
else
|
||||
loreECO.add(plugin.getLocale().getMessage("event.upgrade.maxed").getMessage());
|
||||
itemmetaECO.setLore(loreECO);
|
||||
itemECO.setItemMeta(itemmetaECO);
|
||||
|
||||
if (plugin.getConfig().getBoolean("Main.Upgrade With XP") && player != null && player.hasPermission("EpicFarming.Upgrade.XP")) {
|
||||
setButton(11, itemXP, (event) -> {
|
||||
farm.upgrade(UpgradeType.EXPERIENCE, player);
|
||||
farm.view(player, true);
|
||||
});
|
||||
}
|
||||
|
||||
setItem(13, item);
|
||||
|
||||
if (plugin.getConfig().getBoolean("Main.Upgrade With Economy") && player != null && player.hasPermission("EpicFarming.Upgrade.ECO")) {
|
||||
setButton(15, itemECO, (event) -> {
|
||||
farm.upgrade(UpgradeType.ECONOMY, player);
|
||||
farm.view(player, true);
|
||||
});
|
||||
}
|
||||
// events
|
||||
this.setOnOpen((event) -> updateInventory());
|
||||
this.setDefaultAction((event) ->
|
||||
Bukkit.getScheduler().runTaskLater(plugin, this::updateFarm, 0L));
|
||||
this.setOnClose((event) -> farm.close());
|
||||
|
||||
updateInventory();
|
||||
}
|
||||
|
||||
public void updateInventory() {
|
||||
for (int i = 27; i <= 54; i++) {
|
||||
if (farm.getItems().size() <= (i - 27))
|
||||
setItem(i, null);
|
||||
else
|
||||
setItem(i, farm.getItems().get(i - 27));
|
||||
}
|
||||
}
|
||||
|
||||
public void updateFarm() {
|
||||
List<ItemStack> items = new ArrayList<>();
|
||||
for (int i = 27; i <= 54; i++) {
|
||||
ItemStack item = getItem(i);
|
||||
if (item == null || item.getType() == Material.AIR) continue;
|
||||
items.add(item);
|
||||
}
|
||||
farm.setItems(items);
|
||||
}
|
||||
|
||||
public Inventory getInventory() {
|
||||
return inventory;
|
||||
}
|
||||
}
|
@ -4,7 +4,7 @@ import com.songoda.epicfarming.EpicFarming;
|
||||
import com.songoda.epicfarming.farming.Farm;
|
||||
import com.songoda.epicfarming.farming.FarmManager;
|
||||
import com.songoda.epicfarming.farming.Level;
|
||||
import com.songoda.epicfarming.settings.Settings;
|
||||
import com.songoda.epicfarming.settings.Setting;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.Material;
|
||||
@ -134,7 +134,7 @@ public class BlockListeners implements Listener {
|
||||
|
||||
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
|
||||
public void onBlockBreak(BlockBreakEvent event) {
|
||||
if (event.getBlock().getType() != Settings.FARM_BLOCK_MATERIAL.getMaterial().getMaterial())
|
||||
if (event.getBlock().getType() != Setting.FARM_BLOCK_MATERIAL.getMaterial().getMaterial())
|
||||
return;
|
||||
|
||||
Farm farm = instance.getFarmManager().removeFarm(event.getBlock().getLocation());
|
||||
@ -152,8 +152,7 @@ public class BlockListeners implements Listener {
|
||||
block.setType(Material.AIR);
|
||||
block.getLocation().getWorld().dropItemNaturally(block.getLocation().add(.5, .5, .5), item);
|
||||
|
||||
for (ItemStack itemStack : farm.dumpInventory()) {
|
||||
if (itemStack == null) continue;
|
||||
for (ItemStack itemStack : farm.getItems()) {
|
||||
farm.getLocation().getWorld().dropItemNaturally(farm.getLocation().add(.5, .5, .5), itemStack);
|
||||
}
|
||||
}
|
||||
@ -208,8 +207,7 @@ public class BlockListeners implements Listener {
|
||||
block.setType(Material.AIR);
|
||||
block.getLocation().getWorld().dropItemNaturally(block.getLocation().add(.5, .5, .5), item);
|
||||
|
||||
for (ItemStack itemStack : ((Farm) farm).dumpInventory()) {
|
||||
if (itemStack == null) continue;
|
||||
for (ItemStack itemStack : farm.getItems()) {
|
||||
farm.getLocation().getWorld().dropItemNaturally(farm.getLocation().add(.5, .5, .5), itemStack);
|
||||
}
|
||||
}
|
||||
|
@ -1,9 +1,8 @@
|
||||
package com.songoda.epicfarming.listeners;
|
||||
|
||||
import com.songoda.epicfarming.EpicFarming;
|
||||
import com.songoda.epicfarming.settings.Settings;
|
||||
import com.songoda.epicfarming.settings.Setting;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.EventPriority;
|
||||
import org.bukkit.event.Listener;
|
||||
@ -24,7 +23,7 @@ public class InteractListeners implements Listener {
|
||||
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
|
||||
public void onBlockInteract(PlayerInteractEvent e) {
|
||||
if (e.getClickedBlock() == null
|
||||
|| e.getClickedBlock().getType() != Settings.FARM_BLOCK_MATERIAL.getMaterial().getMaterial())
|
||||
|| e.getClickedBlock().getType() != Setting.FARM_BLOCK_MATERIAL.getMaterial().getMaterial())
|
||||
return;
|
||||
|
||||
if (e.getAction() != Action.RIGHT_CLICK_BLOCK) return;
|
||||
@ -33,7 +32,7 @@ public class InteractListeners implements Listener {
|
||||
|
||||
if (instance.getFarmManager().getFarms().containsKey(location)) {
|
||||
e.setCancelled(true);
|
||||
instance.getFarmManager().getFarm(location).view(e.getPlayer());
|
||||
instance.getFarmManager().getFarm(location).view(e.getPlayer(), false);
|
||||
}
|
||||
}
|
||||
}
|
@ -1,63 +0,0 @@
|
||||
package com.songoda.epicfarming.listeners;
|
||||
|
||||
import com.songoda.epicfarming.EpicFarming;
|
||||
import com.songoda.epicfarming.farming.Farm;
|
||||
import com.songoda.epicfarming.farming.UpgradeType;
|
||||
import com.songoda.epicfarming.player.PlayerData;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.Listener;
|
||||
import org.bukkit.event.inventory.InventoryClickEvent;
|
||||
import org.bukkit.event.inventory.InventoryCloseEvent;
|
||||
import org.bukkit.event.inventory.InventoryType;
|
||||
|
||||
/**
|
||||
* Created by songoda on 3/14/2017.
|
||||
*/
|
||||
public class InventoryListeners implements Listener {
|
||||
|
||||
private EpicFarming instance;
|
||||
|
||||
public InventoryListeners(EpicFarming instance) {
|
||||
this.instance = instance;
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onInventoryClick(InventoryClickEvent event) {
|
||||
if (instance.getPlayerActionManager().getPlayerAction((Player) event.getWhoClicked()).getFarm() == null
|
||||
|| event.getRawSlot() >= event.getView().getTopInventory().getSize()) return;
|
||||
|
||||
if (event.getInventory().getType() != InventoryType.CHEST) return;
|
||||
|
||||
PlayerData playerData = instance.getPlayerActionManager().getPlayerAction((Player) event.getWhoClicked());
|
||||
Farm farm = playerData.getFarm();
|
||||
if (event.getSlot() <= 26) {
|
||||
event.setCancelled(true);
|
||||
}
|
||||
|
||||
Player player = (Player) event.getWhoClicked();
|
||||
|
||||
if (event.getSlot() == 11 && player.hasPermission("EpicFarming.Upgrade.XP")) {
|
||||
if (!event.getCurrentItem().getItemMeta().getDisplayName().equals("§l")) {
|
||||
farm.upgrade(UpgradeType.EXPERIENCE, player);
|
||||
player.closeInventory();
|
||||
}
|
||||
} else if (event.getSlot() == 15 && player.hasPermission("EpicFarming.Upgrade.ECO")) {
|
||||
if (!event.getCurrentItem().getItemMeta().getDisplayName().equals("§l")) {
|
||||
farm.upgrade(UpgradeType.ECONOMY, player);
|
||||
player.closeInventory();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onClose(InventoryCloseEvent event) {
|
||||
PlayerData playerData = instance.getPlayerActionManager().getPlayerAction((Player) event.getPlayer());
|
||||
|
||||
if (playerData.getFarm() != null) {
|
||||
playerData.getFarm().setViewing(null);
|
||||
}
|
||||
|
||||
instance.getPlayerActionManager().getPlayerAction((Player) event.getPlayer()).setFarm(null);
|
||||
}
|
||||
}
|
@ -1,18 +0,0 @@
|
||||
package com.songoda.epicfarming.player;
|
||||
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
import java.util.*;
|
||||
|
||||
public class PlayerActionManager {
|
||||
|
||||
private final Map<UUID, PlayerData> registeredPlayers = new HashMap<>();
|
||||
|
||||
public PlayerData getPlayerAction(Player player) {
|
||||
return (player != null) ? registeredPlayers.computeIfAbsent(player.getUniqueId(), p -> new PlayerData(player.getUniqueId())) : null;
|
||||
}
|
||||
|
||||
public Collection<PlayerData> getRegisteredPlayers() {
|
||||
return Collections.unmodifiableCollection(registeredPlayers.values());
|
||||
}
|
||||
}
|
@ -1,29 +0,0 @@
|
||||
package com.songoda.epicfarming.player;
|
||||
|
||||
import com.songoda.epicfarming.farming.Farm;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
public class PlayerData {
|
||||
|
||||
private final UUID playerUUID;
|
||||
private Farm farm = null;
|
||||
|
||||
PlayerData(UUID playerUUID) {
|
||||
this.playerUUID = playerUUID;
|
||||
}
|
||||
|
||||
public Farm getFarm() {
|
||||
return farm;
|
||||
}
|
||||
|
||||
public void setFarm(Farm farm) {
|
||||
this.farm = farm;
|
||||
}
|
||||
|
||||
public Player getPlayer() {
|
||||
return Bukkit.getPlayer(playerUUID);
|
||||
}
|
||||
}
|
@ -9,7 +9,7 @@ import com.songoda.epicfarming.EpicFarming;
|
||||
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
public class Settings {
|
||||
public class Setting {
|
||||
|
||||
static final Config config = EpicFarming.getInstance().getConfig().getCoreConfig();
|
||||
|
@ -36,7 +36,7 @@ public abstract class Storage {
|
||||
prepareSaveItem("farms", new StorageItem("location", locstr),
|
||||
new StorageItem("level", farm.getLevel().getLevel()),
|
||||
new StorageItem("placedby", farm.getPlacedBy().toString()),
|
||||
new StorageItem("contents", ((Farm) farm).dumpInventory()));
|
||||
new StorageItem("contents", farm.getItems()));
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -9,9 +9,10 @@ import java.util.List;
|
||||
|
||||
public class StorageItem {
|
||||
|
||||
private Object object;
|
||||
private String key = null;
|
||||
|
||||
private Object object;
|
||||
|
||||
public StorageItem(Object object) {
|
||||
this.object = object;
|
||||
}
|
||||
@ -21,10 +22,13 @@ public class StorageItem {
|
||||
this.object = object;
|
||||
}
|
||||
|
||||
public StorageItem(String key, List<String> string) {
|
||||
public StorageItem(String key, List<ItemStack> material) {
|
||||
if (material == null || material.isEmpty()) return;
|
||||
StringBuilder object = new StringBuilder();
|
||||
for (String s : string) {
|
||||
object.append(s).append(";");
|
||||
for (ItemStack m : material) {
|
||||
if (m == null) continue;
|
||||
object.append(Serializers.serialize(m));
|
||||
object.append(";;");
|
||||
}
|
||||
this.key = key;
|
||||
this.object = object.toString();
|
||||
@ -36,49 +40,32 @@ public class StorageItem {
|
||||
|
||||
public String asString() {
|
||||
if (object == null) return null;
|
||||
return (String) object;
|
||||
return (String)object;
|
||||
}
|
||||
|
||||
public boolean asBoolean() {
|
||||
if (object == null) return false;
|
||||
if (object instanceof Integer) return (Integer) object == 1;
|
||||
return (boolean) object;
|
||||
return (boolean)object;
|
||||
}
|
||||
|
||||
public int asInt() {
|
||||
if (object == null) return 0;
|
||||
return (int) object;
|
||||
return (int)object;
|
||||
}
|
||||
|
||||
public Object asObject() {
|
||||
if (object == null) return null;
|
||||
if (object instanceof Boolean) return (Boolean) object ? 1 : 0;
|
||||
return object;
|
||||
}
|
||||
|
||||
public List<String> asStringList() {
|
||||
if (object instanceof ArrayList) return new ArrayList<>();
|
||||
List<String> list = new ArrayList<>();
|
||||
if (object == null) return list;
|
||||
String[] stack = ((String) object).split(";");
|
||||
for (String item : stack) {
|
||||
if (item.equals("")) continue;
|
||||
list.add(item);
|
||||
}
|
||||
return list;
|
||||
}
|
||||
|
||||
public List<ItemStack> asItemStackList() {
|
||||
List<ItemStack> list = new ArrayList<>();
|
||||
if (object == null) return list;
|
||||
String obj = (String) object;
|
||||
if (obj.equals("[]")) return list;
|
||||
if (obj.equals("[]"))return list;
|
||||
List<String> sers = new ArrayList<>(Arrays.asList(obj.split(";;")));
|
||||
for (String ser : sers) {
|
||||
list.add(Serializers.deserialize(ser));
|
||||
}
|
||||
return list;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
@ -155,12 +155,8 @@ public class EntityTask extends BukkitRunnable {
|
||||
if (entry.getValue() >= 2 && entry.getValue() < plugin.getConfig().getInt("Main.Auto Breeding Cap")) {
|
||||
|
||||
EntityType entityType = entry.getKey();
|
||||
Inventory inventory = farm.getInventory();
|
||||
|
||||
for (int i = 27; i < inventory.getSize(); i++) {
|
||||
if (inventory.getItem(i) == null || inventory.getItem(i).getType() == Material.AIR) continue;
|
||||
|
||||
ItemStack item = inventory.getItem(i);
|
||||
for (ItemStack item : farm.getItems()) {
|
||||
|
||||
try {
|
||||
if (item.getType() != EntityInfo.valueOf(entityType.name()).getMaterial() || item.getAmount() < 2)
|
||||
@ -169,12 +165,7 @@ public class EntityTask extends BukkitRunnable {
|
||||
continue;
|
||||
}
|
||||
|
||||
int newAmt = item.getAmount() - 2;
|
||||
|
||||
if (newAmt <= 0)
|
||||
inventory.setItem(i, null);
|
||||
else
|
||||
item.setAmount(newAmt);
|
||||
farm.removeMaterial(item.getType(), 2);
|
||||
|
||||
Location location = entity.getLocation();
|
||||
Entity newSpawn = location.getWorld().spawnEntity(location, entityType);
|
||||
@ -193,22 +184,11 @@ public class EntityTask extends BukkitRunnable {
|
||||
|
||||
stack.setAmount(stack.getAmount() * (boostData == null ? 1 : boostData.getMultiplier()));
|
||||
|
||||
if (!canMove(farm.getInventory(), stack)) return false;
|
||||
farm.getInventory().addItem(stack);
|
||||
if (farm.willFit(stack)) return false;
|
||||
farm.addItem(stack);
|
||||
return true;
|
||||
}
|
||||
|
||||
private boolean canMove(Inventory inventory, ItemStack item) {
|
||||
if (inventory.firstEmpty() != -1) return true;
|
||||
|
||||
for (ItemStack stack : inventory.getContents()) {
|
||||
if (stack.isSimilar(item) && stack.getAmount() < stack.getMaxStackSize()) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public Map<Entity, Integer> getTicksLived() {
|
||||
return Collections.unmodifiableMap(ticksLived);
|
||||
}
|
||||
|
@ -8,14 +8,13 @@ import com.songoda.epicfarming.farming.Crop;
|
||||
import com.songoda.epicfarming.farming.Farm;
|
||||
import com.songoda.epicfarming.utils.CropType;
|
||||
import com.songoda.epicfarming.utils.Methods;
|
||||
import java.util.HashMap;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.block.Block;
|
||||
import org.bukkit.inventory.Inventory;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.scheduler.BukkitRunnable;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Random;
|
||||
|
||||
@ -73,29 +72,18 @@ public class FarmTask extends BukkitRunnable {
|
||||
ItemStack stack = new ItemStack(cropTypeData.getYieldMaterial(), (useBoneMeal(farm) ? random.nextInt(2) + 2 : 1) * (boostData == null ? 1 : boostData.getMultiplier()));
|
||||
ItemStack seedStack = new ItemStack(cropTypeData.getSeedMaterial(), random.nextInt(3) + 1 + (useBoneMeal(farm) ? 1 : 0));
|
||||
|
||||
if (!canMove(farm.getInventory(), stack) || !canMove(farm.getInventory(), seedStack)) return false;
|
||||
if (!farm.willFit(stack) || !farm.willFit(seedStack)) return false;
|
||||
Methods.animate(farm.getLocation(), cropTypeData.getYieldMaterial());
|
||||
farm.getInventory().addItem(stack);
|
||||
farm.getInventory().addItem(seedStack);
|
||||
farm.addItem(stack);
|
||||
farm.addItem(seedStack);
|
||||
return true;
|
||||
}
|
||||
|
||||
private boolean useBoneMeal(Farm farm) {
|
||||
Inventory inventory = farm.getInventory();
|
||||
|
||||
for (int i = 27; i < inventory.getSize(); i++) {
|
||||
if (inventory.getItem(i) == null || inventory.getItem(i).getType() == Material.AIR) continue;
|
||||
|
||||
ItemStack item = inventory.getItem(i);
|
||||
|
||||
for (ItemStack item : farm.getItems()) {
|
||||
if (item.getType() != Material.BONE_MEAL) continue;
|
||||
|
||||
int newAmt = item.getAmount() - 1;
|
||||
|
||||
if (newAmt <= 0)
|
||||
inventory.setItem(i, null);
|
||||
else
|
||||
item.setAmount(newAmt);
|
||||
farm.removeMaterial(Material.BONE_MEAL, 1);
|
||||
|
||||
return true;
|
||||
|
||||
|
@ -52,27 +52,16 @@ public class HopperTask extends BukkitRunnable {
|
||||
if (block.getType() != Material.HOPPER)
|
||||
continue;
|
||||
|
||||
Inventory inventory = farm.getInventory();
|
||||
Inventory hopperInventory = ((Hopper) block.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);
|
||||
for (ItemStack item : farm.getItems()) {
|
||||
if (item.getType() == Material.BONE_MEAL) continue;
|
||||
|
||||
ItemStack toMove = item.clone();
|
||||
toMove.setAmount(amtToMove);
|
||||
|
||||
int newAmt = item.getAmount() - amtToMove;
|
||||
toMove.setAmount(1);
|
||||
|
||||
if (canHop(hopperInventory, toMove)) {
|
||||
if (newAmt <= 0)
|
||||
inventory.setItem(i, null);
|
||||
else
|
||||
item.setAmount(newAmt);
|
||||
farm.removeMaterial(toMove.getType(), 1);
|
||||
hopperInventory.addItem(toMove);
|
||||
}
|
||||
break;
|
||||
|
Loading…
Reference in New Issue
Block a user