diff --git a/build.gradle b/build.gradle index 1012c7254f..057b34349b 100644 --- a/build.gradle +++ b/build.gradle @@ -158,6 +158,7 @@ tasks.withType(ProcessResources).configureEach { mod_version : mod_version, minecraft_version_range: minecraft_version_range, neo_version_range : neo_version_range, + flywheel_version_range : flywheel_version_range, loader_version_range : loader_version_range, ] inputs.properties replaceProperties diff --git a/gradle.properties b/gradle.properties index 8dfe7a8afb..5956762bc8 100644 --- a/gradle.properties +++ b/gradle.properties @@ -24,7 +24,7 @@ registrate_version = MC1.21-1.3.0+49 # From maven.ithundxr.dev/hidden flywheel_minecraft_version = 1.21 -flywheel_version = 1.0.0-beta-fork.4 +flywheel_version = 1.0.0-beta-fork.5 flywheel_version_range = [1.0.0-alpha,2.0) # Optional Dependencies diff --git a/src/main/java/com/simibubi/create/content/contraptions/behaviour/dispenser/DispenserMovementBehaviour.java b/src/main/java/com/simibubi/create/content/contraptions/behaviour/dispenser/DispenserMovementBehaviour.java index b5ee4f1a55..53cab3f984 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/behaviour/dispenser/DispenserMovementBehaviour.java +++ b/src/main/java/com/simibubi/create/content/contraptions/behaviour/dispenser/DispenserMovementBehaviour.java @@ -15,6 +15,7 @@ import net.minecraft.server.level.ServerLevel; import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; +import net.minecraft.world.level.Level; import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.block.DispenserBlock; import net.minecraft.world.level.block.state.BlockState; @@ -35,8 +36,8 @@ public static void registerMovedDispenseItemBehaviour(Item item, MOVED_DISPENSE_ITEM_BEHAVIOURS.put(item, movedDispenseItemBehaviour); } - public static DispenseItemBehavior getDispenseMethod(ItemStack itemstack) { - return ((DispenserBlockAccessor) Blocks.DISPENSER).create$callGetDispenseMethod(itemstack); + public static DispenseItemBehavior getDispenseMethod(Level level, ItemStack itemstack) { + return ((DispenserBlockAccessor) Blocks.DISPENSER).create$callGetDispenseMethod(level, itemstack); } @Override @@ -65,7 +66,7 @@ protected void activate(MovementContext context, BlockPos pos) { return; } - DispenseItemBehavior behavior = getDispenseMethod(itemStack); + DispenseItemBehavior behavior = getDispenseMethod(context.world, itemStack); if (behavior instanceof ProjectileDispenseBehavior projectileDispenseBehavior) { // Projectile behaviours can be converted most of the time IMovedDispenseItemBehaviour movedBehaviour = MovedProjectileDispenserBehaviour.of(projectileDispenseBehavior); setItemStackAt(location, movedBehaviour.dispense(itemStack, context, pos), context); diff --git a/src/main/java/com/simibubi/create/content/contraptions/render/ContraptionVisual.java b/src/main/java/com/simibubi/create/content/contraptions/render/ContraptionVisual.java index 17411e8f78..9dc00c88c4 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/render/ContraptionVisual.java +++ b/src/main/java/com/simibubi/create/content/contraptions/render/ContraptionVisual.java @@ -7,6 +7,7 @@ import com.mojang.blaze3d.vertex.PoseStack; import com.simibubi.create.AllMovementBehaviours; +import com.simibubi.create.Create; import com.simibubi.create.content.contraptions.AbstractContraptionEntity; import com.simibubi.create.content.contraptions.Contraption; import com.simibubi.create.content.contraptions.Contraption.RenderedBlocks; @@ -34,6 +35,8 @@ import dev.engine_room.flywheel.lib.task.PlanMap; import dev.engine_room.flywheel.lib.task.RunnablePlan; import dev.engine_room.flywheel.lib.visual.AbstractEntityVisual; +import it.unimi.dsi.fastutil.longs.LongArraySet; +import it.unimi.dsi.fastutil.longs.LongSet; import net.minecraft.core.BlockPos; import net.minecraft.core.SectionPos; import net.minecraft.core.Vec3i; diff --git a/src/main/java/com/simibubi/create/content/equipment/symmetryWand/mirror/SymmetryMirror.java b/src/main/java/com/simibubi/create/content/equipment/symmetryWand/mirror/SymmetryMirror.java index 3be5d2283d..56f984500e 100644 --- a/src/main/java/com/simibubi/create/content/equipment/symmetryWand/mirror/SymmetryMirror.java +++ b/src/main/java/com/simibubi/create/content/equipment/symmetryWand/mirror/SymmetryMirror.java @@ -9,8 +9,10 @@ import com.mojang.serialization.Codec; import com.mojang.serialization.codecs.RecordCodecBuilder; import com.simibubi.create.foundation.utility.Lang; +import com.simibubi.create.infrastructure.codec.CreateStreamCodecs; import dev.engine_room.flywheel.lib.model.baked.PartialModel; +import io.netty.buffer.ByteBuf; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.nbt.CompoundTag; diff --git a/src/main/java/com/simibubi/create/content/kinetics/belt/BeltBlockEntity.java b/src/main/java/com/simibubi/create/content/kinetics/belt/BeltBlockEntity.java index 5d667aa429..b792b2b123 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/belt/BeltBlockEntity.java +++ b/src/main/java/com/simibubi/create/content/kinetics/belt/BeltBlockEntity.java @@ -12,6 +12,7 @@ import java.util.Optional; import java.util.function.Function; +import com.simibubi.create.AllBlockEntityTypes; import com.simibubi.create.AllBlocks; import com.simibubi.create.content.kinetics.base.IRotate; import com.simibubi.create.content.kinetics.base.KineticBlockEntity; @@ -26,19 +27,14 @@ import com.simibubi.create.content.kinetics.belt.transport.TransportedItemStack; import com.simibubi.create.content.logistics.tunnel.BrassTunnelBlockEntity; import com.simibubi.create.foundation.blockEntity.behaviour.BlockEntityBehaviour; -import com.simibubi.create.foundation.utility.DistExecutor; import com.simibubi.create.foundation.utility.NBTHelper; -import com.simibubi.create.foundation.utility.flywheel.box.Box; -import com.simibubi.create.foundation.utility.flywheel.box.MutableBox; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.Direction.Axis; import net.minecraft.core.HolderLookup; -import net.minecraft.core.SectionPos; import net.minecraft.core.Vec3i; import net.minecraft.nbt.CompoundTag; -import net.minecraft.nbt.NbtUtils; import net.minecraft.world.entity.Entity; import net.minecraft.world.item.DyeColor; import net.minecraft.world.item.ItemStack; @@ -49,8 +45,6 @@ import net.minecraft.world.level.block.state.properties.BlockStateProperties; import net.minecraft.world.phys.AABB; import net.minecraft.world.phys.Vec3; -import net.neoforged.api.distmarker.Dist; -import net.neoforged.api.distmarker.OnlyIn; import net.neoforged.neoforge.capabilities.Capabilities; import net.neoforged.neoforge.capabilities.RegisterCapabilitiesEvent; import net.neoforged.neoforge.client.model.data.ModelData; diff --git a/src/main/java/com/simibubi/create/content/kinetics/deployer/DeployerBlockEntity.java b/src/main/java/com/simibubi/create/content/kinetics/deployer/DeployerBlockEntity.java index b0a8ee1915..33b8637d37 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/deployer/DeployerBlockEntity.java +++ b/src/main/java/com/simibubi/create/content/kinetics/deployer/DeployerBlockEntity.java @@ -9,6 +9,7 @@ import javax.annotation.Nullable; +import com.simibubi.create.AllBlockEntityTypes; import com.simibubi.create.AllBlocks; import com.simibubi.create.AllPartialModels; import com.simibubi.create.AllRecipeTypes; diff --git a/src/main/java/com/simibubi/create/content/kinetics/mechanicalArm/ArmBlockEntity.java b/src/main/java/com/simibubi/create/content/kinetics/mechanicalArm/ArmBlockEntity.java index 85888a5dd7..370a66a197 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/mechanicalArm/ArmBlockEntity.java +++ b/src/main/java/com/simibubi/create/content/kinetics/mechanicalArm/ArmBlockEntity.java @@ -19,6 +19,7 @@ import com.simibubi.create.foundation.gui.AllIcons; import com.simibubi.create.foundation.item.TooltipHelper; import com.simibubi.create.foundation.utility.AngleHelper; +import com.simibubi.create.foundation.utility.Env; import com.simibubi.create.foundation.utility.Lang; import com.simibubi.create.foundation.utility.NBTHelper; import com.simibubi.create.foundation.utility.VecHelper; @@ -47,7 +48,6 @@ import net.minecraft.world.level.chunk.ChunkSource; import net.minecraft.world.phys.AABB; import net.minecraft.world.phys.Vec3; -import net.neoforged.api.distmarker.Dist; public class ArmBlockEntity extends KineticBlockEntity implements ITransformableBlockEntity { @@ -552,8 +552,8 @@ protected void read(CompoundTag tag, HolderLookup.Provider registries, boolean c if (!clientPacket) return; - if (hadGoggles != goggles) - DistExecutor.unsafeRunWhenOn(Dist.CLIENT, () -> () -> VisualizationHelper.queueUpdate(this)); + if (hadGoggles != goggles && Env.CLIENT.isCurrent()) + Client.queueUpdate(this); boolean ceiling = isOnCeiling(); if (interactionPointTagBefore == null || interactionPointTagBefore.size() != interactionPointTag.size()) @@ -656,7 +656,7 @@ public String getTranslationKey() { private static class Client { private static void queueUpdate(BlockEntity be) { - VisualizationManager.queueUpdate(be); + VisualizationHelper.queueUpdate(be); } } } diff --git a/src/main/java/com/simibubi/create/content/logistics/tunnel/BeltTunnelBlockEntity.java b/src/main/java/com/simibubi/create/content/logistics/tunnel/BeltTunnelBlockEntity.java index 15157a795a..9def84f704 100644 --- a/src/main/java/com/simibubi/create/content/logistics/tunnel/BeltTunnelBlockEntity.java +++ b/src/main/java/com/simibubi/create/content/logistics/tunnel/BeltTunnelBlockEntity.java @@ -21,7 +21,7 @@ import com.simibubi.create.foundation.utility.animation.LerpedFloat; import com.simibubi.create.foundation.utility.animation.LerpedFloat.Chaser; -import dev.engine_room.flywheel.api.visualization.VisualizationManager; +import dev.engine_room.flywheel.lib.visualization.VisualizationHelper; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.Direction.Axis; diff --git a/src/main/java/com/simibubi/create/foundation/block/CopperBlockSet.java b/src/main/java/com/simibubi/create/foundation/block/CopperBlockSet.java index b6030eb8cf..a5eb8e3c02 100644 --- a/src/main/java/com/simibubi/create/foundation/block/CopperBlockSet.java +++ b/src/main/java/com/simibubi/create/foundation/block/CopperBlockSet.java @@ -327,7 +327,7 @@ public NonNullFunction getFactory(CopperBlockSet blocks, new WeatheringCopperStairBlock(state, Blocks.AIR.defaultBlockState(), p); // WeatheringCopperStairBlock does not have a constructor that takes a state, // so setting the field directly is the easiest solution - ObfuscationReflectionHelper.setPrivateValue(StairBlock.class, block, blockState, "state"); + ObfuscationReflectionHelper.setPrivateValue(StairBlock.class, block, blockState, "baseState"); return block; }; } diff --git a/src/main/java/com/simibubi/create/foundation/data/CreateBlockEntityBuilder.java b/src/main/java/com/simibubi/create/foundation/data/CreateBlockEntityBuilder.java index ce8bd2f49e..1be392a629 100644 --- a/src/main/java/com/simibubi/create/foundation/data/CreateBlockEntityBuilder.java +++ b/src/main/java/com/simibubi/create/foundation/data/CreateBlockEntityBuilder.java @@ -7,6 +7,8 @@ import javax.annotation.Nullable; +import org.jetbrains.annotations.NotNull; + import com.simibubi.create.Create; import com.simibubi.create.foundation.utility.DistExecutor; import com.tterrag.registrate.AbstractRegistrate; diff --git a/src/main/java/com/simibubi/create/foundation/data/CreateEntityBuilder.java b/src/main/java/com/simibubi/create/foundation/data/CreateEntityBuilder.java index 8289898a24..95813f30c8 100644 --- a/src/main/java/com/simibubi/create/foundation/data/CreateEntityBuilder.java +++ b/src/main/java/com/simibubi/create/foundation/data/CreateEntityBuilder.java @@ -5,6 +5,8 @@ import javax.annotation.Nullable; import javax.annotation.ParametersAreNonnullByDefault; +import org.jetbrains.annotations.NotNull; + import com.simibubi.create.Create; import com.simibubi.create.foundation.utility.DistExecutor; import com.tterrag.registrate.AbstractRegistrate; diff --git a/src/main/java/com/simibubi/create/foundation/mixin/accessor/DispenserBlockAccessor.java b/src/main/java/com/simibubi/create/foundation/mixin/accessor/DispenserBlockAccessor.java index 6f6e4c833d..63eb7303ea 100644 --- a/src/main/java/com/simibubi/create/foundation/mixin/accessor/DispenserBlockAccessor.java +++ b/src/main/java/com/simibubi/create/foundation/mixin/accessor/DispenserBlockAccessor.java @@ -5,10 +5,11 @@ import net.minecraft.core.dispenser.DispenseItemBehavior; import net.minecraft.world.item.ItemStack; +import net.minecraft.world.level.Level; import net.minecraft.world.level.block.DispenserBlock; @Mixin(DispenserBlock.class) public interface DispenserBlockAccessor { @Invoker("getDispenseMethod") - DispenseItemBehavior create$callGetDispenseMethod(ItemStack stack); + DispenseItemBehavior create$callGetDispenseMethod(Level level, ItemStack stack); } diff --git a/src/main/java/com/simibubi/create/foundation/mixin/accessor/ProjectileDispenseBehaviorAccessor.java b/src/main/java/com/simibubi/create/foundation/mixin/accessor/ProjectileDispenseBehaviorAccessor.java index e7cd8ef0df..b425090184 100644 --- a/src/main/java/com/simibubi/create/foundation/mixin/accessor/ProjectileDispenseBehaviorAccessor.java +++ b/src/main/java/com/simibubi/create/foundation/mixin/accessor/ProjectileDispenseBehaviorAccessor.java @@ -1,17 +1,10 @@ package com.simibubi.create.foundation.mixin.accessor; -import net.minecraft.core.dispenser.ProjectileDispenseBehavior; - -import net.minecraft.world.item.ProjectileItem; - import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.gen.Accessor; -import org.spongepowered.asm.mixin.gen.Invoker; -import net.minecraft.core.Position; -import net.minecraft.world.entity.projectile.Projectile; -import net.minecraft.world.item.ItemStack; -import net.minecraft.world.level.Level; +import net.minecraft.core.dispenser.ProjectileDispenseBehavior; +import net.minecraft.world.item.ProjectileItem; @Mixin(ProjectileDispenseBehavior.class) public interface ProjectileDispenseBehaviorAccessor { @@ -20,7 +13,4 @@ public interface ProjectileDispenseBehaviorAccessor { @Accessor("dispenseConfig") ProjectileItem.DispenseConfig create$getDispenseConfig(); - - @Invoker("getPower") - float create$callGetPower(); } diff --git a/src/main/java/com/simibubi/create/foundation/mixin/client/CameraMixin.java b/src/main/java/com/simibubi/create/foundation/mixin/client/CameraMixin.java index 2422a2d1c5..118a70446b 100644 --- a/src/main/java/com/simibubi/create/foundation/mixin/client/CameraMixin.java +++ b/src/main/java/com/simibubi/create/foundation/mixin/client/CameraMixin.java @@ -11,11 +11,11 @@ @Mixin(Camera.class) public abstract class CameraMixin { @ModifyArg( - method = "Lnet/minecraft/client/Camera;setup(Lnet/minecraft/world/level/BlockGetter;Lnet/minecraft/world/entity/Entity;ZZF)V", - at = @At(value = "INVOKE", target = "Lnet/minecraft/client/Camera;getMaxZoom(D)D"), + method = "setup(Lnet/minecraft/world/level/BlockGetter;Lnet/minecraft/world/entity/Entity;ZZF)V", + at = @At(value = "INVOKE", target = "Lnet/minecraft/client/Camera;getMaxZoom(F)F"), index = 0 ) - public double create$modifyCameraOffset(double originalValue) { + public float create$modifyCameraOffset(float originalValue) { return originalValue * CameraDistanceModifier.getMultiplier(); } } diff --git a/src/main/java/com/simibubi/create/infrastructure/debugInfo/DebugInformation.java b/src/main/java/com/simibubi/create/infrastructure/debugInfo/DebugInformation.java index fe7e3172d2..829ef6515b 100644 --- a/src/main/java/com/simibubi/create/infrastructure/debugInfo/DebugInformation.java +++ b/src/main/java/com/simibubi/create/infrastructure/debugInfo/DebugInformation.java @@ -12,6 +12,7 @@ import com.mojang.blaze3d.platform.GlUtil; import com.simibubi.create.Create; import com.simibubi.create.foundation.mixin.accessor.SystemReportAccessor; +import com.simibubi.create.foundation.utility.DistExecutor; import com.simibubi.create.infrastructure.debugInfo.element.DebugInfoSection; import com.simibubi.create.infrastructure.debugInfo.element.InfoElement; import com.simibubi.create.infrastructure.debugInfo.element.InfoEntry; @@ -160,10 +161,4 @@ public static String getIndent(int depth) { public static String tryTrim(@Nullable String s) { return s == null ? null : s.trim(); } - - public static class Client { - public static void getClientInfo() { - - } - } } diff --git a/src/main/resources/create.mixins.json b/src/main/resources/create.mixins.json index ff8462cef3..7e01b5c551 100644 --- a/src/main/resources/create.mixins.json +++ b/src/main/resources/create.mixins.json @@ -3,7 +3,7 @@ "minVersion": "0.8", "priority": 1100, "package": "com.simibubi.create.foundation.mixin", - "compatibilityLevel": "JAVA_17", + "compatibilityLevel": "JAVA_21", "refmap": "create.refmap.json", "mixins": [ "ClientboundMapItemDataPacketMixin",