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

Complexity

Total Complexity 2

Size/Duplication

Total Lines 32
Duplicated Lines 100 %

Importance

Changes 0
Metric Value
eloc 19
dl 32
loc 32
rs 10
c 0
b 0
f 0
wmc 2

1 Method

Rating   Name   Duplication   Size   Complexity  
A receive(MinecraftServer,ServerPlayerEntity,ServerPlayNetworkHandler,PacketByteBuf,PacketSender) 30 30 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 reset team config network event
15
 *
16
 * @author Étienne Muser
17
 */
18 View Code Duplication
public class ClientTriggerResetTeamConfigCallback implements ServerPlayNetworking.PlayChannelHandler {
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated in your project.
Loading history...
19
20
    @Override
21
    public void receive(MinecraftServer server, ServerPlayerEntity player, ServerPlayNetworkHandler handler, PacketByteBuf buf, PacketSender responseSender) {
22
23
        try {
24
25
            // Get the game managers
26
            var gameManager = server.getOverworld().getServerLasertagManager();
27
            var teamsManager = gameManager.getTeamsManager();
28
            var syncedState = gameManager.getSyncedState();
29
            var teamsConfigState = syncedState.getTeamsConfigState();
30
            var playerNamesState = gameManager.getSyncedState().getPlayerNamesState();
31
32
            server.execute(() -> {
33
34
                var world = server.getOverworld();
35
36
                // Throw every player out of his team
37
                playerNamesState.forEachPlayer((playerUuid) -> {
38
                    teamsManager.playerLeaveHisTeam(playerUuid);
39
40
                    var playerOptional = Optional.ofNullable(world.getPlayerByUuid(playerUuid));
41
                    playerOptional.ifPresent(playerEntity -> playerEntity.getInventory().clear());
42
                });
43
44
                teamsConfigState.reset();
45
            });
46
        } catch (Exception ex) {
47
48
            LasertagMod.LOGGER.error("Error in ClientTriggerResetTeamConfigCallback", ex);
49
            throw ex;
50
        }
51
    }
52
}
53