From 53267fadcf5b5e303846b928796479189958e384 Mon Sep 17 00:00:00 2001 From: Nonoriri Date: Tue, 26 Nov 2013 02:11:34 -0500 Subject: [PATCH] Thanksgiving event added. Use /event thanksgiving to toggle. Eggs give a small amount of XP when thrown and generate a random item. Cooked chicken (turkey) gives speed, saturation, and health boost for 15 minutes. Monsters have a small (0.5%) chance of dropping loot chests. Loot chests contain a single random item equivalent to boss loot. --- BankEconomyMod/src/me/kaZep/Base/Main.java | 23 +- .../src/me/kaZep/Base/PlayerListener.java | 563 +++++++++++++++++- .../me/kaZep/Commands/commandBankEconomy.java | 28 +- 3 files changed, 610 insertions(+), 4 deletions(-) diff --git a/BankEconomyMod/src/me/kaZep/Base/Main.java b/BankEconomyMod/src/me/kaZep/Base/Main.java index 5bb15a8..3924258 100644 --- a/BankEconomyMod/src/me/kaZep/Base/Main.java +++ b/BankEconomyMod/src/me/kaZep/Base/Main.java @@ -56,6 +56,7 @@ import org.bukkit.entity.Monster; import org.bukkit.entity.PigZombie; import org.bukkit.entity.Player; import org.bukkit.entity.Sheep; +import org.bukkit.entity.Skeleton; import org.bukkit.entity.Wither; import org.bukkit.entity.Zombie; import org.bukkit.inventory.Inventory; @@ -338,7 +339,7 @@ public class Main extends JavaPlugin //Add Recipe for pocket crafting table ItemStack table = new ItemStack(Material.WORKBENCH); - ItemMeta table_name = water.getItemMeta(); + ItemMeta table_name = table.getItemMeta(); table_name.setDisplayName(ChatColor.YELLOW+"Pocket Crafting Table"); List tablelore = new ArrayList(); @@ -1353,6 +1354,11 @@ public void runTick() { } i.setTicksLived(3600); } + if (getConfig().getBoolean("thanksgiving-enabled") && Bukkit.getWorld("world").hasStorm() && Main.SERVER_TICK_TIME%160==0) { + Item i = null; + i=Bukkit.getWorld("world").dropItemNaturally(p.getLocation().add((int)(Math.random()*20)-(int)(Math.random()*20), 256, (int)(Math.random()*20)-(int)(Math.random()*20)),new ItemStack(Material.EGG)); + i.setTicksLived(3600); + } if (Main.SERVER_TICK_TIME%90==0) { for (int i=-15;i<=15;i++) { for (int j=-15;j<=15;j++) { @@ -2041,6 +2047,7 @@ public void runTick() { } } } + } } catch (ConcurrentModificationException ex_e) { Bukkit.getLogger().warning("Could not check nearby entities in the nether."); @@ -4769,7 +4776,19 @@ public void payDay(int time) } return false; } - + + public boolean is_LootChest(ItemStack chest) { + if (chest.hasItemMeta() && chest.getItemMeta().hasLore()) { + //Check to see if the Lore contains anything. + for (int i=0;i chestlore = new ArrayList(); + chestlore.add(ChatColor.GRAY+""+ChatColor.ITALIC+"A mysterious chest!"); + chestlore.add(ChatColor.GRAY+""+ChatColor.ITALIC+""); + chestlore.add(ChatColor.GRAY+""+ChatColor.ITALIC+"It feels heavy; there"); + chestlore.add(ChatColor.GRAY+""+ChatColor.ITALIC+"might be items inside."); + chest_name.setLore(chestlore); + + chest.setItemMeta(chest_name); + + f.getWorld().dropItemNaturally(f.getLocation(), chest); + } //if (Math.random()<=0.005) { /* if (Math.random()<=0.005) { @@ -9069,6 +9107,19 @@ implements Listener e.setCancelled(true); return; } + if (this.plugin.is_LootChest(e.getItemInHand())) { + e.setCancelled(true); + if (e.getItemInHand().getAmount() > 1) { + e.getItemInHand().setAmount(e.getItemInHand().getAmount() - 1); + } else { + e.getPlayer().setItemInHand(null); + } + e.getPlayer().getWorld().dropItemNaturally(e.getBlockPlaced().getLocation(), getGoodie()); + p.sendMessage(ChatColor.GREEN+"You open the chest and find treasure inside!"); + p.playSound(p.getLocation(), Sound.ORB_PICKUP, 10, 1); + p.updateInventory(); + return; + } return; } @@ -10928,6 +10979,9 @@ implements Listener )) { allow=false; } + if (this.plugin.getConfig().getBoolean("thanksgiving-enabled") && i.getItemStack().getType()==Material.EGG) { + allow=false; + } if (i.getItemStack().getType()==Material.BEDROCK) { //Add a hard check. allow=false; } @@ -11139,6 +11193,500 @@ implements Listener } } + @EventHandler + public void onEggThrow(ProjectileHitEvent e) { + LivingEntity l = e.getEntity().getShooter(); + if (l!=null && l.getType()==EntityType.PLAYER && e.getEntity().getType() == EntityType.EGG && this.plugin.getConfig().getBoolean("thanksgiving-enabled")) { + // Threw an egg during thanksgiving. Generate loot. + Location loc = e.getEntity().getLocation(); + ItemStack item = null; + + switch ((int)(Math.random()*111.01)) { + case 0:{ + item = new ItemStack(Material.WOOD_HOE); + }break; + case 1:{ + item = new ItemStack(Material.WOOD_AXE); + }break; + case 2:{ + item = new ItemStack(Material.WOOD_SWORD); + }break; + case 3:{ + item = new ItemStack(Material.WOOD_SPADE); + }break; + case 4:{ + item = new ItemStack(Material.WOOD_PICKAXE); + }break; + case 5:{ + item = new ItemStack(Material.SIGN); + }break; + case 6: + case 7: + case 8: + case 9: + case 10:{ + item = new ItemStack(Material.STICK); + }break; + case 11: + case 12: + case 13: + case 14: + case 15: + case 16:{ + item = new ItemStack(Material.DIRT); + }break; + case 17: + case 18: + case 19:{ + item = new ItemStack(Material.GRASS); + }break; + case 20: + case 21: + case 22:{ + item = new ItemStack(Material.GRAVEL); + }break; + case 23:{ + item = new ItemStack(Material.PUMPKIN); + }break; + case 24:{ + item = new ItemStack(Material.SOUL_SAND); + }break; + case 25: + case 26:{ + item = new ItemStack(Material.NETHERRACK); + }break; + case 27:{ + item = new ItemStack(Material.BONE); + }break; + case 28: + case 29:{ + item = new ItemStack(Material.ROTTEN_FLESH); + }break; + case 30:{ + item = new ItemStack(Material.GRILLED_PORK); + }break; + case 31:{ + item = new ItemStack(Material.COOKED_BEEF); + }break; + case 32:{ + item = new ItemStack(Material.COOKED_FISH); + }break; + case 33: + case 34:{ + item = new ItemStack(Material.APPLE); + }break; + case 35: + case 36:{ + item = new ItemStack(Material.BREAD); + }break; + case 37:{ + item = new ItemStack(Material.CAKE); + }break; + case 38:{ + item = new ItemStack(Material.PAPER); + }break; + case 39: + case 40:{ + item = new ItemStack(Material.SUGAR_CANE); + }break; + case 41:{ + item = new ItemStack(Material.SUGAR); + }break; + case 42:{ + item = new ItemStack(Material.FEATHER); + }break; + case 43:{ + item = new ItemStack(Material.WOOD); + }break; + case 44:{ + item = new ItemStack(Material.LOG); + }break; + case 45: + case 46:{ + item = new ItemStack(Material.CLAY_BALL); + }break; + case 47:{ + item = new ItemStack(Material.CLAY); + }break; + case 48:{ + item = new ItemStack(Material.SLIME_BALL); + }break; + case 49:{ + item = new ItemStack(Material.REDSTONE); + }break; + case 50:{ + item = new ItemStack(Material.GLOWSTONE_DUST); + }break; + case 51:{ + item = new ItemStack(Material.COAL); + }break; + case 52:{ + item = new ItemStack(Material.FERMENTED_SPIDER_EYE); + }break; + case 53:{ + item = new ItemStack(Material.IRON_INGOT); + }break; + case 54:{ + item = new ItemStack(Material.GOLD_NUGGET); + }break; + case 55:{ + item = new ItemStack(Material.FLINT); + }break; + case 56:{ + item = new ItemStack(Material.ARROW); + }break; + case 57:{ + item = new ItemStack(Material.SAPLING); + }break; + case 58:{ + item = new ItemStack(Material.POTATO_ITEM); + }break; + case 59:{ + item = new ItemStack(Material.CARROT_ITEM); + }break; + case 60:{ + item = new ItemStack(Material.PORK); + }break; + case 61:{ + item = new ItemStack(Material.FLOWER_POT_ITEM); + }break; + case 62:{ + item = new ItemStack(Material.RAW_BEEF); + }break; + case 63:{ + item = new ItemStack(Material.RAW_FISH); + }break; + case 64:{ + item = new ItemStack(Material.MELON); + }break; + case 65:{ + item = new ItemStack(Material.CACTUS); + }break; + case 66:{ + item = new ItemStack(Material.LEATHER); + }break; + case 67:{ + item = new ItemStack(Material.STRING); + }break; + case 68:{ + item = new ItemStack(Material.WOOL); + }break; + case 69:{ + item = new ItemStack(Material.QUARTZ); + }break; + case 70: + case 71: + case 72: + case 73: + case 74: + case 75: + case 76: + case 77: + case 78: + case 79:{ + item = new ItemStack(Material.TORCH); + }break; + case 80: + case 81: + case 82:{ + item = new ItemStack(Material.SAND); + }break; + case 83:{ + item = new ItemStack(Material.SANDSTONE); + }break; + case 84:{ + item = new ItemStack(Material.GLASS); + }break; + case 85:{ + item = new ItemStack(Material.GLASS_BOTTLE); + }break; + case 86:{ + item = new ItemStack(Material.SULPHUR); + }break; + case 87:{ + item = new ItemStack(Material.INK_SACK); + }break; + case 88:{ + item = new ItemStack(Material.BRICK); + }break; + case 89:{ + item = new ItemStack(Material.BOOK); + }break; + case 90:{ + item = new ItemStack(Material.RED_MUSHROOM); + }break; + case 91:{ + item = new ItemStack(Material.BROWN_MUSHROOM); + }break; + case 92:{ + item = new ItemStack(Material.SNOW_BALL); + }break; + case 93:{ + item = new ItemStack(Material.FENCE); + }break; + case 94:{ + item = new ItemStack(Material.NETHER_BRICK_ITEM); + }break; + case 95:{ + item = new ItemStack(Material.WATER_LILY); + }break; + case 96:{ + item = new ItemStack(Material.COBBLESTONE); + }break; + case 97:{ + item = new ItemStack(Material.STONE); + }break; + case 98:{ + item = new ItemStack(Material.VINE); + }break; + case 99:{ + item = new ItemStack(Material.WHEAT); + }break; + case 100: + case 101: + case 102: + case 103: + case 104:{ + // Uncommon items here + switch((int)(Math.random() * 40)){ + case 0:{ + item = new ItemStack(Material.WATCH); + }break; + case 1:{ + item = new ItemStack(Material.WORKBENCH); + }break; + case 2:{ + item = new ItemStack(Material.FURNACE); + }break; + case 3:{ + item = new ItemStack(Material.REDSTONE_ORE); + }break; + case 4:{ + item = new ItemStack(Material.ANVIL); + }break; + case 5:{ + item = new ItemStack(Material.CAULDRON); + }break; + case 6:{ + item = new ItemStack(Material.ENDER_CHEST); + }break; + case 7:{ + item = new ItemStack(Material.GLOWSTONE); + }break; + case 8:{ + item = new ItemStack(Material.LAVA_BUCKET); + }break; + case 9:{ + item = new ItemStack(Material.QUARTZ_BLOCK); + }break; + case 10:{ + item = new ItemStack(Material.LAPIS_ORE); + }break; + case 11:{ + item = new ItemStack(Material.CHEST); + }break; + case 12:{ + item = new ItemStack(Material.TRAPPED_CHEST); + }break; + case 13:{ + item = new ItemStack(Material.NETHER_STALK); + }break; + case 14:{ + item = new ItemStack(Material.COMPASS); + }break; + case 15:{ + item = new ItemStack(Material.IRON_DOOR); + }break; + case 16:{ + item = new ItemStack(Material.COAL_ORE); + }break; + case 17:{ + item = new ItemStack(Material.JUKEBOX); + }break; + case 18:{ + item = new ItemStack(Material.ENCHANTMENT_TABLE); + }break; + case 19:{ + item = new ItemStack(Material.BOOKSHELF); + }break; + case 20:{ + item = new ItemStack(Material.DISPENSER); + }break; + case 21:{ + item = new ItemStack(Material.DIODE); + }break; + case 22:{ + item = new ItemStack(Material.MINECART); + }break; + case 23:{ + item = new ItemStack(Material.ITEM_FRAME); + }break; + case 24:{ + item = new ItemStack(Material.BREWING_STAND_ITEM); + }break; + case 25:{ + item = new ItemStack(Material.HOPPER); + }break; + case 26:{ + item = new ItemStack(Material.DAYLIGHT_DETECTOR); + }break; + case 27:{ + item = new ItemStack(Material.PISTON_BASE); + }break; + case 28:{ + item = new ItemStack(Material.RAILS); + }break; + case 29:{ + item = new ItemStack(Material.POWERED_RAIL); + }break; + case 30:{ + item = new ItemStack(Material.DETECTOR_RAIL); + }break; + case 31:{ + item = new ItemStack(Material.ICE); + }break; + case 32:{ + item = new ItemStack(Material.TNT); + }break; + case 33:{ + item = new ItemStack(Material.LADDER); + }break; + case 34:{ + item = new ItemStack(Material.MAGMA_CREAM); + }break; + case 35:{ + item = new ItemStack(Material.FIREBALL); + }break; + case 36:{ + item = new ItemStack(Material.FLINT_AND_STEEL); + }break; + case 37:{ + item = new ItemStack(Material.FENCE_GATE); + }break; + case 38:{ + item = new ItemStack(Material.FISHING_ROD); + }break; + case 39:{ + item = new ItemStack(Material.BED); + }break; + } + }break; + case 105:{ + item = new ItemStack(Material.OBSIDIAN); + }break; + case 106:{ + // Rare items here + switch((int)(Math.random() * 20)){ + case 0:{ + item = new ItemStack(Material.MYCEL); + }break; + case 1:{ + item = new ItemStack(Material.EMERALD); + }break; + case 2:{ + item = new ItemStack(Material.DIAMOND); + }break; + case 3:{ + item = new ItemStack(Material.GOLD_INGOT); + }break; + case 4:{ + item = new ItemStack(Material.GOLDEN_APPLE); + }break; + case 5:{ + item = new ItemStack(Material.GOLDEN_CARROT); + }break; + case 6:{ + item = new ItemStack(Material.IRON_BARDING); + }break; + case 7:{ + item = new ItemStack(Material.IRON_AXE); + }break; + case 8:{ + item = new ItemStack(Material.IRON_PICKAXE); + }break; + case 9:{ + item = new ItemStack(Material.IRON_SPADE); + }break; + case 10:{ + item = new ItemStack(Material.IRON_SWORD); + }break; + case 11:{ + item = new ItemStack(Material.ENDER_STONE); + }break; + case 12:{ + item = new ItemStack(Material.NAME_TAG); + }break; + case 13:{ + item = new ItemStack(Material.REDSTONE_COMPARATOR); + }break; + case 14:{ + item = new ItemStack(Material.GHAST_TEAR); + }break; + case 15:{ + item = new ItemStack(Material.EMPTY_MAP); + }break; + case 16:{ + item = new ItemStack(Material.GOLD_BARDING); + }break; + case 17:{ + item = new ItemStack(Material.DIAMOND_SWORD); + }break; + case 18:{ + item = new ItemStack(Material.DIAMOND_SPADE); + }break; + case 19:{ + item = new ItemStack(Material.DIAMOND_PICKAXE); + }break; + case 20:{ + // ULTRA RARES WHOO + switch((int)(Math.random() * 25)){ + case 0:{ + item = new ItemStack(Material.DIAMOND_BARDING); + }break; + case 1: + case 2: + case 3:{ + item = new ItemStack(Material.SKULL_ITEM); + item.setData(new MaterialData(Material.SKULL_ITEM, (byte) 1)); + }break; + case 4:{ + item = new ItemStack(Material.BEACON); + }break; + case 5:{ + item = new ItemStack(Material.DRAGON_EGG); + }break; + default:{ + // Roll failed; generate standard item + item = new ItemStack(Material.BOAT); + } + } + }break; + } + }break; + case 107:{ + item = new ItemStack(Material.COOKIE, 8); + }break; + case 108:{ + item = new ItemStack(Material.SEEDS, 42); + }break; + case 109:{ + item = new ItemStack(Material.PAINTING, 16); + }break; + case 110:{ + item = getGoodie(0); + }break; + default: { + item = getGoodie(1); + } + } + e.getEntity().getWorld().dropItemNaturally(loc, item); + + ExperienceOrb exp = (ExperienceOrb)l.getWorld().spawnEntity(e.getEntity().getLocation(), EntityType.EXPERIENCE_ORB); + exp.setExperience((int)(Math.random() * 5) + 1); + + } + } + @EventHandler public void onEntityExpode(ExplosionPrimeEvent e) { //Bukkit.getPlayer("AaMay").sendMessage("Entity Type: "+e.getEntity().getType().getName()); @@ -12952,6 +13500,19 @@ implements Listener e.setCancelled(true); return; } + if (this.plugin.is_LootChest(p.getItemInHand())) { + e.setCancelled(true); + if (p.getItemInHand().getAmount() > 1) { + p.getItemInHand().setAmount(p.getItemInHand().getAmount() - 1); + } else { + p.setItemInHand(null); + } + p.getWorld().dropItemNaturally(p.getLocation(), getGoodie()); + p.sendMessage(ChatColor.GREEN+"You open the chest and find treasure inside!"); + p.playSound(p.getLocation(), Sound.ORB_PICKUP, 10, 1); + p.updateInventory(); + return; + } } if (blockAction == Action.RIGHT_CLICK_BLOCK) { diff --git a/BankEconomyMod/src/me/kaZep/Commands/commandBankEconomy.java b/BankEconomyMod/src/me/kaZep/Commands/commandBankEconomy.java index 4e5fdab..1779429 100644 --- a/BankEconomyMod/src/me/kaZep/Commands/commandBankEconomy.java +++ b/BankEconomyMod/src/me/kaZep/Commands/commandBankEconomy.java @@ -400,7 +400,7 @@ public String convertToItemName(String val) { } else if (cmd.getName().equalsIgnoreCase("event")) { if (p.hasPermission("maintenance-mode-admin")) { - p.sendMessage("Events available: halloween. Use: /event "); + p.sendMessage("Events available: halloween, thanksgiving. Use: /event "); } } else if (cmd.getName().equalsIgnoreCase("maintenance")) { @@ -554,6 +554,32 @@ public String convertToItemName(String val) { } this.plugin.saveConfig(); } + if (args[0].equalsIgnoreCase("thanksgiving")) { + if (this.plugin.getConfig().getBoolean("thanksgiving-enabled")) { + this.plugin.getConfig().set("thanksgiving-enabled", Boolean.valueOf(false)); + p.sendMessage("Thanksgiving event disabled."); + } else { + this.plugin.getConfig().set("thanksgiving-enabled", Boolean.valueOf(true)); + p.sendMessage("Thanksgiving event enabled."); + } + this.plugin.saveConfig(); + } + if (args[0].equalsIgnoreCase("loot")) { + ItemStack chest = new ItemStack(Material.CHEST); + ItemMeta chest_name = chest.getItemMeta(); + chest_name.setDisplayName(ChatColor.YELLOW+"Closed Chest"); + + List chestlore = new ArrayList(); + chestlore.add(ChatColor.GRAY+""+ChatColor.ITALIC+"A mysterious chest!"); + chestlore.add(ChatColor.GRAY+""+ChatColor.ITALIC+""); + chestlore.add(ChatColor.GRAY+""+ChatColor.ITALIC+"It feels heavy; there"); + chestlore.add(ChatColor.GRAY+""+ChatColor.ITALIC+"might be items inside."); + chest_name.setLore(chestlore); + + chest.setItemMeta(chest_name); + + p.getWorld().dropItemNaturally(p.getLocation(), chest); + } } else if (cmd.getName().equalsIgnoreCase("event") && args.length==2 && p.hasPermission("maintenance-mode-admin")) { if (args[0].equalsIgnoreCase("head")) {