alle, lernen Modding mit Schmiede und ich verstehe nicht vollständig IExtendedEntityProperties. Ich möchte einige benutzerdefinierte Variablen für Spieler erstellen, die irgendwo gespeichert werden (NBT). Und die Art, wie ich gegoogelt habe, sagte mir, dass ich die IExtendedEntityProperties-Funktion verwenden sollte. Hier ist der Code. Was mache ich falsch? Vielen Dank!iextendedentityproperties und Speichern von NBT-Player-Daten
PlayerProps.class
public class PlayerProps implements IExtendedEntityProperties {
public final static String compoundName = "playerProps";
protected EntityPlayer propsPlayer;
protected World parWorld;
protected String testString;
@Override
public void saveNBTData(NBTTagCompound parCompound) {
NBTTagCompound compound = new NBTTagCompound();
parCompound.setTag(compoundName, compound);
compound.setString("testPar", testString);
}
@Override
public void loadNBTData(NBTTagCompound parCompound) {
NBTTagCompound compound = new NBTTagCompound();
compound.getTag(compoundName);
testString = compound.getString("testPar");
}
@Override
public void init(Entity entity, World world) {
propsPlayer = (EntityPlayer)entity;
parWorld = world;
}
public String getTestString() {
return testString;
}
public void setTestString(String string) {
testString = string;
}
@SubscribeEvent
public void onEntityConstructing(EntityConstructing event) {
if (event.entity instanceof EntityPlayer)
{
event.entity.registerExtendedProperties("PlayerProps", new PlayerProps());
}
}
}
Für Test ich zwei Testblöcke mit - während auf der einen Unterkriechschutz Rechtsklick es String-Variable, auf einem anderen lesen muss - es
public boolean onBlockActivated(World world, int par2, int par3, int par4,
EntityPlayer player, int par6, float par7, float par8, float par9) {
PlayerProps props = new PlayerProps();
if (player.isSneaking()) {
player.addChatMessage(new ChatComponentText(props.getTestString()));
return true;
}
return false;
}
public boolean onBlockActivated(World world, int par2, int par3, int par4,
EntityPlayer player, int par6, float par7, float par8, float par9) {
PlayerProps props = new PlayerProps();
if (player.isSneaking()) {
props.setTestString("It Works!");
return true;
}
return false;
}
im Chat schicken Und es sagt immer Null. Danke!
Entfernen Sie den Kommentar, wenn Sie die Methode implementieren: // TODO Automatisch generierter Methodenstub –