Diskuze: Minecraft modding

Java Java Minecraft modding

Avatar
Neaktivní uživatel:

Ahoj,začal jsem programovat mody do MC. Vytvořil jsem moba ,který funguje,ale problém nastal ,když jsem chtěl udělat dalšího moba. Vytvořil jsem proto všechny třídy,ale pak nastal problémek,že když chci zaregistrovat toho 2.moba do main (tima stejnáma metodama,tak to nejde)A to je vše. Objektové programování se teprve učím,takže prosím nekamenovat.(Vím,měl jsem se naučit dřív OOP a pak jít na mody,ale tohle chci udělat abych mohl s těma mobama blbnout :D)

package UQ;

import UQ.entity.Entity_Lexon;
import UQ.entity.Entity_Milan;
import cpw.mods.fml.common.Mod;
import cpw.mods.fml.common.Mod.EventHandler;
import cpw.mods.fml.common.Mod.Instance;
import cpw.mods.fml.common.SidedProxy;
import cpw.mods.fml.common.event.FMLInitializationEvent;
import cpw.mods.fml.common.event.FMLPreInitializationEvent;
import cpw.mods.fml.common.registry.EntityRegistry;
import net.minecraft.entity.EntityList;
import net.minecraft.entity.EntityList.EntityEggInfo;
import net.minecraft.entity.EnumCreatureType;
import net.minecraft.world.World;
import net.minecraft.world.biome.BiomeGenBase;

@Mod(name = "UQ mod", version = Main.VERSION, useMetadata = false, modid = "UQ mod")

public class Main {

        public static final String VERSION = "UQ 1.7.10";
        @Instance("UQ mod")
        public static Main instance;
        public static final String modid = "UQ mod";
    @SidedProxy(clientSide = "UQ.TProxyClient", serverSide = "UQ.TProxyCommon")
    public static TProxyCommon proxy;



    public Main()
    {



                registerEntity(Entity_Milan.class, "Milan", 0xDB1C1C, 0x170C0C);



    }
























private void registerEntity(Class<Entity_Milan> class1, String entityName,
                        int bkEggColor, int fgEggColor) {
                int id = EntityRegistry.findGlobalUniqueEntityId();



        EntityRegistry.registerGlobalEntityID(class1, entityName, id);
        EntityList.entityEggs.put(Integer.valueOf(id), new EntityEggInfo(id, bkEggColor, fgEggColor));



}

                public void addSpawn(Class<Entity_Milan> entityClass, int spawnProb, int min, int max, BiomeGenBase[] biomes) {
          if (spawnProb > 0) {
                  EntityRegistry.addSpawn(entityClass, spawnProb, min, max, EnumCreatureType.creature, biomes);



          }
                }







        @EventHandler
        public void preInit (FMLPreInitializationEvent event)
        {
                proxy.registerRenderers();

        }
        @EventHandler
        public void init(FMLInitializationEvent event) {

        }

}


[/code
tohle je ten zdroják třídy Main. První mob se jmenuje Milan a kdyby tam přidal 2.moba,tak ten by se jmenoval Lexon.Díky předem za rady :)
Odpovědět 22. května 10:23
Neaktivní uživatelský účet
Avatar
Neaktivní uživatel:

Ještě posílám fotku,kolik těch tříd vlastně je :D

Nahoru Odpovědět 22. května 10:30
Neaktivní uživatelský účet
Avatar
Tomáš Prokop:

PandaP968 ty by jsi něco mohl vědět, či? :-D

 
Nahoru Odpovědět 22. května 12:53
Avatar
pocitac770
Redaktor
Avatar
Odpovídá na Neaktivní uživatel
pocitac770:

Kameny na tebe, kameny na tebe!!!!! :D
Takhle, to, co jsi se poslal je.... Humus, nic proti kódu, ale jde mi o formátování. Fakt, zkus se na to podívat, a trochu to přepsat, aby to bylo nějaký čitelný, jako nechávat všude 3 (i více) volné řadky, a nemít ani "sladěné" (na odsazení) složené závorky u bloků (a nejen ty), fakt, zkus to přepsat, hodně se v tom ztrácím, asi největší nepřehlednost, co jsem zatím viděl (PandaP968, cože jsi říkal na ten můj kód? :D ). Dále bych dodal alespoň i ostatní třídy, nevíme, kde je chyba, a myslím, že v tvojí ukázce ani nikde nevidím toho druhýho moba, tak ho tam přidej, a i když to bude házet chybu, tak ji sem napiš, podle ní jde také mnohé poznat...

Editováno 22. května 15:08
 
Nahoru Odpovědět  +2 22. května 15:06
Avatar
pocitac770
Redaktor
Avatar
Odpovídá na Neaktivní uživatel
pocitac770:

Jo, a tohle není zrovna moc, v současný době předělávám (přepisuju, upravuju, přidávám nový "utilitky") do módu, u jehož původní verze jsem napočítal přes 200 tříd, takže... :D

 
Nahoru Odpovědět 22. května 15:11
Avatar
PandaP968
Redaktor
Avatar
PandaP968:

čau, je tu nějaká sháňka o mě :D. Jak říkal počítač, prvně to dej nějak do pořádku ten kód. Eclipse ti to snad parádně formátuje, tak proč máš v tom takový zmatek? Taktéž si můžeš v Eclipsu v záložce Save Actions dát, aby se ti kód formátoval "úplně". K tvému dotazu, vypisuje se nějaká chyba, když zaregistruješ druhého moba?

Nahoru Odpovědět 22. května 15:19
Autor se zabývá programováním v Javě, PHP, HTML a CSS. Většinu času programuje pluginy pro Minecraft servery.
Avatar
Odpovídá na PandaP968
Neaktivní uživatel:

Ano,když zaregistruju 2.moba ,tak to píše ,že už to v Main někde je. Tedy,když zaregistruju mob Lexon,tak mi tam vyskočí ta žárovička s křížkem a píše to tam,že tahle metoda tady už je ,ale z mobem Milan.

Nahoru Odpovědět 22. května 16:16
Neaktivní uživatelský účet
Avatar
Zdeněk Pavlátka
Tým ITnetwork
Avatar
Odpovídá na Neaktivní uživatel
Zdeněk Pavlátka:

Tak tu zkopírovanou metodu pro registraci přejmenuj... Máš tam 2 metody se stejným názvem, což nelze.

Nahoru Odpovědět 22. května 16:38
Kolik jazyků umíš, tolikrát jsi programátor.
Avatar
Nahoru Odpovědět 22. května 16:39
Neaktivní uživatelský účet
Avatar
pocitac770
Redaktor
Avatar
Odpovídá na Neaktivní uživatel
pocitac770:

Pokud to děláš podle nějakýho tutoriálu z internetu, tak si asi s tím autorem promluvím :D
Jestli to dobře chápu, tak všechny tvoje "Entity classy" dědí z "Entity". A v kódu těch metod s chybnou hlavičkou není nic, co by potřebovalo rozdílné metody (jsou naprpsto stejné). Tak prostě udělej jenom jednu metodu s hlavičkou

public void registerEntity(Class<Entity> xxxx, String yyyy, int zzzz, int pppp)
//samozřejmě si uprav ty názvy parametrů :D

Podobně u metody addSpawn
A doporučení: opravdu, když tu už vidím genericitu a tebe, jak si s tím hraješ jako dítě s pískem, tak ti přímo rozkazuju, aby sis přečetl članky o OOP

Editováno 22. května 16:53
 
Nahoru Odpovědět 22. května 16:52
Avatar
Nahoru Odpovědět 22. května 17:21
Neaktivní uživatelský účet
Avatar
pocitac770
Redaktor
Avatar
Odpovídá na Neaktivní uživatel
pocitac770:

Schválně jsem si pustil zběžně něco k tomu mobovi, a opravdu, tenhle člověk není programátor. Ani náhodou. Normální programátor by takovýhle věci v životě neříkal, a pokud si takhle "píše" kód, tak... Zkus si najít někoho lepšího, kdo alespoň ví o čem mluví, a jenom nepřeříkávě věci od někoho jinýho...

 
Nahoru Odpovědět 22. května 17:53
Avatar
pocitac770
Redaktor
Avatar
pocitac770:

Jenom pár citátů...
Tak, tohle si dáme do publicu. (ukazuje na konstruktor, takže public = konstruktor? what?).
Ten public někdy dělá problémy, když je dole, tak si ho dáme nahoru, někdy to v javě dělá problémy ("neplete" si to s Céčkem?).
Tak tohle jsem si už zkusil.... (O pár minut později prochází kód a vysvětluje jednotlivý části) Tak tohle dělá xxxxx, tohle zase yyyyy... A tohle... fakt nevím, to jsem nějak nepochopil :D
A nikdy nenapíše jedinou řádku do kódu, akorát upravuje názvy aby mu to pasovalo do projektu a jinak dělá klasický Ctrl + C -> Ctrl + V

A zpět k tématu, fungovaly naše rady?

Editováno 22. května 18:06
Akceptované řešení
+20 Zkušeností
Řešení problému
 
Nahoru Odpovědět  +1 22. května 18:04
Avatar
Odpovídá na pocitac770
Neaktivní uživatel:

Já teď nemám moc času,ale skusil jsem to alespoň předělat z tý prasečiny na přehledný zdroják. Zítra se na to podívám a dám vědět.Některým věcem jsem se smál i já ,jako uplnej začátečník

Nahoru Odpovědět 22. května 18:16
Neaktivní uživatelský účet
Avatar
Odpovídá na pocitac770
Neaktivní uživatel:

Vaše rady byly mi užitečné a pomohly.Všem moc děkuji.A nevíte náhodou,jak udělat ,aby mob chodil za mnou ? :D

Nahoru Odpovědět 25. května 15:01
Neaktivní uživatelský účet
Avatar
pocitac770
Redaktor
Avatar
Odpovídá na Neaktivní uživatel
pocitac770:

To bude možná to, co bylo na videu o mobech 3/3 s těmi targetTasky, přesněji ten, co má jako třídu vybranou EntityPlayer.... Mno, zrovna o tomhle nevím nic, ale patří to do jeho sekce "A tohle... fakt nevím, to jsem nějak nepochopil" :D Ale podle mě to je ono.....

this.targetTasks.addTask(2, new EntityAINearestAttackableTarget(this, EntityPlayer.class, 0, true));
Editováno 25. května 23:21
 
Nahoru Odpovědět 25. května 23:20
Avatar
Richard H.
Redaktor
Avatar
Richard H.:

Tady je nějak mnoho MC ne...

Nahoru Odpovědět  -1 8. srpna 22:43
Malý užitečný manuál je vždy lepší než bichle k ničemu.
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 17 zpráv z 17.