Implement 5 year particle and title

This commit is contained in:
Sam 2018-07-09 23:46:31 +01:00 committed by Alexander Meech
parent b72bf772e2
commit 24a1d09f18
7 changed files with 161 additions and 53 deletions

View File

@ -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));

View File

@ -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);
}
}
}
}

View File

@ -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());

View File

@ -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)
));
}
}

View File

@ -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

View File

@ -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;

View File

@ -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<Kit> 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<Location> 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,8 +519,7 @@ 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);
}
@ -546,8 +528,7 @@ public class NewGameLobbyManager extends LobbyManager
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,7 +548,8 @@ 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 + "]");
}
@ -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;
}
}