diff --git a/build.gradle b/build.gradle index 42beba0b1..7a0efbe29 100644 --- a/build.gradle +++ b/build.gradle @@ -11,14 +11,6 @@ plugins { jarJar.enable() boolean dev = System.getenv('RELEASE') == null || System.getenv('RELEASE').equals('false'); -// jozu: I use a gradle workspace with both projects. -// The project is named Flywheel-Forge, but sub-projects are named by folder. -Project flywheelProject = findProject(':Flywheel') -boolean flywheelInWorkspace = flywheelProject != null - -if (flywheelInWorkspace) { - println('Workspace detected, using Flywheel sibling project') -} ext.buildNumber = System.getenv('BUILD_NUMBER') @@ -75,13 +67,6 @@ minecraft { client { workingDirectory project.file('run') - mods { - if (flywheelInWorkspace) { - flywheel { - source flywheelProject.sourceSets.main - } - } - } } server { @@ -93,13 +78,6 @@ minecraft { property 'forge.logging.markers', 'REGISTRIES,REGISTRYDUMP' property 'forge.logging.console.level', 'debug' args '--mod', 'create', '--all', '--output', file('src/generated/resources/'), '--existing', file('src/main/resources') - mods { - if (flywheelInWorkspace) { - flywheel { - source flywheelProject.sourceSets.main - } - } - } } gameTestServer { @@ -173,11 +151,8 @@ dependencies { implementation fg.deobf("com.tterrag.registrate:Registrate:${registrate_version}") - if (flywheelInWorkspace) { - implementation flywheelProject - } else { - implementation fg.deobf("com.jozufozu.flywheel:flywheel-forge-${flywheel_minecraft_version}:${flywheel_version}") - } + compileOnly fg.deobf("com.jozufozu.flywheel:flywheel-forge-api-${flywheel_minecraft_version}:${flywheel_version}") + runtimeOnly fg.deobf("com.jozufozu.flywheel:flywheel-forge-${flywheel_minecraft_version}:${flywheel_version}") compileOnly fg.deobf("mezz.jei:jei-${jei_minecraft_version}-common-api:${jei_version}") compileOnly fg.deobf("mezz.jei:jei-${jei_minecraft_version}-forge-api:${jei_version}") diff --git a/gradle.properties b/gradle.properties index e23efe403..a5597d1c4 100644 --- a/gradle.properties +++ b/gradle.properties @@ -23,7 +23,7 @@ use_parchment = true # dependency versions registrate_version = MC1.20-1.3.3 flywheel_minecraft_version = 1.20.1 -flywheel_version = 1.0.0-alpha-78 +flywheel_version = 1.0.0-beta-87 jei_minecraft_version = 1.20.1 jei_version = 15.2.0.22 curios_minecraft_version = 1.20.1 diff --git a/src/main/java/com/simibubi/create/content/contraptions/actors/harvester/HarvesterActorVisual.java b/src/main/java/com/simibubi/create/content/contraptions/actors/harvester/HarvesterActorVisual.java index 412bb2ead..0fbfe533e 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/actors/harvester/HarvesterActorVisual.java +++ b/src/main/java/com/simibubi/create/content/contraptions/actors/harvester/HarvesterActorVisual.java @@ -42,7 +42,7 @@ public class HarvesterActorVisual extends ActorVisual { horizontalAngle = facing.toYRot() + ((facing.getAxis() == Direction.Axis.X) ? 180 : 0); - harvester.setBlockLight(localBlockLight()); + harvester.light(localBlockLight(), 0); harvester.setChanged(); } diff --git a/src/main/java/com/simibubi/create/content/contraptions/actors/psi/PSIActorVisual.java b/src/main/java/com/simibubi/create/content/contraptions/actors/psi/PSIActorVisual.java index 7b9ce9c49..ff1c26188 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/actors/psi/PSIActorVisual.java +++ b/src/main/java/com/simibubi/create/content/contraptions/actors/psi/PSIActorVisual.java @@ -17,8 +17,8 @@ public class PSIActorVisual extends ActorVisual { instance = new PIInstance(context.instancerProvider(), movementContext.state, movementContext.localPos); instance.init(false); - instance.middle.setBlockLight(localBlockLight()); - instance.top.setBlockLight(localBlockLight()); + instance.middle.light(localBlockLight(), 0); + instance.top.light(localBlockLight(), 0); } @Override diff --git a/src/main/java/com/simibubi/create/content/contraptions/actors/psi/PSIVisual.java b/src/main/java/com/simibubi/create/content/contraptions/actors/psi/PSIVisual.java index 62c6f3bf6..c524d0116 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/actors/psi/PSIVisual.java +++ b/src/main/java/com/simibubi/create/content/contraptions/actors/psi/PSIVisual.java @@ -3,8 +3,8 @@ package com.simibubi.create.content.contraptions.actors.psi; import java.util.function.Consumer; import com.jozufozu.flywheel.api.instance.Instance; -import com.jozufozu.flywheel.api.visual.VisualFrameContext; -import com.jozufozu.flywheel.api.visual.VisualTickContext; +import com.jozufozu.flywheel.api.visual.DynamicVisual; +import com.jozufozu.flywheel.api.visual.TickableVisual; import com.jozufozu.flywheel.api.visualization.VisualizationContext; import com.jozufozu.flywheel.lib.visual.AbstractBlockEntityVisual; import com.jozufozu.flywheel.lib.visual.SimpleDynamicVisual; @@ -27,12 +27,12 @@ public class PSIVisual extends AbstractBlockEntityVisual e } @Override - public void beginFrame(VisualFrameContext ctx) { + public void beginFrame(DynamicVisual.Context ctx) { float interpolatedAngle = blockEntity.getInterpolatedAngle(ctx.partialTick() - 1); Quaternionf rot = rotationAxis.rotationDegrees(interpolatedAngle); diff --git a/src/main/java/com/simibubi/create/content/contraptions/bearing/StabilizedBearingVisual.java b/src/main/java/com/simibubi/create/content/contraptions/bearing/StabilizedBearingVisual.java index 7a915312e..90031a53a 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/bearing/StabilizedBearingVisual.java +++ b/src/main/java/com/simibubi/create/content/contraptions/bearing/StabilizedBearingVisual.java @@ -44,14 +44,14 @@ public class StabilizedBearingVisual extends ActorVisual { int blockLight = localBlockLight(); topInstance.setPosition(movementContext.localPos) .setRotation(blockOrientation) - .setBlockLight(blockLight); + .light(blockLight, 0); shaft = instancerProvider.instancer(AllInstanceTypes.ROTATING, Models.partial(AllPartialModels.SHAFT_HALF, blockState.getValue(BlockStateProperties.FACING).getOpposite())) .createInstance(); // not rotating so no need to set speed, axis, etc. shaft.setPosition(movementContext.localPos) - .setBlockLight(blockLight); + .light(blockLight, 0); } @Override diff --git a/src/main/java/com/simibubi/create/content/contraptions/chassis/StickerVisual.java b/src/main/java/com/simibubi/create/content/contraptions/chassis/StickerVisual.java index b1b2aa494..fbffed3c2 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/chassis/StickerVisual.java +++ b/src/main/java/com/simibubi/create/content/contraptions/chassis/StickerVisual.java @@ -3,7 +3,7 @@ package com.simibubi.create.content.contraptions.chassis; import java.util.function.Consumer; import com.jozufozu.flywheel.api.instance.Instance; -import com.jozufozu.flywheel.api.visual.VisualFrameContext; +import com.jozufozu.flywheel.api.visual.DynamicVisual; import com.jozufozu.flywheel.api.visualization.VisualizationContext; import com.jozufozu.flywheel.lib.instance.InstanceTypes; import com.jozufozu.flywheel.lib.instance.TransformedInstance; @@ -39,7 +39,7 @@ public class StickerVisual extends AbstractBlockEntityVisual } @Override - public void beginFrame(VisualFrameContext ctx) { + public void beginFrame(DynamicVisual.Context ctx) { float offset = blockEntity.piston.getValue(ctx.partialTick()); if (fakeWorld) diff --git a/src/main/java/com/simibubi/create/content/contraptions/elevator/ElevatorPulleyVisual.java b/src/main/java/com/simibubi/create/content/contraptions/elevator/ElevatorPulleyVisual.java index 62c819078..fcf7fb63d 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/elevator/ElevatorPulleyVisual.java +++ b/src/main/java/com/simibubi/create/content/contraptions/elevator/ElevatorPulleyVisual.java @@ -1,6 +1,6 @@ package com.simibubi.create.content.contraptions.elevator; -import com.jozufozu.flywheel.api.visual.VisualFrameContext; +import com.jozufozu.flywheel.api.visual.DynamicVisual; import com.jozufozu.flywheel.api.visualization.VisualizationContext; import com.jozufozu.flywheel.lib.visual.SimpleDynamicVisual; import com.simibubi.create.content.kinetics.base.ShaftVisual; @@ -13,7 +13,7 @@ public class ElevatorPulleyVisual extends ShaftVisual } @Override - public void beginFrame(VisualFrameContext ctx) { + public void beginFrame(DynamicVisual.Context ctx) { } } diff --git a/src/main/java/com/simibubi/create/content/contraptions/gantry/GantryCarriageVisual.java b/src/main/java/com/simibubi/create/content/contraptions/gantry/GantryCarriageVisual.java index d77b6c3de..f9b1c8063 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/gantry/GantryCarriageVisual.java +++ b/src/main/java/com/simibubi/create/content/contraptions/gantry/GantryCarriageVisual.java @@ -3,7 +3,7 @@ package com.simibubi.create.content.contraptions.gantry; import java.util.function.Consumer; import com.jozufozu.flywheel.api.instance.Instance; -import com.jozufozu.flywheel.api.visual.VisualFrameContext; +import com.jozufozu.flywheel.api.visual.DynamicVisual; import com.jozufozu.flywheel.api.visualization.VisualizationContext; import com.jozufozu.flywheel.lib.instance.InstanceTypes; import com.jozufozu.flywheel.lib.instance.TransformedInstance; @@ -51,7 +51,7 @@ public class GantryCarriageVisual extends ShaftVisual } @Override - public void beginFrame(VisualFrameContext ctx) { + public void beginFrame(DynamicVisual.Context ctx) { float cogAngle = getCogAngle(); if (Mth.equal(cogAngle, lastAngle)) return; diff --git a/src/main/java/com/simibubi/create/content/contraptions/pulley/AbstractPulleyVisual.java b/src/main/java/com/simibubi/create/content/contraptions/pulley/AbstractPulleyVisual.java index eb026969f..eaedab258 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/pulley/AbstractPulleyVisual.java +++ b/src/main/java/com/simibubi/create/content/contraptions/pulley/AbstractPulleyVisual.java @@ -4,11 +4,10 @@ import java.util.function.Consumer; import com.jozufozu.flywheel.api.instance.Instance; import com.jozufozu.flywheel.api.instance.Instancer; -import com.jozufozu.flywheel.api.visual.VisualFrameContext; +import com.jozufozu.flywheel.api.visual.DynamicVisual; import com.jozufozu.flywheel.api.visualization.VisualizationContext; import com.jozufozu.flywheel.lib.box.MutableBox; import com.jozufozu.flywheel.lib.instance.OrientedInstance; -import com.jozufozu.flywheel.lib.light.LightPacking; import com.jozufozu.flywheel.lib.light.LightVolume; import com.jozufozu.flywheel.lib.visual.SimpleDynamicVisual; import com.mojang.math.Axis; @@ -60,7 +59,7 @@ public abstract class AbstractPulleyVisual extends } @Override - public void beginFrame(VisualFrameContext ctx) { + public void beginFrame(DynamicVisual.Context ctx) { updateOffset(ctx.partialTick()); coil.setRotation(rotationAxis.rotationDegrees(offset * 180)) .setChanged(); @@ -75,8 +74,7 @@ public abstract class AbstractPulleyVisual extends short packed = light.getPackedLight(pos.getX(), pos.getY() - i, pos.getZ()); data.setPosition(getVisualPosition()) .nudgePosition(0, -offset, 0) - .setBlockLight(LightPacking.getBlock(packed)) - .setSkyLight(LightPacking.getSky(packed)) + .light(packed) .setChanged(); }); @@ -89,8 +87,7 @@ public abstract class AbstractPulleyVisual extends short packed = light.getPackedLight(pos.getX(), pos.getY(), pos.getZ()); rope1.setPosition(getVisualPosition()) .nudgePosition(0, -halfRopeNudge, 0) - .setBlockLight(LightPacking.getBlock(packed)) - .setSkyLight(LightPacking.getSky(packed)) + .light(packed) .setChanged(); }); @@ -103,8 +100,7 @@ public abstract class AbstractPulleyVisual extends rope.get(i) .setPosition(getVisualPosition()) .nudgePosition(0, -offset + i + 1, 0) - .setBlockLight(LightPacking.getBlock(packed)) - .setSkyLight(LightPacking.getSky(packed)) + .light(packed) .setChanged(); } } else { diff --git a/src/main/java/com/simibubi/create/content/contraptions/render/ContraptionVisual.java b/src/main/java/com/simibubi/create/content/contraptions/render/ContraptionVisual.java index a40400d05..218313d51 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/render/ContraptionVisual.java +++ b/src/main/java/com/simibubi/create/content/contraptions/render/ContraptionVisual.java @@ -12,15 +12,13 @@ import com.jozufozu.flywheel.api.visual.BlockEntityVisual; import com.jozufozu.flywheel.api.visual.DynamicVisual; import com.jozufozu.flywheel.api.visual.LitVisual; import com.jozufozu.flywheel.api.visual.TickableVisual; -import com.jozufozu.flywheel.api.visual.VisualFrameContext; -import com.jozufozu.flywheel.api.visual.VisualTickContext; import com.jozufozu.flywheel.api.visualization.BlockEntityVisualizer; import com.jozufozu.flywheel.api.visualization.VisualEmbedding; import com.jozufozu.flywheel.api.visualization.VisualizationContext; import com.jozufozu.flywheel.api.visualization.VisualizerRegistry; import com.jozufozu.flywheel.lib.instance.InstanceTypes; import com.jozufozu.flywheel.lib.instance.TransformedInstance; -import com.jozufozu.flywheel.lib.model.baked.MultiBlockModelBuilder; +import com.jozufozu.flywheel.lib.model.baked.ForgeMultiBlockModelBuilder; import com.jozufozu.flywheel.lib.task.ForEachPlan; import com.jozufozu.flywheel.lib.task.NestedPlan; import com.jozufozu.flywheel.lib.task.PlanMap; @@ -52,8 +50,8 @@ public class ContraptionVisual extends Abst protected final VisualEmbedding embedding; protected final List> children = new ArrayList<>(); protected final List actors = new ArrayList<>(); - protected final PlanMap dynamicVisuals = new PlanMap<>(); - protected final PlanMap tickableVisuals = new PlanMap<>(); + protected final PlanMap dynamicVisuals = new PlanMap<>(); + protected final PlanMap tickableVisuals = new PlanMap<>(); protected VirtualRenderWorld virtualRenderWorld; protected Model model; protected TransformedInstance structure; @@ -83,7 +81,7 @@ public class ContraptionVisual extends Abst } }; - model = new MultiBlockModelBuilder(modelWorld, blocks.positions()) + model = new ForgeMultiBlockModelBuilder(modelWorld, blocks.positions()) .modelDataLookup(pos -> contraption.modelData.getOrDefault(pos, ModelData.EMPTY)) .build(); @@ -155,7 +153,7 @@ public class ContraptionVisual extends Abst } @Override - public Plan planTick() { + public Plan planTick() { return NestedPlan.of( ForEachPlan.of(() -> actors, ActorVisual::tick), tickableVisuals @@ -163,7 +161,7 @@ public class ContraptionVisual extends Abst } @Override - public Plan planFrame() { + public Plan planFrame() { return NestedPlan.of( RunnablePlan.of(this::beginFrame), ForEachPlan.of(() -> actors, ActorVisual::beginFrame), @@ -171,7 +169,7 @@ public class ContraptionVisual extends Abst ); } - protected void beginFrame(VisualFrameContext context) { + protected void beginFrame(DynamicVisual.Context context) { var partialTick = context.partialTick(); setEmbeddingMatrices(partialTick); diff --git a/src/main/java/com/simibubi/create/content/equipment/toolbox/ToolBoxVisual.java b/src/main/java/com/simibubi/create/content/equipment/toolbox/ToolBoxVisual.java index c669847c1..7cfa3ae65 100644 --- a/src/main/java/com/simibubi/create/content/equipment/toolbox/ToolBoxVisual.java +++ b/src/main/java/com/simibubi/create/content/equipment/toolbox/ToolBoxVisual.java @@ -4,7 +4,7 @@ import java.util.function.Consumer; import com.jozufozu.flywheel.api.instance.Instance; import com.jozufozu.flywheel.api.instance.Instancer; -import com.jozufozu.flywheel.api.visual.VisualFrameContext; +import com.jozufozu.flywheel.api.visual.DynamicVisual; import com.jozufozu.flywheel.api.visualization.VisualizationContext; import com.jozufozu.flywheel.lib.instance.InstanceTypes; import com.jozufozu.flywheel.lib.instance.TransformedInstance; @@ -50,7 +50,7 @@ public class ToolBoxVisual extends AbstractBlockEntityVisual } @Override - public void beginFrame(VisualFrameContext ctx) { + public void beginFrame(DynamicVisual.Context ctx) { float partialTicks = ctx.partialTick(); float lidAngle = blockEntity.lid.getValue(partialTicks); diff --git a/src/main/java/com/simibubi/create/content/fluids/pipes/valve/FluidValveVisual.java b/src/main/java/com/simibubi/create/content/fluids/pipes/valve/FluidValveVisual.java index 07d7880c8..cc613a7f8 100644 --- a/src/main/java/com/simibubi/create/content/fluids/pipes/valve/FluidValveVisual.java +++ b/src/main/java/com/simibubi/create/content/fluids/pipes/valve/FluidValveVisual.java @@ -3,7 +3,7 @@ package com.simibubi.create.content.fluids.pipes.valve; import java.util.function.Consumer; import com.jozufozu.flywheel.api.instance.Instance; -import com.jozufozu.flywheel.api.visual.VisualFrameContext; +import com.jozufozu.flywheel.api.visual.DynamicVisual; import com.jozufozu.flywheel.api.visualization.VisualizationContext; import com.jozufozu.flywheel.lib.instance.InstanceTypes; import com.jozufozu.flywheel.lib.instance.TransformedInstance; @@ -52,7 +52,7 @@ public class FluidValveVisual extends ShaftVisual impleme } @Override - public void beginFrame(VisualFrameContext ctx) { + public void beginFrame(DynamicVisual.Context ctx) { if (blockEntity.pointer.settled() && settled) return; diff --git a/src/main/java/com/simibubi/create/content/kinetics/belt/BeltVisual.java b/src/main/java/com/simibubi/create/content/kinetics/belt/BeltVisual.java index ef84b837a..530d70d4d 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/belt/BeltVisual.java +++ b/src/main/java/com/simibubi/create/content/kinetics/belt/BeltVisual.java @@ -164,8 +164,7 @@ public class BeltVisual extends KineticBlockEntityVisual { .setRotationOffset(bottom ? 0.5f : 0f) .setColor(blockEntity) .setPosition(getVisualPosition()) - .setBlockLight(level.getBrightness(LightLayer.BLOCK, pos)) - .setSkyLight(level.getBrightness(LightLayer.SKY, pos)) + .light(level.getBrightness(LightLayer.BLOCK, pos), level.getBrightness(LightLayer.SKY, pos)) .setChanged(); return key; diff --git a/src/main/java/com/simibubi/create/content/kinetics/crank/HandCrankVisual.java b/src/main/java/com/simibubi/create/content/kinetics/crank/HandCrankVisual.java index ad25c0bea..60b16fd35 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/crank/HandCrankVisual.java +++ b/src/main/java/com/simibubi/create/content/kinetics/crank/HandCrankVisual.java @@ -4,7 +4,7 @@ import java.util.function.Consumer; import com.jozufozu.flywheel.api.instance.Instance; import com.jozufozu.flywheel.api.model.Model; -import com.jozufozu.flywheel.api.visual.VisualFrameContext; +import com.jozufozu.flywheel.api.visual.DynamicVisual; import com.jozufozu.flywheel.api.visualization.VisualizationContext; import com.jozufozu.flywheel.lib.instance.InstanceTypes; import com.jozufozu.flywheel.lib.instance.TransformedInstance; @@ -28,7 +28,7 @@ public class HandCrankVisual extends SingleRotatingVisual } @Override - public void beginFrame(VisualFrameContext ctx) { + public void beginFrame(DynamicVisual.Context ctx) { if (crank == null) return; diff --git a/src/main/java/com/simibubi/create/content/kinetics/deployer/DeployerActorVisual.java b/src/main/java/com/simibubi/create/content/kinetics/deployer/DeployerActorVisual.java index 211d6b87a..d4762b53d 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/deployer/DeployerActorVisual.java +++ b/src/main/java/com/simibubi/create/content/kinetics/deployer/DeployerActorVisual.java @@ -69,10 +69,10 @@ public class DeployerActorVisual extends ActorVisual { shaft.setRotationAxis(axis) .setPosition(context.localPos) - .setBlockLight(blockLight); + .light(blockLight, 0); - pole.setBlockLight(blockLight); - hand.setBlockLight(blockLight); + pole.light(blockLight, 0); + hand.light(blockLight, 0); } @Override diff --git a/src/main/java/com/simibubi/create/content/kinetics/deployer/DeployerVisual.java b/src/main/java/com/simibubi/create/content/kinetics/deployer/DeployerVisual.java index 733239db6..330caffc7 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/deployer/DeployerVisual.java +++ b/src/main/java/com/simibubi/create/content/kinetics/deployer/DeployerVisual.java @@ -8,8 +8,8 @@ import java.util.function.Consumer; import org.joml.Quaternionf; import com.jozufozu.flywheel.api.instance.Instance; -import com.jozufozu.flywheel.api.visual.VisualFrameContext; -import com.jozufozu.flywheel.api.visual.VisualTickContext; +import com.jozufozu.flywheel.api.visual.DynamicVisual; +import com.jozufozu.flywheel.api.visual.TickableVisual; import com.jozufozu.flywheel.api.visualization.VisualizationContext; import com.jozufozu.flywheel.lib.instance.InstanceTypes; import com.jozufozu.flywheel.lib.instance.OrientedInstance; @@ -69,7 +69,7 @@ public class DeployerVisual extends ShaftVisual implements } @Override - public void tick(VisualTickContext ctx) { + public void tick(TickableVisual.Context context) { PartialModel handPose = blockEntity.getHandPose(); if (currentHand != handPose) { @@ -80,7 +80,7 @@ public class DeployerVisual extends ShaftVisual implements } @Override - public void beginFrame(VisualFrameContext ctx) { + public void beginFrame(DynamicVisual.Context ctx) { float newProgress = getProgress(ctx.partialTick()); if (Mth.equal(newProgress, progress)) return; diff --git a/src/main/java/com/simibubi/create/content/kinetics/flywheel/FlywheelVisual.java b/src/main/java/com/simibubi/create/content/kinetics/flywheel/FlywheelVisual.java index 438f29cb2..096587226 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/flywheel/FlywheelVisual.java +++ b/src/main/java/com/simibubi/create/content/kinetics/flywheel/FlywheelVisual.java @@ -3,7 +3,7 @@ package com.simibubi.create.content.kinetics.flywheel; import java.util.function.Consumer; import com.jozufozu.flywheel.api.instance.Instance; -import com.jozufozu.flywheel.api.visual.VisualFrameContext; +import com.jozufozu.flywheel.api.visual.DynamicVisual; import com.jozufozu.flywheel.api.visualization.VisualizationContext; import com.jozufozu.flywheel.lib.instance.InstanceTypes; import com.jozufozu.flywheel.lib.instance.TransformedInstance; @@ -36,7 +36,7 @@ public class FlywheelVisual extends KineticBlockEntityVisual implemen } @Override - public void beginFrame(VisualFrameContext ctx) { + public void beginFrame(DynamicVisual.Context ctx) { if (Mth.equal(blockEntity.prevDialState, blockEntity.dialState)) return; diff --git a/src/main/java/com/simibubi/create/content/kinetics/gearbox/GearboxVisual.java b/src/main/java/com/simibubi/create/content/kinetics/gearbox/GearboxVisual.java index aafca8a6a..95b668e46 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/gearbox/GearboxVisual.java +++ b/src/main/java/com/simibubi/create/content/kinetics/gearbox/GearboxVisual.java @@ -47,8 +47,7 @@ public class GearboxVisual extends KineticBlockEntityVisual .setRotationalSpeed(getSpeed(direction)) .setRotationOffset(getRotationOffset(axis)).setColor(blockEntity) .setPosition(getVisualPosition()) - .setBlockLight(blockLight) - .setSkyLight(skyLight) + .light(blockLight, skyLight) .setChanged(); keys.put(direction, key); diff --git a/src/main/java/com/simibubi/create/content/kinetics/mechanicalArm/ArmVisual.java b/src/main/java/com/simibubi/create/content/kinetics/mechanicalArm/ArmVisual.java index 4a618079b..72ed65618 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/mechanicalArm/ArmVisual.java +++ b/src/main/java/com/simibubi/create/content/kinetics/mechanicalArm/ArmVisual.java @@ -6,7 +6,7 @@ import java.util.function.Consumer; import com.google.common.collect.Lists; import com.jozufozu.flywheel.api.instance.Instance; import com.jozufozu.flywheel.api.model.Model; -import com.jozufozu.flywheel.api.visual.VisualFrameContext; +import com.jozufozu.flywheel.api.visual.DynamicVisual; import com.jozufozu.flywheel.api.visualization.VisualizationContext; import com.jozufozu.flywheel.lib.instance.AbstractInstance; import com.jozufozu.flywheel.lib.instance.InstanceTypes; @@ -70,7 +70,7 @@ public class ArmVisual extends SingleRotatingVisual implements S } @Override - public void beginFrame(VisualFrameContext ctx) { + public void beginFrame(DynamicVisual.Context ctx) { if (blockEntity.phase == ArmBlockEntity.Phase.DANCING && blockEntity.getSpeed() != 0) { animateRave(ctx.partialTick()); firstRender = true; diff --git a/src/main/java/com/simibubi/create/content/kinetics/mixer/MixerVisual.java b/src/main/java/com/simibubi/create/content/kinetics/mixer/MixerVisual.java index 9108d03f1..d64cce41e 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/mixer/MixerVisual.java +++ b/src/main/java/com/simibubi/create/content/kinetics/mixer/MixerVisual.java @@ -4,7 +4,7 @@ import java.util.function.Consumer; import com.jozufozu.flywheel.api.instance.Instance; import com.jozufozu.flywheel.api.model.Model; -import com.jozufozu.flywheel.api.visual.VisualFrameContext; +import com.jozufozu.flywheel.api.visual.DynamicVisual; import com.jozufozu.flywheel.api.visualization.VisualizationContext; import com.jozufozu.flywheel.lib.instance.InstanceTypes; import com.jozufozu.flywheel.lib.instance.OrientedInstance; @@ -49,7 +49,7 @@ public class MixerVisual extends EncasedCogVisual implements SimpleDynamicVisual } @Override - public void beginFrame(VisualFrameContext ctx) { + public void beginFrame(DynamicVisual.Context ctx) { animate(ctx.partialTick()); } diff --git a/src/main/java/com/simibubi/create/content/kinetics/press/PressVisual.java b/src/main/java/com/simibubi/create/content/kinetics/press/PressVisual.java index 1b548a5e5..807441bf9 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/press/PressVisual.java +++ b/src/main/java/com/simibubi/create/content/kinetics/press/PressVisual.java @@ -5,7 +5,7 @@ import java.util.function.Consumer; import org.joml.Quaternionf; import com.jozufozu.flywheel.api.instance.Instance; -import com.jozufozu.flywheel.api.visual.VisualFrameContext; +import com.jozufozu.flywheel.api.visual.DynamicVisual; import com.jozufozu.flywheel.api.visualization.VisualizationContext; import com.jozufozu.flywheel.lib.instance.InstanceTypes; import com.jozufozu.flywheel.lib.instance.OrientedInstance; @@ -40,7 +40,7 @@ public class PressVisual extends ShaftVisual impleme } @Override - public void beginFrame(VisualFrameContext ctx) { + public void beginFrame(DynamicVisual.Context ctx) { transformModels(ctx.partialTick()); } diff --git a/src/main/java/com/simibubi/create/content/kinetics/steamEngine/SteamEngineVisual.java b/src/main/java/com/simibubi/create/content/kinetics/steamEngine/SteamEngineVisual.java index 1deae7fe4..e7b7fff79 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/steamEngine/SteamEngineVisual.java +++ b/src/main/java/com/simibubi/create/content/kinetics/steamEngine/SteamEngineVisual.java @@ -3,7 +3,7 @@ package com.simibubi.create.content.kinetics.steamEngine; import java.util.function.Consumer; import com.jozufozu.flywheel.api.instance.Instance; -import com.jozufozu.flywheel.api.visual.VisualFrameContext; +import com.jozufozu.flywheel.api.visual.DynamicVisual; import com.jozufozu.flywheel.api.visualization.VisualizationContext; import com.jozufozu.flywheel.lib.instance.InstanceTypes; import com.jozufozu.flywheel.lib.instance.TransformedInstance; @@ -36,7 +36,7 @@ public class SteamEngineVisual extends AbstractBlockEntityVisual extends KineticBl dir = state.getValue(WaterWheelBlock.FACING); } PoseStack transform = CachedBufferer.rotateToFaceVertical(dir).get(); - return new BakedModelBuilder(model) + return BakedModelBuilder.create(model) .poseStack(transform) .build(); } diff --git a/src/main/java/com/simibubi/create/content/logistics/depot/EjectorVisual.java b/src/main/java/com/simibubi/create/content/logistics/depot/EjectorVisual.java index f79996aa7..8e210f1e9 100644 --- a/src/main/java/com/simibubi/create/content/logistics/depot/EjectorVisual.java +++ b/src/main/java/com/simibubi/create/content/logistics/depot/EjectorVisual.java @@ -3,7 +3,7 @@ package com.simibubi.create.content.logistics.depot; import java.util.function.Consumer; import com.jozufozu.flywheel.api.instance.Instance; -import com.jozufozu.flywheel.api.visual.VisualFrameContext; +import com.jozufozu.flywheel.api.visual.DynamicVisual; import com.jozufozu.flywheel.api.visualization.VisualizationContext; import com.jozufozu.flywheel.lib.instance.InstanceTypes; import com.jozufozu.flywheel.lib.instance.TransformedInstance; @@ -32,7 +32,7 @@ public class EjectorVisual extends ShaftVisual implements Si } @Override - public void beginFrame(VisualFrameContext ctx) { + public void beginFrame(DynamicVisual.Context ctx) { float lidProgress = getLidProgress(ctx.partialTick()); if (lidProgress == lastProgress) { diff --git a/src/main/java/com/simibubi/create/content/logistics/flwdata/FlapInstance.java b/src/main/java/com/simibubi/create/content/logistics/flwdata/FlapInstance.java index 1ef7599b3..d9db60738 100644 --- a/src/main/java/com/simibubi/create/content/logistics/flwdata/FlapInstance.java +++ b/src/main/java/com/simibubi/create/content/logistics/flwdata/FlapInstance.java @@ -17,6 +17,7 @@ public class FlapInstance extends AbstractInstance implements FlatLit { public float z; public byte blockLight; public byte skyLight; + public int packedLight; public float segmentOffsetX; public float segmentOffsetY; public float segmentOffsetZ; @@ -49,22 +50,16 @@ public class FlapInstance extends AbstractInstance implements FlatLit { } @Override - public FlapInstance setBlockLight(int blockLight) { - this.blockLight = (byte) (blockLight & 0xF); - return this; + public FlapInstance light(int blockLight, int skyLight) { + return this.light(LightTexture.pack(blockLight, skyLight)); } @Override - public FlapInstance setSkyLight(int skyLight) { - this.skyLight = (byte) (skyLight & 0xF); + public FlapInstance light(int packedLight) { + this.packedLight = packedLight; return this; } - @Override - public int getPackedLight() { - return LightTexture.pack(this.blockLight, this.skyLight); - } - public FlapInstance setSegmentOffset(float x, float y, float z) { this.segmentOffsetX = x; this.segmentOffsetY = y; diff --git a/src/main/java/com/simibubi/create/content/logistics/funnel/FunnelVisual.java b/src/main/java/com/simibubi/create/content/logistics/funnel/FunnelVisual.java index a8c729326..9f3fb3c54 100644 --- a/src/main/java/com/simibubi/create/content/logistics/funnel/FunnelVisual.java +++ b/src/main/java/com/simibubi/create/content/logistics/funnel/FunnelVisual.java @@ -5,7 +5,7 @@ import java.util.function.Consumer; import com.jozufozu.flywheel.api.instance.Instance; import com.jozufozu.flywheel.api.instance.Instancer; -import com.jozufozu.flywheel.api.visual.VisualFrameContext; +import com.jozufozu.flywheel.api.visual.DynamicVisual; import com.jozufozu.flywheel.api.visualization.VisualizationContext; import com.jozufozu.flywheel.lib.instance.AbstractInstance; import com.jozufozu.flywheel.lib.model.Models; @@ -51,8 +51,7 @@ public class FunnelVisual extends AbstractBlockEntityVisual i key.setPosition(getVisualPosition()) .setSegmentOffset(segmentOffset, 0, -blockEntity.getFlapOffset()) - .setBlockLight(blockLight) - .setSkyLight(skyLight) + .light(blockLight, skyLight) .setHorizontalAngle(horizontalAngle) .setFlapness(flapness) .setFlapScale(-1) @@ -65,7 +64,7 @@ public class FunnelVisual extends AbstractBlockEntityVisual i } @Override - public void beginFrame(VisualFrameContext ctx) { + public void beginFrame(DynamicVisual.Context ctx) { if (flaps == null) return; float flapness = blockEntity.flap.getValue(ctx.partialTick()); diff --git a/src/main/java/com/simibubi/create/content/logistics/tunnel/BeltTunnelVisual.java b/src/main/java/com/simibubi/create/content/logistics/tunnel/BeltTunnelVisual.java index 31739cddf..05faf7e9e 100644 --- a/src/main/java/com/simibubi/create/content/logistics/tunnel/BeltTunnelVisual.java +++ b/src/main/java/com/simibubi/create/content/logistics/tunnel/BeltTunnelVisual.java @@ -8,7 +8,7 @@ import java.util.function.Consumer; import com.jozufozu.flywheel.api.instance.Instance; import com.jozufozu.flywheel.api.instance.Instancer; -import com.jozufozu.flywheel.api.visual.VisualFrameContext; +import com.jozufozu.flywheel.api.visual.DynamicVisual; import com.jozufozu.flywheel.api.visualization.VisualizationContext; import com.jozufozu.flywheel.lib.instance.AbstractInstance; import com.jozufozu.flywheel.lib.model.Models; @@ -54,8 +54,7 @@ public class BeltTunnelVisual extends AbstractBlockEntityVisual { LerpedFloat lerpedFloat = blockEntity.flaps.get(direction); if (lerpedFloat == null) diff --git a/src/main/java/com/simibubi/create/content/redstone/analogLever/AnalogLeverVisual.java b/src/main/java/com/simibubi/create/content/redstone/analogLever/AnalogLeverVisual.java index 7705d4bc6..e2140d3e4 100644 --- a/src/main/java/com/simibubi/create/content/redstone/analogLever/AnalogLeverVisual.java +++ b/src/main/java/com/simibubi/create/content/redstone/analogLever/AnalogLeverVisual.java @@ -3,7 +3,7 @@ package com.simibubi.create.content.redstone.analogLever; import java.util.function.Consumer; import com.jozufozu.flywheel.api.instance.Instance; -import com.jozufozu.flywheel.api.visual.VisualFrameContext; +import com.jozufozu.flywheel.api.visual.DynamicVisual; import com.jozufozu.flywheel.api.visualization.VisualizationContext; import com.jozufozu.flywheel.lib.instance.InstanceTypes; import com.jozufozu.flywheel.lib.instance.TransformedInstance; @@ -50,7 +50,7 @@ public class AnalogLeverVisual extends AbstractBlockEntityVisual { @@ -179,14 +182,11 @@ public class TrackVisual extends AbstractBlockEntityVisual { void updateLight() { for (int i = 0; i < ties.length; i++) - ties[i].updateLight(level, tiesLightPos[i]) - .setChanged(); + TrackVisual.updateLight(ties[i], level, tiesLightPos[i]); for (int i = 0; i < left.length; i++) - left[i].updateLight(level, leftLightPos[i]) - .setChanged(); + TrackVisual.updateLight(left[i], level, leftLightPos[i]); for (int i = 0; i < right.length; i++) - right[i].updateLight(level, rightLightPos[i]) - .setChanged(); + TrackVisual.updateLight(right[i], level, rightLightPos[i]); if (girder != null) girder.updateLight(); } @@ -265,13 +265,11 @@ public class TrackVisual extends AbstractBlockEntityVisual { void updateLight() { beams.forEach(arr -> { for (int i = 0; i < arr.length; i++) - arr[i].updateLight(level, lightPos[i]) - .setChanged(); + TrackVisual.updateLight(arr[i], level, lightPos[i]); }); beamCaps.forEach(c -> c.forEach(arr -> { for (int i = 0; i < arr.length; i++) - arr[i].updateLight(level, lightPos[i]) - .setChanged(); + TrackVisual.updateLight(arr[i], level, lightPos[i]); })); } @@ -288,4 +286,9 @@ public class TrackVisual extends AbstractBlockEntityVisual { } } + + private static void updateLight(FlatLit instance, Level level, BlockPos pos) { + instance.light(level.getBrightness(LightLayer.BLOCK, pos), level.getBrightness(LightLayer.SKY, pos)) + .setChanged(); + } } diff --git a/src/main/java/com/simibubi/create/foundation/render/AllInstanceTypes.java b/src/main/java/com/simibubi/create/foundation/render/AllInstanceTypes.java index 4a4acd815..f209d511a 100644 --- a/src/main/java/com/simibubi/create/foundation/render/AllInstanceTypes.java +++ b/src/main/java/com/simibubi/create/foundation/render/AllInstanceTypes.java @@ -36,8 +36,8 @@ public class AllInstanceTypes { MemoryUtil.memPutByte(ptr + 1, instance.g); MemoryUtil.memPutByte(ptr + 2, instance.b); MemoryUtil.memPutByte(ptr + 3, instance.a); - MemoryUtil.memPutShort(ptr + 4, instance.blockLight); - MemoryUtil.memPutShort(ptr + 6, instance.skyLight); + MemoryUtil.memPutShort(ptr + 4, (short) (instance.packedLight & 0xFFFF)); + MemoryUtil.memPutShort(ptr + 6, (short) (instance.packedLight >> 16 & 0xFFFF)); MemoryUtil.memPutInt(ptr + 8, instance.overlay); MemoryUtil.memPutFloat(ptr + 12, instance.x); MemoryUtil.memPutFloat(ptr + 16, instance.y); @@ -70,8 +70,8 @@ public class AllInstanceTypes { MemoryUtil.memPutByte(ptr + 1, instance.g); MemoryUtil.memPutByte(ptr + 2, instance.b); MemoryUtil.memPutByte(ptr + 3, instance.a); - MemoryUtil.memPutShort(ptr + 4, instance.blockLight); - MemoryUtil.memPutShort(ptr + 6, instance.skyLight); + MemoryUtil.memPutShort(ptr + 4, (short) (instance.packedLight & 0xFFFF)); + MemoryUtil.memPutShort(ptr + 6, (short) (instance.packedLight >> 16 & 0xFFFF)); MemoryUtil.memPutInt(ptr + 8, instance.overlay); MemoryUtil.memPutFloat(ptr + 12, instance.x); MemoryUtil.memPutFloat(ptr + 16, instance.y); @@ -143,8 +143,8 @@ public class AllInstanceTypes { MemoryUtil.memPutFloat(ptr, instance.x); MemoryUtil.memPutFloat(ptr + 4, instance.y); MemoryUtil.memPutFloat(ptr + 8, instance.z); - MemoryUtil.memPutShort(ptr + 12, instance.blockLight); - MemoryUtil.memPutShort(ptr + 14, instance.skyLight); + MemoryUtil.memPutShort(ptr + 12, (short) (instance.packedLight & 0xFFFF)); + MemoryUtil.memPutShort(ptr + 14, (short) (instance.packedLight >> 16 & 0xFFFF)); MemoryUtil.memPutFloat(ptr + 16, instance.segmentOffsetX); MemoryUtil.memPutFloat(ptr + 20, instance.segmentOffsetY); MemoryUtil.memPutFloat(ptr + 24, instance.segmentOffsetZ); diff --git a/src/main/java/com/simibubi/create/foundation/render/BlockEntityRenderHelper.java b/src/main/java/com/simibubi/create/foundation/render/BlockEntityRenderHelper.java index 3e4bf0328..f9be8fa3a 100644 --- a/src/main/java/com/simibubi/create/foundation/render/BlockEntityRenderHelper.java +++ b/src/main/java/com/simibubi/create/foundation/render/BlockEntityRenderHelper.java @@ -8,8 +8,8 @@ import org.joml.Matrix4f; import org.joml.Vector4f; import com.jozufozu.flywheel.api.visualization.VisualizationManager; -import com.jozufozu.flywheel.impl.visualization.VisualizationHelper; import com.jozufozu.flywheel.lib.transform.TransformStack; +import com.jozufozu.flywheel.lib.visual.VisualizationHelper; import com.mojang.blaze3d.vertex.PoseStack; import com.simibubi.create.Create; import com.simibubi.create.foundation.utility.AnimationTickHolder; diff --git a/src/main/java/com/simibubi/create/foundation/render/VirtualRenderHelper.java b/src/main/java/com/simibubi/create/foundation/render/VirtualRenderHelper.java index 40626fe1a..41c4db856 100644 --- a/src/main/java/com/simibubi/create/foundation/render/VirtualRenderHelper.java +++ b/src/main/java/com/simibubi/create/foundation/render/VirtualRenderHelper.java @@ -7,7 +7,7 @@ import org.jetbrains.annotations.Nullable; import com.jozufozu.flywheel.api.model.Model; import com.jozufozu.flywheel.lib.model.ModelCache; import com.jozufozu.flywheel.lib.model.ModelUtil; -import com.jozufozu.flywheel.lib.model.baked.BakedModelBuilder; +import com.jozufozu.flywheel.lib.model.baked.ForgeBakedModelBuilder; import com.jozufozu.flywheel.lib.model.baked.VirtualEmptyBlockGetter; import com.mojang.blaze3d.vertex.BufferBuilder; import com.mojang.blaze3d.vertex.BufferBuilder.RenderedBuffer; @@ -29,7 +29,7 @@ public class VirtualRenderHelper { public static final ModelProperty VIRTUAL_PROPERTY = new ModelProperty<>(); public static final ModelData VIRTUAL_DATA = ModelData.builder().with(VIRTUAL_PROPERTY, true).build(); - private static final ModelCache VIRTUAL_BLOCKS = new ModelCache<>(state -> new BakedModelBuilder(ModelUtil.VANILLA_RENDERER.getBlockModel(state)).modelData(VIRTUAL_DATA).build()); + private static final ModelCache VIRTUAL_BLOCKS = new ModelCache<>(state -> new ForgeBakedModelBuilder(ModelUtil.VANILLA_RENDERER.getBlockModel(state)).modelData(VIRTUAL_DATA).build()); private static final ThreadLocal THREAD_LOCAL_OBJECTS = ThreadLocal.withInitial(ThreadLocalObjects::new); public static boolean isVirtual(ModelData data) { diff --git a/src/main/java/com/simibubi/create/infrastructure/debugInfo/DebugInformation.java b/src/main/java/com/simibubi/create/infrastructure/debugInfo/DebugInformation.java index d13d80e67..3d8b27655 100644 --- a/src/main/java/com/simibubi/create/infrastructure/debugInfo/DebugInformation.java +++ b/src/main/java/com/simibubi/create/infrastructure/debugInfo/DebugInformation.java @@ -9,7 +9,7 @@ import java.util.stream.Stream; import javax.annotation.Nullable; import com.google.common.collect.ImmutableMap; -import com.jozufozu.flywheel.Flywheel; +import com.jozufozu.flywheel.api.Flywheel; import com.jozufozu.flywheel.api.backend.BackendManager; import com.mojang.blaze3d.platform.GlUtil; import com.simibubi.create.Create; @@ -73,7 +73,12 @@ public class DebugInformation { DistExecutor.unsafeRunWhenOn(Dist.CLIENT, () -> () -> { DebugInfoSection.builder("Graphics") - .put("Flywheel Version", Flywheel.getVersion().toString()) + .put("Flywheel Version", ModList.get() + .getModContainerById(Flywheel.ID) + .map(c -> c.getModInfo() + .getVersion() + .toString()) + .orElse("None")) .put("Flywheel Backend", () -> BackendManager.getBackend().toString()) .put("OpenGL Renderer", GlUtil::getRenderer) .put("OpenGL Version", GlUtil::getOpenGLVersion) diff --git a/src/main/resources/assets/create/flywheel/instance/actor.vert b/src/main/resources/assets/create/flywheel/instance/actor.vert index 912baa876..5a8419112 100644 --- a/src/main/resources/assets/create/flywheel/instance/actor.vert +++ b/src/main/resources/assets/create/flywheel/instance/actor.vert @@ -9,5 +9,5 @@ void flw_instanceVertex(in FlwInstance instance) { flw_vertexPos.xyz = rotateByQuaternion(rotated - .5, instance.rotation) + instance.pos + .5; flw_vertexNormal = rotateByQuaternion(rotateByQuaternion(flw_vertexNormal, kineticRot), instance.rotation); - flw_vertexLight = instance.light / 15.; + flw_vertexLight = vec2(instance.light) / 256.; } diff --git a/src/main/resources/assets/create/flywheel/instance/belt.vert b/src/main/resources/assets/create/flywheel/instance/belt.vert index 15fb0061e..91180c79d 100644 --- a/src/main/resources/assets/create/flywheel/instance/belt.vert +++ b/src/main/resources/assets/create/flywheel/instance/belt.vert @@ -10,7 +10,7 @@ void flw_instanceVertex(in FlwInstance instance) { float scroll = fract(instance.speed * flw_renderTicks / (31.5 * 16.) + instance.offset) * scrollSize * instance.scrollMult; flw_vertexTexCoord = flw_vertexTexCoord - instance.sourceTexture + instance.scrollTexture.xy + vec2(0, scroll); - flw_vertexLight = instance.light / 15.; + flw_vertexLight = vec2(instance.light) / 256.; flw_vertexOverlay = instance.overlay; #if defined(DEBUG_RAINBOW) diff --git a/src/main/resources/assets/create/flywheel/instance/flap.vert b/src/main/resources/assets/create/flywheel/instance/flap.vert index 2ad5e1226..bc655cd44 100644 --- a/src/main/resources/assets/create/flywheel/instance/flap.vert +++ b/src/main/resources/assets/create/flywheel/instance/flap.vert @@ -25,5 +25,5 @@ void flw_instanceVertex(in FlwInstance flap) { flw_vertexPos.xyz = rotateByQuaternion(rotated - .5, orientation) + flap.instancePos + .5; flw_vertexNormal = rotateByQuaternion(rotateByQuaternion(flw_vertexNormal, flapRotation), orientation); - flw_vertexLight = flap.light / 15.; + flw_vertexLight = vec2(flap.light) / 256.; } diff --git a/src/main/resources/assets/create/flywheel/instance/rotating.vert b/src/main/resources/assets/create/flywheel/instance/rotating.vert index 17dfd15e7..9f5e7d23e 100644 --- a/src/main/resources/assets/create/flywheel/instance/rotating.vert +++ b/src/main/resources/assets/create/flywheel/instance/rotating.vert @@ -14,7 +14,7 @@ void flw_instanceVertex(in FlwInstance instance) { flw_vertexPos.xyz = worldPos.xyz + instance.pos + .5; flw_vertexNormal = spin * flw_vertexNormal; - flw_vertexLight = instance.light / 15.; + flw_vertexLight = vec2(instance.light) / 256.; flw_vertexOverlay = instance.overlay; #if defined(DEBUG_RAINBOW)