diff --git a/build.gradle b/build.gradle
index 2da47d936..7b13d2fda 100644
--- a/build.gradle
+++ b/build.gradle
@@ -28,7 +28,7 @@ version = "${mc_update_version}-${mod_version}" + (dev ? ".${buildnumber}" : '')
group = 'com.jozufozu.flywheel'
archivesBaseName = 'flywheel'
-java.toolchain.languageVersion = JavaLanguageVersion.of(8)
+java.toolchain.languageVersion = JavaLanguageVersion.of(16)
minecraft {
mappings channel: 'official', version: "${minecraft_version}"
@@ -143,6 +143,7 @@ artifacts {
archives jar, sourcesJar, javadocJar
}
+/*
publishing {
tasks.publish.dependsOn 'build'
publications {
@@ -174,3 +175,4 @@ curseforge {
mainArtifact jar
}
}
+ */
diff --git a/gradle.properties b/gradle.properties
index 86775ac82..7f44b2836 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -2,9 +2,9 @@ org.gradle.jvmargs=-Xmx3G
org.gradle.daemon=false
# mod version info
mod_version=0.2.3
-mc_update_version=1.16
-minecraft_version=1.16.5
-forge_version=36.1.66
+mc_update_version=1.17
+minecraft_version=1.17.1
+forge_version=37.0.59
# curseforge info
projectId=486392
diff --git a/src/main/java/com/jozufozu/flywheel/Flywheel.java b/src/main/java/com/jozufozu/flywheel/Flywheel.java
index e44464612..3a34d5989 100644
--- a/src/main/java/com/jozufozu/flywheel/Flywheel.java
+++ b/src/main/java/com/jozufozu/flywheel/Flywheel.java
@@ -4,7 +4,7 @@ import com.jozufozu.flywheel.config.FlwCommands;
import com.jozufozu.flywheel.config.FlwConfig;
import com.jozufozu.flywheel.config.FlwPackets;
-import net.minecraft.util.ResourceLocation;
+import net.minecraft.resources.ResourceLocation;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.fml.DistExecutor;
diff --git a/src/main/java/com/jozufozu/flywheel/backend/Backend.java b/src/main/java/com/jozufozu/flywheel/backend/Backend.java
index 27852a64a..c352f951f 100644
--- a/src/main/java/com/jozufozu/flywheel/backend/Backend.java
+++ b/src/main/java/com/jozufozu/flywheel/backend/Backend.java
@@ -20,10 +20,10 @@ import com.jozufozu.flywheel.config.FlwConfig;
import com.jozufozu.flywheel.core.shader.spec.ProgramSpec;
import net.minecraft.client.Minecraft;
-import net.minecraft.util.ResourceLocation;
-import net.minecraft.util.math.vector.Matrix4f;
-import net.minecraft.world.IWorld;
-import net.minecraft.world.World;
+import net.minecraft.resources.ResourceLocation;
+import com.mojang.math.Matrix4f;
+import net.minecraft.world.level.LevelAccessor;
+import net.minecraft.world.level.Level;
public class Backend {
public static final Logger log = LogManager.getLogger(Backend.class);
@@ -144,7 +144,7 @@ public class Backend {
.chunkCaching();
}
- public boolean canUseInstancing(@Nullable World world) {
+ public boolean canUseInstancing(@Nullable Level world) {
return canUseInstancing() && isFlywheelWorld(world);
}
@@ -171,7 +171,7 @@ public class Backend {
/**
* Used to avoid calling Flywheel functions on (fake) worlds that don't specifically support it.
*/
- public static boolean isFlywheelWorld(@Nullable IWorld world) {
+ public static boolean isFlywheelWorld(@Nullable LevelAccessor world) {
if (world == null) return false;
if (world instanceof IFlywheelWorld && ((IFlywheelWorld) world).supportsFlywheel()) return true;
diff --git a/src/main/java/com/jozufozu/flywheel/backend/IShaderContext.java b/src/main/java/com/jozufozu/flywheel/backend/IShaderContext.java
index 181e40e84..0d24963f2 100644
--- a/src/main/java/com/jozufozu/flywheel/backend/IShaderContext.java
+++ b/src/main/java/com/jozufozu/flywheel/backend/IShaderContext.java
@@ -4,7 +4,7 @@ import java.util.function.Supplier;
import com.jozufozu.flywheel.backend.gl.shader.GlProgram;
-import net.minecraft.util.ResourceLocation;
+import net.minecraft.resources.ResourceLocation;
public interface IShaderContext
{
diff --git a/src/main/java/com/jozufozu/flywheel/backend/Loader.java b/src/main/java/com/jozufozu/flywheel/backend/Loader.java
index de617646e..dde50a6fe 100644
--- a/src/main/java/com/jozufozu/flywheel/backend/Loader.java
+++ b/src/main/java/com/jozufozu/flywheel/backend/Loader.java
@@ -20,11 +20,11 @@ import com.mojang.serialization.DataResult;
import com.mojang.serialization.JsonOps;
import net.minecraft.client.Minecraft;
-import net.minecraft.client.world.ClientWorld;
-import net.minecraft.resources.IReloadableResourceManager;
-import net.minecraft.resources.IResource;
-import net.minecraft.resources.IResourceManager;
-import net.minecraft.util.ResourceLocation;
+import net.minecraft.client.multiplayer.ClientLevel;
+import net.minecraft.server.packs.resources.ReloadableResourceManager;
+import net.minecraft.server.packs.resources.Resource;
+import net.minecraft.server.packs.resources.ResourceManager;
+import net.minecraft.resources.ResourceLocation;
import net.minecraftforge.fml.ModLoader;
import net.minecraftforge.resource.IResourceType;
import net.minecraftforge.resource.ISelectiveResourceReloadListener;
@@ -52,9 +52,9 @@ public class Loader implements ISelectiveResourceReloadListener {
// Can be null when running datagenerators due to the unfortunate time we call this
Minecraft minecraft = Minecraft.getInstance();
if (minecraft != null) {
- IResourceManager manager = minecraft.getResourceManager();
- if (manager instanceof IReloadableResourceManager) {
- ((IReloadableResourceManager) manager).registerReloadListener(this);
+ ResourceManager manager = minecraft.getResourceManager();
+ if (manager instanceof ReloadableResourceManager) {
+ ((ReloadableResourceManager) manager).registerReloadListener(this);
}
}
}
@@ -64,7 +64,7 @@ public class Loader implements ISelectiveResourceReloadListener {
}
@Override
- public void onResourceManagerReload(IResourceManager manager, Predicate predicate) {
+ public void onResourceManagerReload(ResourceManager manager, Predicate predicate) {
if (predicate.test(VanillaResourceType.SHADERS)) {
backend.refresh();
@@ -92,7 +92,7 @@ public class Loader implements ISelectiveResourceReloadListener {
Backend.log.info("Loaded all shader programs.");
- ClientWorld world = Minecraft.getInstance().level;
+ ClientLevel world = Minecraft.getInstance().level;
if (Backend.isFlywheelWorld(world)) {
// TODO: looks like it might be good to have another event here
InstancedRenderDispatcher.loadAllInWorld(world);
@@ -104,12 +104,12 @@ public class Loader implements ISelectiveResourceReloadListener {
}
}
- private void loadProgramSpecs(IResourceManager manager) {
+ private void loadProgramSpecs(ResourceManager manager) {
Collection programSpecs = manager.listResources(PROGRAM_DIR, s -> s.endsWith(".json"));
for (ResourceLocation location : programSpecs) {
try {
- IResource file = manager.getResource(location);
+ Resource file = manager.getResource(location);
String s = StreamUtil.readToString(file.getInputStream());
diff --git a/src/main/java/com/jozufozu/flywheel/backend/SpecMetaRegistry.java b/src/main/java/com/jozufozu/flywheel/backend/SpecMetaRegistry.java
index a19ed77f7..14717f9f7 100644
--- a/src/main/java/com/jozufozu/flywheel/backend/SpecMetaRegistry.java
+++ b/src/main/java/com/jozufozu/flywheel/backend/SpecMetaRegistry.java
@@ -6,7 +6,7 @@ import java.util.Map;
import com.jozufozu.flywheel.core.shader.extension.IProgramExtension;
import com.jozufozu.flywheel.core.shader.gamestate.IGameStateProvider;
-import net.minecraft.util.ResourceLocation;
+import net.minecraft.resources.ResourceLocation;
public class SpecMetaRegistry {
diff --git a/src/main/java/com/jozufozu/flywheel/backend/gl/shader/GlProgram.java b/src/main/java/com/jozufozu/flywheel/backend/gl/shader/GlProgram.java
index 39981fcb0..692002529 100644
--- a/src/main/java/com/jozufozu/flywheel/backend/gl/shader/GlProgram.java
+++ b/src/main/java/com/jozufozu/flywheel/backend/gl/shader/GlProgram.java
@@ -10,8 +10,8 @@ import com.jozufozu.flywheel.backend.Backend;
import com.jozufozu.flywheel.backend.gl.GlObject;
import com.jozufozu.flywheel.util.RenderUtil;
-import net.minecraft.util.ResourceLocation;
-import net.minecraft.util.math.vector.Matrix4f;
+import net.minecraft.resources.ResourceLocation;
+import com.mojang.math.Matrix4f;
public abstract class GlProgram extends GlObject {
diff --git a/src/main/java/com/jozufozu/flywheel/backend/gl/shader/GlShader.java b/src/main/java/com/jozufozu/flywheel/backend/gl/shader/GlShader.java
index 2fa733821..c386294ba 100644
--- a/src/main/java/com/jozufozu/flywheel/backend/gl/shader/GlShader.java
+++ b/src/main/java/com/jozufozu/flywheel/backend/gl/shader/GlShader.java
@@ -6,7 +6,7 @@ import com.jozufozu.flywheel.backend.Backend;
import com.jozufozu.flywheel.backend.gl.GlObject;
import com.jozufozu.flywheel.backend.gl.versioned.GlCompat;
-import net.minecraft.util.ResourceLocation;
+import net.minecraft.resources.ResourceLocation;
public class GlShader extends GlObject {
diff --git a/src/main/java/com/jozufozu/flywheel/backend/instancing/AbstractInstance.java b/src/main/java/com/jozufozu/flywheel/backend/instancing/AbstractInstance.java
index dc9c77c25..b17051c50 100644
--- a/src/main/java/com/jozufozu/flywheel/backend/instancing/AbstractInstance.java
+++ b/src/main/java/com/jozufozu/flywheel/backend/instancing/AbstractInstance.java
@@ -11,9 +11,9 @@ import com.jozufozu.flywheel.light.ImmutableBox;
import com.jozufozu.flywheel.light.LightProvider;
import com.jozufozu.flywheel.light.ListenerStatus;
-import net.minecraft.util.math.BlockPos;
-import net.minecraft.world.LightType;
-import net.minecraft.world.World;
+import net.minecraft.core.BlockPos;
+import net.minecraft.world.level.LightLayer;
+import net.minecraft.world.level.Level;
/**
* A general interface providing information about any type of thing that could use Flywheel's instanced rendering.
@@ -22,9 +22,9 @@ import net.minecraft.world.World;
public abstract class AbstractInstance implements IInstance, ILightUpdateListener {
protected final MaterialManager materialManager;
- public final World world;
+ public final Level world;
- public AbstractInstance(MaterialManager materialManager, World world) {
+ public AbstractInstance(MaterialManager materialManager, Level world) {
this.materialManager = materialManager;
this.world = world;
}
@@ -73,16 +73,16 @@ public abstract class AbstractInstance implements IInstance, ILightUpdateListene
}
@Override
- public void onLightUpdate(LightProvider world, LightType type, ImmutableBox changed) {
+ public void onLightUpdate(LightProvider world, LightLayer type, ImmutableBox changed) {
updateLight();
}
protected void relight(BlockPos pos, IFlatLight>... models) {
- relight(world.getBrightness(LightType.BLOCK, pos), world.getBrightness(LightType.SKY, pos), models);
+ relight(world.getBrightness(LightLayer.BLOCK, pos), world.getBrightness(LightLayer.SKY, pos), models);
}
protected > void relight(BlockPos pos, Stream models) {
- relight(world.getBrightness(LightType.BLOCK, pos), world.getBrightness(LightType.SKY, pos), models);
+ relight(world.getBrightness(LightLayer.BLOCK, pos), world.getBrightness(LightLayer.SKY, pos), models);
}
protected void relight(int block, int sky, IFlatLight>... models) {
diff --git a/src/main/java/com/jozufozu/flywheel/backend/instancing/IInstance.java b/src/main/java/com/jozufozu/flywheel/backend/instancing/IInstance.java
index ceeb2d6dc..9514740d8 100644
--- a/src/main/java/com/jozufozu/flywheel/backend/instancing/IInstance.java
+++ b/src/main/java/com/jozufozu/flywheel/backend/instancing/IInstance.java
@@ -1,6 +1,6 @@
package com.jozufozu.flywheel.backend.instancing;
-import net.minecraft.util.math.BlockPos;
+import net.minecraft.core.BlockPos;
public interface IInstance {
BlockPos getWorldPosition();
diff --git a/src/main/java/com/jozufozu/flywheel/backend/instancing/IInstanceRendered.java b/src/main/java/com/jozufozu/flywheel/backend/instancing/IInstanceRendered.java
index 71d9a13af..7a9fe3ec8 100644
--- a/src/main/java/com/jozufozu/flywheel/backend/instancing/IInstanceRendered.java
+++ b/src/main/java/com/jozufozu/flywheel/backend/instancing/IInstanceRendered.java
@@ -1,6 +1,6 @@
package com.jozufozu.flywheel.backend.instancing;
-import net.minecraft.world.World;
+import net.minecraft.world.level.Level;
/**
* Something (a TileEntity or Entity) that can be rendered using the instancing API.
@@ -14,5 +14,5 @@ public interface IInstanceRendered {
return false;
}
- World getWorld();
+ Level getWorld();
}
diff --git a/src/main/java/com/jozufozu/flywheel/backend/instancing/InstanceManager.java b/src/main/java/com/jozufozu/flywheel/backend/instancing/InstanceManager.java
index bb600858c..864706ca9 100644
--- a/src/main/java/com/jozufozu/flywheel/backend/instancing/InstanceManager.java
+++ b/src/main/java/com/jozufozu/flywheel/backend/instancing/InstanceManager.java
@@ -14,10 +14,10 @@ import com.jozufozu.flywheel.backend.material.MaterialManagerImpl;
import com.jozufozu.flywheel.light.LightUpdater;
import it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap;
-import net.minecraft.client.renderer.ActiveRenderInfo;
-import net.minecraft.util.math.BlockPos;
-import net.minecraft.util.math.MathHelper;
-import net.minecraft.util.math.vector.Vector3f;
+import net.minecraft.client.Camera;
+import net.minecraft.core.BlockPos;
+import net.minecraft.util.Mth;
+import com.mojang.math.Vector3f;
public abstract class InstanceManager implements MaterialManagerImpl.OriginShiftListener {
@@ -103,7 +103,7 @@ public abstract class InstanceManager implements MaterialManagerImpl.OriginSh
}
}
- public void beginFrame(ActiveRenderInfo info) {
+ public void beginFrame(Camera info) {
frame++;
processQueuedAdditions();
@@ -266,7 +266,7 @@ public abstract class InstanceManager implements MaterialManagerImpl.OriginSh
int i = (dSq / 2048);
- return divisorSequence[MathHelper.clamp(i, 0, divisorSequence.length - 1)];
+ return divisorSequence[Mth.clamp(i, 0, divisorSequence.length - 1)];
}
protected void addInternal(T tile) {
diff --git a/src/main/java/com/jozufozu/flywheel/backend/instancing/InstanceWorld.java b/src/main/java/com/jozufozu/flywheel/backend/instancing/InstanceWorld.java
index 880173feb..2cbd2d0a3 100644
--- a/src/main/java/com/jozufozu/flywheel/backend/instancing/InstanceWorld.java
+++ b/src/main/java/com/jozufozu/flywheel/backend/instancing/InstanceWorld.java
@@ -10,9 +10,9 @@ import com.jozufozu.flywheel.event.BeginFrameEvent;
import com.jozufozu.flywheel.event.RenderLayerEvent;
import net.minecraft.client.Minecraft;
-import net.minecraft.client.world.ClientWorld;
-import net.minecraft.entity.Entity;
-import net.minecraft.tileentity.TileEntity;
+import net.minecraft.client.multiplayer.ClientLevel;
+import net.minecraft.world.entity.Entity;
+import net.minecraft.world.level.block.entity.BlockEntity;
/**
* A manager class for a single world where instancing is supported.
@@ -23,7 +23,7 @@ import net.minecraft.tileentity.TileEntity;
public class InstanceWorld {
protected final MaterialManagerImpl materialManager;
protected final InstanceManager entityInstanceManager;
- protected final InstanceManager tileEntityInstanceManager;
+ protected final InstanceManager tileEntityInstanceManager;
public InstanceWorld() {
@@ -41,7 +41,7 @@ public class InstanceWorld {
return entityInstanceManager;
}
- public InstanceManager getTileEntityInstanceManager() {
+ public InstanceManager getTileEntityInstanceManager() {
return tileEntityInstanceManager;
}
@@ -55,7 +55,7 @@ public class InstanceWorld {
/**
* Instantiate all the necessary instances to render the given world.
*/
- public void loadAll(ClientWorld world) {
+ public void loadAll(ClientLevel world) {
world.blockEntityList.forEach(tileEntityInstanceManager::add);
world.entitiesForRendering()
.forEach(entityInstanceManager::add);
diff --git a/src/main/java/com/jozufozu/flywheel/backend/instancing/InstancedRenderDispatcher.java b/src/main/java/com/jozufozu/flywheel/backend/instancing/InstancedRenderDispatcher.java
index 32810d03d..d0c0fa6e9 100644
--- a/src/main/java/com/jozufozu/flywheel/backend/instancing/InstancedRenderDispatcher.java
+++ b/src/main/java/com/jozufozu/flywheel/backend/instancing/InstancedRenderDispatcher.java
@@ -10,10 +10,10 @@ import com.jozufozu.flywheel.util.AnimationTickHolder;
import com.jozufozu.flywheel.util.WorldAttached;
import net.minecraft.client.Minecraft;
-import net.minecraft.client.world.ClientWorld;
-import net.minecraft.entity.Entity;
-import net.minecraft.tileentity.TileEntity;
-import net.minecraft.world.IWorld;
+import net.minecraft.client.multiplayer.ClientLevel;
+import net.minecraft.world.entity.Entity;
+import net.minecraft.world.level.block.entity.BlockEntity;
+import net.minecraft.world.level.LevelAccessor;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.api.distmarker.OnlyIn;
import net.minecraftforge.event.TickEvent;
@@ -30,7 +30,7 @@ public class InstancedRenderDispatcher {
* Call this when you want to manually run {@link AbstractInstance#update()}.
* @param te The tile whose instance you want to update.
*/
- public static void enqueueUpdate(TileEntity te) {
+ public static void enqueueUpdate(BlockEntity te) {
getTiles(te.getLevel()).queueUpdate(te);
}
@@ -43,13 +43,13 @@ public class InstancedRenderDispatcher {
}
@Nonnull
- public static InstanceManager getTiles(IWorld world) {
+ public static InstanceManager getTiles(LevelAccessor world) {
return instanceWorlds.get(world)
.getTileEntityInstanceManager();
}
@Nonnull
- public static InstanceManager getEntities(IWorld world) {
+ public static InstanceManager getEntities(LevelAccessor world) {
return instanceWorlds.get(world)
.getEntityInstanceManager();
}
@@ -61,7 +61,7 @@ public class InstancedRenderDispatcher {
return;
}
Minecraft mc = Minecraft.getInstance();
- ClientWorld world = mc.level;
+ ClientLevel world = mc.level;
AnimationTickHolder.tick();
instanceWorlds.get(world).tick();
@@ -79,7 +79,7 @@ public class InstancedRenderDispatcher {
public static void renderLayer(RenderLayerEvent event) {
if (event.layer == null) return;
- ClientWorld world = event.getWorld();
+ ClientLevel world = event.getWorld();
if (!Backend.getInstance()
.canUseInstancing(world)) return;
@@ -88,14 +88,14 @@ public class InstancedRenderDispatcher {
@SubscribeEvent
public static void onReloadRenderers(ReloadRenderersEvent event) {
- ClientWorld world = event.getWorld();
+ ClientLevel world = event.getWorld();
if (Backend.getInstance()
.canUseInstancing() && world != null) {
loadAllInWorld(world);
}
}
- public static void loadAllInWorld(ClientWorld world) {
+ public static void loadAllInWorld(ClientLevel world) {
instanceWorlds.replace(world, InstanceWorld::delete)
.loadAll(world);
}
diff --git a/src/main/java/com/jozufozu/flywheel/backend/instancing/InstancedRenderRegistry.java b/src/main/java/com/jozufozu/flywheel/backend/instancing/InstancedRenderRegistry.java
index a44b2b6da..cbafe6398 100644
--- a/src/main/java/com/jozufozu/flywheel/backend/instancing/InstancedRenderRegistry.java
+++ b/src/main/java/com/jozufozu/flywheel/backend/instancing/InstancedRenderRegistry.java
@@ -13,10 +13,10 @@ import com.jozufozu.flywheel.backend.material.MaterialManager;
import it.unimi.dsi.fastutil.objects.Object2BooleanLinkedOpenHashMap;
import it.unimi.dsi.fastutil.objects.Object2BooleanMap;
-import net.minecraft.entity.Entity;
-import net.minecraft.entity.EntityType;
-import net.minecraft.tileentity.TileEntity;
-import net.minecraft.tileentity.TileEntityType;
+import net.minecraft.world.entity.Entity;
+import net.minecraft.world.entity.EntityType;
+import net.minecraft.world.level.block.entity.BlockEntity;
+import net.minecraft.world.level.block.entity.BlockEntityType;
public class InstancedRenderRegistry {
private static final InstancedRenderRegistry INSTANCE = new InstancedRenderRegistry();
@@ -26,14 +26,14 @@ public class InstancedRenderRegistry {
}
private final Object2BooleanMap