From 00340f5d7df495f7351159e9da86e74b1b5fd2a9 Mon Sep 17 00:00:00 2001 From: Kevin <92656833+kevinthegreat1@users.noreply.github.com> Date: Tue, 17 Oct 2023 19:53:55 -0400 Subject: Refactor NEU Repo (#364) Add RepoParser Fix Golden Dragon stats leveling Add wiki option Fix recipe output count --- build.gradle | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) (limited to 'build.gradle') diff --git a/build.gradle b/build.gradle index 3e4a13d3..66c56e21 100644 --- a/build.gradle +++ b/build.gradle @@ -4,8 +4,6 @@ plugins { id 'com.modrinth.minotaur' version '2.+' } -import com.modrinth.minotaur.dependencies.ModDependency - version = "${project.mod_version}+${project.minecraft_version}" group = project.maven_group @@ -59,7 +57,7 @@ dependencies { // EMI modCompileOnly "dev.emi:emi-fabric:${project.emi_version}:api" -// modLocalRuntime "dev.emi:emi-fabric:${project.emi_version}" TODO uncomment when EMI is updated + modLocalRuntime "dev.emi:emi-fabric:${project.emi_version}" // Renderer (https://github.com/0x3C50/Renderer) include modImplementation("com.github.0x3C50:Renderer:${project.renderer_version}") { @@ -80,8 +78,8 @@ dependencies { // Occlusion Culling (https://github.com/LogisticsCraft/OcclusionCulling) include implementation("com.logisticscraft:occlusionculling:${project.occlusionculling_version}") - // neu repoparser | implement it if this is being used - // include implementation("moe.nea:neurepoparser:${project.repoparser_version}") + // NEU RepoParser + include implementation("moe.nea:neurepoparser:${project.repoparser_version}") } loom { -- cgit From 58e43eee5c02efbe6144bfd6e4b1a95101d24576 Mon Sep 17 00:00:00 2001 From: Kevinthegreat <92656833+kevinthegreat1@users.noreply.github.com> Date: Thu, 28 Sep 2023 15:40:22 -0400 Subject: Add next burrow direction detection --- build.gradle | 9 ++- gradle.properties | 9 ++- .../skyblock/diana/MythologicalRitual.java | 89 ++++++++++++++++------ 3 files changed, 80 insertions(+), 27 deletions(-) (limited to 'build.gradle') diff --git a/build.gradle b/build.gradle index 66c56e21..fde768d5 100644 --- a/build.gradle +++ b/build.gradle @@ -72,14 +72,17 @@ dependencies { // BetterInject (https://github.com/caoimhebyrne/BetterInject) include implementation(annotationProcessor("com.github.cbyrneee:BetterInject:${project.betterinject_version}")) - // https://mvnrepository.com/artifact/org.eclipse.jgit/org.eclipse.jgit used pull data from the NEU item repo - include implementation("org.eclipse.jgit:org.eclipse.jgit:6.4.0.202211300538-r") - // Occlusion Culling (https://github.com/LogisticsCraft/OcclusionCulling) include implementation("com.logisticscraft:occlusionculling:${project.occlusionculling_version}") // NEU RepoParser include implementation("moe.nea:neurepoparser:${project.repoparser_version}") + + // JGit used pull data from the NEU item repo + include implementation("org.eclipse.jgit:org.eclipse.jgit:${project.jgit_version}") + + // Apache Commons Math + include implementation("org.apache.commons:commons-math3:${project.commons_math_version}") } loom { diff --git a/gradle.properties b/gradle.properties index c5794079..42529261 100644 --- a/gradle.properties +++ b/gradle.properties @@ -11,7 +11,7 @@ loader_version=0.14.22 ## 1.20 fabric_api_version=0.89.1+1.20.2 -# Dependencies +# Minecraft Mods ## YACL (https://github.com/isXander/YetAnotherConfigLib) yacl_version=3.2.1+1.20.2 ## Mod Menu (https://modrinth.com/mod/modmenu/versions) @@ -23,6 +23,7 @@ emi_version = 1.0.22+1.20.2 ## Renderer (https://github.com/0x3C50/Renderer) renderer_version = master-SNAPSHOT +# Minecraft and Related Libraries ## Mixin Extras (https://github.com/LlamaLad7/MixinExtras) mixin_extras_version = 0.2.0 ## Better Inject (https://github.com/caoimhebyrne/BetterInject) @@ -32,6 +33,12 @@ occlusionculling_version = 0.0.7-SNAPSHOT ## neu repoparser (https://repo.nea.moe/#/releases/moe/nea/neurepoparser/) repoparser_version = 1.4.0 +# Other Libraries +## JGit (https://mvnrepository.com/artifact/org.eclipse.jgit/org.eclipse.jgit) +jgit_version = 6.7.0.202309050840-r +## Apache Commons Math (https://mvnrepository.com/artifact/org.apache.commons/commons-math3) +commons_math_version = 3.6.1 + # Mod Properties mod_version = 1.15.0 maven_group = de.hysky diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/diana/MythologicalRitual.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/diana/MythologicalRitual.java index c74d5e77..ba27845a 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/diana/MythologicalRitual.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/diana/MythologicalRitual.java @@ -1,9 +1,6 @@ package me.xmrvizzy.skyblocker.skyblock.diana; import com.mojang.brigadier.Command; -import it.unimi.dsi.fastutil.booleans.BooleanBooleanMutablePair; -import it.unimi.dsi.fastutil.objects.Object2LongMap; -import it.unimi.dsi.fastutil.objects.Object2LongOpenHashMap; import me.xmrvizzy.skyblocker.SkyblockerMod; import me.xmrvizzy.skyblocker.config.SkyblockerConfig; import me.xmrvizzy.skyblocker.utils.Utils; @@ -14,6 +11,7 @@ import net.fabricmc.fabric.api.client.rendering.v1.WorldRenderContext; 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.fabricmc.fabric.api.util.TriState; import net.minecraft.block.Blocks; import net.minecraft.client.MinecraftClient; import net.minecraft.command.argument.BlockPosArgumentType; @@ -27,7 +25,9 @@ import net.minecraft.util.Hand; import net.minecraft.util.hit.BlockHitResult; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.Direction; +import net.minecraft.util.math.Vec3d; import net.minecraft.world.World; +import org.apache.commons.math3.stat.regression.SimpleRegression; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -40,10 +40,11 @@ import static net.fabricmc.fabric.api.client.command.v2.ClientCommandManager.lit public class MythologicalRitual { private static final Pattern GRIFFIN_BURROW_DUG = Pattern.compile("(?You dug out a Griffin Burrow!|You finished the Griffin burrow chain!) \\((?\\d)/4\\)"); - private static final Map particlesMap = new HashMap<>(); - private static final Object2LongMap griffinBurrows = new Object2LongOpenHashMap<>(); + private static final float[] WHITE_COLOR_COMPONENTS = {1.0f, 1.0f, 1.0f}; + private static final Map griffinBurrows = new HashMap<>(); @Nullable private static BlockPos lastDugBurrowPos; + private static GriffinBurrow previousBurrow; public static void init() { WorldRenderEvents.AFTER_TRANSLUCENT.register(MythologicalRitual::render); @@ -55,32 +56,57 @@ public class MythologicalRitual { griffinBurrows.clear(); return Command.SINGLE_SUCCESS; })) - .then(literal("clearGriffinBurrow").then(argument("pos", BlockPosArgumentType.blockPos()).executes(context -> { - griffinBurrows.removeLong(context.getArgument("pos", BlockPos.class)); - return Command.SINGLE_SUCCESS; - })))))); + .then(literal("clearGriffinBurrow") + .then(argument("pos", BlockPosArgumentType.blockPos()).executes(context -> { + griffinBurrows.remove(context.getArgument("pos", BlockPos.class)); + return Command.SINGLE_SUCCESS; + })) + ) + ))); } public static void onParticle(ParticleS2CPacket packet) { - if (isActive() && ParticleTypes.CRIT.equals(packet.getParameters().getType()) || ParticleTypes.ENCHANT.equals(packet.getParameters().getType())) { - BlockPos pos = BlockPos.ofFloored(packet.getX(), packet.getY(), packet.getZ()).down(); - if (MinecraftClient.getInstance().world == null || !MinecraftClient.getInstance().world.getBlockState(pos).isOf(Blocks.GRASS_BLOCK)) { - return; - } - BooleanBooleanMutablePair particlesAtPos = particlesMap.computeIfAbsent(pos, pos1 -> BooleanBooleanMutablePair.of(false, false)); - particlesAtPos.left(particlesAtPos.leftBoolean() || ParticleTypes.CRIT.equals(packet.getParameters().getType())); - particlesAtPos.right(particlesAtPos.rightBoolean() || ParticleTypes.ENCHANT.equals(packet.getParameters().getType())); - if (particlesAtPos.leftBoolean() && particlesAtPos.rightBoolean() && griffinBurrows.getLong(pos) + 1000 < System.currentTimeMillis()) { - griffinBurrows.put(pos, 0); + if (isActive()) { + if (ParticleTypes.CRIT.equals(packet.getParameters().getType()) || ParticleTypes.ENCHANT.equals(packet.getParameters().getType())) { + BlockPos pos = BlockPos.ofFloored(packet.getX(), packet.getY(), packet.getZ()).down(); + if (MinecraftClient.getInstance().world == null || !MinecraftClient.getInstance().world.getBlockState(pos).isOf(Blocks.GRASS_BLOCK)) { + return; + } + GriffinBurrow burrow = griffinBurrows.computeIfAbsent(pos, pos1 -> new GriffinBurrow()); + if (ParticleTypes.CRIT.equals(packet.getParameters().getType())) burrow.critParticle++; + if (ParticleTypes.ENCHANT.equals(packet.getParameters().getType())) burrow.enchantParticle++; + if (burrow.critParticle >= 5 && burrow.enchantParticle >= 5 && burrow.confirmed == TriState.FALSE) { + griffinBurrows.get(pos).init(); + } + } else if (ParticleTypes.DUST.equals(packet.getParameters().getType())) { + BlockPos pos = BlockPos.ofFloored(packet.getX(), packet.getY(), packet.getZ()).down(2); + GriffinBurrow burrow = griffinBurrows.get(pos); + if (burrow == null) { + return; + } + burrow.regression.addData(packet.getX(), packet.getZ()); + double slope = burrow.regression.getSlope(); + if (Double.isNaN(slope)) { + return; + } + Vec3d nextBurrowDirection = new Vec3d(100, 2, slope * 100).normalize().multiply(500); + burrow.nextBurrowPlane = new Vec3d[]{ + Vec3d.of(pos).add(nextBurrowDirection), + Vec3d.of(pos).subtract(nextBurrowDirection) + }; } } } public static void render(WorldRenderContext context) { if (isActive()) { - for (Object2LongMap.Entry griffinBorrow : griffinBurrows.object2LongEntrySet()) { - if (griffinBorrow.getLongValue() <= 0) { - RenderHelper.renderFilledThroughWallsWithBeaconBeam(context, griffinBorrow.getKey(), DyeColor.GREEN.getColorComponents(), 0.5F); + for (Map.Entry burrowEntry : griffinBurrows.entrySet()) { + GriffinBurrow burrow = burrowEntry.getValue(); + if (burrow.confirmed == TriState.TRUE) { + RenderHelper.renderFilledThroughWallsWithBeaconBeam(context, burrowEntry.getKey(), DyeColor.GREEN.getColorComponents(), 0.5F); + } + if (burrow.confirmed != TriState.FALSE && burrow.nextBurrowPlane != null) { // TODO try before debug render? + RenderHelper.renderLinesFromPoints(context, burrow.nextBurrowPlane, WHITE_COLOR_COMPONENTS, 1, 5); } } } @@ -104,11 +130,28 @@ public class MythologicalRitual { public static void onChatMessage(Text message, boolean overlay) { if (isActive() && GRIFFIN_BURROW_DUG.matcher(message.getString()).matches()) { - griffinBurrows.put(lastDugBurrowPos, System.currentTimeMillis()); + if (previousBurrow != null) { + previousBurrow.confirmed = TriState.FALSE; + } + previousBurrow = griffinBurrows.get(lastDugBurrowPos); + previousBurrow.confirmed = TriState.DEFAULT; } } private static boolean isActive() { return SkyblockerConfig.get().general.fairySouls.enableFairySoulsHelper && Utils.getLocationRaw().equals("hub"); // TODO Change to actual config option } + + private static class GriffinBurrow { + private int critParticle; + private int enchantParticle; + private TriState confirmed = TriState.FALSE; + private final SimpleRegression regression = new SimpleRegression(); + private Vec3d[] nextBurrowPlane; + + private void init() { + confirmed = TriState.TRUE; + regression.clear(); + } + } } -- cgit From b3aa62a6d1f51f39021172f2c81b27236f7ebaa3 Mon Sep 17 00:00:00 2001 From: Aaron <51387595+AzureAaron@users.noreply.github.com> Date: Sat, 28 Oct 2023 00:16:22 -0400 Subject: Vanilla over Renderer --- build.gradle | 6 ++-- .../hysky/skyblocker/skyblock/TeleportOverlay.java | 7 ---- .../skyblocker/utils/render/RenderHelper.java | 42 ++++++++++++++++------ 3 files changed, 35 insertions(+), 20 deletions(-) (limited to 'build.gradle') diff --git a/build.gradle b/build.gradle index fde768d5..bf122cf2 100644 --- a/build.gradle +++ b/build.gradle @@ -60,9 +60,9 @@ dependencies { modLocalRuntime "dev.emi:emi-fabric:${project.emi_version}" // Renderer (https://github.com/0x3C50/Renderer) - include modImplementation("com.github.0x3C50:Renderer:${project.renderer_version}") { - exclude group: "io.github.ladysnake" exclude module: "satin" - } + //include modImplementation("com.github.0x3C50:Renderer:${project.renderer_version}") { + //exclude group: "io.github.ladysnake" exclude module: "satin" + //} include modImplementation("meteordevelopment:discord-ipc:1.1") diff --git a/src/main/java/de/hysky/skyblocker/skyblock/TeleportOverlay.java b/src/main/java/de/hysky/skyblocker/skyblock/TeleportOverlay.java index 5ea5513e..36e25d5c 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/TeleportOverlay.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/TeleportOverlay.java @@ -1,6 +1,5 @@ package de.hysky.skyblocker.skyblock; -import com.mojang.blaze3d.systems.RenderSystem; import de.hysky.skyblocker.config.SkyblockerConfigManager; import de.hysky.skyblocker.skyblock.item.PriceInfoTooltip; import de.hysky.skyblocker.utils.ItemUtils; @@ -103,13 +102,7 @@ public class TeleportOverlay { @SuppressWarnings("DataFlowIssue") BlockState state = client.world.getBlockState(pos); if (!state.isAir() && client.world.getBlockState(pos.up()).isAir() && client.world.getBlockState(pos.up(2)).isAir()) { - RenderSystem.polygonOffset(-1f, -10f); - RenderSystem.enablePolygonOffset(); - RenderHelper.renderFilledIfVisible(wrc, pos, COLOR_COMPONENTS, 0.5f); - - RenderSystem.polygonOffset(0f, 0f); - RenderSystem.disablePolygonOffset(); } } } diff --git a/src/main/java/de/hysky/skyblocker/utils/render/RenderHelper.java b/src/main/java/de/hysky/skyblocker/utils/render/RenderHelper.java index 4cfaef8f..6c36107b 100644 --- a/src/main/java/de/hysky/skyblocker/utils/render/RenderHelper.java +++ b/src/main/java/de/hysky/skyblocker/utils/render/RenderHelper.java @@ -5,7 +5,6 @@ import de.hysky.skyblocker.mixin.accessor.BeaconBlockEntityRendererInvoker; import de.hysky.skyblocker.utils.render.culling.OcclusionCulling; import de.hysky.skyblocker.utils.render.title.Title; import de.hysky.skyblocker.utils.render.title.TitleContainer; -import me.x150.renderer.render.Renderer3d; import net.fabricmc.fabric.api.client.rendering.v1.WorldRenderContext; import net.minecraft.client.MinecraftClient; import net.minecraft.client.font.TextRenderer; @@ -22,8 +21,6 @@ import org.joml.Matrix3f; import org.joml.Matrix4f; import org.lwjgl.opengl.GL11; -import java.awt.*; - public class RenderHelper { private static final Vec3d ONE = new Vec3d(1, 1, 1); private static final int MAX_OVERWORLD_BUILD_HEIGHT = 319; @@ -36,20 +33,45 @@ public class RenderHelper { public static void renderFilledThroughWalls(WorldRenderContext context, BlockPos pos, float[] colorComponents, float alpha) { if (FrustumUtils.isVisible(pos.getX(), pos.getY(), pos.getZ(), pos.getX() + 1, pos.getY() + 1, pos.getZ() + 1)) { - Renderer3d.renderThroughWalls(); - renderFilled(context, pos, colorComponents, alpha); - Renderer3d.stopRenderThroughWalls(); + renderFilled(context, Vec3d.of(pos), ONE, colorComponents, alpha, true); } } public static void renderFilledIfVisible(WorldRenderContext context, BlockPos pos, float[] colorComponents, float alpha) { if (OcclusionCulling.isVisible(pos.getX(), pos.getY(), pos.getZ(), pos.getX() + 1, pos.getY() + 1, pos.getZ() + 1)) { - renderFilled(context, pos, colorComponents, alpha); + renderFilled(context, Vec3d.of(pos), ONE, colorComponents, alpha, false); } } - - private static void renderFilled(WorldRenderContext context, BlockPos pos, float[] colorComponents, float alpha) { - Renderer3d.renderFilled(context.matrixStack(), new Color(colorComponents[0], colorComponents[1], colorComponents[2], alpha), Vec3d.of(pos), ONE); + + private static void renderFilled(WorldRenderContext context, Vec3d pos, Vec3d dimensions, float[] colorComponents, float alpha, boolean throughWalls) { + MatrixStack matrices = context.matrixStack(); + Vec3d camera = context.camera().getPos(); + Tessellator tessellator = RenderSystem.renderThreadTesselator(); + BufferBuilder buffer = tessellator.getBuffer(); + + matrices.push(); + matrices.translate(-camera.x, -camera.y, -camera.z); + + RenderSystem.setShader(GameRenderer::getPositionColorProgram); + RenderSystem.setShaderColor(1f, 1f, 1f, 1f); + RenderSystem.polygonOffset(-1f, -10f); + RenderSystem.enablePolygonOffset(); + RenderSystem.enableBlend(); + RenderSystem.defaultBlendFunc(); + RenderSystem.enableDepthTest(); + RenderSystem.depthFunc(throughWalls ? GL11.GL_ALWAYS : GL11.GL_LEQUAL); + RenderSystem.disableCull(); + + buffer.begin(DrawMode.TRIANGLE_STRIP, VertexFormats.POSITION_COLOR); + WorldRenderer.renderFilledBox(matrices, buffer, pos.x, pos.y, pos.z, pos.x + dimensions.x, pos.y + dimensions.y, pos.z + dimensions.z, colorComponents[0], colorComponents[1], colorComponents[2], alpha); + tessellator.draw(); + + matrices.pop(); + RenderSystem.polygonOffset(0f, 0f); + RenderSystem.disablePolygonOffset(); + RenderSystem.disableBlend(); + RenderSystem.disableDepthTest(); + RenderSystem.enableCull(); } private static void renderBeaconBeam(WorldRenderContext context, BlockPos pos, float[] colorComponents) { -- cgit From aae70a4160761465b03d310ca5c5dd8b31df17d5 Mon Sep 17 00:00:00 2001 From: Aaron <51387595+AzureAaron@users.noreply.github.com> Date: Sat, 28 Oct 2023 00:38:45 -0400 Subject: Remove renderer --- build.gradle | 5 ----- gradle.properties | 2 -- 2 files changed, 7 deletions(-) (limited to 'build.gradle') diff --git a/build.gradle b/build.gradle index bf122cf2..72432203 100644 --- a/build.gradle +++ b/build.gradle @@ -59,11 +59,6 @@ dependencies { modCompileOnly "dev.emi:emi-fabric:${project.emi_version}:api" modLocalRuntime "dev.emi:emi-fabric:${project.emi_version}" - // Renderer (https://github.com/0x3C50/Renderer) - //include modImplementation("com.github.0x3C50:Renderer:${project.renderer_version}") { - //exclude group: "io.github.ladysnake" exclude module: "satin" - //} - include modImplementation("meteordevelopment:discord-ipc:1.1") // Mixin Extras (https://github.com/LlamaLad7/MixinExtras) diff --git a/gradle.properties b/gradle.properties index 42529261..6c364898 100644 --- a/gradle.properties +++ b/gradle.properties @@ -20,8 +20,6 @@ mod_menu_version = 8.0.0 rei_version = 13.0.666 ## EMI (https://modrinth.com/mod/emi/versions) emi_version = 1.0.22+1.20.2 -## Renderer (https://github.com/0x3C50/Renderer) -renderer_version = master-SNAPSHOT # Minecraft and Related Libraries ## Mixin Extras (https://github.com/LlamaLad7/MixinExtras) -- cgit