Jump to content

Recommended Posts

Posted

Hi!

I have been wanting to get into Minecraft modding, but it seems that I might have chosen a bad time to start. From what I can tell, [1.13] brought a lot of structural changes to Minecraft, and forge is doing the same to keep up. At first, I thought I should start with [1.12]. But I really do not want to, as I will be learning outdated workflow and structuring. So I decided to stick with [1.13]...

 

The official Forge documentation looked promising, but it seems to be outdated, which is understandable considering that [1.13] Forge is still in beta. I have tried to find good resources on how to learn [1.13] forge, besides this forum, I have had little success... The forum has at least saved me from using bad learning resources since there appear to be many pitfalls in Minecraft modding... Every time I find a learning resource, I always see the comments saying "this is bad practice", stuff like that. I have found some learning resources for people transitioning to [1.13]. But I have yet to find resources designed for new modders...

 

I think I have programming experience sufficient for getting into this. So in the end, my question is, does anyone have any pointers to some good resources or tips? All help is very much-appreciated! :)

Posted
7 hours ago, SizzleBae said:

Every time I find a learning resource, I always see the comments saying "this is bad practice", stuff like that. 

This is typical software engineering jargon for "I wouldn't do it that way." In this case, if the code works, it works. If you're going into professional programming, then maybe you should take the time to learn how to efficiently write code, but for someone who's learning how to mod Minecraft, it really doesn't matter. As time goes on, you'll eventually learn what practices to use over others.

 

The important thing is that most of this forum will not help you out well unless you come already with code. The people here, and in many other places, do not like to just "hand out code" and will be more likely to help. So start out by working with what you know. You're not expected to have perfect code when you first start.

 

And trust me, if you come here with one error, they're going to point out all of the other ones, too.

 

That's my advice. Chances are one of the "higher ups" here will trump me, because that's what they do. Welcome to Forge.

  • Like 2
  • Haha 2

Follow these rules when talking to me, and we'll get along fine.

1).I know Java fairly well. I don't know as much about modding. They are not the same, don't compare them.

2). I consider myself to always be learning. I make mistakes, you make mistakes. Who doesn't?

3). Insult me, and I will leave the thread. I have a real life, I don't have time to throw petty insults in a Minecraft Modding forum.

 

ModMCdl - Co-Founder and Director of Design for Artemis Game Studios

Posted
7 hours ago, SizzleBae said:

Every time I find a learning resource, I always see the comments saying "this is bad practice", stuff like that.

1. Do not watch tutorials on youtube, as most of them do have bad practices.

Most good tutorials are text-based, here is one for example: https://github.com/TheGreyGhost/MinecraftByExample/

 

2. Be prepared to make mistakes and get criticized. The best part (and perhaps the worst part) of the Forge Forum is that people are blunt in pointing out all the mistakes in your code. This is a great way to learn coding practices, as well as how to use the Forge API properly.

 

3. 1.13.2 is indeed quite new, and there are not enough tutorials out there. I would suggest you to search up 1.13.2 mods on GitHub and learn from their source code.

  • Like 1

Some tips:

Spoiler

Modder Support:

Spoiler

1. Do not follow tutorials on YouTube, especially TechnoVision (previously called Loremaster) and HarryTalks, due to their promotion of bad practice and usage of outdated code.

2. Always post your code.

3. Never copy and paste code. You won't learn anything from doing that.

4. 

Quote

Programming via Eclipse's hotfixes will get you nowhere

5. Learn to use your IDE, especially the debugger.

6.

Quote

The "picture that's worth 1000 words" only works if there's an obvious problem or a freehand red circle around it.

Support & Bug Reports:

Spoiler

1. Read the EAQ before asking for help. Remember to provide the appropriate log(s).

2. Versions below 1.11 are no longer supported due to their age. Update to a modern version of Minecraft to receive support.

 

 

Posted
4 minutes ago, DavidM said:

1. Do not watch tutorials on youtube, as most of them do have bad practices.

As Mod stated above, these "bad practices" don't matter too much for someone just starting out, as they'll learn how to improve it themselves as time goes on. Most of the text based tutorials rarely actually explain anything, or are outdated, or don't get into the complexities of some of the good YouTube tutorials, like those by McJty.

 

5 minutes ago, DavidM said:

2. Be prepared to make mistakes and get criticized. The best part (and perhaps the worst part) of the Forge Forum is that people are blunt in pointing out all the mistakes in your code. This is a great way to learn coding practices, as well as how to use the Forge API properly.

Not for everyone. Some, like myself, learn better by example, and fixing one issue at a time, not having every single mistake pointed out all at once, in one massive dump. It's why I only use this forum as a last resort. Depending on OP's learning style, your advice could steer them away from making mods.

 

My suggestion, OP, is to look around in general, to figure out what method of learning helps you the most. I learn best from looking at YouTube tutorials by McJty, and looking through other mods' code, as well as Vanilla's. From there, I gather what I need to do to accomplish the task that I set out to do. You may learn in the way David supplied, or you may learn in a way unmentioned in this thread so far. But if you want my personal suggestion: don't mess with 1.13.2 yet. It's buggy, it's broken, and it's a pain to set up. If you want video tutorials, go to YouTube and search up "McJty modding tutorials". He's pretty good at what he does, and generally has good practices. Maybe not perfect, and maybe not universally considered as good, as it's a fairly subjective term, but at least in my experience, many people think his videos are good.

 

I also recommend looking at other mods, and how they do things. Just looking at 1.13.2 mods on GitHub won't give you everything, though, as you do have to do some things that weren't necessary in 1.12.2.

  • Like 1

Gne9eza.png

 

"Be patient with me, because I'm an absolute moron half the time."

Posted (edited)
18 minutes ago, Daring Do said:

these "bad practices" don't matter too much for someone just starting out

Depends. Starting with bad practices might cause people going back and rewriting everything (which normally isn't the desired case). I personally had the painful experience of going "wtf why" as videos promote (terrible) practices like CommonProxy and IHasModel when I first learned to make mods.

 

18 minutes ago, Daring Do said:

Most of the text based tutorials rarely actually explain anything, or are outdated, or don't get into the complexities of some of the good YouTube tutorials, like those by McJty.

AFAIK it is the other way around. McJty's tutorials are indeed good, but the rest of the tutorials on youtube only covers the basics, as well as suggesting "just copy the code and paste them in your code because it worked for me" (i.e. loremaster and harrytalks). Text-based tutorials often go in more depth about concepts like packets, complex item/block behaviors, rendering, and networking.

 

To sum it up, I would recommend to start with video tutorials like McJty's, and move on to text-based ones. It is easy to get lost if you start with text-based ones at first, so you might want to get the feel of modding by watching videos first. It's up to you, really.

Edited by DavidM
  • Like 1

Some tips:

Spoiler

Modder Support:

Spoiler

1. Do not follow tutorials on YouTube, especially TechnoVision (previously called Loremaster) and HarryTalks, due to their promotion of bad practice and usage of outdated code.

2. Always post your code.

3. Never copy and paste code. You won't learn anything from doing that.

4. 

Quote

Programming via Eclipse's hotfixes will get you nowhere

5. Learn to use your IDE, especially the debugger.

6.

Quote

The "picture that's worth 1000 words" only works if there's an obvious problem or a freehand red circle around it.

Support & Bug Reports:

Spoiler

1. Read the EAQ before asking for help. Remember to provide the appropriate log(s).

2. Versions below 1.11 are no longer supported due to their age. Update to a modern version of Minecraft to receive support.

 

 

Posted
3 minutes ago, DavidM said:

Depends. Starting with bad practices might cause people going back and rewriting everything (which normally isn't the desired case). I personally had the painful experience of going "wtf why" as videos promote (terrible) practices like CommonProxy and IHasModel when I first learned to make mods.

I've literally never heard a reason to not uses IHasModel beyond "it's a terrible idea, use this far more complicated method instead". As for common proxy, I don't think any of the 3 "big" modding tutorial channels even use it for registry. I literally only use it for networking, and have never had a problem with it.

  • Like 2

Gne9eza.png

 

"Be patient with me, because I'm an absolute moron half the time."

Posted
13 minutes ago, Daring Do said:

As Mod stated above, these "bad practices" don't matter too much for someone just starting out, as they'll learn how to improve it themselves as time goes on. Most of the text based tutorials rarely actually explain anything, or are outdated, or don't get into the complexities of some of the good YouTube tutorials, like those by McJty.

Yes they do matter. They break your own mod and other peoples mods. Usually text based tutorials have something at the beginning saying “learn java”. This is important. Most video tutorials say “I’m just starting, this is what worked for me. Do this, this, this and this. Why? Because.”

  • Like 2

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
Just now, Cadiboo said:

Yes they do matter. They break your own mod and other peoples mods. Usually text based tutorials have something at the beginning saying “learn java”. This is important. Most video tutorials say “I’m just starting, this is what worked for me. Do this, this, this and this. Why? Because.”

I mean, I respect you, Cadiboo, but I've not had a situation where it was the things I've used that many would've considered bad practice breaking other mods, or my own. The most incompatible mod I've made would be Resizing Potion/ArtemisLib, and its issues are with mods that mess with hitboxes or eye height, just like those do. That's less bad practices, and more lack of easy compatibility (which is the whole reason ArtemisLib was made in the first place).

 

As I stated, I've yet to be given an actual reason to not use IHasModel when registering item renders, despite how many people have said they don't recommend using it to others. There's blind acceptance on all sides.

  • Like 1

Gne9eza.png

 

"Be patient with me, because I'm an absolute moron half the time."

Posted (edited)
1 hour ago, Daring Do said:

As I stated, I've yet to be given an actual reason to not use IHasModel when registering item renders, despite how many people have said they don't recommend using it to others. There's blind acceptance on all sides.

https://gist.github.com/Cadiboo/fbea89dc95ebbdc58d118f5350b7ba93

 

Short version: "Every item/block has a model, therefore every single item/block should implements IHasModel".

Well, in that case, since every item/block has a model, then why bother to create another interface for it? Why not just register every item/block's model?

 

Theoretically, IHasModel would not break anything. However, the concept itself is totally pointless, and causes people to write extra useless code. The point of IHasModel is to distinguish those with a model from those without a model; however, everything has a mode.

 

1 hour ago, Daring Do said:

As for common proxy, I don't think any of the 3 "big" modding tutorial channels even use it for registry. I literally only use it for networking, and have never had a problem with it.

The whole point of having proxies is that they run code based on the sides, which is the exact opposite of what a CommonProxy does. Proxies should not have common code. All common code goes in the main mod file.

Edited by DavidM
  • Like 1

Some tips:

Spoiler

Modder Support:

Spoiler

1. Do not follow tutorials on YouTube, especially TechnoVision (previously called Loremaster) and HarryTalks, due to their promotion of bad practice and usage of outdated code.

2. Always post your code.

3. Never copy and paste code. You won't learn anything from doing that.

4. 

Quote

Programming via Eclipse's hotfixes will get you nowhere

5. Learn to use your IDE, especially the debugger.

6.

Quote

The "picture that's worth 1000 words" only works if there's an obvious problem or a freehand red circle around it.

Support & Bug Reports:

Spoiler

1. Read the EAQ before asking for help. Remember to provide the appropriate log(s).

2. Versions below 1.11 are no longer supported due to their age. Update to a modern version of Minecraft to receive support.

 

 

Posted
1 minute ago, DavidM said:

Short version: "Every item/block has a model, therefore every single item/block should implements IHasModel".

Well, in that case, since every item/block has a model, then why bother to create another interface for it? Why not just register every item/block's model?

SpecialTileEntityRenders.

 

1 minute ago, DavidM said:

The whole point of having proxies is that they run code based on the sides, which is the exact opposite of what a CommonProxy does. Proxies should not have common code. All common code goes in the main mood file.

Clutters the main file. Some people like to keep their nice and neat main file clear of clutter, like myself. While I don't use my proxies for that (though I should definitely use my client proxy for client-side stuff), it has the same effect. It's not really as bad as you want to think it is, since most of the time, mods don't register stuff solely on the server-side. A common proxy setup really just saves space in your main file, for most people. And by the time an aspiring mod dev is making server only mods, they probably have a good idea of how to register it so it's not needed on the client.

  • Like 1

Gne9eza.png

 

"Be patient with me, because I'm an absolute moron half the time."

Posted (edited)
3 minutes ago, Daring Do said:

SpecialTileEntityRenders

I suppose you meant TileEntitySpecialRenderer. How is that related to IHasModel?

 

3 minutes ago, Daring Do said:

Clutters the main file. Some people like to keep their nice and neat main file clear of clutter

Do not abuse inheritance to "just keep my code cleaner". Composition over inheritance.

Edited by DavidM

Some tips:

Spoiler

Modder Support:

Spoiler

1. Do not follow tutorials on YouTube, especially TechnoVision (previously called Loremaster) and HarryTalks, due to their promotion of bad practice and usage of outdated code.

2. Always post your code.

3. Never copy and paste code. You won't learn anything from doing that.

4. 

Quote

Programming via Eclipse's hotfixes will get you nowhere

5. Learn to use your IDE, especially the debugger.

6.

Quote

The "picture that's worth 1000 words" only works if there's an obvious problem or a freehand red circle around it.

Support & Bug Reports:

Spoiler

1. Read the EAQ before asking for help. Remember to provide the appropriate log(s).

2. Versions below 1.11 are no longer supported due to their age. Update to a modern version of Minecraft to receive support.

 

 

Posted
1 minute ago, DavidM said:

I suppose you meant TileEntitySpecialRenderer. How is that related to IHasModel?

You don't need IHasModel for it. Registering a model for it would just take up time, and is completely unnecessary.

 

2 minutes ago, DavidM said:

Do not abuse inheritance to "just keep my code cleaner". Composition over inheritance.

I'm not. I just like to keep my code clean. Messy code is hard for me to read, and it takes me longer to find an issue in it that code I've kept nice and tidy. It's not just for cleanliness's sake, it's for identifying potential problems easier.

Gne9eza.png

 

"Be patient with me, because I'm an absolute moron half the time."

Posted (edited)
53 minutes ago, DavidM said:

I personally had the painful experience of going "wtf why" as videos promote (terrible) practices like CommonProxy and IHasModel when I first learned to make mods.

 

AFAIK it is the other way around. McJty's tutorials are indeed good, but the rest of the tutorials on youtube only covers the basics (i.e. loremaster and harrytalks)

Ok great so literally the two guys I started watching are the wrong ones. of course. Also, very curious why CommonProxy and IHasModel are bad practice (other than the Hungarian notation there). That is straight from loremaster, and wondering why this is bad practice.  Nevermind, I kept reading. Although from a design patterns perspective I very much agree with a HasModel Interface. And very much disagree with using a CommonProxy lol. You can separate and declutter your main file in much better ways that breaking the purpose of a structure.

 

I am new to mc modding as well. (as of today) I am a professional developer, and want to get my younger brother into coding as well, and I thought a good way to do that would be to teach him how to write his own mc mods. So I need to learn this quickly. I am only focussing on 1.12, not 1.13. Any good text tutorials would be great, as well as any 1.12 mods (github links) with good practices so I can review them. 

Edited by devguydan
I kept reading and found the answer to stuff:)

I hate signatures, they're too distracting

Posted
2 minutes ago, devguydan said:

why CommonProxy and IHasModel are bad practice

Coding style, 1 and 3.

  • Like 2

Some tips:

Spoiler

Modder Support:

Spoiler

1. Do not follow tutorials on YouTube, especially TechnoVision (previously called Loremaster) and HarryTalks, due to their promotion of bad practice and usage of outdated code.

2. Always post your code.

3. Never copy and paste code. You won't learn anything from doing that.

4. 

Quote

Programming via Eclipse's hotfixes will get you nowhere

5. Learn to use your IDE, especially the debugger.

6.

Quote

The "picture that's worth 1000 words" only works if there's an obvious problem or a freehand red circle around it.

Support & Bug Reports:

Spoiler

1. Read the EAQ before asking for help. Remember to provide the appropriate log(s).

2. Versions below 1.11 are no longer supported due to their age. Update to a modern version of Minecraft to receive support.

 

 

Posted

Thank you so much for your tips, everyone! I am happy to see such an active forum :) I will take you up on the tips concerning looking at other [1.13.2] mod sources and vanilla source. Also, McJty's wiki and youtube tutorial look promising. I will try some different learning methods, and if I absolutely have to, I'll post threads concerning specific problems in the future! Again, thanks a lot for your responses! :)

Posted
5 hours ago, Daring Do said:

SpecialTileEntityRenders.

  1. I'm going to assume you're referring to TileEntityItemStackRenderer, since TileEntitySpecialRenderer has nothing to do with items (it's purely for tile entities).
  2. Assuming you're using a TileEntityItemStackRenderer, it's because your item has some special animation requirements, and you're not using the Forge animation system. Even in that case, your item will need a static model for rendering in a GUI, on the ground, in an item frame, etc.

So no - there is no case for IHasModel, under any circumstances. It does not make your code simpler, it just adds unnecessary cruft. Please don't use it, and please, please, don't suggest that its use is in any way OK.

 

As for your assertion that using a "CommonProxy" avoids cluttering the main file - seriously?  If you're that concerned about clutter, put those "common" methods in their own class.  But not in a proxy class whose sole point is to separate the implementation of client-only and server-only code.

Posted

To add my 2 cents on the issue:

 

IHasModel makes you write redundant code. It's not bad in a sense that it will break compatibility or something, it's bad because you literally write way too much code. For an interface that's suposed to simplify the code it's doing the exact opposite. Consider the following:

A typical IHasModel usage:

class ItemX extends Item implements IHasModel
{
...

	@Override
	void registerModels()
	{
		Mod.proxy.registerModel(this, 0, "inventory");
	}
}

class ClientProxy implements IProxy
{
	...
	
	@Override
	void registerModel(Item i, int meta, string variant)
	{
		ModelLoader.setCustomModelResourceLocation(i, new ModelResourceLocation(i.getRegistryName(), variant));
	}

	@Override
	void registerModel(Block b, int meta, string variant)
	{
		ModelLoader.setCustomModelResourceLocation(Item.getItemFromBlock(b), new ModelResourceLocation(b.getRegistryName(), variant));
	}
}

@EventBusSubscriber
class ModelHandler
{
	@SubscribeEvent
    public static void onModelRegistry(ModelRegistryEvent event)
    {
    	for (Item i : ModItems.ITEMS)
        {
        	if (i instanceof IHasModel)
            {
            	((IHasModel)i).registerModel();
            }
        }
      
      for (Block i : ModBlocks.BLOCKS)
        {
        	if (i instanceof IHasModel)
            {
            	((IHasModel)i).registerModel();
            }
        }
    }
}

And then you have to duplicate the code in ItemX for every item class you have. While you can have something like ItemBase do that for you you will STILL have to replicate this code for every item that doesn't extend ItemBase, like custom tools or armor or god knows what.

Now compare this to the "correct" approach to the situation:

@EventBusSubscriber
class ModelHandler
{
	@SubscribeEvent
    public static void onModelRegistry(ModelRegistryEvent event)
    {
      	StreamSupport.stream(Item.REGISTRY.spliterator(), false).filter(i -> i.getRegistryName().getResourceDomain().equalsIgnoreCase("modid")).forEach(i -> ModelLoader.setCustomModelResourceLocation(i, 0, new ModelResourceLocation(i.getRegistryName(), "inventory")));
    }
}

..and you are done. No, really, that's it. 

How about items that have damage?

@EventBusSubscriber
    class ModelHandler
    {
        @SubscribeEvent
        public static void onModelRegistry(ModelRegistryEvent event)
        {
            StreamSupport.stream(Item.REGISTRY.spliterator(), false).filter(i -> i.getRegistryName().getResourceDomain().equalsIgnoreCase("modid")).forEach(i -> 
            {
                ModelResourceLocation staticLocation = new ModelResourceLocation(i.getRegistryName(), "inventory");
                if (i.getMaxDamage() == 0)
                {
                    ModelLoader.setCustomModelResourceLocation(i, 0, staticLocation);
                }
                else
                {
                    ModelLoader.setCustomMeshDefinition(i, it -> staticLocation);
                    ModelBakery.registerItemVariants(i, staticLocation);
                }
            });
        }
    }

What about special cases? This is where an interface is acceptable. There, that's all the code you need and even this can be simplified further using streams better than I did. No need to repeat your code for each new item.

 

CommonProxy:

Of course a common proxy isn't going to cause incompatibilities. There are 2 issues with this concept - the first one is the name, the second one - the whole concept. The tutorials on the internet don't explain you what a proxy is or why it is needed, they just blindly tell you - create these classes, do that and this and it will work. The thing is though - a common proxy makes no sense at all if you think about it. Proxies existed to separate sided only code. If your code is common it goes anywhere else but the proxy. Think about it. A network handler wouldn't have a "Common" side - it has a client and a server. Why would a proxy have it?

As for the "clutter" argument - please provide me an example of things you put in your common proxy that would otherwise clutter your mod class. What code do you even have there? 95% of all things were done with event handlers anyway, you rarely needed to do something in your FML lifecycle events.

Additionally I just want to point out that I indeed had helped people on this very forum that had an issue with their code where the whole case of the issue was indeed the CommonProxy. So it's not even harmless.

Also we are talking about 1.13.2. Proxies are gone anyway.

 

As for the whole "it's fine for a beginner, they will learn to do stuff properly later" argument - no, they won't. Look at the most popular mods out there. They still use IHasModel and CommonProxy. And many other things. Clearly those people haven't learned.

  • Like 1
Posted

1. The IHasModel interface can actually be harmful in that it confuses beginners how the model registry actually works.

Examples of which being:

http://www.minecraftforge.net/forum/topic/69344-solved-1122-block-item-texture-missing/

http://www.minecraftforge.net/forum/topic/69142-texture-not-showing/

Both Modder are confused on how the model registry works, and led to double registering/didn't register some model due to the inconsistence usage of IHasModel.

 

2.

9 hours ago, Daring Do said:

I'm not. I just like to keep my code clean.

 

9 hours ago, DavidM said:

Do not abuse inheritance to "just keep my code cleaner".

Again, the point of OOP is not "make my code look nice".

 

3. Never judge a code in the sense "it works so it is fine". Optimizations, readability and conventions matters.

Some tips:

Spoiler

Modder Support:

Spoiler

1. Do not follow tutorials on YouTube, especially TechnoVision (previously called Loremaster) and HarryTalks, due to their promotion of bad practice and usage of outdated code.

2. Always post your code.

3. Never copy and paste code. You won't learn anything from doing that.

4. 

Quote

Programming via Eclipse's hotfixes will get you nowhere

5. Learn to use your IDE, especially the debugger.

6.

Quote

The "picture that's worth 1000 words" only works if there's an obvious problem or a freehand red circle around it.

Support & Bug Reports:

Spoiler

1. Read the EAQ before asking for help. Remember to provide the appropriate log(s).

2. Versions below 1.11 are no longer supported due to their age. Update to a modern version of Minecraft to receive support.

 

 

Posted

IHasModel is fine if it’s used for what it’s meant for, a high level of control over individual item models. For example if your mod has lots of items with many variants and complicated models. It is not fine for beginners as it complicates their code, they don’t need it and they probably don’t understand how it works,  why it’s used or what it does. Therefore it shouldn’t be in tutorials.

@devguydan Some good tutorials include MinecraftByExample, ShadowFacts tutorials, Jabelar’s tutorials and Cubicoder’s tutorials. I’ve also heard that McJty’s tutorials are good, but IIRC they use IHasModel and CommonProxy. I’ve got a list of tutorials and resources at https://github.com/Cadiboo/Example-Mod and I’m also doing my own 1.13.2 tutorials. 

  • Like 1

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
1 hour ago, Cadiboo said:

IHasModel is fine if it’s used for what it’s meant for, a high level of control over individual item models.

In which case, it should be something like IComplicatedModel or something.

 

Like this:

https://github.com/Draco18s/ReasonableRealism/blob/1.12.1/src/main/java/com/draco18s/hardlib/api/interfaces/IItemWithMeshDefinition.java

 

That lets me go "oh, this is special and needs special treatment" and register its model appropriately.

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'm no Java expert, but am trying to generate the dimension noise_settings for my mod using code, but am stuck on how to program 'string' arguments. I have used the Noise Settings Generator at https://misode.github.io/worldgen/noise-settings/?version=1.20 to design my noise settings In my code, my RegistrySetBuilder adds Registries.NOISE_SETTINGS, and in that bootstrap I register my noise which creates a new NoiseGeneratorSettings. This creates a new NoiseRouter, to which I pass DensityFunction parameters Noise Settings Generator Float Arguments I can code like: DensityFunctions.constant(1) Object Arguments I can code like: DensityFunctions.noise(holdergetter.getOrThrow(Noises.SURFACE), 500.0D, -12.0D) But I can't see how to do String Arguments. In misode they look like Argument: String: minecraft:overworld_large_biomes/sloped_cheese   Any ideas?
    • Hello everyone, Very junior mod maker here. I'm making a floating plank that sits over water. There's this heavy shadow on it when there's a block over it for some reason. As you can see in the picture, the lily pad that has a block over it is just a little darker from the shadow. however my custom plank is almost dark. I have no idea what might cause this. If it is how I generate the block model, here's the code I'm using:   getBuilder(block.getId().getPath()) .ao(false) .texture("particle", new ResourceLocation(xxxxx.MODID, "block/" + block.getId().getPath())) .texture("texture", new ResourceLocation(xxxxx.MODID, "block/" + block.getId().getPath())) .element() .from(0.01f, -2f, 0.01f) .to(15.99f, 0.01f, 15.99f) .face(Direction.DOWN).uvs(0f, 0f, 16f, 16f).texture("#texture").cullface(Direction.DOWN).tintindex(0).end() .face(Direction.UP).uvs(0f, 0f, 16f, 16f).texture("#texture").cullface(Direction.UP).tintindex(0).end() .face(Direction.NORTH).uvs(0f, 0f, 16f, 2.01f).texture("#texture").cullface(Direction.NORTH).tintindex(0).end() .face(Direction.SOUTH).uvs(0f, 0f, 16f, 2.01f).texture("#texture").cullface(Direction.SOUTH).tintindex(0).end() .face(Direction.EAST).uvs(0f, 0f, 2.01f, 16f).texture("#texture").rotation(ModelBuilder.FaceRotation.CLOCKWISE_90).cullface(Direction.EAST).tintindex(0).end() .face(Direction.WEST).uvs(0f, 0f, 2.01f, 16f).texture("#texture").rotation(ModelBuilder.FaceRotation.CLOCKWISE_90).cullface(Direction.WEST).tintindex(0).end() .end();  
    • [30Jan2025 13:41:57. 714] [main/INFO] [cpw. mods. modlauncher. Launcher/MODLAUNCHER]: ModLauncher running: args [--launchTarget, arclightserver, --fml. forgeVersion, 47. 3. 22, --fml. mcVersion, 1. 20. 1, --fml. forgeGroup, net. minecraftforge, --fml. mcpVersion, 20230612. 114412, nogui] 14[30Jan2025 13:41:57. 715] [main/INFO] [cpw. mods. modlauncher. Launcher/MODLAUNCHER]: ModLauncher 10. 0. 9+10. 0. 9+main. dcd20f30 starting: java version 17. 0. 13 by Eclipse Adoptium; OS Linux arch amd64 version 5. 15. 0-131-generic 15[30Jan2025 13:41:58. 774] [main/INFO] [net. minecraftforge. fml. loading. ImmediateWindowHandler/]: ImmediateWindowProvider not loading because launch target is arclightserver 16[30Jan2025 13:41:58. 804] [main/INFO] [mixin/]: SpongePowered MIXIN Subsystem Version=0. 8. 5 Source=union:/server/libraries/org/spongepowered/mixin/0. 8. 5/mixin-0. 8. 5. jar%2399!/ Service=ModLauncher Env=SERVER 17[30Jan2025 13:41:59. 305] [main/WARN] [net. minecraftforge. fml. loading. moddiscovery. ModFileParser/LOADING]: Mod file /server/libraries/net/minecraftforge/fmlcore/1. 20. 1-47. 3. 22/fmlcore-1. 20. 1-47. 3. 22. jar is missing mods. toml file 18[30Jan2025 13:41:59. 308] [main/WARN] [net. minecraftforge. fml. loading. moddiscovery. ModFileParser/LOADING]: Mod file /server/libraries/net/minecraftforge/javafmllanguage/1. 20. 1-47. 3. 22/javafmllanguage-1. 20. 1-47. 3. 22. jar is missing mods. toml file 19[30Jan2025 13:41:59. 309] [main/WARN] [net. minecraftforge. fml. loading. moddiscovery. ModFileParser/LOADING]: Mod file /server/libraries/net/minecraftforge/lowcodelanguage/1. 20. 1-47. 3. 22/lowcodelanguage-1. 20. 1-47. 3. 22. jar is missing mods. toml file 20[30Jan2025 13:41:59. 311] [main/WARN] [net. minecraftforge. fml. loading. moddiscovery. ModFileParser/LOADING]: Mod file /server/libraries/net/minecraftforge/mclanguage/1. 20. 1-47. 3. 22/mclanguage-1. 20. 1-47. 3. 22. jar is missing mods. toml file 21[30Jan2025 13:41:59. 572] [main/INFO] [net. minecraftforge. fml. loading. moddiscovery. JarInJarDependencyLocator/]: Found 15 dependencies adding them to mods collection 22[30Jan2025 13:42:04. 300] [main/INFO] [mixin/]: Compatibility level set to JAVA_17 23[30Jan2025 13:42:04. 507] [main/ERROR] [mixin/]: Mixin config mixins. megamons-common. json does not specify "minVersion" property 24[30Jan2025 13:42:04. 621] [main/INFO] [mixin/]: Successfully loaded Mixin Connector [de. maxhenkel. tradecycling. MixinConnector] 25[30Jan2025 13:42:04. 625] [main/INFO] [mixin/]: Successfully loaded Mixin Connector [io. izzel. arclight. common. mod. ArclightConnector] 26[30Jan2025 13:42:04. 696] [main/INFO] [Arclight/]: Arclight core mixin added. 27[30Jan2025 13:42:04. 708] [main/INFO] [Arclight/]: Arclight optimization mixin added. 28[30Jan2025 13:42:04. 712] [main/INFO] [cpw. mods. modlauncher. LaunchServiceHandler/MODLAUNCHER]: Launching target 'arclightserver' with arguments [nogui] 29[30Jan2025 13:42:04. 982] [main/WARN] [mixin/]: Reference map 'handcrafted-forge-1. 20. 1-forge-refmap. json' for handcrafted. mixins. json could not be read. If this is a development environment you can ignore this message 30[30Jan2025 13:42:05. 003] [main/WARN] [mixin/]: Reference map 'megamons-forge-refmap. json' for mixins. megamons-forge. json could not be read. If this is a development environment you can ignore this message 31[30Jan2025 13:42:05. 021] [main/WARN] [mixin/]: Reference map 'CreateLiquidFuel. refmap. json' for createliquidfuel. mixins. json could not be read. If this is a development environment you can ignore this message 32[30Jan2025 13:42:05. 029] [main/WARN] [mixin/]: Reference map 'chiselsandbits. refmap. json' for chisels-and-bits. mixins. json could not be read. If this is a development environment you can ignore this message 33[30Jan2025 13:42:06. 109] [main/WARN] [mixin/]: Error loading class: com/copycatsplus/copycats/content/copycat/slab/CopycatSlabBlock (java. lang. ClassNotFoundException: com. copycatsplus. copycats. content. copycat. slab. CopycatSlabBlock) 34[30Jan2025 13:42:06. 109] [main/WARN] [mixin/]: @Mixin target com. copycatsplus. copycats. content. copycat. slab. CopycatSlabBlock was not found create_connected. mixins. json:compat. CopycatBlockMixin 35[30Jan2025 13:42:06. 112] [main/WARN] [mixin/]: Error loading class: com/copycatsplus/copycats/content/copycat/board/CopycatBoardBlock (java. lang. ClassNotFoundException: com. copycatsplus. copycats. content. copycat. board. CopycatBoardBlock) 36[30Jan2025 13:42:06. 112] [main/WARN] [mixin/]: @Mixin target com. copycatsplus. copycats. content. copycat. board. CopycatBoardBlock was not found create_connected. mixins. json:compat. CopycatBlockMixin 37[30Jan2025 13:42:06. 154] [main/WARN] [mixin/]: Error loading class: me/jellysquid/mods/lithium/common/ai/pathing/PathNodeDefaults (java. lang. ClassNotFoundException: me. jellysquid. mods. lithium. common. ai. pathing. PathNodeDefaults) 38[30Jan2025 13:42:06. 212] [main/ERROR] [net. minecraftforge. fml. loading. RuntimeDistCleaner/DISTXFORM]: Attempted to load class com/simibubi/create/foundation/gui/AbstractSimiScreen for invalid dist DEDICATED_SERVER 39[30Jan2025 13:42:06. 213] [main/WARN] [mixin/]: Error loading class: com/simibubi/create/foundation/gui/AbstractSimiScreen (java. lang. RuntimeException: Attempted to load class com/simibubi/create/foundation/gui/AbstractSimiScreen for invalid dist DEDICATED_SERVER) 40[30Jan2025 13:42:06. 213] [main/WARN] [mixin/]: @Mixin target com. simibubi. create. foundation. gui. AbstractSimiScreen was not found create_connected. mixins. json:sequencedgearshift. AbstractSimiScreenAccessor 41[30Jan2025 13:42:07. 237] [main/WARN] [mixin/]: Error loading class: juuxel/adorn/block/variant/BlockVariantSets (java. lang. ClassNotFoundException: juuxel. adorn. block. variant. BlockVariantSets) 42[30Jan2025 13:42:07. 237] [main/WARN] [mixin/]: @Mixin target juuxel. adorn. block. variant. BlockVariantSets was not found mixins. cobblemon-common. json:invoker. AdornRegisterInvoker 43[30Jan2025 13:42:11. 158] [main/INFO] [MixinExtras|Service/]: Initializing MixinExtras via com. llamalad7. mixinextras. service. MixinExtrasServiceImpl(version=0. 3. 5). 44[30Jan2025 13:42:20. 266] [main/WARN] [mixin/]: Static binding violation: PRIVATE @Overwrite method m_147092_ in mixins. arclight. core. json:world. entity. ExperienceOrbMixin cannot reduce visibiliy of PUBLIC target method, visibility will be upgraded. 45[30Jan2025 13:42:21. 288] [main/ERROR] [net. minecraftforge. coremod. transformer. CoreModBaseTransformer/COREMOD]: Error occurred applying transform of coremod coremods/field_to_method. js function biome 46java. lang. IllegalStateException: Field f_47437_ is not private and an instance field 47at net. minecraftforge. coremod. api. ASMAPI. redirectFieldToMethod(ASMAPI. java:1069) ~[coremods-5. 2. 4. jar%2388!/:?] {} 48at org. openjdk. nashorn. internal. scripts. Script$Recompilation$22$292A$\^eval\_. initializeCoreMod#transformer(:11) ~[?:?] {} 49at org. openjdk. nashorn. internal. runtime. ScriptFunctionData. invoke(ScriptFunctionData. java:648) ~[nashorn-core-15. 4. jar%23100!/:?] {} 50at org. openjdk. nashorn. internal. runtime. ScriptFunction. invoke(ScriptFunction. java:513) ~[nashorn-core-15. 4. jar%23100!/:?] {} 51at org. openjdk. nashorn. internal. runtime. ScriptRuntime. apply(ScriptRuntime. java:520) ~[nashorn-core-15. 4. jar%23100!/:?] {} 52at org. openjdk. nashorn. api. scripting. ScriptObjectMirror. call(ScriptObjectMirror. java:111) ~[nashorn-core-15. 4. jar%23100!/:?] {} 53at net. minecraftforge. coremod. NashornFactory. lambda$getFunction$0(NashornFactory. java:37) ~[coremods-5. 2. 4. jar%2388!/:5. 2. 4] {} 54at net. minecraftforge. coremod. transformer. CoreModClassTransformer. runCoremod(CoreModClassTransformer. java:22) ~[coremods-5. 2. 4. jar%2388!/:?] {} 55at net. minecraftforge. coremod. transformer. CoreModClassTransformer. runCoremod(CoreModClassTransformer. java:14) ~[coremods-5. 2. 4. jar%2388!/:?] {} 56at net. minecraftforge. coremod. transformer. CoreModBaseTransformer. transform(CoreModBaseTransformer. java:60) ~[coremods-5. 2. 4. jar%2388!/:?] {} 57at cpw. mods. modlauncher. TransformerHolder. transform(TransformerHolder. java:41) ~[modlauncher-10. 0. 9. jar%2389!/:?] {} 58at cpw. mods. modlauncher. ClassTransformer. performVote(ClassTransformer. java:179) ~[modlauncher-10. 0. 9. jar%2389!/:?] {} 59at cpw. mods. modlauncher. ClassTransformer. transform(ClassTransformer. java:117) ~[modlauncher-10. 0. 9. jar%2389!/:?] {} 60at cpw. mods. modlauncher. TransformingClassLoader. maybeTransformClassBytes(TransformingClassLoader. java:50) ~[modlauncher-10. 0. 9. jar%2389!/:?] {} 61at cpw. mods. cl. ModuleClassLoader. getMaybeTransformedClassBytes(ModuleClassLoader. java:250) ~[securejarhandler-2. 1. 10. jar:?] {} 62at cpw. mods. modlauncher. TransformingClassLoader. buildTransformedClassNodeFor(TransformingClassLoader. java:58) ~[modlauncher-10. 0. 9. jar%2389!/:?] {} 63at cpw. mods. modlauncher. LaunchPluginHandler. lambda$announceLaunch$10(LaunchPluginHandler. java:100) ~[modlauncher-10. 0. 9. jar%2389!/:?] {} 64at org. spongepowered. asm. launch. MixinLaunchPluginLegacy. getClassNode(MixinLaunchPluginLegacy. java:222) ~[mixin-0. 8. 5. jar%2399!/:0. 8. 5+Jenkins-b310. git-155314e6e91465dad727e621a569906a410cd6f4] {} 65at org. spongepowered. asm. launch. MixinLaunchPluginLegacy. getClassNode(MixinLaunchPluginLegacy. java:207) ~[mixin-0. 8. 5. jar%2399!/:0. 8. 5+Jenkins-b310. git-155314e6e91465dad727e621a569906a410cd6f4] {} 66at org. spongepowered. asm. mixin. transformer. ClassInfo. forName(ClassInfo. java:2005) ~[mixin-0. 8. 5. jar%2399!/:0. 8. 5+Jenkins-b310. git-155314e6e91465dad727e621a569906a410cd6f4] {} 67at org. spongepowered. asm. mixin. transformer. ClassInfo. forType(ClassInfo. java:2059) ~[mixin-0. 8. 5. jar%2399!/:0. 8. 5+Jenkins-b310. git-155314e6e91465dad727e621a569906a410cd6f4] {} 68at org. spongepowered. asm. mixin. transformer. ClassInfo. forDescriptor(ClassInfo. java:2038) ~[mixin-0. 8. 5. jar%2399!/:0. 8. 5+Jenkins-b310. git-155314e6e91465dad727e621a569906a410cd6f4] {} 69at org. spongepowered. asm. mixin. transformer. MixinPreProcessorStandard. transformMethod(MixinPreProcessorStandard. java:752) ~[mixin-0. 8. 5. jar%2399!/:0. 8. 5+Jenkins-b310. git-155314e6e91465dad727e621a569906a410cd6f4] {} 70at org. spongepowered. asm. mixin. transformer. MixinPreProcessorStandard. transform(MixinPreProcessorStandard. java:739) ~[mixin-0. 8. 5. jar%2399!/:0. 8. 5+Jenkins-b310. git-155314e6e91465dad727e621a569906a410cd6f4] {} 71at org. spongepowered. asm. mixin. transformer. MixinPreProcessorStandard. attach(MixinPreProcessorStandard. java:310) ~[mixin-0. 8. 5. jar%2399!/:0. 8. 5+Jenkins-b310. git-155314e6e91465dad727e621a569906a410cd6f4] {} 72at org. spongepowered. asm. mixin. transformer. MixinPreProcessorStandard. createContextFor(MixinPreProcessorStandard. java:280) ~[mixin-0. 8. 5. jar%2399!/:0. 8. 5+Jenkins-b310. git-155314e6e91465dad727e621a569906a410cd6f4] {} 73at org. spongepowered. asm. mixin. transformer. MixinInfo. createContextFor(MixinInfo. java:1288) ~[mixin-0. 8. 5. jar%2399!/:0. 8. 5+Jenkins-b310. git-155314e6e91465dad727e621a569906a410cd6f4] {} 74at org. spongepowered. asm. mixin. transformer. MixinApplicatorStandard. apply(MixinApplicatorStandard. java:292) ~[mixin-0. 8. 5. jar%2399!/:0. 8. 5+Jenkins-b310. git-155314e6e91465dad727e621a569906a410cd6f4] {} 75at org. spongepowered. asm. mixin. transformer. TargetClassContext. apply(TargetClassContext. java:383) ~[mixin-0. 8. 5. jar%2399!/:0. 8. 5+Jenkins-b310. git-155314e6e91465dad727e621a569906a410cd6f4] {} 76at org. spongepowered. asm. mixin. transformer. TargetClassContext. applyMixins(TargetClassContext. java:365) ~[mixin-0. 8. 5. jar%2399!/:0. 8. 5+Jenkins-b310. git-155314e6e91465dad727e621a569906a410cd6f4] {} 77at org. spongepowered. asm. mixin. transformer. MixinProcessor. applyMixins(MixinProcessor. java:363) ~[mixin-0. 8. 5. jar%2399!/:0. 8. 5+Jenkins-b310. git-155314e6e91465dad727e621a569906a410cd6f4] {} 78at org. spongepowered. asm. mixin. transformer. MixinTransformer. transformClass(MixinTransformer. java:250) ~[mixin-0. 8. 5. jar%2399!/:0. 8. 5+Jenkins-b310. git-155314e6e91465dad727e621a569906a410cd6f4] {} 79at org. spongepowered. asm. service. modlauncher. MixinTransformationHandler. processClass(MixinTransformationHandler. java:131) ~[mixin-0. 8. 5. jar%2399!/:0. 8. 5+Jenkins-b310. git-155314e6e91465dad727e621a569906a410cd6f4] {} 80at org. spongepowered. asm. launch. MixinLaunchPluginLegacy. processClass(MixinLaunchPluginLegacy. java:131) ~[mixin-0. 8. 5. jar%2399!/:0. 8. 5+Jenkins-b310. git-155314e6e91465dad727e621a569906a410cd6f4] {} 81at cpw. mods. modlauncher. serviceapi. ILaunchPluginService. processClassWithFlags(ILaunchPluginService. java:156) ~[modlauncher-10. 0. 9. jar%2389!/:10. 0. 9+10. 0. 9+main. dcd20f30] {} 82at cpw. mods. modlauncher. LaunchPluginHandler. offerClassNodeToPlugins(LaunchPluginHandler. java:88) ~[modlauncher-10. 0. 9. jar%2389!/:?] {} 83at cpw. mods. modlauncher. ClassTransformer. transform(ClassTransformer. java:120) ~[modlauncher-10. 0. 9. jar%2389!/:?] {} 84at cpw. mods. modlauncher. TransformingClassLoader. maybeTransformClassBytes(TransformingClassLoader. java:50) ~[modlauncher-10. 0. 9. jar%2389!/:?] {} 85at cpw. mods. cl. ModuleClassLoader. readerToClass(ModuleClassLoader. java:113) ~[securejarhandler-2. 1. 10. jar:?] {} 86at cpw. mods. cl. ModuleClassLoader. lambda$findClass$15(ModuleClassLoader. java:219) ~[securejarhandler-2. 1. 10. jar:?] {} 87at cpw. mods. cl. ModuleClassLoader. loadFromModule(ModuleClassLoader. java:229) ~[securejarhandler-2. 1. 10. jar:?] {} 88at cpw. mods. cl. ModuleClassLoader. findClass(ModuleClassLoader. java:219) ~[securejarhandler-2. 1. 10. jar:?] {} 89at cpw. mods. cl. ModuleClassLoader. loadClass(ModuleClassLoader. java:135) ~[securejarhandler-2. 1. 10. jar:?] {} 90at java. lang. ClassLoader. loadClass(ClassLoader. java:525) ~[?:?] {} 91at net. minecraft. core. GlobalPos. m_122641_(GlobalPos. java:11) ~[server-1. 20. 1-20230612. 114412-srg. jar%23247!/:?] {re:mixin, re:classloading} 92at com. mojang. serialization. codecs. RecordCodecBuilder. create(RecordCodecBuilder. java:72) ~[datafixerupper-6. 0. 8. jar%23111!/:?] {} 93at net. minecraft. core. GlobalPos. (GlobalPos. java:11) ~[server-1. 20. 1-20230612. 114412-srg. jar%23247!/:?] {re:mixin, re:classloading} 94at net. minecraft. world. entity. ai. memory. MemoryModuleType. (MemoryModuleType. java:32) ~[server-1. 20. 1-20230612. 114412-srg. jar%23247!/:?] {re:classloading, pl:accesstransformer:B, re:mixin, pl:accesstransformer:B} 95at net. minecraft. world. entity. animal. frog. Tadpole. (TadpoleMixin. java:53) ~[server-1. 20. 1-20230612. 114412-srg. jar%23247!/:?] {re:mixin, pl:accesstransformer:B, xf:fml:forge:forge_method_redirector, re:classloading, pl:accesstransformer:B, xf:fml:forge:forge_method_redirector, pl:mixin:APP:mixins. arclight. core. json:world. entity. animal. frog. TadpoleMixin, pl:mixin:A} 96at net. minecraft. world. entity. EntityType. (EntityTypeMixin. java:267) ~[server-1. 20. 1-20230612. 114412-srg. jar%23247!/:?] {re:mixin, xf:fml:forge:forge_method_redirector, re:classloading, xf:fml:forge:forge_method_redirector, pl:mixin:APP:mixins. arclight. core. json:world. entity. EntityTypeMixin, pl:mixin:A} 97at net. minecraft. world. item. Items. (Items. java:754) ~[server-1. 20. 1-20230612. 114412-srg. jar%23247!/:?] {re:mixin, pl:object_holder_definalize:A, re:classloading, pl:object_holder_definalize:A} 98at net. minecraft. world. level. block. ComposterBlock. m_51988_(ComposterBlockMixin. java:60) ~[server-1. 20. 1-20230612. 114412-srg. jar%23247!/:?] {re:mixin, pl:accesstransformer:B, re:classloading, pl:accesstransformer:B, pl:mixin:APP:mixins. arclight. core. json:world. level. block. ComposterBlockMixin, pl:mixin:A} 99at net. minecraft. server. Bootstrap. m_135870_(BootstrapMixin. java:47) ~[server-1. 20. 1-20230612. 114412-srg. jar%23247!/:?] {re:mixin, re:classloading, pl:mixin:APP:mixins. arclight. core. json:server. BootstrapMixin, pl:mixin:A} 100at net. minecraft. server. Main. main(Main. java:121) ~[server-1. 20. 1-20230612. 114412-srg. jar%23247!/:?] {re:mixin, pl:accesstransformer:B, re:classloading, pl:accesstransformer:B, pl:mixin:A} 101at jdk. internal. reflect. NativeMethodAccessorImpl. invoke0(Native Method) ~[?:?] {} 102at jdk. internal. reflect. NativeMethodAccessorImpl. invoke(NativeMethodAccessorImpl. java:77) ~[?:?] {} 103at jdk. internal. reflect. DelegatingMethodAccessorImpl. invoke(DelegatingMethodAccessorImpl. java:43) ~[?:?] {} 104at java. lang. reflect. Method. invoke(Method. java:569) ~[?:?] {} 105at net. minecraftforge. fml. loading. targets. CommonLaunchHandler. runTarget(CommonLaunchHandler. java:111) ~[fmlloader-1. 20. 1-47. 3. 22. jar%23103!/:?] {} 106at net. minecraftforge. fml. loading. targets. CommonLaunchHandler. serverService(CommonLaunchHandler. java:103) ~[fmlloader-1. 20. 1-47. 3. 22. jar%23103!/:?] {} 107at net. minecraftforge. fml. loading. targets. CommonServerLaunchHandler. lambda$makeService$0(CommonServerLaunchHandler. java:27) ~[fmlloader-1. 20. 1-47. 3. 22. jar%23103!/:?] {} 108at cpw. mods. modlauncher. LaunchServiceHandlerDecorator. launch(LaunchServiceHandlerDecorator. java:30) ~[modlauncher-10. 0. 9. jar%2389!/:?] {} 109at cpw. mods. modlauncher. LaunchServiceHandler. launch(LaunchServiceHandler. java:53) ~[modlauncher-10. 0. 9. jar%2389!/:?] {} 110at cpw. mods. modlauncher. LaunchServiceHandler. launch(LaunchServiceHandler. java:71) ~[modlauncher-10. 0. 9. jar%2389!/:?] {} 111at cpw. mods. modlauncher. Launcher. run(Launcher. java:108) ~[modlauncher-10. 0. 9. jar%2389!/:?] {} 112at cpw. mods. modlauncher. Launcher. main(Launcher. java:78) ~[modlauncher-10. 0. 9. jar%2389!/:?] {} 113at cpw. mods. modlauncher. BootstrapLaunchConsumer. accept(BootstrapLaunchConsumer. java:26) ~[modlauncher-10. 0. 9. jar%2389!/:?] {} 114at cpw. mods. modlauncher. BootstrapLaunchConsumer. accept(BootstrapLaunchConsumer. java:23) ~[modlauncher-10. 0. 9. jar%2389!/:?] {} 115at io. izzel. arclight. boot. application. ApplicationBootstrap. accept(ApplicationBootstrap. java:46) ~[arclight. jar:arclight-1. 20. 1-1. 0. 6-SNAPSHOT-c1e6367] {} 116at jdk. internal. reflect. NativeMethodAccessorImpl. invoke0(Native Method) ~[?:?] {} 117at jdk. internal. reflect. NativeMethodAccessorImpl. invoke(NativeMethodAccessorImpl. java:77) ~[?:?] {} 118at jdk. internal. reflect. DelegatingMethodAccessorImpl. invoke(DelegatingMethodAccessorImpl. java:43) ~[?:?] {} 119at java. lang. reflect. Method. invoke(Method. java:569) ~[?:?] {} 120at io. izzel. arclight. boot. application. BootstrapTransformer. onInvoke$BootstrapLauncher(BootstrapTransformer. java:26) ~[arclight. jar:arclight-1. 20. 1-1. 0. 6-SNAPSHOT-c1e6367] {} 121at cpw. mods. bootstraplauncher. BootstrapLauncher. main(BootstrapLauncher. java:141) ~[bootstraplauncher-1. 1. 2. jar:?] {} 122at jdk. internal. reflect. NativeMethodAccessorImpl. invoke0(Native Method) ~[?:?] {} 123at jdk. internal. reflect. NativeMethodAccessorImpl. invoke(NativeMethodAccessorImpl. java:77) ~[?:?] {} 124at jdk. internal. reflect. DelegatingMethodAccessorImpl. invoke(DelegatingMethodAccessorImpl. java:43) ~[?:?] {} 125at java. lang. reflect. Method. invoke(Method. java:569) ~[?:?] {} 126at io. izzel. arclight. boot. application. Main_Forge. main(Main_Forge. java:33) ~[arclight. jar%2383!/:arclight-1. 20. 1-1. 0. 6-SNAPSHOT-c1e6367] {} 127at io. izzel. arclight. server. Launcher. main(Launcher. java:18) ~[arclight. jar%2383!/:arclight-1. 20. 1-1. 0. 6-SNAPSHOT-c1e6367] {} 128[30Jan2025 13:42:21. 327] [main/WARN] [mixin/]: @Inject(@At("INVOKE_ASSIGN")) Shift. BY=2 on refurbished_furniture. common. mixins. json:LevelChunkMixin::handler$zjk000$refurbishedFurniture$AfterRemoveBlockEntity exceeds the maximum allowed value: 0. Increase the value of maxShiftBy to suppress this warning. 129[30Jan2025 13:42:22. 457] [main/WARN] [mixin/]: Mixin alexscaves. mixins. json:SwampHutPieceMixin has multiple constructors, (Lnet/minecraft/world/level/levelgen/structure/pieces/StructurePieceType; IIIIIILnet/minecraft/core/Direction; )V was selected 130 131[30Jan2025 13:42:22. 601] [main/ERROR] [net. minecraftforge. coremod. transformer. CoreModBaseTransformer/COREMOD]: Error occurred applying transform of coremod coremods/field_to_method. js function biome 132java. lang. IllegalStateException: Field f_47437_ is not private and an instance field 133at net. minecraftforge. coremod. api. ASMAPI. redirectFieldToMethod(ASMAPI. java:1069) ~[coremods-5. 2. 4. jar%2388!/:?] {} 134at org. openjdk. nashorn. internal. scripts. Script$Recompilation$22$292A$\^eval\_. initializeCoreMod#transformer(:11) ~[?:?] {} 135at org. openjdk. nashorn. internal. runtime. ScriptFunctionData. invoke(ScriptFunctionData. java:648) ~[nashorn-core-15. 4. jar%23100!/:?] {} 136at org. openjdk. nashorn. internal. runtime. ScriptFunction. invoke(ScriptFunction. java:513) ~[nashorn-core-15. 4. jar%23100!/:?] {} 137at org. openjdk. nashorn. internal. runtime. ScriptRuntime. apply(ScriptRuntime. java:520) ~[nashorn-core-15. 4. jar%23100!/:?] {} 138at org. openjdk. nashorn. api. scripting. ScriptObjectMirror. call(ScriptObjectMirror. java:111) ~[nashorn-core-15. 4. jar%23100!/:?] {} 139at net. minecraftforge. coremod. NashornFactory. lambda$getFunction$0(NashornFactory. java:37) ~[coremods-5. 2. 4. jar%2388!/:5. 2. 4] {} 140at net. minecraftforge. coremod. transformer. CoreModClassTransformer. runCoremod(CoreModClassTransformer. java:22) ~[coremods-5. 2. 4. jar%2388!/:?] {} 141at net. minecraftforge. coremod. transformer. CoreModClassTransformer. runCoremod(CoreModClassTransformer. java:14) ~[coremods-5. 2. 4. jar%2388!/:?] {} 142at net. minecraftforge. coremod. transformer. CoreModBaseTransformer. transform(CoreModBaseTransformer. java:60) ~[coremods-5. 2. 4. jar%2388!/:?] {} 143at cpw. mods. modlauncher. TransformerHolder. transform(TransformerHolder. java:41) ~[modlauncher-10. 0. 9. jar%2389!/:?] {} 144at cpw. mods. modlauncher. ClassTransformer. performVote(ClassTransformer. java:179) ~[modlauncher-10. 0. 9. jar%2389!/:?] {} 145at cpw. mods. modlauncher. ClassTransformer. transform(ClassTransformer. java:117) ~[modlauncher-10. 0. 9. jar%2389!/:?] {} 146at cpw. mods. modlauncher. TransformingClassLoader. maybeTransformClassBytes(TransformingClassLoader. java:50) ~[modlauncher-10. 0. 9. jar%2389!/:?] {} 147at cpw. mods. cl. ModuleClassLoader. readerToClass(ModuleClassLoader. java:113) ~[securejarhandler-2. 1. 10. jar:?] {} 148at cpw. mods. cl. ModuleClassLoader. lambda$findClass$15(ModuleClassLoader. java:219) ~[securejarhandler-2. 1. 10. jar:?] {} 149at cpw. mods. cl. ModuleClassLoader. loadFromModule(ModuleClassLoader. java:229) ~[securejarhandler-2. 1. 10. jar:?] {} 150at cpw. mods. cl. ModuleClassLoader. findClass(ModuleClassLoader. java:219) ~[securejarhandler-2. 1. 10. jar:?] {} 151at cpw. mods. cl. ModuleClassLoader. loadClass(ModuleClassLoader. java:135) ~[securejarhandler-2. 1. 10. jar:?] {} 152at java. lang. ClassLoader. loadClass(ClassLoader. java:525) ~[?:?] {} 153at net. minecraft. world. level. biome. FixedBiomeSource. (FixedBiomeSource. java:17) ~[server-1. 20. 1-20230612. 114412-srg. jar%23247!/:?] {re:classloading} 154at net. minecraft. world. level. biome. BiomeSources. m_220586_(BiomeSources. java:8) ~[server-1. 20. 1-20230612. 114412-srg. jar%23247!/:?] {re:classloading} 155at net. minecraft. core. registries. BuiltInRegistries. m_258029_(BuiltInRegistries. java:448) ~[server-1. 20. 1-20230612. 114412-srg. jar%23247!/:?] {re:classloading, re:mixin} 156at net. minecraft. core. registries. BuiltInRegistries. m_258037_(BuiltInRegistries. java:462) ~[server-1. 20. 1-20230612. 114412-srg. jar%23247!/:?] {re:classloading, re:mixin} 157at java. util. LinkedHashMap. forEach(LinkedHashMap. java:721) ~[?:?] {} 158at net. minecraft. core. registries. BuiltInRegistries. m_257453_(BuiltInRegistries. java:461) ~[server-1. 20. 1-20230612. 114412-srg. jar%23247!/:?] {re:classloading, re:mixin} 159at net. minecraft. core. registries. BuiltInRegistries. m_257498_(BuiltInRegistries. java:455) ~[server-1. 20. 1-20230612. 114412-srg. jar%23247!/:?] {re:classloading, re:mixin} 160at net. minecraft. server. Bootstrap. m_135870_(BootstrapMixin. java:55) ~[server-1. 20. 1-20230612. 114412-srg. jar%23247!/:?] {re:mixin, re:classloading, pl:mixin:APP:mixins. arclight. core. json:server. BootstrapMixin, pl:mixin:A} 161at net. minecraft. server. Main. main(Main. java:121) ~[server-1. 20. 1-20230612. 114412-srg. jar%23247!/:?] {re:mixin, pl:accesstransformer:B, re:classloading, pl:accesstransformer:B, pl:mixin:A} 162at jdk. internal. reflect. NativeMethodAccessorImpl. invoke0(Native Method) ~[?:?] {} 163at jdk. internal. reflect. NativeMethodAccessorImpl. invoke(NativeMethodAccessorImpl. java:77) ~[?:?] {} 164at jdk. internal. reflect. DelegatingMethodAccessorImpl. invoke(DelegatingMethodAccessorImpl. java:43) ~[?:?] {} 165at java. lang. reflect. Method. invoke(Method. java:569) ~[?:?] {} 166at net. minecraftforge. fml. loading. targets. CommonLaunchHandler. runTarget(CommonLaunchHandler. java:111) ~[fmlloader-1. 20. 1-47. 3. 22. jar%23103!/:?] {} 167at net. minecraftforge. fml. loading. targets. CommonLaunchHandler. serverService(CommonLaunchHandler. java:103) ~[fmlloader-1. 20. 1-47. 3. 22. jar%23103!/:?] {} 168at net. minecraftforge. fml. loading. targets. CommonServerLaunchHandler. lambda$makeService$0(CommonServerLaunchHandler. java:27) ~[fmlloader-1. 20. 1-47. 3. 22. jar%23103!/:?] {} 169at cpw. mods. modlauncher. LaunchServiceHandlerDecorator. launch(LaunchServiceHandlerDecorator. java:30) ~[modlauncher-10. 0. 9. jar%2389!/:?] {} 170at cpw. mods. modlauncher. LaunchServiceHandler. launch(LaunchServiceHandler. java:53) ~[modlauncher-10. 0. 9. jar%2389!/:?] {} 171at cpw. mods. modlauncher. LaunchServiceHandler. launch(LaunchServiceHandler. java:71) ~[modlauncher-10. 0. 9. jar%2389!/:?] {} 172at cpw. mods. modlauncher. Launcher. run(Launcher. java:108) ~[modlauncher-10. 0. 9. jar%2389!/:?] {} 173at cpw. mods. modlauncher. Launcher. main(Launcher. java:78) ~[modlauncher-10. 0. 9. jar%2389!/:?] {} 174at cpw. mods. modlauncher. BootstrapLaunchConsumer. accept(BootstrapLaunchConsumer. java:26) ~[modlauncher-10. 0. 9. jar%2389!/:?] {} 175at cpw. mods. modlauncher. BootstrapLaunchConsumer. accept(BootstrapLaunchConsumer. java:23) ~[modlauncher-10. 0. 9. jar%2389!/:?] {} 176at io. izzel. arclight. boot. application. ApplicationBootstrap. accept(ApplicationBootstrap. java:46) ~[arclight. jar:arclight-1. 20. 1-1. 0. 6-SNAPSHOT-c1e6367] {} 177at jdk. internal. reflect. NativeMethodAccessorImpl. invoke0(Native Method) ~[?:?] {} 178at jdk. internal. reflect. NativeMethodAccessorImpl. invoke(NativeMethodAccessorImpl. java:77) ~[?:?] {} 179at jdk. internal. reflect. DelegatingMethodAccessorImpl. invoke(DelegatingMethodAccessorImpl. java:43) ~[?:?] {} 180at java. lang. reflect. Method. invoke(Method. java:569) ~[?:?] {} 181at io. izzel. arclight. boot. application. BootstrapTransformer. onInvoke$BootstrapLauncher(BootstrapTransformer. java:26) ~[arclight. jar:arclight-1. 20. 1-1. 0. 6-SNAPSHOT-c1e6367] {} 182at cpw. mods. bootstraplauncher. BootstrapLauncher. main(BootstrapLauncher. java:141) ~[bootstraplauncher-1. 1. 2. jar:?] {} 183at jdk. internal. reflect. NativeMethodAccessorImpl. invoke0(Native Method) ~[?:?] {} 184at jdk. internal. reflect. NativeMethodAccessorImpl. invoke(NativeMethodAccessorImpl. java:77) ~[?:?] {} 185at jdk. internal. reflect. DelegatingMethodAccessorImpl. invoke(DelegatingMethodAccessorImpl. java:43) ~[?:?] {} 186at java. lang. reflect. Method. invoke(Method. java:569) ~[?:?] {} 187at io. izzel. arclight. boot. application. Main_Forge. main(Main_Forge. java:33) ~[arclight. jar%2383!/:arclight-1. 20. 1-1. 0. 6-SNAPSHOT-c1e6367] {} 188at io. izzel. arclight. server. Launcher. main(Launcher. java:18) ~[arclight. jar%2383!/:arclight-1. 20. 1-1. 0. 6-SNAPSHOT-c1e6367] {}
    • Welp, It doesn't crash but for some reason I broke pickaxes. They just wont work. The game behaves as if my hand was empty. Wtf is going on
    • Oh yeah, dammit. There's the duplicate mod. It works now
  • Topics

×
×
  • Create New...

Important Information

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