Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add cogwheel amulet and fix some bugs 添加齿轮护符,修复部分问题 #1602

Open
wants to merge 6 commits into
base: releases/1.21
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion dependencies.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,8 @@ dependencies {
compileOnly(libs.theoneprobe)
compileOnly(libs.kubejs)

compileOnly("maven.modrinth:create:1.21.1-6.0.0")
// Create
implementation(libs.create)

// compileOnly("org.sinytra.forgified-fabric-api:fabric-api-base:0.4.42+d1308ded19")
// compileOnly("org.sinytra.forgified-fabric-api:fabric-renderer-api-v1:3.4.0+acb05a3919")
Expand Down
2 changes: 2 additions & 0 deletions gradle/libs.versions.toml
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ lombok = "8.7.1"
machete = "1.+"
anvillib = "1.1.0+build.97"
curios = "9.0.15+1.21.1"
create = "1.21.1-6.0.0"

[libraries]
neoForge = { group = "net.neoforged", name = "neoforge", version.ref = "neoForge" }
Expand All @@ -35,6 +36,7 @@ kubejs = { group = "dev.latvian.mods", name = "kubejs-neoforge", version.ref = "
patchouli = { group = "vazkii.patchouli", name = "Patchouli", version.ref = "patchouli" }
anvillib = { group = "dev.anvilcraft.lib", name = "anvillib-neoforge-1.21.1", version.ref = "anvillib" }
curios = { group = "top.theillusivec4.curios", name = "curios-neoforge", version.ref = "curios" }
create = { group = "maven.modrinth", name = "create", version.ref = "create" }


[plugins]
Expand Down
1 change: 1 addition & 0 deletions src/generated/resources/assets/anvilcraft/lang/en_ud.json
Original file line number Diff line number Diff line change
Expand Up @@ -365,6 +365,7 @@
"item.anvilcraft.cocoa_butter": "ɹǝʇʇnᗺ ɐoɔoƆ",
"item.anvilcraft.cocoa_liquor": "ɹonbıꞀ ɐoɔoƆ",
"item.anvilcraft.cocoa_powder": "ɹǝpʍoԀ ɐoɔoƆ",
"item.anvilcraft.cogwheel_amulet": "ʇǝןnɯⱯ ןǝǝɥʍboƆ",
"item.anvilcraft.comrade_amulet": "ʇǝןnɯⱯ ǝpɐɹɯoƆ",
"item.anvilcraft.comrade_amulet.tooltip": ":sɹǝʎɐןd pǝubıS",
"item.anvilcraft.copper_nugget": "ʇǝbbnN ɹǝddoƆ",
Expand Down
1 change: 1 addition & 0 deletions src/generated/resources/assets/anvilcraft/lang/en_us.json
Original file line number Diff line number Diff line change
Expand Up @@ -365,6 +365,7 @@
"item.anvilcraft.cocoa_butter": "Cocoa Butter",
"item.anvilcraft.cocoa_liquor": "Cocoa Liquor",
"item.anvilcraft.cocoa_powder": "Cocoa Powder",
"item.anvilcraft.cogwheel_amulet": "Cogwheel Amulet",
"item.anvilcraft.comrade_amulet": "Comrade Amulet",
"item.anvilcraft.comrade_amulet.tooltip": "Signed players:",
"item.anvilcraft.copper_nugget": "Copper Nugget",
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
{
"parent": "minecraft:item/generated",
"textures": {
"layer0": "anvilcraft:item/cogwheel_amulet"
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
{
"parent": "minecraft:recipes/root",
"criteria": {
"has_the_recipe": {
"conditions": {
"recipe": "anvilcraft:jewel_crafting/cogwheel_amulet"
},
"trigger": "minecraft:recipe_unlocked"
}
},
"requirements": [
[
"has_the_recipe"
]
],
"rewards": {
"recipes": [
"anvilcraft:jewel_crafting/cogwheel_amulet"
]
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
{
"type": "anvilcraft:jewel_crafting",
"ingredients": [
{
"item": "anvilcraft:silver_block"
},
{
"item": "anvilcraft:silver_block"
},
{
"item": "anvilcraft:silver_block"
},
{
"item": "anvilcraft:silver_block"
},
{
"item": "create:precision_mechanism"
},
{
"item": "create:precision_mechanism"
},
{
"item": "create:precision_mechanism"
},
{
"item": "create:precision_mechanism"
},
{
"item": "create:precision_mechanism"
},
{
"item": "create:precision_mechanism"
},
{
"item": "create:precision_mechanism"
},
{
"item": "create:precision_mechanism"
},
{
"item": "create:precision_mechanism"
},
{
"item": "create:precision_mechanism"
},
{
"item": "create:precision_mechanism"
},
{
"item": "create:precision_mechanism"
},
{
"item": "create:precision_mechanism"
},
{
"item": "create:precision_mechanism"
},
{
"item": "create:precision_mechanism"
},
{
"item": "create:precision_mechanism"
},
{
"item": "anvilcraft:royal_steel_ingot"
}
],
"result": {
"count": 1,
"id": "anvilcraft:cogwheel_amulet"
}
}
21 changes: 10 additions & 11 deletions src/main/java/dev/dubhe/anvilcraft/event/PlayerEventListener.java
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
import dev.dubhe.anvilcraft.recipe.anvil.cache.RecipeCaches;
import dev.dubhe.anvilcraft.util.AmuletUtil;
import dev.dubhe.anvilcraft.util.InventoryUtil;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.server.level.ServerPlayer;
import net.minecraft.world.InteractionHand;
import net.minecraft.world.InteractionResult;
Expand Down Expand Up @@ -77,17 +78,7 @@ public static void onJoinedServer(PlayerEvent.PlayerLoggedInEvent event) {
public static void onPlayerUsingTotem(LivingUseTotemEvent event) {
if (event.getEntity() instanceof ServerPlayer player && player.getInventory().contains(ModItems.AMULET_BOX.asStack())) {
Inventory inventory = player.getInventory();

boolean isConsumeAmuletBox;
if (inventory.contains(Items.TOTEM_OF_UNDYING.getDefaultInstance())) {
inventory.removeItem(Items.TOTEM_OF_UNDYING.getDefaultInstance());
isConsumeAmuletBox = false;
} else {
inventory.removeItem(ModItems.AMULET_BOX.asStack());
isConsumeAmuletBox = true;
}

AmuletUtil.startRaffle(player, event.getSource(), isConsumeAmuletBox);
AmuletUtil.startRaffle(player, event.getSource(), !inventory.contains(Items.TOTEM_OF_UNDYING.getDefaultInstance()));
}
}

Expand All @@ -107,6 +98,14 @@ public static void onPlayerHurt(LivingIncomingDamageEvent event) {
event.getContainer().setNewDamage(0);
}

if (
Optional.ofNullable(sources.damageTypes.getKey(source.type()))
.orElse(ResourceLocation.fromNamespaceAndPath("minecraft", "empty")).getNamespace().contains("create")
&& player.getData(ModDataAttachments.CREATE_MASTER)
) {
event.getContainer().setNewDamage(0);
}

ItemStack comrade = InventoryUtil.getFirstItem(inventory, ModItems.COMRADE_AMULET);
try {
UUID causingEntityUUID = Objects.requireNonNull(source.getEntity()).getUUID();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -39,8 +39,8 @@ public class ModDataAttachments {
public static final Supplier<AttachmentType<Boolean>> STEEL_HEAD = ATTACHMENT_TYPES.register(
"steel_head", () -> AttachmentType.builder(() -> false).serialize(Codec.BOOL).build());

//public static final Supplier<AttachmentType<Boolean>> CREATE_MASTER = ATTACHMENT_TYPES.register(
// "create_master", () -> AttachmentType.builder(() -> false).serialize(Codec.BOOL).build());
public static final Supplier<AttachmentType<Boolean>> CREATE_MASTER = ATTACHMENT_TYPES.register(
"create_master", () -> AttachmentType.builder(() -> false).serialize(Codec.BOOL).build());

public static final Supplier<AttachmentType<CompoundTag>> AMULET_RAFFLE_PROBABILITY = ATTACHMENT_TYPES.register(
"amulet_raffle_probability", () -> AttachmentType.builder(CompoundTag::new).serialize(CompoundTag.CODEC).build());
Expand Down
19 changes: 14 additions & 5 deletions src/main/java/dev/dubhe/anvilcraft/init/ModItems.java
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
import dev.dubhe.anvilcraft.AnvilCraft;
import dev.dubhe.anvilcraft.block.state.Color;
import dev.dubhe.anvilcraft.data.AnvilCraftDatagen;
import dev.dubhe.anvilcraft.integration.create.CreateIntegration;
import dev.dubhe.anvilcraft.item.AmethystAxeItem;
import dev.dubhe.anvilcraft.item.AmethystHoeItem;
import dev.dubhe.anvilcraft.item.AmethystPickaxeItem;
Expand All @@ -30,6 +31,7 @@
import dev.dubhe.anvilcraft.item.amulet.AbstractAmuletItem;
import dev.dubhe.anvilcraft.item.amulet.AnvilAmuletItem;
import dev.dubhe.anvilcraft.item.amulet.CatAmuletItem;
import dev.dubhe.anvilcraft.item.amulet.CogwheelAmuletItem;
import dev.dubhe.anvilcraft.item.amulet.ComradeAmuletItem;
import dev.dubhe.anvilcraft.item.amulet.DogAmuletItem;
import dev.dubhe.anvilcraft.item.amulet.EmeraldAmuletItem;
Expand Down Expand Up @@ -80,10 +82,13 @@
import net.minecraft.world.item.ShovelItem;
import net.minecraft.world.item.SwordItem;
import net.minecraft.world.item.crafting.Ingredient;
import net.neoforged.fml.loading.LoadingModList;
import net.neoforged.neoforge.client.model.generators.ItemModelBuilder;
import net.neoforged.neoforge.client.model.generators.ModelFile;
import net.neoforged.neoforge.common.Tags;

import java.util.function.Supplier;

import static dev.dubhe.anvilcraft.AnvilCraft.REGISTRATE;

@SuppressWarnings({"unused", "CodeBlock2Expr"})
Expand Down Expand Up @@ -561,11 +566,15 @@ public static <T extends AbstractAmuletItem> ItemEntry<T> createAmuletItem(
"anvil", AnvilAmuletItem::new,
builder -> builder.requires(Items.ANVIL)
);
//public static final ItemEntry<CogwheelAmuletItem> COGWHEEL_AMULET =
// createAmuletItem(
// "cogwheel", CogwheelAmuletItem::new,
// builder -> builder.requires(AllItems.PRECISION_MECHANISM, 16)
// );
public static final ItemEntry<CogwheelAmuletItem> COGWHEEL_AMULET;
static {
Supplier<ItemEntry<CogwheelAmuletItem>> cogwheelAmuletSupplier = () -> CreateIntegration.COGWHEEL_AMULET;
if (LoadingModList.get().getModFileById("create") != null) {
COGWHEEL_AMULET = cogwheelAmuletSupplier.get();
} else {
COGWHEEL_AMULET = null;
}
}
public static final ItemEntry<ComradeAmuletItem> COMRADE_AMULET =
createAmuletItem(
"comrade", ComradeAmuletItem::new,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,19 +1,27 @@
package dev.dubhe.anvilcraft.integration.create;

import com.simibubi.create.AllItems;
import com.simibubi.create.api.boiler.BoilerHeater;
import com.simibubi.create.api.registry.SimpleRegistry;
import com.tterrag.registrate.util.entry.ItemEntry;
import dev.dubhe.anvilcraft.api.integration.Integration;
import dev.dubhe.anvilcraft.block.GlowingMetalBlock;
import dev.dubhe.anvilcraft.block.HeaterBlock;
import dev.dubhe.anvilcraft.block.IncandescentMetalBlock;
import dev.dubhe.anvilcraft.block.RedhotMetalBlock;
import dev.dubhe.anvilcraft.init.ModBlocks;
import dev.dubhe.anvilcraft.init.ModItems;
import dev.dubhe.anvilcraft.item.amulet.CogwheelAmuletItem;
import dev.dubhe.anvilcraft.recipe.JewelCraftingRecipe;
import net.minecraft.core.BlockPos;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.level.Level;
import net.minecraft.world.level.block.Block;
import net.minecraft.world.level.block.state.BlockState;
import org.jetbrains.annotations.Nullable;

import static dev.dubhe.anvilcraft.AnvilCraft.REGISTRATE;

@Integration("create")
public class CreateIntegration {
private static final BoilerHeater HEATER = CreateIntegration::heater;
Expand Down Expand Up @@ -59,4 +67,15 @@ public float getHeat(Level level, BlockPos blockPos, BlockState blockState) {
return this.level;
}
}

public static final ItemEntry<CogwheelAmuletItem> COGWHEEL_AMULET = REGISTRATE
.item("cogwheel_amulet", CogwheelAmuletItem::new)
.properties(properties -> properties.stacksTo(1))
.recipe((ctx, provider) -> JewelCraftingRecipe.builder()
.requires(ModBlocks.SILVER_BLOCK, 4)
.requires(AllItems.PRECISION_MECHANISM, 16)
.requires(ModItems.ROYAL_STEEL_INGOT)
.result(new ItemStack(ctx.get()))
.save(provider))
.register();
}
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
import net.minecraft.client.model.geom.builders.LayerDefinition;
import net.minecraft.world.item.ItemStack;
import net.neoforged.fml.event.lifecycle.FMLCommonSetupEvent;
import net.neoforged.fml.loading.LoadingModList;
import net.neoforged.neoforge.capabilities.RegisterCapabilitiesEvent;
import net.neoforged.neoforge.client.event.EntityRenderersEvent;
import org.jetbrains.annotations.NotNull;
Expand Down Expand Up @@ -46,8 +47,25 @@ private void registerCapabilities(RegisterCapabilitiesEvent event) {
ModItems.ANVIL_HAMMER,
ModItems.ROYAL_ANVIL_HAMMER,
ModItems.EMBER_ANVIL_HAMMER,
ModItems.IONOCRAFT_BACKPACK
ModItems.IONOCRAFT_BACKPACK,
ModItems.ANVIL_AMULET,
ModItems.CAT_AMULET,
ModItems.COMRADE_AMULET,
ModItems.DOG_AMULET,
ModItems.EMERALD_AMULET,
ModItems.FEATHER_AMULET,
ModItems.RUBY_AMULET,
ModItems.SAPPHIRE_AMULET,
ModItems.SILENCE_AMULET,
ModItems.TOPAZ_AMULET
);
if (LoadingModList.get().getModFileById("create") != null) {
event.registerItem(
CuriosCapability.ITEM,
(stack, context) -> () -> stack,
ModItems.COGWHEEL_AMULET
);
}
}

private boolean isAnvilHammerWearing(ICuriosItemHandler itemHandler) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@

import static dev.dubhe.anvilcraft.init.ModDataAttachments.AMULET_COUNT;
import static dev.dubhe.anvilcraft.init.ModDataAttachments.AMULET_MAX;
import static dev.dubhe.anvilcraft.init.ModDataAttachments.CREATE_MASTER;
import static dev.dubhe.anvilcraft.init.ModDataAttachments.DISCOUNT_RATE;
import static dev.dubhe.anvilcraft.init.ModDataAttachments.IMMUNE_TO_LIGHTNING;
import static dev.dubhe.anvilcraft.init.ModDataAttachments.NO_FALL_DAMAGE;
Expand Down Expand Up @@ -58,6 +59,9 @@ public static void resetWorkingAmuletData(@NotNull LivingEntity entity){
if (entity.hasData(STEEL_HEAD)) {
entity.setData(STEEL_HEAD, false);
}
if (entity.hasData(CREATE_MASTER)) {
entity.setData(CREATE_MASTER, false);
}
if (entity.hasData(SCARE_ENTITIES)) {
CompoundTag root = entity.getData(ModDataAttachments.SCARE_ENTITIES);
root.putBoolean("skeletons", false);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,15 +1,20 @@
package dev.dubhe.anvilcraft.item.amulet;

import dev.dubhe.anvilcraft.init.ModDataAttachments;
import net.minecraft.world.entity.Entity;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.level.Level;

// Unregistered
public class CogwheelAmuletItem extends AbstractAmuletItem {
public CogwheelAmuletItem(Properties properties) {
super(properties);
}

@Override
void UpdateAccessory(ItemStack stack, Level level, Entity entity, int slotId, boolean isSelected) {}
void UpdateAccessory(ItemStack stack, Level level, Entity entity, int slotId, boolean isSelected) {
if (entity instanceof Player player) {
player.setData(ModDataAttachments.CREATE_MASTER, true);
}
}
}
Loading