diff --git a/README.md b/README.md index 5bcf4d8..c193ac2 100644 --- a/README.md +++ b/README.md @@ -2,16 +2,26 @@ This mod adds a vending machine, unlocking trades based on questbook data. If you have AE2 installed, it will also add an AE2 vending terminal, which will allow you perform trades directly with items from your ME system. +### Structure + +![img.png](img.png) + +### Interface +![img_1.png](img_1.png) + ## Current Status -WIP +Alpha Testing ## For Non-GTNH Modpacks -This can be used as a standalone mod with several dependencies. The vending machine block and ME Vending terminal do not come with default recipes. +This can be used as a standalone mod with several dependencies. The vending machine block and ME Vending Uplink do not come with default recipes. ### Required Dependencies: +- GT5U - ModularUI 2 +- NotEnoughItems +- Applied Energistics 2 ### Optional Dependencies: - BetterQuesting diff --git a/img.png b/img.png new file mode 100644 index 0000000..2c01a6b Binary files /dev/null and b/img.png differ diff --git a/img_1.png b/img_1.png new file mode 100644 index 0000000..5efbb05 Binary files /dev/null and b/img_1.png differ diff --git a/src/main/java/com/cubefury/vendingmachine/api/enums/Textures.java b/src/main/java/com/cubefury/vendingmachine/api/enums/Textures.java new file mode 100644 index 0000000..13af61d --- /dev/null +++ b/src/main/java/com/cubefury/vendingmachine/api/enums/Textures.java @@ -0,0 +1,30 @@ +package com.cubefury.vendingmachine.api.enums; + +import gregtech.api.enums.Textures.BlockIcons.CustomIcon; +import gregtech.api.interfaces.IIconContainer; + +public class Textures { + + public static final CustomIcon VM_MACHINE_FRONT_OFF = new CustomIcon("vendingmachine:vending_machine_front_off"), + VM_MACHINE_FRONT_ON = new CustomIcon("vendingmachine:vending_machine_front_on"), + VM_MACHINE_FRONT_ON_GLOW = new CustomIcon("vendingmachine:vending_machine_front_on_glow"), + + VM_OVERLAY_0 = new CustomIcon("vendingmachine:vending_machine_overlay_0"), + VM_OVERLAY_1 = new CustomIcon("vendingmachine:vending_machine_overlay_1"), + VM_OVERLAY_2 = new CustomIcon("vendingmachine:vending_machine_overlay_2"), + VM_OVERLAY_3 = new CustomIcon("vendingmachine:vending_machine_overlay_3"), + VM_OVERLAY_4 = new CustomIcon("vendingmachine:vending_machine_overlay_4"), + + VM_OVERLAY_ACTIVE_0 = new CustomIcon("vendingmachine:vending_machine_overlay_active_0"), + VM_OVERLAY_ACTIVE_1 = new CustomIcon("vendingmachine:vending_machine_overlay_active_1"), + VM_OVERLAY_ACTIVE_2 = new CustomIcon("vendingmachine:vending_machine_overlay_active_2"), + VM_OVERLAY_ACTIVE_3 = new CustomIcon("vendingmachine:vending_machine_overlay_active_3"); + + public static final IIconContainer[] VM_OVERLAY_ACTIVE = { VM_OVERLAY_ACTIVE_0, VM_OVERLAY_ACTIVE_1, + VM_OVERLAY_ACTIVE_2, VM_OVERLAY_ACTIVE_3, VM_OVERLAY_4 // bottom right not animated + }; + + public static final IIconContainer[] VM_OVERLAY = { VM_OVERLAY_0, VM_OVERLAY_1, VM_OVERLAY_2, VM_OVERLAY_3, + VM_OVERLAY_4 }; + +} diff --git a/src/main/java/com/cubefury/vendingmachine/blocks/MTEVendingMachine.java b/src/main/java/com/cubefury/vendingmachine/blocks/MTEVendingMachine.java index e7d6220..54df808 100644 --- a/src/main/java/com/cubefury/vendingmachine/blocks/MTEVendingMachine.java +++ b/src/main/java/com/cubefury/vendingmachine/blocks/MTEVendingMachine.java @@ -1,5 +1,10 @@ package com.cubefury.vendingmachine.blocks; +import static com.cubefury.vendingmachine.api.enums.Textures.VM_MACHINE_FRONT_OFF; +import static com.cubefury.vendingmachine.api.enums.Textures.VM_MACHINE_FRONT_ON; +import static com.cubefury.vendingmachine.api.enums.Textures.VM_MACHINE_FRONT_ON_GLOW; +import static com.cubefury.vendingmachine.api.enums.Textures.VM_OVERLAY; +import static com.cubefury.vendingmachine.api.enums.Textures.VM_OVERLAY_ACTIVE; import static gregtech.api.util.GTStructureUtility.ofHatchAdderOptional; import java.util.ArrayList; @@ -40,6 +45,7 @@ import com.cubefury.vendingmachine.trade.TradeManager; import com.cubefury.vendingmachine.trade.TradeRequest; import com.cubefury.vendingmachine.util.BigItemStack; +import com.cubefury.vendingmachine.util.OverlayHelper; import com.gtnewhorizon.structurelib.StructureLibAPI; import com.gtnewhorizon.structurelib.alignment.IAlignment; import com.gtnewhorizon.structurelib.alignment.IAlignmentLimits; @@ -52,11 +58,13 @@ import gregtech.api.GregTechAPI; import gregtech.api.covers.CoverRegistry; import gregtech.api.enums.Textures; +import gregtech.api.interfaces.IIconContainer; import gregtech.api.interfaces.ISecondaryDescribable; import gregtech.api.interfaces.ITexture; import gregtech.api.interfaces.metatileentity.IMetaTileEntity; import gregtech.api.interfaces.tileentity.IGregTechTileEntity; import gregtech.api.metatileentity.implementations.MTEMultiBlockBase; +import gregtech.api.render.RenderOverlay; import gregtech.api.render.TextureFactory; import gregtech.api.util.GTUtil; import gregtech.api.util.GTUtility; @@ -82,7 +90,7 @@ public class MTEVendingMachine extends MTEMultiBlockBase private final ArrayList uplinkHatches = new ArrayList<>(); public static final int INPUT_SLOTS = 6; - public static final int OUTPUT_SLOTS = 4; + public static final int OUTPUT_SLOTS = 6; public static final int MAX_TRADES = 300; @@ -90,18 +98,18 @@ public class MTEVendingMachine extends MTEMultiBlockBase private static final ITexture[] FACING_SIDE = { TextureFactory.of(Textures.BlockIcons.MACHINE_CASING_ITEM_PIPE_TIN) }; - private static final ITexture[] FACING_FRONT = { - TextureFactory.of(Textures.BlockIcons.MACHINE_CASING_BRICKEDBLASTFURNACE_INACTIVE) }; - private static final ITexture[] FACING_ACTIVE = { - TextureFactory.of(Textures.BlockIcons.MACHINE_CASING_BRICKEDBLASTFURNACE_ACTIVE), TextureFactory.builder() - .addIcon(Textures.BlockIcons.MACHINE_CASING_BRICKEDBLASTFURNACE_ACTIVE_GLOW) - .glow() - .build() }; + private static final ITexture[] FACING_FRONT = { TextureFactory.of(VM_MACHINE_FRONT_OFF) }; + private static final ITexture[] FACING_ACTIVE = { TextureFactory.of(VM_MACHINE_FRONT_ON), TextureFactory.builder() + .addIcon(VM_MACHINE_FRONT_ON_GLOW) + .glow() + .build() }; + protected final List overlayTickets = new ArrayList<>(); private MultiblockTooltipBuilder tooltipBuilder; public int mUpdate = 0; public boolean mMachine = false; + private boolean mIsAnimated; public ItemStackHandler inputItems = new ItemStackHandler(INPUT_SLOTS); public ItemStackHandler outputItems = new ItemStackHandler(OUTPUT_SLOTS); @@ -118,10 +126,12 @@ public class MTEVendingMachine extends MTEMultiBlockBase public MTEVendingMachine(final int aID, final String aName, final String aNameRegional) { super(aID, aName, aNameRegional); + this.mIsAnimated = true; } protected MTEVendingMachine(String aName) { super(aName); + this.mIsAnimated = true; } @Override @@ -129,6 +139,11 @@ public IMetaTileEntity newMetaEntity(IGregTechTileEntity aTileEntity) { return new MTEVendingMachine(this.mName); } + public boolean usingAnimations() { + // Logger.INFO("Is animated? "+this.mIsAnimated); + return this.mIsAnimated; + } + public void sendTradeRequest(TradeItemDisplay trade) { IGregTechTileEntity baseTile = getBaseMetaTileEntity(); if (baseTile == null) { @@ -374,11 +389,32 @@ public boolean isFacingValid(ForgeDirection facing) { public ITexture[] getTexture(IGregTechTileEntity baseMetaTileEntity, ForgeDirection side, ForgeDirection facing, int colorIndex, boolean active, boolean redstoneLevel) { if (side == facing) { + if (baseMetaTileEntity == null) { + return FACING_FRONT; + } return active ? FACING_ACTIVE : FACING_FRONT; } return FACING_SIDE; } + protected void setTextureOverlay() { + IGregTechTileEntity tile = getBaseMetaTileEntity(); + if (tile == null || tile.isServerSide()) return; + + IIconContainer[] vmTextures; + if (getBaseMetaTileEntity().isActive() && usingAnimations()) vmTextures = VM_OVERLAY_ACTIVE; + else vmTextures = VM_OVERLAY; + + OverlayHelper.setVMOverlay( + tile.getWorld(), + tile.getXCoord(), + tile.getYCoord(), + tile.getZCoord(), + getExtendedFacing(), + vmTextures, + overlayTickets); + } + @Override public String[] getDescription() { return getCurrentDescription(); @@ -460,7 +496,16 @@ public ExtendedFacing getExtendedFacing() { @Override public void setExtendedFacing(ExtendedFacing alignment) { + boolean extendedFacingChanged = alignment != getExtendedFacing(); getBaseMetaTileEntity().setFrontFacing(alignment.getDirection()); + if (extendedFacingChanged) { + setTextureOverlay(); + } + } + + @Override + public void onTextureUpdate() { + setTextureOverlay(); } @Override @@ -491,8 +536,8 @@ public boolean checkMachine(IGregTechTileEntity aBaseMetaTileEntity, ItemStack a @Override public void onPostTick(IGregTechTileEntity aBaseMetaTileEntity, long aTimer) { - if ((aBaseMetaTileEntity.isClientSide()) && (aBaseMetaTileEntity.isActive())) { - // spawn something maybe + if (aBaseMetaTileEntity.isClientSide() && !aBaseMetaTileEntity.isActive()) { + OverlayHelper.clearVMOverlay(overlayTickets); } if (aBaseMetaTileEntity.isServerSide()) { dispenseItems(); @@ -537,7 +582,8 @@ public boolean inputItemsSatisfied(List fromItems) { ItemStack aeStackSearch = base.getBaseStack(); aeStackSearch.stackSize = bis.stackSize; if (this.inputSlotCache.get(base) != null) { - aeStackSearch.stackSize = Math.max(aeStackSearch.stackSize - this.inputSlotCache.get(base), 0); + aeStackSearch.stackSize = Math + .max(aeStackSearch.stackSize - this.inputSlotCache.getOrDefault(base, 0), 0); } if (aeStackSearch.stackSize == 0) { continue; @@ -570,8 +616,10 @@ public boolean getActive() { @Override public void onFirstTick(IGregTechTileEntity aBaseMetaTileEntity) { super.onFirstTick(aBaseMetaTileEntity); - if (aBaseMetaTileEntity.isClientSide()) + if (aBaseMetaTileEntity.isClientSide()) { StructureLibAPI.queryAlignment((IAlignmentProvider) aBaseMetaTileEntity); + setTextureOverlay(); + } } @Override @@ -611,6 +659,12 @@ public void construct(ItemStack stackSize, boolean hintsOnly) { hintsOnly); } + @Override + public void onRemoval() { + super.onRemoval(); + if (getBaseMetaTileEntity().isClientSide()) OverlayHelper.clearVMOverlay(overlayTickets); + } + @Override public boolean onRightclick(IGregTechTileEntity aBaseMetaTileEntity, EntityPlayer aPlayer) { if (GTUtil.hasMultiblockInputConfiguration(aPlayer.getHeldItem())) { diff --git a/src/main/java/com/cubefury/vendingmachine/blocks/gui/MTEVendingMachineGui.java b/src/main/java/com/cubefury/vendingmachine/blocks/gui/MTEVendingMachineGui.java index 93d59d9..5fcfd38 100644 --- a/src/main/java/com/cubefury/vendingmachine/blocks/gui/MTEVendingMachineGui.java +++ b/src/main/java/com/cubefury/vendingmachine/blocks/gui/MTEVendingMachineGui.java @@ -123,7 +123,7 @@ public ModularPanel build(PosGuiData guiData, PanelSyncManager syncManager, UISe .child(createTradeUI((TradeMainPanel) panel, this.tabController)); mainColumn.child(createCoinInventoryRow((TradeMainPanel) panel)); } - mainColumn.child(createInventoryRow(panel, syncManager)); + mainColumn.child(createInventoryRow()); panel.child(mainColumn); panel.child( new Column().size(20) @@ -256,7 +256,7 @@ private void doEjectItems() { private IWidget createIOColumn(PanelSyncManager syncManager) { return new ParentWidget<>().excludeAreaInNEI() .width(50) - .height(160) + .height(178) .right(-48) .top(40) .widgetTheme(WidgetThemes.BACKGROUND_SIDEPANEL) @@ -268,7 +268,7 @@ private IWidget createIOColumn(PanelSyncManager syncManager) { .width(30) .height(20)) .child( - new Row().child(createInputRow(syncManager).center()) + new Row().child(createInputRow().center()) .top(20) .height(18 * 3)) .child( @@ -289,17 +289,17 @@ private IWidget createIOColumn(PanelSyncManager syncManager) { .child( GuiTextures.OUTPUT_SPRITE.asWidget() .leftRel(0.5f) - .bottom(34) + .bottom(52) .width(30) .height(20)) .child( new Row().child(createOutputSlots().center()) .bottom(6) - .height(18 * 2)) + .height(18 * 3)) .right(1)); } - private SlotGroupWidget createInputRow(PanelSyncManager syncManager) { + private SlotGroupWidget createInputRow() { return SlotGroupWidget.builder() .matrix("II", "II", "II") .key('I', index -> { @@ -334,7 +334,7 @@ private SlotGroupWidget createInputRow(PanelSyncManager syncManager) { private SlotGroupWidget createOutputSlots() { return SlotGroupWidget.builder() - .matrix("II", "II") + .matrix("II", "II", "II") .key('I', index -> { ModularSlot ms = new ModularSlot(base.outputItems, index).accessibility(false, true) .slotGroup("outputSlotGroup"); @@ -474,7 +474,7 @@ private IWidget createCoinInventoryRow(TradeMainPanel panel) { } // why is the original method private lmao - private IWidget createInventoryRow(ModularPanel panel, PanelSyncManager syncManager) { + private IWidget createInventoryRow() { return new Row().widthRel(1) .height(76) .alignX(0) diff --git a/src/main/java/com/cubefury/vendingmachine/util/OverlayHelper.java b/src/main/java/com/cubefury/vendingmachine/util/OverlayHelper.java new file mode 100644 index 0000000..6945efd --- /dev/null +++ b/src/main/java/com/cubefury/vendingmachine/util/OverlayHelper.java @@ -0,0 +1,72 @@ +package com.cubefury.vendingmachine.util; + +import java.util.List; + +import net.minecraft.world.World; +import net.minecraftforge.common.util.ForgeDirection; + +import com.gtnewhorizon.structurelib.alignment.enumerable.ExtendedFacing; + +import gregtech.api.interfaces.IIconContainer; +import gregtech.api.render.RenderOverlay; +import gregtech.api.render.TextureFactory; + +public class OverlayHelper { + + private static final int[] vmX = new int[] { -1, 0, -1, -1, 0 }; + private static final int[] vmY = new int[] { -1, -1, 0, 1, 1 }; + + public static void clearVMOverlay(List overlayTickets) { + overlayTickets.forEach(RenderOverlay.OverlayTicket::remove); + overlayTickets.clear(); + } + + /** + * Texture Display Front View + * ----- + * 0 | 1 + * 2 | ~ + * 3 | 4 + * ----- + * Only 0-3 are animated + * 4 is a static texture without glow + */ + public static void setVMOverlay(World world, int x, short y, int z, ExtendedFacing facing, + IIconContainer[] vmTextures, List overlayTickets) { + clearVMOverlay(overlayTickets); + + int[] tXYZOffset = new int[3]; + final ForgeDirection tDirection = facing.getDirection(); + facing = ExtendedFacing.of(tDirection); + + RenderOverlay overlay = RenderOverlay.getOrCreate(world); + + for (int i = 0; i < 5; i++) { + int[] tABCCoord = new int[] { vmX[i], vmY[i], 0 }; + + facing.getWorldOffset(tABCCoord, tXYZOffset); + int tX = tXYZOffset[0] + x; + int tY = tXYZOffset[1] + y; + int tZ = tXYZOffset[2] + z; + + if (i == 4) { // bottom right + overlayTickets.add(overlay.set(x, y, z, tX, tY, tZ, tDirection, TextureFactory.of(vmTextures[i]), 0)); + } else { + overlayTickets.add( + overlay.set( + x, + y, + z, + tX, + tY, + tZ, + tDirection, + TextureFactory.builder() + .addIcon(vmTextures[i]) + .glow() + .build(), + 0)); + } + } + } +} diff --git a/src/main/resources/assets/vendingmachine/textures/blocks/vending_machine_front_off.png b/src/main/resources/assets/vendingmachine/textures/blocks/vending_machine_front_off.png new file mode 100644 index 0000000..00dd320 Binary files /dev/null and b/src/main/resources/assets/vendingmachine/textures/blocks/vending_machine_front_off.png differ diff --git a/src/main/resources/assets/vendingmachine/textures/blocks/vending_machine_front_on.png b/src/main/resources/assets/vendingmachine/textures/blocks/vending_machine_front_on.png new file mode 100644 index 0000000..077e216 Binary files /dev/null and b/src/main/resources/assets/vendingmachine/textures/blocks/vending_machine_front_on.png differ diff --git a/src/main/resources/assets/vendingmachine/textures/blocks/vending_machine_front_on_glow.png b/src/main/resources/assets/vendingmachine/textures/blocks/vending_machine_front_on_glow.png new file mode 100644 index 0000000..4e8f026 Binary files /dev/null and b/src/main/resources/assets/vendingmachine/textures/blocks/vending_machine_front_on_glow.png differ diff --git a/src/main/resources/assets/vendingmachine/textures/blocks/vending_machine_front_on_glow.png.mcmeta b/src/main/resources/assets/vendingmachine/textures/blocks/vending_machine_front_on_glow.png.mcmeta new file mode 100644 index 0000000..f9b2e89 --- /dev/null +++ b/src/main/resources/assets/vendingmachine/textures/blocks/vending_machine_front_on_glow.png.mcmeta @@ -0,0 +1,9 @@ +{ + "animation": { + "frametime": 45, + "width": 16, + "height": 16, + "interpolate": false + } +} + diff --git a/src/main/resources/assets/vendingmachine/textures/blocks/vending_machine_overlay_0.png b/src/main/resources/assets/vendingmachine/textures/blocks/vending_machine_overlay_0.png new file mode 100644 index 0000000..01f9b6a Binary files /dev/null and b/src/main/resources/assets/vendingmachine/textures/blocks/vending_machine_overlay_0.png differ diff --git a/src/main/resources/assets/vendingmachine/textures/blocks/vending_machine_overlay_1.png b/src/main/resources/assets/vendingmachine/textures/blocks/vending_machine_overlay_1.png new file mode 100644 index 0000000..6b13f22 Binary files /dev/null and b/src/main/resources/assets/vendingmachine/textures/blocks/vending_machine_overlay_1.png differ diff --git a/src/main/resources/assets/vendingmachine/textures/blocks/vending_machine_overlay_2.png b/src/main/resources/assets/vendingmachine/textures/blocks/vending_machine_overlay_2.png new file mode 100644 index 0000000..3a3d665 Binary files /dev/null and b/src/main/resources/assets/vendingmachine/textures/blocks/vending_machine_overlay_2.png differ diff --git a/src/main/resources/assets/vendingmachine/textures/blocks/vending_machine_overlay_3.png b/src/main/resources/assets/vendingmachine/textures/blocks/vending_machine_overlay_3.png new file mode 100644 index 0000000..8202d98 Binary files /dev/null and b/src/main/resources/assets/vendingmachine/textures/blocks/vending_machine_overlay_3.png differ diff --git a/src/main/resources/assets/vendingmachine/textures/blocks/vending_machine_overlay_4.png b/src/main/resources/assets/vendingmachine/textures/blocks/vending_machine_overlay_4.png new file mode 100644 index 0000000..69d5b65 Binary files /dev/null and b/src/main/resources/assets/vendingmachine/textures/blocks/vending_machine_overlay_4.png differ diff --git a/src/main/resources/assets/vendingmachine/textures/blocks/vending_machine_overlay_active_0.png b/src/main/resources/assets/vendingmachine/textures/blocks/vending_machine_overlay_active_0.png new file mode 100644 index 0000000..9586849 Binary files /dev/null and b/src/main/resources/assets/vendingmachine/textures/blocks/vending_machine_overlay_active_0.png differ diff --git a/src/main/resources/assets/vendingmachine/textures/blocks/vending_machine_overlay_active_0.png.mcmeta b/src/main/resources/assets/vendingmachine/textures/blocks/vending_machine_overlay_active_0.png.mcmeta new file mode 100644 index 0000000..2cc4ff1 --- /dev/null +++ b/src/main/resources/assets/vendingmachine/textures/blocks/vending_machine_overlay_active_0.png.mcmeta @@ -0,0 +1,16 @@ +{ + "animation": { + "width": 16, + "height": 16, + "interpolate": false, + "frames": [ + { "index": 0, "time": 10 }, + { "index": 1, "time": 8 }, + { "index": 2, "time": 8 }, + { "index": 3, "time": 10 }, + { "index": 2, "time": 8 }, + { "index": 1, "time": 8 } + ] + } +} + diff --git a/src/main/resources/assets/vendingmachine/textures/blocks/vending_machine_overlay_active_1.png b/src/main/resources/assets/vendingmachine/textures/blocks/vending_machine_overlay_active_1.png new file mode 100644 index 0000000..5f668fc Binary files /dev/null and b/src/main/resources/assets/vendingmachine/textures/blocks/vending_machine_overlay_active_1.png differ diff --git a/src/main/resources/assets/vendingmachine/textures/blocks/vending_machine_overlay_active_1.png.mcmeta b/src/main/resources/assets/vendingmachine/textures/blocks/vending_machine_overlay_active_1.png.mcmeta new file mode 100644 index 0000000..2cc4ff1 --- /dev/null +++ b/src/main/resources/assets/vendingmachine/textures/blocks/vending_machine_overlay_active_1.png.mcmeta @@ -0,0 +1,16 @@ +{ + "animation": { + "width": 16, + "height": 16, + "interpolate": false, + "frames": [ + { "index": 0, "time": 10 }, + { "index": 1, "time": 8 }, + { "index": 2, "time": 8 }, + { "index": 3, "time": 10 }, + { "index": 2, "time": 8 }, + { "index": 1, "time": 8 } + ] + } +} + diff --git a/src/main/resources/assets/vendingmachine/textures/blocks/vending_machine_overlay_active_2.png b/src/main/resources/assets/vendingmachine/textures/blocks/vending_machine_overlay_active_2.png new file mode 100644 index 0000000..31c1708 Binary files /dev/null and b/src/main/resources/assets/vendingmachine/textures/blocks/vending_machine_overlay_active_2.png differ diff --git a/src/main/resources/assets/vendingmachine/textures/blocks/vending_machine_overlay_active_2.png.mcmeta b/src/main/resources/assets/vendingmachine/textures/blocks/vending_machine_overlay_active_2.png.mcmeta new file mode 100644 index 0000000..e45f66e --- /dev/null +++ b/src/main/resources/assets/vendingmachine/textures/blocks/vending_machine_overlay_active_2.png.mcmeta @@ -0,0 +1,16 @@ +{ + "animation": { + "width": 16, + "height": 16, + "interpolate": false, + "frames": [ + { "index": 0, "time": 10 }, + { "index": 1, "time": 8 }, + { "index": 2, "time": 8 }, + { "index": 3, "time": 10 }, + { "index": 2, "time": 8 }, + { "index": 1, "time": 8 } + ] + } +} + diff --git a/src/main/resources/assets/vendingmachine/textures/blocks/vending_machine_overlay_active_3.png b/src/main/resources/assets/vendingmachine/textures/blocks/vending_machine_overlay_active_3.png new file mode 100644 index 0000000..564c5f6 Binary files /dev/null and b/src/main/resources/assets/vendingmachine/textures/blocks/vending_machine_overlay_active_3.png differ diff --git a/src/main/resources/assets/vendingmachine/textures/blocks/vending_machine_overlay_active_3.png.mcmeta b/src/main/resources/assets/vendingmachine/textures/blocks/vending_machine_overlay_active_3.png.mcmeta new file mode 100644 index 0000000..2cc4ff1 --- /dev/null +++ b/src/main/resources/assets/vendingmachine/textures/blocks/vending_machine_overlay_active_3.png.mcmeta @@ -0,0 +1,16 @@ +{ + "animation": { + "width": 16, + "height": 16, + "interpolate": false, + "frames": [ + { "index": 0, "time": 10 }, + { "index": 1, "time": 8 }, + { "index": 2, "time": 8 }, + { "index": 3, "time": 10 }, + { "index": 2, "time": 8 }, + { "index": 1, "time": 8 } + ] + } +} + diff --git a/src/main/resources/assets/vendingmachine/textures/blocks/vending_machine_side.png b/src/main/resources/assets/vendingmachine/textures/blocks/vending_machine_side.png deleted file mode 100644 index bf5379f..0000000 Binary files a/src/main/resources/assets/vendingmachine/textures/blocks/vending_machine_side.png and /dev/null differ diff --git a/src/main/resources/assets/vendingmachine/textures/blocks/vending_machine_top.png b/src/main/resources/assets/vendingmachine/textures/blocks/vending_machine_top.png deleted file mode 100644 index c8d7cbd..0000000 Binary files a/src/main/resources/assets/vendingmachine/textures/blocks/vending_machine_top.png and /dev/null differ