diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/christmas/Christmas.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/christmas/Christmas.java index 5a6c153eb..fdc2e7881 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/christmas/Christmas.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/christmas/Christmas.java @@ -1,13 +1,36 @@ package nautilus.game.arcade.game.games.christmas; +import java.io.BufferedWriter; +import java.io.FileWriter; +import java.io.IOException; +import java.util.ArrayList; + +import org.bukkit.ChatColor; +import org.bukkit.Location; +import org.bukkit.Material; +import org.bukkit.block.Block; +import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; +import org.bukkit.event.EventPriority; +import org.bukkit.event.HandlerList; +import org.bukkit.event.entity.EntityCombustEvent; +import org.bukkit.event.entity.ItemSpawnEvent; import org.bukkit.event.player.PlayerCommandPreprocessEvent; +import mineplex.core.common.util.C; +import mineplex.core.common.util.MapUtil; +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.updater.UpdateType; import mineplex.core.updater.event.UpdateEvent; import nautilus.game.arcade.ArcadeManager; import nautilus.game.arcade.GameType; +import nautilus.game.arcade.events.GameStateChangeEvent; +import nautilus.game.arcade.game.GameTeam; import nautilus.game.arcade.game.SoloGame; +import nautilus.game.arcade.game.games.christmas.parts.*; import nautilus.game.arcade.game.games.stacker.kits.*; import nautilus.game.arcade.kit.Kit; @@ -15,6 +38,14 @@ public class Christmas extends SoloGame { private Sleigh _sleigh; + private Location _sleighSpawn; + + private ArrayList _parts = new ArrayList(); + private Part _part; + + private ArrayList _barrier = new ArrayList(); + + public Christmas(ArcadeManager manager) { super(manager, GameType.Christmas, @@ -28,36 +59,330 @@ public class Christmas extends SoloGame { }); + + this.BlockBreakAllow.add(4); + this.HungerSet = 20; } - @EventHandler - public void Update(UpdateEvent event) + @Override + public void ParseData() { - if (event.getType() != UpdateType.TICK) - return; + //Sleigh Spawn + _sleighSpawn = WorldData.GetDataLocs("RED").get(0); + + //Sleigh Waypoints + ArrayList _sleighWaypoints = new ArrayList(); + while (!WorldData.GetDataLocs("PINK").isEmpty()) + { + Location bestLoc = null; + double bestDist = 0; + + for (Location loc : WorldData.GetDataLocs("PINK")) + { + double dist = UtilMath.offset(loc, _sleighSpawn); + + if (bestLoc == null || bestDist > dist) + { + bestLoc = loc; + bestDist = dist; + } + } + + _sleighWaypoints.add(bestLoc); + WorldData.GetDataLocs("PINK").remove(bestLoc); + } + //Presents + ArrayList _presents = new ArrayList(); + while (!WorldData.GetDataLocs("LIME").isEmpty()) + { + Location bestLoc = null; + double bestDist = 0; + + for (Location loc : WorldData.GetDataLocs("LIME")) + { + double dist = UtilMath.offset(loc, _sleighSpawn); + + if (bestLoc == null || bestDist > dist) + { + bestLoc = loc; + bestDist = dist; + } + } + + _presents.add(bestLoc); + WorldData.GetDataLocs("LIME").remove(bestLoc); + } + + //Barriers + for (Location loc : WorldData.GetCustomLocs("129")) + { + _barrier.add(loc.getBlock().getLocation()); + MapUtil.QuickChangeBlockAt(loc, 20, (byte)0); + } + + + //Parts + _parts.add(new Part1(this, _sleighWaypoints.remove(0), new Location[] {_presents.remove(0), _presents.remove(0)}, + WorldData.GetDataLocs("BLACK"), + WorldData.GetDataLocs("ORANGE"), + WorldData.GetCustomLocs("19"), + WorldData.GetCustomLocs("47"))); + + _parts.add(new Part2(this, _sleighWaypoints.remove(0), new Location[] {_presents.remove(0), _presents.remove(0)}, + WorldData.GetDataLocs("YELLOW"), + WorldData.GetDataLocs("BROWN"), + WorldData.GetDataLocs("PURPLE"), + WorldData.GetCustomLocs("48"))); + + _parts.add(new Part3(this, _sleighWaypoints.remove(0), new Location[] {_presents.remove(0), _presents.remove(0)}, + WorldData.GetDataLocs("SILVER"), + WorldData.GetDataLocs("GRAY"), + WorldData.GetDataLocs("WHITE"), + WorldData.GetCustomLocs("113"))); + + _parts.add(new Part4(this, _sleighWaypoints.remove(0), new Location[] {_presents.remove(0), _presents.remove(0)})); + + _parts.add(new Part5(this, _sleighWaypoints.remove(0), new Location[] {_presents.remove(0), _presents.remove(0)})); + + _parts.add(new Part6(this, _sleighWaypoints.remove(0), new Location[] {_presents.remove(0), _presents.remove(0)}, + WorldData.GetCustomLocs("14"), + WorldData.GetCustomLocs("15"), + WorldData.GetCustomLocs("16"), + WorldData.GetCustomLocs("87"), + WorldData.GetCustomLocs("88"), + WorldData.GetCustomLocs("89"), + WorldData.GetCustomLocs("153"))); + } + + @EventHandler(priority = EventPriority.MONITOR) + public void TeamGen(GameStateChangeEvent event) + { + if (event.GetState() != GameState.Live) + return; + + GetTeamList().add(new GameTeam("Christmas Thieves", ChatColor.RED, WorldData.GetDataLocs("RED"))); + } + + + + @EventHandler + public void PartUpdate(UpdateEvent event) + { if (!IsLive()) return; + if (event.getType() == UpdateType.SEC) + { + if ((_part == null || _part.IsDone()) && _parts != null && !_parts.isEmpty()) + { + _part = _parts.remove(0); + + _part.Prepare(); + + //Register Updates + UtilServer.getServer().getPluginManager().registerEvents(_part, Manager.GetPlugin()); + + GetSleigh().SetTarget(_part.GetSleighWaypoint()); + } + } + } + + public Sleigh GetSleigh() + { if (_sleigh == null) - return; + _sleigh = new Sleigh(this, _sleighSpawn); - _sleigh.Update(); + return _sleigh; } @EventHandler - public void Test(PlayerCommandPreprocessEvent event) + public void SleighSpawn(GameStateChangeEvent event) { - if (event.getMessage().equalsIgnoreCase("/sleigh spawn")) + if (event.GetState() != GameState.Live) + return; + + GetSleigh(); + } + + @EventHandler + public void SleighUpdate(UpdateEvent event) + { + if (!IsLive()) + return; + + if (event.getType() == UpdateType.TICK) + GetSleigh().Update(); + } + + @EventHandler + public void BarrierDecay(UpdateEvent event) + { + if (!IsLive()) + return; + + if (event.getType() != UpdateType.SEC) + return; + + Location breakAt = null; + + for (Location loc : _barrier) { - _sleigh = new Sleigh(this, event.getPlayer().getLocation().add(5, 0, 5)); - event.setCancelled(true); + if (UtilMath.offset(GetSleigh().GetLocation(), loc) > 15) + continue; + + breakAt = loc; } - if (event.getMessage().equalsIgnoreCase("/sleigh here")) + if (breakAt != null) + BarrierBreak(breakAt); + } + + private void BarrierBreak(Location loc) + { + _barrier.remove(loc); + loc.getBlock().setType(Material.AIR); + + for (Block block : UtilBlock.getSurrounding(loc.getBlock(), false)) { - _sleigh.SetTarget(event.getPlayer().getLocation()); - event.setCancelled(true); + if (_barrier.remove(block.getLocation())) + { + BarrierBreak(block.getLocation()); + } } } + + public void SantaSay(String string) + { + Announce(C.cRed + C.Bold + "Santa: " + ChatColor.RESET + string); + } + + @EventHandler + public void Combust(EntityCombustEvent event) + { + event.setCancelled(true); + } + + @EventHandler + public void ItemSpawn(ItemSpawnEvent event) + { + event.setCancelled(true); + } + + @Override + public void EndCheck() + { + if (!IsLive()) + return; + + if (_parts.isEmpty() && _part.IsDone()) + { + for (Player player : GetPlayers(false)) + { + Manager.GetDonation().PurchaseUnknownSalesPackage(null, player.getName(), "Frosty Pumpkin Kings Head", 0, true); + Manager.GetGame().AddGems(player, 30, "Slaying the Pumpkin King", false); + Manager.GetGame().AddGems(player, 10, "Participation", false); + } + + FileWriter fstream = null; + BufferedWriter out = null; + try + { + fstream = new FileWriter("ChristmasHelmets.dat", true); + out = new BufferedWriter(fstream); + + for (Player player : GetPlayers(false)) + { + out.write(UtilTime.now() + "\t\t" + player.getName()); + out.newLine(); + } + + out.close(); + } + catch (Exception e) + { + System.err.println("Christmas Helmet Save: " + e.getMessage()); + } + finally + { + if (out != null) + { + try + { + out.close(); + } + catch (IOException e) + { + e.printStackTrace(); + } + } + + if (fstream != null) + { + try + { + fstream.close(); + } + catch (IOException e) + { + e.printStackTrace(); + } + } + } + + SetState(GameState.End); + SetCustomWinLine("You earned Frosty Pumpkin Kings Head!"); + AnnounceEnd(this.GetTeamList().get(0)); + } + + else if (GetPlayers(true).size() == 0) + { + for (Player player : GetPlayers(false)) + { + Manager.GetGame().AddGems(player, 10, "Participation", false); + } + + SetState(GameState.End); + SetCustomWinLine("You lost..."); + AnnounceEnd(this.GetTeamList().get(1)); + } + } + + @EventHandler + public void Skip(PlayerCommandPreprocessEvent event) + { + if (event.getMessage().equals("/skip")) + if (event.getPlayer().getName().equals("Chiss")) + { + event.setCancelled(true); + + if (_part != null) + HandlerList.unregisterAll(_part); + + if (_parts != null && !_parts.isEmpty()) + { + _part = _parts.remove(0); + + _part.Prepare(); + + //Register Updates + UtilServer.getServer().getPluginManager().registerEvents(_part, Manager.GetPlugin()); + + GetSleigh().SetTarget(_part.GetSleighWaypoint()); + + //XXX REMOVE + for (Player player : UtilServer.getPlayers()) + player.teleport(_part.GetSleighWaypoint()); + } + } + + if (event.getMessage().equals("/present")) + if (event.getPlayer().getName().equals("Chiss")) + { + event.setCancelled(true); + + GetSleigh().AddPresent(event.getPlayer().getLocation()); + } + + } } diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/christmas/Sleigh.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/christmas/Sleigh.java index 579327534..1604be1c0 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/christmas/Sleigh.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/christmas/Sleigh.java @@ -2,16 +2,24 @@ package nautilus.game.arcade.game.games.christmas; import java.util.ArrayList; +import mineplex.core.common.util.UtilAction; +import mineplex.core.common.util.UtilAlg; import mineplex.core.common.util.UtilEnt; +import mineplex.core.common.util.UtilFirework; import mineplex.core.common.util.UtilMath; -import net.minecraft.server.v1_6_R3.EntityCreature; +import mineplex.core.recharge.Recharge; +import org.bukkit.Color; +import org.bukkit.Effect; +import org.bukkit.FireworkEffect; import org.bukkit.Location; -import org.bukkit.craftbukkit.v1_6_R3.entity.CraftCreature; -import org.bukkit.craftbukkit.v1_6_R3.entity.CraftFallingSand; +import org.bukkit.Material; +import org.bukkit.FireworkEffect.Type; import org.bukkit.entity.Chicken; import org.bukkit.entity.Entity; import org.bukkit.entity.FallingBlock; +import org.bukkit.entity.Player; +import org.bukkit.util.Vector; public class Sleigh { @@ -22,6 +30,10 @@ public class Sleigh private ArrayList SleighEnts; private ArrayList SleighHorses; + private ArrayList PresentSlots; + + private ArrayList PresentsCollected = new ArrayList();; + private Location Target; public Sleigh(Christmas host, Location loc) @@ -34,50 +46,84 @@ public class Sleigh CentralEntity = loc.getWorld().spawn(loc, Chicken.class); UtilEnt.Vegetate(CentralEntity); + UtilEnt.ghost(CentralEntity, true); + //Presents + PresentSlots = new ArrayList(); + + PresentSlots.add(new SleighPart(2, 0, 0, loc.clone(), -1, -2)); + PresentSlots.add(new SleighPart(2, 0, 0, loc.clone(), 0, -2)); + PresentSlots.add(new SleighPart(2, 0, 0, loc.clone(), 1, -2)); + PresentSlots.add(new SleighPart(2, 0, 0, loc.clone(), -1, -1)); + PresentSlots.add(new SleighPart(2, 0, 0, loc.clone(), 0, -1)); + PresentSlots.add(new SleighPart(2, 0, 0, loc.clone(), 1, -1)); + + PresentSlots.add(new SleighPart(6, 0, 0, loc.clone(), -1, -2)); + PresentSlots.add(new SleighPart(6, 0, 0, loc.clone(), 0, -2)); + PresentSlots.add(new SleighPart(6, 0, 0, loc.clone(), 1, -2)); + PresentSlots.add(new SleighPart(6, 0, 0, loc.clone(), -1, -1)); + PresentSlots.add(new SleighPart(6, 0, 0, loc.clone(), 0, -1)); + PresentSlots.add(new SleighPart(6, 0, 0, loc.clone(), 1, -1)); + + //Sleigh SleighEnts = new ArrayList(); - SleighEnts.add(new SleighPart(5, 0, loc.clone(), 0, -3)); - SleighEnts.add(new SleighPart(5, 0, loc.clone(), -1, -3)); - SleighEnts.add(new SleighPart(5, 0, loc.clone(), -2, -3)); - SleighEnts.add(new SleighPart(5, 0, loc.clone(), 1, -3)); - SleighEnts.add(new SleighPart(5, 0, loc.clone(), 2, -3)); + for (SleighPart part : PresentSlots) + SleighEnts.add(part); - SleighEnts.add(new SleighPart(5, 0, loc.clone(), -2, -2)); - SleighEnts.add(new SleighPart(126, 0, loc.clone(), -1, -2)); - SleighEnts.add(new SleighPart(126, 0, loc.clone(), 0, -2)); - SleighEnts.add(new SleighPart(126, 0, loc.clone(), 1, -2)); - SleighEnts.add(new SleighPart(5, 0, loc.clone(), 2, -2)); + SleighEnts.add(new SleighPart(0, 159, 14, loc.clone(), 0, -3)); + SleighEnts.add(new SleighPart(0, 159, 14, loc.clone(), -1, -3)); + SleighEnts.add(new SleighPart(0, 159, 14, loc.clone(), -2, -3)); + SleighEnts.add(new SleighPart(0, 159, 14, loc.clone(), 1, -3)); + SleighEnts.add(new SleighPart(0, 159, 14, loc.clone(), 2, -3)); - SleighEnts.add(new SleighPart(5, 0, loc.clone(), -2, -1)); - SleighEnts.add(new SleighPart(126, 0, loc.clone(), -1, -1)); - SleighEnts.add(new SleighPart(126, 0, loc.clone(), 0, -1)); - SleighEnts.add(new SleighPart(126, 0, loc.clone(), 1, -1)); - SleighEnts.add(new SleighPart(5, 0, loc.clone(), 2, -1)); + SleighEnts.add(new SleighPart(0, 159, 14, loc.clone(), -2, -2)); + SleighEnts.add(new SleighPart(0, 44, 7, loc.clone(), -1, -2)); + SleighEnts.add(new SleighPart(0, 44, 7, loc.clone(), 0, -2)); + SleighEnts.add(new SleighPart(0, 44, 7, loc.clone(), 1, -2)); + SleighEnts.add(new SleighPart(0, 159, 14, loc.clone(), 2, -2)); - SleighEnts.add(new SleighPart(5, 0, loc.clone(), -2, 0)); - SleighEnts.add(new SleighPart(5, 0, loc.clone(), -1, 0)); - //SleighEnts.add(new SleighEntity(loc.clone(), 0, 0)); - SleighEnts.add(new SleighPart(5, 0, loc.clone(), 1, 0)); - SleighEnts.add(new SleighPart(5, 0, loc.clone(), 2, 0)); + SleighEnts.add(new SleighPart(0, 159, 14, loc.clone(), -2, -1)); + SleighEnts.add(new SleighPart(0, 44, 7, loc.clone(), -1, -1)); + SleighEnts.add(new SleighPart(0, 44, 7, loc.clone(), 0, -1)); + SleighEnts.add(new SleighPart(0, 44, 7, loc.clone(), 1, -1)); + SleighEnts.add(new SleighPart(0, 159, 14, loc.clone(), 2, -1)); - SleighEnts.add(new SleighPart(5, 0, loc.clone(), -2, 1)); - SleighEnts.add(new SleighPart(126, 0, loc.clone(), -1, 1)); - SleighEnts.add(new SleighPart(126, 0, loc.clone(), 0, 1)); - SleighEnts.add(new SleighPart(126, 0, loc.clone(), 1, 1)); - SleighEnts.add(new SleighPart(5, 0, loc.clone(), 2, 1)); - SleighEnts.add(new SleighPart(5, 0, loc.clone(), -2, 2)); - SleighEnts.add(new SleighPart(126, 0, loc.clone(), -1, 2)); - SleighEnts.add(new SleighPart(126, 0, loc.clone(), 0, 2)); - SleighEnts.add(new SleighPart(126, 0, loc.clone(), 1, 2)); - SleighEnts.add(new SleighPart(5, 0, loc.clone(), 2, 2)); + SleighEnts.add(new SleighPart(0, 159, 14, loc.clone(), -2, 0)); + SleighEnts.add(new SleighPart(0, 159, 14, loc.clone(), -1, 0)); + SleighEnts.add(new SleighPart(0, 159, 14, loc.clone(), 0, 0)); + SleighEnts.add(new SleighPart(0, 159, 14, loc.clone(), 1, 0)); + SleighEnts.add(new SleighPart(0, 159, 14, loc.clone(), 2, 0)); - SleighEnts.add(new SleighPart(126, 0, loc.clone(), -2, 3)); - SleighEnts.add(new SleighPart(126, 0, loc.clone(), -1, 3)); - SleighEnts.add(new SleighPart(126, 0, loc.clone(), 0, 3)); - SleighEnts.add(new SleighPart(126, 0, loc.clone(), 1, 3)); - SleighEnts.add(new SleighPart(126, 0, loc.clone(), 2, 3)); + SleighEnts.add(new SleighPart(0, 159, 14, loc.clone(), -2, 1)); + SleighEnts.add(new SleighPart(0, 44, 7, loc.clone(), -1, 1)); + SleighEnts.add(new SleighPart(0, 159, 15, loc.clone(), 0, 1)); + SleighEnts.add(new SleighPart(0, 44, 7, loc.clone(), 1, 1)); + SleighEnts.add(new SleighPart(0, 159, 14, loc.clone(), 2, 1)); + + SleighEnts.add(new SleighPart(0, 44, 7, loc.clone(), -2, 2)); + SleighEnts.add(new SleighPart(0, 44, 7, loc.clone(), -1, 2)); + SleighEnts.add(new SleighPart(0, 44, 7, loc.clone(), 0, 2)); + SleighEnts.add(new SleighPart(0, 44, 7, loc.clone(), 1, 2)); + SleighEnts.add(new SleighPart(0, 44, 7, loc.clone(), 2, 2)); + + SleighEnts.add(new SleighPart(0, 159, 14, loc.clone(), -2, 3)); + SleighEnts.add(new SleighPart(0, 159, 14, loc.clone(), -1, 3)); + SleighEnts.add(new SleighPart(0, 159, 14, loc.clone(), 0, 3)); + SleighEnts.add(new SleighPart(0, 159, 14, loc.clone(), 1, 3)); + SleighEnts.add(new SleighPart(0, 159, 14, loc.clone(), 2, 3)); + + //Corners + SleighEnts.add(new SleighPart(4, 44, 7, loc.clone(), -2, -3)); + SleighEnts.add(new SleighPart(4, 44, 7, loc.clone(), 2, -3)); + SleighEnts.add(new SleighPart(4, 44, 7, loc.clone(), -2, 0)); + SleighEnts.add(new SleighPart(4, 44, 7, loc.clone(), 2, 0)); + + //Santa + SleighPart part = new SleighPart(3, 0, 0, loc.clone(), 0, 1); + part.AddSanta(); + SleighEnts.add(part); SleighHorses = new ArrayList(); @@ -107,18 +153,22 @@ public class Sleigh public void Update() { + Bump(); + if (Target == null) return; Move(CentralEntity, Target, 1); //Move Sleigh - for (SleighPart ent : SleighEnts) + for (SleighPart part : SleighEnts) { - if (ent.Block != null) - ((CraftFallingSand)ent.Block).getHandle().c = 1; + part.RefreshBlocks(); - Move(ent.Ent, CentralEntity.getLocation().add(ent.OffsetX, 0, ent.OffsetZ), 1); + if (Move(part.Ent, CentralEntity.getLocation().add(part.OffsetX, 0, part.OffsetZ), 1.4)) + if (part.OffsetZ == -3 || Math.abs(part.OffsetX) == 2) + if (Math.random() > 0.95) + part.Ent.getWorld().playEffect(part.Ent.getLocation().subtract(0, 1, 0), Effect.STEP_SOUND, 80); } //Move Horses @@ -128,12 +178,49 @@ public class Sleigh } } - public void Move(Entity ent, Location target, double speed) + public boolean Move(Entity ent, Location target, double speed) { - if (UtilMath.offset(ent.getLocation(), target) > 0.1) + return UtilEnt.CreatureMoveFast(ent, target, (float)speed); + } + + public void Bump() + { + for (Player player : Host.GetPlayers(true)) { - EntityCreature ec = ((CraftCreature)ent).getHandle(); - ec.getControllerMove().a(target.getX(), target.getY(), target.getZ(), speed); + if (!Recharge.Instance.usable(player, "Sleigh Bump")) + continue; + + for (SleighPart part : SleighEnts) + if (UtilMath.offset(player, part.Ent) < 1) + { + UtilAction.velocity(player, UtilAlg.getTrajectory2d(CentralEntity, player), 0.4, true, 0.2, 0, 0, true); + Recharge.Instance.useForce(player, "Sleigh Bump", 400); + } + + + for (SleighHorse part : SleighHorses) + if (UtilMath.offset(player, part.Ent) < 1) + { + UtilAction.velocity(player, UtilAlg.getTrajectory2d(CentralEntity, player), 0.4, true, 0.2, 0, 0, true); + Recharge.Instance.useForce(player, "Sleigh Bump", 400); + } } } + + public boolean HasPresent(Location loc) + { + return PresentsCollected.contains(loc); + } + + public void AddPresent(Location loc) + { + PresentsCollected.add(loc); + loc.getBlock().setType(Material.AIR); + UtilFirework.launchFirework(loc.clone().add(0.5, 0.5, 0.5), FireworkEffect.builder().flicker(false).withColor(Color.YELLOW).with(Type.BALL).trail(true).build(), new Vector(0,1,0), 1); + + SleighPart part = PresentSlots.remove(0); + if (part == null) return; + + part.SetPresent(); + } } diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/christmas/SleighHorse.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/christmas/SleighHorse.java index 983d938cf..ac46dd67b 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/christmas/SleighHorse.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/christmas/SleighHorse.java @@ -3,20 +3,22 @@ package nautilus.game.arcade.game.games.christmas; import mineplex.core.common.util.UtilEnt; import org.bukkit.Location; +import org.bukkit.entity.Chicken; import org.bukkit.entity.Entity; import org.bukkit.entity.Horse; public class SleighHorse { - public Horse Ent; + public Chicken Ent; public double OffsetX; public double OffsetZ; public SleighHorse(Entity owner, Location loc, double x, double z) { - Ent = loc.getWorld().spawn(loc.add(x, 0, z), Horse.class); + Ent = loc.getWorld().spawn(loc.add(x, 0, z), Chicken.class); //Ent.setLeashHolder(owner); UtilEnt.Vegetate(Ent); + UtilEnt.ghost(Ent, true); OffsetX = x; OffsetZ = z; diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/christmas/SleighPart.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/christmas/SleighPart.java index a7bb95a90..b19331ab4 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/christmas/SleighPart.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/christmas/SleighPart.java @@ -1,10 +1,19 @@ package nautilus.game.arcade.game.games.christmas; +import mineplex.core.common.util.C; import mineplex.core.common.util.UtilEnt; +import mineplex.core.common.util.UtilMath; +import org.bukkit.Color; import org.bukkit.Location; +import org.bukkit.Material; +import org.bukkit.craftbukkit.v1_6_R3.entity.CraftFallingSand; import org.bukkit.entity.Chicken; +import org.bukkit.entity.Entity; import org.bukkit.entity.FallingBlock; +import org.bukkit.entity.Skeleton; +import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.LeatherArmorMeta; public class SleighPart { @@ -13,18 +22,110 @@ public class SleighPart public double OffsetX; public double OffsetZ; - public SleighPart(int id, int data, Location loc, double x, double z) + public SleighPart(int rise, int id, int data, Location loc, double x, double z) { + //Base Ent = loc.getWorld().spawn(loc.add(x, 0, z), Chicken.class); Ent.setBaby(); Ent.setAgeLock(true); - - Block = loc.getWorld().spawnFallingBlock(loc.add(0, 1, 0), id, (byte)data); - Ent.setPassenger(Block); - UtilEnt.Vegetate(Ent); + UtilEnt.ghost(Ent, true); + + //Height + Chicken top = Ent; + for (int i=0 ; i