use of net.minecraft.world.entity.ai.goal.FloatGoal in project Tropicraft by Tropicraft.
the class JaguarEntity method registerGoals.
@Override
protected void registerGoals() {
this.goalSelector.addGoal(1, new FloatGoal(this));
this.goalSelector.addGoal(2, new LeapAtTargetGoal(this, 0.5F));
this.goalSelector.addGoal(3, new OcelotAttackGoal(this));
this.goalSelector.addGoal(4, new TemptGoal(this, 1.25, BREEDING_ITEMS.get(), false));
this.goalSelector.addGoal(5, new BreedGoal(this, 0.8));
this.goalSelector.addGoal(6, new FollowParentGoal(this, 1.25));
this.goalSelector.addGoal(7, new WaterAvoidingRandomStrollGoal(this, 0.8, 1e-5f));
this.goalSelector.addGoal(8, new LookAtPlayerGoal(this, Player.class, 10.0F));
this.targetSelector.addGoal(1, new NearestAttackableTargetGoal<>(this, WhiteLippedPeccaryEntity.class, 20, true, true, null));
}
use of net.minecraft.world.entity.ai.goal.FloatGoal 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));
}
}
use of net.minecraft.world.entity.ai.goal.FloatGoal in project Tropicraft by Tropicraft.
the class TropiSkellyEntity method registerGoals.
@Override
protected void registerGoals() {
goalSelector.addGoal(0, new FloatGoal(this));
goalSelector.addGoal(2, new MeleeAttackGoal(this, 1.0D, false));
goalSelector.addGoal(5, new MoveTowardsRestrictionGoal(this, 1.0D));
goalSelector.addGoal(7, new WaterAvoidingRandomStrollGoal(this, 1.0D));
goalSelector.addGoal(8, new LookAtPlayerGoal(this, Player.class, 8.0F));
goalSelector.addGoal(8, new RandomLookAroundGoal(this));
targetSelector.addGoal(1, new HurtByTargetGoal(this));
targetSelector.addGoal(2, new NearestAttackableTargetGoal<>(this, Player.class, true));
// TODO targetSelector.addGoal(3, new NearestAttackableTargetGoal<>(this, EntityAshen.class, false));
targetSelector.addGoal(3, new NearestAttackableTargetGoal<>(this, EntityKoaBase.class, false));
}
use of net.minecraft.world.entity.ai.goal.FloatGoal in project Tropicraft by Tropicraft.
the class TropiCreeperEntity method registerGoals.
@Override
protected void registerGoals() {
this.goalSelector.addGoal(1, new FloatGoal(this));
this.goalSelector.addGoal(2, new TropiCreeperSwellGoal(this));
this.goalSelector.addGoal(3, new AvoidEntityGoal<>(this, Ocelot.class, 6.0F, 1.0D, 1.2D));
this.goalSelector.addGoal(3, new AvoidEntityGoal<>(this, Cat.class, 6.0F, 1.0D, 1.2D));
this.goalSelector.addGoal(4, new MeleeAttackGoal(this, 1.0D, false));
this.goalSelector.addGoal(5, new WaterAvoidingRandomStrollGoal(this, 0.8D));
this.goalSelector.addGoal(6, new LookAtPlayerGoal(this, Player.class, 8.0F));
this.goalSelector.addGoal(6, new RandomLookAroundGoal(this));
this.targetSelector.addGoal(1, new NearestAttackableTargetGoal<>(this, Player.class, true));
this.targetSelector.addGoal(2, new HurtByTargetGoal(this));
}
Aggregations