1.2.0 update

This commit is contained in:
DrMangoTea
2026-01-09 08:23:44 +01:00
parent 4c4a941c0c
commit e55d315253
109 changed files with 4689 additions and 346 deletions

View File

@@ -33,7 +33,7 @@ registrate_version = MC1.21-1.3.0+62
mod_id=tfmg mod_id=tfmg
mod_name=Create: The Factory Must Grow mod_name=Create: The Factory Must Grow
mod_license=MIT mod_license=MIT
mod_version=1.1.1 mod_version=1.2.0
mod_group_id=com.drmangotea mod_group_id=com.drmangotea
mod_authors= DrMangoTea, Pepa, Luna mod_authors= DrMangoTea, Pepa, Luna
mod_description= Create: The Factory Must Grow brings the age of steel, oil and electricity to the Create mod mod_description= Create: The Factory Must Grow brings the age of steel, oil and electricity to the Create mod

View File

@@ -0,0 +1,7 @@
{
"variants": {
"": {
"model": "tfmg:block/laminated_magnetic_alloy_block"
}
}
}

View File

@@ -0,0 +1,7 @@
{
"variants": {
"": {
"model": "tfmg:block/large_coil/block"
}
}
}

View File

@@ -0,0 +1,34 @@
{
"variants": {
"facing=east,is_main_part=false": {
"model": "tfmg:block/large_switch/block_secondary",
"y": 270
},
"facing=east,is_main_part=true": {
"model": "tfmg:block/large_switch/block_primary",
"y": 270
},
"facing=north,is_main_part=false": {
"model": "tfmg:block/large_switch/block_secondary",
"y": 180
},
"facing=north,is_main_part=true": {
"model": "tfmg:block/large_switch/block_primary",
"y": 180
},
"facing=south,is_main_part=false": {
"model": "tfmg:block/large_switch/block_secondary"
},
"facing=south,is_main_part=true": {
"model": "tfmg:block/large_switch/block_primary"
},
"facing=west,is_main_part=false": {
"model": "tfmg:block/large_switch/block_secondary",
"y": 90
},
"facing=west,is_main_part=true": {
"model": "tfmg:block/large_switch/block_primary",
"y": 90
}
}
}

View File

@@ -0,0 +1,64 @@
{
"variants": {
"facing=east,is_main_part=false,unfinished_model=false": {
"model": "tfmg:block/large_transformer/block",
"y": 90
},
"facing=east,is_main_part=false,unfinished_model=true": {
"model": "tfmg:block/large_transformer/block_unfinished",
"y": 90
},
"facing=east,is_main_part=true,unfinished_model=false": {
"model": "tfmg:block/large_transformer/block",
"y": 270
},
"facing=east,is_main_part=true,unfinished_model=true": {
"model": "tfmg:block/large_transformer/block_unfinished",
"y": 270
},
"facing=north,is_main_part=false,unfinished_model=false": {
"model": "tfmg:block/large_transformer/block"
},
"facing=north,is_main_part=false,unfinished_model=true": {
"model": "tfmg:block/large_transformer/block_unfinished"
},
"facing=north,is_main_part=true,unfinished_model=false": {
"model": "tfmg:block/large_transformer/block",
"y": 180
},
"facing=north,is_main_part=true,unfinished_model=true": {
"model": "tfmg:block/large_transformer/block_unfinished",
"y": 180
},
"facing=south,is_main_part=false,unfinished_model=false": {
"model": "tfmg:block/large_transformer/block",
"y": 180
},
"facing=south,is_main_part=false,unfinished_model=true": {
"model": "tfmg:block/large_transformer/block_unfinished",
"y": 180
},
"facing=south,is_main_part=true,unfinished_model=false": {
"model": "tfmg:block/large_transformer/block"
},
"facing=south,is_main_part=true,unfinished_model=true": {
"model": "tfmg:block/large_transformer/block_unfinished"
},
"facing=west,is_main_part=false,unfinished_model=false": {
"model": "tfmg:block/large_transformer/block",
"y": 270
},
"facing=west,is_main_part=false,unfinished_model=true": {
"model": "tfmg:block/large_transformer/block_unfinished",
"y": 270
},
"facing=west,is_main_part=true,unfinished_model=false": {
"model": "tfmg:block/large_transformer/block",
"y": 90
},
"facing=west,is_main_part=true,unfinished_model=true": {
"model": "tfmg:block/large_transformer/block_unfinished",
"y": 90
}
}
}

View File

@@ -246,7 +246,12 @@
"block.tfmg.industrial_mixer": "ɹǝxıW ןɐıɹʇsnpuI", "block.tfmg.industrial_mixer": "ɹǝxıW ןɐıɹʇsnpuI",
"block.tfmg.industrial_pipe": "ǝdıԀ ןɐıɹʇsnpuI", "block.tfmg.industrial_pipe": "ǝdıԀ ןɐıɹʇsnpuI",
"block.tfmg.kerosene": "ǝuǝsoɹǝʞ", "block.tfmg.kerosene": "ǝuǝsoɹǝʞ",
"block.tfmg.laminated_magnetic_alloy_block": "ʞɔoןᗺ ʎoןןⱯ ɔıʇǝubɐW pǝʇɐuıɯɐꞀ",
"block.tfmg.large_aluminum_cogwheel": "ןǝǝɥʍboƆ ɯnuıɯnןⱯ ǝbɹɐꞀ", "block.tfmg.large_aluminum_cogwheel": "ןǝǝɥʍboƆ ɯnuıɯnןⱯ ǝbɹɐꞀ",
"block.tfmg.large_coil": "ןıoƆ ǝbɹɐꞀ",
"block.tfmg.large_coil.tooltip.behaviour1": "ʇǝʞɔnᗺ ןıO uoıʇɐɔıɹqnꞀ ɐ puɐ ןǝǝʇS ɟo ʞɔoןᗺ ɐ ɥʇıʍ ʇı ʞɔıןɔ-ʇɥbıɹ 'ʇuǝıɔıɟɟǝ ʇı ǝʞɐɯ oʇ 'pǝʇɐǝɹƆ sı ɹǝɯɹoɟsuɐɹ⟘ ǝbɹɐꞀ ǝɥ⟘",
"block.tfmg.large_coil.tooltip.condition1": "ʞɔoןᗺ ʎoןןⱯ ɔıʇǝubɐW pǝʇɐuıɯɐꞀ ɐ ɥʇıʍ pǝʞɔıןɔ-ʇɥbıɹ puɐ ɹǝɥʇo ɥɔɐǝ oʇ ʇxǝu pǝɔɐןd ǝɹɐ sןıoƆ ǝbɹɐꞀ ᄅ uǝɥM",
"block.tfmg.large_coil.tooltip.summary": "ɹǝɯɹoɟsuɐɹ⟘ ǝbɹɐꞀ ǝɥʇ buıʇɐǝɹɔ ɹoɟ pǝs∩",
"block.tfmg.large_engine": "ǝuıbuƎ ǝbɹɐꞀ", "block.tfmg.large_engine": "ǝuıbuƎ ǝbɹɐꞀ",
"block.tfmg.large_engine.tooltip.behaviour1": ")ǝuıbuǝ ɯɐǝʇs ɐ oʇ ɹɐıןıɯıs pǝɥɔɐʇʇɐ ǝq oʇ spǝǝu ʇɟɐɥs ɐ( uoıʇɐʇoɹ ǝʇɐɹǝuǝb oʇ )ʇsnɐɥxǝ uɐ spǝǝu( ʇno pǝdɯnd ǝq oʇ ᄅoɔ puɐ )sɐ⅁ ǝɔɐuɹnℲ 'ɐʇɥdɐN 'ǝuǝsoɹǝʞ 'ןǝsǝıᗡ( uı pǝdɯnd ǝq oʇ ןǝnɟ puɐ ɹıɐ sǝɹınbǝɹ ʇı uoıʇɔunɟ o⟘", "block.tfmg.large_engine.tooltip.behaviour1": ")ǝuıbuǝ ɯɐǝʇs ɐ oʇ ɹɐıןıɯıs pǝɥɔɐʇʇɐ ǝq oʇ spǝǝu ʇɟɐɥs ɐ( uoıʇɐʇoɹ ǝʇɐɹǝuǝb oʇ )ʇsnɐɥxǝ uɐ spǝǝu( ʇno pǝdɯnd ǝq oʇ ᄅoɔ puɐ )sɐ⅁ ǝɔɐuɹnℲ 'ɐʇɥdɐN 'ǝuǝsoɹǝʞ 'ןǝsǝıᗡ( uı pǝdɯnd ǝq oʇ ןǝnɟ puɐ ɹıɐ sǝɹınbǝɹ ʇı uoıʇɔunɟ o⟘",
"block.tfmg.large_engine.tooltip.summary": "sןǝnɟ pǝuıɟǝɹ ssǝן ɯoɹɟ uoıʇɐʇoɹ sǝʇɐǝɹƆ", "block.tfmg.large_engine.tooltip.summary": "sןǝnɟ pǝuıɟǝɹ ssǝן ɯoɹɟ uoıʇɐʇoɹ sǝʇɐǝɹƆ",
@@ -254,6 +259,8 @@
"block.tfmg.large_pumpjack_hammer_head": "pɐǝH ɹǝɯɯɐH ʞɔɐظdɯnԀ ǝbɹɐꞀ", "block.tfmg.large_pumpjack_hammer_head": "pɐǝH ɹǝɯɯɐH ʞɔɐظdɯnԀ ǝbɹɐꞀ",
"block.tfmg.large_pumpjack_hammer_part": "ʇɹɐԀ ɹǝɯɯɐH ʞɔɐظdɯnԀ ǝbɹɐꞀ", "block.tfmg.large_pumpjack_hammer_part": "ʇɹɐԀ ɹǝɯɯɐH ʞɔɐظdɯnԀ ǝbɹɐꞀ",
"block.tfmg.large_steel_cogwheel": "ןǝǝɥʍboƆ ןǝǝʇS ǝbɹɐꞀ", "block.tfmg.large_steel_cogwheel": "ןǝǝɥʍboƆ ןǝǝʇS ǝbɹɐꞀ",
"block.tfmg.large_switch": "ɥɔʇıʍS ǝbɹɐꞀ",
"block.tfmg.large_transformer": "ɹǝɯɹoɟsuɐɹ⟘ ǝbɹɐꞀ",
"block.tfmg.layered_bauxite": "ǝʇıxnɐᗺ pǝɹǝʎɐꞀ", "block.tfmg.layered_bauxite": "ǝʇıxnɐᗺ pǝɹǝʎɐꞀ",
"block.tfmg.layered_galena": "ɐuǝןɐ⅁ pǝɹǝʎɐꞀ", "block.tfmg.layered_galena": "ɐuǝןɐ⅁ pǝɹǝʎɐꞀ",
"block.tfmg.lead_bars": "sɹɐᗺ pɐǝꞀ", "block.tfmg.lead_bars": "sɹɐᗺ pɐǝꞀ",
@@ -740,6 +747,7 @@
"item.tfmg.magnet": "ʇǝubɐW", "item.tfmg.magnet": "ʇǝubɐW",
"item.tfmg.magnetic_alloy_ingot": "ʇobuI ʎoןןⱯ ɔıʇǝubɐW", "item.tfmg.magnetic_alloy_ingot": "ʇobuI ʎoןןⱯ ɔıʇǝubɐW",
"item.tfmg.magnetic_alloy_ingot.tooltip.summary": "˙˙˙buıɥʇǝɯos op ʇɥbıɯ buıuʇɥbıן ɐ ɥʇıʍ sıɥʇ buıʞıɹʇS", "item.tfmg.magnetic_alloy_ingot.tooltip.summary": "˙˙˙buıɥʇǝɯos op ʇɥbıɯ buıuʇɥbıן ɐ ɥʇıʍ sıɥʇ buıʞıɹʇS",
"item.tfmg.magnetic_alloy_sheet": "ʇǝǝɥS ʎoןןⱯ ɔıʇǝubɐW",
"item.tfmg.mixer_blade": "ǝpɐןᗺ ɹǝxıW", "item.tfmg.mixer_blade": "ǝpɐןᗺ ɹǝxıW",
"item.tfmg.molten_plastic_bucket": "ʇǝʞɔnᗺ ɔıʇsɐןԀ uǝʇןoW", "item.tfmg.molten_plastic_bucket": "ʇǝʞɔnᗺ ɔıʇsɐןԀ uǝʇןoW",
"item.tfmg.molten_slag_bucket": "ʇǝʞɔnᗺ bɐןS uǝʇןoW", "item.tfmg.molten_slag_bucket": "ʇǝʞɔnᗺ bɐןS uǝʇןoW",
@@ -990,13 +998,15 @@
"tfmg.goggles.voltmeter.mode.voltage": "ǝbɐʇןoΛ", "tfmg.goggles.voltmeter.mode.voltage": "ǝbɐʇןoΛ",
"tfmg.goggles.voltmeter.range": "%1$s :ǝbuɐᴚ ", "tfmg.goggles.voltmeter.range": "%1$s :ǝbuɐᴚ ",
"tfmg.goggles.winding_machine.progress": " :ssǝɹboɹԀ", "tfmg.goggles.winding_machine.progress": " :ssǝɹboɹԀ",
"tfmg.goggles.winding_machine.turns": "%1$ :ʇɟǝꞀ suɹn⟘", "tfmg.goggles.winding_machine.turns": " :ʇɟǝꞀ suɹn⟘",
"tfmg.goggles.zero": "pıןɐʌuI ǝuıɥɔɐW", "tfmg.goggles.zero": "pıןɐʌuI ǝuıɥɔɐW",
"tfmg.keyinfo.custom_button": "uoʇʇnᗺ ɯoʇsnƆ ɹǝןןoɹʇuoƆ ǝuıbuƎ", "tfmg.keyinfo.custom_button": "uoʇʇnᗺ ɯoʇsnƆ ɹǝןןoɹʇuoƆ ǝuıbuƎ",
"tfmg.keyinfo.engine_start": "ǝuıbuƎ ʇɹɐʇS", "tfmg.keyinfo.engine_start": "ǝuıbuƎ ʇɹɐʇS",
"tfmg.keyinfo.transmission_shift_down": "uʍoᗡ ʇɟıɥS uoıssıɯsuɐɹ⟘", "tfmg.keyinfo.transmission_shift_down": "uʍoᗡ ʇɟıɥS uoıssıɯsuɐɹ⟘",
"tfmg.keyinfo.transmission_shift_up": "d∩ ʇɟıɥS uoıssıɯsuɐɹ⟘", "tfmg.keyinfo.transmission_shift_up": "d∩ ʇɟıɥS uoıssıɯsuɐɹ⟘",
"tfmg.multimeter.additional_values": ":sǝnןɐΛ ןɐuoıʇıppⱯ", "tfmg.multimeter.additional_values": ":sǝnןɐΛ ןɐuoıʇıppⱯ",
"tfmg.multimeter.approaching_overcurrent": " ʇuǝɹɹnɔɹǝʌO buıɥɔɐoɹddⱯ ",
"tfmg.multimeter.approaching_overvoltage": " ǝbɐʇןoʌɹǝʌO buıɥɔɐoɹddⱯ ",
"tfmg.multimeter.charge": " :ǝbɹɐɥƆ", "tfmg.multimeter.charge": " :ǝbɹɐɥƆ",
"tfmg.multimeter.energy_stored": " :pǝɹoʇS ʎbɹǝuƎ ", "tfmg.multimeter.energy_stored": " :pǝɹoʇS ʎbɹǝuƎ ",
"tfmg.multimeter.energy_usage": " :ǝbɐs∩ ʎbɹǝuƎ ", "tfmg.multimeter.energy_usage": " :ǝbɐs∩ ʎbɹǝuƎ ",
@@ -1005,6 +1015,9 @@
"tfmg.multimeter.insufficient_current": ")%s spǝǝN( ʇuǝɹɹnƆ ɥbnouƎ ʇoN", "tfmg.multimeter.insufficient_current": ")%s spǝǝN( ʇuǝɹɹnƆ ɥbnouƎ ʇoN",
"tfmg.multimeter.insufficient_power": "ɹǝʍoԀ ɥbnouƎ ʇoN", "tfmg.multimeter.insufficient_power": "ɹǝʍoԀ ɥbnouƎ ʇoN",
"tfmg.multimeter.insufficient_power.requirement": ")%s spǝǝN( ɹǝʍoԀ ɥbnouƎ ʇoN", "tfmg.multimeter.insufficient_power.requirement": ")%s spǝǝN( ɹǝʍoԀ ɥbnouƎ ʇoN",
"tfmg.multimeter.large_transformer.air_cooled": "pǝןooƆ ɹıⱯ :ǝʇɐʇS ",
"tfmg.multimeter.large_transformer.metal_cooled": "pǝןooƆ ʞuıS ʇɐǝH ןɐʇǝW :ǝʇɐʇS ",
"tfmg.multimeter.large_transformer.oil_cooled": "pǝןooƆ ʞuıS ʇɐǝH + ןıO :ǝʇɐʇS ",
"tfmg.multimeter.network.consumption": "%s :uoıʇdɯnsuoƆ ɹǝʍoԀ ʞɹoʍʇǝN", "tfmg.multimeter.network.consumption": "%s :uoıʇdɯnsuoƆ ɹǝʍoԀ ʞɹoʍʇǝN",
"tfmg.multimeter.network.generation": "%s :uoıʇɐɹǝuǝ⅁ ɹǝʍoԀ ʞɹoʍʇǝN", "tfmg.multimeter.network.generation": "%s :uoıʇɐɹǝuǝ⅁ ɹǝʍoԀ ʞɹoʍʇǝN",
"tfmg.multimeter.power_generated": "%s :pǝʇɐɹǝuǝ⅁ ɹǝʍoԀ ", "tfmg.multimeter.power_generated": "%s :pǝʇɐɹǝuǝ⅁ ɹǝʍoԀ ",

View File

@@ -246,7 +246,12 @@
"block.tfmg.industrial_mixer": "Industrial Mixer", "block.tfmg.industrial_mixer": "Industrial Mixer",
"block.tfmg.industrial_pipe": "Industrial Pipe", "block.tfmg.industrial_pipe": "Industrial Pipe",
"block.tfmg.kerosene": "Kerosene", "block.tfmg.kerosene": "Kerosene",
"block.tfmg.laminated_magnetic_alloy_block": "Laminated Magnetic Alloy Block",
"block.tfmg.large_aluminum_cogwheel": "Large Aluminum Cogwheel", "block.tfmg.large_aluminum_cogwheel": "Large Aluminum Cogwheel",
"block.tfmg.large_coil": "Large Coil",
"block.tfmg.large_coil.tooltip.behaviour1": "The Large Transformer is Created, to make it efficient, right-click it with a Block of Steel and a Lubrication Oil Bucket",
"block.tfmg.large_coil.tooltip.condition1": "When 2 Large Coils are placed next to each other and right-clicked with a Laminated Magnetic Alloy Block",
"block.tfmg.large_coil.tooltip.summary": "Used for creating the Large Transformer",
"block.tfmg.large_engine": "Large Engine", "block.tfmg.large_engine": "Large Engine",
"block.tfmg.large_engine.tooltip.behaviour1": "To function it requires air and fuel to be pumped in (Diesel, Kerosene, Naphta, Furnace Gas) and co2 to be pumped out (needs an exhaust) to generate rotation (a shaft needs to be attached similiar to a steam engine)", "block.tfmg.large_engine.tooltip.behaviour1": "To function it requires air and fuel to be pumped in (Diesel, Kerosene, Naphta, Furnace Gas) and co2 to be pumped out (needs an exhaust) to generate rotation (a shaft needs to be attached similiar to a steam engine)",
"block.tfmg.large_engine.tooltip.summary": "Creates rotation from less refined fuels", "block.tfmg.large_engine.tooltip.summary": "Creates rotation from less refined fuels",
@@ -254,6 +259,8 @@
"block.tfmg.large_pumpjack_hammer_head": "Large Pumpjack Hammer Head", "block.tfmg.large_pumpjack_hammer_head": "Large Pumpjack Hammer Head",
"block.tfmg.large_pumpjack_hammer_part": "Large Pumpjack Hammer Part", "block.tfmg.large_pumpjack_hammer_part": "Large Pumpjack Hammer Part",
"block.tfmg.large_steel_cogwheel": "Large Steel Cogwheel", "block.tfmg.large_steel_cogwheel": "Large Steel Cogwheel",
"block.tfmg.large_switch": "Large Switch",
"block.tfmg.large_transformer": "Large Transformer",
"block.tfmg.layered_bauxite": "Layered Bauxite", "block.tfmg.layered_bauxite": "Layered Bauxite",
"block.tfmg.layered_galena": "Layered Galena", "block.tfmg.layered_galena": "Layered Galena",
"block.tfmg.lead_bars": "Lead Bars", "block.tfmg.lead_bars": "Lead Bars",
@@ -740,6 +747,7 @@
"item.tfmg.magnet": "Magnet", "item.tfmg.magnet": "Magnet",
"item.tfmg.magnetic_alloy_ingot": "Magnetic Alloy Ingot", "item.tfmg.magnetic_alloy_ingot": "Magnetic Alloy Ingot",
"item.tfmg.magnetic_alloy_ingot.tooltip.summary": "Striking this with a lightning might do something...", "item.tfmg.magnetic_alloy_ingot.tooltip.summary": "Striking this with a lightning might do something...",
"item.tfmg.magnetic_alloy_sheet": "Magnetic Alloy Sheet",
"item.tfmg.mixer_blade": "Mixer Blade", "item.tfmg.mixer_blade": "Mixer Blade",
"item.tfmg.molten_plastic_bucket": "Molten Plastic Bucket", "item.tfmg.molten_plastic_bucket": "Molten Plastic Bucket",
"item.tfmg.molten_slag_bucket": "Molten Slag Bucket", "item.tfmg.molten_slag_bucket": "Molten Slag Bucket",
@@ -990,13 +998,15 @@
"tfmg.goggles.voltmeter.mode.voltage": "Voltage", "tfmg.goggles.voltmeter.mode.voltage": "Voltage",
"tfmg.goggles.voltmeter.range": " Range: %1$s", "tfmg.goggles.voltmeter.range": " Range: %1$s",
"tfmg.goggles.winding_machine.progress": "Progress: ", "tfmg.goggles.winding_machine.progress": "Progress: ",
"tfmg.goggles.winding_machine.turns": "Turns Left: %1$", "tfmg.goggles.winding_machine.turns": "Turns Left: ",
"tfmg.goggles.zero": "Machine Invalid", "tfmg.goggles.zero": "Machine Invalid",
"tfmg.keyinfo.custom_button": "Engine Controller Custom Button", "tfmg.keyinfo.custom_button": "Engine Controller Custom Button",
"tfmg.keyinfo.engine_start": "Start Engine", "tfmg.keyinfo.engine_start": "Start Engine",
"tfmg.keyinfo.transmission_shift_down": "Transmission Shift Down", "tfmg.keyinfo.transmission_shift_down": "Transmission Shift Down",
"tfmg.keyinfo.transmission_shift_up": "Transmission Shift Up", "tfmg.keyinfo.transmission_shift_up": "Transmission Shift Up",
"tfmg.multimeter.additional_values": "Additional Values:", "tfmg.multimeter.additional_values": "Additional Values:",
"tfmg.multimeter.approaching_overcurrent": " Approaching Overcurrent ",
"tfmg.multimeter.approaching_overvoltage": " Approaching Overvoltage ",
"tfmg.multimeter.charge": "Charge: ", "tfmg.multimeter.charge": "Charge: ",
"tfmg.multimeter.energy_stored": " Energy Stored: ", "tfmg.multimeter.energy_stored": " Energy Stored: ",
"tfmg.multimeter.energy_usage": " Energy Usage: ", "tfmg.multimeter.energy_usage": " Energy Usage: ",
@@ -1005,6 +1015,9 @@
"tfmg.multimeter.insufficient_current": "Not Enough Current (Needs %s)", "tfmg.multimeter.insufficient_current": "Not Enough Current (Needs %s)",
"tfmg.multimeter.insufficient_power": "Not Enough Power", "tfmg.multimeter.insufficient_power": "Not Enough Power",
"tfmg.multimeter.insufficient_power.requirement": "Not Enough Power (Needs %s)", "tfmg.multimeter.insufficient_power.requirement": "Not Enough Power (Needs %s)",
"tfmg.multimeter.large_transformer.air_cooled": " State: Air Cooled",
"tfmg.multimeter.large_transformer.metal_cooled": " State: Metal Heat Sink Cooled",
"tfmg.multimeter.large_transformer.oil_cooled": " State: Oil + Heat Sink Cooled",
"tfmg.multimeter.network.consumption": "Network Power Consumption: %s", "tfmg.multimeter.network.consumption": "Network Power Consumption: %s",
"tfmg.multimeter.network.generation": "Network Power Generation: %s", "tfmg.multimeter.network.generation": "Network Power Generation: %s",
"tfmg.multimeter.power_generated": " Power Generated: %s", "tfmg.multimeter.power_generated": " Power Generated: %s",

View File

@@ -0,0 +1,6 @@
{
"parent": "minecraft:block/cube_all",
"textures": {
"all": "tfmg:block/laminated_magnetic_alloy_block"
}
}

View File

@@ -0,0 +1,3 @@
{
"parent": "tfmg:block/laminated_magnetic_alloy_block"
}

View File

@@ -0,0 +1,3 @@
{
"parent": "tfmg:block/large_coil/item"
}

View File

@@ -0,0 +1,3 @@
{
"parent": "tfmg:block/large_switch/item"
}

View File

@@ -0,0 +1,6 @@
{
"parent": "minecraft:item/generated",
"textures": {
"layer0": "tfmg:item/magnetic_alloy_sheet"
}
}

View File

@@ -1,5 +1,7 @@
{ {
"values": [ "values": [
"tfmg:oil_deposit" "tfmg:oil_deposit",
"tfmg:large_switch",
"tfmg:large_transformer"
] ]
} }

View File

@@ -6,6 +6,7 @@
"tfmg:lead_block", "tfmg:lead_block",
"tfmg:constantan_block", "tfmg:constantan_block",
"tfmg:nickel_block", "tfmg:nickel_block",
"tfmg:lithium_block" "tfmg:lithium_block",
"tfmg:laminated_magnetic_alloy_block"
] ]
} }

View File

@@ -83,6 +83,7 @@
"tfmg:encased_diode", "tfmg:encased_diode",
"tfmg:potentiometer", "tfmg:potentiometer",
"tfmg:electrical_switch", "tfmg:electrical_switch",
"tfmg:large_switch",
"tfmg:encased_potentiometer", "tfmg:encased_potentiometer",
"tfmg:electric_pump", "tfmg:electric_pump",
"tfmg:voltage_observer", "tfmg:voltage_observer",
@@ -93,7 +94,9 @@
"tfmg:traffic_light", "tfmg:traffic_light",
"tfmg:segmented_display", "tfmg:segmented_display",
"tfmg:transformer", "tfmg:transformer",
"tfmg:large_transformer",
"tfmg:converter", "tfmg:converter",
"tfmg:large_coil",
"tfmg:brick_smokestack", "tfmg:brick_smokestack",
"tfmg:metal_smokestack", "tfmg:metal_smokestack",
"tfmg:concrete_smokestack", "tfmg:concrete_smokestack",
@@ -116,6 +119,7 @@
"tfmg:nickel_block", "tfmg:nickel_block",
"tfmg:lithium_block", "tfmg:lithium_block",
"tfmg:coal_coke_block", "tfmg:coal_coke_block",
"tfmg:laminated_magnetic_alloy_block",
"tfmg:heavy_casing_door", "tfmg:heavy_casing_door",
"tfmg:steel_door", "tfmg:steel_door",
"tfmg:aluminum_door", "tfmg:aluminum_door",

View File

@@ -10,6 +10,7 @@
"tfmg:constantan_block", "tfmg:constantan_block",
"tfmg:nickel_block", "tfmg:nickel_block",
"tfmg:lithium_block", "tfmg:lithium_block",
"tfmg:laminated_magnetic_alloy_block",
"tfmg:rebar_block", "tfmg:rebar_block",
"tfmg:rebar_floor", "tfmg:rebar_floor",
"tfmg:rebar_wall", "tfmg:rebar_wall",

View File

@@ -0,0 +1,32 @@
{
"parent": "minecraft:recipes/root",
"criteria": {
"has_item": {
"conditions": {
"items": [
{
"items": "tfmg:magnetic_alloy_ingot"
}
]
},
"trigger": "minecraft:inventory_changed"
},
"has_the_recipe": {
"conditions": {
"recipe": "tfmg:crafting/materials/laminated_magnetic_alloy_block"
},
"trigger": "minecraft:recipe_unlocked"
}
},
"requirements": [
[
"has_the_recipe",
"has_item"
]
],
"rewards": {
"recipes": [
"tfmg:crafting/materials/laminated_magnetic_alloy_block"
]
}
}

View File

@@ -0,0 +1,32 @@
{
"parent": "minecraft:recipes/root",
"criteria": {
"has_item": {
"conditions": {
"items": [
{
"items": "tfmg:cable_connector"
}
]
},
"trigger": "minecraft:inventory_changed"
},
"has_the_recipe": {
"conditions": {
"recipe": "tfmg:crafting/materials/large_switch"
},
"trigger": "minecraft:recipe_unlocked"
}
},
"requirements": [
[
"has_the_recipe",
"has_item"
]
],
"rewards": {
"recipes": [
"tfmg:crafting/materials/large_switch"
]
}
}

View File

@@ -0,0 +1,21 @@
{
"type": "minecraft:block",
"pools": [
{
"bonus_rolls": 0.0,
"conditions": [
{
"condition": "minecraft:survives_explosion"
}
],
"entries": [
{
"type": "minecraft:item",
"name": "tfmg:laminated_magnetic_alloy_block"
}
],
"rolls": 1.0
}
],
"random_sequence": "tfmg:blocks/laminated_magnetic_alloy_block"
}

View File

@@ -0,0 +1,21 @@
{
"type": "minecraft:block",
"pools": [
{
"bonus_rolls": 0.0,
"conditions": [
{
"condition": "minecraft:survives_explosion"
}
],
"entries": [
{
"type": "minecraft:item",
"name": "tfmg:large_coil"
}
],
"rolls": 1.0
}
],
"random_sequence": "tfmg:blocks/large_coil"
}

View File

@@ -0,0 +1,21 @@
{
"type": "minecraft:block",
"pools": [
{
"bonus_rolls": 0.0,
"conditions": [
{
"condition": "minecraft:survives_explosion"
}
],
"entries": [
{
"type": "minecraft:item",
"name": "tfmg:large_switch"
}
],
"rolls": 1.0
}
],
"random_sequence": "tfmg:blocks/large_switch"
}

View File

@@ -0,0 +1,21 @@
{
"type": "minecraft:block",
"pools": [
{
"bonus_rolls": 0.0,
"conditions": [
{
"condition": "minecraft:survives_explosion"
}
],
"entries": [
{
"type": "minecraft:item",
"name": "minecraft:air"
}
],
"rolls": 1.0
}
],
"random_sequence": "tfmg:blocks/large_transformer"
}

View File

@@ -0,0 +1,18 @@
{
"type": "minecraft:crafting_shaped",
"category": "misc",
"key": {
"C": {
"item": "tfmg:magnetic_alloy_sheet"
}
},
"pattern": [
"CCC",
"CCC",
"CCC"
],
"result": {
"count": 1,
"id": "tfmg:laminated_magnetic_alloy_block"
}
}

View File

@@ -0,0 +1,36 @@
{
"type": "minecraft:crafting_shaped",
"category": "misc",
"key": {
"B": {
"tag": "c:plates/brass"
},
"I": {
"item": "tfmg:cable_connector"
},
"M": {
"item": "tfmg:steel_mechanism"
},
"P": {
"item": "tfmg:electric_post"
},
"R": {
"item": "tfmg:rebar"
},
"S": {
"item": "tfmg:steel_cable_hub"
},
"W": {
"tag": "c:wires/copper"
}
},
"pattern": [
"WRB",
"SMP",
"III"
],
"result": {
"count": 1,
"id": "tfmg:large_switch"
}
}

View File

@@ -6,7 +6,7 @@
"item": "tfmg:steel_casing" "item": "tfmg:steel_casing"
}, },
"M": { "M": {
"item": "tfmg:magnetic_alloy_ingot" "item": "tfmg:magnetic_alloy_sheet"
}, },
"N": { "N": {
"tag": "c:plates/nickel" "tag": "c:plates/nickel"

View File

@@ -0,0 +1,13 @@
{
"type": "create:pressing",
"ingredients": [
{
"item": "tfmg:magnetic_alloy_ingot"
}
],
"results": [
{
"id": "tfmg:magnetic_alloy_sheet"
}
]
}

View File

@@ -0,0 +1,20 @@
{
"type": "tfmg:winding",
"ingredients": [
{
"item": "tfmg:laminated_magnetic_alloy_block"
},
{
"item": "tfmg:copper_spool"
}
],
"processing_time": 100,
"results": [
{
"components": {
"tfmg:coil_turns": 100
},
"id": "tfmg:large_coil"
}
]
}

View File

@@ -29,6 +29,15 @@ public class TFMGShapes {
TURBINE_ENGINE_FRONT = shape(2, 2, 0, 14, 14, 16) TURBINE_ENGINE_FRONT = shape(2, 2, 0, 14, 14, 16)
.add(3, 0, 8, 13, 2, 16) .add(3, 0, 8, 13, 2, 16)
.forHorizontal(SOUTH), .forHorizontal(SOUTH),
LARGE_SWITCH_SECONDARY = shape(5, 1, 0, 11, 7, 16)
.add(5, 7, 8, 11, 14, 16)
.forHorizontal(SOUTH),
LARGE_SWITCH_PRIMARY = shape(0, 0, 0, 16, 13, 16)
.forHorizontal(SOUTH),
LARGE_TRANSFORMER_UNFINISHED = shape(4, 0, 0, 12, 20, 12).add(0, 4, 0, 16, 16, 16)
.forHorizontal(SOUTH),
LARGE_TRANSFORMER = shape(-1, 2, 4, 17, 17, 16).add(2, 0, 5, 14, 19, 16).add(2, 3, 0, 14, 16, 16)
.forHorizontal(SOUTH),
TURBINE_ENGINE_MIDDLE = shape(11, 0, 2, 16, 5, 14) TURBINE_ENGINE_MIDDLE = shape(11, 0, 2, 16, 5, 14)
.add(1, 1, 0, 15, 15, 16) .add(1, 1, 0, 15, 15, 16)
.add(0, 0, 2, 5, 5, 14) .add(0, 0, 2, 5, 5, 14)

View File

@@ -3,6 +3,7 @@ package com.drmangotea.tfmg.base.debug;
import com.drmangotea.tfmg.TFMG; import com.drmangotea.tfmg.TFMG;
import com.drmangotea.tfmg.content.decoration.tanks.steel.SteelTankBlock; import com.drmangotea.tfmg.content.decoration.tanks.steel.SteelTankBlock;
import com.drmangotea.tfmg.content.decoration.tanks.steel.SteelTankBlockEntity; import com.drmangotea.tfmg.content.decoration.tanks.steel.SteelTankBlockEntity;
import com.drmangotea.tfmg.content.electricity.base.IElectric;
import com.drmangotea.tfmg.content.electricity.generators.large_generator.StatorBlockEntity; import com.drmangotea.tfmg.content.electricity.generators.large_generator.StatorBlockEntity;
import net.minecraft.core.BlockPos; import net.minecraft.core.BlockPos;
import net.minecraft.world.InteractionResult; import net.minecraft.world.InteractionResult;
@@ -28,8 +29,9 @@ public class DebugCinderBlockItem extends Item {
BlockPos pos = context.getClickedPos(); BlockPos pos = context.getClickedPos();
Level level = context.getLevel(); Level level = context.getLevel();
if (level.getBlockEntity(pos) instanceof StatorBlockEntity be) { if (level.getBlockEntity(pos) instanceof IElectric be) {
be.updateRotor();
be.onPlaced();
} }
@@ -45,6 +47,6 @@ public class DebugCinderBlockItem extends Item {
TFMG.LOGGER.debug(String.valueOf(be.isDistillationTower)); TFMG.LOGGER.debug(String.valueOf(be.isDistillationTower));
} }
} }
return InteractionResult.PASS; return InteractionResult.SUCCESS;
} }
} }

View File

@@ -4,7 +4,7 @@ import com.drmangotea.tfmg.TFMG;
import com.drmangotea.tfmg.TFMGClient; import com.drmangotea.tfmg.TFMGClient;
import com.drmangotea.tfmg.content.electricity.connection.cables.CableConnectorBlockEntity; import com.drmangotea.tfmg.content.electricity.connection.cables.CableConnectorBlockEntity;
import com.drmangotea.tfmg.content.electricity.measurement.MultimeterOverlayRenderer; import com.drmangotea.tfmg.content.electricity.measurement.MultimeterOverlayRenderer;
import com.drmangotea.tfmg.content.electricity.network.transformer.TransformerBlockEntity; import com.drmangotea.tfmg.content.electricity.network.transformer.small.TransformerBlockEntity;
import com.drmangotea.tfmg.content.engines.engine_controller.EngineControllerClientHandler; import com.drmangotea.tfmg.content.engines.engine_controller.EngineControllerClientHandler;
import com.drmangotea.tfmg.content.items.weapons.advanced_potato_cannon.AdvancedPotatoCannonItemRenderer; import com.drmangotea.tfmg.content.items.weapons.advanced_potato_cannon.AdvancedPotatoCannonItemRenderer;
import com.drmangotea.tfmg.content.items.weapons.quad_potato_cannon.QuadPotatoCannonItemRenderer; import com.drmangotea.tfmg.content.items.weapons.quad_potato_cannon.QuadPotatoCannonItemRenderer;

View File

@@ -63,19 +63,7 @@ public class TFMGCommonEvents {
TFMG.DEPOSITS.levelLoaded(world); TFMG.DEPOSITS.levelLoaded(world);
} }
@SubscribeEvent
public static void onBlockPlaced(BlockEvent.EntityPlaceEvent event) {
if (event.getEntity() instanceof Player player) {
if (player.getItemInHand(InteractionHand.OFF_HAND).is(TFMGItems.CONFIGURATION_WRENCH.get()) && event.getLevel().getBlockEntity(event.getPos()) instanceof IElectric be && be.canBeInGroups()) {
be.getData().group.id = player.getItemInHand(InteractionHand.OFF_HAND).get(TFMGDataComponents.CONFIGURATION_WRENCH_NUMBER);
be.updateNextTick();
be.sendStuff();
}
}
}
@SubscribeEvent @SubscribeEvent
public static void addReloadListeners(AddReloadListenerEvent event) { public static void addReloadListeners(AddReloadListenerEvent event) {

View File

@@ -111,6 +111,7 @@ public class TFMGTexts {
public static LangBuilder power(double value) { public static LangBuilder power(double value) {
return TFMGLang.text(" P = " + TFMGTexts.power(value)).color(0xcc4b74); return TFMGLang.text(" P = " + TFMGTexts.power(value)).color(0xcc4b74);
} }
} }
// Voltmeter Tooltips // Voltmeter Tooltips

View File

@@ -12,7 +12,7 @@ public class MachineConfig extends ConfigBase {
public final ConfigFloat FEtoWattTickConversionRate = f(1, 0, "FEtoWattTickConversionRate", Comments.FEtoWattTickConversionRate); public final ConfigFloat FEtoWattTickConversionRate = f(1, 0, "FEtoWattTickConversionRate", Comments.FEtoWattTickConversionRate);
public final ConfigInt electrolysisMinimumCurrent = i(10, 1, "electrolysisMinimumCurrent", Comments.electrolysisMinimumCurrent); public final ConfigInt electrolysisMinimumCurrent = i(5, 1, "electrolysisMinimumCurrent", Comments.electrolysisMinimumCurrent);
public final ConfigInt engineMaxLength = i(5, 1, "engineMaxLength", Comments.engineMaxLength); public final ConfigInt engineMaxLength = i(5, 1, "engineMaxLength", Comments.engineMaxLength);
public final ConfigInt surfaceScannerScanDepth = i(-64, -512, "surfaceScannerScanDepth", Comments.surfaceScannerScanDepth); public final ConfigInt surfaceScannerScanDepth = i(-64, -512, "surfaceScannerScanDepth", Comments.surfaceScannerScanDepth);
public final ConfigInt polarizerItemChargingRate = i(1000, 1, "polarizerItemChargingRate", Comments.polarizerItemChargingRate); public final ConfigInt polarizerItemChargingRate = i(1000, 1, "polarizerItemChargingRate", Comments.polarizerItemChargingRate);

View File

@@ -1,5 +1,6 @@
package com.drmangotea.tfmg.content.electricity.base; package com.drmangotea.tfmg.content.electricity.base;
import com.drmangotea.tfmg.content.electricity.connection.CableHubBlock;
import com.simibubi.create.api.equipment.goggles.IHaveHoveringInformation; import com.simibubi.create.api.equipment.goggles.IHaveHoveringInformation;
import com.simibubi.create.foundation.blockEntity.SmartBlockEntity; import com.simibubi.create.foundation.blockEntity.SmartBlockEntity;
import com.simibubi.create.foundation.blockEntity.behaviour.BlockEntityBehaviour; import com.simibubi.create.foundation.blockEntity.behaviour.BlockEntityBehaviour;
@@ -20,9 +21,7 @@ public class ElectricBlockEntity extends SmartBlockEntity implements IElectric,
public ElectricBlockEntity(BlockEntityType<?> type, BlockPos pos, BlockState state) { public ElectricBlockEntity(BlockEntityType<?> type, BlockPos pos, BlockState state) {
super(type, pos, state); super(type, pos, state);
data.connectNextTick = true; data.connectNextTick = true;
if (!canBeInGroups()) {
data.group = new ElectricalGroup(-1);
}
} }
@Override @Override
@@ -40,6 +39,8 @@ public class ElectricBlockEntity extends SmartBlockEntity implements IElectric,
lazyTickElectricity(); lazyTickElectricity();
} }
@Override @Override
public ElectricBlockValues getData() { public ElectricBlockValues getData() {
return data; return data;
@@ -71,12 +72,7 @@ public class ElectricBlockEntity extends SmartBlockEntity implements IElectric,
} }
@Override
protected void write(CompoundTag compound, HolderLookup.Provider registries, boolean clientPacket) {
super.write(compound, registries, clientPacket);
writeElectricity(compound, clientPacket);
}
@Override @Override
protected void read(CompoundTag compound, HolderLookup.Provider registries, boolean clientPacket) { protected void read(CompoundTag compound, HolderLookup.Provider registries, boolean clientPacket) {

View File

@@ -38,8 +38,6 @@ public class ElectricBlockValues {
public int failTimer = 0; public int failTimer = 0;
public ElectricalGroup group = new ElectricalGroup(0);
public ElectricBlockValues(long pos) { public ElectricBlockValues(long pos) {
this.electricalNetworkId = pos; this.electricalNetworkId = pos;
} }

View File

@@ -0,0 +1,37 @@
package com.drmangotea.tfmg.content.electricity.base;
import com.drmangotea.tfmg.registry.TFMGPackets;
import com.simibubi.create.foundation.blockEntity.SmartBlockEntity;
import com.simibubi.create.foundation.networking.BlockEntityDataPacket;
import io.netty.buffer.ByteBuf;
import net.minecraft.core.BlockPos;
import net.minecraft.network.codec.StreamCodec;
public class ElectricalBlockFailPacket extends BlockEntityDataPacket<SmartBlockEntity> {
public static final StreamCodec<ByteBuf, ElectricalBlockFailPacket> STREAM_CODEC = StreamCodec.composite(
BlockPos.STREAM_CODEC, packet -> packet.pos,
ElectricalBlockFailPacket::new
);
public ElectricalBlockFailPacket(BlockPos pos) {
super(pos);
}
@Override
protected void handlePacket(SmartBlockEntity blockEntity) {
if (blockEntity instanceof IElectric be) {
be.blockFail();
}
}
@Override
public PacketTypeProvider getTypeProvider() {
return TFMGPackets.ELECTRICAL_BLOCK_FAIL;
}
}

View File

@@ -1,13 +0,0 @@
package com.drmangotea.tfmg.content.electricity.base;
public class ElectricalGroup {
public int id;
public float resistance=0;
public ElectricalGroup(int id){
this.id = id;
}
}

View File

@@ -1,5 +1,7 @@
package com.drmangotea.tfmg.content.electricity.base; package com.drmangotea.tfmg.content.electricity.base;
import com.drmangotea.tfmg.content.electricity.network.large_switch.LargeSwitchBlockEntity;
import com.drmangotea.tfmg.content.electricity.network.transformer.large.LargeTransformerBlockEntity;
import com.drmangotea.tfmg.content.electricity.utilities.electric_motor.ElectricMotorBlockEntity; import com.drmangotea.tfmg.content.electricity.utilities.electric_motor.ElectricMotorBlockEntity;
import net.minecraft.core.BlockPos; import net.minecraft.core.BlockPos;
@@ -11,12 +13,13 @@ import java.util.Map;
public class ElectricalNetwork { public class ElectricalNetwork {
/** /**
* This class manages individual networks * This class manages individual networks
*/ */
public ElectricalNetwork(long id) { public ElectricalNetwork(long id) {
this.id = id; this.id = id;
} }
//blocks in the network //blocks in the network
public List<IElectric> members = new ArrayList<>(); public List<IElectric> members = new ArrayList<>();
@@ -26,6 +29,7 @@ public class ElectricalNetwork {
public long getId() { public long getId() {
return id; return id;
} }
//adds a new block to the network if it is not in it already //adds a new block to the network if it is not in it already
public void add(IElectric be) { public void add(IElectric be) {
List<Long> posList = new ArrayList<>(); List<Long> posList = new ArrayList<>();
@@ -43,7 +47,7 @@ public class ElectricalNetwork {
public void updateNetwork() { public void updateNetwork() {
int maxVoltage = 0; int maxVoltage = 0;
int resistance = 0; float resistance = 0;
int powerGeneration = 0; int powerGeneration = 0;
@@ -58,13 +62,12 @@ public class ElectricalNetwork {
*/ */
for (IElectric member : members) { for (IElectric member : members) {
member.getData().notEnoughPower = false; member.getData().notEnoughPower = false;
int groupId = member.getData().group.id; member.getData().highestCurrent = 0;
maxVoltage = Math.max(member.voltageGeneration(), maxVoltage); maxVoltage = Math.max(member.voltageGeneration(), maxVoltage);
resistance += (int) member.resistance(); if (member.resistance() != 0)
resistance += 1f / member.resistance();
powerGeneration += member.powerGeneration(); powerGeneration += member.powerGeneration();
if (member.canBeInGroups())
groups.put(groupId, groups.containsKey(groupId) ? groups.get(groupId) + member.resistance() : member.resistance());
} }
/** /**
* Phase II: * Phase II:
@@ -84,11 +87,12 @@ public class ElectricalNetwork {
member.getData().setVoltageNextTick = true; member.getData().setVoltageNextTick = true;
member.getData().networkPowerGeneration = powerGeneration; member.getData().networkPowerGeneration = powerGeneration;
member.setNetworkResistance(resistance); if (resistance != 0) {
member.setNetworkResistance(1f / resistance);
}else member.setNetworkResistance(0);
member.onNetworkChanged(oldVoltage, oldPower); member.onNetworkChanged(oldVoltage, oldPower);
if (groups.containsKey(member.getData().group.id))
member.getData().group.resistance = groups.get(member.getData().group.id);
} }
} }
/** /**
@@ -97,9 +101,11 @@ public class ElectricalNetwork {
* 2) informs subnetworks * 2) informs subnetworks
*/ */
for (IElectric member : members) { for (IElectric member : members) {
member.getData().highestCurrent = getCableCurrent(member);
if (member.resistance() == 0) {
member.getData().highestCurrent = getCableCurrent(member);
}
if (member instanceof VoltageAlteringBlockEntity be) { if (member instanceof VoltageAlteringBlockEntity be) {
be.updateInFront(); be.updateInFront();
} }
@@ -124,6 +130,10 @@ public class ElectricalNetwork {
} }
if (member instanceof VoltageAlteringBlockEntity be) if (member instanceof VoltageAlteringBlockEntity be)
be.updateInFront = true; be.updateInFront = true;
if (member instanceof LargeSwitchBlockEntity be)
be.updateInFront = true;
if (member instanceof LargeTransformerBlockEntity be)
be.updateInFront = true;
} }
} }
} }
@@ -131,17 +141,10 @@ public class ElectricalNetwork {
public static float getCableCurrent(IElectric be) { public static float getCableCurrent(IElectric be) {
float current = 0; float current = 0;
List<Integer> groups = new ArrayList<>();
for (IElectric member : be.getOrCreateElectricNetwork().members) { for (IElectric member : be.getOrCreateElectricNetwork().members) {
current += member.getCurrent();
if (member.canBeInGroups())
if (!groups.contains(member.getData().group.id)) {
groups.add(member.getData().group.id);
if (member.resistance() != 0)
current += member.getData().voltage / member.resistance();
}
} }
@@ -149,7 +152,6 @@ public class ElectricalNetwork {
} }
public void checkForLoops(BlockPos pos) { public void checkForLoops(BlockPos pos) {
members.forEach(member -> { members.forEach(member -> {

View File

@@ -1,9 +1,13 @@
package com.drmangotea.tfmg.content.electricity.base; package com.drmangotea.tfmg.content.electricity.base;
import com.drmangotea.tfmg.TFMG; import com.drmangotea.tfmg.TFMG;
import com.drmangotea.tfmg.base.TFMGUtils;
import com.drmangotea.tfmg.base.lang.TFMGLang;
import com.drmangotea.tfmg.base.lang.TFMGTexts; import com.drmangotea.tfmg.base.lang.TFMGTexts;
import com.drmangotea.tfmg.content.electricity.connection.cables.CableConnection; import com.drmangotea.tfmg.content.electricity.connection.cables.CableConnection;
import com.drmangotea.tfmg.content.electricity.connection.cables.CableConnectorBlockEntity; import com.drmangotea.tfmg.content.electricity.connection.cables.CableConnectorBlockEntity;
import com.drmangotea.tfmg.content.electricity.network.large_switch.LargeSwitchBlockEntity;
import com.drmangotea.tfmg.content.electricity.network.transformer.large.LargeTransformerBlockEntity;
import net.createmod.catnip.platform.CatnipServices; import net.createmod.catnip.platform.CatnipServices;
import net.minecraft.ChatFormatting; import net.minecraft.ChatFormatting;
import net.minecraft.core.BlockPos; import net.minecraft.core.BlockPos;
@@ -12,11 +16,7 @@ import net.minecraft.nbt.CompoundTag;
import net.minecraft.network.chat.Component; import net.minecraft.network.chat.Component;
import net.minecraft.server.level.ServerLevel; import net.minecraft.server.level.ServerLevel;
import net.minecraft.world.level.ChunkPos; import net.minecraft.world.level.ChunkPos;
import net.minecraft.world.level.Level;
import net.minecraft.world.level.LevelAccessor; import net.minecraft.world.level.LevelAccessor;
import net.minecraft.world.level.block.Blocks;
import net.neoforged.neoforge.capabilities.Capabilities;
import net.neoforged.neoforge.energy.IEnergyStorage;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
@@ -37,7 +37,6 @@ public interface IElectric {
LevelAccessor getLevelAccessor(); LevelAccessor getLevelAccessor();
/** /**
*
* @return true if the block is marked as removed * @return true if the block is marked as removed
*/ */
default boolean destroyed() { default boolean destroyed() {
@@ -46,6 +45,7 @@ public interface IElectric {
/** /**
* checks if this block is part of a valid network * checks if this block is part of a valid network
*
* @return block's network if valid, newly created network for this block otherwise * @return block's network if valid, newly created network for this block otherwise
*/ */
default ElectricalNetwork getOrCreateElectricNetwork() { default ElectricalNetwork getOrCreateElectricNetwork() {
@@ -117,8 +117,6 @@ public interface IElectric {
* loads data * loads data
*/ */
default void readElectricity(CompoundTag compound, boolean clientPacket) { default void readElectricity(CompoundTag compound, boolean clientPacket) {
getData().group = new ElectricalGroup(compound.getInt("GroupId"));
getData().group.resistance = compound.getFloat("GroupResistance");
if (!clientPacket) if (!clientPacket)
getData().connectNextTick = true; getData().connectNextTick = true;
} }
@@ -126,10 +124,7 @@ public interface IElectric {
/** /**
* saves data * saves data
*/ */
default void writeElectricity(CompoundTag compound, boolean clientPacket) {
compound.putInt("GroupId", getData().group.id);
compound.putFloat("GroupResistance", getData().group.resistance);
}
/** /**
* handles action that need to happen every tick and checks for scheduled updates * handles action that need to happen every tick and checks for scheduled updates
@@ -158,24 +153,35 @@ public interface IElectric {
} }
} }
default boolean isCable() {
return false;
}
/** /**
* handles actions that need to repeat every second * handles actions that need to repeat every second
*/ */
default void lazyTickElectricity() { default void lazyTickElectricity() {
if (getPowerUsage() > getData().networkPowerGeneration && !getData().notEnoughPower)
onPlaced();
if (getData().failTimer >= 4) { if (getData().failTimer >= 4) {
this.blockFail(); this.blockFail();
if (getLevelAccessor() instanceof ServerLevel serverLevel)
CatnipServices.NETWORK.sendToClientsTrackingChunk(serverLevel, new ChunkPos(getBlockPos()), new ElectricalBlockFailPacket(BlockPos.of(getPos())));
getData().failTimer = 0; getData().failTimer = 0;
sendStuff(); sendStuff();
} else if ((getData().voltage > getMaxVoltage() && getMaxVoltage() > 0) || (getCurrent() > getMaxCurrent() && getMaxCurrent() > 0)) { } else if ((getData().voltage > getMaxVoltage() && getMaxVoltage() > 0) || (getCurrent() > getMaxCurrent() && getMaxCurrent() > 0) || ((getData().highestCurrent > getMaxCurrent() && getMaxCurrent() > 0) && isCable())) {
getData().failTimer++; getData().failTimer++;
} }
} }
/**
* WIP, not functional
*/
default int getMaxVoltage() { default int getMaxVoltage() {
return 0; return 1000;
} }
default int getMaxCurrent() { default int getMaxCurrent() {
@@ -211,7 +217,6 @@ public interface IElectric {
} }
/** /**
*
* @return the block's world position * @return the block's world position
*/ */
default BlockPos getBlockPos() { default BlockPos getBlockPos() {
@@ -249,6 +254,13 @@ public interface IElectric {
TFMGTexts.header("multimeter").style(ChatFormatting.WHITE) TFMGTexts.header("multimeter").style(ChatFormatting.WHITE)
.forGoggles(tooltip); .forGoggles(tooltip);
if(getMaxVoltage()!=0&&getMaxVoltage()*0.8f < getData().getVoltage())
TFMGLang.translate("multimeter.approaching_overvoltage").add(TFMGLang.text("("+ TFMGUtils.formatUnits(getMaxVoltage(),"V" +")"))).style(ChatFormatting.RED).forGoggles(tooltip);
if(getMaxCurrent()!=0&&getMaxCurrent()*0.8f <getCurrent())
TFMGLang.translate("multimeter.approaching_overcurrent").add(TFMGLang.text("("+ TFMGUtils.formatUnits(getMaxCurrent(),"A" +")"))).style(ChatFormatting.RED).forGoggles(tooltip);
if (getData().notEnoughPower) TFMGTexts.Multimeter.notEnoughPower().forGoggles(tooltip, 1); if (getData().notEnoughPower) TFMGTexts.Multimeter.notEnoughPower().forGoggles(tooltip, 1);
if (voltageGeneration() > 0) { if (voltageGeneration() > 0) {
@@ -264,11 +276,6 @@ public interface IElectric {
TFMGTexts.Multimeter.power(getPowerUsage()).forGoggles(tooltip, 1); TFMGTexts.Multimeter.power(getPowerUsage()).forGoggles(tooltip, 1);
if (getData().group.id != -1) {
TFMGTexts.Multimeter.separator().forGoggles(tooltip);
TFMGTexts.Multimeter.group(getData().group.id).forGoggles(tooltip, 1);
}
if (isPlayerSneaking) { if (isPlayerSneaking) {
TFMGTexts.Multimeter.separator().forGoggles(tooltip); TFMGTexts.Multimeter.separator().forGoggles(tooltip);
TFMGTexts.Multimeter.networkGeneration(getNetworkPowerGeneration()).forGoggles(tooltip, 1); TFMGTexts.Multimeter.networkGeneration(getNetworkPowerGeneration()).forGoggles(tooltip, 1);
@@ -285,7 +292,6 @@ public interface IElectric {
ElectricBlockValues getData(); ElectricBlockValues getData();
/** /**
*
* @return true if the network has enough power * @return true if the network has enough power
*/ */
default boolean canWork() { default boolean canWork() {
@@ -295,6 +301,7 @@ public interface IElectric {
default void blockFail() { default void blockFail() {
getLevelAccessor().destroyBlock(BlockPos.of(getPos()), false); getLevelAccessor().destroyBlock(BlockPos.of(getPos()), false);
} }
default int getPowerUsage() { default int getPowerUsage() {
@@ -345,6 +352,30 @@ public interface IElectric {
return (float) powerGeneration() / (float) getData().networkPowerGeneration * getNetworkPowerUsage(); return (float) powerGeneration() / (float) getData().networkPowerGeneration * getNetworkPowerUsage();
} }
default int getBlocksConnectedToNetworkCount(long id) {
int count = 0;
for (IElectric member : getOrCreateElectricNetwork().members) {
if (member instanceof VoltageAlteringBlockEntity be && be.getControlledBlock() != null) {
if (be.getControlledBlock().getData().getId() == id)
count++;
}
if (member instanceof LargeSwitchBlockEntity be && be.getControlledBlock() != null) {
if (be.getControlledBlock().getData().getId() == id)
count++;
}
if (member instanceof LargeTransformerBlockEntity be && be.getControlledBlock() != null) {
if (be.getControlledBlock().getData().getId() == id)
count++;
}
}
return count;
}
default float resistance() { default float resistance() {
return 0; return 0;
@@ -387,7 +418,8 @@ public interface IElectric {
if (be.getData().getId() != getData().getId()) if (be.getData().getId() != getData().getId())
if (be.getData().getVoltage() != 0) if (be.getData().getVoltage() != 0)
if (be.hasElectricitySlot(direction)) { if (be.hasElectricitySlot(direction)) {
powerGeneration = Math.max(powerGeneration, be.getPowerUsage()) + 1; // powerGeneration = Math.max(powerGeneration, be.getPowerUsage()) + 1;
powerGeneration = Math.max(powerGeneration, be.getMaxPowerOutput());
if (powerGeneration > be.getNetworkPowerGeneration()) { if (powerGeneration > be.getNetworkPowerGeneration()) {
powerGeneration = 0; powerGeneration = 0;
be.data.updatePowerNextTick = true; be.data.updatePowerNextTick = true;
@@ -404,15 +436,12 @@ public interface IElectric {
return getData().networkResistance; return getData().networkResistance;
} }
default boolean networkUndersupplied() { default boolean networkUndersupplied() {
return getNetworkPowerUsage() > getData().networkPowerGeneration; return getNetworkPowerUsage() > getData().networkPowerGeneration;
} }
default int getMaxAmps() {
return (int) getCurrent();
}
default float getCurrent() { default float getCurrent() {
return getData().getVoltage() == 0 || resistance() == 0 ? 0 : ((float) getData().getVoltage() / (float) resistance()); return getData().getVoltage() == 0 || resistance() == 0 ? 0 : ((float) getData().getVoltage() / (float) resistance());
} }
@@ -433,17 +462,13 @@ public interface IElectric {
default void setVoltage(int newVoltage) { default void setVoltage(int newVoltage) {
if (canBeInGroups()) {
getData().voltage = (int) ((resistance() / getData().group.resistance) * (float) getData().voltageSupply);
return;
}
getData().voltage = newVoltage; getData().voltage = newVoltage;
} }
default void setNetworkResistance(int newUsage) { default void setNetworkResistance(float newUsage) {
getData().networkResistance = newUsage;
getData().networkResistance = (int) newUsage;
} }
@@ -454,9 +479,5 @@ public interface IElectric {
.remove(getPos()); .remove(getPos());
} }
default boolean canBeInGroups() {
return false;
}
} }

View File

@@ -18,9 +18,8 @@ public class KineticElectricBlockEntity extends GeneratingKineticBlockEntity imp
public KineticElectricBlockEntity(BlockEntityType<?> type, BlockPos pos, BlockState state) { public KineticElectricBlockEntity(BlockEntityType<?> type, BlockPos pos, BlockState state) {
super(type, pos, state); super(type, pos, state);
data.connectNextTick = true; data.connectNextTick = true;
if (!canBeInGroups()) {
data.group = new ElectricalGroup(-1);
}
} }
@Override @Override
@@ -68,11 +67,7 @@ public class KineticElectricBlockEntity extends GeneratingKineticBlockEntity imp
} }
@Override
protected void write(CompoundTag compound, HolderLookup.Provider registries, boolean clientPacket) {
super.write(compound,registries , clientPacket);
writeElectricity(compound,clientPacket);
}
@Override @Override
protected void read(CompoundTag compound, HolderLookup.Provider registries, boolean clientPacket) { protected void read(CompoundTag compound, HolderLookup.Provider registries, boolean clientPacket) {

View File

@@ -40,7 +40,14 @@ public class VoltageAlteringBlockEntity extends ElectricBlockEntity{
} }
} }
public int getMaxPowerOutput(){
return 10000;
}
@Override
public int getMaxCurrent() {
return 100;
}
@Override @Override
public int getPowerUsage() { public int getPowerUsage() {
@@ -70,8 +77,11 @@ public class VoltageAlteringBlockEntity extends ElectricBlockEntity{
public float resistance() { public float resistance() {
Direction facing = getDirection(); Direction facing = getDirection();
if (level.getBlockEntity(getBlockPos().relative(facing)) instanceof IElectric be && be.getData().getId() != data.getId()) { if (level.getBlockEntity(getBlockPos().relative(facing)) instanceof IElectric be && be.getData().getId() != data.getId()) {
if (be.hasElectricitySlot(facing.getOpposite())) if (be.hasElectricitySlot(facing.getOpposite())){
return Math.max(be.getNetworkResistance(), 0); int count = getBlocksConnectedToNetworkCount(getControlledBlock().getData().getId());
if(count!=0)
return Math.max(be.getNetworkResistance()*count, 0);
}
} }
return 0; return 0;
} }

View File

@@ -46,31 +46,7 @@ public class ElectriciansWrenchItem extends Item {
} }
@Override
public InteractionResult useOn(UseOnContext context) {
Level level = context.getLevel();
BlockPos pos = context.getClickedPos();
Player player = context.getPlayer();
if(player != null && !player.isShiftKeyDown()) {
if (level.getBlockEntity(pos) instanceof IElectric be && be.canBeInGroups()) {
be.updateNextTick();
be.sendStuff();
be.getData().group.id = context.getItemInHand().getOrDefault(TFMGDataComponents.CONFIGURATION_WRENCH_NUMBER, 0);
TFMGUtils.playSound(level, pos, SoundEvents.ITEM_PICKUP, SoundSource.BLOCKS, context.getPlayer());
if(be instanceof ElectricMotorBlockEntity kineticBE)
kineticBE.delayedUpdate=true;
return InteractionResult.SUCCESS;
}
if (level.getBlockEntity(pos) instanceof AbstractEngineBlockEntity be ) {
be.changeDirection();
return InteractionResult.SUCCESS;
}
}
return super.useOn(context);
}
@OnlyIn(Dist.CLIENT) @OnlyIn(Dist.CLIENT)
private void openWandGUI(ItemStack itemStack, InteractionHand hand) { private void openWandGUI(ItemStack itemStack, InteractionHand hand) {

View File

@@ -11,9 +11,13 @@ import net.minecraft.world.level.block.Block;
import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.entity.BlockEntityType;
import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.BlockState;
public class CableHubBlock extends Block implements IBE<ElectricBlockEntity>, IWrenchable { public class CableHubBlock extends Block implements IBE<CableHubBlockEntity>, IWrenchable {
public CableHubBlock(Properties p_49795_) {
super(p_49795_); public int maxCurrent;
public CableHubBlock(Properties properties, int maxCurrent) {
super(properties);
this.maxCurrent = maxCurrent;
} }
@Override @Override
@@ -23,16 +27,17 @@ public class CableHubBlock extends Block implements IBE<ElectricBlockEntity>, IW
@Override @Override
public void onRemove(BlockState state, Level level, BlockPos pos, BlockState newState, boolean isMoving) { public void onRemove(BlockState state, Level level, BlockPos pos, BlockState newState, boolean isMoving) {
IBE.onRemove(state, level, pos, newState); IBE.onRemove(state, level, pos, newState);
} }
@Override @Override
public Class<ElectricBlockEntity> getBlockEntityClass() { public Class<CableHubBlockEntity> getBlockEntityClass() {
return ElectricBlockEntity.class; return CableHubBlockEntity.class;
} }
@Override @Override
public BlockEntityType<? extends ElectricBlockEntity> getBlockEntityType() { public BlockEntityType<? extends CableHubBlockEntity> getBlockEntityType() {
return TFMGBlockEntities.CABLE_HUB.get(); return TFMGBlockEntities.CABLE_HUB.get();
} }
} }

View File

@@ -0,0 +1,27 @@
package com.drmangotea.tfmg.content.electricity.connection;
import com.drmangotea.tfmg.content.electricity.base.ElectricBlockEntity;
import net.minecraft.core.BlockPos;
import net.minecraft.world.level.block.entity.BlockEntityType;
import net.minecraft.world.level.block.state.BlockState;
public class CableHubBlockEntity extends ElectricBlockEntity {
public CableHubBlockEntity(BlockEntityType<?> type, BlockPos pos, BlockState state) {
super(type, pos, state);
}
@Override
public int getMaxCurrent() {
return ((CableHubBlock)getBlockState().getBlock()).maxCurrent;
}
@Override
public int getMaxVoltage() {
return 5000;
}
@Override
public boolean isCable() {
return true;
}
}

View File

@@ -71,6 +71,10 @@ public class CableConnectorBlockEntity extends ElectricBlockEntity implements IH
notifyRemoval(); notifyRemoval();
} }
@Override
public int getMaxVoltage() {
return 100000;
}
@Override @Override
public boolean hasElectricitySlot(Direction direction) { public boolean hasElectricitySlot(Direction direction) {

View File

@@ -20,9 +20,7 @@ public class CopycatCableBlockEntity extends CopycatBlockEntity implements IElec
public CopycatCableBlockEntity(BlockEntityType<?> type, BlockPos pos, BlockState state) { public CopycatCableBlockEntity(BlockEntityType<?> type, BlockPos pos, BlockState state) {
super(type, pos, state); super(type, pos, state);
data.connectNextTick = true; data.connectNextTick = true;
if (!canBeInGroups()) {
data.group = new ElectricalGroup(-1);
}
} }
@Override @Override
@@ -71,12 +69,7 @@ public class CopycatCableBlockEntity extends CopycatBlockEntity implements IElec
tickElectricity(); tickElectricity();
} }
@Override
protected void write(CompoundTag compound, HolderLookup.Provider registries, boolean clientPacket) {
super.write(compound,registries , clientPacket);
writeElectricity(compound,clientPacket);
}
@Override @Override
protected void read(CompoundTag compound, HolderLookup.Provider registries, boolean clientPacket) { protected void read(CompoundTag compound, HolderLookup.Provider registries, boolean clientPacket) {

View File

@@ -16,6 +16,10 @@ public class DiagonalCableBlockEntity extends ElectricBlockEntity {
super(type, pos, state); super(type, pos, state);
} }
@Override
public int getMaxVoltage() {
return 100000;
}
@Override @Override
public boolean hasElectricitySlot(Direction direction) { public boolean hasElectricitySlot(Direction direction) {

View File

@@ -15,7 +15,10 @@ public class CableTubeBlockEntity extends ElectricBlockEntity {
super(type, pos, state); super(type, pos, state);
} }
@Override
public int getMaxVoltage() {
return 10000;
}
@Override @Override
public boolean hasElectricitySlot(Direction direction) { public boolean hasElectricitySlot(Direction direction) {

View File

@@ -19,11 +19,11 @@ public class NetIdDisplaySource extends SingleLineDisplaySource {
if (!(smart instanceof IElectric electric)) if (!(smart instanceof IElectric electric))
return EMPTY_LINE; return EMPTY_LINE;
int id = electric.getData().group.id; double id = electric.getOrCreateElectricNetwork().id;
if (smart.getBehaviour(ObservedElectricBehaviour.TYPE) != null) { if (smart.getBehaviour(ObservedElectricBehaviour.TYPE) != null) {
IElectric observed = smart.getBehaviour(ObservedElectricBehaviour.TYPE).getObservedElectric(); IElectric observed = smart.getBehaviour(ObservedElectricBehaviour.TYPE).getObservedElectric();
if (observed != null) id = observed.getData().group.id; if (observed != null) id = observed.getOrCreateElectricNetwork().id;
} }
if (id == -1) return EMPTY_LINE; if (id == -1) return EMPTY_LINE;

View File

@@ -36,6 +36,15 @@ public class CreativeGeneratorBlockEntity extends ElectricBlockEntity {
behaviours.add(outputVoltage); behaviours.add(outputVoltage);
} }
@Override
public int getMaxVoltage() {
return 0;
}
@Override
public int getMaxCurrent() {
return 0;
}
public static void update(CreativeGeneratorBlockEntity be){ public static void update(CreativeGeneratorBlockEntity be){
be.updateNextTick();; be.updateNextTick();;
@@ -48,7 +57,7 @@ public class CreativeGeneratorBlockEntity extends ElectricBlockEntity {
@Override @Override
public int powerGeneration() { public int powerGeneration() {
return outputVoltage.getValue()*100; return 999999999;
} }
class CreativeGeneratorValueBox extends ValueBoxTransform.Sided { class CreativeGeneratorValueBox extends ValueBoxTransform.Sided {

View File

@@ -31,6 +31,7 @@ public class RotorBlockEntity extends KineticElectricBlockEntity {
boolean findNextTick = false; boolean findNextTick = false;
List<BlockPos> stators = new ArrayList<>(); List<BlockPos> stators = new ArrayList<>();
public static final Map<Axis, Map<StatorOffset, BlockState>> statorPosition = setStatorPositons(); public static final Map<Axis, Map<StatorOffset, BlockState>> statorPosition = setStatorPositons();
@@ -50,6 +51,12 @@ public class RotorBlockEntity extends KineticElectricBlockEntity {
visualSpeed.chase(getGeneratedSpeed(), 1 / 128f, LerpedFloat.Chaser.EXP); visualSpeed.chase(getGeneratedSpeed(), 1 / 128f, LerpedFloat.Chaser.EXP);
} }
@Override
public int getMaxVoltage() {
return 10000;
}
@Override @Override
public void tick() { public void tick() {
super.tick(); super.tick();

View File

@@ -31,7 +31,10 @@ public class StatorBlockEntity extends ElectricBlockEntity implements IHaveGoggl
} }
@Override
public int getMaxVoltage() {
return 10000;
}
@Override @Override
public void tick() { public void tick() {

View File

@@ -62,6 +62,11 @@ public class LightBulbBlockEntity extends ElectricBlockEntity {
notifyUpdate(); notifyUpdate();
} }
@Override
public int getMaxCurrent() {
return 1;
}
@Override @Override
public void blockFail() { public void blockFail() {
@@ -106,10 +111,7 @@ public class LightBulbBlockEntity extends ElectricBlockEntity {
color = NBTHelper.readEnum(compound,"color",DyeColor.class); color = NBTHelper.readEnum(compound,"color",DyeColor.class);
} }
@Override
public boolean canBeInGroups() {
return true;
}
protected void analogSignalChanged(int newSignal) { protected void analogSignalChanged(int newSignal) {
hasSignal = newSignal > 0; hasSignal = newSignal > 0;

View File

@@ -25,9 +25,10 @@ public class NeonTubeBlockEntity extends ElectricBlockEntity {
} }
@Override @Override
public boolean canBeInGroups() { public int getMaxCurrent() {
return true; return 1;
} }
@Override @Override
public void tick() { public void tick() {
super.tick(); super.tick();

View File

@@ -0,0 +1,131 @@
package com.drmangotea.tfmg.content.electricity.network.large_switch;
import com.drmangotea.tfmg.base.TFMGShapes;
import com.drmangotea.tfmg.content.electricity.base.IElectric;
import com.drmangotea.tfmg.registry.TFMGBlockEntities;
import com.simibubi.create.content.kinetics.base.HorizontalKineticBlock;
import com.simibubi.create.foundation.block.IBE;
import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction;
import net.minecraft.world.entity.LivingEntity;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.context.BlockPlaceContext;
import net.minecraft.world.level.BlockGetter;
import net.minecraft.world.level.Level;
import net.minecraft.world.level.LevelAccessor;
import net.minecraft.world.level.LevelReader;
import net.minecraft.world.level.block.Block;
import net.minecraft.world.level.block.Blocks;
import net.minecraft.world.level.block.entity.BlockEntityType;
import net.minecraft.world.level.block.state.BlockState;
import net.minecraft.world.level.block.state.StateDefinition;
import net.minecraft.world.level.block.state.properties.BooleanProperty;
import net.minecraft.world.level.storage.loot.LootParams;
import net.minecraft.world.phys.shapes.CollisionContext;
import net.minecraft.world.phys.shapes.VoxelShape;
import javax.annotation.Nullable;
import java.util.ArrayList;
import java.util.List;
public class LargeSwitchBlock extends HorizontalKineticBlock implements IBE<LargeSwitchBlockEntity> {
public static final BooleanProperty IS_MAIN_PART = BooleanProperty.create("is_main_part");
public LargeSwitchBlock(Properties properties) {
super(properties);
}
@Override
protected void createBlockStateDefinition(StateDefinition.Builder<Block, BlockState> builder) {
super.createBlockStateDefinition(builder);
builder.add(IS_MAIN_PART);
}
@Override
public void setPlacedBy(Level level, BlockPos pos, BlockState state, @Nullable LivingEntity placer, ItemStack stack) {
super.setPlacedBy(level, pos, state, placer, stack);
if (!level.isClientSide) {
BlockPos blockpos = pos.relative(state.getValue(HORIZONTAL_FACING));
level.setBlock(blockpos, state.setValue(IS_MAIN_PART, false), 3);
level.blockUpdated(pos, Blocks.AIR);
state.updateNeighbourShapes(level, pos, 3);
}
}
@Override
protected VoxelShape getShape(BlockState state, BlockGetter level, BlockPos pos, CollisionContext context) {
return state.getValue(IS_MAIN_PART) ? TFMGShapes.LARGE_SWITCH_PRIMARY.get(state.getValue(HORIZONTAL_FACING)) : TFMGShapes.LARGE_SWITCH_SECONDARY.get(state.getValue(HORIZONTAL_FACING));
}
private static Direction getNeighbourDirection(boolean mainPart, Direction direction) {
return mainPart ? direction : direction.getOpposite();
}
@Override
public BlockState getStateForPlacement(BlockPlaceContext context) {
Level level = context.getLevel();
BlockPos pos = context.getClickedPos();
BlockPos neighbourPos = pos.relative(context.getHorizontalDirection().getOpposite());
if(!level.getBlockState(neighbourPos).isAir())
return null;
return super.getStateForPlacement(context);
}
@Override
protected List<ItemStack> getDrops(BlockState state, LootParams.Builder params) {
if(!state.getValue(IS_MAIN_PART))
return new ArrayList<>();
return super.getDrops(state, params);
}
@Override
protected BlockState updateShape(BlockState state, Direction facing, BlockState facingState, LevelAccessor level, BlockPos currentPos, BlockPos facingPos) {
if (facing == getNeighbourDirection(state.getValue(IS_MAIN_PART), state.getValue(HORIZONTAL_FACING))) {
if(!(facingState.is(this) && facingState.getValue(IS_MAIN_PART) != state.getValue(IS_MAIN_PART)))
return Blocks.AIR.defaultBlockState();
}
return super.updateShape(state, facing, facingState, level, currentPos, facingPos);
}
@Override
public boolean hasShaftTowards(LevelReader world, BlockPos pos, BlockState state, Direction face) {
if(!state.getValue(IS_MAIN_PART))
return false;
return state.getValue(HORIZONTAL_FACING).getClockWise().getAxis() == face.getAxis();
}
@Override
public void onPlace(BlockState pState, Level level, BlockPos pos, BlockState pOldState, boolean pIsMoving) {
withBlockEntityDo(level, pos, IElectric::onPlaced);
}
@Override
public void onRemove(BlockState state, Level level, BlockPos pos, BlockState newState, boolean isMoving) {
IBE.onRemove(state, level, pos, newState);
}
@Override
public Direction.Axis getRotationAxis(BlockState state) {
return state.getValue(HORIZONTAL_FACING).getClockWise().getAxis();
}
@Override
public Class<LargeSwitchBlockEntity> getBlockEntityClass() {
return LargeSwitchBlockEntity.class;
}
@Override
public BlockEntityType<? extends LargeSwitchBlockEntity> getBlockEntityType() {
return TFMGBlockEntities.LARGE_SWITCH.get();
}
}

View File

@@ -0,0 +1,217 @@
package com.drmangotea.tfmg.content.electricity.network.large_switch;
import com.drmangotea.tfmg.base.lang.TFMGLang;
import com.drmangotea.tfmg.content.electricity.base.IElectric;
import com.drmangotea.tfmg.content.electricity.base.KineticElectricBlockEntity;
import com.drmangotea.tfmg.content.electricity.base.UpdateInFrontPacket;
import net.createmod.catnip.animation.LerpedFloat;
import net.createmod.catnip.platform.CatnipServices;
import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction;
import net.minecraft.network.chat.Component;
import net.minecraft.server.level.ServerLevel;
import net.minecraft.world.level.ChunkPos;
import net.minecraft.world.level.block.DirectionalBlock;
import net.minecraft.world.level.block.HorizontalDirectionalBlock;
import net.minecraft.world.level.block.entity.BlockEntityType;
import net.minecraft.world.level.block.state.BlockState;
import java.util.List;
import static com.drmangotea.tfmg.content.electricity.network.large_switch.LargeSwitchBlock.IS_MAIN_PART;
import static com.simibubi.create.content.kinetics.base.HorizontalKineticBlock.HORIZONTAL_FACING;
public class LargeSwitchBlockEntity extends KineticElectricBlockEntity {
public boolean updateInFront = false;
public boolean closed = false;
public LerpedFloat visualAngle = LerpedFloat.angular();
public float angle = 900;
final boolean isMainPart;
public LargeSwitchBlockEntity(BlockEntityType<?> type, BlockPos pos, BlockState state) {
super(type, pos, state);
isMainPart = state.getValue(IS_MAIN_PART);
visualAngle.setValue(90);
}
public int voltageGeneration() {
if (isMainPart)
return 0;
int voltageGeneration = 0;
if (getLevelAccessor().getBlockEntity(getBlockPos().relative(getBlockState().getValue(HORIZONTAL_FACING).getOpposite())) instanceof LargeSwitchBlockEntity be)
if (be.getData().getId() != getData().getId())
if (be.getData().getVoltage() != 0)
if (be.closed) {
voltageGeneration = Math.max(voltageGeneration, be.data.getVoltage());
getData().getsOutsidePower = true;
}
if (voltageGeneration == 0)
getData().getsOutsidePower = false;
return voltageGeneration;
}
@Override
public int getMaxCurrent() {
return 1000;
}
@Override
public int getMaxVoltage() {
return 100000;
}
@Override
public void lazyTick() {
super.lazyTick();
if(data.notEnoughPower&&!getBlockState().getValue(IS_MAIN_PART))
if(level.getBlockEntity(getBlockPos().relative(getBlockState().getValue(HORIZONTAL_FACING).getOpposite()))instanceof LargeSwitchBlockEntity be)
be.onPlaced();
}
public IElectric getControlledBlock() {
Direction facing = getBlockState().getValue(HORIZONTAL_FACING);
if(level.getBlockEntity(getBlockPos().relative(facing))instanceof LargeSwitchBlockEntity be){
return be;
}
return null;
}
@Override
public float resistance() {
if (!isMainPart)
return 0;
if(!closed)
return 0;
Direction facing = getBlockState().getValue(HORIZONTAL_FACING);
if (level.getBlockEntity(getBlockPos().relative(facing)) instanceof IElectric be && be.getData().getId() != data.getId()) {
int count = getBlocksConnectedToNetworkCount(getControlledBlock().getData().getId());
if(count!=0)
return Math.max(be.getNetworkResistance()*count, 0);
}
return 0;
}
@Override
public void onNetworkChanged(int oldVoltage, int oldPower) {
super.onNetworkChanged(oldVoltage, oldPower);
if (oldVoltage != getData().getVoltage() || oldPower != getPowerUsage()) {
updateInFront = true;
}
sendStuff();
setChanged();
}
public int powerGeneration() {
if (isMainPart)
return 0;
if(level.getBlockEntity(getBlockPos().relative(getBlockState().getValue(HORIZONTAL_FACING).getOpposite())) instanceof LargeSwitchBlockEntity be&&be.data.notEnoughPower)
return 0;
int powerGeneration = 0;
if (getLevelAccessor().getBlockEntity(getBlockPos().relative(getBlockState().getValue(HORIZONTAL_FACING).getOpposite())) instanceof LargeSwitchBlockEntity be)
if (be.getData().getId() != getData().getId())
if (be.getData().getVoltage() != 0)
if (be.closed) {
powerGeneration = Math.max(powerGeneration, 10000);
getData().getsOutsidePower = true;
}
if (powerGeneration == 0)
getData().getsOutsidePower = false;
return powerGeneration;
}
public void updateInFront() {
if (level instanceof ServerLevel serverLevel)
CatnipServices.NETWORK.sendToClientsTrackingChunk(serverLevel, new ChunkPos(worldPosition), new UpdateInFrontPacket(BlockPos.of(getPos())));
Direction facing = getBlockState().getValue(HORIZONTAL_FACING);
if (level.getBlockEntity(getBlockPos().relative(facing)) instanceof IElectric be && be.getData().getId() != data.getId()) {
be.updateNextTick();
}
sendStuff();
setChanged();
}
@Override
public void tick() {
super.tick();
if (level.isClientSide) {
visualAngle.chase(angle / 10d, 1d, LerpedFloat.Chaser.EXP);
visualAngle.tickChaser();
}
if(updateInFront) {
updateInFront();
updateInFront = false;
}
if (!isMainPart)
return;
if (angle < 0)
angle = 0;
if (angle > 900)
angle = 900;
if (getSpeed() == 0)
return;
if (getSpeed() < 0 && angle != 900) {
angle += getArmSpeed();
}
if (getSpeed() > 0 && angle != 0) {
angle -= getArmSpeed();
}
boolean oldValue = closed;
if (data.voltage < 1000) {
closed = angle == 0;
} else {
closed = angle < data.voltage / 700f;
}
if (oldValue != closed)
updateInFront();
}
@Override
public boolean makeMultimeterTooltip(List<Component> tooltip, boolean isPlayerSneaking) {
super.makeMultimeterTooltip(tooltip, isPlayerSneaking);
return true;
}
public float getArmSpeed() {
return Math.abs(getSpeed()) * 0.3f;
}
@Override
public boolean hasElectricitySlot(Direction direction) {
return (direction == getBlockState().getValue(HORIZONTAL_FACING).getOpposite() && getBlockState().getValue(IS_MAIN_PART)) || (direction == getBlockState().getValue(HORIZONTAL_FACING) && !getBlockState().getValue(IS_MAIN_PART));
}
}

View File

@@ -0,0 +1,43 @@
package com.drmangotea.tfmg.content.electricity.network.large_switch;
import com.drmangotea.tfmg.content.electricity.utilities.converter.ConverterBlock;
import com.simibubi.create.content.kinetics.base.HorizontalKineticBlock;
import com.simibubi.create.foundation.data.SpecialBlockStateGen;
import com.tterrag.registrate.providers.DataGenContext;
import com.tterrag.registrate.providers.RegistrateBlockstateProvider;
import net.minecraft.world.level.block.Block;
import net.minecraft.world.level.block.HorizontalDirectionalBlock;
import net.minecraft.world.level.block.state.BlockState;
import net.neoforged.neoforge.client.model.generators.ModelFile;
import static com.simibubi.create.foundation.data.AssetLookup.partialBaseModel;
public class LargeSwitchGenerator extends SpecialBlockStateGen {
@Override
protected int getXRotation(BlockState state) {
return 0;
}
@Override
protected int getYRotation(BlockState state) {
return switch (state.getValue(HorizontalKineticBlock.HORIZONTAL_FACING)) {
case NORTH -> 180;
case SOUTH -> 0;
case WEST -> 90;
case EAST -> 270;
case DOWN -> 90;
case UP -> 90;
};
}
@Override
public <T extends Block> ModelFile getModel(DataGenContext<Block, T> ctx, RegistrateBlockstateProvider prov,
BlockState state) {
return !state.getValue(LargeSwitchBlock.IS_MAIN_PART) ? partialBaseModel(ctx, prov, "secondary")
: partialBaseModel(ctx, prov,"primary");
}
}

View File

@@ -0,0 +1,69 @@
package com.drmangotea.tfmg.content.electricity.network.large_switch;
import com.drmangotea.tfmg.content.machinery.misc.winding_machine.WindingMachineBlockEntity;
import com.drmangotea.tfmg.registry.TFMGItems;
import com.drmangotea.tfmg.registry.TFMGPartialModels;
import com.mojang.blaze3d.vertex.PoseStack;
import com.mojang.blaze3d.vertex.VertexConsumer;
import com.simibubi.create.AllPartialModels;
import com.simibubi.create.content.kinetics.base.KineticBlockEntityRenderer;
import dev.engine_room.flywheel.lib.transform.TransformStack;
import net.createmod.catnip.render.CachedBuffers;
import net.createmod.catnip.render.SuperByteBuffer;
import net.minecraft.client.Minecraft;
import net.minecraft.client.renderer.MultiBufferSource;
import net.minecraft.client.renderer.RenderType;
import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider;
import net.minecraft.client.renderer.entity.ItemRenderer;
import net.minecraft.client.resources.model.BakedModel;
import net.minecraft.core.Direction;
import net.minecraft.world.item.ItemDisplayContext;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.level.block.state.BlockState;
import net.neoforged.neoforge.common.Tags;
import static com.drmangotea.tfmg.content.electricity.network.large_switch.LargeSwitchBlock.IS_MAIN_PART;
import static com.simibubi.create.content.kinetics.base.HorizontalKineticBlock.HORIZONTAL_FACING;
import static net.minecraft.world.level.block.HorizontalDirectionalBlock.FACING;
public class LargeSwitchRenderer extends KineticBlockEntityRenderer<LargeSwitchBlockEntity> {
public LargeSwitchRenderer(BlockEntityRendererProvider.Context context) {
super(context);
}
@Override
protected void renderSafe(LargeSwitchBlockEntity be, float partialTicks, PoseStack ms, MultiBufferSource bufferSource, int light, int overlay) {
if(!be.getBlockState().getValue(IS_MAIN_PART))
return;
BlockState blockState = be.getBlockState();
VertexConsumer vb = bufferSource.getBuffer(RenderType.solid());
CachedBuffers.partial(TFMGPartialModels.LARGE_SWITCH_ARM, blockState)
.light(light)
.center()
.rotateYDegrees(blockState.getValue(HORIZONTAL_FACING).getAxis() == Direction.Axis.Z ? Math.abs(blockState.getValue(FACING).toYRot() ) : blockState.getValue(FACING).toYRot()- 180)
.translateY(8/16f)
.rotateXDegrees(-be.visualAngle.getValue(partialTicks))
.uncenter()
.renderInto(ms, vb);
super.renderSafe(be, partialTicks, ms, bufferSource, light, overlay);
}
@Override
protected SuperByteBuffer getRotatedModel(LargeSwitchBlockEntity be, BlockState state) {
if(!state.getValue(IS_MAIN_PART))
return CachedBuffers.partialFacing(TFMGPartialModels.LARGE_SWITCH_BUFFER, state, state
.getValue(FACING).getCounterClockWise());
return CachedBuffers.partialFacing(TFMGPartialModels.LARGE_SWITCH_SHAFT, state, state
.getValue(FACING).getCounterClockWise());
}
}

View File

@@ -0,0 +1,64 @@
package com.drmangotea.tfmg.content.electricity.network.large_switch;
import com.drmangotea.tfmg.content.machinery.misc.winding_machine.WindingMachineBlockEntity;
import com.drmangotea.tfmg.registry.TFMGPartialModels;
import com.simibubi.create.AllPartialModels;
import com.simibubi.create.content.kinetics.base.KineticBlockEntityVisual;
import com.simibubi.create.content.kinetics.base.RotatingInstance;
import com.simibubi.create.foundation.render.AllInstanceTypes;
import dev.engine_room.flywheel.api.instance.Instance;
import dev.engine_room.flywheel.api.visualization.VisualizationContext;
import dev.engine_room.flywheel.lib.model.Models;
import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction;
import java.util.function.Consumer;
import static com.drmangotea.tfmg.content.electricity.network.large_switch.LargeSwitchBlock.IS_MAIN_PART;
import static com.simibubi.create.content.kinetics.base.HorizontalKineticBlock.HORIZONTAL_FACING;
public class LargeSwitchVisual extends KineticBlockEntityVisual<LargeSwitchBlockEntity> {
protected final RotatingInstance shaft;
public LargeSwitchVisual(VisualizationContext context, LargeSwitchBlockEntity blockEntity, float partialTick) {
super(context, blockEntity, partialTick);
Direction facing = blockEntity.getBlockState().getValue(HORIZONTAL_FACING).getCounterClockWise();
if(!blockEntity.getBlockState().getValue(IS_MAIN_PART)) {
shaft = null;
return;
}
shaft = instancerProvider().instancer(AllInstanceTypes.ROTATING, Models.partial(TFMGPartialModels.LARGE_SWITCH_SHAFT))
.createInstance();
shaft.setup(blockEntity)
.setPosition(getVisualPosition())
.rotateToFace(Direction.SOUTH, facing)
.setChanged();
}
@Override
public void update(float pt) {
shaft.setup(blockEntity)
.setChanged();
}
@Override
public void updateLight(float partialTick) {
Direction facing = blockEntity.getBlockState().getValue(HORIZONTAL_FACING).getCounterClockWise();
BlockPos behind = pos.relative(facing);
relight(behind, shaft);
}
@Override
protected void _delete() {
shaft.delete();
}
@Override
public void collectCrumblingInstances(Consumer<Instance> consumer) {
consumer.accept(shaft);
}
}

View File

@@ -0,0 +1,75 @@
package com.drmangotea.tfmg.content.electricity.network.transformer.large;
import com.drmangotea.tfmg.content.electricity.storage.AccumulatorBlockEntity;
import com.drmangotea.tfmg.registry.TFMGBlockEntities;
import com.drmangotea.tfmg.registry.TFMGBlocks;
import com.drmangotea.tfmg.registry.TFMGDataComponents;
import com.simibubi.create.AllSoundEvents;
import com.simibubi.create.foundation.block.IBE;
import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction;
import net.minecraft.world.InteractionHand;
import net.minecraft.world.ItemInteractionResult;
import net.minecraft.world.entity.LivingEntity;
import net.minecraft.world.entity.item.ItemEntity;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.level.Level;
import net.minecraft.world.level.block.Block;
import net.minecraft.world.level.block.entity.BlockEntityType;
import net.minecraft.world.level.block.state.BlockState;
import net.minecraft.world.level.material.FluidState;
import net.minecraft.world.level.storage.loot.LootParams;
import net.minecraft.world.phys.BlockHitResult;
import java.util.Collections;
import java.util.List;
public class LargeCoilBlock extends Block implements IBE<LargeCoilBlockEntity> {
public LargeCoilBlock(Properties properties) {
super(properties);
}
@Override
public void setPlacedBy(Level level, BlockPos pos, BlockState state, LivingEntity placer, ItemStack stack) {
super.setPlacedBy(level, pos, state, placer, stack);
withBlockEntityDo(level, pos, be -> be.setCapacity(stack));
}
@Override
public List<ItemStack> getDrops(BlockState p_287732_, LootParams.Builder p_287596_) {
return Collections.emptyList();
}
@Override
protected ItemInteractionResult useItemOn(ItemStack stack, BlockState state, Level level, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hitResult) {
if(stack.is(TFMGBlocks.LAMINATED_MAGNETIC_ALLOY_BLOCK.asItem())){
if(level.getBlockEntity(pos) instanceof LargeCoilBlockEntity be)
return be.createTransformer(player,player.getNearestViewDirection());
}
return ItemInteractionResult.PASS_TO_DEFAULT_BLOCK_INTERACTION;
}
@Override
public boolean onDestroyedByPlayer(BlockState state, Level level, BlockPos pos, Player player, boolean willHarvest, FluidState fluid) {
if(!player.isCreative()&&level.getBlockEntity(pos) instanceof LargeCoilBlockEntity be) {
ItemStack item = TFMGBlocks.LARGE_COIL.asItem().getDefaultInstance();
item.set(TFMGDataComponents.COIL_TURNS, be.turns);
ItemEntity itemToSpawn = new ItemEntity((Level) level, pos.getX() + 0.5f, pos.getY() + 0.5f, pos.getZ() + 0.5f, item);
if (itemToSpawn.getItem().getCount() > 0)
level.addFreshEntity(itemToSpawn);
}
return super.onDestroyedByPlayer(state, level, pos, player, willHarvest, fluid);
}
@Override
public Class<LargeCoilBlockEntity> getBlockEntityClass() {
return LargeCoilBlockEntity.class;
}
@Override
public BlockEntityType<? extends LargeCoilBlockEntity> getBlockEntityType() {
return TFMGBlockEntities.LARGE_COIL.get();
}
}

View File

@@ -0,0 +1,101 @@
package com.drmangotea.tfmg.content.electricity.network.transformer.large;
import com.drmangotea.tfmg.base.TFMGUtils;
import com.drmangotea.tfmg.registry.TFMGBlocks;
import com.drmangotea.tfmg.registry.TFMGDataComponents;
import com.simibubi.create.foundation.blockEntity.SmartBlockEntity;
import com.simibubi.create.foundation.blockEntity.behaviour.BlockEntityBehaviour;
import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction;
import net.minecraft.core.HolderLookup;
import net.minecraft.nbt.CompoundTag;
import net.minecraft.sounds.SoundEvents;
import net.minecraft.sounds.SoundSource;
import net.minecraft.world.ItemInteractionResult;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.level.block.entity.BlockEntityType;
import net.minecraft.world.level.block.state.BlockState;
import java.util.ArrayList;
import java.util.List;
public class LargeCoilBlockEntity extends SmartBlockEntity {
int turns = 0;
public LargeCoilBlockEntity(BlockEntityType<?> type, BlockPos pos, BlockState state) {
super(type, pos, state);
}
public ItemInteractionResult createTransformer(Player player, Direction lookingDirection) {
BlockPos otherCoilPos = null;
Direction otherCoilDirection;
List<Direction> coilDirections = new ArrayList<>();
for (Direction direction : Direction.values()) {
if (!direction.getAxis().isVertical()) {
BlockPos coilPos = getBlockPos().relative(direction);
if (level.getBlockState(coilPos).is(TFMGBlocks.LARGE_COIL))
coilDirections.add(direction);
}
}
if (coilDirections.isEmpty())
return ItemInteractionResult.PASS_TO_DEFAULT_BLOCK_INTERACTION;
if (coilDirections.size() == 1) {
otherCoilDirection = coilDirections.get(0);
} else {
if (coilDirections.contains(lookingDirection)) {
otherCoilDirection = lookingDirection;
} else otherCoilDirection = coilDirections.get(0);
}
otherCoilPos = getBlockPos().relative(otherCoilDirection);
if (level.getBlockEntity(otherCoilPos) instanceof LargeCoilBlockEntity be) {
float primaryTurns = turns;
float secondaryTurns = be.turns;
float turnRatio = secondaryTurns/primaryTurns;
if (!level.isClientSide) {
level.setBlock(otherCoilPos, TFMGBlocks.LARGE_TRANSFORMER.getDefaultState().setValue(LargeTransformerBlock.HORIZONTAL_FACING, otherCoilDirection).setValue(LargeTransformerBlock.IS_MAIN_PART, false), 3);
}
if(level.getBlockEntity(otherCoilPos) instanceof LargeTransformerBlockEntity transformerBe)
transformerBe.turnRatio = turnRatio;
if (!level.isClientSide) {
level.setBlock(getBlockPos(), TFMGBlocks.LARGE_TRANSFORMER.getDefaultState().setValue(LargeTransformerBlock.HORIZONTAL_FACING, otherCoilDirection), 3);
}
TFMGUtils.playSound(level, getBlockPos(), SoundEvents.NETHERITE_BLOCK_PLACE, SoundSource.BLOCKS);
return ItemInteractionResult.SUCCESS;
}
return ItemInteractionResult.PASS_TO_DEFAULT_BLOCK_INTERACTION;
}
public void setCapacity(ItemStack stack) {
if (stack.get(TFMGDataComponents.COIL_TURNS) != null)
turns = stack.getOrDefault(TFMGDataComponents.COIL_TURNS, 0);
}
@Override
protected void read(CompoundTag tag, HolderLookup.Provider registries, boolean clientPacket) {
super.read(tag, registries, clientPacket);
turns = tag.getInt("Turns");
}
@Override
protected void write(CompoundTag tag, HolderLookup.Provider registries, boolean clientPacket) {
super.write(tag, registries, clientPacket);
tag.putInt("Turns", turns);
}
@Override
public void addBehaviours(List<BlockEntityBehaviour> behaviours) {
}
}

View File

@@ -0,0 +1,36 @@
package com.drmangotea.tfmg.content.electricity.network.transformer.large;
import com.drmangotea.tfmg.base.lang.TFMGLang;
import com.drmangotea.tfmg.registry.TFMGDataComponents;
import net.minecraft.ChatFormatting;
import net.minecraft.network.chat.Component;
import net.minecraft.world.item.BlockItem;
import net.minecraft.world.item.Item;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.TooltipFlag;
import net.minecraft.world.level.block.Block;
import net.neoforged.api.distmarker.Dist;
import net.neoforged.api.distmarker.OnlyIn;
import java.util.List;
public class LargeElectromagneticCoilItem extends BlockItem {
public LargeElectromagneticCoilItem(Block block, Properties properties) {
super(block, properties);
}
@Override
@OnlyIn(Dist.CLIENT)
public void appendHoverText(ItemStack stack, TooltipContext context, List<Component> tooltip, TooltipFlag flag) {
String text = TFMGLang.translateDirect("tooltip.coils").getString();
tooltip.add(TFMGLang.text(text+stack.getOrDefault(TFMGDataComponents.COIL_TURNS,0)).component().withStyle(ChatFormatting.GREEN)
);
super.appendHoverText(stack, context, tooltip, flag);
}
}

View File

@@ -0,0 +1,162 @@
package com.drmangotea.tfmg.content.electricity.network.transformer.large;
import com.drmangotea.tfmg.base.TFMGShapes;
import com.drmangotea.tfmg.content.electricity.base.IElectric;
import com.drmangotea.tfmg.content.electricity.network.large_switch.LargeSwitchBlock;
import com.drmangotea.tfmg.content.engines.base.EngineBlock;
import com.drmangotea.tfmg.registry.TFMGBlockEntities;
import com.drmangotea.tfmg.registry.TFMGBlocks;
import com.simibubi.create.content.kinetics.base.HorizontalKineticBlock;
import com.simibubi.create.foundation.block.IBE;
import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction;
import net.minecraft.world.InteractionHand;
import net.minecraft.world.ItemInteractionResult;
import net.minecraft.world.entity.LivingEntity;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.context.BlockPlaceContext;
import net.minecraft.world.level.BlockGetter;
import net.minecraft.world.level.Level;
import net.minecraft.world.level.LevelAccessor;
import net.minecraft.world.level.LevelReader;
import net.minecraft.world.level.block.Block;
import net.minecraft.world.level.block.Blocks;
import net.minecraft.world.level.block.entity.BlockEntityType;
import net.minecraft.world.level.block.state.BlockState;
import net.minecraft.world.level.block.state.StateDefinition;
import net.minecraft.world.level.block.state.properties.BooleanProperty;
import net.minecraft.world.level.storage.loot.LootParams;
import net.minecraft.world.phys.BlockHitResult;
import net.minecraft.world.phys.shapes.CollisionContext;
import net.minecraft.world.phys.shapes.VoxelShape;
import javax.annotation.Nullable;
import java.util.ArrayList;
import java.util.List;
public class LargeTransformerBlock extends HorizontalKineticBlock implements IBE<LargeTransformerBlockEntity> {
public static final BooleanProperty IS_MAIN_PART = LargeSwitchBlock.IS_MAIN_PART;
public static final BooleanProperty UNFINISHED_MODEL = BooleanProperty.create("unfinished_model");
public LargeTransformerBlock(Properties properties) {
super(properties);
registerDefaultState(defaultBlockState().setValue(UNFINISHED_MODEL, true));
}
@Override
protected void createBlockStateDefinition(StateDefinition.Builder<Block, BlockState> builder) {
super.createBlockStateDefinition(builder);
builder.add(IS_MAIN_PART,UNFINISHED_MODEL);
}
@Override
public void setPlacedBy(Level level, BlockPos pos, BlockState state, @Nullable LivingEntity placer, ItemStack stack) {
super.setPlacedBy(level, pos, state, placer, stack);
if (!level.isClientSide) {
BlockPos blockpos = pos.relative(state.getValue(HORIZONTAL_FACING));
level.setBlock(blockpos, state.setValue(IS_MAIN_PART, false), 3);
level.blockUpdated(pos, Blocks.AIR);
state.updateNeighbourShapes(level, pos, 3);
}
}
@Override
protected VoxelShape getShape(BlockState state, BlockGetter level, BlockPos pos, CollisionContext context) {
if(!state.getValue(IS_MAIN_PART)) {
return state.getValue(UNFINISHED_MODEL) ? TFMGShapes.LARGE_TRANSFORMER_UNFINISHED.get(state.getValue(HORIZONTAL_FACING)) : TFMGShapes.LARGE_TRANSFORMER.get(state.getValue(HORIZONTAL_FACING).getOpposite());
}else return state.getValue(UNFINISHED_MODEL) ? TFMGShapes.LARGE_TRANSFORMER_UNFINISHED.get(state.getValue(HORIZONTAL_FACING).getOpposite()) : TFMGShapes.LARGE_TRANSFORMER.get(state.getValue(HORIZONTAL_FACING));
}
private static Direction getNeighbourDirection(boolean mainPart, Direction direction) {
return mainPart ? direction : direction.getOpposite();
}
@Override
protected ItemInteractionResult useItemOn(ItemStack stack, BlockState state, Level level, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hitResult) {
BlockPos mainPartPos = pos;
if(!state.getValue(IS_MAIN_PART))
mainPartPos = pos.relative(state.getValue(HORIZONTAL_FACING).getOpposite());
if(level.getBlockEntity(mainPartPos) instanceof LargeTransformerBlockEntity be){
return be.addComponent(stack,player,hand);
}
return ItemInteractionResult.PASS_TO_DEFAULT_BLOCK_INTERACTION;
}
@Override
public BlockState getStateForPlacement(BlockPlaceContext context) {
Level level = context.getLevel();
BlockPos pos = context.getClickedPos();
BlockPos neighbourPos = pos.relative(context.getHorizontalDirection().getOpposite());
if(!level.getBlockState(neighbourPos).is(TFMGBlocks.LARGE_COIL))
return null;
return super.getStateForPlacement(context);
}
@Override
protected List<ItemStack> getDrops(BlockState state, LootParams.Builder params) {
if(!state.getValue(IS_MAIN_PART))
return new ArrayList<>();
return super.getDrops(state, params);
}
@Override
protected BlockState updateShape(BlockState state, Direction facing, BlockState facingState, LevelAccessor level, BlockPos currentPos, BlockPos facingPos) {
if (facing == getNeighbourDirection(state.getValue(IS_MAIN_PART), state.getValue(HORIZONTAL_FACING))) {
if(!(facingState.is(this) && facingState.getValue(IS_MAIN_PART) != state.getValue(IS_MAIN_PART)))
return Blocks.AIR.defaultBlockState();
}
return super.updateShape(state, facing, facingState, level, currentPos, facingPos);
}
@Override
public boolean hasShaftTowards(LevelReader world, BlockPos pos, BlockState state, Direction face) {
if(!state.getValue(IS_MAIN_PART))
return false;
return state.getValue(HORIZONTAL_FACING).getClockWise().getAxis() == face.getAxis();
}
@Override
public void onPlace(BlockState pState, Level level, BlockPos pos, BlockState pOldState, boolean pIsMoving) {
withBlockEntityDo(level, pos, IElectric::onPlaced);
}
@Override
public void onRemove(BlockState state, Level level, BlockPos pos, BlockState newState, boolean isMoving) {
IBE.onRemove(state, level, pos, newState);
}
@Override
public Direction.Axis getRotationAxis(BlockState state) {
return state.getValue(HORIZONTAL_FACING).getClockWise().getAxis();
}
@Override
public Class<LargeTransformerBlockEntity> getBlockEntityClass() {
return LargeTransformerBlockEntity.class;
}
@Override
public BlockEntityType<? extends LargeTransformerBlockEntity> getBlockEntityType() {
return TFMGBlockEntities.LARGE_TRANSFORMER.get();
}
}

View File

@@ -0,0 +1,263 @@
package com.drmangotea.tfmg.content.electricity.network.transformer.large;
import com.drmangotea.tfmg.base.TFMGUtils;
import com.drmangotea.tfmg.base.lang.TFMGLang;
import com.drmangotea.tfmg.base.lang.TFMGTexts;
import com.drmangotea.tfmg.content.electricity.base.IElectric;
import com.drmangotea.tfmg.content.electricity.base.KineticElectricBlockEntity;
import com.drmangotea.tfmg.content.electricity.base.UpdateInFrontPacket;
import com.simibubi.create.foundation.data.recipe.CommonMetal;
import net.createmod.catnip.platform.CatnipServices;
import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction;
import net.minecraft.core.HolderLookup;
import net.minecraft.nbt.CompoundTag;
import net.minecraft.network.chat.Component;
import net.minecraft.server.level.ServerLevel;
import net.minecraft.sounds.SoundEvents;
import net.minecraft.sounds.SoundSource;
import net.minecraft.world.InteractionHand;
import net.minecraft.world.ItemInteractionResult;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.Items;
import net.minecraft.world.level.ChunkPos;
import net.minecraft.world.level.block.entity.BlockEntityType;
import net.minecraft.world.level.block.state.BlockState;
import java.util.List;
import static com.drmangotea.tfmg.content.electricity.network.large_switch.LargeSwitchBlock.IS_MAIN_PART;
import static com.drmangotea.tfmg.datagen.recipes.TFMGRecipeProvider.F.lubricationOil;
import static com.simibubi.create.content.kinetics.base.HorizontalKineticBlock.HORIZONTAL_FACING;
public class LargeTransformerBlockEntity extends KineticElectricBlockEntity {
public boolean updateInFront = false;
public float turnRatio = 1;
final boolean isMainPart;
public TransformerConstructionState constructionState = TransformerConstructionState.NEEDS_STEEL;
public LargeTransformerBlockEntity(BlockEntityType<?> type, BlockPos pos, BlockState state) {
super(type, pos, state);
isMainPart = state.getValue(IS_MAIN_PART);
}
@Override
public int getPowerUsage() {
if (super.getPowerUsage() == 0)
return 0;
if (isMainPart && level.getBlockEntity(getBlockPos().relative(getBlockState().getValue(HORIZONTAL_FACING))) instanceof LargeTransformerBlockEntity be)
return (int) ((int) Math.pow(be.data.getVoltage(), 2) / resistance());
return super.getPowerUsage();
}
public ItemInteractionResult addComponent(ItemStack stack, Player player, InteractionHand hand) {
if (constructionState == TransformerConstructionState.NEEDS_STEEL && stack.is(CommonMetal.STEEL.storageBlocks.items())) {
if (!player.isCreative())
player.getItemInHand(hand).shrink(1);
TFMGUtils.playSound(level, getBlockPos(), SoundEvents.NETHERITE_BLOCK_PLACE, SoundSource.BLOCKS);
constructionState = TransformerConstructionState.NEEDS_OIL;
if (level.getBlockEntity(getBlockPos().relative(getBlockState().getValue(HORIZONTAL_FACING))) instanceof LargeTransformerBlockEntity be) {
turnRatio = be.turnRatio;
be.constructionState = constructionState;
}
level.setBlock(getBlockPos().relative(getBlockState().getValue(HORIZONTAL_FACING)), getBlockState().setValue(LargeTransformerBlock.UNFINISHED_MODEL, false).setValue(LargeTransformerBlock.IS_MAIN_PART, false), 3);
level.setBlock(getBlockPos(), getBlockState().setValue(LargeTransformerBlock.UNFINISHED_MODEL, false), 3);
onPlaced();
return ItemInteractionResult.SUCCESS;
}
if (constructionState == TransformerConstructionState.NEEDS_OIL && stack.is(lubricationOil().getBucket())) {
if (!player.isCreative())
player.setItemInHand(hand, Items.BUCKET.getDefaultInstance());
TFMGUtils.playSound(level, getBlockPos(), SoundEvents.BUCKET_EMPTY, SoundSource.BLOCKS);
constructionState = TransformerConstructionState.FINISHED;
if (level.getBlockEntity(getBlockPos().relative(getBlockState().getValue(HORIZONTAL_FACING))) instanceof LargeTransformerBlockEntity be) {
be.constructionState = constructionState;
}
onPlaced();
return ItemInteractionResult.SUCCESS;
}
return ItemInteractionResult.PASS_TO_DEFAULT_BLOCK_INTERACTION;
}
public int voltageGeneration() {
if (isMainPart)
return 0;
int voltageGeneration = 0;
if (getLevelAccessor().getBlockEntity(getBlockPos().relative(getBlockState().getValue(HORIZONTAL_FACING).getOpposite())) instanceof LargeTransformerBlockEntity be)
if (be.getData().getId() != getData().getId())
if (be.getData().getVoltage() != 0)
voltageGeneration = (int) Math.max(voltageGeneration, be.data.getVoltage() * turnRatio);
getData().getsOutsidePower = true;
if (voltageGeneration == 0)
getData().getsOutsidePower = false;
return voltageGeneration;
}
public IElectric getControlledBlock() {
Direction facing = getBlockState().getValue(HORIZONTAL_FACING);
if (level.getBlockEntity(getBlockPos().relative(facing)) instanceof LargeTransformerBlockEntity be) {
return be;
}
return null;
}
@Override
protected void write(CompoundTag compound, HolderLookup.Provider registries, boolean clientPacket) {
super.write(compound, registries, clientPacket);
compound.putFloat("Ratio", turnRatio);
compound.putString("State", constructionState.toString());
}
@Override
protected void read(CompoundTag compound, HolderLookup.Provider registries, boolean clientPacket) {
super.read(compound, registries, clientPacket);
turnRatio = compound.getFloat("Ratio");
constructionState = Enum.valueOf(TransformerConstructionState.class, compound.getString("State"));
}
@Override
public float resistance() {
if (!isMainPart)
return 0;
Direction facing = getBlockState().getValue(HORIZONTAL_FACING);
if (level.getBlockEntity(getBlockPos().relative(facing)) instanceof IElectric be && be.getData().getId() != data.getId()) {
int count = getBlocksConnectedToNetworkCount(getControlledBlock().getData().getId());
if (count != 0)
return Math.max(be.getNetworkResistance() * count, 0);
}
return 0;
}
@Override
public void onNetworkChanged(int oldVoltage, int oldPower) {
super.onNetworkChanged(oldVoltage, oldPower);
if (oldVoltage != getData().getVoltage() || oldPower != getPowerUsage()) {
updateInFront = true;
getOrCreateElectricNetwork().handleInsufficientPower();
}
sendStuff();
setChanged();
}
public int powerGeneration() {
if (isMainPart)
return 0;
if (level.getBlockEntity(getBlockPos().relative(getBlockState().getValue(HORIZONTAL_FACING).getOpposite())) instanceof LargeTransformerBlockEntity be && be.data.notEnoughPower)
return 0;
int powerGeneration = 0;
if (getLevelAccessor().getBlockEntity(getBlockPos().relative(getBlockState().getValue(HORIZONTAL_FACING).getOpposite())) instanceof LargeTransformerBlockEntity be)
if (be.getData().getId() != getData().getId())
if (be.getData().getVoltage() != 0) {
int maxPower = switch (constructionState) {
case FINISHED -> 100000;
case NEEDS_OIL -> 50000;
case NEEDS_STEEL -> 30000;
};
powerGeneration = Math.max(powerGeneration, maxPower);
}
getData().getsOutsidePower = true;
if (powerGeneration == 0)
getData().getsOutsidePower = false;
return powerGeneration;
}
public void updateInFront() {
if (level instanceof ServerLevel serverLevel)
CatnipServices.NETWORK.sendToClientsTrackingChunk(serverLevel, new ChunkPos(worldPosition), new UpdateInFrontPacket(BlockPos.of(getPos())));
Direction facing = getBlockState().getValue(HORIZONTAL_FACING);
if (level.getBlockEntity(getBlockPos().relative(facing)) instanceof IElectric be && be.getData().getId() != data.getId()) {
be.updateNextTick();
}
sendStuff();
setChanged();
}
@Override
public void tick() {
super.tick();
if (updateInFront) {
updateInFront();
updateInFront = false;
}
}
@Override
public int getMaxCurrent() {
return 500;
}
@Override
public int getMaxVoltage() {
return 100000;
}
@Override
public boolean makeMultimeterTooltip(List<Component> tooltip, boolean isPlayerSneaking) {
String stateKey = switch (constructionState) {
case FINISHED -> "multimeter.large_transformer.oil_cooled";
case NEEDS_OIL -> "multimeter.large_transformer.metal_cooled";
case NEEDS_STEEL -> "multimeter.large_transformer.air_cooled";
};
TFMGLang.translate(stateKey).color(0x69c9c5).forGoggles(tooltip);
TFMGTexts.Multimeter.transformerRatio(turnRatio);
super.makeMultimeterTooltip(tooltip, isPlayerSneaking);
return true;
}
@Override
public boolean hasElectricitySlot(Direction direction) {
return direction == Direction.UP;
}
enum TransformerConstructionState {
FINISHED,
NEEDS_OIL,
NEEDS_STEEL
}
}

View File

@@ -0,0 +1,55 @@
package com.drmangotea.tfmg.content.electricity.network.transformer.large;
import com.drmangotea.tfmg.content.electricity.network.large_switch.LargeSwitchBlock;
import com.simibubi.create.content.kinetics.base.HorizontalKineticBlock;
import com.simibubi.create.foundation.data.SpecialBlockStateGen;
import com.tterrag.registrate.providers.DataGenContext;
import com.tterrag.registrate.providers.RegistrateBlockstateProvider;
import net.minecraft.world.level.block.Block;
import net.minecraft.world.level.block.state.BlockState;
import net.neoforged.neoforge.client.model.generators.ModelFile;
import static com.simibubi.create.foundation.data.AssetLookup.partialBaseModel;
public class LargeTransformerGenerator extends SpecialBlockStateGen {
@Override
protected int getXRotation(BlockState state) {
return 0;
}
@Override
protected int getYRotation(BlockState state) {
if (state.getValue(LargeSwitchBlock.IS_MAIN_PART)) {
return switch (state.getValue(HorizontalKineticBlock.HORIZONTAL_FACING)) {
case NORTH -> 180;
case SOUTH -> 0;
case WEST -> 90;
case EAST -> 270;
case DOWN -> 90;
case UP -> 90;
};
} else
return switch (state.getValue(HorizontalKineticBlock.HORIZONTAL_FACING)) {
case NORTH -> 0;
case SOUTH -> 180;
case WEST -> 270;
case EAST -> 90;
case DOWN -> 90;
case UP -> 90;
};
}
@Override
public <T extends Block> ModelFile getModel(DataGenContext<Block, T> ctx, RegistrateBlockstateProvider prov,
BlockState state) {
return state.getValue(LargeTransformerBlock.UNFINISHED_MODEL) ? partialBaseModel(ctx, prov, "unfinished")
: partialBaseModel(ctx, prov);
}
}

View File

@@ -1,4 +1,4 @@
package com.drmangotea.tfmg.content.electricity.network.transformer; package com.drmangotea.tfmg.content.electricity.network.transformer.small;
import com.drmangotea.tfmg.base.lang.TFMGLang; import com.drmangotea.tfmg.base.lang.TFMGLang;
@@ -22,8 +22,10 @@ public class ElectromagneticCoilItem extends Item {
@Override @Override
@OnlyIn(Dist.CLIENT) @OnlyIn(Dist.CLIENT)
public void appendHoverText(ItemStack stack, TooltipContext context, List<Component> tooltip, TooltipFlag flag) { public void appendHoverText(ItemStack stack, TooltipContext context, List<Component> tooltip, TooltipFlag flag) {
tooltip.add(TFMGLang.translateDirect("tooltip.coils", stack.get(TFMGDataComponents.COIL_TURNS)==null?0:stack.get(TFMGDataComponents.COIL_TURNS)) String text = TFMGLang.translateDirect("tooltip.coils").getString();
.withStyle(ChatFormatting.GREEN)
tooltip.add(TFMGLang.text(text+stack.getOrDefault(TFMGDataComponents.COIL_TURNS,0)).component().withStyle(ChatFormatting.GREEN)
); );
super.appendHoverText(stack, context, tooltip, flag); super.appendHoverText(stack, context, tooltip, flag);
} }

View File

@@ -1,4 +1,4 @@
package com.drmangotea.tfmg.content.electricity.network.transformer; package com.drmangotea.tfmg.content.electricity.network.transformer.small;
import com.drmangotea.tfmg.base.blocks.TFMGHorizontalDirectionalBlock; import com.drmangotea.tfmg.base.blocks.TFMGHorizontalDirectionalBlock;
import com.drmangotea.tfmg.base.TFMGShapes; import com.drmangotea.tfmg.base.TFMGShapes;

View File

@@ -1,4 +1,4 @@
package com.drmangotea.tfmg.content.electricity.network.transformer; package com.drmangotea.tfmg.content.electricity.network.transformer.small;
import com.drmangotea.tfmg.base.TFMGUtils; import com.drmangotea.tfmg.base.TFMGUtils;
import com.drmangotea.tfmg.base.lang.TFMGTexts; import com.drmangotea.tfmg.base.lang.TFMGTexts;
@@ -141,8 +141,11 @@ public class TransformerBlockEntity extends VoltageAlteringBlockEntity {
public float resistance() { public float resistance() {
Direction facing = getBlockState().getValue(FACING).getCounterClockWise(); Direction facing = getBlockState().getValue(FACING).getCounterClockWise();
if (level.getBlockEntity(getBlockPos().relative(facing)) instanceof IElectric be && be.getData().getId() != data.getId()) { if (level.getBlockEntity(getBlockPos().relative(facing)) instanceof IElectric be && be.getData().getId() != data.getId()) {
if (be.hasElectricitySlot(facing.getOpposite())) if (be.hasElectricitySlot(facing.getOpposite())) {
return Math.max(be.getNetworkResistance(), 0); int count = getBlocksConnectedToNetworkCount(getControlledBlock().getData().getId());
if(count!=0)
return Math.max(be.getNetworkResistance()*count, 0);
}
} }
return 0; return 0;
} }

View File

@@ -1,4 +1,4 @@
package com.drmangotea.tfmg.content.electricity.network.transformer; package com.drmangotea.tfmg.content.electricity.network.transformer.small;
import com.drmangotea.tfmg.registry.TFMGPartialModels; import com.drmangotea.tfmg.registry.TFMGPartialModels;
import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.blaze3d.vertex.PoseStack;

View File

@@ -247,12 +247,7 @@ public class ElectricPumpBlockEntity extends PumpBlockEntity implements IElectri
} }
@Override
protected void write(CompoundTag compound, HolderLookup.Provider registries, boolean clientPacket) {
super.write(compound,registries , clientPacket);
writeElectricity(compound,clientPacket);
}
@Override @Override
protected void read(CompoundTag compound, HolderLookup.Provider registries, boolean clientPacket) { protected void read(CompoundTag compound, HolderLookup.Provider registries, boolean clientPacket) {

View File

@@ -111,10 +111,6 @@ public class PolarizerBlockEntity extends ElectricBlockEntity implements IHaveGo
return true; return true;
} }
@Override
public boolean canBeInGroups() {
return false;
}
@Override @Override
public void tick() { public void tick() {

View File

@@ -25,10 +25,7 @@ public class ResistorBlockEntity extends ElectricBlockEntity {
return direction == getBlockState().getValue(FACING).getOpposite(); return direction == getBlockState().getValue(FACING).getOpposite();
} }
@Override
public boolean canBeInGroups() {
return true;
}
@Override @Override
public float resistance() { public float resistance() {

View File

@@ -9,7 +9,6 @@ import com.drmangotea.tfmg.content.electricity.connection.cables.CableConnection
import com.drmangotea.tfmg.content.electricity.connection.cables.CableConnectorBlockEntity; import com.drmangotea.tfmg.content.electricity.connection.cables.CableConnectorBlockEntity;
import com.drmangotea.tfmg.registry.TFMGDataComponents; import com.drmangotea.tfmg.registry.TFMGDataComponents;
import com.drmangotea.tfmg.registry.TFMGItems; import com.drmangotea.tfmg.registry.TFMGItems;
import net.minecraft.ChatFormatting; import net.minecraft.ChatFormatting;
import net.minecraft.core.BlockPos; import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction; import net.minecraft.core.Direction;
@@ -28,7 +27,6 @@ import net.minecraft.world.level.Level;
import net.neoforged.api.distmarker.Dist; import net.neoforged.api.distmarker.Dist;
import net.neoforged.api.distmarker.OnlyIn; import net.neoforged.api.distmarker.OnlyIn;
import java.util.List; import java.util.List;
import java.util.Objects; import java.util.Objects;
@@ -48,7 +46,7 @@ public class SpoolItem extends Item {
@Override @Override
public void onCraftedBy(ItemStack stack, Level p_41448_, Player p_41449_) { public void onCraftedBy(ItemStack stack, Level p_41448_, Player p_41449_) {
stack.set(TFMGDataComponents.SPOOL_AMOUNT,1000); stack.set(TFMGDataComponents.SPOOL_AMOUNT, 1000);
super.onCraftedBy(stack, p_41448_, p_41449_); super.onCraftedBy(stack, p_41448_, p_41449_);
} }
@@ -57,8 +55,8 @@ public class SpoolItem extends Item {
@Override @Override
public InteractionResultHolder<ItemStack> use(Level level, Player player, InteractionHand hand) { public InteractionResultHolder<ItemStack> use(Level level, Player player, InteractionHand hand) {
ItemStack stack = player.getItemInHand(hand); ItemStack stack = player.getItemInHand(hand);
if (player.isCrouching() && stack.getOrDefault(TFMGDataComponents.POSITION,0f).longValue() != 0f) { if (player.isCrouching() && stack.getOrDefault(TFMGDataComponents.POSITION, 0f).longValue() != 0f) {
if (level.getBlockEntity(BlockPos.of(stack.getOrDefault(TFMGDataComponents.POSITION,0f).longValue())) instanceof CableConnectorBlockEntity be) if (level.getBlockEntity(BlockPos.of(stack.getOrDefault(TFMGDataComponents.POSITION, 0f).longValue())) instanceof CableConnectorBlockEntity be)
be.player = null; be.player = null;
stack.set(TFMGDataComponents.POSITION, 0l); stack.set(TFMGDataComponents.POSITION, 0l);
stack.remove(TFMGDataComponents.POSITION); stack.remove(TFMGDataComponents.POSITION);
@@ -79,15 +77,16 @@ public class SpoolItem extends Item {
@OnlyIn(Dist.CLIENT) @OnlyIn(Dist.CLIENT)
public void appendHoverText(ItemStack stack, TooltipContext context, List<Component> tooltip, TooltipFlag flag) { public void appendHoverText(ItemStack stack, TooltipContext context, List<Component> tooltip, TooltipFlag flag) {
String text = TFMGLang.translateDirect("tooltip.coils").getString();
tooltip.add(TFMGLang.text(text + stack.getOrDefault(TFMGDataComponents.SPOOL_AMOUNT, 0)).component().withStyle(ChatFormatting.GREEN)
tooltip.add(TFMGLang.translateDirect("tooltip.coils", stack.get(TFMGDataComponents.SPOOL_AMOUNT)==null?0:stack.get(TFMGDataComponents.SPOOL_AMOUNT))
.withStyle(ChatFormatting.GREEN)
); );
if(stack.get(TFMGDataComponents.POSITION)==null)
if (stack.get(TFMGDataComponents.POSITION) == null)
return; return;
BlockPos pos = BlockPos.of(stack.get(TFMGDataComponents.POSITION)); BlockPos pos = BlockPos.of(stack.get(TFMGDataComponents.POSITION));
if(pos.asLong()!=0) if (pos.asLong() != 0)
tooltip.add(TFMGLang.text(pos.getX() + " " + pos.getY() + " " + pos.getZ()).component() tooltip.add(TFMGLang.text(pos.getX() + " " + pos.getY() + " " + pos.getZ()).component()
.withStyle(ChatFormatting.AQUA) .withStyle(ChatFormatting.AQUA)
); );
@@ -102,9 +101,9 @@ public class SpoolItem extends Item {
Player player = context.getPlayer(); Player player = context.getPlayer();
ItemStack stack = context.getItemInHand(); ItemStack stack = context.getItemInHand();
if(level.getBlockEntity(pos) instanceof WindingMachineBlockEntity be){ if (level.getBlockEntity(pos) instanceof WindingMachineBlockEntity be) {
ItemStack oldSpool = ItemStack.EMPTY; ItemStack oldSpool = ItemStack.EMPTY;
if(!be.spool.isEmpty()){ if (!be.spool.isEmpty()) {
oldSpool = be.spool; oldSpool = be.spool;
} }
be.spool = context.getItemInHand(); be.spool = context.getItemInHand();
@@ -115,12 +114,12 @@ public class SpoolItem extends Item {
return InteractionResult.SUCCESS; return InteractionResult.SUCCESS;
} }
if(stack.get(TFMGDataComponents.SPOOL_AMOUNT)==null) if (stack.get(TFMGDataComponents.SPOOL_AMOUNT) == null)
return InteractionResult.PASS; return InteractionResult.PASS;
if(level.isClientSide) if (level.isClientSide)
return InteractionResult.SUCCESS; return InteractionResult.SUCCESS;
if(Objects.equals(cableTypeKey, TFMG.asResource("empty"))) if (Objects.equals(cableTypeKey, TFMG.asResource("empty")))
return InteractionResult.PASS; return InteractionResult.PASS;
Direction direction = level.getBlockState(pos).getValue(FACING); Direction direction = level.getBlockState(pos).getValue(FACING);
for (int i = 0; i < 64; i++) { for (int i = 0; i < 64; i++) {
@@ -131,113 +130,109 @@ public class SpoolItem extends Item {
} }
if(level.getBlockEntity(pos) instanceof CableConnectorBlockEntity be){ if (level.getBlockEntity(pos) instanceof CableConnectorBlockEntity be) {
if (stack.get(TFMGDataComponents.POSITION) != null) {
BlockPos posToConnect = BlockPos.of(stack.get(TFMGDataComponents.POSITION));
if (posToConnect.equals(pos)) {
stack.set(TFMGDataComponents.POSITION, 0l);
if (level.isClientSide)
player.displayClientMessage(TFMGLang.translateDirect("wires.cant_connect_itself")
.withStyle(ChatFormatting.YELLOW), true);
be.player = null;
be.sendData();
be.setChanged();
return InteractionResult.SUCCESS;
}
for (int i = 0; i < 64; i++) {
if (level.getBlockEntity(posToConnect.relative(direction)) instanceof CableConnectorBlockEntity) {
posToConnect = posToConnect.relative(direction);
if(stack.get(TFMGDataComponents.POSITION)!=null){ } else break;
BlockPos posToConnect = BlockPos.of(stack.get(TFMGDataComponents.POSITION));
if(posToConnect.equals(pos)){
stack.set(TFMGDataComponents.POSITION,0l);
if (level.isClientSide)
player.displayClientMessage(TFMGLang.translateDirect("wires.cant_connect_itself")
.withStyle(ChatFormatting.YELLOW), true);
be.player = null;
be.sendData();
be.setChanged();
return InteractionResult.SUCCESS;
}
for (int i = 0; i < 64; i++) {
if (level.getBlockEntity(posToConnect.relative(direction)) instanceof CableConnectorBlockEntity) {
posToConnect = posToConnect.relative(direction);
} else break; }
if (level.getBlockEntity(posToConnect) instanceof CableConnectorBlockEntity otherBE) {
//CableConnectorBlockEntity connectedBe1 = pos.asLong()>posToConnect.asLong() ? otherBE : be;
//CableConnectorBlockEntity connectedBe2= pos.asLong()>posToConnect.asLong() ? be : otherBE;
CableType cableType = TFMGUtils.getCableType(cableTypeKey);
} CableConnection connection1 = new CableConnection(be.getCablePosition(), otherBE.getCablePosition(), otherBE.getBlockPos(), cableType, true);
if(level.getBlockEntity(posToConnect) instanceof CableConnectorBlockEntity otherBE) { CableConnection connection2 = new CableConnection(otherBE.getCablePosition(), be.getCablePosition(), be.getBlockPos(), cableType, false);
//CableConnectorBlockEntity connectedBe1 = pos.asLong()>posToConnect.asLong() ? otherBE : be;
//CableConnectorBlockEntity connectedBe2= pos.asLong()>posToConnect.asLong() ? be : otherBE;
CableType cableType = TFMGUtils.getCableType(cableTypeKey);
CableConnection connection1 = new CableConnection(be.getCablePosition(), otherBE.getCablePosition(), otherBE.getBlockPos(),cableType,true); float wireCost = (connection1.getLength() / 8);
CableConnection connection2 = new CableConnection(otherBE.getCablePosition(), be.getCablePosition(), be.getBlockPos(),cableType,false);
float wireCost = (connection1.getLength()/8);
if(stack.get(TFMGDataComponents.SPOOL_AMOUNT)<wireCost*125) { if (stack.get(TFMGDataComponents.SPOOL_AMOUNT) < wireCost * 125) {
return InteractionResult.PASS; return InteractionResult.PASS;
} }
if(be.connections.contains(connection1)||otherBE.connections.contains(connection1)){ if (be.connections.contains(connection1) || otherBE.connections.contains(connection1)) {
if (level.isClientSide) if (level.isClientSide)
player.displayClientMessage(TFMGLang.translateDirect("wires.connection_already_created") player.displayClientMessage(TFMGLang.translateDirect("wires.connection_already_created")
.withStyle(ChatFormatting.YELLOW), true); .withStyle(ChatFormatting.YELLOW), true);
be.player = null; be.player = null;
be.sendData(); be.sendData();
be.setChanged(); be.setChanged();
return InteractionResult.SUCCESS; return InteractionResult.SUCCESS;
} }
// if(!level.isClientSide) { // if(!level.isClientSide) {
be.connections.add(connection1); be.connections.add(connection1);
otherBE.connections.add(connection2); otherBE.connections.add(connection2);
be.onPlaced();
// otherBE.onPlaced();
//}
// connectedBe1.wiresUpdated();
stack.set(TFMGDataComponents.SPOOL_AMOUNT, (int) (stack.get(TFMGDataComponents.SPOOL_AMOUNT)-(wireCost*125)));
be.player = null;
otherBE.player = null;
be.setChanged();
otherBE.setChanged();
be.sendData();
otherBE.sendData();
stack.remove(TFMGDataComponents.POSITION);
stack.remove(TFMGDataComponents.X_POS);
stack.remove(TFMGDataComponents.Y_POS);
stack.remove(TFMGDataComponents.Z_POS);
}
//
be.player = null;
//
return InteractionResult.SUCCESS;
}else {
stack.set(TFMGDataComponents.POSITION, be.getBlockPos().asLong());
stack.set(TFMGDataComponents.X_POS, (int)be.getCablePosition().x());
stack.set(TFMGDataComponents.Y_POS, (int)be.getCablePosition().y());
stack.set(TFMGDataComponents.Z_POS, (int)be.getCablePosition().z());
be.player = player;
be.color = barColor;
be.sendData();
be.setChanged();
return InteractionResult.SUCCESS;
}
}
//
//
return InteractionResult.PASS; // otherBE.onPlaced();
} //}
public void removeOtherConnections(Player player, ItemStack stack){
for(int i =0;i<player.getInventory().getContainerSize();i++){
ItemStack inventoryStack = player.getInventory().getItem(i);
//
// // connectedBe1.wiresUpdated();
stack.set(TFMGDataComponents.SPOOL_AMOUNT, (int) (stack.get(TFMGDataComponents.SPOOL_AMOUNT) - (wireCost * 125)));
be.player = null;
otherBE.player = null;
be.setChanged();
otherBE.setChanged();
be.sendData();
otherBE.sendData();
stack.remove(TFMGDataComponents.POSITION);
stack.remove(TFMGDataComponents.X_POS);
stack.remove(TFMGDataComponents.Y_POS);
stack.remove(TFMGDataComponents.Z_POS);
}
//
be.player = null;
if (!level.isClientSide()) {
be.data.connectNextTick = true;
}
return InteractionResult.SUCCESS;
} else {
stack.set(TFMGDataComponents.POSITION, be.getBlockPos().asLong());
stack.set(TFMGDataComponents.X_POS, (int) be.getCablePosition().x());
stack.set(TFMGDataComponents.Y_POS, (int) be.getCablePosition().y());
stack.set(TFMGDataComponents.Z_POS, (int) be.getCablePosition().z());
be.player = player;
be.color = barColor;
be.sendData();
be.setChanged();
if (!level.isClientSide())
be.onPlaced();
return InteractionResult.SUCCESS;
} }
} }
//
//
return InteractionResult.PASS;
}
@Override @Override
public void inventoryTick(ItemStack stack, Level level, Entity entity, int slot, boolean p_41408_) { public void inventoryTick(ItemStack stack, Level level, Entity entity, int slot, boolean p_41408_) {
if(stack.get(TFMGDataComponents.SPOOL_AMOUNT)==null) if (stack.get(TFMGDataComponents.SPOOL_AMOUNT) == null)
return; return;
if(stack.get(TFMGDataComponents.SPOOL_AMOUNT)==0&& entity instanceof Player player&&!stack.is(TFMGItems.EMPTY_SPOOL.get())){ if (stack.get(TFMGDataComponents.SPOOL_AMOUNT) == 0 && entity instanceof Player player && !stack.is(TFMGItems.EMPTY_SPOOL.get())) {
player.getInventory().setItem(slot, TFMGItems.EMPTY_SPOOL.asStack()); player.getInventory().setItem(slot, TFMGItems.EMPTY_SPOOL.asStack());
} }
} }
@@ -255,10 +250,10 @@ public class SpoolItem extends Item {
@Override @Override
public int getBarWidth(ItemStack stack) { public int getBarWidth(ItemStack stack) {
if(stack.get(TFMGDataComponents.SPOOL_AMOUNT)==null) if (stack.get(TFMGDataComponents.SPOOL_AMOUNT) == null)
return 13; return 13;
return (int) (13f*((float)stack.get(TFMGDataComponents.SPOOL_AMOUNT)/1000)); return (int) (13f * ((float) stack.get(TFMGDataComponents.SPOOL_AMOUNT) / 1000));
} }
} }

View File

@@ -173,7 +173,7 @@ public class WindingMachineBlockEntity extends KineticBlockEntity implements IHa
if (getSpeed() == 0) if (getSpeed() == 0)
return; return;
if (inventory.getItem(0).is(TFMGItems.ELECTROMAGNETIC_COIL.get()) && spool.is(TFMGItems.COPPER_SPOOL.get()) && spool.getOrDefault(TFMGDataComponents.SPOOL_AMOUNT, defaultSpoolAmount) > 0 && inventory.getItem(0).getOrDefault(TFMGDataComponents.COIL_TURNS, defaultCoilTurns) < turnPercentage.getValue() * 10) { if ((inventory.getItem(0).is(TFMGItems.ELECTROMAGNETIC_COIL.get())||inventory.getItem(0).is(TFMGBlocks.LARGE_COIL.get().asItem())) && spool.is(TFMGItems.COPPER_SPOOL.get()) && spool.getOrDefault(TFMGDataComponents.SPOOL_AMOUNT, defaultSpoolAmount) > 0 && inventory.getItem(0).getOrDefault(TFMGDataComponents.COIL_TURNS, defaultCoilTurns) < turnPercentage.getValue() * 10) {
if(inventory.getItem(0).getOrDefault(TFMGDataComponents.COIL_TURNS, defaultCoilTurns) < turnPercentage.getValue() * 10){ if(inventory.getItem(0).getOrDefault(TFMGDataComponents.COIL_TURNS, defaultCoilTurns) < turnPercentage.getValue() * 10){
spool.set(TFMGDataComponents.SPOOL_AMOUNT, spool.getOrDefault(TFMGDataComponents.SPOOL_AMOUNT, defaultSpoolAmount) - 1); spool.set(TFMGDataComponents.SPOOL_AMOUNT, spool.getOrDefault(TFMGDataComponents.SPOOL_AMOUNT, defaultSpoolAmount) - 1);
inventory.getItem(0).set(TFMGDataComponents.COIL_TURNS, inventory.getItem(0).getOrDefault(TFMGDataComponents.COIL_TURNS, defaultCoilTurns) + 1); inventory.getItem(0).set(TFMGDataComponents.COIL_TURNS, inventory.getItem(0).getOrDefault(TFMGDataComponents.COIL_TURNS, defaultCoilTurns) + 1);

View File

@@ -29,12 +29,20 @@ import java.util.List;
public class ElectrodeHolderBlockEntity extends ElectricBlockEntity implements IVatMachine { public class ElectrodeHolderBlockEntity extends ElectricBlockEntity implements IVatMachine {
Electrode electrode = TFMGUtils.getElectrode(TFMG.asResource("none")); Electrode electrode = TFMGUtils.getElectrode(TFMG.asResource("none"));
boolean isTallEnough = true;
public ElectrodeHolderBlockEntity(BlockEntityType<?> type, BlockPos pos, BlockState state) { public ElectrodeHolderBlockEntity(BlockEntityType<?> type, BlockPos pos, BlockState state) {
super(type, pos, state); super(type, pos, state);
} }
@Override
public int getMaxVoltage() {
return 20000;
}
@Override
public int getMaxCurrent() {
return 400;
}
@Override @Override
public boolean hasElectricitySlot(Direction direction) { public boolean hasElectricitySlot(Direction direction) {
@@ -86,10 +94,7 @@ public class ElectrodeHolderBlockEntity extends ElectricBlockEntity implements I
return this.electrode.getResistance(); return this.electrode.getResistance();
} }
@Override
public boolean canBeInGroups() {
return true;
}
public boolean setElectrode(Electrode electrode, boolean simulate) { public boolean setElectrode(Electrode electrode, boolean simulate) {
if (electrode != null) { if (electrode != null) {

View File

@@ -541,6 +541,11 @@ public class TFMGRecipeProvider extends RecipeProvider {
stack.set(TFMGDataComponents.COIL_TURNS,100); stack.set(TFMGDataComponents.COIL_TURNS,100);
return stack; return stack;
} }
public static ItemStack largeCoil100Turns(){
ItemStack stack = TFMGBlocks.LARGE_COIL.asStack();
stack.set(TFMGDataComponents.COIL_TURNS,100);
return stack;
}
public static ItemStack turbineBlade(){ public static ItemStack turbineBlade(){
ItemStack stack = TFMGItems.TURBINE_BLADE.asStack(); ItemStack stack = TFMGItems.TURBINE_BLADE.asStack();

View File

@@ -173,6 +173,14 @@ public class TFMGStandardRecipeGen extends TFMGRecipeProvider {
.pattern("CPW") .pattern("CPW")
.pattern("MQK")), .pattern("MQK")),
LAMINATED_MAGNETIC_ALLOY_BLOCK = create(TFMGBlocks.LAMINATED_MAGNETIC_ALLOY_BLOCK)
.unlockedBy(TFMGItems.MAGNETIC_ALLOY_INGOT::get)
.viaShaped(b -> b
.define('C', TFMGItems.MAGNETIC_ALLOY_SHEET.get())
.pattern("CCC")
.pattern("CCC")
.pattern("CCC")),
//STEEL_HELMET = create(TFMGItems.STEEL_HELMET) //STEEL_HELMET = create(TFMGItems.STEEL_HELMET)
// .unlockedBy(TFMGItems.STEEL_INGOT::get) // .unlockedBy(TFMGItems.STEEL_INGOT::get)
// .viaShaped(b -> b // .viaShaped(b -> b
@@ -762,6 +770,21 @@ public class TFMGStandardRecipeGen extends TFMGRecipeProvider {
.pattern("LCL") .pattern("LCL")
.pattern("RPR")), .pattern("RPR")),
LARGE_SWITCH = create(TFMGBlocks.LARGE_SWITCH)
.unlockedBy(TFMGBlocks.CABLE_CONNECTOR::get)
.viaShaped(b -> b
.define('B', brassSheet())
.define('R', rebar())
.define('W', copperWire())
.define('S', TFMGBlocks.STEEL_CABLE_HUB)
.define('M', steelMechanism())
.define('I', TFMGBlocks.CABLE_CONNECTOR)
.define('P', TFMGBlocks.ELECTRIC_POST)
.pattern("WRB")
.pattern("SMP")
.pattern("III")),
// FUSE_BLOCK = create(TFMGBlocks.FUSE_BLOCK) // FUSE_BLOCK = create(TFMGBlocks.FUSE_BLOCK)
// .unlockedBy(TFMGItems.COPPER_WIRE::get) // .unlockedBy(TFMGItems.COPPER_WIRE::get)
// .viaShaped(b -> b // .viaShaped(b -> b
@@ -1215,7 +1238,7 @@ public class TFMGStandardRecipeGen extends TFMGRecipeProvider {
.unlockedBy(TFMGBlocks.STEEL_CASING::get) .unlockedBy(TFMGBlocks.STEEL_CASING::get)
.viaShaped(b -> b .viaShaped(b -> b
.define('C', steelCasing()) .define('C', steelCasing())
.define('M', magneticIngot()) .define('M', TFMGItems.MAGNETIC_ALLOY_SHEET)
.define('N', nickelSheet()) .define('N', nickelSheet())
.define('W', copperWire()) .define('W', copperWire())
.pattern("MMM") .pattern("MMM")

View File

@@ -1,6 +1,7 @@
package com.drmangotea.tfmg.datagen.recipes.values.create; package com.drmangotea.tfmg.datagen.recipes.values.create;
import com.drmangotea.tfmg.TFMG; import com.drmangotea.tfmg.TFMG;
import com.drmangotea.tfmg.registry.TFMGItems;
import com.simibubi.create.AllRecipeTypes; import com.simibubi.create.AllRecipeTypes;
import com.simibubi.create.api.data.recipe.PressingRecipeGen; import com.simibubi.create.api.data.recipe.PressingRecipeGen;
import net.minecraft.core.HolderLookup; import net.minecraft.core.HolderLookup;
@@ -26,6 +27,9 @@ public class TFMGPressingRecipeGen extends PressingRecipeGen {
NICKEL_SHEET = create(TFMG.asResource("nickel_ingot"), b -> b.require(nickelIngot()) NICKEL_SHEET = create(TFMG.asResource("nickel_ingot"), b -> b.require(nickelIngot())
.output(nickelSheetTFMG())), .output(nickelSheetTFMG())),
MAGNETIC_ALLOY_SHEET = create(TFMG.asResource("magnetic_alloy_ingot"), b -> b.require(TFMGItems.MAGNETIC_ALLOY_INGOT)
.output(TFMGItems.MAGNETIC_ALLOY_SHEET)),
SYNTHETIC_LEATHER = create(TFMG.asResource("synthetic_leather"), b -> b SYNTHETIC_LEATHER = create(TFMG.asResource("synthetic_leather"), b -> b
.require(rubber()) .require(rubber())
.output(syntheticLeather())); .output(syntheticLeather()));

View File

@@ -2,36 +2,40 @@ package com.drmangotea.tfmg.datagen.recipes.values.tfmg;
import com.drmangotea.tfmg.TFMG; import com.drmangotea.tfmg.TFMG;
import com.drmangotea.tfmg.datagen.recipes.builder.WindingRecipeGen; import com.drmangotea.tfmg.datagen.recipes.builder.WindingRecipeGen;
import com.drmangotea.tfmg.registry.TFMGBlocks;
import com.drmangotea.tfmg.registry.TFMGItems; import com.drmangotea.tfmg.registry.TFMGItems;
import net.minecraft.core.HolderLookup; import net.minecraft.core.HolderLookup;
import net.minecraft.data.PackOutput; import net.minecraft.data.PackOutput;
import java.util.concurrent.CompletableFuture; import java.util.concurrent.CompletableFuture;
import static com.drmangotea.tfmg.datagen.recipes.TFMGRecipeProvider.I.coil100Turns; import static com.drmangotea.tfmg.datagen.recipes.TFMGRecipeProvider.I.*;
import static com.drmangotea.tfmg.datagen.recipes.TFMGRecipeProvider.I.resistor10Ohms;
public class TFMGWindingRecipeGen extends WindingRecipeGen { public class TFMGWindingRecipeGen extends WindingRecipeGen {
GeneratedRecipe GeneratedRecipe
ELECTROMAGNETIC_COIL = create("electromagnetic_coil", b ->b ELECTROMAGNETIC_COIL = create("electromagnetic_coil", b -> b
.require(TFMGItems.UNFINISHED_ELECTROMAGNETIC_COIL) .require(TFMGItems.UNFINISHED_ELECTROMAGNETIC_COIL)
.require(TFMGItems.COPPER_SPOOL) .require(TFMGItems.COPPER_SPOOL)
.output(coil100Turns()) .output(coil100Turns())
.duration(100)), .duration(100)),
RESISTOR = create("resistor", b ->b LARGE_COIL = create("large_coil", b -> b
.require(TFMGItems.UNFINISHED_RESISTOR) .require(TFMGBlocks.LAMINATED_MAGNETIC_ALLOY_BLOCK)
.require(TFMGItems.CONSTANTAN_SPOOL) .require(TFMGItems.COPPER_SPOOL)
.output(resistor10Ohms()) .output(largeCoil100Turns())
.duration(50)) .duration(100)),
; RESISTOR = create("resistor", b -> b
public TFMGWindingRecipeGen(PackOutput generator, CompletableFuture<HolderLookup.Provider> registries) { .require(TFMGItems.UNFINISHED_RESISTOR)
super(generator, registries, TFMG.MOD_ID); .require(TFMGItems.CONSTANTAN_SPOOL)
} .output(resistor10Ohms())
.duration(50));
public TFMGWindingRecipeGen(PackOutput generator, CompletableFuture<HolderLookup.Provider> registries) {
super(generator, registries, TFMG.MOD_ID);
}
} }

View File

@@ -11,8 +11,8 @@ import com.drmangotea.tfmg.content.decoration.tanks.TFMGFluidTankBlockEntity;
import com.drmangotea.tfmg.content.decoration.tanks.TFMGFluidTankRenderer; import com.drmangotea.tfmg.content.decoration.tanks.TFMGFluidTankRenderer;
import com.drmangotea.tfmg.content.decoration.tanks.steel.SteelFluidTankRenderer; import com.drmangotea.tfmg.content.decoration.tanks.steel.SteelFluidTankRenderer;
import com.drmangotea.tfmg.content.decoration.tanks.steel.SteelTankBlockEntity; import com.drmangotea.tfmg.content.decoration.tanks.steel.SteelTankBlockEntity;
import com.drmangotea.tfmg.content.electricity.base.ElectricBlockEntity;
import com.drmangotea.tfmg.content.electricity.base.VoltageAlteringBlockEntity; import com.drmangotea.tfmg.content.electricity.base.VoltageAlteringBlockEntity;
import com.drmangotea.tfmg.content.electricity.connection.CableHubBlockEntity;
import com.drmangotea.tfmg.content.electricity.connection.cables.CableConnectorBlockEntity; import com.drmangotea.tfmg.content.electricity.connection.cables.CableConnectorBlockEntity;
import com.drmangotea.tfmg.content.electricity.connection.cables.CableConnectorRenderer; import com.drmangotea.tfmg.content.electricity.connection.cables.CableConnectorRenderer;
import com.drmangotea.tfmg.content.electricity.connection.copycat_cable.CopycatCableBlockEntity; import com.drmangotea.tfmg.content.electricity.connection.copycat_cable.CopycatCableBlockEntity;
@@ -33,6 +33,11 @@ import com.drmangotea.tfmg.content.electricity.lights.variants.CircularLightRend
import com.drmangotea.tfmg.content.electricity.lights.variants.ModernLightRenderer; import com.drmangotea.tfmg.content.electricity.lights.variants.ModernLightRenderer;
import com.drmangotea.tfmg.content.electricity.measurement.VoltMeterBlockEntity; import com.drmangotea.tfmg.content.electricity.measurement.VoltMeterBlockEntity;
import com.drmangotea.tfmg.content.electricity.measurement.VoltMeterRenderer; import com.drmangotea.tfmg.content.electricity.measurement.VoltMeterRenderer;
import com.drmangotea.tfmg.content.electricity.network.large_switch.LargeSwitchBlockEntity;
import com.drmangotea.tfmg.content.electricity.network.large_switch.LargeSwitchRenderer;
import com.drmangotea.tfmg.content.electricity.network.large_switch.LargeSwitchVisual;
import com.drmangotea.tfmg.content.electricity.network.transformer.large.LargeCoilBlockEntity;
import com.drmangotea.tfmg.content.electricity.network.transformer.large.LargeTransformerBlockEntity;
import com.drmangotea.tfmg.content.electricity.storage.AccumulatorBlockEntity; import com.drmangotea.tfmg.content.electricity.storage.AccumulatorBlockEntity;
import com.drmangotea.tfmg.content.electricity.utilities.converter.ConverterBlockEntity; import com.drmangotea.tfmg.content.electricity.utilities.converter.ConverterBlockEntity;
import com.drmangotea.tfmg.content.electricity.utilities.electric_motor.ElectricMotorBlockEntity; import com.drmangotea.tfmg.content.electricity.utilities.electric_motor.ElectricMotorBlockEntity;
@@ -47,8 +52,8 @@ import com.drmangotea.tfmg.content.electricity.utilities.segmented_display.Segme
import com.drmangotea.tfmg.content.electricity.utilities.segmented_display.SegmentedDisplayRenderer; import com.drmangotea.tfmg.content.electricity.utilities.segmented_display.SegmentedDisplayRenderer;
import com.drmangotea.tfmg.content.electricity.utilities.traffic_light.TrafficLightBlockEntity; import com.drmangotea.tfmg.content.electricity.utilities.traffic_light.TrafficLightBlockEntity;
import com.drmangotea.tfmg.content.electricity.utilities.traffic_light.TrafficLightRenderer; import com.drmangotea.tfmg.content.electricity.utilities.traffic_light.TrafficLightRenderer;
import com.drmangotea.tfmg.content.electricity.network.transformer.TransformerBlockEntity; import com.drmangotea.tfmg.content.electricity.network.transformer.small.TransformerBlockEntity;
import com.drmangotea.tfmg.content.electricity.network.transformer.TransformerRenderer; import com.drmangotea.tfmg.content.electricity.network.transformer.small.TransformerRenderer;
import com.drmangotea.tfmg.content.electricity.utilities.voltage_observer.VoltageObserverBlockEntity; import com.drmangotea.tfmg.content.electricity.utilities.voltage_observer.VoltageObserverBlockEntity;
import com.drmangotea.tfmg.content.engines.base.EngineRenderer; import com.drmangotea.tfmg.content.engines.base.EngineRenderer;
import com.drmangotea.tfmg.content.engines.engine_controller.EngineControllerBlockEntity; import com.drmangotea.tfmg.content.engines.engine_controller.EngineControllerBlockEntity;
@@ -137,6 +142,16 @@ public class TFMGBlockEntities {
.blockEntity("electrical_switch", ElectricSwitchBlockEntity::new) .blockEntity("electrical_switch", ElectricSwitchBlockEntity::new)
.validBlocks(TFMGBlocks.ELECTRICAL_SWITCH) .validBlocks(TFMGBlocks.ELECTRICAL_SWITCH)
.register(); .register();
public static final BlockEntityEntry<LargeSwitchBlockEntity> LARGE_SWITCH = REGISTRATE
.blockEntity("large_switch", LargeSwitchBlockEntity::new)
.visual(() -> LargeSwitchVisual::new)
.validBlocks(TFMGBlocks.LARGE_SWITCH)
.renderer(() -> LargeSwitchRenderer::new)
.register();
public static final BlockEntityEntry<LargeTransformerBlockEntity> LARGE_TRANSFORMER = REGISTRATE
.blockEntity("large_transformer", LargeTransformerBlockEntity::new)
.validBlocks(TFMGBlocks.LARGE_TRANSFORMER)
.register();
public static final BlockEntityEntry<PolarizerBlockEntity> POLARIZER = REGISTRATE public static final BlockEntityEntry<PolarizerBlockEntity> POLARIZER = REGISTRATE
.blockEntity("polarizer", PolarizerBlockEntity::new) .blockEntity("polarizer", PolarizerBlockEntity::new)
.validBlocks(TFMGBlocks.POLARIZER) .validBlocks(TFMGBlocks.POLARIZER)
@@ -265,6 +280,11 @@ public class TFMGBlockEntities {
.validBlocks(TFMGBlocks.DIODE, TFMGBlocks.ENCASED_DIODE) .validBlocks(TFMGBlocks.DIODE, TFMGBlocks.ENCASED_DIODE)
.register(); .register();
public static final BlockEntityEntry<LargeCoilBlockEntity> LARGE_COIL = REGISTRATE
.blockEntity("large_coil", LargeCoilBlockEntity::new)
.validBlocks(TFMGBlocks.LARGE_COIL)
.register();
public static final BlockEntityEntry<RegularEngineBlockEntity> REGULAR_ENGINE = REGISTRATE public static final BlockEntityEntry<RegularEngineBlockEntity> REGULAR_ENGINE = REGISTRATE
.blockEntity("regular_engine", RegularEngineBlockEntity::new) .blockEntity("regular_engine", RegularEngineBlockEntity::new)
@@ -487,8 +507,8 @@ public class TFMGBlockEntities {
public static final BlockEntityEntry<ElectricBlockEntity> CABLE_HUB = REGISTRATE public static final BlockEntityEntry<CableHubBlockEntity> CABLE_HUB = REGISTRATE
.blockEntity("cable_hub", ElectricBlockEntity::new) .blockEntity("cable_hub", CableHubBlockEntity::new)
.validBlocks(TFMGBlocks.BRASS_CABLE_HUB, .validBlocks(TFMGBlocks.BRASS_CABLE_HUB,
TFMGBlocks.COPPER_CABLE_HUB, TFMGBlocks.COPPER_CABLE_HUB,
TFMGBlocks.STEEL_CABLE_HUB, TFMGBlocks.STEEL_CABLE_HUB,

View File

@@ -39,6 +39,9 @@ import com.drmangotea.tfmg.content.electricity.lights.LampGenerator;
import com.drmangotea.tfmg.content.electricity.lights.LightBulbBlock; import com.drmangotea.tfmg.content.electricity.lights.LightBulbBlock;
import com.drmangotea.tfmg.content.electricity.lights.neon_tube.NeonTubeBlock; import com.drmangotea.tfmg.content.electricity.lights.neon_tube.NeonTubeBlock;
import com.drmangotea.tfmg.content.electricity.measurement.VoltMeterBlock; import com.drmangotea.tfmg.content.electricity.measurement.VoltMeterBlock;
import com.drmangotea.tfmg.content.electricity.network.large_switch.LargeSwitchBlock;
import com.drmangotea.tfmg.content.electricity.network.large_switch.LargeSwitchGenerator;
import com.drmangotea.tfmg.content.electricity.network.transformer.large.*;
import com.drmangotea.tfmg.content.electricity.storage.AccumulatorBlock; import com.drmangotea.tfmg.content.electricity.storage.AccumulatorBlock;
import com.drmangotea.tfmg.content.electricity.storage.AccumulatorItem; import com.drmangotea.tfmg.content.electricity.storage.AccumulatorItem;
import com.drmangotea.tfmg.content.electricity.storage.CapacitorCTBehavior; import com.drmangotea.tfmg.content.electricity.storage.CapacitorCTBehavior;
@@ -57,7 +60,7 @@ import com.drmangotea.tfmg.content.electricity.utilities.resistor.ResistorBlockI
import com.drmangotea.tfmg.content.electricity.utilities.segmented_display.SegmentedDisplayBlock; import com.drmangotea.tfmg.content.electricity.utilities.segmented_display.SegmentedDisplayBlock;
import com.drmangotea.tfmg.content.electricity.utilities.segmented_display.SegmentedDisplayCTBehavior; import com.drmangotea.tfmg.content.electricity.utilities.segmented_display.SegmentedDisplayCTBehavior;
import com.drmangotea.tfmg.content.electricity.utilities.traffic_light.TrafficLightBlock; import com.drmangotea.tfmg.content.electricity.utilities.traffic_light.TrafficLightBlock;
import com.drmangotea.tfmg.content.electricity.network.transformer.TransformerBlock; import com.drmangotea.tfmg.content.electricity.network.transformer.small.TransformerBlock;
import com.drmangotea.tfmg.content.electricity.utilities.voltage_observer.VoltageObserverBlock; import com.drmangotea.tfmg.content.electricity.utilities.voltage_observer.VoltageObserverBlock;
import com.drmangotea.tfmg.content.electricity.utilities.voltage_observer.VoltageObserverGenerator; import com.drmangotea.tfmg.content.electricity.utilities.voltage_observer.VoltageObserverGenerator;
import com.drmangotea.tfmg.content.engines.base.EngineCTBehavior; import com.drmangotea.tfmg.content.engines.base.EngineCTBehavior;
@@ -323,7 +326,7 @@ public class TFMGBlocks {
.tag(TFMGBlockTags.INDUSTRIAL_PIPE.tag) .tag(TFMGBlockTags.INDUSTRIAL_PIPE.tag)
.recipe((c, p) -> p.stonecutting(DataIngredient.tag(CommonMetal.STEEL.ingots), RecipeCategory.BUILDING_BLOCKS, c, 8)) .recipe((c, p) -> p.stonecutting(DataIngredient.tag(CommonMetal.STEEL.ingots), RecipeCategory.BUILDING_BLOCKS, c, 8))
.blockstate((ctx, prov) -> prov.simpleBlock(ctx.getEntry(), AssetLookup.partialBaseModel(ctx, prov))) .blockstate((ctx, prov) -> prov.simpleBlock(ctx.getEntry(), AssetLookup.partialBaseModel(ctx, prov)))
.simpleItem() .simpleItem()
.register(); .register();
public static final BlockEntry<Block> CONCRETE_ENCASED_INDUSTRIAL_PIPE = REGISTRATE.block("concrete_encased_industrial_pipe", Block::new) public static final BlockEntry<Block> CONCRETE_ENCASED_INDUSTRIAL_PIPE = REGISTRATE.block("concrete_encased_industrial_pipe", Block::new)
.initialProperties(SharedProperties::softMetal) .initialProperties(SharedProperties::softMetal)
@@ -369,7 +372,7 @@ public class TFMGBlocks {
.tag(TFMGBlockTags.PUMPJACK_SMALL_PART.tag) .tag(TFMGBlockTags.PUMPJACK_SMALL_PART.tag)
.recipe((c, p) -> p.stonecutting(DataIngredient.tag(CommonMetal.STEEL.storageBlocks.items()), .recipe((c, p) -> p.stonecutting(DataIngredient.tag(CommonMetal.STEEL.storageBlocks.items()),
RecipeCategory.DECORATIONS, c, 2)) RecipeCategory.DECORATIONS, c, 2))
.simpleItem() .simpleItem()
.register(); .register();
public static final BlockEntry<PumpjackHammerHeadBlock> PUMPJACK_HAMMER_HEAD = REGISTRATE.block("pumpjack_hammer_head", PumpjackHammerHeadBlock::new) public static final BlockEntry<PumpjackHammerHeadBlock> PUMPJACK_HAMMER_HEAD = REGISTRATE.block("pumpjack_hammer_head", PumpjackHammerHeadBlock::new)
.initialProperties(SharedProperties::softMetal) .initialProperties(SharedProperties::softMetal)
@@ -377,7 +380,7 @@ public class TFMGBlocks {
.properties(BlockBehaviour.Properties::noOcclusion) .properties(BlockBehaviour.Properties::noOcclusion)
.blockstate(BlockStateGen.horizontalBlockProvider(false)) .blockstate(BlockStateGen.horizontalBlockProvider(false))
.tag(TFMGBlockTags.PUMPJACK_HEAD.tag) .tag(TFMGBlockTags.PUMPJACK_HEAD.tag)
.simpleItem() .simpleItem()
.register(); .register();
public static final BlockEntry<PumpjackHammerConnectorBlock> PUMPJACK_HAMMER_CONNECTOR = REGISTRATE.block("pumpjack_hammer_connector", PumpjackHammerConnectorBlock::new) public static final BlockEntry<PumpjackHammerConnectorBlock> PUMPJACK_HAMMER_CONNECTOR = REGISTRATE.block("pumpjack_hammer_connector", PumpjackHammerConnectorBlock::new)
@@ -386,7 +389,7 @@ public class TFMGBlocks {
.properties(BlockBehaviour.Properties::noOcclusion) .properties(BlockBehaviour.Properties::noOcclusion)
.blockstate(BlockStateGen.horizontalBlockProvider(false)) .blockstate(BlockStateGen.horizontalBlockProvider(false))
.tag(TFMGBlockTags.PUMPJACK_CONNECTOR.tag) .tag(TFMGBlockTags.PUMPJACK_CONNECTOR.tag)
.simpleItem() .simpleItem()
.register(); .register();
public static final BlockEntry<LargePumpjackHammerPartBlock> LARGE_PUMPJACK_HAMMER_PART = REGISTRATE.block("large_pumpjack_hammer_part", LargePumpjackHammerPartBlock::new) public static final BlockEntry<LargePumpjackHammerPartBlock> LARGE_PUMPJACK_HAMMER_PART = REGISTRATE.block("large_pumpjack_hammer_part", LargePumpjackHammerPartBlock::new)
.initialProperties(SharedProperties::softMetal) .initialProperties(SharedProperties::softMetal)
@@ -395,7 +398,7 @@ public class TFMGBlocks {
.tag(TFMGBlockTags.PUMPJACK_PART.tag) .tag(TFMGBlockTags.PUMPJACK_PART.tag)
.recipe((c, p) -> p.stonecutting(DataIngredient.tag(CommonMetal.STEEL.storageBlocks.items()), .recipe((c, p) -> p.stonecutting(DataIngredient.tag(CommonMetal.STEEL.storageBlocks.items()),
RecipeCategory.DECORATIONS, c, 2)) RecipeCategory.DECORATIONS, c, 2))
.simpleItem() .simpleItem()
.register(); .register();
public static final BlockEntry<LargePumpjackHammerHeadBlock> LARGE_PUMPJACK_HAMMER_HEAD = REGISTRATE.block("large_pumpjack_hammer_head", LargePumpjackHammerHeadBlock::new) public static final BlockEntry<LargePumpjackHammerHeadBlock> LARGE_PUMPJACK_HAMMER_HEAD = REGISTRATE.block("large_pumpjack_hammer_head", LargePumpjackHammerHeadBlock::new)
@@ -403,21 +406,21 @@ public class TFMGBlocks {
.transform(pickaxeOnly()) .transform(pickaxeOnly())
.blockstate(BlockStateGen.horizontalBlockProvider(false)) .blockstate(BlockStateGen.horizontalBlockProvider(false))
.tag(TFMGBlockTags.PUMPJACK_HEAD.tag) .tag(TFMGBlockTags.PUMPJACK_HEAD.tag)
.simpleItem() .simpleItem()
.register(); .register();
public static final BlockEntry<LargePumpjackHammerConnectorBlock> LARGE_PUMPJACK_HAMMER_CONNECTOR = REGISTRATE.block("large_pumpjack_hammer_connector", LargePumpjackHammerConnectorBlock::new) public static final BlockEntry<LargePumpjackHammerConnectorBlock> LARGE_PUMPJACK_HAMMER_CONNECTOR = REGISTRATE.block("large_pumpjack_hammer_connector", LargePumpjackHammerConnectorBlock::new)
.initialProperties(SharedProperties::softMetal) .initialProperties(SharedProperties::softMetal)
.transform(pickaxeOnly()) .transform(pickaxeOnly())
.blockstate(BlockStateGen.horizontalBlockProvider(false)) .blockstate(BlockStateGen.horizontalBlockProvider(false))
.tag(TFMGBlockTags.PUMPJACK_CONNECTOR.tag) .tag(TFMGBlockTags.PUMPJACK_CONNECTOR.tag)
.simpleItem() .simpleItem()
.register(); .register();
public static final BlockEntry<PumpjackBaseBlock> PUMPJACK_BASE = REGISTRATE.block("pumpjack_base", PumpjackBaseBlock::new) public static final BlockEntry<PumpjackBaseBlock> PUMPJACK_BASE = REGISTRATE.block("pumpjack_base", PumpjackBaseBlock::new)
.initialProperties(SharedProperties::softMetal) .initialProperties(SharedProperties::softMetal)
.transform(pickaxeOnly()) .transform(pickaxeOnly())
.properties(BlockBehaviour.Properties::noOcclusion) .properties(BlockBehaviour.Properties::noOcclusion)
.blockstate((ctx, prov) -> prov.simpleBlock(ctx.getEntry(), AssetLookup.partialBaseModel(ctx, prov))) .blockstate((ctx, prov) -> prov.simpleBlock(ctx.getEntry(), AssetLookup.partialBaseModel(ctx, prov)))
.simpleItem() .simpleItem()
.register(); .register();
public static final BlockEntry<Block> OIL_DEPOSIT = REGISTRATE.block("oil_deposit", Block::new) public static final BlockEntry<Block> OIL_DEPOSIT = REGISTRATE.block("oil_deposit", Block::new)
.initialProperties(() -> Blocks.BEDROCK) .initialProperties(() -> Blocks.BEDROCK)
@@ -431,7 +434,7 @@ public class TFMGBlocks {
.tag(BlockTags.INFINIBURN_OVERWORLD) .tag(BlockTags.INFINIBURN_OVERWORLD)
.tag(BlockTags.FEATURES_CANNOT_REPLACE) .tag(BlockTags.FEATURES_CANNOT_REPLACE)
.tag(AllTags.AllBlockTags.NON_MOVABLE.tag) .tag(AllTags.AllBlockTags.NON_MOVABLE.tag)
.simpleItem() .simpleItem()
.register(); .register();
//------------------VAT_MACHINES------------------// //------------------VAT_MACHINES------------------//
@SuppressWarnings("'addLayer(java.util.function.Supplier<java.util.function.Supplier<net.minecraft.client.renderer.RenderType>>)' is deprecated and marked for removal ") @SuppressWarnings("'addLayer(java.util.function.Supplier<java.util.function.Supplier<net.minecraft.client.renderer.RenderType>>)' is deprecated and marked for removal ")
@@ -511,9 +514,9 @@ public class TFMGBlocks {
}) })
.tag(BlockTags.NEEDS_STONE_TOOL) .tag(BlockTags.NEEDS_STONE_TOOL)
.transform(tagBlockAndItem(Map.of( .transform(tagBlockAndItem(Map.of(
Tags.Blocks.ORES, Tags.Items.ORES, Tags.Blocks.ORES, Tags.Items.ORES,
CommonMetal.LEAD.ores.blocks(), CommonMetal.LEAD.ores.items(), CommonMetal.LEAD.ores.blocks(), CommonMetal.LEAD.ores.items(),
Tags.Blocks.ORES_IN_GROUND_STONE, Tags.Items.ORES_IN_GROUND_STONE Tags.Blocks.ORES_IN_GROUND_STONE, Tags.Items.ORES_IN_GROUND_STONE
))) )))
.build() .build()
.register(); .register();
@@ -635,12 +638,12 @@ public class TFMGBlocks {
public static final BlockEntry<Block> SULFUR = REGISTRATE.block("sulfur", Block::new) public static final BlockEntry<Block> SULFUR = REGISTRATE.block("sulfur", Block::new)
.initialProperties(() -> Blocks.CALCITE) .initialProperties(() -> Blocks.CALCITE)
.transform(pickaxeOnly()) .transform(pickaxeOnly())
.simpleItem() .simpleItem()
.register(); .register();
public static final BlockEntry<Block> LIGNITE = REGISTRATE.block("lignite", Block::new) public static final BlockEntry<Block> LIGNITE = REGISTRATE.block("lignite", Block::new)
.initialProperties(() -> Blocks.CALCITE) .initialProperties(() -> Blocks.CALCITE)
.transform(pickaxeOnly()) .transform(pickaxeOnly())
.simpleItem() .simpleItem()
.register(); .register();
public static final BlockEntry<Block> FIRECLAY = REGISTRATE.block("fireclay", Block::new) public static final BlockEntry<Block> FIRECLAY = REGISTRATE.block("fireclay", Block::new)
.initialProperties(() -> Blocks.CLAY) .initialProperties(() -> Blocks.CLAY)
@@ -793,7 +796,7 @@ public class TFMGBlocks {
.transform(pickaxeOnly()) .transform(pickaxeOnly())
.tag(TFMGBlockTags.BLAST_FURNACE_WALL.tag) .tag(TFMGBlockTags.BLAST_FURNACE_WALL.tag)
.tag(BlockTags.NEEDS_STONE_TOOL) .tag(BlockTags.NEEDS_STONE_TOOL)
.simpleItem() .simpleItem()
.register(); .register();
public static final BlockEntry<Block> REINFORCED_FIREPROOF_BRICKS = REGISTRATE.block("reinforced_fireproof_bricks", Block::new) public static final BlockEntry<Block> REINFORCED_FIREPROOF_BRICKS = REGISTRATE.block("reinforced_fireproof_bricks", Block::new)
@@ -968,14 +971,14 @@ public class TFMGBlocks {
.blockstate((c, p) -> p.simpleBlock(c.get(), AssetLookup.partialBaseModel(c, p))) .blockstate((c, p) -> p.simpleBlock(c.get(), AssetLookup.partialBaseModel(c, p)))
.register(); .register();
public static final BlockEntry<CableHubBlock> BRASS_CABLE_HUB = public static final BlockEntry<CableHubBlock> BRASS_CABLE_HUB =
REGISTRATE.block("brass_cable_hub", CableHubBlock::new) REGISTRATE.block("brass_cable_hub", p -> new CableHubBlock(p, 50))
.initialProperties(SharedProperties::softMetal) .initialProperties(SharedProperties::softMetal)
.transform(pickaxeOnly()) .transform(pickaxeOnly())
.item() .item()
.build() .build()
.register(); .register();
public static final BlockEntry<CableHubBlock> COPPER_CABLE_HUB = public static final BlockEntry<CableHubBlock> COPPER_CABLE_HUB =
REGISTRATE.block("copper_cable_hub", CableHubBlock::new) REGISTRATE.block("copper_cable_hub", p -> new CableHubBlock(p, 16))
.initialProperties(() -> Blocks.COPPER_BLOCK) .initialProperties(() -> Blocks.COPPER_BLOCK)
.properties(p -> p.sound(SoundType.COPPER)) .properties(p -> p.sound(SoundType.COPPER))
.transform(pickaxeOnly()) .transform(pickaxeOnly())
@@ -983,28 +986,28 @@ public class TFMGBlocks {
.build() .build()
.register(); .register();
public static final BlockEntry<CableHubBlock> STEEL_CABLE_HUB = public static final BlockEntry<CableHubBlock> STEEL_CABLE_HUB =
REGISTRATE.block("steel_cable_hub", CableHubBlock::new) REGISTRATE.block("steel_cable_hub", p -> new CableHubBlock(p, 250))
.initialProperties(SharedProperties::softMetal) .initialProperties(SharedProperties::softMetal)
.transform(pickaxeOnly()) .transform(pickaxeOnly())
.item() .item()
.build() .build()
.register(); .register();
public static final BlockEntry<CableHubBlock> ALUMINUM_CABLE_HUB = public static final BlockEntry<CableHubBlock> ALUMINUM_CABLE_HUB =
REGISTRATE.block("aluminum_cable_hub", CableHubBlock::new) REGISTRATE.block("aluminum_cable_hub", p -> new CableHubBlock(p, 80))
.initialProperties(SharedProperties::softMetal) .initialProperties(SharedProperties::softMetal)
.transform(pickaxeOnly()) .transform(pickaxeOnly())
.item() .item()
.build() .build()
.register(); .register();
public static final BlockEntry<CableHubBlock> STEEL_CASING_CABLE_HUB = public static final BlockEntry<CableHubBlock> STEEL_CASING_CABLE_HUB =
REGISTRATE.block("steel_casing_cable_hub", CableHubBlock::new) REGISTRATE.block("steel_casing_cable_hub", p -> new CableHubBlock(p, 100))
.initialProperties(SharedProperties::softMetal) .initialProperties(SharedProperties::softMetal)
.transform(pickaxeOnly()) .transform(pickaxeOnly())
.item() .item()
.build() .build()
.register(); .register();
public static final BlockEntry<CableHubBlock> HEAVY_CABLE_HUB = public static final BlockEntry<CableHubBlock> HEAVY_CABLE_HUB =
REGISTRATE.block("heavy_cable_hub", CableHubBlock::new) REGISTRATE.block("heavy_cable_hub", p -> new CableHubBlock(p, 100))
.initialProperties(SharedProperties::softMetal) .initialProperties(SharedProperties::softMetal)
.transform(pickaxeOnly()) .transform(pickaxeOnly())
.item() .item()
@@ -1182,6 +1185,17 @@ public class TFMGBlocks {
.item() .item()
.transform(customItemModel()) .transform(customItemModel())
.register(); .register();
public static final BlockEntry<LargeSwitchBlock> LARGE_SWITCH =
REGISTRATE.block("large_switch", LargeSwitchBlock::new)
.initialProperties(SharedProperties::softMetal)
.blockstate(new LargeSwitchGenerator()::generate)
.properties(BlockBehaviour.Properties::noOcclusion)
.tag(AllTags.AllBlockTags.NON_MOVABLE.tag)
.transform(pickaxeOnly())
.addLayer(() -> RenderType::cutoutMipped)
.item()
.transform(customItemModel())
.register();
public static final BlockEntry<EncasedPotentiometerBlock> ENCASED_POTENTIOMETER = public static final BlockEntry<EncasedPotentiometerBlock> ENCASED_POTENTIOMETER =
REGISTRATE.block("encased_potentiometer", EncasedPotentiometerBlock::new) REGISTRATE.block("encased_potentiometer", EncasedPotentiometerBlock::new)
.initialProperties(SharedProperties::softMetal) .initialProperties(SharedProperties::softMetal)
@@ -1288,6 +1302,16 @@ public class TFMGBlocks {
.transform(customItemModel()) .transform(customItemModel())
.register(); .register();
public static final BlockEntry<LargeTransformerBlock> LARGE_TRANSFORMER =
REGISTRATE.block("large_transformer", LargeTransformerBlock::new)
.initialProperties(SharedProperties::softMetal)
.blockstate(new LargeTransformerGenerator()::generate)
.properties(BlockBehaviour.Properties::noOcclusion)
.tag(AllTags.AllBlockTags.NON_MOVABLE.tag)
.transform(pickaxeOnly())
.addLayer(() -> RenderType::cutoutMipped)
.register();
public static final BlockEntry<ConverterBlock> CONVERTER = public static final BlockEntry<ConverterBlock> CONVERTER =
REGISTRATE.block("converter", ConverterBlock::new) REGISTRATE.block("converter", ConverterBlock::new)
@@ -1299,6 +1323,16 @@ public class TFMGBlocks {
.transform(customItemModel()) .transform(customItemModel())
.register(); .register();
public static final BlockEntry<LargeCoilBlock> LARGE_COIL =
REGISTRATE.block("large_coil", LargeCoilBlock::new)
.initialProperties(SharedProperties::softMetal)
.transform(pickaxeOnly())
.blockstate((ctx, prov) -> prov.simpleBlock(ctx.getEntry(), AssetLookup.partialBaseModel(ctx, prov)))
.properties(BlockBehaviour.Properties::noOcclusion)
.item(LargeElectromagneticCoilItem::new)
.transform(customItemModel())
.register();
//public static final BlockEntry<FuseBlock> FUSE_BLOCK = //public static final BlockEntry<FuseBlock> FUSE_BLOCK =
// REGISTRATE.block("fuse_block", FuseBlock::new) // REGISTRATE.block("fuse_block", FuseBlock::new)
// .initialProperties(SharedProperties::softMetal) // .initialProperties(SharedProperties::softMetal)
@@ -1598,10 +1632,21 @@ public class TFMGBlocks {
.lang("Block of Coal Coke") .lang("Block of Coal Coke")
.register(); .register();
public static final BlockEntry<Block> LAMINATED_MAGNETIC_ALLOY_BLOCK = REGISTRATE.block("laminated_magnetic_alloy_block", Block::new)
.initialProperties(SharedProperties::softMetal)
.properties(BlockBehaviour.Properties::requiresCorrectToolForDrops)
.transform(pickaxeOnly())
.tag(BlockTags.BEACON_BASE_BLOCKS)
.blockstate(simpleCubeAll("laminated_magnetic_alloy_block"))
.tag(BlockTags.NEEDS_IRON_TOOL)
.item(CoalCokeBlockItem::new)
.build()
.register();
public static final BlockEntry<ColoredFallingBlock> CEMENT = REGISTRATE.block("cement", p -> new ColoredFallingBlock(new ColorRGBA(-8356741), p)) public static final BlockEntry<ColoredFallingBlock> CEMENT = REGISTRATE.block("cement", p -> new ColoredFallingBlock(new ColorRGBA(-8356741), p))
.initialProperties(() -> Blocks.CLAY) .initialProperties(() -> Blocks.CLAY)
.tag(BlockTags.MINEABLE_WITH_SHOVEL) .tag(BlockTags.MINEABLE_WITH_SHOVEL)
.simpleItem() .simpleItem()
.register(); .register();
//------------------DOOR------------------// //------------------DOOR------------------//

View File

@@ -10,7 +10,7 @@ import com.drmangotea.tfmg.base.debug.DebugCinderBlockItem;
import com.drmangotea.tfmg.content.electricity.measurement.MultimeterItem; import com.drmangotea.tfmg.content.electricity.measurement.MultimeterItem;
import com.drmangotea.tfmg.content.electricity.utilities.polarizer.MagnetItem; import com.drmangotea.tfmg.content.electricity.utilities.polarizer.MagnetItem;
import com.drmangotea.tfmg.content.electricity.utilities.resistor.ResistorItem; import com.drmangotea.tfmg.content.electricity.utilities.resistor.ResistorItem;
import com.drmangotea.tfmg.content.electricity.network.transformer.ElectromagneticCoilItem; import com.drmangotea.tfmg.content.electricity.network.transformer.small.ElectromagneticCoilItem;
import com.drmangotea.tfmg.content.engines.CylinderItem; import com.drmangotea.tfmg.content.engines.CylinderItem;
import com.drmangotea.tfmg.content.engines.FluidContainingItem; import com.drmangotea.tfmg.content.engines.FluidContainingItem;
import com.drmangotea.tfmg.content.engines.upgrades.TransmissionItem; import com.drmangotea.tfmg.content.engines.upgrades.TransmissionItem;
@@ -129,9 +129,9 @@ public class TFMGItems {
CONCRETE_MIXTURE = REGISTRATE.item("concrete_mixture", Item::new).register(), CONCRETE_MIXTURE = REGISTRATE.item("concrete_mixture", Item::new).register(),
ASPHALT_MIXTURE = REGISTRATE.item("asphalt_mixture", Item::new).register(), ASPHALT_MIXTURE = REGISTRATE.item("asphalt_mixture", Item::new).register(),
MAGNETIC_ALLOY_INGOT = REGISTRATE.item("magnetic_alloy_ingot", Item::new).register(), MAGNETIC_ALLOY_INGOT = REGISTRATE.item("magnetic_alloy_ingot", Item::new).register(),
MAGNETIC_ALLOY_SHEET = REGISTRATE.item("magnetic_alloy_sheet", Item::new).register(),
BAUXITE_POWDER = REGISTRATE.item("bauxite_powder", Item::new).register(), BAUXITE_POWDER = REGISTRATE.item("bauxite_powder", Item::new).register(),
EMPTY_CIRCUIT_BOARD = REGISTRATE.item("empty_circuit_board", Item::new).register(),
EMPTY_CIRCUIT_BOARD = REGISTRATE.item("empty_circuit_board", Item::new).register(),
COATED_CIRCUIT_BOARD = REGISTRATE.item("coated_circuit_board", Item::new).register(), COATED_CIRCUIT_BOARD = REGISTRATE.item("coated_circuit_board", Item::new).register(),
ETCHED_CIRCUIT_BOARD = REGISTRATE.item("etched_circuit_board", Item::new).register(), ETCHED_CIRCUIT_BOARD = REGISTRATE.item("etched_circuit_board", Item::new).register(),
CIRCUIT_BOARD = REGISTRATE.item("circuit_board", Item::new).register(), CIRCUIT_BOARD = REGISTRATE.item("circuit_board", Item::new).register(),

View File

@@ -1,10 +1,7 @@
package com.drmangotea.tfmg.registry; package com.drmangotea.tfmg.registry;
import com.drmangotea.tfmg.content.electricity.base.ConnectNeightborsPacket; import com.drmangotea.tfmg.content.electricity.base.*;
import com.drmangotea.tfmg.content.electricity.base.ConnectionPacket;
import com.drmangotea.tfmg.content.electricity.base.NetworkUpdatePacket;
import com.drmangotea.tfmg.content.electricity.base.UpdateInFrontPacket;
import com.drmangotea.tfmg.content.electricity.connection.cables.CablePlacePacket; import com.drmangotea.tfmg.content.electricity.connection.cables.CablePlacePacket;
import com.drmangotea.tfmg.content.electricity.configuration_wrench.ElectriciansWrenchPacket; import com.drmangotea.tfmg.content.electricity.configuration_wrench.ElectriciansWrenchPacket;
import com.drmangotea.tfmg.content.engines.engine_controller.TransmissionRemovePacket; import com.drmangotea.tfmg.content.engines.engine_controller.TransmissionRemovePacket;
@@ -31,6 +28,7 @@ public enum TFMGPackets implements BasePacketPayload.PacketTypeProvider {
QUAD_POTATO_CANNON(QuadPotatoCannonPacket.class, QuadPotatoCannonPacket.STREAM_CODEC), QUAD_POTATO_CANNON(QuadPotatoCannonPacket.class, QuadPotatoCannonPacket.STREAM_CODEC),
CONNECT_NEIGHBORS(ConnectNeightborsPacket.class, ConnectNeightborsPacket.STREAM_CODEC), CONNECT_NEIGHBORS(ConnectNeightborsPacket.class, ConnectNeightborsPacket.STREAM_CODEC),
NETWORK_UPDATE(NetworkUpdatePacket.class, NetworkUpdatePacket.STREAM_CODEC), NETWORK_UPDATE(NetworkUpdatePacket.class, NetworkUpdatePacket.STREAM_CODEC),
ELECTRICAL_BLOCK_FAIL(ElectricalBlockFailPacket.class, ElectricalBlockFailPacket.STREAM_CODEC),
CONNECTION_PACKET(ConnectionPacket.class, ConnectionPacket.STREAM_CODEC), CONNECTION_PACKET(ConnectionPacket.class, ConnectionPacket.STREAM_CODEC),
VAT_EVALUATION(VatEvaluationPacket.class, VatEvaluationPacket.STREAM_CODEC), VAT_EVALUATION(VatEvaluationPacket.class, VatEvaluationPacket.STREAM_CODEC),
COKE_OVEN_PACKET(CokeOvenPacket.class, CokeOvenPacket.STREAM_CODEC), COKE_OVEN_PACKET(CokeOvenPacket.class, CokeOvenPacket.STREAM_CODEC),

View File

@@ -39,6 +39,9 @@ public class TFMGPartialModels {
CAST_IRON_FLYWHEEL = block("cast_iron_flywheel/block"), CAST_IRON_FLYWHEEL = block("cast_iron_flywheel/block"),
LEAD_FLYWHEEL = block("lead_flywheel/block"), LEAD_FLYWHEEL = block("lead_flywheel/block"),
NICKEL_FLYWHEEL = block("nickel_flywheel/block"), NICKEL_FLYWHEEL = block("nickel_flywheel/block"),
LARGE_SWITCH_SHAFT = block("large_switch/shaft"),
LARGE_SWITCH_BUFFER = block("large_switch/buffer"),
LARGE_SWITCH_ARM = block("large_switch/connector"),
DISTILLATION_CONTROLLER_DIAL = block("steel_distillation_controller/dial"), DISTILLATION_CONTROLLER_DIAL = block("steel_distillation_controller/dial"),
PUMPJACK_CRANK = block("pumpjack_crank/crank"), PUMPJACK_CRANK = block("pumpjack_crank/crank"),
TOWER_GAUGE = block("distillation_tower/gauge"), TOWER_GAUGE = block("distillation_tower/gauge"),

View File

@@ -56,7 +56,7 @@
"tfmg.goggles.machine_input.power_level": "Power Level: ", "tfmg.goggles.machine_input.power_level": "Power Level: ",
"tfmg.winding_machine.header": "Winding Machine", "tfmg.winding_machine.header": "Winding Machine",
"tfmg.goggles.winding_machine.turns": "Turns Left: %1$", "tfmg.goggles.winding_machine.turns": "Turns Left: ",
"tfmg.goggles.winding_machine.progress": "Progress: ", "tfmg.goggles.winding_machine.progress": "Progress: ",
"tfmg.polarizer.header": "Polarizer", "tfmg.polarizer.header": "Polarizer",
@@ -157,10 +157,15 @@
"tfmg.multimeter.power_generated": " Power Generated: %s", "tfmg.multimeter.power_generated": " Power Generated: %s",
"tfmg.multimeter.power_percentage": " Grid Strength: ", "tfmg.multimeter.power_percentage": " Grid Strength: ",
"tfmg.multimeter.energy_usage": " Energy Usage: ", "tfmg.multimeter.energy_usage": " Energy Usage: ",
"tfmg.multimeter.approaching_overvoltage": " Approaching Overvoltage ",
"tfmg.multimeter.approaching_overcurrent": " Approaching Overcurrent ",
"tfmg.multimeter.energy_stored": " Energy Stored: ", "tfmg.multimeter.energy_stored": " Energy Stored: ",
"tfmg.multimeter.network.generation": "Network Power Generation: %s", "tfmg.multimeter.network.generation": "Network Power Generation: %s",
"tfmg.multimeter.network.consumption": "Network Power Consumption: %s", "tfmg.multimeter.network.consumption": "Network Power Consumption: %s",
"tfmg.multimeter.transformer_ratio": " Turn Ratio: ", "tfmg.multimeter.transformer_ratio": " Turn Ratio: ",
"tfmg.multimeter.large_transformer.air_cooled": " State: Air Cooled",
"tfmg.multimeter.large_transformer.metal_cooled": " State: Metal Heat Sink Cooled",
"tfmg.multimeter.large_transformer.oil_cooled": " State: Oil + Heat Sink Cooled",
"tfmg.electricity.capacity": "Capacity: %s", "tfmg.electricity.capacity": "Capacity: %s",
"tfmg.electricity.charging_rate": "Charging Rate: %s", "tfmg.electricity.charging_rate": "Charging Rate: %s",

View File

@@ -162,6 +162,10 @@
"block.tfmg.cable_connector.tooltip.condition1": "When 2 cable insulators are right clicked with a copper/aluminum/constantan spool", "block.tfmg.cable_connector.tooltip.condition1": "When 2 cable insulators are right clicked with a copper/aluminum/constantan spool",
"block.tfmg.cable_connector.tooltip.behaviour1": "Created a connection between the 2 insulators transferring power between them", "block.tfmg.cable_connector.tooltip.behaviour1": "Created a connection between the 2 insulators transferring power between them",
"block.tfmg.large_coil.tooltip.summary": "Used for creating the Large Transformer",
"block.tfmg.large_coil.tooltip.condition1": "When 2 Large Coils are placed next to each other and right-clicked with a Laminated Magnetic Alloy Block",
"block.tfmg.large_coil.tooltip.behaviour1": "The Large Transformer is Created, to make it efficient, right-click it with a Block of Steel and a Lubrication Oil Bucket",
"block.tfmg.glass_cable_insulator.tooltip.summary": "Transfers power", "block.tfmg.glass_cable_insulator.tooltip.summary": "Transfers power",
"block.tfmg.glass_cable_insulator.tooltip.condition1": "When 2 cable insulators are right clicked with a copper/aluminum/constantan spool", "block.tfmg.glass_cable_insulator.tooltip.condition1": "When 2 cable insulators are right clicked with a copper/aluminum/constantan spool",
"block.tfmg.glass_cable_insulator.tooltip.behaviour1": "Created a connection between the 2 insulators transferring power between them", "block.tfmg.glass_cable_insulator.tooltip.behaviour1": "Created a connection between the 2 insulators transferring power between them",

View File

@@ -0,0 +1,24 @@
{
"format_version": "1.9.0",
"credit": "Made with Blockbench",
"parent": "block/block",
"textures": {
"0": "tfmg:block/large_coil_top",
"1": "tfmg:block/large_coil_side",
"particle": "tfmg:block/large_coil_top"
},
"elements": [
{
"from": [0, 0, 0],
"to": [16, 16, 16],
"faces": {
"north": {"uv": [0, 0, 16, 16], "texture": "#1"},
"east": {"uv": [0, 0, 16, 16], "texture": "#1"},
"south": {"uv": [0, 0, 16, 16], "texture": "#1"},
"west": {"uv": [0, 0, 16, 16], "texture": "#1"},
"up": {"uv": [0, 0, 16, 16], "texture": "#0"},
"down": {"uv": [0, 0, 16, 16], "texture": "#0"}
}
}
]
}

View File

@@ -0,0 +1,24 @@
{
"format_version": "1.9.0",
"credit": "Made with Blockbench",
"parent": "block/block",
"textures": {
"0": "tfmg:block/large_coil_top",
"1": "tfmg:block/large_coil_side",
"particle": "tfmg:block/large_coil_top"
},
"elements": [
{
"from": [0, 0, 0],
"to": [16, 16, 16],
"faces": {
"north": {"uv": [0, 0, 16, 16], "texture": "#1"},
"east": {"uv": [0, 0, 16, 16], "texture": "#1"},
"south": {"uv": [0, 0, 16, 16], "texture": "#1"},
"west": {"uv": [0, 0, 16, 16], "texture": "#1"},
"up": {"uv": [0, 0, 16, 16], "texture": "#0"},
"down": {"uv": [0, 0, 16, 16], "texture": "#0"}
}
}
]
}

View File

@@ -0,0 +1,564 @@
{
"format_version": "1.21.6",
"credit": "Made with Blockbench",
"parent": "block/block",
"texture_size": [32, 32],
"textures": {
"1": "tfmg:block/large_switch",
"2": "tfmg:block/steel_truss",
"3": "tfmg:block/generator",
"4": "tfmg:block/heavy_machinery_casing",
"particle": "tfmg:block/steel_truss"
},
"elements": [
{
"from": [6, 2, 1],
"to": [10, 6, 31],
"rotation": {"angle": 0, "axis": "y", "origin": [6, 2, 0]},
"faces": {
"east": {"uv": [14, 0, 16, 15], "rotation": 90, "texture": "#1"},
"south": {"uv": [12, 3, 14, 5], "texture": "#1"},
"west": {"uv": [14, 0, 16, 15], "rotation": 90, "texture": "#1"},
"up": {"uv": [14, 0, 16, 15], "texture": "#1"},
"down": {"uv": [14, 0, 16, 15], "texture": "#1"}
}
},
{
"from": [5, 1, 2],
"to": [11, 7, 3],
"rotation": {"angle": 0, "axis": "y", "origin": [7, 2, 2]},
"faces": {
"north": {"uv": [11, 0, 14, 3], "texture": "#1"},
"east": {"uv": [11, 0, 11.5, 3], "texture": "#1"},
"south": {"uv": [11, 0, 14, 3], "texture": "#1"},
"west": {"uv": [11, 0, 11.5, 3], "texture": "#1"},
"up": {"uv": [11, 0, 14, 0.5], "texture": "#1"},
"down": {"uv": [11, 0, 14, 0.5], "texture": "#1"}
}
},
{
"from": [5, 1, 4],
"to": [11, 7, 5],
"rotation": {"angle": 0, "axis": "y", "origin": [7, 2, 4]},
"faces": {
"north": {"uv": [11, 0, 14, 3], "texture": "#1"},
"east": {"uv": [11, 0, 11.5, 3], "texture": "#1"},
"south": {"uv": [11, 0, 14, 3], "texture": "#1"},
"west": {"uv": [11, 0, 11.5, 3], "texture": "#1"},
"up": {"uv": [11, 0, 14, 0.5], "texture": "#1"},
"down": {"uv": [11, 0, 14, 0.5], "texture": "#1"}
}
},
{
"from": [5, 1, 6],
"to": [11, 7, 7],
"rotation": {"angle": 0, "axis": "y", "origin": [7, 2, 6]},
"faces": {
"north": {"uv": [11, 0, 14, 3], "texture": "#1"},
"east": {"uv": [11, 0, 11.5, 3], "texture": "#1"},
"south": {"uv": [11, 0, 14, 3], "texture": "#1"},
"west": {"uv": [11, 0, 11.5, 3], "texture": "#1"},
"up": {"uv": [11, 0, 14, 0.5], "texture": "#1"},
"down": {"uv": [11, 0, 14, 0.5], "texture": "#1"}
}
},
{
"from": [5, 1, 8],
"to": [11, 7, 9],
"rotation": {"angle": 0, "axis": "y", "origin": [7, 2, 8]},
"faces": {
"north": {"uv": [11, 0, 14, 3], "texture": "#1"},
"east": {"uv": [11, 0, 11.5, 3], "texture": "#1"},
"south": {"uv": [11, 0, 14, 3], "texture": "#1"},
"west": {"uv": [11, 0, 11.5, 3], "texture": "#1"},
"up": {"uv": [11, 0, 14, 0.5], "texture": "#1"},
"down": {"uv": [11, 0, 14, 0.5], "texture": "#1"}
}
},
{
"from": [5, 1, 10],
"to": [11, 7, 11],
"rotation": {"angle": 0, "axis": "y", "origin": [7, 2, 10]},
"faces": {
"north": {"uv": [11, 0, 14, 3], "texture": "#1"},
"east": {"uv": [11, 0, 11.5, 3], "texture": "#1"},
"south": {"uv": [11, 0, 14, 3], "texture": "#1"},
"west": {"uv": [11, 0, 11.5, 3], "texture": "#1"},
"up": {"uv": [11, 0, 14, 0.5], "texture": "#1"},
"down": {"uv": [11, 0, 14, 0.5], "texture": "#1"}
}
},
{
"from": [5, 1, 12],
"to": [11, 7, 13],
"rotation": {"angle": 0, "axis": "y", "origin": [7, 2, 12]},
"faces": {
"north": {"uv": [11, 0, 14, 3], "texture": "#1"},
"east": {"uv": [11, 0, 11.5, 3], "texture": "#1"},
"south": {"uv": [11, 0, 14, 3], "texture": "#1"},
"west": {"uv": [11, 0, 11.5, 3], "texture": "#1"},
"up": {"uv": [11, 0, 14, 0.5], "texture": "#1"},
"down": {"uv": [11, 0, 14, 0.5], "texture": "#1"}
}
},
{
"from": [5, 1, 14],
"to": [11, 7, 15],
"rotation": {"angle": 0, "axis": "y", "origin": [7, 2, 14]},
"faces": {
"north": {"uv": [11, 0, 14, 3], "texture": "#1"},
"east": {"uv": [11, 0, 11.5, 3], "texture": "#1"},
"south": {"uv": [11, 0, 14, 3], "texture": "#1"},
"west": {"uv": [11, 0, 11.5, 3], "texture": "#1"},
"up": {"uv": [11, 0, 14, 0.5], "texture": "#1"},
"down": {"uv": [11, 0, 14, 0.5], "texture": "#1"}
}
},
{
"from": [5, 1, 16],
"to": [11, 7, 17],
"rotation": {"angle": 0, "axis": "y", "origin": [7, 2, 16]},
"faces": {
"north": {"uv": [11, 0, 14, 3], "texture": "#1"},
"east": {"uv": [11, 0, 11.5, 3], "texture": "#1"},
"south": {"uv": [11, 0, 14, 3], "texture": "#1"},
"west": {"uv": [11, 0, 11.5, 3], "texture": "#1"},
"up": {"uv": [11, 0, 14, 0.5], "texture": "#1"},
"down": {"uv": [11, 0, 14, 0.5], "texture": "#1"}
}
},
{
"from": [5, 1, 18],
"to": [11, 7, 19],
"rotation": {"angle": 0, "axis": "y", "origin": [7, 2, 18]},
"faces": {
"north": {"uv": [11, 0, 14, 3], "texture": "#1"},
"east": {"uv": [11, 0, 11.5, 3], "texture": "#1"},
"south": {"uv": [11, 0, 14, 3], "texture": "#1"},
"west": {"uv": [11, 0, 11.5, 3], "texture": "#1"},
"up": {"uv": [11, 0, 14, 0.5], "texture": "#1"},
"down": {"uv": [11, 0, 14, 0.5], "texture": "#1"}
}
},
{
"from": [5, 1, 20],
"to": [11, 7, 21],
"rotation": {"angle": 0, "axis": "y", "origin": [7, 2, 20]},
"faces": {
"north": {"uv": [11, 0, 14, 3], "texture": "#1"},
"east": {"uv": [11, 0, 11.5, 3], "texture": "#1"},
"south": {"uv": [11, 0, 14, 3], "texture": "#1"},
"west": {"uv": [11, 0, 11.5, 3], "texture": "#1"},
"up": {"uv": [11, 0, 14, 0.5], "texture": "#1"},
"down": {"uv": [11, 0, 14, 0.5], "texture": "#1"}
}
},
{
"from": [5, 1, 22],
"to": [11, 7, 23],
"rotation": {"angle": 0, "axis": "y", "origin": [7, 2, 22]},
"faces": {
"north": {"uv": [11, 0, 14, 3], "texture": "#1"},
"east": {"uv": [11, 0, 11.5, 3], "texture": "#1"},
"south": {"uv": [11, 0, 14, 3], "texture": "#1"},
"west": {"uv": [11, 0, 11.5, 3], "texture": "#1"},
"up": {"uv": [11, 0, 14, 0.5], "texture": "#1"},
"down": {"uv": [11, 0, 14, 0.5], "texture": "#1"}
}
},
{
"from": [5, 1, 24],
"to": [11, 7, 25],
"rotation": {"angle": 0, "axis": "y", "origin": [7, 2, 24]},
"faces": {
"north": {"uv": [11, 0, 14, 3], "texture": "#1"},
"east": {"uv": [11, 0, 11.5, 3], "texture": "#1"},
"south": {"uv": [11, 0, 14, 3], "texture": "#1"},
"west": {"uv": [11, 0, 11.5, 3], "texture": "#1"},
"up": {"uv": [11, 0, 14, 0.5], "texture": "#1"},
"down": {"uv": [11, 0, 14, 0.5], "texture": "#1"}
}
},
{
"from": [5, 1, 26],
"to": [11, 7, 27],
"rotation": {"angle": 0, "axis": "y", "origin": [7, 2, 26]},
"faces": {
"north": {"uv": [11, 0, 14, 3], "texture": "#1"},
"east": {"uv": [11, 0, 11.5, 3], "texture": "#1"},
"south": {"uv": [11, 0, 14, 3], "texture": "#1"},
"west": {"uv": [11, 0, 11.5, 3], "texture": "#1"},
"up": {"uv": [11, 0, 14, 0.5], "texture": "#1"},
"down": {"uv": [11, 0, 14, 0.5], "texture": "#1"}
}
},
{
"from": [5, 1, 28],
"to": [11, 7, 29],
"rotation": {"angle": 0, "axis": "y", "origin": [7, 2, 28]},
"faces": {
"north": {"uv": [11, 0, 14, 3], "texture": "#1"},
"east": {"uv": [11, 0, 11.5, 3], "texture": "#1"},
"south": {"uv": [11, 0, 14, 3], "texture": "#1"},
"west": {"uv": [11, 0, 11.5, 3], "texture": "#1"},
"up": {"uv": [11, 0, 14, 0.5], "texture": "#1"},
"down": {"uv": [11, 0, 14, 0.5], "texture": "#1"}
}
},
{
"from": [13, 3, 3],
"to": [15, 13, 13],
"rotation": {"angle": 0, "axis": "y", "origin": [13, 7, 7]},
"faces": {
"north": {"uv": [7, 4.5, 8, 9.5], "texture": "#1"},
"east": {"uv": [8.5, 1.5, 13.5, 6.5], "texture": "#3"},
"south": {"uv": [3, 4.5, 4, 9.5], "texture": "#1"},
"west": {"uv": [3, 3, 13, 13], "texture": "#4"},
"up": {"uv": [3, 4.5, 4, 9.5], "texture": "#1"},
"down": {"uv": [3, 4.5, 4, 9.5], "texture": "#1"}
}
},
{
"from": [15, 3, 3],
"to": [16, 13, 5],
"rotation": {"angle": 0, "axis": "y", "origin": [14, 3, 3]},
"faces": {
"north": {"uv": [3, 4.5, 3.5, 9.5], "texture": "#1"},
"east": {"uv": [7, 4.5, 8, 9.5], "texture": "#1"},
"south": {"uv": [7, 4.5, 7.5, 9.5], "texture": "#1"},
"up": {"uv": [3, 4.5, 3.5, 5.5], "texture": "#1"},
"down": {"uv": [3, 5.5, 3.5, 4.5], "texture": "#1"}
}
},
{
"from": [15, 3, 11],
"to": [16, 13, 13],
"rotation": {"angle": 0, "axis": "y", "origin": [14, 3, 11]},
"faces": {
"north": {"uv": [3.5, 4.5, 4, 9.5], "texture": "#1"},
"east": {"uv": [3, 4.5, 4, 9.5], "texture": "#1"},
"south": {"uv": [3, 4.5, 3.5, 9.5], "texture": "#1"},
"up": {"uv": [3, 5.5, 3.5, 4.5], "texture": "#1"},
"down": {"uv": [3, 4.5, 3.5, 5.5], "texture": "#1"}
}
},
{
"from": [15, 11, 5],
"to": [16, 13, 11],
"rotation": {"angle": 0, "axis": "x", "origin": [14, 3, 9]},
"faces": {
"east": {"uv": [4, 4.5, 7, 5.5], "texture": "#1"},
"up": {"uv": [3, 5.5, 3.5, 8.5], "texture": "#1"},
"down": {"uv": [3.5, 5.5, 4, 8.5], "texture": "#1"}
}
},
{
"from": [15, 3, 5],
"to": [16, 5, 11],
"rotation": {"angle": 0, "axis": "y", "origin": [14, -5, 9]},
"faces": {
"east": {"uv": [4, 8.5, 7, 9.5], "texture": "#1"},
"up": {"uv": [3.5, 5.5, 4, 8.5], "texture": "#1"},
"down": {"uv": [3, 5.5, 3.5, 8.5], "texture": "#1"}
}
},
{
"from": [-1, 3, 5],
"to": [0, 5, 11],
"rotation": {"angle": 0, "axis": "z", "origin": [1, 8, 9]},
"faces": {
"west": {"uv": [4, 9.5, 7, 8.5], "rotation": 180, "texture": "#1"},
"up": {"uv": [3.5, 5.5, 4, 8.5], "rotation": 180, "texture": "#1"},
"down": {"uv": [3, 5.5, 3.5, 8.5], "rotation": 180, "texture": "#1"}
}
},
{
"from": [-1, 3, 11],
"to": [0, 13, 13],
"rotation": {"angle": 0, "axis": "z", "origin": [1, 8, 9]},
"faces": {
"north": {"uv": [3.5, 4.5, 4, 9.5], "rotation": 180, "texture": "#1"},
"south": {"uv": [3, 4.5, 3.5, 9.5], "rotation": 180, "texture": "#1"},
"west": {"uv": [7, 4.5, 8, 9.5], "texture": "#1"},
"up": {"uv": [3, 8.5, 3.5, 9.5], "rotation": 180, "texture": "#1"},
"down": {"uv": [3, 5.5, 3.5, 4.5], "rotation": 180, "texture": "#1"}
}
},
{
"from": [-1, 3, 3],
"to": [0, 13, 5],
"rotation": {"angle": 0, "axis": "z", "origin": [1, 8, 9]},
"faces": {
"north": {"uv": [3, 4.5, 3.5, 9.5], "rotation": 180, "texture": "#1"},
"south": {"uv": [3.5, 4.5, 4, 9.5], "rotation": 180, "texture": "#1"},
"west": {"uv": [4, 4.5, 3, 9.5], "rotation": 180, "texture": "#1"},
"up": {"uv": [3, 5.5, 3.5, 4.5], "rotation": 180, "texture": "#1"},
"down": {"uv": [3, 4.5, 3.5, 5.5], "rotation": 180, "texture": "#1"}
}
},
{
"from": [0, 3, 3],
"to": [2, 13, 13],
"rotation": {"angle": 0, "axis": "z", "origin": [1, 8, 9]},
"faces": {
"north": {"uv": [4, 4.5, 3, 9.5], "rotation": 180, "texture": "#1"},
"east": {"uv": [3, 3, 13, 13], "rotation": 180, "texture": "#4"},
"south": {"uv": [3, 4.5, 4, 9.5], "rotation": 180, "texture": "#1"},
"west": {"uv": [8.5, 1.5, 13.5, 6.5], "rotation": 180, "texture": "#3"},
"up": {"uv": [3, 4.5, 4, 9.5], "rotation": 180, "texture": "#1"},
"down": {"uv": [3, 4.5, 4, 9.5], "rotation": 180, "texture": "#1"}
}
},
{
"from": [-1, 11, 5],
"to": [0, 13, 11],
"rotation": {"angle": 0, "axis": "z", "origin": [1, 8, 9]},
"faces": {
"west": {"uv": [4, 5.5, 7, 4.5], "rotation": 180, "texture": "#1"},
"up": {"uv": [3, 5.5, 3.5, 8.5], "rotation": 180, "texture": "#1"},
"down": {"uv": [3.5, 5.5, 4, 8.5], "rotation": 180, "texture": "#1"}
}
},
{
"from": [5, 5, 0],
"to": [11, 11, 2],
"rotation": {"angle": 0, "axis": "y", "origin": [7, 6, 0]},
"faces": {
"north": {"uv": [8, 0, 11, 3], "texture": "#1"},
"east": {"uv": [6, 0, 5, 3], "texture": "#1"},
"south": {"uv": [5, 0, 8, 3], "texture": "#1"},
"west": {"uv": [5, 0, 6, 3], "texture": "#1"},
"up": {"uv": [5, 0, 6, 3], "rotation": 90, "texture": "#1"},
"down": {"uv": [5, 0, 6, 3], "rotation": 90, "texture": "#1"}
}
},
{
"from": [5, 5, 30],
"to": [11, 11, 32],
"rotation": {"angle": 0, "axis": "x", "origin": [7, 10, 32]},
"faces": {
"north": {"uv": [5, 0, 8, 3], "rotation": 180, "texture": "#1"},
"east": {"uv": [6, 0, 5, 3], "rotation": 180, "texture": "#1"},
"south": {"uv": [8, 0, 11, 3], "rotation": 180, "texture": "#1"},
"west": {"uv": [5, 0, 6, 3], "rotation": 180, "texture": "#1"},
"up": {"uv": [6, 0, 5, 3], "rotation": 90, "texture": "#1"},
"down": {"uv": [5, 0, 6, 3], "rotation": 90, "texture": "#1"}
}
},
{
"from": [0, 0, 0],
"to": [2, 8, 2],
"faces": {
"north": {"uv": [0, 0, 2, 8], "texture": "#2"},
"east": {"uv": [0, 0, 2, 8], "texture": "#2"},
"south": {"uv": [0, 0, 2, 8], "texture": "#2"},
"west": {"uv": [2, 0, 0, 8], "texture": "#2"},
"up": {"uv": [0, 0, 2, 2], "rotation": 270, "texture": "#2"},
"down": {"uv": [0, 0, 2, 2], "texture": "#2"}
}
},
{
"from": [0, 0, 14],
"to": [2, 8, 16],
"rotation": {"angle": 0, "axis": "y", "origin": [0, 0, 14]},
"faces": {
"north": {"uv": [0, 0, 2, 8], "texture": "#2"},
"east": {"uv": [0, 0, 2, 8], "texture": "#2"},
"south": {"uv": [2, 0, 0, 8], "texture": "#2"},
"west": {"uv": [0, 0, 2, 8], "texture": "#2"},
"up": {"uv": [0, 0, 2, 2], "rotation": 180, "texture": "#2"},
"down": {"uv": [0, 0, 2, 2], "texture": "#2"}
}
},
{
"from": [14, 0, 14],
"to": [16, 8, 16],
"rotation": {"angle": 0, "axis": "y", "origin": [14, 0, 14]},
"faces": {
"north": {"uv": [0, 0, 2, 8], "texture": "#2"},
"east": {"uv": [2, 0, 0, 8], "texture": "#2"},
"south": {"uv": [0, 0, 2, 8], "texture": "#2"},
"west": {"uv": [0, 0, 2, 8], "texture": "#2"},
"up": {"uv": [0, 0, 2, 2], "rotation": 90, "texture": "#2"},
"down": {"uv": [0, 0, 2, 2], "texture": "#2"}
}
},
{
"from": [14, 0, 0],
"to": [16, 8, 2],
"rotation": {"angle": 0, "axis": "y", "origin": [14, 0, 0]},
"faces": {
"north": {"uv": [2, 0, 0, 8], "texture": "#2"},
"east": {"uv": [0, 0, 2, 8], "texture": "#2"},
"south": {"uv": [0, 0, 2, 8], "texture": "#2"},
"west": {"uv": [0, 0, 2, 8], "texture": "#2"},
"up": {"uv": [0, 0, 2, 2], "texture": "#2"},
"down": {"uv": [0, 0, 2, 2], "texture": "#2"}
}
},
{
"from": [1, 0, 2],
"to": [1, 8, 14],
"rotation": {"angle": 0, "axis": "y", "origin": [0, 0, 2]},
"faces": {
"north": {"uv": [0, 0, 0, 4], "texture": "#1"},
"east": {"uv": [8, 12, 14, 16], "texture": "#1"},
"south": {"uv": [0, 0, 0, 4], "texture": "#1"},
"west": {"uv": [8, 12, 14, 16], "texture": "#1"},
"up": {"uv": [0, 0, 0, 6], "texture": "#1"},
"down": {"uv": [0, 0, 0, 6], "texture": "#1"}
}
},
{
"from": [6, 13, 7],
"to": [6, 17, 9],
"rotation": {"angle": 0, "axis": "y", "origin": [5, 4, 2]},
"faces": {
"north": {"uv": [8, 14, 8, 16], "texture": "#1"},
"east": {"uv": [8, 14, 9, 16], "texture": "#1"},
"south": {"uv": [8, 14, 8, 16], "texture": "#1"},
"west": {"uv": [8, 14, 9, 16], "texture": "#1"},
"up": {"uv": [8, 14, 8, 15], "texture": "#1"},
"down": {"uv": [8, 14, 8, 15], "texture": "#1"}
}
},
{
"from": [10, 13, 7],
"to": [10, 17, 9],
"rotation": {"angle": 0, "axis": "y", "origin": [9, 4, 2]},
"faces": {
"north": {"uv": [8, 14, 8, 16], "texture": "#1"},
"east": {"uv": [8, 14, 9, 16], "texture": "#1"},
"south": {"uv": [8, 14, 8, 16], "texture": "#1"},
"west": {"uv": [8, 14, 9, 16], "texture": "#1"},
"up": {"uv": [8, 14, 8, 15], "texture": "#1"},
"down": {"uv": [8, 14, 8, 15], "texture": "#1"}
}
},
{
"from": [15, 0, 2],
"to": [15, 8, 14],
"rotation": {"angle": 0, "axis": "y", "origin": [14, 0, 2]},
"faces": {
"north": {"uv": [0, 0, 0, 4], "texture": "#1"},
"east": {"uv": [8, 12, 14, 16], "texture": "#1"},
"south": {"uv": [0, 0, 0, 4], "texture": "#1"},
"west": {"uv": [8, 12, 14, 16], "texture": "#1"},
"up": {"uv": [0, 0, 0, 6], "texture": "#1"},
"down": {"uv": [0, 0, 0, 6], "texture": "#1"}
}
},
{
"from": [8, 8, 2],
"to": [8, 16, 9],
"rotation": {"angle": 0, "axis": "y", "origin": [7, 4, 2]},
"faces": {
"north": {"uv": [0, 0, 0, 4], "texture": "#1"},
"east": {"uv": [4.5, 12, 8, 16], "texture": "#1"},
"south": {"uv": [0, 0, 0, 4], "texture": "#1"},
"west": {"uv": [8, 12, 4.5, 16], "texture": "#1"},
"up": {"uv": [0, 0, 0, 3.5], "texture": "#1"},
"down": {"uv": [0, 0, 0, 3.5], "texture": "#1"}
}
},
{
"from": [5, 9, 24],
"to": [11, 14, 30],
"rotation": {"angle": 0, "axis": "y", "origin": [7, 12, 28]},
"faces": {
"north": {"uv": [8, 6, 11, 8.5], "texture": "#1"},
"east": {"uv": [8, 6, 11, 8.5], "texture": "#1"},
"south": {"uv": [8, 6, 11, 8.5], "texture": "#1"},
"west": {"uv": [8, 6, 11, 8.5], "texture": "#1"},
"up": {"uv": [11, 3, 8, 6], "rotation": 90, "texture": "#1"},
"down": {"uv": [5, 0, 8, 3], "texture": "#1"}
}
},
{
"from": [9.01, 7, 24],
"to": [9.01, 17, 30],
"rotation": {"angle": 0, "axis": "y", "origin": [6, 14, 28]},
"faces": {
"north": {"uv": [0, 0, 0, 5], "texture": "#1"},
"east": {"uv": [0, 0, 3, 5], "texture": "#1"},
"south": {"uv": [0, 0, 0, 5], "texture": "#1"},
"west": {"uv": [3, 0, 0, 5], "texture": "#1"},
"up": {"uv": [0, 0, 0, 3], "texture": "#1"},
"down": {"uv": [0, 0, 0, 3], "texture": "#1"}
}
},
{
"from": [6.99, 7, 24],
"to": [6.99, 17, 30],
"rotation": {"angle": 0, "axis": "y", "origin": [4, 14, 28]},
"faces": {
"north": {"uv": [0, 0, 0, 5], "texture": "#1"},
"east": {"uv": [0, 0, 3, 5], "texture": "#1"},
"south": {"uv": [0, 0, 0, 5], "texture": "#1"},
"west": {"uv": [3, 0, 0, 5], "texture": "#1"},
"up": {"uv": [0, 0, 0, 3], "texture": "#1"},
"down": {"uv": [0, 0, 0, 3], "texture": "#1"}
}
},
{
"from": [4.99, 17, 24],
"to": [6.99, 17, 30],
"rotation": {"angle": -45, "axis": "z", "origin": [7, 17, 28]},
"faces": {
"north": {"uv": [0, 0, 0, 1], "rotation": 90, "texture": "#1"},
"east": {"uv": [0, 0, 0, 3], "rotation": 270, "texture": "#1"},
"south": {"uv": [0, 0, 0, 1], "rotation": 270, "texture": "#1"},
"west": {"uv": [0, 0, 0, 3], "rotation": 270, "texture": "#1"},
"up": {"uv": [3.5, 4.5, 6.5, 3.5], "rotation": 270, "texture": "#1"},
"down": {"uv": [6.5, 4.5, 3.5, 3.5], "rotation": 270, "texture": "#1"}
}
},
{
"from": [9.01, 17, 24],
"to": [9.01, 19, 30],
"rotation": {"angle": -45, "axis": "z", "origin": [9.01, 17, 28]},
"faces": {
"north": {"uv": [0, 0, 0, 1], "texture": "#1"},
"east": {"uv": [3.5, 4.5, 6.5, 3.5], "texture": "#1"},
"south": {"uv": [0, 0, 0, 1], "texture": "#1"},
"west": {"uv": [6.5, 4.5, 3.5, 3.5], "texture": "#1"},
"up": {"uv": [0, 0, 0, 3], "texture": "#1"},
"down": {"uv": [0, 0, 0, 3], "texture": "#1"}
}
},
{
"from": [2, 11, 7],
"to": [13, 13, 9],
"rotation": {"angle": 0, "axis": "y", "origin": [2, 11, 7]},
"faces": {
"north": {"uv": [11, 3.5, 12, 9], "rotation": 90, "texture": "#1"},
"south": {"uv": [11, 3.5, 12, 9], "rotation": 90, "texture": "#1"},
"up": {"uv": [11, 3.5, 12, 9], "rotation": 90, "texture": "#1"},
"down": {"uv": [11, 3.5, 12, 9], "rotation": 90, "texture": "#1"}
}
},
{
"from": [2, 0, 1],
"to": [14, 8, 1],
"faces": {
"north": {"uv": [2, 8, 14, 16], "texture": "#2"},
"east": {"uv": [0, 0, 0, 4], "texture": "#missing"},
"south": {"uv": [2, 8, 14, 16], "texture": "#2"},
"west": {"uv": [0, 0, 0, 4], "texture": "#missing"},
"up": {"uv": [0, 0, 6, 0], "texture": "#missing"},
"down": {"uv": [0, 0, 6, 0], "texture": "#missing"}
}
},
{
"from": [6, 15, 7],
"to": [10, 17, 9],
"rotation": {"angle": 0, "axis": "y", "origin": [7, 15, 7]},
"faces": {
"north": {"uv": [8, 14, 9, 16], "rotation": 90, "texture": "#1"},
"south": {"uv": [8, 14, 9, 16], "rotation": 90, "texture": "#1"},
"up": {"uv": [8, 14, 9, 16], "rotation": 90, "texture": "#1"},
"down": {"uv": [8, 14, 9, 16], "rotation": 90, "texture": "#1"}
}
}
]
}

View File

@@ -0,0 +1,394 @@
{
"format_version": "1.21.11",
"credit": "Made with Blockbench",
"parent": "block/block",
"texture_size": [32, 32],
"textures": {
"1": "tfmg:block/large_switch",
"2": "tfmg:block/steel_truss",
"3": "tfmg:block/generator",
"4": "tfmg:block/heavy_machinery_casing",
"particle": "tfmg:block/steel_truss"
},
"elements": [
{
"from": [6, 2, 1],
"to": [10, 6, 16],
"rotation": {"angle": 0, "axis": "y", "origin": [6, 2, 0]},
"faces": {
"east": {"uv": [14, 0, 16, 7.5], "rotation": 90, "texture": "#1"},
"west": {"uv": [14, 0, 16, 7.5], "rotation": 90, "texture": "#1"},
"up": {"uv": [14, 0, 16, 7.5], "texture": "#1"},
"down": {"uv": [14, 0, 16, 7.5], "texture": "#1"}
}
},
{
"from": [5, 1, 2],
"to": [11, 7, 3],
"rotation": {"angle": 0, "axis": "y", "origin": [7, 2, 2]},
"faces": {
"north": {"uv": [11, 0, 14, 3], "texture": "#1"},
"east": {"uv": [11, 0, 11.5, 3], "texture": "#1"},
"south": {"uv": [11, 0, 14, 3], "texture": "#1"},
"west": {"uv": [11, 0, 11.5, 3], "texture": "#1"},
"up": {"uv": [11, 0, 14, 0.5], "texture": "#1"},
"down": {"uv": [11, 0, 14, 0.5], "texture": "#1"}
}
},
{
"from": [5, 1, 4],
"to": [11, 7, 5],
"rotation": {"angle": 0, "axis": "y", "origin": [7, 2, 4]},
"faces": {
"north": {"uv": [11, 0, 14, 3], "texture": "#1"},
"east": {"uv": [11, 0, 11.5, 3], "texture": "#1"},
"south": {"uv": [11, 0, 14, 3], "texture": "#1"},
"west": {"uv": [11, 0, 11.5, 3], "texture": "#1"},
"up": {"uv": [11, 0, 14, 0.5], "texture": "#1"},
"down": {"uv": [11, 0, 14, 0.5], "texture": "#1"}
}
},
{
"from": [5, 1, 6],
"to": [11, 7, 7],
"rotation": {"angle": 0, "axis": "y", "origin": [7, 2, 6]},
"faces": {
"north": {"uv": [11, 0, 14, 3], "texture": "#1"},
"east": {"uv": [11, 0, 11.5, 3], "texture": "#1"},
"south": {"uv": [11, 0, 14, 3], "texture": "#1"},
"west": {"uv": [11, 0, 11.5, 3], "texture": "#1"},
"up": {"uv": [11, 0, 14, 0.5], "texture": "#1"},
"down": {"uv": [11, 0, 14, 0.5], "texture": "#1"}
}
},
{
"from": [5, 1, 8],
"to": [11, 7, 9],
"rotation": {"angle": 0, "axis": "y", "origin": [7, 2, 8]},
"faces": {
"north": {"uv": [11, 0, 14, 3], "texture": "#1"},
"east": {"uv": [11, 0, 11.5, 3], "texture": "#1"},
"south": {"uv": [11, 0, 14, 3], "texture": "#1"},
"west": {"uv": [11, 0, 11.5, 3], "texture": "#1"},
"up": {"uv": [11, 0, 14, 0.5], "texture": "#1"},
"down": {"uv": [11, 0, 14, 0.5], "texture": "#1"}
}
},
{
"from": [5, 1, 10],
"to": [11, 7, 11],
"rotation": {"angle": 0, "axis": "y", "origin": [7, 2, 10]},
"faces": {
"north": {"uv": [11, 0, 14, 3], "texture": "#1"},
"east": {"uv": [11, 0, 11.5, 3], "texture": "#1"},
"south": {"uv": [11, 0, 14, 3], "texture": "#1"},
"west": {"uv": [11, 0, 11.5, 3], "texture": "#1"},
"up": {"uv": [11, 0, 14, 0.5], "texture": "#1"},
"down": {"uv": [11, 0, 14, 0.5], "texture": "#1"}
}
},
{
"from": [5, 1, 12],
"to": [11, 7, 13],
"rotation": {"angle": 0, "axis": "y", "origin": [7, 2, 12]},
"faces": {
"north": {"uv": [11, 0, 14, 3], "texture": "#1"},
"east": {"uv": [11, 0, 11.5, 3], "texture": "#1"},
"south": {"uv": [11, 0, 14, 3], "texture": "#1"},
"west": {"uv": [11, 0, 11.5, 3], "texture": "#1"},
"up": {"uv": [11, 0, 14, 0.5], "texture": "#1"},
"down": {"uv": [11, 0, 14, 0.5], "texture": "#1"}
}
},
{
"from": [5, 1, 14],
"to": [11, 7, 15],
"rotation": {"angle": 0, "axis": "y", "origin": [7, 2, 14]},
"faces": {
"north": {"uv": [11, 0, 14, 3], "texture": "#1"},
"east": {"uv": [11, 0, 11.5, 3], "texture": "#1"},
"south": {"uv": [11, 0, 14, 3], "texture": "#1"},
"west": {"uv": [11, 0, 11.5, 3], "texture": "#1"},
"up": {"uv": [11, 0, 14, 0.5], "texture": "#1"},
"down": {"uv": [11, 0, 14, 0.5], "texture": "#1"}
}
},
{
"from": [13, 3, 3],
"to": [15, 13, 13],
"rotation": {"angle": 0, "axis": "y", "origin": [13, 7, 7]},
"faces": {
"north": {"uv": [7, 4.5, 8, 9.5], "texture": "#1"},
"east": {"uv": [8.5, 1.5, 13.5, 6.5], "texture": "#3"},
"south": {"uv": [3, 4.5, 4, 9.5], "texture": "#1"},
"west": {"uv": [3, 3, 13, 13], "texture": "#4"},
"up": {"uv": [3, 4.5, 4, 9.5], "texture": "#1"},
"down": {"uv": [3, 4.5, 4, 9.5], "texture": "#1"}
}
},
{
"from": [15, 3, 3],
"to": [16, 13, 5],
"rotation": {"angle": 0, "axis": "y", "origin": [14, 3, 3]},
"faces": {
"north": {"uv": [3, 4.5, 3.5, 9.5], "texture": "#1"},
"east": {"uv": [7, 4.5, 8, 9.5], "texture": "#1"},
"south": {"uv": [7, 4.5, 7.5, 9.5], "texture": "#1"},
"up": {"uv": [3, 4.5, 3.5, 5.5], "texture": "#1"},
"down": {"uv": [3, 5.5, 3.5, 4.5], "texture": "#1"}
}
},
{
"from": [15, 3, 11],
"to": [16, 13, 13],
"rotation": {"angle": 0, "axis": "y", "origin": [14, 3, 11]},
"faces": {
"north": {"uv": [3.5, 4.5, 4, 9.5], "texture": "#1"},
"east": {"uv": [3, 4.5, 4, 9.5], "texture": "#1"},
"south": {"uv": [3, 4.5, 3.5, 9.5], "texture": "#1"},
"up": {"uv": [3, 5.5, 3.5, 4.5], "texture": "#1"},
"down": {"uv": [3, 4.5, 3.5, 5.5], "texture": "#1"}
}
},
{
"from": [15, 11, 5],
"to": [16, 13, 11],
"rotation": {"angle": 0, "axis": "x", "origin": [14, 3, 9]},
"faces": {
"east": {"uv": [4, 4.5, 7, 5.5], "texture": "#1"},
"up": {"uv": [3, 5.5, 3.5, 8.5], "texture": "#1"},
"down": {"uv": [3.5, 5.5, 4, 8.5], "texture": "#1"}
}
},
{
"from": [15, 3, 5],
"to": [16, 5, 11],
"rotation": {"angle": 0, "axis": "y", "origin": [14, -5, 9]},
"faces": {
"east": {"uv": [4, 8.5, 7, 9.5], "texture": "#1"},
"up": {"uv": [3.5, 5.5, 4, 8.5], "texture": "#1"},
"down": {"uv": [3, 5.5, 3.5, 8.5], "texture": "#1"}
}
},
{
"from": [-1, 3, 5],
"to": [0, 5, 11],
"rotation": {"angle": 0, "axis": "z", "origin": [1, 8, 9]},
"faces": {
"west": {"uv": [4, 9.5, 7, 8.5], "rotation": 180, "texture": "#1"},
"up": {"uv": [3.5, 5.5, 4, 8.5], "rotation": 180, "texture": "#1"},
"down": {"uv": [3, 5.5, 3.5, 8.5], "rotation": 180, "texture": "#1"}
}
},
{
"from": [-1, 3, 11],
"to": [0, 13, 13],
"rotation": {"angle": 0, "axis": "z", "origin": [1, 8, 9]},
"faces": {
"north": {"uv": [3.5, 4.5, 4, 9.5], "rotation": 180, "texture": "#1"},
"south": {"uv": [3, 4.5, 3.5, 9.5], "rotation": 180, "texture": "#1"},
"west": {"uv": [7, 4.5, 8, 9.5], "texture": "#1"},
"up": {"uv": [3, 8.5, 3.5, 9.5], "rotation": 180, "texture": "#1"},
"down": {"uv": [3, 5.5, 3.5, 4.5], "rotation": 180, "texture": "#1"}
}
},
{
"from": [-1, 3, 3],
"to": [0, 13, 5],
"rotation": {"angle": 0, "axis": "z", "origin": [1, 8, 9]},
"faces": {
"north": {"uv": [3, 4.5, 3.5, 9.5], "rotation": 180, "texture": "#1"},
"south": {"uv": [3.5, 4.5, 4, 9.5], "rotation": 180, "texture": "#1"},
"west": {"uv": [4, 4.5, 3, 9.5], "rotation": 180, "texture": "#1"},
"up": {"uv": [3, 5.5, 3.5, 4.5], "rotation": 180, "texture": "#1"},
"down": {"uv": [3, 4.5, 3.5, 5.5], "rotation": 180, "texture": "#1"}
}
},
{
"from": [0, 3, 3],
"to": [2, 13, 13],
"rotation": {"angle": 0, "axis": "z", "origin": [1, 8, 9]},
"faces": {
"north": {"uv": [4, 4.5, 3, 9.5], "rotation": 180, "texture": "#1"},
"east": {"uv": [3, 3, 13, 13], "rotation": 180, "texture": "#4"},
"south": {"uv": [3, 4.5, 4, 9.5], "rotation": 180, "texture": "#1"},
"west": {"uv": [8.5, 1.5, 13.5, 6.5], "rotation": 180, "texture": "#3"},
"up": {"uv": [3, 4.5, 4, 9.5], "rotation": 180, "texture": "#1"},
"down": {"uv": [3, 4.5, 4, 9.5], "rotation": 180, "texture": "#1"}
}
},
{
"from": [-1, 11, 5],
"to": [0, 13, 11],
"rotation": {"angle": 0, "axis": "z", "origin": [1, 8, 9]},
"faces": {
"west": {"uv": [4, 5.5, 7, 4.5], "rotation": 180, "texture": "#1"},
"up": {"uv": [3, 5.5, 3.5, 8.5], "rotation": 180, "texture": "#1"},
"down": {"uv": [3.5, 5.5, 4, 8.5], "rotation": 180, "texture": "#1"}
}
},
{
"from": [5, 5, 0],
"to": [11, 11, 2],
"rotation": {"angle": 0, "axis": "y", "origin": [7, 6, 0]},
"faces": {
"north": {"uv": [8, 0, 11, 3], "texture": "#1"},
"east": {"uv": [6, 0, 5, 3], "texture": "#1"},
"south": {"uv": [5, 0, 8, 3], "texture": "#1"},
"west": {"uv": [5, 0, 6, 3], "texture": "#1"},
"up": {"uv": [5, 0, 6, 3], "rotation": 90, "texture": "#1"},
"down": {"uv": [5, 0, 6, 3], "rotation": 90, "texture": "#1"}
}
},
{
"from": [0, 0, 0],
"to": [2, 8, 2],
"faces": {
"north": {"uv": [0, 8, 2, 0], "texture": "#2"},
"east": {"uv": [0, 8, 2, 0], "texture": "#2"},
"south": {"uv": [0, 8, 2, 0], "texture": "#2"},
"west": {"uv": [2, 8, 0, 0], "texture": "#2"},
"up": {"uv": [0, 6, 2, 8], "rotation": 270, "texture": "#2"},
"down": {"uv": [0, 0, 2, 2], "texture": "#2"}
}
},
{
"from": [0, 0, 14],
"to": [2, 8, 16],
"rotation": {"angle": 0, "axis": "y", "origin": [0, 0, 14]},
"faces": {
"north": {"uv": [0, 8, 2, 0], "texture": "#2"},
"east": {"uv": [0, 8, 2, 0], "texture": "#2"},
"south": {"uv": [2, 8, 0, 0], "texture": "#2"},
"west": {"uv": [0, 8, 2, 0], "texture": "#2"},
"up": {"uv": [0, 6, 2, 8], "rotation": 180, "texture": "#2"},
"down": {"uv": [0, 0, 2, 2], "texture": "#2"}
}
},
{
"from": [14, 0, 14],
"to": [16, 8, 16],
"rotation": {"angle": 0, "axis": "y", "origin": [14, 0, 14]},
"faces": {
"north": {"uv": [0, 8, 2, 0], "texture": "#2"},
"east": {"uv": [2, 8, 0, 0], "texture": "#2"},
"south": {"uv": [0, 8, 2, 0], "texture": "#2"},
"west": {"uv": [0, 8, 2, 0], "texture": "#2"},
"up": {"uv": [0, 6, 2, 8], "rotation": 90, "texture": "#2"},
"down": {"uv": [0, 0, 2, 2], "texture": "#2"}
}
},
{
"from": [14, 0, 0],
"to": [16, 8, 2],
"rotation": {"angle": 0, "axis": "y", "origin": [14, 0, 0]},
"faces": {
"north": {"uv": [2, 8, 0, 0], "texture": "#2"},
"east": {"uv": [0, 8, 2, 0], "texture": "#2"},
"south": {"uv": [0, 8, 2, 0], "texture": "#2"},
"west": {"uv": [0, 8, 2, 0], "texture": "#2"},
"up": {"uv": [0, 6, 2, 8], "texture": "#2"},
"down": {"uv": [0, 0, 2, 2], "texture": "#2"}
}
},
{
"from": [1, 0, 2],
"to": [1, 8, 14],
"rotation": {"angle": 0, "axis": "y", "origin": [0, 0, 2]},
"faces": {
"north": {"uv": [0, 0, 0, 4], "texture": "#1"},
"east": {"uv": [8, 12, 14, 16], "texture": "#1"},
"south": {"uv": [0, 0, 0, 4], "texture": "#1"},
"west": {"uv": [8, 12, 14, 16], "texture": "#1"},
"up": {"uv": [0, 0, 0, 6], "texture": "#1"},
"down": {"uv": [0, 0, 0, 6], "texture": "#1"}
}
},
{
"from": [6, 13, 7],
"to": [6, 17, 9],
"rotation": {"angle": 0, "axis": "y", "origin": [5, 4, 2]},
"faces": {
"north": {"uv": [8, 14, 8, 16], "texture": "#1"},
"east": {"uv": [8, 14, 9, 16], "texture": "#1"},
"south": {"uv": [8, 14, 8, 16], "texture": "#1"},
"west": {"uv": [8, 14, 9, 16], "texture": "#1"},
"up": {"uv": [8, 14, 8, 15], "texture": "#1"},
"down": {"uv": [8, 14, 8, 15], "texture": "#1"}
}
},
{
"from": [10, 13, 7],
"to": [10, 17, 9],
"rotation": {"angle": 0, "axis": "y", "origin": [9, 4, 2]},
"faces": {
"north": {"uv": [8, 14, 8, 16], "texture": "#1"},
"east": {"uv": [8, 14, 9, 16], "texture": "#1"},
"south": {"uv": [8, 14, 8, 16], "texture": "#1"},
"west": {"uv": [8, 14, 9, 16], "texture": "#1"},
"up": {"uv": [8, 14, 8, 15], "texture": "#1"},
"down": {"uv": [8, 14, 8, 15], "texture": "#1"}
}
},
{
"from": [15, 0, 2],
"to": [15, 8, 14],
"rotation": {"angle": 0, "axis": "y", "origin": [14, 0, 2]},
"faces": {
"north": {"uv": [0, 0, 0, 4], "texture": "#1"},
"east": {"uv": [8, 12, 14, 16], "texture": "#1"},
"south": {"uv": [0, 0, 0, 4], "texture": "#1"},
"west": {"uv": [8, 12, 14, 16], "texture": "#1"},
"up": {"uv": [0, 0, 0, 6], "texture": "#1"},
"down": {"uv": [0, 0, 0, 6], "texture": "#1"}
}
},
{
"from": [8, 8, 2],
"to": [8, 16, 9],
"rotation": {"angle": 0, "axis": "y", "origin": [7, 4, 2]},
"faces": {
"north": {"uv": [0, 0, 0, 4], "texture": "#1"},
"east": {"uv": [4.5, 12, 8, 16], "texture": "#1"},
"south": {"uv": [0, 0, 0, 4], "texture": "#1"},
"west": {"uv": [8, 12, 4.5, 16], "texture": "#1"},
"up": {"uv": [0, 0, 0, 3.5], "texture": "#1"},
"down": {"uv": [0, 0, 0, 3.5], "texture": "#1"}
}
},
{
"from": [2, 11, 7],
"to": [13, 13, 9],
"rotation": {"angle": 0, "axis": "y", "origin": [2, 11, 7]},
"faces": {
"north": {"uv": [11, 3.5, 12, 9], "rotation": 90, "texture": "#1"},
"south": {"uv": [11, 3.5, 12, 9], "rotation": 90, "texture": "#1"},
"up": {"uv": [11, 3.5, 12, 9], "rotation": 90, "texture": "#1"},
"down": {"uv": [11, 3.5, 12, 9], "rotation": 90, "texture": "#1"}
}
},
{
"from": [2, 0, 1],
"to": [14, 8, 1],
"faces": {
"north": {"uv": [2, 8, 14, 16], "texture": "#2"},
"east": {"uv": [0, 0, 0, 4], "texture": "#missing"},
"south": {"uv": [2, 8, 14, 16], "texture": "#2"},
"west": {"uv": [0, 0, 0, 4], "texture": "#missing"},
"up": {"uv": [0, 0, 6, 0], "texture": "#missing"},
"down": {"uv": [0, 0, 6, 0], "texture": "#missing"}
}
},
{
"from": [6, 15, 7],
"to": [10, 17, 9],
"rotation": {"angle": 0, "axis": "y", "origin": [7, 15, 7]},
"faces": {
"north": {"uv": [8, 14, 9, 16], "rotation": 90, "texture": "#1"},
"south": {"uv": [8, 14, 9, 16], "rotation": 90, "texture": "#1"},
"up": {"uv": [8, 14, 9, 16], "rotation": 90, "texture": "#1"},
"down": {"uv": [8, 14, 9, 16], "rotation": 90, "texture": "#1"}
}
}
]
}

View File

@@ -0,0 +1,193 @@
{
"format_version": "1.21.6",
"credit": "Made with Blockbench",
"parent": "block/block",
"texture_size": [32, 32],
"textures": {
"1": "tfmg:block/large_switch",
"particle": "tfmg:block/steel_truss"
},
"elements": [
{
"from": [6, 2, 0],
"to": [10, 6, 15],
"rotation": {"angle": 0, "axis": "y", "origin": [6, 2, -16]},
"faces": {
"east": {"uv": [14, 0, 16, 15], "rotation": 90, "texture": "#1"},
"south": {"uv": [12, 3, 14, 5], "texture": "#1"},
"west": {"uv": [14, 0, 16, 15], "rotation": 90, "texture": "#1"},
"up": {"uv": [14, 0, 16, 15], "texture": "#1"},
"down": {"uv": [14, 0, 16, 15], "texture": "#1"}
}
},
{
"from": [5, 1, 0],
"to": [11, 7, 1],
"rotation": {"angle": 0, "axis": "y", "origin": [7, 2, 0]},
"faces": {
"north": {"uv": [11, 0, 14, 3], "texture": "#1"},
"east": {"uv": [11, 0, 11.5, 3], "texture": "#1"},
"south": {"uv": [11, 0, 14, 3], "texture": "#1"},
"west": {"uv": [11, 0, 11.5, 3], "texture": "#1"},
"up": {"uv": [11, 0, 14, 0.5], "texture": "#1"},
"down": {"uv": [11, 0, 14, 0.5], "texture": "#1"}
}
},
{
"from": [5, 1, 2],
"to": [11, 7, 3],
"rotation": {"angle": 0, "axis": "y", "origin": [7, 2, 2]},
"faces": {
"north": {"uv": [11, 0, 14, 3], "texture": "#1"},
"east": {"uv": [11, 0, 11.5, 3], "texture": "#1"},
"south": {"uv": [11, 0, 14, 3], "texture": "#1"},
"west": {"uv": [11, 0, 11.5, 3], "texture": "#1"},
"up": {"uv": [11, 0, 14, 0.5], "texture": "#1"},
"down": {"uv": [11, 0, 14, 0.5], "texture": "#1"}
}
},
{
"from": [5, 1, 4],
"to": [11, 7, 5],
"rotation": {"angle": 0, "axis": "y", "origin": [7, 2, 4]},
"faces": {
"north": {"uv": [11, 0, 14, 3], "texture": "#1"},
"east": {"uv": [11, 0, 11.5, 3], "texture": "#1"},
"south": {"uv": [11, 0, 14, 3], "texture": "#1"},
"west": {"uv": [11, 0, 11.5, 3], "texture": "#1"},
"up": {"uv": [11, 0, 14, 0.5], "texture": "#1"},
"down": {"uv": [11, 0, 14, 0.5], "texture": "#1"}
}
},
{
"from": [5, 1, 6],
"to": [11, 7, 7],
"rotation": {"angle": 0, "axis": "y", "origin": [7, 2, 6]},
"faces": {
"north": {"uv": [11, 0, 14, 3], "texture": "#1"},
"east": {"uv": [11, 0, 11.5, 3], "texture": "#1"},
"south": {"uv": [11, 0, 14, 3], "texture": "#1"},
"west": {"uv": [11, 0, 11.5, 3], "texture": "#1"},
"up": {"uv": [11, 0, 14, 0.5], "texture": "#1"},
"down": {"uv": [11, 0, 14, 0.5], "texture": "#1"}
}
},
{
"from": [5, 1, 8],
"to": [11, 7, 9],
"rotation": {"angle": 0, "axis": "y", "origin": [7, 2, 8]},
"faces": {
"north": {"uv": [11, 0, 14, 3], "texture": "#1"},
"east": {"uv": [11, 0, 11.5, 3], "texture": "#1"},
"south": {"uv": [11, 0, 14, 3], "texture": "#1"},
"west": {"uv": [11, 0, 11.5, 3], "texture": "#1"},
"up": {"uv": [11, 0, 14, 0.5], "texture": "#1"},
"down": {"uv": [11, 0, 14, 0.5], "texture": "#1"}
}
},
{
"from": [5, 1, 10],
"to": [11, 7, 11],
"rotation": {"angle": 0, "axis": "y", "origin": [7, 2, 10]},
"faces": {
"north": {"uv": [11, 0, 14, 3], "texture": "#1"},
"east": {"uv": [11, 0, 11.5, 3], "texture": "#1"},
"south": {"uv": [11, 0, 14, 3], "texture": "#1"},
"west": {"uv": [11, 0, 11.5, 3], "texture": "#1"},
"up": {"uv": [11, 0, 14, 0.5], "texture": "#1"},
"down": {"uv": [11, 0, 14, 0.5], "texture": "#1"}
}
},
{
"from": [5, 1, 12],
"to": [11, 7, 13],
"rotation": {"angle": 0, "axis": "y", "origin": [7, 2, 12]},
"faces": {
"north": {"uv": [11, 0, 14, 3], "texture": "#1"},
"east": {"uv": [11, 0, 11.5, 3], "texture": "#1"},
"south": {"uv": [11, 0, 14, 3], "texture": "#1"},
"west": {"uv": [11, 0, 11.5, 3], "texture": "#1"},
"up": {"uv": [11, 0, 14, 0.5], "texture": "#1"},
"down": {"uv": [11, 0, 14, 0.5], "texture": "#1"}
}
},
{
"from": [5, 5, 14],
"to": [11, 11, 16],
"rotation": {"angle": 0, "axis": "x", "origin": [7, 10, 16]},
"faces": {
"north": {"uv": [5, 0, 8, 3], "rotation": 180, "texture": "#1"},
"east": {"uv": [6, 0, 5, 3], "rotation": 180, "texture": "#1"},
"south": {"uv": [8, 0, 11, 3], "rotation": 180, "texture": "#1"},
"west": {"uv": [5, 0, 6, 3], "rotation": 180, "texture": "#1"},
"up": {"uv": [6, 0, 5, 3], "rotation": 90, "texture": "#1"},
"down": {"uv": [5, 0, 6, 3], "rotation": 90, "texture": "#1"}
}
},
{
"from": [5, 9, 8],
"to": [11, 14, 14],
"rotation": {"angle": 0, "axis": "y", "origin": [7, 12, 12]},
"faces": {
"north": {"uv": [8, 6, 11, 8.5], "texture": "#1"},
"east": {"uv": [8, 6, 11, 8.5], "texture": "#1"},
"south": {"uv": [8, 6, 11, 8.5], "texture": "#1"},
"west": {"uv": [8, 6, 11, 8.5], "texture": "#1"},
"up": {"uv": [11, 3, 8, 6], "rotation": 90, "texture": "#1"},
"down": {"uv": [5, 0, 8, 3], "texture": "#1"}
}
},
{
"from": [9.01, 7, 8],
"to": [9.01, 17, 14],
"rotation": {"angle": 0, "axis": "y", "origin": [6, 14, 12]},
"faces": {
"north": {"uv": [0, 0, 0, 5], "texture": "#1"},
"east": {"uv": [0, 0, 3, 5], "texture": "#1"},
"south": {"uv": [0, 0, 0, 5], "texture": "#1"},
"west": {"uv": [3, 0, 0, 5], "texture": "#1"},
"up": {"uv": [0, 0, 0, 3], "texture": "#1"},
"down": {"uv": [0, 0, 0, 3], "texture": "#1"}
}
},
{
"from": [6.99, 7, 8],
"to": [6.99, 17, 14],
"rotation": {"angle": 0, "axis": "y", "origin": [4, 14, 12]},
"faces": {
"north": {"uv": [0, 0, 0, 5], "texture": "#1"},
"east": {"uv": [0, 0, 3, 5], "texture": "#1"},
"south": {"uv": [0, 0, 0, 5], "texture": "#1"},
"west": {"uv": [3, 0, 0, 5], "texture": "#1"},
"up": {"uv": [0, 0, 0, 3], "texture": "#1"},
"down": {"uv": [0, 0, 0, 3], "texture": "#1"}
}
},
{
"from": [4.99, 17, 8],
"to": [6.99, 17, 14],
"rotation": {"angle": -45, "axis": "z", "origin": [7, 17, 12]},
"faces": {
"north": {"uv": [0, 0, 0, 1], "rotation": 90, "texture": "#1"},
"east": {"uv": [0, 0, 0, 3], "rotation": 270, "texture": "#1"},
"south": {"uv": [0, 0, 0, 1], "rotation": 270, "texture": "#1"},
"west": {"uv": [0, 0, 0, 3], "rotation": 270, "texture": "#1"},
"up": {"uv": [3.5, 4.5, 6.5, 3.5], "rotation": 270, "texture": "#1"},
"down": {"uv": [6.5, 4.5, 3.5, 3.5], "rotation": 270, "texture": "#1"}
}
},
{
"from": [9.01, 17, 8],
"to": [9.01, 19, 14],
"rotation": {"angle": -45, "axis": "z", "origin": [9.01, 17, 12]},
"faces": {
"north": {"uv": [0, 0, 0, 1], "texture": "#1"},
"east": {"uv": [3.5, 4.5, 6.5, 3.5], "texture": "#1"},
"south": {"uv": [0, 0, 0, 1], "texture": "#1"},
"west": {"uv": [6.5, 4.5, 3.5, 3.5], "texture": "#1"},
"up": {"uv": [0, 0, 0, 3], "texture": "#1"},
"down": {"uv": [0, 0, 0, 3], "texture": "#1"}
}
}
]
}

View File

@@ -0,0 +1,6 @@
{
"format_version": "1.21.6",
"credit": "Made with Blockbench",
"parent": "block/block",
"texture_size": [32, 32]
}

View File

@@ -0,0 +1,51 @@
{
"format_version": "1.21.6",
"credit": "Made with Blockbench",
"parent": "block/block",
"texture_size": [32, 32],
"textures": {
"1": "tfmg:block/large_switch",
"particle": "tfmg:block/steel_truss"
},
"elements": [
{
"from": [9, 6.01, 26],
"to": [9, 7.01, 29],
"rotation": {"angle": 0, "axis": "x", "origin": [7, 8, 8]},
"faces": {
"north": {"uv": [0, 5, 1, 6], "texture": "#1"},
"east": {"uv": [1.5, 6.5, 1, 5], "rotation": 90, "texture": "#1"},
"south": {"uv": [0, 5, 1, 6], "texture": "#1"},
"west": {"uv": [1.5, 5, 1, 6.5], "rotation": 90, "texture": "#1"},
"up": {"uv": [0, 16, 1, 5], "texture": "#1"},
"down": {"uv": [0, 5, 1, 16], "texture": "#1"}
}
},
{
"from": [7, 7.01, 7],
"to": [9, 9.01, 29],
"rotation": {"angle": 0, "axis": "x", "origin": [7, 8, 8]},
"faces": {
"north": {"uv": [0, 6.5, 1, 7.5], "texture": "#1"},
"east": {"uv": [0, 16, 1, 5], "rotation": 90, "texture": "#1"},
"south": {"uv": [0, 5, 1, 6], "texture": "#1"},
"west": {"uv": [0, 5, 1, 16], "rotation": 90, "texture": "#1"},
"up": {"uv": [0, 16, 1, 5], "texture": "#1"},
"down": {"uv": [0, 5, 1, 16], "texture": "#1"}
}
},
{
"from": [7, 6.01, 26],
"to": [7, 7.01, 29],
"rotation": {"angle": 0, "axis": "x", "origin": [7, 8, 8]},
"faces": {
"north": {"uv": [0, 5, 1, 6], "texture": "#1"},
"east": {"uv": [1.5, 6.5, 1, 5], "rotation": 90, "texture": "#1"},
"south": {"uv": [0, 5, 1, 6], "texture": "#1"},
"west": {"uv": [1.5, 5, 1, 6.5], "rotation": 90, "texture": "#1"},
"up": {"uv": [0, 16, 1, 5], "texture": "#1"},
"down": {"uv": [0, 5, 1, 16], "texture": "#1"}
}
}
]
}

View File

@@ -0,0 +1,635 @@
{
"format_version": "1.21.6",
"credit": "Made with Blockbench",
"parent": "block/block",
"texture_size": [32, 32],
"textures": {
"1": "tfmg:block/large_switch",
"2": "tfmg:block/steel_truss",
"3": "tfmg:block/generator",
"4": "tfmg:block/heavy_machinery_casing",
"6": "tfmg:block/shaft_top",
"particle": "tfmg:block/steel_truss"
},
"elements": [
{
"from": [6, 2, 1],
"to": [10, 6, 31],
"rotation": {"angle": 0, "axis": "y", "origin": [6, 2, 0]},
"faces": {
"east": {"uv": [14, 0, 16, 15], "rotation": 90, "texture": "#1"},
"south": {"uv": [12, 3, 14, 5], "texture": "#1"},
"west": {"uv": [14, 0, 16, 15], "rotation": 90, "texture": "#1"},
"up": {"uv": [14, 0, 16, 15], "texture": "#1"},
"down": {"uv": [14, 0, 16, 15], "texture": "#1"}
}
},
{
"from": [5, 1, 2],
"to": [11, 7, 3],
"rotation": {"angle": 0, "axis": "y", "origin": [7, 2, 2]},
"faces": {
"north": {"uv": [11, 0, 14, 3], "texture": "#1"},
"east": {"uv": [11, 0, 11.5, 3], "texture": "#1"},
"south": {"uv": [11, 0, 14, 3], "texture": "#1"},
"west": {"uv": [11, 0, 11.5, 3], "texture": "#1"},
"up": {"uv": [11, 0, 14, 0.5], "texture": "#1"},
"down": {"uv": [11, 0, 14, 0.5], "texture": "#1"}
}
},
{
"from": [5, 1, 4],
"to": [11, 7, 5],
"rotation": {"angle": 0, "axis": "y", "origin": [7, 2, 4]},
"faces": {
"north": {"uv": [11, 0, 14, 3], "texture": "#1"},
"east": {"uv": [11, 0, 11.5, 3], "texture": "#1"},
"south": {"uv": [11, 0, 14, 3], "texture": "#1"},
"west": {"uv": [11, 0, 11.5, 3], "texture": "#1"},
"up": {"uv": [11, 0, 14, 0.5], "texture": "#1"},
"down": {"uv": [11, 0, 14, 0.5], "texture": "#1"}
}
},
{
"from": [5, 1, 6],
"to": [11, 7, 7],
"rotation": {"angle": 0, "axis": "y", "origin": [7, 2, 6]},
"faces": {
"north": {"uv": [11, 0, 14, 3], "texture": "#1"},
"east": {"uv": [11, 0, 11.5, 3], "texture": "#1"},
"south": {"uv": [11, 0, 14, 3], "texture": "#1"},
"west": {"uv": [11, 0, 11.5, 3], "texture": "#1"},
"up": {"uv": [11, 0, 14, 0.5], "texture": "#1"},
"down": {"uv": [11, 0, 14, 0.5], "texture": "#1"}
}
},
{
"from": [5, 1, 8],
"to": [11, 7, 9],
"rotation": {"angle": 0, "axis": "y", "origin": [7, 2, 8]},
"faces": {
"north": {"uv": [11, 0, 14, 3], "texture": "#1"},
"east": {"uv": [11, 0, 11.5, 3], "texture": "#1"},
"south": {"uv": [11, 0, 14, 3], "texture": "#1"},
"west": {"uv": [11, 0, 11.5, 3], "texture": "#1"},
"up": {"uv": [11, 0, 14, 0.5], "texture": "#1"},
"down": {"uv": [11, 0, 14, 0.5], "texture": "#1"}
}
},
{
"from": [5, 1, 10],
"to": [11, 7, 11],
"rotation": {"angle": 0, "axis": "y", "origin": [7, 2, 10]},
"faces": {
"north": {"uv": [11, 0, 14, 3], "texture": "#1"},
"east": {"uv": [11, 0, 11.5, 3], "texture": "#1"},
"south": {"uv": [11, 0, 14, 3], "texture": "#1"},
"west": {"uv": [11, 0, 11.5, 3], "texture": "#1"},
"up": {"uv": [11, 0, 14, 0.5], "texture": "#1"},
"down": {"uv": [11, 0, 14, 0.5], "texture": "#1"}
}
},
{
"from": [5, 1, 12],
"to": [11, 7, 13],
"rotation": {"angle": 0, "axis": "y", "origin": [7, 2, 12]},
"faces": {
"north": {"uv": [11, 0, 14, 3], "texture": "#1"},
"east": {"uv": [11, 0, 11.5, 3], "texture": "#1"},
"south": {"uv": [11, 0, 14, 3], "texture": "#1"},
"west": {"uv": [11, 0, 11.5, 3], "texture": "#1"},
"up": {"uv": [11, 0, 14, 0.5], "texture": "#1"},
"down": {"uv": [11, 0, 14, 0.5], "texture": "#1"}
}
},
{
"from": [5, 1, 14],
"to": [11, 7, 15],
"rotation": {"angle": 0, "axis": "y", "origin": [7, 2, 14]},
"faces": {
"north": {"uv": [11, 0, 14, 3], "texture": "#1"},
"east": {"uv": [11, 0, 11.5, 3], "texture": "#1"},
"south": {"uv": [11, 0, 14, 3], "texture": "#1"},
"west": {"uv": [11, 0, 11.5, 3], "texture": "#1"},
"up": {"uv": [11, 0, 14, 0.5], "texture": "#1"},
"down": {"uv": [11, 0, 14, 0.5], "texture": "#1"}
}
},
{
"from": [5, 1, 16],
"to": [11, 7, 17],
"rotation": {"angle": 0, "axis": "y", "origin": [7, 2, 16]},
"faces": {
"north": {"uv": [11, 0, 14, 3], "texture": "#1"},
"east": {"uv": [11, 0, 11.5, 3], "texture": "#1"},
"south": {"uv": [11, 0, 14, 3], "texture": "#1"},
"west": {"uv": [11, 0, 11.5, 3], "texture": "#1"},
"up": {"uv": [11, 0, 14, 0.5], "texture": "#1"},
"down": {"uv": [11, 0, 14, 0.5], "texture": "#1"}
}
},
{
"from": [5, 1, 18],
"to": [11, 7, 19],
"rotation": {"angle": 0, "axis": "y", "origin": [7, 2, 18]},
"faces": {
"north": {"uv": [11, 0, 14, 3], "texture": "#1"},
"east": {"uv": [11, 0, 11.5, 3], "texture": "#1"},
"south": {"uv": [11, 0, 14, 3], "texture": "#1"},
"west": {"uv": [11, 0, 11.5, 3], "texture": "#1"},
"up": {"uv": [11, 0, 14, 0.5], "texture": "#1"},
"down": {"uv": [11, 0, 14, 0.5], "texture": "#1"}
}
},
{
"from": [5, 1, 20],
"to": [11, 7, 21],
"rotation": {"angle": 0, "axis": "y", "origin": [7, 2, 20]},
"faces": {
"north": {"uv": [11, 0, 14, 3], "texture": "#1"},
"east": {"uv": [11, 0, 11.5, 3], "texture": "#1"},
"south": {"uv": [11, 0, 14, 3], "texture": "#1"},
"west": {"uv": [11, 0, 11.5, 3], "texture": "#1"},
"up": {"uv": [11, 0, 14, 0.5], "texture": "#1"},
"down": {"uv": [11, 0, 14, 0.5], "texture": "#1"}
}
},
{
"from": [5, 1, 22],
"to": [11, 7, 23],
"rotation": {"angle": 0, "axis": "y", "origin": [7, 2, 22]},
"faces": {
"north": {"uv": [11, 0, 14, 3], "texture": "#1"},
"east": {"uv": [11, 0, 11.5, 3], "texture": "#1"},
"south": {"uv": [11, 0, 14, 3], "texture": "#1"},
"west": {"uv": [11, 0, 11.5, 3], "texture": "#1"},
"up": {"uv": [11, 0, 14, 0.5], "texture": "#1"},
"down": {"uv": [11, 0, 14, 0.5], "texture": "#1"}
}
},
{
"from": [5, 1, 24],
"to": [11, 7, 25],
"rotation": {"angle": 0, "axis": "y", "origin": [7, 2, 24]},
"faces": {
"north": {"uv": [11, 0, 14, 3], "texture": "#1"},
"east": {"uv": [11, 0, 11.5, 3], "texture": "#1"},
"south": {"uv": [11, 0, 14, 3], "texture": "#1"},
"west": {"uv": [11, 0, 11.5, 3], "texture": "#1"},
"up": {"uv": [11, 0, 14, 0.5], "texture": "#1"},
"down": {"uv": [11, 0, 14, 0.5], "texture": "#1"}
}
},
{
"from": [5, 1, 26],
"to": [11, 7, 27],
"rotation": {"angle": 0, "axis": "y", "origin": [7, 2, 26]},
"faces": {
"north": {"uv": [11, 0, 14, 3], "texture": "#1"},
"east": {"uv": [11, 0, 11.5, 3], "texture": "#1"},
"south": {"uv": [11, 0, 14, 3], "texture": "#1"},
"west": {"uv": [11, 0, 11.5, 3], "texture": "#1"},
"up": {"uv": [11, 0, 14, 0.5], "texture": "#1"},
"down": {"uv": [11, 0, 14, 0.5], "texture": "#1"}
}
},
{
"from": [5, 1, 28],
"to": [11, 7, 29],
"rotation": {"angle": 0, "axis": "y", "origin": [7, 2, 28]},
"faces": {
"north": {"uv": [11, 0, 14, 3], "texture": "#1"},
"east": {"uv": [11, 0, 11.5, 3], "texture": "#1"},
"south": {"uv": [11, 0, 14, 3], "texture": "#1"},
"west": {"uv": [11, 0, 11.5, 3], "texture": "#1"},
"up": {"uv": [11, 0, 14, 0.5], "texture": "#1"},
"down": {"uv": [11, 0, 14, 0.5], "texture": "#1"}
}
},
{
"from": [13, 3, 3],
"to": [15, 13, 13],
"rotation": {"angle": 0, "axis": "y", "origin": [13, 7, 7]},
"faces": {
"north": {"uv": [7, 4.5, 8, 9.5], "texture": "#1"},
"east": {"uv": [8.5, 1.5, 13.5, 6.5], "texture": "#3"},
"south": {"uv": [3, 4.5, 4, 9.5], "texture": "#1"},
"west": {"uv": [3, 3, 13, 13], "texture": "#4"},
"up": {"uv": [3, 4.5, 4, 9.5], "texture": "#1"},
"down": {"uv": [3, 4.5, 4, 9.5], "texture": "#1"}
}
},
{
"from": [15, 3, 3],
"to": [16, 13, 5],
"rotation": {"angle": 0, "axis": "y", "origin": [14, 3, 3]},
"faces": {
"north": {"uv": [3, 4.5, 3.5, 9.5], "texture": "#1"},
"east": {"uv": [7, 4.5, 8, 9.5], "texture": "#1"},
"south": {"uv": [7, 4.5, 7.5, 9.5], "texture": "#1"},
"up": {"uv": [3, 4.5, 3.5, 5.5], "texture": "#1"},
"down": {"uv": [3, 5.5, 3.5, 4.5], "texture": "#1"}
}
},
{
"from": [15, 3, 11],
"to": [16, 13, 13],
"rotation": {"angle": 0, "axis": "y", "origin": [14, 3, 11]},
"faces": {
"north": {"uv": [3.5, 4.5, 4, 9.5], "texture": "#1"},
"east": {"uv": [3, 4.5, 4, 9.5], "texture": "#1"},
"south": {"uv": [3, 4.5, 3.5, 9.5], "texture": "#1"},
"up": {"uv": [3, 5.5, 3.5, 4.5], "texture": "#1"},
"down": {"uv": [3, 4.5, 3.5, 5.5], "texture": "#1"}
}
},
{
"from": [15, 11, 5],
"to": [16, 13, 11],
"rotation": {"angle": 0, "axis": "x", "origin": [14, 3, 9]},
"faces": {
"east": {"uv": [4, 4.5, 7, 5.5], "texture": "#1"},
"up": {"uv": [3, 5.5, 3.5, 8.5], "texture": "#1"},
"down": {"uv": [3.5, 5.5, 4, 8.5], "texture": "#1"}
}
},
{
"from": [15, 3, 5],
"to": [16, 5, 11],
"rotation": {"angle": 0, "axis": "y", "origin": [14, -5, 9]},
"faces": {
"east": {"uv": [4, 8.5, 7, 9.5], "texture": "#1"},
"up": {"uv": [3.5, 5.5, 4, 8.5], "texture": "#1"},
"down": {"uv": [3, 5.5, 3.5, 8.5], "texture": "#1"}
}
},
{
"from": [-1, 3, 5],
"to": [0, 5, 11],
"rotation": {"angle": 0, "axis": "z", "origin": [1, 8, 9]},
"faces": {
"west": {"uv": [4, 9.5, 7, 8.5], "rotation": 180, "texture": "#1"},
"up": {"uv": [3.5, 5.5, 4, 8.5], "rotation": 180, "texture": "#1"},
"down": {"uv": [3, 5.5, 3.5, 8.5], "rotation": 180, "texture": "#1"}
}
},
{
"from": [-1, 3, 11],
"to": [0, 13, 13],
"rotation": {"angle": 0, "axis": "z", "origin": [1, 8, 9]},
"faces": {
"north": {"uv": [3.5, 4.5, 4, 9.5], "rotation": 180, "texture": "#1"},
"south": {"uv": [3, 4.5, 3.5, 9.5], "rotation": 180, "texture": "#1"},
"west": {"uv": [7, 4.5, 8, 9.5], "texture": "#1"},
"up": {"uv": [3, 8.5, 3.5, 9.5], "rotation": 180, "texture": "#1"},
"down": {"uv": [3, 5.5, 3.5, 4.5], "rotation": 180, "texture": "#1"}
}
},
{
"from": [-1, 3, 3],
"to": [0, 13, 5],
"rotation": {"angle": 0, "axis": "z", "origin": [1, 8, 9]},
"faces": {
"north": {"uv": [3, 4.5, 3.5, 9.5], "rotation": 180, "texture": "#1"},
"south": {"uv": [3.5, 4.5, 4, 9.5], "rotation": 180, "texture": "#1"},
"west": {"uv": [4, 4.5, 3, 9.5], "rotation": 180, "texture": "#1"},
"up": {"uv": [3, 5.5, 3.5, 4.5], "rotation": 180, "texture": "#1"},
"down": {"uv": [3, 4.5, 3.5, 5.5], "rotation": 180, "texture": "#1"}
}
},
{
"from": [0, 3, 3],
"to": [2, 13, 13],
"rotation": {"angle": 0, "axis": "z", "origin": [1, 8, 9]},
"faces": {
"north": {"uv": [4, 4.5, 3, 9.5], "rotation": 180, "texture": "#1"},
"east": {"uv": [3, 3, 13, 13], "rotation": 180, "texture": "#4"},
"south": {"uv": [3, 4.5, 4, 9.5], "rotation": 180, "texture": "#1"},
"west": {"uv": [8.5, 1.5, 13.5, 6.5], "rotation": 180, "texture": "#3"},
"up": {"uv": [3, 4.5, 4, 9.5], "rotation": 180, "texture": "#1"},
"down": {"uv": [3, 4.5, 4, 9.5], "rotation": 180, "texture": "#1"}
}
},
{
"from": [-1, 11, 5],
"to": [0, 13, 11],
"rotation": {"angle": 0, "axis": "z", "origin": [1, 8, 9]},
"faces": {
"west": {"uv": [4, 5.5, 7, 4.5], "rotation": 180, "texture": "#1"},
"up": {"uv": [3, 5.5, 3.5, 8.5], "rotation": 180, "texture": "#1"},
"down": {"uv": [3.5, 5.5, 4, 8.5], "rotation": 180, "texture": "#1"}
}
},
{
"from": [5, 5, 0],
"to": [11, 11, 2],
"rotation": {"angle": 0, "axis": "y", "origin": [7, 6, 0]},
"faces": {
"north": {"uv": [8, 0, 11, 3], "texture": "#1"},
"east": {"uv": [6, 0, 5, 3], "texture": "#1"},
"south": {"uv": [5, 0, 8, 3], "texture": "#1"},
"west": {"uv": [5, 0, 6, 3], "texture": "#1"},
"up": {"uv": [5, 0, 6, 3], "rotation": 90, "texture": "#1"},
"down": {"uv": [5, 0, 6, 3], "rotation": 90, "texture": "#1"}
}
},
{
"from": [5, 5, 30],
"to": [11, 11, 32],
"rotation": {"angle": 0, "axis": "x", "origin": [7, 10, 32]},
"faces": {
"north": {"uv": [5, 0, 8, 3], "rotation": 180, "texture": "#1"},
"east": {"uv": [6, 0, 5, 3], "rotation": 180, "texture": "#1"},
"south": {"uv": [8, 0, 11, 3], "rotation": 180, "texture": "#1"},
"west": {"uv": [5, 0, 6, 3], "rotation": 180, "texture": "#1"},
"up": {"uv": [6, 0, 5, 3], "rotation": 90, "texture": "#1"},
"down": {"uv": [5, 0, 6, 3], "rotation": 90, "texture": "#1"}
}
},
{
"from": [0, 0, 0],
"to": [2, 8, 2],
"faces": {
"north": {"uv": [0, 0, 2, 8], "texture": "#2"},
"east": {"uv": [0, 0, 2, 8], "texture": "#2"},
"south": {"uv": [0, 0, 2, 8], "texture": "#2"},
"west": {"uv": [2, 0, 0, 8], "texture": "#2"},
"up": {"uv": [0, 0, 2, 2], "rotation": 270, "texture": "#2"},
"down": {"uv": [0, 0, 2, 2], "texture": "#2"}
}
},
{
"from": [0, 0, 14],
"to": [2, 8, 16],
"rotation": {"angle": 0, "axis": "y", "origin": [0, 0, 14]},
"faces": {
"north": {"uv": [0, 0, 2, 8], "texture": "#2"},
"east": {"uv": [0, 0, 2, 8], "texture": "#2"},
"south": {"uv": [2, 0, 0, 8], "texture": "#2"},
"west": {"uv": [0, 0, 2, 8], "texture": "#2"},
"up": {"uv": [0, 0, 2, 2], "rotation": 180, "texture": "#2"},
"down": {"uv": [0, 0, 2, 2], "texture": "#2"}
}
},
{
"from": [14, 0, 14],
"to": [16, 8, 16],
"rotation": {"angle": 0, "axis": "y", "origin": [14, 0, 14]},
"faces": {
"north": {"uv": [0, 0, 2, 8], "texture": "#2"},
"east": {"uv": [2, 0, 0, 8], "texture": "#2"},
"south": {"uv": [0, 0, 2, 8], "texture": "#2"},
"west": {"uv": [0, 0, 2, 8], "texture": "#2"},
"up": {"uv": [0, 0, 2, 2], "rotation": 90, "texture": "#2"},
"down": {"uv": [0, 0, 2, 2], "texture": "#2"}
}
},
{
"from": [14, 0, 0],
"to": [16, 8, 2],
"rotation": {"angle": 0, "axis": "y", "origin": [14, 0, 0]},
"faces": {
"north": {"uv": [2, 0, 0, 8], "texture": "#2"},
"east": {"uv": [0, 0, 2, 8], "texture": "#2"},
"south": {"uv": [0, 0, 2, 8], "texture": "#2"},
"west": {"uv": [0, 0, 2, 8], "texture": "#2"},
"up": {"uv": [0, 0, 2, 2], "texture": "#2"},
"down": {"uv": [0, 0, 2, 2], "texture": "#2"}
}
},
{
"from": [1, 0, 2],
"to": [1, 8, 14],
"rotation": {"angle": 0, "axis": "y", "origin": [0, 0, 2]},
"faces": {
"north": {"uv": [0, 0, 0, 4], "texture": "#1"},
"east": {"uv": [8, 12, 14, 16], "texture": "#1"},
"south": {"uv": [0, 0, 0, 4], "texture": "#1"},
"west": {"uv": [8, 12, 14, 16], "texture": "#1"},
"up": {"uv": [0, 0, 0, 6], "texture": "#1"},
"down": {"uv": [0, 0, 0, 6], "texture": "#1"}
}
},
{
"from": [6, 13, 7],
"to": [6, 17, 9],
"rotation": {"angle": 0, "axis": "y", "origin": [5, 4, 2]},
"faces": {
"north": {"uv": [8, 14, 8, 16], "texture": "#1"},
"east": {"uv": [8, 14, 9, 16], "texture": "#1"},
"south": {"uv": [8, 14, 8, 16], "texture": "#1"},
"west": {"uv": [8, 14, 9, 16], "texture": "#1"},
"up": {"uv": [8, 14, 8, 15], "texture": "#1"},
"down": {"uv": [8, 14, 8, 15], "texture": "#1"}
}
},
{
"from": [10, 13, 7],
"to": [10, 17, 9],
"rotation": {"angle": 0, "axis": "y", "origin": [9, 4, 2]},
"faces": {
"north": {"uv": [8, 14, 8, 16], "texture": "#1"},
"east": {"uv": [8, 14, 9, 16], "texture": "#1"},
"south": {"uv": [8, 14, 8, 16], "texture": "#1"},
"west": {"uv": [8, 14, 9, 16], "texture": "#1"},
"up": {"uv": [8, 14, 8, 15], "texture": "#1"},
"down": {"uv": [8, 14, 8, 15], "texture": "#1"}
}
},
{
"from": [15, 0, 2],
"to": [15, 8, 14],
"rotation": {"angle": 0, "axis": "y", "origin": [14, 0, 2]},
"faces": {
"north": {"uv": [0, 0, 0, 4], "texture": "#1"},
"east": {"uv": [8, 12, 14, 16], "texture": "#1"},
"south": {"uv": [0, 0, 0, 4], "texture": "#1"},
"west": {"uv": [8, 12, 14, 16], "texture": "#1"},
"up": {"uv": [0, 0, 0, 6], "texture": "#1"},
"down": {"uv": [0, 0, 0, 6], "texture": "#1"}
}
},
{
"from": [8, 8, 2],
"to": [8, 16, 9],
"rotation": {"angle": 0, "axis": "y", "origin": [7, 4, 2]},
"faces": {
"north": {"uv": [0, 0, 0, 4], "texture": "#1"},
"east": {"uv": [4.5, 12, 8, 16], "texture": "#1"},
"south": {"uv": [0, 0, 0, 4], "texture": "#1"},
"west": {"uv": [8, 12, 4.5, 16], "texture": "#1"},
"up": {"uv": [0, 0, 0, 3.5], "texture": "#1"},
"down": {"uv": [0, 0, 0, 3.5], "texture": "#1"}
}
},
{
"from": [5, 9, 24],
"to": [11, 14, 30],
"rotation": {"angle": 0, "axis": "y", "origin": [7, 12, 28]},
"faces": {
"north": {"uv": [8, 6, 11, 8.5], "texture": "#1"},
"east": {"uv": [8, 6, 11, 8.5], "texture": "#1"},
"south": {"uv": [8, 6, 11, 8.5], "texture": "#1"},
"west": {"uv": [8, 6, 11, 8.5], "texture": "#1"},
"up": {"uv": [11, 3, 8, 6], "rotation": 90, "texture": "#1"},
"down": {"uv": [5, 0, 8, 3], "texture": "#1"}
}
},
{
"from": [9.01, 7, 24],
"to": [9.01, 17, 30],
"rotation": {"angle": 0, "axis": "y", "origin": [6, 14, 28]},
"faces": {
"north": {"uv": [0, 0, 0, 5], "texture": "#1"},
"east": {"uv": [0, 0, 3, 5], "texture": "#1"},
"south": {"uv": [0, 0, 0, 5], "texture": "#1"},
"west": {"uv": [3, 0, 0, 5], "texture": "#1"},
"up": {"uv": [0, 0, 0, 3], "texture": "#1"},
"down": {"uv": [0, 0, 0, 3], "texture": "#1"}
}
},
{
"from": [6.99, 7, 24],
"to": [6.99, 17, 30],
"rotation": {"angle": 0, "axis": "y", "origin": [4, 14, 28]},
"faces": {
"north": {"uv": [0, 0, 0, 5], "texture": "#1"},
"east": {"uv": [0, 0, 3, 5], "texture": "#1"},
"south": {"uv": [0, 0, 0, 5], "texture": "#1"},
"west": {"uv": [3, 0, 0, 5], "texture": "#1"},
"up": {"uv": [0, 0, 0, 3], "texture": "#1"},
"down": {"uv": [0, 0, 0, 3], "texture": "#1"}
}
},
{
"from": [4.99, 17, 24],
"to": [6.99, 17, 30],
"rotation": {"angle": -45, "axis": "z", "origin": [7, 17, 28]},
"faces": {
"north": {"uv": [0, 0, 0, 1], "rotation": 90, "texture": "#1"},
"east": {"uv": [0, 0, 0, 3], "rotation": 270, "texture": "#1"},
"south": {"uv": [0, 0, 0, 1], "rotation": 270, "texture": "#1"},
"west": {"uv": [0, 0, 0, 3], "rotation": 270, "texture": "#1"},
"up": {"uv": [3.5, 4.5, 6.5, 3.5], "rotation": 270, "texture": "#1"},
"down": {"uv": [6.5, 4.5, 3.5, 3.5], "rotation": 270, "texture": "#1"}
}
},
{
"from": [9.01, 17, 24],
"to": [9.01, 19, 30],
"rotation": {"angle": -45, "axis": "z", "origin": [9.01, 17, 28]},
"faces": {
"north": {"uv": [0, 0, 0, 1], "texture": "#1"},
"east": {"uv": [3.5, 4.5, 6.5, 3.5], "texture": "#1"},
"south": {"uv": [0, 0, 0, 1], "texture": "#1"},
"west": {"uv": [6.5, 4.5, 3.5, 3.5], "texture": "#1"},
"up": {"uv": [0, 0, 0, 3], "texture": "#1"},
"down": {"uv": [0, 0, 0, 3], "texture": "#1"}
}
},
{
"from": [2, 11, 7],
"to": [13, 13, 9],
"rotation": {"angle": 0, "axis": "y", "origin": [2, 11, 7]},
"faces": {
"north": {"uv": [11, 3.5, 12, 9], "rotation": 90, "texture": "#1"},
"south": {"uv": [11, 3.5, 12, 9], "rotation": 90, "texture": "#1"},
"up": {"uv": [11, 3.5, 12, 9], "rotation": 90, "texture": "#1"},
"down": {"uv": [11, 3.5, 12, 9], "rotation": 90, "texture": "#1"}
}
},
{
"from": [2, 0, 1],
"to": [14, 8, 1],
"faces": {
"north": {"uv": [2, 8, 14, 16], "texture": "#2"},
"east": {"uv": [0, 0, 0, 4], "texture": "#missing"},
"south": {"uv": [2, 8, 14, 16], "texture": "#2"},
"west": {"uv": [0, 0, 0, 4], "texture": "#missing"},
"up": {"uv": [0, 0, 6, 0], "texture": "#missing"},
"down": {"uv": [0, 0, 6, 0], "texture": "#missing"}
}
},
{
"from": [7, 15.01, 6],
"to": [9, 17.01, 28],
"rotation": {"angle": -22.5, "axis": "x", "origin": [7, 16, 8]},
"faces": {
"north": {"uv": [0, 6.5, 1, 7.5], "texture": "#1"},
"east": {"uv": [0, 16, 1, 5], "rotation": 90, "texture": "#1"},
"south": {"uv": [0, 5, 1, 6], "texture": "#1"},
"west": {"uv": [0, 5, 1, 16], "rotation": 90, "texture": "#1"},
"up": {"uv": [0, 16, 1, 5], "texture": "#1"},
"down": {"uv": [0, 5, 1, 16], "texture": "#1"}
}
},
{
"from": [9, 14.01, 25],
"to": [9, 15.01, 28],
"rotation": {"angle": -22.5, "axis": "x", "origin": [7, 16, 8]},
"faces": {
"north": {"uv": [0, 5, 1, 6], "texture": "#1"},
"east": {"uv": [1.5, 6.5, 1, 5], "rotation": 90, "texture": "#1"},
"south": {"uv": [0, 5, 1, 6], "texture": "#1"},
"west": {"uv": [1.5, 5, 1, 6.5], "rotation": 90, "texture": "#1"},
"up": {"uv": [0, 16, 1, 5], "texture": "#1"},
"down": {"uv": [0, 5, 1, 16], "texture": "#1"}
}
},
{
"from": [7, 14.01, 25],
"to": [7, 15.01, 28],
"rotation": {"angle": -22.5, "axis": "x", "origin": [7, 16, 8]},
"faces": {
"north": {"uv": [0, 5, 1, 6], "texture": "#1"},
"east": {"uv": [1.5, 6.5, 1, 5], "rotation": 90, "texture": "#1"},
"south": {"uv": [0, 5, 1, 6], "texture": "#1"},
"west": {"uv": [1.5, 5, 1, 6.5], "rotation": 90, "texture": "#1"},
"up": {"uv": [0, 16, 1, 5], "texture": "#1"},
"down": {"uv": [0, 5, 1, 16], "texture": "#1"}
}
},
{
"from": [6, 15, 7],
"to": [10, 17, 9],
"rotation": {"angle": 0, "axis": "y", "origin": [7, 15, 7]},
"faces": {
"north": {"uv": [8, 14, 9, 16], "rotation": 90, "texture": "#1"},
"south": {"uv": [8, 14, 9, 16], "rotation": 90, "texture": "#1"},
"up": {"uv": [8, 14, 9, 16], "rotation": 90, "texture": "#1"},
"down": {"uv": [8, 14, 9, 16], "rotation": 90, "texture": "#1"}
}
},
{
"from": [15, 6, 6],
"to": [16, 10, 10],
"rotation": {"angle": -22.5, "axis": "x", "origin": [14, 8, 8]},
"faces": {
"north": {"uv": [6, 6, 7, 10], "texture": "#6"},
"east": {"uv": [6, 6, 10, 10], "texture": "#6"},
"south": {"uv": [6, 6, 7, 10], "texture": "#6"},
"up": {"uv": [6.5, 6, 7, 8], "texture": "#6"},
"down": {"uv": [6, 6, 7, 10], "texture": "#6"}
}
},
{
"from": [-1, 6, 6],
"to": [0, 10, 10],
"rotation": {"angle": -22.5, "axis": "x", "origin": [1, 8, 8]},
"faces": {
"north": {"uv": [6, 6, 7, 10], "rotation": 180, "texture": "#6"},
"south": {"uv": [6, 6, 7, 10], "rotation": 180, "texture": "#6"},
"west": {"uv": [6, 6, 10, 10], "rotation": 180, "texture": "#6"},
"up": {"uv": [6, 6, 7, 10], "rotation": 180, "texture": "#6"},
"down": {"uv": [6.5, 6, 7, 8], "rotation": 180, "texture": "#6"}
}
}
],
"display": {
"gui": {
"rotation": [24, -41, 4],
"translation": [1.75, 1, 1.25],
"scale": [0.46, 0.46, 0.46]
}
}
}

View File

@@ -0,0 +1,36 @@
{
"format_version": "1.21.6",
"credit": "Made with Blockbench",
"parent": "block/block",
"texture_size": [32, 32],
"textures": {
"6": "tfmg:block/shaft_top",
"particle": "tfmg:block/steel_truss"
},
"elements": [
{
"from": [6, 6, 15],
"to": [10, 10, 16],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 8]},
"faces": {
"east": {"uv": [6, 6, 7, 10], "texture": "#6"},
"south": {"uv": [6, 6, 10, 10], "texture": "#6"},
"west": {"uv": [6, 6, 7, 10], "texture": "#6"},
"up": {"uv": [6.5, 6, 7, 8], "rotation": 90, "texture": "#6"},
"down": {"uv": [6, 6, 7, 10], "rotation": 270, "texture": "#6"}
}
},
{
"from": [6, 6, -1],
"to": [10, 10, 0],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 8]},
"faces": {
"north": {"uv": [6, 6, 10, 10], "rotation": 180, "texture": "#6"},
"east": {"uv": [6, 6, 7, 10], "rotation": 180, "texture": "#6"},
"west": {"uv": [6, 6, 7, 10], "rotation": 180, "texture": "#6"},
"up": {"uv": [6, 6, 7, 10], "rotation": 270, "texture": "#6"},
"down": {"uv": [6.5, 6, 7, 8], "rotation": 90, "texture": "#6"}
}
}
]
}

View File

@@ -0,0 +1,145 @@
{
"format_version": "1.21.6",
"credit": "Made with Blockbench",
"texture_size": [64, 64],
"textures": {
"0": "tfmg:block/large_transformer",
"particle": "tfmg:block/large_transformer"
},
"elements": [
{
"from": [-1, 15, 4],
"to": [17, 17, 16],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 15, 8]},
"faces": {
"north": {"uv": [6.25, 4.25, 10.75, 4.75], "texture": "#0"},
"east": {"uv": [9.5, 3.5, 6.5, 4], "texture": "#0"},
"west": {"uv": [6.5, 3.5, 9.5, 4], "texture": "#0"},
"up": {"uv": [0, 4.5, 3, 9], "rotation": 90, "texture": "#0"},
"down": {"uv": [0, 4.5, 3, 9], "rotation": 270, "texture": "#0"}
}
},
{
"from": [-1, 2, 4],
"to": [17, 4, 16],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 15, 8]},
"faces": {
"north": {"uv": [6.25, 4.25, 10.75, 4.75], "rotation": 180, "texture": "#0"},
"east": {"uv": [6.5, 3.5, 9.5, 4], "rotation": 180, "texture": "#0"},
"west": {"uv": [9.5, 3.5, 6.5, 4], "rotation": 180, "texture": "#0"},
"up": {"uv": [3, 4.5, 0, 9], "rotation": 270, "texture": "#0"},
"down": {"uv": [3, 4.5, 0, 9], "rotation": 90, "texture": "#0"}
}
},
{
"from": [2, 17, 4.99],
"to": [14, 19, 16],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 15, 8]},
"faces": {
"north": {"uv": [3.25, 3.5, 6.25, 4], "texture": "#0"},
"east": {"uv": [6, 4.25, 3.25, 4.75], "texture": "#0"},
"west": {"uv": [3.25, 4.25, 6, 4.75], "texture": "#0"},
"up": {"uv": [3.25, 5, 6, 8], "rotation": 90, "texture": "#0"}
}
},
{
"from": [2, 0, 5],
"to": [14, 2, 16],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 15, 8]},
"faces": {
"north": {"uv": [3.25, 3.5, 6.25, 4], "rotation": 180, "texture": "#0"},
"east": {"uv": [3.25, 4.25, 6, 4.75], "rotation": 180, "texture": "#0"},
"west": {"uv": [6, 4.25, 3.25, 4.75], "rotation": 180, "texture": "#0"},
"down": {"uv": [3.25, 8.25, 6, 11.25], "rotation": 270, "texture": "#0"}
}
},
{
"from": [-1, 4, 4],
"to": [17, 15, 6],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 15, 8]},
"faces": {
"north": {"uv": [6.25, 5, 10.75, 7.75], "texture": "#0"},
"east": {"uv": [9.75, 3.5, 12.5, 4], "rotation": 90, "texture": "#0"},
"south": {"uv": [10.75, 7.75, 6.25, 5], "texture": "#0"},
"west": {"uv": [9.75, 4, 12.5, 3.5], "rotation": 90, "texture": "#0"}
}
},
{
"from": [-1, 4, 8],
"to": [17, 15, 8],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 15, 8]},
"faces": {
"north": {"uv": [8, 0, 12.5, 2.75], "texture": "#0"},
"east": {"uv": [0, 0, 0, 11], "texture": "#0"},
"south": {"uv": [8, 0, 12.5, 2.75], "texture": "#0"},
"west": {"uv": [0, 0, 0, 11], "texture": "#0"},
"up": {"uv": [0, 0, 0, 16], "rotation": 90, "texture": "#0"},
"down": {"uv": [0, 0, 0, 16], "rotation": 270, "texture": "#0"}
}
},
{
"from": [-1, 4, 10],
"to": [17, 15, 10],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 15, 8]},
"faces": {
"north": {"uv": [8, 0, 12.5, 2.75], "texture": "#0"},
"east": {"uv": [0, 0, 0, 11], "texture": "#0"},
"south": {"uv": [8, 0, 12.5, 2.75], "texture": "#0"},
"west": {"uv": [0, 0, 0, 11], "texture": "#0"},
"up": {"uv": [0, 0, 0, 16], "rotation": 90, "texture": "#0"},
"down": {"uv": [0, 0, 0, 16], "rotation": 270, "texture": "#0"}
}
},
{
"from": [-1, 4, 12],
"to": [17, 15, 12],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 15, 8]},
"faces": {
"north": {"uv": [8, 0, 12.5, 2.75], "texture": "#0"},
"east": {"uv": [0, 0, 0, 11], "texture": "#0"},
"south": {"uv": [8, 0, 12.5, 2.75], "texture": "#0"},
"west": {"uv": [0, 0, 0, 11], "texture": "#0"},
"up": {"uv": [0, 0, 0, 16], "rotation": 90, "texture": "#0"},
"down": {"uv": [0, 0, 0, 16], "rotation": 270, "texture": "#0"}
}
},
{
"from": [-1, 4, 13.9],
"to": [17, 15, 13.9],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 15, 8]},
"faces": {
"north": {"uv": [8, 0, 12.5, 2.75], "texture": "#0"},
"east": {"uv": [0, 0, 0, 11], "texture": "#0"},
"south": {"uv": [8, 0, 12.5, 2.75], "texture": "#0"},
"west": {"uv": [0, 0, 0, 11], "texture": "#0"},
"up": {"uv": [0, 0, 0, 16], "rotation": 90, "texture": "#0"},
"down": {"uv": [0, 0, 0, 16], "rotation": 270, "texture": "#0"}
}
},
{
"from": [-1, 4, 16],
"to": [17, 15, 16],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 15, 8]},
"faces": {
"north": {"uv": [8, 0, 12.5, 2.75], "texture": "#0"},
"east": {"uv": [0, 0, 0, 11], "texture": "#0"},
"south": {"uv": [8, 0, 12.5, 2.75], "texture": "#0"},
"west": {"uv": [0, 0, 0, 11], "texture": "#0"},
"up": {"uv": [0, 0, 0, 16], "rotation": 90, "texture": "#0"},
"down": {"uv": [0, 0, 0, 16], "rotation": 270, "texture": "#0"}
}
},
{
"from": [2, 3, 0],
"to": [14, 16, 16],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 15, 8]},
"faces": {
"north": {"uv": [0, 0, 3, 3.25], "texture": "#0"},
"east": {"uv": [7, 0, 3, 3.25], "texture": "#0"},
"west": {"uv": [3, 0, 7, 3.25], "texture": "#0"},
"up": {"uv": [0, 3.25, 3, 7.25], "texture": "#0"},
"down": {"uv": [0, 3.25, 3, 7.25], "rotation": 180, "texture": "#0"}
}
}
]
}

View File

@@ -0,0 +1,47 @@
{
"format_version": "1.9.0",
"credit": "Made with Blockbench",
"textures": {
"0": "tfmg:block/large_coil_top",
"1": "tfmg:block/large_coil_side",
"2": "tfmg:block/transformer_core",
"particle": "tfmg:block/large_coil_top"
},
"elements": [
{
"from": [0, 4, 0],
"to": [16, 16, 16],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 2, 8]},
"faces": {
"north": {"uv": [0, 0, 16, 12], "texture": "#1"},
"east": {"uv": [0, 0, 16, 12], "texture": "#1"},
"south": {"uv": [0, 0, 16, 12], "texture": "#1"},
"west": {"uv": [0, 0, 16, 12], "texture": "#1"},
"up": {"uv": [0, 0, 16, 16], "texture": "#0"},
"down": {"uv": [0, 0, 16, 16], "texture": "#0"}
}
},
{
"from": [4, 16, 4],
"to": [12, 20, 16],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 2, 8]},
"faces": {
"north": {"uv": [4, 6, 0, 14], "rotation": 90, "texture": "#2"},
"east": {"uv": [16, 2, 4, 6], "texture": "#2"},
"west": {"uv": [4, 2, 16, 6], "texture": "#2"},
"up": {"uv": [16, 6, 4, 14], "rotation": 270, "texture": "#2"}
}
},
{
"from": [4, 0, 4],
"to": [12, 4, 16],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 2, 8]},
"faces": {
"north": {"uv": [0, 6, 4, 14], "rotation": 90, "texture": "#2"},
"east": {"uv": [16, 2, 4, 6], "texture": "#2"},
"west": {"uv": [4, 2, 16, 6], "texture": "#2"},
"down": {"uv": [4, 6, 16, 14], "rotation": 270, "texture": "#2"}
}
}
]
}

View File

@@ -0,0 +1,375 @@
{
"format_version": "1.21.6",
"parent": "block/block",
"credit": "Made with Blockbench",
"texture_size": [64, 64],
"textures": {
"0": "tfmg:block/large_transformer",
"particle": "tfmg:block/large_transformer"
},
"elements": [
{
"from": [-4, 15, -1],
"to": [8, 17, 17],
"rotation": {"angle": 0, "axis": "y", "origin": [9, 15, 7]},
"faces": {
"north": {"uv": [9.5, 3.5, 6.5, 4], "texture": "#0"},
"east": {"uv": [6.25, 4.25, 10.75, 4.75], "texture": "#0"},
"south": {"uv": [6.5, 3.5, 9.5, 4], "texture": "#0"},
"west": {"uv": [6.25, 4.25, 10.75, 4.75], "texture": "#0"},
"up": {"uv": [0, 4.5, 3, 9], "texture": "#0"},
"down": {"uv": [0, 4.5, 3, 9], "texture": "#0"}
}
},
{
"from": [8, 2, -1],
"to": [20, 4, 17],
"rotation": {"angle": 0, "axis": "y", "origin": [9, 2, 7]},
"faces": {
"north": {"uv": [6.5, 4, 9.5, 3.5], "texture": "#0"},
"east": {"uv": [6.25, 4.75, 10.75, 4.25], "texture": "#0"},
"south": {"uv": [9.5, 4, 6.5, 3.5], "texture": "#0"},
"west": {"uv": [6.25, 4.25, 10.75, 4.75], "texture": "#0"},
"up": {"uv": [3, 4.5, 0, 9], "texture": "#0"},
"down": {"uv": [3, 4.5, 0, 9], "texture": "#0"}
}
},
{
"from": [-4, 2, -1],
"to": [8, 4, 17],
"rotation": {"angle": 0, "axis": "x", "origin": [9, 3, 8]},
"faces": {
"north": {"uv": [6.5, 3.5, 9.5, 4], "rotation": 180, "texture": "#0"},
"east": {"uv": [6.25, 4.25, 10.75, 4.75], "rotation": 180, "texture": "#0"},
"south": {"uv": [9.5, 3.5, 6.5, 4], "rotation": 180, "texture": "#0"},
"west": {"uv": [6.25, 4.25, 10.75, 4.75], "rotation": 180, "texture": "#0"},
"up": {"uv": [3, 4.5, 0, 9], "rotation": 180, "texture": "#0"},
"down": {"uv": [3, 4.5, 0, 9], "rotation": 180, "texture": "#0"}
}
},
{
"from": [8, 15, -1],
"to": [20, 17, 17],
"rotation": {"angle": 0, "axis": "y", "origin": [7, 15, 0]},
"faces": {
"north": {"uv": [6.5, 3.5, 9.5, 4], "texture": "#0"},
"east": {"uv": [6.25, 4.25, 10.75, 4.75], "texture": "#0"},
"south": {"uv": [9.5, 3.5, 6.5, 4], "texture": "#0"},
"west": {"uv": [6.25, 4.25, 10.75, 4.75], "texture": "#0"},
"up": {"uv": [3, 4.5, 0, 9], "texture": "#0"},
"down": {"uv": [3, 4.5, 0, 9], "texture": "#0"}
}
},
{
"from": [-3, 17, 2],
"to": [8, 19, 14],
"rotation": {"angle": 0, "axis": "y", "origin": [-5, 17, 0]},
"faces": {
"north": {"uv": [6, 4.25, 3.25, 4.75], "texture": "#0"},
"south": {"uv": [3.25, 4.25, 6, 4.75], "texture": "#0"},
"west": {"uv": [3.25, 3.5, 6.25, 4], "texture": "#0"},
"up": {"uv": [3.25, 5, 6, 8], "texture": "#0"}
}
},
{
"from": [8, 0, 2],
"to": [19, 2, 14],
"rotation": {"angle": 0, "axis": "x", "origin": [-5, 1, 8]},
"faces": {
"north": {"uv": [6, 4.25, 3.25, 4.75], "rotation": 180, "texture": "#0"},
"east": {"uv": [3.25, 3.5, 6.25, 4], "rotation": 180, "texture": "#0"},
"south": {"uv": [3.25, 4.25, 6, 4.75], "rotation": 180, "texture": "#0"},
"down": {"uv": [3.25, 8.25, 6, 11.25], "rotation": 180, "texture": "#0"}
}
},
{
"from": [-3, 0, 2],
"to": [8, 2, 14],
"rotation": {"angle": 0, "axis": "x", "origin": [-5, 1, 8]},
"faces": {
"north": {"uv": [3.25, 4.25, 6, 4.75], "rotation": 180, "texture": "#0"},
"south": {"uv": [6, 4.25, 3.25, 4.75], "rotation": 180, "texture": "#0"},
"west": {"uv": [3.25, 3.5, 6.25, 4], "rotation": 180, "texture": "#0"},
"down": {"uv": [3.25, 8.25, 6, 11.25], "texture": "#0"}
}
},
{
"from": [8, 17, 2],
"to": [19, 19, 14],
"rotation": {"angle": 0, "axis": "y", "origin": [13, 17, 8]},
"faces": {
"north": {"uv": [3.25, 4.25, 6, 4.75], "texture": "#0"},
"east": {"uv": [3.25, 3.5, 6.25, 4], "texture": "#0"},
"south": {"uv": [6, 4.25, 3.25, 4.75], "texture": "#0"},
"up": {"uv": [3.25, 5, 6, 8], "rotation": 180, "texture": "#0"}
}
},
{
"from": [-4, 4, -1],
"to": [-2, 15, 17],
"rotation": {"angle": 0, "axis": "y", "origin": [-3, 4, 0]},
"faces": {
"north": {"uv": [9.75, 3.5, 12.5, 4], "rotation": 90, "texture": "#0"},
"east": {"uv": [10.75, 7.75, 6.25, 5], "texture": "#0"},
"south": {"uv": [9.75, 4, 12.5, 3.5], "rotation": 90, "texture": "#0"},
"west": {"uv": [6.25, 5, 10.75, 7.75], "texture": "#0"}
}
},
{
"from": [18, 4, -1],
"to": [20, 15, 17],
"rotation": {"angle": 0, "axis": "y", "origin": [19, 4, 0]},
"faces": {
"north": {"uv": [12.5, 4, 9.75, 3.5], "rotation": 90, "texture": "#0"},
"east": {"uv": [6.25, 5, 10.75, 7.75], "texture": "#0"},
"south": {"uv": [9.75, 3.5, 12.5, 4], "rotation": 90, "texture": "#0"},
"west": {"uv": [6.25, 5, 10.75, 7.75], "texture": "#0"}
}
},
{
"from": [0, 4, -1],
"to": [0, 15, 17],
"rotation": {"angle": 0, "axis": "y", "origin": [1, 4, 0]},
"faces": {
"north": {"uv": [0, 0, 0, 11], "texture": "#0"},
"east": {"uv": [8, 0, 12.5, 2.75], "texture": "#0"},
"south": {"uv": [0, 0, 0, 11], "texture": "#0"},
"west": {"uv": [8, 0, 12.5, 2.75], "texture": "#0"},
"up": {"uv": [0, 0, 0, 16], "texture": "#0"},
"down": {"uv": [0, 0, 0, 16], "texture": "#0"}
}
},
{
"from": [2, 4, -1],
"to": [2, 15, 17],
"rotation": {"angle": 0, "axis": "y", "origin": [3, 4, 0]},
"faces": {
"north": {"uv": [0, 0, 0, 11], "texture": "#0"},
"east": {"uv": [8, 0, 12.5, 2.75], "texture": "#0"},
"south": {"uv": [0, 0, 0, 11], "texture": "#0"},
"west": {"uv": [8, 0, 12.5, 2.75], "texture": "#0"},
"up": {"uv": [0, 0, 0, 16], "texture": "#0"},
"down": {"uv": [0, 0, 0, 16], "texture": "#0"}
}
},
{
"from": [4, 4, -1],
"to": [4, 15, 17],
"rotation": {"angle": 0, "axis": "y", "origin": [5, 4, 0]},
"faces": {
"north": {"uv": [0, 0, 0, 11], "texture": "#0"},
"east": {"uv": [8, 0, 12.5, 2.75], "texture": "#0"},
"south": {"uv": [0, 0, 0, 11], "texture": "#0"},
"west": {"uv": [8, 0, 12.5, 2.75], "texture": "#0"},
"up": {"uv": [0, 0, 0, 16], "texture": "#0"},
"down": {"uv": [0, 0, 0, 16], "texture": "#0"}
}
},
{
"from": [5.9, 4, -1],
"to": [5.9, 15, 17],
"rotation": {"angle": 0, "axis": "y", "origin": [6.9, 4, 0]},
"faces": {
"north": {"uv": [0, 0, 0, 11], "texture": "#0"},
"east": {"uv": [8, 0, 12.5, 2.75], "texture": "#0"},
"south": {"uv": [0, 0, 0, 11], "texture": "#0"},
"west": {"uv": [8, 0, 12.5, 2.75], "texture": "#0"},
"up": {"uv": [0, 0, 0, 16], "texture": "#0"},
"down": {"uv": [0, 0, 0, 16], "texture": "#0"}
}
},
{
"from": [8, 4, -1],
"to": [8, 15, 17],
"rotation": {"angle": 0, "axis": "y", "origin": [9, 4, 0]},
"faces": {
"north": {"uv": [0, 0, 0, 11], "texture": "#0"},
"east": {"uv": [8, 0, 12.5, 2.75], "texture": "#0"},
"south": {"uv": [0, 0, 0, 11], "texture": "#0"},
"west": {"uv": [8, 0, 12.5, 2.75], "texture": "#0"},
"up": {"uv": [0, 0, 0, 16], "texture": "#0"},
"down": {"uv": [0, 0, 0, 16], "texture": "#0"}
}
},
{
"from": [10, 4, -1],
"to": [10, 15, 17],
"rotation": {"angle": 0, "axis": "y", "origin": [11, 4, 0]},
"faces": {
"north": {"uv": [0, 0, 0, 11], "texture": "#0"},
"east": {"uv": [8, 0, 12.5, 2.75], "texture": "#0"},
"south": {"uv": [0, 0, 0, 11], "texture": "#0"},
"west": {"uv": [8, 0, 12.5, 2.75], "texture": "#0"},
"up": {"uv": [0, 0, 0, 16], "texture": "#0"},
"down": {"uv": [0, 0, 0, 16], "texture": "#0"}
}
},
{
"from": [12, 4, -1],
"to": [12, 15, 17],
"rotation": {"angle": 0, "axis": "y", "origin": [13, 4, 0]},
"faces": {
"north": {"uv": [0, 0, 0, 11], "texture": "#0"},
"east": {"uv": [8, 0, 12.5, 2.75], "texture": "#0"},
"south": {"uv": [0, 0, 0, 11], "texture": "#0"},
"west": {"uv": [8, 0, 12.5, 2.75], "texture": "#0"},
"up": {"uv": [0, 0, 0, 16], "texture": "#0"},
"down": {"uv": [0, 0, 0, 16], "texture": "#0"}
}
},
{
"from": [13.9, 4, -1],
"to": [13.9, 15, 17],
"rotation": {"angle": 0, "axis": "y", "origin": [14.9, 4, 0]},
"faces": {
"north": {"uv": [0, 0, 0, 11], "texture": "#0"},
"east": {"uv": [8, 0, 12.5, 2.75], "texture": "#0"},
"south": {"uv": [0, 0, 0, 11], "texture": "#0"},
"west": {"uv": [8, 0, 12.5, 2.75], "texture": "#0"},
"up": {"uv": [0, 0, 0, 16], "texture": "#0"},
"down": {"uv": [0, 0, 0, 16], "texture": "#0"}
}
},
{
"from": [16, 4, -1],
"to": [16, 15, 17],
"rotation": {"angle": 0, "axis": "y", "origin": [17, 4, 0]},
"faces": {
"north": {"uv": [0, 0, 0, 11], "texture": "#0"},
"east": {"uv": [8, 0, 12.5, 2.75], "texture": "#0"},
"south": {"uv": [0, 0, 0, 11], "texture": "#0"},
"west": {"uv": [8, 0, 12.5, 2.75], "texture": "#0"},
"up": {"uv": [0, 0, 0, 16], "texture": "#0"},
"down": {"uv": [0, 0, 0, 16], "texture": "#0"}
}
},
{
"from": [-8, 3, 2],
"to": [8, 16, 14],
"rotation": {"angle": 0, "axis": "y", "origin": [23, 4, 0]},
"faces": {
"north": {"uv": [7, 0, 3, 3.25], "texture": "#0"},
"south": {"uv": [3, 0, 7, 3.25], "texture": "#0"},
"west": {"uv": [0, 0, 3, 3.25], "texture": "#0"},
"up": {"uv": [0, 3.25, 3, 7.25], "rotation": 270, "texture": "#0"},
"down": {"uv": [0, 3.25, 3, 7.25], "rotation": 270, "texture": "#0"}
}
},
{
"from": [8, 3, 2],
"to": [24, 16, 14],
"rotation": {"angle": 0, "axis": "y", "origin": [16, 4, 16]},
"faces": {
"north": {"uv": [3, 0, 7, 3.25], "texture": "#0"},
"east": {"uv": [3, 0, 0, 3.25], "texture": "#0"},
"south": {"uv": [7, 0, 3, 3.25], "texture": "#0"},
"up": {"uv": [0, 3.25, 3, 7.25], "rotation": 90, "texture": "#0"},
"down": {"uv": [0, 3.25, 3, 7.25], "rotation": 90, "texture": "#0"}
}
},
{
"from": [-3, 22, 5],
"to": [3, 23, 11],
"rotation": {"angle": 0, "axis": "y", "origin": [-1, 20, 7]},
"faces": {
"north": {"uv": [13.25, 0, 14.75, 0.25], "texture": "#0"},
"east": {"uv": [13.25, 0, 14.75, 0.25], "texture": "#0"},
"south": {"uv": [13.25, 0, 14.75, 0.25], "texture": "#0"},
"west": {"uv": [13.25, 0, 14.75, 0.25], "texture": "#0"},
"up": {"uv": [13.25, 0, 14.75, 1.5], "texture": "#0"},
"down": {"uv": [13.25, 0, 14.75, 1.5], "texture": "#0"}
}
},
{
"from": [-3, 24, 5],
"to": [3, 25, 11],
"rotation": {"angle": 0, "axis": "y", "origin": [-1, 22, 7]},
"faces": {
"north": {"uv": [13.25, 0, 14.75, 0.25], "texture": "#0"},
"east": {"uv": [13.25, 0, 14.75, 0.25], "texture": "#0"},
"south": {"uv": [13.25, 0, 14.75, 0.25], "texture": "#0"},
"west": {"uv": [13.25, 0, 14.75, 0.25], "texture": "#0"},
"up": {"uv": [13.25, 0, 14.75, 1.5], "texture": "#0"},
"down": {"uv": [13.25, 0, 14.75, 1.5], "texture": "#0"}
}
},
{
"from": [13, 22, 5],
"to": [19, 23, 11],
"rotation": {"angle": 0, "axis": "y", "origin": [15, 20, 7]},
"faces": {
"north": {"uv": [13.25, 0, 14.75, 0.25], "texture": "#0"},
"east": {"uv": [13.25, 0, 14.75, 0.25], "texture": "#0"},
"south": {"uv": [13.25, 0, 14.75, 0.25], "texture": "#0"},
"west": {"uv": [13.25, 0, 14.75, 0.25], "texture": "#0"},
"up": {"uv": [13.25, 0, 14.75, 1.5], "texture": "#0"},
"down": {"uv": [13.25, 0, 14.75, 1.5], "texture": "#0"}
}
},
{
"from": [13, 20, 5],
"to": [19, 21, 11],
"rotation": {"angle": 0, "axis": "y", "origin": [15, 18, 7]},
"faces": {
"north": {"uv": [13.25, 0, 14.75, 0.25], "texture": "#0"},
"east": {"uv": [13.25, 0, 14.75, 0.25], "texture": "#0"},
"south": {"uv": [13.25, 0, 14.75, 0.25], "texture": "#0"},
"west": {"uv": [13.25, 0, 14.75, 0.25], "texture": "#0"},
"up": {"uv": [13.25, 0, 14.75, 1.5], "texture": "#0"},
"down": {"uv": [13.25, 0, 14.75, 1.5], "texture": "#0"}
}
},
{
"from": [13, 24, 5],
"to": [19, 25, 11],
"rotation": {"angle": 0, "axis": "y", "origin": [15, 22, 7]},
"faces": {
"north": {"uv": [13.25, 0, 14.75, 0.25], "texture": "#0"},
"east": {"uv": [13.25, 0, 14.75, 0.25], "texture": "#0"},
"south": {"uv": [13.25, 0, 14.75, 0.25], "texture": "#0"},
"west": {"uv": [13.25, 0, 14.75, 0.25], "texture": "#0"},
"up": {"uv": [13.25, 0, 14.75, 1.5], "texture": "#0"},
"down": {"uv": [13.25, 0, 14.75, 1.5], "texture": "#0"}
}
},
{
"from": [-3, 20, 5],
"to": [3, 21, 11],
"rotation": {"angle": 0, "axis": "y", "origin": [-1, 18, 7]},
"faces": {
"north": {"uv": [13.25, 0, 14.75, 0.25], "texture": "#0"},
"east": {"uv": [13.25, 0, 14.75, 0.25], "texture": "#0"},
"south": {"uv": [13.25, 0, 14.75, 0.25], "texture": "#0"},
"west": {"uv": [13.25, 0, 14.75, 0.25], "texture": "#0"},
"up": {"uv": [13.25, 0, 14.75, 1.5], "texture": "#0"},
"down": {"uv": [13.25, 0, 14.75, 1.5], "texture": "#0"}
}
},
{
"from": [-2, 19, 6],
"to": [2, 26, 10],
"rotation": {"angle": 0, "axis": "y", "origin": [-1, 21, 7]},
"faces": {
"north": {"uv": [15, 0, 16, 1.75], "texture": "#0"},
"east": {"uv": [15, 0, 16, 1.75], "texture": "#0"},
"south": {"uv": [15, 0, 16, 1.75], "texture": "#0"},
"west": {"uv": [15, 0, 16, 1.75], "texture": "#0"},
"up": {"uv": [15, 2.5, 16, 3.5], "texture": "#0"},
"down": {"uv": [0, 0, 1, 1], "texture": "#0"}
}
},
{
"from": [14, 19, 6],
"to": [18, 26, 10],
"rotation": {"angle": 0, "axis": "y", "origin": [15, 21, 7]},
"faces": {
"north": {"uv": [15, 0, 16, 1.75], "texture": "#0"},
"east": {"uv": [15, 0, 16, 1.75], "texture": "#0"},
"south": {"uv": [15, 0, 16, 1.75], "texture": "#0"},
"west": {"uv": [15, 0, 16, 1.75], "texture": "#0"},
"up": {"uv": [15, 2.5, 16, 3.5], "texture": "#0"},
"down": {"uv": [0, 0, 1, 1], "texture": "#0"}
}
}
]
}

View File

@@ -0,0 +1,47 @@
{
"format_version": "1.9.0",
"credit": "Made with Blockbench",
"textures": {
"0": "tfmg:block/large_coil_top",
"1": "tfmg:block/large_coil_side",
"2": "tfmg:block/transformer_core",
"particle": "tfmg:block/large_coil_top"
},
"elements": [
{
"from": [0, 4, 0],
"to": [16, 16, 16],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 2, 8]},
"faces": {
"north": {"uv": [0, 0, 16, 12], "texture": "#1"},
"east": {"uv": [0, 0, 16, 12], "texture": "#1"},
"south": {"uv": [0, 0, 16, 12], "texture": "#1"},
"west": {"uv": [0, 0, 16, 12], "texture": "#1"},
"up": {"uv": [0, 0, 16, 16], "texture": "#0"},
"down": {"uv": [0, 0, 16, 16], "texture": "#0"}
}
},
{
"from": [4, 0, 0],
"to": [12, 4, 12],
"rotation": {"angle": -180, "axis": "y", "origin": [8, 2, 8]},
"faces": {
"east": {"uv": [4, 2, 16, 6], "texture": "#2"},
"south": {"uv": [0, 6, 4, 14], "rotation": 90, "texture": "#2"},
"west": {"uv": [16, 2, 4, 6], "texture": "#2"},
"down": {"uv": [4, 6, 16, 14], "rotation": 90, "texture": "#2"}
}
},
{
"from": [4, 16, 0],
"to": [12, 20, 12],
"rotation": {"angle": -180, "axis": "y", "origin": [8, 2, 8]},
"faces": {
"east": {"uv": [4, 2, 16, 6], "texture": "#2"},
"south": {"uv": [4, 6, 0, 14], "rotation": 90, "texture": "#2"},
"west": {"uv": [16, 2, 4, 6], "texture": "#2"},
"up": {"uv": [16, 6, 4, 14], "rotation": 90, "texture": "#2"}
}
}
]
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 430 B

Some files were not shown because too many files have changed in this diff Show More