Simply implless

- Use split api/runtime flywheel jars
- Update instance types to use single packed light int
- Update visuals to use new context location
This commit is contained in:
Jozufozu 2024-05-20 21:31:55 -07:00
parent 79e1c8c950
commit 0d324ffdf9
45 changed files with 121 additions and 150 deletions

View file

@ -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}")

View file

@ -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

View file

@ -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();
}

View file

@ -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

View file

@ -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<PortableStorageInterfac
}
@Override
public void tick(VisualTickContext ctx) {
public void tick(TickableVisual.Context ctx) {
instance.tick(isLit());
}
@Override
public void beginFrame(VisualFrameContext ctx) {
public void beginFrame(DynamicVisual.Context ctx) {
instance.beginFrame(blockEntity.getExtensionDistance(ctx.partialTick()));
}

View file

@ -22,7 +22,7 @@ public class RollerActorVisual extends HarvesterActorVisual {
frame = instancerProvider.instancer(InstanceTypes.TRANSFORMED, Models.partial(AllPartialModels.ROLLER_FRAME))
.createInstance();
frame.setBlockLight(localBlockLight());
frame.light(localBlockLight(), 0);
}
@Override

View file

@ -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;
@ -47,7 +47,7 @@ public class BearingVisual<B extends KineticBlockEntity & IBearingBlockEntity> 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);

View file

@ -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

View file

@ -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<StickerBlockEntity>
}
@Override
public void beginFrame(VisualFrameContext ctx) {
public void beginFrame(DynamicVisual.Context ctx) {
float offset = blockEntity.piston.getValue(ctx.partialTick());
if (fakeWorld)

View file

@ -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<ElevatorPulleyBlockEntity>
}
@Override
public void beginFrame(VisualFrameContext ctx) {
public void beginFrame(DynamicVisual.Context ctx) {
}
}

View file

@ -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<GantryCarriageBlockEntity>
}
@Override
public void beginFrame(VisualFrameContext ctx) {
public void beginFrame(DynamicVisual.Context ctx) {
float cogAngle = getCogAngle();
if (Mth.equal(cogAngle, lastAngle)) return;

View file

@ -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<T extends KineticBlockEntity> 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<T extends KineticBlockEntity> 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<T extends KineticBlockEntity> 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<T extends KineticBlockEntity> extends
rope.get(i)
.setPosition(getVisualPosition())
.nudgePosition(0, -offset + i + 1, 0)
.setBlockLight(LightPacking.getBlock(packed))
.setSkyLight(LightPacking.getSky(packed))
.light(packed)
.setChanged();
}
} else {

View file

@ -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<E extends AbstractContraptionEntity> extends Abst
protected final VisualEmbedding embedding;
protected final List<BlockEntityVisual<?>> children = new ArrayList<>();
protected final List<ActorVisual> actors = new ArrayList<>();
protected final PlanMap<DynamicVisual, VisualFrameContext> dynamicVisuals = new PlanMap<>();
protected final PlanMap<TickableVisual, VisualTickContext> tickableVisuals = new PlanMap<>();
protected final PlanMap<DynamicVisual, DynamicVisual.Context> dynamicVisuals = new PlanMap<>();
protected final PlanMap<TickableVisual, TickableVisual.Context> tickableVisuals = new PlanMap<>();
protected VirtualRenderWorld virtualRenderWorld;
protected Model model;
protected TransformedInstance structure;
@ -83,7 +81,7 @@ public class ContraptionVisual<E extends AbstractContraptionEntity> 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<E extends AbstractContraptionEntity> extends Abst
}
@Override
public Plan<VisualTickContext> planTick() {
public Plan<TickableVisual.Context> planTick() {
return NestedPlan.of(
ForEachPlan.of(() -> actors, ActorVisual::tick),
tickableVisuals
@ -163,7 +161,7 @@ public class ContraptionVisual<E extends AbstractContraptionEntity> extends Abst
}
@Override
public Plan<VisualFrameContext> planFrame() {
public Plan<DynamicVisual.Context> planFrame() {
return NestedPlan.of(
RunnablePlan.of(this::beginFrame),
ForEachPlan.of(() -> actors, ActorVisual::beginFrame),
@ -171,7 +169,7 @@ public class ContraptionVisual<E extends AbstractContraptionEntity> extends Abst
);
}
protected void beginFrame(VisualFrameContext context) {
protected void beginFrame(DynamicVisual.Context context) {
var partialTick = context.partialTick();
setEmbeddingMatrices(partialTick);

View file

@ -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<ToolboxBlockEntity>
}
@Override
public void beginFrame(VisualFrameContext ctx) {
public void beginFrame(DynamicVisual.Context ctx) {
float partialTicks = ctx.partialTick();
float lidAngle = blockEntity.lid.getValue(partialTicks);

View file

@ -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<FluidValveBlockEntity> impleme
}
@Override
public void beginFrame(VisualFrameContext ctx) {
public void beginFrame(DynamicVisual.Context ctx) {
if (blockEntity.pointer.settled() && settled)
return;

View file

@ -164,8 +164,7 @@ public class BeltVisual extends KineticBlockEntityVisual<BeltBlockEntity> {
.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;

View file

@ -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<HandCrankBlockEntity>
}
@Override
public void beginFrame(VisualFrameContext ctx) {
public void beginFrame(DynamicVisual.Context ctx) {
if (crank == null)
return;

View file

@ -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

View file

@ -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<DeployerBlockEntity> 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<DeployerBlockEntity> implements
}
@Override
public void beginFrame(VisualFrameContext ctx) {
public void beginFrame(DynamicVisual.Context ctx) {
float newProgress = getProgress(ctx.partialTick());
if (Mth.equal(newProgress, progress)) return;

View file

@ -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<FlywheelBlockEntity
}
@Override
public void beginFrame(VisualFrameContext ctx) {
public void beginFrame(DynamicVisual.Context ctx) {
float partialTicks = ctx.partialTick();

View file

@ -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.InstanceTypes;
import com.jozufozu.flywheel.lib.instance.TransformedInstance;
@ -63,7 +63,7 @@ public abstract class GaugeVisual extends ShaftVisual<GaugeBlockEntity> implemen
}
@Override
public void beginFrame(VisualFrameContext ctx) {
public void beginFrame(DynamicVisual.Context ctx) {
if (Mth.equal(blockEntity.prevDialState, blockEntity.dialState))
return;

View file

@ -47,8 +47,7 @@ public class GearboxVisual extends KineticBlockEntityVisual<GearboxBlockEntity>
.setRotationalSpeed(getSpeed(direction))
.setRotationOffset(getRotationOffset(axis)).setColor(blockEntity)
.setPosition(getVisualPosition())
.setBlockLight(blockLight)
.setSkyLight(skyLight)
.light(blockLight, skyLight)
.setChanged();
keys.put(direction, key);

View file

@ -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<ArmBlockEntity> 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;

View file

@ -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());
}

View file

@ -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<MechanicalPressBlockEntity> impleme
}
@Override
public void beginFrame(VisualFrameContext ctx) {
public void beginFrame(DynamicVisual.Context ctx) {
transformModels(ctx.partialTick());
}

View file

@ -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<SteamEngineBloc
}
@Override
public void beginFrame(VisualFrameContext ctx) {
public void beginFrame(DynamicVisual.Context ctx) {
Float angle = blockEntity.getTargetAngle();
if (angle == null) {
piston.setEmptyTransform().setChanged();

View file

@ -86,7 +86,7 @@ public class WaterWheelVisual<T extends WaterWheelBlockEntity> extends KineticBl
dir = state.getValue(WaterWheelBlock.FACING);
}
PoseStack transform = CachedBufferer.rotateToFaceVertical(dir).get();
return new BakedModelBuilder(model)
return BakedModelBuilder.create(model)
.poseStack(transform)
.build();
}

View file

@ -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<EjectorBlockEntity> implements Si
}
@Override
public void beginFrame(VisualFrameContext ctx) {
public void beginFrame(DynamicVisual.Context ctx) {
float lidProgress = getLidProgress(ctx.partialTick());
if (lidProgress == lastProgress) {

View file

@ -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;

View file

@ -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<FunnelBlockEntity> 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<FunnelBlockEntity> i
}
@Override
public void beginFrame(VisualFrameContext ctx) {
public void beginFrame(DynamicVisual.Context ctx) {
if (flaps == null) return;
float flapness = blockEntity.flap.getValue(ctx.partialTick());

View file

@ -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<BeltTunnelBlockE
key.setPosition(getVisualPosition())
.setSegmentOffset(segmentOffset, 0, 0)
.setBlockLight(blockLight)
.setSkyLight(skyLight)
.light(blockLight, skyLight)
.setHorizontalAngle(horizontalAngle)
.setFlapness(flapness)
.setFlapScale(flapScale)
@ -86,7 +85,7 @@ public class BeltTunnelVisual extends AbstractBlockEntityVisual<BeltTunnelBlockE
}
@Override
public void beginFrame(VisualFrameContext ctx) {
public void beginFrame(DynamicVisual.Context ctx) {
tunnelFlaps.forEach((direction, keys) -> {
LerpedFloat lerpedFloat = blockEntity.flaps.get(direction);
if (lerpedFloat == null)

View file

@ -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<AnalogLeverBloc
}
@Override
public void beginFrame(VisualFrameContext ctx) {
public void beginFrame(DynamicVisual.Context ctx) {
if (!blockEntity.clientState.settled())
animateLever(ctx.partialTick());
}

View file

@ -3,7 +3,7 @@ package com.simibubi.create.content.redstone.diodes;
import java.util.function.Consumer;
import com.jozufozu.flywheel.api.instance.Instance;
import com.jozufozu.flywheel.api.visual.VisualTickContext;
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.TransformedInstance;
@ -33,7 +33,7 @@ public class BrassDiodeVisual extends AbstractBlockEntityVisual<BrassDiodeBlockE
}
@Override
public void tick(VisualTickContext ctx) {
public void tick(TickableVisual.Context context) {
if (previousState == blockEntity.state) return;
indicator.setColor(getColor());

View file

@ -3,7 +3,7 @@ package com.simibubi.create.content.schematics.cannon;
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;
@ -29,7 +29,7 @@ public class SchematicannonVisual extends AbstractBlockEntityVisual<Schematicann
}
@Override
public void beginFrame(VisualFrameContext ctx) {
public void beginFrame(DynamicVisual.Context ctx) {
float partialTicks = ctx.partialTick();
double[] cannonAngles = SchematicannonRenderer.getCannonAngles(blockEntity, pos, partialTicks);

View file

@ -341,13 +341,15 @@ public abstract class BogeyRenderer {
public BogeyModelData setTransform(PoseStack ms) {
if (this.transform instanceof TransformedInstance model)
model.setTransform(ms);
model.setTransform(ms)
.setChanged();
return this;
}
public BogeyModelData setEmptyTransform() {
if (this.transform instanceof TransformedInstance model)
model.setEmptyTransform();
model.setEmptyTransform()
.setChanged();
return this;
}
@ -359,7 +361,8 @@ public abstract class BogeyRenderer {
public BogeyModelData updateLight(int blockLight, int skyLight) {
if (this.transform instanceof TransformedInstance model)
model.setBlockLight(blockLight).setSkyLight(skyLight);
model.light(blockLight, skyLight)
.setChanged();
return this;
}

View file

@ -2,7 +2,7 @@ package com.simibubi.create.content.trains.entity;
import org.joml.Vector3f;
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.transform.TransformStack;
import com.mojang.blaze3d.vertex.PoseStack;
@ -44,7 +44,7 @@ public class CarriageContraptionVisual extends ContraptionVisual<CarriageContrap
}
@Override
public void beginFrame(VisualFrameContext ctx) {
public void beginFrame(DynamicVisual.Context ctx) {
super.beginFrame(ctx);
if (bogeys == null) {
if (entity.isReadyForRender())

View file

@ -9,6 +9,7 @@ import javax.annotation.Nullable;
import com.jozufozu.flywheel.api.instance.Instance;
import com.jozufozu.flywheel.api.visualization.VisualizationContext;
import com.jozufozu.flywheel.lib.instance.FlatLit;
import com.jozufozu.flywheel.lib.instance.InstanceTypes;
import com.jozufozu.flywheel.lib.instance.TransformedInstance;
import com.jozufozu.flywheel.lib.model.Models;
@ -24,6 +25,8 @@ import com.simibubi.create.foundation.utility.Iterate;
import net.minecraft.core.BlockPos;
import net.minecraft.core.SectionPos;
import net.minecraft.world.level.Level;
import net.minecraft.world.level.LightLayer;
public class TrackVisual extends AbstractBlockEntityVisual<TrackBlockEntity> {
@ -179,14 +182,11 @@ public class TrackVisual extends AbstractBlockEntityVisual<TrackBlockEntity> {
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<TrackBlockEntity> {
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<TrackBlockEntity> {
}
}
private static void updateLight(FlatLit instance, Level level, BlockPos pos) {
instance.light(level.getBrightness(LightLayer.BLOCK, pos), level.getBrightness(LightLayer.SKY, pos))
.setChanged();
}
}

View file

@ -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);

View file

@ -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;

View file

@ -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<Boolean> VIRTUAL_PROPERTY = new ModelProperty<>();
public static final ModelData VIRTUAL_DATA = ModelData.builder().with(VIRTUAL_PROPERTY, true).build();
private static final ModelCache<BlockState> VIRTUAL_BLOCKS = new ModelCache<>(state -> new BakedModelBuilder(ModelUtil.VANILLA_RENDERER.getBlockModel(state)).modelData(VIRTUAL_DATA).build());
private static final ModelCache<BlockState> VIRTUAL_BLOCKS = new ModelCache<>(state -> new ForgeBakedModelBuilder(ModelUtil.VANILLA_RENDERER.getBlockModel(state)).modelData(VIRTUAL_DATA).build());
private static final ThreadLocal<ThreadLocalObjects> THREAD_LOCAL_OBJECTS = ThreadLocal.withInitial(ThreadLocalObjects::new);
public static boolean isVirtual(ModelData data) {

View file

@ -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)

View file

@ -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.;
}

View file

@ -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)

View file

@ -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.;
}

View file

@ -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)