CommonAsset class
Пакет: com.hypixel.hytale.server.core.asset.common
Файл: com/hypixel/hytale/server/core/asset/common/CommonAsset.java
implements: NetworkSerializable<Asset>
Поля (7)
| Модификаторы | Тип | Имя |
|---|---|---|
final |
int |
HASH_LENGTH |
|
CompletableFuture |
var1 |
|
|
var1 |
|
Asset |
var1 |
|
int |
var1 |
|
Asset |
var2 |
|
CommonAsset |
var2 |
Методы (5)
| Модификаторы | Возврат | Сигнатура |
|---|---|---|
public |
CompletableFuture<byte[]> |
getBlobCompletableFuture<byte[]> getBlob() |
abstract abstract |
CompletableFuture<byte[]> |
getBlob0CompletableFuture<byte[]> getBlob0() |
|
|
if if(var1 == null) |
|
|
if if(var1 != null) |
|
|
if if(this == var1) |
Исходный код
Показать/скрыть
class="kw">package com.hypixel.hytale.server.core.asset.common;
class="kw">import com.hypixel.hytale.common.util.PatternUtil;
class="kw">import com.hypixel.hytale.protocol.Asset;
class="kw">import com.hypixel.hytale.server.core.io.NetworkSerializable;
class="kw">import com.hypixel.hytale.server.core.util.HashUtil;
class="kw">import java.lang.ref.SoftReference;
class="kw">import java.lang.ref.WeakReference;
class="kw">import java.util.Locale;
class="kw">import java.util.concurrent.CompletableFuture;
class="kw">import java.util.regex.Pattern;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;
class="kw">public class="kw">abstract class CommonAsset class="kw">implements NetworkSerializable<Asset> {
class="kw">public class="kw">static class="kw">final int HASH_LENGTH = 64;
class="kw">public class="kw">static class="kw">final Pattern HASH_PATTERN = Pattern.compile("^[A-Fa-f0-9]{64}$");
@Nonnull
class="kw">private class="kw">final String name;
@Nonnull
class="kw">private class="kw">final String hash;
class="kw">protected class="kw">transient WeakReference<CompletableFuture<byte[]>> blob;
class="kw">protected class="kw">transient SoftReference<Asset> cachedPacket;
class="kw">public CommonAsset(@Nonnull String var1, @Nullable byte[] var2) {
this.name = PatternUtil.replaceBackslashWithForwardSlash(var1);
this.hash = hash(var2);
this.blob = new WeakReference<>(var2 != null ? CompletableFuture.completedFuture(var2) : null);
}
class="kw">public CommonAsset(@Nonnull String var1, @Nonnull String var2, @Nullable byte[] var3) {
this.name = PatternUtil.replaceBackslashWithForwardSlash(var1);
this.hash = var2.toLowerCase(Locale.ROOT);
this.blob = new WeakReference<>(var3 != null ? CompletableFuture.completedFuture(var3) : null);
}
@Nonnull
class="kw">public String getName() {
class="kw">return this.name;
}
@Nonnull
class="kw">public String getHash() {
class="kw">return this.hash;
}
class="kw">public CompletableFuture<byte[]> getBlob() {
CompletableFuture var1 = this.blob.get();
if (var1 == null) {
var1 = this.getBlob0();
this.blob = new WeakReference<>(var1);
}
class="kw">return var1;
}
class="kw">protected class="kw">abstract CompletableFuture<byte[]> getBlob0();
@Nonnull
class="kw">public Asset toPacket() {
Asset var1 = this.cachedPacket == null ? null : this.cachedPacket.get();
if (var1 != null) {
class="kw">return var1;
}
Asset var2 = new Asset(this.hash, this.name);
this.cachedPacket = new SoftReference<>(var2);
class="kw">return var2;
}
@Override
class="kw">public boolean equals(@Nullable Object var1) {
if (this == var1) {
class="kw">return true;
} else if (var1 != null && this.getClass() == var1.getClass()) {
CommonAsset var2 = (CommonAsset)var1;
class="kw">return !this.name.equals(var2.name) ? false : this.hash.equals(var2.hash);
} else {
class="kw">return false;
}
}
@Override
class="kw">public int hashCode() {
int var1 = this.name.hashCode();
class="kw">return 31 * var1 + this.hash.hashCode();
}
@Nonnull
@Override
class="kw">public String toString() {
class="kw">return "CommonAsset{name='" + this.name + "', hash='" + this.hash + "'}";
}
@Nonnull
class="kw">public class="kw">static String hash(byte[] var0) {
class="kw">return HashUtil.sha256(var0);
}
}