package com.hypixel.hytale.builtin.adventure.shop;
import com.hypixel.hytale.assetstore.map.DefaultAssetMap;
import com.hypixel.hytale.builtin.adventure.shop.barter.BarterShopAsset;
import com.hypixel.hytale.builtin.adventure.shop.barter.BarterShopState;
import com.hypixel.hytale.server.core.asset.HytaleAssetStore;
import com.hypixel.hytale.server.core.asset.type.item.config.Item;
import com.hypixel.hytale.server.core.entity.entities.player.pages.choices.ChoiceElement;
import com.hypixel.hytale.server.core.entity.entities.player.pages.choices.ChoiceInteraction;
import com.hypixel.hytale.server.core.modules.interaction.interaction.config.server.OpenCustomUIInteraction;
import com.hypixel.hytale.server.core.plugin.JavaPlugin;
import com.hypixel.hytale.server.core.plugin.JavaPluginInit;
import java.util.logging.Level;
import javax.annotation.Nonnull;
public class ShopPlugin extends JavaPlugin {
protected static ShopPlugin instance;
public static ShopPlugin get() {
return instance;
}
public ShopPlugin(@Nonnull JavaPluginInit init) {
super(init);
}
protected void setup() {
instance = this;
this.getAssetRegistry().register(((HytaleAssetStore.Builder)((HytaleAssetStore.Builder)((HytaleAssetStore.Builder)((HytaleAssetStore.Builder)HytaleAssetStore.builder(ShopAsset.class, new DefaultAssetMap()).setPath("Shops")).setCodec(ShopAsset.CODEC)).setKeyFunction(ShopAsset::getId)).loadsAfter(new Class[]{Item.class})).build());
this.getAssetRegistry().register(((HytaleAssetStore.Builder)((HytaleAssetStore.Builder)((HytaleAssetStore.Builder)((HytaleAssetStore.Builder)HytaleAssetStore.builder(BarterShopAsset.class, new DefaultAssetMap()).setPath("BarterShops")).setCodec(BarterShopAsset.CODEC)).setKeyFunction(BarterShopAsset::getId)).loadsAfter(new Class[]{Item.class})).build());
this.getCodecRegistry(ChoiceElement.CODEC).register("ShopElement", ShopElement.class, ShopElement.CODEC);
this.getCodecRegistry(ChoiceInteraction.CODEC).register("GiveItem", GiveItemInteraction.class, GiveItemInteraction.CODEC);
this.getCodecRegistry(OpenCustomUIInteraction.PAGE_CODEC).register("Shop", ShopPageSupplier.class, ShopPageSupplier.CODEC);
}
protected void start() {
BarterShopState.initialize(this.getDataDirectory());
this.getLogger().at(Level.INFO).log("Barter shop state initialized");
}
protected void shutdown() {
BarterShopState.shutdown();
this.getLogger().at(Level.INFO).log("Barter shop state saved");
}
}