/* * Decompiled with CFR 0.152. * * Could not load the following classes: * io.netty.buffer.ByteBuf */ package net.minecraft.world.entity; import io.netty.buffer.ByteBuf; import java.util.EnumSet; import java.util.HashSet; import java.util.Set; import net.minecraft.network.codec.ByteBufCodecs; import net.minecraft.network.codec.StreamCodec; public enum Relative { X(0), Y(1), Z(2), Y_ROT(3), X_ROT(4), DELTA_X(5), DELTA_Y(6), DELTA_Z(7), ROTATE_DELTA(8); public static final Set ALL; public static final Set ROTATION; public static final Set DELTA; public static final StreamCodec> SET_STREAM_CODEC; private final int bit; @SafeVarargs public static Set union(Set ... sets) { HashSet set = new HashSet(); for (Set s : sets) { set.addAll(s); } return set; } public static Set rotation(boolean relativeYRot, boolean relativeXRot) { EnumSet relatives = EnumSet.noneOf(Relative.class); if (relativeYRot) { relatives.add(Y_ROT); } if (relativeXRot) { relatives.add(X_ROT); } return relatives; } public static Set position(boolean relativeX, boolean relativeY, boolean relativeZ) { EnumSet relatives = EnumSet.noneOf(Relative.class); if (relativeX) { relatives.add(X); } if (relativeY) { relatives.add(Y); } if (relativeZ) { relatives.add(Z); } return relatives; } public static Set direction(boolean relativeX, boolean relativeY, boolean relativeZ) { EnumSet relatives = EnumSet.noneOf(Relative.class); if (relativeX) { relatives.add(DELTA_X); } if (relativeY) { relatives.add(DELTA_Y); } if (relativeZ) { relatives.add(DELTA_Z); } return relatives; } private Relative(int bit) { this.bit = bit; } private int getMask() { return 1 << this.bit; } private boolean isSet(int value) { return (value & this.getMask()) == this.getMask(); } public static Set unpack(int value) { EnumSet result = EnumSet.noneOf(Relative.class); for (Relative argument : Relative.values()) { if (!argument.isSet(value)) continue; result.add(argument); } return result; } public static int pack(Set set) { int result = 0; for (Relative argument : set) { result |= argument.getMask(); } return result; } static { ALL = Set.of(Relative.values()); ROTATION = Set.of(X_ROT, Y_ROT); DELTA = Set.of(DELTA_X, DELTA_Y, DELTA_Z, ROTATE_DELTA); SET_STREAM_CODEC = ByteBufCodecs.INT.map(Relative::unpack, Relative::pack); } }