AssetSpecificFunctionality class
Пакет: com.hypixel.hytale.builtin.asseteditor
Файл: com/hypixel/hytale/builtin/asseteditor/AssetSpecificFunctionality.java
Поля (109)
| Модификаторы | Тип | Имя |
|---|---|---|
final |
Message |
NO_GAME_CLIENT_MESSAGE |
|
|
break |
|
private boolean |
keepPreview |
|
|
return |
|
|
return |
|
PlayerRef |
var1 |
|
Map |
var1 |
|
Map |
var1 |
|
AssetPath |
var1 |
|
AssetPath |
var1 |
|
AssetPath |
var1 |
|
AssetSpecificFunctionality.PlayerPreviewData |
var1 |
|
EditorClient |
var1 |
|
CustomModelTexture[] |
var1 |
|
ObjectArrayList |
var1 |
|
ObjectArrayList |
var1 |
|
ItemModule |
var1 |
|
AssetEditorPlugin |
var1 |
|
String |
var1 |
|
Model |
var1 |
|
AssetEditorUpdateModelPreview |
var10 |
|
AssetEditorUpdateModelPreview |
var10 |
|
String |
var10 |
|
UpdateEditorTimeOverride |
var10 |
|
Item |
var10 |
|
JsonUpdateCommand |
var11 |
|
boolean |
var11 |
|
JsonUpdateCommand[] |
var12 |
|
AssetUpdateQuery.RebuildCache |
var2 |
|
PlayerRef |
var2 |
|
PlayerRef |
var2 |
|
AssetPath |
var2 |
|
String |
var2 |
|
PlayerRef |
var2 |
|
String |
var2 |
|
String |
var2 |
|
EditorClient |
var2 |
|
Ref |
var2 |
|
String |
var2 |
|
AssetIconProperties |
var2 |
|
|
var2 |
|
Ref |
var3 |
|
Message |
var3 |
|
Ref |
var3 |
|
String |
var3 |
|
BlockTypeTextures |
var3 |
|
Ref |
var3 |
|
PlayerRef |
var3 |
|
Store |
var3 |
|
PlayerRef |
var3 |
|
PlayerRef |
var3 |
|
ModelAsset |
var3 |
|
AssetIconProperties |
var3 |
|
Store |
var4 |
|
Store |
var4 |
|
String |
var4 |
|
Item |
var4 |
|
BlockTypeTextures[] |
var4 |
|
Store |
var4 |
|
String |
var4 |
|
UUID |
var4 |
|
World |
var4 |
|
AssetSpecificFunctionality.PlayerPreviewData |
var4 |
|
AssetSpecificFunctionality.PlayerPreviewData |
var4 |
|
Model |
var4 |
|
AssetEditorPreviewCameraSettings |
var4 |
|
World |
var5 |
|
World |
var5 |
|
Item |
var5 |
|
BlockTypeAssetMap |
var5 |
|
World |
var5 |
|
ModelAsset |
var5 |
|
Set |
var5 |
|
Player |
var5 |
|
AssetStore |
var5 |
|
AssetEditorUpdateModelPreview |
var5 |
|
Vector2f |
var5 |
|
Path |
var6 |
|
ItemArmor |
var6 |
|
BlockType |
var6 |
|
com.hypixel.hytale.server.core.asset.type.model.config.Model |
var6 |
|
AssetPath |
var6 |
|
WorldTimeResource |
var6 |
|
String |
var6 |
|
AssetPath |
var6 |
|
Vector3f |
var6 |
|
AssetTypeHandler |
var7 |
|
Path |
var7 |
|
CombinedItemContainer |
var7 |
|
String |
var7 |
|
Message |
var7 |
|
AssetTypeHandler |
var7 |
|
PacketHandler |
var7 |
|
int |
var7 |
|
String |
var7 |
|
BlockType |
var7 |
|
String |
var8 |
|
AssetTypeHandler |
var8 |
|
InventoryComponent.Armor |
var8 |
|
AssetPack |
var8 |
|
AssetEditorUpdateSecondsPerGameDay |
var8 |
|
String |
var8 |
|
Model |
var8 |
|
Model |
var9 |
|
String |
var9 |
|
Path |
var9 |
|
Instant |
var9 |
|
boolean |
var9 |
|
private Path |
weatherAssetPath |
Методы (52)
| Модификаторы | Возврат | Сигнатура |
|---|---|---|
|
public |
PlayerPreviewDatapublic PlayerPreviewData() |
static |
void |
equipItemvoid equipItem(@Nonnull Path var0, @Nonnull EditorClient var1) |
static |
AssetEditorUpdateModelPreview |
getModelPreviewPacketForItemAssetEditorUpdateModelPreview getModelPreviewPacketForItem(@Nonnull AssetPath var0, @Nullable Item var1) |
static |
void |
handleWeatherOrEnvironmentSelectedvoid handleWeatherOrEnvironmentSelected(@Nonnull EditorClient var0, @Nonnull Path var1, boolean var2) |
static |
void |
handleWeatherOrEnvironmentUnselectedvoid handleWeatherOrEnvironmentUnselected(@Nonnull EditorClient var0, @Nonnull Path var1, boolean var2) |
|
|
if if(var1 == null) |
|
|
if if(var10 != null) |
|
|
if if(var2 != null) |
|
|
if if(var4 != null) |
|
|
if if(var5 == null) |
|
|
if if(var6 != null) |
|
|
if if(var8 != null) |
|
|
if if(var6 == null) |
|
|
if if(var7 != null) |
|
|
if if(var10 == null) |
|
|
if if(var1 != null && var1.length > 0) |
|
|
if if(var4 != null && var4.length > 0) |
|
|
if if(var2 != null) |
|
|
if if(var5 == null) |
|
|
if if(var3 != null) |
|
|
if if(var3 != null) |
|
|
if if(var3 != null) |
|
|
if if(!var4.keepPreview) |
|
|
if if(var2) |
|
|
if if(var3 != null) |
|
|
if if(!var4.keepPreview) |
|
|
if if(var2) |
|
|
if if(var3 != null) |
|
|
if if(var10 != null) |
|
|
if if(var5 != null) |
|
|
if if(var1 == null) |
|
|
if if(var2 == null) |
|
|
if if(var7 != null) |
static |
void |
onClientDisconnectedvoid onClientDisconnected(@Nonnull AssetEditorClientDisconnectEvent var0) |
static |
void |
onEquipItemvoid onEquipItem(@Nonnull AssetEditorActivateButtonEvent var0) |
static |
void |
onItemAssetCreatedvoid onItemAssetCreated(@Nonnull AssetEditorAssetCreatedEvent var0) |
static |
void |
onItemAssetLoadedvoid onItemAssetLoaded(@Nonnull LoadedAssetsEvent<String, Item, ?> var0) |
static |
void |
onModelAssetCreatedvoid onModelAssetCreated(@Nonnull AssetEditorAssetCreatedEvent var0) |
static |
void |
onModelAssetLoadedvoid onModelAssetLoaded(@Nonnull LoadedAssetsEvent<String, ModelAsset, ?> var0) |
static |
void |
onRecomputeTextureColorvoid onRecomputeTextureColor(@Nonnull AssetEditorActivateButtonEvent var0) |
static |
void |
onRequestBlockGroupsDataSetvoid onRequestBlockGroupsDataSet(@Nonnull AssetEditorFetchAutoCompleteDataEvent var0) |
static |
void |
onRequestItemCategoriesDataSetvoid onRequestItemCategoriesDataSet(@Nonnull AssetEditorRequestDataSetEvent var0) |
static |
void |
onRequestLocalizationKeyDataSetvoid onRequestLocalizationKeyDataSet(@Nonnull AssetEditorFetchAutoCompleteDataEvent var0) |
static |
void |
onResetModelvoid onResetModel(@Nonnull AssetEditorActivateButtonEvent var0) |
static |
void |
onSelectAssetvoid onSelectAsset(@Nonnull AssetEditorSelectAssetEvent var0) |
static |
void |
onUpdateWeatherPreviewLockEventvoid onUpdateWeatherPreviewLockEvent(@Nonnull AssetEditorUpdateWeatherPreviewLockEvent var0) |
static |
void |
onUseModelvoid onUseModel(@Nonnull AssetEditorActivateButtonEvent var0) |
static |
void |
recomputeTextureColorvoid recomputeTextureColor(@Nonnull Path var0, @Nonnull EditorClient var1) |
static |
void |
resetTimeSettingsvoid resetTimeSettings(@Nonnull EditorClient var0, @Nonnull PlayerRef var1) |
abstract |
|
resetTimeSettings resetTimeSettings(var0, var3) |
static |
void |
setupvoid setup() |
static |
void |
useModelvoid useModel(@Nonnull Path var0, @Nonnull EditorClient var1) |
Исходный код
Показать/скрыть
class="kw">package com.hypixel.hytale.builtin.asseteditor;
class="kw">import com.hypixel.hytale.assetstore.AssetPack;
class="kw">import com.hypixel.hytale.assetstore.AssetStore;
class="kw">import com.hypixel.hytale.assetstore.AssetUpdateQuery;
class="kw">import com.hypixel.hytale.assetstore.event.LoadedAssetsEvent;
class="kw">import com.hypixel.hytale.assetstore.map.BlockTypeAssetMap;
class="kw">import com.hypixel.hytale.assetstore.map.IndexedLookupTableAssetMap;
class="kw">import com.hypixel.hytale.builtin.asseteditor.assettypehandler.AssetStoreTypeHandler;
class="kw">import com.hypixel.hytale.builtin.asseteditor.assettypehandler.AssetTypeHandler;
class="kw">import com.hypixel.hytale.builtin.asseteditor.event.AssetEditorActivateButtonEvent;
class="kw">import com.hypixel.hytale.builtin.asseteditor.event.AssetEditorAssetCreatedEvent;
class="kw">import com.hypixel.hytale.builtin.asseteditor.event.AssetEditorClientDisconnectEvent;
class="kw">import com.hypixel.hytale.builtin.asseteditor.event.AssetEditorFetchAutoCompleteDataEvent;
class="kw">import com.hypixel.hytale.builtin.asseteditor.event.AssetEditorRequestDataSetEvent;
class="kw">import com.hypixel.hytale.builtin.asseteditor.event.AssetEditorSelectAssetEvent;
class="kw">import com.hypixel.hytale.builtin.asseteditor.event.AssetEditorUpdateWeatherPreviewLockEvent;
class="kw">import com.hypixel.hytale.component.Ref;
class="kw">import com.hypixel.hytale.component.Store;
class="kw">import com.hypixel.hytale.event.EventRegistry;
class="kw">import com.hypixel.hytale.logger.HytaleLogger;
class="kw">import com.hypixel.hytale.protocol.InstantData;
class="kw">import com.hypixel.hytale.protocol.Model;
class="kw">import com.hypixel.hytale.protocol.packets.asseteditor.AssetEditorJsonAssetUpdated;
class="kw">import com.hypixel.hytale.protocol.packets.asseteditor.AssetEditorPopupNotificationType;
class="kw">import com.hypixel.hytale.protocol.packets.asseteditor.AssetEditorPreviewCameraSettings;
class="kw">import com.hypixel.hytale.protocol.packets.asseteditor.AssetEditorUpdateModelPreview;
class="kw">import com.hypixel.hytale.protocol.packets.asseteditor.AssetEditorUpdateSecondsPerGameDay;
class="kw">import com.hypixel.hytale.protocol.packets.asseteditor.JsonUpdateCommand;
class="kw">import com.hypixel.hytale.protocol.packets.asseteditor.JsonUpdateType;
class="kw">import com.hypixel.hytale.protocol.packets.world.ClearEditorTimeOverride;
class="kw">import com.hypixel.hytale.protocol.packets.world.UpdateEditorTimeOverride;
class="kw">import com.hypixel.hytale.protocol.packets.world.UpdateEditorWeatherOverride;
class="kw">import com.hypixel.hytale.server.core.Message;
class="kw">import com.hypixel.hytale.server.core.asset.AssetModule;
class="kw">import com.hypixel.hytale.server.core.asset.type.blocktype.config.BlockType;
class="kw">import com.hypixel.hytale.server.core.asset.type.blocktype.config.BlockTypeTextures;
class="kw">import com.hypixel.hytale.server.core.asset.type.blocktype.config.CustomModelTexture;
class="kw">import com.hypixel.hytale.server.core.asset.type.environment.config.Environment;
class="kw">import com.hypixel.hytale.server.core.asset.type.item.config.AssetIconProperties;
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.ItemArmor;
class="kw">import com.hypixel.hytale.server.core.asset.type.model.config.ModelAsset;
class="kw">import com.hypixel.hytale.server.core.asset.type.weather.config.Weather;
class="kw">import com.hypixel.hytale.server.core.asset.util.ColorParseUtil;
class="kw">import com.hypixel.hytale.server.core.entity.entities.Player;
class="kw">import com.hypixel.hytale.server.core.inventory.InventoryComponent;
class="kw">import com.hypixel.hytale.server.core.inventory.ItemStack;
class="kw">import com.hypixel.hytale.server.core.inventory.container.CombinedItemContainer;
class="kw">import com.hypixel.hytale.server.core.io.PacketHandler;
class="kw">import com.hypixel.hytale.server.core.modules.entity.component.ModelComponent;
class="kw">import com.hypixel.hytale.server.core.modules.entity.player.PlayerSkinComponent;
class="kw">import com.hypixel.hytale.server.core.modules.i18n.I18nModule;
class="kw">import com.hypixel.hytale.server.core.modules.item.ItemModule;
class="kw">import com.hypixel.hytale.server.core.modules.time.WorldTimeResource;
class="kw">import com.hypixel.hytale.server.core.universe.PlayerRef;
class="kw">import com.hypixel.hytale.server.core.universe.world.PlayerUtil;
class="kw">import com.hypixel.hytale.server.core.universe.world.World;
class="kw">import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
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.time.Instant;
class="kw">import java.util.Locale;
class="kw">import java.util.Map;
class="kw">import java.util.Set;
class="kw">import java.util.UUID;
class="kw">import java.util.Map.Entry;
class="kw">import java.util.concurrent.ConcurrentHashMap;
class="kw">import java.util.logging.Level;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;
class="kw">import org.joml.Vector2f;
class="kw">import org.joml.Vector3f;
@Deprecated
class="kw">public class AssetSpecificFunctionality {
class="kw">private class="kw">static class="kw">final Message NO_GAME_CLIENT_MESSAGE = Message.translation("server.assetEditor.messages.noGameClient");
class="kw">private class="kw">static class="kw">final ClearEditorTimeOverride CLEAR_EDITOR_TIME_OVERRIDE_PACKET = new ClearEditorTimeOverride();
class="kw">private class="kw">static class="kw">final UpdateEditorWeatherOverride CLEAR_WEATHER_OVERRIDE_PACKET = new UpdateEditorWeatherOverride(0);
class="kw">private class="kw">static class="kw">final String MODEL_ASSET_ID = ModelAsset.class.getSimpleName();
class="kw">private class="kw">static class="kw">final String ITEM_ASSET_ID = Item.class.getSimpleName();
class="kw">private class="kw">static class="kw">final String WEATHER_ASSET_ID = Weather.class.getSimpleName();
class="kw">private class="kw">static class="kw">final String ENVIRONMENT_ASSET_ID = Environment.class.getSimpleName();
class="kw">private class="kw">static class="kw">final Map<UUID, AssetSpecificFunctionality.PlayerPreviewData> activeWeatherPreviewMapping = new ConcurrentHashMap<>();
class="kw">private class="kw">static class="kw">final AssetEditorPreviewCameraSettings DEFAULT_PREVIEW_CAMERA_SETTINGS = new AssetEditorPreviewCameraSettings(
0.25F, new Vector3f(0.0F, 75.0F, 0.0F), new Vector3f(0.0F, (float)Math.toRadians(45.0), 0.0F)
);
class="kw">public AssetSpecificFunctionality() {
}
class="kw">public class="kw">static void setup() {
getEventRegistry().register(LoadedAssetsEvent.class, ModelAsset.class, AssetSpecificFunctionality::onModelAssetLoaded);
getEventRegistry().register(LoadedAssetsEvent.class, Item.class, AssetSpecificFunctionality::onItemAssetLoaded);
getEventRegistry().register(AssetEditorActivateButtonEvent.class, "EquipItem", AssetSpecificFunctionality::onEquipItem);
getEventRegistry().register(AssetEditorActivateButtonEvent.class, "RecomputeTextureColor", AssetSpecificFunctionality::onRecomputeTextureColor);
getEventRegistry().register(AssetEditorActivateButtonEvent.class, "UseModel", AssetSpecificFunctionality::onUseModel);
getEventRegistry().register(AssetEditorActivateButtonEvent.class, "ResetModel", AssetSpecificFunctionality::onResetModel);
getEventRegistry().register(AssetEditorUpdateWeatherPreviewLockEvent.class, AssetSpecificFunctionality::onUpdateWeatherPreviewLockEvent);
getEventRegistry().register(AssetEditorAssetCreatedEvent.class, ITEM_ASSET_ID, AssetSpecificFunctionality::onItemAssetCreated);
getEventRegistry().register(AssetEditorAssetCreatedEvent.class, MODEL_ASSET_ID, AssetSpecificFunctionality::onModelAssetCreated);
getEventRegistry().register(AssetEditorFetchAutoCompleteDataEvent.class, "BlockGroups", AssetSpecificFunctionality::onRequestBlockGroupsDataSet);
getEventRegistry().register(AssetEditorFetchAutoCompleteDataEvent.class, "LocalizationKeys", AssetSpecificFunctionality::onRequestLocalizationKeyDataSet);
getEventRegistry().register(AssetEditorRequestDataSetEvent.class, "ItemCategories", AssetSpecificFunctionality::onRequestItemCategoriesDataSet);
getEventRegistry().registerGlobal(AssetEditorSelectAssetEvent.class, AssetSpecificFunctionality::onSelectAsset);
getEventRegistry().registerGlobal(AssetEditorClientDisconnectEvent.class, AssetSpecificFunctionality::onClientDisconnected);
}
@Nullable
class="kw">private class="kw">static PlayerRef tryGetPlayer(@Nonnull EditorClient var0) {
PlayerRef var1 = var0.tryGetPlayer();
if (var1 == null) {
var0.sendPopupNotification(AssetEditorPopupNotificationType.Warning, NO_GAME_CLIENT_MESSAGE);
class="kw">return null;
} else {
class="kw">return var1;
}
}
class="kw">private class="kw">static void onModelAssetLoaded(@Nonnull LoadedAssetsEvent<String, ModelAsset, ?> var0) {
if (!var0.isInitial()) {
Map var1 = AssetEditorPlugin.get().getClientOpenAssetPathMapping();
if (!var1.isEmpty()) {
for (ModelAsset var3 : var0.getLoadedAssets().values()) {
for (Entry var5 : var1.entrySet()) {
Path var6 = var5.getValue().path();
if (!var6.toString().isEmpty()) {
AssetTypeHandler var7 = AssetEditorPlugin.get().getAssetTypeRegistry().getAssetTypeHandlerForPath(var6);
if (var7 class="kw">instanceof AssetStoreTypeHandler && ((AssetStoreTypeHandler)var7).getAssetStore().getAssetClass().equals(ModelAsset.class)) {
String var8 = ModelAsset.getAssetStore().decodeFilePathKey(var6);
if (var3.getId().equals(var8)) {
Model var9 = com.hypixel.hytale.server.core.asset.type.model.config.Model.createUnitScaleModel(var3).toPacket();
AssetEditorUpdateModelPreview var10 = new AssetEditorUpdateModelPreview(
var5.getValue().toPacket(), var9, null, DEFAULT_PREVIEW_CAMERA_SETTINGS
);
var5.getKey().getPacketHandler().write(var10);
}
}
}
}
}
}
}
}
class="kw">private class="kw">static void onItemAssetLoaded(@Nonnull LoadedAssetsEvent<String, Item, ?> var0) {
if (!var0.isInitial()) {
Map var1 = AssetEditorPlugin.get().getClientOpenAssetPathMapping();
if (!var1.isEmpty()) {
AssetUpdateQuery.RebuildCache var2 = var0.getQuery().getRebuildCache();
if (var2.isBlockTextures() || var2.isModelTextures() || var2.isItemIcons() || var2.isModels()) {
for (Item var4 : var0.getLoadedAssets().values()) {
for (Entry var6 : var1.entrySet()) {
Path var7 = var6.getValue().path();
if (!var7.toString().isEmpty()) {
AssetTypeHandler var8 = AssetEditorPlugin.get().getAssetTypeRegistry().getAssetTypeHandlerForPath(var7);
if (var8 class="kw">instanceof AssetStoreTypeHandler && ((AssetStoreTypeHandler)var8).getAssetStore().getAssetClass().equals(Item.class)) {
String var9 = Item.getAssetStore().decodeFilePathKey(var7);
if (var4.getId().equals(var9)) {
AssetEditorUpdateModelPreview var10 = getModelPreviewPacketForItem(var6.getValue(), var4);
if (var10 != null) {
var6.getKey().getPacketHandler().write(var10);
}
}
}
}
}
}
}
}
}
}
class="kw">private class="kw">static void onItemAssetCreated(@Nonnull AssetEditorAssetCreatedEvent var0) {
if ("EquipItem".equals(var0.getButtonId())) {
equipItem(var0.getAssetPath(), var0.getEditorClient());
}
}
class="kw">private class="kw">static void onModelAssetCreated(@Nonnull AssetEditorAssetCreatedEvent var0) {
if ("UseModel".equals(var0.getButtonId())) {
useModel(var0.getAssetPath(), var0.getEditorClient());
}
}
class="kw">private class="kw">static void onEquipItem(@Nonnull AssetEditorActivateButtonEvent var0) {
AssetPath var1 = AssetEditorPlugin.get().getOpenAssetPath(var0.getEditorClient());
if (var1 != null && !var1.path().toString().isEmpty()) {
equipItem(var1.path(), var0.getEditorClient());
}
}
class="kw">private class="kw">static void onRecomputeTextureColor(@Nonnull AssetEditorActivateButtonEvent var0) {
AssetPath var1 = AssetEditorPlugin.get().getOpenAssetPath(var0.getEditorClient());
if (var1 != null && !var1.path().toString().isEmpty()) {
recomputeTextureColor(var1.path(), var0.getEditorClient());
}
}
class="kw">private class="kw">static void onUseModel(@Nonnull AssetEditorActivateButtonEvent var0) {
AssetPath var1 = AssetEditorPlugin.get().getOpenAssetPath(var0.getEditorClient());
if (var1 != null && !var1.path().toString().isEmpty()) {
useModel(var1.path(), var0.getEditorClient());
}
}
class="kw">private class="kw">static void onUpdateWeatherPreviewLockEvent(@Nonnull AssetEditorUpdateWeatherPreviewLockEvent var0) {
AssetSpecificFunctionality.PlayerPreviewData var1 = activeWeatherPreviewMapping.computeIfAbsent(
var0.getEditorClient().getUuid(), var0x -> new AssetSpecificFunctionality.PlayerPreviewData()
);
var1.keepPreview = var0.isLocked();
}
class="kw">private class="kw">static void onResetModel(@Nonnull AssetEditorActivateButtonEvent var0) {
EditorClient var1 = var0.getEditorClient();
PlayerRef var2 = tryGetPlayer(var1);
if (var2 != null) {
Ref var3 = var2.getReference();
if (var3 != null && var3.isValid()) {
Store var4 = var3.getStore();
World var5 = var4.getExternalData().getWorld();
var5.execute(() -> {
if (!var4.getArchetype(var3).contains(PlayerSkinComponent.getComponentType())) {
Message var3 = Message.translation("server.assetEditor.messages.model.noAuthSkinForPlayer").param("model", "Player");
var1.sendPopupNotification(AssetEditorPopupNotificationType.Error, var3);
} else {
PlayerUtil.resetPlayerModel(var3, var4);
}
});
}
}
}
class="kw">private class="kw">static void equipItem(@Nonnull Path var0, @Nonnull EditorClient var1) {
PlayerRef var2 = tryGetPlayer(var1);
if (var2 != null && var2.isValid()) {
Ref var3 = var2.getReference();
if (var3 != null && var3.isValid()) {
Store var4 = var3.getStore();
World var5 = var4.getExternalData().getWorld();
var5.execute(
() -> {
String var4 = Item.getAssetStore().decodeFilePathKey(var0);
if (var4 != null) {
Item var5 = Item.getAssetMap().getAsset(var4);
if (var5 == null) {
var1.sendPopupNotification(
AssetEditorPopupNotificationType.Error, Message.translation("server.assetEditor.messages.unknownItem").param("id", var4)
);
} else {
ItemArmor var6 = var5.getArmor();
if (var6 != null) {
InventoryComponent.Armor var8 = var4.getComponent(var3, InventoryComponent.Armor.getComponentType());
if (var8 != null) {
var8.getInventory().setItemStackForSlot((short)var6.getArmorSlot().ordinal(), new ItemStack(var4));
}
} else {
CombinedItemContainer var7 = InventoryComponent.getCombined(var4, var3, InventoryComponent.HOTBAR_FIRST);
var7.addItemStack(new ItemStack(var4));
}
}
}
}
);
}
}
}
class="kw">private class="kw">static void recomputeTextureColor(@Nonnull Path var0, @Nonnull EditorClient var1) {
AssetPath var2 = AssetEditorPlugin.get().getOpenAssetPath(var1);
String var3 = Item.getAssetStore().decodeFilePathKey(var0);
Item var4 = Item.getAssetMap().getAsset(var3);
if (var4 != null && var4.getBlockId() != null) {
BlockTypeAssetMap var5 = BlockType.getAssetMap();
BlockType var6 = var5.getAsset(var4.getBlockId());
if (var6 == null) {
var1.sendPopupNotification(
AssetEditorPopupNotificationType.Error, Message.translation("server.assetEditor.messages.recomputeTextureColor.notBlockType")
);
} else {
String var7 = extractTexturePath(var6);
if (var7 != null) {
AssetPack var8 = AssetModule.get().getAssetPacks().get(0);
Path var9 = var8.getRoot().resolve("Common").resolve(var7);
if (Files.isRegularFile(var9)) {
try {
String var10 = ColorParseUtil.computeDominantColor(var9);
if (var10 == null) {
class="kw">return;
}
JsonUpdateCommand var11 = new JsonUpdateCommand();
var11.type = JsonUpdateType.SetProperty;
var11.path = new String[]{"BlockType", "TextureComputedColor"};
var11.value = "{\"value\": \"" + var10 + "\"}";
JsonUpdateCommand[] var12 = new JsonUpdateCommand[]{var11};
AssetEditorPlugin.get().handleJsonAssetUpdate(var1, var2, "Item", -1, var12, 0);
var1.getPacketHandler().write(new AssetEditorJsonAssetUpdated(var2.toPacket(), var12));
var1.sendPopupNotification(
AssetEditorPopupNotificationType.Success,
Message.translation("server.assetEditor.messages.recomputeTextureColor.success").param("color", var10)
);
} catch (Exception var13) {
((HytaleLogger.Api)HytaleLogger.getLogger().at(Level.WARNING).withCause(var13)).log("Failed to compute texture color");
}
}
}
}
} else {
var1.sendPopupNotification(
AssetEditorPopupNotificationType.Error, Message.translation("server.assetEditor.messages.recomputeTextureColor.notBlockType")
);
}
}
@Nullable
class="kw">private class="kw">static String extractTexturePath(@Nonnull BlockType var0) {
CustomModelTexture[] var1 = var0.getCustomModelTexture();
if (var1 != null && var1.length > 0) {
String var2 = var1[0].getTexture();
if (var2 != null && !var2.isEmpty()) {
class="kw">return var2;
}
}
BlockTypeTextures[] var4 = var0.getTextures();
if (var4 != null && var4.length > 0) {
BlockTypeTextures var3 = var4[0];
if (var3.getUp() != null) {
class="kw">return var3.getUp();
}
if (var3.getNorth() != null) {
class="kw">return var3.getNorth();
}
if (var3.getDown() != null) {
class="kw">return var3.getDown();
}
}
class="kw">return null;
}
class="kw">private class="kw">static void useModel(@Nonnull Path var0, @Nonnull EditorClient var1) {
PlayerRef var2 = tryGetPlayer(var1);
if (var2 != null) {
Ref var3 = var2.getReference();
if (var3 != null && var3.isValid()) {
Store var4 = var3.getStore();
World var5 = var4.getExternalData().getWorld();
var5.execute(
() -> {
String var4 = ModelAsset.getAssetStore().decodeFilePathKey(var0);
ModelAsset var5 = ModelAsset.getAssetMap().getAsset(var4);
if (var5 == null) {
Message var7 = Message.translation("server.assetEditor.messages.unknownModel").param("id", var4);
var1.sendPopupNotification(AssetEditorPopupNotificationType.Error, var7);
} else {
com.hypixel.hytale.server.core.asset.type.model.config.Model var6 = com.hypixel.hytale.server.core.asset.type.model.config.Model.createRandomScaleModel(
var5
);
var4.putComponent(var3, ModelComponent.getComponentType(), new ModelComponent(var6));
}
}
);
}
}
}
class="kw">private class="kw">static void onRequestLocalizationKeyDataSet(@Nonnull AssetEditorFetchAutoCompleteDataEvent var0) {
ObjectArrayList var1 = new ObjectArrayList();
String var2 = var0.getQuery().toLowerCase(Locale.ROOT);
for (String var5 : I18nModule.get().getMessages("en-US").keySet()) {
if (var5.toLowerCase(Locale.ROOT).startsWith(var2)) {
var1.add(var5);
}
if (var1.size() >= 25) {
break;
}
}
var0.setResults((String[])var1.toArray(String[]::new));
}
class="kw">private class="kw">static void onRequestBlockGroupsDataSet(@Nonnull AssetEditorFetchAutoCompleteDataEvent var0) {
ObjectArrayList var1 = new ObjectArrayList();
String var2 = var0.getQuery().toLowerCase(Locale.ROOT);
for (String var6 : BlockType.getAssetMap().getGroups()) {
if (var6 != null && !var6.trim().isEmpty() && (var2.isEmpty() || var6.toLowerCase(Locale.ROOT).contains(var2))) {
var1.add(var6);
}
}
var0.setResults((String[])var1.toArray(String[]::new));
}
class="kw">private class="kw">static void onRequestItemCategoriesDataSet(@Nonnull AssetEditorRequestDataSetEvent var0) {
ItemModule var1 = ItemModule.get();
if (var1.isDisabled()) {
HytaleLogger.getLogger().at(Level.WARNING).log("Received ItemCategories dataset request but ItemModule is disabled!");
} else {
var0.setResults(var1.getFlatItemCategoryList().toArray(String[]::new));
}
}
class="kw">private class="kw">static void onClientDisconnected(@Nonnull AssetEditorClientDisconnectEvent var0) {
AssetEditorPlugin var1 = AssetEditorPlugin.get();
EditorClient var2 = var0.getEditorClient();
PlayerRef var3 = var2.tryGetPlayer();
UUID var4 = var2.getUuid();
Set var5 = var1.getEditorClients(var4);
if (var5 != null && var5.size() != 1) {
AssetPath var6 = var1.getOpenAssetPath(var2);
if (var6 != null && !var6.equals(AssetPath.EMPTY_PATH)) {
AssetTypeHandler var7 = var1.getAssetTypeRegistry().getAssetTypeHandlerForPath(var6.path());
if (var7 != null && Weather.class.getSimpleName().equals(var7.getConfig().id)) {
activeWeatherPreviewMapping.remove(var4);
if (var3 != null) {
var3.getPacketHandler().write(new UpdateEditorWeatherOverride(0));
}
}
}
} else {
if (var3 != null) {
var3.getPacketHandler().write(CLEAR_EDITOR_TIME_OVERRIDE_PACKET);
var3.getPacketHandler().write(CLEAR_WEATHER_OVERRIDE_PACKET);
}
activeWeatherPreviewMapping.remove(var4);
}
}
class="kw">static void resetTimeSettings(@Nonnull EditorClient var0, @Nonnull PlayerRef var1) {
Ref var2 = var1.getReference();
if (var2 != null && var2.isValid()) {
Store var3 = var2.getStore();
World var4 = var3.getExternalData().getWorld();
Player var5 = var1.getComponent(Player.getComponentType());
assert var5 != null;
WorldTimeResource var6 = var3.getResource(WorldTimeResource.getResourceType());
PacketHandler var7 = var0.getPacketHandler();
AssetEditorUpdateSecondsPerGameDay var8 = new AssetEditorUpdateSecondsPerGameDay(var4.getDaytimeDurationSeconds(), var4.getNighttimeDurationSeconds());
var7.write(var8);
Instant var9 = var6.getGameTime();
UpdateEditorTimeOverride var10 = new UpdateEditorTimeOverride(
new InstantData(var9.getEpochSecond(), var9.getNano()), var4.getWorldConfig().isGameTimePaused()
);
var7.write(var10);
var1.getPacketHandler().write(CLEAR_EDITOR_TIME_OVERRIDE_PACKET);
}
}
class="kw">static void handleWeatherOrEnvironmentUnselected(@Nonnull EditorClient var0, @Nonnull Path var1, boolean var2) {
PlayerRef var3 = var0.tryGetPlayer();
if (var3 != null) {
AssetSpecificFunctionality.PlayerPreviewData var4 = activeWeatherPreviewMapping.computeIfAbsent(
var0.getUuid(), var0x -> new AssetSpecificFunctionality.PlayerPreviewData()
);
if (!var4.keepPreview) {
resetTimeSettings(var0, var3);
if (var2) {
if (!var1.equals(var4.weatherAssetPath)) {
class="kw">return;
}
var4.weatherAssetPath = null;
var3.getPacketHandler().write(CLEAR_WEATHER_OVERRIDE_PACKET);
}
}
}
}
class="kw">static void handleWeatherOrEnvironmentSelected(@Nonnull EditorClient var0, @Nonnull Path var1, boolean var2) {
PlayerRef var3 = var0.tryGetPlayer();
if (var3 != null) {
AssetSpecificFunctionality.PlayerPreviewData var4 = activeWeatherPreviewMapping.computeIfAbsent(
var0.getUuid(), var0x -> new AssetSpecificFunctionality.PlayerPreviewData()
);
if (!var4.keepPreview) {
resetTimeSettings(var0, var3);
}
if (var2) {
AssetStore var5 = Weather.getAssetStore();
String var6 = var5.decodeFilePathKey(var1);
int var7 = ((IndexedLookupTableAssetMap)var5.getAssetMap()).getIndex(var6);
var4.weatherAssetPath = var1;
var3.getPacketHandler().write(new UpdateEditorWeatherOverride(var7));
}
}
}
class="kw">private class="kw">static void onSelectAsset(@Nonnull AssetEditorSelectAssetEvent var0) {
String var1 = var0.getAssetType();
if (MODEL_ASSET_ID.equals(var1)) {
String var2 = ModelAsset.getAssetStore().decodeFilePathKey(var0.getAssetFilePath().path());
ModelAsset var3 = ModelAsset.getAssetMap().getAsset(var2);
if (var3 != null) {
Model var4 = com.hypixel.hytale.server.core.asset.type.model.config.Model.createUnitScaleModel(var3).toPacket();
var0.getEditorClient()
.getPacketHandler()
.write(new AssetEditorUpdateModelPreview(var0.getAssetFilePath().toPacket(), var4, null, DEFAULT_PREVIEW_CAMERA_SETTINGS));
}
}
if (ITEM_ASSET_ID.equals(var1)) {
AssetPath var6 = var0.getAssetFilePath();
String var8 = Item.getAssetStore().decodeFilePathKey(var6.path());
Item var10 = Item.getAssetMap().getAsset(var8);
if (var10 != null) {
AssetEditorUpdateModelPreview var5 = getModelPreviewPacketForItem(var6, var10);
if (var5 != null) {
var0.getEditorClient().getPacketHandler().write(var5);
}
}
}
String var7 = var0.getPreviousAssetType();
boolean var9 = WEATHER_ASSET_ID.equals(var7);
if (var9 || ENVIRONMENT_ASSET_ID.equals(var7)) {
handleWeatherOrEnvironmentUnselected(var0.getEditorClient(), var0.getPreviousAssetFilePath().path(), var9);
}
boolean var11 = WEATHER_ASSET_ID.equals(var1);
if (var11 || ENVIRONMENT_ASSET_ID.equals(var1)) {
handleWeatherOrEnvironmentSelected(var0.getEditorClient(), var0.getAssetFilePath().path(), var11);
}
}
class="kw">public class="kw">static AssetEditorUpdateModelPreview getModelPreviewPacketForItem(@Nonnull AssetPath var0, @Nullable Item var1) {
if (var1 == null) {
class="kw">return null;
}
AssetIconProperties var2 = var1.getIconProperties();
AssetIconProperties var3 = getDefaultItemIconProperties(var1);
if (var2 == null) {
var2 = var3;
}
AssetEditorPreviewCameraSettings var4 = new AssetEditorPreviewCameraSettings();
var4.modelScale = var2.getScale() * var1.getScale();
Vector2f var5 = var2.getTranslation() != null ? var2.getTranslation() : var3.getTranslation();
var4.cameraPosition = new Vector3f(-var5.x, -var5.y, 0.0F);
Vector3f var6 = var2.getRotation() != null ? var2.getRotation() : var3.getRotation();
var4.cameraOrientation = new Vector3f((float)(-Math.toRadians(var6.x)), (float)(-Math.toRadians(var6.y)), (float)(-Math.toRadians(var6.z)));
if (var1.getModel() == null && var1.getBlockId() != null) {
BlockType var7 = (BlockType)((BlockTypeAssetMap)BlockType.getAssetStore().getAssetMap()).getAsset(var1.getBlockId());
if (var7 != null) {
var4.modelScale = var4.modelScale * var7.getCustomModelScale();
class="kw">return new AssetEditorUpdateModelPreview(var0.toPacket(), null, var7.toPacket(), var4);
}
}
Model var8 = convertToModelPacket(var1);
class="kw">return new AssetEditorUpdateModelPreview(var0.toPacket(), var8, null, var4);
}
@Nonnull
class="kw">public class="kw">static AssetIconProperties getDefaultItemIconProperties(@Nonnull Item var0) {
if (var0.getWeapon() != null) {
class="kw">return new AssetIconProperties(0.37F, new Vector2f(-24.6F, -24.6F), new Vector3f(45.0F, 90.0F, 0.0F));
}
if (var0.getTool() != null) {
class="kw">return new AssetIconProperties(0.5F, new Vector2f(-17.4F, -12.0F), new Vector3f(45.0F, 270.0F, 0.0F));
}
if (var0.getArmor() != null) {
class="kw">return class="kw">switch (var0.getArmor().getArmorSlot()) {
case Chest -> new AssetIconProperties(0.5F, new Vector2f(0.0F, -5.0F), new Vector3f(22.5F, 45.0F, 22.5F));
case Head -> new AssetIconProperties(0.5F, new Vector2f(0.0F, -3.0F), new Vector3f(22.5F, 45.0F, 22.5F));
case Legs -> new AssetIconProperties(0.5F, new Vector2f(0.0F, -25.8F), new Vector3f(22.5F, 45.0F, 22.5F));
case Hands -> new AssetIconProperties(0.92F, new Vector2f(0.0F, -10.8F), new Vector3f(22.5F, 45.0F, 22.5F));
};
} else {
class="kw">return new AssetIconProperties(0.58823F, new Vector2f(0.0F, -13.5F), new Vector3f(22.5F, 45.0F, 22.5F));
}
}
@Nonnull
class="kw">public class="kw">static Model convertToModelPacket(@Nonnull Item var0) {
Model var1 = new Model();
var1.path = var0.getModel();
var1.texture = var0.getTexture();
class="kw">return var1;
}
@Nonnull
class="kw">private class="kw">static EventRegistry getEventRegistry() {
class="kw">return AssetEditorPlugin.get().getEventRegistry();
}
class="kw">public class="kw">static class PlayerPreviewData {
@Nullable
class="kw">private Path weatherAssetPath;
class="kw">private boolean keepPreview;
class="kw">public PlayerPreviewData() {
}
}
}