-
Search
-
Search all Forums
-
Search this Forum
-
Search this Thread
-
-
Tools
-
Jump to Forum
-
- |<<
- <
- >
- >>|
- 1
- 2
- Next
-
#1
Nov 19, 2012
smpsh-
View User Profile
-
View Posts
-
Send Message
- Tree Puncher
- Location:
not telling
- Join Date:
11/20/2012
- Posts:
25
- Minecraft:
smpsh
- Xbox:
Dont have one
- Member Details
I an making a LotR advenure map,but I need a ring to use. I figured I would use the invisibiliy ring from the rings mod, but that makes enimies ignore you. I want all the enimies exept the ringwraiths to ignore me. I am making ringwraiths in a seprate mod, but I need some help. Baisiclyy what I’m asking is how do you edit an already created mod? Help me or I’ll stab you with my sword!!
I reject your reality and substitute my own. Adam Savage, Mythbuster.
-
-
#2
Nov 19, 2012
I don’t help people who threaten me with violence.
-
#4
Nov 20, 2012
Plecks-
View User Profile
-
View Posts
-
Send Message
- The Meaning of Life, the Universe, and Everything.
- Join Date:
1/18/2011
- Posts:
256
- Minecraft:
Plecks
- Member Details
JD-GUI is really good for being able to easily decompile and get a look into a compile .class file. The Minecraft stuff will still be obfuscated, but the mod’s code generally won’t be, and you can usually get a good idea on how someone did something. It’s not illegal, but if you just copy someone’s code without their permission it could violate their copyright, and as Tspro said it’s immoral. However, seeing how someone did something, then writing your own code to do something similar is fine.
You could also work together with the rings mod author, and see if there’s a way you could use his mod as-is, while allowing Ringwraiths to ignore the invisability. That way you bring more traffic to his mod, and don’t have to write the ring/invisibility code yourself.
-
-
#5
Nov 20, 2012
smpsh-
View User Profile
-
View Posts
-
Send Message
- Tree Puncher
- Location:
not telling
- Join Date:
11/20/2012
- Posts:
25
- Minecraft:
smpsh
- Xbox:
Dont have one
- Member Details
Thank you Plecks and Tspro. I think I will try using JD-GUI since I am just 9
I don’t have a way of getting in touch with the mod author.
If the mod is open source i will try looking at that too. Now just for fun I’m gonna light you three on fire.TEEHEE
I reject your reality and substitute my own. Adam Savage, Mythbuster.
-
-
#6
Nov 20, 2012
smpsh-
View User Profile
-
View Posts
-
Send Message
- Tree Puncher
- Location:
not telling
- Join Date:
11/20/2012
- Posts:
25
- Minecraft:
smpsh
- Xbox:
Dont have one
- Member Details
I downloaded it and it is open source. There is a folder called «source (for modders)».I opened it and there are 2 java files.
I asked my dad and he said to open them with notepad. I did, but I dont know java
It was gobbledegoop to me.So I opened ItemRingInvisible.class in JD-GUI and got gobbledeegoop again. If anyone can help me find what I need that would be nice. This is what I got in JD-GUI.
import net.minecraft.client.Minecraft;
public class ItemRingInvisible extends yr
{
public ItemRingInvisible(int par1)
{
super(par1);
this.bR = 1;
}public aan a(aan par1ItemStack, xd par2World, yw par3EntityPlayer)
{
ModLoader.getMinecraftInstance().h.startRing(«invisibleRing»);
return par1ItemStack;
}public boolean e(aan par1ItemStack)
{
return true;
}public fo f(aan par1ItemStack)
{
return fo.d;
}
}Last edited by smpsh: Nov 20, 2012
I reject your reality and substitute my own. Adam Savage, Mythbuster.
-
-
#7
Nov 20, 2012
JD-GUI is really good for being able to easily decompile and get a look into a compile .class file. The Minecraft stuff will still be obfuscated, but the mod’s code generally won’t be, and you can usually get a good idea on how someone did something. It’s not illegal, but if you just copy someone’s code without their permission it could violate their copyright, and as Tspro said it’s immoral.
Change «could» to «definitely would,» unless the mod is open source, as the smpsh said. And if it is open source, you have to follow the terms yourself unless the mod author gives you a special license to do otherwise. Doesn’t appear to be an issue here, but just clarifying for other people who are reading.
-
#8
Nov 20, 2012
cikl-
View User Profile
-
View Posts
-
Send Message
- Zombie Killer
- Join Date:
9/2/2011
- Posts:
159
- Member Details
Use eclipse, Its the Modders most favorite Java Editing Program.
Go to the tutorials section, they may have some info there.
Also, class files dont help you need the Raw java files to edit the mob’s Entity files.
If you dont know any coding, I wouldn’t bother doing this If I were you, request someone to do it…
Its not «Gobldegoop» its Java coding…It may look like Just a bunch of Numbers, Letters, and brackets to you but to a coders eye that’s like a language…Hope I helped!
Last edited by cikl: Nov 20, 2012
-
-
#9
Nov 20, 2012
smpsh-
View User Profile
-
View Posts
-
Send Message
- Tree Puncher
- Location:
not telling
- Join Date:
11/20/2012
- Posts:
25
- Minecraft:
smpsh
- Xbox:
Dont have one
- Member Details
cikl I will try eclipse, thanks
I reject your reality and substitute my own. Adam Savage, Mythbuster.
-
-
#11
Nov 20, 2012
smpsh-
View User Profile
-
View Posts
-
Send Message
- Tree Puncher
- Location:
not telling
- Join Date:
11/20/2012
- Posts:
25
- Minecraft:
smpsh
- Xbox:
Dont have one
- Member Details
I reject your reality and substitute my own. Adam Savage, Mythbuster.
-
-
#12
Nov 20, 2012
What are your questions? Maybe I can help you with it?
-
#13
Nov 21, 2012
smpsh-
View User Profile
-
View Posts
-
Send Message
- Tree Puncher
- Location:
not telling
- Join Date:
11/20/2012
- Posts:
25
- Minecraft:
smpsh
- Xbox:
Dont have one
- Member Details
You know what, I think Ill just get some help. Will anyone help me make this mod?
I reject your reality and substitute my own. Adam Savage, Mythbuster.
-
-
#14
Nov 21, 2012
I will. That is what I’m offering I have been coding for a while now. I cant make huge mods like Divine RPG and such but I can make a mod That people enjoy. So PM me and we can talk about what to do.
-
#15
Nov 21, 2012
sdj64-
View User Profile
-
View Posts
-
Send Message
- Zombie Killer
- Join Date:
8/9/2011
- Posts:
207
- Member Details
source files are .java, the .class files are the compiled code, they’re not meant to be readable. Like the people above said, you can use JD-GUI or something else to decompile but that would violate the mod owner’s copyright.
If you downloaded MCP and Eclipse and followed those instructions, take a look at the Enderman’s source file (EntityEnderman.java), specifically the method shouldAttackPlayer. You can change the block id from «pumpkin» to whatever id your ring is. Hope this helps!
-
-
#16
Nov 21, 2012
So PM me if you are still interested in me helping you create a simple/moderate skill level mod.
-
#17
Nov 21, 2012
*facepalm*
If you don’t know java, why would you ask about editing an already existing mod? Plus, just because a mod is open-source does not mean you can use the code exactly or even the texture. Look at how to do basic coding and learn actual java before you go and try to learn to mod, because that’s much harder and more annoying to do. For your original question, just decompile minecraft using MCP and find the potion of invisibility, and look how that works. -
#18
Nov 21, 2012
Char I know that is why i offered to help him.
-
#19
Nov 21, 2012
Still, try to learn java so that you at least have a basis of understanding instead of just asking people to make you something.
OP, understand that you do need the mod author’s permission in order to publish the mod, even if it is open source; if you use the texture and the code, you must acknowledge that it is the author’s original note.
-
#20
Nov 21, 2012
Yes that is true but when I said help him I’m implying we will start from scratch so he can learn how java works. Also Perfect Circles Exist.
-
#21
Nov 21, 2012
- To post a comment, please login.
- 1
- 2
- Next
- |<<
- <
- >
- >>|
Posts Quoted:
Reply
Clear All Quotes
-
Search
-
Search all Forums
-
Search this Forum
-
Search this Thread
-
-
Tools
-
Jump to Forum
-
- |<<
- <
- >
- >>|
- 1
- 2
- Next
-
#1
Nov 19, 2012
smpsh-
View User Profile
-
View Posts
-
Send Message
- Tree Puncher
- Location:
not telling
- Join Date:
11/20/2012
- Posts:
25
- Minecraft:
smpsh
- Xbox:
Dont have one
- Member Details
I an making a LotR advenure map,but I need a ring to use. I figured I would use the invisibiliy ring from the rings mod, but that makes enimies ignore you. I want all the enimies exept the ringwraiths to ignore me. I am making ringwraiths in a seprate mod, but I need some help. Baisiclyy what I’m asking is how do you edit an already created mod? Help me or I’ll stab you with my sword!!
I reject your reality and substitute my own. Adam Savage, Mythbuster.
-
-
#2
Nov 19, 2012
I don’t help people who threaten me with violence.
-
#4
Nov 20, 2012
Plecks-
View User Profile
-
View Posts
-
Send Message
- The Meaning of Life, the Universe, and Everything.
- Join Date:
1/18/2011
- Posts:
256
- Minecraft:
Plecks
- Member Details
JD-GUI is really good for being able to easily decompile and get a look into a compile .class file. The Minecraft stuff will still be obfuscated, but the mod’s code generally won’t be, and you can usually get a good idea on how someone did something. It’s not illegal, but if you just copy someone’s code without their permission it could violate their copyright, and as Tspro said it’s immoral. However, seeing how someone did something, then writing your own code to do something similar is fine.
You could also work together with the rings mod author, and see if there’s a way you could use his mod as-is, while allowing Ringwraiths to ignore the invisability. That way you bring more traffic to his mod, and don’t have to write the ring/invisibility code yourself.
-
-
#5
Nov 20, 2012
smpsh-
View User Profile
-
View Posts
-
Send Message
- Tree Puncher
- Location:
not telling
- Join Date:
11/20/2012
- Posts:
25
- Minecraft:
smpsh
- Xbox:
Dont have one
- Member Details
Thank you Plecks and Tspro. I think I will try using JD-GUI since I am just 9
I don’t have a way of getting in touch with the mod author.
If the mod is open source i will try looking at that too. Now just for fun I’m gonna light you three on fire.TEEHEE
I reject your reality and substitute my own. Adam Savage, Mythbuster.
-
-
#6
Nov 20, 2012
smpsh-
View User Profile
-
View Posts
-
Send Message
- Tree Puncher
- Location:
not telling
- Join Date:
11/20/2012
- Posts:
25
- Minecraft:
smpsh
- Xbox:
Dont have one
- Member Details
I downloaded it and it is open source. There is a folder called «source (for modders)».I opened it and there are 2 java files.
I asked my dad and he said to open them with notepad. I did, but I dont know java
It was gobbledegoop to me.So I opened ItemRingInvisible.class in JD-GUI and got gobbledeegoop again. If anyone can help me find what I need that would be nice. This is what I got in JD-GUI.
import net.minecraft.client.Minecraft;
public class ItemRingInvisible extends yr
{
public ItemRingInvisible(int par1)
{
super(par1);
this.bR = 1;
}public aan a(aan par1ItemStack, xd par2World, yw par3EntityPlayer)
{
ModLoader.getMinecraftInstance().h.startRing(«invisibleRing»);
return par1ItemStack;
}public boolean e(aan par1ItemStack)
{
return true;
}public fo f(aan par1ItemStack)
{
return fo.d;
}
}Last edited by smpsh: Nov 20, 2012
I reject your reality and substitute my own. Adam Savage, Mythbuster.
-
-
#7
Nov 20, 2012
JD-GUI is really good for being able to easily decompile and get a look into a compile .class file. The Minecraft stuff will still be obfuscated, but the mod’s code generally won’t be, and you can usually get a good idea on how someone did something. It’s not illegal, but if you just copy someone’s code without their permission it could violate their copyright, and as Tspro said it’s immoral.
Change «could» to «definitely would,» unless the mod is open source, as the smpsh said. And if it is open source, you have to follow the terms yourself unless the mod author gives you a special license to do otherwise. Doesn’t appear to be an issue here, but just clarifying for other people who are reading.
-
#8
Nov 20, 2012
cikl-
View User Profile
-
View Posts
-
Send Message
- Zombie Killer
- Join Date:
9/2/2011
- Posts:
159
- Member Details
Use eclipse, Its the Modders most favorite Java Editing Program.
Go to the tutorials section, they may have some info there.
Also, class files dont help you need the Raw java files to edit the mob’s Entity files.
If you dont know any coding, I wouldn’t bother doing this If I were you, request someone to do it…
Its not «Gobldegoop» its Java coding…It may look like Just a bunch of Numbers, Letters, and brackets to you but to a coders eye that’s like a language…Hope I helped!
Last edited by cikl: Nov 20, 2012
-
-
#9
Nov 20, 2012
smpsh-
View User Profile
-
View Posts
-
Send Message
- Tree Puncher
- Location:
not telling
- Join Date:
11/20/2012
- Posts:
25
- Minecraft:
smpsh
- Xbox:
Dont have one
- Member Details
cikl I will try eclipse, thanks
I reject your reality and substitute my own. Adam Savage, Mythbuster.
-
-
#11
Nov 20, 2012
smpsh-
View User Profile
-
View Posts
-
Send Message
- Tree Puncher
- Location:
not telling
- Join Date:
11/20/2012
- Posts:
25
- Minecraft:
smpsh
- Xbox:
Dont have one
- Member Details
I reject your reality and substitute my own. Adam Savage, Mythbuster.
-
-
#12
Nov 20, 2012
What are your questions? Maybe I can help you with it?
-
#13
Nov 21, 2012
smpsh-
View User Profile
-
View Posts
-
Send Message
- Tree Puncher
- Location:
not telling
- Join Date:
11/20/2012
- Posts:
25
- Minecraft:
smpsh
- Xbox:
Dont have one
- Member Details
You know what, I think Ill just get some help. Will anyone help me make this mod?
I reject your reality and substitute my own. Adam Savage, Mythbuster.
-
-
#14
Nov 21, 2012
I will. That is what I’m offering I have been coding for a while now. I cant make huge mods like Divine RPG and such but I can make a mod That people enjoy. So PM me and we can talk about what to do.
-
#15
Nov 21, 2012
sdj64-
View User Profile
-
View Posts
-
Send Message
- Zombie Killer
- Join Date:
8/9/2011
- Posts:
207
- Member Details
source files are .java, the .class files are the compiled code, they’re not meant to be readable. Like the people above said, you can use JD-GUI or something else to decompile but that would violate the mod owner’s copyright.
If you downloaded MCP and Eclipse and followed those instructions, take a look at the Enderman’s source file (EntityEnderman.java), specifically the method shouldAttackPlayer. You can change the block id from «pumpkin» to whatever id your ring is. Hope this helps!
-
-
#16
Nov 21, 2012
So PM me if you are still interested in me helping you create a simple/moderate skill level mod.
-
#17
Nov 21, 2012
*facepalm*
If you don’t know java, why would you ask about editing an already existing mod? Plus, just because a mod is open-source does not mean you can use the code exactly or even the texture. Look at how to do basic coding and learn actual java before you go and try to learn to mod, because that’s much harder and more annoying to do. For your original question, just decompile minecraft using MCP and find the potion of invisibility, and look how that works. -
#18
Nov 21, 2012
Char I know that is why i offered to help him.
-
#19
Nov 21, 2012
Still, try to learn java so that you at least have a basis of understanding instead of just asking people to make you something.
OP, understand that you do need the mod author’s permission in order to publish the mod, even if it is open source; if you use the texture and the code, you must acknowledge that it is the author’s original note.
-
#20
Nov 21, 2012
Yes that is true but when I said help him I’m implying we will start from scratch so he can learn how java works. Also Perfect Circles Exist.
-
#21
Nov 21, 2012
- To post a comment, please login.
- 1
- 2
- Next
- |<<
- <
- >
- >>|
Posts Quoted:
Reply
Clear All Quotes
-
#1
Здравствуйте пользователи этого сайта!Вот наткнулся я на мод Last days для minecraft 1.7.10 и вот беда там появляется жажда и убираются значки сытости и защиты!чтобы их просмотреть надо заходить в инвентарь.И от первого лица появились ноги ну как обычно!минус этого в том что ты видишь броню только из этого мода остальная от первого лица невидима,а также скин поменялся у игрока.если менять скин в моде игра запускается но при загрузке мира вылетает!помогите мне пожалуйста как редактировать этот мод?!буду благодарен.
[youtube]2iulTiQaxlM[/youtube]
-
#2
Знакомый мой делал кстати. А вообще декомпилируй и измени сорцы. Можно их купить. Или «лажовая» рефлексия. Тоесть делаешь такие же переменные с таким же значением(методы и тд) а при сборке вместо «лажового»мода суй их мод
-
#3
LazyRavenMan написал(а):
Знакомый мой делал кстати. А вообще декомпилируй и измени сорцы. Можно их купить. Или «лажовая» рефлексия. Тоесть делаешь такие же переменные с таким же значением(методы и тд) а при сборке вместо «лажового»мода суй их мод
Что?
-
#4
Ну,например, создай переменную, которая работать не будет и скомпилируй мод(свой). Либо их мод разбери
-
#7
Bearded Octo Nemesis + Fernflower.
-
#8
Defilak написал(а):
Bearded Octo Nemesis + Fernflower.
Судя по «высокой» компетенции ТС, можно смело утверждать, что следующий вопрос будет «И чо с этим делать». А т.к. на него тут же понабежит матерящийся DragonLazAntiпрочие, и, упаси Сатана, Равен в компании с вовой_мастером…
А по теме: узнать есть ли у мода API. Если нет — просить автора добавить, если есть — пользоватся API мода и рефлексией. Это в теории….
[merge_posts_bbcode]Добавлено: 31.10.2014 13:20:04[/merge_posts_bbcode]
UPD: Агрдиванне и Равен уже тут были.
-
#9
Ну, материться я не буду, но скажу что некоторые моды имеют открытый исходный код и их декомпилировать и деобфуцировать не нужно. А вообще моды с закрытым исходным кодом делают не просто так, явно автор не хочет чтобы его код кто-то видел или использовал в своих целях.
-
#12
Я ваще ни чё не понял что вы говорили!
-
#13
Был пост про разборку. Загугли «use bearded octo nemesis»
-
#14
Ну тут и я могу помочь ТС… http://vk.cc/374dd0
Здесь представлены основные уроки по созданию модификаций с помощью Forge/1.7+. Остальную информацию по данной теме смотрите в соответствующей статье.
Локализация названий в игре
Собственно у нас есть некоторые предметы, блоки, а возможно даже кнопки, существа и надписи из нашего мода, называющиеся в инвентаре примерно так: item.block.name
Естественно это нас не устраивает, и это можно исправить, даже не внося изменений в код!
Итак, приступим. Слева, в src/main/resources
создайте пакет assets.mybestmod.lang
Понятно, что mybestmod — это краткое имя мода(или modid), указанное в @Mod. Теперь где угодно создайте файл(создайте текстовой, а затем измените расширение) en_US.lang (где будут написаны английские название блоков, предметов и т. д.) и пропишите в нём то, что вы видите вместо названия в инвентаре (в случае нашего первого блока — tile.bestblockever.name), затем равно, и прямо за ним — ваше локализированное название, например: «Best Block EvAR!». То есть должно получиться:
tile.bestblockever.name=Best Block EvAR!
Теперь скопируйте файл, и назовите копию ru_RU.lang (собственно русский перевод). Внутри него измените название на русское, например
tile.bestblockever.name=Самый лучший блок!! =P
Теперь оба этих файла можете перетащить в заранее созданную assets.mybestmod.lang
При переносе выберите Copy files.
Чтобы локализировать вкладки в режиме творчество добавьте такой код:
itemGroup.tabTutorial=Локализированое имя
tabTutorial
— Название вашей вкладки
Вот и всё! Локализация завершена, теперь в игре будут отображаться выбранные вами названия.
Подобных названий можно вписывать сколько угодно, главное в столбик.
Скорее всего в игре русское название будет выглядеть вопросами! Это всё из-за кодировки. Исправить это можно зайдя в eclipse вкладку windowpreferencesgeneral и просто нажмите на workspace и внизу найдите text file encoding и поставьте на other и там выберите UTF-8. Всё! теперь у нас нормальный русский язык!
Дроп определённого предмета при разрушении блока
Всё очень просто. В конец класса созданного вами блока (перед последней фигурной скобкой) вставьте это:
@Override public Item getItemDropped(int par1, Random par2Random, int par3) { return Items.diamond; }
То есть теперь при разрушении вашего блока из него выпадет алмаз. Вы можете написать, чтоб выпадало что угодно. Просто вместо
return Items.diamond;
напишите «return Item.getItemFromBlock(Blocks.);
» (для блоков) или «return Items.;
» (для предметов), а после ввода вами точки выпадет список возможных предметов или блоков.
Если хотите, чтоб выпадал не один предмет, а несколько, просто вставьте сразу после предыдущих строк
@Override public int quantityDropped(Random par1Random) { return 20; }
Тогда при разрушении выпадет 20 выбранных вами предметов или блоков.
Всё очень легко и просто!
Разносторонняя текстура блока
Я буду использовать следующие текстуры:
Для этого, добавьте такой код в тело класса:
public IIcon[] icons = new IIcon[6];
И такой после конструктора класса:
@Override public void registerBlockIcons(IIconRegister reg) { for (int i = 0; i < 6; i ++) { this.icons[i] = reg.registerIcon(this.textureName + "_" + i); } }
Теперь в папку assets/ID мода/resources/textures/blocks/
добавьте файлы с таким именем: <То, что вы указали в скобках в конструкторе класса, в методе this.setBlockTextureName()>_<код стороны блока>
И ещё такой код:
@Override public IIcon getIcon(int side, int meta) { return this.icons[side]; }
В игре блок будет выглядеть так:
Важно то, что текстура северной и восточной (2 и 5) части блока отображается зеркально. Если вы не поняли, то поставьте блок ТНТ и посмотрите на части, где написано TNT. С одной стороны написано «TNT», а с другой — «ТИТ».
Собственная вкладка в Творческом режиме
Для этого добавьте такой код в тело класса:
public static CreativeTabs tabTutorial = new TabTutorial("ModID");
«ModID» заменяем на любое число. Рекомендую ID больше 11 (12 ID сразу на следующей странице творческого инвентаря).
Потом создайте класс TutorialTab. Если всё правильно, то ваш класс будет иметь extends CreativeTabs
до первой фигурной скобки. Теперь добавьте этот метод в ново-созданный класс:
public TabTutorial(String lable) { super(lable); } @Override public Item getTabIconItem() { return Item.getItemFromBlock(Blocks.grass); }
Теперь заходите в игру. Вы увидите свою вкладку во втором списке вкладок, её «символом» будет блок дёрна. Если вам хочется, чтобы «символом» был предмет, то вместо Blocks.
напишите Items.предмет
. Если вы хотите, чтобы «символом» был ваш блок или предмет, то напишите BestMod.bestBlockEver
. BestMod
— главный файл вашего мода. bestBlockEver
— ваш блок/предмет.
Для того что бы добавить что либо из вашего мода в собственную вкладку пишем:
this.setCreativeTab(НазваниеГлавногоКласса.НазваниеВашейВкладки);
Чтобы обновить версию Forge, на который вы создаёте моды, необязательно всё перекачивать.
Достаточно просто изменить build.gradle Так что если хотите обновить Forge откройте его любым редактором и найдите строчку
version = "1.7.2-10.12.0.998"
Там будет написана версия Forge, которая у вас сейчас, соответственно вам нужно всего лишь изменить значение на новое. Измените его на версию, до которой хотите обновить Forge (например на 1.7.2-10.12.0.1012) и сохраните файл. Далее запустите gradlew.bat с командой eclipse (то есть запустить bat-файл с кодом gradlew.bat eclipse
) и после завершения его работы ваша версия Forge обновлена!
Обновление ForgeGradle
Forge отделён от ForgeGradle, поэтому если вы попытаетесь обновиться на версию Forge, которая использует более новой ForgeGradle, вы получите ошибки. Вот таблица версия Forge, и какие версии ForgeGradle он использует.
ForgeGradle | Forge |
---|---|
— | 959<, 965 |
1.0 | 960-964 |
1.1 | 967-1047 |
1.2 | 1048+ |
Удалите папку .gradle, которая находится в папке, куда вы разархивировали Forge.
Теперь, откройте файл build.gradle (который находится там же). Найдите такую строку:
dependencies { classpath 'net.minecraftforge.gradle:ForgeGradle:1.x-SNAPSHOT' }
В 1.x-SNAPSHOT, поменяйте 1.x на нужную версию ForgeGradle. Сохраните файл и откройте командную строку. Повторно введите команды, которые вы использовали при установке Forge. ForgeGradle обновит все нужные файлы.
Свой материал для инструмента
Допустим вы хотите, чтобы ваш инструмент обладал свойствами не железной/алмазной кирок из майнкрафта, а собственными.
Тогда где-нибудь(вы можете где угодно написать эту строку, главное, чтоб можно было вызвать.), например в главном классе вне каких либо методов (то есть можно перед последней фигурной скобкой) напишите:
public static final ToolMaterial NEWMAT = EnumHelper.addToolMaterial("NEWMAT", 2, 564, 5.0F, 4.0F, 50);
Не забудьте про импорт. Давайте разберемся: static означает, что переменная NEWMAT типа ToolMaterial доступна из других классов. Затем приравнивается значению, которое и даст вашей кирке определённые свойства. Теперь об аргументах, перечисленных через запятую:
- Название материала
- На сколько кирка крута от 0 до 3, то есть какие блоки может ломать(1 — эквивалент каменной, 3 — алмазной).
- Максимальное количество сломанных блоков (у алмазной — 1561, каменной — 131).
- Скорость добычи (у золотой — 12, у алмазной — 8, деревянной — 2).
- Урон, наносимый существам (у деревянной/золотой — 0, железной — 2, алмазной — 3).
- Зачаровываемость, то есть какой шанс хороших чар (у золотой — 22, алмазной — 10, железной — 14).
Теперь можно придать какому-нибудь инструменту эти свойства, для этого в инструменте (например в нашей кирке) измените super(ToolMaterial.EMERALD);
на super(BaseMyBestMod.NEWMAT);
В таком случае вы отправляете в супер-класс инструмента информацию о том, что свойства описаны переменной NEWMAT типа ToolMaterial, которая описана в классе BaseMyBestMod (или любой другой класс, где она написана).
Вот и всё, свойства инструмента изменены.
Создание брони
Создание брони немного отличается от создания обычных предметов, точнее имеет свои особенности. Приступим.
Мы не будем создавать для каждого предмета свой отдельный класс, а создадим один универсальный, который опишет сразу шлем, нагрудник, штаны и ботинки.
Начнём с регистрации переменных.
public static Item bestarmorhelmet; public static Item bestarmorplate; public static Item bestarmorpants; public static Item bestarmorboots;
Шлем, нагрудник, штаны и ботинки соответственно. Теперь описываем эти переменные с помощью универсального класса. Естественно внутри метода preLoad()
bestarmorhelmet = new BestArmor(0, 0).setUnlocalizedName("bestarmorhelmet").setTextureName("mybestmod:BestArmorHelmet"); bestarmorplate = new BestArmor(0, 1).setUnlocalizedName("bestarmorplate").setTextureName("mybestmod:BestArmorPlate"); bestarmorpants = new BestArmor(0, 2).setUnlocalizedName("bestarmorpants").setTextureName("mybestmod:BestArmorPants"); bestarmorboots = new BestArmor(0, 3).setUnlocalizedName("bestarmorboots").setTextureName("mybestmod:BestArmorBoots");
Здесь, вроде, всё знакомо, мы даём нелокализированное имя каждому из предметов, а также текстуру. Но здесь мы посылаем ещё и две цифры в метод BestArmor. Вторая цифра отвечает за тип брони (0 — шлем, 3 — ботинки), назначение первой неясно, но в данном случае она роли не играет. Далее тоже ничего нового, просто зарегистрируем эти предметы в Forge. Сделать это нужно после описания переменных.
GameRegistry.registerItem(bestarmorhelmet, "bestarmorhelmet"); GameRegistry.registerItem(bestarmorplate, "bestarmorplate"); GameRegistry.registerItem(bestarmorpants, "bestarmorpants"); GameRegistry.registerItem(bestarmorboots, "bestarmorboots");
С главным классом работа окончена.
Теперь щелкаем по одной из ошибок и создаём новый класс BestArmor. Теперь «продолжаем» класс ItemArmor, то есть пишем extends ItemArmor
после названия класса. Теперь в тело класса вставляем следующее:
private String texturePath = "mybestmod:textures/model/armor/"; public BestArmor(int id, int armorType) { super(ArmorMaterial.DIAMOND, id, armorType); this.setCreativeTab(CreativeTabs.tabCombat); this.setMaxStackSize(1); this.setTextureName(); } public void setTextureName () { if(armorType == 0||armorType == 1||armorType == 3){ this.texturePath += "MyBestArmor_" + 1 + ".png"; } else { this.texturePath += "MyBestArmor_" + 2 + ".png"; } } @Override public String getArmorTexture(ItemStack itemstack, Entity entity, int slot, String type){ return this.texturePath; }
Что ж, давайте разбираться.
Первая переменная, просто обозначает начало пути к текстуре брони. Все нужные текстуры можно спокойно извлечь из майнкрафта и отредактировать по желанию. Вот мои отредактированные текстуры:
Текстуры предметов помещаются туда же, где и текстура кирки. А вот две текстуры самой брони нужно поместить в другую папку. Поэтому создайте её: нажмите ПКМ по src/main/resources
и выберите New — Package и назовите его assets.mybestmod.textures.model.armor
и уже туда перетащите две оставшиеся текстуры.
Давайте дальше разбираться с кодом: следующим идёт метод BestArmor(), в который мы посылаем из главного класса параметры id и armorType. Напомню: от armorType зависит, какая это часть брони. В нём мы посылаем информацию о том, какой материал брони. Я написал, что броня будет аналогична алмазной, но можно создать свой материал для брони и вписать его. Далее мы настраиваем вкладку в креативе. Потом мы ограничиваем максимальное количество данного предмета в одной стопке до одного, чтобы броня не «стакалась». В конце концов мы вызываем созданный нами метод setTextureName()
В этом нашем собственном методе происходит проверка, какая часть брони вызвала этот класс. И, если это был шлем, нагрудник или ботинки, то используется первая текстура, а если поножи, то вторая. Мы прибавляем к изначальному пути брони нужное окончание, чтобы в определённом случае грузилась одна текстура, а в другом — вторая.
Последний же метод перезаписывает метод супер-класса и указывает Майнкрафту, что должна грузиться текстура по пути texturePath, который предварительно был отредактирован во втором методе.
Теперь можно запускать игру и убивать мобов в новых блестящих доспехах!
Свой материал для брони
Почти не отличается от создания собственного материала для инструмента.
В главном классе в любом месте, но вне каких-либо методов пишем:
static ArmorMaterial BESTMAT = EnumHelper.addArmorMaterial("BESTMAT", 100, new int[] {3, 8, 6, 3}, 30);
Затем импортируем ArmorMaterial. Теперь разберём:
- BESTMAT — название материала.
- 100 — прочность (железо — 15, алмазы — 33).
- 3 — защита шлема.
- 8 — защита нагрудника.
- 6 — защита штанов.
- 3 — защита ботинок.
- 30 — зачаровываемость.
Вот и все. Теперь можно использовать этот материал для брони, например заменив ArmorMaterial.DIAMOND
на BaseMyBestMod.BESTMAT
Генерация предметов в контейнерах натуральных структур
Итак, вы можете сделать так, чтобы ваш, или любой другой предмет/блок генерировался в сундуках сокровищницы. Для этого в методе preLoad() в главном классе вставьте следующее:
ChestGenHooks.addItem(ChestGenHooks.DUNGEON_CHEST, new WeightedRandomChestContent(new ItemStack(BaseMyBestMod.bestblockever), 1, 10, 3));
Разберемся в параметрах:
(ChestGenHooks.DUNGEON_CHEST)
— ВместоDUNGEON_CHEST
выберете одно из возможных мест генерации в выпадающем списке.(BaseMyBestMod.bestblockever)
— Требуемый блок/предмет. В скобках указывается любая переменная типа Block или Item.(1)
— Минимальное генерируемое количество.(10)
— Максимальное генерируемое количество.(3)
— Шанс генерации.
Атрибуты для моба
Если вы уже проверили моба, то заметили, что он двигается очень медленно. Чтобы исправить это и изменить атрибуты для моба, добавьте в его класс следующий код:
@Override protected void applyEntityAttributes() { super.applyEntityAttributes(); this.getEntityAttribute(SharedMonsterAttributes.maxHealth).setBaseValue(20.0D); this.getEntityAttribute(SharedMonsterAttributes.followRange).setBaseValue(32.0D); this.getEntityAttribute(SharedMonsterAttributes.knockbackResistance).setBaseValue(0.0D); this.getEntityAttribute(SharedMonsterAttributes.movementSpeed).setBaseValue(0.25D); this.getEntityAttribute(SharedMonsterAttributes.attackDamage).setBaseValue(2.0D); }
Разъяснение:
Параметр | Описание |
---|---|
maxHealth | Максимальное здоровье |
followRange | Дистанция, на которой моб будет преследовать кого-либо |
knockbackResistance | Сопротивление к отбрасыванию |
movementSpeed | Скорость движения |
attackDamage | Сила атаки |
Атрибуты установлены.
Интеллект для моба
Теперь моб будет просто двигаться, но ничего не делать. Для того, чтобы добавить ему интеллект создайте в класс моба следующий код:
public boolean isAIEnabled() { return true; }
Теперь в конструктор класса добавьте следующий код:
this.tasks.addTask(1, new EntityAISwimming(this)); this.tasks.addTask(2, new EntityAIAttackOnCollide(this, EntityPlayer.class, 1.2D, false)); this.tasks.addTask(3, new EntityAIWander(this, 1.0D)); this.tasks.addTask(4, new EntityAIWatchClosest(this, EntityPlayer.class, 8.0F)); this.tasks.addTask(5, new EntityAILookIdle(this)); this.targetTasks.addTask(1, new EntityAIHurtByTarget(this, false)); this.targetTasks.addTask(2, new EntityAINearestAttackableTarget(this, EntityPlayer.class, 0, true));
Первый аргумент метода «addTask» — приоритет назначения интеллекта, второй — сам интеллект. В примере используются следующие интеллекты: «Swimming», «AttackOnCollid», «Wander», «WatchClosest», «LookIdle», «HurtByTarget» и «NearestAttackableTarget». Разъяснение:
Интеллект | Описание |
---|---|
Swimming | Может ли существо плавать? |
AttackOnCollid | Базовый тип атаки, который используют зомби и пауки. |
Wander | Существо будет ходить вокруг, когда никого не атакует. |
WatchClosest | Ищет назначенное существо на заданном расстоянии. |
LookIdle | Существо будет осматриваться, просто стоя. |
HurtByTarget | Сделает целью какого-либо моба, который его ударил. |
NearestAttackableTarget | Ищет любое существо, которое подходит по второму параметру. |
Интеллект установлен.
Свой скин при моддинге
Внимание! Этот способ работает только на лицензионной версии Minecraft.
Чтобы при создании мода вы видели свой скин, вместо стандартного скина Steve, нужно прописать 2 строчки в аргументы запуска.
--username=ВашЛогин --password=ВашПароль
После этого, при заходе в игру вы будете видеть свой скин.
Примечания
#1
kapkan_1
-
- Пользователи
- Сообщений: 1
Странник
-
Ник в Minecraft:
kapkan_1 - Откуда: Новосибирск
Написал 11.12.2014 — 14:08
Иногда появляется необходимость изменить код чужих модов: например, я не хочу ставить на свой сервер Orespawn целиком, но хочу добавить только существ из него. Или надо исправить дюп с оружием из Battlegear 2 и шкафами из Bibloicraft.
Поэтому вопрос — как декомпилировать мод и скомпилировать снова?
Я знаю, что это можно сделать с помощью MCP, надо поместить мод и фордж куда-то в jars и запустить decompile. Но что конкретно и куда помещать? В справке по MCP ни слова не сказано об использовании его с forge.
Сразу после первичной установки в MCP/jars появляются assets, библиотеки, файлы versions/1.7.10/1.7.10.jar и versions/1.7.10/1.7.10.json. Если я ставлю в .minecraft фордж через установщик, то он создает версию 1.7.10-Forge10.13.2.1258, в которой лежит стандартный jar игры, а в файле json прописан mainClass: net.minecraft.launchwrapper.Launch и путь к двум дополнительным библиотекам forge:1.7.10-10.13.2.1258 и launchwrapper:1.1.
Если я просто закидываю Forge и launchwrapper в 1.7.10.jar, декомпилирую, открываю через eclipse и выставляю main class net.minecraft.launchwrapper.Launch, то при запуске выдаются сообщения об отсутствии классов библиотеки asm, при добавлении ее вручную в classpath — сообщение об отсутствии класса net.minecraft.client.Minecraft (??).
Как нормально перенести forge в MCP/jars? И как потом добавить в MCP/jars мод для декомпиляции? Это важный для меня вопрос, так как я на своем сервере хотел бы убрать лишнее, ненужное, пофиксить дюпы и прочее.
- Наверх
#2
Cyxapuk
Cyxapuk
-
- Главные модераторы
- Сообщений: 8706
-
Ник в Minecraft:
Meegoo
Написал 12.12.2014 — 14:20
Тык, правда на английском.
И судя по всему в BON надо будет указывать путь к папке с форджем (ForgeGradle [1]), предварительно кинув папку net из сырцов форджа в папку с ForgeGradle. Сырцы должны быть тут C:Users{username}.gradlecachesminecraftnetminecraftforgeforge{version}forgeSrc-{version}-sources.jar
Но лучше этим не заниматься. Если баг, то репорти его разрабу на гитхаб какой-нибудь.
[1] Скачивается src файл форджа, распаковывается, открывается командная строка в этой папке (Shift+ПКМ — Открыть окно команд), пишется gradlew setupDecompWorkspace, потом gradlew eclipse gradlew idea (в зависимости от IDE)
PPS. Тот же battlegear 2 опенсорс. Тык
- Наверх
- Часть 0. Набор для моддинга. Версия Forge 1.16.5 LTS (Long Term Support) (Стабильная версия для моддинга)
- https://files.minecraftforge.net/net/minecraftforge/forge/index_1.16.5.html — выбираем 1.16.5, версию справа где написано «Рекомендовано» скачиваем «Mdk» forge-1.16.5-36.2.20-mdk (MOD DEVELOPMENT KIT)
- https://adoptium.net/index.html?variant=openjdk8&jvmVariant=hotspot — скачиваем Temurin-11 LTS JDK (JAVA DEVELOPMENT KIT)
- https://www.jetbrains.com/idea/download/ — популярный для моддинга IDE (INTEGRAL DEVELOPMENT ENVIRONMENT)
-
Это руководство основано на видео — Tutorials by kaupenjoe
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Часть 1. установка и настройка
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
В установщике IntelliJ IDEA ставим add bin folder to path / add open as project / .java .groovy .kt —-> см картинки
-
Устанавливаем JDK 11, в установщике ставим Set JAVA_HOME variable
- Создаем — E:ModdingMinecraft Modding — в папку распакуем архив forge-1.16.5-36.2.20-mdk. удаляем не нужные блокноты LICENSE.txt README.txt changelog.txt.
- Запускаем IntelliJ IDEA выбираем открыть проект E:ModdingMinecraft Modding — папка где лежит наш build.gradle
- Ждем пока все загрузится
после того как все загрузится должно быть примерно так
Сразу жмем на шестеренку слева > Tree appearance > снимаем галочки flatten packages + compact middle packages. все настройка завершена.
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Часть 2 . создаем супер-мод без знания языка !
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
в окне build.gradle на 15 строчке пишем нашу версию мода
version = '1.0'
version = '1.16.5-0.1'
в окне build.gradle на 16 строчке пишем автора мода и название мода.
(без пробелов, без хитростей и т.д.)
group = 'com.yourname.modid'
group = 'com.observer.supermod'
в окне build.gradle на 17 строчке пишем название мода
archivesBaseName = 'supermod'
а теперь нам надо вызвать заменитель строк CTRL + R. появилось меню с лупой и 2мя строчками, в первую examplemod во вторую supermod
в окне build.gradle на 34 строчке
mappings channel: 'official', version: '1.16.5'
^ эту строчку стираем и вставляем строчку 34 :
mappings channel: 'snapshot', version: '20210309-1.16.5'
все. ничего не закрываем, оставь окно build.gradle.
и переходим по папкам:
src > main > java > com > example > examplemod > ExampleMod
открываем ExampleMod переходим в вкладку ExampleMod.java
в окне ExampleMod.java на 1 строчке пишем
package com.example.examplemod;
package com.observer.supermod;
после этого наша строчка 1 выделится красным, жмем по строчке ПКМ > show context actions > move to package ‘com.observer.supermod’
после этого появится наша папка слева,
удали ту папку которая com > example.
переходим по нашим папкам com > observer > supermod > ExampleMod
нажми на ExampleMod и нажми ПКМ > Refactor > Rename и пишем новое название SuperMod.
на 22 строчке видим это
@Mod("examplemod")
сразу переходим на 24 строчку и видим знак {
после знака { жми ENTER
public static final String MOD_ID = "supermod";
^ пишем вот это и после этого можно поменять наш @Mod(«examplemod») на 22 строчки вот так как на картинке
если написать @Mod(supermod.MOD_ID) выдаст ошибку потому что название не правильное supermod, а надо точно так же как называется наш файл — SuperMod.
правильно
@Mod(SuperMod.MOD_ID)
неправильно
@Mod("SuperMod".MOD_ID)
неправильно
@Mod("supermod.MOD_ID")
все. ничего не закрываем и теперь переходим в папку resources > META INF > mods.toml открываем его
в окне mods.toml находим строчку 18 и пишем
modId="supermod" #mandatory
в окне mods.toml находим строчку 24 и пишем
displayName="Super Mod" #mandatory
ВСЕ.
Теперь надо сохранить все эти изменение
- сначала нажми на маленький призрак по середине, ждем.
- заходим в правом верхнем углу призрака с надписем Gradle. открываем Tasks > forgegradle runs > genIntellijRuns. ждем.
3. в самом Gradle открываем Tasks > forgegradle runs > genIntellijRuns. ждем.
После этого переходим в окно SuperMod.java и видим в строчке 54. его надо стереть
LOGGER.info("Got game settings {}", event.getMinecraftSupplier().get().options);
^ стираем строчку 54.
Далее
Ищем следующие строчки 61 или 64, найдите вот это:
На этом месте осторожно удаляем и должно быть так:
ВСЕ ! ФУХ.
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Часть 3 . Проверяем наш мод
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
теперь мы должны проверить работает ли мод на клиенте и сервере, это можно сделать так:
- заходим в правом верхнем углу призрака с надписем Gradle и переходим по Tasks > forgegradle runs > Run Client
- RunClient — имитация майнкрафта
- RunServer — запуск сервера
- если мод запустился без ошибок и на сервере и на клиенте — он готов.
- пора выпустить мод — Gradle > Tasks > build > build
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Если дошли до конца — тебе очень повезло, можно начинать изучать JAVA.
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Что дальше, как научиться делать свой мод?
Научиться программировать может любой школьник — даже если вам 11 лет и вы двоечник!
Список основных вещей, которые нужно знать перед попыткой моддинга:
- Базовое знание Java: переменные, методы, классы (variables, methods, classes… )
- Концепции объектно-ориентированного программирования (ООП): extends, implements, polymorphism…
- Общие шаблоны программирования: factories, registries, consumers
- Основы функционального программирования (FP): lambdas, effective final things…
- Понимание основ: уметь читать и писать код, сделанный вами и другими — Основы очистки: умение искать что-то в ванильном коде —
- Основы английского: умение читать и понимать, что говорится в руководствах, документации и т. Д.
Финнский курс MOOC по Java — любой сможет научиться — главное мотивация……отличная возможность для всех, кто хочет изучить java https://java-programming.mooc.fi/ <——
Настройка среды обучение TMC java mooc.
TMCBeans Java MOOC — учитель по кодингу для чайников. В клубе будет все необходимое, помощь, настройка, вопросы, переходим дальше, в раздел (Основная информация)
Обновлено: 09.02.2023
Ну наконец-то, еще одна фишка, достояная внимания!
Закотите рукава и приготовтесь к какому-то сумашествию, у нас теперь есть конфиг с гуи!
Это работает как в 1.7.2 (Build 1147), так и в 1.7.10 (Build 1146).
С его помощью вы сможете настроить свой мод прям внутри Minecraft!
Теперь не нужно копаться в текстовых файлах!
Это займет достаточно много времени на создание, но поверьте мне, это не трудно.
Что же это такое?
Чтобы получить представление о том, что мы собираемся делать, запустите среду разработки(Eclipse или интеллидж) с последней версией фордж, щелкните на кнопку Mods в главном меню, затем выберите Forge Mod Loader и нажмите кнопку Config — это своего рода конфигурация GUI, которую мы собираемся создавать сегодня.
Вы можете получить более продвинутые (открыть конфигурационный графический интерфейс для MinecraftForge, например), но я не собираюсь здесь это описывать, чтобы узреть более сложные вещи — вы можете просматривать исходные файлы сами.
Конфиг файл:
Я не буду рассказывать, как работает обычный конфиг, потому что вы и так это знаете =)
Просто убедитесь, что у вас есть файл конфигурации и убедитесь, что он инициализируется во время стадии PreInit.
Существует один нюанс:
Вы должны иметь публичную статическую переменную своего конфига.
Вот так должен выглядеть ваш код:
Как вы можете видеть, у нас есть три значения (Integer, String и Boolean), которые мы будем загружать с нашего конфигурационного файла.
Вы можете заметить, что я поместил загрузочные данные конфигурации в отдельный метод.
Это сделано для того, чтобы не писать много раз одно и тоже, так как там это понадобится в будущем.
Обнаружения при изменении конфига:
Итак, как мы узнаем, когда наши данные конфигурации были изменены в игре?
С помощью ивентов, конечно же!
Сначала нужно зарегистрировать наш ивент, это делается так:
FMLCommonHandler.instance().bus().register(instance);
Далее напишем сам ивент:
Здесь мы просто проверяем, что если изменения в конфиге произошли в нашем моде — то синхронизировать их.
Обработчик GUI:
Теперь нам нужно создать обработчик GUI.
Это то, что отвечает за открытие нашего конфиг GUI, это так же легко настроить.
Также нужно измененить вашу @Mod аннотацию, что мы сделаем потом.
Создайте новый класс и реализуйте(implements) в нем IModGuiFactory интерфейс:
Единственный метод, о котором мы должны волноваться — это mainConfigGuiClass().
Остальное на не нужно, так как оно еще не доделано и не несет никакого смысла.
Метод mainConfigGuiClass() возвращает класс, который мы собираемся использовать для нашего основного конфига GUI(достаточно просто, не так ли?).
Теперь, когда мы сделали это, перейдите к скоей @Mod аннотации и добавьте туда параметр:
Создаем конфиг GUI:
Пришло время для создания самого гуи!
Предупреждение : Это будет очень легко! =)
Наш класс конфиг GUI нужно только наследовать от класса GuiConfig, и мы просто передадим в конструктор некоторые вещи, чтобы он знал, из какой категории брать информацию (примечание: Если вы хотите использовать несколько категорий, смотрите реализацию класса Forge GUI выше):
После того как вы сделали это, компилируйте, запускайте и изменять конфигурацию вашего мода сколько душе угодно! ^-^
Содержание
Обновление Forge [ ]
Чтобы обновить версию Forge, на который вы создаёте моды, необязательно всё перекачивать.
Достаточно просто изменить build.gradle Так что если хотите обновить Forge откройте его любым редактором и найдите строчку
Там будет написана версия Forge, которая у вас сейчас, соответственно вам нужно всего лишь изменить значение на новое. Измените его на версию, до которой хотите обновить Forge (например на 1.7.2-10.12.0.1012) и сохраните файл. Далее запустите gradlew.bat с командой eclipse (то есть запустить bat-файл с кодом gradlew.bat eclipse ) и после завершения его работы ваша версия Forge обновлена!
Дроп определённого предмета при разрушении блока [ ]
Всё очень просто. В конец класса созданного вами блока (перед последней фигурной скобкой) вставьте это:
То есть теперь при разрушении вашего блока из него выпадет алмаз. Вы можете написать, чтоб выпадало что угодно. Просто вместо return Items.diamond; напишите « return Item.getItemFromBlock(Blocks.); » (для блоков) или « return Items.; » (для предметов), а после ввода вами точки выпадет список возможных предметов или блоков.
Если хотите, чтоб выпадал не один предмет, а несколько, просто вставьте сразу после предыдущих строк
Тогда при разрушении выпадет 20 выбранных вами предметов или блоков. Всё очень легко и просто!
Предмет [ ]
Основное [ ]
Класс предмета [ ]
Для создания предмета создадим класс с именем TutorialItem:
Для регистрации предмета создадим класс ItemsRegister:
В классе CommonProxy, в методе preInit() добавляем строку ItemsRegister.register(); , а в методе init() ItemsRegister.registerRender(); .
Модель [ ]
Теперь у нас есть предмет, однако если мы запустим игру и выдадим себе его, то он будет выглядеть как куб с фиолетовыми и черными клетками. Это говорит о том, что игра не нашла модель предмета. Для исправления этой проблемы создаём в папке src/main/resources/assets/имя_мода/models/item файл с расширением .json и пишем в нём следующий текст:
Примечание: название файла модели должно совпадать с RegistryName предмета
Второй вариант используется для моделей инструментов и оружия. Однако теперь, когда у нас есть модель для предмета, осталось добавить текстуру по пути src/main/resources/assets/имя_мода/textures/items дав ему имя, идентичное указанному в файле модели.
Свой материал для инструмента [ ]
Допустим вы хотите, чтобы ваш инструмент обладал свойствами не железной/алмазной кирок из майнкрафта, а собственными.
Тогда где-нибудь(вы можете где угодно написать эту строку, главное, чтоб можно было вызвать.), например в главном классе вне каких либо методов (то есть можно перед последней фигурной скобкой) напишите:
Не забудьте про импорт. Давайте разберемся: static означает, что переменная NEWMAT типа ToolMaterial доступна из других классов. Затем приравнивается значению, которое и даст вашей кирке определённые свойства. Теперь об аргументах, перечисленных через запятую:
Теперь можно придать какому-нибудь инструменту эти свойства, для этого в инструменте (например в нашей кирке) измените super(ToolMaterial.EMERALD); на super(BaseMyBestMod.NEWMAT); В таком случае вы отправляете в супер-класс инструмента информацию о том, что свойства описаны переменной NEWMAT типа ToolMaterial, которая описана в классе BaseMyBestMod (или любой другой класс, где она написана).
Вот и всё, свойства инструмента изменены.
Генерация предметов в контейнерах натуральных структур [ ]
Итак, вы можете сделать так, чтобы ваш, или любой другой предмет/блок генерировался в сундуках сокровищницы. Для этого в методе preLoad() в главном классе вставьте следующее:
Разберемся в параметрах:
Установка Forge Gradle [ ]
Для начала работы, создайте папку с названием вашей модификации избегая кириллицы. Если ваш мод имеет название из двух слов, желательно называть папку без пробелов, к примеру Tutorial-Mod или TutorialMod. Далее перейдите на официальный сайт Forge и скачайте версию с пометкой MDK (Modder Development Kit). Из загруженного архива извлеките папку gradle и файл build.gradle в папку модификации, остальные файлы сохранены для совместимости и/или дополнительных функций и для начала не понадобятся. Далее импортируйте в Eclipse проект как Existing Gradle Project указав папку модификации. Затем в колонке Gradle tasks поочерёдно выполните setupDecompWorkspace из набора forgegradle и eclipse из набора ide (Для пользователей IntelliJ IDEA task genIntelliJRuns), и обновите среду (ПКМ по проекту и Refresh). Теперь можно удалить два файла с расширением .launch, так как для тестовых запусков мы будем использовать задачи Gradle. Для настройки папок ресурсов создайте в папке проекта два каталога: srcmainjava и srcmainresources после чего выделите их и по ПКМ найдите пункт Build Patch и нажмите Us as source folder.
Не забудьте! Далее, все связанное с Java кодом мы будем делать в каталоге srcmainjava, а остальное в srcmainresources.
Примечание! Для установки потребуется компьютер с минимальным объёмом ОЗУ от 4Гб! Если у вас недостаточно ОЗУ, добавьте необходимый объём из файла подкачки, но такой метод работает лишь на 64-битных системах.
Атрибуты для моба [ ]
Параметр | Описание |
---|---|
maxHealth | Максимальное здоровье |
followRange | Дистанция, на которой моб будет преследовать кого-либо |
knockbackResistance | Сопротивление к отбрасыванию |
movementSpeed | Скорость движения |
attackDamage | Сила атаки |
Собственная вкладка в Творческом режиме [ ]
Для этого добавьте такой код в тело класса:
«ModID» заменяем на любое число. Рекомендую ID больше 11 (12 ID сразу на следующей странице творческого инвентаря).
Потом создайте класс TutorialTab. Если всё правильно, то ваш класс будет иметь extends CreativeTabs до первой фигурной скобки. Теперь добавьте этот метод в ново-созданный класс:
Для того что бы добавить что либо из вашего мода в собственную вкладку пишем:
Интеллект для моба [ ]
Теперь моб будет просто двигаться, но ничего не делать. Для того, чтобы добавить ему интеллект создайте в класс моба следующий код:
Теперь в конструктор класса добавьте следующий код:
Интеллект | Описание |
---|---|
Swimming | Может ли существо плавать? |
AttackOnCollid | Базовый тип атаки, который используют зомби и пауки. |
Wander | Существо будет ходить вокруг, когда никого не атакует. |
WatchClosest | Ищет назначенное существо на заданном расстоянии. |
LookIdle | Существо будет осматриваться, просто стоя. |
HurtByTarget | Сделает целью какого-либо моба, который его ударил. |
NearestAttackableTarget | Ищет любое существо, которое подходит по второму параметру. |
Создание брони [ ]
Создание брони немного отличается от создания обычных предметов, точнее имеет свои особенности. Приступим.
Мы не будем создавать для каждого предмета свой отдельный класс, а создадим один универсальный, который опишет сразу шлем, нагрудник, штаны и ботинки. Начнём с регистрации переменных.
Шлем, нагрудник, штаны и ботинки соответственно. Теперь описываем эти переменные с помощью универсального класса. Естественно внутри метода preLoad()
С главным классом работа окончена.
Теперь щелкаем по одной из ошибок и создаём новый класс BestArmor. Теперь «продолжаем» класс ItemArmor, то есть пишем extends ItemArmor после названия класса. Теперь в тело класса вставляем следующее:
Что ж, давайте разбираться.
Первая переменная, просто обозначает начало пути к текстуре брони. Все нужные текстуры можно спокойно извлечь из майнкрафта и отредактировать по желанию. Вот мои отредактированные текстуры:
Давайте дальше разбираться с кодом: следующим идёт метод BestArmor(), в который мы посылаем из главного класса параметры id и armorType. Напомню: от armorType зависит, какая это часть брони. В нём мы посылаем информацию о том, какой материал брони. Я написал, что броня будет аналогична алмазной, но можно создать свой материал для брони и вписать его. Далее мы настраиваем вкладку в креативе. Потом мы ограничиваем максимальное количество данного предмета в одной стопке до одного, чтобы броня не «стакалась». В конце концов мы вызываем созданный нами метод setTextureName()
Последний же метод перезаписывает метод супер-класса и указывает Майнкрафту, что должна грузиться текстура по пути texturePath, который предварительно был отредактирован во втором методе.
Теперь можно запускать игру и убивать мобов в новых блестящих доспехах!
Создание модификации [ ]
build.gradle [ ]
Если вы используете IntelliJ IDEA, то в конец build.gradle дополнительно добавьте это:
pack.mcmeta [ ]
Этот файл нужен для корректной работы игры с ресурсами модификации, такими как локализации, модели, рецепты, таблицы добычи и так далее. Заполняется следующим образом:
mcmod.info [ ]
Этот файл задаёт более подробную информацию о модификации и заполняется следующим образом:
Класс модификации [ ]
Данный класс создается в патче и является главным файлом, благодаря которому игра видит нашу модификацию. Заполняется следующим образом:
Класс блока [ ]
Для создания блока создайте класс с названием блока в стиле TutorialBlock в пакете патч.blocks и заполните его следующим образом:
Примечание регистрируемое имя и ключ локализации указывать только в нижнем регистре, используя при надобности нижнее подчёркивание!
Модель [ ]
Модель (которую, например, можно создать здесь) решает то, как наш блок будет выглядеть. Важно знать, что для блоков используется две модели. Одна задает вид блока, поставленного в мире, а вторая, его иконку в инвентаре. Это дает нам возможность сделать блоку отдельную иконку для инвентаря. Сами же модели для блока подключаются к нему как состояния, normal для блока в мире и inventory для его иконки в инвентаре. Поэтому для начала создадим файл идентификатор_блока.json в пакете assets.идентификатор_мода.blockstates, который и подключит наши модели.
Теперь подключим модели. Для этого создайте файл регистрируемое_имя.json в пакете assets.идентификатор_мода.models.block со следующим содержимым:
Теперь зададим иконку блока в инвентаре в пакете assets.идентификатор_модификации.models.block с именем идентификатор_блока.json со следующим содержанием:
Наш блок имеет текстуры и свойства, но его нужно зарегистрировать в игре. Создадим в пакете домен.автор.мод.init класс BlocksInit :
Теперь в главном классе в методе preInit добавьте инструкцию BlocksInit.registerBlocks а в методе init BlocksInit.registerBlocksRender .
Пошаговая инструкция по установке модов:
Шаг 1.
Узнаем какая у вас версия игры, если не знаете, запустите игру и слева снизу вы увидите версию.
Шаг 2.
У меня версия 1.12.2, 98% модов для майнкрафта используют Forge, остальные для Liteloader.
Например на версиях 1.14.4, 1.15.2 и новее, появился новый «загрузчик модов» — Fabric, он уже достаточно популярный и для него много модов, но Forge по прежнему самый популярный.
И то и то позволяет запускать моды, некоторые совместимы, т.е вы сможете одновременно установить и то и другое (как установить фордж и лайтлоадер вместе), если файл мода заканчивается на .jar или .zip то это мод для Forge,
если мод заканчивается на .litemod, то это мод для лайтлоадера, таких модов очень мало и часто есть аналоги или версии данного мода для форджа.
Более различий нет, одинаково устанавливаются, в одну и ту же папку складываются моды.
Fabric на данный момент не может работать вместе с Minecraft Forge, вам придется выбрать либо одно либо другое.
Найдя желаемый мод посмотрите в раздел установки, там указана для какого загрузчика данный мод, так же эта информация может быть указана у конкретного файла, подписано «для Forge» или «для Fabric».
Перейдите на страницу и скачайте фордже для вашей версии игры, либо Fabric.
Если у вас Windows, то скачайте “ exe — установщик“, если у вас другая операционка, то качайте вторую версию.
Запустите скачанный файл и нажмите OK.
Шаг 3.
Откройте (перезапустите) ваш лаунчер майнкрафт (то, что запускает игру), вы должны выбрать версию игры с припиской Forge, либо Fabric, она появится в списке доступных версий.
Пример из лицензионного лаунчера, и популярного пиратского.
Выберите и запустите данную версию игры, если игра запустилась, закрываем ее.
Шаг 4.
Находим и скачиваем желаемый мод для майнкрафт.
Вам необходимо скачать мод для точно такой же версии игры, т.е игра версии 1.12.2, то мод тоже для 1.12.2.
Внимательно посмотрите раздел установки мода , а так же прочие указания, часто моды требуют дополнительные моды которые так же нужно установить.
Шаг 5.
Вам необходимо перейти в папку с игрой, она находится тут:
C:UsersВаш_ПользовательAppDataRoaming.minecraft
Как найти папку Appdаta
Внутри папки .minecraft вам нужно найти папку mods, если ее нет, создайте ее сами.
Скопируйте файл мода в данную папку и можете запускать игру — версия с припиской Forge.
Проблема 2.
После запуска игра сообщает, что требуется другая версия Forge
Сам фордж часто обновляется, вам необходимо скачать самую последнюю версию и установить ее. (можно поверх уже установленной, главное в списке версий выбирайте более новую версию)
Здесь представлены основные уроки по созданию модификаций с помощью Forge/1.7+. Остальную информацию по данной теме смотрите в соответствующей статье.
Свой материал для брони [ ]
Почти не отличается от создания собственного материала для инструмента.
В главном классе в любом месте, но вне каких-либо методов пишем:
Затем импортируем ArmorMaterial. Теперь разберём:
Вот и все. Теперь можно использовать этот материал для брони, например заменив ArmorMaterial.DIAMOND на BaseMyBestMod.BESTMAT
Обновление ForgeGradle [ ]
Forge отделён от ForgeGradle, поэтому если вы попытаетесь обновиться на версию Forge, которая использует более новой ForgeGradle, вы получите ошибки. Вот таблица версия Forge, и какие версии ForgeGradle он использует.
ForgeGradle | Forge |
---|---|
— | 959<, 965 |
1.0 | 960-964 |
1.1 | 967-1047 |
1.2 | 1048+ |
Удалите папку .gradle, которая находится в папке, куда вы разархивировали Forge. Теперь, откройте файл build.gradle (который находится там же). Найдите такую строку:
В 1.x-SNAPSHOT, поменяйте 1.x на нужную версию ForgeGradle. Сохраните файл и откройте командную строку. Повторно введите команды, которые вы использовали при установке Forge. ForgeGradle обновит все нужные файлы.
Разносторонняя текстура блока [ ]
Я буду использовать следующие текстуры:
Для этого, добавьте такой код в тело класса:
И такой после конструктора класса:
Теперь в папку assets/ID мода/resources/textures/blocks/ добавьте файлы с таким именем: <То, что вы указали в скобках в конструкторе класса, в методе this.setBlockTextureName()>_<код стороны блока>
И ещё такой код:
В игре блок будет выглядеть так:
Содержание
Свой скин при моддинге [ ]
Внимание! Этот способ работает только на лицензионной версии Minecraft.
Чтобы при создании мода вы видели свой скин, вместо стандартного скина Steve, нужно прописать 2 строчки в аргументы запуска.
В этой статье описывается создание модификаций на основе Minecraft Forge с использованием Eclipse для версий Minecraft с 1.12.
Локализация названий в игре [ ]
Теперь скопируйте файл, и назовите копию ru_RU.lang (собственно русский перевод). Внутри него измените название на русское, например
Теперь оба этих файла можете перетащить в заранее созданную assets.mybestmod.lang При переносе выберите Copy files.
Чтобы локализировать вкладки в режиме творчество добавьте такой код:
Вот и всё! Локализация завершена, теперь в игре будут отображаться выбранные вами названия.
Подобных названий можно вписывать сколько угодно, главное в столбик.
Читайте также:
- Как проверить работает ли мод в майнкрафте
- Как купить грузовик в euro truck simulator 2 с модами
- Как установить моды на football manager 2021
- Как установить мод на гта сан андреас на спавн машин
- Forager моды как установить