hoosiertransfer-mod/src/main/java/net/minecraft/client/renderer/chunk/SetVisibility.java

124 lines
3.9 KiB
Java

package net.minecraft.client.renderer.chunk;
import java.util.BitSet;
import java.util.Set;
import net.minecraft.util.EnumFacing;
/**
* +
* This portion of EaglercraftX contains deobfuscated Minecraft 1.8 source code.
*
* Minecraft 1.8.8 bytecode is (c) 2015 Mojang AB. "Do not distribute!"
* Mod Coder Pack v9.18 deobfuscation configs are (c) Copyright by the MCP Team
*
* EaglercraftX 1.8 patch files (c) 2022-2024 lax1dude, hoosiertransfer,
* ayunami2000. All Rights Reserved.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED.
* IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY
* DIRECT,
* INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
* DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
* LIABILITY,
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
* OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*
*/
public class SetVisibility {
private static final int COUNT_FACES = EnumFacing._VALUES.length;
private final BitSet bitSet;
private long bitField = 0;
public SetVisibility() {
this.bitSet = new BitSet(COUNT_FACES * COUNT_FACES);
}
public void setManyVisible(Set<EnumFacing> parSet) {
EnumFacing[] facings = EnumFacing._VALUES;
for (int i = 0; i < facings.length; ++i) {
for (int j = 0; j < facings.length; ++j) {
this.setVisible(facings[i], facings[j], true);
}
}
}
public void setVisible(EnumFacing fromFace, EnumFacing toFace, boolean isVisible) {
long shiftBy;
shiftBy = fromFace.ordinal() + toFace.ordinal() * COUNT_FACES;
this.bitField = (this.bitField & ~(1L << shiftBy)) | ((isVisible ? 1L : 0L) << shiftBy);
shiftBy = toFace.ordinal() + fromFace.ordinal() * COUNT_FACES;
this.bitField = (this.bitField & ~(1L << shiftBy)) | ((isVisible ? 1L : 0L) << shiftBy);
}
// public void setVisible(EnumFacing facing, EnumFacing facing2, boolean
// parFlag) {
// this.bitSet.set(facing.ordinal() + facing2.ordinal() * COUNT_FACES, parFlag);
// this.bitSet.set(facing2.ordinal() + facing.ordinal() * COUNT_FACES, parFlag);
// }
public void setAllVisible(boolean visible) {
this.bitField = visible ? 0xFFFFFFFFFL : 0L;
}
// public void setAllVisible(boolean visible) {
// this.bitSet.set(0, this.bitSet.size(), visible);
// }
public boolean isVisible(EnumFacing fromFace, EnumFacing toFace) {
boolean ret = ((1L << (fromFace.ordinal() + toFace.ordinal() * COUNT_FACES)) & this.bitField) != 0;
return ret;
}
public boolean vfix$anyPathToFace(EnumFacing targetFace) {
long mask = 0b111111 << (targetFace.ordinal() * COUNT_FACES);
return (mask & this.bitField) > 0;
}
// public boolean isVisible(EnumFacing facing, EnumFacing facing2) {
// return this.bitSet.get(facing.ordinal() + facing2.ordinal() * COUNT_FACES);
// }
public String toString() {
StringBuilder stringbuilder = new StringBuilder();
stringbuilder.append(' ');
EnumFacing[] facings = EnumFacing._VALUES;
for (int i = 0; i < facings.length; ++i) {
stringbuilder.append(' ').append(facings[i].toString().toUpperCase().charAt(0));
}
stringbuilder.append('\n');
for (int i = 0; i < facings.length; ++i) {
EnumFacing enumfacing2 = facings[i];
stringbuilder.append(enumfacing2.toString().toUpperCase().charAt(0));
for (int j = 0; j < facings.length; ++j) {
if (enumfacing2 == facings[j]) {
stringbuilder.append(" ");
} else {
boolean flag = this.isVisible(enumfacing2, facings[j]);
stringbuilder.append(' ').append((char) (flag ? 'Y' : 'n'));
}
}
stringbuilder.append('\n');
}
return stringbuilder.toString();
}
}