【minecraft】自作カスタムヘッドURLの作り方
はじめに・・・
Minecraftでは建築などに用いられるカスタムヘッドというものが存在する。
プラグイン開発をしているとこれがとても便利なのでその使い方を説明しておく。
それを自作する方法があるのでそれを紹介していく。
1.まずはスキンを描こう。
描くのは頭部のみ。
簡単でしょ?
まずは以下のスキンをダウンロードして描いてね。
[Steave] [Alex]
完成したら自分のMinecraftアカウントに割り当てましょう。
2.UUIDを取得
MinecraftにはMCIDとは別にそのアカウントにあてられた変更できないUUIDというものがあります。
それを取得する必要があるのでNameMCにアクセスしてMCIDで検索します。
名前 | UUID | サーバーアドレス | スキン
という部分に自分のMCIDを書き込み検索してください。
たいてい1項目しかヒットしませんがもし複数ヒットした場合は自分のプロフィールを選択してください。
Minecraft プロフィール
内のUUIDの2段目、-
で区切られていないほうをコピーしておきましょう。
3.スキンを取得
<UUID>
を先ほどコピーしておいたものに置き換えURLにアクセスします。
https://sessionserver.mojang.com/session/minecraft/profile/<UUID>
{"id":"1c2b6991e8ce4e5db4d8ec3f0cdc5f8e","name":"Monster2408","properties":[{"name":"textures","value":"eyJ0aW1lc3RhbXAiOjE1ODE0NDIzNTI2OTksInByb2ZpbGVJZCI6IjFjMmI2OTkxZThjZTRlNWRiNGQ4ZWMzZjBjZGM1ZjhlIiwicHJvZmlsZU5hbWUiOiJNb25zdGVyMjQwOCIsInRleHR1cmVzIjp7IlNLSU4iOnsidXJsIjoiaHR0cDovL3RleHR1cmVzLm1pbmVjcmFmdC5uZXQvdGV4dHVyZS80ZDQ5NzFiNzFlMzBlMzJjNGJkNzY5YWEzMTk5Y2U3YmJmNmU1YmQ2YzlmNGYxYjAyNjEzNzkyYmQ4MzJkOWUwIn19fQ=="}]}
こちらがわたくしの取得したものですが、"value"
というものが含まれております。このあとの"
から"
の間をコピーします。
BASE64にデコード
BASE64にアクセスします。
Type (or paste) here...
に先ほどコピーしたIDを貼り付けます。
< DECODE >
というボタンをクリックして下のボックスるからhttp://
から始まるURLを取得します。
私が取得したURL↓
http://textures.minecraft.net/texture/c30a08a2e7d77cc58c2ef05b18560f5abcc45a04c6ec38f76b43135aa36db034
実際に使用してみる
CustomHead.java
import com.mojang.authlib.GameProfile;
import com.mojang.authlib.properties.Property;
import org.apache.commons.codec.binary.Base64;
import org.bukkit.Material;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.SkullMeta;
import java.lang.reflect.Field;
import java.util.UUID;
public class CustomHead {
public static ItemStack getSkull(String url) {
ItemStack head = new ItemStack(Material.SKULL_ITEM, 1, (short)3);
if(url.isEmpty())return head;
SkullMeta headMeta = (SkullMeta) head.getItemMeta();
GameProfile profile = new GameProfile(UUID.randomUUID(), null);
byte[] encodedData = Base64.encodeBase64(String.format("{textures:{SKIN:{url:\"%s\"}}}", url).getBytes());
profile.getProperties().put("textures", new Property("textures", new String(encodedData)));
Field profileField = null;
try {
profileField = headMeta.getClass().getDeclaredField("profile");
profileField.setAccessible(true);
profileField.set(headMeta, profile);
} catch (NoSuchFieldException | IllegalArgumentException | IllegalAccessException e1) {
e1.printStackTrace();
}
head.setItemMeta(headMeta);
return head;
}
}
import com.mojang.authlib.GameProfile;
import com.mojang.authlib.properties.Property;
import org.apache.commons.codec.binary.Base64;
import org.bukkit.Material;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.SkullMeta;
import java.lang.reflect.Field;
import java.util.UUID;
public class CustomHead {
public static ItemStack getSkull(String url) {
ItemStack head = new ItemStack(Material.SKULL_ITEM, 1, (short)3);
if(url.isEmpty())return head;
SkullMeta headMeta = (SkullMeta) head.getItemMeta();
GameProfile profile = new GameProfile(UUID.randomUUID(), null);
byte[] encodedData = Base64.encodeBase64(String.format("{textures:{SKIN:{url:\"%s\"}}}", url).getBytes());
profile.getProperties().put("textures", new Property("textures", new String(encodedData)));
Field profileField = null;
try {
profileField = headMeta.getClass().getDeclaredField("profile");
profileField.setAccessible(true);
profileField.set(headMeta, profile);
} catch (NoSuchFieldException | IllegalArgumentException | IllegalAccessException e1) {
e1.printStackTrace();
}
head.setItemMeta(headMeta);
return head;
}
}
あとはCustomHead.getSkull("URL")
で取得するのみ。
さいごに
暇があったらコマンドで取得する方法調べときます(その時は追記します。)
じゃあ、おつ~
Author And Source
この問題について(【minecraft】自作カスタムヘッドURLの作り方), 我々は、より多くの情報をここで見つけました https://qiita.com/meoto2408/items/9d29391447edc21b9fe1著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .