Jump to content

[Solved][1.18] Crash when attempting to use getDistance() to get distance between player and entity


Recommended Posts

Posted (edited)

Currently getting a TickingEntity crash from usage of getDistance() in this method, occurs frequently when my projectile entity hits another entity:

    @Override
    protected void onHitEntity(EntityHitResult hitResult) {
        LivingEntity target = (LivingEntity) hitResult.getEntity();
        Entity shooter = getOwner();

        System.out.println("HIT");
        System.out.println("DISTANCE: " + Objects.requireNonNull(getOwner()).distanceTo(target));

        double armor = target.getArmorValue() * (1 - piercing);
        double toughness = Objects.requireNonNull(target.getAttribute(Attributes.ARMOR_TOUGHNESS)).getValue();
        float finalDamage = (float) (damage * (1 - (Math.min(20, Math.max((armor / 5), armor - ((4 * damage) / (toughness + 8))))) / 25));
        target.hurt(causeBulletDamage(this, shooter).bypassArmor(), finalDamage);

        if (bulletType == BulletType.COPPER) {
            target.invulnerableTime = 0;
        }
    }

Full code here:
https://github.com/CrackedScreen/Mod_1.18

Error log:
 

Spoiler

---- Minecraft Crash Report ----
// Don't be sad, have a hug! ❤️

Time: 12/17/21, 5:54 PM
Description: Ticking entity

java.lang.NullPointerException: Ticking entity
    at java.util.Objects.requireNonNull(Objects.java:208) ~[?:?] {}
    at com.example.examplemod.entity.BulletEntity.onHitEntity(BulletEntity.java:78) ~[%2381!:?] {re:classloading}
    at net.minecraft.world.entity.projectile.Projectile.onHit(Projectile.java:135) ~[forge-1.18-38.0.16_mapped_official_1.18-recomp.jar%2377!:?] {re:classloading,pl:accesstransformer:B}
    at net.minecraft.world.entity.projectile.ThrowableProjectile.tick(ThrowableProjectile.java:62) ~[forge-1.18-38.0.16_mapped_official_1.18-recomp.jar%2377!:?] {re:classloading}
    at com.example.examplemod.entity.BulletEntity.tick(BulletEntity.java:51) ~[%2381!:?] {re:classloading}
    at net.minecraft.client.multiplayer.ClientLevel.tickNonPassenger(ClientLevel.java:222) ~[forge-1.18-38.0.16_mapped_official_1.18-recomp.jar%2377!:?] {re:classloading,pl:runtimedistcleaner:A}
    at net.minecraft.world.level.Level.guardEntityTick(Level.java:487) ~[forge-1.18-38.0.16_mapped_official_1.18-recomp.jar%2377!:?] {re:classloading,pl:accesstransformer:B}
    at net.minecraft.client.multiplayer.ClientLevel.lambda$tickEntities$4(ClientLevel.java:204) ~[forge-1.18-38.0.16_mapped_official_1.18-recomp.jar%2377!:?] {re:classloading,pl:runtimedistcleaner:A}
    at net.minecraft.world.level.entity.EntityTickList.forEach(EntityTickList.java:54) ~[forge-1.18-38.0.16_mapped_official_1.18-recomp.jar%2377!:?] {re:classloading}
    at net.minecraft.client.multiplayer.ClientLevel.tickEntities(ClientLevel.java:202) ~[forge-1.18-38.0.16_mapped_official_1.18-recomp.jar%2377!:?] {re:classloading,pl:runtimedistcleaner:A}
    at net.minecraft.client.Minecraft.tick(Minecraft.java:1674) ~[forge-1.18-38.0.16_mapped_official_1.18-recomp.jar%2377!:?] {re:classloading,pl:accesstransformer:B,pl:runtimedistcleaner:A}
    at net.minecraft.client.Minecraft.runTick(Minecraft.java:1015) ~[forge-1.18-38.0.16_mapped_official_1.18-recomp.jar%2377!:?] {re:classloading,pl:accesstransformer:B,pl:runtimedistcleaner:A}
    at net.minecraft.client.Minecraft.run(Minecraft.java:660) ~[forge-1.18-38.0.16_mapped_official_1.18-recomp.jar%2377!:?] {re:classloading,pl:accesstransformer:B,pl:runtimedistcleaner:A}
    at net.minecraft.client.main.Main.main(Main.java:205) ~[forge-1.18-38.0.16_mapped_official_1.18-recomp.jar%2377!:?] {re:classloading,pl:runtimedistcleaner:A}
    at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:?] {}
    at jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) ~[?:?] {}
    at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?] {}
    at java.lang.reflect.Method.invoke(Method.java:568) ~[?:?] {}
    at net.minecraftforge.fml.loading.targets.ForgeClientUserdevLaunchHandler.lambda$launchService$0(ForgeClientUserdevLaunchHandler.java:38) ~[fmlloader-1.18-38.0.16.jar%230!:?] {}
    at cpw.mods.modlauncher.LaunchServiceHandlerDecorator.launch(LaunchServiceHandlerDecorator.java:37) [modlauncher-9.0.7.jar%2310!:?] {}
    at cpw.mods.modlauncher.LaunchServiceHandler.launch(LaunchServiceHandler.java:53) [modlauncher-9.0.7.jar%2310!:?] {}
    at cpw.mods.modlauncher.LaunchServiceHandler.launch(LaunchServiceHandler.java:71) [modlauncher-9.0.7.jar%2310!:?] {}
    at cpw.mods.modlauncher.Launcher.run(Launcher.java:106) [modlauncher-9.0.7.jar%2310!:?] {}
    at cpw.mods.modlauncher.Launcher.main(Launcher.java:77) [modlauncher-9.0.7.jar%2310!:?] {}
    at cpw.mods.modlauncher.BootstrapLaunchConsumer.accept(BootstrapLaunchConsumer.java:26) [modlauncher-9.0.7.jar%2310!:?] {}
    at cpw.mods.modlauncher.BootstrapLaunchConsumer.accept(BootstrapLaunchConsumer.java:23) [modlauncher-9.0.7.jar%2310!:?] {}
    at cpw.mods.bootstraplauncher.BootstrapLauncher.main(BootstrapLauncher.java:90) [bootstraplauncher-0.1.17.jar:?] {}


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

-- Head --
Thread: Render thread
Stacktrace:
    at java.util.Objects.requireNonNull(Objects.java:208) ~[?:?] {}
    at com.example.examplemod.entity.BulletEntity.onHitEntity(BulletEntity.java:78) ~[%2381!:?] {re:classloading}
    at net.minecraft.world.entity.projectile.Projectile.onHit(Projectile.java:135) ~[forge-1.18-38.0.16_mapped_official_1.18-recomp.jar%2377!:?] {re:classloading,pl:accesstransformer:B}
    at net.minecraft.world.entity.projectile.ThrowableProjectile.tick(ThrowableProjectile.java:62) ~[forge-1.18-38.0.16_mapped_official_1.18-recomp.jar%2377!:?] {re:classloading}
    at com.example.examplemod.entity.BulletEntity.tick(BulletEntity.java:51) ~[%2381!:?] {re:classloading}
    at net.minecraft.client.multiplayer.ClientLevel.tickNonPassenger(ClientLevel.java:222) ~[forge-1.18-38.0.16_mapped_official_1.18-recomp.jar%2377!:?] {re:classloading,pl:runtimedistcleaner:A}
    at net.minecraft.world.level.Level.guardEntityTick(Level.java:487) ~[forge-1.18-38.0.16_mapped_official_1.18-recomp.jar%2377!:?] {re:classloading,pl:accesstransformer:B}
    at net.minecraft.client.multiplayer.ClientLevel.lambda$tickEntities$4(ClientLevel.java:204) ~[forge-1.18-38.0.16_mapped_official_1.18-recomp.jar%2377!:?] {re:classloading,pl:runtimedistcleaner:A}
    at net.minecraft.world.level.entity.EntityTickList.forEach(EntityTickList.java:54) ~[forge-1.18-38.0.16_mapped_official_1.18-recomp.jar%2377!:?] {re:classloading}
    at net.minecraft.client.multiplayer.ClientLevel.tickEntities(ClientLevel.java:202) ~[forge-1.18-38.0.16_mapped_official_1.18-recomp.jar%2377!:?] {re:classloading,pl:runtimedistcleaner:A}
-- Entity being ticked --
Details:
    Entity Type: examplemod:bullet (com.example.examplemod.entity.BulletEntity)
    Entity ID: 399
    Entity Name: entity.examplemod.bullet
    Entity's Exact location: 23.47, 65.68, 242.20
    Entity's Block location: World: (23,65,242), Section: (at 7,1,2 in 1,4,15; chunk contains blocks 16,-64,240 to 31,319,255), Region: (0,0; contains chunks 0,0 to 31,31, blocks 0,-64,0 to 511,319,511)
    Entity's Momentum: 1.18, -2.34, -2.09
    Entity's Passengers: []
    Entity's Vehicle: null
Stacktrace:
    at net.minecraft.world.level.Level.guardEntityTick(Level.java:487) ~[forge-1.18-38.0.16_mapped_official_1.18-recomp.jar%2377!:?] {re:classloading,pl:accesstransformer:B}
    at net.minecraft.client.multiplayer.ClientLevel.lambda$tickEntities$4(ClientLevel.java:204) ~[forge-1.18-38.0.16_mapped_official_1.18-recomp.jar%2377!:?] {re:classloading,pl:runtimedistcleaner:A}
    at net.minecraft.world.level.entity.EntityTickList.forEach(EntityTickList.java:54) ~[forge-1.18-38.0.16_mapped_official_1.18-recomp.jar%2377!:?] {re:classloading}
    at net.minecraft.client.multiplayer.ClientLevel.tickEntities(ClientLevel.java:202) ~[forge-1.18-38.0.16_mapped_official_1.18-recomp.jar%2377!:?] {re:classloading,pl:runtimedistcleaner:A}
    at net.minecraft.client.Minecraft.tick(Minecraft.java:1674) ~[forge-1.18-38.0.16_mapped_official_1.18-recomp.jar%2377!:?] {re:classloading,pl:accesstransformer:B,pl:runtimedistcleaner:A}
    at net.minecraft.client.Minecraft.runTick(Minecraft.java:1015) ~[forge-1.18-38.0.16_mapped_official_1.18-recomp.jar%2377!:?] {re:classloading,pl:accesstransformer:B,pl:runtimedistcleaner:A}
    at net.minecraft.client.Minecraft.run(Minecraft.java:660) ~[forge-1.18-38.0.16_mapped_official_1.18-recomp.jar%2377!:?] {re:classloading,pl:accesstransformer:B,pl:runtimedistcleaner:A}
    at net.minecraft.client.main.Main.main(Main.java:205) ~[forge-1.18-38.0.16_mapped_official_1.18-recomp.jar%2377!:?] {re:classloading,pl:runtimedistcleaner:A}
    at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:?] {}
    at jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) ~[?:?] {}
    at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?] {}
    at java.lang.reflect.Method.invoke(Method.java:568) ~[?:?] {}
    at net.minecraftforge.fml.loading.targets.ForgeClientUserdevLaunchHandler.lambda$launchService$0(ForgeClientUserdevLaunchHandler.java:38) ~[fmlloader-1.18-38.0.16.jar%230!:?] {}
    at cpw.mods.modlauncher.LaunchServiceHandlerDecorator.launch(LaunchServiceHandlerDecorator.java:37) [modlauncher-9.0.7.jar%2310!:?] {}
    at cpw.mods.modlauncher.LaunchServiceHandler.launch(LaunchServiceHandler.java:53) [modlauncher-9.0.7.jar%2310!:?] {}
    at cpw.mods.modlauncher.LaunchServiceHandler.launch(LaunchServiceHandler.java:71) [modlauncher-9.0.7.jar%2310!:?] {}
    at cpw.mods.modlauncher.Launcher.run(Launcher.java:106) [modlauncher-9.0.7.jar%2310!:?] {}
    at cpw.mods.modlauncher.Launcher.main(Launcher.java:77) [modlauncher-9.0.7.jar%2310!:?] {}
    at cpw.mods.modlauncher.BootstrapLaunchConsumer.accept(BootstrapLaunchConsumer.java:26) [modlauncher-9.0.7.jar%2310!:?] {}
    at cpw.mods.modlauncher.BootstrapLaunchConsumer.accept(BootstrapLaunchConsumer.java:23) [modlauncher-9.0.7.jar%2310!:?] {}
    at cpw.mods.bootstraplauncher.BootstrapLauncher.main(BootstrapLauncher.java:90) [bootstraplauncher-0.1.17.jar:?] {}


-- Affected level --
Details:
    All players: 1 total; [LocalPlayer['Dev'/97, l='ClientLevel', x=14.92, y=81.12, z=257.36]]
    Chunk stats: 961, 557
    Level dimension: minecraft:overworld
    Level spawn location: World: (-80,63,48), Section: (at 0,15,0 in -5,3,3; chunk contains blocks -80,-64,48 to -65,319,63), Region: (-1,0; contains chunks -32,0 to -1,31, blocks -512,-64,0 to -1,319,511)
    Level time: 301500 game time, 280978 day time
    Server brand: forge
    Server type: Integrated singleplayer server
Stacktrace:
    at net.minecraft.client.multiplayer.ClientLevel.fillReportDetails(ClientLevel.java:407) ~[forge-1.18-38.0.16_mapped_official_1.18-recomp.jar%2377!:?] {re:classloading,pl:runtimedistcleaner:A}
    at net.minecraft.client.Minecraft.fillReport(Minecraft.java:2249) ~[forge-1.18-38.0.16_mapped_official_1.18-recomp.jar%2377!:?] {re:classloading,pl:accesstransformer:B,pl:runtimedistcleaner:A}
    at net.minecraft.client.Minecraft.run(Minecraft.java:677) ~[forge-1.18-38.0.16_mapped_official_1.18-recomp.jar%2377!:?] {re:classloading,pl:accesstransformer:B,pl:runtimedistcleaner:A}
    at net.minecraft.client.main.Main.main(Main.java:205) ~[forge-1.18-38.0.16_mapped_official_1.18-recomp.jar%2377!:?] {re:classloading,pl:runtimedistcleaner:A}
    at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:?] {}
    at jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) ~[?:?] {}
    at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?] {}
    at java.lang.reflect.Method.invoke(Method.java:568) ~[?:?] {}
    at net.minecraftforge.fml.loading.targets.ForgeClientUserdevLaunchHandler.lambda$launchService$0(ForgeClientUserdevLaunchHandler.java:38) ~[fmlloader-1.18-38.0.16.jar%230!:?] {}
    at cpw.mods.modlauncher.LaunchServiceHandlerDecorator.launch(LaunchServiceHandlerDecorator.java:37) [modlauncher-9.0.7.jar%2310!:?] {}
    at cpw.mods.modlauncher.LaunchServiceHandler.launch(LaunchServiceHandler.java:53) [modlauncher-9.0.7.jar%2310!:?] {}
    at cpw.mods.modlauncher.LaunchServiceHandler.launch(LaunchServiceHandler.java:71) [modlauncher-9.0.7.jar%2310!:?] {}
    at cpw.mods.modlauncher.Launcher.run(Launcher.java:106) [modlauncher-9.0.7.jar%2310!:?] {}
    at cpw.mods.modlauncher.Launcher.main(Launcher.java:77) [modlauncher-9.0.7.jar%2310!:?] {}
    at cpw.mods.modlauncher.BootstrapLaunchConsumer.accept(BootstrapLaunchConsumer.java:26) [modlauncher-9.0.7.jar%2310!:?] {}
    at cpw.mods.modlauncher.BootstrapLaunchConsumer.accept(BootstrapLaunchConsumer.java:23) [modlauncher-9.0.7.jar%2310!:?] {}
    at cpw.mods.bootstraplauncher.BootstrapLauncher.main(BootstrapLauncher.java:90) [bootstraplauncher-0.1.17.jar:?] {}


-- Last reload --
Details:
    Reload number: 1
    Reload reason: initial
    Finished: Yes
    Packs: Default, Mod Resources

-- System Details --
Details:
    Minecraft Version: 1.18
    Minecraft Version ID: 1.18
    Operating System: Windows 10 (amd64) version 10.0
    Java Version: 17.0.1, Eclipse Adoptium
    Java VM Version: OpenJDK 64-Bit Server VM (mixed mode, sharing), Eclipse Adoptium
    Memory: 2797753744 bytes (2668 MiB) / 4664066048 bytes (4448 MiB) up to 8573157376 bytes (8176 MiB)
    CPUs: 24
    Processor Vendor: AuthenticAMD
    Processor Name: AMD Ryzen 9 5900X 12-Core Processor            
    Identifier: AuthenticAMD Family 25 Model 33 Stepping 0
    Microarchitecture: Zen 3
    Frequency (GHz): 3.69
    Number of physical packages: 1
    Number of physical CPUs: 12
    Number of logical CPUs: 24
    Graphics card #0 name: NVIDIA GeForce GTX 1060 3GB
    Graphics card #0 vendor: NVIDIA (0x10de)
    Graphics card #0 VRAM (MB): 3072.00
    Graphics card #0 deviceId: 0x1c02
    Graphics card #0 versionInfo: DriverVersion=30.0.14.9709
    Memory slot #0 capacity (MB): 16384.00
    Memory slot #0 clockSpeed (GHz): 3.60
    Memory slot #0 type: DDR4
    Memory slot #1 capacity (MB): 16384.00
    Memory slot #1 clockSpeed (GHz): 3.60
    Memory slot #1 type: DDR4
    Virtual memory max (MB): 37557.55
    Virtual memory used (MB): 18334.25
    Swap memory total (MB): 4864.00
    Swap memory used (MB): 3.49
    JVM Flags: 1 total; -XX:HeapDumpPath=MojangTricksIntelDriversForPerformance_javaw.exe_minecraft.exe.heapdump
    Launched Version: MOD_DEV
    Backend library: LWJGL version 3.2.2 SNAPSHOT
    Backend API: NVIDIA GeForce GTX 1060 3GB/PCIe/SSE2 GL version 3.2.0 NVIDIA 497.09, NVIDIA Corporation
    Window size: 854x480
    GL Caps: Using framebuffer using OpenGL 3.2
    GL debug messages:
    Using VBOs: Yes
    Is Modded: Definitely; Client brand changed to 'forge'; Server brand changed to 'forge'
    Type: Integrated Server (map_client.txt)
    Graphics mode: fancy
    Resource Packs: vanilla, mod_resources
    Current Language: English (US)
    CPU: 24x AMD Ryzen 9 5900X 12-Core Processor
    Server Running: true
    Player Count: 1 / 8; [ServerPlayer['Dev'/97, l='ServerLevel[Test]', x=14.92, y=81.12, z=257.37]]
    Data Packs: vanilla, mod:forge, mod:examplemod
    ModLauncher: 9.0.7+91+master.8569cdf
    ModLauncher launch target: forgeclientuserdev
    ModLauncher naming: mcp
    ModLauncher services:
         mixin PLUGINSERVICE
         eventbus PLUGINSERVICE
         object_holder_definalize PLUGINSERVICE
         runtime_enum_extender PLUGINSERVICE
         capability_token_subclass PLUGINSERVICE
         accesstransformer PLUGINSERVICE
         runtimedistcleaner PLUGINSERVICE
         mixin TRANSFORMATIONSERVICE
         fml TRANSFORMATIONSERVICE
    FML Language Providers:
        [email protected]
        javafml@null
    Mod List:
        forge-1.18-38.0.16_mapped_official_1.18-recomp.jar|Minecraft                     |minecraft                     |1.18                |DONE      |Manifest: a1:d4:5e:04:4f:d3:d6:e0:7b:37:97:cf:77:b0:de:ad:4a:47:ce:8c:96:49:5f:0a:cf:8c:ae:b2:6d:4b:8a:3f
                                                          |Forge                         |forge                         |38.0.16             |DONE      |Manifest: NOSIGNATURE
        main                                              |Example Mod                   |examplemod                    |0.0NONE             |DONE      |Manifest: NOSIGNATURE
    Crash Report UUID: df2125d7-9324-44b0-a159-460830c86d04
    FML: 38.0
    Forge: net.minecraftforge:38.0.16

Edited by CrackedScreen
Marked as solved
  • CrackedScreen changed the title to [1.18] Crash when attempting to use getDistance() to get distance between player and entity
Posted (edited)

...and Objects.requireNonNull does not return a non-null value when passed null.
It is an assertion; if it fails, throws a null pointer exception.

This is its implementation:

public static <T> T requireNonNull(T obj) {
    if (obj == null)
        throw new NullPointerException();
    return obj;
}

 

Edited by Draco18s

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.

  • CrackedScreen changed the title to [Solved][1.18] Crash when attempting to use getDistance() to get distance between player and entity

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

    • https://mclo.gs/9y5ciD2 anyone ever had this issue?  Internal exception illegal argument exception: unable to fit 3194354 into 3
    • Hi! I'm trying to add my custom models/textures renderer like this: public class PonyPlayerWrapperRenderer extends EntityRenderer<Player> { // wrapper class under my LivingEntityRenderer class implementation private final PonyPlayerRenderer innerRenderer; private final PonyPlayerRenderer innerSlimRenderer; public PonyPlayerWrapperRenderer(final EntityRendererProvider.Context context) { super(context); System.out.println("creating new PonyPlayerWrapperRenderer"); this.innerRenderer = new PonyPlayerRenderer(context, false); this.innerSlimRenderer = new PonyPlayerRenderer(context, true); } @Override public void render(final Player entity, final float yaw, final float partialTicks, final PoseStack poseStack, final MultiBufferSource bufferSource, final int packedLight) { System.out.println("PonyPlayerWrapperRenderer render: " + entity.toString()); if (entity instanceof AbstractClientPlayer clientPlayer) { if (clientPlayer.getModelName().contains("slim")) { innerSlimRenderer.render(clientPlayer, yaw, partialTicks, poseStack, bufferSource, packedLight); } else { innerRenderer.render(clientPlayer, yaw, partialTicks, poseStack, bufferSource, packedLight); } } } @Override public ResourceLocation getTextureLocation(final Player player) { System.out.println("PonyPlayerWrapperRenderer getTextureLocation"); if (player instanceof AbstractClientPlayer clientPlayer) { return clientPlayer.getSkinTextureLocation(); } System.out.println("player instanceof AbstractClientPlayer is false"); return getDefaultSkin(player.getUUID()); } } public class PonyPlayerRenderer extends LivingEntityRenderer<AbstractClientPlayer, PlayerModel<AbstractClientPlayer>> { private final PlayerModel<AbstractClientPlayer> earthModel; private final PlayerModel<AbstractClientPlayer> pegasusModel; private final PlayerModel<AbstractClientPlayer> unicornModel; public PonyPlayerRenderer(final EntityRendererProvider.Context context, final boolean slim) { super( context, slim ? new PonyModelSlim(context.bakeLayer(PonyModelSlim.LAYER_LOCATION)) : new PonyModel(context.bakeLayer(PonyModel.LAYER_LOCATION)), 0.5f ); System.out.println("creating new PonyPlayerRenderer"); this.earthModel = slim ? new PonyModelSlim(context.bakeLayer(PonyModelSlim.LAYER_LOCATION)) : new PonyModel(context.bakeLayer(PonyModel.LAYER_LOCATION)); this.pegasusModel = new PegasusModel(context.bakeLayer(PegasusModel.LAYER_LOCATION)); this.unicornModel = new UnicornModel(context.bakeLayer(UnicornModel.LAYER_LOCATION)); } @Override public void render(final AbstractClientPlayer player, final float entityYaw, final float partialTicks, final PoseStack poseStack, final MultiBufferSource buffer, final int packedLight) { final PonyRace race = player.getCapability(PONY_DATA) .map(data -> ofNullable(data.getRace()).orElse(PonyRace.EARTH)) .orElse(PonyRace.EARTH); this.model = switch (race) { case PEGASUS -> pegasusModel; case UNICORN -> unicornModel; case EARTH -> earthModel; }; super.render(player, entityYaw, partialTicks, poseStack, buffer, packedLight); } @Override public ResourceLocation getTextureLocation(final AbstractClientPlayer player) { final PonyRace race = player.getCapability(PONY_DATA) .map(data -> ofNullable(data.getRace()).orElse(PonyRace.EARTH)) .orElse(PonyRace.EARTH); return switch (race) { case EARTH -> fromNamespaceAndPath(MODID, "textures/entity/earth_pony.png"); case PEGASUS -> fromNamespaceAndPath(MODID, "textures/entity/pegasus.png"); case UNICORN -> fromNamespaceAndPath(MODID, "textures/entity/unicorn.png"); }; } } @Mod.EventBusSubscriber(modid = MODID, bus = MOD, value = CLIENT) public class ClientRenderers { // mod bus render registration config @SubscribeEvent public static void onRegisterLayerDefinitions(final EntityRenderersEvent.RegisterLayerDefinitions event) { event.registerLayerDefinition(PonyModel.LAYER_LOCATION, PonyModel::createBodyLayer); event.registerLayerDefinition(PonyModelSlim.LAYER_LOCATION, PonyModelSlim::createBodyLayer); event.registerLayerDefinition(PegasusModel.LAYER_LOCATION, PegasusModel::createBodyLayer); event.registerLayerDefinition(UnicornModel.LAYER_LOCATION, UnicornModel::createBodyLayer); event.registerLayerDefinition(InnerPonyArmorModel.LAYER_LOCATION, InnerPonyArmorModel::createBodyLayer); event.registerLayerDefinition(OuterPonyArmorModel.LAYER_LOCATION, OuterPonyArmorModel::createBodyLayer); } @SubscribeEvent public static void onRegisterRenderers(final EntityRenderersEvent.RegisterRenderers event) { event.registerEntityRenderer(EntityType.PLAYER, PonyPlayerWrapperRenderer::new); System.out.println("onRegisterRenderers end"); } } Method onRegisterRenderers() is called and I can see it being logged. But when I enter the world, my PonyWrapperRenderer render() method doesn't ever seem to be called. I also tried to put my renderer to EntityRenderDispatcher's playerRenderers via reflection: @Mod.EventBusSubscriber(modid = MODID, bus = MOD, value = CLIENT) public class ClientRenderers { @SubscribeEvent public static void onRegisterLayerDefinitions(final EntityRenderersEvent.RegisterLayerDefinitions event) { event.registerLayerDefinition(PonyModel.LAYER_LOCATION, PonyModel::createBodyLayer); event.registerLayerDefinition(PonyModelSlim.LAYER_LOCATION, PonyModelSlim::createBodyLayer); event.registerLayerDefinition(PegasusModel.LAYER_LOCATION, PegasusModel::createBodyLayer); event.registerLayerDefinition(UnicornModel.LAYER_LOCATION, UnicornModel::createBodyLayer); event.registerLayerDefinition(InnerPonyArmorModel.LAYER_LOCATION, InnerPonyArmorModel::createBodyLayer); event.registerLayerDefinition(OuterPonyArmorModel.LAYER_LOCATION, OuterPonyArmorModel::createBodyLayer); } @SubscribeEvent public static void onClientSetup(final FMLClientSetupEvent event) { event.enqueueWork(() -> { try { final EntityRenderDispatcher dispatcher = Minecraft.getInstance().getEntityRenderDispatcher(); final Field renderersField = getEntityRenderDispatcherField("playerRenderers"); final Field itemInHandRenderer = getEntityRenderDispatcherField("itemInHandRenderer"); @SuppressWarnings("unchecked") final Map<String, EntityRenderer<? extends Player>> playerRenderers = (Map<String, EntityRenderer<? extends Player>>)renderersField.get(dispatcher); final PonyPlayerWrapperRenderer renderer = new PonyPlayerWrapperRenderer( new EntityRendererProvider.Context( dispatcher, Minecraft.getInstance().getItemRenderer(), Minecraft.getInstance().getBlockRenderer(), (ItemInHandRenderer)itemInHandRenderer.get(dispatcher), Minecraft.getInstance().getResourceManager(), Minecraft.getInstance().getEntityModels(), Minecraft.getInstance().font ) ); playerRenderers.put("default", renderer); playerRenderers.put("slim", renderer); System.out.println("Player renderers replaced"); } catch (final Exception e) { throw new RuntimeException("Failed to replace player renderers", e); } }); } private static Field getEntityRenderDispatcherField(final String fieldName) throws NoSuchFieldException { final Field field = EntityRenderDispatcher.class.getDeclaredField(fieldName); field.setAccessible(true); return field; } } But I receive the error before Minecraft Client appears (RuntimeException: Failed to replace player renderers - from ClientRenderers onClientSetup() method - and its cause below): java.lang.IllegalArgumentException: No model for layer anotherlittlepony:earth_pony#main at net.minecraft.client.model.geom.EntityModelSet.bakeLayer(EntityModelSet.java:18) ~[forge-1.20.1-47.4.0_mapped_official_1.20.1-recomp.jar:?] {re:classloading,pl:runtimedistcleaner:A} at net.minecraft.client.renderer.entity.EntityRendererProvider$Context.bakeLayer(EntityRendererProvider.java:69) ~[forge-1.20.1-47.4.0_mapped_official_1.20.1-recomp.jar:?] {re:classloading,pl:runtimedistcleaner:A} at com.thuggeelya.anotherlittlepony.client.renderer.pony.PonyPlayerRenderer.<init>(PonyPlayerRenderer.java:32) ~[main/:?] {re:classloading} at com.thuggeelya.anotherlittlepony.client.renderer.pony.PonyPlayerWrapperRenderer.<init>(PonyPlayerWrapperRenderer.java:24) ~[main/:?] {re:classloading} at com.thuggeelya.anotherlittlepony.client.renderer.ClientRenderers.lambda$onClientSetup$0(ClientRenderers.java:79) ~[main/:?] {re:classloading} ... 33 more Problem appears when EntityRendererProvider context tries to bakeLayer with my model layer location: new PonyModel(context.bakeLayer(PonyModel.LAYER_LOCATION)); // PonyPlayerRenderer.java:32 public class PonyModel extends PlayerModel<AbstractClientPlayer> { // the model class itself public static final ModelLayerLocation LAYER_LOCATION = new ModelLayerLocation( ResourceLocation.fromNamespaceAndPath(MODID, "earth_pony"), "main" ); public PonyModel(final ModelPart root) { super(root, false); } public static LayerDefinition createBodyLayer() { // some CubeListBuilder stuff for model appearance } } Textures PNGs are placed at: resources/assets/[my mod id]/textures/entity. My forge version is 1.20.1. Would appreciate any help.
    • Well, a bit more information about what you're trying to do would be helpful. e.g. why you're trying to use "INVOKE_ASSIGN" instead of "INVOKE". "INVOKE_ASSIGN" calls your code after the "target" is called and its value is stored, if applicable. "INVOKE" calls your code before the target is called. "target" expects a fully qualified name, as per the SpongePowered docs, if that name is going to be remapped (which it will be if your injecting into Minecraft itself and not another mod). For more information on fully qualified names versus canonical names, see the Java specifications. Here's an example of a working "@At" from my own code that targets the "getClosestsVulnerablePlayerToEntity" call inside a mob's logic: @At(value = "INVOKE_ASSIGN", target = "net.minecraft.world.World.getClosestVulnerablePlayerToEntity(Lnet/minecraft/entity/Entity;D)Lnet/minecraft/entity/player/EntityPlayer;") Hope this helps!
    • Ran it one more time just to check, and there's no errors this time on the log??? Log : https://mclo.gs/LnuaAiu I tried allocating more memory to the modpack, around 8000MB and it's still the same; stopping at "LOAD_REGISTRIES". Are some of the mods clashing, maybe? I have no clue what to do LOL
    • Tried removing some biome generation mods and test ran it again, but it's still the same; still not responding as soon as it gets to "LOAD_REGISTRIES". This time with more errors though. Log : https://mclo.gs/uygZzD8 Is there too little memory allocated to the modpack maybe? Can someone help please.    (T.T)💔
  • Topics

×
×
  • Create New...

Important Information

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