-
Notifications
You must be signed in to change notification settings - Fork 497
/
RobotAIBase.java
executable file
·91 lines (70 loc) · 1.89 KB
/
RobotAIBase.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
/**
* Copyright (c) 2011-2014, SpaceToad and the BuildCraft Team
* http://www.mod-buildcraft.com
*
* BuildCraft is distributed under the terms of the Minecraft Mod Public
* License 1.0, or MMPL. Please check the contents of the license located in
* http://www.mod-buildcraft.com/MMPL-1.0.txt
*/
package buildcraft.core.robots;
import net.minecraft.entity.ai.EntityAIBase;
import net.minecraft.nbt.NBTTagCompound;
public class RobotAIBase extends EntityAIBase {
protected float destX, destY, destZ;
protected double dirX, dirY, dirZ;
protected EntityRobot robot;
private boolean isStarted = false;
public RobotAIBase(EntityRobot iRobot) {
robot = iRobot;
}
public void setDestination(EntityRobot robot, float x, float y, float z) {
robot.isDocked = false;
robot.currentDockingStation = null;
destX = x;
destY = y;
destZ = z;
dirX = destX - robot.posX;
dirY = destY - robot.posY;
dirZ = destZ - robot.posZ;
double magnitude = Math.sqrt(dirX * dirX + dirY * dirY + dirZ * dirZ);
dirX /= magnitude;
dirY /= magnitude;
dirZ /= magnitude;
robot.motionX = dirX / 10F;
robot.motionY = dirY / 10F;
robot.motionZ = dirZ / 10F;
}
@Override
public void updateTask() {
super.updateTask();
if (!isStarted) {
start();
isStarted = true;
}
}
public void writeToNBT(NBTTagCompound nbt) {
nbt.setFloat("destX", destX);
nbt.setFloat("destY", destY);
nbt.setFloat("destZ", destZ);
nbt.setDouble("dirX", dirX);
nbt.setDouble("dirY", dirY);
nbt.setDouble("dirZ", dirZ);
}
public void readFromNBT(NBTTagCompound nbt) {
destX = nbt.getFloat("destX");
destY = nbt.getFloat("destY");
destZ = nbt.getFloat("destZ");
dirX = nbt.getDouble("dirX");
dirY = nbt.getDouble("dirY");
dirZ = nbt.getDouble("dirZ");
}
@Override
public boolean shouldExecute() {
return true;
}
public boolean isDone() {
return false;
}
public void start() {
}
}