Build Update
This commit is contained in:
parent
11b36e6b44
commit
8224450b44
@ -259,8 +259,8 @@ public class UtilParticle
|
||||
{
|
||||
// Dont send to players who cannot see it!
|
||||
if (!particleName.equals(ParticleType.FIREWORKS_SPARK.particleName)
|
||||
&& !particleName.equals(ParticleType.LARGE_EXPLODE.particleName)
|
||||
&& !particleName.equals(ParticleType.HUGE_EXPLOSION.particleName))
|
||||
&& !particleName.equals(ParticleType.LARGE_EXPLODE.particleName)
|
||||
&& !particleName.equals(ParticleType.HUGE_EXPLOSION.particleName))
|
||||
{
|
||||
if (UtilMath.offset(player.getLocation(), location) > 24)
|
||||
{
|
||||
|
@ -1,6 +1,9 @@
|
||||
package nautilus.game.arcade.game.games.build;
|
||||
|
||||
import java.util.AbstractMap;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Map;
|
||||
import java.util.Map.Entry;
|
||||
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.GameMode;
|
||||
@ -86,12 +89,16 @@ public class Build extends SoloGame
|
||||
{
|
||||
private NautHashMap<Player, BuildData> _data = new NautHashMap<Player, BuildData>();
|
||||
|
||||
private ArrayList<Entry<Player,Double>> _scoreboardPlaces = new ArrayList<Entry<Player,Double>>();
|
||||
|
||||
private int _buildGameState = 0;
|
||||
private long _buildStateTime = 0;
|
||||
private long _buildTime = 300000;
|
||||
private long _voteTime = 12000;
|
||||
private long _viewTime = 16000;
|
||||
private BuildData _viewData = null;
|
||||
|
||||
private int _countdownTimerState = 0;
|
||||
|
||||
private String[] _words;
|
||||
|
||||
@ -99,7 +106,22 @@ public class Build extends SoloGame
|
||||
|
||||
private OptionsShop _shop;
|
||||
private ItemStack _shopItem;
|
||||
|
||||
|
||||
private String[] _hintText = new String[]
|
||||
{
|
||||
"Click Creatures to change their settings!",
|
||||
"Set the Time/Weather in the Options Menu!",
|
||||
"Vote based upon Effort, Creativity and Quality!",
|
||||
"Create Particles in the Options Menu!",
|
||||
"Vote fairly for other players! It's more fun!",
|
||||
|
||||
};
|
||||
|
||||
private int _hintIndex = 0;
|
||||
private long _hintTimer = 0;
|
||||
private ChatColor _hintColor = ChatColor.YELLOW;
|
||||
private ChatColor _firstHintColor = ChatColor.YELLOW;
|
||||
|
||||
public Build(ArcadeManager manager)
|
||||
{
|
||||
super(manager, GameType.Build,
|
||||
@ -113,7 +135,8 @@ public class Build extends SoloGame
|
||||
|
||||
new String[]
|
||||
{
|
||||
"Build the word!",
|
||||
"Be creative and build something",
|
||||
"based on the build theme!"
|
||||
});
|
||||
|
||||
this.StrictAntiHack = true;
|
||||
@ -137,7 +160,7 @@ public class Build extends SoloGame
|
||||
|
||||
_words = new String[]
|
||||
{
|
||||
"Pirate Ship", "Mineshaft", "Archers Tower", "Dinner Table", "Pokemon"
|
||||
"Rollercoaster", "Archery Range", "Pokemon", "Pirates", "Vikings", "Dinosaur", "Dragon", "Toilet", "Farm", "Tree House", "Snail", "Burger", "Cat", "Truck", "Bicycle", "Soda", "Music Instrument", "Squid", "Statue", "Cannon", "Catapult", "Sailing Boat", "Grim Reaper", "Star Wars", "Elephant", "Penguin", "Ninja", "Pot of Gold", "Shrek", "Fruit", "Breakfast", "Toaster", "Robot", "Camping", "Spaceship"
|
||||
};
|
||||
|
||||
_shop = new OptionsShop(this, getArcadeManager(), getArcadeManager().GetClients(), getArcadeManager().GetDonation());
|
||||
@ -179,6 +202,8 @@ public class Build extends SoloGame
|
||||
_word = _words[UtilMath.r(_words.length)];
|
||||
|
||||
UtilTextMiddle.display(null, C.cYellow + "Build " + C.cWhite + _word, 0, 80, 5);
|
||||
|
||||
this.WorldTimeSet = -1;
|
||||
}
|
||||
}
|
||||
|
||||
@ -194,6 +219,62 @@ public class Build extends SoloGame
|
||||
//Game
|
||||
if (_buildGameState == 0)
|
||||
{
|
||||
if (_countdownTimerState == 0 && UtilTime.elapsed(GetStateTime(), 60000))
|
||||
{
|
||||
UtilTextMiddle.display(null, C.cYellow + "4 Minutes Remaining", 0, 60, 5);
|
||||
_countdownTimerState++;
|
||||
}
|
||||
else if (_countdownTimerState == 0 && UtilTime.elapsed(GetStateTime(), 120000))
|
||||
{
|
||||
UtilTextMiddle.display(null, C.cYellow + "3 Minutes Remaining", 0, 60, 5);
|
||||
_countdownTimerState++;
|
||||
}
|
||||
else if (_countdownTimerState == 0 && UtilTime.elapsed(GetStateTime(), 180000))
|
||||
{
|
||||
UtilTextMiddle.display(null, C.cYellow + "2 Minutes Remaining", 0, 60, 5);
|
||||
_countdownTimerState++;
|
||||
}
|
||||
else if (_countdownTimerState == 0 && UtilTime.elapsed(GetStateTime(), 240000))
|
||||
{
|
||||
UtilTextMiddle.display(null, C.cYellow + "1 Minutes Remaining", 0, 60, 5);
|
||||
_countdownTimerState++;
|
||||
}
|
||||
else if (_countdownTimerState == 0 && UtilTime.elapsed(GetStateTime(), 270000))
|
||||
{
|
||||
UtilTextMiddle.display(null, C.cYellow + "30 Seconds Remaining", 0, 60, 5);
|
||||
_countdownTimerState++;
|
||||
}
|
||||
else if (_countdownTimerState == 0 && UtilTime.elapsed(GetStateTime(), 285000))
|
||||
{
|
||||
UtilTextMiddle.display(null, C.cYellow + "15 Seconds Remaining", 0, 60, 5);
|
||||
_countdownTimerState++;
|
||||
}
|
||||
else if (_countdownTimerState == 0 && UtilTime.elapsed(GetStateTime(), 295000))
|
||||
{
|
||||
UtilTextMiddle.display(null, C.cYellow + "5 Seconds Remaining", 0, 60, 5);
|
||||
_countdownTimerState++;
|
||||
}
|
||||
else if (_countdownTimerState == 0 && UtilTime.elapsed(GetStateTime(), 296000))
|
||||
{
|
||||
UtilTextMiddle.display(null, C.cYellow + "4 Seconds Remaining", 0, 60, 5);
|
||||
_countdownTimerState++;
|
||||
}
|
||||
else if (_countdownTimerState == 0 && UtilTime.elapsed(GetStateTime(), 297000))
|
||||
{
|
||||
UtilTextMiddle.display(null, C.cYellow + "3 Seconds Remaining", 0, 60, 5);
|
||||
_countdownTimerState++;
|
||||
}
|
||||
else if (_countdownTimerState == 0 && UtilTime.elapsed(GetStateTime(), 298000))
|
||||
{
|
||||
UtilTextMiddle.display(null, C.cYellow + "2 Seconds Remaining", 0, 60, 5);
|
||||
_countdownTimerState++;
|
||||
}
|
||||
else if (_countdownTimerState == 0 && UtilTime.elapsed(GetStateTime(), 299000))
|
||||
{
|
||||
UtilTextMiddle.display(null, C.cYellow + "1 Seconds Remaining", 0, 60, 5);
|
||||
_countdownTimerState++;
|
||||
}
|
||||
|
||||
if (System.currentTimeMillis() - GetStateTime() > _buildTime)
|
||||
{
|
||||
_buildGameState++;
|
||||
@ -202,10 +283,13 @@ public class Build extends SoloGame
|
||||
//Flags
|
||||
this.BlockBreak = false;
|
||||
this.BlockPlace = false;
|
||||
|
||||
this.ItemDrop = false;
|
||||
this.ItemPickup = false;
|
||||
|
||||
this.InventoryClick = false;
|
||||
|
||||
UtilTextMiddle.display(null, C.cYellow + "Time Up!", 0, 60, 5);
|
||||
UtilTextMiddle.display(null, C.cYellow + "TIME IS UP!", 0, 60, 5);
|
||||
|
||||
for (Player player : GetPlayers(true))
|
||||
player.getInventory().clear(8);
|
||||
@ -224,8 +308,8 @@ public class Build extends SoloGame
|
||||
else if (_buildGameState == 2)
|
||||
{
|
||||
//End Vote Time
|
||||
if (_viewData != null && (UtilTime.elapsed(_buildStateTime, _voteTime) ||
|
||||
_viewData.Score.size() == GetPlayers(true).size() - 1)) //All votes cast
|
||||
if (_viewData != null && (UtilTime.elapsed(_buildStateTime, _voteTime)))
|
||||
//_viewData.Score.size() == GetPlayers(true).size() - 1)) //All votes cast
|
||||
{
|
||||
for (Player player : GetPlayers(true))
|
||||
UtilInv.Clear(player);
|
||||
@ -295,7 +379,7 @@ public class Build extends SoloGame
|
||||
}
|
||||
|
||||
//Text
|
||||
UtilTextMiddle.display(null, C.cYellow + "Cast Your Vote!", 0, 60, 5);
|
||||
UtilTextMiddle.display(null, C.cGreen + "Right-Click" + C.cYellow + " to Vote!", 0, 60, 5);
|
||||
|
||||
_buildStateTime = System.currentTimeMillis();
|
||||
}
|
||||
@ -348,8 +432,12 @@ public class Build extends SoloGame
|
||||
//Only count if they got above TERRIBLE score
|
||||
if (BuildQuality.getQuality(bestScore) != BuildQuality.Failure)
|
||||
places.add(bestPlayer);
|
||||
|
||||
_scoreboardPlaces.add(new AbstractMap.SimpleEntry<Player, Double>(bestPlayer, bestScore));
|
||||
}
|
||||
|
||||
writeScoreboard();
|
||||
|
||||
//Announce
|
||||
AnnounceEnd(places);
|
||||
|
||||
@ -882,6 +970,11 @@ public class Build extends SoloGame
|
||||
if (event.getType() != UpdateType.FAST)
|
||||
return;
|
||||
|
||||
writeScoreboard();
|
||||
}
|
||||
|
||||
public void writeScoreboard()
|
||||
{
|
||||
//Wipe Last
|
||||
Scoreboard.Reset();
|
||||
|
||||
@ -902,22 +995,27 @@ public class Build extends SoloGame
|
||||
Scoreboard.Write(C.cYellow + C.Bold + "Vote Time");
|
||||
Scoreboard.Write(UtilTime.MakeStr(Math.max(0, _voteTime - (System.currentTimeMillis() - _buildStateTime)), 1));
|
||||
|
||||
if (_viewData != null)
|
||||
// if (_viewData != null)
|
||||
// {
|
||||
// Scoreboard.WriteBlank();
|
||||
// Scoreboard.Write(C.cYellow + C.Bold + "Votes " + ChatColor.RESET + _viewData.Score.size() + " / " + (GetPlayers(true).size()-1));
|
||||
// Scoreboard.Write(C.cYellow + C.Bold + "Avg " + ChatColor.RESET + UtilMath.trim(2, _viewData.getScore()) + "");
|
||||
// Scoreboard.Write(C.cYellow + C.Bold + "Rating " + ChatColor.RESET + BuildQuality.getQuality(_viewData.getScore()) + "");
|
||||
// Scoreboard.WriteBlank();
|
||||
//
|
||||
// for (Player player : _viewData.Score.keySet())
|
||||
// {
|
||||
// Scoreboard.Write("+" + _viewData.Score.get(player) + " " + player.getName());
|
||||
// }
|
||||
// }
|
||||
}
|
||||
else if (_buildGameState == 4)
|
||||
{
|
||||
for (Entry<Player, Double> score : _scoreboardPlaces)
|
||||
{
|
||||
Scoreboard.WriteBlank();
|
||||
|
||||
Scoreboard.Write(C.cYellow + C.Bold + "Debug Voted");
|
||||
Scoreboard.Write(_viewData.Score.size() + " / " + (GetPlayers(true).size()-1));
|
||||
|
||||
Scoreboard.WriteBlank();
|
||||
|
||||
Scoreboard.Write(C.cYellow + C.Bold + "Debug Avg");
|
||||
Scoreboard.Write(UtilMath.trim(2, _viewData.getScore()) + "");
|
||||
int percent = (int)(score.getValue() * 20);
|
||||
|
||||
Scoreboard.WriteBlank();
|
||||
|
||||
Scoreboard.Write(C.cYellow + C.Bold + "Debug Rating");
|
||||
Scoreboard.Write(BuildQuality.getQuality(_viewData.getScore()) + "");
|
||||
Scoreboard.Write(BuildQuality.getQuality(score.getValue()).getColor() + percent + "% " + ChatColor.RESET + score.getKey().getName());
|
||||
}
|
||||
}
|
||||
|
||||
@ -1033,13 +1131,13 @@ public class Build extends SoloGame
|
||||
return;
|
||||
|
||||
if (_viewData != null)
|
||||
{
|
||||
{
|
||||
_viewData.playWeather(true);
|
||||
}
|
||||
else
|
||||
{
|
||||
for (BuildData data : _data.values())
|
||||
{
|
||||
{
|
||||
data.playWeather(false);
|
||||
}
|
||||
}
|
||||
@ -1062,18 +1160,51 @@ public class Build extends SoloGame
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void showOpenInventory(UpdateEvent event)
|
||||
public void showHints(UpdateEvent event)
|
||||
{
|
||||
if (event.getType() != UpdateType.SEC) return;
|
||||
if (!IsLive())
|
||||
return;
|
||||
|
||||
if (_buildGameState != 0)
|
||||
return;
|
||||
|
||||
if (event.getType() != UpdateType.FAST)
|
||||
return;
|
||||
|
||||
//Hints
|
||||
if (UtilTime.elapsed(_hintTimer, 8000))
|
||||
{
|
||||
if (_hintColor == ChatColor.AQUA)
|
||||
_hintColor = ChatColor.GREEN;
|
||||
else
|
||||
_hintColor = ChatColor.AQUA;
|
||||
|
||||
_hintIndex = (_hintIndex + 1)%_hintText.length;
|
||||
|
||||
_hintTimer = System.currentTimeMillis();
|
||||
}
|
||||
|
||||
boolean showHint = !UtilTime.elapsed(_hintTimer, 1100);
|
||||
|
||||
//Initial
|
||||
for (Player player : GetPlayers(true))
|
||||
{
|
||||
BuildData buildData = _data.get(player);
|
||||
if (buildData != null && !buildData.ClickedInventory)
|
||||
{
|
||||
UtilTextBottom.display(C.cYellow + "Open Inventory to get Blocks!", player);
|
||||
UtilTextBottom.display(_firstHintColor + "Open Inventory to get Blocks!", player);
|
||||
}
|
||||
else if (showHint)
|
||||
{
|
||||
UtilTextBottom.display(_hintColor + _hintText[_hintIndex], player);
|
||||
}
|
||||
}
|
||||
|
||||
//Initial Flash
|
||||
if (_firstHintColor == ChatColor.YELLOW)
|
||||
_firstHintColor = ChatColor.GREEN;
|
||||
else
|
||||
_firstHintColor = ChatColor.YELLOW;
|
||||
}
|
||||
|
||||
@EventHandler(priority = EventPriority.LOWEST)
|
||||
|
@ -259,14 +259,14 @@ public class BuildData
|
||||
}
|
||||
else
|
||||
{
|
||||
Player.setPlayerWeather(type);
|
||||
playWeather(Player, type);
|
||||
}
|
||||
}
|
||||
|
||||
public void playWeather(Player player, org.bukkit.WeatherType type)
|
||||
{
|
||||
player.setPlayerWeather(type);
|
||||
player.setPlayerTime(Time, false);
|
||||
player.setPlayerTime(Time, false);
|
||||
|
||||
if (Weather == WeatherType.STORMING)
|
||||
{
|
||||
|
@ -1,5 +1,7 @@
|
||||
package nautilus.game.arcade.game.games.build;
|
||||
|
||||
import org.bukkit.ChatColor;
|
||||
|
||||
import mineplex.core.common.util.C;
|
||||
|
||||
public enum BuildQuality
|
||||
@ -7,7 +9,7 @@ public enum BuildQuality
|
||||
NoVotes(C.cGray + "No Votes"),
|
||||
|
||||
Mindblowing(C.cAqua + "Mindblowing"),
|
||||
Amazing(C.cGreen + "Amazing"),
|
||||
Awesome(C.cGreen + "Awesome"),
|
||||
Good(C.cYellow + "Good"),
|
||||
Satisfactory(C.cGold + "Satisfactory"),
|
||||
Failure(C.cRed + "FAILURE");
|
||||
@ -30,7 +32,12 @@ public enum BuildQuality
|
||||
if (avgScore <= 1) return Failure;
|
||||
if (avgScore <= 2) return Satisfactory;
|
||||
if (avgScore <= 3) return Good;
|
||||
if (avgScore <= 4) return Amazing;
|
||||
if (avgScore <= 4) return Awesome;
|
||||
return Mindblowing;
|
||||
}
|
||||
|
||||
public String getColor()
|
||||
{
|
||||
return ChatColor.getLastColors(_text);
|
||||
}
|
||||
}
|
||||
|
@ -45,7 +45,7 @@ public class TimePage extends ShopPageBase<ArcadeManager, OptionsShop>
|
||||
if (time == 0) time = 12;
|
||||
|
||||
byte data = (byte) (buildData.Time == ticks ? 5 : 14);
|
||||
ShopItem item = new ShopItem(Material.STAINED_CLAY, data, time + (am ? " am" : " pm"), null, 0, false, false);
|
||||
ShopItem item = new ShopItem(Material.STAINED_CLAY, data, time + (am ? "am" : "pm"), null, 0, false, false);
|
||||
addButton(i, item, new IButton()
|
||||
{
|
||||
@Override
|
||||
|
@ -138,6 +138,44 @@ public class Gravity extends SoloGame
|
||||
Announce(C.Bold + C.cPurple + "Press " + C.Bold + C.cWhite + "DROP WEAPON" + C.Bold + C.cPurple + " to boost yourself off platforms!");
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void cleanObjects(UpdateEvent event)
|
||||
{
|
||||
if (event.getType() != UpdateType.FAST)
|
||||
return;
|
||||
|
||||
//Objects
|
||||
Iterator<GravityObject> oIter = _objects.iterator();
|
||||
|
||||
while (oIter.hasNext())
|
||||
{
|
||||
GravityObject o = oIter.next();
|
||||
|
||||
if (o instanceof GravityPlayer)
|
||||
continue;
|
||||
|
||||
if (!isInsideMap(o.Base.getLocation()))
|
||||
{
|
||||
o.Base.remove();
|
||||
oIter.remove();
|
||||
}
|
||||
}
|
||||
|
||||
//Projectiles
|
||||
Iterator<Arrow> arrowIter = _arrows.keySet().iterator();
|
||||
|
||||
while (arrowIter.hasNext())
|
||||
{
|
||||
Arrow arrow = arrowIter.next();
|
||||
|
||||
if (!isInsideMap(arrow.getLocation()))
|
||||
{
|
||||
arrow.remove();
|
||||
arrowIter.remove();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void ClearObjects(GameStateChangeEvent event)
|
||||
{
|
||||
@ -153,11 +191,14 @@ public class Gravity extends SoloGame
|
||||
@EventHandler
|
||||
public void KickOff(PlayerDropItemEvent event)
|
||||
{
|
||||
event.setCancelled(true);
|
||||
|
||||
if (!IsLive())
|
||||
return;
|
||||
|
||||
for (GravityObject object : _objects)
|
||||
if (object instanceof GravityPlayer)
|
||||
((GravityPlayer)object).KickOff(event.getPlayer());
|
||||
|
||||
event.setCancelled(true);
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
|
@ -7,6 +7,7 @@ import mineplex.core.common.util.UtilParticle.ParticleType;
|
||||
import mineplex.core.disguise.disguises.DisguiseBat;
|
||||
import nautilus.game.arcade.game.games.gravity.objects.*;
|
||||
|
||||
import org.bukkit.Effect;
|
||||
import org.bukkit.Sound;
|
||||
import org.bukkit.entity.Entity;
|
||||
import org.bukkit.entity.Player;
|
||||
@ -31,7 +32,7 @@ public abstract class GravityObject
|
||||
|
||||
public GravityObject(Gravity host, Entity ent, double mass, double size, Vector vel)
|
||||
{
|
||||
Host = host;
|
||||
Host = host;
|
||||
|
||||
Ent = ent;
|
||||
Mass = mass;
|
||||
@ -57,6 +58,7 @@ public abstract class GravityObject
|
||||
|
||||
UtilEnt.Vegetate(Base, true);
|
||||
//UtilEnt.ghost(Base, true, true);
|
||||
Host.Manager.GetCondition().Factory().Invisible(null, Base, null, 9999, 1, false, false, false);
|
||||
}
|
||||
|
||||
public boolean IsPlayer()
|
||||
@ -86,7 +88,8 @@ public abstract class GravityObject
|
||||
{
|
||||
if (this instanceof GravityPlayer)
|
||||
{
|
||||
UtilParticle.PlayParticle(ParticleType.FIREWORKS_SPARK, Ent.getLocation().subtract(0, 0.5, 0), 0, 0, 0, 0, 1);
|
||||
Base.getWorld().playEffect(Ent.getLocation().subtract(0, 0.5, 0), Effect.FIREWORKS_SPARK, 0, 100);
|
||||
//UtilParticle.PlayParticle(ParticleType.FIREWORKS_SPARK, Ent.getLocation().subtract(0, 0.5, 0), 0, 0, 0, 0, 1);
|
||||
}
|
||||
else if (this instanceof GravityBomb)
|
||||
{
|
||||
|
@ -39,7 +39,7 @@ public class GravityPlayer extends GravityObject
|
||||
}
|
||||
|
||||
public boolean NearBlock()
|
||||
{
|
||||
{
|
||||
return !NearBlockList().isEmpty();
|
||||
}
|
||||
|
||||
@ -76,7 +76,7 @@ public class GravityPlayer extends GravityObject
|
||||
|
||||
public void AutoGrab()
|
||||
{
|
||||
UtilPlayer.message(this.Ent, "Bat: " + Base.getLocation().getY());
|
||||
//UtilPlayer.message(this.Ent, "Bat: " + Base.getLocation().getY());
|
||||
|
||||
if (Vel.length() == 0)
|
||||
return;
|
||||
@ -88,7 +88,7 @@ public class GravityPlayer extends GravityObject
|
||||
return;
|
||||
|
||||
Vel.multiply(0);
|
||||
Base.setVelocity(new Vector(0,0,0));
|
||||
Base.setVelocity(new Vector(0,0.1,0));
|
||||
|
||||
GrabDelay = System.currentTimeMillis();
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user