• Es freut uns dass du in unser Minecraft Forum gefunden hast. Hier kannst du mit über 130.000 Minecraft Fans über Minecraft diskutieren, Fragen stellen und anderen helfen. In diesem Minecraft Forum kannst du auch nach Teammitgliedern, Administratoren, Moderatoren , Supporter oder Sponsoren suchen. Gerne kannst du im Offtopic Bereich unseres Minecraft Forums auch über nicht Minecraft spezifische Themen reden. Wir hoffen dir gefällt es in unserem Minecraft Forum!

MapReset buggt

McWizzardDev

Kuhfänger
Registriert
7 Oktober 2015
Beiträge
56
Alter
30
Diamanten
300
Guten Tag,

Ich arbeite zurzeit an einem MapReset, dieser Speichert alle Blöcke vom letzten Reload und setzt diese beim reload wieder zurück.
Dies klappt auch mit Blöcken die man entfehrnt und EntityExploed (Also z.B CreeperExplosionen), aber Plazierte Blöcke werden nicht zurück gesetzt

*Das Event ist auch registriert, das habe ich getestet, mit einer Nachricht beim Platzieren

MapReset:

Code:
package de.germandev.verioxsurvival;

import java.util.LinkedList;
import java.util.List;

import org.bukkit.Bukkit;
import org.bukkit.World;
import org.bukkit.block.Block;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.block.BlockBreakEvent;
import org.bukkit.event.block.BlockPlaceEvent;
import org.bukkit.event.entity.EntityExplodeEvent;

public class MapReset implements Listener{
   
    private Main plugin;
   
    public MapReset(Main main) {
        plugin = main;
        plugin.getServer().getPluginManager().registerEvents(this, plugin);
    }
    private static List<String> CHANGES = new LinkedList<String>();

    @SuppressWarnings("deprecation")
    public static void restore() {
        int blocks = 0;
       
        for(String b : CHANGES) {
            String[] blockdata = b.split(":");
           
            int id = Integer.parseInt(blockdata[0]);
            byte data = Byte.parseByte(blockdata[1]);
            World world = Bukkit.getWorld(blockdata[2]);
            int x = Integer.parseInt(blockdata[3]);
            int y = Integer.parseInt(blockdata[4]);
            int z = Integer.parseInt(blockdata[5]);
           
            world.getBlockAt(x, y, z).setTypeId(id);
            world.getBlockAt(x, y, z).setData(data);
            blocks++;
        }
        Bukkit.getConsoleSender().sendMessage("§7Es wurden §c" + blocks + " §7Blöcke entfehrnt");
    }
   
    @SuppressWarnings("deprecation")
    @EventHandler
    public void onBreak(BlockBreakEvent e) {
        Block b = e.getBlock();
        String block = b.getTypeId() + ":" + b.getData() + ":" + b.getWorld().getName() + ":" +b.getX() + ":" + b.getY() + ":" + b.getZ();
        CHANGES.add(block);
    }
    @SuppressWarnings("deprecation")
    @EventHandler
    public void onPlace(BlockPlaceEvent e) {
        Block b2 = e.getBlock();
        String block2 = b2.getTypeId() + ":" + b2.getData() + ":" + b2.getWorld().getName() + ":" +b2.getX() + ":" + b2.getY() + ":" + b2.getZ();
        CHANGES.add(block2);
    }
    @SuppressWarnings("deprecation")
    @EventHandler
    public void onEntityEcploed(EntityExplodeEvent e) {
       
        for(int i = 0; i < e.blockList().size(); i++) {
            Block b = e.blockList().get(i);
            String block = b.getTypeId() + ":" + b.getData() + ":" + b.getWorld().getName() + ":" +b.getX() + ":" + b.getY() + ":" + b.getZ();
            CHANGES.add(block);
        }
    }

}

Es wird dann in der Main der Reset ausgeführt, ich hoffe das ihr einen Fehler findet ;)
 
Oben