diff --git a/TwosideKeeper.jar b/TwosideKeeper.jar index e677ef0..929c138 100644 Binary files a/TwosideKeeper.jar and b/TwosideKeeper.jar differ diff --git a/projectBuilder.xml b/projectBuilder.xml index c78ccc0..ae62ecf 100644 --- a/projectBuilder.xml +++ b/projectBuilder.xml @@ -2,5 +2,6 @@ + \ No newline at end of file diff --git a/src/plugin.yml b/src/plugin.yml index aeb1b98..8de0202 100644 --- a/src/plugin.yml +++ b/src/plugin.yml @@ -36,4 +36,9 @@ commands: description: Toggle sound message notifications. usage: /sound permission: TwosideKeeper.sound + permission-message: No permissions! + log: + description: Adjusts the debugging log level for TwosideKeeper in the console. + usage: /log + permission: TwosideKeeper.log permission-message: No permissions! \ No newline at end of file diff --git a/src/sig/plugin/TwosideKeeper/HelperStructures/Common/GenericFunctions.java b/src/sig/plugin/TwosideKeeper/HelperStructures/Common/GenericFunctions.java new file mode 100644 index 0000000..35058c8 --- /dev/null +++ b/src/sig/plugin/TwosideKeeper/HelperStructures/Common/GenericFunctions.java @@ -0,0 +1,1056 @@ +package sig.plugin.TwosideKeeper.HelperStructures.Common; + +import java.util.ArrayList; +import java.util.List; + +import org.bukkit.Bukkit; +import org.bukkit.ChatColor; +import org.bukkit.Material; +import org.bukkit.entity.LivingEntity; +import org.bukkit.entity.Player; +import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.ItemMeta; +import org.bukkit.inventory.meta.PotionMeta; + +import sig.plugin.TwosideKeeper.TwosideKeeper; + +public class GenericFunctions { + + public static int getHardenedItemBreaks(ItemStack item) { + if (item.hasItemMeta() && + item.getItemMeta().hasLore()) { + ItemMeta item_meta = item.getItemMeta(); + int breaks_remaining=-1; + int loreline=-1; + for (int i=0;i0) { + ItemMeta m = item.getItemMeta(); + List lore = item.getItemMeta().getLore(); + for (int i=0;i='a') { + first = (char)(temp[i].charAt(0)-32); + } else { + first = temp[i].charAt(0); + } + finalname+=(finalname.equals("")?"":" ")+first+temp[i].toLowerCase().substring(1); + } + return finalname; + } else { + if (s.charAt(0)>='a') { + char first = (char)(s.charAt(0)-32); + return first+s.toLowerCase().substring(1); + } else { + char first = (char)(s.charAt(0)); + return first+s.toLowerCase().substring(1); + } + } + } + + public static String GetItemName(ItemStack item) { + if (item.hasItemMeta() && + item.getItemMeta().hasDisplayName()) { + return item.getItemMeta().getDisplayName(); + } else { + return UserFriendlyMaterialName(item); + } + } + + /** + * This function will return the number of items of this type + * that exist in your inventory. It will not include your + * equipment. + * @param p + * @param item + * @return + */ + public static int CountItems(Player p, ItemStack item) { + int totalcount=0; + for (int i=0;i lore = new ArrayList(); + if (meta.hasLore()) { + lore.addAll(meta.getLore()); + } + if (GenericFunctions.isArmor(item)) { + lore.add(ChatColor.BLUE+""+ChatColor.ITALIC+"Hardened Armor"); + lore.add(ChatColor.GRAY+"Twice as strong"); + } else + if (GenericFunctions.isTool(item)) { + lore.add(ChatColor.BLUE+""+ChatColor.ITALIC+"Hardened Weapon"); + lore.add(ChatColor.GRAY+"Twice as strong"); + } + lore.add(ChatColor.GRAY+"Breaks Remaining: "+ChatColor.YELLOW+breaks); + meta.setLore(lore); + item.setItemMeta(meta); + } + return item; + } + + public static boolean isHardenedItem(ItemStack item) { + if (item.hasItemMeta() && + item.getItemMeta().hasLore()) { + for (int i=0;i lore = new ArrayList(); lore.add(ChatColor.RED+"FORMING IN PROGRESS"); - lore.add(ChatColor.BLUE+"Base requires "+ChatColor.AQUA+"'"+TwosideKeeper.UserFriendlyMaterialName(new ItemStack(selectItem()))+"'"+ChatColor.BLUE+" to"); + lore.add(ChatColor.BLUE+"Base requires "+ChatColor.AQUA+"'"+GenericFunctions.UserFriendlyMaterialName(new ItemStack(selectItem()))+"'"+ChatColor.BLUE+" to"); lore.add(ChatColor.BLUE+"continue forming... "+ChatColor.GREEN+"(0/30)"); lore.add(ChatColor.BLUE+""+TwosideKeeper.getServerTickTime()); m.setLore(lore); @@ -66,7 +67,7 @@ public class MalleableBaseQuest { ItemMeta m = base.getItemMeta(); List lore = m.getLore(); lore.remove(1); - lore.add(1,ChatColor.BLUE+"Base requires "+ChatColor.AQUA+"'"+TwosideKeeper.UserFriendlyMaterialName(new ItemStack(selectItem()))+"'"+ChatColor.BLUE+" to"); + lore.add(1,ChatColor.BLUE+"Base requires "+ChatColor.AQUA+"'"+GenericFunctions.UserFriendlyMaterialName(new ItemStack(selectItem()))+"'"+ChatColor.BLUE+" to"); //Get the old quest progress. int progress = getCurrentProgress(base); lore.remove(2); diff --git a/src/sig/plugin/TwosideKeeper/HelperStructures/ShopPurchase.java b/src/sig/plugin/TwosideKeeper/HelperStructures/ShopPurchase.java index 65205d7..c45e482 100644 --- a/src/sig/plugin/TwosideKeeper/HelperStructures/ShopPurchase.java +++ b/src/sig/plugin/TwosideKeeper/HelperStructures/ShopPurchase.java @@ -6,7 +6,7 @@ import org.bukkit.ChatColor; import org.bukkit.entity.Player; import org.bukkit.inventory.ItemStack; -import sig.plugin.TwosideKeeper.TwosideKeeper; +import sig.plugin.TwosideKeeper.HelperStructures.Common.GenericFunctions; public class ShopPurchase { String player; @@ -18,7 +18,7 @@ public class ShopPurchase { public ShopPurchase(String p, Player customer, ItemStack item, double money, int amt) { player = p; this.customer=customer.getName(); - itemname = TwosideKeeper.GetItemName(item); + itemname = GenericFunctions.GetItemName(item); this.money = money; this.amt=amt; } diff --git a/src/sig/plugin/TwosideKeeper/HelperStructures/WorldShop.java b/src/sig/plugin/TwosideKeeper/HelperStructures/WorldShop.java index 5597e65..36f18a4 100644 --- a/src/sig/plugin/TwosideKeeper/HelperStructures/WorldShop.java +++ b/src/sig/plugin/TwosideKeeper/HelperStructures/WorldShop.java @@ -13,7 +13,7 @@ import org.bukkit.inventory.meta.EnchantmentStorageMeta; import org.bukkit.material.MaterialData; import org.bukkit.potion.PotionType; -import sig.plugin.TwosideKeeper.TwosideKeeper; +import sig.plugin.TwosideKeeper.HelperStructures.Common.GenericFunctions; public class WorldShop { ItemStack item; @@ -35,7 +35,7 @@ public class WorldShop { this.item.getItemMeta().hasDisplayName()) { return this.item.getItemMeta().getDisplayName(); } else { - return TwosideKeeper.UserFriendlyMaterialName(this.item); + return GenericFunctions.UserFriendlyMaterialName(this.item); } } public void UpdateAmount(int amt) { diff --git a/src/sig/plugin/TwosideKeeper/MonsterController.java b/src/sig/plugin/TwosideKeeper/MonsterController.java index 410e824..f8a5cb5 100644 --- a/src/sig/plugin/TwosideKeeper/MonsterController.java +++ b/src/sig/plugin/TwosideKeeper/MonsterController.java @@ -21,6 +21,7 @@ import org.bukkit.potion.PotionEffectType; import sig.plugin.TwosideKeeper.HelperStructures.ItemRarity; import sig.plugin.TwosideKeeper.HelperStructures.MonsterDifficulty; import sig.plugin.TwosideKeeper.HelperStructures.MonsterType; +import sig.plugin.TwosideKeeper.HelperStructures.Common.GenericFunctions; public class MonsterController { /** @@ -135,7 +136,7 @@ public class MonsterController { m.getEquipment().setHelmet(RandomizeEnchantments(m.getEquipment().getHelmet(),ItemRarity.RARE)); if (Math.random() playerdata; public static SpleefManager TwosideSpleefGames; @@ -212,14 +213,14 @@ public class TwosideKeeper extends JavaPlugin implements Listener { sig.plugin.TwosideKeeper.Recipes.Initialize_SlabReconstruction_Recipes(); filesave=getDataFolder(); //Store the location of where our data folder is. - getLogger().info("Data folder at "+filesave+"."); + log("Data folder at "+filesave+".",3); STARTTIME=Bukkit.getWorld("world").getFullTime(); LASTSERVERCHECK=getServerTickTime(); TwosideRecyclingCenter = new RecyclingCenter(); TwosideRecyclingCenter.loadConfig(); - Bukkit.getLogger().info("Recycling Centers Loaded: "+TwosideRecyclingCenter.getNumberOfNodes()); + log("Recycling Centers Loaded: "+TwosideRecyclingCenter.getNumberOfNodes(),3); //Create Spleef Games. TwosideSpleefGames = new SpleefManager(this); @@ -252,10 +253,15 @@ public class TwosideKeeper extends JavaPlugin implements Listener { //Initialize Player Data structure. playerdata = new ArrayList(); + //Let's not assume there are no players online. Load their data. + for (int i=0;i=12000) { Collection players = (Collection) getServer().getOnlinePlayers(); //Count the number of players sleeping. Compare to "sleepingplayers" count. - //getLogger().info("[DEBUG] Time: "+Bukkit.getWorld("world").getTime()+" Full Time: "+Bukkit.getWorld("world").getFullTime() + " SERVERTICKTIME: "+getServerTickTime()); + log("[DEBUG] Time: "+Bukkit.getWorld("world").getTime()+" Full Time: "+Bukkit.getWorld("world").getFullTime() + " SERVERTICKTIME: "+getServerTickTime(),4); if (players.size()>=2) { //This functionality only makes sense when two or more players are on. int sleeping=0; for (int i=0;i0) { + if (amt<=GenericFunctions.CountItems(ev.getPlayer(), current_session.getItem()) && amt>0) { current_session.SetAmt(amt); - ev.getPlayer().sendMessage("Input how much each "+ChatColor.GREEN+TwosideKeeper.GetItemName(current_session.getItem())+ChatColor.WHITE+" will cost:"); + ev.getPlayer().sendMessage("Input how much each "+ChatColor.GREEN+GenericFunctions.GetItemName(current_session.getItem())+ChatColor.WHITE+" will cost:"); current_session.SetSession(SessionState.PRICE); } else { if (amt<=0) { ev.getPlayer().sendMessage("You cannot sell a non-existent amount of items. Please try again."); } else { - ev.getPlayer().sendMessage("You only have "+CountItems(ev.getPlayer(), current_session.getItem())+" of "+ChatColor.GREEN+TwosideKeeper.GetItemName(current_session.getItem())+ChatColor.WHITE+". Please try again with a lower amount."); + ev.getPlayer().sendMessage("You only have "+GenericFunctions.CountItems(ev.getPlayer(), current_session.getItem())+" of "+ChatColor.GREEN+GenericFunctions.GetItemName(current_session.getItem())+ChatColor.WHITE+". Please try again with a lower amount."); } } } else { @@ -817,7 +826,7 @@ public class TwosideKeeper extends JavaPlugin implements Listener { DecimalFormat df = new DecimalFormat("0.00"); WorldShop shop = TwosideShops.LoadWorldShopData(TwosideShops.GetShopID(current_session.GetSign())); if (amt>=0) { - if (amt<=CountItems(ev.getPlayer(), shop.GetItem())) { + if (amt<=GenericFunctions.CountItems(ev.getPlayer(), shop.GetItem())) { shop.UpdateAmount(shop.GetAmount()+amt); RemoveItemAmount(ev.getPlayer(), shop.GetItem(), amt); TwosideShops.SaveWorldShopData(shop); @@ -830,7 +839,7 @@ public class TwosideKeeper extends JavaPlugin implements Listener { if (amt<=0) { ev.getPlayer().sendMessage("You cannot add a non-existent amount of items. Please try again."); } else { - ev.getPlayer().sendMessage("You only have "+CountItems(ev.getPlayer(), shop.GetItem())+" of "+ChatColor.GREEN+shop.GetItemName()+ChatColor.WHITE+". Please try again with a lower amount."); + ev.getPlayer().sendMessage("You only have "+GenericFunctions.CountItems(ev.getPlayer(), shop.GetItem())+" of "+ChatColor.GREEN+shop.GetItemName()+ChatColor.WHITE+". Please try again with a lower amount."); } } } else { @@ -865,7 +874,7 @@ public class TwosideKeeper extends JavaPlugin implements Listener { dropAmt=0; } } - Bukkit.getLogger().info("Dropped item."); + log("Dropped shop item.",5); //ev.getPlayer().getWorld().dropItemNaturally(ev.getPlayer().getLocation(), drop).setPickupDelay(0); TwosideShops.SaveWorldShopData(shop); TwosideShops.UpdateSign(shop, TwosideShops.GetShopID(current_session.GetSign()), current_session.GetSign()); @@ -987,12 +996,12 @@ public class TwosideKeeper extends JavaPlugin implements Listener { } } int pos = -1; - //getLogger().info(ev.getMessage()+" "+ev.getMessage().indexOf("[]")); + log(ev.getMessage()+" "+ev.getMessage().indexOf("[]"),5); if (ev.getMessage().indexOf("[]")>-1) { pos = ev.getMessage().indexOf("[]"); ev.setMessage(ev.getMessage().replace("[]", "")); - //getLogger().info("pos is "+pos+" message is: {"+ev.getMessage()+"}"); - Bukkit.dispatchCommand(Bukkit.getConsoleSender(),"tellraw @a [\"\",{\"text\":\"<"+ev.getPlayer().getName()+"> \"},{\"text\":\""+ev.getMessage().substring(0, pos)+"\"},{\"text\":\""+ChatColor.GREEN+"["+ChatColor.stripColor(TwosideKeeper.GetItemName(ev.getPlayer().getEquipment().getItemInMainHand()))+ChatColor.GREEN+"]"+ChatColor.WHITE+"\",\"hoverEvent\":{\"action\":\"show_text\",\"value\":\""+TwosideKeeper.GetItemName(ev.getPlayer().getEquipment().getItemInMainHand())+"\n"+WorldShop.GetItemInfo(ev.getPlayer().getEquipment().getItemInMainHand()).replace("\"", "\\\"")+"\"}},{\"text\":\""+ev.getMessage().substring(pos)+"\"}]"); + log("pos is "+pos+" message is: {"+ev.getMessage()+"}",5); + Bukkit.dispatchCommand(Bukkit.getConsoleSender(),"tellraw @a [\"\",{\"text\":\"<"+ev.getPlayer().getName()+"> \"},{\"text\":\""+ev.getMessage().substring(0, pos)+"\"},{\"text\":\""+ChatColor.GREEN+"["+ChatColor.stripColor(GenericFunctions.GetItemName(ev.getPlayer().getEquipment().getItemInMainHand()))+ChatColor.GREEN+"]"+ChatColor.WHITE+"\",\"hoverEvent\":{\"action\":\"show_text\",\"value\":\""+GenericFunctions.GetItemName(ev.getPlayer().getEquipment().getItemInMainHand())+"\n"+WorldShop.GetItemInfo(ev.getPlayer().getEquipment().getItemInMainHand()).replace("\"", "\\\"")+"\"}},{\"text\":\""+ev.getMessage().substring(pos)+"\"}]"); ev.setCancelled(true); } //Bukkit.dispatchCommand(Bukkit.getConsoleSender(),"tellraw @a [\"\",{\"text\":\""+ChatColor.GREEN+"[Item]"+ChatColor.WHITE+"\",\"hoverEvent\":{\"action\":\"show_text\",\"value\":\""+(ev.getPlayer().getEquipment().getItemInMainHand().getType())+"\"}},{\"text\":\" "+ev.getMessage().substring(0, pos)+" \"}]"); @@ -1003,7 +1012,7 @@ public class TwosideKeeper extends JavaPlugin implements Listener { @EventHandler(priority=EventPriority.LOW) public void onPlayerInteract(PlayerInteractEvent ev) { Block b = ev.getClickedBlock(); - //getLogger().info("Interacting "+ev.getAction().toString()); + log("Interaction type: "+ev.getAction().toString(),5); //Pass along this event to Spleef Games. TwosideSpleefGames.PassEvent(ev); @@ -1035,7 +1044,7 @@ public class TwosideKeeper extends JavaPlugin implements Listener { public void run() { if (player.isBlocking()) { //Give absorption hearts. - if (isDefender(player)) { + if (GenericFunctions.isDefender(player)) { player.addPotionEffect(new PotionEffect(PotionEffectType.ABSORPTION,200,1)); List entities = player.getNearbyEntities(16, 16, 16); @@ -1079,11 +1088,11 @@ public class TwosideKeeper extends JavaPlugin implements Listener { //0-8 are the hotbar slots. for (int i=0;i<=8;i++) { if (ev.getPlayer().getInventory().getItem(i)!=null) { - getLogger().info("Comparing "+ev.getPlayer().getInventory().getItem(i).getType()+" to "+ev.getPlayer().getInventory().getItem(i).getType()); + log("Malleable Base Quest: Comparing "+ev.getPlayer().getInventory().getItem(i).getType()+" to "+ev.getPlayer().getInventory().getItem(i).getType(),4); } - if (ev.getPlayer().getInventory().getItem(i)!=null && TwosideKeeper.UserFriendlyMaterialName(ev.getPlayer().getInventory().getItem(i)).equalsIgnoreCase(MalleableBaseQuest.getItem(ev.getPlayer().getEquipment().getItemInMainHand()))) { + if (ev.getPlayer().getInventory().getItem(i)!=null && GenericFunctions.UserFriendlyMaterialName(ev.getPlayer().getInventory().getItem(i)).equalsIgnoreCase(MalleableBaseQuest.getItem(ev.getPlayer().getEquipment().getItemInMainHand()))) { //This is good. Take one away from the player to continue the quest. - ev.getPlayer().sendMessage(ChatColor.YELLOW+"Success! Next Item..."); + log(ChatColor.YELLOW+"Success! Next Item...",5); ItemStack newitem = ev.getPlayer().getInventory().getItem(i); newitem.setAmount(ev.getPlayer().getInventory().getItem(i).getAmount()-1); ev.getPlayer().getInventory().setItem(i, newitem); @@ -1111,7 +1120,7 @@ public class TwosideKeeper extends JavaPlugin implements Listener { if (ev.getAction()==Action.RIGHT_CLICK_BLOCK && ev.getClickedBlock().getType()==Material.BED_BLOCK) { Location BedPos=ev.getClickedBlock().getLocation(); - getLogger().info("Right-clicked bed. Set bed spawn to "+BedPos.toString()); + log(ev.getPlayer()+" Right-clicked bed. Set bed spawn to "+BedPos.toString(),3); ev.getPlayer().setBedSpawnLocation(BedPos); ev.getPlayer().sendMessage(ChatColor.BLUE+""+ChatColor.ITALIC+"New bed respawn location set."); } @@ -1144,23 +1153,23 @@ public class TwosideKeeper extends JavaPlugin implements Listener { if (b!=null && (b.getType() == Material.SIGN || b.getType() == Material.SIGN_POST || b.getType() == Material.WALL_SIGN) && b.getState()!=null && (b.getState() instanceof Sign)) { - //getLogger().info("Got Here"); + log(b.getLocation().toString()+": This is a sign.",5); Sign s = (Sign)(b.getState()); //Determine if this is a shop sign. if (b.getType()==Material.WALL_SIGN && !TwosideShops.IsPlayerUsingTerminal(player)) { //Shop signs can only be wall signs. - getLogger().info("This is a wall sign."); + log("This is a wall sign.",5); if (s.getLine(0).equalsIgnoreCase("shop")) { - getLogger().info("This is a shop sign."); + log("This is a shop sign.",5); //Create a new shop. ItemStack item = player.getEquipment().getItemInMainHand(); if (item.getType()!=Material.AIR) { WorldShopSession ss = TwosideShops.AddSession(SessionState.CREATE, player, s); - player.sendMessage("Creating a shop to sell "+ChatColor.GREEN+TwosideKeeper.GetItemName(item)+ChatColor.WHITE+"."); + player.sendMessage("Creating a shop to sell "+ChatColor.GREEN+GenericFunctions.GetItemName(item)+ChatColor.WHITE+"."); int totalcount = 0; - totalcount = CountItems(player, item); - getLogger().info("We have "+totalcount+" items in our inventory."); + totalcount = GenericFunctions.CountItems(player, item); + log("We have "+totalcount+" items in our inventory.",4); ss.SetItem(item); player.sendMessage("How many of this item do you want to sell? "+ChatColor.GREEN+"(MAX: "+ChatColor.YELLOW+totalcount+ChatColor.GREEN+")"); } else { @@ -1169,7 +1178,7 @@ public class TwosideKeeper extends JavaPlugin implements Listener { } } else if (s.getLine(0).equalsIgnoreCase(ChatColor.BLUE+"-- SHOP --")) { - getLogger().info("This is a buy shop sign."); + log("This is a buy shop sign.",5); int shopID = TwosideShops.GetShopID(s); WorldShop shop = TwosideShops.LoadWorldShopData(shopID); @@ -1179,8 +1188,8 @@ public class TwosideKeeper extends JavaPlugin implements Listener { Collection entities = ev.getPlayer().getWorld().getNearbyEntities(newloc, 1, 1, 1); for (int i=0;i0) { @@ -1218,7 +1227,7 @@ public class TwosideKeeper extends JavaPlugin implements Listener { //Initiate buying session. TwosideShops.AddSession(SessionState.PURCHASE, player, s); - getLogger().info("Added a session."); + log("Added a shop session for "+player.getName()+".",4); shop.sendItemInfo(player); } else { player.sendMessage(ChatColor.GOLD+"Sorry! "+ChatColor.WHITE+"This shop is sold out! Let "+ChatColor.LIGHT_PURPLE+shop.GetOwner()+ChatColor.WHITE+" know to restock the shop!"); @@ -1327,7 +1336,7 @@ public class TwosideKeeper extends JavaPlugin implements Listener { } newDeathMsg=p.getName()+" "+newDeathMsg; ev.setDeathMessage(newDeathMsg); - //getLogger().info(ev.getDeathMessage()); + log("Death Message: "+ev.getDeathMessage(),5); if (p!=null) { p.sendMessage(ChatColor.GRAY+"Due to death, you lost "+DEATHPENALTY+"% of your holding money. "); givePlayerMoney(p,-Math.round(getPlayerMoney(p)/2)); @@ -1391,19 +1400,19 @@ public class TwosideKeeper extends JavaPlugin implements Listener { @EventHandler(priority=EventPriority.LOW) public void onItemCraft(CraftItemEvent ev) { - //getLogger().info(ev.getCurrentItem().getItemMeta().toString()); - //getLogger().info("Result item is "+ev.getInventory().getItem(0).toString()); + log(ev.getCurrentItem().getItemMeta().toString(),5); + log("Original Result item is "+ev.getInventory().getItem(0).toString(),4); //Item cube should be in slot 4. if (ev.getInventory().getItem(5)!=null) { ItemMeta inventory_itemMeta=ev.getInventory().getItem(5).getItemMeta(); if (inventory_itemMeta.hasLore() && inventory_itemMeta.getLore().size()==4) { - //getLogger().info("4 Elements detected."); + log("4 Elements detected.",5); String loreitem = inventory_itemMeta.getLore().get(3); - //getLogger().info("Lore data is: "+loreitem); + log("Lore data is: "+loreitem,5); if (loreitem!=null && loreitem.contains(ChatColor.DARK_PURPLE+"ID#")) { - //getLogger().info("This is an Item Cube. Invalidate recipe."); + log("This is an Item Cube. Invalidate recipe.",4); //This is an item cube. Invalidate the recipe. - //ev.getInventory().getItem(0).setType(Material.AIR); + ev.getInventory().getItem(0).setType(Material.AIR); ev.getWhoClicked().sendMessage(ChatColor.RED+"You cannot craft items with an Item Cube!"); ev.setCurrentItem(new ItemStack(Material.AIR)); } @@ -1503,7 +1512,7 @@ public class TwosideKeeper extends JavaPlugin implements Listener { List itemcube_contents = itemCube_loadConfig(id); for (int i=0;i0) { ev.getInventory().setItem(i, itemcube_contents.get(i)); } else { @@ -1571,7 +1580,7 @@ public class TwosideKeeper extends JavaPlugin implements Listener { ev.setCancelled(true); } if (ev.getInventory().getTitle().contains("Item Cube #")) { - //getLogger().info("Item Cube window identified."); + log("Item Cube window identified.",5); final int id=Integer.parseInt(ev.getInventory().getTitle().split("#")[1]); if (itemCube_getCubeType(id)==CubeType.ENDER) { ev.setCancelled(true); @@ -1602,7 +1611,7 @@ public class TwosideKeeper extends JavaPlugin implements Listener { if (((Player)ev.getEntity()).getSaturation()>0 && pd.saturation<20) { pd.saturation+=2; ((Player)ev.getEntity()).setSaturation(((Player)ev.getEntity()).getSaturation()-1); - getLogger().info("Saturation increased to "+pd.saturation+". Old saturation: "+((Player)ev.getEntity()).getSaturation()); + log("Saturation increased to "+pd.saturation+". Old saturation: "+((Player)ev.getEntity()).getSaturation(),4); } } } @@ -1630,7 +1639,7 @@ public class TwosideKeeper extends JavaPlugin implements Listener { if (pd.saturation>0) { pd.saturation--; ev.setFoodLevel(ev.getFoodLevel()+1); - getLogger().info("Saturation level is now "+(pd.saturation)+". Food level is now "+p.getFoodLevel()); + log("Saturation level is now "+(pd.saturation)+". Food level is now "+p.getFoodLevel(),4); } } } @@ -1641,7 +1650,7 @@ public class TwosideKeeper extends JavaPlugin implements Listener { @EventHandler(priority=EventPriority.LOW) public void onInventoryClick(InventoryClickEvent ev) { final Player player = (Player)ev.getWhoClicked(); - //Bukkit.getLogger().info("Clicked: "+ev.getRawSlot()); + log("Raw Slot Clicked: "+ev.getRawSlot(),5); Bukkit.getScheduler().scheduleSyncDelayedTask(this, new Runnable() { @Override public void run() { @@ -1687,7 +1696,7 @@ public class TwosideKeeper extends JavaPlugin implements Listener { slot=ev.getSlot(); } if (foundquiver) { - //getLogger().info("An arrow quiver was right clicked."); + log("An arrow quiver was right clicked.",4); //Continue. //Deposit the arrows we are holding. @@ -1720,7 +1729,7 @@ public class TwosideKeeper extends JavaPlugin implements Listener { slot=ev.getSlot(); } if (foundquiver) { - //getLogger().info("An arrow quiver was right clicked."); + log("An arrow quiver was right clicked.",4); //Continue. //Try to withdraw 64 arrows. int amt=playerGetArrowQuiverAmt(p, slot); @@ -1739,38 +1748,13 @@ public class TwosideKeeper extends JavaPlugin implements Listener { final InventoryClickEvent store = ev; if ((ev.getInventory().getType()!=InventoryType.WORKBENCH || (ev.getInventory().getType()==InventoryType.WORKBENCH && ev.getRawSlot()>9)) && ev.getInventory().getTitle().contains("Item Cube #")) { - //getLogger().info("Item Cube window identified."); + log("Item Cube window identified.",5); final int id=Integer.parseInt(ev.getInventory().getTitle().split("#")[1]); //Check to see if the cursor item is an item cube. Bukkit.getScheduler().scheduleSyncDelayedTask(this, new Runnable() { @Override public void run() { - /* - if ((store.getCursor().getType()==Material.CHEST || - store.getCursor().getType()==Material.STORAGE_MINECART || - store.getCursor().getType()==Material.ENDER_CHEST) && - store.getCursor().hasItemMeta() && - store.getCursor().getItemMeta().hasLore()) { - getLogger().info("The clicked item has lore..."); - for (int i=0;i itemlist = new ArrayList(); Bukkit.getScheduler().scheduleSyncDelayedTask(this, new Runnable() { @@ -1805,7 +1789,6 @@ public class TwosideKeeper extends JavaPlugin implements Listener { for (int i=0;i virtual_inventory = itemCube_loadConfig(idnumb); boolean stack_available=false; //Now we will see if there are any places to stack blocks on. int quantity=ev.getCursor().getAmount(); - //getLogger().info("Amount held: "+quantity); + log("Amount held: "+quantity,5); for (int i=0;ivirtual_inventory.get(i).getAmount()) { - //getLogger().info("Entered Loop"); + log("Entered Loop",5); //This is the same, and we have room to throw some in. int space=virtual_inventory.get(i).getMaxStackSize()-virtual_inventory.get(i).getAmount(); //How much space is here. - //getLogger().info("There is space for "+space+" blocks."); + log("There is space for "+space+" blocks.",5); if (space>=quantity) { //We are done, because we can store everything. virtual_inventory.get(i).setAmount(virtual_inventory.get(i).getAmount()+quantity); @@ -1940,7 +1923,7 @@ public class TwosideKeeper extends JavaPlugin implements Listener { final CubeType type = cubetype; if (itemCube_getCubeType(idnumb)==CubeType.ENDER) { - //getLogger().info("This is an Ender Item Cube transfer click."); + log("This is an Ender Item Cube transfer click.",5); //We are going to look at all players and see if they have this inventory open. final int id = idnumb; for (int j=0;j items = virtual_inventory; final CubeType type = cubetype; if (itemCube_getCubeType(idnumb)==CubeType.ENDER) { - //getLogger().info("This is an Ender Item Cube transfer click."); + log("This is an Ender Item Cube transfer click.",5); //We are going to look at all players and see if they have this inventory open. final int id = idnumb; for (int j=0;jev.getView().getTopInventory().getItem(i).getAmount()) { - //getLogger().info("Entered Loop"); + log("Entered Loop",5); //This is the same, and we have room to throw some in. int space=ev.getView().getTopInventory().getItem(i).getMaxStackSize()-ev.getView().getTopInventory().getItem(i).getAmount(); //How much space is here. - //getLogger().info("There is space for "+space+" blocks."); + log("There is space for "+space+" blocks.",5); if (space>=quantity) { //We are done, because we can store everything. ev.getView().getTopInventory().getItem(i).setAmount(ev.getView().getTopInventory().getItem(i).getAmount()+quantity); @@ -2055,7 +2038,7 @@ public class TwosideKeeper extends JavaPlugin implements Listener { final List items = itemlist; final CubeType type = cubetype; if (itemCube_getCubeType(idnumb)==CubeType.ENDER) { - //getLogger().info("This is an Ender Item Cube transfer click."); + log("This is an Ender Item Cube transfer click.",5); //We are going to look at all players and see if they have this inventory open. final int id = idnumb; for (int j=0;j itemlist = new ArrayList(); for (int j=0;j9)) && ev.isRightClick() && ev.getCurrentItem()!=null && ev.getCurrentItem().getAmount()==1) { - //getLogger().info(ev.getCurrentItem().toString()); + log("Clicked Item: "+ev.getCurrentItem().toString(),5); if (ev.getCurrentItem().hasItemMeta()) { - //getLogger().info("Item Meta: "+ev.getCurrentItem().getItemMeta().toString()); + log("Item Meta: "+ev.getCurrentItem().getItemMeta().toString(),5); ItemMeta item_meta = ev.getCurrentItem().getItemMeta(); if (item_meta.hasLore()) { List item_meta_lore = item_meta.getLore(); if (item_meta_lore.size()==4 && item_meta_lore.get(3).contains(ChatColor.DARK_PURPLE+"ID#")) { int idnumb = Integer.parseInt(item_meta_lore.get(3).split("#")[1]); - //getLogger().info("This is an Item Cube."); + log("This is an Item Cube.",5); List viewers = ev.getViewers(); for (int i=0;i=4) { if (Math.abs(arrowLoc.getY()-monsterHead.getY())<=0.165/HEADSHOT_ACC) { - //getLogger().info("Height discrepancy is good."); + log("Height discrepancy is good.",5); if (Math.abs(arrowLoc.getZ()-monsterHead.getZ())<=3.0/HEADSHOT_ACC && Math.abs(arrowLoc.getX()-monsterHead.getX())<=3.0/HEADSHOT_ACC) { ev.setDamage(ev.getDamage()*8.0); @@ -2573,10 +2556,6 @@ public class TwosideKeeper extends JavaPlugin implements Listener { @EventHandler(priority=EventPriority.LOW) public void monsterDeathEvent(final EntityDeathEvent ev) { - /* - for (int i=0;i0) { + if (GenericFunctions.getHardenedItemBreaks(item)>0) { //item.setAmount(1); - breakHardenedItem(item); + GenericFunctions.breakHardenedItem(item); } else { p.sendMessage(ChatColor.DARK_RED+"Your "+ChatColor.YELLOW+item.getType().toString().replaceAll("_", " ")+ChatColor.DARK_RED+" has broken!"); @@ -3363,7 +3342,7 @@ public class TwosideKeeper extends JavaPlugin implements Listener { Player p = ev.getPlayer(); if (p!=null) { - getLogger().info(p.getName()+" has broken block "+TwosideKeeper.UserFriendlyMaterialName(new ItemStack(ev.getBlock().getType()))); + log(p.getName()+" has broken block "+GenericFunctions.UserFriendlyMaterialName(new ItemStack(ev.getBlock().getType())),3); } if (ev.getBlock().getType()==Material.WALL_SIGN) { @@ -3398,11 +3377,11 @@ public class TwosideKeeper extends JavaPlugin implements Listener { for (int i=0;i arrow_quiver_lore = new ArrayList(); @@ -3634,6 +3612,7 @@ public class TwosideKeeper extends JavaPlugin implements Listener { getConfig().set("PARTY_CHUNK_SIZE", PARTY_CHUNK_SIZE); getConfig().set("XP_CONVERSION_RATE", XP_CONVERSION_RATE); getConfig().set("WORLD_SHOP_ID", WORLD_SHOP_ID); + getConfig().set("LOGGING_LEVEL", LOGGING_LEVEL); //getConfig().set("MOTD", MOTD); //It makes no sense to save the MOTD as it will never be modified in-game. saveConfig(); @@ -3642,7 +3621,7 @@ public class TwosideKeeper extends JavaPlugin implements Listener { //Save user configs here too. saveAllUserConfigs(); - getLogger().info("[TASK] Configurations have been saved successfully."); + log("[TASK] Configurations have been saved successfully.",3); } public void saveAllUserConfigs() { @@ -3679,6 +3658,7 @@ public class TwosideKeeper extends JavaPlugin implements Listener { getConfig().addDefault("PARTY_CHUNK_SIZE", PARTY_CHUNK_SIZE); getConfig().addDefault("XP_CONVERSION_RATE", XP_CONVERSION_RATE); getConfig().addDefault("WORLD_SHOP_ID", WORLD_SHOP_ID); + getConfig().addDefault("LOGGING_LEVEL", LOGGING_LEVEL); getConfig().options().copyDefaults(true); saveConfig(); SERVERTICK = getConfig().getLong("SERVERTICK"); @@ -3705,6 +3685,7 @@ public class TwosideKeeper extends JavaPlugin implements Listener { PARTY_CHUNK_SIZE = getConfig().getInt("PARTY_CHUNK_SIZE"); XP_CONVERSION_RATE = getConfig().getDouble("XP_CONVERSION_RATE"); WORLD_SHOP_ID = getConfig().getInt("WORLD_SHOP_ID"); + LOGGING_LEVEL = getConfig().getInt("LOGGING_LEVEL"); getMOTD(); //Informational reports to the console. @@ -3722,9 +3703,10 @@ public class TwosideKeeper extends JavaPlugin implements Listener { getLogger().info("[CONFIG] Rare Drop Rate is currently "+(RARE_DROP_RATE*100)+"%"); getLogger().info("[CONFIG] Party Chunk Size Detection is set to "+(PARTY_CHUNK_SIZE)+" chunks."); getLogger().info("[CONFIG] XP Conversion rate is $"+XP_CONVERSION_RATE+" per XP Point."); - getLogger().info("----------TwosideKeeper----------"); - getLogger().info("You are running version _"+Bukkit.getPluginManager().getPlugin("TwosideKeeper").getDescription().getVersion()+"_ of TwosideKeeper."); - getLogger().info("---------------------------------"); + getLogger().info("[CONFIG] Console Logging Level set to "+LOGGING_LEVEL+"."); + log("----------TwosideKeeper----------",5); + log("You are running version _"+Bukkit.getPluginManager().getPlugin("TwosideKeeper").getDescription().getVersion()+"_ of TwosideKeeper.",5); + log("---------------------------------",5); } public void getMOTD() { @@ -3856,7 +3838,6 @@ public class TwosideKeeper extends JavaPlugin implements Listener { boolean isHungry=(p.getFoodLevel()<=16)?true:false; boolean inNether=(p.getWorld().getName().equalsIgnoreCase("world_nether"))?true:false; boolean inEnd=(p.getWorld().getName().equalsIgnoreCase("world_the_end"))?true:false; - //getLogger().info(p.getWorld().getName().toString()); int absorptionlv=0; for (int i=0;i0) { - //getLogger().info("Monster "+target.getEntityId()+" has Protection "+monsterEquipment[i].getEnchantmentLevel(Enchantment.PROTECTION_ENVIRONMENTAL)); + log("Monster "+target.getEntityId()+" has Protection "+monsterEquipment[i].getEnchantmentLevel(Enchantment.PROTECTION_ENVIRONMENTAL),4); protectionlevel+=monsterEquipment[i].getEnchantmentLevel(Enchantment.PROTECTION_ENVIRONMENTAL); //Protection is 1% damage reduction per level of protection. } @@ -4455,7 +4436,7 @@ public class TwosideKeeper extends JavaPlugin implements Listener { for (int i=0;i player_effects = p.getActivePotionEffects(); for (int i=0;i0) { partylevel = playerdata.get(j).partybonus; - getLogger().info("Party level is "+partylevel); + log("Party level is "+partylevel,5); if (partylevel>9) {partylevel=9;} } } @@ -4491,19 +4472,19 @@ public class TwosideKeeper extends JavaPlugin implements Listener { if (p.getEquipment().getItemInMainHand()!=null) { if (p.getEquipment().getItemInMainHand().getEnchantmentLevel(Enchantment.DAMAGE_ALL)>0) { sharpnesslevel+=p.getEquipment().getItemInMainHand().getEnchantmentLevel(Enchantment.DAMAGE_ALL); - //getLogger().info("Player "+p.getName()+" has Sharpness "+p.getEquipment().getItemInMainHand().getEnchantmentLevel(Enchantment.DAMAGE_ALL)+"."); + log("Player "+p.getName()+" has Sharpness "+p.getEquipment().getItemInMainHand().getEnchantmentLevel(Enchantment.DAMAGE_ALL)+".",5); } else if ((target.getType()==EntityType.ZOMBIE || target.getType()==EntityType.PIG_ZOMBIE || target.getType()==EntityType.WITHER || target.getType()==EntityType.SKELETON) && p.getEquipment().getItemInMainHand().getEnchantmentLevel(Enchantment.DAMAGE_UNDEAD)>0) { sharpnesslevel+=p.getEquipment().getItemInMainHand().getEnchantmentLevel(Enchantment.DAMAGE_ALL)*2; - //getLogger().info("Player "+p.getName()+" has Smite "+p.getEquipment().getItemInMainHand().getEnchantmentLevel(Enchantment.DAMAGE_ALL)+"."); + log("Player "+p.getName()+" has Smite "+p.getEquipment().getItemInMainHand().getEnchantmentLevel(Enchantment.DAMAGE_ALL)+".",5); } else if ((target.getType()==EntityType.SPIDER || target.getType()==EntityType.CAVE_SPIDER || target.getType()==EntityType.SILVERFISH || target.getType()==EntityType.ENDERMITE) && p.getEquipment().getItemInMainHand().getEnchantmentLevel(Enchantment.DAMAGE_UNDEAD)>0) { sharpnesslevel+=p.getEquipment().getItemInMainHand().getEnchantmentLevel(Enchantment.DAMAGE_ALL)*2; - //getLogger().info("Player "+p.getName()+" has Bane of Arthropods "+p.getEquipment().getItemInMainHand().getEnchantmentLevel(Enchantment.DAMAGE_ALL)+"."); + log("Player "+p.getName()+" has Bane of Arthropods "+p.getEquipment().getItemInMainHand().getEnchantmentLevel(Enchantment.DAMAGE_ALL)+".",5); } } @@ -4527,7 +4508,7 @@ public class TwosideKeeper extends JavaPlugin implements Listener { *((100-protectionlevel)*0.01) *((hasShield)?0.95:1.00); //Calculated damage amount. - getLogger().info("Final damage is "+dmgamt); + log("Final damage is "+dmgamt,3); final LivingEntity pp = p; final LivingEntity m = target; @@ -4537,21 +4518,6 @@ public class TwosideKeeper extends JavaPlugin implements Listener { } else { m.setHealth(0.0); } - /* - Bukkit.getScheduler().scheduleSyncDelayedTask(this, new Runnable() { - public void run() { - if (m!=null) { - //getLogger().info(pp.getName()+" Dealt "+dmgamt+" modified dmg to "+m.getName()+"."); - //m.damage(dmgamt); //Finally, damage the enemy. - if (m.getHealth()>dmgamt) { - m.setHealth(m.getHealth()-dmgamt); - } else { - m.setHealth(0.0); - } - getLogger().info(m.getKiller().getName()); - } - }} - ,1);*/ } public double CalculateDamageReduction(double basedmg,LivingEntity target,Entity damager) { @@ -4564,7 +4530,6 @@ public class TwosideKeeper extends JavaPlugin implements Listener { for (int i=0;i0) { @@ -4577,7 +4542,7 @@ public class TwosideKeeper extends JavaPlugin implements Listener { protectionlevel+=armor[i].getEnchantmentLevel(Enchantment.PROTECTION_EXPLOSIONS); } - boolean isBlockArmor = IsBlockArmor(armor[i]); + boolean isBlockArmor = GenericFunctions.isHardenedItem(armor[i]); switch (armor[i].getType()) { case LEATHER_BOOTS: case LEATHER_LEGGINGS: @@ -4612,7 +4577,7 @@ public class TwosideKeeper extends JavaPlugin implements Listener { for (int i=0;i lore = new ArrayList(); - if (meta.hasLore()) { - lore.addAll(meta.getLore()); - } - if (isArmor(item)) { - lore.add(ChatColor.BLUE+""+ChatColor.ITALIC+"Hardened Armor"); - lore.add(ChatColor.GRAY+"Twice as strong"); - } else - if (isTool(item)) { - lore.add(ChatColor.BLUE+""+ChatColor.ITALIC+"Hardened Weapon"); - lore.add(ChatColor.GRAY+"Twice as strong"); - } - lore.add(ChatColor.GRAY+"Breaks Remaining: "+ChatColor.YELLOW+breaks); - meta.setLore(lore); - item.setItemMeta(meta); - } - return item; - } - - /** - * This function will return the number of items of this type - * that exist in your inventory. It will not include your - * equipment. - * @param p - * @param item - * @return - */ - public static int CountItems(Player p, ItemStack item) { - int totalcount=0; - for (int i=0;i='a') { - first = (char)(temp[i].charAt(0)-32); - } else { - first = temp[i].charAt(0); - } - finalname+=(finalname.equals("")?"":" ")+first+temp[i].toLowerCase().substring(1); - } - return finalname; - } else { - if (s.charAt(0)>='a') { - char first = (char)(s.charAt(0)-32); - return first+s.toLowerCase().substring(1); - } else { - char first = (char)(s.charAt(0)); - return first+s.toLowerCase().substring(1); - } - } - } - public static int getHardenedItemBreaks(ItemStack item) { - if (item.hasItemMeta() && - item.getItemMeta().hasLore()) { - ItemMeta item_meta = item.getItemMeta(); - int breaks_remaining=-1; - int loreline=-1; - for (int i=0;i0) { - ItemMeta m = item.getItemMeta(); - List lore = item.getItemMeta().getLore(); - for (int i=0;i=loglv) { + switch (loglv) { + case 0: { + //Only game breaking messages appear in level 0. + Bukkit.getLogger().severe(logmessage); + }break; + case 1: { + //Only warning messages appear in level 1. + Bukkit.getLogger().warning(logmessage); + }break; + case 2: { + //Regular Gameplay information can appear here. + Bukkit.getLogger().info(logmessage); + }break; + case 3: { + //Debug messages that generalize the events happening in the world. + Bukkit.getLogger().info(logmessage); + }break; + case 4: { + //Debug messages that define the specifics of an event happening, including logic / number calculations. + Bukkit.getLogger().info(logmessage); + }break; + case 5: { + //All messages possible. This may include messages that have very distinct purposes. + Bukkit.getLogger().info(logmessage); + }break; } } } diff --git a/src/sig/plugin/TwosideKeeper/TwosideKeeperAPI.java b/src/sig/plugin/TwosideKeeper/TwosideKeeperAPI.java index d189db4..77ce233 100644 --- a/src/sig/plugin/TwosideKeeper/TwosideKeeperAPI.java +++ b/src/sig/plugin/TwosideKeeper/TwosideKeeperAPI.java @@ -8,6 +8,7 @@ import org.bukkit.inventory.ItemStack; import sig.plugin.TwosideKeeper.HelperStructures.MonsterDifficulty; import sig.plugin.TwosideKeeper.HelperStructures.MonsterType; +import sig.plugin.TwosideKeeper.HelperStructures.Common.GenericFunctions; public final class TwosideKeeperAPI { //MONEY COMMANDS. @@ -57,17 +58,17 @@ public final class TwosideKeeperAPI { //Hardened Item Commands. public static boolean isHardenedItem(ItemStack i) { - return TwosideKeeper.isHardenedItem(i); + return GenericFunctions.isHardenedItem(i); } public static int getHardenedItemBreaks(ItemStack i) { - return TwosideKeeper.getHardenedItemBreaks(i); + return GenericFunctions.getHardenedItemBreaks(i); } public static ItemStack breakHardenedItem(ItemStack i) { - return TwosideKeeper.breakHardenedItem(i); + return GenericFunctions.breakHardenedItem(i); } //Friendly Name COMMANDS. public static String getLocalizedItemName(ItemStack i) { - return TwosideKeeper.UserFriendlyMaterialName(i); + return GenericFunctions.UserFriendlyMaterialName(i); } } diff --git a/src/sig/plugin/TwosideKeeper/WorldShopManager.java b/src/sig/plugin/TwosideKeeper/WorldShopManager.java index ed3b8f6..7715864 100644 --- a/src/sig/plugin/TwosideKeeper/WorldShopManager.java +++ b/src/sig/plugin/TwosideKeeper/WorldShopManager.java @@ -19,6 +19,7 @@ import sig.plugin.TwosideKeeper.HelperStructures.SessionState; import sig.plugin.TwosideKeeper.HelperStructures.ShopPurchase; import sig.plugin.TwosideKeeper.HelperStructures.WorldShop; import sig.plugin.TwosideKeeper.HelperStructures.WorldShopSession; +import sig.plugin.TwosideKeeper.HelperStructures.Common.GenericFunctions; public class WorldShopManager { List sessions = new ArrayList(); @@ -56,7 +57,7 @@ public class WorldShopManager { shop.GetItem().getItemMeta().hasDisplayName()) { sign_lines.add(shop.GetItem().getItemMeta().getDisplayName()); } else { - sign_lines.add(TwosideKeeper.UserFriendlyMaterialName(shop.GetItem())); + sign_lines.add(GenericFunctions.UserFriendlyMaterialName(shop.GetItem())); } DecimalFormat df = new DecimalFormat("0.00"); sign_lines.add("$"+df.format(shop.GetUnitPrice())+ChatColor.DARK_BLUE+" [x"+shop.GetAmount()+"]");