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

Complexity

Total Complexity 2

Size/Duplication

Total Lines 28
Duplicated Lines 100 %

Importance

Changes 0
Metric Value
eloc 17
dl 28
loc 28
rs 10
c 0
b 0
f 0
wmc 2

1 Method

Rating   Name   Duplication   Size   Complexity  
A receive(MinecraftServer,ServerPlayerEntity,ServerPlayNetworkHandler,PacketByteBuf,PacketSender) 27 27 2

How to fix   Duplicated Code   

Duplicated Code

Duplicate code is one of the most pungent code smells. A rule that is often used is to re-structure code once it is duplicated in three or more places.

Common duplication problems, and corresponding solutions are:

1
package de.pewpewproject.lasertag.networking.server.callbacks;
2
3
import de.pewpewproject.lasertag.LasertagMod;
4
import net.fabricmc.fabric.api.networking.v1.PacketSender;
5
import net.fabricmc.fabric.api.networking.v1.ServerPlayNetworking;
6
import net.minecraft.network.PacketByteBuf;
7
import net.minecraft.server.MinecraftServer;
8
import net.minecraft.server.network.ServerPlayNetworkHandler;
9
import net.minecraft.server.network.ServerPlayerEntity;
10
11
import java.util.Optional;
12
13
/**
14
 * Callback for the client trigger reload team config network event
15
 *
16
 * @author Étienne Muser
17
 */
18 View Code Duplication
public class ClientTriggerReloadTeamConfigCallback implements ServerPlayNetworking.PlayChannelHandler {
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated in your project.
Loading history...
19
    @Override
20
    public void receive(MinecraftServer server, ServerPlayerEntity player, ServerPlayNetworkHandler handler, PacketByteBuf buf, PacketSender responseSender) {
21
22
        try {
23
24
            // Get the game managers
25
            var gameManager = server.getOverworld().getServerLasertagManager();
26
            var teamsManager = gameManager.getTeamsManager();
27
            var playerNamesState = gameManager.getSyncedState().getPlayerNamesState();
28
29
            server.execute(() -> {
30
31
                var world = server.getOverworld();
32
33
                // Throw every player out of his team
34
                playerNamesState.forEachPlayer((playerUuid) -> {
35
                    teamsManager.playerLeaveHisTeam(playerUuid);
36
37
                    var playerOptional = Optional.ofNullable(world.getPlayerByUuid(playerUuid));
38
                    playerOptional.ifPresent(playerEntity -> playerEntity.getInventory().clear());
39
                });
40
41
                teamsManager.reloadTeamsConfig();
42
            });
43
        } catch (Exception ex) {
44
            LasertagMod.LOGGER.error("Error in ClientTriggerReloadTeamConfigCallback", ex);
45
            throw ex;
46
        }
47
    }
48
}
49