Jump to content

Ababoude

Members
  • Posts

    1
  • Joined

  • Last visited

Posts 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: 
    		javafml@34.1
    		minecraft@1
    	Mod List: 
    		client-extra.jar Minecraft {minecraft@1.16.3 DONE}
    		forge-1.16.3-34.1.25_mapped_snapshot_20201028-1.16.3-recomp.jar Forge {forge@34.1.25 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 !

×
×
  • Create New...

Important Information

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