Merge branch 'master' of ssh://184.154.0.242:7999/min/Mineplex
This commit is contained in:
commit
8b14c85572
@ -113,4 +113,21 @@ public class UtilTitle
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static String progress(float exp)
|
||||||
|
{
|
||||||
|
String out = "";
|
||||||
|
|
||||||
|
for (int i=0 ; i<40 ; i++)
|
||||||
|
{
|
||||||
|
float cur = i * (1f /40f);
|
||||||
|
|
||||||
|
if (cur < exp)
|
||||||
|
out += C.cGreen + C.Bold + "|";
|
||||||
|
else
|
||||||
|
out += C.cGray + C.Bold + "|";
|
||||||
|
}
|
||||||
|
|
||||||
|
return out;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -93,15 +93,7 @@ public class AntiStack extends MiniPlugin
|
|||||||
|
|
||||||
Item item = event.getItem();
|
Item item = event.getItem();
|
||||||
|
|
||||||
//Get Name
|
removeUID(item);
|
||||||
String name = ((CraftItemStack)item.getItemStack()).getHandle().getName();
|
|
||||||
|
|
||||||
//Remove UID
|
|
||||||
if (name.contains(":"))
|
|
||||||
name = name.substring(0, name.indexOf(":" + item.getUniqueId()));
|
|
||||||
|
|
||||||
//Set Name
|
|
||||||
((CraftItemStack)item.getItemStack()).getHandle().c(name);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler
|
@EventHandler
|
||||||
@ -130,4 +122,17 @@ public class AntiStack extends MiniPlugin
|
|||||||
{
|
{
|
||||||
_enabled = var;
|
_enabled = var;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static void removeUID(Item item)
|
||||||
|
{
|
||||||
|
//Get Name
|
||||||
|
String name = ((CraftItemStack)item.getItemStack()).getHandle().getName();
|
||||||
|
|
||||||
|
//Remove UID
|
||||||
|
if (name.contains(":"))
|
||||||
|
name = name.substring(0, name.indexOf(":" + item.getUniqueId()));
|
||||||
|
|
||||||
|
//Set Name
|
||||||
|
((CraftItemStack)item.getItemStack()).getHandle().c(name);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,25 @@
|
|||||||
|
package mineplex.core.cosmetic.ui.button;
|
||||||
|
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
|
import mineplex.core.cosmetic.ui.page.Menu;
|
||||||
|
import mineplex.core.shop.item.SingleButton;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Created by shaun on 14-09-15.
|
||||||
|
*/
|
||||||
|
public class OpenCostumes extends SingleButton
|
||||||
|
{
|
||||||
|
private Menu _menu;
|
||||||
|
|
||||||
|
public OpenCostumes(Menu menu)
|
||||||
|
{
|
||||||
|
_menu = menu;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void Clicked(Player player)
|
||||||
|
{
|
||||||
|
_menu.openCostumes(player);
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,25 @@
|
|||||||
|
package mineplex.core.cosmetic.ui.button;
|
||||||
|
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
|
import mineplex.core.cosmetic.ui.page.Menu;
|
||||||
|
import mineplex.core.shop.item.SingleButton;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Created by shaun on 14-09-15.
|
||||||
|
*/
|
||||||
|
public class OpenMusic extends SingleButton
|
||||||
|
{
|
||||||
|
private Menu _menu;
|
||||||
|
|
||||||
|
public OpenMusic(Menu menu)
|
||||||
|
{
|
||||||
|
_menu = menu;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void Clicked(Player player)
|
||||||
|
{
|
||||||
|
_menu.openMusic(player);
|
||||||
|
}
|
||||||
|
}
|
@ -3,12 +3,10 @@ package mineplex.core.cosmetic.ui.button;
|
|||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
import mineplex.core.cosmetic.ui.page.Menu;
|
import mineplex.core.cosmetic.ui.page.Menu;
|
||||||
import mineplex.core.shop.item.IButton;
|
|
||||||
import mineplex.core.shop.item.SingleButton;
|
import mineplex.core.shop.item.SingleButton;
|
||||||
|
|
||||||
public class TreasureButton extends SingleButton
|
public class TreasureButton extends SingleButton
|
||||||
{
|
{
|
||||||
|
|
||||||
private Menu _menu;
|
private Menu _menu;
|
||||||
|
|
||||||
public TreasureButton(Menu menu)
|
public TreasureButton(Menu menu)
|
||||||
@ -16,11 +14,10 @@ public class TreasureButton extends SingleButton
|
|||||||
_menu = menu;
|
_menu = menu;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void Clicked(Player player)
|
public void Clicked(Player player)
|
||||||
{
|
{
|
||||||
_menu.openTreasure(player);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,114 @@
|
|||||||
|
package mineplex.core.cosmetic.ui.page;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import org.bukkit.Material;
|
||||||
|
import org.bukkit.Sound;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
|
import mineplex.core.account.CoreClientManager;
|
||||||
|
import mineplex.core.common.util.C;
|
||||||
|
import mineplex.core.cosmetic.CosmeticManager;
|
||||||
|
import mineplex.core.cosmetic.ui.CosmeticShop;
|
||||||
|
import mineplex.core.donation.DonationManager;
|
||||||
|
import mineplex.core.gadget.types.Gadget;
|
||||||
|
import mineplex.core.gadget.types.GadgetType;
|
||||||
|
import mineplex.core.gadget.types.ItemGadget;
|
||||||
|
import mineplex.core.gadget.types.OutfitGadget;
|
||||||
|
import mineplex.core.shop.item.ShopItem;
|
||||||
|
import mineplex.core.shop.item.SingleButton;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Created by shaun on 14-09-15.
|
||||||
|
*/
|
||||||
|
public class CostumePage extends GadgetPage
|
||||||
|
{
|
||||||
|
public CostumePage(CosmeticManager plugin, CosmeticShop shop, CoreClientManager clientManager, DonationManager donationManager, String name, Player player)
|
||||||
|
{
|
||||||
|
super(plugin, shop, clientManager, donationManager, name, player);
|
||||||
|
|
||||||
|
BuildPage();
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void BuildPage()
|
||||||
|
{
|
||||||
|
int slot;
|
||||||
|
|
||||||
|
List<Class> costumeClasses = new ArrayList<Class>();
|
||||||
|
|
||||||
|
for (Gadget gadget : Plugin.getGadgetManager().getGadgets(GadgetType.Costume))
|
||||||
|
{
|
||||||
|
OutfitGadget outfitGadget = ((OutfitGadget) gadget);
|
||||||
|
Class clazz = gadget.getClass();
|
||||||
|
|
||||||
|
if (!costumeClasses.contains(clazz))
|
||||||
|
{
|
||||||
|
costumeClasses.add(clazz);
|
||||||
|
}
|
||||||
|
|
||||||
|
slot = (costumeClasses.indexOf(clazz) * 2) + 3 + 18;
|
||||||
|
|
||||||
|
if (outfitGadget.GetSlot() == OutfitGadget.ArmorSlot.Chest)
|
||||||
|
slot += 9;
|
||||||
|
else if (outfitGadget.GetSlot() == OutfitGadget.ArmorSlot.Legs)
|
||||||
|
slot += 18;
|
||||||
|
else if (outfitGadget.GetSlot() == OutfitGadget.ArmorSlot.Boots)
|
||||||
|
slot += 27;
|
||||||
|
|
||||||
|
addGadget(gadget, slot);
|
||||||
|
|
||||||
|
if (gadget.IsActive(Player))
|
||||||
|
addGlow(slot);
|
||||||
|
}
|
||||||
|
|
||||||
|
AddButton(8, new ShopItem(Material.TNT, C.cRed + C.Bold + "Remove all Clothing", new String[] { }, 1, false), new SingleButton()
|
||||||
|
{
|
||||||
|
@Override
|
||||||
|
public void Clicked(Player player)
|
||||||
|
{
|
||||||
|
boolean gadgetDisabled = false;
|
||||||
|
for (Gadget gadget : Plugin.getGadgetManager().getGadgets(GadgetType.Costume))
|
||||||
|
{
|
||||||
|
if (gadget.IsActive(player))
|
||||||
|
{
|
||||||
|
gadgetDisabled = true;
|
||||||
|
gadget.Disable(player);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (gadgetDisabled)
|
||||||
|
{
|
||||||
|
BuildPage();
|
||||||
|
player.playSound(player.getEyeLocation(), Sound.SPLASH, 1, 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
AddButton(4, new ShopItem(Material.BED, C.cGray + " \u21FD Go Back", new String[] { }, 1, false), new SingleButton()
|
||||||
|
{
|
||||||
|
@Override
|
||||||
|
public void Clicked(Player player)
|
||||||
|
{
|
||||||
|
Shop.OpenPageForPlayer(Player, new Menu(Plugin, Shop, ClientManager, DonationManager, player));
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
public void activateGadget(Player player, Gadget gadget)
|
||||||
|
{
|
||||||
|
if (gadget instanceof ItemGadget)
|
||||||
|
{
|
||||||
|
if (Plugin.getInventoryManager().Get(player).getItemCount(gadget.GetName()) <= 0)
|
||||||
|
{
|
||||||
|
purchaseGadget(player, gadget);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
PlayAcceptSound(player);
|
||||||
|
gadget.Enable(player);
|
||||||
|
|
||||||
|
BuildPage();
|
||||||
|
}
|
||||||
|
}
|
@ -3,19 +3,19 @@ package mineplex.core.cosmetic.ui.page;
|
|||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.ChatColor;
|
import org.bukkit.ChatColor;
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
import org.bukkit.craftbukkit.v1_7_R4.inventory.CraftItemStack;
|
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
import mineplex.core.account.CoreClientManager;
|
import mineplex.core.account.CoreClientManager;
|
||||||
import mineplex.core.common.CurrencyType;
|
import mineplex.core.common.CurrencyType;
|
||||||
import mineplex.core.common.util.C;
|
import mineplex.core.common.util.C;
|
||||||
import mineplex.core.common.util.F;
|
|
||||||
import mineplex.core.cosmetic.CosmeticManager;
|
import mineplex.core.cosmetic.CosmeticManager;
|
||||||
import mineplex.core.cosmetic.event.ActivateGemBoosterEvent;
|
import mineplex.core.cosmetic.event.ActivateGemBoosterEvent;
|
||||||
import mineplex.core.cosmetic.ui.CosmeticShop;
|
import mineplex.core.cosmetic.ui.CosmeticShop;
|
||||||
|
import mineplex.core.cosmetic.ui.button.OpenCostumes;
|
||||||
import mineplex.core.cosmetic.ui.button.OpenGadgets;
|
import mineplex.core.cosmetic.ui.button.OpenGadgets;
|
||||||
import mineplex.core.cosmetic.ui.button.OpenMorphs;
|
import mineplex.core.cosmetic.ui.button.OpenMorphs;
|
||||||
import mineplex.core.cosmetic.ui.button.OpenMounts;
|
import mineplex.core.cosmetic.ui.button.OpenMounts;
|
||||||
|
import mineplex.core.cosmetic.ui.button.OpenMusic;
|
||||||
import mineplex.core.cosmetic.ui.button.OpenParticles;
|
import mineplex.core.cosmetic.ui.button.OpenParticles;
|
||||||
import mineplex.core.cosmetic.ui.button.OpenPets;
|
import mineplex.core.cosmetic.ui.button.OpenPets;
|
||||||
import mineplex.core.cosmetic.ui.button.TreasureButton;
|
import mineplex.core.cosmetic.ui.button.TreasureButton;
|
||||||
@ -42,29 +42,29 @@ public class Menu extends ShopPageBase<CosmeticManager, CosmeticShop>
|
|||||||
@Override
|
@Override
|
||||||
protected void BuildPage()
|
protected void BuildPage()
|
||||||
{
|
{
|
||||||
AddItem(11, new ShopItem(175, DonationManager.Get(Player.getName()).getCoins() + " Coins", 1, false));
|
AddItem(2, new ShopItem(175, DonationManager.Get(Player.getName()).getCoins() + " Coins", 1, false));
|
||||||
|
|
||||||
int treasureChestCount = Plugin.getInventoryManager().Get(Player).getItemCount("Treasure Chest");
|
int treasureChestCount = Plugin.getInventoryManager().Get(Player).getItemCount("Treasure Chest");
|
||||||
|
|
||||||
if (treasureChestCount <= 0 && Player.getName().equals("Chiss"))
|
if (treasureChestCount <= 0 && Player.getName().equals("Phinary"))
|
||||||
{
|
{
|
||||||
Plugin.getInventoryManager().addItemToInventory(Player, "Utility", "Treasure Chest", 1);
|
Plugin.getInventoryManager().addItemToInventory(Player, "Utility", "Treasure Chest", 1);
|
||||||
treasureChestCount = Plugin.getInventoryManager().Get(Player).getItemCount("Treasure Chest");
|
treasureChestCount = Plugin.getInventoryManager().Get(Player).getItemCount("Treasure Chest");
|
||||||
}
|
}
|
||||||
|
|
||||||
// if (treasureChestCount > 0)
|
if (treasureChestCount > 0)
|
||||||
// {
|
{
|
||||||
// AddButton(13, new ShopItem(Material.CHEST, C.cGold + treasureChestCount + " Treasure Chests", new String[] { ChatColor.RESET + "Click to Open Treasure Chest" }, 1, false), new TreasureButton(this));
|
AddButton(4, new ShopItem(Material.CHEST, C.cGold + treasureChestCount + " Treasure Chests", new String[] { ChatColor.RESET + "Click to Open Treasure Chest" }, 1, false), new TreasureButton(this));
|
||||||
// }
|
}
|
||||||
// else
|
else
|
||||||
// {
|
{
|
||||||
AddItem(13, new ShopItem(Material.CHEST, ChatColor.RESET + C.cGold + treasureChestCount + " Treasure Chests" + ChatColor.RESET, new String[] { ChatColor.RESET + "Coming soon..." }, 1, false));
|
AddItem(4, new ShopItem(Material.CHEST, ChatColor.RESET + C.cGold + treasureChestCount + " Treasure Chests" + ChatColor.RESET, new String[] { ChatColor.RESET + "Coming soon..." }, 1, false));
|
||||||
//}
|
}
|
||||||
|
|
||||||
final GemBooster gemBoosterItem = new GemBooster(Shop.getBoosterEnabled(), Plugin.getInventoryManager().Get(Player).getItemCount("Gem Booster"));
|
final GemBooster gemBoosterItem = new GemBooster(Shop.getBoosterEnabled(), Plugin.getInventoryManager().Get(Player).getItemCount("Gem Booster"));
|
||||||
|
|
||||||
|
|
||||||
AddButton(15, new ShopItem(
|
AddButton(6, new ShopItem(
|
||||||
gemBoosterItem.GetDisplayMaterial(),
|
gemBoosterItem.GetDisplayMaterial(),
|
||||||
gemBoosterItem.GetDisplayName(),
|
gemBoosterItem.GetDisplayName(),
|
||||||
gemBoosterItem.GetDescription(),
|
gemBoosterItem.GetDescription(),
|
||||||
@ -111,17 +111,20 @@ public class Menu extends ShopPageBase<CosmeticManager, CosmeticShop>
|
|||||||
false));
|
false));
|
||||||
}
|
}
|
||||||
|
|
||||||
AddButton(27, new ShopItem(Material.NETHER_STAR, "Particle Effects", 1, false), new OpenParticles(this));
|
AddButton(18, new ShopItem(Material.NETHER_STAR, "Particle Effects", 1, false), new OpenParticles(this));
|
||||||
AddButton(29, new ShopItem(Material.BOW, "Gadgets", 1, false), new OpenGadgets(this));
|
AddButton(20, new ShopItem(Material.BOW, "Gadgets", 1, false), new OpenGadgets(this));
|
||||||
AddButton(31, new ShopItem(Material.LEATHER, "Morphs", 1, false), new OpenMorphs(this));
|
AddButton(22, new ShopItem(Material.LEATHER, "Morphs", 1, false), new OpenMorphs(this));
|
||||||
AddButton(33, new ShopItem(Material.IRON_BARDING, "Mounts", 1, false), new OpenMounts(this));
|
AddButton(24, new ShopItem(Material.IRON_BARDING, "Mounts", 1, false), new OpenMounts(this));
|
||||||
AddButton(35, new ShopItem(Material.BONE, "Pets", 1, false), new OpenPets(this));
|
AddButton(26, new ShopItem(Material.BONE, "Pets", 1, false), new OpenPets(this));
|
||||||
|
//
|
||||||
|
AddButton(48, new ShopItem(Material.GOLD_CHESTPLATE, "Costumes", 1, false), new OpenCostumes(this));
|
||||||
|
AddButton(50, new ShopItem(Material.GREEN_RECORD, "Music", 1, false), new OpenMusic(this));
|
||||||
|
|
||||||
if (Plugin.getGadgetManager().getActive(Player, GadgetType.Particle) != null)
|
if (Plugin.getGadgetManager().getActive(Player, GadgetType.Particle) != null)
|
||||||
{
|
{
|
||||||
final Gadget gadget = Plugin.getGadgetManager().getActive(Player, GadgetType.Particle);
|
final Gadget gadget = Plugin.getGadgetManager().getActive(Player, GadgetType.Particle);
|
||||||
|
|
||||||
AddButton(36,
|
AddButton(18 + 9,
|
||||||
new ShopItem(gadget.GetDisplayMaterial(), gadget.GetDisplayData(), ChatColor.RESET + C.mItem + gadget.GetName(), new String[] {}, 1, false, false),
|
new ShopItem(gadget.GetDisplayMaterial(), gadget.GetDisplayData(), ChatColor.RESET + C.mItem + gadget.GetName(), new String[] {}, 1, false, false),
|
||||||
new SingleButton()
|
new SingleButton()
|
||||||
{
|
{
|
||||||
@ -139,7 +142,7 @@ public class Menu extends ShopPageBase<CosmeticManager, CosmeticShop>
|
|||||||
{
|
{
|
||||||
final Gadget gadget = Plugin.getGadgetManager().getActive(Player, GadgetType.Item);
|
final Gadget gadget = Plugin.getGadgetManager().getActive(Player, GadgetType.Item);
|
||||||
|
|
||||||
AddButton(38,
|
AddButton(20 + 9,
|
||||||
new ShopItem(gadget.GetDisplayMaterial(), gadget.GetDisplayData(), ChatColor.RESET + C.mItem + gadget.GetName(), new String[] {}, 1, false, false),
|
new ShopItem(gadget.GetDisplayMaterial(), gadget.GetDisplayData(), ChatColor.RESET + C.mItem + gadget.GetName(), new String[] {}, 1, false, false),
|
||||||
new SingleButton()
|
new SingleButton()
|
||||||
{
|
{
|
||||||
@ -157,7 +160,7 @@ public class Menu extends ShopPageBase<CosmeticManager, CosmeticShop>
|
|||||||
{
|
{
|
||||||
final Gadget gadget = Plugin.getGadgetManager().getActive(Player, GadgetType.Morph);
|
final Gadget gadget = Plugin.getGadgetManager().getActive(Player, GadgetType.Morph);
|
||||||
|
|
||||||
AddButton(40,
|
AddButton(22 + 9,
|
||||||
new ShopItem(gadget.GetDisplayMaterial(), gadget.GetDisplayData(), ChatColor.RESET + C.mItem + gadget.GetName(), new String[] {}, 1, false, false),
|
new ShopItem(gadget.GetDisplayMaterial(), gadget.GetDisplayData(), ChatColor.RESET + C.mItem + gadget.GetName(), new String[] {}, 1, false, false),
|
||||||
new SingleButton()
|
new SingleButton()
|
||||||
{
|
{
|
||||||
@ -175,7 +178,7 @@ public class Menu extends ShopPageBase<CosmeticManager, CosmeticShop>
|
|||||||
{
|
{
|
||||||
final Mount<?> mount = Plugin.getMountManager().getActive(Player);
|
final Mount<?> mount = Plugin.getMountManager().getActive(Player);
|
||||||
|
|
||||||
AddButton(42,
|
AddButton(24 + 9,
|
||||||
new ShopItem(mount.GetDisplayMaterial(), mount.GetDisplayData(), ChatColor.RESET + C.mItem + mount.GetName(), new String[] {}, 1, false, false),
|
new ShopItem(mount.GetDisplayMaterial(), mount.GetDisplayData(), ChatColor.RESET + C.mItem + mount.GetName(), new String[] {}, 1, false, false),
|
||||||
new SingleButton()
|
new SingleButton()
|
||||||
{
|
{
|
||||||
@ -191,7 +194,7 @@ public class Menu extends ShopPageBase<CosmeticManager, CosmeticShop>
|
|||||||
|
|
||||||
if (Plugin.getPetManager().hasActivePet(Player.getName()))
|
if (Plugin.getPetManager().hasActivePet(Player.getName()))
|
||||||
{
|
{
|
||||||
AddButton(44, new ShopItem(Material.MONSTER_EGG, (byte)Plugin.getPetManager().getActivePet(Player.getName()).getType().getTypeId(), ChatColor.RESET + C.mItem + Plugin.getPetManager().getActivePet(Player.getName()).getCustomName(), new String[] {}, 1, false, false),
|
AddButton(26 + 9, new ShopItem(Material.MONSTER_EGG, (byte)Plugin.getPetManager().getActivePet(Player.getName()).getType().getTypeId(), ChatColor.RESET + C.mItem + Plugin.getPetManager().getActivePet(Player.getName()).getCustomName(), new String[] {}, 1, false, false),
|
||||||
new SingleButton()
|
new SingleButton()
|
||||||
{
|
{
|
||||||
@Override
|
@Override
|
||||||
@ -222,11 +225,6 @@ public class Menu extends ShopPageBase<CosmeticManager, CosmeticShop>
|
|||||||
Shop.OpenPageForPlayer(player, new ParticlePage(Plugin, Shop, ClientManager, DonationManager, "Particles", player));
|
Shop.OpenPageForPlayer(player, new ParticlePage(Plugin, Shop, ClientManager, DonationManager, "Particles", player));
|
||||||
}
|
}
|
||||||
|
|
||||||
public void openTreasure(Player player)
|
|
||||||
{
|
|
||||||
Shop.OpenPageForPlayer(player, new TreasurePage(Plugin, Shop, ClientManager, DonationManager, "Open Treasure Chest", player));
|
|
||||||
}
|
|
||||||
|
|
||||||
public void openGadgets(Player player)
|
public void openGadgets(Player player)
|
||||||
{
|
{
|
||||||
Shop.OpenPageForPlayer(player, new GadgetPage(Plugin, Shop, ClientManager, DonationManager, "Gadgets", player));
|
Shop.OpenPageForPlayer(player, new GadgetPage(Plugin, Shop, ClientManager, DonationManager, "Gadgets", player));
|
||||||
@ -246,4 +244,14 @@ public class Menu extends ShopPageBase<CosmeticManager, CosmeticShop>
|
|||||||
{
|
{
|
||||||
Shop.OpenPageForPlayer(player, new PetPage(Plugin, Shop, ClientManager, DonationManager, "Pets", player));
|
Shop.OpenPageForPlayer(player, new PetPage(Plugin, Shop, ClientManager, DonationManager, "Pets", player));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void openCostumes(Player player)
|
||||||
|
{
|
||||||
|
Shop.OpenPageForPlayer(player, new CostumePage(Plugin, Shop, ClientManager, DonationManager, "Costumes", player));
|
||||||
|
}
|
||||||
|
|
||||||
|
public void openMusic(Player player)
|
||||||
|
{
|
||||||
|
Shop.OpenPageForPlayer(player, new MusicPage(Plugin, Shop, ClientManager, DonationManager, "Music", player));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,56 @@
|
|||||||
|
package mineplex.core.cosmetic.ui.page;
|
||||||
|
|
||||||
|
import org.bukkit.Material;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
|
import mineplex.core.account.CoreClientManager;
|
||||||
|
import mineplex.core.common.util.C;
|
||||||
|
import mineplex.core.cosmetic.CosmeticManager;
|
||||||
|
import mineplex.core.cosmetic.ui.CosmeticShop;
|
||||||
|
import mineplex.core.donation.DonationManager;
|
||||||
|
import mineplex.core.gadget.types.Gadget;
|
||||||
|
import mineplex.core.gadget.types.GadgetType;
|
||||||
|
import mineplex.core.shop.item.ShopItem;
|
||||||
|
import mineplex.core.shop.item.SingleButton;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Created by shaun on 14-09-15.
|
||||||
|
*/
|
||||||
|
public class MusicPage extends GadgetPage
|
||||||
|
{
|
||||||
|
public MusicPage(CosmeticManager plugin, CosmeticShop shop, CoreClientManager clientManager, DonationManager donationManager, String name, Player player)
|
||||||
|
{
|
||||||
|
super(plugin, shop, clientManager, donationManager, name, player);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void BuildPage()
|
||||||
|
{
|
||||||
|
int slot = 19;
|
||||||
|
|
||||||
|
for (Gadget gadget : Plugin.getGadgetManager().getGadgets(GadgetType.MusicDisc))
|
||||||
|
{
|
||||||
|
addGadget(gadget, slot);
|
||||||
|
|
||||||
|
slot++;
|
||||||
|
|
||||||
|
if (slot == 26)
|
||||||
|
slot = 28;
|
||||||
|
}
|
||||||
|
|
||||||
|
AddButton(4, new ShopItem(Material.BED, C.cGray + " \u21FD Go Back", new String[] { }, 1, false), new SingleButton()
|
||||||
|
{
|
||||||
|
@Override
|
||||||
|
public void Clicked(Player player)
|
||||||
|
{
|
||||||
|
Shop.OpenPageForPlayer(Player, new Menu(Plugin, Shop, ClientManager, DonationManager, player));
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void activateGadget(Player player, Gadget gadget)
|
||||||
|
{
|
||||||
|
super.activateGadget(player, gadget);
|
||||||
|
player.closeInventory();
|
||||||
|
}
|
||||||
|
}
|
@ -5,7 +5,6 @@ import java.util.List;
|
|||||||
|
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
import org.bukkit.entity.Entity;
|
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.event.EventHandler;
|
import org.bukkit.event.EventHandler;
|
||||||
import org.bukkit.event.entity.PlayerDeathEvent;
|
import org.bukkit.event.entity.PlayerDeathEvent;
|
||||||
@ -26,13 +25,13 @@ import mineplex.core.disguise.DisguiseManager;
|
|||||||
import mineplex.core.donation.DonationManager;
|
import mineplex.core.donation.DonationManager;
|
||||||
import mineplex.core.gadget.event.GadgetCollideEntityEvent;
|
import mineplex.core.gadget.event.GadgetCollideEntityEvent;
|
||||||
import mineplex.core.gadget.gadgets.*;
|
import mineplex.core.gadget.gadgets.*;
|
||||||
import mineplex.core.gadget.types.OutfitGadget.ArmorSlot;
|
|
||||||
import mineplex.core.gadget.types.Gadget;
|
import mineplex.core.gadget.types.Gadget;
|
||||||
import mineplex.core.gadget.types.GadgetType;
|
import mineplex.core.gadget.types.GadgetType;
|
||||||
import mineplex.core.gadget.types.ItemGadget;
|
import mineplex.core.gadget.types.ItemGadget;
|
||||||
import mineplex.core.gadget.types.MorphGadget;
|
import mineplex.core.gadget.types.MorphGadget;
|
||||||
import mineplex.core.gadget.types.OutfitGadget;
|
|
||||||
import mineplex.core.gadget.types.MusicGadget;
|
import mineplex.core.gadget.types.MusicGadget;
|
||||||
|
import mineplex.core.gadget.types.OutfitGadget;
|
||||||
|
import mineplex.core.gadget.types.OutfitGadget.ArmorSlot;
|
||||||
import mineplex.core.gadget.types.ParticleGadget;
|
import mineplex.core.gadget.types.ParticleGadget;
|
||||||
import mineplex.core.inventory.InventoryManager;
|
import mineplex.core.inventory.InventoryManager;
|
||||||
import mineplex.core.mount.MountManager;
|
import mineplex.core.mount.MountManager;
|
||||||
@ -111,7 +110,7 @@ public class GadgetManager extends MiniPlugin
|
|||||||
addGadget(new MorphBlock(this));
|
addGadget(new MorphBlock(this));
|
||||||
addGadget(new MorphEnderman(this));
|
addGadget(new MorphEnderman(this));
|
||||||
addGadget(new MorphBat(this));
|
addGadget(new MorphBat(this));
|
||||||
addGadget(new MorphNotch(this));
|
//addGadget(new MorphNotch(this));
|
||||||
addGadget(new MorphPumpkinKing(this));
|
addGadget(new MorphPumpkinKing(this));
|
||||||
addGadget(new MorphPig(this));
|
addGadget(new MorphPig(this));
|
||||||
addGadget(new MorphCreeper(this));
|
addGadget(new MorphCreeper(this));
|
||||||
@ -178,7 +177,7 @@ public class GadgetManager extends MiniPlugin
|
|||||||
{
|
{
|
||||||
for (Gadget gadget : _gadgets.get(gadgetType))
|
for (Gadget gadget : _gadgets.get(gadgetType))
|
||||||
{
|
{
|
||||||
if (gadget instanceof MorphGadget)
|
if (gadget instanceof OutfitGadget)
|
||||||
{
|
{
|
||||||
OutfitGadget armor = (OutfitGadget) gadget;
|
OutfitGadget armor = (OutfitGadget) gadget;
|
||||||
|
|
||||||
|
@ -1,22 +0,0 @@
|
|||||||
package mineplex.core.join;
|
|
||||||
|
|
||||||
import org.bukkit.event.EventHandler;
|
|
||||||
import org.bukkit.event.player.PlayerJoinEvent;
|
|
||||||
import org.bukkit.event.player.PlayerQuitEvent;
|
|
||||||
|
|
||||||
import mineplex.core.common.util.F;
|
|
||||||
|
|
||||||
public class JoinQuit
|
|
||||||
{
|
|
||||||
@EventHandler
|
|
||||||
public void Join(PlayerJoinEvent event)
|
|
||||||
{
|
|
||||||
event.setJoinMessage(F.sys("Join", event.getPlayer().getName()));
|
|
||||||
}
|
|
||||||
|
|
||||||
@EventHandler
|
|
||||||
public void Quit(PlayerQuitEvent event)
|
|
||||||
{
|
|
||||||
event.setQuitMessage(F.sys("Quit", event.getPlayer().getName()));
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,4 +1,4 @@
|
|||||||
package mineplex.core.treasure.reward;
|
package mineplex.core.reward;
|
||||||
|
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
@ -6,7 +6,7 @@ import org.bukkit.inventory.ItemStack;
|
|||||||
/**
|
/**
|
||||||
* Created by Shaun on 9/2/2014.
|
* Created by Shaun on 9/2/2014.
|
||||||
*/
|
*/
|
||||||
public interface ITreasureReward
|
public interface IReward
|
||||||
{
|
{
|
||||||
public ItemStack getItem();
|
public ItemStack getItem();
|
||||||
|
|
@ -0,0 +1,331 @@
|
|||||||
|
package mineplex.core.reward;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Random;
|
||||||
|
|
||||||
|
import org.bukkit.Material;
|
||||||
|
import org.bukkit.entity.EntityType;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
|
||||||
|
import mineplex.core.donation.DonationManager;
|
||||||
|
import mineplex.core.inventory.InventoryManager;
|
||||||
|
import mineplex.core.reward.rewards.CoinReward;
|
||||||
|
import mineplex.core.reward.rewards.InventoryReward;
|
||||||
|
import mineplex.core.reward.rewards.UnknownPackageReward;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Created by shaun on 2014-09-04.
|
||||||
|
*/
|
||||||
|
public class RewardManager
|
||||||
|
{
|
||||||
|
private HashMap<RewardRarity, List<IReward>> _treasureMap;
|
||||||
|
private Random _random;
|
||||||
|
|
||||||
|
private boolean _doubleGadgetValue;
|
||||||
|
|
||||||
|
public RewardManager(DonationManager donationManager, InventoryManager inventoryManager,
|
||||||
|
int commonValueMin, int commonValueMax,
|
||||||
|
int uncommonValueMin, int uncommonValueMax,
|
||||||
|
int rareValueMin, int rareValueMax,
|
||||||
|
int legendValueMin, int legendValueMax,
|
||||||
|
boolean doubleGadgetValue)
|
||||||
|
{
|
||||||
|
_treasureMap = new HashMap<RewardRarity, List<IReward>>();
|
||||||
|
_random = new Random();
|
||||||
|
|
||||||
|
for (RewardRarity rarity : RewardRarity.values())
|
||||||
|
{
|
||||||
|
_treasureMap.put(rarity, new ArrayList<IReward>());
|
||||||
|
}
|
||||||
|
|
||||||
|
_doubleGadgetValue = doubleGadgetValue;
|
||||||
|
|
||||||
|
addCommon(donationManager, inventoryManager, commonValueMin, commonValueMax);
|
||||||
|
addUncommon(donationManager, inventoryManager, uncommonValueMin, uncommonValueMax);
|
||||||
|
addRare(donationManager, inventoryManager, rareValueMin, rareValueMax);
|
||||||
|
addLegendary(donationManager, inventoryManager, legendValueMin, legendValueMax);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void addCommon(DonationManager donationManager, InventoryManager inventoryManager, double minValue, double maxValue)
|
||||||
|
{
|
||||||
|
// Coins
|
||||||
|
addReward(new CoinReward(donationManager, (int)minValue, (int)maxValue, 1, RewardRarity.COMMON));
|
||||||
|
|
||||||
|
//Increase Value
|
||||||
|
if (_doubleGadgetValue)
|
||||||
|
{
|
||||||
|
minValue *= 2;
|
||||||
|
maxValue *= 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Gadgets
|
||||||
|
addReward(new InventoryReward(inventoryManager, "Paintball Gun Ammo", "Paintball Gun",
|
||||||
|
(int)(100*(minValue/500)), (int)(100*(maxValue/500)),
|
||||||
|
new ItemStack(Material.GOLD_BARDING), RewardRarity.COMMON, 1));
|
||||||
|
|
||||||
|
addReward(new InventoryReward(inventoryManager, "Fireworks", "Fireworks",
|
||||||
|
(int)(50*(minValue/500)), (int)(50*(maxValue/500)),
|
||||||
|
new ItemStack(Material.FIREWORK), RewardRarity.COMMON, 1));
|
||||||
|
|
||||||
|
addReward(new InventoryReward(inventoryManager, "Melon Launcher Ammo", "Melon Launcher",
|
||||||
|
(int)(50*(minValue/500)), (int)(50*(maxValue/500)),
|
||||||
|
new ItemStack(Material.MELON_BLOCK), RewardRarity.COMMON, 1));
|
||||||
|
|
||||||
|
addReward(new InventoryReward(inventoryManager, "Flesh Hooks", "Flesh Hook",
|
||||||
|
(int)(40*(minValue/500)), (int)(40*(maxValue/500)),
|
||||||
|
new ItemStack(Material.getMaterial(131)), RewardRarity.COMMON, 1));
|
||||||
|
|
||||||
|
addReward(new InventoryReward(inventoryManager, "Ethereal Pearls", "Ethereal Pearl",
|
||||||
|
(int)(30*(minValue/500)), (int)(30*(maxValue/500)),
|
||||||
|
new ItemStack(Material.ENDER_PEARL), RewardRarity.COMMON, 1));
|
||||||
|
|
||||||
|
addReward(new InventoryReward(inventoryManager, "Bat Blaster Ammo", "Bat Blaster",
|
||||||
|
(int)(20*(minValue/500)), (int)(20*(maxValue/500)),
|
||||||
|
new ItemStack(Material.IRON_BARDING), RewardRarity.COMMON, 1));
|
||||||
|
|
||||||
|
addReward(new InventoryReward(inventoryManager, "TNT", "TNT",
|
||||||
|
(int)(20*(minValue/500)), (int)(20*(maxValue/500)),
|
||||||
|
new ItemStack(Material.TNT), RewardRarity.COMMON, 1));
|
||||||
|
}
|
||||||
|
|
||||||
|
public void addUncommon(DonationManager donationManager, InventoryManager inventoryManager, double minValue, double maxValue)
|
||||||
|
{
|
||||||
|
// Coins
|
||||||
|
addReward(new CoinReward(donationManager, (int)minValue, (int)maxValue, 250, RewardRarity.UNCOMMON));
|
||||||
|
|
||||||
|
//Increase Value
|
||||||
|
if (_doubleGadgetValue)
|
||||||
|
{
|
||||||
|
minValue *= 2;
|
||||||
|
maxValue *= 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Gadgets
|
||||||
|
addReward(new InventoryReward(inventoryManager, "Paintball Gun Ammo", "Paintball Gun",
|
||||||
|
(int)(100*(minValue/500)), (int)(100*(maxValue/500)),
|
||||||
|
new ItemStack(Material.GOLD_BARDING), RewardRarity.UNCOMMON, 250));
|
||||||
|
|
||||||
|
addReward(new InventoryReward(inventoryManager, "Fireworks", "Fireworks",
|
||||||
|
(int)(50*(minValue/500)), (int)(50*(maxValue/500)),
|
||||||
|
new ItemStack(Material.FIREWORK), RewardRarity.UNCOMMON, 250));
|
||||||
|
|
||||||
|
addReward(new InventoryReward(inventoryManager, "Melon Launcher Ammo", "Melon Launcher",
|
||||||
|
(int)(50*(minValue/500)), (int)(50*(maxValue/500)),
|
||||||
|
new ItemStack(Material.MELON_BLOCK), RewardRarity.UNCOMMON, 250));
|
||||||
|
|
||||||
|
addReward(new InventoryReward(inventoryManager, "Flesh Hook Ammo", "Flesh Hook",
|
||||||
|
(int)(40*(minValue/500)), (int)(40*(maxValue/500)),
|
||||||
|
new ItemStack(Material.getMaterial(131)), RewardRarity.UNCOMMON, 250));
|
||||||
|
|
||||||
|
addReward(new InventoryReward(inventoryManager, "Ethereal Pearls", "Ethereal Pearl",
|
||||||
|
(int)(30*(minValue/500)), (int)(30*(maxValue/500)),
|
||||||
|
new ItemStack(Material.ENDER_PEARL), RewardRarity.UNCOMMON, 250));
|
||||||
|
|
||||||
|
addReward(new InventoryReward(inventoryManager, "Bat Blaster Ammo", "Bat Blaster",
|
||||||
|
(int)(20*(minValue/500)), (int)(20*(maxValue/500)),
|
||||||
|
new ItemStack(Material.IRON_BARDING), RewardRarity.UNCOMMON, 250));
|
||||||
|
|
||||||
|
addReward(new InventoryReward(inventoryManager, "TNT", "TNT",
|
||||||
|
(int)(20*(minValue/500)), (int)(20*(maxValue/500)),
|
||||||
|
new ItemStack(Material.TNT), RewardRarity.UNCOMMON, 250));
|
||||||
|
|
||||||
|
// Pets
|
||||||
|
addReward(new UnknownPackageReward(donationManager, "Cow Pet", "Cow",
|
||||||
|
new ItemStack(Material.MONSTER_EGG, 1, EntityType.COW.getTypeId()), RewardRarity.UNCOMMON, 500));
|
||||||
|
addReward(new UnknownPackageReward(donationManager, "Sheep Pet", "Sheep",
|
||||||
|
new ItemStack(Material.MONSTER_EGG, 1, EntityType.SHEEP.getTypeId()), RewardRarity.UNCOMMON, 333));
|
||||||
|
addReward(new UnknownPackageReward(donationManager, "Mooshroom Pet", "Mooshroom",
|
||||||
|
new ItemStack(Material.MONSTER_EGG, 1, EntityType.MUSHROOM_COW.getTypeId()), RewardRarity.UNCOMMON, 200));
|
||||||
|
addReward(new UnknownPackageReward(donationManager, "Pig Pet", "Pig",
|
||||||
|
new ItemStack(Material.MONSTER_EGG, 1, EntityType.PIG.getTypeId()), RewardRarity.UNCOMMON, 200));
|
||||||
|
addReward(new UnknownPackageReward(donationManager, "Ocelot Pet", "Ocelot",
|
||||||
|
new ItemStack(Material.MONSTER_EGG, 1, EntityType.OCELOT.getTypeId()), RewardRarity.UNCOMMON, 167));
|
||||||
|
addReward(new UnknownPackageReward(donationManager, "Chicken Pet", "Chicken",
|
||||||
|
new ItemStack(Material.MONSTER_EGG, 1, EntityType.CHICKEN.getTypeId()), RewardRarity.RARE, 143));
|
||||||
|
addReward(new UnknownPackageReward(donationManager, "Wolf Pet", "Wolf",
|
||||||
|
new ItemStack(Material.MONSTER_EGG, 1, EntityType.WOLF.getTypeId()), RewardRarity.RARE, 125));
|
||||||
|
}
|
||||||
|
|
||||||
|
public void addRare(DonationManager donationManager, InventoryManager inventoryManager, double minValue, double maxValue)
|
||||||
|
{
|
||||||
|
// Coins
|
||||||
|
addReward(new CoinReward(donationManager, (int)minValue, (int)maxValue, 100, RewardRarity.RARE));
|
||||||
|
|
||||||
|
// Mounts
|
||||||
|
addReward(new UnknownPackageReward(donationManager, "Mount Mule", "Mount Mule",
|
||||||
|
new ItemStack(Material.HAY_BLOCK), RewardRarity.RARE, 200));
|
||||||
|
addReward(new UnknownPackageReward(donationManager, "Minecart Mount", "Minecart",
|
||||||
|
new ItemStack(Material.MINECART), RewardRarity.RARE, 100));
|
||||||
|
addReward(new UnknownPackageReward(donationManager, "Slime Mount", "Slime Mount",
|
||||||
|
new ItemStack(Material.SLIME_BALL), RewardRarity.RARE, 67));
|
||||||
|
addReward(new UnknownPackageReward(donationManager, "Glacial Steed", "Glacial Steed",
|
||||||
|
new ItemStack(Material.SNOW_BALL), RewardRarity.RARE, 50));
|
||||||
|
|
||||||
|
// Morphs
|
||||||
|
addReward(new UnknownPackageReward(donationManager, "Cow Morph", "Cow Morph",
|
||||||
|
new ItemStack(Material.LEATHER), RewardRarity.RARE, 167));
|
||||||
|
addReward(new UnknownPackageReward(donationManager, "Villager Morph", "Villager Morph",
|
||||||
|
new ItemStack(Material.EMERALD), RewardRarity.RARE, 83));
|
||||||
|
addReward(new UnknownPackageReward(donationManager, "Chicken Morph", "Chicken Morph",
|
||||||
|
new ItemStack(Material.FEATHER), RewardRarity.RARE, 50));
|
||||||
|
addReward(new UnknownPackageReward(donationManager, "Enderman Morph", "Enderman Morph",
|
||||||
|
new ItemStack(Material.ENDER_PEARL), RewardRarity.RARE, 33));
|
||||||
|
addReward(new UnknownPackageReward(donationManager, "Bat Morph", "Bat Morph",
|
||||||
|
new ItemStack(Material.SKULL_ITEM, 1, (short) 0, (byte) 1), RewardRarity.RARE, 25));
|
||||||
|
|
||||||
|
// Gadgets
|
||||||
|
addReward(new InventoryReward(inventoryManager, "Coin Party Bomb", "Coin Party Bomb", 1, 1,
|
||||||
|
new ItemStack(Material.getMaterial(175)), RewardRarity.RARE, 100));
|
||||||
|
}
|
||||||
|
|
||||||
|
public void addLegendary(DonationManager donationManager, InventoryManager inventoryManager, double minValue, double maxValue)
|
||||||
|
{
|
||||||
|
// Coins
|
||||||
|
addReward(new CoinReward(donationManager, (int)minValue, (int)maxValue, 25, RewardRarity.LEGENDARY));
|
||||||
|
|
||||||
|
// Mounts
|
||||||
|
addReward(new UnknownPackageReward(donationManager, "Infernal Horror", "Infernal Horror",
|
||||||
|
new ItemStack(Material.BONE), RewardRarity.LEGENDARY, 33));
|
||||||
|
|
||||||
|
// Morphs
|
||||||
|
addReward(new UnknownPackageReward(donationManager, "Block Morph", "Block Morph",
|
||||||
|
new ItemStack(Material.EMERALD_BLOCK), RewardRarity.LEGENDARY, 20));
|
||||||
|
|
||||||
|
// Particles
|
||||||
|
addReward(new UnknownPackageReward(donationManager, "Shadow Walk Particles", "Shadow Walk",
|
||||||
|
new ItemStack(Material.LEATHER_BOOTS), RewardRarity.LEGENDARY, 33));
|
||||||
|
addReward(new UnknownPackageReward(donationManager, "Enchanted Particles", "Enchanted",
|
||||||
|
new ItemStack(Material.BOOK), RewardRarity.LEGENDARY, 25));
|
||||||
|
addReward(new UnknownPackageReward(donationManager, "Flame Rings Particles", "Flame Rings",
|
||||||
|
new ItemStack(Material.BLAZE_POWDER), RewardRarity.LEGENDARY, 17));
|
||||||
|
addReward(new UnknownPackageReward(donationManager, "Rain Cloud Particles", "Rain Cloud",
|
||||||
|
new ItemStack(Material.INK_SACK, 1, (short) 0, (byte) 4), RewardRarity.LEGENDARY, 13));
|
||||||
|
addReward(new UnknownPackageReward(donationManager, "Blood Helix Particles", "Blood Helix",
|
||||||
|
new ItemStack(Material.REDSTONE), RewardRarity.LEGENDARY, 10));
|
||||||
|
addReward(new UnknownPackageReward(donationManager, "Emerald Twirl Particles", "Green Ring",
|
||||||
|
new ItemStack(Material.EMERALD), RewardRarity.LEGENDARY, 8));
|
||||||
|
}
|
||||||
|
|
||||||
|
public void addReward(IReward reward)
|
||||||
|
{
|
||||||
|
RewardRarity rarity = reward.getRarity();
|
||||||
|
|
||||||
|
List<IReward> treasureList = _treasureMap.get(rarity);
|
||||||
|
|
||||||
|
treasureList.add(reward);
|
||||||
|
}
|
||||||
|
|
||||||
|
public IReward[] getRewards(Player player, boolean isChestOpening)
|
||||||
|
{
|
||||||
|
int currentReward = 0;
|
||||||
|
IReward[] rewards = new IReward[4];
|
||||||
|
boolean hasUncommon = false;
|
||||||
|
|
||||||
|
while (currentReward < 4)
|
||||||
|
{
|
||||||
|
IReward reward = nextReward(player, rewards, currentReward == 3 && !hasUncommon, isChestOpening);
|
||||||
|
|
||||||
|
if (reward == null)
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (reward.getRarity().ordinal() >= RewardRarity.UNCOMMON.ordinal())
|
||||||
|
{
|
||||||
|
hasUncommon = true;
|
||||||
|
}
|
||||||
|
rewards[currentReward] = reward;
|
||||||
|
currentReward++;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Swap the last reward with another one, this makes the uncommon added at the end of some chests seem more random
|
||||||
|
int slotToSwitch = _random.nextInt(4);
|
||||||
|
if (slotToSwitch != 3)
|
||||||
|
{
|
||||||
|
IReward thirdReward = rewards[3];
|
||||||
|
IReward otherReward = rewards[slotToSwitch];
|
||||||
|
|
||||||
|
rewards[3] = otherReward;
|
||||||
|
rewards[slotToSwitch] = thirdReward;
|
||||||
|
}
|
||||||
|
|
||||||
|
return rewards;
|
||||||
|
}
|
||||||
|
|
||||||
|
// private IReward nextReward(Player player, IReward[] excludedRewards)
|
||||||
|
// {
|
||||||
|
// return nextReward(player, excludedRewards, false, isChestOpening);
|
||||||
|
// }
|
||||||
|
|
||||||
|
public IReward nextReward(Player player, IReward[] excludedRewards, boolean requiresUncommon, boolean isChestOpening)
|
||||||
|
{
|
||||||
|
double rand = _random.nextDouble();
|
||||||
|
RewardRarity rarity;
|
||||||
|
|
||||||
|
if (isChestOpening ? rand <= 0.01 : rand <= 0.0001)
|
||||||
|
{
|
||||||
|
// 1% or 0.01%
|
||||||
|
rarity = RewardRarity.LEGENDARY;
|
||||||
|
}
|
||||||
|
else if (isChestOpening ? rand <= 0.05 : rand <= 0.001)
|
||||||
|
{
|
||||||
|
// 4% or 0.09%
|
||||||
|
rarity = RewardRarity.RARE;
|
||||||
|
}
|
||||||
|
else if ((isChestOpening ? rand <= 0.3 : rand <= 0.03) || requiresUncommon)
|
||||||
|
{
|
||||||
|
// 25% or 2.9%
|
||||||
|
rarity = RewardRarity.UNCOMMON;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// 70% or 97%
|
||||||
|
rarity = RewardRarity.COMMON;
|
||||||
|
}
|
||||||
|
|
||||||
|
List<IReward> treasureList = _treasureMap.get(rarity);
|
||||||
|
|
||||||
|
int totalWeight = 0;
|
||||||
|
ArrayList<IReward> possibleRewards = new ArrayList<IReward>();
|
||||||
|
for (IReward treasure : treasureList)
|
||||||
|
{
|
||||||
|
boolean isExcluded = false;
|
||||||
|
|
||||||
|
if (excludedRewards != null)
|
||||||
|
{
|
||||||
|
for (int i = 0; i < excludedRewards.length && !isExcluded; i++)
|
||||||
|
{
|
||||||
|
if (excludedRewards[i] != null && excludedRewards[i].equals(treasure))
|
||||||
|
{
|
||||||
|
isExcluded = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if ((player == null || treasure.canGiveReward(player)) && !isExcluded)
|
||||||
|
{
|
||||||
|
possibleRewards.add(treasure);
|
||||||
|
totalWeight += treasure.getWeight();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (totalWeight > 0)
|
||||||
|
{
|
||||||
|
int weight = _random.nextInt(totalWeight);
|
||||||
|
int currentWeight = 0;
|
||||||
|
|
||||||
|
for (IReward reward : possibleRewards)
|
||||||
|
{
|
||||||
|
currentWeight += reward.getWeight();
|
||||||
|
|
||||||
|
if (weight <= currentWeight)
|
||||||
|
return reward;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
@ -1,4 +1,4 @@
|
|||||||
package mineplex.core.treasure.reward;
|
package mineplex.core.reward;
|
||||||
|
|
||||||
import mineplex.core.common.util.C;
|
import mineplex.core.common.util.C;
|
||||||
import static mineplex.core.common.util.C.*;
|
import static mineplex.core.common.util.C.*;
|
||||||
@ -14,12 +14,14 @@ public enum RewardRarity
|
|||||||
* (Fireworks, sounds, etc)
|
* (Fireworks, sounds, etc)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
COMMON(cAqua), UNCOMMON(cGreen), RARE(cGold), VERY_RARE(cRed);
|
COMMON("Common", cAqua), UNCOMMON("Uncommon", cGreen), RARE("Rare", cGold), LEGENDARY("Legendary", cRed);
|
||||||
|
|
||||||
|
private String _name;
|
||||||
private String _color;
|
private String _color;
|
||||||
|
|
||||||
RewardRarity(String color)
|
RewardRarity(String name, String color)
|
||||||
{
|
{
|
||||||
|
_name = name;
|
||||||
_color = color;
|
_color = color;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -28,4 +30,9 @@ public enum RewardRarity
|
|||||||
return _color;
|
return _color;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String getName()
|
||||||
|
{
|
||||||
|
return _name;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
@ -1,16 +1,16 @@
|
|||||||
package mineplex.core.treasure.reward.rewards;
|
package mineplex.core.reward.rewards;
|
||||||
|
|
||||||
import java.util.Random;
|
import java.util.Random;
|
||||||
|
|
||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
|
||||||
import mineplex.core.treasure.reward.ITreasureReward;
|
import mineplex.core.reward.IReward;
|
||||||
import mineplex.core.treasure.reward.RewardRarity;
|
import mineplex.core.reward.RewardRarity;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Created by shaun on 2014-09-08.
|
* Created by shaun on 2014-09-08.
|
||||||
*/
|
*/
|
||||||
public abstract class AbstractReward implements ITreasureReward
|
public abstract class AbstractReward implements IReward
|
||||||
{
|
{
|
||||||
protected static final Random RANDOM = new Random();
|
protected static final Random RANDOM = new Random();
|
||||||
|
|
@ -1,4 +1,4 @@
|
|||||||
package mineplex.core.treasure.reward.rewards;
|
package mineplex.core.reward.rewards;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Created by shaun on 2014-09-08.
|
* Created by shaun on 2014-09-08.
|
||||||
@ -6,14 +6,12 @@ package mineplex.core.treasure.reward.rewards;
|
|||||||
|
|
||||||
import java.util.Random;
|
import java.util.Random;
|
||||||
|
|
||||||
import org.bukkit.Material;
|
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
|
||||||
import mineplex.core.common.util.C;
|
|
||||||
import mineplex.core.common.util.Callback;
|
import mineplex.core.common.util.Callback;
|
||||||
import mineplex.core.donation.DonationManager;
|
import mineplex.core.donation.DonationManager;
|
||||||
import mineplex.core.treasure.reward.RewardRarity;
|
import mineplex.core.reward.RewardRarity;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Created by shaun on 2014-09-08.
|
* Created by shaun on 2014-09-08.
|
||||||
@ -32,7 +30,7 @@ public class CoinReward extends AbstractReward
|
|||||||
|
|
||||||
public CoinReward(DonationManager donationManager, int minCoinCount, int maxCoinCount, int weight, RewardRarity rarity, Random random)
|
public CoinReward(DonationManager donationManager, int minCoinCount, int maxCoinCount, int weight, RewardRarity rarity, Random random)
|
||||||
{
|
{
|
||||||
super(new ItemStack(Material.GOLD_INGOT), rarity, weight);
|
super(new ItemStack(175), rarity, weight);
|
||||||
_donationManager = donationManager;
|
_donationManager = donationManager;
|
||||||
_minCoinCount = minCoinCount;
|
_minCoinCount = minCoinCount;
|
||||||
_maxCoinCount = maxCoinCount;
|
_maxCoinCount = maxCoinCount;
|
||||||
@ -71,5 +69,4 @@ public class CoinReward extends AbstractReward
|
|||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
@ -1,11 +1,11 @@
|
|||||||
package mineplex.core.treasure.reward.rewards;
|
package mineplex.core.reward.rewards;
|
||||||
|
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
|
||||||
import mineplex.core.donation.DonationManager;
|
import mineplex.core.donation.DonationManager;
|
||||||
import mineplex.core.gadget.types.Gadget;
|
import mineplex.core.gadget.types.Gadget;
|
||||||
import mineplex.core.treasure.reward.RewardRarity;
|
import mineplex.core.reward.RewardRarity;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Created by shaun on 2014-09-04.
|
* Created by shaun on 2014-09-04.
|
@ -1,4 +1,4 @@
|
|||||||
package mineplex.core.treasure.reward.rewards;
|
package mineplex.core.reward.rewards;
|
||||||
|
|
||||||
import java.util.Random;
|
import java.util.Random;
|
||||||
|
|
||||||
@ -9,7 +9,7 @@ import org.bukkit.inventory.ItemStack;
|
|||||||
import mineplex.core.common.util.C;
|
import mineplex.core.common.util.C;
|
||||||
import mineplex.core.common.util.Callback;
|
import mineplex.core.common.util.Callback;
|
||||||
import mineplex.core.donation.DonationManager;
|
import mineplex.core.donation.DonationManager;
|
||||||
import mineplex.core.treasure.reward.RewardRarity;
|
import mineplex.core.reward.RewardRarity;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Created by shaun on 2014-09-04.
|
* Created by shaun on 2014-09-04.
|
@ -1,4 +1,4 @@
|
|||||||
package mineplex.core.treasure.reward.rewards;
|
package mineplex.core.reward.rewards;
|
||||||
|
|
||||||
import java.util.Random;
|
import java.util.Random;
|
||||||
|
|
||||||
@ -8,7 +8,7 @@ import org.bukkit.inventory.ItemStack;
|
|||||||
|
|
||||||
import mineplex.core.common.util.C;
|
import mineplex.core.common.util.C;
|
||||||
import mineplex.core.inventory.InventoryManager;
|
import mineplex.core.inventory.InventoryManager;
|
||||||
import mineplex.core.treasure.reward.RewardRarity;
|
import mineplex.core.reward.RewardRarity;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Created by shaun on 14-09-12.
|
* Created by shaun on 14-09-12.
|
@ -1,11 +1,10 @@
|
|||||||
package mineplex.core.treasure.reward.rewards;
|
package mineplex.core.reward.rewards;
|
||||||
|
|
||||||
import org.bukkit.Material;
|
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
|
||||||
import mineplex.core.donation.DonationManager;
|
import mineplex.core.donation.DonationManager;
|
||||||
import mineplex.core.treasure.reward.RewardRarity;
|
import mineplex.core.reward.RewardRarity;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Created by shaun on 14-09-12.
|
* Created by shaun on 14-09-12.
|
||||||
@ -35,7 +34,7 @@ public class UnknownPackageReward extends AbstractReward
|
|||||||
@Override
|
@Override
|
||||||
public boolean canGiveReward(Player player)
|
public boolean canGiveReward(Player player)
|
||||||
{
|
{
|
||||||
return _donationManager.Get(player.getName()).OwnsUnknownPackage(_packageName);
|
return !_donationManager.Get(player.getName()).OwnsUnknownPackage(_packageName);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected String getPackageName()
|
protected String getPackageName()
|
@ -1,17 +1,27 @@
|
|||||||
package mineplex.core.treasure;
|
package mineplex.core.treasure;
|
||||||
|
|
||||||
|
import org.bukkit.block.Block;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Created by Shaun on 8/28/2014.
|
* Created by Shaun on 8/28/2014.
|
||||||
*/
|
*/
|
||||||
public class BlockInfo
|
public class BlockInfo
|
||||||
{
|
{
|
||||||
|
private Block _block;
|
||||||
|
|
||||||
private int _id;
|
private int _id;
|
||||||
private byte _data;
|
private byte _data;
|
||||||
|
|
||||||
public BlockInfo(int id, byte data)
|
public BlockInfo(Block block)
|
||||||
{
|
{
|
||||||
_id = id;
|
_block = block;
|
||||||
_data = data;
|
_id = block.getTypeId();
|
||||||
|
_data = block.getData();
|
||||||
|
}
|
||||||
|
|
||||||
|
public Block getBlock()
|
||||||
|
{
|
||||||
|
return _block;
|
||||||
}
|
}
|
||||||
|
|
||||||
public int getId()
|
public int getId()
|
||||||
@ -23,4 +33,10 @@ public class BlockInfo
|
|||||||
{
|
{
|
||||||
return _data;
|
return _data;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int hashCode()
|
||||||
|
{
|
||||||
|
return _block.hashCode();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -8,7 +8,7 @@ import org.bukkit.entity.Player;
|
|||||||
import net.minecraft.server.v1_7_R4.PacketPlayOutBlockAction;
|
import net.minecraft.server.v1_7_R4.PacketPlayOutBlockAction;
|
||||||
|
|
||||||
import mineplex.core.common.util.UtilServer;
|
import mineplex.core.common.util.UtilServer;
|
||||||
import mineplex.core.treasure.reward.ITreasureReward;
|
import mineplex.core.reward.IReward;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Created by Shaun on 8/29/2014.
|
* Created by Shaun on 8/29/2014.
|
||||||
@ -16,10 +16,10 @@ import mineplex.core.treasure.reward.ITreasureReward;
|
|||||||
public class ChestData
|
public class ChestData
|
||||||
{
|
{
|
||||||
private Block _block;
|
private Block _block;
|
||||||
private ITreasureReward _reward;
|
private IReward _reward;
|
||||||
private boolean _opened;
|
private boolean _opened;
|
||||||
|
|
||||||
public ChestData(Block block, ITreasureReward reward)
|
public ChestData(Block block, IReward reward)
|
||||||
{
|
{
|
||||||
_block = block;
|
_block = block;
|
||||||
_opened = false;
|
_opened = false;
|
||||||
@ -41,7 +41,7 @@ public class ChestData
|
|||||||
return _block;
|
return _block;
|
||||||
}
|
}
|
||||||
|
|
||||||
public ITreasureReward getReward()
|
public IReward getReward()
|
||||||
{
|
{
|
||||||
return _reward;
|
return _reward;
|
||||||
}
|
}
|
||||||
|
@ -1,9 +1,10 @@
|
|||||||
package mineplex.core.treasure;
|
package mineplex.core.treasure;
|
||||||
|
|
||||||
|
import java.util.HashSet;
|
||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
import java.util.LinkedList;
|
import java.util.LinkedList;
|
||||||
import java.util.Map;
|
|
||||||
import java.util.Random;
|
import java.util.Random;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.Effect;
|
import org.bukkit.Effect;
|
||||||
@ -15,25 +16,31 @@ import org.bukkit.craftbukkit.v1_7_R4.util.CraftMagicNumbers;
|
|||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import net.minecraft.server.v1_7_R4.PacketPlayOutBlockAction;
|
import net.minecraft.server.v1_7_R4.PacketPlayOutBlockAction;
|
||||||
|
|
||||||
|
import mineplex.core.common.util.C;
|
||||||
import mineplex.core.common.util.F;
|
import mineplex.core.common.util.F;
|
||||||
import mineplex.core.common.util.NautHashMap;
|
|
||||||
import mineplex.core.common.util.UtilParticle;
|
import mineplex.core.common.util.UtilParticle;
|
||||||
|
import mineplex.core.reward.IReward;
|
||||||
|
import mineplex.core.reward.RewardRarity;
|
||||||
import mineplex.core.treasure.animation.Animation;
|
import mineplex.core.treasure.animation.Animation;
|
||||||
import mineplex.core.treasure.animation.ChestExplodeAnimation;
|
|
||||||
import mineplex.core.treasure.animation.ChestOpenAnimation;
|
import mineplex.core.treasure.animation.ChestOpenAnimation;
|
||||||
import mineplex.core.treasure.animation.ChestSpawnAnimation;
|
import mineplex.core.treasure.animation.ChestSpawnAnimation;
|
||||||
import mineplex.core.treasure.animation.CircleAnimation;
|
import mineplex.core.treasure.animation.LegendaryAnimation;
|
||||||
import mineplex.core.treasure.animation.FireworksAnimation;
|
import mineplex.core.treasure.animation.RareAnimation;
|
||||||
import mineplex.core.treasure.animation.TreasureRemoveAnimation;
|
import mineplex.core.treasure.animation.TreasureRemoveAnimation;
|
||||||
import mineplex.core.treasure.reward.ITreasureReward;
|
import mineplex.core.treasure.animation.UncommonAnimation;
|
||||||
import mineplex.core.treasure.reward.RewardRarity;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Created by Shaun on 8/27/2014.
|
* Created by Shaun on 8/27/2014.
|
||||||
*/
|
*/
|
||||||
public class Treasure
|
public class Treasure
|
||||||
{
|
{
|
||||||
private NautHashMap<Block, BlockInfo> _blockRestoreMap = new NautHashMap<Block, BlockInfo>();
|
|
||||||
|
// Decay Sets
|
||||||
|
private HashSet<BlockInfo> _wallsBlockInfo = new HashSet<>();
|
||||||
|
private HashSet<BlockInfo> _outerRingBlockInfo = new HashSet<>();
|
||||||
|
private HashSet<BlockInfo> _centerBlockInfo = new HashSet<>();
|
||||||
|
private HashSet<BlockInfo> _chestBlockInfo = new HashSet<>();
|
||||||
|
|
||||||
private Player _player;
|
private Player _player;
|
||||||
private Random _random;
|
private Random _random;
|
||||||
private Block _centerBlock;
|
private Block _centerBlock;
|
||||||
@ -47,12 +54,12 @@ public class Treasure
|
|||||||
|
|
||||||
private TreasureStyle _style;
|
private TreasureStyle _style;
|
||||||
|
|
||||||
public Treasure(Player player, ITreasureReward[] rewards)
|
public Treasure(Player player, IReward[] rewards)
|
||||||
{
|
{
|
||||||
this(player, new Random(), rewards);
|
this(player, new Random(), rewards);
|
||||||
}
|
}
|
||||||
|
|
||||||
public Treasure(Player player, Random seed, ITreasureReward[] rewards)
|
public Treasure(Player player, Random seed, IReward[] rewards)
|
||||||
{
|
{
|
||||||
_player = player;
|
_player = player;
|
||||||
_random = seed;
|
_random = seed;
|
||||||
@ -80,6 +87,7 @@ public class Treasure
|
|||||||
if (Math.abs(x) == 1 || Math.abs(z) == 1)
|
if (Math.abs(x) == 1 || Math.abs(z) == 1)
|
||||||
{
|
{
|
||||||
Block block = _centerBlock.getRelative(x, 0, z);
|
Block block = _centerBlock.getRelative(x, 0, z);
|
||||||
|
_centerBlockInfo.add(new BlockInfo(block));
|
||||||
setBlock(block, _style.getPrimaryMaterial(), _style.getPrimaryData());
|
setBlock(block, _style.getPrimaryMaterial(), _style.getPrimaryData());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -92,11 +100,13 @@ public class Treasure
|
|||||||
{
|
{
|
||||||
{
|
{
|
||||||
Block block = _centerBlock.getRelative(x, 0, -2);
|
Block block = _centerBlock.getRelative(x, 0, -2);
|
||||||
|
_outerRingBlockInfo.add(new BlockInfo(block));
|
||||||
setBlock(block, _style.getSecondaryMaterial(), _style.getSecondaryData());
|
setBlock(block, _style.getSecondaryMaterial(), _style.getSecondaryData());
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
Block block = _centerBlock.getRelative(x, 0, 2);
|
Block block = _centerBlock.getRelative(x, 0, 2);
|
||||||
|
_outerRingBlockInfo.add(new BlockInfo(block));
|
||||||
setBlock(block, _style.getSecondaryMaterial(), _style.getSecondaryData());
|
setBlock(block, _style.getSecondaryMaterial(), _style.getSecondaryData());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -105,17 +115,19 @@ public class Treasure
|
|||||||
{
|
{
|
||||||
{
|
{
|
||||||
Block block = _centerBlock.getRelative(-2, 0, z);
|
Block block = _centerBlock.getRelative(-2, 0, z);
|
||||||
|
_outerRingBlockInfo.add(new BlockInfo(block));
|
||||||
setBlock(block, _style.getSecondaryMaterial(), _style.getSecondaryData());
|
setBlock(block, _style.getSecondaryMaterial(), _style.getSecondaryData());
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
Block block = _centerBlock.getRelative(2, 0, z);
|
Block block = _centerBlock.getRelative(2, 0, z);
|
||||||
|
_outerRingBlockInfo.add(new BlockInfo(block));
|
||||||
setBlock(block, _style.getSecondaryMaterial(), _style.getSecondaryData());
|
setBlock(block, _style.getSecondaryMaterial(), _style.getSecondaryData());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void createGlass()
|
private void createWalls()
|
||||||
{
|
{
|
||||||
for (int z = -2; z <= 2; z++)
|
for (int z = -2; z <= 2; z++)
|
||||||
{
|
{
|
||||||
@ -125,6 +137,7 @@ public class Treasure
|
|||||||
{
|
{
|
||||||
Block playerBlock = getPlayerBlock();
|
Block playerBlock = getPlayerBlock();
|
||||||
Block block = playerBlock.getRelative(x, 0, z);
|
Block block = playerBlock.getRelative(x, 0, z);
|
||||||
|
_wallsBlockInfo.add(new BlockInfo(block));
|
||||||
setBlock(block, _style.getWallMaterial(), _style.getWallData());
|
setBlock(block, _style.getWallMaterial(), _style.getWallData());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -146,7 +159,10 @@ public class Treasure
|
|||||||
if (_tickCount == 5)
|
if (_tickCount == 5)
|
||||||
{
|
{
|
||||||
Block block = _centerBlock;
|
Block block = _centerBlock;
|
||||||
setBlock(block, _style.getPrimaryMaterial(), _style.getPrimaryData());
|
_centerBlockInfo.add(new BlockInfo(block));
|
||||||
|
_centerBlockInfo.add(new BlockInfo(block.getRelative(BlockFace.DOWN)));
|
||||||
|
setBlock(block, Material.REDSTONE_LAMP_ON, (byte) 0);
|
||||||
|
setBlock(block.getRelative(BlockFace.DOWN), Material.REDSTONE_TORCH_ON, (byte) 0);
|
||||||
}
|
}
|
||||||
else if (_tickCount == 10)
|
else if (_tickCount == 10)
|
||||||
{
|
{
|
||||||
@ -158,30 +174,30 @@ public class Treasure
|
|||||||
}
|
}
|
||||||
else if (_tickCount == 30)
|
else if (_tickCount == 30)
|
||||||
{
|
{
|
||||||
createGlass();
|
createWalls();
|
||||||
}
|
}
|
||||||
else if (_tickCount == 50)
|
else if (_tickCount == 50)
|
||||||
{
|
{
|
||||||
Block block = getPlayerBlock().getRelative(2, 0, 0);
|
Block block = getPlayerBlock().getRelative(2, 0, 0);
|
||||||
ChestSpawnAnimation task = new ChestSpawnAnimation(this, block, (byte)4);
|
ChestSpawnAnimation task = new ChestSpawnAnimation(this, block, (byte)4, _chestBlockInfo);
|
||||||
_animations.add(task);
|
_animations.add(task);
|
||||||
}
|
}
|
||||||
else if (_tickCount == 80)
|
else if (_tickCount == 80)
|
||||||
{
|
{
|
||||||
Block block = getPlayerBlock().getRelative(-2, 0, 0);
|
Block block = getPlayerBlock().getRelative(-2, 0, 0);
|
||||||
ChestSpawnAnimation task = new ChestSpawnAnimation(this, block, (byte)5);
|
ChestSpawnAnimation task = new ChestSpawnAnimation(this, block, (byte)5, _chestBlockInfo);
|
||||||
_animations.add(task);
|
_animations.add(task);
|
||||||
}
|
}
|
||||||
else if (_tickCount == 110)
|
else if (_tickCount == 110)
|
||||||
{
|
{
|
||||||
Block block = getPlayerBlock().getRelative(0, 0, 2);
|
Block block = getPlayerBlock().getRelative(0, 0, 2);
|
||||||
ChestSpawnAnimation task = new ChestSpawnAnimation(this, block, (byte)2);
|
ChestSpawnAnimation task = new ChestSpawnAnimation(this, block, (byte)2, _chestBlockInfo);
|
||||||
_animations.add(task);
|
_animations.add(task);
|
||||||
}
|
}
|
||||||
else if (_tickCount == 140)
|
else if (_tickCount == 140)
|
||||||
{
|
{
|
||||||
Block block = getPlayerBlock().getRelative(0, 0, -2);
|
Block block = getPlayerBlock().getRelative(0, 0, -2);
|
||||||
ChestSpawnAnimation task = new ChestSpawnAnimation(this, block, (byte)3);
|
ChestSpawnAnimation task = new ChestSpawnAnimation(this, block, (byte)3, _chestBlockInfo);
|
||||||
_animations.add(task);
|
_animations.add(task);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -223,21 +239,13 @@ public class Treasure
|
|||||||
return _centerBlock.getRelative(BlockFace.UP);
|
return _centerBlock.getRelative(BlockFace.UP);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setBlock(Block block, Material material, byte data, boolean addToBlockRestoreMap)
|
public void setBlock(Block block, Material material, byte data)
|
||||||
{
|
{
|
||||||
if (addToBlockRestoreMap)
|
|
||||||
_blockRestoreMap.put(block, new BlockInfo(block.getTypeId(), block.getData()));
|
|
||||||
|
|
||||||
block.setType(material);
|
block.setType(material);
|
||||||
block.setData(data);
|
block.setData(data);
|
||||||
block.getLocation().getWorld().playEffect(block.getLocation(), Effect.STEP_SOUND, block.getTypeId());
|
block.getLocation().getWorld().playEffect(block.getLocation(), Effect.STEP_SOUND, block.getTypeId());
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setBlock(Block block, Material material, byte data)
|
|
||||||
{
|
|
||||||
setBlock(block, material, data, true);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void openChest(Block block)
|
public void openChest(Block block)
|
||||||
{
|
{
|
||||||
ChestData data = getChestData(block);
|
ChestData data = getChestData(block);
|
||||||
@ -252,22 +260,22 @@ public class Treasure
|
|||||||
// Extra effects based off the rarity of the treasure
|
// Extra effects based off the rarity of the treasure
|
||||||
if (data.getReward().getRarity() == RewardRarity.UNCOMMON)
|
if (data.getReward().getRarity() == RewardRarity.UNCOMMON)
|
||||||
{
|
{
|
||||||
_animations.add(new FireworksAnimation(this, data.getBlock()));
|
_animations.add(new UncommonAnimation(this, data.getBlock()));
|
||||||
}
|
}
|
||||||
else if (data.getReward().getRarity() == RewardRarity.RARE)
|
else if (data.getReward().getRarity() == RewardRarity.RARE)
|
||||||
{
|
{
|
||||||
_animations.add(new CircleAnimation(this, data.getBlock().getLocation().add(0.5, 1.5, 0.5)));
|
_animations.add(new RareAnimation(this, data.getBlock().getLocation().add(0.5, 1.5, 0.5)));
|
||||||
Bukkit.broadcastMessage(F.main("Treasure", F.name(_player.getName()) + " opened a Rare treasure!"));
|
Bukkit.broadcastMessage(F.main("Treasure", F.name(_player.getName()) + " found " + C.cGold + "Rare " + text));
|
||||||
}
|
}
|
||||||
else if (data.getReward().getRarity() == RewardRarity.VERY_RARE)
|
else if (data.getReward().getRarity() == RewardRarity.LEGENDARY)
|
||||||
{
|
{
|
||||||
_animations.add(new ChestExplodeAnimation(this, data.getBlock()));
|
_animations.add(new LegendaryAnimation(this, data.getBlock()));
|
||||||
Bukkit.broadcastMessage(F.main("Treasure", F.name(_player.getName()) + " opened a Legendary treasure!"));
|
Bukkit.broadcastMessage(F.main("Treasure", F.name(_player.getName()) + " found " + C.cRed + "Legendary " + text));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (isFinished())
|
if (isFinished())
|
||||||
{
|
{
|
||||||
TreasureRemoveAnimation animation = new TreasureRemoveAnimation(this, _blockRestoreMap);
|
TreasureRemoveAnimation animation = new TreasureRemoveAnimation(this, _centerBlockInfo, _outerRingBlockInfo, _wallsBlockInfo);
|
||||||
_animations.add(animation);
|
_animations.add(animation);
|
||||||
_finished = true;
|
_finished = true;
|
||||||
}
|
}
|
||||||
@ -286,7 +294,6 @@ public class Treasure
|
|||||||
for (Player player : players)
|
for (Player player : players)
|
||||||
{
|
{
|
||||||
((CraftPlayer) player).getHandle().playerConnection.sendPacket(packet);
|
((CraftPlayer) player).getHandle().playerConnection.sendPacket(packet);
|
||||||
System.out.println("sending chest open packet");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -337,20 +344,11 @@ public class Treasure
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for (Map.Entry<Block, BlockInfo> entry : _blockRestoreMap.entrySet())
|
// Remove any extra blocks
|
||||||
{
|
resetBlockInfo(_wallsBlockInfo);
|
||||||
Block block = entry.getKey();
|
resetBlockInfo(_centerBlockInfo);
|
||||||
BlockInfo data = entry.getValue();
|
resetBlockInfo(_outerRingBlockInfo);
|
||||||
|
resetBlockInfo(_chestBlockInfo);
|
||||||
if (block.getType().equals(Material.CHEST))
|
|
||||||
{
|
|
||||||
block.getLocation().getWorld().createExplosion(block.getLocation().add(0.5, 0.5, 0.5), 0F);
|
|
||||||
}
|
|
||||||
block.getLocation().getWorld().playEffect(block.getLocation(), Effect.STEP_SOUND, block.getTypeId());
|
|
||||||
|
|
||||||
block.setTypeId(data.getId());
|
|
||||||
block.setData(data.getData());
|
|
||||||
}
|
|
||||||
|
|
||||||
for (Animation animation : _animations)
|
for (Animation animation : _animations)
|
||||||
{
|
{
|
||||||
@ -359,6 +357,26 @@ public class Treasure
|
|||||||
_animations.clear();
|
_animations.clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void resetBlockInfo(Set<BlockInfo> blockInfoSet)
|
||||||
|
{
|
||||||
|
for (BlockInfo blockInfo : blockInfoSet)
|
||||||
|
{
|
||||||
|
Block block = blockInfo.getBlock();
|
||||||
|
|
||||||
|
if (block.getType().equals(Material.CHEST))
|
||||||
|
{
|
||||||
|
UtilParticle.PlayParticle(UtilParticle.ParticleType.LARGE_SMOKE, block.getLocation().add(0.5, 0.5, 0.5), 0.5F, 0.5F, 0.5F, 0.1F, 10);
|
||||||
|
// block.getLocation().getWorld().createExplosion(block.getLocation().add(0.5, 0.5, 0.5), 0F);
|
||||||
|
}
|
||||||
|
block.getLocation().getWorld().playEffect(block.getLocation(), Effect.STEP_SOUND, block.getTypeId());
|
||||||
|
|
||||||
|
block.setTypeId(blockInfo.getId());
|
||||||
|
block.setData(blockInfo.getData());
|
||||||
|
}
|
||||||
|
|
||||||
|
blockInfoSet.clear();
|
||||||
|
}
|
||||||
|
|
||||||
public TreasureStyle getStyle()
|
public TreasureStyle getStyle()
|
||||||
{
|
{
|
||||||
return _style;
|
return _style;
|
||||||
|
@ -11,12 +11,14 @@ import org.bukkit.entity.Entity;
|
|||||||
import org.bukkit.entity.EntityType;
|
import org.bukkit.entity.EntityType;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.event.EventHandler;
|
import org.bukkit.event.EventHandler;
|
||||||
|
import org.bukkit.event.EventPriority;
|
||||||
import org.bukkit.event.block.Action;
|
import org.bukkit.event.block.Action;
|
||||||
import org.bukkit.event.player.PlayerCommandPreprocessEvent;
|
import org.bukkit.event.player.PlayerCommandPreprocessEvent;
|
||||||
import org.bukkit.event.player.PlayerInteractEvent;
|
import org.bukkit.event.player.PlayerInteractEvent;
|
||||||
import org.bukkit.event.player.PlayerJoinEvent;
|
import org.bukkit.event.player.PlayerJoinEvent;
|
||||||
import org.bukkit.event.player.PlayerMoveEvent;
|
import org.bukkit.event.player.PlayerMoveEvent;
|
||||||
import org.bukkit.event.player.PlayerQuitEvent;
|
import org.bukkit.event.player.PlayerQuitEvent;
|
||||||
|
import org.bukkit.event.player.PlayerVelocityEvent;
|
||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
import org.bukkit.plugin.java.JavaPlugin;
|
import org.bukkit.plugin.java.JavaPlugin;
|
||||||
|
|
||||||
@ -31,15 +33,16 @@ import mineplex.core.common.util.UtilEnt;
|
|||||||
import mineplex.core.common.util.UtilMath;
|
import mineplex.core.common.util.UtilMath;
|
||||||
import mineplex.core.common.util.UtilPlayer;
|
import mineplex.core.common.util.UtilPlayer;
|
||||||
import mineplex.core.donation.DonationManager;
|
import mineplex.core.donation.DonationManager;
|
||||||
|
import mineplex.core.event.StackerEvent;
|
||||||
import mineplex.core.inventory.InventoryManager;
|
import mineplex.core.inventory.InventoryManager;
|
||||||
|
import mineplex.core.reward.IReward;
|
||||||
|
import mineplex.core.reward.RewardManager;
|
||||||
|
import mineplex.core.reward.RewardRarity;
|
||||||
|
import mineplex.core.reward.rewards.CoinReward;
|
||||||
|
import mineplex.core.reward.rewards.InventoryReward;
|
||||||
|
import mineplex.core.reward.rewards.UnknownPackageReward;
|
||||||
import mineplex.core.treasure.event.TreasureFinishEvent;
|
import mineplex.core.treasure.event.TreasureFinishEvent;
|
||||||
import mineplex.core.treasure.event.TreasureStartEvent;
|
import mineplex.core.treasure.event.TreasureStartEvent;
|
||||||
import mineplex.core.treasure.reward.ITreasureReward;
|
|
||||||
import mineplex.core.treasure.reward.RewardManager;
|
|
||||||
import mineplex.core.treasure.reward.RewardRarity;
|
|
||||||
import mineplex.core.treasure.reward.rewards.CoinReward;
|
|
||||||
import mineplex.core.treasure.reward.rewards.InventoryReward;
|
|
||||||
import mineplex.core.treasure.reward.rewards.UnknownPackageReward;
|
|
||||||
import mineplex.core.updater.UpdateType;
|
import mineplex.core.updater.UpdateType;
|
||||||
import mineplex.core.updater.event.UpdateEvent;
|
import mineplex.core.updater.event.UpdateEvent;
|
||||||
|
|
||||||
@ -50,171 +53,18 @@ public class TreasureManager extends MiniPlugin
|
|||||||
{
|
{
|
||||||
private NautHashMap<Player, Treasure> _playerTreasureMap;
|
private NautHashMap<Player, Treasure> _playerTreasureMap;
|
||||||
private RewardManager _rewardManager;
|
private RewardManager _rewardManager;
|
||||||
private DonationManager _donationManager;
|
|
||||||
private InventoryManager _inventoryManager;
|
|
||||||
|
|
||||||
public TreasureManager(JavaPlugin plugin, DonationManager donationManager, InventoryManager inventoryManager)
|
public TreasureManager(JavaPlugin plugin, DonationManager donationManager, InventoryManager inventoryManager)
|
||||||
{
|
{
|
||||||
super("Treasure", plugin);
|
super("Treasure", plugin);
|
||||||
|
|
||||||
_donationManager = donationManager;
|
|
||||||
_playerTreasureMap = new NautHashMap<Player, Treasure>();
|
_playerTreasureMap = new NautHashMap<Player, Treasure>();
|
||||||
_rewardManager = new RewardManager();
|
_rewardManager = new RewardManager(donationManager, inventoryManager,
|
||||||
_inventoryManager = inventoryManager;
|
250, 500,
|
||||||
|
750, 1500,
|
||||||
// Very Rare
|
2000, 3000,
|
||||||
{
|
10000, 20000,
|
||||||
// Coins
|
true);
|
||||||
{
|
|
||||||
_rewardManager.addReward(new CoinReward(donationManager, 2000, 5000, 25, RewardRarity.VERY_RARE));
|
|
||||||
}
|
|
||||||
// Mounts
|
|
||||||
{
|
|
||||||
_rewardManager.addReward(new UnknownPackageReward(donationManager, "Infernal Horror", "Infernal Horror",
|
|
||||||
new ItemStack(Material.BONE), RewardRarity.VERY_RARE, 33));
|
|
||||||
}
|
|
||||||
// Morphs
|
|
||||||
{
|
|
||||||
_rewardManager.addReward(new UnknownPackageReward(donationManager, "Block Morph", "Block Morph",
|
|
||||||
new ItemStack(Material.EMERALD_BLOCK), RewardRarity.VERY_RARE, 20));
|
|
||||||
}
|
|
||||||
// Particles
|
|
||||||
{
|
|
||||||
_rewardManager.addReward(new UnknownPackageReward(donationManager, "Shadow Walk Particles", "Shadow Walk",
|
|
||||||
new ItemStack(Material.LEATHER_BOOTS), RewardRarity.VERY_RARE, 33));
|
|
||||||
_rewardManager.addReward(new UnknownPackageReward(donationManager, "Enchanted Particles", "Enchanted",
|
|
||||||
new ItemStack(Material.BOOK), RewardRarity.VERY_RARE, 25));
|
|
||||||
_rewardManager.addReward(new UnknownPackageReward(donationManager, "Flame Rings Particles", "Flame Rings",
|
|
||||||
new ItemStack(Material.BLAZE_POWDER), RewardRarity.VERY_RARE, 17));
|
|
||||||
_rewardManager.addReward(new UnknownPackageReward(donationManager, "Rain Cloud Particles", "Rain Cloud",
|
|
||||||
new ItemStack(Material.INK_SACK, 1, (short) 0, (byte) 4), RewardRarity.VERY_RARE, 13));
|
|
||||||
_rewardManager.addReward(new UnknownPackageReward(donationManager, "Blood Helix Particles", "Blood Helix",
|
|
||||||
new ItemStack(Material.REDSTONE), RewardRarity.VERY_RARE, 10));
|
|
||||||
_rewardManager.addReward(new UnknownPackageReward(donationManager, "Emerald Twirl Particles", "Green Ring",
|
|
||||||
new ItemStack(Material.EMERALD), RewardRarity.VERY_RARE, 8));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Rare
|
|
||||||
{
|
|
||||||
// Coins
|
|
||||||
{
|
|
||||||
_rewardManager.addReward(new CoinReward(donationManager, 1000, 2000, 100, RewardRarity.RARE));
|
|
||||||
}
|
|
||||||
// Gadgets
|
|
||||||
{
|
|
||||||
// _rewardManager.addReward(new InventoryReward(inventoryManager, "Paintball Gun Ammo", "Paintball Gun", 200, 400,
|
|
||||||
// new ItemStack(Material.GOLD_BARDING), RewardRarity.RARE, 100));
|
|
||||||
// _rewardManager.addReward(new InventoryReward(inventoryManager, "Fireworks", "Fireworks",100, 200,
|
|
||||||
// new ItemStack(Material.FIREWORK), RewardRarity.RARE, 100));
|
|
||||||
// _rewardManager.addReward(new InventoryReward(inventoryManager, "Melon Launcher Ammo", "Melon Launcher", 100, 200,
|
|
||||||
// new ItemStack(Material.MELON_BLOCK), RewardRarity.RARE, 100));
|
|
||||||
// _rewardManager.addReward(new InventoryReward(inventoryManager, "Flesh Hook Ammo", "Flesh Hook", 80, 160,
|
|
||||||
// new ItemStack(Material.getMaterial(131)), RewardRarity.RARE, 100));
|
|
||||||
// _rewardManager.addReward(new InventoryReward(inventoryManager, "Ethereal Pearls", "Ethereal Pearl", 60, 120,
|
|
||||||
// new ItemStack(Material.ENDER_PEARL), RewardRarity.RARE, 100));
|
|
||||||
// _rewardManager.addReward(new InventoryReward(inventoryManager, "Bat Blaster Ammo", "Bat Blaster", 40, 80,
|
|
||||||
// new ItemStack(Material.IRON_BARDING), RewardRarity.RARE, 100));
|
|
||||||
// _rewardManager.addReward(new InventoryReward(inventoryManager, "TNT", "TNT", 40, 80,
|
|
||||||
// new ItemStack(Material.TNT), RewardRarity.RARE, 100));
|
|
||||||
// _rewardManager.addReward(new InventoryReward(inventoryManager, "Coin Party Bomb", "Coin Party Bomb", 1, 1,
|
|
||||||
// new ItemStack(Material.getMaterial(175)), RewardRarity.RARE, 100));
|
|
||||||
}
|
|
||||||
// Pets
|
|
||||||
{
|
|
||||||
_rewardManager.addReward(new UnknownPackageReward(donationManager, "Chicken Pet", "Chicken",
|
|
||||||
new ItemStack(Material.MONSTER_EGG, 1, EntityType.CHICKEN.getTypeId()), RewardRarity.RARE, 143));
|
|
||||||
_rewardManager.addReward(new UnknownPackageReward(donationManager, "Wolf Pet", "Wolf",
|
|
||||||
new ItemStack(Material.MONSTER_EGG, 1, EntityType.WOLF.getTypeId()), RewardRarity.RARE, 125));
|
|
||||||
}
|
|
||||||
// Mounts
|
|
||||||
{
|
|
||||||
_rewardManager.addReward(new UnknownPackageReward(donationManager, "Mount Mule", "Mount Mule",
|
|
||||||
new ItemStack(Material.HAY_BLOCK), RewardRarity.RARE, 200));
|
|
||||||
_rewardManager.addReward(new UnknownPackageReward(donationManager, "Minecart Mount", "Minecart",
|
|
||||||
new ItemStack(Material.MINECART), RewardRarity.RARE, 100));
|
|
||||||
_rewardManager.addReward(new UnknownPackageReward(donationManager, "Slime Mount", "Slime Mount",
|
|
||||||
new ItemStack(Material.SLIME_BALL), RewardRarity.RARE, 67));
|
|
||||||
_rewardManager.addReward(new UnknownPackageReward(donationManager, "Glacial Steed", "Glacial Steed",
|
|
||||||
new ItemStack(Material.SNOW_BALL), RewardRarity.RARE, 50));
|
|
||||||
}
|
|
||||||
// Morphs
|
|
||||||
{
|
|
||||||
_rewardManager.addReward(new UnknownPackageReward(donationManager, "Cow Morph", "Cow Morph",
|
|
||||||
new ItemStack(Material.LEATHER), RewardRarity.RARE, 167));
|
|
||||||
_rewardManager.addReward(new UnknownPackageReward(donationManager, "Villager Morph", "Villager Morph",
|
|
||||||
new ItemStack(Material.EMERALD), RewardRarity.RARE, 83));
|
|
||||||
_rewardManager.addReward(new UnknownPackageReward(donationManager, "Chicken Morph", "Chicken Morph",
|
|
||||||
new ItemStack(Material.FEATHER), RewardRarity.RARE, 50));
|
|
||||||
_rewardManager.addReward(new UnknownPackageReward(donationManager, "Enderman Morph", "Enderman Morph",
|
|
||||||
new ItemStack(Material.ENDER_PEARL), RewardRarity.RARE, 33));
|
|
||||||
_rewardManager.addReward(new UnknownPackageReward(donationManager, "Bat Morph", "Bat Morph",
|
|
||||||
new ItemStack(Material.SKULL_ITEM, 1, (short) 0, (byte) 1), RewardRarity.RARE, 25));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Uncommon
|
|
||||||
{
|
|
||||||
// Coins
|
|
||||||
{
|
|
||||||
_rewardManager.addReward(new CoinReward(donationManager, 500, 1000, 250, RewardRarity.UNCOMMON));
|
|
||||||
}
|
|
||||||
// Gadgets
|
|
||||||
{
|
|
||||||
_rewardManager.addReward(new InventoryReward(inventoryManager, "Paintball Gun Ammo", "Paintball Gun", 100, 200,
|
|
||||||
new ItemStack(Material.GOLD_BARDING), RewardRarity.UNCOMMON, 250));
|
|
||||||
_rewardManager.addReward(new InventoryReward(inventoryManager, "Fireworks", "Fireworks", 50, 100,
|
|
||||||
new ItemStack(Material.FIREWORK), RewardRarity.UNCOMMON, 250));
|
|
||||||
_rewardManager.addReward(new InventoryReward(inventoryManager, "Melon Launcher Ammo", "Melon Launcher", 50, 100,
|
|
||||||
new ItemStack(Material.MELON_BLOCK), RewardRarity.UNCOMMON, 250));
|
|
||||||
_rewardManager.addReward(new InventoryReward(inventoryManager, "Flesh Hook Ammo", "Flesh Hook", 40, 80,
|
|
||||||
new ItemStack(Material.getMaterial(131)), RewardRarity.UNCOMMON, 250));
|
|
||||||
_rewardManager.addReward(new InventoryReward(inventoryManager, "Ethereal Pearls", "Ethereal Pearl", 30, 60,
|
|
||||||
new ItemStack(Material.ENDER_PEARL), RewardRarity.UNCOMMON, 250));
|
|
||||||
_rewardManager.addReward(new InventoryReward(inventoryManager, "Bat Blaster Ammo", "Bat Blaster", 20, 40,
|
|
||||||
new ItemStack(Material.IRON_BARDING), RewardRarity.UNCOMMON, 250));
|
|
||||||
_rewardManager.addReward(new InventoryReward(inventoryManager, "TNT", "TNT", 20, 40,
|
|
||||||
new ItemStack(Material.TNT), RewardRarity.UNCOMMON, 250));
|
|
||||||
}
|
|
||||||
// Pets
|
|
||||||
{
|
|
||||||
_rewardManager.addReward(new UnknownPackageReward(donationManager, "Cow Pet", "Cow",
|
|
||||||
new ItemStack(Material.MONSTER_EGG, 1, EntityType.COW.getTypeId()), RewardRarity.UNCOMMON, 500));
|
|
||||||
_rewardManager.addReward(new UnknownPackageReward(donationManager, "Sheep Pet", "Sheep",
|
|
||||||
new ItemStack(Material.MONSTER_EGG, 1, EntityType.SHEEP.getTypeId()), RewardRarity.UNCOMMON, 333));
|
|
||||||
_rewardManager.addReward(new UnknownPackageReward(donationManager, "Mooshroom Pet", "Mooshroom",
|
|
||||||
new ItemStack(Material.MONSTER_EGG, 1, EntityType.MUSHROOM_COW.getTypeId()), RewardRarity.UNCOMMON, 200));
|
|
||||||
_rewardManager.addReward(new UnknownPackageReward(donationManager, "Pig Pet", "Pig",
|
|
||||||
new ItemStack(Material.MONSTER_EGG, 1, EntityType.PIG.getTypeId()), RewardRarity.UNCOMMON, 200));
|
|
||||||
_rewardManager.addReward(new UnknownPackageReward(donationManager, "Ocelot Pet", "Ocelot",
|
|
||||||
new ItemStack(Material.MONSTER_EGG, 1, EntityType.OCELOT.getTypeId()), RewardRarity.UNCOMMON, 167));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Common
|
|
||||||
{
|
|
||||||
// Coins
|
|
||||||
{
|
|
||||||
_rewardManager.addReward(new CoinReward(donationManager, 250, 500, 1, RewardRarity.COMMON));
|
|
||||||
}
|
|
||||||
// Gadgets
|
|
||||||
{
|
|
||||||
_rewardManager.addReward(new InventoryReward(inventoryManager, "Paintball Gun Ammo", "Paintball Gun", 50, 100,
|
|
||||||
new ItemStack(Material.GOLD_BARDING), RewardRarity.COMMON, 1));
|
|
||||||
_rewardManager.addReward(new InventoryReward(inventoryManager, "Fireworks", "Fireworks", 25, 50,
|
|
||||||
new ItemStack(Material.FIREWORK), RewardRarity.COMMON, 1));
|
|
||||||
_rewardManager.addReward(new InventoryReward(inventoryManager, "Melon Launcher Ammo", "Melon Launcher", 25, 50,
|
|
||||||
new ItemStack(Material.MELON_BLOCK), RewardRarity.COMMON, 1));
|
|
||||||
_rewardManager.addReward(new InventoryReward(inventoryManager, "Flesh Hook Ammo", "Flesh Hook", 20, 40,
|
|
||||||
new ItemStack(Material.getMaterial(131)), RewardRarity.COMMON, 1));
|
|
||||||
_rewardManager.addReward(new InventoryReward(inventoryManager, "Ethereal Pearls", "Ethereal Pearl", 15, 30,
|
|
||||||
new ItemStack(Material.ENDER_PEARL), RewardRarity.COMMON, 1));
|
|
||||||
_rewardManager.addReward(new InventoryReward(inventoryManager, "Bat Blaster Ammo", "Bat Blaster", 10, 20,
|
|
||||||
new ItemStack(Material.IRON_BARDING), RewardRarity.COMMON, 1));
|
|
||||||
_rewardManager.addReward(new InventoryReward(inventoryManager, "TNT", "TNT", 10, 20,
|
|
||||||
new ItemStack(Material.TNT), RewardRarity.COMMON, 1));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -241,7 +91,7 @@ public class TreasureManager extends MiniPlugin
|
|||||||
|
|
||||||
Bukkit.broadcastMessage(F.main("Treasure", F.name(player.getName()) + " is opening a " + C.cGreen + "Treasure Chest"));
|
Bukkit.broadcastMessage(F.main("Treasure", F.name(player.getName()) + " is opening a " + C.cGreen + "Treasure Chest"));
|
||||||
|
|
||||||
ITreasureReward[] rewards = _rewardManager.getRewards(player);
|
IReward[] rewards = _rewardManager.getRewards(player, true);
|
||||||
Treasure treasure = new Treasure(player, rewards);
|
Treasure treasure = new Treasure(player, rewards);
|
||||||
_playerTreasureMap.put(player, treasure);
|
_playerTreasureMap.put(player, treasure);
|
||||||
|
|
||||||
@ -330,7 +180,7 @@ public class TreasureManager extends MiniPlugin
|
|||||||
|
|
||||||
treasure.update();
|
treasure.update();
|
||||||
|
|
||||||
if (treasure.isFinished() && treasure.getFinishedTickCount() >= 100)
|
if (treasure.isFinished() && treasure.getFinishedTickCount() >= 80)
|
||||||
{
|
{
|
||||||
treasure.cleanup();
|
treasure.cleanup();
|
||||||
iterator.remove();
|
iterator.remove();
|
||||||
@ -391,17 +241,52 @@ public class TreasureManager extends MiniPlugin
|
|||||||
{
|
{
|
||||||
for (Treasure treasure : _playerTreasureMap.values())
|
for (Treasure treasure : _playerTreasureMap.values())
|
||||||
{
|
{
|
||||||
|
Location fromLocation = event.getFrom();
|
||||||
|
Location toLocation = event.getTo();
|
||||||
Location centerLocation = treasure.getCenterBlock().getLocation().add(0.5, 1.5, 0.5);
|
Location centerLocation = treasure.getCenterBlock().getLocation().add(0.5, 1.5, 0.5);
|
||||||
if (centerLocation.distanceSquared(event.getTo()) <= 9)
|
|
||||||
|
double toDistanceFromCenter = centerLocation.distanceSquared(toLocation);
|
||||||
|
|
||||||
|
if (toDistanceFromCenter <= 9)
|
||||||
{
|
{
|
||||||
UtilAction.velocity(player, UtilAlg.getTrajectory(player.getLocation(), centerLocation).multiply(-1), 1.5, true, 0.8, 0, 1.0, true);
|
// Only cancel movement if they are moving towards the center
|
||||||
event.setTo(event.getFrom());
|
double fromDistanceFromCenter = centerLocation.distanceSquared(fromLocation);
|
||||||
|
if (toDistanceFromCenter < fromDistanceFromCenter)
|
||||||
|
{
|
||||||
|
UtilAction.velocity(player, UtilAlg.getTrajectory(player.getLocation(), centerLocation).multiply(-1), 1.5, true, 0.8, 0, 1.0, true);
|
||||||
|
event.setTo(event.getFrom());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler
|
@EventHandler
|
||||||
|
public void cancelVelocity(PlayerVelocityEvent event)
|
||||||
|
{
|
||||||
|
// Need to prevent players
|
||||||
|
|
||||||
|
Player player = event.getPlayer();
|
||||||
|
if (_playerTreasureMap.containsKey(player))
|
||||||
|
{
|
||||||
|
event.setCancelled(true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@EventHandler
|
||||||
|
public void cancelStacker(StackerEvent event)
|
||||||
|
{
|
||||||
|
if (event.getEntity() instanceof Player)
|
||||||
|
{
|
||||||
|
Player player = ((Player) event.getEntity());
|
||||||
|
if (_playerTreasureMap.containsKey(player))
|
||||||
|
{
|
||||||
|
event.setCancelled(true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@EventHandler(priority = EventPriority.HIGH)
|
||||||
public void interact(PlayerInteractEvent event)
|
public void interact(PlayerInteractEvent event)
|
||||||
{
|
{
|
||||||
Player player = event.getPlayer();
|
Player player = event.getPlayer();
|
||||||
@ -409,11 +294,12 @@ public class TreasureManager extends MiniPlugin
|
|||||||
{
|
{
|
||||||
if (event.getAction() == Action.RIGHT_CLICK_BLOCK && event.getClickedBlock().getType() == Material.CHEST)
|
if (event.getAction() == Action.RIGHT_CLICK_BLOCK && event.getClickedBlock().getType() == Material.CHEST)
|
||||||
{
|
{
|
||||||
event.setCancelled(true);
|
|
||||||
|
|
||||||
Treasure treasure = _playerTreasureMap.get(player);
|
Treasure treasure = _playerTreasureMap.get(player);
|
||||||
treasure.openChest(event.getClickedBlock());
|
treasure.openChest(event.getClickedBlock());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Always cancel interact for treasure players, prevents players from being able to open up cosmetic menu and other menus
|
||||||
|
event.setCancelled(true);
|
||||||
}
|
}
|
||||||
else if (event.getAction() == Action.RIGHT_CLICK_BLOCK && event.getClickedBlock().getType() == Material.CHEST)
|
else if (event.getAction() == Action.RIGHT_CLICK_BLOCK && event.getClickedBlock().getType() == Material.CHEST)
|
||||||
{
|
{
|
||||||
@ -443,10 +329,39 @@ public class TreasureManager extends MiniPlugin
|
|||||||
//TODO Remove
|
//TODO Remove
|
||||||
if (event.getMessage().startsWith("/treasuredebug"))
|
if (event.getMessage().startsWith("/treasuredebug"))
|
||||||
{
|
{
|
||||||
event.getPlayer().sendMessage("Attempting to open treasure...");
|
event.getPlayer().sendMessage(C.cGreen + C.Bold + "Treasure Debug...");
|
||||||
attemptOpenTreasure(event.getPlayer());
|
attemptOpenTreasure(event.getPlayer());
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (event.getMessage().startsWith("/rewardchest") || event.getMessage().startsWith("/rewardgame"))
|
||||||
|
{
|
||||||
|
int common = 0;
|
||||||
|
int uncommon = 0;
|
||||||
|
int rare = 0;
|
||||||
|
int legend = 0;
|
||||||
|
|
||||||
|
int toTest = 10000000;
|
||||||
|
|
||||||
|
for (int i=0 ; i<toTest ; i++)
|
||||||
|
{
|
||||||
|
IReward reward = _rewardManager.nextReward(null, null, false, event.getMessage().startsWith("/rewardchest"));
|
||||||
|
|
||||||
|
if (reward.getRarity() == RewardRarity.COMMON) common++;
|
||||||
|
if (reward.getRarity() == RewardRarity.UNCOMMON) uncommon++;
|
||||||
|
if (reward.getRarity() == RewardRarity.RARE) rare++;
|
||||||
|
if (reward.getRarity() == RewardRarity.LEGENDARY) legend++;
|
||||||
|
}
|
||||||
|
|
||||||
|
event.getPlayer().sendMessage(C.cGreen + C.Bold + (event.getMessage().startsWith("/rewardchest") ? "Chest Rewards" : "Post-Game Rewards"));
|
||||||
|
|
||||||
|
event.getPlayer().sendMessage("Common: " + common + " " + UtilMath.trim(3, (double)common/(double)toTest*100d) + "%");
|
||||||
|
event.getPlayer().sendMessage("Uncommon: " + uncommon + " " + UtilMath.trim(3, (double)uncommon/(double)toTest*100d) + "%");
|
||||||
|
event.getPlayer().sendMessage("Rare: " + rare + " " + UtilMath.trim(3, (double)rare/(double)toTest*100d) + "%");
|
||||||
|
event.getPlayer().sendMessage("Legendary: " + legend + " " + UtilMath.trim(3, (double)legend/(double)toTest*100d) + "%");
|
||||||
|
|
||||||
|
event.setCancelled(true);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -1,15 +1,16 @@
|
|||||||
package mineplex.core.treasure.animation;
|
package mineplex.core.treasure.animation;
|
||||||
|
|
||||||
|
import java.util.HashSet;
|
||||||
|
|
||||||
import org.bukkit.Location;
|
import org.bukkit.Location;
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
import org.bukkit.Sound;
|
import org.bukkit.Sound;
|
||||||
import org.bukkit.block.Block;
|
import org.bukkit.block.Block;
|
||||||
import org.bukkit.craftbukkit.v1_7_R4.CraftWorld;
|
import org.bukkit.craftbukkit.v1_7_R4.CraftWorld;
|
||||||
|
|
||||||
import net.minecraft.server.v1_7_R4.MathHelper;
|
import net.minecraft.server.v1_7_R4.MathHelper;
|
||||||
import net.minecraft.server.v1_7_R4.PacketPlayOutWorldEvent;
|
|
||||||
|
|
||||||
import mineplex.core.common.util.UtilParticle;
|
import mineplex.core.common.util.UtilParticle;
|
||||||
|
import mineplex.core.treasure.BlockInfo;
|
||||||
import mineplex.core.treasure.Treasure;
|
import mineplex.core.treasure.Treasure;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -23,13 +24,16 @@ public class ChestSpawnAnimation extends Animation
|
|||||||
private byte _direction;
|
private byte _direction;
|
||||||
private Location _centerLocation;
|
private Location _centerLocation;
|
||||||
|
|
||||||
public ChestSpawnAnimation(Treasure tresure, Block block, byte direction)
|
private HashSet<BlockInfo> _chestBlockInfo;
|
||||||
|
|
||||||
|
public ChestSpawnAnimation(Treasure tresure, Block block, byte direction, HashSet<BlockInfo> chestBlockInfo)
|
||||||
{
|
{
|
||||||
super(tresure);
|
super(tresure);
|
||||||
_block = block;
|
_block = block;
|
||||||
_direction = direction;
|
_direction = direction;
|
||||||
_centerLocation = block.getLocation().clone().add(0.5, 0.5, 0.5);
|
_centerLocation = block.getLocation().clone().add(0.5, 0.5, 0.5);
|
||||||
_centerLocation.getWorld().playSound(_centerLocation, Sound.LAVA, 1, 1);
|
_centerLocation.getWorld().playSound(_centerLocation, Sound.LAVA, 1, 1);
|
||||||
|
_chestBlockInfo = chestBlockInfo;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -50,6 +54,7 @@ public class ChestSpawnAnimation extends Animation
|
|||||||
|
|
||||||
if (getTicks() >= ANIMATION_DURATION)
|
if (getTicks() >= ANIMATION_DURATION)
|
||||||
{
|
{
|
||||||
|
_chestBlockInfo.add(new BlockInfo(_block));
|
||||||
getTreasure().setBlock(_block, Material.CHEST, _direction);
|
getTreasure().setBlock(_block, Material.CHEST, _direction);
|
||||||
_block.getLocation().getWorld().playSound(_centerLocation, Sound.ANVIL_LAND, 0.5f, 1f);
|
_block.getLocation().getWorld().playSound(_centerLocation, Sound.ANVIL_LAND, 0.5f, 1f);
|
||||||
|
|
||||||
|
@ -1,60 +0,0 @@
|
|||||||
package mineplex.core.treasure.animation;
|
|
||||||
|
|
||||||
import org.bukkit.Color;
|
|
||||||
import org.bukkit.FireworkEffect;
|
|
||||||
import org.bukkit.Location;
|
|
||||||
import org.bukkit.Sound;
|
|
||||||
import org.bukkit.block.Block;
|
|
||||||
|
|
||||||
import mineplex.core.common.util.UtilFirework;
|
|
||||||
import mineplex.core.common.util.UtilParticle;
|
|
||||||
import mineplex.core.treasure.Treasure;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Created by shaun on 2014-09-09.
|
|
||||||
*/
|
|
||||||
public class CircleAnimation extends Animation
|
|
||||||
{
|
|
||||||
/**
|
|
||||||
* Played when a "Rare" chest is opened
|
|
||||||
*/
|
|
||||||
|
|
||||||
private Location _centerLocation;
|
|
||||||
|
|
||||||
public CircleAnimation(Treasure treasure, Location centerLocation)
|
|
||||||
{
|
|
||||||
super(treasure);
|
|
||||||
|
|
||||||
_centerLocation = centerLocation;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected void tick()
|
|
||||||
{
|
|
||||||
if (getTicks() == 2)
|
|
||||||
{
|
|
||||||
UtilFirework.playFirework(_centerLocation, FireworkEffect.builder().withColor(Color.ORANGE).with(FireworkEffect.Type.BURST).build());
|
|
||||||
_centerLocation.getWorld().playSound(_centerLocation, Sound.WITHER_SPAWN, 10F, 1.2F);
|
|
||||||
}
|
|
||||||
else if (getTicks() >= 60)
|
|
||||||
{
|
|
||||||
finish();
|
|
||||||
}
|
|
||||||
|
|
||||||
double currentRotation = getTicks() / 20D;
|
|
||||||
double radius = currentRotation;
|
|
||||||
double yDiff = currentRotation;
|
|
||||||
double xDiff = Math.sin(currentRotation * 2 * Math.PI) * radius;
|
|
||||||
double zDiff = Math.cos(currentRotation * 2 * Math.PI) * radius;
|
|
||||||
|
|
||||||
Location location = _centerLocation.clone().add(xDiff, yDiff, zDiff);
|
|
||||||
|
|
||||||
UtilParticle.PlayParticle(UtilParticle.ParticleType.FLAME, location, 0, 0, 0, 0, 1);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected void onFinish()
|
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
@ -9,12 +9,13 @@ import org.bukkit.Sound;
|
|||||||
import org.bukkit.block.Block;
|
import org.bukkit.block.Block;
|
||||||
|
|
||||||
import mineplex.core.common.util.UtilFirework;
|
import mineplex.core.common.util.UtilFirework;
|
||||||
|
import mineplex.core.common.util.UtilParticle;
|
||||||
import mineplex.core.treasure.Treasure;
|
import mineplex.core.treasure.Treasure;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Created by shaun on 14-09-12.
|
* Created by shaun on 14-09-12.
|
||||||
*/
|
*/
|
||||||
public class ChestExplodeAnimation extends Animation
|
public class LegendaryAnimation extends Animation
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
* Played when a "Very Rare" chest is opened
|
* Played when a "Very Rare" chest is opened
|
||||||
@ -23,7 +24,7 @@ public class ChestExplodeAnimation extends Animation
|
|||||||
private Random _random = new Random();
|
private Random _random = new Random();
|
||||||
private Block _chestBlock;
|
private Block _chestBlock;
|
||||||
|
|
||||||
public ChestExplodeAnimation(Treasure treasure, Block chestBlock)
|
public LegendaryAnimation(Treasure treasure, Block chestBlock)
|
||||||
{
|
{
|
||||||
super(treasure);
|
super(treasure);
|
||||||
|
|
||||||
@ -38,13 +39,27 @@ public class ChestExplodeAnimation extends Animation
|
|||||||
// _chestBlock.getLocation().getWorld().playSound(_chestBlock.getLocation().add(0.5, 0.5, 0.5), Sound.WITHER_SPAWN, 10F, 1.2F);
|
// _chestBlock.getLocation().getWorld().playSound(_chestBlock.getLocation().add(0.5, 0.5, 0.5), Sound.WITHER_SPAWN, 10F, 1.2F);
|
||||||
_chestBlock.getLocation().getWorld().playSound(_chestBlock.getLocation().add(0.5, 0.5, 0.5), Sound.ENDERDRAGON_DEATH, 10F, 2.0F);
|
_chestBlock.getLocation().getWorld().playSound(_chestBlock.getLocation().add(0.5, 0.5, 0.5), Sound.ENDERDRAGON_DEATH, 10F, 2.0F);
|
||||||
}
|
}
|
||||||
if (getTicks() == 10)
|
if (getTicks() == 20)
|
||||||
{
|
{
|
||||||
FireworkEffect effect = FireworkEffect.builder().with(FireworkEffect.Type.BALL_LARGE).withColor(Color.RED).withFade(Color.BLACK).build();
|
FireworkEffect effect = FireworkEffect.builder().with(FireworkEffect.Type.BALL_LARGE).withColor(Color.RED).withFade(Color.BLACK).build();
|
||||||
UtilFirework.playFirework(_chestBlock.getLocation().add(0.5, 0.5, 0.5), effect);
|
UtilFirework.playFirework(_chestBlock.getLocation().add(0.5, 0.5, 0.5), effect);
|
||||||
// ((CraftWorld) _chestBlock.getWorld()).getHandle().triggerEffect(1005, _chestBlock.getX(), _chestBlock.getY(), _chestBlock.getZ(), 2257);
|
// ((CraftWorld) _chestBlock.getWorld()).getHandle().triggerEffect(1005, _chestBlock.getX(), _chestBlock.getY(), _chestBlock.getZ(), 2257);
|
||||||
}
|
}
|
||||||
else if (getTicks() < 10)
|
else if (getTicks() < 15)
|
||||||
|
{
|
||||||
|
double radius = 2 - (getTicks() / 10D * 2);
|
||||||
|
int particleAmount = 20 - (getTicks() * 2);
|
||||||
|
Location _centerLocation = _chestBlock.getLocation().add(0.5, 0.1, 0.5);
|
||||||
|
for (int i = 0; i < particleAmount; i++)
|
||||||
|
{
|
||||||
|
double xDiff = Math.sin(i/(double)particleAmount * 2 * Math.PI) * radius;
|
||||||
|
double zDiff = Math.cos(i/(double)particleAmount * 2 * Math.PI) * radius;
|
||||||
|
|
||||||
|
Location location = _centerLocation.clone().add(xDiff, 0, zDiff);
|
||||||
|
UtilParticle.PlayParticle(UtilParticle.ParticleType.CLOUD, location, 0, 0, 0, 0, 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (getTicks() < 20)
|
||||||
{
|
{
|
||||||
double xDif = _random.nextGaussian() * 0.5;
|
double xDif = _random.nextGaussian() * 0.5;
|
||||||
double zDif = _random.nextGaussian() * 0.5;
|
double zDif = _random.nextGaussian() * 0.5;
|
@ -0,0 +1,72 @@
|
|||||||
|
package mineplex.core.treasure.animation;
|
||||||
|
|
||||||
|
import org.bukkit.Color;
|
||||||
|
import org.bukkit.FireworkEffect;
|
||||||
|
import org.bukkit.Location;
|
||||||
|
import org.bukkit.Sound;
|
||||||
|
|
||||||
|
import mineplex.core.common.util.UtilFirework;
|
||||||
|
import mineplex.core.common.util.UtilParticle;
|
||||||
|
import mineplex.core.treasure.Treasure;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Created by shaun on 2014-09-09.
|
||||||
|
*/
|
||||||
|
public class RareAnimation extends Animation
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Played when a "Rare" chest is opened
|
||||||
|
*/
|
||||||
|
|
||||||
|
private Location _centerLocation;
|
||||||
|
|
||||||
|
public RareAnimation(Treasure treasure, Location centerLocation)
|
||||||
|
{
|
||||||
|
super(treasure);
|
||||||
|
|
||||||
|
_centerLocation = centerLocation;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void tick()
|
||||||
|
{
|
||||||
|
if (getTicks() == 2)
|
||||||
|
{
|
||||||
|
UtilFirework.playFirework(_centerLocation, FireworkEffect.builder().withColor(Color.ORANGE).with(FireworkEffect.Type.BURST).build());
|
||||||
|
_centerLocation.getWorld().playSound(_centerLocation, Sound.WITHER_SPAWN, 10F, 1.2F);
|
||||||
|
}
|
||||||
|
else if (getTicks() >= 60)
|
||||||
|
{
|
||||||
|
finish();
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
double currentRotation = getTicks() / 20D;
|
||||||
|
double radius = currentRotation;
|
||||||
|
double yDiff = currentRotation;
|
||||||
|
double xDiff = Math.sin(currentRotation * 2 * Math.PI) * radius;
|
||||||
|
double zDiff = Math.cos(currentRotation * 2 * Math.PI) * radius;
|
||||||
|
|
||||||
|
Location location = _centerLocation.clone().add(xDiff, yDiff, zDiff);
|
||||||
|
|
||||||
|
UtilParticle.PlayParticle(UtilParticle.ParticleType.FLAME, location, 0, 0, 0, 0, 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
double radius = getTicks() / 20D;
|
||||||
|
int particleAmount = getTicks() / 2;
|
||||||
|
for (int i = 0; i < particleAmount; i++)
|
||||||
|
{
|
||||||
|
double xDiff = Math.sin(i/(double)particleAmount * 2 * Math.PI) * radius;
|
||||||
|
double zDiff = Math.cos(i/(double)particleAmount * 2 * Math.PI) * radius;
|
||||||
|
|
||||||
|
Location location = _centerLocation.clone().add(xDiff, -1.3, zDiff);
|
||||||
|
UtilParticle.PlayParticle(UtilParticle.ParticleType.FLAME, location, 0, 0, 0, 0, 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onFinish()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
@ -1,11 +1,8 @@
|
|||||||
package mineplex.core.treasure.animation;
|
package mineplex.core.treasure.animation;
|
||||||
|
|
||||||
|
import java.util.HashSet;
|
||||||
import java.util.Random;
|
import java.util.Random;
|
||||||
|
|
||||||
import org.bukkit.Material;
|
|
||||||
import org.bukkit.block.Block;
|
|
||||||
|
|
||||||
import mineplex.core.common.util.NautHashMap;
|
|
||||||
import mineplex.core.treasure.BlockInfo;
|
import mineplex.core.treasure.BlockInfo;
|
||||||
import mineplex.core.treasure.Treasure;
|
import mineplex.core.treasure.Treasure;
|
||||||
|
|
||||||
@ -16,21 +13,43 @@ public class TreasureRemoveAnimation extends Animation
|
|||||||
{
|
{
|
||||||
private Random _random = new Random();
|
private Random _random = new Random();
|
||||||
|
|
||||||
private NautHashMap<Block, BlockInfo> _blockRestoreMap;
|
private HashSet<BlockInfo> _wallsBlockInfo;
|
||||||
|
private HashSet<BlockInfo> _outerRingBlockInfo;
|
||||||
|
private HashSet<BlockInfo> _centerBlockInfo;
|
||||||
|
|
||||||
public TreasureRemoveAnimation(Treasure treasure, NautHashMap<Block, BlockInfo> blockRestoreMap)
|
public TreasureRemoveAnimation(Treasure treasure, HashSet<BlockInfo> centerBlockInfo, HashSet<BlockInfo> outerRingBlockInfo, HashSet<BlockInfo> wallsBlockInfo)
|
||||||
{
|
{
|
||||||
super(treasure);
|
super(treasure);
|
||||||
_blockRestoreMap = blockRestoreMap;
|
_wallsBlockInfo = wallsBlockInfo;
|
||||||
|
_centerBlockInfo = centerBlockInfo;
|
||||||
|
_outerRingBlockInfo = outerRingBlockInfo;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void tick()
|
protected void tick()
|
||||||
{
|
{
|
||||||
// first wait for 1 second
|
// Chests go away at 100 ticks
|
||||||
if (getTicks() <= 20)
|
HashSet<BlockInfo> blockInfoSet = null;
|
||||||
return;
|
|
||||||
|
|
||||||
|
if (getTicks() == 40)
|
||||||
|
{
|
||||||
|
blockInfoSet = _wallsBlockInfo;
|
||||||
|
}
|
||||||
|
else if (getTicks() == 50)
|
||||||
|
{
|
||||||
|
blockInfoSet = _outerRingBlockInfo;
|
||||||
|
}
|
||||||
|
else if (getTicks() == 60)
|
||||||
|
{
|
||||||
|
blockInfoSet = _centerBlockInfo;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (blockInfoSet != null)
|
||||||
|
{
|
||||||
|
getTreasure().resetBlockInfo(blockInfoSet);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
if (getTicks() % 2 == 0)
|
if (getTicks() % 2 == 0)
|
||||||
{
|
{
|
||||||
if (_blockRestoreMap.size() > 4)
|
if (_blockRestoreMap.size() > 4)
|
||||||
@ -52,6 +71,7 @@ public class TreasureRemoveAnimation extends Animation
|
|||||||
finish();
|
finish();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -2,27 +2,18 @@ package mineplex.core.treasure.animation;
|
|||||||
|
|
||||||
import java.util.Random;
|
import java.util.Random;
|
||||||
|
|
||||||
import org.bukkit.Bukkit;
|
|
||||||
import org.bukkit.Color;
|
import org.bukkit.Color;
|
||||||
import org.bukkit.FireworkEffect;
|
import org.bukkit.FireworkEffect;
|
||||||
import org.bukkit.block.Block;
|
import org.bukkit.block.Block;
|
||||||
import org.bukkit.craftbukkit.v1_7_R4.entity.CraftFirework;
|
|
||||||
import org.bukkit.craftbukkit.v1_7_R4.entity.CraftPlayer;
|
|
||||||
import org.bukkit.entity.Firework;
|
|
||||||
import org.bukkit.entity.Player;
|
|
||||||
|
|
||||||
import net.minecraft.server.v1_7_R4.PacketPlayOutEntityStatus;
|
|
||||||
|
|
||||||
import mineplex.core.common.util.FireworkUtil;
|
|
||||||
import mineplex.core.common.util.UtilFirework;
|
import mineplex.core.common.util.UtilFirework;
|
||||||
import mineplex.core.common.util.UtilPlayer;
|
import mineplex.core.common.util.UtilParticle;
|
||||||
import mineplex.core.common.util.UtilServer;
|
|
||||||
import mineplex.core.treasure.Treasure;
|
import mineplex.core.treasure.Treasure;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Created by shaun on 2014-09-09.
|
* Created by shaun on 2014-09-09.
|
||||||
*/
|
*/
|
||||||
public class FireworksAnimation extends Animation
|
public class UncommonAnimation extends Animation
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
* Played when an "Uncommon" chest is opened
|
* Played when an "Uncommon" chest is opened
|
||||||
@ -31,7 +22,7 @@ public class FireworksAnimation extends Animation
|
|||||||
private Random _random = new Random();
|
private Random _random = new Random();
|
||||||
private Block _block;
|
private Block _block;
|
||||||
|
|
||||||
public FireworksAnimation(Treasure treasure, Block block)
|
public UncommonAnimation(Treasure treasure, Block block)
|
||||||
{
|
{
|
||||||
super(treasure);
|
super(treasure);
|
||||||
|
|
||||||
@ -41,22 +32,26 @@ public class FireworksAnimation extends Animation
|
|||||||
@Override
|
@Override
|
||||||
protected void tick()
|
protected void tick()
|
||||||
{
|
{
|
||||||
if (getTicks() >= 1)
|
if (getTicks() >= 10)
|
||||||
finish();
|
finish();
|
||||||
|
|
||||||
if (getTicks() % 10 == 0)
|
if (getTicks() == 10)
|
||||||
{
|
{
|
||||||
double xDif = 0;//_random.nextGaussian() * 1;
|
double xDif = 0;//_random.nextGaussian() * 1;
|
||||||
double zDif = 0;//_random.nextGaussian() * 1;
|
double zDif = 0;//_random.nextGaussian() * 1;
|
||||||
double yDif = 2;//(_random.nextInt(3) * _random.nextDouble()) + 2;
|
double yDif = 2;//(_random.nextInt(3) * _random.nextDouble()) + 2;
|
||||||
|
|
||||||
FireworkEffect effect = FireworkEffect.builder().withColor(Color.fromRGB(_random.nextInt(255), _random.nextInt(255), _random.nextInt(255)))
|
FireworkEffect effect = FireworkEffect.builder().withColor(Color.RED)
|
||||||
.withFade(Color.fromRGB(_random.nextInt(255), _random.nextInt(255), _random.nextInt(255)))
|
.withFade(Color.fromRGB(_random.nextInt(255), _random.nextInt(255), _random.nextInt(255)))
|
||||||
.with(FireworkEffect.Type.STAR)
|
.with(FireworkEffect.Type.STAR)
|
||||||
.build();
|
.build();
|
||||||
|
|
||||||
UtilFirework.playFirework(_block.getLocation().add(0.5, 0.5, 0.5).add(xDif, yDif, zDif), effect);
|
UtilFirework.playFirework(_block.getLocation().add(0.5, 0.5, 0.5).add(xDif, yDif, zDif), effect);
|
||||||
}
|
}
|
||||||
|
else if (getTicks() % 2 == 0)
|
||||||
|
{
|
||||||
|
UtilParticle.PlayParticle(UtilParticle.ParticleType.HEART, _block.getLocation().add(0.5, 1.2, 0.5), 0.5F, 0.2F, 0.5F, 0, 1);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
@ -1,149 +0,0 @@
|
|||||||
package mineplex.core.treasure.reward;
|
|
||||||
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Random;
|
|
||||||
|
|
||||||
import org.bukkit.entity.Player;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Created by shaun on 2014-09-04.
|
|
||||||
*/
|
|
||||||
public class RewardManager
|
|
||||||
{
|
|
||||||
private HashMap<RewardRarity, List<ITreasureReward>> _treasureMap;
|
|
||||||
private Random _random;
|
|
||||||
|
|
||||||
public RewardManager()
|
|
||||||
{
|
|
||||||
_treasureMap = new HashMap<RewardRarity, List<ITreasureReward>>();
|
|
||||||
_random = new Random();
|
|
||||||
|
|
||||||
for (RewardRarity rarity : RewardRarity.values())
|
|
||||||
{
|
|
||||||
_treasureMap.put(rarity, new ArrayList<ITreasureReward>());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public void addReward(ITreasureReward reward)
|
|
||||||
{
|
|
||||||
RewardRarity rarity = reward.getRarity();
|
|
||||||
|
|
||||||
List<ITreasureReward> treasureList = _treasureMap.get(rarity);
|
|
||||||
|
|
||||||
treasureList.add(reward);
|
|
||||||
}
|
|
||||||
|
|
||||||
public ITreasureReward[] getRewards(Player player)
|
|
||||||
{
|
|
||||||
int currentReward = 0;
|
|
||||||
ITreasureReward[] rewards = new ITreasureReward[4];
|
|
||||||
boolean hasUncommon = false;
|
|
||||||
|
|
||||||
while (currentReward < 4)
|
|
||||||
{
|
|
||||||
ITreasureReward reward = nextReward(player, rewards, currentReward == 3 && !hasUncommon);
|
|
||||||
|
|
||||||
if (reward == null)
|
|
||||||
{
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (reward.getRarity().ordinal() >= RewardRarity.UNCOMMON.ordinal())
|
|
||||||
{
|
|
||||||
hasUncommon = true;
|
|
||||||
}
|
|
||||||
rewards[currentReward] = reward;
|
|
||||||
currentReward++;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Swap the last reward with another one, this makes the uncommon added at the end of some chests seem more random
|
|
||||||
int slotToSwitch = _random.nextInt(4);
|
|
||||||
if (slotToSwitch != 3)
|
|
||||||
{
|
|
||||||
ITreasureReward thirdReward = rewards[3];
|
|
||||||
ITreasureReward otherReward = rewards[slotToSwitch];
|
|
||||||
|
|
||||||
rewards[3] = otherReward;
|
|
||||||
rewards[slotToSwitch] = thirdReward;
|
|
||||||
}
|
|
||||||
|
|
||||||
return rewards;
|
|
||||||
}
|
|
||||||
|
|
||||||
private ITreasureReward nextReward(Player player, ITreasureReward[] excludedRewards)
|
|
||||||
{
|
|
||||||
return nextReward(player, excludedRewards, false);
|
|
||||||
}
|
|
||||||
|
|
||||||
private ITreasureReward nextReward(Player player, ITreasureReward[] excludedRewards, boolean requiresUncommon)
|
|
||||||
{
|
|
||||||
double rand = _random.nextDouble();
|
|
||||||
RewardRarity rarity;
|
|
||||||
|
|
||||||
if (rand <= 0.01)
|
|
||||||
{
|
|
||||||
// 1%
|
|
||||||
rarity = RewardRarity.VERY_RARE;
|
|
||||||
}
|
|
||||||
else if (rand <= 0.05)
|
|
||||||
{
|
|
||||||
// 4%
|
|
||||||
rarity = RewardRarity.RARE;
|
|
||||||
}
|
|
||||||
else if (rand <= 0.30 || requiresUncommon)
|
|
||||||
{
|
|
||||||
// 25%
|
|
||||||
rarity = RewardRarity.UNCOMMON;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
// 70%
|
|
||||||
rarity = RewardRarity.COMMON;
|
|
||||||
}
|
|
||||||
|
|
||||||
List<ITreasureReward> treasureList = _treasureMap.get(rarity);
|
|
||||||
|
|
||||||
int totalWeight = 0;
|
|
||||||
ArrayList<ITreasureReward> possibleRewards = new ArrayList<ITreasureReward>();
|
|
||||||
for (ITreasureReward treasure : treasureList)
|
|
||||||
{
|
|
||||||
boolean isExcluded = false;
|
|
||||||
|
|
||||||
if (excludedRewards != null)
|
|
||||||
{
|
|
||||||
for (int i = 0; i < excludedRewards.length && !isExcluded; i++)
|
|
||||||
{
|
|
||||||
if (excludedRewards[i] != null && excludedRewards[i].equals(treasure))
|
|
||||||
{
|
|
||||||
isExcluded = true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (treasure.canGiveReward(player) && !isExcluded)
|
|
||||||
{
|
|
||||||
possibleRewards.add(treasure);
|
|
||||||
totalWeight += treasure.getWeight();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (totalWeight > 0)
|
|
||||||
{
|
|
||||||
int weight = _random.nextInt(totalWeight);
|
|
||||||
int currentWeight = 0;
|
|
||||||
|
|
||||||
for (ITreasureReward reward : possibleRewards)
|
|
||||||
{
|
|
||||||
currentWeight += reward.getWeight();
|
|
||||||
|
|
||||||
if (weight <= currentWeight)
|
|
||||||
return reward;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@ -42,6 +42,7 @@ import mineplex.core.common.util.F;
|
|||||||
import mineplex.core.common.util.UtilGear;
|
import mineplex.core.common.util.UtilGear;
|
||||||
import mineplex.core.common.util.UtilInv;
|
import mineplex.core.common.util.UtilInv;
|
||||||
import mineplex.core.common.util.UtilPlayer;
|
import mineplex.core.common.util.UtilPlayer;
|
||||||
|
import mineplex.core.common.util.UtilServer;
|
||||||
import mineplex.core.cosmetic.CosmeticManager;
|
import mineplex.core.cosmetic.CosmeticManager;
|
||||||
import mineplex.core.creature.Creature;
|
import mineplex.core.creature.Creature;
|
||||||
import mineplex.core.disguise.DisguiseManager;
|
import mineplex.core.disguise.DisguiseManager;
|
||||||
@ -92,6 +93,7 @@ import nautilus.game.arcade.managers.GameGemManager;
|
|||||||
import nautilus.game.arcade.managers.GameLobbyManager;
|
import nautilus.game.arcade.managers.GameLobbyManager;
|
||||||
import nautilus.game.arcade.managers.GameManager;
|
import nautilus.game.arcade.managers.GameManager;
|
||||||
import nautilus.game.arcade.managers.GamePlayerManager;
|
import nautilus.game.arcade.managers.GamePlayerManager;
|
||||||
|
import nautilus.game.arcade.managers.GameLootManager;
|
||||||
import nautilus.game.arcade.managers.GameWorldManager;
|
import nautilus.game.arcade.managers.GameWorldManager;
|
||||||
import nautilus.game.arcade.managers.IdleManager;
|
import nautilus.game.arcade.managers.IdleManager;
|
||||||
import nautilus.game.arcade.managers.MiscManager;
|
import nautilus.game.arcade.managers.MiscManager;
|
||||||
@ -243,6 +245,7 @@ public class ArcadeManager extends MiniPlugin implements IRelation
|
|||||||
new GameFlagManager(this);
|
new GameFlagManager(this);
|
||||||
_gamePlayerManager = new GamePlayerManager(this);
|
_gamePlayerManager = new GamePlayerManager(this);
|
||||||
new GameAchievementManager(this);
|
new GameAchievementManager(this);
|
||||||
|
new GameLootManager(this);
|
||||||
_gameWorldManager = new GameWorldManager(this);
|
_gameWorldManager = new GameWorldManager(this);
|
||||||
new MiscManager(this);
|
new MiscManager(this);
|
||||||
new IdleManager(this);
|
new IdleManager(this);
|
||||||
@ -679,6 +682,18 @@ public class ArcadeManager extends MiniPlugin implements IRelation
|
|||||||
GetDisguise().undisguise(player);
|
GetDisguise().undisguise(player);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void RefreshPlayers()
|
||||||
|
{
|
||||||
|
for (Player player : UtilServer.getPlayers())
|
||||||
|
{
|
||||||
|
for (Player other : UtilServer.getPlayers())
|
||||||
|
{
|
||||||
|
player.hidePlayer(other);
|
||||||
|
player.showPlayer(other);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public ArrayList<String> LoadFiles(String gameName)
|
public ArrayList<String> LoadFiles(String gameName)
|
||||||
{
|
{
|
||||||
TimingManager.start("ArcadeManager LoadFiles");
|
TimingManager.start("ArcadeManager LoadFiles");
|
||||||
|
@ -539,7 +539,7 @@ public class CastleSiege extends TeamGame
|
|||||||
|
|
||||||
if (this.WorldTimeSet > 24100)
|
if (this.WorldTimeSet > 24100)
|
||||||
{
|
{
|
||||||
SetCustomWinLine(_kingName + ChatColor.RESET + " has survived the seige!");
|
SetCustomWinLine(_kingName + ChatColor.RESET + " has survived the siege!");
|
||||||
|
|
||||||
AnnounceEnd(GetTeam(ChatColor.AQUA));
|
AnnounceEnd(GetTeam(ChatColor.AQUA));
|
||||||
|
|
||||||
|
@ -188,7 +188,8 @@ public class HideSeek extends TeamGame
|
|||||||
{
|
{
|
||||||
new KitHiderSwapper(manager),
|
new KitHiderSwapper(manager),
|
||||||
new KitHiderQuick(manager),
|
new KitHiderQuick(manager),
|
||||||
new KitHiderShocker(manager),
|
//new KitHiderShocker(manager),
|
||||||
|
new NullKit(manager),
|
||||||
new NullKit(manager),
|
new NullKit(manager),
|
||||||
new KitSeekerLeaper(manager),
|
new KitSeekerLeaper(manager),
|
||||||
new KitSeekerTNT(manager),
|
new KitSeekerTNT(manager),
|
||||||
|
@ -49,6 +49,7 @@ import org.bukkit.inventory.meta.ItemMeta;
|
|||||||
import org.bukkit.inventory.meta.LeatherArmorMeta;
|
import org.bukkit.inventory.meta.LeatherArmorMeta;
|
||||||
import org.bukkit.util.Vector;
|
import org.bukkit.util.Vector;
|
||||||
|
|
||||||
|
import mineplex.core.antistack.AntiStack;
|
||||||
import mineplex.core.common.util.C;
|
import mineplex.core.common.util.C;
|
||||||
import mineplex.core.common.util.F;
|
import mineplex.core.common.util.F;
|
||||||
import mineplex.core.common.util.UtilAction;
|
import mineplex.core.common.util.UtilAction;
|
||||||
@ -88,16 +89,13 @@ import nautilus.game.arcade.game.games.minestrike.data.Bomb;
|
|||||||
import nautilus.game.arcade.game.games.minestrike.data.Bullet;
|
import nautilus.game.arcade.game.games.minestrike.data.Bullet;
|
||||||
import nautilus.game.arcade.game.games.minestrike.items.StrikeItem;
|
import nautilus.game.arcade.game.games.minestrike.items.StrikeItem;
|
||||||
import nautilus.game.arcade.game.games.minestrike.items.StrikeItemType;
|
import nautilus.game.arcade.game.games.minestrike.items.StrikeItemType;
|
||||||
import nautilus.game.arcade.game.games.minestrike.items.equipment.DefusalKit;
|
|
||||||
import nautilus.game.arcade.game.games.minestrike.items.equipment.armor.Armor;
|
import nautilus.game.arcade.game.games.minestrike.items.equipment.armor.Armor;
|
||||||
import nautilus.game.arcade.game.games.minestrike.items.grenades.Grenade;
|
import nautilus.game.arcade.game.games.minestrike.items.grenades.Grenade;
|
||||||
import nautilus.game.arcade.game.games.minestrike.items.guns.Gun;
|
import nautilus.game.arcade.game.games.minestrike.items.guns.Gun;
|
||||||
import nautilus.game.arcade.game.games.minestrike.items.guns.GunType;
|
import nautilus.game.arcade.game.games.minestrike.items.guns.GunType;
|
||||||
import nautilus.game.arcade.game.games.minestrike.items.guns.pistol.Glock18;
|
import nautilus.game.arcade.game.games.minestrike.items.guns.pistol.Glock18;
|
||||||
import nautilus.game.arcade.game.games.minestrike.items.guns.pistol.P2000;
|
import nautilus.game.arcade.game.games.minestrike.items.guns.pistol.P2000;
|
||||||
import nautilus.game.arcade.game.games.minestrike.items.guns.rifle.AWP;
|
|
||||||
import nautilus.game.arcade.game.games.minestrike.kits.KitPlayer;
|
import nautilus.game.arcade.game.games.minestrike.kits.KitPlayer;
|
||||||
import nautilus.game.arcade.game.games.turfforts.TurfForts.ShredBlockEvent;
|
|
||||||
import nautilus.game.arcade.kit.Kit;
|
import nautilus.game.arcade.kit.Kit;
|
||||||
import net.minecraft.server.v1_7_R4.EntityArrow;
|
import net.minecraft.server.v1_7_R4.EntityArrow;
|
||||||
|
|
||||||
@ -193,7 +191,7 @@ public class MineStrike extends TeamGame
|
|||||||
//"Tap Crouch when close to an ally to Boost",
|
//"Tap Crouch when close to an ally to Boost",
|
||||||
"Open Inventory at spawn to buy guns",
|
"Open Inventory at spawn to buy guns",
|
||||||
"Hold Right-Click to Plant Bomb",
|
"Hold Right-Click to Plant Bomb",
|
||||||
"Hold Right-Click with knife to Defuse Bomb",
|
"Look at the Bomb to Defuse Bomb",
|
||||||
"Moving decreases accuracy",
|
"Moving decreases accuracy",
|
||||||
"Sprinting heavily decreases accuracy",
|
"Sprinting heavily decreases accuracy",
|
||||||
"Jumping massively decreases accuracy",
|
"Jumping massively decreases accuracy",
|
||||||
@ -379,21 +377,37 @@ public class MineStrike extends TeamGame
|
|||||||
{
|
{
|
||||||
for (Player other : team.GetPlayers(false))
|
for (Player other : team.GetPlayers(false))
|
||||||
if (!other.equals(player))
|
if (!other.equals(player))
|
||||||
|
{
|
||||||
|
UtilTitle.display(null, player.getName() + " has the Bomb", 10, 80, 10, other);
|
||||||
UtilPlayer.message(other, C.cGold + C.Bold + player.getName() + " has the Bomb!");
|
UtilPlayer.message(other, C.cGold + C.Bold + player.getName() + " has the Bomb!");
|
||||||
|
}
|
||||||
|
|
||||||
|
//Chat
|
||||||
UtilPlayer.message(player, C.cGold + C.Bold + "You have the Bomb!");
|
UtilPlayer.message(player, C.cGold + C.Bold + "You have the Bomb!");
|
||||||
UtilPlayer.message(player, C.cGold + C.Bold + "Hold Right-Click to place at a Bomb Site!");
|
UtilPlayer.message(player, C.cGold + C.Bold + "Hold Right-Click to place at a Bomb Site!");
|
||||||
|
|
||||||
|
//Title
|
||||||
|
UtilTitle.display(C.cRed + "You have the Bomb", "Hold Right-Click to place at a Bomb Site!", 10, 80, 10, player);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
for (Player other : team.GetPlayers(false))
|
for (Player other : team.GetPlayers(false))
|
||||||
if (!other.equals(player))
|
if (!other.equals(player))
|
||||||
|
{
|
||||||
UtilPlayer.message(other, C.cGold + C.Bold + player.getName() + " picked up the Bomb!");
|
UtilPlayer.message(other, C.cGold + C.Bold + player.getName() + " picked up the Bomb!");
|
||||||
|
|
||||||
UtilPlayer.message(player, C.cGold + C.Bold + "You picked up the Bomb!");
|
//Title
|
||||||
}
|
UtilTitle.display(null, player.getName() + " picked up the Bomb", 10, 50, 10, other);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//Chat
|
||||||
|
UtilPlayer.message(player, C.cGold + C.Bold + "You picked up the Bomb!");
|
||||||
|
|
||||||
|
//Title
|
||||||
|
UtilTitle.display(null, "You picked up the Bomb", 10, 50, 10, player);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
player.playSound(player.getLocation(), Sound.NOTE_PLING, 1f, 2f);
|
player.playSound(player.getLocation(), Sound.NOTE_PLING, 1f, 2f);
|
||||||
_bombHolder = player;
|
_bombHolder = player;
|
||||||
@ -762,6 +776,8 @@ public class MineStrike extends TeamGame
|
|||||||
if (UtilInv.contains(event.getPlayer(), Material.SHEARS, (byte)0, 1))
|
if (UtilInv.contains(event.getPlayer(), Material.SHEARS, (byte)0, 1))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
AntiStack.removeUID(event.getItem());
|
||||||
|
|
||||||
event.getPlayer().getInventory().setItem(8, event.getItem().getItemStack());
|
event.getPlayer().getInventory().setItem(8, event.getItem().getItemStack());
|
||||||
|
|
||||||
UtilPlayer.message(event.getPlayer(), F.main("Game", "You equipped Defusal Kit."));
|
UtilPlayer.message(event.getPlayer(), F.main("Game", "You equipped Defusal Kit."));
|
||||||
@ -1168,7 +1184,6 @@ public class MineStrike extends TeamGame
|
|||||||
|
|
||||||
while (!hitHead(damagee, loc) && !hitBody(damagee, loc) && UtilMath.offset(damagee.getLocation(), loc) < 6)
|
while (!hitHead(damagee, loc) && !hitBody(damagee, loc) && UtilMath.offset(damagee.getLocation(), loc) < 6)
|
||||||
{
|
{
|
||||||
UtilParticle.PlayParticle(ParticleType.HAPPY_VILLAGER, loc, 0, 0, 0, 0, 1);
|
|
||||||
loc.add(trajectory.clone().multiply(0.1));
|
loc.add(trajectory.clone().multiply(0.1));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1387,8 +1402,8 @@ public class MineStrike extends TeamGame
|
|||||||
if (!_bombPlanter.isBlocking())
|
if (!_bombPlanter.isBlocking())
|
||||||
{
|
{
|
||||||
_bombPlanter.setExp(0f);
|
_bombPlanter.setExp(0f);
|
||||||
|
UtilTitle.clear(_bombPlanter);
|
||||||
_bombPlanter = null;
|
_bombPlanter = null;
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1397,6 +1412,8 @@ public class MineStrike extends TeamGame
|
|||||||
if (Math.random() > 0.90)
|
if (Math.random() > 0.90)
|
||||||
_bombPlanter.getWorld().playSound(_bombPlanter.getLocation(), Sound.NOTE_PLING, 1f, 3f);
|
_bombPlanter.getWorld().playSound(_bombPlanter.getLocation(), Sound.NOTE_PLING, 1f, 3f);
|
||||||
|
|
||||||
|
UtilTitle.display(C.cRed + C.Bold + "Planting Bomb", UtilTitle.progress(_bombPlanter.getExp()), 0, 10, 0, _bombPlanter);
|
||||||
|
|
||||||
if (_bombPlanter.getExp() >= 0.98f)
|
if (_bombPlanter.getExp() >= 0.98f)
|
||||||
{
|
{
|
||||||
_bomb = new Bomb(_bombPlanter);
|
_bomb = new Bomb(_bombPlanter);
|
||||||
@ -1412,6 +1429,8 @@ public class MineStrike extends TeamGame
|
|||||||
_bombPlanter = null;
|
_bombPlanter = null;
|
||||||
_bombHolder = null;
|
_bombHolder = null;
|
||||||
|
|
||||||
|
//Title
|
||||||
|
UtilTitle.display(null, C.cRed + C.Bold + "Bomb has been planted!", 10, 50, 10);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1422,9 +1441,9 @@ public class MineStrike extends TeamGame
|
|||||||
if (UtilMath.offset(event.getFrom(), event.getTo()) > 0)
|
if (UtilMath.offset(event.getFrom(), event.getTo()) > 0)
|
||||||
event.setTo(event.getFrom());
|
event.setTo(event.getFrom());
|
||||||
|
|
||||||
if (_bombDefuser != null && _bombDefuser.equals(event.getPlayer()))
|
// if (_bombDefuser != null && _bombDefuser.equals(event.getPlayer()))
|
||||||
if (UtilMath.offset(event.getFrom(), event.getTo()) > 0)
|
// if (UtilMath.offset(event.getFrom(), event.getTo()) > 0)
|
||||||
event.setTo(event.getFrom());
|
// event.setTo(event.getFrom());
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler
|
@EventHandler
|
||||||
@ -1435,69 +1454,61 @@ public class MineStrike extends TeamGame
|
|||||||
if (!UtilGear.isMat(player.getItemInHand(), Material.SHEARS))
|
if (!UtilGear.isMat(player.getItemInHand(), Material.SHEARS))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
UtilPlayer.message(player, F.main("Game", F.elem(C.cGreen + "Right-Click") + " with your " + F.elem("Knife") + " to defuse bombs."));
|
UtilPlayer.message(player, F.main("Game", "Look at the Bomb to defuse it."));
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler
|
public void startDefuse()
|
||||||
public void defuseBomb(PlayerInteractEvent event)
|
|
||||||
{
|
{
|
||||||
Player player = event.getPlayer();
|
for (Player player : GetTeam(ChatColor.AQUA).GetPlayers(true))
|
||||||
|
|
||||||
if (!UtilGear.isMat(player.getItemInHand(), Material.IRON_SWORD))
|
|
||||||
return;
|
|
||||||
|
|
||||||
if (!UtilEvent.isAction(event, ActionType.R_BLOCK))
|
|
||||||
{
|
{
|
||||||
if (_bomb != null && event.getClickedBlock() == null && _bomb.isBlock(event.getClickedBlock()))
|
Block block = player.getTargetBlock(null, 5);
|
||||||
|
|
||||||
|
if (block == null || !_bomb.isBlock(block))
|
||||||
|
continue;
|
||||||
|
|
||||||
|
if (UtilMath.offset(player.getLocation(), block.getLocation().add(0.5, 0, 0.5)) > 3)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
if (_bombDefuser != null)
|
||||||
{
|
{
|
||||||
UtilPlayer.message(player, F.main("Game", "Hold Right-Click to defuse the Bomb!"));
|
if (Recharge.Instance.use(player, "Defuse Message", 2000, false, false))
|
||||||
return;
|
UtilPlayer.message(player, F.main("Game", _bombDefuser.getName() + " is already defusing the Bomb."));
|
||||||
|
|
||||||
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
return;
|
_bombDefuser = player;
|
||||||
|
_bombDefuser.setExp(0f);
|
||||||
|
|
||||||
|
UtilPlayer.message(player, F.main("Game", "You are defusing the Bomb."));
|
||||||
|
|
||||||
|
_bombDefuser.getWorld().playSound(_bombDefuser.getLocation(), Sound.PISTON_RETRACT, 2f, 1f);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (_bomb == null || event.getClickedBlock() == null || !_bomb.isBlock(event.getClickedBlock()))
|
|
||||||
{
|
|
||||||
UtilPlayer.message(player, F.main("Game", "You must be looking at the Bomb to defuse."));
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!UtilEnt.isGrounded(player))
|
|
||||||
{
|
|
||||||
UtilPlayer.message(player, F.main("Game", "You can only defuse Bomb while on the ground!"));
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (_bombDefuser != null)
|
|
||||||
{
|
|
||||||
UtilPlayer.message(player, F.main("Game", _bombDefuser.getName() + " is already defusing the Bomb."));
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
_bombDefuser = player;
|
|
||||||
_bombDefuser.setExp(0f);
|
|
||||||
|
|
||||||
UtilPlayer.message(player, F.main("Game", "You are defusing the Bomb."));
|
|
||||||
|
|
||||||
_bombDefuser.getWorld().playSound(_bombDefuser.getLocation(), Sound.PISTON_RETRACT, 2f, 1f);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler
|
@EventHandler
|
||||||
public void defuseBombUpdate(UpdateEvent event)
|
public void defuseBombUpdate(UpdateEvent event)
|
||||||
{
|
{
|
||||||
|
if (_bomb == null)
|
||||||
|
return;
|
||||||
|
|
||||||
if (!IsLive())
|
if (!IsLive())
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (event.getType() != UpdateType.TICK)
|
if (event.getType() != UpdateType.TICK)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
if (_bombDefuser == null)
|
||||||
|
{
|
||||||
|
startDefuse();
|
||||||
|
}
|
||||||
|
|
||||||
if (_bombDefuser == null)
|
if (_bombDefuser == null)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (!_bombDefuser.isBlocking())
|
Block block = _bombDefuser.getTargetBlock(null, 5);
|
||||||
|
|
||||||
|
if (block == null || !_bomb.isBlock(block) || UtilMath.offset(_bombDefuser.getLocation(), block.getLocation().add(0.5, 0, 0.5)) > 3)
|
||||||
{
|
{
|
||||||
_bombDefuser.setExp(0f);
|
_bombDefuser.setExp(0f);
|
||||||
_bombDefuser = null;
|
_bombDefuser = null;
|
||||||
@ -1511,6 +1522,8 @@ public class MineStrike extends TeamGame
|
|||||||
|
|
||||||
_bombDefuser.setExp(Math.min(_bombDefuser.getExp() + defuseRate, 0.99999f));
|
_bombDefuser.setExp(Math.min(_bombDefuser.getExp() + defuseRate, 0.99999f));
|
||||||
|
|
||||||
|
UtilTitle.display(C.cAqua + C.Bold + "Defusing Bomb", UtilTitle.progress(_bombDefuser.getExp()), 0, 10, 0, _bombDefuser);
|
||||||
|
|
||||||
if (_bombDefuser.getExp() >= 0.98f)
|
if (_bombDefuser.getExp() >= 0.98f)
|
||||||
{
|
{
|
||||||
_bomb.defuse();
|
_bomb.defuse();
|
||||||
@ -1722,7 +1735,7 @@ public class MineStrike extends TeamGame
|
|||||||
for (Player player : UtilServer.getPlayers())
|
for (Player player : UtilServer.getPlayers())
|
||||||
player.playSound(player.getLocation(), Sound.LEVEL_UP, 1f, 1f);
|
player.playSound(player.getLocation(), Sound.LEVEL_UP, 1f, 1f);
|
||||||
|
|
||||||
UtilTitle.display(winnerLine, _winText, 20, 120, 20);
|
UtilTitle.display(null, winnerLine, 20, 120, 20);
|
||||||
|
|
||||||
//Check for total game win
|
//Check for total game win
|
||||||
EndCheck();
|
EndCheck();
|
||||||
@ -1781,11 +1794,9 @@ public class MineStrike extends TeamGame
|
|||||||
player.playSound(player.getLocation(), Sound.HORSE_ARMOR, 1f, 2f);
|
player.playSound(player.getLocation(), Sound.HORSE_ARMOR, 1f, 2f);
|
||||||
Manager.GetCondition().Factory().Blind("Respawn", player, null, 2, 0, false, false, false);
|
Manager.GetCondition().Factory().Blind("Respawn", player, null, 2, 0, false, false, false);
|
||||||
UtilPlayer.message(player, F.main("Game", "You have " + F.elem(C.cGreen + "$" + _shopManager.getMoney(player)) + ". Open your Inventory to spend it."));
|
UtilPlayer.message(player, F.main("Game", "You have " + F.elem(C.cGreen + "$" + _shopManager.getMoney(player)) + ". Open your Inventory to spend it."));
|
||||||
}
|
|
||||||
|
|
||||||
//Give Bomb
|
UtilTitle.display(C.cGreen + "$" + _shopManager.getMoney(player), "Open your Inventory to buy new equipment", 10, 120, 10, player);
|
||||||
Player player = UtilAlg.Random(GetTeam(ChatColor.RED).GetPlayers(true));
|
}
|
||||||
giveBombToPlayer(player);
|
|
||||||
|
|
||||||
//Update Scoreboard Teams
|
//Update Scoreboard Teams
|
||||||
for (GameTeam team : GetTeamList())
|
for (GameTeam team : GetTeamList())
|
||||||
@ -1968,6 +1979,13 @@ public class MineStrike extends TeamGame
|
|||||||
else
|
else
|
||||||
player.playSound(player.getLocation(), Sound.NOTE_SNARE_DRUM, 1f, 1f);
|
player.playSound(player.getLocation(), Sound.NOTE_SNARE_DRUM, 1f, 1f);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (_freezeTime == 0)
|
||||||
|
{
|
||||||
|
//Give Bomb
|
||||||
|
Player bombPlayer = UtilAlg.Random(GetTeam(ChatColor.RED).GetPlayers(true));
|
||||||
|
giveBombToPlayer(bombPlayer);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler
|
@EventHandler
|
||||||
@ -1976,6 +1994,9 @@ public class MineStrike extends TeamGame
|
|||||||
if (_freezeTime <= 0)
|
if (_freezeTime <= 0)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
if (!IsAlive(event.getPlayer()))
|
||||||
|
return;
|
||||||
|
|
||||||
if (UtilMath.offset2d(event.getFrom(), event.getTo()) <= 0)
|
if (UtilMath.offset2d(event.getFrom(), event.getTo()) <= 0)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
@ -2089,7 +2110,10 @@ public class MineStrike extends TeamGame
|
|||||||
|
|
||||||
ItemStack stack = _scoped.remove(player);
|
ItemStack stack = _scoped.remove(player);
|
||||||
|
|
||||||
|
|
||||||
player.getInventory().setHelmet(stack);
|
player.getInventory().setHelmet(stack);
|
||||||
|
UtilInv.Update(player);
|
||||||
|
|
||||||
Manager.GetCondition().EndCondition(player, null, "Scope");
|
Manager.GetCondition().EndCondition(player, null, "Scope");
|
||||||
|
|
||||||
player.getWorld().playSound(player.getEyeLocation(), Sound.GHAST_DEATH, 0.8f, 1f);
|
player.getWorld().playSound(player.getEyeLocation(), Sound.GHAST_DEATH, 0.8f, 1f);
|
||||||
@ -2446,6 +2470,12 @@ public class MineStrike extends TeamGame
|
|||||||
return _bulletInstant;
|
return _bulletInstant;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@EventHandler
|
||||||
|
public void joinMessage(PlayerJoinEvent event)
|
||||||
|
{
|
||||||
|
UtilTitle.display(C.cGold + C.Bold + "MineStrike", "Make sure you accept the Resource Pack", 20, 120, 20, event.getPlayer());
|
||||||
|
}
|
||||||
|
|
||||||
@EventHandler
|
@EventHandler
|
||||||
public void debug(PlayerCommandPreprocessEvent event)
|
public void debug(PlayerCommandPreprocessEvent event)
|
||||||
{
|
{
|
||||||
|
@ -160,7 +160,7 @@ public abstract class StrikeItem
|
|||||||
public void fixStackName()
|
public void fixStackName()
|
||||||
{
|
{
|
||||||
ItemMeta meta = _stack.getItemMeta();
|
ItemMeta meta = _stack.getItemMeta();
|
||||||
meta.setDisplayName((_ownerName == null ? "" : _ownerName + "'s ") + C.Bold + getName() + ChatColor.RESET);
|
meta.setDisplayName(ChatColor.RESET + (_ownerName == null ? "" : _ownerName + "'s ") + C.Bold + getName() + ChatColor.RESET);
|
||||||
_stack.setItemMeta(meta);
|
_stack.setItemMeta(meta);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -163,11 +163,11 @@ public abstract class Gun extends StrikeItem
|
|||||||
loc.add(UtilAlg.getDown(player.getLocation().getDirection()).multiply(0.3));
|
loc.add(UtilAlg.getDown(player.getLocation().getDirection()).multiply(0.3));
|
||||||
UtilParticle.PlayParticle(ParticleType.EXPLODE, loc, 0, 0, 0, 0, 1);
|
UtilParticle.PlayParticle(ParticleType.EXPLODE, loc, 0, 0, 0, 0, 1);
|
||||||
|
|
||||||
|
game.registerBullet(fireBullet(player, game));
|
||||||
|
|
||||||
//Unscope
|
//Unscope
|
||||||
if (_gunType == GunType.SNIPER)
|
if (_gunType == GunType.SNIPER)
|
||||||
game.removeScope(player);
|
game.removeScope(player);
|
||||||
|
|
||||||
game.registerBullet(fireBullet(player, game));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public Bullet fireBullet(Player player, MineStrike game)
|
public Bullet fireBullet(Player player, MineStrike game)
|
||||||
@ -297,7 +297,7 @@ public abstract class Gun extends StrikeItem
|
|||||||
public void updateWeaponName(Player player)
|
public void updateWeaponName(Player player)
|
||||||
{
|
{
|
||||||
ItemMeta meta = getStack().getItemMeta();
|
ItemMeta meta = getStack().getItemMeta();
|
||||||
meta.setDisplayName((getOwnerName() == null ? "" : getOwnerName() + "'s ") + C.Bold + getName() + ChatColor.RESET + " " + C.cGreen + _loadedAmmo + ChatColor.RESET + " / " + C.cYellow + _reserveAmmo);
|
meta.setDisplayName(ChatColor.RESET + (getOwnerName() == null ? "" : getOwnerName() + "'s ") + C.Bold + getName() + ChatColor.RESET + " " + C.cGreen + _loadedAmmo + ChatColor.RESET + " / " + C.cYellow + _reserveAmmo);
|
||||||
getStack().setItemMeta(meta);
|
getStack().setItemMeta(meta);
|
||||||
|
|
||||||
if (player != null)
|
if (player != null)
|
||||||
|
@ -75,7 +75,7 @@ public class KitPig extends SmashKit
|
|||||||
{
|
{
|
||||||
ChatColor.RESET + "When your health drops below 4, you morph",
|
ChatColor.RESET + "When your health drops below 4, you morph",
|
||||||
ChatColor.RESET + "into a Nether Pig. This gives you Speed I,",
|
ChatColor.RESET + "into a Nether Pig. This gives you Speed I,",
|
||||||
ChatColor.RESET + "10 Armor and half Energy costs for skills.",
|
ChatColor.RESET + "8 Armor and reduces Energy costs by 33%.",
|
||||||
ChatColor.RESET + "",
|
ChatColor.RESET + "",
|
||||||
ChatColor.RESET + "When your health returns to 8, you return",
|
ChatColor.RESET + "When your health returns to 8, you return",
|
||||||
ChatColor.RESET + "back to Pig Form.",
|
ChatColor.RESET + "back to Pig Form.",
|
||||||
|
@ -71,7 +71,7 @@ public class PerkPigBaconBomb extends Perk
|
|||||||
|
|
||||||
DisguiseBase disguise = Manager.GetDisguise().getDisguise(player);
|
DisguiseBase disguise = Manager.GetDisguise().getDisguise(player);
|
||||||
if (disguise != null && disguise instanceof DisguisePigZombie)
|
if (disguise != null && disguise instanceof DisguisePigZombie)
|
||||||
energy = 0.2f;
|
energy = energy * 0.7f;
|
||||||
|
|
||||||
//Energy
|
//Energy
|
||||||
if (player.getExp() < energy)
|
if (player.getExp() < energy)
|
||||||
|
@ -73,7 +73,7 @@ public class PerkPigBaconBounce extends Perk implements IThrown
|
|||||||
|
|
||||||
DisguiseBase disguise = Manager.GetDisguise().getDisguise(player);
|
DisguiseBase disguise = Manager.GetDisguise().getDisguise(player);
|
||||||
if (disguise != null && disguise instanceof DisguisePigZombie)
|
if (disguise != null && disguise instanceof DisguisePigZombie)
|
||||||
energy = 0.1f;
|
energy = energy * 0.7f;
|
||||||
|
|
||||||
//Energy
|
//Energy
|
||||||
if (player.getExp() < energy)
|
if (player.getExp() < energy)
|
||||||
|
@ -60,10 +60,10 @@ public class PerkPigZombie extends Perk
|
|||||||
player.getInventory().setLeggings(ItemStackFactory.Instance.CreateStack(Material.CHAINMAIL_LEGGINGS));
|
player.getInventory().setLeggings(ItemStackFactory.Instance.CreateStack(Material.CHAINMAIL_LEGGINGS));
|
||||||
player.getInventory().setBoots(ItemStackFactory.Instance.CreateStack(Material.CHAINMAIL_BOOTS));
|
player.getInventory().setBoots(ItemStackFactory.Instance.CreateStack(Material.CHAINMAIL_BOOTS));
|
||||||
|
|
||||||
player.getInventory().remove(Material.DIAMOND_HELMET);
|
player.getInventory().remove(Material.IRON_HELMET);
|
||||||
player.getInventory().remove(Material.DIAMOND_CHESTPLATE);
|
player.getInventory().remove(Material.IRON_CHESTPLATE);
|
||||||
player.getInventory().remove(Material.DIAMOND_LEGGINGS);
|
player.getInventory().remove(Material.IRON_LEGGINGS);
|
||||||
player.getInventory().remove(Material.DIAMOND_BOOTS);
|
player.getInventory().remove(Material.IRON_BOOTS);
|
||||||
|
|
||||||
//Disguise
|
//Disguise
|
||||||
DisguisePig disguise = new DisguisePig(player);
|
DisguisePig disguise = new DisguisePig(player);
|
||||||
@ -93,10 +93,10 @@ public class PerkPigZombie extends Perk
|
|||||||
_active.add(player);
|
_active.add(player);
|
||||||
|
|
||||||
//Armor
|
//Armor
|
||||||
player.getInventory().setHelmet(new ItemStack(Material.DIAMOND_HELMET));
|
player.getInventory().setHelmet(new ItemStack(Material.IRON_HELMET));
|
||||||
player.getInventory().setChestplate(new ItemStack(Material.DIAMOND_CHESTPLATE));
|
player.getInventory().setChestplate(new ItemStack(Material.IRON_CHESTPLATE));
|
||||||
player.getInventory().setLeggings(new ItemStack(Material.DIAMOND_LEGGINGS));
|
player.getInventory().setLeggings(new ItemStack(Material.IRON_LEGGINGS));
|
||||||
player.getInventory().setBoots(new ItemStack(Material.DIAMOND_BOOTS));
|
player.getInventory().setBoots(new ItemStack(Material.IRON_BOOTS));
|
||||||
|
|
||||||
//Disguise
|
//Disguise
|
||||||
DisguisePigZombie disguise = new DisguisePigZombie(player);
|
DisguisePigZombie disguise = new DisguisePigZombie(player);
|
||||||
|
@ -0,0 +1,172 @@
|
|||||||
|
package nautilus.game.arcade.managers;
|
||||||
|
|
||||||
|
import java.util.HashSet;
|
||||||
|
import java.util.LinkedList;
|
||||||
|
import java.util.Random;
|
||||||
|
|
||||||
|
import mineplex.core.common.util.C;
|
||||||
|
import mineplex.core.common.util.F;
|
||||||
|
import mineplex.core.common.util.UtilFirework;
|
||||||
|
import mineplex.core.common.util.UtilServer;
|
||||||
|
import mineplex.core.common.util.UtilTitle;
|
||||||
|
import mineplex.core.reward.IReward;
|
||||||
|
import mineplex.core.reward.RewardManager;
|
||||||
|
import mineplex.core.reward.RewardRarity;
|
||||||
|
import mineplex.core.reward.rewards.InventoryReward;
|
||||||
|
import mineplex.core.treasure.animation.Animation;
|
||||||
|
import mineplex.core.updater.UpdateType;
|
||||||
|
import mineplex.core.updater.event.UpdateEvent;
|
||||||
|
import nautilus.game.arcade.ArcadeManager;
|
||||||
|
import nautilus.game.arcade.events.GameStateChangeEvent;
|
||||||
|
import nautilus.game.arcade.game.Game.GameState;
|
||||||
|
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
|
import org.bukkit.Color;
|
||||||
|
import org.bukkit.FireworkEffect;
|
||||||
|
import org.bukkit.Material;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.event.EventHandler;
|
||||||
|
import org.bukkit.event.EventPriority;
|
||||||
|
import org.bukkit.event.Listener;
|
||||||
|
import org.bukkit.event.player.PlayerCommandPreprocessEvent;
|
||||||
|
import org.bukkit.event.player.PlayerQuitEvent;
|
||||||
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
|
||||||
|
public class GameLootManager implements Listener
|
||||||
|
{
|
||||||
|
private ArcadeManager Manager;
|
||||||
|
|
||||||
|
private RewardManager _rewardManager;
|
||||||
|
|
||||||
|
private HashSet<Player> _players = new HashSet<Player>();
|
||||||
|
|
||||||
|
private long _startTime = 0;
|
||||||
|
|
||||||
|
public GameLootManager(ArcadeManager manager)
|
||||||
|
{
|
||||||
|
Manager = manager;
|
||||||
|
|
||||||
|
Manager.GetPluginManager().registerEvents(this, Manager.GetPlugin());
|
||||||
|
|
||||||
|
_rewardManager = new RewardManager(Manager.GetDonation(), Manager.getInventoryManager(),
|
||||||
|
100, 250,
|
||||||
|
750, 1500,
|
||||||
|
2000, 3000,
|
||||||
|
10000, 20000,
|
||||||
|
false);
|
||||||
|
|
||||||
|
//Chest
|
||||||
|
_rewardManager.addReward(new InventoryReward(Manager.getInventoryManager(), "Treasure Chest", "Treasure Chest", 1, 1,
|
||||||
|
new ItemStack(Material.CHEST), RewardRarity.COMMON, 3));
|
||||||
|
|
||||||
|
//Key
|
||||||
|
_rewardManager.addReward(new InventoryReward(Manager.getInventoryManager(), "Treasure Key", "Treasure Key", 1, 1,
|
||||||
|
new ItemStack(Material.DIAMOND), RewardRarity.UNCOMMON, 500));
|
||||||
|
}
|
||||||
|
|
||||||
|
@EventHandler
|
||||||
|
public void registerPlayers(GameStateChangeEvent event)
|
||||||
|
{
|
||||||
|
if (!Manager.IsRewardAchievements())
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (event.GetState() != GameState.Live)
|
||||||
|
return;
|
||||||
|
|
||||||
|
for (Player player : event.GetGame().GetPlayers(true))
|
||||||
|
_players.add(player);
|
||||||
|
|
||||||
|
_startTime = System.currentTimeMillis();
|
||||||
|
}
|
||||||
|
|
||||||
|
@EventHandler
|
||||||
|
public void unregisterPlayer(PlayerQuitEvent event)
|
||||||
|
{
|
||||||
|
_players.remove(event.getPlayer());
|
||||||
|
}
|
||||||
|
|
||||||
|
@EventHandler(priority = EventPriority.MONITOR)
|
||||||
|
public void giveLoot(final GameStateChangeEvent event)
|
||||||
|
{
|
||||||
|
if (!Manager.IsRewardAchievements())
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (event.GetState() != GameState.Dead)
|
||||||
|
return;
|
||||||
|
|
||||||
|
UtilServer.getServer().getScheduler().scheduleSyncDelayedTask(Manager.GetPlugin(), new Runnable()
|
||||||
|
{
|
||||||
|
public void run()
|
||||||
|
{
|
||||||
|
for (Player player : _players)
|
||||||
|
{
|
||||||
|
giveReward(player);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}, 240);
|
||||||
|
//Delay after Achievements
|
||||||
|
|
||||||
|
_players.clear();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void giveReward(Player player)
|
||||||
|
{
|
||||||
|
double chance = (System.currentTimeMillis() - _startTime)/3600000d;
|
||||||
|
|
||||||
|
if (Math.random() > chance)
|
||||||
|
return;
|
||||||
|
|
||||||
|
IReward reward = _rewardManager.nextReward(player, null, false, false);
|
||||||
|
|
||||||
|
String name = reward.giveReward(player);
|
||||||
|
|
||||||
|
String outputName = reward.getRarity().getColor() + name;
|
||||||
|
|
||||||
|
//Self Display
|
||||||
|
UtilTitle.display(C.cDGreen + C.Bold + "Loot", "You found " + outputName, 20, 120, 20, player);
|
||||||
|
|
||||||
|
Random _random = new Random();
|
||||||
|
|
||||||
|
//Announce
|
||||||
|
if (reward.getRarity() != RewardRarity.COMMON)
|
||||||
|
{
|
||||||
|
Bukkit.broadcastMessage(F.main("Loot", F.name(player.getName()) + " found the " + reward.getRarity().getName() + " treasure " + outputName));
|
||||||
|
}
|
||||||
|
|
||||||
|
//Effect
|
||||||
|
if (reward.getRarity() == RewardRarity.UNCOMMON)
|
||||||
|
{
|
||||||
|
FireworkEffect effect = FireworkEffect.builder().withColor(Color.fromRGB(_random.nextInt(255), _random.nextInt(255), _random.nextInt(255)))
|
||||||
|
.withFade(Color.fromRGB(_random.nextInt(255), _random.nextInt(255), _random.nextInt(255)))
|
||||||
|
.with(FireworkEffect.Type.STAR)
|
||||||
|
.build();
|
||||||
|
|
||||||
|
UtilFirework.playFirework(player.getEyeLocation(), effect);
|
||||||
|
}
|
||||||
|
else if (reward.getRarity() == RewardRarity.RARE)
|
||||||
|
{
|
||||||
|
FireworkEffect effect = FireworkEffect.builder().with(FireworkEffect.Type.BALL).withColor(Color.YELLOW).withFade(Color.WHITE).build();
|
||||||
|
UtilFirework.playFirework(player.getEyeLocation(), effect);
|
||||||
|
}
|
||||||
|
else if (reward.getRarity() == RewardRarity.LEGENDARY)
|
||||||
|
{
|
||||||
|
FireworkEffect effect = FireworkEffect.builder().with(FireworkEffect.Type.BALL_LARGE).withColor(Color.RED).withFade(Color.BLACK).build();
|
||||||
|
UtilFirework.playFirework(player.getEyeLocation(), effect);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@EventHandler
|
||||||
|
public void command(PlayerCommandPreprocessEvent event)
|
||||||
|
{
|
||||||
|
if (!event.getPlayer().isOp())
|
||||||
|
return;
|
||||||
|
|
||||||
|
//TODO Remove
|
||||||
|
if (event.getMessage().startsWith("/lootdebug"))
|
||||||
|
{
|
||||||
|
event.getPlayer().sendMessage(C.cGreen + C.Bold + "Loot Debug...");
|
||||||
|
giveReward(event.getPlayer());
|
||||||
|
event.setCancelled(true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -253,6 +253,15 @@ public class GameManager implements Listener
|
|||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@EventHandler
|
||||||
|
public void VisibilityRefresh(GameStateChangeEvent event)
|
||||||
|
{
|
||||||
|
if (event.GetState() != GameState.Live)
|
||||||
|
return;
|
||||||
|
|
||||||
|
Manager.RefreshPlayers();
|
||||||
|
}
|
||||||
|
|
||||||
@EventHandler
|
@EventHandler
|
||||||
public void KitRegister(GameStateChangeEvent event)
|
public void KitRegister(GameStateChangeEvent event)
|
||||||
{
|
{
|
||||||
|
@ -23,8 +23,15 @@ public class DamageTakenStatTracker extends StatTracker<Game>
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
addStat(damagee, "Damage Taken", (int) Math.round(event.GetDamage()), false, false);
|
addStat(damagee, "Damage Taken", (int) Math.round(event.GetDamage()), false, false);
|
||||||
|
if (event.GetDamagerPlayer(true) != null)
|
||||||
|
addStat(damagee, "Damage Taken PvP ", (int) Math.round(event.GetDamage()), false, false);
|
||||||
|
|
||||||
if (getGame().GetKit(damagee) != null)
|
if (getGame().GetKit(damagee) != null)
|
||||||
|
{
|
||||||
addStat(damagee, getGame().GetKit(damagee).GetName() + " Damage Taken", (int) Math.round(event.GetDamage()), false, false);
|
addStat(damagee, getGame().GetKit(damagee).GetName() + " Damage Taken", (int) Math.round(event.GetDamage()), false, false);
|
||||||
|
|
||||||
|
if (event.GetDamagerPlayer(true) != null)
|
||||||
|
addStat(damagee, getGame().GetKit(damagee).GetName() + " Damage Taken PvP ", (int) Math.round(event.GetDamage()), false, false);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user