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!

PlugIn Warum geht mein MapReset nicht?

Dieses Thema im Forum "Programmierung" wurde erstellt von McWizzardDev, 11. Oktober 2015.


  1. McWizzardDev
    Offline

    McWizzardDev

    Registriert seit:
    7. Oktober 2015
    Beiträge:
    56
    Geschlecht:
    männlich
    Guten Tag,

    ich mache gerade für mein Plugin einen MapReset, aber die Welt resetet nach einem Reload nicht, woran liegt das



    MapReset:


    Code (Text):
    1. package labyrinth;
    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. @SuppressWarnings("deprecation")
    15. public class MapReset implements Listener{
    16.    
    17.    
    18.    
    19.     private static List<String> chances = new LinkedList<String>();
    20.  
    21.  
    22.     public static void restore() {
    23.         int blocks = 0;
    24.        
    25.         for(String b : chances) {
    26.             String[] blockdata = b.split(":");
    27.            
    28.             int id = Integer.parseInt(blockdata[0]);
    29.             byte data = Byte.parseByte(blockdata[1]);
    30.             World world = Bukkit.getWorld(blockdata[2]);
    31.             int x = Integer.parseInt(blockdata[3]);
    32.             int y = Integer.parseInt(blockdata[4]);
    33.             int z = Integer.parseInt(blockdata[5]);
    34.            
    35.             world.getBlockAt(x, y, z).setTypeId(id);
    36.             world.getBlockAt(x, y, z).setData(data);
    37.             blocks++;  
    38.         }
    39.         System.out.println("[Labyrinth] Die Map wurde resetet " + blocks);
    40.     }
    41.    
    42.     @EventHandler
    43.     public void onBreak(BlockBreakEvent e) {
    44.         Block b = e.getBlock();
    45.         String block = b.getTypeId() + ":" + b.getData() + b.getWorld().getName() + ":" + b.getX() + ":" + b.getY() + ":" + b.getZ();
    46.        
    47.         chances.add(block);
    48.         }
    49.     public void onPlace(BlockPlaceEvent e) {
    50.         Block b = e.getBlock();
    51.         String block = b.getTypeId() + ":" + b.getData() + b.getWorld().getName() + ":" + b.getX() + ":" + b.getY() + ":" + b.getZ();
    52.        
    53.         chances.add(block);
    54.         }
    55.    
    56.     public void onEntetyExploed(EntityExplodeEvent e) {
    57.        
    58.         for(int i = 0; i < e.blockList().size(); i++) {
    59.            
    60.             Block b = e.blockList().get(i);
    61.             String block = b.getTypeId() + ":" + b.getData() + b.getWorld().getName() + ":" + b.getX() + ":" + b.getY() + ":" + b.getZ();
    62.            
    63.             chances.add(block);
    64.         }
    65.     }
    66.    
    67. }
    68.  



    MainKlasse:

    Code (Text):
    1. package labyrinth;
    2.  
    3. import java.io.File;
    4. import java.util.ArrayList;
    5.  
    6. import org.bukkit.Bukkit;
    7. import org.bukkit.configuration.file.FileConfiguration;
    8. import org.bukkit.configuration.file.YamlConfiguration;
    9. import org.bukkit.plugin.PluginManager;
    10. import org.bukkit.plugin.java.JavaPlugin;
    11.  
    12. public class Main extends JavaPlugin{
    13.    
    14.     public File file = new File("plugins/Labyrinth", "save.yml");
    15.     public FileConfiguration cfg = YamlConfiguration.loadConfiguration(this.file);
    16.    
    17.     public String prefix = "§7[§3Labyrinth§7] ";
    18.    
    19.     public ArrayList<String> game = new ArrayList<>();
    20.    
    21.     public ArrayList<String> green = new ArrayList<>();
    22.     public ArrayList<String> red = new ArrayList<>();
    23.     public ArrayList<String> yellow = new ArrayList<>();
    24.     public ArrayList<String> blue = new ArrayList<>();
    25.     public ArrayList<String> lobby = new ArrayList<>();
    26.    
    27.     public void onEnable() {
    28.        
    29.         System.out.println("[Minigame] Das Minigame wurde aktiviert");
    30.        
    31.         registerClasses();
    32.         registerEvents();
    33.        
    34.     }
    35.    
    36.  
    37.     private void registerEvents() {
    38.         PluginManager pm = Bukkit.getPluginManager();
    39.         pm.registerEvents(new MapReset(), this);
    40.        
    41.     }
    42.  
    43.  
    44.     @Override
    45.     public void onDisable() {
    46.         System.out.println("[Labyrinth] Plugin deaktiviert");
    47.         MapReset.restore();
    48.     }
    49.  
    50.  
    51.     private void registerClasses() {
    52.        
    53.         this.getCommand("labyrinth").setExecutor(new Commands(this));
    54.         new JoinListener(this);
    55.         new TeamGui(this);
    56.         new Teams(this);
    57.        
    58.     }
    59.  
    60. }
    61.  


    Würde mich freuen, wenn jemand mir sagen kann, was ich falsch gemacht habe :)
     
  2. GPSforLEGENDS
    Offline

    GPSforLEGENDS

    Registriert seit:
    21. März 2014
    Beiträge:
    289
    Minecraft:
    GPSforLEGENDS
    - warum speicherst du nicht den ganzen Block in deiner Liste?
    - Ich bin mir nicht sicher ob das ein Unterschied macht, aber ich würde über onPlace und onEntetyExploed @EventHandler machen.
    Code (Text):
    1. public void onPlace(BlockPlaceEvent e) {
    2.         Block b = e.getBlock();
    3.         String block = b.getTypeId() + ":" + b.getData() + b.getWorld().getName() + ":" + b.getX() + ":" + b.getY() + ":" + b.getZ();
    4.      
    5.         chances.add(block);
    6.         }
    Code (Text):
    1.  public static void restore() {
    2.         int blocks = 0;
    3.      
    4.         for(String b : chances) {
    5.             String[] blockdata = b.split(":");
    6.          
    7.             int id = Integer.parseInt(blockdata[0]);
    8.             byte data = Byte.parseByte(blockdata[1]);
    9.             World world = Bukkit.getWorld(blockdata[2]);
    10.             int x = Integer.parseInt(blockdata[3]);
    11.             int y = Integer.parseInt(blockdata[4]);
    12.             int z = Integer.parseInt(blockdata[5]);
    13.          
    14.             world.getBlockAt(x, y, z).setTypeId(id);
    15.             world.getBlockAt(x, y, z).setData(data);
    16.             blocks++;
    17.         }
    18.         System.out.println("[Labyrinth] Die Map wurde resetet " + blocks);
    19.     }
    Ich hoffe da siehst du den Fehler selbst.
    - statt System.out.println, bitte den Bukkit logger nutzen

    Werden nur einzelne Blöcke zurückgesetzt oder gar keine?
     
    • Gefällt mir Gefällt mir x 1
  3. McWizzardDev
    Offline

    McWizzardDev

    Registriert seit:
    7. Oktober 2015
    Beiträge:
    56
    Geschlecht:
    männlich
    Das ich das nicht gesehen habe :D, danke für deine Hilfe :)