DoorBlockUtils class
Пакет: com.hypixel.hytale.server.core.modules.interaction
Файл: com/hypixel/hytale/server/core/modules/interaction/DoorBlockUtils.java
Поля (15)
| Модификаторы | Тип | Имя |
|---|---|---|
|
CLOSED,
OPENED_IN, |
OPENED_OUT |
final |
String |
OPEN_DOOR_IN |
|
String |
var1 |
|
RootInteraction |
var2 |
|
double |
var3 |
|
Store |
var3 |
|
Ref |
var4 |
|
Vector3d |
var5 |
|
BlockSection |
var5 |
|
Vector3d |
var6 |
|
int |
var6 |
|
Interaction |
var7 |
|
BlockType |
var7 |
|
BlockType |
var8 |
|
int |
var9 |
Методы (16)
| Модификаторы | Возврат | Сигнатура |
|---|---|---|
|
|
DoorState DoorState() |
static |
boolean |
canOpenDoorboolean canOpenDoor(@Nonnull ChunkStore var0, @Nonnull Vector3i var1, @Nonnull String var2) |
|
public static DoorBlockUtils.DoorState |
fromBlockStatepublic static DoorBlockUtils.DoorState fromBlockState(@Nullable String var0) |
|
|
if if(var1 == null) |
|
|
if if(var2 == null) |
|
|
if if(var7 instanceof DoorInteraction var8) |
|
|
if if(var1 == DoorBlockUtils.DoorState.CLOSED && var0 == DoorBlockUtils.DoorState.OPENED_IN) |
|
|
if if(var5 == null) |
|
|
if if(var7 == null) |
|
|
if if(var8 == null) |
|
|
if if(var6x != 0) |
|
|
if if(var0 == null) |
static |
boolean |
isHorizontalDoorboolean isHorizontalDoor(@Nonnull BlockType var0) |
static |
boolean |
isInFrontOfDoorboolean isInFrontOfDoor(@Nonnull Vector3i var0, @Nullable Rotation var1, @Nonnull Vector3d var2) |
|
return |
switchreturn switch(var0) |
|
return |
switchreturn switch(var0) |
Исходный код
Показать/скрыть
class="kw">package com.hypixel.hytale.server.core.modules.interaction;
class="kw">import com.hypixel.hytale.component.Ref;
class="kw">import com.hypixel.hytale.component.Store;
class="kw">import com.hypixel.hytale.math.util.TrigMathUtil;
class="kw">import com.hypixel.hytale.math.vector.Vector3dUtil;
class="kw">import com.hypixel.hytale.protocol.InteractionType;
class="kw">import com.hypixel.hytale.server.core.asset.type.blocktype.config.BlockType;
class="kw">import com.hypixel.hytale.server.core.asset.type.blocktype.config.Rotation;
class="kw">import com.hypixel.hytale.server.core.modules.interaction.interaction.config.Interaction;
class="kw">import com.hypixel.hytale.server.core.modules.interaction.interaction.config.RootInteraction;
class="kw">import com.hypixel.hytale.server.core.modules.interaction.interaction.config.server.DoorInteraction;
class="kw">import com.hypixel.hytale.server.core.universe.world.chunk.BlockOperations;
class="kw">import com.hypixel.hytale.server.core.universe.world.chunk.section.BlockSection;
class="kw">import com.hypixel.hytale.server.core.universe.world.storage.ChunkStore;
class="kw">import com.hypixel.hytale.server.core.util.FillerBlockUtil;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;
class="kw">import org.joml.Vector3d;
class="kw">import org.joml.Vector3i;
class="kw">public class="kw">final class DoorBlockUtils {
class="kw">public class="kw">static class="kw">final String OPEN_DOOR_IN = "OpenDoorIn";
class="kw">public class="kw">static class="kw">final String OPEN_DOOR_OUT = "OpenDoorOut";
class="kw">public class="kw">static class="kw">final String CLOSE_DOOR_IN = "CloseDoorIn";
class="kw">public class="kw">static class="kw">final String CLOSE_DOOR_OUT = "CloseDoorOut";
class="kw">private DoorBlockUtils() {
}
class="kw">public class="kw">static boolean isHorizontalDoor(@Nonnull BlockType var0) {
String var1 = var0.getInteractions().get(InteractionType.Use);
if (var1 == null) {
class="kw">return false;
}
RootInteraction var2 = RootInteraction.getAssetMap().getAsset(var1);
if (var2 == null) {
class="kw">return false;
}
for (String var6 : var2.getInteractionIds()) {
Interaction var7 = Interaction.getAssetMap().getAsset(var6);
if (var7 class="kw">instanceof DoorInteraction var8) {
class="kw">return var8.getIsHorizontal();
}
}
class="kw">return false;
}
@Nonnull
class="kw">public class="kw">static String getInteractionState(@Nonnull DoorBlockUtils.DoorState var0, @Nonnull DoorBlockUtils.DoorState var1) {
if (var1 == DoorBlockUtils.DoorState.CLOSED && var0 == DoorBlockUtils.DoorState.OPENED_IN) {
class="kw">return "CloseDoorOut";
} else if (var1 == DoorBlockUtils.DoorState.CLOSED && var0 == DoorBlockUtils.DoorState.OPENED_OUT) {
class="kw">return "CloseDoorIn";
} else {
class="kw">return var1 == DoorBlockUtils.DoorState.OPENED_IN ? "OpenDoorOut" : "OpenDoorIn";
}
}
@Nonnull
class="kw">public class="kw">static DoorBlockUtils.DoorState getOppositeDoorState(@Nonnull DoorBlockUtils.DoorState var0) {
class="kw">return class="kw">switch (var0) {
case CLOSED -> DoorBlockUtils.DoorState.CLOSED;
case OPENED_IN -> DoorBlockUtils.DoorState.OPENED_OUT;
case OPENED_OUT -> DoorBlockUtils.DoorState.OPENED_IN;
};
}
class="kw">public class="kw">static boolean isInFrontOfDoor(@Nonnull Vector3i var0, @Nullable Rotation var1, @Nonnull Vector3d var2) {
double var3 = Math.toRadians(var1 != null ? var1.getDegrees() : 0.0);
Vector3d var5 = new Vector3d(TrigMathUtil.sin(var3), 0.0, TrigMathUtil.cos(var3));
Vector3d var6 = Vector3dUtil.directionTo(new Vector3d(var0).add(0.5, 0.5, 0.5), var2);
class="kw">return var6.dot(var5) < 0.0;
}
class="kw">public class="kw">static boolean canOpenDoor(@Nonnull ChunkStore var0, @Nonnull Vector3i var1, @Nonnull String var2) {
Store var3 = var0.getStore();
Ref var4 = var0.getChunkSectionReferenceAtBlock(var1.x, var1.y, var1.z);
if (var4 != null && var4.isValid()) {
BlockSection var5 = var3.getComponent(var4, BlockSection.getComponentType());
if (var5 == null) {
class="kw">return false;
}
int var6 = var5.get(var1.x, var1.y, var1.z);
BlockType var7 = BlockType.getAssetMap().getAsset(var6);
if (var7 == null) {
class="kw">return false;
}
BlockType var8 = var7.getBlockForState(var2);
if (var8 == null) {
class="kw">return false;
}
int var9 = var5.getRotationIndex(var1.x, var1.y, var1.z);
class="kw">return BlockOperations.testPlaceBlock(var0.getStore(), var5, var1.x, var1.y, var1.z, var8, var9, (var1x, var2x, var3x, var4x, var5x, var6x) -> {
if (var6x != 0) {
var1x -= FillerBlockUtil.unpackX(var6x);
var2x -= FillerBlockUtil.unpackY(var6x);
var3x -= FillerBlockUtil.unpackZ(var6x);
}
class="kw">return var1x == var1.x && var2x == var1.y && var3x == var1.z;
});
} else {
class="kw">return false;
}
}
class="kw">public enum DoorState {
CLOSED,
OPENED_IN,
OPENED_OUT;
DoorState() {
}
@Nonnull
class="kw">public class="kw">static DoorBlockUtils.DoorState fromBlockState(@Nullable String var0) {
if (var0 == null) {
class="kw">return CLOSED;
}
class="kw">return class="kw">switch (var0) {
case "OpenDoorOut" -> OPENED_IN;
case "OpenDoorIn" -> OPENED_OUT;
class="kw">default -> CLOSED;
};
}
}
}