aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMy-Name-Is-Jeff <37018278+My-Name-Is-Jeff@users.noreply.github.com>2021-10-30 16:15:09 -0400
committerMy-Name-Is-Jeff <37018278+My-Name-Is-Jeff@users.noreply.github.com>2021-10-30 16:15:09 -0400
commitfd3cf3a8c46819cf1a30184066222fc1c4a36618 (patch)
treebcfb6bea4dbe987481e4ce024fbbdf0228b5cc28
parentbb73a5147c5fc7e2d5c21f904626959f71eb4700 (diff)
downloadSkytilsMod-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.kt74
-rw-r--r--src/main/kotlin/skytils/skytilsmod/utils/Utils.kt26
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