Jump to content

[1.11.2][Solved] No TE special renderer for tessellating


nexusrightsi

Recommended Posts

So, I've decided to finally update my mod to 1.11.2 from 1.7.10. It wasn't really my choice entirely but still this gave me the opportunity to clean up my code/project. Here is the actual question:

in my 1.7.10 project I had a working compost bin that had a tileentity assigned to it just for the custom renderer now the actual part that is in question as to if it is possible to recreate without having to assign it a TE is the actual compost layer that would not be present if the bin is empty but slightly gets raised depending on the fullness of the bin. I got a working TE renderer for this in 1.7.10 but since you don't need a TE anymore for custom models in 1.11.2 I was wondering if it was possible to just use the metadata of the block to calculate the position of the compost layer with and where the rendering of the compost layer would take place? (the compost layer was just a single sided tessellated UV texture)

Edited by nexusrightsi
Link to comment
Share on other sites

If the data your TE is storing can fit within 4 bits, then absolutely you can compress that into metadata.

You'll be having to create a BlockState for it anyway.

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.

Link to comment
Share on other sites

18 minutes ago, Draco18s said:

If the data your TE is storing can fit within 4 bits, then absolutely you can compress that into metadata.

You'll be having to create a BlockState for it anyway.

Thank you for the fast reply, is there any documentation on this because I'm still quite left in the blue as how block states work?

Link to comment
Share on other sites

3 minutes ago, nexusrightsi said:

Thank you for the fast reply, is there any documentation on this because I'm still quite left in the blue as how block states work?

 

Forge's documentation has an introduction to block states here.

Please don't PM me to ask for help. Asking your question in a public thread preserves it for people who are having the same problem in the future.

Link to comment
Share on other sites

Alright, so I roughly get the jest as to what blockstates are applicable to. How would I go about the rendering part in this case? I want to avoid the usage of TE's as much as possible and since I can check the amount of content in the bin with metadata I don't really need a TE other then for the rendering part as far as I am aware right now.

Link to comment
Share on other sites

You make custom JSON files that act as models. Look at the vanilla Cauldron.json it would be the most similar to your case.

VANILLA MINECRAFT CLASSES ARE THE BEST RESOURCES WHEN MODDING

I will be posting 1.15.2 modding tutorials on this channel. If you want to be notified of it do the normal YouTube stuff like subscribing, ect.

Forge and vanilla BlockState generator.

Link to comment
Share on other sites

20 minutes ago, nexusrightsi said:

Okay so I've found the cauldron blockstate and models, it appears that there are 4 different models for each of the heights of the water. the thing is I can't read them since Eclipse isn't allowing me to open them in any viewer/editor, so I can't really tell whats going on inside either of them.

 

Open them in a text editor or download and install a plugin for JSON files from the eclipse marketplace. I recommend the second option cause it gives syntax errors.

VANILLA MINECRAFT CLASSES ARE THE BEST RESOURCES WHEN MODDING

I will be posting 1.15.2 modding tutorials on this channel. If you want to be notified of it do the normal YouTube stuff like subscribing, ect.

Forge and vanilla BlockState generator.

Link to comment
Share on other sites

Alright, so I mostly succeeded into doing what I originally intended to do although I still need this "if the compost finished breaking down" sort of status so people can actually use buckets on them to retrieve a filled bucket. I figured that I might as well use a PropertyBool for this however I have no clue on how to edit the blockstate json so it gets the correct model. Also, if I say decrease the level metadata(see the cauldron for example of what I mean) does it also just automatically carry over the previous bool or will I have to set it manually each time I decrease or increase the level metadata?

 

 

EDIT: Nevermind, I'm such an idiot for actually not paying attention as to what the top of the block reads. It was a pretty obvious solution on what to change to the BlockState json file for it to work. Thank you all for the help but this is solved ^^

Edited by nexusrightsi
Link to comment
Share on other sites

When you set the BlockState you will use IBlockAccess#setBlockState(BlockPos, IBlockState). To get the IBlockState you will do Block#getDefaultState() which you will set to something in your constructor, but if you want to use a different value than the default you do Block#getDefaultState().withProperty(IProperty, value). The IProperty must be the same instance you used for setting the Default and the BlockStateContainer, if you do not change the value with a IBlockState.withProperty then it will stay at it's default value. It will decrease if you manually change it in the state, and not change the state though this will only happen on the side you change it on so it is better to do it in the way described above also know as changing the state. I recommend a Forge BlockState JSON for this; read about it here.

VANILLA MINECRAFT CLASSES ARE THE BEST RESOURCES WHEN MODDING

I will be posting 1.15.2 modding tutorials on this channel. If you want to be notified of it do the normal YouTube stuff like subscribing, ect.

Forge and vanilla BlockState generator.

Link to comment
Share on other sites

1 hour ago, Animefan8888 said:

When you set the BlockState you will use IBlockAccess#setBlockState(BlockPos, IBlockState). To get the IBlockState you will do Block#getDefaultState() which you will set to something in your constructor, but if you want to use a different value than the default you do Block#getDefaultState().withProperty(IProperty, value). The IProperty must be the same instance you used for setting the Default and the BlockStateContainer, if you do not change the value with a IBlockState.withProperty then it will stay at it's default value. It will decrease if you manually change it in the state, and not change the state though this will only happen on the side you change it on so it is better to do it in the way described above also know as changing the state. I recommend a Forge BlockState JSON for this; read about it here.

Thank you for explaining it once again, although I already figured this out and edited my original reply. The only thing I seem to be having an issue with is that the boolean won't switch back to false unless you exit to the main menu and log back into the world. When I set the boolean to true it just works fine without having to re-enter the world weirdly enough...

 

This is my adaption to the method in the cauldron block class which gets called every time you either use an empty bucket or a full bucket on it(works fine)

public void setCompostLevel(World world, BlockPos pos, IBlockState state, int level)
    {
        int i = ((Integer)state.getValue(LEVEL)).intValue();
        boolean isReady = ((Boolean)state.getValue(READY).booleanValue());
        if(i == 0 && isReady)
        {
            world.setBlockState(pos, state.withProperty(READY, Boolean.valueOf(false))); //I even tried to set the BlockState back to the default since its pretty much just a reset of the block.
            world.updateComparatorOutputLevel(pos, this);
        }
        else
        {
            world.setBlockState(pos, state.withProperty(LEVEL, Integer.valueOf(MathHelper.clamp(level, -1, 10))), 2);
            world.updateComparatorOutputLevel(pos, this);
        }
    }

 

the setCompostLevel method doesn't change the boolean back to false until you re-enter the world while on the other hand this method does instantly change the boolean to true

	@Override
    public void updateTick(World world, BlockPos pos, IBlockState state, Random rand)
    {
        int i = ((Integer)state.getValue(LEVEL)).intValue();
        boolean isReady = ((Boolean)state.getValue(READY).booleanValue());
        if (!isReady && i == 10 && !world.isRemote)
        {
            int l;
	            for (l = 0; pos.equals(this); ++l)
            {
                ;
            }
	            if (l < 2)
            {
                world.setBlockState(pos, state.withProperty(READY, Boolean.valueOf(true)));
                world.updateComparatorOutputLevel(pos, this);
            }
        }
    }

Link to comment
Share on other sites

34 minutes ago, Choonster said:

Have you overridden Block#getStateFromMeta and Block#getMetaFromState to convert both properties to metadata and back?

to answer your question:

 

	@Override
    public IBlockState getStateFromMeta(int meta)
    {
        return this.getDefaultState().withProperty(LEVEL, Integer.valueOf(meta));
    }
	    /**
     * Convert the BlockState into the correct metadata value
     */
    @Override
    public int getMetaFromState(IBlockState state)
    {
        return ((Integer)state.getValue(LEVEL)).intValue();
    }

Link to comment
Share on other sites

10 minutes ago, Animefan8888 said:

You never save your boolean value.

I noticed after Choonster mentioning the methods, although I tried to google for examples on multiple state properties. All that I could find was that I had to convert them to bytes instead which beats me, I have no clue whatsoever when it comes to bytes.

Link to comment
Share on other sites

50 minutes ago, nexusrightsi said:

I noticed after Choonster mentioning the methods, although I tried to google for examples on multiple state properties. All that I could find was that I had to convert them to bytes instead which beats me, I have no clue whatsoever when it comes to bytes.

 

To store multiple values in a single integer, you need to use bitwise operations. There are a lot of resources available that explain these, in addition to the vanilla code that uses them.

 

I just realised that your integer property appears to have 11 values, which means that you can't store both it and the boolean property in the metadata. Metadata is limited to 4 bits (2^4 [16] potential values), but the highest value of the integer property (10) already occupies all 4 bits.

 

You'll need to store one of the values in a TileEntity instead of the metadata. If you still need it to determine the block's model, you can keep the property and set it from the TileEntity's value in Block#getActualState instead of storing it in the metadata.

 

You'll also need to override TileEntity#getUpdateTag and TileEntity#getUpdatePacket to sync this value to the client. Override TileEntity#onDataPacket to read the NBT data from the packet and call World#notifyBlockUpdate to redraw the chunk containing the block (so it draws the model for the new value).

 

Call World#notifyBlockUpdate whenever this value changes to send the update packet to the client.

 

You can see some examples of this here:

These blocks store their colour in the metadata and their facing(s) in the TileEntity.

Please don't PM me to ask for help. Asking your question in a public thread preserves it for people who are having the same problem in the future.

Link to comment
Share on other sites

6 minutes ago, Choonster said:

 

To store multiple values in a single integer, you need to use bitwise operations. There are a lot of resources available that explain these, in addition to the vanilla code that uses them.

 

I just realised that your integer property appears to have 11 values, which means that you can't store both it and the boolean property in the metadata. Metadata is limited to 4 bits (2^4 [16] potential values), but the highest value of the integer property (10) already occupies all 4 bits.

 

You'll need to store one of the values in a TileEntity instead of the metadata. If you still need it to determine the block's model, you can keep the property and set it from the TileEntity's value in Block#getActualState instead of storing it in the metadata.

 

You'll also need to override TileEntity#getUpdateTag and TileEntity#getUpdatePacket to sync this value to the client. Override TileEntity#onDataPacket to read the NBT data from the packet and call World#notifyBlockUpdate to redraw the chunk containing the block (so it draws the model for the new value).

 

Call World#notifyBlockUpdate whenever this value changes to send the update packet to the client.

 

You can see some examples of this here:

These blocks store their colour in the metadata and their facing(s) in the TileEntity.

I was actually trying to avoid using a TE as much as possible, it would have been so much easier for me If I could have used a TE instead but I don't want to for performance sake. How about I just half the integer propety to 5 to free up space for the boolean?

Link to comment
Share on other sites

Just now, nexusrightsi said:

I was actually trying to avoid using a TE as much as possible, it would have been so much easier for me If I could have used a TE instead but I don't want to for performance sake. How about I just half the integer propety to 5 to free up space for the boolean?

 

There should be a very minimal performance hit if you're using a non-ticking TileEntity to store a value for a baked model. Using a ticking TileEntity or a TESR would be more expensive.

 

Halving the integer property would allow you to store both values in the metadata.

Please don't PM me to ask for help. Asking your question in a public thread preserves it for people who are having the same problem in the future.

Link to comment
Share on other sites

40 minutes ago, Choonster said:

 

There should be a very minimal performance hit if you're using a non-ticking TileEntity to store a value for a baked model. Using a ticking TileEntity or a TESR would be more expensive.

 

Halving the integer property would allow you to store both values in the metadata.

Alright, so I halved the integer property and I actually found a thread where you were helping someone else. According to your explanation in the thread this should have worked, which it doesn't. The issue still remains(the boolean doesn't want to go back to false anymore.)

 

	/**
     * Convert the given metadata into a BlockState for this Block
     */
    @Override
    public IBlockState getStateFromMeta(int meta)
    {
        int level = meta & 7;
        boolean isReady = (meta &  != 0;
        
        return getDefaultState().withProperty(LEVEL, level).withProperty(READY, isReady);
    }
	    /**
     * Convert the BlockState into the correct metadata value
     */
    @Override
    public int getMetaFromState(IBlockState state)
    {
        int level = ((Integer) state.getValue(LEVEL)).intValue();
        int isReady = (boolean) state.getValue(READY) ? 1 : 0;
        return isReady << 3 | level;
    }
	    @Override
    protected BlockStateContainer createBlockState()
    {
        return new BlockStateContainer(this, new IProperty[] {LEVEL, READY});
    }
	

Link to comment
Share on other sites

4 hours ago, Choonster said:

That should work, I can't see any obvious errors.

 

Could you post your whole Block class and the FML log (logs/fml-client-latest.log)?

sure thing! here you go.

this is the block class:

http://pastebin.com/fu0JucJj

 

here is the FML latest client log:

http://pastebin.com/RkdbsXPh

Link to comment
Share on other sites

In setCompostLevel, you're only setting READY to false when the existing LEVEL value is 0; you should set it to false when the new LEVEL value is 0 instead. Make sure you still set the new LEVEL value, even when it's 0.
 

You're explicitly boxing, unboxing and casting the primitive values you pass to IBlockState#withProperty and receive from IBlockState#getValue; but there's no need to do this. Java will automatically box and unbox primitive values for you, there's no need to do it yourself. These methods are generic, so they will always use the IProperty's generic type argument as the parameter/return type without the need for casting.The only reason you see this in the vanilla code is because the compiler automatically generates it.

 

Why are you calling World#setBlockState with flags to prevent the comparator output updating and then updating the comparator output manually? Just use the overload without the flags parameter.

 

Why do you handle LEVEL >= 2 and LEVEL == 1 separately in onBlockActivated while doing exactly the same thing for both?

 

You can use ItemHandlerHelper.giveItemToPlayer to insert an item into a player's inventory and drop the remainder on the ground; this saves having to call InventoryPlayer#addItemStackToInventory and EntityPlayer#dropItem.

Please don't PM me to ask for help. Asking your question in a public thread preserves it for people who are having the same problem in the future.

Link to comment
Share on other sites

2 hours ago, Choonster said:

In setCompostLevel, you're only setting READY to false when the existing LEVEL value is 0; you should set it to false when the new LEVEL value is 0 instead. Make sure you still set the new LEVEL value, even when it's 0.
 

You're explicitly boxing, unboxing and casting the primitive values you pass to IBlockState#withProperty and receive from IBlockState#getValue; but there's no need to do this. Java will automatically box and unbox primitive values for you, there's no need to do it yourself. These methods are generic, so they will always use the IProperty's generic type argument as the parameter/return type without the need for casting.The only reason you see this in the vanilla code is because the compiler automatically generates it.

 

Why are you calling World#setBlockState with flags to prevent the comparator output updating and then updating the comparator output manually? Just use the overload without the flags parameter.

 

Why do you handle LEVEL >= 2 and LEVEL == 1 separately in onBlockActivated while doing exactly the same thing for both?

 

You can use ItemHandlerHelper.giveItemToPlayer to insert an item into a player's inventory and drop the remainder on the ground; this saves having to call InventoryPlayer#addItemStackToInventory and EntityPlayer#dropItem.

There, thank you for pointing out all these "issues" in my code. I fixed them right away and also noticed what is causing the block not to update properly.

in setCompostLevel I set both the int and boolean and only the last one gets actually update while the first propertie variable is being skipped, so for instance:

world.setBlockState(pos, state.withProperty(LEVEL, Integer.valueOf(MathHelper.clamp(0, 0, 5))));
            world.setBlockState(pos, state.withProperty(READY, false));

just the boolean gets updated, when I reverse that:

note how just the int gets updated now.

            world.setBlockState(pos, state.withProperty(READY, false));
	world.setBlockState(pos, state.withProperty(LEVEL, Integer.valueOf(MathHelper.clamp(0, 0, 5))));
Edited by nexusrightsi
Link to comment
Share on other sites

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 trying to play Minecraft 1.20.4 on Forge using mods, but when Minecraft loads, it says there are non-Forge mods, whereas they are Forge mods. This problem is happening in Forge version 1.20.4 - 49.0.46. I am only able to play with all mods in Forge version 1.20.4 - 49.0.43.
    • I had the same issue. The only thing I could do is to remove parchment mappings entirely from config files and replace config files from the MDK: 1. replace build.gradle from MDK 2. restore official mapping in build.properties 3. replace src\main\resources\META-INF\mods.toml from MDK sample.
    • ---- Minecraft Crash Report ---- I sent a error report i just cant understand it, the game as been running fine intill today i loaded it https://pastebin.com/gWVFh4Fe   WARNING: coremods are present:   ForgelinPlugin (Forgelin-1.8.3.jar)   PatchingFixRtmCorePlugin (fixRtm-2.0.28.jar)   IELoadingPlugin (ImmersiveEngineering-core-0.12-98.jar)   FixRtmCorePlugin (fixRtm-2.0.28.jar)   JarInJarLoaderCoreMod (fixRtm-2.0.28.jar)   BetterFoliageLoader (BetterFoliage-MC1.12-2.3.2.jar)   SecurityCraftLoadingPlugin ([1.12.2] SecurityCraft v1.9.9.jar)   OpenModsCorePlugin (OpenModsLib-1.12.2-0.12.2.jar)   MalisisCorePlugin (MalisisCore-1.12.2.jar)   ObfuscatePlugin (obfuscate-0.4.2-1.12.2.jar)   CTMCorePlugin (CTM-MC1.12.2-1.0.2.31.jar)   HookingFixRtmCorePlugin (fixRtm-2.0.28.jar) Contact their authors BEFORE contacting forge // Hey, that tickles! Hehehe! Time: 4/19/24 4:05 PM Description: Updating screen events java.lang.RuntimeException: Failed to check session lock, aborting     at net.minecraft.world.storage.SaveHandler.func_75766_h(SaveHandler.java:76)     at net.minecraft.world.storage.SaveHandler.<init>(SaveHandler.java:54)     at net.minecraft.world.chunk.storage.AnvilSaveHandler.<init>(AnvilSaveHandler.java:18)     at net.minecraft.world.chunk.storage.AnvilSaveConverter.func_75804_a(SourceFile:84)     at net.minecraft.client.Minecraft.func_71371_a(Minecraft.java:2346)     at net.minecraftforge.fml.client.FMLClientHandler.tryLoadExistingWorld(FMLClientHandler.java:734)     at net.minecraft.client.gui.GuiListWorldSelectionEntry.func_186777_e(GuiListWorldSelectionEntry.java:249)     at net.minecraft.client.gui.GuiListWorldSelectionEntry.func_186774_a(GuiListWorldSelectionEntry.java:199)     at net.minecraft.client.gui.GuiListWorldSelectionEntry.func_148278_a(GuiListWorldSelectionEntry.java:163)     at net.minecraft.client.gui.GuiListExtended.func_148179_a(SourceFile:41)     at net.minecraft.client.gui.GuiWorldSelection.func_73864_a(SourceFile:117)     at net.minecraft.client.gui.GuiScreen.func_146274_d(GuiScreen.java:533)     at net.minecraft.client.gui.GuiWorldSelection.func_146274_d(SourceFile:49)     at net.minecraft.client.gui.GuiScreen.func_146269_k(GuiScreen.java:501)     at net.minecraft.client.Minecraft.func_71407_l(Minecraft.java:1759)     at net.minecraft.client.Minecraft.func_71411_J(Minecraft.java:1098)     at net.minecraft.client.Minecraft.func_99999_d(Minecraft.java:398)     at net.minecraft.client.main.Main.main(SourceFile:123)     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)     at java.lang.reflect.Method.invoke(Method.java:497)     at net.minecraft.launchwrapper.Launch.launch(Launch.java:135)     at net.minecraft.launchwrapper.Launch.main(Launch.java:28) A detailed walkthrough of the error, its code path and all known details is as follows: --------------------------------------------------------------------------------------- -- Head -- Thread: Client thread Stacktrace:     at net.minecraft.world.storage.SaveHandler.func_75766_h(SaveHandler.java:76)     at net.minecraft.world.storage.SaveHandler.<init>(SaveHandler.java:54)     at net.minecraft.world.chunk.storage.AnvilSaveHandler.<init>(AnvilSaveHandler.java:18)     at net.minecraft.world.chunk.storage.AnvilSaveConverter.func_75804_a(SourceFile:84)     at net.minecraft.client.Minecraft.func_71371_a(Minecraft.java:2346)     at net.minecraftforge.fml.client.FMLClientHandler.tryLoadExistingWorld(FMLClientHandler.java:734)     at net.minecraft.client.gui.GuiListWorldSelectionEntry.func_186777_e(GuiListWorldSelectionEntry.java:249)     at net.minecraft.client.gui.GuiListWorldSelectionEntry.func_186774_a(GuiListWorldSelectionEntry.java:199)     at net.minecraft.client.gui.GuiListWorldSelectionEntry.func_148278_a(GuiListWorldSelectionEntry.java:163)     at net.minecraft.client.gui.GuiListExtended.func_148179_a(SourceFile:41)     at net.minecraft.client.gui.GuiWorldSelection.func_73864_a(SourceFile:117)     at net.minecraft.client.gui.GuiScreen.func_146274_d(GuiScreen.java:533)     at net.minecraft.client.gui.GuiWorldSelection.func_146274_d(SourceFile:49)     at net.minecraft.client.gui.GuiScreen.func_146269_k(GuiScreen.java:501) -- Affected screen -- Details:     Screen name: net.minecraft.client.gui.GuiWorldSelection Stacktrace:     at net.minecraft.client.Minecraft.func_71407_l(Minecraft.java:1759)     at net.minecraft.client.Minecraft.func_71411_J(Minecraft.java:1098)     at net.minecraft.client.Minecraft.func_99999_d(Minecraft.java:398)     at net.minecraft.client.main.Main.main(SourceFile:123)     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)     at java.lang.reflect.Method.invoke(Method.java:497)     at net.minecraft.launchwrapper.Launch.launch(Launch.java:135)     at net.minecraft.launchwrapper.Launch.main(Launch.java:28) -- System Details -- Details:     Minecraft Version: 1.12.2     Operating System: Windows 10 (amd64) version 10.0     Java Version: 1.8.0_51, Oracle Corporation     Java VM Version: Java HotSpot(TM) 64-Bit Server VM (mixed mode), Oracle Corporation     Memory: 5013709368 bytes (4781 MB) / 11274289152 bytes (10752 MB) up to 12884901888 bytes (12288 MB)     JVM Flags: 8 total; -XX:HeapDumpPath=MojangTricksIntelDriversForPerformance_javaw.exe_minecraft.exe.heapdump -Xmx12G -XX:+UnlockExperimentalVMOptions -XX:+UseG1GC -XX:G1NewSizePercent=20 -XX:G1ReservePercent=20 -XX:MaxGCPauseMillis=50 -XX:G1HeapRegionSize=32M     IntCache: cache: 0, tcache: 0, allocated: 0, tallocated: 0     FML: MCP 9.42 Powered by Forge 14.23.5.2859 Optifine OptiFine_1.12.2_HD_U_G5 99 mods loaded, 99 mods active     States: 'U' = Unloaded 'L' = Loaded 'C' = Constructed 'H' = Pre-initialized 'I' = Initialized 'J' = Post-initialized 'A' = Available 'D' = Disabled 'E' = Errored     | State  | ID                          | Version               | Source                                            | Signature                                |     |:------ |:--------------------------- |:--------------------- |:------------------------------------------------- |:---------------------------------------- |     | LCHIJA | minecraft                   | 1.12.2                | minecraft.jar                                     | None                                     |     | LCHIJA | mcp                         | 9.42                  | minecraft.jar                                     | None                                     |     | LCHIJA | FML                         | 8.0.99.99             | forge-1.12.2-14.23.5.2859.jar                     | e3c3d50c7c986df74c645c0ac54639741c90a557 |     | LCHIJA | forge                       | 14.23.5.2859          | forge-1.12.2-14.23.5.2859.jar                     | e3c3d50c7c986df74c645c0ac54639741c90a557 |     | LCHIJA | openmodscore                | 0.12.2                | minecraft.jar                                     | None                                     |     | LCHIJA | obfuscate                   | 0.4.2                 | minecraft.jar                                     | None                                     |     | LCHIJA | securitycraft               | v1.9.9                | [1.12.2] SecurityCraft v1.9.9.jar                 | None                                     |     | LCHIJA | mts                         | 22.14.2               | Immersive Vehicles-1.12.2-22.14.2.jar             | None                                     |     | LCHIJA | mtsaircooled                | 1.0.1                 | Air-Cooled Pack [MTS] 1.10.2-14.0.0-1.0.1.jar     | None                                     |     | LCHIJA | codechickenlib              | 3.2.3.358             | CodeChickenLib-1.12.2-3.2.3.358-universal.jar     | f1850c39b2516232a2108a7bd84d1cb5df93b261 |     | LCHIJA | ancientwarfare              | 1.12.2-2.7.0.1038     | ancientwarfare-1.12.2-2.7.0.1038.jar              | None                                     |     | LCHIJA | redstoneflux                | 2.1.1                 | RedstoneFlux-1.12-2.1.1.1-universal.jar           | None                                     |     | LCHIJA | ancientwarfareautomation    | 1.12.2-2.7.0.1038     | ancientwarfare-1.12.2-2.7.0.1038.jar              | None                                     |     | LCHIJA | ancientwarfarenpc           | 1.12.2-2.7.0.1038     | ancientwarfare-1.12.2-2.7.0.1038.jar              | None                                     |     | LCHIJA | ancientwarfarestructure     | 1.12.2-2.7.0.1038     | ancientwarfare-1.12.2-2.7.0.1038.jar              | None                                     |     | LCHIJA | ancientwarfarevehicle       | 1.12.2-2.7.0.1038     | ancientwarfare-1.12.2-2.7.0.1038.jar              | None                                     |     | LCHIJA | craftstudioapi              | 1.0.0                 | CraftStudio-1.0.0.93-mc1.12-alpha.jar             | None                                     |     | LCHIJA | animania                    | 2.0.3.28              | animania-1.12.2-base-2.0.3.28.jar                 | None                                     |     | LCHIJA | architecturecraft           | @VERSION@             | architecturecraft-1.12-3.108.jar                  | None                                     |     | LCHIJA | betteranimationscollection2 | 1.0.2                 | BetterAnimationsCollection2-v1.0.2-1.12.2.jar     | 12d137bcc36051a1c2c8ea7211cfc1da1c6e9dea |     | LCHIJA | forgelin                    | 1.8.3                 | Forgelin-1.8.3.jar                                | None                                     |     | LCHIJA | betterfoliage               | 2.3.1                 | BetterFoliage-MC1.12-2.3.2.jar                    | None                                     |     | LCHIJA | bibliocraft                 | 2.4.6                 | BiblioCraft[v2.4.6][MC1.12.2].jar                 | None                                     |     | LCHIJA | biomestaff                  | 1.0.0                 | BiomeStaff-1.12.2-1.0.0.jar                       | None                                     |     | LCHIJA | blockcraftery               | 1.12.2-1.3.1          | blockcraftery-1.12.2-1.3.1.jar                    | None                                     |     | LCHIJA | bookshelf                   | 2.3.590               | Bookshelf-1.12.2-2.3.590.jar                      | d476d1b22b218a10d845928d1665d45fce301b27 |     | LCHIJA | bookworm                    | 1.12.2-2.5.2.1        | Bookworm-Library-Mod-1.12.2.jar                   | None                                     |     | LCHIJA | brandonscore                | 2.4.20                | BrandonsCore-1.12.2-2.4.20.162-universal.jar      | None                                     |     | LCHIJA | bspkrscore                  | 8.0.0                 | BspkrsCore-1.12.2.jar                             | None                                     |     | LCHIJA | carpentersblocks            | 3.4.0-poc.6           | Carpenters-Blocks-v3.4.0-poc.6-MC-1.12.2.jar      | None                                     |     | LCHIJA | ctm                         | MC1.12.2-1.0.2.31     | CTM-MC1.12.2-1.0.2.31.jar                         | None                                     |     | LCHIJA | jei                         | 4.16.1.1012           | jei_1.12.2-4.16.1.1012.jar                        | None                                     |     | LCHIJA | chisel                      | MC1.12.2-1.0.2.45     | Chisel-Mod-1.12.2.jar                             | None                                     |     | LCHIJA | chiselsandbits              | 14.33                 | chiselsandbits-14.33.jar                          | None                                     |     | LCHIJA | customspawner               | 3.11.4                | CustomMobSpawner-3.11.5.jar                       | None                                     |     | LCHIJA | customsignposts             | 1.0                   | customsignposts-1.12.2-1.0.1.jar                  | None                                     |     | LCHIJA | ptrmodellib                 | 1.0.5                 | PTRLib-1.0.5.jar                                  | None                                     |     | LCHIJA | props                       | 2.6.3.7               | Decocraft-2.6.3.7_1.12.2.jar                      | None                                     |     | LCHIJA | mocreatures                 | 12.0.5                | DrZharks MoCreatures Mod-12.0.5.jar               | None                                     |     | LCHIJA | engineersdecor              | 1.1.5                 | engineersdecor-1.12.2-1.1.5.jar                   | ed58ed655893ced6280650866985abcae2bf7559 |     | LCHIJA | exoticbirds                 | 1.0                   | Exotic Birds 1.12.2-3.2.0.jar                     | None                                     |     | LCHIJA | unuparts                    | 6.5.0                 | UNU Parts Pack [MTS] 1.12.2-22.13.0-6.5.0.jar     | None                                     |     | LCHIJA | unuverse                    | 2.0.0                 | ExpandedUNUversePack[MTS]1.12.2-19.15.5-2.0.0.jar | None                                     |     | LCHIJA | fairylights                 | 2.1.10                | fairylights-2.2.0-1.12.2.jar                      | None                                     |     | LCHIJA | fcl                         | 1.12.82               | FCL-1.12.82c.jar                                  | None                                     |     | LCHIJA | net/fexcraft/lib/frl        | 1.2                   | FCL-1.12.82c.jar                                  | None                                     |     | LCHIJA | net/fexcraft/lib/tmt        | 1.15                  | FCL-1.12.82c.jar                                  | None                                     |     | LCHIJA | famm                        | 3.4.0                 | Fexs-Alphabet-and-More-Mod-Forge-1.12.2.jar       | None                                     |     | LCHIJA | forgemultipartcbe           | 2.6.2.83              | ForgeMultipart-1.12.2-2.6.2.83-universal.jar      | f1850c39b2516232a2108a7bd84d1cb5df93b261 |     | LCHIJA | microblockcbe               | 2.6.2.83              | ForgeMultipart-1.12.2-2.6.2.83-universal.jar      | None                                     |     | LCHIJA | minecraftmultipartcbe       | 2.6.2.83              | ForgeMultipart-1.12.2-2.6.2.83-universal.jar      | None                                     |     | LCHIJA | funkylocomotion             | 1.0                   | funky-locomotion-1.12.2-1.1.2.jar                 | None                                     |     | LCHIJA | furenikusroads              | 1.2.5                 | Furenikus_Roads-1.2.5.jar                         | None                                     |     | LCHIJA | cfm                         | 6.3.0                 | furniture-6.3.2-1.12.2.jar                        | None                                     |     | LCHIJA | waila                       | 1.8.22                | Hwyla-1.8.22-B37_1.12.jar                         | None                                     |     | LCHIJA | trackapi                    | 1.2                   | TrackAPI-1.2.jar                                  | None                                     |     | LCHIJA | universalmodcore            | 1.2.1                 | UniversalModCore-1.12.2-forge-1.2.1.jar           | None                                     |     | LCHIJA | immersiverailroading        | 1.10.0                | ImmersiveRailroading-1.12.2-forge-1.10.0.jar      | None                                     |     | LCHIJA | journeymap                  | 1.12.2-5.7.1p2        | journeymap-1.12.2-5.7.1p2.jar                     | None                                     |     | LCHIJA | zawa                        | 1.12.2-2.1.3          | zawa-1.12.2-2.1.3.jar                             | 3ee471ded1bba54aa82f4f5ca5ca82dd67b8ef42 |     | LCHIJA | lilcritters                 | 1.12.2-1.1.0.0        | Lil-Critters-Mod-Forge-1.12.2.jar                 | None                                     |     | LCHIJA | malisiscore                 | 1.12.2-6.5.1-SNAPSHOT | MalisisCore-1.12.2.jar                            | None                                     |     | LCHIJA | malisisdoors                | 1.12.2-7.3.0          | MalisisDoors-Mod-1.12.2.jar                       | None                                     |     | LCHIJA | mcwbridges                  | 1.0.6                 | mcw-bridges-1.0.6b-mc1.12.2.jar                   | None                                     |     | LCHIJA | mcwfences                   | 1.0.0                 | mcw-fences-1.0.0-mc1.12.2.jar                     | None                                     |     | LCHIJA | mcwroofs                    | 1.0.2                 | mcw-roofs-1.0.2-mc1.12.2.jar                      | None                                     |     | LCHIJA | moon-core                   | 7.0                   | Moons-Core-Forge-1.12.2.jar                       | None                                     |     | LCHIJA | mrtjpcore                   | 2.1.4.43              | MrTJPCore-1.12.2-2.1.4.43-universal.jar           | None                                     |     | LCHIJA | railcraft                   | 12.0.0                | railcraft-12.0.0.jar                              | a0c255ac501b2749537d5824bb0f0588bf0320fa |     | LCHIJA | mtr                         | 3.0.0                 | MTR-1.12.2-alpha-test-0.0.1.jar                   | None                                     |     | LCHIJA | kadwinjpvehicles            | 2.0.0                 | MTS_Kadwin_JP_Vehicles_Pack_4.1.jar               | None                                     |     | LCHIJA | ngtlib                      | 2.4.21                | NGTLib2.4.21-38_forge-1.12.2-14.23.2.2611.jar     | None                                     |     | LCHIJA | projectintelligence         | 1.0.9                 | ProjectIntelligence-1.12.2-1.0.9.28-universal.jar | None                                     |     | LCHIJA | nei                         | 2.4.3                 | NotEnoughItems-1.12.2-2.4.3.245-universal.jar     | f1850c39b2516232a2108a7bd84d1cb5df93b261 |     | LCHIJA | oe                          | 1.0.7                 | OceanicExpanse-1.0.7.jar                          | None                                     |     | LCHIJA | openmods                    | 0.12.2                | OpenModsLib-1.12.2-0.12.2.jar                     | d2a9a8e8440196e26a268d1f3ddc01b2e9c572a5 |     | LCHIJA | openblocks                  | 1.8.1                 | OpenBlocks-1.12.2-1.8.1.jar                       | d2a9a8e8440196e26a268d1f3ddc01b2e9c572a5 |     | LCHIJA | placeableitems              | 3.3                   | placeableitems-3.3.jar                            | None                                     |     | LCHIJA | projectred-core             | 4.9.4.120             | ProjectRed-1.12.2-4.9.4.120-Base.jar              | None                                     |     | LCHIJA | projectred-integration      | 4.9.4.120             | ProjectRed-1.12.2-4.9.4.120-integration.jar       | None                                     |     | LCHIJA | projectred-transmission     | 4.9.4.120             | ProjectRed-1.12.2-4.9.4.120-integration.jar       | None                                     |     | LCHIJA | projectred-illumination     | 4.9.4.120             | ProjectRed-1.12.2-4.9.4.120-lighting.jar          | None                                     |     | LCHIJA | projectred-expansion        | 4.9.4.120             | ProjectRed-1.12.2-4.9.4.120-mechanical.jar        | None                                     |     | LCHIJA | projectred-relocation       | 4.9.4.120             | ProjectRed-1.12.2-4.9.4.120-mechanical.jar        | None                                     |     | LCHIJA | projectred-transportation   | 4.9.4.120             | ProjectRed-1.12.2-4.9.4.120-mechanical.jar        | None                                     |     | LCHIJA | rtm                         | 2.4.24                | RTM2.4.24-43_forge-1.12.2-14.23.2.2611.jar        | None                                     |     | LCHIJA | trafficcontrol              | 1.1.1                 | trafficcontrol-1.1.1.jar                          | None                                     |     | LCHIJA | travelersbackpack           | 1.0.35                | TravelersBackpack-1.12.2-1.0.35.jar               | None                                     |     | LCHIJA | iv_tpp                      | 2.22.0                | Trin Parts Pack-1.12.2-2.23.1.jar                 | None                                     |     | LCHIJA | unucivil                    | 6.3.0                 | UNU Civilian Pack [MTS] 1.12.2-22.13.0-6.3.0.jar  | None                                     |     | LCHIJA | vehicle                     | 0.44.1                | vehicle-mod-0.44.1-1.12.2.jar                     | None                                     |     | LCHIJA | wawla                       | 2.6.275               | Wawla-1.12.2-2.6.275.jar                          | d476d1b22b218a10d845928d1665d45fce301b27 |     | LCHIJA | worldedit                   | 6.1.10                | worldedit-forge-mc1.12.2-6.1.10-dist.jar          | None                                     |     | LCHIJA | worldstatecheckpoints       | 1.12.2.1.2.1          | WorldStateCheckpoints-client-1.12.2.1.2.1.jar     | None                                     |     | LCHIJA | wrcbe                       | 2.3.2                 | WR-CBE-1.12.2-2.3.2.33-universal.jar              | f1850c39b2516232a2108a7bd84d1cb5df93b261 |     | LCHIJA | zoocraftdiscoveries         | 1.0                   | Zoocraft+Discoveries+1.12.2-1.3.0.jar             | None                                     |     | LCHIJA | immersiveengineering        | 0.12-98               | ImmersiveEngineering-0.12-98.jar                  | None                                     |     | LCHIJA | fix-rtm                     | 2.0.28                | fixRtm-2.0.28.jar                                 | None                                     |     | LCHIJA | mysticallib                 | 1.12.2-1.13.0         | mysticallib-1.12.2-1.13.0.jar                     | None                                     |     Loaded coremods (and transformers): ForgelinPlugin (Forgelin-1.8.3.jar)   PatchingFixRtmCorePlugin (fixRtm-2.0.28.jar)   com.anatawa12.fixRtm.asm.patching.PatchApplier IELoadingPlugin (ImmersiveEngineering-core-0.12-98.jar)   blusunrize.immersiveengineering.common.asm.IEClassTransformer FixRtmCorePlugin (fixRtm-2.0.28.jar)   JarInJarLoaderCoreMod (fixRtm-2.0.28.jar)   com.anatawa12.fixRtm.jarInJar.JarInJarPatcher BetterFoliageLoader (BetterFoliage-MC1.12-2.3.2.jar)   mods.betterfoliage.loader.BetterFoliageTransformer SecurityCraftLoadingPlugin ([1.12.2] SecurityCraft v1.9.9.jar)   OpenModsCorePlugin (OpenModsLib-1.12.2-0.12.2.jar)   openmods.core.OpenModsClassTransformer MalisisCorePlugin (MalisisCore-1.12.2.jar)   ObfuscatePlugin (obfuscate-0.4.2-1.12.2.jar)   com.mrcrayfish.obfuscate.asm.ObfuscateTransformer CTMCorePlugin (CTM-MC1.12.2-1.0.2.31.jar)   team.chisel.ctm.client.asm.CTMTransformer HookingFixRtmCorePlugin (fixRtm-2.0.28.jar)   com.anatawa12.fixRtm.asm.hooking.HookingTransformer     GL info: ' Vendor: 'NVIDIA Corporation' Version: '4.6.0 NVIDIA 551.86' Renderer: 'NVIDIA GeForce RTX 3070/PCIe/SSE2'     OpenModsLib class transformers: [llama_null_fix:FINISHED],[horse_base_null_fix:FINISHED],[pre_world_render_hook:FINISHED],[player_render_hook:FINISHED],[horse_null_fix:FINISHED]     RTM Model Status: Initialized 1048 models, Using 0 models     I = Initialized, C = Constructed, SMP = SMP includeds     | model pack                                      | all | I | C   | SMP |     |:----------------------------------------------- |:--- |:- |:--- |:--- |     | mods\ModelPack_Nak_5_Structure_240313.zip       | 458 | 0 | 458 | 0   |     | mods\RTM2.4.24-43_forge-1.12.2-14.23.2.2611.jar | 281 | 0 | 281 | 0   |     | mods\rtm_Saracalias Pack v0.2.01.zip            | 309 | 0 | 309 | 0   |     Launched Version: 1.12.2-forge-14.23.5.2859     LWJGL: 2.9.4     OpenGL: NVIDIA GeForce RTX 3070/PCIe/SSE2 GL version 4.6.0 NVIDIA 551.86, NVIDIA Corporation     GL Caps: Using GL 1.3 multitexturing. Using GL 1.3 texture combiners. Using framebuffer objects because OpenGL 3.0 is supported and separate blending is supported. Shaders are available because OpenGL 2.1 is supported. VBOs are available because OpenGL 1.5 is supported.     Using VBOs: Yes     Is Modded: Definitely; Client brand changed to 'fml,forge'     Type: Client (map_client.txt)     Resource Packs: NickMiner69V2.zip, MPT-4.zip, feldbahnpackv1-3.zip, G_P_Narrow_Gauge_Texel_Pack_V1.0.3.zip     Current Language: English (US)     Profiler Position: N/A (disabled)     CPU: 8x Intel(R) Core(TM) i7-6700K CPU @ 4.00GHz     OptiFine Version: OptiFine_1.12.2_HD_U_G5     OptiFine Build: 20210124-142939     Render Distance Chunks: 12     Mipmaps: 4     Anisotropic Filtering: 1     Antialiasing: 0     Multitexture: false     Shaders: null     OpenGlVersion: 4.6.0 NVIDIA 551.86     OpenGlRenderer: NVIDIA GeForce RTX 3070/PCIe/SSE2     OpenGlVendor: NVIDIA Corporation     CpuCount: 8
    • i notice a change if i add the min and max ram in the line like this for example:    # Xmx and Xms set the maximum and minimum RAM usage, respectively. # They can take any number, followed by an M or a G. # M means Megabyte, G means Gigabyte. # For example, to set the maximum to 3GB: -Xmx3G # To set the minimum to 2.5GB: -Xms2500M # A good default for a modded server is 4GB. # Uncomment the next line to set it. -Xmx10240M -Xms8192M    i need to make more experiments but for now this apparently works.
    • This honestly might just work for you @SubscribeEvent public static void onScreenRender(ScreenEvent.Render.Post event) { final var player = Minecraft.getInstance().player; final var options = Minecraft.getInstance().options; if(!hasMyEffect(player)) return; // TODO: You provide hasMyEffect float f = Mth.lerp(event.getPartialTick(), player.oSpinningEffectIntensity, player.spinningEffectIntensity); float f1 = ((Double)options.screenEffectScale().get()).floatValue(); if(f <= 0F || f1 >= 1F) return; float p_282656_ = f * (1.0F - f1); final var p_282460_ = event.getGuiGraphics(); int i = p_282460_.guiWidth(); int j = p_282460_.guiHeight(); p_282460_.pose().pushPose(); float f5 = Mth.lerp(p_282656_, 2.0F, 1.0F); p_282460_.pose().translate((float)i / 2.0F, (float)j / 2.0F, 0.0F); p_282460_.pose().scale(f5, f5, f5); p_282460_.pose().translate((float)(-i) / 2.0F, (float)(-j) / 2.0F, 0.0F); float f4 = 0.2F * p_282656_; float f2 = 0.4F * p_282656_; float f3 = 0.2F * p_282656_; RenderSystem.disableDepthTest(); RenderSystem.depthMask(false); RenderSystem.enableBlend(); RenderSystem.blendFuncSeparate(GlStateManager.SourceFactor.ONE, GlStateManager.DestFactor.ONE, GlStateManager.SourceFactor.ONE, GlStateManager.DestFactor.ONE); p_282460_.setColor(f4, f2, f3, 1.0F); p_282460_.blit(new ResourceLocation("textures/misc/nausea.png"), 0, 0, -90, 0.0F, 0.0F, i, j, i, j); p_282460_.setColor(1.0F, 1.0F, 1.0F, 1.0F); RenderSystem.defaultBlendFunc(); RenderSystem.disableBlend(); RenderSystem.depthMask(true); RenderSystem.enableDepthTest(); p_282460_.pose().popPose(); }   Note: Most of this is directly copied from GameRenderer as you pointed out you found. The only thing you'll have to likely do is update the `oSpinningEffectIntensity` + `spinningEffectIntensity` variables on the player when your effect is applied. Which values should be there? Not 100% sure, might be a game of guess and check, but `handleNetherPortalClient` in LocalPlayer has some hard coded you might be able to start with.
  • Topics

×
×
  • Create New...

Important Information

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