@Retention(RUNTIME)
@Target({FIELD, METHOD})
@Inherited
public @interface BindTickrate {
public float Float() default 0;
}
< /code>
und 2 Klassen < /p>
public MouseFollower{
@BindTickrate(Float = 960)
protected float speed;
public void onTick(){
//look at the mouse
//move to the mouse with speed;
}
public MouseFollower2 extends MouseFollower{
@BindTickrate(Float = 480)
protected float speed;
}
< /code>
Die Idee ist, dass ich die ontickchange () -Methode zum Berechnen @BindTickrate -Variablen < /p>
habepublic void onTickchange(){
//tickrate seted
System.out.println("Set tickrate: "+tickrate);
System.out.println(this.getClass().getName());
for(Field field: this.getClass().getDeclaredFields()){
BindTickrate annotation = null;
if((annotation = field.getAnnotation(BindTickrate.class)) != null) {
System.out.println("Found "+field)
field.setAccessible(true);
switch(field.getType().getName()) {
case "float" -> {field.setFloat(this, annotation.Float() / tickrate);}
}
}
System.out.println("Seted "+field.getFloat(this));
}
}
< /code>
Mausfollower implementiert die Klasse mit OnTickchange -Methode. Und ich werde so ausgeben: < /p>
Set tickrate: 100
MouseFollower
Found protected float MouseFollower.speed
Seted 9.6
Set tickrate: 100
MouseFollower2
Found protected float MouseFollower2.speed
Seted 4.8
< /code>
Aber MouseFollower2 hat keine Geschwindigkeit, da diese Methode MOUSFOLLOWER2.Speed auf 4.8 festgelegt hat, aber in der Inherit -Methode ontick () verwendet es mousefollower.speed, was 0 ist, weil nicht eingestellt ist.
Wenn ich MouseFollower setze, verlieh auf 10, wenn MouseFollower2 mit gegebener Geschwindigkeit zu Maus folgt und Mausfollower alte Geschwindigkeit hat. Wenn ich MOUSFOLLOWOWOWER festlegt, gibt es keinen Effekt. und Mausfollower2.Speed. Setzen Sie 2, aber verwenden Sie 1.
Wenn ich MOuseFollower2.Speed nicht deklariere, wie ich @BindTickrate Float < /code> Feld ändere? Bewegen Sie sich ohne Mumbo -Jumbo in Unterklassen zur Maus, aber @Override
arbeiten nur mit Methoden. Vollständige übergeordnete Ontick -Methode lösen dieses Problem auf, aber es ist Bullshit
Ich habe Annotation < /p> [code]@Retention(RUNTIME) @Target({FIELD, METHOD}) @Inherited public @interface BindTickrate { public float Float() default 0; } < /code> und 2 Klassen < /p> public MouseFollower{ @BindTickrate(Float = 960) protected float speed;
public void onTick(){ //look at the mouse //move to the mouse with speed; }
public MouseFollower2 extends MouseFollower{ @BindTickrate(Float = 480) protected float speed; } < /code> Die Idee ist, dass ich die ontickchange () -Methode zum Berechnen @BindTickrate -Variablen < /p> habepublic void onTickchange(){ //tickrate seted System.out.println("Set tickrate: "+tickrate); System.out.println(this.getClass().getName()); for(Field field: this.getClass().getDeclaredFields()){ BindTickrate annotation = null; if((annotation = field.getAnnotation(BindTickrate.class)) != null) { System.out.println("Found "+field) field.setAccessible(true); switch(field.getType().getName()) { case "float" -> {field.setFloat(this, annotation.Float() / tickrate);} } } System.out.println("Seted "+field.getFloat(this)); } } < /code> Mausfollower implementiert die Klasse mit OnTickchange -Methode. Und ich werde so ausgeben: < /p> Set tickrate: 100 MouseFollower Found protected float MouseFollower.speed Seted 9.6 Set tickrate: 100 MouseFollower2 Found protected float MouseFollower2.speed Seted 4.8 < /code> Aber MouseFollower2 hat keine Geschwindigkeit, da diese Methode MOUSFOLLOWER2.Speed auf 4.8 festgelegt hat, aber in der Inherit -Methode ontick () verwendet es mousefollower.speed, was 0 ist, weil nicht eingestellt ist. Wenn ich MouseFollower setze, verlieh auf 10, wenn MouseFollower2 mit gegebener Geschwindigkeit zu Maus folgt und Mausfollower alte Geschwindigkeit hat. Wenn ich MOUSFOLLOWOWOWER festlegt, gibt es keinen Effekt. und Mausfollower2.Speed. Setzen Sie 2, aber verwenden Sie 1. Wenn ich MOuseFollower2.Speed nicht deklariere, wie ich @BindTickrate Float < /code> Feld ändere? Bewegen Sie sich ohne Mumbo -Jumbo in Unterklassen zur Maus, aber @Override [/code] arbeiten nur mit Methoden. Vollständige übergeordnete Ontick -Methode lösen dieses [url=viewtopic.php?t=11587]Problem[/url] auf, aber es ist Bullshit
Ich habe die folgende Klasse erstellt, die zum Verwalten aller erstellten Instanzen hergestellt wurde, und um schnelle Suche und Abrufen bestimmter Werte durch die angegebenen Suchschlüssel zu...
Ich habe die folgende Klasse erstellt, die zum Verwalten aller erstellten Instanzen hergestellt wurde, und um schnelle Suche und Abrufen bestimmter Werte durch die angegebenen Suchschlüssel zu...
Ich habe ein benutzerdefiniertes Tool für Typscript -Erzeugung erstellt, mit dem C# DTOS in TypeScript -DTOs umwandelt. Ich habe es jedoch satt, dieses Tool aufrechtzuerhalten und nach einem Ersatz...
Ich habe ein Domänenmodell, das mit Datenbankspezifischen Anmerkungen nicht kommentiert werden sollte (wie @Node oder @id ). Ich möchte eine der folgenden Bibliotheken verwenden, um mich in die...