nobashibou’s diary

のんびりまったりゆっくりマイクラしてる人の雑記です

SEUS PTGIで任意のブロックを光源にしたり、不透過にしたりする

SEUS PTGIレイトレーシング(パストレーシング)を用いた影MODです。以前は支援者向けに配布していましたが、今はだれでも無料でダウンロードすることができます。

光源に対して光が遮られる場所に影ができたり、周りのブロックに反射した光が描写されたりします。すごい。きれい。

 

ただ一方で、光源の処理が特殊なために従来のシェーダーとは少し勝手が違います。

 

1つ目の問題点は、明るさを持つブロックをそのまま置いても光ってくれないことがあることです。ビーコンやエンドロッドはそのままだと光らないままです。MODで追加したブロックも光りません。

f:id:nobashibou:20210911162826p:plain

シェーダーなし。全部光る

f:id:nobashibou:20210911162901p:plain

SEUS PTGI、グロウストーンのみ光る。ビーコンやMODで追加したランタンは光らない

 

2つ目の問題点は、MODで追加したブロックが光を透過することです。

f:id:nobashibou:20210911163500p:plain

左はMODで追加したブロック、右はクォーツブロックでグロウストーンを取り囲む。

 

光源が光らない問題は、バージョン1.14以降(多分)ではシェーダーのファイル内にあるblock.propertiesファイルをいじることで解決できます。わかりやすく解説している動画Youtubeにありましたので、そちらが参考になると思います。ありがたい。

www.youtube.com

 

redditでの記事を見るに同様の方法でMODのブロックも対応できるようです。

www.reddit.com

 

MODのブロックが透過してしまう問題も、block.propertiesの透過しないブロックのところに加筆すれば解決できると思います(多分)。

 

問題はそれより前のバージョン、1.12とかでは、この方法では対応できないということです。ということでソースコードをいじります。この手の改造はあくまで自己責任で行うものということには留意してください。

 

シェーダーは記事執筆時での最新版であるSEUS PTGI HRR Test 2.1を使います。

 

1つ目の問題点を解決するには、まずgbuffers_terrain.vshを開きます。一番下まで行きます。

f:id:nobashibou:20210911165814p:plain

 

   if(mc_Entity.x==133)
     materialIDs=MAT_ID_GLOWSTONE;

と書かれていますが、これはブロックIDが133のブロック(エメラルドブロック)を光らせる処理です。SEUS PTGIではエメラルドブロックが光るように設定されています。

 

同じように

    if(mc_Entity.x==56)

        materialIDs=MAT_ID_GLOWSTONE;

というのを追加してみましょう。ブロックIDが56のブロック(ダイヤモンドブロック)を光らせることができます。

 

f:id:nobashibou:20210911172255p:plain

 

この状態でシェーダーを読み込むと、

f:id:nobashibou:20210911172504p:plain

 

ダイヤモンドブロックは光りますが、影ができます。周りのブロックへの光の反射もありません。

 

次にshadow.vshを開きます。一番下まで行きます。

f:id:nobashibou:20210911204550p:plain

 

       vMaterialIDs=mc_Entity.x-255.+39.;

の下に

     if(mc_Entity.x==56)

       vMaterialIDs=31.;    

を書きます。

f:id:nobashibou:20210911174211p:plain

 

シェーダーを読み込むと、

f:id:nobashibou:20210911174250p:plain

しっかり光るようになりました!!

 

同様の処理を増やしていけば、好きなブロックを光らせることができます。ブロックIDが4096以上のブロックも問題なく対応できました。

 

ブロックIDを調べるにはworldeditを導入したのち、アイテムをもって//infoってコマンドをうち、そのアイテムで調べたいブロックを右クリックすると表示されます。ただ自分の環境ではブロックIDが4096以上のブロックに対して右クリックすると、表示してくれませんでした。どなたか、マイクラ内で4096以上のブロックIDを調べる簡単な方法を教えてください…。

 

話を本筋に戻すと、ブロックの光らせ方は何種類かあります。materialIDsはMAT_ID_GLOWSTONE、MAT_ID_TORCHのいずれかにすると光ります(MAT_ID_LAVAも光りますが、違いがよくわからない)。またvMaterialIDsは31か241で光ります。下の画像で違いがわかるかと思います。

f:id:nobashibou:20210911160749p:plain

 

もともとのソースコードではブロックで光るものにMAT_ID_GLOWSTONE、31を割り当て、松明にMAT_ID_TORCH、241を割り当てていました。ブロックを光らせたいときには前者、松明のような小さい物を光らせたいときは後者にするといいと思います。

 

さて、2つ目の問題点であった、MODで追加したブロックが光を透過してしまう問題を解決します。shadow.vshを開いて、先ほどの

       vMaterialIDs=mc_Entity.x-255.+39.;

      vMaterialIDs=30.;

にします。

f:id:nobashibou:20210911181053p:plain

 

するとf:id:nobashibou:20210911181351p:plain

ちゃんと不透過になっています。左の光源はMODで追加したブロックに、右の光源はクォーツブロックで取り囲まれています。

 

しかし、この方法だとMODで追加したブロックがすべて不透過になります。光を透過させたいブロックは個別に

     if(mc_Entity.x==(透過させたいブロックのブロックID))

       vMaterialIDs=1.;    

を追加してください。色付きガラスのようにしたい場合はvMaterialIDsを240にしてください(1と240の違いはわかりませんが…)

 

f:id:nobashibou:20210911182756p:plain

ブロックIDが2963のブロックを色付きガラスのように透過させたい場合

 

なおハーフブロックとかを置くと影が変なところにでますが、これはバージョンが古いために起きます。少なくと1.16.5では起きませんでした。初めて1.12.2の古さを痛感しました…。

f:id:nobashibou:20210911183211p:plain


追記

書いた後にマイクラしながら感じましたが、建築するのが基本昼間で、太陽光は通常のシェーダーと同様に処理されるので、わざわざシェーダーをいじる必要はあまりないのかなって…。むしろ太陽光の影の処理が変になっちゃうのでしないほうがいいと思います。夜間や室内で光源の処理を生かしたスクリーンショットをとるくらいには使えるはずなので、そうしていただければ幸いです。

(2021/9/23)

 

ハーフブロックの影が変になる現象ですが、シェーダーのオプション設定/Raytracing Options/Geometry Trace Qualityを0にすると多少は軽減されます。

f:id:nobashibou:20211020153114p:plain

もっともこれでもやっぱりおかしなことにはなっていて、

f:id:nobashibou:20211020153208p:plain

ハーフブロックをたくさん並べると上のようになります。

 

また、シェーダーのオプション設定/Raytracing Options/Screen-Space GI TracingをONにした状態で小さなブロックなどにvMaterialIDs=256.;とかを設定すると

f:id:nobashibou:20211020154835p:plain

それっぽい影がつきます。

 

補足ですが、MODで追加したブロックをまとめて

       vMaterialIDs=mc_Entity.x-255.+39.;

      vMaterialIDs=30.;

とするよりかは、一つ一つのブロックIDを指定してあれこれしたほうがいい気がします。

 

また、同じMODの構成であってもワールドごとにブロックとブロックIDの対応関係が異なることがあり(各々のセーブデータのlevel.dat内に記載されている)、それにあわせてシェーダーを改変することになります。一連の流れを自動化するならForgeUtilsでextrablocks.jsonを作って、それのデータを参照してしかるべきソースコードを出力するものを作ることになると思います。ForgeUtilsに関しては以下の記事をご覧下さい。

chikage.hatenablog.jp

note.com

(2021/10/20)

ニコニコのブロマガにあるマイクラ建築向け解説記事のウェブアーカイブ

ニコニコのユーザーブロマガが2021年10月7日(予定)に閉鎖されるということで、MODやプラグイン、その他いろいろの解説記事などのウェブアーカイブのリンク集です。Wayback Machineを利用しています。他サービスに移行したものについては、確認できた限りでそちらのリンクを(も)張っています。

 

 

余談ですが、非公式フォーラムで配布されていたMODやプラグインでウェブアーカイブを介してダウンロードできるものもあります。TSPプラグインExtendRenderDistanceなどがあります。

cocricotで1.7.10から1.12.2にワールドデータを(大体)移すやり方

 

はじめに

 cocricotの1.12.2のmodが配信され、1.12.2で建築する人も大分多くなったように思います。cocricotを使ったり動作の軽量化をしたりするためにも、私も1.12.2でプレイしたいのですが、1.7.10のcocricotで作業途中のワールドがあるため、これをどうにかしない限り本腰を入れられません。このデータを1.12.2にせればなぁ、と思っていました。1.7.10以前のマイクラにしかないメタデータをフル活用しているため、1.12.2へはワールドデータが通常移せないのです。

 

 しかしながら、1.7.10のconquestから1.12.2のconquest reforgedへ移行する際にはメタデータの問題を例外的に回避することができます。それが下のリンクのページにあるConverter for Minecraft 1.7 Conquest Metadata to Conquest Reforged Mod(以下converter)というものです。


 

conquestreforged.com

 

※追記もご覧ください。

 

  1.7.10以降ではメタが使えずブロック数が減ってしまうために、conquestではmodでブロックを補いました(cocricotと同じですね)。このconverterは1.7.10と1.12.2のconquestで共通のテクスチャを持つブロックに対して変換をしてくれます。何が何に変換できるかは内部ファイルで指定されていますが、ソフトウェアの中を覗いてみたところ、cocricot向け(それ以外でも)に改造が可能みたいです。この記事はその解説です。

 

 また何が何に変換するかを指定するのは手作業になる都合上、使用しているメタの種類数が少ないワールドの方が移行が簡単です。

 

 あと必ずワールドデータなど全てバックアップを取っておきましょう。USBなどの外部メディアやクラウドなどに保存しとけば、PCがたとえ壊れても安心です。

 

mappngs.jsonの解説

 converterをダウンロードして、中を見てみましょう。jarファイルなので、zipファイルと同じように解凍できます。元のjarファイルはとっておいてください。解凍されたファイルにあるmappings.jsonを開いてみてください。

f:id:nobashibou:20190915172151p:plain

Notepad++を使用

 上の画像のようになっていると思いますが、重要なのは以下のワンセットです。

   {
            "name": "minecraft:stone",
            "min": 1,
            "max": 1,
            "biome": -1,
            "to": {
            "name": "conquest:stone_full_14",
            "data": 6
            }
        },

 変換前のブロックと変換後のブロックの指定をしています。これを書き換えることで、cocricot用のものが作れます。一番最後のワンセットには最終行のカンマはありません。注意しましょう。また、変換前と変換後の指定を行わないと、1.7.10特有のブロックは変換後に消滅します。

 

 各行について解説していきます。

 

 2行目のminecraft:stoneは変換の対象になるブロックのblockstatesを表しています。blockstatesとはプログラム上のブロック名みたいなものです(おそらく)。一つのブロックIDにつき一つ割り当てられています。バニラにあるブロックのblockstatesを調べるのは以下のサイトでできます。

 

minecraft-ids.grahamedgecombe.com

 

 尚、cocricotでctmが割り当てられているブロックのブロックIDとblockstatesの対応表を後に記します。

 

 3行目、4行目のminとmaxの値はメタデータの値を表しています。なぜminとmaxという形で指定しているかは謎です。

 

 5行目のbiomeの値はバイオームIDを表しています。-1の場合は、全てのバイオームが対象になります。ctmのプロパティで使われるバイオームの表記とバイオームIDとの対応表を後に記します。

 

 7行目のconquest:stone_full_14は変換後のブロックのblockstatesを表しています。1.12.2でblockstatesを調べるには、マイクラを起動してF3キーを押してデバッグ画面を表示させ、ブロックに視点を合わせると、そのブロックのblockstatesがデバッグ画面の右下に表示させることができます。F3+Hを押してから、インベントリを開いてブロックにカーソルを合わせることでもできるみたいです。

 

 8行目のdataの値は変換後のブロックのメタデータの値を表しています。

 

 私の場合、なぜかblockstatesの最後一文字だけ確認できない状況になったので、cocricotMOD for 1.12.2 v0.3\assets\cocricotmod\blockstatesのあたりからそれっぽい名前のファイル名を探しました。

 

 上記のワンセットを繰り返す以外では、以下のような記述が必要となります。

{
    "blocks": [

(変換前のブロックと変換後のブロックのワンセットを必要な分だけ繰り返す)

    ],
    "copy_below": [],
    "remove_blocks": {}
}
 

 

 私の場合、エクセルに自分のワールドで変更が必要なブロックを書き出し、VBAでmappings.jsonを作成しました。変更が必要なブロックの種類が少ないほど、1.7.10のブロックと1.12.2のブロックの対応表を作るのは楽になり、mappings.jsonも楽です。

f:id:nobashibou:20190915184519p:plain

こんな感じ
converterの中身のいじり方

 mappings.jsonを用意できたら(死ぬほど大変ですが)、それをconverterの中にあるmappings.jsonに直接上書きします。大抵のzip解凍ソフトにはjarファイルを解凍せずに、中身を閲覧したり、上書きしたりする機能があります。jarファイルは一旦解凍すると、再度圧縮しても使い物にならないので、ご注意ください。

 

 次に、1.12.2でcocricotのmodが導入された環境で適当にワールドを作ります。スーパーフラットで構いません。そのワールドデータにあるlevel.datをconverterにあるlevel.datに上書きします。level.datにはブロックIDとblockstatesの対応表が入っており、それを参照してブロックを変換していると思われます。cocricotのmodが導入された環境で生成されるlevel.datには、cocricotで追加されるブロックのブロックIDとblockstatesの対応表が入っています。元々のlevel.datはconquest用のものなので今回は使用できません。

 

 ここまでやれば、converterの準備が終わります。

 

converterの使い方

 jarファイルなので実行にはjavaが必要です。ダウンロードしていない場合はしましょう。

 

https://www.java.com/ja/download/

 

 jarファイルをダブルクリックすると、このような画面がでてきます。

f:id:nobashibou:20190915190701p:plain

 Chooseをクリックします。

 

f:id:nobashibou:20190915191037p:plain

  このような画面になるので、変換したいワールドを選択します。

 

f:id:nobashibou:20190915191138p:plain

  Skipで大丈夫です。このChooseが何なのかいまいちよくわかっていません

 

f:id:nobashibou:20190915191644p:plain

 Threadsはスレッドをいくつ使うかという指定です。そのままで問題ありません。Startを押しましょう。

 

f:id:nobashibou:20190915192917p:plain

 このような画面がでてきます。この画面が出てこない場合はどこかの手順で間違っていることになります。

 

f:id:nobashibou:20190916081709p:plain

 このような画面になって……

 

f:id:nobashibou:20190916081939p:plain

 名前に-convertedが加えられた変換後のワールドが生成されます。これで1.12.2で使用できます。

 

できないこと色々

 上記のようにすれば一応は変換ができます。ただし変換が難しいものもあります。

 

 1つ目は1.7.10にはあって1.12.2にはないブロックの存在です。これに関してはcocricotの制作者であるきぃこさんが対応していくということをおっしゃっています。温かく待ちましょう。一時的な対応策としては、似通ったブロックに変換するといいと思います。また、テクスチャをいじるという手もあります。

 

 2つ目は1.7.10にも1.12.2に同様のブロックがあるけれども、微妙に仕様の違うブロックの存在です。例えば、1.7.10での階段の手すり(101:5など)は1.12.2では3種のブロックを使うことによって、ctmのごり押しから改善がなされています。こうしたものは直接の変換ができず、手作業などで対応する必要があります。

 

 3つ目は1.7.10においてctmを使い複数の画像を同じブロックに対してランダムに出現させていて、1.12.2ではそれぞれが独立したブロックになっているものです。例えば船の模型と地球儀は1.7.10では同じ39:6となっており、ランダムで(厳密には座標に依存して)描画されています。1.12.2ではそれぞれ独立したブロックとなっており、1対1対応ではないので、上記の方法ではどうにもなりません。

 

終わりに

 この記事が誰かの建築の一助となれたら幸いです。願わくば、cocricotに1.7.10のブロックが追加された後で、全てのブロックを変換できるmappings.jsonを誰かが配布してほしい(他力本願)。ともあれ、お読みいただきありがとうございました。

 

  なお、この記事で不利益を被ったとしても責任を負いかねますので、ご理解の程お願い申し上げます。

 

追記

 8行目のdataの解説を追加しました。すっかり書いたつもりになっていて、書き忘れていたのは大変恥ずかしい限りです。

 ついでとはいってなんですが、実際に私がデータ移行に使ったexcelファイルとmappings.jsonを配布します。これで許して

 

excelファイル

cocricot converter_sample.xlsm - Google ドライブ

マクロでmappings.jsonが出力されます。

 

mappings.json

mappings(sample).json - Google ドライブ

 

(2020/05/21)

 

 どうやらConquest Reforgedが1.15向けの新たなModを出したのに合わせて、それ向けにデータを変換できるWorldConverterを配布しているようです。

 この記事で解説しているのは、Conquest ReforgedのサイトのDownloadsのWorldConvertersの左側、1.7.10->ModからダウンロードできるConquest Reforged 1.7.10-1.10.2 Converter.jarです。1.10.2って書いてありますけど全然1.12.2にもいけちゃいます。

 ところで、今見たらサイトの見出しがConverter for Minecraft 1.7 Conquest Metadata to Conquest Reforged ModからWorldConvertersに変わっていて、時代の流れを感じています。まさか複数形になっているとは…。

 

 (2021/05/20)

対応表

 cocricotでctmが割り当てられているブロックのブロックIDとblockstatesの対応表です。

blockID blockstates
1 minecraft:stone
2 minecraft:grass
3 minecraft:dirt
4 minecraft:cobblestone
5 minecraft:planks
12 minecraft:sand
13 minecraft:gravel
14 minecraft:gold_ore
15 minecraft:iron_ore
16 minecraft:coal_ore
17 minecraft:log
20 minecraft:glass
21 minecraft:lapis_ore
22 minecraft:lapis_block
23 minecraft:dispenser
24 minecraft:sandstone
30 minecraft:web
31 minecraft:tallgrass
35 minecraft:wool
37 minecraft:yellow_flower
38 minecraft:red_flower
39 minecraft:brown_mushroom
40 minecraft:red_mushroom
42 minecraft:iron_block
43 minecraft:double_stone_slab
44 minecraft:stone_slab
45 minecraft:brick_block
47 minecraft:bookshelf
48 minecraft:mossy_cobblestone
49 minecraft:obsidian
53 minecraft:oak_stairs
56 minecraft:diamond_ore
57 minecraft:diamond_block
58 minecraft:crafting_table
65 minecraft:ladder
66 minecraft:rail
67 minecraft:stone_stairs
70 minecraft:stone_pressure_plate
72 minecraft:wooden_pressure_plate
77 minecraft:stone_button
78 minecraft:snow_layer
80 minecraft:snow
84 minecraft:jukebox
85 minecraft:fence
89 minecraft:glowstone
95 minecraft:stained_glass
96 minecraft:trapdoor
98 minecraft:stonebrick
101 minecraft:iron_bars
102 minecraft:glass_pane
106 minecraft:vine
107 minecraft:fence_gate
108 minecraft:brick_stairs
109 minecraft:stone_brick_stairs
112 minecraft:nether_brick
114 minecraft:nether_brick_stairs
120 minecraft:end_portal_frame
121 minecraft:end_stone
125 minecraft:double_wooden_slab
126 minecraft:wooden_slab
128 minecraft:sandstone_stairs
129 minecraft:emerald_ore
133 minecraft:emerald_block
134 minecraft:spruce_stairs
135 minecraft:birch_stairs
136 minecraft:jungle_stairs
139 minecraft:cobblestone_wall
145 minecraft:anvil
154 minecraft:hopper
155 minecraft:quartz_block
156 minecraft:quartz_stairs
158 minecraft:dropper
159 minecraft:stained_hardened_clay
160 minecraft:stained_glass_pane
161 minecraft:leaves2
162 minecraft:log2
163 minecraft:acacia_stairs
164 minecraft:dark_oak_stairs
171 minecraft:carpet
172 minecraft:hardened_clay
173 minecraft:coal_block
354 minecraft:cake
380 minecraft:cauldron
390 minecraft:flower_pot

 

 ctmで用いられるバイオームの表記とバイオームIDの対応表です。PlateauMは存在しないバイオームですが、20:14、30:3、30:8、44:4、44:12、101:1、101:4、106、108:0~7、128:8~15、172:0のプロパティで記述されています。MesaPlateauMの誤植だと思います。おちゃめ

biomes biomeID
Ocean 0
Plains 1
SunflowerPlains 129
Desert 2
DesertM 130
ExtremeHills 3
ExtremeHillsM 131
Forest 4
FlowerForest 132
Taiga 5
TaigaM 133
Swampland 6
SwamplandM 134
River 7
Hell 8
Sky 9
FrozenOcean 10
FrozenRiver 11
IcePlains 12
IcePlainsSpikes 140
IceMountains 13
MushroomIsland 14
MushroomIslandShore 15
Beach 16
DesertHills 17
ForestHills 18
TaigaHills 19
ExtremeHillsEdge 20
Jungle 21
JungleM 149
JungleHills 22
JungleEdge 23
JungleEdgeM 151
DeepOcean 24
StoneBeach 25
ColdBeach 26
BirchForest 27
BirchForestM 155
BirchForestHills 28
BirchForestHillsM 156
RoofedForest 29
RoofedForestM 157
ColdTaiga 30
ColdTaigaM 158
ColdTaigaHills 31
MegaTaiga 32
MegaSpruceTaiga 160
MegaTaigaHills 33
MegaSpruceTaigaHills 161
ExtremeHills+ 34
ExtremeHills+M 162
Savanna 35
SavannaM 163
SavannaPlateau 36
SavannaPlateauM 164
Mesa 37
Mesa(Bryce) 165
MesaPlateauF 38
MesaPlateauFM 166
MesaPlateau 39
MesaPlateauM 167
PlateauM 167

 

トラップドアを壊さないプラグイン。ManySmallTweaks導入方法

ManySmallTweaks

このプラグインはトラップドアの破壊を防ぐ機能などがあります。めちゃ便利です。しかしながら現在では、jarファイルが配布されていません。それで困っている方が、一人か二人はいらっしゃると思います。そんな方への手引きになれば幸いです

f:id:nobashibou:20180519192438p:plain

ManySmallTweaksのbukkitのページ。現在はない様子

さて、じゃあどうやって導入するかというと、githubで公開されているソースコードを使います。これからjarファイルをつくり、導入します。私はそんなにプラグラムに詳しいわけではなく、間違いも多々あるかもしれません。この記事において不利益を被った場合において、一切の責任を負いかねますので、その点はご容赦ください。

今回は「Thermos」向けに解説します。「Cauldron」では上手くいくかよくわかりません。下からダウンロードをどうぞ。

github.com

ちなみに、Thermos鯖は最新版である58では、wouldeditの木の斧で左クリックするとブロックが壊れます。一つ前の57を使いましょう。鯖建ての方法は以下を参照。

hayanasa.hatenablog.com

 

 

1.導入の前に 

導入方法の解説の前に、メモ書き程度に残したいことがあります。トラップドアを設置する方法は別に、このプラグインに限りません。というか、このプラグインの導入は手間が相応にかかります。時と場合では他の方法の方がいいと思います。復習がてら、思い当たる方法を記しておきます。ただしこの場では詳しくは解説しませんので、リンクから方法をご確認ください

 

LotMetaBlockPack

 LotMetaBlockPackはメタを使った建築をするなら必須のmod兼プラグインです。ご存知の方も多いでしょう。Zキーを押すと、手に持っているアイテムがブロックである場合、視線の先にあるブロックを持っているブロックで上書きします。勿論トラップドアも可能ですが、トラップドアが隣接している状態にはできません。

 現在ではこちらで配布されています。

 

FAWE

FAWEはFast Async WorldEditの略称です。単純に言えば、worldeditの上位互換で、ブロック設置の際に破壊が行われません。設置の際にコマンドを使用することになるため、マクロmodの併用を推奨します。隣接での設置が可能です。

hayanasa.hatenablog.com

 

観覧車mod

 観覧車modを用いるのは、だいぶアクロバティックな方法です。普段使いにはおすすめできません。最終手段とでも思ってください。このmodを使えば、実に様々なことができますが、その分、一回一回の手間暇が必要になります。正直、トラップドア設置には向きません。

 

 

2.Eclipseの起動

それではまず、ManySmallTweaksのソースコードをダウンロードしましょう

github.com

緑色の「Clone or Download」をクリックしたのち「Download ZIP」をクリックして、ダウンロードしてください。そのZIPファイルを解凍してください。

 

こっから、ソースコードをjarファイルに変えるために、Eclipseというソフトを使います。これは統合開発環境というもので、プログラマー向けの色んな機能が備わっています。日本語化されているものをダウンロードします

Eclipse 日本語化 | MergeDoc Project

Ultimateをダウンロードしてください。もしくはjavaでも十分かもしれませんが、特に理由がないなら、javaにする意味はないとおもいます。正直よくわかんない。

ダウンロードしたものを解凍し、eclipse.exeを起動しましょう

f:id:nobashibou:20180519193350p:plain

f:id:nobashibou:20180519202927p:plain

このような画面が出たら、成功です

 

3.ソースコードの読み込み

f:id:nobashibou:20180519203811p:plain

イクラプラグインjavaでかかれているため、ファイル>新規>Javaプロジェクトを選択

f:id:nobashibou:20180519204212p:plain

プロジェクト名に「ManySmallTweaks」と入力します。

f:id:nobashibou:20180519204855p:plain

こんな感じになったと思います。

先ほどダウンロードしたソースコードのファイルを開いてくださいf:id:nobashibou:20180519205239p:plain

 Eclipseに表示されている「src」というファイルとダウンロードしたファイルにある「src」は対応しています。なので、ダウンロードしたファイルの「src」の中にある「redsgreens」を「src」に移動させます

f:id:nobashibou:20180519211032p:plain

ドラッグ&ドロップ

f:id:nobashibou:20180519211210p:plain

ファイルおよびフォルダーをコピーを選択。

続いて「plugin.yml」も同様にして、「ManySmallTweaks」に移動します。「plugin.yml」の中にプラグインの名称が書かれており、多分プロジェクト名と異なると上手くできません。

f:id:nobashibou:20180519211816p:plain

このようになりましたでしょうか。なんかいっぱいエラーが出てるので、解消していきましょう。

 

4.エラーの解消

パッケージ・エクスプローラーの「redsgreens.ManySmallTweaks」をクリックすると、「~.java」っていうのがいくつか表示されていると思いますが、それをポチポチ押してみてください。

f:id:nobashibou:20180519223721p:plain

なんだかよくわかんないですね。これが、いわゆるプログラムっていう奴です。それはさておき、赤線の波線が引かれているのが、エラーを起こしている場所です。よく見ると、

import org.bukkit.event.EventHandler;

と書かれた一行があります。「bukkkit」って書いてありますね。これは「import」はその後の書いてある処理を別のファイルから受け継ぐことの宣言をしています。めっちゃ大事。なので、org.bukkit.event.EventHandler」っていうところの処理を受け継ぎます。処理を借りてくる、っていう感じだと思います。

難しい処理を書くのは大変だから、誰しもが使えるように、プラグイン開発向けに色んな処理をまとめて、それ使って、作ってね~。っていうのが「bukkit」です。

エラーが起きているのは、この「org.bukkit.event.EventHandler」っていうのと、このプロジェクトが関連付けられてないからです。この処理はサーバーのjarの中にありますので、サーバーのjarを関連付けます。

f:id:nobashibou:20180519231905p:plain

「ManySmallTweaks」を右クリックし、ビルド・パス>ビルド・パスの構成を選択。

f:id:nobashibou:20180519232115p:plain

「ライブラリー」を選択し、外部JARの追加をクリック。

ライブラリーっていうのはbukkitみたいに、難しい処理を単純に扱えるようにいろんな処理をまとめたものです。多分。

f:id:nobashibou:20180520000523p:plain

「bukkit」が含まれていることを確認したサーバーのjarを選択。このとき、すでにサーバー建てしたものを使ってください。「libraries」も同時に読み込むためです。

f:id:nobashibou:20180520001641p:plain

適用して閉じます。

f:id:nobashibou:20180520001731p:plain

エラーが一気に9個まで減りました。警告は無視して結構です。さて、また、なんらかをライブラリーに必要とするみたいです。お気づきの方もいるとは思いますが、エラーの項目を見てください。「WorldGuardPlugin」が足りないようです。そう、「WorldGuard」から処理をかりてきているのです。どうやら、前提プラグインとして「WorldGuardが必要っぽいです。入れてない方はこれを機会に、どうぞ導入してみてください。

https://dev.bukkit.org/projects/worldguard

ちなみにWorldGuardの前提プラグインは「WorldEdit」ですので、サーバーに追加しとくのを抜かりなく。

さて先ほどと同様に、ライブラリーにWorldGuard」を追加しましょう。

f:id:nobashibou:20180519234347p:plain

f:id:nobashibou:20180520002129p:plain

 終わりました。ついにエラーがなくなりました。

 

5.jarファイルへの出力

エラーがなくなったので、いよいよjarファイルへ出力します。

f:id:nobashibou:20180520002718p:plain

 ファイル>エクスポートを選択

f:id:nobashibou:20180520002822p:plain

Java>JARファイルを選択。次へをクリック

f:id:nobashibou:20180520002915p:plain

「ManySmallTweaks」を選択。「.classpath」「.project」のチェックボックスを外します。エクスポート先を参照から指定します。名称を「ManySmallTweaks.jar」にします。

完了をクリック。これでjarファイルが生成されています。警告は無視していいです。

f:id:nobashibou:20180520003519p:plain

生成されています。

 

6.利用方法

いつも通り「plugins」フォルダにいれて、サーバーを起動してください。

f:id:nobashibou:20180520004223p:plain

plと打って、表示されれば、導入成功です。お疲れさまでした。

 

とはまだ早いです。

f:id:nobashibou:20180520004802p:plain

このままだと壊れます。configをいじらないとデフォルトでは壊れるようになっています。

なのでconfigを開いてみると

f:id:nobashibou:20180520005055p:plain

えっ...!?

config君迫真の白紙です。

覚えていますでしょうか。githubからダウンロードしたプラグインソースコードには、一緒に「config.yml」がついてきています。

f:id:nobashibou:20180519205239p:plain

これで上書き保存してください。また、中身を書き換えていきます。

VerboseStartup: No        冗長なスタート(おそらく負荷軽減)

Defaults:
FloatingLadders: No       はしごの破壊を防ぐ
FloatingRails: No         レールの破壊を防ぐ
FloatingHatch: No          トラップドアの破壊を防ぐ
ButtonsOnMoreBlocks: No    ボタンが更に多くのブロックに設置できる(?)
ProjectileTriggers: No      トリガーを発射する(??)
RedstoneIgnitesNetherrack: No レッドストーンでネザーラックを燃やす
InfiniteCauldrons: No          無限の大釜(??)
KeepSaddleOnPigDeath: No   豚が死んでもサドルがなくならない(?)
PigsReproduceQuick: No           豚が早く繁殖する
PercentSaddledPigs: 0       サドルのついた豚が生成される確率
PercentColorSheep: 0        色の違う羊が生成される確率
RedstoneIgnitesPumpkins: No   レッドストーンでカボチャとジャック・オ・ランタンのきり変えができる
FloatingPaintings: No       絵画の破壊を防ぐ
MineCobwebsWithShears: No     くもの巣をはさみで刈り取れる

Worlds:
change_me:
FloatingLadders: No
FloatingRails: No
FloatingHatch: No
ButtonsOnMoreBlocks: No
ProjectileTriggers: No
RedstoneIgnitesNetherrack: No
InfiniteCauldrons: No
KeepSaddleOnPigDeath: No
PigsReproduceQuick: No
PercentSaddledPigs: 0
PercentColorSheep: 0
RedstoneIgnitesPumpkins: No
FloatingPaintings: No
MineCobwebsWithShears: No

多分こんな意味。一部の機能しか試してないのでよくわからないところがあります。あんまり、建築には関係なさそうですが。使う際には「Defaults」の方のYesとNoを切り替えて使ってください。

f:id:nobashibou:20180520013645p:plain

トラップドアがやっと自立しました。では、良き建築ライフを! 

 

7.参考にしたサイト

上記URLに加えて、おおいに参考になったものがありますので、この場で感謝とともに紹介させてもらいます。

ch.nicovideo.jp

hayanasa.hatenablog.com

seesaawiki.j

ch.nicovideo.jp

 以上に加え、沢山のサイトにお世話になりました。謹んでお礼申し上げます。