Ricerca…


Sintassi

  • MODID = rappresenta l'identificatore del MOD
  • MODPath = indica il percorso completo della directory qualificata nella cartella mod

Osservazioni

Questo argomento dovrebbe contenere schemi / esempi più usati e codice ben collaudato per modificare l'applicazione di Minecraft con forge. Forse questo può sostituire un giorno la documentazione ufficiale.

Modello di implementazione per proxy di inizializzazione

Questo esempio mostra come implementare le classi proxy per la tua applicazione Modec Minecraft, che vengono utilizzate per inizializzare la tua mod.

Prima di tutto dovrai implementare la classe CommonProxy.java di base che contiene il 3 metodo utilizzato principalmente:

public class CommonProxy {
    public void preInit(FMLPreInitializationEvent e) {}
    public void init(FMLInitializationEvent e) {}
    public void postInit(FMLPostInitializationEvent e) {}
}

Normalmente la tua mod ha 2 pacchetti diversi per Client e Server Code, quindi avrai bisogno in ogni pacchetto di una classe figlia di CommonProxy.java come:

public class ClientProxy extends CommonProxy {    
    @Override
    public void preInit(FMLPreInitializationEvent e) {
        super.preInit(e);
    }

    @Override
    public void init(FMLInitializationEvent e) {
        super.init(e);    
    }

    @Override
    public void postInit(FMLPostInitializationEvent e) {
        super.postInit(e);
    }
}

e per il server:

public class ServerProxy extends CommonProxy {
    @Override
    public void preInit(FMLPreInitializationEvent e) {
        super.preInit(e);
    }

    @Override
    public void init(FMLInitializationEvent e) {
        super.init(e);
    }

    @Override
    public void postInit(FMLPostInitializationEvent e) {
        super.postInit(e);
    }
}

Dopo aver creato queste classi, puoi estenderle con metodi che devono essere eseguiti solo sul lato client o server, ma puoi anche collegarli ad entrambi se chiami i metodi nella classe 'base'.

Infine, devi definire quale proxy è preso in fase di runtime. Devi estendere la tua classe mod principale con l'annotazione @Mod , da:

private static final String CLIENTPROXY = "com.yourpackage.client.ClientProxy";
private static final String SERVERPROXY = "com.yourpackage.client.ServerProxy";    

@SidedProxy(clientSide = CLIENTPROXY, serverSide = SERVERPROXY)
public static CommonProxy PROXY;

Questo consentirà a Forge di rilevare quale classe dovrebbe essere presa in fase di runtime. Nei metodi di inizializzazione del tuo Mod ora puoi usare questa proprietà PROXY statica.

@EventHandler
public void init(FMLInitializationEvent event) {
    PROXY.init(event);
}

@Mod.EventHandler
public void preInit(FMLPreInitializationEvent event) {
    PROXY.preInit(event);
}

@EventHandler
public void postInit(FMLPostInitializationEvent event) {
    PROXY.postInit(event);
}

Aggiunta di suoni personalizzati al tuo MOD

Questo esempio ti mostra come aggiungi nuovi suoni alla tua MOD e li suoni. Prima di tutto hai bisogno di un file audio che abbia il formato *.ogg . Qualsiasi altro formato non è consentito dall'applicazione Minecraft e sarà respinto.

Il file audio ha il nome: sound1.ogg

Metti il ​​file audio nel seguente percorso:

/YourPath/src/main/resources/assets/MODID/sounds/sound1.ogg

Sostituisci 'MODID' con l'identificatore che hai definito per il tuo MOD

Quindi devi creare una sounds.json nella sounds.json UTF-8 (Standard) che definisce nome, risorsa, ... e altre cose per il tuo suono personalizzato. Questo file sarà simile a:

{
  "sound1": {
    "category" : "player",
    "sounds": [{
        "name": "MODID:sound1",
        "stream": false
      }
    ]
  },
  "sound2": {
    "category" : "ambient",
    "sounds": [{
        "name": "MODID:subfolder/sound2",
        "stream": true
      }
    ]
  }
}

Come spiegazione per questo suono.

Sono definiti 2 suoni definiti, in quanto ho aggiunto un esempio per cui è possibile studiare come aggiungere suoni multipli. sound1 ha il player categoria player il secondo è di categoria ambient che significa che il volume del suono è influenzato dalle impostazioni del volume che l'utente ha impostato per i suoni player / ambient. name è la proprietà più importante in quanto punta alla risorsa del suono. Il MODID è l'identificativo del tuo MOD ed è obbligatorio in quanto l'applicazione cercherà nelle risorse del tuo mod per il file, altrimenti cercherà nelle risorse di Minecraft e non troverà nulla. La proprietà stream significa che il suono verrà trasmesso in streaming dal file system, che è necessario solo per suoni più lunghi di 4 secondi.

Il tuo file sounds.json personalizzato deve andare sotto il seguente percorso:

/YourPath/src/main/resources/assets/MODID/sounds.json

Ora sarai in grado di caricare i suoni nel registro del gioco. Quindi devi creare una classe che sta inizializzando SoundEvent e gestendo la registrazione.

public class SoundRegistrator {
    public static final SoundEvent SOUND_1;
    public static final SoundEvent SOUND_2;

    static {
        SOUND_1 = addSoundsToRegistry("sound1");
        SOUND_2 = addSoundsToRegistry("sound2");
    }

    private static SoundEvent addSoundsToRegistry(String soundId) {
        ResourceLocation shotSoundLocation = new ResourceLocation("MODID", soundId);
        SoundEvent soundEvent = new SoundEvent(shotSoundLocation);
        soundEvent.setRegistryName(shotSoundLocation);
        return soundEvent;
    }           
}

In seguito devi creare un SoundRegisterListener :

public class SoundRegisterListener {
        @SubscribeEvent(priority = EventPriority.NORMAL, receiveCanceled = true)
        public void registerSoundEvents(RegistryEvent.Register<SoundEvent> event) {
           event.getRegistry().registerAll(SoundRegistrator.SOUND_1,SoundRegistrator.SOUND_2);
        }   
}

e registrarlo su MinecraftForge.EVENT_BUS come:

MinecraftForge.EVENT_BUS.register(new SoundRegisterListener());

Finalmente sarai in grado di suonare i tuoi suoni:

void playSound(SoundEvent sound) {
    try {
        if (Minecraft.getMinecraft().world.isRemote) {
            EntityPlayerSP player = Minecraft.getMinecraft().player;
            Minecraft.getMinecraft().world.playSound(player, player.getPosition(), sound, SoundCategory.PLAYERS, RandomGenerator.getNextRandomVolumeLoud(), 1.0F);
        }
    } catch (Exception ex) {
       //Error happened
    }
}

Invio di un comando

Questo esempio mostra diversi modi per eseguire "comandi" per Minecraft dal codice:

EntityPlayerSP player = Minecraft.getMinecraft().player;
player.sendChatMessage("/Command here");

per inviare un comando in SinglePlayer



Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow