{ "id": "1.21.4", "name": "1.21.4", "world_version": 4189, "series_id": "main", "protocol_version": 769, "pack_version": { "resource": 46, "data": 61 }, "build_time": "2024-12-03T10:09:48+00:00", "java_component": "java-runtime-delta", "java_version": 21, "stable": true, "use_editor": false } { "removed": [ "upgrade.minecraft.netherite_upgrade", "item.minecraft.creeper_banner_pattern.desc", "item.minecraft.flow_banner_pattern.desc", "item.minecraft.flower_banner_pattern.desc", "item.minecraft.globe_banner_pattern.desc", "item.minecraft.guster_banner_pattern.desc", "item.minecraft.mojang_banner_pattern.desc", "item.minecraft.piglin_banner_pattern.desc", "item.minecraft.skull_banner_pattern.desc", "argument.time.invalid_tick_count", "arguments.nbtpath.too_large", "block.minecraft.grass", "book.invalid.tag", "commands.fillbiome.success", "commands.function.success.multiple", "commands.function.success.multiple.result", "commands.function.success.single", "commands.function.success.single.result", "commands.publish.success", "connect.reconfiging", "dataPack.update_1_20.description", "dataPack.update_1_20.name", "dataPack.update_1_21.description", "dataPack.update_1_21.name", "dataPack.winter_drop.description", "dataPack.winter_drop.name", "deathScreen.score", "entity.minecraft.creaking_transient", "event.minecraft.raid.defeat", "event.minecraft.raid.victory", "gui.abuseReport.reason.false_reporting", "gui.chatReport.comments", "gui.chatReport.describe", "gui.chatReport.discard.content", "gui.chatReport.discard.discard", "gui.chatReport.discard.draft", "gui.chatReport.discard.return", "gui.chatReport.discard.title", "gui.chatReport.draft.content", "gui.chatReport.draft.discard", "gui.chatReport.draft.edit", "gui.chatReport.draft.quittotitle.content", "gui.chatReport.draft.quittotitle.title", "gui.chatReport.draft.title", "gui.chatReport.more_comments", "gui.chatReport.observed_what", "gui.chatReport.read_info", "gui.chatReport.select_reason", "gui.chatReport.send.comments_too_long", "gui.chatReport.send.no_reason", "item_modifier.unknown", "item.minecraft.angler_pottery_shard", "item.minecraft.archer_pottery_shard", "item.minecraft.arms_up_pottery_shard", "item.minecraft.blade_pottery_shard", "item.minecraft.brewer_pottery_shard", "item.minecraft.bundle.fullness", "item.minecraft.burn_pottery_shard", "item.minecraft.danger_pottery_shard", "item.minecraft.explorer_pottery_shard", "item.minecraft.friend_pottery_shard", "item.minecraft.heart_pottery_shard", "item.minecraft.heartbreak_pottery_shard", "item.minecraft.howl_pottery_shard", "item.minecraft.miner_pottery_shard", "item.minecraft.mourner_pottery_shard", "item.minecraft.music_disc_5.desc", "item.minecraft.music_disc_11.desc", "item.minecraft.music_disc_13.desc", "item.minecraft.music_disc_blocks.desc", "item.minecraft.music_disc_cat.desc", "item.minecraft.music_disc_chirp.desc", "item.minecraft.music_disc_creator_music_box.desc", "item.minecraft.music_disc_creator.desc", "item.minecraft.music_disc_far.desc", "item.minecraft.music_disc_mall.desc", "item.minecraft.music_disc_mellohi.desc", "item.minecraft.music_disc_otherside.desc", "item.minecraft.music_disc_pigstep.desc", "item.minecraft.music_disc_precipice.desc", "item.minecraft.music_disc_relic.desc", "item.minecraft.music_disc_stal.desc", "item.minecraft.music_disc_strad.desc", "item.minecraft.music_disc_wait.desc", "item.minecraft.music_disc_ward.desc", "item.minecraft.plenty_pottery_shard", "item.minecraft.pottery_shard_archer", "item.minecraft.pottery_shard_arms_up", "item.minecraft.pottery_shard_prize", "item.minecraft.pottery_shard_skull", "item.minecraft.prize_pottery_shard", "item.minecraft.scute", "item.minecraft.sheaf_pottery_shard", "item.minecraft.shelter_pottery_shard", "item.minecraft.skull_pottery_shard", "item.minecraft.snort_pottery_shard", "item.nbt_tags", "mco.account.privacy.info", "mco.account.privacyinfo", "mco.client.incompatible.msg.line1", "mco.client.incompatible.msg.line2", "mco.client.incompatible.msg.line3", "mco.configure.world.close.question.line2", "mco.configure.world.delete.question.line2", "mco.configure.world.invited", "mco.configure.world.leave.question.line2", "mco.configure.world.resourcepack.question.line1", "mco.configure.world.resourcepack.question.line2", "mco.configure.world.restore.download.question.line2", "mco.configure.world.restore.question.line2", "mco.configure.world.slot.switch.question.line2", "mco.configure.world.spawnAnimals", "mco.configure.world.spawnNPCs", "mco.configure.world.spawn_toggle.title", "mco.configure.world.subscription.day", "mco.configure.world.subscription.days", "mco.configure.world.subscription.month", "mco.configure.world.subscription.months", "mco.configure.world.uninvite.question", "mco.create.world.skip", "mco.create.world.subtitle", "mco.download.confirmation.line1", "mco.download.confirmation.line2", "mco.errorMessage.realmsService", "mco.gui.ok", "mco.reset.world.seed", "mco.reset.world.upload", "mco.selectServer.configureRealm", "mco.selectServer.expiredSubscribe", "mco.selectServer.minigame", "mco.snapshot.creating", "mco.snapshot.friendsRealm.upgrade", "mco.upload.entry.cheats", "mco.upload.entry.commands", "mco.upload.size.failure.line1", "mco.upload.size.failure.line2", "mco.version", "multiplayer.disconnect.out_of_order_chat", "multiplayer.disconnect.unsigned_chat", "narration.edit_box", "painting.minecraft.earth.author", "painting.minecraft.fire.author", "painting.minecraft.water.author", "painting.minecraft.wind.author", "painting.minecraft.wither.author", "predicate.unknown", "resourcepack.downloading", "resourcepack.progress", "resourcepack.requesting", "selectWorld.cheats", "selectWorld.edit.export_worldgen_settings", "selectWorld.edit.export_worldgen_settings.failure", "selectWorld.edit.export_worldgen_settings.success", "selectWorld.futureworld.error.text", "selectWorld.futureworld.error.title", "selectWorld.gameMode.adventure.line1", "selectWorld.gameMode.adventure.line2", "selectWorld.gameMode.creative.line1", "selectWorld.gameMode.creative.line2", "selectWorld.gameMode.hardcore.line1", "selectWorld.gameMode.hardcore.line2", "selectWorld.gameMode.spectator.line1", "selectWorld.gameMode.spectator.line2", "selectWorld.gameMode.survival.line1", "selectWorld.gameMode.survival.line2", "selectWorld.import_worldgen_settings", "selectWorld.import_worldgen_settings.failure", "selectWorld.import_worldgen_settings.select_file", "selectWorld.moreWorldOptions", "selectWorld.resultFolder", "selectWorld.versionJoinButton", "selectWorld.versionQuestion", "selectWorld.versionWarning", "subtitles.block.trial_spawner.ambient_charged", "subtitles.block.trial_spawner.charge_activate", "subtitles.entity.camel.step", "subtitles.entity.camel.step_sand", "subtitles.entity.drowned.step", "subtitles.entity.generic.wind_burst", "subtitles.entity.goat.step", "subtitles.entity.hoglin.step", "subtitles.entity.llama.step", "subtitles.entity.minecart.inside", "subtitles.entity.minecart.inside_underwater", "subtitles.entity.panda.step", "subtitles.entity.piglin_brute.step", "subtitles.entity.piglin.step", "subtitles.entity.ravager.step", "subtitles.entity.sniffer.egg_crack", "subtitles.entity.sniffer.egg_hatch", "subtitles.entity.sniffer.step", "subtitles.entity.warden.step", "subtitles.entity.zoglin.step", "symlink_warning.message", "title.32bit.deprecation", "title.32bit.deprecation.realms", "title.32bit.deprecation.realms.check", "title.32bit.deprecation.realms.header", "tutorial.bundleInsert.description", "tutorial.bundleInsert.title", "attribute.name.generic.armor", "attribute.name.generic.armor_toughness", "attribute.name.generic.attack_damage", "attribute.name.generic.attack_knockback", "attribute.name.generic.attack_speed", "attribute.name.generic.block_interaction_range", "attribute.name.generic.burning_time", "attribute.name.generic.entity_interaction_range", "attribute.name.generic.explosion_knockback_resistance", "attribute.name.generic.fall_damage_multiplier", "attribute.name.generic.flying_speed", "attribute.name.generic.follow_range", "attribute.name.generic.gravity", "attribute.name.generic.jump_strength", "attribute.name.generic.knockback_resistance", "attribute.name.generic.luck", "attribute.name.generic.max_absorption", "attribute.name.generic.max_health", "attribute.name.generic.movement_efficiency", "attribute.name.generic.movement_speed", "attribute.name.generic.oxygen_bonus", "attribute.name.generic.safe_fall_distance", "attribute.name.generic.scale", "attribute.name.generic.step_height", "attribute.name.generic.water_movement_efficiency", "attribute.name.horse.jump_strength", "attribute.name.player.block_break_speed", "attribute.name.player.block_interaction_range", "attribute.name.player.entity_interaction_range", "attribute.name.player.mining_efficiency", "attribute.name.player.sneaking_speed", "attribute.name.player.submerged_mining_speed", "attribute.name.player.sweeping_damage_ratio", "attribute.name.zombie.spawn_reinforcements", "realms.missing.snapshot.error.text", "entity.minecraft.boat", "entity.minecraft.chest_boat", "subtitles.ambient.cave", "subtitles.block.creaking_heart.idle", "subtitles.block.eyeblossom.idle", "subtitles.block.generic.idle" ], "renamed": { "item.minecraft.dune_armor_trim_smithing_template.new": "item.minecraft.dune_armor_trim_smithing_template", "item.minecraft.eye_armor_trim_smithing_template.new": "item.minecraft.eye_armor_trim_smithing_template", "item.minecraft.flow_armor_trim_smithing_template.new": "item.minecraft.flow_armor_trim_smithing_template", "item.minecraft.bolt_armor_trim_smithing_template.new": "item.minecraft.bolt_armor_trim_smithing_template", "item.minecraft.host_armor_trim_smithing_template.new": "item.minecraft.host_armor_trim_smithing_template", "item.minecraft.netherite_upgrade_smithing_template.new": "item.minecraft.netherite_upgrade_smithing_template", "item.minecraft.raiser_armor_trim_smithing_template.new": "item.minecraft.raiser_armor_trim_smithing_template", "item.minecraft.rib_armor_trim_smithing_template.new": "item.minecraft.rib_armor_trim_smithing_template", "item.minecraft.sentry_armor_trim_smithing_template.new": "item.minecraft.sentry_armor_trim_smithing_template", "item.minecraft.shaper_armor_trim_smithing_template.new": "item.minecraft.shaper_armor_trim_smithing_template", "item.minecraft.silence_armor_trim_smithing_template.new": "item.minecraft.silence_armor_trim_smithing_template", "item.minecraft.snout_armor_trim_smithing_template.new": "item.minecraft.snout_armor_trim_smithing_template", "item.minecraft.spire_armor_trim_smithing_template.new": "item.minecraft.spire_armor_trim_smithing_template", "item.minecraft.tide_armor_trim_smithing_template.new": "item.minecraft.tide_armor_trim_smithing_template", "item.minecraft.vex_armor_trim_smithing_template.new": "item.minecraft.vex_armor_trim_smithing_template", "item.minecraft.ward_armor_trim_smithing_template.new": "item.minecraft.ward_armor_trim_smithing_template", "item.minecraft.wayfinder_armor_trim_smithing_template.new": "item.minecraft.wayfinder_armor_trim_smithing_template", "item.minecraft.wild_armor_trim_smithing_template.new": "item.minecraft.wild_armor_trim_smithing_template", "item.minecraft.coast_armor_trim_smithing_template.new": "item.minecraft.coast_armor_trim_smithing_template", "item.minecraft.creeper_banner_pattern.new": "item.minecraft.creeper_banner_pattern", "item.minecraft.flow_banner_pattern.new": "item.minecraft.flow_banner_pattern", "item.minecraft.flower_banner_pattern.new": "item.minecraft.flower_banner_pattern", "item.minecraft.globe_banner_pattern.new": "item.minecraft.globe_banner_pattern", "item.minecraft.guster_banner_pattern.new": "item.minecraft.guster_banner_pattern", "item.minecraft.mojang_banner_pattern.new": "item.minecraft.mojang_banner_pattern", "item.minecraft.piglin_banner_pattern.new": "item.minecraft.piglin_banner_pattern", "item.minecraft.skull_banner_pattern.new": "item.minecraft.skull_banner_pattern", "lanServer.port.unavailable.new": "lanServer.port.unavailable", "lanServer.port.invalid.new": "lanServer.port.invalid", "multiplayer.disconnect.invalid_public_key_signature.new": "multiplayer.disconnect.invalid_public_key_signature", "selectWorld.allowCommands.new": "selectWorld.allowCommands", "gui.abuseReport.reason.generic": "gui.abuseReport.reason.i_want_to_report_them", "gui.abuseReport.reason.generic.description": "gui.abuseReport.reason.i_want_to_report_them.description", "commands.drop.no_loot_table": "commands.drop.no_loot_table.entity", "item.op_block_warning.line1": "item.op_warning.line1", "item.op_block_warning.line2": "item.op_warning.line2", "item.op_block_warning.line3": "item.op_warning.line3" }package net.minecraft.data; import java.io.IOException; import java.nio.file.Path; import java.nio.file.Paths; import java.util.Collection; import java.util.concurrent.CompletableFuture; import java.util.function.BiFunction; import joptsimple.OptionParser; import joptsimple.OptionSet; import joptsimple.OptionSpec; import net.minecraft.obfuscate.DontObfuscate; public class Main { @.ac( a = "System.out needed before bootstrap" ) @DontObfuscate public static void main(String[] $$0) throws IOException { .ab.a(); OptionParser $$1 = new OptionParser(); OptionSpec $$2 = $$1.accepts("help", "Show the help menu").forHelp(); OptionSpec $$3 = $$1.accepts("server", "Include server generators"); OptionSpec $$4 = $$1.accepts("dev", "Include development tools"); OptionSpec $$5 = $$1.accepts("reports", "Include data reports"); $$1.accepts("validate", "Validate inputs"); OptionSpec $$6 = $$1.accepts("all", "Include all generators"); OptionSpec $$7 = $$1.accepts("output", "Output folder").withRequiredArg().defaultsTo("generated", new String[0]); OptionSpec $$8 = $$1.accepts("input", "Input folder").withRequiredArg(); OptionSet $$9 = $$1.parse($$0); if (!$$9.has($$2) && $$9.hasOptions()) { Path $$10 = Paths.get((String)$$7.value($$9)); boolean $$11 = $$9.has($$6); boolean $$12 = $$11 || $$9.has($$3); boolean $$13 = $$11 || $$9.has($$4); boolean $$14 = $$11 || $$9.has($$5); Collection $$15 = $$9.valuesOf($$8).stream().map(($$0x) -> { return Paths.get($$0x); }).toList(); .mh $$16 = new .mh($$10, .ab.b(), true); a($$16, $$15, $$12, $$13, $$14); $$16.a(); } else { $$1.printHelpOn(System.out); } } private static .mi.a a(BiFunction<.mk, CompletableFuture<.jt.a>, T> $$0, CompletableFuture<.jt.a> $$1) { return ($$2) -> { return (.mi)$$0.apply($$2, $$1); }; } public static void a(.mh $$0, Collection $$1, boolean $$2, boolean $$3, boolean $$4) { .mh.a $$5 = $$0.a($$2); $$5.a(($$1x) -> { return (new .ov($$1x, $$1)).a((.ov.a)(new .ow())); }); CompletableFuture<.jt.a> $$6 = CompletableFuture.supplyAsync(.or::a, .af.h()); .mh.a $$19 = $$0.a($$2); $$19.a(a(.oo::new, $$6)); $$19.a(a(.mo::a, $$6)); $$19.a(a(.ns::a, $$6)); $$19.a(a(.om.a::new, $$6)); .pn<.djn> $$8 = (.pn)$$19.a(a(.pq::new, $$6)); .pn<.cwm> $$9 = (.pn)$$19.a(($$2x) -> { return new .ps($$2x, $$6, $$8.c()); }); .pn<.dhl> $$10 = (.pn)$$19.a(a(.oz::new, $$6)); .pn<.dtq> $$11 = (.pn)$$19.a(a(.oy::new, $$6)); .pn<.enn> $$12 = (.pn)$$19.a(a(.pm::new, $$6)); $$19.a(a(.pa::new, $$6)); $$19.a(a(.pb::new, $$6)); $$19.a(a(.pd::new, $$6)); $$19.a(a(.pe::new, $$6)); $$19.a(a(.pf::new, $$6)); $$19.a(a(.pg::new, $$6)); $$19.a(a(.ph::new, $$6)); $$19.a(a(.pk::new, $$6)); $$19.a(a(.pl::new, $$6)); $$19.a(a(.pt::new, $$6)); $$19.a(a(.pr::new, $$6)); $$19 = $$0.a($$3); $$19.a(($$1x) -> { return new .ot($$1x, $$1); }); $$19 = $$0.a($$4); $$19.a(a(.mv::new, $$6)); $$19.a(a(.mz::new, $$6)); $$19.a(a(.mw::new, $$6)); $$19.a(a(.mx::new, $$6)); $$19.a(.nb::new); $$19.a(.na::new); $$19.a(.my::new); CompletableFuture<.kh.g> $$15 = .oq.a($$6); CompletableFuture<.jt.a> $$16 = $$15.thenApply(.kh.g::b); .mh.a $$17 = $$0.a($$2, "trade_rebalance"); $$17.a(a(.oo::new, $$16)); $$17.a(($$0x) -> { return .nw.a((.mk)$$0x, (.wp).wp.c("dataPack.trade_rebalance.description"), (.cru).cru.a(.crw.b)); }); $$17.a(a(.nk::a, $$6)); $$17.a(a(.pp::new, $$6)); $$17.a(a(.po::new, $$6)); $$19 = $$0.a($$2, "redstone_experiments"); $$19.a(($$0x) -> { return .nw.a((.mk)$$0x, (.wp).wp.c("dataPack.redstone_experiments.description"), (.cru).cru.a(.crw.c)); }); $$19 = $$0.a($$2, "minecart_improvements"); $$19.a(($$0x) -> { return .nw.a((.mk)$$0x, (.wp).wp.c("dataPack.minecart_improvements.description"), (.cru).cru.a(.crw.d)); }); } } package net.minecraft.obfuscate; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import javax.annotation.meta.TypeQualifierDefault; @TypeQualifierDefault({ElementType.TYPE, ElementType.METHOD}) @Retention(RetentionPolicy.CLASS) public @interface DontObfuscate { }package net.minecraft.server; import com.mojang.authlib.yggdrasil.YggdrasilAuthenticationService; import com.mojang.datafixers.DataFixer; import com.mojang.logging.LogUtils; import com.mojang.serialization.Dynamic; import com.mojang.serialization.Lifecycle; import java.awt.GraphicsEnvironment; import java.io.File; import java.io.IOException; import java.io.UncheckedIOException; import java.net.Proxy; import java.nio.file.Files; import java.nio.file.OpenOption; import java.nio.file.Path; import java.nio.file.Paths; import java.util.Optional; import java.util.concurrent.Executor; import java.util.function.BooleanSupplier; import javax.annotation.Nullable; import joptsimple.NonOptionArgumentSpec; import joptsimple.OptionParser; import joptsimple.OptionSet; import joptsimple.OptionSpec; import joptsimple.util.PathConverter; import joptsimple.util.PathProperties; import net.minecraft.obfuscate.DontObfuscate; import org.slf4j.Logger; public class Main { private static final Logger a = LogUtils.getLogger(); @.ac( a = "System.out needed before bootstrap" ) @DontObfuscate public static void main(String[] $$0) { .ab.a(); OptionParser $$1 = new OptionParser(); OptionSpec $$2 = $$1.accepts("nogui"); OptionSpec $$3 = $$1.accepts("initSettings", "Initializes 'server.properties' and 'eula.txt', then quits"); OptionSpec $$4 = $$1.accepts("demo"); OptionSpec $$5 = $$1.accepts("bonusChest"); OptionSpec $$6 = $$1.accepts("forceUpgrade"); OptionSpec $$7 = $$1.accepts("eraseCache"); OptionSpec $$8 = $$1.accepts("recreateRegionFiles"); OptionSpec $$9 = $$1.accepts("safeMode", "Loads level with vanilla datapack only"); OptionSpec $$10 = $$1.accepts("help").forHelp(); OptionSpec $$11 = $$1.accepts("universe").withRequiredArg().defaultsTo(".", new String[0]); OptionSpec $$12 = $$1.accepts("world").withRequiredArg(); OptionSpec $$13 = $$1.accepts("port").withRequiredArg().ofType(Integer.class).defaultsTo(-1, new Integer[0]); OptionSpec $$14 = $$1.accepts("serverId").withRequiredArg(); OptionSpec $$15 = $$1.accepts("jfrProfile"); OptionSpec $$16 = $$1.accepts("pidFile").withRequiredArg().withValuesConvertedBy(new PathConverter(new PathProperties[0])); NonOptionArgumentSpec $$17 = $$1.nonOptions(); try { OptionSet $$18 = $$1.parse($$0); if ($$18.has($$10)) { $$1.printHelpOn(System.err); return; } Path $$19 = (Path)$$18.valueOf($$16); if ($$19 != null) { a($$19); } .o.g(); if ($$18.has($$15)) { .bpc.f.a(.bpa.b); } .akx.a(); .akx.c(); .af.p(); Path $$20 = Paths.get("server.properties"); .apw $$21 = new .apw($$20); $$21.b(); .eal.a($$21.a().M); Path $$22 = Paths.get("eula.txt"); .alb $$23 = new .alb($$22); if ($$18.has($$3)) { a.info("Initialized '{}' and '{}'", $$20.toAbsolutePath(), $$22.toAbsolutePath()); return; } if (!$$23.a()) { a.info("You need to agree to the EULA in order to run the server. Go to eula.txt for more info."); return; } File $$24 = new File((String)$$18.valueOf($$11)); .alq $$25 = .alq.a(new YggdrasilAuthenticationService(Proxy.NO_PROXY), $$24); String $$26 = (String)Optional.ofNullable((String)$$18.valueOf($$12)).orElse($$21.a().l); .evg $$27 = .evg.b($$24.toPath()); .evg.c $$28 = $$27.d($$26); Dynamic $$33; if ($$28.m()) { .evh $$37; try { $$33 = $$28.h(); $$37 = $$28.a($$33); } catch (.ub | .uh | IOException var41) { .evg.b $$32 = $$28.e(); a.warn("Failed to load world data from {}", $$32.b(), var41); a.info("Attempting to use fallback"); try { $$33 = $$28.i(); $$37 = $$28.a($$33); } catch (.ub | .uh | IOException var40) { a.error("Failed to load world data from {}", $$32.c(), var40); a.error("Failed to load world data from {} and {}. World files may be corrupted. Shutting down.", $$32.b(), $$32.c()); return; } $$28.n(); } if ($$37.d()) { a.info("This world must be opened in an older version (like 1.6.4) to be safely converted"); return; } if (!$$37.r()) { a.info("This world was created by an incompatible version."); return; } } else { $$33 = null; } Dynamic $$39 = $$33; boolean $$40 = $$18.has($$9); if ($$40) { a.warn("Safe mode active, only vanilla datapack will be loaded"); } .aua $$41 = .aud.a($$28); .alu $$45; try { .alt.c $$42 = a($$21.a(), $$39, $$40, $$41); $$45 = (.alu).af.c(($$6x) -> { return .alt.a((.alt.c)$$42, (.alt.f)(($$5x) -> { .ke<.eau> $$6 = $$5x.d().e(.mc.bf); if ($$39 != null) { .evd $$7 = .evg.a($$39, $$5x.b(), $$6, $$5x.c()); return new .alt.b($$7.a(), $$7.b().b()); } else { a.info("No existing world data, creating new world"); .dgn $$12; .edr $$13; .edo $$14; if ($$18.has($$4)) { $$12 = MinecraftServer.d; $$13 = .edr.b; $$14 = .end.a($$5x.c()); } else { .apv $$11 = $$21.a(); $$12 = new .dgn($$11.l, $$11.k, $$11.t, $$11.j, false, new .dgf($$5x.b().b()), $$5x.b()); $$13 = $$18.has($$5) ? $$11.aa.a(true) : $$11.aa; $$14 = $$11.a($$5x.c()); } .edo.b $$15 = $$14.a($$6); Lifecycle $$16 = $$15.a().add($$5x.c().d()); return new .alt.b(new .evk($$12, $$13, $$15.d(), $$16), $$15.b()); } }), (.alt.e)(.alu::new), (Executor).af.h(), (Executor)$$6x); }).get(); } catch (Exception var39) { a.warn("Failed to load datapacks, can't proceed with server load. You can either fix your datapacks or reset to vanilla with --safeMode", var39); return; } .kf.b $$46 = $$45.c().a(); boolean $$47 = $$18.has($$8); if ($$18.has($$6) || $$47) { a($$28, .bao.a(), $$18.has($$7), () -> { return true; }, $$46, $$47); } .evm $$48 = $$45.d(); $$28.a((.kf)$$46, (.evm)$$48); final .apu $$49 = (.apu)MinecraftServer.a(($$11x) -> { .apu $$12 = new .apu($$11x, $$28, $$41, $$45, $$21, .bao.a(), $$25, .arp::b); $$12.a((Integer)$$18.valueOf($$13)); $$12.c($$18.has($$4)); $$12.b((String)$$18.valueOf($$14)); boolean $$13x = !$$18.has($$2) && !$$18.valuesOf($$17).contains("nogui"); if ($$13x && !GraphicsEnvironment.isHeadless()) { $$12.bt(); } return $$12; }); Thread $$50 = new Thread("Server Shutdown Thread") { public void run() { $$49.a(true); } }; $$50.setUncaughtExceptionHandler(new .r(a)); Runtime.getRuntime().addShutdownHook($$50); } catch (Exception var42) { a.error(LogUtils.FATAL_MARKER, "Failed to start the minecraft server", var42); } } private static void a(Path $$0) { try { long $$1 = ProcessHandle.current().pid(); Files.writeString($$0, Long.toString($$1), new OpenOption[0]); } catch (IOException var3) { throw new UncheckedIOException(var3); } } private static .alt.c a(.apv $$0, @Nullable Dynamic $$1, boolean $$2, .aua $$3) { boolean $$7; .dhg $$8; if ($$1 != null) { .dhg $$4 = .evg.a($$1); $$7 = false; $$8 = $$4; } else { $$7 = true; $$8 = new .dhg($$0.U, .crw.h); } .alt.d $$9 = new .alt.d($$3, $$8, $$2, $$7); return new .alt.c($$9, .ey.a.b, $$0.A); } private static void a(.evg.c $$0, DataFixer $$1, boolean $$2, BooleanSupplier $$3, .kf $$4, boolean $$5) { a.info("Forcing world upgrade!"); .brz $$6 = new .brz($$0, $$1, $$4, $$2, $$5); try { .wp $$7 = null; while(!$$6.b()) { .wp $$8 = $$6.h(); if ($$7 != $$8) { $$7 = $$8; a.info($$6.h().getString()); } int $$9 = $$6.e(); if ($$9 > 0) { int $$10 = $$6.f() + $$6.g(); a.info("{}% completed ({} / {} chunks)...", new Object[]{.ayz.d((float)$$10 / (float)$$9 * 100.0F), $$10, $$9}); } if (!$$3.getAsBoolean()) { $$6.a(); } else { try { Thread.sleep(1000L); } catch (InterruptedException var12) { } } } } catch (Throwable var13) { try { $$6.close(); } catch (Throwable var11) { var13.addSuppressed(var11); } throw var13; } $$6.close(); } }package net.minecraft.server; import com.google.common.base.Preconditions; import com.google.common.base.Splitter; import com.google.common.collect.ImmutableList; import com.google.common.collect.Lists; import com.google.common.collect.Maps; import com.google.common.collect.Sets; import com.mojang.authlib.GameProfile; import com.mojang.authlib.GameProfileRepository; import com.mojang.authlib.minecraft.MinecraftSessionService; import com.mojang.datafixers.DataFixer; import com.mojang.jtracy.DiscontinuousFrame; import com.mojang.jtracy.TracyClient; import com.mojang.logging.LogUtils; import it.unimi.dsi.fastutil.longs.LongIterator; import it.unimi.dsi.fastutil.objects.ObjectArrayList; import it.unimi.dsi.fastutil.objects.ObjectArraySet; import java.awt.image.BufferedImage; import java.io.BufferedWriter; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.lang.management.ManagementFactory; import java.lang.management.ThreadInfo; import java.lang.management.ThreadMXBean; import java.net.Proxy; import java.nio.file.FileStore; import java.nio.file.Files; import java.nio.file.LinkOption; import java.nio.file.Path; import java.security.KeyPair; import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; import java.util.Collections; import java.util.Comparator; import java.util.Iterator; import java.util.List; import java.util.Locale; import java.util.Map; import java.util.Objects; import java.util.Optional; import java.util.Set; import java.util.UUID; import java.util.Map.Entry; import java.util.concurrent.CompletableFuture; import java.util.concurrent.Executor; import java.util.concurrent.RejectedExecutionException; import java.util.concurrent.atomic.AtomicReference; import java.util.concurrent.locks.LockSupport; import java.util.function.BooleanSupplier; import java.util.function.Consumer; import java.util.function.Function; import java.util.stream.Collectors; import java.util.stream.Stream; import javax.annotation.Nullable; import javax.imageio.ImageIO; import net.minecraft.obfuscate.DontObfuscate; import org.slf4j.Logger; public abstract class MinecraftServer extends .bre<.als> implements .all, .eab, .ew { private static final Logger l = LogUtils.getLogger(); public static final String b = "vanilla"; private static final float m = 0.8F; private static final int n = 100; private static final long o; private static final int p = 20; private static final long q; private static final int r = 100; private static final long s; private static final long t; private static final int u = 12; private static final int v = 5; private static final int w = 6000; private static final int x = 100; private static final int y = 3; public static final int c = 29999984; public static final .dgn d; public static final GameProfile e; protected final .evg.c f; protected final .evj g; private final List z = Lists.newArrayList(); private .bql A; private Consumer<.bos> B; private Consumer C; private boolean D; @Nullable private MinecraftServer.c E; private boolean F; private final .asf G; private final .aro H; @Nullable private .ajs I; @Nullable private .ajs.a J; private final .azh K; private final DataFixer L; private String M; private int N; private final .jy<.ale> O; private final Map<.aku<.dgj>, .ard> P; private .avd Q; private volatile boolean R; private boolean S; private int T; private int U; protected final Proxy h; private boolean V; private boolean W; private boolean X; private boolean Y; @Nullable private String Z; private int aa; private final long[] ab; private long ac; @Nullable private KeyPair ad; @Nullable private GameProfile ae; private boolean af; private volatile boolean ag; private long ah; protected final .alq i; private long ai; private final Thread aj; private long ak; private long al; private long am; private long an; private boolean ao; private long ap; private boolean aq; private final .aua ar; private final .alo as; @Nullable private .eux at; private final .aly au; private final .alk av; private boolean aw; private float ax; private final Executor ay; @Nullable private String az; private MinecraftServer.a aA; private final .erq aB; private final .alp aC; protected final .evm j; private final .cyo aD; private .duy aE; private int aF; private volatile boolean aG; private static final AtomicReference aH; private final .alr aI; private final DiscontinuousFrame aJ; public static S a(Function $$0) { AtomicReference $$1 = new AtomicReference(); Thread $$2 = new Thread(() -> { ((MinecraftServer)$$1.get()).y(); }, "Server thread"); $$2.setUncaughtExceptionHandler(($$0x, $$1x) -> { l.error("Uncaught exception in server thread", $$1x); }); if (Runtime.getRuntime().availableProcessors() > 4) { $$2.setPriority(8); } S $$3 = (MinecraftServer)$$0.apply($$2); $$1.set($$3); $$2.start(); return $$3; } public MinecraftServer(Thread $$0, .evg.c $$1, .aua $$2, .alu $$3, Proxy $$4, DataFixer $$5, .alq $$6, .aro $$7) { super("Server"); this.A = .bqk.a; this.B = ($$0x) -> { this.aU(); }; this.C = ($$0x) -> { }; this.K = .azh.a(); this.N = -1; this.P = Maps.newLinkedHashMap(); this.R = true; this.U = 6000; this.ab = new long[100]; this.ac = 0L; this.ak = .af.d(); this.al = .af.d(); this.an = .af.d(); this.ao = false; this.as = new .alo(this); this.au = new .aly(); this.aI = new .alr(); this.O = $$3.c(); this.j = $$3.d(); if (!this.O.a().e(.mc.bf).e(.eau.b)) { throw new IllegalStateException("Missing Overworld dimension data"); } else { this.h = $$4; this.ar = $$2; this.aA = new MinecraftServer.a($$3.a(), $$3.b()); this.i = $$6; if ($$6.f() != null) { $$6.f().a((Executor)this); } this.G = new .asf(this); this.aC = new .alp(this); this.H = $$7; this.f = $$1; this.g = $$1.g(); this.L = $$5; this.av = new .alk(this, this.aA.b.a()); .js<.djn> $$8 = this.O.a().e(.mc.f).a((.cru)this.j.K()); this.aB = new .erq($$3.a(), $$1, $$5, $$8); this.aj = $$0; this.ay = .af.h(); this.aD = .cyo.a(this.j.K()); this.aA.b.c().a(this.j.K()); this.aE = .duy.a(this.O.a(), this.j.K()); this.aJ = TracyClient.createDiscontinuousFrame("Server Tick"); } } private void a(.eva $$0) { $$0.a(this.aJ().b(), "scoreboard"); } protected abstract boolean e() throws IOException; protected void v_() { if (!.bpc.f.c()) { } boolean $$0 = false; .bpf $$1 = .bpc.f.e(); this.j.a(this.getServerModName(), this.Q().a()); .arn $$2 = this.H.create(this.j.o().c(.dgf.ab)); this.a($$2); this.t(); this.b($$2); if ($$1 != null) { $$1.finish(true); } if ($$0) { try { .bpc.f.b(); } catch (Throwable var5) { l.warn("Failed to stop JFR profiling", var5); } } } protected void t() { } protected void a(.arn $$0) { .evl $$1 = this.j.I(); boolean $$2 = this.j.A(); .ke<.eau> $$3 = this.O.a().e(.mc.bf); .edr $$4 = this.j.y(); long $$5 = $$4.c(); long $$6 = .dhn.a($$5); List<.dfv> $$7 = ImmutableList.of(new .edf(), new .ede(), new .cof(), new .cgk(), new .cor($$1)); .eau $$8 = (.eau)$$3.c(.eau.b); .ard $$9 = new .ard(this, this.ay, this.f, $$1, .dgj.i, $$8, $$0, $$2, $$6, $$7, true, (.bsq)null); this.P.put(.dgj.i, $$9); .eva $$10 = $$9.w(); this.a($$10); this.at = new .eux($$10); .dyo $$11 = $$9.F_(); if (!$$1.n()) { try { a($$9, $$1, $$4.e(), $$2); $$1.c(true); if ($$2) { this.a(this.j); } } catch (Throwable var23) { .o $$13 = .o.a(var23, "Exception initializing level"); try { $$9.a($$13); } catch (Throwable var22) { } throw new .z($$13); } $$1.c(true); } this.ag().a($$9); if (this.j.E() != null) { this.aM().a((.tq)this.j.E(), (.jt.a)this.ba()); } .bsq $$14 = $$9.N(); Iterator var24 = $$3.k().iterator(); while(var24.hasNext()) { Entry<.aku<.eau>, .eau> $$15 = (Entry)var24.next(); .aku<.eau> $$16 = (.aku)$$15.getKey(); if ($$16 != .eau.b) { .aku<.dgj> $$17 = .aku.a(.mc.be, $$16.a()); .euz $$18 = new .euz(this.j, $$1); .ard $$19 = new .ard(this, this.ay, this.f, $$18, $$17, (.eau)$$15.getValue(), $$0, $$2, $$6, ImmutableList.of(), false, $$14); $$11.a((.dym)(new .dym.a($$19.F_()))); this.P.put($$17, $$19); } } $$11.a($$1.p()); } private static void a(.ard $$0, .evl $$1, boolean $$2, boolean $$3) { if ($$3) { $$1.a(.ji.c.b(80), 0.0F); } else { .ara $$4 = $$0.m(); .dfp $$5 = new .dfp($$4.i().b().a()); int $$6 = $$4.g().a((.dgl)$$0); if ($$6 < $$0.L_()) { .ji $$7 = $$5.l(); $$6 = $$0.a(.ect.a.b, $$7.u() + 8, $$7.w() + 8); } $$1.a($$5.l().b(8, $$6, 8), 0.0F); int $$8 = 0; int $$9 = 0; int $$10 = 0; int $$11 = -1; for(int $$12 = 0; $$12 < .ayz.h(11); ++$$12) { if ($$8 >= -5 && $$8 <= 5 && $$9 >= -5 && $$9 <= 5) { .ji $$13 = .aqx.a($$0, new .dfp($$5.h + $$8, $$5.i + $$9)); if ($$13 != null) { $$1.a($$13, 0.0F); break; } } if ($$8 == $$9 || $$8 < 0 && $$8 == -$$9 || $$8 > 0 && $$8 == 1 - $$9) { int $$14 = $$10; $$10 = -$$11; $$11 = $$14; } $$8 += $$10; $$9 += $$11; } if ($$2) { $$0.K_().a(.mc.aL).flatMap(($$0x) -> { return $$0x.a((.aku).rg.m); }).ifPresent(($$3x) -> { ((.efl)$$3x.a()).a($$0, $$4.g(), $$0.A, $$1.a()); }); } } } private void a(.evm $$0) { $$0.a(.bsi.a); $$0.d(true); .evl $$1 = $$0.I(); $$1.b(false); $$1.a(false); $$1.a(1000000000); $$1.b(6000L); $$1.a(.dgg.d); } private void b(.arn $$0) { .ard $$1 = this.J(); l.info("Preparing start region for dimension {}", $$1.ai().a()); .ji $$2 = $$1.Z(); $$0.a(new .dfp($$2)); .ara $$3 = $$1.m(); this.an = .af.d(); $$1.a($$2, $$1.aa()); int $$4 = this.aL().c(.dgf.ab); int $$5 = $$4 > 0 ? .ayz.h(.arn.a($$4)) : 0; while($$3.b() < $$5) { this.an = .af.d() + t; this.x_(); } this.an = .af.d() + t; this.x_(); Iterator var7 = this.P.values().iterator(); while(true) { .ard $$6; .dge $$7; do { if (!var7.hasNext()) { this.an = .af.d() + t; this.x_(); $$0.b(); this.bH(); return; } $$6 = (.ard)var7.next(); $$7 = (.dge)$$6.w().b(.dge.a(), "chunks"); } while($$7 == null); LongIterator $$8 = $$7.b().iterator(); while($$8.hasNext()) { long $$9 = $$8.nextLong(); .dfp $$10 = new .dfp($$9); $$6.m().a($$10, true); } } } public .dgg u() { return this.j.k(); } public boolean w_() { return this.j.l(); } public abstract int k(); public abstract int l(); public abstract boolean m(); public boolean a(boolean $$0, boolean $$1, boolean $$2) { boolean $$3 = false; for(Iterator var5 = this.L().iterator(); var5.hasNext(); $$3 = true) { .ard $$4 = (.ard)var5.next(); if (!$$0) { l.info("Saving chunks for level '{}'/{}", $$4, $$4.ai().a()); } $$4.a((.azg)null, $$1, $$4.e && !$$2); } .ard $$5 = this.J(); .evl $$6 = this.j.I(); $$6.a($$5.F_().t()); this.j.a(this.aM().a((.jt.a)this.ba())); this.f.a(this.ba(), this.j, this.ag().r()); if ($$1) { Iterator var7 = this.L().iterator(); while(var7.hasNext()) { .ard $$7 = (.ard)var7.next(); l.info("ThreadedAnvilChunkStorage ({}): All chunks are saved", $$7.m().a.n()); } l.info("ThreadedAnvilChunkStorage: All dimensions are saved"); } return $$3; } public boolean b(boolean $$0, boolean $$1, boolean $$2) { boolean var4; try { this.aG = true; this.ag().h(); var4 = this.a($$0, $$1, $$2); } finally { this.aG = false; } return var4; } public void close() { this.v(); } public void v() { if (this.A.e()) { this.aW(); } l.info("Stopping server"); this.ah().b(); this.aG = true; if (this.Q != null) { l.info("Saving players"); this.Q.h(); this.Q.s(); } l.info("Saving worlds"); Iterator var1 = this.L().iterator(); .ard $$2; while(var1.hasNext()) { $$2 = (.ard)var1.next(); if ($$2 != null) { $$2.e = false; } } while(this.P.values().stream().anyMatch(($$0) -> { return $$0.m().a.e(); })) { this.an = .af.d() + .bab.b; var1 = this.L().iterator(); while(var1.hasNext()) { $$2 = (.ard)var1.next(); $$2.m().o(); $$2.m().a(() -> { return true; }, false); } this.x_(); } this.a(false, true, false); var1 = this.L().iterator(); while(var1.hasNext()) { $$2 = (.ard)var1.next(); if ($$2 != null) { try { $$2.close(); } catch (IOException var5) { l.error("Exception closing the level", var5); } } } this.aG = false; this.aA.close(); try { this.f.close(); } catch (IOException var4) { l.error("Failed to unlock level {}", this.f.f(), var4); } } public String w() { return this.M; } public void a_(String $$0) { this.M = $$0; } public boolean x() { return this.R; } public void a(boolean $$0) { this.R = false; if ($$0) { try { this.aj.join(); } catch (InterruptedException var3) { l.error("Error while shutting down", var3); } } } protected void y() { try { if (!this.e()) { throw new IllegalStateException("Failed to initialize server"); } this.an = .af.d(); this.J = (.ajs.a)this.bC().orElse((Object)null); this.I = this.bF(); while(this.R) { long $$1; if (!this.E() && this.aC.a() && this.aC.d()) { $$1 = 0L; this.an = .af.d(); this.ah = this.an; } else { $$1 = this.aC.h(); long $$2 = .af.d() - this.an; if ($$2 > o + 20L * $$1 && this.an - this.ah >= q + 100L * $$1) { long $$3 = $$2 / $$1; l.warn("Can't keep up! Is the server overloaded? Running {}ms or {} ticks behind", $$2 / .bab.b, $$3); this.an += $$3 * $$1; this.ah = this.an; } } boolean $$4 = $$1 == 0L; if (this.F) { this.F = false; this.E = new MinecraftServer.c(.af.d(), this.T); } this.an += $$1; try { .bot.a $$5 = .bot.a(this.bI()); try { .bou $$6 = .bot.a(); $$6.a("tick"); this.aJ.start(); this.a($$4 ? () -> { return false; } : this::bu); this.aJ.end(); $$6.b("nextTickWait"); this.aq = true; this.ap = Math.max(.af.d() + $$1, this.an); this.bs(); this.x_(); this.bt(); if ($$4) { this.aC.e(); } $$6.c(); this.br(); } catch (Throwable var67) { if ($$5 != null) { try { $$5.close(); } catch (Throwable var65) { var67.addSuppressed(var65); } } throw var67; } if ($$5 != null) { $$5.close(); } } finally { this.aS(); } this.ag = true; .bpc.f.a(this.ax); } } catch (Throwable var69) { l.error("Encountered an unexpected exception", var69); .o $$9 = b(var69); this.b($$9.f()); Path $$10 = this.D().resolve("crash-reports").resolve("crash-" + .af.f() + "-server.txt"); if ($$9.a($$10, .y.a)) { l.error("This crash report has been saved to: {}", $$10.toAbsolutePath()); } else { l.error("We were unable to save this crash report to disk."); } this.a($$9); } finally { try { this.S = true; this.v(); } catch (Throwable var64) { l.error("Exception stopping the server", var64); } finally { if (this.i.f() != null) { this.i.f().a(); } this.i(); } } } private void br() { long $$0 = .af.d(); if (this.g()) { this.f().a($$0 - this.ak); } this.ak = $$0; } private void bs() { if (this.g()) { this.al = .af.d(); this.am = 0L; } } private void bt() { if (this.g()) { .bnh $$0 = this.f(); $$0.a(.af.d() - this.al - this.am, .bnj.c.ordinal()); $$0.a(this.am, .bnj.d.ordinal()); } } private static .o b(Throwable $$0) { .z $$1 = null; for(Throwable $$2 = $$0; $$2 != null; $$2 = $$2.getCause()) { if ($$2 instanceof .z) { .z $$3 = (.z)$$2; $$1 = $$3; } } .o $$4; if ($$1 != null) { $$4 = $$1.a(); if ($$1 != $$0) { $$4.a("Wrapped in").a("Wrapping exception", $$0); } } else { $$4 = new .o("Exception in server tick loop", $$0); } return $$4; } private boolean bu() { return this.bB() || .af.d() < (this.aq ? this.ap : this.an); } public static boolean z() { RuntimeException $$0 = (RuntimeException)aH.get(); if ($$0 != null) { throw $$0; } else { return true; } } public static void a(RuntimeException $$0) { aH.compareAndSet((Object)null, $$0); } public void b(BooleanSupplier $$0) { super.b(() -> { return z() && $$0.getAsBoolean(); }); } protected void x_() { this.bA(); this.ao = true; try { this.b(() -> { return !this.bu(); }); } finally { this.ao = false; } } public void A() { boolean $$0 = this.g(); long $$1 = $$0 ? .af.d() : 0L; long $$2 = this.ao ? this.an - .af.d() : 100000L; LockSupport.parkNanos("waiting for tasks", $$2); if ($$0) { this.am += .af.d() - $$1; } } public .als a(Runnable $$0) { return new .als(this.T, $$0); } protected boolean a(.als $$0) { return $$0.a() + 3 < this.T || this.bu(); } public boolean B() { boolean $$0 = this.bv(); this.aq = $$0; return $$0; } private boolean bv() { if (super.B()) { return true; } else { if (this.aC.a() || this.bu()) { Iterator var1 = this.L().iterator(); while(var1.hasNext()) { .ard $$0 = (.ard)var1.next(); if ($$0.m().d()) { return true; } } } return false; } } protected void b(.als $$0) { .bot.a().f("runTask"); super.d($$0); } private Optional<.ajs.a> bC() { Optional $$0 = Optional.of(this.c("server-icon.png")).filter(($$0x) -> { return Files.isRegularFile($$0x, new LinkOption[0]); }).or(() -> { return this.f.j().filter(($$0) -> { return Files.isRegularFile($$0, new LinkOption[0]); }); }); return $$0.flatMap(($$0x) -> { try { BufferedImage $$1 = ImageIO.read($$0x.toFile()); Preconditions.checkState($$1.getWidth() == 64, "Must be 64 pixels wide"); Preconditions.checkState($$1.getHeight() == 64, "Must be 64 pixels high"); ByteArrayOutputStream $$2 = new ByteArrayOutputStream(); ImageIO.write($$1, "PNG", $$2); return Optional.of(new .ajs.a($$2.toByteArray())); } catch (Exception var3) { l.error("Couldn't load server icon", var3); return Optional.empty(); } }); } public Optional C() { return this.f.j(); } public Path D() { return Path.of("", new String[0]); } public void a(.o $$0) { } public void i() { } public boolean E() { return false; } public void a(BooleanSupplier $$0) { long $$1 = .af.d(); int $$2 = this.bq() * 20; if ($$2 > 0) { if (this.Q.m() == 0 && !this.aC.a()) { ++this.aF; } else { this.aF = 0; } if (this.aF >= $$2) { if (this.aF == $$2) { l.info("Server empty for {} seconds, pausing", this.bq()); this.bD(); } this.G(); return; } } ++this.T; this.aC.m(); this.c($$0); if ($$1 - this.ai >= s) { this.ai = $$1; this.I = this.bF(); } --this.U; if (this.U <= 0) { this.bD(); } .bou $$3 = .bot.a(); $$3.a("tallying"); long $$4 = .af.d() - $$1; int $$5 = this.T % 100; this.ac -= this.ab[$$5]; this.ac += $$4; this.ab[$$5] = $$4; this.ax = this.ax * 0.8F + (float)$$4 / (float).bab.b * 0.19999999F; this.a($$1); $$3.c(); } private void bD() { this.U = this.bE(); l.debug("Autosave started"); .bou $$0 = .bot.a(); $$0.a("save"); this.b(true, false, false); $$0.c(); l.debug("Autosave finished"); } private void a(long $$0) { if (this.g()) { this.f().a(.af.d() - $$0, .bnj.b.ordinal()); } } private int bE() { float $$2; if (this.aC.a()) { long $$0 = this.aQ() + 1L; $$2 = (float).bab.a / (float)$$0; } else { $$2 = this.aC.f(); } int $$3 = true; return Math.max(100, (int)($$2 * 300.0F)); } public void F() { int $$0 = this.bE(); if ($$0 < this.U) { this.U = $$0; } } protected abstract .bnh f(); public abstract boolean g(); private .ajs bF() { .ajs.b $$0 = this.bG(); return new .ajs(.wp.a(this.Z), Optional.of($$0), Optional.of(.ajs.c.a()), Optional.ofNullable(this.J), this.aA()); } private .ajs.b bG() { List<.are> $$0 = this.Q.t(); int $$1 = this.O(); if (this.an()) { return new .ajs.b($$1, $$0.size(), List.of()); } else { int $$2 = Math.min($$0.size(), 12); ObjectArrayList $$3 = new ObjectArrayList($$2); int $$4 = .ayz.a(this.K, 0, $$0.size() - $$2); for(int $$5 = 0; $$5 < $$2; ++$$5) { .are $$6 = (.are)$$0.get($$4 + $$5); $$3.add($$6.ab() ? $$6.gh() : e); } .af.c($$3, this.K); return new .ajs.b($$1, $$0.size(), $$3); } } protected void c(BooleanSupplier $$0) { .bou $$1 = .bot.a(); this.ag().t().forEach(($$0x) -> { $$0x.f.f(); }); $$1.a("commandFunctions"); this.aE().b(); $$1.b("levels"); Iterator var3 = this.L().iterator(); while(var3.hasNext()) { .ard $$2 = (.ard)var3.next(); $$1.a(() -> { String var10000 = String.valueOf($$2); return var10000 + " " + String.valueOf($$2.ai().a()); }); if (this.T % 20 == 0) { $$1.a("timeSync"); this.b($$2); $$1.c(); } $$1.a("tick"); try { $$2.a($$0); } catch (Throwable var7) { .o $$4 = .o.a(var7, "Exception ticking world"); $$2.a($$4); throw new .z($$4); } $$1.c(); $$1.c(); } $$1.b("connection"); this.G(); $$1.b("players"); this.Q.d(); if (.ab.aU && this.aC.i()) { .sr.a.b(); } $$1.b("server gui refresh"); for(int $$5 = 0; $$5 < this.z.size(); ++$$5) { ((Runnable)this.z.get($$5)).run(); } $$1.b("send chunks"); var3 = this.Q.t().iterator(); while(var3.hasNext()) { .are $$6 = (.are)var3.next(); $$6.f.g.a($$6); $$6.f.g(); } $$1.c(); } public void G() { this.ah().c(); } private void b(.ard $$0) { this.Q.a((.yw)(new .afj($$0.ad(), $$0.ae(), $$0.O().b(.dgf.l))), (.aku)$$0.ai()); } public void H() { .bou $$0 = .bot.a(); $$0.a("timeSync"); Iterator var2 = this.L().iterator(); while(var2.hasNext()) { .ard $$1 = (.ard)var2.next(); this.b($$1); } $$0.c(); } public boolean a(.dgj $$0) { return true; } public void b(Runnable $$0) { this.z.add($$0); } protected void b(String $$0) { this.az = $$0; } public boolean I() { return !this.aj.isAlive(); } public Path c(String $$0) { return this.D().resolve($$0); } public final .ard J() { return (.ard)this.P.get(.dgj.i); } @Nullable public .ard a(.aku<.dgj> $$0) { return (.ard)this.P.get($$0); } public Set<.aku<.dgj>> K() { return this.P.keySet(); } public Iterable<.ard> L() { return this.P.values(); } public String M() { return .ab.b().c(); } public int N() { return this.Q.m(); } public int O() { return this.Q.n(); } public String[] P() { return this.Q.e(); } @DontObfuscate public String getServerModName() { return "vanilla"; } public .ad b(.ad $$0) { $$0.a("Server Running", () -> { return Boolean.toString(this.R); }); if (this.Q != null) { $$0.a("Player Count", () -> { int var10000 = this.Q.m(); return var10000 + " / " + this.Q.n() + "; " + String.valueOf(this.Q.t()); }); } $$0.a("Active Data Packs", () -> { return .aua.a(this.ar.g()); }); $$0.a("Available Data Packs", () -> { return .aua.a(this.ar.d()); }); $$0.a("Enabled Feature Flags", () -> { return (String).crw.e.b(this.j.K()).stream().map(.akv::toString).collect(Collectors.joining(", ")); }); $$0.a("World Generation", () -> { return this.j.B().toString(); }); $$0.a("World Seed", () -> { return String.valueOf(this.j.y().c()); }); .alr var10002 = this.aI; Objects.requireNonNull(var10002); $$0.a("Suppressed Exceptions", var10002::a); if (this.az != null) { $$0.a("Server Id", () -> { return this.az; }); } return this.a($$0); } public abstract .ad a(.ad var1); public .ayy Q() { return .ayy.a("vanilla", this::getServerModName, "Server", MinecraftServer.class); } public void a(.wp $$0) { l.info($$0.getString()); } public KeyPair R() { return this.ad; } public int S() { return this.N; } public void a(int $$0) { this.N = $$0; } @Nullable public GameProfile T() { return this.ae; } public void b(@Nullable GameProfile $$0) { this.ae = $$0; } public boolean U() { return this.ae != null; } protected void V() { l.info("Generating keypair"); try { this.ad = .axx.b(); } catch (.axy var2) { throw new IllegalStateException("Failed to generate key pair", var2); } } public void a(.bsi $$0, boolean $$1) { if ($$1 || !this.j.r()) { this.j.a(this.j.l() ? .bsi.d : $$0); this.bH(); this.ag().t().forEach(this::c); } } public int b(int $$0) { return $$0; } private void bH() { Iterator var1 = this.L().iterator(); while(var1.hasNext()) { .ard $$0 = (.ard)var1.next(); $$0.a(this.W()); } } public void b(boolean $$0) { this.j.d($$0); this.ag().t().forEach(this::c); } private void c(.are $$0) { .evc $$1 = $$0.dV().D_(); $$0.f.b((.yw)(new .aby($$1.q(), $$1.r()))); } public boolean W() { return this.j.q() != .bsi.a; } public boolean X() { return this.af; } public void c(boolean $$0) { this.af = $$0; } public Optional Y() { return Optional.empty(); } public boolean Z() { return this.Y().filter(MinecraftServer.b::d).isPresent(); } public abstract boolean n(); public abstract int o(); public boolean aa() { return this.V; } public void d(boolean $$0) { this.V = $$0; } public boolean ab() { return this.W; } public void e(boolean $$0) { this.W = $$0; } public abstract boolean p(); public boolean ac() { return this.X; } public void f(boolean $$0) { this.X = $$0; } public boolean ad() { return this.Y; } public void g(boolean $$0) { this.Y = $$0; } public abstract boolean q(); public String ae() { return this.Z; } public void d(String $$0) { this.Z = $$0; } public boolean af() { return this.S; } public .avd ag() { return this.Q; } public void a(.avd $$0) { this.Q = $$0; } public abstract boolean r(); public void a(.dgg $$0) { this.j.a($$0); } public .asf ah() { return this.G; } public boolean ai() { return this.ag; } public boolean aj() { return false; } public boolean a(@Nullable .dgg $$0, boolean $$1, int $$2) { return false; } public int ak() { return this.T; } public int al() { return 16; } public boolean a(.ard $$0, .ji $$1, .coy $$2) { return false; } public boolean am() { return true; } public boolean an() { return false; } public Proxy ao() { return this.h; } public int ap() { return this.aa; } public void c(int $$0) { this.aa = $$0; } public MinecraftSessionService aq() { return this.i.c(); } @Nullable public .azm ar() { return this.i.a(); } public GameProfileRepository as() { return this.i.e(); } @Nullable public .auz at() { return this.i.f(); } @Nullable public .ajs au() { return this.I; } public void av() { this.ai = 0L; } public int aw() { return 29999984; } public boolean ax() { return super.ax() && !this.af(); } public void c(Runnable $$0) { if (this.af()) { throw new RejectedExecutionException("Server already shutting down"); } else { super.c($$0); } } public Thread ay() { return this.aj; } public int az() { return 256; } public boolean aA() { return false; } public long aB() { return this.an; } public DataFixer aC() { return this.L; } public int a(@Nullable .ard $$0) { return $$0 != null ? $$0.O().c(.dgf.s) : 10; } public .ali aD() { return this.aA.b.e(); } public .alk aE() { return this.av; } public CompletableFuture a(Collection $$0) { CompletableFuture $$1 = CompletableFuture.supplyAsync(() -> { Stream var10000 = $$0.stream(); .aua var10001 = this.ar; Objects.requireNonNull(var10001); return (ImmutableList)var10000.map(var10001::c).filter(Objects::nonNull).map(.atx::f).collect(ImmutableList.toImmutableList()); }, this).thenCompose(($$0x) -> { .auf $$1 = new .aui(.ate.b, $$0x); List<.ke.a> $$2 = .axg.a((.aup)$$1, (.kf)this.O.a()); return .alg.a($$1, this.O, $$2, this.j.K(), this.n() ? .ey.a.b : .ey.a.c, this.l(), this.ay, this).whenComplete(($$1x, $$2x) -> { if ($$2x != null) { $$1.close(); } }).thenApply(($$1x) -> { return new MinecraftServer.a($$1, $$1x); }); }).thenAcceptAsync(($$1x) -> { this.aA.close(); this.aA = $$1x; this.ar.b($$0); .dhg $$2 = new .dhg(a(this.ar, true), this.j.K()); this.j.a($$2); this.aA.b.g(); this.aA.b.c().a(this.j.K()); this.ag().h(); this.ag().u(); this.av.a(this.aA.b.a()); this.aB.a((.aup)this.aA.a); this.aE = .duy.a(this.O.a(), this.j.K()); }, this); if (this.bx()) { Objects.requireNonNull($$1); this.b($$1::isDone); } return $$1; } public static .dhg a(.aua $$0, .dhg $$1, boolean $$2, boolean $$3) { .dfw $$4 = $$1.a(); .cru $$5 = $$2 ? .cru.a() : $$1.b(); .cru $$6 = $$2 ? .crw.e.a() : $$1.b(); $$0.a(); if ($$3) { return a($$0, List.of("vanilla"), $$5, false); } else { Set $$7 = Sets.newLinkedHashSet(); Iterator var8 = $$4.a().iterator(); while(var8.hasNext()) { String $$8 = (String)var8.next(); if ($$0.d($$8)) { $$7.add($$8); } else { l.warn("Missing data pack {}", $$8); } } var8 = $$0.d().iterator(); while(var8.hasNext()) { .atx $$9 = (.atx)var8.next(); String $$10 = $$9.g(); if (!$$4.b().contains($$10)) { .cru $$11 = $$9.e(); boolean $$12 = $$7.contains($$10); if (!$$12 && $$9.l().a()) { if ($$11.a($$6)) { l.info("Found new data pack {}, loading it automatically", $$10); $$7.add($$10); } else { l.info("Found new data pack {}, but can't load it due to missing features {}", $$10, .crw.a($$6, $$11)); } } if ($$12 && !$$11.a($$6)) { l.warn("Pack {} requires features {} that are not enabled for this world, disabling pack.", $$10, .crw.a($$6, $$11)); $$7.remove($$10); } } } if ($$7.isEmpty()) { l.info("No datapacks selected, forcing vanilla"); $$7.add("vanilla"); } return a($$0, $$7, $$5, true); } } private static .dhg a(.aua $$0, Collection $$1, .cru $$2, boolean $$3) { $$0.b($$1); a($$0, $$2); .dfw $$4 = a($$0, $$3); .cru $$5 = $$0.f().c($$2); return new .dhg($$4, $$5); } private static void a(.aua $$0, .cru $$1) { .cru $$2 = $$0.f(); .cru $$3 = $$1.d($$2); if (!$$3.b()) { Set $$4 = new ObjectArraySet($$0.e()); Iterator var5 = $$0.d().iterator(); while(var5.hasNext()) { .atx $$5 = (.atx)var5.next(); if ($$3.b()) { break; } if ($$5.l() == .aub.d) { String $$6 = $$5.g(); .cru $$7 = $$5.e(); if (!$$7.b() && $$7.b($$3) && $$7.a($$1)) { if (!$$4.add($$6)) { throw new IllegalStateException("Tried to force '" + $$6 + "', but it was already enabled"); } l.info("Found feature pack ('{}') for requested feature, forcing to enabled", $$6); $$3 = $$3.d($$7); } } } $$0.b((Collection)$$4); } } private static .dfw a(.aua $$0, boolean $$1) { Collection $$2 = $$0.e(); List $$3 = ImmutableList.copyOf($$2); List $$4 = $$1 ? $$0.c().stream().filter(($$1x) -> { return !$$2.contains($$1x); }).toList() : List.of(); return new .dfw($$3, $$4); } public void a(.ex $$0) { if (this.aN()) { .avd $$1 = $$0.l().ag(); .avl $$2 = $$1.i(); List<.are> $$3 = Lists.newArrayList($$1.t()); Iterator var5 = $$3.iterator(); while(var5.hasNext()) { .are $$4 = (.are)var5.next(); if (!$$2.a($$4.gh())) { $$4.f.a((.wp).wp.c("multiplayer.disconnect.not_whitelisted")); } } } } public .aua aF() { return this.ar; } public .ey aG() { return this.aA.b.d(); } public .ex aH() { .ard $$0 = this.J(); return new .ex(this, $$0 == null ? .fbb.c : .fbb.a((.km)$$0.Z()), .fba.a, $$0, 4, "Server", .wp.b("Server"), this, (.bum)null); } public boolean y_() { return true; } public boolean z_() { return true; } public abstract boolean c(); public .dbm aI() { return this.aA.b.c(); } public .alo aJ() { return this.as; } public .eux aK() { if (this.at == null) { throw new NullPointerException("Called before server init"); } else { return this.at; } } public .dgf aL() { return this.J().O(); } public .aly aM() { return this.au; } public boolean aN() { return this.aw; } public void h(boolean $$0) { this.aw = $$0; } public float aO() { return this.ax; } public .alp aP() { return this.aC; } public long aQ() { return this.ac / (long)Math.min(100, Math.max(this.T, 1)); } public long[] aR() { return this.ab; } public int c(GameProfile $$0) { if (this.ag().f($$0)) { .avf $$1 = (.avf)this.ag().k().b($$0); if ($$1 != null) { return $$1.a(); } else if (this.a($$0)) { return 4; } else if (this.U()) { return this.ag().v() ? 4 : 0; } else { return this.k(); } } else { return 0; } } public abstract boolean a(GameProfile var1); public void a(Path $$0) throws IOException { } private void b(Path $$0) { Path $$1 = $$0.resolve("levels"); try { Iterator var3 = this.P.entrySet().iterator(); while(var3.hasNext()) { Entry<.aku<.dgj>, .ard> $$2 = (Entry)var3.next(); .akv $$3 = ((.aku)$$2.getKey()).a(); Path $$4 = $$1.resolve($$3.b()).resolve($$3.a()); Files.createDirectories($$4); ((.ard)$$2.getValue()).a($$4); } this.d($$0.resolve("gamerules.txt")); this.e($$0.resolve("classpath.txt")); this.c($$0.resolve("stats.txt")); this.f($$0.resolve("threads.txt")); this.a($$0.resolve("server.properties.txt")); this.g($$0.resolve("modules.txt")); } catch (IOException var7) { l.warn("Failed to save debug report", var7); } } private void c(Path $$0) throws IOException { BufferedWriter $$1 = Files.newBufferedWriter($$0); try { $$1.write(String.format(Locale.ROOT, "pending_tasks: %d\n", this.by())); $$1.write(String.format(Locale.ROOT, "average_tick_time: %f\n", this.aO())); $$1.write(String.format(Locale.ROOT, "tick_times: %s\n", Arrays.toString(this.ab))); $$1.write(String.format(Locale.ROOT, "queue: %s\n", .af.h())); } catch (Throwable var6) { if ($$1 != null) { try { $$1.close(); } catch (Throwable var5) { var6.addSuppressed(var5); } } throw var6; } if ($$1 != null) { $$1.close(); } } private void d(Path $$0) throws IOException { BufferedWriter $$1 = Files.newBufferedWriter($$0); try { final List $$2 = Lists.newArrayList(); final .dgf $$3 = this.aL(); $$3.a(new .dgf.c(this) { public > void a(.dgf.e $$0, .dgf.f $$1) { $$2.add(String.format(Locale.ROOT, "%s=%s\n", $$0.a(), $$3.a($$0))); } }); Iterator var5 = $$2.iterator(); while(var5.hasNext()) { String $$4 = (String)var5.next(); $$1.write($$4); } } catch (Throwable var8) { if ($$1 != null) { try { $$1.close(); } catch (Throwable var7) { var8.addSuppressed(var7); } } throw var8; } if ($$1 != null) { $$1.close(); } } private void e(Path $$0) throws IOException { BufferedWriter $$1 = Files.newBufferedWriter($$0); try { String $$2 = System.getProperty("java.class.path"); String $$3 = System.getProperty("path.separator"); Iterator var5 = Splitter.on($$3).split($$2).iterator(); while(var5.hasNext()) { String $$4 = (String)var5.next(); $$1.write($$4); $$1.write("\n"); } } catch (Throwable var8) { if ($$1 != null) { try { $$1.close(); } catch (Throwable var7) { var8.addSuppressed(var7); } } throw var8; } if ($$1 != null) { $$1.close(); } } private void f(Path $$0) throws IOException { ThreadMXBean $$1 = ManagementFactory.getThreadMXBean(); ThreadInfo[] $$2 = $$1.dumpAllThreads(true, true); Arrays.sort($$2, Comparator.comparing(ThreadInfo::getThreadName)); BufferedWriter $$3 = Files.newBufferedWriter($$0); try { ThreadInfo[] var5 = $$2; int var6 = $$2.length; for(int var7 = 0; var7 < var6; ++var7) { ThreadInfo $$4 = var5[var7]; $$3.write($$4.toString()); $$3.write(10); } } catch (Throwable var10) { if ($$3 != null) { try { $$3.close(); } catch (Throwable var9) { var10.addSuppressed(var9); } } throw var10; } if ($$3 != null) { $$3.close(); } } private void g(Path $$0) throws IOException { BufferedWriter $$1 = Files.newBufferedWriter($$0); label50: { try { label51: { ArrayList $$4; try { $$4 = Lists.newArrayList(.aza.a()); } catch (Throwable var7) { l.warn("Failed to list native modules", var7); break label51; } $$4.sort(Comparator.comparing(($$0x) -> { return $$0x.a; })); Iterator var4 = $$4.iterator(); while(true) { if (!var4.hasNext()) { break label50; } .aza.a $$5 = (.aza.a)var4.next(); $$1.write($$5.toString()); $$1.write(10); } } } catch (Throwable var8) { if ($$1 != null) { try { $$1.close(); } catch (Throwable var6) { var8.addSuppressed(var6); } } throw var8; } if ($$1 != null) { $$1.close(); } return; } if ($$1 != null) { $$1.close(); } } private .bou bI() { if (this.D) { this.A = .bqj.a(new .bqn(.af.c, this.n()), .af.c, .af.i(), new .bqp("server"), this.B, ($$0) -> { this.h(() -> { this.b($$0.resolve("server")); }); this.C.accept($$0); }); this.D = false; } this.A.c(); return .box.a(this.A.f(), .box.a("Server")); } public void aS() { this.A.d(); } public boolean aT() { return this.A.e(); } public void a(Consumer<.bos> $$0, Consumer $$1) { this.B = ($$1x) -> { this.aU(); $$0.accept($$1x); }; this.C = $$1; this.D = true; } public void aU() { this.A = .bqk.a; } public void aV() { this.A.a(); } public void aW() { this.A.b(); } public Path a(.eve $$0) { return this.f.a($$0); } public boolean aX() { return true; } public .erq aY() { return this.aB; } public .evm aZ() { return this.j; } public .kf.b ba() { return this.O.a(); } public .jy<.ale> bb() { return this.O; } public .alf.a bc() { return this.aA.b.b(); } public .asm a(.are $$0) { return .asm.e; } public .arf b(.are $$0) { return (.arf)(this.X() ? new .aqq($$0) : new .arf($$0)); } @Nullable public .dgg bd() { return null; } public .aup be() { return this.aA.a; } public boolean bf() { return this.aG; } public boolean bg() { return this.F || this.E != null; } public void bh() { this.F = true; } public .bos bi() { if (this.E == null) { return .boo.a; } else { .bos $$0 = this.E.a(.af.d(), this.T); this.E = null; return $$0; } } public int bj() { return 1000000; } public void a(.wp $$0, .wl.a $$1, @Nullable String $$2) { String $$3 = $$1.a($$0).getString(); if ($$2 != null) { l.info("[{}] {}", $$2, $$3); } else { l.info("{}", $$3); } } public .wk bk() { return .wk.a; } public boolean bl() { return true; } public void a(.are $$0, .bnf $$1) { } public boolean bm() { return false; } private void a(.o $$0, .dfp $$1, .eam $$2) { .af.i().execute(() -> { try { Path $$3 = this.c("debug"); .v.c($$3); String $$4 = .v.a($$2.a()); Path $$5 = $$3.resolve("chunk-" + $$4 + "-" + .af.f() + "-server.txt"); FileStore $$6 = Files.getFileStore($$3); long $$7 = $$6.getUsableSpace(); if ($$7 < 8192L) { l.warn("Not storing chunk IO report due to low space on drive {}", $$6.name()); return; } .p $$8 = $$0.a("Chunk Info"); Objects.requireNonNull($$2); $$8.a("Level", $$2::a); $$8.a("Dimension", () -> { return $$2.b().a().toString(); }); Objects.requireNonNull($$2); $$8.a("Storage", $$2::c); Objects.requireNonNull($$1); $$8.a("Position", $$1::toString); $$0.a($$5, .y.e); l.info("Saved details to {}", $$0.e()); } catch (Exception var11) { l.warn("Failed to store chunk IO exception", var11); } }); } public void a(Throwable $$0, .eam $$1, .dfp $$2) { l.error("Failed to load chunk {},{}", new Object[]{$$2.h, $$2.i, $$0}); this.aI.a("chunk/load", $$0); this.a(.o.a($$0, "Chunk load failure"), $$2, $$1); } public void b(Throwable $$0, .eam $$1, .dfp $$2) { l.error("Failed to save chunk {},{}", new Object[]{$$2.h, $$2.i, $$0}); this.aI.a("chunk/save", $$0); this.a(.o.a($$0, "Chunk save failure"), $$2, $$1); } public void a(Throwable $$0, .yy $$1) { this.aI.a("packet/" + $$1.toString(), $$0); } public .cyo bn() { return this.aD; } public .duy bo() { return this.aE; } public .aln bp() { return .aln.a; } protected int bq() { return 0; } // $FF: synthetic method public void d(final Runnable param1) { this.b((.als)var1); } // $FF: synthetic method public boolean e(final Runnable param1) { return this.a((.als)var1); } // $FF: synthetic method public Runnable f(final Runnable param1) { return this.a(var1); } static { o = 20L * .bab.a / 20L; q = 10L * .bab.a; s = 5L * .bab.a; t = 10L * .bab.b; d = new .dgn("Demo World", .dgg.a, false, .bsi.c, false, new .dgf(.crw.h), .dhg.c); e = new GameProfile(.af.e, "Anonymous Player"); aH = new AtomicReference(); } private static record a(.auf a, .alg b) implements AutoCloseable { final .auf a; final .alg b; a(.auf param1, .alg param2) { this.a = $$0; this.b = $$1; } public void close() { this.a.close(); } public .auf a() { return this.a; } public .alg b() { return this.b; } } private static class c { final long a; final int b; c(long $$0, int $$1) { this.a = $$0; this.b = $$1; } .bos a(long $$0, int $$1) { return new .bos($$0, $$1) { // $FF: synthetic field final long a; // $FF: synthetic field final int b; // $FF: synthetic field final MinecraftServer.c c; { this.c = $$0; this.a = var2; this.b = var4; } public List<.bow> a(String $$0) { return Collections.emptyList(); } public boolean a(Path $$0) { return false; } public long a() { return this.c.a; } public int b() { return this.c.b; } public long c() { return this.a; } public int d() { return this.b; } public String e() { return ""; } }; } } public static record b(UUID a, String b, String c, boolean d, @Nullable .wp e) { public b(UUID param1, String param2, String param3, boolean param4, @Nullable .wp param5) { this.a = $$0; this.b = $$1; this.c = $$2; this.d = $$3; this.e = $$4; } public UUID a() { return this.a; } public String b() { return this.b; } public String c() { return this.c; } public boolean d() { return this.d; } @Nullable public .wp e() { return this.e; } } }package net.minecraft.util.profiling.jfr.event; import jdk.jfr.Category; import jdk.jfr.Enabled; import jdk.jfr.Event; import jdk.jfr.EventType; import jdk.jfr.Label; import jdk.jfr.Name; import jdk.jfr.StackTrace; import net.minecraft.obfuscate.DontObfuscate; @Name("minecraft.ChunkGeneration") @Label("Chunk Generation") @Category({"Minecraft", "World Generation"}) @StackTrace(false) @Enabled(false) @DontObfuscate public class ChunkGenerationEvent extends Event { public static final String EVENT_NAME = "minecraft.ChunkGeneration"; public static final EventType TYPE = EventType.getEventType(ChunkGenerationEvent.class); @Name("worldPosX") @Label("First Block X World Position") public final int worldPosX; @Name("worldPosZ") @Label("First Block Z World Position") public final int worldPosZ; @Name("chunkPosX") @Label("Chunk X Position") public final int chunkPosX; @Name("chunkPosZ") @Label("Chunk Z Position") public final int chunkPosZ; @Name("status") @Label("Status") public final String targetStatus; @Name("level") @Label("Level") public final String level; public ChunkGenerationEvent(.dfp $$0, .aku<.dgj> $$1, String $$2) { this.targetStatus = $$2; this.level = $$1.a().toString(); this.chunkPosX = $$0.h; this.chunkPosZ = $$0.i; this.worldPosX = $$0.d(); this.worldPosZ = $$0.e(); } public static class a { public static final String a = "worldPosX"; public static final String b = "worldPosZ"; public static final String c = "chunkPosX"; public static final String d = "chunkPosZ"; public static final String e = "status"; public static final String f = "level"; private a() { } } } package net.minecraft.util.profiling.jfr.event; import jdk.jfr.EventType; import jdk.jfr.Label; import jdk.jfr.Name; import net.minecraft.obfuscate.DontObfuscate; @Name("minecraft.ChunkRegionRead") @Label("Region File Read") @DontObfuscate public class ChunkRegionReadEvent extends .bph { public static final String EVENT_NAME = "minecraft.ChunkRegionRead"; public static final EventType TYPE = EventType.getEventType(ChunkRegionReadEvent.class); public ChunkRegionReadEvent(.eam $$0, .dfp $$1, .eal $$2, int $$3) { super($$0, $$1, $$2, $$3); } } package net.minecraft.util.profiling.jfr.event; import jdk.jfr.EventType; import jdk.jfr.Label; import jdk.jfr.Name; import net.minecraft.obfuscate.DontObfuscate; @Name("minecraft.ChunkRegionWrite") @Label("Region File Write") @DontObfuscate public class ChunkRegionWriteEvent extends .bph { public static final String EVENT_NAME = "minecraft.ChunkRegionWrite"; public static final EventType TYPE = EventType.getEventType(ChunkRegionWriteEvent.class); public ChunkRegionWriteEvent(.eam $$0, .dfp $$1, .eal $$2, int $$3) { super($$0, $$1, $$2, $$3); } }package net.minecraft.util.profiling.jfr.event; import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.atomic.AtomicLong; import jdk.jfr.Category; import jdk.jfr.DataAmount; import jdk.jfr.Event; import jdk.jfr.EventType; import jdk.jfr.Label; import jdk.jfr.Name; import jdk.jfr.Period; import jdk.jfr.StackTrace; import net.minecraft.obfuscate.DontObfuscate; @Name("minecraft.NetworkSummary") @Label("Network Summary") @Category({"Minecraft", "Network"}) @StackTrace(false) @Period("10 s") @DontObfuscate public class NetworkSummaryEvent extends Event { public static final String EVENT_NAME = "minecraft.NetworkSummary"; public static final EventType TYPE = EventType.getEventType(NetworkSummaryEvent.class); @Name("remoteAddress") @Label("Remote Address") public final String remoteAddress; @Name("sentBytes") @Label("Sent Bytes") @DataAmount public long sentBytes; @Name("sentPackets") @Label("Sent Packets") public int sentPackets; @Name("receivedBytes") @Label("Received Bytes") @DataAmount public long receivedBytes; @Name("receivedPackets") @Label("Received Packets") public int receivedPackets; public NetworkSummaryEvent(String $$0) { this.remoteAddress = $$0; } public static final class b { private final AtomicLong a = new AtomicLong(); private final AtomicInteger b = new AtomicInteger(); private final AtomicLong c = new AtomicLong(); private final AtomicInteger d = new AtomicInteger(); private final NetworkSummaryEvent e; public b(String $$0) { this.e = new NetworkSummaryEvent($$0); this.e.begin(); } public void a(int $$0) { this.b.incrementAndGet(); this.a.addAndGet((long)$$0); } public void b(int $$0) { this.d.incrementAndGet(); this.c.addAndGet((long)$$0); } public void a() { this.e.sentBytes = this.a.get(); this.e.sentPackets = this.b.get(); this.e.receivedBytes = this.c.get(); this.e.receivedPackets = this.d.get(); this.e.commit(); } } public static final class a { public static final String a = "remoteAddress"; public static final String b = "sentBytes"; private static final String d = "sentPackets"; public static final String c = "receivedBytes"; private static final String e = "receivedPackets"; private a() { } } } package net.minecraft.util.profiling.jfr.event; import java.net.SocketAddress; import jdk.jfr.EventType; import jdk.jfr.Label; import jdk.jfr.Name; import net.minecraft.obfuscate.DontObfuscate; @Name("minecraft.PacketReceived") @Label("Network Packet Received") @DontObfuscate public class PacketReceivedEvent extends .bpi { public static final String NAME = "minecraft.PacketReceived"; public static final EventType TYPE = EventType.getEventType(PacketReceivedEvent.class); public PacketReceivedEvent(String $$0, String $$1, String $$2, SocketAddress $$3, int $$4) { super($$0, $$1, $$2, $$3, $$4); } } package net.minecraft.util.profiling.jfr.event; import java.net.SocketAddress; import jdk.jfr.EventType; import jdk.jfr.Label; import jdk.jfr.Name; import net.minecraft.obfuscate.DontObfuscate; @Name("minecraft.PacketSent") @Label("Network Packet Sent") @DontObfuscate public class PacketSentEvent extends .bpi { public static final String NAME = "minecraft.PacketSent"; public static final EventType TYPE = EventType.getEventType(PacketSentEvent.class); public PacketSentEvent(String $$0, String $$1, String $$2, SocketAddress $$3, int $$4) { super($$0, $$1, $$2, $$3, $$4); } }package net.minecraft.util.profiling.jfr.event; import jdk.jfr.Category; import jdk.jfr.Event; import jdk.jfr.EventType; import jdk.jfr.Label; import jdk.jfr.Name; import jdk.jfr.Period; import jdk.jfr.StackTrace; import jdk.jfr.Timespan; import net.minecraft.obfuscate.DontObfuscate; @Name("minecraft.ServerTickTime") @Label("Server Tick Time") @Category({"Minecraft", "Ticking"}) @StackTrace(false) @Period("1 s") @DontObfuscate public class ServerTickTimeEvent extends Event { public static final String EVENT_NAME = "minecraft.ServerTickTime"; public static final EventType TYPE = EventType.getEventType(ServerTickTimeEvent.class); @Name("averageTickDuration") @Label("Average Server Tick Duration") @Timespan public final long averageTickDurationNanos; public ServerTickTimeEvent(float $$0) { this.averageTickDurationNanos = (long)(1000000.0F * $$0); } public static class a { public static final String a = "averageTickDuration"; private a() { } } }package net.minecraft.util.profiling.jfr.event; import jdk.jfr.Category; import jdk.jfr.Enabled; import jdk.jfr.Event; import jdk.jfr.EventType; import jdk.jfr.Label; import jdk.jfr.Name; import jdk.jfr.StackTrace; import net.minecraft.obfuscate.DontObfuscate; @Name("minecraft.StructureGeneration") @Label("Structure Generation") @Category({"Minecraft", "World Generation"}) @StackTrace(false) @Enabled(false) @DontObfuscate public class StructureGenerationEvent extends Event { public static final String EVENT_NAME = "minecraft.StructureGeneration"; public static final EventType TYPE = EventType.getEventType(StructureGenerationEvent.class); @Name("chunkPosX") @Label("Chunk X Position") public final int chunkPosX; @Name("chunkPosZ") @Label("Chunk Z Position") public final int chunkPosZ; @Name("structure") @Label("Structure") public final String structure; @Name("level") @Label("Level") public final String level; @Name("success") @Label("Success") public boolean success; public StructureGenerationEvent(.dfp $$0, .jr<.enn> $$1, .aku<.dgj> $$2) { this.chunkPosX = $$0.h; this.chunkPosZ = $$0.i; this.structure = $$1.g(); this.level = $$2.a().toString(); } public interface a { String a = "chunkPosX"; String b = "chunkPosZ"; String c = "structure"; String d = "level"; String e = "success"; } } package net.minecraft.util.profiling.jfr.event; import jdk.jfr.Category; import jdk.jfr.Event; import jdk.jfr.EventType; import jdk.jfr.Label; import jdk.jfr.Name; import jdk.jfr.StackTrace; import net.minecraft.obfuscate.DontObfuscate; @Name("minecraft.LoadWorld") @Label("Create/Load World") @Category({"Minecraft", "World Generation"}) @StackTrace(false) @DontObfuscate public class WorldLoadFinishedEvent extends Event { public static final String EVENT_NAME = "minecraft.LoadWorld"; public static final EventType TYPE = EventType.getEventType(WorldLoadFinishedEvent.class); } package net.minecraft.bundler; import java.io.BufferedReader; @FunctionalInterface interface Main$ResourceParser { T parse(BufferedReader var1) throws Exception; } package net.minecraft.bundler; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; import java.lang.invoke.MethodHandle; import java.lang.invoke.MethodHandles; import java.lang.invoke.MethodType; import java.net.URL; import java.net.URLClassLoader; import java.nio.charset.StandardCharsets; import java.nio.file.CopyOption; import java.nio.file.Files; import java.nio.file.LinkOption; import java.nio.file.Path; import java.nio.file.Paths; import java.nio.file.StandardCopyOption; import java.security.DigestOutputStream; import java.security.MessageDigest; import java.util.ArrayList; import java.util.Iterator; import java.util.List; public class Main { public static void main(String[] argv) { (new Main()).run(argv); } private void run(String[] argv) { try { String defaultMainClassName = (String)this.readResource("main-class", BufferedReader::readLine); String mainClassName = System.getProperty("bundlerMainClass", defaultMainClassName); String repoDir = System.getProperty("bundlerRepoDir", ""); Path outputDir = Paths.get(repoDir); Files.createDirectories(outputDir); List extractedUrls = new ArrayList(); this.readAndExtractDir("versions", outputDir, extractedUrls); this.readAndExtractDir("libraries", outputDir, extractedUrls); if (mainClassName == null || mainClassName.isEmpty()) { System.out.println("Empty main class specified, exiting"); System.exit(0); } ClassLoader maybePlatformClassLoader = this.getClass().getClassLoader().getParent(); URLClassLoader classLoader = new URLClassLoader((URL[])extractedUrls.toArray(new URL[0]), maybePlatformClassLoader); System.out.println("Starting " + mainClassName); Thread runThread = new Thread(() -> { try { Class mainClass = Class.forName(mainClassName, true, classLoader); MethodHandle mainHandle = MethodHandles.lookup().findStatic(mainClass, "main", MethodType.methodType(Void.TYPE, String[].class)).asFixedArity(); mainHandle.invoke(argv); } catch (Throwable var5) { net.minecraft.bundler.Main.Thrower.INSTANCE.sneakyThrow(var5); } }, "ServerMain"); runThread.setContextClassLoader(classLoader); runThread.start(); } catch (Exception var10) { var10.printStackTrace(System.out); System.out.println("Failed to extract server libraries, exiting"); } } private T readResource(String resource, net.minecraft.bundler.Main.ResourceParser parser) throws Exception { String fullPath = "/META-INF/" + resource; InputStream is = this.getClass().getResourceAsStream(fullPath); Object var5; try { if (is == null) { throw new IllegalStateException("Resource " + fullPath + " not found"); } var5 = parser.parse(new BufferedReader(new InputStreamReader(is, StandardCharsets.UTF_8))); } catch (Throwable var8) { if (is != null) { try { is.close(); } catch (Throwable var7) { var8.addSuppressed(var7); } } throw var8; } if (is != null) { is.close(); } return var5; } private void readAndExtractDir(String subdir, Path outputDir, List extractedUrls) throws Exception { List entries = (List)this.readResource(subdir + ".list", (reader) -> { return reader.lines().map(net.minecraft.bundler.Main.FileEntry::parseLine).toList(); }); Path subdirPath = outputDir.resolve(subdir); Iterator var6 = entries.iterator(); while(var6.hasNext()) { net.minecraft.bundler.Main.FileEntry entry = (net.minecraft.bundler.Main.FileEntry)var6.next(); Path outputFile = subdirPath.resolve(entry.path); this.checkAndExtractJar(subdir, entry, outputFile); extractedUrls.add(outputFile.toUri().toURL()); } } private void checkAndExtractJar(String subdir, net.minecraft.bundler.Main.FileEntry entry, Path outputFile) throws Exception { if (!Files.exists(outputFile, new LinkOption[0]) || !checkIntegrity(outputFile, entry.hash())) { System.out.printf("Unpacking %s (%s:%s) to %s%n", entry.path, subdir, entry.id, outputFile); this.extractJar(subdir, entry.path, outputFile); } } private void extractJar(String subdir, String jarPath, Path outputFile) throws IOException { Files.createDirectories(outputFile.getParent()); InputStream input = this.getClass().getResourceAsStream("/META-INF/" + subdir + "/" + jarPath); try { if (input == null) { throw new IllegalStateException("Declared library " + jarPath + " not found"); } Files.copy(input, outputFile, new CopyOption[]{StandardCopyOption.REPLACE_EXISTING}); } catch (Throwable var8) { if (input != null) { try { input.close(); } catch (Throwable var7) { var8.addSuppressed(var7); } } throw var8; } if (input != null) { input.close(); } } private static boolean checkIntegrity(Path file, String expectedHash) throws Exception { MessageDigest digest = MessageDigest.getInstance("SHA-256"); InputStream output = Files.newInputStream(file); boolean var5; label43: { try { output.transferTo(new DigestOutputStream(OutputStream.nullOutputStream(), digest)); String actualHash = byteToHex(digest.digest()); if (actualHash.equalsIgnoreCase(expectedHash)) { var5 = true; break label43; } System.out.printf("Expected file %s to have hash %s, but got %s%n", file, expectedHash, actualHash); } catch (Throwable var7) { if (output != null) { try { output.close(); } catch (Throwable var6) { var7.addSuppressed(var6); } } throw var7; } if (output != null) { output.close(); } return false; } if (output != null) { output.close(); } return var5; } private static String byteToHex(byte[] bytes) { StringBuilder result = new StringBuilder(bytes.length * 2); byte[] var2 = bytes; int var3 = bytes.length; for(int var4 = 0; var4 < var3; ++var4) { byte b = var2[var4]; result.append(Character.forDigit(b >> 4 & 15, 16)); result.append(Character.forDigit(b >> 0 & 15, 16)); } return result.toString(); } } package net.minecraft.bundler; class Main$Thrower { private static final Main$Thrower INSTANCE = new Main$Thrower(); private Main$Thrower() { } public void sneakyThrow(Throwable exception) throws T { throw exception; } } import org.joml.Quaternionf; import org.joml.Vector3f; @FunctionalInterface public interface a { a a = ($$0) -> { return (new Quaternionf()).rotationX(-$$0); }; a b = ($$0) -> { return (new Quaternionf()).rotationX($$0); }; a c = ($$0) -> { return (new Quaternionf()).rotationY(-$$0); }; a d = ($$0) -> { return (new Quaternionf()).rotationY($$0); }; a e = ($$0) -> { return (new Quaternionf()).rotationZ(-$$0); }; a f = ($$0) -> { return (new Quaternionf()).rotationZ($$0); }; static a of(Vector3f $$0) { return ($$1) -> { return (new Quaternionf()).rotationAxis($$1, $$0); }; } Quaternionf rotation(float var1); default Quaternionf rotationDegrees(float $$0) { return this.rotation($$0 * 0.017453292F); } } import org.apache.commons.lang3.StringEscapeUtils; public class aa extends RuntimeException { public aa(String $$0) { super(StringEscapeUtils.escapeJava($$0)); } public aa(String $$0, Throwable $$1) { super(StringEscapeUtils.escapeJava($$0), $$1); } } public record aaa(akv a) implements zz { public aaa(akv param1) { this.a = $$0; } public static yn a(akv $$0, int $$1) { return zz.a(($$0x, $$1x) -> { }, ($$2) -> { int $$3 = $$2.readableBytes(); if ($$3 >= 0 && $$3 <= $$1) { $$2.k($$3); return new aaa($$0); } else { throw new IllegalArgumentException("Payload may not be larger than " + $$1 + " bytes"); } }); } public zz.b a() { return new zz.b(this.a); } public akv b() { return this.a; } } public record aac(eby c, int d) implements zz { public static final yn a; public static final zz.b b; public aac(eby param1, int param2) { this.c = $$0; this.d = $$1; } public zz.b a() { return b; } public eby b() { return this.c; } public int c() { return this.d; } static { a = yn.a(eby.d, aac::b, yl.h, aac::c, aac::new); b = zz.a("debug/game_event_listeners"); } } public record aad(ji c, int d, String e, int f) implements zz { public static final yn a = zz.a(aad::a, aad::new); public static final zz.b b = zz.a("debug/game_test_add_marker"); private aad(vl $$0) { this($$0.e(), $$0.readInt(), $$0.p(), $$0.readInt()); } public aad(ji param1, int param2, String param3, int param4) { this.c = $$0; this.d = $$1; this.e = $$2; this.f = $$3; } private void a(vl $$0) { $$0.a(this.c); $$0.q(this.d); $$0.a(this.e); $$0.q(this.f); } public zz.b a() { return b; } public ji b() { return this.c; } public int c() { return this.d; } public String d() { return this.e; } public int e() { return this.f; } } public record aae() implements zz { public static final yn a = zz.a(aae::a, aae::new); public static final zz.b b = zz.a("debug/game_test_clear"); private aae(vl $$0) { this(); } public aae() { } private void a(vl $$0) { } public zz.b a() { return b; } }import java.util.Collection; import java.util.List; public record aaf(int c, ji d, List e) implements zz { public static final yn a = zz.a(aaf::a, aaf::new); public static final zz.b b = zz.a("debug/goal_selector"); private aaf(vl $$0) { this($$0.readInt(), $$0.e(), $$0.a(aaf.a::new)); } public aaf(int param1, ji param2, List param3) { this.c = $$0; this.d = $$1; this.e = $$2; } private void a(vl $$0) { $$0.q(this.c); $$0.a(this.d); $$0.a((Collection)this.e, (yp)(($$0x, $$1) -> { $$1.a($$0x); })); } public zz.b a() { return b; } public int b() { return this.c; } public ji c() { return this.d; } public List d() { return this.e; } public static record a(int a, boolean b, String c) { public a(vl $$0) { this($$0.readInt(), $$0.readBoolean(), $$0.d(255)); } public a(int param1, boolean param2, String param3) { this.a = $$0; this.b = $$1; this.c = $$2; } public void a(vl $$0) { $$0.q(this.a); $$0.a(this.b); $$0.a(this.c); } public int a() { return this.a; } public boolean b() { return this.b; } public String c() { return this.c; } } }public record aag(aag.a c) implements zz { public static final yn a = zz.a(aag::a, aag::new); public static final zz.b b = zz.a("debug/hive"); private aag(vl $$0) { this(new aag.a($$0)); } public aag(aag.a param1) { this.c = $$0; } private void a(vl $$0) { this.c.a($$0); } public zz.b a() { return b; } public aag.a b() { return this.c; } public static record a(ji a, String b, int c, int d, boolean e) { public a(vl $$0) { this($$0.e(), $$0.p(), $$0.readInt(), $$0.readInt(), $$0.readBoolean()); } public a(ji param1, String param2, int param3, int param4, boolean param5) { this.a = $$0; this.b = $$1; this.c = $$2; this.d = $$3; this.e = $$4; } public void a(vl $$0) { $$0.a(this.a); $$0.a(this.b); $$0.q(this.c); $$0.q(this.d); $$0.a(this.e); } public ji a() { return this.a; } public String b() { return this.b; } public int c() { return this.c; } public int d() { return this.d; } public boolean e() { return this.e; } } }