The Bone

This is a mod about bone

File Details

the-bone-1.0.0_a.jar

  • B
  • Apr 11, 2025
  • 25.33 KB
  • 7
  • 1.20
  • Fabric

File Name

the-bone-1.0.0_a.jar

Supported Versions

  • 1.20

Curse Maven Snippet

Fabric

modImplementation "curse.maven:the-bone-1235790:6410355"
Curse Maven does not yet support mods that have disabled 3rd party sharing

Learn more about Curse Maven

reporter:To avoid potential discrepancies with the intended meaning, no English changelog is provided here. Please translate it yourself.

 

MOD名称:The Bone
MOD_ID:the-bone
开发者:J_pc
MOD内容:
新增物品:
the-bone:marrow
the-bone:bone_bow
新增方块:NONE
新增生物实体:NONE
新增弹射物实体:NONE
新增命令:NONE
新增结构:NONE
新增地物:NONE
新增维度:NONE
新增生物群系:NONE
新增配方:
the-bone:marrow可合成骨粉
 
 
the-bone:marrow
最大堆叠数量:64
获取方式:可在Minecraft:jungle_pyramid中获取
用途:NONE
配方:可合成骨粉
       相关代码:
       {
         "type": "minecraft:crafting_shaped",
         "category": "item/building",
         "pattern":[
            "*  ",
            "   ",
            "   "
         ],
          "key": {
             "*": {
                "item": "the-bone:marrow"
             }
          },
          "result": {
             "item": "minecraft:bone_meal",
             "count": 32
           }
       }
 
the-bone:bone_bow
最大堆叠数量:64
获取方式:可在Minecraft:jungle_pyramid中获取
用途:NONE
配方:NONE
 
计划在下个补丁中更改的内容:
1.使the-bone:bone_bow拥有发射minecraft:arrow的能力
相关代码:
package com.example.item;
 
import net.minecraft.enchantment.EnchantmentHelper;
import net.minecraft.enchantment.Enchantments;
import net.minecraft.entity.LivingEntity;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.entity.projectile.PersistentProjectileEntity;
import net.minecraft.item.ArrowItem;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.item.Items;
import net.minecraft.sound.SoundCategory;
import net.minecraft.sound.SoundEvents;
import net.minecraft.stat.Stats;
import net.minecraft.util.Hand;
import net.minecraft.util.TypedActionResult;
import net.minecraft.util.UseAction;
import net.minecraft.world.World;
 
public class bone_bow extends Item {
    public bone_bow(Settings settings) {
        super(settings);
    }
 
    public void onStoppedUsing(ItemStack stack, World world, LivingEntity user, int remainingUseTicks) {
        if (user instanceof PlayerEntity playerEntity) {
            boolean bl = playerEntity.getAbilities().creativeMode || EnchantmentHelper.getLevel(Enchantments.INFINITY, stack) > 0;
            ItemStack itemStack = playerEntity.getProjectileType(stack);
            if (!itemStack.isEmpty() || bl) {
                if (itemStack.isEmpty()) {
                    itemStack = new ItemStack(Items.ARROW);
                }
 
                int i = this.getMaxUseTime(stack) - remainingUseTicks;
                float f = getPullProgress(i);
                if (!((double)f < 0.1)) {
                    boolean bl2 = bl && itemStack.isOf(Items.ARROW);
                    if (!world.isClient) {
                        ArrowItem arrowItem = (ArrowItem)(itemStack.getItem() instanceof ArrowItem ? itemStack.getItem() : Items.ARROW);
                        PersistentProjectileEntity persistentProjectileEntity = arrowItem.createArrow(world, itemStack, playerEntity);
                        persistentProjectileEntity.setVelocity(playerEntity, playerEntity.getPitch(), playerEntity.getYaw(), 0.0F, f * 3.0F, 1.0F);
                        if (f == 1.0F) {
                            persistentProjectileEntity.setCritical(true);
                        }
 
                        int j = EnchantmentHelper.getLevel(Enchantments.POWER, stack);
                        if (j > 0) {
                            persistentProjectileEntity.setDamage(persistentProjectileEntity.getDamage() + (double)j * 0.5 + 0.5);
                        }
 
                        int k = EnchantmentHelper.getLevel(Enchantments.PUNCH, stack);
                        if (k > 0) {
                            persistentProjectileEntity.setPunch(k);
                        }
 
                        if (EnchantmentHelper.getLevel(Enchantments.FLAME, stack) > 0) {
                            persistentProjectileEntity.setOnFireFor(100);
                        }
 
                        stack.damage(1, playerEntity, (p) -> {
                            p.sendToolBreakStatus(playerEntity.getActiveHand());
                        });
                        if (bl2 || playerEntity.getAbilities().creativeMode && (itemStack.isOf(Items.SPECTRAL_ARROW) || itemStack.isOf(Items.TIPPED_ARROW))) {
                            persistentProjectileEntity.pickupType = PersistentProjectileEntity.PickupPermission.CREATIVE_ONLY;
                        }
 
                        world.spawnEntity(persistentProjectileEntity);
                    }
 
                    world.playSound((PlayerEntity)null, playerEntity.getX(), playerEntity.getY(), playerEntity.getZ(), SoundEvents.ENTITY_ARROW_SHOOT, SoundCategory.PLAYERS, 1.0F, 1.0F / (world.getRandom().nextFloat() * 0.4F + 1.2F) + f * 0.5F);
                    if (!bl2 && !playerEntity.getAbilities().creativeMode) {
                        itemStack.decrement(1);
                        if (itemStack.isEmpty()) {
                            playerEntity.getInventory().removeOne(itemStack);
                        }
                    }
 
                    playerEntity.incrementStat(Stats.USED.getOrCreateStat(this));
                }
            }
        }
    }
 
    public static float getPullProgress(int useTicks) {
        float f = (float)useTicks / 20.0F;
        f = (f * f + f * 2.0F) / 3.0F;
        if (f > 1.0F) {
            f = 1.0F;
        }
 
        return f;
    }
 
    public int getMaxUseTime(ItemStack stack) {
        return 72000;
    }
 
    public UseAction getUseAction(ItemStack stack) {
        return UseAction.BOW;
    }
 
    public TypedActionResult<ItemStack> use(World world, PlayerEntity user, Hand hand) {
        ItemStack itemStack = user.getStackInHand(hand);
        boolean bl = !user.getProjectileType(itemStack).isEmpty();
        if (!user.getAbilities().creativeMode && !bl) {
            return TypedActionResult.fail(itemStack);
        } else {
            user.setCurrentHand(hand);
            return TypedActionResult.consume(itemStack);
        }
    }
 
    @Override
    public boolean allowNbtUpdateAnimation(PlayerEntity player, Hand hand, ItemStack oldStack, ItemStack newStack) {
        return super.allowNbtUpdateAnimation(player, hand, oldStack, newStack);
    }
}
2.将the-bone:bone_bow的耐久设为768
 
 
经测试,此版本目前除"计划在下个补丁中更改的内容"外,无其他异常
报告人:J_pc
报告时间:2024/12/14/9:55
MOD创建时期:2024/12/11/20:26
MOD版本:1.0.0_a
MOD编写时的联网状态:个人网
MOD适用的Minecraft版本:《Minecraft JAVA 1.20-Fabric 0.16.9-Fabric API 0.83.0 Edition》
MOD适用的模组加载器版本:Fabric 0.16.9+ &Fabric API 0.83.0+
MOD当前版本完成时期:2024/12/14/9:50
MOD当前版本测试完成时期:2024/12/14/9:54
MOD编写时使用的JAVA解释器:JDK 21.0.3
MOD编写时使用的JAVA虚拟机:JAVA_HOME 21.0.3
MOD测试时使用的启动器:PCL2
MOD测试时的联网状态:个人网
MOD测试时的登录方式:离线登录
MOD测试时使用的JAVA解释器:JDK 21.0.4
MOD测试时使用的Minecraft源:镜像源
MOD测试时的版本隔离:隔离所有版本
MOD测试时的JAVA虚拟机参数头:-XX:+UseG1GC -XX:-UseAdaptiveSizePolicy -XX:-OmitStackTraceInFastThrow -Dfml.ignoreInvalidMinecraftCertificates=True -Dfml.ignorePatchDiscrepancies=True -Dlog4j2.formatMsgNoLookups=true
     JAVA虚拟机参数尾:
MOD测试时使用的Minecraft版本:《Minecraft JAVA 1.20-Fabric 0.16.9-Fabric API 0.83.0 Edition》