Search in sources :

Example 1 with EntityAIGoneFishin

use of net.tropicraft.core.common.entity.ai.EntityAIGoneFishin in project Tropicraft by Tropicraft.

the class EntityKoaBase method updateUniqueEntityAI.

/*public void initTrades() {

        this.offers = new MerchantOffers();





        MerchantRecipeList list = new MerchantRecipeList();

        //stack count given is the base amount that will be multiplied based on value of currency traded for

        //item worth notes:
        //cooked marlin restores double that of cooked fish
        //1 leather drops, 4+ scales drop per mob

        if (getRole() == Roles.FISHERMAN) {

            addTradeForCurrencies(list, new ItemStack(Items.TROPICAL_FISH, 5));
            addTradeForCurrencies(list, new ItemStack(ItemRegistry.fishingNet, 1));
            addTradeForCurrencies(list, new ItemStack(ItemRegistry.fishingRod, 1));
            addTradeForCurrencies(list, new ItemStack(ItemRegistry.freshMarlin, 3));
            addTradeForCurrencies(list, new ItemStack(ItemRegistry.fertilizer, 5));

            //TODO: 1.14 fix
            for (int i = 0; i < EntityTropicalFish.NAMES.length; i++) {
                addTradeForCurrencies(list, new ItemStack(ItemRegistry.rawTropicalFish, 1, i));
            }
            for (int i = 0; i < ItemRiverFish.FISH_COLORS.length; i++) {
                addTradeForCurrencies(list, new ItemStack(ItemRegistry.rawRiverFish, 1, i));
            }

        } else if (getRole() == Roles.HUNTER) {

            addTradeForCurrencies(list, new ItemStack(ItemRegistry.frogLeg, 5));
            addTradeForCurrencies(list, new ItemStack(ItemRegistry.iguanaLeather, 2));
            addTradeForCurrencies(list, new ItemStack(ItemRegistry.scale, 5));

        }

        try {
            _buyingList.set(this, list);
        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }*/
/*public void addTradeForCurrencies(MerchantRecipeList list, ItemStack sell) {
        double pearlWhiteWorth = 1;
        double pearlBlackWorth = 1.5D;

        List<Double> listTradeCosts = new ArrayList<>();

        ItemStack stack1 = sell.copy();
        stack1.setCount((int)Math.round(sell.getCount() * pearlWhiteWorth));
        list.add(new MerchantRecipe(new ItemStack(ItemRegistry.whitePearl), stack1));

        ItemStack stack2 = sell.copy();
        stack2.setCount((int)Math.round(sell.getCount() * pearlBlackWorth));
        list.add(new MerchantRecipe(new ItemStack(ItemRegistry.blackPearl), stack2));

    }*/
public void updateUniqueEntityAI() {
    // TODO: 1.14 maybe not needed, since villagers use diff system
    /*Set<GoalSelector.EntityAITaskEntry> executingTaskEntries = ReflectionHelper.getPrivateValue(GoalSelector.class, this.goalSelector, "field_75780_b", "executingTaskEntries");
        if (executingTaskEntries != null) {
            for (GoalSelector.EntityAITaskEntry entry : this.goalSelector.taskEntries) {
                entry.action.resetTask();
            }
            executingTaskEntries.clear();
        }

        Set<GoalSelector.EntityAITaskEntry> executingTaskEntries2 = ReflectionHelper.getPrivateValue(GoalSelector.class, this.targetSelector, "field_75780_b", "executingTaskEntries");
        if (executingTaskEntries2 != null) {
            for (GoalSelector.EntityAITaskEntry entry : this.targetSelector.taskEntries) {
                entry.action.resetTask();
            }
            executingTaskEntries2.clear();
        }*/
    /*this.goalSelector.taskEntries.clear();
        this.targetSelector.taskEntries.clear();*/
    this.goalSelector.getRunningGoals().forEach(WrappedGoal::stop);
    this.targetSelector.getRunningGoals().forEach(WrappedGoal::stop);
    int curPri = 0;
    this.goalSelector.addGoal(curPri++, new FloatGoal(this));
    this.goalSelector.addGoal(curPri++, new EntityAIAvoidEntityOnLowHealth(this, LivingEntity.class, ENEMY_PREDICATE, 12.0F, 1.4D, 1.4D, 15F));
    this.goalSelector.addGoal(curPri++, new EntityAIEatToHeal(this));
    this.goalSelector.addGoal(curPri++, new TradeWithPlayerGoal(this));
    this.goalSelector.addGoal(curPri++, new MeleeAttackGoal(this, 1F, true) {

        @Override
        public void start() {
            super.start();
            if (this.mob instanceof EntityKoaBase) {
                ((EntityKoaBase) this.mob).setFightingItem();
            }
        }

        @Override
        protected double getAttackReachSqr(LivingEntity attackTarget) {
            return this.mob.getType().getDimensions().width * 2.5F * this.mob.getType().getDimensions().width * 2.5F + attackTarget.getType().getDimensions().width;
        }
    });
    this.goalSelector.addGoal(curPri++, new EntityAITemptHelmet(this, 1.0D, false, TEMPTATION_ITEMS));
    this.goalSelector.addGoal(curPri++, new MoveTowardsRestrictionGoal(this, 1D));
    this.goalSelector.addGoal(curPri++, new EntityAIKoaMate(this));
    this.goalSelector.addGoal(curPri++, new EntityAIChillAtFire(this));
    this.goalSelector.addGoal(curPri++, new EntityAIPartyTime(this));
    if (canFish()) {
        this.goalSelector.addGoal(curPri++, new EntityAIGoneFishin(this));
    }
    if (isBaby()) {
        this.goalSelector.addGoal(curPri++, new EntityAIPlayKoa(this, 1.2D));
    }
    this.goalSelector.addGoal(curPri, new LookAtPlayerGoal(this, Player.class, 3.0F, 1.0F));
    this.goalSelector.addGoal(curPri++, new EntityAIWanderNotLazy(this, 1D, 40));
    this.goalSelector.addGoal(curPri++, new LookAtPlayerGoal(this, Mob.class, 8.0F));
    this.targetSelector.addGoal(1, new HurtByTargetGoal(this));
    // i dont think this one works, change to predicate
    if (canHunt()) {
        this.targetSelector.addGoal(2, new NearestAttackableTargetGoal(this, LivingEntity.class, 10, true, false, ENEMY_PREDICATE));
    }
}
Also used : AgeableMob(net.minecraft.world.entity.AgeableMob) Mob(net.minecraft.world.entity.Mob) Player(net.minecraft.world.entity.player.Player) MoveTowardsRestrictionGoal(net.minecraft.world.entity.ai.goal.MoveTowardsRestrictionGoal) EntityAIChillAtFire(net.tropicraft.core.common.entity.ai.EntityAIChillAtFire) EntityAIKoaMate(net.tropicraft.core.common.entity.ai.EntityAIKoaMate) HurtByTargetGoal(net.minecraft.world.entity.ai.goal.target.HurtByTargetGoal) NearestAttackableTargetGoal(net.minecraft.world.entity.ai.goal.target.NearestAttackableTargetGoal) WrappedGoal(net.minecraft.world.entity.ai.goal.WrappedGoal) EntityAIEatToHeal(net.tropicraft.core.common.entity.ai.EntityAIEatToHeal) LivingEntity(net.minecraft.world.entity.LivingEntity) EntityAITemptHelmet(net.tropicraft.core.common.entity.ai.EntityAITemptHelmet) EntityAIGoneFishin(net.tropicraft.core.common.entity.ai.EntityAIGoneFishin) LookAtPlayerGoal(net.minecraft.world.entity.ai.goal.LookAtPlayerGoal) EntityAIAvoidEntityOnLowHealth(net.tropicraft.core.common.entity.ai.EntityAIAvoidEntityOnLowHealth) MeleeAttackGoal(net.minecraft.world.entity.ai.goal.MeleeAttackGoal) EntityAIPartyTime(net.tropicraft.core.common.entity.ai.EntityAIPartyTime) EntityAIPlayKoa(net.tropicraft.core.common.entity.ai.EntityAIPlayKoa) TradeWithPlayerGoal(net.minecraft.world.entity.ai.goal.TradeWithPlayerGoal) EntityAIWanderNotLazy(net.tropicraft.core.common.entity.ai.EntityAIWanderNotLazy) FloatGoal(net.minecraft.world.entity.ai.goal.FloatGoal)

Aggregations

AgeableMob (net.minecraft.world.entity.AgeableMob)1 LivingEntity (net.minecraft.world.entity.LivingEntity)1 Mob (net.minecraft.world.entity.Mob)1 FloatGoal (net.minecraft.world.entity.ai.goal.FloatGoal)1 LookAtPlayerGoal (net.minecraft.world.entity.ai.goal.LookAtPlayerGoal)1 MeleeAttackGoal (net.minecraft.world.entity.ai.goal.MeleeAttackGoal)1 MoveTowardsRestrictionGoal (net.minecraft.world.entity.ai.goal.MoveTowardsRestrictionGoal)1 TradeWithPlayerGoal (net.minecraft.world.entity.ai.goal.TradeWithPlayerGoal)1 WrappedGoal (net.minecraft.world.entity.ai.goal.WrappedGoal)1 HurtByTargetGoal (net.minecraft.world.entity.ai.goal.target.HurtByTargetGoal)1 NearestAttackableTargetGoal (net.minecraft.world.entity.ai.goal.target.NearestAttackableTargetGoal)1 Player (net.minecraft.world.entity.player.Player)1 EntityAIAvoidEntityOnLowHealth (net.tropicraft.core.common.entity.ai.EntityAIAvoidEntityOnLowHealth)1 EntityAIChillAtFire (net.tropicraft.core.common.entity.ai.EntityAIChillAtFire)1 EntityAIEatToHeal (net.tropicraft.core.common.entity.ai.EntityAIEatToHeal)1 EntityAIGoneFishin (net.tropicraft.core.common.entity.ai.EntityAIGoneFishin)1 EntityAIKoaMate (net.tropicraft.core.common.entity.ai.EntityAIKoaMate)1 EntityAIPartyTime (net.tropicraft.core.common.entity.ai.EntityAIPartyTime)1 EntityAIPlayKoa (net.tropicraft.core.common.entity.ai.EntityAIPlayKoa)1 EntityAITemptHelmet (net.tropicraft.core.common.entity.ai.EntityAITemptHelmet)1