--- title: gamemode tags: content, MCEA, technology --- # /gamemode:修改玩家遊戲模式 ### 原始碼 ```java public static void register(CommandDispatcher<CommandSource> dispatcher) { LiteralArgumentBuilder<CommandSource> literalargumentbuilder = Commands.literal("gamemode").requires((p_198485_0_) -> { return p_198485_0_.hasPermissionLevel(2); }); for(GameType gametype : GameType.values()) { if (gametype != GameType.NOT_SET) { literalargumentbuilder.then(Commands.literal(gametype.getName()).executes((p_198483_1_) -> { return setGameMode(p_198483_1_, Collections.singleton(p_198483_1_.getSource().asPlayer()), gametype); }).then(Commands.argument("target", EntityArgument.players()).executes((p_198486_1_) -> { return setGameMode(p_198486_1_, EntityArgument.getPlayers(p_198486_1_, "target"), gametype); }))); } } dispatcher.register(literalargumentbuilder); } private static void sendGameModeFeedback(CommandSource source, ServerPlayerEntity player, GameType gameTypeIn) { ITextComponent itextcomponent = new TranslationTextComponent("gameMode." + gameTypeIn.getName()); if (source.getEntity() == player) { source.sendFeedback(new TranslationTextComponent("commands.gamemode.success.self", itextcomponent), true); } else { if (source.getWorld().getGameRules().getBoolean(GameRules.SEND_COMMAND_FEEDBACK)) { player.sendMessage(new TranslationTextComponent("gameMode.changed", itextcomponent), Util.DUMMY_UUID); } source.sendFeedback(new TranslationTextComponent("commands.gamemode.success.other", player.getDisplayName(), itextcomponent), true); } } private static int setGameMode(CommandContext<CommandSource> source, Collection<ServerPlayerEntity> players, GameType gameTypeIn) { int i = 0; for(ServerPlayerEntity serverplayerentity : players) { if (serverplayerentity.interactionManager.getGameType() != gameTypeIn) { serverplayerentity.setGameType(gameTypeIn); sendGameModeFeedback(source.getSource(), serverplayerentity, gameTypeIn); ++i; } } return i; } ``` ### 對原始碼進行解析 ###