LevelDatToSavedDataPreparationFix.java
net.minecraft.util.datafix.fixes.LevelDatToSavedDataPreparationFix
信息
- 全限定名:net.minecraft.util.datafix.fixes.LevelDatToSavedDataPreparationFix
- 类型:public class
- 包:net.minecraft.util.datafix.fixes
- 源码路径:src/main/java/net/minecraft/util/datafix/fixes/LevelDatToSavedDataPreparationFix.java
- 起始行号:L11
- 继承:DataFix
- 职责:
TODO
字段/常量
- 无
内部类/嵌套类型
- 无
构造器
public LevelDatToSavedDataPreparationFix(Schema outputSchema) @ L12
- 构造器名:LevelDatToSavedDataPreparationFix
- 源码定位:L12
- 修饰符:public
参数:
- outputSchema: Schema
说明:
TODO
方法
下面的方法块按源码顺序生成。
protected TypeRewriteRule makeRule() @ L16
- 方法名:makeRule
- 源码定位:L16
- 返回类型:TypeRewriteRule
- 修饰符:protected
参数:
- 无
说明:
TODO
private static Dynamic<?> fixDragonFight(Dynamic<?> levelData) @ L28
- 方法名:fixDragonFight
- 源码定位:L28
- 返回类型:Dynamic<?>
- 修饰符:private static
参数:
- levelData: Dynamic<?>
说明:
TODO
private static Dynamic<?> fixWanderingTrader(Dynamic<?> levelData) @ L49
- 方法名:fixWanderingTrader
- 源码定位:L49
- 返回类型:Dynamic<?>
- 修饰符:private static
参数:
- levelData: Dynamic<?>
说明:
TODO
private static Dynamic<?> fixWeatherData(Dynamic<?> levelData) @ L59
- 方法名:fixWeatherData
- 源码定位:L59
- 返回类型:Dynamic<?>
- 修饰符:private static
参数:
- levelData: Dynamic<?>
说明:
TODO
private static Dynamic<?> fixScheduledEvents(Dynamic<?> levelData) @ L74
- 方法名:fixScheduledEvents
- 源码定位:L74
- 返回类型:Dynamic<?>
- 修饰符:private static
参数:
- levelData: Dynamic<?>
说明:
TODO
private static Dynamic<?> fixWorldGenSettings(Dynamic<?> levelData) @ L89
- 方法名:fixWorldGenSettings
- 源码定位:L89
- 返回类型:Dynamic<?>
- 修饰符:private static
参数:
- levelData: Dynamic<?>
说明:
TODO
代码
public class LevelDatToSavedDataPreparationFix extends DataFix {
public LevelDatToSavedDataPreparationFix(Schema outputSchema) {
super(outputSchema, true);
}
@Override
protected TypeRewriteRule makeRule() {
Type<?> levelType = this.getInputSchema().getType(References.LEVEL);
return this.writeFixAndRead("LevelSplitSavedDataPreparationFix", levelType, this.getOutputSchema().getType(References.LEVEL), levelData -> {
levelData = fixDragonFight(levelData);
levelData = fixWanderingTrader(levelData);
levelData = fixWeatherData(levelData);
levelData = fixScheduledEvents(levelData);
return fixWorldGenSettings(levelData);
});
}
private static Dynamic<?> fixDragonFight(Dynamic<?> levelData) {
return levelData.renameAndFixField(
"DragonFight",
"dragon_fight",
dragonFight -> {
Dynamic<?> newFight = dragonFight.renameField("NeedsStateScanning", "needs_state_scanning")
.renameField("DragonKilled", "dragon_killed")
.renameField("PreviouslyKilled", "previously_killed")
.renameField("Dragon", "dragon_uuid")
.renameField("ExitPortalLocation", "exit_portal_location")
.renameField("Gateways", "gateways");
boolean isRespawning = dragonFight.get("IsRespawning").asBoolean(false);
if (isRespawning) {
newFight = newFight.set("respawn_stage", levelData.createString("start")).set("respawn_time", levelData.createInt(0));
}
return newFight.remove("IsRespawning");
}
);
}
private static Dynamic<?> fixWanderingTrader(Dynamic<?> levelData) {
Dynamic<?> wanderingTraderData = levelData.emptyMap()
.set("spawn_delay", levelData.createInt(levelData.get("WanderingTraderSpawnDelay").asInt(24000)))
.set("spawn_chance", levelData.createInt(levelData.get("WanderingTraderSpawnChance").asInt(25)));
return levelData.set("wandering_trader_migration_data", wanderingTraderData)
.remove("WanderingTraderSpawnDelay")
.remove("WanderingTraderSpawnChance")
.remove("WanderingTraderId");
}
private static Dynamic<?> fixWeatherData(Dynamic<?> levelData) {
Dynamic<?> weatherData = levelData.emptyMap()
.set("clear_weather_time", levelData.createInt(levelData.get("clearWeatherTime").asInt(0)))
.set("rain_time", levelData.createInt(levelData.get("rainTime").asInt(0)))
.set("thunder_time", levelData.createInt(levelData.get("thunderTime").asInt(0)))
.set("raining", levelData.createBoolean(levelData.get("raining").asBoolean(false)))
.set("thundering", levelData.createBoolean(levelData.get("thundering").asBoolean(false)));
return levelData.remove("clearWeatherTime")
.remove("rainTime")
.remove("thunderTime")
.remove("raining")
.remove("thundering")
.set("weather_data", weatherData);
}
private static Dynamic<?> fixScheduledEvents(Dynamic<?> levelData) {
List<? extends Dynamic<?>> scheduledEvents = levelData.get("ScheduledEvents").asList(Function.identity());
Dynamic<?> eventList = levelData.createList(
scheduledEvents.stream()
.map(
event -> event.renameField("Name", "id")
.renameField("TriggerTime", "trigger_time")
.renameAndFixField("Callback", "callback", callback -> callback.renameField("Type", "type").renameField("Name", "id"))
)
);
Dynamic<?> newEvents = levelData.emptyMap();
newEvents = newEvents.set("events", eventList);
return levelData.remove("ScheduledEvents").set("scheduled_events", newEvents);
}
private static Dynamic<?> fixWorldGenSettings(Dynamic<?> levelData) {
return levelData.renameAndFixField("WorldGenSettings", "world_gen_settings", tag -> tag.renameField("generate_features", "generate_structures"));
}
}引用的其他类
-
- 引用位置:
参数
- 引用位置:
-
- 引用位置:
参数/返回值
- 引用位置: