読者です 読者をやめる 読者になる 読者になる

Just $ A sandbox

プログラミングと計算機科学とかわいさ

minecraft 1.11 MOD開発メモ

1.11準拠のMOD開発に関するメモ
詳しいことは自力で調べてね的なスタンス

概要

  • proxyを用意して、common proxy側にMOD本体の処理、client proxyに描画関係の処理をかくようにする
  • ゲーム内のオブジェクトの管理はすべてナントカregistryがやってくれてる だいたいのものはGameRegistry.registerで登録できるし、新しいレシピはGameRegistry.addRecipeで登録できる
  • あとforgeが色々イベントフック用の関数を用意してくれているらしいので、バニラのクラスを継承して頑張るよりイベントフックした方が早い場合もあるかも

block

  • ブロックとはワールド内に3Dの形で描画されるブロックのこと
  • 内部にTileEntityを持てるので、ブロックに対する操作とか特殊なデータを持ちたいとかはTEでやろう
  • インベントリに表示されるアイテムはitemblockというまた別のオブジェクトなので、itemblockも併せて登録しないとインベントリには表示されない
  • ブロックの見た目に関する設定はblockstate jsonで記述する
  • blockstate jsonからはblock model jsonを参照することができて、こちらではより細かい設定ができる 例えば面ごとに違うテクスチャを貼るとか、ブロック自体の高さを変えるとか
  • blockはpropertyを持つことができて、それをblockのmeta indexを通してデータをやり取りできるので、例えばユーザーの入力に応じて90度ずつ回転するみたいなことはpropertyでできる

TE

  • TileEntityはブロックにもたせてあれこれの処理をさせるためのクラス
  • 上で書いたpropertyでは物足りない人のために複雑な情報を処理したりデータを保存したりできる
  • データの保存はNBTを使う

TESR

  • TileEntitySpecialRenderer
  • ブロックの3Dデータを完全に特殊な方法で実装するための仕組み
  • mobとかこれでやってる 要は3Dモデルを自分で作りたい時とかに
  • MrCrayfish’s Model Creatorとか使うとよいかもしれない

GUI

  • GUIはTEから呼ぶ感じになる
  • ボタンをつけたりテキストを貼ったりアイテムを表示したりする
  • アイテムの出し入れをするインターフェイスはSlotと呼ばれ、Slotを配置しておくことでインベントリを実装したり取り出し専用のスロットを実装できる

参考

自作PC組んだよ2017

Linux

構成は次の通り

niku.webcrow.jp

自分で使うPCを自作したのは初めてだったので色々調べながらパーツを選んだ。
一応個人的な選定基準とかを書いておく。

用途は、主に開発・たまにコンパイルとか動画編集・たまーーーにゲーム とか色々。

パーツ選び

CPU

Core i7-7700、今買う人でそれなりに予算があって普通に使いたいだけならこれ一択な気がする。(Kでもいいっちゃいいけど)
i6-6500あたりとちょっと迷ってたけど、メモリ32GBを諦めて浮いたお金でグレードアップしといた。
長く使うものでもあるし。

メモリ

16GBと32GBで迷って、まぁ足りなかったら増設すればいいだけだし、という理由でひとまず16GBにした。
32GB=1人権という単位(誰が言い出したんだこれ)があるらしいけど、まぁ普通に使うだけなら16で枯渇することは多分ないしいいかってなった。

一応スロットまだ空いてるしそのうちもっと欲しくなったら買うかって気持ち。

マザーボード

ググったらH170がいいよって話があったのでそうするかってなって、Intelラピッドなんとかという技術でSSDとか早くなるらしいって聞いたのでH270のこれにした。
したけど後述の理由によりこのIntelラピッドなんとかは完全に無駄になったのでLinux使う人でH270買う人はお気をつけて。

あと、ネットではまことしやかにATXが主流ですみたいなこと言ってる人が多いけど、
自作PCに多くを求めない人ならMiniATXで十分だと思う。(今更)
ATXだと本体もでかくなるし。

グラボ

コスパでGTX1060。そんなにゲームとかする感じじゃなければ悪くないと思います。
それかめっちゃ値が下がってるGTX960とかも割と買いかもしれないと思ってた。

まぁ先を見据えるなら、これくらい出しておいてもいいかもぐらい。
そんなゲームしない自分にはむしろオーバースペックぐらい。そもそもLinuxって時点で(最近Steamのおかげで対応ソフト増えてるけど)ゲームする気あんまりないし。

思ったよりでかかったので、マザーボードPCIスロット1つ塞いでしまってる。
これはどうなんだ。

SSD

M2がめっちゃ早いらしいと聞いたのでそうしました。
実際めっちゃ早いけど、前のPCはHDDだったのでM2じゃないSSDとの比較とかはよくわからない。

256GBなのでLinuxシステムに40GBぐらい、あとはゲームとかアプリケーションとかのファイルを置いてる。

あとSSD大容量だとめっちゃ高いし早く2TBが数千円ぐらいで買える時代になってほしい。

HDD

まぁなんでもいいよ(投げやり)
最初は1TBでいいやってなったけど1TBも2TBもそんな変わんないので2TBにしました。(って思ったけど実は2TBも3TBもそんな変わらないという話もある)

ケース

ピカピカ光って中が透明で見えるやつです。
割となんでもよかったんだけど思ったより派手派手になった。あと思ったより大きい。(サイズあんまりちゃんと見てなかった)

結構場所を取るのでそういう意味でもMiniATXで良かった感。

電源

必要な電力の倍ぐらいがいいよって言ってる人がいたので550Wにした。600Wでもよかったけど。

組み立て

ケースのネジがやたら硬くて大変だったことと、
ケースに「ATXはこの穴にとめてね!」って書いてあるやつよりマザーボードが何故か一回りくらい小さくて端がちゃんと固定できませんでした。
おかげでメモリ挿すときボードがたわんで怖かった。

それ以外は普通にすんなりいけた。
BIOS画面がめっちゃ派手で笑った。あとBIOS画面マウスで操作できるのかすげぇって思った。

OSインストール

最初はWindows Server 2016(学生だと無料なので)を入れようとしたら、インストールを開始した瞬間に「ドライバが見つかりません」みたいなエラーに。
グラボのドライバかチップセットのドライバあたりがないのかと思って色々探しまわったけど、そもそもwin serverについての情報がネットに全然なくて(そりゃそうだ)
色々それっぽいのを入れたけどダメでした。

結局あきらめてUbuntu MATEを(前のPCに引き続き)使うことに。またお世話になりますUbuntuさん…。
それと、Ubuntuを入れる際にIntelラピッドなんとかを切ってAHCIモードにしないとSSDを認識してくれなかったのでH270にした意味はありませんでした。(悲しい)

うーむ、Win ServerとHyper-VLinux環境作ってウハウハする未来を想像してたけど無理だったかという気持ち。
ちなみにKVMでWin Serverは普通に動いた。そういえばGUIvirt-managerから動かすよりもRDPでwinにつなぐ方が早いらしいよ。

パーティション

次のようにしました

  • SSD 256GB
    • Linux system (/) 40GB
    • /home/ssd/ 200GBぐらい
    • swap 5GBぐらい
  • HDD 2TB
    • /home 全部

/varとか細かい単位でHDDにしたほうがいいとかそういう話も聞くけど
ちゃんとTRIMの最適化とかしたら別にSSDでも問題ないって話と
HDDに/homeだけ振っとくとある時突然SSDが死んでも必要なものはちゃんと残るから安心だしPC移行するのも楽だよってコメントを見て
こういう感じにしました。


まぁ色々言いましたが普通に使えてるしスペックは十分だしすごい。
じゅうさんまんえんのちからってすげー!(雑なまとめ)

凝りたいけど凝りたくない妥協デスクトップLinux環境

Linux

今のデスクトップLinuxの環境をまとめておこうと思った。
新しいPC買った時に見る用ということで。

できればどんどんより良く設定していきたいので、またこの時点から色々変わってきたら新しく記事を書こうと思います。
(少なくともこの記事を書き換えることはしない)

OS: Ubuntu MATE 16.04

デスクトップ環境としてMATEを使いたかったのでUbuntu MATEにしてみた。
Ubuntuとの付き合いはそこそこあるんだけど、Unityは重いし使いにくい(※個人の感想です)と思っているので使ったことがない。

次は変えようか、でもGnome3あんまり好きじゃないし、じゃあ他にないよな〜という感じ。

フォント: (ベース)IPAゴシック (mono)Dejavu, Liberation, Droid, Source Code Pro など

フォントについては個人的に譲れないポイントとして、「日本語フォントは丸くないやつ」(なんか酔う)と「monoは文字間隔とかがおかしくないやつ」(コーディングするし)は絶対。
なのでUbuntu font family, VL gothic, Rounded M+*1, Migmix あたりをデフォルトフォントにすることはない。
monoは色々試してたまに変えるけど、Dejavuはterminal, Liberationはemacs, Source Code Proはエディタみたいに使い分けてる。

Mac見る度にヒラギノいいなってちょっと思う。
あれクセがないから読みやすくて視認性高くていいよね。長時間見てても酔わないし。

IM: uim (+ mozc)

Ubuntu ibus事件の時にibusやめてfcitxにして、
その後uimがいいらしいみたいな話を聴いてuimにしたけどイマイチ良さは分かってない。

あとXの設定でcapsをctrlに、uimの設定で「変換キー」を日本語入力オン、「無変換キー」を日本語入力オフにしている。
これめちゃくちゃ便利なのでやってない人は是非。

terminal: mate-terminal, guake-terminal

そんなterminalにこだわりないので標準のやつ。スケスケにしてtmuxいれて使ってる。
ドロップダウン系のterminalとして、MATEにはデフォルトでtildaっていうのがあるらしいんだけど
何故かスケスケにできないのでやめてguake-terminalにした。

スケスケterminalへのこだわり:
スケスケterminalの裏でブラウザを開いて、ブラウザの文字を読みながらコーディングとかするので必須。
これに慣れると横にwindowを2つ並べて作業するのも目を左右に動かすのがつらくなってくる。

terminal環境: zsh, zplug, tmuxとか

zplugとか入れとくと適当にやってくれて最強感ある。
あとなんか細かい設定はdotfilesに置いてる(あんまり真面目には書いてないけど)。

github.com

エディタ: emacs, atom

emacsはterminalからしか基本使わない。
window-modeの起動遅いし後ろも透けてないし別にねぇみたいな。
ファイルのエディットをしたりツイッターを見たりググったりメール見たりしていて便利。

atomHaskellAgdaを書く用。

HaskellはFiraCodeというフォントを使うためにこれにした。これ👇

github.com

AgdaはVTEの設定が悪いのかターミナルでのemacsで使うとフォントの表示がイマイチなので
最近はAtomにしている。意外と普通に使える。

ブラウザ: chrome(メイン), firefox(サブのラップトップ), emacs-w3m

メインはchrome。拡張もりもりで便利。

サブのラップトップはタッチパッドの領域が狭すぎてマウスカーソルを動かすのが苦痛なので
firefoxにKeySnailを入れていい感じにしている。

emacs-w3m(w3m-lnumと併用)はちょいっと調べ物をするのに。
ググるだけなら早いし軽いしマウスも要らないしいい感じ。でも最近ewwに浮気しようか迷っている。


終わり。

色々凝りたい気持ちはあるけど設定めんどくさいな〜でこの辺で妥協してる。
まぁ普通に便利に使えてるしいいかみたいな気持ち。

*1:M+はそんなに丸くないんだけど何故か酔うので🙅だった