*** mcp910\src\minecraft\net\minecraft\client\Minecraft.java Sat Aug 22 21:31:27 2015 --- Minecraft.java Sat Aug 22 21:34:50 2015 *************** *** 184,191 **** --- 184,257 ---- import org.lwjgl.opengl.PixelFormat; import org.lwjgl.util.glu.GLU; + import java.io.FileWriter; + public class Minecraft implements IThreadListener, IPlayerUsage { + /** 有効なアイテムIDのリスト */ + private static final List ITEM_ID_LIST=damageList(0,197,256,431,2256,2267); + + /** アイテムIDと有効なダメージ値のリスト */ + private static final Map> ITEM_DAMAGE_LIST=new HashMap>(){{ + put(-1,damageList(0,0));//以下にないすべてのアイテム + put(1,damageList(0,6));//石 + put(3,damageList(0,2));//土 + put(5,damageList(0,5));//木材 + put(6,damageList(0,5));//苗木 + put(12,damageList(0,1));//砂 + put(17,damageList(0,3));//原木 + put(18,damageList(0,15));//葉 + put(19,damageList(0,1));//スポンジ + put(24,damageList(0,2));//砂岩 + put(31,damageList(0,2));//草 + put(35,damageList(0,15));//羊毛 + put(38,damageList(0,8));//花 + put(43,damageList(0,9,15,15));//重ねたハーフブロック + put(44,damageList(0,15));//ハーフブロック + put(95,damageList(0,15));//色付きガラス + put(97,damageList(0,5));//石レンガモンスターエッグ + put(98,damageList(0,3));//石レンガ + put(125,damageList(0,5));//重ね木材ハーフブロック + put(126,damageList(0,5,8,13));//木材ハーフブロック + put(139,damageList(0,1));//丸石の壁 + put(144,damageList(0,5));//頭・頭蓋骨 + put(155,damageList(0,4));//ネザー水晶ブロック + put(159,damageList(0,15));//色付き粘土 + put(160,damageList(0,15));//色付き板ガラス + put(161,damageList(0,1,4,5,8,9,12,13));//葉 + put(162,damageList(0,1));//材木 + put(168,damageList(0,2));//プリズマリンブロック + put(171,damageList(0,15));//カーペット + put(175,damageList(0,5));//丈の高い草 + put(179,damageList(0,2));//赤砂の砂岩 + put(181,damageList(0,0,8,8));//重ねたハーフブロック + put(182,damageList(0,0,8,8));//ハーフブロック + put(263,damageList(0,1));//石炭 + put(322,damageList(0,1));//金のリンゴ + put(349,damageList(0,3));//生魚 + put(350,damageList(0,3));//焼き魚 + put(351,damageList(0,15));//染料 + put(373,damageList(0,0x9fff));//ポーション + put(397,damageList(0,4));//頭 + put(383,damageList(50,68,90,101,120,120));//スポーンエッグ + }}; + + /** 指定された範囲のダメージ値のリストを作る */ + private static final List damageList(int... between){ + if(between.length % 2 == 1){ + throw new IllegalArgumentException("引数の長さ["+between.length+"]は偶数でなければいけません。"); + } + List result = new ArrayList(); + for(int i=0;i damageList; + if(ITEM_DAMAGE_LIST.containsKey(id)){ + damageList=ITEM_DAMAGE_LIST.get(id); + } + else{ + damageList=ITEM_DAMAGE_LIST.get(-1); + } + + //ダメージ値を最大値まで1つずつ増やしつつループ + for(int damage:damageList){ + + //ポーションの無効なビットが立っているダメージ値は無効なアイテムなので無視する + //なお無効なビットは7~13ビット目と15ビット目なので、1011111110000000(2)=49024(10) + if(id==373 && ( 49024 & damage )!=0){ + continue; + } + + StringBuilder sb=new StringBuilder(); + + //IDを連結 + sb.append(Integer.toString(id)); + sb.append("\t"); + + //ダメージ値を連結 + sb.append(Integer.toString(damage)); + sb.append("\t"); + + try{ + //アイテムを作る + Item item=Item.getItemById(id); + ItemStack is=new ItemStack(item,1,damage); + + //アイテム名を連結 + sb.append(is.getDisplayName()); + sb.append("\t"); + + //アイテムの説明を取得する + List tips=is.getTooltip(this.thePlayer, false); + + //アイテムの説明を連結 + for(Object str:tips){ + sb.append(str.toString()); + sb.append("\t"); + } + } + catch(Exception e){ + sb.append(e.toString()); + } + + //改行を追加 + sb.append("\n"); + + //ファイルに書き出す + file.write(sb.toString()); + } + } + + //ファイルを閉じる + file.close(); + } + catch(Exception e){ + thePlayer.sendChatMessage("エラーが発生しました。"); + thePlayer.sendChatMessage(e.toString()); + } + + //追加部分ここまで + ////////////////// + if (!this.thePlayer.func_175149_v()) { this.thePlayer.dropOneItem(GuiScreen.isCtrlKeyDown());