• 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!

Code Schnipsel

GPSforLEGENDS

Vorarbeiter
Registriert
21 März 2014
Beiträge
289
Alter
85
Diamanten
300
Minecraft
GPSforLEGENDS
Dies sollte ein Thema sein in dem ihr kleine code Abschnitte posten sollt, die ihr als lustig oder Sinnvoll erachtet.
Am besten ihr schreibt einfach kurz hin was dieser Schnipsel bewirken soll und in der nächsten Zeile den Code.
Nachfolgende können diesen Schnipsel benutzen.
Mal sehen was ihr alles für Ideen habt und ob man später aus allen Schnipseln ein tolles Bild (Plugin) legen kann ;)
Weiterhin können auch andere Vorschläge machen wie man den Code verbessern könnte.

Ich beginne mal einfach mit einen Schnipsel mit dem Ihr Minen legen könnt und diese durch Rauch gekennzeichnet werden:
Code:
List<Block> blockList = new ArrayList<Block>();
  
    public void onEnable() {
        PluginManager pm = Bukkit.getPluginManager();
        pm.registerEvents(this, this);
      
        Bukkit.getScheduler().scheduleSyncRepeatingTask(this, new Runnable() {
          
            public void run() {
                for(Block b : blockList){
                    b.getLocation().getWorld().playEffect(b.getLocation(), Effect.SMOKE, 2);
                }
            }
        }, 20L, 20L);
    }
  
    public void onDisable() {
      
    }
  
    @EventHandler
    public void onBlockPlace(BlockPlaceEvent e){
        Block b = e.getBlock();
        if(b.getType() == Material.STONE_PLATE){
            b.setType(Material.AIR);
            final Block finalb = b;
            blockList.add(finalb);
          
        }
    }
  
    @EventHandler
    public void onPlayerMove(PlayerMoveEvent e){
        Player p = e.getPlayer();
        if(blockList.contains(p.getLocation().getBlock())){
            Block b = p.getLocation().getBlock();
            World w = p.getWorld();
            Location loc = p.getLocation();
            w.createExplosion(loc, 3);
            blockList.remove(b);
        }
    }
 
Zuletzt bearbeitet:
D

DerDr4g0n

Guest
Dies sollte ein Thema sein in dem ihr kleine code Abschnitte posten sollt, die ihr als lustig oder Sinnvoll erachtet.
Am besten ihr schreibt einfach kurz hin was dieser Schnipsel bewirken soll und in der nächsten Zeile den Code.
Nachfolgende können diesen Schnipsel benutzen.
Mal sehen was ihr alles für Ideen habt und ob man später aus allen Schnipseln ein tolles Bild (Plugin) legen kann ;)

Ich beginne mal einfach mit einen Schnipsel mit dem Ihr Minen legen könnt und diese durch Rauch gekennzeichnet werden:
Code:
@EventHandler
    public void onBlockPlace(BlockPlaceEvent e){
        Block b = e.getBlock();
        if(b.getType() == Material.STONE_PLATE){
            b.setType(Material.AIR);
            final Location blockLoc = b.getLocation();
            final World w = b.getWorld();
            final Block finalb = b;
            final int sched = Bukkit.getScheduler().scheduleSyncRepeatingTask(this, new Runnable() {
              
                public void run() {
                    w.playEffect(blockLoc, Effect.SMOKE, 2);
                }
            }, 1L, 20L);
            blockList.put(finalb, sched);
          
        }
    }
  
    @EventHandler
    public void onPlayerMove(PlayerMoveEvent e){
        Player p = e.getPlayer();
        if(blockList.containsKey(p.getLocation().getBlock())){
            Block b = p.getLocation().getBlock();
            World w = p.getWorld();
            Location loc = p.getLocation();
            w.createExplosion(loc, 3);
            final int sched = blockList.get(b);
            Bukkit.getScheduler().cancelTask(sched);
            blockList.remove(b);
        }
    }

Für jede Mine einen eigenen Task? ... Einer würds auch tun aber musst du wissen.
 

Gelox_

Minecrafter
Registriert
27 Dezember 2014
Beiträge
1
Alter
25
Diamanten
300
Code:
public int getPing(Player p) { CraftPlayer cp = (CraftPlayer) p; EntityPlayer ep = cp.getHandle(); return ep.ping; }

@EventHandler
public void onLogin(PlayerLoginEvent e) {
  Player p = e.getPlayer();
  if(getPing(p) >= 999) {
    e.disallow(null, "Dein Ping ist eine Schande für uns.");
  } else if(getPing(p) <= 10) {
    e.disallow(null, "PingPlayer sind nicht erwünscht.");
  }
}
Gruß
Gelox_
 

LarsD1999

Minecrafter
Registriert
18 Februar 2012
Beiträge
9
Diamanten
0
Code:
Vector v = new Vector(p.getLocation().getX(), p.getLocation().getY(), p.getLocation().getZ());
             Vector2D min2D = ChunkStore.toChunk(v);
                Vector min = new Vector(min2D.getBlockX() * 16, 0, min2D.getBlockZ() * 16);
                Vector max = new Vector(min2D.getBlockX() * 16, 0, min2D.getBlockZ() * 16).add(new Vector(15,127,15));
             
                CuboidRegionSelector selector = new CuboidRegionSelector();
                selector.selectPrimary(min);
                selector.selectSecondary(max);
             
             
                int x = max.getBlockX();
                int z = min.getBlockZ();
             
             
             
                ProtectedCuboidRegion region = new ProtectedCuboidRegion(
                        "chunk_" + x + "_" + z,
                        new BlockVector(min),
                        new BlockVector(max)
        );
    
        DefaultDomain owners = new DefaultDomain();
        owners.addPlayer(main.getWorldGuard().wrapPlayer(>> PLAYER <<));
    
        region.setOwners(owners);
        main.getWorldGuard().getRegionManager(p.getWorld()).addRegion(region);


Das ist ein Codeschnipsel, mitdem man mit der WorldGuard und WorldEdit API einen Chunk per Plugin protecten kann. Ich finde das gut für Citybuild Server :) Ich meine einige große CitybuildServer haben das auch. Vllt hilft das jemanden.

Hier nochmal die Implementierung von WorldEdit und WorldGuard:


Code:
public WorldGuardPlugin getWorldGuard() {
         Plugin plugin = Bukkit.getServer().getPluginManager().getPlugin("WorldGuard");
   
         // WorldGuard may not be loaded
         if (plugin == null || !(plugin instanceof WorldGuardPlugin)) {
             return null; // Maybe you want throw an exception instead
         }
   
         return (WorldGuardPlugin) plugin;
     }
 
     public WorldEditPlugin getWorldEdit() {
             Plugin plugin = Bukkit.getServer().getPluginManager().getPlugin("WorldEdit");
           
         // WorldEdit may not be loaded
         if (plugin == null || !(plugin instanceof WorldEditPlugin)) {
             return null; // Maybe you want throw an exception instead
         }
   
         return (WorldEditPlugin) plugin;
     }
    public void onEnable(){
        if(getWorldGuard() == null){
            System.err.print("[ECB] WorldGuard fehlt!");
            System.exit(0);
        }
        if(getWorldEdit() == null){
            System.err.print("[ECB] WorldEdit fehlt!");
            System.exit(0);
        }
    }
 
D

DerDr4g0n

Guest
Code:
Vector v = new Vector(p.getLocation().getX(), p.getLocation().getY(), p.getLocation().getZ());
             Vector2D min2D = ChunkStore.toChunk(v);
                Vector min = new Vector(min2D.getBlockX() * 16, 0, min2D.getBlockZ() * 16);
                Vector max = new Vector(min2D.getBlockX() * 16, 0, min2D.getBlockZ() * 16).add(new Vector(15,127,15));
            
                CuboidRegionSelector selector = new CuboidRegionSelector();
                selector.selectPrimary(min);
                selector.selectSecondary(max);
            
            
                int x = max.getBlockX();
                int z = min.getBlockZ();
            
            
            
                ProtectedCuboidRegion region = new ProtectedCuboidRegion(
                        "chunk_" + x + "_" + z,
                        new BlockVector(min),
                        new BlockVector(max)
        );
   
        DefaultDomain owners = new DefaultDomain();
        owners.addPlayer(main.getWorldGuard().wrapPlayer(>> PLAYER <<));
   
        region.setOwners(owners);
        main.getWorldGuard().getRegionManager(p.getWorld()).addRegion(region);


Das ist ein Codeschnipsel, mitdem man mit der WorldGuard und WorldEdit API einen Chunk per Plugin protecten kann. Ich finde das gut für Citybuild Server :) Ich meine einige große CitybuildServer haben das auch. Vllt hilft das jemanden.

Hier nochmal die Implementierung von WorldEdit und WorldGuard:


Code:
public WorldGuardPlugin getWorldGuard() {
         Plugin plugin = Bukkit.getServer().getPluginManager().getPlugin("WorldGuard");
  
         // WorldGuard may not be loaded
         if (plugin == null || !(plugin instanceof WorldGuardPlugin)) {
             return null; // Maybe you want throw an exception instead
         }
  
         return (WorldGuardPlugin) plugin;
     }

     public WorldEditPlugin getWorldEdit() {
             Plugin plugin = Bukkit.getServer().getPluginManager().getPlugin("WorldEdit");
          
         // WorldEdit may not be loaded
         if (plugin == null || !(plugin instanceof WorldEditPlugin)) {
             return null; // Maybe you want throw an exception instead
         }
  
         return (WorldEditPlugin) plugin;
     }
    public void onEnable(){
        if(getWorldGuard() == null){
            System.err.print("[ECB] WorldGuard fehlt!");
            System.exit(0);
        }
        if(getWorldEdit() == null){
            System.err.print("[ECB] WorldEdit fehlt!");
            System.exit(0);
        }
    }

Ich würde davon abraten System.exit(0) in einem Plugin zu verwenden. Wenn dann das Plugin deaktivieren setEnabled(false) oder denn Server stoppen. Bukkit.shutdown().
 
Oben