Complete animations for the 3 old chests
This commit is contained in:
parent
efc1ffe9db
commit
f7ae9ba982
@ -3,6 +3,7 @@ package mineplex.core.reward;
|
|||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
|
||||||
import mineplex.core.account.permissions.PermissionGroup;
|
import mineplex.core.account.permissions.PermissionGroup;
|
||||||
|
import mineplex.core.common.util.C;
|
||||||
import mineplex.core.treasure.reward.RewardRarity;
|
import mineplex.core.treasure.reward.RewardRarity;
|
||||||
|
|
||||||
public class RankRewardData extends RewardData
|
public class RankRewardData extends RewardData
|
||||||
@ -12,7 +13,7 @@ public class RankRewardData extends RewardData
|
|||||||
|
|
||||||
public RankRewardData(String friendlyName, ItemStack displayItem, RewardRarity rarity, PermissionGroup rank)
|
public RankRewardData(String friendlyName, ItemStack displayItem, RewardRarity rarity, PermissionGroup rank)
|
||||||
{
|
{
|
||||||
super(null, friendlyName, displayItem, rarity);
|
super(C.cRed + "Rank Upgrade", friendlyName, displayItem, rarity);
|
||||||
|
|
||||||
_rank = rank;
|
_rank = rank;
|
||||||
}
|
}
|
||||||
|
@ -7,7 +7,7 @@ public enum RewardType
|
|||||||
//% Chances Mythic Legend Rare Uncommon Common
|
//% Chances Mythic Legend Rare Uncommon Common
|
||||||
GAME_LOOT( 0.000001, 0.00001, 0.0001, 3, 0),
|
GAME_LOOT( 0.000001, 0.00001, 0.0001, 3, 0),
|
||||||
|
|
||||||
OLD_CHEST( 0, 0.06, 0.8, 16, 40),
|
OLD_CHEST( 20, 0.06, 0.8, 16, 40),
|
||||||
ANCIENT_CHEST( 0, 2, 8, 32, 0),
|
ANCIENT_CHEST( 0, 2, 8, 32, 0),
|
||||||
MYTHICAL_CHEST( 0.1, 4, 16, 72, 0),
|
MYTHICAL_CHEST( 0.1, 4, 16, 72, 0),
|
||||||
WINTER_CHEST( 0, 5, 18, 32, 0),
|
WINTER_CHEST( 0, 5, 18, 32, 0),
|
||||||
|
@ -25,7 +25,7 @@ public class RankReward extends Reward
|
|||||||
_canPassLegend = canPassLegend;
|
_canPassLegend = canPassLegend;
|
||||||
}
|
}
|
||||||
|
|
||||||
private PermissionGroup getNext(PermissionGroup current, boolean canPassLegend)
|
private PermissionGroup getNext(PermissionGroup current)
|
||||||
{
|
{
|
||||||
PermissionGroup newGroup = null;
|
PermissionGroup newGroup = null;
|
||||||
|
|
||||||
@ -41,16 +41,10 @@ public class RankReward extends Reward
|
|||||||
newGroup = PermissionGroup.LEGEND;
|
newGroup = PermissionGroup.LEGEND;
|
||||||
break;
|
break;
|
||||||
case LEGEND:
|
case LEGEND:
|
||||||
if (canPassLegend)
|
|
||||||
{
|
|
||||||
newGroup = PermissionGroup.TITAN;
|
newGroup = PermissionGroup.TITAN;
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
case TITAN:
|
case TITAN:
|
||||||
if (canPassLegend)
|
|
||||||
{
|
|
||||||
newGroup = PermissionGroup.ETERNAL;
|
newGroup = PermissionGroup.ETERNAL;
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
@ -62,7 +56,7 @@ public class RankReward extends Reward
|
|||||||
@Override
|
@Override
|
||||||
public RewardData giveRewardCustom(Player player)
|
public RewardData giveRewardCustom(Player player)
|
||||||
{
|
{
|
||||||
PermissionGroup group = getNext(CLIENT_MANAGER.Get(player).getPrimaryGroup(), _canPassLegend);
|
PermissionGroup group = getNext(CLIENT_MANAGER.Get(player).getPrimaryGroup());
|
||||||
|
|
||||||
if (group == null)
|
if (group == null)
|
||||||
{
|
{
|
||||||
@ -77,7 +71,7 @@ public class RankReward extends Reward
|
|||||||
@Override
|
@Override
|
||||||
public RewardData getFakeRewardData(Player player)
|
public RewardData getFakeRewardData(Player player)
|
||||||
{
|
{
|
||||||
PermissionGroup group = getNext(CLIENT_MANAGER.Get(player).getPrimaryGroup(), true);
|
PermissionGroup group = getNext(CLIENT_MANAGER.Get(player).getPrimaryGroup());
|
||||||
|
|
||||||
if (group == null)
|
if (group == null)
|
||||||
{
|
{
|
||||||
@ -90,7 +84,7 @@ public class RankReward extends Reward
|
|||||||
@Override
|
@Override
|
||||||
public boolean canGiveReward(Player player)
|
public boolean canGiveReward(Player player)
|
||||||
{
|
{
|
||||||
return !CLIENT_MANAGER.Get(player).getPrimaryGroup().inheritsFrom(PermissionGroup.ETERNAL);
|
return !CLIENT_MANAGER.Get(player).getPrimaryGroup().inheritsFrom(_canPassLegend ? PermissionGroup.ETERNAL : PermissionGroup.LEGEND);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -197,7 +197,7 @@ public class TreasureLocation implements Listener
|
|||||||
Bukkit.broadcastMessage(F.main(getManager().getName(), F.name(player.getName()) + " is opening " + (an ? "an" : "a") + " " + F.name(treasureName) + "."));
|
Bukkit.broadcastMessage(F.main(getManager().getName(), F.name(player.getName()) + " is opening " + (an ? "an" : "a") + " " + F.name(treasureName) + "."));
|
||||||
}
|
}
|
||||||
|
|
||||||
UtilTextMiddle.display(treasureName, "Choose " + C.cYellow + treasure.getRewardsPerChest() + C.cWhite + " to open");
|
UtilTextMiddle.display(treasureName, "Choose " + C.cYellow + treasure.getRewardsPerChest() + C.cWhite + " to open", 10, 30, 10, player);
|
||||||
}
|
}
|
||||||
}, player, treasure.getTreasureType().getItemName(), -1);
|
}, player, treasure.getTreasureType().getItemName(), -1);
|
||||||
|
|
||||||
|
@ -11,16 +11,20 @@ import org.bukkit.event.EventHandler;
|
|||||||
import mineplex.core.MiniPlugin;
|
import mineplex.core.MiniPlugin;
|
||||||
import mineplex.core.ReflectivelyCreateMiniPlugin;
|
import mineplex.core.ReflectivelyCreateMiniPlugin;
|
||||||
import mineplex.core.account.CoreClientManager;
|
import mineplex.core.account.CoreClientManager;
|
||||||
|
import mineplex.core.blockrestore.BlockRestore;
|
||||||
import mineplex.core.bonuses.BonusManager;
|
import mineplex.core.bonuses.BonusManager;
|
||||||
import mineplex.core.common.util.F;
|
import mineplex.core.common.util.F;
|
||||||
import mineplex.core.common.util.UtilMath;
|
import mineplex.core.common.util.UtilMath;
|
||||||
import mineplex.core.common.util.UtilServer;
|
import mineplex.core.common.util.UtilServer;
|
||||||
|
import mineplex.core.disguise.DisguiseManager;
|
||||||
import mineplex.core.donation.DonationManager;
|
import mineplex.core.donation.DonationManager;
|
||||||
import mineplex.core.gadget.event.GadgetBlockEvent;
|
import mineplex.core.gadget.event.GadgetBlockEvent;
|
||||||
import mineplex.core.gadget.event.GadgetSelectLocationEvent;
|
import mineplex.core.gadget.event.GadgetSelectLocationEvent;
|
||||||
import mineplex.core.inventory.InventoryManager;
|
import mineplex.core.inventory.InventoryManager;
|
||||||
import mineplex.core.recharge.Recharge;
|
import mineplex.core.recharge.Recharge;
|
||||||
import mineplex.core.treasure.reward.TreasureRewardManager;
|
import mineplex.core.treasure.reward.TreasureRewardManager;
|
||||||
|
import mineplex.core.treasure.types.AncientTreasure;
|
||||||
|
import mineplex.core.treasure.types.MythicalTreasure;
|
||||||
import mineplex.core.treasure.types.OldTreasure;
|
import mineplex.core.treasure.types.OldTreasure;
|
||||||
import mineplex.core.treasure.types.Treasure;
|
import mineplex.core.treasure.types.Treasure;
|
||||||
|
|
||||||
@ -28,8 +32,9 @@ import mineplex.core.treasure.types.Treasure;
|
|||||||
public class TreasureManager extends MiniPlugin
|
public class TreasureManager extends MiniPlugin
|
||||||
{
|
{
|
||||||
|
|
||||||
private final BonusManager _bonusManager;
|
private final BlockRestore _blockRestore;
|
||||||
private final CoreClientManager _clientManager;
|
private final CoreClientManager _clientManager;
|
||||||
|
private final DisguiseManager _disguiseManager;
|
||||||
private final DonationManager _donationManager;
|
private final DonationManager _donationManager;
|
||||||
private final InventoryManager _inventoryManager;
|
private final InventoryManager _inventoryManager;
|
||||||
private final TreasureRewardManager _rewardManager;
|
private final TreasureRewardManager _rewardManager;
|
||||||
@ -41,8 +46,9 @@ public class TreasureManager extends MiniPlugin
|
|||||||
{
|
{
|
||||||
super("Treasure");
|
super("Treasure");
|
||||||
|
|
||||||
_bonusManager = require(BonusManager.class);
|
_blockRestore = require(BlockRestore.class);
|
||||||
_clientManager = require(CoreClientManager.class);
|
_clientManager = require(CoreClientManager.class);
|
||||||
|
_disguiseManager = require(DisguiseManager.class);
|
||||||
_donationManager = require(DonationManager.class);
|
_donationManager = require(DonationManager.class);
|
||||||
_inventoryManager = require(InventoryManager.class);
|
_inventoryManager = require(InventoryManager.class);
|
||||||
_rewardManager = require(TreasureRewardManager.class);
|
_rewardManager = require(TreasureRewardManager.class);
|
||||||
@ -56,6 +62,8 @@ public class TreasureManager extends MiniPlugin
|
|||||||
private void populateTreasureTypes()
|
private void populateTreasureTypes()
|
||||||
{
|
{
|
||||||
addTreasureType(new OldTreasure());
|
addTreasureType(new OldTreasure());
|
||||||
|
addTreasureType(new AncientTreasure());
|
||||||
|
addTreasureType(new MythicalTreasure());
|
||||||
}
|
}
|
||||||
|
|
||||||
private void addTreasureType(Treasure treasure)
|
private void addTreasureType(Treasure treasure)
|
||||||
@ -151,9 +159,9 @@ public class TreasureManager extends MiniPlugin
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
public BonusManager getBonusManager()
|
public BlockRestore getBlockRestore()
|
||||||
{
|
{
|
||||||
return _bonusManager;
|
return _blockRestore;
|
||||||
}
|
}
|
||||||
|
|
||||||
public CoreClientManager getClientManager()
|
public CoreClientManager getClientManager()
|
||||||
@ -161,6 +169,11 @@ public class TreasureManager extends MiniPlugin
|
|||||||
return _clientManager;
|
return _clientManager;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public DisguiseManager getDisguiseManager()
|
||||||
|
{
|
||||||
|
return _disguiseManager;
|
||||||
|
}
|
||||||
|
|
||||||
public DonationManager getDonationManager()
|
public DonationManager getDonationManager()
|
||||||
{
|
{
|
||||||
return _donationManager;
|
return _donationManager;
|
||||||
|
@ -2,7 +2,9 @@ package mineplex.core.treasure;
|
|||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.concurrent.TimeUnit;
|
||||||
|
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.Location;
|
import org.bukkit.Location;
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
import org.bukkit.entity.LivingEntity;
|
import org.bukkit.entity.LivingEntity;
|
||||||
@ -13,6 +15,7 @@ import org.bukkit.event.player.PlayerInteractEvent;
|
|||||||
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 mineplex.core.common.util.F;
|
||||||
import mineplex.core.common.util.UtilAction;
|
import mineplex.core.common.util.UtilAction;
|
||||||
import mineplex.core.common.util.UtilAlg;
|
import mineplex.core.common.util.UtilAlg;
|
||||||
import mineplex.core.common.util.UtilEnt;
|
import mineplex.core.common.util.UtilEnt;
|
||||||
@ -20,10 +23,13 @@ import mineplex.core.common.util.UtilEvent;
|
|||||||
import mineplex.core.common.util.UtilEvent.ActionType;
|
import mineplex.core.common.util.UtilEvent.ActionType;
|
||||||
import mineplex.core.common.util.UtilMath;
|
import mineplex.core.common.util.UtilMath;
|
||||||
import mineplex.core.common.util.UtilServer;
|
import mineplex.core.common.util.UtilServer;
|
||||||
|
import mineplex.core.common.util.UtilText;
|
||||||
|
import mineplex.core.common.util.UtilTime;
|
||||||
import mineplex.core.reward.Reward;
|
import mineplex.core.reward.Reward;
|
||||||
import mineplex.core.reward.RewardData;
|
import mineplex.core.reward.RewardData;
|
||||||
import mineplex.core.treasure.animation.TreasureAnimation;
|
import mineplex.core.treasure.animation.TreasureAnimation;
|
||||||
import mineplex.core.treasure.animation.TreasureRewardAnimation;
|
import mineplex.core.treasure.animation.TreasureRewardAnimation;
|
||||||
|
import mineplex.core.treasure.reward.RewardRarity;
|
||||||
import mineplex.core.treasure.types.Treasure;
|
import mineplex.core.treasure.types.Treasure;
|
||||||
import mineplex.core.treasure.util.TreasureUtil;
|
import mineplex.core.treasure.util.TreasureUtil;
|
||||||
import mineplex.core.updater.UpdateType;
|
import mineplex.core.updater.UpdateType;
|
||||||
@ -32,7 +38,8 @@ import mineplex.core.updater.event.UpdateEvent;
|
|||||||
public class TreasureSession implements Listener
|
public class TreasureSession implements Listener
|
||||||
{
|
{
|
||||||
|
|
||||||
private static final int CHEST_RADIUS = 4;
|
private static final double CHEST_RADIUS = 3.2;
|
||||||
|
private static final long TIMEOUT = TimeUnit.MINUTES.toMillis(1);
|
||||||
|
|
||||||
private final Player _player;
|
private final Player _player;
|
||||||
private final TreasureLocation _treasureLocation;
|
private final TreasureLocation _treasureLocation;
|
||||||
@ -42,6 +49,7 @@ public class TreasureSession implements Listener
|
|||||||
private final List<Reward> _rewards;
|
private final List<Reward> _rewards;
|
||||||
private final List<RewardData> _rewardData;
|
private final List<RewardData> _rewardData;
|
||||||
private final List<Location> _openedChests;
|
private final List<Location> _openedChests;
|
||||||
|
private final long _start;
|
||||||
|
|
||||||
TreasureSession(Player player, TreasureLocation treasureLocation, Treasure treasure)
|
TreasureSession(Player player, TreasureLocation treasureLocation, Treasure treasure)
|
||||||
{
|
{
|
||||||
@ -53,16 +61,11 @@ public class TreasureSession implements Listener
|
|||||||
_rewards = Treasure.getRewardManager().getRewards(player, treasure);
|
_rewards = Treasure.getRewardManager().getRewards(player, treasure);
|
||||||
_rewardData = new ArrayList<>(treasure.getRewardsPerChest());
|
_rewardData = new ArrayList<>(treasure.getRewardsPerChest());
|
||||||
_openedChests = new ArrayList<>(treasure.getRewardsPerChest());
|
_openedChests = new ArrayList<>(treasure.getRewardsPerChest());
|
||||||
|
_start = System.currentTimeMillis();
|
||||||
|
|
||||||
if (!hasFailed())
|
if (!hasFailed())
|
||||||
{
|
{
|
||||||
_rewards.forEach(reward -> reward.giveReward(player, _rewardData::add));
|
_rewards.forEach(reward -> reward.giveReward(player, _rewardData::add));
|
||||||
|
|
||||||
for (RewardData rewardData : _rewardData)
|
|
||||||
{
|
|
||||||
player.sendMessage(rewardData.getHeader() + " -> " + rewardData.getFriendlyName());
|
|
||||||
}
|
|
||||||
|
|
||||||
_animation.setRunning(true);
|
_animation.setRunning(true);
|
||||||
UtilServer.RegisterEvents(this);
|
UtilServer.RegisterEvents(this);
|
||||||
}
|
}
|
||||||
@ -115,6 +118,7 @@ public class TreasureSession implements Listener
|
|||||||
}
|
}
|
||||||
|
|
||||||
RewardData rewardData = _rewardData.get(_openedChests.size());
|
RewardData rewardData = _rewardData.get(_openedChests.size());
|
||||||
|
RewardRarity rarity = rewardData.getRarity();
|
||||||
TreasureRewardAnimation rewardAnimation = TreasureRewardAnimation.getAnimationFor(_treasure, _treasureLocation, location.clone().add(0.5, 1, 0.5), rewardData);
|
TreasureRewardAnimation rewardAnimation = TreasureRewardAnimation.getAnimationFor(_treasure, _treasureLocation, location.clone().add(0.5, 1, 0.5), rewardData);
|
||||||
Material material = event.getClickedBlock().getType();
|
Material material = event.getClickedBlock().getType();
|
||||||
|
|
||||||
@ -123,6 +127,12 @@ public class TreasureSession implements Listener
|
|||||||
TreasureUtil.playChestOpen(location, true);
|
TreasureUtil.playChestOpen(location, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (rarity.ordinal() >= RewardRarity.RARE.ordinal())
|
||||||
|
{
|
||||||
|
boolean an = UtilText.startsWithVowel(rewardData.getFriendlyName());
|
||||||
|
Bukkit.broadcastMessage(F.main(_treasureLocation.getManager().getName(), F.name(player.getName()) + " found " + (an ? "an" : "a") + " " + F.name(rarity.getColor() + rarity.getName()) + " " + F.name(rewardData.getFriendlyName()) + "."));
|
||||||
|
}
|
||||||
|
|
||||||
if (rewardAnimation != null)
|
if (rewardAnimation != null)
|
||||||
{
|
{
|
||||||
_rewardAnimations.add(rewardAnimation);
|
_rewardAnimations.add(rewardAnimation);
|
||||||
@ -165,6 +175,10 @@ public class TreasureSession implements Listener
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
_rewardAnimations.stream()
|
||||||
|
.filter(TreasureAnimation::isRunning)
|
||||||
|
.forEach(TreasureAnimation::run);
|
||||||
|
|
||||||
if (_animation.isRunning())
|
if (_animation.isRunning())
|
||||||
{
|
{
|
||||||
_animation.run();
|
_animation.run();
|
||||||
@ -186,7 +200,7 @@ public class TreasureSession implements Listener
|
|||||||
{
|
{
|
||||||
for (LivingEntity entity : UtilEnt.getInRadius(_treasureLocation.getChest(), CHEST_RADIUS).keySet())
|
for (LivingEntity entity : UtilEnt.getInRadius(_treasureLocation.getChest(), CHEST_RADIUS).keySet())
|
||||||
{
|
{
|
||||||
if (entity.equals(_player))
|
if (entity.equals(_player) || UtilEnt.hasFlag(entity, UtilEnt.FLAG_ENTITY_COMPONENT))
|
||||||
{
|
{
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
@ -205,12 +219,30 @@ public class TreasureSession implements Listener
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (UtilMath.offsetSquared(player.getLocation(), _treasureLocation.getChest()) > CHEST_RADIUS * CHEST_RADIUS)
|
if (UtilMath.offset2dSquared(player.getLocation(), _treasureLocation.getChest()) > CHEST_RADIUS * CHEST_RADIUS)
|
||||||
{
|
{
|
||||||
event.setTo(event.getFrom());
|
event.setTo(event.getFrom());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@EventHandler
|
||||||
|
public void updateTimeout(UpdateEvent event)
|
||||||
|
{
|
||||||
|
if (event.getType() != UpdateType.SLOW || !UtilTime.elapsed(_start, TIMEOUT))
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
getPlayer().sendMessage(F.main(_treasureLocation.getManager().getName(), "You took too long opening your chest. I picked your rewards for you:"));
|
||||||
|
|
||||||
|
for (RewardData rewardData : _rewardData)
|
||||||
|
{
|
||||||
|
getPlayer().sendMessage(F.main(_treasureLocation.getManager().getName(), rewardData.getHeader() + " : " + rewardData.getFriendlyName()));
|
||||||
|
}
|
||||||
|
|
||||||
|
cleanup();
|
||||||
|
}
|
||||||
|
|
||||||
public Player getPlayer()
|
public Player getPlayer()
|
||||||
{
|
{
|
||||||
return _player;
|
return _player;
|
||||||
|
@ -7,6 +7,7 @@ import org.bukkit.Location;
|
|||||||
import org.bukkit.entity.ArmorStand;
|
import org.bukkit.entity.ArmorStand;
|
||||||
import org.bukkit.entity.Entity;
|
import org.bukkit.entity.Entity;
|
||||||
import org.bukkit.entity.Item;
|
import org.bukkit.entity.Item;
|
||||||
|
import org.bukkit.entity.LivingEntity;
|
||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
import org.bukkit.util.EulerAngle;
|
import org.bukkit.util.EulerAngle;
|
||||||
|
|
||||||
@ -14,6 +15,7 @@ import mineplex.core.common.util.UtilAlg;
|
|||||||
import mineplex.core.common.util.UtilEnt;
|
import mineplex.core.common.util.UtilEnt;
|
||||||
import mineplex.core.common.util.UtilMath;
|
import mineplex.core.common.util.UtilMath;
|
||||||
import mineplex.core.common.util.UtilServer;
|
import mineplex.core.common.util.UtilServer;
|
||||||
|
import mineplex.core.disguise.disguises.DisguiseBase;
|
||||||
import mineplex.core.treasure.TreasureLocation;
|
import mineplex.core.treasure.TreasureLocation;
|
||||||
import mineplex.core.treasure.TreasureSession;
|
import mineplex.core.treasure.TreasureSession;
|
||||||
import mineplex.core.treasure.animation.event.TreasureAnimationFinishEvent;
|
import mineplex.core.treasure.animation.event.TreasureAnimationFinishEvent;
|
||||||
@ -25,6 +27,7 @@ public abstract class TreasureAnimation implements Runnable
|
|||||||
private final Treasure _treasure;
|
private final Treasure _treasure;
|
||||||
private final TreasureLocation _treasureLocation;
|
private final TreasureLocation _treasureLocation;
|
||||||
|
|
||||||
|
protected final List<LivingEntity> _entities;
|
||||||
protected final List<ArmorStand> _stands;
|
protected final List<ArmorStand> _stands;
|
||||||
protected final List<Item> _items;
|
protected final List<Item> _items;
|
||||||
|
|
||||||
@ -36,6 +39,7 @@ public abstract class TreasureAnimation implements Runnable
|
|||||||
_treasure = treasure;
|
_treasure = treasure;
|
||||||
_treasureLocation = treasureLocation;
|
_treasureLocation = treasureLocation;
|
||||||
|
|
||||||
|
_entities = new ArrayList<>();
|
||||||
_stands = new ArrayList<>();
|
_stands = new ArrayList<>();
|
||||||
_items = new ArrayList<>();
|
_items = new ArrayList<>();
|
||||||
}
|
}
|
||||||
@ -63,12 +67,32 @@ public abstract class TreasureAnimation implements Runnable
|
|||||||
|
|
||||||
public void cleanup()
|
public void cleanup()
|
||||||
{
|
{
|
||||||
|
_entities.forEach(Entity::remove);
|
||||||
|
_entities.clear();
|
||||||
_stands.forEach(Entity::remove);
|
_stands.forEach(Entity::remove);
|
||||||
_stands.clear();
|
_stands.clear();
|
||||||
_items.forEach(Entity::remove);
|
_items.forEach(Entity::remove);
|
||||||
_items.clear();
|
_items.clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected <T extends LivingEntity> T spawnEntity(Location location, Class<T> clazz)
|
||||||
|
{
|
||||||
|
T entity = location.getWorld().spawn(location, clazz);
|
||||||
|
|
||||||
|
UtilEnt.vegetate(entity);
|
||||||
|
UtilEnt.ghost(entity, true, false);
|
||||||
|
UtilEnt.CreatureLook(entity, location.getPitch(), location.getYaw());
|
||||||
|
UtilEnt.addFlag(entity, UtilEnt.FLAG_ENTITY_COMPONENT);
|
||||||
|
_entities.add(entity);
|
||||||
|
|
||||||
|
return entity;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void disguise(DisguiseBase disguise)
|
||||||
|
{
|
||||||
|
_treasureLocation.getManager().getDisguiseManager().disguise(disguise);
|
||||||
|
}
|
||||||
|
|
||||||
protected ArmorStand spawnArmourStand(Location location)
|
protected ArmorStand spawnArmourStand(Location location)
|
||||||
{
|
{
|
||||||
float yaw = Math.round(UtilAlg.GetYaw(UtilAlg.getTrajectory(location, _treasureLocation.getChest())) / 90F) * 90F;
|
float yaw = Math.round(UtilAlg.GetYaw(UtilAlg.getTrajectory(location, _treasureLocation.getChest())) / 90F) * 90F;
|
||||||
@ -139,7 +163,7 @@ public abstract class TreasureAnimation implements Runnable
|
|||||||
{
|
{
|
||||||
_running = running;
|
_running = running;
|
||||||
|
|
||||||
if (_running)
|
if (running)
|
||||||
{
|
{
|
||||||
onStart();
|
onStart();
|
||||||
}
|
}
|
||||||
|
@ -1,9 +1,19 @@
|
|||||||
package mineplex.core.treasure.animation;
|
package mineplex.core.treasure.animation;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.concurrent.atomic.AtomicBoolean;
|
||||||
|
import java.util.concurrent.atomic.AtomicInteger;
|
||||||
|
|
||||||
import org.bukkit.Location;
|
import org.bukkit.Location;
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
|
import org.bukkit.block.Block;
|
||||||
|
import org.bukkit.scheduler.BukkitRunnable;
|
||||||
|
|
||||||
|
import mineplex.core.blockrestore.BlockRestore;
|
||||||
import mineplex.core.common.util.MapUtil;
|
import mineplex.core.common.util.MapUtil;
|
||||||
|
import mineplex.core.common.util.UtilBlock;
|
||||||
|
import mineplex.core.common.util.UtilServer;
|
||||||
import mineplex.core.treasure.TreasureLocation;
|
import mineplex.core.treasure.TreasureLocation;
|
||||||
import mineplex.core.treasure.types.Treasure;
|
import mineplex.core.treasure.types.Treasure;
|
||||||
import mineplex.core.treasure.util.TreasureUtil;
|
import mineplex.core.treasure.util.TreasureUtil;
|
||||||
@ -11,13 +21,74 @@ import mineplex.core.treasure.util.TreasureUtil;
|
|||||||
public abstract class TreasureOpenAnimation extends TreasureAnimation
|
public abstract class TreasureOpenAnimation extends TreasureAnimation
|
||||||
{
|
{
|
||||||
|
|
||||||
|
private final List<Block> _blocksToRestore;
|
||||||
|
|
||||||
public TreasureOpenAnimation(Treasure treasure, TreasureLocation treasureLocation)
|
public TreasureOpenAnimation(Treasure treasure, TreasureLocation treasureLocation)
|
||||||
{
|
{
|
||||||
super(treasure, treasureLocation);
|
super(treasure, treasureLocation);
|
||||||
|
|
||||||
|
_blocksToRestore = new ArrayList<>();
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void createChestAt(Location location, Material material)
|
protected void createChestAt(Location location, Material material)
|
||||||
{
|
{
|
||||||
MapUtil.QuickChangeBlockAt(location, material, TreasureUtil.getChestFacing(location.getYaw()));
|
MapUtil.QuickChangeBlockAt(location, material, TreasureUtil.getChestFacing(location.getYaw()));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected int changeFloor(Material materialA, int dataA)
|
||||||
|
{
|
||||||
|
return changeFloor(materialA, dataA, materialA, dataA);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected int changeFloor(Material materialA, int dataA, Material materialB, int dataB)
|
||||||
|
{
|
||||||
|
BlockRestore blockRestore = getTreasureLocation().getManager().getBlockRestore();
|
||||||
|
AtomicInteger size = new AtomicInteger();
|
||||||
|
AtomicBoolean tick = new AtomicBoolean();
|
||||||
|
Location center = getTreasureLocation().getChest().clone().subtract(0, 1, 0);
|
||||||
|
|
||||||
|
UtilServer.runSyncTimer(new BukkitRunnable()
|
||||||
|
{
|
||||||
|
@Override
|
||||||
|
public void run()
|
||||||
|
{
|
||||||
|
int aSize = size.get();
|
||||||
|
|
||||||
|
if (aSize > 3)
|
||||||
|
{
|
||||||
|
cancel();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
int id = tick.get() ? materialA.getId() : materialB.getId();
|
||||||
|
byte data = (byte) (tick.get() ? dataA : dataB);
|
||||||
|
|
||||||
|
for (Block block : UtilBlock.getInBoundingBox(center.clone().add(aSize, 0, aSize), center.clone().subtract(aSize, 0, aSize)))
|
||||||
|
{
|
||||||
|
if (blockRestore.contains(block))
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
_blocksToRestore.add(block);
|
||||||
|
blockRestore.add(block, id, data, Long.MAX_VALUE);
|
||||||
|
}
|
||||||
|
|
||||||
|
size.getAndIncrement();
|
||||||
|
tick.set(!tick.get());
|
||||||
|
|
||||||
|
}
|
||||||
|
}, 0, 10);
|
||||||
|
|
||||||
|
return getTicks() + 40;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void cleanup()
|
||||||
|
{
|
||||||
|
super.cleanup();
|
||||||
|
|
||||||
|
BlockRestore blockRestore = getTreasureLocation().getManager().getBlockRestore();
|
||||||
|
_blocksToRestore.forEach(blockRestore::restore);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -4,8 +4,10 @@ import java.util.ArrayList;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import org.bukkit.Location;
|
import org.bukkit.Location;
|
||||||
|
import org.bukkit.Material;
|
||||||
import org.bukkit.entity.ArmorStand;
|
import org.bukkit.entity.ArmorStand;
|
||||||
import org.bukkit.entity.Item;
|
import org.bukkit.entity.Item;
|
||||||
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
|
||||||
import mineplex.core.Managers;
|
import mineplex.core.Managers;
|
||||||
import mineplex.core.common.currency.GlobalCurrency;
|
import mineplex.core.common.currency.GlobalCurrency;
|
||||||
@ -17,6 +19,9 @@ import mineplex.core.hologram.HologramManager;
|
|||||||
import mineplex.core.reward.RewardData;
|
import mineplex.core.reward.RewardData;
|
||||||
import mineplex.core.treasure.TreasureLocation;
|
import mineplex.core.treasure.TreasureLocation;
|
||||||
import mineplex.core.treasure.animation.animations.reward.CommonRewardAnimation;
|
import mineplex.core.treasure.animation.animations.reward.CommonRewardAnimation;
|
||||||
|
import mineplex.core.treasure.animation.animations.reward.LegendaryRewardAnimation;
|
||||||
|
import mineplex.core.treasure.animation.animations.reward.MythicalRewardAnimation;
|
||||||
|
import mineplex.core.treasure.animation.animations.reward.RareRewardAnimation;
|
||||||
import mineplex.core.treasure.animation.animations.reward.UncommonRewardAnimation;
|
import mineplex.core.treasure.animation.animations.reward.UncommonRewardAnimation;
|
||||||
import mineplex.core.treasure.types.Treasure;
|
import mineplex.core.treasure.types.Treasure;
|
||||||
|
|
||||||
@ -24,6 +29,7 @@ public abstract class TreasureRewardAnimation extends TreasureAnimation
|
|||||||
{
|
{
|
||||||
|
|
||||||
private static final HologramManager HOLOGRAM_MANAGER = Managers.require(HologramManager.class);
|
private static final HologramManager HOLOGRAM_MANAGER = Managers.require(HologramManager.class);
|
||||||
|
private static final ItemStack FALL_BACK_ITEM = new ItemStack(Material.PRISMARINE_SHARD);
|
||||||
|
|
||||||
public static TreasureRewardAnimation getAnimationFor(Treasure treasure, TreasureLocation treasureLocation, Location location, RewardData rewardData)
|
public static TreasureRewardAnimation getAnimationFor(Treasure treasure, TreasureLocation treasureLocation, Location location, RewardData rewardData)
|
||||||
{
|
{
|
||||||
@ -34,11 +40,11 @@ public abstract class TreasureRewardAnimation extends TreasureAnimation
|
|||||||
case UNCOMMON:
|
case UNCOMMON:
|
||||||
return new UncommonRewardAnimation(treasure, treasureLocation, location, rewardData);
|
return new UncommonRewardAnimation(treasure, treasureLocation, location, rewardData);
|
||||||
case RARE:
|
case RARE:
|
||||||
return null;
|
return new RareRewardAnimation(treasure, treasureLocation, location, rewardData);
|
||||||
case LEGENDARY:
|
case LEGENDARY:
|
||||||
return null;
|
return new LegendaryRewardAnimation(treasure, treasureLocation, location, rewardData);
|
||||||
case MYTHICAL:
|
case MYTHICAL:
|
||||||
return null;
|
return new MythicalRewardAnimation(treasure, treasureLocation, location, rewardData);
|
||||||
}
|
}
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
@ -65,7 +71,7 @@ public abstract class TreasureRewardAnimation extends TreasureAnimation
|
|||||||
private void createHologramItemPair0()
|
private void createHologramItemPair0()
|
||||||
{
|
{
|
||||||
ArmorStand itemHolder = spawnArmourStand(_location.clone().subtract(0, 1.5, 0));
|
ArmorStand itemHolder = spawnArmourStand(_location.clone().subtract(0, 1.5, 0));
|
||||||
Item item = spawnItem(_location, _rewardData.getDisplayItem(), false);
|
Item item = spawnItem(_location, _rewardData.getDisplayItem() == null ? FALL_BACK_ITEM : _rewardData.getDisplayItem(), false);
|
||||||
itemHolder.setPassenger(item);
|
itemHolder.setPassenger(item);
|
||||||
|
|
||||||
List<String> text = new ArrayList<>();
|
List<String> text = new ArrayList<>();
|
||||||
@ -99,9 +105,4 @@ public abstract class TreasureRewardAnimation extends TreasureAnimation
|
|||||||
{
|
{
|
||||||
return _location;
|
return _location;
|
||||||
}
|
}
|
||||||
|
|
||||||
public RewardData getRewardData()
|
|
||||||
{
|
|
||||||
return _rewardData;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,81 @@
|
|||||||
|
package mineplex.core.treasure.animation.animations;
|
||||||
|
|
||||||
|
import org.bukkit.Effect;
|
||||||
|
import org.bukkit.Location;
|
||||||
|
import org.bukkit.Material;
|
||||||
|
import org.bukkit.Sound;
|
||||||
|
import org.bukkit.entity.ArmorStand;
|
||||||
|
|
||||||
|
import mineplex.core.common.util.UtilAlg;
|
||||||
|
import mineplex.core.common.util.UtilMath;
|
||||||
|
import mineplex.core.common.util.UtilParticle;
|
||||||
|
import mineplex.core.common.util.UtilParticle.ParticleType;
|
||||||
|
import mineplex.core.common.util.UtilParticle.ViewDist;
|
||||||
|
import mineplex.core.disguise.disguises.DisguiseBlaze;
|
||||||
|
import mineplex.core.treasure.TreasureLocation;
|
||||||
|
import mineplex.core.treasure.animation.TreasureOpenAnimation;
|
||||||
|
import mineplex.core.treasure.types.Treasure;
|
||||||
|
|
||||||
|
public class AncientChestAnimation extends TreasureOpenAnimation
|
||||||
|
{
|
||||||
|
|
||||||
|
public AncientChestAnimation(Treasure treasure, TreasureLocation treasureLocation)
|
||||||
|
{
|
||||||
|
super(treasure, treasureLocation);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onStart()
|
||||||
|
{
|
||||||
|
changeFloor(Material.NETHER_BRICK, 0);
|
||||||
|
|
||||||
|
for (Location location : getTreasureLocation().getChestLocations())
|
||||||
|
{
|
||||||
|
location = location.clone().add(0, UtilMath.rRange(4, 6) + Math.random(), 0);
|
||||||
|
ArmorStand stand = spawnArmourStand(location);
|
||||||
|
disguise(new DisguiseBlaze(stand));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onTick()
|
||||||
|
{
|
||||||
|
double y = getTreasureLocation().getChest().getY() + 0.5;
|
||||||
|
|
||||||
|
_stands.removeIf(stand ->
|
||||||
|
{
|
||||||
|
Location location = stand.getLocation();
|
||||||
|
|
||||||
|
if (Math.random() < 0.05)
|
||||||
|
{
|
||||||
|
stand.getWorld().playSound(location, Sound.ZOMBIE_REMEDY, 1, 0.6F);
|
||||||
|
}
|
||||||
|
|
||||||
|
stand.teleport(location.subtract(0, 0.1, 0));
|
||||||
|
|
||||||
|
if (stand.isValid() && location.getY() < y)
|
||||||
|
{
|
||||||
|
stand.getWorld().playEffect(location, Effect.ENDER_SIGNAL, 0);
|
||||||
|
stand.getWorld().playSound(location, Sound.EXPLODE, 1, 0.4F);
|
||||||
|
UtilParticle.PlayParticleToAll(ParticleType.LAVA, location, 0.5F, 0.5F, 0.5F, 0.1F, 10, ViewDist.NORMAL);
|
||||||
|
UtilParticle.PlayParticleToAll(ParticleType.FLAME, location, 0.2F, 0.2F, 0.2F, 0.1F, 10, ViewDist.NORMAL);
|
||||||
|
stand.remove();
|
||||||
|
createChestAt(location, Material.TRAPPED_CHEST);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
});
|
||||||
|
|
||||||
|
if (_stands.isEmpty())
|
||||||
|
{
|
||||||
|
setRunning(false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onFinish()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,95 @@
|
|||||||
|
package mineplex.core.treasure.animation.animations;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import org.bukkit.Location;
|
||||||
|
import org.bukkit.Material;
|
||||||
|
import org.bukkit.Sound;
|
||||||
|
import org.bukkit.entity.ArmorStand;
|
||||||
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
|
||||||
|
import mineplex.core.common.util.UtilAlg;
|
||||||
|
import mineplex.core.common.util.UtilParticle;
|
||||||
|
import mineplex.core.common.util.UtilParticle.ParticleType;
|
||||||
|
import mineplex.core.common.util.UtilParticle.ViewDist;
|
||||||
|
import mineplex.core.treasure.TreasureLocation;
|
||||||
|
import mineplex.core.treasure.animation.TreasureOpenAnimation;
|
||||||
|
import mineplex.core.treasure.types.Treasure;
|
||||||
|
|
||||||
|
public class MythicalChestAnimation extends TreasureOpenAnimation
|
||||||
|
{
|
||||||
|
|
||||||
|
private static final ItemStack HELMET = new ItemStack(Material.ENDER_CHEST);
|
||||||
|
private static final int RADIUS = 3;
|
||||||
|
private static final double OFFSET_THETA = Math.PI / 10;
|
||||||
|
private static final double DELTA_THETA = Math.PI / 40;
|
||||||
|
private static final double TOTAL_THETA = 2 * Math.PI;
|
||||||
|
|
||||||
|
private double _deltaTheta;
|
||||||
|
private double _totalTheta;
|
||||||
|
|
||||||
|
public MythicalChestAnimation(Treasure treasure, TreasureLocation treasureLocation)
|
||||||
|
{
|
||||||
|
super(treasure, treasureLocation);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onStart()
|
||||||
|
{
|
||||||
|
changeFloor(Material.QUARTZ_BLOCK, 0, Material.QUARTZ_BLOCK, 1);
|
||||||
|
|
||||||
|
List<Location> chests = getTreasureLocation().getChestLocations();
|
||||||
|
_deltaTheta = Math.PI * 2 / (double) chests.size();
|
||||||
|
|
||||||
|
for (Location location : chests)
|
||||||
|
{
|
||||||
|
ArmorStand stand = spawnArmourStand(location);
|
||||||
|
stand.setHelmet(HELMET);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onTick()
|
||||||
|
{
|
||||||
|
_totalTheta += DELTA_THETA;
|
||||||
|
|
||||||
|
int index = 0;
|
||||||
|
for (ArmorStand stand : _stands)
|
||||||
|
{
|
||||||
|
Location location = getTreasureLocation().getChest().clone();
|
||||||
|
double x = RADIUS * Math.cos(_totalTheta + OFFSET_THETA + index * _deltaTheta);
|
||||||
|
double z = RADIUS * Math.sin(_totalTheta + OFFSET_THETA + index * _deltaTheta);
|
||||||
|
|
||||||
|
location.add(x, 0, z);
|
||||||
|
|
||||||
|
location.setYaw(UtilAlg.GetYaw(UtilAlg.getTrajectory(location, getTreasureLocation().getChest())));
|
||||||
|
|
||||||
|
stand.teleport(location);
|
||||||
|
UtilParticle.PlayParticleToAll(ParticleType.HAPPY_VILLAGER, location.add(0, 1, 0), 0.25F, 0.25F, 0.25F, 0.1F, 1, ViewDist.NORMAL);
|
||||||
|
|
||||||
|
index++;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (_totalTheta >= TOTAL_THETA)
|
||||||
|
{
|
||||||
|
for (ArmorStand stand : _stands)
|
||||||
|
{
|
||||||
|
Location location = stand.getLocation();
|
||||||
|
stand.getWorld().playSound(location, Sound.ANVIL_LAND, 1, 0.8F);
|
||||||
|
UtilParticle.PlayParticleToAll(ParticleType.LARGE_EXPLODE, location, 0, 0, 0, 0.1F, 1, ViewDist.NORMAL);
|
||||||
|
UtilParticle.PlayParticleToAll(ParticleType.HAPPY_VILLAGER, location, 0.8F, 0.8F, 0.8F, 0.1F, 20, ViewDist.NORMAL);
|
||||||
|
stand.remove();
|
||||||
|
|
||||||
|
createChestAt(location, Material.ENDER_CHEST);
|
||||||
|
}
|
||||||
|
|
||||||
|
setRunning(false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onFinish()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
@ -19,6 +19,7 @@ public class CommonRewardAnimation extends TreasureRewardAnimation
|
|||||||
protected void onStart()
|
protected void onStart()
|
||||||
{
|
{
|
||||||
createHologramItemPair();
|
createHologramItemPair();
|
||||||
|
setRunning(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -0,0 +1,68 @@
|
|||||||
|
package mineplex.core.treasure.animation.animations.reward;
|
||||||
|
|
||||||
|
import org.bukkit.Color;
|
||||||
|
import org.bukkit.FireworkEffect;
|
||||||
|
import org.bukkit.FireworkEffect.Type;
|
||||||
|
import org.bukkit.Location;
|
||||||
|
import org.bukkit.Material;
|
||||||
|
import org.bukkit.Sound;
|
||||||
|
import org.bukkit.entity.Item;
|
||||||
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
import org.bukkit.util.Vector;
|
||||||
|
|
||||||
|
import mineplex.core.common.util.UtilFirework;
|
||||||
|
import mineplex.core.reward.RewardData;
|
||||||
|
import mineplex.core.treasure.TreasureLocation;
|
||||||
|
import mineplex.core.treasure.animation.TreasureRewardAnimation;
|
||||||
|
import mineplex.core.treasure.types.Treasure;
|
||||||
|
|
||||||
|
public class LegendaryRewardAnimation extends TreasureRewardAnimation
|
||||||
|
{
|
||||||
|
|
||||||
|
private static final FireworkEffect FIREWORK_EFFECT = FireworkEffect.builder()
|
||||||
|
.with(Type.BALL_LARGE)
|
||||||
|
.withColor(Color.LIME)
|
||||||
|
.withFade(Color.GREEN)
|
||||||
|
.withFlicker()
|
||||||
|
.build();
|
||||||
|
private static final ItemStack ITEM_STACK = new ItemStack(Material.EMERALD);
|
||||||
|
|
||||||
|
public LegendaryRewardAnimation(Treasure treasure, TreasureLocation treasureLocation, Location location, RewardData rewardData)
|
||||||
|
{
|
||||||
|
super(treasure, treasureLocation, location, rewardData);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onStart()
|
||||||
|
{
|
||||||
|
createHologramItemPair();
|
||||||
|
getLocation().getWorld().playSound(getLocation(), Sound.ENDERDRAGON_DEATH, 1, 1);
|
||||||
|
getLocation().getWorld().strikeLightningEffect(getLocation());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onTick()
|
||||||
|
{
|
||||||
|
if (getTicks() % 5 == 0)
|
||||||
|
{
|
||||||
|
UtilFirework.playFirework(getLocation(), FIREWORK_EFFECT);
|
||||||
|
|
||||||
|
for (int i = 0; i < 3; i++)
|
||||||
|
{
|
||||||
|
Item item = spawnItem(getLocation(), ITEM_STACK, true);
|
||||||
|
item.setVelocity(new Vector(Math.random() - 0.5, Math.random(), Math.random() - 0.5));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (getTicks() > 80)
|
||||||
|
{
|
||||||
|
setRunning(false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onFinish()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,77 @@
|
|||||||
|
package mineplex.core.treasure.animation.animations.reward;
|
||||||
|
|
||||||
|
import org.bukkit.Color;
|
||||||
|
import org.bukkit.FireworkEffect;
|
||||||
|
import org.bukkit.FireworkEffect.Type;
|
||||||
|
import org.bukkit.Location;
|
||||||
|
import org.bukkit.Sound;
|
||||||
|
|
||||||
|
import mineplex.core.common.util.UtilAlg;
|
||||||
|
import mineplex.core.common.util.UtilFirework;
|
||||||
|
import mineplex.core.common.util.UtilMath;
|
||||||
|
import mineplex.core.common.util.UtilParticle;
|
||||||
|
import mineplex.core.common.util.UtilParticle.ParticleType;
|
||||||
|
import mineplex.core.common.util.UtilParticle.ViewDist;
|
||||||
|
import mineplex.core.reward.RewardData;
|
||||||
|
import mineplex.core.treasure.TreasureLocation;
|
||||||
|
import mineplex.core.treasure.animation.TreasureRewardAnimation;
|
||||||
|
import mineplex.core.treasure.types.Treasure;
|
||||||
|
|
||||||
|
public class MythicalRewardAnimation extends TreasureRewardAnimation
|
||||||
|
{
|
||||||
|
|
||||||
|
private static final FireworkEffect FIREWORK_EFFECT = FireworkEffect.builder()
|
||||||
|
.with(Type.STAR)
|
||||||
|
.withColor(Color.RED)
|
||||||
|
.withFade(Color.MAROON)
|
||||||
|
.withFlicker()
|
||||||
|
.build();
|
||||||
|
|
||||||
|
private long _currentTime;
|
||||||
|
|
||||||
|
public MythicalRewardAnimation(Treasure treasure, TreasureLocation treasureLocation, Location location, RewardData rewardData)
|
||||||
|
{
|
||||||
|
super(treasure, treasureLocation, location, rewardData);
|
||||||
|
|
||||||
|
_currentTime = location.getWorld().getTime();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onStart()
|
||||||
|
{
|
||||||
|
createHologramItemPair();
|
||||||
|
getLocation().getWorld().playSound(getLocation(), Sound.ENDERDRAGON_DEATH, 1, 0.5F);
|
||||||
|
UtilParticle.PlayParticleToAll(ParticleType.LAVA, getLocation(), 0.5F, 0.5F, 0.5F, 0.1F, 10, ViewDist.NORMAL);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onTick()
|
||||||
|
{
|
||||||
|
if (getTicks() % 5 == 0)
|
||||||
|
{
|
||||||
|
getLocation().getWorld().setTime(getLocation().getWorld().getTime() + 12000);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (getTicks() % 2 == 0)
|
||||||
|
{
|
||||||
|
Location random = UtilAlg.getRandomLocation(getLocation(), 5, 0, 5);
|
||||||
|
|
||||||
|
if (Math.random() < 0.3)
|
||||||
|
{
|
||||||
|
random.getWorld().strikeLightningEffect(random);
|
||||||
|
}
|
||||||
|
UtilFirework.launchFirework(random, FIREWORK_EFFECT, null, UtilMath.r(3) + 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (getTicks() > 80)
|
||||||
|
{
|
||||||
|
setRunning(false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onFinish()
|
||||||
|
{
|
||||||
|
getLocation().getWorld().setTime(_currentTime);
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,66 @@
|
|||||||
|
package mineplex.core.treasure.animation.animations.reward;
|
||||||
|
|
||||||
|
import org.bukkit.Location;
|
||||||
|
import org.bukkit.Sound;
|
||||||
|
|
||||||
|
import mineplex.core.common.util.UtilFirework;
|
||||||
|
import mineplex.core.common.util.UtilParticle;
|
||||||
|
import mineplex.core.common.util.UtilParticle.ParticleType;
|
||||||
|
import mineplex.core.common.util.UtilParticle.ViewDist;
|
||||||
|
import mineplex.core.common.util.UtilServer;
|
||||||
|
import mineplex.core.reward.RewardData;
|
||||||
|
import mineplex.core.treasure.TreasureLocation;
|
||||||
|
import mineplex.core.treasure.animation.TreasureRewardAnimation;
|
||||||
|
import mineplex.core.treasure.types.Treasure;
|
||||||
|
|
||||||
|
public class RareRewardAnimation extends TreasureRewardAnimation
|
||||||
|
{
|
||||||
|
|
||||||
|
private double _radius = 3;
|
||||||
|
private double _height = -0.5;
|
||||||
|
|
||||||
|
public RareRewardAnimation(Treasure treasure, TreasureLocation treasureLocation, Location location, RewardData rewardData)
|
||||||
|
{
|
||||||
|
super(treasure, treasureLocation, location, rewardData);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onStart()
|
||||||
|
{
|
||||||
|
createHologramItemPair();
|
||||||
|
getLocation().getWorld().playSound(getLocation(), Sound.WITHER_SPAWN, 1, 0.5F);
|
||||||
|
UtilParticle.PlayParticleToAll(ParticleType.ENCHANTMENT_TABLE, getLocation(), 0.5F, 0.5F, 0.5F, 0.1F, 10, ViewDist.NORMAL);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onTick()
|
||||||
|
{
|
||||||
|
UtilParticle.PlayParticleToAll(ParticleType.PORTAL, getLocation(), 0.5F, 0.5F, 0.5F, 0.1F, 4, ViewDist.NORMAL);
|
||||||
|
|
||||||
|
if (getTicks() % 2 == 0)
|
||||||
|
{
|
||||||
|
for (double theta = 0; theta < 2 * Math.PI; theta += Math.PI / 20)
|
||||||
|
{
|
||||||
|
double x = _radius * Math.cos(theta);
|
||||||
|
double z = _radius * Math.sin(theta);
|
||||||
|
|
||||||
|
UtilParticle.PlayParticleToAll(ParticleType.WITCH_MAGIC, getLocation().clone().add(x, _height, z), 0, 0, 0, 0.001F, 1, ViewDist.NORMAL);
|
||||||
|
}
|
||||||
|
|
||||||
|
_radius -= 0.1;
|
||||||
|
_height += 0.1;
|
||||||
|
|
||||||
|
if (_radius <= 0)
|
||||||
|
{
|
||||||
|
UtilParticle.PlayParticleToAll(ParticleType.FIREWORKS_SPARK, getLocation().clone().add(0, _height, 0), 0, 0, 0, 0.5F, 30, ViewDist.NORMAL);
|
||||||
|
setRunning(false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onFinish()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
@ -6,6 +6,9 @@ import org.bukkit.FireworkEffect.Type;
|
|||||||
import org.bukkit.Location;
|
import org.bukkit.Location;
|
||||||
|
|
||||||
import mineplex.core.common.util.UtilFirework;
|
import mineplex.core.common.util.UtilFirework;
|
||||||
|
import mineplex.core.common.util.UtilParticle;
|
||||||
|
import mineplex.core.common.util.UtilParticle.ParticleType;
|
||||||
|
import mineplex.core.common.util.UtilParticle.ViewDist;
|
||||||
import mineplex.core.reward.RewardData;
|
import mineplex.core.reward.RewardData;
|
||||||
import mineplex.core.treasure.TreasureLocation;
|
import mineplex.core.treasure.TreasureLocation;
|
||||||
import mineplex.core.treasure.animation.TreasureRewardAnimation;
|
import mineplex.core.treasure.animation.TreasureRewardAnimation;
|
||||||
@ -30,7 +33,9 @@ public class UncommonRewardAnimation extends TreasureRewardAnimation
|
|||||||
protected void onStart()
|
protected void onStart()
|
||||||
{
|
{
|
||||||
createHologramItemPair();
|
createHologramItemPair();
|
||||||
|
UtilParticle.PlayParticleToAll(ParticleType.HEART, getLocation(), 0.25F, 0.25F, 0.25F, 0.1F, 4, ViewDist.NORMAL);
|
||||||
UtilFirework.playFirework(getLocation(), FIREWORK_EFFECT);
|
UtilFirework.playFirework(getLocation(), FIREWORK_EFFECT);
|
||||||
|
setRunning(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -196,7 +196,7 @@ public class TreasureRewardManager extends MiniPlugin
|
|||||||
|
|
||||||
// Due to the last reward always being an uncommon or better, we swap it randomly with another element as to
|
// Due to the last reward always being an uncommon or better, we swap it randomly with another element as to
|
||||||
// appear more random.
|
// appear more random.
|
||||||
Collections.swap(rewards, rewards.size() - 1, UtilMath.r(rewardMap.size()));
|
Collections.swap(rewards, rewards.size() - 1, UtilMath.r(rewards.size()));
|
||||||
|
|
||||||
return rewards;
|
return rewards;
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,21 @@
|
|||||||
|
package mineplex.core.treasure.types;
|
||||||
|
|
||||||
|
import mineplex.core.reward.RewardType;
|
||||||
|
import mineplex.core.treasure.animation.animations.AncientChestAnimation;
|
||||||
|
|
||||||
|
public class AncientTreasure extends NormalTreasure
|
||||||
|
{
|
||||||
|
|
||||||
|
public AncientTreasure()
|
||||||
|
{
|
||||||
|
super(TreasureType.ANCIENT);
|
||||||
|
|
||||||
|
setAnimation(treasureLocation -> new AncientChestAnimation(this, treasureLocation));
|
||||||
|
setRewards(RewardType.ANCIENT_CHEST);
|
||||||
|
setRewardsPerChest(4);
|
||||||
|
allowDuplicates();
|
||||||
|
setPurchasable(5000);
|
||||||
|
purchaseableFromStore();
|
||||||
|
enabledByDefault();
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,45 @@
|
|||||||
|
package mineplex.core.treasure.types;
|
||||||
|
|
||||||
|
import mineplex.core.gadget.gadgets.kitselector.HaloKitSelector;
|
||||||
|
import mineplex.core.gadget.gadgets.kitselector.RainbowDanceKitSelector;
|
||||||
|
import mineplex.core.gadget.gadgets.kitselector.ShimmeringRingKitSelector;
|
||||||
|
import mineplex.core.gadget.gadgets.kitselector.SingleParticleKitSelector;
|
||||||
|
import mineplex.core.reward.RewardType;
|
||||||
|
import mineplex.core.treasure.animation.animations.MythicalChestAnimation;
|
||||||
|
import mineplex.core.treasure.reward.RewardRarity;
|
||||||
|
|
||||||
|
public class MythicalTreasure extends NormalTreasure
|
||||||
|
{
|
||||||
|
|
||||||
|
public MythicalTreasure()
|
||||||
|
{
|
||||||
|
super(TreasureType.MYTHICAL);
|
||||||
|
|
||||||
|
setAnimation(treasureLocation -> new MythicalChestAnimation(this, treasureLocation));
|
||||||
|
setRewards(RewardType.MYTHICAL_CHEST);
|
||||||
|
setRewardsPerChest(4);
|
||||||
|
allowDuplicates();
|
||||||
|
setPurchasable(10000);
|
||||||
|
purchaseableFromStore();
|
||||||
|
enabledByDefault();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void addRare(RewardRarity rarity)
|
||||||
|
{
|
||||||
|
super.addRare(rarity);
|
||||||
|
|
||||||
|
addGadgetReward(getGadget(HaloKitSelector.class), rarity, 100);
|
||||||
|
addGadgetReward(getGadget(RainbowDanceKitSelector.class), rarity, 100);
|
||||||
|
addGadgetReward(getGadget(ShimmeringRingKitSelector.class), rarity, 150);
|
||||||
|
addGadgetReward(getKitSelector(SingleParticleKitSelector.SingleParticleSelectors.FLAMES_OF_FURY), rarity, 150);
|
||||||
|
addGadgetReward(getKitSelector(SingleParticleKitSelector.SingleParticleSelectors.EMBER), rarity, 100);
|
||||||
|
addGadgetReward(getKitSelector(SingleParticleKitSelector.SingleParticleSelectors.LOVE), rarity, 100);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void addMythical(RewardRarity rarity)
|
||||||
|
{
|
||||||
|
addRankReward(rarity, true, 100);
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,277 @@
|
|||||||
|
package mineplex.core.treasure.types;
|
||||||
|
|
||||||
|
import mineplex.core.gadget.gadgets.arrowtrail.ArrowTrailBlood;
|
||||||
|
import mineplex.core.gadget.gadgets.arrowtrail.ArrowTrailConfetti;
|
||||||
|
import mineplex.core.gadget.gadgets.arrowtrail.ArrowTrailEmerald;
|
||||||
|
import mineplex.core.gadget.gadgets.arrowtrail.ArrowTrailEnchant;
|
||||||
|
import mineplex.core.gadget.gadgets.arrowtrail.ArrowTrailMusic;
|
||||||
|
import mineplex.core.gadget.gadgets.arrowtrail.ArrowTrailShadow;
|
||||||
|
import mineplex.core.gadget.gadgets.arrowtrail.ArrowTrailStorm;
|
||||||
|
import mineplex.core.gadget.gadgets.balloons.BalloonType;
|
||||||
|
import mineplex.core.gadget.gadgets.death.DeathBlood;
|
||||||
|
import mineplex.core.gadget.gadgets.death.DeathEmerald;
|
||||||
|
import mineplex.core.gadget.gadgets.death.DeathEnchant;
|
||||||
|
import mineplex.core.gadget.gadgets.death.DeathMusic;
|
||||||
|
import mineplex.core.gadget.gadgets.death.DeathPinataBurst;
|
||||||
|
import mineplex.core.gadget.gadgets.death.DeathShadow;
|
||||||
|
import mineplex.core.gadget.gadgets.death.DeathStorm;
|
||||||
|
import mineplex.core.gadget.gadgets.doublejump.DoubleJumpBlood;
|
||||||
|
import mineplex.core.gadget.gadgets.doublejump.DoubleJumpEmerald;
|
||||||
|
import mineplex.core.gadget.gadgets.doublejump.DoubleJumpEnchant;
|
||||||
|
import mineplex.core.gadget.gadgets.doublejump.DoubleJumpFirecracker;
|
||||||
|
import mineplex.core.gadget.gadgets.doublejump.DoubleJumpMusic;
|
||||||
|
import mineplex.core.gadget.gadgets.doublejump.DoubleJumpShadow;
|
||||||
|
import mineplex.core.gadget.gadgets.doublejump.DoubleJumpStorm;
|
||||||
|
import mineplex.core.gadget.gadgets.item.ItemBatGun;
|
||||||
|
import mineplex.core.gadget.gadgets.item.ItemEtherealPearl;
|
||||||
|
import mineplex.core.gadget.gadgets.item.ItemFirework;
|
||||||
|
import mineplex.core.gadget.gadgets.item.ItemFleshHook;
|
||||||
|
import mineplex.core.gadget.gadgets.item.ItemMelonLauncher;
|
||||||
|
import mineplex.core.gadget.gadgets.item.ItemPaintballGun;
|
||||||
|
import mineplex.core.gadget.gadgets.item.ItemTNT;
|
||||||
|
import mineplex.core.gadget.gadgets.morph.MorphBat;
|
||||||
|
import mineplex.core.gadget.gadgets.morph.MorphBlock;
|
||||||
|
import mineplex.core.gadget.gadgets.morph.MorphChicken;
|
||||||
|
import mineplex.core.gadget.gadgets.morph.MorphCow;
|
||||||
|
import mineplex.core.gadget.gadgets.morph.MorphEnderman;
|
||||||
|
import mineplex.core.gadget.gadgets.morph.MorphSlime;
|
||||||
|
import mineplex.core.gadget.gadgets.morph.MorphVillager;
|
||||||
|
import mineplex.core.gadget.gadgets.mount.types.MountCart;
|
||||||
|
import mineplex.core.gadget.gadgets.mount.types.MountFrost;
|
||||||
|
import mineplex.core.gadget.gadgets.mount.types.MountMule;
|
||||||
|
import mineplex.core.gadget.gadgets.mount.types.MountSlime;
|
||||||
|
import mineplex.core.gadget.gadgets.mount.types.MountUndead;
|
||||||
|
import mineplex.core.gadget.gadgets.outfit.ravesuit.OutfitRaveSuitBoots;
|
||||||
|
import mineplex.core.gadget.gadgets.outfit.ravesuit.OutfitRaveSuitChestplate;
|
||||||
|
import mineplex.core.gadget.gadgets.outfit.ravesuit.OutfitRaveSuitHelmet;
|
||||||
|
import mineplex.core.gadget.gadgets.outfit.ravesuit.OutfitRaveSuitLeggings;
|
||||||
|
import mineplex.core.gadget.gadgets.outfit.spacesuit.OutfitSpaceSuitBoots;
|
||||||
|
import mineplex.core.gadget.gadgets.outfit.spacesuit.OutfitSpaceSuitChestplate;
|
||||||
|
import mineplex.core.gadget.gadgets.outfit.spacesuit.OutfitSpaceSuitHelmet;
|
||||||
|
import mineplex.core.gadget.gadgets.outfit.spacesuit.OutfitSpaceSuitLeggings;
|
||||||
|
import mineplex.core.gadget.gadgets.particle.ParticleBlood;
|
||||||
|
import mineplex.core.gadget.gadgets.particle.ParticleEmerald;
|
||||||
|
import mineplex.core.gadget.gadgets.particle.ParticleEnchant;
|
||||||
|
import mineplex.core.gadget.gadgets.particle.ParticleFairy;
|
||||||
|
import mineplex.core.gadget.gadgets.particle.ParticleFireRings;
|
||||||
|
import mineplex.core.gadget.gadgets.particle.ParticleFoot;
|
||||||
|
import mineplex.core.gadget.gadgets.particle.ParticleHeart;
|
||||||
|
import mineplex.core.gadget.gadgets.particle.ParticleMusic;
|
||||||
|
import mineplex.core.gadget.gadgets.particle.ParticlePartyTime;
|
||||||
|
import mineplex.core.gadget.gadgets.particle.ParticleRain;
|
||||||
|
import mineplex.core.gadget.gadgets.particle.ParticleWingsAngel;
|
||||||
|
import mineplex.core.gadget.gadgets.particle.ParticleWingsDemons;
|
||||||
|
import mineplex.core.gadget.gadgets.particle.ParticleWingsInfernal;
|
||||||
|
import mineplex.core.gadget.gadgets.particle.ParticleWingsPixie;
|
||||||
|
import mineplex.core.gadget.gadgets.particle.ParticleYinYang;
|
||||||
|
import mineplex.core.gadget.gadgets.wineffect.WinEffectBabyChicken;
|
||||||
|
import mineplex.core.gadget.gadgets.wineffect.WinEffectLavaTrap;
|
||||||
|
import mineplex.core.gadget.gadgets.wineffect.WinEffectLightningStrike;
|
||||||
|
import mineplex.core.gadget.gadgets.wineffect.WinEffectMrPunchMan;
|
||||||
|
import mineplex.core.gadget.gadgets.wineffect.WinEffectRiseOfTheElderGuardian;
|
||||||
|
import mineplex.core.pet.PetType;
|
||||||
|
import mineplex.core.reward.RewardType;
|
||||||
|
import mineplex.core.treasure.animation.animations.OldChestAnimation;
|
||||||
|
import mineplex.core.treasure.reward.RewardRarity;
|
||||||
|
|
||||||
|
public class NormalTreasure extends Treasure
|
||||||
|
{
|
||||||
|
|
||||||
|
NormalTreasure(TreasureType treasureType)
|
||||||
|
{
|
||||||
|
super(treasureType);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void addCommon(RewardRarity rarity)
|
||||||
|
{
|
||||||
|
// Gadgets
|
||||||
|
addGadgetReward(getGadget(ItemBatGun.class), rarity, 10, 4, 10);
|
||||||
|
addGadgetReward(getGadget(ItemEtherealPearl.class), rarity, 10, 6, 15);
|
||||||
|
addGadgetReward(getGadget(ItemFirework.class), rarity, 10, 10, 25);
|
||||||
|
addGadgetReward(getGadget(ItemFleshHook.class), rarity, 10, 8, 20);
|
||||||
|
addGadgetReward(getGadget(ItemMelonLauncher.class), rarity, 10, 10, 25);
|
||||||
|
addGadgetReward(getGadget(ItemPaintballGun.class), rarity, 10, 20, 50);
|
||||||
|
addGadgetReward(getGadget(ItemTNT.class), rarity, 10, 4, 10);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void addUncommon(RewardRarity rarity)
|
||||||
|
{
|
||||||
|
//Gadgets
|
||||||
|
addGadgetReward(getGadget(ItemBatGun.class), rarity, 250, 20, 40);
|
||||||
|
addGadgetReward(getGadget(ItemEtherealPearl.class), rarity, 250, 30, 60);
|
||||||
|
addGadgetReward(getGadget(ItemFirework.class), rarity, 250, 25, 50);
|
||||||
|
addGadgetReward(getGadget(ItemFleshHook.class), rarity, 250, 40, 80);
|
||||||
|
addGadgetReward(getGadget(ItemMelonLauncher.class), rarity, 250, 25, 50);
|
||||||
|
addGadgetReward(getGadget(ItemPaintballGun.class), rarity, 250, 100, 200);
|
||||||
|
addGadgetReward(getGadget(ItemTNT.class), rarity, 250, 20, 40);
|
||||||
|
|
||||||
|
//Pets
|
||||||
|
addPetReward(PetType.CHICKEN, rarity, 143);
|
||||||
|
addPetReward(PetType.COW, rarity, 500);
|
||||||
|
addPetReward(PetType.MUSHROOM_COW, rarity, 200);
|
||||||
|
addPetReward(PetType.OCELOT, rarity, 167);
|
||||||
|
addPetReward(PetType.PIG, rarity, 200);
|
||||||
|
addPetReward(PetType.SHEEP, rarity, 333);
|
||||||
|
addPetReward(PetType.WOLF, rarity, 125);
|
||||||
|
|
||||||
|
//Music Discs
|
||||||
|
addMusicReward("Blocks", rarity, 25);
|
||||||
|
addMusicReward("Cat", rarity, 25);
|
||||||
|
addMusicReward("Chirp", rarity, 25);
|
||||||
|
addMusicReward("Far", rarity, 25);
|
||||||
|
addMusicReward("Mall", rarity, 25);
|
||||||
|
addMusicReward("Mellohi", rarity, 25);
|
||||||
|
addMusicReward("Stal", rarity, 25);
|
||||||
|
addMusicReward("Strad", rarity, 25);
|
||||||
|
addMusicReward("Wait", rarity, 25);
|
||||||
|
addMusicReward("Ward", rarity, 25);
|
||||||
|
|
||||||
|
// Balloons
|
||||||
|
addBalloonReward(BalloonType.BABY_COW, rarity, 10, 100);
|
||||||
|
addBalloonReward(BalloonType.BABY_PIG, rarity, 10, 100);
|
||||||
|
addBalloonReward(BalloonType.BABY_SHEEP, rarity, 15, 100);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void addRare(RewardRarity rarity)
|
||||||
|
{
|
||||||
|
//Morphs
|
||||||
|
addGadgetReward(getGadget(MorphVillager.class), rarity, 83);
|
||||||
|
addGadgetReward(getGadget(MorphCow.class), rarity, 167);
|
||||||
|
addGadgetReward(getGadget(MorphChicken.class), rarity, 50);
|
||||||
|
addGadgetReward(getGadget(MorphEnderman.class), rarity, 33);
|
||||||
|
|
||||||
|
//Mounts
|
||||||
|
addGadgetReward(getGadget(MountFrost.class), rarity, 50);
|
||||||
|
addGadgetReward(getGadget(MountSlime.class), rarity, 67);
|
||||||
|
addGadgetReward(getGadget(MountCart.class), rarity, 100);
|
||||||
|
addGadgetReward(getGadget(MountMule.class), rarity, 200);
|
||||||
|
|
||||||
|
//Outfit Rave
|
||||||
|
addGadgetReward(getGadget(OutfitRaveSuitHelmet.class), rarity, 30);
|
||||||
|
addGadgetReward(getGadget(OutfitRaveSuitChestplate.class), rarity, 30);
|
||||||
|
addGadgetReward(getGadget(OutfitRaveSuitLeggings.class), rarity, 30);
|
||||||
|
addGadgetReward(getGadget(OutfitRaveSuitBoots.class), rarity, 30);
|
||||||
|
//Outfit Space
|
||||||
|
addGadgetReward(getGadget(OutfitSpaceSuitHelmet.class), rarity, 50);
|
||||||
|
addGadgetReward(getGadget(OutfitSpaceSuitChestplate.class), rarity, 50);
|
||||||
|
addGadgetReward(getGadget(OutfitSpaceSuitLeggings.class), rarity, 50);
|
||||||
|
addGadgetReward(getGadget(OutfitSpaceSuitBoots.class), rarity, 50);
|
||||||
|
|
||||||
|
//Arrow Trails
|
||||||
|
addGadgetReward(getGadget(ArrowTrailConfetti.class), rarity, 27);
|
||||||
|
addGadgetReward(getGadget(ArrowTrailBlood.class), rarity, 50);
|
||||||
|
addGadgetReward(getGadget(ArrowTrailEmerald.class), rarity, 25);
|
||||||
|
addGadgetReward(getGadget(ArrowTrailMusic.class), rarity, 27);
|
||||||
|
addGadgetReward(getGadget(ArrowTrailStorm.class), rarity, 30);
|
||||||
|
addGadgetReward(getGadget(ArrowTrailShadow.class), rarity, 15);
|
||||||
|
|
||||||
|
//Double Jumps
|
||||||
|
addGadgetReward(getGadget(DoubleJumpFirecracker.class), rarity, 33);
|
||||||
|
addGadgetReward(getGadget(DoubleJumpEmerald.class), rarity, 25);
|
||||||
|
addGadgetReward(getGadget(DoubleJumpShadow.class), rarity, 15);
|
||||||
|
addGadgetReward(getGadget(DoubleJumpStorm.class), rarity, 30);
|
||||||
|
addGadgetReward(getGadget(DoubleJumpBlood.class), rarity, 50);
|
||||||
|
addGadgetReward(getGadget(DoubleJumpMusic.class), rarity, 20);
|
||||||
|
|
||||||
|
//Death Effects
|
||||||
|
addGadgetReward(getGadget(DeathPinataBurst.class), rarity, 27);
|
||||||
|
addGadgetReward(getGadget(DeathEmerald.class), rarity, 25);
|
||||||
|
addGadgetReward(getGadget(DeathShadow.class), rarity, 15);
|
||||||
|
addGadgetReward(getGadget(DeathStorm.class), rarity, 30);
|
||||||
|
addGadgetReward(getGadget(DeathBlood.class), rarity, 50);
|
||||||
|
addGadgetReward(getGadget(DeathMusic.class), rarity, 20);
|
||||||
|
|
||||||
|
//Particles
|
||||||
|
addGadgetReward(getGadget(ParticlePartyTime.class), rarity, 12);
|
||||||
|
|
||||||
|
//Titles
|
||||||
|
addTitleReward("shrug", rarity, 10, 500);
|
||||||
|
addTitleReward("tableflip", rarity, 10, 500);
|
||||||
|
addTitleReward("tablerespecter", rarity, 15, 500);
|
||||||
|
addTitleReward("tableflip-disgusted", rarity, 15, 500);
|
||||||
|
addTitleReward("tableflip-enraged", rarity, 15, 500);
|
||||||
|
addTitleReward("tableflip-riot", rarity, 10, 500);
|
||||||
|
addTitleReward("teddy-bear", rarity, 10, 500);
|
||||||
|
addTitleReward("disgust", rarity, 10, 500);
|
||||||
|
addTitleReward("old-man", rarity, 5, 500);
|
||||||
|
addTitleReward("jake", rarity, 5, 500);
|
||||||
|
addTitleReward("finn", rarity, 5, 500);
|
||||||
|
addTitleReward("finn-and-jake", rarity, 5, 500);
|
||||||
|
addTitleReward("boxer", rarity, 5, 500);
|
||||||
|
addTitleReward("zoidberg", rarity, 5, 500);
|
||||||
|
|
||||||
|
// Balloons
|
||||||
|
addBalloonReward(BalloonType.BABY_ZOMBIE, rarity, 25, 500);
|
||||||
|
addBalloonReward(BalloonType.BABY_MUSHROOM, rarity, 50, 500);
|
||||||
|
addBalloonReward(BalloonType.BABY_OCELOT, rarity, 50, 500);
|
||||||
|
addBalloonReward(BalloonType.BABY_WOLF, rarity, 75, 500);
|
||||||
|
addBalloonReward(BalloonType.BABY_VILLAGER, rarity, 25, 500);
|
||||||
|
addBalloonReward(BalloonType.BABY_SLIME, rarity, 25, 500);
|
||||||
|
addBalloonReward(BalloonType.BAT, rarity, 50, 500);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void addLegendary(RewardRarity rarity)
|
||||||
|
{
|
||||||
|
//Enchant set
|
||||||
|
addGadgetReward(getGadget(ArrowTrailEnchant.class), rarity, 10);
|
||||||
|
addGadgetReward(getGadget(DeathEnchant.class), rarity, 10);
|
||||||
|
addGadgetReward(getGadget(DoubleJumpEnchant.class), rarity, 10);
|
||||||
|
|
||||||
|
//Morphs
|
||||||
|
addGadgetReward(getGadget(MorphSlime.class), rarity, 10);
|
||||||
|
addGadgetReward(getGadget(MorphBat.class), rarity, 25);
|
||||||
|
addGadgetReward(getGadget(MorphBlock.class), rarity, 20);
|
||||||
|
|
||||||
|
//Mounts
|
||||||
|
addGadgetReward(getGadget(MountUndead.class), rarity, 33);
|
||||||
|
|
||||||
|
//Particle Trails
|
||||||
|
addGadgetReward(getGadget(ParticleWingsAngel.class), rarity, 15);
|
||||||
|
addGadgetReward(getGadget(ParticleBlood.class), rarity, 10);
|
||||||
|
addGadgetReward(getGadget(ParticleWingsDemons.class), rarity, 15);
|
||||||
|
addGadgetReward(getGadget(ParticleEnchant.class), rarity, 25);
|
||||||
|
addGadgetReward(getGadget(ParticleFairy.class), rarity, 4);
|
||||||
|
addGadgetReward(getGadget(ParticleFireRings.class), rarity, 17);
|
||||||
|
addGadgetReward(getGadget(ParticleEmerald.class), rarity, 8);
|
||||||
|
addGadgetReward(getGadget(ParticleHeart.class), rarity, 2);
|
||||||
|
addGadgetReward(getGadget(ParticleWingsInfernal.class), rarity, 4);
|
||||||
|
addGadgetReward(getGadget(ParticleMusic.class), rarity, 15);
|
||||||
|
addGadgetReward(getGadget(ParticleWingsPixie.class), rarity, 4);
|
||||||
|
addGadgetReward(getGadget(ParticleRain.class), rarity, 13);
|
||||||
|
addGadgetReward(getGadget(ParticleFoot.class), rarity, 33);
|
||||||
|
addGadgetReward(getGadget(ParticleYinYang.class), rarity, 20);
|
||||||
|
|
||||||
|
//Win Effects
|
||||||
|
addGadgetReward(getGadget(WinEffectBabyChicken.class), rarity, 10);
|
||||||
|
addGadgetReward(getGadget(WinEffectLavaTrap.class), rarity, 20);
|
||||||
|
addGadgetReward(getGadget(WinEffectLightningStrike.class), rarity, 20);
|
||||||
|
addGadgetReward(getGadget(WinEffectMrPunchMan.class), rarity, 33);
|
||||||
|
addGadgetReward(getGadget(WinEffectRiseOfTheElderGuardian.class), rarity, 4);
|
||||||
|
|
||||||
|
// Titles
|
||||||
|
addTitleReward("ayyye", rarity, 25);
|
||||||
|
addTitleReward("ameno", rarity, 15);
|
||||||
|
addTitleReward("magician", rarity, 25);
|
||||||
|
addTitleReward("fireball", rarity, 75);
|
||||||
|
addTitleReward("magic-missile", rarity, 75);
|
||||||
|
addTitleReward("pewpewpew", rarity, 75);
|
||||||
|
addTitleReward("stardust", rarity, 60);
|
||||||
|
addTitleReward("blow-a-kiss", rarity, 60);
|
||||||
|
addTitleReward("cool-guy", rarity, 60);
|
||||||
|
addTitleReward("deal-with-it", rarity, 60);
|
||||||
|
addTitleReward("party-time", rarity, 55);
|
||||||
|
addTitleReward("lalala", rarity, 30);
|
||||||
|
addTitleReward("gotta-go", rarity, 30);
|
||||||
|
addTitleReward("whaaat", rarity, 30);
|
||||||
|
|
||||||
|
// Balloons
|
||||||
|
addBalloonReward(BalloonType.SQUID, rarity, 10);
|
||||||
|
addBalloonReward(BalloonType.SILVERFISH, rarity, 30);
|
||||||
|
addBalloonReward(BalloonType.GUARDIAN, rarity, 30);
|
||||||
|
addBalloonReward(BalloonType.EMERALD_BLOCK, rarity, 15);
|
||||||
|
}
|
||||||
|
}
|
@ -1,80 +1,9 @@
|
|||||||
package mineplex.core.treasure.types;
|
package mineplex.core.treasure.types;
|
||||||
|
|
||||||
import mineplex.core.gadget.gadgets.arrowtrail.ArrowTrailBlood;
|
|
||||||
import mineplex.core.gadget.gadgets.arrowtrail.ArrowTrailConfetti;
|
|
||||||
import mineplex.core.gadget.gadgets.arrowtrail.ArrowTrailEmerald;
|
|
||||||
import mineplex.core.gadget.gadgets.arrowtrail.ArrowTrailEnchant;
|
|
||||||
import mineplex.core.gadget.gadgets.arrowtrail.ArrowTrailMusic;
|
|
||||||
import mineplex.core.gadget.gadgets.arrowtrail.ArrowTrailShadow;
|
|
||||||
import mineplex.core.gadget.gadgets.arrowtrail.ArrowTrailStorm;
|
|
||||||
import mineplex.core.gadget.gadgets.balloons.BalloonType;
|
|
||||||
import mineplex.core.gadget.gadgets.death.DeathBlood;
|
|
||||||
import mineplex.core.gadget.gadgets.death.DeathEmerald;
|
|
||||||
import mineplex.core.gadget.gadgets.death.DeathEnchant;
|
|
||||||
import mineplex.core.gadget.gadgets.death.DeathMusic;
|
|
||||||
import mineplex.core.gadget.gadgets.death.DeathPinataBurst;
|
|
||||||
import mineplex.core.gadget.gadgets.death.DeathShadow;
|
|
||||||
import mineplex.core.gadget.gadgets.death.DeathStorm;
|
|
||||||
import mineplex.core.gadget.gadgets.doublejump.DoubleJumpBlood;
|
|
||||||
import mineplex.core.gadget.gadgets.doublejump.DoubleJumpEmerald;
|
|
||||||
import mineplex.core.gadget.gadgets.doublejump.DoubleJumpEnchant;
|
|
||||||
import mineplex.core.gadget.gadgets.doublejump.DoubleJumpFirecracker;
|
|
||||||
import mineplex.core.gadget.gadgets.doublejump.DoubleJumpMusic;
|
|
||||||
import mineplex.core.gadget.gadgets.doublejump.DoubleJumpShadow;
|
|
||||||
import mineplex.core.gadget.gadgets.doublejump.DoubleJumpStorm;
|
|
||||||
import mineplex.core.gadget.gadgets.item.ItemBatGun;
|
|
||||||
import mineplex.core.gadget.gadgets.item.ItemEtherealPearl;
|
|
||||||
import mineplex.core.gadget.gadgets.item.ItemFirework;
|
|
||||||
import mineplex.core.gadget.gadgets.item.ItemFleshHook;
|
|
||||||
import mineplex.core.gadget.gadgets.item.ItemMelonLauncher;
|
|
||||||
import mineplex.core.gadget.gadgets.item.ItemPaintballGun;
|
|
||||||
import mineplex.core.gadget.gadgets.item.ItemTNT;
|
|
||||||
import mineplex.core.gadget.gadgets.morph.MorphBat;
|
|
||||||
import mineplex.core.gadget.gadgets.morph.MorphBlock;
|
|
||||||
import mineplex.core.gadget.gadgets.morph.MorphChicken;
|
|
||||||
import mineplex.core.gadget.gadgets.morph.MorphCow;
|
|
||||||
import mineplex.core.gadget.gadgets.morph.MorphEnderman;
|
|
||||||
import mineplex.core.gadget.gadgets.morph.MorphSlime;
|
|
||||||
import mineplex.core.gadget.gadgets.morph.MorphVillager;
|
|
||||||
import mineplex.core.gadget.gadgets.mount.types.MountCart;
|
|
||||||
import mineplex.core.gadget.gadgets.mount.types.MountFrost;
|
|
||||||
import mineplex.core.gadget.gadgets.mount.types.MountMule;
|
|
||||||
import mineplex.core.gadget.gadgets.mount.types.MountSlime;
|
|
||||||
import mineplex.core.gadget.gadgets.mount.types.MountUndead;
|
|
||||||
import mineplex.core.gadget.gadgets.outfit.ravesuit.OutfitRaveSuitBoots;
|
|
||||||
import mineplex.core.gadget.gadgets.outfit.ravesuit.OutfitRaveSuitChestplate;
|
|
||||||
import mineplex.core.gadget.gadgets.outfit.ravesuit.OutfitRaveSuitHelmet;
|
|
||||||
import mineplex.core.gadget.gadgets.outfit.ravesuit.OutfitRaveSuitLeggings;
|
|
||||||
import mineplex.core.gadget.gadgets.outfit.spacesuit.OutfitSpaceSuitBoots;
|
|
||||||
import mineplex.core.gadget.gadgets.outfit.spacesuit.OutfitSpaceSuitChestplate;
|
|
||||||
import mineplex.core.gadget.gadgets.outfit.spacesuit.OutfitSpaceSuitHelmet;
|
|
||||||
import mineplex.core.gadget.gadgets.outfit.spacesuit.OutfitSpaceSuitLeggings;
|
|
||||||
import mineplex.core.gadget.gadgets.particle.ParticleBlood;
|
|
||||||
import mineplex.core.gadget.gadgets.particle.ParticleEmerald;
|
|
||||||
import mineplex.core.gadget.gadgets.particle.ParticleEnchant;
|
|
||||||
import mineplex.core.gadget.gadgets.particle.ParticleFairy;
|
|
||||||
import mineplex.core.gadget.gadgets.particle.ParticleFireRings;
|
|
||||||
import mineplex.core.gadget.gadgets.particle.ParticleFoot;
|
|
||||||
import mineplex.core.gadget.gadgets.particle.ParticleHeart;
|
|
||||||
import mineplex.core.gadget.gadgets.particle.ParticleMusic;
|
|
||||||
import mineplex.core.gadget.gadgets.particle.ParticlePartyTime;
|
|
||||||
import mineplex.core.gadget.gadgets.particle.ParticleRain;
|
|
||||||
import mineplex.core.gadget.gadgets.particle.ParticleWingsAngel;
|
|
||||||
import mineplex.core.gadget.gadgets.particle.ParticleWingsDemons;
|
|
||||||
import mineplex.core.gadget.gadgets.particle.ParticleWingsInfernal;
|
|
||||||
import mineplex.core.gadget.gadgets.particle.ParticleWingsPixie;
|
|
||||||
import mineplex.core.gadget.gadgets.particle.ParticleYinYang;
|
|
||||||
import mineplex.core.gadget.gadgets.wineffect.WinEffectBabyChicken;
|
|
||||||
import mineplex.core.gadget.gadgets.wineffect.WinEffectLavaTrap;
|
|
||||||
import mineplex.core.gadget.gadgets.wineffect.WinEffectLightningStrike;
|
|
||||||
import mineplex.core.gadget.gadgets.wineffect.WinEffectMrPunchMan;
|
|
||||||
import mineplex.core.gadget.gadgets.wineffect.WinEffectRiseOfTheElderGuardian;
|
|
||||||
import mineplex.core.pet.PetType;
|
|
||||||
import mineplex.core.reward.RewardType;
|
import mineplex.core.reward.RewardType;
|
||||||
import mineplex.core.treasure.animation.animations.OldChestAnimation;
|
import mineplex.core.treasure.animation.animations.OldChestAnimation;
|
||||||
import mineplex.core.treasure.reward.RewardRarity;
|
|
||||||
|
|
||||||
public class OldTreasure extends Treasure
|
public class OldTreasure extends NormalTreasure
|
||||||
{
|
{
|
||||||
|
|
||||||
public OldTreasure()
|
public OldTreasure()
|
||||||
@ -86,200 +15,7 @@ public class OldTreasure extends Treasure
|
|||||||
setRewardsPerChest(4);
|
setRewardsPerChest(4);
|
||||||
allowDuplicates();
|
allowDuplicates();
|
||||||
setPurchasable(1000);
|
setPurchasable(1000);
|
||||||
purchaseAbleFromStore();
|
purchaseableFromStore();
|
||||||
enabledByDefault();
|
enabledByDefault();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
protected void addCommon(RewardRarity rarity)
|
|
||||||
{
|
|
||||||
// Gadgets
|
|
||||||
addGadgetReward(getGadget(ItemBatGun.class), rarity, 10, 4, 10);
|
|
||||||
addGadgetReward(getGadget(ItemEtherealPearl.class), rarity, 10, 6, 15);
|
|
||||||
addGadgetReward(getGadget(ItemFirework.class), rarity, 10, 10, 25);
|
|
||||||
addGadgetReward(getGadget(ItemFleshHook.class), rarity, 10, 8, 20);
|
|
||||||
addGadgetReward(getGadget(ItemMelonLauncher.class), rarity, 10, 10, 25);
|
|
||||||
addGadgetReward(getGadget(ItemPaintballGun.class), rarity, 10, 20, 50);
|
|
||||||
addGadgetReward(getGadget(ItemTNT.class), rarity, 10, 4, 10);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected void addUncommon(RewardRarity rarity)
|
|
||||||
{
|
|
||||||
//Gadgets
|
|
||||||
addGadgetReward(getGadget(ItemBatGun.class), rarity, 250, 20, 40);
|
|
||||||
addGadgetReward(getGadget(ItemEtherealPearl.class), rarity, 250, 30, 60);
|
|
||||||
addGadgetReward(getGadget(ItemFirework.class), rarity, 250, 25, 50);
|
|
||||||
addGadgetReward(getGadget(ItemFleshHook.class), rarity, 250, 40, 80);
|
|
||||||
addGadgetReward(getGadget(ItemMelonLauncher.class), rarity, 250, 25, 50);
|
|
||||||
addGadgetReward(getGadget(ItemPaintballGun.class), rarity, 250, 100, 200);
|
|
||||||
addGadgetReward(getGadget(ItemTNT.class), rarity, 250, 20, 40);
|
|
||||||
|
|
||||||
//Pets
|
|
||||||
addPetReward(PetType.CHICKEN, rarity, 143);
|
|
||||||
addPetReward(PetType.COW, rarity, 500);
|
|
||||||
addPetReward(PetType.MUSHROOM_COW, rarity, 200);
|
|
||||||
addPetReward(PetType.OCELOT, rarity, 167);
|
|
||||||
addPetReward(PetType.PIG, rarity, 200);
|
|
||||||
addPetReward(PetType.SHEEP, rarity, 333);
|
|
||||||
addPetReward(PetType.WOLF, rarity, 125);
|
|
||||||
|
|
||||||
//Music Discs
|
|
||||||
addMusicReward("Blocks", rarity, 25);
|
|
||||||
addMusicReward("Cat", rarity, 25);
|
|
||||||
addMusicReward("Chirp", rarity, 25);
|
|
||||||
addMusicReward("Far", rarity, 25);
|
|
||||||
addMusicReward("Mall", rarity, 25);
|
|
||||||
addMusicReward("Mellohi", rarity, 25);
|
|
||||||
addMusicReward("Stal", rarity, 25);
|
|
||||||
addMusicReward("Strad", rarity, 25);
|
|
||||||
addMusicReward("Wait", rarity, 25);
|
|
||||||
addMusicReward("Ward", rarity, 25);
|
|
||||||
|
|
||||||
// Balloons
|
|
||||||
addBalloonReward(BalloonType.BABY_COW, rarity, 10, 100);
|
|
||||||
addBalloonReward(BalloonType.BABY_PIG, rarity, 10, 100);
|
|
||||||
addBalloonReward(BalloonType.BABY_SHEEP, rarity, 15, 100);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected void addRare(RewardRarity rarity)
|
|
||||||
{
|
|
||||||
//Morphs
|
|
||||||
addGadgetReward(getGadget(MorphVillager.class), rarity, 83);
|
|
||||||
addGadgetReward(getGadget(MorphCow.class), rarity, 167);
|
|
||||||
addGadgetReward(getGadget(MorphChicken.class), rarity, 50);
|
|
||||||
addGadgetReward(getGadget(MorphEnderman.class), rarity, 33);
|
|
||||||
|
|
||||||
//Mounts
|
|
||||||
addGadgetReward(getGadget(MountFrost.class), rarity, 50);
|
|
||||||
addGadgetReward(getGadget(MountSlime.class), rarity, 67);
|
|
||||||
addGadgetReward(getGadget(MountCart.class), rarity, 100);
|
|
||||||
addGadgetReward(getGadget(MountMule.class), rarity, 200);
|
|
||||||
|
|
||||||
//Outfit Rave
|
|
||||||
addGadgetReward(getGadget(OutfitRaveSuitHelmet.class), rarity, 30);
|
|
||||||
addGadgetReward(getGadget(OutfitRaveSuitChestplate.class), rarity, 30);
|
|
||||||
addGadgetReward(getGadget(OutfitRaveSuitLeggings.class), rarity, 30);
|
|
||||||
addGadgetReward(getGadget(OutfitRaveSuitBoots.class), rarity, 30);
|
|
||||||
//Outfit Space
|
|
||||||
addGadgetReward(getGadget(OutfitSpaceSuitHelmet.class), rarity, 50);
|
|
||||||
addGadgetReward(getGadget(OutfitSpaceSuitChestplate.class), rarity, 50);
|
|
||||||
addGadgetReward(getGadget(OutfitSpaceSuitLeggings.class), rarity, 50);
|
|
||||||
addGadgetReward(getGadget(OutfitSpaceSuitBoots.class), rarity, 50);
|
|
||||||
|
|
||||||
//Arrow Trails
|
|
||||||
addGadgetReward(getGadget(ArrowTrailConfetti.class), rarity, 27);
|
|
||||||
addGadgetReward(getGadget(ArrowTrailBlood.class), rarity, 50);
|
|
||||||
addGadgetReward(getGadget(ArrowTrailEmerald.class), rarity, 25);
|
|
||||||
addGadgetReward(getGadget(ArrowTrailMusic.class), rarity, 27);
|
|
||||||
addGadgetReward(getGadget(ArrowTrailStorm.class), rarity, 30);
|
|
||||||
addGadgetReward(getGadget(ArrowTrailShadow.class), rarity, 15);
|
|
||||||
|
|
||||||
//Double Jumps
|
|
||||||
addGadgetReward(getGadget(DoubleJumpFirecracker.class), rarity, 33);
|
|
||||||
addGadgetReward(getGadget(DoubleJumpEmerald.class), rarity, 25);
|
|
||||||
addGadgetReward(getGadget(DoubleJumpShadow.class), rarity, 15);
|
|
||||||
addGadgetReward(getGadget(DoubleJumpStorm.class), rarity, 30);
|
|
||||||
addGadgetReward(getGadget(DoubleJumpBlood.class), rarity, 50);
|
|
||||||
addGadgetReward(getGadget(DoubleJumpMusic.class), rarity, 20);
|
|
||||||
|
|
||||||
//Death Effects
|
|
||||||
addGadgetReward(getGadget(DeathPinataBurst.class), rarity, 27);
|
|
||||||
addGadgetReward(getGadget(DeathEmerald.class), rarity, 25);
|
|
||||||
addGadgetReward(getGadget(DeathShadow.class), rarity, 15);
|
|
||||||
addGadgetReward(getGadget(DeathStorm.class), rarity, 30);
|
|
||||||
addGadgetReward(getGadget(DeathBlood.class), rarity, 50);
|
|
||||||
addGadgetReward(getGadget(DeathMusic.class), rarity, 20);
|
|
||||||
|
|
||||||
//Particles
|
|
||||||
addGadgetReward(getGadget(ParticlePartyTime.class), rarity, 12);
|
|
||||||
|
|
||||||
//Titles
|
|
||||||
addTitleReward("shrug", rarity, 10, 500);
|
|
||||||
addTitleReward("tableflip", rarity, 10, 500);
|
|
||||||
addTitleReward("tablerespecter", rarity, 15, 500);
|
|
||||||
addTitleReward("tableflip-disgusted", rarity, 15, 500);
|
|
||||||
addTitleReward("tableflip-enraged", rarity, 15, 500);
|
|
||||||
addTitleReward("tableflip-riot", rarity, 10, 500);
|
|
||||||
addTitleReward("teddy-bear", rarity, 10, 500);
|
|
||||||
addTitleReward("disgust", rarity, 10, 500);
|
|
||||||
addTitleReward("old-man", rarity, 5, 500);
|
|
||||||
addTitleReward("jake", rarity, 5, 500);
|
|
||||||
addTitleReward("finn", rarity, 5, 500);
|
|
||||||
addTitleReward("finn-and-jake", rarity, 5, 500);
|
|
||||||
addTitleReward("boxer", rarity, 5, 500);
|
|
||||||
addTitleReward("zoidberg", rarity, 5, 500);
|
|
||||||
|
|
||||||
// Balloons
|
|
||||||
addBalloonReward(BalloonType.BABY_ZOMBIE, rarity, 25, 500);
|
|
||||||
addBalloonReward(BalloonType.BABY_MUSHROOM, rarity, 50, 500);
|
|
||||||
addBalloonReward(BalloonType.BABY_OCELOT, rarity, 50, 500);
|
|
||||||
addBalloonReward(BalloonType.BABY_WOLF, rarity, 75, 500);
|
|
||||||
addBalloonReward(BalloonType.BABY_VILLAGER, rarity, 25, 500);
|
|
||||||
addBalloonReward(BalloonType.BABY_SLIME, rarity, 25, 500);
|
|
||||||
addBalloonReward(BalloonType.BAT, rarity, 50, 500);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected void addLegendary(RewardRarity rarity)
|
|
||||||
{
|
|
||||||
//Enchant set
|
|
||||||
addGadgetReward(getGadget(ArrowTrailEnchant.class), rarity, 10);
|
|
||||||
addGadgetReward(getGadget(DeathEnchant.class), rarity, 10);
|
|
||||||
addGadgetReward(getGadget(DoubleJumpEnchant.class), rarity, 10);
|
|
||||||
|
|
||||||
//Morphs
|
|
||||||
addGadgetReward(getGadget(MorphSlime.class), rarity, 10);
|
|
||||||
addGadgetReward(getGadget(MorphBat.class), rarity, 25);
|
|
||||||
addGadgetReward(getGadget(MorphBlock.class), rarity, 20);
|
|
||||||
|
|
||||||
//Mounts
|
|
||||||
addGadgetReward(getGadget(MountUndead.class), rarity, 33);
|
|
||||||
|
|
||||||
//Particle Trails
|
|
||||||
addGadgetReward(getGadget(ParticleWingsAngel.class), rarity, 15);
|
|
||||||
addGadgetReward(getGadget(ParticleBlood.class), rarity, 10);
|
|
||||||
addGadgetReward(getGadget(ParticleWingsDemons.class), rarity, 15);
|
|
||||||
addGadgetReward(getGadget(ParticleEnchant.class), rarity, 25);
|
|
||||||
addGadgetReward(getGadget(ParticleFairy.class), rarity, 4);
|
|
||||||
addGadgetReward(getGadget(ParticleFireRings.class), rarity, 17);
|
|
||||||
addGadgetReward(getGadget(ParticleEmerald.class), rarity, 8);
|
|
||||||
addGadgetReward(getGadget(ParticleHeart.class), rarity, 2);
|
|
||||||
addGadgetReward(getGadget(ParticleWingsInfernal.class), rarity, 4);
|
|
||||||
addGadgetReward(getGadget(ParticleMusic.class), rarity, 15);
|
|
||||||
addGadgetReward(getGadget(ParticleWingsPixie.class), rarity, 4);
|
|
||||||
addGadgetReward(getGadget(ParticleRain.class), rarity, 13);
|
|
||||||
addGadgetReward(getGadget(ParticleFoot.class), rarity, 33);
|
|
||||||
addGadgetReward(getGadget(ParticleYinYang.class), rarity, 20);
|
|
||||||
|
|
||||||
//Win Effects
|
|
||||||
addGadgetReward(getGadget(WinEffectBabyChicken.class), rarity, 10);
|
|
||||||
addGadgetReward(getGadget(WinEffectLavaTrap.class), rarity, 20);
|
|
||||||
addGadgetReward(getGadget(WinEffectLightningStrike.class), rarity, 20);
|
|
||||||
addGadgetReward(getGadget(WinEffectMrPunchMan.class), rarity, 33);
|
|
||||||
addGadgetReward(getGadget(WinEffectRiseOfTheElderGuardian.class), rarity, 4);
|
|
||||||
|
|
||||||
// Titles
|
|
||||||
addTitleReward("ayyye", rarity, 25);
|
|
||||||
addTitleReward("ameno", rarity, 15);
|
|
||||||
addTitleReward("magician", rarity, 25);
|
|
||||||
addTitleReward("fireball", rarity, 75);
|
|
||||||
addTitleReward("magic-missile", rarity, 75);
|
|
||||||
addTitleReward("pewpewpew", rarity, 75);
|
|
||||||
addTitleReward("stardust", rarity, 60);
|
|
||||||
addTitleReward("blow-a-kiss", rarity, 60);
|
|
||||||
addTitleReward("cool-guy", rarity, 60);
|
|
||||||
addTitleReward("deal-with-it", rarity, 60);
|
|
||||||
addTitleReward("party-time", rarity, 55);
|
|
||||||
addTitleReward("lalala", rarity, 30);
|
|
||||||
addTitleReward("gotta-go", rarity, 30);
|
|
||||||
addTitleReward("whaaat", rarity, 30);
|
|
||||||
|
|
||||||
// Balloons
|
|
||||||
addBalloonReward(BalloonType.SQUID, rarity, 10);
|
|
||||||
addBalloonReward(BalloonType.SILVERFISH, rarity, 30);
|
|
||||||
addBalloonReward(BalloonType.GUARDIAN, rarity, 30);
|
|
||||||
addBalloonReward(BalloonType.EMERALD_BLOCK, rarity, 15);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -13,6 +13,7 @@ import mineplex.core.Managers;
|
|||||||
import mineplex.core.common.util.C;
|
import mineplex.core.common.util.C;
|
||||||
import mineplex.core.gadget.GadgetManager;
|
import mineplex.core.gadget.GadgetManager;
|
||||||
import mineplex.core.gadget.gadgets.balloons.BalloonType;
|
import mineplex.core.gadget.gadgets.balloons.BalloonType;
|
||||||
|
import mineplex.core.gadget.gadgets.kitselector.SingleParticleKitSelector;
|
||||||
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;
|
||||||
@ -22,6 +23,7 @@ import mineplex.core.reward.RewardType;
|
|||||||
import mineplex.core.reward.rewards.GadgetReward;
|
import mineplex.core.reward.rewards.GadgetReward;
|
||||||
import mineplex.core.reward.rewards.InventoryReward;
|
import mineplex.core.reward.rewards.InventoryReward;
|
||||||
import mineplex.core.reward.rewards.PetReward;
|
import mineplex.core.reward.rewards.PetReward;
|
||||||
|
import mineplex.core.reward.rewards.RankReward;
|
||||||
import mineplex.core.reward.rewards.TitleReward;
|
import mineplex.core.reward.rewards.TitleReward;
|
||||||
import mineplex.core.titles.tracks.TrackManager;
|
import mineplex.core.titles.tracks.TrackManager;
|
||||||
import mineplex.core.treasure.TreasureLocation;
|
import mineplex.core.treasure.TreasureLocation;
|
||||||
@ -43,10 +45,12 @@ public class Treasure
|
|||||||
.build();
|
.build();
|
||||||
|
|
||||||
private static final TreasureRewardManager TREASURE_REWARD_MANAGER = Managers.require(TreasureRewardManager.class);
|
private static final TreasureRewardManager TREASURE_REWARD_MANAGER = Managers.require(TreasureRewardManager.class);
|
||||||
|
|
||||||
public static TreasureRewardManager getRewardManager()
|
public static TreasureRewardManager getRewardManager()
|
||||||
{
|
{
|
||||||
return TREASURE_REWARD_MANAGER;
|
return TREASURE_REWARD_MANAGER;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static final GadgetManager GADGET_MANAGER = Managers.require(GadgetManager.class);
|
private static final GadgetManager GADGET_MANAGER = Managers.require(GadgetManager.class);
|
||||||
private static final TrackManager TRACK_MANAGER = Managers.require(TrackManager.class);
|
private static final TrackManager TRACK_MANAGER = Managers.require(TrackManager.class);
|
||||||
|
|
||||||
@ -124,7 +128,7 @@ public class Treasure
|
|||||||
return _rewardsPerChest;
|
return _rewardsPerChest;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void purchaseAbleFromStore()
|
protected void purchaseableFromStore()
|
||||||
{
|
{
|
||||||
addPurchaseMethod(PURCHASABLE_FROM_STORE);
|
addPurchaseMethod(PURCHASABLE_FROM_STORE);
|
||||||
}
|
}
|
||||||
@ -277,6 +281,18 @@ public class Treasure
|
|||||||
return reward;
|
return reward;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected RankReward addRankReward(RewardRarity rarity, boolean canPassLegend, int weight)
|
||||||
|
{
|
||||||
|
RankReward reward = new RankReward(rarity, 0, canPassLegend);
|
||||||
|
addReward(reward, weight);
|
||||||
|
return reward;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected SingleParticleKitSelector getKitSelector(SingleParticleKitSelector.SingleParticleSelectors singleParticleSelectors)
|
||||||
|
{
|
||||||
|
return GADGET_MANAGER.getSingleParticleKitSelector(singleParticleSelectors);
|
||||||
|
}
|
||||||
|
|
||||||
private int getShards(RewardRarity rarity)
|
private int getShards(RewardRarity rarity)
|
||||||
{
|
{
|
||||||
return SHARD_WORTH.getOrDefault(rarity, 0);
|
return SHARD_WORTH.getOrDefault(rarity, 0);
|
||||||
|
@ -20,8 +20,27 @@ public enum TreasureType
|
|||||||
"the straps they appear to contain",
|
"the straps they appear to contain",
|
||||||
"many kinds of loot."
|
"many kinds of loot."
|
||||||
),
|
),
|
||||||
|
ANCIENT(
|
||||||
;
|
C.cGold + "Ancient Treasure",
|
||||||
|
"Ancient Chest",
|
||||||
|
"Ancient",
|
||||||
|
new ItemStack(Material.TRAPPED_CHEST),
|
||||||
|
"Some of our bravest adventurers",
|
||||||
|
"have discovered these chests within ",
|
||||||
|
"temples hidden in Minecrafts worlds."
|
||||||
|
),
|
||||||
|
MYTHICAL(
|
||||||
|
C.cRed + "Mythical Treasure",
|
||||||
|
"Mythical Chest",
|
||||||
|
"Mythical",
|
||||||
|
new ItemStack(Material.ENDER_CHEST),
|
||||||
|
"All our previous adventurers have",
|
||||||
|
"perished in search of these chests.",
|
||||||
|
"However, legends of their existence",
|
||||||
|
"convinced Sterling, Chiss and Defek7",
|
||||||
|
"to venture out and discover the",
|
||||||
|
"location of these chests on their own."
|
||||||
|
),;
|
||||||
|
|
||||||
private final String _name;
|
private final String _name;
|
||||||
private final String _itemName;
|
private final String _itemName;
|
||||||
|
@ -69,7 +69,7 @@ public class PurchaseTreasurePage extends ShopPageBase<TreasureManager, Treasure
|
|||||||
lore.add(C.cGray + (amount == 1 ? "Buy" : "Bulk buy") + " " + F.elem(amount) + " chest" + (amount == 1 ? "" : "s") + ".");
|
lore.add(C.cGray + (amount == 1 ? "Buy" : "Bulk buy") + " " + F.elem(amount) + " chest" + (amount == 1 ? "" : "s") + ".");
|
||||||
lore.add(C.cGray + "This will cost " + F.currency(GlobalCurrency.TREASURE_SHARD, _treasure.getPurchasePrice() * amount) + "!");
|
lore.add(C.cGray + "This will cost " + F.currency(GlobalCurrency.TREASURE_SHARD, _treasure.getPurchasePrice() * amount) + "!");
|
||||||
lore.add("");
|
lore.add("");
|
||||||
lore.add(C.cGreen + "Click to purchase the chests!");
|
lore.add(C.cGreen + "Click to purchase!");
|
||||||
|
|
||||||
meta.setDisplayName(_treasure.getTreasureType().getName());
|
meta.setDisplayName(_treasure.getTreasureType().getName());
|
||||||
meta.setLore(lore);
|
meta.setLore(lore);
|
||||||
|
@ -74,9 +74,13 @@ public class TreasurePage extends ShopPageBase<TreasureManager, TreasureShop>
|
|||||||
lore.add("");
|
lore.add("");
|
||||||
lore.add(C.cGreen + "Left-Click to open!");
|
lore.add(C.cGreen + "Left-Click to open!");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (treasure.isPurchasable())
|
if (treasure.isPurchasable())
|
||||||
{
|
{
|
||||||
|
if (!canOpen)
|
||||||
|
{
|
||||||
|
lore.add("");
|
||||||
|
}
|
||||||
|
|
||||||
lore.add(C.cGreen + "Right-Click to purchase!");
|
lore.add(C.cGreen + "Right-Click to purchase!");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
package mineplex.core.treasure.util;
|
package mineplex.core.treasure.util;
|
||||||
|
|
||||||
import net.minecraft.server.v1_8_R3.BlockPosition;
|
import net.minecraft.server.v1_8_R3.BlockPosition;
|
||||||
import net.minecraft.server.v1_8_R3.TileEntityChest;
|
import net.minecraft.server.v1_8_R3.TileEntity;
|
||||||
import net.minecraft.server.v1_8_R3.World;
|
import net.minecraft.server.v1_8_R3.World;
|
||||||
|
|
||||||
import org.bukkit.Location;
|
import org.bukkit.Location;
|
||||||
@ -17,9 +17,8 @@ public class TreasureUtil
|
|||||||
{
|
{
|
||||||
World world = ((CraftWorld) location.getWorld()).getHandle();
|
World world = ((CraftWorld) location.getWorld()).getHandle();
|
||||||
BlockPosition position = new BlockPosition(location.getX(), location.getY(), location.getZ());
|
BlockPosition position = new BlockPosition(location.getX(), location.getY(), location.getZ());
|
||||||
TileEntityChest tileChest = (TileEntityChest) world.getTileEntity(position);
|
TileEntity tileEntity = world.getTileEntity(position);
|
||||||
|
world.playBlockAction(position, tileEntity.w(), 1, open ? 1 : 0);
|
||||||
world.playBlockAction(position, tileChest.w(), 1, open ? 1 : 0);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static byte getChestFacing(float yaw)
|
public static byte getChestFacing(float yaw)
|
||||||
|
Loading…
Reference in New Issue
Block a user