Code/net/minecraft/commands/arguments/coordinates/WorldCoordinates.java

116 lines
4.4 KiB
Java
Raw Normal View History

2025-07-01 06:20:03 +00:00
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();
}
}