huang520
之前用的是NetherWater
要手动输/nw才能允许地狱放水
有没有不需要指令就可以默认执行的插件哩?

huang520
求助各位大佬,我木有找到此类的插件,看到隔壁几个帖子是用创世神什么的,就是希望可以让普通的玩家不需要用指令什么的都可以在地狱默认放水的插件

XIAOYANG7618
貌似没有的啦

huang520

呜呜呜,俺服里有个孩子想在地狱种大棚,但是每次都要手动输指令

huang520

他们也不愿意看公告,然后就不懂指令是什么

TooLazyToName
了解一下需求,是以后在地狱里水都不受限制,还是只要不依靠指令能够生成一格水就行了。

huang520
TooLazyToName 发表于 2022-2-9 17:00
了解一下需求,是以后在地狱里水都不受限制,还是只要不依靠指令能够生成一格水就行了。 ...

地狱里放水不受限制,比如在地狱里落地水等等,不需要指令去激活的(俺服里几个孩子不看公告,不知道NetherWater的指令)

huang520
TooLazyToName 发表于 2022-2-9 17:00
了解一下需求,是以后在地狱里水都不受限制,还是只要不依靠指令能够生成一格水就行了。 ...

生成水没用哇,指令或者创世神什么的都可以了,就是正常用水桶可以在地狱倒出水来的

TooLazyToName
huang520 发表于 2022-2-9 17:03
生成水没用哇,指令或者创世神什么的都可以了,就是正常用水桶可以在地狱倒出水来的 ...

okk稍等我一下,我写好测试一下发给你

TooLazyToName
试试这个。

有两个小问题:
1. 不会把水桶替换成空桶。
2. 没有权限控制。

TooLazyToName
本帖最后由 TooLazyToName 于 2022-2-9 18:30 编辑

现在会正确的移除水桶并提供空桶了。
附一下源代码。

====== Code Area ======
package com.toolazytoname.minecraft.netherwater;

import com.toolazytoname.minecraft.netherwater.listener.NetherWaterPlacementListener;
import org.bukkit.Bukkit;
import org.bukkit.plugin.PluginLoadOrder;
import org.bukkit.plugin.PluginManager;
import org.bukkit.plugin.java.JavaPlugin;
import org.bukkit.plugin.java.annotation.plugin.Description;
import org.bukkit.plugin.java.annotation.plugin.LoadOn;
import org.bukkit.plugin.java.annotation.plugin.Plugin;
import org.bukkit.plugin.java.annotation.plugin.author.Author;

import java.util.logging.Logger;

/***
* /Main.java
* Main class of the plugin
*/
@Plugin(name = "NetherWaterrr", version = "1.0.1")
@Description(desc = "pluginForTest")
@LoadOn(loadOn = PluginLoadOrder.POSTWORLD)
@Author(name = "Yi")
public class Main extends JavaPlugin {
    PluginManager manager = getServer().getPluginManager();
    Logger log = Bukkit.getLogger();

    @Override
    public void onLoad() {
        super.onLoad();
        manager.enablePlugin(this);
        manager.registerEvents(new NetherWaterPlacementListener(), this);
        log.info("Successfully Loaded");

    }

    @Override
    public void onDisable() {
        super.onDisable();
    }

    @Override
    public void onEnable() {
        super.onEnable();
    }
}

package com.toolazytoname.minecraft.netherwater.listener;

import org.bukkit.Material;
import org.bukkit.World.Environment;
import org.bukkit.block.Block;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerInteractEvent;
import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.ItemStack;

/***
* /listener/NetherWaterPlacementListener.java
* Register Listener and Handle Water Placement Event in Nether.
*/
public class NetherWaterPlacementListener implements Listener {
    @EventHandler
    public void onWaterPlacement(PlayerInteractEvent interactEvent) {
        Inventory inventory = interactEvent.getPlayer().getInventory();
        Block block = interactEvent.getClickedBlock();
        Environment environment = block.getWorld().getEnvironment();
        ItemStack item = interactEvent.getItem();
        Block targetBlock = interactEvent.getClickedBlock().getRelative(interactEvent.getBlockFace());

        if (Environment.NETHER.compareTo(environment) != 0 || Material.WATER_BUCKET.compareTo(item.getType()) != 0 || !targetBlock.isEmpty()) {
            return;
        }

        targetBlock.setType(Material.WATER);
        inventory.remove(item);
        inventory.addItem(new ItemStack(Material.BUCKET));

        interactEvent.setCancelled(true);
    }
}


==== End of Code Area ====
PS: 我现在看着楼主被转账晒尸的帖子有点慌(笑



huang520
TooLazyToName 发表于 2022-2-9 16:10
现在会正确的移除水桶并提供空桶了。
附一下源代码。

Qwa灰常感谢大佬!!!!!太强啦