diff --git a/src/client/java/jesse/keeblarcraft/gui/Generics/ClickableLayer.java b/src/client/java/jesse/keeblarcraft/gui/Generics/ClickableLayer.java index 41fea1d..fc54f66 100644 --- a/src/client/java/jesse/keeblarcraft/gui/Generics/ClickableLayer.java +++ b/src/client/java/jesse/keeblarcraft/gui/Generics/ClickableLayer.java @@ -27,6 +27,13 @@ abstract public class ClickableLayer extends ClickableWidget { this.layerName = layerName; } + public void ResetLayer(int startX, int startY, int width, int height) { + this.setX(startX); + this.setY(startY); + this.setWidth(width); + this.setHeight(height); + } + protected void ResizeLayer(int width, int height) { this.setWidth(width); this.setHeight(height); diff --git a/src/client/java/jesse/keeblarcraft/gui/ShopKeeperGUI/DrawableStoreItem.java b/src/client/java/jesse/keeblarcraft/gui/ShopKeeperGUI/DrawableStoreItem.java index 0e7a0d6..4e2c465 100644 --- a/src/client/java/jesse/keeblarcraft/gui/ShopKeeperGUI/DrawableStoreItem.java +++ b/src/client/java/jesse/keeblarcraft/gui/ShopKeeperGUI/DrawableStoreItem.java @@ -2,7 +2,9 @@ package jesse.keeblarcraft.gui.ShopKeeperGUI; import jesse.keeblarcraft.Keeblarcraft; import jesse.keeblarcraft.gui.Generics.ClickableLayer; +import net.minecraft.client.gui.DrawContext; import net.minecraft.client.gui.screen.narration.NarrationMessageBuilder; +import net.minecraft.item.ItemStack; import net.minecraft.text.Text; import net.minecraft.util.Identifier; @@ -13,9 +15,11 @@ public class DrawableStoreItem extends ClickableLayer { private Integer itemCost; private String itemName; private Integer amountSelected = 0; + ItemStack itemTextureId; - public DrawableStoreItem(String itemName, Integer itemCost) { + public DrawableStoreItem(String itemName, Integer itemCost, ItemStack itemTextureId) { this(itemName, itemCost, Text.of(""), 85, 50); + this.itemTextureId = itemTextureId; } public DrawableStoreItem(String itemName, Integer itemCost, Text layerName, int width, int height) { @@ -37,6 +41,18 @@ public class DrawableStoreItem extends ClickableLayer { System.out.println("Current buy amount: " + this.amountSelected); } + @Override + public void renderButton(DrawContext context, int mouseX, int mouseY, float delta) { + super.renderButton(context, mouseX, mouseY, delta); + + // Now we want to draw the item icon in the icon slot + if (this.itemTextureId != null) { + context.drawItem(this.itemTextureId, this.getX() + 13, this.getY() + 22); // TODO: Need to correct offest to draw + } else { + // TODO: Add default icon to draw if no texture is set or could be found for item + } + } + public void Subtract() { --this.amountSelected; System.out.println("Current buy amount: " + this.amountSelected); diff --git a/src/client/java/jesse/keeblarcraft/gui/ShopKeeperGUI/MerchandiseScroller.java b/src/client/java/jesse/keeblarcraft/gui/ShopKeeperGUI/MerchandiseScroller.java index 50e7c00..69e7de1 100644 --- a/src/client/java/jesse/keeblarcraft/gui/ShopKeeperGUI/MerchandiseScroller.java +++ b/src/client/java/jesse/keeblarcraft/gui/ShopKeeperGUI/MerchandiseScroller.java @@ -57,7 +57,8 @@ public class MerchandiseScroller extends ClickableLayer { // System.out.println("DRAWX DRAWY WIDTH HEIGHT: " + drawX + " " + drawY + " " + storeItem.getWidth() + " " + storeItem.getHeight()); // uv values can be changed for smooth scrolling in the future; but for now with jar-scrolling we will be // scrolling at least 1 height value of the store stuff - context.drawTexture(storeItem.GetTexture(), drawX, drawY, 0, 0, storeItem.getWidth(), storeItem.getHeight(), storeItem.getWidth(), storeItem.getHeight()); + storeItem.ResetLayer(drawX, drawY, storeItem.getWidth(), storeItem.getHeight()); + storeItem.renderButton(context, mouseX, mouseY, delta); // The draw item will draw out its contents like item icons, menu info, etc if (oscillator % 2 == 0) { // Even implies we are going to odd; which means this is xScalar+1 @@ -89,7 +90,7 @@ public class MerchandiseScroller extends ClickableLayer { public void Add(StoreItem item) { storeInventory.Add(item); - drawableInventory.put(item.GetUPC(), new DrawableStoreItem(item.GetName(), item.GetCost())); + drawableInventory.put(item.GetUPC(), new DrawableStoreItem(item.GetName(), item.GetCost(), item.GetItem())); ResizeDrawlist(); } diff --git a/src/client/java/jesse/keeblarcraft/gui/ShopKeeperGUI/ShopKeeperMenu.java b/src/client/java/jesse/keeblarcraft/gui/ShopKeeperGUI/ShopKeeperMenu.java index 86c6a78..17442a0 100644 --- a/src/client/java/jesse/keeblarcraft/gui/ShopKeeperGUI/ShopKeeperMenu.java +++ b/src/client/java/jesse/keeblarcraft/gui/ShopKeeperGUI/ShopKeeperMenu.java @@ -60,13 +60,24 @@ public class ShopKeeperMenu extends HandledScreen { // This is for temporary testing - StoreItem newMerch = new StoreItem("Dirt block", "minecraft:dirt_block", 10000000); - StoreItem newMerch2 = new StoreItem("Dirt block2", "minecraft:dirt_block2", 10000000); - StoreItem newMerch3 = new StoreItem("Dirt block3", "minecraft:dirt_block3", 10000000); - StoreItem newMerch4 = new StoreItem("Dirt block4", "minecraft:dirt_block4", 10000000); - StoreItem newMerch5 = new StoreItem("Dirt block5", "minecraft:dirt_block5", 10000000); - StoreItem newMerch6 = new StoreItem("Dirt block6", "minecraft:dirt_block6", 10000000); - StoreItem newMerch7 = new StoreItem("Dirt block7", "minecraft:dirt_block7", 10000000); + StoreItem newMerch = new StoreItem("Dirt block", "minecraft:dirt_block", 10000000, Items.DIRT.getDefaultStack()); + StoreItem newMerch2 = new StoreItem("Dirt block2", "minecraft:dirt_block2", 10000000, Items.DIRT.getDefaultStack()); + StoreItem newMerch3 = new StoreItem("Dirt block3", "minecraft:dirt_block3", 10000000, Items.DIRT.getDefaultStack()); + StoreItem newMerch4 = new StoreItem("Dirt block4", "minecraft:dirt_block4", 10000000, Items.DIRT.getDefaultStack()); + StoreItem newMerch5 = new StoreItem("Dirt block5", "minecraft:dirt_block5", 10000000, Items.DIRT.getDefaultStack()); + StoreItem newMerch6 = new StoreItem("Dirt block6", "minecraft:dirt_block6", 10000000, Items.DIRT.getDefaultStack()); + StoreItem newMerch7 = new StoreItem("Dirt block7", "minecraft:dirt_block7", 10000000, Items.DIRT.getDefaultStack()); + StoreItem newMerch8 = new StoreItem("Dirt block8", "minecraft:dirt_block8", 10000000, Items.DIRT.getDefaultStack()); + StoreItem newMerch9 = new StoreItem("Dirt block9", "minecraft:dirt_block9", 10000000, Items.DIRT.getDefaultStack()); + StoreItem newMerch10 = new StoreItem("Dirt block10", "minecraft:dirt_block10", 10000000, Items.DIRT.getDefaultStack()); + StoreItem newMerch11 = new StoreItem("Dirt block11", "minecraft:dirt_block11", 10000000, Items.DIRT.getDefaultStack()); + StoreItem newMerch12 = new StoreItem("Dirt block711", "minecraft:dirt_block12", 10000000, Items.DIRT.getDefaultStack()); + StoreItem newMerch13 = new StoreItem("Dirt block711", "minecraft:dirt_block13", 10000000, Items.DIRT.getDefaultStack()); + StoreItem newMerch14 = new StoreItem("Dirt block711", "minecraft:dirt_block14", 10000000, Items.DIRT.getDefaultStack()); + StoreItem newMerch15 = new StoreItem("Dirt block71", "minecraft:dirt_block15", 10000000, Items.DIRT.getDefaultStack()); + StoreItem newMerch16 = new StoreItem("Dirt block711111", "minecraft:dirt_block16", 10000000, Items.DIRT.getDefaultStack()); + StoreItem newMerch17 = new StoreItem("Dirt block711", "minecraft:dirt_block17", 10000000, Items.DIRT.getDefaultStack()); + StoreItem newMerch18 = new StoreItem("Dirt block711", "minecraft:dirt_block18", 10000000, Items.DIRT.getDefaultStack()); catalogue.Add(newMerch); @@ -76,6 +87,17 @@ public class ShopKeeperMenu extends HandledScreen { catalogue.Add(newMerch5); catalogue.Add(newMerch6); catalogue.Add(newMerch7); + catalogue.Add(newMerch8); + catalogue.Add(newMerch9); + catalogue.Add(newMerch10); + catalogue.Add(newMerch11); + catalogue.Add(newMerch12); + catalogue.Add(newMerch13); + catalogue.Add(newMerch14); + catalogue.Add(newMerch15); + catalogue.Add(newMerch16); + catalogue.Add(newMerch17); + catalogue.Add(newMerch18); @@ -99,9 +121,6 @@ public class ShopKeeperMenu extends HandledScreen { this.getScreenHandler().showSlot("add_item_menu", "add_item_slot"); - // TODO: Temporary to just prove a point that we can draw item icons in the menu - ItemStack tempStack = Items.ACACIA_DOOR.getDefaultStack(); - catalogue.UpdateScrollAmount(scrollbar.GetScrollDistance()); catalogue.renderButton(context, mouseX, mouseY, delta); @@ -117,8 +136,6 @@ public class ShopKeeperMenu extends HandledScreen { ToggleSlots(subLayer.GetLayerName().getString(), subLayer.GetDrawableSlots()); } - // TODO: HACK to see if this works - context.drawItem(tempStack, this.x, this.y); // TODO: REMOVE // We only notify the parent to update sub layers. It must manage its own sub layers layer.UpdateSubLayers(); } diff --git a/src/main/java/jesse/keeblarcraft/Entities/ShopKeeper.java b/src/main/java/jesse/keeblarcraft/Entities/ShopKeeper.java index c22f206..530e70d 100644 --- a/src/main/java/jesse/keeblarcraft/Entities/ShopKeeper.java +++ b/src/main/java/jesse/keeblarcraft/Entities/ShopKeeper.java @@ -15,6 +15,8 @@ import net.minecraft.world.World; import java.util.OptionalInt; public class ShopKeeper extends VillagerEntity { + private final int MAX_STORE_ITEMS = 64; // TODO: May be in wrong area. Number will be QA tested from scrolling amount + public ShopKeeper(EntityType entityType, World world) { super(entityType, world); } diff --git a/src/main/java/jesse/keeblarcraft/GuiMgr/ShopKeeper/ShopKeeperInventory.java b/src/main/java/jesse/keeblarcraft/GuiMgr/ShopKeeper/ShopKeeperInventory.java index 1e9bfd0..4aa19e4 100644 --- a/src/main/java/jesse/keeblarcraft/GuiMgr/ShopKeeper/ShopKeeperInventory.java +++ b/src/main/java/jesse/keeblarcraft/GuiMgr/ShopKeeper/ShopKeeperInventory.java @@ -1,5 +1,6 @@ package jesse.keeblarcraft.GuiMgr.ShopKeeper; +import net.minecraft.item.Items; import net.minecraft.village.MerchantInventory; import java.util.ArrayList; @@ -12,7 +13,8 @@ public class ShopKeeperInventory { public ShopKeeperInventory(MerchantInventory merchantInventory) { items = new ArrayList(); // This is temporary to see if this stuff works client->server->client etc - items.add(new StoreItem("Among Us Statue", "$$$$$$$$$$", 10000)); + // Also default item for now is a dirt block because why not! + items.add(new StoreItem("Among Us Statue", "$$$$$$$$$$", 10000, Items.DIRT.getDefaultStack())); this.merchantInventory = merchantInventory; } diff --git a/src/main/java/jesse/keeblarcraft/GuiMgr/ShopKeeper/StoreItem.java b/src/main/java/jesse/keeblarcraft/GuiMgr/ShopKeeper/StoreItem.java index 2467e81..1d75462 100644 --- a/src/main/java/jesse/keeblarcraft/GuiMgr/ShopKeeper/StoreItem.java +++ b/src/main/java/jesse/keeblarcraft/GuiMgr/ShopKeeper/StoreItem.java @@ -1,19 +1,27 @@ package jesse.keeblarcraft.GuiMgr.ShopKeeper; +import net.minecraft.item.ItemStack; + // All the custom content that a store item will have. Handled by @see MerchandiseScroller.java public class StoreItem { private Integer itemCost; private String itemName; private String upc; + private ItemStack storeItem; - public StoreItem(String itemName, String upc, Integer cost) { + public StoreItem(String itemName, String upc, Integer cost, ItemStack storeItem) { this.itemName = itemName; this.upc = upc; this.itemCost = cost; + this.storeItem = storeItem; } public String GetName() { - return itemName; + return this.itemName; + } + + public ItemStack GetItem() { + return this.storeItem; } public String GetUPC() {