@UIController("main")publicclassMainController {publicBukkitView<?,?> index(Player player) {String greeting ="hello, "+player.getName() +"!";returnnewBukkitView<>(MainView.class, greeting); } @PostConstruct//新增標注以挂鈎控制器的生命周期publicvoidonControllerCreated(Player player){ // 自定義方法也可按需定義填入參數player.sendMessage("controller has been created."); }}
生命周期掛鉤在每個控制器只能每個狀態挂鈎一個方法,且必須使用 void 作為返回類型。
界面的生命週期掛鉤
除了控制器之外,界面也擁有生命周期挂鈎,他們分別如下:
生命周期
使用標註
更新界面之後
@PostUpdateView
銷毀界面之前
@PreDestroyView
範例如下
@UIController("main")publicclassMainController {publicBukkitView<?,?> index(Player player) {String greeting ="hello, "+player.getName() +"!"; // 將顯示玩家的名稱returnnewBukkitView<>(MainView.class, greeting); } @MyOwnFilter(type =ClickType.MIDDLE) // 中鍵點擊才會被觸發 @ClickMapping(pattern ='A', view =MainView.class)publicvoidonClickA(Player player) {player.sendMessage("activated !!!!"); } @PreDestroyView(MainView.class)publicvoidonDestroyView(Player player){player.sendMessage("pre destroy view for main view"); } @PostUpdateView(MainView.class)publicvoidpostUpdateView(Player player){player.sendMessage("updated to main view"); }}
界面生命週期的自定義方法必須使用 void 作為返回類型。
除此之外,相同界面的生命週期狀態掛鉤方法只能使用一個進行處理,例如
@PostUpdateView(MainView.class)publicvoidpostUpdateView(Player player){player.sendMessage("updated to main view"); } @PostUpdateView(MainView.class)publicvoidpostUpdateView2(Player player){player.sendMessage("updated to main view 2"); }