diff options
author | msg-programs <msgdoesstuff@gmail.com> | 2023-09-08 09:54:47 +0200 |
---|---|---|
committer | msg-programs <msgdoesstuff@gmail.com> | 2023-09-08 09:54:47 +0200 |
commit | 7df2a590d4b0079f65ef639315d04f63c2f754a7 (patch) | |
tree | fb2b0594a7e0b397b8f5afccdfa8ae7409edb9f8 /src/main/java/me | |
parent | b153e75818b5058df9334953d5924c2c82598719 (diff) | |
parent | 9c7bf54123f366ad90bfafe81e973b731fd6b5b3 (diff) | |
download | Skyblocker-7df2a590d4b0079f65ef639315d04f63c2f754a7.tar.gz Skyblocker-7df2a590d4b0079f65ef639315d04f63c2f754a7.tar.bz2 Skyblocker-7df2a590d4b0079f65ef639315d04f63c2f754a7.zip |
Merge branch 'master' of https://github.com/SkyblockerMod/Skyblocker into readme-fixes
Pull upstream updates into branch
Diffstat (limited to 'src/main/java/me')
84 files changed, 420 insertions, 887 deletions
diff --git a/src/main/java/me/xmrvizzy/skyblocker/SkyblockerMod.java b/src/main/java/me/xmrvizzy/skyblocker/SkyblockerMod.java index 4ef19931..5c7f2a99 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/SkyblockerMod.java +++ b/src/main/java/me/xmrvizzy/skyblocker/SkyblockerMod.java @@ -2,10 +2,7 @@ package me.xmrvizzy.skyblocker; import com.google.gson.Gson; import com.google.gson.GsonBuilder; -import me.xmrvizzy.skyblocker.chat.ChatMessageListener; import me.xmrvizzy.skyblocker.config.SkyblockerConfig; -import me.xmrvizzy.skyblocker.discord.DiscordRPCManager; -import me.xmrvizzy.skyblocker.gui.ContainerSolverManager; import me.xmrvizzy.skyblocker.skyblock.*; import me.xmrvizzy.skyblocker.skyblock.dungeon.DungeonBlaze; import me.xmrvizzy.skyblocker.skyblock.dungeon.DungeonMap; @@ -21,12 +18,15 @@ import me.xmrvizzy.skyblocker.skyblock.shortcut.Shortcuts; import me.xmrvizzy.skyblocker.skyblock.tabhud.TabHud; import me.xmrvizzy.skyblocker.skyblock.tabhud.screenbuilder.ScreenMaster; import me.xmrvizzy.skyblocker.skyblock.tabhud.util.PlayerListMgr; -import me.xmrvizzy.skyblocker.utils.MessageScheduler; import me.xmrvizzy.skyblocker.utils.NEURepo; -import me.xmrvizzy.skyblocker.utils.Scheduler; import me.xmrvizzy.skyblocker.utils.Utils; -import me.xmrvizzy.skyblocker.utils.culling.OcclusionCulling; -import me.xmrvizzy.skyblocker.utils.title.TitleContainer; +import me.xmrvizzy.skyblocker.utils.chat.ChatMessageListener; +import me.xmrvizzy.skyblocker.utils.discord.DiscordRPCManager; +import me.xmrvizzy.skyblocker.utils.render.culling.OcclusionCulling; +import me.xmrvizzy.skyblocker.utils.render.gui.ContainerSolverManager; +import me.xmrvizzy.skyblocker.utils.render.title.TitleContainer; +import me.xmrvizzy.skyblocker.utils.scheduler.MessageScheduler; +import me.xmrvizzy.skyblocker.utils.scheduler.Scheduler; import net.fabricmc.api.ClientModInitializer; import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientTickEvents; import net.fabricmc.loader.api.FabricLoader; @@ -90,6 +90,7 @@ public class SkyblockerMod implements ClientModInitializer { TabHud.init(); DungeonMap.init(); DungeonSecrets.init(); + DungeonBlaze.init(); TheRift.init(); TitleContainer.init(); ScreenMaster.init(); @@ -104,7 +105,6 @@ public class SkyblockerMod implements ClientModInitializer { statusBarTracker.init(); scheduler.scheduleCyclic(Utils::update, 20); scheduler.scheduleCyclic(DiscordRPCManager::updateDataAndPresence, 100); - scheduler.scheduleCyclic(DungeonBlaze::update, 4); scheduler.scheduleCyclic(TicTacToe::tick, 4); scheduler.scheduleCyclic(LividColor::update, 10); scheduler.scheduleCyclic(BackpackPreview::tick, 50); diff --git a/src/main/java/me/xmrvizzy/skyblocker/compatibility/MixinPlugin.java b/src/main/java/me/xmrvizzy/skyblocker/compatibility/MixinPlugin.java new file mode 100644 index 00000000..c6fc1924 --- /dev/null +++ b/src/main/java/me/xmrvizzy/skyblocker/compatibility/MixinPlugin.java @@ -0,0 +1,52 @@ +package me.xmrvizzy.skyblocker.compatibility; + +import java.util.List; +import java.util.Set; + +import org.objectweb.asm.tree.ClassNode; +import org.spongepowered.asm.mixin.extensibility.IMixinConfigPlugin; +import org.spongepowered.asm.mixin.extensibility.IMixinInfo; + +import net.fabricmc.loader.api.FabricLoader; + +public class MixinPlugin implements IMixinConfigPlugin { + private static final boolean OPTIFABRIC_LOADED = FabricLoader.getInstance().isModLoaded("optifabric"); + + @Override + public void onLoad(String mixinPackage) { + //Do nothing + } + + @Override + public String getRefMapperConfig() { + return null; + } + + @Override + public boolean shouldApplyMixin(String targetClassName, String mixinClassName) { + //OptiFabric Compatibility + if (mixinClassName.endsWith("WorldRendererMixin") && OPTIFABRIC_LOADED) return false; + + return true; + } + + @Override + public void acceptTargets(Set<String> myTargets, Set<String> otherTargets) { + //Do nothing + } + + @Override + public List<String> getMixins() { + return null; + } + + @Override + public void preApply(String targetClassName, ClassNode targetClass, String mixinClassName, IMixinInfo mixinInfo) { + //Do nothing + } + + @Override + public void postApply(String targetClassName, ClassNode targetClass, String mixinClassName, IMixinInfo mixinInfo) { + //Do nothing + } +} diff --git a/src/main/java/me/xmrvizzy/skyblocker/compatibility/emi/SkyblockEmiRecipe.java b/src/main/java/me/xmrvizzy/skyblocker/compatibility/emi/SkyblockEmiRecipe.java new file mode 100644 index 00000000..6cf91dac --- /dev/null +++ b/src/main/java/me/xmrvizzy/skyblocker/compatibility/emi/SkyblockEmiRecipe.java @@ -0,0 +1,38 @@ +package me.xmrvizzy.skyblocker.compatibility.emi; + +import dev.emi.emi.api.recipe.EmiCraftingRecipe; +import dev.emi.emi.api.recipe.EmiRecipeCategory; +import dev.emi.emi.api.stack.Comparison; +import dev.emi.emi.api.stack.EmiIngredient; +import dev.emi.emi.api.stack.EmiStack; +import dev.emi.emi.api.widget.WidgetHolder; +import me.xmrvizzy.skyblocker.skyblock.itemlist.ItemRegistry; +import me.xmrvizzy.skyblocker.skyblock.itemlist.SkyblockCraftingRecipe; +import net.minecraft.client.MinecraftClient; +import net.minecraft.text.Text; +import net.minecraft.util.Identifier; + +public class SkyblockEmiRecipe extends EmiCraftingRecipe { + private final String craftText; + + public SkyblockEmiRecipe(SkyblockCraftingRecipe recipe) { + super(recipe.getGrid().stream().map(EmiStack::of).map(EmiIngredient.class::cast).toList(), EmiStack.of(recipe.getResult()).comparison(Comparison.compareNbt()), Identifier.of("skyblock", ItemRegistry.getInternalName(recipe.getResult()).toLowerCase().replace(';', '_'))); + this.craftText = recipe.getCraftText(); + } + + @Override + public EmiRecipeCategory getCategory() { + return SkyblockerEMIPlugin.SKYBLOCK; + } + + @Override + public int getDisplayHeight() { + return super.getDisplayHeight() + (craftText.isEmpty() ? 0 : 10); + } + + @Override + public void addWidgets(WidgetHolder widgets) { + super.addWidgets(widgets); + widgets.addText(Text.of(craftText), 59 - MinecraftClient.getInstance().textRenderer.getWidth(craftText) / 2, 55, 0xFFFFFF, true); + } +} diff --git a/src/main/java/me/xmrvizzy/skyblocker/compatibility/emi/SkyblockerEMIPlugin.java b/src/main/java/me/xmrvizzy/skyblocker/compatibility/emi/SkyblockerEMIPlugin.java new file mode 100644 index 00000000..526ac885 --- /dev/null +++ b/src/main/java/me/xmrvizzy/skyblocker/compatibility/emi/SkyblockerEMIPlugin.java @@ -0,0 +1,29 @@ +package me.xmrvizzy.skyblocker.compatibility.emi; + +import dev.emi.emi.api.EmiPlugin; +import dev.emi.emi.api.EmiRegistry; +import dev.emi.emi.api.recipe.EmiRecipeCategory; +import dev.emi.emi.api.render.EmiTexture; +import dev.emi.emi.api.stack.EmiStack; +import me.xmrvizzy.skyblocker.SkyblockerMod; +import me.xmrvizzy.skyblocker.skyblock.itemlist.ItemRegistry; +import me.xmrvizzy.skyblocker.utils.ItemUtils; +import net.minecraft.item.Items; +import net.minecraft.util.Identifier; + +/** + * EMI integration + */ +public class SkyblockerEMIPlugin implements EmiPlugin { + public static final Identifier SIMPLIFIED_TEXTURES = new Identifier("emi", "textures/gui/widgets.png"); + // TODO: Custom simplified texture for Skyblock + public static final EmiRecipeCategory SKYBLOCK = new EmiRecipeCategory(new Identifier(SkyblockerMod.NAMESPACE, "skyblock"), EmiStack.of(ItemUtils.getSkyblockerStack()), new EmiTexture(SIMPLIFIED_TEXTURES, 240, 240, 16, 16)); + + @Override + public void register(EmiRegistry registry) { + ItemRegistry.getRecipeResultsStream().map(EmiStack::of).forEach(registry::addEmiStack); + registry.addCategory(SKYBLOCK); + registry.addWorkstation(SKYBLOCK, EmiStack.of(Items.CRAFTING_TABLE)); + ItemRegistry.getRecipesStream().map(SkyblockEmiRecipe::new).forEach(registry::addRecipe); + } +} diff --git a/src/main/java/me/xmrvizzy/skyblocker/config/modmenu/ModMenuEntry.java b/src/main/java/me/xmrvizzy/skyblocker/compatibility/modmenu/ModMenuEntry.java index f9d4e8fe..0cba3d5e 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/config/modmenu/ModMenuEntry.java +++ b/src/main/java/me/xmrvizzy/skyblocker/compatibility/modmenu/ModMenuEntry.java @@ -1,4 +1,4 @@ -package me.xmrvizzy.skyblocker.config.modmenu; +package me.xmrvizzy.skyblocker.compatibility.modmenu; import me.shedaniel.autoconfig.AutoConfig; import com.terraformersmc.modmenu.api.ConfigScreenFactory; @@ -9,7 +9,6 @@ import net.fabricmc.api.Environment; @Environment(EnvType.CLIENT) public class ModMenuEntry implements ModMenuApi { - @Override public ConfigScreenFactory<?> getModConfigScreenFactory() { return screen -> AutoConfig.getConfigScreen(SkyblockerConfig.class, screen).get(); diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/rei/SkyblockCategory.java b/src/main/java/me/xmrvizzy/skyblocker/compatibility/rei/SkyblockCategory.java index 3b402dc9..14c61d23 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/rei/SkyblockCategory.java +++ b/src/main/java/me/xmrvizzy/skyblocker/compatibility/rei/SkyblockCategory.java @@ -1,7 +1,6 @@ -package me.xmrvizzy.skyblocker.skyblock.rei; +package me.xmrvizzy.skyblocker.compatibility.rei; import com.google.common.collect.Lists; -import com.mojang.brigadier.exceptions.CommandSyntaxException; import me.shedaniel.math.Point; import me.shedaniel.math.Rectangle; import me.shedaniel.rei.api.client.gui.Renderer; @@ -13,14 +12,11 @@ import me.shedaniel.rei.api.client.registry.display.DisplayCategory; import me.shedaniel.rei.api.common.category.CategoryIdentifier; import me.shedaniel.rei.api.common.entry.EntryIngredient; import me.shedaniel.rei.api.common.util.EntryStacks; -import me.xmrvizzy.skyblocker.config.SkyblockerConfig; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.StringNbtReader; +import me.xmrvizzy.skyblocker.utils.ItemUtils; import net.minecraft.text.Text; import java.util.ArrayList; import java.util.List; -import java.util.Locale; /** * Skyblock recipe category class for REI @@ -33,21 +29,12 @@ public class SkyblockCategory implements DisplayCategory<SkyblockCraftingDisplay @Override public Text getTitle() { - return Text.translatable("key.categories.skyblocker"); + return Text.translatable("emi.category.skyblocker.skyblock"); } @Override public Renderer getIcon() { - // TODO separate icon from quickNav - SkyblockerConfig.ItemData iconItem = SkyblockerConfig.get().quickNav.button7.item; - String nbtString = "{id:\"minecraft:" + iconItem.itemName.toLowerCase(Locale.ROOT) + "\",Count:1"; - if (iconItem.nbt.length() > 2) nbtString += "," + iconItem.nbt; - nbtString += "}"; - try { - return EntryStacks.of(ItemStack.fromNbt(StringNbtReader.parse(nbtString))); - } catch (CommandSyntaxException e) { - throw new RuntimeException(e); - } + return EntryStacks.of(ItemUtils.getSkyblockerStack()); } @Override diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/rei/SkyblockCraftingDisplay.java b/src/main/java/me/xmrvizzy/skyblocker/compatibility/rei/SkyblockCraftingDisplay.java index 5820780c..35b5c886 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/rei/SkyblockCraftingDisplay.java +++ b/src/main/java/me/xmrvizzy/skyblocker/compatibility/rei/SkyblockCraftingDisplay.java @@ -1,4 +1,4 @@ -package me.xmrvizzy.skyblocker.skyblock.rei; +package me.xmrvizzy.skyblocker.compatibility.rei; import me.shedaniel.rei.api.common.category.CategoryIdentifier; @@ -12,12 +12,13 @@ import java.util.List; * Skyblock Crafting Recipe display class for REI */ public class SkyblockCraftingDisplay extends BasicDisplay implements SimpleGridMenuDisplay { - private final String craftText; + public SkyblockCraftingDisplay(List<EntryIngredient> input, List<EntryIngredient> output, String craftText) { super(input, output); this.craftText = craftText; } + public String getCraftText() { return craftText; } diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/rei/SkyblockCraftingDisplayGenerator.java b/src/main/java/me/xmrvizzy/skyblocker/compatibility/rei/SkyblockCraftingDisplayGenerator.java index fd3f56ee..370e15dc 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/rei/SkyblockCraftingDisplayGenerator.java +++ b/src/main/java/me/xmrvizzy/skyblocker/compatibility/rei/SkyblockCraftingDisplayGenerator.java @@ -1,4 +1,4 @@ -package me.xmrvizzy.skyblocker.skyblock.rei; +package me.xmrvizzy.skyblocker.compatibility.rei; import me.shedaniel.rei.api.client.registry.display.DynamicDisplayGenerator; import me.shedaniel.rei.api.common.entry.EntryIngredient; @@ -18,8 +18,7 @@ public class SkyblockCraftingDisplayGenerator implements DynamicDisplayGenerator public Optional<List<SkyblockCraftingDisplay>> getRecipeFor(EntryStack<?> entry) { if (!(entry.getValue() instanceof ItemStack)) return Optional.empty(); EntryStack<ItemStack> inputItem = EntryStacks.of((ItemStack) entry.getValue()); - List<SkyblockCraftingRecipe> filteredRecipes = ItemRegistry.getRecipes() - .stream() + List<SkyblockCraftingRecipe> filteredRecipes = ItemRegistry.getRecipesStream() .filter(recipe -> ItemRegistry.getInternalName(recipe.getResult()).equals(ItemRegistry.getInternalName(inputItem.getValue()))) .toList(); @@ -30,11 +29,10 @@ public class SkyblockCraftingDisplayGenerator implements DynamicDisplayGenerator public Optional<List<SkyblockCraftingDisplay>> getUsageFor(EntryStack<?> entry) { if (!(entry.getValue() instanceof ItemStack)) return Optional.empty(); EntryStack<ItemStack> inputItem = EntryStacks.of((ItemStack) entry.getValue()); - List<SkyblockCraftingRecipe> filteredRecipes = ItemRegistry.getRecipes() - .stream() + List<SkyblockCraftingRecipe> filteredRecipes = ItemRegistry.getRecipesStream() .filter(recipe -> { for (ItemStack item : recipe.getGrid()) { - if(!ItemRegistry.getInternalName(item).equals("") && ItemRegistry.getInternalName(item).equals(ItemRegistry.getInternalName(inputItem.getValue()))) + if(!ItemRegistry.getInternalName(item).isEmpty() && ItemRegistry.getInternalName(item).equals(ItemRegistry.getInternalName(inputItem.getValue()))) return true; } return false; diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/rei/SkyblockerREIClientPlugin.java b/src/main/java/me/xmrvizzy/skyblocker/compatibility/rei/SkyblockerREIClientPlugin.java index 5f43ca0e..5c97a274 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/rei/SkyblockerREIClientPlugin.java +++ b/src/main/java/me/xmrvizzy/skyblocker/compatibility/rei/SkyblockerREIClientPlugin.java @@ -1,19 +1,15 @@ -package me.xmrvizzy.skyblocker.skyblock.rei; +package me.xmrvizzy.skyblocker.compatibility.rei; import me.shedaniel.rei.api.client.plugins.REIClientPlugin; import me.shedaniel.rei.api.client.registry.category.CategoryRegistry; import me.shedaniel.rei.api.client.registry.display.DisplayRegistry; import me.shedaniel.rei.api.client.registry.entry.EntryRegistry; import me.shedaniel.rei.api.common.category.CategoryIdentifier; -import me.shedaniel.rei.api.common.entry.EntryStack; import me.shedaniel.rei.api.common.util.EntryStacks; import me.xmrvizzy.skyblocker.SkyblockerMod; import me.xmrvizzy.skyblocker.skyblock.itemlist.ItemRegistry; -import net.minecraft.item.ItemStack; import net.minecraft.item.Items; -import java.util.ArrayList; - /** * REI integration */ @@ -33,8 +29,6 @@ public class SkyblockerREIClientPlugin implements REIClientPlugin { @Override public void registerEntries(EntryRegistry entryRegistry) { - ArrayList<EntryStack<ItemStack>> entries = new ArrayList<>(); - ItemRegistry.getRecipes().forEach(recipe -> entries.add(EntryStacks.of(recipe.getResult()))); - entryRegistry.addEntries(entries); + entryRegistry.addEntries(ItemRegistry.getRecipeResultsStream().map(EntryStacks::of).toList()); } } diff --git a/src/main/java/me/xmrvizzy/skyblocker/config/SkyblockerConfig.java b/src/main/java/me/xmrvizzy/skyblocker/config/SkyblockerConfig.java index 5d251f4f..577c87e4 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/config/SkyblockerConfig.java +++ b/src/main/java/me/xmrvizzy/skyblocker/config/SkyblockerConfig.java @@ -12,9 +12,9 @@ import me.shedaniel.autoconfig.annotation.ConfigEntry; import me.shedaniel.autoconfig.serializer.ConfigSerializer; import me.shedaniel.autoconfig.serializer.GsonConfigSerializer; import me.xmrvizzy.skyblocker.SkyblockerMod; -import me.xmrvizzy.skyblocker.chat.ChatFilterResult; import me.xmrvizzy.skyblocker.skyblock.item.CustomArmorTrims; -import me.xmrvizzy.skyblocker.utils.Scheduler; +import me.xmrvizzy.skyblocker.utils.chat.ChatFilterResult; +import me.xmrvizzy.skyblocker.utils.scheduler.Scheduler; import net.fabricmc.fabric.api.client.command.v2.ClientCommandRegistrationCallback; import net.fabricmc.fabric.api.client.command.v2.FabricClientCommandSource; import net.minecraft.client.resource.language.I18n; diff --git a/src/main/java/me/xmrvizzy/skyblocker/mixin/HandledScreenMixin.java b/src/main/java/me/xmrvizzy/skyblocker/mixin/HandledScreenMixin.java index 8a57f752..af6f6aa7 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/mixin/HandledScreenMixin.java +++ b/src/main/java/me/xmrvizzy/skyblocker/mixin/HandledScreenMixin.java @@ -2,7 +2,6 @@ package me.xmrvizzy.skyblocker.mixin; import me.xmrvizzy.skyblocker.SkyblockerMod; import me.xmrvizzy.skyblocker.config.SkyblockerConfig; -import me.xmrvizzy.skyblocker.gui.ContainerSolver; import me.xmrvizzy.skyblocker.skyblock.BackpackPreview; import me.xmrvizzy.skyblocker.skyblock.experiment.ChronomatronSolver; import me.xmrvizzy.skyblocker.skyblock.experiment.ExperimentSolver; @@ -10,6 +9,7 @@ import me.xmrvizzy.skyblocker.skyblock.experiment.SuperpairsSolver; import me.xmrvizzy.skyblocker.skyblock.experiment.UltrasequencerSolver; import me.xmrvizzy.skyblocker.skyblock.item.WikiLookup; import me.xmrvizzy.skyblocker.utils.Utils; +import me.xmrvizzy.skyblocker.utils.render.gui.ContainerSolver; import net.minecraft.client.gui.DrawContext; import net.minecraft.client.gui.screen.Screen; import net.minecraft.client.gui.screen.ingame.HandledScreen; diff --git a/src/main/java/me/xmrvizzy/skyblocker/mixin/accessor/FrustumInvoker.java b/src/main/java/me/xmrvizzy/skyblocker/mixin/accessor/FrustumInvoker.java index 3cde115e..9dacbe34 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/mixin/accessor/FrustumInvoker.java +++ b/src/main/java/me/xmrvizzy/skyblocker/mixin/accessor/FrustumInvoker.java @@ -5,7 +5,7 @@ import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.gen.Invoker; /** - * Use {@link me.xmrvizzy.skyblocker.utils.FrustumUtils#isVisible(double, double, double, double, double, double) FrustumUtils#isVisible} which is shorter. For the purpose of avoiding object allocations! + * Use {@link me.xmrvizzy.skyblocker.utils.render.FrustumUtils#isVisible(double, double, double, double, double, double) FrustumUtils#isVisible} which is shorter. For the purpose of avoiding object allocations! */ @Mixin(Frustum.class) public interface FrustumInvoker { diff --git a/src/main/java/me/xmrvizzy/skyblocker/mixin/accessor/HandledScreenAccessor.java b/src/main/java/me/xmrvizzy/skyblocker/mixin/accessor/HandledScreenAccessor.java index ad35dae6..e6e0ebb7 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/mixin/accessor/HandledScreenAccessor.java +++ b/src/main/java/me/xmrvizzy/skyblocker/mixin/accessor/HandledScreenAccessor.java @@ -6,12 +6,15 @@ import org.spongepowered.asm.mixin.gen.Accessor; @Mixin(HandledScreen.class) public interface HandledScreenAccessor { - @Accessor + @Accessor("x") int getX(); - @Accessor + + @Accessor("y") int getY(); + @Accessor int getBackgroundWidth(); + @Accessor int getBackgroundHeight(); } diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/FairySouls.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/FairySouls.java index b7c4ff2f..ab6fa767 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/FairySouls.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/FairySouls.java @@ -8,8 +8,8 @@ import com.google.gson.JsonParser; import me.xmrvizzy.skyblocker.SkyblockerMod; import me.xmrvizzy.skyblocker.config.SkyblockerConfig; import me.xmrvizzy.skyblocker.utils.NEURepo; -import me.xmrvizzy.skyblocker.utils.RenderHelper; import me.xmrvizzy.skyblocker.utils.Utils; +import me.xmrvizzy.skyblocker.utils.render.RenderHelper; import net.fabricmc.fabric.api.client.command.v2.ClientCommandRegistrationCallback; import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientLifecycleEvents; import net.fabricmc.fabric.api.client.message.v1.ClientReceiveMessageEvents; diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/FishingHelper.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/FishingHelper.java index b53157c5..f039a79d 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/FishingHelper.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/FishingHelper.java @@ -1,8 +1,8 @@ package me.xmrvizzy.skyblocker.skyblock; import me.xmrvizzy.skyblocker.config.SkyblockerConfig; -import me.xmrvizzy.skyblocker.utils.RenderHelper; -import me.xmrvizzy.skyblocker.utils.title.Title; +import me.xmrvizzy.skyblocker.utils.render.RenderHelper; +import me.xmrvizzy.skyblocker.utils.render.title.Title; import net.fabricmc.fabric.api.event.player.UseItemCallback; import net.minecraft.client.MinecraftClient; import net.minecraft.client.network.ClientPlayerEntity; diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/TeleportOverlay.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/TeleportOverlay.java index e7c76160..f1d6e986 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/TeleportOverlay.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/TeleportOverlay.java @@ -3,8 +3,8 @@ package me.xmrvizzy.skyblocker.skyblock; import com.mojang.blaze3d.systems.RenderSystem; import me.xmrvizzy.skyblocker.config.SkyblockerConfig; import me.xmrvizzy.skyblocker.skyblock.item.PriceInfoTooltip; -import me.xmrvizzy.skyblocker.utils.RenderHelper; import me.xmrvizzy.skyblocker.utils.Utils; +import me.xmrvizzy.skyblocker.utils.render.RenderHelper; import net.fabricmc.fabric.api.client.rendering.v1.WorldRenderContext; import net.fabricmc.fabric.api.client.rendering.v1.WorldRenderEvents; import net.minecraft.block.BlockState; @@ -77,6 +77,7 @@ public class TeleportOverlay { /** * Renders the teleport overlay with a given range. Uses {@link MinecraftClient#crosshairTarget} if it is a block and within range. Otherwise, raycasts from the player with the given range. + * * @implNote {@link MinecraftClient#player} and {@link MinecraftClient#world} must not be null when calling this method. */ private static void render(WorldRenderContext wrc, int range) { @@ -93,6 +94,7 @@ public class TeleportOverlay { /** * Renders the teleport overlay at the given {@link BlockHitResult}. + * * @implNote {@link MinecraftClient#world} must not be null when calling this method. */ private static void render(WorldRenderContext wrc, BlockHitResult blockHitResult) { diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/barn/HungryHiker.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/barn/HungryHiker.java index b0f0445a..a5d02d93 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/barn/HungryHiker.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/barn/HungryHiker.java @@ -1,8 +1,8 @@ package me.xmrvizzy.skyblocker.skyblock.barn; -import me.xmrvizzy.skyblocker.chat.ChatFilterResult; -import me.xmrvizzy.skyblocker.chat.ChatPatternListener; import me.xmrvizzy.skyblocker.config.SkyblockerConfig; +import me.xmrvizzy.skyblocker.utils.chat.ChatFilterResult; +import me.xmrvizzy.skyblocker.utils.chat.ChatPatternListener; import net.minecraft.client.MinecraftClient; import net.minecraft.text.Text; diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/barn/TreasureHunter.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/barn/TreasureHunter.java index ad5db522..ba42d2ba 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/barn/TreasureHunter.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/barn/TreasureHunter.java @@ -1,8 +1,8 @@ package me.xmrvizzy.skyblocker.skyblock.barn; -import me.xmrvizzy.skyblocker.chat.ChatFilterResult; -import me.xmrvizzy.skyblocker.chat.ChatPatternListener; import me.xmrvizzy.skyblocker.config.SkyblockerConfig; +import me.xmrvizzy.skyblocker.utils.chat.ChatFilterResult; +import me.xmrvizzy.skyblocker.utils.chat.ChatPatternListener; import net.minecraft.client.MinecraftClient; import net.minecraft.text.Text; diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/CroesusHelper.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/CroesusHelper.java index def1eb76..1e949cd1 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/CroesusHelper.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/CroesusHelper.java @@ -1,8 +1,8 @@ package me.xmrvizzy.skyblocker.skyblock.dungeon; import me.xmrvizzy.skyblocker.config.SkyblockerConfig; -import me.xmrvizzy.skyblocker.gui.ColorHighlight; -import me.xmrvizzy.skyblocker.gui.ContainerSolver; +import me.xmrvizzy.skyblocker.utils.render.gui.ColorHighlight; +import me.xmrvizzy.skyblocker.utils.render.gui.ContainerSolver; import net.minecraft.item.ItemStack; import java.util.ArrayList; diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/DungeonBlaze.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/DungeonBlaze.java index c3e12c3d..6e354ddc 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/DungeonBlaze.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/DungeonBlaze.java @@ -1,11 +1,10 @@ package me.xmrvizzy.skyblocker.skyblock.dungeon; import it.unimi.dsi.fastutil.objects.ObjectIntPair; +import me.xmrvizzy.skyblocker.SkyblockerMod; import me.xmrvizzy.skyblocker.config.SkyblockerConfig; -import me.xmrvizzy.skyblocker.utils.RenderHelper; -import me.xmrvizzy.skyblocker.utils.RenderUtils; import me.xmrvizzy.skyblocker.utils.Utils; -import me.xmrvizzy.skyblocker.utils.color.QuadColor; +import me.xmrvizzy.skyblocker.utils.render.RenderHelper; import net.fabricmc.fabric.api.client.rendering.v1.WorldRenderContext; import net.fabricmc.fabric.api.client.rendering.v1.WorldRenderEvents; import net.minecraft.client.MinecraftClient; @@ -27,15 +26,18 @@ import java.util.List; */ public class DungeonBlaze { private static final Logger LOGGER = LoggerFactory.getLogger(DungeonBlaze.class.getName()); + private static final float[] GREEN_COLOR_COMPONENTS = {0.0F, 1.0F, 0.0F}; private static final float[] WHITE_COLOR_COMPONENTS = {1.0f, 1.0f, 1.0f}; - private static final QuadColor outlineColorGreen = QuadColor.single(0.0F, 1.0f, 0.0f, 1f); - private static final QuadColor outlineColorWhite = QuadColor.single(1.0f, 1.0f, 1.0f, 1.0f); private static ArmorStandEntity highestBlaze = null; private static ArmorStandEntity lowestBlaze = null; private static ArmorStandEntity nextHighestBlaze = null; private static ArmorStandEntity nextLowestBlaze = null; - private static boolean renderHooked = false; + + public static void init() { + SkyblockerMod.getInstance().scheduler.scheduleCyclic(DungeonBlaze::update, 4); + WorldRenderEvents.BEFORE_DEBUG_RENDER.register(DungeonBlaze::blazeRenderer); + } /** * Updates the state of Blaze entities and triggers the rendering process if necessary. @@ -44,10 +46,6 @@ public class DungeonBlaze { ClientWorld world = MinecraftClient.getInstance().world; ClientPlayerEntity player = MinecraftClient.getInstance().player; if (world == null || player == null || !Utils.isInDungeons()) return; - if (!renderHooked) { - WorldRenderEvents.BEFORE_DEBUG_RENDER.register(DungeonBlaze::blazeRenderer); - renderHooked = true; - } List<ObjectIntPair<ArmorStandEntity>> blazes = getBlazesInWorld(world, player); sortBlazes(blazes); updateBlazeEntities(blazes); @@ -130,11 +128,11 @@ public class DungeonBlaze { */ private static void renderBlazeOutline(ArmorStandEntity blaze, ArmorStandEntity nextBlaze, WorldRenderContext wrc) { Box blazeBox = blaze.getBoundingBox().expand(0.3, 0.9, 0.3).offset(0, -1.1, 0); - RenderUtils.drawBoxOutline(blazeBox, DungeonBlaze.outlineColorGreen, 5f); + RenderHelper.renderOutline(wrc, blazeBox, GREEN_COLOR_COMPONENTS, 5f); if (nextBlaze != null && nextBlaze.isAlive() && nextBlaze != blaze) { Box nextBlazeBox = nextBlaze.getBoundingBox().expand(0.3, 0.9, 0.3).offset(0, -1.1, 0); - RenderUtils.drawBoxOutline(nextBlazeBox, DungeonBlaze.outlineColorWhite, 5f); + RenderHelper.renderOutline(wrc, nextBlazeBox, WHITE_COLOR_COMPONENTS, 5f); Vec3d blazeCenter = blazeBox.getCenter(); Vec3d nextBlazeCenter = nextBlazeBox.getCenter(); diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/DungeonMap.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/DungeonMap.java index 040c8aed..a70dd501 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/DungeonMap.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/DungeonMap.java @@ -1,7 +1,7 @@ package me.xmrvizzy.skyblocker.skyblock.dungeon; import me.xmrvizzy.skyblocker.config.SkyblockerConfig; -import me.xmrvizzy.skyblocker.utils.Scheduler; +import me.xmrvizzy.skyblocker.utils.scheduler.Scheduler; import net.fabricmc.fabric.api.client.command.v2.ClientCommandManager; import net.fabricmc.fabric.api.client.command.v2.ClientCommandRegistrationCallback; import net.minecraft.client.MinecraftClient; @@ -21,7 +21,7 @@ public class DungeonMap { public static void render(MatrixStack matrices) { MinecraftClient client = MinecraftClient.getInstance(); - if (client.player == null && client.world == null) return; + if (client.player == null || client.world == null) return; ItemStack item = client.player.getInventory().main.get(8); NbtCompound tag = item.getNbt(); diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/DungeonMapConfigScreen.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/DungeonMapConfigScreen.java index ef782c3b..f0ae1590 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/DungeonMapConfigScreen.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/DungeonMapConfigScreen.java @@ -1,14 +1,14 @@ package me.xmrvizzy.skyblocker.skyblock.dungeon; -import java.awt.Color; - import me.shedaniel.autoconfig.AutoConfig; import me.xmrvizzy.skyblocker.config.SkyblockerConfig; -import me.xmrvizzy.skyblocker.utils.RenderUtils; +import me.xmrvizzy.skyblocker.utils.render.RenderHelper; import net.minecraft.client.gui.DrawContext; import net.minecraft.client.gui.screen.Screen; import net.minecraft.text.Text; +import java.awt.*; + public class DungeonMapConfigScreen extends Screen { private int hudX = SkyblockerConfig.get().locations.dungeons.mapX; @@ -30,7 +30,7 @@ public class DungeonMapConfigScreen extends Screen { public boolean mouseDragged(double mouseX, double mouseY, int button, double deltaX, double deltaY) { float scaling = SkyblockerConfig.get().locations.dungeons.mapScaling; int size = (int) (128 * scaling); - if (RenderUtils.pointExistsInArea((int) mouseX, (int) mouseY, hudX, hudY, hudX + size, hudY + size) && button == 0) { + if (RenderHelper.pointIsInArea(mouseX, mouseY, hudX, hudY, hudX + size, hudY + size) && button == 0) { hudX = (int) Math.max(Math.min(mouseX - (size >> 1), this.width - size), 0); hudY = (int) Math.max(Math.min(mouseY - (size >> 1), this.height - size), 0); } diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/Reparty.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/Reparty.java index 8ae7ce7b..e1194632 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/Reparty.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/Reparty.java @@ -1,10 +1,10 @@ package me.xmrvizzy.skyblocker.skyblock.dungeon; import me.xmrvizzy.skyblocker.SkyblockerMod; -import me.xmrvizzy.skyblocker.chat.ChatFilterResult; -import me.xmrvizzy.skyblocker.chat.ChatPatternListener; import me.xmrvizzy.skyblocker.config.SkyblockerConfig; import me.xmrvizzy.skyblocker.utils.Utils; +import me.xmrvizzy.skyblocker.utils.chat.ChatFilterResult; +import me.xmrvizzy.skyblocker.utils.chat.ChatPatternListener; import net.fabricmc.fabric.api.client.command.v2.ClientCommandManager; import net.fabricmc.fabric.api.client.command.v2.ClientCommandRegistrationCallback; import net.minecraft.client.MinecraftClient; diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/StarredMobGlow.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/StarredMobGlow.java index b45242f9..64a28712 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/StarredMobGlow.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/StarredMobGlow.java @@ -3,7 +3,7 @@ package me.xmrvizzy.skyblocker.skyblock.dungeon; import java.util.List; import me.xmrvizzy.skyblocker.utils.Utils; -import me.xmrvizzy.skyblocker.utils.culling.OcclusionCulling; +import me.xmrvizzy.skyblocker.utils.render.culling.OcclusionCulling; import net.minecraft.entity.Entity; import net.minecraft.entity.decoration.ArmorStandEntity; import net.minecraft.entity.player.PlayerEntity; diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/ThreeWeirdos.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/ThreeWeirdos.java index da964f07..9f522942 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/ThreeWeirdos.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/ThreeWeirdos.java @@ -1,8 +1,8 @@ package me.xmrvizzy.skyblocker.skyblock.dungeon; -import me.xmrvizzy.skyblocker.chat.ChatFilterResult; -import me.xmrvizzy.skyblocker.chat.ChatPatternListener; import me.xmrvizzy.skyblocker.config.SkyblockerConfig; +import me.xmrvizzy.skyblocker.utils.chat.ChatFilterResult; +import me.xmrvizzy.skyblocker.utils.chat.ChatPatternListener; import net.minecraft.client.MinecraftClient; import net.minecraft.entity.decoration.ArmorStandEntity; import net.minecraft.text.Text; diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/TicTacToe.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/TicTacToe.java index f5d55d2c..a97b6752 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/TicTacToe.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/TicTacToe.java @@ -1,14 +1,8 @@ package me.xmrvizzy.skyblocker.skyblock.dungeon; -import java.util.List; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - import me.xmrvizzy.skyblocker.config.SkyblockerConfig; -import me.xmrvizzy.skyblocker.utils.RenderUtils; import me.xmrvizzy.skyblocker.utils.Utils; -import me.xmrvizzy.skyblocker.utils.color.QuadColor; +import me.xmrvizzy.skyblocker.utils.render.RenderHelper; import me.xmrvizzy.skyblocker.utils.tictactoe.TicTacToeUtils; import net.fabricmc.fabric.api.client.rendering.v1.WorldRenderContext; import net.fabricmc.fabric.api.client.rendering.v1.WorldRenderEvents; @@ -23,32 +17,36 @@ import net.minecraft.item.map.MapState; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.Box; import net.minecraft.util.math.Direction; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.util.List; /** * Thanks to Danker for a reference implementation! */ public class TicTacToe { private static final Logger LOGGER = LoggerFactory.getLogger(TicTacToe.class); - private static final QuadColor RED = QuadColor.single(1.0f, 0.0f, 0.0f, 1f); + private static final float[] RED_COLOR_COMPONENTS = {1.0F, 0.0F, 0.0F}; private static Box nextBestMoveToMake = null; public static void init() { WorldRenderEvents.BEFORE_DEBUG_RENDER.register(TicTacToe::solutionRenderer); } - + public static void tick() { MinecraftClient client = MinecraftClient.getInstance(); ClientWorld world = client.world; ClientPlayerEntity player = client.player; - + nextBestMoveToMake = null; - - if (world == null || player == null || !Utils.isInDungeons()) return; - + + if (world == null || player == null || !Utils.isInDungeons()) return; + //Search within 21 blocks for item frames that contain maps Box searchBox = new Box(player.getX() - 21, player.getY() - 21, player.getZ() - 21, player.getX() + 21, player.getY() + 21, player.getZ() + 21); List<ItemFrameEntity> itemFramesThatHoldMaps = world.getEntitiesByClass(ItemFrameEntity.class, searchBox, ItemFrameEntity::containsMap); - + try { //Only attempt to solve if its the player's turn if (itemFramesThatHoldMaps.size() != 9 && itemFramesThatHoldMaps.size() % 2 == 1) { @@ -56,15 +54,15 @@ public class TicTacToe { BlockPos leftmostRow = null; int sign = 1; char facing = 'X'; - + for (ItemFrameEntity itemFrame : itemFramesThatHoldMaps) { MapState mapState = world.getMapState(FilledMapItem.getMapName(itemFrame.getMapId().getAsInt())); - + if (mapState == null) continue; - + int column = 0, row; sign = 1; - + //Find position of the item frame relative to where it is on the tic tac toe board if (itemFrame.getHorizontalFacing() == Direction.SOUTH || itemFrame.getHorizontalFacing() == Direction.WEST) sign = -1; BlockPos itemFramePos = BlockPos.ofFloored(itemFrame.getX(), itemFrame.getY(), itemFrame.getZ()); @@ -72,23 +70,23 @@ public class TicTacToe { for (int i = 2; i >= 0; i--) { int realI = i * sign; BlockPos blockPos = itemFramePos; - + if (itemFrame.getX() % 0.5 == 0) { blockPos = itemFramePos.add(realI, 0, 0); } else if (itemFrame.getZ() % 0.5 == 0) { blockPos = itemFramePos.add(0, 0, realI); facing = 'Z'; } - + Block block = world.getBlockState(blockPos).getBlock(); if (block == Blocks.AIR || block == Blocks.STONE_BUTTON) { leftmostRow = blockPos; column = i; - + break; } } - + //Determine the row of the item frame if (itemFrame.getY() == 72.5) { row = 0; @@ -99,24 +97,24 @@ public class TicTacToe { } else { continue; } - - + + //Get the color of the middle pixel of the map which determines whether its X or O int middleColor = mapState.colors[8256] & 255; - + if (middleColor == 114) { board[row][column] = 'X'; } else if (middleColor == 33) { board[row][column] = 'O'; } - + int bestMove = TicTacToeUtils.getBestMove(board) - 1; - + if (leftmostRow != null) { double drawX = facing == 'X' ? leftmostRow.getX() - sign * (bestMove % 3) : leftmostRow.getX(); double drawY = 72 - (double) (bestMove / 3); double drawZ = facing == 'Z' ? leftmostRow.getZ() - sign * (bestMove % 3) : leftmostRow.getZ(); - + nextBestMoveToMake = new Box(drawX, drawY, drawZ, drawX + 1, drawY + 1, drawZ + 1); } } @@ -125,11 +123,11 @@ public class TicTacToe { LOGGER.error("[Skyblocker Tic Tac Toe] Encountered an exception while determining a tic tac toe solution!", e); } } - - private static void solutionRenderer(WorldRenderContext context) { + + private static void solutionRenderer(WorldRenderContext context) { try { if (SkyblockerConfig.get().locations.dungeons.solveTicTacToe && nextBestMoveToMake != null) { - RenderUtils.drawBoxOutline(nextBestMoveToMake, RED, 5); + RenderHelper.renderOutline(context, nextBestMoveToMake, RED_COLOR_COMPONENTS, 5); } } catch (Exception e) { LOGGER.error("[Skyblocker Tic Tac Toe] Encountered an exception while rendering the tic tac toe solution!", e); diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/Trivia.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/Trivia.java index 9c7452ac..8497041b 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/Trivia.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/Trivia.java @@ -1,8 +1,8 @@ package me.xmrvizzy.skyblocker.skyblock.dungeon; -import me.xmrvizzy.skyblocker.chat.ChatFilterResult; -import me.xmrvizzy.skyblocker.chat.ChatPatternListener; import me.xmrvizzy.skyblocker.config.SkyblockerConfig; +import me.xmrvizzy.skyblocker.utils.chat.ChatFilterResult; +import me.xmrvizzy.skyblocker.utils.chat.ChatPatternListener; import me.xmrvizzy.skyblocker.skyblock.FairySouls; import net.minecraft.client.MinecraftClient; import net.minecraft.client.network.ClientPlayerEntity; diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/secrets/SecretWaypoint.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/secrets/SecretWaypoint.java index c2658fd3..edf18f85 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/secrets/SecretWaypoint.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/secrets/SecretWaypoint.java @@ -2,7 +2,7 @@ package me.xmrvizzy.skyblocker.skyblock.dungeon.secrets; import com.google.gson.JsonObject; import me.xmrvizzy.skyblocker.config.SkyblockerConfig; -import me.xmrvizzy.skyblocker.utils.RenderHelper; +import me.xmrvizzy.skyblocker.utils.render.RenderHelper; import net.fabricmc.fabric.api.client.rendering.v1.WorldRenderContext; import net.minecraft.client.MinecraftClient; import net.minecraft.entity.Entity; diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/terminal/ColorTerminal.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/terminal/ColorTerminal.java index add30907..7aac04b5 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/terminal/ColorTerminal.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/terminal/ColorTerminal.java @@ -1,8 +1,8 @@ package me.xmrvizzy.skyblocker.skyblock.dungeon.terminal; import me.xmrvizzy.skyblocker.config.SkyblockerConfig; -import me.xmrvizzy.skyblocker.gui.ColorHighlight; -import me.xmrvizzy.skyblocker.gui.ContainerSolver; +import me.xmrvizzy.skyblocker.utils.render.gui.ColorHighlight; +import me.xmrvizzy.skyblocker.utils.render.gui.ContainerSolver; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.item.Items; diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/terminal/OrderTerminal.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/terminal/OrderTerminal.java index 3b4e1c50..01437919 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/terminal/OrderTerminal.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/terminal/OrderTerminal.java @@ -1,8 +1,8 @@ package me.xmrvizzy.skyblocker.skyblock.dungeon.terminal; import me.xmrvizzy.skyblocker.config.SkyblockerConfig; -import me.xmrvizzy.skyblocker.gui.ColorHighlight; -import me.xmrvizzy.skyblocker.gui.ContainerSolver; +import me.xmrvizzy.skyblocker.utils.render.gui.ColorHighlight; +import me.xmrvizzy.skyblocker.utils.render.gui.ContainerSolver; import net.minecraft.item.ItemStack; import net.minecraft.item.Items; diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/terminal/StartsWithTerminal.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/terminal/StartsWithTerminal.java index 18326254..988b570e 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/terminal/StartsWithTerminal.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/terminal/StartsWithTerminal.java @@ -1,8 +1,8 @@ package me.xmrvizzy.skyblocker.skyblock.dungeon.terminal; import me.xmrvizzy.skyblocker.config.SkyblockerConfig; -import me.xmrvizzy.skyblocker.gui.ColorHighlight; -import me.xmrvizzy.skyblocker.gui.ContainerSolver; +import me.xmrvizzy.skyblocker.utils.render.gui.ColorHighlight; +import me.xmrvizzy.skyblocker.utils.render.gui.ContainerSolver; import net.minecraft.item.ItemStack; import java.util.ArrayList; diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dwarven/DwarvenHud.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dwarven/DwarvenHud.java index 6ac8fa6c..3563741c 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dwarven/DwarvenHud.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dwarven/DwarvenHud.java @@ -1,16 +1,9 @@ package me.xmrvizzy.skyblocker.skyblock.dwarven; -import java.util.ArrayList; -import java.util.List; -import java.util.regex.Matcher; -import java.util.regex.Pattern; -import java.util.stream.Collectors; -import java.util.stream.Stream; - import it.unimi.dsi.fastutil.ints.IntIntPair; import me.xmrvizzy.skyblocker.config.SkyblockerConfig; import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.hud.HudCommsWidget; -import me.xmrvizzy.skyblocker.utils.Scheduler; +import me.xmrvizzy.skyblocker.utils.scheduler.Scheduler; import net.fabricmc.fabric.api.client.command.v2.ClientCommandManager; import net.fabricmc.fabric.api.client.command.v2.ClientCommandRegistrationCallback; import net.fabricmc.fabric.api.client.rendering.v1.HudRenderCallback; @@ -19,24 +12,31 @@ import net.minecraft.client.gui.DrawContext; import net.minecraft.text.Text; import net.minecraft.util.Formatting; +import java.util.ArrayList; +import java.util.List; +import java.util.regex.Matcher; +import java.util.regex.Pattern; +import java.util.stream.Collectors; +import java.util.stream.Stream; + public class DwarvenHud { public static final MinecraftClient client = MinecraftClient.getInstance(); public static List<Commission> commissionList = new ArrayList<>(); public static final List<Pattern> COMMISSIONS = Stream.of( - "(?:Titanium|Mithril|Hard Stone) Miner", - "(?:Ice Walker|Goblin|Goblin Raid|Automaton|Sludge|Team Treasurite Member|Yog|Boss Corleone|Thyst) Slayer", - "(?:Lava Springs|Cliffside Veins|Rampart's Quarry|Upper Mines|Royal Mines) Mithril", - "(?:Lava Springs|Cliffside Veins|Rampart's Quarry|Upper Mines|Royal Mines) Titanium", - "Goblin Raid", - "(?:Powder Ghast|Star Sentry) Puncher", - "(?<!Lucky )Raffle", - "Lucky Raffle", - "2x Mithril Powder Collector", - "(?:Ruby|Amber|Sapphire|Jade|Amethyst|Topaz) Gemstone Collector", - "(?:Amber|Sapphire|Jade|Amethyst|Topaz) Crystal Hunter", - "Chest Looter").map(s -> Pattern.compile("^.*(" + s + "): (\\d+\\.?\\d*%|DONE)")) + "(?:Titanium|Mithril|Hard Stone) Miner", + "(?:Ice Walker|Goblin|Goblin Raid|Automaton|Sludge|Team Treasurite Member|Yog|Boss Corleone|Thyst) Slayer", + "(?:Lava Springs|Cliffside Veins|Rampart's Quarry|Upper Mines|Royal Mines) Mithril", + "(?:Lava Springs|Cliffside Veins|Rampart's Quarry|Upper Mines|Royal Mines) Titanium", + "Goblin Raid", + "(?:Powder Ghast|Star Sentry) Puncher", + "(?<!Lucky )Raffle", + "Lucky Raffle", + "2x Mithril Powder Collector", + "(?:Ruby|Amber|Sapphire|Jade|Amethyst|Topaz) Gemstone Collector", + "(?:Amber|Sapphire|Jade|Amethyst|Topaz) Crystal Hunter", + "Chest Looter").map(s -> Pattern.compile("^.*(" + s + "): (\\d+\\.?\\d*%|DONE)")) .collect(Collectors.toList()); public static void init() { @@ -58,21 +58,21 @@ public class DwarvenHud { } public static IntIntPair getDimForConfig(List<Commission> commissions) { - switch (SkyblockerConfig.get().locations.dwarvenMines.dwarvenHud.style) { - case SIMPLE: + return switch (SkyblockerConfig.get().locations.dwarvenMines.dwarvenHud.style) { + case SIMPLE -> { HudCommsWidget.INSTANCE_CFG.updateData(commissions, false); - return IntIntPair.of( - HudCommsWidget.INSTANCE_CFG.getWidth(), - HudCommsWidget.INSTANCE_CFG.getHeight()); - case FANCY : + yield IntIntPair.of( + HudCommsWidget.INSTANCE_CFG.getWidth(), + HudCommsWidget.INSTANCE_CFG.getHeight()); + } + case FANCY -> { HudCommsWidget.INSTANCE_CFG.updateData(commissions, true); - return IntIntPair.of( - HudCommsWidget.INSTANCE_CFG.getWidth(), - HudCommsWidget.INSTANCE_CFG.getHeight()); - case CLASSIC: - default: - return IntIntPair.of(200, 20 * commissions.size()); - } + yield IntIntPair.of( + HudCommsWidget.INSTANCE_CFG.getWidth(), + HudCommsWidget.INSTANCE_CFG.getHeight()); + } + default -> IntIntPair.of(200, 20 * commissions.size()); + }; } public static void render(HudCommsWidget hcw, DrawContext context, int hudX, int hudY, List<Commission> commissions) { @@ -122,7 +122,7 @@ public class DwarvenHud { public static void update() { commissionList = new ArrayList<>(); - if (client.player == null || !SkyblockerConfig.get().locations.dwarvenMines.dwarvenHud.enabled) + if (client.player == null || client.getNetworkHandler() == null || !SkyblockerConfig.get().locations.dwarvenMines.dwarvenHud.enabled) return; client.getNetworkHandler().getPlayerList().forEach(playerListEntry -> { diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dwarven/DwarvenHudConfigScreen.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dwarven/DwarvenHudConfigScreen.java index d3c0fa76..35a296fb 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dwarven/DwarvenHudConfigScreen.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dwarven/DwarvenHudConfigScreen.java @@ -1,18 +1,18 @@ package me.xmrvizzy.skyblocker.skyblock.dwarven; -import java.awt.Color; -import java.util.List; - import it.unimi.dsi.fastutil.ints.IntIntPair; import me.shedaniel.autoconfig.AutoConfig; import me.xmrvizzy.skyblocker.config.SkyblockerConfig; import me.xmrvizzy.skyblocker.skyblock.dwarven.DwarvenHud.Commission; import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.hud.HudCommsWidget; -import me.xmrvizzy.skyblocker.utils.RenderUtils; +import me.xmrvizzy.skyblocker.utils.render.RenderHelper; import net.minecraft.client.gui.DrawContext; import net.minecraft.client.gui.screen.Screen; import net.minecraft.text.Text; +import java.awt.*; +import java.util.List; + public class DwarvenHudConfigScreen extends Screen { private static final List<Commission> CFG_COMMS = List.of(new DwarvenHud.Commission("Test Commission 1", "1%"), new DwarvenHud.Commission("Test Commission 2", "2%")); @@ -35,9 +35,9 @@ public class DwarvenHudConfigScreen extends Screen { @Override public boolean mouseDragged(double mouseX, double mouseY, int button, double deltaX, double deltaY) { IntIntPair dims = DwarvenHud.getDimForConfig(CFG_COMMS); - if (RenderUtils.pointExistsInArea((int) mouseX, (int) mouseY, hudX, hudY, hudX + 200, hudY + 40) && button == 0) { - hudX = (int) Math.max(Math.min(mouseX - dims.leftInt()/2, this.width - dims.leftInt()), 0); - hudY = (int) Math.max(Math.min(mouseY - dims.rightInt()/2, this.height - dims.rightInt()), 0); + if (RenderHelper.pointIsInArea(mouseX, mouseY, hudX, hudY, hudX + 200, hudY + 40) && button == 0) { + hudX = (int) Math.max(Math.min(mouseX - (double) dims.leftInt() / 2, this.width - dims.leftInt()), 0); + hudY = (int) Math.max(Math.min(mouseY - (double) dims.rightInt() / 2, this.height - dims.rightInt()), 0); } return super.mouseDragged(mouseX, mouseY, button, deltaX, deltaY); } diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dwarven/Fetchur.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dwarven/Fetchur.java index 4c2ac002..5e284452 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dwarven/Fetchur.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dwarven/Fetchur.java @@ -1,8 +1,8 @@ package me.xmrvizzy.skyblocker.skyblock.dwarven; -import me.xmrvizzy.skyblocker.chat.ChatFilterResult; -import me.xmrvizzy.skyblocker.chat.ChatPatternListener; import me.xmrvizzy.skyblocker.config.SkyblockerConfig; +import me.xmrvizzy.skyblocker.utils.chat.ChatFilterResult; +import me.xmrvizzy.skyblocker.utils.chat.ChatPatternListener; import net.minecraft.client.MinecraftClient; import net.minecraft.text.Text; diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dwarven/Puzzler.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dwarven/Puzzler.java index 0599b5b2..96ccdaf2 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dwarven/Puzzler.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dwarven/Puzzler.java @@ -1,8 +1,8 @@ package me.xmrvizzy.skyblocker.skyblock.dwarven; -import me.xmrvizzy.skyblocker.chat.ChatFilterResult; -import me.xmrvizzy.skyblocker.chat.ChatPatternListener; import me.xmrvizzy.skyblocker.config.SkyblockerConfig; +import me.xmrvizzy.skyblocker.utils.chat.ChatFilterResult; +import me.xmrvizzy.skyblocker.utils.chat.ChatPatternListener; import net.minecraft.block.Blocks; import net.minecraft.client.MinecraftClient; import net.minecraft.client.world.ClientWorld; diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/experiment/ChronomatronSolver.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/experiment/ChronomatronSolver.java index 40793169..d62383be 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/experiment/ChronomatronSolver.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/experiment/ChronomatronSolver.java @@ -2,7 +2,7 @@ package me.xmrvizzy.skyblocker.skyblock.experiment; import com.google.common.collect.ImmutableMap; import me.xmrvizzy.skyblocker.config.SkyblockerConfig; -import me.xmrvizzy.skyblocker.gui.ColorHighlight; +import me.xmrvizzy.skyblocker.utils.render.gui.ColorHighlight; import net.minecraft.client.gui.screen.Screen; import net.minecraft.client.gui.screen.ingame.GenericContainerScreen; import net.minecraft.inventory.Inventory; diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/experiment/ExperimentSolver.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/experiment/ExperimentSolver.java index 5dad908e..d0e5522d 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/experiment/ExperimentSolver.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/experiment/ExperimentSolver.java @@ -1,7 +1,7 @@ package me.xmrvizzy.skyblocker.skyblock.experiment; import me.xmrvizzy.skyblocker.config.SkyblockerConfig; -import me.xmrvizzy.skyblocker.gui.ContainerSolver; +import me.xmrvizzy.skyblocker.utils.render.gui.ContainerSolver; import net.fabricmc.fabric.api.client.screen.v1.ScreenEvents; import net.minecraft.client.gui.screen.Screen; import net.minecraft.client.gui.screen.ingame.GenericContainerScreen; diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/experiment/SuperpairsSolver.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/experiment/SuperpairsSolver.java index 9f6e8b2a..f329a395 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/experiment/SuperpairsSolver.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/experiment/SuperpairsSolver.java @@ -1,7 +1,7 @@ package me.xmrvizzy.skyblocker.skyblock.experiment; import me.xmrvizzy.skyblocker.config.SkyblockerConfig; -import me.xmrvizzy.skyblocker.gui.ColorHighlight; +import me.xmrvizzy.skyblocker.utils.render.gui.ColorHighlight; import net.minecraft.client.gui.screen.Screen; import net.minecraft.client.gui.screen.ingame.GenericContainerScreen; import net.minecraft.item.ItemStack; diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/experiment/UltrasequencerSolver.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/experiment/UltrasequencerSolver.java index 45d6c0c6..d4d80ee6 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/experiment/UltrasequencerSolver.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/experiment/UltrasequencerSolver.java @@ -1,7 +1,7 @@ package me.xmrvizzy.skyblocker.skyblock.experiment; import me.xmrvizzy.skyblocker.config.SkyblockerConfig; -import me.xmrvizzy.skyblocker.gui.ColorHighlight; +import me.xmrvizzy.skyblocker.utils.render.gui.ColorHighlight; import net.minecraft.client.gui.screen.Screen; import net.minecraft.client.gui.screen.ingame.GenericContainerScreen; import net.minecraft.inventory.Inventory; diff --git a/src/main/java/me/xmrvizzy/skyblocker/chat/filters/AbilityFilter.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/filters/AbilityFilter.java index 3a357a00..97e5e8dd 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/chat/filters/AbilityFilter.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/filters/AbilityFilter.java @@ -1,7 +1,7 @@ -package me.xmrvizzy.skyblocker.chat.filters; +package me.xmrvizzy.skyblocker.skyblock.filters; -import me.xmrvizzy.skyblocker.chat.ChatFilterResult; import me.xmrvizzy.skyblocker.config.SkyblockerConfig; +import me.xmrvizzy.skyblocker.utils.chat.ChatFilterResult; public class AbilityFilter extends SimpleChatFilter { public AbilityFilter() { diff --git a/src/main/java/me/xmrvizzy/skyblocker/chat/filters/AdFilter.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/filters/AdFilter.java index a813346b..c8335699 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/chat/filters/AdFilter.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/filters/AdFilter.java @@ -1,8 +1,8 @@ -package me.xmrvizzy.skyblocker.chat.filters; +package me.xmrvizzy.skyblocker.skyblock.filters; -import me.xmrvizzy.skyblocker.chat.ChatFilterResult; -import me.xmrvizzy.skyblocker.chat.ChatPatternListener; import me.xmrvizzy.skyblocker.config.SkyblockerConfig; +import me.xmrvizzy.skyblocker.utils.chat.ChatFilterResult; +import me.xmrvizzy.skyblocker.utils.chat.ChatPatternListener; import net.minecraft.text.Text; import java.util.regex.Matcher; diff --git a/src/main/java/me/xmrvizzy/skyblocker/chat/filters/AoteFilter.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/filters/AoteFilter.java index 029cf433..15c1ce6a 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/chat/filters/AoteFilter.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/filters/AoteFilter.java @@ -1,7 +1,7 @@ -package me.xmrvizzy.skyblocker.chat.filters; +package me.xmrvizzy.skyblocker.skyblock.filters; -import me.xmrvizzy.skyblocker.chat.ChatFilterResult; import me.xmrvizzy.skyblocker.config.SkyblockerConfig; +import me.xmrvizzy.skyblocker.utils.chat.ChatFilterResult; public class AoteFilter extends SimpleChatFilter { public AoteFilter() { diff --git a/src/main/java/me/xmrvizzy/skyblocker/chat/filters/AutopetFilter.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/filters/AutopetFilter.java index f1545db4..8c9ce9f6 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/chat/filters/AutopetFilter.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/filters/AutopetFilter.java @@ -1,8 +1,8 @@ -package me.xmrvizzy.skyblocker.chat.filters; +package me.xmrvizzy.skyblocker.skyblock.filters; -import me.xmrvizzy.skyblocker.chat.ChatFilterResult; -import me.xmrvizzy.skyblocker.chat.ChatPatternListener; import me.xmrvizzy.skyblocker.config.SkyblockerConfig; +import me.xmrvizzy.skyblocker.utils.chat.ChatFilterResult; +import me.xmrvizzy.skyblocker.utils.chat.ChatPatternListener; import net.minecraft.client.MinecraftClient; import net.minecraft.text.Text; diff --git a/src/main/java/me/xmrvizzy/skyblocker/chat/filters/ComboFilter.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/filters/ComboFilter.java index 714ee9c9..4a714e6d 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/chat/filters/ComboFilter.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/filters/ComboFilter.java @@ -1,7 +1,7 @@ -package me.xmrvizzy.skyblocker.chat.filters; +package me.xmrvizzy.skyblocker.skyblock.filters; -import me.xmrvizzy.skyblocker.chat.ChatFilterResult; import me.xmrvizzy.skyblocker.config.SkyblockerConfig; +import me.xmrvizzy.skyblocker.utils.chat.ChatFilterResult; public class ComboFilter extends SimpleChatFilter { public ComboFilter() { diff --git a/src/main/java/me/xmrvizzy/skyblocker/chat/filters/HealFilter.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/filters/HealFilter.java index 62b41749..652d47c7 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/chat/filters/HealFilter.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/filters/HealFilter.java @@ -1,7 +1,7 @@ -package me.xmrvizzy.skyblocker.chat.filters; +package me.xmrvizzy.skyblocker.skyblock.filters; -import me.xmrvizzy.skyblocker.chat.ChatFilterResult; import me.xmrvizzy.skyblocker.config.SkyblockerConfig; +import me.xmrvizzy.skyblocker.utils.chat.ChatFilterResult; public class HealFilter extends SimpleChatFilter { public HealFilter() { diff --git a/src/main/java/me/xmrvizzy/skyblocker/chat/filters/ImplosionFilter.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/filters/ImplosionFilter.java index 9cc684ed..d7748313 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/chat/filters/ImplosionFilter.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/filters/ImplosionFilter.java @@ -1,7 +1,7 @@ -package me.xmrvizzy.skyblocker.chat.filters; +package me.xmrvizzy.skyblocker.skyblock.filters; -import me.xmrvizzy.skyblocker.chat.ChatFilterResult; import me.xmrvizzy.skyblocker.config.SkyblockerConfig; +import me.xmrvizzy.skyblocker.utils.chat.ChatFilterResult; public class ImplosionFilter extends SimpleChatFilter { public ImplosionFilter() { diff --git a/src/main/java/me/xmrvizzy/skyblocker/chat/filters/MoltenWaveFilter.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/filters/MoltenWaveFilter.java index da082c2d..9f6138f0 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/chat/filters/MoltenWaveFilter.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/filters/MoltenWaveFilter.java @@ -1,7 +1,7 @@ -package me.xmrvizzy.skyblocker.chat.filters; +package me.xmrvizzy.skyblocker.skyblock.filters; -import me.xmrvizzy.skyblocker.chat.ChatFilterResult; import me.xmrvizzy.skyblocker.config.SkyblockerConfig; +import me.xmrvizzy.skyblocker.utils.chat.ChatFilterResult; public class MoltenWaveFilter extends SimpleChatFilter { public MoltenWaveFilter() { diff --git a/src/main/java/me/xmrvizzy/skyblocker/chat/filters/ShowOffFilter.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/filters/ShowOffFilter.java index 3b5ea41a..6692e612 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/chat/filters/ShowOffFilter.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/filters/ShowOffFilter.java @@ -1,6 +1,6 @@ -package me.xmrvizzy.skyblocker.chat.filters; +package me.xmrvizzy.skyblocker.skyblock.filters; -import me.xmrvizzy.skyblocker.chat.ChatFilterResult; +import me.xmrvizzy.skyblocker.utils.chat.ChatFilterResult; import me.xmrvizzy.skyblocker.config.SkyblockerConfig; public class ShowOffFilter extends SimpleChatFilter { diff --git a/src/main/java/me/xmrvizzy/skyblocker/chat/filters/SimpleChatFilter.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/filters/SimpleChatFilter.java index e23dbf33..20017443 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/chat/filters/SimpleChatFilter.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/filters/SimpleChatFilter.java @@ -1,6 +1,6 @@ -package me.xmrvizzy.skyblocker.chat.filters; +package me.xmrvizzy.skyblocker.skyblock.filters; -import me.xmrvizzy.skyblocker.chat.ChatPatternListener; +import me.xmrvizzy.skyblocker.utils.chat.ChatPatternListener; import net.minecraft.text.Text; import java.util.regex.Matcher; diff --git a/src/main/java/me/xmrvizzy/skyblocker/chat/filters/TeleportPadFilter.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/filters/TeleportPadFilter.java index f7fab6d5..1961d78a 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/chat/filters/TeleportPadFilter.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/filters/TeleportPadFilter.java @@ -1,7 +1,7 @@ -package me.xmrvizzy.skyblocker.chat.filters; +package me.xmrvizzy.skyblocker.skyblock.filters; -import me.xmrvizzy.skyblocker.chat.ChatFilterResult; import me.xmrvizzy.skyblocker.config.SkyblockerConfig; +import me.xmrvizzy.skyblocker.utils.chat.ChatFilterResult; public class TeleportPadFilter extends SimpleChatFilter { public TeleportPadFilter() { diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/item/WikiLookup.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/item/WikiLookup.java index d05e5cb8..a6412cf7 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/item/WikiLookup.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/item/WikiLookup.java @@ -1,6 +1,5 @@ package me.xmrvizzy.skyblocker.skyblock.item; -import com.google.gson.Gson; import me.xmrvizzy.skyblocker.skyblock.itemlist.ItemRegistry; import me.xmrvizzy.skyblocker.utils.Utils; import net.fabricmc.fabric.api.client.keybinding.v1.KeyBindingHelper; @@ -20,9 +19,8 @@ public class WikiLookup { public static KeyBinding wikiLookup; static final MinecraftClient client = MinecraftClient.getInstance(); static String id; - public static Gson gson = new Gson(); - public static void init(){ + public static void init() { wikiLookup = KeyBindingHelper.registerKeyBinding(new KeyBinding( "key.wikiLookup", InputUtil.Type.KEYSYM, diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/itemlist/ItemRegistry.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/itemlist/ItemRegistry.java index dc63e351..a4b566e8 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/itemlist/ItemRegistry.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/itemlist/ItemRegistry.java @@ -16,6 +16,7 @@ import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.stream.Stream; public class ItemRegistry { protected static final Path ITEM_LIST_DIR = NEURepo.LOCAL_REPO_DIR.resolve("items"); @@ -105,8 +106,12 @@ public class ItemRegistry { return result; } - public static List<SkyblockCraftingRecipe> getRecipes() { - return recipes; + public static Stream<SkyblockCraftingRecipe> getRecipesStream() { + return recipes.stream(); + } + + public static Stream<ItemStack> getRecipeResultsStream() { + return recipes.stream().map(SkyblockCraftingRecipe::getResult); } /** diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/rift/EffigyWaypoints.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/rift/EffigyWaypoints.java index 7376c896..1bd31653 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/rift/EffigyWaypoints.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/rift/EffigyWaypoints.java @@ -1,8 +1,8 @@ package me.xmrvizzy.skyblocker.skyblock.rift; import me.xmrvizzy.skyblocker.config.SkyblockerConfig; -import me.xmrvizzy.skyblocker.utils.RenderHelper; import me.xmrvizzy.skyblocker.utils.Utils; +import me.xmrvizzy.skyblocker.utils.render.RenderHelper; import net.fabricmc.fabric.api.client.rendering.v1.WorldRenderContext; import net.minecraft.client.MinecraftClient; import net.minecraft.client.network.ClientPlayerEntity; diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/rift/HealingMelonIndicator.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/rift/HealingMelonIndicator.java index aa730c31..b547ebb5 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/rift/HealingMelonIndicator.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/rift/HealingMelonIndicator.java @@ -1,10 +1,10 @@ package me.xmrvizzy.skyblocker.skyblock.rift; import me.xmrvizzy.skyblocker.config.SkyblockerConfig; -import me.xmrvizzy.skyblocker.utils.RenderHelper; import me.xmrvizzy.skyblocker.utils.Utils; -import me.xmrvizzy.skyblocker.utils.title.Title; -import me.xmrvizzy.skyblocker.utils.title.TitleContainer; +import me.xmrvizzy.skyblocker.utils.render.RenderHelper; +import me.xmrvizzy.skyblocker.utils.render.title.Title; +import me.xmrvizzy.skyblocker.utils.render.title.TitleContainer; import net.minecraft.client.MinecraftClient; import net.minecraft.client.network.ClientPlayerEntity; import net.minecraft.util.Formatting; diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/rift/ManiaIndicator.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/rift/ManiaIndicator.java index 38f6b018..16ab250a 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/rift/ManiaIndicator.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/rift/ManiaIndicator.java @@ -1,11 +1,11 @@ package me.xmrvizzy.skyblocker.skyblock.rift; import me.xmrvizzy.skyblocker.config.SkyblockerConfig; -import me.xmrvizzy.skyblocker.utils.RenderHelper; import me.xmrvizzy.skyblocker.utils.SlayerUtils; import me.xmrvizzy.skyblocker.utils.Utils; -import me.xmrvizzy.skyblocker.utils.title.Title; -import me.xmrvizzy.skyblocker.utils.title.TitleContainer; +import me.xmrvizzy.skyblocker.utils.render.RenderHelper; +import me.xmrvizzy.skyblocker.utils.render.title.Title; +import me.xmrvizzy.skyblocker.utils.render.title.TitleContainer; import net.minecraft.block.Blocks; import net.minecraft.client.MinecraftClient; import net.minecraft.entity.Entity; diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/rift/MirrorverseWaypoints.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/rift/MirrorverseWaypoints.java index 32551179..d59745d8 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/rift/MirrorverseWaypoints.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/rift/MirrorverseWaypoints.java @@ -5,8 +5,8 @@ import com.google.gson.JsonObject; import com.google.gson.JsonParser; import me.xmrvizzy.skyblocker.SkyblockerMod; import me.xmrvizzy.skyblocker.config.SkyblockerConfig; -import me.xmrvizzy.skyblocker.utils.RenderHelper; import me.xmrvizzy.skyblocker.utils.Utils; +import me.xmrvizzy.skyblocker.utils.render.RenderHelper; import net.fabricmc.fabric.api.client.rendering.v1.WorldRenderContext; import net.minecraft.client.MinecraftClient; import net.minecraft.util.DyeColor; diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/rift/StakeIndicator.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/rift/StakeIndicator.java index 90fc436d..1d969514 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/rift/StakeIndicator.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/rift/StakeIndicator.java @@ -1,17 +1,16 @@ package me.xmrvizzy.skyblocker.skyblock.rift; import me.xmrvizzy.skyblocker.config.SkyblockerConfig; -import me.xmrvizzy.skyblocker.utils.RenderHelper; import me.xmrvizzy.skyblocker.utils.SlayerUtils; import me.xmrvizzy.skyblocker.utils.Utils; -import me.xmrvizzy.skyblocker.utils.title.Title; -import me.xmrvizzy.skyblocker.utils.title.TitleContainer; +import me.xmrvizzy.skyblocker.utils.render.RenderHelper; +import me.xmrvizzy.skyblocker.utils.render.title.Title; +import me.xmrvizzy.skyblocker.utils.render.title.TitleContainer; import net.minecraft.entity.Entity; -import net.minecraft.text.Text; import net.minecraft.util.Formatting; public class StakeIndicator { - private static final Title title = new Title("skyblocker.rift.stakeNow",Formatting.RED); + private static final Title title = new Title("skyblocker.rift.stakeNow", Formatting.RED); protected static void updateStake() { if (!SkyblockerConfig.get().slayer.vampireSlayer.enableSteakStakeIndicator || !Utils.isOnSkyblock() || !Utils.isInTheRift() || !Utils.getLocation().contains("Stillgore Château") || !SlayerUtils.isInSlayer()) { diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/rift/TwinClawsIndicator.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/rift/TwinClawsIndicator.java index f36b97df..e141b6a8 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/rift/TwinClawsIndicator.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/rift/TwinClawsIndicator.java @@ -2,17 +2,16 @@ package me.xmrvizzy.skyblocker.skyblock.rift; import me.xmrvizzy.skyblocker.SkyblockerMod; import me.xmrvizzy.skyblocker.config.SkyblockerConfig; -import me.xmrvizzy.skyblocker.utils.RenderHelper; import me.xmrvizzy.skyblocker.utils.SlayerUtils; import me.xmrvizzy.skyblocker.utils.Utils; -import me.xmrvizzy.skyblocker.utils.title.Title; -import me.xmrvizzy.skyblocker.utils.title.TitleContainer; +import me.xmrvizzy.skyblocker.utils.render.RenderHelper; +import me.xmrvizzy.skyblocker.utils.render.title.Title; +import me.xmrvizzy.skyblocker.utils.render.title.TitleContainer; import net.minecraft.entity.Entity; -import net.minecraft.text.Text; import net.minecraft.util.Formatting; public class TwinClawsIndicator { - private static final Title title = new Title("skyblocker.rift.iceNow",Formatting.AQUA); + private static final Title title = new Title("skyblocker.rift.iceNow", Formatting.AQUA); private static boolean scheduled = false; protected static void updateIce() { diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/shortcut/Shortcuts.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/shortcut/Shortcuts.java index 36ff98c9..89329c6c 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/shortcut/Shortcuts.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/shortcut/Shortcuts.java @@ -7,7 +7,7 @@ import com.mojang.brigadier.CommandDispatcher; import com.mojang.brigadier.arguments.StringArgumentType; import me.xmrvizzy.skyblocker.SkyblockerMod; import me.xmrvizzy.skyblocker.config.SkyblockerConfig; -import me.xmrvizzy.skyblocker.utils.Scheduler; +import me.xmrvizzy.skyblocker.utils.scheduler.Scheduler; import net.fabricmc.fabric.api.client.command.v2.ClientCommandRegistrationCallback; import net.fabricmc.fabric.api.client.command.v2.FabricClientCommandSource; import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientLifecycleEvents; @@ -103,6 +103,7 @@ public class Shortcuts { commands.put("/vp", "/visit portalhub"); } + @SuppressWarnings("unused") private static void registerMoreDefaultShortcuts() { // Combat commands.put("/spider", "/warp spider"); diff --git a/src/main/java/me/xmrvizzy/skyblocker/utils/Boxes.java b/src/main/java/me/xmrvizzy/skyblocker/utils/Boxes.java index 445bcbe5..17874c9c 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/utils/Boxes.java +++ b/src/main/java/me/xmrvizzy/skyblocker/utils/Boxes.java @@ -1,12 +1,10 @@ package me.xmrvizzy.skyblocker.utils; - import net.minecraft.util.math.Box; import net.minecraft.util.math.Direction.Axis; import net.minecraft.util.math.Vec3d; public class Boxes { - /** Returns the vector of the min pos of this box. **/ public static Vec3d getMinVec(Box box) { return new Vec3d(box.minX, box.minY, box.minZ); @@ -17,6 +15,11 @@ public class Boxes { return new Vec3d(box.maxX, box.maxY, box.maxZ); } + /** Returns the vector of the side lengths of this box. **/ + public static Vec3d getLengthVec(Box box) { + return new Vec3d(box.getXLength(), box.getYLength(), box.getZLength()); + } + /** Offsets this box so that minX, minY and minZ are all zero. **/ public static Box moveToZero(Box box) { return box.offset(getMinVec(box).negate()); diff --git a/src/main/java/me/xmrvizzy/skyblocker/utils/ItemUtils.java b/src/main/java/me/xmrvizzy/skyblocker/utils/ItemUtils.java index a4d1ee7b..5c12b777 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/utils/ItemUtils.java +++ b/src/main/java/me/xmrvizzy/skyblocker/utils/ItemUtils.java @@ -1,8 +1,10 @@ package me.xmrvizzy.skyblocker.utils; +import com.mojang.brigadier.exceptions.CommandSyntaxException; import net.minecraft.client.MinecraftClient; import net.minecraft.client.item.TooltipContext; import net.minecraft.item.ItemStack; +import net.minecraft.nbt.StringNbtReader; import net.minecraft.text.Text; import java.util.ArrayList; @@ -11,17 +13,13 @@ import java.util.List; import java.util.regex.Pattern; public class ItemUtils { + private final static Pattern WHITESPACES = Pattern.compile("^\\s*$"); public static List<Text> getTooltip(ItemStack item) { MinecraftClient client = MinecraftClient.getInstance(); - if (client.player != null && item != null) - // return item.getTooltip(client.player, TooltipContext.Default.NORMAL); - return item.getTooltip(client.player, TooltipContext.Default.BASIC); - return Collections.emptyList(); + return client.player == null || item == null ? Collections.emptyList() : item.getTooltip(client.player, TooltipContext.Default.BASIC); } - private final static Pattern WHITESPACES = Pattern.compile("^\\s*$"); - public static List<String> getTooltipStrings(ItemStack item) { List<Text> lines = getTooltip(item); List<String> list = new ArrayList<>(); @@ -34,4 +32,12 @@ public class ItemUtils { return list; } + + public static ItemStack getSkyblockerStack() { + try { + return ItemStack.fromNbt(StringNbtReader.parse("{id:\"minecraft:player_head\",Count:1,tag:{SkullOwner:{Id:[I;-300151517,-631415889,-1193921967,-1821784279],Properties:{textures:[{Value:\"e3RleHR1cmVzOntTS0lOOnt1cmw6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZDdjYzY2ODc0MjNkMDU3MGQ1NTZhYzUzZTA2NzZjYjU2M2JiZGQ5NzE3Y2Q4MjY5YmRlYmVkNmY2ZDRlN2JmOCJ9fX0=\"}]}}}}")); + } catch (CommandSyntaxException e) { + throw new RuntimeException(e); + } + } } diff --git a/src/main/java/me/xmrvizzy/skyblocker/utils/RenderUtils.java b/src/main/java/me/xmrvizzy/skyblocker/utils/RenderUtils.java deleted file mode 100644 index d20cfefe..00000000 --- a/src/main/java/me/xmrvizzy/skyblocker/utils/RenderUtils.java +++ /dev/null @@ -1,99 +0,0 @@ -package me.xmrvizzy.skyblocker.utils; - -import com.mojang.blaze3d.systems.RenderSystem; - -import me.xmrvizzy.skyblocker.utils.color.QuadColor; -import net.minecraft.client.MinecraftClient; -import net.minecraft.client.render.BufferBuilder; -import net.minecraft.client.render.Camera; -import net.minecraft.client.render.GameRenderer; -import net.minecraft.client.render.Tessellator; -import net.minecraft.client.render.VertexFormat; -import net.minecraft.client.render.VertexFormats; -import net.minecraft.client.util.math.MatrixStack; -import net.minecraft.entity.Entity; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.Box; -import net.minecraft.util.math.Direction; -import net.minecraft.util.math.MathHelper; -import net.minecraft.util.math.Vec3d; -// import net.minecraft.util.math.Vec3f; -import net.minecraft.util.math.RotationAxis; - -public class RenderUtils { - - // -------------------- Outline Boxes -------------------- - - public static void drawBoxOutline(BlockPos blockPos, QuadColor color, float lineWidth, Direction... excludeDirs) { - drawBoxOutline(new Box(blockPos), color, lineWidth, excludeDirs); - } - - public static void drawBoxOutline(Box box, QuadColor color, float lineWidth, Direction... excludeDirs) { - if (!FrustumUtils.isBoxVisible(box)) { - return; - } - - setup(); - - MatrixStack matrices = matrixFrom(box.minX, box.minY, box.minZ); - - Tessellator tessellator = Tessellator.getInstance(); - BufferBuilder buffer = tessellator.getBuffer(); - - // Outline - RenderSystem.enableDepthTest(); - RenderSystem.disableCull(); - RenderSystem.setShader(GameRenderer::getRenderTypeLinesProgram); - RenderSystem.lineWidth(lineWidth); - - buffer.begin(VertexFormat.DrawMode.LINES, VertexFormats.LINES); - Vertexer.vertexBoxLines(matrices, buffer, Boxes.moveToZero(box), color, excludeDirs); - tessellator.draw(); - - RenderSystem.enableCull(); - RenderSystem.disableDepthTest(); - - cleanup(); - } - - // -------------------- Utils -------------------- - - public static MatrixStack matrixFrom(double x, double y, double z) { - MatrixStack matrices = new MatrixStack(); - - Camera camera = MinecraftClient.getInstance().gameRenderer.getCamera(); - // matrices.multiply(Vec3f.POSITIVE_X.getDegreesQuaternion(camera.getPitch())); - matrices.multiply(RotationAxis.POSITIVE_X.rotationDegrees(camera.getPitch())); - // matrices.multiply(Vec3f.POSITIVE_Y.getDegreesQuaternion(camera.getYaw() + 180.0F)); - matrices.multiply(RotationAxis.POSITIVE_Y.rotationDegrees(camera.getYaw() + 180.0F)); - - matrices.translate(x - camera.getPos().x, y - camera.getPos().y, z - camera.getPos().z); - - return matrices; - } - - public static Vec3d getInterpolationOffset(Entity e) { - if (MinecraftClient.getInstance().isPaused()) { - return Vec3d.ZERO; - } - - double tickDelta = MinecraftClient.getInstance().getTickDelta(); - return new Vec3d( - e.getX() - MathHelper.lerp(tickDelta, e.lastRenderX, e.getX()), - e.getY() - MathHelper.lerp(tickDelta, e.lastRenderY, e.getY()), - e.getZ() - MathHelper.lerp(tickDelta, e.lastRenderZ, e.getZ())); - } - - public static boolean pointExistsInArea(int x, int y, int x1, int y1, int x2, int y2) { - return x >= x1 && x <= x2 && y >= y1 && y <= y2; - } - - public static void setup() { - RenderSystem.enableBlend(); - RenderSystem.defaultBlendFunc(); - } - - public static void cleanup() { - RenderSystem.disableBlend(); - } -}
\ No newline at end of file diff --git a/src/main/java/me/xmrvizzy/skyblocker/utils/RenderUtilsLiving.java b/src/main/java/me/xmrvizzy/skyblocker/utils/RenderUtilsLiving.java deleted file mode 100644 index 79ec18e9..00000000 --- a/src/main/java/me/xmrvizzy/skyblocker/utils/RenderUtilsLiving.java +++ /dev/null @@ -1,151 +0,0 @@ -package me.xmrvizzy.skyblocker.utils; - -/* - * This file is part of the MacHack distribution (https://github.com/BleachDrinker420/bleachhack-1.14/). - * Copyright (c) 2019 Bleach. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - */ - - -import com.mojang.blaze3d.systems.RenderSystem; -import net.minecraft.client.MinecraftClient; -import net.minecraft.client.font.TextRenderer; -import net.minecraft.client.render.*; -import net.minecraft.client.render.model.json.ModelTransformationMode; -import net.minecraft.client.util.math.MatrixStack; -import net.minecraft.item.ItemStack; -import net.minecraft.text.Text; -import net.minecraft.util.math.RotationAxis; -import org.apache.commons.lang3.reflect.FieldUtils; -import org.joml.Vector3f; - -import java.lang.reflect.Field; - -public class RenderUtilsLiving { - - private static final MinecraftClient mc = MinecraftClient.getInstance(); - private static Field shaderLightField; - - /** Draws text in the world. **/ - public static void drawText(Text text, double x, double y, double z, double scale, boolean shadow) { - drawText(text, x, y, z, 0, 0, scale, shadow); - } - - /** Draws text in the world. **/ - public static void drawText(Text text, double x, double y, double z, double offX, double offY, double scale, boolean fill) { - MatrixStack matrices = matrixFrom(x, y, z); - - Camera camera = mc.gameRenderer.getCamera(); - // matrices.multiply(Vec3f.POSITIVE_Y.getDegreesQuaternion(-camera.getYaw())); - matrices.multiply(RotationAxis.POSITIVE_Y.rotationDegrees(-camera.getYaw())); - // matrices.multiply(Vec3f.POSITIVE_X.getDegreesQuaternion(camera.getPitch())); - matrices.multiply(RotationAxis.POSITIVE_X.rotationDegrees(camera.getPitch())); - - RenderSystem.enableBlend(); - RenderSystem.defaultBlendFunc(); - - matrices.translate(offX, offY, 0); - matrices.scale(-0.025f * (float) scale, -0.025f * (float) scale, 1); - - int halfWidth = mc.textRenderer.getWidth(text) / 2; - - VertexConsumerProvider.Immediate immediate = VertexConsumerProvider.immediate(Tessellator.getInstance().getBuffer()); - - if (fill) { - int opacity = (int) (MinecraftClient.getInstance().options.getTextBackgroundOpacity(0.25F) * 255.0F) << 24; - mc.textRenderer.draw(text, -halfWidth, 0f, 553648127, false, matrices.peek().getPositionMatrix(), immediate, TextRenderer.TextLayerType.NORMAL, opacity, 0xf000f0); - immediate.draw(); - } else { - matrices.push(); - matrices.translate(1, 1, 0); - mc.textRenderer.draw(text.copyContentOnly(), -halfWidth, 0f, 0x202020, false, matrices.peek().getPositionMatrix(), immediate, TextRenderer.TextLayerType.NORMAL, 0, 0xf000f0); - immediate.draw(); - matrices.pop(); - } - - mc.textRenderer.draw(text, -halfWidth, 0f, -1, false, matrices.peek().getPositionMatrix(), immediate, TextRenderer.TextLayerType.NORMAL, 0, 0xf000f0); - immediate.draw(); - - RenderSystem.disableBlend(); - } - - /** Draws a 2D gui items somewhere in the world. **/ - public static void drawGuiItem(double x, double y, double z, double offX, double offY, double scale, ItemStack item) { - if (item.isEmpty()) { - return; - } - - MatrixStack matrices = matrixFrom(x, y, z); - - Camera camera = mc.gameRenderer.getCamera(); - // matrices.multiply(Vec3f.POSITIVE_Y.getDegreesQuaternion(-camera.getYaw())); - matrices.multiply(RotationAxis.POSITIVE_Y.rotationDegrees(-camera.getYaw())); - // matrices.multiply(Vec3f.POSITIVE_X.getDegreesQuaternion(camera.getPitch())); - matrices.multiply(RotationAxis.POSITIVE_X.rotationDegrees(camera.getPitch())); - - matrices.translate(offX, offY, 0); - matrices.scale((float) scale, (float) scale, 0.001f); - - // matrices.multiply(Vec3f.POSITIVE_Y.getDegreesQuaternion(180f)); - matrices.multiply(RotationAxis.POSITIVE_Y.rotationDegrees(180f)); - - //mc.getBufferBuilders().getEntityVertexConsumers().draw(); - - RenderSystem.enableBlend(); - RenderSystem.defaultBlendFunc(); - - // Vec3f[] currentLight = getCurrentLight(); - Vector3f[] currentLight = getCurrentLight(); - DiffuseLighting.disableGuiDepthLighting(); - - mc.getBufferBuilders().getEntityVertexConsumers().draw(); - - mc.getItemRenderer().renderItem(item, ModelTransformationMode.GUI, 0xF000F0, - OverlayTexture.DEFAULT_UV, matrices, mc.getBufferBuilders().getEntityVertexConsumers(), mc.world, 0); - - mc.getBufferBuilders().getEntityVertexConsumers().draw(); - - RenderSystem.setShaderLights(currentLight[0], currentLight[1]); - RenderSystem.disableBlend(); - } - - public static MatrixStack matrixFrom(double x, double y, double z) { - MatrixStack matrices = new MatrixStack(); - - Camera camera = mc.gameRenderer.getCamera(); - // matrices.multiply(Vec3f.POSITIVE_X.getDegreesQuaternion(camera.getPitch())); - matrices.multiply(RotationAxis.POSITIVE_X.rotationDegrees(camera.getPitch())); - // matrices.multiply(Vec3f.POSITIVE_Y.getDegreesQuaternion(camera.getYaw() + 180.0F)); - matrices.multiply(RotationAxis.POSITIVE_Y.rotationDegrees(camera.getYaw() + 180.0F)); - - matrices.translate(x - camera.getPos().x, y - camera.getPos().y, z - camera.getPos().z); - - return matrices; - } - - // public static Vec3f[] getCurrentLight() { - public static Vector3f[] getCurrentLight() { - if (shaderLightField == null) { - shaderLightField = FieldUtils.getField(RenderSystem.class, "shaderLightDirections", true); - } - - try { - // return (Vec3f[]) shaderLightField.get(null); - return (Vector3f[]) shaderLightField.get(null); - } catch (Exception e) { - throw new RuntimeException(e); - } - } -}
\ No newline at end of file diff --git a/src/main/java/me/xmrvizzy/skyblocker/utils/Vertexer.java b/src/main/java/me/xmrvizzy/skyblocker/utils/Vertexer.java deleted file mode 100644 index cf6d90b6..00000000 --- a/src/main/java/me/xmrvizzy/skyblocker/utils/Vertexer.java +++ /dev/null @@ -1,164 +0,0 @@ -package me.xmrvizzy.skyblocker.utils; - -import me.xmrvizzy.skyblocker.utils.color.LineColor; -import me.xmrvizzy.skyblocker.utils.color.QuadColor; -import net.minecraft.client.render.VertexConsumer; -import net.minecraft.client.util.math.MatrixStack; -import net.minecraft.util.math.Box; -import net.minecraft.util.math.Direction; -import net.minecraft.util.math.MathHelper; -// import net.minecraft.util.math.Matrix3f; -// import net.minecraft.util.math.Matrix4f; -// import net.minecraft.util.math.Vec3f; -import org.joml.Matrix3f; -import org.joml.Matrix4f; -import org.joml.Vector3f; -import org.apache.commons.lang3.ArrayUtils; - -public class Vertexer { - - public static final int CULL_BACK = 0; - public static final int CULL_FRONT = 1; - public static final int CULL_NONE = 2; - - public static void vertexBoxQuads(MatrixStack matrices, VertexConsumer vertexConsumer, Box box, QuadColor quadColor, Direction... excludeDirs) { - float x1 = (float) box.minX; - float y1 = (float) box.minY; - float z1 = (float) box.minZ; - float x2 = (float) box.maxX; - float y2 = (float) box.maxY; - float z2 = (float) box.maxZ; - - int cullMode = excludeDirs.length == 0 ? CULL_BACK : CULL_NONE; - - if (!ArrayUtils.contains(excludeDirs, Direction.DOWN)) { - vertexQuad(matrices, vertexConsumer, x1, y1, z1, x2, y1, z1, x2, y1, z2, x1, y1, z2, cullMode, quadColor); - } - - if (!ArrayUtils.contains(excludeDirs, Direction.WEST)) { - vertexQuad(matrices, vertexConsumer, x1, y1, z2, x1, y2, z2, x1, y2, z1, x1, y1, z1, cullMode, quadColor); - } - - if (!ArrayUtils.contains(excludeDirs, Direction.EAST)) { - vertexQuad(matrices, vertexConsumer, x2, y1, z1, x2, y2, z1, x2, y2, z2, x2, y1, z2, cullMode, quadColor); - } - - if (!ArrayUtils.contains(excludeDirs, Direction.NORTH)) { - vertexQuad(matrices, vertexConsumer, x1, y1, z1, x1, y2, z1, x2, y2, z1, x2, y1, z1, cullMode, quadColor); - } - - if (!ArrayUtils.contains(excludeDirs, Direction.SOUTH)) { - vertexQuad(matrices, vertexConsumer, x2, y1, z2, x2, y2, z2, x1, y2, z2, x1, y1, z2, cullMode, quadColor); - } - - if (!ArrayUtils.contains(excludeDirs, Direction.UP)) { - vertexQuad(matrices, vertexConsumer, x1, y2, z2, x2, y2, z2, x2, y2, z1, x1, y2, z1, cullMode, quadColor); - } - } - - public static void vertexQuad(MatrixStack matrices, VertexConsumer vertexConsumer, float x1, float y1, float z1, float x2, float y2, float z2, float x3, float y3, float z3, float x4, float y4, float z4, int cullMode, QuadColor quadColor) { - int[] color = quadColor.getAllColors(); - - if (cullMode != CULL_FRONT) { - vertexConsumer.vertex(matrices.peek().getPositionMatrix(), x1, y1, z1).color(color[0], color[1], color[2], color[3]).next(); - vertexConsumer.vertex(matrices.peek().getPositionMatrix(), x2, y2, z2).color(color[4], color[5], color[6], color[7]).next(); - vertexConsumer.vertex(matrices.peek().getPositionMatrix(), x3, y3, z3).color(color[8], color[9], color[10], color[11]).next(); - vertexConsumer.vertex(matrices.peek().getPositionMatrix(), x4, y4, z4).color(color[12], color[13], color[14], color[15]).next(); - } - - if (cullMode != CULL_BACK) { - vertexConsumer.vertex(matrices.peek().getPositionMatrix(), x4, y4, z4).color(color[0], color[1], color[2], color[3]).next(); - vertexConsumer.vertex(matrices.peek().getPositionMatrix(), x3, y3, z3).color(color[4], color[5], color[6], color[7]).next(); - vertexConsumer.vertex(matrices.peek().getPositionMatrix(), x2, y2, z2).color(color[8], color[9], color[10], color[11]).next(); - vertexConsumer.vertex(matrices.peek().getPositionMatrix(), x1, y1, z1).color(color[12], color[13], color[14], color[15]).next(); - } - } - - public static void vertexBoxLines(MatrixStack matrices, VertexConsumer vertexConsumer, Box box, QuadColor quadColor, Direction... excludeDirs) { - float x1 = (float) box.minX; - float y1 = (float) box.minY; - float z1 = (float) box.minZ; - float x2 = (float) box.maxX; - float y2 = (float) box.maxY; - float z2 = (float) box.maxZ; - - boolean exDown = ArrayUtils.contains(excludeDirs, Direction.DOWN); - boolean exWest = ArrayUtils.contains(excludeDirs, Direction.WEST); - boolean exEast = ArrayUtils.contains(excludeDirs, Direction.EAST); - boolean exNorth = ArrayUtils.contains(excludeDirs, Direction.NORTH); - boolean exSouth = ArrayUtils.contains(excludeDirs, Direction.SOUTH); - boolean exUp = ArrayUtils.contains(excludeDirs, Direction.UP); - - int[] color = quadColor.getAllColors(); - - if (!exDown) { - vertexLine(matrices, vertexConsumer, x1, y1, z1, x2, y1, z1, LineColor.single(color[0], color[1], color[2], color[3])); - vertexLine(matrices, vertexConsumer, x2, y1, z1, x2, y1, z2, LineColor.single(color[4], color[5], color[6], color[7])); - vertexLine(matrices, vertexConsumer, x2, y1, z2, x1, y1, z2, LineColor.single(color[8], color[9], color[10], color[11])); - vertexLine(matrices, vertexConsumer, x1, y1, z2, x1, y1, z1, LineColor.single(color[12], color[13], color[14], color[15])); - } - - if (!exWest) { - if (exDown) vertexLine(matrices, vertexConsumer, x1, y1, z1, x1, y1, z2, LineColor.single(color[0], color[1], color[2], color[3])); - vertexLine(matrices, vertexConsumer, x1, y1, z2, x1, y2, z2, LineColor.single(color[4], color[5], color[6], color[7])); - vertexLine(matrices, vertexConsumer, x1, y1, z1, x1, y2, z1, LineColor.single(color[8], color[9], color[10], color[11])); - if (exUp) vertexLine(matrices, vertexConsumer, x1, y2, z1, x1, y2, z2, LineColor.single(color[12], color[13], color[14], color[15])); - } - - if (!exEast) { - if (exDown) vertexLine(matrices, vertexConsumer, x2, y1, z1, x2, y1, z2, LineColor.single(color[0], color[1], color[2], color[3])); - vertexLine(matrices, vertexConsumer, x2, y1, z2, x2, y2, z2, LineColor.single(color[4], color[5], color[6], color[7])); - vertexLine(matrices, vertexConsumer, x2, y1, z1, x2, y2, z1, LineColor.single(color[8], color[9], color[10], color[11])); - if (exUp) vertexLine(matrices, vertexConsumer, x2, y2, z1, x2, y2, z2, LineColor.single(color[12], color[13], color[14], color[15])); - } - - if (!exNorth) { - if (exDown) vertexLine(matrices, vertexConsumer, x1, y1, z1, x2, y1, z1, LineColor.single(color[0], color[1], color[2], color[3])); - if (exEast) vertexLine(matrices, vertexConsumer, x2, y1, z1, x2, y2, z1, LineColor.single(color[4], color[5], color[6], color[7])); - if (exWest) vertexLine(matrices, vertexConsumer, x1, y1, z1, x1, y2, z1, LineColor.single(color[8], color[9], color[10], color[11])); - if (exUp) vertexLine(matrices, vertexConsumer, x1, y2, z1, x2, y2, z1, LineColor.single(color[12], color[13], color[14], color[15])); - } - - if (!exSouth) { - if (exDown) vertexLine(matrices, vertexConsumer, x1, y1, z2, x2, y1, z2, LineColor.single(color[0], color[1], color[2], color[3])); - if (exEast) vertexLine(matrices, vertexConsumer, x2, y1, z2, x2, y2, z2, LineColor.single(color[4], color[5], color[6], color[7])); - if (exWest) vertexLine(matrices, vertexConsumer, x1, y1, z2, x1, y2, z2, LineColor.single(color[8], color[9], color[10], color[11])); - if (exUp) vertexLine(matrices, vertexConsumer, x1, y2, z2, x2, y2, z2, LineColor.single(color[12], color[13], color[14], color[15])); - } - - if (!exUp) { - vertexLine(matrices, vertexConsumer, x1, y2, z1, x2, y2, z1, LineColor.single(color[0], color[1], color[2], color[3])); - vertexLine(matrices, vertexConsumer, x2, y2, z1, x2, y2, z2, LineColor.single(color[4], color[5], color[6], color[7])); - vertexLine(matrices, vertexConsumer, x2, y2, z2, x1, y2, z2, LineColor.single(color[8], color[9], color[10], color[11])); - vertexLine(matrices, vertexConsumer, x1, y2, z2, x1, y2, z1, LineColor.single(color[12], color[13], color[14], color[15])); - } - } - - public static void vertexLine(MatrixStack matrices, VertexConsumer vertexConsumer, float x1, float y1, float z1, float x2, float y2, float z2, LineColor lineColor) { - Matrix4f model = matrices.peek().getPositionMatrix(); - Matrix3f normal = matrices.peek().getNormalMatrix(); - - // Vec3f normalVec = getNormal(normal, x1, y1, z1, x2, y2, z2); - Vector3f normalVec = getNormal(normal, x1, y1, z1, x2, y2, z2); - - int[] color1 = lineColor.getColor(x1, y1, z1, 0); - int[] color2 = lineColor.getColor(x2, y2, z2, 1); - - // vertexConsumer.vertex(model, x1, y1, z1).color(color1[0], color1[1], color1[2], color1[3]).normal(normal, normalVec.getX(), normalVec.getY(), normalVec.getZ()).next(); - vertexConsumer.vertex(model, x1, y1, z1).color(color1[0], color1[1], color1[2], color1[3]).normal(normal, normalVec.x(), normalVec.y(), normalVec.z()).next(); - // vertexConsumer.vertex(model, x2, y2, z2).color(color2[0], color2[1], color2[2], color2[3]).normal(normal, normalVec.getX(), normalVec.getY(), normalVec.getZ()).next(); - vertexConsumer.vertex(model, x2, y2, z2).color(color2[0], color2[1], color2[2], color2[3]).normal(normal, normalVec.x(), normalVec.y(), normalVec.z()).next(); - } - - // public static Vec3f getNormal(Matrix3f normal, float x1, float y1, float z1, float x2, float y2, float z2) { - public static Vector3f getNormal(Matrix3f normal, float x1, float y1, float z1, float x2, float y2, float z2) { - float xNormal = x2 - x1; - float yNormal = y2 - y1; - float zNormal = z2 - z1; - float normalSqrt = MathHelper.sqrt(xNormal * xNormal + yNormal * yNormal + zNormal * zNormal); - - // return new Vec3f(xNormal / normalSqrt, yNormal / normalSqrt, zNormal / normalSqrt); - return new Vector3f(xNormal / normalSqrt, yNormal / normalSqrt, zNormal / normalSqrt); - } - -}
\ No newline at end of file diff --git a/src/main/java/me/xmrvizzy/skyblocker/chat/ChatFilterResult.java b/src/main/java/me/xmrvizzy/skyblocker/utils/chat/ChatFilterResult.java index 85c3f3e3..cd364eb5 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/chat/ChatFilterResult.java +++ b/src/main/java/me/xmrvizzy/skyblocker/utils/chat/ChatFilterResult.java @@ -1,4 +1,4 @@ -package me.xmrvizzy.skyblocker.chat; +package me.xmrvizzy.skyblocker.utils.chat; import net.minecraft.client.resource.language.I18n; public enum ChatFilterResult { diff --git a/src/main/java/me/xmrvizzy/skyblocker/chat/ChatMessageListener.java b/src/main/java/me/xmrvizzy/skyblocker/utils/chat/ChatMessageListener.java index 5ea3e2a9..7bb75947 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/chat/ChatMessageListener.java +++ b/src/main/java/me/xmrvizzy/skyblocker/utils/chat/ChatMessageListener.java @@ -1,6 +1,5 @@ -package me.xmrvizzy.skyblocker.chat; +package me.xmrvizzy.skyblocker.utils.chat; -import me.xmrvizzy.skyblocker.chat.filters.*; import me.xmrvizzy.skyblocker.skyblock.barn.HungryHiker; import me.xmrvizzy.skyblocker.skyblock.barn.TreasureHunter; import me.xmrvizzy.skyblocker.skyblock.dungeon.Reparty; @@ -8,6 +7,7 @@ import me.xmrvizzy.skyblocker.skyblock.dungeon.ThreeWeirdos; import me.xmrvizzy.skyblocker.skyblock.dungeon.Trivia; import me.xmrvizzy.skyblocker.skyblock.dwarven.Fetchur; import me.xmrvizzy.skyblocker.skyblock.dwarven.Puzzler; +import me.xmrvizzy.skyblocker.skyblock.filters.*; import me.xmrvizzy.skyblocker.utils.Utils; import net.fabricmc.fabric.api.client.message.v1.ClientReceiveMessageEvents; import net.fabricmc.fabric.api.event.Event; diff --git a/src/main/java/me/xmrvizzy/skyblocker/chat/ChatPatternListener.java b/src/main/java/me/xmrvizzy/skyblocker/utils/chat/ChatPatternListener.java index 8a32715e..3b363a85 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/chat/ChatPatternListener.java +++ b/src/main/java/me/xmrvizzy/skyblocker/utils/chat/ChatPatternListener.java @@ -1,4 +1,4 @@ -package me.xmrvizzy.skyblocker.chat; +package me.xmrvizzy.skyblocker.utils.chat; import net.minecraft.text.Text; diff --git a/src/main/java/me/xmrvizzy/skyblocker/utils/color/LineColor.java b/src/main/java/me/xmrvizzy/skyblocker/utils/color/LineColor.java deleted file mode 100644 index 42cf5926..00000000 --- a/src/main/java/me/xmrvizzy/skyblocker/utils/color/LineColor.java +++ /dev/null @@ -1,66 +0,0 @@ -package me.xmrvizzy.skyblocker.utils.color; - -import com.mojang.datafixers.util.Function4; - -public class LineColor extends RenderColor { - - private final Function4<Float, Float, Float, Integer, int[]> getColorFunc; - - public static LineColor single(float red, float green, float blue, float alpha) { - return LineColor.single((int) (red * 255f), (int) (green * 255f), (int) (blue * 255f), (int) (alpha * 255f)); - } - - public static LineColor single(int color) { - return LineColor.single((color & 0xff0000) >> 16, (color & 0xff00) >> 8, color & 0xff, color >> 24 & 0xff); - } - - public static LineColor single(int red, int green, int blue, int alpha) { - return new LineColor((x, y, z, curVertex) -> new int[] { red, green, blue, alpha }); - } - - public static LineColor gradient(float red1, float green1, float blue1, float alpha1, float red2, float green2, float blue2, float alpha2) { - return LineColor.gradient( - (int) (red1 * 255f), (int) (green1 * 255f), (int) (blue1 * 255f), (int) (alpha1 * 255f), - (int) (red2 * 255f), (int) (green2 * 255f), (int) (blue2 * 255f), (int) (alpha2 * 255f)); - } - - public static LineColor gradient(int color1, int color2) { - return LineColor.gradient( - (color1 & 0xff0000) >> 16, (color1 & 0xff00) >> 8, color1 & 0xff, color1 >> 24 & 0xff, - (color2 & 0xff0000) >> 16, (color2 & 0xff00) >> 8, color2 & 0xff, color2 >> 24 & 0xff); - } - - public static LineColor gradient(int red1, int green1, int blue1, int alpha1, int red2, int green2, int blue2, int alpha2) { - return new LineColor((x, y, z, curVertex) -> { - if (curVertex == 0) { - return new int[] { red1, green1, blue1, alpha1 }; - } - - return new int[] { red2, green2, blue2, alpha2 }; - }); - } - - private LineColor(Function4<Float, Float, Float, Integer, int[]> getColorFunc) { - this.getColorFunc = getColorFunc; - } - - public int[] getColor(float x, float y, float z, int curVertex) { - int[] outColor = getColorFunc.apply(x, y, z, curVertex); - - for (int i = 0; i < 4; i++) { - if (overwriteColor[i] != null) { - outColor[i] = overwriteColor[i]; - } - } - - return outColor; - } - - public LineColor clone() { - LineColor newColor = new LineColor(getColorFunc); - cloneOverwriteTo(newColor); - - return newColor; - } - -}
\ No newline at end of file diff --git a/src/main/java/me/xmrvizzy/skyblocker/utils/color/QuadColor.java b/src/main/java/me/xmrvizzy/skyblocker/utils/color/QuadColor.java deleted file mode 100644 index cb1ce66e..00000000 --- a/src/main/java/me/xmrvizzy/skyblocker/utils/color/QuadColor.java +++ /dev/null @@ -1,107 +0,0 @@ -package me.xmrvizzy.skyblocker.utils.color; - - -import java.util.function.Function; - -public class QuadColor extends RenderColor { - - private final Function<Integer, int[]> getColorFunc; - - public static QuadColor single(float red, float green, float blue, float alpha) { - return QuadColor.single((int) (red * 255f), (int) (green * 255f), (int) (blue * 255f), (int) (alpha * 255f)); - } - - public static QuadColor single(int red, int green, int blue, int alpha) { - return new QuadColor(curVertex -> new int[]{red, green, blue, alpha}); - } - - public static QuadColor gradient(int red1, int green1, int blue1, int alpha1, int red2, int green2, int blue2, int alpha2, CardinalDirection direction) { - return new QuadColor(curVertex -> { - if (direction.isStartVertex(curVertex)) { - return new int[]{red1, green1, blue1, alpha1}; - } - - return new int[]{red2, green2, blue2, alpha2}; - }); - } - - public static QuadColor custom(float red1, float green1, float blue1, float alpha1, float red2, float green2, float blue2, float alpha2, float red3, float green3, float blue3, float alpha3, float red4, float green4, float blue4, float alpha4) { - return QuadColor.custom( - (int) (red1 * 255f), (int) (green1 * 255f), (int) (blue1 * 255f), (int) (alpha1 * 255f), - (int) (red2 * 255f), (int) (green2 * 255f), (int) (blue2 * 255f), (int) (alpha2 * 255f), - (int) (red3 * 255f), (int) (green3 * 255f), (int) (blue3 * 255f), (int) (alpha3 * 255f), - (int) (red4 * 255f), (int) (green4 * 255f), (int) (blue4 * 255f), (int) (alpha4 * 255f)); - } - - public static QuadColor custom(int color1, int color2, int color3, int color4) { - return QuadColor.custom( - (color1 & 0xff0000) >> 16, (color1 & 0xff00) >> 8, color1 & 0xff, color1 >> 24 & 0xff, - (color2 & 0xff0000) >> 16, (color2 & 0xff00) >> 8, color2 & 0xff, color2 >> 24 & 0xff, - (color3 & 0xff0000) >> 16, (color3 & 0xff00) >> 8, color3 & 0xff, color3 >> 24 & 0xff, - (color4 & 0xff0000) >> 16, (color4 & 0xff00) >> 8, color4 & 0xff, color4 >> 24 & 0xff); - } - - public static QuadColor custom(int red1, int green1, int blue1, int alpha1, int red2, int green2, int blue2, int alpha2, int red3, int green3, int blue3, int alpha3, int red4, int green4, int blue4, int alpha4) { - return new QuadColor(curVertex -> switch (curVertex) { - case 0 -> new int[]{red1, green1, blue1, alpha1}; - case 1 -> new int[]{red2, green2, blue2, alpha2}; - case 2 -> new int[]{red3, green3, blue3, alpha3}; - default -> new int[]{red4, green4, blue4, alpha4}; - }); - } - - private QuadColor(Function<Integer, int[]> getColorFunc) { - this.getColorFunc = getColorFunc; - } - - public int[] getColor(int curVertex) { - int[] outColor = getColorFunc.apply(curVertex); - - for (int i = 0; i < 4; i++) { - if (overwriteColor[i] != null) { - outColor[i] = overwriteColor[i]; - } - } - - return outColor; - } - - public int[] getAllColors() { - int[] outColor = new int[16]; - - for (int i = 0; i < 4; i++) { - int[] curColor = getColor(i); - - System.arraycopy(curColor, 0, outColor, i * 4, 4); - } - - return outColor; - } - - public QuadColor clone() { - QuadColor newColor = new QuadColor(getColorFunc); - cloneOverwriteTo(newColor); - - return newColor; - } - - public enum CardinalDirection { - NORTH(3, 0), - EAST(0, 1), - SOUTH(1, 2), - WEST(2, 3); - - public final int vertex1; - public final int vertex2; - - CardinalDirection(int vertex1, int vertex2) { - this.vertex1 = vertex1; - this.vertex2 = vertex2; - } - - public boolean isStartVertex(int vertex) { - return vertex == vertex1 || vertex == vertex2; - } - } - -}
\ No newline at end of file diff --git a/src/main/java/me/xmrvizzy/skyblocker/utils/color/RenderColor.java b/src/main/java/me/xmrvizzy/skyblocker/utils/color/RenderColor.java deleted file mode 100644 index 89dc37ca..00000000 --- a/src/main/java/me/xmrvizzy/skyblocker/utils/color/RenderColor.java +++ /dev/null @@ -1,27 +0,0 @@ -package me.xmrvizzy.skyblocker.utils.color; - -public abstract class RenderColor implements Cloneable { - - protected Integer[] overwriteColor = new Integer[4]; - - public void overwriteRed(Integer red) { - overwriteColor[0] = red; - } - - public void overwriteGreen(Integer green) { - overwriteColor[1] = green; - } - - public void overwriteBlue(Integer blue) { - overwriteColor[2] = blue; - } - - public void overwriteAlpha(Integer alpha) { - overwriteColor[3] = alpha; - } - - protected void cloneOverwriteTo(RenderColor otherColor) { - otherColor.overwriteColor = overwriteColor.clone(); - } - -}
\ No newline at end of file diff --git a/src/main/java/me/xmrvizzy/skyblocker/discord/DiscordRPCManager.java b/src/main/java/me/xmrvizzy/skyblocker/utils/discord/DiscordRPCManager.java index 325f271a..58408944 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/discord/DiscordRPCManager.java +++ b/src/main/java/me/xmrvizzy/skyblocker/utils/discord/DiscordRPCManager.java @@ -1,4 +1,4 @@ -package me.xmrvizzy.skyblocker.discord; +package me.xmrvizzy.skyblocker.utils.discord; import me.shedaniel.autoconfig.AutoConfig; diff --git a/src/main/java/me/xmrvizzy/skyblocker/utils/FrustumUtils.java b/src/main/java/me/xmrvizzy/skyblocker/utils/render/FrustumUtils.java index fd8ffdbd..d4dd8b18 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/utils/FrustumUtils.java +++ b/src/main/java/me/xmrvizzy/skyblocker/utils/render/FrustumUtils.java @@ -1,4 +1,4 @@ -package me.xmrvizzy.skyblocker.utils; +package me.xmrvizzy.skyblocker.utils.render; import me.xmrvizzy.skyblocker.mixin.accessor.WorldRendererAccessor; import me.xmrvizzy.skyblocker.mixin.accessor.FrustumInvoker; @@ -7,12 +7,11 @@ import net.minecraft.client.render.Frustum; import net.minecraft.util.math.Box; public class FrustumUtils { - public static Frustum getFrustum() { return ((WorldRendererAccessor) MinecraftClient.getInstance().worldRenderer).getFrustum(); } - public static boolean isBoxVisible(Box box) { + public static boolean isVisible(Box box) { return getFrustum().isVisible(box); } diff --git a/src/main/java/me/xmrvizzy/skyblocker/utils/RenderHelper.java b/src/main/java/me/xmrvizzy/skyblocker/utils/render/RenderHelper.java index a38f1ab8..aaf92d68 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/utils/RenderHelper.java +++ b/src/main/java/me/xmrvizzy/skyblocker/utils/render/RenderHelper.java @@ -1,24 +1,24 @@ -package me.xmrvizzy.skyblocker.utils; +package me.xmrvizzy.skyblocker.utils.render; import com.mojang.blaze3d.platform.GlStateManager.DstFactor; import com.mojang.blaze3d.platform.GlStateManager.SrcFactor; import com.mojang.blaze3d.systems.RenderSystem; import me.x150.renderer.render.Renderer3d; import me.xmrvizzy.skyblocker.mixin.accessor.BeaconBlockEntityRendererInvoker; -import me.xmrvizzy.skyblocker.utils.culling.OcclusionCulling; -import me.xmrvizzy.skyblocker.utils.title.Title; -import me.xmrvizzy.skyblocker.utils.title.TitleContainer; +import me.xmrvizzy.skyblocker.utils.render.culling.OcclusionCulling; +import me.xmrvizzy.skyblocker.utils.render.title.Title; +import me.xmrvizzy.skyblocker.utils.render.title.TitleContainer; import net.fabricmc.fabric.api.client.rendering.v1.WorldRenderContext; import net.minecraft.client.MinecraftClient; import net.minecraft.client.font.TextRenderer; import net.minecraft.client.render.*; import net.minecraft.client.render.VertexFormat.DrawMode; import net.minecraft.client.util.math.MatrixStack; -import net.minecraft.sound.SoundEvent; +import net.minecraft.sound.SoundEvents; import net.minecraft.text.OrderedText; import net.minecraft.text.Text; -import net.minecraft.util.Identifier; import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.Box; import net.minecraft.util.math.Vec3d; import org.joml.Matrix3f; import org.joml.Matrix4f; @@ -74,16 +74,35 @@ public class RenderHelper { } } - public static void renderText(WorldRenderContext context, Text text, Vec3d pos, boolean seeThrough) { - renderText(context, text, pos, 1, seeThrough); - } + /** + * Renders the outline of a box with the specified color components and line width. + * This does not use renderer since renderer draws outline using debug lines with a fixed width. + */ + public static void renderOutline(WorldRenderContext context, Box box, float[] colorComponents, float lineWidth) { + if (FrustumUtils.isVisible(box)) { + MatrixStack matrices = context.matrixStack(); + Vec3d camera = context.camera().getPos(); + Tessellator tessellator = RenderSystem.renderThreadTesselator(); + BufferBuilder buffer = tessellator.getBuffer(); - public static void renderText(WorldRenderContext context, Text text, Vec3d pos, float scale, boolean seeThrough) { - renderText(context, text, pos, scale, 0, seeThrough); - } + RenderSystem.setShader(GameRenderer::getRenderTypeLinesProgram); + RenderSystem.setShaderColor(1f, 1f, 1f, 1f); + RenderSystem.lineWidth(lineWidth); + RenderSystem.disableCull(); + RenderSystem.enableDepthTest(); - public static void renderText(WorldRenderContext context, Text text, Vec3d pos, float scale, float yOffset, boolean seeThrough) { - renderText(context, text.asOrderedText(), pos, scale, yOffset, seeThrough); + matrices.push(); + matrices.translate(-camera.getX(), -camera.getY(), -camera.getZ()); + + buffer.begin(DrawMode.LINES, VertexFormats.LINES); + WorldRenderer.drawBox(matrices, buffer, box, colorComponents[0] * 255f, colorComponents[1] * 255f, colorComponents[2] * 255f, 1f); + tessellator.draw(); + + matrices.pop(); + RenderSystem.lineWidth(1f); + RenderSystem.enableCull(); + RenderSystem.disableDepthTest(); + } } /** @@ -127,7 +146,11 @@ public class RenderHelper { Vec3d nextPoint = (i + 1 == points.length) ? points[i - 1] : points[i + 1]; Vector3f normalVec = new Vector3f((float) nextPoint.getX(), (float) nextPoint.getY(), (float) nextPoint.getZ()).sub((float) point.getX(), (float) point.getY(), (float) point.getZ()).normalize(); - buffer.vertex(projectionMatrix, (float) point.getX(), (float) point.getY(), (float) point.getZ()).color(colorComponents[0], colorComponents[1], colorComponents[2], alpha).normal(normalMatrix, normalVec.x, normalVec.y, normalVec.z).next(); + buffer + .vertex(projectionMatrix, (float) point.getX(), (float) point.getY(), (float) point.getZ()) + .color(colorComponents[0], colorComponents[1], colorComponents[2], alpha) + .normal(normalMatrix, normalVec.x, normalVec.y, normalVec.z) + .next(); } tessellator.draw(); @@ -141,6 +164,18 @@ public class RenderHelper { RenderSystem.disableDepthTest(); } + public static void renderText(WorldRenderContext context, Text text, Vec3d pos, boolean seeThrough) { + renderText(context, text, pos, 1, seeThrough); + } + + public static void renderText(WorldRenderContext context, Text text, Vec3d pos, float scale, boolean seeThrough) { + renderText(context, text, pos, scale, 0, seeThrough); + } + + public static void renderText(WorldRenderContext context, Text text, Vec3d pos, float scale, float yOffset, boolean seeThrough) { + renderText(context, text.asOrderedText(), pos, scale, yOffset, seeThrough); + } + /** * Renders text in the world space. * @@ -202,7 +237,11 @@ public class RenderHelper { private static void playNotificationSound() { if (MinecraftClient.getInstance().player != null) { - MinecraftClient.getInstance().player.playSound(SoundEvent.of(new Identifier("entity.experience_orb.pickup")), 100f, 0.1f); + MinecraftClient.getInstance().player.playSound(SoundEvents.ENTITY_EXPERIENCE_ORB_PICKUP, 100f, 0.1f); } } + + public static boolean pointIsInArea(double x, double y, double x1, double y1, double x2, double y2) { + return x >= x1 && x <= x2 && y >= y1 && y <= y2; + } } diff --git a/src/main/java/me/xmrvizzy/skyblocker/utils/culling/OcclusionCulling.java b/src/main/java/me/xmrvizzy/skyblocker/utils/render/culling/OcclusionCulling.java index e9a25fc3..5c7f69ad 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/utils/culling/OcclusionCulling.java +++ b/src/main/java/me/xmrvizzy/skyblocker/utils/render/culling/OcclusionCulling.java @@ -1,10 +1,9 @@ -package me.xmrvizzy.skyblocker.utils.culling; +package me.xmrvizzy.skyblocker.utils.render.culling; import com.logisticscraft.occlusionculling.OcclusionCullingInstance; import com.logisticscraft.occlusionculling.cache.ArrayOcclusionCache; import com.logisticscraft.occlusionculling.util.Vec3d; - -import me.xmrvizzy.skyblocker.utils.FrustumUtils; +import me.xmrvizzy.skyblocker.utils.render.FrustumUtils; import net.minecraft.client.MinecraftClient; public class OcclusionCulling { @@ -13,9 +12,9 @@ public class OcclusionCulling { private static OcclusionCullingInstance instance = null; // Reused objects to reduce allocation overhead - private static Vec3d cameraPos = new Vec3d(0, 0, 0); - private static Vec3d min = new Vec3d(0, 0, 0); - private static Vec3d max = new Vec3d(0, 0, 0); + private static final Vec3d cameraPos = new Vec3d(0, 0, 0); + private static final Vec3d min = new Vec3d(0, 0, 0); + private static final Vec3d max = new Vec3d(0, 0, 0); /** * Initializes the occlusion culling instance diff --git a/src/main/java/me/xmrvizzy/skyblocker/utils/culling/WorldProvider.java b/src/main/java/me/xmrvizzy/skyblocker/utils/render/culling/WorldProvider.java index 47d92c1f..09a7bc79 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/utils/culling/WorldProvider.java +++ b/src/main/java/me/xmrvizzy/skyblocker/utils/render/culling/WorldProvider.java @@ -1,7 +1,6 @@ -package me.xmrvizzy.skyblocker.utils.culling; +package me.xmrvizzy.skyblocker.utils.render.culling; import com.logisticscraft.occlusionculling.DataProvider; - import net.minecraft.client.MinecraftClient; import net.minecraft.client.world.ClientWorld; import net.minecraft.util.math.BlockPos; diff --git a/src/main/java/me/xmrvizzy/skyblocker/utils/culling/package-info.java b/src/main/java/me/xmrvizzy/skyblocker/utils/render/culling/package-info.java index c25e7f7a..97ebac86 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/utils/culling/package-info.java +++ b/src/main/java/me/xmrvizzy/skyblocker/utils/render/culling/package-info.java @@ -1,4 +1,4 @@ /** * Package dedicated to occlusion culling utilities */ -package me.xmrvizzy.skyblocker.utils.culling;
\ No newline at end of file +package me.xmrvizzy.skyblocker.utils.render.culling;
\ No newline at end of file diff --git a/src/main/java/me/xmrvizzy/skyblocker/gui/ColorHighlight.java b/src/main/java/me/xmrvizzy/skyblocker/utils/render/gui/ColorHighlight.java index 4367e6e7..41cd0778 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/gui/ColorHighlight.java +++ b/src/main/java/me/xmrvizzy/skyblocker/utils/render/gui/ColorHighlight.java @@ -1,4 +1,4 @@ -package me.xmrvizzy.skyblocker.gui; +package me.xmrvizzy.skyblocker.utils.render.gui; public record ColorHighlight(int slot, int color) { private static final int RED_HIGHLIGHT = 64 << 24 | 255 << 16; diff --git a/src/main/java/me/xmrvizzy/skyblocker/gui/ContainerSolver.java b/src/main/java/me/xmrvizzy/skyblocker/utils/render/gui/ContainerSolver.java index c5e3cf09..83c0f717 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/gui/ContainerSolver.java +++ b/src/main/java/me/xmrvizzy/skyblocker/utils/render/gui/ContainerSolver.java @@ -1,4 +1,4 @@ -package me.xmrvizzy.skyblocker.gui; +package me.xmrvizzy.skyblocker.utils.render.gui; import net.minecraft.client.gui.screen.ingame.GenericContainerScreen; import net.minecraft.item.ItemStack; diff --git a/src/main/java/me/xmrvizzy/skyblocker/gui/ContainerSolverManager.java b/src/main/java/me/xmrvizzy/skyblocker/utils/render/gui/ContainerSolverManager.java index 7d187caa..f78222d0 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/gui/ContainerSolverManager.java +++ b/src/main/java/me/xmrvizzy/skyblocker/utils/render/gui/ContainerSolverManager.java @@ -1,4 +1,4 @@ -package me.xmrvizzy.skyblocker.gui; +package me.xmrvizzy.skyblocker.utils.render.gui; import com.mojang.blaze3d.systems.RenderSystem; import me.xmrvizzy.skyblocker.mixin.accessor.HandledScreenAccessor; @@ -54,7 +54,7 @@ public class ContainerSolverManager { ScreenEvents.BEFORE_INIT.register((client, screen, scaledWidth, scaledHeight) -> { if (Utils.isOnSkyblock() && screen instanceof GenericContainerScreen genericContainerScreen) { ScreenEvents.afterRender(screen).register((screen1, context, mouseX, mouseY, delta) -> { - MatrixStack matrices = context.getMatrices(); + MatrixStack matrices = context.getMatrices(); matrices.push(); matrices.translate(((HandledScreenAccessor) genericContainerScreen).getX(), ((HandledScreenAccessor) genericContainerScreen).getY(), 300); onDraw(context, genericContainerScreen.getScreenHandler().slots.subList(0, genericContainerScreen.getScreenHandler().getRows() * 9)); @@ -117,8 +117,9 @@ public class ContainerSolverManager { private Map<Integer, ItemStack> slotMap(List<Slot> slots) { Map<Integer, ItemStack> slotMap = new TreeMap<>(); - for (int i = 0; i < slots.size(); i++) + for (int i = 0; i < slots.size(); i++) { slotMap.put(i, slots.get(i).getStack()); + } return slotMap; } } diff --git a/src/main/java/me/xmrvizzy/skyblocker/utils/title/Title.java b/src/main/java/me/xmrvizzy/skyblocker/utils/render/title/Title.java index 0a3bc845..b48771ee 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/utils/title/Title.java +++ b/src/main/java/me/xmrvizzy/skyblocker/utils/render/title/Title.java @@ -1,4 +1,4 @@ -package me.xmrvizzy.skyblocker.utils.title; +package me.xmrvizzy.skyblocker.utils.render.title; import net.minecraft.text.MutableText; import net.minecraft.text.Text; diff --git a/src/main/java/me/xmrvizzy/skyblocker/utils/title/TitleContainer.java b/src/main/java/me/xmrvizzy/skyblocker/utils/render/title/TitleContainer.java index a485d37b..6e15c871 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/utils/title/TitleContainer.java +++ b/src/main/java/me/xmrvizzy/skyblocker/utils/render/title/TitleContainer.java @@ -1,8 +1,8 @@ -package me.xmrvizzy.skyblocker.utils.title; +package me.xmrvizzy.skyblocker.utils.render.title; import me.xmrvizzy.skyblocker.SkyblockerMod; import me.xmrvizzy.skyblocker.config.SkyblockerConfig; -import me.xmrvizzy.skyblocker.utils.Scheduler; +import me.xmrvizzy.skyblocker.utils.scheduler.Scheduler; import net.fabricmc.fabric.api.client.command.v2.ClientCommandManager; import net.fabricmc.fabric.api.client.command.v2.ClientCommandRegistrationCallback; import net.fabricmc.fabric.api.client.rendering.v1.HudRenderCallback; diff --git a/src/main/java/me/xmrvizzy/skyblocker/utils/title/TitleContainerConfigScreen.java b/src/main/java/me/xmrvizzy/skyblocker/utils/render/title/TitleContainerConfigScreen.java index c0c4d63c..8d31e2ea 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/utils/title/TitleContainerConfigScreen.java +++ b/src/main/java/me/xmrvizzy/skyblocker/utils/render/title/TitleContainerConfigScreen.java @@ -1,8 +1,8 @@ -package me.xmrvizzy.skyblocker.utils.title; +package me.xmrvizzy.skyblocker.utils.render.title; import me.shedaniel.autoconfig.AutoConfig; import me.xmrvizzy.skyblocker.config.SkyblockerConfig; -import me.xmrvizzy.skyblocker.utils.RenderUtils; +import me.xmrvizzy.skyblocker.utils.render.RenderHelper; import net.minecraft.client.gui.DrawContext; import net.minecraft.client.gui.screen.Screen; import net.minecraft.client.util.math.Vector2f; @@ -100,7 +100,7 @@ public class TitleContainerConfigScreen extends Screen { float x2 = boundingBox.getRight().getX(); float y2 = boundingBox.getRight().getY(); - if (RenderUtils.pointExistsInArea((int) mouseX, (int) mouseY, (int) x1, (int) y1, (int) x2, (int) y2) && button == 0) { + if (RenderHelper.pointIsInArea(mouseX, mouseY, x1, y1, x2, y2) && button == 0) { hudX = switch (alignment) { case LEFT -> (int) mouseX - midWidth; case MIDDLE -> (int) mouseX; diff --git a/src/main/java/me/xmrvizzy/skyblocker/utils/MessageScheduler.java b/src/main/java/me/xmrvizzy/skyblocker/utils/scheduler/MessageScheduler.java index ffb16632..bde29c13 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/utils/MessageScheduler.java +++ b/src/main/java/me/xmrvizzy/skyblocker/utils/scheduler/MessageScheduler.java @@ -1,4 +1,4 @@ -package me.xmrvizzy.skyblocker.utils; +package me.xmrvizzy.skyblocker.utils.scheduler; import net.minecraft.client.MinecraftClient; diff --git a/src/main/java/me/xmrvizzy/skyblocker/utils/Scheduler.java b/src/main/java/me/xmrvizzy/skyblocker/utils/scheduler/Scheduler.java index 1ee3e040..76112e0d 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/utils/Scheduler.java +++ b/src/main/java/me/xmrvizzy/skyblocker/utils/scheduler/Scheduler.java @@ -1,4 +1,4 @@ -package me.xmrvizzy.skyblocker.utils; +package me.xmrvizzy.skyblocker.utils.scheduler; import com.mojang.brigadier.Command; import me.xmrvizzy.skyblocker.SkyblockerMod; |