Jump to content

Recommended Posts

Posted (edited)

I'm having a lot of trouble getting renders to work, specifically with custom TNT. In it's current state, when I ignite a custom TNT block, creating an "EntityTNTLargePrimed", it becomes invisible.

 

Here is how I am registering my render in my preInit():

RenderingRegistry.registerEntityRenderingHandler(EntityTNTLargePrimed.class, new RenderTNTLargePrimed(Minecraft.getMinecraft().getRenderManager()));
        System.out.println("Registered RenderTNTLargePrimed from preint function");

I don't get any render related errors in the console and that system print statement correctly outputs to the console.

 

In my "RenderTNTLargePrimed" class, it's basically a copy and paste of "RenderTNTPrimed" from the base game.

package com.xeraster.supertnt.renders;

import com.xeraster.supertnt.SuperTNTMod;
import com.xeraster.supertnt.primedtnt.EntityTNTLargePrimed;

import net.minecraft.client.Minecraft;
import net.minecraft.client.renderer.BlockRendererDispatcher;
import net.minecraft.client.renderer.GlStateManager;
import net.minecraft.client.renderer.entity.Render;
import net.minecraft.client.renderer.entity.RenderManager;
import net.minecraft.client.renderer.texture.TextureMap;
import net.minecraft.entity.item.EntityTNTPrimed;
import net.minecraft.init.Blocks;
import net.minecraft.util.ResourceLocation;
import net.minecraft.util.math.MathHelper;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;

@SideOnly(Side.CLIENT)
public class RenderTNTLargePrimed extends Render<EntityTNTLargePrimed>
{
    public RenderTNTLargePrimed(RenderManager renderManagerIn)
    {
        super(renderManagerIn);
        this.shadowSize = 0.5F;
    }

    /**
     * Renders the desired {@code T} type Entity.
     */
    public void doRender(EntityTNTLargePrimed entity, double x, double y, double z, float entityYaw, float partialTicks)
    {
        BlockRendererDispatcher blockrendererdispatcher = Minecraft.getMinecraft().getBlockRendererDispatcher();
        GlStateManager.pushMatrix();
        GlStateManager.translate((float)x, (float)y + 0.5F, (float)z);

        if ((float)entity.getFuse() - partialTicks + 1.0F < 10.0F)
        {
            float f = 1.0F - ((float)entity.getFuse() - partialTicks + 1.0F) / 10.0F;
            f = MathHelper.clamp(f, 0.0F, 1.0F);
            f = f * f;
            f = f * f;
            float f1 = 1.0F + f * 0.3F;
            GlStateManager.scale(f1, f1, f1);
        }

        float f2 = (1.0F - ((float)entity.getFuse() - partialTicks + 1.0F) / 100.0F) * 0.8F;
        bindEntityTexture(entity);
        GlStateManager.rotate(-90.0F, 0.0F, 1.0F, 0.0F);
        GlStateManager.translate(-0.5F, -0.5F, 0.5F);
        blockrendererdispatcher.renderBlockBrightness(SuperTNTMod.LARGE_TNT.getDefaultState(), entity.getBrightness());
        GlStateManager.translate(0.0F, 0.0F, 1.0F);

        if (this.renderOutlines)
        {
            GlStateManager.enableColorMaterial();
            GlStateManager.enableOutlineMode(this.getTeamColor(entity));
            blockrendererdispatcher.renderBlockBrightness(SuperTNTMod.LARGE_TNT.getDefaultState(), 1.0F);
            GlStateManager.disableOutlineMode();
            GlStateManager.disableColorMaterial();
        }
        else if (entity.getFuse() / 5 % 2 == 0)
        {
            GlStateManager.disableTexture2D();
            GlStateManager.disableLighting();
            GlStateManager.enableBlend();
            GlStateManager.blendFunc(GlStateManager.SourceFactor.SRC_ALPHA, GlStateManager.DestFactor.DST_ALPHA);
            GlStateManager.color(1.0F, 1.0F, 1.0F, f2);
            GlStateManager.doPolygonOffset(-3.0F, -3.0F);
            GlStateManager.enablePolygonOffset();
            blockrendererdispatcher.renderBlockBrightness(SuperTNTMod.LARGE_TNT.getDefaultState(), 1.0F);
            GlStateManager.doPolygonOffset(0.0F, 0.0F);
            GlStateManager.disablePolygonOffset();
            GlStateManager.color(1.0F, 1.0F, 1.0F, 1.0F);
            GlStateManager.disableBlend();
            GlStateManager.enableLighting();
            GlStateManager.enableTexture2D();
        }

        GlStateManager.popMatrix();
        doRender(entity, x, y, z, entityYaw, partialTicks);
    }

    /**
     * Returns the location of an entity's texture. Doesn't seem to be called unless you call Render.bindEntityTexture.
     */
    protected ResourceLocation getEntityTexture(EntityTNTLargePrimed entity)
    {
        return TextureMap.LOCATION_BLOCKS_TEXTURE;
    }
}

 

I can't find any information on the internet about stuff that's relevant for fixing this. I did look in a really really old 1.7.2 mod that I made were entity renders for TNT work. The code appears to be:

EntityRegistry.registerGlobalEntityID(EntityTNTLargePrimed.class, "entitytntlarge", EntityRegistry.findGlobalUniqueEntityId());
        EntityRegistry.registerModEntity(EntityTNTLargePrimed.class, "entitytntlarge", 64, this, 256, 1, false);
        RenderingRegistry.registerEntityRenderingHandler(EntityTNTLargePrimed.class, new RenderTNTLargePrimed(Minecraft.getMinecraft().getRenderManager()));

where my rendering registry is but the problem is that in 1.12.2 that doesn't work. I get errors in the registerGlobalEntityID and registerModEntity lines.

 

On the registerGlobalEntityID, it doesn't like the ".findGlobalUniqueEntityId" part. The error just says "The method findGlobalUniqueEntityId() is undefined for the type EntityRegistry". If I backspace and then make a period, I don't see any functions even remotely close to findGlobalUniqueEntityId and when I just backspace it, it doesn't work either.

 

On the next line, the problem is with the registerModEntity function and the fact that I have (class extends Entity, String, int, Object, int, int, boolean) where it's expecting (ResourceLocation, class extends Entity, String, Object, int, int, boolean).

 

Does anybody know of either a workaround, another way to do this, or something I'm doing wrong that would otherwise allow this to work without those two lines of 1.7.2 code I can't hack into working? I'm thoroughly stumped with this.

Edited by Xeraster
Posted (edited)
51 minutes ago, Xeraster said:

snip

don't register it with a global id that is for vanilla mod entities should never have ids. Register render in client proxy during init

Edited by jredfox
Posted (edited)

OK but what do I replace it with in order to make that function actually execute? Do you mean to just not use registerGlobalEntityID at all? If that is what you mean, that solves half my problem but I still can't find a way to make it accept the "EntityRegistry.registerModEntity(EntityTNTLargePrimed.class, "entitytntlarge", 64, this, 256, 1, false);" line

 

Note that simply putting the line "RenderingRegistry.registerEntityRenderingHandler(EntityTNTLargePrimed.class, new RenderTNTLargePrimed(Minecraft.getMinecraft().getRenderManager()));" in client proxy doesn't fix it and renders still don't work like that.

Edited by Xeraster
Posted
11 minutes ago, Xeraster said:

Do you mean to just not use registerGlobalEntityID at all?

Correct. That's why there are mod IDs.

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

 

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

 

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

Posted (edited)

Ok well omitting the EntityRegistry.registerGlobalEntityID(blah blah blah) and EntityRegistry.registerModEntity(blah blah blah) lines causes the render animation to not show (not that it was showing before). Perhaps I need the EntityRegistry.registerModEntity line since it doesn't have "global id" in it as pointed out.

I am taking a stab in the dark here, but as far as converting the 1.7.2 code into something that will actually compile, I came up with:

@SideOnly(Side.CLIENT)
	@SubscribeEvent
	public static void onRegisterModels(ModelRegistryEvent event) {
EntityRegistry.registerModEntity(new ResourceLocation("EntityTNTLargePrimed"), EntityTNTLargePrimed.class, "entitytntlargeprimed", 64, SuperTNTMod.SUPER_TNT, 256, 1, false);
		RenderingRegistry.registerEntityRenderingHandler(EntityTNTLargePrimed.class, new RenderTNTLargePrimed(Minecraft.getMinecraft().getRenderManager()));
}

 

Now it just crashes on start up. What can I do now?

Edited by Xeraster
Posted
5 minutes ago, Xeraster said:

Ok well omitting the EntityRegistry.registerGlobalEntityID(blah blah blah) and EntityRegistry.registerModEntity(blah blah blah) lines causes the render animation to not show (not that it was showing before). Perhaps I need the EntityRegistry.registerModEntity line since it doesn't have "global id" in it as pointed out.

You need one of them, otherwise the game doesn't know that your entity exists and can't serialize it.

And one of the two is wrong.

So you absolutely positively need the other one.

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

 

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

 

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

Posted
8 minutes ago, Xeraster said:

Ok well omitting the EntityRegistry.registerGlobalEntityID(blah blah blah) and EntityRegistry.registerModEntity(blah blah blah) lines causes the render animation to not show (not that it was showing before). Perhaps I need the EntityRegistry.registerModEntity line since it doesn't have "global id" in it as pointed out.

I am taking a stab in the dark here, but as far as converting the 1.7.2 code into something that will actually compile, I came up with:


@SideOnly(Side.CLIENT)
	@SubscribeEvent
	public static void onRegisterModels(ModelRegistryEvent event) {
EntityRegistry.registerModEntity(new ResourceLocation("EntityTNTLargePrimed"), EntityTNTLargePrimed.class, "entitytntlargeprimed", 64, SuperTNTMod.SUPER_TNT, 256, 1, false);
		RenderingRegistry.registerEntityRenderingHandler(EntityTNTLargePrimed.class, new RenderTNTLargePrimed(Minecraft.getMinecraft().getRenderManager()));
}

 

Now it just crashes on start up. What can I do now?

Don't register either of those dduring modelregistry event those are for blocks/items only. Register it once via your client proxy. Call the other on both server and client

Posted (edited)

What do I put for the first argument of the EntityRegistry.registerModEntity function? RenderTNTLargePrimed is what would make sense but that gives me an error. What ResouceLocation variable can I put in there that will not only keep the game from crashing, but cause my render to actually work? Putting null crashes it. Entering a new ResourceLocation(SuperTNTMod.MODID, "RenderTNTLargePrimed") crashes it. I have only been able to crash it or get errors by using that line.

 

What do I do for the ResourceLocation variable?

 

Update: I changed that one line to

EntityRegistry.registerModEntity(new ResourceLocation(SuperTNTMod.MODID + ":textures/blocks/largetnt_side.png"), EntityTNTLargePrimed.class, "EntityTNTLargePrimed", 0, SuperTNTMod.MODID, 128, 1, false);

 

Now, it waits until I ignite the TNT to crash.

 

So.. close...

 

Also, here is my crash log:

Spoiler

2018-04-12 22:05:08,353 main WARN Disabling terminal, you're running in an unsupported environment.
[22:05:08] [main/INFO] [GradleStart]: Extra: []
[22:05:08] [main/INFO] [GradleStart]: Running with arguments: [--userProperties, {}, --assetsDir, /home/scott/.gradle/caches/minecraft/assets, --assetIndex, 1.12, --accessToken{REDACTED}, --version, 1.12.2, --tweakClass, net.minecraftforge.fml.common.launcher.FMLTweaker, --tweakClass, net.minecraftforge.gradle.tweakers.CoremodTweaker]
[22:05:08] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.fml.common.launcher.FMLTweaker
[22:05:08] [main/INFO] [LaunchWrapper]: Using primary tweak class name net.minecraftforge.fml.common.launcher.FMLTweaker
[22:05:08] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.gradle.tweakers.CoremodTweaker
[22:05:08] [main/INFO] [LaunchWrapper]: Calling tweak class net.minecraftforge.fml.common.launcher.FMLTweaker
[22:05:08] [main/INFO] [FML]: Forge Mod Loader version 14.23.2.2641 for Minecraft 1.12.2 loading
[22:05:08] [main/INFO] [FML]: Java is OpenJDK 64-Bit Server VM, version 1.8.0_151, running on Linux:amd64:4.13.0-37-generic, installed at /usr/lib/jvm/java-8-openjdk-amd64/jre
[22:05:08] [main/INFO] [FML]: Managed to load a deobfuscated Minecraft name- we are in a deobfuscated environment. Skipping runtime deobfuscation
[22:05:08] [main/INFO] [FML]: Ignoring missing certificate for coremod FMLCorePlugin (net.minecraftforge.fml.relauncher.FMLCorePlugin), we are in deobf and it's a forge core plugin
[22:05:08] [main/INFO] [FML]: Ignoring missing certificate for coremod FMLForgePlugin (net.minecraftforge.classloading.FMLForgePlugin), we are in deobf and it's a forge core plugin
[22:05:08] [main/INFO] [LaunchWrapper]: Calling tweak class net.minecraftforge.gradle.tweakers.CoremodTweaker
[22:05:08] [main/INFO] [GradleStart]: Injecting location in coremod net.minecraftforge.fml.relauncher.FMLCorePlugin
[22:05:08] [main/INFO] [GradleStart]: Injecting location in coremod net.minecraftforge.classloading.FMLForgePlugin
[22:05:08] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.fml.common.launcher.FMLInjectionAndSortingTweaker
[22:05:08] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.fml.common.launcher.FMLDeobfTweaker
[22:05:08] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.gradle.tweakers.AccessTransformerTweaker
[22:05:08] [main/INFO] [LaunchWrapper]: Calling tweak class net.minecraftforge.fml.common.launcher.FMLInjectionAndSortingTweaker
[22:05:08] [main/INFO] [LaunchWrapper]: Calling tweak class net.minecraftforge.fml.common.launcher.FMLInjectionAndSortingTweaker
[22:05:08] [main/INFO] [LaunchWrapper]: Calling tweak class net.minecraftforge.fml.relauncher.CoreModManager$FMLPluginWrapper
[22:05:09] [main/ERROR] [FML]: FML appears to be missing any signature data. This is not a good thing
[22:05:09] [main/INFO] [LaunchWrapper]: Calling tweak class net.minecraftforge.fml.relauncher.CoreModManager$FMLPluginWrapper
[22:05:09] [main/INFO] [LaunchWrapper]: Calling tweak class net.minecraftforge.fml.common.launcher.FMLDeobfTweaker
[22:05:09] [main/INFO] [LaunchWrapper]: Calling tweak class net.minecraftforge.gradle.tweakers.AccessTransformerTweaker
[22:05:09] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.fml.common.launcher.TerminalTweaker
[22:05:09] [main/INFO] [LaunchWrapper]: Calling tweak class net.minecraftforge.fml.common.launcher.TerminalTweaker
[22:05:09] [main/INFO] [LaunchWrapper]: Launching wrapped minecraft {net.minecraft.client.main.Main}
[22:05:10] [main/INFO] [net.minecraft.client.Minecraft]: Setting user: Player285
[22:05:12] [main/WARN] [net.minecraft.client.settings.GameSettings]: Skipping bad option: lastServer:
[22:05:12] [main/INFO] [net.minecraft.client.Minecraft]: LWJGL Version: 2.9.4
[22:05:12] [main/INFO] [FML]: -- System Details --
Details:
    Minecraft Version: 1.12.2
    Operating System: Linux (amd64) version 4.13.0-37-generic
    Java Version: 1.8.0_151, Oracle Corporation
    Java VM Version: OpenJDK 64-Bit Server VM (mixed mode), Oracle Corporation
    Memory: 913260984 bytes (870 MB) / 1636827136 bytes (1561 MB) up to 28631367680 bytes (27305 MB)
    JVM Flags: 0 total;
    IntCache: cache: 0, tcache: 0, allocated: 0, tallocated: 0
    FML:
    Loaded coremods (and transformers):
    GL info: ' Vendor: 'NVIDIA Corporation' Version: '4.6.0 NVIDIA 390.25' Renderer: 'GeForce GTX 1080 Ti/PCIe/SSE2'
[22:05:12] [main/INFO] [FML]: MinecraftForge v14.23.2.2641 Initialized
[22:05:12] [main/INFO] [FML]: Starts to replace vanilla recipe ingredients with ore ingredients.
[22:05:13] [main/INFO] [FML]: Replaced 1036 ore ingredients
[22:05:13] [main/INFO] [FML]: Found 0 mods from the command line. Injecting into mod discoverer
[22:05:13] [main/INFO] [FML]: Searching /home/scott/eclipse-workspace/forge modding/run/mods for mods
[22:05:13] [main/INFO] [FML]: Forge Mod Loader has identified 6 mods to load
[22:05:14] [main/INFO] [FML]: Attempting connection with missing mods [minecraft, mcp, FML, forge, examplemod, supertnt] at CLIENT
[22:05:14] [main/INFO] [FML]: Attempting connection with missing mods [minecraft, mcp, FML, forge, examplemod, supertnt] at SERVER
[22:05:14] [main/INFO] [net.minecraft.client.resources.SimpleReloadableResourceManager]: Reloading ResourceManager: Default, FMLFileResourcePack:Forge Mod Loader, FMLFileResourcePack:Minecraft Forge, FMLFileResourcePack:Example Mod, FMLFileResourcePack:Super TNT Mod
[22:05:14] [main/INFO] [FML]: Processing ObjectHolder annotations
[22:05:14] [main/INFO] [FML]: Found 1183 ObjectHolder annotations
[22:05:14] [main/INFO] [FML]: Identifying ItemStackHolder annotations
[22:05:14] [main/INFO] [FML]: Found 0 ItemStackHolder annotations
[22:05:14] [main/INFO] [FML]: Configured a dormant chunk cache size of 0
[22:05:14] [Forge Version Check/INFO] [forge.VersionCheck]: [forge] Starting version check at http://files.minecraftforge.net/maven/net/minecraftforge/forge/promotions_slim.json
[22:05:14] [main/INFO] [STDOUT]: [com.xeraster.supertnt.SuperTNTMod:preInit:348]: Pre initialization event executed
[22:05:14] [main/INFO] [STDOUT]: [com.xeraster.supertnt.SuperTNTMod$RegistrationHandler:registerBlocks:374]: register blocks event executed
[22:05:14] [main/INFO] [STDOUT]: [com.xeraster.supertnt.SuperTNTMod$RegistrationHandler:registerBlocks:376]: poop fluid unlocal name = fluid.liquidpoop
[22:05:14] [main/INFO] [STDOUT]: [com.xeraster.supertnt.SuperTNTMod$RegistrationHandler:registerBlocks:377]: poop fluid name = liquidpoop
[22:05:14] [main/INFO] [STDOUT]: [com.xeraster.supertnt.SuperTNTMod$RegistrationHandler:registerBlocks:382]: register all function executed
[22:05:14] [main/INFO] [FML]: Applying holder lookups
[22:05:14] [main/INFO] [FML]: Holder lookups applied
[22:05:14] [main/INFO] [STDOUT]: [com.xeraster.supertnt.SoundHandler:createSoundEvent:55]: At beginning of createSoundEvent
[22:05:14] [main/INFO] [STDOUT]: [com.xeraster.supertnt.SoundHandler:createSoundEvent:55]: At beginning of createSoundEvent
[22:05:14] [main/INFO] [STDOUT]: [com.xeraster.supertnt.SoundHandler:createSoundEvent:55]: At beginning of createSoundEvent
[22:05:14] [main/INFO] [STDOUT]: [com.xeraster.supertnt.SoundHandler:createSoundEvent:55]: At beginning of createSoundEvent
[22:05:14] [main/INFO] [STDOUT]: [com.xeraster.supertnt.SoundHandler:createSoundEvent:55]: At beginning of createSoundEvent
[22:05:14] [main/INFO] [STDOUT]: [com.xeraster.supertnt.SoundHandler:createSoundEvent:55]: At beginning of createSoundEvent
[22:05:14] [main/INFO] [STDOUT]: [com.xeraster.supertnt.SoundHandler:createSoundEvent:55]: At beginning of createSoundEvent
[22:05:14] [main/INFO] [STDOUT]: [com.xeraster.supertnt.SoundHandler:createSoundEvent:55]: At beginning of createSoundEvent
[22:05:14] [main/INFO] [STDOUT]: [com.xeraster.supertnt.SoundHandler:createSoundEvent:55]: At beginning of createSoundEvent
[22:05:14] [main/INFO] [STDOUT]: [com.xeraster.supertnt.SoundHandler:createSoundEvent:55]: At beginning of createSoundEvent
[22:05:14] [main/INFO] [STDOUT]: [com.xeraster.supertnt.SoundHandler:createSoundEvent:55]: At beginning of createSoundEvent
[22:05:14] [main/INFO] [STDOUT]: [com.xeraster.supertnt.SoundHandler:createSoundEvent:55]: At beginning of createSoundEvent
[22:05:14] [main/INFO] [FML]: Applying holder lookups
[22:05:14] [main/INFO] [FML]: Holder lookups applied
[22:05:14] [main/INFO] [STDOUT]: [com.xeraster.supertnt.SoundHandler$RegistrationHandler:registerSoundEvents:100]: created sound to string from the class within the class = net.minecraft.util.SoundEvent@27cfc534
[22:05:14] [main/INFO] [STDOUT]: [com.xeraster.supertnt.SoundHandler$RegistrationHandler:registerSoundEvents:101]: registry name of said sound = supertnt:wristrockets
[22:05:14] [main/INFO] [STDOUT]: [com.xeraster.supertnt.SoundHandler$RegistrationHandler:registerSoundEvents:102]: sound name of sound = supertnt:wristrockets
[22:05:14] [main/INFO] [STDOUT]: [com.xeraster.supertnt.SoundHandler$RegistrationHandler:registerSoundEvents:103]: registry type of sound = class net.minecraft.util.SoundEvent
[22:05:14] [main/INFO] [FML]: Applying holder lookups
[22:05:14] [main/INFO] [FML]: Holder lookups applied
[22:05:14] [main/INFO] [STDOUT]: [com.xeraster.supertnt.init.Items$RegistrationHandler:onRegisterModels:62]: record registry name is = supertnt:record.starwarsrecord
[22:05:14] [main/INFO] [STDOUT]: [com.xeraster.supertnt.init.Items$RegistrationHandler:onRegisterModels:63]: record unlocalized name is = item.record.starwarsrecord
[22:05:14] [main/INFO] [STDOUT]: [com.xeraster.supertnt.SuperTNTMod$RegistrationHandler:onRegisterModels:482]: Registered RenderTNTLargePrimed from client proxy section
[22:05:14] [main/INFO] [FML]: Applying holder lookups
[22:05:14] [main/INFO] [FML]: Holder lookups applied
[22:05:14] [main/INFO] [FML]: Injecting itemstacks
[22:05:14] [main/INFO] [FML]: Itemstack injection complete
[22:05:14] [Forge Version Check/INFO] [forge.VersionCheck]: [forge] Found status: OUTDATED Target: 14.23.3.2655
[22:05:15] [main/WARN] [net.minecraft.client.audio.SoundHandler]: File testmod3:sounds/items/gun/9mm_fire.ogg does not exist, cannot add it to event supertnt:9mm.fire
[22:05:15] [main/WARN] [net.minecraft.client.audio.SoundHandler]: File testmod3:sounds/items/gun/9mm_fire.ogg does not exist, cannot add it to event supertnt:9mm.fire
[22:05:15] [Sound Library Loader/INFO] [net.minecraft.client.audio.SoundManager]: Starting up SoundSystem...
[22:05:15] [Thread-3/INFO] [FML]: Using sync timing. 200 frames of Display.update took 37273914 nanos
[22:05:15] [Thread-4/INFO] [net.minecraft.client.audio.SoundManager]: Initializing LWJGL OpenAL
[22:05:15] [Thread-4/INFO] [net.minecraft.client.audio.SoundManager]: (The LWJGL binding of OpenAL.  For more information, see http://www.lwjgl.org)
[22:05:15] [Thread-4/INFO] [net.minecraft.client.audio.SoundManager]: OpenAL initialized.
[22:05:15] [Sound Library Loader/INFO] [net.minecraft.client.audio.SoundManager]: Sound engine started
[22:05:16] [main/INFO] [FML]: Max texture size: 16384
[22:05:16] [main/INFO] [net.minecraft.client.renderer.texture.TextureMap]: Created: 512x512 textures-atlas
[22:05:17] [main/INFO] [FML]: Applying holder lookups
[22:05:17] [main/INFO] [FML]: Holder lookups applied
[22:05:17] [main/INFO] [examplemod]: DIRT BLOCK >> minecraft:dirt
[22:05:17] [main/INFO] [STDOUT]: [com.xeraster.supertnt.SuperTNTMod:init:498]: About to run SoundHandler.init()
[22:05:17] [main/INFO] [FML]: Injecting itemstacks
[22:05:17] [main/INFO] [FML]: Itemstack injection complete
[22:05:18] [main/INFO] [FML]: Forge Mod Loader has successfully loaded 6 mods
[22:05:18] [main/WARN] [net.minecraft.client.settings.GameSettings]: Skipping bad option: lastServer:
[22:05:18] [main/INFO] [com.mojang.text2speech.NarratorLinux]: Narrator library successfully loaded
[22:05:18] [Realms Notification Availability checker #1/INFO] [com.mojang.realmsclient.client.RealmsClient]: Could not authorize you against Realms server: Invalid session id
[22:05:22] [Server thread/INFO] [net.minecraft.server.integrated.IntegratedServer]: Starting integrated minecraft server version 1.12.2
[22:05:22] [Server thread/INFO] [net.minecraft.server.integrated.IntegratedServer]: Generating keypair
[22:05:22] [Server thread/INFO] [FML]: Injecting existing registry data into this server instance
[22:05:22] [Server thread/INFO] [FML]: Registry Block: Found a missing id from the world supertnt:christmasno
[22:05:22] [Server thread/INFO] [FML]: Registry Block: Found a missing id from the world supertnt:christmasyes
[22:05:23] [Server thread/INFO] [FML]: Applying holder lookups
[22:05:23] [Server thread/INFO] [FML]: Holder lookups applied
[22:05:23] [Server thread/INFO] [FML]: Loading dimension 0 (another flat ass maps) (net.minecraft.server.integrated.IntegratedServer@62b33d71)
[22:05:23] [Server thread/INFO] [net.minecraft.advancements.AdvancementList]: Loaded 488 advancements
[22:05:23] [Server thread/INFO] [FML]: Loading dimension 1 (another flat ass maps) (net.minecraft.server.integrated.IntegratedServer@62b33d71)
[22:05:23] [Server thread/INFO] [FML]: Loading dimension -1 (another flat ass maps) (net.minecraft.server.integrated.IntegratedServer@62b33d71)
[22:05:23] [Server thread/INFO] [net.minecraft.server.MinecraftServer]: Preparing start region for level 0
[22:05:24] [Server thread/INFO] [net.minecraft.server.integrated.IntegratedServer]: Changing view distance to 32, from 10
[22:05:24] [Netty Local Client IO #0/INFO] [FML]: Server protocol version 2
[22:05:24] [Netty Server IO #1/INFO] [FML]: Client protocol version 2
[22:05:24] [Netty Server IO #1/INFO] [FML]: Client attempting to join with 6 mods : [email protected],[email protected],[email protected],[email protected],[email protected],[email protected]
[22:05:24] [Netty Local Client IO #0/INFO] [FML]: [Netty Local Client IO #0] Client side modded connection established
[22:05:24] [Server thread/INFO] [FML]: [Server thread] Server side modded connection established
[22:05:24] [Server thread/INFO] [net.minecraft.server.management.PlayerList]: Player285[local:E:e0b23322] logged in with entity id 215 at (-179.8701910817694, 1.0, -947.0378749214285)
[22:05:24] [Server thread/INFO] [net.minecraft.server.MinecraftServer]: Player285 joined the game
[22:05:25] [Server thread/INFO] [net.minecraft.server.integrated.IntegratedServer]: Saving and pausing game...
[22:05:25] [Server thread/INFO] [net.minecraft.server.MinecraftServer]: Saving chunks for level 'another flat ass maps'/overworld
[22:05:25] [Server thread/INFO] [net.minecraft.server.MinecraftServer]: Saving chunks for level 'another flat ass maps'/the_nether
[22:05:25] [Server thread/INFO] [net.minecraft.server.MinecraftServer]: Saving chunks for level 'another flat ass maps'/the_end
[22:05:25] [main/INFO] [net.minecraft.advancements.AdvancementList]: Loaded 19 advancements
[22:05:26] [pool-2-thread-1/WARN] [com.mojang.authlib.yggdrasil.YggdrasilMinecraftSessionService]: Couldn't look up profile properties for com.mojang.authlib.GameProfile@c80ad91[id=dec201cc-1fa4-3af7-9261-26208e4b16bf,name=Player285,properties={},legacy=false]
com.mojang.authlib.exceptions.AuthenticationException: The client has sent too many requests within a certain amount of time
    at com.mojang.authlib.yggdrasil.YggdrasilAuthenticationService.makeRequest(YggdrasilAuthenticationService.java:79) ~[YggdrasilAuthenticationService.class:?]
    at com.mojang.authlib.yggdrasil.YggdrasilMinecraftSessionService.fillGameProfile(YggdrasilMinecraftSessionService.java:180) [YggdrasilMinecraftSessionService.class:?]
    at com.mojang.authlib.yggdrasil.YggdrasilMinecraftSessionService$1.load(YggdrasilMinecraftSessionService.java:60) [YggdrasilMinecraftSessionService$1.class:?]
    at com.mojang.authlib.yggdrasil.YggdrasilMinecraftSessionService$1.load(YggdrasilMinecraftSessionService.java:57) [YggdrasilMinecraftSessionService$1.class:?]
    at com.google.common.cache.LocalCache$LoadingValueReference.loadFuture(LocalCache.java:3716) [guava-21.0.jar:?]
    at com.google.common.cache.LocalCache$Segment.loadSync(LocalCache.java:2424) [guava-21.0.jar:?]
    at com.google.common.cache.LocalCache$Segment.lockedGetOrLoad(LocalCache.java:2298) [guava-21.0.jar:?]
    at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2211) [guava-21.0.jar:?]
    at com.google.common.cache.LocalCache.get(LocalCache.java:4154) [guava-21.0.jar:?]
    at com.google.common.cache.LocalCache.getOrLoad(LocalCache.java:4158) [guava-21.0.jar:?]
    at com.google.common.cache.LocalCache$LocalLoadingCache.get(LocalCache.java:5147) [guava-21.0.jar:?]
    at com.google.common.cache.LocalCache$LocalLoadingCache.getUnchecked(LocalCache.java:5153) [guava-21.0.jar:?]
    at com.mojang.authlib.yggdrasil.YggdrasilMinecraftSessionService.fillProfileProperties(YggdrasilMinecraftSessionService.java:170) [YggdrasilMinecraftSessionService.class:?]
    at net.minecraft.client.Minecraft.getProfileProperties(Minecraft.java:3188) [Minecraft.class:?]
    at net.minecraft.client.resources.SkinManager$3.run(SkinManager.java:138) [SkinManager$3.class:?]
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [?:1.8.0_151]
    at java.util.concurrent.FutureTask.run(FutureTask.java:266) [?:1.8.0_151]
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [?:1.8.0_151]
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [?:1.8.0_151]
    at java.lang.Thread.run(Thread.java:748) [?:1.8.0_151]
[22:05:26] [Server thread/INFO] [net.minecraft.server.MinecraftServer]: Stopping server
[22:05:26] [Server thread/INFO] [net.minecraft.server.MinecraftServer]: Saving players
[22:05:27] [Server thread/INFO] [net.minecraft.server.MinecraftServer]: Saving worlds
[22:05:27] [Server thread/INFO] [net.minecraft.server.MinecraftServer]: Saving chunks for level 'another flat ass maps'/overworld
[22:05:27] [Server thread/INFO] [net.minecraft.server.MinecraftServer]: Saving chunks for level 'another flat ass maps'/the_nether
[22:05:27] [Server thread/INFO] [net.minecraft.server.MinecraftServer]: Saving chunks for level 'another flat ass maps'/the_end
[22:05:27] [Server thread/INFO] [FML]: Unloading dimension 0
[22:05:27] [Server thread/INFO] [FML]: Unloading dimension -1
[22:05:27] [Server thread/INFO] [FML]: Unloading dimension 1
[22:05:27] [Server thread/INFO] [FML]: Applying holder lookups
[22:05:27] [Server thread/INFO] [FML]: Holder lookups applied
[22:05:27] [main/FATAL] [net.minecraft.client.Minecraft]: Reported exception thrown!
net.minecraft.util.ReportedException: Rendering entity in world
    at net.minecraft.client.renderer.entity.RenderManager.renderEntity(RenderManager.java:432) ~[RenderManager.class:?]
    at net.minecraft.client.renderer.entity.RenderManager.renderEntityStatic(RenderManager.java:374) ~[RenderManager.class:?]
    at net.minecraft.client.renderer.RenderGlobal.renderEntities(RenderGlobal.java:655) ~[RenderGlobal.class:?]
    at net.minecraft.client.renderer.EntityRenderer.renderWorldPass(EntityRenderer.java:1398) ~[EntityRenderer.class:?]
    at net.minecraft.client.renderer.EntityRenderer.renderWorld(EntityRenderer.java:1312) ~[EntityRenderer.class:?]
    at net.minecraft.client.renderer.EntityRenderer.updateCameraAndRender(EntityRenderer.java:1115) ~[EntityRenderer.class:?]
    at net.minecraft.client.Minecraft.runGameLoop(Minecraft.java:1207) ~[Minecraft.class:?]
    at net.minecraft.client.Minecraft.run(Minecraft.java:441) [Minecraft.class:?]
    at net.minecraft.client.main.Main.main(Main.java:118) [Main.class:?]
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_151]
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_151]
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_151]
    at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_151]
    at net.minecraft.launchwrapper.Launch.launch(Launch.java:135) [launchwrapper-1.12.jar:?]
    at net.minecraft.launchwrapper.Launch.main(Launch.java:28) [launchwrapper-1.12.jar:?]
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_151]
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_151]
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_151]
    at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_151]
    at net.minecraftforge.gradle.GradleStartCommon.launch(GradleStartCommon.java:97) [start/:?]
    at GradleStart.main(GradleStart.java:25) [start/:?]
Caused by: java.lang.NullPointerException
    at net.minecraft.client.renderer.entity.Render.bindTexture(Render.java:130) ~[Render.class:?]
    at net.minecraft.client.renderer.entity.Render.bindEntityTexture(Render.java:123) ~[Render.class:?]
    at com.xeraster.supertnt.renders.RenderTNTLargePrimed.doRender(RenderTNTLargePrimed.java:48) ~[RenderTNTLargePrimed.class:?]
    at com.xeraster.supertnt.renders.RenderTNTLargePrimed.doRender(RenderTNTLargePrimed.java:1) ~[RenderTNTLargePrimed.class:?]
    at net.minecraft.client.renderer.entity.RenderManager.renderEntity(RenderManager.java:390) ~[RenderManager.class:?]
    ... 20 more
[22:05:27] [main/INFO] [STDOUT]: [net.minecraft.init.Bootstrap:printToSYSOUT:629]: ---- Minecraft Crash Report ----
// Don't do that.

Time: 4/12/18 10:05 PM
Description: Rendering entity in world

java.lang.NullPointerException: Rendering entity in world
    at net.minecraft.client.renderer.entity.Render.bindTexture(Render.java:130)
    at net.minecraft.client.renderer.entity.Render.bindEntityTexture(Render.java:123)
    at com.xeraster.supertnt.renders.RenderTNTLargePrimed.doRender(RenderTNTLargePrimed.java:48)
    at com.xeraster.supertnt.renders.RenderTNTLargePrimed.doRender(RenderTNTLargePrimed.java:1)
    at net.minecraft.client.renderer.entity.RenderManager.renderEntity(RenderManager.java:390)
    at net.minecraft.client.renderer.entity.RenderManager.renderEntityStatic(RenderManager.java:374)
    at net.minecraft.client.renderer.RenderGlobal.renderEntities(RenderGlobal.java:655)
    at net.minecraft.client.renderer.EntityRenderer.renderWorldPass(EntityRenderer.java:1398)
    at net.minecraft.client.renderer.EntityRenderer.renderWorld(EntityRenderer.java:1312)
    at net.minecraft.client.renderer.EntityRenderer.updateCameraAndRender(EntityRenderer.java:1115)
    at net.minecraft.client.Minecraft.runGameLoop(Minecraft.java:1207)
    at net.minecraft.client.Minecraft.run(Minecraft.java:441)
    at net.minecraft.client.main.Main.main(Main.java:118)
    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:498)
    at net.minecraft.launchwrapper.Launch.launch(Launch.java:135)
    at net.minecraft.launchwrapper.Launch.main(Launch.java:28)
    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:498)
    at net.minecraftforge.gradle.GradleStartCommon.launch(GradleStartCommon.java:97)
    at GradleStart.main(GradleStart.java:25)


A detailed walkthrough of the error, its code path and all known details is as follows:
---------------------------------------------------------------------------------------

-- Head --
Thread: Client thread
Stacktrace:
    at net.minecraft.client.renderer.entity.Render.bindTexture(Render.java:130)
    at net.minecraft.client.renderer.entity.Render.bindEntityTexture(Render.java:123)
    at com.xeraster.supertnt.renders.RenderTNTLargePrimed.doRender(RenderTNTLargePrimed.java:48)
    at com.xeraster.supertnt.renders.RenderTNTLargePrimed.doRender(RenderTNTLargePrimed.java:1)

-- Entity being rendered --
Details:
    Entity Type: supertnt:textures/entity/largetnt_side.png (com.xeraster.supertnt.primedtnt.EntityTNTLargePrimed)
    Entity ID: 216
    Entity Name: entity.EntityTNTLargePrimed.name
    Entity's Exact location: -178.43, 1.00, -945.69
    Entity's Block location: World: (-179,1,-946), Chunk: (at 13,0,14 in -12,-60; contains blocks -192,0,-960 to -177,255,-945), Region: (-1,-2; contains chunks -32,-64 to -1,-33, blocks -512,0,-1024 to -1,255,-513)
    Entity's Momentum: 0.00, -0.00, 0.00
    Entity's Passengers: []
    Entity's Vehicle: ~~ERROR~~ NullPointerException: null

-- Renderer details --
Details:
    Assigned renderer: com.xeraster.supertnt.renders.RenderTNTLargePrimed@1b939d92
    Location: 1.44,0.00,1.35 - World: (1,0,1), Chunk: (at 1,0,1 in 0,0; contains blocks 0,0,0 to 15,255,15), Region: (0,0; contains chunks 0,0 to 31,31, blocks 0,0,0 to 511,255,511)
    Rotation: 0.0
    Delta: 0.3600006
Stacktrace:
    at net.minecraft.client.renderer.entity.RenderManager.renderEntity(RenderManager.java:390)
    at net.minecraft.client.renderer.entity.RenderManager.renderEntityStatic(RenderManager.java:374)
    at net.minecraft.client.renderer.RenderGlobal.renderEntities(RenderGlobal.java:655)
    at net.minecraft.client.renderer.EntityRenderer.renderWorldPass(EntityRenderer.java:1398)
    at net.minecraft.client.renderer.EntityRenderer.renderWorld(EntityRenderer.java:1312)

-- Affected level --
Details:
    Level name: MpServer
    All players: 1 total; [EntityPlayerSP['Player285'/215, l='MpServer', x=-179.87, y=1.00, z=-947.04]]
    Chunk stats: MultiplayerChunkCache: 1476, 1476
    Level seed: 0
    Level generator: ID 01 - flat, ver 0. Features enabled: false
    Level generator options:
    Level spawn location: World: (157,4,-258), Chunk: (at 13,0,14 in 9,-17; contains blocks 144,0,-272 to 159,255,-257), Region: (0,-1; contains chunks 0,-32 to 31,-1, blocks 0,0,-512 to 511,255,-1)
    Level time: 191278 game time, 10081 day time
    Level dimension: 0
    Level storage version: 0x00000 - Unknown?
    Level weather: Rain time: 0 (now: false), thunder time: 0 (now: false)
    Level game mode: Game mode: creative (ID 1). Hardcore: false. Cheats: false
    Forced entities: 31 total; [EntityVillager['Villager'/257, l='MpServer', x=-234.62, y=1.00, z=-943.55], EntitySlime['Slime'/258, l='MpServer', x=-226.85, y=1.00, z=-901.08], EntitySlime['Slime'/259, l='MpServer', x=-208.27, y=1.00, z=-894.79], EntityVillager['Villager'/261, l='MpServer', x=-244.66, y=1.00, z=-980.09], EntityVillager['Villager'/263, l='MpServer', x=-247.87, y=1.00, z=-972.25], EntityVillager['Villager'/264, l='MpServer', x=-259.68, y=1.00, z=-956.53], EntityVillager['Villager'/265, l='MpServer', x=-228.57, y=1.00, z=-989.30], EntityVillager['Villager'/266, l='MpServer', x=-233.78, y=1.00, z=-983.09], EntityVillager['Villager'/267, l='MpServer', x=-238.44, y=1.00, z=-968.33], EntityVillager['Villager'/268, l='MpServer', x=-224.14, y=1.00, z=-968.04], EntitySlime['Slime'/269, l='MpServer', x=-197.12, y=4.00, z=-875.66], EntitySlime['Slime'/274, l='MpServer', x=-140.40, y=4.67, z=-888.96], EntityTNTLargePrimed['entity.EntityTNTLargePrimed.name'/216, l='MpServer', x=-178.43, y=1.00, z=-945.69], EntityPlayerSP['Player285'/215, l='MpServer', x=-179.87, y=1.00, z=-947.04], EntitySlime['Slime'/298, l='MpServer', x=-118.99, y=4.50, z=-974.53], EntitySlime['Slime'/299, l='MpServer', x=-129.26, y=5.40, z=-945.45], EntitySlime['Slime'/300, l='MpServer', x=-119.00, y=4.50, z=-983.06], EntitySlime['Slime'/301, l='MpServer', x=-120.87, y=4.50, z=-976.45], EntitySlime['Slime'/302, l='MpServer', x=-114.72, y=4.92, z=-986.49], EntitySlime['Slime'/303, l='MpServer', x=-130.91, y=4.50, z=-962.74], EntitySlime['Slime'/304, l='MpServer', x=-166.86, y=1.50, z=-897.42], EntitySlime['Slime'/305, l='MpServer', x=-160.05, y=1.50, z=-905.13], EntitySlime['Slime'/306, l='MpServer', x=-166.16, y=1.50, z=-896.51], EntitySlime['Slime'/307, l='MpServer', x=-188.68, y=4.50, z=-869.23], EntitySlime['Slime'/313, l='MpServer', x=-148.75, y=5.24, z=-883.70], EntitySlime['Slime'/314, l='MpServer', x=-172.49, y=4.50, z=-872.41], EntitySlime['Slime'/315, l='MpServer', x=-160.79, y=4.50, z=-870.53], EntityVillager['Villager'/252, l='MpServer', x=-253.45, y=1.00, z=-1016.38], EntitySlime['Slime'/316, l='MpServer', x=-120.27, y=5.40, z=-924.76], EntityVillager['Villager'/253, l='MpServer', x=-254.93, y=1.00, z=-1000.98], EntitySlime['Slime'/318, l='MpServer', x=-102.54, y=4.00, z=-938.98]]
    Retry entities: 0 total; []
    Server brand: fml,forge
    Server type: Integrated singleplayer server
Stacktrace:
    at net.minecraft.client.multiplayer.WorldClient.addWorldInfoToCrashReport(WorldClient.java:461)
    at net.minecraft.client.Minecraft.addGraphicsAndWorldToCrashReport(Minecraft.java:2896)
    at net.minecraft.client.Minecraft.run(Minecraft.java:462)
    at net.minecraft.client.main.Main.main(Main.java:118)
    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:498)
    at net.minecraft.launchwrapper.Launch.launch(Launch.java:135)
    at net.minecraft.launchwrapper.Launch.main(Launch.java:28)
    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:498)
    at net.minecraftforge.gradle.GradleStartCommon.launch(GradleStartCommon.java:97)
    at GradleStart.main(GradleStart.java:25)

-- System Details --
Details:
    Minecraft Version: 1.12.2
    Operating System: Linux (amd64) version 4.13.0-37-generic
    Java Version: 1.8.0_151, Oracle Corporation
    Java VM Version: OpenJDK 64-Bit Server VM (mixed mode), Oracle Corporation
    Memory: 2280301744 bytes (2174 MB) / 2987917312 bytes (2849 MB) up to 28631367680 bytes (27305 MB)
    JVM Flags: 0 total;
    IntCache: cache: 0, tcache: 0, allocated: 0, tallocated: 0
    FML: MCP 9.42 Powered by Forge 14.23.2.2641 6 mods loaded, 6 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 |
    |:--------- |:---------- |:------------ |:-------------------------------- |:--------- |
    | UCHIJAAAA | minecraft  | 1.12.2       | minecraft.jar                    | None      |
    | UCHIJAAAA | mcp        | 9.42         | minecraft.jar                    | None      |
    | UCHIJAAAA | FML        | 8.0.99.99    | forgeSrc-1.12.2-14.23.2.2641.jar | None      |
    | UCHIJAAAA | forge      | 14.23.2.2641 | forgeSrc-1.12.2-14.23.2.2641.jar | None      |
    | UCHIJAAAA | examplemod | 1.0          | bin                              | None      |
    | UCHIJAAAA | supertnt   | 0.5          | bin                              | None      |

    Loaded coremods (and transformers):
    GL info: ' Vendor: 'NVIDIA Corporation' Version: '4.6.0 NVIDIA 390.25' Renderer: 'GeForce GTX 1080 Ti/PCIe/SSE2'
    Launched Version: 1.12.2
    LWJGL: 2.9.4
    OpenGL: GeForce GTX 1080 Ti/PCIe/SSE2 GL version 4.6.0 NVIDIA 390.25, 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:
    Current Language: English (US)
    Profiler Position: N/A (disabled)
    CPU: 16x Intel(R) Core(TM) i7-5960X CPU @ 3.00GHz
[22:05:27] [main/INFO] [STDOUT]: [net.minecraft.init.Bootstrap:printToSYSOUT:629]: #@!@# Game crashed! Crash report saved to: #@!@# /home/scott/eclipse-workspace/forge modding/run/./crash-reports/crash-2018-04-12_22.05.27-client.txt
AL lib: (EE) alc_cleanup: 1 device not closed

 

 

Edited by Xeraster
Posted

It's a registry name, it doesn't point AT anything.

new ResourceLocation(SuperTNTMod.MODID + ":large_tnt")

...is fine, its just used as the registry name.

 

Also, resource locations should never include a file type (do your blocks and items? no).

2 hours ago, Xeraster said:

Caused by: java.lang.NullPointerException
    at net.minecraft.client.renderer.entity.Render.bindTexture(Render.java:130) ~[Render.class:?]

The texture referenced by your renderer is null. Namely, this line:

 

4 hours ago, Xeraster said:

bindEntityTexture(entity);

 

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

 

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

 

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

Posted (edited)

OK I'm getting warmer but still no cigar. In my RenderTNTLargePrimed class file, I replaced:

 protected ResourceLocation getEntityTexture(EntityTNTLargePrimed entity)
    {
        return TextureMap.LOCATION_BLOCKS_TEXTURE;
    }

with:

@Override
    protected ResourceLocation getEntityTexture(Entity entity)
    {
        return TextureMap.LOCATION_BLOCKS_TEXTURE;
    }

which Draco18s expertly pointed out was causing a problem.

 

Now, I can put the line:

EntityRegistry.registerModEntity(new ResourceLocation(SuperTNTMod.MODID, "largetnt"), EntityTNTLargePrimed.class, "EntityTNTLargePrimed", 0, SuperTNTMod.MODID, 128, 1, false);

in my init function. Putting it anywhere else makes it crash on startup. Doing this makes it damn-near almost work. When I ignite the tnt, it shows up as a white, textureless cube along with the fuse burning particles. Interestingly enough, the console doesn't actually output any errors like it does if I use anything other than "largetnt" for the ResourceLocation part after my ModId. Here is my console log:

Spoiler

2018-04-14 17:10:26,081 main WARN Disabling terminal, you're running in an unsupported environment.
[17:10:26] [main/INFO] [GradleStart]: Extra: []
[17:10:26] [main/INFO] [GradleStart]: Running with arguments: [--userProperties, {}, --assetsDir, /home/scott/.gradle/caches/minecraft/assets, --assetIndex, 1.12, --accessToken{REDACTED}, --version, 1.12.2, --tweakClass, net.minecraftforge.fml.common.launcher.FMLTweaker, --tweakClass, net.minecraftforge.gradle.tweakers.CoremodTweaker]
[17:10:26] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.fml.common.launcher.FMLTweaker
[17:10:26] [main/INFO] [LaunchWrapper]: Using primary tweak class name net.minecraftforge.fml.common.launcher.FMLTweaker
[17:10:26] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.gradle.tweakers.CoremodTweaker
[17:10:26] [main/INFO] [LaunchWrapper]: Calling tweak class net.minecraftforge.fml.common.launcher.FMLTweaker
[17:10:26] [main/INFO] [FML]: Forge Mod Loader version 14.23.2.2641 for Minecraft 1.12.2 loading
[17:10:26] [main/INFO] [FML]: Java is OpenJDK 64-Bit Server VM, version 1.8.0_162, running on Linux:amd64:4.13.0-37-generic, installed at /usr/lib/jvm/java-8-openjdk-amd64/jre
[17:10:26] [main/INFO] [FML]: Managed to load a deobfuscated Minecraft name- we are in a deobfuscated environment. Skipping runtime deobfuscation
[17:10:26] [main/INFO] [FML]: Ignoring missing certificate for coremod FMLCorePlugin (net.minecraftforge.fml.relauncher.FMLCorePlugin), we are in deobf and it's a forge core plugin
[17:10:26] [main/INFO] [FML]: Ignoring missing certificate for coremod FMLForgePlugin (net.minecraftforge.classloading.FMLForgePlugin), we are in deobf and it's a forge core plugin
[17:10:26] [main/INFO] [LaunchWrapper]: Calling tweak class net.minecraftforge.gradle.tweakers.CoremodTweaker
[17:10:26] [main/INFO] [GradleStart]: Injecting location in coremod net.minecraftforge.fml.relauncher.FMLCorePlugin
[17:10:26] [main/INFO] [GradleStart]: Injecting location in coremod net.minecraftforge.classloading.FMLForgePlugin
[17:10:26] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.fml.common.launcher.FMLInjectionAndSortingTweaker
[17:10:26] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.fml.common.launcher.FMLDeobfTweaker
[17:10:26] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.gradle.tweakers.AccessTransformerTweaker
[17:10:26] [main/INFO] [LaunchWrapper]: Calling tweak class net.minecraftforge.fml.common.launcher.FMLInjectionAndSortingTweaker
[17:10:26] [main/INFO] [LaunchWrapper]: Calling tweak class net.minecraftforge.fml.common.launcher.FMLInjectionAndSortingTweaker
[17:10:26] [main/INFO] [LaunchWrapper]: Calling tweak class net.minecraftforge.fml.relauncher.CoreModManager$FMLPluginWrapper
[17:10:27] [main/ERROR] [FML]: FML appears to be missing any signature data. This is not a good thing
[17:10:27] [main/INFO] [LaunchWrapper]: Calling tweak class net.minecraftforge.fml.relauncher.CoreModManager$FMLPluginWrapper
[17:10:27] [main/INFO] [LaunchWrapper]: Calling tweak class net.minecraftforge.fml.common.launcher.FMLDeobfTweaker
[17:10:27] [main/INFO] [LaunchWrapper]: Calling tweak class net.minecraftforge.gradle.tweakers.AccessTransformerTweaker
[17:10:27] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.fml.common.launcher.TerminalTweaker
[17:10:27] [main/INFO] [LaunchWrapper]: Calling tweak class net.minecraftforge.fml.common.launcher.TerminalTweaker
[17:10:27] [main/INFO] [LaunchWrapper]: Launching wrapped minecraft {net.minecraft.client.main.Main}
[17:10:28] [main/INFO] [net.minecraft.client.Minecraft]: Setting user: Player42
[17:10:30] [main/WARN] [net.minecraft.client.settings.GameSettings]: Skipping bad option: lastServer:
[17:10:30] [main/INFO] [net.minecraft.client.Minecraft]: LWJGL Version: 2.9.4
[17:10:31] [main/INFO] [FML]: -- System Details --
Details:
    Minecraft Version: 1.12.2
    Operating System: Linux (amd64) version 4.13.0-37-generic
    Java Version: 1.8.0_162, Oracle Corporation
    Java VM Version: OpenJDK 64-Bit Server VM (mixed mode), Oracle Corporation
    Memory: 840534568 bytes (801 MB) / 1627389952 bytes (1552 MB) up to 28631367680 bytes (27305 MB)
    JVM Flags: 0 total;
    IntCache: cache: 0, tcache: 0, allocated: 0, tallocated: 0
    FML:
    Loaded coremods (and transformers):
    GL info: ' Vendor: 'NVIDIA Corporation' Version: '4.6.0 NVIDIA 390.25' Renderer: 'GeForce GTX 1080 Ti/PCIe/SSE2'
[17:10:31] [main/INFO] [FML]: MinecraftForge v14.23.2.2641 Initialized
[17:10:31] [main/INFO] [FML]: Starts to replace vanilla recipe ingredients with ore ingredients.
[17:10:31] [main/INFO] [FML]: Replaced 1036 ore ingredients
[17:10:31] [main/INFO] [FML]: Found 0 mods from the command line. Injecting into mod discoverer
[17:10:31] [main/INFO] [FML]: Searching /home/scott/eclipse-workspace/forge modding/run/mods for mods
[17:10:32] [main/INFO] [FML]: Forge Mod Loader has identified 6 mods to load
[17:10:32] [main/INFO] [FML]: Attempting connection with missing mods [minecraft, mcp, FML, forge, examplemod, supertnt] at CLIENT
[17:10:32] [main/INFO] [FML]: Attempting connection with missing mods [minecraft, mcp, FML, forge, examplemod, supertnt] at SERVER
[17:10:32] [main/INFO] [net.minecraft.client.resources.SimpleReloadableResourceManager]: Reloading ResourceManager: Default, FMLFileResourcePack:Forge Mod Loader, FMLFileResourcePack:Minecraft Forge, FMLFileResourcePack:Example Mod, FMLFileResourcePack:Super TNT Mod
[17:10:32] [main/INFO] [FML]: Processing ObjectHolder annotations
[17:10:32] [main/INFO] [FML]: Found 1183 ObjectHolder annotations
[17:10:32] [main/INFO] [FML]: Identifying ItemStackHolder annotations
[17:10:32] [main/INFO] [FML]: Found 0 ItemStackHolder annotations
[17:10:32] [main/INFO] [FML]: Configured a dormant chunk cache size of 0
[17:10:32] [Forge Version Check/INFO] [forge.VersionCheck]: [forge] Starting version check at http://files.minecraftforge.net/maven/net/minecraftforge/forge/promotions_slim.json
[17:10:32] [main/INFO] [STDOUT]: [com.xeraster.supertnt.SuperTNTMod:preInit:348]: Pre initialization event executed
[17:10:32] [main/INFO] [STDOUT]: [com.xeraster.supertnt.SuperTNTMod$RegistrationHandler:registerBlocks:373]: register blocks event executed
[17:10:32] [main/INFO] [STDOUT]: [com.xeraster.supertnt.SuperTNTMod$RegistrationHandler:registerBlocks:381]: register all function executed
[17:10:32] [main/INFO] [FML]: Applying holder lookups
[17:10:33] [main/INFO] [FML]: Holder lookups applied
[17:10:33] [main/INFO] [STDOUT]: [com.xeraster.supertnt.SoundHandler:createSoundEvent:55]: At beginning of createSoundEvent
[17:10:33] [main/INFO] [STDOUT]: [com.xeraster.supertnt.SoundHandler:createSoundEvent:55]: At beginning of createSoundEvent
[17:10:33] [main/INFO] [STDOUT]: [com.xeraster.supertnt.SoundHandler:createSoundEvent:55]: At beginning of createSoundEvent
[17:10:33] [main/INFO] [STDOUT]: [com.xeraster.supertnt.SoundHandler:createSoundEvent:55]: At beginning of createSoundEvent
[17:10:33] [main/INFO] [STDOUT]: [com.xeraster.supertnt.SoundHandler:createSoundEvent:55]: At beginning of createSoundEvent
[17:10:33] [main/INFO] [STDOUT]: [com.xeraster.supertnt.SoundHandler:createSoundEvent:55]: At beginning of createSoundEvent
[17:10:33] [main/INFO] [STDOUT]: [com.xeraster.supertnt.SoundHandler:createSoundEvent:55]: At beginning of createSoundEvent
[17:10:33] [main/INFO] [STDOUT]: [com.xeraster.supertnt.SoundHandler:createSoundEvent:55]: At beginning of createSoundEvent
[17:10:33] [main/INFO] [STDOUT]: [com.xeraster.supertnt.SoundHandler:createSoundEvent:55]: At beginning of createSoundEvent
[17:10:33] [main/INFO] [STDOUT]: [com.xeraster.supertnt.SoundHandler:createSoundEvent:55]: At beginning of createSoundEvent
[17:10:33] [main/INFO] [STDOUT]: [com.xeraster.supertnt.SoundHandler:createSoundEvent:55]: At beginning of createSoundEvent
[17:10:33] [main/INFO] [STDOUT]: [com.xeraster.supertnt.SoundHandler:createSoundEvent:55]: At beginning of createSoundEvent
[17:10:33] [main/INFO] [FML]: Applying holder lookups
[17:10:33] [main/INFO] [FML]: Holder lookups applied
[17:10:33] [main/INFO] [STDOUT]: [com.xeraster.supertnt.SoundHandler$RegistrationHandler:registerSoundEvents:100]: created sound to string from the class within the class = net.minecraft.util.SoundEvent@486d9e4e
[17:10:33] [main/INFO] [STDOUT]: [com.xeraster.supertnt.SoundHandler$RegistrationHandler:registerSoundEvents:101]: registry name of said sound = supertnt:wristrockets
[17:10:33] [main/INFO] [STDOUT]: [com.xeraster.supertnt.SoundHandler$RegistrationHandler:registerSoundEvents:102]: sound name of sound = supertnt:wristrockets
[17:10:33] [main/INFO] [STDOUT]: [com.xeraster.supertnt.SoundHandler$RegistrationHandler:registerSoundEvents:103]: registry type of sound = class net.minecraft.util.SoundEvent
[17:10:33] [main/INFO] [FML]: Applying holder lookups
[17:10:33] [main/INFO] [FML]: Holder lookups applied
[17:10:33] [main/INFO] [STDOUT]: [com.xeraster.supertnt.SuperTNTMod$RegistrationHandler:onRegisterModels:481]: Registered RenderTNTLargePrimed from client proxy section
[17:10:33] [main/INFO] [STDOUT]: [com.xeraster.supertnt.init.Items$RegistrationHandler:onRegisterModels:62]: record registry name is = supertnt:record.starwarsrecord
[17:10:33] [main/INFO] [STDOUT]: [com.xeraster.supertnt.init.Items$RegistrationHandler:onRegisterModels:63]: record unlocalized name is = item.record.starwarsrecord
[17:10:33] [main/INFO] [FML]: Applying holder lookups
[17:10:33] [main/INFO] [FML]: Holder lookups applied
[17:10:33] [main/INFO] [FML]: Injecting itemstacks
[17:10:33] [main/INFO] [FML]: Itemstack injection complete
[17:10:33] [Forge Version Check/INFO] [forge.VersionCheck]: [forge] Found status: OUTDATED Target: 14.23.3.2655
[17:10:33] [Thread-3/INFO] [FML]: Using sync timing. 200 frames of Display.update took 41880043 nanos
[17:10:33] [main/WARN] [net.minecraft.client.audio.SoundHandler]: File testmod3:sounds/items/gun/9mm_fire.ogg does not exist, cannot add it to event supertnt:9mm.fire
[17:10:33] [main/WARN] [net.minecraft.client.audio.SoundHandler]: File testmod3:sounds/items/gun/9mm_fire.ogg does not exist, cannot add it to event supertnt:9mm.fire
[17:10:33] [Sound Library Loader/INFO] [net.minecraft.client.audio.SoundManager]: Starting up SoundSystem...
[17:10:33] [Thread-4/INFO] [net.minecraft.client.audio.SoundManager]: Initializing LWJGL OpenAL
[17:10:33] [Thread-4/INFO] [net.minecraft.client.audio.SoundManager]: (The LWJGL binding of OpenAL.  For more information, see http://www.lwjgl.org)
[17:10:33] [Thread-4/INFO] [net.minecraft.client.audio.SoundManager]: OpenAL initialized.
[17:10:34] [Sound Library Loader/INFO] [net.minecraft.client.audio.SoundManager]: Sound engine started
[17:10:35] [main/INFO] [FML]: Max texture size: 16384
[17:10:35] [main/INFO] [net.minecraft.client.renderer.texture.TextureMap]: Created: 512x512 textures-atlas
[17:10:36] [main/INFO] [FML]: Applying holder lookups
[17:10:36] [main/INFO] [FML]: Holder lookups applied
[17:10:36] [main/INFO] [examplemod]: DIRT BLOCK >> minecraft:dirt
[17:10:36] [main/INFO] [STDOUT]: [com.xeraster.supertnt.SuperTNTMod:init:497]: About to run SoundHandler.init()
[17:10:36] [main/INFO] [FML]: Injecting itemstacks
[17:10:36] [main/INFO] [FML]: Itemstack injection complete
[17:10:36] [main/INFO] [FML]: Forge Mod Loader has successfully loaded 6 mods
[17:10:36] [main/WARN] [net.minecraft.client.settings.GameSettings]: Skipping bad option: lastServer:
[17:10:36] [main/INFO] [com.mojang.text2speech.NarratorLinux]: Narrator library successfully loaded
[17:10:37] [Realms Notification Availability checker #1/INFO] [com.mojang.realmsclient.client.RealmsClient]: Could not authorize you against Realms server: Invalid session id

[17:13:11] [Server thread/INFO] [net.minecraft.server.integrated.IntegratedServer]: Starting integrated minecraft server version 1.12.2
[17:13:11] [Server thread/INFO] [net.minecraft.server.integrated.IntegratedServer]: Generating keypair
[17:13:12] [Server thread/INFO] [FML]: Injecting existing registry data into this server instance
[17:13:12] [Server thread/INFO] [FML]: Registry Block: Found a missing id from the world supertnt:christmasno
[17:13:12] [Server thread/INFO] [FML]: Registry Block: Found a missing id from the world supertnt:christmasyes
[17:13:12] [Server thread/INFO] [FML]: Applying holder lookups
[17:13:12] [Server thread/INFO] [FML]: Holder lookups applied
[17:13:12] [Server thread/INFO] [FML]: Loading dimension 0 (another flat ass maps) (net.minecraft.server.integrated.IntegratedServer@9121726)
[17:13:12] [Server thread/INFO] [net.minecraft.advancements.AdvancementList]: Loaded 488 advancements
[17:13:12] [Server thread/INFO] [FML]: Loading dimension 1 (another flat ass maps) (net.minecraft.server.integrated.IntegratedServer@9121726)
[17:13:12] [Server thread/INFO] [FML]: Loading dimension -1 (another flat ass maps) (net.minecraft.server.integrated.IntegratedServer@9121726)
[17:13:12] [Server thread/INFO] [net.minecraft.server.MinecraftServer]: Preparing start region for level 0
[17:13:13] [Server thread/INFO] [net.minecraft.server.integrated.IntegratedServer]: Changing view distance to 32, from 10
[17:13:14] [Netty Local Client IO #0/INFO] [FML]: Server protocol version 2
[17:13:14] [Netty Server IO #1/INFO] [FML]: Client protocol version 2
[17:13:14] [Netty Server IO #1/INFO] [FML]: Client attempting to join with 6 mods : [email protected],[email protected],[email protected],[email protected],[email protected],[email protected]
[17:13:14] [Netty Local Client IO #0/INFO] [FML]: [Netty Local Client IO #0] Client side modded connection established
[17:13:14] [Server thread/INFO] [FML]: [Server thread] Server side modded connection established
[17:13:14] [Server thread/INFO] [net.minecraft.server.management.PlayerList]: Player42[local:E:ca25ce5a] logged in with entity id 215 at (-183.62762206554348, 1.0, -952.5023431489465)
[17:13:14] [Server thread/INFO] [net.minecraft.server.MinecraftServer]: Player42 joined the game
[17:13:15] [Server thread/INFO] [net.minecraft.server.integrated.IntegratedServer]: Saving and pausing game...
[17:13:15] [Server thread/INFO] [net.minecraft.server.MinecraftServer]: Saving chunks for level 'another flat ass maps'/overworld
[17:13:15] [Server thread/INFO] [net.minecraft.server.MinecraftServer]: Saving chunks for level 'another flat ass maps'/the_nether
[17:13:15] [Server thread/INFO] [net.minecraft.server.MinecraftServer]: Saving chunks for level 'another flat ass maps'/the_end
[17:13:15] [main/INFO] [net.minecraft.advancements.AdvancementList]: Loaded 19 advancements
[17:13:15] [pool-2-thread-1/WARN] [com.mojang.authlib.yggdrasil.YggdrasilMinecraftSessionService]: Couldn't look up profile properties for com.mojang.authlib.GameProfile@4eae807c[id=63489016-3661-38ec-acb6-3029cde6f29c,name=Player42,properties={},legacy=false]
com.mojang.authlib.exceptions.AuthenticationException: The client has sent too many requests within a certain amount of time
    at com.mojang.authlib.yggdrasil.YggdrasilAuthenticationService.makeRequest(YggdrasilAuthenticationService.java:79) ~[YggdrasilAuthenticationService.class:?]
    at com.mojang.authlib.yggdrasil.YggdrasilMinecraftSessionService.fillGameProfile(YggdrasilMinecraftSessionService.java:180) [YggdrasilMinecraftSessionService.class:?]
    at com.mojang.authlib.yggdrasil.YggdrasilMinecraftSessionService$1.load(YggdrasilMinecraftSessionService.java:60) [YggdrasilMinecraftSessionService$1.class:?]
    at com.mojang.authlib.yggdrasil.YggdrasilMinecraftSessionService$1.load(YggdrasilMinecraftSessionService.java:57) [YggdrasilMinecraftSessionService$1.class:?]
    at com.google.common.cache.LocalCache$LoadingValueReference.loadFuture(LocalCache.java:3716) [guava-21.0.jar:?]
    at com.google.common.cache.LocalCache$Segment.loadSync(LocalCache.java:2424) [guava-21.0.jar:?]
    at com.google.common.cache.LocalCache$Segment.lockedGetOrLoad(LocalCache.java:2298) [guava-21.0.jar:?]
    at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2211) [guava-21.0.jar:?]
    at com.google.common.cache.LocalCache.get(LocalCache.java:4154) [guava-21.0.jar:?]
    at com.google.common.cache.LocalCache.getOrLoad(LocalCache.java:4158) [guava-21.0.jar:?]
    at com.google.common.cache.LocalCache$LocalLoadingCache.get(LocalCache.java:5147) [guava-21.0.jar:?]
    at com.google.common.cache.LocalCache$LocalLoadingCache.getUnchecked(LocalCache.java:5153) [guava-21.0.jar:?]
    at com.mojang.authlib.yggdrasil.YggdrasilMinecraftSessionService.fillProfileProperties(YggdrasilMinecraftSessionService.java:170) [YggdrasilMinecraftSessionService.class:?]
    at net.minecraft.client.Minecraft.getProfileProperties(Minecraft.java:3188) [Minecraft.class:?]
    at net.minecraft.client.resources.SkinManager$3.run(SkinManager.java:138) [SkinManager$3.class:?]
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [?:1.8.0_162]
    at java.util.concurrent.FutureTask.run(FutureTask.java:266) [?:1.8.0_162]
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [?:1.8.0_162]
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [?:1.8.0_162]
    at java.lang.Thread.run(Thread.java:748) [?:1.8.0_162]
[17:13:17] [Server thread/INFO] [STDOUT]: [com.xeraster.supertnt.blocks.BlockTNTLarge:explode:100]: created LargeTNTPrimed object from explode function
[17:13:21] [Server thread/INFO] [STDOUT]: [com.xeraster.supertnt.primedtnt.EntityTNTLargePrimed:explode:140]: about to execute createExplosion in EntityTNTLargePrimed class
[17:13:21] [Server thread/INFO] [STDOUT]: [com.xeraster.supertnt.primedtnt.EntityTNTLargePrimed:createExplosion:54]: executed create explosion function from createExplosion in EntityTNTLargePrimed class
[17:13:21] [Server thread/INFO] [STDOUT]: [com.xeraster.supertnt.explosions.LargeExplosion:doExplosionA:89]: Running doExplosionA override in LargeExplosion class
[17:13:21] [Server thread/INFO] [STDOUT]: [com.xeraster.supertnt.primedtnt.EntityTNTLargePrimed:newExplosion:67]: defined explosion from newExplosion in EntityTNTLargePrimed class
[17:13:23] [Server thread/INFO] [net.minecraft.server.integrated.IntegratedServer]: Saving and pausing game...
[17:13:23] [Server thread/INFO] [net.minecraft.server.MinecraftServer]: Saving chunks for level 'another flat ass maps'/overworld
[17:13:23] [Server thread/INFO] [net.minecraft.server.MinecraftServer]: Saving chunks for level 'another flat ass maps'/the_nether
[17:13:23] [Server thread/INFO] [net.minecraft.server.MinecraftServer]: Saving chunks for level 'another flat ass maps'/the_end

 

Here is a screenshot of what it looks like when I do this:

https://imgur.com/a/0tDKg

Adding in the deprecated ""RenderingRegistry.registerEntityRenderingHandler(blah blah blah)" as previously pointed out to not use, causes the white textureless box to not show at all, but will show the fuse burning particles and shadow. I makes no difference if I put it before or after the EntityRegistry line. The console log is completely the same whether I put that line in there, whether its before EntityRegistry or after EntityRegistry.

 

I think maybe it has to do with the resource location part in my render class. Changing it to return something like "new ResourceLocation(SuperTNTMod.MODID, "largetnt")" or "new ResourceLocation(SuperTNTMod.MODID, "textures/blocks/largetnt_side")" doesn't actually seem to do anything.

Am I correct to guess that this is where the last problem is or am I barking up the wrong tree?

 

Also, I have changed my RenderTNTLargePrimed file. Here is what it looks like right now.

package com.xeraster.supertnt.renders;

import com.xeraster.supertnt.SuperTNTMod;
import com.xeraster.supertnt.primedtnt.EntityTNTLargePrimed;

import net.minecraft.client.Minecraft;
import net.minecraft.client.renderer.BlockRendererDispatcher;
import net.minecraft.client.renderer.GlStateManager;
import net.minecraft.client.renderer.entity.Render;
import net.minecraft.client.renderer.entity.RenderManager;
import net.minecraft.client.renderer.texture.TextureMap;
import net.minecraft.entity.Entity;
import net.minecraft.entity.item.EntityTNTPrimed;
import net.minecraft.init.Blocks;
import net.minecraft.util.ResourceLocation;
import net.minecraft.util.math.MathHelper;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;

@SideOnly(Side.CLIENT)
public class RenderTNTLargePrimed extends Render<EntityTNTLargePrimed>
{
    public RenderTNTLargePrimed(RenderManager renderManagerIn)
    {
        super(renderManagerIn);
        this.shadowSize = 0.5F;
    }

    /**
     * Renders the desired {@code T} type Entity.
     */
    public void doRender(EntityTNTLargePrimed entity, double x, double y, double z, float entityYaw, float partialTicks)
    {
        BlockRendererDispatcher blockrendererdispatcher = Minecraft.getMinecraft().getBlockRendererDispatcher();
        GlStateManager.pushMatrix();
        GlStateManager.translate((float)x, (float)y + 0.5F, (float)z);

        if ((float)entity.getFuse() - partialTicks + 1.0F < 10.0F)
        {
            float f = 1.0F - ((float)entity.getFuse() - partialTicks + 1.0F) / 10.0F;
            f = MathHelper.clamp(f, 0.0F, 1.0F);
            f = f * f;
            f = f * f;
            float f1 = 1.0F + f * 0.3F;
            GlStateManager.scale(f1, f1, f1);
        }

        float f2 = (1.0F - ((float)entity.getFuse() - partialTicks + 1.0F) / 100.0F) * 0.8F;
        //bindEntityTexture(entity);
        bindEntityTexture(entity);
        GlStateManager.rotate(-90.0F, 0.0F, 1.0F, 0.0F);
        GlStateManager.translate(-0.5F, -0.5F, 0.5F);
        blockrendererdispatcher.renderBlockBrightness(SuperTNTMod.LARGE_TNT.getDefaultState(), entity.getBrightness());
        GlStateManager.translate(0.0F, 0.0F, 1.0F);

        if (this.renderOutlines)
        {
            GlStateManager.enableColorMaterial();
            GlStateManager.enableOutlineMode(this.getTeamColor(entity));
            blockrendererdispatcher.renderBlockBrightness(SuperTNTMod.LARGE_TNT.getDefaultState(), 1.0F);
            GlStateManager.disableOutlineMode();
            GlStateManager.disableColorMaterial();
        }
        else if (entity.getFuse() / 5 % 2 == 0)
        {
            GlStateManager.disableTexture2D();
            GlStateManager.disableLighting();
            GlStateManager.enableBlend();
            GlStateManager.blendFunc(GlStateManager.SourceFactor.SRC_ALPHA, GlStateManager.DestFactor.DST_ALPHA);
            GlStateManager.color(1.0F, 1.0F, 1.0F, f2);
            GlStateManager.doPolygonOffset(-3.0F, -3.0F);
            GlStateManager.enablePolygonOffset();
            blockrendererdispatcher.renderBlockBrightness(SuperTNTMod.LARGE_TNT.getDefaultState(), 1.0F);
            GlStateManager.doPolygonOffset(0.0F, 0.0F);
            GlStateManager.disablePolygonOffset();
            GlStateManager.color(1.0F, 1.0F, 1.0F, 1.0F);
            GlStateManager.disableBlend();
            GlStateManager.enableLighting();
            GlStateManager.enableTexture2D();
        }

        GlStateManager.popMatrix();
        doRender(entity, x, y, z, entityYaw, partialTicks);
    }

    /**
     * Returns the location of an entity's texture. Doesn't seem to be called unless you call Render.bindEntityTexture.
     */
    @Override
    protected ResourceLocation getEntityTexture(EntityTNTLargePrimed entity)
    {
        return TextureMap.LOCATION_BLOCKS_TEXTURE;
    }
    
    

}

 

Edit: Well if I put any console output commands into my render's doRender function, it doesn't get executed. This means that there's still a problem with my registering. This is really frustrating though because if I change ANYTHING having to do with registering renders, it either functions even worse or crashes.

I'm amazed at the convoluted complexity of this.

 

Another edit: @diesieben07

I would love to try your suggestion of using EntityEntryBuilder except that I can't find documentation on how to use it, a working example of how to use it or how to do it myself through trial and error. Could you point me to a source of documentation or shed more light on this? Typing "EntityEntryBuilder.BuiltEntityEntry()" won't give me that one tooltip with what arguments the function accepts.

Edited by Xeraster
Posted (edited)
54 minutes ago, diesieben07 said:

You use EntityEntryBuilder (it follows the builder pattern, look it up if you are not familiar with it), not BuiltEntityEntry. Once you've built it you can register it the registry in the above mentioned event.

 

As for your issue with the rendering, you are not registering your entity renderer. I also told you how to do that above.

With all due respect, I don't agree with the statement that you told me how to do this above. I guess I'm just still missing something somewhere.

 

After Googleing, I think I'm supposed to establish a variable entity at the top so it looks like: public static final EntityEntry LARGE_TNT_ENTITY = new EntityEntry(EntityTNTLargePrimed.class, SuperTNTMod.MODID + ":large_tnt_primed") at the top where all my blocks get their variables set?

 

So I know I'm supposed to have a RegistryEvent function. I didn't have this before. I made that just now. It looks like this:

@SubscribeEvent
	public static void registerStuff(RegistryEvent.Register<EntityEntry> event) {
	    //event.getRegistry().register([EntityEntry]);
		System.out.println("registerStuff got executed");
		LARGE_TNT_ENTITY.setRegistryName(SuperTNTMod.MODID, "large_tnt_1");
		event.getRegistry().register(LARGE_TNT_ENTITY);
		EntityRegistry.registerModEntity(new ResourceLocation(SuperTNTMod.MODID, "largetnt_1"), EntityTNTLargePrimed.class, "largetnt_1", 0, SuperTNTMod.MODID, 128, 1, false);
	}

I was previously putting the EntityRegistry line in my init. Doing this makes it execute and I get the white cube too though.

 

What I can't find really find from Google is where and what I'm supposed to do with a EntityEntryBuilder statement and how to make one. I do observe that at no point in my current code are EntityLargeTNTPrimed and RenderLargeTNTPrimed linked to each-other in any way and according to common sense, this has to be done. The fact that none of my console comments in the RenderTNTLargePrimed never get executed supports this theory. Perhaps if I knew the correct syntax and intended use of EntityEntryBuilder, I could do this? You told me to register my renderer and put it in my preinit. Is this what EntityEntryBuilder does?

 

Hey but thank you so much for helping so far. I hope I get this working soon.

Edited by Xeraster
Posted

I'm really struggling to grasp an understanding of this EntityEntryBuilder idea here. The best documentation I can find is here: http://maven.thiakil.com/forge-1.12-javadoc/net/minecraftforge/fml/common/registry/EntityEntryBuilder.html

but it's still pretty vague and not very helpful at least to me.

 

Is EntityEntryBuilder a type of variable? Is it a function?

You said EntityRegistry as I'm currently using it doesn't fully do the job. So I've been trying stuff like:

EntityRegistration fff = new EntityRegistry.EntityRegistration(SuperTNTMod.ModContainer, LARGE_TNT_ENTITY.getRegistryName(), LARGE_TNT_ENTITY.getEntityClass(), LARGE_TNT_ENTITY.getName(), 0, 128, 1, false);
		EntityEntryBuilder.create(fff);

which might work if mod container was a variable I knew how to reproduce.

Is this how that is supposed to work? If so, how do I satisfy the mod container variable? Where do I get ModContainer from?

Posted (edited)

Sorry to double post but I finally did get it working!!

Here is what I did:

1. Go to my RenderLargeTNTPrimed class file. On line 86, comment out the line:

doRender(entity, x, y, z, entityYaw, partialTicks);

 

2. In my main classes init() function, put:

RenderingRegistry.registerEntityRenderingHandler(LARGE_TNT_ENTITY.getEntityClass(), new RenderTNTLargePrimed(Minecraft.getMinecraft().getRenderManager()));

 

3. In my client proxy function which has "RegistryEvent.Register<EntityEntry> event", make sure it contains the following code in this particular and very specific order:

LARGE_TNT_ENTITY.setRegistryName(SuperTNTMod.MODID, "large_tnt_1");
		event.getRegistry().register(LARGE_TNT_ENTITY);
		EntityRegistry.registerModEntity(LARGE_TNT_ENTITY.getRegistryName(), LARGE_TNT_ENTITY.getEntityClass(), LARGE_TNT_ENTITY.getName(), 0, SuperTNTMod.MODID, 128, 1, false);

 

4. Make sure this is at the top of whatever class I have the above code in:

public static final EntityEntry LARGE_TNT_ENTITY = new EntityEntry(EntityTNTLargePrimed.class, SuperTNTMod.MODID + ":large_tnt_primed");

 

So there. Now as soon as I figure out how to use this EntityEntryBuilder system that diesieben07 is talking about, it will probably be more efficient but I'm just happy it's working now finally.

Edited by Xeraster
Posted (edited)
On 4/15/2018 at 6:46 AM, diesieben07 said:

but your failure to understand it from looking at the code shows that you are lacking basic understanding of Java. Did you look up the builder pattern like I told you multiple times?

 


EntityEntry entry = EntityEntryBuilder.create()
  .entity(MyEntity.class)
  .id("my_entity", 1)
  .name("mymod.my_entity.name")
  .tracker(range, updateFrequency, sendVelocityUpdates)
  //further settings such as spawning here
  .build();

event.getRegistry().register(entry);

It's really not that hard...

Well I made this mod a long time ago in 1.7.2 back when the structure of Minecraft made more sense and wasn't nearly as cryptic and convoluted, and the stuff that was that bad had much better documentation. Even software development for the friggin Super Nintendo is more straightforward and less cryptic than this, which I know from experience. I've written lots of other software in lots of languages including Java, so say whatever you want. The difficulty I have been having comes from how they've just reinvented the wheel on a number of things having to do with Minecraft's code and adequate documentation for a lot of it just isn't there.

Yes I did look it up. Multiple times. And with slightly different search terms each time. And even went back several pages on Google search, still not finding what I needed.. I couldn't find anything giving me actually helpful or complete enough information so I had to resort to figuring it out myself through trial and error until I came up with a temporary way to get it working myself which just happened to not be the official way that works the best.

This is the first time I have even seen anything close to what you've pasted here and I look forward using this and seeing if I can get it to work like that. Thank you for posting that.

Edited by Xeraster

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

    • Version 1.19 - Forge 41.0.63 I want to create a wolf entity that I can ride, so far it seems to be working, but the problem is that when I get on the wolf, I can’t control it. I then discovered that the issue is that the server doesn’t detect that I’m riding the wolf, so I’m struggling with synchronization. However, it seems to not be working properly. As I understand it, the server receives the packet but doesn’t register it correctly. I’m a bit new to Java, and I’ll try to provide all the relevant code and prints *The comments and prints are translated by chatgpt since they were originally in Spanish* Thank you very much in advance No player is mounted, or the passenger is not a player. No player is mounted, or the passenger is not a player. No player is mounted, or the passenger is not a player. No player is mounted, or the passenger is not a player. No player is mounted, or the passenger is not a player. MountableWolfEntity package com.vals.valscraft.entity; import com.vals.valscraft.network.MountSyncPacket; import com.vals.valscraft.network.NetworkHandler; import net.minecraft.client.Minecraft; import net.minecraft.network.syncher.EntityDataAccessor; import net.minecraft.network.syncher.EntityDataSerializers; import net.minecraft.network.syncher.SynchedEntityData; import net.minecraft.server.MinecraftServer; import net.minecraft.server.level.ServerPlayer; import net.minecraft.world.entity.EntityType; import net.minecraft.world.entity.Mob; import net.minecraft.world.entity.ai.attributes.AttributeSupplier; import net.minecraft.world.entity.ai.attributes.Attributes; import net.minecraft.world.entity.animal.Wolf; import net.minecraft.world.entity.player.Player; import net.minecraft.world.entity.Entity; import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResult; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.Items; import net.minecraft.world.level.Level; import net.minecraft.world.phys.Vec3; import net.minecraftforge.event.TickEvent; import net.minecraftforge.eventbus.api.SubscribeEvent; import net.minecraftforge.network.PacketDistributor; public class MountableWolfEntity extends Wolf { private boolean hasSaddle; private static final EntityDataAccessor<Byte> DATA_ID_FLAGS = SynchedEntityData.defineId(MountableWolfEntity.class, EntityDataSerializers.BYTE); public MountableWolfEntity(EntityType<? extends Wolf> type, Level level) { super(type, level); this.hasSaddle = false; } @Override protected void defineSynchedData() { super.defineSynchedData(); this.entityData.define(DATA_ID_FLAGS, (byte)0); } public static AttributeSupplier.Builder createAttributes() { return Wolf.createAttributes() .add(Attributes.MAX_HEALTH, 20.0) .add(Attributes.MOVEMENT_SPEED, 0.3); } @Override public InteractionResult mobInteract(Player player, InteractionHand hand) { ItemStack itemstack = player.getItemInHand(hand); if (itemstack.getItem() == Items.SADDLE && !this.hasSaddle()) { if (!player.isCreative()) { itemstack.shrink(1); } this.setSaddle(true); return InteractionResult.SUCCESS; } else if (!level.isClientSide && this.hasSaddle()) { player.startRiding(this); MountSyncPacket packet = new MountSyncPacket(true); // 'true' means the player is mounted NetworkHandler.CHANNEL.sendToServer(packet); // Ensure the server handles the packet return InteractionResult.SUCCESS; } return InteractionResult.PASS; } @Override public void travel(Vec3 travelVector) { if (this.isVehicle() && this.getControllingPassenger() instanceof Player) { System.out.println("The wolf has a passenger."); System.out.println("The passenger is a player."); Player player = (Player) this.getControllingPassenger(); // Ensure the player is the controller this.setYRot(player.getYRot()); this.yRotO = this.getYRot(); this.setXRot(player.getXRot() * 0.5F); this.setRot(this.getYRot(), this.getXRot()); this.yBodyRot = this.getYRot(); this.yHeadRot = this.yBodyRot; float forward = player.zza; float strafe = player.xxa; if (forward <= 0.0F) { forward *= 0.25F; } this.flyingSpeed = this.getSpeed() * 0.1F; this.setSpeed((float) this.getAttributeValue(Attributes.MOVEMENT_SPEED) * 1.5F); this.setDeltaMovement(new Vec3(strafe, travelVector.y, forward).scale(this.getSpeed())); this.calculateEntityAnimation(this, false); } else { // The wolf does not have a passenger or the passenger is not a player System.out.println("No player is mounted, or the passenger is not a player."); super.travel(travelVector); } } public boolean hasSaddle() { return this.hasSaddle; } public void setSaddle(boolean hasSaddle) { this.hasSaddle = hasSaddle; } @Override protected void dropEquipment() { super.dropEquipment(); if (this.hasSaddle()) { this.spawnAtLocation(Items.SADDLE); this.setSaddle(false); } } @SubscribeEvent public static void onServerTick(TickEvent.ServerTickEvent event) { if (event.phase == TickEvent.Phase.START) { MinecraftServer server = net.minecraftforge.server.ServerLifecycleHooks.getCurrentServer(); if (server != null) { for (ServerPlayer player : server.getPlayerList().getPlayers()) { if (player.isPassenger() && player.getVehicle() instanceof MountableWolfEntity) { MountableWolfEntity wolf = (MountableWolfEntity) player.getVehicle(); System.out.println("Tick: " + player.getName().getString() + " is correctly mounted on " + wolf); } } } } } private boolean lastMountedState = false; @Override public void tick() { super.tick(); if (!this.level.isClientSide) { // Only on the server boolean isMounted = this.isVehicle() && this.getControllingPassenger() instanceof Player; // Only print if the state changed if (isMounted != lastMountedState) { if (isMounted) { Player player = (Player) this.getControllingPassenger(); // Verify the passenger is a player System.out.println("Server: Player " + player.getName().getString() + " is now mounted."); } else { System.out.println("Server: The wolf no longer has a passenger."); } lastMountedState = isMounted; } } } @Override public void addPassenger(Entity passenger) { super.addPassenger(passenger); if (passenger instanceof Player) { Player player = (Player) passenger; if (!this.level.isClientSide && player instanceof ServerPlayer) { // Send the packet to the server to indicate the player is mounted NetworkHandler.CHANNEL.send(PacketDistributor.PLAYER.with(() -> (ServerPlayer) player), new MountSyncPacket(true)); } } } @Override public void removePassenger(Entity passenger) { super.removePassenger(passenger); if (passenger instanceof Player) { Player player = (Player) passenger; if (!this.level.isClientSide && player instanceof ServerPlayer) { // Send the packet to the server to indicate the player is no longer mounted NetworkHandler.CHANNEL.send(PacketDistributor.PLAYER.with(() -> (ServerPlayer) player), new MountSyncPacket(false)); } } } @Override public boolean isControlledByLocalInstance() { Entity entity = this.getControllingPassenger(); return entity instanceof Player; } @Override public void positionRider(Entity passenger) { if (this.hasPassenger(passenger)) { double xOffset = Math.cos(Math.toRadians(this.getYRot() + 90)) * 0.4; double zOffset = Math.sin(Math.toRadians(this.getYRot() + 90)) * 0.4; passenger.setPos(this.getX() + xOffset, this.getY() + this.getPassengersRidingOffset() + passenger.getMyRidingOffset(), this.getZ() + zOffset); } } } MountSyncPacket package com.vals.valscraft.network; import com.vals.valscraft.entity.MountableWolfEntity; import net.minecraft.network.FriendlyByteBuf; import net.minecraft.server.level.ServerLevel; import net.minecraft.server.level.ServerPlayer; import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.player.Player; import net.minecraftforge.network.NetworkEvent; import java.util.function.Supplier; public class MountSyncPacket { private final boolean isMounted; public MountSyncPacket(boolean isMounted) { this.isMounted = isMounted; } public void encode(FriendlyByteBuf buffer) { buffer.writeBoolean(isMounted); } public static MountSyncPacket decode(FriendlyByteBuf buffer) { return new MountSyncPacket(buffer.readBoolean()); } public void handle(NetworkEvent.Context context) { context.enqueueWork(() -> { ServerPlayer player = context.getSender(); // Get the player from the context if (player != null) { // Verifies if the player has dismounted if (!isMounted) { Entity vehicle = player.getVehicle(); if (vehicle instanceof MountableWolfEntity wolf) { // Logic to remove the player as a passenger wolf.removePassenger(player); System.out.println("Server: Player " + player.getName().getString() + " is no longer mounted."); } } } }); context.setPacketHandled(true); // Marks the packet as handled } } networkHandler package com.vals.valscraft.network; import com.vals.valscraft.valscraft; import net.minecraft.resources.ResourceLocation; import net.minecraftforge.network.NetworkRegistry; import net.minecraftforge.network.simple.SimpleChannel; import net.minecraftforge.network.NetworkEvent; import java.util.function.Supplier; public class NetworkHandler { private static final String PROTOCOL_VERSION = "1"; public static final SimpleChannel CHANNEL = NetworkRegistry.newSimpleChannel( new ResourceLocation(valscraft.MODID, "main"), () -> PROTOCOL_VERSION, PROTOCOL_VERSION::equals, PROTOCOL_VERSION::equals ); public static void init() { int packetId = 0; // Register the mount synchronization packet CHANNEL.registerMessage( packetId++, MountSyncPacket.class, MountSyncPacket::encode, MountSyncPacket::decode, (msg, context) -> msg.handle(context.get()) // Get the context with context.get() ); } }  
    • Do you use features of inventory profiles next (ipnext) or is there a change without it?
    • Remove rubidium - you are already using embeddium, which is a fork of rubidium
  • Topics

×
×
  • Create New...

Important Information

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