[1.12.2]鉱石が破壊されたときに1分後に復活するプラグインについて

Modやプラグインの制作/開発に関する質問はこちらへどうぞ。
WakameJP
ID: SWOH4CCB32
記事: 1
登録日時: 2019年11月14日(木) 20:23
Minecraft ID: WakameJP

[1.12.2]鉱石が破壊されたときに1分後に復活するプラグインについて

投稿記事 by WakameJP » 2019年11月14日(木) 20:26

件名のようなプラグインを作りたいのですが、Java初心者のため全くわかりません。
Javaできるかた、詳しく書いてくださると助かります。
0



アバター
じゃんまき
ID: 2541GP3HII
記事: 12
登録日時: 2019年7月03日(水) 18:45
Minecraft ID: JanMaki
いいねされた回数: 1回
連絡する:

Re: [1.12.2]鉱石が破壊されたときに1分後に復活するプラグインについて

投稿記事 by じゃんまき » 2019年11月16日(土) 14:19

importやpackageは省いています。

まずは、例から
メインクラス(JavaPluginを継承しているクラス)のonEnableに

コード: 全て選択

Bukkit.getPluginManager().registerEvents(new OreBreakListener(this), this);
を追加します。
そして、OreBreakListener.javaを新規作成し、以下のコードをコピペしてください。

コード: 全て選択

public final class OreBreakListener implements Listener {
	private Plugin plugin;

	public OreBreakListener(Plugin plugin) {
		this.plugin = plugin;
	}

	@EventHandler
	public void onBreak(BlockBreakEvent event){
		Material material = event.getBlock().getType();
		if (!material.toString().contains("ORE")){
			return;
		}
		new BukkitRunnable() {
			@Override
			public void run(){
				event.getBlock().setType(material);
			}
		}.runTaskLater(plugin,1200);
	}
}
これで、基本的な形は完成です。

以下は説明です。

コード: 全て選択

Bukkit.getPluginManager().registerEvents(new OreBreakListener(this), this);
まずはここで、OreBreakListenerをインスタンス化及びリスナーの登録をしています。

OreBreakListener.java

コード: 全て選択

private Plugin plugin;

public OreBreakListener(Plugin plugin) {
	this.plugin = plugin;
}
ここではOreBreakListenrクラスがインスタンス化された場合にメインクラスを引数として受け取りそれをクラス内の変数に代入をしています。

コード: 全て選択

@EventHandler
public void onBreak(BlockBreakEvent event){
・・・
}
BlockBreakEventはブロックが壊れた場合に呼び出されます。

コード: 全て選択

Material material = event.getBlock().getType();
if (!material.toString().contains("ORE")){
	return;
}
ここでは、壊されたブロックのMaterialの文字列に"ORE"が含まれていない。即ち、鉱石ではない場合に処理を中断するように記述されています。

コード: 全て選択

new BukkitRunnable() {
	@Override
	public void run(){
		event.getBlock().setType(material);
	}
}.runTaskLater(plugin,1200);
ここではBukkitRunnableを使用して1分( 1200tick )を経過させたのちに、ブロックのタイプをもとに戻す処理をしています。
0
[1.8.x~1.15] AntiThirdPerson 三人称視点&PlayerESPチート 対策
 -> https://forum.civa.jp/viewtopic.php?f=15&t=85#p222
【DiscordBot】MinecraftUserChecker ~ユーザ検索Bot~
 -> https://forum.civa.jp/viewtopic.php?f=39&t=456

返信する