Add all old chest types

This commit is contained in:
Sam 2017-10-13 04:34:52 +01:00
parent b0b581bb0b
commit 029b0606d0
23 changed files with 1068 additions and 142 deletions

View File

@ -54,7 +54,7 @@ public class AchievementManager extends MiniPlugin
_clientManager = clientManager;
_shop = new AchievementShop(this, _statsManager, clientManager, donationManager, "Achievement");
new LevelingManager(this);
//new LevelingManager(this);
generatePermissions();
}

View File

@ -183,7 +183,7 @@ public class MorphAnath extends MorphGadget
Block block = player.getLocation().getBlock();
while (!UtilBlock.solid(block))
while (!UtilBlock.solid(block) && block.getLocation().getBlockY() > 10)
{
block = block.getRelative(BlockFace.DOWN);
}

View File

@ -15,6 +15,7 @@ import mineplex.core.common.util.UtilEnt;
import mineplex.core.hologram.Hologram;
import mineplex.core.hologram.HologramManager;
import mineplex.core.itemstack.ItemStackFactory;
import mineplex.core.utils.UtilVariant;
import mineplex.serverdata.database.column.Column;
import mineplex.serverdata.database.column.ColumnByte;
import mineplex.serverdata.database.column.ColumnDouble;
@ -59,7 +60,18 @@ public class NPC
public LivingEntity spawnEntity()
{
_spawn.getChunk().load(true);
LivingEntity entity = (LivingEntity) _spawn.getWorld().spawnEntity(_spawn, _entityType);
LivingEntity entity;
//TODO remove this terrible hack
if (_name.contains("Halloween"))
{
entity = UtilVariant.spawnWitherSkeleton(_spawn);
}
else
{
entity = (LivingEntity) _spawn.getWorld().spawnEntity(_spawn, _entityType);
}
boolean nullName = _name.equals("NULL");
entity.setCanPickupItems(false);

View File

@ -472,13 +472,13 @@ public class NewNPCManager extends MiniPlugin
/**
* @param metadata The metadata you wish to find all the NPCs of.
* @return A list of {@link NPC} that are unloaded (have no entity attached to them) and that have the metadata
* specified.
* @return A list of {@link NPC} that are unloaded (have no entity attached to them) and that have the metadata which
* starts with that specified.
*/
private List<NPC> getUnloadedNPCs(String metadata)
{
return _npcs.stream()
.filter(npc -> npc.getMetadata().equals(metadata) && npc.getEntity() == null)
.filter(npc -> npc.getMetadata().startsWith(metadata) && npc.getEntity() == null)
.collect(Collectors.toList());
}

View File

@ -21,6 +21,4 @@ public class ChestReward extends InventoryReward
{
super(type.getName(), type.getItemName(), "Treasure Chest", min, max, type.getItemStack(), rarity, shardValue);
}
}

View File

@ -185,6 +185,7 @@ public class TreasureLocation implements Listener
if (_session.hasFailed())
{
getManager().getInventoryManager().addItemToInventory(null, player, treasure.getTreasureType().getItemName(), 1);
_session = null;
player.sendMessage(F.main(getManager().getName(), "Sorry, it looks like the rewards for the chest could not be generated."));
return;

View File

@ -24,8 +24,11 @@ import mineplex.core.recharge.Recharge;
import mineplex.core.treasure.reward.TreasureRewardManager;
import mineplex.core.treasure.types.AncientTreasure;
import mineplex.core.treasure.types.IlluminatedTreasure;
import mineplex.core.treasure.types.MOBATreasure;
import mineplex.core.treasure.types.MinestrikeTreasure;
import mineplex.core.treasure.types.MythicalTreasure;
import mineplex.core.treasure.types.OldTreasure;
import mineplex.core.treasure.types.OmegaTreasure;
import mineplex.core.treasure.types.Treasure;
import mineplex.core.treasure.types.TrickOrTreatTreasure;
@ -66,6 +69,9 @@ public class TreasureManager extends MiniPlugin
addTreasureType(new AncientTreasure());
addTreasureType(new MythicalTreasure());
addTreasureType(new IlluminatedTreasure());
addTreasureType(new OmegaTreasure());
addTreasureType(new MinestrikeTreasure());
addTreasureType(new MOBATreasure());
addTreasureType(new TrickOrTreatTreasure());
}

View File

@ -82,11 +82,6 @@ public class TreasureSession implements Listener
Player player = event.getPlayer();
Location location = event.getClickedBlock().getLocation();
if (!player.equals(getPlayer()))
{
return;
}
boolean found = false;
for (Location chestLocation : _treasureLocation.getChestLocations())
@ -107,7 +102,7 @@ public class TreasureSession implements Listener
event.setCancelled(true);
if (_openedChests.contains(location) || isDone())
if (!player.equals(event.getPlayer()) || _openedChests.contains(location) || isDone())
{
return;
}

View File

@ -0,0 +1,94 @@
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 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.disguise.disguises.DisguiseGuardian;
import mineplex.core.treasure.TreasureLocation;
import mineplex.core.treasure.animation.TreasureOpenAnimation;
import mineplex.core.treasure.types.Treasure;
public class MOBAChestAnimation extends TreasureOpenAnimation
{
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 MOBAChestAnimation(Treasure treasure, TreasureLocation treasureLocation)
{
super(treasure, treasureLocation);
}
@Override
protected void onStart()
{
changeFloor(Material.PRISMARINE, 0, Material.PRISMARINE, 1);
List<Location> chests = getTreasureLocation().getChestLocations();
_deltaTheta = Math.PI * 2 / (double) chests.size();
for (Location location : chests)
{
ArmorStand stand = spawnArmourStand(location);
disguise(new DisguiseGuardian(stand));
}
}
@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.DRIP_WATER, 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.NOTE_PLING, 1, 1.2F);
UtilParticle.PlayParticleToAll(ParticleType.LARGE_EXPLODE, location, 0, 0, 0, 0.1F, 1, ViewDist.NORMAL);
UtilParticle.PlayParticleToAll(ParticleType.PORTAL, 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()
{
}
}

View File

@ -0,0 +1,61 @@
package mineplex.core.treasure.animation.animations;
import org.bukkit.Effect;
import org.bukkit.Location;
import org.bukkit.Material;
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 MinestrikeChestAnimation extends TreasureOpenAnimation
{
public MinestrikeChestAnimation(Treasure treasure, TreasureLocation treasureLocation)
{
super(treasure, treasureLocation);
}
@Override
protected void onStart()
{
changeFloor(Material.SAND, 0, Material.SANDSTONE, 0);
}
@Override
public void onTick()
{
if (getTicks() % 3 == 0)
{
for (Location location : getTreasureLocation().getChestLocations())
{
UtilParticle.PlayParticleToAll(ParticleType.BLOCK_DUST.getParticle(Material.OBSIDIAN, 0), location.clone().add(0, 0.4, 0), 0.25F, 0.25F, 0.25F, 0, 3, ViewDist.NORMAL);
}
}
if (getTicks() > 50)
{
setRunning(false);
}
}
@Override
protected void onFinish()
{
for (Location location : getTreasureLocation().getChestLocations())
{
location = location.clone();
location.setYaw(UtilAlg.GetYaw(UtilAlg.getTrajectory(location, getTreasureLocation().getChest())));
location.getWorld().playEffect(location, Effect.STEP_SOUND, Material.CHEST);
createChestAt(location, Material.CHEST);
location.add(0, 1, 0);
UtilParticle.PlayParticleToAll(ParticleType.LARGE_EXPLODE, location, 0, 0, 0, 0.1F, 1, ViewDist.NORMAL);
}
}
}

View File

@ -0,0 +1,102 @@
package mineplex.core.treasure.animation.animations;
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.skin.SkinData;
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 OmegaChestAnimation extends TreasureOpenAnimation
{
private static final ItemStack HELMET = SkinData.OMEGA_CHEST.getSkull();
private static final double SHAKE_MAGNITUDE = Math.PI / 35D;
private int _index;
public OmegaChestAnimation(Treasure treasure, TreasureLocation treasureLocation)
{
super(treasure, treasureLocation);
}
@Override
protected void onStart()
{
changeFloor(Material.WOOL, 15, Material.WOOL, 7);
for (Location location : getTreasureLocation().getChestLocations())
{
ArmorStand stand = spawnArmourStand(location.clone().subtract(0, 2.5, 0));
stand.setHelmet(HELMET);
}
}
@Override
public void onTick()
{
if (getTicks() % 10 == 0 && _index != _stands.size())
{
_index++;
}
int chestY = getTreasureLocation().getChest().getBlockY();
boolean moved = false;
for (int i = 0; i < _index; i++)
{
ArmorStand stand = _stands.get(i);
Location location = stand.getLocation();
if (location.getY() > chestY - 1)
{
continue;
}
else if (Math.random() < 0.1)
{
stand.getWorld().playSound(location, Sound.ZOMBIE_UNFECT, 1, 0.7F);
}
moved = true;
location.add(0, 0.05, 0);
stand.teleport(location);
UtilParticle.PlayParticleToAll(ParticleType.BLOCK_DUST.getParticle(Material.OBSIDIAN, 0), stand.getLocation().add(0, 1.5, 0), 0.25F, 0.25F, 0.25F, 0, 3, ViewDist.NORMAL);
if (location.getY() > chestY - 1)
{
resetArmourStand(stand);
}
else
{
shakeArmourStand(stand, SHAKE_MAGNITUDE);
}
}
if (!moved)
{
for (ArmorStand stand : _stands)
{
Location location = stand.getLocation().add(0, 1, 0);
UtilParticle.PlayParticleToAll(ParticleType.WITCH_MAGIC, location, 0.5F, 0.5F, 0.5F, 0.5F, 20, ViewDist.NORMAL);
createChestAt(location, Material.ENDER_CHEST);
stand.remove();
}
setRunning(false);
}
}
@Override
protected void onFinish()
{
}
}

View File

@ -0,0 +1,125 @@
package mineplex.core.treasure.types;
import mineplex.core.gadget.gadgets.gamemodifiers.moba.shopmorph.ShopMorphType;
import mineplex.core.gadget.gadgets.gamemodifiers.moba.skins.HeroSkinGadget;
import mineplex.core.gadget.gadgets.morph.moba.MorphAnath;
import mineplex.core.gadget.gadgets.morph.moba.MorphBardolf;
import mineplex.core.gadget.gadgets.morph.moba.MorphBiff;
import mineplex.core.gadget.gadgets.morph.moba.MorphDana;
import mineplex.core.gadget.gadgets.morph.moba.MorphDevon;
import mineplex.core.gadget.gadgets.morph.moba.MorphHattori;
import mineplex.core.gadget.gadgets.morph.moba.MorphIvy;
import mineplex.core.gadget.gadgets.morph.moba.MorphLarissa;
import mineplex.core.gadget.gadgets.morph.moba.MorphRowena;
import mineplex.core.reward.RewardType;
import mineplex.core.reward.rewards.GadgetReward;
import mineplex.core.treasure.animation.animations.MOBAChestAnimation;
import mineplex.core.treasure.animation.animations.TrickOrTreatChestAnimation;
import mineplex.core.treasure.reward.RewardRarity;
public class MOBATreasure extends Treasure
{
public MOBATreasure()
{
super(TreasureType.MOBA);
setAnimation(treasureLocation -> new MOBAChestAnimation(this, treasureLocation));
setRewards(RewardType.MOBA);
setRewardsPerChest(4);
setPurchasable(20000);
purchasableFromStore();
enabledByDefault();
allowDuplicates();
}
@Override
protected void addUncommon(RewardRarity rarity)
{
for (ShopMorphType shopMorphType : ShopMorphType.values())
{
if (shopMorphType.getRarity() == rarity)
{
addMOBAShopSkin(shopMorphType, rarity, 1);
}
}
addAllMOBASkins(rarity);
}
@Override
protected void addRare(RewardRarity rarity)
{
for (ShopMorphType shopMorphType : ShopMorphType.values())
{
if (shopMorphType.getRarity() == rarity)
{
addMOBAShopSkin(shopMorphType, rarity, 1);
}
}
addAllMOBASkins(rarity);
}
@Override
protected void addLegendary(RewardRarity rarity)
{
addGadgetReward(getGadget(MorphHattori.class), rarity, 1);
addGadgetReward(getGadget(MorphDevon.class), rarity, 1);
addGadgetReward(getGadget(MorphAnath.class), rarity, 1);
addGadgetReward(getGadget(MorphDana.class), rarity, 1);
addGadgetReward(getGadget(MorphBardolf.class), rarity, 1);
addGadgetReward(getGadget(MorphRowena.class), rarity, 1);
addGadgetReward(getGadget(MorphLarissa.class), rarity, 1);
addGadgetReward(getGadget(MorphBiff.class), rarity, 1);
addGadgetReward(getGadget(MorphIvy.class), rarity, 1);
addAllMOBASkins(rarity);
}
@Override
protected void addMythical(RewardRarity rarity)
{
}
private void addAllMOBASkins(RewardRarity rarity)
{
HeroSkinGadget.getSkins().forEach((name, dataList) ->
{
if (name.equals("Bardolf-Werewolf"))
{
return;
}
dataList.forEach(data ->
{
if (data.getRarity() != rarity)
{
return;
}
addMOBASkin(data.getGadget(), rarity, 1);
});
});
}
public GadgetReward addMOBASkin(HeroSkinGadget gadget, RewardRarity rarity, int weight)
{
return addMOBASkin(gadget, rarity, weight, getShards(rarity));
}
public GadgetReward addMOBASkin(HeroSkinGadget gadget, RewardRarity rarity, int weight, int shards)
{
return addGadgetReward(gadget, rarity, weight, shards);
}
public GadgetReward addMOBAShopSkin(ShopMorphType morphType, RewardRarity rarity, int weight)
{
return addMOBAShopSkin(morphType, rarity, weight, getShards(rarity));
}
public GadgetReward addMOBAShopSkin(ShopMorphType morphType, RewardRarity rarity, int weight, int shards)
{
return addGadgetReward(GADGET_MANAGER.getGameCosmeticManager().getGadgetFrom(morphType.getName()), rarity, weight, shards);
}
}

View File

@ -0,0 +1,66 @@
package mineplex.core.treasure.types;
import mineplex.core.gadget.gadgets.gamemodifiers.minestrike.MineStrikeSkin;
import mineplex.core.reward.RewardType;
import mineplex.core.reward.rewards.GadgetReward;
import mineplex.core.treasure.animation.animations.MinestrikeChestAnimation;
import mineplex.core.treasure.reward.RewardRarity;
public class MinestrikeTreasure extends Treasure
{
public MinestrikeTreasure()
{
super(TreasureType.MINESTRIKE);
setAnimation(treasureLocation -> new MinestrikeChestAnimation(this, treasureLocation));
setRewards(RewardType.MINESTRIKE_CHEST);
setRewardsPerChest(2);
setPurchasable(10000);
purchasableFromStore();
enabledByDefault();
allowDuplicates();
}
@Override
protected void addRare(RewardRarity rarity)
{
addMineStrikeSkinReward(MineStrikeSkin.SSG_08_Blood_in_the_Water, rarity, 150, 1000);
addMineStrikeSkinReward(MineStrikeSkin.Galil_AR_Eco, rarity, 150, 1000);
addMineStrikeSkinReward(MineStrikeSkin.Nova_Koi, rarity, 100, 1000);
addMineStrikeSkinReward(MineStrikeSkin.Knife_M9_Bayonette_Fade, rarity, 30, 2500);
addMineStrikeSkinReward(MineStrikeSkin.PP_Bizon_Streak, rarity, 150, 1000);
addMineStrikeSkinReward(MineStrikeSkin.CZ75_Auto_Tigris, rarity, 100, 1000);
addMineStrikeSkinReward(MineStrikeSkin.XM1014_Tranquility, rarity, 100, 1000);
addMineStrikeSkinReward(MineStrikeSkin.Desert_Eagle_Golden_Gun, rarity, 30, 2500);
addMineStrikeSkinReward(MineStrikeSkin.P90_Asiimov, rarity, 100, 1000);
addMineStrikeSkinReward(MineStrikeSkin.SG553_Pulse, rarity, 100, 1000);
}
@Override
protected void addLegendary(RewardRarity rarity)
{
addMineStrikeSkinReward(MineStrikeSkin.Desert_Eagle_Blaze, rarity, 100, 5000);
addMineStrikeSkinReward(MineStrikeSkin.Glock_18_Fade, rarity, 100, 5000);
addMineStrikeSkinReward(MineStrikeSkin.P250_Muertos, rarity, 100, 5000);
addMineStrikeSkinReward(MineStrikeSkin.AK_47_Vulcan, rarity, 100, 5000);
addMineStrikeSkinReward(MineStrikeSkin.Knife_Counter_Terrorist_Sword, rarity, 50, 6500);
addMineStrikeSkinReward(MineStrikeSkin.Knife_Terrorist_Sword, rarity, 50, 6500);
addMineStrikeSkinReward(MineStrikeSkin.Knife_M9_Bayonette_Glass, rarity, 50, 6500);
addMineStrikeSkinReward(MineStrikeSkin.AK_47_Guardian, rarity, 10, 7500);
addMineStrikeSkinReward(MineStrikeSkin.AWP_Asiimov, rarity, 100, 5000);
addMineStrikeSkinReward(MineStrikeSkin.FAMAS_Pulse, rarity, 100, 5000);
addMineStrikeSkinReward(MineStrikeSkin.XM1014_Pig_Gun, rarity, 10, 7500);
addMineStrikeSkinReward(MineStrikeSkin.M4A4_Enderman, rarity, 10, 7500);
}
@Override
protected void addMythical(RewardRarity rarity)
{
}
private GadgetReward addMineStrikeSkinReward(MineStrikeSkin skin, RewardRarity rarity, int weight, int shards)
{
return addGadgetReward(GADGET_MANAGER.getGameCosmeticManager().getGadgetFrom(skin.getSkinName()), rarity, weight, shards);
}
}

View File

@ -0,0 +1,399 @@
package mineplex.core.treasure.types;
import mineplex.core.gadget.gadgets.arrowtrail.ArrowTrailBlood;
import mineplex.core.gadget.gadgets.arrowtrail.ArrowTrailCandyCane;
import mineplex.core.gadget.gadgets.arrowtrail.ArrowTrailConfetti;
import mineplex.core.gadget.gadgets.arrowtrail.ArrowTrailCupid;
import mineplex.core.gadget.gadgets.arrowtrail.ArrowTrailEmerald;
import mineplex.core.gadget.gadgets.arrowtrail.ArrowTrailEnchant;
import mineplex.core.gadget.gadgets.arrowtrail.ArrowTrailFreedom;
import mineplex.core.gadget.gadgets.arrowtrail.ArrowTrailFrostLord;
import mineplex.core.gadget.gadgets.arrowtrail.ArrowTrailHalloween;
import mineplex.core.gadget.gadgets.arrowtrail.ArrowTrailMusic;
import mineplex.core.gadget.gadgets.arrowtrail.ArrowTrailRedWhite;
import mineplex.core.gadget.gadgets.arrowtrail.ArrowTrailShadow;
import mineplex.core.gadget.gadgets.arrowtrail.ArrowTrailSpring;
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.DeathCandyCane;
import mineplex.core.gadget.gadgets.death.DeathCupidsBrokenHeart;
import mineplex.core.gadget.gadgets.death.DeathEmerald;
import mineplex.core.gadget.gadgets.death.DeathEnchant;
import mineplex.core.gadget.gadgets.death.DeathFreedom;
import mineplex.core.gadget.gadgets.death.DeathFrostLord;
import mineplex.core.gadget.gadgets.death.DeathMapleLeaf;
import mineplex.core.gadget.gadgets.death.DeathMusic;
import mineplex.core.gadget.gadgets.death.DeathPinataBurst;
import mineplex.core.gadget.gadgets.death.DeathPresentDanger;
import mineplex.core.gadget.gadgets.death.DeathShadow;
import mineplex.core.gadget.gadgets.death.DeathSpring;
import mineplex.core.gadget.gadgets.death.DeathStorm;
import mineplex.core.gadget.gadgets.doublejump.DoubleJumpBlood;
import mineplex.core.gadget.gadgets.doublejump.DoubleJumpCandyCane;
import mineplex.core.gadget.gadgets.doublejump.DoubleJumpCupidsWings;
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.DoubleJumpFreedom;
import mineplex.core.gadget.gadgets.doublejump.DoubleJumpFrostLord;
import mineplex.core.gadget.gadgets.doublejump.DoubleJumpHalloween;
import mineplex.core.gadget.gadgets.doublejump.DoubleJumpMaple;
import mineplex.core.gadget.gadgets.doublejump.DoubleJumpMusic;
import mineplex.core.gadget.gadgets.doublejump.DoubleJumpShadow;
import mineplex.core.gadget.gadgets.doublejump.DoubleJumpSpring;
import mineplex.core.gadget.gadgets.doublejump.DoubleJumpStorm;
import mineplex.core.gadget.gadgets.hat.HatType;
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.SingleParticleSelectors;
import mineplex.core.gadget.gadgets.morph.MorphAwkwardRabbit;
import mineplex.core.gadget.gadgets.morph.MorphBat;
import mineplex.core.gadget.gadgets.morph.MorphBlock;
import mineplex.core.gadget.gadgets.morph.MorphBunny;
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.MorphGrimReaper;
import mineplex.core.gadget.gadgets.morph.MorphLoveDoctor;
import mineplex.core.gadget.gadgets.morph.MorphPumpkinKing;
import mineplex.core.gadget.gadgets.morph.MorphSlime;
import mineplex.core.gadget.gadgets.morph.MorphSnowman;
import mineplex.core.gadget.gadgets.morph.MorphUncleSam;
import mineplex.core.gadget.gadgets.morph.MorphVillager;
import mineplex.core.gadget.gadgets.mount.types.MountBabyReindeer;
import mineplex.core.gadget.gadgets.mount.types.MountCake;
import mineplex.core.gadget.gadgets.mount.types.MountCart;
import mineplex.core.gadget.gadgets.mount.types.MountChicken;
import mineplex.core.gadget.gadgets.mount.types.MountFreedomHorse;
import mineplex.core.gadget.gadgets.mount.types.MountFrost;
import mineplex.core.gadget.gadgets.mount.types.MountLoveTrain;
import mineplex.core.gadget.gadgets.mount.types.MountMule;
import mineplex.core.gadget.gadgets.mount.types.MountNightmareSteed;
import mineplex.core.gadget.gadgets.mount.types.MountSlime;
import mineplex.core.gadget.gadgets.mount.types.MountSpider;
import mineplex.core.gadget.gadgets.mount.types.MountStPatricksHorse;
import mineplex.core.gadget.gadgets.mount.types.MountUndead;
import mineplex.core.gadget.gadgets.mount.types.MountValentinesSheep;
import mineplex.core.gadget.gadgets.mount.types.MountZombie;
import mineplex.core.gadget.gadgets.outfit.freezesuit.OutfitFreezeSuitBoots;
import mineplex.core.gadget.gadgets.outfit.freezesuit.OutfitFreezeSuitChestplate;
import mineplex.core.gadget.gadgets.outfit.freezesuit.OutfitFreezeSuitHelmet;
import mineplex.core.gadget.gadgets.outfit.freezesuit.OutfitFreezeSuitLeggings;
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.outfit.stpatricks.OutfitStPatricksBoots;
import mineplex.core.gadget.gadgets.outfit.stpatricks.OutfitStPatricksChestplate;
import mineplex.core.gadget.gadgets.outfit.stpatricks.OutfitStPatricksHat;
import mineplex.core.gadget.gadgets.outfit.stpatricks.OutfitStPatricksLeggings;
import mineplex.core.gadget.gadgets.particle.ParticleBlood;
import mineplex.core.gadget.gadgets.particle.ParticleCandyCane;
import mineplex.core.gadget.gadgets.particle.ParticleChristmasTree;
import mineplex.core.gadget.gadgets.particle.ParticleCoalFumes;
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.ParticleFrostLord;
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.ParticleWingsLove;
import mineplex.core.gadget.gadgets.particle.ParticleWingsPixie;
import mineplex.core.gadget.gadgets.particle.ParticleYinYang;
import mineplex.core.gadget.gadgets.particle.freedom.ParticleAuraNiceness;
import mineplex.core.gadget.gadgets.particle.freedom.ParticleCanadian;
import mineplex.core.gadget.gadgets.particle.freedom.ParticleFreedom;
import mineplex.core.gadget.gadgets.particle.freedom.ParticleFreedomFireworks;
import mineplex.core.gadget.gadgets.particle.freedom.ParticleStarSpangled;
import mineplex.core.gadget.gadgets.particle.spring.ParticleSpringHalo;
import mineplex.core.gadget.gadgets.taunts.BlowAKissTaunt;
import mineplex.core.gadget.gadgets.taunts.RainbowTaunt;
import mineplex.core.gadget.gadgets.wineffect.WinEffectBabyChicken;
import mineplex.core.gadget.gadgets.wineffect.WinEffectFlames;
import mineplex.core.gadget.gadgets.wineffect.WinEffectHalloween;
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.gadget.gadgets.wineffect.WinEffectSnowTrails;
import mineplex.core.pet.PetType;
import mineplex.core.reward.RewardType;
import mineplex.core.treasure.animation.animations.OmegaChestAnimation;
import mineplex.core.treasure.reward.RewardRarity;
public class OmegaTreasure extends Treasure
{
public OmegaTreasure()
{
super(TreasureType.OMEGA);
setAnimation(treasureLocation -> new OmegaChestAnimation(this, treasureLocation));
setRewards(RewardType.OMEGA_CHEST);
setRewardsPerChest(1);
enabledByDefault();
}
@Override
protected void addUncommon(RewardRarity rarity)
{
addGadgetReward(getGadget(ArrowTrailRedWhite.class), rarity, 2);
addGadgetReward(getGadget(ArrowTrailFreedom.class), rarity, 2);
addMusicReward("Blocks Disc", rarity, 25);
addMusicReward("Cat Disc", rarity, 25);
addMusicReward("Chirp Disc", rarity, 25);
addMusicReward("Far Disc", rarity, 25);
addMusicReward("Mall Disc", rarity, 25);
addMusicReward("Mellohi Disc", rarity, 25);
addMusicReward("Stal Disc", rarity, 25);
addMusicReward("Strad Disc", rarity, 25);
addMusicReward("Wait Disc", rarity, 25);
addMusicReward("Ward Disc", rarity, 25);
addGadgetReward(getGadget(ArrowTrailHalloween.class), rarity, 50);
addHatReward(HatType.PUMPKIN, rarity, 75);
addHatReward(HatType.PRESENT, rarity, 5);
addHatReward(HatType.SNOWMAN, rarity, 5);
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)
{
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);
addGadgetReward(getGadget(DoubleJumpFreedom.class), rarity, 5);
addGadgetReward(getGadget(DoubleJumpBlood.class), rarity, 50);
addGadgetReward(getGadget(DoubleJumpFirecracker.class), rarity, 33);
addGadgetReward(getGadget(DoubleJumpEmerald.class), rarity, 25);
addGadgetReward(getGadget(DoubleJumpMusic.class), rarity, 20);
addGadgetReward(getGadget(DoubleJumpShadow.class), rarity, 15);
addGadgetReward(getGadget(DoubleJumpStorm.class), rarity, 30);
addGadgetReward(getGadget(DoubleJumpCandyCane.class), rarity, 20);
addGadgetReward(getGadget(DoubleJumpHalloween.class), rarity, 50);
addGadgetReward(getGadget(DoubleJumpSpring.class), rarity, 40);
addGadgetReward(getGadget(DoubleJumpFreedom.class), rarity, 50);
addGadgetReward(getGadget(DoubleJumpMaple.class), rarity, 50);
addGadgetReward(getGadget(DeathFreedom.class), rarity, 15);
addGadgetReward(getGadget(DeathStorm.class), rarity, 30);
addGadgetReward(getGadget(DeathBlood.class), rarity, 50);
addGadgetReward(getGadget(DeathEmerald.class), rarity, 25);
addGadgetReward(getGadget(DeathMusic.class), rarity, 20);
addGadgetReward(getGadget(DeathPinataBurst.class), rarity, 27);
addGadgetReward(getGadget(DeathShadow.class), rarity, 15);
addGadgetReward(getGadget(DeathCandyCane.class), rarity, 25);
addGadgetReward(getGadget(DeathSpring.class), rarity, 60);
addGadgetReward(getGadget(DeathMapleLeaf.class), rarity, 10);
addGadgetReward(getGadget(ArrowTrailFreedom.class), rarity, 10);
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);
addGadgetReward(getGadget(ArrowTrailCandyCane.class), rarity, 10);
addGadgetReward(getGadget(ArrowTrailSpring.class), rarity, 60);
addHatReward(HatType.UNCLE_SAM, rarity, 25);
addHatReward(HatType.COMPANION_BLOCK, rarity, 15);
addHatReward(HatType.LOVESTRUCK, rarity, 20);
addHatReward(HatType.SECRET_PACKAGE, rarity, 25);
addHatReward(HatType.TEDDY_BEAR, rarity, 25);
addHatReward(HatType.SANTA, rarity, 25);
addHatReward(HatType.RUDOLPH, rarity, 25);
addHatReward(HatType.COAL, rarity, 25);
addHatReward(HatType.AMERICA, rarity, 50);
addHatReward(HatType.CANADA, rarity, 50);
addGadgetReward(getGadget(MorphChicken.class), rarity, 50);
addGadgetReward(getGadget(MorphCow.class), rarity, 167);
addGadgetReward(getGadget(MorphEnderman.class), rarity, 33);
addGadgetReward(getGadget(MorphVillager.class), rarity, 83);
addGadgetReward(getGadget(WinEffectFlames.class), rarity, 100);
addGadgetReward(getGadget(WinEffectSnowTrails.class), rarity, 100);
addGadgetReward(getGadget(MountFrost.class), rarity, 50);
addGadgetReward(getGadget(MountCart.class), rarity, 100);
addGadgetReward(getGadget(MountMule.class), rarity, 200);
addGadgetReward(getGadget(MountSlime.class), rarity, 67);
addGadgetReward(getGadget(MountLoveTrain.class), rarity, 20);
addGadgetReward(getGadget(OutfitRaveSuitBoots.class), rarity, 30);
addGadgetReward(getGadget(OutfitRaveSuitChestplate.class), rarity, 30);
addGadgetReward(getGadget(OutfitRaveSuitLeggings.class), rarity, 30);
addGadgetReward(getGadget(OutfitRaveSuitHelmet.class), rarity, 30);
addGadgetReward(getGadget(OutfitSpaceSuitBoots.class), rarity, 50);
addGadgetReward(getGadget(OutfitSpaceSuitChestplate.class), rarity, 50);
addGadgetReward(getGadget(OutfitSpaceSuitLeggings.class), rarity, 50);
addGadgetReward(getGadget(OutfitSpaceSuitHelmet.class), rarity, 50);
addGadgetReward(getGadget(OutfitStPatricksChestplate.class), rarity, 50);
addGadgetReward(getGadget(OutfitStPatricksLeggings.class), rarity, 50);
addGadgetReward(getGadget(OutfitStPatricksBoots.class), rarity, 50);
addGadgetReward(getGadget(OutfitFreezeSuitChestplate.class), rarity, 50);
addGadgetReward(getGadget(OutfitFreezeSuitLeggings.class), rarity, 50);
addGadgetReward(getGadget(OutfitFreezeSuitBoots.class), rarity, 50);
addGadgetReward(getGadget(ParticleCandyCane.class), rarity, 20);
addGadgetReward(getGadget(ParticleChristmasTree.class), rarity, 40);
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);
addGadgetReward(getGadget(HaloKitSelector.class), rarity, 100);
addGadgetReward(getGadget(RainbowDanceKitSelector.class), rarity, 100);
addGadgetReward(getGadget(ShimmeringRingKitSelector.class), rarity, 100);
addGadgetReward(getKitSelector(SingleParticleSelectors.FLAMES_OF_FURY), rarity, 100);
}
@Override
protected void addLegendary(RewardRarity rarity)
{
addTitleReward("ayyye", rarity, 25, 500);
addTitleReward("ameno", rarity, 15, 5000);
addTitleReward("magician", rarity, 25, 5000);
addTitleReward("fireball", rarity, 75, 5000);
addTitleReward("magic-missile", rarity, 75, 5000);
addTitleReward("pewpewpew", rarity, 75, 5000);
addTitleReward("stardust", rarity, 60, 5000);
addTitleReward("blow-a-kiss", rarity, 60, 5000);
addTitleReward("cool-guy", rarity, 60, 5000);
addTitleReward("deal-with-it", rarity, 60, 5000);
addTitleReward("party-time", rarity, 55, 5000);
addTitleReward("lalala", rarity, 30, 5000);
addTitleReward("gotta-go", rarity, 30, 5000);
addTitleReward("whaaat", rarity, 30, 5000);
addPetReward(PetType.VILLAGER, rarity, 1);
addPetReward(PetType.ZOMBIE, rarity, 10);
addPetReward(PetType.PIG_ZOMBIE, rarity, 1);
addPetReward(PetType.BLAZE, rarity, 2);
addPetReward(PetType.RABBIT, rarity, 10);
addPetReward(PetType.KILLER_BUNNY, rarity, 3);
addPetReward(PetType.CUPID_PET, rarity, 40);
addPetReward(PetType.LEPRECHAUN, rarity, 8);
addGadgetReward(getGadget(MorphBunny.class), rarity, 1);
addGadgetReward(getGadget(MorphUncleSam.class), rarity, 5);
addGadgetReward(getGadget(MorphPumpkinKing.class), rarity, 1);
addGadgetReward(getGadget(MorphBat.class), rarity, 25);
addGadgetReward(getGadget(MorphSlime.class), rarity, 10);
addGadgetReward(getGadget(MorphBlock.class), rarity, 20);
addGadgetReward(getGadget(MorphSnowman.class), rarity, 10);
addGadgetReward(getGadget(MorphGrimReaper.class), rarity, 25);
addGadgetReward(getGadget(MorphAwkwardRabbit.class), rarity, 30);
addGadgetReward(getGadget(MorphLoveDoctor.class), rarity, 40);
addGadgetReward(getGadget(ParticleFreedom.class), rarity, 15);
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);
addGadgetReward(getGadget(ParticleCoalFumes.class), rarity, 1);
addGadgetReward(getGadget(ParticleFrostLord.class), rarity, 10);
addGadgetReward(getGadget(ParticlePartyTime.class), rarity, 25);
addGadgetReward(getGadget(ParticleSpringHalo.class), rarity, 8);
addGadgetReward(getGadget(ParticleWingsLove.class), rarity, 10);
addGadgetReward(getGadget(ParticleFreedomFireworks.class), rarity, 24);
addGadgetReward(getGadget(ParticleAuraNiceness.class), rarity, 4);
addGadgetReward(getGadget(ParticleCanadian.class), rarity, 1);
addGadgetReward(getGadget(ParticleStarSpangled.class), rarity, 1);
addGadgetReward(getGadget(MountFreedomHorse.class), rarity, 5);
addGadgetReward(getGadget(MountZombie.class), rarity, 1);
addGadgetReward(getGadget(MountSpider.class), rarity, 1);
addGadgetReward(getGadget(MountUndead.class), rarity, 1);
addGadgetReward(getGadget(MountValentinesSheep.class), rarity, 20);
addGadgetReward(getGadget(MountBabyReindeer.class), rarity, 1);
addGadgetReward(getGadget(MountNightmareSteed.class), rarity, 10);
addGadgetReward(getGadget(MountChicken.class), rarity, 5);
addGadgetReward(getGadget(MountCake.class), rarity, 10);
addGadgetReward(getGadget(MountStPatricksHorse.class), rarity, 3);
addGadgetReward(getGadget(WinEffectBabyChicken.class), rarity, 10);
addGadgetReward(getGadget(WinEffectLavaTrap.class), rarity, 20);
addGadgetReward(getGadget(WinEffectRiseOfTheElderGuardian.class), rarity, 4);
addGadgetReward(getGadget(WinEffectLightningStrike.class), rarity, 20);
addGadgetReward(getGadget(WinEffectMrPunchMan.class), rarity, 33);
addGadgetReward(getGadget(WinEffectHalloween.class), rarity, 75);
addGadgetReward(getGadget(DeathEnchant.class), rarity, 10);
addGadgetReward(getGadget(DeathCupidsBrokenHeart.class), rarity, 25);
addGadgetReward(getGadget(DeathFrostLord.class), rarity, 15);
addGadgetReward(getGadget(DeathPresentDanger.class), rarity, 27);
addGadgetReward(getGadget(DoubleJumpEnchant.class), rarity, 10);
addGadgetReward(getGadget(DoubleJumpCupidsWings.class), rarity, 5);
addGadgetReward(getGadget(DoubleJumpFrostLord.class), rarity, 10);
addGadgetReward(getGadget(ArrowTrailEnchant.class), rarity, 10);
addGadgetReward(getGadget(ArrowTrailFrostLord.class), rarity, 20);
addGadgetReward(getGadget(ArrowTrailCupid.class), rarity, 15);
addHatReward(HatType.GRINCH, rarity, 25);
addGadgetReward(getGadget(OutfitStPatricksHat.class), rarity, 5);
addGadgetReward(getGadget(OutfitFreezeSuitHelmet.class), rarity, 2);
addBalloonReward(BalloonType.SQUID, rarity, 10, 5000);
addBalloonReward(BalloonType.SILVERFISH, rarity, 30, 5000);
addBalloonReward(BalloonType.GUARDIAN, rarity, 30, 5000);
addBalloonReward(BalloonType.EMERALD_BLOCK, rarity, 15, 5000);
addGadgetReward(getGadget(BlowAKissTaunt.class), rarity, 7);
addGadgetReward(getGadget(RainbowTaunt.class), rarity, 1);
}
@Override
protected void addMythical(RewardRarity rarity)
{
}
}

View File

@ -13,6 +13,7 @@ import mineplex.core.Managers;
import mineplex.core.common.util.C;
import mineplex.core.gadget.GadgetManager;
import mineplex.core.gadget.gadgets.balloons.BalloonType;
import mineplex.core.gadget.gadgets.hat.HatType;
import mineplex.core.gadget.gadgets.kitselector.SingleParticleKitSelector;
import mineplex.core.gadget.types.Gadget;
import mineplex.core.gadget.types.GadgetType;
@ -51,7 +52,7 @@ public class Treasure
return TREASURE_REWARD_MANAGER;
}
private static final GadgetManager GADGET_MANAGER = Managers.require(GadgetManager.class);
protected static final GadgetManager GADGET_MANAGER = Managers.require(GadgetManager.class);
private static final TrackManager TRACK_MANAGER = Managers.require(TrackManager.class);
private final TreasureType _treasureType;
@ -288,12 +289,22 @@ public class Treasure
return reward;
}
protected GadgetReward addHatReward(HatType type, RewardRarity rarity, int weight)
{
return addHatReward(type, rarity, weight, getShards(rarity));
}
protected GadgetReward addHatReward(HatType type, RewardRarity rarity, int weight, int shards)
{
return addGadgetReward(GADGET_MANAGER.getHatGadget(type), rarity, weight, shards);
}
protected SingleParticleKitSelector getKitSelector(SingleParticleKitSelector.SingleParticleSelectors singleParticleSelectors)
{
return GADGET_MANAGER.getSingleParticleKitSelector(singleParticleSelectors);
}
private int getShards(RewardRarity rarity)
protected int getShards(RewardRarity rarity)
{
return SHARD_WORTH.getOrDefault(rarity, 0);
}

View File

@ -3,6 +3,7 @@ package mineplex.core.treasure.types;
import org.bukkit.Material;
import org.bukkit.inventory.ItemStack;
import mineplex.core.common.skin.SkinData;
import mineplex.core.common.util.C;
public enum TreasureType
@ -50,6 +51,31 @@ public enum TreasureType
"in the depths, always bringing a new",
"treasure from the darkness."
),
OMEGA(
C.cAqua + "Omega Chest",
"Omega Chest",
"Omega",
SkinData.OMEGA_CHEST.getSkull(),
"The most powerful of all chests,",
"it is able to go back in time to find",
"loot that has been lost..."
),
MINESTRIKE(
C.cGold + "MineStrike Treasure",
"Minestrike Chest",
"MinestrikeChest",
new ItemStack(Material.TNT),
"The Minestrike Chest is the only place to get",
"the unique skins for Minestrike weapons!"
),
MOBA(
C.cAqua + "Heroes of GWEN Treasure",
"HOG Chest",
"HOGChest",
new ItemStack(Material.PRISMARINE),
"Heroes of GWEN exclusive cosmetics!",
"Each chest contains 4 exclusive items to the game!"
),
TRICK_OR_TREAT(
C.cGold + "Trick or Treat Box",
"Trick or Treat Chest",

View File

@ -3,6 +3,8 @@ package mineplex.core.treasure.types;
import mineplex.core.gadget.gadgets.arrowtrail.ArrowTrailHalloween;
import mineplex.core.gadget.gadgets.death.DeathHalloween;
import mineplex.core.gadget.gadgets.doublejump.DoubleJumpHalloween;
import mineplex.core.gadget.gadgets.kitselector.HalloweenKitSelector;
import mineplex.core.gadget.gadgets.kitselector.SingleParticleKitSelector.SingleParticleSelectors;
import mineplex.core.gadget.gadgets.particle.ParticleHalloween;
import mineplex.core.gadget.gadgets.taunts.InfernalTaunt;
import mineplex.core.reward.RewardType;
@ -30,6 +32,7 @@ public class TrickOrTreatTreasure extends Treasure
addGadgetReward(getGadget(ArrowTrailHalloween.class), rarity, 10);
addGadgetReward(getGadget(DeathHalloween.class), rarity, 10);
addGadgetReward(getGadget(DoubleJumpHalloween.class), rarity, 10);
addGadgetReward(getGadget(HalloweenKitSelector.class), rarity, 10);
}
@Override

View File

@ -63,10 +63,9 @@ public class TreasurePage extends ShopPageBase<TreasureManager, TreasureShop>
lore.add(C.cGray + description);
}
lore.add("");
if (treasure.isPurchasable())
{
lore.add("");
lore.addAll(treasure.getPurchaseMethods());
}
@ -128,7 +127,7 @@ public class TreasurePage extends ShopPageBase<TreasureManager, TreasureShop>
}
}
// Purchase
else
else if (_treasure.isPurchasable())
{
getShop().openPageForPlayer(player, new PurchaseTreasurePage(getPlugin(), getShop(), getPlayer(), _treasure, TreasurePage.this));
}

View File

@ -144,7 +144,7 @@ public class Hub extends JavaPlugin implements IRelation
String boosterGroup = serverConfiguration.getServerGroup().getBoosterGroup();
ThankManager thankManager = new ThankManager(this, clientManager, donationManager);
BoosterManager boosterManager = new BoosterManager(this, boosterGroup, clientManager, donationManager, inventoryManager, thankManager);
HubManager hubManager = new HubManager( blockRestore, clientManager, incognito, donationManager, inventoryManager, disguiseManager, portal, partyManager, preferenceManager, petManager, pollManager, statsManager, achievementManager, hologramManager, npcManager,packetHandler, punish, serverStatusManager, thankManager, boosterManager, castleManager);
HubManager hubManager = new HubManager(clientManager, donationManager, inventoryManager, disguiseManager, portal, partyManager, preferenceManager, petManager, pollManager, statsManager, achievementManager, hologramManager, npcManager, punish, thankManager, boosterManager);
QueueManager queueManager = new QueueManager(this, clientManager, donationManager, eloManager, partyManager);
new ServerManager(this, clientManager, donationManager, portal, partyManager, serverStatusManager, hubManager, queueManager, boosterManager);

View File

@ -9,6 +9,7 @@ import org.bukkit.event.EventHandler;
import mineplex.core.MiniPlugin;
import mineplex.core.common.util.UtilTime;
import mineplex.core.newnpc.event.NPCInteractEvent;
import mineplex.core.npc.event.NpcInteractEntityEvent;
import mineplex.core.portal.Intent;
import mineplex.core.portal.Portal;
@ -70,9 +71,9 @@ public class TemporaryGemHuntersServerSender extends MiniPlugin
}
@EventHandler
public void onUseNPC(NpcInteractEntityEvent event)
public void onUseNPC(NPCInteractEvent event)
{
if (event.getNpc().getName().contains("Gem Hunters"))
if (event.getNpc().getMetadata().equals("GAME_Gem Hunters"))
{
java.util.Optional<ServerInfo> info = _servers.entrySet().stream()
// Ignore the type noise here; it's temporary

View File

@ -58,26 +58,26 @@ public class ParkourManager extends MiniPlugin
_attempts = new HashMap<>();
_parkours = new HashSet<>();
_parkours.add(new ParkourData(this, "House"));
_parkours.add(new WaterParkourData(this));
List<Snake> snakes = new ArrayList<>();
List<Location> path = _worldData.getCustomLocation(String.valueOf(Material.QUARTZ_ORE.getId()));
for (Location head : _worldData.getDataLocation("LIGHT_BLUE"))
{
snakes.add(new Snake(head, path));
}
_parkours.add(new SnakeParkourData(this, snakes));
NewNPCManager npcManager = require(NewNPCManager.class);
for (ParkourData data : _parkours)
{
npcManager.spawnNPCs(data.getKey() + " START", null);
npcManager.spawnNPCs(data.getKey() + " END", null);
}
// _parkours.add(new ParkourData(this, "House"));
// _parkours.add(new WaterParkourData(this));
//
// List<Snake> snakes = new ArrayList<>();
// List<Location> path = _worldData.getCustomLocation(String.valueOf(Material.QUARTZ_ORE.getId()));
//
// for (Location head : _worldData.getDataLocation("LIGHT_BLUE"))
// {
// snakes.add(new Snake(head, path));
// }
//
// _parkours.add(new SnakeParkourData(this, snakes));
//
// NewNPCManager npcManager = require(NewNPCManager.class);
//
// for (ParkourData data : _parkours)
// {
// npcManager.spawnNPCs(data.getKey() + " START", null);
// npcManager.spawnNPCs(data.getKey() + " END", null);
// }
}
public boolean isParkourMode(Player player)

View File

@ -51,8 +51,8 @@ public class HubPlugin extends MiniPlugin
protected void addHubGames()
{
addHubGame(new Tron(_hubGameManager));
addHubGame(new Duels(_hubGameManager));
//addHubGame(new Tron(_hubGameManager));
//addHubGame(new Duels(_hubGameManager));
}
protected final void addHubGame(HubGame game)

View File

@ -19,7 +19,6 @@ import org.bukkit.event.EventPriority;
import org.bukkit.event.entity.EntityPortalEnterEvent;
import org.bukkit.event.entity.EntityPortalEvent;
import org.bukkit.event.player.PlayerInteractEvent;
import org.bukkit.event.player.PlayerJoinEvent;
import org.bukkit.event.player.PlayerPortalEvent;
import org.bukkit.plugin.java.JavaPlugin;
import org.bukkit.util.Vector;
@ -40,7 +39,8 @@ import mineplex.core.common.util.UtilPlayer;
import mineplex.core.common.util.UtilTime;
import mineplex.core.common.util.UtilTime.TimeUnit;
import mineplex.core.donation.DonationManager;
import mineplex.core.itemstack.ItemStackFactory;
import mineplex.core.newnpc.NewNPCManager;
import mineplex.core.newnpc.event.NPCInteractEvent;
import mineplex.core.party.PartyManager;
import mineplex.core.party.event.PartySelectServerEvent;
import mineplex.core.portal.Intent;
@ -71,10 +71,10 @@ public class ServerManager extends MiniPlugin
private static final Random random = new Random();
public final int TOP_SERVERS = 3; // The number of top contending servers for auto-joining games
public final int MIN_SLOTS_REQUIRED = 12; // The number of slots the max server must have for auto-join
public final int TOP_SERVERS = 3; // The number of top contending servers for auto-joining games
public final int MIN_SLOTS_REQUIRED = 12; // The number of slots the max server must have for auto-join
public final long QUEUE_COOLDOWN = 2000; // Cooldown (in milliseconds) between queueing again for players
public final long QUEUE_COOLDOWN = 2000; // Cooldown (in milliseconds) between queueing again for players
private CoreClientManager _clientManager;
private DonationManager _donationManager;
private Portal _portal;
@ -91,20 +91,20 @@ public class ServerManager extends MiniPlugin
private NautHashMap<String, ServerInfo> _serverInfoMap = new NautHashMap<String, ServerInfo>();
private NautHashMap<String, Long> _serverUpdate = new NautHashMap<String, Long>();
private NautHashMap<Vector, String> _portalToServerKey = new NautHashMap<Vector, String>();
private ClansServerShop _clansShop;
private QuickShop _quickShop;
private LobbyShop _lobbyShop;
private boolean _alternateUpdateFire = false;
private boolean _retrieving = false;
private long _lastRetrieve = 0;
public ServerManager(JavaPlugin plugin, CoreClientManager clientManager, DonationManager donationManager, Portal portal, PartyManager partyManager, ServerStatusManager statusManager, HubManager hubManager, QueueManager queueManager, BoosterManager boosterManager)
{
super("Server Manager", plugin);
_clientManager = clientManager;
_donationManager = donationManager;
_portal = portal;
@ -112,20 +112,22 @@ public class ServerManager extends MiniPlugin
_statusManager = statusManager;
_hubManager = hubManager;
_boosterManager = boosterManager;
plugin.getServer().getMessenger().registerOutgoingPluginChannel(plugin, "BungeeCord");
loadServers();
_quickShop = new QuickShop(this, clientManager, donationManager, "Quick Menu");
_lobbyShop = new LobbyShop(this, clientManager, donationManager, "Lobby Menu");
// TODO: Find more appropriate place to initialize Clans server shop?
_clansShop = new ClansServerShop(this, _clientManager, _donationManager);
require(NewNPCManager.class).spawnNPCs("GAME_", null);
generatePermissions();
}
private void generatePermissions()
{
@ -133,19 +135,41 @@ public class ServerManager extends MiniPlugin
PermissionGroup.CONTENT.setPermission(Perm.FEATURE_SERVER, true, true);
PermissionGroup.BUILDER.setPermission(Perm.FEATURE_SERVER, true, true);
}
@EventHandler
public void npcInteract(NPCInteractEvent event)
{
String metadata = event.getNpc().getMetadata();
String[] split = metadata.split("_");
if (split.length < 2)
{
return;
}
String group = split[1];
_serverNpcShopMap.entrySet().forEach(entry ->
{
if (group.equals(entry.getKey()))
{
entry.getValue().attemptShopOpen(event.getPlayer());
}
});
}
@EventHandler(priority = EventPriority.LOW)
public void playerPortalEvent(PlayerPortalEvent event)
{
event.setCancelled(true);
}
@EventHandler(priority = EventPriority.LOW)
public void entityPortalEvent(EntityPortalEvent event)
{
event.setCancelled(true);
}
@EventHandler(priority = EventPriority.LOW)
public void playerCheckPortalEvent(EntityPortalEnterEvent event)
{
@ -153,22 +177,24 @@ public class ServerManager extends MiniPlugin
{
if (event.getEntity() instanceof LivingEntity)
UtilAction.velocity(event.getEntity(), UtilAlg.getTrajectory(event.getEntity().getLocation(), _hubManager.GetSpawn()), 1, true, 0.8, 0, 1, true);
return;
}
Player player = (Player)event.getEntity();
if(!player.getWorld().getName().equalsIgnoreCase("world"))
Player player = (Player) event.getEntity();
if (!player.getWorld().getName().equalsIgnoreCase("world"))
{
return;
}
player.teleport(_hubManager.GetSpawn());
runSyncLater(() -> {_quickShop.attemptShopOpen(player);}, 3L);
runSyncLater(() -> {
_quickShop.attemptShopOpen(player);
}, 3L);
}
@EventHandler
public void checkQueuePrompts(UpdateEvent event)
{
@ -193,7 +219,7 @@ public class ServerManager extends MiniPlugin
}
*/
}
@EventHandler
public void playerInteract(PlayerInteractEvent event)
{
@ -216,23 +242,23 @@ public class ServerManager extends MiniPlugin
{
_serverKeyInfoMap.put(serverGroup.getPrefix(), new HashSet<ServerInfo>());
}
public void addServerNpc(ServerGroup serverGroup)
{
_serverNpcShopMap.put(serverGroup.getServerNpcName(), new ServerNpcShop(this, _clientManager, _donationManager, serverGroup));
}
public void removeServerNpc(String serverNpcName)
{
Set<ServerInfo> mappedServers = _serverKeyInfoMap.remove(serverNpcName);
_serverNpcShopMap.remove(serverNpcName);
if (mappedServers != null)
{
for (ServerInfo mappedServer : mappedServers)
{
boolean isMappedElseWhere = false;
for (String key : _serverKeyInfoMap.keySet())
{
for (ServerInfo value : _serverKeyInfoMap.get(key))
@ -243,27 +269,27 @@ public class ServerManager extends MiniPlugin
break;
}
}
if (isMappedElseWhere)
break;
}
if (!isMappedElseWhere)
_serverInfoMap.remove(mappedServer.Name);
}
}
}
public Collection<ServerInfo> getServerList(String serverKey)
{
return _serverKeyInfoMap.get(serverKey);
}
public Set<String> getAllServers()
{
return _serverInfoMap.keySet();
}
public ServerInfo getServerInfo(String serverName)
{
return _serverInfoMap.get(serverName);
@ -280,28 +306,28 @@ public class ServerManager extends MiniPlugin
{
if (event.getType() != UpdateType.SEC)
return;
_quickShop.UpdatePages();
for (ServerNpcShop shop : _serverNpcShopMap.values())
{
shop.UpdatePages();
}
}
@EventHandler
public void updateServers(UpdateEvent event)
{
if (event.getType() != UpdateType.SEC || (_retrieving && System.currentTimeMillis() - _lastRetrieve <= 5000))
return;
_alternateUpdateFire = !_alternateUpdateFire;
if (!_alternateUpdateFire)
return;
_retrieving = true;
_statusManager.retrieveServerGroups(new Callback<Collection<ServerGroup>>()
{
public void run(final Collection<ServerGroup> serverGroups)
@ -406,7 +432,7 @@ public class ServerManager extends MiniPlugin
});
}
});
updateCooldowns();
}
@ -420,11 +446,11 @@ public class ServerManager extends MiniPlugin
UtilPlayer.message(caller, F.help("/servernpc listnpcs", "Lists all server npcs.", ChatColor.DARK_RED));
UtilPlayer.message(caller, F.help("/servernpc listservers <servernpc>", "Lists all servers.", ChatColor.DARK_RED));
UtilPlayer.message(caller, F.help("/servernpc listoffline", "Shows all servers offline.", ChatColor.DARK_RED));
if (message != null)
UtilPlayer.message(caller, F.main(_moduleName, ChatColor.RED + message));
}
public void help(Player caller)
{
help(caller, null);
@ -434,7 +460,7 @@ public class ServerManager extends MiniPlugin
{
return _partyManager;
}
public void selectServer(Player player, ServerInfo serverInfo)
{
player.leaveVehicle();
@ -442,11 +468,12 @@ public class ServerManager extends MiniPlugin
_portal.sendPlayerToServer(player, serverInfo.Name, Intent.PLAYER_REQUEST);
}
/**
* Select a {@code serverType} for a {@code player} that wishes to automatically join the best server
* available for that server type.
* @param player - the player hoping to select a server
*
* @param player - the player hoping to select a server
* @param serverType - the name of the type of server to be joined
*/
public void selectServer(Player player, String serverType)
@ -455,7 +482,7 @@ public class ServerManager extends MiniPlugin
{
return;
}
ServerInfo bestServer = getBestServer(player, serverType);
if (bestServer != null)
@ -464,37 +491,37 @@ public class ServerManager extends MiniPlugin
addCooldown(player);
}
}
private boolean isOnCooldown(Player player)
{
if (_queueCooldowns.containsKey(player.getName()))
{
long elapsed = System.currentTimeMillis() - _queueCooldowns.get(player.getName());
return elapsed < QUEUE_COOLDOWN;
}
return false;
}
private void addCooldown(Player player)
{
_queueCooldowns.put(player.getName(), System.currentTimeMillis());
}
private void updateCooldowns()
{
for (Iterator<String> playerIterator = _queueCooldowns.keySet().iterator(); playerIterator.hasNext();)
for (Iterator<String> playerIterator = _queueCooldowns.keySet().iterator(); playerIterator.hasNext(); )
{
Player player = Bukkit.getPlayer(playerIterator.next());
if (player == null || !isOnCooldown(player))
{
playerIterator.remove();
}
}
}
/**
* @param serverKey - the type of server that should be fetched
* @return the best server that a new player should join according to a {@code serverType} constraint.
@ -503,17 +530,17 @@ public class ServerManager extends MiniPlugin
{
Collection<ServerInfo> serverList = getServerList(serverKey);
if (serverList == null) return null;
List<ServerInfo> servers = new ArrayList<ServerInfo>(serverList);
servers = fetchOpenServers(player, servers, servers.size()); // Removes all full servers from list
servers = fetchOpenServers(player, servers, servers.size()); // Removes all full servers from list
Collections.sort(servers, new ServerCountSorter());
int count = Math.min(servers.size(), TOP_SERVERS);
if (count > 0)
{
ServerInfo largestServer = servers.get(0);
if (largestServer.getAvailableSlots() >= MIN_SLOTS_REQUIRED || largestServer.MaxPlayers > 40)
{
return largestServer;
@ -523,15 +550,15 @@ public class ServerManager extends MiniPlugin
return servers.get(random.nextInt(count));
}
}
return null;
}
public List<ServerInfo> fetchOpenServers(Player player, List<ServerInfo> servers, int count)
{
List<ServerInfo> results = new ArrayList<ServerInfo>();
int requiredSlots = (servers.size() > 0) ? getRequiredSlots(player, servers.get(0).ServerType) : 0;
for (ServerInfo server : servers)
{
if (isInProgress(server))
@ -541,16 +568,16 @@ public class ServerManager extends MiniPlugin
continue;
if (results.size() >= count) break;
if (server.getAvailableSlots() > requiredSlots)
{
results.add(server);
}
}
return results;
}
private boolean isInProgress(ServerInfo serverInfo)
{
return serverInfo.MOTD.contains("Progress") || serverInfo.MOTD.contains("Restarting");
@ -559,41 +586,41 @@ public class ServerManager extends MiniPlugin
public void listServerNpcs(Player caller)
{
UtilPlayer.message(caller, F.main(getName(), "Listing Server Npcs:"));
for (String serverNpc : _serverKeyInfoMap.keySet())
{
UtilPlayer.message(caller, F.main(getName(), C.cYellow + serverNpc));
}
}
public void listServers(Player caller, String serverNpcName)
{
UtilPlayer.message(caller, F.main(getName(), "Listing Servers for '" + serverNpcName + "':"));
for (ServerInfo serverNpc : _serverKeyInfoMap.get(serverNpcName))
{
UtilPlayer.message(caller, F.main(getName(), C.cYellow + serverNpc.Name + C.cWhite + " - " + serverNpc.MOTD + " " + serverNpc.CurrentPlayers + "/" + serverNpc.MaxPlayers));
UtilPlayer.message(caller, F.main(getName(), C.cYellow + serverNpc.Name + C.cWhite + " - " + serverNpc.MOTD + " " + serverNpc.CurrentPlayers + "/" + serverNpc.MaxPlayers));
}
}
public void listOfflineServers(Player caller)
{
UtilPlayer.message(caller, F.main(getName(), "Listing Offline Servers:"));
for (ServerInfo serverNpc : _serverInfoMap.values())
{
if (serverNpc.MOTD.equalsIgnoreCase(ChatColor.DARK_RED + "OFFLINE"))
{
UtilPlayer.message(caller, F.main(getName(), C.cYellow + serverNpc.Name + C.cWhite + " - " + F.time(UtilTime.convertString(System.currentTimeMillis() - _serverUpdate.get(serverNpc.Name), 0, TimeUnit.FIT))));
UtilPlayer.message(caller, F.main(getName(), C.cYellow + serverNpc.Name + C.cWhite + " - " + F.time(UtilTime.convertString(System.currentTimeMillis() - _serverUpdate.get(serverNpc.Name), 0, TimeUnit.FIT))));
}
}
}
public void loadServers()
{
_serverInfoMap.clear();
_serverUpdate.clear();
for (String npcName : _serverKeyInfoMap.keySet())
{
_serverKeyInfoMap.get(npcName).clear();
@ -615,11 +642,11 @@ public class ServerManager extends MiniPlugin
Vector bottomVector = ParseVector(serverGroup.getPortalBottomCornerLocation());
Vector topVector = ParseVector(serverGroup.getPortalTopCornerLocation());
int blocks = 0;
while (blocks < 10 && (bottomVector.getBlockX() != topVector.getBlockX() || bottomVector.getBlockZ() != topVector.getBlockZ()))
{
_portalToServerKey.put(new Vector(bottomVector.getBlockX(), bottomVector.getBlockY(), bottomVector.getBlockZ()), serverGroup.getPrefix());
if (bottomVector.getBlockX() != topVector.getBlockX())
{
bottomVector.add(new Vector(-(bottomVector.getBlockX() - topVector.getBlockX()) / Math.abs(bottomVector.getBlockX() - topVector.getBlockX()), 0, 0));
@ -628,10 +655,10 @@ public class ServerManager extends MiniPlugin
{
bottomVector.add(new Vector(0, 0, -(bottomVector.getBlockZ() - topVector.getBlockZ()) / Math.abs(bottomVector.getBlockZ() - topVector.getBlockZ())));
}
blocks++;
}
_portalToServerKey.put(bottomVector, serverGroup.getPrefix());
}
}
@ -640,7 +667,7 @@ public class ServerManager extends MiniPlugin
{
System.out.println("ServerManager - Error parsing servergroups : " + e.getMessage());
}
// AddServerNpc("Event Servers", "EVENT");
// AddServerNpc("Mineplex Player Servers", "MPS");
@ -659,7 +686,7 @@ public class ServerManager extends MiniPlugin
if (!_clientManager.Get(player).hasPermission(Perm.JOIN_FULL) && !_donationManager.Get(player).ownsUnknownSalesPackage(serverType + " ULTRA"))
slots++;
return slots;
}
@ -667,12 +694,12 @@ public class ServerManager extends MiniPlugin
{
return _serverNpcShopMap.get("Mixed Arcade");
}
public ServerNpcShop getServerNPCShopByName(String name)
{
for(String shop : _serverNpcShopMap.keySet())
for (String shop : _serverNpcShopMap.keySet())
{
if(shop.equalsIgnoreCase(name))
if (shop.equalsIgnoreCase(name))
{
return _serverNpcShopMap.get(shop);
}
@ -690,7 +717,7 @@ public class ServerManager extends MiniPlugin
{
return _serverNpcShopMap.get("Dominate");
}
public ServerNpcShop getCtfShop()
{
return _serverNpcShopMap.get("Capture the Flag");
@ -700,7 +727,7 @@ public class ServerManager extends MiniPlugin
{
return _serverNpcShopMap.get("The Bridges");
}
public ServerNpcShop getSurvivalGamesShop()
{
return _serverNpcShopMap.get("Survival Games");
@ -725,7 +752,7 @@ public class ServerManager extends MiniPlugin
{
return _serverNpcShopMap.get("Skyfall");
}
public ServerNpcShop getUHCShop()
{
return _serverNpcShopMap.get("Ultra Hardcore");
@ -740,22 +767,22 @@ public class ServerManager extends MiniPlugin
{
return _serverNpcShopMap.get("Mineplex Player Servers");
}
public ServerNpcShop getShop(String name)
{
return _serverNpcShopMap.get(name);
}
private Vector ParseVector(String vectorString)
{
Vector vector = new Vector();
String [] parts = vectorString.trim().split(" ");
String[] parts = vectorString.trim().split(" ");
vector.setX(Double.parseDouble(parts[0]));
vector.setY(Double.parseDouble(parts[1]));
vector.setZ(Double.parseDouble(parts[2]));
return vector;
}
@ -763,12 +790,12 @@ public class ServerManager extends MiniPlugin
{
return _statusManager;
}
public ShopBase<ServerManager> getCastleAssaultShop()
{
return _serverNpcShopMap.get("Castle Assault");
}
public ShopBase<ServerManager> getCastleAssaultTDMShop()
{
return _serverNpcShopMap.get("Castle Assault TDM");
@ -816,12 +843,12 @@ public class ServerManager extends MiniPlugin
{
return _serverNpcShopMap.get("Master Builders");
}
public ClansServerShop getClansShop()
{
return _clansShop;
}
public ShopBase<ServerManager> getTypeWarsShop()
{
return _serverNpcShopMap.get("Type Wars");