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
2 minutes ago, littlemonge said:

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

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
Just now, Novârch said:

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

 

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;
	}
}

 

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

And this line its not working for me.

Posted
4 minutes ago, littlemonge said:

And this line its not working for me.

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
28 minutes ago, littlemonge said:

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

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)

 

Posted
19 hours ago, 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?

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
54 minutes ago, 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.

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)
3 hours ago, 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();

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 2: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.

Can you bring me an example for method 1?

Thanks a lot for answering

 

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

Can you bring me an example for method 1?

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

    • When I first heard about Bitcoin back in 2018, I was skeptical. The idea of a decentralized, digital currency seemed too good to be true. But I was intrigued as I learned more about the technology behind it and its potential. I started small, investing just a few hundred dollars, dipping my toes into the cryptocurrency waters. At first, it was exhilarating to watch the value of my investment grow exponentially. I felt like I was part of the future, an early adopter of this revolutionary new asset. But that euphoria was short-lived. One day, I logged into my digital wallet only to find it empty - my Bitcoin had vanished without a trace. It turned out that the online exchange I had trusted had been hacked, and my funds were stolen. I was devastated, both financially and emotionally. All the potential I had seen in Bitcoin was tainted by the harsh reality that with decentralization came a lack of regulation and oversight. My hard-earned money was gone, lost to the ether of the digital world. This experience taught me a painful lesson about the price of trust in the uncharted territory of cryptocurrency. While the technology holds incredible promise, the risks can be catastrophic if you don't approach it with extreme caution. My Bitcoin investment gamble had failed, and I was left to pick up the pieces, wiser but poorer for having placed my faith in the wrong hands. My sincere appreciation goes to MUYERN TRUST HACKER. You are my hero in recovering my lost funds. Send a direct m a i l ( muyerntrusted ( @ ) mail-me ( . )c o m ) or message on whats app : + 1 ( 4-4-0 ) ( 3 -3 -5 ) ( 0-2-0-5 )
    • You could try posting a log (if there is no log at all, it may be the launcher you are using, the FAQ may have info on how to enable the log) as described in the FAQ, however this will probably need to be reported to/remedied by the mod author.
    • So me and a couple of friends are playing with a shitpost mod pack and one of the mods in the pack is corail tombstone and for some reason there is a problem with it, where on death to fire the player will get kicked out of the server and the tombstone will not spawn basically deleting an entire inventory, it doesn't matter what type of fire it is, whether it's from vanilla fire/lava, or from modded fire like ice&fire/lycanites and it's common enough to where everyone on the server has experienced at least once or twice and it doesn't give any crash log. a solution to this would be much appreciated thank you!
    • It is 1.12.2 - I have no idea if there is a 1.12 pack
  • Topics

×
×
  • Create New...

Important Information

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