diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/GadgetManager.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/GadgetManager.java index 80170b189..5b2de85b0 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/GadgetManager.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/GadgetManager.java @@ -259,6 +259,7 @@ import mineplex.core.gadget.gadgets.particle.ParticleBlood; import mineplex.core.gadget.gadgets.particle.ParticleCandyCane; import mineplex.core.gadget.gadgets.particle.ParticleCoalFumes; import mineplex.core.gadget.gadgets.particle.ParticleDeepSeaSwirl; +import mineplex.core.gadget.gadgets.particle.ParticleFiveYear; import mineplex.core.gadget.gadgets.particle.ParticleInfused; import mineplex.core.gadget.gadgets.particle.ParticleEmerald; import mineplex.core.gadget.gadgets.particle.ParticleEnchant; @@ -738,6 +739,7 @@ public class GadgetManager extends MiniPlugin addGadget(new ParticleRainbowTrail(this)); addGadget(new ParticleDeepSeaSwirl(this)); addGadget(new ParticleInfused(this)); + addGadget(new ParticleFiveYear(this)); // Arrow Trails addGadget(new ArrowTrailFrostLord(this)); diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/particle/ParticleFiveYear.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/particle/ParticleFiveYear.java new file mode 100644 index 000000000..0e678c256 --- /dev/null +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/particle/ParticleFiveYear.java @@ -0,0 +1,71 @@ +package mineplex.core.gadget.gadgets.particle; + +import java.awt.*; +import java.awt.image.BufferedImage; + +import org.bukkit.Location; +import org.bukkit.Material; +import org.bukkit.entity.Player; +import org.bukkit.util.Vector; + +import mineplex.core.common.util.C; +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.UtilText; +import mineplex.core.gadget.GadgetManager; +import mineplex.core.gadget.types.ParticleGadget; +import mineplex.core.gadget.util.CostConstants; +import mineplex.core.updater.UpdateType; +import mineplex.core.updater.event.UpdateEvent; + +public class ParticleFiveYear extends ParticleGadget +{ + + private final BufferedImage _bufferedImage; + + public ParticleFiveYear(GadgetManager manager) + { + super(manager, "Five Years of Mineplex", new String[] + { + C.cGray + "", + C.blankLine, + C.cBlue + "Earned by joining the server during", + C.cBlue + "the Mineplex 5 Year Anniversary." + }, CostConstants.NO_LORE, Material.ENDER_CHEST, (byte) 0); + + _bufferedImage = UtilText.stringToBufferedImage(new Font("Tahoma", Font.PLAIN, 12), "5"); + } + + @Override + public void playParticle(Player player, UpdateEvent event) + { + if (event.getType() != UpdateType.SEC) + { + return; + } + + Location location = player.getLocation().add(0, 1, 0); + location.setPitch(0); + Vector direction = location.getDirection(); + location.add(UtilAlg.getRight(direction).multiply(0.3)); + location.subtract(direction.multiply(0.5)); + + int color, height = _bufferedImage.getHeight() / 2, width = _bufferedImage.getWidth() / 2; + double yaw = Math.toRadians(location.getYaw()); + + for (int y = 1; y < _bufferedImage.getHeight(); y++) + { + for (int x = 0; x < _bufferedImage.getWidth() - 1; x++) + { + color = _bufferedImage.getRGB(x, y); + + Vector vector = new Vector(width - x, height - y, 0).multiply(0.2); + UtilAlg.rotateAroundYAxis(vector, yaw); + UtilParticle.PlayParticleToAll(Color.black.getRGB() == color ? ParticleType.FLAME : ParticleType.SMOKE, location.add(vector), null, 0, 1, ViewDist.NORMAL); + location.subtract(vector); + } + } + } +} diff --git a/Plugins/Mineplex.Core/src/mineplex/core/titles/tracks/TrackManager.java b/Plugins/Mineplex.Core/src/mineplex/core/titles/tracks/TrackManager.java index ea795bb7f..3e6de13ec 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/titles/tracks/TrackManager.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/titles/tracks/TrackManager.java @@ -28,6 +28,7 @@ import mineplex.core.titles.tracks.award.CCIIPublicTrack; import mineplex.core.titles.tracks.award.CCIITrack; import mineplex.core.titles.tracks.award.CastleSiegeTesterTrack; import mineplex.core.titles.tracks.award.ClansRaidTrack; +import mineplex.core.titles.tracks.award.FiveYearTrack; import mineplex.core.titles.tracks.award.MapSub2018Track; import mineplex.core.titles.tracks.award.Minestrike2017Track; import mineplex.core.titles.tracks.award.NewHub2018Track; @@ -131,6 +132,7 @@ public class TrackManager extends MiniPlugin registerTrack(new Bridges2017WinterTrack()); registerTrack(new NewHub2018Track()); registerTrack(new MapSub2018Track()); + registerTrack(new FiveYearTrack()); // Staff tracks registerTrack(new BuilderTrack()); diff --git a/Plugins/Mineplex.Core/src/mineplex/core/titles/tracks/award/FiveYearTrack.java b/Plugins/Mineplex.Core/src/mineplex/core/titles/tracks/award/FiveYearTrack.java new file mode 100644 index 000000000..826f3c246 --- /dev/null +++ b/Plugins/Mineplex.Core/src/mineplex/core/titles/tracks/award/FiveYearTrack.java @@ -0,0 +1,31 @@ +package mineplex.core.titles.tracks.award; + +import net.md_5.bungee.api.ChatColor; + +import mineplex.core.titles.tracks.ItemizedTrack; +import mineplex.core.titles.tracks.TrackFormat; +import mineplex.core.titles.tracks.TrackTier; + +public class FiveYearTrack extends ItemizedTrack +{ + + public FiveYearTrack() + { + super( + "five-years", + ChatColor.GOLD, + "Five Year", + "Mineplex 5th Year Anniversary", + "This track is awarded to players who participated in the Mineplex 5th Year Anniversary Event.", + true + ); + + getRequirements() + .addTier(new TrackTier( + "5 Year Anniversary", + null, + this::owns, + new TrackFormat(ChatColor.GOLD, ChatColor.BLACK) + )); + } +} diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/squidshooters/SquidShooters.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/squidshooters/SquidShooters.java index 497fea84c..c0374014b 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/squidshooters/SquidShooters.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/squidshooters/SquidShooters.java @@ -19,6 +19,7 @@ import org.bukkit.event.entity.EntityDamageEvent.DamageCause; import org.bukkit.event.player.PlayerQuitEvent; import org.bukkit.potion.PotionEffect; import org.bukkit.potion.PotionEffectType; +import org.bukkit.scheduler.BukkitRunnable; import org.bukkit.util.Vector; import com.mineplex.anticheat.checks.move.Glide; @@ -79,7 +80,6 @@ public class SquidShooters extends SoloGame NightVision = true; WorldTimeSet = 6000; - GlideCheckEnabled = false; AntiHack antiHack = Managers.get(AntiHack.class); antiHack.addIgnoredCheck(Speed.class); antiHack.addIgnoredCheck(Glide.class); @@ -90,7 +90,7 @@ public class SquidShooters extends SoloGame @EventHandler public void ScoreboardUpdate(UpdateEvent event) { - if (!InProgress()) + if (event.getType() != UpdateType.FAST || !InProgress()) { return; } @@ -139,7 +139,21 @@ public class SquidShooters extends SoloGame return; } - Manager.runSyncLater(() -> UtilTextMiddle.display(null, C.cYellow + "Hold Sneak to Swim", 10, 40, 10, UtilServer.getPlayers()), 20); + Manager.runSyncTimer(new BukkitRunnable() + { + int line = 0; + + @Override + public void run() + { + UtilTextMiddle.display(null, DESCRIPTION[line], 10, 50, 10, UtilServer.getPlayers()); + + if (++line == DESCRIPTION.length) + { + cancel(); + } + } + }, 20, 50); } @EventHandler diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/squidshooters/kit/KitRetroSquid.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/squidshooters/kit/KitRetroSquid.java index cd0ecee63..79b8ca15d 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/squidshooters/kit/KitRetroSquid.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/squidshooters/kit/KitRetroSquid.java @@ -103,7 +103,7 @@ public class KitRetroSquid extends Kit return; } - Manager.GetDamage().NewDamageEvent(hit, player, null, DamageCause.CUSTOM, 15 * scale, true, true, true, player.getName(), GetName()); + Manager.GetDamage().NewDamageEvent(hit, player, null, DamageCause.CUSTOM, 15 * scale, true, true, true, player.getName(), NAME); }); break; diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/managers/lobby/current/NewGameLobbyManager.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/managers/lobby/current/NewGameLobbyManager.java index 367bc18fc..1f96ebc09 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/managers/lobby/current/NewGameLobbyManager.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/managers/lobby/current/NewGameLobbyManager.java @@ -76,7 +76,8 @@ public class NewGameLobbyManager extends LobbyManager try { readFile(); - } catch (IOException e) + } + catch (IOException e) { e.printStackTrace(); } @@ -149,7 +150,6 @@ public class NewGameLobbyManager extends LobbyManager } int shift = 0; - float yaw = 90; if (doShift) { @@ -178,11 +178,6 @@ public class NewGameLobbyManager extends LobbyManager Collections.reverse(list); } - if (isMPS()) - { - yaw = 0; - } - for (int i = 0; i < list.size(); i++) { GameTeam team = list.get(i); @@ -191,12 +186,13 @@ public class NewGameLobbyManager extends LobbyManager if (isMPS()) { entLoc.add(shift, 0, 0); - } else + } + else { entLoc.add(0, 0, shift); } - entLoc.setYaw(yaw); + entLoc.setYaw(getYawToSpawn(entLoc, true)); entLoc.getChunk().load(); spawnTeamSheep(entLoc, team); @@ -216,16 +212,15 @@ public class NewGameLobbyManager extends LobbyManager } WORLD.getEntities().stream() - .filter(entity -> !(entity instanceof Player) && !(entity instanceof ArmorStand) && !(entity instanceof Item)) - .filter(entity -> entity.isCustomNameVisible() && entity.getCustomName() != null) - .filter(entity -> !getTeams().containsKey(entity)) - .collect(Collectors.toList()) - .forEach(Entity::remove); + .filter(entity -> !(entity instanceof Player) && !(entity instanceof ArmorStand) && !(entity instanceof Item)) + .filter(entity -> entity.isCustomNameVisible() && entity.getCustomName() != null) + .filter(entity -> !getTeams().containsKey(entity)) + .forEach(Entity::remove); List kitList = Lists.newArrayList(game.GetKits()).stream() - .filter(kit -> !(kit instanceof NullKit)) - .filter(kit -> kit.GetAvailability() != KitAvailability.Hide) - .collect(Collectors.toList()); + .filter(kit -> !(kit instanceof NullKit)) + .filter(kit -> kit.GetAvailability() != KitAvailability.Hide) + .collect(Collectors.toList()); List locations = _multipleLocs.get("KIT"); @@ -237,7 +232,8 @@ public class NewGameLobbyManager extends LobbyManager Location entLoc = _singleLocs.get(name); setKit(kit, entLoc); } - } else + } + else { int shift = 0; @@ -368,7 +364,8 @@ public class NewGameLobbyManager extends LobbyManager if (kit.GetAvailability() == KitAvailability.Gem) { data = 5; - } else if (kit.GetAvailability() == KitAvailability.Achievement) + } + else if (kit.GetAvailability() == KitAvailability.Achievement) { data = 2; } @@ -446,24 +443,7 @@ public class NewGameLobbyManager extends LobbyManager return; } - entLoc.getChunk().load(); - - Location yawLoc = entLoc.clone(); - - float yaw = 90; - - if (yawLoc.getBlockX() < 0) - { - yaw = 270; - } - - if (yawLoc.getBlockZ() == 13) - { - yaw = 180; - } - - entLoc.setYaw(yaw); - + entLoc.setYaw(getYawToSpawn(entLoc, true)); kit.getGameKit().createNPC(entLoc); } @@ -514,17 +494,20 @@ public class NewGameLobbyManager extends LobbyManager if (locations.size() == 1) { _singleLocs.put(lastName, locations.get(0)); - } else + } + else { _multipleLocs.put(lastName, locations); } - } else if(name.equalsIgnoreCase("MAP_NAME")) + } + else if (name.equalsIgnoreCase("MAP_NAME")) { - if(tokens[1].toLowerCase().contains("halloween")) + if (tokens[1].toLowerCase().contains("halloween")) { WORLD.setTime(13850); } - } else + } + else { lastName = tokens[1]; } @@ -536,18 +519,16 @@ public class NewGameLobbyManager extends LobbyManager if (carl != null) { carl.add(0, 0.5, 0); - float yaw = UtilAlg.GetYaw(UtilAlg.getTrajectory2d(carl, getSpawn())); - carl.setYaw(yaw); + carl.setYaw(getYawToSpawn(carl, false)); setCarl(carl); } - + Location missions = _singleLocs.get(DataLoc.MISSIONS.name()); if (missions != null) { missions.add(0, 0.5, 0); - float yaw = UtilAlg.GetYaw(UtilAlg.getTrajectory2d(missions, getSpawn())); - missions.setYaw(yaw); + missions.setYaw(getYawToSpawn(missions, false)); setMissions(missions); } @@ -555,7 +536,7 @@ public class NewGameLobbyManager extends LobbyManager Location amp = _singleLocs.get(DataLoc.AMP.name()); if (amp != null) { - amp.setYaw(UtilAlg.GetYaw(UtilAlg.getTrajectory(amp, getSpawn()))); + amp.setYaw(getYawToSpawn(missions, false)); setAmpStand(amp); } } @@ -567,14 +548,15 @@ public class NewGameLobbyManager extends LobbyManager try { return new Location(WORLD, Integer.valueOf(coords[0]) + 0.5, Integer.valueOf(coords[1]), Integer.valueOf(coords[2]) + 0.5); - } catch (Exception e) + } + catch (Exception e) { System.out.println("World Data Read Error: Invalid Location String [" + loc + "]"); } return null; } - + public Map> getCustomLocs() { Map> ret = new HashMap<>(); @@ -585,4 +567,10 @@ public class NewGameLobbyManager extends LobbyManager } return ret; } + + private float getYawToSpawn(Location location, boolean rounded) + { + float yaw = UtilAlg.GetYaw(UtilAlg.getTrajectory(location, getSpawn())); + return rounded ? Math.round(yaw / 90) * 90 : yaw; + } } \ No newline at end of file