package net.minecraft.server;
import com.google.common.collect.ImmutableMap;
import com.google.common.collect.Maps;
import com.mojang.brigadier.arguments.ArgumentType;
import com.mojang.brigadier.arguments.BoolArgumentType;
import com.mojang.brigadier.arguments.IntegerArgumentType;
import com.mojang.brigadier.builder.RequiredArgumentBuilder;
import com.mojang.brigadier.context.CommandContext;
import java.util.Comparator;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;
import java.util.function.BiConsumer;
import java.util.function.Function;
import java.util.function.Supplier;
import javax.annotation.Nullable;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
public class GameRules {
private static final Logger LOGGER = LogManager.getLogger();
private static final Map<GameRules.GameRuleKey<?>, GameRules.GameRuleDefinition<?>> G = Maps.newTreeMap(Comparator.comparing((gamerules_gamerulekey) -> {
return gamerules_gamerulekey.a;
}));
public static final GameRules.GameRuleKey<GameRules.GameRuleBoolean> DO_FIRE_TICK = a("doFireTick", GameRules.GameRuleBoolean.b(true));
public static final GameRules.GameRuleKey<GameRules.GameRuleBoolean> MOB_GRIEFING = a("mobGriefing", GameRules.GameRuleBoolean.b(true));
public static final GameRules.GameRuleKey<GameRules.GameRuleBoolean> KEEP_INVENTORY = a("keepInventory", GameRules.GameRuleBoolean.b(false));
public static final GameRules.GameRuleKey<GameRules.GameRuleBoolean> DO_MOB_SPAWNING = a("doMobSpawning", GameRules.GameRuleBoolean.b(true));
public static final GameRules.GameRuleKey<GameRules.GameRuleBoolean> DO_MOB_LOOT = a("doMobLoot", GameRules.GameRuleBoolean.b(true));
public static final GameRules.GameRuleKey<GameRules.GameRuleBoolean> DO_TILE_DROPS = a("doTileDrops", GameRules.GameRuleBoolean.b(true));
public static final GameRules.GameRuleKey<GameRules.GameRuleBoolean> DO_ENTITY_DROPS = a("doEntityDrops", GameRules.GameRuleBoolean.b(true));
public static final GameRules.GameRuleKey<GameRules.GameRuleBoolean> COMMAND_BLOCK_OUTPUT = a("commandBlockOutput", GameRules.GameRuleBoolean.b(true));
public static final GameRules.GameRuleKey<GameRules.GameRuleBoolean> NATURAL_REGENERATION = a("naturalRegeneration", GameRules.GameRuleBoolean.b(true));
public static final GameRules.GameRuleKey<GameRules.GameRuleBoolean> DO_DAYLIGHT_CYCLE = a("doDaylightCycle", GameRules.GameRuleBoolean.b(true));
public static final GameRules.GameRuleKey<GameRules.GameRuleBoolean> LOG_ADMIN_COMMANDS = a("logAdminCommands", GameRules.GameRuleBoolean.b(true));
public static final GameRules.GameRuleKey<GameRules.GameRuleBoolean> SHOW_DEATH_MESSAGES = a("showDeathMessages", GameRules.GameRuleBoolean.b(true));
public static final GameRules.GameRuleKey<GameRules.GameRuleInt> RANDOM_TICK_SPEED = a("randomTickSpeed", GameRules.GameRuleInt.b(3));
public static final GameRules.GameRuleKey<GameRules.GameRuleBoolean> SEND_COMMAND_FEEDBACK = a("sendCommandFeedback", GameRules.GameRuleBoolean.b(true));
public static final GameRules.GameRuleKey<GameRules.GameRuleBoolean> REDUCED_DEBUG_INFO = a("reducedDebugInfo", GameRules.GameRuleBoolean.b(false, (minecraftserver, gamerules_gameruleboolean) -> {
int i = gamerules_gameruleboolean.a() ? 22 : 23;
Iterator iterator = minecraftserver.getPlayerList().getPlayers().iterator();
while (iterator.hasNext()) {
EntityPlayer entityplayer = (EntityPlayer) iterator.next();
entityplayer.playerConnection.sendPacket(new PacketPlayOutEntityStatus(entityplayer, (byte) i));
}
}));
public static final GameRules.GameRuleKey<GameRules.GameRuleBoolean> SPECTATORS_GENERATE_CHUNKS = a("spectatorsGenerateChunks", GameRules.GameRuleBoolean.b(true));
public static final GameRules.GameRuleKey<GameRules.GameRuleInt> SPAWN_RADIUS = a("spawnRadius", GameRules.GameRuleInt.b(10));
public static final GameRules.GameRuleKey<GameRules.GameRuleBoolean> DISABLE_ELYTRA_MOVEMENT_CHECK = a("disableElytraMovementCheck", GameRules.GameRuleBoolean.b(false));
public static final GameRules.GameRuleKey<GameRules.GameRuleInt> MAX_ENTITY_CRAMMING = a("maxEntityCramming", GameRules.GameRuleInt.b(24));
public static final GameRules.GameRuleKey<GameRules.GameRuleBoolean> DO_WEATHER_CYCLE = a("doWeatherCycle", GameRules.GameRuleBoolean.b(true));
public static final GameRules.GameRuleKey<GameRules.GameRuleBoolean> DO_LIMITED_CRAFTING = a("doLimitedCrafting", GameRules.GameRuleBoolean.b(false));
public static final GameRules.GameRuleKey<GameRules.GameRuleInt> MAX_COMMAND_CHAIN_LENGTH = a("maxCommandChainLength", GameRules.GameRuleInt.b(65536));
public static final GameRules.GameRuleKey<GameRules.GameRuleBoolean> ANNOUNCE_ADVANCEMENTS = a("announceAdvancements", GameRules.GameRuleBoolean.b(true));
public static final GameRules.GameRuleKey<GameRules.GameRuleBoolean> DISABLE_RAIDS = a("disableRaids", GameRules.GameRuleBoolean.b(false));
public static final GameRules.GameRuleKey<GameRules.GameRuleBoolean> DO_INSOMNIA = a("doInsomnia", GameRules.GameRuleBoolean.b(true));
public static final GameRules.GameRuleKey<GameRules.GameRuleBoolean> DO_IMMEDIATE_RESPAWN = a("doImmediateRespawn", GameRules.GameRuleBoolean.b(false, (minecraftserver, gamerules_gameruleboolean) -> {
Iterator iterator = minecraftserver.getPlayerList().getPlayers().iterator();
while (iterator.hasNext()) {
EntityPlayer entityplayer = (EntityPlayer) iterator.next();
entityplayer.playerConnection.sendPacket(new PacketPlayOutGameStateChange(11, gamerules_gameruleboolean.a() ? 1.0F : 0.0F));
}
}));
public static final GameRules.GameRuleKey<GameRules.GameRuleBoolean> DROWNING_DAMAGE = a("drowningDamage", GameRules.GameRuleBoolean.b(true));
public static final GameRules.GameRuleKey<GameRules.GameRuleBoolean> FALL_DAMAGE = a("fallDamage", GameRules.GameRuleBoolean.b(true));
public static final GameRules.GameRuleKey<GameRules.GameRuleBoolean> FIRE_DAMAGE = a("fireDamage", GameRules.GameRuleBoolean.b(true));
public static final GameRules.GameRuleKey<GameRules.GameRuleBoolean> DO_PATROL_SPAWNING = a("doPatrolSpawning", GameRules.GameRuleBoolean.b(true));
public static final GameRules.GameRuleKey<GameRules.GameRuleBoolean> DO_TRADER_SPAWNING = a("doTraderSpawning", GameRules.GameRuleBoolean.b(true));
private final Map<GameRules.GameRuleKey<?>, GameRules.GameRuleValue<?>> H;
private static <T extends GameRules.GameRuleValue<T>> GameRules.GameRuleKey<T> a(String s, GameRules.GameRuleDefinition<T> gamerules_gameruledefinition) {
GameRules.GameRuleKey<T> gamerules_gamerulekey = new GameRules.GameRuleKey<>(s);
GameRules.GameRuleDefinition<?> gamerules_gameruledefinition1 = (GameRules.GameRuleDefinition) GameRules.G.put(gamerules_gamerulekey, gamerules_gameruledefinition);
if (gamerules_gameruledefinition1 != null) {
throw new IllegalStateException("Duplicate game rule registration for " + s);
} else {
return gamerules_gamerulekey;
}
}
public GameRules() {
this.H = (Map) GameRules.G.entrySet().stream().collect(ImmutableMap.toImmutableMap(Entry::getKey, (entry) -> {
return ((GameRules.GameRuleDefinition) entry.getValue()).getValue();
}));
}
public <T extends GameRules.GameRuleValue<T>> T get(GameRules.GameRuleKey<T> gamerules_gamerulekey) {
return (T) this.H.get(gamerules_gamerulekey); // CraftBukkit - decompile error
}
public NBTTagCompound a() {
NBTTagCompound nbttagcompound = new NBTTagCompound();
this.H.forEach((gamerules_gamerulekey, gamerules_gamerulevalue) -> {
nbttagcompound.setString(gamerules_gamerulekey.a, gamerules_gamerulevalue.getValue());
});
return nbttagcompound;
}
public void a(NBTTagCompound nbttagcompound) {
this.H.forEach((gamerules_gamerulekey, gamerules_gamerulevalue) -> {
if (nbttagcompound.hasKey(gamerules_gamerulekey.a)) {
gamerules_gamerulevalue.setValue(nbttagcompound.getString(gamerules_gamerulekey.a));
}
});
}
public static void a(GameRules.GameRuleVisitor gamerules_gamerulevisitor) {
GameRules.G.forEach((gamerules_gamerulekey, gamerules_gameruledefinition) -> {
a(gamerules_gamerulevisitor, gamerules_gamerulekey, gamerules_gameruledefinition);
});
}
private static <T extends GameRules.GameRuleValue<T>> void a(GameRules.GameRuleVisitor gamerules_gamerulevisitor, GameRules.GameRuleKey<?> gamerules_gamerulekey, GameRules.GameRuleDefinition<?> gamerules_gameruledefinition) {
gamerules_gamerulevisitor.a((GameRules.GameRuleKey<T>) gamerules_gamerulekey, (GameRules.GameRuleDefinition<T>) gamerules_gameruledefinition); // CraftBukkit - decompile error
}
public boolean getBoolean(GameRules.GameRuleKey<GameRules.GameRuleBoolean> gamerules_gamerulekey) {
return ((GameRules.GameRuleBoolean) this.get(gamerules_gamerulekey)).a();
}
public int getInt(GameRules.GameRuleKey<GameRules.GameRuleInt> gamerules_gamerulekey) {
return ((GameRules.GameRuleInt) this.get(gamerules_gamerulekey)).a();
}
public static class GameRuleBoolean extends GameRules.GameRuleValue<GameRules.GameRuleBoolean> {
private boolean a;
private static GameRules.GameRuleDefinition<GameRules.GameRuleBoolean> b(boolean flag, BiConsumer<MinecraftServer, GameRules.GameRuleBoolean> biconsumer) {
return new GameRules.GameRuleDefinition<>(BoolArgumentType::bool, (gamerules_gameruledefinition) -> {
return new GameRules.GameRuleBoolean(gamerules_gameruledefinition, flag);
}, biconsumer);
}
private static GameRules.GameRuleDefinition<GameRules.GameRuleBoolean> b(boolean flag) {
return b(flag, (minecraftserver, gamerules_gameruleboolean) -> {
});
}
public GameRuleBoolean(GameRules.GameRuleDefinition<GameRules.GameRuleBoolean> gamerules_gameruledefinition, boolean flag) {
super(gamerules_gameruledefinition);
this.a = flag;
}
@Override
protected void a(CommandContext<CommandListenerWrapper> commandcontext, String s) {
this.a = BoolArgumentType.getBool(commandcontext, s);
}
public boolean a() {
return this.a;
}
public void a(boolean flag, @Nullable MinecraftServer minecraftserver) {
this.a = flag;
this.onChange(minecraftserver);
}
@Override
protected String getValue() {
return Boolean.toString(this.a);
}
@Override
public void setValue(String s) { // PAIL - private->public
this.a = Boolean.parseBoolean(s);
}
@Override
public int getIntValue() {
return this.a ? 1 : 0;
}
@Override
protected GameRules.GameRuleBoolean e() {
return this;
}
}
public static class GameRuleInt extends GameRules.GameRuleValue<GameRules.GameRuleInt> {
private int a;
private static GameRules.GameRuleDefinition<GameRules.GameRuleInt> a(int i, BiConsumer<MinecraftServer, GameRules.GameRuleInt> biconsumer) {
return new GameRules.GameRuleDefinition<>(IntegerArgumentType::integer, (gamerules_gameruledefinition) -> {
return new GameRules.GameRuleInt(gamerules_gameruledefinition, i);
}, biconsumer);
}
private static GameRules.GameRuleDefinition<GameRules.GameRuleInt> b(int i) {
return a(i, (minecraftserver, gamerules_gameruleint) -> {
});
}
public GameRuleInt(GameRules.GameRuleDefinition<GameRules.GameRuleInt> gamerules_gameruledefinition, int i) {
super(gamerules_gameruledefinition);
this.a = i;
}
@Override
protected void a(CommandContext<CommandListenerWrapper> commandcontext, String s) {
this.a = IntegerArgumentType.getInteger(commandcontext, s);
}
public int a() {
return this.a;
}
@Override
protected String getValue() {
return Integer.toString(this.a);
}
@Override
public void setValue(String s) { // PAIL - private->public
this.a = b(s);
}
private static int b(String s) {
if (!s.isEmpty()) {
try {
return Integer.parseInt(s);
} catch (NumberFormatException numberformatexception) {
GameRules.LOGGER.warn("Failed to parse integer {}", s);
}
}
return 0;
}
@Override
public int getIntValue() {
return this.a;
}
@Override
protected GameRules.GameRuleInt e() {
return this;
}
}
public abstract static class GameRuleValue<T extends GameRules.GameRuleValue<T>> {
private final GameRules.GameRuleDefinition<T> a;
public GameRuleValue(GameRules.GameRuleDefinition<T> gamerules_gameruledefinition) {
this.a = gamerules_gameruledefinition;
}
protected abstract void a(CommandContext<CommandListenerWrapper> commandcontext, String s);
public void b(CommandContext<CommandListenerWrapper> commandcontext, String s) {
this.a(commandcontext, s);
this.onChange(((CommandListenerWrapper) commandcontext.getSource()).getServer());
}
public void onChange(@Nullable MinecraftServer minecraftserver) {
if (minecraftserver != null) {
this.a.c.accept(minecraftserver, this.e());
}
}
public abstract void setValue(String s); // PAIL - private->public
protected abstract String getValue();
public String toString() {
return this.getValue();
}
public abstract int getIntValue();
protected abstract T e();
}
public static class GameRuleDefinition<T extends GameRules.GameRuleValue<T>> {
private final Supplier<ArgumentType<?>> a;
private final Function<GameRules.GameRuleDefinition<T>, T> b;
private final BiConsumer<MinecraftServer, T> c;
private GameRuleDefinition(Supplier<ArgumentType<?>> supplier, Function<GameRules.GameRuleDefinition<T>, T> function, BiConsumer<MinecraftServer, T> biconsumer) {
this.a = supplier;
this.b = function;
this.c = biconsumer;
}
public RequiredArgumentBuilder<CommandListenerWrapper, ?> a(String s) {
return CommandDispatcher.a(s, (ArgumentType) this.a.get());
}
public T getValue() {
return this.b.apply(this); // CraftBukkit - decompile error
}
}
public static final class GameRuleKey<T extends GameRules.GameRuleValue<T>> {
private final String a;
public GameRuleKey(String s) {
this.a = s;
}
public String toString() {
return this.a;
}
public boolean equals(Object object) {
return this == object ? true : object instanceof GameRules.GameRuleKey && ((GameRules.GameRuleKey) object).a.equals(this.a);
}
public int hashCode() {
return this.a.hashCode();
}
public String a() {
return this.a;
}
}
@FunctionalInterface
public interface GameRuleVisitor {
<T extends GameRules.GameRuleValue<T>> void a(GameRules.GameRuleKey<T> gamerules_gamerulekey, GameRules.GameRuleDefinition<T> gamerules_gameruledefinition);
}
}