diff options
author | My-Name-Is-Jeff <37018278+My-Name-Is-Jeff@users.noreply.github.com> | 2021-10-30 16:15:09 -0400 |
---|---|---|
committer | My-Name-Is-Jeff <37018278+My-Name-Is-Jeff@users.noreply.github.com> | 2021-10-30 16:15:09 -0400 |
commit | fd3cf3a8c46819cf1a30184066222fc1c4a36618 (patch) | |
tree | bcfb6bea4dbe987481e4ce024fbbdf0228b5cc28 | |
parent | bb73a5147c5fc7e2d5c21f904626959f71eb4700 (diff) | |
download | SkytilsMod-fd3cf3a8c46819cf1a30184066222fc1c4a36618.tar.gz SkytilsMod-fd3cf3a8c46819cf1a30184066222fc1c4a36618.tar.bz2 SkytilsMod-fd3cf3a8c46819cf1a30184066222fc1c4a36618.zip |
cleanup hide implosion particles
-rw-r--r-- | src/main/kotlin/skytils/skytilsmod/features/impl/misc/ItemFeatures.kt | 74 | ||||
-rw-r--r-- | src/main/kotlin/skytils/skytilsmod/utils/Utils.kt | 26 |
2 files changed, 52 insertions, 48 deletions
diff --git a/src/main/kotlin/skytils/skytilsmod/features/impl/misc/ItemFeatures.kt b/src/main/kotlin/skytils/skytilsmod/features/impl/misc/ItemFeatures.kt index 19242f0a..0cec337d 100644 --- a/src/main/kotlin/skytils/skytilsmod/features/impl/misc/ItemFeatures.kt +++ b/src/main/kotlin/skytils/skytilsmod/features/impl/misc/ItemFeatures.kt @@ -36,7 +36,6 @@ import net.minecraft.network.play.server.S2FPacketSetSlot import net.minecraft.util.EnumFacing import net.minecraft.util.EnumParticleTypes import net.minecraft.util.MovingObjectPosition -import net.minecraft.util.Vec3 import net.minecraftforge.client.event.RenderWorldLastEvent import net.minecraftforge.event.entity.EntityJoinWorldEvent import net.minecraftforge.event.entity.player.ItemTooltipEvent @@ -53,7 +52,8 @@ import skytils.skytilsmod.core.structure.GuiElement import skytils.skytilsmod.events.impl.GuiContainerEvent import skytils.skytilsmod.events.impl.GuiContainerEvent.SlotClickEvent import skytils.skytilsmod.events.impl.GuiRenderItemEvent -import skytils.skytilsmod.events.impl.PacketEvent.ReceiveEvent +import skytils.skytilsmod.events.impl.MainReceivePacketEvent +import skytils.skytilsmod.features.impl.dungeons.DungeonFeatures import skytils.skytilsmod.features.impl.handlers.AuctionData import skytils.skytilsmod.utils.* import skytils.skytilsmod.utils.ItemUtil.getDisplayName @@ -68,6 +68,7 @@ import skytils.skytilsmod.utils.graphics.SmartFontRenderer.TextShadow import skytils.skytilsmod.utils.graphics.colors.CommonColors import java.awt.Color import java.util.regex.Pattern +import kotlin.math.pow class ItemFeatures { @@ -361,53 +362,40 @@ class ItemFeatures { } @SubscribeEvent - fun onReceivePacket(event: ReceiveEvent) { + fun onReceivePacket(event: MainReceivePacketEvent<*, *>) { if (!Utils.inSkyblock || mc.theWorld == null) return - try { - if (event.packet is S2APacketParticles) { - val packet = event.packet - val type = packet.particleType - val longDistance = packet.isLongDistance - val count = packet.particleCount - val speed = packet.particleSpeed - val xOffset = packet.xOffset - val yOffset = packet.yOffset - val zOffset = packet.zOffset - val x = packet.xCoordinate - val y = packet.yCoordinate - val z = packet.zCoordinate - val pos = Vec3(x, y, z) + event.packet.apply { + if (this is S2APacketParticles) { if (type == EnumParticleTypes.EXPLOSION_LARGE && Skytils.config.hideImplosionParticles) { - if (longDistance && count == 8 && speed == 8f && xOffset == 0f && yOffset == 0f && zOffset == 0f) { - for (player in mc.theWorld.playerEntities) { - if (pos.squareDistanceTo(Vec3(player.posX, player.posY, player.posZ)) <= 11 * 11) { - val item = player.heldItem - if (item != null) { - val itemName = getDisplayName(item).stripControlCodes() - if (itemName.contains("Necron's Blade") || itemName.contains("Scylla") || itemName.contains( - "Astraea" - ) || itemName.contains("Hyperion") || itemName.contains("Valkyrie") - ) { - event.isCanceled = true - break - } - } - } + if (isLongDistance && count == 8 && speed == 8f && xOffset == 0f && yOffset == 0f && zOffset == 0f) { + val dist = (if (DungeonFeatures.hasBossSpawned && Utils.equalsOneOf( + DungeonFeatures.dungeonFloor, + "F7", + "M7" + ) + ) 4f else 11f).pow(2f) + + if (mc.theWorld.playerEntities.any { + it.uniqueID.version() == 4 && it.getDistanceSq( + x, + y, + z + ) <= dist && getDisplayName(it.heldItem).stripControlCodes().containsAny( + "Necron's Blade", "Scylla", "Astraea", "Hyperion", "Valkyrie" + ) + }) { + event.isCanceled = true } } } } - } catch (e: ConcurrentModificationException) { - e.printStackTrace() - } - if (event.packet is S2FPacketSetSlot && event.packet.func_149175_c() == 0) { - Utils.checkThreadAndQueue { - if (mc.thePlayer == null || (!Utils.inSkyblock && mc.thePlayer.ticksExisted > 1)) return@checkThreadAndQueue - val slot = event.packet.func_149173_d() - - val item = event.packet.func_149174_e() ?: return@checkThreadAndQueue - val extraAttr = getExtraAttributes(item) ?: return@checkThreadAndQueue - val itemId = getSkyBlockItemID(extraAttr) ?: return@checkThreadAndQueue + if (this is S2FPacketSetSlot && func_149175_c() == 0) { + if (mc.thePlayer == null || (!Utils.inSkyblock && mc.thePlayer.ticksExisted > 1)) return + val slot = func_149173_d() + + val item = func_149174_e() ?: return + val extraAttr = getExtraAttributes(item) ?: return + val itemId = getSkyBlockItemID(extraAttr) ?: return if (itemId == "ARROW_SWAPPER") { selectedArrow = getItemLore(item).find { diff --git a/src/main/kotlin/skytils/skytilsmod/utils/Utils.kt b/src/main/kotlin/skytils/skytilsmod/utils/Utils.kt index 1d180401..770eae57 100644 --- a/src/main/kotlin/skytils/skytilsmod/utils/Utils.kt +++ b/src/main/kotlin/skytils/skytilsmod/utils/Utils.kt @@ -34,10 +34,8 @@ import net.minecraft.entity.player.EntityPlayer import net.minecraft.event.HoverEvent import net.minecraft.item.ItemStack import net.minecraft.network.play.server.S02PacketChat -import net.minecraft.util.AxisAlignedBB -import net.minecraft.util.BlockPos -import net.minecraft.util.MathHelper -import net.minecraft.util.Vec3 +import net.minecraft.network.play.server.S2APacketParticles +import net.minecraft.util.* import net.minecraftforge.client.event.ClientChatReceivedEvent import net.minecraftforge.common.MinecraftForge import org.objectweb.asm.tree.MethodInsnNode @@ -298,4 +296,22 @@ val MethodInsnNode.descriptor: Descriptor AsmHelper.remapper.remapDesc(this.desc) ) -fun <T : Any> Map<T, T>.getOrSelf(key: T): T = this.getOrDefault(key, key)
\ No newline at end of file +fun <T : Any> Map<T, T>.getOrSelf(key: T): T = this.getOrDefault(key, key) + +val S2APacketParticles.x + get() = this.xCoordinate + +val S2APacketParticles.y + get() = this.yCoordinate + +val S2APacketParticles.z + get() = this.zCoordinate + +val S2APacketParticles.type: EnumParticleTypes + get() = this.particleType + +val S2APacketParticles.count + get() = this.particleCount + +val S2APacketParticles.speed + get() = this.particleSpeed
\ No newline at end of file |