mirror of
https://github.com/songoda/EpicFurnaces.git
synced 2024-12-11 03:03:27 +01:00
Merge branch 'development'
This commit is contained in:
commit
5f882f4cb4
@ -4,7 +4,7 @@ stages:
|
||||
variables:
|
||||
name: "EpicFurnaces"
|
||||
path: "/builds/$CI_PROJECT_PATH"
|
||||
version: "4.5.2"
|
||||
version: "4.5.3"
|
||||
|
||||
build:
|
||||
stage: build
|
||||
|
@ -167,7 +167,7 @@ public class EpicFurnaces extends SongodaPlugin {
|
||||
|
||||
org.bukkit.block.Furnace furnaceBlock = ((org.bukkit.block.Furnace) state);
|
||||
|
||||
int performance = (furnaceBlock.getCookTime() - furnace.getPerformanceTotal()) <= 0 ? 0 : furnace.getPerformanceTotal();
|
||||
int performance = (furnaceBlock.getCookTime() - furnace.getPerformanceTotal(furnaceBlock.getType())) <= 0 ? 0 : furnace.getPerformanceTotal(furnaceBlock.getType());
|
||||
|
||||
float percent = (float) (furnaceBlock.getCookTime() - performance) / (200 - performance);
|
||||
|
||||
|
@ -6,84 +6,80 @@ import com.songoda.epicfurnaces.boost.BoostData;
|
||||
import com.songoda.epicfurnaces.utils.Methods;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
import java.util.Calendar;
|
||||
import java.util.Date;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
public class CommandBoost extends AbstractCommand {
|
||||
|
||||
final EpicFurnaces plugin;
|
||||
final EpicFurnaces instance;
|
||||
|
||||
public CommandBoost(EpicFurnaces plugin) {
|
||||
public CommandBoost(EpicFurnaces instance) {
|
||||
super(false, "boost");
|
||||
this.plugin = plugin;
|
||||
this.instance = instance;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected ReturnType runCommand(CommandSender sender, String... args) {
|
||||
if (args.length < 2) {
|
||||
instance.getLocale().newMessage("&7Syntax error...").sendPrefixedMessage(sender);
|
||||
return ReturnType.SYNTAX_ERROR;
|
||||
}
|
||||
if (!Methods.isInt(args[1])) {
|
||||
instance.getLocale().newMessage("&6" + args[1] + " &7is not a number...").sendPrefixedMessage(sender);
|
||||
return ReturnType.SYNTAX_ERROR;
|
||||
}
|
||||
if (Bukkit.getPlayer(args[0]) == null) {
|
||||
plugin.getLocale().newMessage("&cThat player does not exist...").sendPrefixedMessage(sender);
|
||||
return ReturnType.FAILURE;
|
||||
} else if (!Methods.isInt(args[1])) {
|
||||
plugin.getLocale().newMessage("&6" + args[1] + " &7is not a number...").sendPrefixedMessage(sender);
|
||||
return ReturnType.FAILURE;
|
||||
} else {
|
||||
Calendar c = Calendar.getInstance();
|
||||
Date currentDate = new Date();
|
||||
c.setTime(currentDate);
|
||||
|
||||
String time = "&7.";
|
||||
long duration = 0L;
|
||||
|
||||
if (args.length > 2) {
|
||||
if (args[2].contains("m:")) {
|
||||
String[] arr2 = (args[2]).split(":");
|
||||
c.add(Calendar.MINUTE, Integer.parseInt(arr2[0]));
|
||||
time = " &7for &6" + arr2[0] + " minutes&7.";
|
||||
} else if (args[2].contains("h:")) {
|
||||
String[] arr2 = (args[2]).split(":");
|
||||
c.add(Calendar.HOUR, Integer.parseInt(arr2[0]));
|
||||
time = " &7for &6" + arr2[0] + " hours&7.";
|
||||
} else if (args[2].contains("d:")) {
|
||||
String[] arr2 = (args[2]).split(":");
|
||||
c.add(Calendar.HOUR, Integer.parseInt(arr2[0]) * 24);
|
||||
time = " &7for &6" + arr2[0] + " days&7.";
|
||||
} else if (args[2].contains("y:")) {
|
||||
String[] arr2 = (args[2]).split(":");
|
||||
c.add(Calendar.YEAR, Integer.parseInt(arr2[0]));
|
||||
time = " &7for &6" + arr2[0] + " years&7.";
|
||||
} else {
|
||||
plugin.getLocale().newMessage("&7" + args[2] + " &7is invalid.").sendPrefixedMessage(sender);
|
||||
return ReturnType.SUCCESS;
|
||||
for (int i = 0; i < args.length; i++) {
|
||||
String line = args[i];
|
||||
long time = Methods.parseTime(line);
|
||||
duration += time;
|
||||
|
||||
}
|
||||
} else {
|
||||
c.add(Calendar.YEAR, 10);
|
||||
}
|
||||
|
||||
BoostData boostData = new BoostData(Integer.parseInt(args[2]), c.getTime().getTime(), Bukkit.getPlayer(args[0]).getUniqueId());
|
||||
plugin.getBoostManager().addBoostToPlayer(boostData);
|
||||
plugin.getLocale().newMessage("&7Successfully boosted &6" + Bukkit.getPlayer(args[0]).getName()
|
||||
+ "'s &7furnaces reward amounts by &6" + args[2] + "x" + time).sendPrefixedMessage(sender);
|
||||
}
|
||||
Player player = Bukkit.getPlayer(args[0]);
|
||||
if (player == null) {
|
||||
instance.getLocale().newMessage("&cThat player does not exist or is not online...").sendPrefixedMessage(sender);
|
||||
return ReturnType.FAILURE;
|
||||
}
|
||||
|
||||
BoostData boostData = new BoostData(Integer.parseInt(args[1]), duration == 0L ? Long.MAX_VALUE : System.currentTimeMillis() + duration, player.getUniqueId());
|
||||
instance.getBoostManager().addBoostToPlayer(boostData);
|
||||
instance.getLocale().newMessage("&7Successfully boosted &6" + Bukkit.getPlayer(args[0]).getName()
|
||||
+ "'s &7furnace reward amounts &6" + args[1] + "x" + (duration == 0L ? "" : (" for " + Methods.makeReadable(duration))) + "&7.").sendPrefixedMessage(sender);
|
||||
return ReturnType.SUCCESS;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected List<String> onTab(CommandSender commandSender, String... strings) {
|
||||
protected List<String> onTab(CommandSender sender, String... args) {
|
||||
if (args.length == 1) {
|
||||
List<String> players = new ArrayList<>();
|
||||
for (Player player : Bukkit.getOnlinePlayers()) {
|
||||
players.add(player.getName());
|
||||
}
|
||||
return players;
|
||||
} else if (args.length == 2) {
|
||||
return Arrays.asList("1", "2", "3", "4", "5");
|
||||
} else if (args.length == 3) {
|
||||
return Arrays.asList("1m", "1h", "1d");
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getPermissionNode() {
|
||||
return "epicfurnaces.admin";
|
||||
return "epicfurnaces.boost";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getSyntax() {
|
||||
return "/ef boost <player> <multiplier> [m:minute, h:hour, d:day, y:year]";
|
||||
return "/ef boost <player> <amount> [duration]";
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -56,6 +56,8 @@ public class Furnace {
|
||||
if (!block.getType().name().contains("FURNACE") && !block.getType().name().contains("SMOKER")) return;
|
||||
|
||||
this.uses++;
|
||||
|
||||
if (Settings.UPGRADE_COST.getMaterial().matches(e.getResult()))
|
||||
this.tolevel++;
|
||||
|
||||
int multi = Settings.LEVEL_MULTIPLIER.getInt();
|
||||
@ -184,13 +186,14 @@ public class Furnace {
|
||||
if (!block.getType().name().contains("FURNACE") && !block.getType().name().contains("SMOKER")) return;
|
||||
|
||||
Bukkit.getServer().getScheduler().scheduleSyncDelayedTask(plugin, () -> {
|
||||
int num = getPerformanceTotal();
|
||||
int num = getPerformanceTotal(block.getType());
|
||||
|
||||
if (num > 200)
|
||||
num = 200;
|
||||
int max = (block.getType().name().contains("BLAST") || block.getType().name().contains("SMOKER") ? 100 : 200);
|
||||
if (num >= max)
|
||||
num = max - 1;
|
||||
|
||||
if (num != 0) {
|
||||
BlockState bs = (block.getState()); // max is 200
|
||||
BlockState bs = (block.getState());
|
||||
((org.bukkit.block.Furnace) bs).setCookTime(Short.parseShort(Integer.toString(num)));
|
||||
bs.update();
|
||||
}
|
||||
@ -218,13 +221,14 @@ public class Furnace {
|
||||
}
|
||||
|
||||
|
||||
public int getPerformanceTotal() {
|
||||
String equation = "(" + level.getPerformance() + " / 100) * 200";
|
||||
public int getPerformanceTotal(Material material) {
|
||||
String cap = (material.name().contains("BLAST") || material.name().contains("SMOKER") ? "100" : "200");
|
||||
String equation = "(" + level.getPerformance() + " / 100) * " + cap;
|
||||
try {
|
||||
if (!cache.containsKey(equation)) {
|
||||
ScriptEngineManager mgr = new ScriptEngineManager();
|
||||
ScriptEngine engine = mgr.getEngineByName("JavaScript");
|
||||
int num = (int) Math.round(Double.parseDouble(engine.eval("(" + level.getPerformance() + " / 100) * 200").toString()));
|
||||
int num = (int) Math.round(Double.parseDouble(engine.eval("(" + level.getPerformance() + " / 100) * " + cap).toString()));
|
||||
cache.put(equation, num);
|
||||
return num;
|
||||
} else {
|
||||
|
@ -11,7 +11,7 @@ import java.util.stream.Collectors;
|
||||
|
||||
public class Settings {
|
||||
|
||||
static final Config config = EpicFurnaces.getInstance().getConfig().getCoreConfig();
|
||||
static final Config config = EpicFurnaces.getInstance().getCoreConfig();
|
||||
|
||||
public static final ConfigSetting UPGRADE_BY_SMELTING = new ConfigSetting(config, "Main.Upgrade By Smelting Materials", true);
|
||||
|
||||
|
@ -1,6 +1,5 @@
|
||||
package com.songoda.epicfurnaces.storage.types;
|
||||
|
||||
import com.songoda.core.configuration.Config;
|
||||
import com.songoda.epicfurnaces.EpicFurnaces;
|
||||
import com.songoda.epicfurnaces.storage.Storage;
|
||||
import com.songoda.epicfurnaces.storage.StorageItem;
|
||||
@ -109,6 +108,7 @@ public class StorageYaml extends Storage {
|
||||
File data = new File(plugin.getDataFolder(), "data.yml");
|
||||
File dataClone = new File(plugin.getDataFolder(), "data-backup-" + System.currentTimeMillis() + ".yml");
|
||||
try {
|
||||
if (data.exists())
|
||||
copyFile(data, dataClone);
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
|
@ -1,55 +1,67 @@
|
||||
# General Messages
|
||||
|
||||
general.nametag.prefix = "&8[&6EpicFurnaces&8]"
|
||||
general.nametag.next = "&9Next"
|
||||
general.nametag.back = "&9Back"
|
||||
general.nametag.nameformat = "&eLevel %level% &fFurnace"
|
||||
general.hologram.outoffuel = "&cNo Fuel"
|
||||
general.hologram.stats = "&a%in%&7/&c%out%"
|
||||
general:
|
||||
nametag:
|
||||
prefix: '&8[&6EpicFurnaces&8]'
|
||||
next: '&9Next'
|
||||
back: '&9Back'
|
||||
nameformat: '&eLevel %level% &fFurnace'
|
||||
hologram:
|
||||
outoffuel: '&cNo Fuel'
|
||||
stats: '&a%in%&7/&c%out%'
|
||||
|
||||
# Interface Messages
|
||||
|
||||
interface.furnace.upgradewithxp = "&aUpgrade with XP"
|
||||
interface.furnace.upgradewithxplore = "&7Cost: &a%cost% Levels"
|
||||
interface.furnace.upgradewitheconomy = "&aUpgrade with ECO"
|
||||
interface.furnace.upgradewitheconomylore = "&7Cost: &a$%cost%"
|
||||
interface.furnace.currentlevel = "&6Furnace Level &7%level%"
|
||||
interface.furnace.level = "&6Next Level &7%level%"
|
||||
interface.furnace.performance = "&7Performance: &6%amount%"
|
||||
interface.furnace.reward = "&7Reward: &6%amount%"
|
||||
interface.furnace.performancetitle = "&a&lPerformance"
|
||||
interface.furnace.rewardtitle = "&c&lReward"
|
||||
interface.furnace.fueldurationtitle = "&7&lFuel Duration"
|
||||
interface.furnace.fuelduration = "&7Fuel Duration: &6%amount%"
|
||||
interface.furnace.fuelshare = "&7Fuel Share: &6%amount%&7."
|
||||
interface.furnace.fuelsharetitle = "&6&lFuel Share"
|
||||
interface.furnace.fuelshareinfo = "&7This furnace will power other|&7furnaces within a &6%amount%&7 block radius."
|
||||
interface.furnace.overheat = "&7Overheat: &6%amount%&7."
|
||||
interface.furnace.overheattitle = "&6&lOverheat"
|
||||
interface.furnace.overheatinfo = "&7This furnace will melt snow |&7and ice within a &6%amount%&7 block radius."
|
||||
interface.furnace.performanceinfo = "&7This furnaces performance is |&7currently boosted an extra &6%amount%%&7. | |&7Performance boosts the speed in |&7which a furnace processes |&7materials."
|
||||
interface.furnace.rewardinfo = "&7This furnace currently |&7has a &6%amount%%&7 chance of |&7producing multiple resources."
|
||||
interface.furnace.fueldurationinfo = "&7This furnaces fuel duration is |&7currently boosted by &6%amount%%&7. | |&7Fuel Duration boosts how long |&7fuel in the furnace lasts."
|
||||
interface.furnace.smeltedx = "&7Smelted &6%amount% Materials&7."
|
||||
interface.furnace.tolevel = "&6%amount% %type%s &7away from leveling up."
|
||||
interface.furnace.remotefurnace = "&5&lRemote Control"
|
||||
interface.furnace.remotefurnacelore = "&7Left-Click to assign a nickname.|&7Right-Click to give yourself |&7remote access.|&7Current nickname is: &6%nickname%&7."
|
||||
interface.furnace.utilize = "|&7To utilize remote access|&7use the command:|&6/EF Remote %nickname%"
|
||||
interface.furnace.remotelist = "&7Players with remote access:"
|
||||
interface.furnace.alreadymaxed = "&7This furnace is already maxed out!"
|
||||
interface.button.boostedstats = "&a&lCurrently boosted!|&7Reward multiplied by &6%amount%x&7.|&7Expires in &6%time%&7."
|
||||
interface:
|
||||
furnace:
|
||||
upgradewithxp: '&aUpgrade with XP'
|
||||
upgradewithxplore: '&7Cost: &a%cost% Levels'
|
||||
upgradewitheconomy: '&aUpgrade with ECO'
|
||||
upgradewitheconomylore: '&7Cost: &a$%cost%'
|
||||
currentlevel: '&6Furnace Level &7%level%'
|
||||
level: '&6Next Level &7%level%'
|
||||
performance: '&7Performance: &6%amount%'
|
||||
reward: '&7Reward: &6%amount%'
|
||||
performancetitle: '&a&lPerformance'
|
||||
rewardtitle: '&c&lReward'
|
||||
fueldurationtitle: '&7&lFuel Duration'
|
||||
fuelduration: '&7Fuel Duration: &6%amount%'
|
||||
fuelshare: '&7Fuel Share: &6%amount%&7.'
|
||||
fuelsharetitle: '&6&lFuel Share'
|
||||
fuelshareinfo: '&7This furnace will power other|&7furnaces within a &6%amount%&7 block radius.'
|
||||
overheat: '&7Overheat: &6%amount%&7.'
|
||||
overheattitle: '&6&lOverheat'
|
||||
overheatinfo: '&7This furnace will melt snow |&7and ice within a &6%amount%&7 block radius.'
|
||||
performanceinfo: '&7This furnaces performance is |&7currently boosted an extra &6%amount%%&7. | |&7Performance boosts the speed in |&7which a furnace processes |&7materials.'
|
||||
rewardinfo: '&7This furnace currently |&7has a &6%amount%%&7 chance of |&7producing multiple resources.'
|
||||
fueldurationinfo: '&7This furnaces fuel duration is |&7currently boosted by &6%amount%%&7. | |&7Fuel Duration boosts how long |&7fuel in the furnace lasts.'
|
||||
smeltedx: '&7Smelted &6%amount% Materials&7.'
|
||||
tolevel: '&6%amount% %type%s &7away from leveling up.'
|
||||
remotefurnace: '&5&lRemote Control'
|
||||
remotefurnacelore: '&7Left-Click to assign a nickname.|&7Right-Click to give yourself |&7remote access.|&7Current nickname is: &6%nickname%&7.'
|
||||
utilize: '|&7To utilize remote access|&7use the command:|&6/EF Remote %nickname%'
|
||||
remotelist: '&7Players with remote access:'
|
||||
alreadymaxed: '&7This furnace is already maxed out!'
|
||||
button:
|
||||
boostedstats: '&a&lCurrently boosted!|&7Reward multiplied by &6%amount%x&7.|&7Expires in &6%time%&7.'
|
||||
|
||||
# Command Messages
|
||||
|
||||
command.give.success = "&7You have been given a &6level %level% &7Furnace."
|
||||
command:
|
||||
give:
|
||||
success: '&7You have been given a &6level %level% &7Furnace.'
|
||||
|
||||
# Event Messages
|
||||
|
||||
event.general.nopermission = "&cYou do not have permission to do that."
|
||||
event.upgrade.cannotafford = "&cYou cannot afford this upgrade."
|
||||
event.upgrade.success = "&7You successfully upgraded this furnace to &6level %level%&7!"
|
||||
event.upgrade.maxed = "&7You maxed out this furnace at &6level %level%&7."
|
||||
event.remote.enter = "&7Enter a unique nickname for the furnace."
|
||||
event.remote.notfound = "&cRemote furnace not found."
|
||||
event.remote.nicknamesuccess = "&aNickname set successfully."
|
||||
event.remote.nicknameinuse = "&cThat nickname is already in use."
|
||||
event:
|
||||
general:
|
||||
nopermission: '&cYou do not have permission to do that.'
|
||||
upgrade:
|
||||
cannotafford: '&cYou cannot afford this upgrade.'
|
||||
success: '&7You successfully upgraded this furnace to &6level %level%&7!'
|
||||
maxed: '&7You maxed out this furnace at &6level %level%&7.'
|
||||
remote:
|
||||
enter: '&7Enter a unique nickname for the furnace.'
|
||||
notfound: '&cRemote furnace not found.'
|
||||
nicknamesuccess: '&aNickname set successfully.'
|
||||
nicknameinuse: '&cThat nickname is already in use.'
|
||||
|
Loading…
Reference in New Issue
Block a user