刚开始学mod开发的萌新:
1.18.2 Fabric
如何在游戏刻里加入自己的事件,比如实现每20刻执行tp命令,将玩家传送到~128 ~ ~
1.18.2 Fabric
如何在游戏刻里加入自己的事件,比如实现每20刻执行tp命令,将玩家传送到~128 ~ ~
mixin 到 tick AT HEAD,increment 一个counter, 然后 player.requestTeleport
aiusyudiyab 发表于 2022-7-2 22:17
mixin 到 tick AT HEAD,increment 一个counter, 然后 player.requestTeleport
怎么获取玩家变量
专sha苦力怕 发表于 2022-7-2 23:03
怎么获取玩家变量
要么用名字找,要么获取某个世界的玩家?不知道你什么需求啊
aiusyudiyab 发表于 2022-7-2 22:17
mixin 到 tick AT HEAD,increment 一个counter, 然后 player.requestTeleport
有现成的代码吗
传送的是执行命令的玩家
另外用requestTeleport传送失败,用move成功了
counter我也不会用
专sha苦力怕 发表于 2022-7-3 16:02
有现成的代码吗
传送的是执行命令的玩家
另外用requestTeleport传送失败,用move成功了
你发你的代码出来我帮你改下
 本帖最后由 专sha苦力怕 于 2022-7-3 18:05 编辑 
复制代码
mixin tick没写,不会写,就用线程凑合了
aiusyudiyab 发表于 2022-7-3 17:42
你发你的代码出来我帮你改下
 
- public class ExampleMod implements ModInitializer {
 
 
-     public static final Logger LOGGER = LoggerFactory.getLogger("modid");
 
 
-             @Override
 
-             public void onInitialize() {
 
 
-                         CommandRegistrationCallback.EVENT.register((dispatcher, dedicated) -> {
 
-                                     dispatcher.register(CommandManager.literal("foo").executes(context -> {
 
 
-                                                 new theThread().start();
 
-                                                 System.out.println("foo");
 
-                                                 return 1;
 
 
-                                     }));
 
-                         });
 
 
-             }
 
 
- }
 
 
- class theThread extends Thread {
 
 
-     // 传送玩家,延时1.8秒后截图,重复395次
 
-     
 
-             @Override
 
-             public void run() {
 
 
-                         MinecraftClient client = MinecraftClient.getInstance();
 
-                         ClientPlayerEntity p = client.player;
 
 
-                         for (int i = 0; i < 395; i++) {
 
 
-                                     d(1800, p, client, 0, 128);
 
-                                     d(1800, p, client, 0, 128);
 
-                                     d(1800, p, client, 128, -256);
 
 
-                         }
 
 
-             }
 
-         
 
-             private void d(long t, ClientPlayerEntity p, MinecraftClient client, int x, int z) {
 
 
-                         try {
 
-                                     p.move(MovementType.PLAYER, new Vec3d(x,0,z));
 
-                                     sleep(t);
 
-                         } catch (InterruptedException e) {
 
-                                     e.printStackTrace();
 
-                         } finally {
 
-                                     ScreenshotRecorder.saveScreenshot(client.runDirectory,
 
-                                               client.getFramebuffer(),message -> client.execute(() ->
 
-                                                           client.inGameHud.getChatHud().addMessage(message)));
 
-                         }
 
 
-                         try {
 
-                                     sleep(50);
 
-                         } catch (InterruptedException e) {
 
-                                     e.printStackTrace();
 
-                         }
 
 
-             }
 
-         
 
- }
mixin tick没写,不会写,就用线程凑合了
专sha苦力怕 发表于 2022-7-3 18:00
mixin tick没写,不会写,就用线程凑合了
你这什么代码,里面都是xml,怎么看
aiusyudiyab 发表于 2022-7-3 18:01
你这什么代码,里面都是xml,怎么看
改了。论坛的bug
专sha苦力怕 发表于 2022-7-3 18:06
改了。论坛的bug
你打算做客户端mod还是服务器mod?你打算你的用户是在哪里使用你的mod?
 本帖最后由 aiusyudiyab 于 2022-7-3 18:13 编辑 
你客户端直接 ClientPlayerEntity.move ,就是作弊,在服务器看起来就是传送挂
你客户端直接 ClientPlayerEntity.move ,就是作弊,在服务器看起来就是传送挂
aiusyudiyab 发表于 2022-7-3 18:09
你打算做客户端mod还是服务器mod?你打算你的用户是在哪里使用你的mod?
客户端。给自己写的小工具,没有用户。
需求就是按一定路线传送玩家并截图,可以理解为航拍
专sha苦力怕 发表于 2022-7-3 18:30
客户端。给自己写的小工具,没有用户。
需求就是按一定路线传送玩家并截图,可以理解为航拍 ...
但是到服务器上你这个根本不能跑,服务器不会让你一下子传送这么远的,你这也就单人能用
专sha苦力怕 发表于 2022-7-3 18:30
客户端。给自己写的小工具,没有用户。
需求就是按一定路线传送玩家并截图,可以理解为航拍 ...
我感觉以你的需求,是不是应该用replaymod
aiusyudiyab 发表于 2022-7-3 18:37
我感觉以你的需求,是不是应该用replaymod
replay试过了,不好用。现在这个半成品已经能凑合用了,效果比replay好。
就是在单人存档里用,没打算跑服务器。
其实现在改写tick都不需要了,只要能给命令添加两个参数就行,参数传给线程里的for循环次数,sleep时间
添加命令你直接参考别人的代码就可以了,https://github.com/Earthcomputer ... and/FovCommand.java