NOVINKA - Online rekvalifikační kurz Java programátor. Oblíbená a studenty ověřená rekvalifikace - nyní i online.
Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s podporou uplatnění od 0 Kč. Více informací.

Diskuze: Minecraft modding

V předchozím kvízu, Online test znalostí Java, jsme si ověřili nabyté zkušenosti z kurzu.

Aktivity
Avatar
Neaktivní uživatel:22.5.2016 10:23

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.5.2016 10:23
Neaktivní uživatelský účet
Avatar
Neaktivní uživatel:22.5.2016 10:30

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

Nahoru Odpovědět
22.5.2016 10:30
Neaktivní uživatelský účet
Avatar
Tomáš Prokop:22.5.2016 12:53

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

 
Nahoru Odpovědět
22.5.2016 12:53
Avatar
pocitac770
Tvůrce
Avatar
Odpovídá na Neaktivní uživatel
pocitac770:22.5.2016 15:06

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.5.2016 15:08
 
Nahoru Odpovědět
22.5.2016 15:06
Avatar
pocitac770
Tvůrce
Avatar
Odpovídá na Neaktivní uživatel
pocitac770:22.5.2016 15:11

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.5.2016 15:11
Avatar
PandaP968
Tvůrce
Avatar
PandaP968:22.5.2016 15:19

č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.5.2016 15:19
Autor se zabývá programováním v Javě. Většinu času programuje pluginy pro Minecraft servery.
Avatar
Odpovídá na PandaP968
Neaktivní uživatel:22.5.2016 16:16

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.5.2016 16:16
Neaktivní uživatelský účet
Avatar
Odpovídá na Neaktivní uživatel
Zdeněk Pavlátka:22.5.2016 16:38

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.5.2016 16:38
Kolik jazyků umíš, tolikrát jsi programátor.
Avatar
Odpovídá na PandaP968
Neaktivní uživatel:22.5.2016 16:39

no už to píše něco jiného :D

Nahoru Odpovědět
22.5.2016 16:39
Neaktivní uživatelský účet
Avatar
pocitac770
Tvůrce
Avatar
Odpovídá na Neaktivní uživatel
pocitac770:22.5.2016 16:52

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.5.2016 16:53
 
Nahoru Odpovědět
22.5.2016 16:52
Avatar
Nahoru Odpovědět
22.5.2016 17:21
Neaktivní uživatelský účet
Avatar
pocitac770
Tvůrce
Avatar
Odpovídá na Neaktivní uživatel
pocitac770:22.5.2016 17:53

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.5.2016 17:53
Avatar
pocitac770
Tvůrce
Avatar
pocitac770:22.5.2016 18:04

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.5.2016 18:06
Akceptované řešení
+20 Zkušeností
Řešení problému
 
Nahoru Odpovědět
22.5.2016 18:04
Avatar
Odpovídá na pocitac770
Neaktivní uživatel:22.5.2016 18:16

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.5.2016 18:16
Neaktivní uživatelský účet
Avatar
Odpovídá na pocitac770
Neaktivní uživatel:25.5.2016 15:01

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.5.2016 15:01
Neaktivní uživatelský účet
Avatar
pocitac770
Tvůrce
Avatar
Odpovídá na Neaktivní uživatel
pocitac770:25.5.2016 23:20

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.5.2016 23:21
 
Nahoru Odpovědět
25.5.2016 23:20
Avatar
Richard H.
Tvůrce
Avatar
Richard H.:8.8.2016 22:43

Tady je nějak mnoho MC ne...

Nahoru Odpovědět
8.8.2016 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.