Jump to content

Brandonbr1_nug

Members
  • Posts

    7
  • Joined

  • Last visited

Posts posted by Brandonbr1_nug

  1. @RideableEntitiesModElements.ModElement.Tag
    public class BabytigerEntity extends RideableEntitiesModElements.ModElement {
    	public static EntityType entity = (EntityType.Builder.<CustomEntity>create(CustomEntity::new, EntityClassification.MONSTER)
    			.setShouldReceiveVelocityUpdates(true).setTrackingRange(64).setUpdateInterval(3).setCustomClientFactory(CustomEntity::new)
    			.size(0.6f, 1.8f)).build("babytiger").setRegistryName("babytiger");
    	public BabytigerEntity(RideableEntitiesModElements instance) {
    		super(instance, 4);
    		FMLJavaModLoadingContext.get().getModEventBus().register(new BabytigerRenderer.ModelRegisterHandler());
    		FMLJavaModLoadingContext.get().getModEventBus().register(new EntityAttributesRegisterHandler());
    		MinecraftForge.EVENT_BUS.register(this);
    	}
    
    	@Override
    	public void initElements() {
    		elements.entities.add(() -> entity);
    		elements.items
    				.add(() -> new SpawnEggItem(entity, -1, -1, new Item.Properties().group(ItemGroup.MISC)).setRegistryName("babytiger_spawn_egg"));
    	}
    
    	@SubscribeEvent
    	public void addFeatureToBiomes(BiomeLoadingEvent event) {
    		event.getSpawns().getSpawner(EntityClassification.MONSTER).add(new MobSpawnInfo.Spawners(entity, 20, 4, 4));
    	}
    
    	@Override
    	public void init(FMLCommonSetupEvent event) {
    		EntitySpawnPlacementRegistry.register(entity, EntitySpawnPlacementRegistry.PlacementType.ON_GROUND, Heightmap.Type.MOTION_BLOCKING_NO_LEAVES,
    				MonsterEntity::canMonsterSpawn);
    	}
    	private static class EntityAttributesRegisterHandler {
    		@SubscribeEvent
    		public void onEntityAttributeCreation(EntityAttributeCreationEvent event) {
    			AttributeModifierMap.MutableAttribute ammma = MobEntity.func_233666_p_();
    			ammma = ammma.createMutableAttribute(Attributes.MOVEMENT_SPEED, 0.8);
    			ammma = ammma.createMutableAttribute(Attributes.MAX_HEALTH, 10);
    			ammma = ammma.createMutableAttribute(Attributes.ARMOR, 0);
    			ammma = ammma.createMutableAttribute(Attributes.ATTACK_DAMAGE, 3);
    			event.put(entity, ammma.create());
    		}
    	}
    
    	public static class CustomEntity extends CreatureEntity {
    		public CustomEntity(FMLPlayMessages.SpawnEntity packet, World world) {
    			this(entity, world);
    		}
    
    		public CustomEntity(EntityType<CustomEntity> type, World world) {
    			super(type, world);
    			experienceValue = 0;
    			setNoAI(false);
    		}
    
    		@Override
    		public IPacket<?> createSpawnPacket() {
    			return NetworkHooks.getEntitySpawningPacket(this);
    		}
    
    		@Override
    		protected void registerGoals() {
    			super.registerGoals();
    			this.goalSelector.addGoal(1, new MeleeAttackGoal(this, 1.2, false));
    			this.goalSelector.addGoal(2, new RandomWalkingGoal(this, 1));
    			this.targetSelector.addGoal(3, new HurtByTargetGoal(this));
    			this.goalSelector.addGoal(4, new LookRandomlyGoal(this));
    			this.goalSelector.addGoal(5, new SwimGoal(this));
    		}
    
    		@Override
    		public CreatureAttribute getCreatureAttribute() {
    			return CreatureAttribute.UNDEFINED;
    		}
    
    		@Override
    		public net.minecraft.util.SoundEvent getHurtSound(DamageSource ds) {
    			return (net.minecraft.util.SoundEvent) ForgeRegistries.SOUND_EVENTS.getValue(new ResourceLocation("entity.generic.hurt"));
    		}
    
    		@Override
    		public net.minecraft.util.SoundEvent getDeathSound() {
    			return (net.minecraft.util.SoundEvent) ForgeRegistries.SOUND_EVENTS.getValue(new ResourceLocation("entity.generic.death"));
    		}
    
    		@Override
    		public ActionResultType func_230254_b_(PlayerEntity sourceentity, Hand hand) {
    			ItemStack itemstack = sourceentity.getHeldItem(hand);
    			ActionResultType retval = ActionResultType.func_233537_a_(this.world.isRemote());
    			super.func_230254_b_(sourceentity, hand);
    			sourceentity.startRiding(this);
    			return retval;
    		}
    
    		@Override
    		public void travel(Vector3d dir) {
    			Entity entity = this.getPassengers().isEmpty() ? null : (Entity) this.getPassengers().get(0);
    			if (this.isBeingRidden()) {
    				this.rotationYaw = entity.rotationYaw;
    				this.prevRotationYaw = this.rotationYaw;
    				this.rotationPitch = entity.rotationPitch * 0.5F;
    				this.setRotation(this.rotationYaw, this.rotationPitch);
    				this.jumpMovementFactor = this.getAIMoveSpeed() * 0.15F;
    				this.renderYawOffset = entity.rotationYaw;
    				this.rotationYawHead = entity.rotationYaw;
    				this.stepHeight = 1.0F;
    				if (entity instanceof LivingEntity) {
    					this.setAIMoveSpeed((float) this.getAttributeValue(Attributes.MOVEMENT_SPEED));
    					float forward = ((LivingEntity) entity).moveForward;
    					float strafe = ((LivingEntity) entity).moveStrafing;
    					super.travel(new Vector3d(strafe, 0, forward));
    				}
    				this.prevLimbSwingAmount = this.limbSwingAmount;
    				double d1 = this.getPosX() - this.prevPosX;
    				double d0 = this.getPosZ() - this.prevPosZ;
    				float f1 = MathHelper.sqrt(d1 * d1 + d0 * d0) * 4.0F;
    				if (f1 > 1.0F)
    					f1 = 1.0F;
    				this.limbSwingAmount += (f1 - this.limbSwingAmount) * 0.4F;
    				this.limbSwing += this.limbSwingAmount;
    				return;
    			}
    			this.stepHeight = 0.5F;
    			this.jumpMovementFactor = 0.02F;
    			super.travel(dir);
    		}
    	}
    }
    

    ok thanks and for the people that want to copy paste here is the code

  2. Hi I would like to know how you would make a custom mob rideable and how to change it rideable speed

     

     

     

    code:

     

    public class Ostrich extends AnimalEnity {
    
    
      public static final OST_DROP = Ingredient.from.Items(Items.RAW_BEEF);
    
      public Ostrich(EntityType<? extends AnimalEnity> type World worldIn) {
        super (type , worldIn);
      }
    
      public static AttributeModifierMap.MutableAttribute setCustomAttributes() {
        return MobEntity.createLivingAttributes()
        .add(Attributes.MAX_HEALTH, 10)
        .add(Attributes.MOVEMENT_SPEED, 0.2D)
        .add(Attributes.FOLLOW_RANGE, 10);
      }
    
    
      @Overide
      protected  void registergoals () {
        super.registergoals()
            this.eatGrassGoal = new EatGrassGoal(this);
            this.goalSelector.addGoal(0, new SwimGoal(this));
            this.goalSelector.addGoal(1, new PanicGoal(this, 1.25D));
            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));
      }
    
    
      // tmp sounds
       @Overide
       protected SoundEvent getAmbientSound() { return SoundEvents.ENTITY_PARROT_AMBIENT; }
    
      //tmp sounds
        @Override
        protected SoundEvent getDeathSound() { return SoundEvents.ENTITY_PARROT_DEATH; }
    
      
    
    
      @Nullable
      @Overide
      public AgableEnity createChild(AgeableEntity ageable){
        return null;
      }
    
    }

    currently it only walks around and only eats grass

×
×
  • Create New...

Important Information

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