Praktisch nein.

Theoretisch kannst du zwar versuchen, mithilfe von C++ am Speicher der JVM rumzufummeln, aber zum richtigen modden wird dieser Ansatz viel zu kompliziert.

Du könntest auch Java-APIs per JNI & Co wrappen, um sie per C++ nutzbar zu machen, aber dafür musst du neben C++ auch richtig viel Javacode schreiben.

Fazit: Theoretisch vielleicht möglich, wenn auch nur extrem eingeschränkt, in der Praxis aber defacto unmöglich umsetzbar, vor allem, wenn du etwas wirklich Sinnvolles oder gar Komplexes modden willst.

Nachtrag: Neben dem JNI - Java Native Interface - gibt es noch die modernere Schnittstelle JNA - Java Native Access. Die ist wesentlich schneller und hat weniger Overhead. Also FALLS du API-Wrapper bauen solltest, dann lieber damit, sonst könnten die FPS in den Keller gehen.

Nachtrag 2: Grundsätzlich gilt, dass man eine Software immer mit der Sprache erweitern / modden kann, in der sie selbst geschrieben ist. Ausnahme wäre nur, wenn die Software eine Scriptingerweiterung bietet, um Plugins oder Addons in einer Drittsprache zu erstellen. (Photoshop lässt sich u. a. Mit Javascript steuern, Gimp u. a. mit Scheme, Blender mit Python, etc.)

Eine weitere Möglichkeit sind andere VM-Sprachen, also kann man das JVM-Minecraft auch relativ leicht mit Groovy, Clojure, Jython, uvm. modden, zumindest nicht ohne unüberwindbare Schwierigkeiten.

Und was hier andere mit "externem Cheat-Blabla" meinen, ist zwar theoretisch das, was ich im ersten Absatz angesprochen habe, kommt einer rehulären MC-Mod aber nicht mal nahe.

...zur Antwort

Du kannst dafür folgendes kleine Pythonscript nutzen:

from itertools import combinations

values = (100, 200, 300)

print('Input: %s' % ', '.join(str(i) for i in values))
for length in range(1, len(values) + 1):
    print()

    for nums in combinations(values, length):
        addition = ' + '.join(str(i) for i in nums)
        result = sum(nums)

        print('%d = %s' % (result, addition))

Das liefert dir folgende Ausgabe:

Input: 100, 200, 300

100 = 100
200 = 200
300 = 300

300 = 100 + 200
400 = 100 + 300
500 = 200 + 300

600 = 100 + 200 + 300

Falls du keinen Pythoninterpreter zur Hand hast, kannst du das ganze Online hier ausführen:

https://www.online-python.com/2ze6BYaWsG

Einfach die Zeile mit der Variable "values" anpassen und dann unten auf "Run" klicken.

Im Terminal erhältst du dann deine Ausgabe. :)

...zur Antwort

Ich glaube das geht nicht.

Bild zum Beitrag

Zumindest in Deutschland müssen die ersten beiden Buchstaben des Vor- und Nachnamens noch deutlich lesbar sein.

PS: Man, ist das schwierig, mit dem Finger auf einem Smartphone zu schreiben! :)

...zur Antwort

了解 oder umgangssprachlich, v. a. unter jungen Leuten einfach nur リ.

Und anstelle von はい kannst du umgangssprachlich auch einfach ほ〜い sagen, so ähnlich wie Shinchan.

Ansonsten tuts im allgemeinen ein わかった bzw. わかりました auch.

Gibt aber noch gefühlt eine Million mehr Möglichkeiten, vor allem bei lockerem Umgang.

PS: まあまあ aus der anderen Antwort würde ich weniger mit Okay, als vielmehr mit Solala übersetzen. Das sagt man normalerweise dann, wenn es einem gerade nicht sonderlich gut geht.

...zur Antwort

Ich glaube, du verstehst grundlegend falsch, dass es zwischen der Repräsentation von Integern in C++ und der Repräsentation auf Hardware-Ebene einen Unterschied gibt.

Im Folgenden nutze ich keine Binär- sondern Hex-Zahlen, weil die Platzsparender sind!

Wenn du ...

uint32_t x = 0x0F;

... schreibst, wird das in C++ so repräsentiert:

0x00'00'00'0F

Auf Hardware-Ebene hängt es von der Bytereihenfolge ab, und kann Big-Endian, Little-Endian oder eine von zwei Middle-Endian-Varianten sein.

Bei modernen Intel-CPUs, die alle Little-Endian nutzen, sähe das dann so aus:

0x0F'00'00'00

Aber DENNOCH wird es von C++ ganz normal wie ...

0x00'00'00'0F

... behandelt!

Merke: Es ist völlig irrelevant, wie Integer im Speicher auf Hardware-Ebene dargestellt werden! Für C++ beginnen die niederwertigsten Bits IMMER rechts und enden mit den höherwertigsten IMMER links!

Wenn du jetzt also ...

uint32_t x = 0x0F;

... schreibst, ist das identisch, als wenn du ...

uint32_t x = 0x00'00'00'0F;

... schreiben würdest.

Und wenn du einfach nur ...

uint8_t y = x;

... schreibst, werden die linkesten 3 Byte weggeworfen, und nur das rechteste Byte beibehalten. Und zwar ist damit die C++ Repräsentation gemeint!

Nochmal: Es ist völlig Wurst, was auf Hardware-Ebene passiert!

uint32_t a = 0x12345678;
uint16_t b = a; // 0x5678
uint8_t c = a; // 0x78

Wenn du shiften würdest, würde das hier passieren:

uint32_t x = 0x12345678;
uint32_t y = x << 24;
// y == 0x78000000

Bei C++ gibt es übrigens zwei verschiedene Casting-Typen, um die C++ Räpresentation und die Hardware-Repräsentation unterscheiden zu können:

uint32_t x = 0x12345678;

auto a = static_cast<uint8_t>(x);
// a == 0x78

auto b = *reinterpret_cast<uint8_t *>(x);
// b = 0x12
// ... oder ...
// b = 0x78

Im letzteren Falle hängt das Ergebnis von der verwendeten CPU ab (Intel oder ARM) und kann sogar auch völlig anders aussehen!

Disclaimer: Ja, ich weiß, dass der reinterpret-Cast in diesem Falle abhängig von der Hardware UB ist!

Fazit: Wenn du in C++ einen Integer mit 0x12345678 initialisierst, dann hat der auch GENAU diesen Wert, mit dem du dann GENAU so arbeiten kannst.

Was intern auf der Hardware passiert, muss dich (fast nie) nicht interessieren!

...zur Antwort

Das ist ein Softlink! Gehe deshalb mit "cd" in dein "bin" Verzeichnis und tippe:

ln -svf /pfad/zu/datei .

Und achte dabei darauf, dass du ausreichend Schreibrechte in "bin" hast ... normalerweise darf da nämlich nicht jeder Links einfügen. :)

Allerdings wäre die saubere Lösung wohl eher, ein Alias in der ".profile"-Datei in deinem Stammverzeichnis. Damit brauchst du auch keine Berechtigungen im "bin" Verzeichnis!

...zur Antwort
Weitere Inhalte können nur Nutzer sehen, die bei uns eingeloggt sind.