Skip to content

Commit

Permalink
默认附魔复活
Browse files Browse the repository at this point in the history
  • Loading branch information
DancingSnow0517 committed Sep 30, 2024
1 parent 0b6d6ce commit 3adb475
Show file tree
Hide file tree
Showing 15 changed files with 1,376 additions and 1,266 deletions.
4 changes: 3 additions & 1 deletion src/generated/resources/data/minecraft/tags/item/axes.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
{
"values": [
"anvilcraft:amethyst_axe"
"anvilcraft:amethyst_axe",
"anvilcraft:royal_steel_axe",
"anvilcraft:ember_metal_axe"
]
}
4 changes: 3 additions & 1 deletion src/generated/resources/data/minecraft/tags/item/hoes.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
{
"values": [
"anvilcraft:amethyst_hoe"
"anvilcraft:amethyst_hoe",
"anvilcraft:royal_steel_hoe",
"anvilcraft:ember_metal_hoe"
]
}
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
{
"values": [
"anvilcraft:amethyst_pickaxe"
"anvilcraft:amethyst_pickaxe",
"anvilcraft:royal_steel_pickaxe",
"anvilcraft:ember_metal_pickaxe"
]
}
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
{
"values": [
"anvilcraft:amethyst_shovel"
"anvilcraft:amethyst_shovel",
"anvilcraft:royal_steel_shovel",
"anvilcraft:ember_metal_shovel"
]
}
4 changes: 3 additions & 1 deletion src/generated/resources/data/minecraft/tags/item/swords.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
{
"values": [
"anvilcraft:amethyst_sword"
"anvilcraft:amethyst_sword",
"anvilcraft:royal_steel_sword",
"anvilcraft:ember_metal_sword"
]
}
2,422 changes: 1,216 additions & 1,206 deletions src/main/java/dev/dubhe/anvilcraft/init/ModItems.java

Large diffs are not rendered by default.

33 changes: 16 additions & 17 deletions src/main/java/dev/dubhe/anvilcraft/item/IHasDefaultEnchantment.java
Original file line number Diff line number Diff line change
@@ -1,9 +1,11 @@
package dev.dubhe.anvilcraft.item;

import net.minecraft.ChatFormatting;
import net.minecraft.core.Holder;
import net.minecraft.network.chat.Component;
import net.minecraft.resources.ResourceKey;
import net.minecraft.world.item.enchantment.Enchantment;
import net.minecraft.world.level.Level;

import java.util.ArrayList;
import java.util.List;
Expand All @@ -15,28 +17,25 @@
public interface IHasDefaultEnchantment {
Map<ResourceKey<Enchantment>, Integer> getDefaultEnchantments();

default int getDefaultEnchantmentLevel(Enchantment enchantment) {
return this.getDefaultEnchantments().getOrDefault(enchantment, 0);
}

/**
* @return 工具提示
*/
default List<Component> getDefaultEnchantmentsTooltip() {
default List<Component> getDefaultEnchantmentsTooltip(Level level) {
List<Component> list = new ArrayList<>();
list.add(Component.translatable("item.anvilcraft.default_enchantment.tooltip")
.withStyle(ChatFormatting.GRAY));
// for (Map.Entry<ResourceKey<Enchantment>, Integer> entry :
// getDefaultEnchantments().entrySet()) {
// ResourceKey<Enchantment> enchantment = entry.getKey();
// Integer level = entry.getValue();
// list.add(
// Component
// .literal("- ")
// .append(Enchantment.getFullname(level))
// .withStyle(ChatFormatting.DARK_GRAY)
// );
// }
.withStyle(ChatFormatting.GRAY));

for (var entry : getDefaultEnchantments().entrySet()) {
Holder<Enchantment> enchantmentHolder = level.registryAccess().holderOrThrow(entry.getKey());
int l = entry.getValue();
list.add(
Component
.literal("- ")
.append(Enchantment.getFullname(enchantmentHolder, l))
.withStyle(ChatFormatting.DARK_GRAY)
);
}

return list;
}
}
Original file line number Diff line number Diff line change
@@ -1,15 +1,22 @@
package dev.dubhe.anvilcraft.item;

import net.minecraft.MethodsReturnNonnullByDefault;
import net.minecraft.core.Holder;
import net.minecraft.core.HolderLookup;
import net.minecraft.network.chat.Component;
import net.minecraft.resources.ResourceKey;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.TooltipFlag;
import net.minecraft.world.item.enchantment.Enchantment;
import net.minecraft.world.item.enchantment.Enchantments;
import net.minecraft.world.item.enchantment.ItemEnchantments;

import javax.annotation.ParametersAreNonnullByDefault;
import java.util.List;
import java.util.Map;

@MethodsReturnNonnullByDefault
@ParametersAreNonnullByDefault
public class RoyalAnvilHammerItem extends AnvilHammerItem implements IHasDefaultEnchantment {
/**
* 初始化铁砧锤
Expand All @@ -34,11 +41,25 @@ protected float calculateFallDamageBonus(float fallDistance) {
public void appendHoverText(
ItemStack pStack, TooltipContext pContext, List<Component> pTooltipComponents, TooltipFlag pTooltipFlag) {
super.appendHoverText(pStack, pContext, pTooltipComponents, pTooltipFlag);
pTooltipComponents.addAll(this.getDefaultEnchantmentsTooltip());
if (pContext.level() != null) {
pTooltipComponents.addAll(this.getDefaultEnchantmentsTooltip(pContext.level()));
}
}

@Override
public Map<ResourceKey<Enchantment>, Integer> getDefaultEnchantments() {
return Map.of(Enchantments.UNBREAKING, 3);
}

@Override
public ItemEnchantments getAllEnchantments(ItemStack stack, HolderLookup.RegistryLookup<Enchantment> lookup) {
ItemEnchantments.Mutable enchantments = new ItemEnchantments.Mutable(super.getAllEnchantments(stack, lookup));

for (var entry: getDefaultEnchantments().entrySet()) {
Holder.Reference<Enchantment> holder = lookup.getOrThrow(entry.getKey());
enchantments.set(holder, entry.getValue());
}

return enchantments.toImmutable();
}
}
21 changes: 19 additions & 2 deletions src/main/java/dev/dubhe/anvilcraft/item/RoyalAxeItem.java
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
package dev.dubhe.anvilcraft.item;

import net.minecraft.MethodsReturnNonnullByDefault;
import net.minecraft.core.Holder;
import net.minecraft.core.HolderLookup;
import net.minecraft.network.chat.Component;
import net.minecraft.resources.ResourceKey;
import net.minecraft.world.item.AxeItem;
Expand All @@ -9,6 +11,7 @@
import net.minecraft.world.item.TooltipFlag;
import net.minecraft.world.item.enchantment.Enchantment;
import net.minecraft.world.item.enchantment.Enchantments;
import net.minecraft.world.item.enchantment.ItemEnchantments;

import java.util.List;
import java.util.Map;
Expand All @@ -27,13 +30,27 @@ public RoyalAxeItem(Properties properties) {

@Override
public void appendHoverText(
ItemStack pStack, TooltipContext pContext, List<Component> pTooltipComponents, TooltipFlag pTooltipFlag) {
ItemStack pStack, TooltipContext pContext, List<Component> pTooltipComponents, TooltipFlag pTooltipFlag) {
super.appendHoverText(pStack, pContext, pTooltipComponents, pTooltipFlag);
pTooltipComponents.addAll(this.getDefaultEnchantmentsTooltip());
if (pContext.level() != null) {
pTooltipComponents.addAll(this.getDefaultEnchantmentsTooltip(pContext.level()));
}
}

@Override
public Map<ResourceKey<Enchantment>, Integer> getDefaultEnchantments() {
return Map.of(Enchantments.UNBREAKING, 3);
}

@Override
public ItemEnchantments getAllEnchantments(ItemStack stack, HolderLookup.RegistryLookup<Enchantment> lookup) {
ItemEnchantments.Mutable enchantments = new ItemEnchantments.Mutable(super.getAllEnchantments(stack, lookup));

for (var entry : getDefaultEnchantments().entrySet()) {
Holder.Reference<Enchantment> holder = lookup.getOrThrow(entry.getKey());
enchantments.set(holder, entry.getValue());
}

return enchantments.toImmutable();
}
}
21 changes: 19 additions & 2 deletions src/main/java/dev/dubhe/anvilcraft/item/RoyalHoeItem.java
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
package dev.dubhe.anvilcraft.item;

import net.minecraft.MethodsReturnNonnullByDefault;
import net.minecraft.core.Holder;
import net.minecraft.core.HolderLookup;
import net.minecraft.network.chat.Component;
import net.minecraft.resources.ResourceKey;
import net.minecraft.world.item.AxeItem;
Expand All @@ -10,6 +12,7 @@
import net.minecraft.world.item.TooltipFlag;
import net.minecraft.world.item.enchantment.Enchantment;
import net.minecraft.world.item.enchantment.Enchantments;
import net.minecraft.world.item.enchantment.ItemEnchantments;

import java.util.List;
import java.util.Map;
Expand All @@ -28,13 +31,27 @@ public RoyalHoeItem(Properties properties) {

@Override
public void appendHoverText(
ItemStack pStack, TooltipContext pContext, List<Component> pTooltipComponents, TooltipFlag pTooltipFlag) {
ItemStack pStack, TooltipContext pContext, List<Component> pTooltipComponents, TooltipFlag pTooltipFlag) {
super.appendHoverText(pStack, pContext, pTooltipComponents, pTooltipFlag);
pTooltipComponents.addAll(this.getDefaultEnchantmentsTooltip());
if (pContext.level() != null) {
pTooltipComponents.addAll(this.getDefaultEnchantmentsTooltip(pContext.level()));
}
}

@Override
public Map<ResourceKey<Enchantment>, Integer> getDefaultEnchantments() {
return Map.of(Enchantments.UNBREAKING, 3);
}

@Override
public ItemEnchantments getAllEnchantments(ItemStack stack, HolderLookup.RegistryLookup<Enchantment> lookup) {
ItemEnchantments.Mutable enchantments = new ItemEnchantments.Mutable(super.getAllEnchantments(stack, lookup));

for (var entry : getDefaultEnchantments().entrySet()) {
Holder.Reference<Enchantment> holder = lookup.getOrThrow(entry.getKey());
enchantments.set(holder, entry.getValue());
}

return enchantments.toImmutable();
}
}
25 changes: 23 additions & 2 deletions src/main/java/dev/dubhe/anvilcraft/item/RoyalPickaxeItem.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
package dev.dubhe.anvilcraft.item;

import net.minecraft.MethodsReturnNonnullByDefault;
import net.minecraft.core.Holder;
import net.minecraft.core.HolderLookup;
import net.minecraft.network.chat.Component;
import net.minecraft.resources.ResourceKey;
import net.minecraft.world.item.AxeItem;
Expand All @@ -9,24 +12,42 @@
import net.minecraft.world.item.TooltipFlag;
import net.minecraft.world.item.enchantment.Enchantment;
import net.minecraft.world.item.enchantment.Enchantments;
import net.minecraft.world.item.enchantment.ItemEnchantments;

import javax.annotation.ParametersAreNonnullByDefault;
import java.util.List;
import java.util.Map;

@MethodsReturnNonnullByDefault
@ParametersAreNonnullByDefault
public class RoyalPickaxeItem extends PickaxeItem implements IHasDefaultEnchantment {
public RoyalPickaxeItem(Properties properties) {
super(Tiers.DIAMOND, properties.attributes(AxeItem.createAttributes(Tiers.DIAMOND, 1, -2.8f)));
}

@Override
public void appendHoverText(
ItemStack pStack, TooltipContext pContext, List<Component> pTooltipComponents, TooltipFlag pTooltipFlag) {
ItemStack pStack, TooltipContext pContext, List<Component> pTooltipComponents, TooltipFlag pTooltipFlag) {
super.appendHoverText(pStack, pContext, pTooltipComponents, pTooltipFlag);
pTooltipComponents.addAll(this.getDefaultEnchantmentsTooltip());
if (pContext.level() != null) {
pTooltipComponents.addAll(this.getDefaultEnchantmentsTooltip(pContext.level()));
}
}

@Override
public Map<ResourceKey<Enchantment>, Integer> getDefaultEnchantments() {
return Map.of(Enchantments.UNBREAKING, 3);
}

@Override
public ItemEnchantments getAllEnchantments(ItemStack stack, HolderLookup.RegistryLookup<Enchantment> lookup) {
ItemEnchantments.Mutable enchantments = new ItemEnchantments.Mutable(super.getAllEnchantments(stack, lookup));

for (var entry : getDefaultEnchantments().entrySet()) {
Holder.Reference<Enchantment> holder = lookup.getOrThrow(entry.getKey());
enchantments.set(holder, entry.getValue());
}

return enchantments.toImmutable();
}
}
25 changes: 23 additions & 2 deletions src/main/java/dev/dubhe/anvilcraft/item/RoyalShovelItem.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
package dev.dubhe.anvilcraft.item;

import net.minecraft.MethodsReturnNonnullByDefault;
import net.minecraft.core.Holder;
import net.minecraft.core.HolderLookup;
import net.minecraft.network.chat.Component;
import net.minecraft.resources.ResourceKey;
import net.minecraft.world.item.AxeItem;
Expand All @@ -9,24 +12,42 @@
import net.minecraft.world.item.TooltipFlag;
import net.minecraft.world.item.enchantment.Enchantment;
import net.minecraft.world.item.enchantment.Enchantments;
import net.minecraft.world.item.enchantment.ItemEnchantments;

import javax.annotation.ParametersAreNonnullByDefault;
import java.util.List;
import java.util.Map;

@MethodsReturnNonnullByDefault
@ParametersAreNonnullByDefault
public class RoyalShovelItem extends ShovelItem implements IHasDefaultEnchantment {
public RoyalShovelItem(Properties properties) {
super(Tiers.DIAMOND, properties.attributes(AxeItem.createAttributes(Tiers.DIAMOND, 1.5f, -3.0f)));
}

@Override
public void appendHoverText(
ItemStack pStack, TooltipContext pContext, List<Component> pTooltipComponents, TooltipFlag pTooltipFlag) {
ItemStack pStack, TooltipContext pContext, List<Component> pTooltipComponents, TooltipFlag pTooltipFlag) {
super.appendHoverText(pStack, pContext, pTooltipComponents, pTooltipFlag);
pTooltipComponents.addAll(this.getDefaultEnchantmentsTooltip());
if (pContext.level() != null) {
pTooltipComponents.addAll(this.getDefaultEnchantmentsTooltip(pContext.level()));
}
}

@Override
public Map<ResourceKey<Enchantment>, Integer> getDefaultEnchantments() {
return Map.of(Enchantments.UNBREAKING, 3);
}

@Override
public ItemEnchantments getAllEnchantments(ItemStack stack, HolderLookup.RegistryLookup<Enchantment> lookup) {
ItemEnchantments.Mutable enchantments = new ItemEnchantments.Mutable(super.getAllEnchantments(stack, lookup));

for (var entry : getDefaultEnchantments().entrySet()) {
Holder.Reference<Enchantment> holder = lookup.getOrThrow(entry.getKey());
enchantments.set(holder, entry.getValue());
}

return enchantments.toImmutable();
}
}
Loading

0 comments on commit 3adb475

Please sign in to comment.