0からMod

0から始めるMinecraftMod制作記 ~ #9 空飛ぶコンニャク

I did it!
I did it!
I did it!
ようやくやったぞーーーーーーー(;´Д`)!!!!!

武器を持ったらポーション効果発動メソッドきたーーーー!!
※1.7.10でforgeバージョンは1448です。

20160118_01
赤はマンゴーシュ。この時点ではインベントリスロットに入れると火炎耐性が付く。緑はコンニャク。手に持つと跳躍力上昇が付きます。

で、ふざけて跳躍力上昇レベルあげたところ、

20160118_02

無論、即死であるw

どんだけ飛ぶコンニャクやねんwww 実際にはマンゴーシュには「耐性」が付きます。コンニャクのほうは食べ物ですw

やる気出た(`・ω・´)

0から始めるMinecraftMod制作記 ~ #7 結局チュートリアルをやり直した

やはり英語のチュートリアルのほうが充実しているという感じ。この人の動画は1.8のmodチュートリアルもあるので助かる。

●コアクラス

package iYMTs_WeaponModCore;

import cpw.mods.fml.common.Mod;
import cpw.mods.fml.common.Mod.EventHandler;
import cpw.mods.fml.common.event.FMLInitializationEvent;
import cpw.mods.fml.common.event.FMLPostInitializationEvent;
import cpw.mods.fml.common.event.FMLPreInitializationEvent;
import cpw.mods.fml.common.registry.GameRegistry;
import iYMTs_WeaponMod.items.ItemKatana;
import iYMTs_WeaponMod.items.ItemWoodenDagger;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.init.Blocks;
import net.minecraft.init.Items;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraftforge.common.util.EnumHelper;

@Mod(modid = "iYMTs_weaponmod", name="iYMT's Weapon Mod",version="0.0.2")

public class IymtWeaponModCore
	{
	public static Item tamaHagane;
	public static Item craftedPlanks;
	public static Item katana;
	public static Item woodenDagger;


	public static final Item.ToolMaterial tamaHaganeMaterial = EnumHelper.addToolMaterial("tamaHagane", 3, 2000, 9.0F, 4.0F, 20);
	public static final Item.ToolMaterial caftedPlanksMaterial = EnumHelper.addToolMaterial("caftedPlanks", 1, 64, 2.5F, 0.5F, 10);


	    @EventHandler
	    public void preInit( FMLPreInitializationEvent event ) //アイテムとブロックの初期化・登録、コンフィグとハンドリング
	    {
	    	tamaHagane = new Item();
	    	craftedPlanks = new Item().setUnlocalizedName("ItemcraftedPlanks").setTextureName("iymts_weaponmod:crafted_plank").setCreativeTab(tabIYMTSWeaponMod);
	    	katana = new ItemKatana(tamaHaganeMaterial).setUnlocalizedName("Itemkatana").setTextureName("iymts_weaponmod:katana").setCreativeTab(tabIYMTSWeaponMod);
	    	woodenDagger = new ItemWoodenDagger(caftedPlanksMaterial).setUnlocalizedName("ItemWoodenDagger").setTextureName("iymts_weaponmod:wooden_dagger").setCreativeTab(tabIYMTSWeaponMod);

	    	GameRegistry.registerItem(tamaHagane, tamaHagane.getUnlocalizedName().substring(5));
	    	GameRegistry.registerItem(craftedPlanks, craftedPlanks.getUnlocalizedName().substring(5));
	    	GameRegistry.registerItem(katana, katana.getUnlocalizedName().substring(5));
	    	GameRegistry.registerItem(woodenDagger, woodenDagger.getUnlocalizedName().substring(5));
	    }
	    @EventHandler
	    public void Init(FMLInitializationEvent event)//レシピ・プロキシ・タイルエンティティ・エンティティ・GUI・パケットの登録
	    {
	    	GameRegistry.addRecipe(new ItemStack(tamaHagane), new Object[]{"BBB","BIB","BBB",'B',Blocks.sand,'I',Blocks.iron_block});
	    	GameRegistry.addRecipe(new ItemStack(craftedPlanks,2), new Object[]{" P ","P P"," P ",'P',Blocks.planks});
	    	GameRegistry.addRecipe(new ItemStack(katana), new Object[]{"  T"," T ","C  ",'T',tamaHagane,'C',craftedPlanks});
	    	GameRegistry.addRecipe(new ItemStack(woodenDagger), new Object[]{"A","S",'S',Items.stick,'A',craftedPlanks});
	    }
	    @EventHandler
	    public void postInt(FMLPostInitializationEvent event)
	    {

	    }

	    public static CreativeTabs tabIYMTSWeaponMod = new CreativeTabs("tabIYMTSWeaponMod"){
	    	@Override
	    	public Item getTabIconItem(){
	    		return new ItemStack(woodenDagger).getItem();
	    	}
	    };
	}
 
 
 

武器に関しては新しく素材を追加している。できれば基本値自体をいじりたいんだけど(※前できてたのにいじりすぎて消えたからな…(;´Д`))。setUnlocalizedNameをアイテムのクラスにぶっこんで文字量減らしたい(´・ω・`)

こんな感じである。

20160111_05

20160111_01

20160111_02

20160111_03
20160111_04

武器の威力はまた調整します。

20160111_00
なお、最初に刀のテクスチャが逆で逆刃になったのはご愛敬(´・ω・`)

0から始めるMinecraftMod制作記 ~ #6 木のショートソードとダガー実装(※1.7.10

・resources内のフォルダ名は全部小文字(※lang内除く)。これしないとテクスチャエラーが出る。それとフォルダ階層の名前かと思ったが実際は、.setTextureName(“MODのID:テクスチャファイル名”);だったという話。

20160117_01

そんなわけで木のショートソードを実装したわけですが、威力が木の剣と同じで意味が無い(´・ω・`)ToolMaterialで威力が決定されてしまうし、マイナスの値は0として実行されてしまう。また、木のダガーを実装したが投擲がうまくいかない。ようやく知ったforgeの中身見て雪球のclassをコピーしたがうまくいかない。難読化のせいでメソッドが何がどーやらわからんのである。

…そして、今頃MCPの存在を知ったのであった(;´Д`)こりゃー初心者には分からんわいw

こちらを参考に早速MCPを解凍してセットアップしてー。

♪JAVA_HOーーーーーーーーーーーーーーーーーーME!!!!!!!!!
※タマホームのノリで

である(;´Д`)またgradlew.batに直接指定をぶち込むことに。できたらできたで今度はプロジェクトファイルが開けない。無理矢理古い方からeclipseフォルダへワークスペースぶち込んだらワークスペースが復活。こんなんでいいのか…(´・ω・`)
※forgeのバージョンを1448にしてぶち込んだらなぜか失敗したので再ビルドしたという話

でもって難読化解読したけど…やっぱ無いのあるのね…。少しはましになったかと思いながらもプログラミング。ほとんどeclipseが自動入力してくれたけど。

結果、

20160108_01

20160108_02

武器の威力がばっちり反映されたぜぇ(`・ω・´)! おいらがんばった!

新規にItemDaggerクラスとItemShortSwordクラスを作って設定いじったらできた。問題はこっからで、攻撃速度と特殊攻撃を実装できなきゃ意味がない…。ほかのクラスもつけないとマルチで使えないしなぁ。

また一つ壁にぶち当たる。

0から始めるMinecraftMod制作記 ~ #5 1.7.10と1.8.8、そしてwin10

いろいろと考えることもあり、win10ノートPCのみで両方のEclipseのWorkspaceを構築した。Win7のデスクトップPCでもやろうと思えばやれるのだが、システムディスクを入れ替え予定なのでノート上で作業することにする。

やはり1.7.10はmodが充実していることもあり、現状では最適ではなかろうかと思うのである。しかしながら、1.8.8も手を出している人が少なく、やっぱりチャレンジしたいとも思う。

1.7.10の方はこちらを参考にストレートに構築。様々なサイトで構築方法が載っているが、この方のやり方が良いようだ。setupDecompWorkspaceをやってない人もいたので。これについてはyoutubeの環境構築動画(※英語)を見ながらほぼ同じことをしていた。やはり実際にmodを作り更新している人が安心できる。問題なくclient、server共に起動し1.7.10の環境構築完了。


あとは環境変数のpathにD:\gradle-2.10\bin;を追加したぐらいだろうか。
※おいらはDドライブでやってます。

一方1.8.8だが、素直に手順通りやったら「♪JAVA_HO----------ME!!」と怒られたので、gradlew.bat内の%JAVA_HOME%を直接指定にして書き換えることで完了。

clientを起動するとこの画面が出る。
1_8_8_01
そう、Beta版なのだ(´・ω・`)MCreatorのforgeのバージョンに合わせているためしょうがないと思うなど。MCreatorが吐くソースコードを参考にしたいのよね。

やっぱり1.7.10がメイン開発環境になるのかなと思ったりするのです。

やっと整ったかな…(;´Д`)?

しかし、win10は思ったより使いやすい…。皆がいうほど悪い印象はない。慣れれば実にいい、が、自動更新が手動にできんのがなー。(※Home版です)

0から始めるMinecraftMod制作記 ~ #4 結局1.8.8へ

1.7.10で武器とブロックを作り、ブロックのテクスチャが反映されたのに武器が反映されず、ググっても分からん始末。.setTextureName(“hogehoge”)がどうしてもエラーになってしまい、おどりゃーって感じになる。で、EnumHelper辺りを理解したところで断念。

分からんなら仕様も変わる1.8.8行っちまえーってことでMCreatorを1.6.2にして1.8.8のmod作り始めました。forgeがまだバグあるみたいでどうなるかわかりませんがMCreatorが出力するコードを参考にすればなんとかなるでしょう。多分。

※そもそも1.7.10もMCreatorのコードを分解する形で勉強していた

地道にやりましょうか…(´・ω・`)

そういや、某氏から「18禁ならトップページにクッション置こうよ! これじゃセウトだよ!(;´Д`)」とか言われたのでしょんぼりである(´・ω・`)しょーがねーなー

・23:46追記:ヽ(´ー`)ノをクリックしたまへ。これで文句なかろう
※クッキーで判断するスクリプト入れた。しばらく残すがあとで消す