ADDED MORE KITS I'M DONE HOORAY LOVE ME @CHISS

This commit is contained in:
Mysticate 2015-10-02 22:43:29 -04:00
parent c9ff420a79
commit a7ab0cd723
7 changed files with 201 additions and 43 deletions

View File

@ -16,12 +16,12 @@ import mineplex.core.common.util.UtilBlock;
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.UtilParticle; 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.UtilPlayer; import mineplex.core.common.util.UtilPlayer;
import mineplex.core.common.util.UtilServer; import mineplex.core.common.util.UtilServer;
import mineplex.core.common.util.UtilTextMiddle; import mineplex.core.common.util.UtilTextMiddle;
import mineplex.core.common.util.UtilTime; import mineplex.core.common.util.UtilTime;
import mineplex.core.common.util.UtilParticle.ParticleType;
import mineplex.core.common.util.UtilParticle.ViewDist;
import mineplex.core.disguise.DisguiseFactory; import mineplex.core.disguise.DisguiseFactory;
import mineplex.core.disguise.disguises.DisguiseBase; import mineplex.core.disguise.disguises.DisguiseBase;
import mineplex.core.disguise.disguises.DisguiseMagmaCube; import mineplex.core.disguise.disguises.DisguiseMagmaCube;
@ -38,6 +38,7 @@ import nautilus.game.arcade.game.games.monstermaze.events.EntityLaunchEvent;
import nautilus.game.arcade.game.games.monstermaze.events.FirstToSafepadEvent; import nautilus.game.arcade.game.games.monstermaze.events.FirstToSafepadEvent;
import nautilus.game.arcade.game.games.monstermaze.events.MonsterBumpPlayerEvent; import nautilus.game.arcade.game.games.monstermaze.events.MonsterBumpPlayerEvent;
import nautilus.game.arcade.game.games.monstermaze.events.SafepadBuildEvent; import nautilus.game.arcade.game.games.monstermaze.events.SafepadBuildEvent;
import nautilus.game.arcade.game.games.monstermaze.kits.KitBodyBuilder;
import net.minecraft.server.v1_7_R4.Packet; import net.minecraft.server.v1_7_R4.Packet;
import net.minecraft.server.v1_7_R4.PacketPlayOutAnimation; import net.minecraft.server.v1_7_R4.PacketPlayOutAnimation;
import net.minecraft.server.v1_7_R4.PacketPlayOutBlockBreakAnimation; import net.minecraft.server.v1_7_R4.PacketPlayOutBlockBreakAnimation;
@ -188,27 +189,6 @@ public class Maze implements Listener
} }
} }
private boolean _announced = false;
@EventHandler
public void sendF5Message(UpdateEvent event)
{
if (event.getType() != UpdateType.FAST)
return;
if (_host.GetState() != GameState.Prepare)
return;
if (_announced)
return;
if (!UtilTime.elapsed(_host.GetStateTime(), 4000))
return;
_announced = true;
UtilTextMiddle.display(C.cYellow + C.Bold + "Press F5", C.cAqua + C.Bold + "Monster Maze is best in 3rd person!");
_host.Announce(C.cYellow + C.Scramble + "@@" + C.cAqua + C.Bold + " Monster Maze is best played in 3rd Person! (Push F5) " + C.cYellow + C.Scramble + "@@");
}
@EventHandler @EventHandler
public void updateTick(UpdateEvent event) public void updateTick(UpdateEvent event)
{ {
@ -676,7 +656,6 @@ public class Maze implements Listener
for (Block cur : UtilBlock.getInBoundingBox(next.clone().add(-2, 0, -2), next.clone().add(2, 0, 2), false)) for (Block cur : UtilBlock.getInBoundingBox(next.clone().add(-2, 0, -2), next.clone().add(2, 0, 2), false))
{ {
//TODO Maze stuff
if (!_movementWaypointsDisabled.contains(cur)) if (!_movementWaypointsDisabled.contains(cur))
_movementWaypointsDisabled.add(cur); _movementWaypointsDisabled.add(cur);
} }
@ -771,16 +750,9 @@ public class Maze implements Listener
loc.getBlock().setTypeIdAndData(0, (byte) 0, true); loc.getBlock().setTypeIdAndData(0, (byte) 0, true);
} }
getPreset().getMaze().add(cur); getPreset().getMaze().add(cur);
//TODO This is one part
} }
if (_centerSafeZoneDecay != 1)
{
UtilParticle.PlayParticle(ParticleType.BLOCK_DUST.getParticle(Material.STAINED_CLAY, loc.getBlock().getData()), loc.clone().add(0, .2, 0), 0.5f, 0.5f, 0.5f, 0.05f, 8, ViewDist.NORMAL, _host.GetPlayers(false).toArray(new Player[_host.GetPlayers(false).size()]));
}
ind++; ind++;
} }
@ -898,9 +870,7 @@ public class Maze implements Listener
for (Block block : UtilBlock.getInBoundingBox(pad.getLocation().clone().add(-2, 1, -2), pad.getLocation().clone().add(2, 1, 2), false)) for (Block block : UtilBlock.getInBoundingBox(pad.getLocation().clone().add(-2, 1, -2), pad.getLocation().clone().add(2, 1, 2), false))
{ {
if (_movementWaypointsDisabled.contains(block)) if (_movementWaypointsDisabled.contains(block))
_movementWaypointsDisabled.remove(block); _movementWaypointsDisabled.remove(block);
//TODO Swag
} }
iterator.remove(); iterator.remove();
@ -1039,6 +1009,12 @@ public class Maze implements Listener
//2 hearts //2 hearts
UtilPlayer.health(p, 4.0); UtilPlayer.health(p, 4.0);
if (_host.GetKit(p) instanceof KitBodyBuilder)
{
p.setMaxHealth(Math.min(p.getMaxHealth() + 2, 30));
UtilParticle.PlayParticle(ParticleType.HEART, p.getEyeLocation().clone().add(0, .5, 0), 0F, 0F, 0F, 0, 3, ViewDist.NORMAL, UtilServer.getPlayers());
}
int decreased = Math.max(6, 16 - (_curSafe - 1)); int decreased = Math.max(6, 16 - (_curSafe - 1));
_phaseTimer = Math.min(decreased, _phaseTimer); _phaseTimer = Math.min(decreased, _phaseTimer);

View File

@ -25,6 +25,8 @@ import nautilus.game.arcade.game.games.monstermaze.events.AbilityUseEvent;
import nautilus.game.arcade.game.games.monstermaze.events.MonsterBumpPlayerEvent; import nautilus.game.arcade.game.games.monstermaze.events.MonsterBumpPlayerEvent;
import nautilus.game.arcade.game.games.monstermaze.kits.KitJumper; import nautilus.game.arcade.game.games.monstermaze.kits.KitJumper;
import nautilus.game.arcade.game.games.monstermaze.kits.KitRepulsor; import nautilus.game.arcade.game.games.monstermaze.kits.KitRepulsor;
import nautilus.game.arcade.game.games.monstermaze.kits.KitBodyBuilder;
import nautilus.game.arcade.game.games.monstermaze.kits.KitSlowball;
import nautilus.game.arcade.game.games.monstermaze.trackers.AbilityUseTracker; import nautilus.game.arcade.game.games.monstermaze.trackers.AbilityUseTracker;
import nautilus.game.arcade.game.games.monstermaze.trackers.FirstToSafepadTracker; import nautilus.game.arcade.game.games.monstermaze.trackers.FirstToSafepadTracker;
import nautilus.game.arcade.game.games.monstermaze.trackers.PilotTracker; import nautilus.game.arcade.game.games.monstermaze.trackers.PilotTracker;
@ -64,6 +66,8 @@ public class MonsterMaze extends SoloGame
new Kit[] new Kit[]
{ {
new KitJumper(manager), new KitJumper(manager),
new KitSlowball(manager),
new KitBodyBuilder(manager),
new KitRepulsor(manager) new KitRepulsor(manager)
}, },
@ -87,6 +91,8 @@ public class MonsterMaze extends SoloGame
CompassEnabled = false; CompassEnabled = false;
VersionRequire1_8 = true;
registerStatTrackers( registerStatTrackers(
new SnowmanHitTracker(this), new SnowmanHitTracker(this),
new AbilityUseTracker(this), new AbilityUseTracker(this),
@ -342,6 +348,27 @@ public class MonsterMaze extends SoloGame
} }
} }
private boolean _announced = false;
@EventHandler
public void sendF5Message(UpdateEvent event)
{
if (event.getType() != UpdateType.FAST)
return;
if (GetState() != GameState.Prepare)
return;
if (_announced)
return;
if (!UtilTime.elapsed(GetStateTime(), 4000))
return;
_announced = true;
UtilTextMiddle.display(C.cYellow + C.Bold + "Press F5", C.cAqua + C.Bold + "Monster Maze is best in 3rd person!");
Announce(C.cYellow + C.Scramble + "@@" + C.cAqua + C.Bold + " Monster Maze is best played in 3rd Person! (Push F5) " + C.cYellow + C.Scramble + "@@");
}
@Override @Override
@EventHandler @EventHandler
public void ScoreboardUpdate(UpdateEvent event) public void ScoreboardUpdate(UpdateEvent event)

View File

@ -5,9 +5,6 @@ import java.util.Iterator;
import mineplex.core.common.util.MapUtil; import mineplex.core.common.util.MapUtil;
import mineplex.core.common.util.UtilAlg; 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.common.util.UtilPlayer; import mineplex.core.common.util.UtilPlayer;
import net.minecraft.server.v1_7_R4.Packet; import net.minecraft.server.v1_7_R4.Packet;
import net.minecraft.server.v1_7_R4.PacketPlayOutBlockBreakAnimation; import net.minecraft.server.v1_7_R4.PacketPlayOutBlockBreakAnimation;
@ -253,9 +250,7 @@ public class SafePad
SafePadBlock spb = iter.next(); SafePadBlock spb = iter.next();
if (!spb.getLocation().getBlock().getType().equals(Material.STAINED_CLAY)) if (!spb.getLocation().getBlock().getType().equals(Material.STAINED_CLAY))
continue; continue;
UtilParticle.PlayParticle(ParticleType.BLOCK_DUST.getParticle(Material.STAINED_CLAY, spb.getBlockData()), spb.getLocation(), 0.5f, 0.5f, 0.5f, 0.05f, 8, ViewDist.NORMAL, Host.GetPlayers(false).toArray(new Player[Host.GetPlayers(false).size()]));
i++; i++;
Packet packet = new PacketPlayOutBlockBreakAnimation(i, spb.getLocation().getBlockX(), spb.getLocation().getBlockY(), spb.getLocation().getBlockZ(), progress); Packet packet = new PacketPlayOutBlockBreakAnimation(i, spb.getLocation().getBlockX(), spb.getLocation().getBlockY(), spb.getLocation().getBlockZ(), progress);

View File

@ -0,0 +1,38 @@
package nautilus.game.arcade.game.games.monstermaze.kits;
import mineplex.core.common.util.F;
import mineplex.core.itemstack.ItemStackFactory;
import nautilus.game.arcade.ArcadeManager;
import nautilus.game.arcade.kit.Kit;
import nautilus.game.arcade.kit.KitAvailability;
import nautilus.game.arcade.kit.Perk;
import org.bukkit.Material;
import org.bukkit.entity.EntityType;
import org.bukkit.entity.Player;
public class KitBodyBuilder extends Kit
{
public KitBodyBuilder(ArcadeManager manager)
{
super(manager, "Body Builder", KitAvailability.Gem, 2000,
new String[]
{
"Your health just keeps getting better!"
},
new Perk[]
{
new Perk("Body Builder", new String[]{"Your " + F.elem("Max Health") + " increases by " + F.skill("One Heart"), "when you are first to a Safe Pad.", "Maximum of 15 hearts."}){}
},
EntityType.SKELETON,
ItemStackFactory.Instance.CreateStack(373, 8229));
}
@Override
public void GiveItems(Player player)
{
player.getInventory().setItem(4, ItemStackFactory.Instance.CreateStack(Material.COMPASS, (byte) 0, 1, F.item("Safe Pad Locator")));
}
}

View File

@ -1,5 +1,6 @@
package nautilus.game.arcade.game.games.monstermaze.kits; package nautilus.game.arcade.game.games.monstermaze.kits;
import mineplex.core.achievement.Achievement;
import mineplex.core.common.util.C; import mineplex.core.common.util.C;
import mineplex.core.common.util.F; import mineplex.core.common.util.F;
import mineplex.core.itemstack.ItemStackFactory; import mineplex.core.itemstack.ItemStackFactory;
@ -18,7 +19,7 @@ public class KitRepulsor extends Kit
{ {
public KitRepulsor(ArcadeManager manager) public KitRepulsor(ArcadeManager manager)
{ {
super(manager, "Repulsor", KitAvailability.Gem, 4000, super(manager, "Repulsor", KitAvailability.Achievement, 0,
new String[] new String[]
{ {
@ -32,6 +33,16 @@ public class KitRepulsor extends Kit
}, },
EntityType.SKELETON, EntityType.SKELETON,
new ItemStack(Material.COAL)); new ItemStack(Material.COAL));
setAchievementRequirements(new Achievement[]
{
Achievement.MONSTER_MAZE_HARD_MODE,
Achievement.MONSTER_MAZE_NINJA,
Achievement.MONSTER_MAZE_PILOT,
Achievement.MONSTER_MAZE_SPEEDSTER,
Achievement.MONSTER_MAZE_SURVIVAL,
Achievement.MONSTER_MAZE_WINS
});
} }
@Override @Override

View File

@ -0,0 +1,61 @@
package nautilus.game.arcade.game.games.monstermaze.kits;
import mineplex.core.common.util.F;
import mineplex.core.itemstack.ItemStackFactory;
import mineplex.minecraft.game.core.damage.CustomDamageEvent;
import nautilus.game.arcade.ArcadeManager;
import nautilus.game.arcade.kit.Kit;
import nautilus.game.arcade.kit.KitAvailability;
import nautilus.game.arcade.kit.Perk;
import nautilus.game.arcade.kit.perks.PerkConstructor;
import org.bukkit.Material;
import org.bukkit.entity.EntityType;
import org.bukkit.entity.LivingEntity;
import org.bukkit.entity.Player;
import org.bukkit.entity.Snowball;
import org.bukkit.event.EventHandler;
import org.bukkit.inventory.ItemStack;
public class KitSlowball extends Kit
{
public KitSlowball(ArcadeManager manager)
{
super(manager, "Slowballer", KitAvailability.Gem, 4000,
new String[]
{
"Slow enemies so they can't get to",
"their Safe Pad in time!"
},
new Perk[]
{
new PerkConstructor("Slowballer", 2, 16, Material.SNOW_BALL, "Slowball", true)
},
EntityType.SKELETON,
new ItemStack(Material.SNOW_BALL));
}
@Override
public void GiveItems(Player player)
{
player.getInventory().setItem(4, ItemStackFactory.Instance.CreateStack(Material.COMPASS, (byte) 0, 1, F.item("Safe Pad Locator")));
}
@EventHandler
public void SnowballHit(CustomDamageEvent event)
{
if (event.GetProjectile() == null)
return;
if (!(event.GetProjectile() instanceof Snowball))
return;
event.GetProjectile().remove();
// event.GetDamageeEntity().playEffect(EntityEffect.HURT);
Manager.GetCondition().Factory().Slow("Snowball Slow", event.GetDamageeEntity(), (LivingEntity)event.GetProjectile().getShooter(), 2, 1, false, false, true, false);
}
}

View File

@ -1,5 +1,7 @@
package nautilus.game.arcade.managers; package nautilus.game.arcade.managers;
import java.util.HashMap;
import mineplex.core.antihack.AntiHack; import mineplex.core.antihack.AntiHack;
import mineplex.core.common.Rank; import mineplex.core.common.Rank;
import mineplex.core.common.util.C; import mineplex.core.common.util.C;
@ -12,6 +14,7 @@ import mineplex.core.common.util.UtilMath;
import mineplex.core.common.util.UtilPlayer; import mineplex.core.common.util.UtilPlayer;
import mineplex.core.common.util.UtilServer; import mineplex.core.common.util.UtilServer;
import mineplex.core.common.util.UtilTextMiddle; import mineplex.core.common.util.UtilTextMiddle;
import mineplex.core.common.util.UtilTime;
import mineplex.core.itemstack.ItemStackFactory; import mineplex.core.itemstack.ItemStackFactory;
import mineplex.core.recharge.Recharge; import mineplex.core.recharge.Recharge;
import mineplex.core.teleport.event.MineplexTeleportEvent; import mineplex.core.teleport.event.MineplexTeleportEvent;
@ -1188,6 +1191,8 @@ public class GameFlagManager implements Listener
} }
} }
private HashMap<Player, Long> _versionKickCleanup = new HashMap<Player, Long>();
@EventHandler @EventHandler
public void versionJoinCheck(PlayerJoinEvent event) public void versionJoinCheck(PlayerJoinEvent event)
{ {
@ -1215,6 +1220,51 @@ public class GameFlagManager implements Listener
player.playSound(player.getLocation(), Sound.ENDERDRAGON_GROWL, 10f, 1f); player.playSound(player.getLocation(), Sound.ENDERDRAGON_GROWL, 10f, 1f);
Manager.GetPortal().sendPlayerToServer(player, "Lobby"); Manager.GetPortal().sendPlayerToServer(player, "Lobby");
if (!_versionKickCleanup.containsKey(player))
_versionKickCleanup.put(player, System.currentTimeMillis());
}
@EventHandler
public void onVersionCleanup(UpdateEvent event)
{
if (event.getType() != UpdateType.FASTER)
return;
if (Manager.GetGame() == null || !Manager.GetGame().VersionRequire1_8)
{
if (!_versionKickCleanup.isEmpty())
_versionKickCleanup.clear();
return;
}
HashMap<Player, Long> copy = new HashMap<Player, Long>();
copy.putAll(_versionKickCleanup);
for (Player player : copy.keySet())
{
if (UtilPlayer.is1_8(player))
{
_versionKickCleanup.remove(player);
continue;
}
if (!player.isOnline())
{
_versionKickCleanup.remove(player);
continue;
}
//Force kick the player after 10 seconds of not being sent to lobby.
if (UtilTime.elapsed(copy.get(player), 10000))
{
_versionKickCleanup.remove(player);
player.kickPlayer(C.cGold + C.Bold + Manager.GetGame().GetType().GetName() + " requires you to be using Minecraft 1.8!");
continue;
}
}
} }
@EventHandler @EventHandler