{
"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;
}
}
}