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 e0189fe9e..396df1450 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 @@ -102,8 +102,8 @@ public class Christmas extends ChristmasCommon { PacketPlayOutEntityDestroy destroyPacket = (PacketPlayOutEntityDestroy) packetInfo.getPacket(); int[] entityIds = destroyPacket.a; - int origLength = entityIds.length; - for (int a = 0; a < entityIds.length; a++) + int origLength = entityIds.length; + for (int a = 0; a < entityIds.length; a++) { for (SleighHorse horse : _sleigh.getHorses()) { diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/christmas/ChristmasCommon.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/christmas/ChristmasCommon.java index 5c4868c8a..bda052d04 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/christmas/ChristmasCommon.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/christmas/ChristmasCommon.java @@ -12,7 +12,6 @@ import net.minecraft.server.v1_8_R3.PacketPlayOutSpawnEntityLiving; import org.bukkit.ChatColor; import org.bukkit.Location; import org.bukkit.Material; -import org.bukkit.block.Block; import org.bukkit.craftbukkit.v1_8_R3.entity.CraftEntity; import org.bukkit.craftbukkit.v1_8_R3.entity.CraftHorse; import org.bukkit.entity.Player; @@ -25,10 +24,12 @@ import org.bukkit.event.entity.EntityDamageEvent.DamageCause; import org.bukkit.event.entity.EntityDeathEvent; import org.bukkit.event.entity.ItemSpawnEvent; +import mineplex.core.account.permissions.Permission; +import mineplex.core.account.permissions.PermissionGroup; import mineplex.core.common.util.C; +import mineplex.core.common.util.F; import mineplex.core.common.util.MapUtil; import mineplex.core.common.util.UtilAlg; -import mineplex.core.common.util.UtilBlock; import mineplex.core.common.util.UtilMath; import mineplex.core.common.util.UtilPlayer; import mineplex.core.common.util.UtilServer; @@ -52,12 +53,19 @@ import nautilus.game.arcade.kit.Kit; public class ChristmasCommon extends SoloGame { - private static final int BARRIER_BREAK_SQUARED = 400; - private static final int MIN_Y = 50; + public enum Perm implements Permission + { + DEBUG_COMMANDS + } + + private static final int BARRIER_BREAK_SQUARED = 600; + private static final int MIN_Y = 40; protected final List
_sections; private Section _currentSection; + private boolean _forceSkip; + private GameTeam _badGuys; private List _barrier; @@ -140,6 +148,12 @@ public class ChristmasCommon extends SoloGame new CompassModule() .register(this); + + registerDebugCommand("skip", Perm.DEBUG_COMMANDS, PermissionGroup.ADMIN, (player, args) -> + { + _forceSkip = true; + player.sendMessage(F.main("Debug", "Skipping current challenge.")); + }); } @Override @@ -171,7 +185,7 @@ public class ChristmasCommon extends SoloGame return; } - if (_currentSection == null || _currentSection.isComplete()) + if (_currentSection == null || _currentSection.isComplete() || _forceSkip) { if (_currentSection != null) { @@ -179,6 +193,7 @@ public class ChristmasCommon extends SoloGame _currentSection.end(); } + _forceSkip = false; _currentSection = getNext(); if (_currentSection == null) @@ -331,36 +346,16 @@ public class ChristmasCommon extends SoloGame return; } - Location breakAt = null; - - for (Location loc : _barrier) + _barrier.removeIf(location -> { - if (UtilMath.offsetSquared(getSleigh().GetLocation(), loc) > BARRIER_BREAK_SQUARED) + if (UtilMath.offsetSquared(getSleigh().GetLocation(), location) > BARRIER_BREAK_SQUARED) { - continue; + return false; } - breakAt = loc; - } - - if (breakAt != null) - { - _barrier.remove(breakAt); - barrierBreak(breakAt); - } - } - - private void barrierBreak(Location location) - { - MapUtil.QuickChangeBlockAt(location, Material.AIR); - - for (Block block : UtilBlock.getSurrounding(location.getBlock(), false)) - { - if (_barrier.remove(block.getLocation())) - { - barrierBreak(block.getLocation()); - } - } + MapUtil.QuickChangeBlockAt(location, Material.AIR); + return true; + }); } @EventHandler 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 cf82f6fde..34f3f59df 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 @@ -4,24 +4,17 @@ import java.util.ArrayList; import java.util.List; import org.bukkit.ChatColor; -import org.bukkit.Color; import org.bukkit.Effect; -import org.bukkit.FireworkEffect; -import org.bukkit.FireworkEffect.Type; import org.bukkit.Location; -import org.bukkit.Material; -import org.bukkit.block.BlockFace; import org.bukkit.entity.Chicken; import org.bukkit.entity.Entity; import org.bukkit.entity.LivingEntity; import org.bukkit.entity.Player; -import org.bukkit.util.Vector; import mineplex.core.common.util.C; 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.UtilPlayer; import mineplex.core.recharge.Recharge; import mineplex.minecraft.game.core.damage.CustomDamageEvent; @@ -252,10 +245,6 @@ public class Sleigh public void AddPresent(Location loc) { PresentsCollected.add(loc); - loc.getBlock().setType(Material.AIR); - loc.getBlock().getRelative(BlockFace.DOWN).getRelative(BlockFace.DOWN).setType(Material.IRON_BLOCK); - loc.getBlock().getRelative(BlockFace.DOWN).setType(Material.GLASS); - 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), 0); SleighPart part = PresentSlots.remove(0); if (part == null) diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/christmasnew/ChristmasNew.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/christmasnew/ChristmasNew.java index 59f4b81ba..ed2202b82 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/christmasnew/ChristmasNew.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/christmasnew/ChristmasNew.java @@ -53,7 +53,7 @@ public class ChristmasNew extends ChristmasCommon } // Take the parse at the purple bridge - // /parse600 129 88 137 165 14 110 179 21 22 121 + // /parse600 129 88 137 165 14 110 179 21 22 153 103 121 @Override public void ParseData() { @@ -70,7 +70,7 @@ public class ChristmasNew extends ChristmasCommon _sections.add(new Section3(this, targets.remove(0), presents.remove(0))); _sections.add(new Section4(this, targets.remove(0), presents.remove(0), presents.remove(0))); _sections.add(new Section5(this, targets.remove(0), presents.remove(0), presents.remove(0))); - _sections.add(new Section6(this, targets.remove(0), presents.remove(0))); + //_sections.add(new Section6(this, targets.remove(0), presents.remove(0))); } @EventHandler diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/christmasnew/present/Present.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/christmasnew/present/Present.java index 3f9002005..d925a0514 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/christmasnew/present/Present.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/christmasnew/present/Present.java @@ -81,7 +81,7 @@ public class Present implements Component public boolean isColliding(Player player) { - return UtilMath.offsetSquared(player, _stand) < 9; + return UtilMath.offsetSquared(player, _stand) < 4; } public boolean isCollected() diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/christmasnew/section/Section.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/christmasnew/section/Section.java index 844371f62..7707f79ac 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/christmasnew/section/Section.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/christmasnew/section/Section.java @@ -103,10 +103,12 @@ public abstract class Section extends SimpleLifetime implements Listener, Sectio _host.sendSantaMessage("Well done " + player.getName() + " you found a present!" + (left > 0 ? " Only " + left + " to go!" : ""), null); - for (int i = 0; i < 5; i++) + for (int i = 0; i < 3; i++) { UtilFirework.launchFirework(location, FIREWORK_EFFECT, null, UtilMath.r(3)); } + + _host.getSleigh().AddPresent(location); } public Location getSleighTarget() diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/christmasnew/section/five/Section5.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/christmasnew/section/five/Section5.java index 6826f3df4..b844b335e 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/christmasnew/section/five/Section5.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/christmasnew/section/five/Section5.java @@ -18,7 +18,6 @@ import mineplex.core.updater.event.UpdateEvent; import nautilus.game.arcade.game.games.christmasnew.ChristmasNew; import nautilus.game.arcade.game.games.christmasnew.section.Section; -import nautilus.game.arcade.game.games.christmasnew.section.SectionChallenge; public class Section5 extends Section { @@ -40,6 +39,7 @@ public class Section5 extends Section _solidifyAt = _bridgeBlocks.get(0).getBlockY(); registerChallenges( + new SwitchParkour(host, presents[0], this), new SnowmenKong(host, presents[1], this) ); } @@ -78,6 +78,8 @@ public class Section5 extends Section FallingBlock fallingBlock = location.getWorld().spawnFallingBlock(location.add(0, 8, 0), Material.WOOL, colour); fallingBlock.setDropItem(false); fallingBlock.setHurtEntities(false); + + _fallingBlocks.add(fallingBlock); return true; } @@ -112,6 +114,8 @@ public class Section5 extends Section if (location.getBlockY() <= _solidifyAt) { + block.remove(); + location.setY(_solidifyAt); MapUtil.QuickChangeBlockAt(location, block.getMaterial(), block.getBlockData()); if (Math.random() > 0.8) diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/christmasnew/section/five/SwitchParkour.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/christmasnew/section/five/SwitchParkour.java index 04e01e6af..072660180 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/christmasnew/section/five/SwitchParkour.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/christmasnew/section/five/SwitchParkour.java @@ -68,6 +68,9 @@ class SwitchParkour extends SectionChallenge @Override public void onUnregister() { + _white.forEach(location -> MapUtil.QuickChangeBlockAt(location, Material.AIR)); + _black.forEach(location -> MapUtil.QuickChangeBlockAt(location, Material.AIR)); + _checkpointHologram.stop(); } @@ -136,7 +139,7 @@ class SwitchParkour extends SectionChallenge _hasCheckpointed = true; - _checkpointTrigger.getWorld().playSound(_checkpointTrigger, Sound.LEVEL_UP, 1, 0.5F); + _checkpointTrigger.getWorld().playSound(_checkpointTrigger, Sound.LEVEL_UP, 2, 0.5F); MapUtil.QuickChangeBlockAt(_checkpointTrigger, Material.AIR); _checkpointHologram.stop(); @@ -152,7 +155,7 @@ class SwitchParkour extends SectionChallenge { if (location.getY() > y) { - location.getWorld().playSound(location, Sound.PISTON_RETRACT, 1, 0.6F); + location.getWorld().playSound(location, Sound.PISTON_RETRACT, 2, 0.6F); MapUtil.QuickChangeBlockAt(location, Material.COBBLESTONE_STAIRS, (byte) 1); return true; } @@ -169,6 +172,6 @@ class SwitchParkour extends SectionChallenge y--; } } - }, 0, 10); + }, 0, 6); } } diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/christmasnew/section/four/MobDefense.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/christmasnew/section/four/MobDefense.java index be3453703..a7ce3fe0c 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/christmasnew/section/four/MobDefense.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/christmasnew/section/four/MobDefense.java @@ -8,7 +8,7 @@ import org.bukkit.entity.Blaze; import org.bukkit.entity.Creature; import org.bukkit.entity.Creeper; import org.bukkit.entity.Entity; -import org.bukkit.entity.Golem; +import org.bukkit.entity.IronGolem; import org.bukkit.entity.LivingEntity; import org.bukkit.entity.Monster; import org.bukkit.entity.Skeleton; @@ -130,7 +130,7 @@ class MobDefense extends SectionChallenge spawnMob(Skeleton.class, skeletons); spawnMob(Creeper.class, creepers); spawnMob(Blaze.class, blazes); - spawnMob(Golem.class, golems); + spawnMob(IronGolem.class, golems); } @EventHandler diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/christmasnew/section/three/CaveIn.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/christmasnew/section/three/CaveIn.java index 8c1551d18..49d17cb28 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/christmasnew/section/three/CaveIn.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/christmasnew/section/three/CaveIn.java @@ -36,13 +36,13 @@ class CaveIn extends SectionChallenge { super(host, present, section); - _triggerZ = _worldData.GetDataLocs("ORANGE").get(0).getBlockY(); + _triggerZ = _worldData.GetDataLocs("ORANGE").get(0).getBlockZ(); _blocksToExplode = _worldData.GetCustomLocs(String.valueOf(Material.GOLD_ORE.getId())); _blocksToFall = _worldData.GetCustomLocs(String.valueOf(Material.MYCEL.getId())); _blocksToClear = _worldData.GetCustomLocs(String.valueOf(Material.RED_SANDSTONE.getId())); _blocksToExplode.forEach(location -> MapUtil.QuickChangeBlockAt(location, Material.AIR)); - _blocksToFall.forEach(location -> MapUtil.QuickChangeBlockAt(location, Material.STONE)); + _blocksToFall.forEach(location -> MapUtil.QuickChangeBlockAt(location, Material.COBBLESTONE)); _blocksToClear.forEach(location -> MapUtil.QuickChangeBlockAt(location, Material.AIR)); } @@ -109,7 +109,7 @@ class CaveIn extends SectionChallenge { MapUtil.QuickChangeBlockAt(location, Material.AIR); - FallingBlock fallingBlock = location.getWorld().spawnFallingBlock(location.add(0.5, 0, 0.5), Material.STONE, (byte) 0); + FallingBlock fallingBlock = location.getWorld().spawnFallingBlock(location.add(0.5, 0, 0.5), ALLOW_BREAK, (byte) 0); fallingBlock.setHurtEntities(false); fallingBlock.setDropItem(false); }); diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/christmasnew/section/two/IceMaze.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/christmasnew/section/two/IceMaze.java index 4abf62dde..e42559453 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/christmasnew/section/two/IceMaze.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/christmasnew/section/two/IceMaze.java @@ -65,6 +65,37 @@ class IceMaze extends SectionChallenge { int sleighHeight = _host.getSleigh().GetLocation().getBlockY(); + removeMaze(sleighHeight); + fillMaze(sleighHeight); + } + + private void removeMaze(int sleighHeight) + { + _host.getArcadeManager().runSyncTimer(new BukkitRunnable() + { + @Override + public void run() + { + for (int i = 0; i < 30; i++) + { + Location location = _mazeBlocks.remove(0); + + if (location.getY() < sleighHeight) + { + cancel(); + return; + } + else + { + MapUtil.QuickChangeBlockAt(location, Material.AIR); + } + } + } + }, 0, 1); + } + + private void fillMaze(int sleighHeight) + { _host.getArcadeManager().runSyncTimer(new BukkitRunnable() { @Override @@ -72,34 +103,22 @@ class IceMaze extends SectionChallenge { for (int i = 0; i < 20; i++) { - Location location = _mazeBlocks.remove(0); - - if (location.getY() <= sleighHeight) + if (_mazeBlocks.isEmpty()) { cancel(); + return; + } - _host.getArcadeManager().runSyncTimer(new BukkitRunnable() - { - @Override - public void run() - { - for (int i = 0; i < 20 && !_mazeBlocks.isEmpty(); i++) - { - Location location = _mazeBlocks.remove(_mazeBlocks.size() - 1); + Location location = _mazeBlocks.remove(_mazeBlocks.size() - 1); - MapUtil.QuickChangeBlockAt(location, Material.ICE); - } - - if (_mazeBlocks.isEmpty()) - { - cancel(); - } - } - }, 0, 1); + if (location.getY() > sleighHeight) + { + cancel(); + return; } else { - MapUtil.QuickChangeBlockAt(location, Material.AIR); + MapUtil.QuickChangeBlockAt(location, Material.ICE); } } } diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/christmasnew/section/two/SnowTurrets.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/christmasnew/section/two/SnowTurrets.java index e436be7cd..70e78d779 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/christmasnew/section/two/SnowTurrets.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/christmasnew/section/two/SnowTurrets.java @@ -4,6 +4,7 @@ import java.util.HashSet; import java.util.List; import java.util.Set; +import org.bukkit.Bukkit; import org.bukkit.Color; import org.bukkit.FireworkEffect; import org.bukkit.FireworkEffect.Type; @@ -19,6 +20,7 @@ import org.bukkit.event.EventHandler; import org.bukkit.event.entity.EntityDamageEvent.DamageCause; import org.bukkit.util.Vector; +import mineplex.core.common.util.C; import mineplex.core.common.util.UtilAction; import mineplex.core.common.util.UtilAlg; import mineplex.core.common.util.UtilBlock; @@ -87,9 +89,15 @@ class SnowTurrets extends SectionChallenge Witch witch = spawn(location, Witch.class); + witch.setCustomName(C.cAquaB + "Snow Witch"); + witch.setCustomNameVisible(true); + witch.setRemoveWhenFarAway(false); + UtilEnt.vegetate(witch); UtilEnt.ghost(witch, true, false); UtilEnt.setFakeHead(witch, true); + + Bukkit.broadcastMessage("Test"); }); }