mirror of
https://github.com/exituser/Brewery.git
synced 2026-09-17 08:59:01 +00:00
Added multiworld support
This commit is contained in:
@@ -105,18 +105,34 @@ public class BCauldron {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void save(ConfigurationSection config) {
|
//unloads cauldrons that are in a unloading world
|
||||||
|
public static void onUnload(String name) {
|
||||||
|
for (BCauldron bcauldron : bcauldrons) {
|
||||||
|
if (bcauldron.block.getWorld().getName().equals(name)) {
|
||||||
|
bcauldrons.remove(bcauldron);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void save(ConfigurationSection config, ConfigurationSection oldConfig) {
|
||||||
int id = 0;
|
int id = 0;
|
||||||
for (BCauldron cauldron : bcauldrons) {
|
for (BCauldron cauldron : bcauldrons) {
|
||||||
// cauldrons are randomly listed
|
// cauldrons are sorted in worldUUID.randomId
|
||||||
ConfigurationSection section = config.createSection("" + id);
|
String prefix = cauldron.block.getWorld().getUID().toString() + "." + id;
|
||||||
section.set("block", cauldron.block.getWorld().getName() + "/" + cauldron.block.getX() + "/" + cauldron.block.getY() + "/" + cauldron.block.getZ());
|
|
||||||
|
config.set(prefix + ".block", cauldron.block.getX() + "/" + cauldron.block.getY() + "/" + cauldron.block.getZ());
|
||||||
if (cauldron.state != 1) {
|
if (cauldron.state != 1) {
|
||||||
section.set("state", cauldron.state);
|
config.set(prefix + ".state", cauldron.state);
|
||||||
}
|
}
|
||||||
cauldron.ingredients.save(section.createSection("ingredients"));
|
cauldron.ingredients.save(config.createSection(prefix + ".ingredients"));
|
||||||
id++;
|
id++;
|
||||||
}
|
}
|
||||||
|
// copy cauldrons that are not loaded
|
||||||
|
for (String uuid : oldConfig.getKeys(false)) {
|
||||||
|
if (!config.contains(uuid)) {
|
||||||
|
config.set(uuid, oldConfig.get(uuid));
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// bukkit bug not updating the inventory while executing event, have to
|
// bukkit bug not updating the inventory while executing event, have to
|
||||||
|
|||||||
@@ -12,10 +12,7 @@ import org.bukkit.configuration.ConfigurationSection;
|
|||||||
import com.dre.brewery.Brew;
|
import com.dre.brewery.Brew;
|
||||||
|
|
||||||
public class BPlayer {
|
public class BPlayer {
|
||||||
public static Map<String, BPlayer> players = new HashMap<String, BPlayer>();// Players
|
public static Map<String, BPlayer> players = new HashMap<String, BPlayer>();// Players name and BPlayer
|
||||||
// name
|
|
||||||
// and
|
|
||||||
// BPlayer
|
|
||||||
|
|
||||||
private int quality = 0;// = quality of drunkeness * drunkeness
|
private int quality = 0;// = quality of drunkeness * drunkeness
|
||||||
private int drunkeness = 0;// = amount of drunkeness
|
private int drunkeness = 0;// = amount of drunkeness
|
||||||
|
|||||||
@@ -131,9 +131,9 @@ public class Barrel {
|
|||||||
}
|
}
|
||||||
// "broken" is the block that destroyed, throw them there!
|
// "broken" is the block that destroyed, throw them there!
|
||||||
if (broken != null) {
|
if (broken != null) {
|
||||||
broken.getLocation().getWorld().dropItem(broken.getLocation(), item);
|
broken.getWorld().dropItem(broken.getLocation(), item);
|
||||||
} else {
|
} else {
|
||||||
spigot.getLocation().getWorld().dropItem(spigot.getLocation(), item);
|
spigot.getWorld().dropItem(spigot.getLocation(), item);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -141,18 +141,23 @@ public class Barrel {
|
|||||||
barrels.remove(this);
|
barrels.remove(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//unloads barrels that are in a unloading world
|
||||||
|
public static void onUnload(String name) {
|
||||||
|
for (Barrel barrel : barrels) {
|
||||||
|
if (barrel.spigot.getWorld().getName().equals(name)) {
|
||||||
|
barrels.remove(barrel);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Saves all data
|
// Saves all data
|
||||||
public static void save(ConfigurationSection config) {
|
public static void save(ConfigurationSection config, ConfigurationSection oldConfig) {
|
||||||
int id = 0;
|
int id = 0;
|
||||||
for (Barrel barrel : barrels) {
|
for (Barrel barrel : barrels) {
|
||||||
// barrels are listed randomly
|
// barrels are sorted in worldUUID.randomId
|
||||||
ConfigurationSection idConfig = config.createSection("" + id);
|
String prefix = barrel.spigot.getWorld().getUID().toString() + "." + id;
|
||||||
|
// block: x/y/z
|
||||||
// block: worldname/x/y/z
|
config.set(prefix + ".spigot", barrel.spigot.getX() + "/" + barrel.spigot.getY() + "/" + barrel.spigot.getZ());
|
||||||
idConfig.set("spigot", barrel.spigot.getWorld().getName() + "/" + barrel.spigot.getX() + "/" + barrel.spigot.getY() + "/" + barrel.spigot.getZ());
|
|
||||||
if (barrel.time != 0) {
|
|
||||||
idConfig.set("time", barrel.time);
|
|
||||||
}
|
|
||||||
|
|
||||||
// not saving the inventory if there is none, or it is empty
|
// not saving the inventory if there is none, or it is empty
|
||||||
if (barrel.inventory != null) {
|
if (barrel.inventory != null) {
|
||||||
@@ -163,8 +168,12 @@ public class Barrel {
|
|||||||
item = barrel.inventory.getItem(slot);
|
item = barrel.inventory.getItem(slot);
|
||||||
if (item != null) {
|
if (item != null) {
|
||||||
if (invConfig == null) {
|
if (invConfig == null) {
|
||||||
|
if (barrel.time != 0) {
|
||||||
|
//time is only needed when there are items in inventory
|
||||||
|
config.set(prefix + ".time", barrel.time);
|
||||||
|
}
|
||||||
// create section only when items in inventory
|
// create section only when items in inventory
|
||||||
invConfig = idConfig.createSection("inv");
|
invConfig = config.createSection(prefix + ".inv");
|
||||||
}
|
}
|
||||||
// ItemStacks are configurationSerializeable, makes them
|
// ItemStacks are configurationSerializeable, makes them
|
||||||
// really easy to save
|
// really easy to save
|
||||||
@@ -177,6 +186,12 @@ public class Barrel {
|
|||||||
|
|
||||||
id++;
|
id++;
|
||||||
}
|
}
|
||||||
|
// also save barrels that are not loaded
|
||||||
|
for (String uuid : oldConfig.getKeys(false)) {
|
||||||
|
if (!config.contains(uuid)) {
|
||||||
|
config.set(uuid, oldConfig.get(uuid));
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// direction of the barrel from the spigot
|
// direction of the barrel from the spigot
|
||||||
|
|||||||
+81
-54
@@ -2,6 +2,7 @@ package com.dre.brewery;
|
|||||||
|
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
import org.bukkit.plugin.java.JavaPlugin;
|
import org.bukkit.plugin.java.JavaPlugin;
|
||||||
import org.bukkit.configuration.file.FileConfiguration;
|
import org.bukkit.configuration.file.FileConfiguration;
|
||||||
@@ -13,6 +14,8 @@ import org.apache.commons.lang.math.NumberUtils;
|
|||||||
import com.dre.brewery.listeners.BlockListener;
|
import com.dre.brewery.listeners.BlockListener;
|
||||||
import com.dre.brewery.listeners.PlayerListener;
|
import com.dre.brewery.listeners.PlayerListener;
|
||||||
import com.dre.brewery.listeners.EntityListener;
|
import com.dre.brewery.listeners.EntityListener;
|
||||||
|
import com.dre.brewery.listeners.InventoryListener;
|
||||||
|
import com.dre.brewery.listeners.WorldListener;
|
||||||
import org.bukkit.event.HandlerList;
|
import org.bukkit.event.HandlerList;
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.command.CommandSender;
|
import org.bukkit.command.CommandSender;
|
||||||
@@ -28,6 +31,8 @@ public class P extends JavaPlugin {
|
|||||||
public BlockListener blockListener;
|
public BlockListener blockListener;
|
||||||
public PlayerListener playerListener;
|
public PlayerListener playerListener;
|
||||||
public EntityListener entityListener;
|
public EntityListener entityListener;
|
||||||
|
public InventoryListener inventoryListener;
|
||||||
|
public WorldListener worldListener;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onEnable() {
|
public void onEnable() {
|
||||||
@@ -40,10 +45,15 @@ public class P extends JavaPlugin {
|
|||||||
blockListener = new BlockListener();
|
blockListener = new BlockListener();
|
||||||
playerListener = new PlayerListener();
|
playerListener = new PlayerListener();
|
||||||
entityListener = new EntityListener();
|
entityListener = new EntityListener();
|
||||||
|
inventoryListener = new InventoryListener();
|
||||||
|
worldListener = new WorldListener();
|
||||||
|
|
||||||
p.getServer().getPluginManager().registerEvents(blockListener, p);
|
p.getServer().getPluginManager().registerEvents(blockListener, p);
|
||||||
p.getServer().getPluginManager().registerEvents(playerListener, p);
|
p.getServer().getPluginManager().registerEvents(playerListener, p);
|
||||||
p.getServer().getPluginManager().registerEvents(entityListener, p);
|
p.getServer().getPluginManager().registerEvents(entityListener, p);
|
||||||
|
p.getServer().getPluginManager().registerEvents(inventoryListener, p);
|
||||||
|
p.getServer().getPluginManager().registerEvents(worldListener, p);
|
||||||
|
|
||||||
p.getServer().getScheduler().runTaskTimer(p, new BreweryRunnable(), 1200, 1200);
|
p.getServer().getScheduler().runTaskTimer(p, new BreweryRunnable(), 1200, 1200);
|
||||||
|
|
||||||
this.log(this.getDescription().getName() + " enabled!");
|
this.log(this.getDescription().getName() + " enabled!");
|
||||||
@@ -121,58 +131,6 @@ public class P extends JavaPlugin {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// loading BCauldron
|
|
||||||
section = data.getConfigurationSection("BCauldron");
|
|
||||||
if (section != null) {
|
|
||||||
for (String cauldron : section.getKeys(false)) {
|
|
||||||
// block is splitted into worldname/x/y/z
|
|
||||||
String block = section.getString(cauldron + ".block");
|
|
||||||
if (block != null) {
|
|
||||||
String[] splitted = block.split("/");
|
|
||||||
if (splitted.length == 4) {
|
|
||||||
new BCauldron(getServer().getWorld(splitted[0]).getBlockAt(parseInt(splitted[1]), parseInt(splitted[2]), parseInt(splitted[3])),
|
|
||||||
loadIngredients(section.getConfigurationSection(cauldron + ".ingredients")), section.getInt(cauldron + ".state", 1));
|
|
||||||
} else {
|
|
||||||
errorLog("Incomplete Block-Data in data.yml: " + section.getCurrentPath() + "." + cauldron);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
errorLog("Missing Block-Data in data.yml: " + section.getCurrentPath() + "." + cauldron);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// loading Barrel
|
|
||||||
section = data.getConfigurationSection("Barrel");
|
|
||||||
if (section != null) {
|
|
||||||
for (String barrel : section.getKeys(false)) {
|
|
||||||
// block spigot is splitted into worldname/x/y/z
|
|
||||||
String spigot = section.getString(barrel + ".spigot");
|
|
||||||
if (spigot != null) {
|
|
||||||
String[] splitted = spigot.split("/");
|
|
||||||
if (splitted.length == 4) {
|
|
||||||
// load itemStacks from invSection
|
|
||||||
ConfigurationSection invSection = section.getConfigurationSection(barrel + ".inv");
|
|
||||||
if (invSection != null) {
|
|
||||||
// Map<String,ItemStack> inventory =
|
|
||||||
// section.getValues(barrel+"inv");
|
|
||||||
new Barrel(getServer().getWorld(splitted[0]).getBlockAt(parseInt(splitted[1]), parseInt(splitted[2]), parseInt(splitted[3])), invSection.getValues(true),
|
|
||||||
(float) section.getDouble(barrel + ".time", 0.0));
|
|
||||||
|
|
||||||
} else {
|
|
||||||
// errorLog("Inventory of "+section.getCurrentPath()+"."+barrel+" in data.yml is missing");
|
|
||||||
// Barrel has no inventory
|
|
||||||
new Barrel(getServer().getWorld(splitted[0]).getBlockAt(parseInt(splitted[1]), parseInt(splitted[2]), parseInt(splitted[3])), (float) section.getDouble(barrel
|
|
||||||
+ ".time", 0.0));
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
errorLog("Incomplete Block-Data in data.yml: " + section.getCurrentPath() + "." + barrel);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
errorLog("Missing Block-Data in data.yml: " + section.getCurrentPath() + "." + barrel);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// loading BPlayer
|
// loading BPlayer
|
||||||
section = data.getConfigurationSection("Player");
|
section = data.getConfigurationSection("Player");
|
||||||
if (section != null) {
|
if (section != null) {
|
||||||
@@ -182,6 +140,10 @@ public class P extends JavaPlugin {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for (org.bukkit.World world : p.getServer().getWorlds()) {
|
||||||
|
loadWorldData(world.getUID().toString());
|
||||||
|
}
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
errorLog("No data.yml found, will create new one!");
|
errorLog("No data.yml found, will create new one!");
|
||||||
}
|
}
|
||||||
@@ -205,12 +167,77 @@ public class P extends JavaPlugin {
|
|||||||
return new BIngredients();
|
return new BIngredients();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// load Block locations of given world
|
||||||
|
public void loadWorldData(String uuid) {
|
||||||
|
|
||||||
|
File file = new File(p.getDataFolder(), "data.yml");
|
||||||
|
if (file.exists()) {
|
||||||
|
|
||||||
|
FileConfiguration data = YamlConfiguration.loadConfiguration(file);
|
||||||
|
|
||||||
|
// loading BCauldron
|
||||||
|
if (data.contains("BCauldron." + uuid)) {
|
||||||
|
ConfigurationSection section = data.getConfigurationSection("BCauldron." + uuid);
|
||||||
|
for (String cauldron : section.getKeys(false)) {
|
||||||
|
// block is splitted into x/y/z
|
||||||
|
String block = section.getString(cauldron + ".block");
|
||||||
|
if (block != null) {
|
||||||
|
String[] splitted = block.split("/");
|
||||||
|
if (splitted.length == 3) {
|
||||||
|
new BCauldron(getServer().getWorld(UUID.fromString(uuid)).getBlockAt(parseInt(splitted[0]), parseInt(splitted[1]), parseInt(splitted[2])),
|
||||||
|
loadIngredients(section.getConfigurationSection(cauldron + ".ingredients")), section.getInt(cauldron + ".state", 1));
|
||||||
|
} else {
|
||||||
|
errorLog("Incomplete Block-Data in data.yml: " + section.getCurrentPath() + "." + cauldron);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
errorLog("Missing Block-Data in data.yml: " + section.getCurrentPath() + "." + cauldron);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// loading Barrel
|
||||||
|
if (data.contains("Barrel." + uuid)) {
|
||||||
|
ConfigurationSection section = data.getConfigurationSection("Barrel." + uuid);
|
||||||
|
for (String barrel : section.getKeys(false)) {
|
||||||
|
// block spigot is splitted into x/y/z
|
||||||
|
String spigot = section.getString(barrel + ".spigot");
|
||||||
|
if (spigot != null) {
|
||||||
|
String[] splitted = spigot.split("/");
|
||||||
|
if (splitted.length == 3) {
|
||||||
|
// load itemStacks from invSection
|
||||||
|
ConfigurationSection invSection = section.getConfigurationSection(barrel + ".inv");
|
||||||
|
if (invSection != null) {
|
||||||
|
|
||||||
|
new Barrel(getServer().getWorld(UUID.fromString(uuid)).getBlockAt(parseInt(splitted[0]), parseInt(splitted[1]), parseInt(splitted[2])),
|
||||||
|
invSection.getValues(true), (float) section.getDouble(barrel + ".time", 0.0));
|
||||||
|
|
||||||
|
} else {
|
||||||
|
// Barrel has no inventory
|
||||||
|
new Barrel(getServer().getWorld(UUID.fromString(uuid)).getBlockAt(parseInt(splitted[0]), parseInt(splitted[1]), parseInt(splitted[2])),
|
||||||
|
(float) section.getDouble(barrel + ".time", 0.0));
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
errorLog("Incomplete Block-Data in data.yml: " + section.getCurrentPath() + "." + barrel);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
errorLog("Missing Block-Data in data.yml: " + section.getCurrentPath() + "." + barrel);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// save all Data
|
// save all Data
|
||||||
public void saveData() {
|
public void saveData() {
|
||||||
File datafile = new File(p.getDataFolder(), "data.yml");
|
File datafile = new File(p.getDataFolder(), "data.yml");
|
||||||
|
|
||||||
|
FileConfiguration oldConfig = YamlConfiguration.loadConfiguration(datafile);
|
||||||
|
|
||||||
if (datafile.exists()) {
|
if (datafile.exists()) {
|
||||||
if (lastBackup > 10) {
|
if (lastBackup > 10) {
|
||||||
datafile.renameTo(new File(p.getDataFolder(), "dataBackup.yml"));
|
datafile.renameTo(new File(p.getDataFolder(), "dataBackup.yml"));
|
||||||
|
lastBackup = 0;
|
||||||
} else {
|
} else {
|
||||||
lastBackup++;
|
lastBackup++;
|
||||||
}
|
}
|
||||||
@@ -222,11 +249,11 @@ public class P extends JavaPlugin {
|
|||||||
Brew.save(configFile.createSection("Brew"));
|
Brew.save(configFile.createSection("Brew"));
|
||||||
}
|
}
|
||||||
if (!BCauldron.bcauldrons.isEmpty()) {
|
if (!BCauldron.bcauldrons.isEmpty()) {
|
||||||
BCauldron.save(configFile.createSection("BCauldron"));
|
BCauldron.save(configFile.createSection("BCauldron"), oldConfig.getConfigurationSection("BCauldron"));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!Barrel.barrels.isEmpty()) {
|
if (!Barrel.barrels.isEmpty()) {
|
||||||
Barrel.save(configFile.createSection("Barrel"));
|
Barrel.save(configFile.createSection("Barrel"), oldConfig.getConfigurationSection("Barrel"));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!BPlayer.players.isEmpty()) {
|
if (!BPlayer.players.isEmpty()) {
|
||||||
|
|||||||
@@ -0,0 +1,45 @@
|
|||||||
|
package com.dre.brewery.listeners;
|
||||||
|
|
||||||
|
import org.bukkit.event.EventHandler;
|
||||||
|
import org.bukkit.event.EventPriority;
|
||||||
|
import org.bukkit.event.Listener;
|
||||||
|
import org.bukkit.event.inventory.BrewEvent;
|
||||||
|
import org.bukkit.inventory.BrewerInventory;
|
||||||
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
import org.bukkit.Material;
|
||||||
|
|
||||||
|
import com.dre.brewery.Brew;
|
||||||
|
|
||||||
|
public class InventoryListener implements Listener {
|
||||||
|
|
||||||
|
@EventHandler(priority = EventPriority.HIGH)
|
||||||
|
public void onBrew(BrewEvent event) {
|
||||||
|
int slot = 0;
|
||||||
|
BrewerInventory inv = event.getContents();
|
||||||
|
ItemStack item;
|
||||||
|
boolean custom = false;
|
||||||
|
Integer[] contents = new Integer[3];
|
||||||
|
while (slot < 3) {
|
||||||
|
item = inv.getItem(slot);
|
||||||
|
contents[slot] = 0;
|
||||||
|
if (item != null) {
|
||||||
|
if (item.getType() == Material.POTION) {
|
||||||
|
if (item.hasItemMeta()) {
|
||||||
|
if (Brew.potions.containsKey(Brew.getUID(item))) {
|
||||||
|
// has custom potion in "slot"
|
||||||
|
contents[slot] = 1;
|
||||||
|
custom = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
slot++;
|
||||||
|
}
|
||||||
|
if (custom) {
|
||||||
|
event.setCancelled(true);
|
||||||
|
Brew.distillAll(inv, contents);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -5,14 +5,12 @@ import org.bukkit.event.player.PlayerInteractEvent;
|
|||||||
import org.bukkit.event.player.PlayerItemConsumeEvent;
|
import org.bukkit.event.player.PlayerItemConsumeEvent;
|
||||||
import org.bukkit.event.player.PlayerMoveEvent;
|
import org.bukkit.event.player.PlayerMoveEvent;
|
||||||
import org.bukkit.event.player.AsyncPlayerChatEvent;
|
import org.bukkit.event.player.AsyncPlayerChatEvent;
|
||||||
import org.bukkit.event.inventory.BrewEvent;
|
|
||||||
import org.bukkit.event.EventHandler;
|
import org.bukkit.event.EventHandler;
|
||||||
import org.bukkit.event.EventPriority;
|
import org.bukkit.event.EventPriority;
|
||||||
import org.bukkit.event.Listener;
|
import org.bukkit.event.Listener;
|
||||||
import org.bukkit.event.block.Action;
|
import org.bukkit.event.block.Action;
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
import org.bukkit.inventory.BrewerInventory;
|
|
||||||
import org.bukkit.block.Block;
|
import org.bukkit.block.Block;
|
||||||
import org.bukkit.block.BlockFace;
|
import org.bukkit.block.BlockFace;
|
||||||
|
|
||||||
@@ -88,36 +86,6 @@ public class PlayerListener implements Listener {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler(priority = EventPriority.HIGH)
|
|
||||||
public void onBrew(BrewEvent event) {
|
|
||||||
int slot = 0;
|
|
||||||
BrewerInventory inv = event.getContents();
|
|
||||||
ItemStack item;
|
|
||||||
boolean custom = false;
|
|
||||||
Integer[] contents = new Integer[3];
|
|
||||||
while (slot < 3) {
|
|
||||||
item = inv.getItem(slot);
|
|
||||||
contents[slot] = 0;
|
|
||||||
if (item != null) {
|
|
||||||
if (item.getType() == Material.POTION) {
|
|
||||||
if (item.hasItemMeta()) {
|
|
||||||
if (Brew.potions.containsKey(Brew.getUID(item))) {
|
|
||||||
// has custom potion in "slot"
|
|
||||||
contents[slot] = 1;
|
|
||||||
custom = true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
slot++;
|
|
||||||
}
|
|
||||||
if (custom) {
|
|
||||||
event.setCancelled(true);
|
|
||||||
Brew.distillAll(inv, contents);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
// player drinks a custom potion
|
// player drinks a custom potion
|
||||||
@EventHandler(priority = EventPriority.NORMAL)
|
@EventHandler(priority = EventPriority.NORMAL)
|
||||||
public void onPlayerItemConsume(PlayerItemConsumeEvent event) {
|
public void onPlayerItemConsume(PlayerItemConsumeEvent event) {
|
||||||
|
|||||||
@@ -0,0 +1,30 @@
|
|||||||
|
package com.dre.brewery.listeners;
|
||||||
|
|
||||||
|
import org.bukkit.event.EventHandler;
|
||||||
|
import org.bukkit.event.Listener;
|
||||||
|
import org.bukkit.event.world.WorldLoadEvent;
|
||||||
|
import org.bukkit.event.world.WorldUnloadEvent;
|
||||||
|
|
||||||
|
import com.dre.brewery.P;
|
||||||
|
import com.dre.brewery.BCauldron;
|
||||||
|
import com.dre.brewery.Barrel;
|
||||||
|
|
||||||
|
public class WorldListener implements Listener {
|
||||||
|
|
||||||
|
@EventHandler
|
||||||
|
public void onWorldLoad(WorldLoadEvent event) {
|
||||||
|
P.p.log("loading world with uuid " + event.getWorld().getUID().toString());
|
||||||
|
P.p.loadWorldData(event.getWorld().getUID().toString());
|
||||||
|
}
|
||||||
|
|
||||||
|
@EventHandler
|
||||||
|
public void onWorldUnload(WorldUnloadEvent event) {
|
||||||
|
P.p.log("Unloading world with uuid " + event.getWorld().getUID().toString());
|
||||||
|
if (!event.isCancelled()) {
|
||||||
|
P.p.saveData();
|
||||||
|
Barrel.onUnload(event.getWorld().getName());
|
||||||
|
BCauldron.onUnload(event.getWorld().getName());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user