[Feature] SmithingTemplates for Armor/Tool/Anvil and Elytra upgrades

This commit is contained in:
Frank 2023-06-07 18:50:51 +02:00
parent ff17a9ad3c
commit 4e2b2737aa
35 changed files with 272 additions and 34 deletions

View file

@ -46,6 +46,7 @@ public class BetterEnd implements ModInitializer {
EndTags.register();
EndBlocks.ensureStaticallyLoaded();
EndItems.ensureStaticallyLoaded();
EndTemplates.ensureStaticallyLoaded();
EndEnchantments.register();
EndPotions.register();
InfusionRecipe.register();

View file

@ -17,6 +17,7 @@ import org.betterx.betterend.item.tool.EndHammerItem;
import org.betterx.betterend.item.tool.EndPickaxe;
import org.betterx.betterend.registry.EndBlocks;
import org.betterx.betterend.registry.EndItems;
import org.betterx.betterend.registry.EndTemplates;
import org.betterx.worlds.together.tag.v3.TagManager;
import net.minecraft.tags.BlockTags;
@ -76,13 +77,15 @@ public class MetalMaterial {
public final Item boots;
public final TagKey<Item> alloyingOre;
public final SmithingTemplateItem swordHandleTemplate;
public static MetalMaterial makeNormal(
String name,
MapColor color,
Tier material,
ArmorMaterial armor,
int anvilAndToolLevel
int anvilAndToolLevel,
SmithingTemplateItem swordHandleTemplate
) {
return new MetalMaterial(
name,
@ -91,7 +94,8 @@ public class MetalMaterial {
EndItems.makeEndItemSettings(),
material,
armor,
anvilAndToolLevel
anvilAndToolLevel,
swordHandleTemplate
);
}
@ -102,7 +106,8 @@ public class MetalMaterial {
float resistance,
Tier material,
ArmorMaterial armor,
int anvilAndToolLevel
int anvilAndToolLevel,
SmithingTemplateItem swordHandleTemplate
) {
return new MetalMaterial(
name,
@ -114,7 +119,8 @@ public class MetalMaterial {
EndItems.makeEndItemSettings(),
material,
armor,
anvilAndToolLevel
anvilAndToolLevel,
swordHandleTemplate
);
}
@ -123,7 +129,8 @@ public class MetalMaterial {
MapColor color,
Tier material,
ArmorMaterial armor,
int anvilAndToolLevel
int anvilAndToolLevel,
SmithingTemplateItem swordHandleTemplate
) {
return new MetalMaterial(
name,
@ -132,7 +139,8 @@ public class MetalMaterial {
EndItems.makeEndItemSettings(),
material,
armor,
anvilAndToolLevel
anvilAndToolLevel,
swordHandleTemplate
);
}
@ -143,7 +151,8 @@ public class MetalMaterial {
float resistance,
Tier material,
ArmorMaterial armor,
int anvilAndToolLevel
int anvilAndToolLevel,
SmithingTemplateItem swordHandleTemplate
) {
return new MetalMaterial(
name,
@ -155,7 +164,8 @@ public class MetalMaterial {
EndItems.makeEndItemSettings(),
material,
armor,
anvilAndToolLevel
anvilAndToolLevel,
swordHandleTemplate
);
}
@ -166,7 +176,8 @@ public class MetalMaterial {
Properties itemSettings,
Tier material,
ArmorMaterial armor,
int anvilAndToolLevel
int anvilAndToolLevel,
SmithingTemplateItem swordHandleTemplate
) {
BlockBehaviour.Properties lanternProperties = FabricBlockSettings.copyOf(settings)
.hardness(1)
@ -174,7 +185,7 @@ public class MetalMaterial {
.lightLevel((bs) -> 15)
.sound(SoundType.LANTERN);
final int level = material.getLevel();
this.swordHandleTemplate = swordHandleTemplate;
rawOre = hasOre ? EndItems.registerEndItem(name + "_raw", new ModelProviderItem(itemSettings)) : null;
ore = hasOre ? EndBlocks.registerBlock(name + "_ore", new BaseOreBlock(() -> rawOre, 1, 3, 1)) : null;
alloyingOre = hasOre ? TagManager.ITEMS.makeTag(BetterEnd.MOD_ID, name + "_alloying") : null;
@ -416,30 +427,37 @@ public class MetalMaterial {
// Tools from parts
BCLRecipeBuilder.smithing(BetterEnd.makeID(name + "_hammer"), hammer)
.setTemplate(EndTemplates.HANDLE_ATTACHMENT)
.setPrimaryInputAndUnlock(block)
.setAddition(Items.STICK)
.build();
BCLRecipeBuilder.smithing(BetterEnd.makeID(name + "_axe"), axe)
.setTemplate(EndTemplates.HANDLE_ATTACHMENT)
.setPrimaryInputAndUnlock(axeHead)
.setAddition(Items.STICK)
.build();
BCLRecipeBuilder.smithing(BetterEnd.makeID(name + "_pickaxe"), pickaxe)
.setTemplate(EndTemplates.HANDLE_ATTACHMENT)
.setPrimaryInputAndUnlock(pickaxeHead)
.setAddition(Items.STICK)
.build();
BCLRecipeBuilder.smithing(BetterEnd.makeID(name + "_hoe"), hoe)
.setTemplate(EndTemplates.HANDLE_ATTACHMENT)
.setPrimaryInputAndUnlock(hoeHead)
.setAddition(Items.STICK)
.build();
BCLRecipeBuilder.smithing(BetterEnd.makeID(name + "_sword_handle"), swordHandle)
.setPrimaryInputAndUnlock(ingot)
.setAddition(Items.STICK)
.setTemplate(this.swordHandleTemplate)
.setPrimaryInputAndUnlock(Items.STICK)
.setAddition(ingot)
.build();
BCLRecipeBuilder.smithing(BetterEnd.makeID(name + "_sword"), sword)
.setTemplate(EndTemplates.TOOL_ASSEMBLY)
.setPrimaryInputAndUnlock(swordBlade)
.setAddition(swordHandle)
.build();
BCLRecipeBuilder.smithing(BetterEnd.makeID(name + "_shovel"), shovel)
.setTemplate(EndTemplates.HANDLE_ATTACHMENT)
.setPrimaryInputAndUnlock(shovelHead)
.setAddition(Items.STICK)
.build();

View file

@ -4,76 +4,96 @@ import org.betterx.bclib.recipes.BCLRecipeBuilder;
import org.betterx.betterend.BetterEnd;
import org.betterx.betterend.registry.EndBlocks;
import org.betterx.betterend.registry.EndItems;
import org.betterx.betterend.registry.EndTemplates;
import net.minecraft.world.item.Items;
public class SmithingRecipes {
public static void register() {
BCLRecipeBuilder.smithing(BetterEnd.makeID("aeternium_sword_handle"), EndItems.AETERNIUM_SWORD_HANDLE)
.setPrimaryInputAndUnlock(EndBlocks.TERMINITE.ingot)
.setAddition(EndItems.LEATHER_WRAPPED_STICK)
.build();
BCLRecipeBuilder.smithing(BetterEnd.makeID("aeternium_sword"), EndItems.AETERNIUM_SWORD)
.setPrimaryInputAndUnlock(EndItems.AETERNIUM_SWORD_BLADE)
.setAddition(EndItems.AETERNIUM_SWORD_HANDLE)
.build();
BCLRecipeBuilder.smithing(BetterEnd.makeID("aeternium_pickaxe"), EndItems.AETERNIUM_PICKAXE)
.setTemplate(EndTemplates.LEATHER_HANDLE_ATTACHMENT)
.setPrimaryInputAndUnlock(EndItems.AETERNIUM_PICKAXE_HEAD)
.setAddition(EndItems.LEATHER_WRAPPED_STICK)
.build();
BCLRecipeBuilder.smithing(BetterEnd.makeID("aeternium_axe"), EndItems.AETERNIUM_AXE)
.setTemplate(EndTemplates.LEATHER_HANDLE_ATTACHMENT)
.setPrimaryInputAndUnlock(EndItems.AETERNIUM_AXE_HEAD)
.setAddition(EndItems.LEATHER_WRAPPED_STICK)
.build();
BCLRecipeBuilder.smithing(BetterEnd.makeID("aeternium_shovel"), EndItems.AETERNIUM_SHOVEL)
.setTemplate(EndTemplates.LEATHER_HANDLE_ATTACHMENT)
.setPrimaryInputAndUnlock(EndItems.AETERNIUM_SHOVEL_HEAD)
.setAddition(EndItems.LEATHER_WRAPPED_STICK)
.build();
BCLRecipeBuilder.smithing(BetterEnd.makeID("aeternium_hoe"), EndItems.AETERNIUM_HOE)
.setTemplate(EndTemplates.LEATHER_HANDLE_ATTACHMENT)
.setPrimaryInputAndUnlock(EndItems.AETERNIUM_HOE_HEAD)
.setAddition(EndItems.LEATHER_WRAPPED_STICK)
.build();
BCLRecipeBuilder.smithing(BetterEnd.makeID("aeternium_hammer"), EndItems.AETERNIUM_HAMMER)
.setTemplate(EndTemplates.LEATHER_HANDLE_ATTACHMENT)
.setPrimaryInputAndUnlock(EndItems.AETERNIUM_HAMMER_HEAD)
.setAddition(EndItems.LEATHER_WRAPPED_STICK)
.build();
BCLRecipeBuilder.smithing(BetterEnd.makeID("netherite_hammer"), EndItems.NETHERITE_HAMMER)
.setPrimaryInputAndUnlock(EndItems.DIAMOND_HAMMER)
.setAddition(Items.NETHERITE_INGOT)
BCLRecipeBuilder.smithing(BetterEnd.makeID("aeternium_sword"), EndItems.AETERNIUM_SWORD)
.setTemplate(EndTemplates.TOOL_ASSEMBLY)
.setPrimaryInputAndUnlock(EndItems.AETERNIUM_SWORD_BLADE)
.setAddition(EndItems.AETERNIUM_SWORD_HANDLE)
.build();
BCLRecipeBuilder.smithing(BetterEnd.makeID("aeternium_helmet"), EndItems.AETERNIUM_HELMET)
.setTemplate(EndTemplates.PLATE_UPGRADE)
.setPrimaryInputAndUnlock(EndBlocks.TERMINITE.helmet)
.setAddition(EndItems.AETERNIUM_FORGED_PLATE)
.build();
BCLRecipeBuilder.smithing(BetterEnd.makeID("aeternium_chestplate"), EndItems.AETERNIUM_CHESTPLATE)
.setTemplate(EndTemplates.PLATE_UPGRADE)
.setPrimaryInputAndUnlock(EndBlocks.TERMINITE.chestplate)
.setAddition(EndItems.AETERNIUM_FORGED_PLATE)
.build();
BCLRecipeBuilder.smithing(BetterEnd.makeID("aeternium_leggings"), EndItems.AETERNIUM_LEGGINGS)
.setTemplate(EndTemplates.PLATE_UPGRADE)
.setPrimaryInputAndUnlock(EndBlocks.TERMINITE.leggings)
.setAddition(EndItems.AETERNIUM_FORGED_PLATE)
.build();
BCLRecipeBuilder.smithing(BetterEnd.makeID("aeternium_boots"), EndItems.AETERNIUM_BOOTS)
.setTemplate(EndTemplates.PLATE_UPGRADE)
.setPrimaryInputAndUnlock(EndBlocks.TERMINITE.boots)
.setAddition(EndItems.AETERNIUM_FORGED_PLATE)
.build();
BCLRecipeBuilder.smithing(BetterEnd.makeID("thallasium_anvil_updrade"), EndBlocks.TERMINITE.anvilBlock.asItem())
.setPrimaryInputAndUnlock(EndBlocks.THALLASIUM.anvilBlock.asItem())
.setAddition(EndBlocks.TERMINITE.block)
BCLRecipeBuilder.smithing(BetterEnd.makeID("aeternium_sword_handle"), EndItems.AETERNIUM_SWORD_HANDLE)
.setTemplate(EndTemplates.TERMINITE_UPGRADE)
.setPrimaryInputAndUnlock(EndItems.LEATHER_WRAPPED_STICK)
.setAddition(EndBlocks.TERMINITE.ingot)
.build();
BCLRecipeBuilder.smithing(BetterEnd.makeID("terminite_anvil_updrade"), EndBlocks.AETERNIUM_ANVIL.asItem())
.setPrimaryInputAndUnlock(EndBlocks.TERMINITE.anvilBlock.asItem())
BCLRecipeBuilder.smithing(BetterEnd.makeID("thallasium_anvil_updrade"), EndBlocks.TERMINITE.anvilBlock)
.setTemplate(EndTemplates.TERMINITE_UPGRADE)
.setPrimaryInputAndUnlock(EndBlocks.THALLASIUM.anvilBlock)
.setAddition(EndBlocks.TERMINITE.ingot)
.build();
BCLRecipeBuilder.smithing(BetterEnd.makeID("terminite_anvil_updrade"), EndBlocks.AETERNIUM_ANVIL)
.setTemplate(EndTemplates.AETERNIUM_UPGRADE)
.setPrimaryInputAndUnlock(EndBlocks.TERMINITE.anvilBlock)
.setAddition(EndItems.AETERNIUM_INGOT)
.build();
BCLRecipeBuilder.smithing(BetterEnd.makeID("armored_elytra"), EndItems.ARMORED_ELYTRA)
.setTemplate(EndTemplates.AETERNIUM_UPGRADE)
.setPrimaryInputAndUnlock(Items.ELYTRA)
.setAddition(EndItems.AETERNIUM_INGOT)
.build();
BCLRecipeBuilder.smithing(BetterEnd.makeID("netherite_hammer"), EndItems.NETHERITE_HAMMER)
.setTemplate(EndTemplates.NETHERITE_UPGRADE)
.setPrimaryInputAndUnlock(EndItems.DIAMOND_HAMMER)
.setAddition(Items.NETHERITE_INGOT)
.build();
}
}

View file

@ -611,7 +611,8 @@ public class EndBlocks {
MapColor.COLOR_BLUE,
EndToolMaterial.THALLASIUM,
EndArmorMaterial.THALLASIUM,
EndToolMaterial.THALLASIUM.getLevel()
EndToolMaterial.THALLASIUM.getLevel(),
EndTemplates.THALLASIUM_UPGRADE
);
public static final MetalMaterial TERMINITE = MetalMaterial.makeOreless(
@ -621,7 +622,8 @@ public class EndBlocks {
9F,
EndToolMaterial.TERMINITE,
EndArmorMaterial.TERMINITE,
EndToolMaterial.TERMINITE.getLevel()
EndToolMaterial.TERMINITE.getLevel(),
EndTemplates.TERMINITE_UPGRADE
);
public static final Block AETERNIUM_BLOCK = registerBlock("aeternium_block", new AeterniumBlock());
public static final Block CHARCOAL_BLOCK = registerBlock("charcoal_block", new CharcoalBlock());

View file

@ -0,0 +1,108 @@
package org.betterx.betterend.registry;
import org.betterx.bclib.recipes.SmithingTemplates;
import org.betterx.betterend.BetterEnd;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.world.item.SmithingTemplateItem;
import java.util.List;
public class EndTemplates {
static final ResourceLocation EMPTY_SLOT_STICK = BetterEnd.makeID("item/empty_slot_stick");
static final ResourceLocation EMPTY_SLOT_HANDLE = BetterEnd.makeID("item/empty_slot_handle");
static final ResourceLocation EMPTY_SLOT_SWORD_HANDLE = BetterEnd.makeID("item/empty_slot_sword_handle");
static final ResourceLocation EMPTY_SLOT_SWORD_BLADE = BetterEnd.makeID("item/empty_slot_sword_blade");
static final ResourceLocation EMPTY_SLOT_PLATE = BetterEnd.makeID("item/empty_slot_plate");
static final ResourceLocation EMPTY_SLOT_HAMMER = BetterEnd.makeID("item/empty_slot_hammer");
static final ResourceLocation EMPTY_SLOT_HAMMER_HEAD = BetterEnd.makeID("item/empty_slot_hammer_head");
static final ResourceLocation EMPTY_SLOT_PICKAXE_HEAD = BetterEnd.makeID("item/empty_slot_pickaxe_head");
static final ResourceLocation EMPTY_SLOT_AXE_HEAD = BetterEnd.makeID("item/empty_slot_axe_head");
static final ResourceLocation EMPTY_SLOT_HOE_HEAD = BetterEnd.makeID("item/empty_slot_hoe_head");
static final ResourceLocation EMPTY_SLOT_SHOVEL_HEAD = BetterEnd.makeID("item/empty_slot_shovel_head");
static final ResourceLocation EMPTY_SLOT_ANVIL = BetterEnd.makeID("item/empty_slot_anvil");
static final ResourceLocation EMPTY_SLOT_ELYTRA = BetterEnd.makeID("item/empty_slot_elytra");
public static final SmithingTemplateItem HANDLE_ATTACHMENT = EndItems
.getItemRegistry()
.registerSmithingTemplateItem(
BetterEnd.makeID("handle_attachment"),
List.of(
EMPTY_SLOT_HAMMER_HEAD,
EMPTY_SLOT_PICKAXE_HEAD,
EMPTY_SLOT_AXE_HEAD,
EMPTY_SLOT_HOE_HEAD,
EMPTY_SLOT_SHOVEL_HEAD
),
List.of(EMPTY_SLOT_STICK)
);
public static final SmithingTemplateItem LEATHER_HANDLE_ATTACHMENT = EndItems
.getItemRegistry()
.registerSmithingTemplateItem(
BetterEnd.makeID("leather_handle_attachment"),
List.of(
EMPTY_SLOT_HAMMER_HEAD,
EMPTY_SLOT_PICKAXE_HEAD,
EMPTY_SLOT_AXE_HEAD,
EMPTY_SLOT_HOE_HEAD,
EMPTY_SLOT_SHOVEL_HEAD
),
List.of(EMPTY_SLOT_HANDLE)
);
public static final SmithingTemplateItem TOOL_ASSEMBLY = EndItems
.getItemRegistry()
.registerSmithingTemplateItem(
BetterEnd.makeID("tool_assembly"),
List.of(
EMPTY_SLOT_SWORD_BLADE
),
List.of(EMPTY_SLOT_SWORD_HANDLE)
);
public static final SmithingTemplateItem PLATE_UPGRADE = EndItems
.getItemRegistry()
.registerSmithingTemplateItem(
BetterEnd.makeID("plate_upgrade"),
SmithingTemplates.ARMOR,
List.of(EMPTY_SLOT_PLATE)
);
public static final SmithingTemplateItem THALLASIUM_UPGRADE = EndItems
.getItemRegistry()
.registerSmithingTemplateItem(
BetterEnd.makeID("thallasium_upgrade"),
List.of(EMPTY_SLOT_STICK),
List.of(SmithingTemplates.EMPTY_SLOT_INGOT)
);
public static final SmithingTemplateItem TERMINITE_UPGRADE = EndItems
.getItemRegistry()
.registerSmithingTemplateItem(
BetterEnd.makeID("terminite_upgrade"),
List.of(EMPTY_SLOT_ANVIL, EMPTY_SLOT_STICK),
List.of(SmithingTemplates.EMPTY_SLOT_INGOT)
);
public static final SmithingTemplateItem AETERNIUM_UPGRADE = EndItems
.getItemRegistry()
.registerSmithingTemplateItem(
BetterEnd.makeID("aeternium_upgrade"),
List.of(EMPTY_SLOT_ANVIL, EMPTY_SLOT_ELYTRA),
List.of(SmithingTemplates.EMPTY_SLOT_INGOT)
);
public static final SmithingTemplateItem NETHERITE_UPGRADE = EndItems
.getItemRegistry()
.registerSmithingTemplateItem(
BetterEnd.makeID("netherite_upgrade"),
List.of(EMPTY_SLOT_HAMMER),
List.of(SmithingTemplates.EMPTY_SLOT_INGOT)
);
public static void ensureStaticallyLoaded() {
}
}