Not sure why this was split into another commit.

This commit is contained in:
Brianna 2019-06-13 06:40:56 -04:00
parent c366efb4af
commit 8abf0652d3
30 changed files with 819 additions and 1154 deletions

View File

@ -1,6 +1,6 @@
package com.songoda.epicfurnaces.command; package com.songoda.epicfurnaces.command;
import com.songoda.epicfurnaces.EpicFurnacesPlugin; import com.songoda.epicfurnaces.EpicFurnaces;
import org.bukkit.command.CommandSender; import org.bukkit.command.CommandSender;
public abstract class AbstractCommand { public abstract class AbstractCommand {
@ -27,7 +27,7 @@ public abstract class AbstractCommand {
return noConsole; return noConsole;
} }
protected abstract ReturnType runCommand(EpicFurnacesPlugin instance, CommandSender sender, String... args); protected abstract ReturnType runCommand(EpicFurnaces plugin, CommandSender sender, String... args);
public abstract String getPermissionNode(); public abstract String getPermissionNode();

View File

@ -1,8 +1,8 @@
package com.songoda.epicfurnaces.command; package com.songoda.epicfurnaces.command;
import com.songoda.arconix.api.methods.formatting.TextComponent; import com.songoda.epicfurnaces.EpicFurnaces;
import com.songoda.epicfurnaces.EpicFurnacesPlugin;
import com.songoda.epicfurnaces.command.commands.*; import com.songoda.epicfurnaces.command.commands.*;
import com.songoda.epicfurnaces.utils.Methods;
import org.bukkit.command.Command; import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender; import org.bukkit.command.CommandSender;
@ -14,14 +14,14 @@ import java.util.List;
public class CommandManager implements CommandExecutor { public class CommandManager implements CommandExecutor {
private EpicFurnacesPlugin instance; private EpicFurnaces plugin;
private List<AbstractCommand> commands = new ArrayList<>(); private List<AbstractCommand> commands = new ArrayList<>();
public CommandManager(EpicFurnacesPlugin instance) { public CommandManager(EpicFurnaces plugin) {
this.instance = instance; this.plugin = plugin;
instance.getCommand("EpicFurnaces").setExecutor(this); plugin.getCommand("EpicFurnaces").setExecutor(this);
AbstractCommand commandEpicFurnaces = addCommand(new CommandEpicFurnaces()); AbstractCommand commandEpicFurnaces = addCommand(new CommandEpicFurnaces());
@ -53,7 +53,7 @@ public class CommandManager implements CommandExecutor {
} }
} }
} }
commandSender.sendMessage(instance.getReferences().getPrefix() + TextComponent.formatText("&7The command you entered does not exist or is spelt incorrectly.")); commandSender.sendMessage(plugin.getReferences().getPrefix() + Methods.formatText("&7The command you entered does not exist or is spelt incorrectly."));
return true; return true;
} }
@ -63,14 +63,14 @@ public class CommandManager implements CommandExecutor {
return; return;
} }
if (command.getPermissionNode() == null || sender.hasPermission(command.getPermissionNode())) { if (command.getPermissionNode() == null || sender.hasPermission(command.getPermissionNode())) {
AbstractCommand.ReturnType returnType = command.runCommand(instance, sender, strings); AbstractCommand.ReturnType returnType = command.runCommand(plugin, sender, strings);
if (returnType == AbstractCommand.ReturnType.SYNTAX_ERROR) { if (returnType == AbstractCommand.ReturnType.SYNTAX_ERROR) {
sender.sendMessage(instance.getReferences().getPrefix() + TextComponent.formatText("&cInvalid Syntax!")); sender.sendMessage(plugin.getReferences().getPrefix() + Methods.formatText("&cInvalid Syntax!"));
sender.sendMessage(instance.getReferences().getPrefix() + TextComponent.formatText("&7The valid syntax is: &6" + command.getSyntax() + "&7.")); sender.sendMessage(plugin.getReferences().getPrefix() + Methods.formatText("&7The valid syntax is: &6" + command.getSyntax() + "&7."));
} }
return; return;
} }
sender.sendMessage(instance.getReferences().getPrefix() + instance.getLocale().getMessage("event.general.nopermission")); sender.sendMessage(plugin.getReferences().getPrefix() + plugin.getLocale().getMessage("event.general.nopermission"));
} }
public List<AbstractCommand> getCommands() { public List<AbstractCommand> getCommands() {

View File

@ -1,10 +1,9 @@
package com.songoda.epicfurnaces.command.commands; package com.songoda.epicfurnaces.command.commands;
import com.songoda.arconix.api.methods.formatting.TextComponent; import com.songoda.epicfurnaces.EpicFurnaces;
import com.songoda.arconix.api.methods.math.AMath;
import com.songoda.epicfurnaces.EpicFurnacesPlugin;
import com.songoda.epicfurnaces.boost.BoostData; import com.songoda.epicfurnaces.boost.BoostData;
import com.songoda.epicfurnaces.command.AbstractCommand; import com.songoda.epicfurnaces.command.AbstractCommand;
import com.songoda.epicfurnaces.utils.Methods;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
import org.bukkit.command.CommandSender; import org.bukkit.command.CommandSender;
@ -18,15 +17,15 @@ public class CommandBoost extends AbstractCommand {
} }
@Override @Override
protected ReturnType runCommand(EpicFurnacesPlugin instance, CommandSender sender, String... args) { protected ReturnType runCommand(EpicFurnaces plugin, CommandSender sender, String... args) {
if (args.length < 3) { if (args.length < 3) {
return ReturnType.SYNTAX_ERROR; return ReturnType.SYNTAX_ERROR;
} }
if (Bukkit.getPlayer(args[1]) == null) { if (Bukkit.getPlayer(args[1]) == null) {
sender.sendMessage(TextComponent.formatText(instance.getReferences().getPrefix() + "&cThat player does not exist...")); sender.sendMessage(Methods.formatText(plugin.getReferences().getPrefix() + "&cThat player does not exist..."));
return ReturnType.FAILURE; return ReturnType.FAILURE;
} else if (!AMath.isInt(args[2])) { } else if (!Methods.isInt(args[2])) {
sender.sendMessage(TextComponent.formatText(instance.getReferences().getPrefix() + "&6" + args[2] + " &7is not a number...")); sender.sendMessage(Methods.formatText(plugin.getReferences().getPrefix() + "&6" + args[2] + " &7is not a number..."));
return ReturnType.FAILURE; return ReturnType.FAILURE;
} else { } else {
Calendar c = Calendar.getInstance(); Calendar c = Calendar.getInstance();
@ -53,7 +52,7 @@ public class CommandBoost extends AbstractCommand {
c.add(Calendar.YEAR, Integer.parseInt(arr2[1])); c.add(Calendar.YEAR, Integer.parseInt(arr2[1]));
time = " &7for &6" + arr2[1] + " years&7."; time = " &7for &6" + arr2[1] + " years&7.";
} else { } else {
sender.sendMessage(TextComponent.formatText(instance.getReferences().getPrefix() + "&7" + args[3] + " &7is invalid.")); sender.sendMessage(Methods.formatText(plugin.getReferences().getPrefix() + "&7" + args[3] + " &7is invalid."));
return ReturnType.SUCCESS; return ReturnType.SUCCESS;
} }
} else { } else {
@ -61,8 +60,8 @@ public class CommandBoost extends AbstractCommand {
} }
BoostData boostData = new BoostData(Integer.parseInt(args[2]), c.getTime().getTime(), Bukkit.getPlayer(args[1]).getUniqueId()); BoostData boostData = new BoostData(Integer.parseInt(args[2]), c.getTime().getTime(), Bukkit.getPlayer(args[1]).getUniqueId());
instance.getBoostManager().addBoostToPlayer(boostData); plugin.getBoostManager().addBoostToPlayer(boostData);
sender.sendMessage(TextComponent.formatText(instance.getReferences().getPrefix() + "&7Successfully boosted &6" + Bukkit.getPlayer(args[1]).getName() + "'s &7furnaces reward amounts by &6" + args[2] + "x" + time)); sender.sendMessage(Methods.formatText(plugin.getReferences().getPrefix() + "&7Successfully boosted &6" + Bukkit.getPlayer(args[1]).getName() + "'s &7furnaces reward amounts by &6" + args[2] + "x" + time));
} }
return ReturnType.FAILURE; return ReturnType.FAILURE;
} }

View File

@ -1,8 +1,8 @@
package com.songoda.epicfurnaces.command.commands; package com.songoda.epicfurnaces.command.commands;
import com.songoda.arconix.api.methods.formatting.TextComponent; import com.songoda.epicfurnaces.EpicFurnaces;
import com.songoda.epicfurnaces.EpicFurnacesPlugin;
import com.songoda.epicfurnaces.command.AbstractCommand; import com.songoda.epicfurnaces.command.AbstractCommand;
import com.songoda.epicfurnaces.utils.Methods;
import org.bukkit.command.CommandSender; import org.bukkit.command.CommandSender;
public class CommandEpicFurnaces extends AbstractCommand { public class CommandEpicFurnaces extends AbstractCommand {
@ -12,13 +12,13 @@ public class CommandEpicFurnaces extends AbstractCommand {
} }
@Override @Override
protected ReturnType runCommand(EpicFurnacesPlugin instance, CommandSender sender, String... args) { protected ReturnType runCommand(EpicFurnaces plugin, CommandSender sender, String... args) {
sender.sendMessage(""); sender.sendMessage("");
sender.sendMessage(TextComponent.formatText(instance.getReferences().getPrefix() + "&7Version " + instance.getDescription().getVersion() + " Created with <3 by &5&l&oBrianna")); sender.sendMessage(Methods.formatText(plugin.getReferences().getPrefix() + "&7Version " + plugin.getDescription().getVersion() + " Created with <3 by &5&l&oSongoda"));
for (AbstractCommand command : instance.getCommandManager().getCommands()) { for (AbstractCommand command : plugin.getCommandManager().getCommands()) {
if (command.getPermissionNode() == null || sender.hasPermission(command.getPermissionNode())) { if (command.getPermissionNode() == null || sender.hasPermission(command.getPermissionNode())) {
sender.sendMessage(TextComponent.formatText("&8 - &a" + command.getSyntax() + "&7 - " + command.getDescription())); sender.sendMessage(Methods.formatText("&8 - &a" + command.getSyntax() + "&7 - " + command.getDescription()));
} }
} }
sender.sendMessage(""); sender.sendMessage("");

View File

@ -1,9 +1,9 @@
package com.songoda.epicfurnaces.command.commands; package com.songoda.epicfurnaces.command.commands;
import com.songoda.arconix.plugin.Arconix; import com.songoda.epicfurnaces.EpicFurnaces;
import com.songoda.epicfurnaces.EpicFurnacesPlugin;
import com.songoda.epicfurnaces.api.furnace.Level;
import com.songoda.epicfurnaces.command.AbstractCommand; import com.songoda.epicfurnaces.command.AbstractCommand;
import com.songoda.epicfurnaces.furnace.levels.Level;
import com.songoda.epicfurnaces.utils.Methods;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
import org.bukkit.command.CommandSender; import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
@ -15,34 +15,34 @@ public class CommandGive extends AbstractCommand {
} }
@Override @Override
protected ReturnType runCommand(EpicFurnacesPlugin instance, CommandSender sender, String... args) { protected ReturnType runCommand(EpicFurnaces plugin, CommandSender sender, String... args) {
if (args.length == 2) return ReturnType.SYNTAX_ERROR; if (args.length == 2) return ReturnType.SYNTAX_ERROR;
Level level = instance.getLevelManager().getLowestLevel(); Level level = plugin.getLevelManager().getLowestLevel();
Player player; Player player;
if (args.length != 1 && Bukkit.getPlayer(args[1]) == null) { 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.")); sender.sendMessage(plugin.getReferences().getPrefix() + Methods.formatText("&cThat player does not exist or is currently offline."));
return ReturnType.FAILURE; return ReturnType.FAILURE;
} else if (args.length == 1) { } else if (args.length == 1) {
if (!(sender instanceof Player)) { 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.")); sender.sendMessage(plugin.getReferences().getPrefix() + Methods.formatText("&cYou need to be a player to give a farm item to yourself."));
return ReturnType.FAILURE; return ReturnType.FAILURE;
} }
player = (Player)sender; player = (Player) sender;
} else { } else {
player = Bukkit.getPlayer(args[1]); player = Bukkit.getPlayer(args[1]);
} }
if (args.length >= 3 && !instance.getLevelManager().isLevel(Integer.parseInt(args[2]))) { if (args.length >= 3 && !plugin.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.")); sender.sendMessage(plugin.getReferences().getPrefix() + Methods.formatText("&cNot a valid level... The current valid levels are: &4" + plugin.getLevelManager().getLowestLevel().getLevel() + "-" + plugin.getLevelManager().getHighestLevel().getLevel() + "&c."));
return ReturnType.FAILURE; return ReturnType.FAILURE;
} else if (args.length != 1){ } else if (args.length != 1) {
level = instance.getLevelManager().getLevel(Integer.parseInt(args[2])); level = plugin.getLevelManager().getLevel(Integer.parseInt(args[2]));
} }
player.getInventory().addItem(instance.createLeveledFurnace(level.getLevel(), 0)); player.getInventory().addItem(plugin.createLeveledFurnace(level.getLevel(), 0));
player.sendMessage(instance.getReferences().getPrefix() + instance.getLocale().getMessage("command.give.success", level.getLevel())); player.sendMessage(plugin.getReferences().getPrefix() + plugin.getLocale().getMessage("command.give.success", level.getLevel()));
return ReturnType.SUCCESS; return ReturnType.SUCCESS;
} }

View File

@ -1,8 +1,8 @@
package com.songoda.epicfurnaces.command.commands; package com.songoda.epicfurnaces.command.commands;
import com.songoda.arconix.api.methods.formatting.TextComponent; import com.songoda.epicfurnaces.EpicFurnaces;
import com.songoda.epicfurnaces.EpicFurnacesPlugin;
import com.songoda.epicfurnaces.command.AbstractCommand; import com.songoda.epicfurnaces.command.AbstractCommand;
import com.songoda.epicfurnaces.utils.Methods;
import org.bukkit.command.CommandSender; import org.bukkit.command.CommandSender;
public class CommandReload extends AbstractCommand { public class CommandReload extends AbstractCommand {
@ -12,9 +12,9 @@ public class CommandReload extends AbstractCommand {
} }
@Override @Override
protected ReturnType runCommand(EpicFurnacesPlugin instance, CommandSender sender, String... args) { protected ReturnType runCommand(EpicFurnaces plugin, CommandSender sender, String... args) {
instance.reload(); plugin.reload();
sender.sendMessage(TextComponent.formatText(instance.getReferences().getPrefix() + "&7Configuration and Language files reloaded.")); sender.sendMessage(Methods.formatText(plugin.getReferences().getPrefix() + "&7Configuration and Language files reloaded."));
return ReturnType.SUCCESS; return ReturnType.SUCCESS;
} }

View File

@ -1,8 +1,8 @@
package com.songoda.epicfurnaces.command.commands; package com.songoda.epicfurnaces.command.commands;
import com.songoda.epicfurnaces.EpicFurnacesPlugin; import com.songoda.epicfurnaces.EpicFurnaces;
import com.songoda.epicfurnaces.api.furnace.Furnace;
import com.songoda.epicfurnaces.command.AbstractCommand; import com.songoda.epicfurnaces.command.AbstractCommand;
import com.songoda.epicfurnaces.furnace.Furnace;
import org.bukkit.block.Block; import org.bukkit.block.Block;
import org.bukkit.command.CommandSender; import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
@ -16,13 +16,13 @@ public class CommandRemote extends AbstractCommand {
} }
@Override @Override
protected ReturnType runCommand(EpicFurnacesPlugin instance, CommandSender sender, String... args) { protected ReturnType runCommand(EpicFurnaces plugin, CommandSender sender, String... args) {
if (!instance.getConfig().getBoolean("Main.Access Furnaces Remotely") || !sender.hasPermission("EpicFurnaces.Remote")) { if (!plugin.getConfig().getBoolean("Main.Access Furnaces Remotely") || !sender.hasPermission("EpicFurnaces.Remote")) {
sender.sendMessage(instance.getReferences().getPrefix() + instance.getLocale().getMessage("event.general.nopermission")); sender.sendMessage(plugin.getReferences().getPrefix() + plugin.getLocale().getMessage("event.general.nopermission"));
return ReturnType.FAILURE; return ReturnType.FAILURE;
} }
if (!instance.getDataFile().getConfig().contains("data.charged")) { if (!plugin.getDataFile().getConfig().contains("data.charged")) {
return ReturnType.FAILURE; return ReturnType.FAILURE;
} }
if (args.length < 2) return ReturnType.SYNTAX_ERROR; if (args.length < 2) return ReturnType.SYNTAX_ERROR;
@ -32,11 +32,11 @@ public class CommandRemote extends AbstractCommand {
name.append(" ").append(args[i]); name.append(" ").append(args[i]);
} }
name = new StringBuilder(name.toString().trim()); name = new StringBuilder(name.toString().trim());
for (Furnace furnace : instance.getFurnaceManager().getFurnaces().values()) { for (Furnace furnace : plugin.getFurnaceManager().getFurnaces().values()) {
if (furnace.getNickname() == null) continue; if (furnace.getNickname() == null) continue;
if (!furnace.getNickname().equalsIgnoreCase(name.toString())) { if (!furnace.getNickname().equalsIgnoreCase(name.toString())) {
sender.sendMessage(instance.getReferences().getPrefix() + instance.getLocale().getMessage("event.general.nopermission")); sender.sendMessage(plugin.getReferences().getPrefix() + plugin.getLocale().getMessage("event.general.nopermission"));
continue; continue;
} }
for (UUID uuid : furnace.getAccessList()) { for (UUID uuid : furnace.getAccessList()) {
@ -50,7 +50,7 @@ public class CommandRemote extends AbstractCommand {
} }
} }
sender.sendMessage(instance.getReferences().getPrefix() + instance.getLocale().getMessage("event.remote.notfound")); sender.sendMessage(plugin.getReferences().getPrefix() + plugin.getLocale().getMessage("event.remote.notfound"));
return ReturnType.FAILURE; return ReturnType.FAILURE;
} }

View File

@ -1,6 +1,6 @@
package com.songoda.epicfurnaces.command.commands; package com.songoda.epicfurnaces.command.commands;
import com.songoda.epicfurnaces.EpicFurnacesPlugin; import com.songoda.epicfurnaces.EpicFurnaces;
import com.songoda.epicfurnaces.command.AbstractCommand; import com.songoda.epicfurnaces.command.AbstractCommand;
import org.bukkit.command.CommandSender; import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
@ -12,8 +12,8 @@ public class CommandSettings extends AbstractCommand {
} }
@Override @Override
protected ReturnType runCommand(EpicFurnacesPlugin instance, CommandSender sender, String... args) { protected ReturnType runCommand(EpicFurnaces plugin, CommandSender sender, String... args) {
instance.getSettingsManager().openSettingsManager((Player) sender); plugin.getSettingsManager().openSettingsManager((Player) sender);
return ReturnType.SUCCESS; return ReturnType.SUCCESS;
} }

View File

@ -1,4 +1,4 @@
package com.songoda.epichoppers.economy; package com.songoda.epicfurnaces.economy;
import org.bukkit.OfflinePlayer; import org.bukkit.OfflinePlayer;

View File

@ -1,17 +1,16 @@
package com.songoda.epichoppers.economy; package com.songoda.epicfurnaces.economy;
import com.songoda.epichoppers.EpicHoppers; import com.songoda.epicfurnaces.EpicFurnaces;
import org.black_ixx.playerpoints.PlayerPoints; import org.black_ixx.playerpoints.PlayerPoints;
import org.bukkit.OfflinePlayer; import org.bukkit.OfflinePlayer;
import org.bukkit.entity.Player;
public class PlayerPointsEconomy implements Economy { public class PlayerPointsEconomy implements Economy {
private final EpicHoppers plugin; private final EpicFurnaces plugin;
private final PlayerPoints playerPoints; private final PlayerPoints playerPoints;
public PlayerPointsEconomy(EpicHoppers plugin) { public PlayerPointsEconomy(EpicFurnaces plugin) {
this.plugin = plugin; this.plugin = plugin;
this.playerPoints = (PlayerPoints) plugin.getServer().getPluginManager().getPlugin("PlayerPoints"); this.playerPoints = (PlayerPoints) plugin.getServer().getPluginManager().getPlugin("PlayerPoints");

View File

@ -1,16 +1,15 @@
package com.songoda.epichoppers.economy; package com.songoda.epicfurnaces.economy;
import com.songoda.epichoppers.EpicHoppers; import com.songoda.epicfurnaces.EpicFurnaces;
import org.bukkit.OfflinePlayer; import org.bukkit.OfflinePlayer;
import org.bukkit.entity.Player;
public class VaultEconomy implements Economy { public class VaultEconomy implements Economy {
private final EpicHoppers plugin; private final EpicFurnaces plugin;
private final net.milkbowl.vault.economy.Economy vault; private final net.milkbowl.vault.economy.Economy vault;
public VaultEconomy(EpicHoppers plugin) { public VaultEconomy(EpicFurnaces plugin) {
this.plugin = plugin; this.plugin = plugin;
this.vault = plugin.getServer().getServicesManager(). this.vault = plugin.getServer().getServicesManager().

View File

@ -2,24 +2,19 @@ package com.songoda.epicfurnaces.furnace;
import com.songoda.epicfurnaces.EpicFurnaces; import com.songoda.epicfurnaces.EpicFurnaces;
import com.songoda.epicfurnaces.boost.BoostData; import com.songoda.epicfurnaces.boost.BoostData;
import com.songoda.epicfurnaces.player.PlayerData; import com.songoda.epicfurnaces.furnace.levels.Level;
import com.songoda.epicfurnaces.utils.Debugger; import com.songoda.epicfurnaces.gui.GUIOverview;
import com.songoda.epicfurnaces.utils.CostType;
import com.songoda.epicfurnaces.utils.Methods; import com.songoda.epicfurnaces.utils.Methods;
import net.milkbowl.vault.economy.Economy; import com.songoda.epicfurnaces.utils.ServerVersion;
import org.bukkit.Bukkit; import org.bukkit.*;
import org.bukkit.GameMode;
import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.block.Block; import org.bukkit.block.Block;
import org.bukkit.block.BlockState; import org.bukkit.block.BlockState;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.event.inventory.FurnaceSmeltEvent; import org.bukkit.event.inventory.FurnaceSmeltEvent;
import org.bukkit.inventory.FurnaceInventory; import org.bukkit.inventory.FurnaceInventory;
import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.InventoryHolder; import org.bukkit.inventory.InventoryHolder;
import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta;
import org.bukkit.plugin.RegisteredServiceProvider;
import javax.script.ScriptEngine; import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager; import javax.script.ScriptEngineManager;
@ -29,9 +24,9 @@ import java.util.*;
/** /**
* Created by songoda on 3/7/2017. * Created by songoda on 3/7/2017.
*/ */
public class EFurnace { public class Furnace {
private final EpicFurnaces instance = EpicFurnaces.getInstance(); private final EpicFurnaces plugin = EpicFurnaces.getInstance();
private Location location; private Location location;
private Level level; private Level level;
private String nickname; private String nickname;
@ -42,7 +37,7 @@ public class EFurnace {
private List<String> accessList = new ArrayList<>(); private List<String> accessList = new ArrayList<>();
private Map<String, Integer> cache = new HashMap<>(); private Map<String, Integer> cache = new HashMap<>();
public EFurnace(Location location, Level level, String nickname, int uses, int tolevel, List<String> accessList, UUID placedBy) { public Furnace(Location location, Level level, String nickname, int uses, int tolevel, List<String> accessList, UUID placedBy) {
this.location = location; this.location = location;
this.level = level; this.level = level;
this.uses = uses; this.uses = uses;
@ -53,288 +48,30 @@ public class EFurnace {
this.syncName(); this.syncName();
} }
public EFurnace(Block block, Level level, String nickname, int uses, int tolevel, List<String> accessList, UUID placedBy) { public Furnace(Block block, Level level, String nickname, int uses, int tolevel, List<String> accessList, UUID placedBy) {
this(block.getLocation(), level, nickname, uses, tolevel, accessList, placedBy); this(block.getLocation(), level, nickname, uses, tolevel, accessList, placedBy);
} }
public void openOverview(Player p) { public void overview(Player player) {
try { if (placedBy == null) placedBy = player.getUniqueId();
PlayerData playerData = instance.getPlayerDataManager().getPlayerData(p);
if (!p.hasPermission("epicfurnaces.overview")) return; if (!player.hasPermission("epicfurnaces.overview")) return;
playerData.setLastFurace(this); new GUIOverview(plugin, this, player);
Level nextLevel = instance.getLevelManager().getHighestLevel().getLevel() > level.getLevel() ? instance.getLevelManager().getLevel(level.getLevel() + 1) : null;
int multi = instance.getConfig().getInt("Main.Level Cost Multiplier");
int needed = (multi * level.getLevel()) - tolevel;
ItemStack item = new ItemStack(Material.FURNACE, 1);
ItemMeta itemmeta = item.getItemMeta();
itemmeta.setDisplayName(instance.getLocale().getMessage("interface.furnace.currentlevel", level.getLevel()));
ArrayList<String> lore = new ArrayList<>();
lore.add(instance.getLocale().getMessage("interface.furnace.smeltedx", uses));
lore.addAll(this.level.getDescription());
lore.add("");
if (nextLevel == null)
lore.add(instance.getLocale().getMessage("interface.furnace.alreadymaxed"));
else {
lore.add(instance.getLocale().getMessage("interface.furnace.level", nextLevel.getLevel()));
lore.addAll(nextLevel.getDescription());
if (instance.getConfig().getBoolean("Main.Upgrade By Smelting Materials")) {
lore.add(instance.getLocale().getMessage("interface.furnace.tolevel", needed, Methods.cleanString(instance.getConfig().getString("Main.Furnace Upgrade Cost"))));
}
}
BoostData boostData = instance.getBoostManager().getBoost(placedBy);
if (boostData != null) {
String[] parts = instance.getLocale().getMessage("interface.button.boostedstats", Integer.toString(boostData.getMultiplier()), TimeComponent.makeReadable(boostData.getEndTime() - System.currentTimeMillis())).split("\\|");
lore.add("");
for (String line : parts)
lore.add(TextComponent.formatText(line));
}
itemmeta.setLore(lore);
item.setItemMeta(itemmeta);
Inventory i = Bukkit.createInventory(null, 27, Arconix.pl().getApi().format().formatText(Methods.formatName(level.getLevel(), 0, false)));
int nu = 0;
while (nu != 27) {
i.setItem(nu, Methods.getGlass());
nu++;
}
ItemStack item2 = new ItemStack(Material.valueOf(instance.getConfig().getString("Interfaces.Performance Icon")), 1);
ItemMeta itemmeta2 = item2.getItemMeta();
itemmeta2.setDisplayName(instance.getLocale().getMessage("interface.furnace.performancetitle")); //greyed out until available
ArrayList<String> lore2 = new ArrayList<>();
String[] parts = instance.getLocale().getMessage("interface.furnace.performanceinfo", level.getPerformance()).split("\\|");
lore.add("");
for (String line : parts) {
lore2.add(Arconix.pl().getApi().format().formatText(line));
}
itemmeta2.setLore(lore2);
item2.setItemMeta(itemmeta2);
ItemStack item3 = new ItemStack(Material.valueOf(instance.getConfig().getString("Interfaces.Reward Icon")), 1);
ItemMeta itemmeta3 = item3.getItemMeta();
itemmeta3.setDisplayName(instance.getLocale().getMessage("interface.furnace.rewardtitle"));
ArrayList<String> lore3 = new ArrayList<>();
parts = instance.getLocale().getMessage("interface.furnace.rewardinfo", level.getReward().split(":")[0].replace("%", "")).split("\\|");
lore.add("");
for (String line : parts) {
lore3.add(Arconix.pl().getApi().format().formatText(line));
}
itemmeta3.setLore(lore3);
item3.setItemMeta(itemmeta3);
ItemStack item4 = new ItemStack(Material.valueOf(instance.getConfig().getString("Interfaces.FuelDuration Icon")), 1);
ItemMeta itemmeta4 = item4.getItemMeta();
itemmeta4.setDisplayName(instance.getLocale().getMessage("interface.furnace.fueldurationtitle"));
ArrayList<String> lore4 = new ArrayList<>();
parts = instance.getLocale().getMessage("interface.furnace.fueldurationinfo", level.getFuelDuration()).split("\\|");
lore.add("");
for (String line : parts) {
lore4.add(Arconix.pl().getApi().format().formatText(line));
}
itemmeta4.setLore(lore4);
item4.setItemMeta(itemmeta4);
ItemStack item5 = new ItemStack(Material.valueOf(instance.getConfig().getString("Interfaces.Overheat Icon")), 1);
ItemMeta itemmeta5 = item4.getItemMeta();
itemmeta5.setDisplayName(instance.getLocale().getMessage("interface.furnace.overheattitle"));
ArrayList<String> lore5 = new ArrayList<>();
parts = instance.getLocale().getMessage("interface.furnace.overheatinfo", level.getOverheat() * 3).split("\\|");
lore.add("");
for (String line : parts) {
lore5.add(Arconix.pl().getApi().format().formatText(line));
}
itemmeta5.setLore(lore5);
item5.setItemMeta(itemmeta5);
ItemStack item6 = new ItemStack(Material.valueOf(instance.getConfig().getString("Interfaces.FuelShare Icon")), 1);
ItemMeta itemmeta6 = item4.getItemMeta();
itemmeta6.setDisplayName(instance.getLocale().getMessage("interface.furnace.fuelsharetitle"));
ArrayList<String> lore6 = new ArrayList<>();
parts = instance.getLocale().getMessage("interface.furnace.fuelshareinfo", level.getOverheat() * 3).split("\\|");
lore.add("");
for (String line : parts) {
lore6.add(Arconix.pl().getApi().format().formatText(line));
}
itemmeta6.setLore(lore6);
item6.setItemMeta(itemmeta6);
ItemStack itemXP = new ItemStack(Material.valueOf(instance.getConfig().getString("Interfaces.XP Icon")), 1);
ItemMeta itemmetaXP = itemXP.getItemMeta();
itemmetaXP.setDisplayName(instance.getLocale().getMessage("interface.furnace.upgradewithxp"));
ArrayList<String> loreXP = new ArrayList<>();
if (nextLevel != null)
loreXP.add(instance.getLocale().getMessage("interface.furnace.upgradewithxplore", level.getCostExperiance()));
else
loreXP.add(instance.getLocale().getMessage("interface.furnace.alreadymaxed"));
itemmetaXP.setLore(loreXP);
itemXP.setItemMeta(itemmetaXP);
ItemStack itemECO = new ItemStack(Material.valueOf(instance.getConfig().getString("Interfaces.Economy Icon")), 1);
ItemMeta itemmetaECO = itemECO.getItemMeta();
itemmetaECO.setDisplayName(instance.getLocale().getMessage("interface.furnace.upgradewitheconomy"));
ArrayList<String> loreECO = new ArrayList<>();
if (nextLevel != null)
loreECO.add(instance.getLocale().getMessage("interface.furnace.upgradewitheconomylore", Arconix.pl().getApi().format().formatEconomy(level.getCostEconomy())));
else
loreECO.add(instance.getLocale().getMessage("interface.furnace.alreadymaxed"));
itemmetaECO.setLore(loreECO);
itemECO.setItemMeta(itemmetaECO);
i.setItem(13, item);
i.setItem(0, Methods.getBackgroundGlass(true));
i.setItem(1, Methods.getBackgroundGlass(true));
i.setItem(2, Methods.getBackgroundGlass(false));
i.setItem(6, Methods.getBackgroundGlass(false));
i.setItem(7, Methods.getBackgroundGlass(true));
i.setItem(8, Methods.getBackgroundGlass(true));
i.setItem(9, Methods.getBackgroundGlass(true));
i.setItem(10, Methods.getBackgroundGlass(false));
i.setItem(16, Methods.getBackgroundGlass(false));
i.setItem(17, Methods.getBackgroundGlass(true));
i.setItem(18, Methods.getBackgroundGlass(true));
i.setItem(19, Methods.getBackgroundGlass(true));
i.setItem(20, Methods.getBackgroundGlass(false));
i.setItem(24, Methods.getBackgroundGlass(false));
i.setItem(25, Methods.getBackgroundGlass(true));
i.setItem(26, Methods.getBackgroundGlass(true));
int num = -1;
Map<Integer, int[]> spots = new HashMap();
int[] s1 = {22};
spots.put(0, s1);
int[] s2 = {21, 23};
spots.put(1, s2);
int[] s3 = {21, 22, 23};
spots.put(2, s3);
int[] s4 = {20, 21, 23, 24};
spots.put(3, s4);
int[] s5 = {20, 21, 22, 23, 24};
spots.put(4, s5);
if (level.getPerformance() != 0) {
num ++;
}
if (level.getReward() != null) {
num ++;
}
if (level.getFuelDuration() != 0) {
num ++;
}
if (level.getFuelShare() != 0) {
num ++;
}
if (level.getOverheat() != 0) {
num ++;
}
int[] order = spots.get(num);
int current = 0;
if (level.getPerformance() != 0) {
i.setItem(order[current], item2);
current ++;
}
if (level.getReward() != null) {
i.setItem(order[current], item3);
current ++;
}
if (level.getFuelDuration() != 0) {
i.setItem(order[current], item4);
current ++;
}
if (level.getFuelShare() != 0) {
i.setItem(order[current], item6);
current ++;
}
if (level.getOverheat() != 0) {
i.setItem(order[current], item5);
}
ItemStack hook = new ItemStack(Material.TRIPWIRE_HOOK, 1);
ItemMeta hookmeta = hook.getItemMeta();
hookmeta.setDisplayName(instance.getLocale().getMessage("interface.furnace.remotefurnace"));
ArrayList<String> lorehook = new ArrayList<>();
parts = instance.getLocale().getMessage("interface.furnace.remotefurnacelore", nickname == null ? "Unset" : nickname).split("\\|");
for (String line : parts) {
lorehook.add(Arconix.pl().getApi().format().formatText(line));
}
if (nickname != null) {
parts = instance.getLocale().getMessage("interface.furnace.utilize", nickname).split("\\|");
for (String line : parts) {
lorehook.add(Arconix.pl().getApi().format().formatText(line));
}
}
for (String line : accessList) {
lorehook.add("");
lorehook.add(instance.getLocale().getMessage("interface.furnace.remotelist"));
String[] halfs = line.split(":");
String name = halfs[1];
Player player = Bukkit.getPlayer(halfs[0]);
if (player != null) {
name = player.getDisplayName();
}
lorehook.add(Arconix.pl().getApi().format().formatText("&6" + name));
}
hookmeta.setLore(lorehook);
hook.setItemMeta(hookmeta);
if (instance.getConfig().getBoolean("Main.Access Furnaces Remotely") && p.hasPermission("EpicFurnaces.Remote")) {
i.setItem(4, hook);
}
i.setItem(13, item);
if (instance.getConfig().getBoolean("Main.Upgrade With XP") && p.hasPermission("EpicFurnaces.Upgrade.XP")) {
i.setItem(11, itemXP);
}
if (instance.getConfig().getBoolean("Main.Upgrade With Economy") && p.hasPermission("EpicFurnaces.Upgrade.ECO")) {
i.setItem(15, itemECO);
}
p.openInventory(i);
playerData.setInOverview(true);
} catch (Exception e) {
Debugger.runReport(e);
}
} }
public void plus(FurnaceSmeltEvent e) { public void plus(FurnaceSmeltEvent e) {
try {
Block block = location.getBlock(); Block block = location.getBlock();
if (block.getType() != Material.FURNACE) return; if (block.getType() != Material.FURNACE) return;
this.uses ++; this.uses++;
this.tolevel ++; this.tolevel++;
int multi = instance.getConfig().getInt("Main.Level Cost Multiplier"); int multi = plugin.getConfig().getInt("Main.Level Cost Multiplier");
if (level.getReward() == null) return; if (level.getReward() == null) return;
String reward = level.getReward(); String reward = level.getReward();
String amt[] = {"1", "1"}; String[] amt = {"1", "1"};
if (reward.contains(":")) { if (reward.contains(":")) {
String[] rewardSplit = reward.split(":"); String[] rewardSplit = reward.split(":");
reward = rewardSplit[0].substring(0, rewardSplit[0].length() - 1); reward = rewardSplit[0].substring(0, rewardSplit[0].length() - 1);
@ -349,11 +86,11 @@ public class EFurnace {
int needed = ((multi * level.getLevel()) - tolevel) - 1; int needed = ((multi * level.getLevel()) - tolevel) - 1;
if (instance.getConfig().getBoolean("Main.Upgrade By Smelting Materials") if (plugin.getConfig().getBoolean("Main.Upgrade By Smelting Materials")
&& needed <= 0 && needed <= 0
&& instance.getConfig().contains("settings.levels.Level-" + (level.getLevel() + 1))) { && plugin.getConfig().contains("settings.levels.Level-" + (level.getLevel() + 1))) {
tolevel = 0; tolevel = 0;
level = instance.getLevelManager().getLevel(this.level.getLevel() + 1); level = plugin.getLevelManager().getLevel(this.level.getLevel() + 1);
} }
this.updateCook(); this.updateCook();
@ -364,8 +101,8 @@ public class EFurnace {
double rand = Math.random() * 100; double rand = Math.random() * 100;
if (rand >= num if (rand >= num
|| e.getResult().equals(Material.SPONGE) || e.getResult().equals(Material.SPONGE)
|| instance.getConfig().getBoolean("Main.No Rewards From Custom Recipes") || plugin.getConfig().getBoolean("Main.No Rewards From Custom Recipes")
&& instance.getFurnaceRecipeFile().getConfig().contains("Recipes." + i.getSmelting().getType().toString())) { && plugin.getFurnaceRecipeFile().getConfig().contains("Recipes." + i.getSmelting().getType().toString())) {
return; return;
} }
@ -374,7 +111,7 @@ public class EFurnace {
Integer.parseInt(amt[1].replace("%", ""))) Integer.parseInt(amt[1].replace("%", "")))
r = (int) (Math.random() * ((Integer.parseInt(amt[1].replace("%", "")) - Integer.parseInt(amt[0])))) + Integer.parseInt(amt[0]); r = (int) (Math.random() * ((Integer.parseInt(amt[1].replace("%", "")) - Integer.parseInt(amt[0])))) + Integer.parseInt(amt[0]);
BoostData boostData = instance.getBoostManager().getBoost(placedBy); BoostData boostData = plugin.getBoostManager().getBoost(placedBy);
r = r * (boostData == null ? 1 : boostData.getMultiplier()); r = r * (boostData == null ? 1 : boostData.getMultiplier());
@ -384,96 +121,83 @@ public class EFurnace {
} }
e.setResult(new ItemStack(e.getResult().getType(), r)); e.setResult(new ItemStack(e.getResult().getType(), r));
} catch (Exception ex) {
Debugger.runReport(ex);
}
} }
public void upgrade(String type, Player player) { public void upgrade(Player player, CostType type) {
try { if (plugin.getLevelManager().getLevels().containsKey(this.level.getLevel() + 1)) {
if (!instance.getLevelManager().getLevels().containsKey(this.level.getLevel() + 1))
Level level = plugin.getLevelManager().getLevel(this.level.getLevel() + 1);
int cost = type == CostType.ECONOMY ? level.getCostEconomy() : level.getCostExperience();
if (type == CostType.ECONOMY) {
if (plugin.getEconomy() == null) {
player.sendMessage("Economy not enabled.");
return; return;
int cost;
if (type.equals("XP")) {
cost = level.getCostExperiance();
} else {
cost = level.getCostEconomy();
} }
Level level = instance.getLevelManager().getLevel(this.level.getLevel() + 1); if (!plugin.getEconomy().hasBalance(player, cost)) {
player.sendMessage(plugin.getReferences().getPrefix() + EpicFurnaces.getInstance().getLocale().getMessage("event.upgrade.cannotafford"));
if (type.equals("ECO")) { return;
if (instance.getServer().getPluginManager().getPlugin("Vault") != null) { }
RegisteredServiceProvider<Economy> rsp = instance.getServer().getServicesManager().getRegistration(net.milkbowl.vault.economy.Economy.class); plugin.getEconomy().withdrawBalance(player, cost);
net.milkbowl.vault.economy.Economy econ = rsp.getProvider();
if (econ.has(player, cost)) {
econ.withdrawPlayer(player, cost);
upgradeFinal(level, player); upgradeFinal(level, player);
} else { } else if (type == CostType.EXPERIENCE) {
player.sendMessage(instance.getLocale().getMessage("event.upgrade.cannotafford"));
}
} else {
player.sendMessage("Vault is not installed.");
}
} else if (type.equals("XP")) {
if (player.getLevel() >= cost || player.getGameMode() == GameMode.CREATIVE) { if (player.getLevel() >= cost || player.getGameMode() == GameMode.CREATIVE) {
if (player.getGameMode() != GameMode.CREATIVE) { if (player.getGameMode() != GameMode.CREATIVE) {
player.setLevel(player.getLevel() - cost); player.setLevel(player.getLevel() - cost);
} }
upgradeFinal(level, player); upgradeFinal(level, player);
} else { } else {
player.sendMessage(instance.getLocale().getMessage("event.upgrade.cannotafford")); player.sendMessage(plugin.getReferences().getPrefix() + plugin.getLocale().getMessage("event.upgrade.cannotafford"));
} }
} }
} catch (Exception ex) {
Debugger.runReport(ex);
} }
} }
private void upgradeFinal(Level level, Player player) { private void upgradeFinal(Level level, Player player) {
try {
this.level = level; this.level = level;
syncName(); syncName();
if (instance.getLevelManager().getHighestLevel() != level) { if (plugin.getLevelManager().getHighestLevel() != level) {
player.sendMessage(instance.getLocale().getMessage("event.upgrade.success", level.getLevel())); player.sendMessage(plugin.getLocale().getMessage("event.upgrade.success", level.getLevel()));
} else { } else {
player.sendMessage(instance.getLocale().getMessage("event.upgrade.maxed", level.getLevel())); player.sendMessage(plugin.getLocale().getMessage("event.upgrade.maxed", level.getLevel()));
} }
Location loc = location.clone().add(.5, .5, .5); Location loc = location.clone().add(.5, .5, .5);
player.getWorld().spawnParticle(org.bukkit.Particle.valueOf(instance.getConfig().getString("Main.Upgrade Particle Type")), loc, 200, .5, .5, .5); if (!plugin.isServerVersionAtLeast(ServerVersion.V1_12)) return;
if (instance.getConfig().getBoolean("Main.Use Sounds")) {
if (instance.getLevelManager().getHighestLevel() == level) { player.getWorld().spawnParticle(org.bukkit.Particle.valueOf(plugin.getConfig().getString("Main.Upgrade Particle Type")), loc, 200, .5, .5, .5);
player.playSound(player.getLocation(), org.bukkit.Sound.ENTITY_PLAYER_LEVELUP, 0.6F, 15.0F);
if (plugin.getLevelManager().getHighestLevel() != level) {
player.playSound(player.getLocation(), Sound.ENTITY_PLAYER_LEVELUP, 0.6F, 15.0F);
} else { } else {
player.playSound(player.getLocation(), org.bukkit.Sound.ENTITY_PLAYER_LEVELUP, 2F, 25.0F); player.playSound(player.getLocation(), Sound.ENTITY_PLAYER_LEVELUP, 2F, 25.0F);
player.playSound(player.getLocation(), org.bukkit.Sound.BLOCK_NOTE_BLOCK_CHIME, 2F, 25.0F);
Bukkit.getScheduler().scheduleSyncDelayedTask(instance, () -> player.playSound(player.getLocation(), org.bukkit.Sound.BLOCK_NOTE_BLOCK_CHIME, 1.2F, 35.0F), 5L); if (!plugin.isServerVersionAtLeast(ServerVersion.V1_13)) return;
Bukkit.getScheduler().scheduleSyncDelayedTask(instance, () -> player.playSound(player.getLocation(), org.bukkit.Sound.BLOCK_NOTE_BLOCK_CHIME, 1.8F, 35.0F), 10L);
} player.playSound(player.getLocation(), Sound.BLOCK_NOTE_BLOCK_CHIME, 2F, 25.0F);
} Bukkit.getScheduler().scheduleSyncDelayedTask(plugin, () -> player.playSound(player.getLocation(), Sound.BLOCK_NOTE_BLOCK_CHIME, 1.2F, 35.0F), 5L);
} catch (Exception ex) { Bukkit.getScheduler().scheduleSyncDelayedTask(plugin, () -> player.playSound(player.getLocation(), Sound.BLOCK_NOTE_BLOCK_CHIME, 1.8F, 35.0F), 10L);
Debugger.runReport(ex);
} }
} }
private void syncName() { private void syncName() {
if (!(location.getBlock() instanceof Furnace)) return; if (!(location.getBlock() instanceof Furnace)) return;
org.bukkit.block.Furnace furnace = (org.bukkit.block.Furnace) location.getBlock().getState(); org.bukkit.block.Furnace furnace = (org.bukkit.block.Furnace) location.getBlock().getState();
if (EpicFurnaces.getInstance().isServerVersionAtLeast(ServerVersion.V1_10))
furnace.setCustomName(Methods.formatName(level.getLevel(), uses, false)); furnace.setCustomName(Methods.formatName(level.getLevel(), uses, false));
furnace.update(true); furnace.update(true);
} }
public void updateCook() { public void updateCook() {
try {
Block block = location.getBlock(); Block block = location.getBlock();
if (block == null || block.getType() != Material.FURNACE) return; if (block == null
Bukkit.getServer().getScheduler().scheduleSyncDelayedTask(instance, () -> { || block.getType() != Material.FURNACE && !block.getType().name().equals("BURNING_FURNACE")) return;
Bukkit.getServer().getScheduler().scheduleSyncDelayedTask(plugin, () -> {
int num = getPerformanceTotal(); int num = getPerformanceTotal();
if (num > 200) { if (num > 200)
num = 200; num = 200;
}
if (num != 0) { if (num != 0) {
BlockState bs = (block.getState()); // max is 200 BlockState bs = (block.getState()); // max is 200
@ -481,9 +205,6 @@ public class EFurnace {
bs.update(); bs.update();
} }
}, 1L); }, 1L);
} catch (Exception e) {
Debugger.runReport(e);
}
} }
@ -502,6 +223,10 @@ public class EFurnace {
return list; return list;
} }
public List<String> getRawAccessList() {
return new ArrayList<>(accessList);
}
public int getPerformanceTotal() { public int getPerformanceTotal() {
String equation = "(" + level.getPerformance() + " / 100) * 200"; String equation = "(" + level.getPerformance() + " / 100) * 200";
@ -516,7 +241,7 @@ public class EFurnace {
return cache.get(equation); return cache.get(equation);
} }
} catch (ScriptException e) { } catch (ScriptException e) {
Debugger.runReport(e); e.printStackTrace();
} }
return 0; return 0;
} }
@ -527,8 +252,10 @@ public class EFurnace {
} }
public boolean addToAccessList(String string) { public boolean addToAccessList(Player player) {
return accessList.add(string); String formatted = player.getUniqueId().toString() + ":" + player.getName();
if (accessList.contains(formatted)) return false;
return accessList.add(formatted);
} }
@ -551,16 +278,13 @@ public class EFurnace {
return nickname; return nickname;
} }
public UUID getPlacedBy() {
return placedBy;
}
public void setNickname(String nickname) { public void setNickname(String nickname) {
this.nickname = nickname; this.nickname = nickname;
} }
public UUID getPlacedBy() {
return placedBy;
}
public List<Location> getRadius(boolean overHeat) { public List<Location> getRadius(boolean overHeat) {
if (overHeat) if (overHeat)

View File

@ -1,8 +1,6 @@
package com.songoda.epicfurnaces.furnace; package com.songoda.epicfurnaces.furnace;
import com.songoda.epicfurnaces.EpicFurnaces; import com.songoda.epicfurnaces.EpicFurnaces;
import com.songoda.epicfurnaces.api.furnace.Furnace;
import com.songoda.epicfurnaces.api.furnace.FurnaceManager;
import org.bukkit.Location; import org.bukkit.Location;
import org.bukkit.block.Block; import org.bukkit.block.Block;
@ -11,34 +9,30 @@ import java.util.Collections;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map; import java.util.Map;
public class EFurnaceManager implements FurnaceManager { public class FurnaceManager {
private final Map<Location, Furnace> registeredFurnaces = new HashMap<>(); private final Map<Location, Furnace> registeredFurnaces = new HashMap<>();
@Override
public void addFurnace(Location location, Furnace furnace) { public Furnace addFurnace(Location location, Furnace furnace) {
registeredFurnaces.put(roundLocation(location), furnace); return registeredFurnaces.put(roundLocation(location), furnace);
} }
@Override
public Furnace removeFurnace(Location location) { public Furnace removeFurnace(Location location) {
return registeredFurnaces.remove(location); return registeredFurnaces.remove(location);
} }
@Override
public Furnace getFurnace(Location location) { public Furnace getFurnace(Location location) {
if (!registeredFurnaces.containsKey(location)) { if (!registeredFurnaces.containsKey(location)) {
addFurnace(location, new EFurnace(location, EpicFurnaces.getInstance().getLevelManager().getLowestLevel(), null, 0, 0, new ArrayList<>(), null)); addFurnace(location, new Furnace(location, EpicFurnaces.getInstance().getLevelManager().getLowestLevel(), null, 0, 0, new ArrayList<>(), null));
} }
return registeredFurnaces.get(location); return registeredFurnaces.get(location);
} }
@Override
public Furnace getFurnace(Block block) { public Furnace getFurnace(Block block) {
return getFurnace(block.getLocation()); return getFurnace(block.getLocation());
} }
@Override
public Map<Location, Furnace> getFurnaces() { public Map<Location, Furnace> getFurnaces() {
return Collections.unmodifiableMap(registeredFurnaces); return Collections.unmodifiableMap(registeredFurnaces);
} }

View File

@ -1,22 +1,21 @@
package com.songoda.epicfurnaces.furnace; package com.songoda.epicfurnaces.furnace.levels;
import com.songoda.epicfurnaces.EpicFurnaces; import com.songoda.epicfurnaces.EpicFurnaces;
import com.songoda.epicfurnaces.api.furnace.Level;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
public class Level implements Level { public class Level {
private int level, costExperiance, costEconomy, performance, fuelDuration, overheat, fuelShare; private int level, costExperience, costEconomy, performance, fuelDuration, overheat, fuelShare;
private String reward; private String reward;
private List<String> description = new ArrayList<>(); private List<String> description = new ArrayList<>();
Level(int level, int costExperiance, int costEconomy, int performance, String reward, int fuelDuration, int overheat, int fuelShare) { Level(int level, int costExperience, int costEconomy, int performance, String reward, int fuelDuration, int overheat, int fuelShare) {
this.level = level; this.level = level;
this.costExperiance = costExperiance; this.costExperience = costExperience;
this.costEconomy = costEconomy; this.costEconomy = costEconomy;
this.performance = performance; this.performance = performance;
this.reward = reward; this.reward = reward;
@ -24,65 +23,65 @@ public class Level implements Level {
this.overheat = overheat; this.overheat = overheat;
this.fuelShare = fuelShare; this.fuelShare = fuelShare;
EpicFurnaces instance = EpicFurnaces.getInstance(); EpicFurnaces plugin = EpicFurnaces.getInstance();
if (performance != 0) if (performance != 0)
description.add(instance.getLocale().getMessage("interface.furnace.performance", performance + "%")); description.add(plugin.getLocale().getMessage("interface.furnace.performance", performance + "%"));
if (reward != null) if (reward != null)
description.add(instance.getLocale().getMessage("interface.furnace.reward", reward.split("%:")[0] + "%")); description.add(plugin.getLocale().getMessage("interface.furnace.reward", reward.split("%:")[0] + "%"));
if (fuelDuration != 0) if (fuelDuration != 0)
description.add(instance.getLocale().getMessage("interface.furnace.fuelduration", fuelDuration + "%")); description.add(plugin.getLocale().getMessage("interface.furnace.fuelduration", fuelDuration + "%"));
if (fuelShare != 0) if (fuelShare != 0)
description.add(instance.getLocale().getMessage("interface.furnace.fuelshare", fuelShare)); description.add(plugin.getLocale().getMessage("interface.furnace.fuelshare", fuelShare));
if (overheat != 0) if (overheat != 0)
description.add(instance.getLocale().getMessage("interface.furnace.overheat", overheat)); description.add(plugin.getLocale().getMessage("interface.furnace.overheat", overheat));
} }
@Override
public List<String> getDescription() { public List<String> getDescription() {
return new ArrayList<>(description); return new ArrayList<>(description);
} }
@Override
public int getLevel() { public int getLevel() {
return level; return level;
} }
@Override
public int getPerformance() { public int getPerformance() {
return performance; return performance;
} }
@Override
public String getReward() { public String getReward() {
return reward; return reward;
} }
@Override
public int getOverheat() { public int getOverheat() {
return overheat; return overheat;
} }
@Override
public int getFuelShare() { public int getFuelShare() {
return fuelShare; return fuelShare;
} }
@Override
public int getFuelDuration() { public int getFuelDuration() {
return fuelDuration; return fuelDuration;
} }
@Override
public int getCostExperiance() { public int getCostExperience() {
return costExperiance; return costExperience;
} }
@Override
public int getCostEconomy() { public int getCostEconomy() {
return costEconomy; return costEconomy;
} }

View File

@ -1,48 +1,45 @@
package com.songoda.epicfurnaces.furnace; package com.songoda.epicfurnaces.furnace.levels;
import com.songoda.epicfurnaces.api.furnace.Level;
import com.songoda.epicfurnaces.api.furnace.LevelManager;
import java.util.Collections; import java.util.Collections;
import java.util.Map; import java.util.Map;
import java.util.NavigableMap; import java.util.NavigableMap;
import java.util.TreeMap; import java.util.TreeMap;
public class LevelManager implements LevelManager { public class LevelManager {
private final NavigableMap<Integer, Level> registeredLevels = new TreeMap<>(); private final NavigableMap<Integer, Level> registeredLevels = new TreeMap<>();
@Override
public void addLevel(int level, int costExperiance, int costEconomy, int performance, String reward, int fuelDuration, int overheat, int fuelShare) { public void addLevel(int level, int costExperiance, int costEconomy, int performance, String reward, int fuelDuration, int overheat, int fuelShare) {
registeredLevels.put(level, new Level(level, costExperiance, costEconomy, performance, reward, fuelDuration, overheat, fuelShare)); registeredLevels.put(level, new Level(level, costExperiance, costEconomy, performance, reward, fuelDuration, overheat, fuelShare));
} }
@Override
public Level getLevel(int level) { public Level getLevel(int level) {
return registeredLevels.get(level); return registeredLevels.get(level);
} }
@Override
public Level getLowestLevel() { public Level getLowestLevel() {
return registeredLevels.firstEntry().getValue(); return registeredLevels.firstEntry().getValue();
} }
@Override
public Level getHighestLevel() { public Level getHighestLevel() {
return registeredLevels.lastEntry().getValue(); return registeredLevels.lastEntry().getValue();
} }
@Override
public boolean isLevel(int level) { public boolean isLevel(int level) {
return registeredLevels.containsKey(level); return registeredLevels.containsKey(level);
} }
@Override
public Map<Integer, Level> getLevels() { public Map<Integer, Level> getLevels() {
return Collections.unmodifiableMap(registeredLevels); return Collections.unmodifiableMap(registeredLevels);
} }
@Override
public void clear() { public void clear() {
registeredLevels.clear(); registeredLevels.clear();
} }

View File

@ -1,16 +1,13 @@
package com.songoda.epichoppers.gui; package com.songoda.epicfurnaces.gui;
import com.songoda.epichoppers.EpicHoppers; import com.songoda.epicfurnaces.EpicFurnaces;
import com.songoda.epichoppers.boost.BoostData; import com.songoda.epicfurnaces.boost.BoostData;
import com.songoda.epichoppers.hopper.Hopper; import com.songoda.epicfurnaces.furnace.Furnace;
import com.songoda.epichoppers.hopper.levels.Level; import com.songoda.epicfurnaces.furnace.levels.Level;
import com.songoda.epichoppers.hopper.levels.modules.Module; import com.songoda.epicfurnaces.utils.CostType;
import com.songoda.epichoppers.player.SyncType; import com.songoda.epicfurnaces.utils.Methods;
import com.songoda.epichoppers.utils.CostType; import com.songoda.epicfurnaces.utils.gui.AbstractAnvilGUI;
import com.songoda.epichoppers.utils.Methods; import com.songoda.epicfurnaces.utils.gui.AbstractGUI;
import com.songoda.epichoppers.utils.ServerVersion;
import com.songoda.epichoppers.utils.TeleportTrigger;
import com.songoda.epichoppers.utils.gui.AbstractGUI;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
import org.bukkit.Material; import org.bukkit.Material;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
@ -20,78 +17,60 @@ import org.bukkit.inventory.meta.ItemMeta;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.stream.Collectors;
public class GUIOverview extends AbstractGUI { public class GUIOverview extends AbstractGUI {
private final EpicHoppers plugin; private final EpicFurnaces plugin;
private final Hopper hopper; private final Furnace furnace;
private int task; private int task;
public GUIOverview(EpicHoppers plugin, Hopper hopper, Player player) { public GUIOverview(EpicFurnaces plugin, Furnace furnace, Player player) {
super(player); super(player);
this.plugin = plugin; this.plugin = plugin;
this.hopper = hopper; this.furnace = furnace;
init(Methods.formatName(hopper.getLevel().getLevel(), false), 27); init(Methods.formatName(furnace.getLevel().getLevel(), furnace.getUses(), false), 27);
runTask(); runTask();
} }
@Override @Override
protected void constructGUI() { public void constructGUI() {
inventory.clear(); inventory.clear();
resetClickables(); resetClickables();
registerClickables(); registerClickables();
plugin.getPlayerDataManager().getPlayerData(player).setLastHopper(hopper); Level level = furnace.getLevel();
Level level = hopper.getLevel();
Level nextLevel = plugin.getLevelManager().getHighestLevel().getLevel() > level.getLevel() ? plugin.getLevelManager().getLevel(level.getLevel() + 1) : null; Level nextLevel = plugin.getLevelManager().getHighestLevel().getLevel() > level.getLevel() ? plugin.getLevelManager().getLevel(level.getLevel() + 1) : null;
ItemStack perl = new ItemStack(Material.ENDER_PEARL, 1); int multi = plugin.getConfig().getInt("Main.Level Cost Multiplier");
ItemMeta perlmeta = perl.getItemMeta();
perlmeta.setDisplayName(plugin.getLocale().getMessage("interface.hopper.perltitle"));
ArrayList<String> loreperl = new ArrayList<>();
String[] parts = plugin.getLocale().getMessage("interface.hopper.perllore2", hopper.getTeleportTrigger() == TeleportTrigger.DISABLED ? plugin.getLocale().getMessage("general.word.disabled") : hopper.getTeleportTrigger().name()).split("\\|");
for (String line : parts) {
loreperl.add(Methods.formatText(line));
}
perlmeta.setLore(loreperl);
perl.setItemMeta(perlmeta);
ItemStack filter = new ItemStack(plugin.isServerVersionAtLeast(ServerVersion.V1_13) ? Material.COMPARATOR : Material.valueOf("REDSTONE_COMPARATOR"), 1); int needed = (multi * level.getLevel()) - furnace.getTolevel();
ItemMeta filtermeta = filter.getItemMeta();
filtermeta.setDisplayName(plugin.getLocale().getMessage("interface.hopper.filtertitle"));
ArrayList<String> lorefilter = new ArrayList<>();
parts = plugin.getLocale().getMessage("interface.hopper.filterlore").split("\\|");
for (String line : parts) {
lorefilter.add(Methods.formatText(line));
}
filtermeta.setLore(lorefilter);
filter.setItemMeta(filtermeta);
ItemStack item = new ItemStack(Material.FURNACE, 1);
ItemStack item = new ItemStack(Material.HOPPER, 1);
ItemMeta itemmeta = item.getItemMeta(); ItemMeta itemmeta = item.getItemMeta();
itemmeta.setDisplayName(plugin.getLocale().getMessage("interface.hopper.currentlevel", level.getLevel())); itemmeta.setDisplayName(plugin.getLocale().getMessage("interface.furnace.currentlevel", level.getLevel()));
List<String> lore = level.getDescription(); ArrayList<String> lore = new ArrayList<>();
if (plugin.getConfig().getBoolean("Main.Allow hopper Upgrading")) { lore.add(plugin.getLocale().getMessage("interface.furnace.smeltedx", furnace.getUses()));
lore.addAll(level.getDescription());
lore.add(""); lore.add("");
if (nextLevel == null) lore.add(plugin.getLocale().getMessage("interface.hopper.alreadymaxed")); if (nextLevel == null)
lore.add(plugin.getLocale().getMessage("interface.furnace.alreadymaxed"));
else { else {
lore.add(plugin.getLocale().getMessage("interface.hopper.nextlevel", nextLevel.getLevel())); lore.add(plugin.getLocale().getMessage("interface.furnace.level", nextLevel.getLevel()));
lore.addAll(nextLevel.getDescription()); lore.addAll(nextLevel.getDescription());
if (plugin.getConfig().getBoolean("Main.Upgrade By Smelting Materials")) {
lore.add(plugin.getLocale().getMessage("interface.furnace.tolevel", needed, Methods.cleanString(plugin.getConfig().getString("Main.Furnace Upgrade Cost"))));
} }
} }
BoostData boostData = plugin.getBoostManager().getBoost(hopper.getPlacedBy()); BoostData boostData = plugin.getBoostManager().getBoost(furnace.getPlacedBy());
if (boostData != null) { if (boostData != null) {
parts = plugin.getLocale().getMessage("interface.hopper.boostedstats", Integer.toString(boostData.getMultiplier()), Methods.makeReadable(boostData.getEndTime() - System.currentTimeMillis())).split("\\|"); String[] parts = plugin.getLocale().getMessage("interface.button.boostedstats", Integer.toString(boostData.getMultiplier()), Methods.makeReadable(boostData.getEndTime() - System.currentTimeMillis())).split("\\|");
lore.add(""); lore.add("");
for (String line : parts) for (String line : parts)
lore.add(Methods.formatText(line)); lore.add(Methods.formatText(line));
@ -100,112 +79,101 @@ public class GUIOverview extends AbstractGUI {
itemmeta.setLore(lore); itemmeta.setLore(lore);
item.setItemMeta(itemmeta); item.setItemMeta(itemmeta);
ItemStack hook = new ItemStack(Material.TRIPWIRE_HOOK, 1);
ItemMeta hookmeta = hook.getItemMeta();
hookmeta.setDisplayName(plugin.getLocale().getMessage("interface.hopper.synchopper"));
ArrayList<String> lorehook = new ArrayList<>();
parts = plugin.getLocale().getMessage("interface.hopper.synclore", hopper.getLinkedBlocks().stream().distinct().count()).split("\\|");
for (String line : parts) {
lorehook.add(Methods.formatText(line));
}
hookmeta.setLore(lorehook);
hook.setItemMeta(hookmeta);
int nu = 0; int nu = 0;
while (nu != 27) { while (nu != 27) {
inventory.setItem(nu, Methods.getGlass()); inventory.setItem(nu, Methods.getGlass());
nu++; nu++;
} }
Map<Integer, Integer[]> layouts = new HashMap<>();
layouts.put(1, new Integer[]{22});
layouts.put(2, new Integer[]{22, 4});
layouts.put(3, new Integer[]{22, 3, 5});
layouts.put(4, new Integer[]{23, 3, 5, 21});
layouts.put(5, new Integer[]{23, 3, 5, 21, 22});
layouts.put(6, new Integer[]{23, 3, 4, 5, 21, 22});
layouts.put(7, new Integer[]{23, 3, 4, 5, 21, 22, 12});
layouts.put(8, new Integer[]{23, 3, 4, 5, 21, 22, 12, 14});
int amount = 1; ItemStack item2 = new ItemStack(Material.valueOf(plugin.getConfig().getString("Interfaces.Performance Icon")), 1);
ItemMeta itemmeta2 = item2.getItemMeta();
itemmeta2.setDisplayName(plugin.getLocale().getMessage("interface.furnace.performancetitle")); //greyed out until available
ArrayList<String> lore2 = new ArrayList<>();
boolean canFilter = level.isFilter() || player.hasPermission("EpicHoppers.Filter"); String[] parts = plugin.getLocale().getMessage("interface.furnace.performanceinfo", level.getPerformance()).split("\\|");
boolean canTeleport = level.isTeleport() || player.hasPermission("EpicHoppers.Teleport"); lore.add("");
if (canFilter) amount++; for (String line : parts) {
if (canTeleport) amount++; lore2.add(Methods.formatText(line));
List<Module> modules = level.getRegisteredModules().stream().filter(module ->
module.getGUIButton(hopper) != null).collect(Collectors.toList());
amount += modules.size();
Integer[] layout = layouts.get(amount);
for (int ii = 0; ii < amount; ii++) {
int slot = layout[ii];
if (ii == 0) {
inventory.setItem(slot, hook);
} else if (canTeleport) {
inventory.setItem(slot, perl);
canTeleport = false;
} else if (canFilter) {
inventory.setItem(slot, filter);
canFilter = false;
} else {
if (modules.isEmpty()) break;
Module module = modules.get(0);
modules.remove(module);
inventory.setItem(slot, module.getGUIButton(hopper));
}
} }
itemmeta2.setLore(lore2);
item2.setItemMeta(itemmeta2);
ItemStack item3 = new ItemStack(Material.valueOf(plugin.getConfig().getString("Interfaces.Reward Icon")), 1);
ItemMeta itemmeta3 = item3.getItemMeta();
itemmeta3.setDisplayName(plugin.getLocale().getMessage("interface.furnace.rewardtitle"));
ArrayList<String> lore3 = new ArrayList<>();
parts = plugin.getLocale().getMessage("interface.furnace.rewardinfo", level.getReward().split(":")[0].replace("%", "")).split("\\|");
lore.add("");
for (String line : parts) {
lore3.add(Methods.formatText(line));
}
itemmeta3.setLore(lore3);
item3.setItemMeta(itemmeta3);
ItemStack item4 = new ItemStack(Material.valueOf(plugin.getConfig().getString("Interfaces.FuelDuration Icon")), 1);
ItemMeta itemmeta4 = item4.getItemMeta();
itemmeta4.setDisplayName(plugin.getLocale().getMessage("interface.furnace.fueldurationtitle"));
ArrayList<String> lore4 = new ArrayList<>();
parts = plugin.getLocale().getMessage("interface.furnace.fueldurationinfo", level.getFuelDuration()).split("\\|");
lore.add("");
for (String line : parts) {
lore4.add(Methods.formatText(line));
}
itemmeta4.setLore(lore4);
item4.setItemMeta(itemmeta4);
ItemStack item5 = new ItemStack(Material.valueOf(plugin.getConfig().getString("Interfaces.Overheat Icon")), 1);
ItemMeta itemmeta5 = item4.getItemMeta();
itemmeta5.setDisplayName(plugin.getLocale().getMessage("interface.furnace.overheattitle"));
ArrayList<String> lore5 = new ArrayList<>();
parts = plugin.getLocale().getMessage("interface.furnace.overheatinfo", level.getOverheat() * 3).split("\\|");
lore.add("");
for (String line : parts) {
lore5.add(Methods.formatText(line));
}
itemmeta5.setLore(lore5);
item5.setItemMeta(itemmeta5);
ItemStack item6 = new ItemStack(Material.valueOf(plugin.getConfig().getString("Interfaces.FuelShare Icon")), 1);
ItemMeta itemmeta6 = item4.getItemMeta();
itemmeta6.setDisplayName(plugin.getLocale().getMessage("interface.furnace.fuelsharetitle"));
ArrayList<String> lore6 = new ArrayList<>();
parts = plugin.getLocale().getMessage("interface.furnace.fuelshareinfo", level.getOverheat() * 3).split("\\|");
lore.add("");
for (String line : parts) {
lore6.add(Methods.formatText(line));
}
itemmeta6.setLore(lore6);
item6.setItemMeta(itemmeta6);
if (plugin.getConfig().getBoolean("Main.Allow hopper Upgrading")) {
ItemStack itemXP = new ItemStack(Material.valueOf(plugin.getConfig().getString("Interfaces.XP Icon")), 1); ItemStack itemXP = new ItemStack(Material.valueOf(plugin.getConfig().getString("Interfaces.XP Icon")), 1);
ItemMeta itemmetaXP = itemXP.getItemMeta(); ItemMeta itemmetaXP = itemXP.getItemMeta();
itemmetaXP.setDisplayName(plugin.getLocale().getMessage("interface.hopper.upgradewithxp")); itemmetaXP.setDisplayName(plugin.getLocale().getMessage("interface.furnace.upgradewithxp"));
ArrayList<String> loreXP = new ArrayList<>(); ArrayList<String> loreXP = new ArrayList<>();
if (nextLevel != null) if (nextLevel != null)
loreXP.add(plugin.getLocale().getMessage("interface.hopper.upgradewithxplore", nextLevel.getCostExperience())); loreXP.add(plugin.getLocale().getMessage("interface.furnace.upgradewithxplore", level.getCostExperience()));
else else
loreXP.add(plugin.getLocale().getMessage("interface.hopper.alreadymaxed")); loreXP.add(plugin.getLocale().getMessage("interface.furnace.alreadymaxed"));
itemmetaXP.setLore(loreXP); itemmetaXP.setLore(loreXP);
itemXP.setItemMeta(itemmetaXP); itemXP.setItemMeta(itemmetaXP);
ItemStack itemECO = new ItemStack(Material.valueOf(plugin.getConfig().getString("Interfaces.Economy Icon")), 1); ItemStack itemECO = new ItemStack(Material.valueOf(plugin.getConfig().getString("Interfaces.Economy Icon")), 1);
ItemMeta itemmetaECO = itemECO.getItemMeta(); ItemMeta itemmetaECO = itemECO.getItemMeta();
itemmetaECO.setDisplayName(plugin.getLocale().getMessage("interface.hopper.upgradewitheconomy")); itemmetaECO.setDisplayName(plugin.getLocale().getMessage("interface.furnace.upgradewitheconomy"));
ArrayList<String> loreECO = new ArrayList<>(); ArrayList<String> loreECO = new ArrayList<>();
if (nextLevel != null) if (nextLevel != null)
loreECO.add(plugin.getLocale().getMessage("interface.hopper.upgradewitheconomylore", Methods.formatEconomy(nextLevel.getCostEconomy()))); loreECO.add(plugin.getLocale().getMessage("interface.furnace.upgradewitheconomylore", Methods.formatEconomy(level.getCostEconomy())));
else else
loreECO.add(plugin.getLocale().getMessage("interface.hopper.alreadymaxed")); loreECO.add(plugin.getLocale().getMessage("interface.furnace.alreadymaxed"));
itemmetaECO.setLore(loreECO); itemmetaECO.setLore(loreECO);
itemECO.setItemMeta(itemmetaECO); itemECO.setItemMeta(itemmetaECO);
if (plugin.getConfig().getBoolean("Main.Upgrade With XP")
&& player.hasPermission("EpicHoppers.Upgrade.XP")
&& level.getCostExperience() != -1) {
inventory.setItem(11, itemXP);
registerClickable(11, ((player, inventory, cursor, slot, type) -> {
hopper.upgrade(player, CostType.EXPERIENCE);
this.hopper.overview(player);
}));
}
if (plugin.getConfig().getBoolean("Main.Upgrade With Economy")
&& player.hasPermission("EpicHoppers.Upgrade.ECO")
&& level.getCostEconomy() != -1) {
inventory.setItem(15, itemECO);
registerClickable(15, ((player, inventory, cursor, slot, type) -> {
hopper.upgrade(player, CostType.ECONOMY);
this.hopper.overview(player);
}));
}
}
inventory.setItem(13, item); inventory.setItem(13, item);
inventory.setItem(0, Methods.getBackgroundGlass(true)); inventory.setItem(0, Methods.getBackgroundGlass(true));
@ -225,7 +193,156 @@ public class GUIOverview extends AbstractGUI {
inventory.setItem(25, Methods.getBackgroundGlass(true)); inventory.setItem(25, Methods.getBackgroundGlass(true));
inventory.setItem(26, Methods.getBackgroundGlass(true)); inventory.setItem(26, Methods.getBackgroundGlass(true));
hopper.setLastPlayer(player.getUniqueId()); int num = -1;
Map<Integer, int[]> spots = new HashMap();
int[] s1 = {22};
spots.put(0, s1);
int[] s2 = {21, 23};
spots.put(1, s2);
int[] s3 = {21, 22, 23};
spots.put(2, s3);
int[] s4 = {20, 21, 23, 24};
spots.put(3, s4);
int[] s5 = {20, 21, 22, 23, 24};
spots.put(4, s5);
if (level.getPerformance() != 0) {
num++;
}
if (level.getReward() != null) {
num++;
}
if (level.getFuelDuration() != 0) {
num++;
}
if (level.getFuelShare() != 0) {
num++;
}
if (level.getOverheat() != 0) {
num++;
}
int[] order = spots.get(num);
int current = 0;
if (level.getPerformance() != 0) {
inventory.setItem(order[current], item2);
current++;
}
if (level.getReward() != null) {
inventory.setItem(order[current], item3);
current++;
}
if (level.getFuelDuration() != 0) {
inventory.setItem(order[current], item4);
current++;
}
if (level.getFuelShare() != 0) {
inventory.setItem(order[current], item6);
current++;
}
if (level.getOverheat() != 0) {
inventory.setItem(order[current], item5);
}
ItemStack hook = new ItemStack(Material.TRIPWIRE_HOOK, 1);
ItemMeta hookmeta = hook.getItemMeta();
hookmeta.setDisplayName(plugin.getLocale().getMessage("interface.furnace.remotefurnace"));
ArrayList<String> lorehook = new ArrayList<>();
String nickname = furnace.getNickname();
parts = plugin.getLocale().getMessage("interface.furnace.remotefurnacelore", nickname == null ? "Unset" : nickname).split("\\|");
for (String line : parts) {
lorehook.add(Methods.formatText(line));
}
if (nickname != null) {
parts = plugin.getLocale().getMessage("interface.furnace.utilize", nickname).split("\\|");
for (String line : parts) {
lorehook.add(Methods.formatText(line));
}
}
lorehook.add("");
lorehook.add(plugin.getLocale().getMessage("interface.furnace.remotelist"));
for (String line : furnace.getRawAccessList()) {
String[] halfs = line.split(":");
String name = halfs[1];
Player player = Bukkit.getPlayer(halfs[0]);
if (player != null) {
name = player.getDisplayName();
}
lorehook.add(Methods.formatText("&6" + name));
}
hookmeta.setLore(lorehook);
hook.setItemMeta(hookmeta);
if (plugin.getConfig().getBoolean("Main.Access Furnaces Remotely")
&& player.hasPermission("EpicFurnaces.Remote")) {
inventory.setItem(4, hook);
registerClickable(4, ((player1, inventory1, cursor, slot, type) -> {
if (type == ClickType.LEFT) {
AbstractAnvilGUI gui = new AbstractAnvilGUI(player, anvilEvent -> {
for (Furnace other : plugin.getFurnaceManager().getFurnaces().values()) {
if (other.getNickname() == null) {
continue;
}
if (other.getNickname().equalsIgnoreCase(anvilEvent.getName())) {
player.sendMessage(plugin.getReferences().getPrefix() + plugin.getLocale().getMessage("event.remote.nicknameinuse"));
return;
}
}
furnace.setNickname(anvilEvent.getName());
player.sendMessage(plugin.getReferences().getPrefix() + plugin.getLocale().getMessage("event.remote.nicknamesuccess"));
});
gui.setOnClose((player2, inventory2) -> init(setTitle, inventory.getSize()));
ItemStack itemO = new ItemStack(Material.PAPER);
ItemMeta meta = itemO.getItemMeta();
meta.setDisplayName(furnace.getNickname() == null ? "Enter a nickname" : furnace.getNickname());
itemO.setItemMeta(meta);
gui.setSlot(AbstractAnvilGUI.AnvilSlot.INPUT_LEFT, itemO);
gui.open();
player.sendMessage(plugin.getReferences().getPrefix() + plugin.getLocale().getMessage("event.remote.enter"));
} else if (type == ClickType.RIGHT) {
furnace.addToAccessList(player);
constructGUI();
}
}));
}
inventory.setItem(13, item);
if (plugin.getConfig().getBoolean("Main.Upgrade With XP")
&& player.hasPermission("EpicFurnaces.Upgrade.XP")
&& level.getCostExperience() != -1) {
inventory.setItem(11, itemXP);
registerClickable(11, ((player, inventory, cursor, slot, type) -> {
furnace.upgrade(player, CostType.EXPERIENCE);
furnace.overview(player);
}));
}
if (plugin.getConfig().getBoolean("Main.Upgrade With Economy")
&& player.hasPermission("EpicFurnaces.Upgrade.ECO")
&& level.getCostEconomy() != -1) {
inventory.setItem(15, itemECO);
registerClickable(15, ((player, inventory, cursor, slot, type) -> {
furnace.upgrade(player, CostType.ECONOMY);
furnace.overview(player);
}));
}
} }
private void runTask() { private void runTask() {
@ -235,52 +352,6 @@ public class GUIOverview extends AbstractGUI {
@Override @Override
protected void registerClickables() { protected void registerClickables() {
registerClickable(3, 23, ((player, inventory, cursor, slot, type) -> {
for (Module module : hopper.getLevel().getRegisteredModules()) {
if (module.getGUIButton(hopper) != null && !module.getGUIButton(hopper).getItemMeta()
.getDisplayName().equalsIgnoreCase(inventory.getItem(slot).getItemMeta().getDisplayName()))
continue;
module.runButtonPress(player, hopper);
}
if (inventory.getItem(slot).getItemMeta()
.getDisplayName().equals(plugin.getLocale().getMessage("interface.hopper.filtertitle"))) {
new GUIFilter(plugin, hopper, player);
} else if (inventory.getItem(slot).getItemMeta()
.getDisplayName().equals(plugin.getLocale().getMessage("interface.hopper.perltitle"))) {
if (type == ClickType.LEFT) {
if (hopper.getLinkedBlocks() != null) {
plugin.getTeleportHandler().tpEntity(player, hopper);
player.closeInventory();
}
} else {
if (hopper.getTeleportTrigger() == TeleportTrigger.DISABLED) {
hopper.setTeleportTrigger(TeleportTrigger.SNEAK);
} else if (hopper.getTeleportTrigger() == TeleportTrigger.SNEAK) {
hopper.setTeleportTrigger(TeleportTrigger.WALK_ON);
} else if (hopper.getTeleportTrigger() == TeleportTrigger.WALK_ON) {
hopper.setTeleportTrigger(TeleportTrigger.DISABLED);
}
constructGUI();
}
} else if (inventory.getItem(slot).getItemMeta()
.getDisplayName().equals(plugin.getLocale().getMessage("interface.hopper.synchopper"))) {
if (type == ClickType.RIGHT) {
player.sendMessage(plugin.references.getPrefix() + plugin.getLocale().getMessage("event.hopper.desync"));
hopper.clearLinkedBlocks();
} else {
if (hopper.getLastPlayer() != null && !hopper.getLastPlayer().equals(player.getUniqueId())) {
player.sendMessage(plugin.references.getPrefix() + plugin.getLocale().getMessage("event.hopper.syncdidnotplace"));
return;
}
plugin.getPlayerDataManager().getPlayerData(player).setSyncType(SyncType.REGULAR);
hopper.clearLinkedBlocks();
player.sendMessage(plugin.references.getPrefix() + plugin.getLocale().getMessage("event.hopper.syncnext"));
hopper.timeout(player);
}
player.closeInventory();
}
}));
} }
@Override @Override

View File

@ -1,8 +1,7 @@
package com.songoda.epicfurnaces.handlers; package com.songoda.epicfurnaces.handlers;
import com.songoda.arconix.api.utils.ConfigWrapper; import com.songoda.epicfurnaces.EpicFurnaces;
import com.songoda.epicfurnaces.EpicFurnacesPlugin; import com.songoda.epicfurnaces.utils.ConfigWrapper;
import com.songoda.epicfurnaces.utils.Debugger;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import java.util.ArrayList; import java.util.ArrayList;
@ -13,35 +12,25 @@ import java.util.List;
*/ */
public class BlacklistHandler { public class BlacklistHandler {
private ConfigWrapper blackFile = new ConfigWrapper(EpicFurnacesPlugin.getInstance(), "", "blacklist.yml"); private ConfigWrapper blackFile = new ConfigWrapper(EpicFurnaces.getInstance(), "", "blacklist.yml");
public BlacklistHandler() { public BlacklistHandler() {
try {
blackFile.createNewFile("Loading language file", "EpicFurnaces blacklist file"); blackFile.createNewFile("Loading language file", "EpicFurnaces blacklist file");
loadBlacklistFile(); loadBlacklistFile();
} catch (Exception e) {
Debugger.runReport(e);
}
} }
public boolean isBlacklisted(Player player) { public boolean isBlacklisted(Player player) {
boolean blacklisted = false;
try {
List<String> list = blackFile.getConfig().getStringList("settings.blacklist"); List<String> list = blackFile.getConfig().getStringList("settings.blacklist");
String cWorld = player.getWorld().getName(); String cWorld = player.getWorld().getName();
for (String world : list) { for (String world : list) {
if (cWorld.equalsIgnoreCase(world)) { if (cWorld.equalsIgnoreCase(world)) {
blacklisted = true; return true;
} }
} }
} catch (Exception e) { return false;
Debugger.runReport(e);
}
return blacklisted;
} }
private void loadBlacklistFile() { private void loadBlacklistFile() {
try {
List<String> list = new ArrayList<>(); List<String> list = new ArrayList<>();
list.add("world2"); list.add("world2");
list.add("world3"); list.add("world3");
@ -51,17 +40,10 @@ public class BlacklistHandler {
blackFile.getConfig().options().copyDefaults(true); blackFile.getConfig().options().copyDefaults(true);
blackFile.saveConfig(); blackFile.saveConfig();
} catch (Exception e) {
Debugger.runReport(e);
}
} }
public void reload() { public void reload() {
try {
blackFile.createNewFile("Loading blacklist file", "EpicFurnaces blacklist file"); blackFile.createNewFile("Loading blacklist file", "EpicFurnaces blacklist file");
loadBlacklistFile(); loadBlacklistFile();
} catch (Exception e) {
Debugger.runReport(e);
}
} }
} }

View File

@ -1,142 +1,96 @@
package com.songoda.ultimatekits.hologram; package com.songoda.epicfurnaces.hologram;
import com.songoda.ultimatekits.UltimateKits; import com.songoda.epicfurnaces.EpicFurnaces;
import com.songoda.ultimatekits.kit.Kit; import com.songoda.epicfurnaces.furnace.Furnace;
import com.songoda.ultimatekits.kit.KitBlockData; import com.songoda.epicfurnaces.utils.Methods;
import com.songoda.ultimatekits.kit.KitType;
import com.songoda.ultimatekits.utils.Methods;
import org.bukkit.Bukkit;
import org.bukkit.Location; import org.bukkit.Location;
import org.bukkit.Material; import org.bukkit.Material;
import org.bukkit.block.Block;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.Map;
public abstract class Hologram { public abstract class Hologram {
protected final UltimateKits instance; protected final EpicFurnaces plugin;
Hologram(UltimateKits instance) { Hologram(EpicFurnaces plugin) {
this.instance = instance; this.plugin = plugin;
} }
public void loadHolograms() { public void loadHolograms() {
Collection<KitBlockData> kitBlocks = instance.getKitManager().getKitLocations().values(); if (!plugin.getConfig().getBoolean("Main.Furnaces Have Holograms")) return;
if (kitBlocks.size() == 0) return;
for (KitBlockData data : kitBlocks) { for (Furnace furnace : plugin.getFurnaceManager().getFurnaces().values()) {
if (data.getWorld() == null) continue; if (furnace.getLocation() == null || furnace.getLocation().getWorld() == null)
add(data); continue;
if (furnace.getLocation().getBlock().getType() != Material.FURNACE) continue;
add(furnace);
} }
} }
public void unloadHolograms() { public void unloadHolograms() {
Collection<KitBlockData> kitBlocks = instance.getKitManager().getKitLocations().values(); for (Furnace furnace : plugin.getFurnaceManager().getFurnaces().values()) {
if (kitBlocks.size() == 0) return; if (furnace.getLocation() == null || furnace.getLocation().getWorld() == null)
continue;
if (furnace.getLocation().getBlock().getType() != Material.FURNACE) continue;
for (KitBlockData data : kitBlocks) { remove(furnace);
if (data.getWorld() == null) continue;
remove(data);
} }
} }
public void add(KitBlockData data) { public void add(Furnace furnace) {
format(data, Action.ADD); format(furnace, Action.ADD);
} }
public void remove(KitBlockData data) { public void remove(Furnace furnace) {
format(data, Action.REMOVE); format(furnace, Action.REMOVE);
} }
public void remove(Kit kit) { public void update(Furnace furnace) {
for (KitBlockData data : instance.getKitManager().getKitLocations().values()) { format(furnace, Action.UPDATE);
if (data.getKit() != kit) continue;
remove(data);
}
} }
public void update(KitBlockData data) { private void format(Furnace furnace, Action action) {
format(data, Action.UPDATE);
}
public void update(Kit kit) { org.bukkit.block.Furnace furnaceBlock = ((org.bukkit.block.Furnace) furnace.getLocation().getBlock().getState());
for (KitBlockData data : instance.getKitManager().getKitLocations().values()) {
if (data.getKit() != kit) continue;
update(data);
}
}
private void format(KitBlockData data, Action action) { int performance = (furnaceBlock.getCookTime() - furnace.getPerformanceTotal()) <= 0 ? 0 : furnace.getPerformanceTotal();
if (data == null) return;
KitType kitType = data.getType(); float percent = (float) (furnaceBlock.getCookTime() - performance) / (200 - performance);
int progressBars = (int) (6 * percent) + (percent == 0 ? 0 : 1);
int leftOver = (6 - progressBars);
StringBuilder sb = new StringBuilder();
for (int i = 0; i < progressBars; i++) {
sb.append("&a=");
}
for (int i = 0; i < leftOver; i++) {
sb.append("&c=");
}
ArrayList<String> lines = new ArrayList<>(); ArrayList<String> lines = new ArrayList<>();
List<String> order = instance.getConfig().getStringList("Main.Hologram Layout"); String progress = Methods.formatText(sb.toString());
Kit kit = data.getKit(); if (furnaceBlock.getInventory().getFuel() == null) {
progress = plugin.getLocale().getMessage("general.hologram.outoffuel");
for (String o : order) {
switch (o.toUpperCase()) {
case "{TITLE}":
String title = kit.getTitle();
if (title == null) {
lines.add(Methods.formatText("&5" + Methods.formatText(kit.getName(), true)));
} else {
lines.add(Methods.formatText("&5" + Methods.formatText(title)));
}
break;
case "{RIGHT-CLICK}":
if (kitType == KitType.CRATE) {
lines.add(Methods.formatText(instance.getLocale().getMessage("interface.hologram.crate")));
break;
}
if (kit.getLink() != null) {
lines.add(Methods.formatText(instance.getLocale().getMessage("interface.hologram.buylink")));
break;
}
if (kit.getPrice() != 0) {
lines.add(Methods.formatText(instance.getLocale().getMessage("interface.hologram.buyeco", kit.getPrice() != 0 ? Methods.formatEconomy(kit.getPrice()) : instance.getLocale().getMessage("general.type.free"))));
}
break;
case "{LEFT-CLICK}":
if (kitType == KitType.CLAIM) {
lines.add(Methods.formatText(instance.getLocale().getMessage("interface.hologram.daily")));
break;
}
if (kit.getLink() == null && kit.getPrice() == 0) {
lines.add(Methods.formatText(instance.getLocale().getMessage("interface.hologram.previewonly")));
} else {
lines.add(Methods.formatText(instance.getLocale().getMessage("interface.hologram.preview")));
}
break;
default:
lines.add(Methods.formatText(o));
break;
}
} }
double multi = .25 * lines.size(); int inAmt = 0;
Location location = data.getLocation(); int outAmt = 0;
Block b = location.getBlock(); if (furnaceBlock.getInventory().getSmelting() != null) {
inAmt = furnaceBlock.getInventory().getSmelting().getAmount();
if (data.isDisplayingItems()) multi += .40;
if (b.getType() == Material.TRAPPED_CHEST
|| b.getType() == Material.CHEST
|| b.getType().name().contains("SIGN")
|| b.getType() == Material.ENDER_CHEST) multi -= .15;
location.add(0, multi, 0);
if (!data.showHologram()) {
remove(location);
return;
} }
if (furnaceBlock.getInventory().getResult() != null) {
outAmt = furnaceBlock.getInventory().getResult().getAmount();
}
String stats = plugin.getLocale().getMessage("general.hologram.stats", inAmt, outAmt > 64 ? 64 : outAmt);
lines.add(progress);
lines.add(stats);
Location location = furnace.getLocation();
switch (action) { switch (action) {
case UPDATE: case UPDATE:

View File

@ -1,7 +1,7 @@
package com.songoda.ultimatekits.hologram; package com.songoda.epicfurnaces.hologram;
import com.gmail.filoghost.holographicdisplays.api.HologramsAPI; import com.gmail.filoghost.holographicdisplays.api.HologramsAPI;
import com.songoda.ultimatekits.UltimateKits; import com.songoda.epicfurnaces.EpicFurnaces;
import org.bukkit.Location; import org.bukkit.Location;
import java.util.ArrayList; import java.util.ArrayList;
@ -9,15 +9,15 @@ import java.util.ArrayList;
public class HologramHolographicDisplays extends Hologram { public class HologramHolographicDisplays extends Hologram {
public HologramHolographicDisplays(UltimateKits instance) { public HologramHolographicDisplays(EpicFurnaces plugin) {
super(instance); super(plugin);
} }
@Override @Override
public void add(Location location, ArrayList<String> lines) { public void add(Location location, ArrayList<String> lines) {
fixLocation(location); fixLocation(location);
com.gmail.filoghost.holographicdisplays.api.Hologram hologram = HologramsAPI.createHologram(instance, location); com.gmail.filoghost.holographicdisplays.api.Hologram hologram = HologramsAPI.createHologram(plugin, location);
for (String line : lines) { for (String line : lines) {
hologram.appendTextLine(line); hologram.appendTextLine(line);
} }
@ -26,7 +26,7 @@ public class HologramHolographicDisplays extends Hologram {
@Override @Override
public void remove(Location location) { public void remove(Location location) {
fixLocation(location); fixLocation(location);
for (com.gmail.filoghost.holographicdisplays.api.Hologram hologram : HologramsAPI.getHolograms(instance)) { for (com.gmail.filoghost.holographicdisplays.api.Hologram hologram : HologramsAPI.getHolograms(plugin)) {
if (hologram.getX() != location.getX() if (hologram.getX() != location.getX()
|| hologram.getY() != location.getY() || hologram.getY() != location.getY()
|| hologram.getZ() != location.getZ()) continue; || hologram.getZ() != location.getZ()) continue;
@ -36,7 +36,7 @@ public class HologramHolographicDisplays extends Hologram {
@Override @Override
public void update(Location location, ArrayList<String> lines) { public void update(Location location, ArrayList<String> lines) {
for (com.gmail.filoghost.holographicdisplays.api.Hologram hologram : HologramsAPI.getHolograms(instance)) { for (com.gmail.filoghost.holographicdisplays.api.Hologram hologram : HologramsAPI.getHolograms(plugin)) {
if (hologram.getX() != location.getX() if (hologram.getX() != location.getX()
|| hologram.getY() != location.getY() || hologram.getY() != location.getY()
|| hologram.getZ() != location.getZ()) continue; || hologram.getZ() != location.getZ()) continue;
@ -51,6 +51,6 @@ public class HologramHolographicDisplays extends Hologram {
} }
private void fixLocation(Location location) { private void fixLocation(Location location) {
location.add(.5, 1.3, .5); location.add(.5, 1.8, .5);
} }
} }

View File

@ -1,13 +1,7 @@
package com.songoda.epicfurnaces.listeners; package com.songoda.epicfurnaces.listeners;
import com.mysql.jdbc.Buffer; import com.songoda.epicfurnaces.EpicFurnaces;
import com.songoda.arconix.api.methods.formatting.TextComponent; import com.songoda.epicfurnaces.furnace.Furnace;
import com.songoda.epicfurnaces.EpicFurnacesPlugin;
import com.songoda.epicfurnaces.api.furnace.Furnace;
import com.songoda.epicfurnaces.furnace.EFurnace;
import com.songoda.epicfurnaces.utils.Debugger;
import com.songoda.epicfurnaces.utils.Methods;
import org.bukkit.Bukkit;
import org.bukkit.Location; import org.bukkit.Location;
import org.bukkit.Material; import org.bukkit.Material;
import org.bukkit.block.Block; import org.bukkit.block.Block;
@ -18,7 +12,6 @@ import org.bukkit.event.block.BlockBreakEvent;
import org.bukkit.event.block.BlockFormEvent; import org.bukkit.event.block.BlockFormEvent;
import org.bukkit.event.block.BlockPlaceEvent; import org.bukkit.event.block.BlockPlaceEvent;
import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta;
import java.util.ArrayList; import java.util.ArrayList;
@ -27,10 +20,10 @@ import java.util.ArrayList;
*/ */
public class BlockListeners implements Listener { public class BlockListeners implements Listener {
private final EpicFurnacesPlugin instance; private final EpicFurnaces plugin;
public BlockListeners(EpicFurnacesPlugin instance) { public BlockListeners(EpicFurnaces plugin) {
this.instance = instance; this.plugin = plugin;
} }
@EventHandler @EventHandler
@ -39,10 +32,12 @@ public class BlockListeners implements Listener {
if (material != Material.SNOW && material != Material.ICE) return; if (material != Material.SNOW && material != Material.ICE) return;
for (Furnace furnace : instance.getFurnaceManager().getFurnaces().values()) { for (Furnace furnace : plugin.getFurnaceManager().getFurnaces().values()) {
if (furnace.getRadius(false) == null || ((org.bukkit.block.Furnace)furnace.getLocation().getBlock().getState()).getBurnTime() == 0) continue; if (furnace.getRadius(false) == null || ((org.bukkit.block.Furnace) furnace.getLocation().getBlock().getState()).getBurnTime() == 0)
continue;
for (Location location : furnace.getRadius(false)) { for (Location location : furnace.getRadius(false)) {
if (location.getX() != event.getNewState().getX() || location.getY() != event.getNewState().getY() || location.getZ() != event.getNewState().getZ()) continue; if (location.getX() != event.getNewState().getX() || location.getY() != event.getNewState().getY() || location.getZ() != event.getNewState().getZ())
continue;
event.setCancelled(true); event.setCancelled(true);
return; return;
} }
@ -50,31 +45,37 @@ public class BlockListeners implements Listener {
} }
@EventHandler @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
public void onBlockPlace(BlockPlaceEvent event) { public void onBlockPlace(BlockPlaceEvent event) {
try {
if (event.getBlock().getType() != Material.FURNACE || !event.getItemInHand().getItemMeta().hasDisplayName()) return; if (plugin.getBlacklistHandler().isBlacklisted(event.getPlayer())) {
return;
}
if (event.getBlock().getType() != Material.FURNACE)
return;
ItemStack item = event.getItemInHand(); ItemStack item = event.getItemInHand();
Location location = event.getBlock().getLocation(); Location location = event.getBlock().getLocation();
if (instance.getFurnceLevel(item) != 1) { Furnace furnace;
if (instance.getBlacklistHandler().isBlacklisted(event.getPlayer())) {
event.setCancelled(true); if (event.getItemInHand().getItemMeta().hasDisplayName() && plugin.getFurnceLevel(item) != 1) {
return; furnace = new Furnace(location, plugin.getLevelManager().getLevel(plugin.getFurnceLevel(item)), null, plugin.getFurnaceUses(item), 0, new ArrayList<>(), event.getPlayer().getUniqueId());
} else {
furnace = new Furnace(location, plugin.getLevelManager().getLowestLevel(), null, 0, 0, new ArrayList<>(), event.getPlayer().getUniqueId());
} }
instance.getFurnaceManager().addFurnace(location, new EFurnace(location, instance.getLevelManager().getLevel(instance.getFurnceLevel(item)), null, instance.getFurnaceUses(item), 0, new ArrayList<>(), event.getPlayer().getUniqueId())); plugin.getFurnaceManager().addFurnace(location, furnace);
}
} catch (Exception ee) { if (plugin.getHologram() != null) {
Debugger.runReport(ee); plugin.getHologram().add(furnace);
} }
} }
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
public void onBlockBreak(BlockBreakEvent event) { public void onBlockBreak(BlockBreakEvent event) {
try {
if (!event.getPlayer().hasPermission("EpicFurnaces.overview") && !event.getPlayer().hasPermission("epicfurnaces.*")) { if (!event.getPlayer().hasPermission("EpicFurnaces.overview") && !event.getPlayer().hasPermission("epicfurnaces.*")) {
return; return;
} }
@ -82,27 +83,24 @@ public class BlockListeners implements Listener {
if (block.getType() != Material.FURNACE) { if (block.getType() != Material.FURNACE) {
return; return;
} }
instance.getHologramTask().despawn(block); if (plugin.getBlacklistHandler().isBlacklisted(event.getPlayer())) {
if (instance.getBlacklistHandler().isBlacklisted(event.getPlayer())) {
return; return;
} }
Furnace furnace = instance.getFurnaceManager().getFurnace(block); Furnace furnace = plugin.getFurnaceManager().getFurnace(block);
int level = instance.getFurnaceManager().getFurnace(block).getLevel().getLevel(); int level = plugin.getFurnaceManager().getFurnace(block).getLevel().getLevel();
if (plugin.getHologram() != null)
plugin.getHologram().remove(furnace);
if (level != 0) { if (level != 0) {
event.setCancelled(true); event.setCancelled(true);
ItemStack item = instance.createLeveledFurnace(level, furnace.getUses()); ItemStack item = plugin.createLeveledFurnace(level, furnace.getUses());
event.getBlock().setType(Material.AIR); event.getBlock().setType(Material.AIR);
event.getBlock().getLocation().getWorld().dropItemNaturally(event.getBlock().getLocation(), item); event.getBlock().getLocation().getWorld().dropItemNaturally(event.getBlock().getLocation(), item);
} }
instance.getFurnaceManager().removeFurnace(block.getLocation()); plugin.getFurnaceManager().removeFurnace(block.getLocation());
} catch (Exception ee) {
Debugger.runReport(ee);
}
} }
} }

View File

@ -1,10 +1,8 @@
package com.songoda.epicfurnaces.listeners; package com.songoda.epicfurnaces.listeners;
import com.songoda.epicfurnaces.EpicFurnacesPlugin; import com.songoda.epicfurnaces.EpicFurnaces;
import com.songoda.epicfurnaces.api.furnace.Furnace; import com.songoda.epicfurnaces.furnace.Furnace;
import com.songoda.epicfurnaces.api.furnace.Level; import com.songoda.epicfurnaces.furnace.levels.Level;
import com.songoda.epicfurnaces.furnace.EFurnace;
import com.songoda.epicfurnaces.utils.Debugger;
import org.bukkit.Material; import org.bukkit.Material;
import org.bukkit.block.Block; import org.bukkit.block.Block;
import org.bukkit.event.EventHandler; import org.bukkit.event.EventHandler;
@ -17,44 +15,35 @@ import org.bukkit.event.inventory.FurnaceSmeltEvent;
*/ */
public class FurnaceListeners implements Listener { public class FurnaceListeners implements Listener {
private final EpicFurnacesPlugin instance; private final EpicFurnaces plugin;
public FurnaceListeners(EpicFurnacesPlugin instance) { public FurnaceListeners(EpicFurnaces plugin) {
this.instance = instance; this.plugin = plugin;
} }
@EventHandler @EventHandler
public void onCook(FurnaceSmeltEvent e) { public void onCook(FurnaceSmeltEvent e) {
try {
Block b = e.getBlock(); Block b = e.getBlock();
if ((e.getBlock().isBlockPowered() && instance.getConfig().getBoolean("Main.Redstone Deactivates Furnaces")) || e.getResult() == null) { if ((e.getBlock().isBlockPowered() && plugin.getConfig().getBoolean("Main.Redstone Deactivates Furnaces")) || e.getResult() == null) {
e.setCancelled(true); e.setCancelled(true);
return; return;
} }
Furnace furnace = instance.getFurnaceManager().getFurnace(b.getLocation()); Furnace furnace = plugin.getFurnaceManager().getFurnace(b.getLocation());
if (furnace != null && e.getSource().getType() != Material.WET_SPONGE) if (furnace != null && e.getSource().getType() != Material.valueOf("WET_SPONGE"))
((EFurnace) furnace).plus(e); furnace.plus(e);
} catch (Exception ee) {
Debugger.runReport(ee);
}
} }
@EventHandler @EventHandler
public void onFuel(FurnaceBurnEvent e) { public void onFuel(FurnaceBurnEvent event) {
try { Furnace furnace = plugin.getFurnaceManager().getFurnace(event.getBlock().getLocation());
if (e.getFuel() == null) return;
Furnace furnace = instance.getFurnaceManager().getFurnace(e.getBlock().getLocation());
Level level = furnace != null ? furnace.getLevel() : instance.getLevelManager().getLowestLevel(); Level level = furnace != null ? furnace.getLevel() : plugin.getLevelManager().getLowestLevel();
if (level.getFuelDuration() != 0) return; if (level.getFuelDuration() != 0) return;
int num = level.getFuelDuration(); int num = level.getFuelDuration();
int per = (e.getBurnTime() / 100) * num; int per = (event.getBurnTime() / 100) * num;
e.setBurnTime(e.getBurnTime() + per); event.setBurnTime(event.getBurnTime() + per);
} catch (Exception ee) {
Debugger.runReport(ee);
}
} }
} }

View File

@ -1,8 +1,7 @@
package com.songoda.epicfurnaces.listeners; package com.songoda.epicfurnaces.listeners;
import com.songoda.epicfurnaces.EpicFurnacesPlugin; import com.songoda.epicfurnaces.EpicFurnaces;
import com.songoda.epicfurnaces.furnace.EFurnace; import com.songoda.epicfurnaces.furnace.Furnace;
import com.songoda.epicfurnaces.utils.Debugger;
import org.bukkit.Material; import org.bukkit.Material;
import org.bukkit.block.Block; import org.bukkit.block.Block;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
@ -17,37 +16,31 @@ import org.bukkit.event.player.PlayerInteractEvent;
*/ */
public class InteractListeners implements Listener { public class InteractListeners implements Listener {
private final EpicFurnacesPlugin instance; private final EpicFurnaces plugin;
public InteractListeners(EpicFurnacesPlugin instance) { public InteractListeners(EpicFurnaces plugin) {
this.instance = instance; this.plugin = plugin;
} }
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
public void onClick(PlayerInteractEvent event) { public void onClick(PlayerInteractEvent event) {
try {
if (event.getClickedBlock() == null) return; if (event.getClickedBlock() == null) return;
if (instance.getBlacklistHandler().isBlacklisted(event.getPlayer())) { if (plugin.getBlacklistHandler().isBlacklisted(event.getPlayer())) {
return; return;
} }
Player player = event.getPlayer(); Player player = event.getPlayer();
Block block = event.getClickedBlock(); Block block = event.getClickedBlock();
if (!player.hasPermission("EpicFurnaces.overview") if (!player.hasPermission("EpicFurnaces.overview")
|| !instance.canBuild(player, event.getClickedBlock().getLocation())
|| event.getAction() != Action.LEFT_CLICK_BLOCK || event.getAction() != Action.LEFT_CLICK_BLOCK
|| player.isSneaking() || player.isSneaking()
|| (block.getType() != Material.FURNACE) || (block.getType() != Material.FURNACE)
|| player.getInventory().getItemInMainHand().getType().name().contains("PICKAXE")) { || player.getInventory().getItemInHand().getType().name().contains("PICKAXE")) {
return; return;
} }
event.setCancelled(true); event.setCancelled(true);
((EFurnace) instance.getFurnaceManager().getFurnace(block.getLocation())).openOverview(player); plugin.getFurnaceManager().getFurnace(block.getLocation()).overview(player);
} catch (Exception ee) {
Debugger.runReport(ee);
}
} }
} }

View File

@ -1,119 +1,50 @@
package com.songoda.epicfurnaces.listeners; package com.songoda.epicfurnaces.listeners;
import com.songoda.arconix.plugin.Arconix; import com.songoda.epicfurnaces.EpicFurnaces;
import com.songoda.epicfurnaces.EpicFurnacesPlugin;
import com.songoda.epicfurnaces.furnace.EFurnace;
import com.songoda.epicfurnaces.player.PlayerData;
import com.songoda.epicfurnaces.utils.Debugger;
import org.bukkit.Material; import org.bukkit.Material;
import org.bukkit.block.Block;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler; import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener; import org.bukkit.event.Listener;
import org.bukkit.event.inventory.*; import org.bukkit.event.inventory.*;
import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.ItemStack;
import java.util.ArrayList;
import java.util.List;
/** /**
* Created by songoda on 2/26/2017. * Created by songoda on 2/26/2017.
*/ */
public class InventoryListeners implements Listener { public class InventoryListeners implements Listener {
private final EpicFurnacesPlugin instance; private final EpicFurnaces plugin;
public InventoryListeners(EpicFurnacesPlugin instance) { public InventoryListeners(EpicFurnaces plugin) {
this.instance = instance; this.plugin = plugin;
} }
@EventHandler @EventHandler
public void onInventoryMove(InventoryMoveItemEvent e) { public void onInventoryMove(InventoryMoveItemEvent event) {
if (!e.getDestination().getType().equals(InventoryType.FURNACE) if (!event.getDestination().getType().equals(InventoryType.FURNACE)
|| e.getDestination().getItem(0) == null || event.getDestination().getItem(0) == null
|| e.getDestination().getItem(0).getType() != e.getItem().getType() || event.getDestination().getItem(0).getType() != event.getItem().getType()
|| e.getDestination().getItem(0).getAmount() != 1) { || event.getDestination().getItem(0).getAmount() != 1) {
return; return;
} }
((EFurnace) instance.getFurnaceManager().getFurnace(e.getDestination().getLocation())).updateCook(); plugin.getFurnaceManager().getFurnace(((org.bukkit.block.Furnace)
event.getDestination().getHolder()).getLocation()).updateCook();
} }
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
@EventHandler @EventHandler
public void onInventoryClick(InventoryClickEvent e) { public void onInventoryClick(InventoryClickEvent event) {
try { if (event.getSlot() != 64537) {
Player p = (Player) e.getWhoClicked(); if (event.getInventory().getType() == InventoryType.ANVIL) {
PlayerData playerData = instance.getPlayerDataManager().getPlayerData(p); if (event.getAction() != InventoryAction.NOTHING) {
if (event.getCurrentItem().getType() != Material.AIR) {
if (e.getInventory().getType().equals(InventoryType.FURNACE) ItemStack item = event.getCurrentItem();
&& e.getInventory().getHolder() != null
&& e.getSlotType() == InventoryType.SlotType.CRAFTING) {
Block block;
block = e.getInventory().getLocation().getBlock();
((EFurnace) instance.getFurnaceManager().getFurnace(block)).updateCook();
} else if (playerData.isInOverview()) {
e.setCancelled(true);
EFurnace furnace = playerData.getLastFurace();
if (e.getSlot() == 11) {
if (!e.getCurrentItem().getItemMeta().getDisplayName().equals("§l")) {
furnace.upgrade("XP", p);
p.closeInventory();
}
} else if (e.getSlot() == 15) {
if (!e.getCurrentItem().getItemMeta().getDisplayName().equals("§l")) {
furnace.upgrade("ECO", p);
p.closeInventory();
}
} else if (e.getSlot() == 4) {
if (!e.getCurrentItem().getItemMeta().getDisplayName().equals("§l")) {
if (e.getClick().isLeftClick()) {
p.sendMessage(instance.getReferences().getPrefix() + instance.getLocale().getMessage("event.remote.enter"));
playerData.setSettingNickname(true);
p.closeInventory();
} else if (e.getClick().isRightClick()) {
List<String> list = new ArrayList<>();
String key = Arconix.pl().getApi().serialize().serializeLocation(furnace.getLocation());
String id = p.getUniqueId().toString() + ":" + p.getName();
if (instance.getDataFile().getConfig().contains("data.charged." + key + ".remoteAccessList")) {
list = (List<String>) instance.getDataFile().getConfig().getList("data.charged." + key + ".remoteAccessList");
for (String line : (List<String>) instance.getDataFile().getConfig().getList("data.charged." + key + ".remoteAccessList")) {
if (id.equals(line)) {
e.setCancelled(true);
return;
}
}
}
list.add(id);
instance.getDataFile().getConfig().set("data.charged." + key + ".remoteAccessList", list);
furnace.openOverview(p);
}
}
}
if (e.getSlot() != 64537) {
if (e.getInventory().getType() == InventoryType.ANVIL) {
if (e.getAction() != InventoryAction.NOTHING) {
if (e.getCurrentItem().getType() != Material.AIR) {
ItemStack item = e.getCurrentItem();
if (item.getType() == Material.FURNACE) { if (item.getType() == Material.FURNACE) {
e.setCancelled(true); event.setCancelled(true);
} }
} }
} }
} }
} }
} }
} catch (Exception ee) {
Debugger.runReport(ee);
}
}
@EventHandler
public void onClose(InventoryCloseEvent event) {
try {
instance.getPlayerDataManager().getPlayerData((Player) event.getPlayer()).setInOverview(false);
} catch (Exception e) {
Debugger.runReport(e);
}
}
} }

View File

@ -1,7 +1,7 @@
package com.songoda.epicspawners.utils.gui; package com.songoda.epicfurnaces.utils.gui;
import com.songoda.epicspawners.EpicSpawners; import com.songoda.epicfurnaces.EpicFurnaces;
import com.songoda.epicspawners.utils.version.NMSUtil; import com.songoda.epicfurnaces.utils.version.NMSUtil;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
import org.bukkit.Material; import org.bukkit.Material;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
@ -63,7 +63,7 @@ public class AbstractAnvilGUI {
} }
public AbstractAnvilGUI(Player player, AnvilClickEventHandler handler) { public AbstractAnvilGUI(Player player, AnvilClickEventHandler handler) {
EpicSpawners instance = EpicSpawners.getInstance(); EpicFurnaces instance = EpicFurnaces.getInstance();
this.player = player; this.player = player;
this.listener = new Listener() { this.listener = new Listener() {

View File

@ -1,7 +1,7 @@
package com.songoda.epicspawners.utils.gui; package com.songoda.epicfurnaces.utils.gui;
import com.songoda.epicspawners.EpicSpawners; import com.songoda.epicfurnaces.EpicFurnaces;
import com.songoda.epicspawners.utils.Methods; import com.songoda.epicfurnaces.utils.Methods;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
import org.bukkit.ChatColor; import org.bukkit.ChatColor;
import org.bukkit.Material; import org.bukkit.Material;
@ -125,7 +125,7 @@ public abstract class AbstractGUI implements Listener {
registerOnCloses(); registerOnCloses();
} }
constructGUI(); constructGUI();
initializeListeners(EpicSpawners.getInstance()); initializeListeners(EpicFurnaces.getInstance());
player.openInventory(inventory); player.openInventory(inventory);
} }

View File

@ -1,4 +1,4 @@
package com.songoda.epicspawners.utils.gui; package com.songoda.epicfurnaces.utils.gui;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.event.inventory.ClickType; import org.bukkit.event.inventory.ClickType;

View File

@ -1,4 +1,4 @@
package com.songoda.epicspawners.utils.gui; package com.songoda.epicfurnaces.utils.gui;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.inventory.Inventory; import org.bukkit.inventory.Inventory;

View File

@ -1,7 +1,7 @@
package com.songoda.epicspawners.utils.gui; package com.songoda.epicfurnaces.utils.gui;
import com.songoda.epicspawners.EpicSpawners; import com.songoda.epicfurnaces.EpicFurnaces;
import com.songoda.epicspawners.utils.ServerVersion; import com.songoda.epicfurnaces.utils.ServerVersion;
import org.bukkit.Sound; import org.bukkit.Sound;
import org.bukkit.event.inventory.ClickType; import org.bukkit.event.inventory.ClickType;
@ -18,7 +18,7 @@ public class Range {
this.max = max; this.max = max;
this.clickType = clickType; this.clickType = clickType;
this.bottom = bottom; this.bottom = bottom;
if (EpicSpawners.getInstance().isServerVersionAtLeast(ServerVersion.V1_9)) onClickSound = Sound.UI_BUTTON_CLICK; if (EpicFurnaces.getInstance().isServerVersionAtLeast(ServerVersion.V1_9)) onClickSound = Sound.UI_BUTTON_CLICK;
} }
public Range(int min, int max, Sound onClickSound, ClickType clickType, boolean bottom) { public Range(int min, int max, Sound onClickSound, ClickType clickType, boolean bottom) {

View File

@ -0,0 +1,37 @@
Level-1:
Performance: 10%
Reward: 10%:1
Cost-xp: 20
Cost-eco: 5000
Level-2:
Performance: 25%
Reward: 20%:1-2
Cost-xp: 25
Cost-eco: 7500
Level-3:
Performance: 40%
Reward: 35%:2-3
Fuel-duration: 10%
Cost-xp: 30
Cost-eco: 10000
Level-4:
Performance: 55%
Reward: 50%:2-4
Fuel-duration: 25%
Cost-xp: 35
Cost-eco: 12000
Level-5:
Performance: 75%
Reward: 70%:3-4
Fuel-duration: 45%
Overheat: 1
Cost-xp: 40
Cost-eco: 15000
Level-6:
Performance: 75%
Reward: 70%:3-4
Fuel-duration: 45%
Overheat: 2
Fuel-share: 1
Cost-xp: 40
Cost-eco: 15000

View File

@ -1,9 +1,8 @@
name: EpicFurnaces name: EpicFurnaces
description: EpicFurnaces description: EpicFurnaces
version: maven-version-number version: maven-version-number
depend: [Arconix] softdepend: [HolographicDisplays, PlotSquared, GriefPrevention, USkyBlock, SkyBlock, WorldGuard, Factions]
softdepend: [PlotSquared, GriefPrevention, USkyBlock, SkyBlock, WorldGuard, Factions] main: com.songoda.epicfurnaces.EpicFurnaces
main: com.songoda.epicfurnaces.EpicFurnacesPlugin
author: songoda author: songoda
api-version: 1.13 api-version: 1.13
commands: commands: