1.19.3 Port Part I

- Mojang math -> JOML
- Use getters for x and y in AbstractWidget
- Use Button.builder()
- Widget -> Renderable
- Registry -> Registries for keys and BuiltInRegistries for registries
- Update pack format
This commit is contained in:
PepperCode1 2023-01-31 16:00:41 -08:00
parent 7ed2f71a01
commit f7987570ab
159 changed files with 635 additions and 569 deletions

View file

@ -140,7 +140,7 @@ repositories {
dependencies { dependencies {
minecraft "net.minecraftforge:forge:${minecraft_version}-${forge_version}" minecraft "net.minecraftforge:forge:${minecraft_version}-${forge_version}"
jarJar(group: 'com.tterrag.registrate', name: 'Registrate', version: '[MC1.19-1.1.5,)') { jarJar(group: 'com.tterrag.registrate', name: 'Registrate', version: '[MC1.19.3-1.1.10,)') {
jarJar.pin(it, project.registrate_version) jarJar.pin(it, project.registrate_version)
} }
jarJar(group: 'com.jozufozu.flywheel', name: "flywheel-forge-${flywheel_minecraft_version}", version: '[0.6.8,0.6.9)') { jarJar(group: 'com.jozufozu.flywheel', name: "flywheel-forge-${flywheel_minecraft_version}", version: '[0.6.8,0.6.9)') {

View file

@ -5,10 +5,10 @@ org.gradle.daemon = false
# mod version info # mod version info
mod_version = 0.5.0.i mod_version = 0.5.0.i
artifact_minecraft_version = 1.19.2 artifact_minecraft_version = 1.19.3
minecraft_version = 1.19.2 minecraft_version = 1.19.3
forge_version = 43.2.4 forge_version = 44.1.8
# build dependency versions # build dependency versions
forgegradle_version = 5.1.53 forgegradle_version = 5.1.53
@ -16,16 +16,16 @@ mixingradle_version = 0.7-SNAPSHOT
mixin_version = 0.8.5 mixin_version = 0.8.5
librarian_version = 1.+ librarian_version = 1.+
cursegradle_version = 1.4.0 cursegradle_version = 1.4.0
parchment_version = 2022.11.06 parchment_version = 2022.12.18
# dependency versions # dependency versions
registrate_version = MC1.19-1.1.5 registrate_version = MC1.19.3-1.1.10
flywheel_minecraft_version = 1.19.2 flywheel_minecraft_version = 1.19.3
flywheel_version = 0.6.8.a-14 flywheel_version = 0.6.8.a-1
jei_minecraft_version = 1.19.2 jei_minecraft_version = 1.19.3
jei_version = 11.2.0.254 jei_version = 12.1.1.13
curios_minecraft_version = 1.19.2 curios_minecraft_version = 1.19.3
curios_version = 5.1.1.0 curios_version = 5.1.2.0
# curseforge information # curseforge information
projectId = 328085 projectId = 328085

View file

@ -242,7 +242,7 @@ import com.tterrag.registrate.util.entry.BlockEntry;
import net.minecraft.client.renderer.RenderType; import net.minecraft.client.renderer.RenderType;
import net.minecraft.core.Direction.Axis; import net.minecraft.core.Direction.Axis;
import net.minecraft.core.Direction.AxisDirection; import net.minecraft.core.Direction.AxisDirection;
import net.minecraft.core.Registry; import net.minecraft.core.registries.Registries;
import net.minecraft.data.recipes.ShapelessRecipeBuilder; import net.minecraft.data.recipes.ShapelessRecipeBuilder;
import net.minecraft.resources.ResourceLocation; import net.minecraft.resources.ResourceLocation;
import net.minecraft.tags.BlockTags; import net.minecraft.tags.BlockTags;
@ -572,7 +572,7 @@ public class AllBlocks {
.transform(axeOrPickaxe()) .transform(axeOrPickaxe())
.transform(BuilderTransformers.cuckooClock()) .transform(BuilderTransformers.cuckooClock())
.lang("Cuckoo Clock") .lang("Cuckoo Clock")
.onRegisterAfter(Registry.ITEM_REGISTRY, c -> TooltipHelper.referTo(c, CUCKOO_CLOCK)) .onRegisterAfter(Registries.ITEM, c -> TooltipHelper.referTo(c, CUCKOO_CLOCK))
.register(); .register();
public static final BlockEntry<MillstoneBlock> MILLSTONE = REGISTRATE.block("millstone", MillstoneBlock::new) public static final BlockEntry<MillstoneBlock> MILLSTONE = REGISTRATE.block("millstone", MillstoneBlock::new)
@ -1339,7 +1339,7 @@ public class AllBlocks {
.unlockedBy("has_seat", RegistrateRecipeProvider.has(AllItemTags.SEATS.tag)) .unlockedBy("has_seat", RegistrateRecipeProvider.has(AllItemTags.SEATS.tag))
.save(p, Create.asResource("crafting/kinetics/" + c.getName() + "_from_other_seat")); .save(p, Create.asResource("crafting/kinetics/" + c.getName() + "_from_other_seat"));
}) })
.onRegisterAfter(Registry.ITEM_REGISTRY, v -> TooltipHelper.referTo(v, "block.create.brown_seat")) .onRegisterAfter(Registries.ITEM, v -> TooltipHelper.referTo(v, "block.create.brown_seat"))
.tag(AllBlockTags.SEATS.tag) .tag(AllBlockTags.SEATS.tag)
.item() .item()
.tag(AllItemTags.SEATS.tag) .tag(AllItemTags.SEATS.tag)
@ -1955,7 +1955,7 @@ public class AllBlocks {
.withExistingParent(colourName + "_toolbox", p.modLoc("block/toolbox/block")) .withExistingParent(colourName + "_toolbox", p.modLoc("block/toolbox/block"))
.texture("0", p.modLoc("block/toolbox/" + colourName))); .texture("0", p.modLoc("block/toolbox/" + colourName)));
}) })
.onRegisterAfter(Registry.ITEM_REGISTRY, v -> TooltipHelper.referTo(v, "block.create.toolbox")) .onRegisterAfter(Registries.ITEM, v -> TooltipHelper.referTo(v, "block.create.toolbox"))
.tag(AllBlockTags.TOOLBOXES.tag) .tag(AllBlockTags.TOOLBOXES.tag)
.item(UncontainableBlockItem::new) .item(UncontainableBlockItem::new)
.model((c, p) -> p.withExistingParent(colourName + "_toolbox", p.modLoc("block/toolbox/item")) .model((c, p) -> p.withExistingParent(colourName + "_toolbox", p.modLoc("block/toolbox/item"))

View file

@ -31,14 +31,14 @@ import com.simibubi.create.foundation.utility.Lang;
import com.simibubi.create.foundation.utility.RegisteredObjects; import com.simibubi.create.foundation.utility.RegisteredObjects;
import com.simibubi.create.foundation.utility.recipe.IRecipeTypeInfo; import com.simibubi.create.foundation.utility.recipe.IRecipeTypeInfo;
import net.minecraft.core.Registry; import net.minecraft.core.registries.Registries;
import net.minecraft.resources.ResourceLocation; import net.minecraft.resources.ResourceLocation;
import net.minecraft.world.Container; import net.minecraft.world.Container;
import net.minecraft.world.item.crafting.Recipe; import net.minecraft.world.item.crafting.Recipe;
import net.minecraft.world.item.crafting.RecipeSerializer; import net.minecraft.world.item.crafting.RecipeSerializer;
import net.minecraft.world.item.crafting.RecipeType; import net.minecraft.world.item.crafting.RecipeType;
import net.minecraft.world.item.crafting.ShapedRecipe; import net.minecraft.world.item.crafting.ShapedRecipe;
import net.minecraft.world.item.crafting.SimpleRecipeSerializer; import net.minecraft.world.item.crafting.SimpleCraftingRecipeSerializer;
import net.minecraft.world.level.Level; import net.minecraft.world.level.Level;
import net.minecraftforge.eventbus.api.IEventBus; import net.minecraftforge.eventbus.api.IEventBus;
import net.minecraftforge.registries.DeferredRegister; import net.minecraftforge.registries.DeferredRegister;
@ -66,7 +66,7 @@ public enum AllRecipeTypes implements IRecipeTypeInfo {
MECHANICAL_CRAFTING(MechanicalCraftingRecipe.Serializer::new), MECHANICAL_CRAFTING(MechanicalCraftingRecipe.Serializer::new),
SEQUENCED_ASSEMBLY(SequencedAssemblyRecipeSerializer::new), SEQUENCED_ASSEMBLY(SequencedAssemblyRecipeSerializer::new),
TOOLBOX_DYEING(() -> new SimpleRecipeSerializer<>(ToolboxDyeingRecipe::new), () -> RecipeType.CRAFTING, false); TOOLBOX_DYEING(() -> new SimpleCraftingRecipeSerializer<>(ToolboxDyeingRecipe::new), () -> RecipeType.CRAFTING, false);
private final ResourceLocation id; private final ResourceLocation id;
private final RegistryObject<RecipeSerializer<?>> serializerObject; private final RegistryObject<RecipeSerializer<?>> serializerObject;
@ -141,7 +141,7 @@ public enum AllRecipeTypes implements IRecipeTypeInfo {
private static class Registers { private static class Registers {
private static final DeferredRegister<RecipeSerializer<?>> SERIALIZER_REGISTER = DeferredRegister.create(ForgeRegistries.RECIPE_SERIALIZERS, Create.ID); private static final DeferredRegister<RecipeSerializer<?>> SERIALIZER_REGISTER = DeferredRegister.create(ForgeRegistries.RECIPE_SERIALIZERS, Create.ID);
private static final DeferredRegister<RecipeType<?>> TYPE_REGISTER = DeferredRegister.create(Registry.RECIPE_TYPE_REGISTRY, Create.ID); private static final DeferredRegister<RecipeType<?>> TYPE_REGISTER = DeferredRegister.create(Registries.RECIPE_TYPE, Create.ID);
} }
} }

View file

@ -10,9 +10,10 @@ import java.util.function.Supplier;
import com.google.gson.JsonArray; import com.google.gson.JsonArray;
import com.google.gson.JsonObject; import com.google.gson.JsonObject;
import com.simibubi.create.AllSoundEvents.SoundEntry;
import net.minecraft.core.Registry;
import net.minecraft.core.Vec3i; import net.minecraft.core.Vec3i;
import net.minecraft.core.registries.Registries;
import net.minecraft.data.CachedOutput; import net.minecraft.data.CachedOutput;
import net.minecraft.data.DataGenerator; import net.minecraft.data.DataGenerator;
import net.minecraft.data.DataProvider; import net.minecraft.data.DataProvider;
@ -311,7 +312,7 @@ public class AllSoundEvents {
} }
public static void register(RegisterEvent event) { public static void register(RegisterEvent event) {
event.register(Registry.SOUND_EVENT_REGISTRY, helper -> { event.register(Registries.SOUND_EVENT, helper -> {
for (SoundEntry entry : ALL.values()) for (SoundEntry entry : ALL.values())
entry.register(helper); entry.register(helper);
}); });

View file

@ -2,14 +2,14 @@ package com.simibubi.create;
import com.simibubi.create.content.schematics.SchematicProcessor; import com.simibubi.create.content.schematics.SchematicProcessor;
import net.minecraft.core.Registry; import net.minecraft.core.registries.Registries;
import net.minecraft.world.level.levelgen.structure.templatesystem.StructureProcessorType; import net.minecraft.world.level.levelgen.structure.templatesystem.StructureProcessorType;
import net.minecraftforge.eventbus.api.IEventBus; import net.minecraftforge.eventbus.api.IEventBus;
import net.minecraftforge.registries.DeferredRegister; import net.minecraftforge.registries.DeferredRegister;
import net.minecraftforge.registries.RegistryObject; import net.minecraftforge.registries.RegistryObject;
public class AllStructureProcessorTypes { public class AllStructureProcessorTypes {
private static final DeferredRegister<StructureProcessorType<?>> REGISTER = DeferredRegister.create(Registry.STRUCTURE_PROCESSOR_REGISTRY, Create.ID); private static final DeferredRegister<StructureProcessorType<?>> REGISTER = DeferredRegister.create(Registries.STRUCTURE_PROCESSOR, Create.ID);
public static final RegistryObject<StructureProcessorType<SchematicProcessor>> SCHEMATIC = REGISTER.register("schematic", () -> () -> SchematicProcessor.CODEC); public static final RegistryObject<StructureProcessorType<SchematicProcessor>> SCHEMATIC = REGISTER.register("schematic", () -> () -> SchematicProcessor.CODEC);

View file

@ -1,7 +1,7 @@
package com.simibubi.create.compat.curios; package com.simibubi.create.compat.curios;
import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.blaze3d.vertex.PoseStack;
import com.mojang.math.Vector3f; import com.mojang.math.Axis;
import com.simibubi.create.Create; import com.simibubi.create.Create;
import net.minecraft.client.Minecraft; import net.minecraft.client.Minecraft;
@ -46,16 +46,16 @@ public class GogglesCurioRenderer implements ICurioRenderer {
// Translate and rotate with our head // Translate and rotate with our head
matrixStack.pushPose(); matrixStack.pushPose();
matrixStack.translate(model.head.x / 16.0, model.head.y / 16.0, model.head.z / 16.0); matrixStack.translate(model.head.x / 16.0, model.head.y / 16.0, model.head.z / 16.0);
matrixStack.mulPose(Vector3f.YP.rotation(model.head.yRot)); matrixStack.mulPose(Axis.YP.rotation(model.head.yRot));
matrixStack.mulPose(Vector3f.XP.rotation(model.head.xRot)); matrixStack.mulPose(Axis.XP.rotation(model.head.xRot));
// Translate and scale to our head // Translate and scale to our head
matrixStack.translate(0, -0.25, 0); matrixStack.translate(0, -0.25, 0);
matrixStack.mulPose(Vector3f.ZP.rotationDegrees(180.0f)); matrixStack.mulPose(Axis.ZP.rotationDegrees(180.0f));
matrixStack.scale(0.625f, 0.625f, 0.625f); matrixStack.scale(0.625f, 0.625f, 0.625f);
if(!slotContext.entity().getItemBySlot(EquipmentSlot.HEAD).isEmpty()) { if(!slotContext.entity().getItemBySlot(EquipmentSlot.HEAD).isEmpty()) {
matrixStack.mulPose(Vector3f.ZP.rotationDegrees(180.0f)); matrixStack.mulPose(Axis.ZP.rotationDegrees(180.0f));
matrixStack.translate(0, -0.25, 0); matrixStack.translate(0, -0.25, 0);
} }

View file

@ -6,7 +6,7 @@ import java.util.Optional;
import javax.annotation.ParametersAreNonnullByDefault; import javax.annotation.ParametersAreNonnullByDefault;
import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.blaze3d.vertex.PoseStack;
import com.mojang.math.Vector3f; import com.mojang.math.Axis;
import com.simibubi.create.compat.jei.category.animations.AnimatedKinetics; import com.simibubi.create.compat.jei.category.animations.AnimatedKinetics;
import com.simibubi.create.content.contraptions.processing.ItemApplicationRecipe; import com.simibubi.create.content.contraptions.processing.ItemApplicationRecipe;
import com.simibubi.create.content.contraptions.processing.ProcessingOutput; import com.simibubi.create.content.contraptions.processing.ProcessingOutput;
@ -82,8 +82,8 @@ public class ItemApplicationCategory extends CreateRecipeCategory<ItemApplicatio
matrixStack.pushPose(); matrixStack.pushPose();
matrixStack.translate(74, 51, 100); matrixStack.translate(74, 51, 100);
matrixStack.mulPose(Vector3f.XP.rotationDegrees(-15.5f)); matrixStack.mulPose(Axis.XP.rotationDegrees(-15.5f));
matrixStack.mulPose(Vector3f.YP.rotationDegrees(22.5f)); matrixStack.mulPose(Axis.YP.rotationDegrees(22.5f));
int scale = 20; int scale = 20;
GuiGameElement.of(state) GuiGameElement.of(state)

View file

@ -6,7 +6,7 @@ import java.util.function.Supplier;
import javax.annotation.ParametersAreNonnullByDefault; import javax.annotation.ParametersAreNonnullByDefault;
import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.blaze3d.vertex.PoseStack;
import com.mojang.math.Vector3f; import com.mojang.math.Axis;
import com.simibubi.create.AllBlockPartials; import com.simibubi.create.AllBlockPartials;
import com.simibubi.create.AllBlocks; import com.simibubi.create.AllBlocks;
import com.simibubi.create.compat.jei.category.animations.AnimatedKinetics; import com.simibubi.create.compat.jei.category.animations.AnimatedKinetics;
@ -54,8 +54,8 @@ public abstract class ProcessingViaFanCategory<T extends Recipe<?>> extends Crea
matrixStack.pushPose(); matrixStack.pushPose();
translateFan(matrixStack); translateFan(matrixStack);
matrixStack.mulPose(Vector3f.XP.rotationDegrees(-12.5f)); matrixStack.mulPose(Axis.XP.rotationDegrees(-12.5f));
matrixStack.mulPose(Vector3f.YP.rotationDegrees(22.5f)); matrixStack.mulPose(Axis.YP.rotationDegrees(22.5f));
AnimatedKinetics.defaultBlockElement(AllBlockPartials.ENCASED_FAN_INNER) AnimatedKinetics.defaultBlockElement(AllBlockPartials.ENCASED_FAN_INNER)
.rotateBlock(180, 0, AnimatedKinetics.getCurrentAngle() * 16) .rotateBlock(180, 0, AnimatedKinetics.getCurrentAngle() * 16)

View file

@ -3,7 +3,7 @@ package com.simibubi.create.compat.jei.category.animations;
import com.jozufozu.flywheel.core.PartialModel; import com.jozufozu.flywheel.core.PartialModel;
import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.blaze3d.vertex.PoseStack;
import com.mojang.blaze3d.vertex.VertexConsumer; import com.mojang.blaze3d.vertex.VertexConsumer;
import com.mojang.math.Vector3f; import com.mojang.math.Axis;
import com.simibubi.create.AllBlockPartials; import com.simibubi.create.AllBlockPartials;
import com.simibubi.create.AllBlocks; import com.simibubi.create.AllBlocks;
import com.simibubi.create.AllSpriteShifts; import com.simibubi.create.AllSpriteShifts;
@ -31,8 +31,8 @@ public class AnimatedBlazeBurner extends AnimatedKinetics {
public void draw(PoseStack matrixStack, int xOffset, int yOffset) { public void draw(PoseStack matrixStack, int xOffset, int yOffset) {
matrixStack.pushPose(); matrixStack.pushPose();
matrixStack.translate(xOffset, yOffset, 200); matrixStack.translate(xOffset, yOffset, 200);
matrixStack.mulPose(Vector3f.XP.rotationDegrees(-15.5f)); matrixStack.mulPose(Axis.XP.rotationDegrees(-15.5f));
matrixStack.mulPose(Vector3f.YP.rotationDegrees(22.5f)); matrixStack.mulPose(Axis.YP.rotationDegrees(22.5f));
int scale = 23; int scale = 23;
float offset = (Mth.sin(AnimationTickHolder.getRenderTime() / 16f) + 0.5f) / 16f; float offset = (Mth.sin(AnimationTickHolder.getRenderTime() / 16f) + 0.5f) / 16f;

View file

@ -1,23 +1,23 @@
package com.simibubi.create.compat.jei.category.animations; package com.simibubi.create.compat.jei.category.animations;
import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.blaze3d.vertex.PoseStack;
import com.mojang.math.Vector3f; import com.mojang.math.Axis;
import com.simibubi.create.AllBlocks; import com.simibubi.create.AllBlocks;
import net.minecraft.core.Direction.Axis; import net.minecraft.core.Direction;
import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.BlockState;
import net.minecraft.world.level.block.state.properties.BlockStateProperties; import net.minecraft.world.level.block.state.properties.BlockStateProperties;
public class AnimatedCrushingWheels extends AnimatedKinetics { public class AnimatedCrushingWheels extends AnimatedKinetics {
private final BlockState wheel = AllBlocks.CRUSHING_WHEEL.getDefaultState() private final BlockState wheel = AllBlocks.CRUSHING_WHEEL.getDefaultState()
.setValue(BlockStateProperties.AXIS, Axis.X); .setValue(BlockStateProperties.AXIS, Direction.Axis.X);
@Override @Override
public void draw(PoseStack matrixStack, int xOffset, int yOffset) { public void draw(PoseStack matrixStack, int xOffset, int yOffset) {
matrixStack.pushPose(); matrixStack.pushPose();
matrixStack.translate(xOffset, yOffset, 100); matrixStack.translate(xOffset, yOffset, 100);
matrixStack.mulPose(Vector3f.YP.rotationDegrees(-22.5f)); matrixStack.mulPose(Axis.YP.rotationDegrees(-22.5f));
int scale = 22; int scale = 22;
blockElement(wheel) blockElement(wheel)

View file

@ -1,14 +1,13 @@
package com.simibubi.create.compat.jei.category.animations; package com.simibubi.create.compat.jei.category.animations;
import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.blaze3d.vertex.PoseStack;
import com.mojang.math.Vector3f; import com.mojang.math.Axis;
import com.simibubi.create.AllBlockPartials; import com.simibubi.create.AllBlockPartials;
import com.simibubi.create.AllBlocks; import com.simibubi.create.AllBlocks;
import com.simibubi.create.content.contraptions.components.deployer.DeployerBlock; import com.simibubi.create.content.contraptions.components.deployer.DeployerBlock;
import com.simibubi.create.foundation.utility.AnimationTickHolder; import com.simibubi.create.foundation.utility.AnimationTickHolder;
import net.minecraft.core.Direction; import net.minecraft.core.Direction;
import net.minecraft.core.Direction.Axis;
public class AnimatedDeployer extends AnimatedKinetics { public class AnimatedDeployer extends AnimatedKinetics {
@ -16,11 +15,11 @@ public class AnimatedDeployer extends AnimatedKinetics {
public void draw(PoseStack matrixStack, int xOffset, int yOffset) { public void draw(PoseStack matrixStack, int xOffset, int yOffset) {
matrixStack.pushPose(); matrixStack.pushPose();
matrixStack.translate(xOffset, yOffset, 100); matrixStack.translate(xOffset, yOffset, 100);
matrixStack.mulPose(Vector3f.XP.rotationDegrees(-15.5f)); matrixStack.mulPose(Axis.XP.rotationDegrees(-15.5f));
matrixStack.mulPose(Vector3f.YP.rotationDegrees(22.5f)); matrixStack.mulPose(Axis.YP.rotationDegrees(22.5f));
int scale = 20; int scale = 20;
blockElement(shaft(Axis.Z)) blockElement(shaft(Direction.Axis.Z))
.rotateBlock(0, 0, getCurrentAngle()) .rotateBlock(0, 0, getCurrentAngle())
.scale(scale) .scale(scale)
.render(matrixStack); .render(matrixStack);

View file

@ -2,7 +2,7 @@ package com.simibubi.create.compat.jei.category.animations;
import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.blaze3d.vertex.PoseStack;
import com.mojang.blaze3d.vertex.Tesselator; import com.mojang.blaze3d.vertex.Tesselator;
import com.mojang.math.Vector3f; import com.mojang.math.Axis;
import com.simibubi.create.AllBlocks; import com.simibubi.create.AllBlocks;
import com.simibubi.create.foundation.fluid.FluidRenderer; import com.simibubi.create.foundation.fluid.FluidRenderer;
import com.simibubi.create.foundation.gui.UIRenderHelper; import com.simibubi.create.foundation.gui.UIRenderHelper;
@ -25,8 +25,8 @@ public class AnimatedItemDrain extends AnimatedKinetics {
public void draw(PoseStack matrixStack, int xOffset, int yOffset) { public void draw(PoseStack matrixStack, int xOffset, int yOffset) {
matrixStack.pushPose(); matrixStack.pushPose();
matrixStack.translate(xOffset, yOffset, 100); matrixStack.translate(xOffset, yOffset, 100);
matrixStack.mulPose(Vector3f.XP.rotationDegrees(-15.5f)); matrixStack.mulPose(Axis.XP.rotationDegrees(-15.5f));
matrixStack.mulPose(Vector3f.YP.rotationDegrees(22.5f)); matrixStack.mulPose(Axis.YP.rotationDegrees(22.5f));
int scale = 20; int scale = 20;
blockElement(AllBlocks.ITEM_DRAIN.getDefaultState()) blockElement(AllBlocks.ITEM_DRAIN.getDefaultState())

View file

@ -1,7 +1,7 @@
package com.simibubi.create.compat.jei.category.animations; package com.simibubi.create.compat.jei.category.animations;
import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.blaze3d.vertex.PoseStack;
import com.mojang.math.Vector3f; import com.mojang.math.Axis;
import com.simibubi.create.AllBlockPartials; import com.simibubi.create.AllBlockPartials;
import com.simibubi.create.AllBlocks; import com.simibubi.create.AllBlocks;
import com.simibubi.create.foundation.utility.AnimationTickHolder; import com.simibubi.create.foundation.utility.AnimationTickHolder;
@ -14,8 +14,8 @@ public class AnimatedMixer extends AnimatedKinetics {
public void draw(PoseStack matrixStack, int xOffset, int yOffset) { public void draw(PoseStack matrixStack, int xOffset, int yOffset) {
matrixStack.pushPose(); matrixStack.pushPose();
matrixStack.translate(xOffset, yOffset, 200); matrixStack.translate(xOffset, yOffset, 200);
matrixStack.mulPose(Vector3f.XP.rotationDegrees(-15.5f)); matrixStack.mulPose(Axis.XP.rotationDegrees(-15.5f));
matrixStack.mulPose(Vector3f.YP.rotationDegrees(22.5f)); matrixStack.mulPose(Axis.YP.rotationDegrees(22.5f));
int scale = 23; int scale = 23;
blockElement(cogwheel()) blockElement(cogwheel())

View file

@ -1,12 +1,12 @@
package com.simibubi.create.compat.jei.category.animations; package com.simibubi.create.compat.jei.category.animations;
import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.blaze3d.vertex.PoseStack;
import com.mojang.math.Vector3f; import com.mojang.math.Axis;
import com.simibubi.create.AllBlockPartials; import com.simibubi.create.AllBlockPartials;
import com.simibubi.create.AllBlocks; import com.simibubi.create.AllBlocks;
import com.simibubi.create.foundation.utility.AnimationTickHolder; import com.simibubi.create.foundation.utility.AnimationTickHolder;
import net.minecraft.core.Direction.Axis; import net.minecraft.core.Direction;
public class AnimatedPress extends AnimatedKinetics { public class AnimatedPress extends AnimatedKinetics {
@ -20,11 +20,11 @@ public class AnimatedPress extends AnimatedKinetics {
public void draw(PoseStack matrixStack, int xOffset, int yOffset) { public void draw(PoseStack matrixStack, int xOffset, int yOffset) {
matrixStack.pushPose(); matrixStack.pushPose();
matrixStack.translate(xOffset, yOffset, 200); matrixStack.translate(xOffset, yOffset, 200);
matrixStack.mulPose(Vector3f.XP.rotationDegrees(-15.5f)); matrixStack.mulPose(Axis.XP.rotationDegrees(-15.5f));
matrixStack.mulPose(Vector3f.YP.rotationDegrees(22.5f)); matrixStack.mulPose(Axis.YP.rotationDegrees(22.5f));
int scale = basin ? 23 : 24; int scale = basin ? 23 : 24;
blockElement(shaft(Axis.Z)) blockElement(shaft(Direction.Axis.Z))
.rotateBlock(0, 0, getCurrentAngle()) .rotateBlock(0, 0, getCurrentAngle())
.scale(scale) .scale(scale)
.render(matrixStack); .render(matrixStack);

View file

@ -1,13 +1,12 @@
package com.simibubi.create.compat.jei.category.animations; package com.simibubi.create.compat.jei.category.animations;
import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.blaze3d.vertex.PoseStack;
import com.mojang.math.Vector3f; import com.mojang.math.Axis;
import com.simibubi.create.AllBlockPartials; import com.simibubi.create.AllBlockPartials;
import com.simibubi.create.AllBlocks; import com.simibubi.create.AllBlocks;
import com.simibubi.create.content.contraptions.components.saw.SawBlock; import com.simibubi.create.content.contraptions.components.saw.SawBlock;
import net.minecraft.core.Direction; import net.minecraft.core.Direction;
import net.minecraft.core.Direction.Axis;
public class AnimatedSaw extends AnimatedKinetics { public class AnimatedSaw extends AnimatedKinetics {
@ -17,11 +16,11 @@ public class AnimatedSaw extends AnimatedKinetics {
matrixStack.translate(xOffset, yOffset, 0); matrixStack.translate(xOffset, yOffset, 0);
matrixStack.translate(0, 0, 200); matrixStack.translate(0, 0, 200);
matrixStack.translate(2, 22, 0); matrixStack.translate(2, 22, 0);
matrixStack.mulPose(Vector3f.XP.rotationDegrees(-15.5f)); matrixStack.mulPose(Axis.XP.rotationDegrees(-15.5f));
matrixStack.mulPose(Vector3f.YP.rotationDegrees(22.5f + 90)); matrixStack.mulPose(Axis.YP.rotationDegrees(22.5f + 90));
int scale = 25; int scale = 25;
blockElement(shaft(Axis.X)) blockElement(shaft(Direction.Axis.X))
.rotateBlock(-getCurrentAngle(), 0, 0) .rotateBlock(-getCurrentAngle(), 0, 0)
.scale(scale) .scale(scale)
.render(matrixStack); .render(matrixStack);

View file

@ -5,7 +5,7 @@ import java.util.List;
import com.mojang.blaze3d.platform.Lighting; import com.mojang.blaze3d.platform.Lighting;
import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.blaze3d.vertex.PoseStack;
import com.mojang.blaze3d.vertex.Tesselator; import com.mojang.blaze3d.vertex.Tesselator;
import com.mojang.math.Vector3f; import com.mojang.math.Axis;
import com.simibubi.create.AllBlockPartials; import com.simibubi.create.AllBlockPartials;
import com.simibubi.create.AllBlocks; import com.simibubi.create.AllBlocks;
import com.simibubi.create.foundation.fluid.FluidRenderer; import com.simibubi.create.foundation.fluid.FluidRenderer;
@ -31,8 +31,8 @@ public class AnimatedSpout extends AnimatedKinetics {
public void draw(PoseStack matrixStack, int xOffset, int yOffset) { public void draw(PoseStack matrixStack, int xOffset, int yOffset) {
matrixStack.pushPose(); matrixStack.pushPose();
matrixStack.translate(xOffset, yOffset, 100); matrixStack.translate(xOffset, yOffset, 100);
matrixStack.mulPose(Vector3f.XP.rotationDegrees(-15.5f)); matrixStack.mulPose(Axis.XP.rotationDegrees(-15.5f));
matrixStack.mulPose(Vector3f.YP.rotationDegrees(22.5f)); matrixStack.mulPose(Axis.YP.rotationDegrees(22.5f));
int scale = 20; int scale = 20;
blockElement(AllBlocks.SPOUT.getDefaultState()) blockElement(AllBlocks.SPOUT.getDefaultState())

View file

@ -1,6 +1,7 @@
package com.simibubi.create.content.contraptions.base.flwdata; package com.simibubi.create.content.contraptions.base.flwdata;
import com.mojang.math.Quaternion; import org.joml.Quaternionf;
import com.simibubi.create.foundation.block.render.SpriteShiftEntry; import com.simibubi.create.foundation.block.render.SpriteShiftEntry;
import net.minecraft.client.renderer.texture.TextureAtlasSprite; import net.minecraft.client.renderer.texture.TextureAtlasSprite;
@ -18,11 +19,11 @@ public class BeltData extends KineticData {
float maxV; float maxV;
byte scrollMult; byte scrollMult;
public BeltData setRotation(Quaternion q) { public BeltData setRotation(Quaternionf q) {
this.qX = q.i(); this.qX = q.x();
this.qY = q.j(); this.qY = q.y();
this.qZ = q.k(); this.qZ = q.z();
this.qW = q.r(); this.qW = q.w();
markDirty(); markDirty();
return this; return this;
} }

View file

@ -1,5 +1,7 @@
package com.simibubi.create.content.contraptions.base.flwdata; package com.simibubi.create.content.contraptions.base.flwdata;
import org.joml.Quaternionf;
import com.jozufozu.flywheel.api.struct.Batched; import com.jozufozu.flywheel.api.struct.Batched;
import com.jozufozu.flywheel.api.struct.Instanced; import com.jozufozu.flywheel.api.struct.Instanced;
import com.jozufozu.flywheel.api.struct.StructWriter; import com.jozufozu.flywheel.api.struct.StructWriter;
@ -7,7 +9,6 @@ import com.jozufozu.flywheel.backend.gl.buffer.VecBuffer;
import com.jozufozu.flywheel.core.layout.BufferLayout; import com.jozufozu.flywheel.core.layout.BufferLayout;
import com.jozufozu.flywheel.core.model.ModelTransformer; import com.jozufozu.flywheel.core.model.ModelTransformer;
import com.jozufozu.flywheel.util.RenderMath; import com.jozufozu.flywheel.util.RenderMath;
import com.mojang.math.Quaternion;
import com.simibubi.create.content.contraptions.KineticDebugger; import com.simibubi.create.content.contraptions.KineticDebugger;
import com.simibubi.create.foundation.render.AllInstanceFormats; import com.simibubi.create.foundation.render.AllInstanceFormats;
import com.simibubi.create.foundation.render.AllProgramSpecs; import com.simibubi.create.foundation.render.AllProgramSpecs;
@ -52,7 +53,7 @@ public class BeltType implements Instanced<BeltData>, Batched<BeltData> {
}); });
b.translate(d.x + 0.5, d.y + 0.5, d.z + 0.5) b.translate(d.x + 0.5, d.y + 0.5, d.z + 0.5)
.multiply(new Quaternion(d.qX, d.qY, d.qZ, d.qW)) .multiply(new Quaternionf(d.qX, d.qY, d.qZ, d.qW))
.unCentre() .unCentre()
.light(d.getPackedLight()); .light(d.getPackedLight());
if (KineticDebugger.isActive()) { if (KineticDebugger.isActive()) {

View file

@ -1,7 +1,8 @@
package com.simibubi.create.content.contraptions.base.flwdata; package com.simibubi.create.content.contraptions.base.flwdata;
import org.joml.Vector3f;
import com.jozufozu.flywheel.core.materials.BasicData; import com.jozufozu.flywheel.core.materials.BasicData;
import com.mojang.math.Vector3f;
import com.simibubi.create.content.contraptions.base.KineticTileEntity; import com.simibubi.create.content.contraptions.base.KineticTileEntity;
import com.simibubi.create.foundation.utility.Color; import com.simibubi.create.foundation.utility.Color;

View file

@ -1,6 +1,6 @@
package com.simibubi.create.content.contraptions.base.flwdata; package com.simibubi.create.content.contraptions.base.flwdata;
import com.mojang.math.Vector3f; import org.joml.Vector3f;
import net.minecraft.core.Direction; import net.minecraft.core.Direction;

View file

@ -1,5 +1,7 @@
package com.simibubi.create.content.contraptions.base.flwdata; package com.simibubi.create.content.contraptions.base.flwdata;
import org.joml.Vector3f;
import com.jozufozu.flywheel.api.struct.Batched; import com.jozufozu.flywheel.api.struct.Batched;
import com.jozufozu.flywheel.api.struct.Instanced; import com.jozufozu.flywheel.api.struct.Instanced;
import com.jozufozu.flywheel.api.struct.StructWriter; import com.jozufozu.flywheel.api.struct.StructWriter;
@ -7,7 +9,7 @@ import com.jozufozu.flywheel.backend.gl.buffer.VecBuffer;
import com.jozufozu.flywheel.core.layout.BufferLayout; import com.jozufozu.flywheel.core.layout.BufferLayout;
import com.jozufozu.flywheel.core.model.ModelTransformer; import com.jozufozu.flywheel.core.model.ModelTransformer;
import com.jozufozu.flywheel.util.RenderMath; import com.jozufozu.flywheel.util.RenderMath;
import com.mojang.math.Vector3f; import com.mojang.math.Axis;
import com.simibubi.create.content.contraptions.KineticDebugger; import com.simibubi.create.content.contraptions.KineticDebugger;
import com.simibubi.create.foundation.render.AllInstanceFormats; import com.simibubi.create.foundation.render.AllInstanceFormats;
import com.simibubi.create.foundation.render.AllProgramSpecs; import com.simibubi.create.foundation.render.AllProgramSpecs;
@ -40,7 +42,7 @@ public class RotatingType implements Instanced<RotatingData>, Batched<RotatingDa
public void transform(RotatingData d, ModelTransformer.Params b) { public void transform(RotatingData d, ModelTransformer.Params b) {
float angle = ((AnimationTickHolder.getRenderTime() * d.rotationalSpeed * 3f / 10 + d.rotationOffset) % 360); float angle = ((AnimationTickHolder.getRenderTime() * d.rotationalSpeed * 3f / 10 + d.rotationOffset) % 360);
Vector3f axis = new Vector3f(RenderMath.f(d.rotationAxisX), RenderMath.f(d.rotationAxisY), RenderMath.f(d.rotationAxisZ)); Axis axis = Axis.of(new Vector3f(RenderMath.f(d.rotationAxisX), RenderMath.f(d.rotationAxisY), RenderMath.f(d.rotationAxisZ)));
b.light(d.getPackedLight()) b.light(d.getPackedLight())
.translate(d.x + 0.5, d.y + 0.5, d.z + 0.5) .translate(d.x + 0.5, d.y + 0.5, d.z + 0.5)
.multiply(axis.rotationDegrees(angle)) .multiply(axis.rotationDegrees(angle))

View file

@ -1,9 +1,10 @@
package com.simibubi.create.content.contraptions.components.actors; package com.simibubi.create.content.contraptions.components.actors;
import org.joml.Quaternionf;
import com.jozufozu.flywheel.api.Material; import com.jozufozu.flywheel.api.Material;
import com.jozufozu.flywheel.api.MaterialManager; import com.jozufozu.flywheel.api.MaterialManager;
import com.jozufozu.flywheel.core.virtual.VirtualRenderWorld; import com.jozufozu.flywheel.core.virtual.VirtualRenderWorld;
import com.mojang.math.Quaternion;
import com.simibubi.create.AllBlockPartials; import com.simibubi.create.AllBlockPartials;
import com.simibubi.create.content.contraptions.components.actors.flwdata.ActorData; import com.simibubi.create.content.contraptions.components.actors.flwdata.ActorData;
import com.simibubi.create.content.contraptions.components.structureMovement.MovementContext; import com.simibubi.create.content.contraptions.components.structureMovement.MovementContext;
@ -13,6 +14,7 @@ import com.simibubi.create.foundation.utility.AngleHelper;
import com.simibubi.create.foundation.utility.VecHelper; import com.simibubi.create.foundation.utility.VecHelper;
import net.minecraft.core.Direction; import net.minecraft.core.Direction;
import net.minecraft.util.Mth;
import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.BlockState;
public class DrillActorInstance extends ActorInstance { public class DrillActorInstance extends ActorInstance {
@ -45,7 +47,7 @@ public class DrillActorInstance extends ActorInstance {
.setBlockLight(localBlockLight()) .setBlockLight(localBlockLight())
.setRotationOffset(0) .setRotationOffset(0)
.setRotationAxis(0, 0, 1) .setRotationAxis(0, 0, 1)
.setLocalRotation(new Quaternion(eulerX, eulerY, 0, true)) .setLocalRotation(new Quaternionf().rotationXYZ(eulerX * Mth.DEG_TO_RAD, eulerY * Mth.DEG_TO_RAD, 0))
.setSpeed(getSpeed(facing)); .setSpeed(getSpeed(facing));
} }

View file

@ -9,6 +9,7 @@ import net.minecraft.core.BlockPos;
import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.CompoundTag;
import net.minecraft.network.FriendlyByteBuf; import net.minecraft.network.FriendlyByteBuf;
import net.minecraft.network.protocol.Packet; import net.minecraft.network.protocol.Packet;
import net.minecraft.network.protocol.game.ClientGamePacketListener;
import net.minecraft.resources.ResourceLocation; import net.minecraft.resources.ResourceLocation;
import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.Entity;
import net.minecraft.world.entity.EntityType; import net.minecraft.world.entity.EntityType;
@ -122,7 +123,7 @@ public class SeatEntity extends Entity implements IEntityAdditionalSpawnData {
protected void addAdditionalSaveData(CompoundTag p_213281_1_) {} protected void addAdditionalSaveData(CompoundTag p_213281_1_) {}
@Override @Override
public Packet<?> getAddEntityPacket() { public Packet<ClientGamePacketListener> getAddEntityPacket() {
return NetworkHooks.getEntitySpawningPacket(this); return NetworkHooks.getEntitySpawningPacket(this);
} }

View file

@ -1,8 +1,9 @@
package com.simibubi.create.content.contraptions.components.actors.flwdata; package com.simibubi.create.content.contraptions.components.actors.flwdata;
import org.joml.Quaternionf;
import org.joml.Vector3f;
import com.jozufozu.flywheel.api.InstanceData; import com.jozufozu.flywheel.api.InstanceData;
import com.mojang.math.Quaternion;
import com.mojang.math.Vector3f;
import net.minecraft.core.BlockPos; import net.minecraft.core.BlockPos;
@ -83,11 +84,11 @@ public class ActorData extends InstanceData {
return this; return this;
} }
public ActorData setLocalRotation(Quaternion q) { public ActorData setLocalRotation(Quaternionf q) {
this.qX = q.i(); this.qX = q.x();
this.qY = q.j(); this.qY = q.y();
this.qZ = q.k(); this.qZ = q.z();
this.qW = q.r(); this.qW = q.w();
markDirty(); markDirty();
return this; return this;
} }

View file

@ -19,7 +19,7 @@ import net.minecraft.sounds.SoundEvents;
import net.minecraft.sounds.SoundSource; import net.minecraft.sounds.SoundSource;
import net.minecraft.util.Mth; import net.minecraft.util.Mth;
import net.minecraft.world.damagesource.DamageSource; import net.minecraft.world.damagesource.DamageSource;
import net.minecraft.world.level.Explosion; import net.minecraft.world.level.Level.ExplosionInteraction;
import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.entity.BlockEntityType;
import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.BlockState;
import net.minecraft.world.phys.Vec3; import net.minecraft.world.phys.Vec3;
@ -83,9 +83,9 @@ public class CuckooClockTileEntity extends KineticTileEntity {
moveHands(hours, minutes); moveHands(hours, minutes);
if (AnimationTickHolder.getTicks() % 6 == 0) if (AnimationTickHolder.getTicks() % 6 == 0)
playSound(SoundEvents.NOTE_BLOCK_HAT, 1 / 16f, 2f); playSound(SoundEvents.NOTE_BLOCK_HAT.get(), 1 / 16f, 2f);
else if (AnimationTickHolder.getTicks() % 3 == 0) else if (AnimationTickHolder.getTicks() % 3 == 0)
playSound(SoundEvents.NOTE_BLOCK_HAT, 1 / 16f, 1.5f); playSound(SoundEvents.NOTE_BLOCK_HAT.get(), 1 / 16f, 1.5f);
} }
return; return;
} }
@ -106,7 +106,7 @@ public class CuckooClockTileEntity extends KineticTileEntity {
Vec3 center = VecHelper.getCenterOf(worldPosition); Vec3 center = VecHelper.getCenterOf(worldPosition);
level.destroyBlock(worldPosition, false); level.destroyBlock(worldPosition, false);
level.explode(null, CUCKOO_SURPRISE, null, center.x, center.y, center.z, 3, false, level.explode(null, CUCKOO_SURPRISE, null, center.x, center.y, center.z, 3, false,
Explosion.BlockInteraction.BREAK); ExplosionInteraction.BLOCK);
} }
} }
@ -117,9 +117,9 @@ public class CuckooClockTileEntity extends KineticTileEntity {
if (animationType == Animation.NONE) { if (animationType == Animation.NONE) {
if (AnimationTickHolder.getTicks() % 32 == 0) if (AnimationTickHolder.getTicks() % 32 == 0)
playSound(SoundEvents.NOTE_BLOCK_HAT, 1 / 16f, 2f); playSound(SoundEvents.NOTE_BLOCK_HAT.get(), 1 / 16f, 2f);
else if (AnimationTickHolder.getTicks() % 16 == 0) else if (AnimationTickHolder.getTicks() % 16 == 0)
playSound(SoundEvents.NOTE_BLOCK_HAT, 1 / 16f, 1.5f); playSound(SoundEvents.NOTE_BLOCK_HAT.get(), 1 / 16f, 1.5f);
} else { } else {
boolean isSurprise = animationType == Animation.SURPRISE; boolean isSurprise = animationType == Animation.SURPRISE;
@ -131,9 +131,9 @@ public class CuckooClockTileEntity extends KineticTileEntity {
// sounds // sounds
if (value == 1) if (value == 1)
playSound(SoundEvents.NOTE_BLOCK_CHIME, 2, .5f); playSound(SoundEvents.NOTE_BLOCK_CHIME.get(), 2, .5f);
if (value == 21) if (value == 21)
playSound(SoundEvents.NOTE_BLOCK_CHIME, 2, 0.793701f); playSound(SoundEvents.NOTE_BLOCK_CHIME.get(), 2, 0.793701f);
if (value > 30 && isSurprise) { if (value > 30 && isSurprise) {
Vec3 pos = VecHelper.offsetRandomly(VecHelper.getCenterOf(this.worldPosition), level.random, .5f); Vec3 pos = VecHelper.offsetRandomly(VecHelper.getCenterOf(this.worldPosition), level.random, .5f);

View file

@ -8,7 +8,7 @@ import com.jozufozu.flywheel.core.PartialModel;
import com.jozufozu.flywheel.util.transform.TransformStack; import com.jozufozu.flywheel.util.transform.TransformStack;
import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.blaze3d.vertex.PoseStack;
import com.mojang.blaze3d.vertex.VertexConsumer; import com.mojang.blaze3d.vertex.VertexConsumer;
import com.mojang.math.Vector3f; import com.mojang.math.Axis;
import com.simibubi.create.AllBlockPartials; import com.simibubi.create.AllBlockPartials;
import com.simibubi.create.AllSpriteShifts; import com.simibubi.create.AllSpriteShifts;
import com.simibubi.create.content.contraptions.components.crafter.MechanicalCrafterTileEntity.Phase; import com.simibubi.create.content.contraptions.components.crafter.MechanicalCrafterTileEntity.Phase;
@ -58,7 +58,7 @@ public class MechanicalCrafterRenderer extends SafeTileEntityRenderer<Mechanical
ms.translate(vec.x, vec.y, vec.z); ms.translate(vec.x, vec.y, vec.z);
ms.scale(1 / 2f, 1 / 2f, 1 / 2f); ms.scale(1 / 2f, 1 / 2f, 1 / 2f);
float yRot = AngleHelper.horizontalAngle(facing); float yRot = AngleHelper.horizontalAngle(facing);
ms.mulPose(Vector3f.YP.rotationDegrees(yRot)); ms.mulPose(Axis.YP.rotationDegrees(yRot));
renderItems(te, partialTicks, ms, buffer, light, overlay); renderItems(te, partialTicks, ms, buffer, light, overlay);
ms.popPose(); ms.popPose();
@ -73,7 +73,7 @@ public class MechanicalCrafterRenderer extends SafeTileEntityRenderer<Mechanical
if (!stack.isEmpty()) { if (!stack.isEmpty()) {
ms.pushPose(); ms.pushPose();
ms.translate(0, 0, -1 / 256f); ms.translate(0, 0, -1 / 256f);
ms.mulPose(Vector3f.YP.rotationDegrees(180)); ms.mulPose(Axis.YP.rotationDegrees(180));
Minecraft.getInstance() Minecraft.getInstance()
.getItemRenderer() .getItemRenderer()
.renderStatic(stack, TransformType.FIXED, light, overlay, ms, buffer, 0); .renderStatic(stack, TransformType.FIXED, light, overlay, ms, buffer, 0);
@ -140,7 +140,7 @@ public class MechanicalCrafterRenderer extends SafeTileEntityRenderer<Mechanical
float earlyProgress = Mth.clamp(progress * 2, 0, 1); float earlyProgress = Mth.clamp(progress * 2, 0, 1);
float lateProgress = Mth.clamp(progress * 2 - 1, 0, 1); float lateProgress = Mth.clamp(progress * 2 - 1, 0, 1);
ms.mulPose(Vector3f.ZP.rotationDegrees(earlyProgress * 2 * 360)); ms.mulPose(Axis.ZP.rotationDegrees(earlyProgress * 2 * 360));
float upScaling = earlyProgress * 1.125f; float upScaling = earlyProgress * 1.125f;
float downScaling = 1 + (1 - lateProgress) * .125f; float downScaling = 1 + (1 - lateProgress) * .125f;
ms.scale(upScaling, upScaling, upScaling); ms.scale(upScaling, upScaling, upScaling);
@ -153,7 +153,7 @@ public class MechanicalCrafterRenderer extends SafeTileEntityRenderer<Mechanical
.intValue() != 0) .intValue() != 0)
return; return;
ms.pushPose(); ms.pushPose();
ms.mulPose(Vector3f.YP.rotationDegrees(180)); ms.mulPose(Axis.YP.rotationDegrees(180));
Minecraft.getInstance() Minecraft.getInstance()
.getItemRenderer() .getItemRenderer()
.renderStatic(stack, TransformType.FIXED, light, overlay, ms, buffer, 0); .renderStatic(stack, TransformType.FIXED, light, overlay, ms, buffer, 0);

View file

@ -3,12 +3,14 @@ package com.simibubi.create.content.contraptions.components.deployer;
import static com.simibubi.create.content.contraptions.base.DirectionalAxisKineticBlock.AXIS_ALONG_FIRST_COORDINATE; import static com.simibubi.create.content.contraptions.base.DirectionalAxisKineticBlock.AXIS_ALONG_FIRST_COORDINATE;
import static com.simibubi.create.content.contraptions.base.DirectionalKineticBlock.FACING; import static com.simibubi.create.content.contraptions.base.DirectionalKineticBlock.FACING;
import org.joml.Quaternionf;
import com.jozufozu.flywheel.api.MaterialManager; import com.jozufozu.flywheel.api.MaterialManager;
import com.jozufozu.flywheel.api.instance.DynamicInstance; import com.jozufozu.flywheel.api.instance.DynamicInstance;
import com.jozufozu.flywheel.api.instance.TickableInstance; import com.jozufozu.flywheel.api.instance.TickableInstance;
import com.jozufozu.flywheel.core.PartialModel; import com.jozufozu.flywheel.core.PartialModel;
import com.jozufozu.flywheel.core.materials.oriented.OrientedData; import com.jozufozu.flywheel.core.materials.oriented.OrientedData;
import com.mojang.math.Quaternion; import com.mojang.math.Axis;
import com.simibubi.create.AllBlockPartials; import com.simibubi.create.AllBlockPartials;
import com.simibubi.create.content.contraptions.base.KineticTileEntity; import com.simibubi.create.content.contraptions.base.KineticTileEntity;
import com.simibubi.create.content.contraptions.relays.encased.ShaftInstance; import com.simibubi.create.content.contraptions.relays.encased.ShaftInstance;
@ -123,12 +125,12 @@ public class DeployerInstance extends ShaftInstance implements DynamicInstance,
static void updateRotation(OrientedData pole, OrientedData hand, float yRot, float xRot, float zRot) { static void updateRotation(OrientedData pole, OrientedData hand, float yRot, float xRot, float zRot) {
Quaternion q = Direction.UP.step().rotationDegrees(yRot); Quaternionf q = Axis.YP.rotationDegrees(yRot);
q.mul(Direction.EAST.step().rotationDegrees(xRot)); q.mul(Axis.XP.rotationDegrees(xRot));
hand.setRotation(q); hand.setRotation(q);
q.mul(Direction.SOUTH.step().rotationDegrees(zRot)); q.mul(Axis.ZP.rotationDegrees(zRot));
pole.setRotation(q); pole.setRotation(q);
} }

View file

@ -9,7 +9,7 @@ import com.jozufozu.flywheel.core.virtual.VirtualRenderWorld;
import com.jozufozu.flywheel.util.transform.TransformStack; import com.jozufozu.flywheel.util.transform.TransformStack;
import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.blaze3d.vertex.PoseStack;
import com.mojang.blaze3d.vertex.VertexConsumer; import com.mojang.blaze3d.vertex.VertexConsumer;
import com.mojang.math.Vector3f; import com.mojang.math.Axis;
import com.simibubi.create.AllBlockPartials; import com.simibubi.create.AllBlockPartials;
import com.simibubi.create.AllBlocks; import com.simibubi.create.AllBlocks;
import com.simibubi.create.content.contraptions.base.IRotate; import com.simibubi.create.content.contraptions.base.IRotate;
@ -36,7 +36,6 @@ import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider;
import net.minecraft.client.renderer.entity.ItemRenderer; import net.minecraft.client.renderer.entity.ItemRenderer;
import net.minecraft.core.BlockPos; import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction; import net.minecraft.core.Direction;
import net.minecraft.core.Direction.Axis;
import net.minecraft.core.Direction.AxisDirection; import net.minecraft.core.Direction.AxisDirection;
import net.minecraft.util.Mth; import net.minecraft.util.Mth;
import net.minecraft.world.item.BlockItem; import net.minecraft.world.item.BlockItem;
@ -76,9 +75,9 @@ public class DeployerRenderer extends SafeTileEntityRenderer<DeployerTileEntity>
float xRot = facing == Direction.UP ? 90 : facing == Direction.DOWN ? 270 : 0; float xRot = facing == Direction.UP ? 90 : facing == Direction.DOWN ? 270 : 0;
boolean displayMode = facing == Direction.UP && te.getSpeed() == 0 && !punching; boolean displayMode = facing == Direction.UP && te.getSpeed() == 0 && !punching;
ms.mulPose(Vector3f.YP.rotationDegrees(yRot)); ms.mulPose(Axis.YP.rotationDegrees(yRot));
if (!displayMode) { if (!displayMode) {
ms.mulPose(Vector3f.XP.rotationDegrees(xRot)); ms.mulPose(Axis.XP.rotationDegrees(xRot));
ms.translate(0, 0, -11 / 16f); ms.translate(0, 0, -11 / 16f);
} }
@ -98,7 +97,7 @@ public class DeployerRenderer extends SafeTileEntityRenderer<DeployerTileEntity>
ms.translate(0, isBlockItem ? 9 / 16f : 11 / 16f, 0); ms.translate(0, isBlockItem ? 9 / 16f : 11 / 16f, 0);
ms.scale(scale, scale, scale); ms.scale(scale, scale, scale);
transform = TransformType.GROUND; transform = TransformType.GROUND;
ms.mulPose(Vector3f.YP.rotationDegrees(AnimationTickHolder.getRenderTime(te.getLevel()))); ms.mulPose(Axis.YP.rotationDegrees(AnimationTickHolder.getRenderTime(te.getLevel())));
} else { } else {
float scale = punching ? .75f : isBlockItem ? .75f - 1 / 64f : .5f; float scale = punching ? .75f : isBlockItem ? .75f - 1 / 64f : .5f;
@ -146,7 +145,7 @@ public class DeployerRenderer extends SafeTileEntityRenderer<DeployerTileEntity>
float yRot = AngleHelper.horizontalAngle(facing); float yRot = AngleHelper.horizontalAngle(facing);
float xRot = facing == Direction.UP ? 270 : facing == Direction.DOWN ? 90 : 0; float xRot = facing == Direction.UP ? 270 : facing == Direction.DOWN ? 90 : 0;
float zRot = float zRot =
axisDirectionMatters && (deployerState.getValue(AXIS_ALONG_FIRST_COORDINATE) ^ facing.getAxis() == Axis.Z) ? 90 axisDirectionMatters && (deployerState.getValue(AXIS_ALONG_FIRST_COORDINATE) ^ facing.getAxis() == Direction.Axis.Z) ? 90
: 0; : 0;
buffer.rotateCentered(Direction.UP, (float) ((yRot) / 180 * Math.PI)); buffer.rotateCentered(Direction.UP, (float) ((yRot) / 180 * Math.PI));
@ -188,7 +187,7 @@ public class DeployerRenderer extends SafeTileEntityRenderer<DeployerTileEntity>
m.pushPose(); m.pushPose();
m.pushPose(); m.pushPose();
Axis axis = Axis.Y; Direction.Axis axis = Direction.Axis.Y;
if (context.state.getBlock() instanceof IRotate) { if (context.state.getBlock() instanceof IRotate) {
IRotate def = (IRotate) context.state.getBlock(); IRotate def = (IRotate) context.state.getBlock();
axis = def.getRotationAxis(context.state); axis = def.getRotationAxis(context.state);
@ -199,11 +198,11 @@ public class DeployerRenderer extends SafeTileEntityRenderer<DeployerTileEntity>
TransformStack.cast(m) TransformStack.cast(m)
.centre() .centre()
.rotateY(axis == Axis.Z ? 90 : 0) .rotateY(axis == Direction.Axis.Z ? 90 : 0)
.rotateZ(axis.isHorizontal() ? 90 : 0) .rotateZ(axis.isHorizontal() ? 90 : 0)
.unCentre(); .unCentre();
shaft.transform(m); shaft.transform(m);
shaft.rotateCentered(Direction.get(AxisDirection.POSITIVE, Axis.Y), angle); shaft.rotateCentered(Direction.get(AxisDirection.POSITIVE, Direction.Axis.Y), angle);
m.popPose(); m.popPose();
m.translate(offset.x, offset.y, offset.z); m.translate(offset.x, offset.y, offset.z);

View file

@ -19,7 +19,7 @@ import net.minecraft.world.entity.player.Player;
import net.minecraft.world.level.ClipContext; import net.minecraft.world.level.ClipContext;
import net.minecraft.world.level.ClipContext.Block; import net.minecraft.world.level.ClipContext.Block;
import net.minecraft.world.level.ClipContext.Fluid; import net.minecraft.world.level.ClipContext.Fluid;
import net.minecraft.world.level.Explosion.BlockInteraction; import net.minecraft.world.level.Level.ExplosionInteraction;
import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.entity.BlockEntity;
import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.entity.BlockEntityType;
import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.BlockState;
@ -171,7 +171,7 @@ public class NozzleTileEntity extends SmartTileEntity {
} }
if (!pushing && pushingEntities.size() > 256 && !level.isClientSide) { if (!pushing && pushingEntities.size() > 256 && !level.isClientSide) {
level.explode(null, center.x, center.y, center.z, 2, BlockInteraction.NONE); level.explode(null, center.x, center.y, center.z, 2, ExplosionInteraction.NONE);
for (Iterator<Entity> iterator = pushingEntities.iterator(); iterator.hasNext();) { for (Iterator<Entity> iterator = pushingEntities.iterator(); iterator.hasNext();) {
Entity entity = iterator.next(); Entity entity = iterator.next();
entity.discard(); entity.discard();

View file

@ -1,11 +1,12 @@
package com.simibubi.create.content.contraptions.components.press; package com.simibubi.create.content.contraptions.components.press;
import org.joml.Quaternionf;
import com.jozufozu.flywheel.api.MaterialManager; import com.jozufozu.flywheel.api.MaterialManager;
import com.jozufozu.flywheel.api.instance.DynamicInstance; import com.jozufozu.flywheel.api.instance.DynamicInstance;
import com.jozufozu.flywheel.core.Materials; import com.jozufozu.flywheel.core.Materials;
import com.jozufozu.flywheel.core.materials.oriented.OrientedData; import com.jozufozu.flywheel.core.materials.oriented.OrientedData;
import com.mojang.math.Quaternion; import com.mojang.math.Axis;
import com.mojang.math.Vector3f;
import com.simibubi.create.AllBlockPartials; import com.simibubi.create.AllBlockPartials;
import com.simibubi.create.content.contraptions.relays.encased.ShaftInstance; import com.simibubi.create.content.contraptions.relays.encased.ShaftInstance;
import com.simibubi.create.foundation.utility.AngleHelper; import com.simibubi.create.foundation.utility.AngleHelper;
@ -25,7 +26,7 @@ public class PressInstance extends ShaftInstance implements DynamicInstance {
.getModel(AllBlockPartials.MECHANICAL_PRESS_HEAD, blockState) .getModel(AllBlockPartials.MECHANICAL_PRESS_HEAD, blockState)
.createInstance(); .createInstance();
Quaternion q = Vector3f.YP Quaternionf q = Axis.YP
.rotationDegrees(AngleHelper.horizontalAngle(blockState.getValue(MechanicalPressBlock.HORIZONTAL_FACING))); .rotationDegrees(AngleHelper.horizontalAngle(blockState.getValue(MechanicalPressBlock.HORIZONTAL_FACING)));
pressHead.setRotation(q); pressHead.setRotation(q);

View file

@ -6,7 +6,7 @@ import com.jozufozu.flywheel.backend.Backend;
import com.jozufozu.flywheel.core.PartialModel; import com.jozufozu.flywheel.core.PartialModel;
import com.jozufozu.flywheel.core.virtual.VirtualRenderWorld; import com.jozufozu.flywheel.core.virtual.VirtualRenderWorld;
import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.blaze3d.vertex.PoseStack;
import com.mojang.math.Vector3f; import com.mojang.math.Axis;
import com.simibubi.create.AllBlockPartials; import com.simibubi.create.AllBlockPartials;
import com.simibubi.create.content.contraptions.base.KineticTileEntity; import com.simibubi.create.content.contraptions.base.KineticTileEntity;
import com.simibubi.create.content.contraptions.base.KineticTileEntityRenderer; import com.simibubi.create.content.contraptions.base.KineticTileEntityRenderer;
@ -132,8 +132,8 @@ public class SawRenderer extends SafeTileEntityRenderer<SawTileEntity> {
ms.scale(.5f, .5f, .5f); ms.scale(.5f, .5f, .5f);
if (alongZ) if (alongZ)
ms.mulPose(Vector3f.YP.rotationDegrees(90)); ms.mulPose(Axis.YP.rotationDegrees(90));
ms.mulPose(Vector3f.XP.rotationDegrees(90)); ms.mulPose(Axis.XP.rotationDegrees(90));
itemRenderer.renderStatic(stack, ItemTransforms.TransformType.FIXED, light, overlay, ms, buffer, 0); itemRenderer.renderStatic(stack, ItemTransforms.TransformType.FIXED, light, overlay, ms, buffer, 0);
break; break;
} }

View file

@ -48,7 +48,7 @@ import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.crafting.Recipe; import net.minecraft.world.item.crafting.Recipe;
import net.minecraft.world.item.crafting.RecipeType; import net.minecraft.world.item.crafting.RecipeType;
import net.minecraft.world.item.crafting.StonecutterRecipe; import net.minecraft.world.item.crafting.StonecutterRecipe;
import net.minecraft.world.level.block.BambooBlock; import net.minecraft.world.level.block.BambooStalkBlock;
import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.Block;
import net.minecraft.world.level.block.CactusBlock; import net.minecraft.world.level.block.CactusBlock;
import net.minecraft.world.level.block.ChorusPlantBlock; import net.minecraft.world.level.block.ChorusPlantBlock;
@ -488,7 +488,7 @@ public class SawTileEntity extends BlockBreakingKineticTileEntity {
if (TreeCutter.isRoot(stateToBreak)) if (TreeCutter.isRoot(stateToBreak))
return true; return true;
Block block = stateToBreak.getBlock(); Block block = stateToBreak.getBlock();
if (block instanceof BambooBlock) if (block instanceof BambooStalkBlock)
return true; return true;
if (block instanceof StemGrownBlock) if (block instanceof StemGrownBlock)
return true; return true;

View file

@ -1,8 +1,10 @@
package com.simibubi.create.content.contraptions.components.steam; package com.simibubi.create.content.contraptions.components.steam;
import org.joml.Quaternionf;
import org.joml.Vector3f;
import com.mojang.blaze3d.vertex.VertexConsumer; import com.mojang.blaze3d.vertex.VertexConsumer;
import com.mojang.math.Quaternion; import com.mojang.math.Axis;
import com.mojang.math.Vector3f;
import net.minecraft.client.Camera; import net.minecraft.client.Camera;
import net.minecraft.client.multiplayer.ClientLevel; import net.minecraft.client.multiplayer.ClientLevel;
@ -53,11 +55,11 @@ public class SteamJetParticle extends SimpleAnimatedParticle {
float f4 = this.getQuadSize(pPartialTicks); float f4 = this.getQuadSize(pPartialTicks);
for (int i = 0; i < 4; i++) { for (int i = 0; i < 4; i++) {
Quaternion quaternion = new Quaternion(Vector3f.YP, yaw, false); Quaternionf quaternion = Axis.YP.rotation(yaw);
quaternion.mul(Vector3f.XP.rotation(pitch)); quaternion.mul(Axis.XP.rotation(pitch));
quaternion.mul(Vector3f.YP.rotation(f3 + Mth.PI / 2 * i + roll)); quaternion.mul(Axis.YP.rotation(f3 + Mth.PI / 2 * i + roll));
Vector3f vector3f1 = new Vector3f(-1.0F, -1.0F, 0.0F); Vector3f vector3f1 = new Vector3f(-1.0F, -1.0F, 0.0F);
vector3f1.transform(quaternion); vector3f1.rotate(quaternion);
Vector3f[] avector3f = new Vector3f[] { new Vector3f(-1.0F, -1.0F, 0.0F), new Vector3f(-1.0F, 1.0F, 0.0F), Vector3f[] avector3f = new Vector3f[] { new Vector3f(-1.0F, -1.0F, 0.0F), new Vector3f(-1.0F, 1.0F, 0.0F),
new Vector3f(1.0F, 1.0F, 0.0F), new Vector3f(1.0F, -1.0F, 0.0F) }; new Vector3f(1.0F, 1.0F, 0.0F), new Vector3f(1.0F, -1.0F, 0.0F) };
@ -65,7 +67,7 @@ public class SteamJetParticle extends SimpleAnimatedParticle {
for (int j = 0; j < 4; ++j) { for (int j = 0; j < 4; ++j) {
Vector3f vector3f = avector3f[j]; Vector3f vector3f = avector3f[j];
vector3f.add(0, 1, 0); vector3f.add(0, 1, 0);
vector3f.transform(quaternion); vector3f.rotate(quaternion);
vector3f.mul(f4); vector3f.mul(f4);
vector3f.add(f, f1, f2); vector3f.add(f, f1, f2);
} }

View file

@ -10,8 +10,6 @@ import java.util.UUID;
import javax.annotation.Nullable; import javax.annotation.Nullable;
import com.simibubi.create.foundation.utility.ContraptionData;
import org.apache.commons.lang3.mutable.MutableInt; import org.apache.commons.lang3.mutable.MutableInt;
import org.apache.commons.lang3.tuple.MutablePair; import org.apache.commons.lang3.tuple.MutablePair;
@ -37,6 +35,7 @@ import com.simibubi.create.foundation.collision.Matrix3d;
import com.simibubi.create.foundation.mixin.accessor.ServerLevelAccessor; import com.simibubi.create.foundation.mixin.accessor.ServerLevelAccessor;
import com.simibubi.create.foundation.networking.AllPackets; import com.simibubi.create.foundation.networking.AllPackets;
import com.simibubi.create.foundation.utility.AngleHelper; import com.simibubi.create.foundation.utility.AngleHelper;
import com.simibubi.create.foundation.utility.ContraptionData;
import com.simibubi.create.foundation.utility.VecHelper; import com.simibubi.create.foundation.utility.VecHelper;
import net.minecraft.client.Minecraft; import net.minecraft.client.Minecraft;
@ -47,6 +46,7 @@ import net.minecraft.nbt.Tag;
import net.minecraft.network.FriendlyByteBuf; import net.minecraft.network.FriendlyByteBuf;
import net.minecraft.network.chat.Component; import net.minecraft.network.chat.Component;
import net.minecraft.network.protocol.Packet; import net.minecraft.network.protocol.Packet;
import net.minecraft.network.protocol.game.ClientGamePacketListener;
import net.minecraft.network.syncher.EntityDataAccessor; import net.minecraft.network.syncher.EntityDataAccessor;
import net.minecraft.network.syncher.EntityDataSerializers; import net.minecraft.network.syncher.EntityDataSerializers;
import net.minecraft.network.syncher.SynchedEntityData; import net.minecraft.network.syncher.SynchedEntityData;
@ -587,7 +587,7 @@ public abstract class AbstractContraptionEntity extends Entity implements IEntit
} }
@Override @Override
public Packet<?> getAddEntityPacket() { public Packet<ClientGamePacketListener> getAddEntityPacket() {
return NetworkHooks.getEntitySpawningPacket(this); return NetworkHooks.getEntitySpawningPacket(this);
} }

View file

@ -79,6 +79,8 @@ import com.simibubi.create.foundation.utility.UniqueLinkedList;
import net.minecraft.core.BlockPos; import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction; import net.minecraft.core.Direction;
import net.minecraft.core.Direction.Axis; import net.minecraft.core.Direction.Axis;
import net.minecraft.core.HolderGetter;
import net.minecraft.core.registries.Registries;
import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.CompoundTag;
import net.minecraft.nbt.ListTag; import net.minecraft.nbt.ListTag;
import net.minecraft.nbt.NbtUtils; import net.minecraft.nbt.NbtUtils;
@ -836,6 +838,7 @@ public abstract class Contraption {
} }
private void readBlocksCompound(Tag compound, Level world, boolean usePalettedDeserialization) { private void readBlocksCompound(Tag compound, Level world, boolean usePalettedDeserialization) {
HolderGetter<Block> holderGetter = world.holderLookup(Registries.BLOCK);
HashMapPalette<BlockState> palette = null; HashMapPalette<BlockState> palette = null;
ListTag blockList; ListTag blockList;
if (usePalettedDeserialization) { if (usePalettedDeserialization) {
@ -847,7 +850,7 @@ public abstract class Contraption {
ListTag list = c.getList("Palette", 10); ListTag list = c.getList("Palette", 10);
palette.values.clear(); palette.values.clear();
for (int i = 0; i < list.size(); ++i) for (int i = 0; i < list.size(); ++i)
palette.values.add(NbtUtils.readBlockState(list.getCompound(i))); palette.values.add(NbtUtils.readBlockState(holderGetter, list.getCompound(i)));
blockList = c.getList("BlockList", 10); blockList = c.getList("BlockList", 10);
} else { } else {
@ -859,7 +862,7 @@ public abstract class Contraption {
CompoundTag c = (CompoundTag) e; CompoundTag c = (CompoundTag) e;
StructureBlockInfo info = StructureBlockInfo info =
usePalettedDeserialization ? readStructureBlockInfo(c, finalPalette) : legacyReadStructureBlockInfo(c); usePalettedDeserialization ? readStructureBlockInfo(c, finalPalette) : legacyReadStructureBlockInfo(c, holderGetter);
this.blocks.put(info.pos, info); this.blocks.put(info.pos, info);
@ -902,9 +905,9 @@ public abstract class Contraption {
blockListEntry.contains("Data") ? blockListEntry.getCompound("Data") : null); blockListEntry.contains("Data") ? blockListEntry.getCompound("Data") : null);
} }
private static StructureBlockInfo legacyReadStructureBlockInfo(CompoundTag blockListEntry) { private static StructureBlockInfo legacyReadStructureBlockInfo(CompoundTag blockListEntry, HolderGetter<Block> holderGetter) {
return new StructureBlockInfo(NbtUtils.readBlockPos(blockListEntry.getCompound("Pos")), return new StructureBlockInfo(NbtUtils.readBlockPos(blockListEntry.getCompound("Pos")),
NbtUtils.readBlockState(blockListEntry.getCompound("Block")), NbtUtils.readBlockState(holderGetter, blockListEntry.getCompound("Block")),
blockListEntry.contains("Data") ? blockListEntry.getCompound("Data") : null); blockListEntry.contains("Data") ? blockListEntry.getCompound("Data") : null);
} }

View file

@ -1,11 +1,12 @@
package com.simibubi.create.content.contraptions.components.structureMovement.bearing; package com.simibubi.create.content.contraptions.components.structureMovement.bearing;
import org.joml.Quaternionf;
import com.jozufozu.flywheel.api.MaterialManager; import com.jozufozu.flywheel.api.MaterialManager;
import com.jozufozu.flywheel.api.instance.DynamicInstance; import com.jozufozu.flywheel.api.instance.DynamicInstance;
import com.jozufozu.flywheel.core.PartialModel; import com.jozufozu.flywheel.core.PartialModel;
import com.jozufozu.flywheel.core.materials.oriented.OrientedData; import com.jozufozu.flywheel.core.materials.oriented.OrientedData;
import com.mojang.math.Quaternion; import com.mojang.math.Axis;
import com.mojang.math.Vector3f;
import com.simibubi.create.AllBlockPartials; import com.simibubi.create.AllBlockPartials;
import com.simibubi.create.content.contraptions.base.BackHalfShaftInstance; import com.simibubi.create.content.contraptions.base.BackHalfShaftInstance;
import com.simibubi.create.content.contraptions.base.KineticTileEntity; import com.simibubi.create.content.contraptions.base.KineticTileEntity;
@ -20,15 +21,15 @@ public class BearingInstance<B extends KineticTileEntity & IBearingTileEntity> e
final OrientedData topInstance; final OrientedData topInstance;
final Vector3f rotationAxis; final Axis rotationAxis;
final Quaternion blockOrientation; final Quaternionf blockOrientation;
public BearingInstance(MaterialManager modelManager, B tile) { public BearingInstance(MaterialManager modelManager, B tile) {
super(modelManager, tile); super(modelManager, tile);
this.bearing = tile; this.bearing = tile;
Direction facing = blockState.getValue(BlockStateProperties.FACING); Direction facing = blockState.getValue(BlockStateProperties.FACING);
rotationAxis = Direction.get(Direction.AxisDirection.POSITIVE, axis).step(); rotationAxis = Axis.of(Direction.get(Direction.AxisDirection.POSITIVE, axis).step());
blockOrientation = getBlockStateOrientation(facing); blockOrientation = getBlockStateOrientation(facing);
@ -44,7 +45,7 @@ public class BearingInstance<B extends KineticTileEntity & IBearingTileEntity> e
public void beginFrame() { public void beginFrame() {
float interpolatedAngle = bearing.getInterpolatedAngle(AnimationTickHolder.getPartialTicks() - 1); float interpolatedAngle = bearing.getInterpolatedAngle(AnimationTickHolder.getPartialTicks() - 1);
Quaternion rot = rotationAxis.rotationDegrees(interpolatedAngle); Quaternionf rot = rotationAxis.rotationDegrees(interpolatedAngle);
rot.mul(blockOrientation); rot.mul(blockOrientation);
@ -63,16 +64,16 @@ public class BearingInstance<B extends KineticTileEntity & IBearingTileEntity> e
topInstance.delete(); topInstance.delete();
} }
static Quaternion getBlockStateOrientation(Direction facing) { static Quaternionf getBlockStateOrientation(Direction facing) {
Quaternion orientation; Quaternionf orientation;
if (facing.getAxis().isHorizontal()) { if (facing.getAxis().isHorizontal()) {
orientation = Vector3f.YP.rotationDegrees(AngleHelper.horizontalAngle(facing.getOpposite())); orientation = Axis.YP.rotationDegrees(AngleHelper.horizontalAngle(facing.getOpposite()));
} else { } else {
orientation = Quaternion.ONE.copy(); orientation = new Quaternionf();
} }
orientation.mul(Vector3f.XP.rotationDegrees(-90 - AngleHelper.verticalAngle(facing))); orientation.mul(Axis.XP.rotationDegrees(-90 - AngleHelper.verticalAngle(facing)));
return orientation; return orientation;
} }
} }

View file

@ -1,11 +1,12 @@
package com.simibubi.create.content.contraptions.components.structureMovement.bearing; package com.simibubi.create.content.contraptions.components.structureMovement.bearing;
import org.joml.Quaternionf;
import com.jozufozu.flywheel.api.MaterialManager; import com.jozufozu.flywheel.api.MaterialManager;
import com.jozufozu.flywheel.core.Materials; import com.jozufozu.flywheel.core.Materials;
import com.jozufozu.flywheel.core.materials.oriented.OrientedData; import com.jozufozu.flywheel.core.materials.oriented.OrientedData;
import com.jozufozu.flywheel.core.virtual.VirtualRenderWorld; import com.jozufozu.flywheel.core.virtual.VirtualRenderWorld;
import com.mojang.math.Quaternion; import com.mojang.math.Axis;
import com.mojang.math.Vector3f;
import com.simibubi.create.AllBlockPartials; import com.simibubi.create.AllBlockPartials;
import com.simibubi.create.content.contraptions.base.flwdata.RotatingData; import com.simibubi.create.content.contraptions.base.flwdata.RotatingData;
import com.simibubi.create.content.contraptions.components.structureMovement.MovementContext; import com.simibubi.create.content.contraptions.components.structureMovement.MovementContext;
@ -23,8 +24,8 @@ public class StabilizedBearingInstance extends ActorInstance {
final RotatingData shaft; final RotatingData shaft;
final Direction facing; final Direction facing;
final Vector3f rotationAxis; final Axis rotationAxis;
final Quaternion blockOrientation; final Quaternionf blockOrientation;
public StabilizedBearingInstance(MaterialManager materialManager, VirtualRenderWorld simulationWorld, MovementContext context) { public StabilizedBearingInstance(MaterialManager materialManager, VirtualRenderWorld simulationWorld, MovementContext context) {
super(materialManager, simulationWorld, context); super(materialManager, simulationWorld, context);
@ -32,7 +33,7 @@ public class StabilizedBearingInstance extends ActorInstance {
BlockState blockState = context.state; BlockState blockState = context.state;
facing = blockState.getValue(BlockStateProperties.FACING); facing = blockState.getValue(BlockStateProperties.FACING);
rotationAxis = Direction.get(Direction.AxisDirection.POSITIVE, facing.getAxis()).step(); rotationAxis = Axis.of(Direction.get(Direction.AxisDirection.POSITIVE, facing.getAxis()).step());
blockOrientation = BearingInstance.getBlockStateOrientation(facing); blockOrientation = BearingInstance.getBlockStateOrientation(facing);
@ -60,7 +61,7 @@ public class StabilizedBearingInstance extends ActorInstance {
public void beginFrame() { public void beginFrame() {
float counterRotationAngle = StabilizedBearingMovementBehaviour.getCounterRotationAngle(context, facing, AnimationTickHolder.getPartialTicks()); float counterRotationAngle = StabilizedBearingMovementBehaviour.getCounterRotationAngle(context, facing, AnimationTickHolder.getPartialTicks());
Quaternion rotation = rotationAxis.rotationDegrees(counterRotationAngle); Quaternionf rotation = rotationAxis.rotationDegrees(counterRotationAngle);
rotation.mul(blockOrientation); rotation.mul(blockOrientation);

View file

@ -2,10 +2,12 @@ package com.simibubi.create.content.contraptions.components.structureMovement.be
import javax.annotation.Nullable; import javax.annotation.Nullable;
import org.joml.Quaternionf;
import com.jozufozu.flywheel.api.MaterialManager; import com.jozufozu.flywheel.api.MaterialManager;
import com.jozufozu.flywheel.core.PartialModel; import com.jozufozu.flywheel.core.PartialModel;
import com.jozufozu.flywheel.core.virtual.VirtualRenderWorld; import com.jozufozu.flywheel.core.virtual.VirtualRenderWorld;
import com.mojang.math.Quaternion; import com.mojang.math.Axis;
import com.simibubi.create.AllBlockPartials; import com.simibubi.create.AllBlockPartials;
import com.simibubi.create.content.contraptions.components.structureMovement.AbstractContraptionEntity; import com.simibubi.create.content.contraptions.components.structureMovement.AbstractContraptionEntity;
import com.simibubi.create.content.contraptions.components.structureMovement.ControlledContraptionEntity; import com.simibubi.create.content.contraptions.components.structureMovement.ControlledContraptionEntity;
@ -22,7 +24,6 @@ import com.simibubi.create.foundation.utility.AnimationTickHolder;
import net.minecraft.client.renderer.MultiBufferSource; import net.minecraft.client.renderer.MultiBufferSource;
import net.minecraft.client.renderer.RenderType; import net.minecraft.client.renderer.RenderType;
import net.minecraft.core.Direction; import net.minecraft.core.Direction;
import net.minecraft.core.Direction.Axis;
import net.minecraft.world.level.block.state.properties.BlockStateProperties; import net.minecraft.world.level.block.state.properties.BlockStateProperties;
import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.api.distmarker.OnlyIn; import net.minecraftforge.api.distmarker.OnlyIn;
@ -42,13 +43,13 @@ public class StabilizedBearingMovementBehaviour implements MovementBehaviour {
float renderPartialTicks = AnimationTickHolder.getPartialTicks(); float renderPartialTicks = AnimationTickHolder.getPartialTicks();
// rotate to match blockstate // rotate to match blockstate
Quaternion orientation = BearingInstance.getBlockStateOrientation(facing); Quaternionf orientation = BearingInstance.getBlockStateOrientation(facing);
// rotate against parent // rotate against parent
float angle = getCounterRotationAngle(context, facing, renderPartialTicks) * facing.getAxisDirection() float angle = getCounterRotationAngle(context, facing, renderPartialTicks) * facing.getAxisDirection()
.getStep(); .getStep();
Quaternion rotation = facing.step() Quaternionf rotation = Axis.of(facing.step())
.rotationDegrees(angle); .rotationDegrees(angle);
rotation.mul(orientation); rotation.mul(orientation);
@ -81,7 +82,7 @@ public class StabilizedBearingMovementBehaviour implements MovementBehaviour {
return 0; return 0;
float offset = 0; float offset = 0;
Axis axis = facing.getAxis(); Direction.Axis axis = facing.getAxis();
AbstractContraptionEntity entity = context.contraption.entity; AbstractContraptionEntity entity = context.contraption.entity;
if (entity instanceof ControlledContraptionEntity) { if (entity instanceof ControlledContraptionEntity) {

View file

@ -27,6 +27,7 @@ import net.minecraft.nbt.CompoundTag;
import net.minecraft.nbt.Tag; import net.minecraft.nbt.Tag;
import net.minecraft.network.FriendlyByteBuf; import net.minecraft.network.FriendlyByteBuf;
import net.minecraft.network.protocol.Packet; import net.minecraft.network.protocol.Packet;
import net.minecraft.network.protocol.game.ClientGamePacketListener;
import net.minecraft.server.level.ServerLevel; import net.minecraft.server.level.ServerLevel;
import net.minecraft.util.Mth; import net.minecraft.util.Mth;
import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionHand;
@ -260,7 +261,7 @@ public class SuperGlueEntity extends Entity implements IEntityAdditionalSpawnDat
} }
@Override @Override
public Packet<?> getAddEntityPacket() { public Packet<ClientGamePacketListener> getAddEntityPacket() {
return NetworkHooks.getEntitySpawningPacket(this); return NetworkHooks.getEntitySpawningPacket(this);
} }

View file

@ -12,7 +12,7 @@ import com.jozufozu.flywheel.light.LightVolume;
import com.jozufozu.flywheel.light.TickingLightListener; import com.jozufozu.flywheel.light.TickingLightListener;
import com.jozufozu.flywheel.util.box.GridAlignedBB; import com.jozufozu.flywheel.util.box.GridAlignedBB;
import com.jozufozu.flywheel.util.box.ImmutableBox; import com.jozufozu.flywheel.util.box.ImmutableBox;
import com.mojang.math.Vector3f; import com.mojang.math.Axis;
import com.simibubi.create.content.contraptions.base.KineticTileEntity; import com.simibubi.create.content.contraptions.base.KineticTileEntity;
import com.simibubi.create.content.contraptions.relays.encased.ShaftInstance; import com.simibubi.create.content.contraptions.relays.encased.ShaftInstance;
@ -29,7 +29,7 @@ public abstract class AbstractPulleyInstance extends ShaftInstance implements Dy
protected float offset; protected float offset;
protected final Direction rotatingAbout; protected final Direction rotatingAbout;
protected final Vector3f rotationAxis; protected final Axis rotationAxis;
private final GridAlignedBB volume = new GridAlignedBB(); private final GridAlignedBB volume = new GridAlignedBB();
private final LightVolume light; private final LightVolume light;
@ -38,7 +38,7 @@ public abstract class AbstractPulleyInstance extends ShaftInstance implements Dy
super(dispatcher, tile); super(dispatcher, tile);
rotatingAbout = Direction.get(Direction.AxisDirection.POSITIVE, axis); rotatingAbout = Direction.get(Direction.AxisDirection.POSITIVE, axis);
rotationAxis = rotatingAbout.step(); rotationAxis = Axis.of(rotatingAbout.step());
coil = getCoilModel().createInstance() coil = getCoilModel().createInstance()
.setPosition(getInstancePosition()); .setPosition(getInstancePosition());

View file

@ -1,7 +1,8 @@
package com.simibubi.create.content.contraptions.components.structureMovement.render; package com.simibubi.create.content.contraptions.components.structureMovement.render;
import org.joml.Matrix4f;
import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.blaze3d.vertex.PoseStack;
import com.mojang.math.Matrix4f;
import com.simibubi.create.content.contraptions.components.structureMovement.AbstractContraptionEntity; import com.simibubi.create.content.contraptions.components.structureMovement.AbstractContraptionEntity;
import com.simibubi.create.foundation.utility.AnimationTickHolder; import com.simibubi.create.foundation.utility.AnimationTickHolder;
@ -23,11 +24,6 @@ public class ContraptionMatrices {
private boolean ready; private boolean ready;
public ContraptionMatrices() {
world.setIdentity();
light.setIdentity();
}
public void setup(PoseStack viewProjection, AbstractContraptionEntity entity) { public void setup(PoseStack viewProjection, AbstractContraptionEntity entity) {
float partialTicks = AnimationTickHolder.getPartialTicks(); float partialTicks = AnimationTickHolder.getPartialTicks();
@ -42,8 +38,8 @@ public class ContraptionMatrices {
translateToEntity(world, entity, partialTicks); translateToEntity(world, entity, partialTicks);
light.load(world); light.set(world);
light.multiply(model.last() light.mul(model.last()
.pose()); .pose());
ready = true; ready = true;
@ -53,8 +49,8 @@ public class ContraptionMatrices {
clearStack(modelViewProjection); clearStack(modelViewProjection);
clearStack(viewProjection); clearStack(viewProjection);
clearStack(model); clearStack(model);
world.setIdentity(); world.identity();
light.setIdentity(); light.identity();
ready = false; ready = false;
} }
@ -85,7 +81,7 @@ public class ContraptionMatrices {
public static void transform(PoseStack ms, PoseStack transform) { public static void transform(PoseStack ms, PoseStack transform) {
ms.last() ms.last()
.pose() .pose()
.multiply(transform.last() .mul(transform.last()
.pose()); .pose());
ms.last() ms.last()
.normal() .normal()

View file

@ -1,9 +1,9 @@
package com.simibubi.create.content.contraptions.components.structureMovement.render; package com.simibubi.create.content.contraptions.components.structureMovement.render;
import org.joml.Matrix4f;
import org.lwjgl.opengl.GL20; import org.lwjgl.opengl.GL20;
import com.jozufozu.flywheel.core.shader.WorldProgram; import com.jozufozu.flywheel.core.shader.WorldProgram;
import com.mojang.math.Matrix4f;
import net.minecraft.resources.ResourceLocation; import net.minecraft.resources.ResourceLocation;
import net.minecraft.world.phys.AABB; import net.minecraft.world.phys.AABB;

View file

@ -5,6 +5,8 @@ import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import org.joml.Matrix4f;
import com.jozufozu.flywheel.backend.Backend; import com.jozufozu.flywheel.backend.Backend;
import com.jozufozu.flywheel.backend.gl.GlStateTracker; import com.jozufozu.flywheel.backend.gl.GlStateTracker;
import com.jozufozu.flywheel.backend.instancing.Engine; import com.jozufozu.flywheel.backend.instancing.Engine;
@ -19,7 +21,6 @@ import com.jozufozu.flywheel.core.virtual.VirtualRenderWorld;
import com.jozufozu.flywheel.event.BeginFrameEvent; import com.jozufozu.flywheel.event.BeginFrameEvent;
import com.jozufozu.flywheel.event.RenderLayerEvent; import com.jozufozu.flywheel.event.RenderLayerEvent;
import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.blaze3d.vertex.PoseStack;
import com.mojang.math.Matrix4f;
import com.simibubi.create.content.contraptions.components.structureMovement.AbstractContraptionEntity; import com.simibubi.create.content.contraptions.components.structureMovement.AbstractContraptionEntity;
import com.simibubi.create.content.contraptions.components.structureMovement.Contraption; import com.simibubi.create.content.contraptions.components.structureMovement.Contraption;
import com.simibubi.create.foundation.render.CreateContexts; import com.simibubi.create.foundation.render.CreateContexts;
@ -90,7 +91,7 @@ public class FlwContraption extends ContraptionRenderInfo {
public void beginFrame(BeginFrameEvent event) { public void beginFrame(BeginFrameEvent event) {
super.beginFrame(event); super.beginFrame(event);
modelViewPartial.setIdentity(); modelViewPartial.identity();
modelViewPartialReady = false; modelViewPartialReady = false;
if (!isVisible()) return; if (!isVisible()) return;
@ -172,7 +173,7 @@ public class FlwContraption extends ContraptionRenderInfo {
float y = (float) (Mth.lerp(pt, entity.yOld, entity.getY()) - camY); float y = (float) (Mth.lerp(pt, entity.yOld, entity.getY()) - camY);
float z = (float) (Mth.lerp(pt, entity.zOld, entity.getZ()) - camZ); float z = (float) (Mth.lerp(pt, entity.zOld, entity.getZ()) - camZ);
matrix.setTranslation(x, y, z); matrix.setTranslation(x, y, z);
matrix.multiply(modelMatrix); matrix.mul(modelMatrix);
} }
public void tick() { public void tick() {

View file

@ -1,6 +1,7 @@
package com.simibubi.create.content.contraptions.components.structureMovement.train; package com.simibubi.create.content.contraptions.components.structureMovement.train;
import com.mojang.math.Vector3f; import org.joml.Vector3f;
import com.simibubi.create.AllItems; import com.simibubi.create.AllItems;
import com.simibubi.create.foundation.networking.AllPackets; import com.simibubi.create.foundation.networking.AllPackets;
import com.simibubi.create.foundation.utility.VecHelper; import com.simibubi.create.foundation.utility.VecHelper;

View file

@ -5,7 +5,7 @@ import static net.minecraft.util.Mth.lerp;
import com.jozufozu.flywheel.util.transform.TransformStack; import com.jozufozu.flywheel.util.transform.TransformStack;
import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.blaze3d.vertex.PoseStack;
import com.mojang.blaze3d.vertex.VertexConsumer; import com.mojang.blaze3d.vertex.VertexConsumer;
import com.mojang.math.Vector3f; import com.mojang.math.Axis;
import com.simibubi.create.AllBlockPartials; import com.simibubi.create.AllBlockPartials;
import com.simibubi.create.CreateClient; import com.simibubi.create.CreateClient;
import com.simibubi.create.content.contraptions.KineticDebugger; import com.simibubi.create.content.contraptions.KineticDebugger;
@ -23,7 +23,7 @@ import net.minecraft.client.renderer.LevelRenderer;
import net.minecraft.client.renderer.MultiBufferSource; import net.minecraft.client.renderer.MultiBufferSource;
import net.minecraft.client.renderer.RenderType; import net.minecraft.client.renderer.RenderType;
import net.minecraft.core.BlockPos; import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction.Axis; import net.minecraft.core.Direction;
import net.minecraft.util.Mth; import net.minecraft.util.Mth;
import net.minecraft.world.entity.vehicle.AbstractMinecart; import net.minecraft.world.entity.vehicle.AbstractMinecart;
import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.block.Blocks;
@ -133,8 +133,8 @@ public class CouplingRenderer {
roll = roll > 0 ? Mth.sin(roll) * roll * rollAmplifier / 10.0F * cart.getHurtDir() : 0; roll = roll > 0 ? Mth.sin(roll) * roll * rollAmplifier / 10.0F * cart.getHurtDir() : 0;
Vec3 positionVec = new Vec3(xIn, yIn, zIn); Vec3 positionVec = new Vec3(xIn, yIn, zIn);
Vec3 frontVec = positionVec.add(VecHelper.rotate(new Vec3(.5, 0, 0), 180 - yaw, Axis.Y)); Vec3 frontVec = positionVec.add(VecHelper.rotate(new Vec3(.5, 0, 0), 180 - yaw, Direction.Axis.Y));
Vec3 backVec = positionVec.add(VecHelper.rotate(new Vec3(-.5, 0, 0), 180 - yaw, Axis.Y)); Vec3 backVec = positionVec.add(VecHelper.rotate(new Vec3(-.5, 0, 0), 180 - yaw, Direction.Axis.Y));
Vec3 railVecOfPos = cart.getPos(xIn, yIn, zIn); Vec3 railVecOfPos = cart.getPos(xIn, yIn, zIn);
boolean flip = false; boolean flip = false;
@ -196,20 +196,20 @@ public class CouplingRenderer {
public Vec3 apply(Vec3 vec) { public Vec3 apply(Vec3 vec) {
vec = vec.add(offset, 0, 0); vec = vec.add(offset, 0, 0);
vec = VecHelper.rotate(vec, roll, Axis.X); vec = VecHelper.rotate(vec, roll, Direction.Axis.X);
vec = VecHelper.rotate(vec, pitch, Axis.Z); vec = VecHelper.rotate(vec, pitch, Direction.Axis.Z);
vec = VecHelper.rotate(vec, yaw, Axis.Y); vec = VecHelper.rotate(vec, yaw, Direction.Axis.Y);
return vec.add(x, y, z); return vec.add(x, y, z);
} }
public void apply(PoseStack ms) { public void apply(PoseStack ms) {
ms.translate(x, y, z); ms.translate(x, y, z);
ms.mulPose(Vector3f.YP.rotationDegrees(yaw)); ms.mulPose(Axis.YP.rotationDegrees(yaw));
ms.mulPose(Vector3f.ZP.rotationDegrees(pitch)); ms.mulPose(Axis.ZP.rotationDegrees(pitch));
ms.mulPose(Vector3f.XP.rotationDegrees(roll)); ms.mulPose(Axis.XP.rotationDegrees(roll));
ms.translate(offset, 0, 0); ms.translate(offset, 0, 0);
if (flip) if (flip)
ms.mulPose(Vector3f.YP.rotationDegrees(180)); ms.mulPose(Axis.YP.rotationDegrees(180));
} }
} }

View file

@ -4,7 +4,7 @@ import java.util.Random;
import com.jozufozu.flywheel.util.transform.TransformStack; import com.jozufozu.flywheel.util.transform.TransformStack;
import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.blaze3d.vertex.PoseStack;
import com.mojang.math.Vector3f; import com.mojang.math.Axis;
import com.simibubi.create.content.contraptions.processing.EmptyingByBasin; import com.simibubi.create.content.contraptions.processing.EmptyingByBasin;
import com.simibubi.create.content.contraptions.relays.belt.BeltHelper; import com.simibubi.create.content.contraptions.relays.belt.BeltHelper;
import com.simibubi.create.content.contraptions.relays.belt.transport.TransportedItemStack; import com.simibubi.create.content.contraptions.relays.belt.transport.TransportedItemStack;
@ -20,7 +20,6 @@ import net.minecraft.client.renderer.block.model.ItemTransforms.TransformType;
import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider; import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider;
import net.minecraft.client.renderer.entity.ItemRenderer; import net.minecraft.client.renderer.entity.ItemRenderer;
import net.minecraft.core.Direction; import net.minecraft.core.Direction;
import net.minecraft.core.Direction.Axis;
import net.minecraft.util.Mth; import net.minecraft.util.Mth;
import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.Entity;
import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.ItemStack;
@ -67,7 +66,7 @@ public class ItemDrainRenderer extends SmartTileEntityRenderer<ItemDrainTileEnti
.scale(.5f - offset); .scale(.5f - offset);
ms.translate(offsetVec.x, offsetVec.y, offsetVec.z); ms.translate(offsetVec.x, offsetVec.y, offsetVec.z);
boolean alongX = insertedFrom.getClockWise() boolean alongX = insertedFrom.getClockWise()
.getAxis() == Axis.X; .getAxis() == Direction.Axis.X;
if (!alongX) if (!alongX)
sideOffset *= -1; sideOffset *= -1;
ms.translate(alongX ? sideOffset : 0, 0, alongX ? 0 : sideOffset); ms.translate(alongX ? sideOffset : 0, 0, alongX ? 0 : sideOffset);
@ -87,9 +86,9 @@ public class ItemDrainRenderer extends SmartTileEntityRenderer<ItemDrainTileEnti
int positive = insertedFrom.getAxisDirection() int positive = insertedFrom.getAxisDirection()
.getStep(); .getStep();
float verticalAngle = positive * offset * 360; float verticalAngle = positive * offset * 360;
if (insertedFrom.getAxis() != Axis.X) if (insertedFrom.getAxis() != Direction.Axis.X)
msr.rotateX(verticalAngle); msr.rotateX(verticalAngle);
if (insertedFrom.getAxis() != Axis.Z) if (insertedFrom.getAxis() != Direction.Axis.Z)
msr.rotateZ(-verticalAngle); msr.rotateZ(-verticalAngle);
if (renderUpright) { if (renderUpright) {
@ -99,13 +98,13 @@ public class ItemDrainRenderer extends SmartTileEntityRenderer<ItemDrainTileEnti
Vec3 vectorForOffset = itemPosition.add(offsetVec); Vec3 vectorForOffset = itemPosition.add(offsetVec);
Vec3 diff = vectorForOffset.subtract(positionVec); Vec3 diff = vectorForOffset.subtract(positionVec);
if (insertedFrom.getAxis() != Axis.X) if (insertedFrom.getAxis() != Direction.Axis.X)
diff = VecHelper.rotate(diff, verticalAngle, Axis.X); diff = VecHelper.rotate(diff, verticalAngle, Direction.Axis.X);
if (insertedFrom.getAxis() != Axis.Z) if (insertedFrom.getAxis() != Direction.Axis.Z)
diff = VecHelper.rotate(diff, -verticalAngle, Axis.Z); diff = VecHelper.rotate(diff, -verticalAngle, Direction.Axis.Z);
float yRot = (float) Mth.atan2(diff.z, -diff.x); float yRot = (float) Mth.atan2(diff.z, -diff.x);
ms.mulPose(Vector3f.YP.rotation((float) (yRot - Math.PI / 2))); ms.mulPose(Axis.YP.rotation((float) (yRot - Math.PI / 2)));
} }
ms.translate(0, 0, -1 / 16f); ms.translate(0, 0, -1 / 16f);
} }

View file

@ -1,7 +1,8 @@
package com.simibubi.create.content.contraptions.fluids.particle; package com.simibubi.create.content.contraptions.fluids.particle;
import org.joml.Quaternionf;
import com.mojang.blaze3d.vertex.VertexConsumer; import com.mojang.blaze3d.vertex.VertexConsumer;
import com.mojang.math.Quaternion;
import com.simibubi.create.AllBlocks; import com.simibubi.create.AllBlocks;
import com.simibubi.create.content.contraptions.processing.BasinTileEntity; import com.simibubi.create.content.contraptions.processing.BasinTileEntity;
import com.simibubi.create.foundation.utility.VecHelper; import com.simibubi.create.foundation.utility.VecHelper;
@ -83,8 +84,8 @@ public class BasinFluidParticle extends FluidStackParticle {
@Override @Override
public void render(VertexConsumer vb, Camera info, float pt) { public void render(VertexConsumer vb, Camera info, float pt) {
Quaternion rotation = info.rotation(); Quaternionf rotation = info.rotation();
Quaternion prevRotation = new Quaternion(rotation); Quaternionf prevRotation = new Quaternionf(rotation);
rotation.set(1, 0, 0, 1); rotation.set(1, 0, 0, 1);
rotation.normalize(); rotation.normalize();
super.render(vb, info, pt); super.render(vb, info, pt);

View file

@ -7,7 +7,8 @@ import java.util.Collections;
import java.util.List; import java.util.List;
import java.util.Optional; import java.util.Optional;
import com.mojang.math.Vector3f; import org.joml.Vector3f;
import com.simibubi.create.AllBlocks; import com.simibubi.create.AllBlocks;
import com.simibubi.create.AllRecipeTypes; import com.simibubi.create.AllRecipeTypes;
import com.simibubi.create.content.contraptions.components.deployer.ManualApplicationRecipe; import com.simibubi.create.content.contraptions.components.deployer.ManualApplicationRecipe;

View file

@ -3,13 +3,14 @@ package com.simibubi.create.content.contraptions.relays.belt;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.function.Supplier; import java.util.function.Supplier;
import org.joml.Quaternionf;
import com.jozufozu.flywheel.api.InstanceData; import com.jozufozu.flywheel.api.InstanceData;
import com.jozufozu.flywheel.api.Instancer; import com.jozufozu.flywheel.api.Instancer;
import com.jozufozu.flywheel.api.MaterialManager; import com.jozufozu.flywheel.api.MaterialManager;
import com.jozufozu.flywheel.core.PartialModel; import com.jozufozu.flywheel.core.PartialModel;
import com.jozufozu.flywheel.util.transform.TransformStack; import com.jozufozu.flywheel.util.transform.TransformStack;
import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.blaze3d.vertex.PoseStack;
import com.mojang.math.Quaternion;
import com.simibubi.create.AllBlockPartials; import com.simibubi.create.AllBlockPartials;
import com.simibubi.create.AllBlocks; import com.simibubi.create.AllBlocks;
import com.simibubi.create.content.contraptions.base.KineticTileInstance; import com.simibubi.create.content.contraptions.base.KineticTileInstance;
@ -20,6 +21,7 @@ import com.simibubi.create.foundation.render.AllMaterialSpecs;
import com.simibubi.create.foundation.utility.Iterate; import com.simibubi.create.foundation.utility.Iterate;
import net.minecraft.core.Direction; import net.minecraft.core.Direction;
import net.minecraft.util.Mth;
import net.minecraft.world.item.DyeColor; import net.minecraft.world.item.DyeColor;
import net.minecraft.world.level.LightLayer; import net.minecraft.world.level.LightLayer;
@ -161,7 +163,7 @@ public class BeltInstance extends KineticTileInstance<BeltTileEntity> {
float rotY = facing.toYRot() + ((diagonal ^ alongX) && !downward ? 180 : 0) + (sideways && alongZ ? 180 : 0) + (vertical && alongX ? 90 : 0); float rotY = facing.toYRot() + ((diagonal ^ alongX) && !downward ? 180 : 0) + (sideways && alongZ ? 180 : 0) + (vertical && alongX ? 90 : 0);
float rotZ = (sideways ? 90 : 0) + (vertical && alongX ? 90 : 0); float rotZ = (sideways ? 90 : 0) + (vertical && alongX ? 90 : 0);
Quaternion q = new Quaternion(rotX, rotY, rotZ, true); Quaternionf q = new Quaternionf().rotationXYZ(rotX * Mth.DEG_TO_RAD, rotY * Mth.DEG_TO_RAD, rotZ * Mth.DEG_TO_RAD);
key.setScrollTexture(spriteShift) key.setScrollTexture(spriteShift)
.setScrollMult(diagonal ? 3f / 8f : 0.5f) .setScrollMult(diagonal ? 3f / 8f : 0.5f)

View file

@ -8,7 +8,7 @@ import com.jozufozu.flywheel.core.PartialModel;
import com.jozufozu.flywheel.util.transform.TransformStack; import com.jozufozu.flywheel.util.transform.TransformStack;
import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.blaze3d.vertex.PoseStack;
import com.mojang.blaze3d.vertex.VertexConsumer; import com.mojang.blaze3d.vertex.VertexConsumer;
import com.mojang.math.Vector3f; import com.mojang.math.Axis;
import com.simibubi.create.AllBlockPartials; import com.simibubi.create.AllBlockPartials;
import com.simibubi.create.AllBlocks; import com.simibubi.create.AllBlocks;
import com.simibubi.create.AllSpriteShifts; import com.simibubi.create.AllSpriteShifts;
@ -31,7 +31,6 @@ import net.minecraft.client.renderer.block.model.ItemTransforms.TransformType;
import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider; import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider;
import net.minecraft.client.renderer.entity.ItemRenderer; import net.minecraft.client.renderer.entity.ItemRenderer;
import net.minecraft.core.Direction; import net.minecraft.core.Direction;
import net.minecraft.core.Direction.Axis;
import net.minecraft.core.Direction.AxisDirection; import net.minecraft.core.Direction.AxisDirection;
import net.minecraft.core.Vec3i; import net.minecraft.core.Vec3i;
import net.minecraft.util.Mth; import net.minecraft.util.Mth;
@ -70,7 +69,7 @@ public class BeltRenderer extends SafeTileEntityRenderer<BeltTileEntity> {
boolean start = part == BeltPart.START; boolean start = part == BeltPart.START;
boolean end = part == BeltPart.END; boolean end = part == BeltPart.END;
boolean sideways = beltSlope == BeltSlope.SIDEWAYS; boolean sideways = beltSlope == BeltSlope.SIDEWAYS;
boolean alongX = facing.getAxis() == Axis.X; boolean alongX = facing.getAxis() == Direction.Axis.X;
PoseStack localTransforms = new PoseStack(); PoseStack localTransforms = new PoseStack();
TransformStack msr = TransformStack.cast(localTransforms); TransformStack msr = TransformStack.cast(localTransforms);
@ -133,8 +132,8 @@ public class BeltRenderer extends SafeTileEntityRenderer<BeltTileEntity> {
PoseStack stack = new PoseStack(); PoseStack stack = new PoseStack();
TransformStack stacker = TransformStack.cast(stack); TransformStack stacker = TransformStack.cast(stack);
stacker.centre(); stacker.centre();
if (dir.getAxis() == Axis.X) stacker.rotateY(90); if (dir.getAxis() == Direction.Axis.X) stacker.rotateY(90);
if (dir.getAxis() == Axis.Y) stacker.rotateX(90); if (dir.getAxis() == Direction.Axis.Y) stacker.rotateX(90);
stacker.rotateX(90); stacker.rotateX(90);
stacker.unCentre(); stacker.unCentre();
return stack; return stack;
@ -192,7 +191,7 @@ public class BeltRenderer extends SafeTileEntityRenderer<BeltTileEntity> {
.getValue(BeltBlock.SLOPE); .getValue(BeltBlock.SLOPE);
int verticality = slope == BeltSlope.DOWNWARD ? -1 : slope == BeltSlope.UPWARD ? 1 : 0; int verticality = slope == BeltSlope.DOWNWARD ? -1 : slope == BeltSlope.UPWARD ? 1 : 0;
boolean slopeAlongX = beltFacing boolean slopeAlongX = beltFacing
.getAxis() == Axis.X; .getAxis() == Direction.Axis.X;
boolean onContraption = te.getLevel() instanceof WrappedWorld; boolean onContraption = te.getLevel() instanceof WrappedWorld;
@ -225,14 +224,14 @@ public class BeltRenderer extends SafeTileEntityRenderer<BeltTileEntity> {
slope != BeltSlope.HORIZONTAL && Mth.clamp(offset, .5f, te.beltLength - .5f) == offset; slope != BeltSlope.HORIZONTAL && Mth.clamp(offset, .5f, te.beltLength - .5f) == offset;
boolean tiltForward = (slope == BeltSlope.DOWNWARD ^ beltFacing boolean tiltForward = (slope == BeltSlope.DOWNWARD ^ beltFacing
.getAxisDirection() == AxisDirection.POSITIVE) == (beltFacing .getAxisDirection() == AxisDirection.POSITIVE) == (beltFacing
.getAxis() == Axis.Z); .getAxis() == Direction.Axis.Z);
float slopeAngle = onSlope ? tiltForward ? -45 : 45 : 0; float slopeAngle = onSlope ? tiltForward ? -45 : 45 : 0;
ms.translate(offsetVec.x, offsetVec.y, offsetVec.z); ms.translate(offsetVec.x, offsetVec.y, offsetVec.z);
boolean alongX = beltFacing boolean alongX = beltFacing
.getClockWise() .getClockWise()
.getAxis() == Axis.X; .getAxis() == Direction.Axis.X;
if (!alongX) if (!alongX)
sideOffset *= -1; sideOffset *= -1;
ms.translate(alongX ? sideOffset : 0, 0, alongX ? 0 : sideOffset); ms.translate(alongX ? sideOffset : 0, 0, alongX ? 0 : sideOffset);
@ -251,7 +250,7 @@ public class BeltRenderer extends SafeTileEntityRenderer<BeltTileEntity> {
if (slopeShadowOnly) if (slopeShadowOnly)
ms.pushPose(); ms.pushPose();
if (!renderUpright || slopeShadowOnly) if (!renderUpright || slopeShadowOnly)
ms.mulPose(new Vector3f(slopeAlongX ? 0 : 1, 0, slopeAlongX ? 1 : 0).rotationDegrees(slopeAngle)); ms.mulPose((slopeAlongX ? Axis.ZP : Axis.XP).rotationDegrees(slopeAngle));
if (onSlope) if (onSlope)
ms.translate(0, slopeOffset, 0); ms.translate(0, slopeOffset, 0);
ms.pushPose(); ms.pushPose();
@ -270,7 +269,7 @@ public class BeltRenderer extends SafeTileEntityRenderer<BeltTileEntity> {
Vec3 vectorForOffset = BeltHelper.getVectorForOffset(te, offset); Vec3 vectorForOffset = BeltHelper.getVectorForOffset(te, offset);
Vec3 diff = vectorForOffset.subtract(positionVec); Vec3 diff = vectorForOffset.subtract(positionVec);
float yRot = (float) (Mth.atan2(diff.x, diff.z) + Math.PI); float yRot = (float) (Mth.atan2(diff.x, diff.z) + Math.PI);
ms.mulPose(Vector3f.YP.rotation(yRot)); ms.mulPose(Axis.YP.rotation(yRot));
} }
ms.translate(0, 3 / 32d, 1 / 16f); ms.translate(0, 3 / 32d, 1 / 16f);
} }
@ -278,10 +277,10 @@ public class BeltRenderer extends SafeTileEntityRenderer<BeltTileEntity> {
for (int i = 0; i <= count; i++) { for (int i = 0; i <= count; i++) {
ms.pushPose(); ms.pushPose();
ms.mulPose(Vector3f.YP.rotationDegrees(transported.angle)); ms.mulPose(Axis.YP.rotationDegrees(transported.angle));
if (!blockItem && !renderUpright) { if (!blockItem && !renderUpright) {
ms.translate(0, -.09375, 0); ms.translate(0, -.09375, 0);
ms.mulPose(Vector3f.XP.rotationDegrees(90)); ms.mulPose(Axis.XP.rotationDegrees(90));
} }
if (blockItem) { if (blockItem) {
@ -294,7 +293,7 @@ public class BeltRenderer extends SafeTileEntityRenderer<BeltTileEntity> {
if (!renderUpright) { if (!renderUpright) {
if (!blockItem) if (!blockItem)
ms.mulPose(Vector3f.YP.rotationDegrees(10)); ms.mulPose(Axis.YP.rotationDegrees(10));
ms.translate(0, blockItem ? 1 / 64d : 1 / 16d, 0); ms.translate(0, blockItem ? 1 / 64d : 1 / 16d, 0);
} else } else
ms.translate(0, 0, -1 / 16f); ms.translate(0, 0, -1 / 16f);

View file

@ -4,7 +4,8 @@ import java.util.LinkedList;
import java.util.List; import java.util.List;
import java.util.Random; import java.util.Random;
import com.mojang.math.Vector3f; import org.joml.Vector3f;
import com.simibubi.create.AllItems; import com.simibubi.create.AllItems;
import com.simibubi.create.content.contraptions.relays.elementary.ShaftBlock; import com.simibubi.create.content.contraptions.relays.elementary.ShaftBlock;
import com.simibubi.create.foundation.config.AllConfigs; import com.simibubi.create.foundation.config.AllConfigs;

View file

@ -4,7 +4,7 @@ import com.jozufozu.flywheel.api.Instancer;
import com.jozufozu.flywheel.api.MaterialManager; import com.jozufozu.flywheel.api.MaterialManager;
import com.jozufozu.flywheel.util.transform.TransformStack; import com.jozufozu.flywheel.util.transform.TransformStack;
import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.blaze3d.vertex.PoseStack;
import com.mojang.math.Vector3f; import com.mojang.math.Axis;
import com.simibubi.create.AllBlockPartials; import com.simibubi.create.AllBlockPartials;
import com.simibubi.create.content.contraptions.base.KineticTileEntity; import com.simibubi.create.content.contraptions.base.KineticTileEntity;
import com.simibubi.create.content.contraptions.base.KineticTileEntityRenderer; import com.simibubi.create.content.contraptions.base.KineticTileEntityRenderer;
@ -13,7 +13,6 @@ import com.simibubi.create.content.contraptions.base.flwdata.RotatingData;
import net.minecraft.core.BlockPos; import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction; import net.minecraft.core.Direction;
import net.minecraft.core.Direction.Axis;
import net.minecraft.core.Direction.AxisDirection; import net.minecraft.core.Direction.AxisDirection;
public class BracketedKineticTileInstance extends SingleRotatingInstance { public class BracketedKineticTileInstance extends SingleRotatingInstance {
@ -34,7 +33,7 @@ public class BracketedKineticTileInstance extends SingleRotatingInstance {
// mesh properly // mesh properly
float speed = blockEntity.getSpeed(); float speed = blockEntity.getSpeed();
Axis axis = KineticTileEntityRenderer.getRotationAxisOf(blockEntity); Direction.Axis axis = KineticTileEntityRenderer.getRotationAxisOf(blockEntity);
BlockPos pos = blockEntity.getBlockPos(); BlockPos pos = blockEntity.getBlockPos();
float offset = BracketedKineticTileRenderer.getShaftAngleOffset(axis, pos); float offset = BracketedKineticTileRenderer.getShaftAngleOffset(axis, pos);
Direction facing = Direction.fromAxisAndDirection(axis, AxisDirection.POSITIVE); Direction facing = Direction.fromAxisAndDirection(axis, AxisDirection.POSITIVE);
@ -50,19 +49,19 @@ public class BracketedKineticTileInstance extends SingleRotatingInstance {
if (!ICogWheel.isLargeCog(blockEntity.getBlockState())) if (!ICogWheel.isLargeCog(blockEntity.getBlockState()))
return super.getModel(); return super.getModel();
Axis axis = KineticTileEntityRenderer.getRotationAxisOf(blockEntity); Direction.Axis axis = KineticTileEntityRenderer.getRotationAxisOf(blockEntity);
Direction facing = Direction.fromAxisAndDirection(axis, AxisDirection.POSITIVE); Direction facing = Direction.fromAxisAndDirection(axis, AxisDirection.POSITIVE);
return getRotatingMaterial().getModel(AllBlockPartials.SHAFTLESS_LARGE_COGWHEEL, blockState, facing, return getRotatingMaterial().getModel(AllBlockPartials.SHAFTLESS_LARGE_COGWHEEL, blockState, facing,
() -> this.rotateToAxis(axis)); () -> this.rotateToAxis(axis));
} }
private PoseStack rotateToAxis(Axis axis) { private PoseStack rotateToAxis(Direction.Axis axis) {
Direction facing = Direction.fromAxisAndDirection(axis, AxisDirection.POSITIVE); Direction facing = Direction.fromAxisAndDirection(axis, AxisDirection.POSITIVE);
PoseStack poseStack = new PoseStack(); PoseStack poseStack = new PoseStack();
TransformStack.cast(poseStack) TransformStack.cast(poseStack)
.centre() .centre()
.rotateToFace(facing) .rotateToFace(facing)
.multiply(Vector3f.XN.rotationDegrees(-90)) .multiply(Axis.XN.rotationDegrees(-90))
.unCentre(); .unCentre();
return poseStack; return poseStack;
} }

View file

@ -11,6 +11,7 @@ import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour;
import com.simibubi.create.foundation.tileEntity.behaviour.BehaviourType; import com.simibubi.create.foundation.tileEntity.behaviour.BehaviourType;
import com.simibubi.create.foundation.utility.NBTHelper; import com.simibubi.create.foundation.utility.NBTHelper;
import net.minecraft.core.registries.Registries;
import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.CompoundTag;
import net.minecraft.nbt.NbtUtils; import net.minecraft.nbt.NbtUtils;
import net.minecraft.world.level.Level; import net.minecraft.world.level.Level;
@ -123,7 +124,7 @@ public class BracketedTileEntityBehaviour extends TileEntityBehaviour {
@Override @Override
public void read(CompoundTag nbt, boolean clientPacket) { public void read(CompoundTag nbt, boolean clientPacket) {
if (nbt.contains("Bracket")) if (nbt.contains("Bracket"))
bracket = NbtUtils.readBlockState(nbt.getCompound("Bracket")); bracket = NbtUtils.readBlockState(getWorld().holderLookup(Registries.BLOCK), nbt.getCompound("Bracket"));
if (clientPacket && nbt.contains("Redraw")) if (clientPacket && nbt.contains("Redraw"))
getWorld().sendBlockUpdated(getPos(), tileEntity.getBlockState(), tileEntity.getBlockState(), 16); getWorld().sendBlockUpdated(getPos(), tileEntity.getBlockState(), tileEntity.getBlockState(), 16);
super.read(nbt, clientPacket); super.read(nbt, clientPacket);

View file

@ -8,7 +8,7 @@ import com.jozufozu.flywheel.api.MaterialManager;
import com.jozufozu.flywheel.core.PartialModel; import com.jozufozu.flywheel.core.PartialModel;
import com.jozufozu.flywheel.util.transform.TransformStack; import com.jozufozu.flywheel.util.transform.TransformStack;
import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.blaze3d.vertex.PoseStack;
import com.mojang.math.Vector3f; import com.mojang.math.Axis;
import com.simibubi.create.AllBlockPartials; import com.simibubi.create.AllBlockPartials;
import com.simibubi.create.content.contraptions.base.IRotate; import com.simibubi.create.content.contraptions.base.IRotate;
import com.simibubi.create.content.contraptions.base.KineticTileEntity; import com.simibubi.create.content.contraptions.base.KineticTileEntity;
@ -99,7 +99,7 @@ public class EncasedCogInstance extends KineticTileInstance<KineticTileEntity> {
TransformStack.cast(poseStack) TransformStack.cast(poseStack)
.centre() .centre()
.rotateToFace(facing) .rotateToFace(facing)
.multiply(Vector3f.XN.rotationDegrees(90)) .multiply(Axis.XN.rotationDegrees(90))
.unCentre(); .unCentre();
return poseStack; return poseStack;
}); });

View file

@ -1,6 +1,7 @@
package com.simibubi.create.content.contraptions.relays.gauge; package com.simibubi.create.content.contraptions.relays.gauge;
import com.mojang.math.Vector3f; import org.joml.Vector3f;
import com.simibubi.create.AllTileEntities; import com.simibubi.create.AllTileEntities;
import com.simibubi.create.content.contraptions.base.DirectionalAxisKineticBlock; import com.simibubi.create.content.contraptions.base.DirectionalAxisKineticBlock;
import com.simibubi.create.content.contraptions.base.IRotate; import com.simibubi.create.content.contraptions.base.IRotate;

View file

@ -1,7 +1,7 @@
package com.simibubi.create.content.contraptions.wrench; package com.simibubi.create.content.contraptions.wrench;
import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.blaze3d.vertex.PoseStack;
import com.mojang.math.Vector3f; import com.mojang.math.Axis;
import com.simibubi.create.foundation.item.render.CustomRenderedItemModelRenderer; import com.simibubi.create.foundation.item.render.CustomRenderedItemModelRenderer;
import com.simibubi.create.foundation.item.render.PartialItemModelRenderer; import com.simibubi.create.foundation.item.render.PartialItemModelRenderer;
import com.simibubi.create.foundation.tileEntity.behaviour.scrollvalue.ScrollValueHandler; import com.simibubi.create.foundation.tileEntity.behaviour.scrollvalue.ScrollValueHandler;
@ -21,7 +21,7 @@ public class WrenchItemRenderer extends CustomRenderedItemModelRenderer<WrenchMo
float xOffset = -1/16f; float xOffset = -1/16f;
ms.translate(-xOffset, 0, 0); ms.translate(-xOffset, 0, 0);
ms.mulPose(Vector3f.YP.rotationDegrees(ScrollValueHandler.getScroll(AnimationTickHolder.getPartialTicks()))); ms.mulPose(Axis.YP.rotationDegrees(ScrollValueHandler.getScroll(AnimationTickHolder.getPartialTicks())));
ms.translate(xOffset, 0, 0); ms.translate(xOffset, 0, 0);
renderer.render(model.getPartial("gear"), light); renderer.render(model.getPartial("gear"), light);

View file

@ -1,9 +1,11 @@
package com.simibubi.create.content.curiosities.bell; package com.simibubi.create.content.curiosities.bell;
import org.joml.Quaternionf;
import org.joml.Vector3f;
import com.jozufozu.flywheel.backend.ShadersModHandler; import com.jozufozu.flywheel.backend.ShadersModHandler;
import com.mojang.blaze3d.vertex.VertexConsumer; import com.mojang.blaze3d.vertex.VertexConsumer;
import com.mojang.math.Quaternion; import com.mojang.math.Axis;
import com.mojang.math.Vector3f;
import net.minecraft.client.Camera; import net.minecraft.client.Camera;
import net.minecraft.client.multiplayer.ClientLevel; import net.minecraft.client.multiplayer.ClientLevel;
@ -27,11 +29,11 @@ public class CustomRotationParticle extends SimpleAnimatedParticle {
this.setSprite(sprite.get(loopFrame, loopLength)); this.setSprite(sprite.get(loopFrame, loopLength));
} }
public Quaternion getCustomRotation(Camera camera, float partialTicks) { public Quaternionf getCustomRotation(Camera camera, float partialTicks) {
Quaternion quaternion = new Quaternion(camera.rotation()); Quaternionf quaternion = new Quaternionf(camera.rotation());
if (roll != 0.0F) { if (roll != 0.0F) {
float angle = Mth.lerp(partialTicks, oRoll, roll); float angle = Mth.lerp(partialTicks, oRoll, roll);
quaternion.mul(Vector3f.ZP.rotation(angle)); quaternion.mul(Axis.ZP.rotation(angle));
} }
return quaternion; return quaternion;
} }
@ -51,10 +53,10 @@ public class CustomRotationParticle extends SimpleAnimatedParticle {
}; };
float scale = getQuadSize(partialTicks); float scale = getQuadSize(partialTicks);
Quaternion rotation = getCustomRotation(camera, partialTicks); Quaternionf rotation = getCustomRotation(camera, partialTicks);
for(int i = 0; i < 4; ++i) { for(int i = 0; i < 4; ++i) {
Vector3f vertex = vertices[i]; Vector3f vertex = vertices[i];
vertex.transform(rotation); vertex.rotate(rotation);
vertex.mul(scale); vertex.mul(scale);
vertex.add(originX, originY, originZ); vertex.add(originX, originY, originZ);
} }

View file

@ -1,7 +1,8 @@
package com.simibubi.create.content.curiosities.bell; package com.simibubi.create.content.curiosities.bell;
import com.mojang.math.Quaternion; import org.joml.Quaternionf;
import com.mojang.math.Vector3f;
import com.mojang.math.Axis;
import com.simibubi.create.AllParticleTypes; import com.simibubi.create.AllParticleTypes;
import net.minecraft.client.Camera; import net.minecraft.client.Camera;
@ -36,8 +37,8 @@ public class SoulBaseParticle extends CustomRotationParticle {
} }
@Override @Override
public Quaternion getCustomRotation(Camera camera, float partialTicks) { public Quaternionf getCustomRotation(Camera camera, float partialTicks) {
return Vector3f.XP.rotationDegrees(90); return Axis.XP.rotationDegrees(90);
} }
public static class Data extends BasicParticleData<SoulBaseParticle> { public static class Data extends BasicParticleData<SoulBaseParticle> {

View file

@ -1,8 +1,9 @@
package com.simibubi.create.content.curiosities.bell; package com.simibubi.create.content.curiosities.bell;
import org.joml.Quaternionf;
import com.mojang.blaze3d.vertex.VertexConsumer; import com.mojang.blaze3d.vertex.VertexConsumer;
import com.mojang.math.Quaternion; import com.mojang.math.Axis;
import com.mojang.math.Vector3f;
import com.simibubi.create.AllParticleTypes; import com.simibubi.create.AllParticleTypes;
import net.minecraft.client.Camera; import net.minecraft.client.Camera;
@ -11,6 +12,7 @@ import net.minecraft.client.particle.SpriteSet;
import net.minecraft.core.BlockPos; import net.minecraft.core.BlockPos;
import net.minecraft.core.particles.ParticleOptions; import net.minecraft.core.particles.ParticleOptions;
import net.minecraft.core.particles.ParticleType; import net.minecraft.core.particles.ParticleType;
import net.minecraft.util.Mth;
public class SoulParticle extends CustomRotationParticle { public class SoulParticle extends CustomRotationParticle {
@ -94,10 +96,10 @@ public class SoulParticle extends CustomRotationParticle {
} }
@Override @Override
public Quaternion getCustomRotation(Camera camera, float partialTicks) { public Quaternionf getCustomRotation(Camera camera, float partialTicks) {
if (isPerimeter) if (isPerimeter)
return Vector3f.XP.rotationDegrees(90); return Axis.XP.rotationDegrees(90);
return new Quaternion(0, -camera.getYRot(), 0, true); return new Quaternionf().rotationXYZ(0, -camera.getYRot() * Mth.DEG_TO_RAD, 0);
} }
public static class Data extends BasicParticleData<SoulParticle> { public static class Data extends BasicParticleData<SoulParticle> {

View file

@ -2,7 +2,8 @@ package com.simibubi.create.content.curiosities.deco;
import java.util.List; import java.util.List;
import com.mojang.math.Vector3f; import org.joml.Vector3f;
import com.simibubi.create.AllBlocks; import com.simibubi.create.AllBlocks;
import com.simibubi.create.foundation.tileEntity.SmartTileEntity; import com.simibubi.create.foundation.tileEntity.SmartTileEntity;
import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour;

View file

@ -2,9 +2,10 @@ package com.simibubi.create.content.curiosities.symmetry;
import java.util.Random; import java.util.Random;
import org.joml.Vector3f;
import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.blaze3d.vertex.PoseStack;
import com.mojang.blaze3d.vertex.VertexConsumer; import com.mojang.blaze3d.vertex.VertexConsumer;
import com.mojang.math.Vector3f;
import com.simibubi.create.AllItems; import com.simibubi.create.AllItems;
import com.simibubi.create.content.curiosities.symmetry.mirror.EmptyMirror; import com.simibubi.create.content.curiosities.symmetry.mirror.EmptyMirror;
import com.simibubi.create.content.curiosities.symmetry.mirror.SymmetryMirror; import com.simibubi.create.content.curiosities.symmetry.mirror.SymmetryMirror;

View file

@ -1,7 +1,9 @@
package com.simibubi.create.content.curiosities.symmetry; package com.simibubi.create.content.curiosities.symmetry;
import org.joml.Vector3f;
import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.blaze3d.vertex.PoseStack;
import com.mojang.math.Vector3f; import com.mojang.math.Axis;
import com.simibubi.create.content.curiosities.symmetry.mirror.CrossPlaneMirror; import com.simibubi.create.content.curiosities.symmetry.mirror.CrossPlaneMirror;
import com.simibubi.create.content.curiosities.symmetry.mirror.EmptyMirror; import com.simibubi.create.content.curiosities.symmetry.mirror.EmptyMirror;
import com.simibubi.create.content.curiosities.symmetry.mirror.PlaneMirror; import com.simibubi.create.content.curiosities.symmetry.mirror.PlaneMirror;
@ -136,7 +138,7 @@ public class SymmetryWandScreen extends AbstractSimiScreen {
ms.pushPose(); ms.pushPose();
ms.translate(x + 26, y + 39, 20); ms.translate(x + 26, y + 39, 20);
ms.scale(16, 16, 16); ms.scale(16, 16, 16);
ms.mulPose(new Vector3f(.3f, 1f, 0f).rotationDegrees(-22.5f)); ms.mulPose(Axis.of(new Vector3f(.3f, 1f, 0f)).rotationDegrees(-22.5f));
currentElement.applyModelTransform(ms); currentElement.applyModelTransform(ms);
// RenderSystem.multMatrix(ms.peek().getModel()); // RenderSystem.multMatrix(ms.peek().getModel());
GuiGameElement.of(currentElement.getModel()) GuiGameElement.of(currentElement.getModel())

View file

@ -1,7 +1,7 @@
package com.simibubi.create.content.curiosities.symmetry.client; package com.simibubi.create.content.curiosities.symmetry.client;
import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.blaze3d.vertex.PoseStack;
import com.mojang.math.Vector3f; import com.mojang.math.Axis;
import com.simibubi.create.foundation.item.render.CustomRenderedItemModelRenderer; import com.simibubi.create.foundation.item.render.CustomRenderedItemModelRenderer;
import com.simibubi.create.foundation.item.render.PartialItemModelRenderer; import com.simibubi.create.foundation.item.render.PartialItemModelRenderer;
import com.simibubi.create.foundation.utility.AnimationTickHolder; import com.simibubi.create.foundation.utility.AnimationTickHolder;
@ -29,7 +29,7 @@ public class SymmetryWandItemRenderer extends CustomRenderedItemModelRenderer<Sy
float angle = worldTime * -10 % 360; float angle = worldTime * -10 % 360;
ms.translate(0, floating, 0); ms.translate(0, floating, 0);
ms.mulPose(Vector3f.YP.rotationDegrees(angle)); ms.mulPose(Axis.YP.rotationDegrees(angle));
renderer.renderGlowing(model.getPartial("bits"), maxLight); renderer.renderGlowing(model.getPartial("bits"), maxLight);
} }

View file

@ -7,6 +7,7 @@ import net.minecraft.resources.ResourceLocation;
import net.minecraft.world.inventory.CraftingContainer; import net.minecraft.world.inventory.CraftingContainer;
import net.minecraft.world.item.DyeColor; import net.minecraft.world.item.DyeColor;
import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.crafting.CraftingBookCategory;
import net.minecraft.world.item.crafting.CustomRecipe; import net.minecraft.world.item.crafting.CustomRecipe;
import net.minecraft.world.item.crafting.RecipeSerializer; import net.minecraft.world.item.crafting.RecipeSerializer;
import net.minecraft.world.level.Level; import net.minecraft.world.level.Level;
@ -15,8 +16,8 @@ import net.minecraftforge.common.Tags;
public class ToolboxDyeingRecipe extends CustomRecipe { public class ToolboxDyeingRecipe extends CustomRecipe {
public ToolboxDyeingRecipe(ResourceLocation rl) { public ToolboxDyeingRecipe(ResourceLocation rl, CraftingBookCategory category) {
super(rl); super(rl, category);
} }
@Override @Override

View file

@ -30,6 +30,7 @@ import net.minecraft.nbt.Tag;
import net.minecraft.network.FriendlyByteBuf; import net.minecraft.network.FriendlyByteBuf;
import net.minecraft.network.chat.Component; import net.minecraft.network.chat.Component;
import net.minecraft.network.protocol.Packet; import net.minecraft.network.protocol.Packet;
import net.minecraft.network.protocol.game.ClientGamePacketListener;
import net.minecraft.server.level.ServerPlayer; import net.minecraft.server.level.ServerPlayer;
import net.minecraft.sounds.SoundEvents; import net.minecraft.sounds.SoundEvents;
import net.minecraft.sounds.SoundSource; import net.minecraft.sounds.SoundSource;
@ -99,7 +100,7 @@ public class BlueprintEntity extends HangingEntity
} }
@Override @Override
public Packet<?> getAddEntityPacket() { public Packet<ClientGamePacketListener> getAddEntityPacket() {
return NetworkHooks.getEntitySpawningPacket(this); return NetworkHooks.getEntitySpawningPacket(this);
} }

View file

@ -1,9 +1,10 @@
package com.simibubi.create.content.curiosities.tools; package com.simibubi.create.content.curiosities.tools;
import org.joml.Matrix3f;
import com.jozufozu.flywheel.core.PartialModel; import com.jozufozu.flywheel.core.PartialModel;
import com.jozufozu.flywheel.util.transform.TransformStack; import com.jozufozu.flywheel.util.transform.TransformStack;
import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.blaze3d.vertex.PoseStack;
import com.mojang.math.Matrix3f;
import com.simibubi.create.AllBlockPartials; import com.simibubi.create.AllBlockPartials;
import com.simibubi.create.content.curiosities.tools.BlueprintEntity.BlueprintSection; import com.simibubi.create.content.curiosities.tools.BlueprintEntity.BlueprintSection;
import com.simibubi.create.foundation.render.CachedBufferer; import com.simibubi.create.foundation.render.CachedBufferer;
@ -62,9 +63,8 @@ public class BlueprintRenderer extends EntityRenderer<BlueprintEntity> {
TransformStack.cast(ms) TransformStack.cast(ms)
.rotateY(vertical ? 0 : -yaw) .rotateY(vertical ? 0 : -yaw)
.rotateX(fakeNormalXRotation); .rotateX(fakeNormalXRotation);
Matrix3f copy = ms.last() Matrix3f copy = new Matrix3f(ms.last()
.normal() .normal());
.copy();
ms.popPose(); ms.popPose();
ms.pushPose(); ms.pushPose();
@ -80,7 +80,7 @@ public class BlueprintRenderer extends EntityRenderer<BlueprintEntity> {
PoseStack squashedMS = new PoseStack(); PoseStack squashedMS = new PoseStack();
squashedMS.last() squashedMS.last()
.pose() .pose()
.multiply(ms.last() .mul(ms.last()
.pose()); .pose());
for (int x = 0; x < entity.size; x++) { for (int x = 0; x < entity.size; x++) {
@ -102,7 +102,7 @@ public class BlueprintRenderer extends EntityRenderer<BlueprintEntity> {
squashedMS.last() squashedMS.last()
.normal() .normal()
.load(copy); .set(copy);
Minecraft.getInstance() Minecraft.getInstance()
.getItemRenderer() .getItemRenderer()

View file

@ -1,7 +1,9 @@
package com.simibubi.create.content.curiosities.tools; package com.simibubi.create.content.curiosities.tools;
import org.joml.Vector3f;
import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.blaze3d.vertex.PoseStack;
import com.mojang.math.Vector3f; import com.mojang.math.Axis;
import com.simibubi.create.foundation.item.render.CreateCustomRenderedItemModel; import com.simibubi.create.foundation.item.render.CreateCustomRenderedItemModel;
import com.simibubi.create.foundation.item.render.CustomRenderedItemModelRenderer; import com.simibubi.create.foundation.item.render.CustomRenderedItemModelRenderer;
import com.simibubi.create.foundation.item.render.PartialItemModelRenderer; import com.simibubi.create.foundation.item.render.PartialItemModelRenderer;
@ -42,7 +44,7 @@ public class SandPaperItemRenderer extends CustomRenderedItemModelRenderer<SandP
ms.scale(.75f, .75f, .75f); ms.scale(.75f, .75f, .75f);
} else { } else {
int modifier = leftHand ? -1 : 1; int modifier = leftHand ? -1 : 1;
ms.mulPose(Vector3f.YP.rotationDegrees(modifier * 40)); ms.mulPose(Axis.YP.rotationDegrees(modifier * 40));
} }
// Reverse bobbing // Reverse bobbing
@ -68,9 +70,9 @@ public class SandPaperItemRenderer extends CustomRenderedItemModelRenderer<SandP
if (itemInUseCount > 0) { if (itemInUseCount > 0) {
int modifier = leftHand ? -1 : 1; int modifier = leftHand ? -1 : 1;
ms.translate(modifier * .5f, 0, -.25f); ms.translate(modifier * .5f, 0, -.25f);
ms.mulPose(Vector3f.ZP.rotationDegrees(modifier * 40)); ms.mulPose(Axis.ZP.rotationDegrees(modifier * 40));
ms.mulPose(Vector3f.XP.rotationDegrees(modifier * 10)); ms.mulPose(Axis.XP.rotationDegrees(modifier * 10));
ms.mulPose(Vector3f.YP.rotationDegrees(modifier * 90)); ms.mulPose(Axis.YP.rotationDegrees(modifier * 90));
} }
} }

View file

@ -2,7 +2,7 @@ package com.simibubi.create.content.curiosities.weapons;
import com.jozufozu.flywheel.util.transform.TransformStack; import com.jozufozu.flywheel.util.transform.TransformStack;
import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.blaze3d.vertex.PoseStack;
import com.mojang.math.Vector3f; import com.mojang.math.Axis;
import com.simibubi.create.CreateClient; import com.simibubi.create.CreateClient;
import com.simibubi.create.foundation.item.render.CustomRenderedItemModelRenderer; import com.simibubi.create.foundation.item.render.CustomRenderedItemModelRenderer;
import com.simibubi.create.foundation.item.render.PartialItemModelRenderer; import com.simibubi.create.foundation.item.render.PartialItemModelRenderer;
@ -44,7 +44,7 @@ public class PotatoCannonItemRenderer extends CustomRenderedItemModelRenderer<Po
ms.pushPose(); ms.pushPose();
ms.translate(0, offset, 0); ms.translate(0, offset, 0);
ms.mulPose(Vector3f.ZP.rotationDegrees(angle)); ms.mulPose(Axis.ZP.rotationDegrees(angle));
ms.translate(0, -offset, 0); ms.translate(0, -offset, 0);
renderer.render(model.getPartial("cog"), light); renderer.render(model.getPartial("cog"), light);
ms.popPose(); ms.popPose();

View file

@ -15,6 +15,7 @@ import net.minecraft.core.particles.ParticleTypes;
import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.CompoundTag;
import net.minecraft.network.FriendlyByteBuf; import net.minecraft.network.FriendlyByteBuf;
import net.minecraft.network.protocol.Packet; import net.minecraft.network.protocol.Packet;
import net.minecraft.network.protocol.game.ClientGamePacketListener;
import net.minecraft.network.protocol.game.ClientboundGameEventPacket; import net.minecraft.network.protocol.game.ClientboundGameEventPacket;
import net.minecraft.server.level.ServerPlayer; import net.minecraft.server.level.ServerPlayer;
import net.minecraft.world.damagesource.DamageSource; import net.minecraft.world.damagesource.DamageSource;
@ -333,7 +334,7 @@ public class PotatoProjectileEntity extends AbstractHurtingProjectile implements
} }
@Override @Override
public Packet<?> getAddEntityPacket() { public Packet<ClientGamePacketListener> getAddEntityPacket() {
return NetworkHooks.getEntitySpawningPacket(this); return NetworkHooks.getEntitySpawningPacket(this);
} }

View file

@ -2,7 +2,7 @@ package com.simibubi.create.content.curiosities.zapper;
import com.mojang.blaze3d.systems.RenderSystem; import com.mojang.blaze3d.systems.RenderSystem;
import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.blaze3d.vertex.PoseStack;
import com.mojang.math.Vector3f; import com.mojang.math.Axis;
import net.minecraft.client.Minecraft; import net.minecraft.client.Minecraft;
import net.minecraft.client.player.AbstractClientPlayer; import net.minecraft.client.player.AbstractClientPlayer;
@ -108,15 +108,15 @@ public abstract class ShootableGadgetRenderHandler {
float f6 = Mth.sin(f1 * (float) Math.PI); float f6 = Mth.sin(f1 * (float) Math.PI);
ms.translate(flip * (f2 + 0.64F - .1f), f3 + -0.4F + equipProgress * -0.6F, f4 + -0.72F + .3f + recoil); ms.translate(flip * (f2 + 0.64F - .1f), f3 + -0.4F + equipProgress * -0.6F, f4 + -0.72F + .3f + recoil);
ms.mulPose(Vector3f.YP.rotationDegrees(flip * 75.0F)); ms.mulPose(Axis.YP.rotationDegrees(flip * 75.0F));
ms.mulPose(Vector3f.YP.rotationDegrees(flip * f6 * 70.0F)); ms.mulPose(Axis.YP.rotationDegrees(flip * f6 * 70.0F));
ms.mulPose(Vector3f.ZP.rotationDegrees(flip * f5 * -20.0F)); ms.mulPose(Axis.ZP.rotationDegrees(flip * f5 * -20.0F));
ms.translate(flip * -1.0F, 3.6F, 3.5F); ms.translate(flip * -1.0F, 3.6F, 3.5F);
ms.mulPose(Vector3f.ZP.rotationDegrees(flip * 120.0F)); ms.mulPose(Axis.ZP.rotationDegrees(flip * 120.0F));
ms.mulPose(Vector3f.XP.rotationDegrees(200.0F)); ms.mulPose(Axis.XP.rotationDegrees(200.0F));
ms.mulPose(Vector3f.YP.rotationDegrees(flip * -135.0F)); ms.mulPose(Axis.YP.rotationDegrees(flip * -135.0F));
ms.translate(flip * 5.6F, 0.0F, 0.0F); ms.translate(flip * 5.6F, 0.0F, 0.0F);
ms.mulPose(Vector3f.YP.rotationDegrees(flip * 40.0F)); ms.mulPose(Axis.YP.rotationDegrees(flip * 40.0F));
transformHand(ms, flip, equipProgress, recoil, pt); transformHand(ms, flip, equipProgress, recoil, pt);
if (rightHand) if (rightHand)
playerrenderer.renderRightHand(ms, buffer, light, player); playerrenderer.renderRightHand(ms, buffer, light, player);
@ -127,8 +127,8 @@ public abstract class ShootableGadgetRenderHandler {
// Render gadget // Render gadget
ms.pushPose(); ms.pushPose();
ms.translate(flip * (f2 + 0.64F - .1f), f3 + -0.4F + equipProgress * -0.6F, f4 + -0.72F - 0.1f + recoil); ms.translate(flip * (f2 + 0.64F - .1f), f3 + -0.4F + equipProgress * -0.6F, f4 + -0.72F - 0.1f + recoil);
ms.mulPose(Vector3f.YP.rotationDegrees(flip * f6 * 70.0F)); ms.mulPose(Axis.YP.rotationDegrees(flip * f6 * 70.0F));
ms.mulPose(Vector3f.ZP.rotationDegrees(flip * f5 * -20.0F)); ms.mulPose(Axis.ZP.rotationDegrees(flip * f5 * -20.0F));
transformTool(ms, flip, equipProgress, recoil, pt); transformTool(ms, flip, equipProgress, recoil, pt);
firstPersonRenderer.renderItem(mc.player, heldItem, firstPersonRenderer.renderItem(mc.player, heldItem,
rightHand ? ItemTransforms.TransformType.FIRST_PERSON_RIGHT_HAND rightHand ? ItemTransforms.TransformType.FIRST_PERSON_RIGHT_HAND

View file

@ -20,6 +20,7 @@ import net.minecraft.ChatFormatting;
import net.minecraft.client.model.HumanoidModel.ArmPose; import net.minecraft.client.model.HumanoidModel.ArmPose;
import net.minecraft.client.player.AbstractClientPlayer; import net.minecraft.client.player.AbstractClientPlayer;
import net.minecraft.core.BlockPos; import net.minecraft.core.BlockPos;
import net.minecraft.core.registries.Registries;
import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.CompoundTag;
import net.minecraft.nbt.NbtUtils; import net.minecraft.nbt.NbtUtils;
import net.minecraft.nbt.Tag; import net.minecraft.nbt.Tag;
@ -59,7 +60,7 @@ public abstract class ZapperItem extends Item implements CustomArmPoseItem {
public void appendHoverText(ItemStack stack, Level worldIn, List<Component> tooltip, TooltipFlag flagIn) { public void appendHoverText(ItemStack stack, Level worldIn, List<Component> tooltip, TooltipFlag flagIn) {
if (stack.hasTag() && stack.getTag() if (stack.hasTag() && stack.getTag()
.contains("BlockUsed")) { .contains("BlockUsed")) {
MutableComponent usedBlock = NbtUtils.readBlockState(stack.getTag() MutableComponent usedBlock = NbtUtils.readBlockState(worldIn.holderLookup(Registries.BLOCK), stack.getTag()
.getCompound("BlockUsed")) .getCompound("BlockUsed"))
.getBlock() .getBlock()
.getName(); .getName();
@ -140,7 +141,7 @@ public abstract class ZapperItem extends Item implements CustomArmPoseItem {
BlockState stateToUse = Blocks.AIR.defaultBlockState(); BlockState stateToUse = Blocks.AIR.defaultBlockState();
if (nbt.contains("BlockUsed")) if (nbt.contains("BlockUsed"))
stateToUse = NbtUtils.readBlockState(nbt.getCompound("BlockUsed")); stateToUse = NbtUtils.readBlockState(world.holderLookup(Registries.BLOCK), nbt.getCompound("BlockUsed"));
stateToUse = BlockHelper.setZeroAge(stateToUse); stateToUse = BlockHelper.setZeroAge(stateToUse);
CompoundTag data = null; CompoundTag data = null;
if (AllBlockTags.SAFE_NBT.matches(stateToUse) && nbt.contains("BlockData", Tag.TAG_COMPOUND)) { if (AllBlockTags.SAFE_NBT.matches(stateToUse) && nbt.contains("BlockData", Tag.TAG_COMPOUND)) {

View file

@ -6,7 +6,7 @@ import java.util.Random;
import java.util.function.Supplier; import java.util.function.Supplier;
import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.blaze3d.vertex.PoseStack;
import com.mojang.math.Vector3f; import com.mojang.math.Axis;
import com.simibubi.create.AllSoundEvents; import com.simibubi.create.AllSoundEvents;
import com.simibubi.create.CreateClient; import com.simibubi.create.CreateClient;
@ -50,7 +50,7 @@ public class ZapperRenderHandler extends ShootableGadgetRenderHandler {
@Override @Override
protected void transformTool(PoseStack ms, float flip, float equipProgress, float recoil, float pt) { protected void transformTool(PoseStack ms, float flip, float equipProgress, float recoil, float pt) {
ms.translate(flip * -0.1f, 0.1f, -0.4f); ms.translate(flip * -0.1f, 0.1f, -0.4f);
ms.mulPose(Vector3f.YP.rotationDegrees(flip * 5.0F)); ms.mulPose(Axis.YP.rotationDegrees(flip * 5.0F));
} }
@Override @Override

View file

@ -3,7 +3,7 @@ package com.simibubi.create.content.curiosities.zapper;
import java.util.Vector; import java.util.Vector;
import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.blaze3d.vertex.PoseStack;
import com.mojang.math.Vector3f; import com.mojang.math.Axis;
import com.simibubi.create.foundation.gui.AbstractSimiScreen; import com.simibubi.create.foundation.gui.AbstractSimiScreen;
import com.simibubi.create.foundation.gui.AllGuiTextures; import com.simibubi.create.foundation.gui.AllGuiTextures;
import com.simibubi.create.foundation.gui.AllIcons; import com.simibubi.create.foundation.gui.AllIcons;
@ -130,8 +130,8 @@ public abstract class ZapperScreen extends AbstractSimiScreen {
protected void renderBlock(PoseStack ms, int x, int y) { protected void renderBlock(PoseStack ms, int x, int y) {
ms.pushPose(); ms.pushPose();
ms.translate(x + 32, y + 42, 120); ms.translate(x + 32, y + 42, 120);
ms.mulPose(new Vector3f(1f, 0, 0).rotationDegrees(-25f)); ms.mulPose(Axis.XP.rotationDegrees(-25f));
ms.mulPose(new Vector3f(0, 1f, 0).rotationDegrees(-45f)); ms.mulPose(Axis.YP.rotationDegrees(-45f));
ms.scale(20, 20, 20); ms.scale(20, 20, 20);
BlockState state = Blocks.AIR.defaultBlockState(); BlockState state = Blocks.AIR.defaultBlockState();

View file

@ -3,7 +3,7 @@ package com.simibubi.create.content.curiosities.zapper.terrainzapper;
import static java.lang.Math.max; import static java.lang.Math.max;
import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.blaze3d.vertex.PoseStack;
import com.mojang.math.Vector3f; import com.mojang.math.Axis;
import com.simibubi.create.content.curiosities.zapper.ZapperItemRenderer; import com.simibubi.create.content.curiosities.zapper.ZapperItemRenderer;
import com.simibubi.create.foundation.item.render.PartialItemModelRenderer; import com.simibubi.create.foundation.item.render.PartialItemModelRenderer;
import com.simibubi.create.foundation.utility.AnimationTickHolder; import com.simibubi.create.foundation.utility.AnimationTickHolder;
@ -56,7 +56,7 @@ public class WorldshaperItemRenderer extends ZapperItemRenderer<WorldshaperModel
angle %= 360; angle %= 360;
float offset = -.155f; float offset = -.155f;
ms.translate(0, offset, 0); ms.translate(0, offset, 0);
ms.mulPose(Vector3f.ZP.rotationDegrees(angle)); ms.mulPose(Axis.ZP.rotationDegrees(angle));
ms.translate(0, -offset, 0); ms.translate(0, -offset, 0);
renderer.render(model.getPartial("accelerator"), light); renderer.render(model.getPartial("accelerator"), light);
} }

View file

@ -121,7 +121,7 @@ public class WorldshaperScreen extends ZapperScreen {
.plainCopy()) .plainCopy())
.calling(state -> { .calling(state -> {
currentBrushParams[finalIndex] = state; currentBrushParams[finalIndex] = state;
label.x = x + 65 + 20 * finalIndex - font.width(label.text) / 2; label.setX(x + 65 + 20 * finalIndex - font.width(label.text) / 2);
}); });
input.setState(currentBrushParams[index]); input.setState(currentBrushParams[index]);
input.onChanged(); input.onChanged();

View file

@ -4,7 +4,7 @@ import java.util.Random;
import com.jozufozu.flywheel.util.transform.TransformStack; import com.jozufozu.flywheel.util.transform.TransformStack;
import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.blaze3d.vertex.PoseStack;
import com.mojang.math.Vector3f; import com.mojang.math.Axis;
import com.simibubi.create.content.contraptions.relays.belt.BeltHelper; import com.simibubi.create.content.contraptions.relays.belt.BeltHelper;
import com.simibubi.create.content.contraptions.relays.belt.transport.TransportedItemStack; import com.simibubi.create.content.contraptions.relays.belt.transport.TransportedItemStack;
import com.simibubi.create.foundation.tileEntity.SmartTileEntity; import com.simibubi.create.foundation.tileEntity.SmartTileEntity;
@ -16,7 +16,7 @@ import net.minecraft.client.renderer.MultiBufferSource;
import net.minecraft.client.renderer.block.model.ItemTransforms.TransformType; import net.minecraft.client.renderer.block.model.ItemTransforms.TransformType;
import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider; import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider;
import net.minecraft.client.renderer.entity.ItemRenderer; import net.minecraft.client.renderer.entity.ItemRenderer;
import net.minecraft.core.Direction.Axis; import net.minecraft.core.Direction;
import net.minecraft.util.Mth; import net.minecraft.util.Mth;
import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.Entity;
import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.ItemStack;
@ -59,7 +59,7 @@ public class DepotRenderer extends SafeTileEntityRenderer<DepotTileEntity> {
.getNormal()).scale(.5f - offset); .getNormal()).scale(.5f - offset);
ms.translate(offsetVec.x, offsetVec.y, offsetVec.z); ms.translate(offsetVec.x, offsetVec.y, offsetVec.z);
boolean alongX = tis.insertedFrom.getClockWise() boolean alongX = tis.insertedFrom.getClockWise()
.getAxis() == Axis.X; .getAxis() == Direction.Axis.X;
if (!alongX) if (!alongX)
sideOffset *= -1; sideOffset *= -1;
ms.translate(alongX ? sideOffset : 0, 0, alongX ? 0 : sideOffset); ms.translate(alongX ? sideOffset : 0, 0, alongX ? 0 : sideOffset);
@ -117,7 +117,7 @@ public class DepotRenderer extends SafeTileEntityRenderer<DepotTileEntity> {
Vec3 vectorForOffset = itemPosition; Vec3 vectorForOffset = itemPosition;
Vec3 diff = vectorForOffset.subtract(positionVec); Vec3 diff = vectorForOffset.subtract(positionVec);
float yRot = (float) (Mth.atan2(diff.x, diff.z) + Math.PI); float yRot = (float) (Mth.atan2(diff.x, diff.z) + Math.PI);
ms.mulPose(Vector3f.YP.rotation(yRot)); ms.mulPose(Axis.YP.rotation(yRot));
} }
ms.translate(0, 3 / 32d, -1 / 16f); ms.translate(0, 3 / 32d, -1 / 16f);
} }

View file

@ -1,6 +1,7 @@
package com.simibubi.create.content.logistics.block.depot; package com.simibubi.create.content.logistics.block.depot;
import com.mojang.math.Vector3f; import org.joml.Vector3f;
import com.simibubi.create.AllBlocks; import com.simibubi.create.AllBlocks;
import com.simibubi.create.AllItems; import com.simibubi.create.AllItems;
import com.simibubi.create.CreateClient; import com.simibubi.create.CreateClient;

View file

@ -1,8 +1,9 @@
package com.simibubi.create.content.logistics.block.flap; package com.simibubi.create.content.logistics.block.flap;
import org.joml.Vector3f;
import com.jozufozu.flywheel.api.InstanceData; import com.jozufozu.flywheel.api.InstanceData;
import com.jozufozu.flywheel.core.materials.FlatLit; import com.jozufozu.flywheel.core.materials.FlatLit;
import com.mojang.math.Vector3f;
import net.minecraft.client.renderer.LightTexture; import net.minecraft.client.renderer.LightTexture;
import net.minecraft.core.BlockPos; import net.minecraft.core.BlockPos;

View file

@ -100,7 +100,7 @@ public class ArmRenderer extends KineticTileEntityRenderer {
ms.last() ms.last()
.pose() .pose()
.multiply(msLocal.last() .mul(msLocal.last()
.pose()); .pose());
itemRenderer.renderStatic(item, TransformType.FIXED, light, overlay, ms, buffer, 0); itemRenderer.renderStatic(item, TransformType.FIXED, light, overlay, ms, buffer, 0);

View file

@ -1,6 +1,7 @@
package com.simibubi.create.content.logistics.block.redstone; package com.simibubi.create.content.logistics.block.redstone;
import com.mojang.math.Vector3f; import org.joml.Vector3f;
import com.simibubi.create.AllTileEntities; import com.simibubi.create.AllTileEntities;
import com.simibubi.create.foundation.block.ITE; import com.simibubi.create.foundation.block.ITE;

View file

@ -5,7 +5,7 @@ import java.util.List;
import com.simibubi.create.foundation.utility.NBTHelper; import com.simibubi.create.foundation.utility.NBTHelper;
import net.minecraft.core.Registry; import net.minecraft.core.registries.Registries;
import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.CompoundTag;
import net.minecraft.nbt.Tag; import net.minecraft.nbt.Tag;
import net.minecraft.network.FriendlyByteBuf; import net.minecraft.network.FriendlyByteBuf;
@ -45,7 +45,7 @@ public class DimensionPalette {
DimensionPalette palette = new DimensionPalette(); DimensionPalette palette = new DimensionPalette();
int length = buffer.readInt(); int length = buffer.readInt();
for (int i = 0; i < length; i++) for (int i = 0; i < length; i++)
palette.gatheredDims.add(ResourceKey.create(Registry.DIMENSION_REGISTRY, buffer.readResourceLocation())); palette.gatheredDims.add(ResourceKey.create(Registries.DIMENSION, buffer.readResourceLocation()));
return palette; return palette;
} }
@ -61,7 +61,7 @@ public class DimensionPalette {
public static DimensionPalette read(CompoundTag tag) { public static DimensionPalette read(CompoundTag tag) {
DimensionPalette palette = new DimensionPalette(); DimensionPalette palette = new DimensionPalette();
NBTHelper.iterateCompoundList(tag.getList("DimensionPalette", Tag.TAG_COMPOUND), c -> palette.gatheredDims NBTHelper.iterateCompoundList(tag.getList("DimensionPalette", Tag.TAG_COMPOUND), c -> palette.gatheredDims
.add(ResourceKey.create(Registry.DIMENSION_REGISTRY, new ResourceLocation(c.getString("Id"))))); .add(ResourceKey.create(Registries.DIMENSION, new ResourceLocation(c.getString("Id")))));
return palette; return palette;
} }

View file

@ -1,12 +1,13 @@
package com.simibubi.create.content.logistics.trains.entity; package com.simibubi.create.content.logistics.trains.entity;
import org.joml.Vector3f;
import com.jozufozu.flywheel.api.MaterialManager; import com.jozufozu.flywheel.api.MaterialManager;
import com.jozufozu.flywheel.api.instance.DynamicInstance; import com.jozufozu.flywheel.api.instance.DynamicInstance;
import com.jozufozu.flywheel.backend.instancing.entity.EntityInstance; import com.jozufozu.flywheel.backend.instancing.entity.EntityInstance;
import com.jozufozu.flywheel.util.AnimationTickHolder; import com.jozufozu.flywheel.util.AnimationTickHolder;
import com.jozufozu.flywheel.util.transform.TransformStack; import com.jozufozu.flywheel.util.transform.TransformStack;
import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.blaze3d.vertex.PoseStack;
import com.mojang.math.Vector3f;
import com.simibubi.create.foundation.utility.Couple; import com.simibubi.create.foundation.utility.Couple;
import com.simibubi.create.foundation.utility.Iterate; import com.simibubi.create.foundation.utility.Iterate;

View file

@ -64,8 +64,8 @@ import net.minecraft.util.Mth;
import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.LivingEntity;
import net.minecraft.world.entity.player.Player; import net.minecraft.world.entity.player.Player;
import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.ItemStack;
import net.minecraft.world.level.Explosion.BlockInteraction;
import net.minecraft.world.level.Level; import net.minecraft.world.level.Level;
import net.minecraft.world.level.Level.ExplosionInteraction;
import net.minecraft.world.phys.Vec3; import net.minecraft.world.phys.Vec3;
import net.minecraftforge.common.ForgeHooks; import net.minecraftforge.common.ForgeHooks;
import net.minecraftforge.fluids.FluidStack; import net.minecraftforge.fluids.FluidStack;
@ -601,7 +601,7 @@ public class Train {
double combinedSpeed = Math.abs(speed) + Math.abs(train.speed); double combinedSpeed = Math.abs(speed) + Math.abs(train.speed);
if (combinedSpeed > .2f) { if (combinedSpeed > .2f) {
Vec3 v = collision.getSecond(); Vec3 v = collision.getSecond();
level.explode(null, v.x, v.y, v.z, (float) Math.min(3 * combinedSpeed, 5), BlockInteraction.NONE); level.explode(null, v.x, v.y, v.z, (float) Math.min(3 * combinedSpeed, 5), ExplosionInteraction.NONE);
} }
crash(); crash();

View file

@ -2,12 +2,13 @@ package com.simibubi.create.content.logistics.trains.management.display;
import java.util.List; import java.util.List;
import org.joml.Matrix4f;
import com.jozufozu.flywheel.util.transform.TransformStack; import com.jozufozu.flywheel.util.transform.TransformStack;
import com.mojang.blaze3d.font.GlyphInfo; import com.mojang.blaze3d.font.GlyphInfo;
import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.blaze3d.vertex.PoseStack;
import com.mojang.blaze3d.vertex.PoseStack.Pose; import com.mojang.blaze3d.vertex.PoseStack.Pose;
import com.mojang.blaze3d.vertex.VertexConsumer; import com.mojang.blaze3d.vertex.VertexConsumer;
import com.mojang.math.Matrix4f;
import com.simibubi.create.AllBlockPartials; import com.simibubi.create.AllBlockPartials;
import com.simibubi.create.content.contraptions.base.KineticTileEntity; import com.simibubi.create.content.contraptions.base.KineticTileEntity;
import com.simibubi.create.content.contraptions.base.KineticTileEntityRenderer; import com.simibubi.create.content.contraptions.base.KineticTileEntityRenderer;

View file

@ -17,7 +17,7 @@ import com.simibubi.create.foundation.gui.widget.ScrollInput;
import com.simibubi.create.foundation.networking.AllPackets; import com.simibubi.create.foundation.networking.AllPackets;
import com.simibubi.create.foundation.utility.Lang; import com.simibubi.create.foundation.utility.Lang;
import net.minecraft.client.gui.components.Widget; import net.minecraft.client.gui.components.Renderable;
import net.minecraft.network.chat.MutableComponent; import net.minecraft.network.chat.MutableComponent;
import net.minecraft.resources.ResourceLocation; import net.minecraft.resources.ResourceLocation;
@ -40,7 +40,7 @@ public class AssemblyScreen extends AbstractStationScreen {
int y = guiTop; int y = guiTop;
int by = y + background.height - 24; int by = y + background.height - 24;
Widget widget = renderables.get(0); Renderable widget = renderables.get(0);
if (widget instanceof IconButton ib) { if (widget instanceof IconButton ib) {
ib.setIcon(AllIcons.I_PRIORITY_VERY_LOW); ib.setIcon(AllIcons.I_PRIORITY_VERY_LOW);
ib.setToolTip(Lang.translateDirect("station.close")); ib.setToolTip(Lang.translateDirect("station.close"));

View file

@ -2,8 +2,9 @@ package com.simibubi.create.content.logistics.trains.management.edgePoint.statio
import java.util.List; import java.util.List;
import org.joml.Matrix4f;
import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.blaze3d.vertex.PoseStack;
import com.mojang.math.Matrix4f;
import net.minecraft.client.StringSplitter; import net.minecraft.client.StringSplitter;
import net.minecraft.client.gui.Font; import net.minecraft.client.gui.Font;

View file

@ -3,9 +3,10 @@ package com.simibubi.create.content.logistics.trains.management.edgePoint.statio
import java.util.Objects; import java.util.Objects;
import java.util.Optional; import java.util.Optional;
import org.joml.Matrix4f;
import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.blaze3d.vertex.PoseStack;
import com.mojang.blaze3d.vertex.VertexConsumer; import com.mojang.blaze3d.vertex.VertexConsumer;
import com.mojang.math.Matrix4f;
import com.simibubi.create.AllTileEntities; import com.simibubi.create.AllTileEntities;
import com.simibubi.create.Create; import com.simibubi.create.Create;
import com.simibubi.create.content.logistics.trains.management.edgePoint.TrackTargetingBehaviour; import com.simibubi.create.content.logistics.trains.management.edgePoint.TrackTargetingBehaviour;

View file

@ -57,7 +57,7 @@ public class StationScreen extends AbstractStationScreen {
Consumer<String> onTextChanged; Consumer<String> onTextChanged;
onTextChanged = s -> nameBox.x = nameBoxX(s, nameBox); onTextChanged = s -> nameBox.setX(nameBoxX(s, nameBox));
nameBox = new EditBox(new NoShadowFontWrapper(font), x + 23, y + 4, background.width - 20, 10, nameBox = new EditBox(new NoShadowFontWrapper(font), x + 23, y + 4, background.width - 20, 10,
Components.literal(station.name)); Components.literal(station.name));
nameBox.setBordered(false); nameBox.setBordered(false);
@ -67,7 +67,7 @@ public class StationScreen extends AbstractStationScreen {
nameBox.changeFocus(false); nameBox.changeFocus(false);
nameBox.mouseClicked(0, 0, 0); nameBox.mouseClicked(0, 0, 0);
nameBox.setResponder(onTextChanged); nameBox.setResponder(onTextChanged);
nameBox.x = nameBoxX(nameBox.getValue(), nameBox); nameBox.setX(nameBoxX(nameBox.getValue(), nameBox));
addRenderableWidget(nameBox); addRenderableWidget(nameBox);
Runnable assemblyCallback = () -> { Runnable assemblyCallback = () -> {
@ -92,7 +92,7 @@ public class StationScreen extends AbstractStationScreen {
.withCallback(() -> AllPackets.channel.sendToServer(StationEditPacket.dropSchedule(te.getBlockPos()))); .withCallback(() -> AllPackets.channel.sendToServer(StationEditPacket.dropSchedule(te.getBlockPos())));
addRenderableWidget(dropScheduleButton); addRenderableWidget(dropScheduleButton);
onTextChanged = s -> trainNameBox.x = nameBoxX(s, trainNameBox); onTextChanged = s -> trainNameBox.setX(nameBoxX(s, trainNameBox));
trainNameBox = new EditBox(font, x + 23, y + 47, background.width - 75, 10, Components.immutableEmpty()); trainNameBox = new EditBox(font, x + 23, y + 47, background.width - 75, 10, Components.immutableEmpty());
trainNameBox.setBordered(false); trainNameBox.setBordered(false);
trainNameBox.setMaxLength(35); trainNameBox.setMaxLength(35);
@ -151,7 +151,7 @@ public class StationScreen extends AbstractStationScreen {
trainNameBox.active = true; trainNameBox.active = true;
trainNameBox.setValue(imminentTrain.name.getString()); trainNameBox.setValue(imminentTrain.name.getString());
trainNameBox.x = nameBoxX(trainNameBox.getValue(), trainNameBox); trainNameBox.setX(nameBoxX(trainNameBox.getValue(), trainNameBox));
addRenderableWidget(trainNameBox); addRenderableWidget(trainNameBox);
int trainIconWidth = getTrainIconWidth(imminentTrain); int trainIconWidth = getTrainIconWidth(imminentTrain);

View file

@ -14,7 +14,7 @@ public class WideIconButton extends IconButton {
@Override @Override
protected void drawBg(PoseStack matrixStack, AllGuiTextures button) { protected void drawBg(PoseStack matrixStack, AllGuiTextures button) {
super.drawBg(matrixStack, button); super.drawBg(matrixStack, button);
blit(matrixStack, x + 9, y, button.startX + 1, button.startY, button.width - 1, button.height); blit(matrixStack, getX() + 9, getY(), button.startX + 1, button.startY, button.width - 1, button.height);
} }
} }

View file

@ -9,6 +9,7 @@ import java.util.Optional;
import java.util.Set; import java.util.Set;
import java.util.function.Consumer; import java.util.function.Consumer;
import org.joml.Matrix4f;
import org.lwjgl.opengl.GL11; import org.lwjgl.opengl.GL11;
import org.lwjgl.opengl.GL30; import org.lwjgl.opengl.GL30;
@ -17,7 +18,6 @@ import com.jozufozu.flywheel.util.transform.TransformStack;
import com.mojang.blaze3d.platform.InputConstants; import com.mojang.blaze3d.platform.InputConstants;
import com.mojang.blaze3d.systems.RenderSystem; import com.mojang.blaze3d.systems.RenderSystem;
import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.blaze3d.vertex.PoseStack;
import com.mojang.math.Matrix4f;
import com.simibubi.create.Create; import com.simibubi.create.Create;
import com.simibubi.create.content.logistics.trains.GlobalRailwayManager; import com.simibubi.create.content.logistics.trains.GlobalRailwayManager;
import com.simibubi.create.content.logistics.trains.TrackGraph; import com.simibubi.create.content.logistics.trains.TrackGraph;
@ -52,7 +52,7 @@ import net.minecraft.ChatFormatting;
import net.minecraft.client.Minecraft; import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.Font; import net.minecraft.client.gui.Font;
import net.minecraft.client.gui.components.EditBox; import net.minecraft.client.gui.components.EditBox;
import net.minecraft.client.gui.components.Widget; import net.minecraft.client.gui.components.Renderable;
import net.minecraft.client.renderer.Rect2i; import net.minecraft.client.renderer.Rect2i;
import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.CompoundTag;
import net.minecraft.network.chat.Component; import net.minecraft.network.chat.Component;
@ -368,7 +368,7 @@ public class ScheduleScreen extends AbstractSimiContainerScreen<ScheduleContaine
else { else {
renderBackground(matrixStack); renderBackground(matrixStack);
renderBg(matrixStack, partialTicks, mouseX, mouseY); renderBg(matrixStack, partialTicks, mouseX, mouseY);
for (Widget widget : this.renderables) for (Renderable widget : this.renderables)
widget.render(matrixStack, mouseX, mouseY, partialTicks); widget.render(matrixStack, mouseX, mouseY, partialTicks);
renderForeground(matrixStack, mouseX, mouseY, partialTicks); renderForeground(matrixStack, mouseX, mouseY, partialTicks);
} }

View file

@ -5,7 +5,7 @@ import java.util.EnumSet;
import com.jozufozu.flywheel.api.MaterialManager; import com.jozufozu.flywheel.api.MaterialManager;
import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.blaze3d.vertex.PoseStack;
import com.mojang.blaze3d.vertex.VertexConsumer; import com.mojang.blaze3d.vertex.VertexConsumer;
import com.mojang.math.Vector3f; import com.mojang.math.Axis;
import com.simibubi.create.AllBlockPartials; import com.simibubi.create.AllBlockPartials;
import com.simibubi.create.AllBlocks; import com.simibubi.create.AllBlocks;
import com.simibubi.create.AllTileEntities; import com.simibubi.create.AllTileEntities;
@ -26,7 +26,6 @@ import net.minecraft.client.renderer.MultiBufferSource;
import net.minecraft.client.renderer.RenderType; import net.minecraft.client.renderer.RenderType;
import net.minecraft.core.BlockPos; import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction; import net.minecraft.core.Direction;
import net.minecraft.core.Direction.Axis;
import net.minecraft.world.entity.player.Player; import net.minecraft.world.entity.player.Player;
import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.ItemStack;
import net.minecraft.world.level.BlockGetter; import net.minecraft.world.level.BlockGetter;
@ -49,7 +48,7 @@ import net.minecraftforge.api.distmarker.OnlyIn;
public class StandardBogeyBlock extends Block public class StandardBogeyBlock extends Block
implements IBogeyBlock, ITE<StandardBogeyTileEntity>, ProperWaterloggedBlock, ISpecialBlockItemRequirement { implements IBogeyBlock, ITE<StandardBogeyTileEntity>, ProperWaterloggedBlock, ISpecialBlockItemRequirement {
public static final EnumProperty<Axis> AXIS = BlockStateProperties.HORIZONTAL_AXIS; public static final EnumProperty<Direction.Axis> AXIS = BlockStateProperties.HORIZONTAL_AXIS;
private final boolean large; private final boolean large;
public StandardBogeyBlock(Properties p_i48440_1_, boolean large) { public StandardBogeyBlock(Properties p_i48440_1_, boolean large) {
@ -69,7 +68,7 @@ public class StandardBogeyBlock extends Block
@Override @Override
public EnumSet<Direction> getStickySurfaces(BlockGetter world, BlockPos pos, BlockState state) { public EnumSet<Direction> getStickySurfaces(BlockGetter world, BlockPos pos, BlockState state) {
return state.getValue(BlockStateProperties.HORIZONTAL_AXIS) == Axis.X ? STICKY_X : STICKY_Z; return state.getValue(BlockStateProperties.HORIZONTAL_AXIS) == Direction.Axis.X ? STICKY_X : STICKY_Z;
} }
@Override @Override
@ -108,12 +107,12 @@ public class StandardBogeyBlock extends Block
public BlockState getMatchingBogey(Direction upDirection, boolean axisAlongFirst) { public BlockState getMatchingBogey(Direction upDirection, boolean axisAlongFirst) {
if (upDirection != Direction.UP) if (upDirection != Direction.UP)
return null; return null;
return defaultBlockState().setValue(AXIS, axisAlongFirst ? Axis.X : Axis.Z); return defaultBlockState().setValue(AXIS, axisAlongFirst ? Direction.Axis.X : Direction.Axis.Z);
} }
@Override @Override
public boolean isTrackAxisAlongFirstCoordinate(BlockState state) { public boolean isTrackAxisAlongFirstCoordinate(BlockState state) {
return state.getValue(AXIS) == Axis.X; return state.getValue(AXIS) == Direction.Axis.X;
} }
@Override @Override
@ -122,8 +121,8 @@ public class StandardBogeyBlock extends Block
int light, int overlay) { int light, int overlay) {
if (state != null) { if (state != null) {
ms.translate(.5f, .5f, .5f); ms.translate(.5f, .5f, .5f);
if (state.getValue(AXIS) == Axis.X) if (state.getValue(AXIS) == Direction.Axis.X)
ms.mulPose(Vector3f.YP.rotationDegrees(90)); ms.mulPose(Axis.YP.rotationDegrees(90));
} }
ms.translate(0, -1.5 - 1 / 128f, 0); ms.translate(0, -1.5 - 1 / 128f, 0);
@ -133,7 +132,7 @@ public class StandardBogeyBlock extends Block
for (int i : Iterate.zeroAndOne) for (int i : Iterate.zeroAndOne)
CachedBufferer.block(AllBlocks.SHAFT.getDefaultState() CachedBufferer.block(AllBlocks.SHAFT.getDefaultState()
.setValue(ShaftBlock.AXIS, Axis.Z)) .setValue(ShaftBlock.AXIS, Direction.Axis.Z))
.translate(-.5f, .25f, i * -1) .translate(-.5f, .25f, i * -1)
.centre() .centre()
.rotateZ(wheelAngle) .rotateZ(wheelAngle)
@ -168,7 +167,7 @@ public class StandardBogeyBlock extends Block
private void renderLargeBogey(float wheelAngle, PoseStack ms, int light, VertexConsumer vb, BlockState air) { private void renderLargeBogey(float wheelAngle, PoseStack ms, int light, VertexConsumer vb, BlockState air) {
for (int i : Iterate.zeroAndOne) for (int i : Iterate.zeroAndOne)
CachedBufferer.block(AllBlocks.SHAFT.getDefaultState() CachedBufferer.block(AllBlocks.SHAFT.getDefaultState()
.setValue(ShaftBlock.AXIS, Axis.X)) .setValue(ShaftBlock.AXIS, Direction.Axis.X))
.translate(-.5f, .25f, .5f + i * -2) .translate(-.5f, .25f, .5f + i * -2)
.centre() .centre()
.rotateX(wheelAngle) .rotateX(wheelAngle)

View file

@ -25,7 +25,7 @@ import com.simibubi.create.foundation.utility.VecHelper;
import net.minecraft.core.BlockPos; import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction.Axis; import net.minecraft.core.Direction.Axis;
import net.minecraft.core.Registry; import net.minecraft.core.registries.Registries;
import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.CompoundTag;
import net.minecraft.nbt.ListTag; import net.minecraft.nbt.ListTag;
import net.minecraft.nbt.NbtUtils; import net.minecraft.nbt.NbtUtils;
@ -203,7 +203,7 @@ public class TrackTileEntity extends SmartTileEntity implements ITransformableTE
if (tag.contains("BoundLocation")) if (tag.contains("BoundLocation"))
boundLocation = Pair.of( boundLocation = Pair.of(
ResourceKey.create(Registry.DIMENSION_REGISTRY, new ResourceLocation(tag.getString("BoundDimension"))), ResourceKey.create(Registries.DIMENSION, new ResourceLocation(tag.getString("BoundDimension"))),
NbtUtils.readBlockPos(tag.getCompound("BoundLocation"))); NbtUtils.readBlockPos(tag.getCompound("BoundLocation")));
} }

View file

@ -9,8 +9,8 @@ import javax.annotation.Nullable;
import net.minecraft.core.BlockPos; import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction; import net.minecraft.core.Direction;
import net.minecraft.core.Holder; import net.minecraft.core.Holder;
import net.minecraft.core.Registry;
import net.minecraft.core.RegistryAccess; import net.minecraft.core.RegistryAccess;
import net.minecraft.core.registries.Registries;
import net.minecraft.resources.ResourceKey; import net.minecraft.resources.ResourceKey;
import net.minecraft.server.level.ChunkHolder; import net.minecraft.server.level.ChunkHolder;
import net.minecraft.sounds.SoundEvent; import net.minecraft.sounds.SoundEvent;
@ -157,7 +157,7 @@ public class SchematicChunkSource extends ChunkSource {
SoundEvent p_220367_, SoundSource p_220368_, float p_220369_, float p_220370_, long p_220371_) {} SoundEvent p_220367_, SoundSource p_220368_, float p_220369_, float p_220370_, long p_220371_) {}
@Override @Override
public void playSeededSound(Player p_220372_, Entity p_220373_, SoundEvent p_220374_, SoundSource p_220375_, public void playSeededSound(Player p_220372_, Entity p_220373_, Holder<SoundEvent> p_220374_, SoundSource p_220375_,
float p_220376_, float p_220377_, long p_220378_) {} float p_220376_, float p_220377_, long p_220378_) {}
@Override @Override
@ -213,7 +213,7 @@ public class SchematicChunkSource extends ChunkSource {
} }
private static final DummyLevel DUMMY_LEVEL = new DummyLevel(null, null, RegistryAccess.BUILTIN.get() private static final DummyLevel DUMMY_LEVEL = new DummyLevel(null, null, RegistryAccess.BUILTIN.get()
.registryOrThrow(Registry.DIMENSION_TYPE_REGISTRY) .registryOrThrow(Registries.DIMENSION_TYPE)
.getHolderOrThrow(BuiltinDimensionTypes.OVERWORLD), null, false, false, 0, 0); .getHolderOrThrow(BuiltinDimensionTypes.OVERWORLD), null, false, false, 0, 0);
public EmptierChunk(RegistryAccess registryAccess) { public EmptierChunk(RegistryAccess registryAccess) {

View file

@ -129,7 +129,7 @@ public class SchematicTableScreen extends AbstractSimiContainerScreen<SchematicT
extraAreas = ImmutableList.of( extraAreas = ImmutableList.of(
new Rect2i(x + background.width, y + background.height - 40, 48, 48), new Rect2i(x + background.width, y + background.height - 40, 48, 48),
new Rect2i(refreshButton.x, refreshButton.y, refreshButton.getWidth(), refreshButton.getHeight()) new Rect2i(refreshButton.getX(), refreshButton.getY(), refreshButton.getWidth(), refreshButton.getHeight())
); );
} }

View file

@ -4,7 +4,7 @@ import com.jozufozu.flywheel.backend.Backend;
import com.jozufozu.flywheel.core.model.ModelUtil; import com.jozufozu.flywheel.core.model.ModelUtil;
import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.blaze3d.vertex.PoseStack;
import com.mojang.blaze3d.vertex.VertexConsumer; import com.mojang.blaze3d.vertex.VertexConsumer;
import com.mojang.math.Vector3f; import com.mojang.math.Axis;
import com.simibubi.create.AllBlockPartials; import com.simibubi.create.AllBlockPartials;
import com.simibubi.create.AllBlocks; import com.simibubi.create.AllBlocks;
import com.simibubi.create.content.schematics.block.LaunchedItem.ForBelt; import com.simibubi.create.content.schematics.block.LaunchedItem.ForBelt;
@ -162,8 +162,8 @@ public class SchematicannonRenderer extends SafeTileEntityRenderer<Schematicanno
ms.translate(blockLocation.x, blockLocation.y, blockLocation.z); ms.translate(blockLocation.x, blockLocation.y, blockLocation.z);
ms.translate(.125f, .125f, .125f); ms.translate(.125f, .125f, .125f);
ms.mulPose(new Vector3f(0, 1, 0).rotationDegrees(360 * t)); ms.mulPose(Axis.YP.rotationDegrees(360 * t));
ms.mulPose(new Vector3f(1, 0, 0).rotationDegrees(360 * t)); ms.mulPose(Axis.XP.rotationDegrees(360 * t));
ms.translate(-.125f, -.125f, -.125f); ms.translate(-.125f, -.125f, -.125f);
if (launched instanceof ForBlockState) { if (launched instanceof ForBlockState) {

View file

@ -14,6 +14,7 @@ import com.simibubi.create.content.logistics.item.LinkedControllerServerHandler;
import com.simibubi.create.content.logistics.trains.entity.CarriageEntityHandler; import com.simibubi.create.content.logistics.trains.entity.CarriageEntityHandler;
import com.simibubi.create.foundation.ModFilePackResources; import com.simibubi.create.foundation.ModFilePackResources;
import com.simibubi.create.foundation.command.AllCommands; import com.simibubi.create.foundation.command.AllCommands;
import com.simibubi.create.foundation.utility.Components;
import com.simibubi.create.foundation.utility.ServerSpeedProvider; import com.simibubi.create.foundation.utility.ServerSpeedProvider;
import com.simibubi.create.foundation.utility.WorldAttached; import com.simibubi.create.foundation.utility.WorldAttached;
import com.simibubi.create.foundation.utility.recipe.RecipeFinder; import com.simibubi.create.foundation.utility.recipe.RecipeFinder;
@ -203,8 +204,11 @@ public class CommonEvents {
return; return;
} }
IModFile modFile = modFileInfo.getFile(); IModFile modFile = modFileInfo.getFile();
event.addRepositorySource((consumer, constructor) -> { event.addRepositorySource(consumer -> {
consumer.accept(Pack.create(Create.asResource("legacy_copper").toString(), false, () -> new ModFilePackResources("Create Legacy Copper", modFile, "resourcepacks/legacy_copper"), constructor, Pack.Position.TOP, PackSource.DEFAULT)); Pack pack = Pack.readMetaAndCreate(Create.asResource("legacy_copper").toString(), Components.literal("Create Legacy Copper"), false, id -> new ModFilePackResources(id, modFile, "resourcepacks/legacy_copper"), PackType.CLIENT_RESOURCES, Pack.Position.TOP, PackSource.BUILT_IN);
if (pack != null) {
consumer.accept(pack);
}
}); });
} }
} }

View file

@ -10,7 +10,7 @@ public class ModFilePackResources extends PathPackResources {
protected final String sourcePath; protected final String sourcePath;
public ModFilePackResources(String name, IModFile modFile, String sourcePath) { public ModFilePackResources(String name, IModFile modFile, String sourcePath) {
super(name, modFile.findResource(sourcePath)); super(name, true, modFile.findResource(sourcePath));
this.modFile = modFile; this.modFile = modFile;
this.sourcePath = sourcePath; this.sourcePath = sourcePath;
} }

View file

@ -1,6 +1,6 @@
package com.simibubi.create.foundation.collision; package com.simibubi.create.foundation.collision;
import com.mojang.math.Matrix4f; import org.joml.Matrix4f;
import net.minecraft.util.Mth; import net.minecraft.util.Mth;
import net.minecraft.world.phys.Vec3; import net.minecraft.world.phys.Vec3;
@ -142,7 +142,7 @@ public class Matrix3d {
conversionBuffer[9] = (float) m21; conversionBuffer[9] = (float) m21;
conversionBuffer[10] = (float) m22; conversionBuffer[10] = (float) m22;
return new Matrix4f(conversionBuffer); return new Matrix4f().setTransposed(conversionBuffer);
} }
} }

View file

@ -133,8 +133,8 @@ public class ConfigModListScreen extends ConfigScreen {
public void render(PoseStack ms, int index, int y, int x, int width, int height, int mouseX, int mouseY, boolean p_230432_9_, float partialTicks) { public void render(PoseStack ms, int index, int y, int x, int width, int height, int mouseX, int mouseY, boolean p_230432_9_, float partialTicks) {
super.render(ms, index, y, x, width, height, mouseX, mouseY, p_230432_9_, partialTicks); super.render(ms, index, y, x, width, height, mouseX, mouseY, p_230432_9_, partialTicks);
button.x = x + width - 108; button.setX(x + width - 108);
button.y = y + 10; button.setY(y + 10);
button.setHeight(height - 20); button.setHeight(height - 20);
button.render(ms, mouseX, mouseY, partialTicks); button.render(ms, mouseX, mouseY, partialTicks);
} }

Some files were not shown because too many files have changed in this diff Show more