use of net.tropicraft.core.common.entity.ai.EntityAIAvoidEntityOnLowHealth 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));
}
}
Aggregations