minecraft-source/src/net/minecraft/world/level/TickNextTickData.java

53 lines
1.5 KiB
Java

package net.minecraft.world.level;
import java.util.Comparator;
import net.minecraft.core.BlockPos;
public class TickNextTickData<T> {
private static long counter;
private final T type;
public final BlockPos pos;
public final long delay;
public final TickPriority priority;
private final long c;
public TickNextTickData(final BlockPos fk, final T object) {
this(fk, object, 0L, TickPriority.NORMAL);
}
public TickNextTickData(final BlockPos fk, final T object, final long long3, final TickPriority bkk) {
this.c = TickNextTickData.counter++;
this.pos = fk.immutable();
this.type = object;
this.delay = long3;
this.priority = bkk;
}
@Override
public boolean equals(final Object object) {
if (object instanceof TickNextTickData) {
final TickNextTickData<?> bkj3 = object;
return this.pos.equals(bkj3.pos) && this.type == bkj3.type;
}
return false;
}
@Override
public int hashCode() {
return this.pos.hashCode();
}
public static <T> Comparator<TickNextTickData<T>> createTimeComparator() {
return Comparator.<TickNextTickData<T>>comparingLong(bkj -> bkj.delay).<Comparable>thenComparing(bkj -> bkj.priority).thenComparingLong(bkj -> bkj.c);
}
@Override
public String toString() {
return this.type + ": " + this.pos + ", " + this.delay + ", " + this.priority + ", " + this.c;
}
public T getType() {
return this.type;
}
}