Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: kill05/ArchitectTools
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: v0.0.2
Choose a base ref
...
head repository: kill05/ArchitectTools
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: 7.2-pre1
Choose a head ref

Commits on Jun 10, 2024

  1. Bumped version to 0.0.3

    kill05 committed Jun 10, 2024
    Copy the full SHA
    2226634 View commit details
  2. Added item and block ID config

    kill05 committed Jun 10, 2024
    Copy the full SHA
    3111ffb View commit details
  3. Copy the full SHA
    a912553 View commit details

Commits on Jun 11, 2024

  1. Copy the full SHA
    8d0e0ca View commit details
  2. Copy the full SHA
    45c34d9 View commit details
  3. Copy the full SHA
    33bdb6c View commit details
  4. Copy the full SHA
    4c291a1 View commit details
  5. Copy the full SHA
    5af84c0 View commit details
  6. Updated libraries

    kill05 committed Jun 11, 2024
    Copy the full SHA
    c327658 View commit details
  7. Copy the full SHA
    c8a8562 View commit details
  8. Removed debug

    kill05 committed Jun 11, 2024
    Copy the full SHA
    95f832c View commit details
  9. Copy the full SHA
    97951f1 View commit details
  10. Updated libraries

    kill05 committed Jun 11, 2024
    Copy the full SHA
    3825675 View commit details
  11. Fixed texture

    kill05 committed Jun 11, 2024
    Copy the full SHA
    b65c686 View commit details
  12. Copy the full SHA
    2162c15 View commit details
  13. Fixed negative statistics

    kill05 committed Jun 11, 2024
    Copy the full SHA
    c01f11a View commit details
  14. Fixed wrong translation

    kill05 committed Jun 11, 2024
    Copy the full SHA
    05d3b8e View commit details
  15. Copy the full SHA
    d829450 View commit details
  16. Copy the full SHA
    1a6778f View commit details

Commits on Jun 13, 2024

  1. Copy the full SHA
    be1b51a View commit details

Commits on Jun 15, 2024

  1. Copy the full SHA
    ea2bf5b View commit details
  2. Updated halplibe to 4.1.1

    kill05 committed Jun 15, 2024
    Copy the full SHA
    6db6fc8 View commit details
  3. Copy the full SHA
    7ca3e34 View commit details

Commits on Jun 16, 2024

  1. Copy the full SHA
    3cd1026 View commit details
  2. Copy the full SHA
    791cdb7 View commit details
  3. Copy the full SHA
    36d5d1c View commit details
  4. Bumped version to 0.0.4

    kill05 committed Jun 16, 2024
    Copy the full SHA
    5d64c9b View commit details
  5. Changed halplibe version

    kill05 committed Jun 16, 2024
    Copy the full SHA
    a7762d5 View commit details
  6. Copy the full SHA
    0b6f9e9 View commit details

Commits on Jun 17, 2024

  1. Copy the full SHA
    9a7e7f0 View commit details
  2. Updated modmenu

    kill05 committed Jun 17, 2024
    Copy the full SHA
    786f4fa View commit details
  3. Fixed buttons in multiplayer

    kill05 committed Jun 17, 2024
    Copy the full SHA
    220e92a View commit details
  4. Added ArchitectTool durability

    kill05 committed Jun 17, 2024
    Copy the full SHA
    e7f3108 View commit details
  5. Fixed stack overflow

    kill05 committed Jun 17, 2024
    Copy the full SHA
    4625cf3 View commit details
  6. Copy the full SHA
    c2b722b View commit details
  7. Copy the full SHA
    057907c View commit details

Commits on Jun 19, 2024

  1. Copy the full SHA
    e2496e6 View commit details
  2. Changed the main path

    kill05 committed Jun 19, 2024
    Copy the full SHA
    cb25ac3 View commit details
  3. Copy the full SHA
    ac147f3 View commit details

Commits on Jun 20, 2024

  1. Copy the full SHA
    feb9999 View commit details
  2. Update README.md

    kill05 authored Jun 20, 2024
    Copy the full SHA
    6b91d83 View commit details
  3. Bump version to 0.0.5

    kill05 committed Jun 20, 2024
    Copy the full SHA
    d85c2f1 View commit details

Commits on Nov 20, 2024

  1. Copy the full SHA
    5ddef31 View commit details
Showing with 1,412 additions and 653 deletions.
  1. +0 −1 README.md
  2. +2 −2 build.gradle
  3. +3 −3 gradle.properties
  4. BIN libraries/catalyst-core-1.2.1.jar
  5. BIN libraries/catalyst-core-1.4.3.jar
  6. BIN libraries/catalyst-fluids-1.1.1.jar
  7. +53 −0 src/main/java/com/github/kill05/architectstools/ArchitectGuis.java
  8. +87 −55 src/main/java/com/github/kill05/{ → architectstools}/ArchitectTools.java
  9. +1 −1 src/main/java/com/github/kill05/{ → architectstools}/MiningLevel.java
  10. +46 −0 src/main/java/com/github/kill05/architectstools/MixinConfigPlugin.java
  11. +44 −0 src/main/java/com/github/kill05/architectstools/blocks/architectstation/ArchitectTableBlock.java
  12. +8 −8 ...ain/java/com/github/kill05/{ → architectstools}/blocks/architectstation/ArchitectTableButton.java
  13. +14 −5 ...java/com/github/kill05/{ → architectstools}/blocks/architectstation/ArchitectTableTileEntity.java
  14. +32 −0 ...om/github/kill05/architectstools/blocks/architectstation/inventory/ArchitectStationContainer.java
  15. +54 −0 ...java/com/github/kill05/architectstools/blocks/architectstation/inventory/ArchitectStationGui.java
  16. +31 −0 ...m/github/kill05/architectstools/blocks/architectstation/inventory/ArchitectStationGuiFactory.java
  17. +22 −6 ...architectstation → architectstools/blocks/architectstation/inventory}/part/PartModeContainer.java
  18. +64 −0 ...in/java/com/github/kill05/architectstools/blocks/architectstation/inventory/part/PartModeGui.java
  19. +2 −2 ...architectstation → architectstools/blocks/architectstation/inventory}/part/PartModeInputSlot.java
  20. +52 −0 .../com/github/kill05/architectstools/blocks/architectstation/inventory/part/PartModeOutputSlot.java
  21. +19 −9 ...architectstation → architectstools/blocks/architectstation/inventory}/tool/ToolModeContainer.java
  22. +41 −0 ...in/java/com/github/kill05/architectstools/blocks/architectstation/inventory/tool/ToolModeGui.java
  23. +5 −5 ...rchitectstation → architectstools/blocks/architectstation/inventory}/tool/ToolModeOutputSlot.java
  24. +47 −0 src/main/java/com/github/kill05/architectstools/config/ArchitectConfig.java
  25. +1 −1 src/main/java/com/github/kill05/{ → architectstools}/exceptions/ArchitectItemException.java
  26. +1 −1 src/main/java/com/github/kill05/{ → architectstools}/exceptions/InvalidMaterialException.java
  27. +1 −1 src/main/java/com/github/kill05/{ → architectstools}/inventory/OutputInventory.java
  28. +4 −10 src/main/java/com/github/kill05/{ → architectstools}/inventory/button/ItemTexturedButton.java
  29. +1 −1 src/main/java/com/github/kill05/{ → architectstools}/inventory/container/TileContainer.java
  30. +2 −2 src/main/java/com/github/kill05/{ → architectstools}/inventory/gui/TileContainerGui.java
  31. +1 −1 src/main/java/com/github/kill05/{ → architectstools}/inventory/slot/OutputSlot.java
  32. +11 −0 src/main/java/com/github/kill05/architectstools/items/IArchitectItem.java
  33. +5 −5 src/main/java/com/github/kill05/{ → architectstools}/items/model/ArchitectPartModel.java
  34. +5 −5 src/main/java/com/github/kill05/{ → architectstools}/items/model/ArchitectToolModel.java
  35. +45 −35 src/main/java/com/github/kill05/{ → architectstools}/items/part/ArchitectPart.java
  36. +4 −4 src/main/java/com/github/kill05/{ → architectstools}/items/part/PartType.java
  37. +2 −2 src/main/java/com/github/kill05/{ → architectstools}/items/part/statistics/DurabilityStatistic.java
  38. +11 −2 src/main/java/com/github/kill05/{ → architectstools}/items/part/statistics/FloatStatistic.java
  39. +11 −2 src/main/java/com/github/kill05/{ → architectstools}/items/part/statistics/IntegerStatistic.java
  40. +2 −2 src/main/java/com/github/kill05/{ → architectstools}/items/part/statistics/MiningLevelStatistic.java
  41. +9 −7 src/main/java/com/github/kill05/{ → architectstools}/items/part/statistics/PartStatistic.java
  42. +2 −2 src/main/java/com/github/kill05/{ → architectstools}/items/part/statistics/PartStatistics.java
  43. +20 −0 src/main/java/com/github/kill05/architectstools/items/tool/ArchitectAxe.java
  44. +34 −0 src/main/java/com/github/kill05/architectstools/items/tool/ArchitectMattock.java
  45. +6 −6 src/main/java/com/github/kill05/{ → architectstools}/items/tool/ArchitectPickaxe.java
  46. +25 −0 src/main/java/com/github/kill05/architectstools/items/tool/ArchitectShortsword.java
  47. +6 −6 src/main/java/com/github/kill05/{ → architectstools}/items/tool/ArchitectShovel.java
  48. +56 −29 src/main/java/com/github/kill05/{ → architectstools}/items/tool/ArchitectTool.java
  49. +13 −8 src/main/java/com/github/kill05/{ → architectstools}/items/tool/ToolPartInfo.java
  50. +91 −42 src/main/java/com/github/kill05/{ → architectstools}/materials/ArchitectMaterial.java
  51. +6 −0 src/main/java/com/github/kill05/architectstools/materials/MaterialInfo.java
  52. +2 −2 src/main/java/com/github/kill05/{ → architectstools}/materials/MaterialType.java
  53. +25 −0 src/main/java/com/github/kill05/architectstools/mixins/CreativeEntryMixin.java
  54. +24 −0 src/main/java/com/github/kill05/architectstools/mixins/ItemModelStandardMixin.java
  55. +27 −9 src/main/java/com/github/kill05/{ → architectstools}/mixins/ItemStackMixin.java
  56. +1 −1 src/main/java/com/github/kill05/{ → architectstools}/mixins/StringTagMixin.java
  57. +67 −0 src/main/java/com/github/kill05/architectstools/mixins/disablevanilla/ItemToolMixin.java
  58. +25 −0 src/main/java/com/github/kill05/architectstools/mixins/disablevanilla/ItemToolPickaxeMixin.java
  59. +68 −0 src/main/java/com/github/kill05/architectstools/mixins/disablevanilla/ItemToolSwordMixin.java
  60. +110 −0 src/main/java/com/github/kill05/architectstools/recipe/RecipeEntryRepairTool.java
  61. +2 −2 src/main/java/com/github/kill05/{ → architectstools}/tile/InventoryTileEntity.java
  62. +1 −1 src/main/java/com/github/kill05/{ → architectstools}/utils/ClassUtils.java
  63. +18 −1 src/main/java/com/github/kill05/{ → architectstools}/utils/InventoryUtils.java
  64. +20 −6 src/main/java/com/github/kill05/{ → architectstools}/utils/ItemUtils.java
  65. +1 −1 src/main/java/com/github/kill05/{ → architectstools}/utils/NBTUtils.java
  66. +1 −1 src/main/java/com/github/kill05/{ → architectstools}/utils/RenderUtils.java
  67. +2 −2 src/main/java/com/github/kill05/{ → architectstools}/utils/TextureUtils.java
  68. +0 −31 src/main/java/com/github/kill05/blocks/architectstation/ArchitectTableBlock.java
  69. +0 −20 src/main/java/com/github/kill05/blocks/architectstation/ChangePageButton.java
  70. +0 −63 src/main/java/com/github/kill05/blocks/architectstation/part/PartModeGui.java
  71. +0 −66 src/main/java/com/github/kill05/blocks/architectstation/part/PartModeOutputSlot.java
  72. +0 −85 src/main/java/com/github/kill05/blocks/architectstation/tool/ToolModeGui.java
  73. +0 −9 src/main/java/com/github/kill05/items/ArchitectItem.java
  74. +0 −27 src/main/java/com/github/kill05/items/tool/ArchitectAxe.java
  75. +0 −23 src/main/java/com/github/kill05/items/tool/ArchitectMattock.java
  76. +0 −23 src/main/java/com/github/kill05/items/tool/ArchitectShortsword.java
  77. BIN src/main/resources/assets/architectstools/textures/block/architect_table_side.png
  78. BIN src/main/resources/assets/architectstools/textures/block/architect_table_top.png
  79. BIN src/main/resources/assets/architectstools/textures/gui/tool_mode.png
  80. BIN src/main/resources/assets/architectstools/textures/item/part/{sharpening_kit.png → repair_kit.png}
  81. BIN ...ces/assets/architectstools/textures/item/part/{sharpening_kit_cactus.png → repair_kit_cactus.png}
  82. BIN ...assets/architectstools/textures/item/part/{sharpening_kit_contrast.png → repair_kit_contrast.png}
  83. BIN ...urces/assets/architectstools/textures/item/part/{sharpening_kit_paper.png → repair_kit_paper.png}
  84. +5 −6 src/main/resources/fabric.mod.json
  85. +3 −1 src/main/resources/lang/architectstools/en_US.lang
  86. +8 −2 src/main/resources/mixins.json
1 change: 0 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -5,7 +5,6 @@ A port of Tinker's Construct for [**BTA**](https://www.betterthanadventure.net).
- This mod is in **alpha**.
This means it's extremely **unstable** and only meant to be used for **testing** purposes.
Breaking changes are likely to happen, so beware of that.
- **Currently**, this mod does **NOT** support multiplayer

## Dependencies
- [Halplibe](https://github.com/Turnip-Labs/bta-halplibe/releases)
4 changes: 2 additions & 2 deletions build.gradle
Original file line number Diff line number Diff line change
@@ -85,8 +85,8 @@ dependencies {
modImplementation "com.github.Turnip-Labs:bta-halplibe:${project.halplibe_version}"
modImplementation "ModMenu:ModMenu:${project.mod_menu_version}"

implementation files("libraries/catalyst-core-1.2.1.jar")
implementation files("libraries/catalyst-fluids-1.1.1.jar")
implementation files("libraries/catalyst-core-1.4.3.jar")
//implementation files("libraries/catalyst-fluids-1.1.6.jar")

implementation files("libraries/btwaila-1.1.0-7.2-pre1.jar");

6 changes: 3 additions & 3 deletions gradle.properties
Original file line number Diff line number Diff line change
@@ -5,12 +5,12 @@ bta_version=7.2-pre1

# Loader & Mod Menu
loader_version=0.15.6-babric.6-bta
mod_menu_version=2.0.5
mod_menu_version=2.0.6

# HalpLibe
halplibe_version=4.0.6
halplibe_version=4.1.2

# Mod
mod_version=0.0.2
mod_version=0.0.5
mod_group=kill05
mod_name=architectstools
Binary file removed libraries/catalyst-core-1.2.1.jar
Binary file not shown.
Binary file added libraries/catalyst-core-1.4.3.jar
Binary file not shown.
Binary file removed libraries/catalyst-fluids-1.1.1.jar
Binary file not shown.
53 changes: 53 additions & 0 deletions src/main/java/com/github/kill05/architectstools/ArchitectGuis.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
package com.github.kill05.architectstools;

import com.github.kill05.architectstools.blocks.architectstation.ArchitectTableTileEntity;
import com.github.kill05.architectstools.blocks.architectstation.inventory.ArchitectStationGuiFactory;
import com.github.kill05.architectstools.blocks.architectstation.inventory.part.PartModeContainer;
import com.github.kill05.architectstools.blocks.architectstation.inventory.part.PartModeGui;
import com.github.kill05.architectstools.blocks.architectstation.inventory.tool.ToolModeContainer;
import com.github.kill05.architectstools.blocks.architectstation.inventory.tool.ToolModeGui;
import net.minecraft.client.entity.player.EntityPlayerSP;
import net.minecraft.client.gui.GuiScreen;
import net.minecraft.core.player.inventory.Container;
import net.minecraft.server.entity.player.EntityPlayerMP;
import org.jetbrains.annotations.NotNull;
import turniplabs.halplibe.helper.gui.GuiHelper;
import turniplabs.halplibe.helper.gui.registered.RegisteredGui;

public class ArchitectGuis {

public static final RegisteredGui PART_MODE = GuiHelper.registerServerGui(ArchitectTools.MOD_ID, "part_mode", new ArchitectStationGuiFactory() {
@Override
public @NotNull GuiScreen createGui(@NotNull RegisteredGui gui, @NotNull EntityPlayerSP player, @NotNull ArchitectTableTileEntity tile) {
return new PartModeGui(tile, player);
}

@Override
public @NotNull Container createContainer(@NotNull RegisteredGui gui, @NotNull EntityPlayerMP player, @NotNull ArchitectTableTileEntity tile) {
return new PartModeContainer(tile, player);
}

@Override
public RegisteredGui getNextGui() {
return TOOL_MODE;
}
});

public static final RegisteredGui TOOL_MODE = GuiHelper.registerServerGui(ArchitectTools.MOD_ID, "tool_mode", new ArchitectStationGuiFactory() {
@Override
public @NotNull GuiScreen createGui(@NotNull RegisteredGui gui, @NotNull EntityPlayerSP player, @NotNull ArchitectTableTileEntity tile) {
return new ToolModeGui(tile, player);
}

@Override
public @NotNull Container createContainer(@NotNull RegisteredGui gui, @NotNull EntityPlayerMP player, @NotNull ArchitectTableTileEntity tile) {
return new ToolModeContainer(tile, player);
}

@Override
public RegisteredGui getNextGui() {
return PART_MODE;
}
});

}
Original file line number Diff line number Diff line change
@@ -1,45 +1,48 @@
package com.github.kill05;

import com.github.kill05.blocks.architectstation.ArchitectTableBlock;
import com.github.kill05.blocks.architectstation.ArchitectTableTileEntity;
import com.github.kill05.exceptions.ArchitectItemException;
import com.github.kill05.exceptions.InvalidMaterialException;
import com.github.kill05.items.part.ArchitectPart;
import com.github.kill05.items.part.PartType;
import com.github.kill05.items.tool.ArchitectTool;
import com.github.kill05.items.tool.ToolPartInfo;
import com.github.kill05.materials.ArchitectMaterial;
import com.github.kill05.utils.ClassUtils;
import com.github.kill05.utils.ItemUtils;
import com.mojang.nbt.*;
package com.github.kill05.architectstools;

import com.github.kill05.architectstools.blocks.architectstation.ArchitectTableBlock;
import com.github.kill05.architectstools.blocks.architectstation.ArchitectTableTileEntity;
import com.github.kill05.architectstools.config.ArchitectConfig;
import com.github.kill05.architectstools.exceptions.ArchitectItemException;
import com.github.kill05.architectstools.exceptions.InvalidMaterialException;
import com.github.kill05.architectstools.items.part.ArchitectPart;
import com.github.kill05.architectstools.items.part.PartType;
import com.github.kill05.architectstools.items.tool.ArchitectTool;
import com.github.kill05.architectstools.items.tool.ToolPartInfo;
import com.github.kill05.architectstools.materials.ArchitectMaterial;
import com.github.kill05.architectstools.materials.MaterialInfo;
import com.github.kill05.architectstools.recipe.RecipeEntryRepairTool;
import com.github.kill05.architectstools.utils.ClassUtils;
import com.github.kill05.architectstools.utils.ItemUtils;
import com.mojang.nbt.ListTag;
import com.mojang.nbt.StringTag;
import net.fabricmc.api.ModInitializer;
import net.minecraft.client.Minecraft;
import net.minecraft.client.render.stitcher.TextureRegistry;
import net.minecraft.core.block.Block;
import net.minecraft.core.block.tag.BlockTags;
import net.minecraft.core.data.DataLoader;
import net.minecraft.core.data.registry.Registries;
import net.minecraft.core.data.registry.recipe.RecipeGroup;
import net.minecraft.core.data.registry.recipe.RecipeNamespace;
import net.minecraft.core.data.registry.recipe.RecipeSymbol;
import net.minecraft.core.data.registry.recipe.entry.RecipeEntryCrafting;
import net.minecraft.core.item.Item;
import net.minecraft.core.item.ItemStack;
import org.apache.commons.lang3.tuple.Pair;
import net.minecraft.core.sound.BlockSounds;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import turniplabs.halplibe.helper.BlockBuilder;
import turniplabs.halplibe.helper.EntityHelper;
import turniplabs.halplibe.helper.ItemBuilder;
import turniplabs.halplibe.helper.RecipeBuilder;
import turniplabs.halplibe.helper.*;
import turniplabs.halplibe.util.ClientStartEntrypoint;
import turniplabs.halplibe.util.RecipeEntrypoint;

import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;
import java.nio.file.*;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Iterator;
import java.util.List;
import java.util.*;
import java.util.function.BiConsumer;
import java.util.stream.Stream;

@@ -49,19 +52,24 @@ public final class ArchitectTools implements ModInitializer, RecipeEntrypoint, C
public static final String MOD_ID = "architectstools";
public static final Logger LOGGER = LoggerFactory.getLogger(MOD_ID);
public static final int MAX_TOOL_PARTS = 3;
public static int ITEM_ID = 20000;
public static int BLOCK_ID = 1500;

static {
new Registries();
}
public static final RecipeNamespace RECIPE_NAMESPACE = new RecipeNamespace();
public static final RecipeGroup<RecipeEntryCrafting<?, ?>> RECIPE_WORKBENCH = new RecipeGroup<>(new RecipeSymbol(new ItemStack(Block.workbench)));


// Items and Blocks
public static final Item BLANK_PATTERN = item("blank_pattern", "blank_pattern");

public static final Block ARCHITECT_TABLE_BLOCK = new BlockBuilder(MOD_ID)
.build(new ArchitectTableBlock(BLOCK_ID++));
.setTopTexture(MOD_ID + ":block/architect_table_top")
.setSideTextures(MOD_ID + ":block/architect_table_side")
.setBottomTexture("minecraft" + ":block/planks_oak")
.setHardness(2.5F)
.setResistance(5.0F)
.setFlammability(10, 10)
.setBlockSound(BlockSounds.WOOD)
.setTags(BlockTags.MINEABLE_BY_AXE)
.build(new ArchitectTableBlock());


public static <T extends Item> T item(T item, String texture) {
@@ -73,41 +81,47 @@ public static <T extends Item> T item(T item, String texture) {
public static Item item(String name, String texture) {
return new ItemBuilder(MOD_ID)
.setIcon(MOD_ID + ":item/" + texture)
.build(new Item(name, ITEM_ID++));
.build(new Item(name, ArchitectConfig.ITEM_ID++));
}


// Materials
public static @Nullable ArchitectMaterial getMaterial(@Nullable String id) {
if (id == null) return null;
return ArchitectMaterial.MATERIAL_REGISTRY.getItem(id);
}

public static @Nullable ArchitectMaterial getMaterial(@Nullable ItemStack item) {
if (item == null) return null;
public static @NotNull MaterialInfo getMaterialInfo(@Nullable ItemStack item) {
if (item == null) return new MaterialInfo(null, 0);
for (ArchitectMaterial material : ArchitectMaterial.MATERIAL_REGISTRY) {
if (material.isThisMaterial(item)) return material;
Integer value = material.getMaterialValue(item);
if (value != null) return new MaterialInfo(material, value);
}

return null;
return new MaterialInfo(null, 0);
}


// Tool Parts
public static @NotNull ItemStack createPartStack(@NotNull ArchitectMaterial material, ArchitectPart type) {
return material.createPart(type);
public static @NotNull ItemStack createPartStack(@NotNull ArchitectMaterial material, ArchitectPart part) throws ArchitectItemException {
if (!material.isValidPart(part))
throw new ArchitectItemException(String.format("Part '%s' can't be made out of material '%s'", part.getPartId(), material.id()));

ItemStack item = new ItemStack(part);
setPartMaterial(item, material);
return item;
}

public static @NotNull ItemStack createPartStack(@NotNull String material, @NotNull ArchitectPart part) throws InvalidMaterialException {
ArchitectMaterial architectMaterial = getMaterial(material);
if (architectMaterial == null) throw new InvalidMaterialException("Invalid material: " + material);
return architectMaterial.createPart(part);
public static @NotNull ItemStack createPartStack(@NotNull String materialName, @NotNull ArchitectPart part) throws InvalidMaterialException, ArchitectItemException {
ArchitectMaterial material = getMaterial(materialName);
if (material == null) throw new InvalidMaterialException("Invalid material: " + materialName);
return createPartStack(material, part);
}

public static @NotNull ItemStack createPartStack(@NotNull ItemStack material, @NotNull ArchitectPart part) throws InvalidMaterialException {
ArchitectMaterial architectMaterial = getMaterial(material);
if (architectMaterial == null) throw new InvalidMaterialException("Invalid material: " + material);
return architectMaterial.createPart(part);
public static @NotNull ItemStack createPartStack(@NotNull ItemStack materialItem, @NotNull ArchitectPart part) throws InvalidMaterialException, ArchitectItemException {
MaterialInfo info = getMaterialInfo(materialItem);
if (info.material() == null) throw new InvalidMaterialException("Invalid material: " + materialItem);
if (info.value() * materialItem.stackSize < part.getMaterialCost()) throw new InvalidMaterialException("Not enough material.");
return createPartStack(info.material(), part);
}

public static @Nullable ArchitectMaterial getPartMaterial(@NotNull ItemStack item) {
@@ -192,17 +206,17 @@ public static void setToolPart(@NotNull ItemStack item, @NotNull PartType part,
return getMaterial(materialTag.getValue());
}

public static List<Pair<@NotNull ToolPartInfo, @Nullable ArchitectMaterial>> getToolParts(@NotNull ItemStack item, @Nullable PartType type) {
public static Map<@NotNull ToolPartInfo, @Nullable ArchitectMaterial> getToolParts(@NotNull ItemStack item, @Nullable PartType type) {
if (!(item.getItem() instanceof ArchitectTool tool))
throw new ArchitectItemException("Item is not an ArchitectTool.");

ArrayList<Pair<ToolPartInfo, ArchitectMaterial>> list = new ArrayList<>();
Map<ToolPartInfo, ArchitectMaterial> map = new LinkedHashMap<>();
for (ToolPartInfo info : tool.getPartList()) {
if (type != null && info.type() != type) continue;
list.add(Pair.of(info, getToolPart(item, info)));
map.put(info, getToolPart(item, info));
}

return list;
return map;
}

public static void iterateToolParts(@NotNull ItemStack item, boolean renderOrder, @NotNull BiConsumer<@NotNull ToolPartInfo, @Nullable ArchitectMaterial> consumer) {
@@ -218,14 +232,25 @@ public static void iterateToolParts(@NotNull ItemStack item, boolean renderOrder
// Code
@Override
public void onInitialize() {
EntityHelper.createTileEntity(ArchitectTableTileEntity.class, "architect_station");

// Register items
// Register materials and items
ClassUtils.initializeClasses(
ArchitectMaterial.class,
ArchitectPart.class,
ArchitectTool.class
);

ItemStack parent = BLANK_PATTERN.getDefaultStack();
for (ArchitectMaterial material : ArchitectMaterial.MATERIAL_REGISTRY) {
for (ArchitectPart part : ArchitectPart.VALUES) {
try {
CreativeHelper.setParent(ArchitectTools.createPartStack(material, part), parent);
} catch (ArchitectItemException ignored) { // Some parts can't be made out of certain materials
}
}
}

EntityHelper.createTileEntity(ArchitectTableTileEntity.class, "architect_station");

LOGGER.info("Architect's Tools initialized.");
}

@@ -268,7 +293,7 @@ public void afterClientStart() {
}
Iterator<Path> it = walk.iterator();

while(it.hasNext()) {
while (it.hasNext()) {
Path file = it.next();
String name = file.getFileName().toString();
if (name.endsWith(".png")) {
@@ -301,6 +326,11 @@ public void afterClientStart() {

@Override
public void onRecipesReady() {
ArchitectMaterial.lock();
for (ArchitectMaterial material : ArchitectMaterial.MATERIAL_REGISTRY) {
material.initGroups();
}

RecipeBuilder.Shaped(MOD_ID, "xo", "ox")
.addInput('x', Item.stick)
.addInput('o', "minecraft:planks")
@@ -313,12 +343,14 @@ public void onRecipesReady() {
.addInput('b', BLANK_PATTERN)
.addInput('w', Block.workbench)
.create("architect_table", ARCHITECT_TABLE_BLOCK.getDefaultStack());

Registries.RECIPES.addCustomRecipe(MOD_ID + ":workbench/repair_tool", new RecipeEntryRepairTool());
}

@Override
public void initNamespaces() {

Registries.RECIPES.register(MOD_ID, RECIPE_NAMESPACE);
RECIPE_NAMESPACE.register("workbench", RECIPE_WORKBENCH);
}


}
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.github.kill05;
package com.github.kill05.architectstools;

import net.minecraft.core.lang.I18n;
import turniplabs.halplibe.mixin.accessors.LanguageAccessor;
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
package com.github.kill05.architectstools;

import org.objectweb.asm.tree.ClassNode;
import org.spongepowered.asm.mixin.extensibility.IMixinConfigPlugin;
import org.spongepowered.asm.mixin.extensibility.IMixinInfo;

import java.util.List;
import java.util.Set;

public class MixinConfigPlugin implements IMixinConfigPlugin {

@Override
public void onLoad(String mixinPackage) {

}

@Override
public String getRefMapperConfig() {
return null;
}

@Override
public boolean shouldApplyMixin(String targetClassName, String mixinClassName) {
return true;
}

@Override
public void acceptTargets(Set<String> myTargets, Set<String> otherTargets) {

}

@Override
public List<String> getMixins() {
return null;
}

@Override
public void preApply(String targetClassName, ClassNode targetClass, String mixinClassName, IMixinInfo mixinInfo) {

}

@Override
public void postApply(String targetClassName, ClassNode targetClass, String mixinClassName, IMixinInfo mixinInfo) {

}
}
Loading