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 Code Schnipsel

Dieses Thema im Forum "Programmierung" wurde erstellt von GPSforLEGENDS, 11. Dezember 2014.

?

Wie findet ihr das Thema?

  1. Toll, ich bin gespannt was für Ideen andere haben

    12 Stimme(n)
    70,6%
  2. Sinnlos

    5 Stimme(n)
    29,4%

  1. GPSforLEGENDS
    Offline

    GPSforLEGENDS Vorarbeiter

    Registriert seit:
    21. März 2014
    Beiträge:
    289
    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 (Text):
    1.  
    2. List<Block> blockList = new ArrayList<Block>();
    3.  
    4.     public void onEnable() {
    5.         PluginManager pm = Bukkit.getPluginManager();
    6.         pm.registerEvents(this, this);
    7.      
    8.         Bukkit.getScheduler().scheduleSyncRepeatingTask(this, new Runnable() {
    9.          
    10.             public void run() {
    11.                 for(Block b : blockList){
    12.                     b.getLocation().getWorld().playEffect(b.getLocation(), Effect.SMOKE, 2);
    13.                 }
    14.             }
    15.         }, 20L, 20L);
    16.     }
    17.  
    18.     public void onDisable() {
    19.      
    20.     }
    21.  
    22.     @EventHandler
    23.     public void onBlockPlace(BlockPlaceEvent e){
    24.         Block b = e.getBlock();
    25.         if(b.getType() == Material.STONE_PLATE){
    26.             b.setType(Material.AIR);
    27.             final Block finalb = b;
    28.             blockList.add(finalb);
    29.          
    30.         }
    31.     }
    32.  
    33.     @EventHandler
    34.     public void onPlayerMove(PlayerMoveEvent e){
    35.         Player p = e.getPlayer();
    36.         if(blockList.contains(p.getLocation().getBlock())){
    37.             Block b = p.getLocation().getBlock();
    38.             World w = p.getWorld();
    39.             Location loc = p.getLocation();
    40.             w.createExplosion(loc, 3);
    41.             blockList.remove(b);
    42.         }
    43.     }
    44.  
     
    Zuletzt bearbeitet: 13. Dezember 2014
  2. DerDr4g0n
    Offline

    DerDr4g0n Minecrafter

    Registriert seit:
    17. Oktober 2014
    Beiträge:
    15
    Für jede Mine einen eigenen Task? ... Einer würds auch tun aber musst du wissen.
     
    • Gefällt mir Gefällt mir x 1
  3. DerDr4g0n
    Offline

    DerDr4g0n Minecrafter

    Registriert seit:
    17. Oktober 2014
    Beiträge:
    15
    Der neue Code sieht ja gleich schon mal viel besser aus. ;)
     
  4. Gelox_
    Offline

    Gelox_ Minecrafter

    Registriert seit:
    27. Dezember 2014
    Beiträge:
    1
    Geschlecht:
    männlich
    Code (Text):
    1. public int getPing(Player p) { CraftPlayer cp = (CraftPlayer) p; EntityPlayer ep = cp.getHandle(); return ep.ping; }
    2.  
    3. @EventHandler
    4. public void onLogin(PlayerLoginEvent e) {
    5.   Player p = e.getPlayer();
    6.   if(getPing(p) >= 999) {
    7.     e.disallow(null, "Dein Ping ist eine Schande für uns.");
    8.   } else if(getPing(p) <= 10) {
    9.     e.disallow(null, "PingPlayer sind nicht erwünscht.");
    10.   }
    11. }
    Gruß
    Gelox_
     
    • Gefällt mir Gefällt mir x 3
  5. LarsD1999
    Offline

    LarsD1999 Minecrafter

    Registriert seit:
    18. Februar 2012
    Beiträge:
    9
    Code (Text):
    1. Vector v = new Vector(p.getLocation().getX(), p.getLocation().getY(), p.getLocation().getZ());
    2.              Vector2D min2D = ChunkStore.toChunk(v);
    3.                 Vector min = new Vector(min2D.getBlockX() * 16, 0, min2D.getBlockZ() * 16);
    4.                 Vector max = new Vector(min2D.getBlockX() * 16, 0, min2D.getBlockZ() * 16).add(new Vector(15,127,15));
    5.              
    6.                 CuboidRegionSelector selector = new CuboidRegionSelector();
    7.                 selector.selectPrimary(min);
    8.                 selector.selectSecondary(max);
    9.              
    10.              
    11.                 int x = max.getBlockX();
    12.                 int z = min.getBlockZ();
    13.              
    14.              
    15.              
    16.                 ProtectedCuboidRegion region = new ProtectedCuboidRegion(
    17.                         "chunk_" + x + "_" + z,
    18.                         new BlockVector(min),
    19.                         new BlockVector(max)
    20.         );
    21.    
    22.         DefaultDomain owners = new DefaultDomain();
    23.         owners.addPlayer(main.getWorldGuard().wrapPlayer(>> PLAYER <<));
    24.    
    25.         region.setOwners(owners);
    26.         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 (Text):
    1. public WorldGuardPlugin getWorldGuard() {
    2.          Plugin plugin = Bukkit.getServer().getPluginManager().getPlugin("WorldGuard");
    3.    
    4.          // WorldGuard may not be loaded
    5.          if (plugin == null || !(plugin instanceof WorldGuardPlugin)) {
    6.              return null; // Maybe you want throw an exception instead
    7.          }
    8.    
    9.          return (WorldGuardPlugin) plugin;
    10.      }
    11.  
    12.      public WorldEditPlugin getWorldEdit() {
    13.              Plugin plugin = Bukkit.getServer().getPluginManager().getPlugin("WorldEdit");
    14.            
    15.          // WorldEdit may not be loaded
    16.          if (plugin == null || !(plugin instanceof WorldEditPlugin)) {
    17.              return null; // Maybe you want throw an exception instead
    18.          }
    19.    
    20.          return (WorldEditPlugin) plugin;
    21.      }
    22.     public void onEnable(){
    23.         if(getWorldGuard() == null){
    24.             System.err.print("[ECB] WorldGuard fehlt!");
    25.             System.exit(0);
    26.         }
    27.         if(getWorldEdit() == null){
    28.             System.err.print("[ECB] WorldEdit fehlt!");
    29.             System.exit(0);
    30.         }
    31.     }
    32.  
    33.  
     
  6. DerDr4g0n
    Offline

    DerDr4g0n Minecrafter

    Registriert seit:
    17. Oktober 2014
    Beiträge:
    15
    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().
     
    • Gefällt mir Gefällt mir x 2
  7. LarsD1999
    Offline

    LarsD1999 Minecrafter

    Registriert seit:
    18. Februar 2012
    Beiträge:
    9
    Am Ende ist es der gleiche Effekt / hat den gleichen Sinn. Egal mit welchem Weg man es macht.