Skip to content

Commit 9abf670

Browse files
committed
WindLeaf来力
1 parent 95fe878 commit 9abf670

File tree

10 files changed

+37
-35
lines changed

10 files changed

+37
-35
lines changed

src/main/java/top/mpt/xzystudio/flywars/game/gui/GuiManager.java

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ public class GuiManager {
3232
* @return TeamInfo
3333
*/
3434
private static TeamInfo getInfo(Player player){
35-
GameTeam team = GameUtils.getTeam(player, null);
35+
GameTeam team = GameUtils.getTeamByPlayer(player, null);
3636
return team != null ? ScoreboardManager.info.get(team) : null;
3737
}
3838

@@ -59,10 +59,8 @@ public static void openGui(Player player) {
5959
}
6060

6161
Inventory inv = Bukkit.createInventory(player, InventoryType.CHEST, title);
62-
items.forEach(it -> {
63-
inv.addItem(it.getItem());
64-
});
65-
GameTeam team = GameUtils.getTeam(player, null);
62+
items.forEach(it -> inv.addItem(it.getItem()));
63+
GameTeam team = GameUtils.getTeamByPlayer(player, null);
6664
List<String> lores = Arrays.asList("#GREEN#击杀数:" + info.getKillCount(), "#AQUA#所属队伍:" + (team != null ? team.getTeamDisplayName() : "[无法获取]"));
6765
inv.setItem(22, GameUtils.newItem(Material.PLAYER_HEAD, "#YELLOW#" + player.getName(), lores, 1, false, 0, null));
6866
player.openInventory(inv);
@@ -73,7 +71,7 @@ public static void processClick(InventoryClickEvent event) {
7371
if (rawSlot >= items.size()) return;
7472
GuiItem item = items.get(rawSlot);
7573
Player p = (Player) event.getWhoClicked();
76-
GameTeam team = GameUtils.getTeam(p, null);
74+
GameTeam team = GameUtils.getTeamByPlayer(p, null);
7775
TeamInfo info = ScoreboardManager.info.get(team);
7876

7977
event.getClickedInventory().addItem(item.item);

src/main/java/top/mpt/xzystudio/flywars/game/items/ArrowEntry.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,8 @@ public Object get(String string, Object... defaultValue){
2222
}
2323
String path = info.path();
2424
Object ob = ConfigUtils.getConfig(String.format("arrow.%s.%s", path, string));
25-
if (ob == null){
26-
ob = ConfigUtils.getConfig("arrow.default."+string, defaultValue);
25+
if (ob == null) {
26+
ob = ConfigUtils.getConfig("arrow.default." + string, defaultValue);
2727
}
2828
return ob;
2929
}

src/main/java/top/mpt/xzystudio/flywars/game/items/arrows/ExplosiveArrow.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
import top.mpt.xzystudio.flywars.game.items.ArrowEntry;
88
import top.mpt.xzystudio.flywars.game.items.ArrowInfo;
99

10-
@ArrowInfo(name = "#DARK_RED#爆炸箭", path="explosive")
10+
@ArrowInfo(name = "#DARK_RED#爆炸箭", path = "explosive")
1111
public class ExplosiveArrow extends ArrowEntry {
1212
@Override
1313
public void run(Player shooter, Player entity, Arrow arrow) {

src/main/java/top/mpt/xzystudio/flywars/game/items/arrows/FireArrow.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,6 @@
1010
public class FireArrow extends ArrowEntry {
1111
@Override
1212
public void run(Player shooter, Player entity, Arrow arrow) {
13-
GameUtils.getTeam(entity, t -> t.players.keySet().forEach(player -> player.setFireTicks((Integer) get("ticks"))));
13+
GameUtils.getTeamByPlayer(entity, t -> t.players.keySet().forEach(player -> player.setFireTicks((Integer) get("ticks"))));
1414
}
1515
}

src/main/java/top/mpt/xzystudio/flywars/game/items/arrows/FlagArrow.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,7 @@
55
import top.mpt.xzystudio.flywars.game.items.ArrowEntry;
66
import top.mpt.xzystudio.flywars.game.items.ArrowInfo;
77

8-
// TODO 光灵箭不是默认就可以标记玩家吗?
9-
@ArrowInfo(name = "#YELLOW#标记箭", path="flag")
8+
@ArrowInfo(name = "#YELLOW#标记箭", path = "flag")
109
public class FlagArrow extends ArrowEntry {
1110
@Override
1211
public void run(Player shooter, Player entity, Arrow arrow) {

src/main/java/top/mpt/xzystudio/flywars/game/items/arrows/SlowArrow.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,11 @@
88
import top.mpt.xzystudio.flywars.game.items.ArrowInfo;
99
import top.mpt.xzystudio.flywars.utils.GameUtils;
1010

11-
// TODO 在空中飞行怎么缓慢?
12-
@ArrowInfo(name = "#AQUA#寒冰箭", path="slow")
11+
@ArrowInfo(name = "#AQUA#寒冰箭", path = "slow")
1312
public class SlowArrow extends ArrowEntry {
1413
@Override
1514
public void run(Player shooter, Player entity, Arrow arrow) {
16-
GameUtils.getTeam(entity, t -> t.players.keySet().forEach(player -> player.addPotionEffect(
15+
GameUtils.getTeamByPlayer(entity, t -> t.players.keySet().forEach(player -> player.addPotionEffect(
1716
new PotionEffect(PotionEffectType.SLOW, (Integer) get("duration"), (Integer) get("amplifier"))
1817
)));
1918
}

src/main/java/top/mpt/xzystudio/flywars/game/items/arrows/TeleportArrow.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ public class TeleportArrow extends ArrowEntry {
1212
@Override
1313
public void run(Player shooter, Player entity, Arrow arrow){
1414
// 获取到P1(被骑乘者)
15-
GameUtils.getTeam(entity, team -> {
15+
GameUtils.getTeamByPlayer(entity, team -> {
1616
Player p1 = team.getP1();
1717
// 传送被骑乘者到射击者那里 - 如果直接传送entity会造成entity从p1身上掉下来
1818
p1.teleport(shooter.getLocation());

src/main/java/top/mpt/xzystudio/flywars/listeners/GameEventListener.java

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -76,9 +76,7 @@ public void onGameOver(GameOverEvent event) {
7676
if (Game.resUpdater != null) Game.resUpdater.cancel();
7777
// 清除世界内的掉落物
7878
event.getWinner().getP1().getWorld().getEntities().forEach(it -> {
79-
if (it.getType() == EntityType.DROPPED_ITEM){
80-
it.remove();
81-
}
79+
if (it.getType() == EntityType.DROPPED_ITEM) it.remove();
8280
});
8381
// 遍历teams数组
8482
Game.teams.forEach(team -> {

src/main/java/top/mpt/xzystudio/flywars/listeners/PlayerEventListener.java

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
import org.spigotmc.event.entity.EntityDismountEvent;
1212
import top.mpt.xzystudio.flywars.events.TeamEliminatedEvent;
1313
import top.mpt.xzystudio.flywars.game.Game;
14+
import top.mpt.xzystudio.flywars.game.gui.GuiItem;
1415
import top.mpt.xzystudio.flywars.game.gui.GuiManager;
1516
import top.mpt.xzystudio.flywars.game.team.GameTeam;
1617
import top.mpt.xzystudio.flywars.utils.GameUtils;
@@ -28,7 +29,7 @@ public void onPlayerQuit(PlayerQuitEvent event) {
2829
// 当玩家退出游戏时
2930
// 拿到玩家
3031
Player p = event.getPlayer();
31-
GameUtils.getTeam(p, team -> {
32+
GameUtils.getTeamByPlayer(p, team -> {
3233
Player op = team.getTheOtherPlayer(p);
3334
PlayerUtils.send(op, "[FlyWars] #RED#你的队友退出了游戏!");
3435
TeamEliminatedEvent eliminatedEvent = new TeamEliminatedEvent(p, team, null);
@@ -41,7 +42,7 @@ public void onEntityDamage(EntityDamageByEntityEvent event) {
4142
// 当玩家被其他玩家打的时候
4243
if (event.getEntity().getType() == EntityType.PLAYER){
4344
Player p = (Player) event.getEntity();
44-
GameUtils.getTeam(p, t -> Game.scoreboardManager.renderScoreboard());
45+
GameUtils.getTeamByPlayer(p, t -> Game.scoreboardManager.renderScoreboard());
4546
}
4647

4748
if (event.getDamager().getType() == EntityType.SPECTRAL_ARROW){
@@ -53,12 +54,9 @@ public void onEntityDamage(EntityDamageByEntityEvent event) {
5354
}
5455
Player p = (Player) event.getEntity();
5556
Arrow arrow = (Arrow) event.getDamager();
56-
57-
GuiManager.items.forEach(it -> {
58-
if (Objects.equals(it.name, arrow.getName())){
59-
it.process.run(pShoot, p, arrow);
60-
}
61-
});
57+
58+
GuiItem item = GameUtils.find(GuiManager.items, i -> Objects.equals(i.name, arrow.getName()));
59+
if (item != null) item.process.run(pShoot, p, arrow);
6260
}
6361
}
6462

@@ -92,7 +90,7 @@ public void onPlayerDeath(PlayerDeathEvent event) {
9290
}
9391
} else {
9492
LoggerUtils.info("#RED#未获取到击杀者!");
95-
GameUtils.getTeam(p, team -> {
93+
GameUtils.getTeamByPlayer(p, team -> {
9694
TeamEliminatedEvent eliminatedEvent = new TeamEliminatedEvent(p, team, null);
9795
GameUtils.callEvent(eliminatedEvent);
9896
});
@@ -129,7 +127,7 @@ public void onEntityDismount(EntityDismountEvent event) {
129127
public void onEntityShootBow(EntityShootBowEvent event) {
130128
Entity entity = event.getEntity();
131129
if (entity.getType() == EntityType.PLAYER) {
132-
GameUtils.getTeam((Player) entity, t -> event.getProjectile().setCustomName(event.getEntity().getName()));
130+
GameUtils.getTeamByPlayer((Player) entity, t -> event.getProjectile().setCustomName(event.getEntity().getName()));
133131
}
134132
}
135133
}

src/main/java/top/mpt/xzystudio/flywars/utils/GameUtils.java

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -73,17 +73,27 @@ public static ItemStack newItem(Material type, String displayName, int amount){
7373
return newItem(type, displayName, Collections.emptyList(), amount, false, 0, null);
7474
}
7575

76+
/**
77+
* 根据所给的条件找到对应的对象
78+
* @param function 判断匿名函数
79+
* @return 对象,不存在则为 `null`
80+
* @param <T> 对象泛型
81+
*/
82+
public static <T> T find(Collection<T> collection, Function<T, Boolean> function) {
83+
AtomicReference<T> result = new AtomicReference<>();
84+
collection.forEach(t -> {
85+
if (function.apply(t)) result.set(t);
86+
});
87+
return result.get();
88+
}
89+
7690
/**
7791
* 根据所给的条件找到对应的游戏队伍对象
7892
* @param function 判断匿名函数
7993
* @return 游戏队伍对象,不存在则为 `null`
8094
*/
8195
public static GameTeam getTeamBy(Function<GameTeam, Boolean> function) {
82-
AtomicReference<GameTeam> result = new AtomicReference<>();
83-
Game.teams.forEach(team -> {
84-
if (function.apply(team)) result.set(team);
85-
});
86-
return result.get();
96+
return find(Game.teams, function);
8797
}
8898

8999
/**
@@ -92,7 +102,7 @@ public static GameTeam getTeamBy(Function<GameTeam, Boolean> function) {
92102
* @param consumer 获取游戏队伍后要做的事情
93103
* @return 游戏队伍对象,不存在则为 `null`
94104
*/
95-
public static GameTeam getTeam(Player player, Consumer<GameTeam> consumer) {
105+
public static GameTeam getTeamByPlayer(Player player, Consumer<GameTeam> consumer) {
96106
GameTeam team = getTeamBy(t -> t.isPlayerInTeam(player));
97107
if (consumer != null) consumer.accept(team);
98108
return team;

0 commit comments

Comments
 (0)