Forums.ATC.no

Teknisk => Generelt teknisk => Emne startet av: Cybersyn på 29. Mars 2012, 15:27 pm

Tittel: Hvordan lage en Minecraft mod - NY LEKSJON nesten HVER SOLFORMØRKELSE
Skrevet av: Cybersyn29. Mars 2012, 15:27 pm
Å lage en mod til Minecraft er egentlig ikke så vanskelig som det høres ut som. Du trenger egentlig ikke mye Java-erfaring. Alt du trenger er 2 øyne, og en lærer - gjerne en person som nettopp har laget en tråd i dette forumet med tittelen "Hvordan lage en Minecraft mod".

Om det er noe du lurer på, bare post et innlegg her :)


Du trenger:
-MCP (Minecraft Coder Pack)
-Java JDK - Lastes ned fra Oracle
-Minecraft
-Klartekst-behandlingsprogram eller IDE (som f. eks. Notepad++, Eclipse IDE, NetBeans IDE, WordPad)
-Om ønsket: En Minecraft Mod API (som f. eks. ModLoader, MinecraftForge, ScotTools API, ShockAhPI, GUI API)

Her kommer jeg for det meste til å bruke Notepad++ og Risugami's ModLoader, men vi kommer nok til å svippe innom noen av de andre også.





Leksjon 1, Uke 13
   [Lett] Hvordan sette opp MCP
IDE: N/A
API: N/A
Hvor?: N/A
MCP (Minecraft Coder Pack) er en slags Java kildekode-dekompilator, akkurat som DJ Java Decompiler og JD-GUI. Den store forskjellen er at MCP har en slags navneliste. Om du tar en titt i Minecraft.jar finner du mange meningsløse filnavn. aa, ab, ac... adw, arf... pl, pm, pn osv. Hvordan skal det være mulig å holde styr på alle disse filene. Det er der MCP kommer inn i bildet. Når MCP dekompilerer kildekoden, endrer den også filnavnene for å gjøre det enkelt å holde styr på og oppdatere mods. For eksempel, blir "adw" gjort om til "Achievements", og dette vil også skje med kildekoden til alle filer som kaller på eller bruker filen "adw", blir endret til "Achievements" for å forhindre feil under rekompilering.

MCP-skriptene er skrevet i Python og dekompileringen baseres på Jad (Java Decompiler).

I ZIP-filen du kan laster ned fra http://mcp.ocean-labs.de/index.php/MCP_Releases (http://mcp.ocean-labs.de/index.php/MCP_Releases) finner vi 11 .bat filer (.sh for Linux):

Trinn 1: Last ned nyeste versjon av MCP fra http://mcp.ocean-labs.de/index.php/MCP_Releases (http://mcp.ocean-labs.de/index.php/MCP_Releases)
(om du ønsker å modde en eldre versjon av Minecraft, må du finne den riktige MCP-versjonen på http://mcp.ocean-labs.de/index.php/MCP_Old_Releases (http://mcp.ocean-labs.de/index.php/MCP_Old_Releases))
Trinn 2: Pakk ut alle filene fra ZIP-arkivet til ønsket plassering.
Trinn 3a: Gå til .minecraft-mappen i %AppData%, og kopier mappene /bin og /resources (UMODIFISERT!) til mappen /jars i MCP-mappen.
Trinn 3b: Om modding av server er ønsket: Last ned en umodifisert versjon av "minecraft_server.jar" fra Minecraft.net (http://minecraft.net/download.jsp) og lagre den i mappen /jars i MCP-mappen.
Trinn 4: Om ModLoader er ønsket (ANBEFALT): Last ned nyeste eller ønsket versjon av ModLoader fra http://www.minecraftforum.net/topic/75440-v124-risugamis-mods-everything-updated/ (http://www.minecraftforum.net/topic/75440-v124-risugamis-mods-everything-updated/), pakk ut filene, og legg de til i /jars/bin/minecraft.jar i MCP-mappen.
Trinn 5: Kjør "decompile.bat" i MCP-mappen for å starte dekompilering av kildekoden (filene i /jars).
Trinn 6: Blant de nye mappene som nå skal ha dukket opp i MCP-mappen, skal det være en mappe som heter /src. I /src/minecraft/net/minecraft/src skal nå den dekompilerte kildekoden ligge.





Leksjon 2, Uke 14
   [Lett] Hvordan lage en ny Blokk
IDE: ingen (Notepad++ anbefales)
API: ModLoader
Hvor?:../src/minecraft/net/minecraft/src/

Første leksjon der vi skal begynne å programmere! Pass på at du har dugelig med niste, energi og et lett tilgjengelig toalett. Nå slipper helvete løs!

Det første vi må gjøre er å lage en ny fil i mappen der vi dekompilerte minecraft.jar til i leksjon 1 (../src/minecraft/net/minecraft/src/). Omdøp filen til mod_Greenstone.java. Om du ønsker at modden din skal hete noe annet enn Greenstone, bytter du ut Greenstone med hva enn du måtte ønske, og for all del: PASS PÅ at filetternavnet er .java og ikke .java.txt eller lignende.

Nå som den nye filen burde være klar, åpner vi den og skriver:
Kode: [Velg]
package net.minecraft.src;
 
public class mod_Greenstone extends BaseMod
{
    public void load()
    {
 
    }
    public String Version()
    {
        return "0.1";
    }
}
Bytt ut "0.1" i kroken "public String Version()" til hvilken versjon av modden det er.
Så legger vi til dette i "public class mod_Greenstone":
Kode: [Velg]
    // Her skal vi definere blokkens egenskaper, som f. eks. ID, sprite, hardhet, TNT-motstand, hvor mye den skal lyse/gløde, og hvilket navn vi skal bruke for å kalle blokken når vi f. eks. definerer blokkens klasse etc., IKKE hva den heter in-game.
    // Greenstone-malm:
    public static final Block greenstoneOre = new BlockGreenstoneOre(190,0).setHardness(3F).setResistance(5F).setBlockName("greenstoneOre");
    // Greenstone-blokk:
    public static final Block greenstoneBlock = new BlockGreenstone(191,0).setHardness(3F).setResistance(10F).setLightValue("0.1F").setBlockName("greenstoneBlock");
Parametrene til BlockXXXXX sier hvilken ID den skal ha og hvilken sprite ID den skal bruke. Nå har vi satt sprite ID'en til 0 fordi vi skal bruke ModLoader sin override-funksjon som jeg skal vise deg snart. "setHardness()" bestemmer hvor hard blokken skal være (hvor lang tid det skal ta å ødelegge den). "setResistance()" bestemmer hvor mye den skal beskytte mot eksplosjoner. "setLightValue()" bestemmer hvor mye lys den skal gi fra seg.

Nå mangler vi bare 3 ting til i denne classen: registrering av blokkenes klasse, blokkenes tekstur og blokkenes navn. Alt dette skal inn i load()-kroken
Kode: [Velg]
        // Først registrerer vi blokkene:
        ModLoader.RegisterBlock(greenstoneOre);
        ModLoader.RegisterBlock(greenstoneBlock);
        // Så legger vi til en tekstur ved hjelp av ModLoader´s fantastiske override-funksjon:
        //Først definerer vi filen som skal overskrives (/terrain.png), så definerer vi filen vi skal overskrive med (f. eks. /mod/greenstone/greenstone_ore).
        greenstoneOre.blockIndexInTexture = ModLoader.addOverride("/terrain.png", "/mod/greenstone/greenstone_ore.png");
        greenstoneBlock.blockIndexInTexture = ModLoader.addOverride("/terrain.png", "/mod/greenstone/greenstone_block.png");
        // Til slutt skriver vi hva blokkene skal hete in-game:
        ModLoader.AddName(greenstoneOre, "Greenstone Ore");
        ModLoader.AddName(greenstoneBlock, "Greenstone Block");
Nå som vi er ferdig med denne filen for denne gang, skal filen mod_Greenstone.java se slik ut:
Kode: [Velg]
package net.minecraft.src;
 
public class mod_Greenstone extends BaseMod
{
    // Her skal vi definere blokkens egenskaper, som f. eks. ID, sprite, hardhet, TNT-motstand, hvor mye den skal lyse/gløde, og hvilket navn vi skal bruke for å kalle blokken når vi f. eks. definerer blokkens klasse etc., IKKE hva den heter in-game.
    // Greenstone-malm:
    public static final Block greenstoneOre = new BlockGreenstoneOre(190,0).setHardness(3F).setResistance(5F).setBlockName("greenstoneOre");
    // Greenstone-blokk:
    public static final Block greenstoneBlock = new BlockGreenstone(191,0).setHardness(3F).setResistance(10F).setLightValue("0.1F").setBlockName("greenstoneBlock");

    public void load()
    {
        // Først registrerer vi blokkene:
        ModLoader.RegisterBlock(greenstoneOre);
        ModLoader.RegisterBlock(greenstoneBlock);
        // Så legger vi til en tekstur ved hjelp av ModLoader´s fantastiske override-funksjon:
        //Først definerer vi filen som skal overskrives (/terrain.png), så definerer vi filen vi skal overskrive med (f. eks. /mod/greenstone/greenstone_ore).
        greenstoneOre.blockIndexInTexture = ModLoader.addOverride("/terrain.png", "/mod/greenstone/greenstone_ore.png");
        greenstoneBlock.blockIndexInTexture = ModLoader.addOverride("/terrain.png", "/mod/greenstone/greenstone_block.png");
        // Til slutt skriver vi hva blokkene skal hete in-game:
        ModLoader.AddName(greenstoneOre, "Greenstone Ore");
        ModLoader.AddName(greenstoneBlock, "Greenstone Block");
    }

    public String Version()
    {
        return "0.1";
    }
}
Men, nei! - Vi er nok ikke helt ferdige enda! Når vi definerte greenstoneOre kalte vi på klassen BlockGreenstoneOre, som ikke eksisterer enda! Dermed må vi lage en ny fil som heter BlockGreenstoneOre.java. Og nok en gang; pass på at etternavnet er .java.
Sånn skal BlockGreenstoneOre.java se ut:
Kode: [Velg]
package net.minecraft.src;

public class BlockGreenstoneOre extends Block
{

    protected BlockGreenstoneOre(int i, int j)
    {
        super(i, j, Material.iron); //Her kan du velge hvilket materiale blokken skal være basert på (f. eks. Material.iron). Forskjellige materialer oppfører seg forskjellig og har forskjellig farge på et kart. Du kan finne alle materialene i Material.java.
    }
}
Eller om du ønsker at Greenstone-malmen skal droppe Greenstone item (som vi skal lage i en leksjon senere) istedenfor at den dropper Greenstone-malm:
Kode: [Velg]
package net.minecraft.src;

public class BlockGreenstoneOre extends Block
{

    protected BlockGreenstoneOre(int i, int j)
    {
        super(i, j, Material.iron);
    }
    public int idDropped(int i, Random random)
    {
         return mod_Greenstone.greenstoneItem.shiftedIndex;
    }
}
som ikke vil virke fordi vi ikke har noe som heter greenstoneItem enda.
Gjør det samme med BlockGreenstone.

Om du ønsker å bruke min tekstur til denne tutorialen, er den her:
(http://i.imgur.com/1peRK.png) (http://imgur.com/1peRK) (http://i.imgur.com/Xe3DQ.png) (http://imgur.com/Xe3DQ)

(Redigert 28. juli 2012)





Leksjon 3, Uke 30
   [Lett] Hvordan lage en ny Gjenstand
IDE: ingen (Notepad++ anbefales)
API: ModLoader
Hvor?:../src/minecraft/net/minecraft/src/

Ok, nå er jeg endelig ute med en tut igjen, og som du sikkert har lest skal jeg vise deg hvordan du lager en ny gjenstand. Jeg regner at du allerede har lest de tidligere tutorialene, og har mod_Greenstone.java klar.

Det første vi gjør er å legge til variabelen til gjenstanden, og det gjør vi slik:
Kode: [Velg]
public static final Item greenstoneItem = new Item(192).setItemName("greenstoneItem");
Plasser den under GreenstoneBlock sin variabel, omtrent slik:
Kode: [Velg]
    public static final Block greenstoneOre = new BlockGreenstoneOre(190,0).setHardness(3F).setResistance(5F).setBlockName("greenstoneOre");
    public static final Block greenstoneBlock = new BlockGreenstone(191,0).setHardness(3F).setResistance(10F).setLightValue("0.1F").setBlockName("greenstoneBlock");
    public static final Item greenstoneItem = new Item(192).setItemName("greenstoneItem");
Neste trinn er å legge inn en tekstur og så klart et navn til den nye super-duper-gjenstanden vår.

Først legger vi inne en texture-override, slik:
Kode: [Velg]
greenstoneItem.iconIndex = ModLoader.addOverride("/gui/items.png", "/mod/greenstone/greenstone_item.png");
Så definerer vi in-game navnet til gjenstanden vår.
Kode: [Velg]
ModLoader.addName(greenstoneItem, "Greenstone Gem");
Sånn, ja!
Omtrent som dette skal mod_Greenstone se ut når du er ferdig:
Kode: [Velg]
package net.minecraft.src;
 
public class mod_Greenstone extends BaseMod
{
    public static final Block greenstoneOre = new BlockGreenstoneOre(190,0).setHardness(3F).setResistance(5F).setBlockName("greenstoneOre");
    public static final Block greenstoneBlock = new BlockGreenstone(191,0).setHardness(3F).setResistance(10F).setLightValue("0.1F").setBlockName("greenstoneBlock");
    public static final Item emeraldItem = new ItemGreenstone(192).setItemName("emeraldItem");
 
    public void load()
    {
        ModLoader.RegisterBlock(greenstoneOre);
        ModLoader.RegisterBlock(greenstoneBlock);
        greenstoneOre.blockIndexInTexture = ModLoader.addOverride("/terrain.png", "/mod/greenstone/greenstone_ore.png");
        greenstoneBlock.blockIndexInTexture = ModLoader.addOverride("/terrain.png", "/mod/greenstone/greenstone_block.png");
        greenstoneItem.iconIndex = ModLoader.addOverride("/gui/items.png", "/mod/greenstone/greenstone_item.png");
        ModLoader.addName(greenstoneOre, "Greenstone Ore");
        ModLoader.addName(greenstoneBlock, "Greenstone Block");
        ModLoader.addName(greenstoneItem, "Greenstone Gem");
    }
    public String Version()
    {
        return "0.1";
    }

Ja, da er vi vel ferdige, da? Ja, med mindre du har lyst til å endre størrelsen på en stack til noe annet en 64. Da må vi lage en egen fil til gjenstanden, istedenfor å bruke Item.java. Lag den nye filen og kall den f. eks. ItemGreenstone. Slik skal den nye filen se ut:
Kode: [Velg]
package net.minecraft.src;
 
public class ItemGreenstone extends Item
{
 
    public ItemGreenstone(int i)
    {
        super(i);
        maxStackSize = (64);
    }
}
Erstatt "64" med ønsket stack-størrelse. Husk at den må være mellom 1 og 64!
Da må vi også endre variabelen greenstoneItem i mod_Greenstone.java til å kalle ItemGreenstone istedenfor Item:
Kode: [Velg]
public static final Item greenstoneItem = new ItemGreenstone(192).setItemName("greenstoneItem");
Da var vel alt på plass, ja.. Å, ja, lykke til! ;)

Om du ønsker å bruke min tekstur til denne tutorialen, er den her:
(http://i.imgur.com/LMw6G.png) (http://imgur.com/LMw6G)





Jeg håper å slippe neste leksjon på fredag/lørdag neste uke (Uke 31). Tema: Hvordan lage en ny Oppskrift. (Crafting-oppskrifter, formløse crafting-oppskrifter, furnace-oppskrifter og furnace-brensel)

Om du har oppdaget noen feil eller ikke fikk det til, bare legg inn et svar her :)
Tittel: Sv: Hvordan lage en Minecraft mod - NY LEKSJON HVER FREDAG
Skrevet av: Morder26929. Mars 2012, 15:28 pm
Hvordan anbefaler du å lære Java?
Tittel: Sv: Hvordan lage en Minecraft mod - NY LEKSJON HVER FREDAG
Skrevet av: Cybersyn29. Mars 2012, 15:38 pm
Morder269; Begynn med noe enkelt som ligner på Java - nettside-skripting (JavaScript, PHP, ASP.NET, Perl), Basus (http://basus.no (http://basus.no)) eller noe sånt. Det går jo også an å finne noen enkle veiledninger på nettet.
Tittel: Sv: Hvordan lage en Minecraft mod - NY LEKSJON HVER FREDAG
Skrevet av: Emilpoika29. Mars 2012, 16:37 pm
Huff, jeg husker slitet med å manuelt skrive inn databaser inn i MySQL/Dreamviewer for å få vist fram statistikk på en php-nettside. Det er nesten 3 år siden jeg hadde litt om dette i IT, så jeg tror ikke jeg gidder å ta det opp igjen nå.
Jeg anbefaler like vel folk med interesse å prøve, det er ganske greit når du først har begynt å forstå grunntrekkene. (Nå snakker jeg generelt, ikke nødvendigvis om minecraft-mods)
Tittel: Sv: Hvordan lage en Minecraft mod - NY LEKSJON HVER FREDAG
Skrevet av: Cybersyn30. Mars 2012, 12:46 pm
Huff, jeg husker slitet med å manuelt skrive inn databaser inn i MySQL/Dreamviewer for å få vist fram statistikk på en php-nettside.
Kunne ikke sagt det bedre selv xD


Ganske basic Java:
Kode: [Velg]
// Dette er en kommentar-linje som ikke gjør noe som helst. En kommentarlinje starter med "//".
/*
Dette er en kommentar
på flere linjer.
Den åpnes med "/*"
og stenges med "*/"
*/
// En integer-variabel (en variabel som bare kan inneholde tallverdier) begynnes med "int":
int navnPåInteger = 123;
// En streng-variabel (en variabel som kan inneholde bokstaver, tegn og tall) begynnes med "String":
String navnPåStreng = "Dette er en streng-variabel, og dette er hvilken verdi variablen skal ha.";

// For å definere en funksjon, begynner vi med "void":
void navnPåFunksjon(int parameter1,int parameter2,String parameter3)
{
  // En if-test sier seg selv.
  if(parameter1 == parameter2)
  {
    // Hvis parameter1 er det samme som parameter2 vil denne koden aktiveres:
    // For å skrive noe i konsollen som programmet kjører fra (I/O-kommunikasjon), kan man bruke "System.out.print("Hva jeg skal skrive");
    System.out.println("Parameter 1 er det samme som Parameter 2.");
  }
  elseif(parameter1 > parameter2)
  {
    // Hvis parameter1 er større enn parameter2 aktiveres denne koden:
    System.out.println("Parameter 1 er større enn Parameter 2.");
  }
  else
  {
    // Hvis parameter1 er mindre enn parameter2 aktiveres denne koden:
    System.out.println("Parameter 1 er mindre enn Parameter 2.");
  }
  System.out.println(parameter3);
}

// Nå kan vi kalle på funksjonen vi nettopp definerte ovenfor:
navnPåFunksjon(123,navnPåInteger,navnPåStreng);
// 97 blir parameter1, variabelen navnPåInteger som er definert lenger opp og er 123, blir parameter2, variabelen navnPåStreng er også definert lenger opp og blir parameter3 i denne funksjonen.

Da vil konsollen/terminalen/kommandolinjen se slik ut:
Kode: [Velg]
Parameter 1 er mindre enn Parameter 2.
Dette er en streng-variabel, og dette er hvilken verdi variablen skal ha.
siden 93 er mindre enn 123, og "navnPåStreng" er "Dette er en streng-variabel, og dette er hvilken verdi variablen skal ha."
Tittel: Sv: Hvordan lage en Minecraft mod - NY LEKSJON HVER FREDAG
Skrevet av: mrthewil200005. April 2012, 18:23 pm
Tusen takk for tips til flere addons på hack klienten eg holder på med :)
Tittel: Sv: Hvordan lage en Minecraft mod - NY LEKSJON HVER FREDAG
Skrevet av: mrthewil200005. April 2012, 18:50 pm
Hehe, ikke så veldig, men bra tutorial ;)
Sendte heller arbeidet mitt til Sirenfal/Krysk via skype, får se hva han kommer opp med :)
Tittel: Sv: Hvordan lage en Minecraft mod - NY LEKSJON HVER FREDAG
Skrevet av: Floyd-ATC05. April 2012, 19:07 pm
Det kan være greit å nevne at "void" i eksempelet over forteller at funksjonen ikke skal returnere noe som helst. Hvis du derimot ønsker at en funksjon skal returnere noe så angir man hva slags type variabel funksjonen kommer til å returnere. Eksempel:
Kode: [Velg]
String concat(String foo, String bar) {
  String baz = foo + bar;
  return baz;
}

Kode: [Velg]
int sum(int foo, int bar) {
  int baz = foo + bar;
  return baz;
}

Det kan også være greit med litt grunnleggende info om selve språket Java, som f.eks. at ALLE variabeltyper er "objekter", det vil si at de har "metoder" definert. Dette gjør de fleste ting enkere men kan også skape noen feller. F.eks. vil følgende kode IKKE fungere slik du tror:
Kode: [Velg]
if (command == "list") { ... }Årsaken er at Java vil sammenligne SELVE OBJEKTET command med et annet anonymt stringobjekt som inneholder "list". Fordi det ikke er ett og samme objekt så vil testen alltid feile. Korrekt måte å sammenligne en streng er:
Kode: [Velg]
if (command.equals("list")) { ... }
En annen nyttig ting å vite om er at Java bruker automatisk minnehåndtering med "garbage collection". Dette gjør det enklere å komme igang enn i språk som f.eks. C/C++ hvor du eksplisitt må definere en variabel, allokere minne til den og huske på å frigjøre det igjen etterpå.
Tittel: Sv: Hvordan lage en Minecraft mod - NY LEKSJON HVER FREDAG
Skrevet av: Cybersyn06. April 2012, 06:54 am
Siden det er langfredag, og dagen er så lang, kan jeg jo ikke bare gjøre én liten tut som skal vare hele dagen! Derfor gjør jeg en dobbel i dag!!
Tittel: Sv: Hvordan lage en Minecraft mod - NY LEKSJON HVER FREDAG
Skrevet av: mrthewil200020. April 2012, 00:36 am
Når kommer neste leksjon?
Tittel: Sv: Hvordan lage en Minecraft mod - NY LEKSJON HVER FREDAG
Skrevet av: DJdur24. April 2012, 16:00 pm
Hmm, når jeg decompiler det, kommer denne error'n:
Kode: [Velg]
# found jad, jad patches, ff patches, osx patches, srgs, name csvs, doc csvs, pa
ram csvs, astyle, astyle config
FATAL ERROR
Traceback (most recent call last):
  File "runtime\decompile.py", line 50, in decompile
    commands.checkupdates()
  File "C:\Users\Eier\Desktop\MCP\runtime\commands.py", line 817, in checkupdate
s
    md5_file = md5(fh.read()).hexdigest()
IOError: [Errno 13] Permission denied
Trykk en tast for å fortsette...

Hva gikk feil? o.o

EDIT: Fant feilen, og fikset det.
Tittel: Sv: Hvordan lage en Minecraft mod - NY LEKSJON HVER FREDAG
Skrevet av: Morder26924. April 2012, 16:11 pm
Holder du på med pyton nå?
Tittel: Sv: Hvordan lage en Minecraft mod - NY LEKSJON HVER FREDAG
Skrevet av: DJdur24. April 2012, 18:55 pm
Hmm, jeg lagde en class, og adda "extends BaseMod", men den sier det beste forslaget er og lage en "BaseMod"-class..
Altså jeg bruker eclipse.

Når jeg nå bruker Notepad++, da får jeg error når jeg recompiler.
Kode: [Velg]
'"C:\Program Files\Java\jdk1.6.0_31\bin\javac" -Xlint:-options -deprecation -g -
source 1.6 -target 1....' failed : 1

== ERRORS FOUND ==

src\minecraft\net\minecraft\src\mod_Greenstone.java:11: invalid method declarati
on; return type required
    public load()
           ^

1 error
Tittel: Sv: Hvordan lage en Minecraft mod - NY LEKSJON HVER FREDAG
Skrevet av: Cybersyn25. April 2012, 14:21 pm
DJdur;
Takk, jeg hadde glemt noe. Det skal være
Kode: [Velg]
public void load()på linje 11, ikke
Kode: [Velg]
public load()
Takk for tilbakemeldingen :-)


Morder269;
Holder du på med pyton nå?
Ganske riktig, MCP er skrevet i Python.


MrTheWil;
Når kommer neste leksjon?
Beklager ventetiden, har bare ikke hatt noe tid, og det endte med at jeg glemte hele greia, og siden jeg ikke hadde fått så veldig mange tilbakemeldinger (2-3 stk...), gadd jeg rett og slett ikke -.- . Som å undervise en sovende klasse med 1-2 elever :P
Har også (nesten) slutta å spille Minecraft, bare ved hjemme-LAN-party og sene kvelder :-\

Skal prøve å få poste noen flere tuts når jeg har tid, men tråden vil nok være mye død.

På langfredag lovet jeg jo også en dobbel tut, men fikk ikke tid, så det ble ikke noe av det... :(
Tittel: Sv: Hvordan lage en Minecraft mod - NY LEKSJON HVER FREDAG
Skrevet av: DJdur05. Mai 2012, 19:52 pm
Hva kan være feilen her da?
(http://i.imgur.com/3Bxit.png)
Tittel: Sv: Hvordan lage en Minecraft mod - NY LEKSJON HVER FREDAG
Skrevet av: Floyd-ATC06. Mai 2012, 09:51 am
Hva kan være feilen her da?
Sjekk prototypen til Block(), dvs. hva slags parametre den forventer.
Tittel: Sv: Hvordan lage en Minecraft mod - NY LEKSJON HVER FREDAG
Skrevet av: DJdur06. Mai 2012, 09:53 am
Den vil da at jeg skal endre noe i klassen "Block.java".
Men det vil jo ikkje jeg :3
Tittel: Sv: Hvordan lage en Minecraft mod - NY LEKSJON HVER FREDAG
Skrevet av: mrthewil200008. Mai 2012, 18:07 pm
Sitat
ikkje

Oozz Going NyNorsk Style.
Tittel: Sv: Hvordan lage en Minecraft mod - NY LEKSJON HVER FREDAG
Skrevet av: DJdur08. Mai 2012, 20:46 pm
Sitat
ikkje

Oozz Going NyNorsk Style.
Har begynt og likt "ikkje", "nu fær eg!" etc. xD
Tittel: Sv: Hvordan lage en Minecraft mod - NY LEKSJON HVER FREDAG
Skrevet av: mrthewil200009. Mai 2012, 16:44 pm
Nice..
Tittel: Sv: Hvordan lage en Minecraft mod - NY LEKSJON HVER FREDAG
Skrevet av: Cybersyn22. Mai 2012, 15:30 pm
Hva kan være feilen her da?
Lag en egen klasse (som f. eks. GreenyBlock.java).
Tittel: Sv: Hvordan lage en Minecraft mod - IKKE NY LEKSJON HVER FREDAG
Skrevet av: Emilpoika30. Mai 2012, 18:50 pm
Kall meg gjerne gal, men jeg syns det hadde vært flott om noen her som kan litt om mods/plugins kunne se om de klarer å oppdatere logblock? Jeg er ikke særligbegeistret over Guardian..
Er det noensom har gjort noe lignende før?
Tittel: Sv: Hvordan lage en Minecraft mod - IKKE NY LEKSJON HVER FREDAG
Skrevet av: Gadunt30. Mai 2012, 20:21 pm
Kall meg gjerne gal, men jeg syns det hadde vært flott om noen her som kan litt om mods/plugins kunne se om de klarer å oppdatere logblock? Jeg er ikke særligbegeistret over Guardian..
Er det noensom har gjort noe lignende før?

Helt enig, hadde virkelig vært flott om nån me erfaring tar på sæ oppgaven :)
Virke ikke helt som om folk generelt e så fornøyd me Guardian :/
Tittel: Sv: Hvordan lage en Minecraft mod - IKKE NY LEKSJON HVER FREDAG
Skrevet av: Morder26930. Mai 2012, 20:49 pm
Tror det er Guardian som skaper problemer ved innlogging og delay på grunn av at det krever mye ytelse eller spyr ut feilmeldinger.
Tittel: Sv: Hvordan lage en Minecraft mod - IKKE NY LEKSJON HVER FREDAG
Skrevet av: mrthewil200005. Juni 2012, 13:06 pm
Mitt forslag: Bruk BigBrother! Nesten helt likt LogBlock.
Tittel: Sv: Hvordan lage en Minecraft mod - IKKE NY LEKSJON HVER FREDAG
Skrevet av: Emilpoika05. Juni 2012, 13:30 pm
Mitt forslag: Bruk BigBrother! Nesten helt likt LogBlock.
hva er forskjellene?
Tittel: Sv: Hvordan lage en Minecraft mod - IKKE NY LEKSJON HVER FREDAG
Skrevet av: SmokeyNaruto19. Juni 2012, 21:50 pm
Synes vi også burde bruke BigBrother.
Tittel: Sv: Hvordan lage en Minecraft mod - IKKE NY LEKSJON HVER FREDAG
Skrevet av: Emilpoika19. Juni 2012, 22:25 pm
Nå bruker vi heldig vis Logblock, så da har det ikke særlig mye å si :D
Tittel: Sv: Hvordan lage en Minecraft mod - IKKE NY LEKSJON HVER FREDAG
Skrevet av: SmokeyNaruto19. Juni 2012, 22:33 pm
Oja det glemte jeg. Men det er bra  ;)
Tittel: Sv: Hvordan lage en Minecraft mod - IKKE NY LEKSJON HVER FREDAG
Skrevet av: Cybersyn23. Juli 2012, 12:51 pm
Ny leksjon Fredag, uke 30.
Tema: Lage en ny Gjenstand.
Tittel: Sv: Hvordan lage en Minecraft mod - IKKE NY LEKSJON HVER FREDAG
Skrevet av: DJdur23. Juli 2012, 22:24 pm
Yes :D
Tittel: Sv: Hvordan lage en Minecraft mod - NY LEKSJON nesten HVER FREDAG
Skrevet av: Cybersyn28. Juli 2012, 19:39 pm
Ny leksjon sluppet nå

(Neste leksjon blir forhåpentligvis neste fredag, uke 31)
Tittel: Sv: Hvordan lage en Minecraft mod - NY LEKSJON nesten HVER SOLFORMØRKELSE
Skrevet av: Floyd-ATC13. August 2012, 12:09 pm
Jeg kan godt bidra med etpar tips:

1) Istedet for å opprette din egen logger med server.getLogger(), bruk this.getLogger(). Meldinger vil da automatisk bli prefikset med [PluginNavn] hentet fra plugin.yml

2) I command-handleren (f.eks. onCommand()), IKKE returner false dersom commandsender ikke er en Player, med mindre det er meningen at kommandoen ikke skal kunne kjøres fra konsollet. De nyeste versjonene av Bukkit garanterer at commandsender-objektet har en .sendMessage() metode og .hasPermission() skal normalt returnere true dersom commandsender er konsollet. I det aller minste, returner en melding som sier at "denne kommandoen kan ikke brukes fra konsollet".

3) Hvis en operasjon tar mer enn etpar millisekunder (f.eks. er avhengig av å kontakte en 3.part eller kjøre et ekstern script), sett deg inn hvordan getScheduler() fungerer.
Tittel: Sv: Hvordan lage en Minecraft mod - NY LEKSJON nesten HVER SOLFORMØRKELSE
Skrevet av: Cybersyn15. August 2012, 08:00 am
Ehh, Floyd - litt hjelp?
(http://i.imgur.com/DvqYR.png) (http://imgur.com/DvqYR)
Tittel: Sv: Hvordan lage en Minecraft mod - NY LEKSJON HVER FREDAG
Skrevet av: Floyd-ATC26. August 2012, 15:24 pm
Huff, jeg husker slitet med å manuelt skrive inn databaser inn i MySQL/Dreamviewer for å få vist fram statistikk på en php-nettside. Det er nesten 3 år siden jeg hadde litt om dette i IT, så jeg tror ikke jeg gidder å ta det opp igjen nå.
Jeg anbefaler like vel folk med interesse å prøve, det er ganske greit når du først har begynt å forstå grunntrekkene. (Nå snakker jeg generelt, ikke nødvendigvis om minecraft-mods)
Jeg kan ikke understreke tydelig nok hvor verdifullt grunnleggende SQL-kunnskap er i IT-bransjen! Kombinert med grunnleggende ferdigheter i ett eller annet scriptspråk så er det kun fantasien som setter grenser for hva slags SYKE problemer du kan løse med SQL+scripting.

Store mengder data som ingen riktig forstår eller som skal oversettes fra et format til et annet? Lag et script for å skyfle dataene inn i en database, bruk SQL til å få hodet ditt rundt dataene og lag evt. et nytt script for å spytte ut alt fra HTML, XML, CSV eller hva som helst annet oppgaven krever. Ingen IT-avdeling klarer seg uten minst en person som behersker slik magi og kan løse tilsynelatende umulige oppgaver på etpar timer.

SQL er en av de få teknologiene du kan ta med deg hele veien fra gutterommet og inn i de aller største driftsmiljøene. Sørg for virkelig å forstå hva indeksering og normalisering innebærer for ytelse og skalerbarhet. Sørg for virkelig å forstå når du må bruke en-til-en, en-til-mange og mange-til-mange relasjoner når data skal modelleres i en relasjonsdatabase. Og når noen kommer og prøver å prakke på deg NoSQL, MongoDB og denslags fanteri så husk at ja, det finnes sære tilfeller der schema-løs lagring er fordelaktig. De kommer likevel ikke til å erstatte MySQL, PostgreSQL, SQL-Server, DB2 eller Oracle i løpet av de neste ti årene, bare supplere dem.