So I am porting code from 1.17 to 1.18 and there is a problem. When you throw / spawn the projectile entity it crashes the game. The full log can be found here: https://www.toptal.com/developers/hastebin/vifidaxibo.yaml
I do not know why this is happening.
Here is the class where I register the renderers:
@Mod.EventBusSubscriber(modid = Catty.MOD_ID, bus = Mod.EventBusSubscriber.Bus.MOD, value = Dist.CLIENT)
public class ClientEventBusSubscriber {
private static final Logger LOGGER = LogManager.getLogger();
//@SubscribeEvent OLD
//public static void clientSetup(FMLClientSetupEvent event) {
// ItemRenderer renderer = Minecraft.getInstance().getItemRenderer();
//
// LOGGER.info("Entity renderers registered!");
//}
@SubscribeEvent
public void RegisterEntityRenderers(EntityRenderersEvent.RegisterRenderers event) {
event.registerEntityRenderer(EntityInit.PUSHEEN_PROJECTILE.get(), ThrownItemRenderer::new);
LOGGER.info("Catty entity renderers registered!");
}
}
Here is the PusheenEntity Class:
public class PusheenEntity extends ThrowableItemProjectile {
public PusheenEntity(EntityType<? extends PusheenEntity> type, Level world) {
super(type, world);
}
public PusheenEntity(Level world, LivingEntity entity) {
super(EntityInit.PUSHEEN_PROJECTILE.get(), entity, world);
}
public PusheenEntity(Level world, double x, double y, double z) {
super(EntityInit.PUSHEEN_PROJECTILE.get(), x, y, z, world);
}
@ParametersAreNonnullByDefault
@Override
protected void onHit(HitResult rtResult) {
super.onHit(rtResult);
Explosion.BlockInteraction explosion$mode = net.minecraftforge.event.ForgeEventFactory.getMobGriefingEvent(this.level, this.getOwner()) ? Explosion.BlockInteraction.DESTROY : Explosion.BlockInteraction.NONE;
this.level.explode(this, this.getX(), this.getY(), this.getZ(), 2.0F, explosion$mode);
if (!this.level.isClientSide) {
this.discard();
}
}
@Nonnull
@Override
protected Item getDefaultItem() {
return ItemInit.PUSHEEN.get().asItem();
}
@Nonnull
@Override
public Packet<?> getAddEntityPacket() { return NetworkHooks.getEntitySpawningPacket(this); }
}
The entity is registered here:
public class EntityInit {
public static final DeferredRegister<EntityType<?>> ENTITY_TYPES = DeferredRegister.create(ForgeRegistries.ENTITIES, Catty.MOD_ID);
public static final RegistryObject<EntityType<PusheenEntity>> PUSHEEN_PROJECTILE = ENTITY_TYPES.register("pusheen_projectile", () -> EntityType.Builder.<PusheenEntity>of(PusheenEntity::new, MobCategory.MISC).sized(0.25F, 0.25F).clientTrackingRange(4).updateInterval(10).build("pusheen_projectile"));
}
Any help will be appreciated