快速開始
假若你使用 Maven,則添加以下的依賴:
<repositories>
<repository>
<id>eld</id>
<url>https://maven.pkg.github.com/ELDependenci/eldependenci-mvc</url>
</repository>
</repositories><dependency>
<groupId>org.eldependenci</groupId>
<artifactId>eldependenci-mvc</artifactId>
<version>{{版本}}</version>
<scope>provided</scope>
</dependency>完成後,就可以在你的插件中新增一個 Controller Class。
@UIController("main") // controller 的 id
public class MainController {
}要完成設置一個 Controller ,你必須擁有一個初始界面,你可以透過繼承 View<T> 去創建一個界面。
界面接口 View<T> 的 T 代表了數據模型的類型,從實現的方法 renderView 中可看到,你將會使用該數據類型一同渲染界面。
從上述的渲染中,將會創建一個名為 Main View 的一行界面,且在中間欄位會有一個鑽石方塊物品,其名稱則根據由 Controller 傳過來的數值來顯示。
擁有了一個界面之後,那麼現在你可以把它作為你的控制器初始渲染的界面:
這樣,上述提及的鑽石方塊物品的顯示名稱將會是 hello world!。
你也可以新增自定義的方法參數,例如
你也可以回傳異步界面,例如
最後,到 Main class 中,取出 MVCInstallation 然後註冊你的 Controller,這樣就完成了。
使用
使用極其簡單,可透過 注入 InventoryService 使用。
界面互動處理
目前本框架可以處理的界面有兩種,第一種為點擊事件,第二種則為拖拽事件。
要處理這些事件,你需要在 Controller 新增一個自定義方法,然後標註 @RequestMapping
這樣,點擊鑽石方塊的時候將會向玩家發送消息。
除此之外,你也可以直接使用 @ClickMapping 和 @DragMapping 來簡化標註需要輸入的參數,例如
不指定界面的互動處理
v0.1.4 之後,你可以不指定界面來捕捉該 Controller 內所有界面的事件傳入。
跳頁處理
首先,創建一個要被跳轉的界面。
然後,在 Controller class 中指定 pattern A 進行處理,並回傳 SecondMainView 。
這樣,當用戶點擊鑽石方塊的時候,將會傳送訊息並跳轉到 SecondMainView 上。
跳轉到其他 Controller
比起在同一個 Controller 底下傳遞界面,有時候你可能需要傳遞到別的 Controller 去進行界面渲染。
假設你欲傳遞到如下的 Controller:
則定義點擊處理的時候,需要回傳 BukkitRedirectView
這樣,當你點擊鑽石方塊的時候,將會跳傳到 AsyncController 然後開始渲染其初始界面。
Controller 之間的數據傳遞
相信有一點你可能會注意到的是,跳轉到別的 Controller 時,使用 BukkitRedirectView 並沒有可以輸入數據模型的參數,那 Controller 之間該如何傳遞數據?
考慮到這一點,我們受啟發於 ASP .NET / SpringBoot 等 Restful framework,創建了 UISession 這個容器。
UI Session
UI Session 類似於 HttpSession,但基於 Minecraft 打開界面者必是玩家,因此沒有匿名 Session 一說。
UI Session 的生命週期如下:

UI Session 從玩家打開第一個界面,到玩家關閉最後一個界面之間一直保持單例,因此可以用來負責數據的傳遞。
然後,便可以在另一個 Controller 透過 UI Session 取出數值
UI Session 其可操作的方式大致上跟 Map 一致:
最后更新于
这有帮助吗?