Posted July 22, 20205 yr 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.
July 23, 20205 yr Author Can't use minecraft basic renderer? The entity is very simple, it is just a custom entity for an object when you throw it on the ground.
July 23, 20205 yr 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".
July 23, 20205 yr Author 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
July 23, 20205 yr The reason I said it is because I don't see you registering your renderer anywhere.
July 23, 20205 yr 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
July 23, 20205 yr Author 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.
July 23, 20205 yr 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".
July 23, 20205 yr Author 31 minutes ago, littlemonge said: have I to impl "IRenderFactory"? ok no matter, I almost have it, the problem now is that the entity is invisible.
July 23, 20205 yr 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".
July 23, 20205 yr Author 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?
July 23, 20205 yr 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)
July 24, 20205 yr 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.
July 24, 20205 yr Author 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.
July 27, 20205 yr Author 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¿?
July 27, 20205 yr 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 July 27, 20205 yr by Dzuchun Everything said above may be absolutely wrong. No rights reserved.
August 14, 20205 yr Author 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
August 19, 20205 yr 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 August 19, 20205 yr by Dzuchun Everything said above may be absolutely wrong. No rights reserved.
August 19, 20205 yr Author The entity i am trying to render it just an entity like ItemEntity, it is an entity that is created when player drops an item. There is not a way to do it easy?
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.