Skip to content

Commit b493942

Browse files
committed
fix bug:unexpected exception when forceFakePlayerGameMode
1 parent 655d098 commit b493942

File tree

2 files changed

+40
-6
lines changed

2 files changed

+40
-6
lines changed

src/main/java/io/github/optijava/opt_carpet_addition/OptCarpetAddition.java

Lines changed: 38 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -25,18 +25,35 @@ public class OptCarpetAddition implements CarpetExtension, ModInitializer {
2525
@Override
2626
public void onInitialize() {
2727
CarpetServer.manageExtension(additionInstance);
28-
28+
2929
ServerEntityWorldChangeEvents.AFTER_PLAYER_CHANGE_WORLD.register(new FixExperienceBug());
3030
}
3131

3232
@Override
3333
public void onGameStarted() {
3434
CarpetServer.settingsManager.parseSettingsClass(OptCarpetSettings.class);
3535
CarpetServer.settingsManager.addRuleObserver(((serverCommandSource, rule, s) -> {
36-
if (Objects.equals(rule.name, "forceFakePlayerGameMode")) {
36+
if (Objects.equals(rule.name, "forceFakePlayerGameMode") && !Objects.equals(OptCarpetSettings.forceFakePlayerGameMode, "false")) {
37+
GameMode gameMode = GameMode.SURVIVAL;
38+
39+
switch (OptCarpetSettings.forceFakePlayerGameMode) {
40+
case "survival": {
41+
gameMode = GameMode.SURVIVAL;
42+
break;
43+
}
44+
case "creative": {
45+
gameMode = GameMode.CREATIVE;
46+
break;
47+
}
48+
case "adventure": {
49+
gameMode = GameMode.ADVENTURE;
50+
break;
51+
}
52+
}
53+
3754
for (ServerPlayerEntity player : serverCommandSource.getMinecraftServer().getPlayerManager().getPlayerList()) {
3855
if (player instanceof EntityPlayerMPFake) {
39-
player.setGameMode(GameMode.valueOf(OptCarpetSettings.forceFakePlayerGameMode));
56+
player.setGameMode(gameMode);
4057
}
4158
}
4259
}
@@ -52,7 +69,24 @@ public void registerCommands(CommandDispatcher<ServerCommandSource> dispatcher)
5269
@Override
5370
public void onPlayerLoggedIn(ServerPlayerEntity player) {
5471
if (player instanceof EntityPlayerMPFake && !(Objects.equals(OptCarpetSettings.forceFakePlayerGameMode, "false"))) {
55-
player.setGameMode(GameMode.valueOf(OptCarpetSettings.forceFakePlayerGameMode));
72+
GameMode gameMode = GameMode.SURVIVAL;
73+
74+
switch (OptCarpetSettings.forceFakePlayerGameMode) {
75+
case "survival": {
76+
gameMode = GameMode.SURVIVAL;
77+
break;
78+
}
79+
case "creative": {
80+
gameMode = GameMode.CREATIVE;
81+
break;
82+
}
83+
case "adventure": {
84+
gameMode = GameMode.ADVENTURE;
85+
break;
86+
}
87+
}
88+
89+
player.setGameMode(gameMode);
5690
}
5791
}
5892
}

src/main/java/io/github/optijava/opt_carpet_addition/OptCarpetSettings.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ public class OptCarpetSettings {
3939
@Rule(
4040
desc = "Force fake player gamemode",
4141
category = RuleCategory.FEATURE,
42-
options = {"survival", "creative", "adventure", "spectator", "false"}
42+
options = {"survival", "creative", "adventure", "false"}
4343
)
4444
public static String forceFakePlayerGameMode = "false";
4545

@@ -49,5 +49,5 @@ public class OptCarpetSettings {
4949
category = RuleCategory.BUGFIX
5050
)
5151
public static boolean fixXpLevelBug = false;
52-
52+
5353
}

0 commit comments

Comments
 (0)