diff --git a/src/com/dre/brewery/BRecipe.java b/src/com/dre/brewery/BRecipe.java index 9a7c68d..ec2fc5d 100644 --- a/src/com/dre/brewery/BRecipe.java +++ b/src/com/dre/brewery/BRecipe.java @@ -203,7 +203,7 @@ public class BRecipe { BIngredients bIngredients = new BIngredients(list, cookingTime); - Brew brew = new Brew(uid, bIngredients, quality, distillruns, getAge(), wood, getName(5), false, false, true); + Brew brew = new Brew(uid, bIngredients, quality, distillruns, getAge(), wood, getName(5), false, false, true, 0); Brew.PotionColor.valueOf(getColor()).colorBrew(potionMeta, potion, false); potionMeta.setDisplayName(P.p.color("&f" + getName(quality))); @@ -212,6 +212,7 @@ public class BRecipe { brew.convertLore(potionMeta, false); Brew.addOrReplaceEffects(potionMeta, effects, quality); + brew.touch(); potion.setItemMeta(potionMeta); return potion; diff --git a/src/com/dre/brewery/Brew.java b/src/com/dre/brewery/Brew.java index 2b3f228..505c381 100644 --- a/src/com/dre/brewery/Brew.java +++ b/src/com/dre/brewery/Brew.java @@ -21,6 +21,7 @@ public class Brew { // represents the liquid in the brewed Potions public static Map potions = new HashMap(); + public static long installTime = System.currentTimeMillis(); // plugin install time in millis after epoch public static Boolean colorInBarrels; // color the Lore while in Barrels public static Boolean colorInBrewer; // color the Lore while in Brewer @@ -33,9 +34,11 @@ public class Brew { private boolean unlabeled; private boolean persistent; private boolean stat; // static potions should not be changed + private int lastUpdate; // last update in hours after install time public Brew(int uid, BIngredients ingredients) { this.ingredients = ingredients; + touch(); potions.put(uid, this); } @@ -44,11 +47,12 @@ public class Brew { this.ingredients = ingredients; this.quality = quality; this.currentRecipe = recipe; + touch(); potions.put(uid, this); } // loading from file - public Brew(int uid, BIngredients ingredients, int quality, int distillRuns, float ageTime, float wood, String recipe, boolean unlabeled, boolean persistent, boolean stat) { + public Brew(int uid, BIngredients ingredients, int quality, int distillRuns, float ageTime, float wood, String recipe, boolean unlabeled, boolean persistent, boolean stat, int lastUpdate) { potions.put(uid, this); this.ingredients = ingredients; this.quality = quality; @@ -58,6 +62,7 @@ public class Brew { this.unlabeled = unlabeled; this.persistent = persistent; this.stat = stat; + this.lastUpdate = lastUpdate; setRecipeFromString(recipe); } @@ -273,6 +278,11 @@ public class Brew { unlabeled = true; } + // Do some regular updates + public void touch() { + lastUpdate = (int) ((float) (System.currentTimeMillis() - installTime) / 3600000F); + } + public int getDistillRuns() { return distillRuns; } @@ -315,6 +325,10 @@ public class Brew { } } + public int getLastUpdate() { + return lastUpdate; + } + // Distilling section --------------- // distill all custom potions in the brewer @@ -366,6 +380,7 @@ public class Brew { prefix = getQualityColor(ingredients.getDistillQuality(recipe, distillRuns)); } updateDistillLore(prefix, potionMeta); + touch(); slotItem.setItemMeta(potionMeta); } @@ -421,6 +436,7 @@ public class Brew { updateWoodLore(potionMeta); } } + touch(); item.setItemMeta(potionMeta); } @@ -650,6 +666,9 @@ public class Brew { if (brew.stat) { idConfig.set("stat", true); } + if (brew.lastUpdate > 0) { + idConfig.set("lastUpdate", brew.lastUpdate); + } // save the ingredients idConfig.set("ingId", brew.ingredients.save(config.getParent())); } diff --git a/src/com/dre/brewery/P.java b/src/com/dre/brewery/P.java index d6725c9..2fd11c7 100644 --- a/src/com/dre/brewery/P.java +++ b/src/com/dre/brewery/P.java @@ -369,6 +369,8 @@ public class P extends JavaPlugin { FileConfiguration data = YamlConfiguration.loadConfiguration(file); + Brew.installTime = data.getLong("installTime", System.currentTimeMillis()); + // Check if data is the newest version String version = data.getString("Version", null); if (version != null) { @@ -410,8 +412,9 @@ public class P extends JavaPlugin { boolean unlabeled = section.getBoolean(uid + ".unlabeled", false); boolean persistent = section.getBoolean(uid + ".persist", false); boolean stat = section.getBoolean(uid + ".stat", false); + int lastUpdate = section.getInt("lastUpdate", 0); - new Brew(parseInt(uid), ingredients, quality, distillRuns, ageTime, wood, recipe, unlabeled, persistent, stat); + new Brew(parseInt(uid), ingredients, quality, distillRuns, ageTime, wood, recipe, unlabeled, persistent, stat, lastUpdate); } } diff --git a/src/com/dre/brewery/filedata/DataSave.java b/src/com/dre/brewery/filedata/DataSave.java index b80e5e8..ea7507f 100644 --- a/src/com/dre/brewery/filedata/DataSave.java +++ b/src/com/dre/brewery/filedata/DataSave.java @@ -59,6 +59,8 @@ public class DataSave extends BukkitRunnable { FileConfiguration configFile = new YamlConfiguration(); + configFile.set("installTime", Brew.installTime); + if (!Brew.potions.isEmpty()) { Brew.save(configFile.createSection("Brew")); } diff --git a/src/com/dre/brewery/listeners/CommandListener.java b/src/com/dre/brewery/listeners/CommandListener.java index 93ab388..12b7731 100644 --- a/src/com/dre/brewery/listeners/CommandListener.java +++ b/src/com/dre/brewery/listeners/CommandListener.java @@ -430,6 +430,7 @@ public class CommandListener implements CommandExecutor { brew.setStatic(true, hand); p.msg(sender, p.languageReader.get("CMD_Persistent")); } + brew.touch(); return; } } @@ -459,6 +460,7 @@ public class CommandListener implements CommandExecutor { brew.setStatic(true, hand); p.msg(sender, p.languageReader.get("CMD_Static")); } + brew.touch(); return; } } @@ -478,6 +480,7 @@ public class CommandListener implements CommandExecutor { Brew brew = Brew.get(hand); if (brew != null) { brew.unLabel(hand); + brew.touch(); p.msg(sender, p.languageReader.get("CMD_UnLabel")); return; } diff --git a/src/com/dre/brewery/listeners/InventoryListener.java b/src/com/dre/brewery/listeners/InventoryListener.java index a45cf32..bfb7482 100644 --- a/src/com/dre/brewery/listeners/InventoryListener.java +++ b/src/com/dre/brewery/listeners/InventoryListener.java @@ -209,24 +209,24 @@ public class InventoryListener implements Listener { return false; } - // convert potions from 1.8 for color and to remove effect descriptions in 1.9 + // Clicked a Brew somewhere, do some updating @EventHandler(priority = EventPriority.LOW, ignoreCancelled = false) public void onInventoryClickLow(InventoryClickEvent event) { - if (!P.use1_9) return; - if (event.getCurrentItem() != null && event.getCurrentItem().getType().equals(Material.POTION)) { ItemStack item = event.getCurrentItem(); if (item.hasItemMeta()) { PotionMeta potion = ((PotionMeta) item.getItemMeta()); - if (!potion.hasItemFlag(ItemFlag.HIDE_POTION_EFFECTS)) { - Brew brew = Brew.get(potion); - if (brew != null) { + Brew brew = Brew.get(potion); + if (brew != null) { + // convert potions from 1.8 to 1.9 for color and to remove effect descriptions + if (P.use1_9 && !potion.hasItemFlag(ItemFlag.HIDE_POTION_EFFECTS)) { BRecipe recipe = brew.getCurrentRecipe(); if (recipe != null) { Brew.PotionColor.valueOf(recipe.getColor()).colorBrew(potion, item, brew.canDistill()); item.setItemMeta(potion); } } + brew.touch(); } } }