Final push

This commit is contained in:
Sam 2018-05-09 02:04:37 +01:00 committed by Alexander Meech
parent 2f77f53648
commit 3f0494a7bb
9 changed files with 97 additions and 64 deletions

View File

@ -185,7 +185,7 @@ public enum GameKit
"Guess he burnt the bacon", "Guess he burnt the bacon",
C.blankLine, C.blankLine,
click(false, "Axe to launch " + C.cGreen + "Crispy Bacon"), click(false, "Axe to launch " + C.cGreen + "Crispy Bacon"),
"Players on fire take " + C.cGreen + "+30%" + C.cGray + "knockback." "Players on fire take " + C.cGreen + "+30%" + C.cGray + " knockback."
}, },
new KitEntityData<> new KitEntityData<>
( (

View File

@ -24,7 +24,7 @@ public class HubPlayerManager extends MiniPlugin
private static final ItemStack GAME_MENU = new ItemBuilder(Material.COMPASS) private static final ItemStack GAME_MENU = new ItemBuilder(Material.COMPASS)
.setTitle(C.cGreen + "Quick Compass") .setTitle(C.cGreen + "Quick Compass")
.addLore("Click to open the Quick Compas.") .addLore("Click to open the Quick Compass.")
.build(); .build();
private static final ItemStack LOBBY_MENU = new ItemBuilder(Material.WATCH) private static final ItemStack LOBBY_MENU = new ItemBuilder(Material.WATCH)
.setTitle(C.cGreen + "Lobby Selector") .setTitle(C.cGreen + "Lobby Selector")

View File

@ -104,7 +104,7 @@ public class DeathTag extends SoloGame
{ {
if (Math.random() < 0.5) if (Math.random() < 0.5)
{ {
MapUtil.QuickChangeBlockAt(location, Material.WOOL, (byte) 15); MapUtil.QuickChangeBlockAt(location, Material.GOLD_BLOCK);
} }
}); });
} }

View File

@ -153,20 +153,12 @@ public class BombLobbers extends TeamGame implements IThrown
public void addKill(Player player) public void addKill(Player player)
{ {
_kills.put(player, _kills.containsKey(player) ? _kills.get(player) + 1 : 1); _kills.put(player, _kills.getOrDefault(player, 0D) + 1);
} }
public double getKills(Player player) public double getKills(Player player)
{ {
if (_kills.containsKey(player)) return _kills.getOrDefault(player, 0D);
{
return _kills.get(player);
}
else
{
_kills.put(player, 0.0);
return 0;
}
} }
@EventHandler @EventHandler

View File

@ -1,17 +1,17 @@
package nautilus.game.arcade.game.games.lobbers.kits; package nautilus.game.arcade.game.games.lobbers.kits;
import java.util.Collections;
import org.bukkit.Material; import org.bukkit.Material;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.ItemStack;
import mineplex.core.common.util.C; import mineplex.core.common.util.C;
import mineplex.core.common.util.UtilInv; import mineplex.core.common.util.UtilInv;
import mineplex.core.common.util.UtilServer;
import mineplex.core.game.kit.GameKit; import mineplex.core.game.kit.GameKit;
import mineplex.core.itemstack.ItemStackFactory; import mineplex.core.itemstack.ItemStackFactory;
import nautilus.game.arcade.ArcadeManager; import nautilus.game.arcade.ArcadeManager;
import nautilus.game.arcade.events.PlayerKitApplyEvent;
import nautilus.game.arcade.game.games.lobbers.kits.perks.PerkCraftman; import nautilus.game.arcade.game.games.lobbers.kits.perks.PerkCraftman;
import nautilus.game.arcade.kit.Kit; import nautilus.game.arcade.kit.Kit;
import nautilus.game.arcade.kit.Perk; import nautilus.game.arcade.kit.Perk;
@ -24,16 +24,19 @@ public class KitArmorer extends Kit
private static final Perk[] PERKS = private static final Perk[] PERKS =
{ {
new PerkDoubleJump("Double Jump", 0.9, 0.9, false), new PerkDoubleJump("Double Jump", 0.9, 0.9, false),
new PerkDummy("Armorer", Collections.singletonList(C.cGray + "Receive " + C.cYellow + "Full Gold Armor").toArray(new String[1])), new PerkDummy("Armorer", new String[]
{
C.cGray + "Receive " + C.cYellow + "Full Iron Armor"
}),
new PerkCraftman(), new PerkCraftman(),
}; };
private static final ItemStack[] PLAYER_ARMOR = private static final ItemStack[] PLAYER_ARMOR =
{ {
ItemStackFactory.Instance.CreateStack(Material.GOLD_BOOTS), ItemStackFactory.Instance.CreateStack(Material.IRON_BOOTS),
ItemStackFactory.Instance.CreateStack(Material.GOLD_LEGGINGS), ItemStackFactory.Instance.CreateStack(Material.IRON_LEGGINGS),
ItemStackFactory.Instance.CreateStack(Material.GOLD_CHESTPLATE), ItemStackFactory.Instance.CreateStack(Material.IRON_CHESTPLATE),
ItemStackFactory.Instance.CreateStack(Material.GOLD_HELMET), ItemStackFactory.Instance.CreateStack(Material.IRON_HELMET),
}; };
public KitArmorer(ArcadeManager manager) public KitArmorer(ArcadeManager manager)
@ -44,6 +47,14 @@ public class KitArmorer extends Kit
@Override @Override
public void ApplyKit(Player player) public void ApplyKit(Player player)
{ {
PlayerKitApplyEvent applyEvent = new PlayerKitApplyEvent(Manager.GetGame(), this, player);
UtilServer.CallEvent(applyEvent);
if (applyEvent.isCancelled())
{
return;
}
UtilInv.Clear(player); UtilInv.Clear(player);
for (Perk perk : GetPerks()) for (Perk perk : GetPerks())

View File

@ -11,11 +11,13 @@ import mineplex.core.common.util.UtilAction;
import mineplex.core.common.util.UtilEvent; import mineplex.core.common.util.UtilEvent;
import mineplex.core.common.util.UtilEvent.ActionType; import mineplex.core.common.util.UtilEvent.ActionType;
import mineplex.core.common.util.UtilInv; import mineplex.core.common.util.UtilInv;
import mineplex.core.common.util.UtilServer;
import mineplex.core.game.kit.GameKit; import mineplex.core.game.kit.GameKit;
import mineplex.core.itemstack.ItemBuilder; import mineplex.core.itemstack.ItemBuilder;
import mineplex.core.itemstack.ItemStackFactory; import mineplex.core.itemstack.ItemStackFactory;
import nautilus.game.arcade.ArcadeManager; import nautilus.game.arcade.ArcadeManager;
import nautilus.game.arcade.events.PlayerKitApplyEvent;
import nautilus.game.arcade.game.games.lobbers.events.TNTThrowEvent; import nautilus.game.arcade.game.games.lobbers.events.TNTThrowEvent;
import nautilus.game.arcade.game.games.lobbers.kits.perks.PerkCraftman; import nautilus.game.arcade.game.games.lobbers.kits.perks.PerkCraftman;
import nautilus.game.arcade.kit.Kit; import nautilus.game.arcade.kit.Kit;
@ -52,6 +54,14 @@ public class KitPitcher extends Kit
@Override @Override
public void ApplyKit(Player player) public void ApplyKit(Player player)
{ {
PlayerKitApplyEvent applyEvent = new PlayerKitApplyEvent(Manager.GetGame(), this, player);
UtilServer.CallEvent(applyEvent);
if (applyEvent.isCancelled())
{
return;
}
UtilInv.Clear(player); UtilInv.Clear(player);
for (Perk perk : GetPerks()) for (Perk perk : GetPerks())

View File

@ -840,9 +840,9 @@ public class TurfForts extends TeamGame
Location nearest = UtilAlg.findClosest(location, averages.keySet()); Location nearest = UtilAlg.findClosest(location, averages.keySet());
if (!averages.get(nearest).equals(team)) if (!averages.get(nearest).equals(team) && Recharge.Instance.use(player, "Spawn Damage", 2000, false, false))
{ {
knockback(player, team); Manager.GetDamage().NewDamageEvent(player, null, null, DamageCause.CUSTOM, _fight ? 2 : 500, false, true, true, GetName(), "Spawn");
} }
} }
} }

View File

@ -21,7 +21,7 @@ public class KitHumanArcher extends Kit
private static final Perk[] PERKS = private static final Perk[] PERKS =
{ {
new PerkDoubleJump("Double Jump", 1.2, 1, true, 4000, true), new PerkDoubleJump("Double Jump", 1.2, 1, true, 6000, true),
new PerkWitherArrowBlind(6), new PerkWitherArrowBlind(6),
new PerkFletcher(4, 4, true), new PerkFletcher(4, 4, true),
}; };

View File

@ -1,37 +1,41 @@
package nautilus.game.arcade.kit.perks; package nautilus.game.arcade.kit.perks;
import mineplex.core.common.util.C; import java.util.HashMap;
import mineplex.core.common.util.F; import java.util.Map;
import mineplex.core.common.util.UtilAction;
import mineplex.core.common.util.UtilBlock;
import mineplex.core.common.util.UtilItem;
import mineplex.core.common.util.UtilPlayer;
import mineplex.core.common.util.UtilServer;
import mineplex.core.recharge.Recharge;
import nautilus.game.arcade.kit.Perk;
import nautilus.game.arcade.kit.perks.event.PerkLeapEvent;
import org.bukkit.Effect; import org.bukkit.Effect;
import org.bukkit.entity.Entity; import org.bukkit.entity.Entity;
import org.bukkit.entity.Horse; import org.bukkit.entity.Horse;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler; import org.bukkit.event.EventHandler;
import org.bukkit.event.block.Action;
import org.bukkit.event.entity.PlayerDeathEvent; import org.bukkit.event.entity.PlayerDeathEvent;
import org.bukkit.event.player.PlayerInteractEvent; import org.bukkit.event.player.PlayerInteractEvent;
import org.bukkit.event.player.PlayerQuitEvent; import org.bukkit.event.player.PlayerQuitEvent;
import org.bukkit.inventory.ItemStack;
import java.util.HashMap; import mineplex.core.common.util.C;
import java.util.Map; import mineplex.core.common.util.F;
import mineplex.core.common.util.UtilAction;
import mineplex.core.common.util.UtilBlock;
import mineplex.core.common.util.UtilEvent;
import mineplex.core.common.util.UtilEvent.ActionType;
import mineplex.core.common.util.UtilItem;
import mineplex.core.common.util.UtilPlayer;
import mineplex.core.common.util.UtilServer;
import mineplex.core.recharge.Recharge;
import nautilus.game.arcade.kit.Perk;
import nautilus.game.arcade.kit.perks.event.PerkLeapEvent;
public class PerkLeap extends Perk public class PerkLeap extends Perk
{ {
private String _name;
private double _power;
private double _heightMax;
private long _recharge;
private int _maxUses;
private Map<String, Integer> _uses = new HashMap<>(); private final String _name;
private final double _power, _heightMax;
private final long _recharge;
private final int _maxUses;
private final Map<String, Integer> _uses = new HashMap<>();
public PerkLeap(String name, double power, double heightLimit, long recharge) public PerkLeap(String name, double power, double heightLimit, long recharge)
{ {
@ -61,36 +65,28 @@ public class PerkLeap extends Perk
_maxUses = uses; _maxUses = uses;
} }
@EventHandler @EventHandler(ignoreCancelled = true)
public void Leap(PlayerInteractEvent event) public void Leap(PlayerInteractEvent event)
{ {
if (event.isCancelled()) if (!UtilEvent.isAction(event, ActionType.R) || UtilBlock.usable(event.getClickedBlock()))
return; {
if (event.getAction() != Action.RIGHT_CLICK_AIR && event.getAction() != Action.RIGHT_CLICK_BLOCK)
return;
if (UtilBlock.usable(event.getClickedBlock()))
return;
if (event.getPlayer().getItemInHand() == null)
return;
if (!UtilItem.isAxe(event.getPlayer().getItemInHand()))
return; return;
}
Player player = event.getPlayer(); Player player = event.getPlayer();
ItemStack itemStack = player.getItemInHand();
if (!hasPerk(player)) if (itemStack == null || !UtilItem.isAxe(itemStack) || !hasPerk(player))
{
return; return;
}
//Check Uses //Check Uses
if (_maxUses > 0) if (_maxUses > 0)
{ {
if (!_uses.containsKey(player.getName())) int count = _uses.computeIfAbsent(player.getName(), k -> _maxUses);
_uses.put(player.getName(), _maxUses);
if (_uses.get(player.getName()) <= 0) if (count <= 0)
{ {
UtilPlayer.message(player, F.main("Skill", "You cannot use " + F.skill(_name) + " anymore.")); UtilPlayer.message(player, F.main("Skill", "You cannot use " + F.skill(_name) + " anymore."));
return; return;
@ -99,7 +95,9 @@ public class PerkLeap extends Perk
//Energy //Energy
if (!Recharge.Instance.use(player, _name, _recharge, false, true)) if (!Recharge.Instance.use(player, _name, _recharge, false, true))
{
return; return;
}
//Use Use //Use Use
if (_maxUses > 0) if (_maxUses > 0)
@ -108,6 +106,7 @@ public class PerkLeap extends Perk
count--; count--;
player.setExp(Math.min(0.99f, (float)count/(float)_maxUses)); player.setExp(Math.min(0.99f, (float)count/(float)_maxUses));
player.getItemInHand().setAmount(count);
_uses.put(player.getName(), count); _uses.put(player.getName(), count);
} }
@ -142,6 +141,27 @@ public class PerkLeap extends Perk
_uses.remove(event.getEntity().getName()); _uses.remove(event.getEntity().getName());
} }
@Override
public void registeredEvents()
{
for (Player player : Manager.GetGame().GetPlayers(true))
{
if (!hasPerk(player))
{
continue;
}
for (ItemStack itemStack : player.getInventory().getContents())
{
if (UtilItem.isAxe(itemStack))
{
itemStack.setAmount(_maxUses);
break;
}
}
}
}
@Override @Override
public void unregisteredEvents() public void unregisteredEvents()
{ {