Update Flywheel

- Fix too many implementations of ProcessingRecipe#canSpecifyDuration
returning true
This commit is contained in:
PepperCode1 2023-08-23 15:36:19 -07:00
parent 2a1c6e6916
commit c5e7ad623f
12 changed files with 26 additions and 48 deletions

View file

@ -172,7 +172,7 @@ dependencies {
jarJar.ranged(it, '[MC1.18.2-1.1.3,)')
}
jarJar("com.jozufozu.flywheel:flywheel-forge-${flywheel_minecraft_version}:${flywheel_version}") {
jarJar.ranged(it, '[0.6.9,0.6.10)')
jarJar.ranged(it, '[0.6.10,0.6.11)')
}
implementation fg.deobf("com.tterrag.registrate:Registrate:${registrate_version}")

View file

@ -23,7 +23,7 @@ use_parchment = true
# dependency versions
registrate_version = MC1.18.2-1.1.3
flywheel_minecraft_version = 1.18.2
flywheel_version = 0.6.9-101
flywheel_version = 0.6.10-105
jei_minecraft_version = 1.18.2
jei_version = 9.7.0.209
curios_minecraft_version = 1.18.2

View file

@ -1367,7 +1367,7 @@ public abstract class Contraption {
return blocks.values();
}
public Collection<BlockEntity> getSpecialRenderedTEs() {
public Collection<BlockEntity> getSpecialRenderedBEs() {
return specialRenderedBlockEntities;
}

View file

@ -118,9 +118,9 @@ public class ContraptionRenderDispatcher {
ContraptionWorld contraptionWorld = c.getContraptionWorld();
BlockPos origin = c.anchor;
int height = contraptionWorld.getHeight();
int minBuildHeight = contraptionWorld.getMinBuildHeight();
VirtualRenderWorld renderWorld = new VirtualRenderWorld(world, origin, height, minBuildHeight) {
int height = contraptionWorld.getHeight();
VirtualRenderWorld renderWorld = new VirtualRenderWorld(world, minBuildHeight, height, origin) {
@Override
public boolean supportsFlywheel() {
return canInstance();
@ -133,13 +133,13 @@ public class ContraptionRenderDispatcher {
// Skip individual lighting updates to prevent lag with large contraptions
renderWorld.setBlock(info.pos, info.state, Block.UPDATE_SUPPRESS_LIGHT);
renderWorld.runLightingEngine();
renderWorld.runLightEngine();
return renderWorld;
}
public static void renderBlockEntities(Level world, VirtualRenderWorld renderWorld, Contraption c,
ContraptionMatrices matrices, MultiBufferSource buffer) {
BlockEntityRenderHelper.renderBlockEntities(world, renderWorld, c.getSpecialRenderedTEs(),
BlockEntityRenderHelper.renderBlockEntities(world, renderWorld, c.getSpecialRenderedBEs(),
matrices.getModelViewProjection(), matrices.getLight(), buffer);
}

View file

@ -16,4 +16,9 @@ public abstract class AbstractCrushingRecipe extends ProcessingRecipe<RecipeWrap
protected int getMaxInputCount() {
return 1;
}
@Override
protected boolean canSpecifyDuration() {
return true;
}
}

View file

@ -47,6 +47,11 @@ public class CuttingRecipe extends ProcessingRecipe<RecipeWrapper> implements IA
return 4;
}
@Override
protected boolean canSpecifyDuration() {
return true;
}
@Override
public void addAssemblyIngredients(List<Ingredient> list) {}

View file

@ -208,6 +208,11 @@ public class BasinRecipe extends ProcessingRecipe<SmartInventory> {
return true;
}
@Override
protected boolean canSpecifyDuration() {
return true;
}
@Override
public boolean matches(SmartInventory inv, @Nonnull Level worldIn) {
return false;

View file

@ -71,7 +71,7 @@ public abstract class ProcessingRecipe<T extends Container> implements Recipe<T>
}
protected boolean canSpecifyDuration() {
return true;
return false;
}
protected int getMaxFluidInputCount() {

View file

@ -289,9 +289,9 @@ public class CarriageContraption extends Contraption {
}
@Override
public Collection<BlockEntity> getSpecialRenderedTEs() {
public Collection<BlockEntity> getSpecialRenderedBEs() {
if (notInPortal())
return super.getSpecialRenderedTEs();
return super.getSpecialRenderedBEs();
return specialRenderedBEsOutsidePortal;
}

View file

@ -1,36 +0,0 @@
package com.simibubi.create.foundation.mixin.client;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.At.Shift;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.ModifyArg;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
import com.mojang.blaze3d.vertex.PoseStack;
@Mixin(PoseStack.class)
public class FixNormalScalingMixin {
/**
* Minecraft negates the normal matrix if all scales are equal and negative, but
* does not return afterward. This allows the rest of the method's logic to be
* applied, which negates the matrix again, resulting in the matrix being the
* same as in the beginning.
*/
@Inject(at = @At(value = "INVOKE", target = "Lcom/mojang/math/Matrix3f;mul(F)V", shift = Shift.AFTER), method = "scale(FFF)V", cancellable = true)
private void create$returnAfterNegate(float x, float y, float z, CallbackInfo ci) {
ci.cancel();
}
/**
* Minecraft takes the inverse cube root of the product of all scales to provide a
* rough estimate for normalization so that it does not need to be done later. It
* does not make sense for this "normalization factor" to be negative though, as
* that would invert all normals. Additionally, Minecraft's fastInverseCbrt method
* does not work for negative numbers.
*/
@ModifyArg(at = @At(value = "INVOKE", target = "Lnet/minecraft/util/Mth;fastInvCubeRoot(F)F"), method = "scale(FFF)V")
private float create$absInvCbrtInput(float input) {
return Math.abs(input);
}
}

View file

@ -33,6 +33,6 @@ Technology that empowers the player.'''
[[dependencies.create]]
modId="flywheel"
mandatory=true
versionRange="[0.6.9,0.6.10)"
versionRange="[0.6.10,0.6.11)"
ordering="AFTER"
side="CLIENT"

View file

@ -27,7 +27,6 @@
"client.BlockDestructionProgressMixin",
"client.CameraMixin",
"client.EntityContraptionInteractionMixin",
"client.FixNormalScalingMixin",
"client.GameRendererMixin",
"client.HeavyBootsOnPlayerMixin",
"client.HumanoidArmorLayerMixin",