Skip to content

Commit 1249248

Browse files
committed
add rubber and treated wood drawers (code)
1 parent 58d14e5 commit 1249248

File tree

6 files changed

+402
-1
lines changed

6 files changed

+402
-1
lines changed
Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
package com.gregtechceu.gtstoragedrawers;
2+
3+
import com.gregtechceu.gtceu.GTCEu;
4+
5+
import net.minecraft.resources.ResourceLocation;
6+
import net.minecraft.world.item.Item;
7+
import net.minecraft.world.level.block.Block;
8+
import net.minecraftforge.registries.DeferredRegister;
9+
10+
import com.jaquadro.minecraft.storagedrawers.core.ModBlockVariants;
11+
import com.jaquadro.minecraft.storagedrawers.core.ModBlockVariants.VariantData;
12+
import lombok.Getter;
13+
14+
public enum DrawerTypes {
15+
16+
RUBBER("rubber", "rubber_planks", "rubber_slab"),
17+
TREATED("treated", "treated_wood_planks", "treated_wood_slab"),
18+
19+
;
20+
21+
@Getter
22+
private final String name;
23+
@Getter
24+
private final ResourceLocation plankResource;
25+
@Getter
26+
private final ResourceLocation slabResource;
27+
@Getter
28+
private final VariantData data;
29+
30+
DrawerTypes(String name, String plankName, String slabName) {
31+
this.name = name;
32+
this.plankResource = new ResourceLocation(GTCEu.MOD_ID, plankName);
33+
this.slabResource = new ResourceLocation(GTCEu.MOD_ID, slabName);
34+
this.data = new VariantData(new ResourceLocation(GregTechStorageDrawers.MODID, GTCEu.MOD_ID + "_" + name));
35+
}
36+
37+
public String getTrimModelName() {
38+
return "block/" + GTCEu.MOD_ID + "_" + name + "_trim";
39+
}
40+
41+
public String getTrimItemName() {
42+
return "item/" + GTCEu.MOD_ID + "_" + name + "_trim";
43+
}
44+
45+
public String getDrawerModelName(int size, boolean half) {
46+
String type = half ? "half" : "full";
47+
return "block/" + GTCEu.MOD_ID + "_" + name + "_" + type + "_drawers_" + size;
48+
}
49+
50+
public String getItemModelName(int size, boolean half) {
51+
String type = half ? "half" : "full";
52+
return "item/" + GTCEu.MOD_ID + "_" + name + "_" + type + "_drawers_" + size;
53+
}
54+
55+
public String getTextureName(String textureVariant) {
56+
return "block/" + GTCEu.MOD_ID + "/drawers_" + name + "_" + textureVariant;
57+
}
58+
59+
public void registerBlocks(DeferredRegister<Block> register) {
60+
ModBlockVariants.registerVariant(register, data);
61+
}
62+
63+
public void registerItems(DeferredRegister<Item> register) {
64+
ModBlockVariants.registerVariantItem(register, data);
65+
}
66+
}

src/main/java/com/gregtechceu/gtstoragedrawers/GregTechStorageDrawers.java

Lines changed: 42 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,20 @@
11
package com.gregtechceu.gtstoragedrawers;
22

3+
import net.minecraft.core.registries.Registries;
4+
import net.minecraft.network.chat.Component;
5+
import net.minecraft.resources.ResourceKey;
6+
import net.minecraft.resources.ResourceLocation;
7+
import net.minecraft.world.item.CreativeModeTab;
8+
import net.minecraft.world.item.Item;
9+
import net.minecraft.world.item.ItemStack;
10+
import net.minecraft.world.level.block.Block;
11+
import net.minecraftforge.eventbus.api.IEventBus;
312
import net.minecraftforge.fml.common.Mod;
413
import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext;
14+
import net.minecraftforge.registries.DeferredRegister;
15+
import net.minecraftforge.registries.ForgeRegistries;
16+
import net.minecraftforge.registries.RegisterEvent;
17+
518
import org.slf4j.Logger;
619
import org.slf4j.LoggerFactory;
720

@@ -12,5 +25,33 @@ public class GregTechStorageDrawers {
1225
public static final String MOD_NAME = "GregTech Storage Drawers";
1326
public static final Logger LOGGER = LoggerFactory.getLogger(MOD_NAME);
1427

15-
public GregTechStorageDrawers(FMLJavaModLoadingContext ctx) {}
28+
public static final DeferredRegister<Block> BLOCK_REGISTER = DeferredRegister.create(ForgeRegistries.BLOCKS, MODID);
29+
public static final DeferredRegister<Item> ITEM_REGISTER = DeferredRegister.create(ForgeRegistries.ITEMS, MODID);
30+
31+
private static final ResourceKey<CreativeModeTab> TAB = ResourceKey.create(
32+
Registries.CREATIVE_MODE_TAB,
33+
new ResourceLocation(MODID, MODID));
34+
35+
public GregTechStorageDrawers(FMLJavaModLoadingContext ctx) {
36+
IEventBus bus = ctx.getModEventBus();
37+
38+
for (DrawerTypes type : DrawerTypes.values()) {
39+
type.registerBlocks(BLOCK_REGISTER);
40+
type.registerItems(ITEM_REGISTER);
41+
}
42+
43+
BLOCK_REGISTER.register(bus);
44+
ITEM_REGISTER.register(bus);
45+
46+
bus.addListener(GregTechStorageDrawers::registerCreativeTab);
47+
}
48+
49+
public static void registerCreativeTab(RegisterEvent event) {
50+
event.register(Registries.CREATIVE_MODE_TAB, helper -> helper.register(TAB, CreativeModeTab.builder()
51+
.icon(() -> new ItemStack(DrawerTypes.RUBBER.getData().blockFull2.get())) // todo verify
52+
.title(Component.translatable("itemGroup.gtstoragedrawers"))
53+
.displayItems((params, output) -> ITEM_REGISTER.getEntries()
54+
.forEach(reg -> output.accept(new ItemStack(reg.get()))))
55+
.build()));
56+
}
1657
}
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
package com.gregtechceu.gtstoragedrawers.data;
2+
3+
import com.gregtechceu.gtstoragedrawers.GregTechStorageDrawers;
4+
5+
import net.minecraft.data.DataGenerator;
6+
import net.minecraft.data.PackOutput;
7+
import net.minecraftforge.common.data.ExistingFileHelper;
8+
import net.minecraftforge.data.event.GatherDataEvent;
9+
import net.minecraftforge.eventbus.api.SubscribeEvent;
10+
import net.minecraftforge.fml.common.Mod;
11+
12+
import java.io.IOException;
13+
14+
@Mod.EventBusSubscriber(modid = GregTechStorageDrawers.MODID, bus = Mod.EventBusSubscriber.Bus.MOD)
15+
public class DataGenerators {
16+
17+
@SubscribeEvent
18+
public static void gatherData(GatherDataEvent event) {
19+
DataGenerator generator = event.getGenerator();
20+
PackOutput output = generator.getPackOutput();
21+
ExistingFileHelper helper = event.getExistingFileHelper();
22+
23+
if (event.includeServer()) {
24+
generator.addProvider(true, new ModRecipeProvider(output));
25+
}
26+
27+
if (event.includeClient()) {
28+
generator.addProvider(true, new ModBlockStateProvider(output, helper));
29+
generator.addProvider(true, new ModItemModelProvider(output, helper));
30+
}
31+
32+
try {
33+
generator.run();
34+
} catch (IOException e) {
35+
GregTechStorageDrawers.LOGGER.error("Failed to generate data", e);
36+
}
37+
}
38+
}
Lines changed: 111 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,111 @@
1+
package com.gregtechceu.gtstoragedrawers.data;
2+
3+
import com.gregtechceu.gtstoragedrawers.DrawerTypes;
4+
import com.gregtechceu.gtstoragedrawers.GregTechStorageDrawers;
5+
6+
import net.minecraft.core.Direction;
7+
import net.minecraft.data.PackOutput;
8+
import net.minecraft.resources.ResourceLocation;
9+
import net.minecraftforge.client.model.generators.BlockModelBuilder;
10+
import net.minecraftforge.client.model.generators.BlockStateProvider;
11+
import net.minecraftforge.client.model.generators.ConfiguredModel;
12+
import net.minecraftforge.client.model.generators.ModelFile;
13+
import net.minecraftforge.client.model.generators.VariantBlockStateBuilder;
14+
import net.minecraftforge.common.data.ExistingFileHelper;
15+
16+
import com.jaquadro.minecraft.storagedrawers.StorageDrawers;
17+
import com.jaquadro.minecraft.storagedrawers.block.BlockDrawers;
18+
import com.jaquadro.minecraft.storagedrawers.block.BlockStandardDrawers;
19+
20+
public class ModBlockStateProvider extends BlockStateProvider {
21+
22+
public ModBlockStateProvider(PackOutput output, ExistingFileHelper helper) {
23+
super(output, GregTechStorageDrawers.MODID, helper);
24+
}
25+
26+
@Override
27+
protected void registerStatesAndModels() {
28+
for (DrawerTypes type : DrawerTypes.values()) {
29+
registerType(type);
30+
}
31+
}
32+
33+
void registerType(DrawerTypes type) {
34+
BlockModelBuilder blockTrim = models().cubeAll(type.getTrimModelName(), modLoc(type.getTextureName("side")));
35+
simpleBlock(type.getData().blockTrim.get(), blockTrim);
36+
37+
standardDrawer(type, type.getData().blockFull1.get(),
38+
new ResourceLocation(GregTechStorageDrawers.MODID, type.getTextureName("side")),
39+
new ResourceLocation(GregTechStorageDrawers.MODID, type.getTextureName("front_1")),
40+
new ResourceLocation(GregTechStorageDrawers.MODID, type.getTextureName("trim")),
41+
1, false);
42+
standardDrawer(type, type.getData().blockFull2.get(),
43+
new ResourceLocation(GregTechStorageDrawers.MODID, type.getTextureName("side")),
44+
new ResourceLocation(GregTechStorageDrawers.MODID, type.getTextureName("front_2")),
45+
new ResourceLocation(GregTechStorageDrawers.MODID, type.getTextureName("trim")),
46+
2, false);
47+
standardDrawer(type, type.getData().blockFull4.get(),
48+
new ResourceLocation(GregTechStorageDrawers.MODID, type.getTextureName("side")),
49+
new ResourceLocation(GregTechStorageDrawers.MODID, type.getTextureName("front_4")),
50+
new ResourceLocation(GregTechStorageDrawers.MODID, type.getTextureName("trim")),
51+
4, false);
52+
53+
standardDrawer(type, type.getData().blockHalf1.get(),
54+
new ResourceLocation(GregTechStorageDrawers.MODID, type.getTextureName("side")),
55+
new ResourceLocation(GregTechStorageDrawers.MODID, type.getTextureName("front_1")),
56+
new ResourceLocation(GregTechStorageDrawers.MODID, type.getTextureName("side_h")),
57+
new ResourceLocation(GregTechStorageDrawers.MODID, type.getTextureName("side")),
58+
new ResourceLocation(GregTechStorageDrawers.MODID, type.getTextureName("trim")),
59+
1, true);
60+
standardDrawer(type, type.getData().blockHalf2.get(),
61+
new ResourceLocation(GregTechStorageDrawers.MODID, type.getTextureName("side")),
62+
new ResourceLocation(GregTechStorageDrawers.MODID, type.getTextureName("front_2")),
63+
new ResourceLocation(GregTechStorageDrawers.MODID, type.getTextureName("side_h")),
64+
new ResourceLocation(GregTechStorageDrawers.MODID, type.getTextureName("side")),
65+
new ResourceLocation(GregTechStorageDrawers.MODID, type.getTextureName("trim")),
66+
2, true);
67+
standardDrawer(type, type.getData().blockHalf4.get(),
68+
new ResourceLocation(GregTechStorageDrawers.MODID, type.getTextureName("side")),
69+
new ResourceLocation(GregTechStorageDrawers.MODID, type.getTextureName("front_4")),
70+
new ResourceLocation(GregTechStorageDrawers.MODID, type.getTextureName("side_h")),
71+
new ResourceLocation(GregTechStorageDrawers.MODID, type.getTextureName("side")),
72+
new ResourceLocation(GregTechStorageDrawers.MODID, type.getTextureName("trim")),
73+
4, true);
74+
}
75+
76+
void standardDrawer(DrawerTypes type, BlockStandardDrawers block, ResourceLocation side, ResourceLocation front,
77+
ResourceLocation trim, int size, boolean half) {
78+
standardDrawer(type, block, side, front, side, side, trim, size, half);
79+
}
80+
81+
void standardDrawer(DrawerTypes type, BlockStandardDrawers block, ResourceLocation side, ResourceLocation front,
82+
ResourceLocation top, ResourceLocation back, ResourceLocation trim, int size, boolean half) {
83+
String parentType = half ? "half" : "full";
84+
ResourceLocation parent = new ResourceLocation(StorageDrawers.MOD_ID,
85+
"block/" + parentType + "_drawers_orientable");
86+
87+
ModelFile model = models()
88+
.withExistingParent(type.getDrawerModelName(size, half), parent)
89+
.texture("particle", front)
90+
.texture("east", side)
91+
.texture("west", side)
92+
.texture("north", front)
93+
.texture("up", top)
94+
.texture("down", top)
95+
.texture("south", back)
96+
.texture("trim", trim);
97+
98+
drawerState(block, model);
99+
}
100+
101+
void drawerState(BlockStandardDrawers block, ModelFile model) {
102+
VariantBlockStateBuilder builder = getVariantBuilder(block);
103+
builder.partialState().with(BlockDrawers.FACING, Direction.NORTH).addModels(new ConfiguredModel(model));
104+
builder.partialState().with(BlockDrawers.FACING, Direction.EAST)
105+
.addModels(new ConfiguredModel(model, 0, 90, false));
106+
builder.partialState().with(BlockDrawers.FACING, Direction.SOUTH)
107+
.addModels(new ConfiguredModel(model, 0, 180, false));
108+
builder.partialState().with(BlockDrawers.FACING, Direction.WEST)
109+
.addModels(new ConfiguredModel(model, 0, 270, false));
110+
}
111+
}
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
package com.gregtechceu.gtstoragedrawers.data;
2+
3+
import com.gregtechceu.gtstoragedrawers.DrawerTypes;
4+
import com.gregtechceu.gtstoragedrawers.GregTechStorageDrawers;
5+
6+
import net.minecraft.data.PackOutput;
7+
import net.minecraftforge.client.model.generators.ItemModelProvider;
8+
import net.minecraftforge.common.data.ExistingFileHelper;
9+
10+
public class ModItemModelProvider extends ItemModelProvider {
11+
12+
public ModItemModelProvider(PackOutput output, ExistingFileHelper helper) {
13+
super(output, GregTechStorageDrawers.MODID, helper);
14+
}
15+
16+
@Override
17+
protected void registerModels() {
18+
for (DrawerTypes type : DrawerTypes.values()) {
19+
withExistingParent(type.getTrimItemName(), modLoc(type.getTrimModelName()));
20+
withExistingParent(type.getItemModelName(1, false), modLoc(type.getDrawerModelName(1, false)));
21+
withExistingParent(type.getItemModelName(2, false), modLoc(type.getDrawerModelName(2, false)));
22+
withExistingParent(type.getItemModelName(4, false), modLoc(type.getDrawerModelName(4, false)));
23+
withExistingParent(type.getItemModelName(1, true), modLoc(type.getDrawerModelName(1, true)));
24+
withExistingParent(type.getItemModelName(2, true), modLoc(type.getDrawerModelName(2, true)));
25+
withExistingParent(type.getItemModelName(4, true), modLoc(type.getDrawerModelName(4, true)));
26+
}
27+
}
28+
}

0 commit comments

Comments
 (0)