116 lines
4.4 KiB
Java
116 lines
4.4 KiB
Java
package net.minecraft.commands.arguments.coordinates;
|
|
|
|
import com.mojang.brigadier.StringReader;
|
|
import com.mojang.brigadier.exceptions.CommandSyntaxException;
|
|
import net.minecraft.commands.CommandSourceStack;
|
|
import net.minecraft.world.phys.Vec2;
|
|
import net.minecraft.world.phys.Vec3;
|
|
|
|
public class WorldCoordinates implements Coordinates {
|
|
private final WorldCoordinate x;
|
|
private final WorldCoordinate y;
|
|
private final WorldCoordinate z;
|
|
|
|
public WorldCoordinates(WorldCoordinate p_120883_, WorldCoordinate p_120884_, WorldCoordinate p_120885_) {
|
|
this.x = p_120883_;
|
|
this.y = p_120884_;
|
|
this.z = p_120885_;
|
|
}
|
|
|
|
@Override
|
|
public Vec3 getPosition(CommandSourceStack p_120893_) {
|
|
Vec3 vec3 = p_120893_.getPosition();
|
|
return new Vec3(this.x.get(vec3.x), this.y.get(vec3.y), this.z.get(vec3.z));
|
|
}
|
|
|
|
@Override
|
|
public Vec2 getRotation(CommandSourceStack p_120896_) {
|
|
Vec2 vec2 = p_120896_.getRotation();
|
|
return new Vec2((float)this.x.get(vec2.x), (float)this.y.get(vec2.y));
|
|
}
|
|
|
|
@Override
|
|
public boolean isXRelative() {
|
|
return this.x.isRelative();
|
|
}
|
|
|
|
@Override
|
|
public boolean isYRelative() {
|
|
return this.y.isRelative();
|
|
}
|
|
|
|
@Override
|
|
public boolean isZRelative() {
|
|
return this.z.isRelative();
|
|
}
|
|
|
|
@Override
|
|
public boolean equals(Object p_120900_) {
|
|
if (this == p_120900_) {
|
|
return true;
|
|
} else if (!(p_120900_ instanceof WorldCoordinates worldcoordinates)) {
|
|
return false;
|
|
} else if (!this.x.equals(worldcoordinates.x)) {
|
|
return false;
|
|
} else {
|
|
return !this.y.equals(worldcoordinates.y) ? false : this.z.equals(worldcoordinates.z);
|
|
}
|
|
}
|
|
|
|
public static WorldCoordinates parseInt(StringReader p_120888_) throws CommandSyntaxException {
|
|
int i = p_120888_.getCursor();
|
|
WorldCoordinate worldcoordinate = WorldCoordinate.parseInt(p_120888_);
|
|
if (p_120888_.canRead() && p_120888_.peek() == ' ') {
|
|
p_120888_.skip();
|
|
WorldCoordinate worldcoordinate1 = WorldCoordinate.parseInt(p_120888_);
|
|
if (p_120888_.canRead() && p_120888_.peek() == ' ') {
|
|
p_120888_.skip();
|
|
WorldCoordinate worldcoordinate2 = WorldCoordinate.parseInt(p_120888_);
|
|
return new WorldCoordinates(worldcoordinate, worldcoordinate1, worldcoordinate2);
|
|
} else {
|
|
p_120888_.setCursor(i);
|
|
throw Vec3Argument.ERROR_NOT_COMPLETE.createWithContext(p_120888_);
|
|
}
|
|
} else {
|
|
p_120888_.setCursor(i);
|
|
throw Vec3Argument.ERROR_NOT_COMPLETE.createWithContext(p_120888_);
|
|
}
|
|
}
|
|
|
|
public static WorldCoordinates parseDouble(StringReader p_120890_, boolean p_120891_) throws CommandSyntaxException {
|
|
int i = p_120890_.getCursor();
|
|
WorldCoordinate worldcoordinate = WorldCoordinate.parseDouble(p_120890_, p_120891_);
|
|
if (p_120890_.canRead() && p_120890_.peek() == ' ') {
|
|
p_120890_.skip();
|
|
WorldCoordinate worldcoordinate1 = WorldCoordinate.parseDouble(p_120890_, false);
|
|
if (p_120890_.canRead() && p_120890_.peek() == ' ') {
|
|
p_120890_.skip();
|
|
WorldCoordinate worldcoordinate2 = WorldCoordinate.parseDouble(p_120890_, p_120891_);
|
|
return new WorldCoordinates(worldcoordinate, worldcoordinate1, worldcoordinate2);
|
|
} else {
|
|
p_120890_.setCursor(i);
|
|
throw Vec3Argument.ERROR_NOT_COMPLETE.createWithContext(p_120890_);
|
|
}
|
|
} else {
|
|
p_120890_.setCursor(i);
|
|
throw Vec3Argument.ERROR_NOT_COMPLETE.createWithContext(p_120890_);
|
|
}
|
|
}
|
|
|
|
public static WorldCoordinates absolute(double p_175086_, double p_175087_, double p_175088_) {
|
|
return new WorldCoordinates(new WorldCoordinate(false, p_175086_), new WorldCoordinate(false, p_175087_), new WorldCoordinate(false, p_175088_));
|
|
}
|
|
|
|
public static WorldCoordinates absolute(Vec2 p_175090_) {
|
|
return new WorldCoordinates(
|
|
new WorldCoordinate(false, p_175090_.x), new WorldCoordinate(false, p_175090_.y), new WorldCoordinate(true, 0.0)
|
|
);
|
|
}
|
|
|
|
@Override
|
|
public int hashCode() {
|
|
int i = this.x.hashCode();
|
|
i = 31 * i + this.y.hashCode();
|
|
return 31 * i + this.z.hashCode();
|
|
}
|
|
} |