Skip to content

Commit 0df7702

Browse files
authored
Fixed class casting (CustomMatch -> Match) (#122)
* Fixed class casting (CustomMatch -> Match) * Added .copyFrom methods for Arenas and Kits * Changed start match usage * Moved copyFrom methods to services * Now using virtual arenas system
1 parent faa48cd commit 0df7702

File tree

5 files changed

+49
-4
lines changed

5 files changed

+49
-4
lines changed
Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package dev.lrxh.api.match;
22

3+
import org.bukkit.entity.Player;
4+
35
public interface IMatchService {
4-
void startMatch(IMatch match);
6+
void startMatch(IMatch match, Player redPlayer, Player bluePlayer);
57
}

Plugin/src/main/java/dev/lrxh/neptune/game/arena/ArenaService.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -109,6 +109,9 @@ public Arena getArenaByName(String arenaName) {
109109
return null;
110110
}
111111

112+
public Arena copyFrom(IArena arena) {
113+
return new Arena(arena.getName(), arena.getDisplayName(), arena.getRedSpawn(), arena.getBlueSpawn(), arena.getMin(), arena.getMax(), arena.getBuildLimit(), arena.isEnabled(), arena.getWhitelistedBlocks(), arena.getDeathY());
114+
}
112115

113116
@Override
114117
public ConfigFile getConfigFile() {

Plugin/src/main/java/dev/lrxh/neptune/game/kit/Kit.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import dev.lrxh.api.kit.IKitRule;
66
import dev.lrxh.neptune.API;
77
import dev.lrxh.neptune.game.arena.Arena;
8+
import dev.lrxh.neptune.game.arena.ArenaService;
89
import dev.lrxh.neptune.game.arena.VirtualArena;
910
import dev.lrxh.neptune.game.kit.impl.KitRule;
1011
import dev.lrxh.neptune.game.match.impl.participant.Participant;

Plugin/src/main/java/dev/lrxh/neptune/game/kit/KitService.java

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -159,4 +159,21 @@ public ConfigFile getConfigFile() {
159159
public LinkedHashSet<IKit> getAllKits() {
160160
return new LinkedHashSet<>(kits);
161161
}
162+
163+
public Kit copyFrom(IKit kit) {
164+
return new Kit(
165+
kit.getName(),
166+
kit.getDisplayName(),
167+
kit.getItems(),
168+
kit.getAllArenas().stream().map(ArenaService.get()::copyFrom).collect(HashSet::new, HashSet::add, HashSet::addAll),
169+
kit.getIcon(),
170+
kit.getRule().entrySet().stream().collect(HashMap::new,
171+
(map, entry) -> map.put((KitRule) entry.getKey(), entry.getValue()), HashMap::putAll),
172+
kit.getSlot(),
173+
kit.getHealth(),
174+
kit.getKitEditorSlot(),
175+
kit.getPotionEffects(),
176+
kit.getDamageMultiplier()
177+
);
178+
}
162179
}

Plugin/src/main/java/dev/lrxh/neptune/game/match/MatchService.java

Lines changed: 25 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,14 @@
33
import dev.lrxh.api.events.MatchReadyEvent;
44
import dev.lrxh.api.match.IMatch;
55
import dev.lrxh.api.match.IMatchService;
6+
import dev.lrxh.api.match.participant.IParticipant;
67
import dev.lrxh.neptune.API;
78
import dev.lrxh.neptune.Neptune;
9+
import dev.lrxh.neptune.game.arena.Arena;
10+
import dev.lrxh.neptune.game.arena.ArenaService;
811
import dev.lrxh.neptune.game.arena.VirtualArena;
912
import dev.lrxh.neptune.game.kit.Kit;
13+
import dev.lrxh.neptune.game.kit.KitService;
1014
import dev.lrxh.neptune.game.match.impl.ffa.FfaFightMatch;
1115
import dev.lrxh.neptune.game.match.impl.participant.Participant;
1216
import dev.lrxh.neptune.game.match.impl.participant.ParticipantColor;
@@ -19,6 +23,7 @@
1923
import org.bukkit.entity.Player;
2024

2125
import java.util.*;
26+
import java.util.stream.Collectors;
2227

2328
public class MatchService implements IMatchService {
2429
private static MatchService instance;
@@ -96,7 +101,7 @@ public void startMatch(List<Participant> participants, Kit kit, VirtualArena are
96101
}
97102

98103
@Override
99-
public void startMatch(IMatch match) {
104+
public void startMatch(IMatch match, Player redPlayer, Player bluePlayer) {
100105
if (!Neptune.get().isAllowMatches()) return;
101106
MatchReadyEvent event = new MatchReadyEvent(match);
102107

@@ -105,8 +110,25 @@ public void startMatch(IMatch match) {
105110
return;
106111
}
107112

108-
matches.add((Match) match);
109-
new MatchStartRunnable((Match) match).start(0L, 20L);
113+
List<Participant> participants = new ArrayList<>();
114+
for (IParticipant participant : match.getParticipants()) {
115+
participants.add((Participant) participant);
116+
}
117+
118+
ArenaService.get().copyFrom(match.getArena()).createDuplicate().thenAccept(virtualArena ->{
119+
Match neptuneMatch = new SoloFightMatch(
120+
virtualArena,
121+
KitService.get().copyFrom(match.getKit()),
122+
true,
123+
new ArrayList<>(),
124+
new Participant(redPlayer),
125+
new Participant(bluePlayer),
126+
1
127+
);
128+
129+
matches.add(neptuneMatch);
130+
new MatchStartRunnable(neptuneMatch).start(0L, 20L);
131+
});
110132
}
111133

112134
public Optional<Match> getMatch(Player player) {

0 commit comments

Comments
 (0)