Search in sources :

Example 1 with SellingItem

use of com.almuradev.almura.feature.store.listing.SellingItem in project Almura by AlmuraDev.

the class ServerStoreManager method loadSellingItems.

/**
 * Selling Items
 */
private void loadSellingItems(final Store store) {
    checkNotNull(store);
    this.logger.info("Querying selling items for store '{}' ({}), please wait...", store.getName(), store.getId());
    final List<SellingItem> items = new ArrayList<>();
    try (final DSLContext context = this.databaseManager.createContext(true)) {
        final Results results = StoreQueries.createFetchSellingItemsAndDataFor(store.getId(), false).build(context).keepStatement(false).fetchMany();
        results.forEach(result -> items.addAll(this.parseSellingItemsFrom(result)));
        store.clearSellingItems();
        items.sort(Comparator.comparingInt(SellingItem::getIndex));
        store.putSellingItems(items.isEmpty() ? null : items);
        this.logger.info("Loaded [{}] selling item(s) for store '{}' ({}).", items.size(), store.getName(), store.getId());
    } catch (final SQLException e) {
        e.printStackTrace();
    }
}
Also used : Results(org.jooq.Results) SQLException(java.sql.SQLException) ArrayList(java.util.ArrayList) DSLContext(org.jooq.DSLContext) BasicSellingItem(com.almuradev.almura.feature.store.basic.listing.BasicSellingItem) SellingItem(com.almuradev.almura.feature.store.listing.SellingItem) StoreSellingItem(com.almuradev.generated.store.tables.StoreSellingItem)

Example 2 with SellingItem

use of com.almuradev.almura.feature.store.listing.SellingItem in project Almura by AlmuraDev.

the class ServerStoreManager method handleModifySellingItems.

public void handleModifySellingItems(final Player player, final String id, final List<ServerboundModifyItemsPacket.ModifyCandidate> candidates) {
    checkNotNull(player);
    checkNotNull(id);
    checkNotNull(candidates);
    if (!player.hasPermission(Almura.ID + ".store.admin")) {
        this.notificationManager.sendPopupNotification(player, Text.of(TextColors.RED, "Store"), Text.of("You do not have permission " + "to modify listed items!"), 5);
        return;
    }
    final Store store = this.getStore(id).orElse(null);
    if (store == null) {
        this.logger.error("Player '{}' attempted to modify selling items for store '{}' but the server has no knowledge of it. Syncing " + "store registry...", player.getName(), id);
        this.syncStoreRegistryTo(player);
        return;
    }
    final List<SellingItem> sellingItems = store.getSellingItems();
    if (sellingItems.isEmpty()) {
        this.logger.error("Player '{}' attempted to modify selling items for store '{}' but the server knows of no " + " selling items for it. This could be a de-sync or an exploit.", player.getName(), store.getId());
        this.network.sendTo(player, new ClientboundListItemsResponsePacket(store.getId(), StoreItemSegmentType.SELLING, sellingItems));
        return;
    }
    final List<ServerboundModifyItemsPacket.ModifyCandidate> copyCandidates = Lists.newArrayList(candidates);
    final Iterator<ServerboundModifyItemsPacket.ModifyCandidate> iter = copyCandidates.iterator();
    while (iter.hasNext()) {
        final ServerboundModifyItemsPacket.ModifyCandidate candidate = iter.next();
        final SellingItem found = sellingItems.stream().filter(v -> v.getRecord() == candidate.recNo).findAny().orElse(null);
        if (found == null) {
            this.logger.error("Player '{}' attempted to modify selling item '{}' for store '{}' but the server knows of no knowledge of it. " + "This could be a de-sync or an exploit. Discarding...", player.getName(), candidate.recNo, store.getId());
            iter.remove();
        }
    }
    this.scheduler.createTaskBuilder().async().execute(() -> {
        try (final DSLContext context = this.databaseManager.createContext(true)) {
            final List<Query> toUpdate = new ArrayList<>();
            for (final ServerboundModifyItemsPacket.ModifyCandidate candidate : copyCandidates) {
                toUpdate.add(StoreQueries.createUpdateSellingItem(candidate.recNo, candidate.quantity, candidate.index, candidate.price).build(context));
            }
            context.batch(toUpdate).execute();
            final Results results = StoreQueries.createFetchSellingItemsAndDataFor(store.getId(), false).build(context).fetchMany();
            final List<SellingItem> finalSellingItems = new ArrayList<>();
            results.forEach(result -> finalSellingItems.addAll(this.parseSellingItemsFrom(result)));
            this.scheduler.createTaskBuilder().execute(() -> {
                store.putSellingItems(finalSellingItems);
                this.network.sendToAll(new ClientboundListItemsResponsePacket(store.getId(), StoreItemSegmentType.SELLING, finalSellingItems));
            }).submit(this.container);
        } catch (final SQLException e) {
            e.printStackTrace();
        }
    }).submit(this.container);
}
Also used : IItemHandler(net.minecraftforge.items.IItemHandler) FilterRegistry(com.almuradev.almura.shared.feature.filter.FilterRegistry) Results(org.jooq.Results) Item(net.minecraft.item.Item) Inject(com.google.inject.Inject) StoreQueries(com.almuradev.almura.feature.store.database.StoreQueries) BuyingItem(com.almuradev.almura.feature.store.listing.BuyingItem) EntityPlayerMP(net.minecraft.entity.player.EntityPlayerMP) DatabaseManager(com.almuradev.almura.shared.database.DatabaseManager) BigDecimal(java.math.BigDecimal) Map(java.util.Map) DSLContext(org.jooq.DSLContext) StoreBuyingItem(com.almuradev.generated.store.tables.StoreBuyingItem) BasicBuyingItem(com.almuradev.almura.feature.store.basic.listing.BasicBuyingItem) NBTTagCompound(net.minecraft.nbt.NBTTagCompound) EconomyService(org.spongepowered.api.service.economy.EconomyService) VanillaStack(com.almuradev.almura.shared.item.VanillaStack) Timestamp(java.sql.Timestamp) ClientboundListItemsResponsePacket(com.almuradev.almura.feature.store.network.ClientboundListItemsResponsePacket) FeatureConstants(com.almuradev.almura.shared.feature.FeatureConstants) Sponge(org.spongepowered.api.Sponge) DatabaseQueue(com.almuradev.almura.shared.database.DatabaseQueue) ServiceManager(org.spongepowered.api.service.ServiceManager) NetworkConfig(com.almuradev.almura.shared.network.NetworkConfig) UUID(java.util.UUID) Result(org.jooq.Result) Instant(java.time.Instant) StoreSellingItemDataRecord(com.almuradev.generated.store.tables.records.StoreSellingItemDataRecord) Collectors(java.util.stream.Collectors) Preconditions.checkState(com.google.common.base.Preconditions.checkState) ClientConnectionEvent(org.spongepowered.api.event.network.ClientConnectionEvent) ChannelBinding(org.spongepowered.api.network.ChannelBinding) List(java.util.List) Stream(java.util.stream.Stream) StoreSellingItemData(com.almuradev.generated.store.tables.StoreSellingItemData) ClientboundStoreGuiResponsePacket(com.almuradev.almura.feature.store.network.ClientboundStoreGuiResponsePacket) CapabilityItemHandler(net.minecraftforge.items.CapabilityItemHandler) StoreSellingItemRecord(com.almuradev.generated.store.tables.records.StoreSellingItemRecord) ChannelId(org.spongepowered.api.network.ChannelId) IngameFeature(com.almuradev.almura.shared.feature.IngameFeature) Optional(java.util.Optional) Player(org.spongepowered.api.entity.living.player.Player) Query(org.jooq.Query) Almura(com.almuradev.almura.Almura) Getter(org.spongepowered.api.event.filter.Getter) StoreBuyingItemData(com.almuradev.generated.store.tables.StoreBuyingItemData) BasicSellingItem(com.almuradev.almura.feature.store.basic.listing.BasicSellingItem) GameStartingServerEvent(org.spongepowered.api.event.game.state.GameStartingServerEvent) HashMap(java.util.HashMap) ServerboundListItemsRequestPacket(com.almuradev.almura.feature.store.network.ServerboundListItemsRequestPacket) Singleton(javax.inject.Singleton) ArrayList(java.util.ArrayList) ItemStack(net.minecraft.item.ItemStack) SQLException(java.sql.SQLException) Lists(com.google.common.collect.Lists) ItemHandlerHelper(net.minecraftforge.items.ItemHandlerHelper) Text(org.spongepowered.api.text.Text) StoreBuyingItemRecord(com.almuradev.generated.store.tables.records.StoreBuyingItemRecord) BasicStore(com.almuradev.almura.feature.store.basic.BasicStore) SellingItem(com.almuradev.almura.feature.store.listing.SellingItem) StoreItem(com.almuradev.almura.feature.store.listing.StoreItem) StoreSellingItem(com.almuradev.generated.store.tables.StoreSellingItem) GameState(org.spongepowered.api.GameState) CauseStackManager(org.spongepowered.api.event.CauseStackManager) PluginContainer(org.spongepowered.api.plugin.PluginContainer) TextColors(org.spongepowered.api.text.format.TextColors) Nullable(javax.annotation.Nullable) Record(org.jooq.Record) StoreBuyingItemDataRecord(com.almuradev.generated.store.tables.records.StoreBuyingItemDataRecord) Logger(org.slf4j.Logger) Iterator(java.util.Iterator) Preconditions.checkNotNull(com.google.common.base.Preconditions.checkNotNull) Scheduler(org.spongepowered.api.scheduler.Scheduler) ServerNotificationManager(com.almuradev.almura.feature.notification.ServerNotificationManager) EnumFacing(net.minecraft.util.EnumFacing) IOException(java.io.IOException) SerializationUtil(com.almuradev.almura.shared.util.SerializationUtil) Witness(com.almuradev.core.event.Witness) ClientboundStoresRegistryPacket(com.almuradev.almura.feature.store.network.ClientboundStoresRegistryPacket) ForgeRegistries(net.minecraftforge.fml.common.registry.ForgeRegistries) ResourceLocation(net.minecraft.util.ResourceLocation) Listener(org.spongepowered.api.event.Listener) UniqueAccount(org.spongepowered.api.service.economy.account.UniqueAccount) Comparator(java.util.Comparator) ServerboundModifyItemsPacket(com.almuradev.almura.feature.store.network.ServerboundModifyItemsPacket) ServerboundModifyItemsPacket(com.almuradev.almura.feature.store.network.ServerboundModifyItemsPacket) SQLException(java.sql.SQLException) BasicStore(com.almuradev.almura.feature.store.basic.BasicStore) ClientboundListItemsResponsePacket(com.almuradev.almura.feature.store.network.ClientboundListItemsResponsePacket) DSLContext(org.jooq.DSLContext) BasicSellingItem(com.almuradev.almura.feature.store.basic.listing.BasicSellingItem) SellingItem(com.almuradev.almura.feature.store.listing.SellingItem) StoreSellingItem(com.almuradev.generated.store.tables.StoreSellingItem) Results(org.jooq.Results) List(java.util.List) ArrayList(java.util.ArrayList)

Example 3 with SellingItem

use of com.almuradev.almura.feature.store.listing.SellingItem in project Almura by AlmuraDev.

the class StoreScreen method updateAdminControls.

private void updateAdminControls() {
    if (!this.isAdmin) {
        return;
    }
    final ItemStack selectedItem = this.adminItemList.getSelectedItem();
    this.buttonAdminList.setEnabled(selectedItem != null);
    final Optional<BuyingItem> buyingItem = this.store.getBuyingItems().stream().filter(i -> StoreScreen.isStackEqualIgnoreSize(i.asRealStack(), selectedItem)).findAny();
    final Optional<SellingItem> sellingItem = this.store.getSellingItems().stream().filter(i -> StoreScreen.isStackEqualIgnoreSize(i.asRealStack(), selectedItem)).findAny();
    this.buttonAdminUnlist.setEnabled(buyingItem.isPresent() || sellingItem.isPresent());
    final String status = (buyingItem.isPresent() || sellingItem.isPresent()) ? "modify" : "list";
    this.buttonAdminList.setText(I18n.format("almura.feature.common.button." + status));
    this.adminItemList.getComponents().stream().filter(i -> i instanceof AdminItemComponent).forEach(i -> ((AdminItemComponent) i).update());
    this.adminListTotalLabel.setText(TextFormatting.WHITE + I18n.format("almura.feature.common.text.total") + ": " + this.adminItemList.getItems().size());
}
Also used : Arrays(java.util.Arrays) UIComponent(net.malisis.core.client.gui.component.UIComponent) BuyingItem(com.almuradev.almura.feature.store.listing.BuyingItem) I18n(net.minecraft.client.resources.I18n) BigDecimal(java.math.BigDecimal) UISaneTooltip(com.almuradev.almura.shared.client.ui.component.UISaneTooltip) MalisisGui(net.malisis.core.client.gui.MalisisGui) BasicTextBox(net.malisis.core.client.gui.component.interaction.BasicTextBox) Side(net.minecraftforge.fml.relauncher.Side) Map(java.util.Map) BasicList(net.malisis.core.client.gui.component.container.BasicList) BasicContainer(net.malisis.core.client.gui.component.container.BasicContainer) NonNullList(net.minecraft.util.NonNullList) FontColors(net.malisis.core.util.FontColors) FeatureConstants(com.almuradev.almura.shared.feature.FeatureConstants) StoreModule(com.almuradev.almura.feature.store.StoreModule) UIButtonBuilder(net.malisis.core.client.gui.component.interaction.button.builder.UIButtonBuilder) ClientStoreManager(com.almuradev.almura.feature.store.client.ClientStoreManager) UITooltip(net.malisis.core.client.gui.component.decoration.UITooltip) Collectors(java.util.stream.Collectors) List(java.util.List) EntityPlayer(net.minecraft.entity.player.EntityPlayer) UIImage(net.malisis.core.client.gui.component.decoration.UIImage) Optional(java.util.Optional) SortType(com.almuradev.almura.feature.SortType) BasicLine(net.malisis.core.client.gui.component.decoration.BasicLine) HashMap(java.util.HashMap) ITooltipFlag(net.minecraft.client.util.ITooltipFlag) FeatureSortTypes(com.almuradev.almura.FeatureSortTypes) ArrayList(java.util.ArrayList) LinkedHashMap(java.util.LinkedHashMap) Inject(javax.inject.Inject) ItemStack(net.minecraft.item.ItemStack) Minecraft(net.minecraft.client.Minecraft) Anchor(net.malisis.core.client.gui.Anchor) SellingItem(com.almuradev.almura.feature.store.listing.SellingItem) StoreItem(com.almuradev.almura.feature.store.listing.StoreItem) Subscribe(com.google.common.eventbus.Subscribe) BasicScreen(net.malisis.core.client.gui.BasicScreen) UIExpandingLabel(com.almuradev.almura.shared.client.ui.component.UIExpandingLabel) CreativeTabs(net.minecraft.creativetab.CreativeTabs) SideOnly(net.minecraftforge.fml.relauncher.SideOnly) UISelect(net.malisis.core.client.gui.component.interaction.UISelect) ComponentEvent(net.malisis.core.client.gui.event.ComponentEvent) Nullable(javax.annotation.Nullable) UIButton(net.malisis.core.client.gui.component.interaction.UIButton) UITextField(net.malisis.core.client.gui.component.interaction.UITextField) UILabel(net.malisis.core.client.gui.component.decoration.UILabel) TextFormatting(net.minecraft.util.text.TextFormatting) Store(com.almuradev.almura.feature.store.Store) SideType(com.almuradev.almura.feature.store.SideType) BasicForm(net.malisis.core.client.gui.component.container.BasicForm) FontRenderer(net.minecraft.client.gui.FontRenderer) ForgeRegistries(net.minecraftforge.fml.common.registry.ForgeRegistries) Comparator(java.util.Comparator) FontOptions(net.malisis.core.renderer.font.FontOptions) BuyingItem(com.almuradev.almura.feature.store.listing.BuyingItem) ItemStack(net.minecraft.item.ItemStack) SellingItem(com.almuradev.almura.feature.store.listing.SellingItem)

Example 4 with SellingItem

use of com.almuradev.almura.feature.store.listing.SellingItem in project Almura by AlmuraDev.

the class StoreScreen method listOrModify.

private void listOrModify() {
    final ItemStack selectedItem = this.adminItemList.getSelectedItem();
    if (selectedItem == null) {
        return;
    }
    final Optional<BuyingItem> buyingItem = this.store.getBuyingItems().stream().filter(i -> StoreScreen.isStackEqualIgnoreSize(i.asRealStack(), selectedItem)).findAny();
    final Optional<SellingItem> sellingItem = this.store.getSellingItems().stream().filter(i -> StoreScreen.isStackEqualIgnoreSize(i.asRealStack(), selectedItem)).findAny();
    if (buyingItem.isPresent() || sellingItem.isPresent()) {
        new StoreListScreen(this, this.store, buyingItem.orElse(null), sellingItem.orElse(null), selectedItem).display();
    } else {
        new StoreListScreen(this, this.store, selectedItem).display();
    }
}
Also used : Arrays(java.util.Arrays) UIComponent(net.malisis.core.client.gui.component.UIComponent) BuyingItem(com.almuradev.almura.feature.store.listing.BuyingItem) I18n(net.minecraft.client.resources.I18n) BigDecimal(java.math.BigDecimal) UISaneTooltip(com.almuradev.almura.shared.client.ui.component.UISaneTooltip) MalisisGui(net.malisis.core.client.gui.MalisisGui) BasicTextBox(net.malisis.core.client.gui.component.interaction.BasicTextBox) Side(net.minecraftforge.fml.relauncher.Side) Map(java.util.Map) BasicList(net.malisis.core.client.gui.component.container.BasicList) BasicContainer(net.malisis.core.client.gui.component.container.BasicContainer) NonNullList(net.minecraft.util.NonNullList) FontColors(net.malisis.core.util.FontColors) FeatureConstants(com.almuradev.almura.shared.feature.FeatureConstants) StoreModule(com.almuradev.almura.feature.store.StoreModule) UIButtonBuilder(net.malisis.core.client.gui.component.interaction.button.builder.UIButtonBuilder) ClientStoreManager(com.almuradev.almura.feature.store.client.ClientStoreManager) UITooltip(net.malisis.core.client.gui.component.decoration.UITooltip) Collectors(java.util.stream.Collectors) List(java.util.List) EntityPlayer(net.minecraft.entity.player.EntityPlayer) UIImage(net.malisis.core.client.gui.component.decoration.UIImage) Optional(java.util.Optional) SortType(com.almuradev.almura.feature.SortType) BasicLine(net.malisis.core.client.gui.component.decoration.BasicLine) HashMap(java.util.HashMap) ITooltipFlag(net.minecraft.client.util.ITooltipFlag) FeatureSortTypes(com.almuradev.almura.FeatureSortTypes) ArrayList(java.util.ArrayList) LinkedHashMap(java.util.LinkedHashMap) Inject(javax.inject.Inject) ItemStack(net.minecraft.item.ItemStack) Minecraft(net.minecraft.client.Minecraft) Anchor(net.malisis.core.client.gui.Anchor) SellingItem(com.almuradev.almura.feature.store.listing.SellingItem) StoreItem(com.almuradev.almura.feature.store.listing.StoreItem) Subscribe(com.google.common.eventbus.Subscribe) BasicScreen(net.malisis.core.client.gui.BasicScreen) UIExpandingLabel(com.almuradev.almura.shared.client.ui.component.UIExpandingLabel) CreativeTabs(net.minecraft.creativetab.CreativeTabs) SideOnly(net.minecraftforge.fml.relauncher.SideOnly) UISelect(net.malisis.core.client.gui.component.interaction.UISelect) ComponentEvent(net.malisis.core.client.gui.event.ComponentEvent) Nullable(javax.annotation.Nullable) UIButton(net.malisis.core.client.gui.component.interaction.UIButton) UITextField(net.malisis.core.client.gui.component.interaction.UITextField) UILabel(net.malisis.core.client.gui.component.decoration.UILabel) TextFormatting(net.minecraft.util.text.TextFormatting) Store(com.almuradev.almura.feature.store.Store) SideType(com.almuradev.almura.feature.store.SideType) BasicForm(net.malisis.core.client.gui.component.container.BasicForm) FontRenderer(net.minecraft.client.gui.FontRenderer) ForgeRegistries(net.minecraftforge.fml.common.registry.ForgeRegistries) Comparator(java.util.Comparator) FontOptions(net.malisis.core.renderer.font.FontOptions) BuyingItem(com.almuradev.almura.feature.store.listing.BuyingItem) ItemStack(net.minecraft.item.ItemStack) SellingItem(com.almuradev.almura.feature.store.listing.SellingItem)

Example 5 with SellingItem

use of com.almuradev.almura.feature.store.listing.SellingItem in project Almura by AlmuraDev.

the class ServerStoreManager method parseSellingItemsFrom.

private List<SellingItem> parseSellingItemsFrom(final Result<Record> result) {
    final List<SellingItem> items = new ArrayList<>();
    for (final Record record : result) {
        final Integer recNo = record.getValue(StoreSellingItem.STORE_SELLING_ITEM.REC_NO);
        final String domain = record.getValue(StoreSellingItem.STORE_SELLING_ITEM.DOMAIN);
        final String path = record.getValue(StoreSellingItem.STORE_SELLING_ITEM.PATH);
        final ResourceLocation location = new ResourceLocation(domain, path);
        final Item item = ForgeRegistries.ITEMS.getValue(location);
        if (item == null) {
            this.logger.error("Unknown selling item for domain '{}' and path '{}' found at record number '{}'. Skipping... (Did you remove a " + "mod?)", domain, path, recNo);
            continue;
        }
        final Timestamp created = record.getValue(StoreSellingItem.STORE_SELLING_ITEM.CREATED);
        final Integer quantity = record.getValue(StoreSellingItem.STORE_SELLING_ITEM.QUANTITY);
        final Integer metadata = record.getValue(StoreSellingItem.STORE_SELLING_ITEM.METADATA);
        final BigDecimal price = record.getValue(StoreSellingItem.STORE_SELLING_ITEM.PRICE);
        final Integer index = record.getValue(StoreSellingItem.STORE_SELLING_ITEM.INDEX);
        final byte[] compoundData = record.getValue(StoreSellingItemData.STORE_SELLING_ITEM_DATA.DATA);
        NBTTagCompound compound = null;
        if (compoundData != null) {
            try {
                compound = SerializationUtil.compoundFromBytes(compoundData);
            } catch (final IOException e) {
                this.logger.error("Malformed selling item data found at record number '{}'. Skipping...", recNo);
                continue;
            }
        }
        final BasicSellingItem basicSellingItem = new BasicSellingItem(recNo, created.toInstant(), item, quantity, metadata, price, index, compound);
        items.add(basicSellingItem);
    }
    return items;
}
Also used : ArrayList(java.util.ArrayList) NBTTagCompound(net.minecraft.nbt.NBTTagCompound) BasicSellingItem(com.almuradev.almura.feature.store.basic.listing.BasicSellingItem) IOException(java.io.IOException) BasicSellingItem(com.almuradev.almura.feature.store.basic.listing.BasicSellingItem) SellingItem(com.almuradev.almura.feature.store.listing.SellingItem) StoreSellingItem(com.almuradev.generated.store.tables.StoreSellingItem) Timestamp(java.sql.Timestamp) BigDecimal(java.math.BigDecimal) Item(net.minecraft.item.Item) BuyingItem(com.almuradev.almura.feature.store.listing.BuyingItem) StoreBuyingItem(com.almuradev.generated.store.tables.StoreBuyingItem) BasicBuyingItem(com.almuradev.almura.feature.store.basic.listing.BasicBuyingItem) BasicSellingItem(com.almuradev.almura.feature.store.basic.listing.BasicSellingItem) SellingItem(com.almuradev.almura.feature.store.listing.SellingItem) StoreItem(com.almuradev.almura.feature.store.listing.StoreItem) StoreSellingItem(com.almuradev.generated.store.tables.StoreSellingItem) ResourceLocation(net.minecraft.util.ResourceLocation) StoreSellingItemDataRecord(com.almuradev.generated.store.tables.records.StoreSellingItemDataRecord) StoreSellingItemRecord(com.almuradev.generated.store.tables.records.StoreSellingItemRecord) StoreBuyingItemRecord(com.almuradev.generated.store.tables.records.StoreBuyingItemRecord) Record(org.jooq.Record) StoreBuyingItemDataRecord(com.almuradev.generated.store.tables.records.StoreBuyingItemDataRecord)

Aggregations

SellingItem (com.almuradev.almura.feature.store.listing.SellingItem)8 ArrayList (java.util.ArrayList)8 BuyingItem (com.almuradev.almura.feature.store.listing.BuyingItem)7 StoreItem (com.almuradev.almura.feature.store.listing.StoreItem)7 BigDecimal (java.math.BigDecimal)7 BasicSellingItem (com.almuradev.almura.feature.store.basic.listing.BasicSellingItem)6 List (java.util.List)6 FeatureConstants (com.almuradev.almura.shared.feature.FeatureConstants)5 StoreSellingItem (com.almuradev.generated.store.tables.StoreSellingItem)5 IOException (java.io.IOException)4 Item (net.minecraft.item.Item)4 NBTTagCompound (net.minecraft.nbt.NBTTagCompound)4 ResourceLocation (net.minecraft.util.ResourceLocation)4 BasicBuyingItem (com.almuradev.almura.feature.store.basic.listing.BasicBuyingItem)3 StoreBuyingItem (com.almuradev.generated.store.tables.StoreBuyingItem)3 StoreBuyingItemDataRecord (com.almuradev.generated.store.tables.records.StoreBuyingItemDataRecord)3 StoreBuyingItemRecord (com.almuradev.generated.store.tables.records.StoreBuyingItemRecord)3 StoreSellingItemDataRecord (com.almuradev.generated.store.tables.records.StoreSellingItemDataRecord)3 StoreSellingItemRecord (com.almuradev.generated.store.tables.records.StoreSellingItemRecord)3 Timestamp (java.sql.Timestamp)3