Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

ModLoader Od zera do Moddera!


Gaw3l

Rekomendowane odpowiedzi

  • Odpowiedzi 419
  • Dodano
  • Ostatniej odpowiedzi
Opublikowano

Ja mam pytania:

1. Jak zrobić, aby zamiast tekstury były w terrain.png, to zrobić, żeby zapisywało w folderze np. Mod?

2. Jak zrobić "recepturę" na np. czerwony barwnik z połączeniem czymś tam?

Opublikowano

2.

public mod_NAZWAMODA ()
{
ModLoader.AddRecipe(new ItemStack(ZRODLO.barwnik, ILOSC), new Object[] {"   ", "X Y", "   ", Character.valueOf('X'), ZRODLO.czerwony, Character.valueOf('Y'), ZRODLO.brazowy});
}
}

Don't try to solve the great mistery of universe.

Opublikowano

1. Gaw3l jesteś zaje*isty!

2. Pliki zrecompilowały mi się poprawnie, ale po wgraniu moda pojawia się blackscreen (treści errora nie podam ponieważ minecraft sekundę po wyświetleniu treści errora się zamyka). Na 100% wgrałem ModLoadera i usunąłem META-INF, nawet TooManyItems działało wcześniej.

 

BlockCryingObsidian.java

 

package net.minecraft.src;

 

public class BlockCryingObsidian extends Block

{

 

protected BlockCryingObsidian(int i, int j)

{

super(i, j, Material.rock);

}

}

 

 

mod_CryingObsidian.java

 

package net.minecraft.src;

 

public class mod_CryingObsidian extends BaseMod

{

public static final Block blockcryingObsidian = new BlockCryingObsidian(999, 0).setBlockName("blockcryingObsidian").setHardness(5F).setResistance(2000F).setLightValue(1.0F);

 

public String Version()

{

return "1.0";

}

 

public mod_CryingObsidian ()

{

blockcryingObsidian.blockIndexInTexture = ModLoader.addOverride("/terrain.png", "/CryingObsidian.png");

ModLoader.RegisterBlock(blockcryingObsidian);

ModLoader.AddName(blockcryingObsidian, "CryingObsidian");

}

}

 

 

Pomoże ktoś? :(

 

I mam jeszcze kilka pytań:

-Jeżeli mam wersję minecrafta 1.7.3 to jako zmienną "WERSJA" mam wpisać "1.0", "1.7" czy "1.7.3"?

-Czy LightValue może być większe niż 1.0F?

 

Dzięki za wszelką pomoc i pozdrawiam

Opublikowano

@MrDadosz

 

1. Jak zrobić, aby zamiast tekstury były w terrain.png, to zrobić, żeby zapisywało w folderze np. Mod?

Przeczytaj część pierwszą poradnika, nie będę drugi raz tłumaczyć czegoś, co już jest wytłumaczone.

 

@maxaz

W takim razie nie mam lepszego pomysłu jak po prostu reinstall clienta.

 

@MultiMT2

 

ModLoader.addOverride("/terrain.png", "/CryingObsidian.png");

Teksturę bloku wrzuciłeś do osobnego folderu, czy znajduje się ona w tej samej ścieżce co pliki .class?

 

-Jeżeli mam wersję minecrafta 1.7.3 to jako zmienną "WERSJA" mam wpisać "1.0", "1.7" czy "1.7.3"?

Nie ma ona nic wspólnego z wersją Minecraft, jest to wersja moda - możesz wpisać tam zarówno 0.1 jak i 20.0 ;)

 

-Czy LightValue może być większe niż 1.0F?

Nie wiem, nigdy nie odczuwałem głębszej potrzeby aby to sprawdzić. ;x

Zobacz, w najgorszym wypadku gra po prostu może się scrashować.

 

również pozdrawiam..

Opublikowano

Dzięki za odp ;)

 

Texturkę wrzuciłem bezpośrednio tam gdzie pliki .class, oraz później po modyfikacji kodu na "/cryingobsidian/cryingobsidian.png" do folderu cryingobsidian i nie działa :(

 

Jako sugestię to mógłbyś napisać jak wgrywać mody na serwer bo mi żaden poradnik z neta nie działa :D

Opublikowano

Witam mam identyczny problem jak mój przedmówca.

Najśmieszniejsze z tego wszystkiego jest to że w tym samym dniu wpadliśmy na taki sam pomysł, a mianowicie napisania nowego bloczku (Crying Obsidian-u)

 

Mam identyczny problem, po włączeniu minecrafta ekran jest czarny.

 

Crying Obsidian:

 

package net.minecraft.src;

 

public class BlockCryingObsidian extends Block

{

 

protected BlockCryingObsidian(int i, int j)

{

super(i, j, Material.iron);

}

}

 

 

mod_McMod

 

package net.minecraft.src;

 

public class mod_McMod extends BaseMod

{

public static final Block blockCryingObsidian = new BlockCryingObsidian(49, 1).setBlockName("blockCryingObsidian").setHardness(0.1F).setResistance(3000F).setLightValue(0.5F);

 

public String Version()

{

return "1.7.3";

}

 

public mod_McMod ()

{

blockCryingObsidian.blockIndexInTexture = ModLoader.addOverride("/CryingObsidian.png", "/McMod/CryingObsidian.png");

ModLoader.RegisterBlock(blockCryingObsidian);

ModLoader.AddName(blockCryingObsidian, "Crying Obsidian");

}

}

 

 

ModLoader Crash Log

 

2011-08-27 13:38:21 net.minecraft.src.ModLoader init

FINE: ModLoader Beta 1.7.3 Initializing...

2011-08-27 13:38:21 net.minecraft.src.ModLoader readFromClassPath

FINER: Adding mods from C:\\mcp\eclipse\Client\bin

2011-08-27 13:38:21 net.minecraft.src.ModLoader readFromClassPath

FINER: Directory found.

2011-08-27 13:38:21 net.minecraft.src.ModLoader addMod

FINE: Failed to load mod from "mod_McMod.class"

2011-08-27 13:38:21 ModLoader addMod

FINER: THROW

java.lang.ExceptionInInitializerError

at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)

at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)

at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)

at java.lang.reflect.Constructor.newInstance(Unknown Source)

at java.lang.Class.newInstance0(Unknown Source)

at java.lang.Class.newInstance(Unknown Source)

at net.minecraft.src.ModLoader.addMod(ModLoader.java:224)

at net.minecraft.src.ModLoader.readFromClassPath(ModLoader.java:1022)

at net.minecraft.src.ModLoader.init(ModLoader.java:687)

at net.minecraft.src.ModLoader.AddAllRenderers(ModLoader.java:121)

at net.minecraft.src.RenderManager.<init>(RenderManager.java:65)

at net.minecraft.src.RenderManager.<clinit>(RenderManager.java:158)

at net.minecraft.client.Minecraft.startGame(Minecraft.java:138)

at net.minecraft.client.Minecraft.run(Minecraft.java:435)

at java.lang.Thread.run(Unknown Source)

Caused by: java.lang.IllegalArgumentException: Slot 49 is already occupied by net.minecraft.src.BlockObsidian@109ea96 when adding net.minecraft.src.BlockCryingObsidian@83b1b

at net.minecraft.src.Block.<init>(Block.java:48)

at net.minecraft.src.Block.<init>(Block.java:75)

at net.minecraft.src.BlockCryingObsidian.<init>(BlockCryingObsidian.java:8)

at net.minecraft.src.mod_McMod.<clinit>(mod_McMod.java:5)

... 15 more

2011-08-27 13:38:21 net.minecraft.src.ModLoader AddAllRenderers

FINE: Initialized

 

 

Opublikowano

Jestem zainteresowany tworzeniem mobów. Wiem jedynie że do zrobienia modelu moba przydaje się program Techne (bardzo łatwy w obsłudze)

MAM W GŁOWIE TNT

 

Twocreepers.png

 

Opublikowano

@MultiMT2 & Naruto Shipp. Przeinstalujcie Minecraft'a, a następnie zainstalujcie w nim tylko ModLoader i swojego moda (czasem pomaga ;)).

 

@Creeper. Może wkrótce dopiszę część o tworzeniu mobów (a o programie Techne nic nie wygooglowałem).

Opublikowano

@MultiMT2 & Naruto Shipp. Przeinstalujcie Minecraft'a, a następnie zainstalujcie w nim tylko ModLoader i swojego moda (czasem pomaga ;)).

 

@Creeper. Może wkrótce dopiszę część o tworzeniu mobów (a o programie Techne nic nie wygooglowałem).

 

Dalej nie działa. W minecrafcie był tylko modloader, został również usunięyu meta inf.

 

Proszę o pomoc.

 

Link do plików : http://www.speedyshare.com/files/30062250/mod_McMod.rar

 

A tu kod do plików:

 

CryingObsidian

 

package net.minecraft.src;

 

public class BlockCryingObsidian extends Block

{

 

protected BlockCryingObsidian(int i, int j)

{

super(i, j, Material.iron);

}

}

 

 

 

mod_McMod

 

package net.minecraft.src;

 

public class mod_McMod extends BaseMod

{

public static final Block blockCryingObsidian = new BlockCryingObsidian(49, 1).setBlockName("blockCryingObsidian").setHardness(0.1F).setResistance(3000F).setLightValue(0.5F);

 

public String Version()

{

return "1.7.3";

}

 

public mod_McMod ()

{

blockCryingObsidian.blockIndexInTexture = ModLoader.addOverride("/CryingObsidian.png", "/McMod/CryingObsidian.png");

ModLoader.RegisterBlock(blockCryingObsidian);

ModLoader.AddName(blockCryingObsidian, "Crying Obsidian");

}

}

 

 

 

Crash Log

 

 

2011-08-27 21:07:51 ModLoader addMod

FINE: Failed to load mod from "mod_McMod.class"

2011-08-27 21:07:51 ModLoader addMod

FINER: THROW

java.lang.ExceptionInInitializerError

at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)

at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)

at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)

at java.lang.reflect.Constructor.newInstance(Unknown Source)

at java.lang.Class.newInstance0(Unknown Source)

at java.lang.Class.newInstance(Unknown Source)

at ModLoader.addMod(ModLoader.java:272)

at ModLoader.readFromClassPath(ModLoader.java:1104)

at ModLoader.init(ModLoader.java:812)

at ModLoader.AddAllRenderers(ModLoader.java:183)

at th.<init>(th.java:60)

at th.<clinit>(th.java:9)

at net.minecraft.client.Minecraft.a(SourceFile:318)

at net.minecraft.client.Minecraft.run(SourceFile:716)

at java.lang.Thread.run(Unknown Source)

Caused by: java.lang.IllegalArgumentException: Slot 49 is already occupied by fb@1ab2b55 when adding BlockCryingObsidian@aa0877

at uu.<init>(SourceFile:244)

at uu.<init>(SourceFile:265)

at BlockCryingObsidian.<init>(BlockCryingObsidian.java:8)

at mod_McMod.<clinit>(mod_McMod.java:5)

... 15 more

2011-08-27 21:08:01 ModLoader AddAllRenderers

FINE: Initialized

 

 

Chciałbym także podkreślić, że do bloczku nie ma recepty, a jego Id to 49,1 (nie wiem czy to ma jakiś wpływ)

 

Jakby co to proszę o wrzucenie poprawnego kodu, który działa lub odpowiedź co mam naprawić ;)

Opublikowano

A może spróbuj zamienić linijkę

 

public static final Block blockCryingObsidian = new BlockCryingObsidian(49, 1).setBlockName("blockCryingObsidian").setHardness(0.1F).setResistance(3000F).setLightValue(0.5F);

 

na

 

public static final Block blockCryingObsidian = new BlockCryingObsidian(49, 0).setBlockName("blockCryingObsidian").setHardness(0.1F).setResistance(3000F).setLightValue(0.5F);

 

?

Opublikowano

Problem dalej taki sam. Mój mod prawdopodobnie nie wykrywa teksturek. Czy może mi ktoś powiedzieć jak dobrze je zrobić i podać ścieżkę? Tzn. Jakie mają być wymiary, gdzie je umieścić (w jakim folderze) i jak podać ścieżkę : blockCryingObsidian.blockIndexInTexture = ModLoader.addOverride("/CryingObsidian.png", "/McMod/CryingObsidian.png");

Opublikowano

Wybrałeś zajęte ID (każdy nowy blok musi mieć unikalny numer, jeżeli chcesz podmienić ten blok z Obsydianem to edytuj pliki BlockObsidian.java i Block.java). ;)

Opublikowano

Przepraszam, że dalej tak męczę , ale Id nie ma tu nic do rzeczy, ponieważ próbowałem innych i też nie działa. Owy problem polega na podaniu ścieżki do teksturek, czego zrobić nie umiem. Moja prośba jest identyczna jak z zeszłego postu. :)

 

Czy może mi ktoś powiedzieć jak dobrze je zrobić i podać ścieżkę? Tzn. Jakie mają być wymiary, gdzie je umieścić (w jakim folderze) i jak podać ścieżkę : blockCryingObsidian.blockIndexInTexture = ModLoader.addOverride("/CryingObsidian.png", "/McMod/CryingObsidian.png");
Opublikowano

Bogaty TUT :P

Staraj się dalej a będziesz wielki;)

Eh + za pracowitość

Niedługo wstawię swojego pierwszego tut'a :)

MPC-jupii :)

Opublikowano

@NarutoShipp.

blockCryingObsidian.blockIndexInTexture = ModLoader.addOverride("/terrain.png", "/McMod/CryingObsidian.png");

Tekstura CryingObsidian.png powinna znajdować się w folderze McMod i mieć wymiary 16x16 px.

 

@MultiMT2.

Szczerze mówiąc, to powoli wyczerpują mi się pomysły, co może być przyczyną problemu.

Tym bardziej, że podczas kompilacji nie występują żadne błędy..

Opublikowano

ja mam taki crash w minecraft

 

Mods loaded: 1

ModLoader Beta 1.7.3

 

Minecraft has crashed!

----------------------

 

Minecraft has stopped running because it encountered a problem.

 

If you wish to report this, please copy this entire text and email it to [email protected].

Please include a description of what you did when the error occured.

 

 

 

--- BEGIN ERROR REPORT e9df3db --------

Generated 30.08.11 14:20

 

Minecraft: Minecraft Beta 1.7.3

OS: Windows XP (x86) version 5.1

Java: 1.7.0, Oracle Corporation

VM: Java HotSpot Client VM (mixed mode), Oracle Corporation

LWJGL: 2.4.2

OpenGL: GeForce 9500 GT/PCI/SSE2 version 3.0.0, NVIDIA Corporation

 

java.lang.ExceptionInInitializerError

at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)

at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)

at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)

at java.lang.reflect.Constructor.newInstance(Unknown Source)

at java.lang.Class.newInstance0(Unknown Source)

at java.lang.Class.newInstance(Unknown Source)

at net.minecraft.src.ModLoader.addMod(ModLoader.java:224)

at net.minecraft.src.ModLoader.readFromClassPath(ModLoader.java:1022)

at net.minecraft.src.ModLoader.init(ModLoader.java:687)

at net.minecraft.src.ModLoader.AddAllRenderers(ModLoader.java:121)

at net.minecraft.src.RenderManager.<init>(RenderManager.java:65)

at net.minecraft.src.RenderManager.<clinit>(RenderManager.java:158)

at net.minecraft.client.Minecraft.startGame(Minecraft.java:138)

at net.minecraft.client.Minecraft.run(Minecraft.java:435)

at java.lang.Thread.run(Unknown Source)

 

co robić?

michuo.png

Opublikowano

Przede wszystkim, wyślij source moda.

 

@NarutoShipp.

Do tej pory pisałem tylko mody do clienta, także niezbyt potrafię Ci poradzić..

Sprawdź w pliku Item.java jak wygląda linijka dotycząca np. Crafting Table, Chest ;)

Opublikowano

Przede wszystkim, wyślij source moda.

 

@NarutoShipp.

Do tej pory pisałem tylko mody do clienta, także niezbyt potrafię Ci poradzić..

Sprawdź w pliku Item.java jak wygląda linijka dotycząca np. Crafting Table, Chest ;)

 

W pliku item.java nie ma żadnej linijki na temat chesta, są tylko chestplate, ale znalazłem plik TileEntityChest, ale nic z niego nie rozumiem:

 

// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.

// Jad home page: http://www.kpdus.com/jad.html

// Decompiler options: packimports(3) braces deadcode

 

package net.minecraft.src;

 

 

// Referenced classes of package net.minecraft.src:

// TileEntity, IInventory, ItemStack, NBTTagCompound,

// NBTTagList, World, EntityPlayer

 

public class TileEntityChest extends TileEntity

implements IInventory

{

 

public TileEntityChest()

{

chestContents = new ItemStack[36];

}

 

public int getSizeInventory()

{

return 27;

}

 

public ItemStack getStackInSlot(int i)

{

return chestContents;

}

 

public ItemStack decrStackSize(int i, int j)

{

if(chestContents != null)

{

if(chestContents.stackSize <= j)

{

ItemStack itemstack = chestContents;

chestContents = null;

onInventoryChanged();

return itemstack;

}

ItemStack itemstack1 = chestContents.splitStack(j);

if(chestContents.stackSize == 0)

{

chestContents = null;

}

onInventoryChanged();

return itemstack1;

} else

{

return null;

}

}

 

public void setInventorySlotContents(int i, ItemStack itemstack)

{

chestContents = itemstack;

if(itemstack != null && itemstack.stackSize > getInventoryStackLimit())

{

itemstack.stackSize = getInventoryStackLimit();

}

onInventoryChanged();

}

 

public String getInvName()

{

return "Chest";

}

 

public void readFromNBT(NBTTagCompound nbttagcompound)

{

super.readFromNBT(nbttagcompound);

NBTTagList nbttaglist = nbttagcompound.getTagList("Items");

chestContents = new ItemStack[getSizeInventory()];

for(int i = 0; i < nbttaglist.tagCount(); i++)

{

NBTTagCompound nbttagcompound1 = (NBTTagCompound)nbttaglist.tagAt(i);

int j = nbttagcompound1.getByte("Slot") & 0xff;

if(j >= 0 && j < chestContents.length)

{

chestContents[j] = new ItemStack(nbttagcompound1);

}

}

 

}

 

public void writeToNBT(NBTTagCompound nbttagcompound)

{

super.writeToNBT(nbttagcompound);

NBTTagList nbttaglist = new NBTTagList();

for(int i = 0; i < chestContents.length; i++)

{

if(chestContents != null)

{

NBTTagCompound nbttagcompound1 = new NBTTagCompound();

nbttagcompound1.setByte("Slot", (byte)i);

chestContents.writeToNBT(nbttagcompound1);

nbttaglist.setTag(nbttagcompound1);

}

}

 

nbttagcompound.setTag("Items", nbttaglist);

}

 

public int getInventoryStackLimit()

{

return 64;

}

 

public boolean canInteractWith(EntityPlayer entityplayer)

{

if(worldObj.getBlockTileEntity(xCoord, yCoord, zCoord) != this)

{

return false;

}

return entityplayer.getDistanceSq((double)xCoord + 0.5D, (double)yCoord + 0.5D, (double)zCoord + 0.5D) <= 64D;

}

 

private ItemStack chestContents[];

}

 

 

 

Więc moje pytanie ciągle brzmi jak zrobić, aby block był z każdej strony inny ;)

Opublikowano

@Do całego tematu:

Jeszcze raz mówię bardzo dobry Tut, lecz zwracam uwagę gdy ktoś NIE CHCE zrobić moda na ModLoader to lepiej żeby się nauczył czegoś nawet prostszego niż z modloader'em. KTO CHCE:

Zajrzyj do plików CraftingManager.java,item.java,Recipes(podajze)Furnace.java,Block.java . Siedziałem miesiąc (bez żadnego tuta!). Patrzyłem różne pliki itd. i w końcu się nauczyłem (patrz poprostu na kod i odpowiednie kawalki zaedytuj i przepisz). To jest banalne. Nie musisz mieć zero pojęcia o javie. Chcę tym pokazać że gdy ktoś się uprze i będzie testować itd. w końcu dojdzie do celu.

 

@Naruto:

Gdy se przypomnę (23:00)to napiszę ci rozwiązanie.

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...