mis08のブログ

ハマったことの備忘録

eclipseにおけるGithubからminecraftforgeプロジェクトを引っ張る方法について(力技

ライブラリごと引っ張るのに苦労したので備忘録+説明用に

forge1.12.2及びforge1.13.2について解説してあるが、forge1.13.2については特別な処理が必要なので記事の下の項から読むこと。

 

尚、この方法は素人が無理やり編み出した方法なので上手く動かなかったり不具合が出ても知りません。参考にされる場合は悪しからず。

(あともっとスマートな方法があるなら教えてほしい)

 

1.ファイルのインポートを選択

f:id:mis08:20190505090314p:plain

 

2.Git欄から「Gitからプロジェクト」を選択

f:id:mis08:20190505090415p:plain

 

3.クローンURIを選択

f:id:mis08:20190505090515p:plain

 

4.URI、ユーザー名などを入力

 

f:id:mis08:20190505091402j:plain

 

5.Masterブランチを選択

f:id:mis08:20190505091453j:plain

 

6.保存するディレクトリを選択(ここではeclipseワークスペース

f:id:mis08:20190505091530p:plain

 

7.ここまで来たら、先程選択したフォルダにプロジェクトファイルが追加されていることを確認、キャンセルでインポート画面を閉じる(向かって右

f:id:mis08:20190505091628p:plain

 

8.再び(ファイル>インポート)を選択し、(Gradle>既存のGradleプロジェクト)を選択して次へ

f:id:mis08:20190505091918p:plain

 

9.プロジェクト・ルート・ディレクトリに7項で確認したフォルダを選択する

  (Forge1.12.2 ではなくforge1.12.2 を選択していることに注意

f:id:mis08:20190505092327p:plain

f:id:mis08:20190505092128p:plain

 

8.forge 1.12.2 が追加され、「プロジェクトと外部の依存関係」でforgeSrc*が参照可能になっていたら成功!

f:id:mis08:20190505092606p:plain

 

 

 

-------------------------------追記、実行の構成について

上記の方法でプロジェクトを追加すると、実行の構成はインポート出来ないようなので設定を追記

 

1.実行の構成を選択

f:id:mis08:20190505095128p:plain

 

2.左クリックで新規構成

f:id:mis08:20190505095152p:plain

 

3.以下、記載のまま入力

f:id:mis08:20190505095238p:plain

f:id:mis08:20190505095321p:plain

f:id:mis08:20190505095339p:plain

 

4.適用した上で実行し、Minecraft1.12.2が起動されれば成功

 

-------------------forge1.13.2について

こちらについても実行環境は構築されないが、上記の方法で追加するには複雑な設定が必要になるので更なる力業を編み出した

 

1.一度、1からforge1.13.2の開発環境を展開する(マイドキュメント等に展開する際、「forge1.13.2」と名前が被らないよう変更しておく

2.環境をeclipseにインポートした上で、実行構成>右クリックでエクスポート(念のため

f:id:mis08:20190505102529p:plain

 

3.forge 1.13.2_Client(runClient)及びServerにチェック、任意のロケーションを選択して実行

f:id:mis08:20190505102710p:plain

 

4.インポートしたforge1.13.2の環境は残しておく

5.forge1.12.2と同じ方法でGithubからダウンロード

6.先にインポートしたforgeの実行環境「runClient」を複製し、

  名前をわかりやすいよう「ForgeClient:等に変更(名前はなんでもいい

  メインタブのプロジェクトをgitから落とした方に変更

  引数タブの作業ディレクトリを その他>gitから落としたforgeのrunフォルダに指定

7.環境タブ

  変数「MOD_CLASSES」の値を、

  modid(最初はexamplemodでok)%%プロジェクトのmainフォルダのパス(C:から

 

  例 
exampelmod%%C:\Users\gantz\git\forge-1.13.2\forge1.13.2\bin\main;examplemod%%C:\Users\gantz\git\forge-1.13.2\forge1.13.2\bin\main

 

  のように変更する

  (尚、「\」は環境によっては「¥」と表示されるが意味は一緒なので気にしないこと

 

  実行に失敗する場合、expamplemodの部分を開発中のmodidに変える

うちの場合は「undergroundmod」

 

8.実行してMincraft 1.13.2が起動したら成功!

有理数、無理数

有理数

分数で表せる数。

 

2や3などの整数は

2/1,3/1

のように表せるので有理数

 

0.999などの有限小数

999/1000

のように表せるので有理数

 

無限小数のうち、数が循環する

0.333...のような循環小数

1/3

のように表せるので有理数

循環小数の分数化については要勉強)

 

無理数

分数で表せない数。

 

無限小数のうち、数が循環しないもの。

πや√2など。

 

 

C言語 volatile,extern

volatile

コンパイラの最適化を防ぐ修飾子

volatile int flag;

のように使う。

 

int flag;

while(flag){

//flagに触らない処理

}

とした場合、flagをスイッチ等からの入力で操作してwhileから抜けようとしても、コンパイラの最適化により

 

if(flag){

  while(1){

//flagに触らない処理

  }

}

とされ、whileから抜けられなくなる(最適化により(一見)無駄な条件評価を省かれる)

 

修飾子volatileを付けておくことでこのような最適化をキャンセルできる。

 

extern

複数ソースコードで共有して使う変数、関数に付ける修飾子

extern int i;

のように使う

ヘッダーファイル内の宣言に修飾し、以降、どこかのソースファイルで定義された変数を、ヘッダーファイルをincludeしたソース全てで共有できる。

(普通にint i; とすると、宣言と同時に定義も行われてしまい、複数回の定義によりエラーが出る

保留リスト

  1. 既にあるGPSに、現在地保存、保存地点方向への案内機能を実装する(座標から案内すべき方向を導くメソッドが必要
  2. 手製GPSの緯度経度→UTM変換プログラムの軽量化、又は使用するPICの見直し
  3. トランシーバー等を応用した通信で、機器同士にリレーさせて山間部に仕掛けたloT仕掛罠等の情報をネットワークに接続する

craft コンパイルエラー 解決済み

ーーーーーーーーーーーーーーーーーーーーーーーー

craft に cmake -G "MinGW MakeFiles" した時のログ

ーーーーーーーーーーーーーーーーーーーーーーーー

E:Programminecraft cpyCraft>cmake -G "MinGW Makefiles"
-- The C compiler identification is GNU 6.3.0
-- The CXX compiler identification is GNU 6.3.0
-- Check for working C compiler: C:/MinGW/bin/gcc.exe
-- Check for working C compiler: C:/MinGW/bin/gcc.exe -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: C:/MinGW/bin/g++.exe
-- Check for working CXX compiler: C:/MinGW/bin/g++.exe -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
CMake Deprecation Warning at deps/glfw/CMakeLists.txt:8 (cmake_policy):
The OLD behavior for policy CMP0042 will be removed from a future version
of CMake.

The cmake-policies(7) manual explains that the OLD behaviors of all
policies are deprecated and that a policy should be set to OLD only under
specific short-term circumstances. Projects should be ported to the NEW
behavior and not rely on setting a policy to OLD.


-- Found OpenGL: opengl32
-- Looking for pthread.h
-- Looking for pthread.h - not found

        解決?せず!

cmake pthread.h not found ←検索!←なくても無害?

Windowsでpthread - AkiIroブログ


-- Found Threads: TRUE
-- Could NOT find Doxygen (missing: DOXYGEN_EXECUTABLE)

解決 ←header.htmlが見つからないエラー(後述)バージョンが関係?

Doxygen


-- Performing Test _GLFW_HAS_DEP
-- Performing Test _GLFW_HAS_DEP - Success
-- Performing Test _GLFW_HAS_ASLR
-- Performing Test _GLFW_HAS_ASLR - Success
-- Performing Test _GLFW_HAS_64ASLR
-- Performing Test _GLFW_HAS_64ASLR - Failed
-- Using Win32 for window creation
-- Using WGL for context creation
-- Found CURL: C:/Program Files (x86)/CURL/lib/libcurl.dll.a (found version "7.60.0")
-- Configuring done
-- Generating done
-- Build files have been written to: E:/Program/minecraft cpy/Craft

 

-----------------------------------------------------------------

コマンドプロントコンパイル時のエラー

---------------------------------------------------------------------

 

解決!

crulのバージョンを32bit版に変更し、ProgramFileにぶち込んでPATHを通した

(64bitじゃダメだった?

 

E:Programminecraft cpyCraftCraft>mingw32-make
[ 14%] Built target glfw
[ 15%] Linking C executable craft.exe
CMakeFilescraft.dir/objects.a(auth.c.obj):auth.c:(.text+0xae): undefined reference to `_imp__curl_easy_init'
CMakeFilescraft.dir/objects.a(auth.c.obj):auth.c:(.text+0x11a): undefined reference to `_imp__curl_easy_setopt'
CMakeFilescraft.dir/objects.a(auth.c.obj):auth.c:(.text+0x189): undefined reference to `_imp__curl_easy_perform'
CMakeFilescraft.dir/objects.a(auth.c.obj):auth.c:(.text+0x1a4): undefined reference to `_imp__curl_easy_getinfo'
CMakeFilescraft.dir/objects.a(auth.c.obj):auth.c:(.text+0x1ad): undefined reference to `_imp__curl_easy_cleanup'
CMakeFilescraft.dir/objects.a(main.c.obj):main.c:(.text.startup+0x2a): undefined reference to `_imp__curl_global_init'
CMakeFilescraft.dir/objects.a(main.c.obj):main.c:(.text.startup+0x1975): undefined reference to `_imp__curl_global_cleanup'
collect2.exe: error: ld returned 1 exit status
CMakeFilescraft.diruild.make:343: recipe for target 'craft.exe' failed
mingw32-make[2]: *** [craft.exe] Error 1
CMakeFilesMakefile2:71: recipe for target 'CMakeFiles/craft.dir/all' failed
mingw32-make[1]: *** [CMakeFiles/craft.dir/all] Error 2
Makefile:128: recipe for target 'all' failed
mingw32-make: *** [all] Error 2

E:Programminecraft cpyCraftCraft>

 

 

-----------------------------------------------------------------

コマンドプロントコンパイル時のエラー2

-----------------------------------------------------------------

 

100%まで実行されCraft.exeを得られるが、エラーにより起動せず

「libssl-1_1.dill が見つからないため、コードの実行を続行できません。プログラムを再インストールすると、この問題が解決する可能性があります。」

「ilbcrypto-1_1.dill が見つからないため、(以下略

 

上記のdillファイルを別でダウンロードし、Craft.exeと同じフォルダに入れることにより解決!

 

Scanning dependencies of target windows
[ 97%] Building C object deps/glfw/tests/CMakeFiles/windows.dir/windows.c.obj
[ 98%] Linking C executable windows.exe
[ 98%] Built target windows
Scanning dependencies of target docs
[100%] Generating HTML documentation
error: tag HTML_HEADER: header file `E:/Program/minecraftcpy/Craft/deps/glfw/docs/header.html' does not exist

↑ header.html については、上記の場所に存在する!

  何らかの理由で認識できない?

       64から32bit版に変更するも変化なし

https://stackoverflow.com/questions/29453833/glfw-makefile-fails-upon-generating-html-documentation-on-ubuntu

症状同じ、参考になる?←ならず

 

depsglfwdocsCMakeFilesdocs.diruild.make:56: recipe for target 'deps/glfw/docs/CMakeFiles/docs' failed
mingw32-make[2]: *** [deps/glfw/docs/CMakeFiles/docs] Error 1
CMakeFilesMakefile2:1170: recipe for target 'deps/glfw/docs/CMakeFiles/docs.dir/all' failed
mingw32-make[1]: *** [deps/glfw/docs/CMakeFiles/docs.dir/all] Error 2
Makefile:128: recipe for target 'all' failed
mingw32-make: *** [all] Error 2

E:Programminecraft cpyCraft>

 

エラー集

  • char const too long

charに入れる際に' 'と" "を混同してないか?

  • error(1360): no space for auto/param *

 
 
コードジェネレータは、特定の関数の自動変数を保持するのに十分な大きさのスペースを見つけることができませんでした。レジスタに渡されるパラメータの中には、この自動領域にもスペースを割り当てる必要があるものがあります。