McWizzardDev
Kuhfänger
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:
Es wird dann in der Main der Reset ausgeführt, ich hoffe das ihr einen Fehler findet
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