all the Common kotlin stuff is now compiling apparently
This commit is contained in:
parent
7d611c0220
commit
a97545246f
9 changed files with 129 additions and 79 deletions
|
@ -2,21 +2,23 @@ package at.petrak.hexcasting.api.utils
|
||||||
|
|
||||||
import org.joml.Quaternionf
|
import org.joml.Quaternionf
|
||||||
import org.joml.Vector3f
|
import org.joml.Vector3f
|
||||||
import kotlin.math.cos
|
import kotlin.math.*
|
||||||
import kotlin.math.sin
|
|
||||||
|
|
||||||
val Vector3fXP
|
|
||||||
get() = Vector3f(1f, 0f, 0f)
|
object Vector3fUtils {
|
||||||
val Vector3fXM
|
val XP
|
||||||
get() = Vector3f(-1f, 0f, 0f)
|
get() = Vector3f(1f, 0f, 0f)
|
||||||
val Vector3fYP
|
val XM
|
||||||
get() = Vector3f(0f, 1f, 0f)
|
get() = Vector3f(-1f, 0f, 0f)
|
||||||
val Vector3fYM
|
val YP
|
||||||
get() = Vector3f(0f, -1f, 0f)
|
get() = Vector3f(0f, 1f, 0f)
|
||||||
val Vector3fZP
|
val YM
|
||||||
get() = Vector3f(0f, 0f, 1f)
|
get() = Vector3f(0f, -1f, 0f)
|
||||||
val Vector3fZM
|
val ZP
|
||||||
get() = Vector3f(0f, 0f, -1f)
|
get() = Vector3f(0f, 0f, 1f)
|
||||||
|
val ZM
|
||||||
|
get() = Vector3f(0f, 0f, -1f)
|
||||||
|
}
|
||||||
|
|
||||||
fun Vector3f.rotationDegrees(degrees: Float): Quaternionf {
|
fun Vector3f.rotationDegrees(degrees: Float): Quaternionf {
|
||||||
val rads = degrees * 0.017453292f
|
val rads = degrees * 0.017453292f
|
||||||
|
@ -29,3 +31,45 @@ fun Vector3f.rotationDegrees(degrees: Float): Quaternionf {
|
||||||
|
|
||||||
return Quaternionf(i, j, k, r)
|
return Quaternionf(i, j, k, r)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
object QuaternionfUtils {
|
||||||
|
@JvmStatic
|
||||||
|
val ONE: Quaternionf
|
||||||
|
get() = Quaternionf(0.0f, 0.0f, 0.0f, 1.0f)
|
||||||
|
|
||||||
|
@JvmStatic
|
||||||
|
fun fromXYZDegrees(vector3f: Vector3f): Quaternionf {
|
||||||
|
|
||||||
|
return fromXYZ(Math.toRadians(vector3f.x().toDouble()).toFloat(), Math.toRadians(vector3f.y().toDouble()).toFloat(), Math.toRadians(vector3f.z().toDouble()).toFloat())
|
||||||
|
}
|
||||||
|
|
||||||
|
@JvmStatic
|
||||||
|
fun fromXYZ(vector3f: Vector3f): Quaternionf {
|
||||||
|
return fromXYZ(vector3f.x(), vector3f.y(), vector3f.z())
|
||||||
|
}
|
||||||
|
|
||||||
|
@JvmStatic
|
||||||
|
fun fromXYZ(f: Float, g: Float, h: Float): Quaternionf {
|
||||||
|
val quaternion = ONE
|
||||||
|
quaternion.mul(Quaternionf(sin((f / 2.0f)), 0.0f, 0.0f, cos((f / 2.0f))))
|
||||||
|
quaternion.mul(Quaternionf(0.0f, sin((g / 2.0f)), 0.0f, cos((g / 2.0f))))
|
||||||
|
quaternion.mul(Quaternionf(0.0f, 0.0f, sin((h / 2.0f)), cos((h / 2.0f))))
|
||||||
|
return quaternion
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fun Quaternionf.toXYZ(): Vector3f {
|
||||||
|
val f: Float = this.w() * this.w()
|
||||||
|
val g: Float = this.x() * this.x()
|
||||||
|
val h: Float = this.y() * this.y()
|
||||||
|
val i: Float = this.z() * this.z()
|
||||||
|
val j = f + g + h + i
|
||||||
|
val k: Float = 2.0f * this.w() * this.x() - 2.0f * this.y() * this.z()
|
||||||
|
val l = asin(k / j)
|
||||||
|
return if (abs(k) > 0.999f * j)
|
||||||
|
Vector3f(2.0f * atan2(this.x(), this.w()), l, 0.0f)
|
||||||
|
else Vector3f(
|
||||||
|
atan2(2.0f * this.y() * this.z() + 2.0f * this.x() * this.w(), f - g - h + i),
|
||||||
|
l,
|
||||||
|
atan2(2.0f * this.x() * this.y() + 2.0f * this.w() * this.z(), f + g - h - i))
|
||||||
|
}
|
|
@ -2,6 +2,7 @@ package at.petrak.hexcasting.client.render;
|
||||||
|
|
||||||
import at.petrak.hexcasting.api.client.ScryingLensOverlayRegistry;
|
import at.petrak.hexcasting.api.client.ScryingLensOverlayRegistry;
|
||||||
import at.petrak.hexcasting.api.player.Sentinel;
|
import at.petrak.hexcasting.api.player.Sentinel;
|
||||||
|
import at.petrak.hexcasting.api.utils.QuaternionfUtils;
|
||||||
import at.petrak.hexcasting.client.ClientTickCounter;
|
import at.petrak.hexcasting.client.ClientTickCounter;
|
||||||
import at.petrak.hexcasting.common.lib.HexAttributes;
|
import at.petrak.hexcasting.common.lib.HexAttributes;
|
||||||
import at.petrak.hexcasting.xplat.IXplatAbstractions;
|
import at.petrak.hexcasting.xplat.IXplatAbstractions;
|
||||||
|
@ -13,9 +14,8 @@ import com.mojang.blaze3d.vertex.PoseStack;
|
||||||
import com.mojang.blaze3d.vertex.Tesselator;
|
import com.mojang.blaze3d.vertex.Tesselator;
|
||||||
import com.mojang.blaze3d.vertex.VertexFormat;
|
import com.mojang.blaze3d.vertex.VertexFormat;
|
||||||
import com.mojang.datafixers.util.Pair;
|
import com.mojang.datafixers.util.Pair;
|
||||||
import com.mojang.math.Quaternion;
|
|
||||||
import com.mojang.math.Vector3f;
|
|
||||||
import net.minecraft.client.Minecraft;
|
import net.minecraft.client.Minecraft;
|
||||||
|
import net.minecraft.client.gui.GuiGraphics;
|
||||||
import net.minecraft.client.multiplayer.ClientLevel;
|
import net.minecraft.client.multiplayer.ClientLevel;
|
||||||
import net.minecraft.client.player.LocalPlayer;
|
import net.minecraft.client.player.LocalPlayer;
|
||||||
import net.minecraft.client.renderer.GameRenderer;
|
import net.minecraft.client.renderer.GameRenderer;
|
||||||
|
@ -27,6 +27,8 @@ import net.minecraft.world.item.ItemStack;
|
||||||
import net.minecraft.world.phys.BlockHitResult;
|
import net.minecraft.world.phys.BlockHitResult;
|
||||||
import net.minecraft.world.phys.HitResult;
|
import net.minecraft.world.phys.HitResult;
|
||||||
import net.minecraft.world.phys.Vec3;
|
import net.minecraft.world.phys.Vec3;
|
||||||
|
import org.joml.Quaternionf;
|
||||||
|
import org.joml.Vector3f;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.function.BiConsumer;
|
import java.util.function.BiConsumer;
|
||||||
|
@ -36,14 +38,14 @@ public class HexAdditionalRenderers {
|
||||||
var player = Minecraft.getInstance().player;
|
var player = Minecraft.getInstance().player;
|
||||||
if (player != null) {
|
if (player != null) {
|
||||||
var sentinel = IXplatAbstractions.INSTANCE.getSentinel(player);
|
var sentinel = IXplatAbstractions.INSTANCE.getSentinel(player);
|
||||||
if (sentinel != null && player.getLevel().dimension().equals(sentinel.dimension())) {
|
if (sentinel != null && player.level().dimension().equals(sentinel.dimension())) {
|
||||||
renderSentinel(sentinel, player, ps, partialTick);
|
renderSentinel(sentinel, player, ps, partialTick);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void overlayGui(PoseStack ps, float partialTicks) {
|
public static void overlayGui(GuiGraphics graphics, float partialTicks) {
|
||||||
tryRenderScryingLensOverlay(ps, partialTicks);
|
tryRenderScryingLensOverlay(graphics, partialTicks);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void renderSentinel(Sentinel sentinel, LocalPlayer owner,
|
private static void renderSentinel(Sentinel sentinel, LocalPlayer owner,
|
||||||
|
@ -64,9 +66,9 @@ public class HexAdditionalRenderers {
|
||||||
var magnitude = 0.1f;
|
var magnitude = 0.1f;
|
||||||
ps.translate(0, Mth.sin(bobSpeed * time) * magnitude, 0);
|
ps.translate(0, Mth.sin(bobSpeed * time) * magnitude, 0);
|
||||||
var spinSpeed = 1f / 30;
|
var spinSpeed = 1f / 30;
|
||||||
ps.mulPose(Quaternion.fromXYZ(new Vector3f(0, spinSpeed * time, 0)));
|
ps.mulPose(QuaternionfUtils.fromXYZ(new Vector3f(0, spinSpeed * time, 0)));
|
||||||
if (sentinel.extendsRange()) {
|
if (sentinel.extendsRange()) {
|
||||||
ps.mulPose(Quaternion.fromXYZ(new Vector3f(spinSpeed * time / 8f, 0, 0)));
|
ps.mulPose(QuaternionfUtils.fromXYZ(new Vector3f(spinSpeed * time / 8f, 0, 0)));
|
||||||
}
|
}
|
||||||
|
|
||||||
float scale = 0.5f;
|
float scale = 0.5f;
|
||||||
|
@ -148,8 +150,9 @@ public class HexAdditionalRenderers {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void tryRenderScryingLensOverlay(PoseStack ps, float partialTicks) {
|
private static void tryRenderScryingLensOverlay(GuiGraphics graphics, float partialTicks) {
|
||||||
var mc = Minecraft.getInstance();
|
var mc = Minecraft.getInstance();
|
||||||
|
var ps = graphics.pose();
|
||||||
|
|
||||||
LocalPlayer player = mc.player;
|
LocalPlayer player = mc.player;
|
||||||
ClientLevel level = mc.level;
|
ClientLevel level = mc.level;
|
||||||
|
@ -196,16 +199,16 @@ public class HexAdditionalRenderers {
|
||||||
var stack = pair.getFirst();
|
var stack = pair.getFirst();
|
||||||
if (!stack.isEmpty()) {
|
if (!stack.isEmpty()) {
|
||||||
// this draws centered in the Y ...
|
// this draws centered in the Y ...
|
||||||
RenderLib.renderItemStackInGui(ps, pair.getFirst(), 0, 0);
|
graphics.renderItem(pair.getFirst(), 0, 0);
|
||||||
}
|
}
|
||||||
float tx = stack.isEmpty() ? 0 : 18;
|
int tx = stack.isEmpty() ? 0 : 18;
|
||||||
float ty = 5;
|
int ty = 5;
|
||||||
// but this draws where y=0 is the baseline
|
// but this draws where y=0 is the baseline
|
||||||
var text = pair.getSecond();
|
var text = pair.getSecond();
|
||||||
|
|
||||||
for (var line : text) {
|
for (var line : text) {
|
||||||
var actualLine = Language.getInstance().getVisualOrder(line);
|
var actualLine = Language.getInstance().getVisualOrder(line);
|
||||||
mc.font.drawShadow(ps, actualLine, tx, ty, 0xffffffff);
|
graphics.drawString(mc.font, actualLine, tx, ty, 0xffffffff);
|
||||||
ps.translate(0, mc.font.lineHeight, 0);
|
ps.translate(0, mc.font.lineHeight, 0);
|
||||||
}
|
}
|
||||||
if (text.isEmpty()) {
|
if (text.isEmpty()) {
|
||||||
|
|
|
@ -4,8 +4,7 @@ package at.petrak.hexcasting.client.render
|
||||||
|
|
||||||
import at.petrak.hexcasting.api.casting.math.HexPattern
|
import at.petrak.hexcasting.api.casting.math.HexPattern
|
||||||
import at.petrak.hexcasting.api.mod.HexConfig
|
import at.petrak.hexcasting.api.mod.HexConfig
|
||||||
import at.petrak.hexcasting.api.utils.TAU
|
import at.petrak.hexcasting.api.utils.*
|
||||||
import at.petrak.hexcasting.api.utils.Vector3fYP
|
|
||||||
import at.petrak.hexcasting.client.ClientTickCounter
|
import at.petrak.hexcasting.client.ClientTickCounter
|
||||||
import com.mojang.blaze3d.systems.RenderSystem
|
import com.mojang.blaze3d.systems.RenderSystem
|
||||||
import com.mojang.blaze3d.vertex.DefaultVertexFormat
|
import com.mojang.blaze3d.vertex.DefaultVertexFormat
|
||||||
|
@ -30,8 +29,6 @@ import kotlin.math.abs
|
||||||
import kotlin.math.min
|
import kotlin.math.min
|
||||||
import kotlin.math.roundToInt
|
import kotlin.math.roundToInt
|
||||||
import kotlin.math.sin
|
import kotlin.math.sin
|
||||||
import at.petrak.hexcasting.api.utils.Vector3fZP
|
|
||||||
import at.petrak.hexcasting.api.utils.rotationDegrees
|
|
||||||
|
|
||||||
val NOISE: SimplexNoise = SimplexNoise(SingleThreadedRandomSource(9001L))
|
val NOISE: SimplexNoise = SimplexNoise(SingleThreadedRandomSource(9001L))
|
||||||
|
|
||||||
|
@ -405,20 +402,6 @@ fun getCenteredPattern(pattern: HexPattern, width: Float, height: Float, minSize
|
||||||
return scale to lines2
|
return scale to lines2
|
||||||
}
|
}
|
||||||
|
|
||||||
fun renderItemStackInGui(ms: PoseStack, stack: ItemStack, x: Int, y: Int) {
|
|
||||||
transferMsToGl(ms) { Minecraft.getInstance().itemRenderer.renderAndDecorateItem(stack, x, y) }
|
|
||||||
}
|
|
||||||
|
|
||||||
fun transferMsToGl(ms: PoseStack, toRun: Runnable) {
|
|
||||||
val mvs = RenderSystem.getModelViewStack()
|
|
||||||
mvs.pushPose()
|
|
||||||
mvs.mulPoseMatrix(ms.last().pose())
|
|
||||||
RenderSystem.applyModelViewMatrix()
|
|
||||||
toRun.run()
|
|
||||||
mvs.popPose()
|
|
||||||
RenderSystem.applyModelViewMatrix()
|
|
||||||
}
|
|
||||||
|
|
||||||
@JvmOverloads
|
@JvmOverloads
|
||||||
fun renderEntity(
|
fun renderEntity(
|
||||||
ms: PoseStack, entity: Entity, world: Level, x: Float, y: Float, rotation: Float,
|
ms: PoseStack, entity: Entity, world: Level, x: Float, y: Float, rotation: Float,
|
||||||
|
@ -428,13 +411,13 @@ fun renderEntity(
|
||||||
val rotation = if (Screen.hasShiftDown()) 0.0f else rotation
|
val rotation = if (Screen.hasShiftDown()) 0.0f else rotation
|
||||||
|
|
||||||
// TODO: Figure out why this is here and whether removing it will break things
|
// TODO: Figure out why this is here and whether removing it will break things
|
||||||
entity.level = world
|
// entity.level = world
|
||||||
ms.pushPose()
|
ms.pushPose()
|
||||||
ms.translate(x.toDouble(), y.toDouble(), 50.0)
|
ms.translate(x.toDouble(), y.toDouble(), 50.0)
|
||||||
ms.scale(renderScale, renderScale, renderScale)
|
ms.scale(renderScale, renderScale, renderScale)
|
||||||
ms.translate(0.0, offset.toDouble(), 0.0)
|
ms.translate(0.0, offset.toDouble(), 0.0)
|
||||||
ms.mulPose(Vector3fZP.rotationDegrees(180.0f))
|
ms.mulPose(Vector3fUtils.ZP.rotationDegrees(180.0f))
|
||||||
ms.mulPose(Vector3fYP.rotationDegrees(rotation))
|
ms.mulPose(Vector3fUtils.YP.rotationDegrees(rotation))
|
||||||
val erd = Minecraft.getInstance().entityRenderDispatcher
|
val erd = Minecraft.getInstance().entityRenderDispatcher
|
||||||
val immediate = Minecraft.getInstance().renderBuffers().bufferSource()
|
val immediate = Minecraft.getInstance().renderBuffers().bufferSource()
|
||||||
erd.setRenderShadow(false)
|
erd.setRenderShadow(false)
|
||||||
|
|
|
@ -4,6 +4,7 @@ import com.mojang.blaze3d.vertex.DefaultVertexFormat;
|
||||||
import com.mojang.datafixers.util.Pair;
|
import com.mojang.datafixers.util.Pair;
|
||||||
import net.minecraft.client.renderer.ShaderInstance;
|
import net.minecraft.client.renderer.ShaderInstance;
|
||||||
import net.minecraft.server.packs.resources.ResourceManager;
|
import net.minecraft.server.packs.resources.ResourceManager;
|
||||||
|
import net.minecraft.server.packs.resources.ResourceProvider;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.function.Consumer;
|
import java.util.function.Consumer;
|
||||||
|
@ -12,10 +13,10 @@ import java.util.function.Consumer;
|
||||||
public class HexShaders {
|
public class HexShaders {
|
||||||
private static ShaderInstance grayscale;
|
private static ShaderInstance grayscale;
|
||||||
|
|
||||||
public static void init(ResourceManager resourceManager,
|
public static void init(ResourceProvider resourceProvider,
|
||||||
Consumer<Pair<ShaderInstance, Consumer<ShaderInstance>>> registrations) throws IOException {
|
Consumer<Pair<ShaderInstance, Consumer<ShaderInstance>>> registrations) throws IOException {
|
||||||
registrations.accept(Pair.of(
|
registrations.accept(Pair.of(
|
||||||
new ShaderInstance(resourceManager, "hexcasting__grayscale", DefaultVertexFormat.NEW_ENTITY),
|
new ShaderInstance(resourceProvider, "hexcasting__grayscale", DefaultVertexFormat.NEW_ENTITY),
|
||||||
inst -> grayscale = inst)
|
inst -> grayscale = inst)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,22 +6,20 @@ import com.google.common.collect.HashMultimap;
|
||||||
import com.google.common.collect.Multimap;
|
import com.google.common.collect.Multimap;
|
||||||
import net.minecraft.core.BlockSource;
|
import net.minecraft.core.BlockSource;
|
||||||
import net.minecraft.core.dispenser.OptionalDispenseItemBehavior;
|
import net.minecraft.core.dispenser.OptionalDispenseItemBehavior;
|
||||||
import net.minecraft.sounds.SoundEvent;
|
|
||||||
import net.minecraft.sounds.SoundEvents;
|
|
||||||
import net.minecraft.world.entity.EquipmentSlot;
|
import net.minecraft.world.entity.EquipmentSlot;
|
||||||
import net.minecraft.world.entity.ai.attributes.Attribute;
|
import net.minecraft.world.entity.ai.attributes.Attribute;
|
||||||
import net.minecraft.world.entity.ai.attributes.AttributeModifier;
|
import net.minecraft.world.entity.ai.attributes.AttributeModifier;
|
||||||
import net.minecraft.world.item.ArmorItem;
|
import net.minecraft.world.item.ArmorItem;
|
||||||
import net.minecraft.world.item.Item;
|
import net.minecraft.world.item.Item;
|
||||||
import net.minecraft.world.item.ItemStack;
|
import net.minecraft.world.item.ItemStack;
|
||||||
import net.minecraft.world.item.Wearable;
|
//import net.minecraft.world.item.Wearable;
|
||||||
import net.minecraft.world.level.block.DispenserBlock;
|
import net.minecraft.world.level.block.DispenserBlock;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
import org.jetbrains.annotations.Nullable;
|
import org.jetbrains.annotations.Nullable;
|
||||||
|
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
public class ItemLens extends Item implements Wearable, HexBaubleItem {
|
public class ItemLens extends Item implements HexBaubleItem { // Wearable,
|
||||||
|
|
||||||
// The 0.1 is *additive*
|
// The 0.1 is *additive*
|
||||||
|
|
||||||
|
@ -69,10 +67,10 @@ public class ItemLens extends Item implements Wearable, HexBaubleItem {
|
||||||
return EquipmentSlot.HEAD;
|
return EquipmentSlot.HEAD;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Nullable
|
// @Nullable
|
||||||
@Override
|
// @Override
|
||||||
public SoundEvent getEquipSound() {
|
// public SoundEvent getEquipSound() {
|
||||||
return SoundEvents.AMETHYST_BLOCK_CHIME;
|
// return SoundEvents.AMETHYST_BLOCK_CHIME;
|
||||||
}
|
// }
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -55,8 +55,7 @@ public class HexItems {
|
||||||
|
|
||||||
public static final ItemLens SCRYING_LENS = make("lens", new ItemLens(
|
public static final ItemLens SCRYING_LENS = make("lens", new ItemLens(
|
||||||
IXplatAbstractions.INSTANCE.addEquipSlotFabric(EquipmentSlot.HEAD)
|
IXplatAbstractions.INSTANCE.addEquipSlotFabric(EquipmentSlot.HEAD)
|
||||||
.stacksTo(1)
|
.stacksTo(1)));
|
||||||
.tab(IXplatAbstractions.INSTANCE.getTab())));
|
|
||||||
|
|
||||||
public static final ItemAbacus ABACUS = make("abacus", new ItemAbacus(unstackable()));
|
public static final ItemAbacus ABACUS = make("abacus", new ItemAbacus(unstackable()));
|
||||||
public static final ItemThoughtKnot THOUGHT_KNOT = make("thought_knot", new ItemThoughtKnot(unstackable()));
|
public static final ItemThoughtKnot THOUGHT_KNOT = make("thought_knot", new ItemThoughtKnot(unstackable()));
|
||||||
|
@ -115,7 +114,7 @@ public class HexItems {
|
||||||
//
|
//
|
||||||
|
|
||||||
public static Item.Properties props() {
|
public static Item.Properties props() {
|
||||||
return new Item.Properties().tab(IXplatAbstractions.INSTANCE.getTab());
|
return new Item.Properties();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static Item.Properties unstackable() {
|
public static Item.Properties unstackable() {
|
||||||
|
|
|
@ -0,0 +1,20 @@
|
||||||
|
package at.petrak.hexcasting.api.utils
|
||||||
|
|
||||||
|
import org.joml.Vector3f
|
||||||
|
import org.junit.jupiter.api.Assertions.*
|
||||||
|
import org.junit.jupiter.api.Test
|
||||||
|
import kotlin.random.Random
|
||||||
|
|
||||||
|
class QuaternionfUtilsTest {
|
||||||
|
@Test
|
||||||
|
fun testXYZ() {
|
||||||
|
val random = Random(System.currentTimeMillis())
|
||||||
|
|
||||||
|
repeat(500) {
|
||||||
|
val expected = Vector3f(random.nextFloat(), random.nextFloat(), random.nextFloat())
|
||||||
|
val output = QuaternionfUtils.fromXYZ(expected).toXYZ()
|
||||||
|
assertTrue(expected.distanceSquared(output) < 0.000001)
|
||||||
|
{ "Expected distance between $expected and $output to be less than 0.000001, was ${expected.distanceSquared(output)}." }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -55,7 +55,7 @@ public class ForgeHexClientInitializer {
|
||||||
});
|
});
|
||||||
|
|
||||||
evBus.addListener((RenderGuiEvent.Post e) -> {
|
evBus.addListener((RenderGuiEvent.Post e) -> {
|
||||||
HexAdditionalRenderers.overlayGui(e.getPoseStack(), e.getPartialTick());
|
HexAdditionalRenderers.overlayGui(e.getGuiGraphics(), e.getPartialTick());
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
|
@ -82,7 +82,7 @@ public class ForgeHexClientInitializer {
|
||||||
|
|
||||||
@SubscribeEvent
|
@SubscribeEvent
|
||||||
public static void registerShaders(RegisterShadersEvent evt) throws IOException {
|
public static void registerShaders(RegisterShadersEvent evt) throws IOException {
|
||||||
HexShaders.init(evt.getResourceManager(), p -> evt.registerShader(p.getFirst(), p.getSecond()));
|
HexShaders.init(evt.getResourceProvider(), p -> evt.registerShader(p.getFirst(), p.getSecond()));
|
||||||
}
|
}
|
||||||
|
|
||||||
// https://github.com/VazkiiMods/Botania/blob/1.19.x/Forge/src/main/java/vazkii/botania/forge/client/ForgeClientInitializer.java#L225
|
// https://github.com/VazkiiMods/Botania/blob/1.19.x/Forge/src/main/java/vazkii/botania/forge/client/ForgeClientInitializer.java#L225
|
||||||
|
@ -92,7 +92,7 @@ public class ForgeHexClientInitializer {
|
||||||
@Override
|
@Override
|
||||||
public <T extends ParticleOptions> void register(ParticleType<T> type, Function<SpriteSet,
|
public <T extends ParticleOptions> void register(ParticleType<T> type, Function<SpriteSet,
|
||||||
ParticleProvider<T>> constructor) {
|
ParticleProvider<T>> constructor) {
|
||||||
evt.register(type, constructor::apply);
|
evt.registerSpriteSet(type, constructor::apply);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
|
@ -32,6 +32,8 @@ import at.petrak.hexcasting.forge.recipe.ForgeUnsealedIngredient;
|
||||||
import at.petrak.hexcasting.interop.HexInterop;
|
import at.petrak.hexcasting.interop.HexInterop;
|
||||||
import at.petrak.hexcasting.xplat.IXplatAbstractions;
|
import at.petrak.hexcasting.xplat.IXplatAbstractions;
|
||||||
import net.minecraft.core.Registry;
|
import net.minecraft.core.Registry;
|
||||||
|
import net.minecraft.core.registries.BuiltInRegistries;
|
||||||
|
import net.minecraft.core.registries.Registries;
|
||||||
import net.minecraft.resources.ResourceKey;
|
import net.minecraft.resources.ResourceKey;
|
||||||
import net.minecraft.resources.ResourceLocation;
|
import net.minecraft.resources.ResourceLocation;
|
||||||
import net.minecraft.server.level.ServerLevel;
|
import net.minecraft.server.level.ServerLevel;
|
||||||
|
@ -92,22 +94,22 @@ public class ForgeHexInitializer {
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void initRegistry() {
|
private static void initRegistry() {
|
||||||
bind(Registry.SOUND_EVENT_REGISTRY, HexSounds::registerSounds);
|
bind(Registries.SOUND_EVENT, HexSounds::registerSounds);
|
||||||
bind(Registry.BLOCK_REGISTRY, HexBlocks::registerBlocks);
|
bind(Registries.BLOCK, HexBlocks::registerBlocks);
|
||||||
bind(Registry.ITEM_REGISTRY, HexBlocks::registerBlockItems);
|
bind(Registries.ITEM, HexBlocks::registerBlockItems);
|
||||||
bind(Registry.BLOCK_ENTITY_TYPE_REGISTRY, HexBlockEntities::registerTiles);
|
bind(Registries.BLOCK_ENTITY_TYPE, HexBlockEntities::registerTiles);
|
||||||
bind(Registry.ITEM_REGISTRY, HexItems::registerItems);
|
bind(Registries.ITEM, HexItems::registerItems);
|
||||||
|
|
||||||
bind(Registry.RECIPE_SERIALIZER_REGISTRY, HexRecipeStuffRegistry::registerSerializers);
|
bind(Registries.RECIPE_SERIALIZER, HexRecipeStuffRegistry::registerSerializers);
|
||||||
bind(Registry.RECIPE_TYPE_REGISTRY, HexRecipeStuffRegistry::registerTypes);
|
bind(Registries.RECIPE_TYPE, HexRecipeStuffRegistry::registerTypes);
|
||||||
|
|
||||||
bind(Registry.ENTITY_TYPE_REGISTRY, HexEntities::registerEntities);
|
bind(Registries.ENTITY_TYPE, HexEntities::registerEntities);
|
||||||
bind(Registry.ATTRIBUTE_REGISTRY, HexAttributes::register);
|
bind(Registries.ATTRIBUTE, HexAttributes::register);
|
||||||
bind(Registry.MOB_EFFECT_REGISTRY, HexMobEffects::register);
|
bind(Registries.MOB_EFFECT, HexMobEffects::register);
|
||||||
bind(Registry.POTION_REGISTRY, HexPotions::register);
|
bind(Registries.POTION, HexPotions::register);
|
||||||
HexPotions.addRecipes();
|
HexPotions.addRecipes();
|
||||||
|
|
||||||
bind(Registry.PARTICLE_TYPE_REGISTRY, HexParticles::registerParticles);
|
bind(Registries.PARTICLE_TYPE, HexParticles::registerParticles);
|
||||||
|
|
||||||
bind(IXplatAbstractions.INSTANCE.getIotaTypeRegistry().key(), HexIotaTypes::registerTypes);
|
bind(IXplatAbstractions.INSTANCE.getIotaTypeRegistry().key(), HexIotaTypes::registerTypes);
|
||||||
bind(IXplatAbstractions.INSTANCE.getActionRegistry().key(), HexActions::register);
|
bind(IXplatAbstractions.INSTANCE.getActionRegistry().key(), HexActions::register);
|
||||||
|
@ -158,13 +160,13 @@ public class ForgeHexInitializer {
|
||||||
|
|
||||||
// We have to do these at some point when the registries are still open
|
// We have to do these at some point when the registries are still open
|
||||||
modBus.addListener((RegisterEvent evt) -> {
|
modBus.addListener((RegisterEvent evt) -> {
|
||||||
if (evt.getRegistryKey().equals(Registry.ITEM_REGISTRY)) {
|
if (evt.getRegistryKey().equals(Registries.ITEM)) {
|
||||||
CraftingHelper.register(ForgeUnsealedIngredient.ID, ForgeUnsealedIngredient.Serializer.INSTANCE);
|
CraftingHelper.register(ForgeUnsealedIngredient.ID, ForgeUnsealedIngredient.Serializer.INSTANCE);
|
||||||
CraftingHelper.register(ForgeModConditionalIngredient.ID,
|
CraftingHelper.register(ForgeModConditionalIngredient.ID,
|
||||||
ForgeModConditionalIngredient.Serializer.INSTANCE);
|
ForgeModConditionalIngredient.Serializer.INSTANCE);
|
||||||
HexStatistics.register();
|
HexStatistics.register();
|
||||||
HexLootFunctions.registerSerializers((lift, id) ->
|
HexLootFunctions.registerSerializers((lift, id) ->
|
||||||
Registry.register(Registry.LOOT_FUNCTION_TYPE, id, lift));
|
Registry.register(BuiltInRegistries.LOOT_FUNCTION_TYPE, id, lift));
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue