🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Q&A

解決済

2回答

807閲覧

Minecraftの土地保護機能について

meoto2408

総合スコア52

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

0グッド

0クリップ

投稿2020/01/02 22:11

編集2020/01/03 07:08

私は現在自作のプラグインにてWorldGuardの土地保護機能に似たものを作っています。その際にWorldGuardのソースコードを見てもわからなかったので質問したいのですが

土地保護機能はどのような仕組みなのでしょうか?

私が予想したのは一番下のコード(簡略)のように
エリアネームの入ったリストをforで回して各ワールド名、XYZを取得、
その大きい方と小さい方の各XYZにイベントに関連した座標が入っているかを確認という方法です。

ですが、この方式だとプレイヤーの侵入を知らせる時などには動いたプレイヤーがいるたびにforで回すためとても負荷がかかると考えています。

なのでどのような方法だと負荷がかからないのか、わかりませんでしょうか?

JAVA

1for (String AreaName : AreaNameList) { 2 world = Area.get(AreaName).getWorld().getName; 3 x = Area.get(AreaName).getX; 4 y = Area.get(AreaName).getY; 5 z = Area.get(AreaName).getZ; 6 // 同じ方法で保護範囲のもう片方の座標を取得しておく 7 if (イベントで関係した座標が保護範囲内なのかどうか(座標の各XYZが範囲内なのかをX <= X <= Xの形でチェック) { 8 // code 9 } 10}

追加1

・WorldGuardとはMinecraftのワールド保護機能を持ったプラグインです(荒らし対策など)
・土地保護機能とはワールド全体ではなく一部(選択した範囲)を保護する機能
・私がWorldGuardの土地保護機能だけを持ったプラグインを作っているのですが、そのソースコードを見てもどのようにイベントに関係した座標が保護範囲内に入っているのかを確認している方法がわかりませんでした。
私が予測したものだととても重たくなってしまうので、、、
ソースコード

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

jimbe

2020/01/03 03:18

「WorldGuard」「土地保護機能」とは何でしょう. また,「WorldGuardのソースコードを見て」何が分からなかったのでしょう.
meoto2408

2020/01/03 07:15

追記いたしました。
jimbe

2020/01/03 08:01

いえ, その「保護」とは何なのかが分からないのですが. ブロックの破壊や移動が出来なくなるのでしょうか. もしブロックに属性を新たに付けられるのであれば, イベントが起きた座標のブロックに保護属性が付いているかのチェックで済むと思います. そうで無ければ, 範囲指定の細かさによっては地道に座標を比較するしか方法は無いのかもしれません. どの程度重くなってしまうのかは, 想像するよりやってみたほうが早いかもしれません. 流石にプラグイン全部をご提示頂いても読めません.
guest

回答2

0

自己解決

負荷対策を考え禁止エリアに抵触した場合10秒間作業不可能にすることにしました。(元のソースコードは使用したまま

投稿2020/01/13 16:26

meoto2408

総合スコア52

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

地図にあらかじめ保護エリアを展開しといて、その領域の内外を判定するのでいいのでは

投稿2020/01/02 22:29

y_waiwai

総合スコア88038

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問