From 972bdfb318d0ba2a2c483bc63eadb4225e5f528b Mon Sep 17 00:00:00 2001 From: Lorenz Date: Thu, 21 Jul 2022 21:04:07 +0200 Subject: commit bunch of stuff needed more testig idk idc --- .../skyhanni/events/RenderBlockInWorldEvent.kt | 9 ++++ .../skyhanni/fishing/TrophyFishMessages.kt | 2 +- .../skyhanni/items/HideNotClickableItems.kt | 54 +++++++++++----------- .../skyhanni/items/ItemDisplayOverlayFeatures.kt | 11 +++++ .../render/BlockRendererDispatcherHook.kt | 25 ++++++++++ .../renderer/MixinBlockRendererDispatcher.java | 20 ++++++++ .../java/at/hannibal2/skyhanni/test/LorenzTest.kt | 40 +++++++++++++++- .../java/at/hannibal2/skyhanni/utils/ItemUtils.kt | 8 +++- src/main/resources/mixins.skyhanni.json | 3 +- 9 files changed, 140 insertions(+), 32 deletions(-) create mode 100644 src/main/java/at/hannibal2/skyhanni/events/RenderBlockInWorldEvent.kt create mode 100644 src/main/java/at/hannibal2/skyhanni/mixinhooks/render/BlockRendererDispatcherHook.kt create mode 100644 src/main/java/at/hannibal2/skyhanni/mixins/transformers/renderer/MixinBlockRendererDispatcher.java (limited to 'src') diff --git a/src/main/java/at/hannibal2/skyhanni/events/RenderBlockInWorldEvent.kt b/src/main/java/at/hannibal2/skyhanni/events/RenderBlockInWorldEvent.kt new file mode 100644 index 000000000..51e4ca411 --- /dev/null +++ b/src/main/java/at/hannibal2/skyhanni/events/RenderBlockInWorldEvent.kt @@ -0,0 +1,9 @@ +//package at.hannibal2.skyhanni.events +// +//import net.minecraft.block.state.IBlockState +//import net.minecraft.util.BlockPos +//import net.minecraft.world.IBlockAccess +//import net.minecraftforge.fml.common.eventhandler.Cancelable +// +//@Cancelable +//data class RenderBlockInWorldEvent(@JvmField var state: IBlockState?, var world: IBlockAccess, var pos: BlockPos?) : LorenzEvent() \ No newline at end of file diff --git a/src/main/java/at/hannibal2/skyhanni/fishing/TrophyFishMessages.kt b/src/main/java/at/hannibal2/skyhanni/fishing/TrophyFishMessages.kt index 1c2160009..4329a951c 100644 --- a/src/main/java/at/hannibal2/skyhanni/fishing/TrophyFishMessages.kt +++ b/src/main/java/at/hannibal2/skyhanni/fishing/TrophyFishMessages.kt @@ -21,8 +21,8 @@ class TrophyFishMessages { val trophyFishes = profileData["trophy_fish"].asJsonObject for ((rawName, value) in trophyFishes.entrySet()) { val rarity = when { - rawName.endsWith("_silver") -> "silver" rawName.endsWith("_bronze") -> "bronze" + rawName.endsWith("_silver") -> "silver" rawName.endsWith("_gold") -> "gold" rawName.endsWith("_diamond") -> "diamond" else -> continue diff --git a/src/main/java/at/hannibal2/skyhanni/items/HideNotClickableItems.kt b/src/main/java/at/hannibal2/skyhanni/items/HideNotClickableItems.kt index fe54c9405..97eefe1ab 100644 --- a/src/main/java/at/hannibal2/skyhanni/items/HideNotClickableItems.kt +++ b/src/main/java/at/hannibal2/skyhanni/items/HideNotClickableItems.kt @@ -7,6 +7,7 @@ import at.hannibal2.skyhanni.events.RepositoryReloadEvent import at.hannibal2.skyhanni.utils.* import at.hannibal2.skyhanni.utils.ItemUtils.cleanName import at.hannibal2.skyhanni.utils.ItemUtils.getLore +import at.hannibal2.skyhanni.utils.ItemUtils.getSBItemID import at.hannibal2.skyhanni.utils.LorenzUtils.removeColorCodes import at.hannibal2.skyhanni.utils.RenderUtils.highlight import com.google.gson.JsonObject @@ -193,18 +194,20 @@ class HideNotClickableItems { "CHESTPLATE", "LEGGINGS", "BOOTS", + "NECKLACE", "CLOAK", "BELT", - "GLOVES" + "GLOVES", + "BRACELET" ) for (type in list) { - if (stack.getLore().any { it.contains("§l") && it.contains(type) }) { + if (stack.getLore().any { it.contains("§l") && it.contains(type) }) {//todo use item api return false } } - if (isSkyBlockMenuItem(stack.cleanName())) { + if (isSkyBlockMenuItem(stack)) { hideReason = "The SkyBlock Menu cannot be put into the potion bag!" return true } @@ -235,8 +238,7 @@ class HideNotClickableItems { private fun hidePotionBag(chestName: String, stack: ItemStack): Boolean { if (!chestName.startsWith("Potion Bag")) return false - val name = stack.cleanName() - if (isSkyBlockMenuItem(name)) { + if (isSkyBlockMenuItem(stack)) { hideReason = "The SkyBlock Menu cannot be put into the potion bag!" return true } @@ -250,8 +252,7 @@ class HideNotClickableItems { private fun hideFishingBag(chestName: String, stack: ItemStack): Boolean { if (!chestName.startsWith("Fishing Bag")) return false - val name = stack.cleanName() - if (isSkyBlockMenuItem(name)) { + if (isSkyBlockMenuItem(stack)) { hideReason = "The SkyBlock Menu cannot be put into the fishing bag!" return true } @@ -268,7 +269,7 @@ class HideNotClickableItems { val name = stack.cleanName() if (ItemUtils.isSack(name)) return false - if (isSkyBlockMenuItem(name)) return false + if (isSkyBlockMenuItem(stack)) return false hideReason = "This item is not a sack!" return true @@ -278,7 +279,7 @@ class HideNotClickableItems { if (!chestName.startsWith("Accessory Bag")) return false if (stack.getLore().any { it.contains("ACCESSORY") }) return false - if (isSkyBlockMenuItem(stack.cleanName())) return false + if (isSkyBlockMenuItem(stack)) return false hideReason = "This item is not an accessory!" return true @@ -292,6 +293,11 @@ class HideNotClickableItems { return true } + if (isSkyBlockMenuItem(stack)) { + hideReason = "The SkyBlock Menu cannot be traded!" + return true + } + val name = stack.cleanName() if (ItemUtils.isSack(name)) { @@ -299,11 +305,6 @@ class HideNotClickableItems { return true } - if (isSkyBlockMenuItem(name)) { - hideReason = "The SkyBlock Menu cannot be traded!" - return true - } - val result = hidePlayerTradeFilter.match(name) LorenzDebug.log("hidePlayerTradeList filter result for '$name': $result") @@ -321,7 +322,7 @@ class HideNotClickableItems { name = name.substring(0, name.length - amountText.length) } - if (isSkyBlockMenuItem(name)) { + if (isSkyBlockMenuItem(stack)) { hideReason = "The SkyBlock Menu cannot be sold at the NPC!" return true } @@ -337,12 +338,13 @@ class HideNotClickableItems { private fun hideInStorage(chestName: String, stack: ItemStack): Boolean { if (!chestName.contains("Ender Chest") && !chestName.contains("Backpack") && chestName != "Storage") return false - val name = stack.cleanName() - - if (isSkyBlockMenuItem(name)) { + if (isSkyBlockMenuItem(stack)) { hideReason = "The SkyBlock Menu cannot be put into the storage!" return true } + + val name = stack.cleanName() + if (ItemUtils.isSack(name)) { hideReason = "Sacks cannot be put into the storage!" return true @@ -368,6 +370,11 @@ class HideNotClickableItems { } } + if (isSkyBlockMenuItem(stack)) { + hideReason = "The SkyBlock Menu cannot be salvaged!" + return true + } + val name = stack.cleanName() for (item in itemsToSalvage) { if (name.endsWith(item)) { @@ -375,11 +382,6 @@ class HideNotClickableItems { } } - if (isSkyBlockMenuItem(name)) { - hideReason = "The SkyBlock Menu cannot be salvaged!" - return true - } - hideReason = "This item cannot be salvaged!" return true } @@ -392,14 +394,14 @@ class HideNotClickableItems { if (!bazaarInventory && !auctionHouseInventory) return false - val displayName = stack.displayName - if (isSkyBlockMenuItem(displayName.removeColorCodes())) { + if (isSkyBlockMenuItem(stack)) { if (bazaarInventory) hideReason = "The SkyBlock Menu is not a Bazaar Product!" if (auctionHouseInventory) hideReason = "The SkyBlock Menu cannot be auctioned!" return true } + val displayName = stack.displayName if (bazaarInventory != BazaarApi.isBazaarItem(displayName)) { if (bazaarInventory) hideReason = "This item is not a Bazaar Product!" if (auctionHouseInventory) hideReason = "Bazaar Products cannot be auctioned!" @@ -430,5 +432,5 @@ class HideNotClickableItems { return result } - private fun isSkyBlockMenuItem(name: String): Boolean = name == "SkyBlock Menu (Click)" + private fun isSkyBlockMenuItem(stack: ItemStack): Boolean = stack.getSBItemID() == "SKYBLOCK_MENU" } diff --git a/src/main/java/at/hannibal2/skyhanni/items/ItemDisplayOverlayFeatures.kt b/src/main/java/at/hannibal2/skyhanni/items/ItemDisplayOverlayFeatures.kt index d810aece5..d5054ae47 100644 --- a/src/main/java/at/hannibal2/skyhanni/items/ItemDisplayOverlayFeatures.kt +++ b/src/main/java/at/hannibal2/skyhanni/items/ItemDisplayOverlayFeatures.kt @@ -89,6 +89,8 @@ class ItemDisplayOverlayFeatures { if (SkyHanniMod.feature.items.displaySackName) { if (ItemUtils.isSack(name)) { + //TODO fix this and replace other +// val sackName = grabSackName(name) val split = name.split(" ") val sackName = split[split.size - 2] return (if (name.contains("Enchanted")) "§5" else "") + sackName.substring(0, 2) @@ -107,4 +109,13 @@ class ItemDisplayOverlayFeatures { return "" } + +// private fun grabSackName(name: String): String { +// val split = name.split(" ") +// val text = split[0] +// for (line in arrayOf("Large", "Medium", "Small", "Enchanted")) { +// if (text == line) return grabSackName(name.substring(text.length + 1)) +// } +// return text +// } } \ No newline at end of file diff --git a/src/main/java/at/hannibal2/skyhanni/mixinhooks/render/BlockRendererDispatcherHook.kt b/src/main/java/at/hannibal2/skyhanni/mixinhooks/render/BlockRendererDispatcherHook.kt new file mode 100644 index 000000000..d04e248ea --- /dev/null +++ b/src/main/java/at/hannibal2/skyhanni/mixinhooks/render/BlockRendererDispatcherHook.kt @@ -0,0 +1,25 @@ +//package at.hannibal2.skyhanni.mixinhooks.render +// +//import at.hannibal2.skyhanni.events.RenderBlockInWorldEvent +//import net.minecraft.block.state.IBlockState +//import net.minecraft.client.renderer.BlockRendererDispatcher +//import net.minecraft.client.resources.model.IBakedModel +//import net.minecraft.util.BlockPos +//import net.minecraft.world.IBlockAccess +//import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable +// +//fun modifyGetModelFromBlockState( +// blockRendererDispatcher: Any, +// state: IBlockState?, +// worldIn: IBlockAccess, +// pos: BlockPos?, +// cir: CallbackInfoReturnable +//) { +// (blockRendererDispatcher as BlockRendererDispatcher).apply { +// val event = RenderBlockInWorldEvent(state, worldIn, pos) +// event.postAndCatch() +// if (event.state !== state) { +// cir.returnValue = blockModelShapes.getModelForState(event.state) +// } +// } +//} \ No newline at end of file diff --git a/src/main/java/at/hannibal2/skyhanni/mixins/transformers/renderer/MixinBlockRendererDispatcher.java b/src/main/java/at/hannibal2/skyhanni/mixins/transformers/renderer/MixinBlockRendererDispatcher.java new file mode 100644 index 000000000..baec19192 --- /dev/null +++ b/src/main/java/at/hannibal2/skyhanni/mixins/transformers/renderer/MixinBlockRendererDispatcher.java @@ -0,0 +1,20 @@ +//package at.hannibal2.skyhanni.mixins.transformers.renderer; +// +//import net.minecraft.block.state.IBlockState; +//import net.minecraft.client.renderer.BlockRendererDispatcher; +//import net.minecraft.client.resources.IResourceManagerReloadListener; +//import net.minecraft.client.resources.model.IBakedModel; +//import net.minecraft.util.BlockPos; +//import net.minecraft.world.IBlockAccess; +//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.CallbackInfoReturnable; +// +//@Mixin(BlockRendererDispatcher.class) +//public abstract class MixinBlockRendererDispatcher implements IResourceManagerReloadListener { +// @Inject(method = "getModelFromBlockState", at = @At("RETURN"), cancellable = true) +// private void modifyGetModelFromBlockState(IBlockState state, IBlockAccess worldIn, BlockPos pos, CallbackInfoReturnable cir) { +//// BlockRendererDispatcherHookKt.modifyGetModelFromBlockState(this, state, worldIn, pos, cir); +// } +//} diff --git a/src/main/java/at/hannibal2/skyhanni/test/LorenzTest.kt b/src/main/java/at/hannibal2/skyhanni/test/LorenzTest.kt index ad6a29443..9b5e9621f 100644 --- a/src/main/java/at/hannibal2/skyhanni/test/LorenzTest.kt +++ b/src/main/java/at/hannibal2/skyhanni/test/LorenzTest.kt @@ -2,8 +2,8 @@ package at.hannibal2.skyhanni.test import at.hannibal2.skyhanni.SkyHanniMod import at.hannibal2.skyhanni.utils.GuiRender.renderString -import at.hannibal2.skyhanni.utils.ItemUtil import at.hannibal2.skyhanni.utils.ItemUtils.getLore +import at.hannibal2.skyhanni.utils.ItemUtils.getSBItemID import at.hannibal2.skyhanni.utils.LorenzDebug import at.hannibal2.skyhanni.utils.LorenzLogger import at.hannibal2.skyhanni.utils.LorenzUtils @@ -28,7 +28,7 @@ class LorenzTest { print("===") print("ITEM LORE") print("display name: '" + itemStack.displayName.toString() + "'") - val itemID = ItemUtil.getSkyBlockItemID(itemStack) + val itemID = itemStack.getSBItemID() print("itemID: '$itemID'") // val rarity: ItemRarityOld = ItemUtils.getRarity(itemStack) // print("rarity: '$rarity'") @@ -101,4 +101,40 @@ class LorenzTest { SkyHanniMod.feature.debug.testPos.renderString(text) } } + +// @SubscribeEvent +// fun onGetBlockModel(event: RenderBlockInWorldEvent) { +// if (!LorenzUtils.inSkyblock || !SkyHanniMod.feature.debug.enabled) return +// val state = event.state +// +// if (event.state != null && event.pos != null) { +//// if ((event.pos as BlockPos).y <= 76) { +// val block = (state as IBlockState).block +// +// +// if (block === Blocks.flowing_lava) { +// event.state = Blocks.flowing_water.blockState.block.defaultState +// } +// +// if (block === Blocks.lava) { +// event.state = Blocks.water.blockState.block.defaultState +// } +// +// +// +//// if (block === Blocks.redstone_lamp) { +//// val blockState = Blocks.redstone_lamp.blockState +//// event.state = blockState.block.defaultState +//// } +//// if (block === Blocks.flowing_lava && +//// (state as IBlockState).getValue(BlockStainedGlass.COLOR) == EnumDyeColor.WHITE +//// ) { +//// event.state = state.withProperty(BlockStainedGlass.COLOR, EnumDyeColor.GRAY) +//// } +//// if (block === Blocks.carpet && (state as IBlockState).getValue(BlockCarpet.COLOR) == EnumDyeColor.WHITE) { +//// event.state = state.withProperty(BlockCarpet.COLOR, EnumDyeColor.GRAY) +//// } +//// } +// } +// } } \ No newline at end of file diff --git a/src/main/java/at/hannibal2/skyhanni/utils/ItemUtils.kt b/src/main/java/at/hannibal2/skyhanni/utils/ItemUtils.kt index 39eefff62..d97148242 100644 --- a/src/main/java/at/hannibal2/skyhanni/utils/ItemUtils.kt +++ b/src/main/java/at/hannibal2/skyhanni/utils/ItemUtils.kt @@ -29,7 +29,7 @@ object ItemUtils { return list } - fun isSack(name: String): Boolean = name.endsWith(" Sack") + fun isSack(name: String): Boolean = name.endsWith(" Sack")//TODO change fun ItemStack.getLore() = ItemUtil.getItemLore(this) @@ -41,7 +41,7 @@ object ItemUtils { fun isSoulBound(stack: ItemStack): Boolean = stack.getLore().any { it == "§8§l* §8Soulbound §8§l*" } - fun isRecombobulated(stack: ItemStack): Boolean = stack.getLore().any { it.contains("§k") } + fun isRecombobulated(stack: ItemStack): Boolean = stack.getLore().any { it.contains("§k") }//TODO use item api fun isPet(name: String): Boolean = name.matchRegex("\\[Lvl (.*)] (.*)") && !listOf( "Archer", @@ -94,4 +94,8 @@ object ItemUtils { } return false } + + fun ItemStack.getSBItemID(): String { + return ItemUtil.getSkyBlockItemID(this) ?: "" + } } \ No newline at end of file diff --git a/src/main/resources/mixins.skyhanni.json b/src/main/resources/mixins.skyhanni.json index 1be1b246f..8f8c8a306 100644 --- a/src/main/resources/mixins.skyhanni.json +++ b/src/main/resources/mixins.skyhanni.json @@ -9,6 +9,7 @@ "MixinRenderManager", "gui.MixinGuiContainer", "gui.inventory.GuiEditSignMixin", - "tileentity.TileEntitySignMixin" + "tileentity.TileEntitySignMixin", + "renderer.MixinBlockRendererDispatcher" ] } -- cgit