Minecraft Java插件-如何删除HashMap中存储的所有块

Minecraft Java插件-如何删除HashMap中存储的所有块,java,hashmap,minecraft,Java,Hashmap,Minecraft,我试图存储游戏期间放置的所有块,然后当我运行resetblocks命令或游戏不再运行时,我存储在HashMap中的所有块都将被删除 这就是我储存积木的方式。我只是不知道如何循环通过HashMap并销毁每个块 public HashMap<Block, Location> BlockReset = new HashMap<>(); // WHEN PLACED BLOCK public void onPlace(BlockPlaceEvent event) { Bl

我试图存储游戏期间放置的所有块,然后当我运行resetblocks命令或游戏不再运行时,我存储在HashMap中的所有块都将被删除

这就是我储存积木的方式。我只是不知道如何循环通过HashMap并销毁每个块

public HashMap<Block, Location> BlockReset = new HashMap<>();
// WHEN PLACED BLOCK
public void onPlace(BlockPlaceEvent event) {
    Block block = event.getBlock();
    Location location = block.getLocation();

    if (gameRunning == true) {
        BlockReset.put(block, location);
    }
}
public HashMap BlockReset=new HashMap();
//当放置块时
公共场所无效(BlockPlaceEvent事件){
Block=event.getBlock();
位置=block.getLocation();
if(gameRunning==true){
块重置。放置(块,位置);
}
}

我对minecraft一无所知,我查看了javadoc中关于块接口的内容,没有找到delete方法或类似的方法。我想你更清楚如何处理这件事。相反,我会帮助您使用地图:

class Plugin {
    private Map<Block, Location> blocks = new HashMap<>();

    public void onPlace(BlockPlaceEvent event) {
        Block block = event.getBlock();
        Location location = block.getLocation();
        if (gameRunning == true) {
            blocks.put(block, location);
        }
    }

    public removeAllBlocks() {
        for(Map.Entry<Block, Location> entry : blocks.entrySet()) {
            Block block = entry.getKey();
            Location location entry.getValue();
            block.    // do what do you want with block and location
            location. // block.delete() or other minecraft things
        }
        blocks.clear(); //removes all entries from map, now map is clear;

    }


}
类插件{
私有映射块=新的HashMap();
公共场所无效(BlockPlaceEvent事件){
Block=event.getBlock();
位置=block.getLocation();
if(gameRunning==true){
块。放置(块,位置);
}
}
公共removeAllBlocks(){
for(Map.Entry:blocks.entrySet()){
Block=entry.getKey();
Location-Location-entry.getValue();
block//对block和location做什么
位置//block.delete()或其他minecraft东西
}
blocks.clear();//从映射中删除所有条目,现在映射已清除;
}
}

您不需要HashMap来保存和销毁随后的块,因为位置很重要

创建一个
列表
,并按以下方式执行:

class Plugin {

    private List<Location> blocks = new ArrayList<>();

    public void onPlace(BlockPlaceEvent event) {
        Block block = event.getBlock();
        Location loc = block.getLocation();

        if (gameRunning == true) {
            if (!blocks.contains(loc))
                blocks.add(loc);
        }
    }

    public void destroyPlacedBlocks() {
        for (Location loc : blocks) {
            loc.getWorld().getBlockAt(loc).setType(Material.AIR);
        }
    }
}
类插件{
私有列表块=新的ArrayList();
公共场所无效(BlockPlaceEvent事件){
Block=event.getBlock();
Location loc=block.getLocation();
if(gameRunning==true){
如果(!blocks.contains(loc))
块。添加(loc);
}
}
public void destroplacedblocks(){
用于(位置loc:块){
loc.getWorld().getBlockAt(loc.setType)(Material.AIR);
}
}
}

真诚地

这是javadoc:。以下是关于地图的Java教程:。做一些基础研究,然后尝试一些东西。我在问关于制作minecraft插件以及如何循环使用这个特定的hashmap,因为我找不到这个特定的东西。我不应该添加Java标签,因为这篇文章只吸引了Java窥视者,没有人能帮我解决我的具体问题…:(HashMap是一个HashMap是一个HashMap。你以同样的方式迭代HashMap的条目,无论该映射是否包含Minecraft块、香蕉或任何其他内容。你应该学会阅读文档和收听Java peeps。请忽略我以前的回答,如果你在我删除它之前看到它,它将不起作用。谢谢你的帮助。)注意到这一点,我犯了一个愚蠢的错误,没有事先检查它是否合适。