2018年4月25日星期三

Chapter 1 - ECE Principle 事件,条件,效果


请看了上一篇再来哟



ECE Principle ECE原理

什么是 ECE Principle ?它是我自订的一个原理用在 Skript上的,何为 ECE?
  1. Events 事件
  2. Conditions 条件
  3. Effects 效果
Skript脚本编程就有如你的人生什么事件达到了什么条件就会有什么效果。这个原理恰好跟Skript相同。接下来给你看个例子
on break of glass: // 事件  - 在打破玻璃的时候
    if player's name is "GlassMan": // 条件  - 玩家的名字是 "GlassMan"
        drop glass  // 效果  -  掉落玻璃

当然你的人生会有许多的条件许多的效果 也当然脚本里一个事件 多个条件与多个效果都能。刚刚说了关于 ECE Principle 过后还有两样 Skript 重要的东西是
  1. Expression 表达
  2. Types 类别
Expression的例子就在 上面的程式码里有 player's name 这是一个 expression 表达着 玩家的名称 当然你要放为 字体也能 只需要 "玩家的名字 %player's name%" 他就会return 玩家的名字.

Types 的例子也有在上面的程式码,glass 是 玻璃 你也能用 ID 来指定 但是不鼓励 (我也不知为啥 ),这就只是分类一些 物品,方式,方法,点击类型之类的.

Variables 变数

那五个都理解了后就能到 最重要的部分了 Variables 变数,变数是可以 数值可以让你随意改变的 所以才叫变数。在 Skript 的变数只有两种类型 "列表变数" 与 "变数"  和 两种 存档方式 "暂存变数" 与 "永存变数"。

永存变数

{variables} // 这类型的变数通常会列为 Global Variables 全球变数 因为设定了到哪都能用 {list_variables::*} // 这如上只是他是 列表 能存档多个 变数 这样的变数都会存档在一个在 /plugins/Skript/variables.csv 的档案里面

暂存变数

{_variables} // 这样的呢就是 他们只能在你 宣告它的 那个事件 或条件里使用 {_variables::*} // 暂存也能用 列表变数 这样的变数在你的事件运行完之后就会自动删除了

善用指定变数

若以以上的设定要设定 指定变数在指定玩家身上的话 能考虑使用 {var.%player%} 用 player's name 或者 player's uuid 来指定 就能做到每个玩家都有自己的变数,这边有点像 Object的逻辑,就如每个object有自己的特殊名字或者id。

Options 设置

这算是一个原设定,只要写了就能在脚本里面使用,就能在脚本里无限处使用。

options:
    π: 3.142   // 字体 : 数值 或 字体 之类的设定

command /test:
    trigger:
        send "{@π}"

设定了 options了过后要采用它就用 {@名字} 他就会replace成 那个变数 这种情况不需要 %% 让他宣告成字体 直接 {@π} 就可以了.

Startup & Unload Skript 读取与卸载脚本

这我没什么例子 我就拿了 Skript原作人的例子

on script load:  // 脚本读取的时候
 set {running.%script%} to true
on script unload:  // 脚本卸载的时候
 set {running.%script%} to false

善用这两个事件 设定读取和释放不必要的变数之类的是很不错的哟,因为有些人只是卸载一些 脚本 不是所有 所以 没设定的话东西都会残留在伺服 造成卡顿。

最后

如你说见 脚本只需要要 英文语法好就很好开始了 当然 ECE Principle 做到很好的话 就能很好的 开发脚本咯 ~ 。如果以上的东西你都会了 那很好你已经成为了脚本师!欢迎加入爆肝党!

请耐心等待续篇 (Chatper 2 - 指令与循环 Command and Loops)

2018年4月24日星期二

Chapter 1 - Java Plugin 插件


请看了上一篇再来哟




我个人是使用 Esclipe IDE 所以图片与影片都是 Esclipe IDE 的。IDE差别不怎么大 只是介绍如何开新Project & Package & Classes。

进入正题 > 开启IDE会出现类似下图的 界面

接着点开左边右上 File 下面的小窗口就会出现应该要有的 工具栏 之类的, 过后在 Package Explorer栏里面 右键点击 就会出现一个列表选择 New -> Java Project 入下图1 就会出现类似图2的界面
图 1
图 2
ProjectName 输入你要的插件名字或者别名 JRE 里 选择 Use an environement JRE: 就好 若要指定其他版本的 Java 才选择第二个 之后Finish 就创建 Project 完成!

创建完毕后就会出现这样的 Project 接着就加入 Minecraft的 Server.jar

如右图 Configure Build Path 的界面右边有个 Add External JARs 然后选择 下载了的 Server.jar

加了Jar过后就能开始编程了 右键点击 src 文件夹然后 选择 New > Package 写入你自己的 package名字通常都是 me.oska.tutorial 这个格式 me.名字.插件名 看你个人喜好怎么放

加入了Package后再右键点击package 后 选择 New > Class 写入你的Class的名字 因为是 MainClass 所以我就放 TutorialMain.
开了之后就会有这样的界面 界面上会有 package 就是你创建了的 package 与 public class TutorialMain 是你创建了的 class 的name

public 算是 Modifier 而会有两种Modifier
  • Access Control Modifiers
  • Non Access Modifier

Access Control Modifier

这个Modifier 分别为 四个等级 package 里的 classes 使用 ( internal ) , class 自己使用罢了 ( private ) , 能给全世界使用 包括别人加入你所创建的插件档案 ( public ) , package 和 subclasses 使用罢了 ( protected )
  • internal
  • private
  • public
  • protected

Non Access Modifier

这个Modifier 分别为四种  static modifier for 创建 method 和 variables, final modifier for finalizing ( 最终化 ) classes, method 与 variables  也就是将它固定 所以不能被更改 一旦 finalize了过后, abstract modifier for 创建 abstract classes and methods 让别的classes 能 extends (继承)它所拥有的 methods. synchronized and volatile modifier for 多线程编程使用。
  • static
  • final
  • abstract
  • synchronized
  • volatile

讲解了Modifier过后 就到 extends , implements 和 import的解释了 如右图

import 的意思是进口 也就是 让插件能使用 该class的 method 之类的

extends 的意思就是继承 也就是让插件继承 abstract class 的 method (上面有说到)但是记得 一个 Class 只能extends 一个 Abstract Class

implements 的意思就是链接接口 也就是 让插件 链接该接口并且将他用于自己的方式 implements 是for interface class , 一个 class能 implements 很多个 interface


介绍完毕就是进入正题 开发插件如上图 extends 了 JavaPlugin 的 Class 你就能 开Method onEnable() 和 onDisable() 这两个method 的用途是 当插件读取时 与 当插件禁用时 而它们上面的 @Override 叫 annotation 都带有 '@' 这个符号而 Override 是 覆盖的意思 在这边就是 覆盖掉原本的 onEnable 和 onDisable method.

温馨提示 :
Overload 和 Override 是不一样的东西记得
一个是 过载 一个是 覆盖不要搞错哟

这次我们会先学习插件的基本如何制作一个插件所以编程部分比较少,如下图写入 读取时 发送讯息到 后台 与 移除时 发送讯息到后台

package me.oska.tutorial;

import org.bukkit.Bukkit;
import org.bukkit.plugin.java.JavaPlugin;

public class TutorialMain extends JavaPlugin 
{
 @Override
 public void onEnable()
 {
  Bukkit.getServer().getLogger().info("Tutorial Plugins Loading ...");
 }
 
 @Override
 public void onDisable()
 {
  Bukkit.getServer().getLogger().info("Tutorial Plugins Loading...");
 }
}

我们用 Bukkit.getServer().getLogger().info(string str) 来发送讯息到后台 ,你会好奇为什么 有些 method能直接 Bukkit.getServer() 有些不能。因为 static class 能直接使用 例如 Bukkit.getServer() 而 普通的 class呢 必须要有 object 存在 例如 new Bukkit().getServer() new 这个只要就是创建 Object使用的.

写入了之后 你能到 Project 那个文件夹 点击 右键 New > File > plugin.yml . 每个插件都必须要有一个 plugin.yml 来读取 因为原设是读取 plugin.yml 里的一些设定 才能读取这个插件,许多设定也能在 plugin.yml 设定 例如 permission, commands, depends, 之类的. 下图就是个 plugin.yml 的例子

main: me.oska.tutorial.TutorialMain
name: TutorialPlugin
version: TUTORIAL-0.1
description: description of the plugins
author: Oskang09
authors: [Oskang09, iRegalia]
website: https://oskang09.blogspot.my
depend: [WorldEdit, Towny, AnotherPlugin]
prefix: TutorialLogging
softdepend: [Essentials, Vault, AnotherPlugin]

main : 是最重要的东西 插件读取的 MainClass 位置 必须连 package也写进去 但是不需要任何的 extension 例如 me.oska.tutorial.TutorialMain

name :生成的 DataFolder() 的名字会是这个名字 这东西过后会说到在 Chapter 4

version :插件版本 这你能以你喜欢的写 例如 v0.1 , v0.2 之类的

description : 插件的介绍 一样随你怎么写

author : 作者的名称咯

authors : 可能插件是多个作者的就能用这个 格式如上图

website :网页网址

depend :依赖于某个插件 必须写对插件名 一旦插件不存在 你的插件就会拒绝读取 写错就无效了 (当然也能用 编程的 方式探测)

prefix : 插件每一次的 log , info , warning 显示的前缀

softdepend :你的插件会在这些插件读取后才进行读取 (可能要依赖那些插件做一些设定才需要这个softdepend)

写好了之后就是 如何 Export JARs 你到 Project 点击右键 然后 Export > Java > JAR file 选择了后选择 next 然后 写入export的路劲 与 名字到  JAR file : 的格子 然后点 Finish. (如下图)


Export好了之后就是开启你的伺服器 并且等待他读取。

如果显示和上图一样的东西就代表你完成了第一个插件!欢迎加入爆肝党(?)好像不是这样,你也能到我的 Github 查看源代码。

请耐心等待续篇 (Chatper 2 - Registering Command 加入指令)


2018年4月23日星期一

Skript 编程插件介绍


简介

Skript 脚本插件,它允许使用者编写自己的系统并用于服务器系统当然这会比其他正规编写语言的性能来得慢,这些东西都是有一好没有二好。他的编写方式只需要简单的英文语法,下图是个简单的例子

on break of glass:
    drop glass

翻译后 :在打破玻璃的时候 > 掉落玻璃

当然还有许多用途,例如制作指令,自定事件之类的 让Skript 也能与Java 做出一样的系统 不会说 Java做得到 但 Skript 做不到的这种情况 因为 Skript 只是从 Java 编译过来。

关于Skript的网页

关于 Skript的 IDE


有些插件不适配的 也许是没有API 不然就是没人做Addon 若需要可以 PM 我 ,若多人要求我就会做了丢出来让大家使用哟.

祝大家 开发快乐. 爆肝啦.


2018年4月21日星期六

Java 编程前置工具


第一步

在开发之前都需要设定好

下载好了 直接安装就好了 ,如果不行的话 (有些是更新过后环境变数就坏掉了的)可以到
Environment Variables 进行编辑 (下图开启了 然后点击 进入那个界面)
进入到这个界面后到下面的 System Variables 寻找 Path ,然后 Edit 就会有多一个界面再加入你安装好的 jdk & jre的路径  etc. C:\Program Files (x86)\Java\jdk1.8.0_152\bin 然后 OK 就好了.


第二步

设定好 JDK 与 JRE 之后就是到 IDE了. 什么是IDE ?
IDE 是 Integrated Development Environment 集成的开发环境,在IDE的用途是 让开发者能在IDE上 编辑源码 ,快速生成开发包,调试器Debugger ,智能代码等等的,有了它开发都变得轻松了.在 Java编程通常都是 使用 Esclipe 与 Intellij IDEA 
当然我个人使用 Esclipe 你能到网页寻找图片看那种你比较喜欢 (?)

额外篇

1) 若你想使用资料库 个人建议 XAMPP 架设 Local Database ( MySQL ) 甚至其他更多的 我个人只用 MySQL
2) 若你怕代码在电脑会不见消失的话建议上载到 Github 之类的东西,他能保存你的代码。

3) 一些相关于 Minecraft 的网页
祝大家 开发快乐. 爆肝啦.