有什么办法能在一个没有参数的重写方法内让ICommandsender类的对象适配为entity或者entityplayer的对象, 或者说在没有参数的重写方法中怎么检测指令输入者, 来执行另一个套在这个方法里面的有参方法(比如像图片里面这种)
感谢!
感谢!
你这是覆写了什么类?
Thehrz 发表于 2022-8-20 10:08
你这是覆写了什么类?
重写了EntityMob里面的onkillCommand
Wizy 发表于 2022-8-20 10:12
重写了EntityMob里面的onkillCommand
那执行者不就是 this 吗?
Thehrz 发表于 2022-8-20 10:18
那执行者不就是 this 吗?
但是这样执行没有用,是不是什么地方写错了
- protected void execute(ICommandSender sender) throws CommandException {
- EntityPlayer entityplayer = getCommandSenderAsPlayer(sender);
- if (sender instanceof EntityPlayer) {
- ProcedureBigBroOnKillCommand.executeProcedure(entityplayer);
- }
- }
- @Override
- public void onKillCommand() {
- MinecraftServer server = this.getServer();
- World worldIn = this.getEntityWorld();
- try {
- EntityPlayer entityPlayer = getCommandSenderAsPlayer(this);
- } catch (PlayerNotFoundException e) {
- e.printStackTrace();
- }
- try {
- execute(this);
- } catch (CommandException e) {
- e.printStackTrace();
- }
- }
另一个类:
- public static void executeProcedure(EntityPlayer player) {
- player.setDead();
- }
Wizy 发表于 2022-8-20 10:25
但是这样执行没有用,是不是什么地方写错了
我没仔细看代码 Sorry 这个 this 其实是被 Kill 的实体
不能从这里获取到 Sender
这个 onKillCommand 就是直接杀死实体
Entity
- public void onKillCommand() {
- this.remove();
- }
只能从 CommandKill#processCommand() 获取执行Kill命令的执行者
本帖最后由 Wizy 于 2022-8-20 10:37 编辑
不能类似写传送指令的方法来获取指令执行者吗( 貌似需要通过execute方法里面的ICommandSender参数
Thehrz 发表于 2022-8-20 10:30
我没仔细看代码 Sorry 这个 this 其实是被 Kill 的实体
不能从这里获取到 Sender
不能类似写传送指令的方法来获取指令执行者吗( 貌似需要通过execute方法里面的ICommandSender参数
Wizy 发表于 2022-8-20 10:35
不能类似写传送指令的方法来获取指令执行者吗( 貌似需要通过execute方法里面的ICommandSender参数
...
? 那是怎样的
总之就是不能通过onKillCommand 来获取执行者
在后来的MCP名中
这个 onKillCommand 直接变成了 kill 所以说它和命令其实关系不大

本帖最后由 Wizy 于 2022-8-20 10:44 编辑
哦哦, 我意思其实是被onkill的时候执行另一个动作, 而不是被杀死, 直接作用在实体身上的是可以实现的, 但是我想实现反过来作用在玩家身上, 或者能获取范围玩家也行
Thehrz 发表于 2022-8-20 10:41
? 那是怎样的
总之就是不能通过onKillCommand 来获取执行者
哦哦, 我意思其实是被onkill的时候执行另一个动作, 而不是被杀死, 直接作用在实体身上的是可以实现的, 但是我想实现反过来作用在玩家身上, 或者能获取范围玩家也行
Wizy 发表于 2022-8-20 10:43
哦哦, 我意思其实是被onkill的时候执行另一个动作, 而不是被杀死, 直接作用在实体身上的是可以实现的, 但 ...
那为什么不监听 LivingDeathEvent 事件?
Thehrz 发表于 2022-8-20 11:21
那为什么不监听 LivingDeathEvent 事件?
这个条件需要对象死亡吗
Thehrz 发表于 2022-8-20 12:09
?
事件可以 setCancelled
监听LivingDeath的话怎么套用到onkill方法里面呢, onkill里面没有参数而且不能在里面获取玩家的话LivingDeath事件还是不能适用于onkill里面阿
Wizy 发表于 2022-8-20 17:19
监听LivingDeath的话怎么套用到onkill方法里面呢, onkill里面没有参数而且不能在里面获取玩家的话LivingD ...
为什么一定要使用onKillCommand
这个就是直接杀死实体 不一定是命令调用它 Mod如果要杀死实体也可以使用这个
不要因为它的 MCP名 误导了
LivingDeathEvent 确实不能监听到Kill命令
那这种情况下 只能从 CommandKill#processCommand 来达到你想要的