Jump to content

Recommended Posts

Posted

Hi , 

 

Im having some troubles working with entities...

 

Here is my custom entity class :

 

package littlemonge.rpgcraft.entity;

import littlemonge.rpgcraft.entity.base.RpgCraftBaseEntity;
import littlemonge.rpgcraft.item.DiamoniteItem;
import littlemonge.rpgcraft.utils.Utils;
import net.minecraft.block.Blocks;
import net.minecraft.entity.EntityType;
import net.minecraft.item.ItemStack;
import net.minecraft.world.World;

public class DiamoniteEntity extends RpgCraftBaseEntity {
	
	public static EntityType<DiamoniteEntity> ENTITY_TYPE;
	
	private int driedProgress = 0;
	
	public DiamoniteEntity(EntityType<? extends DiamoniteEntity> type, World world) {
        super(type, world);
    }

    public DiamoniteEntity(final World w, final double x, final double y, final double z, final ItemStack is) {
        super(ENTITY_TYPE, w, x, y, z, is);
        this.setNoDespawn();
    }

	@Override
	public void tick() {
		super.tick();
		
		final ItemStack itemStack = this.getItem();
		final DiamoniteItem diamonite = (DiamoniteItem) itemStack.getItem();
		
      
		if(this.onGround && (Utils.findBlockUnderEntity(this).equals(Blocks.MAGMA_BLOCK))){
			if(Utils.isClient()) {
				driedProgress++;
			}else {
				driedProgress += 0.5;
			}
		}
		
		if(driedProgress % 10 == 0 ) {
			  ItemStack newItem = diamonite.triggerDry(itemStack.copy());
              this.setItem(newItem);
		}
	}

}

 

Here is where I register the entity :

 

package littlemonge.rpgcraft.init;

import littlemonge.rpgcraft.entity.DiamoniteEntity;
import littlemonge.rpgcraft.utils.Reference;
import net.minecraft.entity.Entity;
import net.minecraft.entity.EntityClassification;
import net.minecraft.entity.EntityType;
import net.minecraftforge.event.RegistryEvent;
import net.minecraftforge.eventbus.api.SubscribeEvent;
import net.minecraftforge.fml.common.Mod;
import net.minecraftforge.registries.ObjectHolder;

@Mod.EventBusSubscriber(modid = Reference.MODID, bus = Mod.EventBusSubscriber.Bus.MOD)
@ObjectHolder(Reference.MODID)
public final class ModEntities {


	@SubscribeEvent
	public static void registerEntitites(RegistryEvent.Register<EntityType<?>> event) {
		init();
		event.getRegistry().registerAll(DiamoniteEntity.ENTITY_TYPE);
	}
	
	private static void init() {
		DiamoniteEntity.ENTITY_TYPE =  createEntityType(EntityType.Builder
				.<DiamoniteEntity>create(DiamoniteEntity::new, EntityClassification.MISC).size(0.25F, 0.25F)
				.setTrackingRange(64).setUpdateInterval(20).setShouldReceiveVelocityUpdates(false), Reference.DIAMONITE_ENTITY);
	}

	@SuppressWarnings("rawtypes")
	public static <T extends Entity> EntityType<T> createEntityType(EntityType.Builder builder, String name) {
		EntityType<T> type = (EntityType<T>) builder.build(Reference.MODID + '.' + name).setRegistryName(name);
		return type;
	}
}

 

And here its the crash :

 

java.lang.NullPointerException: null
	at net.minecraft.client.renderer.entity.EntityRendererManager.shouldRender(EntityRendererManager.java:232) ~[forge-1.15.2-31.0.14_mapped_snapshot_20200131-1.15.1-recomp.jar:?] {re:classloading,pl:accesstransformer:B,pl:runtimedistcleaner:A}
	at net.minecraft.client.renderer.WorldRenderer.getViewVector(WorldRenderer.java:940) ~[forge-1.15.2-31.0.14_mapped_snapshot_20200131-1.15.1-recomp.jar:?] {re:classloading,pl:runtimedistcleaner:A}
	at net.minecraft.client.renderer.GameRenderer.renderWorld(GameRenderer.java:612) ~[forge-1.15.2-31.0.14_mapped_snapshot_20200131-1.15.1-recomp.jar:?] {re:classloading,pl:accesstransformer:B,pl:runtimedistcleaner:A}
	at net.minecraft.client.renderer.GameRenderer.updateCameraAndRender(GameRenderer.java:434) ~[forge-1.15.2-31.0.14_mapped_snapshot_20200131-1.15.1-recomp.jar:?] {re:classloading,pl:accesstransformer:B,pl:runtimedistcleaner:A}
	at net.minecraft.client.Minecraft.runGameLoop(Minecraft.java:957) ~[forge-1.15.2-31.0.14_mapped_snapshot_20200131-1.15.1-recomp.jar:?] {re:classloading,pl:accesstransformer:B,pl:runtimedistcleaner:A}
	at net.minecraft.client.Minecraft.run(Minecraft.java:554) ~[forge-1.15.2-31.0.14_mapped_snapshot_20200131-1.15.1-recomp.jar:?] {re:classloading,pl:accesstransformer:B,pl:runtimedistcleaner:A}
	at net.minecraft.client.main.Main.main(Main.java:177) ~[forge-1.15.2-31.0.14_mapped_snapshot_20200131-1.15.1-recomp.jar:?] {re:classloading,pl:runtimedistcleaner:A}
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_231] {}
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_231] {}
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_231] {}
	at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_231] {}
	at net.minecraftforge.userdev.FMLUserdevClientLaunchProvider.lambda$launchService$0(FMLUserdevClientLaunchProvider.java:55) ~[forge-1.15.2-31.0.14_mapped_snapshot_20200131-1.15.1-recomp.jar:?] {}
	at cpw.mods.modlauncher.LaunchServiceHandlerDecorator.launch(LaunchServiceHandlerDecorator.java:37) [modlauncher-5.0.0-milestone.4.jar:?] {}
	at cpw.mods.modlauncher.LaunchServiceHandler.launch(LaunchServiceHandler.java:54) [modlauncher-5.0.0-milestone.4.jar:?] {}
	at cpw.mods.modlauncher.LaunchServiceHandler.launch(LaunchServiceHandler.java:72) [modlauncher-5.0.0-milestone.4.jar:?] {}
	at cpw.mods.modlauncher.Launcher.run(Launcher.java:81) [modlauncher-5.0.0-milestone.4.jar:?] {}
	at cpw.mods.modlauncher.Launcher.main(Launcher.java:65) [modlauncher-5.0.0-milestone.4.jar:?] {}
	at net.minecraftforge.userdev.LaunchTesting.main(LaunchTesting.java:102) [forge-1.15.2-31.0.14_mapped_snapshot_20200131-1.15.1-recomp.jar:?]

 

Can somebody please help me to find why im having a nullpointer?

 

 

Thanks in advance.

Posted
  On 7/23/2020 at 7:38 AM, littlemonge said:

it is just a custom entity for an object when you throw it on the ground

Expand  

An ItemEntity, Minecraft (or Forge, idk) makes one for your items automatically.

It's sad how much time mods spend saying "x is no longer supported on this forum. Please update to a modern version of Minecraft to receive support".

Posted
  On 7/23/2020 at 7:42 AM, Novârch said:

An ItemEntity, Minecraft (or Forge, idk) makes one for your items automatically.

Expand  

 

Yes, but I want to add some logic to ItemEntity, that's why I created the class. The class "DiamoniteEntity" its the custom ItemEntity for my custom DiamoniteItem

Posted

I'm not sure if you need to create one, but it won't be hard since you said your entity is just another version of ItemEntity (just look into renderer/entity/ItemRenderer).

and use 

RenderingRegistry.registerEntityRenderingHandler(entitytype, rendererf)

to register your renderer

Posted

Here is the renderer

package littlemonge.rpgcraft.render;

import littlemonge.rpgcraft.entity.DiamoniteEntity;
import littlemonge.rpgcraft.utils.ResourceLocationReference;
import net.minecraft.client.renderer.culling.ClippingHelperImpl;
import net.minecraft.client.renderer.entity.EntityRenderer;
import net.minecraft.client.renderer.entity.EntityRendererManager;
import net.minecraft.entity.Entity;
import net.minecraft.util.ResourceLocation;

public class DiamoniteEntityRenderer<T extends Entity> extends EntityRenderer<DiamoniteEntity> {

	public DiamoniteEntityRenderer(EntityRendererManager renderManager) {
		super(renderManager);
	}

	@Override
	public ResourceLocation getEntityTexture(DiamoniteEntity entity) {
		
		return new ResourceLocation(ResourceLocationReference.DIAMONITE_MODEL);
	}

	@Override
	public boolean shouldRender(DiamoniteEntity livingEntityIn, ClippingHelperImpl camera, double camX, double camY,
			double camZ) {
		return false;
	}
}

 

  On 7/23/2020 at 9:14 AM, poopoodice said:

I'm not sure if you need to create one, but it won't be hard since you said your entity is just another version of ItemEntity (just look into renderer/entity/ItemRenderer).

and use 

RenderingRegistry.registerEntityRenderingHandler(entitytype, rendererf)

to register your renderer

Expand  

And this line its not working for me.

Posted
  On 7/23/2020 at 10:52 AM, littlemonge said:

And this line its not working for me.

Expand  

Please don't tell me you copied it word for word.

It's sad how much time mods spend saying "x is no longer supported on this forum. Please update to a modern version of Minecraft to receive support".

Posted
  On 7/23/2020 at 1:47 PM, littlemonge said:

ok no matter, I almost have it, the problem now is that the entity is invisible.

Expand  

Try overriding Entity#createSpawnPacket in your entity and return NetworkHooks#getEntitySpawningPacket from it.

It's sad how much time mods spend saying "x is no longer supported on this forum. Please update to a modern version of Minecraft to receive support".

Posted

firstly:

	@Override
	public boolean shouldRender(DiamoniteEntity livingEntityIn, ClippingHelperImpl camera, double camX, double camY,
			double camZ) {
		return false;
	}

secondly, you don't have any "render" method

 

@Override
public void render(...)

but isn't your entity bsaed on the ItemEntity? See how ItemRenderer does it.

  Quote

ItemEntity (just look into renderer/entity/ItemRenderer)

Expand  

 

Posted
  On 7/23/2020 at 2:57 PM, littlemonge said:

I did what you says but i can only see the hitboxes.

Could it be a problem with the path to the "png" with the texture?

Expand  

To check this, search your log for "FileNotFound" string. Likely will output only FileNotFoundException's stacktraces. All you need is to check comments after each - if minecraft can't find some texture that he needs, there would be a report about it.

 

You will likely find one about version checker file, don't care about that.

Everything said above may be absolutely wrong. No rights reserved.

Posted
  On 7/24/2020 at 10:57 AM, Dzuchun said:

To check this, search your log for "FileNotFound" string. Likely will output only FileNotFoundException's stacktraces. All you need is to check comments after each - if minecraft can't find some texture that he needs, there would be a report about it.

 

You will likely find one about version checker file, don't care about that.

Expand  

Im not having any exception.

Posted

Here is my render Class :

 

package littlemonge.rpgcraft.render;

import com.mojang.blaze3d.matrix.MatrixStack;

import littlemonge.rpgcraft.entity.DiamoniteEntity;
import littlemonge.rpgcraft.utils.ResourceLocationReference;
import net.minecraft.client.renderer.IRenderTypeBuffer;
import net.minecraft.client.renderer.Vector3f;
import net.minecraft.client.renderer.entity.EntityRenderer;
import net.minecraft.client.renderer.entity.EntityRendererManager;
import net.minecraft.util.ResourceLocation;

public class DiamoniteEntityRenderer extends EntityRenderer<DiamoniteEntity> {

	public DiamoniteEntityRenderer(EntityRendererManager renderManagerIn) {
		super(renderManagerIn);
	}

	@Override
	public ResourceLocation getEntityTexture(DiamoniteEntity entity) {
		return new ResourceLocation(ResourceLocationReference.DIAMONITE_MODEL);
	}

	@Override
	public void render(DiamoniteEntity entityIn, float entityYaw, float partialTicks, MatrixStack matrixStackIn,
			IRenderTypeBuffer bufferIn, int packedLightIn) {
		matrixStackIn.push();
		matrixStackIn.scale(1f, 1f, 1f);
		matrixStackIn.translate(0.5d, 0.5D, 0.5D);
		matrixStackIn.rotate(Vector3f.YP.rotationDegrees(360));
		matrixStackIn.pop();
		super.render(entityIn, entityYaw, partialTicks, matrixStackIn, bufferIn, packedLightIn);
	}

}

where is the mistake¿?

Posted (edited)
  On 7/27/2020 at 8:54 AM, littlemonge said:

matrixStackIn.push();

matrixStackIn.scale(1f, 1f, 1f);

matrixStackIn.translate(0.5d, 0.5D, 0.5D);

matrixStackIn.rotate(Vector3f.YP.rotationDegrees(360));

matrixStackIn.pop();

Expand  

This actually renders nothing. Superclass method renders name label, as I understood, so I predict your entity is not rendered at all.

There are two ways how to render things (they do the same, but differ at usage).

 

1) Create a model for your entity. Model should have a separate render method which invokes ModelRenderer#render, that actually does rendering.

Advantage: you may not perform rendering itself; drawback: you'll need to understand how this all works (but that's easy with a ton of examples from vanilla Minecraft and some experimenting).

 

2) Preform rendering with "bare hands" - using GL11 methods directly or some predefined sequences.

Advantage: you may render most mind-blowing things that could ever come to your head; drawback: you'll need to study OpenGL a bit (well, depends on rendering complexity).

 

Read sign.

Edited by Dzuchun

Everything said above may be absolutely wrong. No rights reserved.

  • 3 weeks later...
Posted
  On 7/27/2020 at 12:10 PM, Dzuchun said:

This actually renders nothing. Superclass method renders name label, as I understood, so I predict your entity is not rendered at all.

There are two ways how to render things (they do the same, but differ at usage).

 

1) Create a model for your entity. Model should have a separate render method which invokes ModelRenderer#render, that actually does rendering.

Advantage: you may not perform rendering itself; drawback: you'll need to understand how this all works (but that's easy with a ton of examples from vanilla Minecraft and some experimenting).

 

2) Preform rendering with "bare hands" - using GL11 methods directly or some predefined sequences.

Advantage: you may render most mind-blowing things that could ever come to your head; drawback: you'll need to study OpenGL a bit (well, depends on rendering complexity).

 

Read sign.

Expand  

Can you bring me an example for method 1?

Thanks a lot for answering

 

Posted (edited)
  On 8/14/2020 at 8:21 AM, littlemonge said:

Can you bring me an example for method 1?

Expand  

CowModel class and, I think, all the classes implementing EntityModel class (not sure)

 

Also, check blockbench.

Edited by Dzuchun

Everything said above may be absolutely wrong. No rights reserved.

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

    • Recovering stolen Bitcoin can feel like an insurmountable challenge, especially after falling victim to scams that promise high returns with little investment. My journey began with excitement when I first learned about Bitcoin mining pools. The idea of earning substantial profits from a modest investment was enticing. I was encouraged to invest $5,200, and soon found myself caught in a web of endless demands for more money to access my funds. As time went on, I paid out hundreds of thousands of dollars, believing that each payment would finally unlock my investments. However, the requests never ceased, and I soon realized I was trapped in a scam. The weight of losing $826,000 worth of Bitcoin was unbearable, and I felt utterly helpless. I reached out to authorities, but their responses were disheartening, leaving me feeling even more isolated in my struggle. In my desperation, I even went to pray, seeking guidance and hope in what felt like a hopeless situation. I poured my heart out, asking for a sign or a way to recover my lost funds. It was during this time of reflection that I began searching for solutions online, hoping to find a way to recover my investments. That’s when I stumbled upon RAPID DIGITAL RECOVERY. At first, I was cynical after all, I had already been deceived so many times. However, I decided to reach out and share my story. The team at RAPID DIGITAL RECOVERY was understanding and compassionate, assuring me they had the expertise to help me recover my stolen Bitcoin. Within hours of providing them with the necessary information, I began to see progress. They guided me through the recovery process, keeping me informed every step of the way. It was surreal to watch as they worked diligently to trace my funds and navigate the complexities of the blockchain. To my astonishment, I received confirmation that my Bitcoin had been successfully recovered. The relief and joy I felt were indescribable. I had almost given up hope, but RAPID DIGITAL RECOVERY proved to be the lifeline I desperately needed. If you find yourself in a similar situation, I urge you to seek help from Reputable team at RAPID DIGITAL RECOVERY.  
    • https://mclo.gs/9Byd16j Hi, I've had my BetterMC world for a couple days now (1.19.2 vers & Fabric loader) but recently whenever I try to open the profile the minecraft launcher crashes and provides this error code. I've checked both this forum and google and haven't found any similar problems or solution to my problem. I'm not the best at reading crash logs but I gathered that there's an issue with fabric possibly, so I re-downloaded the same one on the modpack, then the latest version for 1.19.2 fabric and the issue still occurred. What can I do now?
    • it works now but idk why lmao. i removed terrablender and it didnt work. i then left it for a couple of days and, when i came back, updated the mods that needed updating because "what's the worst that could happen". i then tried launching it and now it works. i genuenly have no clue what i did to make it work, othen than updating the mods. so, thanks for your help
    • Add the crash-report or latest.log (logs-folder) with sites like https://mclo.gs/ and paste the link to it here  
  • Topics

  • Who's Online (See full list)

×
×
  • Create New...

Important Information

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