com/hypixel/hytale/server/core/command
package com.hypixel.hytale.server.core.command.commands.debug;
import com.hypixel.hytale.assetstore.AssetMap;
import com.hypixel.hytale.assetstore.AssetRegistry;
import com.hypixel.hytale.assetstore.AssetStore;
import com.hypixel.hytale.assetstore.map.AssetMapWithIndexes;
import com.hypixel.hytale.assetstore.map.JsonAssetWithMap;
import com.hypixel.hytale.server.core.Message;
import com.hypixel.hytale.server.core.command.system.CommandContext;
import com.hypixel.hytale.server.core.command.system.arguments.system.RequiredArg;
import com.hypixel.hytale.server.core.command.system.arguments.types.ArgTypes;
import com.hypixel.hytale.server.core.command.system.basecommands.CommandBase;
import com.hypixel.hytale.server.core.util.message.MessageFormat;
import java.util.Map;
import java.util.Set;
import java.util.stream.Collectors;
import javax.annotation.Nonnull;
public class AssetTagsCommand extends CommandBase {
@Nonnull
private static final Message MESSAGE_COMMANDS_ASSETS_TAGS_TAG_NOT_FOUND = Message.translation("server.commands.assets.tags.tagNotFound");
@Nonnull
private final RequiredArg<String> classArg;
@Nonnull
private final RequiredArg<String> tagArg;
public AssetTagsCommand() {
super("tags", "server.commands.assets.tags.desc");
this.classArg = this.withRequiredArg("class", "server.commands.assets.tags.class.desc", ArgTypes.STRING);
this.tagArg = this.withRequiredArg("tag", "server.commands.assets.tags.tag.desc", ArgTypes.STRING);
}
protected void executeSync(@Nonnull CommandContext context) {
String assetClass = (String)this.classArg.get(context);
String tag = (String)this.tagArg.get(context);
int tagIndex = AssetRegistry.getTagIndex(tag);
if (tagIndex == -2147483648) {
context.sendMessage(MESSAGE_COMMANDS_ASSETS_TAGS_TAG_NOT_FOUND.param("tag", tag));
} else {
for(Map.Entry<Class<? extends JsonAssetWithMap>, AssetStore<?, ?, ?>> entry : AssetRegistry.getStoreMap().entrySet()) {
String simpleName = ((Class)entry.getKey()).getSimpleName();
if (simpleName.equalsIgnoreCase(assetClass)) {
context.sendMessage(Message.translation("server.commands.assets.tags.assetsOfTypeWithTag").param("type", simpleName).param("tag", tag));
AssetMap<?, ?> assetMap = ((AssetStore)entry.getValue()).getAssetMap();
Set<Message> keysForTag = (Set)assetMap.getKeysForTag(tagIndex).stream().map(Object::toString).map(Message::raw).collect(Collectors.toSet());
context.sendMessage(MessageFormat.list(Message.translation("server.commands.assets.tags.assetKeys"), keysForTag));
if (assetMap instanceof AssetMapWithIndexes) {
AssetMapWithIndexes<?, ?> assetMapWithIndexes = (AssetMapWithIndexes)assetMap;
Set<Message> indexesForTag = (Set)assetMapWithIndexes.getIndexesForTag(tagIndex).intStream().mapToObj(Integer::toString).map(Message::raw).collect(Collectors.toSet());
context.sendMessage(MessageFormat.list(Message.translation("server.commands.assets.tags.assetIndexes"), indexesForTag));
}
break;
}
}
}
}
}
com/hypixel/hytale/server/core/command/commands/debug/AssetsCommand.java
package com.hypixel.hytale.server.core.command.commands.debug;
import com.hypixel.hytale.assetstore.AssetRegistry;
import com.hypixel.hytale.assetstore.AssetStore;
import com.hypixel.hytale.assetstore.map.JsonAssetWithMap;
import com.hypixel.hytale.server.core.Message;
import com.hypixel.hytale.server.core.command.system.CommandContext;
import com.hypixel.hytale.server.core.command.system.basecommands.AbstractAsyncCommand;
import com.hypixel.hytale.server.core.command.system.basecommands.AbstractCommandCollection;
import java.util.Map;
import java.util.concurrent.CompletableFuture;
import javax.annotation.Nonnull;
public class AssetsCommand extends AbstractCommandCollection {
public AssetsCommand() {
super("assets", "server.commands.assets.desc");
this.addSubCommand(new AssetTagsCommand());
this.addSubCommand(new AssetsDuplicatesCommand());
this.addSubCommand(new AssetLongestAssetNameCommand());
}
public static class AssetLongestAssetNameCommand extends AbstractAsyncCommand {
public AssetLongestAssetNameCommand {
(, );
}
CompletableFuture<Void> {
CompletableFuture.runAsync(() -> {
(Map.Entry<Class<? >, AssetStore<?, ?, ?>> e : AssetRegistry.getStoreMap().entrySet()) {
;
(Object asset : ((AssetStore)e.getValue()).getAssetMap().getAssetMap().keySet()) {
((AssetStore)e.getValue()).transformKey(asset).toString();
(name.length() > longestName.length()) {
longestName = name;
}
}
((Class)e.getKey()).getSimpleName();
context.sendMessage(Message.raw( + var10001 + + longestName + + longestName.length() + ));
}
});
}
}
}
com/hypixel/hytale/server/core/command/commands/debug/AssetsDuplicatesCommand.java
package com.hypixel.hytale.server.core.command.commands.debug;
import com.hypixel.hytale.common.util.FormatUtil;
import com.hypixel.hytale.server.core.Message;
import com.hypixel.hytale.server.core.asset.common.CommonAsset;
import com.hypixel.hytale.server.core.asset.common.CommonAssetRegistry;
import com.hypixel.hytale.server.core.asset.common.asset.FileCommonAsset;
import com.hypixel.hytale.server.core.command.system.CommandContext;
import com.hypixel.hytale.server.core.command.system.arguments.system.FlagArg;
import com.hypixel.hytale.server.core.command.system.basecommands.AbstractAsyncCommand;
import com.hypixel.hytale.server.core.util.message.MessageFormat;
import com.hypixel.hytale.sneakythrow.SneakyThrow;
import it.unimi.dsi.fastutil.objects.ObjectArrayList;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.concurrent.CompletableFuture;
import java.util.stream.Collectors;
import javax.annotation.Nonnull;
public class AssetsDuplicatesCommand extends AbstractAsyncCommand {
@Nonnull
private final FlagArg reverseFlag = this.withFlagArg("reverse", "server.commands.assets.duplicates.reverse.desc");
{
(, );
}
CompletableFuture<Void> {
(Boolean).reverseFlag.get(context);
List<CompletableFuture<Void>> futures = <CompletableFuture<Void>>();
List<DuplicatedAssetInfo> duplicates = <DuplicatedAssetInfo>();
(Map.Entry<String, List<CommonAssetRegistry.PackAsset>> entry : CommonAssetRegistry.getDuplicatedAssets().entrySet()) {
((String)entry.getKey(), (List)entry.getValue());
duplicates.add(duplicateInfo);
futures.add(duplicateInfo.calculateTotalSize());
}
CompletableFuture.allOf((CompletableFuture[])futures.toArray((x$) -> [x$])).thenAccept((aVoid) -> {
duplicates.sort(reverse ? AssetsDuplicatesCommand.DuplicatedAssetInfo.COMPARATOR_REVERSE : AssetsDuplicatesCommand.DuplicatedAssetInfo.COMPARATOR);
;
(DuplicatedAssetInfo duplicateInfo : duplicates) {
Message.translation().param(, duplicateInfo.hash).param(, FormatUtil.bytesToString(duplicateInfo.wastedSpace));
Set<Message> duplicateAssets = (Set)duplicateInfo.assets.stream().map((a) -> {
a.pack();
var10000 + + a.asset().getName();
}).map(Message::raw).collect(Collectors.toSet());
context.sendMessage(MessageFormat.list(header, duplicateAssets));
totalWastedSpace += duplicateInfo.wastedSpace;
}
context.sendMessage(Message.translation().param(, FormatUtil.bytesToString(totalWastedSpace)));
});
}
{
Comparator<DuplicatedAssetInfo> COMPARATOR = Comparator.comparingLong((o) -> o.wastedSpace);
Comparator<DuplicatedAssetInfo> COMPARATOR_REVERSE;
String hash;
List<CommonAssetRegistry.PackAsset> assets;
wastedSpace;
{
.hash = hash;
.assets = assets;
}
CompletableFuture<Void> {
((CommonAssetRegistry.PackAsset).assets.getFirst()).asset();
(commonAsset FileCommonAsset fileCommonAsset) {
fileCommonAsset.getFile();
CompletableFuture.runAsync(SneakyThrow.sneakyRunnable(() -> .wastedSpace = Files.size(path) * ()(.assets.size() - )));
} {
commonAsset.getBlob().thenAccept((bytes) -> .wastedSpace = ()bytes.length * ()(.assets.size() - ));
}
}
{
COMPARATOR_REVERSE = Collections.reverseOrder(COMPARATOR);
}
}
}
com/hypixel/hytale/server/core/command/commands/debug/DebugPlayerPositionCommand.java
package com.hypixel.hytale.server.core.command.commands.debug;
import com.hypixel.hytale.component.Ref;
import com.hypixel.hytale.component.Store;
import com.hypixel.hytale.math.vector.Transform;
import com.hypixel.hytale.math.vector.Vector3d;
import com.hypixel.hytale.math.vector.Vector3f;
import com.hypixel.hytale.server.core.Message;
import com.hypixel.hytale.server.core.command.system.CommandContext;
import com.hypixel.hytale.server.core.command.system.basecommands.AbstractPlayerCommand;
import com.hypixel.hytale.server.core.modules.debug.DebugUtils;
import com.hypixel.hytale.server.core.modules.entity.component.HeadRotation;
import com.hypixel.hytale.server.core.modules.entity.component.TransformComponent;
import com.hypixel.hytale.server.core.modules.entity.teleport.PendingTeleport;
import com.hypixel.hytale.server.core.modules.entity.teleport.Teleport;
import com.hypixel.hytale.server.core.universe.PlayerRef;
import com.hypixel.hytale.server.core.universe.world.World;
import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
import javax.annotation.Nonnull;
public class DebugPlayerPositionCommand extends AbstractPlayerCommand {
public DebugPlayerPositionCommand() {
super("debugplayerposition", "server.commands.debugplayerposition.desc");
}
protected void execute(@Nonnull CommandContext context, Store<EntityStore> store, Ref<EntityStore> ref, PlayerRef playerRef, World world) {
(TransformComponent)store.getComponent(ref, TransformComponent.getComponentType());
transformComponent != ;
transformComponent.getTransform();
(HeadRotation)store.getComponent(ref, HeadRotation.getComponentType());
headRotationComponent != ;
headRotationComponent.getRotation();
(Teleport)store.getComponent(ref, Teleport.getComponentType());
(PendingTeleport)store.getComponent(ref, PendingTeleport.getComponentType());
teleport == ? : fmtPos(teleport.getPosition());
pendingTeleport == ? : fmtPos(pendingTeleport.getPosition());
Message.translation().param(, fmtPos(transform.getPosition())).param(, fmtRot(transform.getRotation())).param(, fmtRot(headRotation)).param(, teleportFmt).param(, pendingTeleportFmt);
playerRef.sendMessage(message);
(, , );
DebugUtils.addSphere(world, transform.getPosition(), blue, , );
playerRef.sendMessage(Message.translation().color());
}
String {
;
String.format(, vector.getX());
var10000 + + String.format(, vector.getY()) + + String.format(, vector.getZ());
}
String {
fmtDegrees(vector.getPitch());
+ var10000 + + fmtDegrees(vector.getYaw()) + + fmtDegrees(vector.getRoll());
}
String {
Object[] var10001 = []{Math.toDegrees(()radians)};
String.format(, var10001) + ;
}
}
com/hypixel/hytale/server/core/command/commands/debug/HitDetectionCommand.java
package com.hypixel.hytale.server.core.command.commands.debug;
import com.hypixel.hytale.server.core.Message;
import com.hypixel.hytale.server.core.command.system.CommandContext;
import com.hypixel.hytale.server.core.command.system.basecommands.CommandBase;
import com.hypixel.hytale.server.core.modules.interaction.interaction.config.none.SelectInteraction;
import javax.annotation.Nonnull;
public class HitDetectionCommand extends CommandBase {
public HitDetectionCommand() {
super("hitdetection", "server.commands.hitdetection.desc");
}
protected void executeSync(@Nonnull CommandContext context) {
SelectInteraction.SHOW_VISUAL_DEBUG = !SelectInteraction.SHOW_VISUAL_DEBUG;
context.sendMessage(Message.translation("server.commands.hitdetection.toggled").param("debug", SelectInteraction.SHOW_VISUAL_DEBUG));
}
}
com/hypixel/hytale/server/core/command/commands/debug/HudManagerTestCommand.java
package com.hypixel.hytale.server.core.command.commands.debug;
import com.hypixel.hytale.component.Ref;
import com.hypixel.hytale.component.Store;
import com.hypixel.hytale.protocol.packets.interface_.HudComponent;
import com.hypixel.hytale.server.core.Message;
import com.hypixel.hytale.server.core.command.system.CommandContext;
import com.hypixel.hytale.server.core.command.system.arguments.system.FlagArg;
import com.hypixel.hytale.server.core.command.system.basecommands.AbstractTargetPlayerCommand;
import com.hypixel.hytale.server.core.entity.entities.Player;
import com.hypixel.hytale.server.core.entity.entities.player.hud.HudManager;
import com.hypixel.hytale.server.core.universe.PlayerRef;
import com.hypixel.hytale.server.core.universe.world.World;
import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
public class HudManagerTestCommand extends AbstractTargetPlayerCommand {
@Nonnull
private static final Message MESSAGE_COMMANDS_HUD_TEST_SHOWN_SELF = Message.translation("server.commands.hudtest.shown.self");
@Nonnull
private static final Message MESSAGE_COMMANDS_HUT_TEST_HIDDEN_SELF = Message.translation("server.commands.hudtest.hidden.self");
.withFlagArg(, );
{
(, );
}
{
(Player)store.getComponent(ref, Player.getComponentType());
playerComponent != ;
(PlayerRef)store.getComponent(ref, PlayerRef.getComponentType());
playerRefComponent != ;
playerComponent.getHudManager();
!ref.equals(sourceRef);
(.resetHudFlag.provided(context)) {
hudManager.showHudComponents(playerRef, HudComponent.Hotbar);
(isTargetingOther) {
context.sendMessage(Message.translation().param(, playerRefComponent.getUsername()));
} {
context.sendMessage(MESSAGE_COMMANDS_HUD_TEST_SHOWN_SELF);
}
} {
hudManager.hideHudComponents(playerRef, HudComponent.Hotbar);
(isTargetingOther) {
context.sendMessage(Message.translation().param(, playerRefComponent.getUsername()));
} {
context.sendMessage(MESSAGE_COMMANDS_HUT_TEST_HIDDEN_SELF);
}
}
}
}
com/hypixel/hytale/server/core/command/commands/debug/LogCommand.java
package com.hypixel.hytale.server.core.command.commands.debug;
import com.hypixel.hytale.logger.backend.HytaleLoggerBackend;
import com.hypixel.hytale.server.core.HytaleServer;
import com.hypixel.hytale.server.core.Message;
import com.hypixel.hytale.server.core.command.system.CommandContext;
import com.hypixel.hytale.server.core.command.system.ParseResult;
import com.hypixel.hytale.server.core.command.system.arguments.system.FlagArg;
import com.hypixel.hytale.server.core.command.system.arguments.system.OptionalArg;
import com.hypixel.hytale.server.core.command.system.arguments.system.RequiredArg;
import com.hypixel.hytale.server.core.command.system.arguments.types.ArgTypes;
import com.hypixel.hytale.server.core.command.system.arguments.types.SingleArgumentType;
import com.hypixel.hytale.server.core.command.system.basecommands.CommandBase;
import it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap;
import java.util.Arrays;
import java.util.Map;
import java.util.logging.Level;
import java.util.stream.Collectors;
import javax.annotation.Nonnull;
public class LogCommand extends CommandBase {
@Nonnull
private static final Level[] STANDARD_LEVELS;
@Nonnull
private static final String LEVELS_STRING;
@Nonnull
private static final SingleArgumentType<Level> LOG_LEVEL;
RequiredArg<String> loggerArg;
OptionalArg<Level> levelArg;
FlagArg saveFlag;
FlagArg resetFlag;
{
(, );
.loggerArg = .withRequiredArg(, , ArgTypes.STRING);
.levelArg = .withOptionalArg(, , LOG_LEVEL);
.saveFlag = .withFlagArg(, );
.resetFlag = .withFlagArg(, );
}
{
(String).loggerArg.get(context);
HytaleLoggerBackend logger;
(loggerName.equalsIgnoreCase()) {
loggerName = ;
logger = HytaleLoggerBackend.getLogger();
} {
logger = HytaleLoggerBackend.getLogger(loggerName);
}
(.levelArg.provided(context)) {
(Level).levelArg.get(context);
logger.setLevel(level);
;
((Boolean).saveFlag.get(context)) {
Map<String, Level> logLevels = <String, Level>(HytaleServer.get().getConfig().getLogLevels());
logLevels.put(logger.getLoggerName(), level);
HytaleServer.get().getConfig().setLogLevels(logLevels);
saved = ;
}
context.sendMessage(Message.translation().param(, loggerName).param(, level.getName()).param(, saved ? : ));
} {
((Boolean).resetFlag.get(context)) {
Map<String, Level> logLevels = <String, Level>(HytaleServer.get().getConfig().getLogLevels());
logLevels.remove(logger.getLoggerName());
HytaleServer.get().getConfig().setLogLevels(logLevels);
context.sendMessage(Message.translation().param(, loggerName));
}
context.sendMessage(Message.translation().param(, loggerName).param(, logger.getLevel().getName()));
}
}
{
STANDARD_LEVELS = []{Level.OFF, Level.SEVERE, Level.WARNING, Level.INFO, Level.CONFIG, Level.FINE, Level.FINER, Level.FINEST, Level.ALL};
LEVELS_STRING = (String)Arrays.stream(STANDARD_LEVELS).map(Level::getName).collect(Collectors.joining());
LOG_LEVEL = <Level>(, Message.translation().param(, LEVELS_STRING), (String[])Arrays.stream(STANDARD_LEVELS).map(Level::getName).toArray((x$) -> [x$])) {
Level {
{
Level.parse(input.toUpperCase());
} (IllegalArgumentException var4) {
parseResult.fail(Message.translation().param(, input).param(, Level.INFO.getName()));
Level.INFO;
}
}
};
}
}
com/hypixel/hytale/server/core/command/commands/debug/MessageTranslationTestCommand.java
package com.hypixel.hytale.server.core.command.commands.debug;
import com.hypixel.hytale.server.core.Message;
import com.hypixel.hytale.server.core.command.system.CommandContext;
import com.hypixel.hytale.server.core.command.system.basecommands.CommandBase;
import javax.annotation.Nonnull;
public class MessageTranslationTestCommand extends CommandBase {
public MessageTranslationTestCommand() {
super("messagetest", "Test sending messages with nested translated parameter messages");
this.addAliases(new String[]{"msgtest"});
}
protected void executeSync(@Nonnull CommandContext context) {
Message param = Message.translation("server.commands.message.container").param("content", Message.translation("server.commands.message.example").param("random", 25));
context.sender().sendMessage(param);
}
}
com/hypixel/hytale/server/core/command/commands/debug/PIDCheckCommand.java
package com.hypixel.hytale.server.core.command.commands.debug;
import com.hypixel.hytale.server.core.Constants;
import com.hypixel.hytale.server.core.Message;
import com.hypixel.hytale.server.core.Options;
import com.hypixel.hytale.server.core.command.system.CommandContext;
import com.hypixel.hytale.server.core.command.system.arguments.system.FlagArg;
import com.hypixel.hytale.server.core.command.system.arguments.system.OptionalArg;
import com.hypixel.hytale.server.core.command.system.arguments.types.ArgTypes;
import com.hypixel.hytale.server.core.command.system.basecommands.CommandBase;
import com.hypixel.hytale.server.core.util.ProcessUtil;
import javax.annotation.Nonnull;
public class PIDCheckCommand extends CommandBase {
@Nonnull
private static final Message MESSAGE_COMMANDS_PID_CHECK_SINGLEPLAYER_ONLY = Message.translation("server.commands.pidcheck.singlePlayerOnly");
@Nonnull
private final FlagArg singleplayerFlag = this.withFlagArg("singleplayer", "server.commands.pidcheck.singleplayer.desc");
@Nonnull
private final OptionalArg<Integer> pidArg;
public PIDCheckCommand() {
(, );
.pidArg = .withOptionalArg(, , ArgTypes.INTEGER);
}
{
((Boolean).singleplayerFlag.get(context)) {
(!Constants.SINGLEPLAYER) {
context.sendMessage(MESSAGE_COMMANDS_PID_CHECK_SINGLEPLAYER_ONLY);
} {
(Integer)Options.getOptionSet().valueOf(Options.CLIENT_PID);
Message.translation(ProcessUtil.isProcessRunning(pid) ? : );
context.sendMessage(Message.translation().param(, pid).param(, runningMessage));
}
} (!.pidArg.provided(context)) {
context.sendMessage(Message.translation());
} {
(Integer).pidArg.get(context);
Message.translation(ProcessUtil.isProcessRunning(pid) ? : );
context.sendMessage(Message.translation().param(, pid).param(, runningMessage));
}
}
}
com/hypixel/hytale/server/core/command/commands/debug/PacketStatsCommand.java
package com.hypixel.hytale.server.core.command.commands.debug;
import com.hypixel.hytale.common.util.FormatUtil;
import com.hypixel.hytale.common.util.StringUtil;
import com.hypixel.hytale.component.Ref;
import com.hypixel.hytale.component.Store;
import com.hypixel.hytale.protocol.io.PacketStatsRecorder;
import com.hypixel.hytale.server.core.Message;
import com.hypixel.hytale.server.core.command.system.CommandContext;
import com.hypixel.hytale.server.core.command.system.CommandUtil;
import com.hypixel.hytale.server.core.command.system.arguments.system.RequiredArg;
import com.hypixel.hytale.server.core.command.system.arguments.types.ArgTypes;
import com.hypixel.hytale.server.core.command.system.basecommands.AbstractTargetPlayerCommand;
import com.hypixel.hytale.server.core.io.PacketHandler;
import com.hypixel.hytale.server.core.universe.PlayerRef;
import com.hypixel.hytale.server.core.universe.world.World;
import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
import it.unimi.dsi.fastutil.objects.ObjectArrayList;
import java.util.List;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
public class PacketStatsCommand extends AbstractTargetPlayerCommand {
@Nonnull
private final RequiredArg<String> packetArg;
public PacketStatsCommand() {
super("packetstats", "server.commands.packetStats.desc");
.packetArg = .withRequiredArg(, , ArgTypes.STRING);
}
{
(String).packetArg.get(context);
playerRef.getPacketHandler();
packetHandler.getPacketStatsRecorder();
(recorder == ) {
context.sendMessage(Message.translation());
} {
PacketStatsRecorder. findEntry(recorder, packetName);
(entry == ) {
context.sendMessage(Message.translation().param(, packetName));
context.sendMessage(Message.translation().param(, StringUtil.sortByFuzzyDistance(packetName, getEntryNames(recorder), CommandUtil.RECOMMEND_COUNT).toString()));
} {
Message.translation().param(, entry.getSentCount());
FormatUtil.bytesToString(entry.getSentCompressedTotal());
var10000.param(, var10002 + + FormatUtil.bytesToString(entry.getSentUncompressedTotal()) + ).param(, FormatUtil.bytesToString(()entry.getSentCompressedAvg())).param(, FormatUtil.bytesToString(entry.getSentCompressedMin())).param(, FormatUtil.bytesToString(entry.getSentCompressedMax()));
PacketStatsRecorder. entry.getSentRecently();
sentRecently.count();
var10000 = Message.translation().param(, sentRecentlyCount);
var10002 = FormatUtil.bytesToString(sentRecently.compressedTotal());
var10000.param(, var10002 + + FormatUtil.bytesToString(sentRecently.uncompressedTotal()) + ).param(, FormatUtil.bytesToString(sentRecentlyCount > ? sentRecently.compressedTotal() / ()sentRecentlyCount : )).param(, FormatUtil.bytesToString(()sentRecently.compressedMin())).param(, FormatUtil.bytesToString(()sentRecently.compressedMax()));
var10000 = Message.translation().param(, entry.getReceivedCount());
var10002 = FormatUtil.bytesToString(entry.getReceivedCompressedTotal());
var10000.param(, var10002 + + FormatUtil.bytesToString(entry.getReceivedUncompressedTotal()) + ).param(, FormatUtil.bytesToString(()entry.getReceivedCompressedAvg())).param(, FormatUtil.bytesToString(entry.getReceivedCompressedMin())).param(, FormatUtil.bytesToString(entry.getReceivedCompressedMax()));
PacketStatsRecorder. entry.getReceivedRecently();
receivedRecently.count();
var10000 = Message.translation().param(, receivedRecentlyCount);
var10002 = FormatUtil.bytesToString(receivedRecently.compressedTotal());
var10000.param(, var10002 + + FormatUtil.bytesToString(receivedRecently.uncompressedTotal()) + ).param(, FormatUtil.bytesToString(receivedRecentlyCount > ? receivedRecently.compressedTotal() / ()receivedRecentlyCount : )).param(, FormatUtil.bytesToString(()receivedRecently.compressedMin())).param(, FormatUtil.bytesToString(()receivedRecently.compressedMax()));
context.sendMessage(Message.translation().param(, entry.getName()).param(, entry.getPacketId()).param(, sentTotal).param(, sentRecent).param(, receivedTotal).param(, receivedRecent));
}
}
}
PacketStatsRecorder.PacketStatsEntry {
( ; i < ; ++i) {
PacketStatsRecorder. recorder.getEntry(i);
(entry.hasData()) {
entry.getName();
(entryName != && name.equalsIgnoreCase(entryName)) {
entry;
}
}
}
;
}
List<String> {
ObjectArrayList<String> list = <String>();
( ; i < ; ++i) {
PacketStatsRecorder. recorder.getEntry(i);
(entry.hasData()) {
entry.getName();
(name != ) {
list.add(name);
}
}
}
list;
}
}
com/hypixel/hytale/server/core/command/commands/debug/PingCommand.java
package com.hypixel.hytale.server.core.command.commands.debug;
import com.hypixel.hytale.common.util.FormatUtil;
import com.hypixel.hytale.common.util.StringUtil;
import com.hypixel.hytale.component.Ref;
import com.hypixel.hytale.component.Store;
import com.hypixel.hytale.math.util.MathUtil;
import com.hypixel.hytale.metrics.metric.HistoricMetric;
import com.hypixel.hytale.protocol.GameMode;
import com.hypixel.hytale.protocol.packets.connection.PongType;
import com.hypixel.hytale.server.core.Message;
import com.hypixel.hytale.server.core.command.system.CommandContext;
import com.hypixel.hytale.server.core.command.system.arguments.system.DefaultArg;
import com.hypixel.hytale.server.core.command.system.arguments.system.FlagArg;
import com.hypixel.hytale.server.core.command.system.arguments.types.ArgTypes;
import com.hypixel.hytale.server.core.command.system.basecommands.AbstractTargetPlayerCommand;
import com.hypixel.hytale.server.core.io.PacketHandler;
import com.hypixel.hytale.server.core.universe.PlayerRef;
import com.hypixel.hytale.server.core.universe.world.World;
import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
import java.util.concurrent.TimeUnit;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
public class PingCommand extends AbstractTargetPlayerCommand {
@Nonnull
private final FlagArg detailFlag = this.withFlagArg(, );
{
(, );
.setPermissionGroup(GameMode.Adventure);
.addSubCommand( ());
.addSubCommand( ());
}
{
(.detailFlag.provided(context)) {
.sendDetailedMessage(context, playerRef);
} {
.sendShortMessage(context, playerRef);
}
}
{
Message.join(Message.raw(playerRef.getUsername()), Message.raw());
(PongType pingType : PongType.values()) {
PacketHandler. playerRef.getPacketHandler().getPingInfo(pingType);
pingInfo.getPingMetricSet();
[] periods = historicMetric.getPeriodsNanos();
msg.insert(Message.raw( + pingType.name() + ));
( ; i < periods.length; ++i) {
FormatUtil.timeUnitToString(periods[i], TimeUnit.NANOSECONDS, );
historicMetric.getAverage(i);
historicMetric.calculateMax(i);
historicMetric.calculateMin(i);
FormatUtil.simpleTimeUnitFormat(min, average, max, PacketHandler.PingInfo.TIME_UNIT, TimeUnit.MILLISECONDS, );
msg.insert(Message.raw( + length + + .repeat(Math.max(, - value.length())) + value + ));
}
msg.insert(Message.raw( + FormatUtil.simpleFormat(pingInfo.getPacketQueueMetric())));
}
context.sendMessage(msg);
}
{
FormatUtil.timeUnitToString(, TimeUnit.SECONDS, );
Message.join(Message.raw(playerRef.getUsername()), Message.raw( + length + ));
(PongType pingType : PongType.values()) {
playerRef.getPacketHandler().getPingInfo(pingType).getPingMetricSet();
historicMetric.getAverage();
historicMetric.calculateMax();
historicMetric.calculateMin();
FormatUtil.simpleTimeUnitFormat(min, average, max, PacketHandler.PingInfo.TIME_UNIT, TimeUnit.MILLISECONDS, );
pingType.name();
msg.insert(Message.raw( + var10001 + + .repeat(Math.max(, - value.length())) + value));
}
context.sendMessage(msg);
}
{
Message.translation();
{
(, );
.setPermissionGroup(GameMode.Adventure);
.addAliases( []{});
}
{
(PongType pingType : PongType.values()) {
playerRef.getPacketHandler().getPingInfo(pingType).clear();
}
context.sendMessage(MESSAGE_COMMANDS_PING_HISTORY_CLEARED);
}
}
{
DefaultArg<Integer> widthArg;
DefaultArg<Integer> heightArg;
{
(, );
.widthArg = .withDefaultArg(, , ArgTypes.INTEGER, , );
.heightArg = .withDefaultArg(, , ArgTypes.INTEGER, , );
.setPermissionGroup(GameMode.Adventure);
}
{
(Integer).widthArg.get(context);
(Integer).heightArg.get(context);
System.nanoTime();
Message.empty();
(PongType pingType : PongType.values()) {
message.insert(String.valueOf(pingType) + );
PacketHandler. playerRef.getPacketHandler().getPingInfo(pingType);
pingInfo.getPingMetricSet();
[] periods = pingMetricSet.getPeriodsNanos();
( ; i < periods.length; ++i) {
periods[i];
pingMetricSet.calculateMax(i);
pingMetricSet.calculateMin(i);
[] historyTimestamps = pingMetricSet.getTimestamps(i);
[] historyValues = pingMetricSet.getValues(i);
FormatUtil.timeUnitToString(period, TimeUnit.NANOSECONDS, );
message.insert(Message.translation().param(, historyLengthFormatted));
();
StringUtil.generateGraph(sb, width, height, startNanos - period, startNanos, ()min, ()max, (value) -> FormatUtil.timeUnitToString(MathUtil.fastCeil(value), PacketHandler.PingInfo.TIME_UNIT), historyTimestamps.length, (ii) -> historyTimestamps[ii], (ii) -> ()historyValues[ii]);
message.insert(sb.toString());
}
}
context.sendMessage(message);
}
}
}
package com.hypixel.hytale.server.core.command.commands.debug;
import com.hypixel.hytale.component.Ref;
import com.hypixel.hytale.component.Store;
import com.hypixel.hytale.protocol.GameMode;
import com.hypixel.hytale.protocol.packets.interface_.HudComponent;
import com.hypixel.hytale.server.core.command.system.CommandContext;
import com.hypixel.hytale.server.core.command.system.arguments.system.FlagArg;
import com.hypixel.hytale.server.core.command.system.basecommands.AbstractPlayerCommand;
import com.hypixel.hytale.server.core.entity.entities.Player;
import com.hypixel.hytale.server.core.entity.entities.player.hud.HudManager;
import com.hypixel.hytale.server.core.universe.PlayerRef;
import com.hypixel.hytale.server.core.universe.world.World;
import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
import javax.annotation.Nonnull;
public class ShowBuilderToolsHudCommand extends AbstractPlayerCommand {
@Nonnull
private final FlagArg hideArg = this.withFlagArg("hide", "server.commands.builderToolsLegend.hide.desc");
public ShowBuilderToolsHudCommand() {
super("builderToolsLegend", "server.commands.builderToolsLegend.desc");
this.setPermissionGroup(GameMode.Creative);
}
protected {
(Player)store.getComponent(ref, Player.getComponentType());
playerComponent != ;
playerComponent.getHudManager();
(.hideArg.provided(context)) {
hudManager.hideHudComponents(playerRef, HudComponent.BuilderToolsLegend);
hudManager.showHudComponents(playerRef, HudComponent.BuilderToolsMaterialSlotSelector);
} {
hudManager.showHudComponents(playerRef, HudComponent.BuilderToolsLegend);
hudManager.showHudComponents(playerRef, HudComponent.BuilderToolsMaterialSlotSelector);
}
}
}
com/hypixel/hytale/server/core/command/commands/debug/StopNetworkChunkSendingCommand.java
package com.hypixel.hytale.server.core.command.commands.debug;
import com.hypixel.hytale.component.Ref;
import com.hypixel.hytale.component.Store;
import com.hypixel.hytale.server.core.Message;
import com.hypixel.hytale.server.core.command.system.CommandContext;
import com.hypixel.hytale.server.core.command.system.arguments.system.RequiredArg;
import com.hypixel.hytale.server.core.command.system.arguments.types.ArgTypes;
import com.hypixel.hytale.server.core.command.system.basecommands.AbstractPlayerCommand;
import com.hypixel.hytale.server.core.modules.entity.player.ChunkTracker;
import com.hypixel.hytale.server.core.universe.PlayerRef;
import com.hypixel.hytale.server.core.universe.world.World;
import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
import javax.annotation.Nonnull;
public class StopNetworkChunkSendingCommand extends AbstractPlayerCommand {
@Nonnull
private final RequiredArg<Boolean> sendNetworkChunksArg;
public StopNetworkChunkSendingCommand() {
super("networkChunkSending", "Stop sending chunks over the network");
this.sendNetworkChunksArg = this.withRequiredArg("sendNetworkChunks", "Whether chunks should be sent over the network to yourself", ArgTypes.BOOLEAN);
}
protected void execute(@Nonnull CommandContext context, Store<EntityStore> store, Ref<EntityStore> ref, PlayerRef playerRef, World world) {
(ChunkTracker)store.getComponent(ref, ChunkTracker.getComponentType());
(chunkTrackerComponent == ) {
playerRef.sendMessage(Message.translation());
} {
(PlayerRef)store.getComponent(ref, PlayerRef.getComponentType());
playerRefComponent != ;
chunkTrackerComponent.setReadyForChunks((Boolean).sendNetworkChunksArg.get(context));
playerRef.sendMessage(Message.translation().param(, playerRefComponent.getUsername()).param(, (Boolean).sendNetworkChunksArg.get(context)));
}
}
}
com/hypixel/hytale/server/core/command/commands/debug/TagPatternCommand.java
package com.hypixel.hytale.server.core.command.commands.debug;
import com.hypixel.hytale.server.core.Message;
import com.hypixel.hytale.server.core.asset.type.blocktype.config.BlockType;
import com.hypixel.hytale.server.core.asset.type.tagpattern.config.TagPattern;
import com.hypixel.hytale.server.core.command.system.CommandContext;
import com.hypixel.hytale.server.core.command.system.arguments.system.RequiredArg;
import com.hypixel.hytale.server.core.command.system.arguments.types.ArgTypes;
import com.hypixel.hytale.server.core.command.system.arguments.types.AssetArgumentType;
import com.hypixel.hytale.server.core.command.system.arguments.types.SingleArgumentType;
import com.hypixel.hytale.server.core.command.system.basecommands.CommandBase;
import javax.annotation.Nonnull;
public class TagPatternCommand extends CommandBase {
@Nonnull
private static final SingleArgumentType<TagPattern> TAG_PATTERN_ARG_TYPE = new AssetArgumentType("server.commands.parsing.argtype.asset.tagpattern.name", TagPattern.class, "server.commands.parsing.argtype.asset.tagpattern.usage");
@Nonnull
private final RequiredArg<TagPattern> tagPatternArg;
@Nonnull
private final RequiredArg<BlockType> blockTypeArg;
public TagPatternCommand() {
super("tagpattern", "server.commands.tagpattern.desc");
.tagPatternArg = .withRequiredArg(, , TAG_PATTERN_ARG_TYPE);
.blockTypeArg = .withRequiredArg(, , ArgTypes.BLOCK_TYPE_ASSET);
}
{
(TagPattern).tagPatternArg.get(context);
(BlockType).blockTypeArg.get(context);
tagPattern.test(blockType.getData().getTags());
context.sendMessage((result ? Message.translation() : Message.translation()).param(, blockType.getId()).param(, tagPattern.getId()));
}
}
com/hypixel/hytale/server/core/command/commands/debug/VersionCommand.java
package com.hypixel.hytale.server.core.command.commands.debug;
import com.hypixel.hytale.common.util.java.ManifestUtil;
import com.hypixel.hytale.server.core.Message;
import com.hypixel.hytale.server.core.command.system.CommandContext;
import com.hypixel.hytale.server.core.command.system.basecommands.CommandBase;
import javax.annotation.Nonnull;
public class VersionCommand extends CommandBase {
private static final Message MESSAGE_RESPONSE = Message.translation("server.commands.version.response");
private static final Message MESSAGE_RESPONSE_WITH_ENV = Message.translation("server.commands.version.response.withEnvironment");
public VersionCommand() {
super("version", "Displays version information about the currently running server");
}
protected void executeSync(@Nonnull CommandContext context) {
String version = ManifestUtil.getImplementationVersion();
String patchline = ManifestUtil.getPatchline();
if (.equals(patchline)) {
context.sendMessage(MESSAGE_RESPONSE.param(, version).param(, patchline));
} {
context.sendMessage(MESSAGE_RESPONSE_WITH_ENV.param(, version).param(, patchline).param(, ));
}
}
}
com/hypixel/hytale/server/core/command/commands/debug/component/hitboxcollision/HitboxCollisionAddCommand.java
package com.hypixel.hytale.server.core.command.commands.debug.component.hitboxcollision;
import com.hypixel.hytale.component.Ref;
import com.hypixel.hytale.component.Store;
import com.hypixel.hytale.server.core.Message;
import com.hypixel.hytale.server.core.command.system.CommandContext;
import com.hypixel.hytale.server.core.command.system.arguments.system.RequiredArg;
import com.hypixel.hytale.server.core.command.system.arguments.types.ArgTypes;
import com.hypixel.hytale.server.core.command.system.arguments.types.EntityWrappedArg;
import com.hypixel.hytale.server.core.command.system.basecommands.AbstractCommandCollection;
import com.hypixel.hytale.server.core.command.system.basecommands.AbstractTargetPlayerCommand;
import com.hypixel.hytale.server.core.command.system.basecommands.AbstractWorldCommand;
import com.hypixel.hytale.server.core.modules.entity.hitboxcollision.HitboxCollision;
import com.hypixel.hytale.server.core.modules.entity.hitboxcollision.HitboxCollisionConfig;
import com.hypixel.hytale.server.core.universe.PlayerRef;
import com.hypixel.hytale.server.core.universe.world.World;
import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
public class HitboxCollisionAddCommand extends AbstractCommandCollection {
@Nonnull
private static final Message MESSAGE_COMMANDS_ERRORS_TARGET_NOT_IN_WORLD = Message.translation("server.commands.errors.targetNotInWorld");
public {
(, );
.addSubCommand( ());
.addSubCommand( ());
}
{
Message.translation();
Message.translation();
RequiredArg<HitboxCollisionConfig> hitboxCollisionConfigArg;
EntityWrappedArg entityArg;
{
(, );
.hitboxCollisionConfigArg = .withRequiredArg(, , ArgTypes.HITBOX_COLLISION_CONFIG);
.entityArg = (EntityWrappedArg).withOptionalArg(, , ArgTypes.ENTITY_ID);
}
{
Ref<EntityStore> entityRef = .entityArg.get(store, context);
(entityRef != && entityRef.isValid()) {
(HitboxCollisionConfig).hitboxCollisionConfigArg.get(context);
(store.getArchetype(entityRef).contains(HitboxCollision.getComponentType())) {
context.sendMessage(MESSAGE_COMMANDS_HIT_BOX_COLLISION_ADD_ALREADY_ADDED);
} {
store.addComponent(entityRef, HitboxCollision.getComponentType(), (hitboxCollisionConfig));
context.sendMessage(MESSAGE_COMMANDS_HIT_BOX_COLLISION_ADD_SUCCESS);
}
} {
context.sendMessage(HitboxCollisionAddCommand.MESSAGE_COMMANDS_ERRORS_TARGET_NOT_IN_WORLD);
}
}
}
{
Message.translation();
Message.translation();
RequiredArg<HitboxCollisionConfig> hitboxCollisionConfigArg;
{
(, );
.hitboxCollisionConfigArg = .withRequiredArg(, , ArgTypes.HITBOX_COLLISION_CONFIG);
}
{
(store.getArchetype(ref).contains(HitboxCollision.getComponentType())) {
context.sendMessage(MESSAGE_COMMANDS_HIT_BOX_COLLISION_ADD_ALREADY_ADDED);
} {
(HitboxCollisionConfig).hitboxCollisionConfigArg.get(context);
store.addComponent(ref, HitboxCollision.getComponentType(), (hitboxCollisionConfig));
context.sendMessage(MESSAGE_COMMANDS_HIT_BOX_COLLISION_ADD_SUCCESS);
}
}
}
}
com/hypixel/hytale/server/core/command/commands/debug/component/hitboxcollision/HitboxCollisionCommand.java
package com.hypixel.hytale.server.core.command.commands.debug.component.hitboxcollision;
import com.hypixel.hytale.server.core.command.system.basecommands.AbstractCommandCollection;
public class HitboxCollisionCommand extends AbstractCommandCollection {
public HitboxCollisionCommand() {
super("hitboxcollision", "server.commands.hitboxcollision.desc");
this.addSubCommand(new HitboxCollisionAddCommand());
this.addSubCommand(new HitboxCollisionRemoveCommand());
}
}
com/hypixel/hytale/server/core/command/commands/debug/component/hitboxcollision/HitboxCollisionRemoveCommand.java
package com.hypixel.hytale.server.core.command.commands.debug.component.hitboxcollision;
import com.hypixel.hytale.component.Ref;
import com.hypixel.hytale.component.Store;
import com.hypixel.hytale.server.core.Message;
import com.hypixel.hytale.server.core.command.system.CommandContext;
import com.hypixel.hytale.server.core.command.system.arguments.types.ArgTypes;
import com.hypixel.hytale.server.core.command.system.arguments.types.EntityWrappedArg;
import com.hypixel.hytale.server.core.command.system.basecommands.AbstractCommandCollection;
import com.hypixel.hytale.server.core.command.system.basecommands.AbstractPlayerCommand;
import com.hypixel.hytale.server.core.command.system.basecommands.AbstractWorldCommand;
import com.hypixel.hytale.server.core.modules.entity.hitboxcollision.HitboxCollision;
import com.hypixel.hytale.server.core.universe.PlayerRef;
import com.hypixel.hytale.server.core.universe.world.World;
import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
import javax.annotation.Nonnull;
public class HitboxCollisionRemoveCommand extends AbstractCommandCollection {
private static final Message MESSAGE_COMMANDS_ERRORS_TARGET_NOT_IN_WORLD = Message.translation("server.commands.errors.targetNotInWorld");
public HitboxCollisionRemoveCommand() {
super("remove", "server.commands.hitboxcollision.remove.desc");
this.addSubCommand( ());
.addSubCommand( ());
}
{
EntityWrappedArg entityArg;
{
(, );
.entityArg = (EntityWrappedArg).withRequiredArg(, , ArgTypes.ENTITY_ID);
}
{
Ref<EntityStore> entityRef = .entityArg.get(store, context);
(entityRef != && entityRef.isValid()) {
store.tryRemoveComponent(entityRef, HitboxCollision.getComponentType());
context.sendMessage(Message.translation());
} {
context.sendMessage(HitboxCollisionRemoveCommand.MESSAGE_COMMANDS_ERRORS_TARGET_NOT_IN_WORLD);
}
}
}
{
{
(, );
}
{
store.tryRemoveComponent(ref, HitboxCollision.getComponentType());
context.sendMessage(Message.translation());
}
}
}
com/hypixel/hytale/server/core/command/commands/debug/component/repulsion/RepulsionAddCommand.java
package com.hypixel.hytale.server.core.command.commands.debug.component.repulsion;
import com.hypixel.hytale.component.Ref;
import com.hypixel.hytale.component.Store;
import com.hypixel.hytale.server.core.Message;
import com.hypixel.hytale.server.core.command.system.CommandContext;
import com.hypixel.hytale.server.core.command.system.arguments.system.RequiredArg;
import com.hypixel.hytale.server.core.command.system.arguments.types.ArgTypes;
import com.hypixel.hytale.server.core.command.system.arguments.types.EntityWrappedArg;
import com.hypixel.hytale.server.core.command.system.basecommands.AbstractCommandCollection;
import com.hypixel.hytale.server.core.command.system.basecommands.AbstractTargetPlayerCommand;
import com.hypixel.hytale.server.core.command.system.basecommands.AbstractWorldCommand;
import com.hypixel.hytale.server.core.modules.entity.repulsion.Repulsion;
import com.hypixel.hytale.server.core.modules.entity.repulsion.RepulsionConfig;
import com.hypixel.hytale.server.core.universe.PlayerRef;
import com.hypixel.hytale.server.core.universe.world.World;
import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
public class RepulsionAddCommand extends AbstractCommandCollection {
private static final Message MESSAGE_COMMANDS_ERRORS_TARGET_NOT_IN_WORLD = Message.translation("server.commands.errors.targetNotInWorld");
public RepulsionAddCommand {
(, );
.addSubCommand( ());
.addSubCommand( ());
}
{
Message.translation();
Message.translation();
RequiredArg<RepulsionConfig> repulsionConfigArg;
EntityWrappedArg entityArg;
{
(, );
.repulsionConfigArg = .withRequiredArg(, , ArgTypes.REPULSION_CONFIG);
.entityArg = (EntityWrappedArg).withRequiredArg(, , ArgTypes.ENTITY_ID);
}
{
Ref<EntityStore> entityRef = .entityArg.get(store, context);
(entityRef != && entityRef.isValid()) {
(RepulsionConfig).repulsionConfigArg.get(context);
(store.getArchetype(entityRef).contains(Repulsion.getComponentType())) {
context.sendMessage(MESSAGE_COMMANDS_REPULSION_ADD_ALREADY_ADDED);
} {
store.addComponent(entityRef, Repulsion.getComponentType(), (repulsionConfig));
context.sendMessage(COMMANDS_REPULSION_ADD_SUCCESS);
}
} {
context.sendMessage(RepulsionAddCommand.MESSAGE_COMMANDS_ERRORS_TARGET_NOT_IN_WORLD);
}
}
}
{
Message.translation();
Message.translation();
RequiredArg<RepulsionConfig> repulsionConfigArg;
{
(, );
.repulsionConfigArg = .withRequiredArg(, , ArgTypes.REPULSION_CONFIG);
}
{
(store.getArchetype(ref).contains(Repulsion.getComponentType())) {
context.sendMessage(MESSAGE_COMMANDS_REPULSION_ADD_ALREADY_ADDED);
} {
(RepulsionConfig).repulsionConfigArg.get(context);
store.addComponent(ref, Repulsion.getComponentType(), (repulsionConfig));
context.sendMessage(MESSAGE_COMMANDS_REPULSION_ADD_SUCCESS);
}
}
}
}
com/hypixel/hytale/server/core/command/commands/debug/component/repulsion/RepulsionCommand.java
package com.hypixel.hytale.server.core.command.commands.debug.component.repulsion;
import com.hypixel.hytale.server.core.command.system.basecommands.AbstractCommandCollection;
public class RepulsionCommand extends AbstractCommandCollection {
public RepulsionCommand() {
super("repulsion", "server.commands.repulsion.desc");
this.addSubCommand(new RepulsionAddCommand());
this.addSubCommand(new RepulsionRemoveCommand());
}
}
com/hypixel/hytale/server/core/command/commands/debug/component/repulsion/RepulsionRemoveCommand.java
package com.hypixel.hytale.server.core.command.commands.debug.component.repulsion;
import com.hypixel.hytale.component.Ref;
import com.hypixel.hytale.component.Store;
import com.hypixel.hytale.server.core.Message;
import com.hypixel.hytale.server.core.command.system.CommandContext;
import com.hypixel.hytale.server.core.command.system.arguments.types.ArgTypes;
import com.hypixel.hytale.server.core.command.system.arguments.types.EntityWrappedArg;
import com.hypixel.hytale.server.core.command.system.basecommands.AbstractCommandCollection;
import com.hypixel.hytale.server.core.command.system.basecommands.AbstractTargetPlayerCommand;
import com.hypixel.hytale.server.core.command.system.basecommands.AbstractWorldCommand;
import com.hypixel.hytale.server.core.modules.entity.repulsion.Repulsion;
import com.hypixel.hytale.server.core.universe.PlayerRef;
import com.hypixel.hytale.server.core.universe.world.World;
import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
public class RepulsionRemoveCommand extends AbstractCommandCollection {
@Nonnull
private static final Message MESSAGE_COMMANDS_ERRORS_TARGET_NOT_IN_WORLD = Message.translation("server.commands.errors.targetNotInWorld");
public RepulsionRemoveCommand() {
super("remove", );
.addSubCommand( ());
.addSubCommand( ());
}
{
Message.translation();
EntityWrappedArg entityArg;
{
(, );
.entityArg = (EntityWrappedArg).withRequiredArg(, , ArgTypes.ENTITY_ID);
}
{
Ref<EntityStore> entityRef = .entityArg.get(store, context);
(entityRef != && entityRef.isValid()) {
store.tryRemoveComponent(entityRef, Repulsion.getComponentType());
context.sendMessage(MESSAGE_COMMANDS_REPULSION_REMOVE_SUCCESS);
} {
context.sendMessage(RepulsionRemoveCommand.MESSAGE_COMMANDS_ERRORS_TARGET_NOT_IN_WORLD);
}
}
}
{
Message.translation();
{
(, );
}
{
store.tryRemoveComponent(ref, Repulsion.getComponentType());
context.sendMessage(MESSAGE_COMMANDS_REPULSION_REMOVE_SUCCESS);
}
}
}
com/hypixel/hytale/server/core/command/commands/debug/packs/PacksCommand.java
package com.hypixel.hytale.server.core.command.commands.debug.packs;
import com.hypixel.hytale.server.core.command.system.basecommands.AbstractCommandCollection;
public class PacksCommand extends AbstractCommandCollection {
public PacksCommand() {
super("packs", "server.commands.packs.desc");
this.addSubCommand(new PacksListCommand());
}
}
com/hypixel/hytale/server/core/command/commands/debug/packs/PacksListCommand.java
package com.hypixel.hytale.server.core.command.commands.debug.packs;
import com.hypixel.hytale.assetstore.AssetPack;
import com.hypixel.hytale.server.core.Message;
import com.hypixel.hytale.server.core.asset.AssetModule;
import com.hypixel.hytale.server.core.command.system.CommandContext;
import com.hypixel.hytale.server.core.command.system.basecommands.CommandBase;
import com.hypixel.hytale.server.core.util.message.MessageFormat;
import it.unimi.dsi.fastutil.objects.ObjectArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.Objects;
import java.util.stream.Stream;
import javax.annotation.Nonnull;
public class PacksListCommand extends CommandBase {
@Nonnull
private static final Message MESSAGE_PACKS_NOT_INITIALIZED = Message.translation("server.commands.packs.notInitialized");
@Nonnull
private static final Message MESSAGE_PACKS_NONE_LOADED = Message.translation("server.commands.packs.noneLoaded");
public PacksListCommand() {
super("list", "server.commands.packs.list.desc");
this.addAliases( []{});
}
{
AssetModule.get();
(assetModule == ) {
context.sendMessage(MESSAGE_PACKS_NOT_INITIALIZED);
} {
List<AssetPack> assetPacks = assetModule.getAssetPacks();
(assetPacks.isEmpty()) {
context.sendMessage(MESSAGE_PACKS_NONE_LOADED);
} {
ObjectArrayList<Message> packs = <Message>();
assetPacks.stream().sorted(Comparator.comparing(AssetPack::getName, String.CASE_INSENSITIVE_ORDER)).map(PacksListCommand::formatPack);
Objects.requireNonNull(packs);
var10000.forEach(packs::add);
context.sendMessage(MessageFormat.list(Message.translation(), packs));
}
}
}
Message {
pack.getName();
pack.getRoot() != ? pack.getRoot().toString() : ;
Message.translation().param(, name).param(, root);
}
}
com/hypixel/hytale/server/core/command/commands/debug/server/ServerCommand.java
package com.hypixel.hytale.server.core.command.commands.debug.server;
import com.hypixel.hytale.server.core.command.system.basecommands.AbstractCommandCollection;
public class ServerCommand extends AbstractCommandCollection {
public ServerCommand() {
super("server", "server.commands.server.desc");
this.addSubCommand(new ServerStatsCommand());
this.addSubCommand(new ServerGCCommand());
this.addSubCommand(new ServerDumpCommand());
}
}
com/hypixel/hytale/server/core/command/commands/debug/server/ServerDumpCommand.java
package com.hypixel.hytale.server.core.command.commands.debug.server;
import com.hypixel.hytale.server.core.Message;
import com.hypixel.hytale.server.core.command.system.CommandContext;
import com.hypixel.hytale.server.core.command.system.arguments.system.FlagArg;
import com.hypixel.hytale.server.core.command.system.basecommands.CommandBase;
import com.hypixel.hytale.server.core.util.DumpUtil;
import com.hypixel.hytale.sneakythrow.SneakyThrow;
import java.io.IOException;
import java.nio.file.Path;
import javax.annotation.Nonnull;
public class ServerDumpCommand extends CommandBase {
@Nonnull
private static final Message MESSAGE_COMMANDS_SERVER_DUMP_DUMPING_STATE = Message.translation("server.commands.server.dump.dumpingState");
@Nonnull
private final FlagArg jsonFlag = this.withFlagArg("json", "server.commands.server.dump.json.desc");
public ServerDumpCommand() {
super("dump", "server.commands.server.dump.desc");
}
protected void executeSync( CommandContext context) {
context.sendMessage(MESSAGE_COMMANDS_SERVER_DUMP_DUMPING_STATE);
(.jsonFlag.provided(context)) {
{
DumpUtil.dumpToJson();
context.sendMessage(Message.translation().param(, path.toAbsolutePath().toString()));
} (IOException e) {
context.sendMessage(Message.translation().param(, e.getMessage()));
SneakyThrow.sneakyThrow(e);
}
} {
DumpUtil.dump(, );
context.sendMessage(Message.translation().param(, file.toAbsolutePath().toString()));
}
}
}
com/hypixel/hytale/server/core/command/commands/debug/server/ServerGCCommand.java
package com.hypixel.hytale.server.core.command.commands.debug.server;
import com.hypixel.hytale.common.util.FormatUtil;
import com.hypixel.hytale.server.core.Message;
import com.hypixel.hytale.server.core.command.system.CommandContext;
import com.hypixel.hytale.server.core.command.system.basecommands.CommandBase;
import javax.annotation.Nonnull;
public class ServerGCCommand extends CommandBase {
public ServerGCCommand() {
super("gc", "server.commands.server.gc.desc");
}
protected void executeSync(@Nonnull CommandContext context) {
long before = Runtime.getRuntime().freeMemory();
System.gc();
long after = Runtime.getRuntime().freeMemory();
long freedBytes = before - after;
if (freedBytes >= 0L) {
context.sendMessage(Message.translation("server.commands.server.gc.forcedgc").param("bytes", FormatUtil.bytesToString(freedBytes)));
} else {
context.sendMessage(Message.translation("server.commands.server.gc.forcedgc.increased").param("bytes", FormatUtil.bytesToString(-freedBytes)));
}
}
}
com/hypixel/hytale/server/core/command/commands/debug/server/ServerStatsCommand.java
package com.hypixel.hytale.server.core.command.commands.debug.server;
import com.hypixel.hytale.server.core.command.system.basecommands.AbstractCommandCollection;
public class ServerStatsCommand extends AbstractCommandCollection {
public ServerStatsCommand() {
super("stats", "server.commands.server.stats.desc");
this.addSubCommand(new ServerStatsCpuCommand());
this.addSubCommand(new ServerStatsMemoryCommand());
this.addSubCommand(new ServerStatsGcCommand());
}
}
com/hypixel/hytale/server/core/command/commands/debug/server/ServerStatsCpuCommand.java
package com.hypixel.hytale.server.core.command.commands.debug.server;
import com.hypixel.hytale.common.util.FormatUtil;
import com.hypixel.hytale.server.core.Message;
import com.hypixel.hytale.server.core.command.system.CommandContext;
import com.hypixel.hytale.server.core.command.system.basecommands.CommandBase;
import java.lang.management.ManagementFactory;
import java.lang.management.OperatingSystemMXBean;
import java.lang.management.RuntimeMXBean;
import java.util.concurrent.TimeUnit;
import javax.annotation.Nonnull;
public class ServerStatsCpuCommand extends CommandBase {
@Nonnull
private static final Message MESSAGE_COMMANDS_SERVER_STATS_CPU_FULL_USAGE_INFO = Message.translation("server.commands.server.stats.cpu.fullUsageInfo");
@Nonnull
private static final Message MESSAGE_COMMANDS_SERVER_STATS_FULL_INFO_UNAVAILABLE = Message.translation("server.commands.server.stats.fullInfoUnavailable");
@Nonnull
private static final Message MESSAGE_COMMANDS_SERVER_STATS_CPU_USAGE_INFO = Message.translation("server.commands.server.stats.cpu.usageInfo");
public {
(, );
}
{
ManagementFactory.getRuntimeMXBean();
ManagementFactory.getOperatingSystemMXBean();
(operatingSystemMXBean com.sun.management.OperatingSystemMXBean sunOSBean) {
context.sendMessage(MESSAGE_COMMANDS_SERVER_STATS_CPU_FULL_USAGE_INFO.param(, sunOSBean.getSystemCpuLoad()).param(, sunOSBean.getProcessCpuLoad()));
} {
context.sendMessage(MESSAGE_COMMANDS_SERVER_STATS_FULL_INFO_UNAVAILABLE);
}
context.sendMessage(MESSAGE_COMMANDS_SERVER_STATS_CPU_USAGE_INFO.param(, operatingSystemMXBean.getSystemLoadAverage()).param(, FormatUtil.timeUnitToString(runtimeMXBean.getUptime(), TimeUnit.MILLISECONDS)));
}
}
com/hypixel/hytale/server/core/command/commands/debug/server/ServerStatsGcCommand.java
package com.hypixel.hytale.server.core.command.commands.debug.server;
import com.hypixel.hytale.server.core.Message;
import com.hypixel.hytale.server.core.command.system.CommandContext;
import com.hypixel.hytale.server.core.command.system.basecommands.CommandBase;
import java.lang.management.GarbageCollectorMXBean;
import java.lang.management.ManagementFactory;
import java.util.Arrays;
import javax.annotation.Nonnull;
public class ServerStatsGcCommand extends CommandBase {
@Nonnull
private static final Message MESSAGE_COMMANDS_SERVER_STATS_GC_USAGE_INFO = Message.translation("server.commands.server.stats.gc.usageInfo");
public ServerStatsGcCommand() {
super("gc", "server.commands.server.stats.gc.desc");
}
protected void executeSync(@Nonnull CommandContext context) {
for(GarbageCollectorMXBean garbageCollectorMXBean : ManagementFactory.getGarbageCollectorMXBeans()) {
context.sendMessage(MESSAGE_COMMANDS_SERVER_STATS_GC_USAGE_INFO.param("name", garbageCollectorMXBean.getName()).param("poolNames", Arrays.toString(garbageCollectorMXBean.getMemoryPoolNames())).param("collectionCount", garbageCollectorMXBean.getCollectionCount()).param("collectionTime", garbageCollectorMXBean.getCollectionTime()));
}
}
}
com/hypixel/hytale/server/core/command/commands/debug/server/ServerStatsMemoryCommand.java
package com.hypixel.hytale.server.core.command.commands.debug.server;
import com.hypixel.hytale.common.util.FormatUtil;
import com.hypixel.hytale.server.core.Message;
import com.hypixel.hytale.server.core.command.system.CommandContext;
import com.hypixel.hytale.server.core.command.system.basecommands.CommandBase;
import java.lang.management.ManagementFactory;
import java.lang.management.MemoryMXBean;
import java.lang.management.MemoryUsage;
import java.lang.management.OperatingSystemMXBean;
import javax.annotation.Nonnull;
public class ServerStatsMemoryCommand extends CommandBase {
@Nonnull
private static final Message MESSAGE_COMMANDS_SERVER_STATS_MEMORY_FULL_USAGE_INFO = Message.translation("server.commands.server.stats.memory.fullUsageInfo");
@Nonnull
private static final Message MESSAGE_COMMANDS_SERVER_STATS_FULL_INFO_UNAVAILABLE = Message.translation("server.commands.server.stats.fullInfoUnavailable");
@Nonnull
private static final Message MESSAGE_COMMANDS_SERVER_STATS_MEMORY_USAGE_INFO = Message.translation("server.commands.server.stats.memory.usageInfo");
public {
(, );
.addAliases( []{});
}
{
ManagementFactory.getOperatingSystemMXBean();
(operatingSystemMXBean com.sun.management.OperatingSystemMXBean sunOSBean) {
context.sendMessage(MESSAGE_COMMANDS_SERVER_STATS_MEMORY_FULL_USAGE_INFO.param(, FormatUtil.bytesToString(sunOSBean.getTotalPhysicalMemorySize())).param(, FormatUtil.bytesToString(sunOSBean.getFreePhysicalMemorySize())).param(, FormatUtil.bytesToString(sunOSBean.getTotalSwapSpaceSize())).param(, FormatUtil.bytesToString(sunOSBean.getFreeSwapSpaceSize())));
} {
context.sendMessage(MESSAGE_COMMANDS_SERVER_STATS_FULL_INFO_UNAVAILABLE);
}
ManagementFactory.getMemoryMXBean();
context.sendMessage(MESSAGE_COMMANDS_SERVER_STATS_MEMORY_USAGE_INFO.param(, formatMemoryUsage(memoryMXBean.getHeapMemoryUsage())).param(, formatMemoryUsage(memoryMXBean.getNonHeapMemoryUsage())).param(, memoryMXBean.getObjectPendingFinalizationCount()));
}
Message {
Message.translation().param(, FormatUtil.bytesToString(memoryUsage.getInit())).param(, FormatUtil.bytesToString(memoryUsage.getUsed())).param(, FormatUtil.bytesToString(memoryUsage.getCommitted())).param(, FormatUtil.bytesToString(memoryUsage.getMax())).param(, FormatUtil.bytesToString(memoryUsage.getMax() - memoryUsage.getCommitted()));
}
}
com/hypixel/hytale/server/core/command/commands/debug/stresstest/Bot.java
package com.hypixel.hytale.server.core.command.commands.debug.stresstest;
import com.hypixel.hytale.logger.HytaleLogger;
import com.hypixel.hytale.math.vector.Vector3d;
import com.hypixel.hytale.math.vector.Vector3f;
import com.hypixel.hytale.protocol.Asset;
import com.hypixel.hytale.protocol.ComponentUpdate;
import com.hypixel.hytale.protocol.ComponentUpdateType;
import com.hypixel.hytale.protocol.Direction;
import com.hypixel.hytale.protocol.EntityUpdate;
import com.hypixel.hytale.protocol.HostAddress;
import com.hypixel.hytale.protocol.InstantData;
import com.hypixel.hytale.protocol.ModelTransform;
import com.hypixel.hytale.protocol.MovementStates;
import com.hypixel.hytale.protocol.Packet;
import com.hypixel.hytale.protocol.Position;
import com.hypixel.hytale.protocol.TeleportAck;
import com.hypixel.hytale.protocol.io.netty.PacketDecoder;
import com.hypixel.hytale.protocol.io.netty.PacketEncoder;
import com.hypixel.hytale.protocol.packets.connection.ClientType;
import com.hypixel.hytale.protocol.packets.connection.Connect;
import com.hypixel.hytale.protocol.packets.connection.Disconnect;
import com.hypixel.hytale.protocol.packets.connection.DisconnectType;
import com.hypixel.hytale.protocol.packets.connection.Ping;
import com.hypixel.hytale.protocol.packets.connection.Pong;
import com.hypixel.hytale.protocol.packets.connection.PongType;
import com.hypixel.hytale.protocol.packets.entities.EntityUpdates;
import com.hypixel.hytale.protocol.packets.player.ClientMovement;
import com.hypixel.hytale.protocol.packets.player.ClientReady;
import com.hypixel.hytale.protocol.packets.player.ClientTeleport;
com.hypixel.hytale.protocol.packets.player.SetClientId;
com.hypixel.hytale.protocol.packets.setup.PlayerOptions;
com.hypixel.hytale.protocol.packets.setup.RequestAssets;
com.hypixel.hytale.protocol.packets.setup.ViewRadius;
com.hypixel.hytale.server.core.cosmetics.CosmeticsModule;
com.hypixel.hytale.server.core.io.ServerManager;
com.hypixel.hytale.server.core.io.netty.NettyUtil;
com.hypixel.hytale.server.core.modules.time.WorldTimeResource;
com.hypixel.hytale.server.core.util.PositionUtil;
io.netty.bootstrap.Bootstrap;
io.netty.channel.ChannelFutureListener;
io.netty.channel.ChannelHandler;
io.netty.channel.ChannelHandlerContext;
io.netty.channel.ChannelInitializer;
io.netty.channel.ChannelOption;
io.netty.channel.EventLoopGroup;
io.netty.channel.SimpleChannelInboundHandler;
io.netty.channel.epoll.Epoll;
io.netty.channel.epoll.EpollSocketChannel;
io.netty.channel.kqueue.KQueue;
io.netty.channel.kqueue.KQueueSocketChannel;
io.netty.channel.socket.SocketChannel;
io.netty.channel.socket.nio.NioSocketChannel;
it.unimi.dsi.fastutil.objects.ObjectArrayFIFOQueue;
java.net.InetSocketAddress;
java.net.SocketException;
java.nio.charset.StandardCharsets;
java.time.Instant;
java.util.UUID;
java.util.concurrent.Executors;
java.util.concurrent.ScheduledExecutorService;
java.util.concurrent.ScheduledFuture;
java.util.concurrent.ThreadLocalRandom;
java.util.concurrent.TimeUnit;
java.util.logging.Level;
javax.annotation.Nonnull;
javax.annotation.Nullable;
<Packet> {
Executors.newScheduledThreadPool();
NettyUtil.getEventLoopGroup(, );
Asset[] EMPTY_ASSET_ARRAY = [];
HytaleLogger logger;
String name;
BotConfig config;
ScheduledFuture<?> tickFuture;
ObjectArrayFIFOQueue<Ping> pingPackets = <Ping>();
();
SocketChannel channel;
-;
Vector3d pos;
();
();
();
();
InterruptedException, SocketException {
.logger = HytaleLogger.get(name);
.name = name;
.config = config;
.destination.assign(config.spawn.getPosition());
.destination.y = ThreadLocalRandom.current().nextDouble(config.flyYHeight.getX(), config.flyYHeight.getY());
ServerManager.get().getLocalOrPublicAddress();
.logger.at(Level.INFO).log(, address);
((Bootstrap)((Bootstrap)((Bootstrap)((Bootstrap)( ()).group(WORKER_GROUP)).channel(Epoll.isAvailable() ? EpollSocketChannel.class : (KQueue.isAvailable() ? KQueueSocketChannel.class : NioSocketChannel.class))).option(ChannelOption.SO_REUSEADDR, Boolean.TRUE)).handler( <SocketChannel>() {
{
Bot..channel = channel;
channel.pipeline().addLast((String), (ChannelHandler)( ()));
channel.pipeline().addLast((String), (ChannelHandler)( ()));
(NettyUtil.PACKET_LOGGER.getLevel() != Level.OFF) {
channel.pipeline().addLast((String), (ChannelHandler)NettyUtil.LOGGER);
}
channel.pipeline().addLast((String), (ChannelHandler)Bot.);
}
})).connect(address).sync();
()(()tickStepNanos / );
.tickFuture = EXECUTOR.scheduleAtFixedRate(() -> {
(.channel != ) {
{
.tick(dt);
} (Throwable t) {
((HytaleLogger.Api).logger.at(Level.SEVERE).withCause(t)).log(, name);
}
}
}, ()tickStepNanos, ()tickStepNanos, TimeUnit.NANOSECONDS);
}
{
.tickFuture.cancel();
(.channel != && !.channel.isShutdown()) {
{
.channel.shutdown().await(, TimeUnit.SECONDS);
.channel = ;
} (InterruptedException e) {
e.printStackTrace();
}
}
}
{
(!.pingPackets.isEmpty()) {
.pingPackets.dequeue();
.channel.write( (packet.id, WorldTimeResource.instantToInstantData(Instant.now()), PongType.Tick, ()));
}
(.pos == ) {
.channel.flush();
} {
.config.flySpeed * ()dt;
(.pos.distanceSquaredTo(.destination) <= movementDistance * movementDistance) {
ThreadLocalRandom.current();
random.nextDouble(-.config.radius, .config.radius);
random.nextDouble(.config.flyYHeight.getX(), .config.flyYHeight.getY());
random.nextDouble(-.config.radius, .config.radius);
.destination.assign(.config.spawn.getPosition());
.destination.y = randY;
.destination.add(randX, , randZ);
}
.temp.assign(.destination).subtract(.pos);
Vector3f.lookAt(.temp, .targetRotation);
Vector3f.lerpAngle(.rotation, .targetRotation, , .rotation);
.temp.normalize();
.temp.scale(movementDistance);
.pos.add(.temp);
.movementStates.flying = ;
.channel.writeAndFlush(.createMovementPacket());
}
}
{
UUID.nameUUIDFromBytes(( + .name).getBytes(StandardCharsets.UTF_8));
ctx.writeAndFlush( (, ClientType.Game, , (String), uuid, .name, ([]), (HostAddress)));
.logger.at(Level.INFO).log();
}
{
.logger.at(Level.INFO).log();
.shutdown();
StressTestStartCommand.BOTS.remove();
}
{
((HytaleLogger.Api).logger.at(Level.WARNING).withCause(cause)).log();
(ctx.channel().isWritable()) {
ctx.channel().writeAndFlush( (cause.getMessage(), DisconnectType.Crash)).addListener(ChannelFutureListener.CLOSE);
} {
ctx.channel().close();
}
.shutdown();
StressTestStartCommand.BOTS.remove();
}
{
(packet.getId()) {
:
.logger.at(Level.INFO).log(, ((Disconnect)packet).reason, ((Disconnect)packet).type);
ctx.close();
;
:
(Ping)packet;
WorldTimeResource.instantToInstantData(Instant.now());
ctx.write( (ping.id, instantData, PongType.Raw, ()));
ctx.writeAndFlush( (ping.id, instantData, PongType.Direct, ()));
.pingPackets.enqueue(ping);
;
:
ctx.write( (EMPTY_ASSET_ARRAY));
ctx.write( (.config.viewRadius));
ctx.writeAndFlush( (CosmeticsModule.get().generateRandomSkin(ThreadLocalRandom.current())));
;
:
.id = ((SetClientId)packet).clientId;
;
:
ctx.writeAndFlush( (, .id != -));
;
:
(ClientTeleport)packet;
clientTeleport.modelTransform;
(modelTransform == ) {
;
}
.updateModelTransform(modelTransform);
.logger.at(Level.INFO).log(, .pos, clientTeleport.teleportId);
.createMovementPacket();
movement.teleportAck = (clientTeleport.teleportId);
ctx.writeAndFlush(movement);
;
:
(EntityUpdates)packet;
findEntityUpdate(entityUpdates, .id);
(entry == ) {
;
}
(ComponentUpdate update : entry.updates) {
(update.type == ComponentUpdateType.Transform) {
.updateModelTransform(update.transform);
;
}
}
}
}
{
modelTransform.position;
(position != ) {
(.pos == ) {
.pos = ();
}
.pos.assign(position.x, position.y, position.z);
}
modelTransform.lookOrientation;
(lookOrientation != ) {
.updateRotation(lookOrientation);
}
}
{
(!Float.isNaN(lookOrientation.yaw)) {
.rotation.setYaw(lookOrientation.yaw);
}
(!Float.isNaN(lookOrientation.pitch)) {
.rotation.setPitch(lookOrientation.pitch);
}
(!Float.isNaN(lookOrientation.roll)) {
.rotation.setRoll(lookOrientation.roll);
}
}
ClientMovement {
();
movement.absolutePosition = PositionUtil.toPositionPacket(.pos);
movement.lookOrientation = PositionUtil.toDirectionPacket(.rotation);
movement.bodyOrientation = PositionUtil.toDirectionPacket(.rotation);
movement.bodyOrientation.pitch = ;
movement.movementStates = .movementStates;
movement;
}
String {
+ .name + + .id + ;
}
EntityUpdate {
(bulkList.updates == ) {
;
} {
(EntityUpdate otherEntry : bulkList.updates) {
(otherEntry.networkId == id) {
otherEntry;
}
}
;
}
}
}
com/hypixel/hytale/server/core/command/commands/debug/stresstest/BotConfig.java
package com.hypixel.hytale.server.core.command.commands.debug.stresstest;
import com.hypixel.hytale.math.vector.Transform;
import com.hypixel.hytale.math.vector.Vector2d;
public class BotConfig {
public final double radius;
public final Vector2d flyYHeight;
public final double flySpeed;
public final Transform spawn;
public final int viewRadius;
public BotConfig(double radius, Vector2d flyYHeight, double flySpeed, Transform spawn, int viewRadius) {
this.radius = radius;
this.flyYHeight = flyYHeight;
this.flySpeed = flySpeed;
this.spawn = spawn;
this.viewRadius = viewRadius;
}
}
com/hypixel/hytale/server/core/command/commands/debug/stresstest/StressTestCommand.java
package com.hypixel.hytale.server.core.command.commands.debug.stresstest;
import com.hypixel.hytale.server.core.command.system.basecommands.AbstractCommandCollection;
public class StressTestCommand extends AbstractCommandCollection {
public StressTestCommand() {
super("stresstest", "server.commands.stresstest.desc");
this.addSubCommand(new StressTestStartCommand());
this.addSubCommand(new StressTestStopCommand());
}
}
com/hypixel/hytale/server/core/command/commands/debug/stresstest/StressTestStartCommand.java
package com.hypixel.hytale.server.core.command.commands.debug.stresstest;
import com.hypixel.hytale.codec.validation.Validators;
import com.hypixel.hytale.common.util.FormatUtil;
import com.hypixel.hytale.common.util.StringUtil;
import com.hypixel.hytale.component.Holder;
import com.hypixel.hytale.event.EventRegistration;
import com.hypixel.hytale.logger.HytaleLogger;
import com.hypixel.hytale.math.util.MathUtil;
import com.hypixel.hytale.math.vector.Transform;
import com.hypixel.hytale.math.vector.Vector2d;
import com.hypixel.hytale.metrics.MetricsRegistry;
import com.hypixel.hytale.metrics.metric.HistoricMetric;
import com.hypixel.hytale.server.core.HytaleServer;
import com.hypixel.hytale.server.core.Message;
import com.hypixel.hytale.server.core.ShutdownReason;
import com.hypixel.hytale.server.core.command.system.CommandContext;
import com.hypixel.hytale.server.core.command.system.arguments.system.DefaultArg;
import com.hypixel.hytale.server.core.command.system.arguments.system.FlagArg;
import com.hypixel.hytale.server.core.command.system.arguments.system.OptionalArg;
import com.hypixel.hytale.server.core.command.system.arguments.types.ArgTypes;
import com.hypixel.hytale.server.core.command.system.basecommands.AbstractAsyncWorldCommand;
import com.hypixel.hytale.server.core.entity.InteractionManager;
import com.hypixel.hytale.server.core.event.events.player.AddPlayerToWorldEvent;
import com.hypixel.hytale.server.core.modules.entity.component.TransformComponent;
import com.hypixel.hytale.server.core.modules.interaction.InteractionModule;
import com.hypixel.hytale.server.core.universe.PlayerRef;
import com.hypixel.hytale.server.core.universe.world.World;
com.hypixel.hytale.server.core.universe.world.spawn.ISpawnProvider;
com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
com.hypixel.hytale.sneakythrow.SneakyThrow;
it.unimi.dsi.fastutil.objects.ObjectArrayList;
java.io.IOException;
java.net.SocketException;
java.nio.file.Files;
java.nio.file.LinkOption;
java.nio.file.Path;
java.nio.file.Paths;
java.nio.file.StandardOpenOption;
java.util.Arrays;
java.util.Collections;
java.util.List;
java.util.concurrent.CompletableFuture;
java.util.concurrent.ScheduledFuture;
java.util.concurrent.TimeUnit;
java.util.concurrent.atomic.AtomicInteger;
java.util.concurrent.atomic.AtomicReference;
java.util.logging.Level;
javax.annotation.Nonnull;
javax.annotation.Nullable;
{
AtomicReference<StressTestState> STATE;
;
List<Bot> BOTS;
Message MESSAGE_COMMANDS_STRESS_TEST_ALREADY_STARTED;
Message MESSAGE_COMMANDS_STRESS_TEST_STARTED;
DumpType DUMP_TYPE;
Path DATE_PATH;
EventRegistration<String, AddPlayerToWorldEvent> EVENT_REGISTRATION;
ScheduledFuture<?> STRESS_TEST_BOT_TASK;
ScheduledFuture<?> STRESS_TEST_DUMP_TASK;
OptionalArg<String> nameArg;
DefaultArg<Integer> initCountArg;
DefaultArg<Double> intervalArg;
DefaultArg<DumpType> dumptypeArg;
DefaultArg<Double> dumpintervalArg;
OptionalArg<Double> thresholdArg;
DefaultArg<Double> percentileArg;
DefaultArg<Integer> viewRadiusArg;
DefaultArg<Double> radiusArg;
DefaultArg<Double> yheightArg;
OptionalArg<Double> yheightMaxArg;
DefaultArg<Double> flySpeedArg;
FlagArg shutdownFlag;
{
(, );
.nameArg = .withOptionalArg(, , ArgTypes.STRING);
.initCountArg = (DefaultArg).withDefaultArg(, , ArgTypes.INTEGER, , ).addValidator(Validators.greaterThanOrEqual());
.intervalArg = (DefaultArg).withDefaultArg(, , ArgTypes.DOUBLE, , ).addValidator(Validators.greaterThan());
.dumptypeArg = .withDefaultArg(, , ArgTypes.forEnum(, DumpType.class), StressTestStartCommand.DumpType.INTERVAL, );
.dumpintervalArg = (DefaultArg).withDefaultArg(, , ArgTypes.DOUBLE, , ).addValidator(Validators.greaterThan());
.thresholdArg = (OptionalArg).withOptionalArg(, , ArgTypes.DOUBLE).addValidator(Validators.greaterThan());
.percentileArg = (DefaultArg).withDefaultArg(, , ArgTypes.DOUBLE, , ).addValidator(Validators.range(, ));
.viewRadiusArg = (DefaultArg).withDefaultArg(, , ArgTypes.INTEGER, , ).addValidator(Validators.greaterThanOrEqual());
.radiusArg = (DefaultArg).withDefaultArg(, , ArgTypes.DOUBLE, , ).addValidator(Validators.greaterThan());
.yheightArg = .withDefaultArg(, , ArgTypes.DOUBLE, , );
.yheightMaxArg = .withOptionalArg(, , ArgTypes.DOUBLE);
.flySpeedArg = (DefaultArg).withDefaultArg(, , ArgTypes.DOUBLE, , ).addValidator(Validators.greaterThan());
.shutdownFlag = .withFlagArg(, );
}
CompletableFuture<Void> {
world.getWorldConfig().getSpawnProvider();
spawnProvider.getSpawnPoints()[];
.nameArg.provided(context) ? (String).nameArg.get(context) : ;
(name != && !StringUtil.isAlphaNumericHyphenUnderscoreString(name)) {
context.sendMessage(Message.translation().param(, name));
CompletableFuture.completedFuture((Object));
} {
(Integer).viewRadiusArg.get(context);
(Double).radiusArg.get(context);
(Double).yheightArg.get(context);
.yheightMaxArg.provided(context) ? (Double).yheightMaxArg.get(context) : yheight + ;
(Double).flySpeedArg.get(context);
(radius, (yheight, yheightMax), flySpeed, spawn, viewRadius);
(Integer).initCountArg.get(context);
(Double).intervalArg.get(context);
(DumpType).dumptypeArg.get(context);
(Double).dumpintervalArg.get(context);
.thresholdArg.provided(context) ? MathUtil.ceil((Double).thresholdArg.get(context) * ) : world.getTickStepNanos();
MathUtil.round((Double).percentileArg.get(context), );
(Boolean).shutdownFlag.get(context);
(!STATE.compareAndSet(StressTestStartCommand.StressTestState.NOT_RUNNING, StressTestStartCommand.StressTestState.RUNNING)) {
context.sendMessage(MESSAGE_COMMANDS_STRESS_TEST_ALREADY_STARTED);
CompletableFuture.completedFuture((Object));
} {
{
start(name, world, config, initCount, interval, dumpType, dumpInterval, ()thresholdNanos, percentile, shutdown);
} (IOException e) {
SneakyThrow.sneakyThrow(e);
}
context.sendMessage(MESSAGE_COMMANDS_STRESS_TEST_STARTED);
CompletableFuture.completedFuture((Object));
}
}
}
IOException {
EVENT_REGISTRATION = HytaleServer.get().getEventBus().register((Class)AddPlayerToWorldEvent.class, world.getName(), (event) -> {
Holder<EntityStore> holder = event.getHolder();
(PlayerRef)holder.getComponent(PlayerRef.getComponentType());
playerRefComponent != ;
(playerRefComponent.getUsername().startsWith()) {
(InteractionManager)holder.getComponent(InteractionModule.get().getInteractionManagerComponent());
holder.putComponent(TransformComponent.getComponentType(), (config.spawn.getPosition(), config.spawn.getRotation()));
manager.setHasRemoteClient();
}
});
DUMP_TYPE = dumpType;
DATE_PATH = MetricsRegistry.createDatePath(Paths.get(), (String), name != ? + name : );
(!Files.exists(DATE_PATH, [])) {
Files.createDirectories(DATE_PATH);
}
StringUtil.trimEnd(Double.toString(MathUtil.round(percentile * , )), );
DATE_PATH.resolve();
Files.writeString(resultsPath, + percentileDisplay + , StandardOpenOption.CREATE_NEW);
world.getTickStepNanos();
();
( ; i < initCount; ++i) {
{
BOTS.add( ( + counter.getAndIncrement(), config, tickStepNanos));
} (SocketException | InterruptedException e) {
Thread.currentThread().interrupt();
SneakyThrow.sneakyThrow(e);
}
}
(DUMP_TYPE == StressTestStartCommand.DumpType.INTERVAL) {
MathUtil.ceil(dumpInterval * );
STRESS_TEST_DUMP_TASK = HytaleServer.SCHEDULED_EXECUTOR.scheduleAtFixedRate(() -> {
{
MetricsRegistry.createDumpPath(DATE_PATH, );
HytaleServer.METRICS_REGISTRY.dumpToJson(path, HytaleServer.get());
} (IOException e) {
((HytaleLogger.Api)HytaleLogger.getLogger().at(Level.SEVERE).withCause(e)).log();
}
}, ()dumpIntervalMillis, ()dumpIntervalMillis, TimeUnit.MILLISECONDS);
}
MathUtil.ceil(interval * );
STRESS_TEST_BOT_TASK = HytaleServer.SCHEDULED_EXECUTOR.scheduleWithFixedDelay(() -> CompletableFuture.runAsync(SneakyThrow.sneakyRunnable(() -> {
(DUMP_TYPE == StressTestStartCommand.DumpType.NEW_BOT) {
MetricsRegistry.createDumpPath(DATE_PATH, );
HytaleServer.METRICS_REGISTRY.dumpToJson(path, HytaleServer.get());
}
world.getBufferedTickLengthMetricSet();
;
historicMetric.getAverage(periodIndex);
historicMetric.calculateMin(periodIndex);
historicMetric.calculateMax(periodIndex);
[] values = historicMetric.getValues();
Arrays.sort(values);
MathUtil.percentile(values, );
MathUtil.percentile(values, );
MathUtil.percentile(values, );
BOTS.size();
MathUtil.percentile(values, percentile);
Files.writeString(resultsPath, avg + + min + + p25 + + p50 + + p75 + + max + + p + + bots + , StandardOpenOption.APPEND);
HytaleLogger.getLogger().at(Level.INFO).log(, FormatUtil.timeUnitToString(()MathUtil.ceil(avg), TimeUnit.NANOSECONDS), FormatUtil.timeUnitToString(min, TimeUnit.NANOSECONDS), FormatUtil.timeUnitToString(()MathUtil.ceil(p25), TimeUnit.NANOSECONDS), FormatUtil.timeUnitToString(()MathUtil.ceil(p50), TimeUnit.NANOSECONDS), FormatUtil.timeUnitToString(()MathUtil.ceil(p75), TimeUnit.NANOSECONDS), FormatUtil.timeUnitToString(max, TimeUnit.NANOSECONDS), percentileDisplay, FormatUtil.timeUnitToString(()MathUtil.ceil(p), TimeUnit.NANOSECONDS), bots);
(p > ()thresholdNanos) {
HytaleLogger.getLogger().at(Level.INFO).log(, percentileDisplay, FormatUtil.timeUnitToString(()MathUtil.ceil(p), TimeUnit.NANOSECONDS), FormatUtil.timeUnitToString(thresholdNanos, TimeUnit.NANOSECONDS));
(STATE.compareAndSet(StressTestStartCommand.StressTestState.RUNNING, StressTestStartCommand.StressTestState.STOPPING)) {
stop();
}
(shutdown) {
HytaleServer.get().shutdownServer(ShutdownReason.SHUTDOWN.withMessage());
}
} {
BOTS.add( ( + counter.getAndIncrement(), config, tickStepNanos));
}
})), ()intervalMillis, ()intervalMillis, TimeUnit.MILLISECONDS);
HytaleLogger.getLogger().at(Level.INFO).log( + (shutdown ? : ), FormatUtil.timeUnitToString(()intervalMillis, TimeUnit.MILLISECONDS), FormatUtil.timeUnitToString(thresholdNanos, TimeUnit.NANOSECONDS), percentileDisplay);
}
{
(DUMP_TYPE == StressTestStartCommand.DumpType.INTERVAL || DUMP_TYPE == StressTestStartCommand.DumpType.FINISH) {
{
MetricsRegistry.createDumpPath(DATE_PATH, );
HytaleServer.METRICS_REGISTRY.dumpToJson(path, HytaleServer.get());
} (IOException e) {
SneakyThrow.sneakyThrow(e);
}
}
(STRESS_TEST_BOT_TASK != ) {
STRESS_TEST_BOT_TASK.cancel();
STRESS_TEST_BOT_TASK = ;
}
(STRESS_TEST_DUMP_TASK != ) {
STRESS_TEST_DUMP_TASK.cancel();
STRESS_TEST_DUMP_TASK = ;
}
BOTS.removeIf((bot) -> {
bot.shutdown();
;
});
(EVENT_REGISTRATION != ) {
EVENT_REGISTRATION.unregister();
EVENT_REGISTRATION = ;
}
DATE_PATH = ;
DUMP_TYPE = ;
STATE.compareAndSet(StressTestStartCommand.StressTestState.STOPPING, StressTestStartCommand.StressTestState.NOT_RUNNING);
HytaleLogger.getLogger().at(Level.INFO).log();
}
{
STATE = (StressTestStartCommand.StressTestState.NOT_RUNNING);
BOTS = Collections.synchronizedList( ());
MESSAGE_COMMANDS_STRESS_TEST_ALREADY_STARTED = Message.translation();
MESSAGE_COMMANDS_STRESS_TEST_STARTED = Message.translation();
}
{
NOT_RUNNING,
RUNNING,
STOPPING;
{
}
}
{
NEW_BOT,
INTERVAL,
FINISH,
NEVER;
{
}
}
}
com/hypixel/hytale/server/core/command/commands/debug/stresstest/StressTestStopCommand.java
package com.hypixel.hytale.server.core.command.commands.debug.stresstest;
import com.hypixel.hytale.server.core.Message;
import com.hypixel.hytale.server.core.command.system.CommandContext;
import com.hypixel.hytale.server.core.command.system.basecommands.AbstractAsyncCommand;
import java.util.concurrent.CompletableFuture;
import javax.annotation.Nonnull;
public class StressTestStopCommand extends AbstractAsyncCommand {
@Nonnull
private static final Message MESSAGE_COMMANDS_STRESS_TEST_NOT_STARTED = Message.translation("server.commands.stresstest.notStarted");
@Nonnull
private static final Message MESSAGE_COMMANDS_STRESS_TEST_STOPPED = Message.translation("server.commands.stresstest.stopped");
public StressTestStopCommand() {
super("stop", "server.commands.stresstest.stop.desc");
}
@Nonnull
protected CompletableFuture<Void> executeAsync(@Nonnull CommandContext context) {
if (!StressTestStartCommand.STATE.compareAndSet(StressTestStartCommand.StressTestState.RUNNING, StressTestStartCommand.StressTestState.STOPPING)) {
context.sendMessage(MESSAGE_COMMANDS_STRESS_TEST_NOT_STARTED);
CompletableFuture.completedFuture((Object));
} {
StressTestStartCommand.stop();
context.sendMessage(MESSAGE_COMMANDS_STRESS_TEST_STOPPED);
CompletableFuture.completedFuture((Object));
}
}
}
com/hypixel/hytale/server/core/command/commands/player/DamageCommand.java
package com.hypixel.hytale.server.core.command.commands.player;
import com.hypixel.hytale.component.Ref;
import com.hypixel.hytale.component.Store;
import com.hypixel.hytale.server.core.Message;
import com.hypixel.hytale.server.core.command.system.CommandContext;
import com.hypixel.hytale.server.core.command.system.arguments.system.FlagArg;
import com.hypixel.hytale.server.core.command.system.arguments.system.OptionalArg;
import com.hypixel.hytale.server.core.command.system.arguments.system.RequiredArg;
import com.hypixel.hytale.server.core.command.system.arguments.types.ArgTypes;
import com.hypixel.hytale.server.core.command.system.basecommands.AbstractPlayerCommand;
import com.hypixel.hytale.server.core.command.system.basecommands.CommandBase;
import com.hypixel.hytale.server.core.entity.entities.Player;
import com.hypixel.hytale.server.core.modules.entity.damage.Damage;
import com.hypixel.hytale.server.core.modules.entity.damage.DamageCause;
import com.hypixel.hytale.server.core.modules.entity.damage.DamageSystems;
import com.hypixel.hytale.server.core.permissions.HytalePermissions;
import com.hypixel.hytale.server.core.universe.PlayerRef;
import com.hypixel.hytale.server.core.universe.world.World;
import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
import javax.annotation.Nonnull;
public class DamageCommand extends AbstractPlayerCommand {
@Nonnull
private final OptionalArg<Double> amountArg;
@Nonnull
private final FlagArg silentArg;
{
(, );
.amountArg = .withOptionalArg(, , ArgTypes.DOUBLE);
.silentArg = .withFlagArg(, );
.addAliases( []{});
.requirePermission(HytalePermissions.fromCommand());
.addUsageVariant( ());
}
{
.amountArg.provided(context) ? (Double).amountArg.get(context) : ;
(Boolean).silentArg.get(context);
Damage. .CommandSource(context.sender(), .getName());
(damageSource, DamageCause.COMMAND, ()amount);
DamageSystems.executeDamage(ref, store, damage);
(!silent) {
String.format(, amount);
context.sendMessage(Message.translation().param(, damageFmt));
(world.getGameplayConfig().getCombatConfig().isPlayerIncomingDamageDisabled()) {
context.sendMessage(Message.translation().color());
}
}
}
{
Message.translation();
RequiredArg<PlayerRef> playerArg;
OptionalArg<Double> amountArg;
FlagArg silentArg;
DamageOtherCommand() {
();
.playerArg = .withRequiredArg(, , ArgTypes.PLAYER_REF);
.amountArg = .withOptionalArg(, , ArgTypes.DOUBLE);
.silentArg = .withFlagArg(, );
.requirePermission(HytalePermissions.fromCommand());
}
{
(PlayerRef).playerArg.get(context);
Ref<EntityStore> ref = targetPlayerRef.getReference();
(ref != && ref.isValid()) {
Store<EntityStore> store = ref.getStore();
((EntityStore)store.getExternalData()).getWorld();
world.execute(() -> {
(Player)store.getComponent(ref, Player.getComponentType());
(playerComponent == ) {
context.sendMessage(MESSAGE_COMMANDS_ERRORS_PLAYER_NOT_IN_WORLD);
} {
(PlayerRef)store.getComponent(ref, PlayerRef.getComponentType());
playerRefComponent != ;
.amountArg.provided(context) ? (Double).amountArg.get(context) : ;
(Boolean).silentArg.get(context);
Damage. .CommandSource(context.sender(), );
(damageSource, DamageCause.COMMAND, ()amount);
DamageSystems.executeDamage(ref, store, damage);
(!silent) {
String.format(, amount);
context.sendMessage(Message.translation().param(, damageFmt).param(, playerRefComponent.getUsername()));
(world.getGameplayConfig().getCombatConfig().isPlayerIncomingDamageDisabled()) {
context.sendMessage(Message.translation().color());
}
}
}
});
} {
context.sendMessage(MESSAGE_COMMANDS_ERRORS_PLAYER_NOT_IN_WORLD);
}
}
}
}
com/hypixel/hytale/server/core/command/commands/player/GameModeCommand.java
package com.hypixel.hytale.server.core.command.commands.player;
import com.hypixel.hytale.component.Ref;
import com.hypixel.hytale.component.Store;
import com.hypixel.hytale.protocol.GameMode;
import com.hypixel.hytale.server.core.Message;
import com.hypixel.hytale.server.core.command.system.CommandContext;
import com.hypixel.hytale.server.core.command.system.arguments.system.RequiredArg;
import com.hypixel.hytale.server.core.command.system.arguments.types.ArgTypes;
import com.hypixel.hytale.server.core.command.system.basecommands.AbstractPlayerCommand;
import com.hypixel.hytale.server.core.command.system.basecommands.CommandBase;
import com.hypixel.hytale.server.core.entity.entities.Player;
import com.hypixel.hytale.server.core.permissions.HytalePermissions;
import com.hypixel.hytale.server.core.universe.PlayerRef;
import com.hypixel.hytale.server.core.universe.world.World;
import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
import javax.annotation.Nonnull;
public class GameModeCommand extends AbstractPlayerCommand {
@Nonnull
private static final Message MESSAGE_COMMANDS_GAMEMODE_ALREADY_IN_MODE_SELF = Message.translation("server.commands.gamemode.alreadyInMode.self");
@Nonnull
private final RequiredArg<GameMode> gameModeArg;
public GameModeCommand() {
(, );
.gameModeArg = .withRequiredArg(, , ArgTypes.GAME_MODE);
.addAliases( []{});
.requirePermission(HytalePermissions.fromCommand());
.addUsageVariant( ());
}
{
(Player)store.getComponent(ref, Player.getComponentType());
playerComponent != ;
(GameMode).gameModeArg.get(context);
(playerComponent.getGameMode() == gameMode) {
context.sendMessage(MESSAGE_COMMANDS_GAMEMODE_ALREADY_IN_MODE_SELF);
} {
Player.setGameMode(ref, gameMode, store);
Message.translation( + gameMode.name().toLowerCase());
context.sendMessage(Message.translation().param(, gameModeMessage));
}
}
{
Message.translation();
RequiredArg<GameMode> gameModeArg;
RequiredArg<PlayerRef> playerArg;
GameModeOtherCommand() {
();
.gameModeArg = .withRequiredArg(, , ArgTypes.GAME_MODE);
.playerArg = .withRequiredArg(, , ArgTypes.PLAYER_REF);
.requirePermission(HytalePermissions.fromCommand());
}
{
(PlayerRef).playerArg.get(context);
Ref<EntityStore> ref = targetPlayerRef.getReference();
(ref != && ref.isValid()) {
Store<EntityStore> store = ref.getStore();
((EntityStore)store.getExternalData()).getWorld();
world.execute(() -> {
(Player)store.getComponent(ref, Player.getComponentType());
(playerComponent == ) {
context.sendMessage(MESSAGE_COMMANDS_ERRORS_PLAYER_NOT_IN_WORLD);
} {
(PlayerRef)store.getComponent(ref, PlayerRef.getComponentType());
playerRefComponent != ;
(GameMode).gameModeArg.get(context);
(playerComponent.getGameMode() == gameMode) {
context.sendMessage(Message.translation().param(, playerRefComponent.getUsername()));
} {
Player.setGameMode(ref, gameMode, store);
Message.translation( + gameMode.name().toLowerCase());
context.sendMessage(Message.translation().param(, gameModeMessage).param(, playerRefComponent.getUsername()));
}
}
});
} {
context.sendMessage(MESSAGE_COMMANDS_ERRORS_PLAYER_NOT_IN_WORLD);
}
}
}
}
com/hypixel/hytale/server/core/command/commands/player/HideCommand.java
package com.hypixel.hytale.server.core.command.commands.player;
import com.hypixel.hytale.component.Ref;
import com.hypixel.hytale.component.Store;
import com.hypixel.hytale.server.core.Message;
import com.hypixel.hytale.server.core.command.system.CommandContext;
import com.hypixel.hytale.server.core.command.system.arguments.system.OptionalArg;
import com.hypixel.hytale.server.core.command.system.arguments.system.RequiredArg;
import com.hypixel.hytale.server.core.command.system.arguments.types.ArgTypes;
import com.hypixel.hytale.server.core.command.system.basecommands.AbstractAsyncCommand;
import com.hypixel.hytale.server.core.command.system.basecommands.AbstractCommandCollection;
import com.hypixel.hytale.server.core.command.system.basecommands.CommandBase;
import com.hypixel.hytale.server.core.entity.UUIDComponent;
import com.hypixel.hytale.server.core.entity.entities.Player;
import com.hypixel.hytale.server.core.universe.PlayerRef;
import com.hypixel.hytale.server.core.universe.Universe;
import com.hypixel.hytale.server.core.universe.world.World;
import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
import java.util.Collection;
import java.util.UUID;
import java.util.concurrent.CompletableFuture;
import javax.annotation.Nonnull;
public class HideCommand extends AbstractCommandCollection {
public HideCommand() {
super("hide", "server.commands.hide.desc");
this.addUsageVariant( ());
.addSubCommand( ());
.addSubCommand( ());
.addSubCommand( ());
}
{
RequiredArg<PlayerRef> playerArg;
OptionalArg<PlayerRef> targetArg;
HidePlayerCommand() {
();
.playerArg = .withRequiredArg(, , ArgTypes.PLAYER_REF);
.targetArg = .withOptionalArg(, , ArgTypes.PLAYER_REF);
}
CompletableFuture<Void> {
(PlayerRef).playerArg.get(context);
Ref<EntityStore> ref = playerRef.getReference();
(ref != && ref.isValid()) {
Store<EntityStore> store = ref.getStore();
((EntityStore)store.getExternalData()).getWorld();
.runAsync(context, () -> {
(Player)store.getComponent(ref, Player.getComponentType());
(playerComponent == ) {
context.sendMessage(Message.translation());
} {
(UUIDComponent)store.getComponent(ref, UUIDComponent.getComponentType());
(uuidComponent == ) {
context.sendMessage(Message.translation());
} {
uuidComponent.getUuid();
(.targetArg.provided(context)) {
(PlayerRef).targetArg.get(context);
Ref<EntityStore> targetRef = targetPlayerRef.getReference();
(targetRef == || !targetRef.isValid()) {
context.sendMessage(Message.translation());
;
}
(targetRef.equals(ref)) {
context.sendMessage(Message.translation());
;
}
Store<EntityStore> targetStore = targetRef.getStore();
(Player)targetStore.getComponent(targetRef, Player.getComponentType());
(targetPlayerComponent == ) {
context.sendMessage(Message.translation());
;
}
targetPlayerRef.getHiddenPlayersManager().hidePlayer(playerUuid);
context.sendMessage(Message.translation().param(, playerRef.getUsername()).param(, targetPlayerRef.getUsername()));
} {
Universe.get().getWorlds().forEach((name, w) -> w.execute(() -> {
(PlayerRef targetPlayerRef : w.getPlayerRefs()) {
Ref<EntityStore> targetRef = targetPlayerRef.getReference();
(targetRef != && targetRef.isValid() && !targetRef.equals(ref)) {
Store<EntityStore> targetStore = targetRef.getStore();
(Player)targetStore.getComponent(targetRef, Player.getComponentType());
(targetPlayerComponent != ) {
targetPlayerRef.getHiddenPlayersManager().hidePlayer(playerUuid);
}
}
}
}));
context.sendMessage(Message.translation().param(, playerRef.getUsername()));
}
}
}
}, world);
} {
context.sendMessage(Message.translation());
CompletableFuture.completedFuture((Object));
}
}
}
{
RequiredArg<PlayerRef> playerArg;
OptionalArg<PlayerRef> targetArg;
ShowPlayerCommand() {
(, );
.playerArg = .withRequiredArg(, , ArgTypes.PLAYER_REF);
.targetArg = .withOptionalArg(, , ArgTypes.PLAYER_REF);
}
CompletableFuture<Void> {
(PlayerRef).playerArg.get(context);
Ref<EntityStore> ref = playerRef.getReference();
(ref != && ref.isValid()) {
Store<EntityStore> store = ref.getStore();
((EntityStore)store.getExternalData()).getWorld();
.runAsync(context, () -> {
(Player)store.getComponent(ref, Player.getComponentType());
(playerComponent == ) {
context.sendMessage(Message.translation());
} {
(UUIDComponent)store.getComponent(ref, UUIDComponent.getComponentType());
(uuidComponent == ) {
context.sendMessage(Message.translation());
} {
uuidComponent.getUuid();
(.targetArg.provided(context)) {
(PlayerRef).targetArg.get(context);
Ref<EntityStore> targetRef = targetPlayerRef.getReference();
(targetRef == || !targetRef.isValid()) {
context.sendMessage(Message.translation());
;
}
(targetRef.equals(ref)) {
context.sendMessage(Message.translation());
;
}
Store<EntityStore> targetStore = targetRef.getStore();
(Player)targetStore.getComponent(targetRef, Player.getComponentType());
(targetPlayerComponent == ) {
context.sendMessage(Message.translation());
;
}
targetPlayerRef.getHiddenPlayersManager().showPlayer(playerUuid);
context.sendMessage(Message.translation().param(, playerRef.getUsername()).param(, targetPlayerRef.getUsername()));
} {
Universe.get().getWorlds().forEach((name, w) -> w.execute(() -> {
(PlayerRef targetPlayerRef : w.getPlayerRefs()) {
Ref<EntityStore> targetRef = targetPlayerRef.getReference();
(targetRef != && targetRef.isValid() && !targetRef.equals(ref)) {
Store<EntityStore> targetStore = targetRef.getStore();
(Player)targetStore.getComponent(targetRef, Player.getComponentType());
(targetPlayerComponent != ) {
targetPlayerRef.getHiddenPlayersManager().showPlayer(playerUuid);
}
}
}
}));
context.sendMessage(Message.translation().param(, playerRef.getUsername()));
}
}
}
}, world);
} {
context.sendMessage(Message.translation());
CompletableFuture.completedFuture((Object));
}
}
}
{
HideAllCommand() {
(, );
}
{
Universe.get().getWorlds().forEach((name, world) -> world.execute(() -> {
Collection<PlayerRef> playerRefs = world.getPlayerRefs();
(PlayerRef playerRef1 : playerRefs) {
Ref<EntityStore> ref1 = playerRef1.getReference();
(ref1 != && ref1.isValid()) {
Store<EntityStore> store1 = ref1.getStore();
(Player)store1.getComponent(ref1, Player.getComponentType());
(playerComponent1 != ) {
(PlayerRef playerRef2 : playerRefs) {
(!playerRef1.equals(playerRef2)) {
Ref<EntityStore> ref2 = playerRef2.getReference();
(ref2 != && ref2.isValid()) {
(UUIDComponent)store1.getComponent(ref2, UUIDComponent.getComponentType());
(uuidComponent != ) {
playerRef1.getHiddenPlayersManager().hidePlayer(uuidComponent.getUuid());
}
}
}
}
}
}
}
}));
context.sendMessage(Message.translation());
}
}
{
ShowAllCommand() {
(, );
}
{
Universe.get().getWorlds().forEach((name, world) -> world.execute(() -> {
Collection<PlayerRef> playerRefs = world.getPlayerRefs();
(PlayerRef playerRef1 : playerRefs) {
Ref<EntityStore> ref1 = playerRef1.getReference();
(ref1 != && ref1.isValid()) {
Store<EntityStore> store1 = ref1.getStore();
(Player)store1.getComponent(ref1, Player.getComponentType());
(playerComponent1 != ) {
(PlayerRef playerRef2 : playerRefs) {
(!playerRef1.equals(playerRef2)) {
Ref<EntityStore> ref2 = playerRef2.getReference();
(ref2 != && ref2.isValid()) {
(UUIDComponent)store1.getComponent(ref2, UUIDComponent.getComponentType());
(uuidComponent != ) {
playerRef1.getHiddenPlayersManager().showPlayer(uuidComponent.getUuid());
}
}
}
}
}
}
}
}));
context.sendMessage(Message.translation());
}
}
}
com/hypixel/hytale/server/core/command/commands/player/KillCommand.java
package com.hypixel.hytale.server.core.command.commands.player;
import com.hypixel.hytale.component.Ref;
import com.hypixel.hytale.component.Store;
import com.hypixel.hytale.server.core.Message;
import com.hypixel.hytale.server.core.command.system.CommandContext;
import com.hypixel.hytale.server.core.command.system.arguments.system.RequiredArg;
import com.hypixel.hytale.server.core.command.system.arguments.types.ArgTypes;
import com.hypixel.hytale.server.core.command.system.basecommands.AbstractPlayerCommand;
import com.hypixel.hytale.server.core.command.system.basecommands.CommandBase;
import com.hypixel.hytale.server.core.entity.entities.Player;
import com.hypixel.hytale.server.core.modules.entity.damage.Damage;
import com.hypixel.hytale.server.core.modules.entity.damage.DamageCause;
import com.hypixel.hytale.server.core.modules.entity.damage.DeathComponent;
import com.hypixel.hytale.server.core.permissions.HytalePermissions;
import com.hypixel.hytale.server.core.universe.PlayerRef;
import com.hypixel.hytale.server.core.universe.world.World;
import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
import javax.annotation.Nonnull;
public class KillCommand extends AbstractPlayerCommand {
public KillCommand() {
super("kill", "server.commands.kill.desc");
this.requirePermission(HytalePermissions.fromCommand("kill.self"));
this.addUsageVariant(new ());
}
{
Damage. .CommandSource(context.sender(), .getName());
DeathComponent.tryAddComponent(store, ref, (damageSource, DamageCause.COMMAND, ));
context.sendMessage(Message.translation());
}
{
Message.translation();
RequiredArg<PlayerRef> playerArg;
KillOtherCommand() {
();
.playerArg = .withRequiredArg(, , ArgTypes.PLAYER_REF);
.requirePermission(HytalePermissions.fromCommand());
}
{
(PlayerRef).playerArg.get(context);
Ref<EntityStore> ref = targetPlayerRef.getReference();
(ref != && ref.isValid()) {
Store<EntityStore> store = ref.getStore();
((EntityStore)store.getExternalData()).getWorld();
world.execute(() -> {
(Player)store.getComponent(ref, Player.getComponentType());
(playerComponent == ) {
context.sendMessage(MESSAGE_COMMANDS_ERRORS_PLAYER_NOT_IN_WORLD);
} {
(PlayerRef)store.getComponent(ref, PlayerRef.getComponentType());
playerRefComponent != ;
Damage. .CommandSource(context.sender(), );
DeathComponent.tryAddComponent(store, ref, (damageSource, DamageCause.COMMAND, ));
context.sendMessage(Message.translation().param(, playerRefComponent.getUsername()));
}
});
} {
context.sendMessage(MESSAGE_COMMANDS_ERRORS_PLAYER_NOT_IN_WORLD);
}
}
}
}
com/hypixel/hytale/server/core/command/commands/player/PlayerCommand.java
package com.hypixel.hytale.server.core.command.commands.player;
import com.hypixel.hytale.server.core.command.commands.player.camera.PlayerCameraSubCommand;
import com.hypixel.hytale.server.core.command.commands.player.effect.PlayerEffectSubCommand;
import com.hypixel.hytale.server.core.command.commands.player.stats.PlayerStatsSubCommand;
import com.hypixel.hytale.server.core.command.commands.player.viewradius.PlayerViewRadiusSubCommand;
import com.hypixel.hytale.server.core.command.system.basecommands.AbstractCommandCollection;
public class PlayerCommand extends AbstractCommandCollection {
public PlayerCommand() {
super("player", "server.commands.player.desc");
this.addSubCommand(new PlayerResetCommand());
this.addSubCommand(new PlayerStatsSubCommand());
this.addSubCommand(new PlayerEffectSubCommand());
this.addSubCommand(new PlayerRespawnCommand());
this.addSubCommand(new PlayerCameraSubCommand());
this.addSubCommand(new PlayerViewRadiusSubCommand());
this.addSubCommand(new PlayerZoneCommand());
}
}
com/hypixel/hytale/server/core/command/commands/player/PlayerResetCommand.java
package com.hypixel.hytale.server.core.command.commands.player;
import com.hypixel.hytale.component.Ref;
import com.hypixel.hytale.component.Store;
import com.hypixel.hytale.server.core.Message;
import com.hypixel.hytale.server.core.command.system.CommandContext;
import com.hypixel.hytale.server.core.command.system.basecommands.AbstractTargetPlayerCommand;
import com.hypixel.hytale.server.core.entity.UUIDComponent;
import com.hypixel.hytale.server.core.universe.PlayerRef;
import com.hypixel.hytale.server.core.universe.Universe;
import com.hypixel.hytale.server.core.universe.world.World;
import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
public class PlayerResetCommand extends AbstractTargetPlayerCommand {
public PlayerResetCommand() {
super("reset", "server.commands.player.reset.desc");
}
protected void execute(@Nonnull CommandContext context, @Nullable Ref<EntityStore> sourceRef, @Nonnull Ref<EntityStore> ref, @Nonnull PlayerRef playerRef, @Nonnull World world, @Nonnull Store<EntityStore> store) {
UUIDComponent uuidComponent = (UUIDComponent)store.getComponent(ref, UUIDComponent.getComponentType());
uuidComponent != ;
Universe.get().resetPlayer(playerRef);
context.sendMessage(Message.translation().param(, uuidComponent.getUuid().toString()));
}
}
com/hypixel/hytale/server/core/command/commands/player/PlayerRespawnCommand.java
package com.hypixel.hytale.server.core.command.commands.player;
import com.hypixel.hytale.component.Ref;
import com.hypixel.hytale.component.Store;
import com.hypixel.hytale.server.core.Message;
import com.hypixel.hytale.server.core.command.system.CommandContext;
import com.hypixel.hytale.server.core.command.system.arguments.system.RequiredArg;
import com.hypixel.hytale.server.core.command.system.arguments.types.ArgTypes;
import com.hypixel.hytale.server.core.command.system.basecommands.AbstractPlayerCommand;
import com.hypixel.hytale.server.core.command.system.basecommands.CommandBase;
import com.hypixel.hytale.server.core.entity.entities.Player;
import com.hypixel.hytale.server.core.modules.entity.damage.DeathComponent;
import com.hypixel.hytale.server.core.universe.PlayerRef;
import com.hypixel.hytale.server.core.universe.world.World;
import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
import javax.annotation.Nonnull;
public class PlayerRespawnCommand extends AbstractPlayerCommand {
@Nonnull
private static final Message MESSAGE_COMMANDS_PLAYER_RESPAWN_SUCCESS_SELF = Message.translation("server.commands.player.respawn.success.self");
public PlayerRespawnCommand() {
super("respawn", "server.commands.player.respawn.desc");
this.addUsageVariant( ());
}
{
store.tryRemoveComponent(ref, DeathComponent.getComponentType());
context.sendMessage(MESSAGE_COMMANDS_PLAYER_RESPAWN_SUCCESS_SELF);
}
{
Message.translation();
RequiredArg<PlayerRef> playerArg;
PlayerRespawnOtherCommand() {
();
.playerArg = .withRequiredArg(, , ArgTypes.PLAYER_REF);
}
{
(PlayerRef).playerArg.get(context);
Ref<EntityStore> ref = playerRef.getReference();
(ref != && ref.isValid()) {
Store<EntityStore> store = ref.getStore();
((EntityStore)store.getExternalData()).getWorld();
world.execute(() -> {
(Player)store.getComponent(ref, Player.getComponentType());
(playerComponent == ) {
context.sendMessage(MESSAGE_COMMANDS_ERRORS_PLAYER_NOT_IN_WORLD);
} {
store.tryRemoveComponent(ref, DeathComponent.getComponentType());
context.sendMessage(Message.translation().param(, playerRef.getUsername()));
}
});
} {
context.sendMessage(MESSAGE_COMMANDS_ERRORS_PLAYER_NOT_IN_WORLD);
}
}
}
}
com/hypixel/hytale/server/core/command/commands/player/PlayerZoneCommand.java
package com.hypixel.hytale.server.core.command.commands.player;
import com.hypixel.hytale.component.Ref;
import com.hypixel.hytale.component.Store;
import com.hypixel.hytale.server.core.Message;
import com.hypixel.hytale.server.core.command.system.CommandContext;
import com.hypixel.hytale.server.core.command.system.basecommands.AbstractTargetPlayerCommand;
import com.hypixel.hytale.server.core.entity.entities.Player;
import com.hypixel.hytale.server.core.universe.PlayerRef;
import com.hypixel.hytale.server.core.universe.world.World;
import com.hypixel.hytale.server.core.universe.world.WorldMapTracker;
import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
public class PlayerZoneCommand extends AbstractTargetPlayerCommand {
@Nonnull
private static final Message MESSAGE_NO_DATA = Message.translation("server.commands.player.zone.noData");
public PlayerZoneCommand() {
super("zone", "server.commands.player.zone.desc");
}
protected void execute(@Nonnull CommandContext context, @Nullable Ref<EntityStore> sourceRef, @Nonnull Ref<EntityStore> ref, PlayerRef playerRef, World world, Store<EntityStore> store) {
(Player)store.getComponent(ref, Player.getComponentType());
playerComponent != ;
playerComponent.getWorldMapTracker();
WorldMapTracker. worldMapTracker.getCurrentZone();
worldMapTracker.getCurrentBiomeName();
(currentZone != && currentBiome != ) {
context.sendMessage(Message.translation().param(, Message.translation(String.format(, currentZone.regionName()))));
context.sendMessage(Message.translation().param(, currentBiome));
} {
context.sendMessage(MESSAGE_NO_DATA);
}
}
}
com/hypixel/hytale/server/core/command/commands/player/ReferCommand.java
package com.hypixel.hytale.server.core.command.commands.player;
import com.hypixel.hytale.component.Ref;
import com.hypixel.hytale.component.Store;
import com.hypixel.hytale.server.core.Message;
import com.hypixel.hytale.server.core.command.system.CommandContext;
import com.hypixel.hytale.server.core.command.system.CommandUtil;
import com.hypixel.hytale.server.core.command.system.arguments.system.RequiredArg;
import com.hypixel.hytale.server.core.command.system.arguments.types.ArgTypes;
import com.hypixel.hytale.server.core.command.system.basecommands.AbstractTargetPlayerCommand;
import com.hypixel.hytale.server.core.permissions.HytalePermissions;
import com.hypixel.hytale.server.core.universe.PlayerRef;
import com.hypixel.hytale.server.core.universe.world.World;
import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
public class ReferCommand extends AbstractTargetPlayerCommand {
@Nonnull
private final RequiredArg<String> hostArg;
@Nonnull
private final RequiredArg<Integer> portArg;
public ReferCommand() {
super("refer", "Refer a player to another server for testing");
this.hostArg = this.withRequiredArg("host", "Target server hostname or IP", ArgTypes.STRING);
.portArg = .withRequiredArg(, , ArgTypes.INTEGER);
.addAliases( []{});
}
{
(String).hostArg.get(context);
(Integer).portArg.get(context);
!ref.equals(sourceRef);
(isTargetingOther) {
CommandUtil.requirePermission(context.sender(), HytalePermissions.fromCommand());
} {
CommandUtil.requirePermission(context.sender(), HytalePermissions.fromCommand());
}
(port > && port <= ) {
[] testData = .getBytes();
{
playerRef.referToServer(host, port, testData);
(isTargetingOther) {
context.sendMessage(Message.translation().param(, playerRef.getUsername()).param(, host).param(, port));
} {
context.sendMessage(Message.translation().param(, host).param(, port));
}
} (Exception e) {
context.sendMessage(Message.translation().param(, e.getMessage()));
}
} {
context.sendMessage(Message.translation());
}
}
}
com/hypixel/hytale/server/core/command/commands/player/SudoCommand.java
package com.hypixel.hytale.server.core.command.commands.player;
import com.hypixel.hytale.component.Ref;
import com.hypixel.hytale.component.Store;
import com.hypixel.hytale.server.core.Message;
import com.hypixel.hytale.server.core.NameMatching;
import com.hypixel.hytale.server.core.command.system.CommandContext;
import com.hypixel.hytale.server.core.command.system.CommandManager;
import com.hypixel.hytale.server.core.command.system.CommandSender;
import com.hypixel.hytale.server.core.command.system.CommandUtil;
import com.hypixel.hytale.server.core.command.system.arguments.system.RequiredArg;
import com.hypixel.hytale.server.core.command.system.arguments.types.ArgTypes;
import com.hypixel.hytale.server.core.command.system.basecommands.CommandBase;
import com.hypixel.hytale.server.core.entity.entities.Player;
import com.hypixel.hytale.server.core.universe.PlayerRef;
import com.hypixel.hytale.server.core.universe.Universe;
import com.hypixel.hytale.server.core.universe.world.World;
import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
import it.unimi.dsi.fastutil.objects.ObjectArrayList;
import java.util.List;
import javax.annotation.Nonnull;
public class SudoCommand extends CommandBase {
@Nonnull
private static final Message MESSAGE_COMMANDS_SU_INVALID_USAGE = Message.translation("server.commands.sudo.invalidusage");
@Nonnull
RequiredArg<String> playerArg;
{
(, );
.playerArg = .withRequiredArg(, , ArgTypes.STRING);
.addAliases( []{});
.setAllowsExtraArguments();
}
{
(String).playerArg.get(context);
context.getInputString();
CommandUtil.stripCommandName(inputString);
rawArgs.indexOf();
(commandIndex == -) {
context.sendMessage(MESSAGE_COMMANDS_SU_INVALID_USAGE);
} {
rawArgs.substring(commandIndex + ).trim();
(commandToExecute.isEmpty()) {
context.sendMessage(MESSAGE_COMMANDS_SU_INVALID_USAGE);
} {
(commandToExecute.charAt() == ) {
commandToExecute = commandToExecute.substring();
}
List<PlayerRef> players;
(playerName.equals()) {
players = Universe.get().getPlayers();
} {
Universe.get().getPlayer(playerName, NameMatching.DEFAULT);
(player == ) {
context.sendMessage(Message.translation().param(, playerName));
;
}
players = <PlayerRef>();
players.add(player);
}
(players.isEmpty()) {
context.sendMessage(Message.translation().param(, playerName));
} {
commandToExecute;
(PlayerRef player : players) {
Ref<EntityStore> ref = player.getReference();
(ref != && ref.isValid()) {
Store<EntityStore> store = ref.getStore();
((EntityStore)store.getExternalData()).getWorld();
world.execute(() -> {
(Player)store.getComponent(ref, Player.getComponentType());
playerComponent != ;
CommandManager.get().handleCommand((CommandSender)playerComponent, finalCommand);
});
}
}
}
}
}
}
}
com/hypixel/hytale/server/core/command/commands/player/ToggleBlockPlacementOverrideCommand.java
package com.hypixel.hytale.server.core.command.commands.player;
import com.hypixel.hytale.component.Ref;
import com.hypixel.hytale.component.Store;
import com.hypixel.hytale.server.core.Message;
import com.hypixel.hytale.server.core.command.system.CommandContext;
import com.hypixel.hytale.server.core.command.system.basecommands.AbstractPlayerCommand;
import com.hypixel.hytale.server.core.entity.entities.Player;
import com.hypixel.hytale.server.core.universe.PlayerRef;
import com.hypixel.hytale.server.core.universe.world.World;
import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
import javax.annotation.Nonnull;
public class ToggleBlockPlacementOverrideCommand extends AbstractPlayerCommand {
public ToggleBlockPlacementOverrideCommand() {
super("toggleBlockPlacementOverride", "server.commands.toggleBlockPlacementOverride.desc");
this.addAliases(new String[]{"tbpo", "togglePlacement"});
}
protected void execute(@Nonnull CommandContext context, @Nonnull Store<EntityStore> store, @Nonnull Ref<EntityStore> ref, @Nonnull PlayerRef playerRef, @Nonnull World world) {
Player playerComponent = (Player)store.getComponent(ref, Player.getComponentType());
playerComponent != ;
playerComponent.setOverrideBlockPlacementRestrictions(ref, !playerComponent.isOverrideBlockPlacementRestrictions(), store);
context.sendMessage(Message.translation( + (playerComponent.isOverrideBlockPlacementRestrictions() ? : )));
}
}
com/hypixel/hytale/server/core/command/commands/player/WhereAmICommand.java
package com.hypixel.hytale.server.core.command.commands.player;
import com.hypixel.hytale.component.Ref;
import com.hypixel.hytale.component.Store;
import com.hypixel.hytale.math.Axis;
import com.hypixel.hytale.math.util.ChunkUtil;
import com.hypixel.hytale.math.util.MathUtil;
import com.hypixel.hytale.math.vector.Vector3d;
import com.hypixel.hytale.math.vector.Vector3f;
import com.hypixel.hytale.math.vector.Vector3i;
import com.hypixel.hytale.protocol.GameMode;
import com.hypixel.hytale.server.core.Message;
import com.hypixel.hytale.server.core.command.system.CommandContext;
import com.hypixel.hytale.server.core.command.system.arguments.system.RequiredArg;
import com.hypixel.hytale.server.core.command.system.arguments.types.ArgTypes;
import com.hypixel.hytale.server.core.command.system.basecommands.AbstractPlayerCommand;
import com.hypixel.hytale.server.core.command.system.basecommands.CommandBase;
import com.hypixel.hytale.server.core.entity.entities.Player;
import com.hypixel.hytale.server.core.modules.entity.component.HeadRotation;
import com.hypixel.hytale.server.core.modules.entity.component.TransformComponent;
import com.hypixel.hytale.server.core.permissions.HytalePermissions;
import com.hypixel.hytale.server.core.universe.PlayerRef;
import com.hypixel.hytale.server.core.universe.world.World;
import com.hypixel.hytale.server.core.universe.world.chunk.WorldChunk;
import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
public class WhereAmICommand extends {
Message.translation();
{
(, );
.setPermissionGroup(GameMode.Creative);
.requirePermission(HytalePermissions.fromCommand());
.addUsageVariant( ());
}
{
sendLocationInfo(context, store, ref, world, (String));
}
{
(TransformComponent)store.getComponent(ref, TransformComponent.getComponentType());
transformComponent != ;
(HeadRotation)store.getComponent(ref, HeadRotation.getComponentType());
headRotationComponent != ;
transformComponent.getPosition();
headRotationComponent.getRotation();
headRotationComponent.getAxisDirection();
headRotationComponent.getAxis();
headRotationComponent.getDirection();
MathUtil.floor(position.getX()) >> ;
MathUtil.floor(position.getY()) >> ;
MathUtil.floor(position.getZ()) >> ;
ChunkUtil.indexChunk(chunkX, chunkZ);
world.getChunkIfInMemory(chunkIndex);
targetUsername != ? : ;
Message.translation(headerKey).param(, targetUsername).param(, world.getName()).param(, chunkX).param(, chunkY).param(, chunkZ).param(, position.getX()).param(, position.getY()).param(, position.getZ()).param(, headRotation.getYaw()).param(, headRotation.getPitch()).param(, headRotation.getRoll()).param(, direction.toString()).param(, axisDirection.toString()).param(, axis.toString());
(playerChunk == ) {
message.insert(MESSAGE_COMMANDS_WHERE_AM_I_CHUNK_NOT_LOADED);
} {
message.insert(Message.translation().param(, Boolean.toString(playerChunk.getNeedsSaving())));
}
context.sendMessage(message);
}
{
Message.translation();
RequiredArg<PlayerRef> playerArg;
WhereAmIOtherCommand() {
();
.playerArg = .withRequiredArg(, , ArgTypes.PLAYER_REF);
.setPermissionGroup(GameMode.Creative);
.requirePermission(HytalePermissions.fromCommand());
}
{
(PlayerRef).playerArg.get(context);
Ref<EntityStore> ref = targetPlayerRef.getReference();
(ref != && ref.isValid()) {
Store<EntityStore> store = ref.getStore();
((EntityStore)store.getExternalData()).getWorld();
world.execute(() -> {
(Player)store.getComponent(ref, Player.getComponentType());
(playerComponent == ) {
context.sendMessage(MESSAGE_COMMANDS_ERRORS_PLAYER_NOT_IN_WORLD);
} {
(PlayerRef)store.getComponent(ref, PlayerRef.getComponentType());
playerRefComponent != ;
WhereAmICommand.sendLocationInfo(context, store, ref, world, playerRefComponent.getUsername());
}
});
} {
context.sendMessage(MESSAGE_COMMANDS_ERRORS_PLAYER_NOT_IN_WORLD);
}
}
}
}
com/hypixel/hytale/server/core/command/commands/player/WhoAmICommand.java
package com.hypixel.hytale.server.core.command.commands.player;
import com.hypixel.hytale.component.Ref;
import com.hypixel.hytale.component.Store;
import com.hypixel.hytale.protocol.GameMode;
import com.hypixel.hytale.server.core.Message;
import com.hypixel.hytale.server.core.command.system.CommandContext;
import com.hypixel.hytale.server.core.command.system.arguments.system.RequiredArg;
import com.hypixel.hytale.server.core.command.system.arguments.types.ArgTypes;
import com.hypixel.hytale.server.core.command.system.basecommands.AbstractPlayerCommand;
import com.hypixel.hytale.server.core.command.system.basecommands.CommandBase;
import com.hypixel.hytale.server.core.entity.entities.Player;
import com.hypixel.hytale.server.core.universe.PlayerRef;
import com.hypixel.hytale.server.core.universe.world.World;
import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
import javax.annotation.Nonnull;
public class WhoAmICommand extends AbstractPlayerCommand {
public static final String UUID_ALIAS = "uuid";
public WhoAmICommand() {
super("whoami", "server.commands.whoami.desc");
this.setPermissionGroup(GameMode.Adventure);
this.addAliases(new String[]{});
.addUsageVariant( ());
}
{
sendPlayerInfo(context, playerRef);
}
{
Message.translation().param(, playerRef.getUuid().toString()).param(, playerRef.getUsername()).param(, playerRef.getLanguage());
context.sendMessage(message);
}
{
Message.translation();
RequiredArg<PlayerRef> playerArg;
WhoAmIOtherCommand() {
();
.playerArg = .withRequiredArg(, , ArgTypes.PLAYER_REF);
}
{
(PlayerRef).playerArg.get(context);
Ref<EntityStore> ref = playerRef.getReference();
(ref != && ref.isValid()) {
Store<EntityStore> store = ref.getStore();
((EntityStore)store.getExternalData()).getWorld();
world.execute(() -> {
(Player)store.getComponent(ref, Player.getComponentType());
(playerComponent == ) {
context.sendMessage(MESSAGE_COMMANDS_ERRORS_PLAYER_NOT_IN_WORLD);
} {
WhoAmICommand.sendPlayerInfo(context, playerRef);
}
});
} {
context.sendMessage(MESSAGE_COMMANDS_ERRORS_PLAYER_NOT_IN_WORLD);
}
}
}
}
com/hypixel/hytale/server/core/command/commands/player/camera/CameraDemo.java
package com.hypixel.hytale.server.core.command.commands.player.camera;
import com.hypixel.hytale.component.Ref;
import com.hypixel.hytale.component.Store;
import com.hypixel.hytale.event.EventRegistry;
import com.hypixel.hytale.math.iterator.BlockIterator;
import com.hypixel.hytale.math.util.ChunkUtil;
import com.hypixel.hytale.math.vector.Vector3i;
import com.hypixel.hytale.protocol.ClientCameraView;
import com.hypixel.hytale.protocol.Direction;
import com.hypixel.hytale.protocol.MouseButtonState;
import com.hypixel.hytale.protocol.MouseButtonType;
import com.hypixel.hytale.protocol.MouseInputType;
import com.hypixel.hytale.protocol.MovementForceRotationType;
import com.hypixel.hytale.protocol.PositionDistanceOffsetType;
import com.hypixel.hytale.protocol.RotationType;
import com.hypixel.hytale.protocol.ServerCameraSettings;
import com.hypixel.hytale.protocol.Vector3f;
import com.hypixel.hytale.protocol.packets.camera.SetServerCamera;
import com.hypixel.hytale.server.core.HytaleServer;
import com.hypixel.hytale.server.core.asset.type.blocktype.config.BlockType;
import com.hypixel.hytale.server.core.entity.entities.player.CameraManager;
import com.hypixel.hytale.server.core.event.events.player.PlayerConnectEvent;
import com.hypixel.hytale.server.core.event.events.player.PlayerInteractEvent;
import com.hypixel.hytale.server.core.event.events.player.PlayerMouseButtonEvent;
import com.hypixel.hytale.server.core.universe.PlayerRef;
import com.hypixel.hytale.server.core.universe.Universe;
import com.hypixel.hytale.server.core.universe.world.World;
import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
java.util.concurrent.CopyOnWriteArrayList;
javax.annotation.Nonnull;
{
();
( (), () -> .isActive, , HytaleServer.get().getEventBus());
createServerCameraSettings();
isActive;
{
}
{
(!.isActive) {
.eventRegistry.enable();
.isActive = ;
.eventRegistry.register(PlayerConnectEvent.class, (event) -> .onAddNewPlayer(event.getPlayerRef()));
.eventRegistry.register(PlayerMouseButtonEvent.class, ::onPlayerMouseButton);
.eventRegistry.registerGlobal(PlayerInteractEvent.class, (event) -> event.setCancelled());
Universe.get().getPlayers().forEach(::onAddNewPlayer);
}
}
{
(.isActive) {
.eventRegistry.shutdown();
Universe.get().getPlayers().forEach((p) -> {
(CameraManager)p.getComponent(CameraManager.getComponentType());
(cameraManager != ) {
cameraManager.resetCamera(p);
}
});
.isActive = ;
}
}
{
player.getPacketHandler().writeNoCache( (ClientCameraView.Custom, , .cameraSettings));
}
{
(event.getMouseButton().state == MouseButtonState.Released) {
Ref<EntityStore> ref = event.getPlayerRef();
(ref.isValid()) {
Store<EntityStore> store = ref.getStore();
((EntityStore)store.getExternalData()).getWorld();
event.getTargetBlock();
(CameraManager)store.getComponent(ref, CameraManager.getComponentType());
cameraManagerComponent != ;
cameraManagerComponent.getLastMouseButtonPressedPosition(event.getMouseButton().mouseButtonType);
(event.getMouseButton().mouseButtonType == MouseButtonType.Middle) {
(event.getItemInHand() != && event.getItemInHand().hasBlockType() && targetBlock != ) {
event.getItemInHand().getId();
BlockType.getAssetMap().getIndex(key);
(blockId == -) {
( + key);
}
(!lastTargetBlock.equals(targetBlock)) {
BlockIterator.iterateFromTo((Vector3i)lastTargetBlock, (Vector3i)targetBlock, (xx, y, zx, px, py, pz, qx, qy, qz) -> {
world.getChunk(ChunkUtil.indexChunkFromBlock(xx, zx)).setBlock(xx, y, zx, blockId);
;
});
} {
targetBlock.getX();
targetBlock.getZ();
world.getChunk(ChunkUtil.indexChunkFromBlock(x, z)).setBlock(x, targetBlock.getY(), z, blockId);
}
}
} (event.getMouseButton().mouseButtonType == MouseButtonType.Right) {
(!lastTargetBlock.equals(targetBlock)) {
BlockIterator.iterateFromTo((Vector3i)lastTargetBlock, (Vector3i)targetBlock, (xx, y, zx, px, py, pz, qx, qy, qz) -> {
world.getChunk(ChunkUtil.indexChunkFromBlock(xx, zx)).setBlock(xx, y, zx, );
;
});
} {
targetBlock.getX();
targetBlock.getZ();
world.getChunk(ChunkUtil.indexChunkFromBlock(x, z)).setBlock(x, targetBlock.getY(), z, );
}
} (event.getMouseButton().mouseButtonType == MouseButtonType.Left && event.getItemInHand() != && event.getItemInHand().hasBlockType() && targetBlock != ) {
event.getItemInHand().getId();
BlockType.getAssetMap().getIndex(key);
(blockId == -) {
( + key);
}
(!lastTargetBlock.equals(targetBlock)) {
BlockIterator.iterateFromTo(()lastTargetBlock.getX(), ()(lastTargetBlock.getY() + ), ()lastTargetBlock.getZ(), ()targetBlock.getX(), ()(targetBlock.getY() + ), ()targetBlock.getZ(), (xx, y, zx, px, py, pz, qx, qy, qz) -> {
world.getChunk(ChunkUtil.indexChunkFromBlock(xx, zx)).setBlock(xx, y, zx, blockId);
;
});
} {
targetBlock.getX();
targetBlock.getZ();
world.getChunk(ChunkUtil.indexChunkFromBlock(x, z)).setBlock(x, targetBlock.getY() + , z, blockId);
}
}
}
}
}
ServerCameraSettings {
();
cameraSettings.positionLerpSpeed = ;
cameraSettings.rotationLerpSpeed = ;
cameraSettings.distance = ;
cameraSettings.displayCursor = ;
cameraSettings.sendMouseMotion = ;
cameraSettings.isFirstPerson = ;
cameraSettings.movementForceRotationType = MovementForceRotationType.Custom;
cameraSettings.eyeOffset = ;
cameraSettings.positionDistanceOffsetType = PositionDistanceOffsetType.DistanceOffset;
cameraSettings.rotationType = RotationType.Custom;
cameraSettings.rotation = (, -, );
cameraSettings.mouseInputType = MouseInputType.LookAtPlane;
cameraSettings.planeNormal = (, , );
cameraSettings;
}
}
com/hypixel/hytale/server/core/command/commands/player/camera/PlayerCameraDemoActivateCommand.java
package com.hypixel.hytale.server.core.command.commands.player.camera;
import com.hypixel.hytale.component.Ref;
import com.hypixel.hytale.component.Store;
import com.hypixel.hytale.server.core.Message;
import com.hypixel.hytale.server.core.command.system.CommandContext;
import com.hypixel.hytale.server.core.command.system.basecommands.AbstractTargetPlayerCommand;
import com.hypixel.hytale.server.core.universe.PlayerRef;
import com.hypixel.hytale.server.core.universe.world.World;
import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
public class PlayerCameraDemoActivateCommand extends AbstractTargetPlayerCommand {
@Nonnull
private static final Message MESSAGE_COMMANDS_CAMERA_DEMO_ENABLED = Message.translation("server.commands.camera.demo.enabled");
public PlayerCameraDemoActivateCommand() {
super("activate", "server.commands.camera.demo.activate.desc");
}
protected void execute(@Nonnull CommandContext context, @Nullable Ref<EntityStore> sourceRef, @Nonnull Ref<EntityStore> ref, @Nonnull PlayerRef playerRef, @Nonnull World world, Store<EntityStore> store) {
CameraDemo.INSTANCE.activate();
context.sendMessage(MESSAGE_COMMANDS_CAMERA_DEMO_ENABLED);
}
}
com/hypixel/hytale/server/core/command/commands/player/camera/PlayerCameraDemoDeactivateCommand.java
package com.hypixel.hytale.server.core.command.commands.player.camera;
import com.hypixel.hytale.component.Ref;
import com.hypixel.hytale.component.Store;
import com.hypixel.hytale.server.core.Message;
import com.hypixel.hytale.server.core.command.system.CommandContext;
import com.hypixel.hytale.server.core.command.system.basecommands.AbstractTargetPlayerCommand;
import com.hypixel.hytale.server.core.universe.PlayerRef;
import com.hypixel.hytale.server.core.universe.world.World;
import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
public class PlayerCameraDemoDeactivateCommand extends AbstractTargetPlayerCommand {
@Nonnull
private static final Message MESSAGE_COMMANDS_CAMERA_DEMO_DISABLED = Message.translation("server.commands.camera.demo.disabled");
public PlayerCameraDemoDeactivateCommand() {
super("deactivate", "server.commands.camera.demo.deactivate.desc");
}
protected void execute(@Nonnull CommandContext context, @Nullable Ref<EntityStore> sourceRef, @Nonnull Ref<EntityStore> ref, @Nonnull PlayerRef playerRef, @Nonnull World world, Store<EntityStore> store) {
CameraDemo.INSTANCE.deactivate();
context.sendMessage(MESSAGE_COMMANDS_CAMERA_DEMO_DISABLED);
}
}
com/hypixel/hytale/server/core/command/commands/player/camera/PlayerCameraDemoSubCommand.java
package com.hypixel.hytale.server.core.command.commands.player.camera;
import com.hypixel.hytale.server.core.command.system.basecommands.AbstractCommandCollection;
public class PlayerCameraDemoSubCommand extends AbstractCommandCollection {
public PlayerCameraDemoSubCommand() {
super("demo", "server.commands.camera.demo.desc");
this.addSubCommand(new PlayerCameraDemoActivateCommand());
this.addSubCommand(new PlayerCameraDemoDeactivateCommand());
}
}
com/hypixel/hytale/server/core/command/commands/player/camera/PlayerCameraResetCommand.java
package com.hypixel.hytale.server.core.command.commands.player.camera;
import com.hypixel.hytale.component.Ref;
import com.hypixel.hytale.component.Store;
import com.hypixel.hytale.protocol.ClientCameraView;
import com.hypixel.hytale.protocol.ServerCameraSettings;
import com.hypixel.hytale.protocol.packets.camera.SetServerCamera;
import com.hypixel.hytale.server.core.Message;
import com.hypixel.hytale.server.core.command.system.CommandContext;
import com.hypixel.hytale.server.core.command.system.basecommands.AbstractTargetPlayerCommand;
import com.hypixel.hytale.server.core.universe.PlayerRef;
import com.hypixel.hytale.server.core.universe.world.World;
import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
public class PlayerCameraResetCommand extends AbstractTargetPlayerCommand {
@Nonnull
private static final Message MESSAGE_COMMANDS_CAMERA_RESET_SUCCESS = Message.translation("server.commands.camera.reset.success");
public PlayerCameraResetCommand() {
super("reset", "server.commands.camera.reset.desc");
}
protected void execute(@Nonnull CommandContext context, Ref<EntityStore> sourceRef, Ref<EntityStore> ref, PlayerRef playerRef, World world, Store<EntityStore> store) {
playerRef.getPacketHandler().writeNoCache( (ClientCameraView.Custom, , (ServerCameraSettings)));
context.sendMessage(MESSAGE_COMMANDS_CAMERA_RESET_SUCCESS);
}
}
package com.hypixel.hytale.server.core.command.commands.player.camera;
import com.hypixel.hytale.component.Ref;
import com.hypixel.hytale.component.Store;
import com.hypixel.hytale.protocol.ClientCameraView;
import com.hypixel.hytale.protocol.MouseInputType;
import com.hypixel.hytale.protocol.MovementForceRotationType;
import com.hypixel.hytale.protocol.PositionDistanceOffsetType;
import com.hypixel.hytale.protocol.RotationType;
import com.hypixel.hytale.protocol.ServerCameraSettings;
import com.hypixel.hytale.protocol.Vector3f;
import com.hypixel.hytale.protocol.packets.camera.SetServerCamera;
import com.hypixel.hytale.server.core.Message;
import com.hypixel.hytale.server.core.command.system.CommandContext;
import com.hypixel.hytale.server.core.command.system.basecommands.AbstractTargetPlayerCommand;
import com.hypixel.hytale.server.core.universe.PlayerRef;
import com.hypixel.hytale.server.core.universe.world.World;
import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
public class PlayerCameraSideScrollerCommand extends AbstractTargetPlayerCommand {
@Nonnull
private static final Message MESSAGE_COMMANDS_CAMERA_SIDESCROLLER_SUCCESS = Message.translation("server.commands.camera.sidescroller.success");
public PlayerCameraSideScrollerCommand {
(, );
}
{
();
cameraSettings.positionLerpSpeed = ;
cameraSettings.rotationLerpSpeed = ;
cameraSettings.distance = ;
cameraSettings.displayCursor = ;
cameraSettings.isFirstPerson = ;
cameraSettings.movementForceRotationType = MovementForceRotationType.Custom;
cameraSettings.movementMultiplier = (, , );
cameraSettings.eyeOffset = ;
cameraSettings.positionDistanceOffsetType = PositionDistanceOffsetType.DistanceOffset;
cameraSettings.rotationType = RotationType.Custom;
cameraSettings.mouseInputType = MouseInputType.LookAtPlane;
cameraSettings.planeNormal = (, , );
playerRef.getPacketHandler().writeNoCache( (ClientCameraView.Custom, , cameraSettings));
context.sendMessage(MESSAGE_COMMANDS_CAMERA_SIDESCROLLER_SUCCESS);
}
}
com/hypixel/hytale/server/core/command/commands/player/camera/PlayerCameraSubCommand.java
package com.hypixel.hytale.server.core.command.commands.player.camera;
import com.hypixel.hytale.server.core.command.system.basecommands.AbstractCommandCollection;
public class PlayerCameraSubCommand extends AbstractCommandCollection {
public PlayerCameraSubCommand() {
super("camera", "server.commands.camera.desc");
this.addSubCommand(new PlayerCameraResetCommand());
this.addSubCommand(new PlayerCameraTopdownCommand());
this.addSubCommand(new PlayerCameraSideScrollerCommand());
this.addSubCommand(new PlayerCameraDemoSubCommand());
}
}
com/hypixel/hytale/server/core/command/commands/player/camera/PlayerCameraTopdownCommand.java
package com.hypixel.hytale.server.core.command.commands.player.camera;
import com.hypixel.hytale.component.Ref;
import com.hypixel.hytale.component.Store;
import com.hypixel.hytale.protocol.ClientCameraView;
import com.hypixel.hytale.protocol.Direction;
import com.hypixel.hytale.protocol.MouseInputType;
import com.hypixel.hytale.protocol.MovementForceRotationType;
import com.hypixel.hytale.protocol.PositionDistanceOffsetType;
import com.hypixel.hytale.protocol.RotationType;
import com.hypixel.hytale.protocol.ServerCameraSettings;
import com.hypixel.hytale.protocol.Vector3f;
import com.hypixel.hytale.protocol.packets.camera.SetServerCamera;
import com.hypixel.hytale.server.core.Message;
import com.hypixel.hytale.server.core.command.system.CommandContext;
import com.hypixel.hytale.server.core.command.system.basecommands.AbstractTargetPlayerCommand;
import com.hypixel.hytale.server.core.universe.PlayerRef;
import com.hypixel.hytale.server.core.universe.world.World;
import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
public class PlayerCameraTopdownCommand extends AbstractTargetPlayerCommand {
@Nonnull
private static final Message MESSAGE_COMMANDS_CAMERA_TOPDOWN_SUCCESS = Message.translation("server.commands.camera.topdown.success");
public {
(, );
}
{
();
cameraSettings.positionLerpSpeed = ;
cameraSettings.rotationLerpSpeed = ;
cameraSettings.distance = ;
cameraSettings.displayCursor = ;
cameraSettings.isFirstPerson = ;
cameraSettings.movementForceRotationType = MovementForceRotationType.Custom;
cameraSettings.eyeOffset = ;
cameraSettings.positionDistanceOffsetType = PositionDistanceOffsetType.DistanceOffset;
cameraSettings.rotationType = RotationType.Custom;
cameraSettings.rotation = (, -, );
cameraSettings.mouseInputType = MouseInputType.LookAtPlane;
cameraSettings.planeNormal = (, , );
playerRef.getPacketHandler().writeNoCache( (ClientCameraView.Custom, , cameraSettings));
context.sendMessage(MESSAGE_COMMANDS_CAMERA_TOPDOWN_SUCCESS);
}
}
com/hypixel/hytale/server/core/command/commands/player/effect/PlayerEffectApplyCommand.java
package com.hypixel.hytale.server.core.command.commands.player.effect;
import com.hypixel.hytale.codec.validation.Validators;
import com.hypixel.hytale.component.Ref;
import com.hypixel.hytale.component.Store;
import com.hypixel.hytale.server.core.Message;
import com.hypixel.hytale.server.core.asset.type.entityeffect.config.EntityEffect;
import com.hypixel.hytale.server.core.asset.type.entityeffect.config.OverlapBehavior;
import com.hypixel.hytale.server.core.command.system.CommandContext;
import com.hypixel.hytale.server.core.command.system.arguments.system.DefaultArg;
import com.hypixel.hytale.server.core.command.system.arguments.system.RequiredArg;
import com.hypixel.hytale.server.core.command.system.arguments.types.ArgTypes;
import com.hypixel.hytale.server.core.command.system.basecommands.AbstractPlayerCommand;
import com.hypixel.hytale.server.core.command.system.basecommands.CommandBase;
import com.hypixel.hytale.server.core.entity.effect.EffectControllerComponent;
import com.hypixel.hytale.server.core.entity.entities.Player;
import com.hypixel.hytale.server.core.permissions.HytalePermissions;
import com.hypixel.hytale.server.core.universe.PlayerRef;
import com.hypixel.hytale.server.core.universe.world.World;
import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
import javax.annotation.Nonnull;
public class PlayerEffectApplyCommand extends AbstractPlayerCommand {
private static final float DEFAULT_DURATION = 100.0F;
Message.translation();
RequiredArg<EntityEffect> effectArg;
DefaultArg<Float> durationArg;
{
(, );
.effectArg = .withRequiredArg(, , ArgTypes.EFFECT_ASSET);
.durationArg = (DefaultArg).withDefaultArg(, , ArgTypes.FLOAT, , ).addValidator(Validators.greaterThan());
.requirePermission(HytalePermissions.fromCommand());
.addUsageVariant( ());
}
{
(EffectControllerComponent)store.getComponent(ref, EffectControllerComponent.getComponentType());
effectControllerComponent != ;
(EntityEffect).effectArg.get(context);
(Float).durationArg.get(context);
effectControllerComponent.addEffect(ref, effect, duration, OverlapBehavior.OVERWRITE, store);
context.sendMessage(MESSAGE_EFFECT_APPLIED_SELF.param(, effect.getId()).param(, duration));
}
{
Message.translation();
Message.translation();
RequiredArg<PlayerRef> playerArg;
RequiredArg<EntityEffect> effectArg;
DefaultArg<Float> durationArg;
PlayerEffectApplyOtherCommand() {
();
.playerArg = .withRequiredArg(, , ArgTypes.PLAYER_REF);
.effectArg = .withRequiredArg(, , ArgTypes.EFFECT_ASSET);
.durationArg = (DefaultArg).withDefaultArg(, , ArgTypes.FLOAT, , ).addValidator(Validators.greaterThan());
.requirePermission(HytalePermissions.fromCommand());
}
{
(PlayerRef).playerArg.get(context);
Ref<EntityStore> ref = targetPlayerRef.getReference();
(ref != && ref.isValid()) {
Store<EntityStore> store = ref.getStore();
((EntityStore)store.getExternalData()).getWorld();
world.execute(() -> {
(Player)store.getComponent(ref, Player.getComponentType());
(playerComponent == ) {
context.sendMessage(MESSAGE_COMMANDS_ERRORS_PLAYER_NOT_IN_WORLD);
} {
(PlayerRef)store.getComponent(ref, PlayerRef.getComponentType());
playerRefComponent != ;
(EffectControllerComponent)store.getComponent(ref, EffectControllerComponent.getComponentType());
effectControllerComponent != ;
(EntityEffect).effectArg.get(context);
(Float).durationArg.get(context);
effectControllerComponent.addEffect(ref, effect, duration, OverlapBehavior.OVERWRITE, store);
context.sendMessage(MESSAGE_EFFECT_APPLIED_OTHER.param(, playerRefComponent.getUsername()).param(, effect.getId()).param(, duration));
}
});
} {
context.sendMessage(MESSAGE_COMMANDS_ERRORS_PLAYER_NOT_IN_WORLD);
}
}
}
}
com/hypixel/hytale/server/core/command/commands/player/effect/PlayerEffectClearCommand.java
package com.hypixel.hytale.server.core.command.commands.player.effect;
import com.hypixel.hytale.component.Ref;
import com.hypixel.hytale.component.Store;
import com.hypixel.hytale.server.core.Message;
import com.hypixel.hytale.server.core.command.system.CommandContext;
import com.hypixel.hytale.server.core.command.system.arguments.system.RequiredArg;
import com.hypixel.hytale.server.core.command.system.arguments.types.ArgTypes;
import com.hypixel.hytale.server.core.command.system.basecommands.AbstractPlayerCommand;
import com.hypixel.hytale.server.core.command.system.basecommands.CommandBase;
import com.hypixel.hytale.server.core.entity.effect.EffectControllerComponent;
import com.hypixel.hytale.server.core.entity.entities.Player;
import com.hypixel.hytale.server.core.permissions.HytalePermissions;
import com.hypixel.hytale.server.core.universe.PlayerRef;
import com.hypixel.hytale.server.core.universe.world.World;
import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
import javax.annotation.Nonnull;
public class PlayerEffectClearCommand extends AbstractPlayerCommand {
private static final Message MESSAGE_EFFECTS_CLEARED_SELF = Message.translation("server.commands.player.effect.clear.success.self");
public PlayerEffectClearCommand() {
super("clear", "server.commands.player.effect.clear.desc");
.requirePermission(HytalePermissions.fromCommand());
.addUsageVariant( ());
}
{
(EffectControllerComponent)store.getComponent(ref, EffectControllerComponent.getComponentType());
effectControllerComponent != ;
effectControllerComponent.clearEffects(ref, store);
context.sendMessage(MESSAGE_EFFECTS_CLEARED_SELF);
}
{
Message.translation();
Message.translation();
RequiredArg<PlayerRef> playerArg;
PlayerEffectClearOtherCommand() {
();
.playerArg = .withRequiredArg(, , ArgTypes.PLAYER_REF);
.requirePermission(HytalePermissions.fromCommand());
}
{
(PlayerRef).playerArg.get(context);
Ref<EntityStore> ref = targetPlayerRef.getReference();
(ref != && ref.isValid()) {
Store<EntityStore> store = ref.getStore();
((EntityStore)store.getExternalData()).getWorld();
world.execute(() -> {
(Player)store.getComponent(ref, Player.getComponentType());
(playerComponent == ) {
context.sendMessage(MESSAGE_COMMANDS_ERRORS_PLAYER_NOT_IN_WORLD);
} {
(PlayerRef)store.getComponent(ref, PlayerRef.getComponentType());
playerRefComponent != ;
(EffectControllerComponent)store.getComponent(ref, EffectControllerComponent.getComponentType());
effectControllerComponent != ;
effectControllerComponent.clearEffects(ref, store);
context.sendMessage(MESSAGE_EFFECTS_CLEARED_OTHER.param(, playerRefComponent.getUsername()));
}
});
} {
context.sendMessage(MESSAGE_COMMANDS_ERRORS_PLAYER_NOT_IN_WORLD);
}
}
}
}
com/hypixel/hytale/server/core/command/commands/player/effect/PlayerEffectSubCommand.java
package com.hypixel.hytale.server.core.command.commands.player.effect;
import com.hypixel.hytale.server.core.command.system.basecommands.AbstractCommandCollection;
public class PlayerEffectSubCommand extends AbstractCommandCollection {
public PlayerEffectSubCommand() {
super("effect", "server.commands.player.effect.desc");
this.addSubCommand(new PlayerEffectApplyCommand());
this.addSubCommand(new PlayerEffectClearCommand());
}
}
com/hypixel/hytale/server/core/command/commands/player/inventory/GiveArmorCommand.java
package com.hypixel.hytale.server.core.command.commands.player.inventory;
import com.hypixel.hytale.component.Ref;
import com.hypixel.hytale.component.Store;
import com.hypixel.hytale.server.core.Message;
import com.hypixel.hytale.server.core.NameMatching;
import com.hypixel.hytale.server.core.asset.type.item.config.Item;
import com.hypixel.hytale.server.core.command.system.CommandContext;
import com.hypixel.hytale.server.core.command.system.arguments.system.FlagArg;
import com.hypixel.hytale.server.core.command.system.arguments.system.OptionalArg;
import com.hypixel.hytale.server.core.command.system.arguments.system.RequiredArg;
import com.hypixel.hytale.server.core.command.system.arguments.types.ArgTypes;
import com.hypixel.hytale.server.core.command.system.basecommands.AbstractAsyncCommand;
import com.hypixel.hytale.server.core.entity.entities.Player;
import com.hypixel.hytale.server.core.inventory.ItemStack;
import com.hypixel.hytale.server.core.inventory.container.ItemContainer;
import com.hypixel.hytale.server.core.universe.PlayerRef;
import com.hypixel.hytale.server.core.universe.Universe;
import com.hypixel.hytale.server.core.universe.world.World;
import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
import it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap;
import it.unimi.dsi.fastutil.objects.ObjectArrayList;
import java.awt.Color;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.concurrent.CompletableFuture;
import java.util.stream.Collectors;
import javax.annotation.Nonnull;
{
;
Message.translation();
OptionalArg<String> playerArg;
RequiredArg<String> searchStringArg;
FlagArg setFlag;
{
(, );
.playerArg = .withOptionalArg(, , ArgTypes.STRING);
.searchStringArg = .withRequiredArg(, , ArgTypes.STRING);
.setFlag = .withFlagArg(, );
}
CompletableFuture<Void> {
Collection<Ref<EntityStore>> targets;
(.playerArg.provided(context)) {
(String).playerArg.get(context);
(.equals(playerInput)) {
targets = <Ref<EntityStore>>();
(PlayerRef player : Universe.get().getPlayers()) {
targets.add(player.getReference());
}
} {
Universe.get().getPlayer(playerInput, NameMatching.DEFAULT);
(player == ) {
context.sendMessage(Message.translation().param(, playerInput));
CompletableFuture.completedFuture((Object));
}
targets = Collections.singletonList(player.getReference());
}
} {
(!context.isPlayer()) {
context.sendMessage(Message.translation().param(, ));
CompletableFuture.completedFuture((Object));
}
targets = Collections.singletonList(context.senderAsPlayerRef());
}
(targets.isEmpty()) {
context.sendMessage(Message.translation().param(, ));
CompletableFuture.completedFuture((Object));
} {
(String).searchStringArg.get(context);
List<ItemStack> armor = (List)Item.getAssetMap().getAssetMap().keySet().stream().filter((blockTypeKey) -> blockTypeKey.startsWith() && blockTypeKey.indexOf(searchString, .length()) == .length()).map(ItemStack::).collect(Collectors.toList());
(armor.isEmpty()) {
context.sendMessage(Message.translation().param(, searchString).color(Color.RED));
CompletableFuture.completedFuture((Object));
} {
Map<World, List<Ref<EntityStore>>> playersByWorld = <World, List<Ref<EntityStore>>>();
(Ref<EntityStore> targetRef : targets) {
(targetRef != && targetRef.isValid()) {
Store<EntityStore> store = targetRef.getStore();
((EntityStore)store.getExternalData()).getWorld();
((List)playersByWorld.computeIfAbsent(world, (k) -> ())).add(targetRef);
}
}
ObjectArrayList<CompletableFuture<Void>> futures = <CompletableFuture<Void>>();
.setFlag.provided(context);
(Map.Entry<World, List<Ref<EntityStore>>> entry : playersByWorld.entrySet()) {
(World)entry.getKey();
List<Ref<EntityStore>> worldPlayers = (List)entry.getValue();
CompletableFuture<Void> future = .runAsync(context, () -> {
(Ref<EntityStore> playerRef : worldPlayers) {
(playerRef != && playerRef.isValid()) {
Store<EntityStore> store = playerRef.getStore();
(Player)store.getComponent(playerRef, Player.getComponentType());
(targetPlayerComponent != ) {
targetPlayerComponent.getInventory().getArmor();
(shouldClear) {
armorInventory.clear();
}
armorInventory.addItemStacks(armor);
}
}
}
}, world);
futures.add(future);
}
CompletableFuture.allOf((CompletableFuture[])futures.toArray( [])).thenRun(() -> context.sendMessage(MESSAGE_COMMANDS_GIVEARMOR_SUCCESS));
}
}
}
}
com/hypixel/hytale/server/core/command/commands/player/inventory/GiveCommand.java
package com.hypixel.hytale.server.core.command.commands.player.inventory;
import com.hypixel.hytale.component.Ref;
import com.hypixel.hytale.component.Store;
import com.hypixel.hytale.server.core.Message;
import com.hypixel.hytale.server.core.asset.type.item.config.Item;
import com.hypixel.hytale.server.core.command.system.CommandContext;
import com.hypixel.hytale.server.core.command.system.arguments.system.DefaultArg;
import com.hypixel.hytale.server.core.command.system.arguments.system.OptionalArg;
import com.hypixel.hytale.server.core.command.system.arguments.system.RequiredArg;
import com.hypixel.hytale.server.core.command.system.arguments.types.ArgTypes;
import com.hypixel.hytale.server.core.command.system.basecommands.AbstractPlayerCommand;
import com.hypixel.hytale.server.core.command.system.basecommands.CommandBase;
import com.hypixel.hytale.server.core.entity.entities.Player;
import com.hypixel.hytale.server.core.inventory.ItemStack;
import com.hypixel.hytale.server.core.inventory.transaction.ItemStackTransaction;
import com.hypixel.hytale.server.core.permissions.HytalePermissions;
import com.hypixel.hytale.server.core.universe.PlayerRef;
import com.hypixel.hytale.server.core.universe.world.World;
import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
import javax.annotation.Nonnull;
import org.bson.BsonDocument;
public class GiveCommand extends AbstractPlayerCommand {
@Nonnull
private static final Message MESSAGE_COMMANDS_GIVE_RECEIVED Message.translation();
Message.translation();
Message.translation();
RequiredArg<Item> itemArg;
DefaultArg<Integer> quantityArg;
OptionalArg<Double> durabilityArg;
OptionalArg<String> metadataArg;
{
(, );
.itemArg = .withRequiredArg(, , ArgTypes.ITEM_ASSET);
.quantityArg = .withDefaultArg(, , ArgTypes.INTEGER, , );
.durabilityArg = .withOptionalArg(, , ArgTypes.DOUBLE);
.metadataArg = .withOptionalArg(, , ArgTypes.STRING);
.requirePermission(HytalePermissions.fromCommand());
.addUsageVariant( ());
.addSubCommand( ());
}
{
(Player)store.getComponent(ref, Player.getComponentType());
playerComponent != ;
(Item).itemArg.get(context);
(Integer).quantityArg.get(context);
;
(.durabilityArg.provided(context)) {
durability = (Double).durabilityArg.get(context);
}
;
(.metadataArg.provided(context)) {
(String).metadataArg.get(context);
{
metadata = BsonDocument.parse(metadataStr);
} (Exception e) {
context.sendMessage(MESSAGE_COMMANDS_GIVE_INVALID_METADATA.param(, e.getMessage()));
;
}
}
( (item.getId(), quantity, metadata)).withDurability(durability);
playerComponent.getInventory().getCombinedHotbarFirst().addItemStack(stack);
transaction.getRemainder();
Message.translation(item.getTranslationKey());
(remainder != && !remainder.isEmpty()) {
context.sendMessage(MESSAGE_COMMANDS_GIVE_INSUFFICIENT_INV_SPACE.param(, quantity).param(, itemNameMessage));
} {
context.sendMessage(MESSAGE_COMMANDS_GIVE_RECEIVED.param(, quantity).param(, itemNameMessage));
}
}
{
Message.translation();
Message.translation();
Message.translation();
Message.translation();
RequiredArg<PlayerRef> playerArg;
RequiredArg<Item> itemArg;
DefaultArg<Integer> quantityArg;
OptionalArg<Double> durabilityArg;
OptionalArg<String> metadataArg;
GiveOtherCommand() {
();
.playerArg = .withRequiredArg(, , ArgTypes.PLAYER_REF);
.itemArg = .withRequiredArg(, , ArgTypes.ITEM_ASSET);
.quantityArg = .withDefaultArg(, , ArgTypes.INTEGER, , );
.durabilityArg = .withOptionalArg(, , ArgTypes.DOUBLE);
.metadataArg = .withOptionalArg(, , ArgTypes.STRING);
.requirePermission(HytalePermissions.fromCommand());
}
{
(PlayerRef).playerArg.get(context);
Ref<EntityStore> ref = targetPlayerRef.getReference();
(ref != && ref.isValid()) {
Store<EntityStore> store = ref.getStore();
((EntityStore)store.getExternalData()).getWorld();
world.execute(() -> {
(Player)store.getComponent(ref, Player.getComponentType());
(playerComponent == ) {
context.sendMessage(MESSAGE_COMMANDS_ERRORS_PLAYER_NOT_IN_WORLD);
} {
(PlayerRef)store.getComponent(ref, PlayerRef.getComponentType());
playerRefComponent != ;
(Item).itemArg.get(context);
(Integer).quantityArg.get(context);
;
(.durabilityArg.provided(context)) {
durability = (Double).durabilityArg.get(context);
}
;
(.metadataArg.provided(context)) {
(String).metadataArg.get(context);
{
metadata = BsonDocument.parse(metadataStr);
} (Exception e) {
context.sendMessage(MESSAGE_COMMANDS_GIVE_INVALID_METADATA.param(, e.getMessage()));
;
}
}
( (item.getId(), quantity, metadata)).withDurability(durability);
playerComponent.getInventory().getCombinedHotbarFirst().addItemStack(stack);
transaction.getRemainder();
Message.translation(item.getTranslationKey());
(remainder != && !remainder.isEmpty()) {
context.sendMessage(MESSAGE_COMMANDS_GIVE_INSUFFICIENT_INV_SPACE.param(, quantity).param(, itemNameMessage));
} {
context.sendMessage(MESSAGE_COMMANDS_GIVE_GAVE.param(, targetPlayerRef.getUsername()).param(, quantity).param(, itemNameMessage));
}
}
});
} {
context.sendMessage(MESSAGE_COMMANDS_ERRORS_PLAYER_NOT_IN_WORLD);
}
}
}
}
com/hypixel/hytale/server/core/command/commands/player/inventory/InventoryBackpackCommand.java
package com.hypixel.hytale.server.core.command.commands.player.inventory;
import com.hypixel.hytale.component.Ref;
import com.hypixel.hytale.component.Store;
import com.hypixel.hytale.server.core.Message;
import com.hypixel.hytale.server.core.command.system.CommandContext;
import com.hypixel.hytale.server.core.command.system.arguments.system.OptionalArg;
import com.hypixel.hytale.server.core.command.system.arguments.types.ArgTypes;
import com.hypixel.hytale.server.core.command.system.basecommands.AbstractPlayerCommand;
import com.hypixel.hytale.server.core.entity.ItemUtils;
import com.hypixel.hytale.server.core.entity.entities.Player;
import com.hypixel.hytale.server.core.inventory.Inventory;
import com.hypixel.hytale.server.core.inventory.ItemStack;
import com.hypixel.hytale.server.core.universe.PlayerRef;
import com.hypixel.hytale.server.core.universe.world.World;
import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
import it.unimi.dsi.fastutil.objects.ObjectArrayList;
import javax.annotation.Nonnull;
public class InventoryBackpackCommand extends AbstractPlayerCommand {
@Nonnull
private static final Message MESSAGE_COMMANDS_INVENTORY_BACKPACK_SIZE = Message.translation("server.commands.inventory.backpack.size");
@Nonnull
private static final Message Message.translation();
OptionalArg<Integer> sizeArg;
{
(, );
.sizeArg = .withOptionalArg(, , ArgTypes.INTEGER);
}
{
(Player)store.getComponent(ref, Player.getComponentType());
playerComponent != ;
playerComponent.getInventory();
(!.sizeArg.provided(context)) {
context.sendMessage(MESSAGE_COMMANDS_INVENTORY_BACKPACK_SIZE.param(, inventory.getBackpack().getCapacity()));
} {
((Integer).sizeArg.get(context)).shortValue();
ObjectArrayList<ItemStack> remainder = <ItemStack>();
inventory.resizeBackpack(capacity, remainder);
(ItemStack item : remainder) {
ItemUtils.dropItem(ref, item, store);
}
context.sendMessage(MESSAGE_COMMANDS_INVENTORY_BACKPACK_RESIZED.param(, inventory.getBackpack().getCapacity()).param(, remainder.size()));
}
}
}
com/hypixel/hytale/server/core/command/commands/player/inventory/InventoryClearCommand.java
package com.hypixel.hytale.server.core.command.commands.player.inventory;
import com.hypixel.hytale.component.Ref;
import com.hypixel.hytale.component.Store;
import com.hypixel.hytale.protocol.GameMode;
import com.hypixel.hytale.server.core.Message;
import com.hypixel.hytale.server.core.command.system.CommandContext;
import com.hypixel.hytale.server.core.command.system.basecommands.AbstractPlayerCommand;
import com.hypixel.hytale.server.core.entity.entities.Player;
import com.hypixel.hytale.server.core.universe.PlayerRef;
import com.hypixel.hytale.server.core.universe.world.World;
import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
import javax.annotation.Nonnull;
public class InventoryClearCommand extends AbstractPlayerCommand {
@Nonnull
private static final Message MESSAGE_COMMANDS_CLEARINV_SUCCESS = Message.translation("server.commands.clearinv.success");
public InventoryClearCommand() {
super("clear", "server.commands.inventoryclear.desc");
this.setPermissionGroup(GameMode.Creative);
}
protected void execute(@Nonnull CommandContext context, @Nonnull Store<EntityStore> store, @Nonnull Ref<EntityStore> ref, PlayerRef playerRef, World world) {
(Player)store.getComponent(ref, Player.getComponentType());
playerComponent != ;
playerComponent.getInventory().clear();
context.sendMessage(MESSAGE_COMMANDS_CLEARINV_SUCCESS);
}
}
com/hypixel/hytale/server/core/command/commands/player/inventory/InventoryCommand.java
package com.hypixel.hytale.server.core.command.commands.player.inventory;
import com.hypixel.hytale.server.core.command.system.basecommands.AbstractCommandCollection;
public class InventoryCommand extends AbstractCommandCollection {
public InventoryCommand() {
super("inventory", "server.commands.inventory.desc");
this.addAliases(new String[]{"inv"});
this.addSubCommand(new InventoryClearCommand());
this.addSubCommand(new InventorySeeCommand());
this.addSubCommand(new InventoryItemCommand());
this.addSubCommand(new InventoryBackpackCommand());
}
}
com/hypixel/hytale/server/core/command/commands/player/inventory/InventoryItemCommand.java
package com.hypixel.hytale.server.core.command.commands.player.inventory;
import com.hypixel.hytale.component.Ref;
import com.hypixel.hytale.component.Store;
import com.hypixel.hytale.protocol.packets.interface_.Page;
import com.hypixel.hytale.server.core.Message;
import com.hypixel.hytale.server.core.command.system.CommandContext;
import com.hypixel.hytale.server.core.command.system.basecommands.AbstractPlayerCommand;
import com.hypixel.hytale.server.core.entity.entities.Player;
import com.hypixel.hytale.server.core.entity.entities.player.windows.ContainerWindow;
import com.hypixel.hytale.server.core.inventory.Inventory;
import com.hypixel.hytale.server.core.inventory.ItemStack;
import com.hypixel.hytale.server.core.inventory.container.ItemContainer;
import com.hypixel.hytale.server.core.inventory.container.ItemStackItemContainer;
import com.hypixel.hytale.server.core.universe.PlayerRef;
import com.hypixel.hytale.server.core.universe.world.World;
import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
import javax.annotation.Nonnull;
public class InventoryItemCommand extends AbstractPlayerCommand {
@Nonnull
private static final Message MESSAGE_COMMANDS_INVENTORY_ITEM_NO_ITEM_IN_HAND = Message.translation("server.commands.inventory.item.noItemInHand");
@Nonnull
private static final Message Message.translation();
{
(, );
}
{
(Player)store.getComponent(ref, Player.getComponentType());
playerComponent != ;
playerComponent.getInventory();
inventory.getHotbar();
inventory.getActiveHotbarSlot();
inventory.getActiveHotbarItem();
(ItemStack.isEmpty(activeHotbarItem)) {
context.sendMessage(MESSAGE_COMMANDS_INVENTORY_ITEM_NO_ITEM_IN_HAND);
} {
ItemStackItemContainer.getContainer(hotbar, ()activeHotbarSlot);
(backpackInventory != && backpackInventory.getCapacity() != ) {
playerComponent.getPageManager().setPageWithWindows(ref, store, Page.Bench, , (backpackInventory));
} {
context.sendMessage(MESSAGE_COMMANDS_INVENTORY_ITEM_NO_CONTAINER_ON_ITEM);
}
}
}
}
com/hypixel/hytale/server/core/command/commands/player/inventory/InventorySeeCommand.java
package com.hypixel.hytale.server.core.command.commands.player.inventory;
import com.hypixel.hytale.component.Ref;
import com.hypixel.hytale.component.Store;
import com.hypixel.hytale.protocol.packets.interface_.Page;
import com.hypixel.hytale.server.core.Message;
import com.hypixel.hytale.server.core.command.system.CommandContext;
import com.hypixel.hytale.server.core.command.system.arguments.system.RequiredArg;
import com.hypixel.hytale.server.core.command.system.arguments.types.ArgTypes;
import com.hypixel.hytale.server.core.command.system.basecommands.AbstractPlayerCommand;
import com.hypixel.hytale.server.core.entity.entities.Player;
import com.hypixel.hytale.server.core.entity.entities.player.windows.ContainerWindow;
import com.hypixel.hytale.server.core.inventory.container.CombinedItemContainer;
import com.hypixel.hytale.server.core.inventory.container.DelegateItemContainer;
import com.hypixel.hytale.server.core.inventory.container.ItemContainer;
import com.hypixel.hytale.server.core.inventory.container.filter.FilterType;
import com.hypixel.hytale.server.core.permissions.HytalePermissions;
import com.hypixel.hytale.server.core.universe.PlayerRef;
import com.hypixel.hytale.server.core.universe.world.World;
import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
import javax.annotation.Nonnull;
public class InventorySeeCommand extends AbstractPlayerCommand {
public static final Message MESSAGE_COMMANDS_ERRORS_PLAYER_NOT_IN_WORLD = Message.translation();
RequiredArg<PlayerRef> targetPlayerArg;
{
(, );
.targetPlayerArg = .withRequiredArg(, , ArgTypes.PLAYER_REF);
}
{
(Player)store.getComponent(ref, Player.getComponentType());
playerComponent != ;
(PlayerRef).targetPlayerArg.get(context);
Ref<EntityStore> targetRef = targetPlayerRef.getReference();
(targetRef != && targetRef.isValid()) {
Store<EntityStore> targetStore = targetRef.getStore();
((EntityStore)targetStore.getExternalData()).getWorld();
targetWorld.execute(() -> {
(Player)targetStore.getComponent(targetRef, Player.getComponentType());
(targetPlayerComponent == ) {
context.sendMessage(MESSAGE_COMMANDS_ERRORS_PLAYER_NOT_IN_WORLD);
} {
targetPlayerComponent.getInventory().getCombinedHotbarFirst();
targetInventory;
(!context.sender().hasPermission(HytalePermissions.fromCommand(, ))) {
DelegateItemContainer<CombinedItemContainer> delegateItemContainer = <CombinedItemContainer>(targetInventory);
delegateItemContainer.setGlobalFilter(FilterType.DENY_ALL);
targetItemContainer = delegateItemContainer;
}
playerComponent.getPageManager().setPageWithWindows(ref, store, Page.Bench, , (targetItemContainer));
}
});
} {
context.sendMessage(MESSAGE_COMMANDS_ERRORS_PLAYER_NOT_IN_WORLD);
}
}
}
com/hypixel/hytale/server/core/command/commands/player/inventory/ItemStateCommand.java
package com.hypixel.hytale.server.core.command.commands.player.inventory;
import com.hypixel.hytale.component.Ref;
import com.hypixel.hytale.component.Store;
import com.hypixel.hytale.protocol.GameMode;
import com.hypixel.hytale.server.core.Message;
import com.hypixel.hytale.server.core.command.system.CommandContext;
import com.hypixel.hytale.server.core.command.system.arguments.system.RequiredArg;
import com.hypixel.hytale.server.core.command.system.arguments.types.ArgTypes;
import com.hypixel.hytale.server.core.command.system.basecommands.AbstractPlayerCommand;
import com.hypixel.hytale.server.core.entity.entities.Player;
import com.hypixel.hytale.server.core.inventory.Inventory;
import com.hypixel.hytale.server.core.inventory.ItemStack;
import com.hypixel.hytale.server.core.inventory.container.ItemContainer;
import com.hypixel.hytale.server.core.universe.PlayerRef;
import com.hypixel.hytale.server.core.universe.world.World;
import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
import javax.annotation.Nonnull;
public class ItemStateCommand extends AbstractPlayerCommand {
@Nonnull
private static final Message MESSAGE_COMMANDS_ITEMSTATE_NO_ITEM = Message.translation("server.commands.itemstate.noItem");
@Nonnull
private final RequiredArg<String> stateArg;
public ItemStateCommand {
(, );
.stateArg = .withRequiredArg(, , ArgTypes.STRING);
.setPermissionGroup(GameMode.Creative);
}
{
(Player)store.getComponent(ref, Player.getComponentType());
playerComponent != ;
playerComponent.getInventory();
inventory.getActiveHotbarSlot();
(activeHotbarSlot == -) {
context.sendMessage(MESSAGE_COMMANDS_ITEMSTATE_NO_ITEM);
} {
inventory.getHotbar();
hotbar.getItemStack(()activeHotbarSlot);
(item == ) {
context.sendMessage(MESSAGE_COMMANDS_ITEMSTATE_NO_ITEM);
} {
(String).stateArg.get(context);
hotbar.setItemStackForSlot(()activeHotbarSlot, item.withState(state));
}
}
}
}
com/hypixel/hytale/server/core/command/commands/player/stats/PlayerStatsAddCommand.java
package com.hypixel.hytale.server.core.command.commands.player.stats;
import com.hypixel.hytale.component.Ref;
import com.hypixel.hytale.component.Store;
import com.hypixel.hytale.server.core.command.commands.world.entity.stats.EntityStatsAddCommand;
import com.hypixel.hytale.server.core.command.system.CommandContext;
import com.hypixel.hytale.server.core.command.system.arguments.system.RequiredArg;
import com.hypixel.hytale.server.core.command.system.arguments.types.ArgTypes;
import com.hypixel.hytale.server.core.command.system.basecommands.AbstractTargetPlayerCommand;
import com.hypixel.hytale.server.core.universe.PlayerRef;
import com.hypixel.hytale.server.core.universe.world.World;
import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
import java.util.Collections;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
public class PlayerStatsAddCommand extends AbstractTargetPlayerCommand {
@Nonnull
private final RequiredArg<String> entityStatNameArg;
@Nonnull
private final RequiredArg<Integer> statAmountArg;
public PlayerStatsAddCommand() {
super("add", "server.commands.player.stats.add.desc");
this.entityStatNameArg = this.withRequiredArg("statName", "server.commands.player.stats.add.statName.desc", ArgTypes.STRING);
.statAmountArg = .withRequiredArg(, , ArgTypes.INTEGER);
}
{
(Integer).statAmountArg.get(context);
(String).entityStatNameArg.get(context);
EntityStatsAddCommand.addEntityStat(context, Collections.singletonList(ref), statAmount, entityStat, store);
}
}
com/hypixel/hytale/server/core/command/commands/player/stats/PlayerStatsDumpCommand.java
package com.hypixel.hytale.server.core.command.commands.player.stats;
import com.hypixel.hytale.component.Ref;
import com.hypixel.hytale.component.Store;
import com.hypixel.hytale.server.core.command.commands.world.entity.stats.EntityStatsDumpCommand;
import com.hypixel.hytale.server.core.command.system.CommandContext;
import com.hypixel.hytale.server.core.command.system.basecommands.AbstractTargetPlayerCommand;
import com.hypixel.hytale.server.core.universe.PlayerRef;
import com.hypixel.hytale.server.core.universe.world.World;
import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
import java.util.Collections;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
public class PlayerStatsDumpCommand extends AbstractTargetPlayerCommand {
public PlayerStatsDumpCommand() {
super("dump", "server.commands.player.stats.dump.desc");
}
protected void execute(@Nonnull CommandContext context, @Nullable Ref<EntityStore> sourceRef, @Nonnull Ref<EntityStore> ref, @Nonnull PlayerRef playerRef, @Nonnull World world, @Nonnull Store<EntityStore> store) {
EntityStatsDumpCommand.dumpEntityStatsData(context, Collections.singletonList(playerRef.getReference()), store);
}
}
com/hypixel/hytale/server/core/command/commands/player/stats/PlayerStatsGetCommand.java
package com.hypixel.hytale.server.core.command.commands.player.stats;
import com.hypixel.hytale.component.Ref;
import com.hypixel.hytale.component.Store;
import com.hypixel.hytale.server.core.command.commands.world.entity.stats.EntityStatsGetCommand;
import com.hypixel.hytale.server.core.command.system.CommandContext;
import com.hypixel.hytale.server.core.command.system.arguments.system.RequiredArg;
import com.hypixel.hytale.server.core.command.system.arguments.types.ArgTypes;
import com.hypixel.hytale.server.core.command.system.basecommands.AbstractTargetPlayerCommand;
import com.hypixel.hytale.server.core.universe.PlayerRef;
import com.hypixel.hytale.server.core.universe.world.World;
import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
import java.util.Collections;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
public class PlayerStatsGetCommand extends AbstractTargetPlayerCommand {
@Nonnull
private final RequiredArg<String> entityStatNameArg;
public PlayerStatsGetCommand() {
super("get", "server.commands.player.stats.get.desc");
this.entityStatNameArg = this.withRequiredArg("statName", "server.commands.player.stats.get.statName.desc", ArgTypes.STRING);
}
protected void execute( CommandContext context, Ref<EntityStore> sourceRef, Ref<EntityStore> ref, PlayerRef playerRef, World world, Store<EntityStore> store) {
(String).entityStatNameArg.get(context);
EntityStatsGetCommand.getEntityStat(context, Collections.singletonList(playerRef.getReference()), entityStat, store);
}
}
com/hypixel/hytale/server/core/command/commands/player/stats/PlayerStatsResetCommand.java
package com.hypixel.hytale.server.core.command.commands.player.stats;
import com.hypixel.hytale.component.Ref;
import com.hypixel.hytale.component.Store;
import com.hypixel.hytale.server.core.command.commands.world.entity.stats.EntityStatsResetCommand;
import com.hypixel.hytale.server.core.command.system.CommandContext;
import com.hypixel.hytale.server.core.command.system.arguments.system.RequiredArg;
import com.hypixel.hytale.server.core.command.system.arguments.types.ArgTypes;
import com.hypixel.hytale.server.core.command.system.basecommands.AbstractTargetPlayerCommand;
import com.hypixel.hytale.server.core.universe.PlayerRef;
import com.hypixel.hytale.server.core.universe.world.World;
import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
import java.util.Collections;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
public class PlayerStatsResetCommand extends AbstractTargetPlayerCommand {
@Nonnull
private final RequiredArg<String> entityStatNameArg;
public PlayerStatsResetCommand() {
super("reset", "server.commands.player.stats.reset.desc");
this.entityStatNameArg = this.withRequiredArg("statName", "server.commands.player.stats.reset.statName.desc", ArgTypes.STRING);
}
protected void execute( CommandContext context, Ref<EntityStore> sourceRef, Ref<EntityStore> ref, PlayerRef playerRef, World world, Store<EntityStore> store) {
(String).entityStatNameArg.get(context);
EntityStatsResetCommand.resetEntityStat(context, Collections.singletonList(playerRef.getReference()), entityStat, store);
}
}
com/hypixel/hytale/server/core/command/commands/player/stats/PlayerStatsSetCommand.java
package com.hypixel.hytale.server.core.command.commands.player.stats;
import com.hypixel.hytale.component.Ref;
import com.hypixel.hytale.component.Store;
import com.hypixel.hytale.server.core.command.commands.world.entity.stats.EntityStatsSetCommand;
import com.hypixel.hytale.server.core.command.system.CommandContext;
import com.hypixel.hytale.server.core.command.system.arguments.system.RequiredArg;
import com.hypixel.hytale.server.core.command.system.arguments.types.ArgTypes;
import com.hypixel.hytale.server.core.command.system.basecommands.AbstractTargetPlayerCommand;
import com.hypixel.hytale.server.core.universe.PlayerRef;
import com.hypixel.hytale.server.core.universe.world.World;
import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
import java.util.Collections;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
public class PlayerStatsSetCommand extends AbstractTargetPlayerCommand {
@Nonnull
private final RequiredArg<String> entityStatNameArg;
@Nonnull
private final RequiredArg<Integer> statValueArg;
public PlayerStatsSetCommand() {
super("set", "server.commands.player.stats.set.desc");
this.entityStatNameArg = this.withRequiredArg("statName", "server.commands.player.stats.set.statName.desc", ArgTypes.STRING);
.statValueArg = .withRequiredArg(, , ArgTypes.INTEGER);
}
{
(Integer).statValueArg.get(context);
(String).entityStatNameArg.get(context);
EntityStatsSetCommand.setEntityStat(context, Collections.singletonList(playerRef.getReference()), newStatValue, entityStat, store);
}
}
com/hypixel/hytale/server/core/command/commands/player/stats/PlayerStatsSetToMaxCommand.java
package com.hypixel.hytale.server.core.command.commands.player.stats;
import com.hypixel.hytale.component.Ref;
import com.hypixel.hytale.component.Store;
import com.hypixel.hytale.server.core.command.commands.world.entity.stats.EntityStatsSetToMaxCommand;
import com.hypixel.hytale.server.core.command.system.CommandContext;
import com.hypixel.hytale.server.core.command.system.arguments.system.RequiredArg;
import com.hypixel.hytale.server.core.command.system.arguments.types.ArgTypes;
import com.hypixel.hytale.server.core.command.system.basecommands.AbstractTargetPlayerCommand;
import com.hypixel.hytale.server.core.universe.PlayerRef;
import com.hypixel.hytale.server.core.universe.world.World;
import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
import java.util.Collections;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
public class PlayerStatsSetToMaxCommand extends AbstractTargetPlayerCommand {
@Nonnull
private final RequiredArg<String> entityStatNameArg;
public PlayerStatsSetToMaxCommand() {
super("settomax", "server.commands.player.stats.settomax.desc");
this.entityStatNameArg = this.withRequiredArg("statName", "server.commands.player.stats.settomax.statName.desc", ArgTypes.STRING);
}
protected void execute {
(String).entityStatNameArg.get(context);
EntityStatsSetToMaxCommand.setEntityStatMax(context, Collections.singletonList(ref), entityStat, store);
}
}
com/hypixel/hytale/server/core/command/commands/player/stats/PlayerStatsSubCommand.java
package com.hypixel.hytale.server.core.command.commands.player.stats;
import com.hypixel.hytale.server.core.command.system.basecommands.AbstractCommandCollection;
public class PlayerStatsSubCommand extends AbstractCommandCollection {
public PlayerStatsSubCommand() {
super("stats", "server.commands.player.stats.desc");
this.addAliases(new String[]{"stat"});
this.addSubCommand(new PlayerStatsAddCommand());
this.addSubCommand(new PlayerStatsGetCommand());
this.addSubCommand(new PlayerStatsSetCommand());
this.addSubCommand(new PlayerStatsSetToMaxCommand());
this.addSubCommand(new PlayerStatsDumpCommand());
this.addSubCommand(new PlayerStatsResetCommand());
}
}
com/hypixel/hytale/server/core/command/commands/player/viewradius/PlayerViewRadiusGetCommand.java
package com.hypixel.hytale.server.core.command.commands.player.viewradius;
import com.hypixel.hytale.component.Ref;
import com.hypixel.hytale.component.Store;
import com.hypixel.hytale.server.core.Message;
import com.hypixel.hytale.server.core.command.system.CommandContext;
import com.hypixel.hytale.server.core.command.system.basecommands.AbstractTargetPlayerCommand;
import com.hypixel.hytale.server.core.entity.entities.Player;
import com.hypixel.hytale.server.core.modules.entity.tracker.EntityTrackerSystems;
import com.hypixel.hytale.server.core.universe.PlayerRef;
import com.hypixel.hytale.server.core.universe.world.World;
import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
public class PlayerViewRadiusGetCommand extends AbstractTargetPlayerCommand {
public PlayerViewRadiusGetCommand() {
super("get", "server.commands.player.viewradius.get.desc");
}
protected void execute(@Nonnull CommandContext context, @Nullable Ref<EntityStore> sourceRef, @Nonnull Ref<EntityStore> ref, @Nonnull PlayerRef playerRef, @Nonnull World world, @Nonnull Store<EntityStore> store) {
Player playerComponent = (Player)store.getComponent(ref, Player.getComponentType());
playerComponent != ;
EntityTrackerSystems. (EntityTrackerSystems.EntityViewer)store.getComponent(ref, EntityTrackerSystems.EntityViewer.getComponentType());
entityViewerComponent != ;
playerComponent.getViewRadius();
playerComponent.getClientViewRadius();
entityViewerComponent.viewRadiusBlocks;
context.sendMessage(Message.translation().param(, viewRadiusChunks).param(, clientViewRadiusChunks).param(, viewRadiusBlocks));
}
}
com/hypixel/hytale/server/core/command/commands/player/viewradius/PlayerViewRadiusSetCommand.java
package com.hypixel.hytale.server.core.command.commands.player.viewradius;
import com.hypixel.hytale.component.Ref;
import com.hypixel.hytale.component.Store;
import com.hypixel.hytale.protocol.packets.setup.ViewRadius;
import com.hypixel.hytale.server.core.HytaleServer;
import com.hypixel.hytale.server.core.Message;
import com.hypixel.hytale.server.core.command.system.CommandContext;
import com.hypixel.hytale.server.core.command.system.arguments.system.FlagArg;
import com.hypixel.hytale.server.core.command.system.arguments.system.RequiredArg;
import com.hypixel.hytale.server.core.command.system.arguments.types.ArgTypes;
import com.hypixel.hytale.server.core.command.system.basecommands.AbstractTargetPlayerCommand;
import com.hypixel.hytale.server.core.entity.entities.Player;
import com.hypixel.hytale.server.core.modules.entity.tracker.EntityTrackerSystems;
import com.hypixel.hytale.server.core.universe.PlayerRef;
import com.hypixel.hytale.server.core.universe.world.World;
import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
public class PlayerViewRadiusSetCommand extends AbstractTargetPlayerCommand {
@Nonnull
private final RequiredArg<String> radiusArg;
@Nonnull
private final FlagArg blocksArg;
@Nonnull
private final FlagArg bypassArg;
public PlayerViewRadiusSetCommand {
(, );
.radiusArg = .withRequiredArg(, , ArgTypes.STRING);
.blocksArg = .withFlagArg(, );
.bypassArg = .withFlagArg(, );
}
{
(Player)store.getComponent(ref, Player.getComponentType());
playerComponent != ;
EntityTrackerSystems. (EntityTrackerSystems.EntityViewer)store.getComponent(ref, EntityTrackerSystems.EntityViewer.getComponentType());
entityViewerComponent != ;
(String).radiusArg.get(context);
(Boolean).blocksArg.get(context);
(Boolean).bypassArg.get(context);
viewRadiusChunks;
(.equalsIgnoreCase(radiusInput)) {
viewRadiusChunks = ;
} {
{
Integer.parseInt(radiusInput);
viewRadiusChunks = measureInBlocks ? ()Math.ceil(()(()value / )) : value;
} (NumberFormatException var15) {
context.sendMessage(Message.translation().param(, radiusInput));
;
}
}
HytaleServer.get().getConfig().getMaxViewRadius();
(viewRadiusChunks > maxViewRadius && !bypass) {
context.sendMessage(Message.translation().param(, maxViewRadius));
} {
viewRadiusChunks * ;
playerComponent.setClientViewRadius(viewRadiusChunks);
entityViewerComponent.viewRadiusBlocks = viewRadiusBlocks;
playerRef.getPacketHandler().writeNoCache( (viewRadiusBlocks));
context.sendMessage(Message.translation().param(, viewRadiusChunks).param(, viewRadiusBlocks));
}
}
}
com/hypixel/hytale/server/core/command/commands/player/viewradius/PlayerViewRadiusSubCommand.java
package com.hypixel.hytale.server.core.command.commands.player.viewradius;
import com.hypixel.hytale.server.core.command.system.basecommands.AbstractCommandCollection;
public class PlayerViewRadiusSubCommand extends AbstractCommandCollection {
public PlayerViewRadiusSubCommand() {
super("viewradius", "server.commands.player.viewradius.desc");
this.addSubCommand(new PlayerViewRadiusGetCommand());
this.addSubCommand(new PlayerViewRadiusSetCommand());
}
}
com/hypixel/hytale/server/core/command/commands/server/KickCommand.java
package com.hypixel.hytale.server.core.command.commands.server;
import com.hypixel.hytale.server.core.Message;
import com.hypixel.hytale.server.core.command.system.CommandContext;
import com.hypixel.hytale.server.core.command.system.arguments.system.RequiredArg;
import com.hypixel.hytale.server.core.command.system.arguments.types.ArgTypes;
import com.hypixel.hytale.server.core.command.system.basecommands.CommandBase;
import com.hypixel.hytale.server.core.universe.PlayerRef;
import javax.annotation.Nonnull;
public class KickCommand extends CommandBase {
@Nonnull
private static final Message MESSAGE_COMMANDS_KICK_SUCCESS = Message.translation("server.commands.kick.success");
@Nonnull
private final RequiredArg<PlayerRef> playerArg;
public KickCommand() {
super("kick", "server.commands.kick.desc");
this.playerArg = this.withRequiredArg("player", "server.commands.kick.desc", ArgTypes.PLAYER_REF);
}
protected void executeSync(@Nonnull CommandContext context) {
PlayerRef playerToKick (PlayerRef).playerArg.get(context);
playerToKick.getPacketHandler().disconnect();
context.sendMessage(MESSAGE_COMMANDS_KICK_SUCCESS.param(, playerToKick.getUsername()));
}
}
com/hypixel/hytale/server/core/command/commands/server/MaxPlayersCommand.java
package com.hypixel.hytale.server.core.command.commands.server;
import com.hypixel.hytale.server.core.HytaleServer;
import com.hypixel.hytale.server.core.Message;
import com.hypixel.hytale.server.core.command.system.CommandContext;
import com.hypixel.hytale.server.core.command.system.arguments.system.OptionalArg;
import com.hypixel.hytale.server.core.command.system.arguments.types.ArgTypes;
import com.hypixel.hytale.server.core.command.system.basecommands.CommandBase;
import javax.annotation.Nonnull;
public class MaxPlayersCommand extends CommandBase {
@Nonnull
private final OptionalArg<Integer> amountArg;
public MaxPlayersCommand() {
super("maxplayers", "server.commands.maxplayers.desc");
this.amountArg = this.withOptionalArg("amount", "server.commands.maxplayers.amount.desc", ArgTypes.INTEGER);
}
protected void executeSync(@Nonnull CommandContext context) {
if (this.amountArg.provided(context)) {
int maxPlayers = (Integer)this.amountArg.get(context);
HytaleServer.get().getConfig().setMaxPlayers(maxPlayers);
context.sendMessage(Message.translation("server.commands.maxplayers.set").param(, maxPlayers));
} {
HytaleServer.get().getConfig().getMaxPlayers();
context.sendMessage(Message.translation().param(, maxPlayers));
}
}
}
com/hypixel/hytale/server/core/command/commands/server/StopCommand.java
package com.hypixel.hytale.server.core.command.commands.server;
import com.hypixel.hytale.server.core.HytaleServer;
import com.hypixel.hytale.server.core.Message;
import com.hypixel.hytale.server.core.ShutdownReason;
import com.hypixel.hytale.server.core.command.system.CommandContext;
import com.hypixel.hytale.server.core.command.system.arguments.system.FlagArg;
import com.hypixel.hytale.server.core.command.system.basecommands.CommandBase;
import javax.annotation.Nonnull;
public class StopCommand extends CommandBase {
@Nonnull
private static final Message MESSAGE_COMMANDS_STOP_SUCCESS = Message.translation("server.commands.stop.success");
@Nonnull
private final FlagArg crashFlag = this.withFlagArg("crash", "server.commands.stop.crash.desc");
public StopCommand() {
super("stop", "server.commands.stop.desc");
this.addAliases(new String[]{"shutdown"});
}
protected void executeSync {
context.sendMessage(MESSAGE_COMMANDS_STOP_SUCCESS);
(.crashFlag.provided(context)) {
HytaleServer.get().shutdownServer(ShutdownReason.CRASH);
} {
HytaleServer.get().shutdownServer();
}
}
}
com/hypixel/hytale/server/core/command/commands/server/WhoCommand.java
package com.hypixel.hytale.server.core.command.commands.server;
import com.hypixel.hytale.component.Ref;
import com.hypixel.hytale.component.Store;
import com.hypixel.hytale.protocol.GameMode;
import com.hypixel.hytale.server.core.Message;
import com.hypixel.hytale.server.core.command.system.CommandContext;
import com.hypixel.hytale.server.core.command.system.basecommands.AbstractAsyncCommand;
import com.hypixel.hytale.server.core.entity.entities.Player;
import com.hypixel.hytale.server.core.modules.entity.component.DisplayNameComponent;
import com.hypixel.hytale.server.core.universe.PlayerRef;
import com.hypixel.hytale.server.core.universe.Universe;
import com.hypixel.hytale.server.core.universe.world.World;
import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
import com.hypixel.hytale.server.core.util.message.MessageFormat;
import it.unimi.dsi.fastutil.objects.ObjectArrayList;
import java.util.Collection;
import java.util.List;
import java.util.Map;
import java.util.concurrent.CompletableFuture;
import javax.annotation.Nonnull;
public class WhoCommand extends AbstractAsyncCommand {
@Nonnull
private static final Message MESSAGE_COMMANDS_WHO_PLAYER_WITH_DISPLAY_NAME = Message.translation("server.commands.who.playerWithDisplayName");
public WhoCommand {
(, );
.setPermissionGroup(GameMode.Adventure);
}
CompletableFuture<Void> {
Map<String, World> worlds = Universe.get().getWorlds();
ObjectArrayList<CompletableFuture<Void>> futures = <CompletableFuture<Void>>();
(Map.Entry<String, World> entry : worlds.entrySet()) {
(World)entry.getValue();
CompletableFuture<Void> future = .runAsync(context, () -> {
Store<EntityStore> store = world.getEntityStore().getStore();
Collection<PlayerRef> playerRefs = world.getPlayerRefs();
List<Message> playerMessages = <Message>();
(PlayerRef playerRef : playerRefs) {
Ref<EntityStore> ref = playerRef.getReference();
(ref != && ref.isValid()) {
(Player)store.getComponent(ref, Player.getComponentType());
(playerComponent != ) {
(DisplayNameComponent)store.getComponent(ref, DisplayNameComponent.getComponentType());
displayNameComponent != ;
displayNameComponent.getDisplayName();
(displayName != ) {
playerMessages.add(MESSAGE_COMMANDS_WHO_PLAYER_WITH_DISPLAY_NAME.param(, displayName).param(, playerRef.getUsername()));
} {
playerMessages.add(Message.raw(playerRef.getUsername()));
}
}
}
}
context.sendMessage(MessageFormat.list(Message.raw(world.getName()), playerMessages));
}, world);
futures.add(future);
}
CompletableFuture.allOf((CompletableFuture[])futures.toArray( []));
}
}
com/hypixel/hytale/server/core/command/commands/server/auth/AuthCancelCommand.java
package com.hypixel.hytale.server.core.command.commands.server.auth;
import com.hypixel.hytale.server.core.Message;
import com.hypixel.hytale.server.core.auth.ServerAuthManager;
import com.hypixel.hytale.server.core.command.system.CommandContext;
import com.hypixel.hytale.server.core.command.system.basecommands.CommandBase;
import java.awt.Color;
import javax.annotation.Nonnull;
public class AuthCancelCommand extends CommandBase {
@Nonnull
private static final Message MESSAGE_SINGLEPLAYER;
@Nonnull
private static final Message MESSAGE_SUCCESS;
@Nonnull
private static final Message MESSAGE_NOTHING;
public AuthCancelCommand() {
super("cancel", "server.commands.auth.cancel.desc");
}
protected void executeSync(@Nonnull CommandContext context) {
ServerAuthManager authManager = ServerAuthManager.getInstance();
if (authManager.isSingleplayer()) {
context.sendMessage(MESSAGE_SINGLEPLAYER);
} else {
if (authManager.cancelActiveFlow()) {
context.sendMessage(MESSAGE_SUCCESS);
} {
context.sendMessage(MESSAGE_NOTHING);
}
}
}
{
MESSAGE_SINGLEPLAYER = Message.translation().color(Color.RED);
MESSAGE_SUCCESS = Message.translation().color(Color.YELLOW);
MESSAGE_NOTHING = Message.translation().color(Color.YELLOW);
}
}
com/hypixel/hytale/server/core/command/commands/server/auth/AuthCommand.java
package com.hypixel.hytale.server.core.command.commands.server.auth;
import com.hypixel.hytale.server.core.command.system.basecommands.AbstractCommandCollection;
public class AuthCommand extends AbstractCommandCollection {
public AuthCommand() {
super("auth", "server.commands.auth.desc");
this.addSubCommand(new AuthStatusCommand());
this.addSubCommand(new AuthLoginCommand());
this.addSubCommand(new AuthSelectCommand());
this.addSubCommand(new AuthLogoutCommand());
this.addSubCommand(new AuthCancelCommand());
this.addSubCommand(new AuthPersistenceCommand());
}
}
com/hypixel/hytale/server/core/command/commands/server/auth/AuthLoginBrowserCommand.java
package com.hypixel.hytale.server.core.command.commands.server.auth;
import com.hypixel.hytale.server.core.HytaleServer;
import com.hypixel.hytale.server.core.Message;
import com.hypixel.hytale.server.core.auth.AuthCredentialStoreProvider;
import com.hypixel.hytale.server.core.auth.MemoryAuthCredentialStoreProvider;
import com.hypixel.hytale.server.core.auth.ServerAuthManager;
import com.hypixel.hytale.server.core.auth.SessionServiceClient;
import com.hypixel.hytale.server.core.auth.oauth.OAuthBrowserFlow;
import com.hypixel.hytale.server.core.command.system.AbstractCommand;
import com.hypixel.hytale.server.core.command.system.CommandContext;
import com.hypixel.hytale.server.core.command.system.basecommands.CommandBase;
import java.awt.Color;
import java.awt.Desktop;
import java.awt.Desktop.Action;
import java.net.URI;
import java.util.logging.Level;
import javax.annotation.Nonnull;
public class AuthLoginBrowserCommand extends CommandBase {
@Nonnull
private static final Message MESSAGE_SINGLEPLAYER;
@Nonnull
private static final Message MESSAGE_ALREADY_AUTHENTICATED;
@Nonnull
private static final Message MESSAGE_STARTING;
@Nonnull
private static final Message MESSAGE_SUCCESS;
Message MESSAGE_FAILED;
Message MESSAGE_PENDING;
Message MESSAGE_PERSISTENCE_MEMORY;
Message MESSAGE_PERSISTENCE_SAVED;
{
(, );
}
{
ServerAuthManager.getInstance();
(authManager.isSingleplayer()) {
context.sendMessage(MESSAGE_SINGLEPLAYER);
} (authManager.hasSessionToken() && authManager.hasIdentityToken()) {
context.sendMessage(MESSAGE_ALREADY_AUTHENTICATED);
} {
context.sendMessage(MESSAGE_STARTING);
authManager.startFlowAsync((OAuthBrowserFlow)( ())).thenAccept((result) -> {
(result) {
SUCCESS:
context.sendMessage(MESSAGE_SUCCESS);
sendPersistenceFeedback(context);
;
PENDING_PROFILE_SELECTION:
context.sendMessage(MESSAGE_PENDING);
SessionServiceClient.GameProfile[] profiles = authManager.getPendingProfiles();
(profiles != ) {
AuthSelectCommand.sendProfileList(context, profiles);
}
;
FAILED:
context.sendMessage(MESSAGE_FAILED);
}
});
}
}
{
HytaleServer.get().getConfig().getAuthCredentialStoreProvider();
(provider MemoryAuthCredentialStoreProvider) {
String.join(, AuthCredentialStoreProvider.CODEC.getRegisteredIds());
context.sendMessage(MESSAGE_PERSISTENCE_MEMORY.param(, availableTypes));
} {
(String)AuthCredentialStoreProvider.CODEC.getIdFor(provider.getClass());
context.sendMessage(MESSAGE_PERSISTENCE_SAVED.param(, typeName));
}
}
{
MESSAGE_SINGLEPLAYER = Message.translation().color(Color.RED);
MESSAGE_ALREADY_AUTHENTICATED = Message.translation().color(Color.YELLOW);
MESSAGE_STARTING = Message.translation().color(Color.YELLOW);
MESSAGE_SUCCESS = Message.translation().color(Color.GREEN);
MESSAGE_FAILED = Message.translation().color(Color.RED);
MESSAGE_PENDING = Message.translation().color(Color.YELLOW);
MESSAGE_PERSISTENCE_MEMORY = Message.translation().color(Color.ORANGE);
MESSAGE_PERSISTENCE_SAVED = Message.translation().color(Color.GREEN);
}
{
{
}
{
AbstractCommand.LOGGER.at(Level.INFO).log();
AbstractCommand.LOGGER.at(Level.INFO).log();
AbstractCommand.LOGGER.at(Level.INFO).log();
AbstractCommand.LOGGER.at(Level.INFO).log(, authUrl);
AbstractCommand.LOGGER.at(Level.INFO).log();
(Desktop.isDesktopSupported() && Desktop.getDesktop().isSupported(Action.BROWSE)) {
{
Desktop.getDesktop().browse( (authUrl));
AbstractCommand.LOGGER.at(Level.INFO).log();
} (Exception var3) {
AbstractCommand.LOGGER.at(Level.INFO).log();
}
}
}
}
}
com/hypixel/hytale/server/core/command/commands/server/auth/AuthLoginCommand.java
package com.hypixel.hytale.server.core.command.commands.server.auth;
import com.hypixel.hytale.server.core.command.system.basecommands.AbstractCommandCollection;
public class AuthLoginCommand extends AbstractCommandCollection {
public AuthLoginCommand() {
super("login", "server.commands.auth.login.desc");
this.addSubCommand(new AuthLoginBrowserCommand());
this.addSubCommand(new AuthLoginDeviceCommand());
}
}
com/hypixel/hytale/server/core/command/commands/server/auth/AuthLoginDeviceCommand.java
package com.hypixel.hytale.server.core.command.commands.server.auth;
import com.hypixel.hytale.server.core.Message;
import com.hypixel.hytale.server.core.auth.ServerAuthManager;
import com.hypixel.hytale.server.core.auth.SessionServiceClient;
import com.hypixel.hytale.server.core.auth.oauth.OAuthDeviceFlow;
import com.hypixel.hytale.server.core.command.system.AbstractCommand;
import com.hypixel.hytale.server.core.command.system.CommandContext;
import com.hypixel.hytale.server.core.command.system.basecommands.CommandBase;
import java.awt.Color;
import java.util.logging.Level;
import javax.annotation.Nonnull;
public class AuthLoginDeviceCommand extends CommandBase {
@Nonnull
private static final Message MESSAGE_SINGLEPLAYER;
@Nonnull
private static final Message MESSAGE_ALREADY_AUTHENTICATED;
@Nonnull
private static final Message MESSAGE_STARTING;
@Nonnull
private static final Message MESSAGE_SUCCESS;
@Nonnull
private static final Message MESSAGE_FAILED;
@Nonnull
private static final Message MESSAGE_PENDING;
public {
(, );
}
{
ServerAuthManager.getInstance();
(authManager.isSingleplayer()) {
context.sendMessage(MESSAGE_SINGLEPLAYER);
} (authManager.hasSessionToken() && authManager.hasIdentityToken()) {
context.sendMessage(MESSAGE_ALREADY_AUTHENTICATED);
} {
context.sendMessage(MESSAGE_STARTING);
authManager.startFlowAsync((OAuthDeviceFlow)( ())).thenAccept((result) -> {
(result) {
SUCCESS:
context.sendMessage(MESSAGE_SUCCESS);
AuthLoginBrowserCommand.sendPersistenceFeedback(context);
;
PENDING_PROFILE_SELECTION:
context.sendMessage(MESSAGE_PENDING);
SessionServiceClient.GameProfile[] profiles = authManager.getPendingProfiles();
(profiles != ) {
AuthSelectCommand.sendProfileList(context, profiles);
}
;
FAILED:
context.sendMessage(MESSAGE_FAILED);
}
});
}
}
{
MESSAGE_SINGLEPLAYER = Message.translation().color(Color.RED);
MESSAGE_ALREADY_AUTHENTICATED = Message.translation().color(Color.YELLOW);
MESSAGE_STARTING = Message.translation().color(Color.YELLOW);
MESSAGE_SUCCESS = Message.translation().color(Color.GREEN);
MESSAGE_FAILED = Message.translation().color(Color.RED);
MESSAGE_PENDING = Message.translation().color(Color.YELLOW);
}
{
{
}
{
AbstractCommand.LOGGER.at(Level.INFO).log();
AbstractCommand.LOGGER.at(Level.INFO).log();
AbstractCommand.LOGGER.at(Level.INFO).log();
AbstractCommand.LOGGER.at(Level.INFO).log(, verificationUri);
AbstractCommand.LOGGER.at(Level.INFO).log(, userCode);
(verificationUriComplete != ) {
AbstractCommand.LOGGER.at(Level.INFO).log(, verificationUriComplete);
}
AbstractCommand.LOGGER.at(Level.INFO).log();
AbstractCommand.LOGGER.at(Level.INFO).log(, expiresIn);
}
}
}
com/hypixel/hytale/server/core/command/commands/server/auth/AuthLogoutCommand.java
package com.hypixel.hytale.server.core.command.commands.server.auth;
import com.hypixel.hytale.server.core.Message;
import com.hypixel.hytale.server.core.auth.ServerAuthManager;
import com.hypixel.hytale.server.core.command.system.CommandContext;
import com.hypixel.hytale.server.core.command.system.basecommands.CommandBase;
import java.awt.Color;
import javax.annotation.Nonnull;
public class AuthLogoutCommand extends CommandBase {
@Nonnull
private static final Message MESSAGE_SINGLEPLAYER;
@Nonnull
private static final Message MESSAGE_NOT_AUTHENTICATED;
@Nonnull
private static final Message MESSAGE_SUCCESS;
public AuthLogoutCommand() {
super("logout", "server.commands.auth.logout.desc");
}
protected void executeSync(@Nonnull CommandContext context) {
ServerAuthManager authManager = ServerAuthManager.getInstance();
if (authManager.isSingleplayer()) {
context.sendMessage(MESSAGE_SINGLEPLAYER);
} else if (!authManager.hasIdentityToken() && !authManager.hasSessionToken()) {
context.sendMessage(MESSAGE_NOT_AUTHENTICATED);
} {
ServerAuthManager. authManager.getAuthMode();
authManager.logout();
context.sendMessage(MESSAGE_SUCCESS.param(, previousMode.name()));
}
}
{
MESSAGE_SINGLEPLAYER = Message.translation().color(Color.RED);
MESSAGE_NOT_AUTHENTICATED = Message.translation().color(Color.YELLOW);
MESSAGE_SUCCESS = Message.translation().color(Color.GREEN);
}
}
com/hypixel/hytale/server/core/command/commands/server/auth/AuthPersistenceCommand.java
package com.hypixel.hytale.server.core.command.commands.server.auth;
import com.hypixel.hytale.codec.builder.BuilderCodec;
import com.hypixel.hytale.server.core.HytaleServer;
import com.hypixel.hytale.server.core.Message;
import com.hypixel.hytale.server.core.auth.AuthCredentialStoreProvider;
import com.hypixel.hytale.server.core.auth.ServerAuthManager;
import com.hypixel.hytale.server.core.command.system.CommandContext;
import com.hypixel.hytale.server.core.command.system.arguments.system.RequiredArg;
import com.hypixel.hytale.server.core.command.system.arguments.types.ArgTypes;
import com.hypixel.hytale.server.core.command.system.basecommands.CommandBase;
import java.awt.Color;
import javax.annotation.Nonnull;
public class AuthPersistenceCommand extends CommandBase {
@Nonnull
private static final Message MESSAGE_SINGLEPLAYER;
@Nonnull
private static final Message MESSAGE_CURRENT;
@Nonnull
private static final Message MESSAGE_AVAILABLE;
@Nonnull
private static final Message MESSAGE_CHANGED;
@Nonnull
private static final Message MESSAGE_UNKNOWN_TYPE;
public AuthPersistenceCommand {
(, );
.addUsageVariant( ());
}
{
(ServerAuthManager.getInstance().isSingleplayer()) {
context.sendMessage(MESSAGE_SINGLEPLAYER);
} {
HytaleServer.get().getConfig().getAuthCredentialStoreProvider();
(String)AuthCredentialStoreProvider.CODEC.getIdFor(provider.getClass());
context.sendMessage(MESSAGE_CURRENT.param(, typeName));
String.join(, AuthCredentialStoreProvider.CODEC.getRegisteredIds());
context.sendMessage(MESSAGE_AVAILABLE.param(, availableTypes));
}
}
{
MESSAGE_SINGLEPLAYER = Message.translation().color(Color.RED);
MESSAGE_CURRENT = Message.translation().color(Color.YELLOW);
MESSAGE_AVAILABLE = Message.translation().color(Color.GRAY);
MESSAGE_CHANGED = Message.translation().color(Color.GREEN);
MESSAGE_UNKNOWN_TYPE = Message.translation().color(Color.RED);
}
{
RequiredArg<String> typeArg;
SetPersistenceVariant() {
();
.typeArg = .withRequiredArg(, , ArgTypes.STRING);
}
{
ServerAuthManager.getInstance();
(authManager.isSingleplayer()) {
context.sendMessage(AuthPersistenceCommand.MESSAGE_SINGLEPLAYER);
} {
(String).typeArg.get(context);
BuilderCodec<? > codec = (BuilderCodec)AuthCredentialStoreProvider.CODEC.getCodecFor(typeName);
(codec == ) {
context.sendMessage(AuthPersistenceCommand.MESSAGE_UNKNOWN_TYPE.param(, typeName));
} {
codec.getDefaultValue();
HytaleServer.get().getConfig().setAuthCredentialStoreProvider(newProvider);
authManager.swapCredentialStoreProvider(newProvider);
context.sendMessage(AuthPersistenceCommand.MESSAGE_CHANGED.param(, typeName));
}
}
}
}
}
com/hypixel/hytale/server/core/command/commands/server/auth/AuthSelectCommand.java
package com.hypixel.hytale.server.core.command.commands.server.auth;
import com.hypixel.hytale.server.core.Message;
import com.hypixel.hytale.server.core.auth.ServerAuthManager;
import com.hypixel.hytale.server.core.auth.SessionServiceClient;
import com.hypixel.hytale.server.core.command.system.CommandContext;
import com.hypixel.hytale.server.core.command.system.arguments.system.RequiredArg;
import com.hypixel.hytale.server.core.command.system.arguments.types.ArgTypes;
import com.hypixel.hytale.server.core.command.system.basecommands.CommandBase;
import java.awt.Color;
import javax.annotation.Nonnull;
public class AuthSelectCommand extends CommandBase {
@Nonnull
private static final Message MESSAGE_NO_PENDING;
@Nonnull
private static final Message MESSAGE_SUCCESS;
@Nonnull
private static final Message MESSAGE_FAILED;
@Nonnull
private static final Message MESSAGE_AVAILABLE_PROFILES;
@Nonnull
private static final Message MESSAGE_USAGE;
public AuthSelectCommand() {
super("select", "server.commands.auth.select.desc");
.addUsageVariant( ());
}
{
ServerAuthManager.getInstance();
(!authManager.hasPendingProfiles()) {
context.sendMessage(MESSAGE_NO_PENDING);
} {
SessionServiceClient.GameProfile[] profiles = authManager.getPendingProfiles();
(profiles != ) {
context.sendMessage(MESSAGE_AVAILABLE_PROFILES);
sendProfileList(context, profiles);
context.sendMessage(MESSAGE_USAGE);
}
}
}
{
( ; i < profiles.length; ++i) {
context.sendMessage(Message.translation().param(, i + ).param(, profiles[i].username).param(, profiles[i].uuid.toString()));
}
}
{
MESSAGE_NO_PENDING = Message.translation().color(Color.YELLOW);
MESSAGE_SUCCESS = Message.translation().color(Color.GREEN);
MESSAGE_FAILED = Message.translation().color(Color.RED);
MESSAGE_AVAILABLE_PROFILES = Message.translation().color(Color.YELLOW);
MESSAGE_USAGE = Message.translation().color(Color.GRAY);
}
{
RequiredArg<String> profileArg;
SelectProfileVariant() {
();
.profileArg = .withRequiredArg(, , ArgTypes.STRING);
}
{
ServerAuthManager.getInstance();
(!authManager.hasPendingProfiles()) {
context.sendMessage(AuthSelectCommand.MESSAGE_NO_PENDING);
} {
(String).profileArg.get(context);
success;
{
Integer.parseInt(selection);
success = authManager.selectPendingProfile(index);
} (NumberFormatException var6) {
success = authManager.selectPendingProfileByUsername(selection);
}
(success) {
context.sendMessage(AuthSelectCommand.MESSAGE_SUCCESS);
} {
context.sendMessage(AuthSelectCommand.MESSAGE_FAILED);
}
}
}
}
}
com/hypixel/hytale/server/core/command/commands/server/auth/AuthStatusCommand.java
package com.hypixel.hytale.server.core.command.commands.server.auth;
import com.hypixel.hytale.server.core.Message;
import com.hypixel.hytale.server.core.Options;
import com.hypixel.hytale.server.core.auth.ServerAuthManager;
import com.hypixel.hytale.server.core.auth.SessionServiceClient;
import com.hypixel.hytale.server.core.command.system.CommandContext;
import com.hypixel.hytale.server.core.command.system.basecommands.CommandBase;
import java.awt.Color;
import java.time.Instant;
import javax.annotation.Nonnull;
public class AuthStatusCommand extends CommandBase {
@Nonnull
private static final Message MESSAGE_STATUS_HEADER = Message.translation("server.commands.auth.status.format");
@Nonnull
private static final Message MESSAGE_STATUS_CONNECTION_MODE_AUTHENTICATED;
@Nonnull
private static final Message MESSAGE_STATUS_CONNECTION_MODE_OFFLINE;
@Nonnull
private static final Message MESSAGE_STATUS_CONNECTION_MODE_INSECURE;
@Nonnull
private static final Message MESSAGE_STATUS_MODE_NONE;
@Nonnull
private Message MESSAGE_STATUS_MODE_SINGLEPLAYER;
Message MESSAGE_STATUS_MODE_EXTERNAL;
Message MESSAGE_STATUS_MODE_OAUTH_BROWSER;
Message MESSAGE_STATUS_MODE_OAUTH_DEVICE;
Message MESSAGE_STATUS_MODE_OAUTH_STORE;
Message MESSAGE_STATUS_TOKEN_PRESENT;
Message MESSAGE_STATUS_TOKEN_MISSING;
Message MESSAGE_STATUS_HELP;
Message MESSAGE_STATUS_PENDING;
{
(, );
}
{
ServerAuthManager.getInstance();
Message var10000;
((Options.AuthMode)Options.getOptionSet().valueOf(Options.AUTH_MODE)) {
AUTHENTICATED -> var10000 = MESSAGE_STATUS_CONNECTION_MODE_AUTHENTICATED;
OFFLINE -> var10000 = MESSAGE_STATUS_CONNECTION_MODE_OFFLINE;
INSECURE -> var10000 = MESSAGE_STATUS_CONNECTION_MODE_INSECURE;
-> ((String), (Throwable));
}
var10000;
ServerAuthManager. authManager.getAuthMode();
(mode) {
NONE -> var10000 = MESSAGE_STATUS_MODE_NONE;
SINGLEPLAYER -> var10000 = MESSAGE_STATUS_MODE_SINGLEPLAYER;
EXTERNAL_SESSION -> var10000 = MESSAGE_STATUS_MODE_EXTERNAL;
OAUTH_BROWSER -> var10000 = MESSAGE_STATUS_MODE_OAUTH_BROWSER;
OAUTH_DEVICE -> var10000 = MESSAGE_STATUS_MODE_OAUTH_DEVICE;
OAUTH_STORE -> var10000 = MESSAGE_STATUS_MODE_OAUTH_STORE;
-> ((String), (Throwable));
}
var10000;
;
SessionServiceClient. authManager.getSelectedProfile();
(profile != ) {
profile.username != ? profile.username : ;
profileInfo = name + + String.valueOf(profile.uuid) + ;
}
authManager.hasSessionToken() ? MESSAGE_STATUS_TOKEN_PRESENT : MESSAGE_STATUS_TOKEN_MISSING;
authManager.hasIdentityToken() ? MESSAGE_STATUS_TOKEN_PRESENT : MESSAGE_STATUS_TOKEN_MISSING;
;
authManager.getTokenExpiry();
(expiry != ) {
expiry.getEpochSecond() - Instant.now().getEpochSecond();
(secondsRemaining > ) {
secondsRemaining / ;
secondsRemaining % / ;
secondsRemaining % ;
expiryStatus = String.format(, hours, minutes, seconds);
} {
expiryStatus = ;
}
}
String certificateStatus;
(authManager.getServerCertificate() != ) {
authManager.getServerCertificateFingerprint();
certificateStatus = fingerprint != ? fingerprint.substring(, ) + : ;
} {
certificateStatus = ;
}
context.sendMessage(MESSAGE_STATUS_HEADER.param(, connectionModeMessage).param(, modeMessage).param(, profileInfo).param(, sessionTokenStatus).param(, identityTokenStatus).param(, expiryStatus).param(, certificateStatus));
(mode == ServerAuthManager.AuthMode.NONE && !authManager.isSingleplayer()) {
(authManager.hasPendingProfiles()) {
context.sendMessage(MESSAGE_STATUS_PENDING);
SessionServiceClient.GameProfile[] profiles = authManager.getPendingProfiles();
(profiles != ) {
AuthSelectCommand.sendProfileList(context, profiles);
}
} {
context.sendMessage(MESSAGE_STATUS_HELP);
}
}
}
{
MESSAGE_STATUS_CONNECTION_MODE_AUTHENTICATED = Message.translation().color(Color.GREEN);
MESSAGE_STATUS_CONNECTION_MODE_OFFLINE = Message.translation().color(Color.YELLOW);
MESSAGE_STATUS_CONNECTION_MODE_INSECURE = Message.translation().color(Color.ORANGE);
MESSAGE_STATUS_MODE_NONE = Message.translation().color(Color.RED);
MESSAGE_STATUS_MODE_SINGLEPLAYER = Message.translation().color(Color.GREEN);
MESSAGE_STATUS_MODE_EXTERNAL = Message.translation().color(Color.GREEN);
MESSAGE_STATUS_MODE_OAUTH_BROWSER = Message.translation().color(Color.GREEN);
MESSAGE_STATUS_MODE_OAUTH_DEVICE = Message.translation().color(Color.GREEN);
MESSAGE_STATUS_MODE_OAUTH_STORE = Message.translation().color(Color.GREEN);
MESSAGE_STATUS_TOKEN_PRESENT = Message.translation().color(Color.GREEN);
MESSAGE_STATUS_TOKEN_MISSING = Message.translation().color(Color.RED);
MESSAGE_STATUS_HELP = Message.translation().color(Color.YELLOW);
MESSAGE_STATUS_PENDING = Message.translation().color(Color.YELLOW);
}
}
com/hypixel/hytale/server/core/command/commands/utility/BackupCommand.java
package com.hypixel.hytale.server.core.command.commands.utility;
import com.hypixel.hytale.server.core.HytaleServer;
import com.hypixel.hytale.server.core.Message;
import com.hypixel.hytale.server.core.Options;
import com.hypixel.hytale.server.core.command.system.CommandContext;
import com.hypixel.hytale.server.core.command.system.basecommands.AbstractAsyncCommand;
import com.hypixel.hytale.server.core.universe.Universe;
import java.util.concurrent.CompletableFuture;
import javax.annotation.Nonnull;
public class BackupCommand extends AbstractAsyncCommand {
@Nonnull
private static final Message MESSAGE_COMMANDS_ERRORS_WAIT_FOR_BOOT = Message.translation("server.commands.errors.waitForBoot");
@Nonnull
private static final Message MESSAGE_COMMANDS_BACKUP_NOT_CONFIGURED = Message.translation("server.commands.backup.notConfigured");
@Nonnull
private static final Message MESSAGE_COMMANDS_BACKUP_STARTING = Message.translation("server.commands.backup.starting");
@Nonnull
private static final Message.translation();
{
(, );
}
CompletableFuture<Void> {
(!HytaleServer.get().isBooted()) {
context.sendMessage(MESSAGE_COMMANDS_ERRORS_WAIT_FOR_BOOT);
CompletableFuture.completedFuture((Object));
} (!Options.getOptionSet().has(Options.BACKUP_DIRECTORY)) {
context.sendMessage(MESSAGE_COMMANDS_BACKUP_NOT_CONFIGURED);
CompletableFuture.completedFuture((Object));
} {
context.sendMessage(MESSAGE_COMMANDS_BACKUP_STARTING);
Universe.get().runBackup().thenAccept((aVoid) -> context.sendMessage(MESSAGE_COMMANDS_BACKUP_COMPLETE));
}
}
}
com/hypixel/hytale/server/core/command/commands/utility/ConvertPrefabsCommand.java
package com.hypixel.hytale.server.core.command.commands.utility;
import com.hypixel.hytale.math.util.ChunkUtil;
import com.hypixel.hytale.server.core.Message;
import com.hypixel.hytale.server.core.command.system.CommandContext;
import com.hypixel.hytale.server.core.command.system.arguments.system.DefaultArg;
import com.hypixel.hytale.server.core.command.system.arguments.system.FlagArg;
import com.hypixel.hytale.server.core.command.system.arguments.system.OptionalArg;
import com.hypixel.hytale.server.core.command.system.arguments.types.ArgTypes;
import com.hypixel.hytale.server.core.command.system.basecommands.AbstractAsyncCommand;
import com.hypixel.hytale.server.core.prefab.PrefabStore;
import com.hypixel.hytale.server.core.prefab.config.SelectionPrefabSerializer;
import com.hypixel.hytale.server.core.prefab.selection.standard.BlockSelection;
import com.hypixel.hytale.server.core.universe.Universe;
import com.hypixel.hytale.server.core.universe.world.World;
import com.hypixel.hytale.server.core.universe.world.WorldConfig;
import com.hypixel.hytale.server.core.universe.world.storage.provider.EmptyChunkStorageProvider;
import com.hypixel.hytale.server.core.universe.world.storage.resources.EmptyResourceStorageProvider;
import com.hypixel.hytale.server.core.universe.world.worldgen.provider.DummyWorldGenProvider;
import com.hypixel.hytale.server.core.util.BsonUtil;
import com.hypixel.hytale.server.core.util.io.FileUtil;
import com.hypixel.hytale.server.core.util.message.MessageFormat;
import com.hypixel.hytale.sneakythrow.SneakyThrow;
import it.unimi.dsi.fastutil.objects.ObjectArrayList;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.LinkOption;
import java.nio.file.Path;
java.nio.file.Paths;
java.util.Collection;
java.util.List;
java.util.UUID;
java.util.concurrent.CompletableFuture;
java.util.concurrent.TimeUnit;
java.util.stream.Collectors;
java.util.stream.Stream;
javax.annotation.Nonnull;
javax.annotation.Nullable;
org.bson.BsonDocument;
{
;
;
;
;
Message.translation();
Message.translation();
.withFlagArg(, );
.withFlagArg(, );
.withFlagArg(, );
.withFlagArg(, );
.withFlagArg(, );
OptionalArg<String> pathArg;
DefaultArg<String> storeArg;
{
(, );
.pathArg = .withOptionalArg(, , ArgTypes.STRING);
.storeArg = .withDefaultArg(, , ArgTypes.STRING, , );
}
CompletableFuture<Void> {
(Boolean).blocksFlag.get(context);
(Boolean).fillerFlag.get(context);
(Boolean).relativeFlag.get(context);
(Boolean).entitiesFlag.get(context);
(Boolean).destructiveFlag.get(context);
Universe.get().getDefaultWorld();
(defaultWorld == ) {
context.sendMessage(MESSAGE_COMMANDS_CONVERT_PREFABS_DEFAULT_WORLD_NULL);
CompletableFuture.completedFuture((Object));
} {
defaultWorld.getChunk(ChunkUtil.indexChunk(, ));
List<String> failed = <String>();
List<String> skipped = <String>();
(String).storeArg.get(context);
(.pathArg.provided(context)) {
Paths.get((String).pathArg.get(context));
.convertPath(assetPath, blocks, filler, relative, entities, destructive, failed, skipped).thenApply((_v) -> {
.sendCompletionMessages(context, assetPath, failed, skipped);
;
});
} {
CompletableFuture var10000;
(storeOption) {
:
PrefabStore.get().getServerPrefabsPath();
var10000 = .convertPath(assetPath, blocks, filler, relative, entities, destructive, failed, skipped).thenApply((_v) -> {
.sendCompletionMessages(context, assetPath, failed, skipped);
;
});
;
:
PrefabStore.get().getAssetPrefabsPath();
var10000 = .convertPath(assetPath, blocks, filler, relative, entities, destructive, failed, skipped).thenApply((_v) -> {
.sendCompletionMessages(context, assetPath, failed, skipped);
;
});
;
:
PrefabStore.get().getWorldGenPrefabsPath();
var10000 = .convertPath(assetPath, blocks, filler, relative, entities, destructive, failed, skipped).thenApply((_v) -> {
.sendCompletionMessages(context, assetPath, failed, skipped);
;
});
;
:
Path.of();
var10000 = .convertPath(PrefabStore.get().getWorldGenPrefabsPath(), blocks, filler, relative, entities, destructive, failed, skipped).thenCompose((_v) -> .convertPath(PrefabStore.get().getServerPrefabsPath(), blocks, filler, relative, entities, destructive, failed, skipped)).thenCompose((_v) -> .convertPath(PrefabStore.get().getAssetPrefabsPath(), blocks, filler, relative, entities, destructive, failed, skipped)).thenApply((_v) -> {
.sendCompletionMessages(context, assetPath, failed, skipped);
;
});
;
:
context.sendMessage(Message.translation().param(, storeOption));
var10000 = CompletableFuture.completedFuture((Object));
}
var10000;
}
}
}
{
(!skipped.isEmpty()) {
Message.translation();
context.sendMessage(MessageFormat.list(header, (Collection)skipped.stream().map(Message::raw).collect(Collectors.toSet())));
}
(!failed.isEmpty()) {
context.sendMessage(MessageFormat.list(MESSAGE_COMMANDS_CONVERT_PREFABS_FAILED, (Collection)failed.stream().map(Message::raw).collect(Collectors.toSet())));
}
context.sendMessage(Message.translation().param(, assetPath.toString()));
}
CompletableFuture<Void> {
(!Files.exists(assetPath, [])) {
CompletableFuture.completedFuture((Object));
} {
CompletableFuture<World> conversionWorldFuture;
(!entities && !blocks) {
conversionWorldFuture = ;
} {
Universe.get();
();
config.setWorldGenProvider( ());
config.setChunkStorageProvider(EmptyChunkStorageProvider.INSTANCE);
config.setResourceStorageProvider(EmptyResourceStorageProvider.INSTANCE);
{
conversionWorldFuture = universe.makeWorld( + String.valueOf(UUID.randomUUID()), Files.createTempDirectory(), config);
} (IOException e) {
SneakyThrow.sneakyThrow(e);
}
}
{
Stream<Path> stream = Files.walk(assetPath, FileUtil.DEFAULT_WALK_TREE_OPTIONS_ARRAY);
CompletableFuture var19;
label74: {
{
List<Path> prefabPaths = (List)stream.filter((path) -> Files.isRegularFile(path, []) && path.toString().endsWith()).collect(Collectors.toList());
(prefabPaths.isEmpty()) {
(conversionWorldFuture != ) {
conversionWorldFuture.thenAccept((world) -> Universe.get().removeWorld(world.getName()));
}
var19 = CompletableFuture.completedFuture((Object));
label74;
}
var19 = .processPrefabsInBatches(prefabPaths, blocks, filler, relative, entities, destructive, conversionWorldFuture, failed, skipped).thenApply((_v) -> {
(conversionWorldFuture != ) {
conversionWorldFuture.thenAccept((world) -> Universe.get().removeWorld(world.getName()));
}
;
});
} (Throwable var15) {
(stream != ) {
{
stream.close();
} (Throwable var13) {
var15.addSuppressed(var13);
}
}
var15;
}
(stream != ) {
stream.close();
}
var19;
}
(stream != ) {
stream.close();
}
var19;
} (IOException e) {
SneakyThrow.sneakyThrow(e);
}
}
}
CompletableFuture<Void> {
CompletableFuture<Void> result = CompletableFuture.completedFuture((Object));
( ; i < prefabPaths.size(); i += ) {
Math.min(i + , prefabPaths.size());
List<Path> batch = prefabPaths.subList(i, batchEnd);
i / ;
(batchIndex > ) {
result = result.thenCompose((_v) -> CompletableFuture.runAsync(() -> {
}, CompletableFuture.delayedExecutor(, TimeUnit.MILLISECONDS)));
}
CompletableFuture<?>[] batchFutures = (CompletableFuture[])batch.stream().map((path) -> .processPrefab(path, blocks, filler, relative, entities, destructive, conversionWorldFuture, failed, skipped)).toArray((x$) -> [x$]);
result = result.thenCompose((_v) -> CompletableFuture.allOf(batchFutures));
}
result;
}
CompletableFuture<Void> {
BsonUtil.readDocument(path, ).thenApply((document) -> {
SelectionPrefabSerializer.deserialize(document);
(filler) {
prefab.tryFixFiller(destructive);
}
(relative) {
prefab = prefab.relativize();
}
prefab;
}).thenCompose((prefab) -> entities && conversionWorldFuture != ? conversionWorldFuture.thenCompose((world) -> CompletableFuture.runAsync(() -> {
{
prefab.reserializeEntities(world.getEntityStore().getStore(), destructive);
} (IOException e) {
SneakyThrow.sneakyThrow(e);
}
}, world)).thenApply((_v) -> prefab) : CompletableFuture.completedFuture(prefab)).thenCompose((prefab) -> blocks && conversionWorldFuture != ? conversionWorldFuture.thenCompose((world) -> CompletableFuture.runAsync(() -> prefab.reserializeBlockStates(world.getChunkStore(), destructive), world)).thenApply((_v) -> prefab) : CompletableFuture.completedFuture(prefab)).thenCompose((prefab) -> {
SelectionPrefabSerializer.serialize(prefab);
BsonUtil.writeDocument(path, newDocument, );
}).exceptionally((throwable) -> {
throwable.getCause() != ? throwable.getCause().getMessage() : ;
(message != ) {
(message.contains()) {
(message.substring(.length()).contains()) {
skipped.add( + String.valueOf(path) + );
;
}
String.valueOf(path);
failed.add( + var6 + + message);
;
}
(message.contains()) {
String.valueOf(path);
failed.add( + var5 + + message);
;
}
}
String.valueOf(path);
failed.add( + var10001 + + String.valueOf(message != ? message : (throwable.getCause() != ? throwable.getCause().getClass() : throwable.getClass())));
(throwable.getCause() != ) {
( ( + String.valueOf(path), throwable.getCause())).printStackTrace();
}
;
});
}
}
com/hypixel/hytale/server/core/command/commands/utility/EventTitleCommand.java
package com.hypixel.hytale.server.core.command.commands.utility;
import com.hypixel.hytale.server.core.Message;
import com.hypixel.hytale.server.core.command.system.CommandContext;
import com.hypixel.hytale.server.core.command.system.CommandUtil;
import com.hypixel.hytale.server.core.command.system.arguments.system.DefaultArg;
import com.hypixel.hytale.server.core.command.system.arguments.system.FlagArg;
import com.hypixel.hytale.server.core.command.system.arguments.system.OptionalArg;
import com.hypixel.hytale.server.core.command.system.arguments.types.ArgTypes;
import com.hypixel.hytale.server.core.command.system.basecommands.CommandBase;
import com.hypixel.hytale.server.core.universe.PlayerRef;
import com.hypixel.hytale.server.core.universe.Universe;
import com.hypixel.hytale.server.core.universe.world.World;
import com.hypixel.hytale.server.core.util.EventTitleUtil;
import java.util.regex.Pattern;
import javax.annotation.Nonnull;
public class EventTitleCommand extends CommandBase {
@Nonnull
private static final Message MESSAGE_COMMANDS_EVENT_TITLE_TITLE_REQUIRED = Message.translation("server.commands.eventtitle.titleRequired");
@Nonnull
private final FlagArg majorFlag = this.withFlagArg("major", "server.commands.eventtitle.major.desc");
DefaultArg<String> secondaryTitleArg;
OptionalArg<String> primaryTitleArg;
{
(, );
.secondaryTitleArg = .withDefaultArg(, , ArgTypes.STRING, , );
.primaryTitleArg = .withOptionalArg(, , ArgTypes.STRING);
.setAllowsExtraArguments();
}
{
String primaryTitleText;
(.primaryTitleArg.provided(context)) {
primaryTitleText = ((String).primaryTitleArg.get(context)).replace(, );
} {
context.getInputString();
CommandUtil.stripCommandName(inputString);
(rawArgs.trim().isEmpty()) {
context.sendMessage(MESSAGE_COMMANDS_EVENT_TITLE_TITLE_REQUIRED);
;
}
primaryTitleText = .extractTitleFromRawInput(rawArgs, context);
(primaryTitleText.trim().isEmpty()) {
context.sendMessage(MESSAGE_COMMANDS_EVENT_TITLE_TITLE_REQUIRED);
;
}
}
Message.raw(primaryTitleText);
Message.raw((String).secondaryTitleArg.get(context));
(Boolean).majorFlag.get(context);
(World world : Universe.get().getWorlds().values()) {
(PlayerRef playerRef : world.getPlayerRefs()) {
EventTitleUtil.showEventTitleToPlayer(playerRef, primaryTitle, secondaryTitle, isMajor);
}
}
}
String {
rawArgs.trim();
((Boolean).majorFlag.get(context)) {
titleText = titleText.replaceAll(, ).trim();
}
(.secondaryTitleArg.provided(context)) {
(String).secondaryTitleArg.get(context);
titleText = titleText.replaceAll( + Pattern.quote(secondaryValue), );
titleText = titleText.replaceAll( + Pattern.quote(secondaryValue), );
} {
titleText = titleText.replaceAll(, );
titleText = titleText.replaceAll(, );
}
titleText.trim();
}
}
com/hypixel/hytale/server/core/command/commands/utility/NotifyCommand.java
package com.hypixel.hytale.server.core.command.commands.utility;
import com.hypixel.hytale.protocol.ItemWithAllMetadata;
import com.hypixel.hytale.protocol.packets.interface_.NotificationStyle;
import com.hypixel.hytale.server.core.Message;
import com.hypixel.hytale.server.core.command.system.CommandContext;
import com.hypixel.hytale.server.core.command.system.CommandUtil;
import com.hypixel.hytale.server.core.command.system.basecommands.CommandBase;
import com.hypixel.hytale.server.core.util.NotificationUtil;
import javax.annotation.Nonnull;
public class NotifyCommand extends CommandBase {
public NotifyCommand() {
super("notify", "server.commands.notify.desc");
this.setAllowsExtraArguments(true);
}
protected void executeSync(@Nonnull CommandContext context) {
String inputString = context.getInputString();
String rawArgs = CommandUtil.stripCommandName(inputString).trim();
if (rawArgs.isEmpty()) {
context.sendMessage(Message.translation("server.commands.parsing.error.wrongNumberRequiredParameters").param("expected", 1).param("actual", 0));
} {
String[] args = rawArgs.split();
(args.length == ) {
context.sendMessage(Message.translation().param(, ).param(, ));
} {
NotificationStyle.Default;
;
(args.length >= ) {
args[];
(!firstArg.startsWith()) {
{
style = NotificationStyle.valueOf(firstArg.toUpperCase());
messageStartIndex = ;
} (IllegalArgumentException var12) {
}
}
}
();
( messageStartIndex; i < args.length; ++i) {
(i > messageStartIndex) {
messageBuilder.append();
}
messageBuilder.append(args[i]);
}
messageBuilder.toString();
Message message;
(messageString.startsWith()) {
{
message = Message.parse(messageString);
} (IllegalArgumentException e) {
context.sendMessage(Message.raw( + e.getMessage()));
;
}
} {
message = Message.raw(messageString);
}
Message.raw(context.sender().getDisplayName());
NotificationUtil.sendNotificationToUniverse(message, senderName, , (ItemWithAllMetadata), style);
}
}
}
}
com/hypixel/hytale/server/core/command/commands/utility/StashCommand.java
package com.hypixel.hytale.server.core.command.commands.utility;
import com.hypixel.hytale.component.ComponentAccessor;
import com.hypixel.hytale.component.Ref;
import com.hypixel.hytale.component.Store;
import com.hypixel.hytale.math.util.ChunkUtil;
import com.hypixel.hytale.math.vector.Vector3i;
import com.hypixel.hytale.server.core.Message;
import com.hypixel.hytale.server.core.command.system.CommandContext;
import com.hypixel.hytale.server.core.command.system.arguments.system.OptionalArg;
import com.hypixel.hytale.server.core.command.system.arguments.types.ArgTypes;
import com.hypixel.hytale.server.core.command.system.basecommands.AbstractPlayerCommand;
import com.hypixel.hytale.server.core.universe.PlayerRef;
import com.hypixel.hytale.server.core.universe.world.World;
import com.hypixel.hytale.server.core.universe.world.chunk.BlockChunk;
import com.hypixel.hytale.server.core.universe.world.chunk.WorldChunk;
import com.hypixel.hytale.server.core.universe.world.chunk.section.BlockSection;
import com.hypixel.hytale.server.core.universe.world.meta.BlockState;
import com.hypixel.hytale.server.core.universe.world.meta.state.ItemContainerState;
import com.hypixel.hytale.server.core.universe.world.storage.ChunkStore;
import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
import com.hypixel.hytale.server.core.util.FillerBlockUtil;
import com.hypixel.hytale.server.core.util.TargetUtil;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
public class StashCommand extends AbstractPlayerCommand {
@Nonnull
Message.translation();
Message.translation();
Message.translation();
Message.translation();
;
OptionalArg<String> setArg;
{
(, );
.setArg = .withOptionalArg(, , ArgTypes.STRING);
}
{
.getItemContainerState(ref, world, context, store);
(itemContainerState != ) {
(.setArg.provided(context)) {
(String).setArg.get(context);
itemContainerState.setDroplist(dropList);
context.sendMessage(MESSAGE_COMMANDS_STASH_DROP_LIST_SET);
} {
itemContainerState.getDroplist();
(droplist != ) {
context.sendMessage(Message.translation().param(, droplist));
} {
context.sendMessage(MESSAGE_COMMANDS_STASH_NO_DROP_LIST);
}
}
}
}
ItemContainerState {
TargetUtil.getTargetBlock(ref, , componentAccessor);
(block == ) {
context.sendMessage(MESSAGE_GENERAL_BLOCK_TARGET_NOT_IN_RANGE);
;
} {
world.getChunkStore();
ChunkUtil.indexChunkFromBlock(block.x, block.z);
Ref<ChunkStore> chunkRef = chunkStore.getChunkReference(chunkIndex);
(chunkRef != && chunkRef.isValid()) {
Store<ChunkStore> chunkStoreStore = chunkStore.getStore();
(BlockChunk)chunkStoreStore.getComponent(chunkRef, BlockChunk.getComponentType());
blockChunkComponent != ;
(WorldChunk)chunkStoreStore.getComponent(chunkRef, WorldChunk.getComponentType());
worldChunkComponent != ;
blockChunkComponent.getSectionAtBlockY(block.y);
section.getFiller(block.x, block.y, block.z);
(filler != ) {
block.x -= FillerBlockUtil.unpackX(filler);
block.y -= FillerBlockUtil.unpackY(filler);
block.z -= FillerBlockUtil.unpackZ(filler);
}
worldChunkComponent.getState(block.x, block.y, block.z);
(!(state ItemContainerState)) {
context.sendMessage(Message.translation().param(, block.toString()));
;
} {
(ItemContainerState)state;
}
} {
ChunkUtil.chunkCoordinate(block.x);
ChunkUtil.chunkCoordinate(block.z);
context.sendMessage(MESSAGE_COMMANDS_ERRORS_CHUNK_NOT_LOADED.param(, chunkX).param(, chunkZ).param(, world.getName()));
;
}
}
}
}
com/hypixel/hytale/server/core/command/commands/utility/ValidateCPBCommand.java
package com.hypixel.hytale.server.core.command.commands.utility;
import com.hypixel.hytale.assetstore.AssetPack;
import com.hypixel.hytale.common.util.PathUtil;
import com.hypixel.hytale.server.core.Message;
import com.hypixel.hytale.server.core.asset.AssetModule;
import com.hypixel.hytale.server.core.command.system.CommandContext;
import com.hypixel.hytale.server.core.command.system.arguments.system.OptionalArg;
import com.hypixel.hytale.server.core.command.system.arguments.types.ArgTypes;
import com.hypixel.hytale.server.core.command.system.basecommands.AbstractAsyncCommand;
import com.hypixel.hytale.server.core.prefab.selection.buffer.BsonPrefabBufferDeserializer;
import com.hypixel.hytale.server.core.util.BsonUtil;
import com.hypixel.hytale.server.core.util.io.FileUtil;
import com.hypixel.hytale.sneakythrow.SneakyThrow;
import it.unimi.dsi.fastutil.objects.ObjectArrayList;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.LinkOption;
import java.nio.file.Path;
import java.util.List;
import java.util.concurrent.CompletableFuture;
import java.util.stream.Stream;
import javax.annotation.Nonnull;
public class ValidateCPBCommand extends AbstractAsyncCommand {
private static final String UNABLE_TO_LOAD_MODEL = "Unable to load entity with model ";
private ;
OptionalArg<String> pathArg;
{
(, );
.pathArg = .withOptionalArg(, , ArgTypes.STRING);
}
CompletableFuture<Void> {
(.pathArg.provided(context)) {
(String).pathArg.get(context);
CompletableFuture.runAsync(() -> convertPrefabs(context, PathUtil.get(path)));
} {
CompletableFuture.runAsync(() -> {
(AssetPack pack : AssetModule.get().getAssetPacks()) {
convertPrefabs(context, pack.getRoot());
}
});
}
}
{
List<String> failed = <String>();
{
Stream<Path> stream = Files.walk(assetPath, FileUtil.DEFAULT_WALK_TREE_OPTIONS_ARRAY);
{
CompletableFuture[] futures = (CompletableFuture[])stream.filter((path) -> Files.isRegularFile(path, []) && path.toString().endsWith()).map((path) -> BsonUtil.readDocument(path, ).thenAccept((document) -> {
BsonPrefabBufferDeserializer.INSTANCE.deserialize(path, document);
context.sendMessage(Message.translation().param(, path.toString()));
}).exceptionally((throwable) -> {
throwable.getCause().getMessage();
(message != ) {
(message.contains()) {
String.valueOf(path);
failed.add( + var5 + + message);
;
}
(message.contains()) {
String.valueOf(path);
failed.add( + var4 + + message);
;
}
}
String.valueOf(path);
failed.add( + var10001 + + String.valueOf(message != ? message : throwable.getCause().getClass()));
( ( + String.valueOf(path), throwable.getCause())).printStackTrace();
;
})).toArray((x$) -> [x$]);
CompletableFuture.allOf(futures).join();
} (Throwable var7) {
(stream != ) {
{
stream.close();
} (Throwable var6) {
var7.addSuppressed(var6);
}
}
var7;
}
(stream != ) {
stream.close();
}
} (IOException e) {
SneakyThrow.sneakyThrow(e);
}
(!failed.isEmpty()) {
context.sendMessage(Message.translation().param(, failed.toString()));
}
context.sendMessage(Message.translation().param(, assetPath.toString()));
}
}
com/hypixel/hytale/server/core/command/commands/utility/git/UpdateAssetsCommand.java
package com.hypixel.hytale.server.core.command.commands.utility.git;
import com.hypixel.hytale.common.util.PathUtil;
import com.hypixel.hytale.server.core.Message;
import com.hypixel.hytale.server.core.command.system.CommandContext;
import com.hypixel.hytale.server.core.command.system.basecommands.AbstractAsyncCommand;
import com.hypixel.hytale.server.core.command.system.basecommands.AbstractCommandCollection;
import com.hypixel.hytale.server.core.util.AssetUtil;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.LinkOption;
import java.nio.file.Path;
import java.util.concurrent.CompletableFuture;
import javax.annotation.Nonnull;
public class UpdateAssetsCommand extends AbstractCommandCollection {
public UpdateAssetsCommand() {
super("assets", "server.commands.update.assets.desc");
this.addSubCommand(new UpdateAssetsStatusCommand());
this.addSubCommand(new UpdateAssetsResetCommand());
this.addSubCommand(new UpdateAssetsPullCommand());
}
private abstract {
{
(name, description);
}
String[] getCommand( Path var1);
CompletableFuture<Void> {
CompletableFuture.runAsync(() -> {
AssetUtil.getHytaleAssetsPath();
;
(Files.exists(assetPath.resolve(), [])) {
gitPath = assetPath;
} {
PathUtil.getParent(assetPath.toAbsolutePath());
(Files.exists(parent.resolve(), [])) {
gitPath = parent;
}
}
(gitPath == ) {
context.sendMessage(Message.translation().param(, assetPath.toString()));
} {
String[] processCommand = .getCommand(gitPath);
String.join(, processCommand);
{
context.sendMessage(Message.translation().param(, commandDisplay));
( (processCommand)).directory(gitPath.toFile()).start();
{
process.waitFor();
( (process.getInputStream(), StandardCharsets.UTF_8));
String line;
((line = reader.readLine()) != ) {
context.sendMessage(Message.translation().param(, commandDisplay).param(, line));
}
reader = ( (process.getErrorStream(), StandardCharsets.UTF_8));
((line = reader.readLine()) != ) {
context.sendMessage(Message.translation().param(, commandDisplay).param(, line));
}
context.sendMessage(Message.translation().param(, commandDisplay));
} (InterruptedException var9) {
Thread.currentThread().interrupt();
}
} (IOException e) {
context.sendMessage(Message.translation().param(, commandDisplay).param(, e.getMessage()));
}
}
});
}
}
{
{
(, );
}
String[] getCommand( Path gitPath) {
[]{, };
}
}
{
{
(, );
}
String[] getCommand( Path gitPath) {
[]{, , , };
}
}
{
{
(, );
}
String[] getCommand( Path gitPath) {
gitPath.resolve();
(Files.exists(script, [])) {
gitPath.relativize(script);
[]{, relative.toString()};
} {
[]{, };
}
}
}
}
com/hypixel/hytale/server/core/command/commands/utility/git/UpdateCommand.java
package com.hypixel.hytale.server.core.command.commands.utility.git;
import com.hypixel.hytale.server.core.command.system.basecommands.AbstractCommandCollection;
public class UpdateCommand extends AbstractCommandCollection {
public UpdateCommand() {
super("update", "server.commands.update.desc");
this.addSubCommand(new UpdateAssetsCommand());
this.addSubCommand(new UpdatePrefabsCommand());
}
}
com/hypixel/hytale/server/core/command/commands/utility/git/UpdatePrefabsCommand.java
package com.hypixel.hytale.server.core.command.commands.utility.git;
import com.hypixel.hytale.common.util.PathUtil;
import com.hypixel.hytale.server.core.Message;
import com.hypixel.hytale.server.core.command.system.CommandContext;
import com.hypixel.hytale.server.core.command.system.basecommands.AbstractAsyncCommand;
import com.hypixel.hytale.server.core.command.system.basecommands.AbstractCommandCollection;
import com.hypixel.hytale.server.core.prefab.PrefabStore;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.LinkOption;
import java.nio.file.Path;
import java.util.concurrent.CompletableFuture;
import javax.annotation.Nonnull;
public class UpdatePrefabsCommand extends AbstractCommandCollection {
public UpdatePrefabsCommand() {
super("prefabs", "server.commands.update.prefabs.desc");
this.addSubCommand(new UpdatePrefabsStatusCommand());
this.addSubCommand(new UpdatePrefabsCommitCommand());
this.addSubCommand(new UpdatePrefabsPullCommand());
this.addSubCommand(new ());
.addSubCommand( ());
}
{
{
(name, description);
}
String[][] getCommands( String var1);
CompletableFuture<Void> {
CompletableFuture.runAsync(() -> {
PrefabStore.get().getServerPrefabsPath();
;
(Files.isDirectory(prefabsPath.resolve(), [])) {
gitPath = prefabsPath;
} {
PathUtil.getParent(prefabsPath);
(Files.isDirectory(parent.resolve(), [])) {
gitPath = parent;
}
}
(gitPath == ) {
context.sendMessage(Message.translation().param(, prefabsPath.toString()));
} {
context.sender().getDisplayName();
String[][] cmds = .getCommands(senderDisplayName);
(String[] processCommand : cmds) {
{
String.join(, processCommand);
context.sendMessage(Message.translation().param(, commandDisplay));
( (processCommand)).directory(gitPath.toFile()).start();
{
process.waitFor();
( (process.getInputStream(), StandardCharsets.UTF_8));
String line;
((line = reader.readLine()) != ) {
context.sendMessage(Message.translation().param(, commandDisplay).param(, line));
}
reader = ( (process.getErrorStream(), StandardCharsets.UTF_8));
((line = reader.readLine()) != ) {
context.sendMessage(Message.translation().param(, commandDisplay).param(, line));
}
context.sendMessage(Message.translation().param(, commandDisplay));
} (InterruptedException var14) {
Thread.currentThread().interrupt();
;
}
} (IOException e) {
context.sendMessage(Message.translation().param(, String.join(, processCommand)).param(, e.getMessage()));
;
}
}
}
});
}
}
{
{
(, );
}
String[][] getCommands( String senderDisplayName) {
[][]{{, }, {, , , , }};
}
}
{
{
(, );
}
String[][] getCommands( String senderDisplayName) {
[][]{{, , , }, {, , , + senderDisplayName + }, {, , , , , , }, {, , , , , , + senderDisplayName + }};
}
}
{
{
(, );
}
String[][] getCommands( String senderDisplayName) {
[][]{{, }, {, , , , }};
}
}
{
{
(, );
}
String[][] getCommands( String senderDisplayName) {
[][]{{, , , }, {, , , , }};
}
}
{
{
(, );
}
String[][] getCommands( String senderDisplayName) {
[][]{{, , , , , , }, {, , , , , , + senderDisplayName + }, {, , , , }, {, , , , }, {, , , }, {, , , + senderDisplayName + }, {, }, {, }};
}
}
}
com/hypixel/hytale/server/core/command/commands/utility/help/HelpCommand.java
package com.hypixel.hytale.server.core.command.commands.utility.help;
import com.hypixel.hytale.component.Ref;
import com.hypixel.hytale.component.Store;
import com.hypixel.hytale.protocol.GameMode;
import com.hypixel.hytale.server.core.Message;
import com.hypixel.hytale.server.core.command.system.AbstractCommand;
import com.hypixel.hytale.server.core.command.system.CommandContext;
import com.hypixel.hytale.server.core.command.system.CommandManager;
import com.hypixel.hytale.server.core.command.system.arguments.system.RequiredArg;
import com.hypixel.hytale.server.core.command.system.arguments.types.ArgTypes;
import com.hypixel.hytale.server.core.command.system.basecommands.AbstractAsyncCommand;
import com.hypixel.hytale.server.core.command.system.pages.CommandListPage;
import com.hypixel.hytale.server.core.entity.entities.Player;
import com.hypixel.hytale.server.core.universe.PlayerRef;
import com.hypixel.hytale.server.core.universe.world.World;
import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
import java.util.Map;
import java.util.Set;
import java.util.concurrent.CompletableFuture;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
public class HelpCommand extends AbstractAsyncCommand {
@Nonnull
private static final Message MESSAGE_COMMANDS_ERRORS_PLAYER_NOT_IN_WORLD = Message.translation("server.commands.errors.playerNotInWorld");
{
(, );
.addAliases( []{});
.setPermissionGroup(GameMode.Adventure);
.addUsageVariant( ());
}
CompletableFuture<Void> {
openHelpUI(context, (String));
}
CompletableFuture<Void> {
(context.isPlayer()) {
Ref<EntityStore> playerRef = context.senderAsPlayerRef();
(playerRef != && playerRef.isValid()) {
Store<EntityStore> store = playerRef.getStore();
((EntityStore)store.getExternalData()).getWorld();
resolveCommandName(initialCommand);
CompletableFuture.runAsync(() -> {
(Player)store.getComponent(playerRef, Player.getComponentType());
(PlayerRef)store.getComponent(playerRef, PlayerRef.getComponentType());
(playerComponent != && playerRefComponent != ) {
playerComponent.getPageManager().openCustomPage(playerRef, store, (playerRefComponent, resolvedCommand));
}
}, world);
} {
context.sendMessage(MESSAGE_COMMANDS_ERRORS_PLAYER_NOT_IN_WORLD);
CompletableFuture.completedFuture((Object));
}
} {
CompletableFuture.completedFuture((Object));
}
}
String {
(commandNameOrAlias == ) {
;
} {
commandNameOrAlias.toLowerCase();
Map<String, AbstractCommand> commands = CommandManager.get().getCommandRegistration();
(commands.containsKey(lowerName)) {
lowerName;
} {
(Map.Entry<String, AbstractCommand> entry : commands.entrySet()) {
Set<String> aliases = ((AbstractCommand)entry.getValue()).getAliases();
(aliases != && aliases.contains(lowerName)) {
(String)entry.getKey();
}
}
lowerName;
}
}
}
{
RequiredArg<String> commandArg;
HelpCommandVariant() {
();
.commandArg = .withRequiredArg(, , ArgTypes.STRING);
}
CompletableFuture<Void> {
(String).commandArg.get(context);
HelpCommand.openHelpUI(context, commandName);
}
}
}
com/hypixel/hytale/server/core/command/commands/utility/lighting/LightingCalculationCommand.java
package com.hypixel.hytale.server.core.command.commands.utility.lighting;
import com.hypixel.hytale.component.Store;
import com.hypixel.hytale.server.core.Message;
import com.hypixel.hytale.server.core.command.system.CommandContext;
import com.hypixel.hytale.server.core.command.system.arguments.system.FlagArg;
import com.hypixel.hytale.server.core.command.system.arguments.system.RequiredArg;
import com.hypixel.hytale.server.core.command.system.arguments.types.ArgTypes;
import com.hypixel.hytale.server.core.command.system.basecommands.AbstractWorldCommand;
import com.hypixel.hytale.server.core.universe.world.World;
import com.hypixel.hytale.server.core.universe.world.lighting.ChunkLightingManager;
import com.hypixel.hytale.server.core.universe.world.lighting.FloodLightCalculation;
import com.hypixel.hytale.server.core.universe.world.lighting.FullBrightLightCalculation;
import com.hypixel.hytale.server.core.universe.world.lighting.LightCalculation;
import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
import javax.annotation.Nonnull;
public class LightingCalculationCommand extends AbstractWorldCommand {
@Nonnull
private static final Message MESSAGE_COMMANDS_INVALIDATE_LIGHTING = Message.translation("server.commands.invalidatedlighting");
@Nonnull
private static final Message MESSAGE_COMMANDS_LIGHTING_CALCULATION_ALREADY_FULLBRIGHT Message.translation();
RequiredArg<LightCalculationType> calculationTypeArg = .withRequiredArg(, , ArgTypes.forEnum(, LightCalculationType.class));
.withFlagArg(, );
{
(, );
}
{
(LightCalculationType).calculationTypeArg.get(context);
world.getChunkLighting();
(type.ordinal()) {
:
chunkLighting.setLightCalculation( (chunkLighting));
context.sendMessage(Message.translation().param(, ));
;
:
chunkLighting.getLightCalculation();
(lightCalculation FullBrightLightCalculation) {
context.sendMessage(MESSAGE_COMMANDS_LIGHTING_CALCULATION_ALREADY_FULLBRIGHT);
;
}
chunkLighting.setLightCalculation( (chunkLighting, lightCalculation));
context.sendMessage(Message.translation().param(, lightCalculation.getClass().getSimpleName()));
}
((Boolean).invalidateFlag.get(context)) {
chunkLighting.invalidateLoadedChunks();
context.sendMessage(MESSAGE_COMMANDS_INVALIDATE_LIGHTING);
}
}
{
FLOOD,
FULLBRIGHT;
{
}
}
}
com/hypixel/hytale/server/core/command/commands/utility/lighting/LightingCommand.java
package com.hypixel.hytale.server.core.command.commands.utility.lighting;
import com.hypixel.hytale.server.core.command.system.basecommands.AbstractCommandCollection;
public class LightingCommand extends AbstractCommandCollection {
public LightingCommand() {
super("lighting", "server.commands.lighting.desc");
this.addAliases(new String[]{"light"});
this.addSubCommand(new LightingCalculationCommand());
this.addSubCommand(new LightingGetCommand());
this.addSubCommand(new LightingInvalidateCommand());
this.addSubCommand(new LightingInfoCommand());
this.addSubCommand(new LightingSendCommand());
}
}
com/hypixel/hytale/server/core/command/commands/utility/lighting/LightingGetCommand.java
package com.hypixel.hytale.server.core.command.commands.utility.lighting;
import com.hypixel.hytale.component.Ref;
import com.hypixel.hytale.component.Store;
import com.hypixel.hytale.math.util.ChunkUtil;
import com.hypixel.hytale.math.vector.Vector3i;
import com.hypixel.hytale.server.core.Message;
import com.hypixel.hytale.server.core.command.system.CommandContext;
import com.hypixel.hytale.server.core.command.system.arguments.system.FlagArg;
import com.hypixel.hytale.server.core.command.system.arguments.system.RequiredArg;
import com.hypixel.hytale.server.core.command.system.arguments.types.ArgTypes;
import com.hypixel.hytale.server.core.command.system.arguments.types.RelativeIntPosition;
import com.hypixel.hytale.server.core.command.system.basecommands.AbstractWorldCommand;
import com.hypixel.hytale.server.core.universe.world.World;
import com.hypixel.hytale.server.core.universe.world.chunk.BlockChunk;
import com.hypixel.hytale.server.core.universe.world.chunk.section.BlockSection;
import com.hypixel.hytale.server.core.universe.world.chunk.section.ChunkLightData;
import com.hypixel.hytale.server.core.universe.world.storage.ChunkStore;
import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
import javax.annotation.Nonnull;
public class LightingGetCommand extends AbstractWorldCommand {
@Nonnull
private final RequiredArg<RelativeIntPosition> positionArg;
@Nonnull
private final FlagArg hexFlag;
public LightingGetCommand {
(, );
.positionArg = .withRequiredArg(, , ArgTypes.RELATIVE_BLOCK_POSITION);
.hexFlag = .withFlagArg(, );
}
{
world.getChunkStore();
((RelativeIntPosition).positionArg.get(context)).getBlockPosition(context, store);
position.x;
position.y;
position.z;
ChunkUtil.indexChunkFromBlock(x, z);
Ref<ChunkStore> chunkReference = chunkStore.getChunkReference(chunkIndex);
(chunkReference != && chunkReference.isValid()) {
(BlockChunk)chunkStore.getStore().getComponent(chunkReference, BlockChunk.getComponentType());
blockChunkComponent != ;
blockChunkComponent.getSectionAtBlockY(y);
section.getGlobalLight().getLightRaw(x, y, z);
ChunkLightData.getLightValue(lightValue, );
ChunkLightData.getLightValue(lightValue, );
ChunkLightData.getLightValue(lightValue, );
ChunkLightData.getLightValue(lightValue, );
(Boolean).hexFlag.get(context);
Message.translation().param(, x).param(, y).param(, z).param(, world.getName());
(displayHex) {
Integer.toHexString(lightValue);
.repeat( - hexString.length());
messageToSend.insert( + var10001 + hexString);
} {
messageToSend.insert(Message.translation().param(, redLight).param(, greenLight).param(, blueLight).param(, skyLight));
}
context.sendMessage(messageToSend);
} {
Message.translation().param(, ChunkUtil.chunkCoordinate(x)).param(, ChunkUtil.chunkCoordinate(z)).param(, world.getName());
context.sendMessage(errorMessage);
}
}
}
com/hypixel/hytale/server/core/command/commands/utility/lighting/LightingInfoCommand.java
package com.hypixel.hytale.server.core.command.commands.utility.lighting;
import com.hypixel.hytale.component.Store;
import com.hypixel.hytale.server.core.Message;
import com.hypixel.hytale.server.core.command.system.CommandContext;
import com.hypixel.hytale.server.core.command.system.arguments.system.FlagArg;
import com.hypixel.hytale.server.core.command.system.basecommands.AbstractWorldCommand;
import com.hypixel.hytale.server.core.universe.world.World;
import com.hypixel.hytale.server.core.universe.world.chunk.BlockChunk;
import com.hypixel.hytale.server.core.universe.world.chunk.WorldChunk;
import com.hypixel.hytale.server.core.universe.world.chunk.section.BlockSection;
import com.hypixel.hytale.server.core.universe.world.lighting.ChunkLightingManager;
import com.hypixel.hytale.server.core.universe.world.storage.ChunkStore;
import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
import java.util.concurrent.atomic.AtomicInteger;
import javax.annotation.Nonnull;
public class LightingInfoCommand extends AbstractWorldCommand {
@Nonnull
private final FlagArg detailFlag = this.withFlagArg("detail", "server.commands.lighting.info.detail.desc");
public LightingInfoCommand() {
super("info", "server.commands.lighting.info.desc");
}
protected {
Store<ChunkStore> chunkStoreStore = world.getChunkStore().getStore();
world.getChunkLighting();
context.sendMessage(Message.translation().param(, chunkLighting.getQueueSize()).param(, chunkLighting.getLightCalculation().getClass().getSimpleName()));
((Boolean).detailFlag.get(context)) {
();
();
();
chunkStoreStore.forEachEntityParallel(WorldChunk.getComponentType(), (index, archetypeChunk, commandBuffer) -> {
;
;
(BlockChunk)archetypeChunk.getComponent(index, BlockChunk.getComponentType());
blockChunkComponent != ;
( ; y < ; ++y) {
blockChunkComponent.getSectionAtBlockY(y);
(section.hasLocalLight()) {
++hasLocalCount;
}
(section.hasGlobalLight()) {
++hasGlobalCount;
}
}
total.getAndAdd();
localLightCount.getAndAdd(hasLocalCount);
globalLightCount.getAndAdd(hasGlobalCount);
});
context.sendMessage(Message.translation().param(, total.get()).param(, localLightCount.get()).param(, globalLightCount.get()));
}
}
}
com/hypixel/hytale/server/core/command/commands/utility/lighting/LightingInvalidateCommand.java
package com.hypixel.hytale.server.core.command.commands.utility.lighting;
import com.hypixel.hytale.component.Ref;
import com.hypixel.hytale.component.Store;
import com.hypixel.hytale.math.util.ChunkUtil;
import com.hypixel.hytale.math.util.MathUtil;
import com.hypixel.hytale.math.vector.Vector3d;
import com.hypixel.hytale.math.vector.Vector3i;
import com.hypixel.hytale.server.core.Message;
import com.hypixel.hytale.server.core.command.system.CommandContext;
import com.hypixel.hytale.server.core.command.system.arguments.system.FlagArg;
import com.hypixel.hytale.server.core.command.system.basecommands.AbstractWorldCommand;
import com.hypixel.hytale.server.core.modules.entity.component.TransformComponent;
import com.hypixel.hytale.server.core.universe.world.World;
import com.hypixel.hytale.server.core.universe.world.chunk.BlockChunk;
import com.hypixel.hytale.server.core.universe.world.chunk.section.BlockSection;
import com.hypixel.hytale.server.core.universe.world.lighting.ChunkLightingManager;
import com.hypixel.hytale.server.core.universe.world.storage.ChunkStore;
import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
import javax.annotation.Nonnull;
public class LightingInvalidateCommand extends AbstractWorldCommand {
@Nonnull
private static final Message MESSAGE_COMMANDS_ERRORS_PLAYER_NOT_IN_WORLD = Message.translation("server.commands.errors.playerNotInWorld");
@Nonnull
Message.translation();
.withFlagArg(, );
{
(, );
}
{
world.getChunkLighting();
world.getChunkStore();
((Boolean).oneFlag.get(context)) {
(!context.isPlayer()) {
context.sendMessage(MESSAGE_COMMANDS_ERRORS_PLAYER_NOT_IN_WORLD);
;
}
Ref<EntityStore> ref = context.senderAsPlayerRef();
(ref == || !ref.isValid()) {
context.sendMessage(MESSAGE_COMMANDS_ERRORS_PLAYER_NOT_IN_WORLD);
;
}
Store<EntityStore> entityStore = ref.getStore();
(TransformComponent)entityStore.getComponent(ref, TransformComponent.getComponentType());
transformComponent != ;
transformComponent.getPosition();
ChunkUtil.indexChunkFromBlock(()position.getX(), ()position.getZ());
ChunkUtil.xOfChunkIndex(chunkIndex);
ChunkUtil.zOfChunkIndex(chunkIndex);
Ref<ChunkStore> chunkReference = chunkStore.getChunkReference(chunkIndex);
(chunkReference == || !chunkReference.isValid()) {
Message.translation().param(, chunkX).param(, chunkZ).param(, world.getName());
context.sendMessage(errorMessage);
;
}
Store<ChunkStore> chunkStoreStore = chunkStore.getStore();
(BlockChunk)chunkStoreStore.getComponent(chunkReference, BlockChunk.getComponentType());
blockChunkComponent != ;
MathUtil.floor(position.getY()) >> ;
blockChunkComponent.getSectionAtBlockY(chunkY);
section.invalidateLocalLight();
blockChunkComponent.invalidateChunkSection(chunkY);
(blockChunkComponent.getX(), chunkY, blockChunkComponent.getZ());
chunkLighting.addToQueue(chunkPosition);
context.sendMessage(Message.translation().param(, chunkPosition.toString()));
} {
chunkLighting.invalidateLoadedChunks();
context.sendMessage(MESSAGE_COMMANDS_INVALIDATED_LIGHTING);
}
}
}
com/hypixel/hytale/server/core/command/commands/utility/lighting/LightingSendCommand.java
package com.hypixel.hytale.server.core.command.commands.utility.lighting;
import com.hypixel.hytale.server.core.command.system.basecommands.AbstractCommandCollection;
import com.hypixel.hytale.server.core.universe.world.chunk.BlockChunk;
public class LightingSendCommand extends AbstractCommandCollection {
public LightingSendCommand() {
super("send", "server.commands.sendlighting.desc");
this.addSubCommand(new LightingSendLocalCommand());
this.addSubCommand(new LightingSendGlobalCommand());
}
private static class LightingSendLocalCommand extends LightingSendToggleCommand {
public LightingSendLocalCommand() {
super("local", "server.commands.sendlighting.local.desc", "server.commands.sendlighting.local.enabled.desc", "server.commands.sendlighting.localLightingStatus", () -> BlockChunk.SEND_LOCAL_LIGHTING_DATA, (value) -> BlockChunk.SEND_LOCAL_LIGHTING_DATA = value);
}
}
private static class LightingSendGlobalCommand extends LightingSendToggleCommand {
{
(, , , , () -> BlockChunk.SEND_GLOBAL_LIGHTING_DATA, (value) -> BlockChunk.SEND_GLOBAL_LIGHTING_DATA = value);
}
}
}
com/hypixel/hytale/server/core/command/commands/utility/lighting/LightingSendToggleCommand.java
package com.hypixel.hytale.server.core.command.commands.utility.lighting;
import com.hypixel.hytale.component.Store;
import com.hypixel.hytale.server.core.Message;
import com.hypixel.hytale.server.core.command.system.CommandContext;
import com.hypixel.hytale.server.core.command.system.arguments.system.OptionalArg;
import com.hypixel.hytale.server.core.command.system.arguments.types.ArgTypes;
import com.hypixel.hytale.server.core.command.system.basecommands.AbstractWorldCommand;
import com.hypixel.hytale.server.core.universe.world.World;
import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
import com.hypixel.hytale.server.core.util.message.MessageFormat;
import java.util.Objects;
import java.util.function.BooleanSupplier;
import java.util.function.Consumer;
import javax.annotation.Nonnull;
abstract class LightingSendToggleCommand extends AbstractWorldCommand {
@Nonnull
private final String statusTranslationKey;
@Nonnull
private final BooleanSupplier getter;
@Nonnull
private final Consumer<Boolean> setter;
@Nonnull
private final OptionalArg<Boolean> enabledArg;
protected LightingSendToggleCommand(@Nonnull String name, @Nonnull String description, @Nonnull String enabledDesc, String statusTranslationKey, BooleanSupplier getter, Consumer<Boolean> setter) {
(name, description);
.statusTranslationKey = statusTranslationKey;
.getter = getter;
.setter = setter;
.enabledArg = .withOptionalArg(, enabledDesc, ArgTypes.BOOLEAN);
}
{
.enabledArg.provided(context) ? (Boolean).enabledArg.get(context) : ;
(Boolean)Objects.requireNonNullElseGet(enabled, () -> !.getter.getAsBoolean());
.setter.accept(newValue);
context.sendMessage(Message.translation(.statusTranslationKey).param(, MessageFormat.enabled(newValue)));
}
}
package com.hypixel.hytale.server.core.command.commands.utility.metacommands;
import com.hypixel.hytale.server.core.command.system.basecommands.AbstractCommandCollection;
public class CommandsCommand extends AbstractCommandCollection {
public CommandsCommand() {
super("commands", "server.commands.meta.desc");
this.addSubCommand(new DumpCommandsCommand());
}
}
package com.hypixel.hytale.server.core.command.commands.utility.metacommands;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.hypixel.hytale.logger.HytaleLogger;
import com.hypixel.hytale.server.core.Message;
import com.hypixel.hytale.server.core.command.system.AbstractCommand;
import com.hypixel.hytale.server.core.command.system.CommandContext;
import com.hypixel.hytale.server.core.command.system.CommandManager;
import com.hypixel.hytale.server.core.command.system.CommandOwner;
import com.hypixel.hytale.server.core.command.system.basecommands.CommandBase;
import it.unimi.dsi.fastutil.objects.ObjectArrayList;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.List;
import java.util.Map;
import java.util.concurrent.CompletableFuture;
import java.util.function.Function;
import java.util.logging.Level;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
public class DumpCommandsCommand extends CommandBase {
public DumpCommandsCommand() {
super("dump", "server.commands.meta.dump.desc");
}
protected void executeSync {
();
( ()).setPrettyPrinting().create();
List<CommandDef> modernDefs = .gatherCommandDefs();
outputJson.add(, gson.toJsonTree(modernDefs));
CompletableFuture.runAsync(() -> {
{
gson.toJson((JsonElement)outputJson);
Paths.get();
Files.createDirectories(path.getParent());
Files.writeString(path, outputStr);
context.sendMessage(Message.translation().param(, path.toAbsolutePath().toString()));
} (Throwable t) {
(t);
}
}).exceptionally((t) -> {
context.sendMessage(Message.translation());
((HytaleLogger.Api)HytaleLogger.getLogger().at(Level.SEVERE).withCause(t)).log();
;
});
}
List<CommandDef> {
Map<String, AbstractCommand> registrations = CommandManager.get().getCommandRegistration();
List<CommandDef> defs = <CommandDef>(registrations.size() * );
registrations.forEach((name, command) -> .extractCommand(command, defs));
defs;
}
{
+ command.getFullyQualifiedName();
command.getClass().getName();
.formatNullable(command.getOwner(), CommandOwner::getName);
.formatNullable(command.getOwner(), (o) -> o.getClass().getName());
.formatPermission(command.getPermission());
List<String> permissionGroups = command.getPermissionGroups();
defs.add( (outputName, className, owner, ownerClass, permission, permissionGroups));
(AbstractCommand subCommand : command.getSubCommands().values()) {
.extractCommand(subCommand, defs);
}
}
<T> String {
{
something == ? : (String)func.apply(something);
} (Throwable var4) {
;
}
}
String {
permission == ? : permission;
}
{
}
}
com/hypixel/hytale/server/core/command/commands/utility/net/NetworkCommand.java
package com.hypixel.hytale.server.core.command.commands.utility.net;
import com.hypixel.hytale.component.Ref;
import com.hypixel.hytale.component.Store;
import com.hypixel.hytale.server.core.Message;
import com.hypixel.hytale.server.core.command.system.CommandContext;
import com.hypixel.hytale.server.core.command.system.arguments.system.RequiredArg;
import com.hypixel.hytale.server.core.command.system.arguments.types.ArgTypes;
import com.hypixel.hytale.server.core.command.system.basecommands.AbstractCommandCollection;
import com.hypixel.hytale.server.core.command.system.basecommands.AbstractTargetPlayerCommand;
import com.hypixel.hytale.server.core.command.system.basecommands.CommandBase;
import com.hypixel.hytale.server.core.entity.knockback.KnockbackSystems;
import com.hypixel.hytale.server.core.io.netty.LatencySimulationHandler;
import com.hypixel.hytale.server.core.modules.entity.player.KnockbackPredictionSystems;
import com.hypixel.hytale.server.core.universe.PlayerRef;
import com.hypixel.hytale.server.core.universe.world.World;
import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
import io.netty.channel.Channel;
import java.util.concurrent.TimeUnit;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
public class NetworkCommand extends AbstractCommandCollection {
public NetworkCommand() {
super("network", "server.commands.network.desc");
this.addAliases( []{});
.addSubCommand( ());
.addSubCommand( ());
.addSubCommand( ());
}
{
ServerKnockbackCommand() {
(, );
}
{
KnockbackSystems.ApplyPlayerKnockback.DO_SERVER_PREDICTION = !KnockbackSystems.ApplyPlayerKnockback.DO_SERVER_PREDICTION;
context.sendMessage(Message.translation().param(, KnockbackSystems.ApplyPlayerKnockback.DO_SERVER_PREDICTION));
}
}
{
DebugKnockbackCommand() {
(, );
}
{
KnockbackPredictionSystems.DEBUG_KNOCKBACK_POSITION = !KnockbackPredictionSystems.DEBUG_KNOCKBACK_POSITION;
context.sendMessage(Message.translation().param(, KnockbackPredictionSystems.DEBUG_KNOCKBACK_POSITION));
}
}
{
{
(, );
.addAliases( []{});
.addSubCommand( ());
.addSubCommand( ());
}
{
RequiredArg<Integer> delayArg;
Set() {
(, );
.delayArg = .withRequiredArg(, , ArgTypes.INTEGER);
}
{
(Integer).delayArg.get(context);
playerRef.getPacketHandler().getChannel();
LatencySimulationHandler.setLatency(channel, ()delay, TimeUnit.MILLISECONDS);
context.sendMessage(Message.translation().param(, delay));
}
}
{
Message.translation();
Reset() {
(, );
.addAliases( []{});
}
{
playerRef.getPacketHandler().getChannel();
LatencySimulationHandler.setLatency(channel, , TimeUnit.MILLISECONDS);
context.sendMessage(MESSAGE_COMMANDS_LATENCY_SIMULATION_RESET_SUCCESS);
}
}
}
}
com/hypixel/hytale/server/core/command/commands/utility/sleep/SleepCommand.java
package com.hypixel.hytale.server.core.command.commands.utility.sleep;
import com.hypixel.hytale.server.core.command.system.basecommands.AbstractCommandCollection;
public class SleepCommand extends AbstractCommandCollection {
public SleepCommand() {
super("sleep", "server.commands.sleep.desc");
this.addSubCommand(new SleepOffsetCommand());
this.addSubCommand(new SleepTestCommand());
}
}
com/hypixel/hytale/server/core/command/commands/utility/sleep/SleepOffsetCommand.java
package com.hypixel.hytale.server.core.command.commands.utility.sleep;
import com.hypixel.hytale.server.core.Message;
import com.hypixel.hytale.server.core.command.system.CommandContext;
import com.hypixel.hytale.server.core.command.system.arguments.system.FlagArg;
import com.hypixel.hytale.server.core.command.system.arguments.system.OptionalArg;
import com.hypixel.hytale.server.core.command.system.arguments.types.ArgTypes;
import com.hypixel.hytale.server.core.command.system.basecommands.CommandBase;
import com.hypixel.hytale.server.core.util.thread.TickingThread;
import javax.annotation.Nonnull;
public class SleepOffsetCommand extends CommandBase {
@Nonnull
private final FlagArg percentFlag = this.withFlagArg("percent", "server.commands.sleepoffset.percent.desc");
@Nonnull
private final OptionalArg<Integer> offsetArg;
public SleepOffsetCommand() {
super("offset", "server.commands.sleepoffset.desc");
this.offsetArg = this.withOptionalArg("offset", "server.commands.sleepoffset.offset.desc", ArgTypes.INTEGER);
}
protected void executeSync( CommandContext context) {
(.offsetArg.provided(context)) {
()TickingThread.SLEEP_OFFSET;
(Integer).offsetArg.get(context);
TickingThread.SLEEP_OFFSET = ()newValue;
((Boolean).percentFlag.get(context)) {
context.sendMessage(Message.translation().param(, newValue).param(, oldValue));
} {
context.sendMessage(Message.translation().param(, newValue).param(, oldValue));
}
} {
()TickingThread.SLEEP_OFFSET;
((Boolean).percentFlag.get(context)) {
context.sendMessage(Message.translation().param(, value));
} {
context.sendMessage(Message.translation().param(, value));
}
}
}
}
com/hypixel/hytale/server/core/command/commands/utility/sleep/SleepTestCommand.java
package com.hypixel.hytale.server.core.command.commands.utility.sleep;
import com.hypixel.hytale.common.util.FormatUtil;
import com.hypixel.hytale.metrics.metric.Metric;
import com.hypixel.hytale.server.core.Message;
import com.hypixel.hytale.server.core.command.system.CommandContext;
import com.hypixel.hytale.server.core.command.system.arguments.system.DefaultArg;
import com.hypixel.hytale.server.core.command.system.arguments.types.ArgTypes;
import com.hypixel.hytale.server.core.command.system.basecommands.CommandBase;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.TimeUnit;
import javax.annotation.Nonnull;
public class SleepTestCommand extends CommandBase {
@Nonnull
private static final Message MESSAGE_COMMANDS_SLEEP_TEST_INTERRUPTED = Message.translation("server.commands.sleeptest.interrupted");
@Nonnull
private final DefaultArg<Integer> sleepArg;
@Nonnull
private final DefaultArg<Integer> countArg;
public SleepTestCommand() {
super("test", "server.commands.sleeptest.desc");
this.sleepArg = this.withDefaultArg("sleep", "server.commands.sleeptest.sleep.desc", ArgTypes.INTEGER, , );
.countArg = .withDefaultArg(, , ArgTypes.INTEGER, , );
}
{
(Integer).sleepArg.get(context);
(Integer).countArg.get(context);
CompletableFuture.runAsync(() -> {
context.sendMessage(Message.translation().param(, count).param(, sleep).param(, FormatUtil.timeUnitToString(()count * ()sleep, TimeUnit.MILLISECONDS)));
{
();
();
( ; i < count; ++i) {
System.nanoTime();
Thread.sleep(()sleep);
System.nanoTime();
after - before;
metricDelta.add(delta);
delta - ()sleep * ;
metricOffset.add(offset);
}
context.sendMessage(Message.translation().param(, metricDelta.getMin()).param(, metricDelta.getMax()).param(, metricDelta.getAverage()).param(, FormatUtil.nanosToString(()metricDelta.getAverage())).param(, metricOffset.getMin()).param(, metricOffset.getMax()).param(, metricOffset.getAverage()).param(, FormatUtil.nanosToString(()metricOffset.getAverage())));
} (InterruptedException var14) {
context.sendMessage(MESSAGE_COMMANDS_SLEEP_TEST_INTERRUPTED);
Thread.currentThread().interrupt();
}
});
}
}
com/hypixel/hytale/server/core/command/commands/utility/sound/SoundCommand.java
package com.hypixel.hytale.server.core.command.commands.utility.sound;
import com.hypixel.hytale.component.Ref;
import com.hypixel.hytale.component.Store;
import com.hypixel.hytale.server.core.command.system.CommandContext;
import com.hypixel.hytale.server.core.command.system.basecommands.AbstractPlayerCommand;
import com.hypixel.hytale.server.core.entity.entities.Player;
import com.hypixel.hytale.server.core.entity.entities.player.pages.audio.PlaySoundPage;
import com.hypixel.hytale.server.core.universe.PlayerRef;
import com.hypixel.hytale.server.core.universe.world.World;
import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
import javax.annotation.Nonnull;
public class SoundCommand extends AbstractPlayerCommand {
public SoundCommand() {
super("sound", "server.commands.sound.desc");
this.addSubCommand(new SoundPlay2DCommand());
this.addSubCommand(new SoundPlay3DCommand());
}
protected void execute(@Nonnull CommandContext context, @Nonnull Store<EntityStore> store, @Nonnull Ref<EntityStore> ref, @Nonnull PlayerRef playerRef, @Nonnull World world) {
Player playerComponent (Player)store.getComponent(ref, Player.getComponentType());
playerComponent != ;
(PlayerRef)store.getComponent(ref, PlayerRef.getComponentType());
playerRefComponent != ;
playerComponent.getPageManager().openCustomPage(ref, store, (playerRefComponent));
}
}
com/hypixel/hytale/server/core/command/commands/utility/sound/SoundPlay2DCommand.java
package com.hypixel.hytale.server.core.command.commands.utility.sound;
import com.hypixel.hytale.component.Ref;
import com.hypixel.hytale.component.Store;
import com.hypixel.hytale.protocol.SoundCategory;
import com.hypixel.hytale.server.core.asset.type.soundevent.config.SoundEvent;
import com.hypixel.hytale.server.core.command.system.CommandContext;
import com.hypixel.hytale.server.core.command.system.arguments.system.DefaultArg;
import com.hypixel.hytale.server.core.command.system.arguments.system.FlagArg;
import com.hypixel.hytale.server.core.command.system.arguments.system.RequiredArg;
import com.hypixel.hytale.server.core.command.system.arguments.types.ArgTypes;
import com.hypixel.hytale.server.core.command.system.basecommands.AbstractTargetPlayerCommand;
import com.hypixel.hytale.server.core.universe.PlayerRef;
import com.hypixel.hytale.server.core.universe.world.SoundUtil;
import com.hypixel.hytale.server.core.universe.world.World;
import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
public class SoundPlay2DCommand extends AbstractTargetPlayerCommand {
@Nonnull
private final RequiredArg<SoundEvent> soundEventArg;
@Nonnull
private final DefaultArg<SoundCategory> categoryArg;
@Nonnull
private final FlagArg allFlag;
public SoundPlay2DCommand() {
(, );
.soundEventArg = .withRequiredArg(, , ArgTypes.SOUND_EVENT_ASSET);
.categoryArg = .withDefaultArg(, , ArgTypes.SOUND_CATEGORY, SoundCategory.SFX, );
.allFlag = .withFlagArg(, );
.addAliases( []{});
}
{
(SoundEvent).soundEventArg.get(context);
(SoundCategory).categoryArg.get(context);
SoundEvent.getAssetMap().getIndex(soundEvent.getId());
(.allFlag.provided(context)) {
SoundUtil.playSoundEvent2d(soundEventIndex, soundCategory, store);
} {
SoundUtil.playSoundEvent2d(ref, soundEventIndex, soundCategory, store);
}
}
}
com/hypixel/hytale/server/core/command/commands/utility/sound/SoundPlay3DCommand.java
package com.hypixel.hytale.server.core.command.commands.utility.sound;
import com.hypixel.hytale.component.Ref;
import com.hypixel.hytale.component.Store;
import com.hypixel.hytale.math.util.MathUtil;
import com.hypixel.hytale.math.vector.Vector3d;
import com.hypixel.hytale.math.vector.Vector3i;
import com.hypixel.hytale.protocol.SoundCategory;
import com.hypixel.hytale.server.core.asset.type.soundevent.config.SoundEvent;
import com.hypixel.hytale.server.core.command.system.CommandContext;
import com.hypixel.hytale.server.core.command.system.arguments.system.DefaultArg;
import com.hypixel.hytale.server.core.command.system.arguments.system.FlagArg;
import com.hypixel.hytale.server.core.command.system.arguments.system.RequiredArg;
import com.hypixel.hytale.server.core.command.system.arguments.types.ArgTypes;
import com.hypixel.hytale.server.core.command.system.arguments.types.RelativeVector3i;
import com.hypixel.hytale.server.core.command.system.basecommands.AbstractTargetPlayerCommand;
import com.hypixel.hytale.server.core.modules.entity.component.TransformComponent;
import com.hypixel.hytale.server.core.universe.PlayerRef;
import com.hypixel.hytale.server.core.universe.world.SoundUtil;
import com.hypixel.hytale.server.core.universe.world.World;
import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
public class SoundPlay3DCommand extends AbstractTargetPlayerCommand {
@Nonnull
private final RequiredArg<SoundEvent> soundEventArg;
DefaultArg<SoundCategory> categoryArg;
RequiredArg<RelativeVector3i> positionArg;
FlagArg allFlag;
{
(, );
.soundEventArg = .withRequiredArg(, , ArgTypes.SOUND_EVENT_ASSET);
.categoryArg = .withDefaultArg(, , ArgTypes.SOUND_CATEGORY, SoundCategory.SFX, );
.positionArg = .withRequiredArg(, , ArgTypes.RELATIVE_VECTOR3I);
.allFlag = .withFlagArg(, );
.addAliases( []{});
}
{
(SoundEvent).soundEventArg.get(context);
(SoundCategory).categoryArg.get(context);
(RelativeVector3i).positionArg.get(context);
SoundEvent.getAssetMap().getIndex(soundEvent.getId());
(TransformComponent)store.getComponent(ref, TransformComponent.getComponentType());
transformComponent != ;
transformComponent.getPosition();
relativePosition.resolve(MathUtil.floor(basePosition.x), MathUtil.floor(basePosition.y), MathUtil.floor(basePosition.z));
(.allFlag.provided(context)) {
SoundUtil.playSoundEvent3d(soundEventIndex, soundCategory, ()blockPosition.x, ()blockPosition.y, ()blockPosition.z, world.getEntityStore().getStore());
} {
SoundUtil.playSoundEvent3dToPlayer(ref, soundEventIndex, soundCategory, ()blockPosition.x, ()blockPosition.y, ()blockPosition.z, store);
}
}
}
com/hypixel/hytale/server/core/command/commands/utility/worldmap/WorldMapClearMarkersCommand.java
package com.hypixel.hytale.server.core.command.commands.utility.worldmap;
import com.hypixel.hytale.component.Ref;
import com.hypixel.hytale.component.Store;
import com.hypixel.hytale.protocol.packets.worldmap.MapMarker;
import com.hypixel.hytale.server.core.Message;
import com.hypixel.hytale.server.core.command.system.CommandContext;
import com.hypixel.hytale.server.core.command.system.basecommands.AbstractPlayerCommand;
import com.hypixel.hytale.server.core.entity.entities.Player;
import com.hypixel.hytale.server.core.entity.entities.player.data.PlayerWorldData;
import com.hypixel.hytale.server.core.universe.PlayerRef;
import com.hypixel.hytale.server.core.universe.world.World;
import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
import javax.annotation.Nonnull;
public class WorldMapClearMarkersCommand extends AbstractPlayerCommand {
@Nonnull
private static final Message MESSAGE_COMMANDS_WORLD_MAP_MARKERS_CLEARED = Message.translation("server.commands.worldmap.markersCleared");
public WorldMapClearMarkersCommand() {
super("clearmarkers", "server.commands.worldmap.clearmarkers.desc");
}
protected void execute(@Nonnull CommandContext context, Store<EntityStore> store, Ref<EntityStore> ref, PlayerRef playerRef, World world) {
(Player)store.getComponent(ref, Player.getComponentType());
playerComponent != ;
playerComponent.getPlayerConfigData().getPerWorldData(world.getName());
perWorldData.setWorldMapMarkers((MapMarker[]));
context.sendMessage(MESSAGE_COMMANDS_WORLD_MAP_MARKERS_CLEARED);
}
}
com/hypixel/hytale/server/core/command/commands/utility/worldmap/WorldMapCommand.java
package com.hypixel.hytale.server.core.command.commands.utility.worldmap;
import com.hypixel.hytale.server.core.command.system.basecommands.AbstractCommandCollection;
public class WorldMapCommand extends AbstractCommandCollection {
public WorldMapCommand() {
super("worldmap", "server.commands.worldmap.desc");
this.addAliases(new String[]{"map"});
this.addSubCommand(new WorldMapReloadCommand());
this.addSubCommand(new WorldMapDiscoverCommand());
this.addSubCommand(new WorldMapUndiscoverCommand());
this.addSubCommand(new WorldMapClearMarkersCommand());
this.addSubCommand(new WorldMapViewRadiusSubCommand());
}
}
com/hypixel/hytale/server/core/command/commands/utility/worldmap/WorldMapDiscoverCommand.java
package com.hypixel.hytale.server.core.command.commands.utility.worldmap;
import com.hypixel.hytale.common.util.StringUtil;
import com.hypixel.hytale.component.Ref;
import com.hypixel.hytale.component.Store;
import com.hypixel.hytale.protocol.packets.worldmap.BiomeData;
import com.hypixel.hytale.server.core.Message;
import com.hypixel.hytale.server.core.command.system.CommandContext;
import com.hypixel.hytale.server.core.command.system.CommandUtil;
import com.hypixel.hytale.server.core.command.system.arguments.system.OptionalArg;
import com.hypixel.hytale.server.core.command.system.arguments.types.ArgTypes;
import com.hypixel.hytale.server.core.command.system.basecommands.AbstractPlayerCommand;
import com.hypixel.hytale.server.core.entity.entities.Player;
import com.hypixel.hytale.server.core.universe.PlayerRef;
import com.hypixel.hytale.server.core.universe.world.World;
import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
import java.util.Map;
import java.util.Set;
import java.util.stream.Collectors;
import javax.annotation.Nonnull;
public class WorldMapDiscoverCommand extends AbstractPlayerCommand {
@Nonnull
private static final Message MESSAGE_COMMANDS_WORLD_MAP_ALL_ZONES_DISCOVERED = Message.translation("server.commands.worldmap.allZonesDiscovered");
@Nonnull
private final OptionalArg<String> zoneArg;
{
(, );
.zoneArg = .withOptionalArg(, , ArgTypes.STRING);
.addAliases( []{});
}
{
Map<Short, BiomeData> biomeDataMap = world.getWorldMapManager().getWorldMapSettings().getSettingsPacket().biomeDataMap;
(biomeDataMap != ) {
Set<String> zoneNames = (Set)biomeDataMap.values().stream().map((biomeData) -> biomeData.zoneName).collect(Collectors.toSet());
(!.zoneArg.provided(context)) {
context.sendMessage(Message.translation().param(, zoneNames.toString()));
(Player)store.getComponent(ref, Player.getComponentType());
playerComponent != ;
zoneNames.removeAll(playerComponent.getPlayerConfigData().getDiscoveredZones());
context.sendMessage(Message.translation().param(, zoneNames.toString()));
} {
(String).zoneArg.get(context);
(zoneName.equalsIgnoreCase()) {
(Player)store.getComponent(ref, Player.getComponentType());
playerComponent != ;
playerComponent.getWorldMapTracker().discoverZones(world, zoneNames);
context.sendMessage(MESSAGE_COMMANDS_WORLD_MAP_ALL_ZONES_DISCOVERED);
} (!zoneNames.contains(zoneName)) {
context.sendMessage(Message.translation().param(, zoneName));
context.sendMessage(Message.translation().param(, StringUtil.sortByFuzzyDistance(zoneName, zoneNames, CommandUtil.RECOMMEND_COUNT).toString()));
} {
(Player)store.getComponent(ref, Player.getComponentType());
playerComponent != ;
playerComponent.getWorldMapTracker().discoverZone(world, zoneName);
(added) {
context.sendMessage(Message.translation().param(, zoneName));
} {
context.sendMessage(Message.translation().param(, zoneName));
}
}
}
}
}
}
com/hypixel/hytale/server/core/command/commands/utility/worldmap/WorldMapReloadCommand.java
package com.hypixel.hytale.server.core.command.commands.utility.worldmap;
import com.hypixel.hytale.component.Store;
import com.hypixel.hytale.logger.HytaleLogger;
import com.hypixel.hytale.server.core.Message;
import com.hypixel.hytale.server.core.command.system.CommandContext;
import com.hypixel.hytale.server.core.command.system.basecommands.AbstractWorldCommand;
import com.hypixel.hytale.server.core.universe.world.World;
import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
import com.hypixel.hytale.server.core.universe.world.worldmap.IWorldMap;
import com.hypixel.hytale.server.core.universe.world.worldmap.WorldMapLoadException;
import java.util.logging.Level;
import javax.annotation.Nonnull;
public class WorldMapReloadCommand extends AbstractWorldCommand {
@Nonnull
private static final Message MESSAGE_COMMANDS_WORLD_MAP_CLEAR_IMAGES = Message.translation("server.commands.worldmap.clearimages");
public WorldMapReloadCommand() {
super("reload", "server.commands.worldmap.reload.desc");
}
protected void execute(@Nonnull CommandContext context, @Nonnull World world, @Nonnull Store<EntityStore> store) {
{
world.getWorldConfig().getWorldMapProvider().getGenerator(world);
world.getWorldMapManager().setGenerator(worldMap);
context.sendMessage(MESSAGE_COMMANDS_WORLD_MAP_CLEAR_IMAGES);
} (WorldMapLoadException e) {
HytaleLogger.getLogger().at(Level.SEVERE).log( + world.getName(), e);
context.sendMessage(Message.translation().param(, e.getMessage()));
}
}
}
com/hypixel/hytale/server/core/command/commands/utility/worldmap/WorldMapUndiscoverCommand.java
package com.hypixel.hytale.server.core.command.commands.utility.worldmap;
import com.hypixel.hytale.common.util.StringUtil;
import com.hypixel.hytale.component.Ref;
import com.hypixel.hytale.component.Store;
import com.hypixel.hytale.protocol.packets.worldmap.BiomeData;
import com.hypixel.hytale.server.core.Message;
import com.hypixel.hytale.server.core.command.system.CommandContext;
import com.hypixel.hytale.server.core.command.system.CommandUtil;
import com.hypixel.hytale.server.core.command.system.arguments.system.OptionalArg;
import com.hypixel.hytale.server.core.command.system.arguments.types.ArgTypes;
import com.hypixel.hytale.server.core.command.system.basecommands.AbstractPlayerCommand;
import com.hypixel.hytale.server.core.entity.entities.Player;
import com.hypixel.hytale.server.core.universe.PlayerRef;
import com.hypixel.hytale.server.core.universe.world.World;
import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
import java.util.Map;
import java.util.Set;
import java.util.stream.Collectors;
import javax.annotation.Nonnull;
public class WorldMapUndiscoverCommand extends AbstractPlayerCommand {
@Nonnull
private static final Message MESSAGE_COMMANDS_WORLD_MAP_ALL_ZONES_REMOVED_FROM_DISCOVERED = Message.translation("server.commands.worldmap.allZonesRemovedFromDiscovered");
@Nonnull
private OptionalArg<String> zoneArg;
{
(, );
.zoneArg = .withOptionalArg(, , ArgTypes.STRING);
}
{
Map<Short, BiomeData> biomeDataMap = world.getWorldMapManager().getWorldMapSettings().getSettingsPacket().biomeDataMap;
(biomeDataMap != ) {
Set<String> zoneNames = (Set)biomeDataMap.values().stream().map((biomeData) -> biomeData.zoneName).collect(Collectors.toSet());
(!.zoneArg.provided(context)) {
context.sendMessage(Message.translation().param(, zoneNames.toString()));
(Player)store.getComponent(ref, Player.getComponentType());
(playerComponent != ) {
context.sendMessage(Message.translation().param(, playerComponent.getPlayerConfigData().getDiscoveredZones().toString()));
}
} {
(String).zoneArg.get(context);
(.equalsIgnoreCase(zoneName)) {
(Player)store.getComponent(ref, Player.getComponentType());
(playerComponent != ) {
playerComponent.getWorldMapTracker().undiscoverZones(world, zoneNames);
context.sendMessage(MESSAGE_COMMANDS_WORLD_MAP_ALL_ZONES_REMOVED_FROM_DISCOVERED);
}
} (!zoneNames.contains(zoneName)) {
context.sendMessage(Message.translation().param(, zoneName));
context.sendMessage(Message.translation().param(, StringUtil.sortByFuzzyDistance(zoneName, zoneNames, CommandUtil.RECOMMEND_COUNT).toString()));
} {
(Player)store.getComponent(ref, Player.getComponentType());
(playerComponent != ) {
playerComponent.getWorldMapTracker().undiscoverZone(world, zoneName);
(removed) {
context.sendMessage(Message.translation().param(, zoneName));
} {
context.sendMessage(Message.translation().param(, zoneName));
}
}
}
}
}
}
}
com/hypixel/hytale/server/core/command/commands/utility/worldmap/WorldMapViewRadiusGetCommand.java
package com.hypixel.hytale.server.core.command.commands.utility.worldmap;
import com.hypixel.hytale.component.Ref;
import com.hypixel.hytale.component.Store;
import com.hypixel.hytale.server.core.Message;
import com.hypixel.hytale.server.core.command.system.CommandContext;
import com.hypixel.hytale.server.core.command.system.basecommands.AbstractTargetPlayerCommand;
import com.hypixel.hytale.server.core.entity.entities.Player;
import com.hypixel.hytale.server.core.universe.PlayerRef;
import com.hypixel.hytale.server.core.universe.world.World;
import com.hypixel.hytale.server.core.universe.world.WorldMapTracker;
import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
public class WorldMapViewRadiusGetCommand extends AbstractTargetPlayerCommand {
public WorldMapViewRadiusGetCommand() {
super("get", "server.commands.worldmap.viewradius.get.desc");
}
protected void execute(@Nonnull CommandContext context, @Nullable Ref<EntityStore> sourceRef, @Nonnull Ref<EntityStore> ref, @Nonnull PlayerRef playerRef, @Nonnull World world, @Nonnull Store<EntityStore> store) {
Player playerComponent = (Player)store.getComponent(ref, Player.getComponentType());
playerComponent != ;
playerComponent.getWorldMapTracker();
worldMapTracker.getViewRadiusOverride();
worldMapTracker.getEffectiveViewRadius(world);
(override != ) {
context.sendMessage(Message.translation().param(, effectiveRadius).param(, override));
} {
context.sendMessage(Message.translation().param(, effectiveRadius));
}
}
}
com/hypixel/hytale/server/core/command/commands/utility/worldmap/WorldMapViewRadiusRemoveCommand.java
package com.hypixel.hytale.server.core.command.commands.utility.worldmap;
import com.hypixel.hytale.component.Ref;
import com.hypixel.hytale.component.Store;
import com.hypixel.hytale.server.core.Message;
import com.hypixel.hytale.server.core.command.system.CommandContext;
import com.hypixel.hytale.server.core.command.system.basecommands.AbstractTargetPlayerCommand;
import com.hypixel.hytale.server.core.entity.entities.Player;
import com.hypixel.hytale.server.core.universe.PlayerRef;
import com.hypixel.hytale.server.core.universe.world.World;
import com.hypixel.hytale.server.core.universe.world.WorldMapTracker;
import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
public class WorldMapViewRadiusRemoveCommand extends AbstractTargetPlayerCommand {
public WorldMapViewRadiusRemoveCommand() {
super("remove", "server.commands.worldmap.viewradius.remove.desc");
}
protected void execute(@Nonnull CommandContext context, @Nullable Ref<EntityStore> sourceRef, @Nonnull Ref<EntityStore> ref, @Nonnull PlayerRef playerRef, @Nonnull World world, @Nonnull Store<EntityStore> store) {
Player playerComponent = (Player)store.getComponent(ref, Player.getComponentType());
playerComponent != ;
playerComponent.getWorldMapTracker();
(worldMapTracker.getViewRadiusOverride() == ) {
context.sendMessage(Message.translation());
} {
worldMapTracker.setViewRadiusOverride((Integer));
context.sendMessage(Message.translation());
}
}
}
com/hypixel/hytale/server/core/command/commands/utility/worldmap/WorldMapViewRadiusSetCommand.java
package com.hypixel.hytale.server.core.command.commands.utility.worldmap;
import com.hypixel.hytale.component.Ref;
import com.hypixel.hytale.component.Store;
import com.hypixel.hytale.server.core.Message;
import com.hypixel.hytale.server.core.command.system.CommandContext;
import com.hypixel.hytale.server.core.command.system.arguments.system.FlagArg;
import com.hypixel.hytale.server.core.command.system.arguments.system.RequiredArg;
import com.hypixel.hytale.server.core.command.system.arguments.types.ArgTypes;
import com.hypixel.hytale.server.core.command.system.basecommands.AbstractTargetPlayerCommand;
import com.hypixel.hytale.server.core.entity.entities.Player;
import com.hypixel.hytale.server.core.universe.PlayerRef;
import com.hypixel.hytale.server.core.universe.world.World;
import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
public class WorldMapViewRadiusSetCommand extends AbstractTargetPlayerCommand {
@Nonnull
private final RequiredArg<Integer> radiusArg;
@Nonnull
private final FlagArg bypassArg;
public WorldMapViewRadiusSetCommand() {
super("set", "server.commands.worldmap.viewradius.set.desc");
this.radiusArg = this.withRequiredArg("radius", "server.commands.worldmap.viewradius.set.radius.desc", ArgTypes.INTEGER);
.bypassArg = (FlagArg).withFlagArg(, ).setPermission();
}
{
(Player)store.getComponent(ref, Player.getComponentType());
playerComponent != ;
(Integer).radiusArg.get(context);
(Boolean).bypassArg.get(context);
(viewRadius < ) {
context.sendMessage(Message.translation());
} (viewRadius > && !bypass) {
context.sendMessage(Message.translation().param(, ));
} {
playerComponent.getWorldMapTracker().setViewRadiusOverride(viewRadius);
context.sendMessage(Message.translation().param(, viewRadius));
}
}
}
com/hypixel/hytale/server/core/command/commands/utility/worldmap/WorldMapViewRadiusSubCommand.java
package com.hypixel.hytale.server.core.command.commands.utility.worldmap;
import com.hypixel.hytale.server.core.command.system.basecommands.AbstractCommandCollection;
public class WorldMapViewRadiusSubCommand extends AbstractCommandCollection {
public WorldMapViewRadiusSubCommand() {
super("viewradius", "server.commands.worldmap.viewradius.desc");
this.addSubCommand(new WorldMapViewRadiusGetCommand());
this.addSubCommand(new WorldMapViewRadiusSetCommand());
this.addSubCommand(new WorldMapViewRadiusRemoveCommand());
}
}
com/hypixel/hytale/server/core/command/commands/world/SpawnBlockCommand.java
package com.hypixel.hytale.server.core.command.commands.world;
import com.hypixel.hytale.component.AddReason;
import com.hypixel.hytale.component.Holder;
import com.hypixel.hytale.component.Store;
import com.hypixel.hytale.math.vector.Vector3d;
import com.hypixel.hytale.math.vector.Vector3f;
import com.hypixel.hytale.server.core.Message;
import com.hypixel.hytale.server.core.command.system.CommandContext;
import com.hypixel.hytale.server.core.command.system.arguments.system.DefaultArg;
import com.hypixel.hytale.server.core.command.system.arguments.system.RequiredArg;
import com.hypixel.hytale.server.core.command.system.arguments.types.ArgTypes;
import com.hypixel.hytale.server.core.command.system.arguments.types.RelativeDoublePosition;
import com.hypixel.hytale.server.core.command.system.basecommands.AbstractWorldCommand;
import com.hypixel.hytale.server.core.entity.UUIDComponent;
import com.hypixel.hytale.server.core.entity.entities.BlockEntity;
import com.hypixel.hytale.server.core.modules.entity.component.TransformComponent;
import com.hypixel.hytale.server.core.modules.time.TimeResource;
import com.hypixel.hytale.server.core.universe.world.World;
import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
import javax.annotation.Nonnull;
public class SpawnBlockCommand extends AbstractWorldCommand {
@Nonnull
private final RequiredArg<String> blockArg;
@Nonnull
private final RequiredArg<RelativeDoublePosition> positionArg;
@Nonnull
DefaultArg<Vector3f> rotationArg;
{
(, );
.blockArg = .withRequiredArg(, , ArgTypes.BLOCK_TYPE_KEY);
.positionArg = .withRequiredArg(, , ArgTypes.RELATIVE_POSITION);
.rotationArg = .withDefaultArg(, , ArgTypes.ROTATION, Vector3f.FORWARD, );
}
{
(String)context.get(.blockArg);
((RelativeDoublePosition)context.get(.positionArg)).getRelativePosition(context, world, store);
(Vector3f).rotationArg.get(context);
(TimeResource)world.getEntityStore().getStore().getResource(TimeResource.getResourceType());
Holder<EntityStore> blockEntityHolder = BlockEntity.assembleDefaultBlockEntity(timeResource, blockTypeKey, position);
(TransformComponent)blockEntityHolder.ensureAndGetComponent(TransformComponent.getComponentType());
transformComponent.setPosition(position);
transformComponent.setRotation(rotation);
(UUIDComponent)blockEntityHolder.getComponent(UUIDComponent.getComponentType());
uuidComponent == ? : uuidComponent.getUuid().toString();
world.getEntityStore().getStore().addEntity(blockEntityHolder, AddReason.SPAWN);
context.sendMessage(Message.translation().param(, entityIdString));
}
}
com/hypixel/hytale/server/core/command/commands/world/chunk/ChunkCommand.java
package com.hypixel.hytale.server.core.command.commands.world.chunk;
import com.hypixel.hytale.server.core.command.system.basecommands.AbstractCommandCollection;
public class ChunkCommand extends AbstractCommandCollection {
public ChunkCommand() {
super("chunk", "server.commands.chunk.desc");
this.addAliases(new String[]{"chunks"});
this.addSubCommand(new ChunkFixHeightMapCommand());
this.addSubCommand(new ChunkForceTickCommand());
this.addSubCommand(new ChunkInfoCommand());
this.addSubCommand(new ChunkLightingCommand());
this.addSubCommand(new ChunkLoadCommand());
this.addSubCommand(new ChunkLoadedCommand());
this.addSubCommand(new ChunkMarkSaveCommand());
this.addSubCommand(new ChunkMaxSendRateCommand());
this.addSubCommand(new ChunkRegenerateCommand());
.addSubCommand( ());
.addSubCommand( ());
.addSubCommand( ());
.addSubCommand( ());
}
}
com/hypixel/hytale/server/core/command/commands/world/chunk/ChunkFixHeightMapCommand.java
package com.hypixel.hytale.server.core.command.commands.world.chunk;
import com.hypixel.hytale.component.Ref;
import com.hypixel.hytale.component.Store;
import com.hypixel.hytale.math.util.ChunkUtil;
import com.hypixel.hytale.math.vector.Vector2i;
import com.hypixel.hytale.server.core.HytaleServer;
import com.hypixel.hytale.server.core.Message;
import com.hypixel.hytale.server.core.command.system.CommandContext;
import com.hypixel.hytale.server.core.command.system.arguments.system.RequiredArg;
import com.hypixel.hytale.server.core.command.system.arguments.types.ArgTypes;
import com.hypixel.hytale.server.core.command.system.arguments.types.RelativeChunkPosition;
import com.hypixel.hytale.server.core.command.system.basecommands.AbstractWorldCommand;
import com.hypixel.hytale.server.core.universe.world.World;
import com.hypixel.hytale.server.core.universe.world.chunk.BlockChunk;
import com.hypixel.hytale.server.core.universe.world.chunk.WorldChunk;
import com.hypixel.hytale.server.core.universe.world.lighting.ChunkLightingManager;
import com.hypixel.hytale.server.core.universe.world.storage.ChunkStore;
import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
import java.util.concurrent.ScheduledFuture;
import java.util.concurrent.TimeUnit;
import javax.annotation.Nonnull;
public class ChunkFixHeightMapCommand extends AbstractWorldCommand {
@Nonnull
private static final Message MESSAGE_COMMANDS_ERRORS_CHUNK_NOT_LOADED Message.translation();
Message.translation();
Message.translation();
Message.translation();
Message.translation();
Message.translation();
Message.translation();
RequiredArg<RelativeChunkPosition> chunkPosArg;
{
(, );
.chunkPosArg = .withRequiredArg(, , ArgTypes.RELATIVE_CHUNK_POSITION);
}
{
(RelativeChunkPosition).chunkPosArg.get(context);
chunkPosition.getChunkPosition(context, store);
fixHeightMap(context, world, position.x, position.y);
}
{
world.getChunkLighting();
world.getChunkStore();
Store<ChunkStore> chunkStoreStore = chunkStore.getStore();
ChunkUtil.indexChunk(chunkX, chunkZ);
Ref<ChunkStore> chunkRef = chunkStore.getChunkReference(chunkIndex);
(chunkRef != && chunkRef.isValid()) {
(WorldChunk)chunkStoreStore.getComponent(chunkRef, WorldChunk.getComponentType());
worldChunkComponent != ;
(BlockChunk)chunkStoreStore.getComponent(chunkRef, BlockChunk.getComponentType());
blockChunkComponent != ;
context.sendMessage(MESSAGE_COMMANDS_CHUNK_FIXHEIGHTMAP_STARTED);
blockChunkComponent.updateHeightmap();
context.sendMessage(MESSAGE_COMMANDS_CHUNK_FIXHEIGHTMAP_DONE);
context.sendMessage(MESSAGE_COMMANDS_CHUNK_FIXHEIGHTMAP_INVALIDATING_LIGHTING);
( ; chunkSectionY < ; ++chunkSectionY) {
blockChunkComponent.getSectionAtIndex(chunkSectionY).invalidateLocalLight();
}
chunkLighting.invalidateLightInChunk(worldChunkComponent);
context.sendMessage(MESSAGE_COMMANDS_CHUNK_FIXHEIGHTMAP_DONE);
context.sendMessage(MESSAGE_COMMANDS_CHUNK_FIXHEIGHTMAP_WAITING_FOR_LIGHTING.param(, chunkX).param(, chunkZ));
[] count = []{};
ScheduledFuture<?>[] scheduledFuture = [];
scheduledFuture[] = HytaleServer.SCHEDULED_EXECUTOR.scheduleWithFixedDelay(() -> {
(chunkLighting.isQueued(chunkX, chunkZ)) {
count[];
count[];
count[] = var10003 + ;
(var10000 > ) {
scheduledFuture[].cancel();
context.sendMessage(MESSAGE_COMMANDS_CHUNK_FIXHEIGHTMAP_LIGHTING_ERROR.param(, chunkX).param(, chunkZ));
}
} {
world.getNotificationHandler().updateChunk(chunkIndex);
context.sendMessage(MESSAGE_COMMANDS_CHUNK_FIXHEIGHTMAP_LIGHTING_FINISHED.param(, chunkX).param(, chunkZ));
scheduledFuture[].cancel();
}
}, , , TimeUnit.SECONDS);
} {
context.sendMessage(MESSAGE_COMMANDS_ERRORS_CHUNK_NOT_LOADED.param(, chunkX).param(, chunkZ).param(, world.getName()));
}
}
}
com/hypixel/hytale/server/core/command/commands/world/chunk/ChunkForceTickCommand.java
package com.hypixel.hytale.server.core.command.commands.world.chunk;
import com.hypixel.hytale.component.Ref;
import com.hypixel.hytale.component.Store;
import com.hypixel.hytale.math.util.ChunkUtil;
import com.hypixel.hytale.math.vector.Vector2i;
import com.hypixel.hytale.server.core.Message;
import com.hypixel.hytale.server.core.command.system.CommandContext;
import com.hypixel.hytale.server.core.command.system.arguments.system.RequiredArg;
import com.hypixel.hytale.server.core.command.system.arguments.types.ArgTypes;
import com.hypixel.hytale.server.core.command.system.arguments.types.RelativeChunkPosition;
import com.hypixel.hytale.server.core.command.system.basecommands.AbstractWorldCommand;
import com.hypixel.hytale.server.core.universe.world.World;
import com.hypixel.hytale.server.core.universe.world.chunk.BlockChunk;
import com.hypixel.hytale.server.core.universe.world.storage.ChunkStore;
import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
import javax.annotation.Nonnull;
public class ChunkForceTickCommand extends AbstractWorldCommand {
@Nonnull
private static final Message MESSAGE_COMMANDS_ERRORS_CHUNK_NOT_LOADED = Message.translation("server.commands.errors.chunkNotLoaded");
@Nonnull
private static final Message MESSAGE_COMMANDS_FORCECHUNKTICK_CHUNK_LOAD_USAGE Message.translation();
Message.translation();
RequiredArg<RelativeChunkPosition> chunkPosArg;
{
(, );
.chunkPosArg = .withRequiredArg(, , ArgTypes.RELATIVE_CHUNK_POSITION);
}
{
(RelativeChunkPosition).chunkPosArg.get(context);
chunkPosition.getChunkPosition(context, store);
world.getChunkStore();
Store<ChunkStore> chunkStoreStore = chunkStore.getStore();
ChunkUtil.indexChunk(position.x, position.y);
Ref<ChunkStore> chunkRef = chunkStore.getChunkReference(chunkIndex);
(chunkRef != && chunkRef.isValid()) {
(BlockChunk)chunkStoreStore.getComponent(chunkRef, BlockChunk.getComponentType());
blockChunkComponent != ;
( ; x < ; ++x) {
( ; y < ; ++y) {
( ; z < ; ++z) {
blockChunkComponent.setTicking(x, y, z, );
}
}
}
context.sendMessage(MESSAGE_COMMANDS_FORCECHUNKTICK_BLOCKS_IN_CHUNK_TICK.param(, position.x).param(, position.y));
} {
context.sendMessage(MESSAGE_COMMANDS_ERRORS_CHUNK_NOT_LOADED.param(, position.x).param(, position.y).param(, world.getName()));
context.sendMessage(MESSAGE_COMMANDS_FORCECHUNKTICK_CHUNK_LOAD_USAGE.param(, position.x).param(, position.y));
}
}
}
com/hypixel/hytale/server/core/command/commands/world/chunk/ChunkInfoCommand.java
package com.hypixel.hytale.server.core.command.commands.world.chunk;
import com.hypixel.hytale.component.Ref;
import com.hypixel.hytale.component.Store;
import com.hypixel.hytale.math.util.ChunkUtil;
import com.hypixel.hytale.math.vector.Vector2i;
import com.hypixel.hytale.server.core.Message;
import com.hypixel.hytale.server.core.command.system.CommandContext;
import com.hypixel.hytale.server.core.command.system.arguments.system.RequiredArg;
import com.hypixel.hytale.server.core.command.system.arguments.types.ArgTypes;
import com.hypixel.hytale.server.core.command.system.arguments.types.RelativeChunkPosition;
import com.hypixel.hytale.server.core.command.system.basecommands.AbstractWorldCommand;
import com.hypixel.hytale.server.core.universe.world.World;
import com.hypixel.hytale.server.core.universe.world.chunk.BlockChunk;
import com.hypixel.hytale.server.core.universe.world.chunk.BlockComponentChunk;
import com.hypixel.hytale.server.core.universe.world.chunk.ChunkFlag;
import com.hypixel.hytale.server.core.universe.world.chunk.EntityChunk;
import com.hypixel.hytale.server.core.universe.world.chunk.WorldChunk;
import com.hypixel.hytale.server.core.universe.world.chunk.section.BlockSection;
import com.hypixel.hytale.server.core.universe.world.storage.ChunkStore;
import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
import javax.annotation.Nonnull;
public class ChunkInfoCommand extends AbstractWorldCommand {
@Nonnull
private static final Message Message.translation();
Message.translation();
RequiredArg<RelativeChunkPosition> chunkPosArg;
{
(, );
.chunkPosArg = .withRequiredArg(, , ArgTypes.RELATIVE_CHUNK_POSITION);
}
{
(RelativeChunkPosition).chunkPosArg.get(context);
chunkPosition.getChunkPosition(context, store);
world.getChunkStore();
Store<ChunkStore> chunkStoreStore = chunkStore.getStore();
ChunkUtil.indexChunk(position.x, position.y);
Ref<ChunkStore> chunkRef = chunkStore.getChunkReference(chunkIndex);
(chunkRef != && chunkRef.isValid()) {
(WorldChunk)chunkStoreStore.getComponent(chunkRef, WorldChunk.getComponentType());
worldChunkComponent != ;
(BlockChunk)chunkStoreStore.getComponent(chunkRef, BlockChunk.getComponentType());
blockChunkComponent != ;
Message.translation().param(, position.x).param(, position.y).param(, worldChunkComponent.is(ChunkFlag.START_INIT)).param(, worldChunkComponent.is(ChunkFlag.INIT)).param(, worldChunkComponent.is(ChunkFlag.NEWLY_GENERATED)).param(, worldChunkComponent.is(ChunkFlag.ON_DISK)).param(, worldChunkComponent.is(ChunkFlag.TICKING)).param(, worldChunkComponent.shouldKeepLoaded()).param(, worldChunkComponent.getNeedsSaving()).param(, blockChunkComponent.getNeedsSaving());
( ; i < ; ++i) {
blockChunkComponent.getSectionAtIndex(i);
msg.insert(Message.translation().param(, i));
(section BlockSection) {
msg.insert(Message.translation().param(, section.getChunkSection().getClass().getSimpleName()));
}
msg.insert(Message.translation().param(, section.hasTicking()).param(, section.isSolidAir()).param(, section.count()).param(, section.valueCounts().toString()));
}
(BlockComponentChunk)chunkStoreStore.getComponent(chunkRef, BlockComponentChunk.getComponentType());
(EntityChunk)chunkStoreStore.getComponent(chunkRef, EntityChunk.getComponentType());
(blockStateChunk != && entityChunk != ) {
msg.insert(Message.translation().param(, blockStateChunk.getNeedsSaving()).param(, blockStateChunk.getEntityHolders().size() + blockStateChunk.getEntityReferences().size()).param(, entityChunk.getNeedsSaving()).param(, entityChunk.getEntityHolders().size() + entityChunk.getEntityReferences().size()));
}
context.sendMessage(msg);
} {
context.sendMessage(MESSAGE_GENERAL_CHUNK_NOT_LOADED.param(, position.x).param(, position.y));
context.sendMessage(MESSAGE_COMMANDS_CHUNKINFO_LOAD_USAGE.param(, position.x).param(, position.y));
}
}
}
com/hypixel/hytale/server/core/command/commands/world/chunk/ChunkLightingCommand.java
package com.hypixel.hytale.server.core.command.commands.world.chunk;
import com.hypixel.hytale.component.Ref;
import com.hypixel.hytale.component.Store;
import com.hypixel.hytale.logger.HytaleLogger;
import com.hypixel.hytale.math.util.ChunkUtil;
import com.hypixel.hytale.math.vector.Vector2i;
import com.hypixel.hytale.math.vector.Vector3i;
import com.hypixel.hytale.server.core.Message;
import com.hypixel.hytale.server.core.command.system.CommandContext;
import com.hypixel.hytale.server.core.command.system.arguments.system.RequiredArg;
import com.hypixel.hytale.server.core.command.system.arguments.types.ArgTypes;
import com.hypixel.hytale.server.core.command.system.arguments.types.RelativeIntPosition;
import com.hypixel.hytale.server.core.command.system.basecommands.AbstractWorldCommand;
import com.hypixel.hytale.server.core.universe.world.World;
import com.hypixel.hytale.server.core.universe.world.chunk.BlockChunk;
import com.hypixel.hytale.server.core.universe.world.chunk.section.BlockSection;
import com.hypixel.hytale.server.core.universe.world.storage.ChunkStore;
import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
import java.util.logging.Level;
import javax.annotation.Nonnull;
public class ChunkLightingCommand extends AbstractWorldCommand {
@Nonnull
private static final Message MESSAGE_COMMANDS_ERRORS_CHUNK_NOT_LOADED = Message.translation("server.commands.errors.chunkNotLoaded");
Message.translation();
Message.translation();
Message.translation();
RequiredArg<RelativeIntPosition> positionArg;
{
(, );
.positionArg = .withRequiredArg(, , ArgTypes.RELATIVE_BLOCK_POSITION);
}
{
((RelativeIntPosition).positionArg.get(context)).getBlockPosition(context, store);
world.getChunkStore();
Store<ChunkStore> chunkStoreStore = chunkStore.getStore();
(ChunkUtil.chunkCoordinate(position.getX()), ChunkUtil.chunkCoordinate(position.getZ()));
ChunkUtil.indexChunk(chunkPos.x, chunkPos.y);
Ref<ChunkStore> chunkRef = chunkStore.getChunkReference(chunkIndex);
(chunkRef != && chunkRef.isValid()) {
(BlockChunk)chunkStoreStore.getComponent(chunkRef, BlockChunk.getComponentType());
blockChunkComponent != ;
{
blockChunkComponent.getSectionAtBlockY(position.y);
section.getLocalLight().octreeToString();
HytaleLogger.getLogger().at(Level.INFO).log(, position.x, position.y, position.z, s);
context.sendMessage(MESSAGE_COMMANDS_CHUNKINFO_SERIALIZED);
} (Throwable t) {
HytaleLogger.getLogger().at(Level.SEVERE).log(, t);
context.sendMessage(MESSAGE_COMMANDS_CHUNKINFO_SERIALIZED_FAILED);
}
} {
context.sendMessage(MESSAGE_COMMANDS_ERRORS_CHUNK_NOT_LOADED.param(, chunkPos.x).param(, chunkPos.y).param(, world.getName()));
context.sendMessage(MESSAGE_COMMANDS_CHUNKINFO_LOAD_USAGE.param(, chunkPos.x).param(, chunkPos.y));
}
}
}
com/hypixel/hytale/server/core/command/commands/world/chunk/ChunkLoadCommand.java
package com.hypixel.hytale.server.core.command.commands.world.chunk;
import com.hypixel.hytale.component.Ref;
import com.hypixel.hytale.component.Store;
import com.hypixel.hytale.math.util.ChunkUtil;
import com.hypixel.hytale.math.vector.Vector2i;
import com.hypixel.hytale.server.core.Message;
import com.hypixel.hytale.server.core.command.system.CommandContext;
import com.hypixel.hytale.server.core.command.system.arguments.system.FlagArg;
import com.hypixel.hytale.server.core.command.system.arguments.system.RequiredArg;
import com.hypixel.hytale.server.core.command.system.arguments.types.ArgTypes;
import com.hypixel.hytale.server.core.command.system.arguments.types.RelativeChunkPosition;
import com.hypixel.hytale.server.core.command.system.basecommands.AbstractWorldCommand;
import com.hypixel.hytale.server.core.universe.world.World;
import com.hypixel.hytale.server.core.universe.world.storage.ChunkStore;
import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
import javax.annotation.Nonnull;
public class ChunkLoadCommand extends AbstractWorldCommand {
@Nonnull
private static final Message MESSAGE_COMMANDS_CHUNK_LOAD_ALREADY_LOADED = Message.translation("server.commands.chunk.load.alreadyLoaded");
@Nonnull
private static final Message MESSAGE_COMMANDS_CHUNK_LOAD_LOADING Message.translation();
Message.translation();
RequiredArg<RelativeChunkPosition> chunkPosArg;
FlagArg markDirtyArg;
{
(, );
.chunkPosArg = .withRequiredArg(, , ArgTypes.RELATIVE_CHUNK_POSITION);
.markDirtyArg = .withFlagArg(, );
}
{
(RelativeChunkPosition).chunkPosArg.get(context);
chunkPosition.getChunkPosition(context, store);
world.getChunkStore();
ChunkUtil.indexChunk(position.x, position.y);
Ref<ChunkStore> chunkRef = chunkStore.getChunkReference(chunkIndex);
(chunkRef != && chunkRef.isValid()) {
context.sendMessage(MESSAGE_COMMANDS_CHUNK_LOAD_ALREADY_LOADED.param(, position.x).param(, position.y).param(, world.getName()));
} {
context.sendMessage(MESSAGE_COMMANDS_CHUNK_LOAD_LOADING.param(, position.x).param(, position.y).param(, world.getName()));
world.getChunkAsync(position.x, position.y).thenAccept((worldChunk) -> world.execute(() -> {
(.markDirtyArg.provided(context)) {
worldChunk.markNeedsSaving();
}
context.sendMessage(MESSAGE_COMMANDS_CHUNK_LOAD_LOADED.param(, position.x).param(, position.y).param(, world.getName()));
}));
}
}
}
com/hypixel/hytale/server/core/command/commands/world/chunk/ChunkLoadedCommand.java
package com.hypixel.hytale.server.core.command.commands.world.chunk;
import com.hypixel.hytale.component.Ref;
import com.hypixel.hytale.component.Store;
import com.hypixel.hytale.server.core.command.system.CommandContext;
import com.hypixel.hytale.server.core.command.system.basecommands.AbstractTargetPlayerCommand;
import com.hypixel.hytale.server.core.modules.entity.player.ChunkTracker;
import com.hypixel.hytale.server.core.universe.PlayerRef;
import com.hypixel.hytale.server.core.universe.world.World;
import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
public class ChunkLoadedCommand extends AbstractTargetPlayerCommand {
public ChunkLoadedCommand() {
super("loaded", "server.commands.chunk.loaded.desc");
}
protected void execute(@Nonnull CommandContext context, @Nullable Ref<EntityStore> sourceRef, @Nonnull Ref<EntityStore> ref, @Nonnull PlayerRef playerRef, @Nonnull World world, @Nonnull Store<EntityStore> store) {
ChunkTracker chunkTracker = (ChunkTracker)store.getComponent(ref, ChunkTracker.getComponentType());
assert chunkTracker != null;
context.sendMessage(chunkTracker.getLoadedChunksMessage());
}
}
com/hypixel/hytale/server/core/command/commands/world/chunk/ChunkMarkSaveCommand.java
package com.hypixel.hytale.server.core.command.commands.world.chunk;
import com.hypixel.hytale.component.Ref;
import com.hypixel.hytale.component.Store;
import com.hypixel.hytale.math.util.ChunkUtil;
import com.hypixel.hytale.math.vector.Vector2i;
import com.hypixel.hytale.server.core.Message;
import com.hypixel.hytale.server.core.command.system.CommandContext;
import com.hypixel.hytale.server.core.command.system.arguments.system.RequiredArg;
import com.hypixel.hytale.server.core.command.system.arguments.types.ArgTypes;
import com.hypixel.hytale.server.core.command.system.arguments.types.RelativeChunkPosition;
import com.hypixel.hytale.server.core.command.system.basecommands.AbstractWorldCommand;
import com.hypixel.hytale.server.core.universe.world.World;
import com.hypixel.hytale.server.core.universe.world.chunk.WorldChunk;
import com.hypixel.hytale.server.core.universe.world.storage.ChunkStore;
import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
import javax.annotation.Nonnull;
public class ChunkMarkSaveCommand extends AbstractWorldCommand {
@Nonnull
private static final Message MESSAGE_COMMANDS_CHUNK_MARKSAVE_MARKING_ALREADY_LOADED = Message.translation("server.commands.chunk.marksave.markingAlreadyLoaded");
@Nonnull
private static final Message MESSAGE_COMMANDS_CHUNK_LOAD_LOADING Message.translation();
Message.translation();
RequiredArg<RelativeChunkPosition> chunkPosArg;
{
(, );
.chunkPosArg = .withRequiredArg(, , ArgTypes.RELATIVE_CHUNK_POSITION);
}
{
(RelativeChunkPosition).chunkPosArg.get(context);
chunkPosition.getChunkPosition(context, store);
world.getChunkStore();
Store<ChunkStore> chunkStoreStore = chunkStore.getStore();
ChunkUtil.indexChunk(position.x, position.y);
Ref<ChunkStore> chunkRef = chunkStore.getChunkReference(chunkIndex);
(chunkRef != && chunkRef.isValid()) {
(WorldChunk)chunkStoreStore.getComponent(chunkRef, WorldChunk.getComponentType());
worldChunkComponent != ;
worldChunkComponent.markNeedsSaving();
context.sendMessage(MESSAGE_COMMANDS_CHUNK_MARKSAVE_MARKING_ALREADY_LOADED.param(, position.x).param(, position.y).param(, world.getName()));
} {
context.sendMessage(MESSAGE_COMMANDS_CHUNK_LOAD_LOADING.param(, position.x).param(, position.y).param(, world.getName()));
world.getChunkAsync(position.x, position.y).thenAccept((worldChunk) -> world.execute(() -> {
worldChunk.markNeedsSaving();
context.sendMessage(MESSAGE_COMMANDS_CHUNK_MARKSAVE_LOADED.param(, position.x).param(, position.y).param(, world.getName()));
}));
}
}
}
com/hypixel/hytale/server/core/command/commands/world/chunk/ChunkMaxSendRateCommand.java
package com.hypixel.hytale.server.core.command.commands.world.chunk;
import com.hypixel.hytale.component.Ref;
import com.hypixel.hytale.component.Store;
import com.hypixel.hytale.server.core.Message;
import com.hypixel.hytale.server.core.command.system.CommandContext;
import com.hypixel.hytale.server.core.command.system.arguments.system.OptionalArg;
import com.hypixel.hytale.server.core.command.system.arguments.types.ArgTypes;
import com.hypixel.hytale.server.core.command.system.basecommands.AbstractTargetPlayerCommand;
import com.hypixel.hytale.server.core.modules.entity.player.ChunkTracker;
import com.hypixel.hytale.server.core.universe.PlayerRef;
import com.hypixel.hytale.server.core.universe.world.World;
import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
public class ChunkMaxSendRateCommand extends AbstractTargetPlayerCommand {
@Nonnull
private static final Message MESSAGE_COMMANDS_CHUNK_MAXSENDRATE_SEC_SET = Message.translation("server.commands.chunk.maxsendrate.sec.set");
@Nonnull
private static final Message MESSAGE_COMMANDS_CHUNK_MAXSENDRATE_TICK_SET = Message.translation("server.commands.chunk.maxsendrate.tick.set");
@Nonnull
Message.translation();
OptionalArg<Integer> secArg;
OptionalArg<Integer> tickArg;
{
(, );
.secArg = .withOptionalArg(, , ArgTypes.INTEGER);
.tickArg = .withOptionalArg(, , ArgTypes.INTEGER);
}
{
(ChunkTracker)store.getComponent(ref, ChunkTracker.getComponentType());
chunkTracker != ;
(.secArg.provided(context)) {
(Integer).secArg.get(context);
chunkTracker.setMaxChunksPerSecond(sec);
context.sendMessage(MESSAGE_COMMANDS_CHUNK_MAXSENDRATE_SEC_SET.param(, sec));
}
(.tickArg.provided(context)) {
(Integer).tickArg.get(context);
chunkTracker.setMaxChunksPerTick(tick);
context.sendMessage(MESSAGE_COMMANDS_CHUNK_MAXSENDRATE_TICK_SET.param(, tick));
}
context.sendMessage(MESSAGE_COMMANDS_CHUNK_MAXSENDRATE_SUMMARY.param(, chunkTracker.getMaxChunksPerSecond()).param(, chunkTracker.getMaxChunksPerTick()));
}
}
com/hypixel/hytale/server/core/command/commands/world/chunk/ChunkRegenerateCommand.java
package com.hypixel.hytale.server.core.command.commands.world.chunk;
import com.hypixel.hytale.component.Store;
import com.hypixel.hytale.math.util.ChunkUtil;
import com.hypixel.hytale.math.vector.Vector2i;
import com.hypixel.hytale.server.core.Message;
import com.hypixel.hytale.server.core.command.system.CommandContext;
import com.hypixel.hytale.server.core.command.system.arguments.system.RequiredArg;
import com.hypixel.hytale.server.core.command.system.arguments.types.ArgTypes;
import com.hypixel.hytale.server.core.command.system.arguments.types.RelativeChunkPosition;
import com.hypixel.hytale.server.core.command.system.basecommands.AbstractWorldCommand;
import com.hypixel.hytale.server.core.universe.world.World;
import com.hypixel.hytale.server.core.universe.world.storage.ChunkStore;
import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
import javax.annotation.Nonnull;
public class ChunkRegenerateCommand extends AbstractWorldCommand {
@Nonnull
private static final Message MESSAGE_COMMANDS_CHUNK_REGENERATE_SUCCESS = Message.translation("server.commands.chunk.regenerate.success");
@Nonnull
private final RequiredArg<RelativeChunkPosition> chunkPosArg;
public ChunkRegenerateCommand() {
super("regenerate", "server.commands.chunk.regenerate.desc", );
.chunkPosArg = .withRequiredArg(, , ArgTypes.RELATIVE_CHUNK_POSITION);
}
{
((RelativeChunkPosition).chunkPosArg.get(context)).getChunkPosition(context, store);
ChunkUtil.indexChunk(chunkPosition.x, chunkPosition.y);
world.getChunkStore();
chunkStore.getChunkReferenceAsync(chunkIndex, ).thenAccept((chunkRef) -> world.execute(() -> context.sendMessage(MESSAGE_COMMANDS_CHUNK_REGENERATE_SUCCESS.param(, chunkPosition.x).param(, chunkPosition.y).param(, world.getName()))));
}
}
com/hypixel/hytale/server/core/command/commands/world/chunk/ChunkResendCommand.java
package com.hypixel.hytale.server.core.command.commands.world.chunk;
import com.hypixel.hytale.component.Ref;
import com.hypixel.hytale.component.Store;
import com.hypixel.hytale.math.iterator.SpiralIterator;
import com.hypixel.hytale.math.util.MathUtil;
import com.hypixel.hytale.math.vector.Vector3d;
import com.hypixel.hytale.server.core.Message;
import com.hypixel.hytale.server.core.command.system.CommandContext;
import com.hypixel.hytale.server.core.command.system.arguments.system.FlagArg;
import com.hypixel.hytale.server.core.command.system.basecommands.AbstractTargetPlayerCommand;
import com.hypixel.hytale.server.core.entity.entities.Player;
import com.hypixel.hytale.server.core.modules.entity.component.TransformComponent;
import com.hypixel.hytale.server.core.modules.entity.player.ChunkTracker;
import com.hypixel.hytale.server.core.universe.PlayerRef;
import com.hypixel.hytale.server.core.universe.world.World;
import com.hypixel.hytale.server.core.universe.world.chunk.BlockChunk;
import com.hypixel.hytale.server.core.universe.world.storage.ChunkStore;
import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
public class ChunkResendCommand extends AbstractTargetPlayerCommand {
@Nonnull
private static final Message MESSAGE_COMMANDS_CHUNK_RESEND_UNLOADED_ALL = Message.translation("server.commands.chunk.resend.unloadedAll");
.withFlagArg(, );
{
(, );
}
{
(Player)store.getComponent(ref, Player.getComponentType());
playerComponent != ;
(ChunkTracker)store.getComponent(ref, ChunkTracker.getComponentType());
chunkTrackerComponent != ;
(TransformComponent)store.getComponent(ref, TransformComponent.getComponentType());
transformComponent != ;
transformComponent.getPosition();
MathUtil.floor(position.getX()) >> ;
MathUtil.floor(position.getZ()) >> ;
(.clearCacheArg.provided(context)) {
world.getChunkStore();
Store<ChunkStore> chunkStoreStore = chunkStore.getStore();
(chunkX, chunkZ, playerComponent.getViewRadius());
(iterator.hasNext()) {
iterator.next();
Ref<ChunkStore> chunkRef = chunkStore.getChunkReference(chunkIndex);
(chunkRef != && chunkRef.isValid()) {
(BlockChunk)chunkStoreStore.getComponent(chunkRef, BlockChunk.getComponentType());
(blockChunkComponent != ) {
( ; y < ; ++y) {
blockChunkComponent.invalidateChunkSection(y);
}
}
}
}
}
chunkTrackerComponent.unloadAll(playerRef);
context.sendMessage(MESSAGE_COMMANDS_CHUNK_RESEND_UNLOADED_ALL);
}
}
com/hypixel/hytale/server/core/command/commands/world/chunk/ChunkTintCommand.java
package com.hypixel.hytale.server.core.command.commands.world.chunk;
import com.hypixel.hytale.codec.Codec;
import com.hypixel.hytale.codec.KeyedCodec;
import com.hypixel.hytale.codec.builder.BuilderCodec;
import com.hypixel.hytale.codec.codecs.EnumCodec;
import com.hypixel.hytale.codec.validation.Validators;
import com.hypixel.hytale.component.Ref;
import com.hypixel.hytale.component.Store;
import com.hypixel.hytale.math.util.ChunkUtil;
import com.hypixel.hytale.math.util.MathUtil;
import com.hypixel.hytale.math.vector.Vector3d;
import com.hypixel.hytale.protocol.packets.interface_.CustomPageLifetime;
import com.hypixel.hytale.protocol.packets.interface_.CustomUIEventBindingType;
import com.hypixel.hytale.server.core.Message;
import com.hypixel.hytale.server.core.command.system.CommandContext;
import com.hypixel.hytale.server.core.command.system.CommandManager;
import com.hypixel.hytale.server.core.command.system.arguments.system.DefaultArg;
import com.hypixel.hytale.server.core.command.system.arguments.system.FlagArg;
import com.hypixel.hytale.server.core.command.system.arguments.system.RequiredArg;
import com.hypixel.hytale.server.core.command.system.arguments.types.ArgTypes;
import com.hypixel.hytale.server.core.command.system.basecommands.AbstractPlayerCommand;
import com.hypixel.hytale.server.core.entity.entities.Player;
import com.hypixel.hytale.server.core.entity.entities.player.pages.InteractiveCustomUIPage;
import com.hypixel.hytale.server.core.modules.entity.component.TransformComponent;
import com.hypixel.hytale.server.core.ui.builder.EventData;
import com.hypixel.hytale.server.core.ui.builder.UICommandBuilder;
import com.hypixel.hytale.server.core.ui.builder.UIEventBuilder;
com.hypixel.hytale.server.core.universe.PlayerRef;
com.hypixel.hytale.server.core.universe.world.World;
com.hypixel.hytale.server.core.universe.world.accessor.ChunkAccessor;
com.hypixel.hytale.server.core.universe.world.accessor.LocalCachedChunkAccessor;
com.hypixel.hytale.server.core.universe.world.chunk.BlockChunk;
com.hypixel.hytale.server.core.universe.world.chunk.WorldChunk;
com.hypixel.hytale.server.core.universe.world.storage.ChunkStore;
com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
it.unimi.dsi.fastutil.longs.Long2IntMap;
it.unimi.dsi.fastutil.longs.Long2IntOpenHashMap;
it.unimi.dsi.fastutil.longs.LongOpenHashSet;
javax.annotation.Nonnull;
{
;
;
Message.translation();
Message.translation();
Message.translation();
RequiredArg<Integer> colorArg;
DefaultArg<Integer> radiusArg;
DefaultArg<Double> sigmaArg;
FlagArg blurArg;
{
(, );
.colorArg = .withRequiredArg(, , ArgTypes.COLOR);
.radiusArg = (DefaultArg).withDefaultArg(, , ArgTypes.INTEGER, , ).addValidator(Validators.greaterThan());
.sigmaArg = (DefaultArg).withDefaultArg(, , ArgTypes.DOUBLE, , ).addValidator(Validators.greaterThan());
.blurArg = .withFlagArg(, );
.addUsageVariant( ());
}
{
(Integer).colorArg.get(context);
(TransformComponent)store.getComponent(ref, TransformComponent.getComponentType());
transformComponent != ;
transformComponent.getPosition();
MathUtil.floor(position.getX()) >> ;
MathUtil.floor(position.getZ()) >> ;
world.getChunkStore();
Store<ChunkStore> chunkStoreStore = chunkStore.getStore();
();
;
;
ChunkUtil.indexChunk(chunkX, chunkZ);
Ref<ChunkStore> chunkRef = chunkStore.getChunkReference(chunkIndex);
(chunkRef != && chunkRef.isValid()) {
(BlockChunk)chunkStoreStore.getComponent(chunkRef, BlockChunk.getComponentType());
(blockChunk != ) {
( ; x < ; ++x) {
( ; z < ; ++z) {
blockChunk.setTint(x, z, color);
}
}
updateChunks.add(chunkIndex);
}
(.blurArg.provided(context)) {
radius = (Integer).radiusArg.get(context);
sigma = (Double).sigmaArg.get(context);
[] matrix = gaussianMatrix(sigma, radius);
chunkX << ;
chunkZ << ;
();
LocalCachedChunkAccessor.atWorldCoords(world, blockX, blockZ, + radius * );
( -radius; x <= + radius; ++x) {
( -radius; z <= + radius; ++z) {
blockX + x;
blockZ + z;
blur(accessor, radius, matrix, offsetX, offsetZ);
newTintMap.put(MathUtil.packLong(offsetX, offsetZ), blurred);
}
}
(Long2IntMap.Entry entry : newTintMap.long2IntEntrySet()) {
entry.getLongKey();
MathUtil.unpackLeft(key);
MathUtil.unpackRight(key);
ChunkUtil.indexChunkFromBlock(x, z);
Ref<ChunkStore> chunkRef = chunkStore.getChunkReference(chunkIndex);
(chunkRef != && chunkRef.isValid()) {
(BlockChunk)chunkStoreStore.getComponent(chunkRef, BlockChunk.getComponentType());
(blockChunk != ) {
blockChunk.setTint(x, z, entry.getIntValue());
updateChunks.add(chunkIndex);
}
}
}
}
updateChunks.forEach((chunkIndexx) -> world.getNotificationHandler().updateChunk(chunkIndexx));
(.blurArg.provided(context)) {
context.sendMessage(MESSAGE_COMMANDS_CHUNK_TINT_SUCCESS_BLUR.param(, chunkX).param(, chunkZ).param(, updateChunks.size()).param(, radius).param(, sigma));
} {
context.sendMessage(MESSAGE_COMMANDS_CHUNK_TINT_SUCCESS.param(, chunkX).param(, chunkZ));
}
} {
context.sendMessage(MESSAGE_GENERAL_CHUNK_NOT_LOADED.param(, chunkX).param(, chunkZ));
}
}
{
;
;
;
( -radius; ix <= radius; ++ix) {
( -radius; iz <= radius; ++iz) {
matrix[gaussianIndex(radius, ix, iz)];
x + ix;
z + iz;
(WorldChunk)chunkAccessor.getChunk(ChunkUtil.indexChunkFromBlock(ax, az));
(worldChunk != ) {
worldChunk.getBlockChunk();
(blockChunk != ) {
blockChunk.getTint(ax, az);
r += ()(c >> & ) * factor;
g += ()(c >> & ) * factor;
b += ()(c & ) * factor;
}
}
}
}
- | MathUtil.floor(r) << | MathUtil.floor(g) << | MathUtil.floor(b);
}
{
/ ( * sigma * sigma) * Math.pow(, -(x * x + y * y) / ( * sigma * sigma));
}
[] gaussianMatrix( sigma, radius) {
* radius + ;
[] matrix = [length * length];
( -radius; x <= radius; ++x) {
( -radius; y <= radius; ++y) {
gaussian2d(sigma, ()x, ()y);
matrix[gaussianIndex(radius, x, y)] = value;
}
}
;
( val : matrix) {
sum += val;
}
( ; i < matrix.length; ++i) {
matrix[i] /= sum;
}
matrix;
}
{
x += radius;
y += radius;
x * ( * radius + ) + y;
}
{
TintChunkPageCommand() {
();
}
{
(Player)store.getComponent(ref, Player.getComponentType());
playerComponent != ;
playerComponent.getPageManager().openCustomPage(ref, store, (playerRef));
}
}
<TintChunkPageEventData> {
TintChunkPage( PlayerRef playerRef) {
(playerRef, CustomPageLifetime.CanDismiss, ChunkTintCommand.TintChunkPage.TintChunkPageEventData.CODEC);
}
{
commandBuilder.append();
eventBuilder.addEventBinding(CustomUIEventBindingType.ValueChanged, , ( ()).append(, ).append(, ChunkTintCommand.TintChunkPage.TintChunkPageAction.ColorChanged.name()), );
eventBuilder.addEventBinding(CustomUIEventBindingType.Activating, , ( ()).append(, ).append(, ).append(, ).append(, ).append(, ).append(, ChunkTintCommand.TintChunkPage.TintChunkPageAction.Submit.name()), );
}
{
(data.getAction().ordinal()) {
:
data.getColor().substring(, );
data.getRadius();
data.getSigma();
(!data.getKeyHexColor().isEmpty()) {
color = data.getKeyHexColor();
(!color.startsWith()) {
color = + color;
}
}
(data.isBlurEnabled()) {
CommandManager.get().handleCommand(.playerRef, + color + + radiusStr + + sigmaStr);
} {
CommandManager.get().handleCommand(.playerRef, + color);
}
;
:
data.getColor().substring(, );
();
commands.set(, color);
.sendUpdate(commands);
}
}
{
Submit,
ColorChanged;
{
}
}
{
;
;
;
;
;
;
BuilderCodec<TintChunkPageEventData> CODEC;
String color;
radius;
sigma;
String hexColor;
isBlurEnabled;
TintChunkPageAction action;
{
}
String {
.color;
}
{
.radius;
}
{
.sigma;
}
{
.isBlurEnabled;
}
String {
.hexColor;
}
TintChunkPageAction {
.action;
}
{
CODEC = ((BuilderCodec.Builder)((BuilderCodec.Builder)((BuilderCodec.Builder)((BuilderCodec.Builder)((BuilderCodec.Builder)((BuilderCodec.Builder)BuilderCodec.builder(TintChunkPageEventData.class, TintChunkPageEventData::).addField( (, Codec.STRING), (entry, s) -> entry.color = s, (entry) -> entry.color)).addField( (, Codec.INTEGER), (entry, s) -> entry.radius = s, (entry) -> entry.radius)).addField( (, Codec.INTEGER), (entry, s) -> entry.sigma = s, (entry) -> entry.sigma)).addField( (, Codec.BOOLEAN), (entry, b) -> entry.isBlurEnabled = b, (entry) -> entry.isBlurEnabled)).addField( (, Codec.STRING), (entry, s) -> entry.hexColor = s, (entry) -> entry.hexColor)).addField( (, (TintChunkPageAction.class)), (entry, s) -> entry.action = s, (entry) -> entry.action)).build();
}
}
}
}
com/hypixel/hytale/server/core/command/commands/world/chunk/ChunkTrackerCommand.java
package com.hypixel.hytale.server.core.command.commands.world.chunk;
import com.hypixel.hytale.component.Ref;
import com.hypixel.hytale.component.Store;
import com.hypixel.hytale.server.core.Message;
import com.hypixel.hytale.server.core.command.system.CommandContext;
import com.hypixel.hytale.server.core.command.system.basecommands.AbstractTargetPlayerCommand;
import com.hypixel.hytale.server.core.entity.entities.Player;
import com.hypixel.hytale.server.core.modules.entity.player.ChunkTracker;
import com.hypixel.hytale.server.core.universe.PlayerRef;
import com.hypixel.hytale.server.core.universe.world.World;
import com.hypixel.hytale.server.core.universe.world.storage.ChunkStore;
import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
public class ChunkTrackerCommand extends AbstractTargetPlayerCommand {
@Nonnull
private static final Message MESSAGE_COMMANDS_CHUNK_TRACKER_SUMMARY = Message.translation("server.commands.chunkTracker.summary");
public ChunkTrackerCommand() {
super("tracker", "server.commands.chunk.tracker.desc");
}
protected void execute(@Nonnull CommandContext context, Ref<EntityStore> sourceRef, Ref<EntityStore> ref, PlayerRef playerRef, World world, Store<EntityStore> store) {
(Player)store.getComponent(ref, Player.getComponentType());
playerComponent != ;
(ChunkTracker)store.getComponent(ref, ChunkTracker.getComponentType());
chunkTrackerComponent != ;
world.getChunkStore();
Integer.toString(chunkStore.getLoadedChunksCount());
context.sendMessage(MESSAGE_COMMANDS_CHUNK_TRACKER_SUMMARY.param(, chunkTrackerComponent.getMaxChunksPerSecond()).param(, chunkTrackerComponent.getMaxChunksPerTick()).param(, chunkTrackerComponent.getMinLoadedChunksRadius()).param(, chunkTrackerComponent.getMaxHotLoadedChunksRadius()).param(, chunkTrackerComponent.getLoadedChunksCount()).param(, chunkTrackerComponent.getLoadingChunksCount()).param(, loadedWorldChunks));
}
}
com/hypixel/hytale/server/core/command/commands/world/chunk/ChunkUnloadCommand.java
package com.hypixel.hytale.server.core.command.commands.world.chunk;
import com.hypixel.hytale.component.Ref;
import com.hypixel.hytale.component.RemoveReason;
import com.hypixel.hytale.component.Store;
import com.hypixel.hytale.math.util.ChunkUtil;
import com.hypixel.hytale.math.vector.Vector2i;
import com.hypixel.hytale.server.core.Message;
import com.hypixel.hytale.server.core.command.system.CommandContext;
import com.hypixel.hytale.server.core.command.system.arguments.system.RequiredArg;
import com.hypixel.hytale.server.core.command.system.arguments.types.ArgTypes;
import com.hypixel.hytale.server.core.command.system.arguments.types.RelativeChunkPosition;
import com.hypixel.hytale.server.core.command.system.basecommands.AbstractWorldCommand;
import com.hypixel.hytale.server.core.universe.world.World;
import com.hypixel.hytale.server.core.universe.world.storage.ChunkStore;
import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
import javax.annotation.Nonnull;
public class ChunkUnloadCommand extends AbstractWorldCommand {
@Nonnull
private static final Message MESSAGE_COMMANDS_CHUNK_UNLOAD_ALREADY_UNLOADED = Message.translation("server.commands.chunk.unload.alreadyUnloaded");
@Nonnull
private static final Message MESSAGE_COMMANDS_CHUNK_UNLOAD_SUCCESS Message.translation();
RequiredArg<RelativeChunkPosition> chunkPosArg;
{
(, );
.chunkPosArg = .withRequiredArg(, , ArgTypes.RELATIVE_CHUNK_POSITION);
}
{
(RelativeChunkPosition).chunkPosArg.get(context);
chunkPosition.getChunkPosition(context, store);
world.getChunkStore();
ChunkUtil.indexChunk(position.x, position.y);
Ref<ChunkStore> chunkRef = chunkComponentStore.getChunkReference(indexChunk);
(chunkRef == ) {
context.sendMessage(MESSAGE_COMMANDS_CHUNK_UNLOAD_ALREADY_UNLOADED.param(, position.x).param(, position.y).param(, world.getName()));
} {
chunkComponentStore.remove(chunkRef, RemoveReason.UNLOAD);
world.getNotificationHandler().updateChunk(indexChunk);
context.sendMessage(MESSAGE_COMMANDS_CHUNK_UNLOAD_SUCCESS.param(, position.x).param(, position.y).param(, world.getName()));
}
}
}
com/hypixel/hytale/server/core/command/commands/world/entity/EntityCleanCommand.java
package com.hypixel.hytale.server.core.command.commands.world.entity;
import com.hypixel.hytale.component.RemoveReason;
import com.hypixel.hytale.component.Store;
import com.hypixel.hytale.server.core.command.system.CommandContext;
import com.hypixel.hytale.server.core.command.system.basecommands.AbstractWorldCommand;
import com.hypixel.hytale.server.core.entity.entities.Player;
import com.hypixel.hytale.server.core.universe.world.World;
import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
import javax.annotation.Nonnull;
public class EntityCleanCommand extends AbstractWorldCommand {
public EntityCleanCommand() {
super("clean", "server.commands.entity.clean.desc", true);
}
protected void execute(@Nonnull CommandContext context, @Nonnull World world, @Nonnull Store<EntityStore> store) {
store.forEachEntityParallel((index, archetypeChunk, commandBuffer) -> {
if (!archetypeChunk.getArchetype().contains(Player.getComponentType())) {
commandBuffer.removeEntity(archetypeChunk.getReferenceTo(index), RemoveReason.REMOVE);
}
});
}
}
com/hypixel/hytale/server/core/command/commands/world/entity/EntityCloneCommand.java
package com.hypixel.hytale.server.core.command.commands.world.entity;
import com.hypixel.hytale.codec.validation.Validators;
import com.hypixel.hytale.component.AddReason;
import com.hypixel.hytale.component.Holder;
import com.hypixel.hytale.component.Ref;
import com.hypixel.hytale.component.Store;
import com.hypixel.hytale.server.core.Message;
import com.hypixel.hytale.server.core.command.system.CommandContext;
import com.hypixel.hytale.server.core.command.system.CommandSender;
import com.hypixel.hytale.server.core.command.system.arguments.system.DefaultArg;
import com.hypixel.hytale.server.core.command.system.arguments.types.ArgTypes;
import com.hypixel.hytale.server.core.command.system.arguments.types.EntityWrappedArg;
import com.hypixel.hytale.server.core.command.system.basecommands.AbstractWorldCommand;
import com.hypixel.hytale.server.core.entity.UUIDComponent;
import com.hypixel.hytale.server.core.universe.world.World;
import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
import java.util.UUID;
import javax.annotation.Nonnull;
public class EntityCloneCommand extends AbstractWorldCommand {
@Nonnull
private static final Message MESSAGE_GENERAL_NO_ENTITY_IN_VIEW = Message.translation("server.general.noEntityInView");
@Nonnull
private static final Message.translation();
EntityWrappedArg entityArg;
DefaultArg<Integer> countArg;
{
(, );
.entityArg = (EntityWrappedArg).withOptionalArg(, , ArgTypes.ENTITY_ID);
.countArg = (DefaultArg).withDefaultArg(, , ArgTypes.INTEGER, , ).addValidator(Validators.greaterThan());
}
{
Ref<EntityStore> entityRef = .entityArg.get(store, context);
(entityRef != && entityRef.isValid()) {
context.sender();
(Integer).countArg.get(context);
( ; i < count; ++i) {
Holder<EntityStore> copy = store.copyEntity(entityRef);
copy.replaceComponent(UUIDComponent.getComponentType(), (UUID.randomUUID()));
store.addEntity(copy, AddReason.SPAWN);
}
(count == ) {
sender.sendMessage(MESSAGE_COMMANDS_ENTITY_CLONE_CLONED);
} {
sender.sendMessage(Message.translation().param(, count));
}
} {
context.sendMessage(MESSAGE_GENERAL_NO_ENTITY_IN_VIEW);
}
}
{
Holder<EntityStore> copy = store.copyEntity(entityReference);
(copy.getComponent(UUIDComponent.getComponentType()) != ) {
copy.replaceComponent(UUIDComponent.getComponentType(), (UUID.randomUUID()));
}
store.addEntity(copy, AddReason.SPAWN);
}
}
com/hypixel/hytale/server/core/command/commands/world/entity/EntityCommand.java
package com.hypixel.hytale.server.core.command.commands.world.entity;
import com.hypixel.hytale.server.core.command.commands.world.entity.snapshot.EntitySnapshotSubCommand;
import com.hypixel.hytale.server.core.command.commands.world.entity.stats.EntityStatsSubCommand;
import com.hypixel.hytale.server.core.command.system.basecommands.AbstractCommandCollection;
public class EntityCommand extends AbstractCommandCollection {
public EntityCommand() {
super("entity", "server.commands.entity.desc");
this.addAliases(new String[]{"entities"});
this.addSubCommand(new EntityCloneCommand());
this.addSubCommand(new EntityRemoveCommand());
this.addSubCommand(new EntityDumpCommand());
this.addSubCommand(new EntityCleanCommand());
this.addSubCommand(new EntityLodCommand());
this.addSubCommand(new EntityTrackerCommand());
this.addSubCommand(new EntityResendCommand());
this.addSubCommand(new ());
.addSubCommand( ());
.addSubCommand( ());
.addSubCommand( ());
.addSubCommand( ());
.addSubCommand( ());
.addSubCommand( ());
.addSubCommand( ());
.addSubCommand( ());
}
}
com/hypixel/hytale/server/core/command/commands/world/entity/EntityCountCommand.java
package com.hypixel.hytale.server.core.command.commands.world.entity;
import com.hypixel.hytale.component.Store;
import com.hypixel.hytale.server.core.Message;
import com.hypixel.hytale.server.core.command.system.CommandContext;
import com.hypixel.hytale.server.core.command.system.basecommands.AbstractWorldCommand;
import com.hypixel.hytale.server.core.universe.world.World;
import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
import javax.annotation.Nonnull;
public class EntityCountCommand extends AbstractWorldCommand {
public EntityCountCommand() {
super("count", "server.commands.entity.count.desc");
}
protected void execute(@Nonnull CommandContext context, @Nonnull World world, @Nonnull Store<EntityStore> store) {
context.sendMessage(Message.translation("server.commands.entity.count.count").param("count", store.getEntityCount()));
}
}
com/hypixel/hytale/server/core/command/commands/world/entity/EntityDumpCommand.java
package com.hypixel.hytale.server.core.command.commands.world.entity;
import com.hypixel.hytale.component.Holder;
import com.hypixel.hytale.component.Ref;
import com.hypixel.hytale.component.Store;
import com.hypixel.hytale.logger.HytaleLogger;
import com.hypixel.hytale.server.core.Message;
import com.hypixel.hytale.server.core.command.system.CommandContext;
import com.hypixel.hytale.server.core.command.system.arguments.types.ArgTypes;
import com.hypixel.hytale.server.core.command.system.arguments.types.EntityWrappedArg;
import com.hypixel.hytale.server.core.command.system.basecommands.AbstractWorldCommand;
import com.hypixel.hytale.server.core.universe.world.World;
import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
import com.hypixel.hytale.server.core.util.BsonUtil;
import java.util.logging.Level;
import javax.annotation.Nonnull;
import org.bson.BsonDocument;
public class EntityDumpCommand extends AbstractWorldCommand {
private static final Message MESSAGE_GENERAL_NO_ENTITY_IN_VIEW = Message.translation("server.general.noEntityInView");
private static final Message MESSAGE_COMMANDS_ENTITY_DUMP_DUMP_DONE = Message.translation("server.commands.entity.dump.dumpDone");
@Nonnull
private EntityWrappedArg entityArg;
{
(, );
.entityArg = (EntityWrappedArg).withOptionalArg(, , ArgTypes.ENTITY_ID);
}
{
Ref<EntityStore> entityRef = .entityArg.get(store, context);
(entityRef != && entityRef.isValid()) {
Holder<EntityStore> holder = store.copyEntity(entityRef);
EntityStore.REGISTRY.serialize(holder);
HytaleLogger.getLogger().at(Level.INFO).log(, entityRef, holder, BsonUtil.toJson(document));
context.sendMessage(MESSAGE_COMMANDS_ENTITY_DUMP_DUMP_DONE);
} {
context.sendMessage(MESSAGE_GENERAL_NO_ENTITY_IN_VIEW);
}
}
}
com/hypixel/hytale/server/core/command/commands/world/entity/EntityEffectCommand.java
package com.hypixel.hytale.server.core.command.commands.world.entity;
import com.hypixel.hytale.codec.validation.Validators;
import com.hypixel.hytale.component.Ref;
import com.hypixel.hytale.component.Store;
import com.hypixel.hytale.server.core.asset.type.entityeffect.config.EntityEffect;
import com.hypixel.hytale.server.core.asset.type.entityeffect.config.OverlapBehavior;
import com.hypixel.hytale.server.core.command.system.CommandContext;
import com.hypixel.hytale.server.core.command.system.arguments.system.DefaultArg;
import com.hypixel.hytale.server.core.command.system.arguments.system.RequiredArg;
import com.hypixel.hytale.server.core.command.system.arguments.types.ArgTypes;
import com.hypixel.hytale.server.core.command.system.basecommands.AbstractTargetEntityCommand;
import com.hypixel.hytale.server.core.entity.effect.EffectControllerComponent;
import com.hypixel.hytale.server.core.universe.world.World;
import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
import it.unimi.dsi.fastutil.objects.ObjectList;
import javax.annotation.Nonnull;
public class EntityEffectCommand extends AbstractTargetEntityCommand {
@Nonnull
private final RequiredArg<EntityEffect> effectArg;
@Nonnull
private final DefaultArg<Float> durationArg;
public EntityEffectCommand() {
super("effect", "server.commands.entity.effect.desc");
this.effectArg = .withRequiredArg(, , ArgTypes.EFFECT_ASSET);
.durationArg = (DefaultArg).withDefaultArg(, , ArgTypes.FLOAT, , ).addValidator(Validators.greaterThan());
}
{
(EntityEffect).effectArg.get(context);
(Float).durationArg.get(context);
(Ref<EntityStore> entityRef : entities) {
(EffectControllerComponent)store.getComponent(entityRef, EffectControllerComponent.getComponentType());
(effectControllerComponent != ) {
effectControllerComponent.addEffect(entityRef, entityEffect, duration, OverlapBehavior.OVERWRITE, store);
}
}
}
}
com/hypixel/hytale/server/core/command/commands/world/entity/EntityHideFromAdventurePlayersCommand.java
package com.hypixel.hytale.server.core.command.commands.world.entity;
import com.hypixel.hytale.component.Ref;
import com.hypixel.hytale.component.Store;
import com.hypixel.hytale.server.core.Message;
import com.hypixel.hytale.server.core.command.system.CommandContext;
import com.hypixel.hytale.server.core.command.system.arguments.system.FlagArg;
import com.hypixel.hytale.server.core.command.system.basecommands.AbstractTargetEntityCommand;
import com.hypixel.hytale.server.core.modules.entity.component.HiddenFromAdventurePlayers;
import com.hypixel.hytale.server.core.universe.world.World;
import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
import it.unimi.dsi.fastutil.objects.ObjectList;
import javax.annotation.Nonnull;
public class EntityHideFromAdventurePlayersCommand extends AbstractTargetEntityCommand {
@Nonnull
private final FlagArg removeFlag = this.withFlagArg("remove", "server.commands.entity.hidefromadventureplayers.remove.desc");
public EntityHideFromAdventurePlayersCommand() {
super("hidefromadventureplayers", "server.commands.entity.hidefromadventureplayers.desc");
}
protected void execute(@Nonnull CommandContext context, @Nonnull ObjectList<Ref<EntityStore>> entities, World world, Store<EntityStore> store) {
.removeFlag.provided(context);
(Ref<EntityStore> entity : entities) {
(remove) {
store.tryRemoveComponent(entity, HiddenFromAdventurePlayers.getComponentType());
} {
store.ensureComponent(entity, HiddenFromAdventurePlayers.getComponentType());
}
}
context.sendMessage(Message.translation( + (remove ? : )).param(, entities.size()));
}
}
com/hypixel/hytale/server/core/command/commands/world/entity/EntityIntangibleCommand.java
package com.hypixel.hytale.server.core.command.commands.world.entity;
import com.hypixel.hytale.component.Ref;
import com.hypixel.hytale.component.Store;
import com.hypixel.hytale.server.core.Message;
import com.hypixel.hytale.server.core.command.system.CommandContext;
import com.hypixel.hytale.server.core.command.system.arguments.system.FlagArg;
import com.hypixel.hytale.server.core.command.system.basecommands.AbstractTargetEntityCommand;
import com.hypixel.hytale.server.core.modules.entity.component.Intangible;
import com.hypixel.hytale.server.core.universe.world.World;
import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
import it.unimi.dsi.fastutil.objects.ObjectList;
import javax.annotation.Nonnull;
public class EntityIntangibleCommand extends AbstractTargetEntityCommand {
@Nonnull
private final FlagArg removeFlag = this.withFlagArg("remove", "server.commands.entity.intangible.remove.desc");
public EntityIntangibleCommand() {
super("intangible", "server.commands.entity.intangible.desc");
}
protected void execute(@Nonnull CommandContext context, @Nonnull ObjectList<Ref<EntityStore>> entities, World world, Store<EntityStore> store) {
.removeFlag.provided(context);
(Ref<EntityStore> entity : entities) {
(remove) {
store.tryRemoveComponent(entity, Intangible.getComponentType());
} {
store.ensureComponent(entity, Intangible.getComponentType());
}
}
context.sendMessage(Message.translation( + (remove ? : )).param(, entities.size()));
}
}
com/hypixel/hytale/server/core/command/commands/world/entity/EntityInvulnerableCommand.java
package com.hypixel.hytale.server.core.command.commands.world.entity;
import com.hypixel.hytale.component.Ref;
import com.hypixel.hytale.component.Store;
import com.hypixel.hytale.server.core.Message;
import com.hypixel.hytale.server.core.command.system.CommandContext;
import com.hypixel.hytale.server.core.command.system.arguments.system.FlagArg;
import com.hypixel.hytale.server.core.command.system.basecommands.AbstractTargetEntityCommand;
import com.hypixel.hytale.server.core.modules.entity.component.Invulnerable;
import com.hypixel.hytale.server.core.universe.world.World;
import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
import it.unimi.dsi.fastutil.objects.ObjectList;
import javax.annotation.Nonnull;
public class EntityInvulnerableCommand extends AbstractTargetEntityCommand {
@Nonnull
private final FlagArg removeFlag = this.withFlagArg("remove", "server.commands.entity.invulnerable.remove.desc");
public EntityInvulnerableCommand() {
super("invulnerable", "server.commands.entity.invulnerable.desc");
}
protected void execute(@Nonnull CommandContext context, @Nonnull ObjectList<Ref<EntityStore>> entities, World world, Store<EntityStore> store) {
.removeFlag.provided(context);
(Ref<EntityStore> entity : entities) {
(remove) {
store.tryRemoveComponent(entity, Invulnerable.getComponentType());
} {
store.ensureComponent(entity, Invulnerable.getComponentType());
}
}
context.sendMessage(Message.translation( + (remove ? : )).param(, entities.size()));
}
}
com/hypixel/hytale/server/core/command/commands/world/entity/EntityLodCommand.java
package com.hypixel.hytale.server.core.command.commands.world.entity;
import com.hypixel.hytale.server.core.Message;
import com.hypixel.hytale.server.core.command.system.CommandContext;
import com.hypixel.hytale.server.core.command.system.arguments.system.RequiredArg;
import com.hypixel.hytale.server.core.command.system.arguments.types.ArgTypes;
import com.hypixel.hytale.server.core.command.system.basecommands.CommandBase;
import com.hypixel.hytale.server.core.modules.entity.tracker.LegacyEntityTrackerSystems;
import javax.annotation.Nonnull;
public class EntityLodCommand extends CommandBase {
@Nonnull
private final RequiredArg<Double> ratioArg;
public EntityLodCommand() {
super("lod", "server.commands.entity.lod.desc");
this.ratioArg = this.withRequiredArg("ratio", "server.commands.entity.lod.ratio.desc", ArgTypes.DOUBLE);
this.addSubCommand(new Default());
}
protected void executeSync(@Nonnull CommandContext context) {
LegacyEntityTrackerSystems.LegacyLODCull.ENTITY_LOD_RATIO = (Double)this.ratioArg.get(context);
context.sendMessage(Message.translation("server.commands.entity.lod.ratioSet").param("ratio", LegacyEntityTrackerSystems.LegacyLODCull.ENTITY_LOD_RATIO));
}
{
Default() {
(, );
}
{
LegacyEntityTrackerSystems.LegacyLODCull.ENTITY_LOD_RATIO = ;
context.sendMessage(Message.translation().param(, LegacyEntityTrackerSystems.LegacyLODCull.ENTITY_LOD_RATIO));
}
}
}
com/hypixel/hytale/server/core/command/commands/world/entity/EntityMakeInteractableCommand.java
package com.hypixel.hytale.server.core.command.commands.world.entity;
import com.hypixel.hytale.component.Ref;
import com.hypixel.hytale.component.Store;
import com.hypixel.hytale.server.core.Message;
import com.hypixel.hytale.server.core.command.system.CommandContext;
import com.hypixel.hytale.server.core.command.system.arguments.system.FlagArg;
import com.hypixel.hytale.server.core.command.system.basecommands.AbstractTargetEntityCommand;
import com.hypixel.hytale.server.core.modules.entity.component.Interactable;
import com.hypixel.hytale.server.core.universe.world.World;
import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
import it.unimi.dsi.fastutil.objects.ObjectList;
import javax.annotation.Nonnull;
public class EntityMakeInteractableCommand extends AbstractTargetEntityCommand {
@Nonnull
private final FlagArg disableFlag = this.withFlagArg("disable", "server.commands.entity.interactable.disable.desc");
public EntityMakeInteractableCommand() {
super("interactable", "server.commands.entity.interactable.desc");
}
protected void execute(@Nonnull CommandContext context, @Nonnull ObjectList<Ref<EntityStore>> entities, World world, Store<EntityStore> store) {
.disableFlag.provided(context);
(Ref<EntityStore> entity : entities) {
(disable) {
store.tryRemoveComponent(entity, Interactable.getComponentType());
} {
store.ensureComponent(entity, Interactable.getComponentType());
}
}
context.sendMessage(Message.translation( + (disable ? : )).param(, entities.size()));
}
}
com/hypixel/hytale/server/core/command/commands/world/entity/EntityNameplateCommand.java
package com.hypixel.hytale.server.core.command.commands.world.entity;
import com.hypixel.hytale.component.Ref;
import com.hypixel.hytale.component.Store;
import com.hypixel.hytale.server.core.Message;
import com.hypixel.hytale.server.core.command.system.CommandContext;
import com.hypixel.hytale.server.core.command.system.arguments.system.RequiredArg;
import com.hypixel.hytale.server.core.command.system.arguments.types.ArgTypes;
import com.hypixel.hytale.server.core.command.system.arguments.types.EntityWrappedArg;
import com.hypixel.hytale.server.core.command.system.basecommands.AbstractWorldCommand;
import com.hypixel.hytale.server.core.entity.nameplate.Nameplate;
import com.hypixel.hytale.server.core.universe.world.World;
import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
import javax.annotation.Nonnull;
public class EntityNameplateCommand extends AbstractWorldCommand {
private static final Message MESSAGE_GENERAL_NO_ENTITY_IN_VIEW = Message.translation("server.general.noEntityInView");
private static final Message MESSAGE_COMMANDS_ENTITY_NAMEPLATE_UPDATED = Message.translation("server.commands.entity.nameplate.updated");
@Nonnull
private final EntityWrappedArg entityArg;
@Nonnull
private RequiredArg<String> textArg;
{
(, );
.entityArg = (EntityWrappedArg).withOptionalArg(, , ArgTypes.ENTITY_ID);
.textArg = .withRequiredArg(, , ArgTypes.STRING);
.addUsageVariant( ());
}
{
Ref<EntityStore> entityRef = .entityArg.get(store, context);
(entityRef != && entityRef.isValid()) {
(String).textArg.get(context);
((Nameplate)store.ensureAndGetComponent(entityRef, Nameplate.getComponentType())).setText(text);
context.sendMessage(MESSAGE_COMMANDS_ENTITY_NAMEPLATE_UPDATED);
} {
context.sendMessage(MESSAGE_GENERAL_NO_ENTITY_IN_VIEW);
}
}
{
Message.translation();
Message.translation();
EntityWrappedArg entityArg;
{
();
.entityArg = (EntityWrappedArg).withOptionalArg(, , ArgTypes.ENTITY_ID);
}
{
Ref<EntityStore> entityRef = .entityArg.get(store, context);
(entityRef != && entityRef.isValid()) {
store.tryRemoveComponent(entityRef, Nameplate.getComponentType());
context.sendMessage(MESSAGE_COMMANDS_ENTITY_NAMEPLATE_REMOVED);
} {
context.sendMessage(MESSAGE_GENERAL_NO_ENTITY_IN_VIEW);
}
}
}
}
com/hypixel/hytale/server/core/command/commands/world/entity/EntityRemoveCommand.java
package com.hypixel.hytale.server.core.command.commands.world.entity;
import com.hypixel.hytale.component.ComponentAccessor;
import com.hypixel.hytale.component.Ref;
import com.hypixel.hytale.component.RemoveReason;
import com.hypixel.hytale.component.Store;
import com.hypixel.hytale.server.core.Message;
import com.hypixel.hytale.server.core.command.system.CommandContext;
import com.hypixel.hytale.server.core.command.system.arguments.system.FlagArg;
import com.hypixel.hytale.server.core.command.system.arguments.types.ArgTypes;
import com.hypixel.hytale.server.core.command.system.arguments.types.EntityWrappedArg;
import com.hypixel.hytale.server.core.command.system.basecommands.AbstractWorldCommand;
import com.hypixel.hytale.server.core.entity.entities.Player;
import com.hypixel.hytale.server.core.modules.entity.tracker.EntityTrackerSystems;
import com.hypixel.hytale.server.core.universe.PlayerRef;
import com.hypixel.hytale.server.core.universe.world.World;
import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
public class EntityRemoveCommand extends AbstractWorldCommand {
@Nonnull
private static final Message MESSAGE_GENERAL_NO_ENTITY_IN_VIEW = Message.translation("server.general.noEntityInView");
@Nonnull
private final EntityWrappedArg entityArg;
FlagArg othersFlag;
{
(, );
.entityArg = (EntityWrappedArg).withOptionalArg(, , ArgTypes.ENTITY_ID);
.othersFlag = .withFlagArg(, );
}
{
Ref<EntityStore> entityRef = .entityArg.get(store, context);
(entityRef != && entityRef.isValid()) {
(.othersFlag.provided(context)) {
store.forEachEntityParallel((index, archetypeChunk, commandBuffer) -> {
(!archetypeChunk.getArchetype().contains(Player.getComponentType())) {
(!archetypeChunk.getReferenceTo(index).equals(entityRef)) {
commandBuffer.removeEntity(archetypeChunk.getReferenceTo(index), RemoveReason.REMOVE);
}
}
});
} {
removeEntity(context.senderAsPlayerRef(), entityRef, store);
}
} {
context.sendMessage(MESSAGE_GENERAL_NO_ENTITY_IN_VIEW);
}
}
{
(playerRef != && playerRef.isValid()) {
EntityTrackerSystems. (EntityTrackerSystems.EntityViewer)componentAccessor.getComponent(playerRef, EntityTrackerSystems.EntityViewer.getComponentType());
(entityViewer != && !entityViewer.visible.contains(entityReference)) {
(PlayerRef)componentAccessor.getComponent(playerRef, PlayerRef.getComponentType());
playerRefComponent != ;
playerRefComponent.sendMessage(Message.translation().param(, entityReference.getIndex()));
;
}
}
componentAccessor.removeEntity(entityReference, EntityStore.REGISTRY.newHolder(), RemoveReason.REMOVE);
}
}
com/hypixel/hytale/server/core/command/commands/world/entity/EntityResendCommand.java
package com.hypixel.hytale.server.core.command.commands.world.entity;
import com.hypixel.hytale.component.Ref;
import com.hypixel.hytale.component.Store;
import com.hypixel.hytale.server.core.Message;
import com.hypixel.hytale.server.core.command.system.CommandContext;
import com.hypixel.hytale.server.core.command.system.arguments.system.RequiredArg;
import com.hypixel.hytale.server.core.command.system.arguments.types.ArgTypes;
import com.hypixel.hytale.server.core.command.system.basecommands.AbstractWorldCommand;
import com.hypixel.hytale.server.core.modules.entity.tracker.EntityTrackerSystems;
import com.hypixel.hytale.server.core.universe.PlayerRef;
import com.hypixel.hytale.server.core.universe.world.World;
import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
import javax.annotation.Nonnull;
public class EntityResendCommand extends AbstractWorldCommand {
@Nonnull
private static final Message MESSAGE_COMMANDS_ERRORS_PLAYER_NOT_IN_WORLD = Message.translation("server.commands.errors.playerNotInWorld");
@Nonnull
private static final Message MESSAGE_COMMANDS_ENTITY_RESET_NO_ENTITY_VIEWER_COMPONENT = Message.translation("server.commands.entity.resend.noEntityViewerComponent");
@Nonnull
private final RequiredArg<PlayerRef> playerArg;
{
(, );
.playerArg = .withRequiredArg(, , ArgTypes.PLAYER_REF);
}
{
(PlayerRef).playerArg.get(context);
Ref<EntityStore> ref = playerRef.getReference();
(ref != && ref.isValid()) {
(!EntityTrackerSystems.despawnAll(ref, store)) {
context.sendMessage(MESSAGE_COMMANDS_ENTITY_RESET_NO_ENTITY_VIEWER_COMPONENT);
}
} {
context.sendMessage(MESSAGE_COMMANDS_ERRORS_PLAYER_NOT_IN_WORLD);
}
}
}
com/hypixel/hytale/server/core/command/commands/world/entity/EntityTrackerCommand.java
package com.hypixel.hytale.server.core.command.commands.world.entity;
import com.hypixel.hytale.component.Ref;
import com.hypixel.hytale.component.Store;
import com.hypixel.hytale.server.core.Message;
import com.hypixel.hytale.server.core.command.system.CommandContext;
import com.hypixel.hytale.server.core.command.system.arguments.system.RequiredArg;
import com.hypixel.hytale.server.core.command.system.arguments.types.ArgTypes;
import com.hypixel.hytale.server.core.command.system.basecommands.AbstractWorldCommand;
import com.hypixel.hytale.server.core.entity.entities.Player;
import com.hypixel.hytale.server.core.modules.entity.tracker.EntityTrackerSystems;
import com.hypixel.hytale.server.core.universe.PlayerRef;
import com.hypixel.hytale.server.core.universe.world.World;
import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
import javax.annotation.Nonnull;
public class EntityTrackerCommand extends AbstractWorldCommand {
@Nonnull
private static final Message MESSAGE_COMMANDS_ERRORS_PLAYER_NOT_IN_WORLD = Message.translation("server.commands.errors.playerNotInWorld");
@Nonnull
private static final Message MESSAGE_COMMANDS_ENTITY_TRACKER_NO_VIEWER_COMPONENT = Message.translation("server.commands.entity.tracker.noViewerComponent");
@Nonnull
RequiredArg<PlayerRef> playerArg;
{
(, );
.playerArg = .withRequiredArg(, , ArgTypes.PLAYER_REF);
}
{
(PlayerRef).playerArg.get(context);
Ref<EntityStore> ref = playerRef.getReference();
(ref != && ref.isValid()) {
EntityTrackerSystems. (EntityTrackerSystems.EntityViewer)store.getComponent(ref, EntityTrackerSystems.EntityViewer.getComponentType());
(entityViewerComponent == ) {
context.sendMessage(MESSAGE_COMMANDS_ENTITY_TRACKER_NO_VIEWER_COMPONENT);
} {
(Player)store.getComponent(ref, Player.getComponentType());
(playerComponent == ) {
context.sendMessage(MESSAGE_COMMANDS_ERRORS_PLAYER_NOT_IN_WORLD);
} {
context.sendMessage(Message.translation().param(, entityViewerComponent.visible.size()).param(, entityViewerComponent.lodExcludedCount).param(, entityViewerComponent.hiddenCount).param(, entityViewerComponent.visible.size() + entityViewerComponent.lodExcludedCount + entityViewerComponent.hiddenCount).param(, store.getEntityCount()).param(, playerComponent.getViewRadius()).param(, entityViewerComponent.viewRadiusBlocks));
}
}
} {
context.sendMessage(MESSAGE_COMMANDS_ERRORS_PLAYER_NOT_IN_WORLD);
}
}
}
com/hypixel/hytale/server/core/command/commands/world/entity/snapshot/EntitySnapshotHistoryCommand.java
package com.hypixel.hytale.server.core.command.commands.world.entity.snapshot;
import com.hypixel.hytale.component.ComponentType;
import com.hypixel.hytale.component.Ref;
import com.hypixel.hytale.component.Store;
import com.hypixel.hytale.component.spatial.SpatialResource;
import com.hypixel.hytale.math.vector.Vector3d;
import com.hypixel.hytale.server.core.command.system.CommandContext;
import com.hypixel.hytale.server.core.command.system.basecommands.AbstractWorldCommand;
import com.hypixel.hytale.server.core.entity.EntitySnapshot;
import com.hypixel.hytale.server.core.modules.entity.EntityModule;
import com.hypixel.hytale.server.core.modules.entity.component.SnapshotBuffer;
import com.hypixel.hytale.server.core.universe.world.ParticleUtil;
import com.hypixel.hytale.server.core.universe.world.World;
import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
import it.unimi.dsi.fastutil.objects.ObjectList;
import java.util.function.BiConsumer;
import javax.annotation.Nonnull;
public class EntitySnapshotHistoryCommand extends AbstractWorldCommand {
public EntitySnapshotHistoryCommand() {
super("history", "server.commands.entity.snapshot.history.desc");
}
protected void execute(@Nonnull CommandContext context, @Nonnull World world, @Nonnull Store<EntityStore> store) {
ComponentType<EntityStore, SnapshotBuffer> snapshotBufferComponentType = SnapshotBuffer.getComponentType();
store.forEachChunk(snapshotBufferComponentType, (BiConsumer)((chunk, cmdBuffer) -> {
( ; idx < chunk.size(); ++idx) {
(SnapshotBuffer)chunk.getComponent(idx, snapshotBufferComponentType);
snapshotBufferComponent != ;
(!snapshotBufferComponent.isInitialized()) {
;
}
( snapshotBufferComponent.getOldestTickIndex(); i <= snapshotBufferComponent.getCurrentTickIndex(); ++i) {
snapshotBufferComponent.getSnapshot(i);
snapshot != ;
snapshot.getPosition();
SpatialResource<Ref<EntityStore>, EntityStore> playerSpatialResource = (SpatialResource)cmdBuffer.getResource(EntityModule.get().getPlayerSpatialResourceType());
ObjectList<Ref<EntityStore>> results = SpatialResource.getThreadLocalReferenceList();
playerSpatialResource.getSpatialStructure().collect(pos, , results);
ParticleUtil.spawnParticleEffect(, pos.x, pos.y, pos.z, results, cmdBuffer);
}
}
}));
}
}
com/hypixel/hytale/server/core/command/commands/world/entity/snapshot/EntitySnapshotLengthCommand.java
package com.hypixel.hytale.server.core.command.commands.world.entity.snapshot;
import com.hypixel.hytale.server.core.Message;
import com.hypixel.hytale.server.core.command.system.CommandContext;
import com.hypixel.hytale.server.core.command.system.arguments.system.RequiredArg;
import com.hypixel.hytale.server.core.command.system.arguments.types.ArgTypes;
import com.hypixel.hytale.server.core.command.system.basecommands.CommandBase;
import com.hypixel.hytale.server.core.modules.entity.system.SnapshotSystems;
import java.util.concurrent.TimeUnit;
import javax.annotation.Nonnull;
public class EntitySnapshotLengthCommand extends CommandBase {
@Nonnull
private final RequiredArg<Integer> lengthArg;
public EntitySnapshotLengthCommand() {
super("length", "server.commands.entity.snapshot.length.desc");
this.lengthArg = this.withRequiredArg("length", "server.commands.entity.snapshot.length.length.desc", ArgTypes.INTEGER);
}
protected void executeSync(@Nonnull CommandContext context) {
int lengthMs = (Integer)this.lengthArg.get(context);
SnapshotSystems.HISTORY_LENGTH_NS = TimeUnit.MILLISECONDS.toNanos((long)lengthMs);
long TimeUnit.NANOSECONDS.toMillis(SnapshotSystems.HISTORY_LENGTH_NS);
context.sendMessage(Message.translation().param(, millis));
}
}
com/hypixel/hytale/server/core/command/commands/world/entity/snapshot/EntitySnapshotSubCommand.java
package com.hypixel.hytale.server.core.command.commands.world.entity.snapshot;
import com.hypixel.hytale.server.core.command.system.basecommands.AbstractCommandCollection;
public class EntitySnapshotSubCommand extends AbstractCommandCollection {
public EntitySnapshotSubCommand() {
super("snapshot", "server.commands.entity.snapshot.desc");
this.addAliases(new String[]{"snap"});
this.addSubCommand(new EntitySnapshotLengthCommand());
this.addSubCommand(new EntitySnapshotHistoryCommand());
}
}
com/hypixel/hytale/server/core/command/commands/world/entity/stats/EntityStatsAddCommand.java
package com.hypixel.hytale.server.core.command.commands.world.entity.stats;
import com.hypixel.hytale.common.util.StringUtil;
import com.hypixel.hytale.component.Ref;
import com.hypixel.hytale.component.Store;
import com.hypixel.hytale.server.core.Message;
import com.hypixel.hytale.server.core.command.system.CommandContext;
import com.hypixel.hytale.server.core.command.system.CommandUtil;
import com.hypixel.hytale.server.core.command.system.arguments.system.RequiredArg;
import com.hypixel.hytale.server.core.command.system.arguments.types.ArgTypes;
import com.hypixel.hytale.server.core.command.system.basecommands.AbstractTargetEntityCommand;
import com.hypixel.hytale.server.core.modules.entitystats.EntityStatMap;
import com.hypixel.hytale.server.core.modules.entitystats.EntityStatsModule;
import com.hypixel.hytale.server.core.modules.entitystats.asset.EntityStatType;
import com.hypixel.hytale.server.core.universe.world.World;
import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
import it.unimi.dsi.fastutil.objects.ObjectList;
import java.util.List;
import javax.annotation.Nonnull;
public class EntityStatsAddCommand extends AbstractTargetEntityCommand {
@Nonnull
private final RequiredArg<String> entityStatNameArg;
@Nonnull
private final RequiredArg<Integer> statAmountArg;
public EntityStatsAddCommand() {
super("add", );
.entityStatNameArg = .withRequiredArg(, , ArgTypes.STRING);
.statAmountArg = .withRequiredArg(, , ArgTypes.INTEGER);
}
{
(Integer).statAmountArg.get(context);
(String).entityStatNameArg.get(context);
addEntityStat(context, entities, statAmount, entityStatName, store);
}
{
EntityStatType.getAssetMap().getIndex(entityStatName);
(entityStatIndex == -) {
context.sendMessage(Message.translation().param(, entityStatName));
context.sendMessage(Message.translation().param(, StringUtil.sortByFuzzyDistance(entityStatName, EntityStatType.getAssetMap().getAssetMap().keySet(), CommandUtil.RECOMMEND_COUNT).toString()));
} {
(Ref<EntityStore> entity : entityRefs) {
(EntityStatMap)store.getComponent(entity, EntityStatsModule.get().getEntityStatMapComponentType());
(entityStatMapComponent != ) {
(entityStatMapComponent.get(entityStatIndex) == ) {
context.sendMessage(Message.translation().param(, entityStatName));
context.sendMessage(Message.translation().param(, StringUtil.sortByFuzzyDistance(entityStatName, EntityStatType.getAssetMap().getAssetMap().keySet(), CommandUtil.RECOMMEND_COUNT).toString()));
} {
entityStatMapComponent.addStatValue(entityStatIndex, ()statAmount);
context.sendMessage(Message.translation().param(, entityStatName).param(, newValueOfStat));
}
}
}
}
}
}
com/hypixel/hytale/server/core/command/commands/world/entity/stats/EntityStatsDumpCommand.java
package com.hypixel.hytale.server.core.command.commands.world.entity.stats;
import com.hypixel.hytale.component.ComponentType;
import com.hypixel.hytale.component.Ref;
import com.hypixel.hytale.component.Store;
import com.hypixel.hytale.server.core.Message;
import com.hypixel.hytale.server.core.command.system.CommandContext;
import com.hypixel.hytale.server.core.command.system.basecommands.AbstractTargetEntityCommand;
import com.hypixel.hytale.server.core.modules.entitystats.EntityStatMap;
import com.hypixel.hytale.server.core.modules.entitystats.EntityStatValue;
import com.hypixel.hytale.server.core.modules.entitystats.EntityStatsModule;
import com.hypixel.hytale.server.core.universe.world.World;
import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
import com.hypixel.hytale.server.core.util.message.MessageFormat;
import it.unimi.dsi.fastutil.objects.ObjectArrayList;
import it.unimi.dsi.fastutil.objects.ObjectList;
import java.util.List;
import javax.annotation.Nonnull;
public class EntityStatsDumpCommand extends AbstractTargetEntityCommand {
public EntityStatsDumpCommand() {
super("dump", "server.commands.entity.stats.dump.desc");
}
protected void execute(@Nonnull CommandContext context, @Nonnull ObjectList<Ref<EntityStore>> entities, @Nonnull World world, Store<EntityStore> store) {
dumpEntityStatsData(context, entities, store);
}
{
(Ref<EntityStore> entity : entities) {
ComponentType<EntityStore, EntityStatMap> component = EntityStatsModule.get().getEntityStatMapComponentType();
(EntityStatMap)store.getComponent(entity, component);
(statMap != ) {
ObjectArrayList<Message> values = <Message>(statMap.size());
( ; i < statMap.size(); ++i) {
statMap.get(i);
values.add(Message.translation().param(, entityStat.getId()).param(, entityStat.get()));
}
context.sendMessage(MessageFormat.list((Message), values));
}
}
}
}
com/hypixel/hytale/server/core/command/commands/world/entity/stats/EntityStatsGetCommand.java
package com.hypixel.hytale.server.core.command.commands.world.entity.stats;
import com.hypixel.hytale.common.util.StringUtil;
import com.hypixel.hytale.component.Ref;
import com.hypixel.hytale.component.Store;
import com.hypixel.hytale.server.core.Message;
import com.hypixel.hytale.server.core.command.system.CommandContext;
import com.hypixel.hytale.server.core.command.system.CommandUtil;
import com.hypixel.hytale.server.core.command.system.arguments.system.RequiredArg;
import com.hypixel.hytale.server.core.command.system.arguments.types.ArgTypes;
import com.hypixel.hytale.server.core.command.system.basecommands.AbstractTargetEntityCommand;
import com.hypixel.hytale.server.core.modules.entitystats.EntityStatMap;
import com.hypixel.hytale.server.core.modules.entitystats.EntityStatValue;
import com.hypixel.hytale.server.core.modules.entitystats.EntityStatsModule;
import com.hypixel.hytale.server.core.modules.entitystats.asset.EntityStatType;
import com.hypixel.hytale.server.core.universe.world.World;
import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
import it.unimi.dsi.fastutil.objects.ObjectList;
import java.util.List;
import javax.annotation.Nonnull;
public class EntityStatsGetCommand extends AbstractTargetEntityCommand {
@Nonnull
private final RequiredArg<String> entityStatNameArg;
public EntityStatsGetCommand() {
super("get", "server.commands.entity.stats.get.desc");
.entityStatNameArg = .withRequiredArg(, , ArgTypes.STRING);
}
{
(String).entityStatNameArg.get(context);
getEntityStat(context, entities, entityStat, store);
}
{
EntityStatType.getAssetMap().getIndex(entityStat);
(entityStatIndex == -) {
context.sendMessage(Message.translation().param(, entityStat));
context.sendMessage(Message.translation().param(, StringUtil.sortByFuzzyDistance(entityStat, EntityStatType.getAssetMap().getAssetMap().keySet(), CommandUtil.RECOMMEND_COUNT).toString()));
} {
(Ref<EntityStore> entity : entities) {
(EntityStatMap)store.getComponent(entity, EntityStatsModule.get().getEntityStatMapComponentType());
(entityStatMapComponent != ) {
entityStatMapComponent.get(entityStatIndex);
(value == ) {
context.sendMessage(Message.translation().param(, entityStat));
context.sendMessage(Message.translation().param(, StringUtil.sortByFuzzyDistance(entityStat, EntityStatType.getAssetMap().getAssetMap().keySet(), CommandUtil.RECOMMEND_COUNT).toString()));
} {
context.sendMessage(Message.translation().param(, value.getId()).param(, value.get()));
}
}
}
}
}
}
com/hypixel/hytale/server/core/command/commands/world/entity/stats/EntityStatsResetCommand.java
package com.hypixel.hytale.server.core.command.commands.world.entity.stats;
import com.hypixel.hytale.common.util.StringUtil;
import com.hypixel.hytale.component.Ref;
import com.hypixel.hytale.component.Store;
import com.hypixel.hytale.server.core.Message;
import com.hypixel.hytale.server.core.command.system.CommandContext;
import com.hypixel.hytale.server.core.command.system.CommandUtil;
import com.hypixel.hytale.server.core.command.system.arguments.system.RequiredArg;
import com.hypixel.hytale.server.core.command.system.arguments.types.ArgTypes;
import com.hypixel.hytale.server.core.command.system.basecommands.AbstractTargetEntityCommand;
import com.hypixel.hytale.server.core.modules.entitystats.EntityStatMap;
import com.hypixel.hytale.server.core.modules.entitystats.EntityStatsModule;
import com.hypixel.hytale.server.core.modules.entitystats.asset.EntityStatType;
import com.hypixel.hytale.server.core.universe.world.World;
import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
import it.unimi.dsi.fastutil.objects.ObjectList;
import java.util.List;
import javax.annotation.Nonnull;
public class EntityStatsResetCommand extends AbstractTargetEntityCommand {
@Nonnull
private final RequiredArg<String> entityStatNameArg;
public EntityStatsResetCommand() {
super("reset", "server.commands.entity.stats.reset.desc");
this.entityStatNameArg = .withRequiredArg(, , ArgTypes.STRING);
}
{
(String).entityStatNameArg.get(context);
resetEntityStat(context, entities, entityStat, store);
}
{
EntityStatType.getAssetMap().getIndex(entityStat);
(entityStatIndex == -) {
context.sendMessage(Message.translation().param(, entityStat));
context.sendMessage(Message.translation().param(, StringUtil.sortByFuzzyDistance(entityStat, EntityStatType.getAssetMap().getAssetMap().keySet(), CommandUtil.RECOMMEND_COUNT).toString()));
} {
(Ref<EntityStore> entity : entities) {
(EntityStatMap)store.getComponent(entity, EntityStatsModule.get().getEntityStatMapComponentType());
(entityStatMap != ) {
(entityStatMap.get(entityStatIndex) == ) {
context.sendMessage(Message.translation().param(, entityStat));
context.sendMessage(Message.translation().param(, StringUtil.sortByFuzzyDistance(entityStat, EntityStatType.getAssetMap().getAssetMap().keySet(), CommandUtil.RECOMMEND_COUNT).toString()));
} {
entityStatMap.resetStatValue(entityStatIndex);
context.sendMessage(Message.translation().param(, entityStat).param(, valueResetTo));
}
}
}
}
}
}
com/hypixel/hytale/server/core/command/commands/world/entity/stats/EntityStatsSetCommand.java
package com.hypixel.hytale.server.core.command.commands.world.entity.stats;
import com.hypixel.hytale.common.util.StringUtil;
import com.hypixel.hytale.component.Ref;
import com.hypixel.hytale.component.Store;
import com.hypixel.hytale.server.core.Message;
import com.hypixel.hytale.server.core.command.system.CommandContext;
import com.hypixel.hytale.server.core.command.system.CommandUtil;
import com.hypixel.hytale.server.core.command.system.arguments.system.RequiredArg;
import com.hypixel.hytale.server.core.command.system.arguments.types.ArgTypes;
import com.hypixel.hytale.server.core.command.system.basecommands.AbstractTargetEntityCommand;
import com.hypixel.hytale.server.core.modules.entitystats.EntityStatMap;
import com.hypixel.hytale.server.core.modules.entitystats.EntityStatsModule;
import com.hypixel.hytale.server.core.modules.entitystats.asset.EntityStatType;
import com.hypixel.hytale.server.core.universe.world.World;
import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
import it.unimi.dsi.fastutil.objects.ObjectList;
import java.util.List;
import javax.annotation.Nonnull;
public class EntityStatsSetCommand extends AbstractTargetEntityCommand {
@Nonnull
private final RequiredArg<String> entityStatNameArg;
@Nonnull
private final RequiredArg<Integer> statValueArg;
public EntityStatsSetCommand() {
super("set", );
.entityStatNameArg = .withRequiredArg(, , ArgTypes.STRING);
.statValueArg = .withRequiredArg(, , ArgTypes.INTEGER);
}
{
(Integer).statValueArg.get(context);
(String).entityStatNameArg.get(context);
setEntityStat(context, entities, newStatValue, entityStatName, store);
}
{
EntityStatType.getAssetMap().getIndex(entityStatName);
(entityStatIndex == -) {
context.sendMessage(Message.translation().param(, entityStatName));
context.sendMessage(Message.translation().param(, StringUtil.sortByFuzzyDistance(entityStatName, EntityStatType.getAssetMap().getAssetMap().keySet(), CommandUtil.RECOMMEND_COUNT).toString()));
} {
(Ref<EntityStore> entity : entities) {
(EntityStatMap)store.getComponent(entity, EntityStatsModule.get().getEntityStatMapComponentType());
(entityStatMap != ) {
(entityStatMap.get(entityStatIndex) == ) {
context.sendMessage(Message.translation().param(, entityStatName));
context.sendMessage(Message.translation().param(, StringUtil.sortByFuzzyDistance(entityStatName, EntityStatType.getAssetMap().getAssetMap().keySet(), CommandUtil.RECOMMEND_COUNT).toString()));
} {
entityStatMap.setStatValue(entityStatIndex, ()newStatValue);
context.sendMessage(Message.translation().param(, entityStatName).param(, newValueOfStat));
}
}
}
}
}
}
com/hypixel/hytale/server/core/command/commands/world/entity/stats/EntityStatsSetToMaxCommand.java
package com.hypixel.hytale.server.core.command.commands.world.entity.stats;
import com.hypixel.hytale.common.util.StringUtil;
import com.hypixel.hytale.component.Ref;
import com.hypixel.hytale.component.Store;
import com.hypixel.hytale.server.core.Message;
import com.hypixel.hytale.server.core.command.system.CommandContext;
import com.hypixel.hytale.server.core.command.system.CommandUtil;
import com.hypixel.hytale.server.core.command.system.arguments.system.RequiredArg;
import com.hypixel.hytale.server.core.command.system.arguments.types.ArgTypes;
import com.hypixel.hytale.server.core.command.system.basecommands.AbstractTargetEntityCommand;
import com.hypixel.hytale.server.core.modules.entitystats.EntityStatMap;
import com.hypixel.hytale.server.core.modules.entitystats.EntityStatValue;
import com.hypixel.hytale.server.core.modules.entitystats.EntityStatsModule;
import com.hypixel.hytale.server.core.modules.entitystats.asset.EntityStatType;
import com.hypixel.hytale.server.core.universe.world.World;
import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
import it.unimi.dsi.fastutil.objects.ObjectList;
import java.util.List;
import javax.annotation.Nonnull;
public class EntityStatsSetToMaxCommand extends AbstractTargetEntityCommand {
@Nonnull
private final RequiredArg<String> entityStatNameArg;
public EntityStatsSetToMaxCommand() {
super("settomax", "server.commands.entity.stats.settomax.desc");
.entityStatNameArg = .withRequiredArg(, , ArgTypes.STRING);
}
{
(String).entityStatNameArg.get(context);
setEntityStatMax(context, entities, entityStatName, store);
}
{
EntityStatType.getAssetMap().getIndex(entityStatName);
(entityStatIndex == -) {
context.sendMessage(Message.translation().param(, entityStatName));
context.sendMessage(Message.translation().param(, StringUtil.sortByFuzzyDistance(entityStatName, EntityStatType.getAssetMap().getAssetMap().keySet(), CommandUtil.RECOMMEND_COUNT).toString()));
} {
(Ref<EntityStore> entity : entities) {
(EntityStatMap)store.getComponent(entity, EntityStatsModule.get().getEntityStatMapComponentType());
(entityStatMap != ) {
entityStatMap.get(entityStatIndex);
(entityStatValue == ) {
context.sendMessage(Message.translation().param(, entityStatName));
context.sendMessage(Message.translation().param(, StringUtil.sortByFuzzyDistance(entityStatName, EntityStatType.getAssetMap().getAssetMap().keySet(), CommandUtil.RECOMMEND_COUNT).toString()));
} {
entityStatMap.setStatValue(entityStatIndex, entityStatValue.getMax());
context.sendMessage(Message.translation().param(, entityStatName).param(, newValueOfStat));
}
}
}
}
}
}
com/hypixel/hytale/server/core/command/commands/world/entity/stats/EntityStatsSubCommand.java
package com.hypixel.hytale.server.core.command.commands.world.entity.stats;
import com.hypixel.hytale.server.core.command.system.basecommands.AbstractCommandCollection;
public class EntityStatsSubCommand extends AbstractCommandCollection {
public EntityStatsSubCommand() {
super("stats", "server.commands.entity.stats.desc");
this.addAliases(new String[]{"stat"});
this.addSubCommand(new EntityStatsDumpCommand());
this.addSubCommand(new EntityStatsGetCommand());
this.addSubCommand(new EntityStatsSetCommand());
this.addSubCommand(new EntityStatsSetToMaxCommand());
this.addSubCommand(new EntityStatsResetCommand());
this.addSubCommand(new EntityStatsAddCommand());
}
}
com/hypixel/hytale/server/core/command/commands/world/worldgen/WorldGenBenchmarkCommand.java
package com.hypixel.hytale.server.core.command.commands.world.worldgen;
import com.hypixel.hytale.common.util.FormatUtil;
import com.hypixel.hytale.logger.HytaleLogger;
import com.hypixel.hytale.math.util.ChunkUtil;
import com.hypixel.hytale.math.vector.Vector2i;
import com.hypixel.hytale.server.core.Message;
import com.hypixel.hytale.server.core.command.system.CommandContext;
import com.hypixel.hytale.server.core.command.system.arguments.system.OptionalArg;
import com.hypixel.hytale.server.core.command.system.arguments.system.RequiredArg;
import com.hypixel.hytale.server.core.command.system.arguments.types.ArgTypes;
import com.hypixel.hytale.server.core.command.system.basecommands.CommandBase;
import com.hypixel.hytale.server.core.universe.world.World;
import com.hypixel.hytale.server.core.universe.world.worldgen.GeneratedChunk;
import com.hypixel.hytale.server.core.universe.world.worldgen.IBenchmarkableWorldGen;
import com.hypixel.hytale.server.core.universe.world.worldgen.IWorldGen;
import it.unimi.dsi.fastutil.longs.LongArrayList;
import java.io.File;
import java.io.FileWriter;
import java.util.HashSet;
import java.util.Set;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.RejectedExecutionException;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.logging.Level;
import javax.annotation.Nonnull;
public class WorldGenBenchmarkCommand extends CommandBase {
private static ();
Message.translation();
Message.translation();
Message.translation();
Message.translation();
Message.translation();
Message.translation();
Message.translation();
Message.translation();
Message.translation();
OptionalArg<World> worldArg;
OptionalArg<Integer> seedArg;
RequiredArg<Vector2i> pos1Arg;
RequiredArg<Vector2i> pos2Arg;
{
(, );
.worldArg = .withOptionalArg(, , ArgTypes.WORLD);
.seedArg = .withOptionalArg(, , ArgTypes.INTEGER);
.pos1Arg = .withRequiredArg(, , ArgTypes.VECTOR2I);
.pos2Arg = .withRequiredArg(, , ArgTypes.VECTOR2I);
}
{
(IS_RUNNING.get()) {
context.sendMessage(MESSAGE_COMMANDS_WORLD_GEN_BENCHMARK_ALREADY_IN_PROGRESS);
} {
(World).worldArg.getProcessed(context);
world.getName();
.seedArg.provided(context) ? (Integer).seedArg.get(context) : ()world.getWorldConfig().getSeed();
world.getChunkStore().getGenerator();
(!(worldGen IBenchmarkableWorldGen)) {
context.sendMessage(MESSAGE_COMMANDS_WORLD_GEN_BENCHMARK_BENCHMARK_NOT_SUPPORTED);
} {
(IBenchmarkableWorldGen)worldGen;
(Vector2i).pos1Arg.get(context);
(Vector2i).pos2Arg.get(context);
minX;
maxX;
(corner1.x < corner2.x) {
minX = ChunkUtil.chunkCoordinate(corner1.x);
maxX = ChunkUtil.chunkCoordinate(corner2.x);
} {
minX = ChunkUtil.chunkCoordinate(corner2.x);
maxX = ChunkUtil.chunkCoordinate(corner1.x);
}
minZ;
maxZ;
(corner1.y < corner2.y) {
minZ = ChunkUtil.chunkCoordinate(corner1.y);
maxZ = ChunkUtil.chunkCoordinate(corner2.y);
} {
minZ = ChunkUtil.chunkCoordinate(corner2.y);
maxZ = ChunkUtil.chunkCoordinate(corner1.y);
}
();
( minX; x <= maxX; ++x) {
( minZ; z <= maxZ; ++z) {
generatingChunks.add(ChunkUtil.indexChunk(x, z));
}
}
(IS_RUNNING.getAndSet()) {
context.sendMessage(MESSAGE_COMMANDS_WORLD_GEN_BENCHMARK_ABORT);
} {
context.sendMessage(MESSAGE_COMMANDS_WORLD_GEN_BENCHMARK_STARTED.param(, seed).param(, worldName).param(, generatingChunks.size()));
benchmarkableWorldGen.getBenchmark().start();
generatingChunks.size();
System.nanoTime();
( (() -> {
{
Set<CompletableFuture<GeneratedChunk>> currentChunks = ();
System.nanoTime();
{
System.nanoTime();
(thisTime >= nextBroadcast) {
world.execute(() -> world.sendMessage(MESSAGE_COMMANDS_WORLD_GEN_BENCHMARK_PROGRESS.param(, ()Math.round(( - ()generatingChunks.size() / ()chunkCount) * ) / )));
nextBroadcast = thisTime + ;
}
currentChunks.removeIf(CompletableFuture::isDone);
( currentChunks.size(); i < && !generatingChunks.isEmpty(); ++i) {
generatingChunks.removeLong(generatingChunks.size() - );
CompletableFuture<GeneratedChunk> future = worldGen.generate(seed, index, ChunkUtil.xOfChunkIndex(index), ChunkUtil.zOfChunkIndex(index), (idx) -> );
currentChunks.add(future);
}
} (!currentChunks.isEmpty());
FormatUtil.nanosToString(System.nanoTime() - startTime);
world.execute(() -> world.sendMessage(MESSAGE_COMMANDS_WORLD_GEN_BENCHMARK_DONE.param(, duration)));
world.execute(() -> world.sendMessage(MESSAGE_COMMANDS_WORLD_GEN_BENCHMARK_SAVING));
System.currentTimeMillis();
+ var10000 + + (maxX - minX) + + (maxZ - minZ) + + worldName + ;
();
( + File.separator + fileName);
folder.mkdirs();
{
(file);
{
fw.write((String)benchmarkableWorldGen.getBenchmark().buildReport().join());
world.execute(() -> world.sendMessage(MESSAGE_COMMANDS_WORLD_GEN_BENCHMARK_SAVE_DONE.param(, fileName)));
} (Throwable var30) {
{
fw.close();
} (Throwable x2) {
var30.addSuppressed(x2);
}
var30;
}
fw.close();
} (Exception e) {
((HytaleLogger.Api)HytaleLogger.getLogger().at(Level.SEVERE).withCause(e)).log();
world.execute(() -> world.sendMessage(MESSAGE_COMMANDS_WORLD_GEN_BENCHMARK_SAVE_FAILED));
}
benchmarkableWorldGen.getBenchmark().stop();
} (RejectedExecutionException var32) {
HytaleLogger.getLogger().at(Level.SEVERE).log();
} {
IS_RUNNING.set();
}
}, )).start();
}
}
}
}
}
com/hypixel/hytale/server/core/command/commands/world/worldgen/WorldGenCommand.java
package com.hypixel.hytale.server.core.command.commands.world.worldgen;
import com.hypixel.hytale.server.core.command.system.basecommands.AbstractCommandCollection;
public class WorldGenCommand extends AbstractCommandCollection {
public WorldGenCommand() {
super("worldgen", "server.commands.worldgen.desc");
this.addAliases(new String[]{"wg"});
this.addSubCommand(new WorldGenBenchmarkCommand());
this.addSubCommand(new WorldGenReloadCommand());
}
}
com/hypixel/hytale/server/core/command/commands/world/worldgen/WorldGenReloadCommand.java
package com.hypixel.hytale.server.core.command.commands.world.worldgen;
import com.hypixel.hytale.component.Store;
import com.hypixel.hytale.logger.HytaleLogger;
import com.hypixel.hytale.logger.sentry.SkipSentryException;
import com.hypixel.hytale.math.util.ChunkUtil;
import com.hypixel.hytale.math.util.MathUtil;
import com.hypixel.hytale.server.core.Message;
import com.hypixel.hytale.server.core.command.system.CommandContext;
import com.hypixel.hytale.server.core.command.system.arguments.system.FlagArg;
import com.hypixel.hytale.server.core.command.system.basecommands.AbstractAsyncWorldCommand;
import com.hypixel.hytale.server.core.universe.world.World;
import com.hypixel.hytale.server.core.universe.world.WorldConfig;
import com.hypixel.hytale.server.core.universe.world.storage.ChunkStore;
import com.hypixel.hytale.server.core.universe.world.storage.IChunkSaver;
import com.hypixel.hytale.server.core.universe.world.storage.component.ChunkSavingSystems;
import com.hypixel.hytale.server.core.universe.world.worldgen.IWorldGen;
import com.hypixel.hytale.server.core.universe.world.worldgen.WorldGenLoadException;
import com.hypixel.hytale.server.core.universe.world.worldmap.IWorldMap;
import com.hypixel.hytale.sneakythrow.SneakyThrow;
import com.hypixel.hytale.sneakythrow.supplier.ThrowableSupplier;
import it.unimi.dsi.fastutil.longs.LongIterator;
import it.unimi.dsi.fastutil.longs.LongSet;
import it.unimi.dsi.fastutil.objects.ObjectArrayList;
import java.io.IOException;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.logging.Level;
javax.annotation.Nonnull;
{
();
Message.translation();
Message.translation();
Message.translation();
Message.translation();
Message.translation();
Message.translation();
Message.translation();
Message.translation();
Message.translation();
.withFlagArg(, );
{
(, );
}
CompletableFuture<Void> {
(IS_RUNNING.get()) {
context.sendMessage(MESSAGE_COMMANDS_WORLD_GEN_RELOAD_ALREADY_IN_PROGRESS);
CompletableFuture.completedFuture((Object));
} {
context.sendMessage(MESSAGE_COMMANDS_WORLD_GEN_RELOAD_STARTED);
world.getWorldConfig();
world.getChunkStore();
(IS_RUNNING.getAndSet()) {
context.sendMessage(MESSAGE_COMMANDS_WORLD_GEN_BENCHMARK_ABORT);
CompletableFuture.completedFuture((Object));
} {
CompletableFuture var14;
{
worldConfig.getWorldGenProvider().getGenerator();
chunkComponentStore.setGenerator(worldGen);
worldConfig.setDefaultSpawnProvider(worldGen);
worldConfig.markChanged();
worldConfig.getWorldMapProvider().getGenerator(world);
world.getWorldMapManager().setGenerator(worldMap);
context.sendMessage(MESSAGE_COMMANDS_WORLD_GEN_RELOAD_COMPLETE);
.clearArg.provided(context) ? clearChunks(context, world) : CompletableFuture.completedFuture((Object));
} (WorldGenLoadException e) {
context.sendMessage(Message.translation().param(, e.getTraceMessage()));
((HytaleLogger.Api)HytaleLogger.getLogger().at(Level.SEVERE).withCause( (e))).log();
var14 = CompletableFuture.completedFuture((Object));
} (Exception e) {
context.sendMessage(Message.translation().param(, e.getMessage()));
((HytaleLogger.Api)HytaleLogger.getLogger().at(Level.SEVERE).withCause(e)).log();
var14 = CompletableFuture.completedFuture((Object));
var14;
} {
IS_RUNNING.set();
}
var14;
}
}
}
CompletableFuture<Void> {
world.getChunkStore();
Store<ChunkStore> componentStore = chunkComponentStore.getStore();
ChunkSavingSystems. (ChunkSavingSystems.Data)componentStore.getResource(ChunkStore.SAVE_RESOURCE);
data.isSaving = ;
data.clearSaveQueue();
context.sendMessage(MESSAGE_COMMANDS_WORLD_GEN_RELOAD_CHUNK_SAVING_DISABLED);
context.sendMessage(MESSAGE_COMMANDS_WORLD_GEN_RELOAD_DELETING_CHUNKS);
chunkComponentStore.getSaver();
(saver == ) {
context.sendMessage(MKESSAGE_COMMANDS_WORLD_GEN_RELOAD_CHUNK_SAVING_ENABLED);
CompletableFuture.completedFuture((Object));
} {
CompletableFuture.supplyAsync(SneakyThrow.sneakySupplier((ThrowableSupplier)(() -> {
{
saver.getIndexes();
} (IOException e) {
((HytaleLogger.Api)HytaleLogger.getLogger().at(Level.SEVERE).withCause(e)).log();
context.sendMessage(Message.translation().param(, e.getMessage()));
SneakyThrow.sneakyThrow(e);
}
})), world).thenComposeAsync((indexes) -> {
();
()indexes.size();
ObjectArrayList<CompletableFuture<Void>> futures = <CompletableFuture<Void>>();
indexes.iterator();
(iterator.hasNext()) {
iterator.nextLong();
ChunkUtil.xOfChunkIndex(index);
ChunkUtil.zOfChunkIndex(index);
futures.add(saver.removeHolder(x, z).thenRun(() -> {
counter.getAndIncrement();
(i > && i % == ) {
world.execute(() -> context.sendMessage(Message.translation().param(, MathUtil.round(()(i * ) / total, ))));
}
}));
}
CompletableFuture.allOf((CompletableFuture[])futures.toArray((x$) -> [x$]));
}, world).thenComposeAsync((aVoid) -> {
context.sendMessage(MESSAGE_COMMANDS_WORLD_GEN_RELOAD_REGENERATING_LOADED_CHUNKS);
chunkComponentStore.getChunkIndexes();
ObjectArrayList<CompletableFuture<?>> regenerateFutures = <CompletableFuture<?>>();
chunkIndexes.iterator();
(chunkIterator.hasNext()) {
chunkIterator.nextLong();
regenerateFutures.add(chunkComponentStore.getChunkReferenceAsync(index, ));
}
CompletableFuture.allOf((CompletableFuture[])regenerateFutures.toArray((x$) -> [x$]));
}, world).thenRunAsync(() -> {
Store<ChunkStore> chunkStore = chunkComponentStore.getStore();
ChunkSavingSystems. (ChunkSavingSystems.Data)chunkStore.getResource(ChunkStore.SAVE_RESOURCE);
saveData.isSaving = ;
context.sendMessage(MESSAGE_COMMANDS_WORLD_GEN_RELOAD_CHUNK_SAVING_ENABLED);
}, world);
}
}
}
com/hypixel/hytale/server/core/command/system/AbbreviationMap.java
package com.hypixel.hytale.server.core.command.system;
import it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap;
import java.util.Collections;
import java.util.Map;
import java.util.Objects;
import javax.annotation.Nonnull;
public class AbbreviationMap<Value> {
private final Map<String, Value> abbreviationMap;
public AbbreviationMap(@Nonnull Map<String, Value> abbreviationMap) {
this.abbreviationMap = abbreviationMap;
}
public Value get(@Nonnull String abbreviation) {
return (Value)this.abbreviationMap.get(abbreviation.toLowerCase());
}
@Nonnull
public static <V> AbbreviationMapBuilder<V> create() {
return new AbbreviationMapBuilder<V>();
}
public static class AbbreviationMapBuilder<Value> {
private final Map<String, Value> keys = new Object2ObjectOpenHashMap<String, Value>();
public AbbreviationMapBuilder() {
}
@Nonnull
public AbbreviationMapBuilder<Value> {
(.keys.putIfAbsent(key.toLowerCase(), value) != ) {
( + key);
} {
;
}
}
AbbreviationMap<Value> {
Object2ObjectOpenHashMap<String, Value> abbreviationMap = <String, Value>();
(Map.Entry<String, Value> entry : .keys.entrySet()) {
.appendAbbreviation((String)entry.getKey(), entry.getValue(), abbreviationMap);
}
abbreviationMap.values().removeIf(Objects::isNull);
abbreviationMap.trim();
<Value>(Collections.unmodifiableMap(abbreviationMap));
}
{
map.put(key, value);
( ; i < key.length(); ++i) {
key.substring(, key.length() - i);
(Value)map.get(substring);
(existingAbbreviationValue == ) {
map.put(substring, value);
} (!.keys.containsKey(substring) && !existingAbbreviationValue.equals(value)) {
map.put(substring, (Object));
}
}
}
}
}
com/hypixel/hytale/server/core/command/system/AbstractCommand.java
package com.hypixel.hytale.server.core.command.system;
import com.hypixel.hytale.common.util.StringUtil;
import com.hypixel.hytale.logger.HytaleLogger;
import com.hypixel.hytale.protocol.GameMode;
import com.hypixel.hytale.server.core.Constants;
import com.hypixel.hytale.server.core.Message;
import com.hypixel.hytale.server.core.command.system.arguments.system.AbstractOptionalArg;
import com.hypixel.hytale.server.core.command.system.arguments.system.ArgWrapper;
import com.hypixel.hytale.server.core.command.system.arguments.system.Argument;
import com.hypixel.hytale.server.core.command.system.arguments.system.DefaultArg;
import com.hypixel.hytale.server.core.command.system.arguments.system.FlagArg;
import com.hypixel.hytale.server.core.command.system.arguments.system.OptionalArg;
import com.hypixel.hytale.server.core.command.system.arguments.system.RequiredArg;
import com.hypixel.hytale.server.core.command.system.arguments.system.WrappedArg;
import com.hypixel.hytale.server.core.command.system.arguments.types.ArgumentType;
import com.hypixel.hytale.server.core.command.system.arguments.types.ListArgumentType;
import com.hypixel.hytale.server.core.command.system.basecommands.AbstractCommandCollection;
import com.hypixel.hytale.server.core.command.system.exceptions.GeneralCommandException;
import com.hypixel.hytale.server.core.modules.i18n.I18nModule;
import com.hypixel.hytale.server.core.plugin.PluginBase;
import it.unimi.dsi.fastutil.ints.Int2ObjectMap;
import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap;
import it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap;
import it.unimi.dsi.fastutil.objects.ObjectArrayList;
import it.unimi.dsi.fastutil.objects.ObjectBooleanPair;
import java.util.Arrays;
java.util.HashSet;
java.util.LinkedHashMap;
java.util.List;
java.util.Map;
java.util.Objects;
java.util.Set;
java.util.concurrent.CompletableFuture;
javax.annotation.Nonnull;
javax.annotation.Nullable;
{
HytaleLogger.forEnclosingClass();
String[] EMPTY_STRING_ARRAY = [];
Message.translation();
Message.translation();
Message.translation();
Message.translation();
Message.translation();
;
;
;
AbstractCommand parentCommand;
String name;
Set<String> aliases;
String description;
List<RequiredArg<?>> requiredArguments;
Map<String, AbstractOptionalArg<?, ?>> optionalArguments;
AbbreviationMap<AbstractOptionalArg<?, ?>> argumentAbbreviationMap;
Map<String, AbstractCommand> subCommands;
Map<String, String> subCommandsAliases;
Int2ObjectMap<AbstractCommand> variantCommands;
CommandOwner owner;
String permission;
List<String> permissionGroups;
totalNumRequiredParameters;
requiresConfirmation;
unavailableInSingleplayer;
allowsExtraArguments;
hasBeenRegistered;
{
.aliases = ();
.requiredArguments = <RequiredArg<?>>();
.optionalArguments = <String, AbstractOptionalArg<?, ?>>();
.subCommands = ();
.subCommandsAliases = ();
.variantCommands = <AbstractCommand>();
.name = name == ? : name.toLowerCase();
.description = description;
.requiresConfirmation = requiresConfirmation;
(requiresConfirmation) {
.registerOptionalArg( (, , ));
}
}
{
(name, description, );
}
{
((String), description);
}
{
.owner = owner;
(.permission == && .canGeneratePermission()) {
.permission = .generatePermission();
}
(AbstractCommand subCommand : .subCommands.values()) {
subCommand.setOwner(owner);
}
(AbstractCommand variantCommand : .variantCommands.values()) {
variantCommand.setOwner(owner);
}
}
{
;
}
String {
.name == ? : .name.toLowerCase();
}
String {
.generatePermissionNode();
(.parentCommand != ) {
.parentCommand.permission == ? .parentCommand.generatePermission() : .parentCommand.permission;
String generatedPermission;
(selfNode != && !selfNode.isEmpty()) {
generatedPermission = parentPermission + + selfNode;
} {
generatedPermission = parentPermission;
}
((HytaleLogger.Api)LOGGER.atFine()).log( + generatedPermission + );
generatedPermission;
} {
.owner;
(generatedPermission PluginBase) {
(PluginBase)generatedPermission;
plugin.getBasePermission();
var10000 + + selfNode;
} (.owner CommandManager) {
+ selfNode;
} {
();
}
}
}
List<String> {
.permissionGroups;
}
{
.permissionGroups = Arrays.asList(groups);
}
{
.setPermissionGroups(gameMode == ? : gameMode.toString());
}
Map<String, Set<String>> {
Map<String, Set<String>> permissionsByGroup = <String, Set<String>>();
.putRecursivePermissionGroups(permissionsByGroup);
permissionsByGroup;
}
{
List<String> permissionGroups = .permissionGroups;
(permissionGroups == && .parentCommand != ) {
permissionGroups = .parentCommand.permissionGroups;
}
(permissionGroups != && .permission != ) {
(String group : permissionGroups) {
(group != ) {
((Set)permissionsByGroup.computeIfAbsent(group, (k) -> ())).add(.permission);
}
}
}
(AbstractCommand subCommand : .subCommands.values()) {
subCommand.putRecursivePermissionGroups(permissionsByGroup);
}
}
{
.unavailableInSingleplayer = unavailableInSingleplayer;
}
{
.allowsExtraArguments = allowsExtraArguments;
}
MatchResult {
.matches(language, search, termDepth, );
}
MatchResult {
(.name != && .name.contains(search)) {
MatchResult.of(termDepth, depth, , .name, search);
} {
(String alias : .aliases) {
(alias.contains(search)) {
MatchResult.of(termDepth, depth, , alias, search);
}
}
(AbstractOptionalArg<?, ?> opt : .optionalArguments.values()) {
(opt.getName().contains(search)) {
MatchResult.of(termDepth, depth, , opt.getName(), search);
}
(String alias : opt.getAliases()) {
(alias.contains(search)) {
MatchResult.of(termDepth, depth, , alias, search);
}
}
}
(RequiredArg<?> opt : .requiredArguments) {
(opt.getName().contains(search)) {
MatchResult.of(termDepth, depth, , opt.getName(), search);
}
}
(.description != ) {
I18nModule.get().getMessage(language, .description);
(descriptionMessage != && descriptionMessage.contains(search)) {
MatchResult.of(termDepth, depth, , descriptionMessage, search);
}
}
(AbstractOptionalArg<?, ?> opt : .optionalArguments.values()) {
opt.getDescription();
(description != ) {
I18nModule.get().getMessage(language, description);
(usageDescription != && usageDescription.contains(search)) {
MatchResult.of(termDepth, depth, , usageDescription, search);
}
}
}
(AbstractCommand subCommand : .subCommands.values()) {
subCommand.matches(language, search, termDepth, depth + );
(result != MatchResult.NONE) {
result;
}
}
(AbstractCommand variantCommand : .variantCommands.values()) {
variantCommand.matches(language, search, termDepth, depth + );
(result != MatchResult.NONE) {
result;
}
}
MatchResult.NONE;
}
}
GeneralCommandException {
.hasBeenRegistered = ;
(AbstractCommand command : .subCommands.values()) {
command.completeRegistration();
}
(AbstractCommand command : .variantCommands.values()) {
command.completeRegistration();
}
.validateVariantNumberOfRequiredParameters( ());
.validateDefaultArguments( ());
.createOptionalArgumentAbbreviationMap();
}
{
AbbreviationMap.AbbreviationMapBuilder<AbstractOptionalArg<?, ?>> abbreviationMapBuilder = AbbreviationMap.<AbstractOptionalArg<?, ?>>create();
(AbstractOptionalArg<?, ?> abstractOptionalArg : .optionalArguments.values()) {
abbreviationMapBuilder.put(abstractOptionalArg.getName(), abstractOptionalArg);
(String alias : abstractOptionalArg.getAliases()) {
abbreviationMapBuilder.put(alias, abstractOptionalArg);
}
}
.argumentAbbreviationMap = abbreviationMapBuilder.build();
}
{
(Int2ObjectMap.Entry<AbstractCommand> entry : .variantCommands.int2ObjectEntrySet()) {
(.totalNumRequiredParameters == ((AbstractCommand)entry.getValue()).totalNumRequiredParameters) {
.getFullyQualifiedName();
result.fail(Message.raw( + var10001 + + ((AbstractCommand)entry.getValue()).toString() + + .totalNumRequiredParameters + ));
;
}
}
}
{
(AbstractOptionalArg<?, ?> value : .optionalArguments.values()) {
(value DefaultArg<?> defaultArg) {
defaultArg.validateDefaultValue(parseResult);
}
}
}
{
.permission = permission;
}
String {
(.parentCommand != ) {
(.isVariant()) {
.parentCommand.getFullyQualifiedName();
} {
.parentCommand.getFullyQualifiedName();
var10000 + + .name;
}
} {
.name;
}
}
{
.parentCommand == ? : .parentCommand.countParents() + ;
}
{
(.hasBeenRegistered) {
();
} (.name == ) {
();
} {
(String alias : aliases) {
.aliases.add(alias.toLowerCase());
}
}
}
{
(.hasBeenRegistered) {
();
} (.isVariant()) {
();
} (command.name == ) {
();
} (command.parentCommand != ) {
();
} {
command.parentCommand = ;
(.subCommands.containsKey(command.name)) {
();
} (.subCommandsAliases.containsKey(command.name)) {
( + command.name);
} {
.subCommands.put(command.name, command);
(String alias : command.aliases) {
(.subCommandsAliases.containsKey(alias) || .subCommands.containsKey(alias)) {
( + alias);
}
.subCommandsAliases.put(alias, command.name);
}
command.hasBeenRegistered = ;
}
}
}
{
(.hasBeenRegistered) {
();
} (.isVariant()) {
();
} (command.name != ) {
();
} (command.parentCommand != ) {
();
} {
(AbstractCommand).variantCommands.put(command.totalNumRequiredParameters, command);
(variantWithSameNumRequiredParameters != ) {
command.totalNumRequiredParameters;
( + var10002 + + variantWithSameNumRequiredParameters.getClass().getName());
} {
command.parentCommand = ;
command.hasBeenRegistered = ;
}
}
}
CompletableFuture<Void> {
parserContext.convertToSubCommand();
.acceptCall0(sender, parserContext, parseResult);
}
CompletableFuture<Void> {
parserContext.getNumPreOptionalTokens();
ObjectBooleanPair<CompletableFuture<Void>> completableFutureBooleanPair = .checkForExecutingSubcommands(sender, parserContext, parseResult, numberOfPreOptionalTokens);
(parseResult.failed()) {
;
} (completableFutureBooleanPair.rightBoolean()) {
(CompletableFuture)completableFutureBooleanPair.left();
} (!.hasPermission(sender)) {
parseResult.fail(MESSAGE_COMMANDS_PARSING_ERROR_NO_PERMISSION_FOR_COMMAND);
;
} ( AbstractCommandCollection && numberOfPreOptionalTokens != ) {
HashSet<String> commandNames = (.subCommands.keySet());
commandNames.addAll(.subCommandsAliases.keySet());
parserContext.getFirstToken();
+ .getFullyQualifiedName() + ;
commandSuggestionPrefix + String.join(commandSuggestionPrefix, StringUtil.sortByFuzzyDistance(firstToken, commandNames, ));
parseResult.fail(Message.translation().param(, firstToken).param(, suggestedCommands));
;
} (parserContext.isHelpSpecified()) {
sender.sendMessage(.getUsageString(sender));
;
} (.unavailableInSingleplayer && Constants.SINGLEPLAYER) {
parseResult.fail(MESSAGE_COMMAND_SINGLEPLAYER);
;
} (.requiresConfirmation && !parserContext.isConfirmationSpecified()) {
parseResult.fail(MESSAGE_COMMANDS_PARSING_ERROR_ATTEMPTED_UNSAFE);
;
} {
(.allowsExtraArguments) {
(numberOfPreOptionalTokens < .totalNumRequiredParameters) {
parseResult.fail(Message.translation().param(, .totalNumRequiredParameters).param(, numberOfPreOptionalTokens).insert().insert(Message.translation().param(, .getUsageShort(sender, ))).insert().insert(Message.translation().param(, .getFullyQualifiedName())));
;
}
} (.totalNumRequiredParameters != numberOfPreOptionalTokens) {
parseResult.fail(Message.translation().param(, .totalNumRequiredParameters).param(, numberOfPreOptionalTokens).insert().insert(Message.translation().param(, .getUsageShort(sender, ))).insert().insert(Message.translation().param(, .getFullyQualifiedName())));
;
}
(, sender, parserContext.getInputString());
.processRequiredArguments(parserContext, parseResult, commandContext);
(parseResult.failed()) {
;
} {
.processOptionalArguments(parserContext, parseResult, commandContext);
parseResult.failed() ? : .execute(commandContext);
}
}
}
{
.getPermission();
(permission == ) {
;
} (sender.hasPermission(permission)) {
.parentCommand == ? : .parentCommand.hasPermission(sender);
} {
;
}
}
ObjectBooleanPair<CompletableFuture<Void>> {
(parserContext.getNumPreOptSingleValueTokensBeforeListTokens() >= ) {
(!.subCommands.isEmpty()) {
parserContext.getPreOptionalSingleValueToken();
(subCommandName != ) {
subCommandName = subCommandName.toLowerCase();
}
(AbstractCommand).subCommands.get(subCommandName);
(subCommand != ) {
parserContext.convertToSubCommand();
ObjectBooleanPair.<CompletableFuture<Void>>of(subCommand.acceptCall0(sender, parserContext, parseResult), );
}
(String).subCommandsAliases.get(subCommandName);
(alias != ) {
parserContext.convertToSubCommand();
ObjectBooleanPair.<CompletableFuture<Void>>of(((AbstractCommand).subCommands.get(alias)).acceptCall0(sender, parserContext, parseResult), );
}
}
(AbstractCommand).variantCommands.get(numberOfPreOptionalTokens);
(.totalNumRequiredParameters != numberOfPreOptionalTokens && commandVariant != ) {
ObjectBooleanPair.<CompletableFuture<Void>>of(commandVariant.acceptCall0(sender, parserContext, parseResult), );
}
}
ObjectBooleanPair.<CompletableFuture<Void>>of((Object), );
}
{
;
(RequiredArg<?> requiredArgument : .requiredArguments) {
(requiredArgument.getArgumentType().isListArgument() && parserContext.isListToken(currentReqArgIndex)) {
ParserContext. parserContext.getPreOptionalListToken(currentReqArgIndex);
++currentReqArgIndex;
commandContext.appendArgumentData(requiredArgument, preOptionalTokenContext.getTokens(), , parseResult);
} {
String[] argParameters = [requiredArgument.getArgumentType().getNumberOfParameters()];
( ; i < requiredArgument.getArgumentType().getNumberOfParameters(); ++i) {
(parserContext.isListToken(currentReqArgIndex)) {
parseResult.fail(Message.translation().param(, requiredArgument.getName()));
;
}
argParameters[i] = parserContext.getPreOptionalSingleValueToken(currentReqArgIndex);
++currentReqArgIndex;
}
commandContext.appendArgumentData(requiredArgument, argParameters, , parseResult);
(parseResult.failed()) {
;
}
}
}
}
{
(Map.Entry<String, List<List<String>>> optionalArgContext : parserContext.getOptionalArgs()) {
AbstractOptionalArg<? <?, ?>, ?> optionalArg = .argumentAbbreviationMap.get((String)optionalArgContext.getKey());
(optionalArg == ) {
parseResult.fail(Message.translation().param(, (String)optionalArgContext.getKey()));
;
}
(optionalArg.getPermission() != && !commandContext.sender().hasPermission(optionalArg.getPermission())) {
parseResult.fail(Message.translation().param(, (String)optionalArgContext.getKey()));
;
}
List<List<String>> optionalArgValues = (List)optionalArgContext.getValue();
(optionalArg.getArgumentType().isListArgument() && optionalArgValues.size() > ) {
String[] optionalArgParseValues = [optionalArgValues.size() * ((List)optionalArgValues.getFirst()).size()];
( ; i < optionalArgValues.size(); ++i) {
List<String> values = (List)optionalArgValues.get(i);
( ; k < values.size(); ++k) {
optionalArgParseValues[i * values.size() + k] = (String)values.get(k);
}
}
commandContext.appendArgumentData(optionalArg, optionalArgParseValues, , parseResult);
} {
commandContext.appendArgumentData(optionalArg, optionalArgValues.isEmpty() ? EMPTY_STRING_ARRAY : (String[])((List)optionalArgValues.getFirst()).toArray(EMPTY_STRING_ARRAY), , parseResult);
}
}
(AbstractOptionalArg<?, ?> optionalArg : .optionalArguments.values()) {
optionalArg.verifyArgumentDependencies(commandContext, parseResult);
}
}
CompletableFuture<Void> ;
Message {
Message.raw();
(RequiredArg<?> requiredArgument : .requiredArguments) {
requiredArgsMessage.insert().insert(requiredArgument.getUsageMessageWithoutDescription());
(requiredArgument.getArgumentType().isListArgument()) {
requiredArgsMessage.insert();
}
}
.requiresConfirmation ? MESSAGE_COMMANDS_PARSING_USAGE_REQUIRES_CONFIRMATION : Message.raw();
Message.raw();
;
(RequiredArg<?> requiredArgument : .requiredArguments) {
requiredArgsShown = ;
requiredArgs.insert().insert(requiredArgument.getUsageMessage());
}
Message.raw();
;
Message.raw();
;
Message.raw();
;
(Map.Entry<String, AbstractOptionalArg<?, ?>> entry : .optionalArguments.entrySet()) {
AbstractOptionalArg<? <?, ?>, ?> arg = (AbstractOptionalArg)entry.getValue();
(arg.getPermission() == || sender.hasPermission(arg.getPermission())) {
Objects.requireNonNull(arg);
;
(arg.typeSwitch<invokedynamic>(arg, var16)) {
:
(OptionalArg)arg;
optionalArgsShown = ;
optionalArgs.insert().insert(arg.getUsageMessage());
;
:
(DefaultArg)arg;
defaultArgsShown = ;
defaultArgs.insert().insert(arg.getUsageMessage());
;
:
(FlagArg)arg;
flagArgsShown = ;
flagArgs.insert().insert(arg.getUsageMessage());
}
}
}
(requiredArgsShown) {
requiredArgs = Message.translation().param(, requiredArgs);
}
(optionalArgsShown) {
optionalArgs = Message.translation().param(, optionalArgs);
}
(flagArgsShown) {
flagArgs = Message.translation().param(, flagArgs);
}
(defaultArgsShown) {
defaultArgs = Message.translation().param(, defaultArgs);
}
Message.raw();
(AbstractCommand value : .variantCommands.values()) {
(value.hasPermission(sender)) {
variantsMessage.insert(Message.translation().param(, Message.translation()).param(, value.getUsageString(sender)));
}
}
Message.raw();
(AbstractCommand value : .subCommands.values()) {
(value.hasPermission(sender)) {
subcommandsMessage.insert(Message.translation().param(, Message.translation()).param(, value.getUsageString(sender)));
}
}
Message.raw();
HashSet<ArgumentType<?>> allArgumentTypes = ();
(RequiredArg<?> requiredArgument : .requiredArguments) {
allArgumentTypes.add(requiredArgument.getArgumentType());
}
(AbstractOptionalArg<?, ?> optionalArgument : .optionalArguments.values()) {
allArgumentTypes.add(optionalArgument.getArgumentType());
}
(ArgumentType<?> argumentType : allArgumentTypes) {
argTypesMessage.insert().insert(argumentType.getName()).insert().insert(argumentType.getArgumentUsage()).insert().insert().insert(String.join(, argumentType.getExamples())).insert();
}
Message.translation().param(, .getFullyQualifiedName()).param(, Message.translation(.description)).param(, requiredArgsMessage).param(, requiresConfirmationMessage).param(, requiredArgs).param(, optionalArgs).param(, defaultArgs).param(, flagArgs).param(, argTypesMessage).param(, variantsMessage).param(, subcommandsMessage);
}
Message {
.repeat(.countParents());
(.subCommands.isEmpty() && .variantCommands.isEmpty()) {
.getFullyQualifiedName();
Message.raw(indent).insert(fullyQualify ? (fullyQualifiedName != ? fullyQualifiedName : ) : (.name != ? .name : ));
(RequiredArg<?> requiredArgument : .requiredArguments) {
message.insert().insert(requiredArgument.getUsageOneLiner().color());
}
(AbstractOptionalArg<?, ?> optionalArgument : .optionalArguments.values()) {
(optionalArgument.hasPermission(sender)) {
message.insert().insert(optionalArgument.getUsageOneLiner().color());
}
}
message;
} {
.parentCommand == ? : indent;
Message.raw(prefix).insert(.name);
;
(AbstractCommand variantCommand : .variantCommands.values()) {
(variantCommand.hasPermission(sender)) {
message.insert().insert(indent).insert(variantCommand.getUsageShort(sender, fullyQualify));
anyPermissible = ;
}
}
(AbstractCommand subCommand : .subCommands.values()) {
(subCommand.hasPermission(sender)) {
message.insert().insert(indent).insert(subCommand.getUsageShort(sender, fullyQualify));
anyPermissible = ;
}
}
(!anyPermissible) {
message.insert().insert(MESSAGE_COMMANDS_HELP_NO_PERMISSIBLE_SUB_COMMAND);
}
message;
}
}
<R <D>, D> R {
(.hasBeenRegistered) {
();
} (requiredArgument.getCommandRegisteredTo().equals() && !.requiredArguments.contains(requiredArgument)) {
.totalNumRequiredParameters += requiredArgument.getArgumentType().getNumberOfParameters();
.requiredArguments.add(requiredArgument);
requiredArgument;
} {
();
}
}
<R <?, D>, D> R {
(.hasBeenRegistered) {
();
} (optionalArgument.getCommandRegisteredTo().equals() && !.optionalArguments.containsKey(optionalArgument.getName().toLowerCase())) {
.optionalArguments.put(optionalArgument.getName().toLowerCase(), optionalArgument);
optionalArgument;
} {
();
}
}
<D> RequiredArg<D> {
.registerRequiredArg( (, name, description, argType));
}
<W <D>, D> W {
wrapper.wrapArg(.registerRequiredArg( (, name, description, wrapper.argumentType())));
}
<D> RequiredArg<List<D>> {
.registerRequiredArg( (, name, description, (argType)));
}
<D> DefaultArg<D> {
(DefaultArg).registerOptionalArg( (, name, description, argType, defaultValue, defaultValueDescription));
}
<W <D>, D> W {
wrapper.wrapArg(.registerOptionalArg( (, name, description, wrapper.argumentType(), defaultValue, defaultValueDescription)));
}
<D> DefaultArg<List<D>> {
(DefaultArg).registerOptionalArg( (, name, description, (argType), defaultValue, defaultValueDescription));
}
<D> OptionalArg<D> {
(OptionalArg).registerOptionalArg( (, name, description, argType));
}
<W <D>, D> W {
wrapper.wrapArg(.registerOptionalArg( (, name, description, wrapper.argumentType())));
}
<D> OptionalArg<List<D>> {
(OptionalArg).registerOptionalArg( (, name, description, (argType)));
}
FlagArg {
(FlagArg).registerOptionalArg( (, name, description));
}
{
.name == ;
}
String {
.name;
}
Set<String> {
.aliases;
}
String {
.description;
}
CommandOwner {
.owner;
}
String {
.permission;
}
Map<String, AbstractCommand> {
.subCommands;
}
List<RequiredArg<?>> getRequiredArguments() {
.requiredArguments;
}
{
.hasBeenRegistered;
}
}
com/hypixel/hytale/server/core/command/system/CommandContext.java
package com.hypixel.hytale.server.core.command.system;
import com.hypixel.hytale.component.Ref;
import com.hypixel.hytale.server.core.Message;
import com.hypixel.hytale.server.core.command.system.arguments.system.AbstractOptionalArg;
import com.hypixel.hytale.server.core.command.system.arguments.system.Argument;
import com.hypixel.hytale.server.core.command.system.arguments.system.DefaultArg;
import com.hypixel.hytale.server.core.command.system.exceptions.SenderTypeException;
import com.hypixel.hytale.server.core.entity.entities.Player;
import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
import it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap;
import java.util.Map;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
public final class CommandContext {
@Nonnull
private final AbstractCommand calledCommand;
@Nonnull
private final String inputString;
@Nonnull
private final CommandSender sender;
@Nonnull
private final Map<Argument<?, ?>, Object> argValues;
@Nonnull
private final Map<Argument<?, ?>, String[]> argInput;
public CommandContext(@Nonnull AbstractCommand calledCommand, @Nonnull CommandSender sender, @Nonnull String inputString) {
.calledCommand = calledCommand;
.inputString = inputString;
.sender = sender;
.argValues = <Argument<?, ?>, Object>();
.argInput = <Argument<?, ?>, String[]>();
}
<DataType> {
(data.length == && argument DefaultArg<?> defaultArg) {
.argValues.put(argument, defaultArg.getDefaultValue());
} {
argument.getArgumentType().getNumberOfParameters();
((!asListArgument || data.length % numParameters == ) && (asListArgument || data.length == numParameters)) {
argument.getArgumentType().parse(data, parseResult);
(!parseResult.failed()) {
argument.validate(convertedValue, parseResult);
(!parseResult.failed()) {
.argValues.put(argument, convertedValue);
.argInput.put(argument, data);
}
}
} {
parseResult.fail(Message.translation().param(, argument.getName()).param(, argument.getArgumentType().getNumberOfParameters()).param(, data.length).param(, String.join(, data)));
}
}
}
<DataType> DataType {
(!.argValues.containsKey(argument) && argument AbstractOptionalArg.DefaultValueArgument<?> defaultValueArgument) {
defaultValueArgument.getDefaultValue();
.argValues.put(argument, defaultValue);
(DataType)defaultValue;
} {
(DataType).argValues.get(argument);
}
}
String[] getInput( Argument<?, ?> argument) {
(String[]).argInput.get(argument);
}
{
.argValues.containsKey(argument);
}
String {
.inputString;
}
{
.sender.sendMessage(message);
}
{
.sender Player;
}
<T > T {
{
(T)(senderType.cast(.sender));
} (ClassCastException var3) {
(senderType);
}
}
Ref<EntityStore> {
((Player).senderAs(Player.class)).getReference();
}
CommandSender {
.sender;
}
AbstractCommand {
.calledCommand;
}
}
com/hypixel/hytale/server/core/command/system/CommandManager.java
package com.hypixel.hytale.server.core.command.system;
import com.hypixel.hytale.common.util.CompletableFutureUtil;
import com.hypixel.hytale.component.Ref;
import com.hypixel.hytale.component.Store;
import com.hypixel.hytale.logger.HytaleLogger;
import com.hypixel.hytale.logger.sentry.SkipSentryException;
import com.hypixel.hytale.server.core.Message;
import com.hypixel.hytale.server.core.asset.type.particle.commands.ParticleCommand;
import com.hypixel.hytale.server.core.command.commands.debug.AssetsCommand;
import com.hypixel.hytale.server.core.command.commands.debug.DebugPlayerPositionCommand;
import com.hypixel.hytale.server.core.command.commands.debug.HitDetectionCommand;
import com.hypixel.hytale.server.core.command.commands.debug.HudManagerTestCommand;
import com.hypixel.hytale.server.core.command.commands.debug.LogCommand;
import com.hypixel.hytale.server.core.command.commands.debug.MessageTranslationTestCommand;
import com.hypixel.hytale.server.core.command.commands.debug.PIDCheckCommand;
import com.hypixel.hytale.server.core.command.commands.debug.PacketStatsCommand;
import com.hypixel.hytale.server.core.command.commands.debug.PingCommand;
import com.hypixel.hytale.server.core.command.commands.debug.ShowBuilderToolsHudCommand;
import com.hypixel.hytale.server.core.command.commands.debug.StopNetworkChunkSendingCommand;
import com.hypixel.hytale.server.core.command.commands.debug.TagPatternCommand;
import com.hypixel.hytale.server.core.command.commands.debug.VersionCommand;
import com.hypixel.hytale.server.core.command.commands.debug.component.hitboxcollision.HitboxCollisionCommand;
import com.hypixel.hytale.server.core.command.commands.debug.component.repulsion.RepulsionCommand;
import com.hypixel.hytale.server.core.command.commands.debug.packs.PacksCommand;
import com.hypixel.hytale.server.core.command.commands.debug.server.ServerCommand;
com.hypixel.hytale.server.core.command.commands.debug.stresstest.StressTestCommand;
com.hypixel.hytale.server.core.command.commands.player.DamageCommand;
com.hypixel.hytale.server.core.command.commands.player.GameModeCommand;
com.hypixel.hytale.server.core.command.commands.player.HideCommand;
com.hypixel.hytale.server.core.command.commands.player.KillCommand;
com.hypixel.hytale.server.core.command.commands.player.PlayerCommand;
com.hypixel.hytale.server.core.command.commands.player.ReferCommand;
com.hypixel.hytale.server.core.command.commands.player.SudoCommand;
com.hypixel.hytale.server.core.command.commands.player.ToggleBlockPlacementOverrideCommand;
com.hypixel.hytale.server.core.command.commands.player.WhereAmICommand;
com.hypixel.hytale.server.core.command.commands.player.WhoAmICommand;
com.hypixel.hytale.server.core.command.commands.player.inventory.GiveCommand;
com.hypixel.hytale.server.core.command.commands.player.inventory.InventoryCommand;
com.hypixel.hytale.server.core.command.commands.player.inventory.ItemStateCommand;
com.hypixel.hytale.server.core.command.commands.server.KickCommand;
com.hypixel.hytale.server.core.command.commands.server.MaxPlayersCommand;
com.hypixel.hytale.server.core.command.commands.server.StopCommand;
com.hypixel.hytale.server.core.command.commands.server.WhoCommand;
com.hypixel.hytale.server.core.command.commands.server.auth.AuthCommand;
com.hypixel.hytale.server.core.command.commands.utility.BackupCommand;
com.hypixel.hytale.server.core.command.commands.utility.ConvertPrefabsCommand;
com.hypixel.hytale.server.core.command.commands.utility.EventTitleCommand;
com.hypixel.hytale.server.core.command.commands.utility.NotifyCommand;
com.hypixel.hytale.server.core.command.commands.utility.StashCommand;
com.hypixel.hytale.server.core.command.commands.utility.ValidateCPBCommand;
com.hypixel.hytale.server.core.command.commands.utility.git.UpdateCommand;
com.hypixel.hytale.server.core.command.commands.utility.help.HelpCommand;
com.hypixel.hytale.server.core.command.commands.utility.lighting.LightingCommand;
com.hypixel.hytale.server.core.command.commands.utility.metacommands.CommandsCommand;
com.hypixel.hytale.server.core.command.commands.utility.net.NetworkCommand;
com.hypixel.hytale.server.core.command.commands.utility.sleep.SleepCommand;
com.hypixel.hytale.server.core.command.commands.utility.sound.SoundCommand;
com.hypixel.hytale.server.core.command.commands.utility.worldmap.WorldMapCommand;
com.hypixel.hytale.server.core.command.commands.world.SpawnBlockCommand;
com.hypixel.hytale.server.core.command.commands.world.chunk.ChunkCommand;
com.hypixel.hytale.server.core.command.commands.world.entity.EntityCommand;
com.hypixel.hytale.server.core.command.commands.world.worldgen.WorldGenCommand;
com.hypixel.hytale.server.core.command.system.exceptions.CommandException;
com.hypixel.hytale.server.core.command.system.exceptions.GeneralCommandException;
com.hypixel.hytale.server.core.entity.entities.Player;
com.hypixel.hytale.server.core.universe.PlayerRef;
com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap;
java.util.Collection;
java.util.Deque;
java.util.HashSet;
java.util.List;
java.util.Map;
java.util.Objects;
java.util.Set;
java.util.concurrent.CompletableFuture;
java.util.concurrent.CompletionException;
java.util.concurrent.ForkJoinPool;
java.util.logging.Level;
javax.annotation.Nonnull;
javax.annotation.Nullable;
{
HytaleLogger.forEnclosingClass();
CommandManager instance;
Map<String, AbstractCommand> commandRegistration = <String, AbstractCommand>();
Map<String, String> aliases = <String, String>();
CommandManager {
instance;
}
{
instance = ;
}
{
.aliases.clear();
}
Map<String, AbstractCommand> {
.commandRegistration;
}
{
.registerSystemCommand( ());
.registerSystemCommand( ());
.registerSystemCommand( ());
.registerSystemCommand( ());
.registerSystemCommand( ());
.registerSystemCommand( ());
.registerSystemCommand( ());
.registerSystemCommand( ());
.registerSystemCommand( ());
.registerSystemCommand( ());
.registerSystemCommand( ());
.registerSystemCommand( ());
.registerSystemCommand( ());
.registerSystemCommand( ());
.registerSystemCommand( ());
.registerSystemCommand( ());
.registerSystemCommand( ());
.registerSystemCommand( ());
.registerSystemCommand( ());
.registerSystemCommand( ());
.registerSystemCommand( ());
.registerSystemCommand( ());
.registerSystemCommand( ());
.registerSystemCommand( ());
.registerSystemCommand( ());
.registerSystemCommand( ());
.registerSystemCommand( ());
.registerSystemCommand( ());
.registerSystemCommand( ());
.registerSystemCommand( ());
.registerSystemCommand( ());
.registerSystemCommand( ());
.registerSystemCommand( ());
.registerSystemCommand( ());
.registerSystemCommand( ());
.registerSystemCommand( ());
.registerSystemCommand( ());
.registerSystemCommand( ());
.registerSystemCommand( ());
.registerSystemCommand( ());
.registerSystemCommand( ());
.registerSystemCommand( ());
.registerSystemCommand( ());
.registerSystemCommand( ());
.registerSystemCommand( ());
.registerSystemCommand( ());
.registerSystemCommand( ());
.registerSystemCommand( ());
.registerSystemCommand( ());
.registerSystemCommand( ());
.registerSystemCommand( ());
.registerSystemCommand( ());
.registerSystemCommand( ());
.registerSystemCommand( ());
.registerSystemCommand( ());
}
Map<String, Set<String>> {
Map<String, Set<String>> permissionsByGroup = <String, Set<String>>();
(AbstractCommand command : .commandRegistration.values()) {
(Map.Entry<String, Set<String>> entry : command.getPermissionGroupsRecursive().entrySet()) {
Set<String> permissionsForGroup = (Set)permissionsByGroup.computeIfAbsent((String)entry.getKey(), (k) -> ());
permissionsForGroup.addAll((Collection)entry.getValue());
}
}
permissionsByGroup;
}
{
command.setOwner();
.register(command);
}
CommandRegistration {
command.getName();
(name != && !name.isEmpty()) {
.commandRegistration.put(command.getName(), command);
{
command.completeRegistration();
} (Exception var7) {
var7.getMessage();
(var7 GeneralCommandException) {
(GeneralCommandException)var7;
generalException.getMessageText();
(messageText != ) {
errorMessage = messageText;
}
}
((HytaleLogger.Api)HytaleLogger.getLogger().at(Level.SEVERE).withCause(var7)).log(, command.getName(), errorMessage != ? + errorMessage : );
;
}
(String alias : command.getAliases()) {
.aliases.put(alias, name);
}
(command, () -> , () -> {
(AbstractCommand).commandRegistration.remove(name);
(remove != ) {
(String alias : remove.getAliases()) {
.aliases.remove(alias);
}
}
});
} {
();
}
}
CompletableFuture<Void> {
Ref<EntityStore> ref = playerRef.getReference();
(ref == ) {
();
} {
Store<EntityStore> store = ref.getStore();
(Player)store.getComponent(ref, Player.getComponentType());
.handleCommand((CommandSender)playerComponent, command);
}
}
CompletableFuture<Void> {
Objects.requireNonNull(commandSender, );
Objects.requireNonNull(commandString, );
CompletableFuture<Void> future = ();
ForkJoinPool.commonPool().execute(() -> {
Thread.currentThread();
thread.getName();
thread.setName(oldName + + commandString);
{
LOGGER.at(Level.FINE).log(, commandSender.getDisplayName(), commandString);
commandString.indexOf();
(endIndex < ? commandString : commandString.substring(, endIndex)).toLowerCase();
(AbstractCommand).commandRegistration.get(commandName);
(command == ) {
(String).aliases.get(commandName);
(key != && .commandRegistration.containsKey(key)) {
command = (AbstractCommand).commandRegistration.get(key);
}
}
(command != ) {
.runCommand(commandSender, commandString, command, future);
;
}
commandSender.sendMessage(Message.translation().param(, commandString));
future.complete((Object));
} {
thread.setName(oldName);
}
});
future;
}
{
{
LOGGER.at(Level.INFO).log(, commandSender.getDisplayName(), commandInput);
();
List<String> tokens = Tokenizer.parseArguments(commandInput, parseResult);
(parseResult.failed()) {
parseResult.sendMessages(commandSender);
future.complete((Object));
;
}
ParserContext.of(tokens, parseResult);
(parseResult.failed()) {
parseResult.sendMessages(commandSender);
future.complete((Object));
;
}
CompletableFuture<Void> commandFuture = abstractCommand.acceptCall(commandSender, parserContext, parseResult);
(parseResult.failed()) {
parseResult.sendMessages(commandSender);
future.complete((Object));
;
}
(commandFuture != ) {
commandFuture.whenComplete((aVoid, throwable) -> {
(throwable != ) {
(!CompletableFutureUtil.isCanceled(throwable) && !isInternalException(throwable)) {
((HytaleLogger.Api)LOGGER.at(Level.SEVERE).withCause( (throwable))).log(, commandInput, commandSender.getDisplayName());
commandSender.sendMessage(Message.translation().param(, commandInput).param(, throwable.getMessage()));
}
future.completeExceptionally(throwable);
} {
future.complete(aVoid);
}
});
} {
future.complete((Object));
}
} (Throwable var9) {
(var9 CommandException commandException) {
commandException.sendTranslatedMessage(commandSender);
} {
((HytaleLogger.Api)LOGGER.at(Level.SEVERE).withCause(var9)).log(, commandInput, commandSender.getDisplayName());
var9.getMessage() == ? Message.translation() : Message.raw(var9.getMessage());
commandSender.sendMessage(Message.translation().param(, commandInput).param(, errorMsg));
}
future.completeExceptionally(var9);
}
}
{
(throwable CommandException) {
;
} {
throwable CompletionException && throwable.getCause() != && throwable.getCause() != throwable ? isInternalException(throwable.getCause()) : ;
}
}
CompletableFuture<Void> {
.handleCommands0(sender, commands);
}
CompletableFuture<Void> {
commands.isEmpty() ? CompletableFuture.completedFuture((Object)) : .handleCommand(sender, (String)commands.poll()).thenCompose((aVoid) -> .handleCommands0(sender, commands));
}
String {
;
}
}
com/hypixel/hytale/server/core/command/system/CommandOwner.java
package com.hypixel.hytale.server.core.command.system;
public interface CommandOwner {
String getName();
}
com/hypixel/hytale/server/core/command/system/CommandRegistration.java
package com.hypixel.hytale.server.core.command.system;
import com.hypixel.hytale.registry.Registration;
import java.util.function.BooleanSupplier;
import javax.annotation.Nonnull;
public class CommandRegistration extends Registration {
@Nonnull
private final AbstractCommand abstractCommand;
public CommandRegistration(@Nonnull AbstractCommand command, @Nonnull BooleanSupplier isEnabled, @Nonnull Runnable unregister) {
super(isEnabled, unregister);
this.abstractCommand = command;
}
public CommandRegistration(@Nonnull CommandRegistration registration, @Nonnull BooleanSupplier isEnabled, @Nonnull Runnable unregister) {
super(isEnabled, unregister);
this.abstractCommand = registration.abstractCommand;
}
}
com/hypixel/hytale/server/core/command/system/CommandRegistry.java
package com.hypixel.hytale.server.core.command.system;
import com.hypixel.hytale.function.consumer.BooleanConsumer;
import com.hypixel.hytale.registry.Registry;
import com.hypixel.hytale.server.core.plugin.PluginBase;
import java.util.List;
import java.util.function.BooleanSupplier;
import javax.annotation.Nonnull;
public class CommandRegistry extends Registry<CommandRegistration> {
private final PluginBase plugin;
public CommandRegistry(@Nonnull List<BooleanConsumer> registrations, BooleanSupplier precondition, String preconditionMessage, PluginBase plugin) {
super(registrations, precondition, preconditionMessage, CommandRegistration::new);
this.plugin = plugin;
}
public CommandRegistration registerCommand(@Nonnull AbstractCommand command) {
this.checkPrecondition();
if (this.plugin != null) {
command.setOwner(this.plugin);
}
return (CommandRegistration)this.register(CommandManager.get().register(command));
}
}
com/hypixel/hytale/server/core/command/system/CommandSender.java
package com.hypixel.hytale.server.core.command.system;
import com.hypixel.hytale.server.core.permissions.PermissionHolder;
import com.hypixel.hytale.server.core.receiver.IMessageReceiver;
import java.util.UUID;
public interface CommandSender extends IMessageReceiver, PermissionHolder {
String getDisplayName();
UUID getUuid();
}
com/hypixel/hytale/server/core/command/system/CommandUtil.java
package com.hypixel.hytale.server.core.command.system;
import com.hypixel.hytale.server.core.command.system.exceptions.NoPermissionException;
import com.hypixel.hytale.server.core.permissions.PermissionHolder;
import javax.annotation.Nonnull;
public class CommandUtil {
public static final String CONFIRM_UNSAFE_COMMAND = "confirm";
public static final String WORLD_OPTION = "world";
public static final String ENTITY_OPTION = "entity";
public static final String PLAYER_OPTION = "player";
public static int RECOMMEND_COUNT = 5;
public CommandUtil() {
}
@Nonnull
public static String stripCommandName(@Nonnull String rawCommand) {
rawCommand.indexOf();
indexOf < ? rawCommand : rawCommand.substring(indexOf + );
}
{
(!permissionHolder.hasPermission(permission)) {
(permission);
}
}
}
com/hypixel/hytale/server/core/command/system/CommandValidationResults.java
package com.hypixel.hytale.server.core.command.system;
import com.hypixel.hytale.codec.ExtraInfo;
import com.hypixel.hytale.codec.validation.ValidationResults;
import com.hypixel.hytale.server.core.Message;
import javax.annotation.Nonnull;
public class CommandValidationResults extends ValidationResults {
public CommandValidationResults(@Nonnull ExtraInfo extraInfo) {
super(extraInfo);
}
public void processResults(@Nonnull ParseResult parseResult) {
this._processValidationResults();
if (this.validatorExceptions != null && !this.validatorExceptions.isEmpty()) {
StringBuilder sb = new StringBuilder();
boolean failed = false;
for(ValidationResults.ValidatorResultsHolder holder : this.validatorExceptions) {
for(ValidationResults.ValidationResult result : holder.results()) {
failed |= result.appendResult(sb);
}
}
if (failed) {
parseResult.fail(Message.raw(sb.toString()));
} else {
this.validatorExceptions.clear();
}
}
}
}
com/hypixel/hytale/server/core/command/system/MatchResult.java
package com.hypixel.hytale.server.core.command.system;
import com.hypixel.hytale.common.util.StringCompareUtil;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
public class MatchResult implements Comparable<MatchResult> {
public static final MatchResult NONE = new MatchResult(-2147483648, -2147483648, -2147483648, -2147483648);
public static final MatchResult EXACT = new MatchResult(2147483647, 2147483647, 2147483647, 2147483647);
public static final int NAME = 0;
public static final int ALIAS = 1;
public static final int ;
;
;
term;
depth;
type;
match;
MatchResult {
(termDepth, depth, type, StringCompareUtil.getLevenshteinDistance(text, search));
}
{
.term = term;
.depth = depth;
.type = type;
.match = match;
}
{
.depth;
}
{
.type;
}
{
.match;
}
MatchResult {
(.term < other.term) {
;
} (.term > other.term) {
other;
} (.type < other.type) {
;
} (.type > other.type) {
other;
} (.depth < other.depth) {
;
} (.depth > other.depth) {
other;
} (.match < other.match) {
;
} {
.match > other.match ? other : ;
}
}
{
(o.term != .term) {
.term - o.term;
} (o.type != .type) {
.type - o.type;
} {
o.depth != .depth ? .depth - o.depth : .match - o.match;
}
}
{
( == o) {
;
} (o != && .getClass() == o.getClass()) {
(MatchResult)o;
(.depth != that.depth) {
;
} {
.match == that.match;
}
} {
;
}
}
{
.depth;
result = * result + .match;
result;
}
String {
+ .depth + + .match + ;
}
}
com/hypixel/hytale/server/core/command/system/ParseResult.java
package com.hypixel.hytale.server.core.command.system;
import com.hypixel.hytale.server.core.Message;
import com.hypixel.hytale.server.core.command.system.exceptions.GeneralCommandException;
import it.unimi.dsi.fastutil.objects.ObjectArrayList;
import java.util.Collections;
import java.util.List;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
public class ParseResult {
private boolean failed;
@Nullable
private List<Message> reasons;
private final boolean throwExceptionWhenFailed;
public ParseResult() {
this(false);
}
public ParseResult(boolean throwExceptionWhenFailed) {
this.throwExceptionWhenFailed = throwExceptionWhenFailed;
}
public void fail(@Nonnull Message reason, @Nullable Message... otherMessages) {
this.failed = true;
if (this.reasons == null) {
this.reasons = new ObjectArrayList<Message>();
}
this.reasons.add(reason);
(otherMessages != ) {
Collections.addAll(.reasons, otherMessages);
}
(.throwExceptionWhenFailed) {
(reason.getAnsiMessage());
(otherMessages != ) {
(Message otherMessage : otherMessages) {
builder.append().append(otherMessage.getAnsiMessage());
}
}
(Message.raw(builder.toString()));
}
}
{
.fail(reason, (Message[]));
}
{
.failed;
}
{
(.reasons != ) {
(Message reason : .reasons) {
sender.sendMessage(reason);
}
}
}
}
com/hypixel/hytale/server/core/command/system/ParserContext.java
package com.hypixel.hytale.server.core.command.system;
import com.hypixel.hytale.server.core.Message;
import it.unimi.dsi.fastutil.booleans.BooleanArrayList;
import it.unimi.dsi.fastutil.ints.Int2ObjectMap;
import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap;
import it.unimi.dsi.fastutil.objects.Object2ObjectLinkedOpenHashMap;
import it.unimi.dsi.fastutil.objects.ObjectArrayList;
import it.unimi.dsi.fastutil.objects.ObjectSortedSet;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
public class ParserContext {
private static final HashSet<String> SPECIAL_TOKENS;
private static final int MAX_LIST_ITEMS = 10;
@Nonnull
private final String inputString;
@Nonnull
private final BooleanArrayList parameterForwardingMap;
@Nonnull
private final Int2ObjectMap<String> preOptionalSingleValueTokens;
@Nonnull
private final Int2ObjectMap<PreOptionalListContext> preOptionalListTokens;
Object2ObjectLinkedOpenHashMap<String, List<List<String>>> optionalArgs;
String lastInsertedOptionalArgName;
numPreOptSingleValueTokensBeforeListTokens;
subCommandIndex;
Pattern ARG_NAME_PATTERN;
Matcher ARG_NAME_MATCHER;
Pattern ARG_NAME_AND_VALUE_PATTERN;
Matcher ARG_NAME_AND_VALUE_MATCHER;
{
.inputString = String.join(, tokens);
.parameterForwardingMap = ();
.preOptionalSingleValueTokens = <String>();
.preOptionalListTokens = <PreOptionalListContext>();
.optionalArgs = <String, List<List<String>>>();
.contextualizeTokens(tokens, parseResult);
}
ParserContext {
(tokens, parseResult);
}
{
;
;
;
;
;
( ; i < tokens.size(); ++i) {
(String)tokens.get(i);
(inList) {
hasEnteredListBefore = ;
}
(SPECIAL_TOKENS.contains(token)) {
((String)tokens.get(i - )).equals(Tokenizer.MULTI_ARG_END) && !inList && token.equals(Tokenizer.MULTI_ARG_BEGIN);
(wasLastTokenASpecialValue && !isListEndingAndStartingNew) {
();
( ; i1 < tokens.size(); ++i1) {
stringBuilder.append((String)tokens.get(i1)).append();
(i1 == i) {
stringBuilder.append();
}
}
parseResult.fail(Message.translation(), Message.raw(stringBuilder.toString()));
;
}
wasLastTokenASpecialValue = ;
} {
wasLastTokenASpecialValue = ;
}
ARG_NAME_MATCHER.reset(token);
(ARG_NAME_MATCHER.lookingAt()) {
beganParsingOptionals = ;
.addNewOptionalArg(ARG_NAME_MATCHER.group());
ARG_NAME_AND_VALUE_MATCHER.reset(token);
(ARG_NAME_AND_VALUE_MATCHER.matches()) {
.appendOptionalParameter(ARG_NAME_AND_VALUE_MATCHER.group(), parseResult);
(parseResult.failed()) {
;
}
}
} (beganParsingOptionals) {
.appendOptionalParameter(token, parseResult);
(parseResult.failed()) {
;
}
} (token.equals(Tokenizer.MULTI_ARG_BEGIN)) {
inList = ;
isSingleValueList = ;
.parameterForwardingMap.add();
.preOptionalListTokens.put(.parameterForwardingMap.size() - , ());
} (token.equals(Tokenizer.MULTI_ARG_END)) {
inList = ;
} (inList) {
((PreOptionalListContext).preOptionalListTokens.get(.parameterForwardingMap.size() - )).addToken(token, parseResult);
(parseResult.failed()) {
;
}
(isSingleValueList && !wasLastTokenASpecialValue && tokens.size() > i + && !((String)tokens.get(i + )).equals(Tokenizer.MULTI_ARG_SEPARATOR)) {
inList = ;
}
} (tokens.size() > i + && ((String)tokens.get(i + )).equals(Tokenizer.MULTI_ARG_SEPARATOR)) {
inList = ;
isSingleValueList = ;
.parameterForwardingMap.add();
.preOptionalListTokens.put(.parameterForwardingMap.size() - , ( ()).addToken(token, parseResult));
(parseResult.failed()) {
;
}
} {
(!hasEnteredListBefore) {
++.numPreOptSingleValueTokensBeforeListTokens;
}
.parameterForwardingMap.add();
.preOptionalSingleValueTokens.put(.parameterForwardingMap.size() - , token);
}
}
(inList && !isSingleValueList) {
parseResult.fail(Message.translation().param(, Tokenizer.MULTI_ARG_END));
}
}
{
name = name.toLowerCase();
.lastInsertedOptionalArgName = name;
.optionalArgs.put(name, ());
}
{
(!.optionalArgs.isEmpty() && .lastInsertedOptionalArgName != ) {
List<List<String>> args = .optionalArgs.get(.lastInsertedOptionalArgName);
(!value.equals(Tokenizer.MULTI_ARG_BEGIN) && !value.equals(Tokenizer.MULTI_ARG_END)) {
(value.equals(Tokenizer.MULTI_ARG_SEPARATOR)) {
args.add( ());
} (args.isEmpty()) {
ObjectArrayList<String> values = <String>();
values.add(value);
args.add(values);
} {
((List)args.getLast()).add(value);
}
}
} {
parseResult.fail(Message.translation());
}
}
String {
.inputString;
}
{
index += .subCommandIndex;
.parameterForwardingMap.size() <= index ? : .parameterForwardingMap.getBoolean(index);
}
{
.numPreOptSingleValueTokensBeforeListTokens - .subCommandIndex;
}
{
;
numPreOptionalTokens += .preOptionalSingleValueTokens.size();
(PreOptionalListContext value : .preOptionalListTokens.values()) {
numPreOptionalTokens += value.numTokensPerArgument;
}
numPreOptionalTokens - .subCommandIndex;
}
String {
index += .subCommandIndex;
(String).preOptionalSingleValueTokens.get(index);
}
PreOptionalListContext {
index += .subCommandIndex;
(PreOptionalListContext).preOptionalListTokens.get(index);
}
String {
(.parameterForwardingMap.size() <= .subCommandIndex) {
;
} (.parameterForwardingMap.getBoolean(.subCommandIndex)) {
(PreOptionalListContext).preOptionalListTokens.get(.subCommandIndex);
preOptionalListContext.tokens.isEmpty() ? : (String)preOptionalListContext.tokens.getFirst();
} {
(String).preOptionalSingleValueTokens.get(.subCommandIndex);
}
}
ObjectSortedSet<Map.Entry<String, List<List<String>>>> getOptionalArgs() {
.optionalArgs.entrySet();
}
{
.optionalArgs.containsKey() || .optionalArgs.containsKey();
}
{
.optionalArgs.containsKey();
}
{
++.subCommandIndex;
}
{
SPECIAL_TOKENS = (List.of(Tokenizer.MULTI_ARG_BEGIN, Tokenizer.MULTI_ARG_END, Tokenizer.MULTI_ARG_SEPARATOR));
ARG_NAME_PATTERN = Pattern.compile();
ARG_NAME_MATCHER = ARG_NAME_PATTERN.matcher();
ARG_NAME_AND_VALUE_PATTERN = Pattern.compile();
ARG_NAME_AND_VALUE_MATCHER = ARG_NAME_AND_VALUE_PATTERN.matcher();
}
{
List<String> tokens = <String>();
;
;
;
;
{
}
PreOptionalListContext {
(token.equals(Tokenizer.MULTI_ARG_SEPARATOR)) {
(!.hasReachedFirstMultiArgSeparator) {
.hasReachedFirstMultiArgSeparator = ;
.numTokensSinceLastSeparator = ;
++.numberOfListItems;
.verifyNumberOfListItems(parseResult);
;
} (.numTokensSinceLastSeparator != .numTokensPerArgument) {
.tokens.add(token);
parseResult.fail(Message.translation().param(, .getStringRepresentation()));
;
} {
.numTokensSinceLastSeparator = ;
++.numberOfListItems;
.verifyNumberOfListItems(parseResult);
;
}
} {
++.numTokensSinceLastSeparator;
(.numberOfListItems == ) {
++.numTokensPerArgument;
}
(.hasReachedFirstMultiArgSeparator && .numTokensSinceLastSeparator > .numTokensPerArgument) {
.tokens.add(token);
parseResult.fail(Message.translation().param(, .getStringRepresentation()));
;
} {
.tokens.add(token);
;
}
}
}
String {
(Tokenizer.MULTI_ARG_BEGIN);
( ; i < .tokens.size(); ++i) {
(i != && i % .numTokensPerArgument == && i != .tokens.size() - ) {
stringBuilder.append().append(Tokenizer.MULTI_ARG_SEPARATOR);
}
stringBuilder.append().append((String).tokens.get(i));
}
(asTooLongFailure) {
stringBuilder.append();
} {
stringBuilder.append();
}
stringBuilder.toString();
}
{
(.numberOfListItems > ) {
parseResult.fail(Message.translation().param(, ));
}
}
String[] getTokens() {
(String[]).tokens.toArray((x$) -> [x$]);
}
{
.numTokensPerArgument;
}
{
.numberOfListItems;
}
}
}
com/hypixel/hytale/server/core/command/system/Tokenizer.java
package com.hypixel.hytale.server.core.command.system;
import com.hypixel.hytale.server.core.Message;
import it.unimi.dsi.fastutil.objects.ObjectArrayList;
import java.util.List;
import java.util.regex.Pattern;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
public class Tokenizer {
public static final char MULTI_ARG_SEPARATOR_CHAR = ',';
public static final char MULTI_ARG_BEGIN_CHAR = '[';
public static final char MULTI_ARG_END_CHAR = ']';
public static final String MULTI_ARG_SEPARATOR = String.valueOf(',');
public static final String MULTI_ARG_BEGIN = String.valueOf('[');
public static final String String.valueOf();
Message.translation();
{
}
List<String> {
List<String> parsedTokens = <String>();
String[] firstSplit = input.split(Pattern.quote(), );
parsedTokens.add(firstSplit[]);
(firstSplit.length == ) {
parsedTokens;
} {
firstSplit[];
;
;
;
( ; i < argsStr.length(); ++i) {
extractToken;
argsStr.charAt(i);
extractToken = ;
label88:
(c) {
:
(quote == ) {
(tokenStart < i) {
parsedTokens.add(argsStr.substring(tokenStart, i));
}
tokenStart = i + ;
}
;
:
(quote == ) {
quote = ;
} (quote == ) {
quote = ;
argsStr.substring(tokenStart, i + );
(!extraction.isEmpty()) {
parsedTokens.add(extraction);
}
tokenStart = i + ;
}
;
:
(quote == ) {
quote = ;
} (quote == ) {
quote = ;
argsStr.substring(tokenStart, i + );
(!extraction.isEmpty()) {
parsedTokens.add(extraction);
}
tokenStart = i + ;
}
;
:
(quote == ) {
argsStr.substring(tokenStart, i);
(!extraction.isEmpty()) {
parsedTokens.add(extraction);
}
tokenStart = i;
extractToken = ;
}
;
:
(quote == ) {
(inList) {
parseResult.fail(Message.translation().param(, i));
;
}
inList = ;
tokenStart = i;
extractToken = ;
}
;
:
(argsStr.length() <= i + ) {
parseResult.fail(Message.translation().param(, i + ).param(, input));
;
}
argsStr.charAt(i + );
(nextCharacter) {
:
:
:
:
:
:
argsStr.substring(, i);
argsStr = var10000 + argsStr.substring(i + );
++i;
label88;
:
parseResult.fail(Message.translation().param(, nextCharacter).param(, i + ).param(, input).param(, input));
;
}
:
(quote == ) {
(!inList) {
parseResult.fail(Message.translation().param(, i));
;
}
argsStr.substring(tokenStart, i);
(!extraction.isEmpty()) {
parsedTokens.add(extraction);
}
tokenStart = i;
inList = ;
extractToken = ;
}
}
(extractToken) {
parsedTokens.add(argsStr.substring(tokenStart, i + ));
tokenStart = i + ;
}
(tokenStart > argsStr.length()) {
tokenStart = argsStr.length();
;
}
}
(quote != ) {
parseResult.fail(MESSAGE_COMMANDS_PARSING_ERROR_UNBALANCED_QUOTES);
;
} {
(tokenStart != argsStr.length()) {
parsedTokens.add(argsStr.substring(tokenStart));
}
parsedTokens;
}
}
}
}
com/hypixel/hytale/server/core/command/system/arguments/system/AbstractOptionalArg.java
package com.hypixel.hytale.server.core.command.system.arguments.system;
import com.hypixel.hytale.server.core.Message;
import com.hypixel.hytale.server.core.command.system.AbstractCommand;
import com.hypixel.hytale.server.core.command.system.CommandContext;
import com.hypixel.hytale.server.core.command.system.CommandSender;
import com.hypixel.hytale.server.core.command.system.ParseResult;
import com.hypixel.hytale.server.core.command.system.arguments.types.ArgumentType;
import java.util.Collections;
import java.util.HashSet;
import java.util.Set;
import java.util.stream.Collectors;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
public abstract class AbstractOptionalArg<Arg extends Argument<Arg, DataType>, DataType> extends Argument<Arg, DataType> {
@Nonnull
private final Set<String> aliases = new HashSet();
@Nullable
private String permission;
private Set<AbstractOptionalArg<?, ?>> requiredIf;
private Set<AbstractOptionalArg<?, ?>> requiredIfAbsent;
private Set<AbstractOptionalArg<?, ?>> availableOnlyIfAll;
private Set<AbstractOptionalArg<?, ?>> availableOnlyIfAllAbsent;
AbstractOptionalArg(@Nonnull AbstractCommand commandRegisteredTo, @Nonnull String name, @Nonnull String description, @Nonnull ArgumentType<DataType> argumentType) {
(commandRegisteredTo, name, description, argumentType);
}
Arg {
(.getCommandRegisteredTo().hasBeenRegistered()) {
();
} {
(String newAlias : newAliases) {
.aliases.add(newAlias.toLowerCase());
}
(Arg).getThis();
}
}
Arg {
(.requiredIf == ) {
.requiredIf = ();
}
(!.addDependencyArg(.requiredIf, .requiredIfAbsent, dependent, otherDependents)) {
( + dependent.getName());
} {
(Arg).getThis();
}
}
Arg {
(Arg).requiredIf(dependent, (AbstractOptionalArg[]));
}
Arg {
(.requiredIfAbsent == ) {
.requiredIfAbsent = ();
}
(!.addDependencyArg(.requiredIfAbsent, .requiredIf, dependent, otherDependents)) {
( + dependent.getName());
} {
(Arg).getThis();
}
}
Arg {
(Arg).requiredIfAbsent(dependent, (AbstractOptionalArg[]));
}
Arg {
(.availableOnlyIfAll == ) {
.availableOnlyIfAll = ();
}
(!.addDependencyArg(.availableOnlyIfAll, .availableOnlyIfAllAbsent, dependent, otherDependents)) {
( + dependent.getName());
} {
(Arg).getThis();
}
}
Arg {
(Arg).availableOnlyIfAll(dependent, (AbstractOptionalArg[]));
}
Arg {
(.availableOnlyIfAllAbsent == ) {
.availableOnlyIfAllAbsent = ();
}
(!.addDependencyArg(.availableOnlyIfAllAbsent, .availableOnlyIfAll, dependent, otherDependents)) {
( + dependent.getName());
} {
(Arg).getThis();
}
}
Arg {
(Arg).availableOnlyIfAllAbsent(dependent, (AbstractOptionalArg[]));
}
{
(.getCommandRegisteredTo().hasBeenRegistered()) {
();
} (oppositeSet != && oppositeSet.contains(dependent)) {
;
} {
set.add(dependent);
(otherDependents != ) {
(oppositeSet != ) {
(AbstractOptionalArg<?, ?> otherDependent : otherDependents) {
(oppositeSet.contains(otherDependent)) {
;
}
}
}
Collections.addAll(.requiredIfAbsent, otherDependents);
}
;
}
}
{
context.provided();
(!provided) {
(.requiredIf != ) {
(AbstractOptionalArg<?, ?> arg : .requiredIf) {
(arg.provided(context)) {
parseResult.fail(Message.translation().param(, .getName()).param(, arg.getName()));
;
}
}
}
(.requiredIfAbsent != ) {
(AbstractOptionalArg<?, ?> arg : .requiredIfAbsent) {
(!arg.provided(context)) {
parseResult.fail(Message.translation().param(, .getName()).param(, arg.getName()));
;
}
}
}
;
} {
(.availableOnlyIfAll != ) {
(AbstractOptionalArg<?, ?> arg : .availableOnlyIfAll) {
(!arg.provided(context)) {
parseResult.fail(Message.translation().param(, .getName()).param(, (String).availableOnlyIfAll.stream().map(Argument::getName).collect(Collectors.joining())));
;
}
}
}
(.availableOnlyIfAllAbsent != ) {
(AbstractOptionalArg<?, ?> arg : .availableOnlyIfAllAbsent) {
(arg.provided(context)) {
parseResult.fail(Message.translation().param(, .getName()).param(, (String).availableOnlyIfAllAbsent.stream().map(Argument::getName).collect(Collectors.joining())));
;
}
}
}
;
}
}
Arg {
(.getCommandRegisteredTo().hasBeenRegistered()) {
();
} {
.permission = permission;
(Arg).getThis();
}
}
Set<String> {
Collections.unmodifiableSet(.aliases);
}
String {
.permission;
}
{
.permission == || sender.hasPermission(.permission);
}
<DataType> {
DataType ;
}
}
com/hypixel/hytale/server/core/command/system/arguments/system/ArgWrapper.java
package com.hypixel.hytale.server.core.command.system.arguments.system;
import com.hypixel.hytale.server.core.command.system.arguments.types.ArgumentType;
import java.util.function.Function;
import javax.annotation.Nonnull;
public record ArgWrapper<W extends WrappedArg<BasicType>, BasicType>(@Nonnull ArgumentType<BasicType> argumentType, @Nonnull Function<Argument<?, BasicType>, W> wrappedArgProviderFunction) {
public W wrapArg(@Nonnull Argument<?, BasicType> argument) {
return (W)(this.wrappedArgProviderFunction.apply(argument));
}
}
com/hypixel/hytale/server/core/command/system/arguments/system/Argument.java
package com.hypixel.hytale.server.core.command.system.arguments.system;
import com.hypixel.hytale.codec.EmptyExtraInfo;
import com.hypixel.hytale.codec.validation.ValidationResults;
import com.hypixel.hytale.codec.validation.Validator;
import com.hypixel.hytale.server.core.Message;
import com.hypixel.hytale.server.core.command.system.AbstractCommand;
import com.hypixel.hytale.server.core.command.system.CommandContext;
import com.hypixel.hytale.server.core.command.system.CommandSender;
import com.hypixel.hytale.server.core.command.system.CommandValidationResults;
import com.hypixel.hytale.server.core.command.system.ParseResult;
import com.hypixel.hytale.server.core.command.system.arguments.types.ArgumentType;
import com.hypixel.hytale.server.core.command.system.suggestion.SuggestionProvider;
import com.hypixel.hytale.server.core.command.system.suggestion.SuggestionResult;
import it.unimi.dsi.fastutil.objects.ObjectArrayList;
import java.util.List;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
public abstract class Argument<Arg extends Argument<Arg, DataType>, DataType> {
@Nonnull
private final String name;
@Nullable
private final String description;
private final ArgumentType<DataType> argumentType;
@Nullable
private SuggestionProvider suggestionProvider;
@Nullable
private List<Validator<DataType>> validators;
AbstractCommand commandRegisteredTo;
Argument( AbstractCommand commandRegisteredTo, String name, String description, ArgumentType<DataType> argumentType) {
.commandRegisteredTo = commandRegisteredTo;
.name = name;
.description = description;
.argumentType = argumentType;
}
Arg {
(.commandRegisteredTo.hasBeenRegistered()) {
();
} {
(.validators == ) {
.validators = <Validator<DataType>>();
}
.validators.add(validator);
(Arg).getThis();
}
}
{
(.validators != ) {
(EmptyExtraInfo.EMPTY);
(Validator<DataType> validator : .validators) {
validator.accept(data, (ValidationResults)results);
}
results.processResults(parseResult);
}
}
{
context.provided();
}
DataType {
(DataType)context.get();
}
Arg ;
DataType {
.argumentType.processedGet(context.sender(), context, );
}
Arg {
(.commandRegisteredTo.hasBeenRegistered()) {
();
} {
.suggestionProvider = suggestionProvider;
(Arg).getThis();
}
}
List<String> {
();
String.join(, textAlreadyEntered);
(.suggestionProvider != ) {
.suggestionProvider.suggest(sender, textAlreadyEnteredAsSingleString, textAlreadyEntered.length, suggestionResult);
}
.argumentType.suggest(sender, textAlreadyEnteredAsSingleString, textAlreadyEntered.length, suggestionResult);
suggestionResult.getSuggestions();
}
Message ;
Message ;
AbstractCommand {
.commandRegisteredTo;
}
String {
.name;
}
ArgumentType<DataType> {
.argumentType;
}
String {
.description;
}
String {
.name;
+ var10000 + + .description + + String.valueOf(.argumentType) + ;
}
}
com/hypixel/hytale/server/core/command/system/arguments/system/DefaultArg.java
package com.hypixel.hytale.server.core.command.system.arguments.system;
import com.hypixel.hytale.server.core.Message;
import com.hypixel.hytale.server.core.command.system.AbstractCommand;
import com.hypixel.hytale.server.core.command.system.ParseResult;
import com.hypixel.hytale.server.core.command.system.arguments.types.ArgumentType;
import javax.annotation.Nonnull;
public class DefaultArg<DataType> extends AbstractOptionalArg<DefaultArg<DataType>, DataType> implements AbstractOptionalArg.DefaultValueArgument<DataType> {
@Nonnull
private final DataType defaultValue;
@Nonnull
private final String defaultValueDescription;
public DefaultArg(@Nonnull AbstractCommand commandRegisteredTo, @Nonnull String name, @Nonnull String description, @Nonnull ArgumentType<DataType> argumentType, @Nonnull DataType defaultValue, @Nonnull String defaultValueDescription) {
super(commandRegisteredTo, name, description, argumentType);
this.defaultValue = defaultValue;
this.defaultValueDescription = defaultValueDescription;
}
@Nonnull
protected DefaultArg<DataType> getThis() {
return this;
}
public final DataType {
.defaultValue;
}
{
.validate(.getDefaultValue(), parseResult);
}
Message {
Message.raw().insert(.getName()).insert().insert(.getArgumentType().getName()).insert().insert(Message.translation(.getDefaultValueDescription())).insert().insert(Message.translation(.getDescription())).insert();
}
Message {
.defaultValue == ? : .defaultValue.toString();
Message.raw().insert(.getName()).insert().insert(defaultValueStr).insert();
}
String {
.defaultValueDescription;
}
}
com/hypixel/hytale/server/core/command/system/arguments/system/FlagArg.java
package com.hypixel.hytale.server.core.command.system.arguments.system;
import com.hypixel.hytale.server.core.Message;
import com.hypixel.hytale.server.core.command.system.AbstractCommand;
import com.hypixel.hytale.server.core.command.system.arguments.types.BooleanFlagArgumentType;
import javax.annotation.Nonnull;
public class FlagArg extends AbstractOptionalArg<FlagArg, Boolean> implements AbstractOptionalArg.DefaultValueArgument<Boolean> {
@Nonnull
private static final BooleanFlagArgumentType BOOLEAN_FLAG_ARGUMENT_TYPE = new BooleanFlagArgumentType();
public FlagArg(@Nonnull AbstractCommand commandRegisteredTo, @Nonnull String name, @Nonnull String description) {
super(commandRegisteredTo, name, description, BOOLEAN_FLAG_ARGUMENT_TYPE);
}
@Nonnull
protected FlagArg getThis() {
return this;
}
@Nonnull
public Boolean getDefaultValue() {
return Boolean.FALSE;
}
@Nonnull
public Message getUsageMessage {
Message.raw().insert(.getName()).insert().insert(Message.translation(.getDescription())).insert();
}
Message {
Message.raw().insert(.getName()).insert();
}
}
com/hypixel/hytale/server/core/command/system/arguments/system/OptionalArg.java
package com.hypixel.hytale.server.core.command.system.arguments.system;
import com.hypixel.hytale.server.core.Message;
import com.hypixel.hytale.server.core.command.system.AbstractCommand;
import com.hypixel.hytale.server.core.command.system.arguments.types.ArgumentType;
import javax.annotation.Nonnull;
public class OptionalArg<DataType> extends AbstractOptionalArg<OptionalArg<DataType>, DataType> {
public OptionalArg(@Nonnull AbstractCommand commandRegisteredTo, @Nonnull String name, @Nonnull String description, @Nonnull ArgumentType<DataType> argumentType) {
super(commandRegisteredTo, name, description, argumentType);
if (argumentType.getNumberOfParameters() < 1) {
throw new IllegalArgumentException("Cannot create an Optional Argument with 0 parameters. If you want to have 0 parameters, use Flag Arguments");
}
}
@Nonnull
protected OptionalArg<DataType> getThis() {
return this;
}
@Nonnull
public Message getUsageMessage() {
return Message.raw("--").insert(this.getName()).insert(" ").insert(this.getArgumentType().getName()).insert().insert(Message.translation(.getDescription())).insert();
}
Message {
Message.raw().insert(.getName()).insert();
}
}
com/hypixel/hytale/server/core/command/system/arguments/system/RequiredArg.java
package com.hypixel.hytale.server.core.command.system.arguments.system;
import com.hypixel.hytale.server.core.Message;
import com.hypixel.hytale.server.core.command.system.AbstractCommand;
import com.hypixel.hytale.server.core.command.system.arguments.types.ArgumentType;
import javax.annotation.Nonnull;
public class RequiredArg<DataType> extends Argument<RequiredArg<DataType>, DataType> {
public RequiredArg(@Nonnull AbstractCommand commandRegisteredTo, @Nonnull String name, @Nonnull String description, @Nonnull ArgumentType<DataType> argumentType) {
super(commandRegisteredTo, name, description, argumentType);
if (argumentType.getNumberOfParameters() < 1) {
throw new IllegalArgumentException("Cannot create a Required Argument with 0 parameters.");
}
}
@Nonnull
public Message getUsageMessageWithoutDescription() {
return Message.raw("<").insert(this.getName()).insert(":").insert(this.getArgumentType().getName()).insert(">");
}
@Nonnull
public Message getUsageMessage() {
return Message.raw(this.getName()).insert().insert(.getArgumentType().getName()).insert().insert(Message.translation(.getDescription())).insert();
}
Message {
Message.raw().insert(.getName()).insert();
}
RequiredArg<DataType> {
;
}
}
com/hypixel/hytale/server/core/command/system/arguments/system/WrappedArg.java
package com.hypixel.hytale.server.core.command.system.arguments.system;
import com.hypixel.hytale.server.core.command.system.CommandContext;
import javax.annotation.Nonnull;
public abstract class WrappedArg<BasicType> {
@Nonnull
protected final Argument<?, BasicType> arg;
public WrappedArg(@Nonnull Argument<?, BasicType> arg) {
this.arg = arg;
}
public boolean provided(@Nonnull CommandContext context) {
return this.arg.provided(context);
}
@Nonnull
public String getName() {
return this.arg.getName();
}
@Nonnull
public String getDescription() {
return this.arg.getDescription();
}
@Nonnull
public <D extends WrappedArg<BasicType>> D addAliases(@Nonnull String... aliases) {
Argument var3 = this.arg;
if (var3 AbstractOptionalArg abstractOptionalArg) {
abstractOptionalArg.addAliases(aliases);
(D);
} {
();
}
}
Argument<?, BasicType> getArg() {
.arg;
}
BasicType {
.arg.get(context);
}
}
com/hypixel/hytale/server/core/command/system/arguments/types/AbstractAssetArgumentType.java
package com.hypixel.hytale.server.core.command.system.arguments.types;
import com.hypixel.hytale.assetstore.AssetMap;
import com.hypixel.hytale.assetstore.AssetRegistry;
import com.hypixel.hytale.assetstore.map.JsonAssetWithMap;
import com.hypixel.hytale.common.util.StringUtil;
import com.hypixel.hytale.server.core.Message;
import com.hypixel.hytale.server.core.command.system.CommandUtil;
import com.hypixel.hytale.server.core.command.system.ParseResult;
import java.awt.Color;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
public abstract class AbstractAssetArgumentType<DataType extends JsonAssetWithMap<AssetKeyType, M>, M extends AssetMap<AssetKeyType, DataType>, AssetKeyType> extends SingleArgumentType<DataType> {
@Nonnull
private final Class<DataType> dataTypeClass;
public AbstractAssetArgumentType(@Nonnull String name, @Nonnull Class<DataType> type, @Nonnull String argumentUsage) {
super(name, argumentUsage);
this.dataTypeClass = type;
}
@Nullable
public DataType parse(@Nonnull String input, @Nonnull ParseResult parseResult) {
M assetMap .getAssetMap();
(AssetKeyType).getAssetKey(input);
(assetKey == ) {
parseResult.fail(Message.translation().param(, .dataTypeClass.getSimpleName()).param(, input).color(Color.RED), Message.translation().param(, StringUtil.sortByFuzzyDistance(input, assetMap.getAssetMap().keySet(), CommandUtil.RECOMMEND_COUNT).toString()));
;
} {
(DataType)(((AssetMap)assetMap).getAsset(assetKey));
(asset == ) {
parseResult.fail(Message.translation().param(, .dataTypeClass.getSimpleName()).param(, input).color(Color.RED), Message.translation().param(, StringUtil.sortByFuzzyDistance(input, assetMap.getAssetMap().keySet(), CommandUtil.RECOMMEND_COUNT).toString()));
;
} {
asset;
}
}
}
AssetKeyType ;
M {
(M)AssetRegistry.getAssetStore(.dataTypeClass).getAssetMap();
}
}
com/hypixel/hytale/server/core/command/system/arguments/types/ArgTypes.java
package com.hypixel.hytale.server.core.command.system.arguments.types;
import com.hypixel.hytale.math.vector.Vector2i;
import com.hypixel.hytale.math.vector.Vector3f;
import com.hypixel.hytale.math.vector.Vector3i;
import com.hypixel.hytale.protocol.GameMode;
import com.hypixel.hytale.protocol.SoundCategory;
import com.hypixel.hytale.server.core.Message;
import com.hypixel.hytale.server.core.NameMatching;
import com.hypixel.hytale.server.core.asset.type.ambiencefx.config.AmbienceFX;
import com.hypixel.hytale.server.core.asset.type.blocktype.config.BlockType;
import com.hypixel.hytale.server.core.asset.type.entityeffect.config.EntityEffect;
import com.hypixel.hytale.server.core.asset.type.environment.config.Environment;
import com.hypixel.hytale.server.core.asset.type.item.config.Item;
import com.hypixel.hytale.server.core.asset.type.model.config.ModelAsset;
import com.hypixel.hytale.server.core.asset.type.particle.config.ParticleSystem;
import com.hypixel.hytale.server.core.asset.type.soundevent.config.SoundEvent;
import com.hypixel.hytale.server.core.asset.type.weather.config.Weather;
import com.hypixel.hytale.server.core.auth.ProfileServiceClient;
import com.hypixel.hytale.server.core.auth.ServerAuthManager;
import com.hypixel.hytale.server.core.command.system.CommandContext;
import com.hypixel.hytale.server.core.command.system.CommandSender;
import com.hypixel.hytale.server.core.command.system.ParseResult;
import com.hypixel.hytale.server.core.command.system.arguments.system.ArgWrapper;
import com.hypixel.hytale.server.core.command.system.arguments.system.Argument;
import com.hypixel.hytale.server.core.command.system.exceptions.GeneralCommandException;
import com.hypixel.hytale.server.core.command.system.suggestion.SuggestionResult;
com.hypixel.hytale.server.core.entity.entities.Player;
com.hypixel.hytale.server.core.modules.entity.hitboxcollision.HitboxCollisionConfig;
com.hypixel.hytale.server.core.modules.entity.repulsion.RepulsionConfig;
com.hypixel.hytale.server.core.modules.interaction.interaction.config.Interaction;
com.hypixel.hytale.server.core.modules.interaction.interaction.config.RootInteraction;
com.hypixel.hytale.server.core.prefab.selection.mask.BlockMask;
com.hypixel.hytale.server.core.prefab.selection.mask.BlockPattern;
com.hypixel.hytale.server.core.universe.PlayerRef;
com.hypixel.hytale.server.core.universe.Universe;
com.hypixel.hytale.server.core.universe.world.World;
it.unimi.dsi.fastutil.Pair;
java.util.Collection;
java.util.Iterator;
java.util.List;
java.util.UUID;
java.util.concurrent.CompletableFuture;
java.util.function.BiFunction;
javax.annotation.Nonnull;
javax.annotation.Nullable;
{
SingleArgumentType<Boolean> BOOLEAN = <Boolean>(, , []{, }) {
;
;
Boolean {
Boolean.parseBoolean(input);
}
{
textAlreadyEntered = textAlreadyEntered.toLowerCase();
(.startsWith(textAlreadyEntered)) {
result.suggest();
result.suggest();
} {
result.suggest();
result.suggest();
}
}
};
SingleArgumentType<Integer> INTEGER = <Integer>(, , []{, , , , }) {
Integer {
{
Integer.parseInt(input);
} (NumberFormatException var4) {
parseResult.fail(Message.translation().param(, input));
;
}
}
};
SingleArgumentType<String> STRING = <String>(, , []{, , }) {
String {
input;
}
};
SingleArgumentType<Float> FLOAT = <Float>(, , []{, , }) {
Float {
{
Float.parseFloat(input);
} (NumberFormatException var4) {
parseResult.fail(Message.translation().param(, input));
;
}
}
};
SingleArgumentType<Double> DOUBLE = <Double>(, , []{, , }) {
Double {
{
Double.parseDouble(input);
} (NumberFormatException var4) {
parseResult.fail(Message.translation().param(, input));
;
}
}
};
SingleArgumentType<UUID> UUID = <UUID>(, , []{java.util.UUID.randomUUID().toString()}) {
UUID {
{
java.util.UUID.fromString(input);
} (IllegalArgumentException var4) {
parseResult.fail(Message.translation().param(, input));
;
}
}
};
SingleArgumentType<UUID> PLAYER_UUID = <UUID>(, , []{java.util.UUID.randomUUID().toString(), , }) {
UUID {
{
java.util.UUID.fromString(input);
} (IllegalArgumentException var7) {
(World world : Universe.get().getWorlds().values()) {
Collection<PlayerRef> playerRefs = world.getPlayerRefs();
(PlayerRef)NameMatching.DEFAULT.find(playerRefs, input, PlayerRef::getUsername);
(playerRef != ) {
playerRef.getUuid();
}
}
parseResult.fail(Message.translation().param(, input));
;
}
}
};
SingleArgumentType<CompletableFuture<ProfileServiceClient.PublicGameProfile>> GAME_PROFILE_LOOKUP_ASYNC = <CompletableFuture<ProfileServiceClient.PublicGameProfile>>(, , []{java.util.UUID.randomUUID().toString(), , }) {
CompletableFuture<ProfileServiceClient.PublicGameProfile> parse( String input, ParseResult parseResult) {
(World world : Universe.get().getWorlds().values()) {
Collection<PlayerRef> playerRefs = world.getPlayerRefs();
(PlayerRef)NameMatching.DEFAULT.find(playerRefs, input, PlayerRef::getUsername);
(playerRef != ) {
CompletableFuture.completedFuture( .PublicGameProfile(playerRef.getUuid(), playerRef.getUsername()));
}
}
;
{
inputAsUuid = java.util.UUID.fromString(input);
} (IllegalArgumentException var8) {
}
ServerAuthManager.getInstance();
authManager.getSessionToken();
(sessionToken == ) {
CompletableFuture.failedFuture( ());
} {
authManager.getProfileServiceClient();
CompletableFuture<ProfileServiceClient.PublicGameProfile> future;
(inputAsUuid != ) {
future = profileClient.getProfileByUuidAsync(inputAsUuid, sessionToken);
} {
future = profileClient.getProfileByUsernameAsync(input, sessionToken);
}
future.thenApply((profile) -> {
(profile != && profile.getUuid() != ) {
profile;
} {
( + input);
}
});
}
}
};
SingleArgumentType<ProfileServiceClient.PublicGameProfile> GAME_PROFILE_LOOKUP = <ProfileServiceClient.PublicGameProfile>(, , []{java.util.UUID.randomUUID().toString(), , }) {
ProfileServiceClient.PublicGameProfile {
{
(ProfileServiceClient.PublicGameProfile)((CompletableFuture)ArgTypes.GAME_PROFILE_LOOKUP_ASYNC.parse(input, parseResult)).join();
} (Exception e) {
(Throwable)(e.getCause() != ? e.getCause() : e);
(cause IllegalStateException) {
parseResult.fail(Message.translation().param(, input));
} (cause IllegalArgumentException) {
parseResult.fail(Message.translation().param(, input));
} {
parseResult.fail(Message.translation().param(, input).param(, cause.getMessage() != ? cause.getMessage() : cause.getClass().getSimpleName()));
}
;
}
}
};
SingleArgumentType<Coord> RELATIVE_DOUBLE_COORD = <Coord>(, , []{, , }) {
Coord {
{
Coord.parse(input);
} (NumberFormatException var4) {
parseResult.fail(Message.translation().param(, input));
;
}
}
};
SingleArgumentType<IntCoord> RELATIVE_INT_COORD = <IntCoord>(, , []{, , }) {
IntCoord {
{
IntCoord.parse(input);
} (NumberFormatException var4) {
parseResult.fail(Message.translation().param(, input));
;
}
}
};
SingleArgumentType<RelativeInteger> RELATIVE_INTEGER = <RelativeInteger>(, , []{, , }) {
RelativeInteger {
RelativeInteger.parse(input, parseResult);
}
};
SingleArgumentType<RelativeFloat> RELATIVE_FLOAT = <RelativeFloat>(, , []{, , }) {
RelativeFloat {
RelativeFloat.parse(input, parseResult);
}
};
SingleArgumentType<PlayerRef> PLAYER_REF = <PlayerRef>(, , []{, }) {
PlayerRef {
;
(World world : Universe.get().getWorlds().values()) {
Collection<PlayerRef> playerRefs = world.getPlayerRefs();
playerRef = (PlayerRef)NameMatching.DEFAULT.find(playerRefs, input, PlayerRef::getUsername);
(playerRef != ) {
;
}
}
(playerRef == ) {
parseResult.fail(Message.translation().param(, input));
;
} {
playerRef;
}
}
PlayerRef {
(PlayerRef)context.get(argument);
(playerRef != ) {
playerRef;
} (sender Player) {
(Player)sender;
player.getPlayerRef();
} {
(Message.translation().param(, ));
}
}
};
SingleArgumentType<World> WORLD = <World>(, , []{}) {
World {
Universe.get().getWorld(input);
(world == ) {
parseResult.fail(Message.translation().param(, input));
;
} {
world;
}
}
World {
argument.get(context);
(world != ) {
world;
} (sender Player) {
((Player)sender).getWorld();
} {
Universe.get();
(universe.getWorlds().size() == ) {
Iterator<World> iterator = universe.getWorlds().values().iterator();
(iterator.hasNext()) {
(World)iterator.next();
}
}
(Message.translation().param(, ));
}
}
};
SingleArgumentType<ModelAsset> MODEL_ASSET = (, ModelAsset.class, );
SingleArgumentType<Weather> WEATHER_ASSET = (, Weather.class, );
SingleArgumentType<Interaction> INTERACTION_ASSET = (, Interaction.class, );
SingleArgumentType<RootInteraction> ROOT_INTERACTION_ASSET = (, RootInteraction.class, );
SingleArgumentType<EntityEffect> EFFECT_ASSET = (, EntityEffect.class, );
SingleArgumentType<Environment> ENVIRONMENT_ASSET = (, Environment.class, );
SingleArgumentType<Item> ITEM_ASSET = (, Item.class, );
SingleArgumentType<BlockType> BLOCK_TYPE_ASSET = (, BlockType.class, );
SingleArgumentType<ParticleSystem> PARTICLE_SYSTEM = (, ParticleSystem.class, );
SingleArgumentType<HitboxCollisionConfig> HITBOX_COLLISION_CONFIG = (, HitboxCollisionConfig.class, );
SingleArgumentType<RepulsionConfig> REPULSION_CONFIG = (, RepulsionConfig.class, );
SingleArgumentType<SoundEvent> SOUND_EVENT_ASSET = (, SoundEvent.class, );
SingleArgumentType<AmbienceFX> AMBIENCE_FX_ASSET = (, AmbienceFX.class, );
SingleArgumentType<SoundCategory> SOUND_CATEGORY = forEnum(, SoundCategory.class);
ArgWrapper<EntityWrappedArg, UUID> ENTITY_ID;
SingleArgumentType<IntegerComparisonOperator> INTEGER_COMPARISON_OPERATOR;
SingleArgumentType<IntegerOperation> INTEGER_OPERATION;
ArgumentType<Pair<Integer, Integer>> INT_RANGE;
ArgumentType<RelativeIntegerRange> RELATIVE_INT_RANGE;
ArgumentType<Vector2i> VECTOR2I;
ArgumentType<Vector3i> VECTOR3I;
ArgumentType<RelativeVector3i> RELATIVE_VECTOR3I;
ArgumentType<RelativeIntPosition> RELATIVE_BLOCK_POSITION;
ArgumentType<RelativeDoublePosition> RELATIVE_POSITION;
ArgumentType<RelativeChunkPosition> RELATIVE_CHUNK_POSITION;
ArgumentType<Vector3f> ROTATION;
SingleArgumentType<String> BLOCK_TYPE_KEY;
ArgumentType<Integer> BLOCK_ID;
SingleArgumentType<Integer> COLOR;
ArgumentType<Pair<Integer, String>> WEIGHTED_BLOCK_TYPE;
ArgumentType<String> WEIGHTED_BLOCK_ENTRY;
ArgumentType<BlockPattern> BLOCK_PATTERN;
ArgumentType<BlockMask> INDIVIDUAL_BLOCK_MASK;
ArgumentType<BlockMask> BLOCK_MASK;
SingleArgumentType<Integer> TICK_RATE;
SingleArgumentType<GameMode> GAME_MODE;
{
}
<E <E>> SingleArgumentType<E> {
<E>(name, enumType);
}
{
ENTITY_ID = <EntityWrappedArg, UUID>(UUID.withOverriddenUsage(), EntityWrappedArg::);
INTEGER_COMPARISON_OPERATOR = <IntegerComparisonOperator>(, , []{, , , , , , }) {
IntegerComparisonOperator {
ArgTypes.IntegerComparisonOperator.getFromStringRepresentation(input);
(integerComparisonOperator == ) {
parseResult.fail(Message.raw( + input + ));
;
} {
integerComparisonOperator;
}
}
};
INTEGER_OPERATION = <IntegerOperation>(, , []{, , , , , }) {
IntegerOperation {
ArgTypes.IntegerOperation.getFromStringRepresentation(input);
(integerOperation == ) {
parseResult.fail(Message.raw( + input + ));
;
} {
integerOperation;
}
}
};
INT_RANGE = <Pair<Integer, Integer>>(, , []{, , }) {
WrappedArgumentType<Integer> minValue;
WrappedArgumentType<Integer> maxValue;
{
.minValue = .withParameter(, , ArgTypes.INTEGER);
.maxValue = .withParameter(, , ArgTypes.INTEGER);
}
Pair<Integer, Integer> {
((Integer)context.get(.minValue) > (Integer)context.get(.maxValue)) {
String.valueOf(context.get(.minValue));
parseResult.fail(Message.raw( + var10001 + + String.valueOf(context.get(.maxValue))));
;
} {
Pair.<Integer, Integer>of((Integer)context.get(.minValue), (Integer)context.get(.maxValue));
}
}
};
RELATIVE_INT_RANGE = <RelativeIntegerRange>(, , []{, , }) {
WrappedArgumentType<RelativeInteger> minValue;
WrappedArgumentType<RelativeInteger> maxValue;
{
.minValue = .withParameter(, , ArgTypes.RELATIVE_INTEGER);
.maxValue = .withParameter(, , ArgTypes.RELATIVE_INTEGER);
}
RelativeIntegerRange {
.minValue.get(context);
.maxValue.get(context);
(min != && max != ) {
(min.isRelative() != max.isRelative()) {
parseResult.fail(Message.raw());
;
} (min.getRawValue() > max.getRawValue()) {
String.valueOf(context.get(.minValue));
parseResult.fail(Message.raw( + var10001 + + String.valueOf(context.get(.maxValue))));
;
} {
((RelativeInteger)context.get(.minValue), (RelativeInteger)context.get(.maxValue));
}
} {
parseResult.fail(Message.raw());
;
}
}
};
VECTOR2I = <Vector2i>(, , []{, , }) {
WrappedArgumentType<Integer> xValue;
WrappedArgumentType<Integer> zValue;
{
.xValue = .withParameter(, , ArgTypes.INTEGER);
.zValue = .withParameter(, , ArgTypes.INTEGER);
}
Vector2i {
((Integer)context.get(.xValue), (Integer)context.get(.zValue));
}
};
VECTOR3I = <Vector3i>(, , []{, , }) {
WrappedArgumentType<Integer> xValue;
WrappedArgumentType<Integer> yValue;
WrappedArgumentType<Integer> zValue;
{
.xValue = .withParameter(, , ArgTypes.INTEGER);
.yValue = .withParameter(, , ArgTypes.INTEGER);
.zValue = .withParameter(, , ArgTypes.INTEGER);
}
Vector3i {
((Integer)context.get(.xValue), (Integer)context.get(.yValue), (Integer)context.get(.zValue));
}
};
RELATIVE_VECTOR3I = <RelativeVector3i>(, , []{, , }) {
WrappedArgumentType<RelativeInteger> xValue;
WrappedArgumentType<RelativeInteger> yValue;
WrappedArgumentType<RelativeInteger> zValue;
{
.xValue = .withParameter(, , ArgTypes.RELATIVE_INTEGER);
.yValue = .withParameter(, , ArgTypes.RELATIVE_INTEGER);
.zValue = .withParameter(, , ArgTypes.RELATIVE_INTEGER);
}
RelativeVector3i {
((RelativeInteger)context.get(.xValue), (RelativeInteger)context.get(.yValue), (RelativeInteger)context.get(.zValue));
}
};
RELATIVE_BLOCK_POSITION = <RelativeIntPosition>(, , []{, , }) {
WrappedArgumentType<IntCoord> xValue;
WrappedArgumentType<IntCoord> yValue;
WrappedArgumentType<IntCoord> zValue;
{
.xValue = .withParameter(, , ArgTypes.RELATIVE_INT_COORD);
.yValue = .withParameter(, , ArgTypes.RELATIVE_INT_COORD);
.zValue = .withParameter(, , ArgTypes.RELATIVE_INT_COORD);
}
RelativeIntPosition {
((IntCoord)context.get(.xValue), (IntCoord)context.get(.yValue), (IntCoord)context.get(.zValue));
}
};
RELATIVE_POSITION = <RelativeDoublePosition>(, , []{, , }) {
WrappedArgumentType<Coord> xValue;
WrappedArgumentType<Coord> yValue;
WrappedArgumentType<Coord> zValue;
{
.xValue = .withParameter(, , ArgTypes.RELATIVE_DOUBLE_COORD);
.yValue = .withParameter(, , ArgTypes.RELATIVE_DOUBLE_COORD);
.zValue = .withParameter(, , ArgTypes.RELATIVE_DOUBLE_COORD);
}
RelativeDoublePosition {
((Coord)context.get(.xValue), (Coord)context.get(.yValue), (Coord)context.get(.zValue));
}
};
RELATIVE_CHUNK_POSITION = <RelativeChunkPosition>(, , []{, , }) {
WrappedArgumentType<IntCoord> xValue;
WrappedArgumentType<IntCoord> zValue;
{
.xValue = .withParameter(, , ArgTypes.RELATIVE_INT_COORD);
.zValue = .withParameter(, , ArgTypes.RELATIVE_INT_COORD);
}
RelativeChunkPosition {
((IntCoord)context.get(.xValue), (IntCoord)context.get(.zValue));
}
};
ROTATION = <Vector3f>(, , []{}) {
WrappedArgumentType<Float> pitch;
WrappedArgumentType<Float> yaw;
WrappedArgumentType<Float> roll;
{
.pitch = .withParameter(, , ArgTypes.FLOAT);
.yaw = .withParameter(, , ArgTypes.FLOAT);
.roll = .withParameter(, , ArgTypes.FLOAT);
}
Vector3f {
((Float)context.get(.pitch), (Float)context.get(.yaw), (Float)context.get(.roll));
}
};
BLOCK_TYPE_KEY = <String>(, , []{}) {
String {
{
input;
} (Exception e) {
parseResult.fail(Message.raw(e.getMessage()));
;
}
}
};
BLOCK_ID = <String, Integer>(, Message.raw(), BLOCK_TYPE_KEY, []{}) {
Integer {
BlockType.getAssetMap().getIndex(blockTypeKey);
}
};
COLOR = <Integer>(, , []{, , , }) {
Integer {
input = input.trim();
(input.isEmpty()) {
parseResult.fail(Message.raw());
;
} (input.charAt() == ) {
{
input.substring();
Long.parseLong(hexString, );
(hexString.length()) {
:
()(value >> & );
()(value >> & );
()(value & );
- | r << | r << | g << | g << | b << | b;
:
()(value >> & );
()(value >> & );
()(value >> & );
()(value & );
r4 << | r4 << | g4 << | g4 << | b4 << | b4 << | a4 << | a4;
:
:
:
parseResult.fail(Message.raw( + input + ));
;
:
- | ()value;
:
()value;
}
} (NumberFormatException e) {
parseResult.fail(Message.raw( + input + + e.getMessage()));
;
}
} (input.length() <= || !input.startsWith() && !input.startsWith()) {
{
Integer.parseInt(input);
} (NumberFormatException var15) {
parseResult.fail(Message.raw( + input + ));
;
}
} {
{
Integer.parseUnsignedInt(input.substring(), );
} (NumberFormatException e) {
parseResult.fail(Message.raw( + input + + e.getMessage()));
;
}
}
}
};
WEIGHTED_BLOCK_TYPE = <Pair<Integer, String>>(, , []{, , }) {
WrappedArgumentType<Integer> weight;
WrappedArgumentType<String> blockType;
{
.weight = .withParameter(, , ArgTypes.INTEGER);
.blockType = .withParameter(, , ArgTypes.BLOCK_TYPE_KEY);
}
Pair<Integer, String> {
Pair.<Integer, String>of((Integer)context.get(.weight), (String)context.get(.blockType));
}
};
WEIGHTED_BLOCK_ENTRY = <String>(, , []{, , }) {
String {
(input.isEmpty()) {
parseResult.fail(Message.raw());
;
} {
input;
}
}
};
BLOCK_PATTERN = <List<String>, BlockPattern>(, Message.raw(), (WEIGHTED_BLOCK_ENTRY), []{, , }) {
BlockPattern {
String.join(, entries);
BlockPattern.parse(patternString);
}
};
INDIVIDUAL_BLOCK_MASK = <BlockMask>(, , []{, , , }) {
BlockMask {
{
BlockMask.parse(input);
} (Exception var4) {
parseResult.fail(Message.raw( + input + ));
;
}
}
};
BLOCK_MASK = <List<BlockMask>, BlockMask>(, Message.raw(), (INDIVIDUAL_BLOCK_MASK), []{, }) {
BlockMask {
BlockMask.combine((BlockMask[])masks.toArray((x$) -> [x$]));
}
};
TICK_RATE = <Integer>(, , []{, , , , }) {
Integer {
input.trim().toLowerCase();
(trimmed.isEmpty()) {
parseResult.fail(Message.translation());
;
} {
{
(trimmed.endsWith()) {
trimmed.substring(, trimmed.length() - ).trim();
Integer.parseInt(value);
} (trimmed.endsWith()) {
trimmed.substring(, trimmed.length() - ).trim();
Double.parseDouble(value);
(ms <= ) {
parseResult.fail(Message.translation().param(, input));
;
} {
()Math.round( / ms);
}
} {
Integer.parseInt(trimmed);
}
} (NumberFormatException var7) {
parseResult.fail(Message.translation().param(, input));
;
}
}
}
{
result.suggest();
result.suggest();
result.suggest();
result.suggest();
result.suggest();
result.suggest();
}
};
GAME_MODE = ();
}
{
GREATER_THAN((left, right) -> left > right, ),
GREATER_THAN_EQUAL_TO((left, right) -> left >= right, ),
LESS_THAN((left, right) -> left < right, ),
LESS_THAN_EQUAL_TO((left, right) -> left <= right, ),
MOD_EQUAL_ZERO((left, right) -> left % right == , ),
MOD_NOT_EQUAL_ZERO((left, right) -> left % right != , ),
EQUAL_TO(Integer::equals, ),
NOT_EQUAL_TO((left, right) -> !left.equals(right), );
BiFunction<Integer, Integer, Boolean> comparisonFunction;
String stringRepresentation;
{
.comparisonFunction = comparisonFunction;
.stringRepresentation = stringRepresentation;
}
{
(Boolean).comparisonFunction.apply(left, right);
}
String {
.stringRepresentation;
}
IntegerComparisonOperator {
(IntegerComparisonOperator value : values()) {
(value.stringRepresentation.equals(stringRepresentation)) {
value;
}
}
;
}
}
{
ADD(Integer::sum, ),
SUBTRACT((previous, modifier) -> previous - modifier, ),
MULTIPLY((previous, modifier) -> previous * modifier, ),
DIVIDE((previous, modifier) -> previous / modifier, ),
MODULUS((previous, modifier) -> previous % modifier, ),
SET((previous, modifier) -> modifier, );
BiFunction<Integer, Integer, Integer> operationFunction;
String stringRepresentation;
{
.operationFunction = operationFunction;
.stringRepresentation = stringRepresentation;
}
{
(Integer).operationFunction.apply(previous, modifier);
}
String {
.stringRepresentation;
}
IntegerOperation {
(IntegerOperation value : values()) {
(value.stringRepresentation.equals(stringRepresentation)) {
value;
}
}
;
}
}
}
com/hypixel/hytale/server/core/command/system/arguments/types/ArgumentType.java
package com.hypixel.hytale.server.core.command.system.arguments.types;
import com.hypixel.hytale.server.core.Message;
import com.hypixel.hytale.server.core.command.system.CommandContext;
import com.hypixel.hytale.server.core.command.system.CommandSender;
import com.hypixel.hytale.server.core.command.system.ParseResult;
import com.hypixel.hytale.server.core.command.system.arguments.system.Argument;
import com.hypixel.hytale.server.core.command.system.suggestion.SuggestionProvider;
import com.hypixel.hytale.server.core.command.system.suggestion.SuggestionResult;
import java.util.Arrays;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
public abstract class ArgumentType<DataType> implements SuggestionProvider {
@Nonnull
public static final String[] EMPTY_EXAMPLES = new String[0];
private final Message name;
@Nonnull
private final Message argumentUsage;
@Nonnull
protected final String[] examples;
protected int numberOfParameters;
protected ArgumentType(@Nonnull Message name, @Nonnull Message argumentUsage, int numberOfParameters, String... examples) {
.name = name;
.argumentUsage = argumentUsage;
.numberOfParameters = numberOfParameters;
(numberOfParameters < ) {
();
} {
.examples = examples == ? EMPTY_EXAMPLES : examples;
}
}
{
(Message.translation(name), argumentUsage, numberOfParameters, examples);
}
{
(Message.translation(name), Message.translation(argumentUsage), numberOfParameters, examples);
}
DataType {
();
}
{
}
DataType ;
Message {
.argumentUsage;
}
{
.numberOfParameters;
}
Message {
.name;
}
String[] getExamples() {
.examples;
}
{
;
}
String {
String.valueOf(.name);
+ var10000 + + String.valueOf(.argumentUsage) + + Arrays.toString(.examples) + + .numberOfParameters + ;
}
}
com/hypixel/hytale/server/core/command/system/arguments/types/AssetArgumentType.java
package com.hypixel.hytale.server.core.command.system.arguments.types;
import com.hypixel.hytale.assetstore.AssetMap;
import com.hypixel.hytale.assetstore.map.JsonAssetWithMap;
import javax.annotation.Nonnull;
public class AssetArgumentType<DataType extends JsonAssetWithMap<String, M>, M extends AssetMap<String, DataType>> extends AbstractAssetArgumentType<DataType, M, String> {
public AssetArgumentType(String name, Class<DataType> type, @Nonnull String argumentUsage) {
super(name, type, argumentUsage);
}
public String getAssetKey(@Nonnull String input) {
return input;
}
}
com/hypixel/hytale/server/core/command/system/arguments/types/BooleanFlagArgumentType.java
package com.hypixel.hytale.server.core.command.system.arguments.types;
import com.hypixel.hytale.server.core.command.system.ParseResult;
import javax.annotation.Nonnull;
public class BooleanFlagArgumentType extends ArgumentType<Boolean> {
public BooleanFlagArgumentType() {
super((String)"server.commands.parsing.argtype.flag.name", (String)"server.commands.parsing.argtype.flag.usage", 0, "None, just specify the argument for true");
}
@Nonnull
public Boolean parse(@Nonnull String[] input, @Nonnull ParseResult parseResult) {
return Boolean.TRUE;
}
}
com/hypixel/hytale/server/core/command/system/arguments/types/Coord.java
package com.hypixel.hytale.server.core.command.system.arguments.types;
import com.hypixel.hytale.math.util.ChunkUtil;
import com.hypixel.hytale.math.util.MathUtil;
import com.hypixel.hytale.server.core.Message;
import com.hypixel.hytale.server.core.command.system.exceptions.GeneralCommandException;
import com.hypixel.hytale.server.core.universe.world.World;
import com.hypixel.hytale.server.core.universe.world.chunk.WorldChunk;
import javax.annotation.Nonnull;
public class Coord {
private final double value;
private final boolean height;
private final boolean relative;
private final boolean chunk;
public Coord(double value, boolean height, boolean relative, boolean chunk) {
this.value = value;
this.height = height;
this.relative = relative;
this.chunk = chunk;
}
public double getValue() {
return this.value;
}
public boolean isNotBase() {
!.height && !.relative && !.chunk;
}
{
.height;
}
{
.relative;
}
{
.chunk;
}
{
.resolve(base);
}
GeneralCommandException {
(.height) {
world.getNonTickingChunk(ChunkUtil.indexChunkFromBlock(x, z));
(worldCoords == ) {
(Message.raw( + x + + z + ));
} {
()(worldCoords.getHeight(MathUtil.floor(x), MathUtil.floor(z)) + ) + .resolve();
}
} {
.resolve(base);
}
}
{
.chunk ? .value * : .value;
.relative ? val + base : val;
}
Coord {
;
;
;
;
label21:
() {
(str.charAt(index)) {
:
++index;
height = ;
(str.length() == index) {
(, , relative, chunk);
}
;
:
++index;
chunk = ;
(str.length() == index) {
(, height, relative, );
}
label21;
:
++index;
relative = ;
(str.length() == index) {
(, height, , chunk);
}
;
:
label21;
}
}
str.substring(index);
(Double.parseDouble(rest), height, relative, chunk);
}
}
com/hypixel/hytale/server/core/command/system/arguments/types/EntityWrappedArg.java
package com.hypixel.hytale.server.core.command.system.arguments.types;
import com.hypixel.hytale.component.ComponentAccessor;
import com.hypixel.hytale.component.Ref;
import com.hypixel.hytale.server.core.Message;
import com.hypixel.hytale.server.core.command.system.CommandContext;
import com.hypixel.hytale.server.core.command.system.arguments.system.Argument;
import com.hypixel.hytale.server.core.command.system.arguments.system.WrappedArg;
import com.hypixel.hytale.server.core.command.system.exceptions.GeneralCommandException;
import com.hypixel.hytale.server.core.universe.world.World;
import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
import com.hypixel.hytale.server.core.util.TargetUtil;
import java.util.UUID;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
public class EntityWrappedArg extends WrappedArg<UUID> {
@Nonnull
private static final Message MESSAGE_COMMANDS_ERRORS_PLAYER_NOT_IN_WORLD = Message.translation("server.commands.errors.playerNotInWorld");
public EntityWrappedArg(@Nonnull Argument<?, UUID> argument) {
super(argument);
}
@Nullable
public Ref<EntityStore> get(@Nonnull ComponentAccessor<EntityStore> componentAccessor, CommandContext context) {
((EntityStore)componentAccessor.getExternalData()).getWorld();
Ref<EntityStore> reference = .getEntityDirectly(context, world);
(reference != ) {
reference;
} {
Ref<EntityStore> playerRef = context.isPlayer() ? context.senderAsPlayerRef() : ;
(playerRef == ) {
(Message.translation().param(, ));
} (!playerRef.isValid()) {
(MESSAGE_COMMANDS_ERRORS_PLAYER_NOT_IN_WORLD);
} {
Ref<EntityStore> entityRef = TargetUtil.getTargetEntity(playerRef, componentAccessor);
(entityRef == ) {
(Message.translation().param(, ));
} {
entityRef;
}
}
}
}
Ref<EntityStore> {
(!.provided(context)) {
;
} {
(UUID).get(context);
Ref<EntityStore> reference = world.getEntityStore().getRefFromUUID(uuid);
(reference == ) {
(Message.translation().param(, uuid.toString()));
} {
reference;
}
}
}
}
com/hypixel/hytale/server/core/command/system/arguments/types/EnumArgumentType.java
package com.hypixel.hytale.server.core.command.system.arguments.types;
import com.hypixel.hytale.common.util.StringUtil;
import com.hypixel.hytale.server.core.Message;
import com.hypixel.hytale.server.core.command.system.CommandUtil;
import com.hypixel.hytale.server.core.command.system.ParseResult;
import it.unimi.dsi.fastutil.objects.ObjectArrayList;
import java.util.List;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
public class EnumArgumentType<E extends Enum<E>> extends SingleArgumentType<E> {
@Nonnull
private final Class<? extends E> enumClass;
@Nonnull
private final E[] enumConstants;
@Nonnull
private final List<String> enumNames;
public EnumArgumentType(@Nonnull String name, @Nonnull Class<E> enumClass) {
super(name, getArgumentUsageString((Enum[])enumClass.getEnumConstants()), getExamples((Enum[])enumClass.getEnumConstants()));
this.enumClass = enumClass;
this.enumConstants = (E[])(enumClass.getEnumConstants());
this.enumNames = new ObjectArrayList<String>();
for(E enumConstant : this.enumConstants) {
.enumNames.add(enumConstant.name());
}
}
E {
input.toLowerCase();
(E enumConstant : .enumConstants) {
(enumConstant.name().toLowerCase().equals(inputLowerCase)) {
enumConstant;
}
}
parseResult.fail(Message.empty().insert(Message.translation().param(, .enumClass.getSimpleName()).param(, input)).insert(Message.raw()).insert(Message.translation().param(, StringUtil.sortByFuzzyDistance(inputLowerCase, .enumNames, CommandUtil.RECOMMEND_COUNT).toString())));
;
}
<X <X>> String {
();
( ; i < enumConstants.length; ++i) {
stringBuilder.append(enumConstants[i].name().toLowerCase());
(i != enumConstants.length - ) {
stringBuilder.append();
}
}
stringBuilder.toString();
}
<X <X>> String[] getExamples( X[] enumConstants) {
String[] examples = [enumConstants.length];
( ; i < enumConstants.length; ++i) {
examples[i] = enumConstants[i].name().toLowerCase();
}
examples;
}
}
com/hypixel/hytale/server/core/command/system/arguments/types/GameModeArgumentType.java
package com.hypixel.hytale.server.core.command.system.arguments.types;
import com.hypixel.hytale.common.util.StringUtil;
import com.hypixel.hytale.protocol.GameMode;
import com.hypixel.hytale.server.core.Message;
import com.hypixel.hytale.server.core.command.system.CommandUtil;
import com.hypixel.hytale.server.core.command.system.ParseResult;
import it.unimi.dsi.fastutil.objects.Object2ObjectMap;
import it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap;
import java.util.List;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
public class GameModeArgumentType extends SingleArgumentType<GameMode> {
@Nonnull
private static final Object2ObjectMap<String, GameMode> GAMEMODE_MAP = new Object2ObjectOpenHashMap<String, GameMode>();
public GameModeArgumentType() {
super("server.commands.parsing.argtype.gamemode.name", "server.commands.parsing.argtype.gamemode.usage", "adventure", "creative", "a", "c");
}
@Nullable
public GameMode parse(@Nonnull String input, @Nonnull ParseResult parseResult) {
String inputLowerCase input.toLowerCase();
(GameMode)GAMEMODE_MAP.get(inputLowerCase);
(gameMode != ) {
gameMode;
} {
List<String> validModes = StringUtil.<String>sortByFuzzyDistance(inputLowerCase, GAMEMODE_MAP.keySet(), CommandUtil.RECOMMEND_COUNT);
parseResult.fail(Message.translation().param(, input).param(, validModes.toString()));
;
}
}
{
GAMEMODE_MAP.put(, GameMode.Adventure);
GAMEMODE_MAP.put(, GameMode.Creative);
GAMEMODE_MAP.put(, GameMode.Adventure);
GAMEMODE_MAP.put(, GameMode.Creative);
}
}
com/hypixel/hytale/server/core/command/system/arguments/types/IntCoord.java
package com.hypixel.hytale.server.core.command.system.arguments.types;
import com.hypixel.hytale.component.Ref;
import com.hypixel.hytale.math.util.ChunkUtil;
import com.hypixel.hytale.server.core.universe.world.chunk.WorldChunk;
import com.hypixel.hytale.server.core.universe.world.storage.ChunkStore;
import javax.annotation.Nonnull;
public class IntCoord {
private final int value;
private final boolean height;
private final boolean relative;
private final boolean chunk;
public IntCoord(int value, boolean height, boolean relative, boolean chunk) {
this.value = value;
this.height = height;
this.relative = relative;
this.chunk = chunk;
}
public int getValue() {
return this.value;
}
public boolean isNotBase() {
return !this.height && !this.relative && !this.chunk;
}
{
.height;
}
{
.relative;
}
{
.chunk;
}
{
.resolve(base);
}
{
(.height) {
ChunkUtil.indexChunkFromBlock(x, z);
Ref<ChunkStore> chunkRef = chunkStore.getChunkReference(chunkIndex);
(chunkRef != && chunkRef.isValid()) {
(WorldChunk)chunkStore.getStore().getComponent(chunkRef, WorldChunk.getComponentType());
worldChunkComponent != ;
.resolve(worldChunkComponent.getHeight(x, z) + );
} {
.resolve(base);
}
} {
.resolve(base);
}
}
{
.chunk ? .value * : .value;
.relative ? val + base : val;
}
IntCoord {
;
;
;
;
() {
(str.charAt(index)) {
:
++index;
height = ;
(str.length() == index) {
(, , relative, chunk);
}
;
:
++index;
chunk = ;
(str.length() == index) {
(, height, relative, );
}
;
:
++index;
relative = ;
(str.length() == index) {
(, height, , chunk);
}
;
:
str.substring(index);
(Integer.parseInt(rest), height, relative, chunk);
}
}
}
}
com/hypixel/hytale/server/core/command/system/arguments/types/ListArgumentType.java
package com.hypixel.hytale.server.core.command.system.arguments.types;
import com.hypixel.hytale.server.core.Message;
import com.hypixel.hytale.server.core.command.system.ParseResult;
import it.unimi.dsi.fastutil.objects.ObjectArrayList;
import java.util.Arrays;
import java.util.List;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
public class ListArgumentType<DataType> extends ArgumentType<List<DataType>> {
@Nonnull
private final ArgumentType<DataType> argumentType;
public ListArgumentType(@Nonnull ArgumentType<DataType> argumentType) {
super(Message.translation("server.commands.parsing.argtype.list.name").insert(" (").insert(argumentType.getName()).insert(")"), Message.translation("server.commands.parsing.argtype.list.usage"), argumentType.getNumberOfParameters(), argumentType.getExamples());
this.argumentType = argumentType;
}
public boolean isListArgument() {
return true;
}
@Nullable
public List<DataType> parse(@Nonnull String[] input, @Nonnull ParseResult parseResult) {
List<DataType> returnList = new ObjectArrayList<DataType>();
( ; i < input.length; i += .argumentType.getNumberOfParameters()) {
returnList.add(.argumentType.parse((String[])Arrays.copyOfRange(input, i, i + .argumentType.getNumberOfParameters()), parseResult));
(parseResult.failed()) {
;
}
}
returnList;
}
}
com/hypixel/hytale/server/core/command/system/arguments/types/MultiArgumentContext.java
package com.hypixel.hytale.server.core.command.system.arguments.types;
import com.hypixel.hytale.server.core.command.system.ParseResult;
import it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap;
import java.util.Map;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
public class MultiArgumentContext {
@Nonnull
private final Map<ArgumentType<?>, Object> parsedArguments = new Object2ObjectOpenHashMap<ArgumentType<?>, Object>();
public MultiArgumentContext() {
}
public void registerArgumentValues(@Nonnull ArgumentType<?> argumentType, @Nonnull String[] values, @Nonnull ParseResult parseResult) {
this.parsedArguments.put(argumentType, argumentType.parse(values, parseResult));
}
@Nullable
public <DataType> DataType get(@Nonnull ArgumentType<DataType> argumentType) {
return (DataType)this.parsedArguments.get(argumentType);
}
}
com/hypixel/hytale/server/core/command/system/arguments/types/MultiArgumentType.java
package com.hypixel.hytale.server.core.command.system.arguments.types;
import com.hypixel.hytale.server.core.command.system.ParseResult;
import it.unimi.dsi.fastutil.objects.Object2ObjectLinkedOpenHashMap;
import java.util.Arrays;
import java.util.Map;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
public abstract class MultiArgumentType<DataType> extends ArgumentType<DataType> {
@Nonnull
private final Map<String, SingleArgumentType<?>> argumentValues = new Object2ObjectLinkedOpenHashMap<String, SingleArgumentType<?>>();
public MultiArgumentType(@Nonnull String name, @Nonnull String argumentUsage, @Nullable String... examples) {
super((String)name, (String)argumentUsage, 0, examples);
}
@Nonnull
protected <D> WrappedArgumentType<D> withParameter(@Nonnull String name, @Nonnull String usage, @Nonnull SingleArgumentType<D> argumentType) {
WrappedArgumentType<D> wrappedArgumentType = argumentType.withOverriddenUsage(usage);
name = name.toLowerCase();
if (this.argumentValues.containsKey(name)) {
throw new IllegalArgumentException("Cannot register two MultiArgumentType parameters with the same name");
} {
.argumentValues.put(name, wrappedArgumentType);
.numberOfParameters = .argumentValues.size();
wrappedArgumentType;
}
}
DataType {
();
;
(SingleArgumentType<?> argumentValue : .argumentValues.values()) {
multiArgumentContext.registerArgumentValues(argumentValue, (String[])Arrays.copyOfRange(input, endOfLastIndex, endOfLastIndex + argumentValue.numberOfParameters), parseResult);
(parseResult.failed()) {
;
}
endOfLastIndex += argumentValue.numberOfParameters;
}
(DataType).parse(multiArgumentContext, parseResult);
}
DataType ;
}
com/hypixel/hytale/server/core/command/system/arguments/types/ProcessedArgumentType.java
package com.hypixel.hytale.server.core.command.system.arguments.types;
import com.hypixel.hytale.server.core.Message;
import com.hypixel.hytale.server.core.command.system.ParseResult;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
public abstract class ProcessedArgumentType<InputType, OutputType> extends ArgumentType<OutputType> {
@Nonnull
private final ArgumentType<InputType> inputTypeArgumentType;
public ProcessedArgumentType(String name, Message argumentUsage, @Nonnull ArgumentType<InputType> inputTypeArgumentType, @Nullable String... examples) {
super(name, argumentUsage, inputTypeArgumentType.numberOfParameters, examples);
this.inputTypeArgumentType = inputTypeArgumentType;
}
@Nonnull
public ArgumentType<InputType> getInputTypeArgumentType() {
return this.inputTypeArgumentType;
}
public boolean isListArgument() {
return this.getInputTypeArgumentType().isListArgument();
}
@Nullable
public OutputType parse(@Nonnull String[] input, @Nonnull ParseResult parseResult) {
InputType .inputTypeArgumentType.parse(input, parseResult);
(parseResult.failed()) {
;
} {
(OutputType).processInput(parsedData);
(OutputType)(parseResult.failed() ? : outputType);
}
}
OutputType ;
}
com/hypixel/hytale/server/core/command/system/arguments/types/RelativeChunkPosition.java
package com.hypixel.hytale.server.core.command.system.arguments.types;
import com.hypixel.hytale.component.ComponentAccessor;
import com.hypixel.hytale.component.Ref;
import com.hypixel.hytale.math.util.MathUtil;
import com.hypixel.hytale.math.vector.Vector2i;
import com.hypixel.hytale.math.vector.Vector3d;
import com.hypixel.hytale.server.core.Message;
import com.hypixel.hytale.server.core.command.system.CommandContext;
import com.hypixel.hytale.server.core.command.system.exceptions.GeneralCommandException;
import com.hypixel.hytale.server.core.modules.entity.component.TransformComponent;
import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
import javax.annotation.Nonnull;
public class RelativeChunkPosition {
@Nonnull
private static final Message MESSAGE_COMMANDS_ERRORS_PLAYER_NOT_IN_WORLD = Message.translation("server.commands.errors.playerNotInWorld");
@Nonnull
private static final Message MESSAGE_COMMANDS_ERRORS_WORLD_UNPSPECIFIED = Message.translation("server.commands.errors.worldUnspecified");
private final IntCoord x;
private final IntCoord z;
public RelativeChunkPosition(@Nonnull IntCoord x, IntCoord z) {
.x = x;
.z = z;
}
Vector2i {
Ref<EntityStore> playerRef = context.senderAsPlayerRef();
(playerRef == ) {
(MESSAGE_COMMANDS_ERRORS_WORLD_UNPSPECIFIED);
} (!playerRef.isValid()) {
(MESSAGE_COMMANDS_ERRORS_PLAYER_NOT_IN_WORLD);
} {
(TransformComponent)componentAccessor.getComponent(playerRef, TransformComponent.getComponentType());
transformComponent != ;
.getChunkPosition(transformComponent.getPosition());
}
}
Vector2i {
.x.isNotBase() ? .x.getValue() : .x.resolveXZ(MathUtil.floor(base.x)) >> ;
.z.isNotBase() ? .z.getValue() : .z.resolveXZ(MathUtil.floor(base.z)) >> ;
(relX, relZ);
}
{
.x.isRelative() || .z.isRelative();
}
}
com/hypixel/hytale/server/core/command/system/arguments/types/RelativeDirection.java
package com.hypixel.hytale.server.core.command.system.arguments.types;
import com.hypixel.hytale.math.Axis;
import com.hypixel.hytale.math.vector.Vector3i;
import com.hypixel.hytale.server.core.Message;
import com.hypixel.hytale.server.core.command.system.ParseResult;
import com.hypixel.hytale.server.core.modules.entity.component.HeadRotation;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
public enum RelativeDirection {
FORWARD,
BACKWARD,
LEFT,
RIGHT,
UP,
DOWN;
public static final SingleArgumentType<RelativeDirection> ARGUMENT_TYPE = new SingleArgumentType<RelativeDirection>("Relative Direction", "A direction relative to the player (forward, backward, left, right, up, down)", new String[]{"forward", "backward", "left", "right", "up", "down"}) {
@Nullable
public RelativeDirection parse(@Nonnull String input, @Nonnull ParseResult parseResult) {
RelativeDirection var10000;
switch (input.toLowerCase()) {
case "forward":
case "f":
var10000 = RelativeDirection.FORWARD;
break;
case :
:
:
var10000 = RelativeDirection.BACKWARD;
;
:
:
var10000 = RelativeDirection.LEFT;
;
:
:
var10000 = RelativeDirection.RIGHT;
;
:
:
var10000 = RelativeDirection.UP;
;
:
:
var10000 = RelativeDirection.DOWN;
;
:
parseResult.fail(Message.raw( + input + ));
var10000 = ;
}
var10000;
}
};
{
}
Vector3i {
(direction == ) {
headRotation.getAxisDirection();
} {
Vector3i var10000;
(direction.ordinal()) {
-> var10000 = headRotation.getHorizontalAxisDirection();
-> var10000 = headRotation.getHorizontalAxisDirection().clone().scale(-);
-> var10000 = rotateLeft(headRotation.getHorizontalAxisDirection());
-> var10000 = rotateRight(headRotation.getHorizontalAxisDirection());
-> var10000 = (, , );
-> var10000 = (, -, );
-> ((String), (Throwable));
}
var10000;
}
}
Axis {
Axis var10000;
(direction.ordinal()) {
:
:
var10000 = getHorizontalAxis(headRotation);
;
:
:
var10000 = getPerpendicularHorizontalAxis(headRotation);
;
:
:
var10000 = Axis.Y;
;
:
((String), (Throwable));
}
var10000;
}
Axis {
headRotation.getHorizontalAxisDirection();
horizontalDir.getX() != ? Axis.X : Axis.Z;
}
Axis {
headRotation.getHorizontalAxisDirection();
horizontalDir.getX() != ? Axis.Z : Axis.X;
}
Vector3i {
(dir.z, , -dir.x);
}
Vector3i {
(-dir.z, , dir.x);
}
}
com/hypixel/hytale/server/core/command/system/arguments/types/RelativeDoublePosition.java
package com.hypixel.hytale.server.core.command.system.arguments.types;
import com.hypixel.hytale.component.ComponentAccessor;
import com.hypixel.hytale.component.Ref;
import com.hypixel.hytale.math.vector.Vector3d;
import com.hypixel.hytale.server.core.Message;
import com.hypixel.hytale.server.core.command.system.CommandContext;
import com.hypixel.hytale.server.core.command.system.exceptions.GeneralCommandException;
import com.hypixel.hytale.server.core.modules.entity.component.TransformComponent;
import com.hypixel.hytale.server.core.universe.world.World;
import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
import javax.annotation.Nonnull;
public class RelativeDoublePosition {
@Nonnull
private static final Message MESSAGE_COMMANDS_ERRORS_PLAYER_NOT_IN_WORLD = Message.translation("server.commands.errors.playerNotInWorld");
@Nonnull
private static final Message MESSAGE_COMMANDS_ERRORS_RELATIVE_POSITION_ARG = Message.translation("server.commands.errors.relativePositionArg");
private final Coord x;
private final Coord y;
private final Coord z;
public RelativeDoublePosition( Coord x, Coord y, Coord z) {
.x = x;
.y = y;
.z = z;
}
Vector3d {
.x.resolveXZ(base.x);
.z.resolveXZ(base.z);
.y.resolveYAtWorldCoords(base.y, world, relX, relZ);
(relX, relY, relZ);
}
Vector3d {
.isRelative();
(relative && !context.isPlayer()) {
(MESSAGE_COMMANDS_ERRORS_RELATIVE_POSITION_ARG);
} {
Vector3d basePosition;
(relative) {
Ref<EntityStore> senderPlayerRef = context.senderAsPlayerRef();
(senderPlayerRef == || !senderPlayerRef.isValid()) {
(MESSAGE_COMMANDS_ERRORS_PLAYER_NOT_IN_WORLD);
}
(TransformComponent)componentAccessor.getComponent(senderPlayerRef, TransformComponent.getComponentType());
transformComponent != ;
basePosition = transformComponent.getPosition();
} {
basePosition = Vector3d.ZERO;
}
.getRelativePosition(basePosition, world);
}
}
{
.x.isRelative() || .y.isRelative() || .z.isRelative();
}
}
com/hypixel/hytale/server/core/command/system/arguments/types/RelativeFloat.java
package com.hypixel.hytale.server.core.command.system.arguments.types;
import com.hypixel.hytale.codec.Codec;
import com.hypixel.hytale.codec.KeyedCodec;
import com.hypixel.hytale.codec.builder.BuilderCodec;
import com.hypixel.hytale.codec.validation.Validators;
import com.hypixel.hytale.server.core.Message;
import com.hypixel.hytale.server.core.command.system.ParseResult;
import java.util.regex.Pattern;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
public class RelativeFloat {
@Nonnull
public static final BuilderCodec<RelativeFloat> CODEC;
private float value;
private boolean isRelative;
public RelativeFloat(float value, boolean isRelative) {
this.value = value;
this.isRelative = isRelative;
}
protected RelativeFloat() {
}
@Nullable
public static RelativeFloat parse(@Nonnull String input, @Nonnull ParseResult parseResult) {
boolean relative = input.contains("~");
input = input.replaceAll(Pattern.quote(), );
{
value;
(input.isBlank()) {
value = ;
} {
value = Float.parseFloat(input);
}
(value, relative);
} (Exception var4) {
parseResult.fail(Message.raw( + input));
;
}
}
{
.value;
}
{
.isRelative;
}
{
.isRelative ? baseValue + .value : .value;
}
String {
.isRelative ? : ;
var10000 + .value;
}
{
CODEC = ((BuilderCodec.Builder)((BuilderCodec.Builder)BuilderCodec.builder(RelativeFloat.class, RelativeFloat::).append( (, Codec.FLOAT), (o, i) -> o.value = i, RelativeFloat::getRawValue).addValidator(Validators.nonNull()).add()).append( (, Codec.BOOLEAN), (o, i) -> o.isRelative = i, RelativeFloat::isRelative).addValidator(Validators.nonNull()).add()).build();
}
}
com/hypixel/hytale/server/core/command/system/arguments/types/RelativeIntPosition.java
package com.hypixel.hytale.server.core.command.system.arguments.types;
import com.hypixel.hytale.component.ComponentAccessor;
import com.hypixel.hytale.component.Ref;
import com.hypixel.hytale.math.util.MathUtil;
import com.hypixel.hytale.math.vector.Vector3d;
import com.hypixel.hytale.math.vector.Vector3i;
import com.hypixel.hytale.server.core.Message;
import com.hypixel.hytale.server.core.command.system.CommandContext;
import com.hypixel.hytale.server.core.command.system.exceptions.GeneralCommandException;
import com.hypixel.hytale.server.core.modules.entity.component.TransformComponent;
import com.hypixel.hytale.server.core.universe.world.World;
import com.hypixel.hytale.server.core.universe.world.storage.ChunkStore;
import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
import javax.annotation.Nonnull;
public class RelativeIntPosition {
@Nonnull
private static final Message MESSAGE_COMMANDS_ERRORS_PLAYER_NOT_IN_WORLD = Message.translation("server.commands.errors.playerNotInWorld");
@Nonnull
private static final Message MESSAGE_COMMANDS_ERRORS_RELATIVE_POSITION_ARG = Message.translation("server.commands.errors.relativePositionArg");
@Nonnull
private final IntCoord x;
@Nonnull
IntCoord y;
IntCoord z;
{
.x = x;
.y = y;
.z = z;
}
Vector3i {
(TransformComponent)componentAccessor.getComponent(ref, TransformComponent.getComponentType());
transformComponent != ;
transformComponent.getPosition();
((EntityStore)componentAccessor.getExternalData()).getWorld();
.getBlockPosition(base, world.getChunkStore());
}
Vector3i {
.isRelative();
Ref<EntityStore> playerRef = context.isPlayer() ? context.senderAsPlayerRef() : ;
(playerRef != ) {
(!playerRef.isValid()) {
(MESSAGE_COMMANDS_ERRORS_PLAYER_NOT_IN_WORLD);
} {
.getBlockPosition(playerRef, componentAccessor);
}
} (relative) {
(MESSAGE_COMMANDS_ERRORS_RELATIVE_POSITION_ARG);
} {
Vector3d.ZERO;
((EntityStore)componentAccessor.getExternalData()).getWorld();
.getBlockPosition(base, world.getChunkStore());
}
}
Vector3i {
.x.resolveXZ(MathUtil.floor(base.x));
.z.resolveXZ(MathUtil.floor(base.z));
.y.resolveYAtWorldCoords(MathUtil.floor(base.y), chunkStore, relX, relZ);
(relX, relY, relZ);
}
{
.x.isRelative() || .y.isRelative() || .z.isRelative();
}
}
com/hypixel/hytale/server/core/command/system/arguments/types/RelativeInteger.java
package com.hypixel.hytale.server.core.command.system.arguments.types;
import com.hypixel.hytale.codec.Codec;
import com.hypixel.hytale.codec.KeyedCodec;
import com.hypixel.hytale.codec.builder.BuilderCodec;
import com.hypixel.hytale.codec.validation.Validators;
import com.hypixel.hytale.server.core.Message;
import com.hypixel.hytale.server.core.command.system.ParseResult;
import java.util.regex.Pattern;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
public class RelativeInteger {
@Nonnull
public static final BuilderCodec<RelativeInteger> CODEC;
private int value;
private boolean isRelative;
public RelativeInteger(int value, boolean isRelative) {
this.value = value;
this.isRelative = isRelative;
}
protected RelativeInteger() {
}
@Nullable
public static RelativeInteger parse(@Nonnull String input, @Nonnull ParseResult parseResult) {
boolean relative = input.contains("~");
input = input.replaceAll(Pattern.quote(), );
{
value;
(input.isBlank()) {
value = ;
} {
value = Integer.parseInt(input);
}
(value, relative);
} (Exception var4) {
parseResult.fail(Message.raw( + input));
;
}
}
{
.value;
}
{
.isRelative;
}
{
.isRelative ? baseValue + .value : .value;
}
String {
.isRelative ? : ;
var10000 + .value;
}
{
CODEC = ((BuilderCodec.Builder)((BuilderCodec.Builder)BuilderCodec.builder(RelativeInteger.class, RelativeInteger::).append( (, Codec.INTEGER), (o, i) -> o.value = i, RelativeInteger::getRawValue).addValidator(Validators.nonNull()).add()).append( (, Codec.BOOLEAN), (o, i) -> o.isRelative = i, RelativeInteger::isRelative).addValidator(Validators.nonNull()).add()).build();
}
}
com/hypixel/hytale/server/core/command/system/arguments/types/RelativeIntegerRange.java
package com.hypixel.hytale.server.core.command.system.arguments.types;
import com.hypixel.hytale.codec.KeyedCodec;
import com.hypixel.hytale.codec.builder.BuilderCodec;
import com.hypixel.hytale.codec.validation.Validators;
import java.util.concurrent.ThreadLocalRandom;
import javax.annotation.Nonnull;
public class RelativeIntegerRange {
@Nonnull
public static final BuilderCodec<RelativeIntegerRange> CODEC;
private RelativeInteger min;
private RelativeInteger max;
public RelativeIntegerRange(@Nonnull RelativeInteger min, @Nonnull RelativeInteger max) {
this.min = min;
this.max = max;
}
protected RelativeIntegerRange() {
}
public RelativeIntegerRange(int min, int max) {
this.min = new RelativeInteger(min, false);
this.max = new RelativeInteger(max, false);
}
public int getNumberInRange(int base) {
return .min.getRawValue() == .max.getRawValue() ? .min.resolve(base) : ThreadLocalRandom.current().nextInt(.min.resolve(base), .max.resolve(base) + );
}
String {
String.valueOf(.min);
+ var10000 + + String.valueOf(.max) + ;
}
{
CODEC = ((BuilderCodec.Builder)((BuilderCodec.Builder)BuilderCodec.builder(RelativeIntegerRange.class, RelativeIntegerRange::).append( (, RelativeInteger.CODEC), (o, i) -> o.min = i, (o) -> o.min).addValidator(Validators.nonNull()).add()).append( (, RelativeInteger.CODEC), (o, i) -> o.max = i, (o) -> o.max).addValidator(Validators.nonNull()).add()).build();
}
}
com/hypixel/hytale/server/core/command/system/arguments/types/RelativeVector3i.java
package com.hypixel.hytale.server.core.command.system.arguments.types;
import com.hypixel.hytale.codec.KeyedCodec;
import com.hypixel.hytale.codec.builder.BuilderCodec;
import com.hypixel.hytale.codec.validation.Validators;
import com.hypixel.hytale.math.vector.Vector3i;
import javax.annotation.Nonnull;
public class RelativeVector3i {
@Nonnull
public static final RelativeVector3i ZERO = new RelativeVector3i(new RelativeInteger(0, false), new RelativeInteger(0, false), new RelativeInteger(0, false));
@Nonnull
public static final BuilderCodec<RelativeVector3i> CODEC;
private RelativeInteger x;
private RelativeInteger y;
private RelativeInteger z;
public RelativeVector3i(RelativeInteger x, RelativeInteger y, RelativeInteger z) {
this.x = x;
this.y = y;
this.z = z;
}
protected RelativeVector3i {
}
Vector3i {
(.x.resolve(xBase), .y.resolve(yBase), .z.resolve(zBase));
}
Vector3i {
.resolve(base.x, base.y, base.z);
}
String {
String.valueOf(.x);
+ var10000 + + String.valueOf(.y) + + String.valueOf(.z) + ;
}
{
.x.isRelative();
}
{
.y.isRelative();
}
{
.z.isRelative();
}
{
CODEC = ((BuilderCodec.Builder)((BuilderCodec.Builder)((BuilderCodec.Builder)BuilderCodec.builder(RelativeVector3i.class, RelativeVector3i::).append( (, RelativeInteger.CODEC), (vec, val) -> vec.x = val, (vec) -> vec.x).addValidator(Validators.nonNull()).add()).append( (, RelativeInteger.CODEC), (vec, val) -> vec.y = val, (vec) -> vec.y).addValidator(Validators.nonNull()).add()).append( (, RelativeInteger.CODEC), (vec, val) -> vec.z = val, (vec) -> vec.z).addValidator(Validators.nonNull()).add()).build();
}
}
com/hypixel/hytale/server/core/command/system/arguments/types/SingleArgumentType.java
package com.hypixel.hytale.server.core.command.system.arguments.types;
import com.hypixel.hytale.server.core.Message;
import com.hypixel.hytale.server.core.command.system.ParseResult;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
public abstract class SingleArgumentType<DataType> extends ArgumentType<DataType> {
protected SingleArgumentType(Message name, @Nonnull String argumentUsage, @Nullable String... examples) {
super((Message)name, (Message)Message.translation(argumentUsage), 1, examples);
}
protected SingleArgumentType(String name, @Nonnull Message argumentUsage, @Nullable String... examples) {
super((String)name, (Message)argumentUsage, 1, examples);
}
public SingleArgumentType(String name, @Nonnull String argumentUsage, @Nullable String... examples) {
super((String)name, (String)argumentUsage, 1, examples);
}
@Nullable
public DataType parse(@Nonnull String[] input, @Nonnull ParseResult parseResult) {
return (DataType)this.parse(input[0], parseResult);
}
DataType ;
WrappedArgumentType<DataType> {
<DataType>(.getName(), , usage, examples) {
DataType {
.wrappedArgumentType.parse( []{input}, parseResult);
}
};
}
WrappedArgumentType<DataType> {
<DataType>(.getName(), , usage, .examples) {
DataType {
.wrappedArgumentType.parse( []{input}, parseResult);
}
};
}
}
com/hypixel/hytale/server/core/command/system/arguments/types/WrappedArgumentType.java
package com.hypixel.hytale.server.core.command.system.arguments.types;
import com.hypixel.hytale.server.core.Message;
import java.util.Arrays;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
public abstract class WrappedArgumentType<DataType> extends SingleArgumentType<DataType> {
protected final ArgumentType<DataType> wrappedArgumentType;
public WrappedArgumentType(Message name, ArgumentType<DataType> wrappedArgumentType, @Nonnull String argumentUsage, @Nullable String... examples) {
super(name, argumentUsage, examples);
this.wrappedArgumentType = wrappedArgumentType;
}
@Nonnull
public String[] getExamples() {
return Arrays.equals(this.examples, EMPTY_EXAMPLES) ? this.wrappedArgumentType.getExamples() : this.examples;
}
@Nullable
public DataType get(@Nonnull MultiArgumentContext context) {
return (DataType)context.get(this);
}
}
com/hypixel/hytale/server/core/command/system/basecommands/AbstractAsyncCommand.java
package com.hypixel.hytale.server.core.command.system.basecommands;
import com.hypixel.hytale.logger.HytaleLogger;
import com.hypixel.hytale.server.core.Message;
import com.hypixel.hytale.server.core.command.system.AbstractCommand;
import com.hypixel.hytale.server.core.command.system.CommandContext;
import java.awt.Color;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.Executor;
import java.util.logging.Level;
import javax.annotation.Nonnull;
public abstract class AbstractAsyncCommand extends AbstractCommand {
@Nonnull
private static final Message MESSAGE_MODULES_COMMAND_RUNTIME_ERROR;
public AbstractAsyncCommand(@Nonnull String name, @Nonnull String description) {
super(name, description);
}
public AbstractAsyncCommand(@Nonnull String name, @Nonnull String description, boolean requiresConfirmation) {
super(name, description, requiresConfirmation);
}
public AbstractAsyncCommand(@Nonnull String description) {
super(description);
}
protected final CompletableFuture<Void> execute {
.executeAsync(context);
}
CompletableFuture<Void> ;
CompletableFuture<Void> {
CompletableFuture.runAsync(() -> {
{
runnable.run();
} (Exception e) {
context.sendMessage(MESSAGE_MODULES_COMMAND_RUNTIME_ERROR);
((HytaleLogger.Api)AbstractCommand.LOGGER.at(Level.SEVERE).withCause(e)).log();
}
}, executor);
}
{
MESSAGE_MODULES_COMMAND_RUNTIME_ERROR = Message.translation().color(Color.RED);
}
}
com/hypixel/hytale/server/core/command/system/basecommands/AbstractAsyncPlayerCommand.java
package com.hypixel.hytale.server.core.command.system.basecommands;
import com.hypixel.hytale.component.Ref;
import com.hypixel.hytale.component.Store;
import com.hypixel.hytale.server.core.Message;
import com.hypixel.hytale.server.core.command.system.CommandContext;
import com.hypixel.hytale.server.core.universe.PlayerRef;
import com.hypixel.hytale.server.core.universe.world.World;
import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
import java.util.concurrent.CompletableFuture;
import javax.annotation.Nonnull;
public abstract class AbstractAsyncPlayerCommand extends AbstractAsyncCommand {
@Nonnull
private static final Message MESSAGE_COMMANDS_ERRORS_PLAYER_NOT_IN_WORLD = Message.translation("server.commands.errors.playerNotInWorld");
@Nonnull
private static final Message MESSAGE_COMMANDS_ERRORS_PLAYER_OR_ARG = Message.translation("server.commands.errors.playerOrArg").param("option", "player");
public AbstractAsyncPlayerCommand(@Nonnull String name, @Nonnull String description) {
super(name, description);
}
{
(name, description, requiresConfirmation);
}
{
(description);
}
CompletableFuture<Void> {
Ref<EntityStore> ref = context.senderAsPlayerRef();
(ref == ) {
context.sendMessage(MESSAGE_COMMANDS_ERRORS_PLAYER_OR_ARG);
CompletableFuture.completedFuture((Object));
} (!ref.isValid()) {
context.sendMessage(MESSAGE_COMMANDS_ERRORS_PLAYER_NOT_IN_WORLD);
CompletableFuture.completedFuture((Object));
} {
Store<EntityStore> store = ref.getStore();
((EntityStore)store.getExternalData()).getWorld();
CompletableFuture.supplyAsync(() -> {
(PlayerRef)store.getComponent(ref, PlayerRef.getComponentType());
(playerRefComponent == ) {
context.sendMessage(MESSAGE_COMMANDS_ERRORS_PLAYER_NOT_IN_WORLD);
;
} {
.executeAsync(context, store, ref, playerRefComponent, world);
}
}, world).thenCompose((future) -> future != ? future : CompletableFuture.completedFuture((Object)));
}
}
CompletableFuture<Void> ;
}
com/hypixel/hytale/server/core/command/system/basecommands/AbstractAsyncWorldCommand.java
package com.hypixel.hytale.server.core.command.system.basecommands;
import com.hypixel.hytale.server.core.Message;
import com.hypixel.hytale.server.core.command.system.CommandContext;
import com.hypixel.hytale.server.core.command.system.arguments.system.OptionalArg;
import com.hypixel.hytale.server.core.command.system.arguments.types.ArgTypes;
import com.hypixel.hytale.server.core.universe.world.World;
import java.util.concurrent.CompletableFuture;
import javax.annotation.Nonnull;
public abstract class AbstractAsyncWorldCommand extends AbstractAsyncCommand {
@Nonnull
private static final Message MESSAGE_COMMANDS_ERRORS_NO_WORLD = Message.translation("server.commands.errors.noWorld");
@Nonnull
private final OptionalArg<World> worldArg;
public AbstractAsyncWorldCommand(@Nonnull String name, @Nonnull String description) {
super(name, description);
this.worldArg = this.withOptionalArg("world", "server.commands.worldthread.arg.desc", ArgTypes.WORLD);
}
public AbstractAsyncWorldCommand(@Nonnull String name, @Nonnull String description, requiresConfirmation) {
(name, description, requiresConfirmation);
.worldArg = .withOptionalArg(, , ArgTypes.WORLD);
}
{
(description);
.worldArg = .withOptionalArg(, , ArgTypes.WORLD);
}
CompletableFuture<Void> {
(World).worldArg.getProcessed(context);
(world == ) {
context.sendMessage(MESSAGE_COMMANDS_ERRORS_NO_WORLD);
CompletableFuture.completedFuture((Object));
} {
.executeAsync(context, world);
}
}
CompletableFuture<Void> ;
}
com/hypixel/hytale/server/core/command/system/basecommands/AbstractCommandCollection.java
package com.hypixel.hytale.server.core.command.system.basecommands;
import com.hypixel.hytale.server.core.Message;
import com.hypixel.hytale.server.core.command.system.CommandContext;
import com.hypixel.hytale.server.core.command.system.CommandSender;
import java.util.concurrent.CompletableFuture;
import javax.annotation.Nonnull;
public abstract class AbstractCommandCollection extends AbstractAsyncCommand {
public AbstractCommandCollection(@Nonnull String name, @Nonnull String description) {
super(name, description);
}
@Nonnull
public Message getFullUsage(@Nonnull CommandSender sender) {
return super.getUsageString(sender);
}
@Nonnull
protected final CompletableFuture<Void> executeAsync(@Nonnull CommandContext context) {
Message message = Message.translation("server.commands.help.usage").insert(":").insert(" (").insert(Message.translation("server.commands.help.useHelpOnAnySubCommand")).insert(")").insert("\n").insert(this.getUsageString(context.sender()));
context.sender().sendMessage(message);
CompletableFuture.completedFuture((Object));
}
Message {
.getUsageShort(sender, );
}
}
com/hypixel/hytale/server/core/command/system/basecommands/AbstractPlayerCommand.java
package com.hypixel.hytale.server.core.command.system.basecommands;
import com.hypixel.hytale.component.Ref;
import com.hypixel.hytale.component.Store;
import com.hypixel.hytale.server.core.Message;
import com.hypixel.hytale.server.core.command.system.CommandContext;
import com.hypixel.hytale.server.core.universe.PlayerRef;
import com.hypixel.hytale.server.core.universe.world.World;
import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
import java.util.concurrent.CompletableFuture;
import javax.annotation.Nonnull;
public abstract class AbstractPlayerCommand extends AbstractAsyncCommand {
@Nonnull
private static final Message MESSAGE_COMMANDS_ERRORS_PLAYER_NOT_IN_WORLD = Message.translation("server.commands.errors.playerNotInWorld");
@Nonnull
private static final Message MESSAGE_COMMANDS_ERRORS_PLAYER_OR_ARG = Message.translation("server.commands.errors.playerOrArg").param("option", "player");
public AbstractPlayerCommand(@Nonnull String name, @Nonnull String description) {
super(name, description);
}
public {
(name, description, requiresConfirmation);
}
{
(description);
}
CompletableFuture<Void> {
Ref<EntityStore> ref = context.senderAsPlayerRef();
(ref == ) {
context.sendMessage(MESSAGE_COMMANDS_ERRORS_PLAYER_OR_ARG);
CompletableFuture.completedFuture((Object));
} (!ref.isValid()) {
context.sendMessage(MESSAGE_COMMANDS_ERRORS_PLAYER_NOT_IN_WORLD);
CompletableFuture.completedFuture((Object));
} {
Store<EntityStore> store = ref.getStore();
((EntityStore)store.getExternalData()).getWorld();
.runAsync(context, () -> {
(PlayerRef)store.getComponent(ref, PlayerRef.getComponentType());
(playerRefComponent == ) {
context.sendMessage(MESSAGE_COMMANDS_ERRORS_PLAYER_NOT_IN_WORLD);
} {
.execute(context, store, ref, playerRefComponent, world);
}
}, world);
}
}
;
}
com/hypixel/hytale/server/core/command/system/basecommands/AbstractTargetEntityCommand.java
package com.hypixel.hytale.server.core.command.system.basecommands;
import com.hypixel.hytale.codec.validation.Validators;
import com.hypixel.hytale.component.Ref;
import com.hypixel.hytale.component.Store;
import com.hypixel.hytale.component.spatial.SpatialResource;
import com.hypixel.hytale.math.vector.Vector3d;
import com.hypixel.hytale.server.core.Message;
import com.hypixel.hytale.server.core.command.system.CommandContext;
import com.hypixel.hytale.server.core.command.system.arguments.system.OptionalArg;
import com.hypixel.hytale.server.core.command.system.arguments.types.ArgTypes;
import com.hypixel.hytale.server.core.command.system.arguments.types.EntityWrappedArg;
import com.hypixel.hytale.server.core.modules.entity.EntityModule;
import com.hypixel.hytale.server.core.modules.entity.component.TransformComponent;
import com.hypixel.hytale.server.core.universe.PlayerRef;
import com.hypixel.hytale.server.core.universe.world.World;
import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
import com.hypixel.hytale.server.core.util.TargetUtil;
import it.unimi.dsi.fastutil.objects.ObjectArrayList;
import it.unimi.dsi.fastutil.objects.ObjectList;
import it.unimi.dsi.fastutil.objects.ObjectLists;
import java.util.concurrent.CompletableFuture;
import javax.annotation.Nonnull;
public abstract class AbstractTargetEntityCommand extends AbstractAsyncCommand {
private static final Message MESSAGE_COMMANDS_ERRORS_PLAYER_NOT_IN_WORLD Message.translation();
Message.translation();
OptionalArg<World> worldArg;
OptionalArg<Double> radiusArg;
OptionalArg<PlayerRef> playerArg;
EntityWrappedArg entityArg;
{
(name, description);
.worldArg = .withOptionalArg(, , ArgTypes.WORLD);
.radiusArg = (OptionalArg).withOptionalArg(, , ArgTypes.DOUBLE).addValidator(Validators.greaterThan());
.playerArg = .withOptionalArg(, , ArgTypes.PLAYER_REF);
.entityArg = (EntityWrappedArg).withOptionalArg(, , ArgTypes.ENTITY_ID);
}
{
(name, description, requiresConfirmation);
.worldArg = .withOptionalArg(, , ArgTypes.WORLD);
.radiusArg = (OptionalArg).withOptionalArg(, , ArgTypes.DOUBLE).addValidator(Validators.greaterThan());
.playerArg = .withOptionalArg(, , ArgTypes.PLAYER_REF);
.entityArg = (EntityWrappedArg).withOptionalArg(, , ArgTypes.ENTITY_ID);
}
{
(description);
.worldArg = .withOptionalArg(, , ArgTypes.WORLD);
.radiusArg = (OptionalArg).withOptionalArg(, , ArgTypes.DOUBLE).addValidator(Validators.greaterThan());
.playerArg = .withOptionalArg(, , ArgTypes.PLAYER_REF);
.entityArg = (EntityWrappedArg).withOptionalArg(, , ArgTypes.ENTITY_ID);
}
CompletableFuture<Void> {
World world;
(.worldArg.provided(context)) {
world = (World).worldArg.get(context);
} {
(!context.isPlayer()) {
context.sendMessage(Message.translation().param(, ));
CompletableFuture.completedFuture((Object));
}
Ref<EntityStore> ref = context.senderAsPlayerRef();
(ref == || !ref.isValid()) {
context.sendMessage(MESSAGE_COMMANDS_ERRORS_PLAYER_NOT_IN_WORLD);
CompletableFuture.completedFuture((Object));
}
world = ((EntityStore)ref.getStore().getExternalData()).getWorld();
}
Store<EntityStore> store = world.getEntityStore().getStore();
.runAsync(context, () -> {
ObjectList<Ref<EntityStore>> entitiesToOperateOn;
(.radiusArg.provided(context)) {
(!context.isPlayer()) {
context.sendMessage(Message.translation().param(, ));
;
}
Ref<EntityStore> playerRef = context.senderAsPlayerRef();
(playerRef == || !playerRef.isValid()) {
context.sendMessage(MESSAGE_COMMANDS_ERRORS_PLAYER_NOT_IN_WORLD);
;
}
(TransformComponent)store.getComponent(playerRef, TransformComponent.getComponentType());
(transformComponent == ) {
context.sendMessage(MESSAGE_COMMANDS_ERRORS_PLAYER_NOT_IN_WORLD);
;
}
(Double).radiusArg.get(context);
transformComponent.getPosition();
entitiesToOperateOn = <Ref<EntityStore>>();
ObjectList<Ref<EntityStore>> results = SpatialResource.getThreadLocalReferenceList();
SpatialResource<Ref<EntityStore>, EntityStore> entitySpatialResource = (SpatialResource)store.getResource(EntityModule.get().getEntitySpatialResourceType());
entitySpatialResource.getSpatialStructure().collect(position, radius, results);
entitiesToOperateOn.addAll(results);
SpatialResource<Ref<EntityStore>, EntityStore> playerSpatialResource = (SpatialResource)store.getResource(EntityModule.get().getPlayerSpatialResourceType());
playerSpatialResource.getSpatialStructure().collect(position, radius, results);
entitiesToOperateOn.addAll(results);
} (.playerArg.provided(context)) {
(PlayerRef).playerArg.get(context);
Ref<EntityStore> targetRef = targetPlayerRef.getReference();
(targetRef == || !targetRef.isValid()) {
context.sendMessage(MESSAGE_COMMANDS_ERRORS_PLAYER_NOT_IN_WORLD);
;
}
entitiesToOperateOn = ObjectLists.<Ref<EntityStore>>singleton(targetRef);
} (.entityArg.provided(context)) {
Ref<EntityStore> entityRef = .entityArg.get(store, context);
(entityRef == || !entityRef.isValid()) {
context.sendMessage(MESSAGE_GENERAL_NO_ENTITY_IN_VIEW);
;
}
entitiesToOperateOn = ObjectLists.<Ref<EntityStore>>singleton(entityRef);
} {
(!context.isPlayer()) {
context.sendMessage(Message.translation().param(, ));
;
}
Ref<EntityStore> playerRef = context.senderAsPlayerRef();
(playerRef == || !playerRef.isValid()) {
context.sendMessage(MESSAGE_COMMANDS_ERRORS_PLAYER_NOT_IN_WORLD);
;
}
Ref<EntityStore> entityRef = TargetUtil.getTargetEntity(playerRef, store);
(entityRef == ) {
context.sendMessage(MESSAGE_GENERAL_NO_ENTITY_IN_VIEW);
;
}
entitiesToOperateOn = ObjectLists.<Ref<EntityStore>>singleton(entityRef);
}
.execute(context, entitiesToOperateOn, world, store);
}, world);
}
;
}
com/hypixel/hytale/server/core/command/system/basecommands/AbstractTargetPlayerCommand.java
package com.hypixel.hytale.server.core.command.system.basecommands;
import com.hypixel.hytale.component.Ref;
import com.hypixel.hytale.component.Store;
import com.hypixel.hytale.server.core.Message;
import com.hypixel.hytale.server.core.command.system.CommandContext;
import com.hypixel.hytale.server.core.command.system.CommandUtil;
import com.hypixel.hytale.server.core.command.system.arguments.system.OptionalArg;
import com.hypixel.hytale.server.core.command.system.arguments.types.ArgTypes;
import com.hypixel.hytale.server.core.permissions.HytalePermissions;
import com.hypixel.hytale.server.core.universe.PlayerRef;
import com.hypixel.hytale.server.core.universe.world.World;
import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
import java.util.concurrent.CompletableFuture;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
public abstract class AbstractTargetPlayerCommand extends AbstractAsyncCommand {
@Nonnull
private static final Message MESSAGE_COMMANDS_ERRORS_PLAYER_NOT_IN_WORLD = Message.translation("server.commands.errors.playerNotInWorld");
@Nonnull
private final OptionalArg<PlayerRef> playerArg;
public AbstractTargetPlayerCommand(@Nonnull String name, @Nonnull String description) {
(name, description);
.playerArg = .withOptionalArg(, , ArgTypes.PLAYER_REF);
}
{
(name, description, requiresConfirmation);
.playerArg = .withOptionalArg(, , ArgTypes.PLAYER_REF);
}
{
(description);
.playerArg = .withOptionalArg(, , ArgTypes.PLAYER_REF);
}
CompletableFuture<Void> {
Ref<EntityStore> sourceRef;
(context.isPlayer()) {
sourceRef = context.senderAsPlayerRef();
} {
sourceRef = ;
}
Ref<EntityStore> targetRef;
(.playerArg.provided(context)) {
targetRef = ((PlayerRef).playerArg.get(context)).getReference();
CommandUtil.requirePermission(context.sender(), HytalePermissions.fromCommand(.getPermission() + ));
} {
(!context.isPlayer()) {
context.sendMessage(Message.translation().param(, ));
CompletableFuture.completedFuture((Object));
}
targetRef = context.senderAsPlayerRef();
}
(targetRef != && targetRef.isValid()) {
Store<EntityStore> targetStore = targetRef.getStore();
((EntityStore)targetStore.getExternalData()).getWorld();
.runAsync(context, () -> {
(PlayerRef)targetStore.getComponent(targetRef, PlayerRef.getComponentType());
playerRefComponent != ;
.execute(context, sourceRef, targetRef, playerRefComponent, targetWorld, targetStore);
}, targetWorld);
} {
context.sendMessage(MESSAGE_COMMANDS_ERRORS_PLAYER_NOT_IN_WORLD);
CompletableFuture.completedFuture((Object));
}
}
;
}
com/hypixel/hytale/server/core/command/system/basecommands/AbstractWorldCommand.java
package com.hypixel.hytale.server.core.command.system.basecommands;
import com.hypixel.hytale.component.Store;
import com.hypixel.hytale.server.core.Message;
import com.hypixel.hytale.server.core.command.system.CommandContext;
import com.hypixel.hytale.server.core.command.system.arguments.system.OptionalArg;
import com.hypixel.hytale.server.core.command.system.arguments.types.ArgTypes;
import com.hypixel.hytale.server.core.universe.world.World;
import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
import java.util.concurrent.CompletableFuture;
import javax.annotation.Nonnull;
public abstract class AbstractWorldCommand extends AbstractAsyncCommand {
@Nonnull
private static final Message MESSAGE_COMMANDS_ERRORS_NO_WORLD = Message.translation("server.commands.errors.noWorld");
@Nonnull
private final OptionalArg<World> worldArg;
public AbstractWorldCommand(@Nonnull String name, @Nonnull String description) {
super(name, description);
this.worldArg = this.withOptionalArg("world", "server.commands.worldthread.arg.desc", ArgTypes.WORLD);
}
public AbstractWorldCommand {
(name, description, requiresConfirmation);
.worldArg = .withOptionalArg(, , ArgTypes.WORLD);
}
{
(description);
.worldArg = .withOptionalArg(, , ArgTypes.WORLD);
}
CompletableFuture<Void> {
(World).worldArg.getProcessed(context);
(world == ) {
context.sendMessage(MESSAGE_COMMANDS_ERRORS_NO_WORLD);
CompletableFuture.completedFuture((Object));
} {
Store<EntityStore> store = world.getEntityStore().getStore();
.runAsync(context, () -> .execute(context, world, store), world);
}
}
;
}
com/hypixel/hytale/server/core/command/system/basecommands/CommandBase.java
package com.hypixel.hytale.server.core.command.system.basecommands;
import com.hypixel.hytale.server.core.command.system.AbstractCommand;
import com.hypixel.hytale.server.core.command.system.CommandContext;
import java.util.concurrent.CompletableFuture;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
public abstract class CommandBase extends AbstractCommand {
public CommandBase(@Nonnull String name, @Nonnull String description) {
super(name, description);
}
public CommandBase(@Nonnull String name, @Nonnull String description, boolean requiresConfirmation) {
super(name, description, requiresConfirmation);
}
public CommandBase(@Nonnull String description) {
super(description);
}
@Nullable
protected final CompletableFuture<Void> execute(@Nonnull CommandContext context) {
this.executeSync(context);
return null;
}
protected abstract void executeSync;
}
com/hypixel/hytale/server/core/command/system/exceptions/CommandException.java
package com.hypixel.hytale.server.core.command.system.exceptions;
import com.hypixel.hytale.server.core.command.system.CommandSender;
import javax.annotation.Nonnull;
public abstract class CommandException extends RuntimeException {
public CommandException() {
}
public abstract void sendTranslatedMessage(@Nonnull CommandSender var1);
}
com/hypixel/hytale/server/core/command/system/exceptions/GeneralCommandException.java
package com.hypixel.hytale.server.core.command.system.exceptions;
import com.hypixel.hytale.server.core.Message;
import com.hypixel.hytale.server.core.command.system.CommandSender;
import java.awt.Color;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
public class GeneralCommandException extends CommandException {
@Nonnull
private final Message message;
public GeneralCommandException(@Nonnull Message message) {
this.message = message.color(Color.RED);
}
public void sendTranslatedMessage(@Nonnull CommandSender sender) {
sender.sendMessage(this.message);
}
@Nullable
public String getMessageText() {
try {
return this.message.getAnsiMessage();
} catch (Exception var3) {
String rawText = this.message.getRawText();
return rawText != null ? rawText : this.message.getMessageId();
}
}
}
com/hypixel/hytale/server/core/command/system/exceptions/NoPermissionException.java
package com.hypixel.hytale.server.core.command.system.exceptions;
import com.hypixel.hytale.server.core.Message;
import com.hypixel.hytale.server.core.command.system.CommandSender;
import java.awt.Color;
import javax.annotation.Nonnull;
public class NoPermissionException extends CommandException {
@Nonnull
private final String permission;
public NoPermissionException(@Nonnull String permission) {
this.permission = permission;
}
public void sendTranslatedMessage(@Nonnull CommandSender sender) {
sender.sendMessage(Message.translation("server.commands.errors.permission").param("permission", this.permission).color(Color.RED));
}
}
com/hypixel/hytale/server/core/command/system/exceptions/SenderTypeException.java
package com.hypixel.hytale.server.core.command.system.exceptions;
import com.hypixel.hytale.server.core.Message;
import com.hypixel.hytale.server.core.command.system.CommandSender;
import java.awt.Color;
import javax.annotation.Nonnull;
public class SenderTypeException extends CommandException {
@Nonnull
private final Class<?> senderType;
public SenderTypeException(@Nonnull Class<?> senderType) {
this.senderType = senderType;
}
public void sendTranslatedMessage(@Nonnull CommandSender sender) {
sender.sendMessage(Message.translation("server.commands.errors.sender").param("sender", this.senderType.getSimpleName()).color(Color.RED));
}
}
com/hypixel/hytale/server/core/command/system/pages/CommandListPage.java
package com.hypixel.hytale.server.core.command.system.pages;
import com.hypixel.hytale.codec.Codec;
import com.hypixel.hytale.codec.KeyedCodec;
import com.hypixel.hytale.codec.builder.BuilderCodec;
import com.hypixel.hytale.component.ComponentAccessor;
import com.hypixel.hytale.component.Ref;
import com.hypixel.hytale.component.Store;
import com.hypixel.hytale.protocol.Packet;
import com.hypixel.hytale.protocol.packets.interface_.CustomPageLifetime;
import com.hypixel.hytale.protocol.packets.interface_.CustomUIEventBindingType;
import com.hypixel.hytale.protocol.packets.interface_.OpenChatWithCommand;
import com.hypixel.hytale.protocol.packets.interface_.Page;
import com.hypixel.hytale.server.core.Message;
import com.hypixel.hytale.server.core.command.system.AbstractCommand;
import com.hypixel.hytale.server.core.command.system.CommandManager;
import com.hypixel.hytale.server.core.command.system.MatchResult;
import com.hypixel.hytale.server.core.command.system.arguments.system.DefaultArg;
import com.hypixel.hytale.server.core.command.system.arguments.system.FlagArg;
import com.hypixel.hytale.server.core.command.system.arguments.system.OptionalArg;
import com.hypixel.hytale.server.core.command.system.arguments.system.RequiredArg;
import com.hypixel.hytale.server.core.command.system.arguments.types.ArgumentType;
import com.hypixel.hytale.server.core.entity.entities.Player;
import com.hypixel.hytale.server.core.entity.entities.player.pages.InteractiveCustomUIPage;
import com.hypixel.hytale.server.core.ui.Value;
import com.hypixel.hytale.server.core.ui.builder.EventData;
import com.hypixel.hytale.server.core.ui.builder.UICommandBuilder;
import com.hypixel.hytale.server.core.ui.builder.UIEventBuilder;
com.hypixel.hytale.server.core.universe.PlayerRef;
com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
it.unimi.dsi.fastutil.ints.Int2ObjectMap;
it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap;
it.unimi.dsi.fastutil.objects.ObjectArrayList;
java.lang.reflect.Field;
java.util.Collections;
java.util.Comparator;
java.util.HashSet;
java.util.List;
java.util.Map;
java.util.Set;
javax.annotation.Nonnull;
javax.annotation.Nullable;
<CommandListPageEventData> {
Value<String> BUTTON_LABEL_STYLE = Value.<String>ref(, );
Value<String> BUTTON_LABEL_STYLE_SELECTED = Value.<String>ref(, );
List<String> visibleCommands;
String searchQuery;
String selectedCommand;
String selectedSubcommand;
Integer selectedVariantIndex;
List<String> subcommandBreadcrumb;
String initialCommand;
{
(playerRef, (String));
}
{
(playerRef, CustomPageLifetime.CanDismiss, CommandListPage.CommandListPageEventData.CODEC);
.visibleCommands = <String>();
.searchQuery = ;
.subcommandBreadcrumb = <String>();
.initialCommand = initialCommand;
}
{
commandBuilder.append();
eventBuilder.addEventBinding(CustomUIEventBindingType.ValueChanged, , EventData.of(, ), );
eventBuilder.addEventBinding(CustomUIEventBindingType.Activating, , EventData.of(, ));
eventBuilder.addEventBinding(CustomUIEventBindingType.Activating, , EventData.of(, ));
.buildCommandList(ref, commandBuilder, eventBuilder, store);
(String).visibleCommands.getFirst();
(.initialCommand != && .visibleCommands.contains(.initialCommand)) {
commandToSelect = .initialCommand;
}
.selectCommand(ref, commandToSelect, commandBuilder, eventBuilder, store);
}
{
(data.searchQuery != ) {
.searchQuery = data.searchQuery.trim().toLowerCase();
();
();
.buildCommandList(ref, commandBuilder, eventBuilder, store);
.sendUpdate(commandBuilder, eventBuilder, );
} (data.command != ) {
();
();
.selectCommand(ref, data.command, commandBuilder, eventBuilder, store);
.sendUpdate(commandBuilder, eventBuilder, );
} (data.navigateUp != ) {
();
();
.navigateUp(ref, commandBuilder, eventBuilder, store);
.sendUpdate(commandBuilder, eventBuilder, );
} (data.subcommand != ) {
();
();
.selectSubcommand(ref, data.subcommand, commandBuilder, eventBuilder, store);
.sendUpdate(commandBuilder, eventBuilder, );
} (data.variantIndex != ) {
();
();
{
Integer.parseInt(data.variantIndex);
.selectVariant(ref, variantIdx, commandBuilder, eventBuilder, store);
.sendUpdate(commandBuilder, eventBuilder, );
} (NumberFormatException var7) {
}
} (data.sendToChat != ) {
.handleSendToChat(ref, store);
}
}
{
(Player)store.getComponent(ref, Player.getComponentType());
(playerComponent != ) {
.buildCurrentCommandString();
playerComponent.getPageManager().setPage(ref, store, Page.None);
.playerRef.getPacketHandler().write((Packet)( (command)));
}
}
String {
();
sb.append(.selectedCommand);
(String part : .subcommandBreadcrumb) {
sb.append().append(part);
}
(AbstractCommand)CommandManager.get().getCommandRegistration().get(.selectedCommand);
(currentContext != ) {
(String part : .subcommandBreadcrumb) {
Map<String, AbstractCommand> subcommands = currentContext.getSubCommands();
currentContext = (AbstractCommand)subcommands.get(part);
(currentContext == ) {
;
}
}
(currentContext != ) {
(RequiredArg<?> arg : currentContext.getRequiredArguments()) {
sb.append().append(arg.getName()).append();
}
}
}
sb.toString();
}
{
commandBuilder.clear();
Map<String, AbstractCommand> commands = <String, AbstractCommand>(CommandManager.get().getCommandRegistration());
(Player)componentAccessor.getComponent(ref, Player.getComponentType());
playerComponent != ;
commands.values().removeIf((commandx) -> !commandx.hasPermission(playerComponent));
(.searchQuery.isEmpty()) {
.visibleCommands.clear();
.visibleCommands.addAll(commands.keySet());
Collections.sort(.visibleCommands);
} {
ObjectArrayList<SearchResult> results = <SearchResult>();
(Map.Entry<String, AbstractCommand> entry : commands.entrySet()) {
(entry.getValue() != ) {
results.add( ((String)entry.getKey(), MatchResult.EXACT));
}
}
String[] terms = .searchQuery.split();
( ; termIndex < terms.length; ++termIndex) {
terms[termIndex];
( results.size() - ; cmdIndex >= ; --cmdIndex) {
results.get(cmdIndex);
(AbstractCommand)commands.get(result.name);
MatchResult match;
(command != ) {
match = command.matches(.playerRef.getLanguage(), term, termIndex);
} {
match = MatchResult.NONE;
}
(match == MatchResult.NONE) {
results.remove(cmdIndex);
} {
result.match = result.match.min(match);
}
}
}
results.sort(CommandListPage.SearchResult.COMPARATOR);
.visibleCommands.clear();
( ; i < results.size(); ++i) {
.visibleCommands.add((results.get(i)).name);
}
}
( ; i < .visibleCommands.size(); ++i) {
(String).visibleCommands.get(i);
commandBuilder.append(, );
commandBuilder.set( + i + , Message.raw(name));
eventBuilder.addEventBinding(CustomUIEventBindingType.Activating, + i + , EventData.of(, name));
(name.equals(.selectedCommand)) {
commandBuilder.set( + i + , BUTTON_LABEL_STYLE_SELECTED);
}
}
}
{
(AbstractCommand)CommandManager.get().getCommandRegistration().get(commandName);
(command == ) {
( + commandName);
} {
commandBuilder.set(, Message.raw(commandName));
(Player)componentAccessor.getComponent(ref, Player.getComponentType());
commandBuilder.set(, Message.translation(command.getDescription()));
.selectedSubcommand = ;
.selectedVariantIndex = ;
.subcommandBreadcrumb.clear();
.buildSubcommandTabs(command, playerComponent, commandBuilder, eventBuilder);
.displayCommandInfo(command, playerComponent, commandBuilder, eventBuilder);
(.selectedCommand != && .visibleCommands.contains(.selectedCommand)) {
commandBuilder.set( + .visibleCommands.indexOf(.selectedCommand) + , BUTTON_LABEL_STYLE);
}
commandBuilder.set( + .visibleCommands.indexOf(commandName) + , BUTTON_LABEL_STYLE_SELECTED);
.selectedCommand = commandName;
}
}
{
(AbstractCommand)CommandManager.get().getCommandRegistration().get(.selectedCommand);
(currentContext != ) {
(String breadcrumbPart : .subcommandBreadcrumb) {
Map<String, AbstractCommand> subcommands = currentContext.getSubCommands();
currentContext = (AbstractCommand)subcommands.get(breadcrumbPart);
(currentContext == ) {
;
}
}
(Player)componentAccessor.getComponent(ref, Player.getComponentType());
Map<String, AbstractCommand> subcommands = currentContext.getSubCommands();
(AbstractCommand)subcommands.get(subcommandName);
(subcommand != ) {
.subcommandBreadcrumb.add(subcommandName);
.selectedSubcommand = subcommandName;
.selectedVariantIndex = ;
.updateTitleWithBreadcrumb(commandBuilder);
commandBuilder.set(, Message.translation(subcommand.getDescription()));
.buildSubcommandTabs(subcommand, playerComponent, commandBuilder, eventBuilder);
commandBuilder.set(, );
.displayCommandInfo(subcommand, playerComponent, commandBuilder, eventBuilder);
}
}
}
{
(AbstractCommand)CommandManager.get().getCommandRegistration().get(.selectedCommand);
(currentContext != ) {
(String breadcrumbPart : .subcommandBreadcrumb) {
Map<String, AbstractCommand> subcommands = currentContext.getSubCommands();
currentContext = (AbstractCommand)subcommands.get(breadcrumbPart);
(currentContext == ) {
;
}
}
(Player)componentAccessor.getComponent(ref, Player.getComponentType());
{
AbstractCommand.class.getDeclaredField();
variantsField.setAccessible();
Int2ObjectMap<AbstractCommand> variants = (Int2ObjectMap)variantsField.get(currentContext);
(AbstractCommand)variants.get(variantIndex);
(variant == || !variant.hasPermission(playerComponent)) {
;
}
.selectedVariantIndex = variantIndex;
.updateTitleWithVariantSuffix(commandBuilder);
commandBuilder.set(, );
commandBuilder.set(, );
commandBuilder.set(, .getSimplifiedUsage(variant, playerComponent));
.buildParametersSection(variant, playerComponent, commandBuilder);
.buildArgumentTypesSection(variant, playerComponent, commandBuilder);
} (Exception var11) {
}
}
}
{
(.selectedVariantIndex != ) {
.selectedVariantIndex = ;
(AbstractCommand)CommandManager.get().getCommandRegistration().get(.selectedCommand);
(currentContext != ) {
(String breadcrumbPart : .subcommandBreadcrumb) {
Map<String, AbstractCommand> subcommands = currentContext.getSubCommands();
currentContext = (AbstractCommand)subcommands.get(breadcrumbPart);
(currentContext == ) {
;
}
}
(Player)componentAccessor.getComponent(ref, Player.getComponentType());
.updateTitleWithBreadcrumb(commandBuilder);
.displayCommandInfo(currentContext, playerComponent, commandBuilder, eventBuilder);
commandBuilder.set(, !.subcommandBreadcrumb.isEmpty());
}
} (!.subcommandBreadcrumb.isEmpty()) {
.subcommandBreadcrumb.remove(.subcommandBreadcrumb.size() - );
(AbstractCommand)CommandManager.get().getCommandRegistration().get(.selectedCommand);
(currentContext != ) {
(String breadcrumbPart : .subcommandBreadcrumb) {
Map<String, AbstractCommand> subcommands = currentContext.getSubCommands();
currentContext = (AbstractCommand)subcommands.get(breadcrumbPart);
(currentContext == ) {
;
}
}
(Player)componentAccessor.getComponent(ref, Player.getComponentType());
.selectedSubcommand = .subcommandBreadcrumb.isEmpty() ? : (String).subcommandBreadcrumb.get(.subcommandBreadcrumb.size() - );
.updateTitleWithBreadcrumb(commandBuilder);
.buildSubcommandTabs(currentContext, playerComponent, commandBuilder, eventBuilder);
.displayCommandInfo(currentContext, playerComponent, commandBuilder, eventBuilder);
}
}
}
{
commandBuilder.clear();
Map<String, AbstractCommand> subcommands = command.getSubCommands();
(subcommands.isEmpty()) {
commandBuilder.set(, );
} {
commandBuilder.set(, );
;
;
;
(Map.Entry<String, AbstractCommand> entry : subcommands.entrySet()) {
(AbstractCommand)entry.getValue();
(subcommand.hasPermission(playerComponent)) {
(cardsInCurrentRow == ) {
commandBuilder.appendInline(, );
}
commandBuilder.append( + rowIndex + , );
commandBuilder.set( + rowIndex + + cardsInCurrentRow + , Message.raw((String)entry.getKey()));
commandBuilder.set( + rowIndex + + cardsInCurrentRow + , .getSimplifiedUsage(subcommand, playerComponent));
commandBuilder.set( + rowIndex + + cardsInCurrentRow + , Message.translation(subcommand.getDescription()));
eventBuilder.addEventBinding(CustomUIEventBindingType.Activating, + rowIndex + + cardsInCurrentRow + , EventData.of(, (String)entry.getKey()));
++cardsInCurrentRow;
++cardIndex;
(cardsInCurrentRow >= ) {
cardsInCurrentRow = ;
++rowIndex;
}
}
}
}
commandBuilder.set(, !.subcommandBreadcrumb.isEmpty());
}
{
(.selectedCommand);
(String part : .subcommandBreadcrumb) {
titleText.append().append(part);
}
commandBuilder.set(, Message.raw(titleText.toString()));
}
{
(.selectedCommand);
(String part : .subcommandBreadcrumb) {
titleText.append().append(part);
}
titleText.append();
commandBuilder.set(, Message.raw(titleText.toString()));
}
{
Set<String> aliases = command.getAliases();
(aliases != && !aliases.isEmpty()) {
commandBuilder.set(, );
commandBuilder.set(, Message.raw(String.join(, aliases)));
} {
commandBuilder.set(, );
}
}
{
command.getPermission();
(permission != && !permission.isEmpty()) {
commandBuilder.set(, );
commandBuilder.set(, Message.raw(permission));
} {
commandBuilder.set(, );
}
}
{
commandBuilder.clear();
{
AbstractCommand.class.getDeclaredField();
variantsField.setAccessible();
Int2ObjectMap<AbstractCommand> variants = (Int2ObjectMap)variantsField.get(command);
(variants.isEmpty()) {
commandBuilder.set(, );
;
}
commandBuilder.set(, );
;
(Int2ObjectMap.Entry<AbstractCommand> entry : variants.int2ObjectEntrySet()) {
(AbstractCommand)entry.getValue();
entry.getIntKey();
(variant.hasPermission(playerComponent)) {
commandBuilder.append(, );
commandBuilder.set( + displayIndex + , .getSimplifiedUsage(variant, playerComponent));
eventBuilder.addEventBinding(CustomUIEventBindingType.Activating, + displayIndex + , EventData.of(, String.valueOf(variantIndex)));
++displayIndex;
}
}
(displayIndex == ) {
commandBuilder.set(, );
}
} (Exception var12) {
commandBuilder.set(, );
}
}
{
.buildVariantsSection(command, playerComponent, commandBuilder, eventBuilder);
.buildAliasesSection(command, commandBuilder);
.buildPermissionSection(command, commandBuilder);
commandBuilder.set(, .getSimplifiedUsage(command, playerComponent));
.buildParametersSection(command, playerComponent, commandBuilder);
.buildArgumentTypesSection(command, playerComponent, commandBuilder);
}
Message {
Message.raw().insert(command.getFullyQualifiedName());
{
AbstractCommand.class.getDeclaredField();
requiredArgsField.setAccessible();
(RequiredArg<?> arg : (List)requiredArgsField.get(command)) {
message.insert().insert(Message.translation(arg.getName())).insert();
}
} (Exception var9) {
}
{
AbstractCommand.class.getDeclaredField();
optionalArgsField.setAccessible();
Map<String, ?> optionalArgs = (Map)optionalArgsField.get(command);
(!optionalArgs.isEmpty()) {
message.insert().insert(Message.translation()).insert();
}
} (Exception var8) {
}
message;
}
{
commandBuilder.clear();
commandBuilder.clear();
commandBuilder.clear();
commandBuilder.clear();
;
{
AbstractCommand.class.getDeclaredField();
requiredArgsField.setAccessible();
List<RequiredArg<?>> requiredArgs = (List)requiredArgsField.get(command);
(!requiredArgs.isEmpty()) {
hasAnyParameters = ;
( ; i < requiredArgs.size(); ++i) {
RequiredArg<?> arg = (RequiredArg)requiredArgs.get(i);
commandBuilder.append(, );
commandBuilder.set( + i + , Message.raw(arg.getName()));
commandBuilder.set( + i + , Message.raw());
commandBuilder.set( + i + , Message.translation().param(, arg.getArgumentType().getName()));
commandBuilder.set( + i + , arg.getDescription() != ? Message.translation(arg.getDescription()) : Message.translation());
}
}
} (Exception var17) {
}
{
AbstractCommand.class.getDeclaredField();
optionalArgsField.setAccessible();
Map<String, ?> optionalArgs = (Map)optionalArgsField.get(command);
(!optionalArgs.isEmpty()) {
hasAnyParameters = ;
}
;
;
;
(Map.Entry<String, ?> entry : optionalArgs.entrySet()) {
entry.getValue();
(arg OptionalArg<?> optArg) {
(optArg.getPermission() == || playerComponent.hasPermission(optArg.getPermission())) {
commandBuilder.append(, );
+ optIndex + ;
optArg.getName();
commandBuilder.set(var22, Message.raw( + var23 + + optArg.getName() + ));
commandBuilder.set( + optIndex + , Message.raw());
commandBuilder.set( + optIndex + , Message.translation().param(, optArg.getArgumentType().getName()));
commandBuilder.set( + optIndex + , optArg.getDescription() != ? Message.translation(optArg.getDescription()) : Message.translation());
++optIndex;
}
} (arg DefaultArg<?> defArg) {
(defArg.getPermission() == || playerComponent.hasPermission(defArg.getPermission())) {
commandBuilder.append(, );
+ defIndex + ;
defArg.getName();
commandBuilder.set(var10001, Message.raw( + var10002 + + defArg.getName() + ));
commandBuilder.set( + defIndex + , Message.raw());
commandBuilder.set( + defIndex + , Message.translation().param(, defArg.getArgumentType().getName()).param(, defArg.getDefaultValueDescription()));
commandBuilder.set( + defIndex + , defArg.getDescription() != ? Message.translation(defArg.getDescription()) : Message.translation());
++defIndex;
}
} (arg FlagArg flagArg) {
(flagArg.getPermission() == || playerComponent.hasPermission(flagArg.getPermission())) {
commandBuilder.append(, );
commandBuilder.set( + flagIndex + , Message.raw( + flagArg.getName()));
commandBuilder.set( + flagIndex + , Message.raw());
commandBuilder.set( + flagIndex + , Message.translation());
commandBuilder.set( + flagIndex + , flagArg.getDescription() != ? Message.translation(flagArg.getDescription()) : Message.translation());
++flagIndex;
}
}
}
} (Exception var16) {
}
commandBuilder.set(, hasAnyParameters);
}
{
commandBuilder.clear();
HashSet<ArgumentType<?>> allArgumentTypes = ();
{
AbstractCommand.class.getDeclaredField();
requiredArgsField.setAccessible();
(RequiredArg<?> arg : (List)requiredArgsField.get(command)) {
allArgumentTypes.add(arg.getArgumentType());
}
AbstractCommand.class.getDeclaredField();
optionalArgsField.setAccessible();
Map<String, ?> optionalArgs = (Map)optionalArgsField.get(command);
(Object entry : optionalArgs.values()) {
(entry OptionalArg) {
allArgumentTypes.add(((OptionalArg)entry).getArgumentType());
} (entry DefaultArg) {
allArgumentTypes.add(((DefaultArg)entry).getArgumentType());
}
}
} (Exception var11) {
}
(allArgumentTypes.isEmpty()) {
commandBuilder.set(, );
} {
commandBuilder.set(, );
;
(ArgumentType<?> argType : allArgumentTypes) {
commandBuilder.append(, );
commandBuilder.set( + index + , argType.getName());
commandBuilder.set( + index + , argType.getArgumentUsage());
String[] examples = argType.getExamples();
(examples != && examples.length > ) {
commandBuilder.set( + index + , Message.translation().param(, String.join(, examples)));
} {
commandBuilder.set( + index + , );
}
++index;
}
}
}
{
;
;
;
;
;
;
BuilderCodec<CommandListPageEventData> CODEC;
String command;
String subcommand;
String searchQuery;
String navigateUp;
String variantIndex;
String sendToChat;
{
}
{
CODEC = ((BuilderCodec.Builder)((BuilderCodec.Builder)((BuilderCodec.Builder)((BuilderCodec.Builder)((BuilderCodec.Builder)((BuilderCodec.Builder)BuilderCodec.builder(CommandListPageEventData.class, CommandListPageEventData::).addField( (, Codec.STRING), (entry, s) -> entry.command = s, (entry) -> entry.command)).addField( (, Codec.STRING), (entry, s) -> entry.subcommand = s, (entry) -> entry.subcommand)).addField( (, Codec.STRING), (entry, s) -> entry.searchQuery = s, (entry) -> entry.searchQuery)).addField( (, Codec.STRING), (entry, s) -> entry.navigateUp = s, (entry) -> entry.navigateUp)).addField( (, Codec.STRING), (entry, s) -> entry.variantIndex = s, (entry) -> entry.variantIndex)).addField( (, Codec.STRING), (entry, s) -> entry.sendToChat = s, (entry) -> entry.sendToChat)).build();
}
}
{
Comparator<SearchResult> COMPARATOR = Comparator.comparing((o) -> o.match);
String name;
MatchResult match;
{
.name = name;
.match = match;
}
}
}
com/hypixel/hytale/server/core/command/system/suggestion/SuggestionProvider.java
package com.hypixel.hytale.server.core.command.system.suggestion;
import com.hypixel.hytale.server.core.command.system.CommandSender;
import javax.annotation.Nonnull;
@FunctionalInterface
public interface SuggestionProvider {
void suggest(@Nonnull CommandSender var1, @Nonnull String var2, int var3, @Nonnull SuggestionResult var4);
}
com/hypixel/hytale/server/core/command/system/suggestion/SuggestionResult.java
package com.hypixel.hytale.server.core.command.system.suggestion;
import com.hypixel.hytale.common.util.StringCompareUtil;
import it.unimi.dsi.fastutil.ints.IntObjectPair;
import it.unimi.dsi.fastutil.objects.ObjectArrayList;
import java.util.Collection;
import java.util.Comparator;
import java.util.List;
import java.util.Locale;
import java.util.function.Function;
import javax.annotation.Nonnull;
public class SuggestionResult {
private static final int FUZZY_SUGGESTION_MAX_RESULTS = 5;
@Nonnull
private static final Comparator<IntObjectPair<String>> INTEGER_STRING_PAIR_COMPARATOR = Comparator.comparingInt(IntObjectPair::leftInt);
private final List<String> suggestions = new ObjectArrayList<String>();
public SuggestionResult() {
}
@Nonnull
public SuggestionResult suggest(@Nonnull String suggestion) {
this.suggestions.add(suggestion);
return this;
}
@Nonnull
public <DataType> SuggestionResult suggest {
.suggest((String)toStringFunction.apply(suggestion));
}
SuggestionResult {
.suggest(objectToString.toString());
}
List<String> {
.suggestions;
}
<DataType> SuggestionResult {
List<IntObjectPair<String>> sorting = <IntObjectPair<String>>();
-;
(DataType item : items) {
(String)toStringFunction.apply(item);
StringCompareUtil.getFuzzyDistance(toString, input, Locale.ENGLISH);
(sorting.size() == ) {
(fuzzyValue < lowestStoredFuzzyValue) {
;
}
sorting.set(, IntObjectPair.of(fuzzyValue, toString));
} {
sorting.add(IntObjectPair.of(fuzzyValue, toString));
}
sorting.sort(INTEGER_STRING_PAIR_COMPARATOR);
lowestStoredFuzzyValue = ((IntObjectPair)sorting.getFirst()).leftInt();
}
(IntObjectPair<String> integerStringPair : sorting) {
.suggest((String)integerStringPair.right());
}
;
}
}