/
alexmakov
/
Minecraft_Java
Обзор
Документация
Войти
/
alexmakov
/
Minecraft_Java
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
src/main/java/com/mojang/minecraft/mob/ai/BasicAI.java
119 строк
3 KB
Oliver Yasuna
Fixed walking on water. Close #2.
04 окт 2012, 00:19
04 окт 2012, 00:19
17a47fc
Код
Авторство
О чём код?
package com.mojang.minecraft.mob.ai; import com.mojang.minecraft.Entity; import com.mojang.minecraft.level.Level; import com.mojang.minecraft.mob.Mob; import com.mojang.minecraft.mob.ai.AI; import java.util.List; import java.util.Random; public class BasicAI extends AI { public static final long serialVersionUID = 0L; public Random random = new Random(); public float xxa; public float yya; protected float yRotA; public Level level; public Mob mob; public boolean jumping = false; protected int attackDelay = 0; public float runSpeed = 0.7F; protected int noActionTime = 0; public Entity attackTarget = null; public void tick(Level var1, Mob var2) { ++this.noActionTime; Entity var3; if(this.noActionTime > 600 && this.random.nextInt(800) == 0 && (var3 = var1.getPlayer()) != null) { float var4 = var3.x - var2.x; float var5 = var3.y - var2.y; float var6 = var3.z - var2.z; if(var4 * var4 + var5 * var5 + var6 * var6 < 1024.0F) { this.noActionTime = 0; } else { var2.remove(); } } this.level = var1; this.mob = var2; if(this.attackDelay > 0) { --this.attackDelay; } if(var2.health <= 0) { this.jumping = false; this.xxa = 0.0F; this.yya = 0.0F; this.yRotA = 0.0F; } else { this.update(); } boolean var7 = var2.isInWater(); boolean var9 = var2.isInLava(); if(this.jumping) { if(var7) { var2.yd += 0.04F; } else if(var9) { var2.yd += 0.04F; } else if(var2.onGround) { this.jumpFromGround(); } } this.xxa *= 0.98F; this.yya *= 0.98F; this.yRotA *= 0.9F; var2.travel(this.xxa, this.yya); List var11; if((var11 = var1.findEntities(var2, var2.bb.grow(0.2F, 0.0F, 0.2F))) != null && var11.size() > 0) { for(int var8 = 0; var8 < var11.size(); ++var8) { Entity var10; if((var10 = (Entity)var11.get(var8)).isPushable()) { var10.push(var2); } } } } protected void jumpFromGround() { this.mob.yd = 0.42F; } protected void update() { if(this.random.nextFloat() < 0.07F) { this.xxa = (this.random.nextFloat() - 0.5F) * this.runSpeed; this.yya = this.random.nextFloat() * this.runSpeed; } this.jumping = this.random.nextFloat() < 0.01F; if(this.random.nextFloat() < 0.04F) { this.yRotA = (this.random.nextFloat() - 0.5F) * 60.0F; } this.mob.yRot += this.yRotA; this.mob.xRot = (float)this.defaultLookAngle; if(this.attackTarget != null) { this.yya = this.runSpeed; this.jumping = this.random.nextFloat() < 0.04F; } boolean var1 = this.mob.isInWater(); boolean var2 = this.mob.isInLava(); if(var1 || var2) { this.jumping = this.random.nextFloat() < 0.8F; } } public void beforeRemove() {} public void hurt(Entity var1, int var2) { super.hurt(var1, var2); this.noActionTime = 0; } }