NernBrot
本帖最后由 NernBrot 于 2022-8-18 12:18 编辑

Player player = ((Player) sender).getPlayer();
player.getWorld().getNearbyEntities(player.getLocation(),10,10,10);

可以获取玩家附近的生物,怎么做到给这些生物附加发光效果

并且只有player可以看到,真的搜了wiki半天才来发帖的,不是伸手...

spigot插件开发

Triste170
感谢大佬分享

贺兰兰
你可以通过 Entity#addPotionEffect(PotionEffect) 方法给予这些生物 GLOW 效果,或者,也可以直接调用 Entity#setGlow(Z) 方法为生物设置发光(这将修改生物的 glow 属性)

NernBrot
贺兰兰 发表于 2022-8-16 14:14
你可以通过 Entity#addPotionEffect(PotionEffect) 方法给予这些生物 GLOW 效果,或者,也可以直接调用 Ent ...

请问 这种方法是只有
Player player = ((Player) sender).getPlayer();
的player能看到吗,
好像是所有玩家都可以看到吧...

贺兰兰
NernBrot 发表于 2022-8-16 14:41
请问 这种方法是只有
Player player = ((Player) sender).getPlayer();
的player能看到吗,

噢,没注意
那么这个情况你可能必须依赖向这个玩家单独发包才行了

出于简化意义,你可以使用 GlowAPI

Glyceryl
本帖最后由 Glyceryl 于 2022-8-17 14:01 编辑

你说的是哪个版本的?目前我知道以下这两个版本forge的实现方法。
都是将视野加载范围内的生物添加发光效果,两种方法所实现的效果只能自己看得到。

1. 如果是1.12.2版本的,可参考以下代码:
  1. Minecraft mc = Minecraft.getMinecraft();
  2. WorldClient client = mc.world;
  3. Set<Entity> entities = ReflectionHelper.getPrivateValue(WorldClient.class, client, new String[] {"entityList", "field_73032_d", "J"});
  4. for (Entity entity : entities) {
  5.        if (entity instanceof EntityLivingBase) {
  6.                entity.setGlowing(true);
  7.        }
  8. }
复制代码

2. 如果是1.18版本的,可参考以下代码:
需要事先用AT或Mixin把Entity类中的setSharedFlag方法改成public
  1. Minecraft minecraft = Minecraft.getInstance();
  2. ClientLevel clientLevel = minecraft.level;
  3. for (Entity entity : clientLevel.entitiesForRendering()) {
  4.        if (entity instanceof LivingEntity) {
  5.                entity.setSharedFlag(6, true);
  6.        }
  7. }
复制代码

NernBrot
Glyceryl 发表于 2022-8-17 13:57
你说的是哪个版本的?目前我知道以下这两个版本forge的实现方法。
都是将视野加载范围内的生物添加发光效果 ...

抱歉请问一下这个是spigot的插件代码吗
还是forge的mod代码

Glyceryl
本帖最后由 Glyceryl 于 2022-8-18 13:51 编辑
NernBrot 发表于 2022-8-18 12:17
抱歉请问一下这个是spigot的插件代码吗
还是forge的mod代码

抱歉,没注意看是spigot的,这是forge的代码,另外我不太懂spigot😂😂😂

第一页 上一页 下一页 最后一页