Résolu Problèmes avec l'item group créatif
-
Bonjour,
Question par rapport à mon mod Chimera.
Je voudrais pouvoir créer mon item group mais l’icône ne s’affiche pas, on voie juste cette stupide texture noire et violette, et l’item que j’ai mis dedans a la même texture, ne fais absolument rien, ce n’est pas mon item, juste un truc buggé. Le nom de l’item est “item.minecraft.air”.
Le code, classe principale :
package fr.krafty.chimera; import java.util.ArrayList; import java.util.List; import java.util.stream.Collectors; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import fr.krafty.chimera.items.CrushedIceItem; import net.minecraft.block.Block; import net.minecraft.block.Blocks; import net.minecraft.item.Item; import net.minecraft.item.ItemGroup; import net.minecraft.item.ItemStack; import net.minecraft.util.NonNullList; import net.minecraft.util.ResourceLocation; import net.minecraft.util.text.StringTextComponent; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.event.RegistryEvent; import net.minecraftforge.event.entity.player.PlayerEvent.PlayerLoggedInEvent; import net.minecraftforge.eventbus.api.SubscribeEvent; import net.minecraftforge.fml.InterModComms; import net.minecraftforge.fml.common.Mod; import net.minecraftforge.fml.event.lifecycle.FMLClientSetupEvent; import net.minecraftforge.fml.event.lifecycle.FMLCommonSetupEvent; import net.minecraftforge.fml.event.lifecycle.InterModEnqueueEvent; import net.minecraftforge.fml.event.lifecycle.InterModProcessEvent; import net.minecraftforge.fml.event.server.FMLServerStartingEvent; import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext; import net.minecraftforge.fml.network.NetworkRegistry; import net.minecraftforge.fml.network.simple.SimpleChannel; // The value here should match an entry in the META-INF/mods.toml file @Mod("chimera") public class ChimeraMod { public final static String MODID = "Chimera"; Items elements; // Directly reference a log4j logger. private static final Logger LOGGER = LogManager.getLogger(); private static final String PROTOCOL_VERSION = "1"; public static final SimpleChannel PACKET_HANDLER = NetworkRegistry.newSimpleChannel(new ResourceLocation("chimera", "chimera"), () -> PROTOCOL_VERSION, PROTOCOL_VERSION::equals, PROTOCOL_VERSION::equals); public static ItemGroup CHIMERA_ITEM_GROUP = new ItemGroup("tabchimera") { @Override @OnlyIn(Dist.CLIENT) public ItemStack makeIcon() { return new ItemStack(new CrushedIceItem()); } @Override @OnlyIn(Dist.CLIENT) public void fillItemList(NonNullList<ItemStack> p_78018_1_) { p_78018_1_.add(new ItemStack(new CrushedIceItem())); } }; public ChimeraMod() { elements = new Items(); // Register the setup method for modloading FMLJavaModLoadingContext.get().getModEventBus().addListener(this::setup); // Register the enqueueIMC method for modloading FMLJavaModLoadingContext.get().getModEventBus().addListener(this::enqueueIMC); // Register the processIMC method for modloading FMLJavaModLoadingContext.get().getModEventBus().addListener(this::processIMC); // Register the doClientStuff method for modloading FMLJavaModLoadingContext.get().getModEventBus().addListener(this::doClientStuff); // Register ourselves for server and other game events we are interested in MinecraftForge.EVENT_BUS.register(this); } private void setup(final FMLCommonSetupEvent event) { // some preinit code LOGGER.info("HELLO FROM PREINIT"); LOGGER.info("DIRT BLOCK >> {}", Blocks.DIRT.getRegistryName()); } private void doClientStuff(final FMLClientSetupEvent event) { // do something that can only be done on the client LOGGER.info("Got game settings {}", event.getMinecraftSupplier().get().options); } private void enqueueIMC(final InterModEnqueueEvent event) { // some example code to dispatch IMC to another mod InterModComms.sendTo("chimera", "helloworld", () -> { LOGGER.info("Hello world from the MDK"); return "Hello world"; }); } private void processIMC(final InterModProcessEvent event) { // some example code to receive and process InterModComms from other mods LOGGER.info("Got IMC {}", event.getIMCStream().map(m -> m.getMessageSupplier().get()).collect(Collectors.toList())); } // You can use SubscribeEvent and let the Event Bus discover methods to call @SubscribeEvent public void onServerStarting(FMLServerStartingEvent event) { // do something when the server starts LOGGER.info("HELLO from server starting"); } public void onJoinGame(PlayerLoggedInEvent event) { event.getPlayer().displayClientMessage(new StringTextComponent("Bienvenue !"), true); } @Mod.EventBusSubscriber(bus = Mod.EventBusSubscriber.Bus.MOD) public static class Items { public static List<Item> itemList = new ArrayList<Item>(); private static Item register(Item itemIn) { itemList.add(itemIn); return itemIn; } @SubscribeEvent public static void registerItems(RegistryEvent.Register<Item> event) { register(new CrushedIceItem()); for (final Item item : itemList) { event.getRegistry().register(item); } } } }
Le code, classe de l’item :
package fr.krafty.chimera.items; import fr.krafty.chimera.ChimeraMod; import net.minecraft.item.Item; import net.minecraft.item.Rarity; public class CrushedIceItem extends Item { public CrushedIceItem() { super(new Item.Properties().stacksTo(16).rarity(Rarity.COMMON)); setRegistryName(ChimeraMod.MODID, "crushed_ice"); } }
Je peux me give mon item, les deux recettes liées à l’item marche, mais le truc qui se trouve dans mon item group ne correspond à rien de logique.
Le nom de l’item group marche.
Au cas où, je mets ce qui s’affiche sur la console.
avant de rejoindre le monde pastebin
après avoir rejoint le monde pastebin
Screenshots :
Ça fait très longtemps que j’ai ce problème et j’ai rien trouvé sur internet, aidez-moi s’il vous plait
Voilà, merci d’avance ^^
Krafty
-
-
Ouaiii ça marche !!!
J’ai fait quelques changement et, comme par magie, mon problème c’est résolu tout seul ! Je suis trop conteeeent
Je mets mon code changé en espérant que ça puisse aider quelqu’un.
package fr.krafty.chimera; import java.util.ArrayList; import java.util.List; import java.util.stream.Collectors; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import fr.krafty.chimera.items.CrushedIceItem; import fr.krafty.chimera.items.IceLauncherItem; import fr.krafty.chimera.items.SurgicalKnifeItem; import net.minecraft.block.Block; import net.minecraft.block.Blocks; import net.minecraft.item.Item; import net.minecraft.item.ItemGroup; import net.minecraft.item.ItemStack; import net.minecraft.util.ResourceLocation; import net.minecraft.util.text.StringTextComponent; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.event.RegistryEvent; import net.minecraftforge.event.entity.player.PlayerEvent.PlayerLoggedInEvent; import net.minecraftforge.eventbus.api.SubscribeEvent; import net.minecraftforge.fml.InterModComms; import net.minecraftforge.fml.common.Mod; import net.minecraftforge.fml.event.lifecycle.FMLClientSetupEvent; import net.minecraftforge.fml.event.lifecycle.FMLCommonSetupEvent; import net.minecraftforge.fml.event.lifecycle.InterModEnqueueEvent; import net.minecraftforge.fml.event.lifecycle.InterModProcessEvent; import net.minecraftforge.fml.event.server.FMLServerStartingEvent; import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext; import net.minecraftforge.fml.network.NetworkRegistry; import net.minecraftforge.fml.network.simple.SimpleChannel; // The value here should match an entry in the META-INF/mods.toml file @Mod("chimera") public class ChimeraMod { public final static String MODID = "Chimera"; Items elements; // Directly reference a log4j logger. private static final Logger LOGGER = LogManager.getLogger(); private static final String PROTOCOL_VERSION = "1"; public static final SimpleChannel PACKET_HANDLER = NetworkRegistry.newSimpleChannel(new ResourceLocation("chimera", "chimera"), () -> PROTOCOL_VERSION, PROTOCOL_VERSION::equals, PROTOCOL_VERSION::equals); public static final ItemGroup CHIMERA_ITEM_GROUP = new ItemGroup("tabchimera") { @Override @OnlyIn(Dist.CLIENT) public ItemStack makeIcon() { return new ItemStack(CRUSHED_ICE_ITEM); } }; public static final Item SURGICAL_KNIFE_ITEM = new SurgicalKnifeItem(); public static final Item CRUSHED_ICE_ITEM = new CrushedIceItem(); public static final Item ICE_LAUNCHER_ITEM = new IceLauncherItem(); public ChimeraMod() { elements = new Items(); // Register the setup method for modloading FMLJavaModLoadingContext.get().getModEventBus().addListener(this::setup); // Register the enqueueIMC method for modloading FMLJavaModLoadingContext.get().getModEventBus().addListener(this::enqueueIMC); // Register the processIMC method for modloading FMLJavaModLoadingContext.get().getModEventBus().addListener(this::processIMC); // Register the doClientStuff method for modloading FMLJavaModLoadingContext.get().getModEventBus().addListener(this::doClientStuff); // Register ourselves for server and other game events we are interested in MinecraftForge.EVENT_BUS.register(this); } private void setup(final FMLCommonSetupEvent event) { // some preinit code LOGGER.info("HELLO FROM PREINIT"); LOGGER.info("DIRT BLOCK >> {}", Blocks.DIRT.getRegistryName()); } private void doClientStuff(final FMLClientSetupEvent event) { // do something that can only be done on the client LOGGER.info("Got game settings {}", event.getMinecraftSupplier().get().options); } private void enqueueIMC(final InterModEnqueueEvent event) { // some example code to dispatch IMC to another mod InterModComms.sendTo("chimera", "helloworld", () -> { LOGGER.info("Hello world from the MDK"); return "Hello world"; }); } private void processIMC(final InterModProcessEvent event) { // some example code to receive and process InterModComms from other mods LOGGER.info("Got IMC {}", event.getIMCStream().map(m -> m.getMessageSupplier().get()).collect(Collectors.toList())); } // You can use SubscribeEvent and let the Event Bus discover methods to call @SubscribeEvent public void onServerStarting(FMLServerStartingEvent event) { // do something when the server starts LOGGER.info("HELLO from server starting"); } public void onJoinGame(PlayerLoggedInEvent event) { event.getPlayer().displayClientMessage(new StringTextComponent("Bienvenue !"), true); } // You can use EventBusSubscriber to automatically subscribe events on the contained class (this // is subscribing to the MOD // Event bus for receiving Registry Events) @Mod.EventBusSubscriber(bus = Mod.EventBusSubscriber.Bus.MOD) public static class RegistryEvents { @SubscribeEvent public static void onBlocksRegistry(RegistryEvent.Register<Block> event) { // register a new block here LOGGER.info("HELLO from Register Block"); } } @Mod.EventBusSubscriber(bus = Mod.EventBusSubscriber.Bus.MOD) public static class Items { public static List<Item> itemList = new ArrayList<Item>(); private static Item register(Item itemIn) { itemList.add(itemIn); return itemIn; } @SubscribeEvent public static void registerItems(RegistryEvent.Register<Item> event) { register(CRUSHED_ICE_ITEM); register(ICE_LAUNCHER_ITEM); register(SURGICAL_KNIFE_ITEM); for (final Item item : itemList) { event.getRegistry().register(item); } } } }
Et petit screenshot de la victoire :
Je mets donc ce sujet en résolu.
-