Hallo. In letzter Zeit denkt Inokinn über Minecraft nach, ob er schläft oder aufwacht.
Minecraft macht Spaß, nicht wahr? Es macht Spaß, Dinge im Spiel zu machen, aber heutzutage können Sie einen Server für den Mehrspielermodus in AWS erstellen und ihn betreiben, während Sie Spaß mit Ihren Verwandten haben, oder Ihren eigenen Avatar-Skin erstellen, um einen einzigartigen Charakter zu erstellen. , Einführung in das Game Extension Program (MOD), das von verschiedenen Personen erstellt wurde, die chaotische Welt genießen und das Basteln aus verschiedenen Richtungen genießen.
Nun, mit solch Minecraft kannst du auch ein Haustier in diesem Spiel behalten. Sie können ein Pferd behalten und es reiten, aber wenn Sie es in einiger Entfernung lassen, wird es schwierig sein, es zu finden.
Also dachte ich: "Ich wünschte, ich könnte mein geliebtes Pferd sofort anrufen ...", aber als ich danach suchte, konnte ich keinen solchen MOD finden, also dachte ich, ich würde versuchen, einen zu machen, wenn er nicht da wäre, also habe ich den Titel MOD gemacht, also unten Der bisherige Arbeitsprozess ist in zusammengefasst.
Ich werde dies weglassen, da die Prozedur herauskommt, wenn Sie googeln.
Führen Sie die folgenden Schritte aus, um ein neues Element hinzuzufügen.
Der tatsächliche Code wird unten angezeigt. (Importanweisung weggelassen)
MountWhistle.java
@Mod(modid = MountWhistle.MODID, name = MountWhistle.NAME, version = MountWhistle.VERSION)
public class MountWhistle {
public static final String MODID = "mountwhistle";
public static final String NAME = "Mount Whistle";
public static final String VERSION = "1.0.2";
public static final String PAKETNAME = "MountWhistle";
public static Item mountWhistle;
@Mod.EventHandler
public void construct(FMLConstructionEvent event) {
MinecraftForge.EVENT_BUS.register(this);
}
@SubscribeEvent
public void registerItems(RegistryEvent.Register<Item> event) {
mountWhistle = new Whistle()
.setCreativeTab(CreativeTabs.TRANSPORTATION)
.setUnlocalizedName("mountwhistle")
.setRegistryName("mountwhistle")
.setMaxStackSize(1);
event.getRegistry().register(mountWhistle);
}
@SubscribeEvent
@SideOnly(Side.CLIENT)
public void registerModels(ModelRegistryEvent event) {
ModelLoader.setCustomModelResourceLocation(mountWhistle, 0, new ModelResourceLocation(new ResourceLocation("mountwhistle", "mountwhistle"), "inventory"));
}
}
registerItems (RegistryEvent.Register <Item> event)
den Artikelregistrierungsprozess. Erstellen Sie ein Paket "src / main / resources / assets / MOD_ID / models / items" und schreiben Sie eine JSON-Datei darunter, die die Bilddatei mit "item name.json" angibt.
mountwhistle.json
{
"parent": "item/generated",
"textures": {
"layer0": "mountwhistle:items/whistle"
}
}
Erstellen Sie ein Paket "src / main / resources / assets / MOD_ID / textures / items" und speichern Sie die Bilddatei darunter mit "item name.png ".
Ab hier ist die Produktion. Erstellen Sie zunächst eine Klasse von Mount Whistle-Elementen. Da die Basisklasse der Minecraft-Elemente "net.minecraft.item.Item" ist, werden wir sie implementieren, indem wir dies überschreiben.
Zuerst wird der implementierte Quellcode unten gezeigt, und dann wird die Erklärung gestartet.
Whistle.java
public class Whistle extends Item {
@Override
public void setDamage(ItemStack stack, int damage) {
return;
}
@Override
public ActionResult<ItemStack> onItemRightClick(World worldIn, EntityPlayer playerIn, EnumHand handIn) {
Entity mount = playerIn.getRidingEntity();
ItemStack itemStack = playerIn.getHeldItem(handIn);
//Reitest du
if (mount != null) {
//Registrieren Sie das Reittier, auf dem Sie gerade fahren
NBTTagCompound nbtTag = itemStack.getTagCompound();
if (nbtTag == null) {
nbtTag = new NBTTagCompound();
itemStack.setTagCompound(nbtTag);
}
if (nbtTag.hasKey("MountId") &&
!UUID.fromString(nbtTag.getString("MountId")).equals(mount.getUniqueID())) {
return new ActionResult<ItemStack>(EnumActionResult.PASS, playerIn.getHeldItem(handIn));
}
String name = mount.getName();
if (worldIn.isRemote) {
Minecraft.getMinecraft().ingameGUI.getChatGUI().printChatMessage(new TextComponentString("Auf dem Berg pfeifen" + name + "Ich registrierte!"));
} else {
nbtTag.setString("MountId", mount.getUniqueID().toString());
nbtTag.setString("Name", name);
itemStack.setStackDisplayName(name);
//Machen Sie die Montierung unsterblich
mount.setEntityInvulnerable(true);
}
} else {
NBTTagCompound nbtTag = itemStack.getTagCompound();
if (nbtTag == null || !nbtTag.hasKey("MountId")) {
if (worldIn.isRemote) {
Minecraft.getMinecraft().ingameGUI.getChatGUI().printChatMessage(new TextComponentString("Sie können die Halterung registrieren, indem Sie sie während der Fahrt verwenden."));
}
return new ActionResult<ItemStack>(EnumActionResult.PASS, playerIn.getHeldItem(handIn));
}
UUID mountId = UUID.fromString(nbtTag.getString("MountId"));
MinecraftServer server = worldIn.getMinecraftServer();
if(server == null) {
Minecraft.getMinecraft().ingameGUI.getChatGUI().printChatMessage(new TextComponentString("Ich habe versucht, es zu beschwören."));
} else {
//Finden Sie Reittiere von allen Entitäten
mount = server.getEntityFromUuid(mountId);
mount.setLocationAndAngles(playerIn.posX, playerIn.posY, playerIn.posZ, 0.0F, 0.0F);
if (worldIn.isRemote) {
if (mount != null) {
String name = mount.getName();
Minecraft.getMinecraft().ingameGUI.getChatGUI().printChatMessage(new TextComponentString(name + "Wurde gerufen."));
}
}
}
}
return new ActionResult<ItemStack>(EnumActionResult.PASS, playerIn.getHeldItem(handIn));
}
}
Normalerweise verschwinden Gegenstände nach dem Gebrauch, aber Mount Whistle ist ein Gegenstand, den Sie immer wieder verwenden möchten. Die Methode, die den Verbrauch bei Verwendung behandelt, ist "setDamage (ItemStack-Stapel, int-Schaden)". Ich überschreibe dies und "kehre sofort zurück", um zu verhindern, dass etwas passiert.
Die Methode, die bei Verwendung eines Elements durch Klicken mit der rechten Maustaste aufgerufen wird, lautet "ActionResult
Hier bestimmen wir zuerst, ob der Spieler auf dem Reittier reitet. Wenn Sie fahren, registrieren Sie die Montierung mit dem NBT der Mount-Pfeife und verarbeiten Sie die Montierung als unsterblich. Wenn Sie nicht reiten, rufen Sie das in der Reitpfeife NBT registrierte Reittier zu den Koordinaten des Spielers.
Wenn wir einem Artikel Informationen geben, verwenden wir einen Mechanismus namens "NBT". NBT ist eine Abkürzung für "Named Binary Tag", und Minecraft speichert verschiedene Daten in einem Datenformat namens NBT. Wenn das Element kein NBT-Tag hat, erstellen Sie eine Instanz von "NBTTagCompound", setzen Sie zuerst "setTagCompound (nbtTag)" und registrieren Sie dann die UUID (eindeutige Kennung des Entitätsobjekts) des Mount. Bitte beachten Sie, dass das Element keine Informationen speichert, es sei denn, Sie führen das erste "setTagCompound (nbtTag)" aus. Beachten Sie beim Zuweisen von NBT-Tags zu Elementen, dass NBT-Tags nicht an Elemente angehängt werden können und das eigentliche Ziel, das angehängt werden soll, "ItemStack" ist. ItemStack ist ein Bündel von Artikeln und bezieht sich auf "einen Frame im Inventar".
Das MOD-Programm wird sowohl auf dem Client als auch auf dem Server ausgelöst.
Ich möchte jedoch, dass dieser Prozess nur auf dem Client funktioniert oder umgekehrt.
Zu diesem Zeitpunkt können Sie verzweigen, indem Sie den Wert von "isRemote" des "World" -Objekts betrachten.
True
auf der Client-Seite und false
auf der Server-Seite.
Hier wird die Chat-Nachricht nur angezeigt, wenn sie auf der Clientseite ausgeführt wird, und die Mount-Koordinaten werden nur geändert, wenn sie auf der Serverseite ausgeführt wird.
Wenn Sie den Server und den Client nicht verwalten, bewegt sich der Mount für einen Moment zu Ihnen, und dann beginnt der Mount, von den Koordinaten auf der Serverseite aus zu laufen, sodass er sofort an seine ursprüngliche Position zurückkehrt.
Ich habe es auf GitHub hochgeladen. https://github.com/inokinn/MountWhistle
Holen Sie sich zuerst die Mount-Pfeife. Standardmäßig können Sie mit 9 Gegenständen "Gisars Gemüse" basteln, die vom MOD Chococraft hinzugefügt wurden. Ich werde. Durch die Verwendung der Reitpfeife beim Reiten ist die Registrierung erfolgreich, wenn der Name des Elements zum Namen des Reittiers wird. Danach ist es in Ordnung, wenn Sie die Mount-Pfeife verwenden, wenn Sie nicht fahren, und das Mount zum Player kommt.
In Bezug auf die Entwicklung von Minecraft MOD gibt es nur wenige Informationen, das Erstellen und Überprüfen des Betriebs dauert einige Zeit, das Verhalten unterscheidet sich zwischen Einzelspiel und Mehrspielermodus usw. Aufgrund wiederholter Versuche und Irrtümer vom Beginn der Entwicklung bis zur Fertigstellung 2 Es dauerte ungefähr einen Tag. Insbesondere die japanische Dokumentation war alt und selten, und ich hatte das Gefühl, den eigentlichen Quellcode lesen zu müssen. Ich hoffe, dass die Entwicklung von Minecraft MOD auch in Japan spannender wird.
Recommended Posts