Ähnliche Nicht-Physik verwendet, um Baseball auf Minecraft und Implementierung in Spigot auszudrücken (Ballfang / Tipps)

Andere Artikel

Gebunden Werfen und Schlagen

Fang

Es ist nicht sehr schwierig, den Ballfangteil zu implementieren. Vorerst müssen Sie nur das "ProjectileHitEvent" in die Hand nehmen und mit dem Urteil fortfahren, wenn der Ball den Spieler trifft. Im Fall von SnowballGame können Sie den Ball bedingungslos fangen, wenn Sie einen Gegenstand namens "greifen" haben. Zum Zeitpunkt des Fangens wird der Ball der Entität entfernt und der Ball dem Inventar des fangenden Spielers hinzugefügt. Überraschenderweise erfordert dies allein einige Tipps zum Fangen des Balls, z. B. wenn der Ball und der Spieler nicht "ProjectileHitEvent" nennen, wenn es sich um einen Low-Ground-Ball handelt oder wenn es nur der Zeitpunkt ist, auf dem Boden zu springen. Es gibt eine Szene, die wird. (Wenn ein Outfielder mit einem Schuss auf einen Goro losstürmt, der auf dem Boden kriecht, besteht eine gute Chance, dass er zurückfällt. Real ist real, und für einige Leute war es eine Spezifikation, die ein Trauma hervorruft.)

Aufgabe

Es ist nicht so problematisch, es als Problem zu bezeichnen, aber es gibt immer noch einige unbefriedigende Teile bei der Reproduktion von Baseball mit dieser Spezifikation. Erstens gibt es keine Fehler (Fehler) wie das Schlagen eines Balls. Diesbezüglich ist es möglich, dass ein Fehler mit einer zufälligen Wahrscheinlichkeit auftritt, wenn ein Ereignis aufgerufen wird. Dies kann sich jedoch unangemessen anfühlen, da der Spieler die Wahrscheinlichkeit des Auftretens eines Fehlers nicht kontrollieren kann. Ich möchte es so gestalten, dass die Fähigkeit die Qualität des Spiels in gewissem Maße beeinflusst.

Das andere ist, dass die Schwierigkeit, den Ball selbst zu fangen, zu hoch ist. In Minecraft befindet sich die Trefferbox des Spielers im Grunde genommen in einem Zustand, in dem die Hand gesenkt ist. Mit dieser Spezifikation gibt es also kein Konzept, sozusagen für alle Treffer "einen Ball zu erreichen, um ihn zu fangen" Es wird erforderlich sein, "um die Vorderseite zu wickeln" und den Ball zu fangen. Daher ist es sehr häufig, dass schnelles Goro das Infield passiert, und die Arten von Trefferbällen, die gefangen werden können, sind sehr begrenzt, bis Sie erraten können, wie der Trefferball im Moment des Schlagens mit etwas Spielerfahrung zu fliegen ist. Es war getan worden. Darüber hinaus war der Effekt, "den Arm nicht ausstrecken zu können" beim Fliegenfangen in der Außenfeldverteidigung stärker ausgeprägt, und es gab eine ganze Reihe von Fällen, in denen das Fliegenfangen fehlschlug, selbst wenn sich der Ball fast am Abwurfpunkt befand.

Lösung

Dies ist eine sehr einfache Geschichte, und ich habe es möglich gemacht, den Ball zu fangen, indem ich mit der rechten Maustaste in einen bestimmten Bereich in der Nähe des Balls geklickt habe. Die Rechtsklickerkennung ist `PlayerInteractEvent``` und` event.getAction () `ist Action.RIGHT_CLICK_AIR oder` `RIGHT_CLICK_BLOCK Sie können dies tun, indem Sie bestimmen, also stellen Sie sicher, dass der Spieler einen Greifer in der Nebenhand und nichts in der Haupthand hat (um Fehlfunktionen zu vermeiden). Durch Erfassen des Abstands zwischen dem Ball und dem Spieler innerhalb dieses festgelegten Bereichs kann er außerdem als Index verwendet werden, der die "schlechte Haltung" zum Zeitpunkt des Ballfangs anzeigt. Das heißt, je größer dieser Wert ist, desto wahrscheinlicher ist es, dass ein "Fehler" auftritt. Spielfähigkeiten treten in dem Teil auf, in dem versucht wird, den Ball zum richtigen Zeitpunkt zu fangen, wenn der Abstand zwischen Ihnen und dem Ball am nächsten ist (oder wenn versucht wird, den Ball zu einem früheren Zeitpunkt zu unterdrücken, während die Möglichkeit von Fehlern berücksichtigt wird, um den Schlagmann herauszuholen). Es gibt Platz und das Trefferurteil wird einfach ein wenig erweitert. Selbst wenn die Bewegung etwas langsam ist, hat sich die Reichweite erweitert. Wenn in SnowballGame der Rechtsklick ausgeführt wird und sich der Ball aus den Augen des Spielers auf dem 3 * 4 * 3-Feld befindet, wird der Ball als gefangen beurteilt und anhand von "Math.Random * 8" Wenn der Abstand zum Ball gering ist, wird der Ball erfolgreich gefangen, und wenn er größer ist, ist dies ein Fehler.

tryCatch


//tryCatch(player, player.getEyeLocation(), new Vector(3,4,3), 8)In Form von aufgerufen
//Der Rückgabewert ist boolesch, da es eine Verwendungsmethode gibt, die bequemer ist, wenn Sie den Erfolg oder Misserfolg des Ballfangs kennen.
public static boolean tryCatch(Player player, Location from, Vector range, double rate){
		Collection <Entity> nearByEntities = player.getWorld().getNearbyEntities(from, range.getX(), range.getY(), range.getZ());
		Inventory inventory = player.getInventory();
		for(Entity ball : nearByEntities){
			if(ball.getType() == EntityType.SNOWBALL && Util.isBall(ball)){
				if(Math.random() * rate > from.distance(ball.getLocation())){
					ball.remove();
					ItemStack itemBall = Util.getItemBall();
                    //Wenn im Inventar Platz ist, legen Sie es im Inventar ab, andernfalls legen Sie es als Gegenstand ab
					if(inventory.containsAtLeast(itemBall,1) || inventory.firstEmpty() != -1){
						player.getInventory().addItem(itemBall);
                        return true;
					}else{
						ball.getWorld().dropItem(ball.getLocation(), itemBall);
					}
				}else{
					ball.setGravity(true);
                    //Der Ball, den Sie spielen, fügt einen zufälligen Vektor hinzu, während Sie die Geschwindigkeit zufällig multiplizieren
					ball.setVelocity(ball.getVelocity().multiply(Math.random()).add(Vector.getRandom().multiply(0.3)));
				}
			}
		}
		return false;
}

Tips Hier sind einige der Erkenntnisse, die ich während der Entwicklung von Snowball Game und verwandten Plugins gewonnen habe, die bei der Erstellung anderer Sport-Plugins (oder anderer Plugins) hilfreich sein könnten.

Nicht zufällige, nicht rotierende Implementierung

Knöchelbälle im Baseball und nicht rotierende Bälle, die in anderen Sportarten als Floater oder nicht rotierende Bälle bezeichnet werden, sind extrem anfällig für die Umgebung wie die Atmosphäre, und ihre Stärke besteht darin, dass die Flugbahn unregelmäßig wird. Es ist ein Balltyp. Ich weiß nicht, wie es in anderen Sportarten behandelt wird, aber im Baseball sind Knöchelbälle "moderne magische Bälle", für die es noch keine endgültige Strategie gibt, und wenn sie mit hoher Genauigkeit geworfen werden. Es ist keine Übertreibung zu sagen, dass es ein Stück Romantik ist, wie wenn ein ehemaliger Feldspieler ein erstklassiger Pitcher wird und in der Blütezeit der beste Pitcher der Welt ist, wenn ein Knöchel von etwa 130 kg geworfen wird. Da es sich um einen sich ändernden Ball voller solcher Träume handelt, möchte ich ihn definitiv in das Baseball-Plug-In implementieren, aber leider ist das in Throwing Edition eingeführte Prinzip knöchelig. Änderungen sind unbeschreiblich.

Die Änderung des Knöchels kann nicht durch die Hubkraft aufgrund des hier verwendeten Magnus-Effekts erklärt werden, und der größte Teil der Änderung wird durch "der Baseballball ist kein Ball" verursacht. (Um die Wahrheit zu sagen, selbst wenn es sich um eine wahre Sphäre handelt, treten unregelmäßige Änderungen auf, aber ich werde die Erklärung hier weglassen.) Daher können die Richtung und das Ausmaß der Änderungen nicht durch eine einfache Formel beschrieben werden. Umlaufbahnberechnung erfordert eine ziemlich aufwendige Simulation, Es scheint nicht etwas zu sein, das ein Amateur erreichen kann.

Mit anderen Worten, es ist notwendig, von Anfang an aufzugeben, um die Flugbahn einer nicht rotierenden Kugel fest zu reproduzieren. Darüber hinaus geht es darum, wie nahe die Flugbahn des Bildes am eigentlichen Knöchel liegt.

Bei der Implementierung unregelmäßiger Änderungen ist es am einfachsten, bei jedem Tick einen zufälligen Vektor zum Ball hinzuzufügen. Sicherlich kann dies buchstäblich zu unregelmäßigen Änderungen führen, ist einfach zu implementieren und sieht als Knöcheldarstellung großartig aus. Wenn Sie jedoch tatsächlich den "Knöchelball" werfen, den Sie auf diese Weise implementiert haben, werden Sie sofort ein Gefühl des Unbehagens bemerken. Ein Knöchelball ist in Wirklichkeit ein Ball, der etwa 1 bis 3 Mal vom Krug zum Handschuh des Fängers "schwankt", und es ist völlig unvorhersehbar, in welche Richtung er sich letztendlich drehen wird. Man kann sagen, dass eine Änderung der Flugbahn, wie eine langsame Drehung in Richtung des Schlagmanns und ein plötzlicher Abfall, eine notwendige Voraussetzung für den Ausdruck eines Knöchelballs ist.

Andererseits nimmt dieser "Zufallsvektor" -Knöchelball unvorhersehbare Änderungen vor, verursacht jedoch zu viele "Erschütterungen". Grundsätzlich schreitet es fort, während es sich in verschiedene Richtungen ändert, aber am Ende hebt es häufig die Änderungen in die entgegengesetzten Richtungen auf und kommt zu einer Position, an der es leicht vorherzusagen ist. In schweren Fällen kann der Ball zu einem Ball werden, der sich nicht wesentlich von einem Straight unterscheidet, der nur in der Luft zittert, und die ursprüngliche Schwierigkeit, einen Knöchel zu treffen, kann damit nicht ausgedrückt werden. javaw_20180604_233815F.gif Setzen Sie zufällig auf 0,02 als "Standard für die Größe der zufälligen Änderung" und verwenden Sie den durch `Vector.getRandom () erhaltenen Vektor. Subtrahieren Sie (Vector.getRandom ()). Multiplizieren Sie (2 * zufällig)` als Kugel. Das hinzugefügte ist das obige GIF. Sie können die Bewegung sicherlich von einer Seite zur anderen sehen, aber sie heben sich gegenseitig auf und das Ergebnis ist derselbe Ball, der sich kaum ändert.

Um die Knöchelähnlichkeit auszudrücken, muss sie in einer Form vorliegen, die sich bis zu einem gewissen Grad in eine Richtung ändert, während die Richtung mehrmals geändert wird. Die Methode, einige Änderungsmuster festzulegen und zufällig zu verzweigen, scheint jedoch etwas redundant zu sein.

In SnowballGame wird die Methode "von einem zufälligen Punkt auf der Sinuskurve ausgehen und um eine zufällige Größe vorrücken" bei jedem Tick für x, y, z wiederholt, und der erhaltene Vektor wird dem Ball hinzugefügt. Dies wurde mit ausgedrückt.

Die Änderung in der Umlaufbahn ist einfach, ob x, y und z + ○○ oder- △△ sind. Und der Inhalt der Änderung, die jetzt angestrebt wird, ist, dass "sie für einen unregelmäßigen Zeitraum + oder kontinuierlich sein wird und dann - oder + zu einem unregelmäßigen Zeitpunkt rückgängig gemacht wird". Um dies auszudrücken, reicht es dann aus, mit zunehmendem Wert des Arguments eine Funktion zu haben, die innerhalb eines bestimmten Zeitraums und innerhalb eines bestimmten Wertebereichs zwischen + und-umschaltet. Wenn Sie jedem Tick-Argument einen gebrochenen (zufälligen) Wert dieses Zyklus hinzufügen, sollte sich dieser wie erwartet verhalten. Von allen Funktionen mit diesen Eigenschaften war die einfachste Funktion, die ich kenne, sin (oder cos). Es bewegt sich in regelmäßigen Abständen kontinuierlich im Bereich von 1 bis -1 hin und her. Es wird nicht plötzlich ein großer Wert oder unendlich. (Soweit ich weiss) Natürlich wird es nur verwendet, weil es "bequem" ist und es keine Grundlage gibt, um die Verwendung dieser Sünde zu rechtfertigen. (Apropos, die Nähte des Balls sehen möglicherweise wie eine Sinuskurve aus.) Es ist eine ähnliche nicht-physische und schmutzige Art und Weise, wie manche Wissenschaftler Urtikaria haben, aber sie wird auf diese Weise gewonnen. Der Knöchel, der gemacht wurde, ist ein anständiger Knöchel geworden. javaw_20180605_000615F.gif Der Unterschied ist offensichtlich im Vergleich zu der obigen "Zufallsvektorformel". Dieses Mal fiel es mir schwer, es in die Streikzone zu werfen, aber das Ausmaß der Veränderung war so groß, dass das Match mit dem Schlagmann hergestellt wurde. Der Code zum Implementieren dieses Knöchels lautet wie folgt.

Knuckle


import org.bukkit.Particle;
import org.bukkit.entity.Projectile;
import org.bukkit.metadata.FixedMetadataValue;
import org.bukkit.scheduler.BukkitRunnable;
import org.bukkit.util.Vector;
//Diese Klasse verwendet während der tatsächlichen Implementierung dieselbe ausführbare Datei wie die sich ändernde Kugel.
public class BallMovingTask extends BukkitRunnable {
    private Projectile ball;
    private double random = 0;
    private double x,y,z;

	public BallMovingTask(Projectile ball, double random) {
        this.ball = ball;
        this.random = random;
        if(random != 0){
        	this.x = Math.random() * 2 * Math.PI;
        	this.y = Math.random() * 2 * Math.PI;
        	this.z = Math.random() * 2 * Math.PI;
        }
	}
    @Override
    public void run() {
    	if(ball.isDead()){
    		this.cancel();
    	}
    	Vector velocity = ball.getVelocity();
    	if(random != 0){
            //Ungefähr 15 vom Hügel bis zum Schlagmann-Es werden 20 Ticks angenommen, also jeder Tick 0~0.3 wenn Sie fortfahren 1~Sollte 3 mal "schütteln"
        	this.x += Math.random() * 0.3;
        	this.y += Math.random() * 0.3;
        	this.z += Math.random() * 0.3;
        	Vector toAdd = new Vector(Math.sin(x), Math.sin(y), Math.sin(z));
        	toAdd.multiply(random);
        	velocity.add(toAdd);
    	}
    	ball.setVelocity(velocity);
    }

}

Wenn Sie es möglich machen, den Standard-Zufall für diese Änderungsmenge in der Konfiguration festzulegen, wird er so angepasst, dass er für jeden Spieler einfach zu handhaben ist.

Einzigartiges Messgerät mit Boss Bar

In Bezug auf das Schlagen von Baseball war es möglich, es mit einem Bogen auszudrücken, der ursprünglich eine Lehre hatte, da er die Eigenschaften "Anhalten des Fußes" und "Genauigkeit des Winkels und der Richtung ist nicht so wichtig" aufwies. Wenn Sie andere Sportarten ausdrücken, ist es möglich, dass der Bogen nicht bequem ist. Wenn Sie beispielsweise Fußball ausdrücken, werden in berühmten Spielen Stärkeeinstellungen für den Schießteil verwendet, aber dies mit einem Bogen auszudrücken, ist keine sehr gute Methode. Es besteht das Problem, dass die Bewegungsgeschwindigkeit des Bogens beim Ziehen erheblich abnimmt und die Geschwindigkeit, mit der sich das Messgerät ansammelt, für den Ausdruck des Schusses etwas zu langsam ist. Daher ist in einem solchen Fall eine messgerätartige Benutzeroberfläche mit einem höheren Freiheitsgrad erforderlich.

Daher kann Bossbar als wirksames Mittel verwendet werden. Ursprünglich wurde es nur verwendet, um die verbleibende Stärke von Bossen wie Ender Dragon und Wither anzuzeigen. Wie Sie der Dokumentation entnehmen können, ist jedoch keine bestimmte Entität erforderlich, um den Konstruktor aufzurufen. Um die physische Stärke der Entität widerzuspiegeln, ist es vielmehr erforderlich, den Erhöhungs- / Verringerungsprozess selbst zu schreiben, und umgekehrt kann er zusätzlich zur Anzeige der physischen Stärke frei verwendet werden. Der anzuzeigende Wert kann mithilfe von "Bossbar.setProgress (double)" direkt zwischen 0 und 1 umgeschrieben werden. Wenn Sie also Runnable schreiben und jeden Tick-Wert neu schreiben, wird er mit jeder Geschwindigkeit erhöht oder verringert. Sie können ein Messgerät erstellen. Natürlich gibt es keine störenden Nebenwirkungen wie bei der Verwendung eines Bogens.

Es gibt ein Golfspiel-Plug-In namens OutOfBounds, das auf Snowball Game als Voraussetzung für mein eigenes Plug-In ausgeführt wird. Wir haben einen Festigkeitsmesser mit Boss Bar für die Montage verwendet. Ein Demofilm (GIF) wird auf der Spigot-Seite veröffentlicht. Bitte überprüfen Sie ihn, wenn Sie möchten.

In OutofBounds

Die Spezifikation ist, dass der Trefferteil des Schneeballspiels verwendet wird, um zu beurteilen, ob der Schwung den Ball getroffen hat und wie er getroffen hat.

Um dies auszudrücken, der Ereignis-Listener

PlayerInteract


if(e.getAction() == Action.LEFT_CLICK_AIR || e.getAction() == Action.LEFT_CLICK_BLOCK){
	e.setCancelled(true);
	if(player.hasMetadata("taskID") && player.hasMetadata("bar")){
		int isRight = 1;
		if(player.getMainHand() == MainHand.LEFT){
			isRight = -1;
		}
		Location loc = player.getLocation();
		loc.setYaw(loc.getYaw() - 90 * isRight);
		//Zur Vereinfachung links von der Sichtlinie(Rechtshändig)Angenommen, ein Schwung in Richtung 90 Grad
		Vector swing = loc.getDirection().setY(0).normalize();
		BossBar powerBar = (BossBar)player.getMetadata("bar").get(0).value();
		//Auf der Verlängerung der Sichtlinie 1.Angenommen, die Position von 8 m ist die Position, an der der Schlägerkopf vorbeigeht
		Location start = player.getEyeLocation().add(player.getEyeLocation().getDirection().normalize().multiply(1.8));
		//Schneeballspiel trifft Beurteilungsfunktion
		// tryHit(Teig,Hintern Position,Hit Urteil xyz,Wie der Bogen gezogen wird,Fledermausdynamik,Ballabstoßungskoeffizient)
		SnowballGameAPI.tryHit(player, start, new Vector(1.2,1.2,1.2), (float)powerBar.getProgress(), 1.3, swing, 1);
			Bukkit.getScheduler().cancelTask(player.getMetadata("taskID").get(0).asInt());
			powerBar.removeAll();
			powerBar.setProgress(0.001);
			player.removeMetadata("taskID", plugin);
			return;
		}
		BossBar powerBar = null;
		//Es schien unerwünscht, jedes Mal, wenn Sie schwingen, eine BossBar zu erstellen, also den ersten Schwung jedes Spielers
		//Die nur einmal erstellte wird als Metadaten angegeben und wiederverwendet.
		if(player.hasMetadata("bar")){
			powerBar = (BossBar)player.getMetadata("bar").get(0).value();
			powerBar.setColor(BarColor.GREEN);
		}else{
			powerBar = Bukkit.getServer().createBossBar("Power", BarColor.GREEN, BarStyle.SOLID);
		}
		powerBar.setProgress(0);
		powerBar.addPlayer(player);
		BukkitTask task = new PowerBarTask(powerBar, player).runTaskTimer(plugin, 0, 1);
		player.setMetadata("taskID", new FixedMetadataValue(plugin, task.getTaskId()));
		player.setMetadata("bar", new FixedMetadataValue(plugin, powerBar));
}

Das entsprechende Runnable ist

PowerBarTask


import org.bukkit.boss.BarColor;
import org.bukkit.boss.BossBar;
import org.bukkit.entity.Player;
import org.bukkit.scheduler.BukkitRunnable;

public class PowerBarTask extends BukkitRunnable {
	BossBar bar;
	Player player;
	public PowerBarTask(BossBar bar, Player player){
		this.bar = bar;
		this.player = player;
	}
	@Override
	public void run() {
		if(bar.getProgress() == 1){
			bar.setColor(BarColor.GREEN);
			bar.removeAll();
			this.cancel();
			player.removeMetadata("taskID", Swing.getPlugin(Swing.class));
        //Wir nehmen schnell Anpassungen für das später beschriebene Spielgefühl vor.
		}else if(bar.getProgress() > 0.999){
			bar.setProgress(1);
		}else if(bar.getProgress() > 0.95){
			bar.setProgress(0.9999);
			bar.setColor(BarColor.RED);
		}else{
			bar.setProgress(bar.getProgress() + 0.05);
		}
	}

}

Es ist geworden. Die Einschränkung besteht darin, dass Sie die Aufgaben-ID in Metadaten oder auf andere Weise aufbewahren müssen, da Sie die Aufgabe von außerhalb der Aufgabe abbrechen müssen. Wenn Sie den Fortschritt in Runnable erhöhen und ihn so erhöhen, wie er ist, führt dies zu einem Berechnungsfehler. Da es nicht 1 wird, kann es notwendig sein, ein leicht skurriles Urteil zu fällen. Wenn Sie die Boss-Leiste sofort ausblenden, wenn der Fortschritt 1 sein sollte, ist es schwierig, "die Anzeige anzuhalten, die auf einen vollen Panzer abzielt", und aus Sicht des Spielers verschwindet die Anzeige, bevor sie voll ist. Es ist leicht, das Gefühl zu bekommen, verloren zu sein. Es ist einfacher zu spielen, wenn Sie einen Abstand von einem bis mehreren Ticks festlegen.

Die Originalanzeige, die diese Boss-Leiste verwendet, ist nicht auf die Kategorie der Sportreproduktion wie Fußball beschränkt, es wird jedoch angenommen, dass sie auf verschiedene Arten auf Plug-Ins anderer Genres wie "Reservoir Attack" angewendet werden kann. Warum probierst du es nicht aus, wenn du magst?

Darüber hinaus handelt es sich um ein Memorandum, z. B. ein Urteil mit `` `Vector.isInAABB``` (ohne Projectile HitEvent) und eine (ungefähr) Drop-Point-Vorhersage, die zum Erstellen des Plug-Ins" HR-Bestätigungseffekt "verwendet wird. Es gibt einige Tricks, die geschrieben werden können, aber da es nur wenige andere Anwendungsmethoden als Baseball gibt, werde ich hier enden.

abschließend

Vielleicht ist es nur mein mangelndes Bewusstsein, aber als ich vor diesem Schneeballspiel einen kurzen Blick darauf warf, war ich überrascht, dass die Anzahl der Sportmods und Plug-Ins extrem gering war. (Was MOD betrifft, konnte ich einen Satz von mehreren Sportarten bestätigen, aber es gab fast kein Plug-In.) Ich habe Projekte gesehen, in denen Stadien und Stadien beim Bau moderner Städte gebaut wurden, und Projekte, die tatsächliche Stadien in Minecraft reproduzieren, aber der Teil der tatsächlichen Nutzung der Architektur war bisher. Es scheint, dass er nicht viel Fortschritte gemacht hat. (Ursprünglich veröffentlichte Snowball Game auch das, was es für seinen eigenen Server gemacht hat, auf dem weltweit Dutzende von Stadien gebaut werden.)

Wenn Sie überlegen, Sportarten in Minecraft zu reproduzieren, ist es wahrscheinlich, dass die meisten Sportarten mehr Spaß machen, wenn Sie mit mehreren Personen arbeiten, als wenn Sie sie alleine machen. Daher ist es wichtig, dass sie in Form eines Steckers und nicht in Form eines MOD bereitgestellt werden. Ich persönlich halte das für sinnvoll. Es wäre mir eine Ehre, wenn Sie das Wissen, das ich hier geschrieben habe, nutzen könnten, wenn in Zukunft andere Entwickler auftauchen, die Sport-Plug-Ins erstellen möchten.

Recommended Posts

Ähnliche Nicht-Physik verwendet, um Baseball auf Minecraft und Implementierung in Spigot auszudrücken (Ballfang / Tipps)
Ähnliche Nicht-Physik verwendet, um Baseball auf Minecraft und Implementierung in Spigot auszudrücken (Werfen / Schlagen)
Ähnliche Nicht-Physik verwendet, um Baseball auf Minecraft und Implementierung in Spigot auszudrücken (Ballfang / Tipps)
Ähnliche Nicht-Physik verwendet, um Baseball auf Minecraft und Implementierung in Spigot auszudrücken (Werfen / Schlagen)
Deep Learning von Grund auf neu - Kapitel 4 Tipps für die in Python erlernte Theorie und Implementierung von Deep Learning