Hirdetés

Keresés

Új hozzászólás Aktív témák

  • Mr Dini
    addikt

    A késleltetést a _fuse változó adja, amit az onUpdate csökkent egyesével. Ha leszámolt 80-ról 0-ra, megkeresi a saját ID-ját és robban. Nem látok benne olyan részletet, ami véletlenszerűséget adna neki.

    Ettől függetlenül szerintem ez elég jó kiindulási alap, és nem a Forge osztályait használja, kivéve a SideOnly annotációt, ami meg mintha Forge-ban is lett volna.

    Majd egyszer én is bele akarok mászni a témába, mondjuk más irányból: a Dockercraft. birizgálja a fantáziámat.

    Á tényleg! :)

    Akkor jól logikáztam, csak nem gondoltam arra, hogy entitással csináljam meg.

    Amúgy szerintem ott van a random is:

    "if(world.getBlockId(tx, ty, tz) == blockID && world.rand.nextInt(1000) < NetherOresCore.explosionProbability.getInt())"

    Ezt az explosionProbability-t pedig a mod konfigjából olvassa ki.

    Nekem is nagyon szimpatikus a forge, de ellentétben a Bukkittal itt alig van wiki, vagy vmi, amiből az ember megtanulhatja a dolgokat... Viszont ha az ember bele tudja magát ásni, akkor elképesztő dolgokat lehet elkészíteni. Most pl a transzformációkkal/animációkkal szórakozom. Viszont ha kész a mod, akkor rengeteg hálás lurkó kerül a táboromba! :)

  • Mr Dini
    addikt

    Közben Githubon rátalátam egy NetherOres nevű modra, ahol úgy értelmezem, h ott is kis eséllyel robbanhat a dolog és hangot is ad ki, szóval puskának tökéletes! :D Már csak azt kéne megtalálnom, hogy hol itt a késleltetés...

    [link], illetve a robbanásért felelős entitás

  • Mr Dini
    addikt

    Végülis ja, az előbb írtam, hogy: "a Thread.sleeppel amúgy is kinyírnád a játékot" :)

    Ezt nem lehet olyan naívan megoldani, hogy majd egy számláló elér valameddig. Nem tudsz számlálót írni anélkül, hogy a mostani problémát megoldanád.(*)

    Nem akarnád esetleg a mostani forrásodat megosztani például Pastebinen, vagy valami forráskezelővel (BitBucket, GitHub, stb.)? Jó eséllyel adna ötleteket.

    (*): Közben olvasgattam, hogy hogy működik ez a Forge a gyakorlatban. Igazából mégiscsak számlálószerű a megoldás, a rendszer küld ún. tickeket amikor a világ frissül, erre fel tudsz iratkozni, és amikor az értesítés jön, cselekedni. De ehhez is fórumokat kell bújni.

    Igen, a minecraftban tickek vannak. Be kell állítani, hogy a blokk/cucc, amit hozzáadsz hány tickenként frissüljön. 10 tick jelent 1 mp-et. És az általad linkelt EventHandlerrel lehet lekódolni, h mit hajtson végre, ha blokkfrissítés van. Nade, ez azért nem jó, mert én azt szeretném, ha az általam létrehozott rubint blokkot kiütöd, akkor 20% eséllyel ad egy sercegő hangot, majd 4 mp múlva robban.

    Megoldhatnám úgy, hogy beleírom az EventHandler onDestroy részébe, hogy a változót állítsa mondjuk 1-re, és az update tick-be pedig berakhatnám, hogy ha a változó 1, akkor minden update ticknél adjon hozzá 1-et, és ha mondjuk elérte a 4-et, akkor robbanjon, de ezzel az a gond, h szétütés után már nincsen update tick. Másodsorban pedig, hogy ha több rubint blokk van a világban, akkor azok is frissítődnek és ha a változó 1, akkor az összes ad hozzá mrg egyet és ezzel vagy kifagy a játék, vagy felrobban az egész map... :DDD

    Tehát picit tanácstalan vagyok. De akkor du megosztom a kódot püben.

  • Mr Dini
    addikt

    Rövidtávon megkönnyíted a saját életed, ha a kétdimenziós tömböket elfelejted, helyette egy dimenzióban tárolod a pályád és okosan indexelsz (pl. x,y koordinátákhoz a tömb y*N+x. elemét veszed). Ekkor a tömb feltöltése és megkeverése is triviálissá válik.

    Mr Dini: Nem baj, hogy a szintaktikán elakadtál, mert a Thread.sleeppel amúgy is kinyírnád a játékot. Ezért nem is mondom meg, hogy lehetne feloldani az előző fordítási hibát.

    Ha Bukkit plugint írsz esetleg, azzal meg lehet oldani ezt helyesen is. Tiszta Java-val nem tudom hirtelen, hogy tudnál egyszerűen visszatérni a UI szálra.

    Igazából, nekem nem is sleepre lenne szükségem, hanem egy szimpla counterre. Csak nem tudom, hogyha pl while-lal létrehozok egy i változót 0 értékkel és ahhoz adok hozzá mindig +1-et, amíg eléri a 4-et, akkor az valóban mpenként fog hozzáadni +1-et. Gondolom nem... :(

    Forge mod loader-t használok, elvileg ott is van egy csomó extra lib, ami a segítségemre lehet. A gond az, hogy sehol egy doksi, hogy hogyan is működnek, mi a szintaktika stb...

    (#8246) M_AND_Ms

    Ezt próbáltam már try-ba tenni és elkapni, de kicrashelt a játék, ha robbanni kellett volna neki... :DDD

    Amúgy ezt próbáltam:

    try {
    Thread.sleep(1000);
    }
    catch (InterruptedException e) {
    continue;
    }

    Ja és continue; nélkül is ugyanaz az eredmény...

  • Mr Dini
    addikt

    Akkor hogy lehetne? While-lal és egy változóval is megáll az egész? És ha külön fájlba teszem és azt hívom meg?

    Persze, holnap bemásolom az errort.

    Nah, most mást dob, konkrétabban ezt:

    rubyOre.java:199: error: unreported exception InterruptedException; must be caught or declared to be thrown
    Thread.sleep(3500);
    ^
    Note: Some input files use or override a deprecated API.
    Note: Recompile with -Xlint:deprecation for details.

    Csak ezt adtam hozzá: Thread.sleep(3500); ...

    Nekem csak arra lenne szükségem, hogy az 1. parancs (hang kiadás) után 5 mp-vel menjen a 2. parancsra, ami egy robbanás a játékon belül. Van más sima counter javaban, ami nem altatja el az egészet és működőképes?

  • Mr Dini
    addikt

    Szia!

    Tippre: A Thread.Sleep() lenne a jo megoldas, viszont gondolom egy szalban fut az egesz szerver a pluginoddal / mododdal, amit csinalsz. Tehat, amikor elalltatod, akkor nem csak az a cselekves alszik el, hanem minden mas is. (Ez nagyon nem okes)
    Az a gond egyebkent, hogy nem nagyon ertek a Minecraft dolgokhoz, szoval nem nagyon tudok mit mondani. De eloszor is kulonitsd el a pluginodat a fo szaltol, hogy csak az menjen el aludni.

    A szuksege van adatra reszt pedig ki tudnad fejteni?

    Akkor hogy lehetne? While-lal és egy változóval is megáll az egész? És ha külön fájlba teszem és azt hívom meg?

    Persze, holnap bemásolom az errort.

  • Mr Dini
    addikt

    Szia!

    Mit jelent az, hogy nem ment? Pontosan mekkora sleep-re lenne szukseged? Mit irtal bele? Peldaul a Thread.sleep-nel? Illetve meg azt hozzafuznem, hogy pontosan miert is kell neked a delay? Nem tul szep csak ugy sleep-eltetni dolgokat, mig a masik befejezi a dolgat... Talan...

    3-3,5 sec sleepet számoltam.

    Ezekkel próbálkoztam:

    thread.sleep(3500);

    TimeUnit.SECONDS.sleep(3);

    Az elsőre azt dobta, hogy szüksége van még adatra, a TimeUnit pedig az importnál akadt el. Sorry, most konkrét gradle logot nem tudok beszúrni, mert csak mobilon van net... :/

    Arra tudok tippelni, h valamelyik mc-s (forgeos) libraryval "akad össze" a cucc.

    Azért kell a delay, mert szeretném, ha a modolt Minecraftban kiütök egy blokkot, akkor 20% eséllyel adjon ki robbanó hangot, majd 3-3,5 sec múlva robbanjon fel a környezet. Eddig minden megy, csak a delay nem... :(

  • Mr Dini
    addikt

    Nah, attól tartok naponta írnom kell ide a kezdőbbnél kezdőbb kérdéseim... :B

    Most abba a hibába ütköztem, hogy egy kis delayre lenne szükségem a modban 2 command között.

    Próbáltam a thread félét és a TimeUnit-os sleepet is, de egyik sem ment... :/ Tudtok vmi más módszert sleepre?

    :R

  • Mr Dini
    addikt

    Igen, sajnos winen próbálkozom. :D

    Köszi amúgy a választ, ilyen egyszerűre nem is gondoltam! :)

    Majd holnap ránézek.

    2. Igen, az mc is támogat hasonlót, sőt, mi-több! Van minden nyelvhez külön egy .lang fájl, ami tökéletesen működik, de a list.add-nál vmiért nem sikerült a fájlból kiolvastatnom a hozzá tartozó értéket... De akkor még próbálkozom! :)

    Áhh, sajnos nem jött be... :( Elvileg alapból UTF-8-on volt BOM nélkül, de kézzel átírva is kriksz-kraksz lesz az ékezetből...

  • Mr Dini
    addikt

    A Minecrafthoz nem értek, a HxD-t se tudom hogy micsoda, de tipikusan akkor van ez a jelenség ha a fordító nem abban a kódolásban kapja a forrásfájlokat, mint amit vár. Windowson jön ez elő a gyakorlatban, az egyik CP1250-et akar (közép-európai kódlap), a másik meg UTF-8-at.

    A forrásfájljaid kódolását a Notepad++-szal elég egyszerűen meg tudod nézni és át is konvertálhatod egy kattintással. A környezetedet viszont csak te ismered.

    Hosszú távon meg azt ajánlanám, hogy a szövegeket szervezd ki XML vagy Properties fájlba. Valószínűleg a Minecraftnak is van valami preferált módja.

    Igen, sajnos winen próbálkozom. :D

    Köszi amúgy a választ, ilyen egyszerűre nem is gondoltam! :)

    Majd holnap ránézek.

    2. Igen, az mc is támogat hasonlót, sőt, mi-több! Van minden nyelvhez külön egy .lang fájl, ami tökéletesen működik, de a list.add-nál vmiért nem sikerült a fájlból kiolvastatnom a hozzá tartozó értéket... De akkor még próbálkozom! :)

  • Mr Dini
    addikt

    Üdv ismét! :)

    Még mindig a Minecraft modon dolgozom, közben a Jetpacket is megoldottam, tehát nagyon happy vagyok, viszont ismét egy noob problémába ütköztem...

    Tehát ahhoz, h az adott mc itemhez adjon leírást a list.add("Leiras szovege..."); -t használom és ez működik is perfektül. Viszont, ha ékezet is van benne, akkor az ékezetek helyén ASCII szerű kriksz-krakszok lesznek... :/ Először azt hittem, hogy csak a fordító tréfált meg, ezért HxD-ből átírtam a classokban az ékezetes karaktereket, de nem segített... :(

    Nyilván triviális a megoldás, de nekem nem sikerült rájönnöm, így Benneteket kérdeznélek, hogy Ti mit ajánlotok. :D

    Előre is köszi! :R

    Senki? :U

  • Mr Dini
    addikt

    Üdv ismét! :)

    Még mindig a Minecraft modon dolgozom, közben a Jetpacket is megoldottam, tehát nagyon happy vagyok, viszont ismét egy noob problémába ütköztem...

    Tehát ahhoz, h az adott mc itemhez adjon leírást a list.add("Leiras szovege..."); -t használom és ez működik is perfektül. Viszont, ha ékezet is van benne, akkor az ékezetek helyén ASCII szerű kriksz-krakszok lesznek... :/ Először azt hittem, hogy csak a fordító tréfált meg, ezért HxD-ből átírtam a classokban az ékezetes karaktereket, de nem segített... :(

    Nyilván triviális a megoldás, de nekem nem sikerült rájönnöm, így Benneteket kérdeznélek, hogy Ti mit ajánlotok. :D

    Előre is köszi! :R

  • Mr Dini
    addikt

    Sziasztok!

    Egy Minecraft modot készítek a gyerekeknek (mcreatorral fordítom, mert az Eclipse vmiért nem indul el), de ez a Jetpack kód kifogott rajtam... Sajnos egyenlőre nem jöttem rá, hogy hol lehet a hiba, de nyilván triviális és csak én nem veszem észre...

    Itt van maga a kód.

    És ezt dobja a compiler:

    jetpack.java:152: error: ')' expected
    }
     ^
    jetpack.java:153: error: illegal start of expression
    }).setUnlocalizedName("jetpack");body.setMaxStackSize(1);
     ^
    jetpack.java:153: error: ';' expected
    }).setUnlocalizedName("jetpack");body.setMaxStackSize(1);
      ^
    3 errors
    :compileJava FAILED
    FAILURE: Build failed with an exception.
    BUILD FAILED
    * What went wrong:
    Execution failed for task ':compileJava'.
    > Compilation failed; see the compiler error output for details.
    Total time: 24.777 secs
    * Try:
    Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.

    A kugli nem dobott semmi használható infót, így a szakikhoz fordulnék. :D

    Előre is köszönöm a válasz(oka)t! :R

Új hozzászólás Aktív témák