進入到倒數的階段,預計會再完成一個有關實體AI的功能與應景的模組。
有沒有想要更了解的功能或是看到有趣的模組想要分享呢?
請留言在下方吧!
今天我們講一個小功能,但是可以讓你在遊戲內說話的時候與眾不同!
還記得我們在[Day3]讓打破方塊會產生訊息嗎?關於方塊的訊息產生的程式碼:
.addChatComponentMessage(new ChatComponentText("Congratulations! You broke a block!"));
建立一個ChatComponentText
的物件,然後把訊息文字放進去就完成了。當我們想要文字有不同的顏色,只要在文字前面放上EnumChatFormatting
物件就可以了,例如:
new ChatComponentText(EnumChatFormatting.DARK_PURPLE + "Congratulations! You broke a block!")
就會產生深紫色的文字訊息,就像我們之前做的一樣。
但,一句話只能有一個顏色嗎?
Utils
。我們先到com.ithome.mymode
套件目錄下,建立一個叫做Utils
的類別檔案:rainbowString
的方法,傳入與傳出都是字串:
public static String rainbowString(String str) {
}
EnumChatFormatting
找尋其他你覺得有趣的顏色:
public static String rainbowString(String str) {
int stringLength = str.length();
if (stringLength < 1) {
return "";
}
StringBuilder returnStr = new StringBuilder();
Random r = new Random();
EnumChatFormatting[] colorChar =
{
EnumChatFormatting.RED,
EnumChatFormatting.GOLD,
EnumChatFormatting.YELLOW,
EnumChatFormatting.GREEN,
EnumChatFormatting.AQUA,
EnumChatFormatting.BLUE,
EnumChatFormatting.LIGHT_PURPLE,
EnumChatFormatting.DARK_PURPLE
};
for (int i = 0; i < stringLength; i++) {
returnStr.append(colorChar[r.nextInt(colorChar.length)]).append(str.substring(i, i + 1));
}
return returnStr.toString();
}
BlockBreakEvent
事件類別,將產生訊息方塊的地方加上我們的彩虹文字方法:
@SubscribeEvent
public void sendMessage(BreakEvent event) {
// 取得打破方塊的玩家資訊
event.getPlayer()
// 加入一個訊息到聊天室窗中
.addChatComponentMessage(
// 定義訊息內容為:彩色文字
new ChatComponentText(Utils.rainbowString("Congratulations! You broke a block!"))
);
}
BlockBreakEvent
設定值更改為True
才會有效果)。到處去打破方塊,看看你的世界是否也變成彩色了吧!若有興趣的人也可以自由將這個"效果"應用在所有的文字上,例如: