classpublicPriority 3
LocationRadiusProvider
com.hypixel.hytale.builtin.adventure.objectives.config.worldlocationproviders.LocationRadiusProvider
extends WorldLocationProvider
4
Methods
4
Public Methods
2
Fields
1
Constructors
Constants
BuilderCodec<LocationRadiusProvider>CODEC= BuilderCodec.builder(LocationRadiusProvider.class, LocationRadiusProvider::new, BASE_CODEC)
...
Constructors
public
LocationRadiusProvider()Methods
Public Methods (4)
public
boolean equals(Object o)@Override
public
int hashCode()@Override
public
Vector3i runCondition(World world, Vector3i position)@Nonnull@Override
public
String toString()@Nonnull@Override
Fields
Protected Fields (2)
protected
int maxRadiusprotected
int minRadiusInheritance
Parent
Current
Interface
Child
Use mouse wheel to zoom, drag to pan. Click nodes to navigate.
Related Classes
Source Code
package com.hypixel.hytale.builtin.adventure.objectives.config.worldlocationproviders;
import com.hypixel.hytale.codec.Codec;
import com.hypixel.hytale.codec.KeyedCodec;
import com.hypixel.hytale.codec.builder.BuilderCodec;
import com.hypixel.hytale.codec.validation.Validators;
import com.hypixel.hytale.math.util.ChunkUtil;
import com.hypixel.hytale.math.util.MathUtil;
import com.hypixel.hytale.math.util.TrigMathUtil;
import com.hypixel.hytale.math.vector.Vector3i;
import com.hypixel.hytale.server.core.universe.world.World;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
public class LocationRadiusProvider extends WorldLocationProvider {
public static final BuilderCodec<LocationRadiusProvider> CODEC = BuilderCodec.builder(LocationRadiusProvider.class, LocationRadiusProvider::new, BASE_CODEC)
.append(
new KeyedCodec<>("MinRadius", Codec.INTEGER),
(locationRadiusCondition, integer) -> locationRadiusCondition.minRadius = integer,
locationRadiusCondition -> locationRadiusCondition.minRadius
)
.addValidator(Validators.greaterThan(0))
.add()
.<Integer>append(
new KeyedCodec<>("MaxRadius", Codec.INTEGER),
(locationRadiusCondition, integer) -> locationRadiusCondition.maxRadius = integer,
locationRadiusCondition -> locationRadiusCondition.maxRadius
)
.addValidator(Validators.greaterThanOrEqual(1))
.add()
.afterDecode(
locationRadiusCondition -> {
if (locationRadiusCondition.minRadius > locationRadiusCondition.maxRadius) {
throw new IllegalArgumentException(
"LocationRadiusCondition.MinRadius ("
+ locationRadiusCondition.minRadius
+ ") needs to be greater than LocationRadiusCondition.MaxRadius ("
+ locationRadiusCondition.maxRadius
+ ")"
);
}
}
)
.build();
protected int minRadius = 10;
protected int maxRadius = 50;
public LocationRadiusProvider() {
}
@Nonnull
@Override
public Vector3i runCondition(@Nonnull World world, @Nonnull Vector3i position) {
double angle = Math.random() * 6.2831854820251465;
int radius = MathUtil.randomInt(this.minRadius, this.maxRadius);
Vector3i newPosition = position.clone();
newPosition.add((int)((float)radius * TrigMathUtil.cos(angle)), 0, (int)((float)radius * TrigMathUtil.sin(angle)));
newPosition.y = world.getChunk(ChunkUtil.indexChunkFromBlock(newPosition.x, newPosition.z)).getHeight(newPosition.x, newPosition.z);
return newPosition;
}
@Override
public boolean equals(@Nullable Object o) {
if (this == o) {
return true;
} else if (o != null && this.getClass() == o.getClass()) {
LocationRadiusProvider that = (LocationRadiusProvider)o;
return this.minRadius != that.minRadius ? false : this.maxRadius == that.maxRadius;
} else {
return false;
}
}
@Override
public int hashCode() {
int result = this.minRadius;
return 31 * result + this.maxRadius;
}
@Nonnull
@Override
public String toString() {
return "LocationRadiusProvider{minRadius=" + this.minRadius + ", maxRadius=" + this.maxRadius + "} " + super.toString();
}
}