发明已读不回的“凶手”,我帮大家找到了

到底谁喜欢用聊天软件里的“已读”功能啊!

在社交软件上,刚给对方发个信息,信息立刻变成了“对方已读”。但盯着聊天框等了五分钟都等不来对方的回复,换谁都要气死吧!

▲ “最烦已读不回的人!!!”丨微博

这功能不仅让发信的人心神不宁,也让收件人如坐针毡:收到个可能不想回的信息,你说我看还是不看?

这个“人见人烦”的已读功能,不给它颁发一个 21 世纪最反人类的发明奖,真的说不过去吧?

▲ 动漫《辉夜大小姐》也提到了已读功能丨 @我爱罗笠松征十郎 / Bilibili

已读功能,到底多招人烦?

已读功能的官方称呼是已读回执(read receipt)。从功能上说,这玩意并不新鲜。

在交流还不算便捷的时代,不管是邮递挂号信的回执,还是电子邮箱中的投递状态通知(Delivery Status Notification),目的都是想让你放心:运送过程没出幺蛾子,你的信息确认安全送达了。

▲ 电子邮箱里一般都有已读回执功能丨自己截的

但到了时刻在线的今天,已读回执只会让你更操心。

当你看到对方阅读了消息却没有回复时,你会作何感想。“是不是我说错了话?”“TA 到底哪里不满意啊!”“TA 都发朋友圈了却不回我消息,就是不想和我聊天吧。”

有人还真的利用了这点,故意通过已读不回来让对方感到不适。2011 年,有人将“已读炸弹”(rbomb)加进了 Urban Dictionary 词典。对这个词的解释也充满了“怨念感”:阅读消息后不回复或者忽略,通常是刻意的。

▲ 在#rbomb 话题下,很多人都在抱怨对方已读不回丨 Twitter

在交友软件上,已读也让很多人“抓狂”,甚至形成了一种梗。明明上一秒对方还是“你好,认识一下”,结果当发现你已读但没回信息后,对方立刻恼羞成怒破口大骂:放下你的身段!

这也让收信人产生了已读焦虑。你说我现在刚好有空看个信息,但没时间回复,那该不该点开这个信息呢?不仅如此,当我们收到一个多年未联系的朋友的消息,或者是不熟同事的邀约,已读状态也会让我们无法“隐身”,必须硬着头皮回复。

▲ 为了“偷偷”读信息,人们煞费苦心丨 Google

有时候,这真能算是一种情感上的“虐待”了。

关于已读回执的研究也不少,其中有一项就统计了 108 名学生对阅读回执的看法。结果发现,作为消息的发送者,35% 的人看到已读不回的消息时,都会有种被忽视的感觉。其他人也会感到恐惧和焦虑。反过来,就算是作为消息的接受者,在有阅读回执的功能下,有 29.7% 的人甚至在回消息前都有一种负罪感。

▲ 调查中,大多数收信人也感觉不好丨参考资料 [5]

同时因为这个功能的出现,有将近一半的人会反复点开聊天,不断检查。而 81.9% 的人则会想尽各种方法避免“已读”,比如只在锁定屏幕上查看消息等。调查还指出,在一段不确定的约会关系中,这种焦虑的情况更为严重,受访者说这简直就是一场“心理游戏”。

已读回执也不是一无是处,在正式的工作场合打开这个功能确实能提高协作效率。但当它“入侵”了我们的生活,企图“监视”我们的每一个动作时,关闭这个功能或许成为了我们的共识。

不过在发明者看来,这个让人倍感压力的功能,反而是一个“杰作”。

黑莓,出来“挨骂”

2018 年,黑莓公司把脸书告上了法庭,称其侵犯了多项功能专利。在提交的文件里,黑莓还特意炫耀自己的“丰功伟绩”:

BlackBerry Messenger(BBM)被认为是第一个支持状态更新(status updates)的消息传递平台,可以显示用户何时传递和阅读消息。这创造了一种开创性的实时存在感。当下,它也成为了即时信息应用的标准功能。

已读回执的“幕后黑手”正是黑莓公司。2005 年,黑莓正式推出了 BlackBerry Messenger,为人们提供了除短信之外的另一种交流方式。只要大家都用黑莓手机,就可以利用黑莓的 PIN 系统互相聊天。

当时,已读回执成为 BBM 的一个亮点功能。在沟通不便的时代,人们希望能与他人建立实时连接,快速获取对方的各种状态。黑莓在 2006 年申请了专利《处理即时消息系统中的通知》(Handling notifications in instant messaging systems),介绍了送达与已读回执的实现方法。

▲ BBM 1.0 版本(最初被称为 QuickMessenger)就使用了阅读回执功能。而更新的界面也保留了这一功能(绿色的“R”为“已读”)丨 blackberry.com

如今,已读回执早已不是黑莓专属,各大厂商争相引入这个“好用”的功能。苹果在 2011 年的开发者大会上介绍 iMessage 时,还特意演示了送达、已读回执功能。刚介绍完,台下响起了雷鸣般的掌声……

▲ 苹果 2011 年开发者大会(字幕为自动识别添加)丨 Michael Noriega / Youtube

虽然 BBM 消费者版已经停止了服务,但它留下的最富争议的技术依然保留在聊天软件里。BBM 最初设计时,人们想要将其作为一个能够实时更新用户状态的聊天软件。可当下,想要逃离互联网的人们越来越多。这个功能却依然长久不衰,受到了越来越多厂商的青睐。

你的焦虑,厂商的开心

当你反复打开聊天软件,检查对方是否“已读”,也许正是软件运营者们想要的结果。当我们感到焦虑、不安或愤怒时,我们使用软件的时间就越久,贡献给软件的数据也就更多

东伦敦大学研究数字媒体文化与交流的托尼・桑普森(Tony D.Sampson)教授认为,社交媒体设计的“已读回执”,正是通过触发与强迫行为相关的负面情绪,来让用户对这些 App 上瘾

和“已读不回”类似的是,Snapchat 和 QQ 都曾发布过“聊天火花”的功能,当你和某位朋友累计聊天 XX 天后,就会获得一个火花,或者别的特殊符号。为了保持住这个“火花”,人们必须日复一日地聊天(也被叫做 Snapstreak)。而当“火花”消失时,不少 Snapchat 青少年用户都表现出了消极情绪。

对于软件运营者来说,让人们都开始聊天,这正是他们赚钱的方式。“Whatsapp 希望 180 个国家的 10 亿人继续签到,而 Facebook 很期待你的手机(信息)‘爆炸’。”

Facebook 前用户社区增长副总裁帕里哈皮蒂亚(Chamath Palihapitiya) 在一次演讲中说:“社交媒体上的我们其实是被编程的,只是你没有意识到。”

好在用户的呼声越来越强,这也迫使越来越多的厂商将选择权交还给了用户,不再强制开启这个功能。

参考

  • [1]‘Message read. But what kind of weirdo keeps read receipts on?’, https://www.theguardian.com/technology/2015/aug/17/message-read-but-what-kind-of-weirdo-keeps-read-receipts-on

  • [2]‘BlackBerry Messenger dies today, but it’ll never truly be gone’, https://www.theverge.com/2019/5/31/18646429/blackberry-messenger-ending-group-chats-read-receipts-rim-apple-android-imessage

  • [3]‘How ‘seen’ messages on Facebook mess with your mental health’, https://www.dazeddigital.com/science-tech/article/38010/1/how-seen-messages-on-facebook-mess-with-your-mental-health

  • [4]‘Devastated Snapchatters talk about the heartbreak of losing a Snapstreak after hundreds of days’, https://mashable.com/article/breaking-snapstreak-snapchat-streak

  • [5] Lynden, James, and Teis Rasmussen. "Exploring the impact of'read receipts' in Mobile Instant Messaging." Tidsskrift for Medier, Erkendelse Og Formidling 5.1 (2017).

  • [6]‘Read Receipts: The Psychology of Emotional Manipulation’, https://oozestudios.com.au/read-receipts-the-psychology-of-emotional-manipulation/

  • [7] ‘Handling notifications in instant messaging systems’, US8572182B2, https://patents.google.com/patent/US9219703B2/

  • 本文来自微信公众号:果壳 (ID:Guokr42)

<think>好的,我现在需要助用户解决关于Minecraft Forge模组开发中,如何通过@SubscribeEvent注解的方法让怪物在击杀玩家时触发特定效果的问题。用户提到的是使用@self ~onKillPlayer,但可能对Forge事件系统的具体实现太熟悉。我需要逐步引导他们理解事件处理机制。 首先,我应该确认用户的需求。他们想要在怪物(比如僵尸、骷髅等)杀死玩家时执行一些自定义逻辑,比如生成特效、播放声音或者增加积分。在Forge中,这通常涉及到监听特定的事件。 接下来,我需要忆Minecraft Forge的事件系统。Forge提供了多种事件,其中与实体死亡相关的事件可能有LivingDeathEvent,但这个事件是在实体死亡时触发,无论是玩家还是其他生物。用户需要的是当玩家被怪物杀死的情况,所以需要进一步过滤事件。 然后,考虑正确的事件类。或许PlayerEvent.EntityKillEvent或LivingDeathEvent更适合。需要查阅Forge文档确认。假设使用LivingDeathEvent,当玩家死亡时,检查攻击者是否是怪物。这里需要注意,LivingDeathEvent的entity参数是死亡的实体,而source.getTrueSource()可以获取造成死亡的实体。 接下来,需要确保用户正确注册事件处理器。在Forge模组中,需要创建一个方法并用@SubscribeEvent注解,同时确保类被注册到MinecraftForge.EVENT_BUS。通常主模组类中会进行注册。 然后,考虑代码结构。用户可能需要一个示例类,比如一个EventHandler类,其中包含处理事件的方法。需要编写处理LivingDeathEvent的方法,检查死亡的是玩家,且凶手是怪物(instanceof IMob)。 此外,提醒用户需要导入正确的类,比如Event类、Entity类、IMob接口等,避免编译错误。同时,注意处理事件时的潜在问题,比如空指针异常,应确保source和trueSource为null。 还需要考虑是否需要服务端和客户端的同处理,比如某些操作只能在服务端执行。在事件处理中,最好先检查是否为服务端环境,使用!event.getEntity().world.isRemote。 最后,测试代码的重要性,建议用户在实际运行前进行测试,确保事件被正确触发,并且没有副作用或崩溃。 总结步骤:确定正确的事件类型,过滤条件,注册事件处理器,编写逻辑,注意事项和测试。确保用户能够按照步骤实现所需功能,并理解每个部分的作用。</think>以下为基于Minecraft Forge模组开发的事件处理实现步骤: ```java // 事件处理器类示例 public class MobKillHandler { @SubscribeEvent public void onPlayerKilled(LivingDeathEvent event) { // 步骤1:确认死亡实体是玩家 if (event.getEntity() instanceof PlayerEntity) { // 步骤2:获取伤害来源 DamageSource source = event.getSource(); Entity killer = source.getTrueSource(); // 步骤3:确认凶手是怪物(IMob接口包含所有敌对生物) if (killer instanceof IMob) { // 步骤4:执行自定义逻辑(示例效果) PlayerEntity player = (PlayerEntity) event.getEntity(); World world = player.getEntityWorld(); // 防止客户端重复执行 if (!world.isRemote) { // 触发爆炸效果(示例) world.createExplosion(null, player.getPosX(), player.getPosY(), player.getPosZ(), 3.0f, Explosion.Mode.NONE); // 发送系统消息 player.sendMessage(new StringTextComponent("你被怪物终结了!"), player.getUniqueID()); } } } } } // 在主模组类注册 @Mod("your_mod_id") public class YourMod { public YourMod() { MinecraftForge.EVENT_BUS.register(new MobKillHandler()); MinecraftForge.EVENT_BUS.register(this); } } ``` 实现原理说明: 1. **事件选择**:使用`LivingDeathEvent`捕获所有实体死亡事件 2. **类型判断**:通过`instanceof`确认受害者是玩家,凶手是敌对生物 3. **环境检查**:`world.isRemote`判断确保逻辑只在服务端执行 4. **效果实现**:演示了爆炸效果和消息通知的基础实现 注意事项: 1. 需导入正确类: ```java import net.minecraftforge.event.entity.living.LivingDeathEvent; import net.minecraftforge.eventbus.api.SubscribeEvent; ``` 2. 敌对生物判定标准: $$ \text{IMob} \supset \{\text{Zombie, Skeleton, Creeper, Spider...}\} $$ 3. 扩展功能建议: - 添加粒子效果`world.addParticle()` - 播放音效`world.playSound()` - 掉落特殊物品`entity.entityDropItem()` 测试建议: 1. 在生存模式下让怪物击杀玩家 2. 观察控制台是否有错误日志 3. 验证爆炸效果和消息是否触发 完整开发文档建议参考: [Forge Official Documents](https://mcforge.readthedocs.io/en/latest/events/intro/)
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值