Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
150 changes: 148 additions & 2 deletions src/datagen/java/ca/teamdman/sfm/datagen/SFMBlockStatesAndModels.java
Original file line number Diff line number Diff line change
@@ -1,13 +1,14 @@
package ca.teamdman.sfm.datagen;

import ca.teamdman.sfm.SFM;
import ca.teamdman.sfm.common.block.FancyCableBlock;
import ca.teamdman.sfm.common.block.WaterTankBlock;
import ca.teamdman.sfm.common.registry.SFMBlocks;
import net.minecraft.core.Direction;
import net.minecraft.data.PackOutput;
import net.minecraft.world.level.block.state.properties.BlockStateProperties;
import net.minecraftforge.client.model.generators.BlockStateProvider;
import net.minecraftforge.client.model.generators.ConfiguredModel;
import net.minecraftforge.client.model.generators.ModelBuilder;
import net.minecraftforge.client.model.generators.ModelFile;
import net.minecraftforge.data.event.GatherDataEvent;

Expand All @@ -18,16 +19,25 @@ public SFMBlockStatesAndModels(GatherDataEvent event) {

@Override
protected void registerStatesAndModels() {
/*
simpleBlock(SFMBlocks.MANAGER_BLOCK.get(), models().cubeBottomTop(
SFMBlocks.MANAGER_BLOCK.getId().getPath(),
modLoc("block/manager_side"),
modLoc("block/manager_bot"),
modLoc("block/manager_top")
).texture("particle", "#top"));
*/

horizontalBlock(SFMBlocks.MANAGER_BLOCK.get(), models().cubeBottomTop(
SFMBlocks.MANAGER_BLOCK.getId().getPath(),
modLoc("block/manager_side"),
modLoc("block/manager_bot"),
modLoc("block/manager_top")
).texture("particle","#top"));

simpleBlock(SFMBlocks.CABLE_BLOCK.get());
simpleBlock(SFMBlocks.PRINTING_PRESS_BLOCK.get(), models().getExistingFile(modLoc("block/printing_press")));

registerFancyCableBlock();

ModelFile waterIntakeModelActive = models()
.cubeAll(
Expand Down Expand Up @@ -95,4 +105,140 @@ protected void registerStatesAndModels() {
});
}
}

private void registerFancyCableBlock() {
var coreModel = models().withExistingParent(modLoc("block/fancy_cable_core").getPath(), "block/block")
.element()
.from(4, 4, 4)
.to(12, 12, 12)
.shade(false)
.allFaces((direction, faceBuilder) -> faceBuilder.uvs(5, 0, 13, 8).texture("#cable"))
.end()
.texture("cable", modLoc("block/fancy_cable"))
.texture("particle", modLoc("block/fancy_cable"));
var innerConnectionModel = models().withExistingParent(modLoc("block/fancy_cable_cable_connection").getPath(), "block/block")
.element()
.from(4, 4, 0)
.to(12, 12, 4)
.shade(false)
.allFaces((direction, faceBuilder) -> {
switch (direction) {
case NORTH:
case SOUTH: {
faceBuilder.uvs(5, 0, 13, 8);
break;
}
case EAST:
case WEST: {
faceBuilder.uvs(0, 0, 4, 8);
break;
}
case UP:
case DOWN: {
faceBuilder.uvs(0, 0, 4, 8)
.rotation(ModelBuilder.FaceRotation.CLOCKWISE_90);
break;
}
}
faceBuilder.texture("#cable");
})
.end()
.texture("cable", modLoc("block/fancy_cable"));

var outerConnectionModel = models().withExistingParent(modLoc("block/fancy_cable_inv_connection").getPath(), "block/block")
.element()
.from(4, 4, 1)
.to(12, 12, 4)
.shade(false)
.allFaces((direction, faceBuilder) -> {
switch (direction) {
case NORTH:
case SOUTH: {
faceBuilder.uvs(5, 0, 13, 8);
break;
}
case EAST:
case WEST: {
faceBuilder.uvs(0, 0, 3, 8);
break;
}
case UP:
case DOWN: {
faceBuilder.uvs(0, 0, 3, 8)
.rotation(ModelBuilder.FaceRotation.CLOCKWISE_90);
break;
}
}
faceBuilder.texture("#cable");
})
.end()
.element()
.from(11,11,0)
.to(5,5,1)
.shade(false)
.allFaces((direction, faceBuilder) -> {
switch (direction) {
case NORTH, SOUTH:
faceBuilder.uvs(6,10,11,15);
break;
case EAST:
faceBuilder.uvs(0, 10, 1, 15);
break;
case WEST:
faceBuilder.uvs(1, 10, 2, 15);
break;
case UP:
faceBuilder.uvs(2, 10, 3, 15)
.rotation(ModelBuilder.FaceRotation.CLOCKWISE_90);
break;
case DOWN:
faceBuilder.uvs(3, 10, 4, 15)
.rotation(ModelBuilder.FaceRotation.CLOCKWISE_90);
break;
}
faceBuilder.texture("#cable");
})
.end()
.texture("cable", modLoc("block/fancy_cable"));

var multipartBuilder1 = getMultipartBuilder(SFMBlocks.FANCY_CABLE_BLOCK.get());

// Core
multipartBuilder1.part()
.modelFile(coreModel)
.addModel()
.end();

// Parts (connections)
for (Direction direction: Direction.values()) {
var rotX = 0;
var rotY = 0;

switch (direction) {
case SOUTH -> rotY = 180;
case EAST -> rotY = 90;
case WEST -> rotY = 270;
case UP -> rotX = 270;
case DOWN -> rotX = 90;
}

multipartBuilder1.part()
.modelFile(innerConnectionModel)
.rotationX(rotX)
.rotationY(rotY)
.uvLock(false)
.addModel()
.condition(FancyCableBlock.DIRECTION_PROPERTIES.get(direction), FancyCableBlock.CABLE_CONNECTION_TYPE.CABLE)
.end();

multipartBuilder1.part()
.modelFile(outerConnectionModel)
.rotationX(rotX)
.rotationY(rotY)
.uvLock(false)
.addModel()
.condition(FancyCableBlock.DIRECTION_PROPERTIES.get(direction), FancyCableBlock.CABLE_CONNECTION_TYPE.INV)
.end();
}
}
}
5 changes: 2 additions & 3 deletions src/datagen/java/ca/teamdman/sfm/datagen/SFMItemModels.java
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,6 @@
import ca.teamdman.sfm.common.registry.SFMBlocks;
import ca.teamdman.sfm.common.registry.SFMItems;
import net.minecraft.client.renderer.block.model.BlockModel;
import net.minecraft.data.DataGenerator;
import net.minecraft.data.PackOutput;
import net.minecraft.world.item.Item;
import net.minecraft.world.level.block.Block;
import net.minecraftforge.client.model.generators.ItemModelProvider;
Expand All @@ -24,10 +22,11 @@ public SFMItemModels(
protected void registerModels() {
justParent(SFMItems.MANAGER_ITEM, SFMBlocks.MANAGER_BLOCK);
justParent(SFMItems.CABLE_ITEM, SFMBlocks.CABLE_BLOCK);
justParent(SFMItems.FANCY_CABLE_ITEM, SFMBlocks.FANCY_CABLE_BLOCK, "_core");
justParent(SFMItems.PRINTING_PRESS_ITEM, SFMBlocks.PRINTING_PRESS_BLOCK);
justParent(SFMItems.WATER_TANK_ITEM, SFMBlocks.WATER_TANK_BLOCK, "_active");
basicItem(SFMItems.DISK_ITEM);
basicItem(SFMItems.LABEL_GUN_ITEM);
//basicItem(SFMItems.LABEL_GUN_ITEM); Using custom 3D texture
basicItem(SFMItems.EXPERIENCE_GOOP_ITEM);
basicItem(SFMItems.EXPERIENCE_SHARD_ITEM);
basicItem(SFMItems.NETWORK_TOOL_ITEM);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
// 1.20.1 2023-10-27T20:13:47.6813886 Loot Tables
// 1.20.1 2025-01-10T16:04:27.8304554 Loot Tables
dc0c30a0ed7751f530455b82cf95c8c24a8e62cb data/sfm/loot_tables/blocks/cable.json
200ad3ab7d9eeaa149bddb76b7e9aee0de5e8951 data/sfm/loot_tables/blocks/manager.json
169fff021b621f8267af0ff10757b8abffd5087f data/sfm/loot_tables/blocks/printing_press.json
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
// 1.20.1 2023-11-08T14:25:16.9491105 Item Models: sfm
// 1.20.1 2025-01-10T16:04:27.8314603 Item Models: sfm
8518af52bb22ef1d984719f3534ff29e08cca857 assets/sfm/models/item/cable.json
bee75adb2bb431a6b671015aa9bac0d68a98f5fb assets/sfm/models/item/disk.json
3b5be3966b540f1e99a3d6fd8836ad39bf937e96 assets/sfm/models/item/fancy_cable.json
2c8c32d785bfc59bf23083eff8838054ee580570 assets/sfm/models/item/form.json
a74b029bcf88d674c6a4c4eaece9426cfd9c4533 assets/sfm/models/item/form_base.json
a70b1032681b30f1066fdfb8b28870e87e51c261 assets/sfm/models/item/labelgun.json
e945e739059a159bb1d4de5af118d412b50aae6c assets/sfm/models/item/manager.json
d35a3dbb1180878d85e94f3f00812e5f34a4b2da assets/sfm/models/item/network_tool.json
cd81e93f92577f247bb4bd12e01494d83e0733ce assets/sfm/models/item/printing_press.json
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
// 1.20.1 2024-06-25T00:20:02.132182 Recipes
// 1.20.1 2025-01-10T16:04:27.8304554 Recipes
21ddf44d8958739f46e499c9445d01a6b7965013 data/minecraft/recipes/disk_reset.json
69ef243b9636e55ed67ae7ed4ec0cad1015864c2 data/sfm/advancements/recipes/misc/printing_press.json
05c1f9108d84b90c935b8dd532ded8690e533957 data/sfm/advancements/recipes/misc/xp_goop.json
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,14 @@
// 1.20.1 2023-10-27T20:13:47.6794382 Block States: sfm
// 1.20.1 2025-01-11T04:43:39.3793221 Block States: sfm
f303dc233cde263e111cfdb2e2cbc48b93521724 assets/sfm/blockstates/cable.json
01e9d7d54169b7f6bbd287f4b896629f66f25305 assets/sfm/blockstates/manager.json
88f55b076e7631ab6387348c3b35fa18f40f27f3 assets/sfm/blockstates/fancy_cable.json
9740ff64e9b3387980b393367d97c509bb6da3fd assets/sfm/blockstates/manager.json
a351025a2054b6ce2ddc21dc14734cc8b5b635bc assets/sfm/blockstates/printing_press.json
9be344941a18ad0d8dccbcd6536d52bf7295c1c8 assets/sfm/blockstates/test_barrel.json
f3c25839c6554e631061f91277bc687aebc38fd7 assets/sfm/blockstates/water_tank.json
a76567fd4e65d191d69cf166b98776786d47a8e2 assets/sfm/models/block/cable.json
1d0fd8fecf2a046a04c54891a11ca0c1f8577068 assets/sfm/models/block/fancy_cable_cable_connection.json
93f1a088e6274b2a1dd04c889830cd074d04fc16 assets/sfm/models/block/fancy_cable_core.json
b7ee664dec7c158cb7e09b33f1a163c1d2ec265e assets/sfm/models/block/fancy_cable_inv_connection.json
953313d31931040aa2bd9a8742d4a54a2c632b8d assets/sfm/models/block/manager.json
220cea2f958589873eff05d62905d9e088c08951 assets/sfm/models/block/water_tank_active.json
5c39779ee6f051e682c82c8534c2fae85779747d assets/sfm/models/block/water_tank_inactive.json
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
// 1.20.1 2024-07-31T15:48:00.2975938 Languages: en_us
2ef5800dd8e0ea4d5c661969042e283cacd19197 assets/sfm/lang/en_us.json
// 1.20.1 2025-01-10T16:04:27.8314603 Languages: en_us
dd8835e768e2b995c50bd11ab5e703fe6d452990 assets/sfm/lang/en_us.json
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
// 1.20.1 2023-10-27T20:13:47.6804141 SuperFactoryManager Tags
// 1.20.1 2025-01-10T16:04:27.8289514 SuperFactoryManager Tags
22c0d1933af00895b3b1fad66a738923e2f3b362 data/minecraft/tags/blocks/mineable/axe.json
6a266217a8ee3eb78aa4f2a383432144a0c97c14 data/minecraft/tags/blocks/mineable/pickaxe.json
115 changes: 115 additions & 0 deletions src/generated/resources/assets/sfm/blockstates/fancy_cable.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,115 @@
{
"multipart": [
{
"apply": {
"model": "sfm:block/fancy_cable_core"
}
},
{
"apply": {
"model": "sfm:block/fancy_cable_cable_connection",
"x": 90
},
"when": {
"down": "cable"
}
},
{
"apply": {
"model": "sfm:block/fancy_cable_inv_connection",
"x": 90
},
"when": {
"down": "inv"
}
},
{
"apply": {
"model": "sfm:block/fancy_cable_cable_connection",
"x": 270
},
"when": {
"up": "cable"
}
},
{
"apply": {
"model": "sfm:block/fancy_cable_inv_connection",
"x": 270
},
"when": {
"up": "inv"
}
},
{
"apply": {
"model": "sfm:block/fancy_cable_cable_connection"
},
"when": {
"north": "cable"
}
},
{
"apply": {
"model": "sfm:block/fancy_cable_inv_connection"
},
"when": {
"north": "inv"
}
},
{
"apply": {
"model": "sfm:block/fancy_cable_cable_connection",
"y": 180
},
"when": {
"south": "cable"
}
},
{
"apply": {
"model": "sfm:block/fancy_cable_inv_connection",
"y": 180
},
"when": {
"south": "inv"
}
},
{
"apply": {
"model": "sfm:block/fancy_cable_cable_connection",
"y": 270
},
"when": {
"west": "cable"
}
},
{
"apply": {
"model": "sfm:block/fancy_cable_inv_connection",
"y": 270
},
"when": {
"west": "inv"
}
},
{
"apply": {
"model": "sfm:block/fancy_cable_cable_connection",
"y": 90
},
"when": {
"east": "cable"
}
},
{
"apply": {
"model": "sfm:block/fancy_cable_inv_connection",
"y": 90
},
"when": {
"east": "inv"
}
}
]
}
Loading