您尚未登录,请登录后浏览更多内容! 登录 | 加入最MC

QQ登录

只需一步,快速开始

 找回密码
 加入最MC

QQ登录

只需一步,快速开始

查看: 7160|回复: 0
打印 上一主题 下一主题

[其他] Sponge介绍与插件编写

[复制链接]
  • TA的每日心情
    开心
    2015-5-18 19:03
  • 签到天数: 1 天

    [LV.1]初来乍到

    跳转到指定楼层
    楼主
    发表于 2015-5-18 19:12:37 | 只看该作者 |0人打赏回帖奖励 |倒序浏览 |阅读模式
    一、Sponge介绍
          Sponge是一种新的开源服务端和客户端API,由Minecraft各个编程社区的协助而开发。而Sponge的目标用户是伺服主和想改装Minecraft的人。
          而Sponge仍然处于开发状态,预计11月会正式发布,目前已释出API Release(插件开发用,非伺服器)。


          Sponge官网: 按此
          Sponge API JavaDoc: 按此
          API 1.0 Release释出: 按此


          Q:我是服主,为什么我需要学习插件编写?
          A:其实插件编写并不只有插件师才需要学习,增加人流不能只靠着宣传,唯有提高伺服器的技术量才提高兢争力,难保有一天你需要自行修改插件呢?
          Q:我并没有学习过编程,此篇文章适合我吗?
          A:此篇文章主要帮助大家认识插件编程,均假设了各位并没有学习过相关知识,从零开始。

    二、JDK安装、Eclipse安装,Sponge编译JDK:
    下载地址:
    http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
    x32请下载jdk-8*-windows-i586.exe
    x64请下载jdk-8*-windows-x64.exe




    下载并安装后需要设置环境变数:
    (本人是较旧的JDK,但设置方法相同)
    首先找回你的安装位置:
    Spoiler:
    以我的为例,「C:\Program Files\Java\jdk1.7.0_55」




    如下图所示,输入「 ; 」+JDK位置+「\bin」 如:「;C:\Program Files\Java\jdk1.7.0_55\bin」


    按确定后完成。


    Eclipse:
    下载位置:http://www.eclipse.org/downloads/
    下载Eclipse IDE for Java Developers


    安装方法较简单,不作详细讲解


    Sponge编译:(若果不想自行编译,这裹有一个懒人方法,想知道就要看5秒广告噜:http://adf.ly/6430260/build )
    (我们需要的是spongeapi-1.1-SNAPSHOT.jar)
    首先到https://github.com/SpongePowered/SpongeAPI 按「Download ZIP」
    解压后运行「gradlew.bat」进行编译
    当编译完成后,就可以到「build/libs」文件夹中取成果了~

    三、Hello,World!
    首先开启Eclipse,然后会弹出这样的视窗:
    Spoiler:


    之后我们可以建立一个文件夹(WorkSpace)来保存我们的文件,再按OK。
    当弹出了下图的视窗后,按下图指示。
    Spoiler:


    然后把之前编译好的(或者是下载的→_→)spongeapi-1.1-SNAPSHOT.jar放入WorkSpace中
    放好后就开始建立我们的JavaProject:
    Spoiler:

    然后选择你的spongeapi-1.1-SNAPSHOT.jar,再按Finish。
    再在左边的Package Explorer中点选HelloWorld的src,再右键新增Class
    Spoiler:



    再在Package中输入helloWorld.common(也就是把这个新增的class放在文件夹helloWorld中的common文件夹)
    于Name中输入main(其实不一定要用main,也可以用其他名字)
    Spoiler:


    之后main.java应该会有以下的代码
    package helloWorld.common;

    public class main {

    }
    复制代码
    现在,我们在main class的前面增加一段Code

    package helloWorld.common;

    @Plugin(id = "HelloWorld",name = "HelloWorld", version="1.0.0")
    public class main {

    }
    复制代码
    这时,在@Plugin下面应该会有一条红色的曲线,这是提醒这段Code中出了错误
    Spoiler:

    原因是我们没有引用(参考)Sponge的Plugin类,首先,我们把滑鼠放在Plugin上,再选择Import "Plugin"来增加Plugin类的参考
    Spoiler:



    之后Eclipse就会为你增加一行Code了
    package helloWorld.common;

    import org.spongepowered.api.plugin.Plugin;

    @Plugin(id = "HelloWorld",name = "HelloWorld", version="1.0.0")
    public class main {

    }
    复制代码
    这时候我为大家解释一下@Plugin(id = "HelloWorld",name = "HelloWorld", version="1.0.0")这行Code的作用
    为什么要用@Plugin呢?他能够代替(也许?)plugin.yml的引导作用,因为Sponge不可能知道要从哪里开始运行这个插件,所以要用@Plugin作引导而当中的id,即内部用的名字。 name,即用作显示的名字。 version,也就是插件的版本了。


    Event:
    由此段起,由于Sponge仍然是残缺版,教学无法继续,因此将暂停Sponge部份的教学,开始JAVA的基础教学。

    一、Java基本概念
    (还是用水果作比喻比较容易xD)首先,假设以下这段Code: (纯虚构)
    Orange tom;
    复制代码
    这里的作用就是宣告有一只橙,名叫tom,但却没有说tom是哪一只橙。
    现在把Code改成:
    Orange tom = new Orange();
    复制代码
    那么这里就宣告了有一只橙,名叫tom,是一只新的橙(产生一只新的橙)
    Spoiler:


    现在,若果把Code改成这样的话:
    Orange jack = new Orange();
    Orange tom = jack;
    复制代码
    现在,有一只新的橙叫jack,而有只橙叫tom,他是jack的复制品
    也或有人会问,如果我把tom切掉,那jack也会被切掉吗?
    当然是不会,因为tom只是jack的复制品,就算其中一只被切掉,也不会对另一只有影响。


    运算子:
    加 + 大于,大于或等于 >,>= 或者
    ||
    减 - 小于,小于或等于 <,<= 递增 ++
    乘 * 等于,不等于 ==,!= 递减 --
    除 / 而且 &&

    if与else:
    if和else在编程中是一种十分基本的logic
    结构如下: (else部分有需要则写)
    if(条件)
    {
        //如果符合的话做什么
    }
    else
    {
        //如果不符合的话做什么
    }
    复制代码
    那么,条件要怎写呢?现在,我们要用上面的运算子来写条件
    条件例子:
    *1:int 是带正负号的整数用的,由-2,147,483,648 至2,147,483,647

    int a=10;
    int b=20;
    int c=5;
    //还记得橙的例子吗?这里宣告了有3个整数,叫a,b和c,分别是10,20,和5
    if(a=b)
    {
    }
    //大家以为这里会输出False(否)吗?不,这里会送你一个大大的Error,因为这里用了「=」,而没有用「==」
    if(a==b)
    {
    }
    //这里当然会输出False了
    if(a!=b)
    {
    }
    //True
    if(a>=b)
    {
    }
    //False
    if(a==0 || b>a)
    {
    }
    //这里会输出True,因为b>a成立
    if(a==0 && b>a)
    {
    }
    //这里会输出False,因为a==0不成立
    复制代码

    待更新


    打赏

    0

    收藏

    0

    支持

    0

    反对

    0

    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    您需要登录后才可以回帖 登录 | 加入最MC

    本版积分规则