AssetRegistryLoader class
Пакет: com.hypixel.hytale.server.core.asset
Файл: com/hypixel/hytale/server/core/asset/AssetRegistryLoader.java
Поля (35)
| Модификаторы | Тип | Имя |
|---|---|---|
final |
HytaleLogger |
LOGGER |
|
|
return |
|
BlockTypeAssetMap |
var0 |
|
Collection |
var1 |
|
Consumer |
var1 |
|
long |
var10 |
|
long |
var11 |
|
Path |
var11 |
|
Class |
var12 |
|
String |
var13 |
|
long |
var14 |
|
AssetLoadResult |
var15 |
|
boolean |
var16 |
|
|
var16 |
|
long |
var16 |
|
AssetStoreIterator |
var17 |
|
AssetLoadResult |
var18 |
|
boolean |
var2 |
|
Path |
var2 |
|
Consumer |
var2 |
|
long |
var22 |
|
String |
var25 |
|
long |
var26 |
|
Path |
var27 |
|
long |
var3 |
|
AssetStore |
var4 |
|
long |
var5 |
|
boolean |
var5 |
|
boolean |
var6 |
|
|
var6 |
|
Class |
var7 |
|
Collection |
var7 |
|
List |
var8 |
|
long |
var9 |
|
AssetStore |
var9 |
Методы (19)
| Модификаторы | Возврат | Сигнатура |
|---|---|---|
abstract |
throw new |
CircularDependencyExceptionthrow new CircularDependencyException(var1, var17) |
abstract |
throw new |
CircularDependencyExceptionthrow new CircularDependencyException(var7, var8) |
|
|
for for(AssetStore var3 : var1) |
|
|
for for(AssetStore var24 : var7) |
|
|
if if(var0 != null) |
|
|
if if(var4 == null) |
|
|
if if(var16) |
|
|
if if(var9 == null) |
|
|
if if(var13 != null) |
|
|
if if(var0 != null) |
|
|
if if(var25 != null) |
|
|
if if(var6 && var0 != null) |
static |
void |
initvoid init() |
static |
boolean |
loadAssetsboolean loadAssets(@Nullable LoadAssetEvent var0, @Nonnull AssetPack var1) |
static |
boolean |
loadAssets0boolean loadAssets0(@Nullable LoadAssetEvent var0, @Nonnull AssetPack var1) |
static |
void |
preLoadAssetsvoid preLoadAssets(@Nonnull LoadAssetEvent var0) |
static |
void |
preLoadAssets0void preLoadAssets0(@Nonnull LoadAssetEvent var0) |
abstract |
|
preLoadAssets0 preLoadAssets0(var0) |
static |
void |
sendAssetsvoid sendAssets(@Nonnull PacketHandler var0) |
Исходный код
Показать/скрыть
class="kw">package com.hypixel.hytale.server.core.asset;
class="kw">import com.hypixel.hytale.assetstore.AssetLoadResult;
class="kw">import com.hypixel.hytale.assetstore.AssetMap;
class="kw">import com.hypixel.hytale.assetstore.AssetPack;
class="kw">import com.hypixel.hytale.assetstore.AssetRegistry;
class="kw">import com.hypixel.hytale.assetstore.AssetStore;
class="kw">import com.hypixel.hytale.assetstore.iterator.AssetStoreIterator;
class="kw">import com.hypixel.hytale.assetstore.iterator.CircularDependencyException;
class="kw">import com.hypixel.hytale.assetstore.map.BlockTypeAssetMap;
class="kw">import com.hypixel.hytale.assetstore.map.DefaultAssetMap;
class="kw">import com.hypixel.hytale.assetstore.map.IndexedAssetMap;
class="kw">import com.hypixel.hytale.assetstore.map.IndexedLookupTableAssetMap;
class="kw">import com.hypixel.hytale.assetstore.map.JsonAssetWithMap;
class="kw">import com.hypixel.hytale.common.util.FormatUtil;
class="kw">import com.hypixel.hytale.logger.HytaleLogger;
class="kw">import com.hypixel.hytale.protocol.ToClientPacket;
class="kw">import com.hypixel.hytale.server.core.HytaleServer;
class="kw">import com.hypixel.hytale.server.core.Options;
class="kw">import com.hypixel.hytale.server.core.asset.type.ambiencefx.AmbienceFXPacketGenerator;
class="kw">import com.hypixel.hytale.server.core.asset.type.ambiencefx.config.AmbienceFX;
class="kw">import com.hypixel.hytale.server.core.asset.type.audiocategory.AudioCategoryPacketGenerator;
class="kw">import com.hypixel.hytale.server.core.asset.type.audiocategory.config.AudioCategory;
class="kw">import com.hypixel.hytale.server.core.asset.type.audiostate.AudioStatePacketGenerator;
class="kw">import com.hypixel.hytale.server.core.asset.type.audiostate.config.AudioState;
class="kw">import com.hypixel.hytale.server.core.asset.type.blockbreakingdecal.BlockBreakingDecalPacketGenerator;
class="kw">import com.hypixel.hytale.server.core.asset.type.blockbreakingdecal.config.BlockBreakingDecal;
class="kw">import com.hypixel.hytale.server.core.asset.type.blockhitbox.BlockBoundingBoxes;
class="kw">import com.hypixel.hytale.server.core.asset.type.blockhitbox.BlockBoundingBoxesPacketGenerator;
class="kw">import com.hypixel.hytale.server.core.asset.type.blockparticle.BlockParticleSetPacketGenerator;
class="kw">import com.hypixel.hytale.server.core.asset.type.blockparticle.config.BlockParticleSet;
class="kw">import com.hypixel.hytale.server.core.asset.type.blockset.BlockSetPacketGenerator;
class="kw">import com.hypixel.hytale.server.core.asset.type.blockset.config.BlockSet;
class="kw">import com.hypixel.hytale.server.core.asset.type.blocksound.BlockSoundSetPacketGenerator;
class="kw">import com.hypixel.hytale.server.core.asset.type.blocksound.config.BlockSoundSet;
class="kw">import com.hypixel.hytale.server.core.asset.type.blocktype.BlockGroupPacketGenerator;
class="kw">import com.hypixel.hytale.server.core.asset.type.blocktype.BlockTypePacketGenerator;
class="kw">import com.hypixel.hytale.server.core.asset.type.blocktype.config.BlockMigration;
class="kw">import com.hypixel.hytale.server.core.asset.type.blocktype.config.BlockType;
class="kw">import com.hypixel.hytale.server.core.asset.type.buildertool.config.BlockTypeListAsset;
class="kw">import com.hypixel.hytale.server.core.asset.type.buildertool.config.PrefabListAsset;
class="kw">import com.hypixel.hytale.server.core.asset.type.camera.CameraEffect;
class="kw">import com.hypixel.hytale.server.core.asset.type.entityeffect.EntityEffectPacketGenerator;
class="kw">import com.hypixel.hytale.server.core.asset.type.entityeffect.config.EntityEffect;
class="kw">import com.hypixel.hytale.server.core.asset.type.environment.EnvironmentPacketGenerator;
class="kw">import com.hypixel.hytale.server.core.asset.type.environment.config.Environment;
class="kw">import com.hypixel.hytale.server.core.asset.type.equalizereffect.EqualizerEffectPacketGenerator;
class="kw">import com.hypixel.hytale.server.core.asset.type.equalizereffect.config.EqualizerEffect;
class="kw">import com.hypixel.hytale.server.core.asset.type.fluid.Fluid;
class="kw">import com.hypixel.hytale.server.core.asset.type.fluid.FluidTypePacketGenerator;
class="kw">import com.hypixel.hytale.server.core.asset.type.fluidfx.FluidFXPacketGenerator;
class="kw">import com.hypixel.hytale.server.core.asset.type.fluidfx.config.FluidFX;
class="kw">import com.hypixel.hytale.server.core.asset.type.gamemode.GameModeType;
class="kw">import com.hypixel.hytale.server.core.asset.type.gameplay.GameplayConfig;
class="kw">import com.hypixel.hytale.server.core.asset.type.item.FieldcraftCategoryPacketGenerator;
class="kw">import com.hypixel.hytale.server.core.asset.type.item.ItemCategoryPacketGenerator;
class="kw">import com.hypixel.hytale.server.core.asset.type.item.ResourceTypePacketGenerator;
class="kw">import com.hypixel.hytale.server.core.asset.type.item.config.BlockGroup;
class="kw">import com.hypixel.hytale.server.core.asset.type.item.config.BuilderToolItemReferenceAsset;
class="kw">import com.hypixel.hytale.server.core.asset.type.item.config.CraftingRecipe;
class="kw">import com.hypixel.hytale.server.core.asset.type.item.config.FieldcraftCategory;
class="kw">import com.hypixel.hytale.server.core.asset.type.item.config.Item;
class="kw">import com.hypixel.hytale.server.core.asset.type.item.config.ItemCategory;
class="kw">import com.hypixel.hytale.server.core.asset.type.item.config.ItemDropList;
class="kw">import com.hypixel.hytale.server.core.asset.type.item.config.ItemQuality;
class="kw">import com.hypixel.hytale.server.core.asset.type.item.config.ItemReticleConfig;
class="kw">import com.hypixel.hytale.server.core.asset.type.item.config.ItemToolSpec;
class="kw">import com.hypixel.hytale.server.core.asset.type.item.config.ResourceType;
class="kw">import com.hypixel.hytale.server.core.asset.type.itemanimation.ItemPlayerAnimationsPacketGenerator;
class="kw">import com.hypixel.hytale.server.core.asset.type.itemanimation.config.ItemPlayerAnimations;
class="kw">import com.hypixel.hytale.server.core.asset.type.itemsound.ItemSoundSetPacketGenerator;
class="kw">import com.hypixel.hytale.server.core.asset.type.itemsound.config.ItemSoundSet;
class="kw">import com.hypixel.hytale.server.core.asset.type.model.config.ModelAsset;
class="kw">import com.hypixel.hytale.server.core.asset.type.modelvfx.ModelVFXPacketGenerator;
class="kw">import com.hypixel.hytale.server.core.asset.type.modelvfx.config.ModelVFX;
class="kw">import com.hypixel.hytale.server.core.asset.type.musiccontainer.MusicContainerPacketGenerator;
class="kw">import com.hypixel.hytale.server.core.asset.type.musiccontainer.config.MusicContainer;
class="kw">import com.hypixel.hytale.server.core.asset.type.musiccontainer.config.SingleTrackMusicContainer;
class="kw">import com.hypixel.hytale.server.core.asset.type.particle.ParticleSpawnerPacketGenerator;
class="kw">import com.hypixel.hytale.server.core.asset.type.particle.ParticleSystemPacketGenerator;
class="kw">import com.hypixel.hytale.server.core.asset.type.particle.config.ParticleSpawner;
class="kw">import com.hypixel.hytale.server.core.asset.type.particle.config.ParticleSystem;
class="kw">import com.hypixel.hytale.server.core.asset.type.physicalmaterial.PhysicalMaterialPacketGenerator;
class="kw">import com.hypixel.hytale.server.core.asset.type.physicalmaterial.config.PhysicalMaterial;
class="kw">import com.hypixel.hytale.server.core.asset.type.portalworld.PortalType;
class="kw">import com.hypixel.hytale.server.core.asset.type.projectile.config.Projectile;
class="kw">import com.hypixel.hytale.server.core.asset.type.responsecurve.config.ExponentialResponseCurve;
class="kw">import com.hypixel.hytale.server.core.asset.type.responsecurve.config.ResponseCurve;
class="kw">import com.hypixel.hytale.server.core.asset.type.reverbeffect.ReverbEffectPacketGenerator;
class="kw">import com.hypixel.hytale.server.core.asset.type.reverbeffect.config.ReverbEffect;
class="kw">import com.hypixel.hytale.server.core.asset.type.soundevent.SoundEventPacketGenerator;
class="kw">import com.hypixel.hytale.server.core.asset.type.soundevent.config.SoundEvent;
class="kw">import com.hypixel.hytale.server.core.asset.type.soundset.SoundSetPacketGenerator;
class="kw">import com.hypixel.hytale.server.core.asset.type.soundset.config.SoundSet;
class="kw">import com.hypixel.hytale.server.core.asset.type.tagpattern.TagPatternPacketGenerator;
class="kw">import com.hypixel.hytale.server.core.asset.type.tagpattern.config.AndPatternOp;
class="kw">import com.hypixel.hytale.server.core.asset.type.tagpattern.config.EqualsTagOp;
class="kw">import com.hypixel.hytale.server.core.asset.type.tagpattern.config.NotPatternOp;
class="kw">import com.hypixel.hytale.server.core.asset.type.tagpattern.config.OrPatternOp;
class="kw">import com.hypixel.hytale.server.core.asset.type.tagpattern.config.TagPattern;
class="kw">import com.hypixel.hytale.server.core.asset.type.trail.TrailPacketGenerator;
class="kw">import com.hypixel.hytale.server.core.asset.type.trail.config.Trail;
class="kw">import com.hypixel.hytale.server.core.asset.type.weather.WeatherPacketGenerator;
class="kw">import com.hypixel.hytale.server.core.asset.type.weather.config.Weather;
class="kw">import com.hypixel.hytale.server.core.asset.type.wordlist.WordList;
class="kw">import com.hypixel.hytale.server.core.inventory.ItemStack;
class="kw">import com.hypixel.hytale.server.core.io.PacketHandler;
class="kw">import com.hypixel.hytale.server.core.modules.entity.damage.DamageCause;
class="kw">import com.hypixel.hytale.server.core.modules.entity.hitboxcollision.HitboxCollisionConfig;
class="kw">import com.hypixel.hytale.server.core.modules.entity.repulsion.RepulsionConfig;
class="kw">import com.hypixel.hytale.server.core.modules.entitystats.asset.EntityStatType;
class="kw">import com.hypixel.hytale.server.core.modules.interaction.interaction.UnarmedInteractions;
class="kw">import com.hypixel.hytale.server.core.modules.interaction.interaction.config.Interaction;
class="kw">import com.hypixel.hytale.server.core.modules.item.CraftingRecipePacketGenerator;
class="kw">import com.hypixel.hytale.server.core.modules.item.ItemPacketGenerator;
class="kw">import com.hypixel.hytale.server.core.modules.item.ItemQualityPacketGenerator;
class="kw">import com.hypixel.hytale.server.core.modules.item.ItemReticleConfigPacketGenerator;
class="kw">import com.hypixel.hytale.server.core.modules.projectile.config.ProjectileConfig;
class="kw">import com.hypixel.hytale.server.core.modules.projectile.config.ProjectileConfigPacketGenerator;
class="kw">import com.hypixel.hytale.server.core.universe.world.connectedblocks.CustomConnectedBlockTemplateAsset;
class="kw">import com.hypixel.hytale.sneakythrow.SneakyThrow;
class="kw">import it.unimi.dsi.fastutil.objects.Object2ObjectLinkedOpenHashMap;
class="kw">import java.nio.file.Files;
class="kw">import java.nio.file.Path;
class="kw">import java.util.Arrays;
class="kw">import java.util.Collection;
class="kw">import java.util.Collections;
class="kw">import java.util.List;
class="kw">import java.util.function.Consumer;
class="kw">import java.util.logging.Level;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;
class="kw">public class AssetRegistryLoader {
class="kw">public class="kw">static class="kw">final HytaleLogger LOGGER = HytaleLogger.forEnclosingClass();
class="kw">public AssetRegistryLoader() {
}
class="kw">public class="kw">static void init() {
}
class="kw">public class="kw">static void preLoadAssets(@Nonnull LoadAssetEvent var0) {
try {
preLoadAssets0(var0);
} catch (Throwable var2) {
var0.failed(true, "failed to validate assets");
throw SneakyThrow.sneakyThrow(var2);
}
}
class="kw">public class="kw">static boolean loadAssets(@Nullable LoadAssetEvent var0, @Nonnull AssetPack var1) {
AssetRegistry.ASSET_LOCK.writeLock().lock();
try {
boolean var2 = loadAssets0(var0, var1);
AssetRegistry.HAS_INIT = true;
class="kw">return var2;
} catch (Throwable var7) {
if (var0 != null) {
var0.failed(true, "failed to validate assets");
}
throw SneakyThrow.sneakyThrow(var7);
} class="kw">finally {
AssetRegistry.ASSET_LOCK.writeLock().unlock();
}
}
class="kw">private class="kw">static void preLoadAssets0(@Nonnull LoadAssetEvent var0) {
AssetStore.DISABLE_DYNAMIC_DEPENDENCIES = true;
Collection var1 = AssetRegistry.getStoreMap().values();
LOGGER.at(Level.INFO).log("Loading %s asset stores...", var1.size());
for (AssetStore var3 : var1) {
var3.simplifyLoadBeforeDependencies();
}
boolean var16 = false;
LOGGER.at(Level.INFO).log("Pre-adding assets...");
AssetStoreIterator var17 = new AssetStoreIterator(var1);
label71: {
try {
while (var17.hasNext()) {
if (HytaleServer.get().isShuttingDown()) {
LOGGER.at(Level.INFO).log("Aborted asset loading due to server shutdown!");
break label71;
}
AssetStore var4 = (AssetStore<?, ? class="kw">extends JsonAssetWithMap<?, ? class="kw">extends AssetMap<?, ?>>, ? class="kw">extends AssetMap<?, ? class="kw">extends JsonAssetWithMap<?, ?>>>)var17.next();
if (var4 == null) {
throw new CircularDependencyException(var1, var17);
}
long var5 = System.nanoTime();
Class var7 = var4.getAssetClass();
try {
List var8 = var4.getPreAddedAssets();
if (var8 != null && !var8.isEmpty()) {
AssetLoadResult var18 = var4.loadAssets("Hytale:Hytale", var8);
var16 |= var18.hasFailed();
}
} catch (Exception var14) {
var16 = true;
long var9 = System.nanoTime();
long var11 = var9 - var5;
if (var17.isBeingWaitedFor(var4)) {
throw new RuntimeException(String.format("Failed to pre-add %s took %s", var7.getSimpleName(), FormatUtil.nanosToString(var11)), var14);
}
((HytaleLogger.Api)LOGGER.at(Level.SEVERE).withCause(var14))
.log("Failed to pre-add %s took %s", var7.getSimpleName(), FormatUtil.nanosToString(var11));
}
}
} catch (Throwable var15) {
try {
var17.close();
} catch (Throwable var13) {
var15.addSuppressed(var13);
}
throw var15;
}
var17.close();
if (var16) {
var0.failed(Options.getOptionSet().has(Options.VALIDATE_ASSETS), "failed to validate internal assets");
}
class="kw">return;
}
var17.close();
}
class="kw">private class="kw">static boolean loadAssets0(@Nullable LoadAssetEvent var0, @Nonnull AssetPack var1) {
AssetStore.DISABLE_DYNAMIC_DEPENDENCIES = true;
Path var2 = var1.getRoot().resolve("Server");
HytaleLogger.getLogger().at(Level.INFO).log("Loading assets from: %s", var2);
long var3 = System.nanoTime();
boolean var5 = Options.getOptionSet().has(Options.VALIDATE_ASSETS) || var1.isImmutable() && !Options.getOptionSet().has(Options.IGNORE_BROKEN_MODS);
boolean var6 = false;
LOGGER.at(Level.INFO).log("Loading assets from %s", var2);
Collection var7 = AssetRegistry.getStoreMap().values();
try (AssetStoreIterator var8 = new AssetStoreIterator(var7)) {
while (var8.hasNext()) {
if (HytaleServer.get().isShuttingDown()) {
LOGGER.at(Level.INFO).log("Aborted asset loading due to server shutdown!");
class="kw">return var6;
}
AssetStore var9 = (AssetStore<?, ? class="kw">extends JsonAssetWithMap<?, ? class="kw">extends AssetMap<?, ?>>, ? class="kw">extends AssetMap<?, ? class="kw">extends JsonAssetWithMap<?, ?>>>)var8.next();
if (var9 == null) {
throw new CircularDependencyException(var7, var8);
}
long var10 = System.nanoTime();
Class var12 = var9.getAssetClass();
try {
String var13 = var9.getPath();
if (var13 != null) {
Path var27 = var2.resolve(var13);
if (Files.isDirectory(var27)) {
AssetLoadResult var15 = var9.loadAssetsFromDirectory(var1.getName(), var27);
var6 |= var15.hasFailed();
}
}
} catch (Exception var19) {
var6 = true;
if (var0 != null) {
var0.failed(var5, "Asset pack " + var1.getName() + " failed to load " + var12.getSimpleName() + " - " + var19.getMessage());
}
long var14 = System.nanoTime();
long var16 = var14 - var10;
if (var8.isBeingWaitedFor(var9)) {
throw new RuntimeException(
String.format("Failed to load %s from path '%s' took %s", var12.getSimpleName(), var9.getPath(), FormatUtil.nanosToString(var16)), var19
);
}
((HytaleLogger.Api)LOGGER.at(Level.SEVERE).withCause(var19))
.log("Failed to load %s from path '%s' took %s", var12.getSimpleName(), var9.getPath(), FormatUtil.nanosToString(var16));
}
}
}
for (AssetStore var24 : var7) {
if (var1.getName().equals("Hytale:Hytale")) {
var24.validateCodecDefaults();
}
String var25 = var24.getPath();
if (var25 != null) {
Path var11 = var2.resolve(var25);
if (Files.isDirectory(var11) && !var1.isImmutable()) {
var24.addFileMonitor(var1.getName(), var11);
}
}
}
long var22 = System.nanoTime();
long var26 = var22 - var3;
LOGGER.at(Level.INFO).log("Took %s to load all assets", FormatUtil.nanosToString(var26));
if (var6 && var0 != null) {
if ("Hytale:Hytale".equals(var1.getName())) {
var0.failed(var5, "Assets " + var1.getName() + " failed to load.");
} else {
var0.failed(var5, "Mod " + var1.getName() + " failed to load. Check for mod updates or contact the mod author.");
}
}
class="kw">return var6;
}
class="kw">public class="kw">static void sendAssets(@Nonnull PacketHandler var0) {
Consumer var1 = var0::write;
Consumer var2 = var0::write;
HytaleAssetStore.SETUP_PACKET_CONSUMERS.add(var2);
try {
for (AssetStore var4 : AssetRegistry.getStoreMap().values()) {
((HytaleAssetStore)var4).sendAssets(var1);
}
} class="kw">finally {
HytaleAssetStore.SETUP_PACKET_CONSUMERS.remove(var2);
}
}
class="kw">static {
AssetRegistry.register(
((HytaleAssetStore.Builder)((HytaleAssetStore.Builder)((HytaleAssetStore.Builder)((HytaleAssetStore.Builder)((HytaleAssetStore.Builder)((HytaleAssetStore.Builder)((HytaleAssetStore.Builder)HytaleAssetStore.builder(
MusicContainer.class, new IndexedAssetMap()
)
.setPath("Audio/MusicContainers"))
.setCodec(MusicContainer.CODEC))
.setKeyFunction(MusicContainer::getId))
.setReplaceOnRemove(var0x -> new SingleTrackMusicContainer(var0x)))
.setPacketGenerator(new MusicContainerPacketGenerator())
.loadsBefore(AmbienceFX.class))
.loadsAfter(AudioCategory.class, AudioState.class))
.preLoadAssets(Collections.singletonList(MusicContainer.EMPTY)))
.build()
);
AssetRegistry.register(
((HytaleAssetStore.Builder)((HytaleAssetStore.Builder)((HytaleAssetStore.Builder)((HytaleAssetStore.Builder)((HytaleAssetStore.Builder)((HytaleAssetStore.Builder)HytaleAssetStore.builder(
AmbienceFX.class, new IndexedAssetMap()
)
.setPath("Audio/AmbienceFX"))
.setCodec(AmbienceFX.CODEC))
.setKeyFunction(AmbienceFX::getId))
.setReplaceOnRemove(AmbienceFX::new))
.setPacketGenerator(new AmbienceFXPacketGenerator())
.loadsAfter(
Weather.class,
Environment.class,
FluidFX.class,
SoundEvent.class,
BlockSoundSet.class,
TagPattern.class,
AudioCategory.class,
ReverbEffect.class,
EqualizerEffect.class,
PhysicalMaterial.class,
AudioState.class
))
.preLoadAssets(Collections.singletonList(AmbienceFX.EMPTY)))
.build()
);
AssetRegistry.register(
((HytaleAssetStore.Builder)((HytaleAssetStore.Builder)((HytaleAssetStore.Builder)((HytaleAssetStore.Builder)((HytaleAssetStore.Builder)HytaleAssetStore.builder(
BlockBoundingBoxes.class, new IndexedLookupTableAssetMap<>(BlockBoundingBoxes[]::new)
)
.setPath("Item/Block/Hitboxes"))
.setCodec(BlockBoundingBoxes.CODEC))
.setKeyFunction(BlockBoundingBoxes::getId))
.setReplaceOnRemove(BlockBoundingBoxes::getUnitBoxFor))
.setPacketGenerator(new BlockBoundingBoxesPacketGenerator())
.preLoadAssets(Collections.singletonList(BlockBoundingBoxes.UNIT_BOX)))
.build()
);
AssetRegistry.register(
((HytaleAssetStore.Builder)((HytaleAssetStore.Builder)((HytaleAssetStore.Builder)((HytaleAssetStore.Builder)((HytaleAssetStore.Builder)HytaleAssetStore.builder(
BlockSet.class, new IndexedLookupTableAssetMap<>(BlockSet[]::new)
)
.setPath("Item/Block/Sets"))
.setCodec(BlockSet.CODEC))
.setKeyFunction(BlockSet::getId))
.setReplaceOnRemove(BlockSet::new))
.setPacketGenerator(new BlockSetPacketGenerator())
.loadsBefore(Item.class))
.build()
);
AssetRegistry.register(
((HytaleAssetStore.Builder)((HytaleAssetStore.Builder)((HytaleAssetStore.Builder)((HytaleAssetStore.Builder)((HytaleAssetStore.Builder)((HytaleAssetStore.Builder)HytaleAssetStore.builder(
BlockSoundSet.class, new IndexedLookupTableAssetMap<>(BlockSoundSet[]::new)
)
.setPath("Item/Block/Sounds"))
.setCodec(BlockSoundSet.CODEC))
.setKeyFunction(BlockSoundSet::getId))
.setReplaceOnRemove(BlockSoundSet::new))
.setPacketGenerator(new BlockSoundSetPacketGenerator())
.loadsAfter(SoundEvent.class))
.preLoadAssets(Collections.singletonList(BlockSoundSet.EMPTY_BLOCK_SOUND_SET)))
.build()
);
AssetRegistry.register(
((HytaleAssetStore.Builder)((HytaleAssetStore.Builder)((HytaleAssetStore.Builder)((HytaleAssetStore.Builder)((HytaleAssetStore.Builder)HytaleAssetStore.builder(
PhysicalMaterial.class, new IndexedLookupTableAssetMap<>(PhysicalMaterial[]::new)
)
.setPath("Item/Block/PhysicalMaterials"))
.setCodec(PhysicalMaterial.CODEC))
.setKeyFunction(PhysicalMaterial::getId))
.setReplaceOnRemove(PhysicalMaterial::new))
.setPacketGenerator(new PhysicalMaterialPacketGenerator())
.preLoadAssets(Collections.singletonList(PhysicalMaterial.EMPTY_PHYSICAL_MATERIAL)))
.build()
);
AssetRegistry.register(
((HytaleAssetStore.Builder)((HytaleAssetStore.Builder)((HytaleAssetStore.Builder)((HytaleAssetStore.Builder)((HytaleAssetStore.Builder)HytaleAssetStore.builder(
ItemSoundSet.class, new IndexedLookupTableAssetMap<>(ItemSoundSet[]::new)
)
.setPath("Audio/ItemSounds"))
.setCodec(ItemSoundSet.CODEC))
.setKeyFunction(ItemSoundSet::getId))
.setReplaceOnRemove(ItemSoundSet::new))
.setPacketGenerator(new ItemSoundSetPacketGenerator())
.loadsAfter(SoundEvent.class))
.build()
);
AssetRegistry.register(
((HytaleAssetStore.Builder)((HytaleAssetStore.Builder)((HytaleAssetStore.Builder)((HytaleAssetStore.Builder)HytaleAssetStore.builder(
BlockParticleSet.class, new DefaultAssetMap()
)
.setPath("Item/Block/Particles"))
.setCodec(BlockParticleSet.CODEC))
.setKeyFunction(BlockParticleSet::getId))
.setPacketGenerator(new BlockParticleSetPacketGenerator())
.loadsAfter(ParticleSystem.class))
.build()
);
AssetRegistry.register(
((HytaleAssetStore.Builder)((HytaleAssetStore.Builder)((HytaleAssetStore.Builder)HytaleAssetStore.builder(
BlockBreakingDecal.class, new DefaultAssetMap()
)
.setPath("Item/Block/BreakingDecals"))
.setCodec(BlockBreakingDecal.CODEC))
.setKeyFunction(BlockBreakingDecal::getId))
.setPacketGenerator(new BlockBreakingDecalPacketGenerator())
.build()
);
AssetRegistry.register(
((HytaleAssetStore.Builder)((HytaleAssetStore.Builder)((HytaleAssetStore.Builder)HytaleAssetStore.builder(
Integer.class, BlockMigration.class, new DefaultAssetMap()
)
.setPath("Item/Block/Migrations"))
.setCodec(BlockMigration.CODEC))
.setKeyFunction(BlockMigration::getId))
.build()
);
BlockTypeAssetMap var0 = new BlockTypeAssetMap<>(BlockType[]::new, BlockType::getGroup);
AssetRegistry.register(
((HytaleAssetStore.Builder)((HytaleAssetStore.Builder)((HytaleAssetStore.Builder)((HytaleAssetStore.Builder)((HytaleAssetStore.Builder)((HytaleAssetStore.Builder)((HytaleAssetStore.Builder)HytaleAssetStore.builder(
BlockType.class, var0
)
.setPath("Item/Block/Blocks"))
.setCodec(BlockType.CODEC))
.setKeyFunction(BlockType::getId))
.setPacketGenerator(new BlockTypePacketGenerator())
.loadsAfter(
BlockBoundingBoxes.class,
BlockSoundSet.class,
PhysicalMaterial.class,
SoundEvent.class,
AmbienceFX.class,
BlockParticleSet.class,
BlockBreakingDecal.class,
CustomConnectedBlockTemplateAsset.class,
PrefabListAsset.class,
BlockTypeListAsset.class
))
.setNotificationItemFunction(var0x -> new ItemStack(var0x, 1).toPacket())
.setReplaceOnRemove(BlockType::getUnknownFor))
.preLoadAssets(Arrays.asList(BlockType.EMPTY, BlockType.UNKNOWN, BlockType.DEBUG_CUBE, BlockType.DEBUG_MODEL)))
.setIdProvider(Item.class))
.build()
);
AssetRegistry.register(
((HytaleAssetStore.Builder)((HytaleAssetStore.Builder)((HytaleAssetStore.Builder)((HytaleAssetStore.Builder)((HytaleAssetStore.Builder)((HytaleAssetStore.Builder)HytaleAssetStore.builder(
Fluid.class, new IndexedLookupTableAssetMap<>(Fluid[]::new)
)
.setPath("Item/Block/Fluids"))
.setCodec(Fluid.CODEC))
.setKeyFunction(Fluid::getId))
.setReplaceOnRemove(Fluid::getUnknownFor))
.setPacketGenerator(new FluidTypePacketGenerator())
.loadsAfter(FluidFX.class, BlockSoundSet.class, BlockParticleSet.class, SoundEvent.class))
.preLoadAssets(List.of(Fluid.EMPTY, Fluid.UNKNOWN)))
.build()
);
AssetRegistry.register(
((HytaleAssetStore.Builder)((HytaleAssetStore.Builder)((HytaleAssetStore.Builder)HytaleAssetStore.builder(
ItemPlayerAnimations.class, new DefaultAssetMap()
)
.setPath("Item/Animations"))
.setCodec(ItemPlayerAnimations.CODEC))
.setKeyFunction(ItemPlayerAnimations::getId))
.setPacketGenerator(new ItemPlayerAnimationsPacketGenerator())
.build()
);
AssetRegistry.register(
((HytaleAssetStore.Builder)((HytaleAssetStore.Builder)((HytaleAssetStore.Builder)((HytaleAssetStore.Builder)((HytaleAssetStore.Builder)((HytaleAssetStore.Builder)HytaleAssetStore.builder(
Environment.class, new IndexedLookupTableAssetMap<>(Environment[]::new)
)
.setPath("Environments"))
.setCodec(Environment.CODEC))
.setKeyFunction(Environment::getId))
.setReplaceOnRemove(Environment::getUnknownFor))
.setPacketGenerator(new EnvironmentPacketGenerator())
.loadsAfter(Weather.class, FluidFX.class, ParticleSystem.class))
.preLoadAssets(Collections.singletonList(Environment.UNKNOWN)))
.build()
);
AssetRegistry.register(
((HytaleAssetStore.Builder)((HytaleAssetStore.Builder)((HytaleAssetStore.Builder)((HytaleAssetStore.Builder)((HytaleAssetStore.Builder)((HytaleAssetStore.Builder)HytaleAssetStore.builder(
FluidFX.class, new IndexedLookupTableAssetMap<>(FluidFX[]::new)
)
.setPath("Item/Block/FluidFX"))
.setCodec(FluidFX.CODEC))
.setKeyFunction(FluidFX::getId))
.setReplaceOnRemove(FluidFX::getUnknownFor))
.setPacketGenerator(new FluidFXPacketGenerator())
.loadsAfter(ParticleSystem.class))
.preLoadAssets(Collections.singletonList(FluidFX.EMPTY_FLUID_FX)))
.build()
);
AssetRegistry.register(
((HytaleAssetStore.Builder)((HytaleAssetStore.Builder)((HytaleAssetStore.Builder)HytaleAssetStore.builder(
ItemCategory.class, new DefaultAssetMap(Collections.synchronizedMap(new Object2ObjectLinkedOpenHashMap()))
)
.setPath("Item/Category/CreativeLibrary"))
.setCodec(ItemCategory.CODEC))
.setKeyFunction(ItemCategory::getId))
.setPacketGenerator(new ItemCategoryPacketGenerator())
.build()
);
AssetRegistry.register(
((HytaleAssetStore.Builder)((HytaleAssetStore.Builder)((HytaleAssetStore.Builder)HytaleAssetStore.builder(
FieldcraftCategory.class, new DefaultAssetMap(Collections.synchronizedMap(new Object2ObjectLinkedOpenHashMap()))
)
.setPath("Item/Category/Fieldcraft"))
.setCodec(FieldcraftCategory.CODEC))
.setKeyFunction(FieldcraftCategory::getId))
.setPacketGenerator(new FieldcraftCategoryPacketGenerator())
.build()
);
AssetRegistry.register(
((HytaleAssetStore.Builder)((HytaleAssetStore.Builder)((HytaleAssetStore.Builder)HytaleAssetStore.builder(ItemDropList.class, new DefaultAssetMap())
.setPath("Drops"))
.setCodec(ItemDropList.CODEC))
.setKeyFunction(ItemDropList::getId))
.build()
);
AssetRegistry.register(
((HytaleAssetStore.Builder)((HytaleAssetStore.Builder)((HytaleAssetStore.Builder)HytaleAssetStore.builder(WordList.class, new DefaultAssetMap())
.setPath("WordLists"))
.setCodec(WordList.CODEC))
.setKeyFunction(WordList::getId))
.build()
);
AssetRegistry.register(
((HytaleAssetStore.Builder)((HytaleAssetStore.Builder)((HytaleAssetStore.Builder)((HytaleAssetStore.Builder)((HytaleAssetStore.Builder)HytaleAssetStore.builder(
ItemReticleConfig.class, new IndexedLookupTableAssetMap<>(ItemReticleConfig[]::new)
)
.setPath("Item/Reticles"))
.setCodec(ItemReticleConfig.CODEC))
.setKeyFunction(ItemReticleConfig::getId))
.setReplaceOnRemove(ItemReticleConfig::new))
.setPacketGenerator(new ItemReticleConfigPacketGenerator())
.preLoadAssets(Collections.singletonList(ItemReticleConfig.DEFAULT)))
.build()
);
AssetRegistry.register(
((HytaleAssetStore.Builder)((HytaleAssetStore.Builder)((HytaleAssetStore.Builder)((HytaleAssetStore.Builder)HytaleAssetStore.builder(
ItemToolSpec.class, new DefaultAssetMap()
)
.setPath("Item/Unarmed/Gathering"))
.setCodec(ItemToolSpec.CODEC))
.setKeyFunction(ItemToolSpec::getGatherType))
.loadsAfter(SoundEvent.class))
.build()
);
AssetRegistry.register(
((HytaleAssetStore.Builder)((HytaleAssetStore.Builder)((HytaleAssetStore.Builder)HytaleAssetStore.builder(PortalType.class, new DefaultAssetMap())
.setPath("PortalTypes"))
.setCodec(PortalType.CODEC))
.setKeyFunction(PortalType::getId))
.build()
);
AssetRegistry.register(
((HytaleAssetStore.Builder)((HytaleAssetStore.Builder)((HytaleAssetStore.Builder)((HytaleAssetStore.Builder)((HytaleAssetStore.Builder)HytaleAssetStore.builder(
Item.class, new DefaultAssetMap()
)
.setPath("Item/Items"))
.setCodec(Item.CODEC))
.setKeyFunction(Item::getId))
.setPacketGenerator(new ItemPacketGenerator())
.loadsAfter(
ItemCategory.class,
ItemPlayerAnimations.class,
UnarmedInteractions.class,
ResourceType.class,
BlockType.class,
EntityEffect.class,
ItemQuality.class,
ItemReticleConfig.class,
SoundEvent.class,
PortalType.class,
ItemSoundSet.class
))
.setNotificationItemFunction(var0x -> new ItemStack(var0x, 1).toPacket())
.preLoadAssets(Collections.singletonList(Item.UNKNOWN)))
.build()
);
AssetRegistry.register(
((HytaleAssetStore.Builder)((HytaleAssetStore.Builder)((HytaleAssetStore.Builder)((HytaleAssetStore.Builder)HytaleAssetStore.builder(
CraftingRecipe.class, new DefaultAssetMap()
)
.setPath("Item/Recipes"))
.setCodec(CraftingRecipe.CODEC))
.setKeyFunction(CraftingRecipe::getId))
.setPacketGenerator(new CraftingRecipePacketGenerator())
.loadsAfter(Item.class, BlockType.class))
.build()
);
AssetRegistry.register(
((HytaleAssetStore.Builder)((HytaleAssetStore.Builder)((HytaleAssetStore.Builder)((HytaleAssetStore.Builder)((HytaleAssetStore.Builder)HytaleAssetStore.builder(
ModelAsset.class, new DefaultAssetMap()
)
.setPath("Models"))
.setCodec(ModelAsset.CODEC))
.setKeyFunction(ModelAsset::getId))
.loadsAfter(ParticleSystem.class, SoundEvent.class, Trail.class))
.preLoadAssets(List.of(ModelAsset.DEBUG)))
.build()
);
AssetRegistry.register(
((HytaleAssetStore.Builder)((HytaleAssetStore.Builder)((HytaleAssetStore.Builder)((HytaleAssetStore.Builder)HytaleAssetStore.builder(
ParticleSpawner.class, new DefaultAssetMap()
)
.setPath("Particles"))
.setExtension(".particlespawner"))
.setCodec(ParticleSpawner.CODEC))
.setKeyFunction(ParticleSpawner::getId))
.setPacketGenerator(new ParticleSpawnerPacketGenerator())
.build()
);
AssetRegistry.register(
((HytaleAssetStore.Builder)((HytaleAssetStore.Builder)((HytaleAssetStore.Builder)((HytaleAssetStore.Builder)((HytaleAssetStore.Builder)HytaleAssetStore.builder(
ParticleSystem.class, new DefaultAssetMap()
)
.setPath("Particles"))
.setExtension(".particlesystem"))
.setCodec(ParticleSystem.CODEC))
.setKeyFunction(ParticleSystem::getId))
.setPacketGenerator(new ParticleSystemPacketGenerator())
.loadsAfter(ParticleSpawner.class))
.build()
);
AssetRegistry.register(
((HytaleAssetStore.Builder)((HytaleAssetStore.Builder)((HytaleAssetStore.Builder)HytaleAssetStore.builder(Trail.class, new DefaultAssetMap())
.setPath("Entity/Trails"))
.setCodec(Trail.CODEC))
.setKeyFunction(Trail::getId))
.setPacketGenerator(new TrailPacketGenerator())
.build()
);
AssetRegistry.register(
((HytaleAssetStore.Builder)((HytaleAssetStore.Builder)((HytaleAssetStore.Builder)((HytaleAssetStore.Builder)HytaleAssetStore.builder(
Projectile.class, new DefaultAssetMap()
)
.setPath("Projectiles"))
.setCodec(Projectile.CODEC))
.setKeyFunction(Projectile::getId))
.loadsAfter(SoundEvent.class, ModelAsset.class, ParticleSystem.class))
.build()
);
AssetRegistry.register(
((HytaleAssetStore.Builder)((HytaleAssetStore.Builder)((HytaleAssetStore.Builder)((HytaleAssetStore.Builder)((HytaleAssetStore.Builder)HytaleAssetStore.builder(
EntityEffect.class, new IndexedLookupTableAssetMap<>(EntityEffect[]::new)
)
.setPath("Entity/Effects"))
.setCodec(EntityEffect.CODEC))
.setKeyFunction(EntityEffect::getId))
.setReplaceOnRemove(EntityEffect::new))
.setPacketGenerator(new EntityEffectPacketGenerator())
.loadsAfter(
ModelAsset.class, ParticleSystem.class, EntityStatType.class, ModelVFX.class, DamageCause.class, CameraEffect.class, SoundEvent.class
))
.build()
);
AssetRegistry.register(
((HytaleAssetStore.Builder)((HytaleAssetStore.Builder)((HytaleAssetStore.Builder)((HytaleAssetStore.Builder)HytaleAssetStore.builder(
ModelVFX.class, new IndexedLookupTableAssetMap<>(ModelVFX[]::new)
)
.setPath("Entity/ModelVFX"))
.setCodec(ModelVFX.CODEC))
.setKeyFunction(ModelVFX::getId))
.setReplaceOnRemove(ModelVFX::new))
.setPacketGenerator(new ModelVFXPacketGenerator())
.build()
);
AssetRegistry.register(
((HytaleAssetStore.Builder)((HytaleAssetStore.Builder)((HytaleAssetStore.Builder)((HytaleAssetStore.Builder)HytaleAssetStore.builder(
GameModeType.class, new DefaultAssetMap()
)
.setPath("Entity/GameMode"))
.setCodec(GameModeType.CODEC))
.setKeyFunction(GameModeType::getId))
.loadsAfter(Interaction.class))
.build()
);
AssetRegistry.register(
((HytaleAssetStore.Builder)((HytaleAssetStore.Builder)((HytaleAssetStore.Builder)HytaleAssetStore.builder(ResourceType.class, new DefaultAssetMap())
.setPath("Item/ResourceTypes"))
.setCodec(ResourceType.CODEC))
.setKeyFunction(ResourceType::getId))
.setPacketGenerator(new ResourceTypePacketGenerator())
.build()
);
AssetRegistry.register(
((HytaleAssetStore.Builder)((HytaleAssetStore.Builder)((HytaleAssetStore.Builder)((HytaleAssetStore.Builder)((HytaleAssetStore.Builder)((HytaleAssetStore.Builder)HytaleAssetStore.builder(
Weather.class, new IndexedLookupTableAssetMap<>(Weather[]::new)
)
.setPath("Weathers"))
.setCodec(Weather.CODEC))
.setKeyFunction(Weather::getId))
.setReplaceOnRemove(Weather::new))
.setPacketGenerator(new WeatherPacketGenerator())
.loadsAfter(ParticleSystem.class))
.preLoadAssets(Collections.singletonList(Weather.UNKNOWN)))
.build()
);
AssetRegistry.register(
((HytaleAssetStore.Builder)((HytaleAssetStore.Builder)((HytaleAssetStore.Builder)((HytaleAssetStore.Builder)HytaleAssetStore.builder(
GameplayConfig.class, new DefaultAssetMap()
)
.setPath("GameplayConfigs"))
.setCodec(GameplayConfig.CODEC))
.setKeyFunction(GameplayConfig::getId))
.loadsAfter(
Item.class,
SoundEvent.class,
SoundSet.class,
BlockType.class,
EntityEffect.class,
HitboxCollisionConfig.class,
DamageCause.class,
RepulsionConfig.class,
ParticleSystem.class,
MusicContainer.class
))
.build()
);
AssetRegistry.register(
((HytaleAssetStore.Builder)((HytaleAssetStore.Builder)((HytaleAssetStore.Builder)((HytaleAssetStore.Builder)((HytaleAssetStore.Builder)((HytaleAssetStore.Builder)HytaleAssetStore.builder(
SoundEvent.class, new IndexedLookupTableAssetMap<>(SoundEvent[]::new)
)
.setPath("Audio/SoundEvents"))
.setCodec(SoundEvent.CODEC))
.setKeyFunction(SoundEvent::getId))
.setReplaceOnRemove(SoundEvent::new))
.setPacketGenerator(new SoundEventPacketGenerator())
.preLoadAssets(Collections.singletonList(SoundEvent.EMPTY_SOUND_EVENT)))
.loadsAfter(AudioCategory.class, AudioState.class))
.build()
);
AssetRegistry.register(
((HytaleAssetStore.Builder)((HytaleAssetStore.Builder)((HytaleAssetStore.Builder)((HytaleAssetStore.Builder)((HytaleAssetStore.Builder)((HytaleAssetStore.Builder)HytaleAssetStore.builder(
SoundSet.class, new IndexedLookupTableAssetMap<>(SoundSet[]::new)
)
.setPath("Audio/SoundSets"))
.setCodec(SoundSet.CODEC))
.setKeyFunction(SoundSet::getId))
.setReplaceOnRemove(SoundSet::new))
.setPacketGenerator(new SoundSetPacketGenerator())
.loadsAfter(SoundEvent.class))
.preLoadAssets(Collections.singletonList(SoundSet.EMPTY_SOUND_SET)))
.build()
);
AssetRegistry.register(
((HytaleAssetStore.Builder)((HytaleAssetStore.Builder)((HytaleAssetStore.Builder)((HytaleAssetStore.Builder)((HytaleAssetStore.Builder)HytaleAssetStore.builder(
AudioState.class, new IndexedLookupTableAssetMap<>(AudioState[]::new)
)
.setPath("Audio/AudioStates"))
.setCodec(AudioState.CODEC))
.setKeyFunction(AudioState::getId))
.setReplaceOnRemove(AudioState::new))
.setPacketGenerator(new AudioStatePacketGenerator())
.preLoadAssets(Collections.singletonList(AudioState.EMPTY_AUDIO_STATE)))
.build()
);
AssetRegistry.register(
((HytaleAssetStore.Builder)((HytaleAssetStore.Builder)((HytaleAssetStore.Builder)((HytaleAssetStore.Builder)((HytaleAssetStore.Builder)((HytaleAssetStore.Builder)HytaleAssetStore.builder(
AudioCategory.class, new IndexedLookupTableAssetMap<>(AudioCategory[]::new)
)
.setPath("Audio/AudioCategories"))
.setCodec(AudioCategory.CODEC))
.setKeyFunction(AudioCategory::getId))
.setReplaceOnRemove(AudioCategory::new))
.setPacketGenerator(new AudioCategoryPacketGenerator())
.preLoadAssets(AudioCategory.PRELOAD_ORDER))
.loadsAfter(AudioState.class))
.build()
);
AssetRegistry.register(
((HytaleAssetStore.Builder)((HytaleAssetStore.Builder)((HytaleAssetStore.Builder)((HytaleAssetStore.Builder)((HytaleAssetStore.Builder)HytaleAssetStore.builder(
ReverbEffect.class, new IndexedLookupTableAssetMap<>(ReverbEffect[]::new)
)
.setPath("Audio/Reverb"))
.setCodec(ReverbEffect.CODEC))
.setKeyFunction(ReverbEffect::getId))
.setReplaceOnRemove(ReverbEffect::new))
.setPacketGenerator(new ReverbEffectPacketGenerator())
.preLoadAssets(Collections.singletonList(ReverbEffect.EMPTY_REVERB_EFFECT)))
.build()
);
AssetRegistry.register(
((HytaleAssetStore.Builder)((HytaleAssetStore.Builder)((HytaleAssetStore.Builder)((HytaleAssetStore.Builder)((HytaleAssetStore.Builder)HytaleAssetStore.builder(
EqualizerEffect.class, new IndexedLookupTableAssetMap<>(EqualizerEffect[]::new)
)
.setPath("Audio/EQ"))
.setCodec(EqualizerEffect.CODEC))
.setKeyFunction(EqualizerEffect::getId))
.setReplaceOnRemove(EqualizerEffect::new))
.setPacketGenerator(new EqualizerEffectPacketGenerator())
.preLoadAssets(Collections.singletonList(EqualizerEffect.EMPTY_EQUALIZER_EFFECT)))
.build()
);
AssetRegistry.register(
((HytaleAssetStore.Builder)((HytaleAssetStore.Builder)((HytaleAssetStore.Builder)((HytaleAssetStore.Builder)HytaleAssetStore.builder(
ResponseCurve.class, new IndexedLookupTableAssetMap<>(ResponseCurve[]::new)
)
.setPath("ResponseCurves"))
.setCodec(ResponseCurve.CODEC))
.setKeyFunction(ResponseCurve::getId))
.setReplaceOnRemove(ExponentialResponseCurve::new))
.build()
);
AssetRegistry.register(
((HytaleAssetStore.Builder)((HytaleAssetStore.Builder)((HytaleAssetStore.Builder)((HytaleAssetStore.Builder)((HytaleAssetStore.Builder)((HytaleAssetStore.Builder)HytaleAssetStore.builder(
ItemQuality.class, new IndexedLookupTableAssetMap<>(ItemQuality[]::new)
)
.setPath("Item/Qualities"))
.setCodec(ItemQuality.CODEC))
.setKeyFunction(ItemQuality::getId))
.setPacketGenerator(new ItemQualityPacketGenerator())
.setReplaceOnRemove(ItemQuality::new))
.loadsAfter(ParticleSystem.class))
.preLoadAssets(Collections.singletonList(ItemQuality.DEFAULT_ITEM_QUALITY)))
.build()
);
AssetRegistry.register(
((HytaleAssetStore.Builder)((HytaleAssetStore.Builder)((HytaleAssetStore.Builder)((HytaleAssetStore.Builder)((HytaleAssetStore.Builder)HytaleAssetStore.builder(
DamageCause.class, new IndexedLookupTableAssetMap<>(DamageCause[]::new)
)
.setPath("Entity/Damage"))
.setCodec(DamageCause.CODEC))
.setKeyFunction(DamageCause::getId))
.setReplaceOnRemove(DamageCause::new))
.loadsBefore(Item.class, Interaction.class))
.build()
);
AssetRegistry.register(
((HytaleAssetStore.Builder)((HytaleAssetStore.Builder)((HytaleAssetStore.Builder)((HytaleAssetStore.Builder)HytaleAssetStore.builder(
ProjectileConfig.class, new DefaultAssetMap()
)
.setPath("ProjectileConfigs"))
.setCodec(ProjectileConfig.CODEC))
.setKeyFunction(ProjectileConfig::getId))
.loadsAfter(Interaction.class, SoundEvent.class, ModelAsset.class, ParticleSystem.class))
.setPacketGenerator(new ProjectileConfigPacketGenerator())
.build()
);
AssetRegistry.register(
((HytaleAssetStore.Builder)((HytaleAssetStore.Builder)((HytaleAssetStore.Builder)((HytaleAssetStore.Builder)HytaleAssetStore.builder(
BlockGroup.class, new DefaultAssetMap()
)
.setPath("Item/Groups"))
.setCodec(BlockGroup.CODEC))
.setKeyFunction(BlockGroup::getId))
.loadsAfter(BlockType.class, Item.class))
.setPacketGenerator(new BlockGroupPacketGenerator())
.build()
);
AssetRegistry.register(
((HytaleAssetStore.Builder)((HytaleAssetStore.Builder)((HytaleAssetStore.Builder)((HytaleAssetStore.Builder)HytaleAssetStore.builder(
BuilderToolItemReferenceAsset.class, new DefaultAssetMap()
)
.setPath("Item/PlayerToolsMenuConfig"))
.setCodec(BuilderToolItemReferenceAsset.CODEC))
.setKeyFunction(BuilderToolItemReferenceAsset::getId))
.loadsAfter(BlockType.class, Item.class))
.build()
);
AssetRegistry.register(
((HytaleAssetStore.Builder)((HytaleAssetStore.Builder)((HytaleAssetStore.Builder)HytaleAssetStore.builder(
BlockTypeListAsset.class, new DefaultAssetMap()
)
.setPath("BlockTypeList"))
.setKeyFunction(BlockTypeListAsset::getId))
.setCodec(BlockTypeListAsset.CODEC))
.build()
);
AssetRegistry.register(
((HytaleAssetStore.Builder)((HytaleAssetStore.Builder)((HytaleAssetStore.Builder)HytaleAssetStore.builder(PrefabListAsset.class, new DefaultAssetMap())
.setPath("PrefabList"))
.setKeyFunction(PrefabListAsset::getId))
.setCodec(PrefabListAsset.CODEC))
.build()
);
AssetRegistry.register(
((HytaleAssetStore.Builder)((HytaleAssetStore.Builder)((HytaleAssetStore.Builder)((HytaleAssetStore.Builder)((HytaleAssetStore.Builder)HytaleAssetStore.builder(
CameraEffect.class, new IndexedLookupTableAssetMap<>(CameraEffect[]::new)
)
.loadsBefore(GameplayConfig.class, Interaction.class))
.setPath("Camera/CameraEffect"))
.setCodec(CameraEffect.CODEC))
.setKeyFunction(CameraEffect::getId))
.setReplaceOnRemove(CameraEffect.MissingCameraEffect::new))
.build()
);
AssetRegistry.register(
((HytaleAssetStore.Builder)((HytaleAssetStore.Builder)((HytaleAssetStore.Builder)((HytaleAssetStore.Builder)HytaleAssetStore.builder(
TagPattern.class, new IndexedLookupTableAssetMap<>(TagPattern[]::new)
)
.setPath("TagPatterns"))
.setCodec(TagPattern.CODEC))
.setKeyFunction(TagPattern::getId))
.setReplaceOnRemove(EqualsTagOp::new))
.setPacketGenerator(new TagPatternPacketGenerator())
.build()
);
TagPattern.CODEC.register("Equals", EqualsTagOp.class, EqualsTagOp.CODEC);
TagPattern.CODEC.register("And", AndPatternOp.class, AndPatternOp.CODEC);
TagPattern.CODEC.register("Or", OrPatternOp.class, OrPatternOp.CODEC);
TagPattern.CODEC.register("Not", NotPatternOp.class, NotPatternOp.CODEC);
}
}