1. 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!

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. Werbung
    Online

    Werbung

  3. GPSforLEGENDS
    Offline

    GPSforLEGENDS

    Registriert seit:
    21. März 2014
    Beiträge:
    291
    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
    • Gefällt mir Gefällt mir x 1
  4. 可愛い
    Offline

    可愛い

    Registriert seit:
    19. Mai 2014
    Beiträge:
    687
    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
    • Gefällt mir Gefällt mir x 3
  5. 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