elitepvpers

elitepvpers (https://www.elitepvpers.com/forum/)
-   Minecraft Guides & Strategies (https://www.elitepvpers.com/forum/minecraft-guides-strategies/)
-   -   Minecraft - Dein eigener Mod // MODLOADER // (https://www.elitepvpers.com/forum/minecraft-guides-strategies/1995696-minecraft-dein-eigener-mod-modloader.html)

cakeflavor 07/11/2012 21:38

Minecraft - Dein eigener Mod // MODLOADER //
 
[Only registered and activated users can see links. Click Here To Register...]

Hiermit mache ich mal eine Weiterführung von diesem [Only registered and activated users can see links. Click Here To Register...] von [Only registered and activated users can see links. Click Here To Register...], der das Tutorial wohl nicht mehr weiterführt, was ich sehr schade finde. Nunja, da ich auch einiges an Javakenntnissen besitze und bereits seit einem Jahr Mods entwickle, fühle ich mich regelrecht dazu gezwungen, diesen Thread aufzumachen :) In den Spoilern befinden sich die Tutorials, über dem Code immer, wie du die Klasse nennen musst. (Das mit den Klassen wurde alles bei the_cake erklärt)

[Only registered and activated users can see links. Click Here To Register...]
Spoiler:
Jetzt führe ich den Schritt weiter, bei dem the_cake stehen geblieben ist. Items! In den nachfolgenden Zeilen zeige ich dir Code. Am Ende hast du dein eigenes, noch unnützes, Item. Bei TEXTUR_DEINES_ITEMS musst du den Pfad angeben, wo Minecraft später dein Item-Bild findet. Dieses musst du natürlich selbst machen und das am Besten im Format 13x13 in Paint.

mod_DEINITEMNAME
Code:

package net.minecraft.src;

public class mod_DEINITEMNAME extends BaseMod
{
        public static final Item DEINITEMNAME = new ItemDEINITEMNAME(DEINE_ITEM_ID).setItemName("IN-GAME NAME");
       
        public void load()
        {
                DEINITEMNAME.iconIndex = ModLoader.addOverride("/gui/items.png", "/TEXTUR_DEINES_ITEMS.png");
                ModLoader.addName(Namehere, "IN-GAME NAME");
        }
       
        public String getVersion()
        {
                return "1.2.5";
        }
}

ItemDEINITEMNAME
Code:

package net.minecraft.src;

public class ItemDEINITEMNAME extends Item
{
        public ItemDEINITEMNAME(int i)
        {
                super(i);
                maxStackSize = MAXIMALE STAPELGRÖSSE;             
        }
}

VERSTEHE DEN CODE
mod_DEINITEMNAME

Code:

public static final Item DEINITEMNAME = new ItemDEINITEMNAME(DEINE_ITEM_ID).setItemName("IN-GAME NAME");
  • Hier deklarierst du dein neues Item.
  • "public" bedeutet, dass es von überall zugreifbar ist.
  • "final" bedeutet, dass es fertig ist. "DEINITEMNAME" ist der Name des Items, den du im Rest des Codes immer verwenden wirst.
  • Bei "ItemDEINITEMNAME" lässt du die mod_*** Klasse auf deine Item***-Klasse zugreifen, die du nach der mod_*** Klasse erstellt hast. Der Name muss genau übereinstimmen.
  • DEINE_ITEM_ID ist wohl klar. Verwende eine unbenutzte Item ID.
  • "IN-GAME NAME" ist, wie der Name schon sagt, der In-Game Name deines Items.

Code:

DEINITEMNAME.iconIndex = ModLoader.addOverride("/gui/items.png", "/TEXTUR_DEINES_ITEMS.png");
  • DEINITEMNAME ist wieder der Name, den du sonst in der Datei auch verwendest.
  • Bei TEXTUR_DEINES_ITEMS kommt der Pfad zu deiner Item-Textur hin. Bedeutet: Wenn du sie in der minecraft.jar später unter /meinmod/meinetextur.png speicherst, muss dort auch /meinmod/meinetextur.png hin.

ItemDEINITEMNAME

Hier gibts's nicht viel zu erklären. Bei MAXIMALE STAPELGRÖSSE fügst du, wie erwähnt, die maximale Stapelgröße ein. Beispiel: 64

[Only registered and activated users can see links. Click Here To Register...]
Spoiler:
Essen! Mit den nachfolgenden Codes kannst du genau so einen klasse Mod wie diesen [Only registered and activated users can see links. Click Here To Register...] machen! [/SCHLEICHWERBUNG] Auch hier musst du bei TEXTUR_DEINES_ITEMS wieder den Pfad zu deinem Item-Bild geben. Bei ESSENSPUNKTE gibtst du die Zahl ein, wie viele Hälften Hunger wiederhergestellt werden. Beispiel: Du gibst die Zahl 5 ein, also bekommt dein Minecraft Character 2,5 Hungerpunkte.

mod_DEINESSENSNAME
Code:

package net.minecraft.src;

public class mod_DEINESSENSNAME extends BaseMod
{
        public static final Item DEINESSENSNAME = new ItemFood(DEINE_ITEM_ID, HUNGERPUNKTE, 1F, false).setItemName("IN-GAME NAME");
       
        public void load()
        {
                DEINESSENSNAME.iconIndex = ModLoader.addOverride("/gui/items.png", "/TEXTUR_DEINES_ITEMS.png");
                ModLoader.addName(DEINESSENSNAME, "IN-GAME NAME");
        }
       
        public String getVersion()
        {
                return "1.2.5";
        }
}

VERSTEHE DEN CODE
mod_DEINESSENSNAME

Essen ist im Code eigentlich nur ein Item. Es gibt nur eine winzige Differenz zwischen Item und Essen: Essen heilt deinen Hunger. Das wird in der Deklarationszeile gemacht:

Code:

public static final Item DEINESSENSNAME = new ItemFood(DEINE_ITEM_ID, HUNGERPUNKTE, 1F, false).setItemName("IN-GAME NAME");
  • Wie gesagt - ein Item. Wir deklarieren es allerdings nicht über eine eigene Klasse (ItemDEINITEMNAME) sondern einfach über "ItemFood". Das sagt ModLoader, hier gibt's Essen. ;)
  • Soweit wurde alles im Tutorial "Items" erklärt, außer HUNGERPUNKTE: Hier musst du die Anzahl angeben, wie viele Hälften Hunger geheilt werden sollen. Das Maximum hier ist also 20, für 10 Hungerpunkte. Möchtest du 4 Hungerpunkte heilen, so gebe die Zahl 8 an. Möchtest du 2,5 Hungerpunkte heilen, so gebe die Zahl 5 an.
  • 1F ist das Sättigungslevel. Das können wir bei 1F lassen. Du kannst den Float 1F auch ändern zu bspw. 0.5F, es wird aber keine große Änderung auf dein Spiel haben.
  • Der Boolean ganz am Ende (false) definiert, ob ein Wolf dein Essen essen kann. Steht hier false, kann er es nicht essen. Steht hier true, kann ein Wolf es essen.

[Only registered and activated users can see links. Click Here To Register...]
Spoiler:
Crafting Rezepte
Spoiler:
Crafting Rezepte sind ein bisschen umständlich, aber hast du es einmal verstanden - sind sie bestimmt sehr nützlich! :) Den Code unten fügst du einfach in deine mod_*** Datei ein, an irgendeine Stelle. Am Besten unter die Textur-Deklaration (ModLoader.addOverride(.....)), zur Übersicht.
Code:

ModLoader.addRecipe(new ItemStack(DAS_ITEM_WAS_DU_ERHÄLST, MENGE_DES_ITEMS_WAS_DU_ERHÄLST), new Object [] {"#@#", "%%%", "@#@", Character.valueOf('#'), Block.stone, Character.valueOf('@'), Block.dirt, Character.valueOf('%'), Item.ingotIron});
Wie du siehst - sehr umständlich! Das obige Rezept sähe so aus:
[Only registered and activated users can see links. Click Here To Register...]

VERSTEHE DEN CODE
Ich erkläre dir nun erstmal, wie du nun dein eigenes Rezept machst. Den Code können wir in drei Parts unterteilen. Einmal:
Code:

ModLoader.addRecipe(new ItemStack(DAS_ITEM_WAS_DU_ERHÄLST, MENGE_DES_ITEMS_WAS_DU_ERHÄLST)
Zweitens:
Code:

, new Object [] {"#@#", "%%%", "@#@"
und Drittens:
Code:

, Character.valueOf('#'), Block.stone, Character.valueOf('@'), Block.dirt, Character.valueOf('%'), Item.ingotIron});
In Part 1 sagst du Modloader, was aus deinem Rezept später wird. Beispiel: (new ItemStack(Block.Obsidian, 8) würde bedeuten, dass aus deinem Rezept später 8 Obsidian-Blöcke entstehen.

In Part 2 kommt das eigentliche Rezept. Für jedes Material benötigst du ein eigenes Zeichen. Diese Zeichen können alle möglichen auf deiner Tastatur sein. Was nur wichtig ist: Jedes Material brauch sein EIGENES Zeichen! Die Erste von Anführungszeichen-umsetzte Zeichenkombination "#@#" ist für die oberste Reihe des 3x3 Crafting Felds. Das danach "%%%" steht für die zweite Reihe. Und der Zeichencode danach "@#@" steht für die unterste Reihe des 3x3 Crafting Felds.

In Part 3 sagen wir ModLoader, welches Zeichen für was steht.
Code:

Character.valueOf('#'), Block.stone
bedeutet, dass das Zeichen "#" für Stein steht.

Code:

Character.valueOf('@'), Block.dirt
"@" steht also für Dreck!

Code:

Character.valueOf('%'), Item.ingotIron
Und "%" steht also für einein Eisenbarren. Und aus diesen 3 Parts setzt sich der Rezept Code zusammen.

Schmelz/Ofen-Rezepte
Spoiler:
Diese sind schnell gemacht und sind nicht so komplex wie die Crafting Rezepte. Auch hier fügst du den Code unten einfach in deine mod_*** Klasse ein.

Code:

ModLoader.addSmelting(INPUT-ITEM, new ItemStack(OUTPUT-ITEM, MENGE DES OUTPUT-ITEMS));
VERSTEHE DEN CODE
Easy.
  • ModLoader.addSmelting ist einfach für ModLoader der Hinweis, dass ein Ofenrezept folgt.
  • Bei INPUT-ITEM sagst du dem Code, was man in den Ofen rein tun muss.
  • Bei OUTPUT-ITEM sagst du, was später rauskommt.
  • Bei MENGE DES OUTPUT-ITEMS definierst du die Menge, die raus kommt.

... hier ist Baustelle! Dich erwartet hier noch Vieles mehr! Von eigenen Crafting Rezepten und Schmelz-Rezepten über Biomen bis zu... EIGENEN DIMENSIONEN! Für jedes Minecraft Update gibt's auch ein Tutorial Update. Stay tuned! :)

.Bavelou. 07/11/2012 23:15

Werde es morgen mal ausprobieren schreibe das Resultat in diesen Thread wollte sowieso mal mein Eigenes Item haben :)

cakeflavor 07/12/2012 12:06

;) Es bleibt wie gesagt nicht bei Items + Essen. Ich füge heute vermutlich das Tutorial für die Crafting / Schmelz Rezepte hinzu und möglicherweise noch irgendein Anderes.

False 07/12/2012 13:07

Naja, ich finde bis jetzt versteht man hier null,
Sprich ein c&p Thread/Sources.
Zudem warum sollte die Datei 13x13Pixel haben, wenn das default tp 16x16 ist?

Ps. Ich glaube the_cake macht nur aus Zeitlichen Gründen grade nicht weiter.

cakeflavor 07/12/2012 14:00

Nein, er hat irgendwo mal geschrieben, dass alle seine Codes und Tutorials auf seinem MacBook waren, das nun eine defekte Platte hat. Und schau dir mal die Items an, die Meisten haben 13x13. Blöcke werden 16x16 standardmäßig gerendert, jup.

Zum C&P Teil: Ich wollte eigentlich die Codes erklären, aber hier interessieren sich vielleicht 90% aller User für Codes um danach cool zu wirken, dass sie was eigenes entwickelt haben. Wozu soll ich dann für die restlichen 10% Codeerklärungen schreiben und Bilder machen? Wie rentiert sich das bitteschön? :)

/edit: Wie der Herr gewünscht hat.. Habe nun bei Items einen Part namens "VERSTEHE DEN CODE" hinzugefügt, den ich bei Essen und den nachfolgenden Parts auch machen werde. Es wird nun aber viel länger dauern, bis ich ein neues Tutorial schreiben kann, da ich eben für 10% elitepvpers ein Understanding Part schreibe, der bei dem überübernächsten Teil "Rüstung" mindestens 100 Zeilen umfassen wird.

Domekilla12 07/12/2012 14:49

Hey nettes Tutorial :) Hat auch alles funktioniert nur wie macht man nun ein Crafting oder Ofenrezept ?

cakeflavor 07/12/2012 14:55

Ich schreibe das Tutorial gleich.

Njahs 07/12/2012 14:57

Hast du ihn gefragt?

cakeflavor 07/12/2012 15:11

Ich habe ihn gefragt, ob ich seinen Teil des Tutorials übernehmen dürfe, worauf ich keine Antwort erhalten habe. Daher habe ich diesen Teil aufgelassen und mache hier meine eigenen Tutorials, die bei ihm nicht vorkommen. Dafpr brauche ich keine Einverständnis. Schau dir mal an, wie viele "Mehr FPS in Minecraft" Tuts es hier gibts. Hat jeder beim Anderen nach einem OK gefragt? :)

Crafting Rezept Tutorial ist drin. Ofenrezepte kommen nachher.

Domekilla12 07/12/2012 15:30

Ich habe mir ein Crafting Rezept erstellt nur habe ich nun leider diesen Error :

Mods loaded: 6
ModLoader 1.2.5
mod_EgyptRelic 1.2.5
mod_EgyptRelicBlock 1.2.5
mod_MayaRelic 1.2.5
mod_MayaRelicBlock 1.2.5
mod_MayaTemple 1.2.5

Minecraft has crashed!
----------------------

Minecraft has stopped running because it encountered a problem.




--- BEGIN ERROR REPORT d643ab55 --------
Generated 12.07.12 15:29

Minecraft: Minecraft 1.2.5
OS: Windows 7 (amd64) version 6.1
Java: 1.7.0_05, Oracle Corporation
VM: Java HotSpot(TM) 64-Bit Server VM (mixed mode), Oracle Corporation
LWJGL: 2.4.2
OpenGL: AMD Radeon HD 6700 Series version 4.2.11733 Compatibility Profile Context, ATI Technologies Inc.

java.lang.NullPointerException
at net.minecraft.src.CraftingManager.addRecipe(Crafti ngManager.java:398)
at net.minecraft.src.ModLoader.addRecipe(ModLoader.ja va:412)
at net.minecraft.src.mod_EgyptRelic.load(mod_EgyptRel ic.java:14)
at net.minecraft.src.ModLoader.init(ModLoader.java:85 6)
at net.minecraft.src.ModLoader.addAllRenderers(ModLoa der.java:157)
at net.minecraft.src.RenderManager.<init>(RenderManag er.java:85)
at net.minecraft.src.RenderManager.<clinit>(RenderMan ager.java:12)
at net.minecraft.client.Minecraft.startGame(Minecraft .java:424)
at net.minecraft.client.Minecraft.run(Minecraft.java: 786)
at java.lang.Thread.run(Thread.java:722)
--- END ERROR REPORT f10d0a13 ----------

Mein Code sieht wie folgt aus :

Code:

package net.minecraft.src;

public class mod_EgyptRelic extends BaseMod
{
    public static final Item EgyptRelic = new Item(201).setItemName("EgyptRelic");

    public void load()
    {
        //Texture
        EgyptRelic.iconIndex = ModLoader.addOverride("/gui/items.png", "/textures/item/EgyptRelic.png");
       
        //Name
        ModLoader.addName(EgyptRelic, "Egypt Relic");
     
        //Crafting Recipe
        ModLoader.addRecipe(new ItemStack(EgyptRelic, 4), new Object []
                {
                    "#",
                    Character.valueOf('#'),Block.EgyptRelicBlock
                });
    }

    public String getVersion()
    {
        return "1.2.5";
    }
}


cakeflavor 07/12/2012 15:48

Mach das Crafting Rezept mal in eine Zeile, wie im Beispielcode. Testweise.

Ansonsten: Hast du in der CraftingManager.java etwas verändert? Oder nur in deinen eigenen Dateien?

edit: Moment, nehme am Besten nicht Block.EgyptRelicBlock sondern mach es so:
mod_***.EgyptRelicBlock

Bei *** kommt der Name der Klasse hin, wo du dein EgyptRelicBlock definiert hast mit dem "public static final".

Domekilla12 07/12/2012 16:02

Oh ja danke :) wär ich selbst nicht drauf gekommen.

the_cake 07/12/2012 16:14

Klar für ich meine Tuts weiter nur hab ich mein MacBookPro gerade nicht wo mein ganzer text drauf gespeichert ist xD

cakeflavor 07/12/2012 16:32

Du sagtest, dass das Mainboard defekt ist. :) & Items sollten am 01.07 bei dir kommen, heute haben wir den 12.07. - Nunja, ich werde diese Tutorials auch weiterführen. Wie esagt, es gibt auch abermillionen Wie bekomme bekomme ich mehr FPS Tutorials auf elitepvpers, daher denke ich mal, dass zwei Mod Tuts kein Problem sein werden.

Außerdem werden unsere beiden Tutorials vermutlich nie das Gleiche beinhalten - mal hast du was Anderes anzubieten, mal ich. Von daher wären das gute Additionen ;)

@Dome: Kein Problem.

/edit: Ofenrezepte hinzugefügt.

the_cake 07/12/2012 16:44

Ich hab ja kein Problem damit das mein Ich ja nicht. Finde es ja ok. Dan habe ich mehr zeit an meinen Minecraft ModMaker weiter zu coden. :-) Werde das Tut auch noch weiter führen wenn du irgendeinen Code brauchst kann ich ihn dir auch geben np.

Njahs 07/12/2012 16:46

Quote:

Originally Posted by k0thaufen! (Post 17644986)
Ich habe ihn gefragt, ob ich seinen Teil des Tutorials übernehmen dürfe, worauf ich keine Antwort erhalten habe. Daher habe ich diesen Teil aufgelassen und mache hier meine eigenen Tutorials, die bei ihm nicht vorkommen. Dafpr brauche ich keine Einverständnis. Schau dir mal an, wie viele "Mehr FPS in Minecraft" Tuts es hier gibts. Hat jeder beim Anderen nach einem OK gefragt? :)

Crafting Rezept Tutorial ist drin. Ofenrezepte kommen nachher.

Dann solltest du aber nicht im Thread selbst erwähnen, dass du sein tutorial "weiterführst", was auch wieder nicht wahr ist.
Außerdem heißt es nicht gleich, wenn er dir keine Antwort gibt, dass
er dir erlaubt, sein Tutorial weiterzuführen...

Domekilla12 07/12/2012 21:35

Ich bin wirklich Fan deiner Tutorial-Reihe geworden :)
Mich würde noch interessieren wie man erreicht dass z.b Wenn man einen knopf drückt (auf der tastatur) dass sich dann ein anderes Interface öffnet auf dem man sachen einstellen kann oder crafting rezepte nachgucken kann usw.

cakeflavor 07/12/2012 22:36

Das mit dem Interface nennt sich "GUI" - Dazu wird aber vermutlich erst sehr spät ein Tut kommen, da ich selbst keine GUIs coden kann. xD Sobald ich das gelernt habe, teile ich das Wissen mit euch natürlich ;)

Njahs: Schau mal einen Beitrag über dir, danke

Domekilla12 07/13/2012 10:18

Ok ist auch nicht weiter schlimm ;) Villeicht kannst du uns ja zeigen wie mann ein eigenen "Ofen" macht (der andere sachen macht zb. erze zu pulver machen). Oder Eigene Tränke ich denke das mit den tränken kannst du von deinem superfood :)

JONMI2000 07/13/2012 10:50

Hallo K0thaufen!
Ich wollte fragen ob ich dir bei deinen Tuts helfen kann.
Domekilla tut mir Leid aber an deinem Code fällt mir nichts auf. Und ein Nullpointer Exception ist leider ein Fehlermeldung aus der man kaum etwas herauslesen kann.

Also würd mich freuen
jonmi

Domekilla12 07/13/2012 10:56

Quote:

Originally Posted by JONMI2000 (Post 17658328)
HAllo K0thaufen!
Ich wollte fragen ob ich dir bei deinen Tuts helfen kann.
Domekilla tut mir Leid aber an deinem Code fällt mir nichts auf. Und ein Nullpointer Exception ist leider ein Fehlermeldung aus der man kaum etwas herauslesen kann.

Also würd michfreuen
jonmi

Ist ja auch schon längst gelöst ;) musste nicht Block.EgyptRelicBlock benutzen sondern mod_EgyptRelicBlock.EgyptRelicBlock :)

cakeflavor 07/13/2012 12:30

Einen "eigenen Ofen"? Ich weiß leider nicht, was du meinst. Ein komplett eigener Ofen würde wieder ein eigenes GUI benötigen. Einen eigenen Kraftstoff wie Kohle, Holzkohle, Holz oder Stöcke für einen Ofen kann man machen, das Tutorial kommt noch. Ansonsten weiß ich nicht was du meinst. JONMI - Schreib mir per PN, was du coden kannst. Ich habe bereits einen, der hierfür ein GUI Tutorial schreibt, das ich wie bereits gesagt nicht beherrsche.

Nochmal zu Dome: Eine Potion kannst du vom Code her wie ein Essen behandeln. Wie man Essen einen Effekt hinzufügt, werde ich bald erklären. Einen komplett EIGENEN Effekt, da ist mir nichts bekannt, dass das mit ModLoader möglich wäre.

Habby999 07/15/2012 12:02

Hi k0thaufen!,

dein Tut ist wirklich klasse, auch für Einsteiger. Ich modde schon etwas länger und versuchte nun eine eigene Dimension zu erstellen. Aber leider schaffe ich es nicht wirklich.... Jetzt wollte ich dich bitten, könntest du das Tut mit den Dimensionen vorziehen?
Ich wäre dir wirklich sehr, sehr , sehr dankbar!

Liebe Grüße,

Habby.

the_cake 07/15/2012 18:03

Quote:

Originally Posted by Domekilla12 (Post 17652402)
Ich bin wirklich Fan deiner Tutorial-Reihe geworden :)
Mich würde noch interessieren wie man erreicht dass z.b Wenn man einen knopf drückt (auf der tastatur) dass sich dann ein anderes Interface öffnet auf dem man sachen einstellen kann oder crafting rezepte nachgucken kann usw.

Kuck dir das mal genauer an

mod_gui

Spoiler:
package net.minecraft.src;

import net.minecraft.client.Minecraft;

public class mod_gui extends BaseMod{

public void load()
{
ModLoader.setInGameHook(this, true, false);
ModLoader.registerKey(this, this.key_gui, false);
ModLoader.addLocalization("key.gui", "Gui Open");
}

public void keyboardEvent(KeyBinding event)
{
Minecraft minecraft = ModLoader.getMinecraftInstance();
World world = minecraft.theWorld;
if (event == this.key_gui)
{
open = !open;
}
}

public boolean onTickInGame(float f, Minecraft minecraft) {
World world = minecraft.theWorld;
EntityPlayer ep = minecraft.thePlayer;

if(open){
ModLoader.openGUI(ModLoader.getMinecraftInstance() .thePlayer, new mod_GuiExtreme());
}
return true;
}


public String getVersion() {
return "1.0.0";
}

private KeyBinding key_gui = new KeyBinding("key.gui", 48);
public static boolean open;
}

mod_guiextreme Da kommen die Funktionen rein

Spoiler:
package net.minecraft.src;

import java.util.List;
import net.minecraft.client.Minecraft;

public class mod_GuiExtreme extends GuiScreen
{

public mod_GuiExtreme(){}

public void initGui()
{
controlList.clear();
byte byte0 = -16;

controlList.add(new GuiButton(0 /*ID*/, width / 10 /*X-Pos*/, height / 4 + 24 + byte0 /*Y-Pos*/,80 /*Breite*/ ,20 /*Höhe*/ ,"Tag"/*Text d. Buttons*/));
controlList.add(new GuiButton(1 /*ID*/, width / 10 /*X-Pos*/, height / 4 + 48 + byte0 /*Y-Pos*/,80 /*Breite*/ ,20 /*Höhe*/ ,"Mittag"/*Text d. Buttons*/));
controlList.add(new GuiButton(2 /*ID*/, width / 10 /*X-Pos*/, height / 4 + 72 + byte0 /*Y-Pos*/,80 /*Breite*/ ,20 /*Höhe*/ ,"Nacht"/*Text d. Buttons*/));
controlList.add(new GuiButton(3 /*ID*/, width / 10 /*X-Pos*/, height / 4 + 96 + byte0 /*Y-Pos*/,80 /*Breite*/ ,20 /*Höhe*/ ,"Regen"/*Text d. Buttons*/));
}

public void actionPerformed(GuiButton guibutton)
{
if(guibutton.id == 0)
{
ModLoader.getMinecraftInstance().theWorld.setWorld Time(100);
mod_gui.open = false;
mc.displayGuiScreen(null);
mc.setIngameFocus();
}
if(guibutton.id == 1)
{
ModLoader.getMinecraftInstance().theWorld.setWorld Time(5000);
mod_gui.open = false;
mc.displayGuiScreen(null);
mc.setIngameFocus();
}
if(guibutton.id == 2)
{
ModLoader.getMinecraftInstance().theWorld.setWorld Time(13000);
mod_gui.open = false;
mc.displayGuiScreen(null);
mc.setIngameFocus();
}

if(guibutton.id == 3)
{
ModLoader.getMinecraftInstance().theWorld.setRainS trength(100);
mod_gui.open = false;
mc.displayGuiScreen(null);
mc.setIngameFocus();
}
}
public void drawScreen(int i, int j, float f)
{
drawDefaultBackground();
drawCenteredString(fontRenderer, "\u00a7c Cheat Menü", width / 2, 40, 0xffffff);
super.drawScreen(i, j, f);
}
}

cakeflavor 07/17/2012 12:58

Ich glaube, er kann mit einem einfachen GUI Code nicht so viel anfangen.. Ich schau mir das gleich mal an (da ich selbst keine GUIs schreiben kann, hihi)..

Domekilla12 07/18/2012 15:05

Nee das versteh ich nicht so richtig. Aber mich würde im moment ein flüssigkeits tutorial mehr interessieren also sowas wie wasser ;)

-PTB- 07/22/2012 23:10

Hallo,
ich hätte da mal ne frage. und zwar habe ich ein craftingrezept gemacht bei dem ich z.B. eine einfache Holzschaufel nehme und darüber ein Block cubblestone platziere so das ich eine steinschaufel bekomme. das funktioniert soweit auch! aber wenn ich sie benutze und sie "schaden" hat geht das rezept nicht mehr! kann man das irgendwie umgehen so das der den schaden ignoriert und das rezept wieder geht?
danke im vorraus

Domekilla12 07/23/2012 10:49

Hey ich habe ein probelm mit meinen Item Texturen. Wenn ich diese in die items.png datei einfüge gibt es kein problem aber wenn ich die addOverride methode anwende ist das item im spiel viel größer als auf dem bild und auch verzehrt wie kann ich das beheben ?? Bei deinem mod ist es ja schließlich nicht so.

Danke im Vorraus

-PTB- 07/23/2012 19:29

Quote:

Originally Posted by Domekilla12 (Post 17816560)
Hey ich habe ein probelm mit meinen Item Texturen. Wenn ich diese in die items.png datei einfüge gibt es kein problem aber wenn ich die addOverride methode anwende ist das item im spiel viel größer als auf dem bild und auch verzehrt wie kann ich das beheben ?? Bei deinem mod ist es ja schließlich nicht so.

Danke im Vorraus

hast du das bild für dein item auch 16x16 pixel groß gemacht?

Domekilla12 07/23/2012 21:08

Quote:

Originally Posted by -PTB- (Post 17824899)
hast du das bild für dein item auch 16x16 pixel groß gemacht?

Nein. Wenn ich es 16x16 groß mache verrutscht mir das Item (es ist im spiel nicht in der leiste zentriert sondern verrutscht).

EDIT : Habe auch keine eigenen texturen gemacht sondern die original texturen genommen und die farben getauscht usw.

-PTB- 07/23/2012 23:27

Quote:

Originally Posted by Domekilla12 (Post 17826731)
Nein. Wenn ich es 16x16 groß mache verrutscht mir das Item (es ist im spiel nicht in der leiste zentriert sondern verrutscht).

EDIT : Habe auch keine eigenen texturen gemacht sondern die original texturen genommen und die farben getauscht usw.

Kann es sein das du ein HD texturepack installiert hast also nicht das normale 16px sondern ein 32px, 64px, 128px ect. und auch minecraft dementsprechend gemoddet hast? weil dann kann es passieren das das richtig definierte bild von minecraft nicht richtig verarbeitet wird denn bei mir klappt das und ich habe ein ,bis auf den modloader, "unberührtes" minecraft!

Domekilla12 07/24/2012 08:12

Quote:

Originally Posted by -PTB- (Post 17828951)
Kann es sein das du ein HD texturepack installiert hast also nicht das normale 16px sondern ein 32px, 64px, 128px ect. und auch minecraft dementsprechend gemoddet hast? weil dann kann es passieren das das richtig definierte bild von minecraft nicht richtig verarbeitet wird denn bei mir klappt das und ich habe ein ,bis auf den modloader, "unberührtes" minecraft!

Nein habe ich nicht.

Ich habe mal eine einzelne textur hochgeladen wäre nett wenn du mal ausprobierst ob sie bei dir geht.

[IMG][Only registered and activated users can see links. Click Here To Register...]
[/IMG]

-PTB- 07/24/2012 16:42

Quote:

Originally Posted by Domekilla12 (Post 17832185)
Nein habe ich nicht.

Ich habe mal eine einzelne textur hochgeladen wäre nett wenn du mal ausprobierst ob sie bei dir geht.

[IMG][Only registered and activated users can see links. Click Here To Register...]
[/IMG]

[Only registered and activated users can see links. Click Here To Register...], habe mir das mal angeschaut und ein bissel was gemacht.das das bild etwas verrutscht lieg nur daran das das item eine ungerade anzahl von horizontalen pixeln hat deswegen kannst du das garnicht zentrierten und das es so riesig und verzert war lag an der größe wie ich sagte weil miecraft versucht hat die 11x14px an die 16x16 anzu passen kann man in den bildern sehen

Domekilla12 07/24/2012 20:43

Quote:

Originally Posted by -PTB- (Post 17838708)
[Only registered and activated users can see links. Click Here To Register...], habe mir das mal angeschaut und ein bissel was gemacht.das das bild etwas verrutscht lieg nur daran das das item eine ungerade anzahl von horizontalen pixeln hat deswegen kannst du das garnicht zentrierten und das es so riesig und verzert war lag an der größe wie ich sagte weil miecraft versucht hat die 11x14px an die 16x16 anzu passen kann man in den bildern sehen


Ok Danke :)

Habe mal eine Frage und zwar habe ich 7 blöcke erstellt und habe diese in EINER datei gespeichert (mit name textur eigenschaften usw.)

Nun wollte ich sie generieren lassen und benutze dafür diesen code :

Code:

        //World Generation
    public void generateSurface(World world, Random rand, int chunkX, int chunkZ)
    {
        for (int i = 0; i < (10); i++)
        {
            int randPosX = chunkX + rand.nextInt(16);
            int randPosY = rand.nextInt(world.getHeight());
            int randPosZ = chunkZ + rand.nextInt(16);
            (new WorldGenMinable(DiggingCrystalOre.blockID, 16)).generate(world, rand, randPosX, randPosY, randPosZ);
            (new WorldGenMinable(JumpCrystalOre.blockID, 16)).generate(world, rand, randPosX, randPosY, randPosZ);
            (new WorldGenMinable(DivingCrystalOre.blockID, 16)).generate(world, rand, randPosX, randPosY, randPosZ);
            (new WorldGenMinable(InvisibleCrystalOre.blockID, 16)).generate(world, rand, randPosX, randPosY, randPosZ);
            (new WorldGenMinable(NightVisionCrystalOre.blockID, 16)).generate(world, rand, randPosX, randPosY, randPosZ);
            (new WorldGenMinable(BlindnessCrystalOre.blockID, 16)).generate(world, rand, randPosX, randPosY, randPosZ);
            (new WorldGenMinable(ConfusionCrystalOre.blockID, 16)).generate(world, rand, randPosX, randPosY, randPosZ);
        }
    }

Ich finde die Blöcke aber nicht und jetzt frage ich mich ist die generations methode richtig oder habe ich da was falsch gemacht / übersehen ?

Danke im vorraus.

the_cake 07/27/2012 16:22

Quote:

Originally Posted by Domekilla12 (Post 17842697)
Ok Danke :)

Habe mal eine Frage und zwar habe ich 7 blöcke erstellt und habe diese in EINER datei gespeichert (mit name textur eigenschaften usw.)

Nun wollte ich sie generieren lassen und benutze dafür diesen code :

Code:

        //World Generation
    public void generateSurface(World world, Random rand, int chunkX, int chunkZ)
    {
        for (int i = 0; i < (10); i++)
        {
            int randPosX = chunkX + rand.nextInt(16);
            int randPosY = rand.nextInt(world.getHeight());
            int randPosZ = chunkZ + rand.nextInt(16);
            (new WorldGenMinable(DiggingCrystalOre.blockID, 16)).generate(world, rand, randPosX, randPosY, randPosZ);
            (new WorldGenMinable(JumpCrystalOre.blockID, 16)).generate(world, rand, randPosX, randPosY, randPosZ);
            (new WorldGenMinable(DivingCrystalOre.blockID, 16)).generate(world, rand, randPosX, randPosY, randPosZ);
            (new WorldGenMinable(InvisibleCrystalOre.blockID, 16)).generate(world, rand, randPosX, randPosY, randPosZ);
            (new WorldGenMinable(NightVisionCrystalOre.blockID, 16)).generate(world, rand, randPosX, randPosY, randPosZ);
            (new WorldGenMinable(BlindnessCrystalOre.blockID, 16)).generate(world, rand, randPosX, randPosY, randPosZ);
            (new WorldGenMinable(ConfusionCrystalOre.blockID, 16)).generate(world, rand, randPosX, randPosY, randPosZ);
        }
    }

Ich finde die Blöcke aber nicht und jetzt frage ich mich ist die generations methode richtig oder habe ich da was falsch gemacht / übersehen ?

Danke im vorraus.

Ist zwar nicht mein theared ist aber so besser.:

Spoiler:
Code:

    public void generateSurface(World world, Random rand, int chunkX, int chunkZ)
    {
        for (int i = 0; i < (10); i++)
        {
            int randPosX = chunkX + rand.nextInt(16);
            int randPosY = rand.nextInt(world.getHeight());
            int randPosZ = chunkZ + rand.nextInt(16);
            (new WorldGenMinable(DiggingCrystalOre.blockID, 16)).generate(world, rand, randPosX, randPosY, randPosZ);
        }
                for (int i = 0; i < (10); i++)
        {
            int randPosX = chunkX + rand.nextInt(16);
            int randPosY = rand.nextInt(world.getHeight());
            int randPosZ = chunkZ + rand.nextInt(16);
            (new WorldGenMinable(JumpCrystalOre.blockID, 16)).generate(world, rand, randPosX, randPosY, randPosZ);
        }
                for (int i = 0; i < (10); i++)
        {
            int randPosX = chunkX + rand.nextInt(16);
            int randPosY = rand.nextInt(world.getHeight());
            int randPosZ = chunkZ + rand.nextInt(16);
            (new WorldGenMinable(DivingCrystalOre.blockID, 16)).generate(world, rand, randPosX, randPosY, randPosZ);
        }
                for (int i = 0; i < (10); i++)
        {
            int randPosX = chunkX + rand.nextInt(16);
            int randPosY = rand.nextInt(world.getHeight());
            int randPosZ = chunkZ + rand.nextInt(16);
            (new WorldGenMinable(InvisibleCrystalOre.blockID, 16)).generate(world, rand, randPosX, randPosY, randPosZ);
        }
                for (int i = 0; i < (10); i++)
        {
            int randPosX = chunkX + rand.nextInt(16);
            int randPosY = rand.nextInt(world.getHeight());
            int randPosZ = chunkZ + rand.nextInt(16);
            (new WorldGenMinable(InvisibleCrystalOre.blockID, 16)).generate(world, rand, randPosX, randPosY, randPosZ);
        }
                for (int i = 0; i < (10); i++)
        {
            int randPosX = chunkX + rand.nextInt(16);
            int randPosY = rand.nextInt(world.getHeight());
            int randPosZ = chunkZ + rand.nextInt(16);
            (new WorldGenMinable(NightVisionCrystalOre.blockID, 16)).generate(world, rand, randPosX, randPosY, randPosZ);
        }
                for (int i = 0; i < (10); i++)
        {
            int randPosX = chunkX + rand.nextInt(16);
            int randPosY = rand.nextInt(world.getHeight());
            int randPosZ = chunkZ + rand.nextInt(16);
            (new WorldGenMinable(BlindnessCrystalOre.blockID, 16)).generate(world, rand, randPosX, randPosY, randPosZ);
        }
                for (int i = 0; i < (10); i++)
        {
            int randPosX = chunkX + rand.nextInt(16);
            int randPosY = rand.nextInt(world.getHeight());
            int randPosZ = chunkZ + rand.nextInt(16);
            (new WorldGenMinable(ConfusionCrystalOre.blockID, 16)).generate(world, rand, randPosX, randPosY, randPosZ);
        }
    }


Domekilla12 07/27/2012 17:42

Quote:

Originally Posted by the_cake (Post 17886858)
Ist zwar nicht mein theared ist aber so besser.:

Spoiler:
Code:

    public void generateSurface(World world, Random rand, int chunkX, int chunkZ)
    {
        for (int i = 0; i < (10); i++)
        {
            int randPosX = chunkX + rand.nextInt(16);
            int randPosY = rand.nextInt(world.getHeight());
            int randPosZ = chunkZ + rand.nextInt(16);
            (new WorldGenMinable(DiggingCrystalOre.blockID, 16)).generate(world, rand, randPosX, randPosY, randPosZ);
        }
                for (int i = 0; i < (10); i++)
        {
            int randPosX = chunkX + rand.nextInt(16);
            int randPosY = rand.nextInt(world.getHeight());
            int randPosZ = chunkZ + rand.nextInt(16);
            (new WorldGenMinable(JumpCrystalOre.blockID, 16)).generate(world, rand, randPosX, randPosY, randPosZ);
        }
                for (int i = 0; i < (10); i++)
        {
            int randPosX = chunkX + rand.nextInt(16);
            int randPosY = rand.nextInt(world.getHeight());
            int randPosZ = chunkZ + rand.nextInt(16);
            (new WorldGenMinable(DivingCrystalOre.blockID, 16)).generate(world, rand, randPosX, randPosY, randPosZ);
        }
                for (int i = 0; i < (10); i++)
        {
            int randPosX = chunkX + rand.nextInt(16);
            int randPosY = rand.nextInt(world.getHeight());
            int randPosZ = chunkZ + rand.nextInt(16);
            (new WorldGenMinable(InvisibleCrystalOre.blockID, 16)).generate(world, rand, randPosX, randPosY, randPosZ);
        }
                for (int i = 0; i < (10); i++)
        {
            int randPosX = chunkX + rand.nextInt(16);
            int randPosY = rand.nextInt(world.getHeight());
            int randPosZ = chunkZ + rand.nextInt(16);
            (new WorldGenMinable(InvisibleCrystalOre.blockID, 16)).generate(world, rand, randPosX, randPosY, randPosZ);
        }
                for (int i = 0; i < (10); i++)
        {
            int randPosX = chunkX + rand.nextInt(16);
            int randPosY = rand.nextInt(world.getHeight());
            int randPosZ = chunkZ + rand.nextInt(16);
            (new WorldGenMinable(NightVisionCrystalOre.blockID, 16)).generate(world, rand, randPosX, randPosY, randPosZ);
        }
                for (int i = 0; i < (10); i++)
        {
            int randPosX = chunkX + rand.nextInt(16);
            int randPosY = rand.nextInt(world.getHeight());
            int randPosZ = chunkZ + rand.nextInt(16);
            (new WorldGenMinable(BlindnessCrystalOre.blockID, 16)).generate(world, rand, randPosX, randPosY, randPosZ);
        }
                for (int i = 0; i < (10); i++)
        {
            int randPosX = chunkX + rand.nextInt(16);
            int randPosY = rand.nextInt(world.getHeight());
            int randPosZ = chunkZ + rand.nextInt(16);
            (new WorldGenMinable(ConfusionCrystalOre.blockID, 16)).generate(world, rand, randPosX, randPosY, randPosZ);
        }
    }


Ok Danke hat super funktioniert aber ich habe noch ein Problem und zwar habe ich folgenden Craftting Code :
Code:

    ModLoader.addRecipe(new ItemStack(DiggingSteak, 1), new Object []
            {
                "#",
                "+",
                Character.valueOf('#'), mod_Crystals.MoltenDiggingCrystal,
                Character.valueOf('+'), Item.porkCooked

            });

Aber wenn ich ich diese items in das crafting feld mache passiert nichts :(

Danke im voraus

cakeflavor 07/27/2012 17:43

Probiere, die Items mit einem ".shiftedIndex" dahinter zu schreiben. Beispiel:
Statt
Code:

Item.porkCooked
nehme
Code:

Item.porkCooked.shiftedIndex
Spoiler:
Falls du faul bist, das sollte klappen:
Code:

    ModLoader.addRecipe(new ItemStack(DiggingSteak.shiftedIndex, 1), new Object []
            {
                "#",
                "+",
                Character.valueOf('#'), mod_Crystals.MoltenDiggingCrystal.shiftedIndex,
                Character.valueOf('+'), Item.porkCooked.shiftedIndex

            });


Domekilla12 07/27/2012 18:16

Anscheinend bringt es mich weiter voran aber wenn ich dann das spiel starte kommt ne fehlermeldung
Code:

        Mods loaded: 4
ModLoader 1.2.5
mod_CrystalFood 1.2.5
mod_CrystalOres 1.2.5
mod_Crystals 1.2.5

      Minecraft has crashed!     
      ----------------------     

Minecraft has stopped running because it encountered a problem.




--- BEGIN ERROR REPORT c0a97efc --------
Generated 27.07.12 18:16

Minecraft: Minecraft 1.2.5
OS: Windows 7 (amd64) version 6.1
Java: 1.7.0_05, Oracle Corporation
VM: Java HotSpot(TM) 64-Bit Server VM (mixed mode), Oracle Corporation
LWJGL: 2.4.2
OpenGL: AMD Radeon HD 6700 Series version 4.2.11733 Compatibility Profile Context, ATI Technologies Inc.

java.lang.NullPointerException
        at net.minecraft.src.CraftingManager.addRecipe(CraftingManager.java:398)
        at net.minecraft.src.ModLoader.addRecipe(ModLoader.java:412)
        at net.minecraft.src.mod_CrystalFood.load(mod_CrystalFood.java:38)
        at net.minecraft.src.ModLoader.init(ModLoader.java:856)
        at net.minecraft.src.ModLoader.addAllRenderers(ModLoader.java:157)
        at net.minecraft.src.RenderManager.<init>(RenderManager.java:85)
        at net.minecraft.src.RenderManager.<clinit>(RenderManager.java:12)
        at net.minecraft.client.Minecraft.startGame(Minecraft.java:424)
        at net.minecraft.client.Minecraft.run(Minecraft.java:786)
        at java.lang.Thread.run(Thread.java:722)
--- END ERROR REPORT 5f73308d ----------


cakeflavor 07/27/2012 18:45

Uff.. Vergess, was ich gesagt habe. Ich nehme an, du willst erreichen, dass wenn man einen crystal und ein porkCooked irgendwo ins Crafting Feld reintut (egal wo), dass dann ein DiggingSteak erscheint? If so, probier es doch bitte mal so.. addShapelessRecipe() bewirkt, dass das Rezept "unförmig" wird und keine Struktur haben muss. Dann benötigst du nicht mehr das mit den Zeichen "xx&", "%%%", " # " und so was, sondern definierst einfach die Items.

Code:

addShapelessRecipe(new ItemStack(Item.eyeOfEnder, 1), new Object[]
                                {
                                        Item.enderPearl, Item.blazePowder
                                });

würde bedeuten, dass du für eine Enderperle und ein Blaze Powder ein Enderauge erhälst. Dein Code müsste also wie folgt aussehen:

Code:

addShapelessRecipe(new ItemStack(DiggingSteak, 1), new Object[]
                                {
                                        Item.porkCooked, mod_Crystals.MoltenDiggingCrystal
                                });


Domekilla12 07/27/2012 18:58

Mmh. Das funktioniert auch nicht. Selbst mit shiftedindex funktioniert es wieder nicht :(

Ich habe gedacht ich gebe dir mal den ganzen code villeicht liegt ja der fehler nicht im crafting teil.

Code:

package net.minecraft.src;

public class mod_CrystalFood extends BaseMod
{
        //Items
    public static final Item DiggingSteak = new ItemFood(2014, 4, 0F, false).setAlwaysEdible().setPotionEffect(Potion.digSpeed.id, 90, 0, 1F).setItemName("DiggingSteak");
    public static final Item JumpSteak = new ItemFood(2015, 4, 0F, false).setAlwaysEdible().setPotionEffect(Potion.jump.id, 90, 0, 1F).setItemName("JumpSteak");
    public static final Item DivingSteak = new ItemFood(2016, 4, 0F, false).setAlwaysEdible().setPotionEffect(Potion.waterBreathing.id, 90, 0, 1F).setIconCoord(0, 11).setItemName("DivingSteak");
    public static final Item InvisibleSteak = new ItemFood(2017, 4, 0F, false).setAlwaysEdible().setPotionEffect(Potion.invisibility.id, 90, 0, 1F).setItemName("InvisibleSteak");
    public static final Item NightVisionSteak = new ItemFood(2018, 4, 0F, false).setAlwaysEdible().setPotionEffect(Potion.nightVision.id, 90, 0, 1F).setItemName("NightVisionSteak");
    public static final Item BlindnessSteak = new ItemFood(2019, 4, 0F, false).setAlwaysEdible().setPotionEffect(Potion.blindness.id, 90, 0, 1F).setItemName("BlindnessSteak");
    public static final Item RumSteak = new ItemFood(2020, 4, 0F, false).setAlwaysEdible().setPotionEffect(Potion.confusion.id, 90, 0, 1F).setItemName("RumSteak");
   
    public void load()
    {
    //Item Name
    ModLoader.addName(DiggingSteak, "Crystal Diggin Speed Steak");
    ModLoader.addName(JumpSteak, "Crystal Jump Height Steak");
    ModLoader.addName(DivingSteak, "Crystal Diving Steak");
    ModLoader.addName(InvisibleSteak, "Crystal Invisibility Steak" );
    ModLoader.addName(NightVisionSteak, "Crystal Night Vision Steak");
    ModLoader.addName(BlindnessSteak, "Crystal Blindness Steak");
    ModLoader.addName(RumSteak, "Crystal Alcoholic Steak");
   
    //Textures
    DiggingSteak.iconIndex = ModLoader.addOverride("/gui/items.png", "/CrystalFood/CrystalDiggingSteak.png");
    JumpSteak.iconIndex = ModLoader.addOverride("/gui/items.png", "/CrystalFood/CrystalJumpSteak.png");
    DivingSteak.iconIndex = ModLoader.addOverride("/gui/items.png", "/CrystalFood/CrystalDivingSteak.png");
    InvisibleSteak.iconIndex = ModLoader.addOverride("/gui/items.png", "/CrystalFood/CrystalInvisibleSteak.png");
    NightVisionSteak.iconIndex = ModLoader.addOverride("/gui/items.png", "/CrystalFood/CrystalNightVisionSteak.png");
    BlindnessSteak.iconIndex = ModLoader.addOverride("/gui/items.png", "/CrystalFood/CrystalBlindnessSteak.png");
    RumSteak.iconIndex = ModLoader.addOverride("/gui/items.png", "/CrystalFood/CrystalAlcoholicSteak.png");
   
   
   
    //Crafting Recipe
    //Digging Steak
    ModLoader.addShapelessRecipe(new ItemStack(DiggingSteak, 1), new Object[]
            {
                    Item.porkCooked.shiftedIndex, mod_Crystals.MoltenDiggingCrystal.shiftedIndex
            });
   
   
    //Jump Steak
    ModLoader.addShapelessRecipe(new ItemStack(JumpSteak, 1), new Object[]
            {
                    Item.porkCooked.shiftedIndex, mod_Crystals.MoltenJumpCrystal.shiftedIndex
            });
   
   
    //Diving Steak
    ModLoader.addShapelessRecipe(new ItemStack(DivingSteak, 1), new Object[]
            {
                    Item.porkCooked.shiftedIndex, mod_Crystals.MoltenDivingCrystal.shiftedIndex
            });
   
 
    //Blindness Steak
    ModLoader.addShapelessRecipe(new ItemStack(BlindnessSteak, 1), new Object[]
            {
                    Item.porkCooked.shiftedIndex, mod_Crystals.MoltenBlindnessCrystal.shiftedIndex
            });
   
   
    //Alcoholic Steak
    ModLoader.addShapelessRecipe(new ItemStack(RumSteak, 1), new Object[]
            {
                    Item.porkCooked.shiftedIndex, mod_Crystals.MoltenConfusionCrystal.shiftedIndex, mod_Crystals.MoltenBlindnessCrystal.shiftedIndex
            });
   
    }

    public String getVersion()
    {
        return "1.2.5";
    }
}



All times are GMT +2. The time now is 13:14.

Powered by vBulletin®
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.