有什么办法能在一个没有参数的重写方法内让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的时候执行另一个动作, 而不是被杀死, 直接作用在实体身上的是可以实现的, 但是我想实现反过来作用在玩家身上, 或者能获取范围玩家也行