From 4878d56518b5b196852ea258ea45ed1806c54977 Mon Sep 17 00:00:00 2001 From: tom lee Date: Fri, 31 Dec 2021 23:18:45 +0800 Subject: [PATCH] Fixed up most stuff so it runs on fabric. Still crashes though --- .../wrappers/block/BlockColorWrapper.java | 2 +- .../block/TextureAtlasSpriteWrapper.java | 10 ++---- .../lod/common/wrappers/config/ConfigGui.java | 4 +-- .../wrappers/config/TexturedButtonWidget.java | 31 ++++++++++--------- common/src/main/resources/lod.accesswidener | 8 ++--- .../mixins/events/MixinServerLevel.java | 9 ++---- .../mixins/unsafe/MixinPalettedContainer.java | 14 ++++----- gradle.properties | 2 +- 8 files changed, 35 insertions(+), 45 deletions(-) diff --git a/common/src/main/java/com/seibel/lod/common/wrappers/block/BlockColorWrapper.java b/common/src/main/java/com/seibel/lod/common/wrappers/block/BlockColorWrapper.java index 11a92e02f..2318c8cc4 100644 --- a/common/src/main/java/com/seibel/lod/common/wrappers/block/BlockColorWrapper.java +++ b/common/src/main/java/com/seibel/lod/common/wrappers/block/BlockColorWrapper.java @@ -135,7 +135,7 @@ public class BlockColorWrapper implements IBlockColorWrapper if (!quads.isEmpty()) { isColored = true; - texture = quads.get(0).getSprite(); + texture = quads.get(0).sprite; } else { diff --git a/common/src/main/java/com/seibel/lod/common/wrappers/block/TextureAtlasSpriteWrapper.java b/common/src/main/java/com/seibel/lod/common/wrappers/block/TextureAtlasSpriteWrapper.java index 3a8bf87f7..e5d4587a3 100644 --- a/common/src/main/java/com/seibel/lod/common/wrappers/block/TextureAtlasSpriteWrapper.java +++ b/common/src/main/java/com/seibel/lod/common/wrappers/block/TextureAtlasSpriteWrapper.java @@ -18,13 +18,7 @@ public class TextureAtlasSpriteWrapper { * The code has been modified to use TextureAtlasSprite */ public static int getPixelRGBA(TextureAtlasSprite sprite, int frameIndex, int x, int y) { - if (sprite.animatedTexture != null) { - x += sprite.animatedTexture.getFrameX(frameIndex) * sprite.getWidth(); - y += sprite.animatedTexture.getFrameY(frameIndex) * sprite.getHeight(); - } - - return sprite.mainImage[0].getPixelRGBA(x, y); - -// return this.mainImage[0].getPixelRGBA(x + this.framesX[frameIndex] * sprite.getWidth(), y + this.framesY[frameIndex] * sprite.getHeight()); + // Require access widener + return sprite.mainImage[0].getPixelRGBA(x + sprite.framesX[frameIndex] * sprite.getWidth(), y + sprite.framesY[frameIndex] * sprite.getHeight()); } } diff --git a/common/src/main/java/com/seibel/lod/common/wrappers/config/ConfigGui.java b/common/src/main/java/com/seibel/lod/common/wrappers/config/ConfigGui.java index 4ad59a666..0a0a0ee8a 100644 --- a/common/src/main/java/com/seibel/lod/common/wrappers/config/ConfigGui.java +++ b/common/src/main/java/com/seibel/lod/common/wrappers/config/ConfigGui.java @@ -413,12 +413,12 @@ public abstract class ConfigGui if (!reload) loadFromFile(); - this.addRenderableWidget(new Button(this.width / 2 - 154, this.height - 28, 150, 20, CommonComponents.GUI_CANCEL, button -> { + this.addWidget(new Button(this.width / 2 - 154, this.height - 28, 150, 20, CommonComponents.GUI_CANCEL, button -> { loadFromFile(); Objects.requireNonNull(minecraft).setScreen(parent); })); - Button done = this.addRenderableWidget(new Button(this.width / 2 + 4, this.height - 28, 150, 20, CommonComponents.GUI_DONE, (button) -> { + Button done = this.addWidget(new Button(this.width / 2 + 4, this.height - 28, 150, 20, CommonComponents.GUI_DONE, (button) -> { saveToFile(); Objects.requireNonNull(minecraft).setScreen(parent); })); diff --git a/common/src/main/java/com/seibel/lod/common/wrappers/config/TexturedButtonWidget.java b/common/src/main/java/com/seibel/lod/common/wrappers/config/TexturedButtonWidget.java index a89d21bec..a2fa2516c 100644 --- a/common/src/main/java/com/seibel/lod/common/wrappers/config/TexturedButtonWidget.java +++ b/common/src/main/java/com/seibel/lod/common/wrappers/config/TexturedButtonWidget.java @@ -2,8 +2,9 @@ package com.seibel.lod.common.wrappers.config; import com.mojang.blaze3d.systems.RenderSystem; import com.mojang.blaze3d.vertex.PoseStack; + +import net.minecraft.client.Minecraft; import net.minecraft.client.gui.components.ImageButton; -import net.minecraft.client.renderer.GameRenderer; import net.minecraft.network.chat.Component; import net.minecraft.resources.ResourceLocation; @@ -26,18 +27,20 @@ public class TexturedButtonWidget extends ImageButton { super(x, y, width, height, u, v, hoveredVOffset, texture, textureWidth, textureHeight, pressAction, tooltipSupplier, text); } - @Override - public void renderButton(PoseStack matrices, int mouseX, int mouseY, float delta) { - RenderSystem.setShader(GameRenderer::getPositionTexShader); - RenderSystem.setShaderTexture(0, WIDGETS_LOCATION); - RenderSystem.setShaderColor(1.0F, 1.0F, 1.0F, this.alpha); - int i = this.getYImage(this.isHovered()); - RenderSystem.enableBlend(); - RenderSystem.defaultBlendFunc(); - RenderSystem.enableDepthTest(); - this.blit(matrices, this.x, this.y, 0, 46 + i * 20, this.width / 2, this.height); - this.blit(matrices, this.x + this.width / 2, this.y, 200 - this.width / 2, 46 + i * 20, this.width / 2, this.height); + @Override + public void renderButton(PoseStack matrices, int mouseX, int mouseY, float delta) { - super.renderButton(matrices, mouseX, mouseY, delta); - } + Minecraft.getInstance().getTextureManager().bind(WIDGETS_LOCATION); + RenderSystem.color4f(1.0F, 1.0F, 1.0F, this.alpha); + int i = getYImage(isHovered()); + + RenderSystem.enableBlend(); + RenderSystem.defaultBlendFunc(); + RenderSystem.enableDepthTest(); + this.blit(matrices, this.x, this.y, 0, 46 + i * 20, this.width / 2, this.height); + this.blit(matrices, this.x + this.width / 2, this.y, 200 - this.width / 2, 46 + i * 20, this.width / 2, + this.height); + + super.renderButton(matrices, mouseX, mouseY, delta); + } } diff --git a/common/src/main/resources/lod.accesswidener b/common/src/main/resources/lod.accesswidener index ff08b3522..aebaa3e71 100644 --- a/common/src/main/resources/lod.accesswidener +++ b/common/src/main/resources/lod.accesswidener @@ -23,12 +23,10 @@ accessible method net/minecraft/world/level/levelgen/Heightmap setHeight (III)V accessible field net/minecraft/world/level/biome/Biome generationSettings Lnet/minecraft/world/level/biome/BiomeGenerationSettings; # grabbing textures -accessible field net/minecraft/client/renderer/texture/TextureAtlasSprite animatedTexture Lnet/minecraft/client/renderer/texture/TextureAtlasSprite$AnimatedTexture; -accessible field net/minecraft/client/renderer/texture/TextureAtlasSprite width I -accessible field net/minecraft/client/renderer/texture/TextureAtlasSprite height I +accessible field net/minecraft/client/renderer/block/model/BakedQuad sprite Lnet/minecraft/client/renderer/texture/TextureAtlasSprite; +accessible field net/minecraft/client/renderer/texture/TextureAtlasSprite framesX [I +accessible field net/minecraft/client/renderer/texture/TextureAtlasSprite framesY [I accessible field net/minecraft/client/renderer/texture/TextureAtlasSprite mainImage [Lcom/mojang/blaze3d/platform/NativeImage; -accessible method net/minecraft/client/renderer/texture/TextureAtlasSprite$AnimatedTexture getFrameX (I)I -accessible method net/minecraft/client/renderer/texture/TextureAtlasSprite$AnimatedTexture getFrameY (I)I extendable class com/mojang/math/Matrix4f # hacky stuff diff --git a/fabric/src/main/java/com/seibel/lod/fabric/mixins/events/MixinServerLevel.java b/fabric/src/main/java/com/seibel/lod/fabric/mixins/events/MixinServerLevel.java index 21929f60e..becdb177d 100644 --- a/fabric/src/main/java/com/seibel/lod/fabric/mixins/events/MixinServerLevel.java +++ b/fabric/src/main/java/com/seibel/lod/fabric/mixins/events/MixinServerLevel.java @@ -14,13 +14,8 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; */ @Mixin(ServerLevel.class) public class MixinServerLevel { - @Inject(method = "save", at = @At(value = "INVOKE", target = "Lnet/minecraft/world/level/entity/PersistentEntitySectionManager;saveAll()V", shift = At.Shift.AFTER)) - private void saveWorldEvent_sA(ProgressListener progressListener, boolean bl, boolean bl2, CallbackInfo ci) { - Main.client_proxy.worldSaveEvent(); - } - - @Inject(method = "save", at = @At(value = "INVOKE", target = "Lnet/minecraft/world/level/entity/PersistentEntitySectionManager;autoSave()V", shift = At.Shift.AFTER)) - private void saveWorldEvent_aS(ProgressListener progressListener, boolean bl, boolean bl2, CallbackInfo ci) { + @Inject(method = "save", at = @At(value = "INVOKE", target = "Lnet/minecraft/server/level/ServerChunkCache;save(Z)V", shift = At.Shift.AFTER)) + private void saveWorldEvent(ProgressListener progressListener, boolean bl, boolean bl2, CallbackInfo ci) { Main.client_proxy.worldSaveEvent(); } } diff --git a/fabric/src/main/java/com/seibel/lod/fabric/mixins/unsafe/MixinPalettedContainer.java b/fabric/src/main/java/com/seibel/lod/fabric/mixins/unsafe/MixinPalettedContainer.java index 85acf7ef0..265ec9fb9 100644 --- a/fabric/src/main/java/com/seibel/lod/fabric/mixins/unsafe/MixinPalettedContainer.java +++ b/fabric/src/main/java/com/seibel/lod/fabric/mixins/unsafe/MixinPalettedContainer.java @@ -1,8 +1,6 @@ package com.seibel.lod.fabric.mixins.unsafe; -import com.mojang.datafixers.util.Pair; import net.minecraft.world.level.chunk.PalettedContainer; -import org.jetbrains.annotations.Nullable; import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Mutable; @@ -21,11 +19,13 @@ import java.util.concurrent.Semaphore; */ @Mixin(PalettedContainer.class) public class MixinPalettedContainer { - @Mutable - @Shadow @Final private Semaphore lock; - @Inject(method = "", at = @At("RETURN")) - private void setSemaphore(CallbackInfo ci) { - this.lock = new Semaphore(2); + @Inject(method = "acquire", at = @At("HEAD"), cancellable = true) + private void acquire_skip(CallbackInfo ci) { + ci.cancel(); + } + @Inject(method = "release", at = @At("HEAD"), cancellable = true) + private void release_skip(CallbackInfo ci) { + ci.cancel(); } } diff --git a/gradle.properties b/gradle.properties index ba625fbba..677fcee29 100644 --- a/gradle.properties +++ b/gradle.properties @@ -9,6 +9,6 @@ toml_version=3.6.0 fabric_loader_version=0.11.3 fabric_api_version=0.34.2+1.16 -modmenu_version=2.0.14 +modmenu_version=1.16.22 forge_version=36.1.0 \ No newline at end of file