mirror of
https://github.com/Creators-of-Create/Create.git
synced 2025-02-15 14:55:01 +01:00
Rolling over a bump
- Bump flywheel version - Make all visuals use instancerProvider() method - Fix ModelCache usage - Use PosedInstance in BogeyRenderer
This commit is contained in:
parent
cafd877802
commit
cdc41b18cc
35 changed files with 88 additions and 86 deletions
|
@ -23,7 +23,7 @@ use_parchment = true
|
||||||
# dependency versions
|
# dependency versions
|
||||||
registrate_version = MC1.20-1.3.3
|
registrate_version = MC1.20-1.3.3
|
||||||
flywheel_minecraft_version = 1.20.1
|
flywheel_minecraft_version = 1.20.1
|
||||||
flywheel_version = 1.0.0-beta-113
|
flywheel_version = 1.0.0-beta-134
|
||||||
jei_minecraft_version = 1.20.1
|
jei_minecraft_version = 1.20.1
|
||||||
jei_version = 15.10.0.39
|
jei_version = 15.10.0.39
|
||||||
curios_minecraft_version = 1.20.1
|
curios_minecraft_version = 1.20.1
|
||||||
|
|
|
@ -38,7 +38,7 @@ public class BearingVisual<B extends KineticBlockEntity & IBearingBlockEntity> e
|
||||||
PartialModel top =
|
PartialModel top =
|
||||||
blockEntity.isWoodenTop() ? AllPartialModels.BEARING_TOP_WOODEN : AllPartialModels.BEARING_TOP;
|
blockEntity.isWoodenTop() ? AllPartialModels.BEARING_TOP_WOODEN : AllPartialModels.BEARING_TOP;
|
||||||
|
|
||||||
topInstance = instancerProvider.instancer(InstanceTypes.ORIENTED, Models.partial(top))
|
topInstance = instancerProvider().instancer(InstanceTypes.ORIENTED, Models.partial(top))
|
||||||
.createInstance();
|
.createInstance();
|
||||||
|
|
||||||
topInstance.position(getVisualPosition())
|
topInstance.position(getVisualPosition())
|
||||||
|
|
|
@ -29,7 +29,7 @@ public class StickerVisual extends AbstractBlockEntityVisual<StickerBlockEntity>
|
||||||
public StickerVisual(VisualizationContext context, StickerBlockEntity blockEntity, float partialTick) {
|
public StickerVisual(VisualizationContext context, StickerBlockEntity blockEntity, float partialTick) {
|
||||||
super(context, blockEntity, partialTick);
|
super(context, blockEntity, partialTick);
|
||||||
|
|
||||||
head = instancerProvider.instancer(InstanceTypes.TRANSFORMED, Models.partial(AllPartialModels.STICKER_HEAD)).createInstance();
|
head = instancerProvider().instancer(InstanceTypes.TRANSFORMED, Models.partial(AllPartialModels.STICKER_HEAD)).createInstance();
|
||||||
|
|
||||||
fakeWorld = blockEntity.getLevel() != Minecraft.getInstance().level;
|
fakeWorld = blockEntity.getLevel() != Minecraft.getInstance().level;
|
||||||
facing = blockState.getValue(StickerBlock.FACING);
|
facing = blockState.getValue(StickerBlock.FACING);
|
||||||
|
|
|
@ -34,7 +34,7 @@ public class GantryCarriageVisual extends ShaftVisual<GantryCarriageBlockEntity>
|
||||||
public GantryCarriageVisual(VisualizationContext context, GantryCarriageBlockEntity blockEntity, float partialTick) {
|
public GantryCarriageVisual(VisualizationContext context, GantryCarriageBlockEntity blockEntity, float partialTick) {
|
||||||
super(context, blockEntity, partialTick);
|
super(context, blockEntity, partialTick);
|
||||||
|
|
||||||
gantryCogs = instancerProvider.instancer(InstanceTypes.TRANSFORMED, Models.partial(AllPartialModels.GANTRY_COGS))
|
gantryCogs = instancerProvider().instancer(InstanceTypes.TRANSFORMED, Models.partial(AllPartialModels.GANTRY_COGS))
|
||||||
.createInstance();
|
.createInstance();
|
||||||
|
|
||||||
facing = blockState.getValue(GantryCarriageBlock.FACING);
|
facing = blockState.getValue(GantryCarriageBlock.FACING);
|
||||||
|
|
|
@ -16,27 +16,27 @@ public class HosePulleyVisual extends AbstractPulleyVisual<HosePulleyBlockEntity
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected Instancer<OrientedInstance> getRopeModel() {
|
protected Instancer<OrientedInstance> getRopeModel() {
|
||||||
return instancerProvider.instancer(InstanceTypes.ORIENTED, Models.partial(AllPartialModels.HOSE));
|
return instancerProvider().instancer(InstanceTypes.ORIENTED, Models.partial(AllPartialModels.HOSE));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected Instancer<OrientedInstance> getMagnetModel() {
|
protected Instancer<OrientedInstance> getMagnetModel() {
|
||||||
return instancerProvider.instancer(InstanceTypes.ORIENTED, Models.partial(AllPartialModels.HOSE_MAGNET));
|
return instancerProvider().instancer(InstanceTypes.ORIENTED, Models.partial(AllPartialModels.HOSE_MAGNET));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected Instancer<OrientedInstance> getHalfMagnetModel() {
|
protected Instancer<OrientedInstance> getHalfMagnetModel() {
|
||||||
return instancerProvider.instancer(InstanceTypes.ORIENTED, Models.partial(AllPartialModels.HOSE_HALF_MAGNET));
|
return instancerProvider().instancer(InstanceTypes.ORIENTED, Models.partial(AllPartialModels.HOSE_HALF_MAGNET));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected Instancer<OrientedInstance> getCoilModel() {
|
protected Instancer<OrientedInstance> getCoilModel() {
|
||||||
return instancerProvider.instancer(InstanceTypes.ORIENTED, Models.partial(AllPartialModels.HOSE_COIL, rotatingAbout));
|
return instancerProvider().instancer(InstanceTypes.ORIENTED, Models.partial(AllPartialModels.HOSE_COIL, rotatingAbout));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected Instancer<OrientedInstance> getHalfRopeModel() {
|
protected Instancer<OrientedInstance> getHalfRopeModel() {
|
||||||
return instancerProvider.instancer(InstanceTypes.ORIENTED, Models.partial(AllPartialModels.HOSE_HALF));
|
return instancerProvider().instancer(InstanceTypes.ORIENTED, Models.partial(AllPartialModels.HOSE_HALF));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -18,27 +18,27 @@ public class RopePulleyVisual extends AbstractPulleyVisual<PulleyBlockEntity> {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected Instancer<OrientedInstance> getRopeModel() {
|
protected Instancer<OrientedInstance> getRopeModel() {
|
||||||
return instancerProvider.instancer(InstanceTypes.ORIENTED, VirtualRenderHelper.blockModel(AllBlocks.ROPE.getDefaultState()));
|
return instancerProvider().instancer(InstanceTypes.ORIENTED, VirtualRenderHelper.blockModel(AllBlocks.ROPE.getDefaultState()));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected Instancer<OrientedInstance> getMagnetModel() {
|
protected Instancer<OrientedInstance> getMagnetModel() {
|
||||||
return instancerProvider.instancer(InstanceTypes.ORIENTED, VirtualRenderHelper.blockModel(AllBlocks.PULLEY_MAGNET.getDefaultState()));
|
return instancerProvider().instancer(InstanceTypes.ORIENTED, VirtualRenderHelper.blockModel(AllBlocks.PULLEY_MAGNET.getDefaultState()));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected Instancer<OrientedInstance> getHalfMagnetModel() {
|
protected Instancer<OrientedInstance> getHalfMagnetModel() {
|
||||||
return instancerProvider.instancer(InstanceTypes.ORIENTED, Models.partial(AllPartialModels.ROPE_HALF_MAGNET));
|
return instancerProvider().instancer(InstanceTypes.ORIENTED, Models.partial(AllPartialModels.ROPE_HALF_MAGNET));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected Instancer<OrientedInstance> getCoilModel() {
|
protected Instancer<OrientedInstance> getCoilModel() {
|
||||||
return instancerProvider.instancer(InstanceTypes.ORIENTED, Models.partial(AllPartialModels.ROPE_COIL, rotatingAbout));
|
return instancerProvider().instancer(InstanceTypes.ORIENTED, Models.partial(AllPartialModels.ROPE_COIL, rotatingAbout));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected Instancer<OrientedInstance> getHalfRopeModel() {
|
protected Instancer<OrientedInstance> getHalfRopeModel() {
|
||||||
return instancerProvider.instancer(InstanceTypes.ORIENTED, Models.partial(AllPartialModels.ROPE_HALF));
|
return instancerProvider().instancer(InstanceTypes.ORIENTED, Models.partial(AllPartialModels.ROPE_HALF));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -93,6 +93,8 @@ public class ContraptionVisual<E extends AbstractContraptionEntity> extends Abst
|
||||||
.instancer(InstanceTypes.TRANSFORMED, model)
|
.instancer(InstanceTypes.TRANSFORMED, model)
|
||||||
.createInstance();
|
.createInstance();
|
||||||
|
|
||||||
|
structure.setChanged();
|
||||||
|
|
||||||
for (BlockEntity be : contraption.getRenderedBEs()) {
|
for (BlockEntity be : contraption.getRenderedBEs()) {
|
||||||
setupVisualizer(be, partialTick);
|
setupVisualizer(be, partialTick);
|
||||||
}
|
}
|
||||||
|
|
|
@ -28,10 +28,10 @@ public class ToolBoxVisual extends AbstractBlockEntityVisual<ToolboxBlockEntity>
|
||||||
facing = blockState.getValue(ToolboxBlock.FACING)
|
facing = blockState.getValue(ToolboxBlock.FACING)
|
||||||
.getOpposite();
|
.getOpposite();
|
||||||
|
|
||||||
Instancer<TransformedInstance> drawerModel = instancerProvider.instancer(InstanceTypes.TRANSFORMED, Models.partial(AllPartialModels.TOOLBOX_DRAWER));
|
Instancer<TransformedInstance> drawerModel = instancerProvider().instancer(InstanceTypes.TRANSFORMED, Models.partial(AllPartialModels.TOOLBOX_DRAWER));
|
||||||
|
|
||||||
drawers = new TransformedInstance[]{drawerModel.createInstance(), drawerModel.createInstance()};
|
drawers = new TransformedInstance[]{drawerModel.createInstance(), drawerModel.createInstance()};
|
||||||
lid = instancerProvider.instancer(InstanceTypes.TRANSFORMED, Models.partial(AllPartialModels.TOOLBOX_LIDS.get(blockEntity.getColor())))
|
lid = instancerProvider().instancer(InstanceTypes.TRANSFORMED, Models.partial(AllPartialModels.TOOLBOX_LIDS.get(blockEntity.getColor())))
|
||||||
.createInstance();
|
.createInstance();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -41,7 +41,7 @@ public class FluidValveVisual extends ShaftVisual<FluidValveBlockEntity> impleme
|
||||||
pointerRotationOffset = twist ? 90 : 0;
|
pointerRotationOffset = twist ? 90 : 0;
|
||||||
settled = false;
|
settled = false;
|
||||||
|
|
||||||
pointer = instancerProvider.instancer(InstanceTypes.TRANSFORMED, Models.partial(AllPartialModels.FLUID_VALVE_POINTER)).createInstance();
|
pointer = instancerProvider().instancer(InstanceTypes.TRANSFORMED, Models.partial(AllPartialModels.FLUID_VALVE_POINTER)).createInstance();
|
||||||
|
|
||||||
transformPointer(partialTick);
|
transformPointer(partialTick);
|
||||||
}
|
}
|
||||||
|
|
|
@ -15,7 +15,7 @@ public class SingleRotatingVisual<T extends KineticBlockEntity> extends KineticB
|
||||||
|
|
||||||
public SingleRotatingVisual(VisualizationContext context, T blockEntity, float partialTick) {
|
public SingleRotatingVisual(VisualizationContext context, T blockEntity, float partialTick) {
|
||||||
super(context, blockEntity, partialTick);
|
super(context, blockEntity, partialTick);
|
||||||
rotatingModel = instancerProvider.instancer(AllInstanceTypes.ROTATING, model())
|
rotatingModel = instancerProvider().instancer(AllInstanceTypes.ROTATING, model())
|
||||||
.createInstance();
|
.createInstance();
|
||||||
setup(rotatingModel);
|
setup(rotatingModel);
|
||||||
}
|
}
|
||||||
|
|
|
@ -65,7 +65,7 @@ public class BeltVisual extends KineticBlockEntityVisual<BeltBlockEntity> {
|
||||||
PartialModel beltPartial = BeltRenderer.getBeltPartial(diagonal, start, end, bottom);
|
PartialModel beltPartial = BeltRenderer.getBeltPartial(diagonal, start, end, bottom);
|
||||||
SpriteShiftEntry spriteShift = BeltRenderer.getSpriteShiftEntry(color, diagonal, bottom);
|
SpriteShiftEntry spriteShift = BeltRenderer.getSpriteShiftEntry(color, diagonal, bottom);
|
||||||
|
|
||||||
Instancer<BeltInstance> beltModel = instancerProvider.instancer(AllInstanceTypes.BELT, Models.partial(beltPartial));
|
Instancer<BeltInstance> beltModel = instancerProvider().instancer(AllInstanceTypes.BELT, Models.partial(beltPartial));
|
||||||
|
|
||||||
keys.add(setup(beltModel.createInstance(), bottom, spriteShift));
|
keys.add(setup(beltModel.createInstance(), bottom, spriteShift));
|
||||||
|
|
||||||
|
@ -138,7 +138,7 @@ public class BeltVisual extends KineticBlockEntityVisual<BeltBlockEntity> {
|
||||||
msr.uncenter();
|
msr.uncenter();
|
||||||
});
|
});
|
||||||
|
|
||||||
return instancerProvider.instancer(AllInstanceTypes.ROTATING, model);
|
return instancerProvider().instancer(AllInstanceTypes.ROTATING, model);
|
||||||
}
|
}
|
||||||
|
|
||||||
private Direction getOrientation() {
|
private Direction getOrientation() {
|
||||||
|
|
|
@ -27,13 +27,13 @@ public class HandCrankVisual extends KineticBlockEntityVisual<HandCrankBlockEnti
|
||||||
facing = blockState.getValue(BlockStateProperties.FACING);
|
facing = blockState.getValue(BlockStateProperties.FACING);
|
||||||
Model model = blockEntity.getRenderedHandleInstance();
|
Model model = blockEntity.getRenderedHandleInstance();
|
||||||
|
|
||||||
crank = instancerProvider.instancer(InstanceTypes.TRANSFORMED, model)
|
crank = instancerProvider().instancer(InstanceTypes.TRANSFORMED, model)
|
||||||
.createInstance();
|
.createInstance();
|
||||||
|
|
||||||
rotateCrank(partialTick);
|
rotateCrank(partialTick);
|
||||||
|
|
||||||
if (blockEntity.shouldRenderShaft()) {
|
if (blockEntity.shouldRenderShaft()) {
|
||||||
rotatingModel = instancerProvider.instancer(AllInstanceTypes.ROTATING, VirtualRenderHelper.blockModel(blockState))
|
rotatingModel = instancerProvider().instancer(AllInstanceTypes.ROTATING, VirtualRenderHelper.blockModel(blockState))
|
||||||
.createInstance();
|
.createInstance();
|
||||||
setup(rotatingModel);
|
setup(rotatingModel);
|
||||||
}
|
}
|
||||||
|
|
|
@ -52,11 +52,11 @@ public class DeployerVisual extends ShaftVisual<DeployerBlockEntity> implements
|
||||||
xRot = facing == Direction.UP ? 270 : facing == Direction.DOWN ? 90 : 0;
|
xRot = facing == Direction.UP ? 270 : facing == Direction.DOWN ? 90 : 0;
|
||||||
zRot = rotatePole ? 90 : 0;
|
zRot = rotatePole ? 90 : 0;
|
||||||
|
|
||||||
pole = instancerProvider.instancer(InstanceTypes.ORIENTED, Models.partial(AllPartialModels.DEPLOYER_POLE)).createInstance();
|
pole = instancerProvider().instancer(InstanceTypes.ORIENTED, Models.partial(AllPartialModels.DEPLOYER_POLE)).createInstance();
|
||||||
|
|
||||||
currentHand = this.blockEntity.getHandPose();
|
currentHand = this.blockEntity.getHandPose();
|
||||||
|
|
||||||
hand = instancerProvider.instancer(InstanceTypes.ORIENTED, Models.partial(currentHand)).createInstance();
|
hand = instancerProvider().instancer(InstanceTypes.ORIENTED, Models.partial(currentHand)).createInstance();
|
||||||
|
|
||||||
progress = getProgress(partialTick);
|
progress = getProgress(partialTick);
|
||||||
updateRotation(pole, hand, yRot, xRot, zRot);
|
updateRotation(pole, hand, yRot, xRot, zRot);
|
||||||
|
@ -69,7 +69,7 @@ public class DeployerVisual extends ShaftVisual<DeployerBlockEntity> implements
|
||||||
|
|
||||||
if (currentHand != handPose) {
|
if (currentHand != handPose) {
|
||||||
currentHand = handPose;
|
currentHand = handPose;
|
||||||
instancerProvider.instancer(InstanceTypes.ORIENTED, Models.partial(currentHand))
|
instancerProvider().instancer(InstanceTypes.ORIENTED, Models.partial(currentHand))
|
||||||
.stealInstance(hand);
|
.stealInstance(hand);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -29,8 +29,8 @@ public class FanVisual extends KineticBlockEntityVisual<EncasedFanBlockEntity> {
|
||||||
direction = blockState.getValue(FACING);
|
direction = blockState.getValue(FACING);
|
||||||
|
|
||||||
opposite = direction.getOpposite();
|
opposite = direction.getOpposite();
|
||||||
shaft = instancerProvider.instancer(AllInstanceTypes.ROTATING, Models.partial(AllPartialModels.SHAFT_HALF, opposite)).createInstance();
|
shaft = instancerProvider().instancer(AllInstanceTypes.ROTATING, Models.partial(AllPartialModels.SHAFT_HALF, opposite)).createInstance();
|
||||||
fan = instancerProvider.instancer(AllInstanceTypes.ROTATING, Models.partial(AllPartialModels.ENCASED_FAN_INNER, opposite))
|
fan = instancerProvider().instancer(AllInstanceTypes.ROTATING, Models.partial(AllPartialModels.ENCASED_FAN_INNER, opposite))
|
||||||
.createInstance();
|
.createInstance();
|
||||||
|
|
||||||
setup(shaft);
|
setup(shaft);
|
||||||
|
|
|
@ -27,9 +27,9 @@ public class FlywheelVisual extends KineticBlockEntityVisual<FlywheelBlockEntity
|
||||||
public FlywheelVisual(VisualizationContext context, FlywheelBlockEntity blockEntity, float partialTick) {
|
public FlywheelVisual(VisualizationContext context, FlywheelBlockEntity blockEntity, float partialTick) {
|
||||||
super(context, blockEntity, partialTick);
|
super(context, blockEntity, partialTick);
|
||||||
|
|
||||||
shaft = setup(instancerProvider.instancer(AllInstanceTypes.ROTATING, VirtualRenderHelper.blockModel(shaft()))
|
shaft = setup(instancerProvider().instancer(AllInstanceTypes.ROTATING, VirtualRenderHelper.blockModel(shaft()))
|
||||||
.createInstance());
|
.createInstance());
|
||||||
wheel = instancerProvider.instancer(InstanceTypes.TRANSFORMED, VirtualRenderHelper.blockModel(blockState))
|
wheel = instancerProvider().instancer(InstanceTypes.TRANSFORMED, VirtualRenderHelper.blockModel(blockState))
|
||||||
.createInstance();
|
.createInstance();
|
||||||
|
|
||||||
animate(blockEntity.angle);
|
animate(blockEntity.angle);
|
||||||
|
|
|
@ -34,7 +34,7 @@ public abstract class GaugeVisual extends ShaftVisual<GaugeBlockEntity> implemen
|
||||||
|
|
||||||
GaugeBlock gaugeBlock = (GaugeBlock) blockState.getBlock();
|
GaugeBlock gaugeBlock = (GaugeBlock) blockState.getBlock();
|
||||||
|
|
||||||
Instancer<TransformedInstance> dialModel = instancerProvider.instancer(InstanceTypes.TRANSFORMED, Models.partial(AllPartialModels.GAUGE_DIAL));
|
Instancer<TransformedInstance> dialModel = instancerProvider().instancer(InstanceTypes.TRANSFORMED, Models.partial(AllPartialModels.GAUGE_DIAL));
|
||||||
Instancer<TransformedInstance> headModel = getHeadModel();
|
Instancer<TransformedInstance> headModel = getHeadModel();
|
||||||
|
|
||||||
var msr = TransformStack.of(ms);
|
var msr = TransformStack.of(ms);
|
||||||
|
@ -157,7 +157,7 @@ public abstract class GaugeVisual extends ShaftVisual<GaugeBlockEntity> implemen
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected Instancer<TransformedInstance> getHeadModel() {
|
protected Instancer<TransformedInstance> getHeadModel() {
|
||||||
return instancerProvider.instancer(InstanceTypes.TRANSFORMED, Models.partial(AllPartialModels.GAUGE_HEAD_SPEED));
|
return instancerProvider().instancer(InstanceTypes.TRANSFORMED, Models.partial(AllPartialModels.GAUGE_HEAD_SPEED));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -168,7 +168,7 @@ public abstract class GaugeVisual extends ShaftVisual<GaugeBlockEntity> implemen
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected Instancer<TransformedInstance> getHeadModel() {
|
protected Instancer<TransformedInstance> getHeadModel() {
|
||||||
return instancerProvider.instancer(InstanceTypes.TRANSFORMED, Models.partial(AllPartialModels.GAUGE_HEAD_STRESS));
|
return instancerProvider().instancer(InstanceTypes.TRANSFORMED, Models.partial(AllPartialModels.GAUGE_HEAD_STRESS));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -41,7 +41,7 @@ public class GearboxVisual extends KineticBlockEntityVisual<GearboxBlockEntity>
|
||||||
if (boxAxis == axis)
|
if (boxAxis == axis)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
RotatingInstance key = instancerProvider.instancer(AllInstanceTypes.ROTATING, Models.partial(AllPartialModels.SHAFT_HALF, direction))
|
RotatingInstance key = instancerProvider().instancer(AllInstanceTypes.ROTATING, Models.partial(AllPartialModels.SHAFT_HALF, direction))
|
||||||
.createInstance();
|
.createInstance();
|
||||||
|
|
||||||
key.setRotationAxis(axis)
|
key.setRotationAxis(axis)
|
||||||
|
|
|
@ -49,18 +49,18 @@ public class ArmVisual extends SingleRotatingVisual<ArmBlockEntity> implements S
|
||||||
public ArmVisual(VisualizationContext context, ArmBlockEntity blockEntity, float partialTick) {
|
public ArmVisual(VisualizationContext context, ArmBlockEntity blockEntity, float partialTick) {
|
||||||
super(context, blockEntity, partialTick);
|
super(context, blockEntity, partialTick);
|
||||||
|
|
||||||
base = instancerProvider.instancer(InstanceTypes.TRANSFORMED, Models.partial(AllPartialModels.ARM_BASE))
|
base = instancerProvider().instancer(InstanceTypes.TRANSFORMED, Models.partial(AllPartialModels.ARM_BASE))
|
||||||
.createInstance();
|
.createInstance();
|
||||||
lowerBody = instancerProvider.instancer(InstanceTypes.TRANSFORMED, Models.partial(AllPartialModels.ARM_LOWER_BODY))
|
lowerBody = instancerProvider().instancer(InstanceTypes.TRANSFORMED, Models.partial(AllPartialModels.ARM_LOWER_BODY))
|
||||||
.createInstance();
|
.createInstance();
|
||||||
upperBody = instancerProvider.instancer(InstanceTypes.TRANSFORMED, Models.partial(AllPartialModels.ARM_UPPER_BODY))
|
upperBody = instancerProvider().instancer(InstanceTypes.TRANSFORMED, Models.partial(AllPartialModels.ARM_UPPER_BODY))
|
||||||
.createInstance();
|
.createInstance();
|
||||||
claw = instancerProvider.instancer(InstanceTypes.TRANSFORMED, Models.partial(blockEntity.goggles ? AllPartialModels.ARM_CLAW_BASE_GOGGLES : AllPartialModels.ARM_CLAW_BASE))
|
claw = instancerProvider().instancer(InstanceTypes.TRANSFORMED, Models.partial(blockEntity.goggles ? AllPartialModels.ARM_CLAW_BASE_GOGGLES : AllPartialModels.ARM_CLAW_BASE))
|
||||||
.createInstance();
|
.createInstance();
|
||||||
|
|
||||||
TransformedInstance clawGrip1 = instancerProvider.instancer(InstanceTypes.TRANSFORMED, Models.partial(AllPartialModels.ARM_CLAW_GRIP_UPPER))
|
TransformedInstance clawGrip1 = instancerProvider().instancer(InstanceTypes.TRANSFORMED, Models.partial(AllPartialModels.ARM_CLAW_GRIP_UPPER))
|
||||||
.createInstance();
|
.createInstance();
|
||||||
TransformedInstance clawGrip2 = instancerProvider.instancer(InstanceTypes.TRANSFORMED, Models.partial(AllPartialModels.ARM_CLAW_GRIP_LOWER))
|
TransformedInstance clawGrip2 = instancerProvider().instancer(InstanceTypes.TRANSFORMED, Models.partial(AllPartialModels.ARM_CLAW_GRIP_LOWER))
|
||||||
.createInstance();
|
.createInstance();
|
||||||
|
|
||||||
clawGrips = Lists.newArrayList(clawGrip1, clawGrip2);
|
clawGrips = Lists.newArrayList(clawGrip1, clawGrip2);
|
||||||
|
@ -175,7 +175,7 @@ public class ArmVisual extends SingleRotatingVisual<ArmBlockEntity> implements S
|
||||||
super.update(pt);
|
super.update(pt);
|
||||||
models.remove(claw);
|
models.remove(claw);
|
||||||
claw.delete();
|
claw.delete();
|
||||||
claw = instancerProvider.instancer(InstanceTypes.TRANSFORMED, Models.partial(blockEntity.goggles ? AllPartialModels.ARM_CLAW_BASE_GOGGLES : AllPartialModels.ARM_CLAW_BASE))
|
claw = instancerProvider().instancer(InstanceTypes.TRANSFORMED, Models.partial(blockEntity.goggles ? AllPartialModels.ARM_CLAW_BASE_GOGGLES : AllPartialModels.ARM_CLAW_BASE))
|
||||||
.createInstance();
|
.createInstance();
|
||||||
models.add(claw);
|
models.add(claw);
|
||||||
updateLight(pt);
|
updateLight(pt);
|
||||||
|
|
|
@ -27,12 +27,12 @@ public class MixerVisual extends EncasedCogVisual implements SimpleDynamicVisual
|
||||||
super(context, blockEntity, false, partialTick);
|
super(context, blockEntity, false, partialTick);
|
||||||
this.mixer = blockEntity;
|
this.mixer = blockEntity;
|
||||||
|
|
||||||
mixerHead = instancerProvider.instancer(AllInstanceTypes.ROTATING, Models.partial(AllPartialModels.MECHANICAL_MIXER_HEAD))
|
mixerHead = instancerProvider().instancer(AllInstanceTypes.ROTATING, Models.partial(AllPartialModels.MECHANICAL_MIXER_HEAD))
|
||||||
.createInstance();
|
.createInstance();
|
||||||
|
|
||||||
mixerHead.setRotationAxis(Direction.Axis.Y);
|
mixerHead.setRotationAxis(Direction.Axis.Y);
|
||||||
|
|
||||||
mixerPole = instancerProvider.instancer(InstanceTypes.ORIENTED, Models.partial(AllPartialModels.MECHANICAL_MIXER_POLE))
|
mixerPole = instancerProvider().instancer(InstanceTypes.ORIENTED, Models.partial(AllPartialModels.MECHANICAL_MIXER_POLE))
|
||||||
.createInstance();
|
.createInstance();
|
||||||
|
|
||||||
animate(partialTick);
|
animate(partialTick);
|
||||||
|
|
|
@ -24,7 +24,7 @@ public class PressVisual extends ShaftVisual<MechanicalPressBlockEntity> impleme
|
||||||
public PressVisual(VisualizationContext context, MechanicalPressBlockEntity blockEntity, float partialTick) {
|
public PressVisual(VisualizationContext context, MechanicalPressBlockEntity blockEntity, float partialTick) {
|
||||||
super(context, blockEntity, partialTick);
|
super(context, blockEntity, partialTick);
|
||||||
|
|
||||||
pressHead = instancerProvider.instancer(InstanceTypes.ORIENTED, Models.partial(AllPartialModels.MECHANICAL_PRESS_HEAD))
|
pressHead = instancerProvider().instancer(InstanceTypes.ORIENTED, Models.partial(AllPartialModels.MECHANICAL_PRESS_HEAD))
|
||||||
.createInstance();
|
.createInstance();
|
||||||
|
|
||||||
Quaternionf q = Axis.YP
|
Quaternionf q = Axis.YP
|
||||||
|
|
|
@ -39,7 +39,7 @@ public class BracketedKineticBlockEntityVisual extends SingleRotatingVisual<Brac
|
||||||
BlockPos pos = blockEntity.getBlockPos();
|
BlockPos pos = blockEntity.getBlockPos();
|
||||||
float offset = BracketedKineticBlockEntityRenderer.getShaftAngleOffset(axis, pos);
|
float offset = BracketedKineticBlockEntityRenderer.getShaftAngleOffset(axis, pos);
|
||||||
var model = Models.partial(AllPartialModels.COGWHEEL_SHAFT, axis, BracketedKineticBlockEntityVisual::rotateToAxis);
|
var model = Models.partial(AllPartialModels.COGWHEEL_SHAFT, axis, BracketedKineticBlockEntityVisual::rotateToAxis);
|
||||||
Instancer<RotatingInstance> half = instancerProvider.instancer(AllInstanceTypes.ROTATING, model);
|
Instancer<RotatingInstance> half = instancerProvider().instancer(AllInstanceTypes.ROTATING, model);
|
||||||
|
|
||||||
additionalShaft = setup(half.createInstance(), speed);
|
additionalShaft = setup(half.createInstance(), speed);
|
||||||
additionalShaft.setRotationOffset(offset)
|
additionalShaft.setRotationOffset(offset)
|
||||||
|
|
|
@ -49,7 +49,7 @@ public class EncasedCogVisual extends KineticBlockEntityVisual<KineticBlockEntit
|
||||||
super(modelManager, blockEntity, partialTick);
|
super(modelManager, blockEntity, partialTick);
|
||||||
this.large = large;
|
this.large = large;
|
||||||
|
|
||||||
var instancer = instancerProvider.instancer(AllInstanceTypes.ROTATING, getCogModel());
|
var instancer = instancerProvider().instancer(AllInstanceTypes.ROTATING, getCogModel());
|
||||||
rotatingModel = setup(instancer.createInstance());
|
rotatingModel = setup(instancer.createInstance());
|
||||||
|
|
||||||
RotatingInstance rotatingTopShaft = null;
|
RotatingInstance rotatingTopShaft = null;
|
||||||
|
@ -60,7 +60,7 @@ public class EncasedCogVisual extends KineticBlockEntityVisual<KineticBlockEntit
|
||||||
for (Direction d : Iterate.directionsInAxis(axis)) {
|
for (Direction d : Iterate.directionsInAxis(axis)) {
|
||||||
if (!def.hasShaftTowards(blockEntity.getLevel(), blockEntity.getBlockPos(), blockState, d))
|
if (!def.hasShaftTowards(blockEntity.getLevel(), blockEntity.getBlockPos(), blockState, d))
|
||||||
continue;
|
continue;
|
||||||
RotatingInstance data = setup(instancerProvider.instancer(AllInstanceTypes.ROTATING, Models.partial(AllPartialModels.SHAFT_HALF, d))
|
RotatingInstance data = setup(instancerProvider().instancer(AllInstanceTypes.ROTATING, Models.partial(AllPartialModels.SHAFT_HALF, d))
|
||||||
.createInstance());
|
.createInstance());
|
||||||
if (large) {
|
if (large) {
|
||||||
data.setRotationOffset(BracketedKineticBlockEntityRenderer.getShaftAngleOffset(axis, pos));
|
data.setRotationOffset(BracketedKineticBlockEntityRenderer.getShaftAngleOffset(axis, pos));
|
||||||
|
|
|
@ -27,11 +27,11 @@ public class SteamEngineVisual extends AbstractBlockEntityVisual<SteamEngineBloc
|
||||||
public SteamEngineVisual(VisualizationContext context, SteamEngineBlockEntity blockEntity, float partialTick) {
|
public SteamEngineVisual(VisualizationContext context, SteamEngineBlockEntity blockEntity, float partialTick) {
|
||||||
super(context, blockEntity, partialTick);
|
super(context, blockEntity, partialTick);
|
||||||
|
|
||||||
piston = instancerProvider.instancer(InstanceTypes.TRANSFORMED, Models.partial(AllPartialModels.ENGINE_PISTON))
|
piston = instancerProvider().instancer(InstanceTypes.TRANSFORMED, Models.partial(AllPartialModels.ENGINE_PISTON))
|
||||||
.createInstance();
|
.createInstance();
|
||||||
linkage = instancerProvider.instancer(InstanceTypes.TRANSFORMED, Models.partial(AllPartialModels.ENGINE_LINKAGE))
|
linkage = instancerProvider().instancer(InstanceTypes.TRANSFORMED, Models.partial(AllPartialModels.ENGINE_LINKAGE))
|
||||||
.createInstance();
|
.createInstance();
|
||||||
connector = instancerProvider.instancer(InstanceTypes.TRANSFORMED, Models.partial(AllPartialModels.ENGINE_CONNECTOR))
|
connector = instancerProvider().instancer(InstanceTypes.TRANSFORMED, Models.partial(AllPartialModels.ENGINE_CONNECTOR))
|
||||||
.createInstance();
|
.createInstance();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -33,7 +33,7 @@ public class SplitShaftVisual extends KineticBlockEntityVisual<SplitShaftBlockEn
|
||||||
|
|
||||||
float splitSpeed = speed * blockEntity.getRotationSpeedModifier(dir);
|
float splitSpeed = speed * blockEntity.getRotationSpeedModifier(dir);
|
||||||
|
|
||||||
var instance = instancerProvider.instancer(AllInstanceTypes.ROTATING, Models.partial(AllPartialModels.SHAFT_HALF, dir))
|
var instance = instancerProvider().instancer(AllInstanceTypes.ROTATING, Models.partial(AllPartialModels.SHAFT_HALF, dir))
|
||||||
.createInstance();
|
.createInstance();
|
||||||
|
|
||||||
keys.add(setup(instance, splitSpeed));
|
keys.add(setup(instance, splitSpeed));
|
||||||
|
|
|
@ -11,15 +11,15 @@ import com.simibubi.create.foundation.render.CachedBufferer;
|
||||||
import dev.engine_room.flywheel.api.instance.Instance;
|
import dev.engine_room.flywheel.api.instance.Instance;
|
||||||
import dev.engine_room.flywheel.api.model.Model;
|
import dev.engine_room.flywheel.api.model.Model;
|
||||||
import dev.engine_room.flywheel.api.visualization.VisualizationContext;
|
import dev.engine_room.flywheel.api.visualization.VisualizationContext;
|
||||||
import dev.engine_room.flywheel.lib.model.ModelCache;
|
|
||||||
import dev.engine_room.flywheel.lib.model.baked.BakedModelBuilder;
|
import dev.engine_room.flywheel.lib.model.baked.BakedModelBuilder;
|
||||||
|
import dev.engine_room.flywheel.lib.util.ResourceReloadCache;
|
||||||
import net.minecraft.client.resources.model.BakedModel;
|
import net.minecraft.client.resources.model.BakedModel;
|
||||||
import net.minecraft.core.Direction;
|
import net.minecraft.core.Direction;
|
||||||
import net.minecraft.core.Direction.AxisDirection;
|
import net.minecraft.core.Direction.AxisDirection;
|
||||||
import net.minecraft.world.level.block.state.BlockState;
|
import net.minecraft.world.level.block.state.BlockState;
|
||||||
|
|
||||||
public class WaterWheelVisual<T extends WaterWheelBlockEntity> extends KineticBlockEntityVisual<T> {
|
public class WaterWheelVisual<T extends WaterWheelBlockEntity> extends KineticBlockEntityVisual<T> {
|
||||||
private static final ModelCache<WaterWheelModelKey> MODEL_CACHE = new ModelCache<>(WaterWheelVisual::createModel);
|
private static final ResourceReloadCache<WaterWheelModelKey, Model> MODEL_CACHE = new ResourceReloadCache<>(WaterWheelVisual::createModel);
|
||||||
|
|
||||||
protected final boolean large;
|
protected final boolean large;
|
||||||
protected BlockState lastMaterial;
|
protected BlockState lastMaterial;
|
||||||
|
@ -42,7 +42,7 @@ public class WaterWheelVisual<T extends WaterWheelBlockEntity> extends KineticBl
|
||||||
|
|
||||||
private void setupInstance() {
|
private void setupInstance() {
|
||||||
lastMaterial = blockEntity.material;
|
lastMaterial = blockEntity.material;
|
||||||
rotatingModel = instancerProvider.instancer(AllInstanceTypes.ROTATING, MODEL_CACHE.get(new WaterWheelModelKey(large, blockState, blockEntity.material)))
|
rotatingModel = instancerProvider().instancer(AllInstanceTypes.ROTATING, MODEL_CACHE.get(new WaterWheelModelKey(large, blockState, blockEntity.material)))
|
||||||
.createInstance();
|
.createInstance();
|
||||||
setup(rotatingModel);
|
setup(rotatingModel);
|
||||||
}
|
}
|
||||||
|
|
|
@ -22,7 +22,7 @@ public class EjectorVisual extends ShaftVisual<EjectorBlockEntity> implements Si
|
||||||
public EjectorVisual(VisualizationContext dispatcher, EjectorBlockEntity blockEntity, float partialTick) {
|
public EjectorVisual(VisualizationContext dispatcher, EjectorBlockEntity blockEntity, float partialTick) {
|
||||||
super(dispatcher, blockEntity, partialTick);
|
super(dispatcher, blockEntity, partialTick);
|
||||||
|
|
||||||
plate = instancerProvider.instancer(InstanceTypes.TRANSFORMED, Models.partial(AllPartialModels.EJECTOR_TOP)).createInstance();
|
plate = instancerProvider().instancer(InstanceTypes.TRANSFORMED, Models.partial(AllPartialModels.EJECTOR_TOP)).createInstance();
|
||||||
|
|
||||||
pivotPlate(getLidProgress(partialTick));
|
pivotPlate(getLidProgress(partialTick));
|
||||||
}
|
}
|
||||||
|
|
|
@ -34,7 +34,7 @@ public class FunnelVisual extends AbstractBlockEntityVisual<FunnelBlockEntity> i
|
||||||
|
|
||||||
PartialModel flapPartial = (blockState.getBlock() instanceof FunnelBlock ? AllPartialModels.FUNNEL_FLAP
|
PartialModel flapPartial = (blockState.getBlock() instanceof FunnelBlock ? AllPartialModels.FUNNEL_FLAP
|
||||||
: AllPartialModels.BELT_FUNNEL_FLAP);
|
: AllPartialModels.BELT_FUNNEL_FLAP);
|
||||||
Instancer<FlapInstance> model = instancerProvider.instancer(AllInstanceTypes.FLAP, Models.partial(flapPartial));
|
Instancer<FlapInstance> model = instancerProvider().instancer(AllInstanceTypes.FLAP, Models.partial(flapPartial));
|
||||||
|
|
||||||
int blockLight = level.getBrightness(LightLayer.BLOCK, pos);
|
int blockLight = level.getBrightness(LightLayer.BLOCK, pos);
|
||||||
int skyLight = level.getBrightness(LightLayer.SKY, pos);
|
int skyLight = level.getBrightness(LightLayer.SKY, pos);
|
||||||
|
|
|
@ -34,7 +34,7 @@ public class BeltTunnelVisual extends AbstractBlockEntityVisual<BeltTunnelBlockE
|
||||||
}
|
}
|
||||||
|
|
||||||
private void setupFlaps(float partialTick) {
|
private void setupFlaps(float partialTick) {
|
||||||
Instancer<FlapInstance> model = instancerProvider.instancer(AllInstanceTypes.FLAP, Models.partial(AllPartialModels.BELT_TUNNEL_FLAP));
|
Instancer<FlapInstance> model = instancerProvider().instancer(AllInstanceTypes.FLAP, Models.partial(AllPartialModels.BELT_TUNNEL_FLAP));
|
||||||
|
|
||||||
int blockLight = level.getBrightness(LightLayer.BLOCK, pos);
|
int blockLight = level.getBrightness(LightLayer.BLOCK, pos);
|
||||||
int skyLight = level.getBrightness(LightLayer.SKY, pos);
|
int skyLight = level.getBrightness(LightLayer.SKY, pos);
|
||||||
|
|
|
@ -55,7 +55,7 @@ public class BlazeBurnerVisual extends AbstractBlockEntityVisual<BlazeBurnerBloc
|
||||||
PartialModel blazeModel = BlazeBurnerRenderer.getBlazeModel(heatLevel, validBlockAbove);
|
PartialModel blazeModel = BlazeBurnerRenderer.getBlazeModel(heatLevel, validBlockAbove);
|
||||||
isInert = blazeModel == AllPartialModels.BLAZE_INERT;
|
isInert = blazeModel == AllPartialModels.BLAZE_INERT;
|
||||||
|
|
||||||
head = instancerProvider.instancer(InstanceTypes.TRANSFORMED, Models.partial(blazeModel))
|
head = instancerProvider().instancer(InstanceTypes.TRANSFORMED, Models.partial(blazeModel))
|
||||||
.createInstance();
|
.createInstance();
|
||||||
|
|
||||||
head.light(LightTexture.FULL_BRIGHT);
|
head.light(LightTexture.FULL_BRIGHT);
|
||||||
|
@ -66,9 +66,9 @@ public class BlazeBurnerVisual extends AbstractBlockEntityVisual<BlazeBurnerBloc
|
||||||
PartialModel rodsModel2 = heatLevel == BlazeBurnerBlock.HeatLevel.SEETHING ? AllPartialModels.BLAZE_BURNER_SUPER_RODS_2
|
PartialModel rodsModel2 = heatLevel == BlazeBurnerBlock.HeatLevel.SEETHING ? AllPartialModels.BLAZE_BURNER_SUPER_RODS_2
|
||||||
: AllPartialModels.BLAZE_BURNER_RODS_2;
|
: AllPartialModels.BLAZE_BURNER_RODS_2;
|
||||||
|
|
||||||
smallRods = instancerProvider.instancer(InstanceTypes.TRANSFORMED, Models.partial(rodsModel))
|
smallRods = instancerProvider().instancer(InstanceTypes.TRANSFORMED, Models.partial(rodsModel))
|
||||||
.createInstance();
|
.createInstance();
|
||||||
largeRods = instancerProvider.instancer(InstanceTypes.TRANSFORMED, Models.partial(rodsModel2))
|
largeRods = instancerProvider().instancer(InstanceTypes.TRANSFORMED, Models.partial(rodsModel2))
|
||||||
.createInstance();
|
.createInstance();
|
||||||
|
|
||||||
smallRods.light(LightTexture.FULL_BRIGHT);
|
smallRods.light(LightTexture.FULL_BRIGHT);
|
||||||
|
@ -98,7 +98,7 @@ public class BlazeBurnerVisual extends AbstractBlockEntityVisual<BlazeBurnerBloc
|
||||||
this.validBlockAbove = validBlockAbove;
|
this.validBlockAbove = validBlockAbove;
|
||||||
|
|
||||||
PartialModel blazeModel = BlazeBurnerRenderer.getBlazeModel(heatLevel, validBlockAbove);
|
PartialModel blazeModel = BlazeBurnerRenderer.getBlazeModel(heatLevel, validBlockAbove);
|
||||||
instancerProvider.instancer(InstanceTypes.TRANSFORMED, Models.partial(blazeModel))
|
instancerProvider().instancer(InstanceTypes.TRANSFORMED, Models.partial(blazeModel))
|
||||||
.stealInstance(head);
|
.stealInstance(head);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -111,7 +111,7 @@ public class BlazeBurnerVisual extends AbstractBlockEntityVisual<BlazeBurnerBloc
|
||||||
}
|
}
|
||||||
|
|
||||||
if (blockEntity.goggles && goggles == null) {
|
if (blockEntity.goggles && goggles == null) {
|
||||||
goggles = instancerProvider.instancer(InstanceTypes.TRANSFORMED, Models.partial(isInert ? AllPartialModels.BLAZE_GOGGLES_SMALL : AllPartialModels.BLAZE_GOGGLES))
|
goggles = instancerProvider().instancer(InstanceTypes.TRANSFORMED, Models.partial(isInert ? AllPartialModels.BLAZE_GOGGLES_SMALL : AllPartialModels.BLAZE_GOGGLES))
|
||||||
.createInstance();
|
.createInstance();
|
||||||
goggles.light(LightTexture.FULL_BRIGHT);
|
goggles.light(LightTexture.FULL_BRIGHT);
|
||||||
} else if (!blockEntity.goggles && goggles != null) {
|
} else if (!blockEntity.goggles && goggles != null) {
|
||||||
|
@ -120,7 +120,7 @@ public class BlazeBurnerVisual extends AbstractBlockEntityVisual<BlazeBurnerBloc
|
||||||
}
|
}
|
||||||
|
|
||||||
if (blockEntity.hat && hat == null) {
|
if (blockEntity.hat && hat == null) {
|
||||||
hat = instancerProvider.instancer(InstanceTypes.TRANSFORMED, Models.partial(AllPartialModels.TRAIN_HAT))
|
hat = instancerProvider().instancer(InstanceTypes.TRANSFORMED, Models.partial(AllPartialModels.TRAIN_HAT))
|
||||||
.createInstance();
|
.createInstance();
|
||||||
hat.light(LightTexture.FULL_BRIGHT);
|
hat.light(LightTexture.FULL_BRIGHT);
|
||||||
} else if (!blockEntity.hat && hat != null) {
|
} else if (!blockEntity.hat && hat != null) {
|
||||||
|
@ -194,7 +194,7 @@ public class BlazeBurnerVisual extends AbstractBlockEntityVisual<BlazeBurnerBloc
|
||||||
}
|
}
|
||||||
|
|
||||||
private void setupFlameInstance() {
|
private void setupFlameInstance() {
|
||||||
flame = instancerProvider.instancer(AllInstanceTypes.SCROLLING, Models.partial(AllPartialModels.BLAZE_BURNER_FLAME))
|
flame = instancerProvider().instancer(AllInstanceTypes.SCROLLING, Models.partial(AllPartialModels.BLAZE_BURNER_FLAME))
|
||||||
.createInstance();
|
.createInstance();
|
||||||
|
|
||||||
flame.position(getVisualPosition())
|
flame.position(getVisualPosition())
|
||||||
|
|
|
@ -30,9 +30,9 @@ public class AnalogLeverVisual extends AbstractBlockEntityVisual<AnalogLeverBloc
|
||||||
public AnalogLeverVisual(VisualizationContext context, AnalogLeverBlockEntity blockEntity, float partialTick) {
|
public AnalogLeverVisual(VisualizationContext context, AnalogLeverBlockEntity blockEntity, float partialTick) {
|
||||||
super(context, blockEntity, partialTick);
|
super(context, blockEntity, partialTick);
|
||||||
|
|
||||||
handle = instancerProvider.instancer(InstanceTypes.TRANSFORMED, Models.partial(AllPartialModels.ANALOG_LEVER_HANDLE))
|
handle = instancerProvider().instancer(InstanceTypes.TRANSFORMED, Models.partial(AllPartialModels.ANALOG_LEVER_HANDLE))
|
||||||
.createInstance();
|
.createInstance();
|
||||||
indicator = instancerProvider.instancer(InstanceTypes.TRANSFORMED, Models.partial(AllPartialModels.ANALOG_LEVER_INDICATOR))
|
indicator = instancerProvider().instancer(InstanceTypes.TRANSFORMED, Models.partial(AllPartialModels.ANALOG_LEVER_INDICATOR))
|
||||||
.createInstance();
|
.createInstance();
|
||||||
|
|
||||||
AttachFace face = blockState.getValue(AnalogLeverBlock.FACE);
|
AttachFace face = blockState.getValue(AnalogLeverBlock.FACE);
|
||||||
|
|
|
@ -23,7 +23,7 @@ public class BrassDiodeVisual extends AbstractBlockEntityVisual<BrassDiodeBlockE
|
||||||
public BrassDiodeVisual(VisualizationContext context, BrassDiodeBlockEntity blockEntity, float partialTick) {
|
public BrassDiodeVisual(VisualizationContext context, BrassDiodeBlockEntity blockEntity, float partialTick) {
|
||||||
super(context, blockEntity, partialTick);
|
super(context, blockEntity, partialTick);
|
||||||
|
|
||||||
indicator = instancerProvider.instancer(InstanceTypes.TRANSFORMED, Models.partial(AllPartialModels.FLEXPEATER_INDICATOR)).createInstance();
|
indicator = instancerProvider().instancer(InstanceTypes.TRANSFORMED, Models.partial(AllPartialModels.FLEXPEATER_INDICATOR)).createInstance();
|
||||||
|
|
||||||
indicator.setIdentityTransform()
|
indicator.setIdentityTransform()
|
||||||
.translate(getVisualPosition())
|
.translate(getVisualPosition())
|
||||||
|
|
|
@ -24,8 +24,8 @@ public class SchematicannonVisual extends AbstractBlockEntityVisual<Schematicann
|
||||||
public SchematicannonVisual(VisualizationContext context, SchematicannonBlockEntity blockEntity, float partialTick) {
|
public SchematicannonVisual(VisualizationContext context, SchematicannonBlockEntity blockEntity, float partialTick) {
|
||||||
super(context, blockEntity, partialTick);
|
super(context, blockEntity, partialTick);
|
||||||
|
|
||||||
connector = instancerProvider.instancer(InstanceTypes.TRANSFORMED, Models.partial(AllPartialModels.SCHEMATICANNON_CONNECTOR)).createInstance();
|
connector = instancerProvider().instancer(InstanceTypes.TRANSFORMED, Models.partial(AllPartialModels.SCHEMATICANNON_CONNECTOR)).createInstance();
|
||||||
pipe = instancerProvider.instancer(InstanceTypes.TRANSFORMED, Models.partial(AllPartialModels.SCHEMATICANNON_PIPE)).createInstance();
|
pipe = instancerProvider().instancer(InstanceTypes.TRANSFORMED, Models.partial(AllPartialModels.SCHEMATICANNON_PIPE)).createInstance();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -20,7 +20,7 @@ import com.simibubi.create.foundation.render.VirtualRenderHelper;
|
||||||
|
|
||||||
import dev.engine_room.flywheel.api.visualization.VisualizationContext;
|
import dev.engine_room.flywheel.api.visualization.VisualizationContext;
|
||||||
import dev.engine_room.flywheel.lib.instance.InstanceTypes;
|
import dev.engine_room.flywheel.lib.instance.InstanceTypes;
|
||||||
import dev.engine_room.flywheel.lib.instance.TransformedInstance;
|
import dev.engine_room.flywheel.lib.instance.PosedInstance;
|
||||||
import dev.engine_room.flywheel.lib.model.Models;
|
import dev.engine_room.flywheel.lib.model.Models;
|
||||||
import dev.engine_room.flywheel.lib.model.baked.PartialModel;
|
import dev.engine_room.flywheel.lib.model.baked.PartialModel;
|
||||||
import dev.engine_room.flywheel.lib.transform.Transform;
|
import dev.engine_room.flywheel.lib.transform.Transform;
|
||||||
|
@ -195,7 +195,7 @@ public abstract class BogeyRenderer {
|
||||||
*/
|
*/
|
||||||
public void createModelInstance(VisualizationContext context, PartialModel model, int count) {
|
public void createModelInstance(VisualizationContext context, PartialModel model, int count) {
|
||||||
var instancer = context.instancerProvider()
|
var instancer = context.instancerProvider()
|
||||||
.instancer(InstanceTypes.TRANSFORMED, Models.partial(model));
|
.instancer(InstanceTypes.POSED, Models.partial(model));
|
||||||
BogeyModelData[] modelData = IntStream.range(0, count)
|
BogeyModelData[] modelData = IntStream.range(0, count)
|
||||||
.mapToObj(i -> instancer.createInstance())
|
.mapToObj(i -> instancer.createInstance())
|
||||||
.map(BogeyModelData::new)
|
.map(BogeyModelData::new)
|
||||||
|
@ -212,7 +212,7 @@ public abstract class BogeyRenderer {
|
||||||
*/
|
*/
|
||||||
public void createModelInstance(VisualizationContext context, BlockState state, int count) {
|
public void createModelInstance(VisualizationContext context, BlockState state, int count) {
|
||||||
var instancer = context.instancerProvider()
|
var instancer = context.instancerProvider()
|
||||||
.instancer(InstanceTypes.TRANSFORMED, VirtualRenderHelper.blockModel(state));
|
.instancer(InstanceTypes.POSED, VirtualRenderHelper.blockModel(state));
|
||||||
BogeyModelData[] modelData = IntStream.range(0, count)
|
BogeyModelData[] modelData = IntStream.range(0, count)
|
||||||
.mapToObj(i -> instancer.createInstance())
|
.mapToObj(i -> instancer.createInstance())
|
||||||
.map(BogeyModelData::new)
|
.map(BogeyModelData::new)
|
||||||
|
@ -340,27 +340,27 @@ public abstract class BogeyRenderer {
|
||||||
}
|
}
|
||||||
|
|
||||||
public BogeyModelData setTransform(PoseStack ms) {
|
public BogeyModelData setTransform(PoseStack ms) {
|
||||||
if (this.transform instanceof TransformedInstance model)
|
if (this.transform instanceof PosedInstance model)
|
||||||
model.setTransform(ms)
|
model.setTransform(ms)
|
||||||
.setChanged();
|
.setChanged();
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
public BogeyModelData setEmptyTransform() {
|
public BogeyModelData setEmptyTransform() {
|
||||||
if (this.transform instanceof TransformedInstance model)
|
if (this.transform instanceof PosedInstance model)
|
||||||
model.setZeroTransform()
|
model.setZeroTransform()
|
||||||
.setChanged();
|
.setChanged();
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
public BogeyModelData delete() {
|
public BogeyModelData delete() {
|
||||||
if (this.transform instanceof TransformedInstance model)
|
if (this.transform instanceof PosedInstance model)
|
||||||
model.delete();
|
model.delete();
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
public BogeyModelData updateLight(int blockLight, int skyLight) {
|
public BogeyModelData updateLight(int blockLight, int skyLight) {
|
||||||
if (this.transform instanceof TransformedInstance model)
|
if (this.transform instanceof PosedInstance model)
|
||||||
model.light(blockLight, skyLight)
|
model.light(blockLight, skyLight)
|
||||||
.setChanged();
|
.setChanged();
|
||||||
return this;
|
return this;
|
||||||
|
|
|
@ -138,11 +138,11 @@ public class TrackVisual extends AbstractBlockEntityVisual<TrackBlockEntity> {
|
||||||
|
|
||||||
TrackMaterial.TrackModelHolder modelHolder = bc.getMaterial().getModelHolder();
|
TrackMaterial.TrackModelHolder modelHolder = bc.getMaterial().getModelHolder();
|
||||||
|
|
||||||
instancerProvider.instancer(InstanceTypes.TRANSFORMED, Models.partial(modelHolder.tie()))
|
instancerProvider().instancer(InstanceTypes.TRANSFORMED, Models.partial(modelHolder.tie()))
|
||||||
.createInstances(ties);
|
.createInstances(ties);
|
||||||
instancerProvider.instancer(InstanceTypes.TRANSFORMED, Models.partial(modelHolder.leftSegment()))
|
instancerProvider().instancer(InstanceTypes.TRANSFORMED, Models.partial(modelHolder.leftSegment()))
|
||||||
.createInstances(left);
|
.createInstances(left);
|
||||||
instancerProvider.instancer(InstanceTypes.TRANSFORMED, Models.partial(modelHolder.rightSegment()))
|
instancerProvider().instancer(InstanceTypes.TRANSFORMED, Models.partial(modelHolder.rightSegment()))
|
||||||
.createInstances(right);
|
.createInstances(right);
|
||||||
|
|
||||||
SegmentAngles[] segments = bc.getBakedSegments();
|
SegmentAngles[] segments = bc.getBakedSegments();
|
||||||
|
@ -151,14 +151,14 @@ public class TrackVisual extends AbstractBlockEntityVisual<TrackBlockEntity> {
|
||||||
var modelIndex = i - 1;
|
var modelIndex = i - 1;
|
||||||
|
|
||||||
ties[modelIndex].setTransform(pose)
|
ties[modelIndex].setTransform(pose)
|
||||||
.transform(segment.tieTransform)
|
.mul(segment.tieTransform)
|
||||||
.setChanged();
|
.setChanged();
|
||||||
tiesLightPos[modelIndex] = segment.lightPosition.offset(tePosition);
|
tiesLightPos[modelIndex] = segment.lightPosition.offset(tePosition);
|
||||||
|
|
||||||
for (boolean first : Iterate.trueAndFalse) {
|
for (boolean first : Iterate.trueAndFalse) {
|
||||||
Pose transform = segment.railTransforms.get(first);
|
Pose transform = segment.railTransforms.get(first);
|
||||||
(first ? this.left : this.right)[modelIndex].setTransform(pose)
|
(first ? this.left : this.right)[modelIndex].setTransform(pose)
|
||||||
.transform(transform)
|
.mul(transform)
|
||||||
.setChanged();
|
.setChanged();
|
||||||
(first ? leftLightPos : rightLightPos)[modelIndex] = segment.lightPosition.offset(tePosition);
|
(first ? leftLightPos : rightLightPos)[modelIndex] = segment.lightPosition.offset(tePosition);
|
||||||
}
|
}
|
||||||
|
@ -218,10 +218,10 @@ public class TrackVisual extends AbstractBlockEntityVisual<TrackBlockEntity> {
|
||||||
beams = Couple.create(() -> new TransformedInstance[segCount]);
|
beams = Couple.create(() -> new TransformedInstance[segCount]);
|
||||||
beamCaps = Couple.create(() -> Couple.create(() -> new TransformedInstance[segCount]));
|
beamCaps = Couple.create(() -> Couple.create(() -> new TransformedInstance[segCount]));
|
||||||
lightPos = new BlockPos[segCount];
|
lightPos = new BlockPos[segCount];
|
||||||
beams.forEach(instancerProvider.instancer(InstanceTypes.TRANSFORMED, Models.partial(AllPartialModels.GIRDER_SEGMENT_MIDDLE))::createInstances);
|
beams.forEach(instancerProvider().instancer(InstanceTypes.TRANSFORMED, Models.partial(AllPartialModels.GIRDER_SEGMENT_MIDDLE))::createInstances);
|
||||||
beamCaps.forEachWithContext((c, top) -> {
|
beamCaps.forEachWithContext((c, top) -> {
|
||||||
var partialModel = Models.partial(top ? AllPartialModels.GIRDER_SEGMENT_TOP : AllPartialModels.GIRDER_SEGMENT_BOTTOM);
|
var partialModel = Models.partial(top ? AllPartialModels.GIRDER_SEGMENT_TOP : AllPartialModels.GIRDER_SEGMENT_BOTTOM);
|
||||||
c.forEach(instancerProvider.instancer(InstanceTypes.TRANSFORMED, partialModel)::createInstances);
|
c.forEach(instancerProvider().instancer(InstanceTypes.TRANSFORMED, partialModel)::createInstances);
|
||||||
});
|
});
|
||||||
|
|
||||||
GirderAngles[] bakedGirders = bc.getBakedGirders();
|
GirderAngles[] bakedGirders = bc.getBakedGirders();
|
||||||
|
@ -233,14 +233,14 @@ public class TrackVisual extends AbstractBlockEntityVisual<TrackBlockEntity> {
|
||||||
for (boolean first : Iterate.trueAndFalse) {
|
for (boolean first : Iterate.trueAndFalse) {
|
||||||
Pose beamTransform = segment.beams.get(first);
|
Pose beamTransform = segment.beams.get(first);
|
||||||
beams.get(first)[modelIndex].setTransform(pose)
|
beams.get(first)[modelIndex].setTransform(pose)
|
||||||
.transform(beamTransform)
|
.mul(beamTransform)
|
||||||
.setChanged();
|
.setChanged();
|
||||||
for (boolean top : Iterate.trueAndFalse) {
|
for (boolean top : Iterate.trueAndFalse) {
|
||||||
Pose beamCapTransform = segment.beamCaps.get(top)
|
Pose beamCapTransform = segment.beamCaps.get(top)
|
||||||
.get(first);
|
.get(first);
|
||||||
beamCaps.get(top)
|
beamCaps.get(top)
|
||||||
.get(first)[modelIndex].setTransform(pose)
|
.get(first)[modelIndex].setTransform(pose)
|
||||||
.transform(beamCapTransform)
|
.mul(beamCapTransform)
|
||||||
.setChanged();
|
.setChanged();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -7,10 +7,10 @@ import org.jetbrains.annotations.Nullable;
|
||||||
import com.mojang.blaze3d.vertex.PoseStack;
|
import com.mojang.blaze3d.vertex.PoseStack;
|
||||||
|
|
||||||
import dev.engine_room.flywheel.api.model.Model;
|
import dev.engine_room.flywheel.api.model.Model;
|
||||||
import dev.engine_room.flywheel.lib.model.ModelCache;
|
|
||||||
import dev.engine_room.flywheel.lib.model.ModelUtil;
|
import dev.engine_room.flywheel.lib.model.ModelUtil;
|
||||||
import dev.engine_room.flywheel.lib.model.baked.ForgeBakedModelBuilder;
|
import dev.engine_room.flywheel.lib.model.baked.ForgeBakedModelBuilder;
|
||||||
import dev.engine_room.flywheel.lib.model.baked.VirtualEmptyBlockGetter;
|
import dev.engine_room.flywheel.lib.model.baked.VirtualEmptyBlockGetter;
|
||||||
|
import dev.engine_room.flywheel.lib.util.ResourceReloadCache;
|
||||||
import net.minecraft.client.renderer.block.BlockRenderDispatcher;
|
import net.minecraft.client.renderer.block.BlockRenderDispatcher;
|
||||||
import net.minecraft.client.renderer.block.ModelBlockRenderer;
|
import net.minecraft.client.renderer.block.ModelBlockRenderer;
|
||||||
import net.minecraft.client.renderer.texture.OverlayTexture;
|
import net.minecraft.client.renderer.texture.OverlayTexture;
|
||||||
|
@ -25,7 +25,7 @@ public class VirtualRenderHelper {
|
||||||
public static final ModelProperty<Boolean> VIRTUAL_PROPERTY = new ModelProperty<>();
|
public static final ModelProperty<Boolean> VIRTUAL_PROPERTY = new ModelProperty<>();
|
||||||
public static final ModelData VIRTUAL_DATA = ModelData.builder().with(VIRTUAL_PROPERTY, true).build();
|
public static final ModelData VIRTUAL_DATA = ModelData.builder().with(VIRTUAL_PROPERTY, true).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 ResourceReloadCache<BlockState, Model> VIRTUAL_BLOCKS = new ResourceReloadCache<>(state -> new ForgeBakedModelBuilder(ModelUtil.VANILLA_RENDERER.getBlockModel(state)).modelData(VIRTUAL_DATA).build());
|
||||||
private static final ThreadLocal<ThreadLocalObjects> THREAD_LOCAL_OBJECTS = ThreadLocal.withInitial(ThreadLocalObjects::new);
|
private static final ThreadLocal<ThreadLocalObjects> THREAD_LOCAL_OBJECTS = ThreadLocal.withInitial(ThreadLocalObjects::new);
|
||||||
|
|
||||||
public static boolean isVirtual(ModelData data) {
|
public static boolean isVirtual(ModelData data) {
|
||||||
|
|
Loading…
Reference in a new issue