Jump to content
View in the app

A better way to browse. Learn more.

Forge Forums

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Ababoude

Members
  • Joined

  • Last visited

Everything posted by Ababoude

  1. Hello ! I have a problem with my entity, when i use the command "/summon betterthings:sponge_sheep" my game crash : The crash log : ---- Minecraft Crash Report ---- // I bet Cylons wouldn't have this problem. Time: 21/11/20 16:50 Description: Unexpected error java.lang.NullPointerException: Unexpected error at net.minecraft.client.renderer.entity.EntityRendererManager.shouldRender(EntityRendererManager.java:239) ~[forge-1.16.3-34.1.25_mapped_snapshot_20201028-1.16.3-recomp.jar:?] {re:classloading,pl:accesstransformer:B,pl:runtimedistcleaner:A} at net.minecraft.client.renderer.WorldRenderer.updateCameraAndRender(WorldRenderer.java:1004) ~[forge-1.16.3-34.1.25_mapped_snapshot_20201028-1.16.3-recomp.jar:?] {re:classloading,pl:runtimedistcleaner:A} at net.minecraft.client.renderer.GameRenderer.renderWorld(GameRenderer.java:619) ~[forge-1.16.3-34.1.25_mapped_snapshot_20201028-1.16.3-recomp.jar:?] {re:classloading,pl:accesstransformer:B,pl:runtimedistcleaner:A} at net.minecraft.client.renderer.GameRenderer.updateCameraAndRender(GameRenderer.java:437) ~[forge-1.16.3-34.1.25_mapped_snapshot_20201028-1.16.3-recomp.jar:?] {re:classloading,pl:accesstransformer:B,pl:runtimedistcleaner:A} at net.minecraft.client.Minecraft.runGameLoop(Minecraft.java:979) ~[forge-1.16.3-34.1.25_mapped_snapshot_20201028-1.16.3-recomp.jar:?] {re:classloading,pl:accesstransformer:B,pl:runtimedistcleaner:A} at net.minecraft.client.Minecraft.run(Minecraft.java:589) ~[forge-1.16.3-34.1.25_mapped_snapshot_20201028-1.16.3-recomp.jar:?] {re:classloading,pl:accesstransformer:B,pl:runtimedistcleaner:A} at net.minecraft.client.main.Main.main(Main.java:184) ~[forge-1.16.3-34.1.25_mapped_snapshot_20201028-1.16.3-recomp.jar:?] {re:classloading,pl:runtimedistcleaner:A} at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_271] {} at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_271] {} at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_271] {} at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_271] {} at net.minecraftforge.userdev.FMLUserdevClientLaunchProvider.lambda$launchService$0(FMLUserdevClientLaunchProvider.java:52) ~[forge-1.16.3-34.1.25_mapped_snapshot_20201028-1.16.3-recomp.jar:?] {} at cpw.mods.modlauncher.LaunchServiceHandlerDecorator.launch(LaunchServiceHandlerDecorator.java:37) [modlauncher-7.0.1.jar:?] {} at cpw.mods.modlauncher.LaunchServiceHandler.launch(LaunchServiceHandler.java:54) [modlauncher-7.0.1.jar:?] {} at cpw.mods.modlauncher.LaunchServiceHandler.launch(LaunchServiceHandler.java:72) [modlauncher-7.0.1.jar:?] {} at cpw.mods.modlauncher.Launcher.run(Launcher.java:81) [modlauncher-7.0.1.jar:?] {} at cpw.mods.modlauncher.Launcher.main(Launcher.java:65) [modlauncher-7.0.1.jar:?] {} at net.minecraftforge.userdev.LaunchTesting.main(LaunchTesting.java:105) [forge-1.16.3-34.1.25_mapped_snapshot_20201028-1.16.3-recomp.jar:?] {} A detailed walkthrough of the error, its code path and all known details is as follows: --------------------------------------------------------------------------------------- -- Head -- Thread: Render thread Stacktrace: at net.minecraft.client.renderer.entity.EntityRendererManager.shouldRender(EntityRendererManager.java:239) ~[?:?] {re:classloading,pl:accesstransformer:B,pl:runtimedistcleaner:A} at net.minecraft.client.renderer.WorldRenderer.updateCameraAndRender(WorldRenderer.java:1004) ~[?:?] {re:classloading,pl:runtimedistcleaner:A} at net.minecraft.client.renderer.GameRenderer.renderWorld(GameRenderer.java:619) ~[?:?] {re:classloading,pl:accesstransformer:B,pl:runtimedistcleaner:A} -- Affected level -- Details: All players: 1 total; [ClientPlayerEntity['Dev'/29, l='ClientLevel', x=169.46, y=4.00, z=208.16]] Chunk stats: Client Chunk Cache: 121, 49 Level dimension: minecraft:overworld Level spawn location: World: (160,4,208), Chunk: (at 0,0,0 in 10,13; contains blocks 160,0,208 to 175,255,223), Region: (0,0; contains chunks 0,0 to 31,31, blocks 0,0,0 to 511,255,511) Level time: 1569 game time, 1569 day time Server brand: forge Server type: Integrated singleplayer server Stacktrace: at net.minecraft.client.world.ClientWorld.fillCrashReport(ClientWorld.java:465) ~[forge-1.16.3-34.1.25_mapped_snapshot_20201028-1.16.3-recomp.jar:?] {re:classloading,pl:runtimedistcleaner:A} at net.minecraft.client.Minecraft.addGraphicsAndWorldToCrashReport(Minecraft.java:2036) ~[forge-1.16.3-34.1.25_mapped_snapshot_20201028-1.16.3-recomp.jar:?] {re:classloading,pl:accesstransformer:B,pl:runtimedistcleaner:A} at net.minecraft.client.Minecraft.run(Minecraft.java:610) ~[forge-1.16.3-34.1.25_mapped_snapshot_20201028-1.16.3-recomp.jar:?] {re:classloading,pl:accesstransformer:B,pl:runtimedistcleaner:A} at net.minecraft.client.main.Main.main(Main.java:184) ~[forge-1.16.3-34.1.25_mapped_snapshot_20201028-1.16.3-recomp.jar:?] {re:classloading,pl:runtimedistcleaner:A} at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_271] {} at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_271] {} at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_271] {} at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_271] {} at net.minecraftforge.userdev.FMLUserdevClientLaunchProvider.lambda$launchService$0(FMLUserdevClientLaunchProvider.java:52) ~[forge-1.16.3-34.1.25_mapped_snapshot_20201028-1.16.3-recomp.jar:?] {} at cpw.mods.modlauncher.LaunchServiceHandlerDecorator.launch(LaunchServiceHandlerDecorator.java:37) [modlauncher-7.0.1.jar:?] {} at cpw.mods.modlauncher.LaunchServiceHandler.launch(LaunchServiceHandler.java:54) [modlauncher-7.0.1.jar:?] {} at cpw.mods.modlauncher.LaunchServiceHandler.launch(LaunchServiceHandler.java:72) [modlauncher-7.0.1.jar:?] {} at cpw.mods.modlauncher.Launcher.run(Launcher.java:81) [modlauncher-7.0.1.jar:?] {} at cpw.mods.modlauncher.Launcher.main(Launcher.java:65) [modlauncher-7.0.1.jar:?] {} at net.minecraftforge.userdev.LaunchTesting.main(LaunchTesting.java:105) [forge-1.16.3-34.1.25_mapped_snapshot_20201028-1.16.3-recomp.jar:?] {} -- System Details -- Details: Minecraft Version: 1.16.3 Minecraft Version ID: 1.16.3 Operating System: Windows 7 (amd64) version 6.1 Java Version: 1.8.0_271, Oracle Corporation Java VM Version: Java HotSpot(TM) 64-Bit Server VM (mixed mode), Oracle Corporation Memory: 297510080 bytes (283 MB) / 632291328 bytes (603 MB) up to 905969664 bytes (864 MB) CPUs: 4 JVM Flags: 1 total; -XX:HeapDumpPath=MojangTricksIntelDriversForPerformance_javaw.exe_minecraft.exe.heapdump ModLauncher: 7.0.1+78+master.e9771d8 ModLauncher launch target: fmluserdevclient ModLauncher naming: mcp ModLauncher services: /mixin-0.8.2.jar mixin PLUGINSERVICE /eventbus-3.0.3-service.jar eventbus PLUGINSERVICE /forge-1.16.3-34.1.25_mapped_snapshot_20201028-1.16.3-launcher.jar object_holder_definalize PLUGINSERVICE /forge-1.16.3-34.1.25_mapped_snapshot_20201028-1.16.3-launcher.jar runtime_enum_extender PLUGINSERVICE /accesstransformers-2.2.0-shadowed.jar accesstransformer PLUGINSERVICE /forge-1.16.3-34.1.25_mapped_snapshot_20201028-1.16.3-launcher.jar capability_inject_definalize PLUGINSERVICE /forge-1.16.3-34.1.25_mapped_snapshot_20201028-1.16.3-launcher.jar runtimedistcleaner PLUGINSERVICE /mixin-0.8.2.jar mixin TRANSFORMATIONSERVICE /forge-1.16.3-34.1.25_mapped_snapshot_20201028-1.16.3-launcher.jar fml TRANSFORMATIONSERVICE FML: 34.1 Forge: net.minecraftforge:34.1.25 FML Language Providers: [email protected] minecraft@1 Mod List: client-extra.jar Minecraft {[email protected] DONE} forge-1.16.3-34.1.25_mapped_snapshot_20201028-1.16.3-recomp.jar Forge {[email protected] DONE} main Better Things {betterthings@NONE DONE} Crash Report UUID: 48978d83-5432-4b36-9294-32205bef98cc Launched Version: MOD_DEV Backend library: LWJGL version 3.2.2 build 10 Backend API: Intel(R) HD Graphics GL version 2.1.0 - Build 8.15.10.2993, Intel GL Caps: Using framebuffer using ARB_framebuffer_object extension Using VBOs: Yes Is Modded: Definitely; Client brand changed to 'forge' Type: Client (map_client.txt) GPU Warnings: version: 2.1 Graphics mode: fast Resource Packs: Current Language: Français (France) CPU: 4x Intel(R) Core(TM) i5 CPU M 450 @ 2.40GHz This all script contain any informations about my entity : Main : package fr.ababoude.betterthings; import fr.ababoude.betterthings.block.Blocks; import fr.ababoude.betterthings.entities.ModEntityTypes; import fr.ababoude.betterthings.entities.passive.SpongeSheepEntity; import fr.ababoude.betterthings.item.Foods; import fr.ababoude.betterthings.item.Items; import net.minecraft.entity.ai.attributes.GlobalEntityTypeAttributes; import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.eventbus.api.IEventBus; import net.minecraftforge.fml.DeferredWorkQueue; import net.minecraftforge.fml.common.Mod; import net.minecraftforge.fml.event.lifecycle.FMLClientSetupEvent; import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext; @Mod(Main.MODID) public class Main { public static final String MODID = "betterthings"; public Main(){ IEventBus bus = FMLJavaModLoadingContext.get().getModEventBus(); bus.addListener(this::setup); bus.addListener(this::doClientStuff); ModEntityTypes.ENTITY_TYPES.register(bus); Items.ITEMS.register(bus); Foods.FOODS.register(bus); Blocks.BLOCKS.register(bus); MinecraftForge.EVENT_BUS.register(this); } private void setup(final FMLClientSetupEvent event) { DeferredWorkQueue.runLater(() -> { GlobalEntityTypeAttributes.put(ModEntityTypes.SPONGE_SHEEP.get(), SpongeSheepEntity.setCustomAttributes().create()); }); } private void doClientStuff(final FMLClientSetupEvent event) {} } ClientEventBusSubscriber : package fr.ababoude.betterthings.util; import fr.ababoude.betterthings.Main; import fr.ababoude.betterthings.client.renderer.entity.SpongeSheepRenderer; import fr.ababoude.betterthings.entities.ModEntityTypes; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.eventbus.api.SubscribeEvent; import net.minecraftforge.fml.client.registry.RenderingRegistry; import net.minecraftforge.fml.common.Mod; import net.minecraftforge.fml.event.lifecycle.FMLClientSetupEvent; @Mod.EventBusSubscriber(modid = Main.MODID, bus = Mod.EventBusSubscriber.Bus.MOD, value = Dist.CLIENT) public class ClientEventBusSubscriber { @SubscribeEvent public static void onClientSetup(FMLClientSetupEvent event) { RenderingRegistry.registerEntityRenderingHandler(ModEntityTypes.SPONGE_SHEEP.get(), SpongeSheepRenderer::new); } } ModEntityTypes : package fr.ababoude.betterthings.entities; import fr.ababoude.betterthings.Main; import fr.ababoude.betterthings.entities.passive.SpongeSheepEntity; import net.minecraft.entity.EntityClassification; import net.minecraft.util.ResourceLocation; import net.minecraftforge.fml.RegistryObject; import net.minecraftforge.registries.DeferredRegister; import net.minecraftforge.registries.ForgeRegistries; import net.minecraft.entity.EntityType; public class ModEntityTypes { public static final DeferredRegister<EntityType<?>> ENTITY_TYPES = DeferredRegister.create(ForgeRegistries.ENTITIES, Main.MODID); /** * .size = Taille de la Hitbox */ public static final RegistryObject<EntityType<SpongeSheepEntity>> SPONGE_SHEEP = ENTITY_TYPES.register("sponge_sheep", () -> EntityType.Builder.create(SpongeSheepEntity::new, EntityClassification.CREATURE) .size(0.9F, 1.3F) .build(new ResourceLocation(Main.MODID, "sponge_sheep").toString())); } SpongeSheepEntity : package fr.ababoude.betterthings.entities.passive; import fr.ababoude.betterthings.entities.ModEntityTypes; import net.minecraft.block.BlockState; import net.minecraft.entity.AgeableEntity; import net.minecraft.entity.EntityType; import net.minecraft.entity.MobEntity; import net.minecraft.entity.ai.attributes.AttributeModifierMap; import net.minecraft.entity.ai.attributes.Attributes; import net.minecraft.entity.ai.goal.*; import net.minecraft.entity.passive.AnimalEntity; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.Items; import net.minecraft.item.crafting.Ingredient; import net.minecraft.util.DamageSource; import net.minecraft.util.SoundEvent; import net.minecraft.util.SoundEvents; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; import net.minecraft.world.server.ServerWorld; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; import javax.annotation.Nullable; public class SpongeSheepEntity extends AnimalEntity { /** * Ingredient : Définis par quel ingrédients l'entité vas être attiré * IS_SHEARED : Crée un booléen qui vas servir a mettre en place le fait d'enlever la laine */ public static final Ingredient TEMPTATION_ITEMS = Ingredient.fromItems(Items.SPONGE, Items.WET_SPONGE); //private static final DataParameter<Boolean> IS_SHEARED = EntityDataManager.createKey(SpongeSheepEntity.class, DataSerializers.BOOLEAN); private int sheepTimer; private EatGrassGoal eatGrassGoal; public SpongeSheepEntity(EntityType<? extends SpongeSheepEntity> type, World worldIn) { super(type, worldIn); } /** * Définis ses paramètres de base (dans cette exemple, sa vie maximum et sa vitesse) */ //func_233666_p_ ---> registerAttributes() public static AttributeModifierMap.MutableAttribute setCustomAttributes() { return MobEntity.func_233666_p_() .createMutableAttribute(Attributes.MAX_HEALTH, 10.0D) .createMutableAttribute(Attributes.MOVEMENT_SPEED, 0.25D); } //@Override public AgeableEntity createChild(AgeableEntity ageable) { return ModEntityTypes.SPONGE_SHEEP.get().create(this.world); } /** * Définis les paramètres de cette entité, ex: sa vitesse en cas de panique est de 1,25D */ protected void registerGoals() { super.registerGoals(); this.eatGrassGoal = new EatGrassGoal(this); this.goalSelector.addGoal(0, new SwimGoal(this)); // La vitesse qu'il prend quand il nage this.goalSelector.addGoal(1, new PanicGoal(this, 1.25D)); // La vitesse qu'il prend quand il à peur this.goalSelector.addGoal(2, new BreedGoal(this, 1.0D)); this.goalSelector.addGoal(3, new TemptGoal(this, 1.1D, TEMPTATION_ITEMS, false)); this.goalSelector.addGoal(4, new FollowParentGoal(this, 1.1D)); this.goalSelector.addGoal(5, this.eatGrassGoal); this.goalSelector.addGoal(6, new WaterAvoidingRandomWalkingGoal(this, 1.0D)); this.goalSelector.addGoal(7, new LookAtGoal(this, PlayerEntity.class, 6.0F)); this.goalSelector.addGoal(8, new LookRandomlyGoal(this)); } /** * Définis l'expérience que le joueur obtiens lorsque l'entité est tuée */ @Override protected int getExperiencePoints(PlayerEntity player) { return 1 + this.world.rand.nextInt(4); } /** * Configure tous les sons de l'entité */ @Override protected SoundEvent getAmbientSound() { return SoundEvents.ENTITY_SHEEP_AMBIENT; } @Override protected SoundEvent getHurtSound(DamageSource damageSourceIn) { return SoundEvents.ENTITY_SHEEP_HURT; } @Override protected SoundEvent getDeathSound() { return SoundEvents.ENTITY_SHEEP_DEATH; } @Override protected void playStepSound(BlockPos pos, BlockState blockIn) { this.playSound(SoundEvents.ENTITY_SHEEP_STEP, 0.15F, 1.0F); } /** * Met à jour les tâches de l'AI, exemple: eatGrassGoal */ @Override protected void updateAITasks() { this.sheepTimer = this.eatGrassGoal.getEatingGrassTimer(); super.updateAITasks(); } @Nullable @Override public AgeableEntity func_241840_a(ServerWorld p_241840_1_, AgeableEntity p_241840_2_) { return null; } /** * Appelé fréquemment pour que l'entité puisse mettre à jour son état chaque fois que nécessaire. Par exemple, les zombies et les squelettes * l'utilise pour réagir à la lumière du soleil et commencer à brûler. */ public void livingTick() { if (this.world.isRemote) { this.sheepTimer = Math.max(0, this.sheepTimer - 1); } super.livingTick(); } /** * Handler pour {@link World#setEntityState} */ @OnlyIn(Dist.CLIENT) public void handleStatusUpdate(byte id) { if (id == 10) { this.sheepTimer = 40; } else { super.handleStatusUpdate(id); } } /* public ActionResultType func_230254_b_(PlayerEntity p_230254_1_, Hand p_230254_2_) { ItemStack itemstack = p_230254_1_.getHeldItem(p_230254_2_); if (false && itemstack.getItem() == Items.SHEARS) { //Forge: Moved to onSheared if (!this.world.isRemote && this.isShearable()) { this.shear(SoundCategory.PLAYERS); itemstack.damageItem(1, p_230254_1_, (p_213613_1_) -> p_213613_1_.sendBreakAnimation(p_230254_2_)); return ActionResultType.SUCCESS; } else { return ActionResultType.CONSUME; } } else { return super.func_230254_b_(p_230254_1_, p_230254_2_); } } public void shear(SoundCategory category) { this.world.playMovingSound(null, this, SoundEvents.ENTITY_SHEEP_SHEAR, category, 1.0F, 1.0F); this.setSheared(true); //if (SpongeMode == "Sponge") { this.entityDropItem(Items.SPONGE); //} else { // this.entityDropItem(Items.WET_SPONGE); //} } public boolean isShearable() { return this.isAlive() && this.getSheared() && !this.isChild(); } //@Override public boolean getSheared() { return this.dataManager.get(IS_SHEARED); } /** * make a sheep sheared if set to true *//* public void setSheared(boolean sheared) { //boolean bol = this.dataManager.get(IS_SHEARED); this.dataManager.set(IS_SHEARED, sheared); } public void eatGrassBonus() { //this.setSheared(false); if (this.isChild()) { this.addGrowth(60); } } @Nullable public ILivingEntityData onInitialSpawn(IServerWorld worldIn, DifficultyInstance difficultyIn, SpawnReason reason, @Nullable ILivingEntityData spawnDataIn, @Nullable CompoundNBT dataTag) { return super.onInitialSpawn(worldIn, difficultyIn, reason, spawnDataIn, dataTag); } /* public AgeableEntity func_241840_a(ServerWorld p_241840_1_, AgeableEntity p_241840_2_) { return null; } } protected float getStandingEyeHeight(Pose poseIn, EntitySize sizeIn) { return 0.95F * sizeIn.height; } } */ } SpongeSheepRenderer : package fr.ababoude.betterthings.client.renderer.entity; import fr.ababoude.betterthings.Main; import fr.ababoude.betterthings.entities.passive.SpongeSheepEntity; import net.minecraft.client.renderer.entity.EntityRendererManager; import fr.ababoude.betterthings.client.renderer.entity.model.SpongeSheepModel; import net.minecraft.client.renderer.entity.MobRenderer; import net.minecraft.util.ResourceLocation; public class SpongeSheepRenderer extends MobRenderer<SpongeSheepEntity, SpongeSheepModel<SpongeSheepEntity>>{ protected static final ResourceLocation TEXTURE = new ResourceLocation(Main.MODID, "textures/entity/sheep/spongeSheep_base.png"); public SpongeSheepRenderer(EntityRendererManager renderManagerIn) { super(renderManagerIn, new SpongeSheepModel<>(), 0.7F); } @Override public ResourceLocation getEntityTexture(SpongeSheepEntity entity) { return TEXTURE; } } SpongeSheepModel : package fr.ababoude.betterthings.client.renderer.entity.model; import com.mojang.blaze3d.matrix.MatrixStack; import com.mojang.blaze3d.vertex.IVertexBuilder; import fr.ababoude.betterthings.entities.passive.SpongeSheepEntity; import net.minecraft.client.renderer.entity.model.EntityModel; import net.minecraft.client.renderer.model.ModelRenderer; import net.minecraft.util.math.MathHelper; public class SpongeSheepModel<T extends SpongeSheepEntity> extends EntityModel<T> { private final ModelRenderer body; private final ModelRenderer head; private final ModelRenderer BackLeft; private final ModelRenderer BackRight; private final ModelRenderer FrontLeft; private final ModelRenderer FrontRight; public SpongeSheepModel() { textureWidth = 64; textureHeight = 32; body = new ModelRenderer(this); body.setRotationPoint(0.0F, 9.0F, 0.0F); setRotationAngle(body, 1.5708F, 0.0F, 0.0F); body.setTextureOffset(28, 8).addBox(-4.0F, -8.0F, -3.0F, 8.0F, 16.0F, 6.0F, 0.0F, true); head = new ModelRenderer(this); head.setRotationPoint(0.0F, 5.0F, -6.0F); head.setTextureOffset(0, 0).addBox(-3.0F, -3.0F, -8.0F, 6.0F, 6.0F, 8.0F, 0.0F, true); BackLeft = new ModelRenderer(this); BackLeft.setRotationPoint(3.0F, 12.0F, 7.0F); BackLeft.setTextureOffset(0, 16).addBox(-2.0F, 0.0F, -2.0F, 4.0F, 12.0F, 4.0F, 0.0F, true); BackRight = new ModelRenderer(this); BackRight.setRotationPoint(-3.0F, 12.0F, 7.0F); BackRight.setTextureOffset(0, 16).addBox(-2.0F, 0.0F, -2.0F, 4.0F, 12.0F, 4.0F, 0.0F, true); FrontLeft = new ModelRenderer(this); FrontLeft.setRotationPoint(3.0F, 12.0F, -5.0F); FrontLeft.setTextureOffset(0, 16).addBox(-2.0F, 0.0F, -2.0F, 4.0F, 12.0F, 4.0F, 0.0F, true); FrontRight = new ModelRenderer(this); FrontRight.setRotationPoint(-3.0F, 12.0F, -5.0F); FrontRight.setTextureOffset(0, 16).addBox(-2.0F, 0.0F, -2.0F, 4.0F, 12.0F, 4.0F, 0.0F, true); } @Override public void render(MatrixStack matrixStack, IVertexBuilder buffer, int packedLight, int packedOverlay, float red, float green, float blue, float alpha){ body.render(matrixStack, buffer, packedLight, packedOverlay); head.render(matrixStack, buffer, packedLight, packedOverlay); BackLeft.render(matrixStack, buffer, packedLight, packedOverlay); BackRight.render(matrixStack, buffer, packedLight, packedOverlay); FrontLeft.render(matrixStack, buffer, packedLight, packedOverlay); FrontRight.render(matrixStack, buffer, packedLight, packedOverlay); } public void setRotationAngle(ModelRenderer modelRenderer, float x, float y, float z) { modelRenderer.rotateAngleX = x; modelRenderer.rotateAngleY = y; modelRenderer.rotateAngleZ = z; } @Override public void setRotationAngles(T entityIn, float limbSwing, float limbSwingAmount, float ageInTicks, float netHeadYaw, float headPitch) { this.head.rotateAngleX = headPitch * ((float)Math.PI / 180F); this.head.rotateAngleY = netHeadYaw * ((float)Math.PI / 180F); this.body.rotateAngleX = ((float)Math.PI / 2F); this.BackRight.rotateAngleX = MathHelper.cos(limbSwing * 0.6662F) * 1.4F * limbSwingAmount; this.BackLeft.rotateAngleX = MathHelper.cos(limbSwing * 0.6662F + (float)Math.PI) * 1.4F * limbSwingAmount; this.FrontRight.rotateAngleX = MathHelper.cos(limbSwing * 0.6662F + (float)Math.PI) * 1.4F * limbSwingAmount; this.FrontLeft.rotateAngleX = MathHelper.cos(limbSwing * 0.6662F) * 1.4F * limbSwingAmount; } } Thank you for the little look ! bye !

Important Information

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

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.