GameRuleRegistryFix.java

net.minecraft.util.datafix.fixes.GameRuleRegistryFix

信息

  • 全限定名:net.minecraft.util.datafix.fixes.GameRuleRegistryFix
  • 类型:public class
  • 包:net.minecraft.util.datafix.fixes
  • 源码路径:src/main/java/net/minecraft/util/datafix/fixes/GameRuleRegistryFix.java
  • 起始行号:L10
  • 继承:DataFix
  • 职责:

    TODO

字段/常量

内部类/嵌套类型

构造器

public GameRuleRegistryFix(Schema outputSchema) @ L11

  • 构造器名:GameRuleRegistryFix
  • 源码定位:L11
  • 修饰符:public

参数:

  • outputSchema: Schema

说明:

TODO

方法

下面的方法块按源码顺序生成。

protected TypeRewriteRule makeRule() @ L15

  • 方法名:makeRule
  • 源码定位:L15
  • 返回类型:TypeRewriteRule
  • 修饰符:protected

参数:

说明:

TODO

private static Dynamic<?> convertInteger(Dynamic<?> oldValue) @ L117

  • 方法名:convertInteger
  • 源码定位:L117
  • 返回类型:Dynamic<?>
  • 修饰符:private static

参数:

  • oldValue: Dynamic<?>

说明:

TODO

private static Dynamic<?> convertInteger(Dynamic<?> oldValue, int min) @ L121

  • 方法名:convertInteger
  • 源码定位:L121
  • 返回类型:Dynamic<?>
  • 修饰符:private static

参数:

  • oldValue: Dynamic<?>
  • min: int

说明:

TODO

private static Dynamic<?> convertInteger(Dynamic<?> oldValue, int min, int max) @ L125

  • 方法名:convertInteger
  • 源码定位:L125
  • 返回类型:Dynamic<?>
  • 修饰符:private static

参数:

  • oldValue: Dynamic<?>
  • min: int
  • max: int

说明:

TODO

private static Dynamic<?> convertBoolean(Dynamic<?> oldValue) @ L136

  • 方法名:convertBoolean
  • 源码定位:L136
  • 返回类型:Dynamic<?>
  • 修饰符:private static

参数:

  • oldValue: Dynamic<?>

说明:

TODO

private static Dynamic<?> convertBooleanInverted(Dynamic<?> oldValue) @ L140

  • 方法名:convertBooleanInverted
  • 源码定位:L140
  • 返回类型:Dynamic<?>
  • 修饰符:private static

参数:

  • oldValue: Dynamic<?>

说明:

TODO

代码

public class GameRuleRegistryFix extends DataFix {
    public GameRuleRegistryFix(Schema outputSchema) {
        super(outputSchema, false);
    }
 
    @Override
    protected TypeRewriteRule makeRule() {
        return this.fixTypeEverywhereTyped(
            "GameRuleRegistryFix",
            this.getInputSchema().getType(References.LEVEL),
            input -> input.update(
                DSL.remainderFinder(),
                tag -> tag.renameAndFixField(
                    "GameRules",
                    "game_rules",
                    gameRules -> {
                        boolean doFireTick = Boolean.parseBoolean(gameRules.get("doFireTick").asString("true"));
                        boolean allowFireTicksAwayFromPlayer = Boolean.parseBoolean(gameRules.get("allowFireTicksAwayFromPlayer").asString("false"));
                        int fireSpreadRadius;
                        if (!doFireTick) {
                            fireSpreadRadius = 0;
                        } else if (!allowFireTicksAwayFromPlayer) {
                            fireSpreadRadius = 128;
                        } else {
                            fireSpreadRadius = -1;
                        }
 
                        if (fireSpreadRadius != 128) {
                            gameRules = gameRules.set("minecraft:fire_spread_radius_around_player", gameRules.createInt(fireSpreadRadius));
                        }
 
                        return gameRules.remove("spawnChunkRadius")
                            .remove("entitiesWithPassengersCanUsePortals")
                            .remove("gameLoopFunction")
                            .remove("doFireTick")
                            .remove("allowFireTicksAwayFromPlayer")
                            .renameAndFixField(
                                "allowEnteringNetherUsingPortals", "minecraft:allow_entering_nether_using_portals", GameRuleRegistryFix::convertBoolean
                            )
                            .renameAndFixField("announceAdvancements", "minecraft:show_advancement_messages", GameRuleRegistryFix::convertBoolean)
                            .renameAndFixField("blockExplosionDropDecay", "minecraft:block_explosion_drop_decay", GameRuleRegistryFix::convertBoolean)
                            .renameAndFixField("commandBlockOutput", "minecraft:command_block_output", GameRuleRegistryFix::convertBoolean)
                            .renameAndFixField("enableCommandBlocks", "minecraft:command_blocks_work", GameRuleRegistryFix::convertBoolean)
                            .renameAndFixField("commandBlocksEnabled", "minecraft:command_blocks_work", GameRuleRegistryFix::convertBoolean)
                            .renameAndFixField("commandModificationBlockLimit", "minecraft:max_block_modifications", oldValue -> convertInteger(oldValue, 1))
                            .renameAndFixField("disableElytraMovementCheck", "minecraft:elytra_movement_check", GameRuleRegistryFix::convertBooleanInverted)
                            .renameAndFixField("disablePlayerMovementCheck", "minecraft:player_movement_check", GameRuleRegistryFix::convertBooleanInverted)
                            .renameAndFixField("disableRaids", "minecraft:raids", GameRuleRegistryFix::convertBooleanInverted)
                            .renameAndFixField("doDaylightCycle", "minecraft:advance_time", GameRuleRegistryFix::convertBoolean)
                            .renameAndFixField("doEntityDrops", "minecraft:entity_drops", GameRuleRegistryFix::convertBoolean)
                            .renameAndFixField("doImmediateRespawn", "minecraft:immediate_respawn", GameRuleRegistryFix::convertBoolean)
                            .renameAndFixField("doInsomnia", "minecraft:spawn_phantoms", GameRuleRegistryFix::convertBoolean)
                            .renameAndFixField("doLimitedCrafting", "minecraft:limited_crafting", GameRuleRegistryFix::convertBoolean)
                            .renameAndFixField("doMobLoot", "minecraft:mob_drops", GameRuleRegistryFix::convertBoolean)
                            .renameAndFixField("doMobSpawning", "minecraft:spawn_mobs", GameRuleRegistryFix::convertBoolean)
                            .renameAndFixField("doPatrolSpawning", "minecraft:spawn_patrols", GameRuleRegistryFix::convertBoolean)
                            .renameAndFixField("doTileDrops", "minecraft:block_drops", GameRuleRegistryFix::convertBoolean)
                            .renameAndFixField("doTraderSpawning", "minecraft:spawn_wandering_traders", GameRuleRegistryFix::convertBoolean)
                            .renameAndFixField("doVinesSpread", "minecraft:spread_vines", GameRuleRegistryFix::convertBoolean)
                            .renameAndFixField("doWardenSpawning", "minecraft:spawn_wardens", GameRuleRegistryFix::convertBoolean)
                            .renameAndFixField("doWeatherCycle", "minecraft:advance_weather", GameRuleRegistryFix::convertBoolean)
                            .renameAndFixField("drowningDamage", "minecraft:drowning_damage", GameRuleRegistryFix::convertBoolean)
                            .renameAndFixField("enderPearlsVanishOnDeath", "minecraft:ender_pearls_vanish_on_death", GameRuleRegistryFix::convertBoolean)
                            .renameAndFixField("fallDamage", "minecraft:fall_damage", GameRuleRegistryFix::convertBoolean)
                            .renameAndFixField("fireDamage", "minecraft:fire_damage", GameRuleRegistryFix::convertBoolean)
                            .renameAndFixField("forgiveDeadPlayers", "minecraft:forgive_dead_players", GameRuleRegistryFix::convertBoolean)
                            .renameAndFixField("freezeDamage", "minecraft:freeze_damage", GameRuleRegistryFix::convertBoolean)
                            .renameAndFixField("globalSoundEvents", "minecraft:global_sound_events", GameRuleRegistryFix::convertBoolean)
                            .renameAndFixField("keepInventory", "minecraft:keep_inventory", GameRuleRegistryFix::convertBoolean)
                            .renameAndFixField("lavaSourceConversion", "minecraft:lava_source_conversion", GameRuleRegistryFix::convertBoolean)
                            .renameAndFixField("locatorBar", "minecraft:locator_bar", GameRuleRegistryFix::convertBoolean)
                            .renameAndFixField("logAdminCommands", "minecraft:log_admin_commands", GameRuleRegistryFix::convertBoolean)
                            .renameAndFixField("maxCommandChainLength", "minecraft:max_command_sequence_length", oldValue -> convertInteger(oldValue, 0))
                            .renameAndFixField("maxCommandForkCount", "minecraft:max_command_forks", oldValue -> convertInteger(oldValue, 0))
                            .renameAndFixField("maxEntityCramming", "minecraft:max_entity_cramming", oldValue -> convertInteger(oldValue, 0))
                            .renameAndFixField("minecartMaxSpeed", "minecraft:max_minecart_speed", GameRuleRegistryFix::convertInteger)
                            .renameAndFixField("mobExplosionDropDecay", "minecraft:mob_explosion_drop_decay", GameRuleRegistryFix::convertBoolean)
                            .renameAndFixField("mobGriefing", "minecraft:mob_griefing", GameRuleRegistryFix::convertBoolean)
                            .renameAndFixField("naturalRegeneration", "minecraft:natural_health_regeneration", GameRuleRegistryFix::convertBoolean)
                            .renameAndFixField(
                                "playersNetherPortalCreativeDelay", "minecraft:players_nether_portal_creative_delay", oldValue -> convertInteger(oldValue, 0)
                            )
                            .renameAndFixField(
                                "playersNetherPortalDefaultDelay", "minecraft:players_nether_portal_default_delay", oldValue -> convertInteger(oldValue, 0)
                            )
                            .renameAndFixField("playersSleepingPercentage", "minecraft:players_sleeping_percentage", oldValue -> convertInteger(oldValue, 0))
                            .renameAndFixField("projectilesCanBreakBlocks", "minecraft:projectiles_can_break_blocks", GameRuleRegistryFix::convertBoolean)
                            .renameAndFixField("pvp", "minecraft:pvp", GameRuleRegistryFix::convertBoolean)
                            .renameAndFixField("randomTickSpeed", "minecraft:random_tick_speed", oldValue -> convertInteger(oldValue, 0))
                            .renameAndFixField("reducedDebugInfo", "minecraft:reduced_debug_info", GameRuleRegistryFix::convertBoolean)
                            .renameAndFixField("sendCommandFeedback", "minecraft:send_command_feedback", GameRuleRegistryFix::convertBoolean)
                            .renameAndFixField("showDeathMessages", "minecraft:show_death_messages", GameRuleRegistryFix::convertBoolean)
                            .renameAndFixField("snowAccumulationHeight", "minecraft:max_snow_accumulation_height", oldValue -> convertInteger(oldValue, 0, 8))
                            .renameAndFixField("spawnMonsters", "minecraft:spawn_monsters", GameRuleRegistryFix::convertBoolean)
                            .renameAndFixField("spawnRadius", "minecraft:respawn_radius", GameRuleRegistryFix::convertInteger)
                            .renameAndFixField("spawnerBlocksEnabled", "minecraft:spawner_blocks_work", GameRuleRegistryFix::convertBoolean)
                            .renameAndFixField("spectatorsGenerateChunks", "minecraft:spectators_generate_chunks", GameRuleRegistryFix::convertBoolean)
                            .renameAndFixField("tntExplodes", "minecraft:tnt_explodes", GameRuleRegistryFix::convertBoolean)
                            .renameAndFixField("tntExplosionDropDecay", "minecraft:tnt_explosion_drop_decay", GameRuleRegistryFix::convertBoolean)
                            .renameAndFixField("universalAnger", "minecraft:universal_anger", GameRuleRegistryFix::convertBoolean)
                            .renameAndFixField("waterSourceConversion", "minecraft:water_source_conversion", GameRuleRegistryFix::convertBoolean);
                    }
                )
            )
        );
    }
 
    private static Dynamic<?> convertInteger(Dynamic<?> oldValue) {
        return convertInteger(oldValue, Integer.MIN_VALUE, Integer.MAX_VALUE);
    }
 
    private static Dynamic<?> convertInteger(Dynamic<?> oldValue, int min) {
        return convertInteger(oldValue, min, Integer.MAX_VALUE);
    }
 
    private static Dynamic<?> convertInteger(Dynamic<?> oldValue, int min, int max) {
        String stringValue = oldValue.asString("");
 
        try {
            int parsedValue = Integer.parseInt(stringValue);
            return oldValue.createInt(Mth.clamp(parsedValue, min, max));
        } catch (NumberFormatException var5) {
            return oldValue;
        }
    }
 
    private static Dynamic<?> convertBoolean(Dynamic<?> oldValue) {
        return oldValue.createBoolean(Boolean.parseBoolean(oldValue.asString("")));
    }
 
    private static Dynamic<?> convertBooleanInverted(Dynamic<?> oldValue) {
        return oldValue.createBoolean(!Boolean.parseBoolean(oldValue.asString("")));
    }
}

引用的其他类

  • Schema

    • 引用位置: 参数
  • Mth

    • 引用位置: 方法调用
    • 关联成员: Mth.clamp()
  • ResolvableProfile

    • 引用位置: 参数/返回值