Jump to content

Wie füge ich meine neuen Kreaturen zu Minecraft hinzu (Java-Version 1.13.2)


Empfohlene Beiträge

Hallo

Ich benutze die Java-Version 1.13.2 von Minecraft.

Jetzt habe ich mit dem Tool "Blockbench" Entity-Modelle der "Angry Birds" modelliert (die klassische Videospiel-Version, also ziemlich simpler Aufbau: ein großer Würfel als Körper und dann bloß Schnabel und Federn aus zusätzlichen kleinen Quadern).

Ich habe jeden Vogel einmal als ,json -Datei gespeichert (dabei kommt immer eine Meldung "saved as bedrock entity model").

Dann habe ich die Figuren noch als .java -Dateien exportiert (export -> java entity), da ich ja die Java-Versionvon Minecraft (1.13.2) nutze.

Und ich habe auch immer eine passende Skin-Textur (.png) dafür erstellt und für jeden Quader die Position in der Skin-Grafik angepasst.

Also in Blockbench sehen die Modelle gut aus.

Hier meine Fragen dazu:

1.:

Was muss ich jetzt mit diesen Dateien tun, um sie als Mobs dem Spiel hinzufügen zu können (am besten, ohne bereits vorhandene zu ersetzen), die sich dann in der Welt umher bewegen, am besten mit passivem Verhalten, den Spieler also nie angreifen?

2.:

Wie kann ich dafür sorgen, dass sich das gesammte Modell der Figur wie der Kopf einer bereits im Spiel vorhandenen Kreatur bewegt (also ab und zu zu einem sich nähernden Spieler schauen und dann wieder in die richtung der Fortbewegung)?

3.

Ich habe in meiner ein-Spieler-Spielwelt (Kreativ-Modus) das natürliche Mob-Spawnen deaktiviert, damit ich nicht laufend irgendwelche Viecher aus meinen Bauten verjagen muss.

Wie kann ich so nun ein paar einzelnen bestimmten Mobs bestimmte Spawn-Punkte zuweisen, ohne das natürliche Spawnen wieder zu aktivieren?

Ich möchte nämlich diese Vögel an bestimmten Stellen in meiner Welt haben, wo sie auch dann wieder erscheinen sollen, wenn ich mal so weit weg gehe, dass der betreffende Chunk nicht mehr geladen ist und dann wieder dahin zurückkehre.

4.

Wie kann ich das Modell der Spieler-Figur durch eines dieser Modelle ersetzen, um auch mal als einer dieser Vögel zu spielen?

In den Videos des Minecraft-Spielers "ExplodingTNT" erscheinen immer wieder 2 andere Spieler "Pink Sheep" und "Purple Shep", die es irgendwie geschafft haben, im Spiel als Schafe mit rosa und lila gefärbter Wolle zu erscheinen.

Es scheint also irgendwie möglich zu sein.

Die gehaltenen Gegenstände sollen dann am besten direkt rechts und links neben der Figur schweben.

Ist es möglich, auch in anderer Leute Server-Welten so zu erscheinen?

bearbeitet von Drachenbauer
Link zu diesem Kommentar
Auf anderen Seiten teilen

vor 1 Stunde schrieb Drachenbauer:

Dann habe ich die Figuren noch als .java -Dateien exportiert (export -> java entity), da ich ja die Java-Versionvon Minecraft (1.13.2) nutze.

Dieses Programm kann keine Java-Klassen exportieren? O.o

Du kannst JSON, JPM und OBJ-Modelle exportieren, aber Java ist nicht dabei.

 

Damit du deine Modelle dem Spiel hinzufügen kannst, musst du eine Mod schreiben.

Hier findest du ein Tutorial dafür. Entities kommen ziemlich weit unten.

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

Die Video qualität ist zu schlecht, um seinen Programm-Code zu lesen.

Außerdem habe ich da noch keine Stelle gefunden, wo er den grundlegenden Aufbau eines Modpacks erklärt, oder mitteilt wo man einen leeren "Rohling" eines Modpacks zum eigenen Befüllen mit Spielelementen herbekommt.

Als ich mal ein eigenes Resource-pack erstellt habe, da habe ich mir ein bereits existierendes runtergeladen, das funktioniert, und es mit meinen eigenen Grafiken gefüllt.

Daher hätte ich gerne auch eine Basis für ein Mod-pack, um herauszufinden, wo da meine Modell- und Skin-Dateien hingehören und wo Dateien mit Programmcode für das verhalten meiner Vögel.

In seinem zweiten Video redet er von Forgr Mod-Builder und Eclipse.

Aber ich kann Eclipse nicht installieren...

Da kommt im Browser eine Seite mit "Can´t load file".

Was muss ich tun, um Eclipse installieren zu können?

bearbeitet von Drachenbauer
Link zu diesem Kommentar
Auf anderen Seiten teilen

Ich versuche gerade dafür zu sorgen, dass ein Block danach ausgerichtet wird, in welche Richtung meine FFigur schaut.

ich habe verschiedene Script-möglichkeiten versucht, die ich im Internet gefunden habe.

Aber mein Block-Modell verwandelt sich nun immer in einen schwarz und lila farbenenWürfel.

und ich bekomme folgende Fehlermeldung:

Zitat

[23:22:27] [main/ERROR] [FML]: Exception loading model for variant abmod:balloon_block#facing=north for blockstate "abmod:balloon_block[facing=north]"
net.minecraftforge.client.model.ModelLoaderRegistry$LoaderException: Exception loading model abmod:balloon_block#facing=north with loader VariantLoader.INSTANCE, skipping
    at net.minecraftforge.client.model.ModelLoaderRegistry.getModel(ModelLoaderRegistry.java:161) ~[ModelLoaderRegistry.class:?]
    at net.minecraftforge.client.model.ModelLoader.registerVariant(ModelLoader.java:235) ~[ModelLoader.class:?]
    at net.minecraft.client.renderer.block.model.ModelBakery.loadBlock(ModelBakery.java:153) ~[ModelBakery.class:?]
    at net.minecraftforge.client.model.ModelLoader.loadBlocks(ModelLoader.java:223) ~[ModelLoader.class:?]
    at net.minecraftforge.client.model.ModelLoader.setupModelRegistry(ModelLoader.java:150) ~[ModelLoader.class:?]
    at net.minecraft.client.renderer.block.model.ModelManager.onResourceManagerReload(ModelManager.java:28) [ModelManager.class:?]
    at net.minecraft.client.resources.SimpleReloadableResourceManager.registerReloadListener(SimpleReloadableResourceManager.java:121) [SimpleReloadableResourceManager.class:?]
    at net.minecraft.client.Minecraft.init(Minecraft.java:559) [Minecraft.class:?]
    at net.minecraft.client.Minecraft.run(Minecraft.java:421) [Minecraft.class:?]
    at net.minecraft.client.main.Main.main(Main.java:118) [Main.class:?]
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_201]
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_201]
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_201]
    at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_201]
    at net.minecraft.launchwrapper.Launch.launch(Launch.java:135) [launchwrapper-1.12.jar:?]
    at net.minecraft.launchwrapper.Launch.main(Launch.java:28) [launchwrapper-1.12.jar:?]
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_201]
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_201]
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_201]
    at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_201]
    at net.minecraftforge.gradle.GradleStartCommon.launch(GradleStartCommon.java:97) [start/:?]
    at GradleStart.main(GradleStart.java:25) [start/:?]
Caused by: net.minecraft.client.renderer.block.model.ModelBlockDefinition$MissingVariantException
    at net.minecraft.client.renderer.block.model.ModelBlockDefinition.getVariant(ModelBlockDefinition.java:83) ~[ModelBlockDefinition.class:?]
    at net.minecraftforge.client.model.ModelLoader$VariantLoader.loadModel(ModelLoader.java:1175) ~[ModelLoader$VariantLoader.class:?]
    at net.minecraftforge.client.model.ModelLoaderRegistry.getModel(ModelLoaderRegistry.java:157) ~[ModelLoaderRegistry.class:?]
    ... 21 more
[23:22:27] [main/ERROR] [FML]: Exception loading blockstate for the variant abmod:balloon_block#facing=north:
java.lang.Exception: Could not load model definition for variant abmod:balloon_block
    at net.minecraftforge.client.model.ModelLoader.getModelBlockDefinition(ModelLoader.java:269) ~[ModelLoader.class:?]
    at net.minecraft.client.renderer.block.model.ModelBakery.loadBlock(ModelBakery.java:121) ~[ModelBakery.class:?]
    at net.minecraftforge.client.model.ModelLoader.loadBlocks(ModelLoader.java:223) ~[ModelLoader.class:?]
    at net.minecraftforge.client.model.ModelLoader.setupModelRegistry(ModelLoader.java:150) ~[ModelLoader.class:?]
    at net.minecraft.client.renderer.block.model.ModelManager.onResourceManagerReload(ModelManager.java:28) [ModelManager.class:?]
    at net.minecraft.client.resources.SimpleReloadableResourceManager.registerReloadListener(SimpleReloadableResourceManager.java:121) [SimpleReloadableResourceManager.class:?]
    at net.minecraft.client.Minecraft.init(Minecraft.java:559) [Minecraft.class:?]
    at net.minecraft.client.Minecraft.run(Minecraft.java:421) [Minecraft.class:?]
    at net.minecraft.client.main.Main.main(Main.java:118) [Main.class:?]
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_201]
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_201]
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_201]
    at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_201]
    at net.minecraft.launchwrapper.Launch.launch(Launch.java:135) [launchwrapper-1.12.jar:?]
    at net.minecraft.launchwrapper.Launch.main(Launch.java:28) [launchwrapper-1.12.jar:?]
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_201]
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_201]
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_201]
    at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_201]
    at net.minecraftforge.gradle.GradleStartCommon.launch(GradleStartCommon.java:97) [start/:?]
    at GradleStart.main(GradleStart.java:25) [start/:?]
Caused by: java.lang.RuntimeException: Encountered an exception when loading model definition of 'abmod:balloon_block' from: 'abmod:blockstates/balloon_block.json' in resourcepack: 'FMLFileResourcePack:Angry Birds Mod'
    at net.minecraft.client.renderer.block.model.ModelBakery.loadModelBlockDefinition(ModelBakery.java:246) ~[ModelBakery.class:?]
    at net.minecraft.client.renderer.block.model.ModelBakery.loadMultipartMBD(ModelBakery.java:223) ~[ModelBakery.class:?]
    at net.minecraft.client.renderer.block.model.ModelBakery.getModelBlockDefinition(ModelBakery.java:208) ~[ModelBakery.class:?]
    at net.minecraftforge.client.model.ModelLoader.getModelBlockDefinition(ModelLoader.java:265) ~[ModelLoader.class:?]
    ... 20 more
Caused by: com.google.gson.JsonSyntaxException: com.google.gson.stream.MalformedJsonException: Expected name at line 17 column 6 path $.variants.
    at com.google.gson.Gson.fromJson(Gson.java:902) ~[Gson.class:?]
    at com.google.gson.Gson.fromJson(Gson.java:852) ~[Gson.class:?]
    at com.google.gson.Gson.fromJson(Gson.java:801) ~[Gson.class:?]
    at com.google.gson.Gson.fromJson(Gson.java:773) ~[Gson.class:?]
    at net.minecraftforge.client.model.BlockStateLoader.load(BlockStateLoader.java:79) ~[BlockStateLoader.class:?]
    at net.minecraft.client.renderer.block.model.ModelBlockDefinition.parseFromReader(ModelBlockDefinition.java:42) ~[ModelBlockDefinition.class:?]
    at net.minecraft.client.renderer.block.model.ModelBakery.loadModelBlockDefinition(ModelBakery.java:242) ~[ModelBakery.class:?]
    at net.minecraft.client.renderer.block.model.ModelBakery.loadMultipartMBD(ModelBakery.java:223) ~[ModelBakery.class:?]
    at net.minecraft.client.renderer.block.model.ModelBakery.getModelBlockDefinition(ModelBakery.java:208) ~[ModelBakery.class:?]
    at net.minecraftforge.client.model.ModelLoader.getModelBlockDefinition(ModelLoader.java:265) ~[ModelLoader.class:?]
    ... 20 more
Caused by: com.google.gson.stream.MalformedJsonException: Expected name at line 17 column 6 path $.variants.
    at com.google.gson.stream.JsonReader.syntaxError(JsonReader.java:1559) ~[JsonReader.class:?]
    at com.google.gson.stream.JsonReader.doPeek(JsonReader.java:505) ~[JsonReader.class:?]
    at com.google.gson.stream.JsonReader.skipValue(JsonReader.java:1224) ~[JsonReader.class:?]
    at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:218) ~[ReflectiveTypeAdapterFactory$Adapter.class:?]
    at com.google.gson.Gson.fromJson(Gson.java:887) ~[Gson.class:?]
    at com.google.gson.Gson.fromJson(Gson.java:852) ~[Gson.class:?]
    at com.google.gson.Gson.fromJson(Gson.java:801) ~[Gson.class:?]
    at com.google.gson.Gson.fromJson(Gson.java:773) ~[Gson.class:?]
    at net.minecraftforge.client.model.BlockStateLoader.load(BlockStateLoader.java:79) ~[BlockStateLoader.class:?]
    at net.minecraft.client.renderer.block.model.ModelBlockDefinition.parseFromReader(ModelBlockDefinition.java:42) ~[ModelBlockDefinition.class:?]
    at net.minecraft.client.renderer.block.model.ModelBakery.loadModelBlockDefinition(ModelBakery.java:242) ~[ModelBakery.class:?]
    at net.minecraft.client.renderer.block.model.ModelBakery.loadMultipartMBD(ModelBakery.java:223) ~[ModelBakery.class:?]
    at net.minecraft.client.renderer.block.model.ModelBakery.getModelBlockDefinition(ModelBakery.java:208) ~[ModelBakery.class:?]
    at net.minecraftforge.client.model.ModelLoader.getModelBlockDefinition(ModelLoader.java:265) ~[ModelLoader.class:?]
    ... 20 more

und zwar 4x für die 4 Richtungen.

Die Java-class für diesen Block sieht gerade so aus:

Zitat

package com.drachenbauer32.angrybirdsmod.blocks;

import javax.annotation.Nullable;

import net.minecraft.block.BlockHorizontal;
import net.minecraft.block.SoundType;
import net.minecraft.block.material.Material;
import net.minecraft.block.properties.IProperty;
import net.minecraft.block.properties.PropertyDirection;
import net.minecraft.block.state.BlockStateContainer;
import net.minecraft.block.state.IBlockState;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.util.EnumFacing;
import net.minecraft.util.Mirror;
import net.minecraft.util.Rotation;
import net.minecraft.util.math.AxisAlignedBB;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.IBlockAccess;
import net.minecraft.world.World;

public class BalloonBlock extends BlockBase
{
    public static final AxisAlignedBB BALLOON_BLOCK_AABB = new AxisAlignedBB(0.125, 0, 0.125, 0.875, 2, 0.875);
    public static final PropertyDirection FACING = BlockHorizontal.FACING;
    
    public BalloonBlock(String name, Material material)
    {
        super(name, material);
        setSoundType(SoundType.CLOTH);
        setHardness(0.1f);
        setResistance(0.5f);
        this.setDefaultState(this.blockState.getBaseState().withProperty(FACING, EnumFacing.NORTH));
    }
    @Override
    public boolean isOpaqueCube(IBlockState state)
    {
        return false;
    }
    @Override
    public boolean isFullCube(IBlockState state)
    {
        return false;
    }
    public boolean isTranslucent(IBlockState state)
    {
        return true;
    }
    @Override
    public AxisAlignedBB getBoundingBox (IBlockState state, IBlockAccess source, BlockPos pos)
    {
        return BALLOON_BLOCK_AABB;
    }
    @Nullable
    @Override
    public AxisAlignedBB getCollisionBoundingBox(IBlockState state, IBlockAccess source, BlockPos pos)
    {
        return BALLOON_BLOCK_AABB;
    }

    public IBlockState withRotation(IBlockState state, Rotation rot)
    {
         return state.withProperty(FACING, rot.rotate((EnumFacing) state.getValue(FACING)));
    }

    public IBlockState withMirror(IBlockState state, Mirror mirrorIn)
    {
         return state.withRotation(mirrorIn.toRotation((EnumFacing) state.getValue(FACING)));
    }

    public IBlockState getStateForPlacement(World worldIn, BlockPos pos, EnumFacing facing, float hitX, float hitY, float hitZ, int meta, EntityLivingBase placer)
    {
         return this.getDefaultState().withProperty(FACING, placer.getHorizontalFacing().getOpposite());
    }

    public IBlockState getStateFromMeta(int meta)
    {
         return this.getDefaultState().withProperty(FACING, EnumFacing.getHorizontal(meta));
    }

    public int getMetaFromState(IBlockState state)
    {
         return ((EnumFacing) state.getValue(FACING)).getHorizontalIndex();
    }
    @Override
    protected BlockStateContainer createBlockState()
    {
        return new BlockStateContainer(this, new IProperty[] { FACING});
    }
}

 

meine json in den blockstates sieht so aus:

Zitat

{
    "variants": {
        "facing=north": { "model": "abmod:balloon_block" },
        "facing=east":  { "model": "abmod:balloon_block", "y": 90 },
        "facing=south": { "model": "abmod:balloon_block", "y": 180 },
        "facing=west":  { "model": "abmod:balloon_block", "y": 270 }
    }
}

bevor ich mit der rotations-Sache begonnen habe, sah die json so aus:

Zitat

{
    "variants": {
        "normal": { "model": "abmod:balloon_block" }
    }
}

und das 3d-Modell für den Luftballon wurde im Spiel geladen.

 

ich habe den Fehler gefunden:

nachdem ich den Bereich

Zitat

@Override
    protected BlockStateContainer createBlockState()
    {
        return new BlockStateContainer(this, new IProperty[] { FACING});
    }

über die anderen Sachen, die die Rotation steuern sollen, platziert habe, klappte es.

Ich konnte meinen Block jetzt in 4 verschiedenen Ausrichtungen aufstellen.

bearbeitet von Drachenbauer
Link zu diesem Kommentar
Auf anderen Seiten teilen

Erstelle ein Benutzerkonto oder melde dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde dich hier an.

Jetzt anmelden
×
×
  • Neu erstellen...
B
B