Voxelers / mcthings

A Python framework for creating 3D scenes in Minecraft and Minetest
Apache License 2.0
59 stars 11 forks source link

Research resources pack in Minecraft #133

Closed acs closed 4 years ago

acs commented 4 years ago

We have already seen in https://github.com/Voxelers/mcthings/issues/101#issuecomment-659169206 howto create textures in Minecraft. Let's focus in this ticket in the specific possibilities of the textures in Minecraft, howto create and manage and install them, the best textures available out there and the relation with shaders for example.

Also, let's learn howto create new blocks and animations.

It is important to understand howto all of this could be done in Java and Bedrock editions.

acs commented 4 years ago

Textures

We have already changed the creeper one. It is just a matter of extracting the default textures and modify the one we want to modify. For example. in 1.16.1, the textures are:

[1.16.1]$ jar tvf 1.16.1.jar | grep textures | wc -l
2118

The graphic design work is huge. For example, for the creeper:

[1.16.1]$ jar tvf 1.16.1.jar | grep textures | grep creeper
  1068 Wed Jun 24 10:31:12 CEST 2020 assets/minecraft/textures/entity/banner/creeper.png
  1948 Wed Jun 24 10:31:12 CEST 2020 assets/minecraft/textures/entity/creeper/creeper_armor.png
  2869 Wed Jun 24 10:31:12 CEST 2020 assets/minecraft/textures/entity/creeper/creeper.png
   181 Wed Jun 24 10:31:12 CEST 2020 assets/minecraft/textures/entity/shield/creeper.png
   192 Wed Jun 24 10:31:12 CEST 2020 assets/minecraft/textures/item/creeper_banner_pattern.png

And for the bats:

[1.16.1]$ jar tvf 1.16.1.jar | grep textures | grep bat
   768 Wed Jun 24 10:31:12 CEST 2020 assets/minecraft/textures/entity/bat.png

The new 1.16.1 creatures, like the piglin follow the same approach: https://minecraft.gamepedia.com/Piglin

[1.16.1]$ jar tvf 1.16.1.jar | grep textures | grep piglin
   960 Wed Jun 24 10:31:12 CEST 2020 assets/minecraft/textures/models/armor/piglin_leather_layer_1.png
   275 Wed Jun 24 10:31:12 CEST 2020 assets/minecraft/textures/models/armor/piglin_leather_layer_1_overlay.png
  1549 Wed Jun 24 10:31:12 CEST 2020 assets/minecraft/textures/entity/piglin/zombified_piglin.png
  1128 Wed Jun 24 10:31:12 CEST 2020 assets/minecraft/textures/entity/piglin/piglin.png
   139 Wed Jun 24 10:31:12 CEST 2020 assets/minecraft/textures/entity/banner/piglin.png
   121 Wed Jun 24 10:31:12 CEST 2020 assets/minecraft/textures/entity/shield/piglin.png
   192 Wed Jun 24 10:31:12 CEST 2020 assets/minecraft/textures/item/piglin_banner_pattern.png

It depends in the richness of the creature the amount of textures associated with it.

Should we invest more time in textures? Once we have understood how to modify them my opinion is that we should not invest more time now unless a concrete use case appear.

acs commented 4 years ago

Blocks

Minecraft is al about blocks. And the possibility of creating new ones is interesting. For example, the lucky blocks is something that have success. But it seems it is a combination between the ability to create new blocks and some modding code: http://www.9minecraft.net/lucky-block-mod/

Let's explore a bit this new block feature in resource packs.

It seems that we just need to use this 3D editor (https://blockbench.net/downloads/) and decorate our block and save it to the correct place.

Screenshot from 2020-08-12 08-07-42

The tutorial has worked as expected: https://minecraft.gamepedia.com/Tutorials/Creating_a_resource_pack#Modeling_Blocks.2FItems

Screenshot from 2020-08-12 08-28-54

So for creating new blocks, it is clear that this editor is the way to go. Time to think about it and MagicaVoxel to understand the relationship and implications. Blockbench UI is a kind of simplified Blender (at least in my mind).

I will try now to create a totally new block and see it if appears in the inventory of Minecraft.

Let's call it ladder2. I have created the same structure but with this new name and it does not appear in Minecraft.

[minecraft]$ tree
.
├── blockstates
│   ├── ladder2.json
│   └── ladder.json
├── models
│   ├── block
│   │   ├── ladder2.json
│   │   └── ladder.json
│   └── item
│       ├── ladder2.json
│       └── ladder.json
└── textures
    ├── block
    │   ├── ladder2.png
    │   └── ladder.png
    └── entity
        ├── creeper
        │   └── creeper.png
        └── wither
            ├── wither_armor.png
            ├── wither_invulnerable.png
            └── wither.png

9 directories, 12 files

So it see,s that you can redefine the existing blocks but not to create new ones with the resource pack approach.

Reading a bit more, it seems that you can add new models: https://minecraft.gamepedia.com/Tutorials/Changing_Minecraft_entity_models At least for entities. But it is a feature specific of the Bedrock edition.

acs commented 4 years ago

Animations

In the Java Edition, the animation is done using frame based: https://minecraft.gamepedia.com/Resource_Pack#Animation

In the Bedrock Edition uses bones: https://minecraft.gamepedia.com/Tutorials/Changing_Minecraft_entity_models#Bones_and_animation

So if we want to animate blocks or entities in Java Edition, is is just a matter of creating the frames to implement the animation and to program correctly the frame rate.

acs commented 4 years ago

Ok, enough research for this features in Minecraft. Closing this issue which completes https://github.com/Voxelers/mcthings/issues/101#issuecomment-659169206