Jump to content

Recommended Posts

Posted

I was updating my mod from 1.12 to 1.12.2, not thinking that anything would break. As it turns out, GameRegistry.register() doesn't seem to work anymore. I was reading up on how to actually register the items/blocks, and I just got incredibly confused and lost (I got really used to the old way, and I don't entirely understand the newer one). The method I am now trying to use is

Spoiler

@SubscribeEvent
    public static void registerItems(final RegistryEvent.Register<Item> event) {

        final Item[] items = {
                
            //Misc + crafting
            //Jello
            itemliquidmeat,
            itemfilterpart,
            itemfilter,
            itemgelatinewet,
            itemgelatine,
            itemjellomix,
            itemjellohot,
            //Cat Hair
            itemcathair,
            
            //Foods
            //Ramen
            foodpeppers,
            foodramencold,
            foodramencooked,
            foodramenspicy,
            foodramensweet,
            foodramenjello,
            foodramenhairy,
            foodramenmeaty,
            foodramenramen,
            foodramenprimal,
            foodramenelectronic,
            foodramenmysterious,
            foodramenbalanced,
            //Bologna
            foodbologna,
            //Jello
            foodjello,
        
        };
        
        final IForgeRegistry<Item> registry = event.getRegistry();
        
        for (final Item item : items) {
            
            registry.register(item);
            
        }
        
    }

My full mod is on Github: https://github.com/Bedrockbreaker/rtap/tree/master

Relevant files in src/main/java/com/bedrockbreaker/rtap/ and src/main/java/com/bedrockbreaker/rtap/init

Professional Hot Garbage Programmer.

https://github.com/Bedrockbreaker/

Posted (edited)

I don't understand the context of the first bullet point. Anyways, ModBlocks.registerItems was me copy/pasting code before actually seeing if it worked. I am also assuming bullet points 2 and 3 are given for almost every thread as they can fix 90% of the problems asked here. The only thing I see that I should do from those links is to add @Override to anything overridden. However, as far as I can tell, I am not overriding anything when creating an item. I am just registering an item to a list.

As to fixing my problem, I am thinking I should wrap

Spoiler

@SubscribeEvent
    public static void registerItems(final RegistryEvent.Register<Item> event) {

        final Item[] items = {
                
            //Misc + crafting
            //Jello
            itemliquidmeat,
            itemfilterpart,
            itemfilter,
            itemgelatinewet,
            itemgelatine,
            itemjellomix,
            itemjellohot,
            //Cat Hair
            itemcathair,
            
            //Foods
            //Ramen
            foodpeppers,
            foodramencold,
            foodramencooked,
            foodramenspicy,
            foodramensweet,
            foodramenjello,
            foodramenhairy,
            foodramenmeaty,
            foodramenramen,
            foodramenprimal,
            foodramenelectronic,
            foodramenmysterious,
            foodramenbalanced,
            //Bologna
            foodbologna,
            //Jello
            foodjello,
        
        };
        
        final IForgeRegistry<Item> registry = event.getRegistry();
        
        for (final Item item : items) {
            
            registry.register(item);
            
        }
        
    }

with public class RegistererOfItems { ... } and put MinecraftForge.EVENT_BUS.register(ModItems.RegistererOfItems.class) in the preInit phase of my main class.

 

EDIT:

After doing that, my game no longer crashes, but no items are registered. Don't even appear in jei and I can't /give them to me. I should probably read even more on events

Edited by _Bedrockbreaker_
edit

Professional Hot Garbage Programmer.

https://github.com/Bedrockbreaker/

Posted (edited)
Quote

I don't understand the context of the first bullet point.

package names are intended to mirror the owner's Web presence. Google uses the com.google prefix because they are Google.com

 

You are not this company: http://bedrock.com

Edited by Draco18s

Apparently I'm a complete and utter jerk and come to this forum just like to make fun of people, be confrontational, and make your personal life miserable.  If you think this is the case, JUST REPORT ME.  Otherwise you're just going to get reported when you reply to my posts and point it out, because odds are, I was trying to be nice.

 

Exception: If you do not understand Java, I WILL NOT HELP YOU and your thread will get locked.

 

DO NOT PM ME WITH PROBLEMS. No help will be given.

Posted

In terms of your general problem with registering items, it is understandable if you've modded before to be confused that there is now an entirely different method of doing so which uses special registry events together with a new "object holder" annotation.

 

In your InitBlocks and InitItems classes you should actually initialize them to null. Then you should give each class the @ObjectHolder annotation. What this does is during mod loading there are several passes after each registry event to "inject" the actual instance into the fields. The fields are matched up by the field name matching the registry name (or you can add additional annotation if you want a different field name).

 

Next you need methods that handle the registry events. I personally put those in an inner class of the class that has the @ObjectHolder instances. Those require methods regular event handling meaning the class needs the @EventBusSubscriber annotation and the methods need to be static and have the @SubscribeEvent annotation.

 

The registry events are generic so you have to handle each valid type. Such as RegistryEvent.Register<Block> and RegistryEvent.Register<Item>.  (Note you should also be using this for entities, biomes and some other things.)

 

Lastly you do the actual constructing of your singleton instances in the registry handling event.

 

You can see my example mod classes for ideas on how to put it all together: 

 

Hope that helps.

 

 

Check out my tutorials here: http://jabelarminecraft.blogspot.com/

Posted
2 hours ago, Draco18s said:

package names are intended to mirror the owner's Web presence. Google uses the com.google prefix because they are Google.com

 

You are not this company: http://bedrock.com

Okay. What should I do then, If I don't intend on owning a website dedicated to my mod? When I first started modding, the tutorials I followed always had com.something.examplemod. So I didn't know anything was wrong.

As for @jabelar, I finally understood what to do after looking through your code and got my mod working again. Thanks for the help!

Professional Hot Garbage Programmer.

https://github.com/Bedrockbreaker/

Posted
30 minutes ago, _Bedrockbreaker_ said:

Okay. What should I do then, If I don't intend on owning a website dedicated to my mod? When I first started modding, the tutorials I followed always had com.something.examplemod. So I didn't know anything was wrong.

Just name your mod after you, not a website that doesn't belong to you/exist

Name it something like bedrockbreaker.rtap

About Me

Spoiler

My Discord - Cadiboo#8887

My WebsiteCadiboo.github.io

My ModsCadiboo.github.io/projects

My TutorialsCadiboo.github.io/tutorials

Versions below 1.14.4 are no longer supported on this forum. Use the latest version to receive support.

When asking support remember to include all relevant log files (logs are found in .minecraft/logs/), code if applicable and screenshots if possible.

Only download mods from trusted sites like CurseForge (minecraft.curseforge.com). A list of bad sites can be found here, with more information available at stopmodreposts.org

Edit your own signature at www.minecraftforge.net/forum/settings/signature/ (Make sure to check its compatibility with the Dark Theme)

Posted

Better idea:

 

mod.bedrockbreaker

 

"mod" is not a top level domain (and even if it was, this is a reference to it being a mod)

Apparently I'm a complete and utter jerk and come to this forum just like to make fun of people, be confrontational, and make your personal life miserable.  If you think this is the case, JUST REPORT ME.  Otherwise you're just going to get reported when you reply to my posts and point it out, because odds are, I was trying to be nice.

 

Exception: If you do not understand Java, I WILL NOT HELP YOU and your thread will get locked.

 

DO NOT PM ME WITH PROBLEMS. No help will be given.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Announcements



  • Recently Browsing

    • No registered users viewing this page.
  • Posts

    • I want to create block with entity, that will have height of 3 or more(configurable) and I tried to change first VoxelShape by increasing collision box on height I want and for changing block height on visual side i tried to configure BlockModelBuilder:  base.element() .from(0, 0, 0) .to(16f, 48f, 16f) .face(Direction.UP).texture("#top").end() .face(Direction.DOWN).texture("#bottom").end() .face(Direction.NORTH).texture("#side").end() .face(Direction.SOUTH).texture("#side").end() .face(Direction.WEST).texture("#side").end() .face(Direction.EAST).texture("#side").end() .end(); but, getting crash with next error: Position y out of range, must be within [-16, 32]. Found: %d [48.0]; Looks like game wont to block height modified by more than 32. Is there any way to fix that problem?
    • As long as the packets you are sending aren't lost, there's nothing wrong with what you're currently doing. Although, this sounds like something that would benefit from you making your own datapack registry instead of trying to arbitrarily sync static maps. Check out `DataPackRegistryEvent.NewRegistry`.
    • Hey all, I've been working a lot with datapacks lately, and I'm wondering what the most efficient way to get said data from server to client is.  I'm currently using packets, but given that a lot of the data I'm storing involves maps along the lines of Map<ResourceLocation, CustomDataType>, it can easily start to get messy if I need to transmit a lot of that data all at once. Recently I started looking into the ReloadableServerResources class, which is where Minecraft stores its built-ins.  I see you can access it via the server from the server's resources.managers, and it seems like this can be done even from the client to appropriately retrieve data from the server, unless I'm misunderstanding.  However, from what I can tell, this only works via built-in methods such as getRecipeManager() or getLootTables(), etc.  These are all SimpleJsonResourceReloadListeners, just like my datapack entries are, so it seems like it could be possible for me to access my datapack entries similarly?  But I don't see anywhere in ReloadableServerResources that stores loaded modded entries, so either I'm looking in the wrong place or it doesn't seem to be a thing. Are packets really the best way of doing this, or am I missing a method that would let me use ReloadableServerResources or something similar?
    • Hi, everyone! I'm new to minecraft modding stuff and want ask you some questions. 1. I checked forge references and saw there com.mojang and net.minecraft (not net.minecraftforge) and as I understand it's original game packages with all minecraft logic inside including renderers and so on, right? 2. Does it mean that forge has a limited set of instruments which doesn't cover all the aspects of the game? If make my question more specific then does forge provide such instruments that allow me totally change minecraft itself, like base mechanics and etc.? Or I have to use "original game packages" to implement such things? 3. I actively learning basic concepts with forge documentation and tutorials. So in my plans make different inventory system like in diabloids. Is that possible with forge? 4. It is last question related to the second one. So how deeply I can change minecraft with forge? I guess all my questions above because of that I haven't globally understanding what forge is and how it works inside and how it works with minecraft. It would be great if you provide some links or topics about it or explain it by yourself but I guess it's to big to be explained in that post at once. Anyway, thank you all for any help!
    • Im trying add to block a hole in center, just a usual block and in center of it on up side, there is should be a hole. I tried to add it via BlockModelBuilder, but its not working. Problem is that it only can change block size outside. I tried it to do with VoxelShape and its working, but its has been on server side and looks like its just changed collision shape, but for client, there is a texture covering this hole. I tried to use: base.renderType("cutout"); and removed some pixels from texture. I thought its should work, but game optimization makes block inside looks transparent. So, only custom model?
  • Topics

×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.