Minecraft(我的世界)中文论坛
标题: 利用Forge API开发联机MOD【基础篇】【第四章】
作者: yuxuanchiadm 时间: 2013-1-29 15:25
标题: 利用Forge API开发联机MOD【基础篇】【第四章】
利用Forge API开发联机MOD【基础篇】【第四章】
为你的MOD增加代理类
作者:yuxuanchiadm
索引贴地址:http://www.mcbbs.net/thread-38211-1-1.html
请确定你已经阅读完成第三章的内容:
http://www.mcbbs.net/thread-38330-1-1.html
否则不要阅读此贴!
序:
(这一章由于是赶出来的,所以有点仓促,没讲到的地方,麻烦提醒下,谢谢啦=w=)
在上一章里,我们制作了一个基本的配置文件管理类。但是,我们还缺少联机MOD的一个关键部分:代理。什么是代理呢?在Forge里,一个联机MOD的最佳状态是:不区分客户端和服务端。在此,要了解一个公式:服务端+客户端GUI、纹理和渲染器等≈(%95)客户端。而代理的用处则是让MOD能区分服务端和客户端,从而只在客户端实现GUI、纹理、渲染等功能。(服务端调用这些功能会出错)所以,现在就让我们来实现吧=w=。
为你的MOD增加代理类:
首先在myFirstMod包下新建一个包,命名为Common。
然后在这个包下新建一个类,命名为myFirstModProxyCommon。
再在myFirstMod包下新建一个包,命名为Client。
然后在这个包下新建一个类,命名为myFirstModProxyClient。
打开myFirstModProxyClient类,在public class myFirstModProxyClient后添加- extends myFirstModProxyCommon
复制代码 用Eclipse自动导入myFirstModProxyCommon。
在mod_myFirstMod类中添加静态字段:- public static myFirstModProxyCommon proxy;
复制代码 并加上注解:- @SidedProxy(clientSide="myFirstMod.Client.myFirstModProxyClient", serverSide="myFirstMod.Common.myFirstModProxyCommon")
复制代码 用Eclipse自动导入所需类。
总结:
OK,你已经制作出了一个基本的代理字段,你可以通过这个字段来访问myFirstModProxyCommon和myFirstModProxyClient中的方法,在客户端和服务端,Forge会自动调用正确的方法(客户端使用myFirstModProxyClient,服务端使用myFirstModProxyCommon)。
作者: shengjing1 时间: 2013-1-29 15:30
大神的帖子,顶之
作者: 262949130000 时间: 2013-1-29 15:31
必顶之撒~
作者: hendyzone 时间: 2013-1-29 15:47
果断顶起{:10_512:}
作者: qq1693129601 时间: 2013-3-22 14:33
请问提示The annotation @SidedProxy is disallowed for this location怎么回事?
作者: yuxuanchiadm 时间: 2013-3-22 15:28
qq1693129601 发表于 2013-3-22 14:33 
请问提示The annotation @SidedProxy is disallowed for this location怎么回事?
@SidedProxy注解的位置错了
作者: 心灵骑士·杰 时间: 2013-5-19 16:20
求问包下建包是什么意思,是建成myFirstMod.Common还是直接说Common?
包里面应该不能建包吧。
作者: 小诚哥 时间: 2013-7-3 23:00
最好贴一下全代码,像上一章节。。。。这样对照的看能直接复习java 许久不用忘记光光了。。。。
作者: 小诚哥 时间: 2013-7-3 23:11
小诚哥 发表于 2013-7-3 23:00 
最好贴一下全代码,像上一章节。。。。这样对照的看能直接复习java 许久不用忘记光光了。。。。
补充一点,@sidedProxy 注解是在哪个包? Forge API有手册么。。。。
作者: panfengjason 时间: 2013-7-10 14:50
小诚哥 发表于 2013-7-3 23:11 
补充一点,@sidedProxy 注解是在哪个包? Forge API有手册么。。。。
自动导入就行了,我注解在添加的静态字段前,不知道对不对
作者: kuafuzhuguang 时间: 2013-8-4 19:12
看完了,顶。。。
作者: kuafuzhuguang 时间: 2013-8-4 21:54
这里有个比较隐性的问题。。。如果是一直跟教程的同学可能会在这里出错。- @SidedProxy(clientSide="myFirstMod.Client.myFirstModProxyClient", serverSide="myFirstMod.Common.myFirstModProxyCommon")
复制代码 跟着教程走的话,现在包myFirstMod的路径应该是
net.minecraft.client.myFirstMod
而不是
myFirstMod
但是楼主此时应该已经把包的路径提到根目录下了。
所以如果不改变包的路径的话应该是- @SidedProxy(clientSide="net.minecraft.client.myFirstMod.Client.myFirstModProxyClient", serverSide="net.minecraft.client.myFirstMod.Common.myFirstModProxyCommon")
复制代码 如果错了的话就进游戏的时候就会报错(找了两个小时)。。。
而后面的教程的myFirstMod.Item之类的路径应该也是在同一个myFirstMod包中,而不是另一个。。。
所以建议这里还是把包提出来吧。。。
果然是忙中出错啊。。。如果楼主贴上完整代码估计就能从包名中看出来了。
作者: kuafuzhuguang 时间: 2013-8-4 21:58
kuafuzhuguang 发表于 2013-8-4 21:54 
这里有个比较隐性的问题。。。如果是一直跟教程的同学可能会在这里出错。跟着教程走的话,现在包myFirstMod ...
好吧,刚刚回头看了下。在前一章的完整代码中已经能看出来包路径改了。只不过我是粘贴的部分代码而不是把整个代码都粘贴,于是乎没看出来。
作者: c1097198892 时间: 2013-9-19 10:42
- @SidedProxy(clientSide="FTCraft.Client.FTCraftProxyClient", serverSide="FTCraft.Common.FTCraftProxyCommon")
复制代码 这段代码会出错?我只是把MOD名字改了下,不加入这段都是很正常的
编译完运行直接崩溃
作者: 天空之夜丶 时间: 2013-11-26 20:50
我还是不太明白,有个这个静态字段之后要干嘛。
要在那两个类里面 分别写客户端和服务端的代码么
作者: q296439962 时间: 2014-2-12 10:09
顶顶顶顶顶的顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶
作者: 爱拍孤单-笔记本 时间: 2014-6-29 22:13
我也是,同求答案