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