-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathModBlocks.java
More file actions
67 lines (51 loc) · 2.3 KB
/
ModBlocks.java
File metadata and controls
67 lines (51 loc) · 2.3 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
package com.box3lab.register;
import java.util.HashMap;
import java.util.Map;
import com.box3lab.Box3;
import com.box3lab.register.core.BlockRegistrar;
import com.box3lab.register.creative.CreativeTabRegistrar;
import com.box3lab.register.sound.CategorySoundTypes;
import com.box3lab.register.voxel.VoxelBlockFactories;
import com.box3lab.register.voxel.VoxelBlockPropertiesFactory;
import com.box3lab.register.voxel.VoxelLightLevelMapper;
import com.box3lab.util.BlockIndexData;
import com.box3lab.util.BlockIndexUtil;
import net.minecraft.world.level.block.Block;
import net.minecraft.world.level.block.SoundType;
public class ModBlocks {
public static final Map<String, Block> BLOCKS = new HashMap<>();
public static void initialize() {
BlockIndexData data = BlockIndexData.get();
for (int i = 0; i < data.ids.length; i++) {
int id = data.ids[i];
if (id == 0) {
continue;
}
if (BlockIndexUtil.isFluid(id)) {
continue;
}
String voxelName = data.names[i];
String texturePart = voxelName.toLowerCase(java.util.Locale.ROOT);
String category = data.categoryByName.getOrDefault(texturePart, "");
SoundType soundType = CategorySoundTypes.soundTypeForCategory(category);
int emissive = BlockIndexUtil.blockEmissiveLight(id);
final int lightLevel = VoxelLightLevelMapper.lightLevelFromEmissivePacked(emissive);
boolean solid = BlockIndexUtil.isSolid(id);
boolean transparent = !solid;
int index = data.indexById.get(id);
float hardness = data.blockHardness[index];
float resistance = data.blockResistance[index];
float friction = data.blockFriction[index];
var props = VoxelBlockPropertiesFactory.create(solid, soundType, lightLevel, hardness, resistance,
friction);
Block block = BlockRegistrar.register(
Box3.MOD_ID,
texturePart,
VoxelBlockFactories.factoryFor(texturePart, transparent),
props,
true);
BLOCKS.put(texturePart, block);
}
CreativeTabRegistrar.registerCreativeTabs(Box3.MOD_ID, BLOCKS, data);
}
}