Jump to content

zapata

Members
  • Posts

    10
  • Joined

  • Last visited

Everything posted by zapata

  1. [EDIT] I just put this in the render class. @Override protected ResourceLocation getEntityTexture(EntityGolemObsidian entity) { if(entity.isLavaForm()) { if (entity.ticksExisted % 3 == 0) { this.textureIndex--; } if (textureIndex == -1) { textureIndex = 15; } return golemLavaTextures[textureIndex]; } else { return golemObsidianTexture; } } [OP] Hello. I have an entity where I would like lava to appear to be flowing down its body. I have tried to google every form of "forge animate entity texture" and have only seen threads where item and block textures are animated, or the model is animated. I have created a texture for each frame of the animation and my idea is to render one frame every or every other tick. I don't know how to tell Minecraft to render a new texture every tick. How do I do so? Or is there another more efficient manner of doing so? The render class https://github.com/EstebanZapata/ObsidianTools/blob/mob/src/main/java/com/estebanzapata/obsidiantools/client/renderer/entity/RenderGolemObsidian.java public class RenderGolemObsidian extends RenderLiving<EntityGolemObsidian> { // private static final ResourceLocation[] golemLavaTextures = new ResourceLocation[16]; private static final ResourceLocation golemObsidianTexture = new ResourceLocation(Reference.RESOURCE_PREFIX + "textures/entity/golemObsidian.png"); // private static final ResourceLocation golemLavaTexture = new ResourceLocation(Reference.RESOURCE_PREFIX + "textures/entity/golemLava.png") public RenderGolemObsidian(RenderManager rendermanagerIn, ModelBase modelIn, float shadowSizeIn) { super(rendermanagerIn, modelIn, shadowSizeIn); //this.initLavaTextures(); } /*protected void initLavaTextures() { for(int i = 0; i < golemLavaTextures.length; i++) { golemLavaTextures[i] = new ResourceLocation(Reference.RESOURCE_PREFIX + "textures/entity/golemLava" + i + ".png"); } }*/ @Override protected ResourceLocation getEntityTexture(EntityGolemObsidian entity) { return golemObsidianTexture; } protected void rotateCorpse(EntityGolemObsidian bat, float p_77043_2_, float p_77043_3_, float partialTicks) { super.rotateCorpse(bat, p_77043_2_, p_77043_3_, partialTicks); if ((double)bat.limbSwingAmount >= 0.01D) { float f = 13.0F; float f1 = bat.limbSwing - bat.limbSwingAmount * (1.0F - partialTicks) + 6.0F; float f2 = (Math.abs(f1 % f - f * 0.5F) - f * 0.25F) / (f * 0.25F); GlStateManager.rotate(6.5F * f2, 0.0F, 0.0F, 1.0F); } } } Client proxy https://github.com/EstebanZapata/ObsidianTools/blob/mob/src/main/java/com/estebanzapata/obsidiantools/proxy/ClientProxy.java public class ClientProxy extends CommonProxy { public void preInit(FMLPreInitializationEvent event) { super.preInit(event); RenderingRegistry.registerEntityRenderingHandler(EntityGolemObsidian.class, new IRenderFactory<EntityGolemObsidian>() { @Override public Render<? super EntityGolemObsidian> createRenderFor(RenderManager manager) { return new RenderGolemObsidian(manager, new ModelGolemObsidian(), 0.5f); } }); } public void init(FMLInitializationEvent event) { super.init(event); ItemsRender.init(); BlocksRender.init(); } public void postInit(FMLPostInitializationEvent event) { super.postInit(event); } }
  2. Some other checks is what I thought as well. Wouldn't setting the entity be persistent or false canDespawn be bad practice? If the player is 1000 blocks away and it cannot die, wouldn't it keep the chunk active and taking up memory? But anyways, I uncommented the rest of the method and upped the frequency and it is actually spawning now, so perhaps it was an issue of too low frequency. I am not sure how frequent is adequate though. I would like it to be less than other mobs such as skeletons and zombies because it is a very powerful enemy. Is there anywhere I can find the frequencies of the other mobs as used in EntityRegistry.registerModEntity(entityClass, entityName, id, modInstance, weightedProbability, ...)? Also, thanks for the spawn egg advice.
  3. I ended up commenting out the majority of the getCanSpawnHere(). It is now public boolean getCanSpawnHere() { BlockPos blockPos = new BlockPos(this.posX, this.getEntityBoundingBox().minY, this.posZ); System.out.println("Trying to spawn at " + blockPos.getX() + " " + blockPos.getY() + " " + blockPos.getZ()); boolean canSpawn = super.getCanSpawnHere(); System.out.println("Can it spawn? " + canSpawn); return canSpawn; } I can actually see the entities spawned now. It seems that the print in getCanSpawnHere() is not called frequently because I see few prints from it. But the print inside the handler is spammed in my console. [21:02:19] [server thread/INFO]: [com.estebanzapata.obsidiantools.entity.EntityGolemObsidian:getCanSpawnHere:181]: Trying to spawn at -10 66 348 [21:02:19] [server thread/INFO]: [com.estebanzapata.obsidiantools.entity.EntityGolemObsidian:getCanSpawnHere:184]: Can it spawn? false [21:02:19] [server thread/INFO]: [com.estebanzapata.obsidiantools.handler.TestSpawnHandler:test:15]: SPAWNED AT -10.5 66.0 347.5 [21:02:19] [server thread/INFO]: [com.estebanzapata.obsidiantools.entity.EntityGolemObsidian:getCanSpawnHere:181]: Trying to spawn at -11 66 347 [21:02:19] [server thread/INFO]: [com.estebanzapata.obsidiantools.entity.EntityGolemObsidian:getCanSpawnHere:184]: Can it spawn? false [21:02:19] [server thread/INFO]: [com.estebanzapata.obsidiantools.handler.TestSpawnHandler:test:15]: SPAWNED AT -14.5 66.0 351.5 [21:02:19] [server thread/INFO]: [com.estebanzapata.obsidiantools.entity.EntityGolemObsidian:getCanSpawnHere:181]: Trying to spawn at -15 66 351 [21:02:19] [server thread/INFO]: [com.estebanzapata.obsidiantools.entity.EntityGolemObsidian:getCanSpawnHere:184]: Can it spawn? false [21:02:19] [server thread/INFO]: [com.estebanzapata.obsidiantools.handler.TestSpawnHandler:test:15]: SPAWNED AT -13.5 66.0 355.5 [21:02:19] [server thread/INFO]: [com.estebanzapata.obsidiantools.entity.EntityGolemObsidian:getCanSpawnHere:181]: Trying to spawn at -14 66 355 [21:02:19] [server thread/INFO]: [com.estebanzapata.obsidiantools.entity.EntityGolemObsidian:getCanSpawnHere:184]: Can it spawn? true [21:02:19] [server thread/INFO]: [com.estebanzapata.obsidiantools.handler.TestSpawnHandler:test:15]: SPAWNED AT -13.5 4.0 355.5 [21:02:20] [server thread/INFO]: [com.estebanzapata.obsidiantools.handler.TestSpawnHandler:test:15]: SPAWNED AT 73.78815 32.0 310.31525 [21:02:21] [server thread/INFO]: [com.estebanzapata.obsidiantools.handler.TestSpawnHandler:test:15]: SPAWNED AT -13.5 66.0 355.5 [21:02:22] [server thread/INFO]: [com.estebanzapata.obsidiantools.handler.TestSpawnHandler:test:15]: SPAWNED AT 73.78815 32.0 310.31525 [21:02:22] [server thread/INFO]: [com.estebanzapata.obsidiantools.handler.TestSpawnHandler:test:15]: SPAWNED AT -13.5 66.0 355.5 [21:02:23] [server thread/INFO]: [com.estebanzapata.obsidiantools.handler.TestSpawnHandler:test:15]: SPAWNED AT 73.78815 32.0 310.31525 [21:02:24] [server thread/INFO]: [com.estebanzapata.obsidiantools.handler.TestSpawnHandler:test:15]: SPAWNED AT -13.5 66.0 355.5 [21:02:25] [server thread/INFO]: [com.estebanzapata.obsidiantools.handler.TestSpawnHandler:test:15]: SPAWNED AT 73.78815 32.0 310.31525 [21:02:25] [server thread/INFO]: [com.estebanzapata.obsidiantools.handler.TestSpawnHandler:test:15]: SPAWNED AT -13.5 66.0 355.5 [21:02:27] [server thread/INFO]: [com.estebanzapata.obsidiantools.handler.TestSpawnHandler:test:15]: SPAWNED AT 73.78815 32.0 310.31525 [21:02:27] [server thread/INFO]: [com.estebanzapata.obsidiantools.handler.TestSpawnHandler:test:15]: SPAWNED AT -13.5 66.0 355.5 [21:02:28] [server thread/INFO]: [com.estebanzapata.obsidiantools.handler.TestSpawnHandler:test:15]: SPAWNED AT 73.78815 32.0 310.31525 [21:02:29] [server thread/INFO]: [com.estebanzapata.obsidiantools.handler.TestSpawnHandler:test:15]: SPAWNED AT -13.5 66.0 355.5 [21:02:30] [server thread/INFO]: [com.estebanzapata.obsidiantools.handler.TestSpawnHandler:test:15]: SPAWNED AT 73.78815 32.0 310.31525 [21:02:30] [server thread/INFO]: [com.estebanzapata.obsidiantools.handler.TestSpawnHandler:test:15]: SPAWNED AT -13.5 66.0 355.5 [21:02:31] [server thread/INFO]: [com.estebanzapata.obsidiantools.handler.TestSpawnHandler:test:15]: SPAWNED AT 73.78815 32.0 310.31525 [21:02:32] [server thread/INFO]: [com.estebanzapata.obsidiantools.handler.TestSpawnHandler:test:15]: SPAWNED AT -13.5 66.0 355.5 [21:02:33] [server thread/INFO]: [com.estebanzapata.obsidiantools.handler.TestSpawnHandler:test:15]: SPAWNED AT 73.78815 32.0 310.31525 [21:02:33] [server thread/INFO]: [com.estebanzapata.obsidiantools.handler.TestSpawnHandler:test:15]: SPAWNED AT -13.5 66.0 355.5 [21:02:35] [server thread/INFO]: [com.estebanzapata.obsidiantools.handler.TestSpawnHandler:test:15]: SPAWNED AT 73.78815 32.0 310.31525 [21:02:35] [server thread/INFO]: [Player510: Teleported Player510 to -12.5, 66.0, 355.5] [21:02:35] [Client thread/INFO]: [CHAT] Teleported Player510 to -12.5, 66.0, 355.5 [21:02:36] [server thread/INFO]: [com.estebanzapata.obsidiantools.handler.TestSpawnHandler:test:15]: SPAWNED AT 73.78815 32.0 310.31525 [21:02:36] [server thread/INFO]: [com.estebanzapata.obsidiantools.handler.TestSpawnHandler:test:15]: SPAWNED AT 64.01653 67.0 404.09534 [21:02:38] [server thread/INFO]: [com.estebanzapata.obsidiantools.handler.TestSpawnHandler:test:15]: SPAWNED AT 73.78815 32.0 310.31525 [21:02:38] [server thread/INFO]: [com.estebanzapata.obsidiantools.handler.TestSpawnHandler:test:15]: SPAWNED AT 64.01653 67.0 404.09534 [21:02:39] [server thread/INFO]: [com.estebanzapata.obsidiantools.handler.TestSpawnHandler:test:15]: SPAWNED AT 73.78815 32.0 310.31525 [21:02:39] [server thread/INFO]: [com.estebanzapata.obsidiantools.handler.TestSpawnHandler:test:15]: SPAWNED AT 64.01653 67.0 404.09534 [21:02:41] [server thread/INFO]: [com.estebanzapata.obsidiantools.handler.TestSpawnHandler:test:15]: SPAWNED AT 73.78815 32.0 310.31525 [21:02:41] [server thread/INFO]: [com.estebanzapata.obsidiantools.handler.TestSpawnHandler:test:15]: SPAWNED AT 64.01653 67.0 404.09534 [21:02:42] [server thread/INFO]: [Player510: Teleported Player510 to 64.5, 67.0, 404.5] [21:02:43] [Client thread/INFO]: [CHAT] Teleported Player510 to 64.5, 67.0, 404.5 [21:02:43] [server thread/INFO]: [com.estebanzapata.obsidiantools.handler.TestSpawnHandler:test:15]: SPAWNED AT 73.78815 32.0 310.31525 [21:02:44] [server thread/INFO]: [com.estebanzapata.obsidiantools.handler.TestSpawnHandler:test:15]: SPAWNED AT -13.5 66.0 355.5 [21:02:44] [server thread/INFO]: [com.estebanzapata.obsidiantools.handler.TestSpawnHandler:test:15]: SPAWNED AT 73.78815 32.0 310.31525 [21:02:46] [server thread/INFO]: [com.estebanzapata.obsidiantools.handler.TestSpawnHandler:test:15]: SPAWNED AT -13.5 66.0 355.5 [21:02:46] [server thread/INFO]: [com.estebanzapata.obsidiantools.handler.TestSpawnHandler:test:15]: SPAWNED AT 73.78815 32.0 310.31525 [21:02:47] [server thread/INFO]: [com.estebanzapata.obsidiantools.handler.TestSpawnHandler:test:15]: SPAWNED AT -13.5 66.0 355.5 [21:02:48] [server thread/INFO]: [com.estebanzapata.obsidiantools.handler.TestSpawnHandler:test:15]: SPAWNED AT 73.78815 32.0 310.31525 I want the entities to spawn deep within caves, thus the reason for >= getSeaLevel and canSeeSky(). I will try uncommenting the method and teleporting around.
  4. [EDIT] Upped spawn frequency thanks to coolAlias [OP] Hello. I created a custom hostile entity and have registered it to spawn in the forest biome for testing. I included print statements in the entity getCanSpawnHere() method to print where it has spawned. However, when I teleport to the locations where it has supposedly spawned, nothing is there. I then created a LivingSpawnEvent handler and included a print statement there as well. The console prints from both the handler and the entity class match, but nothing is there when I teleport to the coordinates. Therefore I presume it is not actually spawning. The difficulty is on easy. What do? Inside EntityGolemObsidian https://github.com/EstebanZapata/ObsidianTools/blob/mob/src/main/java/com/estebanzapata/obsidiantools/entity/EntityGolemObsidian.java public boolean getCanSpawnHere() { BlockPos blockPos = new BlockPos(this.posX, this.getEntityBoundingBox().minY, this.posZ); System.out.println("Trying to spawn at " + blockPos.getX() + " " + blockPos.getY() + " " + blockPos.getZ()); if (blockPos.getY() >= this.worldObj.getSeaLevel() || this.worldObj.canSeeSky(blockPos)) { return false; } else { boolean canSpawn = super.getCanSpawnHere(); if(canSpawn) { System.out.println("Spawned at " + blockPos.getX() + " " + blockPos.getY() + " " + blockPos.getZ()); } return canSpawn; } } Inside the handler https://github.com/EstebanZapata/ObsidianTools/blob/mob/src/main/java/com/estebanzapata/obsidiantools/handler/TestSpawnHandler.java public class TestSpawnHandler { @SubscribeEvent public void test(LivingSpawnEvent event) { if (event.getEntityLiving() instanceof EntityGolemObsidian) { System.out.println("Spawned at " + event.getX() + " " + event.getY() + " " + event.getZ()); } } } Register the entity https://github.com/EstebanZapata/ObsidianTools/blob/mob/src/main/java/com/estebanzapata/obsidiantools/init/ModEntities.java public class ModEntities { public static void init() { registerModEntityWithEgg(EntityGolemObsidian.class, "golemObsidian", 0x3F5505, 0x4E6414); EntityRegistry.addSpawn(EntityGolemObsidian.class, 6, 1, 1, EnumCreatureType.MONSTER, Biomes.forest); } public static void registerModEntityWithEgg(Class entityClass, String entityName, int eggColor, int eggSpotsColor) { int id = 0; EntityRegistry.registerModEntity(entityClass, entityName, id++, ObsidianTools.instance, 80, 3, false); EntityRegistry.registerEgg(entityClass, eggColor, eggSpotsColor); } } Register the handler and entity from CommonProxy https://github.com/EstebanZapata/ObsidianTools/blob/mob/src/main/java/com/estebanzapata/obsidiantools/proxy/CommonProxy.java public class CommonProxy implements IProxy { public void preInit(FMLPreInitializationEvent event) { ModItems.init(); ModBlocks.init(); } public void init(FMLInitializationEvent event) { MinecraftForge.EVENT_BUS.register(new ConfigurationHandler()); ModRecipes.init(); ModEntities.init(); } public void postInit(FMLPostInitializationEvent event) { MinecraftForge.EVENT_BUS.register(new ObsidianArmorHandler()); MinecraftForge.EVENT_BUS.register(new TestSpawnHandler()); } }
  5. I looked at the Forge issues on Github and people had already posted about my issue. Lex said that he thought it had been fixed. So I realized it might help if I updated to the latest version of Forge. Lo and behold it works. Derp. Thank you for your help, as well as all other repliers.
  6. Yep, I did change the attack damage attribute value. The world I was testing in does not load. I loaded a different one, took a spawn egg from the creative inventory and spawned it. The game does not crash but nothing spawns. The console displays [10:24:22] [server thread/ERROR]: "Silently" catching entity tracking error. net.minecraft.util.ReportedException: Adding entity to track at net.minecraft.entity.EntityTracker.addEntityToTracker(EntityTracker.java:249) [EntityTracker.class:?] at net.minecraftforge.fml.common.registry.EntityRegistry.tryTrackingEntity(EntityRegistry.java:467) [EntityRegistry.class:?] at net.minecraft.entity.EntityTracker.trackEntity(EntityTracker.java:78) [EntityTracker.class:?] at net.minecraft.world.WorldManager.onEntityAdded(WorldManager.java:38) [WorldManager.class:?] at net.minecraft.world.World.onEntityAdded(World.java:1221) [World.class:?] at net.minecraft.world.WorldServer.onEntityAdded(WorldServer.java:1199) [WorldServer.class:?] at net.minecraft.world.World.spawnEntityInWorld(World.java:1212) [World.class:?] at net.minecraft.world.WorldServer.spawnEntityInWorld(WorldServer.java:1145) [WorldServer.class:?] at net.minecraft.item.ItemMonsterPlacer.spawnCreature(ItemMonsterPlacer.java:227) [itemMonsterPlacer.class:?] at net.minecraft.item.ItemMonsterPlacer.onItemUse(ItemMonsterPlacer.java:99) [itemMonsterPlacer.class:?] at net.minecraftforge.common.ForgeHooks.onPlaceItemIntoWorld(ForgeHooks.java:740) [ForgeHooks.class:?] at net.minecraft.item.ItemStack.onItemUse(ItemStack.java:155) [itemStack.class:?] at net.minecraft.server.management.PlayerInteractionManager.processRightClickBlock(PlayerInteractionManager.java:477) [PlayerInteractionManager.class:?] at net.minecraft.network.NetHandlerPlayServer.processRightClickBlock(NetHandlerPlayServer.java:706) [NetHandlerPlayServer.class:?] at net.minecraft.network.play.client.CPacketPlayerTryUseItem.processPacket(CPacketPlayerTryUseItem.java:68) [CPacketPlayerTryUseItem.class:?] at net.minecraft.network.play.client.CPacketPlayerTryUseItem.processPacket(CPacketPlayerTryUseItem.java:13) [CPacketPlayerTryUseItem.class:?] at net.minecraft.network.PacketThreadUtil$1.run(PacketThreadUtil.java:15) [PacketThreadUtil$1.class:?] at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [?:1.8.0_73] at java.util.concurrent.FutureTask.run(FutureTask.java:266) [?:1.8.0_73] at net.minecraft.util.Util.runTask(Util.java:23) [util.class:?] at net.minecraft.server.MinecraftServer.updateTimeLightAndEntities(MinecraftServer.java:738) [MinecraftServer.class:?] at net.minecraft.server.MinecraftServer.tick(MinecraftServer.java:683) [MinecraftServer.class:?] at net.minecraft.server.integrated.IntegratedServer.tick(IntegratedServer.java:155) [integratedServer.class:?] at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:532) [MinecraftServer.class:?] at java.lang.Thread.run(Thread.java:745) [?:1.8.0_73] Caused by: io.netty.handler.codec.EncoderException: java.lang.NullPointerException at io.netty.handler.codec.MessageToMessageEncoder.write(MessageToMessageEncoder.java:107) ~[MessageToMessageEncoder.class:4.0.23.Final] at io.netty.handler.codec.MessageToMessageCodec.write(MessageToMessageCodec.java:116) ~[MessageToMessageCodec.class:4.0.23.Final] at io.netty.channel.AbstractChannelHandlerContext.invokeWrite(AbstractChannelHandlerContext.java:658) ~[AbstractChannelHandlerContext.class:4.0.23.Final] at io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:716) ~[AbstractChannelHandlerContext.class:4.0.23.Final] at io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:651) ~[AbstractChannelHandlerContext.class:4.0.23.Final] at io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:637) ~[AbstractChannelHandlerContext.class:4.0.23.Final] at io.netty.channel.DefaultChannelPipeline.write(DefaultChannelPipeline.java:880) ~[DefaultChannelPipeline.class:4.0.23.Final] at io.netty.channel.AbstractChannel.write(AbstractChannel.java:230) ~[AbstractChannel.class:4.0.23.Final] at io.netty.channel.embedded.EmbeddedChannel.writeOutbound(EmbeddedChannel.java:195) ~[EmbeddedChannel.class:4.0.23.Final] at net.minecraftforge.fml.common.network.FMLEmbeddedChannel.generatePacketFrom(FMLEmbeddedChannel.java:50) ~[FMLEmbeddedChannel.class:?] at net.minecraftforge.fml.common.network.internal.FMLNetworkHandler.getEntitySpawningPacket(FMLNetworkHandler.java:124) ~[FMLNetworkHandler.class:?] at net.minecraft.entity.EntityTrackerEntry.createSpawnPacket(EntityTrackerEntry.java:500) ~[EntityTrackerEntry.class:?] at net.minecraft.entity.EntityTrackerEntry.updatePlayerEntity(EntityTrackerEntry.java:389) ~[EntityTrackerEntry.class:?] at net.minecraft.entity.EntityTrackerEntry.updatePlayerEntities(EntityTrackerEntry.java:489) ~[EntityTrackerEntry.class:?] at net.minecraft.entity.EntityTracker.addEntityToTracker(EntityTracker.java:223) ~[EntityTracker.class:?] ... 24 more Caused by: java.lang.NullPointerException at net.minecraftforge.fml.common.network.internal.FMLMessage$EntitySpawnMessage.toBytes(FMLMessage.java:143) ~[FMLMessage$EntitySpawnMessage.class:?] at net.minecraftforge.fml.common.network.internal.FMLRuntimeCodec.encodeInto(FMLRuntimeCodec.java:23) ~[FMLRuntimeCodec.class:?] at net.minecraftforge.fml.common.network.internal.FMLRuntimeCodec.encodeInto(FMLRuntimeCodec.java:13) ~[FMLRuntimeCodec.class:?] at net.minecraftforge.fml.common.network.FMLIndexedMessageToMessageCodec.encode(FMLIndexedMessageToMessageCodec.java:55) ~[FMLIndexedMessageToMessageCodec.class:?] at io.netty.handler.codec.MessageToMessageCodec$1.encode(MessageToMessageCodec.java:67) ~[MessageToMessageCodec$1.class:4.0.23.Final] at io.netty.handler.codec.MessageToMessageEncoder.write(MessageToMessageEncoder.java:89) ~[MessageToMessageEncoder.class:4.0.23.Final] at io.netty.handler.codec.MessageToMessageCodec.write(MessageToMessageCodec.java:116) ~[MessageToMessageCodec.class:4.0.23.Final] at io.netty.channel.AbstractChannelHandlerContext.invokeWrite(AbstractChannelHandlerContext.java:658) ~[AbstractChannelHandlerContext.class:4.0.23.Final] at io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:716) ~[AbstractChannelHandlerContext.class:4.0.23.Final] at io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:651) ~[AbstractChannelHandlerContext.class:4.0.23.Final] at io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:637) ~[AbstractChannelHandlerContext.class:4.0.23.Final] at io.netty.channel.DefaultChannelPipeline.write(DefaultChannelPipeline.java:880) ~[DefaultChannelPipeline.class:4.0.23.Final] at io.netty.channel.AbstractChannel.write(AbstractChannel.java:230) ~[AbstractChannel.class:4.0.23.Final] at io.netty.channel.embedded.EmbeddedChannel.writeOutbound(EmbeddedChannel.java:195) ~[EmbeddedChannel.class:4.0.23.Final] at net.minecraftforge.fml.common.network.FMLEmbeddedChannel.generatePacketFrom(FMLEmbeddedChannel.java:50) ~[FMLEmbeddedChannel.class:?] at net.minecraftforge.fml.common.network.internal.FMLNetworkHandler.getEntitySpawningPacket(FMLNetworkHandler.java:124) ~[FMLNetworkHandler.class:?] at net.minecraft.entity.EntityTrackerEntry.createSpawnPacket(EntityTrackerEntry.java:500) ~[EntityTrackerEntry.class:?] at net.minecraft.entity.EntityTrackerEntry.updatePlayerEntity(EntityTrackerEntry.java:389) ~[EntityTrackerEntry.class:?] at net.minecraft.entity.EntityTrackerEntry.updatePlayerEntities(EntityTrackerEntry.java:489) ~[EntityTrackerEntry.class:?] at net.minecraft.entity.EntityTracker.addEntityToTracker(EntityTracker.java:223) ~[EntityTracker.class:?] ... 24 more I quit to the main menu and loaded the world again and it let me in. I quit the game entirely and loaded the world again, and it still works. I tried spawning the entity but it still gives me the same error as above. I tried loading the previous world but the game still crashes upon load. The difference between the two is that in the world that crashes, I tried spawning the entity inside a cramped cavern, while in the other one, it is a flat world and I am on the surface. I have no idea how to fix this error. Of course.
  7. Thanks, I changed it to renderModEntityWithEgg(EntityGolemObsidian.class, "golemObsidian", ...); When I tried to spawn the entity, I received another error stating that one of the attributes of the entity was already registered, referring to getAttributeMap().registerAttribute(SharedMonsterAttributes.ATTACK_DAMAGE); inside EntityGolemObsidian, so I removed that line. I then got a ReportedException and a pig did not spawn this time. I relaunched the game to get a clean log and stack trace to post, but now the game crashes when I attempt to load the world. Crash log: ---- Minecraft Crash Report ---- // I'm sorry, Dave. Time: 4/2/16 10:00 PM Description: Exception ticking world io.netty.handler.codec.EncoderException: java.lang.NullPointerException at io.netty.handler.codec.MessageToMessageEncoder.write(MessageToMessageEncoder.java:107) at io.netty.handler.codec.MessageToMessageCodec.write(MessageToMessageCodec.java:116) at io.netty.channel.AbstractChannelHandlerContext.invokeWrite(AbstractChannelHandlerContext.java:658) at io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:716) at io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:651) at io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:637) at io.netty.channel.DefaultChannelPipeline.write(DefaultChannelPipeline.java:880) at io.netty.channel.AbstractChannel.write(AbstractChannel.java:230) at io.netty.channel.embedded.EmbeddedChannel.writeOutbound(EmbeddedChannel.java:195) at net.minecraftforge.fml.common.network.FMLEmbeddedChannel.generatePacketFrom(FMLEmbeddedChannel.java:50) at net.minecraftforge.fml.common.network.internal.FMLNetworkHandler.getEntitySpawningPacket(FMLNetworkHandler.java:124) at net.minecraft.entity.EntityTrackerEntry.createSpawnPacket(EntityTrackerEntry.java:500) at net.minecraft.entity.EntityTrackerEntry.updatePlayerEntity(EntityTrackerEntry.java:389) at net.minecraft.entity.EntityTracker.sendLeashedEntitiesInChunk(EntityTracker.java:389) at net.minecraft.server.management.PlayerManager$PlayerInstance.func_187272_b(PlayerManager.java:635) at net.minecraft.server.management.PlayerManager.updatePlayerInstances(PlayerManager.java:214) at net.minecraft.world.WorldServer.tick(WorldServer.java:226) at net.minecraft.server.MinecraftServer.updateTimeLightAndEntities(MinecraftServer.java:768) at net.minecraft.server.MinecraftServer.tick(MinecraftServer.java:683) at net.minecraft.server.integrated.IntegratedServer.tick(IntegratedServer.java:155) at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:532) at java.lang.Thread.run(Thread.java:745) Caused by: java.lang.NullPointerException at net.minecraftforge.fml.common.network.internal.FMLMessage$EntitySpawnMessage.toBytes(FMLMessage.java:143) at net.minecraftforge.fml.common.network.internal.FMLRuntimeCodec.encodeInto(FMLRuntimeCodec.java:23) at net.minecraftforge.fml.common.network.internal.FMLRuntimeCodec.encodeInto(FMLRuntimeCodec.java:13) at net.minecraftforge.fml.common.network.FMLIndexedMessageToMessageCodec.encode(FMLIndexedMessageToMessageCodec.java:55) at io.netty.handler.codec.MessageToMessageCodec$1.encode(MessageToMessageCodec.java:67) at io.netty.handler.codec.MessageToMessageEncoder.write(MessageToMessageEncoder.java:89) ... 21 more A detailed walkthrough of the error, its code path and all known details is as follows: --------------------------------------------------------------------------------------- -- Head -- Stacktrace: at io.netty.handler.codec.MessageToMessageEncoder.write(MessageToMessageEncoder.java:107) at io.netty.handler.codec.MessageToMessageCodec.write(MessageToMessageCodec.java:116) at io.netty.channel.AbstractChannelHandlerContext.invokeWrite(AbstractChannelHandlerContext.java:658) at io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:716) at io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:651) at io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:637) at io.netty.channel.DefaultChannelPipeline.write(DefaultChannelPipeline.java:880) at io.netty.channel.AbstractChannel.write(AbstractChannel.java:230) at io.netty.channel.embedded.EmbeddedChannel.writeOutbound(EmbeddedChannel.java:195) at net.minecraftforge.fml.common.network.FMLEmbeddedChannel.generatePacketFrom(FMLEmbeddedChannel.java:50) at net.minecraftforge.fml.common.network.internal.FMLNetworkHandler.getEntitySpawningPacket(FMLNetworkHandler.java:124) at net.minecraft.entity.EntityTrackerEntry.createSpawnPacket(EntityTrackerEntry.java:500) at net.minecraft.entity.EntityTrackerEntry.updatePlayerEntity(EntityTrackerEntry.java:389) at net.minecraft.entity.EntityTracker.sendLeashedEntitiesInChunk(EntityTracker.java:389) at net.minecraft.server.management.PlayerManager$PlayerInstance.func_187272_b(PlayerManager.java:635) at net.minecraft.server.management.PlayerManager.updatePlayerInstances(PlayerManager.java:214) at net.minecraft.world.WorldServer.tick(WorldServer.java:226) -- Affected level -- Details: Level name: Alef All players: 1 total; [EntityPlayerMP['Player964'/337, l='Alef', x=-41.64, y=11.00, z=347.12]] Chunk stats: ServerChunkCache: 830 Drop: 129 Level seed: 8940933286294654693 Level generator: ID 00 - default, ver 1. Features enabled: true Level generator options: Level spawn location: World: (-180,64,256), Chunk: (at 12,4,0 in -12,16; contains blocks -192,0,256 to -177,255,271), Region: (-1,0; contains chunks -32,0 to -1,31, blocks -512,0,0 to -1,255,511) Level time: 95742 game time, 92566 day time Level dimension: 0 Level storage version: 0x04ABD - Anvil Level weather: Rain time: 17647 (now: false), thunder time: 57400 (now: false) Level game mode: Game mode: survival (ID 0). Hardcore: false. Cheats: true Stacktrace: at net.minecraft.server.MinecraftServer.updateTimeLightAndEntities(MinecraftServer.java:768) at net.minecraft.server.MinecraftServer.tick(MinecraftServer.java:683) at net.minecraft.server.integrated.IntegratedServer.tick(IntegratedServer.java:155) at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:532) at java.lang.Thread.run(Thread.java:745) -- System Details -- Details: Minecraft Version: 1.9 Operating System: Windows 10 (amd64) version 10.0 Java Version: 1.8.0_73, Oracle Corporation Java VM Version: Java HotSpot(TM) 64-Bit Server VM (mixed mode), Oracle Corporation Memory: 456938544 bytes (435 MB) / 931659776 bytes (888 MB) up to 1888485376 bytes (1801 MB) JVM Flags: 0 total; IntCache: cache: 0, tcache: 0, allocated: 12, tallocated: 94 FML: MCP 9.23 Powered by Forge 12.16.0.1799 4 mods loaded, 4 mods active States: 'U' = Unloaded 'L' = Loaded 'C' = Constructed 'H' = Pre-initialized 'I' = Initialized 'J' = Post-initialized 'A' = Available 'D' = Disabled 'E' = Errored UCHIJAAAA mcp{9.19} [Minecraft Coder Pack] (minecraft.jar) UCHIJAAAA FML{8.0.99.99} [Forge Mod Loader] (forgeSrc-1.9-12.16.0.1799-1.9.jar) UCHIJAAAA Forge{12.16.0.1799} [Minecraft Forge] (forgeSrc-1.9-12.16.0.1799-1.9.jar) UCHIJAAAA ObsidianTools{1.9-1.0} [Obsidian Tools] (ObsidianTools) Loaded coremods (and transformers): GL info: ~~ERROR~~ RuntimeException: No OpenGL context found in the current thread. Profiler Position: N/A (disabled) Player Count: 1 / 8; [EntityPlayerMP['Player964'/337, l='Alef', x=-41.64, y=11.00, z=347.12]] Type: Integrated Server (map_client.txt) Is Modded: Definitely; Client brand changed to 'fml,forge' Console log: http://pastebin.com/6jh3sWsk
  8. [EDIT] Swingdude helped me figure out why it wasn't rendering, and coolAlias helped me figure out why it wouldn't even spawn. Thanks all. [OP] Hello. Whenever I try to place a spawn egg for an entity I created, a pig is spawned instead and the console shows a NoSuchMethodException from the entity render class RenderGolemObsidian. I basically copied and pasted the render and model classes from the vanilla Iron Golem. How do I fix this error and get my entity to spawn? Log: [20:56:33] [server thread/INFO]: [net.minecraft.entity.EntityList:createEntityByName:151]: java.lang.NoSuchMethodException: com.estebanzapata.obsidiantools.client.renderer.entity.RenderGolemObsidian.<init>(net.minecraft.world.World) [20:56:33] [server thread/INFO]: [net.minecraft.entity.EntityList:createEntityByName:151]: at java.lang.Class.getConstructor0(Class.java:3082) [20:56:33] [server thread/INFO]: [net.minecraft.entity.EntityList:createEntityByName:151]: at java.lang.Class.getConstructor(Class.java:1825) [20:56:33] [server thread/INFO]: [net.minecraft.entity.EntityList:createEntityByName:151]: at net.minecraft.entity.EntityList.createEntityByName(EntityList.java:146) [20:56:33] [server thread/INFO]: [net.minecraft.entity.EntityList:createEntityByName:151]: at net.minecraft.entity.EntityList.func_188429_b(EntityList.java:232) [20:56:33] [server thread/INFO]: [net.minecraft.entity.EntityList:createEntityByName:151]: at net.minecraft.item.ItemMonsterPlacer.spawnCreature(ItemMonsterPlacer.java:218) [20:56:33] [server thread/INFO]: [net.minecraft.entity.EntityList:createEntityByName:151]: at net.minecraft.item.ItemMonsterPlacer.onItemUse(ItemMonsterPlacer.java:99) [20:56:33] [server thread/INFO]: [net.minecraft.entity.EntityList:createEntityByName:151]: at net.minecraftforge.common.ForgeHooks.onPlaceItemIntoWorld(ForgeHooks.java:740) [20:56:33] [server thread/INFO]: [net.minecraft.entity.EntityList:createEntityByName:151]: at net.minecraft.item.ItemStack.onItemUse(ItemStack.java:155) [20:56:33] [server thread/INFO]: [net.minecraft.entity.EntityList:createEntityByName:151]: at net.minecraft.server.management.PlayerInteractionManager.processRightClickBlock(PlayerInteractionManager.java:484) [20:56:33] [server thread/INFO]: [net.minecraft.entity.EntityList:createEntityByName:151]: at net.minecraft.network.NetHandlerPlayServer.processRightClickBlock(NetHandlerPlayServer.java:706) [20:56:33] [server thread/INFO]: [net.minecraft.entity.EntityList:createEntityByName:151]: at net.minecraft.network.play.client.CPacketPlayerTryUseItem.processPacket(CPacketPlayerTryUseItem.java:68) [20:56:33] [server thread/INFO]: [net.minecraft.entity.EntityList:createEntityByName:151]: at net.minecraft.network.play.client.CPacketPlayerTryUseItem.processPacket(CPacketPlayerTryUseItem.java:13) [20:56:33] [server thread/INFO]: [net.minecraft.entity.EntityList:createEntityByName:151]: at net.minecraft.network.PacketThreadUtil$1.run(PacketThreadUtil.java:15) [20:56:33] [server thread/INFO]: [net.minecraft.entity.EntityList:createEntityByName:151]: at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [20:56:33] [server thread/INFO]: [net.minecraft.entity.EntityList:createEntityByName:151]: at java.util.concurrent.FutureTask.run(FutureTask.java:266) [20:56:33] [server thread/INFO]: [net.minecraft.entity.EntityList:createEntityByName:151]: at net.minecraft.util.Util.runTask(Util.java:23) [20:56:33] [server thread/INFO]: [net.minecraft.entity.EntityList:createEntityByName:151]: at net.minecraft.server.MinecraftServer.updateTimeLightAndEntities(MinecraftServer.java:738) [20:56:33] [server thread/INFO]: [net.minecraft.entity.EntityList:createEntityByName:151]: at net.minecraft.server.MinecraftServer.tick(MinecraftServer.java:683) [20:56:33] [server thread/INFO]: [net.minecraft.entity.EntityList:createEntityByName:151]: at net.minecraft.server.integrated.IntegratedServer.tick(IntegratedServer.java:155) [20:56:33] [server thread/INFO]: [net.minecraft.entity.EntityList:createEntityByName:151]: at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:532) [20:56:33] [server thread/INFO]: [net.minecraft.entity.EntityList:createEntityByName:151]: at java.lang.Thread.run(Thread.java:745) RenderGolemObsidian (https://github.com/EstebanZapata/ObsidianTools/blob/mob/src/main/java/com/estebanzapata/obsidiantools/client/renderer/entity/RenderGolemObsidian.java) public class RenderGolemObsidian extends RenderLiving<EntityGolemObsidian> { private static final ResourceLocation golemObsidianTextures = new ResourceLocation(Reference.RESOURCE_PREFIX + "textures/entity/golemObsidian.png"); public RenderGolemObsidian(RenderManager rendermanagerIn) { super(rendermanagerIn, new ModelGolemObsidian(), 0.5F); } @Override protected ResourceLocation getEntityTexture(EntityGolemObsidian entity) { return golemObsidianTextures; } protected void rotateCorpse(EntityGolemObsidian bat, float p_77043_2_, float p_77043_3_, float partialTicks) { super.rotateCorpse(bat, p_77043_2_, p_77043_3_, partialTicks); if ((double)bat.limbSwingAmount >= 0.01D) { float f = 13.0F; float f1 = bat.limbSwing - bat.limbSwingAmount * (1.0F - partialTicks) + 6.0F; float f2 = (Math.abs(f1 % f - f * 0.5F) - f * 0.25F) / (f * 0.25F); GlStateManager.rotate(6.5F * f2, 0.0F, 0.0F, 1.0F); } } } ModelGolemObsidian is large and I don't know what the relevant piece is. Can be found here: https://github.com/EstebanZapata/ObsidianTools/blob/mob/src/main/java/com/estebanzapata/obsidiantools/client/model/ModelGolemObsidian.java EntityObsidianGolem (https://github.com/EstebanZapata/ObsidianTools/blob/mob/src/main/java/com/estebanzapata/obsidiantools/entity/EntityGolemObsidian.java): public class EntityGolemObsidian extends EntityMob { public EntityGolemObsidian(World worldIn) { super(worldIn); } @Override protected void applyEntityAttributes() { super.applyEntityAttributes(); this.getEntityAttribute(SharedMonsterAttributes.MAX_HEALTH).setBaseValue(100.0D); this.getEntityAttribute(SharedMonsterAttributes.MOVEMENT_SPEED).setBaseValue(0.25D); this.getEntityAttribute(SharedMonsterAttributes.KNOCKBACK_RESISTANCE).setBaseValue(1.0D); this.getEntityAttribute(SharedMonsterAttributes.FOLLOW_RANGE).setBaseValue(16.0D); getAttributeMap().registerAttribute(SharedMonsterAttributes.ATTACK_DAMAGE); getEntityAttribute(SharedMonsterAttributes.ATTACK_DAMAGE).setBaseValue(4.0D); } protected void initEntityAI() { this.tasks.addTask(0, new EntityAISwimming(this)); this.tasks.addTask(1, new EntityAIAttackMelee(this, 1.0D, true)); this.tasks.addTask(2, new EntityAIWander(this, 0.8D)); this.tasks.addTask(3, new EntityAILookIdle(this)); this.targetTasks.addTask(0, new EntityAINearestAttackableTarget(this, EntityPlayer.class, true)); } public boolean isAIEnabled() { return true; } } ModEntities is called from CommonProxy.init() (https://github.com/EstebanZapata/ObsidianTools/blob/mob/src/main/java/com/estebanzapata/obsidiantools/init/ModEntities.java) public class ModEntities { private static int id = 0; public static void init() { registerModEntityWithEgg(RenderGolemObsidian.class, "golemObsidian", 0x3F5505, 0x4E6414); } public static void registerModEntityWithEgg(Class entityClass, String entityName, int eggColor, int eggSpotsColor) { EntityRegistry.registerModEntity(entityClass, entityName, id++, ObsidianTools.instance, 80, 3, false); EntityRegistry.registerEgg(entityClass, eggColor, eggSpotsColor); } } CommonProxy (https://github.com/EstebanZapata/ObsidianTools/blob/mob/src/main/java/com/estebanzapata/obsidiantools/proxy/CommonProxy.java) public class CommonProxy implements IProxy { public void preInit(FMLPreInitializationEvent event) { ModItems.init(); ModBlocks.init(); } public void init(FMLInitializationEvent event) { MinecraftForge.EVENT_BUS.register(new ConfigurationHandler()); ModRecipes.init(); ModEntities.init(); } public void postInit(FMLPostInitializationEvent event) { MinecraftForge.EVENT_BUS.register(new ObsidianArmorHandler()); } } ClientProxy renders it (https://github.com/EstebanZapata/ObsidianTools/blob/mob/src/main/java/com/estebanzapata/obsidiantools/proxy/ClientProxy.java) public class ClientProxy extends CommonProxy { public void preInit(FMLPreInitializationEvent event) { super.preInit(event); RenderingRegistry.registerEntityRenderingHandler(EntityGolemObsidian.class, new IRenderFactory<EntityGolemObsidian>() { @Override public Render<? super EntityGolemObsidian> createRenderFor(RenderManager manager) { return new RenderGolemObsidian(manager); } }); }
  9. Thank you so much! I changed builtin/generated to item/generated and it worked.
  10. Edit: Solved by derf6060 below. I am a new modder and have been following Pahimar's video tutorial . I understand that in Minecraft 1.8+, items now require the use of a JSON file. To the best of my ability I have implemented the item, file, and JSON. The item I created is onyx. I copied the vanilla diamond item texture, made no changes to its size, made it black, and placed it in <project folder>/assets/<modid>/textures/items/onyx.png When I launch the game, the texture loads. However, it is extremely large when on the ground and is oriented differently than other items when held in hand, which I assume is because of its size. I modified the JSON to be empty and it caused the item to have a missing texture. When I fix it, the texture loads properly, so the JSON is being read. However, if I modify the paramters rotation, translation, and scale, no changes are seen in the game. How do I fix this so that the item is the same size and orientation in hand as diamond/other items and can be modified by the JSON? Album of issue: Full code: https://github.com/EstebanZapata/ObsidianTools latest.log: http://pastebin.com/g1sJu2tr Inside main mod file: @Mod.EventHandler public void init(FMLInitializationEvent event) { // Substring 5 to get rid of "item." Minecraft.getMinecraft().getRenderItem().getItemModelMesher() .register(ModItems.onyx, 0, new ModelResourceLocation(ModItems.onyx.getUnlocalizedName().substring(5) ,"inventory")); } ModItems: public final class ModItems { public static final ItemOT onyx = new ItemOnyx(); public static void init() { GameRegistry.registerItem(onyx, "onyx"); } } Custom base item class: public class ItemOT extends Item{ public ItemOT() { super(); } @Override public String getUnlocalizedName() { return String.format("item.%s%s", Textures.RESOURCE_PREFIX, getUnwrappedUnlocalizedName(super.getUnlocalizedName())); //item.ObsidianTools:onyx.name } @Override public String getUnlocalizedName(ItemStack itemStack) { return String.format("item.%s%s", Textures.RESOURCE_PREFIX, getUnwrappedUnlocalizedName(super.getUnlocalizedName())); } protected String getUnwrappedUnlocalizedName(String unlocalizedName) { return unlocalizedName.substring(unlocalizedName.indexOf(".") + 1); } } JSON: { "parent":"builtin/generated", "textures": { "layer0":"obsidiantools:items/onyx" }, "display": { "thirdperson": { "rotation": [ -90, 0, 0 ], "translation": [ 0, 1, -3 ], "scale": [ 0.55, 0.55, 0.55 ] }, "firstperson": { "rotation": [ 0, -135, 25 ], "translation": [ 0, 4, 2 ], "scale": [ 1.7, 1.7, 1.7 ] } } }
×
×
  • Create New...

Important Information

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