mirror of
https://github.com/Zrips/Jobs.git
synced 2025-01-06 16:27:59 +01:00
Option to limit furnace and brewind stand amount
Option to reset brewing stands and furnaces after server restart
This commit is contained in:
parent
7cebc15fe9
commit
0f8d2c12dd
@ -96,6 +96,7 @@ import com.gamingmesh.jobs.listeners.PistonProtectionListener;
|
|||||||
import com.gamingmesh.jobs.selection.SelectionManager;
|
import com.gamingmesh.jobs.selection.SelectionManager;
|
||||||
import com.gamingmesh.jobs.stuff.ActionBar;
|
import com.gamingmesh.jobs.stuff.ActionBar;
|
||||||
import com.gamingmesh.jobs.stuff.CMIScoreboardManager;
|
import com.gamingmesh.jobs.stuff.CMIScoreboardManager;
|
||||||
|
import com.gamingmesh.jobs.stuff.FurnaceBrewingHandling;
|
||||||
import com.gamingmesh.jobs.stuff.Loging;
|
import com.gamingmesh.jobs.stuff.Loging;
|
||||||
import com.gamingmesh.jobs.stuff.RawMessage;
|
import com.gamingmesh.jobs.stuff.RawMessage;
|
||||||
import com.gamingmesh.jobs.stuff.TabComplete;
|
import com.gamingmesh.jobs.stuff.TabComplete;
|
||||||
@ -526,7 +527,6 @@ public class Jobs extends JavaPlugin {
|
|||||||
* @throws IOException
|
* @throws IOException
|
||||||
*/
|
*/
|
||||||
public void startup() {
|
public void startup() {
|
||||||
instance = this;
|
|
||||||
try {
|
try {
|
||||||
reload();
|
reload();
|
||||||
} catch (IOException e1) {
|
} catch (IOException e1) {
|
||||||
@ -740,6 +740,8 @@ public class Jobs extends JavaPlugin {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onEnable() {
|
public void onEnable() {
|
||||||
|
|
||||||
|
instance = this;
|
||||||
running = true;
|
running = true;
|
||||||
this.setEnabled(true);
|
this.setEnabled(true);
|
||||||
|
|
||||||
@ -780,6 +782,8 @@ public class Jobs extends JavaPlugin {
|
|||||||
YmlMaker jobShopItems = new YmlMaker(this, "shopItems.yml");
|
YmlMaker jobShopItems = new YmlMaker(this, "shopItems.yml");
|
||||||
jobShopItems.saveDefaultConfig();
|
jobShopItems.saveDefaultConfig();
|
||||||
|
|
||||||
|
FurnaceBrewingHandling.load();
|
||||||
|
|
||||||
setPermissionHandler(new PermissionHandler(this));
|
setPermissionHandler(new PermissionHandler(this));
|
||||||
setJobsClassloader();
|
setJobsClassloader();
|
||||||
setPlayerManager();
|
setPlayerManager();
|
||||||
@ -849,6 +853,9 @@ public class Jobs extends JavaPlugin {
|
|||||||
shopManager.CloseInventories();
|
shopManager.CloseInventories();
|
||||||
dao.saveExplore();
|
dao.saveExplore();
|
||||||
dao.saveBlockProtection();
|
dao.saveBlockProtection();
|
||||||
|
|
||||||
|
FurnaceBrewingHandling.save();
|
||||||
|
|
||||||
Jobs.shutdown();
|
Jobs.shutdown();
|
||||||
String message = ChatColor.translateAlternateColorCodes('&', "&e[Jobs] &2Plugin has been disabled succesfully.");
|
String message = ChatColor.translateAlternateColorCodes('&', "&e[Jobs] &2Plugin has been disabled succesfully.");
|
||||||
ConsoleCommandSender console = Bukkit.getServer().getConsoleSender();
|
ConsoleCommandSender console = Bukkit.getServer().getConsoleSender();
|
||||||
|
@ -52,6 +52,8 @@ public class PermissionManager {
|
|||||||
jobs_boost_all_all_AMOUNT(remade("jobs.boost.all.all.%AMOUNT%"), 60 * 1000),
|
jobs_boost_all_all_AMOUNT(remade("jobs.boost.all.all.%AMOUNT%"), 60 * 1000),
|
||||||
jobs_spawner_AMOUNT(remade("jobs.nearspawner.%AMOUNT%"), 60 * 1000),
|
jobs_spawner_AMOUNT(remade("jobs.nearspawner.%AMOUNT%"), 60 * 1000),
|
||||||
jobs_petpay_AMOUNT(remade("jobs.petpay.%AMOUNT%"), 60 * 1000),
|
jobs_petpay_AMOUNT(remade("jobs.petpay.%AMOUNT%"), 60 * 1000),
|
||||||
|
jobs_maxfurnaces_AMOUNT(remade("jobs.maxfurnaces.%AMOUNT%"), 2 * 1000),
|
||||||
|
jobs_maxbrewingstands_AMOUNT(remade("jobs.maxbrewingstands.%AMOUNT%"), 2 * 1000),
|
||||||
// jobs_world_WORLDNAME(remade("jobs.world.%WORLDNAME%"), 60 * 1000)
|
// jobs_world_WORLDNAME(remade("jobs.world.%WORLDNAME%"), 60 * 1000)
|
||||||
;
|
;
|
||||||
|
|
||||||
|
@ -139,6 +139,8 @@ public class LanguageManager {
|
|||||||
c.get("general.error.ingame", "&cYou can use this command only in game!");
|
c.get("general.error.ingame", "&cYou can use this command only in game!");
|
||||||
c.get("general.error.fromconsole", "&cYou can use this command only from console!");
|
c.get("general.error.fromconsole", "&cYou can use this command only from console!");
|
||||||
c.get("general.error.worldisdisabled", "&cYou cant use command in this world!");
|
c.get("general.error.worldisdisabled", "&cYou cant use command in this world!");
|
||||||
|
c.get("general.error.noFurnaceRegistration", "&cYou reached max furnace count!");
|
||||||
|
c.get("general.error.noBrewingRegistration", "&cYou reached max brewing stand count!");
|
||||||
|
|
||||||
c.get("command.help.output.info", "Type /jobs [cmd] ? for more information about a command.");
|
c.get("command.help.output.info", "Type /jobs [cmd] ? for more information about a command.");
|
||||||
c.get("command.help.output.cmdUsage", "&2Usage: &7[command]");
|
c.get("command.help.output.cmdUsage", "&2Usage: &7[command]");
|
||||||
|
@ -76,6 +76,20 @@ public class YmlMaker {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean exists() {
|
||||||
|
return this.ConfigFile.exists();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void createNewFile() {
|
||||||
|
if (!this.ConfigFile.exists()) {
|
||||||
|
try {
|
||||||
|
this.ConfigFile.createNewFile();
|
||||||
|
} catch (IOException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public void saveDefaultConfig() {
|
public void saveDefaultConfig() {
|
||||||
if (!this.ConfigFile.exists()) {
|
if (!this.ConfigFile.exists()) {
|
||||||
this.plugin.saveResource(this.fileName, false);
|
this.plugin.saveResource(this.fileName, false);
|
||||||
|
@ -20,6 +20,7 @@ package com.gamingmesh.jobs.listeners;
|
|||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Map.Entry;
|
import java.util.Map.Entry;
|
||||||
@ -95,12 +96,13 @@ import com.gamingmesh.jobs.container.FastPayment;
|
|||||||
import com.gamingmesh.jobs.container.JobProgression;
|
import com.gamingmesh.jobs.container.JobProgression;
|
||||||
import com.gamingmesh.jobs.container.JobsPlayer;
|
import com.gamingmesh.jobs.container.JobsPlayer;
|
||||||
import com.gamingmesh.jobs.stuff.Debug;
|
import com.gamingmesh.jobs.stuff.Debug;
|
||||||
|
import com.gamingmesh.jobs.stuff.FurnaceBrewingHandling;
|
||||||
import com.google.common.base.Objects;
|
import com.google.common.base.Objects;
|
||||||
|
|
||||||
public class JobsPaymentListener implements Listener {
|
public class JobsPaymentListener implements Listener {
|
||||||
private Jobs plugin;
|
private Jobs plugin;
|
||||||
private final String furnaceOwnerMetadata = "jobsFurnaceOwner";
|
public static final String furnaceOwnerMetadata = "jobsFurnaceOwner";
|
||||||
private final String brewingOwnerMetadata = "jobsBrewingOwner";
|
public static final String brewingOwnerMetadata = "jobsBrewingOwner";
|
||||||
private final String BlockMetadata = "BlockOwner";
|
private final String BlockMetadata = "BlockOwner";
|
||||||
public static final String VegyMetadata = "VegyTimer";
|
public static final String VegyMetadata = "VegyTimer";
|
||||||
private final String CowMetadata = "CowTimer";
|
private final String CowMetadata = "CowTimer";
|
||||||
@ -233,7 +235,12 @@ public class JobsPaymentListener implements Listener {
|
|||||||
MetadataValue value = data.get(0);
|
MetadataValue value = data.get(0);
|
||||||
String playerName = value.asString();
|
String playerName = value.asString();
|
||||||
|
|
||||||
JobsPlayer jPlayer = Jobs.getPlayerManager().getJobsPlayer(playerName);
|
UUID uuid = UUID.fromString(playerName);
|
||||||
|
|
||||||
|
if (uuid == null)
|
||||||
|
return;
|
||||||
|
|
||||||
|
JobsPlayer jPlayer = Jobs.getPlayerManager().getJobsPlayer(uuid);
|
||||||
|
|
||||||
if (jPlayer == null || !jPlayer.isOnline())
|
if (jPlayer == null || !jPlayer.isOnline())
|
||||||
return;
|
return;
|
||||||
@ -259,8 +266,8 @@ public class JobsPaymentListener implements Listener {
|
|||||||
Block block = event.getBlock();
|
Block block = event.getBlock();
|
||||||
if (block == null)
|
if (block == null)
|
||||||
return;
|
return;
|
||||||
if (block.getType() == Material.FURNACE && block.hasMetadata(this.furnaceOwnerMetadata))
|
if (block.getType() == Material.FURNACE && block.hasMetadata(furnaceOwnerMetadata))
|
||||||
block.removeMetadata(this.furnaceOwnerMetadata, this.plugin);
|
FurnaceBrewingHandling.removeFurnace(block);
|
||||||
|
|
||||||
// make sure plugin is enabled
|
// make sure plugin is enabled
|
||||||
if (!this.plugin.isEnabled())
|
if (!this.plugin.isEnabled())
|
||||||
@ -750,8 +757,8 @@ public class JobsPaymentListener implements Listener {
|
|||||||
return;
|
return;
|
||||||
Block block = furnace.getBlock();
|
Block block = furnace.getBlock();
|
||||||
|
|
||||||
if (block.hasMetadata(this.furnaceOwnerMetadata))
|
if (block.hasMetadata(furnaceOwnerMetadata))
|
||||||
block.removeMetadata(this.furnaceOwnerMetadata, this.plugin);
|
FurnaceBrewingHandling.removeFurnace(block);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
@ -775,8 +782,8 @@ public class JobsPaymentListener implements Listener {
|
|||||||
return;
|
return;
|
||||||
Block block = stand.getBlock();
|
Block block = stand.getBlock();
|
||||||
|
|
||||||
if (block.hasMetadata(this.brewingOwnerMetadata))
|
if (block.hasMetadata(brewingOwnerMetadata))
|
||||||
block.removeMetadata(this.brewingOwnerMetadata, this.plugin);
|
FurnaceBrewingHandling.removeBrewing(block);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
@ -793,16 +800,23 @@ public class JobsPaymentListener implements Listener {
|
|||||||
if (block == null)
|
if (block == null)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (!block.hasMetadata(this.furnaceOwnerMetadata))
|
if (!block.hasMetadata(furnaceOwnerMetadata))
|
||||||
return;
|
return;
|
||||||
List<MetadataValue> data = block.getMetadata(this.furnaceOwnerMetadata);
|
List<MetadataValue> data = block.getMetadata(furnaceOwnerMetadata);
|
||||||
if (data.isEmpty())
|
if (data.isEmpty())
|
||||||
return;
|
return;
|
||||||
|
|
||||||
// only care about first
|
// only care about first
|
||||||
MetadataValue value = data.get(0);
|
MetadataValue value = data.get(0);
|
||||||
String playerName = value.asString();
|
String playerName = value.asString();
|
||||||
Player player = Bukkit.getServer().getPlayerExact(playerName);
|
|
||||||
|
Player player = null;
|
||||||
|
|
||||||
|
UUID uuid = UUID.fromString(playerName);
|
||||||
|
if (uuid == null)
|
||||||
|
return;
|
||||||
|
player = Bukkit.getPlayer(uuid);
|
||||||
|
|
||||||
if (player == null || !player.isOnline())
|
if (player == null || !player.isOnline())
|
||||||
return;
|
return;
|
||||||
|
|
||||||
@ -1283,8 +1297,8 @@ public class JobsPaymentListener implements Listener {
|
|||||||
if (block == null)
|
if (block == null)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if (block.getType() == Material.FURNACE && block.hasMetadata(this.furnaceOwnerMetadata))
|
if (block.getType() == Material.FURNACE && block.hasMetadata(furnaceOwnerMetadata))
|
||||||
block.removeMetadata(this.furnaceOwnerMetadata, this.plugin);
|
FurnaceBrewingHandling.removeFurnace(block);
|
||||||
|
|
||||||
if (Jobs.getGCManager().useBlockProtection)
|
if (Jobs.getGCManager().useBlockProtection)
|
||||||
if (block.getState().hasMetadata(BlockMetadata))
|
if (block.getState().hasMetadata(BlockMetadata))
|
||||||
@ -1311,14 +1325,49 @@ public class JobsPaymentListener implements Listener {
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
if (block.getType() == Material.FURNACE || block.getType() == Material.BURNING_FURNACE) {
|
if (block.getType() == Material.FURNACE || block.getType() == Material.BURNING_FURNACE) {
|
||||||
if (block.hasMetadata(this.furnaceOwnerMetadata))
|
|
||||||
block.removeMetadata(this.furnaceOwnerMetadata, this.plugin);
|
|
||||||
block.setMetadata(this.furnaceOwnerMetadata, new FixedMetadataValue(this.plugin, event.getPlayer().getName()));
|
|
||||||
} else if (block.getType() == Material.BREWING_STAND) {
|
|
||||||
if (block.hasMetadata(brewingOwnerMetadata))
|
|
||||||
block.removeMetadata(brewingOwnerMetadata, this.plugin);
|
|
||||||
|
|
||||||
block.setMetadata(brewingOwnerMetadata, new FixedMetadataValue(this.plugin, event.getPlayer().getName()));
|
boolean done = FurnaceBrewingHandling.registerFurnaces(event.getPlayer(), block);
|
||||||
|
|
||||||
|
if (!done) {
|
||||||
|
boolean report = false;
|
||||||
|
if (block.hasMetadata(furnaceOwnerMetadata)) {
|
||||||
|
List<MetadataValue> data = block.getMetadata(furnaceOwnerMetadata);
|
||||||
|
if (data.isEmpty())
|
||||||
|
return;
|
||||||
|
// only care about first
|
||||||
|
MetadataValue value = data.get(0);
|
||||||
|
String uuid = value.asString();
|
||||||
|
|
||||||
|
if (!uuid.equals(event.getPlayer().getUniqueId().toString()))
|
||||||
|
report = true;
|
||||||
|
} else
|
||||||
|
report = true;
|
||||||
|
|
||||||
|
if (report)
|
||||||
|
Jobs.getActionBar().send(event.getPlayer(), Jobs.getLanguage().getMessage("general.error.noFurnaceRegistration"));
|
||||||
|
}
|
||||||
|
} else if (block.getType() == Material.BREWING_STAND) {
|
||||||
|
|
||||||
|
boolean done = FurnaceBrewingHandling.registerBrewingStand(event.getPlayer(), block);
|
||||||
|
|
||||||
|
if (!done) {
|
||||||
|
boolean report = false;
|
||||||
|
if (block.hasMetadata(brewingOwnerMetadata)) {
|
||||||
|
List<MetadataValue> data = block.getMetadata(brewingOwnerMetadata);
|
||||||
|
if (data.isEmpty())
|
||||||
|
return;
|
||||||
|
// only care about first
|
||||||
|
MetadataValue value = data.get(0);
|
||||||
|
String uuid = value.asString();
|
||||||
|
|
||||||
|
if (!uuid.equals(event.getPlayer().getUniqueId().toString()))
|
||||||
|
report = true;
|
||||||
|
} else
|
||||||
|
report = true;
|
||||||
|
|
||||||
|
if (report)
|
||||||
|
Jobs.getActionBar().send(event.getPlayer(), Jobs.getLanguage().getMessage("general.error.noBrewingRegistration"));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -0,0 +1,342 @@
|
|||||||
|
package com.gamingmesh.jobs.stuff;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map.Entry;
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
|
import org.bukkit.Material;
|
||||||
|
import org.bukkit.block.Block;
|
||||||
|
import org.bukkit.configuration.ConfigurationSection;
|
||||||
|
import org.bukkit.configuration.file.FileConfiguration;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.metadata.FixedMetadataValue;
|
||||||
|
import org.bukkit.metadata.MetadataValue;
|
||||||
|
|
||||||
|
import com.gamingmesh.jobs.Jobs;
|
||||||
|
import com.gamingmesh.jobs.config.YmlMaker;
|
||||||
|
import com.gamingmesh.jobs.listeners.JobsPaymentListener;
|
||||||
|
|
||||||
|
public class FurnaceBrewingHandling {
|
||||||
|
|
||||||
|
public FurnaceBrewingHandling() {
|
||||||
|
}
|
||||||
|
|
||||||
|
static HashMap<UUID, List<blockLoc>> furnaceMap = new HashMap<UUID, List<blockLoc>>();
|
||||||
|
static HashMap<UUID, List<blockLoc>> brewingMap = new HashMap<UUID, List<blockLoc>>();
|
||||||
|
|
||||||
|
public static void load() {
|
||||||
|
YmlMaker f = new YmlMaker(Jobs.getInstance(), "furnaceBrewingStands.yml");
|
||||||
|
if (!f.exists())
|
||||||
|
return;
|
||||||
|
|
||||||
|
FileConfiguration config = f.getConfig();
|
||||||
|
|
||||||
|
if (config.contains("Furnace")) {
|
||||||
|
ConfigurationSection section = config.getConfigurationSection("Furnace");
|
||||||
|
|
||||||
|
try {
|
||||||
|
for (String one : section.getKeys(false)) {
|
||||||
|
String value = section.getString(one);
|
||||||
|
List<String> ls = new ArrayList<String>();
|
||||||
|
if (value.contains(";"))
|
||||||
|
ls.addAll(Arrays.asList(value.split(";")));
|
||||||
|
else
|
||||||
|
ls.add(value);
|
||||||
|
UUID uuid = UUID.fromString(one);
|
||||||
|
|
||||||
|
if (uuid == null)
|
||||||
|
continue;
|
||||||
|
List<blockLoc> blist = new ArrayList<blockLoc>();
|
||||||
|
for (String oneL : ls) {
|
||||||
|
blockLoc bl = new blockLoc(oneL);
|
||||||
|
Block block = bl.getBlock();
|
||||||
|
if (block == null)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
block.removeMetadata(JobsPaymentListener.furnaceOwnerMetadata, Jobs.getInstance());
|
||||||
|
block.setMetadata(JobsPaymentListener.furnaceOwnerMetadata, new FixedMetadataValue(Jobs.getInstance(), one));
|
||||||
|
|
||||||
|
Debug.D("set meta " + block.getLocation().toString() + " " + one);
|
||||||
|
|
||||||
|
blist.add(bl);
|
||||||
|
}
|
||||||
|
if (!blist.isEmpty()) {
|
||||||
|
Debug.D("adding furnace " + uuid.toString() + " " + blist.size());
|
||||||
|
furnaceMap.put(uuid, blist);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (config.contains("Brewing")) {
|
||||||
|
ConfigurationSection section = config.getConfigurationSection("Brewing");
|
||||||
|
|
||||||
|
try {
|
||||||
|
for (String one : section.getKeys(false)) {
|
||||||
|
String value = section.getString(one);
|
||||||
|
List<String> ls = new ArrayList<String>();
|
||||||
|
if (value.contains(";"))
|
||||||
|
ls.addAll(Arrays.asList(value.split(";")));
|
||||||
|
else
|
||||||
|
ls.add(value);
|
||||||
|
UUID uuid = UUID.fromString(one);
|
||||||
|
|
||||||
|
if (uuid == null)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
List<blockLoc> blist = new ArrayList<blockLoc>();
|
||||||
|
for (String oneL : ls) {
|
||||||
|
blockLoc bl = new blockLoc(oneL);
|
||||||
|
Block block = bl.getBlock();
|
||||||
|
if (block == null)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
block.removeMetadata(JobsPaymentListener.brewingOwnerMetadata, Jobs.getInstance());
|
||||||
|
block.setMetadata(JobsPaymentListener.brewingOwnerMetadata, new FixedMetadataValue(Jobs.getInstance(), one));
|
||||||
|
|
||||||
|
blist.add(bl);
|
||||||
|
}
|
||||||
|
if (!blist.isEmpty())
|
||||||
|
brewingMap.put(uuid, blist);
|
||||||
|
}
|
||||||
|
} catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void save() {
|
||||||
|
|
||||||
|
YmlMaker f = new YmlMaker(Jobs.getInstance(), "furnaceBrewingStands.yml");
|
||||||
|
|
||||||
|
f.createNewFile();
|
||||||
|
|
||||||
|
f.saveDefaultConfig();
|
||||||
|
FileConfiguration config = f.getConfig();
|
||||||
|
|
||||||
|
for (Entry<UUID, List<blockLoc>> one : furnaceMap.entrySet()) {
|
||||||
|
|
||||||
|
String full = "";
|
||||||
|
|
||||||
|
for (blockLoc oneL : one.getValue()) {
|
||||||
|
|
||||||
|
if (!full.isEmpty())
|
||||||
|
full += ";";
|
||||||
|
|
||||||
|
full += oneL.toString();
|
||||||
|
}
|
||||||
|
if (!full.isEmpty()) {
|
||||||
|
config.set("Furnace." + one.getKey().toString(), full);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for (Entry<UUID, List<blockLoc>> one : brewingMap.entrySet()) {
|
||||||
|
|
||||||
|
String full = "";
|
||||||
|
|
||||||
|
Debug.D("saving brewing stands " + one.getValue().size());
|
||||||
|
|
||||||
|
for (blockLoc oneL : one.getValue()) {
|
||||||
|
|
||||||
|
if (!full.isEmpty())
|
||||||
|
full += ";";
|
||||||
|
|
||||||
|
full += oneL.toString();
|
||||||
|
}
|
||||||
|
if (!full.isEmpty())
|
||||||
|
config.set("Brewing." + one.getKey().toString(), full);
|
||||||
|
}
|
||||||
|
|
||||||
|
f.saveConfig();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public static int getTotalFurnaces(Player player) {
|
||||||
|
List<blockLoc> ls = furnaceMap.get(player.getUniqueId());
|
||||||
|
if (ls == null)
|
||||||
|
return 0;
|
||||||
|
return ls.size();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static int getTotalBrewingStands(Player player) {
|
||||||
|
List<blockLoc> ls = brewingMap.get(player.getUniqueId());
|
||||||
|
if (ls == null)
|
||||||
|
return 0;
|
||||||
|
return ls.size();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static boolean removeFurnace(Block block) {
|
||||||
|
|
||||||
|
UUID uuid = null;
|
||||||
|
|
||||||
|
if (block.hasMetadata(JobsPaymentListener.furnaceOwnerMetadata)) {
|
||||||
|
List<MetadataValue> data = block.getMetadata(JobsPaymentListener.furnaceOwnerMetadata);
|
||||||
|
if (!data.isEmpty()) {
|
||||||
|
// only care about first
|
||||||
|
MetadataValue value = data.get(0);
|
||||||
|
String uuidS = value.asString();
|
||||||
|
uuid = UUID.fromString(uuidS);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
List<blockLoc> ls = furnaceMap.get(uuid);
|
||||||
|
if (ls == null)
|
||||||
|
return true;
|
||||||
|
|
||||||
|
for (blockLoc one : ls) {
|
||||||
|
if (!one.getLocation().equals(block.getLocation()))
|
||||||
|
continue;
|
||||||
|
block.removeMetadata(JobsPaymentListener.furnaceOwnerMetadata, Jobs.getInstance());
|
||||||
|
ls.remove(one);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public static boolean removeBrewing(Block block) {
|
||||||
|
|
||||||
|
UUID uuid = null;
|
||||||
|
if (block.hasMetadata(JobsPaymentListener.furnaceOwnerMetadata)) {
|
||||||
|
List<MetadataValue> data = block.getMetadata(JobsPaymentListener.furnaceOwnerMetadata);
|
||||||
|
if (!data.isEmpty()) {
|
||||||
|
// only care about first
|
||||||
|
MetadataValue value = data.get(0);
|
||||||
|
String uuidS = value.asString();
|
||||||
|
uuid = UUID.fromString(uuidS);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
List<blockLoc> ls = brewingMap.get(uuid);
|
||||||
|
if (ls == null)
|
||||||
|
return true;
|
||||||
|
for (blockLoc one : ls) {
|
||||||
|
if (!one.getLocation().equals(block.getLocation()))
|
||||||
|
continue;
|
||||||
|
block.removeMetadata(JobsPaymentListener.brewingOwnerMetadata, Jobs.getInstance());
|
||||||
|
ls.remove(one);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public static boolean registerFurnaces(Player player, Block block) {
|
||||||
|
|
||||||
|
if (block.getType() != Material.FURNACE && block.getType() != Material.BURNING_FURNACE) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
Double maxV = Jobs.getPermissionManager().getMaxPermission(Jobs.getPlayerManager().getJobsPlayer(player), "jobs.maxfurnaces");
|
||||||
|
|
||||||
|
if (maxV == null)
|
||||||
|
maxV = 0D;
|
||||||
|
|
||||||
|
int max = maxV.intValue();
|
||||||
|
|
||||||
|
int have = getTotalFurnaces(player);
|
||||||
|
|
||||||
|
boolean owner = false;
|
||||||
|
if (block.hasMetadata(JobsPaymentListener.furnaceOwnerMetadata)) {
|
||||||
|
List<MetadataValue> data = block.getMetadata(JobsPaymentListener.furnaceOwnerMetadata);
|
||||||
|
if (!data.isEmpty()) {
|
||||||
|
// only care about first
|
||||||
|
MetadataValue value = data.get(0);
|
||||||
|
String uuid = value.asString();
|
||||||
|
|
||||||
|
if (uuid.equals(player.getUniqueId().toString())) {
|
||||||
|
if (have > max)
|
||||||
|
removeFurnace(block);
|
||||||
|
owner = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (owner)
|
||||||
|
return true;
|
||||||
|
|
||||||
|
if (have >= max && max > 0)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
block.setMetadata(JobsPaymentListener.furnaceOwnerMetadata, new FixedMetadataValue(Jobs.getInstance(), player.getUniqueId().toString()));
|
||||||
|
|
||||||
|
// if (max == 0)
|
||||||
|
// return true;
|
||||||
|
|
||||||
|
List<blockLoc> ls = furnaceMap.get(player.getUniqueId());
|
||||||
|
if (ls == null)
|
||||||
|
ls = new ArrayList<blockLoc>();
|
||||||
|
ls.add(new blockLoc(block.getLocation()));
|
||||||
|
furnaceMap.put(player.getUniqueId(), ls);
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static boolean registerBrewingStand(Player player, Block block) {
|
||||||
|
|
||||||
|
if (block.getType() != Material.BREWING_STAND) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
Double maxV = Jobs.getPermissionManager().getMaxPermission(Jobs.getPlayerManager().getJobsPlayer(player), "jobs.maxbrewingstands");
|
||||||
|
|
||||||
|
if (maxV == null)
|
||||||
|
maxV = 0D;
|
||||||
|
|
||||||
|
int max = maxV.intValue();
|
||||||
|
|
||||||
|
int have = getTotalFurnaces(player);
|
||||||
|
|
||||||
|
boolean owner = false;
|
||||||
|
if (block.hasMetadata(JobsPaymentListener.brewingOwnerMetadata)) {
|
||||||
|
List<MetadataValue> data = block.getMetadata(JobsPaymentListener.brewingOwnerMetadata);
|
||||||
|
if (!data.isEmpty()) {
|
||||||
|
// only care about first
|
||||||
|
MetadataValue value = data.get(0);
|
||||||
|
String uuid = value.asString();
|
||||||
|
|
||||||
|
if (uuid.equals(player.getUniqueId().toString())) {
|
||||||
|
if (have > max)
|
||||||
|
removeBrewing(block);
|
||||||
|
owner = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (owner)
|
||||||
|
return true;
|
||||||
|
|
||||||
|
if (have >= max && max > 0)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
block.setMetadata(JobsPaymentListener.brewingOwnerMetadata, new FixedMetadataValue(Jobs.getInstance(), player.getUniqueId().toString()));
|
||||||
|
|
||||||
|
// if (max == 0)
|
||||||
|
// return true;
|
||||||
|
|
||||||
|
List<blockLoc> ls = brewingMap.get(player.getUniqueId());
|
||||||
|
if (ls == null)
|
||||||
|
ls = new ArrayList<blockLoc>();
|
||||||
|
ls.add(new blockLoc(block.getLocation()));
|
||||||
|
brewingMap.put(player.getUniqueId(), ls);
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static boolean clearFurnaces(Player player) {
|
||||||
|
furnaceMap.remove(player.getUniqueId());
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static boolean clearBrewingStands(Player player) {
|
||||||
|
brewingMap.remove(player.getUniqueId());
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
103
src/main/java/com/gamingmesh/jobs/stuff/blockLoc.java
Normal file
103
src/main/java/com/gamingmesh/jobs/stuff/blockLoc.java
Normal file
@ -0,0 +1,103 @@
|
|||||||
|
package com.gamingmesh.jobs.stuff;
|
||||||
|
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
|
import org.bukkit.Location;
|
||||||
|
import org.bukkit.World;
|
||||||
|
import org.bukkit.block.Block;
|
||||||
|
|
||||||
|
public class blockLoc {
|
||||||
|
private int x;
|
||||||
|
private int y;
|
||||||
|
private int z;
|
||||||
|
private String worldName;
|
||||||
|
private World w;
|
||||||
|
|
||||||
|
public blockLoc(String loc) {
|
||||||
|
this.fromString(loc);
|
||||||
|
}
|
||||||
|
|
||||||
|
public blockLoc(Location loc) {
|
||||||
|
x = loc.getBlockX();
|
||||||
|
y = loc.getBlockY();
|
||||||
|
z = loc.getBlockZ();
|
||||||
|
w = loc.getWorld();
|
||||||
|
worldName = loc.getWorld().getName();
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getX() {
|
||||||
|
return x;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setX(int x) {
|
||||||
|
this.x = x;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getY() {
|
||||||
|
return y;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setY(int y) {
|
||||||
|
this.y = y;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getZ() {
|
||||||
|
return z;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setZ(int z) {
|
||||||
|
this.z = z;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getWorldName() {
|
||||||
|
return worldName;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setWorldName(String worldName) {
|
||||||
|
this.worldName = worldName;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return (w == null ? worldName : w.getName()) + ":" + x + ":" + y + ":" + z;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean fromString(String loc) {
|
||||||
|
if (!loc.contains(":"))
|
||||||
|
return false;
|
||||||
|
String[] split = loc.split(":");
|
||||||
|
|
||||||
|
World w = Bukkit.getWorld(split[0]);
|
||||||
|
if (w == null)
|
||||||
|
return false;
|
||||||
|
this.w = w;
|
||||||
|
|
||||||
|
try {
|
||||||
|
x = Integer.parseInt(split[1]);
|
||||||
|
y = Integer.parseInt(split[2]);
|
||||||
|
z = Integer.parseInt(split[3]);
|
||||||
|
return true;
|
||||||
|
} catch (Exception e) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public Block getBlock() {
|
||||||
|
Location loc = this.getLocation();
|
||||||
|
|
||||||
|
if (loc == null)
|
||||||
|
return null;
|
||||||
|
|
||||||
|
return loc.getBlock();
|
||||||
|
}
|
||||||
|
|
||||||
|
public Location getLocation() {
|
||||||
|
World w = this.w == null ? Bukkit.getWorld(worldName) : this.w;
|
||||||
|
if (w == null)
|
||||||
|
return null;
|
||||||
|
this.w = w;
|
||||||
|
|
||||||
|
Location loc = new Location(w, x, y, z);
|
||||||
|
|
||||||
|
return loc;
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user