de.pewpewproject.lasertag.networking.server.callbacks.ClientTriggerLoadMapCallback   A
last analyzed

Complexity

Total Complexity 4

Size/Duplication

Total Lines 35
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
eloc 21
dl 0
loc 35
rs 10
c 0
b 0
f 0
wmc 4

1 Method

Rating   Name   Duplication   Size   Complexity  
A receive(MinecraftServer,ServerPlayerEntity,ServerPlayNetworkHandler,PacketByteBuf,PacketSender) 0 34 4
1
package de.pewpewproject.lasertag.networking.server.callbacks;
2
3
import de.pewpewproject.lasertag.LasertagMod;
4
import de.pewpewproject.lasertag.worldgen.chunkgen.type.ArenaType;
5
import de.pewpewproject.lasertag.worldgen.chunkgen.type.ProceduralArenaType;
6
import net.fabricmc.fabric.api.networking.v1.PacketSender;
7
import net.fabricmc.fabric.api.networking.v1.ServerPlayNetworking;
8
import net.minecraft.network.PacketByteBuf;
9
import net.minecraft.server.MinecraftServer;
10
import net.minecraft.server.network.ServerPlayNetworkHandler;
11
import net.minecraft.server.network.ServerPlayerEntity;
12
13
import java.util.Arrays;
14
import java.util.Optional;
15
16
/**
17
 * Callback for the client trigger load map network event
18
 *
19
 * @author Étienne Muser
20
 */
21
public class ClientTriggerLoadMapCallback implements ServerPlayNetworking.PlayChannelHandler {
22
    @Override
23
    public void receive(MinecraftServer server, ServerPlayerEntity player, ServerPlayNetworkHandler handler, PacketByteBuf buf, PacketSender responseSender) {
24
25
        try {
26
27
            // Get the game managers
28
            var gameManager = server.getOverworld().getServerLasertagManager();
29
            var arenaManager = gameManager.getArenaManager();
30
31
            // Get the arena name
32
            var mapTranslatableName = buf.readString();
33
34
            var arenaTypeOptional = Arrays.stream(ArenaType.values())
35
                    .filter(m -> m.translatableName.equals(mapTranslatableName))
36
                    .findFirst();
37
38
            var proceduralTypeOptional = Arrays.stream(ProceduralArenaType.values())
39
                    .filter(m -> m.translatableName.equals(mapTranslatableName))
40
                    .findFirst();
41
42
            // If is procedural map
43
            if (proceduralTypeOptional.isPresent()) {
44
                arenaTypeOptional = Optional.of(ArenaType.PROCEDURAL);
45
            }
46
47
            if (arenaTypeOptional.isEmpty()) {
48
49
                return;
50
            }
51
52
            arenaManager.loadArena(arenaTypeOptional.get(), proceduralTypeOptional.orElse(ProceduralArenaType.SMALL_2V2));
53
        } catch (Exception ex) {
54
            LasertagMod.LOGGER.error("Error in ClientTriggerLoadMapCallback", ex);
55
            throw ex;
56
        }
57
    }
58
}
59