Заготовка текстуры предмета в моде forge minecraft 1.21.4JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Заготовка текстуры предмета в моде forge minecraft 1.21.4

Сообщение Anonymous »

Я пишу свой первый мод для Minecraft. Мой первый предмет, Creeper Meat, успешно добавлен и назван в творческом инвентаре, но не использует текстуру, которую я поместил в src/main/resources/assets/creatures/textures/item/creeper_meat.png. вместо этого это черно-фиолетовая текстура-заполнитель.
У меня настроен Creeper_meat.json, и элемент правильно инициализируется в moditems.java (по крайней мере, так кажется)Файл Creatures.java:

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

package net.noritei.creatures;

import net.minecraft.world.item.CreativeModeTabs;
import net.noritei.creatures.item.moditems;
import org.slf4j.Logger;

import com.mojang.logging.LogUtils;

import net.minecraft.client.Minecraft;
import net.minecraft.world.level.block.Blocks;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.event.BuildCreativeModeTabContentsEvent;
import net.minecraftforge.event.server.ServerStartingEvent;
import net.minecraftforge.eventbus.api.IEventBus;
import net.minecraftforge.eventbus.api.SubscribeEvent;
import net.minecraftforge.fml.common.Mod;
import net.minecraftforge.fml.config.ModConfig;
import net.minecraftforge.fml.event.lifecycle.FMLClientSetupEvent;
import net.minecraftforge.fml.event.lifecycle.FMLCommonSetupEvent;
import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext;
import net.minecraftforge.registries.ForgeRegistries;

// The value here should match an entry in the META-INF/mods.toml file
@Mod(creatures.modId)
public class creatures {
// Define mod id in a common place for everything to reference
public static final String modId = "creatures";
// Directly reference a slf4j logger
private static final Logger LOGGER = LogUtils.getLogger();

public creatures(FMLJavaModLoadingContext context) {
IEventBus modEventBus = context.getModEventBus();

moditems.register(modEventBus);

// Register the commonSetup method for modloading
modEventBus.addListener(this::commonSetup);

// Register ourselves for server and other game events we are interested in
MinecraftForge.EVENT_BUS.register(this);

// Register the item to a creative tab
modEventBus.addListener(this::addCreative);

// Register our mod's ForgeConfigSpec so that Forge can create and load the config file for us
context.registerConfig(ModConfig.Type.COMMON, Config.SPEC);
}

private void commonSetup(final FMLCommonSetupEvent event) {
// Some common setup code
LOGGER.info("HELLO FROM COMMON SETUP");

if (Config.logDirtBlock)
LOGGER.info("DIRT BLOCK >> {}", ForgeRegistries.BLOCKS.getKey(Blocks.DIRT));

LOGGER.info(Config.magicNumberIntroduction + Config.magicNumber);

Config.items.forEach((item) -> LOGGER.info("ITEM >> {}", item.toString()));
}

private void addCreative(BuildCreativeModeTabContentsEvent event) {
if (event.getTabKey() == CreativeModeTabs.FOOD_AND_DRINKS) {
// Access the registered item correctly using .get()
event.accept(moditems.CREEPERMEAT.get());
}
}

// You can use SubscribeEvent and let the Event Bus discover methods to call
@SubscribeEvent
public void onServerStarting(ServerStartingEvent event) {
// Do something when the server starts
LOGGER.info("HELLO from server starting");
}

// You can use EventBusSubscriber to automatically register all static methods in the class annotated with @SubscribeEvent
@Mod.EventBusSubscriber(modid = modId, bus = Mod.EventBusSubscriber.Bus.MOD, value = Dist.CLIENT)
public static class ClientModEvents {
@SubscribeEvent
public static void onClientSetup(FMLClientSetupEvent event) {
// Some client setup code
LOGGER.info("HELLO FROM CLIENT SETUP");
LOGGER.info("MINECRAFT NAME >> {}", Minecraft.getInstance().getUser().getName());
}
}
}
Файл moditems.java:

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

package net.noritei.creatures.item;

import net.minecraft.world.item.Item;
import net.minecraftforge.eventbus.api.IEventBus;
import net.minecraftforge.registries.DeferredRegister;
import net.minecraftforge.registries.ForgeRegistries;
import net.minecraftforge.registries.RegistryObject;
import net.minecraft.resources.ResourceKey;
import net.minecraft.resources.ResourceLocation;

import net.noritei.creatures.creatures;

// Register items in the mod
public class moditems {
// Create a Deferred Register to hold items
public static final DeferredRegister  ITEMS = DeferredRegister.create(ForgeRegistries.ITEMS, creatures.modId);

// Register the item (Creeper Meat in this case)
public static final RegistryObject CREEPERMEAT = ITEMS.register("creeper_meat",
() -> new Item(new Item.Properties()
.useItemDescriptionPrefix() // Ensures item description is prefixed
.setId(ResourceKey.create(ForgeRegistries.ITEMS.getRegistryKey(), ResourceLocation.parse("creatures:creeper_meat")))));

// Register all items in the event bus
public static void register(IEventBus eventBus) {
// Register the Deferred Register to the event bus so that the items get registered
ITEMS.register(eventBus);
}
}
creeper_meat.json:

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

{
"parent": "item/generated",
"textures": {
"layer0": "creatures:item/creeper_meat"
}
}
Это мое дерево папок, найденное в файле Creations/src/

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

├───java
│   └───net
│       └───noritei
│           └───creatures
│               │   Config.java
│               │   creatures.java
│               │
│               └───item
│                       moditems.java
│
└───resources
│   pack.mcmeta
│
├───assets
│   └───creatures
│       ├───lang
│       │       en_us.json
│       │
│       ├───models
│       │   └───item
│       │           creeper_meat.json
│       │
│       └───textures
│           └───item
│                   creeper_meat.png
│
└───META-INF
mods.toml
Я проверял написание моего товара и кода больше раз, чем мог вспомнить, и это сводит меня с ума. Любые советы и помощь будут полезны.
Вот мой репозиторий на GitHub:
https://github.com/johnnythesoap/creatures
Я просмотрел кучу руководств, поискал в Интернете и часто задавал вопросы в чате, но, похоже, нашел либо бесполезные, либо устаревшие ресурсы. Я бы отладил это сам, но я едва знаю Java.
Это руководство, которому я сейчас следую, чтобы изучить моддинг:
https://www.youtube.com/watch ?v=o6Xbp2dTEGA&list=PLKGarocXCE1H9Y21-pxjt5Pt8bW14twa-&index=7
Большое спасибо.

Подробнее здесь: https://stackoverflow.com/questions/793 ... -forge-mod
Ответить

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

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

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

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

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