Minecraft Fabric Mod не оживляет Custom CompassJAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Minecraft Fabric Mod не оживляет Custom Compass

Сообщение Anonymous »

Я новичок в Minecraft Mod и Development, и я использую CHATGPT, чтобы помочь мне изучить его. Я пытаюсь построить мод, который обеспечивает компас, который указывает на ближайший бриллиантный блок руды. Я получил относительно далеко, я вижу в журналах моего мода, что направление к ближайшей алмазной руде регистрируется. Однако Diamond Compass не оживляет. < /P>
Я выложу весь свой код. Может ли кто -нибудь указать, почему анимация может потерпеть неудачу?

Код: Выделить всё

package com.ferndale;

import net.fabricmc.api.ModInitializer;
import net.fabricmc.fabric.api.itemgroup.v1.ItemGroupEvents;
import net.minecraft.item.Item;
import net.minecraft.item.ItemGroups;
import net.minecraft.item.ItemStack;
import net.minecraft.registry.Registries;
import net.minecraft.registry.Registry;
import net.minecraft.util.Identifier;

public class FerndaleMod implements ModInitializer {
public static final String MOD_ID = "ferndale";

// Register the Diamond Compass item
public static final Item DIAMOND_COMPASS = new Item(new Item.Settings());

@Override
public void onInitialize() {
System.out.println("[🔧 DEBUG] Ferndale Mod Loaded!");

// Register the Diamond Compass in the game
Registry.register(Registries.ITEM, new Identifier(MOD_ID, "diamond_compass"), DIAMOND_COMPASS);

// Add to the Tools & Utilities Creative Tab
ItemGroupEvents.modifyEntriesEvent(ItemGroups.TOOLS).register(entries -> {
entries.add(new ItemStack(DIAMOND_COMPASS));
});
}
}
diamondcompassitem.java

Код: Выделить всё

package com.ferndale;

import net.minecraft.client.item.TooltipContext;
import net.minecraft.item.CompassItem;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NbtCompound;
import net.minecraft.text.Text;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.World;
import org.jetbrains.annotations.Nullable;

import java.util.List;

public class DiamondCompassItem extends CompassItem {
public DiamondCompassItem(Settings settings) {
super(settings);
}

public static void setLodestonePos(ItemStack stack, BlockPos pos) {
NbtCompound nbt = stack.getOrCreateNbt();
nbt.putInt("LodestoneX", pos.getX());
nbt.putInt("LodestoneY", pos.getY());
nbt.putInt("LodestoneZ", pos.getZ());
}

@Override
public void appendTooltip(ItemStack stack, @Nullable World world, List tooltip, TooltipContext context) {
if (stack.hasNbt() && stack.getNbt() != null) {
NbtCompound nbt = stack.getNbt();
if (nbt.contains("LodestoneX") && nbt.contains("LodestoneY") && nbt.contains("LodestoneZ")) {
tooltip.add(Text.of("Pointing to: " +
nbt.getInt("LodestoneX") + ", " +
nbt.getInt("LodestoneY") + ", "  +
nbt.getInt("LodestoneZ")));
} else {
tooltip.add(Text.of("Not pointing to anything."));
}
}
super.appendTooltip(stack, world, tooltip, context);
}
}
moditems.java

Код: Выделить всё

package com.ferndale;

import net.fabricmc.fabric.api.item.v1.FabricItemSettings;
import net.minecraft.item.CompassItem;
import net.minecraft.item.Item;
import net.minecraft.registry.Registries;
import net.minecraft.registry.Registry;
import net.minecraft.util.Identifier;

public class ModItems {
public static final Item DIAMOND_COMPASS = registerItem("diamond_compass",
new CompassItem(new FabricItemSettings().maxCount(1)));

private static Item registerItem(String name, Item item) {
return Registry.register(Registries.ITEM, new Identifier("ferndale", name), item);
}

public static void registerModItems() {
System.out.println("Registering Mod Items for Ferndale...");
}
}
diamondcompasstracker.java

Код: Выделить всё

package com.ferndale;

import net.minecraft.block.Blocks;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.item.ItemStack;
import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.Vec3d;
import net.minecraft.world.World;

public class DiamondCompassTracker {
public static float calculateAngle(ItemStack stack, World world, PlayerEntity player) {
BlockPos nearestDiamond = findNearestDiamond(player, world);
if (nearestDiamond == null) {
return 0.0f;
}

return getCompassAngle(player, nearestDiamond);
}

private static BlockPos findNearestDiamond(PlayerEntity player, World world) {
BlockPos playerPos = player.getBlockPos();
BlockPos nearestDiamond = null;
double nearestDistance = Double.MAX_VALUE;

int radius = 50;  // Search range
for (int x = -radius; x 

Подробнее здесь: [url]https://stackoverflow.com/questions/79459697/minecraft-fabric-mod-doesnt-animate-custom-compass[/url]
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Minecraft Fabric Mod не оживляет Custom Compass
    Anonymous » » в форуме JAVA
    0 Ответы
    9 Просмотры
    Последнее сообщение Anonymous
  • В моем коде, почему это не работает: ans+=(((l*r)%mod*arr[i]%mod)%mod)%mod; но это работает-> ans = (ans + ((l * r) % mo
    Anonymous » » в форуме C++
    0 Ответы
    105 Просмотры
    Последнее сообщение Anonymous
  • Minecraft Forge Mod Loader (FML) Загрузка и сбой MC
    Anonymous » » в форуме JAVA
    0 Ответы
    28 Просмотры
    Последнее сообщение Anonymous
  • Minecraft Mod Extension Extension Mixins Ошибка помощи
    Anonymous » » в форуме JAVA
    0 Ответы
    25 Просмотры
    Последнее сообщение Anonymous
  • Minecraft Mod не запустится
    Anonymous » » в форуме JAVA
    0 Ответы
    4 Просмотры
    Последнее сообщение Anonymous

Вернуться в «JAVA»