Skip to content

Commit

Permalink
Merge branch 'beta' of https://github.com/hannibal002/SkyHanni into i…
Browse files Browse the repository at this point in the history
…tem-stack-size-farming
  • Loading branch information
RayDeeUx committed Jan 14, 2024
2 parents e7e415a + 9964248 commit 993a234
Show file tree
Hide file tree
Showing 10 changed files with 176 additions and 30 deletions.
23 changes: 23 additions & 0 deletions .github/workflows/ban-imports.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
name: Check banned imports
on:
- pull_request
- push
- workflow_dispatch
permissions: {}
jobs:
check-imports:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
name: Checkout code
- name: Check imports
run: |
while IFS=' ' read search banned; do
echo Banning $banned from $search
grep -nrE -- "import $banned" src/main/java/"$search"|sed -E 's/^(.*):([0-9]+):(.*)/::error file=\1,line=\2::Illegal \3/g'|tee -a temp
done<<<$(cat .github/workflows/illegal-imports.txt|sed -E 's/#.*//;/^$/d')
found=$(wc -l temp|cut -d ' ' -f 1)
echo Found "$found" invalid imports. Check the files tab for more information.
if [[ "$found" -ne 0 ]]; then
exit 1
fi
6 changes: 6 additions & 0 deletions .github/workflows/illegal-imports.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
# Ban some packages from importing some other packages.
# Lines starting with # are ignored
# Every other line needs to be in the format
# <directory without src/main/java prefix> <illegal import>

at/hannibal2/skyhanni/ scala.
Original file line number Diff line number Diff line change
Expand Up @@ -83,11 +83,17 @@ public String toString() {
@ConfigEditorBoolean
public boolean allChroma = false;

@Expose
@ConfigOption(name = "Ignore Chat", desc = "Prevents Everything Chroma from applying to the chat if you unironically use that feature...")
@ConfigEditorBoolean
public boolean ignoreChat = false;

private void resetChromaSettings() {
SkyHanniMod.getFeature().chroma.chromaSize = 30f;
SkyHanniMod.getFeature().chroma.chromaSpeed = 6f;
SkyHanniMod.getFeature().chroma.chromaSaturation = 0.75f;
SkyHanniMod.getFeature().chroma.allChroma = false;
SkyHanniMod.getFeature().chroma.ignoreChat = false;
SkyHanniMod.getFeature().chroma.chromaDirection = Direction.FORWARD_RIGHT;
}
}
97 changes: 76 additions & 21 deletions src/main/java/at/hannibal2/skyhanni/data/PartyAPI.kt
Original file line number Diff line number Diff line change
Expand Up @@ -8,24 +8,68 @@ import at.hannibal2.skyhanni.utils.StringUtils.matchMatcher
import at.hannibal2.skyhanni.utils.StringUtils.removeColor
import at.hannibal2.skyhanni.utils.StringUtils.removeResets
import at.hannibal2.skyhanni.utils.StringUtils.trimWhiteSpaceAndResets
import at.hannibal2.skyhanni.utils.repopatterns.RepoPattern
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent
import kotlin.random.Random

object PartyAPI {
// TODO USE SH-REPO
private val youJoinedPartyPattern = "§eYou have joined (?<name>.*)'s §eparty!".toPattern()
private val othersJoinedPartyPattern = "(?<name>.*) §ejoined the party.".toPattern()
private val othersInThePartyPattern = "§eYou'll be partying with: (?<names>.*)".toPattern()
private val otherLeftPattern = "(?<name>.*) §ehas left the party.".toPattern()
private val otherKickedPattern = "(?<name>.*) §ehas been removed from the party.".toPattern()
private val otherOfflineKickedPattern = "§eKicked (?<name>.*) because they were offline.".toPattern()
private val otherDisconnectedPattern =
"(?<name>.*) §ewas removed from your party because they disconnected.".toPattern()
private val transferPattern = "The party was transferred to .* because (?<name>.*) left".toPattern()
private val disbandedPattern = ".* §ehas disbanded the party!".toPattern()
private val kickedPattern = "§eYou have been kicked from the party by .* §e".toPattern()
private val partyMembersStartPattern = "§6Party Members \\(\\d+\\)".toPattern()
private val partyMemberListPattern = "Party (?:Leader|Moderators|Members): (?<names>.*)".toPattern()
private val patternGroup = RepoPattern.group("data.party")
private val youJoinedPartyPattern by patternGroup.pattern(
"you.joined",
"§eYou have joined (?<name>.*)'s §eparty!"
)
private val othersJoinedPartyPattern by patternGroup.pattern(
"others.joined",
"(?<name>.*) §ejoined the party\\."
)
private val othersInThePartyPattern by patternGroup.pattern(
"others.inparty",
"§eYou'll be partying with: (?<names>.*)"
)
private val otherLeftPattern by patternGroup.pattern(
"others.left",
"(?<name>.*) §ehas left the party\\."
)
private val otherKickedPattern by patternGroup.pattern(
"others.kicked",
"(?<name>.*) §ehas been removed from the party\\."
)
private val otherOfflineKickedPattern by patternGroup.pattern(
"others.offline",
"§eKicked (?<name>.*) because they were offline\\."
)
private val otherDisconnectedPattern by patternGroup.pattern(
"others.disconnect",
"(?<name>.*) §ewas removed from your party because they disconnected\\."
)
private val transferPattern by patternGroup.pattern(
"others.transfer",
"The party was transferred to .* because (?<name>.*) left"
)
private val disbandedPattern by patternGroup.pattern(
"others.disband",
".* §ehas disbanded the party!"
)
private val kickedPattern by patternGroup.pattern(
"you.kicked",
"§eYou have been kicked from the party by .* §e"
)
private val partyMembersStartPattern by patternGroup.pattern(
"members.start",
"§6Party Members \\(\\d+\\)"
)
private val partyMemberListPattern by patternGroup.pattern(
"members.list",
"Party (?:Leader|Moderators|Members): (?<names>.*)"
)
private val kuudraFinderJoinPattern by patternGroup.pattern(
"kuudrafinder.join",
"§dParty Finder §f> (?<name>.*?) §ejoined the group! \\(§[a-fA-F0-9]+Combat Level \\d+§e\\)"
)
private val dungeonFinderJoinPattern by patternGroup.pattern(
"dungeonfinder.join",
"§dParty Finder §f> (?<name>.*?) §ejoined the dungeon group! \\(§[a-fA-F0-9].* Level \\d+§[a-fA-F0-9]\\)"
)

val partyMembers = mutableListOf<String>()

Expand All @@ -51,21 +95,27 @@ object PartyAPI {
val message = event.message.trimWhiteSpaceAndResets().removeResets()

// new member joined

youJoinedPartyPattern.matchMatcher(message) {
val name = group("name").cleanPlayerName()
if (!partyMembers.contains(name)) partyMembers.add(name)
addPlayer(name)
}
othersJoinedPartyPattern.matchMatcher(message) {
val name = group("name").cleanPlayerName()
if (!partyMembers.contains(name)) partyMembers.add(name)
addPlayer(name)
}
othersInThePartyPattern.matchMatcher(message) {
for (name in group("names").split(", ")) {
val playerName = name.cleanPlayerName()
if (!partyMembers.contains(playerName)) partyMembers.add(playerName)
addPlayer(name.cleanPlayerName())
}
}
kuudraFinderJoinPattern.matchMatcher(message) {
val name = group("name").cleanPlayerName()
addPlayer(name)
}
dungeonFinderJoinPattern.matchMatcher(message) {
val name = group("name").cleanPlayerName()
addPlayer(name)
}

// one member got removed
otherLeftPattern.matchMatcher(message) {
Expand Down Expand Up @@ -111,9 +161,14 @@ object PartyAPI {
partyMemberListPattern.matchMatcher(message.removeColor()) {
for (name in group("names").split("")) {
val playerName = name.replace("", "").cleanPlayerName()
if (playerName == LorenzUtils.getPlayerName()) continue
if (!partyMembers.contains(playerName)) partyMembers.add(playerName)
addPlayer(playerName)
}
}
}

private fun addPlayer(playerName: String) {
if (partyMembers.contains(playerName)) return
if (playerName == LorenzUtils.getPlayerName()) return
partyMembers.add(playerName)
}
}
11 changes: 10 additions & 1 deletion src/main/java/at/hannibal2/skyhanni/features/chat/ChatFilter.kt
Original file line number Diff line number Diff line change
Expand Up @@ -18,9 +18,18 @@ class ChatFilter {
// player join
"(?: §b>§c>§a>§r §r)?.* §6(?:joined|(?:spooked|slid) into) the lobby!(?:§r §a<§c<§b<)?".toPattern(),

// Hypixel SMP
"§2[\\s]*?§aYou can now create your own Hypixel SMP server![\\s]*?".toPattern(),

// Snow Particles in the Lobby
"[\\s]*?.*§bFor the best experience, click the text below to enable Snow[\\s]§.*§bParticles in this lobby![\\s]*?.*§3§lClick to enable Snow Particles[\\s]*?".toPattern(),

// mystery box
"§b✦ §r.* §r§7found a §r§e.* §r§bMystery Box§r§7!".toPattern(),
"§b✦ §r.* §r§7found (a|an) §r.* §r§7in a §r§a(Holiday )?Mystery Box§r§7!".toPattern()
"§b✦ §r.* §r§7found (a|an) §r.* §r§7in a §r§a(Holiday )?Mystery Box§r§7!".toPattern(),

// mystery dust
"§b✦ §r§7You earned §r§b\\d+ §r§7Mystery Dust!".toPattern(),
)

private val lobbyMessages = listOf(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@ import at.hannibal2.skyhanni.data.ProfileStorageData
import at.hannibal2.skyhanni.data.WinterAPI
import at.hannibal2.skyhanni.events.EntityCustomNameUpdateEvent
import at.hannibal2.skyhanni.events.LorenzChatEvent
import at.hannibal2.skyhanni.events.LorenzTickEvent
import at.hannibal2.skyhanni.events.LorenzWorldChangeEvent
import at.hannibal2.skyhanni.events.RenderMobColoredEvent
import at.hannibal2.skyhanni.events.withAlpha
import at.hannibal2.skyhanni.features.event.winter.UniqueGiftCounter
Expand All @@ -14,7 +16,9 @@ import at.hannibal2.skyhanni.utils.InventoryUtils
import at.hannibal2.skyhanni.utils.LorenzColor
import at.hannibal2.skyhanni.utils.LorenzUtils
import at.hannibal2.skyhanni.utils.StringUtils.matchMatcher
import at.hannibal2.skyhanni.utils.StringUtils.matches
import at.hannibal2.skyhanni.utils.getLorenzVec
import at.hannibal2.skyhanni.utils.repopatterns.RepoPattern
import net.minecraft.client.entity.EntityPlayerSP
import net.minecraft.entity.EntityLivingBase
import net.minecraft.entity.item.EntityArmorStand
Expand All @@ -26,7 +30,17 @@ object UniqueGiftingOpportunitiesFeatures {
private val playerList: MutableSet<String>?
get() = ProfileStorageData.playerSpecific?.winter?.playersThatHaveBeenGifted

private val pattern = "§6\\+1 Unique Gift given! To ([^§]+)§r§6!".toPattern()
private val patternGroup = RepoPattern.group("event.winter.uniquegifts")
private val giftedPattern by patternGroup.pattern(
"gifted",
"§6\\+1 Unique Gift given! To ([^§]+)§r§6!"
)
private val giftNamePattern by patternGroup.pattern(
"giftname",
"(?:WHITE|RED|GREEN)_GIFT\$"
)

private var holdingGift = false

private fun hasGiftedPlayer(player: EntityPlayer) = playerList?.contains(player.name) == true

Expand All @@ -36,9 +50,7 @@ object UniqueGiftingOpportunitiesFeatures {

private val config get() = SkyHanniMod.feature.event.winter.giftingOpportunities

private fun isEnabled() = LorenzUtils.inSkyBlock && config.enabled && WinterAPI.isDecember() &&
(InventoryUtils.itemInHandId.endsWith("_GIFT")
|| !config.highlighWithGiftOnly)
private fun isEnabled() = holdingGift

private val hasNotGiftedNametag = "§a§lꤥ"
private val hasGiftedNametag = "§c§lꤥ"
Expand Down Expand Up @@ -85,9 +97,25 @@ object UniqueGiftingOpportunitiesFeatures {

@SubscribeEvent
fun onChat(event: LorenzChatEvent) {
pattern.matchMatcher(event.message) {
giftedPattern.matchMatcher(event.message) {
addGiftedPlayer(group(1))
UniqueGiftCounter.addUniqueGift()
}
}

@SubscribeEvent
fun onTick(event: LorenzTickEvent) {
holdingGift = false

if (!LorenzUtils.inSkyBlock) return
if (!config.enabled) return
if (!WinterAPI.isDecember()) return

holdingGift = !config.highlighWithGiftOnly || giftNamePattern.matches(InventoryUtils.itemInHandId.asString())
}

@SubscribeEvent
fun onWorldChange(event: LorenzWorldChangeEvent) {
holdingGift = false
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -341,7 +341,7 @@ class HideNotClickableItems {
if (ItemUtils.isSkyBlockMenuItem(stack)) return false

reverseColor = true
if (stack.getLore().any { it.contains("ACCESSORY") || it.contains("HATCCESSORY") }) return false
if (stack.getLore().any { it.contains("ACCESSORY") || it.contains("HATCESSORY") }) return false

hideReason = "This item is not an accessory!"
return true
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import at.hannibal2.skyhanni.SkyHanniMod
import at.hannibal2.skyhanni.features.chroma.ChromaFontRenderer
import at.hannibal2.skyhanni.mixins.transformers.AccessorFontRenderer
import at.hannibal2.skyhanni.utils.LorenzUtils
import at.hannibal2.skyhanni.utils.shader.ShaderManager
import net.minecraft.client.Minecraft
import net.minecraft.client.renderer.GlStateManager
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo
Expand All @@ -24,6 +25,8 @@ object FontRendererHook {
private var currentDrawState: ChromaFontRenderer? = null
private var previewChroma = false

var cameFromChat = false

/**
* Setups the [ChromaFontRenderer][at.hannibal2.skyhanni.features.chroma.ChromaFontRenderer] for rendering text
* in chroma. This should only be used when you don't have control over the color code a string uses, or it
Expand Down Expand Up @@ -61,6 +64,10 @@ object FontRendererHook {
fun beginChromaRendering(text: String, shadow: Boolean) {
if (!LorenzUtils.inSkyBlock) return
if (!SkyHanniMod.feature.chroma.enabled) return
if (SkyHanniMod.feature.chroma.allChroma && SkyHanniMod.feature.chroma.ignoreChat && cameFromChat) {
endChromaFont()
return
}

if (text == "§fPlease star the mod on GitHub!") {
previewChroma = true
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,12 @@
package at.hannibal2.skyhanni.mixins.transformers.gui;

import at.hannibal2.skyhanni.features.chat.ChatPeek;
import at.hannibal2.skyhanni.mixins.hooks.FontRendererHook;
import net.minecraft.client.gui.GuiNewChat;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;

@Mixin(GuiNewChat.class)
Expand All @@ -14,4 +16,14 @@ public class MixinGuiNewChat {
public void onIsOpen(CallbackInfoReturnable<Boolean> cir) {
if (ChatPeek.peek()) cir.setReturnValue(true);
}

@Inject(method = "drawChat", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/renderer/GlStateManager;enableBlend()V", shift = At.Shift.AFTER))
private void setTextRenderIsFromChat(int updateCounter, CallbackInfo ci) {
FontRendererHook.INSTANCE.setCameFromChat(true);
}

@Inject(method = "drawChat", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/renderer/GlStateManager;disableAlpha()V", shift = At.Shift.BEFORE))
private void setTextRenderIsntFromChat(int updateCounter, CallbackInfo ci) {
FontRendererHook.INSTANCE.setCameFromChat(false);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -104,13 +104,13 @@ object RepoPatternManager {
}
}

val keyShape = Pattern.compile("^(?:[a-z0-9A-Z]+\\.)*[a-z0-9A-Z]+$")
val keyShape = Pattern.compile("^(?:[a-z0-9]+\\.)*[a-z0-9]+$")

/**
* Verify that a key has a valid shape or throw otherwise.
*/
fun verifyKeyShape(key: String) {
require(keyShape.matches(key))
require(keyShape.matches(key)) { "pattern key: \"$key\" failed shape requirements" }
}

/**
Expand Down

0 comments on commit 993a234

Please sign in to comment.