diff --git a/Plugins/Mineplex.Core.Common/.classpath b/Plugins/Mineplex.Core.Common/.classpath
index 5593c632f..4b35e421b 100644
--- a/Plugins/Mineplex.Core.Common/.classpath
+++ b/Plugins/Mineplex.Core.Common/.classpath
@@ -2,6 +2,6 @@
-
+
diff --git a/Plugins/Mineplex.Core.Common/src/mineplex/core/common/util/UtilEnt.java b/Plugins/Mineplex.Core.Common/src/mineplex/core/common/util/UtilEnt.java
index 4bef46f97..b07fba8bf 100644
--- a/Plugins/Mineplex.Core.Common/src/mineplex/core/common/util/UtilEnt.java
+++ b/Plugins/Mineplex.Core.Common/src/mineplex/core/common/util/UtilEnt.java
@@ -8,6 +8,7 @@ import net.minecraft.server.v1_6_R3.EntityCreature;
import net.minecraft.server.v1_6_R3.EntityEnderDragon;
import net.minecraft.server.v1_6_R3.EntityHuman;
import net.minecraft.server.v1_6_R3.EntityInsentient;
+import net.minecraft.server.v1_6_R3.EntityLiving;
import net.minecraft.server.v1_6_R3.Navigation;
import net.minecraft.server.v1_6_R3.PathfinderGoalLookAtPlayer;
import net.minecraft.server.v1_6_R3.PathfinderGoalMoveTowardsRestriction;
@@ -20,12 +21,15 @@ import org.bukkit.Material;
import org.bukkit.Sound;
import org.bukkit.block.BlockFace;
import org.bukkit.craftbukkit.v1_6_R3.entity.CraftEntity;
-import org.bukkit.craftbukkit.v1_6_R3.entity.CraftLivingEntity;import org.bukkit.entity.Creature;import org.bukkit.entity.Entity;
+import org.bukkit.craftbukkit.v1_6_R3.entity.CraftLivingEntity;
+
+import org.bukkit.entity.Creature;
+import org.bukkit.entity.Entity;
import org.bukkit.entity.EntityType;
import org.bukkit.entity.Giant;
import org.bukkit.entity.LivingEntity;
import org.bukkit.entity.Player;
-import org.bukkit.entity.Skeleton;import org.bukkit.craftbukkit.v1_6_R3.entity.CraftCreature;
+import org.bukkit.craftbukkit.v1_6_R3.entity.CraftCreature;
import org.bukkit.craftbukkit.v1_6_R3.CraftWorld;
public class UtilEnt
@@ -487,8 +491,14 @@ public class UtilEnt
return false;
}
- public static void CreatureMove(Creature ent, Location target, float speed)
+ public static void CreatureMove(Entity ent, Location target, float speed)
{
+ if (!(ent instanceof Creature))
+ return;
+
+ if (UtilMath.offset(ent.getLocation(), target) < 0.1)
+ return;
+
EntityCreature ec = ((CraftCreature)ent).getHandle();
Navigation nav = ec.getNavigation();
@@ -505,4 +515,19 @@ public class UtilEnt
nav.a(target.getX(), target.getY(), target.getZ(), speed);
}
}
+
+ public static void CreatureMoveFast(Entity ent, Location target, float speed)
+ {
+ if (!(ent instanceof Creature))
+ return;
+
+ if (UtilMath.offset(ent.getLocation(), target) < 0.1)
+ return;
+
+ if (UtilMath.offset(ent.getLocation(), target) < 2)
+ speed = Math.min(speed, 1f);
+
+ EntityCreature ec = ((CraftCreature)ent).getHandle();
+ ec.getControllerMove().a(target.getX(), target.getY(), target.getZ(), speed);
+ }
}
diff --git a/Plugins/Mineplex.Hub/src/mineplex/hub/HubManager.java b/Plugins/Mineplex.Hub/src/mineplex/hub/HubManager.java
index 22a01698a..e4781d965 100644
--- a/Plugins/Mineplex.Hub/src/mineplex/hub/HubManager.java
+++ b/Plugins/Mineplex.Hub/src/mineplex/hub/HubManager.java
@@ -1,23 +1,28 @@
package mineplex.hub;
import java.util.HashMap;
+import java.util.HashSet;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.GameMode;
import org.bukkit.Location;
+import org.bukkit.Material;
import org.bukkit.entity.Egg;
import org.bukkit.entity.Entity;
import org.bukkit.entity.LivingEntity;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
+import org.bukkit.event.block.Action;
import org.bukkit.event.entity.EntityDamageEvent;
import org.bukkit.event.entity.ItemSpawnEvent;
import org.bukkit.event.entity.EntityDamageEvent.DamageCause;
import org.bukkit.event.inventory.InventoryClickEvent;
import org.bukkit.event.player.AsyncPlayerChatEvent;
import org.bukkit.event.player.PlayerCommandPreprocessEvent;
+import org.bukkit.event.player.PlayerDropItemEvent;
+import org.bukkit.event.player.PlayerInteractEvent;
import org.bukkit.event.player.PlayerJoinEvent;
import org.bukkit.event.player.PlayerQuitEvent;
import org.bukkit.event.player.PlayerRespawnEvent;
@@ -46,6 +51,7 @@ import mineplex.core.disguise.DisguiseManager;
import mineplex.core.disguise.disguises.DisguisePlayer;
import mineplex.core.disguise.disguises.DisguiseSlime;
import mineplex.core.donation.DonationManager;
+import mineplex.core.itemstack.ItemStackFactory;
import mineplex.core.portal.Portal;
import mineplex.core.stats.StatsManager;
import mineplex.core.task.TaskManager;
@@ -61,7 +67,7 @@ import mineplex.minecraft.game.core.condition.ConditionManager;
public class HubManager extends MiniClientPlugin
{
- public String Mode = "Normal";
+ public String Mode = "Christmas";
private BlockRestore _blockRestore;
private CoreClientManager _clientManager;
@@ -87,6 +93,9 @@ public class HubManager extends MiniClientPlugin
private boolean _shuttingDown;
private HashMap _portalTime = new HashMap();
+
+ private int _slot = 7;
+ private HashSet _disabled = new HashSet();
public HubManager(JavaPlugin plugin, BlockRestore blockRestore, CoreClientManager clientManager, DonationManager donationManager, ConditionManager conditionManager, DisguiseManager disguiseManager, TaskManager taskManager, Portal portal, PartyManager partyManager)
{
@@ -129,6 +138,77 @@ public class HubManager extends MiniClientPlugin
}
}
+ @EventHandler
+ public void BumpJoin(PlayerJoinEvent event)
+ {
+ event.getPlayer().getInventory().setItem(_slot, ItemStackFactory.Instance.CreateStack(Material.SLIME_BALL, (byte)0, 1,
+ C.cYellow + "Stacker" + C.cWhite + " - " + C.cGreen + "Enabled"));
+ }
+
+ @EventHandler
+ public void BumpQuit(PlayerQuitEvent event)
+ {
+ _disabled.remove(event.getPlayer());
+ }
+
+ public boolean BumpDisabled(Entity ent)
+ {
+ if (ent == null)
+ return false;
+
+ return _disabled.contains(ent);
+ }
+
+ @EventHandler
+ public void BumpToggle(PlayerInteractEvent event)
+ {
+ if (event.getAction() == Action.PHYSICAL)
+ return;
+
+ Player player = event.getPlayer();
+
+ if (player.getInventory().getHeldItemSlot() != _slot)
+ return;
+
+ event.setCancelled(true);
+
+ if (_disabled.remove(player))
+ {
+ UtilPlayer.message(player, F.main("Hub Games", "You are back in the Hub Games!"));
+
+ player.getInventory().setItem(_slot, ItemStackFactory.Instance.CreateStack(Material.SLIME_BALL, (byte)0, 1,
+ C.cYellow + "Stacker" + C.cWhite + " - " + C.cGreen + "Enabled"));
+ }
+ else
+ {
+ _disabled.add(player);
+ UtilPlayer.message(player, F.main("Hub Games", "You are no longer partaking in Hub Games."));
+
+ player.getInventory().setItem(_slot, ItemStackFactory.Instance.CreateStack(Material.MAGMA_CREAM, (byte)0, 1,
+ C.cYellow + "Stacker" + C.cWhite + " - " + C.cRed + "Disabled"));
+ }
+ }
+
+ @EventHandler
+ public void orderThatItem(final PlayerDropItemEvent event)
+ {
+ if (event.getItemDrop().getItemStack().getType() == Material.REDSTONE_TORCH_OFF || event.getItemDrop().getItemStack().getType() == Material.REDSTONE_TORCH_ON)
+ {
+ Bukkit.getScheduler().scheduleSyncDelayedTask(GetPlugin(), new Runnable()
+ {
+ public void run()
+ {
+ if (event.getPlayer().isOnline())
+ {
+ event.getPlayer().getInventory().remove(event.getItemDrop().getItemStack().getType());
+ event.getPlayer().getInventory().setItem(_slot, ItemStackFactory.Instance.CreateStack(event.getItemDrop().getItemStack().getType(), (byte)0, 1, ChatColor.RESET + C.cYellow + "Stacker" + C.cWhite + (_disabled.contains(event.getPlayer()) ? C.cWhite + " - " + C.cRed + "Disabled" : " - " + C.cGreen + "Enabled")));
+ event.getPlayer().updateInventory();
+ }
+ }
+ });
+ }
+ }
+
@EventHandler
public void redirectStopCommand(PlayerCommandPreprocessEvent event)
{
@@ -661,4 +741,6 @@ public class HubManager extends MiniClientPlugin
}
}
}
+
+
}
diff --git a/Plugins/Mineplex.Hub/src/mineplex/hub/gadget/GadgetManager.java b/Plugins/Mineplex.Hub/src/mineplex/hub/gadget/GadgetManager.java
index ebafe8476..04b186cc8 100644
--- a/Plugins/Mineplex.Hub/src/mineplex/hub/gadget/GadgetManager.java
+++ b/Plugins/Mineplex.Hub/src/mineplex/hub/gadget/GadgetManager.java
@@ -6,14 +6,20 @@ import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.Material;
import org.bukkit.entity.Player;
+import org.bukkit.entity.Projectile;
+import org.bukkit.entity.Snowball;
import org.bukkit.event.EventHandler;
+import org.bukkit.event.block.BlockDamageEvent;
import org.bukkit.event.player.PlayerDropItemEvent;
import org.bukkit.event.player.PlayerInteractEvent;
import org.bukkit.event.player.PlayerJoinEvent;
+import org.bukkit.inventory.ItemStack;
import mineplex.core.MiniPlugin;
import mineplex.core.common.Rank;
import mineplex.core.common.util.C;
+import mineplex.core.common.util.UtilAction;
+import mineplex.core.common.util.UtilAlg;
import mineplex.core.itemstack.ItemStackFactory;
import mineplex.hub.HubManager;
import mineplex.hub.gadget.gadgets.Halloween2013_BatGun;
@@ -25,6 +31,7 @@ import mineplex.hub.gadget.types.Gadget;
import mineplex.hub.gadget.types.ItemGadget;
import mineplex.hub.gadget.ui.GadgetShop;
import mineplex.hub.mount.MountManager;
+import mineplex.minecraft.game.core.damage.CustomDamageEvent;
public class GadgetManager extends MiniPlugin
{
@@ -134,4 +141,47 @@ public class GadgetManager extends MiniPlugin
}
}
}
+
+ @EventHandler
+ public void SnowballPickup(BlockDamageEvent event)
+ {
+ if (!Manager.Mode.equals("Christmas"))
+ return;
+
+ if (event.getBlock().getType() != Material.SNOW)
+ return;
+
+ Player player = event.getPlayer();
+
+ RemoveItem(player);
+
+ player.getInventory().setItem(4, new ItemStack(Material.SNOW_BALL, 16));
+ }
+
+ @EventHandler
+ public void SnowballHit(CustomDamageEvent event)
+ {
+ if (!Manager.Mode.equals("Christmas"))
+ return;
+
+ Projectile proj = event.GetProjectile();
+ if (proj == null) return;
+
+ if (!(proj instanceof Snowball))
+ return;
+
+ event.SetCancelled("Snowball Cancel");
+
+ if (Manager.BumpDisabled(event.GetDamageeEntity()))
+ return;
+
+ if (Manager.BumpDisabled(event.GetDamagerEntity(true)))
+ return;
+
+ UtilAction.velocity(event.GetDamageeEntity(), UtilAlg.getTrajectory2d(event.GetDamagerEntity(true), event.GetDamageeEntity()),
+ 0.4, false, 0, 0.2, 1, false);
+
+ //No Portal
+ Manager.SetPortalDelay(event.GetDamageeEntity());
+ }
}
diff --git a/Plugins/Mineplex.Hub/src/mineplex/hub/gadget/gadgets/PaintballGun.java b/Plugins/Mineplex.Hub/src/mineplex/hub/gadget/gadgets/PaintballGun.java
index 1b40e7ffd..c6ff84219 100644
--- a/Plugins/Mineplex.Hub/src/mineplex/hub/gadget/gadgets/PaintballGun.java
+++ b/Plugins/Mineplex.Hub/src/mineplex/hub/gadget/gadgets/PaintballGun.java
@@ -88,9 +88,10 @@ public class PaintballGun extends ItemGadget
public void Paint(ProjectileHitEvent event)
{
if (Manager.Manager.GetParkour().InParkour(event.getEntity()))
- {
return;
- }
+
+ if (!_balls.remove(event.getEntity()))
+ return;
Location loc = event.getEntity().getLocation().add(event.getEntity().getVelocity());
loc.getWorld().playEffect(loc, Effect.STEP_SOUND, 49);
@@ -116,7 +117,10 @@ public class PaintballGun extends ItemGadget
if (!UtilBlock.solid(block))
continue;
- Manager.Manager.GetBlockRestore().Add(block, 35, color, 4000);
+ if (block.getType() == Material.CARPET)
+ Manager.Manager.GetBlockRestore().Add(block, 171, color, 4000);
+ else
+ Manager.Manager.GetBlockRestore().Add(block, 35, color, 4000);
}
}
diff --git a/Plugins/Mineplex.Hub/src/mineplex/hub/gadget/types/ItemGadget.java b/Plugins/Mineplex.Hub/src/mineplex/hub/gadget/types/ItemGadget.java
index 6d4fa86ed..0a3ed106c 100644
--- a/Plugins/Mineplex.Hub/src/mineplex/hub/gadget/types/ItemGadget.java
+++ b/Plugins/Mineplex.Hub/src/mineplex/hub/gadget/types/ItemGadget.java
@@ -64,11 +64,11 @@ public abstract class ItemGadget extends Gadget
public void RemoveItem(Player player)
{
- player.getInventory().setItem(4, null);
-
- _active.remove(player);
-
- UtilPlayer.message(player, F.main("Gadget", "You unequipped " + F.elem(GetName()) + "."));
+ if (_active.remove(player))
+ {
+ player.getInventory().setItem(4, null);
+ UtilPlayer.message(player, F.main("Gadget", "You unequipped " + F.elem(GetName()) + "."));
+ }
}
public boolean IsItem(Player player)
diff --git a/Plugins/Mineplex.Hub/src/mineplex/hub/modules/StackerManager.java b/Plugins/Mineplex.Hub/src/mineplex/hub/modules/StackerManager.java
index 9ba5e1ddc..3058b636b 100644
--- a/Plugins/Mineplex.Hub/src/mineplex/hub/modules/StackerManager.java
+++ b/Plugins/Mineplex.Hub/src/mineplex/hub/modules/StackerManager.java
@@ -29,6 +29,7 @@ import mineplex.core.common.util.UtilAction;
import mineplex.core.common.util.UtilAlg;
import mineplex.core.common.util.UtilEnt;
import mineplex.core.common.util.UtilEvent;
+import mineplex.core.common.util.UtilGear;
import mineplex.core.common.util.UtilPlayer;
import mineplex.core.common.util.UtilEvent.ActionType;
import mineplex.core.itemstack.ItemStackFactory;
@@ -44,10 +45,10 @@ public class StackerManager extends MiniPlugin implements IThrown
private ProjectileManager _projectileManager;
- private HashSet _disabled = new HashSet();
+
private HashSet _tempStackShift = new HashSet();
- private int _slot = 7;
+
public StackerManager(HubManager manager)
{
@@ -58,76 +59,18 @@ public class StackerManager extends MiniPlugin implements IThrown
_projectileManager = new ProjectileManager(manager.GetPlugin());
}
- @EventHandler
- public void ToggleStacker(PlayerInteractEvent event)
- {
- if (event.getAction() == Action.PHYSICAL)
- return;
-
- Player player = event.getPlayer();
-
- if (player.getInventory().getHeldItemSlot() != _slot)
- return;
-
- event.setCancelled(true);
-
- if (_disabled.remove(player))
- {
- UtilPlayer.message(player, F.main("Stacker", "You are back in the stacking games! Squeeeee!"));
-
- player.getInventory().setItem(_slot, ItemStackFactory.Instance.CreateStack(Material.SLIME_BALL, (byte)0, 1,
- C.cYellow + "Stacker" + C.cWhite + " - " + C.cGreen + "Enabled"));
- }
- else
- {
- _disabled.add(player);
- UtilPlayer.message(player, F.main("Stacker", "You are no longer stackable... boring!"));
-
- player.getInventory().setItem(_slot, ItemStackFactory.Instance.CreateStack(Material.MAGMA_CREAM, (byte)0, 1,
- C.cYellow + "Stacker" + C.cWhite + " - " + C.cRed + "Disabled"));
- }
- }
-
- @EventHandler
- public void PlayerJoin(PlayerJoinEvent event)
- {
- event.getPlayer().getInventory().setItem(_slot, ItemStackFactory.Instance.CreateStack(Material.SLIME_BALL, (byte)0, 1,
- C.cYellow + "Stacker" + C.cWhite + " - " + C.cGreen + "Enabled"));
- }
-
- @EventHandler
- public void orderThatItem(final PlayerDropItemEvent event)
- {
- if (event.getItemDrop().getItemStack().getType() == Material.REDSTONE_TORCH_OFF || event.getItemDrop().getItemStack().getType() == Material.REDSTONE_TORCH_ON)
- {
- Bukkit.getScheduler().scheduleSyncDelayedTask(GetPlugin(), new Runnable()
- {
- public void run()
- {
- if (event.getPlayer().isOnline())
- {
- event.getPlayer().getInventory().remove(event.getItemDrop().getItemStack().getType());
- event.getPlayer().getInventory().setItem(_slot, ItemStackFactory.Instance.CreateStack(event.getItemDrop().getItemStack().getType(), (byte)0, 1, ChatColor.RESET + C.cYellow + "Stacker" + C.cWhite + (_disabled.contains(event.getPlayer()) ? C.cWhite + " - " + C.cRed + "Disabled" : " - " + C.cGreen + "Enabled")));
- event.getPlayer().updateInventory();
- }
- }
- });
- }
- }
- @EventHandler
- public void PlayerQuit(PlayerQuitEvent event)
- {
- _disabled.remove(event.getPlayer());
- _tempStackShift.remove(event.getPlayer());
- }
+
+
+
+
public boolean CanStack(LivingEntity ent)
{
if (!(ent instanceof Player))
return true;
- if (_disabled.contains(ent))
+ if (Manager.BumpDisabled(ent))
return false;
if (Manager.GetVisibility().IsHiding(ent))
@@ -146,6 +89,9 @@ public class StackerManager extends MiniPlugin implements IThrown
if (stacker.getGameMode() != GameMode.SURVIVAL)
return;
+
+ if (UtilGear.isMat(stacker.getItemInHand(), Material.SNOW_BALL))
+ return;
//Parkour Disable
if (Manager.GetParkour().InParkour(stacker))
diff --git a/Plugins/Mineplex.Hub/src/mineplex/hub/modules/WorldManager.java b/Plugins/Mineplex.Hub/src/mineplex/hub/modules/WorldManager.java
index c81adf267..a07d34958 100644
--- a/Plugins/Mineplex.Hub/src/mineplex/hub/modules/WorldManager.java
+++ b/Plugins/Mineplex.Hub/src/mineplex/hub/modules/WorldManager.java
@@ -8,6 +8,7 @@ import mineplex.core.common.util.C;
import mineplex.core.common.util.UtilBlock;
import mineplex.core.common.util.UtilMath;
import mineplex.core.common.util.UtilServer;
+import mineplex.core.common.util.UtilTime;
import mineplex.core.common.util.UtilWorld;
import mineplex.core.itemstack.ItemStackFactory;
import mineplex.core.updater.UpdateType;
@@ -27,9 +28,11 @@ import org.bukkit.entity.Pig;
import org.bukkit.entity.Player;
import org.bukkit.entity.Skeleton;
import org.bukkit.entity.Skeleton.SkeletonType;
+import org.bukkit.entity.Snowman;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.block.BlockBreakEvent;
+import org.bukkit.event.block.BlockFormEvent;
import org.bukkit.event.block.BlockPlaceEvent;
import org.bukkit.event.block.BlockSpreadEvent;
import org.bukkit.event.block.LeavesDecayEvent;
@@ -42,6 +45,9 @@ public class WorldManager extends MiniPlugin
public HubManager Manager;
private HashSet _mobs = new HashSet();
+
+ private boolean _christmasSnow = false;
+ private long _christSnowTime = 0;
public WorldManager(HubManager manager)
{
@@ -99,6 +105,10 @@ public class WorldManager extends MiniPlugin
Manager.GetCondition().Factory().Invisible("Perm", ent, ent, 999999999, 0, false, false, true);
Manager.GetCondition().Factory().Slow("Perm", ent, ent, 999999999, 1, false, false, false, true);
}
+ else if (Manager.Mode.equals("Christmas"))
+ {
+ _mobs.add(loc.getWorld().spawn(loc, Snowman.class));
+ }
else
{
r = Math.random();
@@ -191,7 +201,32 @@ public class WorldManager extends MiniPlugin
if (Manager.Mode.equals("Halloween")) world.setTime(16000);
else world.setTime(6000);
- world.setStorm(false);
+
+ if (Manager.Mode.equals("Christmas"))
+ {
+ if (_christmasSnow)
+ {
+ world.setStorm(true);
+
+ if (UtilTime.elapsed(_christSnowTime, 60000))
+ {
+ _christSnowTime = System.currentTimeMillis();
+ _christmasSnow = false;
+ }
+ }
+ else
+ {
+ world.setStorm(false);
+
+ if (UtilTime.elapsed(_christSnowTime, 120000))
+ {
+ _christSnowTime = System.currentTimeMillis();
+ _christmasSnow = true;
+ }
+ }
+
+ }
+ else world.setStorm(false);
}
@EventHandler
@@ -231,4 +266,10 @@ public class WorldManager extends MiniPlugin
}
}
}
+
+ @EventHandler
+ public void BlockForm(BlockFormEvent event)
+ {
+ event.setCancelled(true);
+ }
}