Wie genau funktionieren Load- und Save-Methoden in Java?

Ich habe folgende Klassen gegeben:

class Person {
  private String firstname;

  private String lastname;

  private String sortname;

  public Person() {
  }

  public Person(String firstname, String lastname) {
    this.firstname = firstname;
    this.lastname = lastname;
    updateSortname();
  }

  public String getFirstname() {
    return firstname;
  }

  public void setFirstname(String firstname) {
    this.firstname = firstname;
    updateSortname();
  }

  public String getLastname() {
    return lastname;
  }

  public void setLastname(String lastname) {
    this.lastname = lastname;
    updateSortname();
  }

  public String getSortname() {
    return sortname;
  }

  public void updateSortname() {
    sortname = lastname + firstname;
  }

  @Override
  public String toString() {
    return firstname + " " + lastname + " (" + sortname + ")";
  }

  public static List<Person> load(String filename) throws IOException {
    return null;
  }

  public static Person load(DataInputStream in) throws IOException {
    return null;
  }

  public static void save(String filename, List<Person> list) throws IOException {
  }

  public static void save(DataOutputStream out, Person person) throws IOException {
  }

  public static List<Person> unserialize(String filename) throws IOException, ClassNotFoundException {
    return null;
  }

  public static void serialize(String filename, List<Person> persons) throws IOException {
  }
}

public class PersonTest {
  public static void main(String[] args) throws IOException, ClassNotFoundException {
    List<Person> persons = new ArrayList<>();
    persons.add(new Person("Willy", "Wonka"));
    persons.add(new Person("Charlie", "Bucket"));
    persons.add(new Person("Grandpa", "Joe"));
    System.out.println(persons);

    Person.save("persons.sav", persons);
    persons = Person.load("persons.sav");
    System.out.println(persons);

    Person.serialize("persons.ser", persons);
    persons = Person.unserialize("persons.ser");
    System.out.println(persons);
  }
}

Mein Problem:

Ich soll für dieses Programm die Methoden load, save, unserialize und serialize definieren. Ich habe bisher nur Beispiele dazu gesehen, mit einzelnen Klassenobjekten, wie z.B. einer Klasse Domino. Wie man dabei mit Arrays arbeitet, ist mir nicht klar und ich würde mich freuen, wenn mir jemand das Thema I/O genauer erklären könnte.

programmieren, Java
Bukkit Java: Public Static String = Target.getName(); nicht in Methode erlaubt. Wie mache ich das Trotzdem. Ich muss das in der Methode machen. Mehr in der Fra?

Hey!

Ich will ein Plugin machen, wo man Spieler in Teams einteilt.

Um einen Spieler zu einem Team zu adden, soll man /set team 1 <Spieler> nutzen.

Und das gleiche noch mit /set team 2 <Spieler>

Ich will die Spieler Namen in einen String haben.

Guckt bitte bei den // -**

wie macht man das?

} else if (args[0].equalsIgnoreCase("team")) {
    if (args[1].equalsIgnoreCase("1")) {
        //TEAM 1 SET
    Player target1 = Bukkit.getPlayer(args[2]);
    p.sendMessage("§aDu wurdest von §5§l" + p.getName() + "§a§r in Team 1 eingesetzt!");
    Bukkit.broadcastMessage("§aDer Spieler §5§l" + target1.getName() + "§r§a wurde von §5§l" + p.getName() + "§r§a in Team §4§l1 §r§aeingesetzt!");

// -HIER SOLL EIN PUBLIC STRING HIN DEN ICH AUS JEDER KLASSE AUFRUFEN KANN // - ODER ETWAS ANDERES ES SOLLTE IRGENDWIE SO SEIN:

   Public Static String Team1 = Target1.getName();

//TEAM 2

} else if (args[1].equalsIgnoreCase("2")) {
    //TEAM 2 SET
    Player target2 = Bukkit.getPlayer(args[2]);
    p.sendMessage("§aDu wurdest von §5§l" + p.getName() + "§a§r in Team 2 eingesetzt!");
    Bukkit.broadcastMessage("§aDer Spieler §5§l" + target2.getName() + "§r§a wurde von §5§l" + p.getName() + "§r§a in Team §4§l2 §r§aeingesetzt!");

mfg colin

Computer, programmieren, Java, Minecraft, Informatik, Bukkit, Bukkit-Plugin, Spigot Server, Spiele und Gaming
Minecraft Sky Factory 4 Server startet nicht?

Hey,

Wollte auf meinen vServer welcher auf Ubuntu läuft eine Minecraft Sky Factory 4 Server installieren, also habe ich alle Datein mit FileZilla auf den Server geschmissen und zuerst die Install.sh ausgeführt das hat auch funktioniert. Jedoch wenn ich die ServerStart.sh start wird mir dies in der Konsole gesagt :

Starting Sky Factory 4 Server...
A problem occurred running the Server launcher.java.lang.reflect.InvocationTargetException
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.base/java.lang.reflect.Method.invoke(Method.java:567)
        at net.minecraftforge.fml.relauncher.ServerLaunchWrapper.run(ServerLaunchWrapper.java:70)
        at net.minecraftforge.fml.relauncher.ServerLaunchWrapper.main(ServerLaunchWrapper.java:34)
Caused by: java.lang.ClassCastException: class jdk.internal.loader.ClassLoaders$AppClassLoader cannot be cast to class java.net.URLClassLoader (jdk.internal.loader.ClassLoaders$AppClassLoader and java.net.URLClassLoader are in module java.base of loader 'bootstrap')
        at net.minecraft.launchwrapper.Launch.<init>(Launch.java:34)
        at net.minecraft.launchwrapper.Launch.main(Launch.java:28)
        ... 6 more
Server, Linux, Java, Ubuntu, Minecraft, Minecraft Server, Minecraft Forge Server
Minecraft Plugin programmieren bei klicken auf Item in speziellen Inventar einen Command ausführen?

Minecraft Plugin programmieren bei klicken auf Item in speziellen Inventar einen Command ausführen?

Wie kann man das machen?

Hier ist mein Sourcecode:

	@Override
	public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
		Player p = (Player) sender;
		if(p.hasPermission("rankup.open")) {
			if((sender instanceof Player)) {
				if(args.length == 0) {
					Inventory inventory = Bukkit.createInventory(null, 93, "§6§lRang Shop"); p.sendMessage("§7Du hast das Rank-Up Menü geöffnet!"); p.openInventory(inventory);  
                ItemStack kosten1 = new ItemStack(Material.GOLD_NUGGET);
                ItemMeta ITEMMETA = kosten1.getItemMeta();
                ITEMMETA.setDisplayName("§4§l10.000$");
                kosten1.setItemMeta(ITEMMETA);
                
                ItemStack kosten2 = new ItemStack(Material.GOLD_NUGGET);
                ItemMeta item = kosten2.getItemMeta();
                item.setDisplayName("§4§l100.000$");
                kosten2.setItemMeta(item);
                
                ItemStack kosten3 = new ItemStack(Material.GOLD_NUGGET);
                ItemMeta halt = kosten3.getItemMeta();
                halt.setDisplayName("§4§l1.000.000$");
                kosten3.setItemMeta(halt);
                
                ItemStack diamond = new ItemStack(Material.DIAMOND_BLOCK);
                ItemMeta itemMeta = diamond.getItemMeta();
                itemMeta.setDisplayName("§b§lDiamond Rang");
                diamond.setItemMeta(itemMeta);


                inventory.setItem(11, diamond);
                
                ItemStack ultra = new ItemStack(Material.EMERALD_BLOCK);
                ItemMeta ItemMeta = ultra.getItemMeta();
                ItemMeta.setDisplayName("§a§lUltra Rang");
                ultra.setItemMeta(ItemMeta);
                
                inventory.setItem(13, ultra);
                
                ItemStack supreme = new ItemStack(Material.PURPUR_BLOCK);
                ItemMeta iTemMeta = supreme.getItemMeta();
                iTemMeta.setDisplayName("§d§lSupreme Rang");
                supreme.setItemMeta(iTemMeta);
                
                inventory.setItem(15, supreme);
                
                ItemStack glass = new ItemStack(Material.STAINED_GLASS_PANE);
                ItemMeta itemmeta = glass.getItemMeta();
                itemmeta.setDisplayName("§6Ränge");
                glass.setItemMeta(itemmeta);
                
                inventory.setItem(0, glass);
                inventory.setItem(1, glass);
                inventory.setItem(2, glass);
                inventory.setItem(3, glass);
                inventory.setItem(4, glass);
                inventory.setItem(5, glass);
                inventory.setItem(6, glass);
                inventory.setItem(7, glass);
                inventory.setItem(8, glass);
                inventory.setItem(9, glass);
                inventory.setItem(10, glass);
                inventory.setItem(12, glass);
                inventory.setItem(14, glass);
                inventory.setItem(16, glass);
                inventory.setItem(17, glass);
                inventory.setItem(18, glass);
                inventory.setItem(19, glass);
                inventory.setItem(20, kosten1);
                inventory.setItem(21, glass);
                inventory.setItem(22, kosten2);
                inventory.setItem(23, glass);
                inventory.setItem(24, kosten3);
                inventory.setItem(25, glass);
                inventory.setItem(26, glass);
                inventory.setItem(27, glass);
                inventory.setItem(28, glass);




                    &nbsp; }
                    }
                {
            
            }
            
        }
            
        
    
    return false;
}
@EventHandler
public void onClick(InventoryClickEvent e) {
&nbsp; if (e.getInventory().getName().equals("§6§lRang Shop")) {
&nbsp; &nbsp; if (e.getCurrentItem() != null &amp;&amp; e.getCurrentItem().getType() != Material.AIR) {
&nbsp; &nbsp; &nbsp; e.setCancelled(true);&nbsp; &nbsp;
&nbsp; &nbsp; }
&nbsp; }
}&nbsp;

  } }

Computer, programmieren, Java, Minecraft, Minecraft Server, Minecraft Plugin
Minecraft Plugin programmieren Item verschieben oder droppen verbieten?
Minecraft Plugin programmieren Item verschieben oder droppen verbieten? Dies ist mein Sourcecode:
import org.bukkit.Bukkit;
import org.bukkit.Material;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta;

public class RankUpCommand implements CommandExecutor {

@Override
public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
    Player p = (Player) sender;
    if(p.hasPermission("rankup.open")) {
        if((sender instanceof Player)) {
            if(args.length == 0) {
                Inventory inventory = Bukkit.createInventory(null, 9*3, "§6§lRank-Up");
                p.openInventory(inventory);
                p.sendMessage("§7Du hast das Rank-Up Menü geöffnet!");
                
                ItemStack diamond = new ItemStack(Material.DIAMOND);
                ItemMeta itemMeta = diamond.getItemMeta();
                itemMeta.setDisplayName("§b§lDiamond Rang");
                diamond.setItemMeta(itemMeta);


                inventory.setItem(11, diamond);
                
                ItemStack ultra = new ItemStack(Material.BEACON);
                ItemMeta ItemMeta = ultra.getItemMeta();
                ItemMeta.setDisplayName("§b§lUltra Rang");
                ultra.setItemMeta(ItemMeta);
                
                inventory.setItem(13, ultra);
                
                ItemStack supreme = new ItemStack(Material.REDSTONE_BLOCK);
                ItemMeta iTemMeta = supreme.getItemMeta();
                iTemMeta.setDisplayName("§4§lSupreme Rang");
                supreme.setItemMeta(iTemMeta);
                
                inventory.setItem(15, supreme);
                
                ItemStack glass = new ItemStack(Material.STAINED_GLASS_PANE);
                ItemMeta itemmeta = glass.getItemMeta();
                itemmeta.setDisplayName("");
                supreme.setItemMeta(itemmeta);
                
                inventory.setItem(0, glass);
                inventory.setItem(1, glass);
                inventory.setItem(2, glass);
                inventory.setItem(3, glass);
                inventory.setItem(4, glass);
                inventory.setItem(5, glass);
                inventory.setItem(6, glass);
                inventory.setItem(7, glass);
                inventory.setItem(8, glass);
                inventory.setItem(9, glass);
                inventory.setItem(10, glass);
                inventory.setItem(12, glass);
                inventory.setItem(14, glass);
                inventory.setItem(16, glass);
                inventory.setItem(17, glass);
                inventory.setItem(18, glass);
                inventory.setItem(19, glass);
                inventory.setItem(20, glass);
                inventory.setItem(21, glass);
                inventory.setItem(22, glass);
                inventory.setItem(23, glass);
                inventory.setItem(24, glass);
                inventory.setItem(25, glass);
                inventory.setItem(26, glass);
                inventory.setItem(27, glass);
                inventory.setItem(28, glass); {
            
                
            }
            
        }
                }
            }
        
    
    return false;
}


}

Bitte hilft mir!

programmieren, Java, Minecraft, Informatik, Minecraft Server, Minecraft Plugin, Plugin Programmieren
Woocommerce "Select options" Text im Add to cart Button ändern?

Moin!

Langsam bin ich wirklich mit meinem Talent am Ende. Ich bin kein Profi Programmierer, aber so grundlegende Dinge kann ich schon. Allerdings bekomme ich eine Sache nicht hin: In meinem Shop (https://breswim.de) bekomme ich es einfach nicht hin auf der Startseite in dem Produkt Grid auf dem Add to cart Button aus "Select options" "Ausführung wählen" oder irgendwas Deutsches zu machen.

Die Seite ist mit WordPress aufgesetzt. Als Shop Plugin nutze ich Woocommerce. Das Produkt Grid was dort zu sehen ist, ist mit dem Essential Add Ons for Elementor Plugin eingebaut.

Ich habe schon die language files von meinem Theme (Savoy) und Woocommerce durchsucht, bin aber einfach nicht fündig geworden. Auch im Internet habe ich natürlich nach Lösungen gesucht und bin hierauf gestoßen: https://www.templatemonster.com/help/de/woocommerce-how-to-change-select-options-text.html Hab ich versucht.. Problem: Mein Theme hat keine custom-functions.php. Habe ich versucht eine neue custom-functions.php anzulegen mit dem dort angegeben Code, hat auch nicht funktioniert.

Kann mir bitte jemand helfen? Ich wäre euch sehr dankbar. :)

Wenn ihr noch weitere Angaben zu meinem Shop benötigt, dann schreibt kurz was ihr braucht und ich werde schnellstmöglich antworten.

Vielen Dank im Voraus!

Computer, Technik, HTML, WordPress, Java, Anwendungsentwicklung, CMS, development, PHP, Technologie, Developing, Woocommerce, Spiele und Gaming
Wie kann ich Minecraft 1.5.2 wieder starten?

Immer wenn ich diese Version von Minecraft starte, erscheint die folgende Fehlermeldung:


      Minecraft has crashed!             ----------------------      

Minecraft has stopped running because it encountered a problem; Failed to start game

A full error report has been saved to C:\Users\User\AppData\Roaming.minecraft\crash-reports\crash-2019-06-30_13.07.41-client.txt - Please include a copy of that file (Not this screen!) if you report this crash to anyone; without it, they will not be able to help fix the crash :(

--- BEGIN ERROR REPORT 1f2e52e2 -------- Full report at: C:\Users\User\AppData\Roaming.minecraft\crash-reports\crash-2019-06-30_13.07.41-client.txt Please show that file to Mojang, NOT just this screen!

Generated 30.06.19 13:07

-- System Details -- Details:     Minecraft Version: 1.5.2     Operating System: Windows 10 (amd64) version 10.0     Java Version: 1.8.0_51, Oracle Corporation     Java VM Version: Java HotSpot(TM) 64-Bit Server VM (mixed mode), Oracle Corporation     Memory: 234931976 bytes (224 MB) / 268435456 bytes (256 MB) up to 2147483648 bytes (2048 MB)     JVM Flags: 8 total; -XX:HeapDumpPath=MojangTricksIntelDriversForPerformance_javaw.exe_minecraft.exe.heapdump -Xmx2G -XX:+UnlockExperimentalVMOptions -XX:+UseG1GC -XX:G1NewSizePercent=20 -XX:G1ReservePercent=20 -XX:MaxGCPauseMillis=50 -XX:G1HeapRegionSize=32M     AABB Pool Size: 0 (0 bytes; 0 MB) allocated, 0 (0 bytes; 0 MB) used     Suspicious classes: No suspicious classes found.     IntCache: cache: 0, tcache: 0, allocated: 0, tallocated: 0     LWJGL: 2.9.0     OpenGL: GeForce GTX 980M/PCIe/SSE2 GL version 4.6.0 NVIDIA 417.22, NVIDIA Corporation     Is Modded: Very likely; Jar signature invalidated     Type: Client (map_client.txt)     Texture Pack: Default     Profiler Position: N/A (disabled)     Vec3 Pool Size: ~~ERROR~~ NullPointerException: null

java.lang.NullPointerException
    at java.io.Reader.<init>(Reader.java:78)
    at java.io.InputStreamReader.<init>(InputStreamReader.java:97)
    at bp.a(SourceFile:64)
    at bp.a(SourceFile:100)
    at net.minecraft.client.Minecraft.a(SourceFile:252)
    at avv.a(SourceFile:56)
    at net.minecraft.client.Minecraft.run(SourceFile:507)
    at java.lang.Thread.run(Thread.java:745)
--- END ERROR REPORT 2dfcf07d ----------

mit der neuesten Minecraft version habe ich keinerlei Probleme.

Vielen Dank für eure Hilfe

Java, Minecraft, Spiele und Gaming
CSS / JavaScript: Hilfe bei Leaflet-Integration?

Hallo Leute,

ich brauche Hilfe bei dieser Arbeit.

1. Es sollen zwei Karten nebeneinander sein. Jedoch soll die rechte Karte eine Here-Map sein. Wie baue ich das in den Code ein (siehe unten)?

Sie müssen http://ivansanchez.gitlab.io/Leaflet.TileLayer.HERE/leaflet-tilelayer-here.js in einem <script>-Tag laden. Danach müsste es mit sowas hier gehen:
L.tileLayer.here({
  appId: 'ViVS62MmsdTJSzwXMlHb',
  appCode: 'bsODmSCzkVqEMR8TnGPHdw'
}).addTo(map);
Statt addTo(map) kommt natürlich der Name Ihrer rechten Karte hin.
appId und appCode sind hier aus dem Beispiel von Ivan Sanchez http://ivansanchez.gitlab.io/Leaflet.TileLayer.HERE/demo.html

________________

2. Außerdem soll die zweite Karte sozusagen synchron/parallel mit der linken Karte verlaufen:

Sie müssen, wenn der Benutzer in der linken Karte zoomt oder sie verschiebt, die rechte Karte aktualisieren. Dazu müssen Sie eine Funktion schreiben, die aufgerufen wird, wenn auf der linken Karte das "zoomend" oder "moveend"-Ereignis auftritt.
Also etwa
map1.on("zoomend", meine_funktion);
und dann in der meine_funktion können Sie auf der rechten Karte "setBounds" aufrufen, um die rechte Karte zu verschieben/zu zoomen. Das "setBounds" muss dabei den aktuellen Ausschnitt der linken Karte übergeben bekommen (getBounds).

_________________________________________________

<html>
  <head>
    <link rel="stylesheet" href="https: //unpkg.com/leaflet@1.4.0/dist/leaflet.css"></link>
    <script src="https: //unpkg.com/leaflet@1.4.0/dist/leaflet.js"></script>
    <script src="http: //unpkg.com/leaflet@1.3.1/dist/leaflet.js"></script>
    <script>
      function initMaps() {
        map = new L.map('meine_map');
        L.tileLayer('https: //{s}.tile.openstreetmap.org/{z}/{x}/{y}.png').addTo(map);
        let karlsruhe = new L.LatLng(49, 8.4);
        map.setView(karlsruhe, 12);
        map1 = new L.map('meine_map1');
        L.tileLayer('http: //{s}.basemaps.cartocdn.com/light_all/{z}/{x}/{y}.png').addTo(map1);
        map1.setView(karlsruhe, 12);

        document.getElementById("suchen").addEventListener("click", suchen);
      }

      async function suchen() {
        let url = new URL('https: //nominatim.openstreetmap.org/search');
        url.searchParams.append('format', 'json');
        url.searchParams.append('q', document.getElementById("ort").value);

        let response = await fetch(url);
        let json = await response.json();
        let box = json[0].boundingbox;

        map.fitBounds([ [ box[0],box[2] ], [ box[1],box[3] ] ]);
        map1.fitBounds([ [ box[0],box[2] ], [ box[1],box[3] ] ]);
      }
    </script>
  </head>
  <body onLoad="initMaps()">
    <div id="meine_map" style="height: 360px; width: 360px;"></div>
    <div id="meine_map1" style="position: absolute; top: 9px; left: 375px; height: 360px; width: 360px;"></div>
    <input type="text" id="ort">
    <button id="suchen">Suchen</button>
  </body>

Anmerkung: Damit der GF-Editor die URLs nicht verfälscht, wurde im Protokoll stets ein Leerzeichen hinzugefügt.

Ich danke euch für die Hilfe im Voraus!

LG

HTML, programmieren, CSS, Java, JavaScript, Informatik, Informatiker
Multithreading mit Bukkit?

Hallo liebe Community,

Ich habe ein Plugin geschrieben, womit 2 Methoden gleichzeitig laufen sollen. Beim Laden des Plugins auf meinen Test-Server kommt nach dem Enabeln eine Fehlermeldung:

[11:00:34 WARN]: Exception in thread "Thread-8"
[11:00:34 WARN]: java.lang.IllegalStateException: Asynchronous scoreboard creation!
[11:00:34 WARN]:    at org.spigotmc.AsyncCatcher.catchOp(AsyncCatcher.java:14)
[11:00:34 WARN]:    at org.bukkit.craftbukkit.v1_8_R1.scoreboard.CraftScoreboardManager.getNewScoreboard(CraftScoreboardManager.java:45)
[11:00:34 WARN]:    at org.bukkit.craftbukkit.v1_8_R1.scoreboard.CraftScoreboardManager.getNewScoreboard(CraftScoreboardManager.java:1)
[11:00:34 WARN]:    at de.nurteam.varo.ScoreboardThread.setScore(ScoreboardThread.java:25)
[11:00:34 WARN]:    at de.nurteam.varo.ScoreboardThread.run(ScoreboardThread.java:44)

Kurze Beschreibung des Plugins:

Ich programmiere an einem Varo-Plugin, indem es einen Scoreboard geben soll, wo steht, wie lange man noch Spielen darf. Dieser Scoreboard soll in einer Schleife laufen, um die Spielzeit zu aktualisieren. Gleichzeitig soll noch eine Methode laufen, die reguliert, wie lange man noch spielen darf und wie groß die Border ist usw.

Nun müssen beide Methoden gleichzeitig laufen, da sie voneinander abhängig sind und das Plugin nicht läuft, wenn eine Methode versagt. Hoffentlich habe ich mich verständlich ausgedrückt:).

Hier sind Teile meines Plugins als Code einsehbar:

//Klasse die Scoreboard und Multithreading managed:
import org.bukkit.Bukkit;
import org.bukkit.scoreboard.DisplaySlot;
import org.bukkit.scoreboard.Objective;
import org.bukkit.scoreboard.Scoreboard;

public class ScoreboardThread extends Thread{

String name;

ScoreboardThread(String s){
    
    this.name = s;


}

public static void setScore() {


    Scoreboard board = Bukkit.getScoreboardManager().getNewScoreboard();
&nbsp; &nbsp; Objective objective = ((org.bukkit.scoreboard.Scoreboard) board).registerNewObjective("abc", "abc");
&nbsp; &nbsp; objective.setDisplaySlot(DisplaySlot.SIDEBAR);
&nbsp; &nbsp; objective.setDisplayName("§6§lWillkommen bei Ravo!");
&nbsp; &nbsp; objective.getScore("§e ").setScore(8);
&nbsp; &nbsp; objective.getScore("§5 ").setScore(6);
&nbsp; &nbsp; objective.getScore("§bDu gehörst zum Team: #").setScore(5);
&nbsp; &nbsp; objective.getScore("§4 ").setScore(4);
&nbsp; &nbsp; objective.getScore("§cUnser TS3-Server: PlusTube.eu ").setScore(3);
&nbsp; &nbsp; objective.getScore("§3 ").setScore(2);
&nbsp; &nbsp; objective.getScore("§2Viel Spaß! ").setScore(1);

}

public void run() {
    if(this.name == "t1") {
        
        setScore();
    }
    if(this.name == "t2") {
        Varo.getPlugin().startChecking();
    }
}

}

Server, programmieren, Java, Minecraft, Plug-in, Bukkit, multithreading, scoreboard, Spigot
Java / GLOOP: Kollision bei dem Billardtisch?

Hallo.

Ich habe ein Problem mit dem Billardtisch, den ich erstellen will. Ich habe es so weit geschafft, einen Tisch mit ein paar Bällen zu erstellen, aber ich weiß nicht, was man machen muss, damit der Ball stehen bleibt, wenn er den Rand vom Tisch berührt (oder die Bälle weiter rollen, wenn einer den anderen trifft).

Der ganze Quelltext:

import GLOOP.*;

public class Billiard {
  GLEntwicklerkamera meineKamera;
  GLLicht meinLicht;
  GLTastatur meineTastatur;
  GLQuader seite1, seite2, seite3, seite4, Tisch;
  GLKugel weiss, schwarz, blau, lila, gelb, grün, orange;

  public Billiard() {
    meineKamera = new GLEntwicklerkamera();
    meinLicht = new GLLicht();
    Tisch = new GLQuader(0, 0, -30, 670, 400, 4);
    seite1 = new GLQuader(350, 0, -20, 20, 450, 20);
    seite2 = new GLQuader(-350, 0, -20, 20, 450, 20);
    seite3 = new GLQuader(0, 212, -20, 700, 20, 20);
    seite4 = new GLQuader(0, -212, -20, 700, 20, 20);

    Tisch.setzeTextur("gfx/Grün.png");
    seite1.setzeTextur("gfx/HOLZ.png");
    seite2.setzeTextur("gfx/HOLZ.png");
    seite3.setzeTextur("gfx/HOLZ.png");
    seite4.setzeTextur("gfx/HOLZ.png");

    weiss = new GLKugel(0, 0, 0, 20);
    weiss.setzeTextur("gfx/weiss.png");
    schwarz = new GLKugel(175, -10, 0, 20);
    schwarz.setzeTextur("gfx/schwarz.png");
    blau = new GLKugel(250, -11, 0, 20);
    blau.setzeTextur("gfx/blau.png");
    lila = new GLKugel(250, -49, 0, 20);
    lila.setzeTextur("gfx/lila.png");
    gelb = new GLKugel(250, 26, 0, 20);
    gelb.setzeTextur("gfx/gelb.png");
    grün = new GLKugel(211, 7, 0, 20);
    grün.setzeTextur("gfx/grun.png");
    orange = new GLKugel(211, -30, 0, 20);
    orange.setzeTextur("gfx/orange.png");
    meineTastatur = new GLTastatur();
  }

  public void fuehreAus() {
    while (!meineTastatur.istGedrueckt(' ')) {
      if (meineTastatur.links()) {
        weiss.verschiebe(-2, 0, 0);
        Sys.warte(5);
      }

      if (meineTastatur.rechts()) {
        weiss.verschiebe(2, 0, 0);
        Sys.warte(5);
      }

      if (meineTastatur.oben()) {
        weiss.verschiebe(0, 2, 0);
        Sys.warte(5);
      }

      if (meineTastatur.unten()) {
        weiss.verschiebe(0, -2, 0);
        Sys.warte(5);
      }
    }
  }
}

Bild zum Beitrag
Ball, Java, Informatik, Kollision, GLOOP

Meistgelesene Beiträge zum Thema Java