Coding mit Java | Java-basierten APIs

  • Ersteller Ersteller ij9F_i0FaF-d9lrDSDDpDbfo
  • Erstellt am Erstellt am
Status
Für weitere Antworten geschlossen.
ich wollte einen steuerbare mob jedoch gibt es die rot markierten variablen nicht bzw. dort ist ein fehler. kann mir jemand dabei helfen danke? :D

@Override
public void g(float sideMot, float forMot) {
if(this.passenger != null && this.passenger instanceof EntityHuman) {
this.lastYaw = this.yaw = this.passenger.yaw;
this.pitch = this.passenger.pitch * 0.5F;
this.setYawPitch(this.yaw, this.pitch);//Update the pitch and yaw
this.aI = this.aG = this.yaw;
sideMot = ((EntityLiving)this.passenger).aX * 0.5F;
forMot = ((EntityLiving)this.passenger).aY;
if(forMot <= 0.0F) {
forMot *= 0.25F;// Make backwards slower
}

Field jump = null; //Jumping
try{jump = EntityLiving.class.getDeclaredField("aW");}
catch(NoSuchFieldException ex){ex.printStackTrace();}
catch(SecurityException ex){ex.printStackTrace(); }
jump.setAccessible(true);
if (jump != null && this.onGround) { // Wouldn't want it jumping while on the ground would we?
try {
if (jump.getBoolean(this.passenger)) {
double jumpHeight = 0.5D;//Here you can set the jumpHeight
this.motY = jumpHeight; // Used all the time in NMS for entity jumping
}
} catch (IllegalAccessException e) {
e.printStackTrace();
}
}

this.S = 1.0F;// The custom entity will now automatically climb up 1 high blocks
this.aK = this.bH() * 0.1F;
if(!this.world.isStatic) {
this.j(0.35F);//Here is the speed the entity will walk.
super.g(sideMot, forMot);
}


this.ay = this.az;//Some extra things
double d0 = this.locX - this.lastX;
double d1 = this.locZ - this.lastZ;
float f4 = MathHelper.sqrt(d0 * d0 + d1 * d1) * 4.0F;
if(f4 > 1.0F) {
f4 = 1.0F;
}

this.az += (f4 - this.az) * 0.4F;
this.aA += this.az;
} else {
this.S = 0.5F;
this.aK = 0.02F;
super.g(sideMot, forMot);
}
}
ich weiß auch nicht wie die variablen nun heißen
Hier meine Damen und Herren sehen sie, was Copy & Paste bewirkt.
Ende.
 
Hier meine Damen und Herren sehen sie, was Copy & Paste bewirkt.
Ende.
0714719426.png
^^
 
Hey,

ich brauche ein bisschen Hilfe. Ich bin gerade dabei einen Mod mit Hilfe von Forge zu programmieren.
Meine Frage: Wie bekommt man den Block, welcher sich an gegebenen Koordinaten befindet? Ich möchte überprüfen, ob der Block unter einem Spieler ein Air Block ist.
Danke für eure Antworten.

MfG
BlackEagle
 
ich wollte einen steuerbare mob jedoch gibt es die rot markierten variablen nicht bzw. dort ist ein fehler. kann mir jemand dabei helfen danke? :D

@Override
public void g(float sideMot, float forMot) {
if(this.passenger != null && this.passenger instanceof EntityHuman) {
this.lastYaw = this.yaw = this.passenger.yaw;
this.pitch = this.passenger.pitch * 0.5F;
this.setYawPitch(this.yaw, this.pitch);//Update the pitch and yaw
this.aI = this.aG = this.yaw;
sideMot = ((EntityLiving)this.passenger).aX * 0.5F;
forMot = ((EntityLiving)this.passenger).aY;
if(forMot <= 0.0F) {
forMot *= 0.25F;// Make backwards slower
}

Field jump = null; //Jumping
try{jump = EntityLiving.class.getDeclaredField("aW");}
catch(NoSuchFieldException ex){ex.printStackTrace();}
catch(SecurityException ex){ex.printStackTrace(); }
jump.setAccessible(true);
if (jump != null && this.onGround) { // Wouldn't want it jumping while on the ground would we?
try {
if (jump.getBoolean(this.passenger)) {
double jumpHeight = 0.5D;//Here you can set the jumpHeight
this.motY = jumpHeight; // Used all the time in NMS for entity jumping
}
} catch (IllegalAccessException e) {
e.printStackTrace();
}
}

this.S = 1.0F;// The custom entity will now automatically climb up 1 high blocks
this.aK = this.bH() * 0.1F;
if(!this.world.isStatic) {
this.j(0.35F);//Here is the speed the entity will walk.
super.g(sideMot, forMot);
}


this.ay = this.az;//Some extra things
double d0 = this.locX - this.lastX;
double d1 = this.locZ - this.lastZ;
float f4 = MathHelper.sqrt(d0 * d0 + d1 * d1) * 4.0F;
if(f4 > 1.0F) {
f4 = 1.0F;
}

this.az += (f4 - this.az) * 0.4F;
this.aA += this.az;
} else {
this.S = 0.5F;
this.aK = 0.02F;
super.g(sideMot, forMot);
}
}
ich weiß auch nicht wie die variablen nun heißen
Ich finde die Rot markierten Variablen nicht über ihrer Verwendung...
Du kannst mir ja das Hausaufgaben machen auch nicht in einer Variable aufgeben die du mir erst definierst, wenn ich die Aufgabe "gemacht" habe...
 
Hey,

ich brauche ein bisschen Hilfe. Ich bin gerade dabei einen Mod mit Hilfe von Forge zu programmieren.
Meine Frage: Wie bekommt man den Block, welcher sich an gegebenen Koordinaten befindet? Ich möchte überprüfen, ob der Block unter einem Spieler ein Air Block ist.
Danke für eure Antworten.

MfG
BlackEagle

Da du die Koordinaten des Spielers besitzt, nehme ich mal an, du hast auch die Instanz des Spieler selbst. Die Klasse Entity besitzt auch ein Feld worldObj des Typen World. (Ein EntityPlayer ist natürlich auch eine Entity, da EntityPlayer von LivingEntity und LivingEntity von Entity erbt, glaube ich.) Und der Typ World hat dann sehr viele nützliche Methoden zum Abfragen der Blöcke. Für dein Beispiel genügt wahrscheinlich sogar die Methode blockExists(int, int, int), aber natürlich kannst du auch getBlock(int, int, int) benutzten.

Wenn also x, y und z deine Koordinaten sind und entityPlayer halt dein Spieler, dann sollte das hier funktionieren:
Code:
if (entityPlayer.worldObj.blockExists(x, y, z)) { ... }

Nebenbei, ich habe selber noch nie mit Forge gearbeitet (nur Bukkit und so), und das alles in 10 Minuten Recherche herausgefunden. In diesem Artikel (google: minecraft forge get block at coordinates) habe ich gesehen, dass ohne weiteres auf worldObj zugegriffen werden konnte und in den Forge Javadocs habe ich dann die Annahme bestätigt (siehe EntityPlayer und World, google: forge javadocs). Ich möchte dich nicht angreifen, sondern lediglich darauf hinweisen, dass es bei einem solchem unspezifischem Problem meist nicht schwer ist die Lösung im Internet zu finden, da entweder schon jemand das Problem hatte und irgendwo gefragt hat oder die Dokumentation der API genügend Infos zur Verfügung stellt. :)

Auch interessant ist whathaveyoutried.com, wenn du dich nicht scheust einen etwas längeren englischen Text zu lesen, unbedingt lesen! Der Artikel ist es meiner Meinung nach wirklich wert, auch für die Zukunft.

Mit freundlichen Grüßen
1Darco1

PS: Du fragst warum ich das recherchiert hab? Wahrscheinlich, weil ich morgen eine Klausur schreibe und mich davon ablenken will, dass ich eigentlich lernen sollte... ^^
 
Es wurde ja schon oft gefragt, welche Programmierumgebung ihr nutzt. Ich wollte mal wissen, wieso ihr diese nutzt.
 
Da du die Koordinaten des Spielers besitzt, nehme ich mal an, du hast auch die Instanz des Spieler selbst. Die Klasse Entity besitzt auch ein Feld worldObj des Typen World. (Ein EntityPlayer ist natürlich auch eine Entity, da EntityPlayer von LivingEntity und LivingEntity von Entity erbt, glaube ich.) Und der Typ World hat dann sehr viele nützliche Methoden zum Abfragen der Blöcke. Für dein Beispiel genügt wahrscheinlich sogar die Methode blockExists(int, int, int), aber natürlich kannst du auch getBlock(int, int, int) benutzten.

Wenn also x, y und z deine Koordinaten sind und entityPlayer halt dein Spieler, dann sollte das hier funktionieren:
Code:
if (entityPlayer.worldObj.blockExists(x, y, z)) { ... }

Nebenbei, ich habe selber noch nie mit Forge gearbeitet (nur Bukkit und so), und das alles in 10 Minuten Recherche herausgefunden. In diesem Artikel (google: minecraft forge get block at coordinates) habe ich gesehen, dass ohne weiteres auf worldObj zugegriffen werden konnte und in den Forge Javadocs habe ich dann die Annahme bestätigt (siehe EntityPlayer und World, google: forge javadocs). Ich möchte dich nicht angreifen, sondern lediglich darauf hinweisen, dass es bei einem solchem unspezifischem Problem meist nicht schwer ist die Lösung im Internet zu finden, da entweder schon jemand das Problem hatte und irgendwo gefragt hat oder die Dokumentation der API genügend Infos zur Verfügung stellt. :)

Auch interessant ist whathaveyoutried.com, wenn du dich nicht scheust einen etwas längeren englischen Text zu lesen, unbedingt lesen! Der Artikel ist es meiner Meinung nach wirklich wert, auch für die Zukunft.

Mit freundlichen Grüßen
1Darco1

PS: Du fragst warum ich das recherchiert hab? Wahrscheinlich, weil ich morgen eine Klausur schreibe und mich davon ablenken will, dass ich eigentlich lernen sollte... ^^

Hey,

Zunächst danke, dass du dich meinem Problem gewidmet hast, jedoch muss ich dazu sagen, dass ich natürlich zuerst mithilfe der Suchmaschine von Google recherchiert habe. Das Problem dabei ist nur, dass die meisten Beiträge veraltet sind und nicht mehr für die 1.8 funktionieren. So funktioniert auch das, was du mir geschrieben hast, nicht mehr. Dennoch habe ich es jetzt nun auch selbst lösen können.

Jedoch stehe ich wieder vor einem neuen Problem...:
Ich möchte, dass mein Mod den eigenen Spieler automatisch auf "Sneaking", wenn eine Bedingung erfüllt wurde.

Dies sollte eigentlich funktionieren, oder?
Code:
Minecraft.getMinecraft().thePlayer.setSneaking(true);
Aber bei mir funktioniert dies nicht. Wenn ich jedoch Sprinten will geht dies, nur dass ich dann setSprinting(true) aufrufe.

Falls jemand eine Lösung dafür findet, bin ich sehr dankbar.

MfG
BlackEagle
 
Zuletzt bearbeitet:
Hey,

Zunächst danke, dass du dich meinem Problem gewidmet hast, jedoch muss ich dazu sagen, dass ich natürlich zuerst mithilfe der Suchmaschine von Google recherchiert habe. Das Problem dabei ist nur, dass die meisten Beiträge veraltet sind und nicht mehr für die 1.8 funktionieren. So funktioniert auch das, was du mir geschrieben hast, nicht mehr. Dennoch habe ich es jetzt nun auch selbst lösen können. (...)

Oh, tut mir leid, dass ich hier so falsche Fakten verbreite. Zum Glück nimmst du es mir nicht übel... ^^

Vielleicht lässt setSneaking(true) den Spieler ja sneaken, und zwar für einen Tick, denn im nächsten Tick müsst ja durch das überprüfen der entsprechenden Taste (Default: SHIFT) der Spieler wieder auf isSneaking == false gesetzt. Das erklärte zumindest warum setSprinting(true) funktioniert: Dort reicht es ja wenn einmal doppelt gehen (Default: W) oder einmal die Sprint-Taste (Default: CTRL) gedrückt wird, da muss keine konstante Überprüfung stattfinden. Das ist natürlich nicht auf technischer Ebene argumentiert, aber vielleicht hilft es weiter... :D

Mit freundlichen Grüßen
1Darco1
 
Hey,

Zunächst danke, dass du dich meinem Problem gewidmet hast, jedoch muss ich dazu sagen, dass ich natürlich zuerst mithilfe der Suchmaschine von Google recherchiert habe. Das Problem dabei ist nur, dass die meisten Beiträge veraltet sind und nicht mehr für die 1.8 funktionieren. So funktioniert auch das, was du mir geschrieben hast, nicht mehr. Dennoch habe ich es jetzt nun auch selbst lösen können.

Jedoch stehe ich wieder vor einem neuen Problem...:
Ich möchte, dass mein Mod den eigenen Spieler automatisch auf "Sneaking", wenn eine Bedingung erfüllt wurde.

Dies sollte eigentlich funktionieren, oder?
Code:
Minecraft.getMinecraft().thePlayer.setSneaking(true);
Aber bei mir funktioniert dies nicht. Wenn ich jedoch Sprinten will geht dies, nur dass ich dann setSprinting(true) aufrufe.

Falls jemand eine Lösung dafür findet, bin ich sehr dankbar.

MfG
BlackEagle
PHP:
KeyBinding.setKeyBindState( Minecraft.getMinecraft().gameSettings.keyBindSneak.getKeyCode(), true );
Damit simulierst du, dass die Sneak Taste gedrückt ist. (Dürfte immer funktionieren)
 
  • Like
Reaktionen: _BlackEagle_
Hey leute ich habe zwei Fragen an die IntelliJ leute. Bei eclipse ist es so, wenn man Strg Shift O drückt dass die nicht verwendenen imports weggeht, das gelb angestrichen ist.
sprich strg shift o macht, dass man die fehlenden imports importiert und die die nicht verwendenen entfernt.
wie ist das bei intellij so? Bei mir importiert das schon, allerdings ist das so, dass ich die nicht verwendenen imports manuell entfernen muss und das ist nervig, wenn man viele hat..

meine zweite frage wäre ob es möglich ist auf einem workspace mehrere projekte zu erstellen!? bei mir ist es nämlich so, dass ich für jedes plugin ein neues workspace einrichten muss.
erstelle ich ein zweites projekt, wird bei mir kein src/** und out/** oder generell nichts generiert..
ich würde mich freuen wenn ihr antworten würdet.. dankeschön!
 
Hey leute ich habe zwei Fragen an die IntelliJ leute. Bei eclipse ist es so, wenn man Strg Shift O drückt dass die nicht verwendenen imports weggeht, das gelb angestrichen ist.
sprich strg shift o macht, dass man die fehlenden imports importiert und die die nicht verwendenen entfernt.
wie ist das bei intellij so? Bei mir importiert das schon, allerdings ist das so, dass ich die nicht verwendenen imports manuell entfernen muss und das ist nervig, wenn man viele hat..

Bei IntelliJ kannst du nicht gebrauchte imports mit "Strg + Alt + O" entfernen oder "ToolBar -> Code -> Optimize Imports" und Nicht Importierte imports mit "Strg + Alt + B" importieren oder "Navigate -> Implementatnion(s)"

meine zweite frage wäre ob es möglich ist auf einem workspace mehrere projekte zu erstellen!? bei mir ist es nämlich so, dass ich für jedes plugin ein neues workspace einrichten muss.
erstelle ich ein zweites projekt, wird bei mir kein src/** und out/** oder generell nichts generiert..
ich würde mich freuen wenn ihr antworten würdet.. dankeschön!

Ich weis nicht ganz wie du das meinst wen du das so meinst:

24f5e76e6d.png

Dan kommt das hier dem am nächsten.

File -> Close Project
b124c8b00b.png

So wie bei Eclipse gibt es dass meines Wissens jedoch nicht in IntelliJ.
 
Hey leute ich habe zwei Fragen an die IntelliJ leute. Bei eclipse ist es so, wenn man Strg Shift O drückt dass die nicht verwendenen imports weggeht, das gelb angestrichen ist.
sprich strg shift o macht, dass man die fehlenden imports importiert und die die nicht verwendenen entfernt.
wie ist das bei intellij so? Bei mir importiert das schon, allerdings ist das so, dass ich die nicht verwendenen imports manuell entfernen muss und das ist nervig, wenn man viele hat..
Bei IntelliJ gibt es auch die Möglichkeit, dass nicht verwendete imports automatisch entfernt werden. Diese Funktion wird bei Settings/Editor/Auto Import mit einem Häkchen bei "Optimize imports on the fly" aktiviert.
 
Bei IntelliJ kannst du nicht gebrauchte imports mit "Strg + Alt + O" entfernen oder "ToolBar -> Code -> Optimize Imports" und Nicht Importierte imports mit "Strg + Alt + B" importieren oder "Navigate -> Implementatnion(s)"



Ich weis nicht ganz wie du das meinst wen du das so meinst:

24f5e76e6d.png

Dan kommt das hier dem am nächsten.

File -> Close Project
b124c8b00b.png

So wie bei Eclipse gibt es dass meines Wissens jedoch nicht in IntelliJ.
Klar gibt es das wie bei Eclipse, dass man mehrere Projekte simultan offen haben kann, nennt sich Module ;)
 
Bei IntelliJ kannst du nicht gebrauchte imports mit "Strg + Alt + O" entfernen oder "ToolBar -> Code -> Optimize Imports"
Doch, das ist durchaus auch per Tastenkombination möglich. Ich glaube das war STRG + UMSCHALT + O. Genau weiß ich das nicht , ich mache es immer nach Gefühl ^^

und Nicht Importierte imports mit "Strg + Alt + B" importieren oder "Navigate -> Implementatnion(s)"
Nicht importiert gibt es bei IntelliJ an sich nicht. Produzierst du Code , aktiviert sich die Autovervollständigung sofort, und denkt mit, wodurch sie auch importiert. Selbst wenn man mal nicht importiert , bzw. den Code selber ausschreibt, wird man aufgefordert ALT + Enter zu drücken, und den import auszuwählen. Beim Kopieren von Code wird zusätzlich ein Fenster zum Auswählen der Imports geöffnet.


Ich weis nicht ganz wie du das meinst wen du das so meinst:

24f5e76e6d.png

Dan kommt das hier dem am nächsten.

File -> Close Project
b124c8b00b.png

So wie bei Eclipse gibt es dass meines Wissens jedoch nicht in IntelliJ.

Dazu hat @Sheigutn ja bereits etwas gesagt.

MfG,

Tim
 
ich danke für eure antworten!! :)
ich habe erneut eine frage (sry dass ich nerve)

Ich komme bei top 10 mysql nicht weiter. hier ist der Code: http://pastebin.com/T7EqJS42
Ich bekomme die ganze zeit fehler angezeigt und weiß leider nicht warum..
Ein Stacktrace wird nicht viel helfen da es unter einem neuen thread läuft und die fehler dort nicht angezeigt werden

ich bekomme ingame nur "null" und usernames, die nicht die höchsten kill werte haben...
weiß einer bitte was mit dem code nicht stimmt? :(
 
Status
Für weitere Antworten geschlossen.

Soziale Medien

  • X
  • TikTok

Über uns

  • GommeHD.net ist einer der größten Minecraft-Server der Welt. Dir gefällt unser Server? Dann unterstütze uns durch einen Kauf im Shop!
  • Shop