Merge branch 'development' of gitlab.com:Songoda/epicfarming into development

This commit is contained in:
jascotty2 2019-09-30 18:21:59 -05:00
commit cd1c992edc
15 changed files with 272 additions and 368 deletions

View File

@ -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;
}

View File

@ -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;
}
}

View File

@ -1,6 +0,0 @@
package com.songoda.epicfarming.gui;
import com.songoda.core.gui.Gui;
public class GUIOverview extends Gui {
}

View 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;
}
}

View File

@ -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);
}
}

View File

@ -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);
}
}
}

View File

@ -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);
}
}

View File

@ -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());
}
}

View File

@ -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);
}
}

View File

@ -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();

View File

@ -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()));
}
/*

View File

@ -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;
}
}

View File

@ -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);
}

View File

@ -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;

View File

@ -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;