LoginSignup

This article is a Private article. Only a writer and users who know the URL can access it.
Please change open range to public in publish setting if you want to share this article with other users.

Minecraft Serverでskriptを使おう

Posted at

はろー

1年の中畑です。UE5で色々してたらコーディング能力もモデリング能力も消えてしまった能無しです!今リハビリ感覚でUnityメインで作業してます。

早速ですが皆さん!
Minecrafはプレイしたことありますか?
fmfmあるようですね。(素晴らしい)
プロコンの皆さんならmodやらdatapackやら使ったことあると思いますが、今回はjavaと統合版がクロスプレイできるspigotServerを構築して、skriptで遊ぼう(gameServerの公開の仕方もやるかも)という感じです。それじゃあやってみよう!

何が起きても自己責任ですからねっ

STEP 1

まずはspigotServerを建てましょう。
やり方は...ggrks
ぶっちゃけクソ簡単なので説明するまでもない

STEP 2
クロスプレイ環境を整えます。まぁこれもくっそ簡単なんですが...
使うのは以下の二つのplugin
1.geyserMC
2.Floodgate
こいつらをserver作成時にできるpluginフォルダーに入れるだけ!
...分からない場合はとりあえずggr

STEP 3
Skriptを導入しよう!
Skriptとは結構便利なpluginで、直感的にプログラミングできるpluginです。
簡易的に説明すると...

Events
Conditions
Effects

の三要素のみで見栄えのいいアイテムや、システムを追加できます。(最悪三要素で、結局三つじゃ足りません...)
要するに、超簡単に面白いことができるってことです!

導入も簡単
DLしてpluginフォルダーに入れるだけ。

STEP 4
Skriptを書こう!
pluginフォルダーからSkripts→scriptsと進んでいって、フォルダ内で「ファイル名.sk」といった感じでファイルを作成しましょう!
作成したファイルを適当なコードエディターで開いて適当にコードを書いていこう!
Skript Hub←このサイトでEventsとかを調べて組み合わせるだけ!(組み合わせ方はggr)
まぁ、いろいろ投げやりで説明を省くのは申し訳ないので私が運営しているサーバーのコードを一部公開しておきます。(許可はとってます。というか私がオーナーなのでOK)

環境はSkript2.7と...そんくらいかも
できなかったらSKrayfall

test.sk
#通常ビーム
function beam(p: player, length: number, dmg: number):
    set {_x} to 0
    set {_l} to 0
    loop {_length} times:  #射程設定&弾道を一時記録
        add 1 to {_x}  #リスト変数のリスト名を1ずつ増やす
        add 0.25 to {_l}  #座標の記録位置を0.25ずつ前方にずらす
        set {_rg%{_x}%} to location {_l} meters infront of {_p}  #リスト変数にプレイヤーの頭から_lメートル分全本の座標を記録
        set {_rg%{_x}%} to location 1.25 meters above {_rg%{_x}%}   #記録した座標をy軸方向に1.25移動させる(偏差でパーティクルの位置がずれるのであらかじめ修正している)
        
        #全てのlocation関係の変数はfunction呼び出し時に保存される
        
    set {_x} to 0  #ロードするリスト変数を変数名0からにセットする
    loop {_length} times:  #射程分繰り返す
        add 1 to {_x}  #ロードするリスト変数を1ずつずらす
        show 4 light blue dust at {_rg%{_x}%}  #色指定自由(今回light blue)
        loop entities in radius 3 around {_rg%{_x}%}:  #記録した座標から3メートル以内のentityを指定
            loop-entity is not {_p}  #指定したentityがプレイヤーなら処理を中断
            damage loop-entity by {_dmg}  #entityにdmgで設定したダメージを与える
            stop  #エンティティ貫通処理を無効化する場合はコメントアウト
        loop blocks in radius 0.1 around {_rg%{_x}%}:  #記録した座標から0.1メートル以内のブロックを指定
            if loop-block is not tall grass, short grass, snow layer, air or water:  #指定したブロックが透過系なら処理を中断
                stop #壁貫通処理を無効化する場合はコメントアウト

こんな感じですかね。
一応functionで作ってあるので使用するときは

test.sk
On right click
    beam(player, 200, 10)

みたいに、On right clickというEventsをつかってさっき作ったbeamというfunctionを呼び出します。
呼び出すときは、
function名(arg, arg, arg)みたいにして使いましょう。
argは場合によって数字だったりtextだったりいろいろあるんで気を付けてね。

以上、Skript講座でした。

STEP 5
作ったサーバーを公開しよう!
やり方は...
えぇーーっと...
ggr

いやぁこればっかりは僕は説明できないんですよね。
理由は2つあって一つ目は、使っているルーターによってやり方が違うからっていうのと、私の環境的に通常のインターネット環境ではなく2重ルーターとかブリッジとかいろいろ環境がクソなので一般的なやり方がわかりませんOrz

最後に
最後まで見てくれてありがとう!
今日教えたことは独学要素が多いので信用してはいけません。あと、分からないことがあったら"Skriptやり方"みたいで調べたら大体海外の記事か、古の日本人が作ったサイトが出てくると思うのでそれ見ながらやってみましょう。

0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up