ServerPlugin MapReset buggt

Dieses Thema im Forum "Programmierung" wurde erstellt von McWizzardDev, 28. November 2015.

  1. McWizzardDev
    Offline

    McWizzardDev

    Registriert seit:
    7. Oktober 2015
    Beiträge:
    58
    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 (Text):
    1. package de.germandev.verioxsurvival;
    2.  
    3. import java.util.LinkedList;
    4. import java.util.List;
    5.  
    6. import org.bukkit.Bukkit;
    7. import org.bukkit.World;
    8. import org.bukkit.block.Block;
    9. import org.bukkit.event.EventHandler;
    10. import org.bukkit.event.Listener;
    11. import org.bukkit.event.block.BlockBreakEvent;
    12. import org.bukkit.event.block.BlockPlaceEvent;
    13. import org.bukkit.event.entity.EntityExplodeEvent;
    14.  
    15. public class MapReset implements Listener{
    16.    
    17.     private Main plugin;
    18.    
    19.     public MapReset(Main main) {
    20.         plugin = main;
    21.         plugin.getServer().getPluginManager().registerEvents(this, plugin);
    22.     }
    23.     private static List<String> CHANGES = new LinkedList<String>();
    24.  
    25.     @SuppressWarnings("deprecation")
    26.     public static void restore() {
    27.         int blocks = 0;
    28.        
    29.         for(String b : CHANGES) {
    30.             String[] blockdata = b.split(":");
    31.            
    32.             int id = Integer.parseInt(blockdata[0]);
    33.             byte data = Byte.parseByte(blockdata[1]);
    34.             World world = Bukkit.getWorld(blockdata[2]);
    35.             int x = Integer.parseInt(blockdata[3]);
    36.             int y = Integer.parseInt(blockdata[4]);
    37.             int z = Integer.parseInt(blockdata[5]);
    38.            
    39.             world.getBlockAt(x, y, z).setTypeId(id);
    40.             world.getBlockAt(x, y, z).setData(data);
    41.             blocks++;
    42.         }
    43.         Bukkit.getConsoleSender().sendMessage("§7Es wurden §c" + blocks + " §7Blöcke entfehrnt");
    44.     }
    45.    
    46.     @SuppressWarnings("deprecation")
    47.     @EventHandler
    48.     public void onBreak(BlockBreakEvent e) {
    49.         Block b = e.getBlock();
    50.         String block = b.getTypeId() + ":" + b.getData() + ":" + b.getWorld().getName() + ":" +b.getX() + ":" + b.getY() + ":" + b.getZ();
    51.         CHANGES.add(block);
    52.     }
    53.     @SuppressWarnings("deprecation")
    54.     @EventHandler
    55.     public void onPlace(BlockPlaceEvent e) {
    56.         Block b2 = e.getBlock();
    57.         String block2 = b2.getTypeId() + ":" + b2.getData() + ":" + b2.getWorld().getName() + ":" +b2.getX() + ":" + b2.getY() + ":" + b2.getZ();
    58.         CHANGES.add(block2);
    59.     }
    60.     @SuppressWarnings("deprecation")
    61.     @EventHandler
    62.     public void onEntityEcploed(EntityExplodeEvent e) {
    63.        
    64.         for(int i = 0; i < e.blockList().size(); i++) {
    65.             Block b = e.blockList().get(i);
    66.             String block = b.getTypeId() + ":" + b.getData() + ":" + b.getWorld().getName() + ":" +b.getX() + ":" + b.getY() + ":" + b.getZ();
    67.             CHANGES.add(block);
    68.         }
    69.     }
    70.  
    71. }
    72.  
    Es wird dann in der Main der Reset ausgeführt, ich hoffe das ihr einen Fehler findet ;)
     
    #1
  2. GPSforLEGENDS
    Offline

    GPSforLEGENDS

    Registriert seit:
    21. März 2014
    Beiträge:
    295
    Ort:
    Bürostuhl
    Minecraft:
    GPSforLEGENDS
    Du platzierst ein Steinblock. Der Steinblock wird in deiner Liste Changes gespeichert. Restore wird ausgeführt. Der Steinblock wird gegen welchen Block getauscht?
    Ich hoffe das reicht, um selbst den Fehler zu finden.
     
    #2
    jensIO gefällt das.
  3. 可愛い
    Offline

    可愛い

    Registriert seit:
    19. Mai 2014
    Beiträge:
    656
    Wenn du die Map restten willst kopier sie einfach neu in den Map Ordner und lad sie dann in Bukkit. Dein Code ist aus mehreren Gründen extrem fragwürdig.
     
    #3
  4. McWizzardDev
    Offline

    McWizzardDev

    Registriert seit:
    7. Oktober 2015
    Beiträge:
    58
    Also es geht halt komischerweiße alles außer das, kannst du mir da einen code senden, ich habe kp wie ich es anders mache
     
    #4