add neo 1.21.9 support
This commit is contained in:
+1
-5
@@ -59,13 +59,9 @@ public class DependencySetup
|
||||
DependencySetupDoneCheck.isDone = true;
|
||||
}
|
||||
|
||||
//@Environment(EnvType.SERVER)
|
||||
public static void createServerBindings()
|
||||
{
|
||||
SingletonInjector.INSTANCE.bind(IMinecraftSharedWrapper.class, MinecraftServerWrapper.INSTANCE);
|
||||
}
|
||||
{ SingletonInjector.INSTANCE.bind(IMinecraftSharedWrapper.class, MinecraftServerWrapper.INSTANCE); }
|
||||
|
||||
//@Environment(EnvType.CLIENT)
|
||||
public static void createClientBindings()
|
||||
{
|
||||
SingletonInjector.INSTANCE.bind(IMinecraftClientWrapper.class, MinecraftClientWrapper.INSTANCE);
|
||||
|
||||
+8
-1
@@ -920,12 +920,19 @@ public class ClassicConfigGUI
|
||||
@Override
|
||||
#if MC_VER < MC_1_20_1
|
||||
public void render(PoseStack matrices, int index, int y, int x, int entryWidth, int entryHeight, int mouseX, int mouseY, boolean hovered, float tickDelta)
|
||||
#else
|
||||
#elif MC_VER < MC_1_21_9
|
||||
public void render(GuiGraphics matrices, int index, int y, int x, int entryWidth, int entryHeight, int mouseX, int mouseY, boolean hovered, float tickDelta)
|
||||
#else
|
||||
public void renderContent(GuiGraphics matrices, int mouseX, int mouseY, boolean hovered, float tickDelta)
|
||||
#endif
|
||||
{
|
||||
try
|
||||
{
|
||||
#if MC_VER < MC_1_21_9
|
||||
#else
|
||||
int y = this.getY(); // TODO why is the Y value being set during render?
|
||||
#endif
|
||||
|
||||
if (this.button != null)
|
||||
{
|
||||
SetY(this.button, y);
|
||||
|
||||
+4
@@ -39,7 +39,11 @@ public class MinecraftScreen
|
||||
protected ConfigScreenRenderer(Screen parent, AbstractScreen screen, String translationName)
|
||||
{
|
||||
super(translate(translationName));
|
||||
#if MC_VER < MC_1_21_9
|
||||
screen.minecraftWindow = Minecraft.getInstance().getWindow().getWindow();
|
||||
#else
|
||||
screen.minecraftWindow = Minecraft.getInstance().getWindow().handle();
|
||||
#endif
|
||||
this.parent = parent;
|
||||
this.screen = screen;
|
||||
}
|
||||
|
||||
+15
-22
@@ -253,42 +253,35 @@ public class ChangelogScreen extends DhScreen
|
||||
private final Component text;
|
||||
private final List<AbstractWidget> children = new ArrayList<>();
|
||||
|
||||
private ButtonEntry(Component text)
|
||||
{
|
||||
this.text = text;
|
||||
}
|
||||
private ButtonEntry(Component text) { this.text = text; }
|
||||
|
||||
public static ButtonEntry create(Component text)
|
||||
{
|
||||
return new ButtonEntry(text);
|
||||
}
|
||||
{ return new ButtonEntry(text); }
|
||||
|
||||
#if MC_VER < MC_1_20_1
|
||||
@Override
|
||||
public void render(PoseStack matrices, int index, int y, int x, int entryWidth, int entryHeight, int mouseX, int mouseY, boolean hovered, float tickDelta)
|
||||
{
|
||||
GuiComponent.drawString(matrices, textRenderer, text, 12, y + 5, 0xFFFFFF);
|
||||
}
|
||||
#else
|
||||
{ GuiComponent.drawString(matrices, textRenderer, text, 12, y + 5, 0xFFFFFF); }
|
||||
#elif MC_VER < MC_1_21_9
|
||||
@Override
|
||||
public void render(GuiGraphics matrices, int index, int y, int x, int entryWidth, int entryHeight, int mouseX, int mouseY, boolean hovered, float tickDelta)
|
||||
{
|
||||
matrices.drawString(textRenderer, this.text, 12, y + 5, 0xFFFFFF);
|
||||
}
|
||||
{ matrices.drawString(textRenderer, this.text, 12, y + 5, 0xFFFFFF); }
|
||||
#else
|
||||
@Override
|
||||
public void renderContent(GuiGraphics matrices, int y, int x, boolean hovered, float tickDelta)
|
||||
{ matrices.drawString(textRenderer, this.text, 12, y + 5, 0xFFFFFF); }
|
||||
#endif
|
||||
|
||||
@Override
|
||||
public List<? extends GuiEventListener> children()
|
||||
{
|
||||
return this.children;
|
||||
}
|
||||
public List<? extends GuiEventListener> children() { return this.children; }
|
||||
|
||||
#if MC_VER >= MC_1_17_1
|
||||
@Override
|
||||
public List<? extends NarratableEntry> narratables()
|
||||
{
|
||||
return this.children;
|
||||
}
|
||||
public List<? extends NarratableEntry> narratables() { return this.children; }
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
+59
-13
@@ -23,8 +23,11 @@ import java.awt.Color;
|
||||
import java.lang.invoke.MethodHandles;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
|
||||
import com.mojang.blaze3d.opengl.GlTexture;
|
||||
import com.mojang.blaze3d.pipeline.RenderTarget;
|
||||
import com.mojang.blaze3d.platform.NativeImage;
|
||||
import com.mojang.blaze3d.systems.RenderSystem;
|
||||
import com.mojang.blaze3d.textures.GpuTexture;
|
||||
import com.seibel.distanthorizons.common.wrappers.WrapperFactory;
|
||||
import com.seibel.distanthorizons.common.wrappers.misc.LightMapWrapper;
|
||||
import com.seibel.distanthorizons.core.dependencyInjection.ModAccessorInjector;
|
||||
@@ -72,25 +75,21 @@ import net.minecraft.world.phys.Vec3;
|
||||
import org.apache.logging.log4j.Logger;
|
||||
import org.joml.Vector4f;
|
||||
|
||||
#if MC_VER >= MC_1_21_5
|
||||
#if MC_VER >= MC_1_21_5 && MC_VER < MC_1_21_9
|
||||
import com.mojang.blaze3d.opengl.GlTexture;
|
||||
#else
|
||||
#endif
|
||||
|
||||
/**
|
||||
* A singleton that contains everything
|
||||
* related to rendering in Minecraft.
|
||||
*
|
||||
* @author James Seibel
|
||||
* @version 12-12-2021
|
||||
*/
|
||||
//@Environment(EnvType.CLIENT)
|
||||
public class MinecraftRenderWrapper implements IMinecraftRenderWrapper
|
||||
{
|
||||
public static final MinecraftRenderWrapper INSTANCE = new MinecraftRenderWrapper();
|
||||
|
||||
private static final Logger LOGGER = DhLoggerBuilder.getLogger(MethodHandles.lookup().lookupClass().getSimpleName());
|
||||
private static final Minecraft MC = Minecraft.getInstance();
|
||||
private static final IWrapperFactory FACTORY = WrapperFactory.INSTANCE;
|
||||
|
||||
private static final IOptifineAccessor OPTIFINE_ACCESSOR = ModAccessorInjector.INSTANCE.get(IOptifineAccessor.class);
|
||||
|
||||
@@ -300,7 +299,7 @@ public class MinecraftRenderWrapper implements IMinecraftRenderWrapper
|
||||
return height;
|
||||
}
|
||||
|
||||
private RenderTarget getRenderTarget() { return MC.getMainRenderTarget(); }
|
||||
protected RenderTarget getRenderTarget() { return MC.getMainRenderTarget(); }
|
||||
|
||||
@Override
|
||||
public boolean mcRendersToFrameBuffer()
|
||||
@@ -348,19 +347,39 @@ public class MinecraftRenderWrapper implements IMinecraftRenderWrapper
|
||||
{
|
||||
#if MC_VER < MC_1_21_5
|
||||
return this.getRenderTarget().getDepthTextureId();
|
||||
#else
|
||||
#elif MC_VER < MC_1_21_9
|
||||
try
|
||||
{
|
||||
{
|
||||
GlTexture glTexture = (GlTexture) this.getRenderTarget().getDepthTexture();
|
||||
if (glTexture == null)
|
||||
{
|
||||
// shouldn't happen, but just in case
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
return glTexture.glId();
|
||||
|
||||
}
|
||||
catch (ClassCastException e)
|
||||
catch (Exception e)
|
||||
{
|
||||
// only log this error once per session
|
||||
if (!this.depthTextureCastFailLogged)
|
||||
{
|
||||
this.depthTextureCastFailLogged = true;
|
||||
LOGGER.error("Unable to cast render Target depth texture to GlTexture. MC or a rendering mod may have changed the object type.", e);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
#else
|
||||
try
|
||||
{
|
||||
throw new UnsupportedOperationException("Fabric get texture ID not implemented yet");
|
||||
|
||||
//GpuTexture depthTex = this.getRenderTarget().getDepthTexture();
|
||||
//int id = ((GlTexture)depthTex.getClass().getMethod("getRealTexture").invoke(depthTex)).glId();
|
||||
//return id;
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
// only log this error once per session
|
||||
if (!this.depthTextureCastFailLogged)
|
||||
@@ -377,7 +396,7 @@ public class MinecraftRenderWrapper implements IMinecraftRenderWrapper
|
||||
{
|
||||
#if MC_VER < MC_1_21_5
|
||||
return this.getRenderTarget().getColorTextureId();
|
||||
#else
|
||||
#elif MC_VER < MC_1_21_9
|
||||
try
|
||||
{
|
||||
GlTexture glTexture = (GlTexture) this.getRenderTarget().getColorTexture();
|
||||
@@ -389,7 +408,26 @@ public class MinecraftRenderWrapper implements IMinecraftRenderWrapper
|
||||
|
||||
return glTexture.glId();
|
||||
}
|
||||
catch (ClassCastException e)
|
||||
catch (Exception e)
|
||||
{
|
||||
// only log this error once per session
|
||||
if (!this.colorTextureCastFailLogged)
|
||||
{
|
||||
this.colorTextureCastFailLogged = true;
|
||||
LOGGER.error("Unable to cast render Target color texture to GlTexture. MC or a rendering mod may have changed the object type.", e);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
#else
|
||||
try
|
||||
{
|
||||
throw new UnsupportedOperationException("Fabric get texture ID not implemented yet");
|
||||
|
||||
//GpuTexture colorTex = this.getRenderTarget().getColorTexture();
|
||||
//int id = ((GlTexture)colorTex.getClass().getMethod("getRealTexture").invoke(colorTex)).glId();
|
||||
//return id;
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
// only log this error once per session
|
||||
if (!this.colorTextureCastFailLogged)
|
||||
@@ -405,13 +443,21 @@ public class MinecraftRenderWrapper implements IMinecraftRenderWrapper
|
||||
@Override
|
||||
public int getTargetFrameBufferViewportWidth()
|
||||
{
|
||||
#if MC_VER < MC_1_21_9
|
||||
return this.getRenderTarget().viewWidth;
|
||||
#else
|
||||
return this.getRenderTarget().width;
|
||||
#endif
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getTargetFrameBufferViewportHeight()
|
||||
{
|
||||
#if MC_VER < MC_1_21_9
|
||||
return this.getRenderTarget().viewHeight;
|
||||
#else
|
||||
return this.getRenderTarget().height;
|
||||
#endif
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
-20
@@ -71,26 +71,6 @@ public class ServerPlayerWrapper implements IServerPlayerWrapper
|
||||
return new Vec3d(position.x, position.y, position.z);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getViewDistance()
|
||||
{
|
||||
#if MC_VER < MC_1_21_6
|
||||
return this.getServerPlayer().server.getPlayerList().getViewDistance();
|
||||
#else
|
||||
return this.getServerPlayer().getServer().getPlayerList().getViewDistance();
|
||||
#endif
|
||||
}
|
||||
|
||||
@Override
|
||||
public SocketAddress getRemoteAddress()
|
||||
{
|
||||
#if MC_VER >= MC_1_19_4
|
||||
return this.getServerPlayer().connection.getRemoteAddress();
|
||||
#else // < 1.19.4
|
||||
return this.getServerPlayer().connection.connection.getRemoteAddress();
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
|
||||
//================//
|
||||
|
||||
+6
-2
@@ -116,8 +116,10 @@ public final class BatchGenerationEnvironment extends AbstractBatchGenerationEnv
|
||||
|
||||
#if MC_VER < MC_1_21_5
|
||||
private static final TicketType<ChunkPos> DH_SERVER_GEN_TICKET = TicketType.create("dh_server_gen_ticket", Comparator.comparingLong(ChunkPos::toLong));
|
||||
#else
|
||||
#elif MC_VER < MC_1_21_9
|
||||
private static final TicketType DH_SERVER_GEN_TICKET = new TicketType(/* timeout, 0 = disabled*/0L, /* persist */ false, TicketType.TicketUse.LOADING);
|
||||
#else
|
||||
private static final TicketType DH_SERVER_GEN_TICKET = new TicketType(/* timeout, 0 = disabled*/0L, /* flags */0);
|
||||
#endif
|
||||
|
||||
private static final IModChecker MOD_CHECKER = SingletonInjector.INSTANCE.get(IModChecker.class);
|
||||
@@ -745,8 +747,10 @@ public final class BatchGenerationEnvironment extends AbstractBatchGenerationEnv
|
||||
return new ProtoChunk(chunkPos, UpgradeData.EMPTY, level, level.registryAccess().registryOrThrow(Registries.BIOME), null);
|
||||
#elif MC_VER < MC_1_21_3
|
||||
return new ProtoChunk(chunkPos, UpgradeData.EMPTY, level, level.registryAccess().registryOrThrow(Registries.BIOME), null);
|
||||
#else
|
||||
#elif MC_VER < MC_1_21_9
|
||||
return new ProtoChunk(chunkPos, UpgradeData.EMPTY, level, level.registryAccess().lookupOrThrow(Registries.BIOME), null);
|
||||
#else
|
||||
return new ProtoChunk(chunkPos, UpgradeData.EMPTY, level, null, null);
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
+34
-7
@@ -35,6 +35,8 @@ import java.util.concurrent.atomic.AtomicBoolean;
|
||||
|
||||
|
||||
import it.unimi.dsi.fastutil.shorts.ShortList;
|
||||
import net.minecraft.core.DefaultedMappedRegistry;
|
||||
import net.minecraft.core.IdMapper;
|
||||
import net.minecraft.core.Registry;
|
||||
#if MC_VER >= MC_1_19_4
|
||||
import net.minecraft.core.registries.BuiltInRegistries;
|
||||
@@ -45,6 +47,7 @@ import net.minecraft.nbt.ListTag;
|
||||
import net.minecraft.nbt.NbtOps;
|
||||
import net.minecraft.nbt.Tag;
|
||||
import net.minecraft.resources.ResourceLocation;
|
||||
import net.minecraft.util.datafix.fixes.ChunkHeightAndBiomeFix;
|
||||
import net.minecraft.world.level.*;
|
||||
import net.minecraft.world.level.biome.Biome;
|
||||
import net.minecraft.world.level.biome.Biomes;
|
||||
@@ -94,11 +97,15 @@ public class ChunkLoader
|
||||
private static final AtomicBoolean ZERO_CHUNK_POS_ERROR_LOGGED_REF = new AtomicBoolean(false);
|
||||
|
||||
|
||||
#if MC_VER >= MC_1_19_2
|
||||
#if MC_VER >= MC_1_21_9
|
||||
// BLOCK_STATE_CODEC can no longer be statically created since
|
||||
// it needs a level reference
|
||||
#elif MC_VER >= MC_1_19_2
|
||||
private static final Codec<PalettedContainer<BlockState>> BLOCK_STATE_CODEC = PalettedContainer.codecRW(Block.BLOCK_STATE_REGISTRY, BlockState.CODEC, PalettedContainer.Strategy.SECTION_STATES, Blocks.AIR.defaultBlockState());
|
||||
#elif MC_VER >= MC_1_18_2
|
||||
private static final Codec<PalettedContainer<BlockState>> BLOCK_STATE_CODEC = PalettedContainer.codec(Block.BLOCK_STATE_REGISTRY, BlockState.CODEC, PalettedContainer.Strategy.SECTION_STATES, Blocks.AIR.defaultBlockState());
|
||||
#endif
|
||||
|
||||
private static final String TAG_UPGRADE_DATA = "UpgradeData";
|
||||
private static final String BLOCK_TICKS_TAG_18 = "block_ticks";
|
||||
private static final String FLUID_TICKS_TAG_18 = "fluid_ticks";
|
||||
@@ -259,6 +266,14 @@ public class ChunkLoader
|
||||
}
|
||||
private static LevelChunkSection[] readSections(LevelAccessor level, ChunkPos chunkPos, CompoundTag chunkData)
|
||||
{
|
||||
#if MC_VER < MC_1_21_9
|
||||
// BLOCK_STATE_CODEC is created statically
|
||||
// TODO clean up this code separation
|
||||
#else
|
||||
final Codec<PalettedContainer<BlockState>> BLOCK_STATE_CODEC = PalettedContainerFactory.create(level.registryAccess()).blockStatesContainerCodec();
|
||||
#endif
|
||||
|
||||
|
||||
#if MC_VER >= MC_1_18_2
|
||||
#if MC_VER < MC_1_19_4
|
||||
Registry<Biome> biomes = level.registryAccess().registryOrThrow(Registry.BIOME_REGISTRY);
|
||||
@@ -276,9 +291,12 @@ public class ChunkLoader
|
||||
#elif MC_VER < MC_1_21_3
|
||||
Codec<PalettedContainer<Holder<Biome>>> biomeCodec = PalettedContainer.codecRW(
|
||||
biomes.asHolderIdMap(), biomes.holderByNameCodec(), PalettedContainer.Strategy.SECTION_BIOMES, biomes.getHolderOrThrow(Biomes.PLAINS));
|
||||
#else
|
||||
#elif MC_VER < MC_1_21_9
|
||||
Codec<PalettedContainer<Holder<Biome>>> biomeCodec = PalettedContainer.codecRW(
|
||||
biomes.asHolderIdMap(), biomes.holderByNameCodec(), PalettedContainer.Strategy.SECTION_BIOMES, biomes.getOrThrow(Biomes.PLAINS));
|
||||
#else
|
||||
Codec<PalettedContainer<Holder<Biome>>> biomeCodec = PalettedContainer.codecRW(
|
||||
biomes.holderByNameCodec(), PalettedContainerFactory.create(level.registryAccess()).biomeStrategy(), biomes.getOrThrow(Biomes.PLAINS));
|
||||
#endif
|
||||
#endif
|
||||
|
||||
@@ -348,7 +366,11 @@ public class ChunkLoader
|
||||
}
|
||||
else
|
||||
{
|
||||
#if MC_VER < MC_1_21_9
|
||||
blockStateContainer = new PalettedContainer<BlockState>(Block.BLOCK_STATE_REGISTRY, Blocks.AIR.defaultBlockState(), PalettedContainer.Strategy.SECTION_STATES);
|
||||
#else
|
||||
blockStateContainer = PalettedContainerFactory.create(level.registryAccess()).createForBlockStates();
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
@@ -380,13 +402,18 @@ public class ChunkLoader
|
||||
}
|
||||
else
|
||||
{
|
||||
biomeContainer = new PalettedContainer<Holder<Biome>>(biomes.asHolderIdMap(),
|
||||
#if MC_VER < MC_1_21_3
|
||||
biomes.getHolderOrThrow(Biomes.PLAINS),
|
||||
#else
|
||||
#if MC_VER < MC_1_21_3
|
||||
biomeContainer = new PalettedContainer<Holder<Biome>>(
|
||||
biomes.asHolderIdMap(),
|
||||
biomes.getHolderOrThrow(Biomes.PLAINS), PalettedContainer.Strategy.SECTION_BIOMES);
|
||||
#elif MC_VER < MC_1_21_9
|
||||
biomeContainer = new PalettedContainer<Holder<Biome>>(biomes.asHolderIdMap(),
|
||||
biomes.getOrThrow(Biomes.PLAINS),
|
||||
#endif
|
||||
PalettedContainer.Strategy.SECTION_BIOMES);
|
||||
#else
|
||||
biomeContainer = PalettedContainerFactory.create(level.registryAccess()).createForBiomes();
|
||||
#endif
|
||||
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
+1
-1
Submodule coreSubProjects updated: 12a885aa6e...9690c898b0
@@ -43,7 +43,6 @@ import net.fabricmc.api.Environment;
|
||||
import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientChunkEvents;
|
||||
import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientTickEvents;
|
||||
import net.fabricmc.fabric.api.client.networking.v1.ClientPlayNetworking;
|
||||
import net.fabricmc.fabric.api.client.rendering.v1.WorldRenderEvents;
|
||||
import net.fabricmc.fabric.api.event.player.AttackBlockCallback;
|
||||
import net.fabricmc.fabric.api.event.player.UseBlockCallback;
|
||||
import net.minecraft.client.Minecraft;
|
||||
@@ -63,6 +62,10 @@ import java.util.HashSet;
|
||||
import java.util.concurrent.AbstractExecutorService;
|
||||
import java.util.concurrent.ThreadPoolExecutor;
|
||||
|
||||
#if MC_VER < MC_1_21_9
|
||||
import net.fabricmc.fabric.api.client.rendering.v1.WorldRenderEvents;
|
||||
#endif
|
||||
|
||||
import net.minecraft.client.multiplayer.ClientLevel;
|
||||
import net.minecraft.world.InteractionResult;
|
||||
import net.minecraft.world.level.chunk.ChunkAccess;
|
||||
@@ -103,6 +106,14 @@ public class FabricClientProxy implements AbstractModInitializer.IEventProxy
|
||||
LOGGER.info("Registering Fabric Client Events");
|
||||
|
||||
|
||||
#if MC_VER < MC_1_21_9
|
||||
// old versions still run like normal
|
||||
#else
|
||||
if (true)
|
||||
throw new UnsupportedOperationException("DH doesn't support 1.21.9 yet because the Fabric Rendering API is missing required events. Please wait for the Fabric team to update their API.");
|
||||
#endif
|
||||
|
||||
|
||||
//========================//
|
||||
// register mod accessors //
|
||||
//========================//
|
||||
@@ -217,6 +228,8 @@ public class FabricClientProxy implements AbstractModInitializer.IEventProxy
|
||||
// render event //
|
||||
//==============//
|
||||
|
||||
// TODO wait for fabric to re-add their rendering API
|
||||
#if MC_VER < MC_1_21_9
|
||||
WorldRenderEvents.AFTER_SETUP.register((renderContext) ->
|
||||
{
|
||||
Mat4f projectionMatrix = McObjectConverter.Convert(renderContext.projectionMatrix());
|
||||
@@ -306,6 +319,7 @@ public class FabricClientProxy implements AbstractModInitializer.IEventProxy
|
||||
ClientLevelWrapper.getWrapper(renderContext.world())
|
||||
);
|
||||
});
|
||||
#endif
|
||||
|
||||
|
||||
// Debug keyboard event
|
||||
@@ -355,18 +369,18 @@ public class FabricClientProxy implements AbstractModInitializer.IEventProxy
|
||||
// Check all keys we need
|
||||
for (int keyCode = GLFW.GLFW_KEY_A; keyCode <= GLFW.GLFW_KEY_Z; keyCode++)
|
||||
{
|
||||
if (InputConstants.isKeyDown(Minecraft.getInstance().getWindow().getWindow(), keyCode))
|
||||
{
|
||||
currentKeyDown.add(keyCode);
|
||||
}
|
||||
//if (InputConstants.isKeyDown(Minecraft.getInstance().getWindow().getWindow(), keyCode))
|
||||
//{
|
||||
// currentKeyDown.add(keyCode);
|
||||
//}
|
||||
}
|
||||
|
||||
for (int keyCode : KEY_TO_CHECK_FOR)
|
||||
{
|
||||
if (InputConstants.isKeyDown(Minecraft.getInstance().getWindow().getWindow(), keyCode))
|
||||
{
|
||||
currentKeyDown.add(keyCode);
|
||||
}
|
||||
//if (InputConstants.isKeyDown(Minecraft.getInstance().getWindow().getWindow(), keyCode))
|
||||
//{
|
||||
// currentKeyDown.add(keyCode);
|
||||
//}
|
||||
}
|
||||
|
||||
// Diff and trigger events
|
||||
|
||||
+5
-3
@@ -22,6 +22,7 @@ package com.seibel.distanthorizons.fabric.mixins.client;
|
||||
import com.seibel.distanthorizons.common.wrappers.minecraft.MinecraftRenderWrapper;
|
||||
import com.seibel.distanthorizons.core.dependencyInjection.SingletonInjector;
|
||||
import com.seibel.distanthorizons.core.wrapperInterfaces.minecraft.IMinecraftClientWrapper;
|
||||
import com.seibel.distanthorizons.core.wrapperInterfaces.minecraft.IMinecraftRenderWrapper;
|
||||
import com.seibel.distanthorizons.core.wrapperInterfaces.world.IClientLevelWrapper;
|
||||
import net.minecraft.client.renderer.LightTexture;
|
||||
|
||||
@@ -73,14 +74,15 @@ public class MixinLightTexture
|
||||
|
||||
|
||||
IClientLevelWrapper clientLevel = mc.getWrappedClientLevel();
|
||||
MinecraftRenderWrapper renderWrapper = (MinecraftRenderWrapper)SingletonInjector.INSTANCE.get(IMinecraftRenderWrapper.class);
|
||||
|
||||
#if MC_VER < MC_1_21_3
|
||||
MinecraftRenderWrapper.INSTANCE.updateLightmap(this.lightPixels, clientLevel);
|
||||
renderWrapper.updateLightmap(this.lightPixels, clientLevel);
|
||||
#elif MC_VER < MC_1_21_5
|
||||
MinecraftRenderWrapper.INSTANCE.setLightmapId(this.target.getColorTextureId(), clientLevel);
|
||||
renderWrapper.setLightmapId(this.target.getColorTextureId(), clientLevel);
|
||||
#else
|
||||
GlTexture glTexture = (GlTexture) this.texture;
|
||||
MinecraftRenderWrapper.INSTANCE.setLightmapId(glTexture.glId(), clientLevel);
|
||||
renderWrapper.setLightmapId(glTexture.glId(), clientLevel);
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
+1
-1
@@ -54,7 +54,7 @@ versionStr=
|
||||
|
||||
# This defines what MC version Intellij will use for the preprocessor
|
||||
# and what version is used automatically by build and run commands
|
||||
mcVer=1.21.8
|
||||
mcVer=1.21.9
|
||||
|
||||
# Defines the maximum amount of memory Minecraft is allowed when run in a development environment
|
||||
#minecraftMemoryJavaArg="-Xmx4G"
|
||||
|
||||
@@ -22,15 +22,18 @@ package com.seibel.distanthorizons.neoforge;
|
||||
import com.mojang.brigadier.CommandDispatcher;
|
||||
import com.seibel.distanthorizons.common.AbstractModInitializer;
|
||||
import com.seibel.distanthorizons.common.wrappers.gui.GetConfigScreen;
|
||||
import com.seibel.distanthorizons.common.wrappers.minecraft.MinecraftRenderWrapper;
|
||||
import com.seibel.distanthorizons.core.api.internal.ClientApi;
|
||||
import com.seibel.distanthorizons.core.api.internal.ServerApi;
|
||||
import com.seibel.distanthorizons.core.dependencyInjection.SingletonInjector;
|
||||
import com.seibel.distanthorizons.core.network.messages.AbstractNetworkMessage;
|
||||
import com.seibel.distanthorizons.core.wrapperInterfaces.minecraft.IMinecraftRenderWrapper;
|
||||
import com.seibel.distanthorizons.core.wrapperInterfaces.misc.IPluginPacketSender;
|
||||
import com.seibel.distanthorizons.core.wrapperInterfaces.misc.IServerPlayerWrapper;
|
||||
import com.seibel.distanthorizons.core.wrapperInterfaces.modAccessor.IModChecker;
|
||||
import com.seibel.distanthorizons.core.wrapperInterfaces.modAccessor.IOptifineAccessor;
|
||||
import com.seibel.distanthorizons.coreapi.ModInfo;
|
||||
import com.seibel.distanthorizons.neoforge.wrappers.NeoforgeMinecraftRenderWrapper;
|
||||
import com.seibel.distanthorizons.neoforge.wrappers.modAccessor.ModChecker;
|
||||
import com.seibel.distanthorizons.neoforge.wrappers.modAccessor.OptifineAccessor;
|
||||
import net.minecraft.commands.CommandSourceStack;
|
||||
@@ -125,6 +128,10 @@ public class NeoforgeMain extends AbstractModInitializer
|
||||
{
|
||||
SingletonInjector.INSTANCE.bind(IModChecker.class, ModChecker.INSTANCE);
|
||||
SingletonInjector.INSTANCE.bind(IPluginPacketSender.class, new NeoforgePluginPacketSender());
|
||||
|
||||
// replace MC RenderWrapper with more specific neoforge version
|
||||
SingletonInjector.INSTANCE.unbind(IMinecraftRenderWrapper.class, MinecraftRenderWrapper.INSTANCE); // TODO replace with a replaceOrBind for simplicity
|
||||
SingletonInjector.INSTANCE.bind(IMinecraftRenderWrapper.class, NeoforgeMinecraftRenderWrapper.INSTANCE);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -152,8 +152,12 @@ public class NeoforgeServerProxy implements AbstractModInitializer.IEventProxy
|
||||
private static ServerLevelWrapper getServerLevelWrapper(ServerLevel level) { return ServerLevelWrapper.getWrapper(level); }
|
||||
private static ServerLevelWrapper getServerLevelWrapper(ResourceKey<Level> resourceKey, PlayerEvent event)
|
||||
{
|
||||
#if MC_VER < MC_1_21_9
|
||||
//noinspection DataFlowIssue (possible NPE after getServer())
|
||||
return getServerLevelWrapper(event.getEntity().getServer().getLevel(resourceKey));
|
||||
#else
|
||||
return getServerLevelWrapper(event.getEntity().level().getServer().getLevel(resourceKey));
|
||||
#endif
|
||||
}
|
||||
|
||||
private static ServerPlayerWrapper getServerPlayerWrapper(PlayerEvent event) { return ServerPlayerWrapper.getWrapper((ServerPlayer) event.getEntity()); }
|
||||
|
||||
+12
-1
@@ -92,9 +92,20 @@ public class MixinLevelRenderer
|
||||
#if MC_VER < MC_1_21_6
|
||||
@Inject(at = @At("HEAD"), method = "renderSectionLayer", cancellable = true)
|
||||
private void renderChunkLayer(RenderType renderType, double x, double y, double z, Matrix4f modelViewMatrix, Matrix4f projectionMatrix, CallbackInfo callback)
|
||||
#elif MC_VER < MC_1_21_9
|
||||
@Inject(at = @At("HEAD"), method = "renderLevel", cancellable = true)
|
||||
private void onRenderLevel(
|
||||
GraphicsResourceAllocator resourceAllocator, DeltaTracker deltaTracker,
|
||||
boolean renderBlockOutline, Camera camera,
|
||||
Matrix4f positionMatrix, Matrix4f projectionMatrix, GpuBufferSlice gpuBufferSlice,
|
||||
Vector4f skyColor, boolean thinFog, CallbackInfo callback)
|
||||
#else
|
||||
@Inject(at = @At("HEAD"), method = "renderLevel", cancellable = true)
|
||||
private void onRenderLevel(GraphicsResourceAllocator resourceAllocator, DeltaTracker deltaTracker, boolean renderBlockOutline, Camera camera, Matrix4f positionMatrix, Matrix4f projectionMatrix, GpuBufferSlice gpuBufferSlice, Vector4f skyColor, boolean thinFog, CallbackInfo callback)
|
||||
private void renderLevel(
|
||||
GraphicsResourceAllocator resourceAllocator, DeltaTracker deltaTracker,
|
||||
boolean renderBlockOutline, Camera camera,
|
||||
Matrix4f positionMatrix, Matrix4f projectionMatrix, Matrix4f idkMatrix, GpuBufferSlice gpuBufferSlice,
|
||||
Vector4f skyColor, boolean thinFog, CallbackInfo callback)
|
||||
#endif
|
||||
{
|
||||
#if MC_VER < MC_1_21_6
|
||||
|
||||
+11
-4
@@ -22,9 +22,11 @@ package com.seibel.distanthorizons.neoforge.mixins.client;
|
||||
import com.seibel.distanthorizons.common.wrappers.minecraft.MinecraftRenderWrapper;
|
||||
import com.seibel.distanthorizons.core.dependencyInjection.SingletonInjector;
|
||||
import com.seibel.distanthorizons.core.wrapperInterfaces.minecraft.IMinecraftClientWrapper;
|
||||
import com.seibel.distanthorizons.core.wrapperInterfaces.minecraft.IMinecraftRenderWrapper;
|
||||
import com.seibel.distanthorizons.core.wrapperInterfaces.world.IClientLevelWrapper;
|
||||
import net.minecraft.client.renderer.LightTexture;
|
||||
|
||||
import net.neoforged.neoforge.client.blaze3d.validation.ValidationGpuTexture;
|
||||
import org.spongepowered.asm.mixin.Final;
|
||||
import org.spongepowered.asm.mixin.Mixin;
|
||||
import org.spongepowered.asm.mixin.Shadow;
|
||||
@@ -70,14 +72,19 @@ public class MixinLightTexture
|
||||
|
||||
|
||||
IClientLevelWrapper clientLevel = mc.getWrappedClientLevel();
|
||||
MinecraftRenderWrapper renderWrapper = (MinecraftRenderWrapper)SingletonInjector.INSTANCE.get(IMinecraftRenderWrapper.class);
|
||||
|
||||
#if MC_VER < MC_1_21_3
|
||||
MinecraftRenderWrapper.INSTANCE.updateLightmap(this.lightPixels, clientLevel);
|
||||
renderWrapper.updateLightmap(this.lightPixels, clientLevel);
|
||||
#elif MC_VER < MC_1_21_5
|
||||
MinecraftRenderWrapper.INSTANCE.setLightmapId(this.target.getColorTextureId(), clientLevel);
|
||||
#else
|
||||
renderWrapper.setLightmapId(this.target.getColorTextureId(), clientLevel);
|
||||
#elif MC_VER < MC_1_21_9
|
||||
GlTexture glTexture = (GlTexture) this.texture;
|
||||
MinecraftRenderWrapper.INSTANCE.setLightmapId(glTexture.glId(), clientLevel);
|
||||
renderWrapper.setLightmapId(glTexture.glId(), clientLevel);
|
||||
#else
|
||||
ValidationGpuTexture gpuTexture = (ValidationGpuTexture) this.texture;
|
||||
int id = ((GlTexture)(gpuTexture.getRealTexture())).glId();
|
||||
renderWrapper.setLightmapId(id, clientLevel);
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
+88
@@ -0,0 +1,88 @@
|
||||
package com.seibel.distanthorizons.neoforge.wrappers;
|
||||
|
||||
import com.mojang.blaze3d.opengl.GlTexture;
|
||||
import com.mojang.blaze3d.textures.GpuTexture;
|
||||
import com.seibel.distanthorizons.common.wrappers.minecraft.MinecraftRenderWrapper;
|
||||
import com.seibel.distanthorizons.core.logging.DhLoggerBuilder;
|
||||
import net.minecraft.client.Minecraft;
|
||||
import org.apache.logging.log4j.Logger;
|
||||
|
||||
#if MC_VER < MC_1_21_9
|
||||
#else
|
||||
import net.neoforged.neoforge.client.blaze3d.validation.ValidationGpuTexture;
|
||||
#endif
|
||||
|
||||
import java.lang.invoke.MethodHandles;
|
||||
|
||||
public class NeoforgeMinecraftRenderWrapper extends MinecraftRenderWrapper
|
||||
{
|
||||
public static final MinecraftRenderWrapper INSTANCE = new MinecraftRenderWrapper();
|
||||
|
||||
private static final Logger LOGGER = DhLoggerBuilder.getLogger(MethodHandles.lookup().lookupClass().getSimpleName());
|
||||
private static final Minecraft MC = Minecraft.getInstance();
|
||||
|
||||
|
||||
|
||||
@Override
|
||||
public int getDepthTextureId()
|
||||
{
|
||||
#if MC_VER < MC_1_21_9
|
||||
// no special handling required,
|
||||
// both neo/fabric uses the same back end objects
|
||||
return super.getDepthTextureId();
|
||||
#else
|
||||
try
|
||||
{
|
||||
//GpuTexture depthTex = this.getRenderTarget().getDepthTexture();
|
||||
//int id = ((GlTexture)depthTex.getClass().getMethod("getRealTexture").invoke(depthTex)).glId();
|
||||
//return id;
|
||||
|
||||
ValidationGpuTexture validationTexture = (ValidationGpuTexture) this.getRenderTarget().getDepthTexture();
|
||||
GlTexture glTexture = (GlTexture)validationTexture.getRealTexture();
|
||||
int id = glTexture.glId();
|
||||
return id;
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
// only log this error once per session
|
||||
if (!this.depthTextureCastFailLogged)
|
||||
{
|
||||
this.depthTextureCastFailLogged = true;
|
||||
LOGGER.error("Unable to cast render Target depth texture to GlTexture. MC or a rendering mod may have changed the object type.", e);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
@Override
|
||||
public int getColorTextureId()
|
||||
{
|
||||
#if MC_VER < MC_1_21_9
|
||||
// no special handling required,
|
||||
// both neo/fabric uses the same back end objects
|
||||
return super.getColorTextureId();
|
||||
#else
|
||||
try
|
||||
{
|
||||
//GpuTexture colorTex = this.getRenderTarget().getColorTexture();
|
||||
//int id = ((GlTexture)colorTex.getClass().getMethod("getRealTexture").invoke(colorTex)).glId();
|
||||
//return id;
|
||||
|
||||
ValidationGpuTexture validationTexture = (ValidationGpuTexture) this.getRenderTarget().getColorTexture();
|
||||
GlTexture glTexture = (GlTexture)validationTexture.getRealTexture();
|
||||
int id = glTexture.glId();
|
||||
return id;
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
// only log this error once per session
|
||||
if (!this.colorTextureCastFailLogged)
|
||||
{
|
||||
this.colorTextureCastFailLogged = true;
|
||||
LOGGER.error("Unable to cast render Target color texture to ValidationGpuTexture or GlTexture. MC, Neoforge, or a rendering mod may have changed the object type.", e);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
# 1.21.7 version
|
||||
# 1.21.8 version
|
||||
java_version=21
|
||||
minecraft_version=1.21.8
|
||||
parchment_version=1.21:2024.07.28
|
||||
|
||||
@@ -0,0 +1,58 @@
|
||||
# 1.21.9 version
|
||||
java_version=21
|
||||
minecraft_version=1.21.9
|
||||
parchment_version=1.21:2024.07.28
|
||||
compatible_minecraft_versions=["1.21.9"]
|
||||
accessWidenerVersion=1_21_4
|
||||
builds_for=fabric,neoforge
|
||||
# forge is broken due to gradle/build script issues
|
||||
|
||||
# Netty
|
||||
netty_version=4.1.97.Final
|
||||
|
||||
# Fabric loader
|
||||
fabric_loader_version=0.17.2
|
||||
fabric_api_version=0.133.14+1.21.9
|
||||
modmenu_version=15.0.0
|
||||
starlight_version_fabric=
|
||||
phosphor_version_fabric=
|
||||
lithium_version=
|
||||
sodium_version=mc1.21.9-0.7.0-fabric
|
||||
iris_version=1.9.3+1.21.9-fabric
|
||||
bclib_version=
|
||||
immersive_portals_version=
|
||||
canvas_version=
|
||||
|
||||
fabric_incompatibility_list={ }
|
||||
fabric_recommend_list={}
|
||||
|
||||
# Fabric mod run
|
||||
# 0 = Don't enable and don't run
|
||||
# 1 = Can be referenced in code but doesn't run
|
||||
# 2 = Can be referenced in code and runs in client
|
||||
enable_starlight=0
|
||||
enable_phosphor=0
|
||||
enable_sodium=1
|
||||
enable_lithium=0
|
||||
enable_iris=1
|
||||
enable_bclib=0
|
||||
enable_immersive_portals=0
|
||||
enable_canvas=0
|
||||
|
||||
# (Neo)Forge loader
|
||||
forge_version=
|
||||
neoforge_version=21.9.1-beta
|
||||
# around 6.19 neo changed how their render API works, failing to meet this causes the game to crash
|
||||
neoforge_version_range=[*,)
|
||||
|
||||
# (Neo)Forge mod versions
|
||||
starlight_version_forge=
|
||||
terraforged_version=
|
||||
|
||||
# (Neo)Forge mod run
|
||||
# 0 = Don't enable and don't run
|
||||
# 1 = Can be referenced in code but doesn't run
|
||||
# 2 = Can be referenced in code and runs in client
|
||||
enable_starlight_forge=0
|
||||
enable_terraforged=0
|
||||
enable_terrafirmacraft=0
|
||||
Reference in New Issue
Block a user