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

Zaawansowane Tworzenie Modów


karol202

Rekomendowane odpowiedzi

  • Odpowiedzi 1,2 tys.
  • Dodano
  • Ostatniej odpowiedzi
Opublikowano

mam takie pytanie gdzie wkleic linijke o skakaniu na blocku :

 

 

 

public void onEntityWalking(World world, int x, int y, int z, Entity entity)
{
entity.motionY += SILA;
}

 

 

mam tez problem z wygenerowaniem nowej rudy

 

mod_amzo:

 

 

 

 

 

package net.minecraft.src;
import java.util.Random;
public class mod_amzo extends BaseMod
{
 public static Block trampolina = new BlockTrampolina(254,0).setBlockName("trampolina").setHardness(1F).setResistance(5F);
 public static Block szafir = new BlockSzafir(253,0).setBlockName("szafir").setHardness(15F).setResistance(50F);
public String getVersion()
 {
		 return "0.1";
 }
public void load() {}
 public mod_amzo()
 {
		 trampolina.blockIndexInTexture = ModLoader.addOverride("/terrain.png", "/AMZO/Trampolina.png");
		 ModLoader.registerBlock(trampolina);
		 ModLoader.addName(trampolina, "Trampolina");
szafir.blockIndexInTexture = ModLoader.addOverride("/terrain.png", "/AMZO/Szafir.png");
		 ModLoader.registerBlock(szafir);
		 ModLoader.addName(szafir, "Ruda Szafiru");
 }
public void onEntityWalking(World world, int x, int y, int z, Entity entity)
{
entity.motionY += 2F;
}


public void generateSurface(World world, Random random, int i, int j)
 {
		 for (int k = 0; k < 3; k++)
		 {
				 int x = i + random.nextInt(16);
				 int y = 0 + random.nextInt(20);
				 int z = j + random.nextInt(16);
				 (new WorldGenMinable(BlockSzafir.blockID, 253)).generate(world, random, x, y, z);
		 }
 }
}

 

 

 

wyskakuje mi

 

Error: non-static veriable blockID cannot be referenced from a static context

(new WorldGenMinable(BlockSzafir.blockID, 253)).generate(world, random, x, y,z);

 

edit: @down dzieki nie zauwazylem tego, ale niestety dalej nie dziala

Opublikowano

@UP

 

To 253 to ma być MAXYMALNA ILOŚĆ wygenerowanych obok siebie bloków, a nie ID bloczku ;). Zamień to może na 30 i powinno być ok :P.

Opublikowano

Siemka ;) Mam problem otóż po dodaniu kilku itemów pokazuje mi sie błąd: ""no more empty item sprite indices left!"". Czytałem trochę o tym, że ModLoader ma ograniczoną ilosc miejsc na itemy, ale nie wiem jak to zrobić żeby nadal tworzyć mój mod na ModLoaderze i nie miec tego błędu. . . Czy lepiej będzie się przerzucić na Forge?

Opublikowano

Amzo więc tak:

 

W linijce:

 

(new WorldGenMinable(BlockSzafir.blockID, 20)).generate(world, random, x, y, z);

 

 

Bląd podkreśliłem ci na czerwono - masz tam wpisać nie nazwę pliku bloku lecz nazwę bloku, którą nazwałeś rude w modzie:

 

 

(new WorldGenMinable(szafir.blockID, 20)).generate(world, random, x, y, z);

 

 

 

Posegregowałem ci kilka rzeczy w kodzie oraz zmieniłem ID, gdyż nie potrzeba takich wysokich, a to na prawdę ułatwia pracę, prócz tego na następny raz staraj się sam pisać kod a nie kopiować i sprawdzać każdą linijkę dokładniej. Oraz zmieniłem ci ilość występowania rudy do 20( chcesz to to zmień po swojemu ). Tu masz kod:

 

 

package net.minecraft.src;
import java.util.Random;
public class mod_amzo extends BaseMod
{
public static Block trampolina = new BlockTrampolina(230,0).setBlockName("trampolina").setHardness(1F).setResistance(5F);
public static Block szafir = new BlockSzafir(231,0).setBlockName("szafir").setHardness(15F).setResistance(50F);
public String getVersion()
{
	return "0.1";
}
public void load() {}
public mod_amzo()
{
	ModLoader.registerBlock(trampolina);
	ModLoader.registerBlock(szafir);
	ModLoader.addName(trampolina, "Trampolina");
	ModLoader.addName(szafir, "Ruda Szafiru");
	trampolina.blockIndexInTexture = ModLoader.addOverride("/terrain.png", "/AMZO/Trampolina.png");
	szafir.blockIndexInTexture = ModLoader.addOverride("/terrain.png", "/AMZO/Szafir.png");
}
public void onEntityWalking(World world, int x, int y, int z, Entity entity)
{
	entity.motionY += 2F;
}


public void generateSurface(World world, Random random, int i, int j)
{
	for (int k = 0; k < 3; k++)
	{
		int x = i + random.nextInt(16);
		int y = 0 + random.nextInt(20);
		int z = j + random.nextInt(16);
		(new WorldGenMinable(szafir.blockID, 20)).generate(world, random, x, y, z);
	}
}
}

 

 

@UP

 

Mickel

 

Tak modloader ma ograniczoną ilośc "spritów" na itemy więc niestety radzę ci przerzucić się na forgę - jest trudniejsze, ale ma o wiele więcej możliwości.

Opublikowano

@2up

Wielkie dzięki!!!

Przetapianie robi się chyba tak:

 

GameRegistry.addSmelting(IDPRZETAPIANEGO, new ItemStack(WYNIK, ILOŚĆ, METADATA), ILOŚĆEXPA F)

 

I daj

GameRegistry.

przed addShapelessRecipe.

Halo!

Opublikowano

@2up spróbuj tak:

package net.minecraft.src;
import java.util.Random;
public class BlockMarijuana extends Block
{
   public BlockMarijuana(int i, int j)
   {
    super(i, j, Material.cloth);
    this.setCreativeTab(CreativeTabs.tabBlock);
    setTickRandomly(true);
   }
   public int idDropped(int i, Random j, int k)
   {
    return mod_MarijuanaFarm.Marijuana.blockID;
   }
   public void updateTick(World par1World, int par2, int par3, int par4, Random par5Random);
   {
    if (par1World.isAirBlock(par2, par3 + 1, par4));
    {
	    int i;

	    for (i = 1; par1World.getBlockId(par2, par3 - i, par4) == blockID; i++) { }

	    if (i < 4)
	    {
		    int j = par1World.getBlockMetadata(par2, par3, par4);

		    if (j == 20)
		    {
			    par1World.setBlockWithNotify(par2, par3 + 1, par4, blockID);
			    par1World.setBlockMetadataWithNotify(par2, par3, par4, 0);
		    }
		    else
		    {
			    par1World.setBlockMetadataWithNotify(par2, par3, par4, j + 1);
		    }
	    }
    }
   }
}

 

@up dzięki, poprawione, część o przepalaniu zrobiona. Jeszcze dzisiaj kilka zrobię.

Opublikowano

nic..


== MCP 7.19 (data: 7.19, client: 1.4.2, server: 1.4.2) ==
# found ff, ff patches, srgs, name csvs, doc csvs, param csvs, renumber csv, ast
yle, astyle config
== Recompiling client ==
> Cleaning bin
> Recompiling
'"C:\Program Files\Java\jdk1.7.0_05\bin\javac" -Xlint:-options -deprecation -g -
source 1.6 -target 1....' failed : 1

== ERRORS FOUND ==

src\minecraft\net\minecraft\src\mod_MarihuanaFarm.java:3: error: class mod_Marij
uanaFarm is public, should be declared in a file named mod_MarijuanaFarm.java
public class mod_MarijuanaFarm extends BaseMod
      ^

src\minecraft\net\minecraft\src\BlockMarijuana.java:15: error: missing method bo
dy, or declare abstract
       public void updateTick(World par1World, int par2, int par3, int par4, Ra
ndom par5Random);
                   ^

src\minecraft\net\minecraft\src\BlockMarijuana.java:17: error: cannot find symbo
l
               if (par1World.isAirBlock(par2, par3 + 1, par4));
                                        ^

 symbol:   variable par2
 location: class BlockMarijuana
src\minecraft\net\minecraft\src\BlockMarijuana.java:17: error: cannot find symbo
l
               if (par1World.isAirBlock(par2, par3 + 1, par4));
                                              ^

 symbol:   variable par3
 location: class BlockMarijuana
src\minecraft\net\minecraft\src\BlockMarijuana.java:17: error: cannot find symbo
l
               if (par1World.isAirBlock(par2, par3 + 1, par4));
                                                        ^

 symbol:   variable par4
 location: class BlockMarijuana
src\minecraft\net\minecraft\src\BlockMarijuana.java:17: error: cannot find symbo
l
               if (par1World.isAirBlock(par2, par3 + 1, par4));
                   ^

 symbol:   variable par1World
 location: class BlockMarijuana
src\minecraft\net\minecraft\src\BlockMarijuana.java:21: error: cannot find symbo
l
                       for (i = 1; par1World.getBlockId(par2, par3 - i, par4) =
= blockID; i++) { }
                                                        ^

 symbol:   variable par2
 location: class BlockMarijuana
src\minecraft\net\minecraft\src\BlockMarijuana.java:21: error: cannot find symbo
l
                       for (i = 1; par1World.getBlockId(par2, par3 - i, par4) =
= blockID; i++) { }
                                                              ^

 symbol:   variable par3
 location: class BlockMarijuana
src\minecraft\net\minecraft\src\BlockMarijuana.java:21: error: cannot find symbo
l
                       for (i = 1; par1World.getBlockId(par2, par3 - i, par4) =
= blockID; i++) { }
                                                                        ^

 symbol:   variable par4
 location: class BlockMarijuana
src\minecraft\net\minecraft\src\BlockMarijuana.java:21: error: cannot find symbo
l
                       for (i = 1; par1World.getBlockId(par2, par3 - i, par4) =
= blockID; i++) { }
                                   ^

 symbol:   variable par1World
 location: class BlockMarijuana
src\minecraft\net\minecraft\src\BlockMarijuana.java:25: error: cannot find symbo
l
                               int j = par1World.getBlockMetadata(par2, par3, p
ar4);
                                                                  ^

 symbol:   variable par2
 location: class BlockMarijuana
src\minecraft\net\minecraft\src\BlockMarijuana.java:25: error: cannot find symbo
l
                               int j = par1World.getBlockMetadata(par2, par3, p
ar4);
                                                                        ^

 symbol:   variable par3
 location: class BlockMarijuana
src\minecraft\net\minecraft\src\BlockMarijuana.java:25: error: cannot find symbo
l
                               int j = par1World.getBlockMetadata(par2, par3, p
ar4);
                                                                              ^


 symbol:   variable par4
 location: class BlockMarijuana
src\minecraft\net\minecraft\src\BlockMarijuana.java:25: error: cannot find symbo
l
                               int j = par1World.getBlockMetadata(par2, par3, p
ar4);
                                       ^

 symbol:   variable par1World
 location: class BlockMarijuana
src\minecraft\net\minecraft\src\BlockMarijuana.java:29: error: cannot find symbo
l
                                       par1World.setBlockWithNotify(par2, par3
+ 1, par4, blockID);
                                                                    ^

 symbol:   variable par2
 location: class BlockMarijuana
src\minecraft\net\minecraft\src\BlockMarijuana.java:29: error: cannot find symbo
l
                                       par1World.setBlockWithNotify(par2, par3
+ 1, par4, blockID);
                                                                          ^

 symbol:   variable par3
 location: class BlockMarijuana
src\minecraft\net\minecraft\src\BlockMarijuana.java:29: error: cannot find symbo
l
                                       par1World.setBlockWithNotify(par2, par3
+ 1, par4, blockID);

    ^

 symbol:   variable par4
 location: class BlockMarijuana
src\minecraft\net\minecraft\src\BlockMarijuana.java:29: error: cannot find symbo
l
                                       par1World.setBlockWithNotify(par2, par3
+ 1, par4, blockID);
                                       ^

 symbol:   variable par1World
 location: class BlockMarijuana
src\minecraft\net\minecraft\src\BlockMarijuana.java:30: error: cannot find symbo
l
                                       par1World.setBlockMetadataWithNotify(par
2, par3, par4, 0);
                                                                            ^

 symbol:   variable par2
 location: class BlockMarijuana
src\minecraft\net\minecraft\src\BlockMarijuana.java:30: error: cannot find symbo
l
                                       par1World.setBlockMetadataWithNotify(par
2, par3, par4, 0);

  ^

 symbol:   variable par3
 location: class BlockMarijuana
src\minecraft\net\minecraft\src\BlockMarijuana.java:30: error: cannot find symbo
l
                                       par1World.setBlockMetadataWithNotify(par
2, par3, par4, 0);

        ^

 symbol:   variable par4
 location: class BlockMarijuana
src\minecraft\net\minecraft\src\BlockMarijuana.java:30: error: cannot find symbo
l
                                       par1World.setBlockMetadataWithNotify(par
2, par3, par4, 0);
                                       ^

 symbol:   variable par1World
 location: class BlockMarijuana
src\minecraft\net\minecraft\src\BlockMarijuana.java:34: error: cannot find symbo
l
                                       par1World.setBlockMetadataWithNotify(par
2, par3, par4, j + 1);
                                                                            ^

 symbol:   variable par2
 location: class BlockMarijuana
src\minecraft\net\minecraft\src\BlockMarijuana.java:34: error: cannot find symbo
l
                                       par1World.setBlockMetadataWithNotify(par
2, par3, par4, j + 1);

  ^

 symbol:   variable par3
 location: class BlockMarijuana
src\minecraft\net\minecraft\src\BlockMarijuana.java:34: error: cannot find symbo
l
                                       par1World.setBlockMetadataWithNotify(par
2, par3, par4, j + 1);

        ^

 symbol:   variable par4
 location: class BlockMarijuana
src\minecraft\net\minecraft\src\BlockMarijuana.java:34: error: cannot find symbo
l
                                       par1World.setBlockMetadataWithNotify(par
2, par3, par4, j + 1);
                                       ^

 symbol:   variable par1World
 location: class BlockMarijuana
src\minecraft\net\minecraft\src\mod_MarihuanaFarm.java:5: error: method setPotio
nEffect in class Item cannot be applied to given types;
               public static Item Joint = new ItemFood(502, 4, false).setItemNa
me("Joint").setPotionEffect(Potion.moveSpeed.id, 300, 2, 1F).setPotionEffect(Pot
ion.nightVision.id, 300, 0, 1F).setPotionEffect(Potion.jump.id, 300, 0, 1F);

          ^

 required: String
 found: int,int,int,float
 reason: actual and formal argument lists differ in length
27 errors
==================

== Recompiling server ==
> Cleaning bin
> Recompiling

............

Opublikowano

niee ;f


== MCP 7.19 (data: 7.19, client: 1.4.2, server: 1.4.2) ==
# found ff, ff patches, srgs, name csvs, doc csvs, param csvs, renumber csv, ast
yle, astyle config
== Recompiling client ==
> Cleaning bin
> Recompiling
'"C:\Program Files\Java\jdk1.7.0_05\bin\javac" -Xlint:-options -deprecation -g -
source 1.6 -target 1....' failed : 1

== ERRORS FOUND ==

src\minecraft\net\minecraft\src\BlockMarijuana.java:40: error: class, interface,
or enum expected
}
^

1 error
==================

== Recompiling server ==
> Cleaning bin
> Recompiling

............

Opublikowano

@2up

Ja się troche bawiłem. Czekałem na troche lekcji, bo ciężko robić moda jak się ma tylko bloki i itemy :D A teraz jest wszystko co potrzebne...

 

@edit

Intresuje mnie klasa VillagerRegistry, czy jakoś tak :)

Halo!

Opublikowano

@2up jednak ta klamra na końcu nie potrzebna. To:

public void updateTick(World par1World, int par2, int par3, int par4, Random par5Random);

zamień na to:

public void updateTick(World par1World, int par2, int par3, int par4, Random par5Random)

Opublikowano

Mam mały problem z .setPotionEffect. Chyba chodzi o konflikt między klasami Item i ItemFood. Jeśli ktoś wie o co chodzi, to plis pomóżcie... :) :) . Próbowałem chyba wszystkiego

(Forge 1.4.2)

Halo!

Opublikowano

po usunieciu klamry i skasowania posrednika leci mi..


== MCP 7.19 (data: 7.19, client: 1.4.2, server: 1.4.2) ==
# found ff, ff patches, srgs, name csvs, doc csvs, param csvs, renumber csv, ast
yle, astyle config
== Recompiling client ==
> Cleaning bin
> Recompiling
'"C:\Program Files\Java\jdk1.7.0_05\bin\javac" -Xlint:-options -deprecation -g -
source 1.6 -target 1....' failed : 1

== ERRORS FOUND ==

src\minecraft\net\minecraft\src\mod_MarihuanaFarm.java:3: error: class mod_Marij
uanaFarm is public, should be declared in a file named mod_MarijuanaFarm.java
public class mod_MarijuanaFarm extends BaseMod
      ^

src\minecraft\net\minecraft\src\mod_MarihuanaFarm.java:5: error: method setPotio
nEffect in class Item cannot be applied to given types;
               public static Item Joint = new ItemFood(502, 4, false).setItemNa
me("Joint").setPotionEffect(Potion.moveSpeed.id, 300, 2, 1F).setPotionEffect(Pot
ion.nightVision.id, 300, 0, 1F).setPotionEffect(Potion.jump.id, 300, 0, 1F);

          ^

 required: String
 found: int,int,int,float
 reason: actual and formal argument lists differ in length
2 errors
==================

== Recompiling server ==
> Cleaning bin
> Recompiling
- Done in 10.68 seconds
Aby kontynuować, naciśnij dowolny klawisz . . .

............

Opublikowano

@2up

Już próbowałem. Próbowałem też plik itemu dziedziczyć po ItemFood, i nie importować klasy Item.

@up Nie zgadza się nazwa pliku modu z nazwą w kodzie (raz jest MatijuanaFarm, a raz Marihuana Farm). I możliwe że coś jest z wersjami.

Halo!

Opublikowano

Ok, thx zostało z efektem night vision coś.


== MCP 7.19 (data: 7.19, client: 1.4.2, server: 1.4.2) ==
# found ff, ff patches, srgs, name csvs, doc csvs, param csvs, renumber csv, ast
yle, astyle config
== Recompiling client ==
> Cleaning bin
> Recompiling
'"C:\Program Files\Java\jdk1.7.0_05\bin\javac" -Xlint:-options -deprecation -g -
source 1.6 -target 1....' failed : 1

== ERRORS FOUND ==

src\minecraft\net\minecraft\src\mod_MarihuanaFarm.java:5: error: method setPotio
nEffect in class Item cannot be applied to given types;
               public static Item Joint = new ItemFood(502, 4, false).setItemNa
me("Joint").setPotionEffect(Potion.moveSpeed.id, 300, 2, 1F).setPotionEffect(Pot
ion.nightVision.id, 300, 0, 1F).setPotionEffect(Potion.jump.id, 300, 0, 1F);

          ^

 required: String
 found: int,int,int,float
 reason: actual and formal argument lists differ in length
1 error
==================

== Recompiling server ==
> Cleaning bin
> Recompiling

ide pokombinować.. huh..

............

Opublikowano

@up Też mam ten błąd. Siedziałem ze 2 h i sie tym bawiłem. Błąd jest jasny. Używasz metody, która jest opisana inaczej w 2 klasach. Raz chce string, a raz 3xInt i Float. One ze sobą jakoś współgrają. Jak pozbędziesz się błędu to mi powiedz. Też spróbuje się pobawić.

Halo!

Zarchiwizowany

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

×
×
  • Dodaj nową pozycję...