专sha苦力怕
刚开始学mod开发的萌新:
1.18.2 Fabric
如何在游戏刻里加入自己的事件,比如实现每20刻执行tp命令,将玩家传送到~128 ~ ~



aiusyudiyab
mixin 到 tick AT HEAD,increment 一个counter, 然后 player.requestTeleport

专sha苦力怕
aiusyudiyab 发表于 2022-7-2 22:17
mixin 到 tick AT HEAD,increment 一个counter, 然后 player.requestTeleport

怎么获取玩家变量

aiusyudiyab

要么用名字找,要么获取某个世界的玩家?不知道你什么需求啊

专sha苦力怕
aiusyudiyab 发表于 2022-7-2 22:17
mixin 到 tick AT HEAD,increment 一个counter, 然后 player.requestTeleport

有现成的代码吗
传送的是执行命令的玩家
另外用requestTeleport传送失败,用move成功了
counter我也不会用

aiusyudiyab
专sha苦力怕 发表于 2022-7-3 16:02
有现成的代码吗
传送的是执行命令的玩家
另外用requestTeleport传送失败,用move成功了

你发你的代码出来我帮你改下

专sha苦力怕
本帖最后由 专sha苦力怕 于 2022-7-3 18:05 编辑
aiusyudiyab 发表于 2022-7-3 17:42
你发你的代码出来我帮你改下

  1. public class ExampleMod implements ModInitializer {

  2.     public static final Logger LOGGER = LoggerFactory.getLogger("modid");

  3.             @Override
  4.             public void onInitialize() {

  5.                         CommandRegistrationCallback.EVENT.register((dispatcher, dedicated) -> {
  6.                                     dispatcher.register(CommandManager.literal("foo").executes(context -> {

  7.                                                 new theThread().start();
  8.                                                 System.out.println("foo");
  9.                                                 return 1;

  10.                                     }));
  11.                         });

  12.             }

  13. }

  14. class theThread extends Thread {

  15.     // 传送玩家,延时1.8秒后截图,重复395次
  16.    
  17.             @Override
  18.             public void run() {

  19.                         MinecraftClient client = MinecraftClient.getInstance();
  20.                         ClientPlayerEntity p = client.player;

  21.                         for (int i = 0; i < 395; i++) {

  22.                                     d(1800, p, client, 0, 128);
  23.                                     d(1800, p, client, 0, 128);
  24.                                     d(1800, p, client, 128, -256);

  25.                         }

  26.             }
  27.         
  28.             private void d(long t, ClientPlayerEntity p, MinecraftClient client, int x, int z) {

  29.                         try {
  30.                                     p.move(MovementType.PLAYER, new Vec3d(x,0,z));
  31.                                     sleep(t);
  32.                         } catch (InterruptedException e) {
  33.                                     e.printStackTrace();
  34.                         } finally {
  35.                                     ScreenshotRecorder.saveScreenshot(client.runDirectory,
  36.                                               client.getFramebuffer(),message -> client.execute(() ->
  37.                                                           client.inGameHud.getChatHud().addMessage(message)));
  38.                         }

  39.                         try {
  40.                                     sleep(50);
  41.                         } catch (InterruptedException e) {
  42.                                     e.printStackTrace();
  43.                         }

  44.             }
  45.         
  46. }
复制代码

mixin tick没写,不会写,就用线程凑合了

下一页 最后一页