/
DragonUtils.java
37 lines (27 loc) · 1.29 KB
/
DragonUtils.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
package com.bgsoftware.superiorskyblock.nms.v1_19_R1.dragon;
import com.bgsoftware.common.reflection.ReflectField;
import com.bgsoftware.superiorskyblock.nms.v1_19_R1.mapping.net.minecraft.core.BlockPosition;
import net.minecraft.world.level.levelgen.feature.WorldGenEndTrophy;
import java.lang.reflect.Modifier;
public final class DragonUtils {
private static final ReflectField<net.minecraft.core.BlockPosition> END_PODIUM_LOCATION = new ReflectField<net.minecraft.core.BlockPosition>(
WorldGenEndTrophy.class, net.minecraft.core.BlockPosition.class,
Modifier.PUBLIC | Modifier.STATIC | Modifier.FINAL, 1)
.removeFinal();
private static BlockPosition currentPodiumPosition = BlockPosition.ZERO;
private DragonUtils() {
}
public static void runWithPodiumPosition(BlockPosition podiumPosition, Runnable runnable) {
try {
END_PODIUM_LOCATION.set(null, podiumPosition.getHandle());
currentPodiumPosition = podiumPosition;
runnable.run();
} finally {
END_PODIUM_LOCATION.set(null, BlockPosition.ZERO.getHandle());
currentPodiumPosition = BlockPosition.ZERO;
}
}
public static BlockPosition getCurrentPodiumPosition() {
return currentPodiumPosition;
}
}