1.16.5日本語化リソースパック配布

302個のMODの翻訳が完了したので YouTube にて配布いたします 。翻訳の内容など不備はありますが、無いよりはましだと思って使ってください。翻訳したMODの詳細については、まとめるのが面倒くさいので止めておきます。このリソースパックを導入することがマイクラMOD攻略の近道...

2019年7月16日火曜日

40個のチェストに分配輸送

ラージチェストを最大10x4の40個にアイテムを分配してチェストに入れていくプログラムです。コンフィグでアイテムを登録することで、40個の内の20個のチェストに入れるアイテムを指定できます。露天掘りプログラムとの連携を考えていますので、マイニング専用タートルとアイテム輸送タートルの2台のタートルを使用します。

タートルのインベントリが16個なので、今のところ、24x24の露天掘りが限界なのでチェストは20個あれば足ります。やりすぎた感はあるのですが、脱初心者を目指しています、それが今後につながると思っています。


特徴
回収用のチェストにアイテムが入ると輸送タートルが動き出します
燃料用のチェストには、採掘した石炭を入れます
燃料は自分で補給します
1列目の10個のチェストは、すべて同じアイテム
2列目と3列目はひとつのチェストでひとつのアイテムを登録
4列目のチェストは登録していないアイテムを入れます
縦のチェストの数は可変式で最大10までです


このようにチェストを配置します、前のタートルがマイニングタートルで後ろのタートルが配送タートルです。横がアイテム回収チェスト、その横が燃料チェストです。
プログラムスタート時にタートルに多少の燃料を入れておきます。また燃料のチェストに石炭、木炭を5スタックほど入れておきます。


アイテム回収用のチェストにアイテムが入っていないと輸送タートルは動き出しません。


マイニングタートルがアイテム回収用のチェストにアイテムを入れると輸送タートルが動き出します。


チェスト番号とタートルの配置、採掘場所はこのようになります




--####コンフィグ
local CHEST=10--縦方向のチェストの数、最大10
local COUNT=0--チェストに移動に関する変数

--####"minecraft:アイテム名"
--1列目
local ITEM1RETU="minecraft:cobblestone"--1列目はすべて丸石
--2列目
local ITEM1="minecraft:dirt"--1~5までは土
local ITEM2="minecraft:dirt"
local ITEM3="minecraft:dirt"
local ITEM4="minecraft:dirt"
local ITEM5="minecraft:dirt"
local ITEM6="minecraft:gravel"--6~7までは砂利
local ITEM7="minecraft:gravel"
local ITEM8="minecraft:stone"--8~10までは石類
local ITEM9="minecraft:stone"
local ITEM10="minecraft:stone"
--3列目
local ITEM11="minecraft:sand"--1~3までは砂
local ITEM12="minecraft:sand"
local ITEM13="minecraft:sand"
local ITEM14="minecraft:sandstone"--4~5までは砂岩
local ITEM15="minecraft:sandstone"
local ITEM16="minecraft:redstone"--6番目はレッドストーン
local ITEM17="minecraft:iron_ore"--7番目は鉄鉱石
local ITEM18="minecraft:gold_ore"--8番目は金鉱石
local ITEM19="minecraft:diamond"--9番目はダイヤモンド
local ITEM20="minecraft:emerald"--10番目はエメラルド

--####アイテム回収分別プログラム
turtle.up()--上に行く                     
turtle.turnLeft()--左を向く                       
turtle.forward()--前に行く                       

--####メインの処理                     

--採掘アイテムの回収
for MAIN=1,200 do--MAINの処理を1~200回ループ
    turtle.select(1)--スロット1を選択
    while true do--無限ループの開始
        if turtle.suckDown() then--もしもスロット1にアイテムを回収できたら
           break--無限ループの終わり
           else os.sleep(10)--アイテム回収できなかったら10秒停止
        end--もしもアイテム回収できたらの終わり
    end--無限ループの終わり
    for A=2,16 do--タートルのスロットを2~16までループ変数は、「A」                 
        turtle.select(A)--タートルはスロット変数「A」を選択               
        turtle.suckDown()--下からのアイテムを吸収
    end--スロットのループ「A」の終わり
 
--燃料のチェストに石炭を入れる
    turtle.forward()--前に行く                   
    turtle.forward()--前に行く                   
    for A=1,16 do--タートルのスロットを1~16までループ変数は、「A」                 
        turtle.select(A)--タートルはスロット変数「A」を選択           
        local DATA=turtle.getItemDetail()--関数「DATA」を定義して実行           
        if DATA then--もしもタートルのスロットに「DATA」があるなら           
            if DATA.name=="minecraft:coal" then--もしも「DATA」が石炭なら   
                turtle.dropDown()--下に落とす     
            end--もしもの終わり         
        end--もしもの終わり             
    end--スロットのループ「A」の終わり                             

--1列目ににアイテムを入れる                   
    for B=1,CHEST do--ループ「B」はチェストを移動                     
        turtle.forward()             
        turtle.forward()                 
        for A=1,16 do                 
            turtle.select(A)             
            local DATA=turtle.getItemDetail()             
            if DATA then             
                if DATA.name==ITEM1RETU then       
                   turtle.dropDown()     
                end       
            end           
        end               
    end                   
 
--次の列への移動
    turtle.turnRight()                   
    turtle.forward()                     
    turtle.forward()                     
    turtle.forward()                     
    turtle.turnRight()                   
 
--2列目の一番目のチェストにアイテムを入れる
    for A=1,16 do                 
        turtle.select(A)             
        local DATA=turtle.getItemDetail()             
        if DATA then             
            if DATA.name==ITEM1 then       
               turtle.dropDown()     
            end       
        end           
    end                           

--2列目の2番目以降のチェストにアイテムを入れる             
    for B=1,CHEST-1 do--ループ「B」はチェストを移動                   
        turtle.forward()                 
        turtle.forward()
        COUNT=COUNT+1--ループ「1回」の処理でCOUNT+1
        for A=1,16 do                 
            turtle.select(A)             
            if COUNT==1 then--もしもCOUNTがループ1回目なら
                local DATA=turtle.getItemDetail()             
                if DATA then
                    if DATA.name==ITEM2 then       
                       turtle.dropDown()
                    end
                end
            elseif COUNT==2 then--もしもCOUNTがループ2回目なら
                local DATA=turtle.getItemDetail()             
                if DATA then
                    if DATA.name==ITEM3 then       
                       turtle.dropDown()
                    end
                end
            elseif COUNT==3 then
                local DATA=turtle.getItemDetail()             
                if DATA then
                    if DATA.name==ITEM4 then       
                       turtle.dropDown()
                    end
                end
            elseif COUNT==4 then
                local DATA=turtle.getItemDetail()             
                if DATA then
                    if DATA.name==ITEM5 then       
                       turtle.dropDown()
                    end
                end
            elseif COUNT==5 then
                local DATA=turtle.getItemDetail()             
                if DATA then   
                    if DATA.name==ITEM6 then       
                       turtle.dropDown()
                    end
                end
            elseif COUNT==6 then
                local DATA=turtle.getItemDetail()             
                if DATA then 
                    if DATA.name==ITEM7 then       
                       turtle.dropDown()
                    end
                end
            elseif COUNT==7 then
                local DATA=turtle.getItemDetail()             
                if DATA then
                    if DATA.name==ITEM8 then       
                       turtle.dropDown()
                    end
                end
            elseif COUNT==8 then
                local DATA=turtle.getItemDetail()             
                if DATA then 
                    if DATA.name==ITEM9 then       
                       turtle.dropDown()
                    end
                end
            elseif COUNT==9 then
                local DATA=turtle.getItemDetail()             
                if DATA then
                    if DATA.name==ITEM10 then       
                       turtle.dropDown()                                             
                    end       
                end           
            end--もしもCUNT...の終わり               
        end--ループ「A」の終わり
    end--ループ「B」の終わり
    COUNT=0--COUNTのリセット

--次の列への移動
    turtle.turnLeft()
    turtle.forward()                     
    turtle.forward()                     
    turtle.forward()
    turtle.turnLeft()
 
--3列目の1番目のチェストにアイテムを入れる
    for A=1,16 do                 
        turtle.select(A)             
        local DATA=turtle.getItemDetail()             
        if DATA then             
            if DATA.name==ITEM11 then       
               turtle.dropDown()     
            end       
        end           
    end                           

--3列目の2番目以降のチェストにアイテムを入れる         
    for B=1,CHEST-1 do                   
        turtle.forward()                 
        turtle.forward()
        COUNT=COUNT+1
        for A=1,16 do                 
            turtle.select(A)             
            if COUNT==1 then
                local DATA=turtle.getItemDetail()             
                if DATA then
                    if DATA.name==ITEM12 then       
                       turtle.dropDown()
                    end
                end
            elseif COUNT==2 then
                local DATA=turtle.getItemDetail()             
                if DATA then
                    if DATA.name==ITEM13 then       
                       turtle.dropDown()
                    end
                end
            elseif COUNT==3 then
                local DATA=turtle.getItemDetail()             
                if DATA then
                    if DATA.name==ITEM14 then       
                       turtle.dropDown()
                    end
                end
            elseif COUNT==4 then
                local DATA=turtle.getItemDetail()             
                if DATA then
                    if DATA.name==ITEM15 then       
                       turtle.dropDown()
                    end
                end
            elseif COUNT==5 then
                local DATA=turtle.getItemDetail()             
                if DATA then   
                    if DATA.name==ITEM16 then       
                       turtle.dropDown()
                    end
                end
            elseif COUNT==6 then
                local DATA=turtle.getItemDetail()             
                if DATA then 
                    if DATA.name==ITEM17 then       
                       turtle.dropDown()
                    end
                end
            elseif COUNT==7 then
                local DATA=turtle.getItemDetail()             
                if DATA then
                    if DATA.name==ITEM18 then       
                       turtle.dropDown()
                    end
                end
            elseif COUNT==8 then
                local DATA=turtle.getItemDetail()             
                if DATA then 
                    if DATA.name==ITEM19 then       
                       turtle.dropDown()
                    end
                end
            elseif COUNT==9 then
                local DATA=turtle.getItemDetail()             
                if DATA then
                    if DATA.name==ITEM20 then       
                       turtle.dropDown()                                             
                    end       
                end           
            end               
        end
     
    end
COUNT=0 
--次の列に移動
    turtle.turnRight()                   
    turtle.forward()                     
    turtle.forward()                     
    turtle.forward()                     
    turtle.turnRight()
 
--4列目の1番目のチェストにアイテムを入れる
    for A=1,16 do                 
        turtle.select(A)             
        turtle.dropDown()       
    end                           

--4列目の2番目以降のチェストにアイテムを入れる             
    for B=1,CHEST-1 do--ループ「B」はチェストを移動                   
        turtle.forward()                 
        turtle.forward()                 
        for A=1,16 do                 
            turtle.select(A)             
            turtle.dropDown()     
        end       
    end--ループ「B」の終わり           
                 
--1番最初のチェストに戻る
    turtle.turnRight()
    for C=1,9 do--ループ「C」は、1のチェストに移動
        turtle.forward()
    end--ループ「C」の終わり
 
--燃料チェストで燃料の補給
    turtle.turnLeft()
    turtle.forward()
    turtle.forward()
    turtle.suckDown(1)
    turtle.refuel()
 
--採掘アイテムチェストへ移動
    turtle.forward()
    turtle.forward()
    turtle.turnRight()
    turtle.turnRight()
end--ループ「MAIN」の終わり


Y値75で24x24で露天掘りした結果

単純計算で、24x24x(75-5)=40320個のアイテム回収
※岩盤位置はY値5ですので「-5」
ラージチェストの容量は、6x9x64=3456
回収した丸石の数はラージチェスト8個弱
3456x8=27648個の丸石
露天掘り範囲を広げていくとチェストは、丸石で圧迫されてしまいます

Y値70で256x256を露天掘りをすると
単純計算で、256x256(70-5)=4259840個のアイテム回収
ラージチェストの容量は、6x9x64=3456
4259840÷3456=約1233個のラージチェストが必要となります

いちばん簡単なプログラムであるのなら、1直線にチェストを配置して順番にアイテムを入れていけばいいんですが、それではロマンがないと考えていますので、複雑なプログラムになってしまいました。




縦に40個チェストを並べてアイテムをチェストに入れるだけのプログラムです

turtle.up()
turtle.turnLeft()                 
turtle.forward()
turtle.select(1)
for MAIN=1,200 do
    for A=1,16 do               
        turtle.select(A)             
        turtle.suckDown()
    end
    turtle.forward()
    turtle.forward()
    turtle.suckDown(2)
    turtle.refuel()
    for B=1,40 do               
        turtle.forward()               
        turtle.forward()               
        for A=1,16 do               
            turtle.select(A)           
            turtle.dropDown()   
        end     
    end
    turtle.turnLeft()
    turtle.turnLeft()
    for B=1,40 do               
        turtle.forward()
        turtle.forward()
    end
    turtle.forward()
    turtle.forward()
    turtle.turnLeft()
    turtle.turnLeft()
end

効率を考えると「os.sleep(秒)」をMAINの処理の前に入れた方がいいですね

関連サイト

2019年7月14日日曜日

チェストへの分類輸送

24x24の露天掘りプログラムのクアーリーマイナスの採掘アイテムを入れるチェストは、ラージチェスト1個だけなので当然アイテムはあふれます。必要となるのは、倉庫へのアイテム輸送システム。ただ輸送するだけなら面白くないので丸石、土、鉱石類を仕分けするプログラムを考えました。

タートルのスロットを制御できるかどうかが、プログラムの可能性と高めることになりそうです。

turtle.getItemDetail(スロット)--スロットのアイテムを調べる
このタートルAPIを使いこなせれば色々なことができそうです。

プログラム自体は長くなりましたが、範囲が固定なので内容はかなり簡単です。チェストを増やしてマイクラのアイテムIDを細かく登録すれば、完全なるアイテム輸送管理システムも可能となります。


24x24の範囲を岩盤まで掘りぬいた結果は、丸石のチェストが足りませんでした。土のチェストは空き容量が多かったです。Y値が70と高かったことと地形的なことが要因と考えられます。チェストの数を6x4=24まで増やした方がいいかもしれません。


右から前がマイニングタートル
後ろが輸送タートル
タートルの横がアイテム回収チェスト
その左が燃料チェスト
その他は倉庫チェスト


残りの4x4=16のチェストが倉庫チェストとなります
輸送タートルが分類してチェストに入れていきます


燃料チェストに多少の燃料を入れておきます
マイニングと輸送タートルに多少の燃料を入れてスタート


マイニングタートルは動き出します
輸送タートルは下のチェストにアイテムが入るまで動きだしません


チェストの上で待機中の輸送タートルにマイニングタートルが、回収アイテムをチェストに入れると輸送タートルは、アイテムをチェストから入手して動き出します。


チェストの配置は上記です
採掘アイテムチェストにマイニングタートルが採掘アイテムを入れます
燃料チェストには燃料が入ります
チェスト1~8までは丸石が入ります
チェスト9~12までは土が入ります
チェスト13には鉱石類が入ります
チェスト14~16までには、その他のアイテムが入ります




--####アイテム回収分別プログラム
turtle.up()
turtle.turnLeft()
turtle.forward()

--####メインの処理

--採掘アイテムの回収
for MAIN=1,100 do--MAINの処理を1~100回ループ
turtle.select(1)--スロット1を選択
while true do--無限ループの開始
       if turtle.suckDown() then--スロット1にアイテムを回収できたら
    break--無限ループの終わり
    else os.sleep(10)--アイテム回収できなかったら10秒停止
       end--もしもアイテム回収できたらの終わり
end--無限ループの終わり
for A=2,16 do--タートルのスロットを2~16までループ変数は、「A」
turtle.select(A)--タートルはスロット変数「A」を選択
turtle.suckDown()--下からのアイテムを吸収
end--スロットのループ「A」の終わり
 
--燃料のチェストに石炭を入れる
    turtle.forward()--前に行く
turtle.forward()--前に行く
for A=1,16 do--タートルのスロットを1~16までループ変数は、「A」
turtle.select(A)--タートルはスロット変数「A」を選択
local DATA=turtle.getItemDetail()--関数「DATA」を定義して実行
if DATA then--もしもタートルのスロットに「DATA」があるなら
if DATA.name=="minecraft:coal" then--もしも「DATA」が石炭なら                        turtle.dropDown()--下に落とす
end--もしもの終わり
end--もしもの終わり
end--スロットのループ「A」の終わり

--倉庫、1.2.3.4のチェストに丸石を入れる
for B=1,4 do--ループ「B」はチェストを移動
turtle.forward()
turtle.forward()
for A=1,16 do
turtle.select(A)
local DATA=turtle.getItemDetail()
if DATA then
if DATA.name=="minecraft:cobblestone" then
               turtle.dropDown()
end
end
end
  end

--次の列への移動
    turtle.turnRight()
turtle.forward()
turtle.forward()
turtle.forward()
turtle.turnRight()

--倉庫、5のチェストに丸石を入れる
    for A=1,16 do
turtle.select(A)
local DATA=turtle.getItemDetail()
if DATA then
if DATA.name=="minecraft:cobblestone" then
            turtle.dropDown()
end
end
end

--倉庫、6.7.8のチェストに丸石を入れる
for B=1,3 do--ループ「B」はチェストを移動
turtle.forward()
turtle.forward()
for A=1,16 do
turtle.select(A)
local DATA=turtle.getItemDetail()
if DATA then
if DATA.name=="minecraft:cobblestone" then
                   turtle.dropDown()
end
end
end
end

--次の列への移動
turtle.turnLeft()
    turtle.forward()
turtle.forward()
turtle.forward()
turtle.turnLeft()

--倉庫、9のチェストに土を入れる
for A=1,16 do
turtle.select(A)
local DATA=turtle.getItemDetail()
if DATA then
if DATA.name=="minecraft:dirt" then
            turtle.dropDown()
end
end
end

--倉庫、10.11.12のチェストに土を入れる
for B=1,3 do--ループ「B」はチェストを移動
turtle.forward()
turtle.forward()
for D=1,16 do
turtle.select(D)
local DATA=turtle.getItemDetail()
if DATA then
if DATA.name=="minecraft:dirt" then
                   turtle.dropDown()
end
end
end
end--ループ「B」の終わり

--次の列に移動
turtle.turnRight()
turtle.forward()
turtle.forward()
turtle.forward()
turtle.turnRight()

--倉庫、13のチェストに鉱石を入れる
for A=1,16 do
turtle.select(A)
local DATA=turtle.getItemDetail()
if DATA then
if DATA.name=="minecraft:iron_ore" or
            DATA.name=="minecraft:gold_ore" or
               DATA.name=="minecraft:diamond" or
               DATA.name=="minecraft:redstone" or
               DATA.name=="minecraft:emerald" then
            turtle.dropDown()
end
end
end
--倉庫、14.15.16のチェストに残ったアイテムを入れる
for B=1,3 do--ループ「B」はチェストを移
turtle.forward()
turtle.forward()
for A=1,16 do
turtle.select(A)
turtle.dropDown()
end
end--ループ「B」の終わ

--倉庫、1のチェストに戻る
turtle.turnRight()
for C=1,9 do--ループ「C」は、1のチェストに移動
turtle.forward()
end--ループ「C」の終わり

--燃料チェストで燃料の補給
turtle.turnLeft()
turtle.forward()
turtle.forward()
turtle.suckDown(1)
turtle.refuel()
 
--採掘アイテムチェストへ移動
    turtle.forward()
    turtle.forward()
    turtle.turnRight()
    turtle.turnRight()
end--ループ「MAIN」の終わり


エクセルコピーでやってるもんで、インデントがめんどくなった。

基本となるチェストに指定のアイテムを入れるプログラムです。16のスロットを順番に調べていき、指定したアイテムだったら、下(チェスト)に落とします。

for A=1,16 do--タートルのスロットを1~16まで変更するループ 「A」
  turtle.select(A)--タートルは、1.2.3...とスロットを変更していきます
local DATA=turtle.getItemDetail()--スロットのアイテムを調べる
if DATA then--もしも調べることに成功したら
if DATA.name=="minecraft:cobblestone" then--もしも丸石なら
       turtle.dropDown()--下に落とす
end--もしもの終わり
end--もしもの終わり
end--ループ「A」の終わり


lua、エンター
turtle.getItemDetail(スロット)、エンター

これでどのようにデータが返されているかがわかります
count=64
name="minecraft:cobblestone"
damage=0

タートルの動き出しを制御するプログラムです。採掘アイテムチェストに何も入ってないとタートルを停止させます。「while true do」の無限ループで、スロット1にアイテムを回収できたらプログラムは動き出す、回収できなければスリープ10秒とします。

turtle.select(1)--スロット1を選択
while true do--無限ループの開始
       if turtle.suckDown() then--スロット1にアイテムを回収できたら
     break--無限ループの終わり
     else os.sleep(10)--アイテム回収できなかったら10秒停止
       end--もしもアイテム回収できたらの終わり
end--無限ループの終わり


縦方向にチェストの数を増やすときは、4か所ある「B」のループの最大値を増やします。

for B=1,4 do--ループ「B」はチェストを移動
for B=1,3 do--ループ「B」はチェストを移

関連サイト

2019年7月11日木曜日

露天掘りプログラム

サバイバルのいかなる条件でもタートルは確実に戻って来て、アイテムをチェストに入れて燃料を補給する露天掘りプログラム(クアーリー)です。MOBとの接触でタートルの移動位置が変わることを防止していますので、規則正しい採掘が可能です。採掘範囲は可変式ですが、タートルのインベントリが16スロットであることを考えると最大、24x24となります。回収するアイテムを指定すれば、クアーリープラスの最大サイズの256x256も可能になるでしょう。

タートルが失踪することなく、確実にチェストに戻って来てくれます


サバイバルではこのような土地でも採掘しなければなりません、スタート時には左から燃料のチェストに木炭、石炭を入れます、次にアイテムを入れる空のチェスト、マイニングタートルでプログラムスタートです。

※左手にツルハシ、右手に斧か剣となります

前を掘る、前に行く、下を掘るのプログラムなので前もって整地をする必要がありません


前に原木があってもツルハシで破壊してくれます

タートルは、適正ツールで破壊できるではなく、アイテム回収ができるかが、基本となります。ダイヤのツルハシで石や鉱石類の採掘はもちろん、原木の破壊、MOBへの攻撃も可能です。斧では石や鉱石類の破壊はできますが、アイテム回収はできずに消滅します。


1番目のチェストに採掘アイテムを入れ、2番目のチェストで燃料を補給します

燃料はタートル内にもプールすることができますので、前もって燃料満タンにしておくことができます。さらにコンフィグで燃料なしで動かすこともできますので、初心者は燃料に関してこだわらない方がプログラムを組みやすくなります。

# Configuration file

普通のタートル
#カメの燃料限界
    I:turtleFuelLimit = 20000

Advanced タートル
#高度なカメの燃料限界
    I:advancedTurtleFuelLimit = 100000

燃料を必要としない場合は
#カメが移動するために燃料を必要とするかどうかを設定します
    B:turtlesNeedFuel = true → false に変更


ラージチェスト1個では容量が全く足りません


採掘アイテムがあふれてしまいます。輸送タートルのプログラムを作ったり、ホッパーを使ったり、MODチェストなどの使用をお勧めします。




MOBに当たると押し込んでいきます


押し込んだまま壁に当たると1ブロック分、計算したプログラムがズレてしまいます。このプログラムは、タートルが前や下に行けなかった場合は、MOBに攻撃を繰り返します。


建築ではMOBの影響を受けにくいんですが、露天掘りは地下の状況が見えませんし、MOBの出現によるエラーも考えられます。スタート地点に戻ってくるプログラムには、タートルを規則正しく動かす必要があります。前進や上昇、下降などの動きがズレることは絶対にタブーですので、予測できないMOBへの対処が重要となります。


タートルはカメなので溶岩なんて関係ありません


※MOBに阻まれて上に行けないことは、ないと考えています
※クリーパーの爆発の影響は不明です
※タートルは水流や溶岩の影響は受けません


岩盤まで掘りぬいたタートルはスタート位置に戻ってきます

チェストをセットしてタートルに多少の燃料の補給してプログラムをスタートさせます。

24x24の露天掘りプログラム
--####コンフィグ設定
local TATE=24--縦のサイズ、変更可能
local YOKO=24--横のサイズ、変更可能
local HUKASA=120--深さ、下が岩盤ならプログラムは終了
--ループに使用する変数
local COUNT=0--横に移動する変数
local UP=0--上下に移動する変数
--####何がなんでも前に行く関数
function MAENIIKU()--関数名、MAENIIKU()を定義
    if turtle.forward() then--もしも1、前に行けたらendに飛ぶ
    else--もしも1、前に行けなかったら
        while true do--無限ループを実行
            turtle.dig()--前を破壊
            turtle.attack()--前を攻撃
            if turtle.forward() then--もしも2、前に行けたら
              break--無限ループのブレーク
            end--もしも2、の終わり
        end--無限ループの終わり
    end--もしも1、の終わり
end--関数の終わり
--####何がなんでも下に行く関数
function SITANIIKU()--関数名、SITANIIKU()を定義
    if turtle.down() then--もしも1、下に行けたらendに飛ぶ
    else--もしも1、下に行けなかったら
        while true do--無限ループを実行
            turtle.digDown()--下を破壊
            turtle.attackDown()--下を攻撃
            if turtle.down() then--もしも2、下に行けたら
              break--無限ループのブレーク
            end--もしも2、の終わり
        end--無限ループの終わり
    end--もしも1、の終わり
end--関数の終わり
--####メインの処理
for A=1,HUKASA do--ループA、1~HUKASAまで実行
    for B=1,YOKO/2 do--ループB、1~YOKOまで実行
--奇数列の採掘
        turtle.digDown()--下を壊す
        for C=1,TATE-1 do--ループCは、1~TATE-1まで実行
            MAENIIKU()--関数、前に行く
            turtle.digDown()--下を壊す
        end--ループEの終わり
--列の移動
        turtle.turnRight()--右を向く
        MAENIIKU()--関数、前に行く
        if turtle.turnRight() then--もし右を向いたら
            COUNT=COUNT+1--変数、COUNTに+1追加
        end--もしもの終わり
--偶数列の採掘
        turtle.digDown()--下を壊す
        for D=1,TATE-1 do--ループDは、1~TATE-1まで実行
            MAENIIKU()--関数、前に行く
            turtle.digDown()--下を壊す
        end--ループDの終わり
--列を移動して採掘するか、チェストに行くかを判断
        if COUNT*2==YOKO then--もしCOUNTx2がYOKOのサイズと同じなら
            turtle.turnRight()--右を向く
            UP=UP+1--変数、UPに+1を追加
        else--もしCOUNTx2=YOKOでないなら
            turtle.turnLeft()--左を向く
            MAENIIKU()--関数、前に行く
            turtle.turnLeft()--左を向く
        end--もしもの終わり
    end--ループBの終わり
    COUNT=0--COUNTのリセット
--スタート地点の戻る 
    for E=1,UP do--ループEは、1~UPまで実行
        turtle.up()--上に行く
    end--ループEの終わり
    for F=1,YOKO-1 do--ループFは1~YOKO-1まで実行
        MAENIIKU()--関数、前に行く
    end--ループFの終わり
--チェストにアイテムを入れる 
    MAENIIKU()--関数、前に行く
    for G=1,16 do--ループGは、1~16回まで実行
        turtle.select(G)--アイテムスロットはループGを選択
        turtle.dropDown(64)--アイテムを64個チェストに入れる
    end--ループGの終わり 
--燃料の補給 
    MAENIIKU()--関数、前に行く
    MAENIIKU()--関数、前に行く
    turtle.suckDown(10)--下から入手
    turtle.refuel()--燃料補給
    turtle.turnRight()--右を向く
    turtle.turnRight()--右を向く
    MAENIIKU()--関数、前に行く
    MAENIIKU()--関数、前に行く
    MAENIIKU()--関数、前に行く
    turtle.turnLeft()--左を向く
--採掘の再開する場所に移動 
    for H=1,UP+1 do--ループHは、1~UP+1まで実行
    SITANIIKU()--関数、下に行く
    end--ループHの終わり
--下が岩盤ならループAのHUKASAを終わる
    local ARU,NANIGA=turtle.inspectDown()
--定義、下を調べる、ARUは、何がある、NANIGAは、ブロック名 
    if ARU then--もしも1、下にブロックがあるなら
        if NANIGA.name=="minecraft:bedrock" then
--もしも2、ブロック名が岩盤と同じなら
            for I=1,UP do--ループIは、1~UPまで実行
                turtle.up()--上に行く
            end--ループIの終わり
            break--ブレークする
        end--もしも2、の終わり
    end--もしも1、の終わり
end--ループAの終わり



24x24の露天掘りプログラムの解説

--####コンフィグ部分
TATE、YOKOを変更できます
HUKASAは下が岩盤ならプログラムを終了します
COUNTで横の動きの制御
UPで上下移動の制御

--####関数部分
前に行けなかったら攻撃と破壊を無限ループをMAENIIKUで関数定義
下に行けなかったら攻撃と破壊の無限ループをSITANIIKUで関数定義

--####メイン部分、採掘
ループAで1面を採掘、チェストへの移動、一段下がり、採掘再開
ループBで1面を採掘
ループCで1番目のブロックと1列-1を掘り進む
列の移動、変数COUNT+1を追加
ループDで1番目のブロックと1列-1を掘り進む
COUNTOとYOKOで列の移動かスタート地点に戻るかの選択
「列の移動」ならばループBに戻る
「スタート地点に戻る」ならばループBの終了、変数UPに+1を追加
変数COUNTのリセット
ループEで変数UP分+1上がる
ループFでYOKOに移動した分-1戻る

--####チェストでのタートル動き
1番目のチェストへの移動
ループGでスロットを1~16まで切り替えながらアイテムを落とす
2番目のチェストへの移動
燃料を補給

--####次の段の採掘へのタートルの動き
スタート地点に戻る
ループHで採掘を再開する場所まで下がる
もし下が岩盤ならばループAを終了
ループIでUP分だけ上がりプログラムの終了
もし岩盤でないのなら

--####次の段の採掘
ループBの開始


今後の展開
回収するアイテムを指定して256x256の露天掘りを可能にする
チェストが満杯ならばプログラムを一時停止
燃料が一定量以上タートルに入っているなら燃料を補充しない
回収タートルがチェストのアイテムを回収して倉庫に移動

2019年7月7日日曜日

Sublime Text 3 日本語化

無料で使えて高機能なプログラミングエディター SublimeText3「サブライムテキスト」のツールバーやプルダウンメニューを日本語化する方法です。このエディターは、メニューが多いんで多機能だと思われますが、残念ながらすべて英語です。プラグインを導入して日本語化します。難易度はかなり高めです。




Sublime Text 3 のダウンロード
https://www.sublimetext.com/3
OS に合わせたファイルをダウンロード
ダウンロードした「Sublime Text Setup」でインストールします


日本語化の方法
https://packagecontrol.io/installation
上記の URL を開き SUBLIME TEXT 3 のタブを選択
下の文コピー


Viewのタブより「Show Console」


下の部分に貼り付け


Preferences・・・「Package Control」が・・・
プルダウンメニューに出てくるはずなのに出てこない・・・




仕方ないのでマニュアルで設定します

https://packagecontrol.io/installation
 「Package Control」をクリックしてダウンロード


Preferences のタブより「Browse Packages」



ダウンロードした Package Control を「Installed Packages」フォルダに移動


Preferencesのタブより「Package Control」(今度は出てきました)


プルダウンメニューより「Package Control:Install Package」を選択


「japanize」と入力、エンター


一部が日本語化されました


ここからは「Sublime Text 3」のフォルダでの作業となります

フォルダの場所は
ユーザー>AppData>Roaming>Sublime Text 3

先程インストールファイルを導入した
Preferences のタブより「Browse Packages」から開いた方が楽です

フォルダの場所は
ユーザー>AppData>Roaming>Sublime Text 3


Packages フォルダ内にフォルダを作成し「Default」と名前を付けます


「Japanize」フォルダを開き、フォルダのツールバーより、表示のタブ
ファイル名拡張子にチェックを入れます


Japanize フォルダ内の拡張子に「.jp」が付いたファイルを
Ctrl+クリックで指定選択して


作成した「Default」フォルダに移動


Default フォルダ内のすべてのファイルの拡張子「.jp」を名前の変更で削除
拡張子を・・・のメッセージは、「はい」


拡張子を削除した Default フォルダ内のファイルを「User」フォルダにすべてコピー


日本語化できました

関連サイト

関連コンテンツ