Fixed a bunch of bugs, ready for deployment.

This commit is contained in:
GB6 2019-01-15 13:02:28 +01:00
parent 97b242f825
commit 98e53ce5f4
21 changed files with 274 additions and 179 deletions

View File

@ -161,10 +161,25 @@
<scope>compile</scope>
</dependency>
<dependency>
<groupId>com.songoda</groupId>
<artifactId>worldguard6</artifactId>
<version>4.0.19</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>com.songoda</groupId>
<artifactId>craftbukkit-1-8</artifactId>
<version>4.0.19</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>com.songoda</groupId>
<artifactId>craftbukkit-1-13</artifactId>
<version>4.0.19</version>
<scope>compile</scope>
</dependency>
</dependencies>
</project>

View File

@ -3,6 +3,7 @@ package com.songoda.epicfurnaces;
import com.gb6.songoda.epicfurnaces.hooks.PlotSquaredHook;
import com.songoda.epicfurnaces.command.CommandManager;
import com.songoda.epicfurnaces.handlers.BlacklistHandler;
import com.songoda.epicfurnaces.hook.CraftBukkitHook;
import com.songoda.epicfurnaces.hooks.*;
import com.songoda.epicfurnaces.listeners.*;
import com.songoda.epicfurnaces.managers.*;
@ -26,7 +27,6 @@ import org.bukkit.configuration.file.YamlConfiguration;
import org.bukkit.inventory.FurnaceRecipe;
import org.bukkit.inventory.ItemStack;
import org.bukkit.plugin.PluginManager;
import org.bukkit.plugin.RegisteredServiceProvider;
import org.bukkit.plugin.java.JavaPlugin;
import org.json.simple.JSONArray;
import org.json.simple.JSONObject;
@ -35,15 +35,11 @@ import org.json.simple.parser.JSONParser;
import java.io.*;
import java.net.URL;
import java.net.URLConnection;
import java.nio.charset.Charset;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import static com.songoda.epicfurnaces.utils.StringUtils.formatText;
import static java.util.Arrays.asList;
public class EpicFurnaces extends JavaPlugin {
@ -59,19 +55,21 @@ public class EpicFurnaces extends JavaPlugin {
private Storage storage;
private HologramManager hologramManager;
private Economy economy;
private CraftBukkitHook craftBukkitHook;
private int currentVersion;
@Override
public void onEnable() {
Bukkit.getConsoleSender().sendMessage(StringUtils.formatText("&a============================="));
Bukkit.getConsoleSender().sendMessage(StringUtils.formatText("&7EpicFurnaces " + this.getDescription().getVersion() + " by &5Songoda <3&7!"));
Bukkit.getConsoleSender().sendMessage(formatText("&a============================="));
Bukkit.getConsoleSender().sendMessage(formatText("&7EpicFurnaces " + this.getDescription().getVersion() + " by &5Songoda <3&7!"));
Bukkit.getConsoleSender().sendMessage(formatText("&aAction: &3Enabling&7..."));
if (!checkVersion()) {
getPluginLoader().disablePlugin(this);
return;
}
for (String name : asList("config", "data", "hooks", "Furnace Recipes", "blacklist")) {
for (String name : asList("config", "data", "hooks", "blacklist", "Furnace Recipes")) {
File file = new File(getDataFolder(), name + ".yml");
if (!file.exists()) {
file.getParentFile().mkdirs();
@ -107,8 +105,8 @@ public class EpicFurnaces extends JavaPlugin {
this.hologramManager = new HologramManager(this);
this.levelManager = new LevelManager(this);
this.hookManager = new HookManager(this);
this.economy = getServer().getServicesManager().getRegistration(Economy.class).getProvider();
setupEconomy();
checkStorage();
levelManager.loadLevelManager();
setupRecipes();
@ -147,11 +145,15 @@ public class EpicFurnaces extends JavaPlugin {
}
}
Bukkit.getConsoleSender().sendMessage(StringUtils.formatText("&a============================="));
Bukkit.getConsoleSender().sendMessage(formatText("&a============================="));
}
@Override
public void onDisable() {
Bukkit.getConsoleSender().sendMessage(formatText("&a============================="));
Bukkit.getConsoleSender().sendMessage(formatText("&7EpicFurnaces " + this.getDescription().getVersion() + " by &5Songoda <3&7!"));
Bukkit.getConsoleSender().sendMessage(formatText("&7Action: &cDisabling&7..."));
Bukkit.getConsoleSender().sendMessage(formatText("&a============================="));
hologramManager.clearAll();
saveToFile();
}
@ -218,18 +220,16 @@ public class EpicFurnaces extends JavaPlugin {
ConfigurationSection cs = getConfiguration("Furnace Recipes").getConfigurationSection("Recipes");
for (String key : cs.getKeys(false)) {
Material item;
try {
item = Material.valueOf(key.toUpperCase());
} catch (IllegalArgumentException e) {
Material item = Material.matchMaterial(key.toUpperCase());
if (item == null) {
getLogger().info("Invalid material from recipes files: " + key.toUpperCase());
continue;
}
Material result;
try {
result = Material.valueOf(cs.getString(key.toUpperCase() + ".result"));
} catch (IllegalArgumentException e) {
Material result = Material.matchMaterial(cs.getString(key.toUpperCase() + ".result"));
if (result == null) {
getLogger().info("Invalid material from recipes files: " + cs.getString(key.toUpperCase() + ".result"));
continue;
}
@ -249,18 +249,10 @@ public class EpicFurnaces extends JavaPlugin {
}
}
private boolean setupEconomy() {
RegisteredServiceProvider<Economy> economyProvider = getServer().getServicesManager().getRegistration(Economy.class);
if (economyProvider != null) {
economy = economyProvider.getProvider();
}
return (economy != null);
}
private boolean checkVersion() {
String version = getServer().getClass().getPackage().getName().split("\\.")[3];
currentVersion = Integer.parseInt(version.split("_")[1]);
craftBukkitHook = currentVersion >= 13 ? new CraftBukkitHook113() : new CraftBukkitHook18();
int workingVersion = 8;
if (currentVersion < workingVersion) {
@ -274,28 +266,6 @@ public class EpicFurnaces extends JavaPlugin {
return false;
}
File config = new File(getDataFolder(), "Furnace Recipes.yml");
if (!config.exists()) {
saveResource("Furnace Recipes.yml", false);
}
if (currentVersion < 13) {
getLogger().info("Converting recipes to fit server version...");
Charset charset = StandardCharsets.UTF_8;
Path path = Paths.get(config.getAbsolutePath());
try {
String content = new String(Files.readAllBytes(path), charset);
content = content.replaceAll("GOLDEN", "GOLD")
.replaceAll("SHOVEL", "SPADE")
.replaceAll("WOODEN", "WOOD")
.replaceAll("CLOCK", "WATCH");
Files.write(path, content.getBytes(charset));
} catch (IOException e) {
e.printStackTrace();
}
}
return true;
}
@ -327,10 +297,6 @@ public class EpicFurnaces extends JavaPlugin {
return locale;
}
public int getCurrentVersion() {
return currentVersion;
}
public BukkitEnums getBukkitEnums() {
return bukkitEnums;
}
@ -350,4 +316,8 @@ public class EpicFurnaces extends JavaPlugin {
public Economy getEconomy() {
return economy;
}
public CraftBukkitHook getCraftBukkitHook() {
return craftBukkitHook;
}
}

View File

@ -12,6 +12,8 @@ import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import static com.songoda.epicfurnaces.command.AbstractCommand.ReturnType.SYNTAX_ERROR;
public class CommandManager implements CommandExecutor {
private EpicFurnaces instance;
@ -63,7 +65,7 @@ public class CommandManager implements CommandExecutor {
}
if (command.getPermissionNode() == null || sender.hasPermission(command.getPermissionNode())) {
AbstractCommand.ReturnType returnType = command.runCommand(sender, strings);
if (returnType == AbstractCommand.ReturnType.SYNTAX_ERROR) {
if (returnType == SYNTAX_ERROR) {
sender.sendMessage(instance.getLocale().getPrefix() + StringUtils.formatText("&cInvalid Syntax!"));
sender.sendMessage(instance.getLocale().getPrefix() + StringUtils.formatText("&7The valid syntax is: &6" + command.getSyntax() + "&7."));
}

View File

@ -3,7 +3,6 @@ package com.songoda.epicfurnaces.command.commands;
import com.songoda.epicfurnaces.EpicFurnaces;
import com.songoda.epicfurnaces.command.AbstractCommand;
import com.songoda.epicfurnaces.objects.FurnaceObject;
import org.bukkit.block.Block;
import org.bukkit.block.Furnace;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
@ -26,9 +25,9 @@ public class CommandRemote extends AbstractCommand {
return ReturnType.FAILURE;
}
if (!instance.getConfiguration("data").contains("data.charged")) {
/*if (!instance.getConfiguration("data").contains("data.charged")) {
return ReturnType.FAILURE;
}
}*/
if (args.length < 2) {
return ReturnType.SYNTAX_ERROR;
@ -37,7 +36,9 @@ public class CommandRemote extends AbstractCommand {
String furnaceName = String.join(" ", Arrays.copyOfRange(args, 1, args.length));
for (FurnaceObject furnace : instance.getFurnaceManager().getFurnaces().values()) {
if (furnace.getNickname() == null) continue;
if (furnace.getNickname() == null) {
continue;
}
if (!furnace.getNickname().equalsIgnoreCase(furnaceName)) {
continue;
@ -47,8 +48,8 @@ public class CommandRemote extends AbstractCommand {
if (!uuid.equals(((Player) sender).getUniqueId())) {
continue;
}
Block b = furnace.getLocation().getBlock();
Furnace furnaceBlock = (Furnace) b.getState();
Furnace furnaceBlock = (Furnace) furnace.getLocation().getBlock().getState();
((Player) sender).openInventory(furnaceBlock.getInventory());
return ReturnType.SUCCESS;
}

View File

@ -4,7 +4,6 @@ import com.songoda.epicfurnaces.EpicFurnaces;
import com.songoda.epicfurnaces.objects.FurnaceObject;
import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.block.Block;
import org.bukkit.block.Furnace;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
@ -12,9 +11,15 @@ import org.bukkit.event.Listener;
import org.bukkit.event.block.BlockBreakEvent;
import org.bukkit.event.block.BlockFormEvent;
import org.bukkit.event.block.BlockPlaceEvent;
import org.bukkit.event.entity.EntityExplodeEvent;
import org.bukkit.inventory.ItemStack;
import java.util.ArrayList;
import java.util.Optional;
import java.util.Set;
import java.util.stream.Collectors;
import static com.songoda.epicfurnaces.objects.FurnaceObject.BoostType.OVERHEAT;
/**
* Created by songoda on 2/26/2017.
@ -27,18 +32,18 @@ public class BlockListeners implements Listener {
this.instance = instance;
}
@EventHandler
@EventHandler(ignoreCancelled = true, priority = EventPriority.HIGHEST)
public void onSnowLand(BlockFormEvent event) {
if (event.getNewState().getType() != Material.SNOW && event.getNewState().getType() != Material.ICE) {
return;
}
for (FurnaceObject furnace : instance.getFurnaceManager().getFurnaces().values()) {
if (furnace.getRadius(false) == null || ((Furnace) furnace.getLocation().getBlock().getState()).getBurnTime() == 0) {
if (furnace.getRadius(OVERHEAT) == null || ((Furnace) furnace.getLocation().getBlock().getState()).getBurnTime() == 0) {
continue;
}
for (Location location : furnace.getRadius(false)) {
for (Location location : furnace.getRadius(OVERHEAT)) {
if (location.getX() != event.getNewState().getX() || location.getY() != event.getNewState().getY() || location.getZ() != event.getNewState().getZ()) {
continue;
}
@ -50,7 +55,7 @@ public class BlockListeners implements Listener {
}
@EventHandler
@EventHandler(ignoreCancelled = true, priority = EventPriority.HIGHEST)
public void onBlockPlace(BlockPlaceEvent event) {
if (event.getBlock().getType() != Material.FURNACE) {
return;
@ -79,13 +84,7 @@ public class BlockListeners implements Listener {
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
public void onBlockBreak(BlockBreakEvent event) {
if (!event.getPlayer().hasPermission("EpicFurnaces.overview") && !event.getPlayer().hasPermission("epicfurnaces.*")) {
return;
}
Block block = event.getBlock();
if (block.getType() != Material.FURNACE && block.getType() != instance.getBukkitEnums().getMaterial("BURNING_FURNACE").getType()) {
if (!event.getPlayer().hasPermission("epicfurnaces.overview") && !event.getPlayer().hasPermission("epicfurnaces.*")) {
return;
}
@ -93,18 +92,29 @@ public class BlockListeners implements Listener {
return;
}
FurnaceObject furnace = instance.getFurnaceManager().getFurnace(block.getLocation()).orElseGet(() -> instance.getFurnaceManager().createFurnace(block.getLocation()));
int level = furnace.getLevel().getLevel();
if (level != 0) {
event.setCancelled(true);
ItemStack item = instance.getFurnaceManager().createLeveledFurnace(level, furnace.getUses(), instance);
event.getBlock().setType(Material.AIR);
event.getBlock().getLocation().getWorld().dropItemNaturally(event.getBlock().getLocation(), item);
if (event.getBlock().getType() != Material.FURNACE && event.getBlock().getType() != instance.getBukkitEnums().getMaterial("BURNING_FURNACE").getType()) {
return;
}
instance.getFurnaceManager().removeFurnace(block.getLocation());
instance.getFurnaceManager().getFurnace(event.getBlock().getLocation()).ifPresent(this::handleBreak);
}
@EventHandler(ignoreCancelled = true, priority = EventPriority.HIGHEST)
public void onBlockExplode(EntityExplodeEvent event) {
Set<FurnaceObject> furnaces = event.blockList().parallelStream()
.map(block -> instance.getFurnaceManager().getFurnace(block.getLocation()))
.filter(Optional::isPresent)
.map(Optional::get)
.collect(Collectors.toSet());
furnaces.forEach(this::handleBreak);
}
private void handleBreak(FurnaceObject furnaceObject) {
ItemStack item = instance.getFurnaceManager().createLeveledFurnace(furnaceObject.getLevel().getLevel(), furnaceObject.getUses(), instance);
furnaceObject.getLocation().getBlock().setType(Material.AIR);
furnaceObject.getLocation().getWorld().dropItemNaturally(furnaceObject.getLocation().getBlock().getLocation(), item);
instance.getFurnaceManager().removeFurnace(furnaceObject);
}
}

View File

@ -3,7 +3,6 @@ package com.songoda.epicfurnaces.listeners;
import com.songoda.epicfurnaces.EpicFurnaces;
import com.songoda.epicfurnaces.objects.FurnaceObject;
import com.songoda.epicfurnaces.objects.Level;
import org.bukkit.block.Block;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.inventory.FurnaceBurnEvent;
@ -24,8 +23,6 @@ public class FurnaceListeners implements Listener {
@EventHandler
public void onCook(FurnaceSmeltEvent event) {
Block b = event.getBlock();
if ((event.getBlock().isBlockPowered() && instance.getConfig().getBoolean("Main.Redstone Deactivates Furnaces")) || event.getResult() == null) {
event.setCancelled(true);
return;

View File

@ -35,6 +35,10 @@ public class FurnaceManager {
return addFurnace(location, new FurnaceObject(instance, location, instance.getLevelManager().getLowestLevel(), null, 0, 0, new ArrayList<>(), null));
}
public void removeFurnace(FurnaceObject furnaceObject) {
removeFurnace(furnaceObject.getLocation());
}
public void removeFurnace(Location location) {
instance.getHologramManager().remove(registeredFurnaces.remove(location));
}

View File

@ -81,7 +81,7 @@ public class OverviewMenu extends FastInv {
ItemBuilder fuelShare = new ItemBuilder(instance.getBukkitEnums().getMaterial(instance.getConfig().getString("Interfaces.FuelShare Icon")));
fuelShare.name(instance.getLocale().getMessage("interface.furnace.fuelsharetitle"));
parts = instance.getLocale().getMessage("interface.furnace.fuelshareinfo", furnace.getLevel().getOverheat() * 3).split("\\|");
parts = instance.getLocale().getMessage("interface.furnace.fuelshareinfo", furnace.getLevel().getFuelShare() * 3).split("\\|");
fuelShare.lore(Arrays.stream(parts).map(StringUtils::formatText).collect(Collectors.toList()));
ItemBuilder xp = new ItemBuilder(instance.getBukkitEnums().getMaterial(instance.getConfig().getString("Interfaces.XP Icon")));

View File

@ -17,6 +17,8 @@ import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.util.*;
import static com.songoda.epicfurnaces.objects.FurnaceObject.BoostType.*;
/**
* Created by songoda on 3/7/2017.
*/
@ -31,7 +33,6 @@ public class FurnaceObject {
private List<Location> radiusOverheat = new ArrayList<>();
private List<Location> radiusFuelShare = new ArrayList<>();
private List<String> accessList;
private Map<String, Integer> cache = new HashMap<>();
public FurnaceObject(EpicFurnaces instance, Location location, Level level, String nickname, int uses, int toLevel, List<String> accessList, UUID placedBy) {
this.instance = instance;
@ -157,11 +158,10 @@ public class FurnaceObject {
}
Location loc = location.clone().add(.5, .5, .5);
player.getWorld().playEffect(loc, instance.getBukkitEnums().getParticle(instance.getConfig().getString("Main.Upgrade Particle Type")), 200);
instance.getCraftBukkitHook().broadcastParticle(loc, instance.getConfig().getString("Main.Upgrade Particle Type"), 200);
if (instance.getConfig().getBoolean("Main.Use Sounds")) {
if (instance.getConfig().getBoolean("Main.Sounds Enabled")) {
if (instance.getLevelManager().getHighestLevel() == level) {
//TODO: Sound
player.playSound(player.getLocation(), instance.getBukkitEnums().getSound("ENTITY_PLAYER_LEVELUP"), 0.6F, 15.0F);
} else {
player.playSound(player.getLocation(), instance.getBukkitEnums().getSound("ENTITY_PLAYER_LEVELUP"), 2F, 25.0F);
@ -228,46 +228,50 @@ public class FurnaceObject {
}
public List<Location> getRadius(boolean overHeat) {
if (overHeat) {
public List<Location> getRadius(BoostType boostType) {
if (boostType == OVERHEAT) {
return radiusOverheat.isEmpty() ? null : Collections.unmodifiableList(radiusOverheat);
} else {
} else if (boostType == FUEL_SHARE) {
return radiusFuelShare.isEmpty() ? null : Collections.unmodifiableList(radiusFuelShare);
}
return null;
}
public void addToRadius(Location location, boolean overHeat) {
if (overHeat) {
public void addToRadius(Location location, BoostType boostType) {
if (boostType == OVERHEAT) {
radiusOverheat.add(location);
} else {
} else if (boostType == FUEL_SHARE) {
radiusFuelShare.add(location);
}
}
public void clearRadius(boolean overHeat) {
if (overHeat) {
public void clearRadius(BoostType boostType) {
if (boostType == OVERHEAT) {
radiusOverheat.clear();
} else {
} else if (boostType == FUEL_SHARE) {
radiusFuelShare.clear();
}
}
public int getRadiusLast(boolean overHeat) {
if (overHeat) {
public int getRadiusLast(BoostType boostType) {
if (boostType == OVERHEAT) {
return radiusOverheatLast;
} else {
} else if (boostType == FUEL_SHARE) {
return radiusFuelShareLast;
}
return 0;
}
public void setRadiusLast(int radiusLast, boolean overHeat) {
if (overHeat) {
public void setRadiusLast(int radiusLast, BoostType boostType) {
if (boostType == OVERHEAT) {
this.radiusOverheatLast = radiusLast;
} else {
} else if (boostType == FUEL_SHARE) {
this.radiusFuelShareLast = radiusLast;
}
}
@ -327,4 +331,8 @@ public class FurnaceObject {
public int getUses() {
return uses;
}
public enum BoostType {
OVERHEAT, FUEL_SHARE
}
}

View File

@ -7,13 +7,11 @@ import java.util.List;
public class Level {
private final EpicFurnaces instance;
private List<String> description = new ArrayList<>();
private int level, costExperience, costEconomy, performance, fuelDuration, overheat, fuelShare;
private String reward;
private List<String> description = new ArrayList<>();
public Level(EpicFurnaces instance, int level, int costExperience, int costEconomy, int performance, String reward, int fuelDuration, int overheat, int fuelShare) {
this.instance = instance;
this.level = level;
this.costExperience = costExperience;
this.costEconomy = costEconomy;

View File

@ -63,11 +63,14 @@ public class StorageYaml extends Storage {
@Override
public void doSave() {
if (toSave.isEmpty()) {
return;
}
try {
dataFile.set("data", null); // Clear file
File data = new File(instance.getDataFolder() + "/data.yml");
File dataClone = new File(instance.getDataFolder() + "/data-backup-" + System.currentTimeMillis() + ".yml");
File dataClone = new File(instance.getDataFolder() + "/backup/data-backup-" + System.currentTimeMillis() + ".yml");
try {
FileUtils.copyFile(data, dataClone);
} catch (IOException e) {

View File

@ -2,6 +2,7 @@ package com.songoda.epicfurnaces.tasks;
import com.songoda.epicfurnaces.EpicFurnaces;
import com.songoda.epicfurnaces.objects.FurnaceObject;
import com.songoda.epicfurnaces.objects.FurnaceObject.BoostType;
import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.block.Block;
@ -9,9 +10,10 @@ import org.bukkit.block.BlockFace;
import org.bukkit.block.Furnace;
import org.bukkit.scheduler.BukkitRunnable;
import java.util.Optional;
import java.util.concurrent.ThreadLocalRandom;
import static com.songoda.epicfurnaces.objects.FurnaceObject.BoostType.*;
public class FurnaceTask extends BukkitRunnable {
private static FurnaceTask plugin;
@ -69,12 +71,12 @@ public class FurnaceTask extends BukkitRunnable {
}
private void overheat(FurnaceObject furnace) {
if (furnace.getRadius(true) == null || furnace.getRadiusLast(true) != furnace.getLevel().getOverheat()) {
furnace.setRadiusLast(furnace.getLevel().getOverheat(), true);
cache(furnace, true);
if (furnace.getRadius(OVERHEAT) == null || furnace.getRadiusLast(OVERHEAT) != furnace.getLevel().getOverheat()) {
furnace.setRadiusLast(furnace.getLevel().getOverheat(), OVERHEAT);
cache(furnace, OVERHEAT);
}
for (Location location : furnace.getRadius(true)) {
for (Location location : furnace.getRadius(OVERHEAT)) {
int random = ThreadLocalRandom.current().nextInt(0, 10);
if (random != 1) {
@ -101,12 +103,12 @@ public class FurnaceTask extends BukkitRunnable {
}
private void fuelShare(FurnaceObject furnace) {
if (furnace.getRadius(false) == null || furnace.getRadiusLast(false) != furnace.getLevel().getOverheat()) {
furnace.setRadiusLast(furnace.getLevel().getOverheat(), false);
cache(furnace, false);
if (furnace.getRadius(FUEL_SHARE) == null || furnace.getRadiusLast(FUEL_SHARE) != furnace.getLevel().getFuelShare()) {
furnace.setRadiusLast(furnace.getLevel().getFuelShare(), FUEL_SHARE);
cache(furnace, FUEL_SHARE);
}
for (Location location : furnace.getRadius(false)) {
for (Location location : furnace.getRadius(FUEL_SHARE)) {
int random = ThreadLocalRandom.current().nextInt(0, 10);
if (random != 1) {
@ -119,24 +121,25 @@ public class FurnaceTask extends BukkitRunnable {
continue;
}
Optional<FurnaceObject> other = instance.getFurnaceManager().getFurnace(block.getLocation());
FurnaceObject other = instance.getFurnaceManager().getFurnace(block.getLocation()).orElseGet(() -> instance.getFurnaceManager().createFurnace(block.getLocation()));
if (furnace.equals(other)) {
continue;
}
if (other.isPresent() && furnace.equals(other.get())) {
Furnace furnaceBlock = ((Furnace) block.getState());
if (furnaceBlock.getBurnTime() == 0) {
furnaceBlock.setBurnTime((short) 100);
furnaceBlock.setBurnTime((short) 200);
furnaceBlock.update();
broadcastParticles(location);
}
}
}
}
private void cache(FurnaceObject furnace, boolean overheat) {
private void cache(FurnaceObject furnace, BoostType boostType) {
Block block = furnace.getLocation().getBlock();
int radius = 3 * (overheat ? furnace.getLevel().getOverheat() : furnace.getLevel().getFuelShare());
int radius = 3 * (boostType == OVERHEAT ? furnace.getLevel().getOverheat() : furnace.getLevel().getFuelShare());
int rSquared = radius * radius;
int bx = block.getX();
int by = block.getY();
@ -147,7 +150,7 @@ public class FurnaceTask extends BukkitRunnable {
for (int fz = -radius; fz <= radius; fz++) {
if ((fx * fx) + (fz * fz) <= rSquared) {
Location location = new Location(block.getWorld(), bx + fx, by + fy, bz + fz);
furnace.addToRadius(location, overheat);
furnace.addToRadius(location, boostType);
}
}
}
@ -155,11 +158,8 @@ public class FurnaceTask extends BukkitRunnable {
}
private void broadcastParticles(Location location) {
float px = (float) (0 + (Math.random() * 1));
float pz = (float) (0 + (Math.random() * 1));
if (instance.getConfig().getBoolean("Main.Overheat Particles")) {
location.getWorld().playEffect(location, instance.getBukkitEnums().getParticle("SMOKE_NORMAL"), 25);
instance.getCraftBukkitHook().broadcastParticle(location, "SMOKE", 25, "SMOKE_NORMAL");
}
}
}

View File

@ -1,7 +1,6 @@
package com.songoda.epicfurnaces.utils;
import com.songoda.epicfurnaces.EpicFurnaces;
import org.bukkit.Effect;
import org.bukkit.Material;
import org.bukkit.Sound;
import org.bukkit.inventory.ItemStack;
@ -18,12 +17,6 @@ public class BukkitEnums {
put("NAN", "NAN");
}};
private final Map<String, String> particleMap = new HashMap<String, String>() {{
put("SMOKE", "SMOKE_NORMAL");
put("SPELL_WITCH", "MOBSPAWNER_FLAMES");
put("NAN", "NAN");
}};
public BukkitEnums(EpicFurnaces instance) {
this.instance = instance;
}
@ -40,18 +33,6 @@ public class BukkitEnums {
return null;
}
public Effect getParticle(String name) {
if (Arrays.stream(Effect.values()).anyMatch(s -> s.toString().equalsIgnoreCase(name))) {
return Effect.valueOf(name.toUpperCase());
}
if (Arrays.stream(Effect.values()).anyMatch(s -> s.toString().equalsIgnoreCase(particleMap.getOrDefault(name, "NAN")))) {
return Effect.valueOf(particleMap.get(name.toUpperCase()));
}
return null;
}
public ItemStack getMaterial(String string) {
Material material = Material.matchMaterial(string);

View File

@ -1,4 +1,3 @@
# TurboCharged objects Recipe file
Recipes:
DIAMOND_SWORD:
result: DIAMOND
@ -9,7 +8,7 @@ Recipes:
DIAMOND_AXE:
result: DIAMOND
amount: 3
DIAMOND_SHOVEL:
DIAMOND_SPADE:
result: DIAMOND
amount: 1
DIAMOND_HOE:
@ -36,7 +35,7 @@ Recipes:
IRON_AXE:
result: IRON_INGOT
amount: 3
IRON_SHOVEL:
IRON_SPADE:
result: IRON_INGOT
amount: 1
IRON_HOE:
@ -54,31 +53,31 @@ Recipes:
IRON_BOOTS:
result: IRON_INGOT
amount: 4
GOLDEN_SWORD:
GOLD_SWORD:
result: GOLD_INGOT
amount: 2
GOLDEN_PICKAXE:
GOLD_PICKAXE:
result: GOLD_INGOT
amount: 3
GOLDEN_AXE:
GOLD_AXE:
result: GOLD_INGOT
amount: 3
GOLDEN_SHOVEL:
GOLD_SPADE:
result: GOLD_INGOT
amount: 1
GOLDEN_HOE:
GOLD_HOE:
result: GOLD_INGOT
amount: 2
GOLDEN_HELMET:
GOLD_HELMET:
result: GOLD_INGOT
amount: 5
GOLDEN_CHESTPLATE:
GOLD_CHESTPLATE:
result: GOLD_INGOT
amount: 8
GOLDEN_LEGGINGS:
GOLD_LEGGINGS:
result: GOLD_INGOT
amount: 7
GOLDEN_BOOTS:
GOLD_BOOTS:
result: GOLD_INGOT
amount: 4
CHAINMAIL_HELMET:
@ -114,25 +113,25 @@ Recipes:
STONE_AXE:
result: COBBLESTONE
amount: 3
STONE_SHOVEL:
STONE_SPADE:
result: COBBLESTONE
amount: 1
STONE_HOE:
result: COBBLESTONE
amount: 2
WOODEN_SWORD:
WOOD_SWORD:
result: COAL
amount: 2
WOODEN_PICKAXE:
WOOD_PICKAXE:
result: COAL
amount: 3
WOODEN_AXE:
WOOD_AXE:
result: COAL
amount: 3
WOODEN_SHOVEL:
WOOD_SPADE:
result: COAL
amount: 1
WOODEN_HOE:
WOOD_HOE:
result: COAL
amount: 2
BOW:
@ -144,7 +143,7 @@ Recipes:
COMPASS:
result: IRON_INGOT
amount: 4
CLOCK:
WATCH:
result: GOLD_INGOT
amount: 4
SHEARS:

View File

@ -3,7 +3,7 @@ version: ${project.version}
main: com.songoda.epicfurnaces.EpicFurnaces
authors: [Brianna, GB6]
website: https://songoda.com/
depend: [HolographicDisplays]
depend: [HolographicDisplays, Vault]
softdepend: [PlotSquared, GriefPrevention, USkyBlock, SkyBlock, WorldGuard, Factions]
commands:
epicfurnaces:

View File

@ -0,0 +1,29 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://maven.apache.org/POM/4.0.0"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>hooks</artifactId>
<groupId>com.songoda</groupId>
<version>4.0.19</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>craftbukkit-1-13</artifactId>
<dependencies>
<dependency>
<groupId>com.songoda</groupId>
<artifactId>manager</artifactId>
<version>4.0.19</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.spigotmc</groupId>
<artifactId>spigot</artifactId>
<version>1.13.2</version>
<scope>provided</scope>
</dependency>
</dependencies>
</project>

View File

@ -0,0 +1,32 @@
package com.songoda.epicfurnaces.hooks;
import com.songoda.epicfurnaces.hook.CraftBukkitHook;
import org.bukkit.Effect;
import org.bukkit.Location;
import org.bukkit.Particle;
import org.bukkit.craftbukkit.v1_13_R2.CraftWorld;
public class CraftBukkitHook113 implements CraftBukkitHook {
@Override
public void broadcastParticle(Location location, String name, int amount, String... optional) {
if (optional.length != 0) {
try {
((CraftWorld) location.getWorld()).spawnParticle(Particle.valueOf(optional[0]), location.getX(), location.getY(), location.getZ(), amount, 0, 0, 0, 0);
return;
} catch (Exception ignore) {
}
}
try {
location.getWorld().playEffect(location, Effect.valueOf(name), amount);
return;
} catch (Exception ignore) {
}
try {
((CraftWorld) location.getWorld()).spawnParticle(Particle.valueOf(name), location.getX(), location.getY(), location.getZ(), amount, 0, 0, 0, 0);
} catch (Exception ignore) {
}
}
}

View File

@ -0,0 +1,21 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://maven.apache.org/POM/4.0.0"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>hooks</artifactId>
<groupId>com.songoda</groupId>
<version>4.0.19</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>craftbukkit-1-8</artifactId>
<dependencies>
<dependency>
<groupId>com.songoda</groupId>
<artifactId>manager</artifactId>
<version>4.0.19</version>
<scope>compile</scope>
</dependency>
</dependencies>
</project>

View File

@ -0,0 +1,25 @@
package com.songoda.epicfurnaces.hooks;
import com.songoda.epicfurnaces.hook.CraftBukkitHook;
import org.bukkit.Effect;
import org.bukkit.Location;
public class CraftBukkitHook18 implements CraftBukkitHook {
@Override
public void broadcastParticle(Location location, String name, int amount, String... optional) {
if (Effect.getByName(name) == null) {
return;
}
String[] split = name.split("_");
String type;
if (split.length != 1 && Effect.getByName(name.split("_")[0]) != null) {
type = name.split("_")[0];
} else {
type = name;
}
location.getWorld().playEffect(location, Effect.getByName(type), amount);
}
}

View File

@ -4,5 +4,5 @@ package com.songoda.epicfurnaces.hook;
import org.bukkit.Location;
public interface CraftBukkitHook {
void broadcastParticle(Location location, String name, int amount);
void broadcastParticle(Location location, String name, int amount, String... optional);
}

View File

@ -25,7 +25,7 @@
<module>griefprevention</module>
<module>worldguard6</module>
<module>worldguard7</module>
<!--<module>craftbukkit-1-8</module>-->
<!--<module>craftbukkit-1-13</module>-->
<module>craftbukkit-1-8</module>
<module>craftbukkit-1-13</module>
</modules>
</project>