如何设置单个实体对玩家不可见?
How to set a single entity invisible to a player?
经过大量研究和浪费大量时间,我仍然无法找到如何向玩家隐藏实体。
我想做的是创建一个伪装命令。我现在已经解决了所有问题,除了问题是实体仍然可见,并且一旦静止不动你就不能与任何东西互动,因为暴徒的碰撞箱挡住了路。我想对播放器隐藏该实体,以便您可以执行此操作。我知道玩家可以使用 Player#hidePlayer(),但这不适用于实体。我试过使用 this 等解决方案,但在执行示例时出现错误。 (而且很多东西都贬值了,所以我认为它已经过时了。我使用的是 Spigot 1.11.2)。非常感谢任何帮助。
PS:如果你想知道为什么我不直接使用一个已经制作好的插件,那是因为 none 是我发现的插件。
要完成您想要的,您必须使用数据包取消玩家看到的内容。
我强烈推荐ProtocolLib,在你的服务器中安装它并在你的插件中使用它。
考虑到这一点,Bukkit 用户 Comphenix 为协议库开发了一个 class 来隐藏实体。你可以找到它 in github.
Comphenix也提供了使用示例,如下所示:
public class ExampleMod extends JavaPlugin {
private EntityHider entityHider;
private static final int TICKS_PER_SECOND = 20;
@Override
public void onEnable() {
entityHider = new EntityHider(this, Policy.BLACKLIST);
}
@Override
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
if (sender instanceof Player) {
final Player player = (Player) sender;
final Sheep sheep = player.getWorld().spawn(player.getLocation(), Sheep.class);
// Show a particular entity
entityHider.toggleEntity(player, sheep);
getServer().getScheduler().scheduleSyncDelayedTask(this, new Runnable() {
@Override
public void run() {
entityHider.toggleEntity(player, sheep);
}
}, 10 * TICKS_PER_SECOND);
}
return true;
}
}
经过大量研究和浪费大量时间,我仍然无法找到如何向玩家隐藏实体。
我想做的是创建一个伪装命令。我现在已经解决了所有问题,除了问题是实体仍然可见,并且一旦静止不动你就不能与任何东西互动,因为暴徒的碰撞箱挡住了路。我想对播放器隐藏该实体,以便您可以执行此操作。我知道玩家可以使用 Player#hidePlayer(),但这不适用于实体。我试过使用 this 等解决方案,但在执行示例时出现错误。 (而且很多东西都贬值了,所以我认为它已经过时了。我使用的是 Spigot 1.11.2)。非常感谢任何帮助。
PS:如果你想知道为什么我不直接使用一个已经制作好的插件,那是因为 none 是我发现的插件。
要完成您想要的,您必须使用数据包取消玩家看到的内容。
我强烈推荐ProtocolLib,在你的服务器中安装它并在你的插件中使用它。
考虑到这一点,Bukkit 用户 Comphenix 为协议库开发了一个 class 来隐藏实体。你可以找到它 in github.
Comphenix也提供了使用示例,如下所示:
public class ExampleMod extends JavaPlugin {
private EntityHider entityHider;
private static final int TICKS_PER_SECOND = 20;
@Override
public void onEnable() {
entityHider = new EntityHider(this, Policy.BLACKLIST);
}
@Override
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
if (sender instanceof Player) {
final Player player = (Player) sender;
final Sheep sheep = player.getWorld().spawn(player.getLocation(), Sheep.class);
// Show a particular entity
entityHider.toggleEntity(player, sheep);
getServer().getScheduler().scheduleSyncDelayedTask(this, new Runnable() {
@Override
public void run() {
entityHider.toggleEntity(player, sheep);
}
}, 10 * TICKS_PER_SECOND);
}
return true;
}
}