DuplicatedAssetInfo class
Пакет: com.hypixel.hytale.server.core.command.commands.debug
Файл: com/hypixel/hytale/server/core/command/commands/debug/AssetsDuplicatesCommand.java
Поля (7)
| Модификаторы | Тип | Имя |
|---|---|---|
|
public static final Comparator<AssetsDuplicatesCommand.DuplicatedAssetInfo> |
COMPARATOR |
|
public static final Comparator<AssetsDuplicatesCommand.DuplicatedAssetInfo> |
COMPARATOR_REVERSE |
|
final List<CommonAssetRegistry.PackAsset> |
assets |
|
final String |
hash |
|
CommonAsset |
var1 |
|
Path |
var3 |
|
long |
wastedSpace |
Методы (2)
| Модификаторы | Возврат | Сигнатура |
|---|---|---|
|
public CompletableFuture<Void> |
calculateTotalSizepublic CompletableFuture<Void> calculateTotalSize() |
|
|
if if(var1 instanceof FileCommonAsset var2) |
Исходный код
Показать/скрыть
class="kw">package com.hypixel.hytale.server.core.command.commands.debug;
class="kw">import com.hypixel.hytale.common.util.FormatUtil;
class="kw">import com.hypixel.hytale.server.core.Message;
class="kw">import com.hypixel.hytale.server.core.asset.common.CommonAsset;
class="kw">import com.hypixel.hytale.server.core.asset.common.CommonAssetRegistry;
class="kw">import com.hypixel.hytale.server.core.asset.common.asset.FileCommonAsset;
class="kw">import com.hypixel.hytale.server.core.command.system.CommandContext;
class="kw">import com.hypixel.hytale.server.core.command.system.arguments.system.FlagArg;
class="kw">import com.hypixel.hytale.server.core.command.system.basecommands.AbstractAsyncCommand;
class="kw">import com.hypixel.hytale.server.core.util.message.MessageFormat;
class="kw">import com.hypixel.hytale.sneakythrow.SneakyThrow;
class="kw">import it.unimi.dsi.fastutil.objects.ObjectArrayList;
class="kw">import java.nio.file.Files;
class="kw">import java.nio.file.Path;
class="kw">import java.util.Collections;
class="kw">import java.util.Comparator;
class="kw">import java.util.List;
class="kw">import java.util.Set;
class="kw">import java.util.Map.Entry;
class="kw">import java.util.concurrent.CompletableFuture;
class="kw">import java.util.stream.Collectors;
class="kw">import javax.annotation.Nonnull;
class="kw">public class AssetsDuplicatesCommand class="kw">extends AbstractAsyncCommand {
@Nonnull
class="kw">private class="kw">final FlagArg reverseFlag = this.withFlagArg("reverse", "server.commands.assets.duplicates.reverse.desc");
class="kw">public AssetsDuplicatesCommand() {
super("duplicates", "server.commands.assets.duplicates.desc");
}
@Nonnull
@Override
class="kw">protected CompletableFuture<Void> executeAsync(@Nonnull CommandContext var1) {
boolean var2 = this.reverseFlag.get(var1);
List var3 = new ObjectArrayList();
List var4 = new ObjectArrayList();
for (Entry var6 : CommonAssetRegistry.getDuplicatedAssets().entrySet()) {
AssetsDuplicatesCommand.DuplicatedAssetInfo var7 = new AssetsDuplicatesCommand.DuplicatedAssetInfo(var6.getKey(), var6.getValue());
var4.add(var7);
var3.add(var7.calculateTotalSize());
}
class="kw">return CompletableFuture.allOf(var3.toArray(CompletableFuture[]::new))
.thenAccept(
var3x -> {
var4.sort(var2 ? AssetsDuplicatesCommand.DuplicatedAssetInfo.COMPARATOR_REVERSE : AssetsDuplicatesCommand.DuplicatedAssetInfo.COMPARATOR);
long var4 = 0L;
for (AssetsDuplicatesCommand.DuplicatedAssetInfo var7 : var4) {
Message var8 = Message.translation("server.commands.assets.duplicates.header")
.param("hash", var7.hash)
.param("wastedBytes", FormatUtil.bytesToString(var7.wastedSpace));
Set var9 = var7.assets.stream().map(var0x -> var0x.pack() + ":" + var0x.asset().getName()).map(Message::raw).collect(Collectors.toSet());
var1.sendMessage(MessageFormat.list(var8, var9));
var4 += var7.wastedSpace;
}
var1.sendMessage(Message.translation("server.commands.assets.duplicates.total").param("wastedBytes", FormatUtil.bytesToString(var4)));
}
);
}
class="kw">public class="kw">static class DuplicatedAssetInfo {
@Nonnull
class="kw">public class="kw">static class="kw">final Comparator<AssetsDuplicatesCommand.DuplicatedAssetInfo> COMPARATOR = Comparator.comparingLong(var0 -> var0.wastedSpace);
@Nonnull
class="kw">public class="kw">static class="kw">final Comparator<AssetsDuplicatesCommand.DuplicatedAssetInfo> COMPARATOR_REVERSE = Collections.reverseOrder(COMPARATOR);
@Nonnull
class="kw">final String hash;
@Nonnull
class="kw">final List<CommonAssetRegistry.PackAsset> assets;
long wastedSpace;
class="kw">public DuplicatedAssetInfo(@Nonnull String var1, @Nonnull List<CommonAssetRegistry.PackAsset> var2) {
this.hash = var1;
this.assets = var2;
}
@Nonnull
class="kw">public CompletableFuture<Void> calculateTotalSize() {
CommonAsset var1 = this.assets.getFirst().asset();
if (var1 class="kw">instanceof FileCommonAsset var2) {
Path var3 = var2.getFile();
class="kw">return CompletableFuture.runAsync(SneakyThrow.sneakyRunnable(() -> this.wastedSpace = Files.size(var3) * (this.assets.size() - 1)));
} else {
class="kw">return var1.getBlob().thenAccept(var1x -> this.wastedSpace = (long)var1x.length * (this.assets.size() - 1));
}
}
}
}