Smarter Voltage Observing
- Voltage Observers can now send information through Display Links. - Added Translation keys for multiple literal strings. - Fixed StreamCodec issue with flamethrower fuel. - Added Display Sources for the following: -> Voltage Generation -> Voltage -> Power Generation -> Power Usage -> Resistance -> Current -> Network Power Generation -> Network Power Consumption -> Network Resistance -> Network ID
This commit is contained in:
@@ -512,6 +512,34 @@
|
|||||||
"create.distillation_output.mode.keep_fluid": "ssǝɔoɹԀ uoıʇɐןןıʇsıᗡ doʇS",
|
"create.distillation_output.mode.keep_fluid": "ssǝɔoɹԀ uoıʇɐןןıʇsıᗡ doʇS",
|
||||||
"create.distillation_output.mode.void_when_full": "pınןℲ ssǝɔxƎ pıoΛ",
|
"create.distillation_output.mode.void_when_full": "pınןℲ ssǝɔxƎ pıoΛ",
|
||||||
"create.distillation_output.when_tank_is_full": "ןןnℲ sı ʞuɐ⟘ ןɐuɹǝʇuI uǝɥM",
|
"create.distillation_output.when_tank_is_full": "ןןnℲ sı ʞuɐ⟘ ןɐuɹǝʇuI uǝɥM",
|
||||||
|
"create.electricity.capacity": "%s :ʎʇıɔɐdɐƆ",
|
||||||
|
"create.electricity.charging_rate": "%s :ǝʇɐᴚ buıbɹɐɥƆ",
|
||||||
|
"create.electricity.max_capacity": "%s :ʎʇıɔɐdɐƆ xɐW",
|
||||||
|
"create.engine.controller.header": "ɹǝןןoɹʇuoƆ ǝuıbuƎ",
|
||||||
|
"create.engine.efficiency": "%s :ʎɔuǝıɔıɟɟƎ",
|
||||||
|
"create.engine.fuel_consumption": "%s :uoıʇdɯnsuoƆ ןǝnℲ",
|
||||||
|
"create.engine.injection_rate": "%s :ǝʇɐᴚ uoıʇɔǝظuI",
|
||||||
|
"create.engine.length": "%s :ɥʇbuǝꞀ",
|
||||||
|
"create.engine.rpm": "%s :WԀᴚ",
|
||||||
|
"create.engine.shift": "%s :ʇɟıɥS",
|
||||||
|
"create.engine.signal": "%s :ןɐubıS",
|
||||||
|
"create.engine.speed_efficiency": "%s :ʎɔuǝıɔıɟɟƎ pǝǝdS",
|
||||||
|
"create.engine.torque": "%s :ǝnbɹo⟘",
|
||||||
|
"create.engine.type.boxer": "ɹǝxoᗺ",
|
||||||
|
"create.engine.type.engine_i": "I",
|
||||||
|
"create.engine.type.engine_u": "∩",
|
||||||
|
"create.engine.type.engine_v": "Λ",
|
||||||
|
"create.engine.type.engine_w": "M",
|
||||||
|
"create.engine.type.radial": "ןɐıpɐᴚ",
|
||||||
|
"create.engine.type.turbine": "ǝuıqɹn⟘",
|
||||||
|
"create.engine.upgrade.transmission.neutral": "ןɐɹʇnǝN",
|
||||||
|
"create.engine.upgrade.transmission.reverse": "ǝsɹǝʌǝᴚ",
|
||||||
|
"create.engine.upgrade.transmission.shift_1": "ɹɐǝ⅁ ʇsƖ",
|
||||||
|
"create.engine.upgrade.transmission.shift_2": "ɹɐǝ⅁ puᄅ",
|
||||||
|
"create.engine.upgrade.transmission.shift_3": "ɹɐǝ⅁ pɹƐ",
|
||||||
|
"create.engine.upgrade.transmission.shift_4": "ɹɐǝ⅁ ɥʇㄣ",
|
||||||
|
"create.engine.upgrade.transmission.shift_5": "ɹɐǝ⅁ ɥʇϛ",
|
||||||
|
"create.engine.upgrade.transmission.shift_6": "ɹɐǝ⅁ ɥʇ9",
|
||||||
"create.fe": "%1$s :ƎℲ",
|
"create.fe": "%1$s :ƎℲ",
|
||||||
"create.flamethrower.fuel.amount": "ʇunoɯⱯ ǝןıʇɔǝظoɹԀ %s",
|
"create.flamethrower.fuel.amount": "ʇunoɯⱯ ǝןıʇɔǝظoɹԀ %s",
|
||||||
"create.flamethrower.fuel.capacity": "%s :ʎʇıɔɐdɐƆ ןǝnℲ",
|
"create.flamethrower.fuel.capacity": "%s :ʎʇıɔɐdɐƆ ןǝnℲ",
|
||||||
@@ -542,17 +570,17 @@
|
|||||||
"create.goggles.electric_machine.no_power": "ɹǝʍoԀ oN",
|
"create.goggles.electric_machine.no_power": "ɹǝʍoԀ oN",
|
||||||
"create.goggles.electricity.insufficient_voltage": "ǝbɐʇןoΛ ʇuǝıɔıɟɟnsuI",
|
"create.goggles.electricity.insufficient_voltage": "ǝbɐʇןoΛ ʇuǝıɔıɟɟnsuI",
|
||||||
"create.goggles.electrode_holder.min_amps": " spǝǝN( ʇuǝɹɹnƆ ɥbnouƎ ʇoN",
|
"create.goggles.electrode_holder.min_amps": " spǝǝN( ʇuǝɹɹnƆ ɥbnouƎ ʇoN",
|
||||||
"create.goggles.engine.cooling_fluid": " :pınןℲ buıןooƆ",
|
"create.goggles.engine.cooling_fluid": "%s :pınןℲ buıןooƆ",
|
||||||
"create.goggles.engine.fuel_consumption": ":uoıʇdɯnsuoƆ ןǝnℲ ",
|
"create.goggles.engine.fuel_consumption": "s/ᗺɯ %s :uoıʇdɯnsuoƆ ןǝnℲ",
|
||||||
"create.goggles.engine.header": "oɟuI ǝuıbuƎ",
|
"create.goggles.engine.header": "oɟuI ǝuıbuƎ",
|
||||||
"create.goggles.engine.next_component": " :ʇuǝuodɯoƆ ʇxǝN ",
|
"create.goggles.engine.next_component": " :ʇuǝuodɯoƆ ʇxǝN ",
|
||||||
"create.goggles.engine.oil": " :ןıO",
|
"create.goggles.engine.oil": "%s :ןıO",
|
||||||
"create.goggles.engine.pistons_missing": "buıssıW suoʇsıԀ",
|
"create.goggles.engine.pistons_missing": "buıssıW suoʇsıԀ",
|
||||||
"create.goggles.engine.rpm": " :pǝǝdS ",
|
"create.goggles.engine.rpm": "WԀᴚ %s :pǝǝdS",
|
||||||
"create.goggles.engine.signal": " :ןɐubıS ",
|
"create.goggles.engine.signal": "%s :ןɐubıS",
|
||||||
"create.goggles.engine.torque": ":ǝnbɹo⟘ ",
|
"create.goggles.engine.torque": "%s :ǝnbɹo⟘",
|
||||||
"create.goggles.engine.turbines_missing": "buıssıW sǝuıqɹn⟘",
|
"create.goggles.engine.turbines_missing": "buıssıW sǝuıqɹn⟘",
|
||||||
"create.goggles.engine.type": " :ǝdʎ⟘ ",
|
"create.goggles.engine.type": "%s :ǝdʎ⟘",
|
||||||
"create.goggles.engine.unfinished": "pǝɥsıuıɟu∩ ǝuıbuƎ",
|
"create.goggles.engine.unfinished": "pǝɥsıuıɟu∩ ǝuıbuƎ",
|
||||||
"create.goggles.fluid_storage": ":ǝbɐɹoʇS pınןℲ",
|
"create.goggles.fluid_storage": ":ǝbɐɹoʇS pınןℲ",
|
||||||
"create.goggles.gauge.value": ":ǝbɐʇןoΛ pǝɹnsɐǝW ",
|
"create.goggles.gauge.value": ":ǝbɐʇןoΛ pǝɹnsɐǝW ",
|
||||||
@@ -591,6 +619,15 @@
|
|||||||
"create.goggles.vat.tfmg.graphite_electrode": "ǝpoɹʇɔǝןƎ ǝʇıɥdɐɹ⅁ ",
|
"create.goggles.vat.tfmg.graphite_electrode": "ǝpoɹʇɔǝןƎ ǝʇıɥdɐɹ⅁ ",
|
||||||
"create.goggles.vat.tfmg.mixing": "ɹǝxıW ",
|
"create.goggles.vat.tfmg.mixing": "ɹǝxıW ",
|
||||||
"create.goggles.voltmeter": ":ɹǝʇǝɯʇןoΛ",
|
"create.goggles.voltmeter": ":ɹǝʇǝɯʇןoΛ",
|
||||||
|
"create.goggles.voltmeter.mode.capacity": "ʎʇıɔɐdɐƆ",
|
||||||
|
"create.goggles.voltmeter.mode.current": "ʇuǝɹɹnƆ",
|
||||||
|
"create.goggles.voltmeter.mode.fallback": "ʞɔɐqןןɐℲ",
|
||||||
|
"create.goggles.voltmeter.mode.high_voltage": ")ɥbıH( ǝbɐʇןoΛ",
|
||||||
|
"create.goggles.voltmeter.mode.net_power_gen": "uoıʇɐɹǝuǝ⅁ ɹǝʍoԀ ʞɹoʍʇǝN",
|
||||||
|
"create.goggles.voltmeter.mode.net_power_use": "ǝbɐs∩ ɹǝʍoԀ ʞɹoʍʇǝN",
|
||||||
|
"create.goggles.voltmeter.mode.power": "ɹǝʍoԀ",
|
||||||
|
"create.goggles.voltmeter.mode.resistance": "ǝɔuɐʇsısǝᴚ",
|
||||||
|
"create.goggles.voltmeter.mode.voltage": "ǝbɐʇןoΛ",
|
||||||
"create.goggles.voltmeter.range": "%1$s :ǝbuɐᴚ ",
|
"create.goggles.voltmeter.range": "%1$s :ǝbuɐᴚ ",
|
||||||
"create.goggles.winding_machine.header": "ǝuıɥɔɐW buıpuıM",
|
"create.goggles.winding_machine.header": "ǝuıɥɔɐW buıpuıM",
|
||||||
"create.goggles.winding_machine.progress": " :ssǝɹboɹԀ",
|
"create.goggles.winding_machine.progress": " :ssǝɹboɹԀ",
|
||||||
@@ -599,13 +636,17 @@
|
|||||||
"create.multimeter.additional_values": ":sǝnןɐΛ ןɐuoıʇıppⱯ",
|
"create.multimeter.additional_values": ":sǝnןɐΛ ןɐuoıʇıppⱯ",
|
||||||
"create.multimeter.energy_stored": " :pǝɹoʇS ʎbɹǝuƎ ",
|
"create.multimeter.energy_stored": " :pǝɹoʇS ʎbɹǝuƎ ",
|
||||||
"create.multimeter.energy_usage": " :ǝbɐs∩ ʎbɹǝuƎ ",
|
"create.multimeter.energy_usage": " :ǝbɐs∩ ʎbɹǝuƎ ",
|
||||||
"create.multimeter.group": " :dnoɹ⅁ ",
|
"create.multimeter.group": "%s :dnoɹ⅁ ",
|
||||||
"create.multimeter.header": ":ɐʇɐᗡ ɹǝʇǝɯıʇןnW",
|
"create.multimeter.header": ":ɐʇɐᗡ ɹǝʇǝɯıʇןnW",
|
||||||
"create.multimeter.power_generated": " :pǝʇɐɹǝuǝ⅁ ɹǝʍoԀ ",
|
"create.multimeter.insufficient_power": "ᴚƎMOԀ ⟘H⅁∩ONƎ ⟘ON",
|
||||||
|
"create.multimeter.network.consumption": "%s :uoıʇdɯnsuoƆ ɹǝʍoԀ ʞɹoʍʇǝN",
|
||||||
|
"create.multimeter.network.generation": "%s :uoıʇɐɹǝuǝ⅁ ɹǝʍoԀ ʞɹoʍʇǝN",
|
||||||
|
"create.multimeter.power_generated": "%s :pǝʇɐɹǝuǝ⅁ ɹǝʍoԀ ",
|
||||||
"create.multimeter.power_percentage": " :ɥʇbuǝɹʇS pıɹ⅁ ",
|
"create.multimeter.power_percentage": " :ɥʇbuǝɹʇS pıɹ⅁ ",
|
||||||
"create.multimeter.power_usage": " :ǝbɐs∩ ɹǝʍoԀ ",
|
"create.multimeter.power_usage": " :ǝbɐs∩ ɹǝʍoԀ ",
|
||||||
|
"create.multimeter.separator": "----------------------------",
|
||||||
"create.multimeter.transformer_ratio": " :oıʇɐᴚ uɹn⟘ ",
|
"create.multimeter.transformer_ratio": " :oıʇɐᴚ uɹn⟘ ",
|
||||||
"create.multimeter.voltage_generated": " :pǝʇɐɹǝuǝ⅁ ǝbɐʇןoΛ ",
|
"create.multimeter.voltage_generated": "%s :pǝʇɐɹǝuǝ⅁ ǝbɐʇןoΛ ",
|
||||||
"create.network": "%1$s :ʞɹoʍʇǝN",
|
"create.network": "%1$s :ʞɹoʍʇǝN",
|
||||||
"create.oil_hammer.reserves": "%1$s :sǝʌɹǝsǝᴚ ןıO",
|
"create.oil_hammer.reserves": "%1$s :sǝʌɹǝsǝᴚ ןıO",
|
||||||
"create.pumpjack_deposit_amount": "sʇǝʞɔnᗺ %1$s",
|
"create.pumpjack_deposit_amount": "sʇǝʞɔnᗺ %1$s",
|
||||||
@@ -967,6 +1008,16 @@
|
|||||||
"item.tfmg.yellow_multimeter.tooltip.summary": "ʞɹoʍʇǝu sʇı puɐ ʞɔoןq ןɐɔıɹʇɔǝןǝ uɐ ʇnoqɐ ɐʇɐp sʍoɥS",
|
"item.tfmg.yellow_multimeter.tooltip.summary": "ʞɹoʍʇǝu sʇı puɐ ʞɔoןq ןɐɔıɹʇɔǝןǝ uɐ ʇnoqɐ ɐʇɐp sʍoɥS",
|
||||||
"item.tfmg.zinc_electrode": "ǝpoɹʇɔǝןƎ ɔuıZ",
|
"item.tfmg.zinc_electrode": "ǝpoɹʇɔǝןƎ ɔuıZ",
|
||||||
"item.tfmg.zinc_grenade": "ǝpɐuǝɹ⅁ ɔuıZ",
|
"item.tfmg.zinc_grenade": "ǝpɐuǝɹ⅁ ɔuıZ",
|
||||||
|
"tfmg.display_source.electricity.current": "ʇuǝɹɹnƆ",
|
||||||
|
"tfmg.display_source.electricity.network_consumption": "uoıʇdɯnsuoƆ ɹǝʍoԀ ʞɹoʍʇǝN",
|
||||||
|
"tfmg.display_source.electricity.network_generation": "uoıʇɐɹǝuǝ⅁ ɹǝʍoԀ ʞɹoʍʇǝN",
|
||||||
|
"tfmg.display_source.electricity.network_id": "ᗡI ʞɹoʍʇǝN",
|
||||||
|
"tfmg.display_source.electricity.network_resistance": "ǝɔuɐʇsısǝᴚ ʞɹoʍʇǝN",
|
||||||
|
"tfmg.display_source.electricity.power_generation": "uoıʇɐɹǝuǝ⅁ ɹǝʍoԀ",
|
||||||
|
"tfmg.display_source.electricity.power_usage": "ǝbɐs∩ ɹǝʍoԀ",
|
||||||
|
"tfmg.display_source.electricity.resistance": "ǝɔuɐʇsısǝᴚ",
|
||||||
|
"tfmg.display_source.electricity.voltage": "ǝbɐʇןoΛ",
|
||||||
|
"tfmg.display_source.electricity.voltage_generation": "uoıʇɐɹǝuǝ⅁ ǝbɐʇןoΛ",
|
||||||
"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ɐɹ⟘",
|
||||||
|
|||||||
@@ -512,6 +512,34 @@
|
|||||||
"create.distillation_output.mode.keep_fluid": "Stop Distillation Process",
|
"create.distillation_output.mode.keep_fluid": "Stop Distillation Process",
|
||||||
"create.distillation_output.mode.void_when_full": "Void Excess Fluid",
|
"create.distillation_output.mode.void_when_full": "Void Excess Fluid",
|
||||||
"create.distillation_output.when_tank_is_full": "When Internal Tank is Full",
|
"create.distillation_output.when_tank_is_full": "When Internal Tank is Full",
|
||||||
|
"create.electricity.capacity": "Capacity: %s",
|
||||||
|
"create.electricity.charging_rate": "Charging Rate: %s",
|
||||||
|
"create.electricity.max_capacity": "Max Capacity: %s",
|
||||||
|
"create.engine.controller.header": "Engine Controller",
|
||||||
|
"create.engine.efficiency": "Efficiency: %s",
|
||||||
|
"create.engine.fuel_consumption": "Fuel Consumption: %s",
|
||||||
|
"create.engine.injection_rate": "Injection Rate: %s",
|
||||||
|
"create.engine.length": "Length: %s",
|
||||||
|
"create.engine.rpm": "RPM: %s",
|
||||||
|
"create.engine.shift": "Shift: %s",
|
||||||
|
"create.engine.signal": "Signal: %s",
|
||||||
|
"create.engine.speed_efficiency": "Speed Efficiency: %s",
|
||||||
|
"create.engine.torque": "Torque: %s",
|
||||||
|
"create.engine.type.boxer": "Boxer",
|
||||||
|
"create.engine.type.engine_i": "I",
|
||||||
|
"create.engine.type.engine_u": "U",
|
||||||
|
"create.engine.type.engine_v": "V",
|
||||||
|
"create.engine.type.engine_w": "W",
|
||||||
|
"create.engine.type.radial": "Radial",
|
||||||
|
"create.engine.type.turbine": "Turbine",
|
||||||
|
"create.engine.upgrade.transmission.neutral": "Neutral",
|
||||||
|
"create.engine.upgrade.transmission.reverse": "Reverse",
|
||||||
|
"create.engine.upgrade.transmission.shift_1": "1st Gear",
|
||||||
|
"create.engine.upgrade.transmission.shift_2": "2nd Gear",
|
||||||
|
"create.engine.upgrade.transmission.shift_3": "3rd Gear",
|
||||||
|
"create.engine.upgrade.transmission.shift_4": "4th Gear",
|
||||||
|
"create.engine.upgrade.transmission.shift_5": "5th Gear",
|
||||||
|
"create.engine.upgrade.transmission.shift_6": "6th Gear",
|
||||||
"create.fe": "FE: %1$s",
|
"create.fe": "FE: %1$s",
|
||||||
"create.flamethrower.fuel.amount": "%s Projectile Amount",
|
"create.flamethrower.fuel.amount": "%s Projectile Amount",
|
||||||
"create.flamethrower.fuel.capacity": "Fuel Capacity: %s",
|
"create.flamethrower.fuel.capacity": "Fuel Capacity: %s",
|
||||||
@@ -542,17 +570,17 @@
|
|||||||
"create.goggles.electric_machine.no_power": "No Power",
|
"create.goggles.electric_machine.no_power": "No Power",
|
||||||
"create.goggles.electricity.insufficient_voltage": "Insufficient Voltage",
|
"create.goggles.electricity.insufficient_voltage": "Insufficient Voltage",
|
||||||
"create.goggles.electrode_holder.min_amps": "Not Enough Current (Needs ",
|
"create.goggles.electrode_holder.min_amps": "Not Enough Current (Needs ",
|
||||||
"create.goggles.engine.cooling_fluid": "Cooling Fluid: ",
|
"create.goggles.engine.cooling_fluid": "Cooling Fluid: %s",
|
||||||
"create.goggles.engine.fuel_consumption": " Fuel Consumption:",
|
"create.goggles.engine.fuel_consumption": "Fuel Consumption: %s mB/s",
|
||||||
"create.goggles.engine.header": "Engine Info",
|
"create.goggles.engine.header": "Engine Info",
|
||||||
"create.goggles.engine.next_component": " Next Component: ",
|
"create.goggles.engine.next_component": " Next Component: ",
|
||||||
"create.goggles.engine.oil": "Oil: ",
|
"create.goggles.engine.oil": "Oil: %s",
|
||||||
"create.goggles.engine.pistons_missing": "Pistons Missing",
|
"create.goggles.engine.pistons_missing": "Pistons Missing",
|
||||||
"create.goggles.engine.rpm": " Speed: ",
|
"create.goggles.engine.rpm": "Speed: %s RPM",
|
||||||
"create.goggles.engine.signal": " Signal: ",
|
"create.goggles.engine.signal": "Signal: %s",
|
||||||
"create.goggles.engine.torque": " Torque:",
|
"create.goggles.engine.torque": "Torque: %s",
|
||||||
"create.goggles.engine.turbines_missing": "Turbines Missing",
|
"create.goggles.engine.turbines_missing": "Turbines Missing",
|
||||||
"create.goggles.engine.type": " Type: ",
|
"create.goggles.engine.type": "Type: %s",
|
||||||
"create.goggles.engine.unfinished": "Engine Unfinished",
|
"create.goggles.engine.unfinished": "Engine Unfinished",
|
||||||
"create.goggles.fluid_storage": "Fluid Storage:",
|
"create.goggles.fluid_storage": "Fluid Storage:",
|
||||||
"create.goggles.gauge.value": " Measured Voltage:",
|
"create.goggles.gauge.value": " Measured Voltage:",
|
||||||
@@ -591,6 +619,15 @@
|
|||||||
"create.goggles.vat.tfmg.graphite_electrode": " Graphite Electrode",
|
"create.goggles.vat.tfmg.graphite_electrode": " Graphite Electrode",
|
||||||
"create.goggles.vat.tfmg.mixing": " Mixer",
|
"create.goggles.vat.tfmg.mixing": " Mixer",
|
||||||
"create.goggles.voltmeter": "Voltmeter:",
|
"create.goggles.voltmeter": "Voltmeter:",
|
||||||
|
"create.goggles.voltmeter.mode.capacity": "Capacity",
|
||||||
|
"create.goggles.voltmeter.mode.current": "Current",
|
||||||
|
"create.goggles.voltmeter.mode.fallback": "Fallback",
|
||||||
|
"create.goggles.voltmeter.mode.high_voltage": "Voltage (High)",
|
||||||
|
"create.goggles.voltmeter.mode.net_power_gen": "Network Power Generation",
|
||||||
|
"create.goggles.voltmeter.mode.net_power_use": "Network Power Usage",
|
||||||
|
"create.goggles.voltmeter.mode.power": "Power",
|
||||||
|
"create.goggles.voltmeter.mode.resistance": "Resistance",
|
||||||
|
"create.goggles.voltmeter.mode.voltage": "Voltage",
|
||||||
"create.goggles.voltmeter.range": " Range: %1$s",
|
"create.goggles.voltmeter.range": " Range: %1$s",
|
||||||
"create.goggles.winding_machine.header": "Winding Machine",
|
"create.goggles.winding_machine.header": "Winding Machine",
|
||||||
"create.goggles.winding_machine.progress": "Progress: ",
|
"create.goggles.winding_machine.progress": "Progress: ",
|
||||||
@@ -599,13 +636,17 @@
|
|||||||
"create.multimeter.additional_values": "Additional Values:",
|
"create.multimeter.additional_values": "Additional Values:",
|
||||||
"create.multimeter.energy_stored": " Energy Stored: ",
|
"create.multimeter.energy_stored": " Energy Stored: ",
|
||||||
"create.multimeter.energy_usage": " Energy Usage: ",
|
"create.multimeter.energy_usage": " Energy Usage: ",
|
||||||
"create.multimeter.group": " Group: ",
|
"create.multimeter.group": " Group: %s",
|
||||||
"create.multimeter.header": "Multimeter Data:",
|
"create.multimeter.header": "Multimeter Data:",
|
||||||
"create.multimeter.power_generated": " Power Generated: ",
|
"create.multimeter.insufficient_power": "NOT ENOUGHT POWER",
|
||||||
|
"create.multimeter.network.consumption": "Network Power Consumption: %s",
|
||||||
|
"create.multimeter.network.generation": "Network Power Generation: %s",
|
||||||
|
"create.multimeter.power_generated": " Power Generated: %s",
|
||||||
"create.multimeter.power_percentage": " Grid Strength: ",
|
"create.multimeter.power_percentage": " Grid Strength: ",
|
||||||
"create.multimeter.power_usage": " Power Usage: ",
|
"create.multimeter.power_usage": " Power Usage: ",
|
||||||
|
"create.multimeter.separator": "----------------------------",
|
||||||
"create.multimeter.transformer_ratio": " Turn Ratio: ",
|
"create.multimeter.transformer_ratio": " Turn Ratio: ",
|
||||||
"create.multimeter.voltage_generated": " Voltage Generated: ",
|
"create.multimeter.voltage_generated": " Voltage Generated: %s",
|
||||||
"create.network": "Network: %1$s",
|
"create.network": "Network: %1$s",
|
||||||
"create.oil_hammer.reserves": "Oil Reserves: %1$s",
|
"create.oil_hammer.reserves": "Oil Reserves: %1$s",
|
||||||
"create.pumpjack_deposit_amount": "%1$s Buckets",
|
"create.pumpjack_deposit_amount": "%1$s Buckets",
|
||||||
@@ -967,6 +1008,16 @@
|
|||||||
"item.tfmg.yellow_multimeter.tooltip.summary": "Shows data about an electrical block and its network",
|
"item.tfmg.yellow_multimeter.tooltip.summary": "Shows data about an electrical block and its network",
|
||||||
"item.tfmg.zinc_electrode": "Zinc Electrode",
|
"item.tfmg.zinc_electrode": "Zinc Electrode",
|
||||||
"item.tfmg.zinc_grenade": "Zinc Grenade",
|
"item.tfmg.zinc_grenade": "Zinc Grenade",
|
||||||
|
"tfmg.display_source.electricity.current": "Current",
|
||||||
|
"tfmg.display_source.electricity.network_consumption": "Network Power Consumption",
|
||||||
|
"tfmg.display_source.electricity.network_generation": "Network Power Generation",
|
||||||
|
"tfmg.display_source.electricity.network_id": "Network ID",
|
||||||
|
"tfmg.display_source.electricity.network_resistance": "Network Resistance",
|
||||||
|
"tfmg.display_source.electricity.power_generation": "Power Generation",
|
||||||
|
"tfmg.display_source.electricity.power_usage": "Power Usage",
|
||||||
|
"tfmg.display_source.electricity.resistance": "Resistance",
|
||||||
|
"tfmg.display_source.electricity.voltage": "Voltage",
|
||||||
|
"tfmg.display_source.electricity.voltage_generation": "Voltage Generation",
|
||||||
"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",
|
||||||
|
|||||||
@@ -57,6 +57,7 @@ public class TFMG {
|
|||||||
TFMGSoundEvents.prepare();
|
TFMGSoundEvents.prepare();
|
||||||
TFMGElectrodes.init();
|
TFMGElectrodes.init();
|
||||||
TFMGCableTypes.init();
|
TFMGCableTypes.init();
|
||||||
|
TFMGDisplaySources.init();
|
||||||
TFMGCreativeTabs.register(modEventBus);
|
TFMGCreativeTabs.register(modEventBus);
|
||||||
TFMGBlocks.init();
|
TFMGBlocks.init();
|
||||||
TFMGPipes.init();
|
TFMGPipes.init();
|
||||||
|
|||||||
@@ -196,22 +196,20 @@ public interface IElectric {
|
|||||||
.forGoggles(tooltip);
|
.forGoggles(tooltip);
|
||||||
|
|
||||||
if (getData().notEnoughtPower) {
|
if (getData().notEnoughtPower) {
|
||||||
CreateLang.text("NOT ENOUGHT POWER")
|
CreateLang.translate("multimeter.insufficient_power")
|
||||||
.color(Color.RED)
|
.color(Color.RED)
|
||||||
.forGoggles(tooltip, 1);
|
.forGoggles(tooltip, 1);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (voltageGeneration() > 0) {
|
if (voltageGeneration() > 0) {
|
||||||
CreateLang.translate("multimeter.power_generated")
|
CreateLang.translate("multimeter.power_generated", TFMGUtils.formatUnits(powerGeneration(), "W"))
|
||||||
.add(Component.literal(TFMGUtils.formatUnits(powerGeneration(), "W")))
|
|
||||||
.color(0x852e4a)
|
.color(0x852e4a)
|
||||||
.forGoggles(tooltip, 1);
|
.forGoggles(tooltip, 1);
|
||||||
CreateLang.translate("multimeter.voltage_generated")
|
CreateLang.translate("multimeter.voltage_generated", TFMGUtils.formatUnits(voltageGeneration(), "V"))
|
||||||
.add(Component.literal(TFMGUtils.formatUnits(voltageGeneration(), "V")))
|
|
||||||
.color(0x127799)
|
.color(0x127799)
|
||||||
.forGoggles(tooltip, 1);
|
.forGoggles(tooltip, 1);
|
||||||
CreateLang.text("----------------------------")
|
CreateLang.translate("multimeter.separator")
|
||||||
.style(ChatFormatting.WHITE)
|
.style(ChatFormatting.WHITE)
|
||||||
.forGoggles(tooltip);
|
.forGoggles(tooltip);
|
||||||
}
|
}
|
||||||
@@ -229,24 +227,23 @@ public interface IElectric {
|
|||||||
.color(0xcc4b74)
|
.color(0xcc4b74)
|
||||||
.forGoggles(tooltip, 1);
|
.forGoggles(tooltip, 1);
|
||||||
if (getData().group.id != -1) {
|
if (getData().group.id != -1) {
|
||||||
CreateLang.text("----------------------------")
|
CreateLang.translate("multimeter.separator")
|
||||||
.style(ChatFormatting.WHITE)
|
.style(ChatFormatting.WHITE)
|
||||||
.forGoggles(tooltip);
|
.forGoggles(tooltip);
|
||||||
CreateLang.translate("multimeter.group")
|
CreateLang.translate("multimeter.group", CreateLang.number(getData().group.id))
|
||||||
.add(CreateLang.number(getData().group.id))
|
|
||||||
.color(0xd8db27)
|
.color(0xd8db27)
|
||||||
.forGoggles(tooltip, 1);
|
.forGoggles(tooltip, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (isPlayerSneaking) {
|
if (isPlayerSneaking) {
|
||||||
CreateLang.text("----------------------------")
|
CreateLang.translate("multimeter.separator")
|
||||||
.style(ChatFormatting.WHITE)
|
.style(ChatFormatting.WHITE)
|
||||||
.forGoggles(tooltip);
|
.forGoggles(tooltip);
|
||||||
CreateLang.text("Network Power Generation: " + TFMGUtils.formatUnits(getNetworkPowerGeneration(), "W"))
|
CreateLang.translate("multimeter.network.generation", TFMGUtils.formatUnits(getNetworkPowerGeneration(), "W"))
|
||||||
.color(0xcc4b74)
|
.color(0xcc4b74)
|
||||||
.forGoggles(tooltip, 1);
|
.forGoggles(tooltip, 1);
|
||||||
|
|
||||||
CreateLang.text("Network Power Consumption: " + TFMGUtils.formatUnits(getNetworkPowerUsage(), "W"))
|
CreateLang.translate("multimeter.network.consumption", TFMGUtils.formatUnits(getNetworkPowerUsage(), "W"))
|
||||||
.color(0xcc4b74)
|
.color(0xcc4b74)
|
||||||
.forGoggles(tooltip, 1);
|
.forGoggles(tooltip, 1);
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,42 @@
|
|||||||
|
package com.drmangotea.tfmg.content.electricity.display_link;
|
||||||
|
|
||||||
|
import com.drmangotea.tfmg.base.TFMGUtils;
|
||||||
|
import com.drmangotea.tfmg.content.electricity.base.IElectric;
|
||||||
|
import com.drmangotea.tfmg.content.electricity.utilities.voltage_observer.ObservedElectricBehaviour;
|
||||||
|
import com.simibubi.create.content.redstone.displayLink.DisplayLinkContext;
|
||||||
|
import com.simibubi.create.content.redstone.displayLink.source.SingleLineDisplaySource;
|
||||||
|
import com.simibubi.create.content.redstone.displayLink.target.DisplayTargetStats;
|
||||||
|
import com.simibubi.create.foundation.blockEntity.SmartBlockEntity;
|
||||||
|
import net.minecraft.network.chat.Component;
|
||||||
|
import net.minecraft.network.chat.MutableComponent;
|
||||||
|
import net.minecraft.world.level.block.entity.BlockEntity;
|
||||||
|
|
||||||
|
public class CurrentDisplaySource extends SingleLineDisplaySource {
|
||||||
|
@Override
|
||||||
|
protected MutableComponent provideLine(DisplayLinkContext context, DisplayTargetStats stats) {
|
||||||
|
BlockEntity sourceBE = context.getSourceBlockEntity();
|
||||||
|
if (!(sourceBE instanceof SmartBlockEntity smart))
|
||||||
|
return EMPTY_LINE;
|
||||||
|
if (!(smart instanceof IElectric electric))
|
||||||
|
return EMPTY_LINE;
|
||||||
|
|
||||||
|
float current = electric.getCurrent();
|
||||||
|
|
||||||
|
if (smart.getBehaviour(ObservedElectricBehaviour.TYPE) != null) {
|
||||||
|
IElectric observed = smart.getBehaviour(ObservedElectricBehaviour.TYPE).getObservedElectric();
|
||||||
|
if (observed != null) current = observed.getCurrent();
|
||||||
|
}
|
||||||
|
|
||||||
|
return Component.literal(TFMGUtils.formatUnits(current, "A"));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected String getTranslationKey() {
|
||||||
|
return "electricity.current";
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected boolean allowsLabeling(DisplayLinkContext context) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,42 @@
|
|||||||
|
package com.drmangotea.tfmg.content.electricity.display_link;
|
||||||
|
|
||||||
|
import com.drmangotea.tfmg.base.TFMGUtils;
|
||||||
|
import com.drmangotea.tfmg.content.electricity.base.IElectric;
|
||||||
|
import com.drmangotea.tfmg.content.electricity.utilities.voltage_observer.ObservedElectricBehaviour;
|
||||||
|
import com.simibubi.create.content.redstone.displayLink.DisplayLinkContext;
|
||||||
|
import com.simibubi.create.content.redstone.displayLink.source.SingleLineDisplaySource;
|
||||||
|
import com.simibubi.create.content.redstone.displayLink.target.DisplayTargetStats;
|
||||||
|
import com.simibubi.create.foundation.blockEntity.SmartBlockEntity;
|
||||||
|
import net.minecraft.network.chat.Component;
|
||||||
|
import net.minecraft.network.chat.MutableComponent;
|
||||||
|
import net.minecraft.world.level.block.entity.BlockEntity;
|
||||||
|
|
||||||
|
public class PowerGenerationDisplaySource extends SingleLineDisplaySource {
|
||||||
|
@Override
|
||||||
|
protected MutableComponent provideLine(DisplayLinkContext context, DisplayTargetStats stats) {
|
||||||
|
BlockEntity sourceBE = context.getSourceBlockEntity();
|
||||||
|
if (!(sourceBE instanceof SmartBlockEntity smart))
|
||||||
|
return EMPTY_LINE;
|
||||||
|
if (!(smart instanceof IElectric electric))
|
||||||
|
return EMPTY_LINE;
|
||||||
|
|
||||||
|
int powerGen = electric.powerGeneration();
|
||||||
|
|
||||||
|
if (smart.getBehaviour(ObservedElectricBehaviour.TYPE) != null) {
|
||||||
|
IElectric observed = smart.getBehaviour(ObservedElectricBehaviour.TYPE).getObservedElectric();
|
||||||
|
if (observed != null) powerGen = observed.powerGeneration();
|
||||||
|
}
|
||||||
|
|
||||||
|
return Component.literal(TFMGUtils.formatUnits(powerGen, "W"));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected String getTranslationKey() {
|
||||||
|
return "electricity.power_generation";
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected boolean allowsLabeling(DisplayLinkContext context) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,42 @@
|
|||||||
|
package com.drmangotea.tfmg.content.electricity.display_link;
|
||||||
|
|
||||||
|
import com.drmangotea.tfmg.base.TFMGUtils;
|
||||||
|
import com.drmangotea.tfmg.content.electricity.base.IElectric;
|
||||||
|
import com.drmangotea.tfmg.content.electricity.utilities.voltage_observer.ObservedElectricBehaviour;
|
||||||
|
import com.simibubi.create.content.redstone.displayLink.DisplayLinkContext;
|
||||||
|
import com.simibubi.create.content.redstone.displayLink.source.SingleLineDisplaySource;
|
||||||
|
import com.simibubi.create.content.redstone.displayLink.target.DisplayTargetStats;
|
||||||
|
import com.simibubi.create.foundation.blockEntity.SmartBlockEntity;
|
||||||
|
import net.minecraft.network.chat.Component;
|
||||||
|
import net.minecraft.network.chat.MutableComponent;
|
||||||
|
import net.minecraft.world.level.block.entity.BlockEntity;
|
||||||
|
|
||||||
|
public class PowerUsageDisplaySource extends SingleLineDisplaySource {
|
||||||
|
@Override
|
||||||
|
protected MutableComponent provideLine(DisplayLinkContext context, DisplayTargetStats stats) {
|
||||||
|
BlockEntity sourceBE = context.getSourceBlockEntity();
|
||||||
|
if (!(sourceBE instanceof SmartBlockEntity smart))
|
||||||
|
return EMPTY_LINE;
|
||||||
|
if (!(smart instanceof IElectric electric))
|
||||||
|
return EMPTY_LINE;
|
||||||
|
|
||||||
|
float powerUsage = electric.getPowerUsage();
|
||||||
|
|
||||||
|
if (smart.getBehaviour(ObservedElectricBehaviour.TYPE) != null) {
|
||||||
|
IElectric observed = smart.getBehaviour(ObservedElectricBehaviour.TYPE).getObservedElectric();
|
||||||
|
if (observed != null) powerUsage = observed.getPowerUsage();
|
||||||
|
}
|
||||||
|
|
||||||
|
return Component.literal(TFMGUtils.formatUnits(powerUsage, "W"));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected String getTranslationKey() {
|
||||||
|
return "electricity.power_usage";
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected boolean allowsLabeling(DisplayLinkContext context) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,42 @@
|
|||||||
|
package com.drmangotea.tfmg.content.electricity.display_link;
|
||||||
|
|
||||||
|
import com.drmangotea.tfmg.base.TFMGUtils;
|
||||||
|
import com.drmangotea.tfmg.content.electricity.base.IElectric;
|
||||||
|
import com.drmangotea.tfmg.content.electricity.utilities.voltage_observer.ObservedElectricBehaviour;
|
||||||
|
import com.simibubi.create.content.redstone.displayLink.DisplayLinkContext;
|
||||||
|
import com.simibubi.create.content.redstone.displayLink.source.SingleLineDisplaySource;
|
||||||
|
import com.simibubi.create.content.redstone.displayLink.target.DisplayTargetStats;
|
||||||
|
import com.simibubi.create.foundation.blockEntity.SmartBlockEntity;
|
||||||
|
import net.minecraft.network.chat.Component;
|
||||||
|
import net.minecraft.network.chat.MutableComponent;
|
||||||
|
import net.minecraft.world.level.block.entity.BlockEntity;
|
||||||
|
|
||||||
|
public class ResistanceDisplaySource extends SingleLineDisplaySource {
|
||||||
|
@Override
|
||||||
|
protected MutableComponent provideLine(DisplayLinkContext context, DisplayTargetStats stats) {
|
||||||
|
BlockEntity sourceBE = context.getSourceBlockEntity();
|
||||||
|
if (!(sourceBE instanceof SmartBlockEntity smart))
|
||||||
|
return EMPTY_LINE;
|
||||||
|
if (!(smart instanceof IElectric electric))
|
||||||
|
return EMPTY_LINE;
|
||||||
|
|
||||||
|
float resistance = electric.voltageGeneration() > 0 ? electric.getGeneratorResistance() : electric.resistance();
|
||||||
|
|
||||||
|
if (smart.getBehaviour(ObservedElectricBehaviour.TYPE) != null) {
|
||||||
|
IElectric observed = smart.getBehaviour(ObservedElectricBehaviour.TYPE).getObservedElectric();
|
||||||
|
if (observed != null) resistance = observed.voltageGeneration() > 0 ? observed.getGeneratorResistance() : observed.resistance();
|
||||||
|
}
|
||||||
|
|
||||||
|
return Component.literal(TFMGUtils.formatUnits(resistance, "Ω"));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected String getTranslationKey() {
|
||||||
|
return "electricity.resistance";
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected boolean allowsLabeling(DisplayLinkContext context) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,42 @@
|
|||||||
|
package com.drmangotea.tfmg.content.electricity.display_link;
|
||||||
|
|
||||||
|
import com.drmangotea.tfmg.base.TFMGUtils;
|
||||||
|
import com.drmangotea.tfmg.content.electricity.base.IElectric;
|
||||||
|
import com.drmangotea.tfmg.content.electricity.utilities.voltage_observer.ObservedElectricBehaviour;
|
||||||
|
import com.simibubi.create.content.redstone.displayLink.DisplayLinkContext;
|
||||||
|
import com.simibubi.create.content.redstone.displayLink.source.SingleLineDisplaySource;
|
||||||
|
import com.simibubi.create.content.redstone.displayLink.target.DisplayTargetStats;
|
||||||
|
import com.simibubi.create.foundation.blockEntity.SmartBlockEntity;
|
||||||
|
import net.minecraft.network.chat.Component;
|
||||||
|
import net.minecraft.network.chat.MutableComponent;
|
||||||
|
import net.minecraft.world.level.block.entity.BlockEntity;
|
||||||
|
|
||||||
|
public class VoltageDisplaySource extends SingleLineDisplaySource {
|
||||||
|
@Override
|
||||||
|
protected MutableComponent provideLine(DisplayLinkContext context, DisplayTargetStats stats) {
|
||||||
|
BlockEntity sourceBE = context.getSourceBlockEntity();
|
||||||
|
if (!(sourceBE instanceof SmartBlockEntity smart))
|
||||||
|
return EMPTY_LINE;
|
||||||
|
if (!(smart instanceof IElectric electric))
|
||||||
|
return EMPTY_LINE;
|
||||||
|
|
||||||
|
int voltage = electric.getData().getVoltage();
|
||||||
|
|
||||||
|
if (smart.getBehaviour(ObservedElectricBehaviour.TYPE) != null) {
|
||||||
|
IElectric observed = smart.getBehaviour(ObservedElectricBehaviour.TYPE).getObservedElectric();
|
||||||
|
if (observed != null) voltage = observed.getData().getVoltage();
|
||||||
|
}
|
||||||
|
|
||||||
|
return Component.literal(TFMGUtils.formatUnits(voltage, "V"));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected String getTranslationKey() {
|
||||||
|
return "electricity.voltage";
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected boolean allowsLabeling(DisplayLinkContext context) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,42 @@
|
|||||||
|
package com.drmangotea.tfmg.content.electricity.display_link;
|
||||||
|
|
||||||
|
import com.drmangotea.tfmg.base.TFMGUtils;
|
||||||
|
import com.drmangotea.tfmg.content.electricity.base.IElectric;
|
||||||
|
import com.drmangotea.tfmg.content.electricity.utilities.voltage_observer.ObservedElectricBehaviour;
|
||||||
|
import com.simibubi.create.content.redstone.displayLink.DisplayLinkContext;
|
||||||
|
import com.simibubi.create.content.redstone.displayLink.source.SingleLineDisplaySource;
|
||||||
|
import com.simibubi.create.content.redstone.displayLink.target.DisplayTargetStats;
|
||||||
|
import com.simibubi.create.foundation.blockEntity.SmartBlockEntity;
|
||||||
|
import net.minecraft.network.chat.Component;
|
||||||
|
import net.minecraft.network.chat.MutableComponent;
|
||||||
|
import net.minecraft.world.level.block.entity.BlockEntity;
|
||||||
|
|
||||||
|
public class VoltageGenerationDisplaySource extends SingleLineDisplaySource {
|
||||||
|
@Override
|
||||||
|
protected MutableComponent provideLine(DisplayLinkContext context, DisplayTargetStats stats) {
|
||||||
|
BlockEntity sourceBE = context.getSourceBlockEntity();
|
||||||
|
if (!(sourceBE instanceof SmartBlockEntity smart))
|
||||||
|
return EMPTY_LINE;
|
||||||
|
if (!(smart instanceof IElectric electric))
|
||||||
|
return EMPTY_LINE;
|
||||||
|
|
||||||
|
int voltageGen = electric.voltageGeneration();
|
||||||
|
|
||||||
|
if (smart.getBehaviour(ObservedElectricBehaviour.TYPE) != null) {
|
||||||
|
IElectric observed = smart.getBehaviour(ObservedElectricBehaviour.TYPE).getObservedElectric();
|
||||||
|
if (observed != null) voltageGen = observed.voltageGeneration();
|
||||||
|
}
|
||||||
|
|
||||||
|
return Component.literal(TFMGUtils.formatUnits(voltageGen, "V"));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected String getTranslationKey() {
|
||||||
|
return "electricity.voltage_generation";
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected boolean allowsLabeling(DisplayLinkContext context) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,43 @@
|
|||||||
|
package com.drmangotea.tfmg.content.electricity.display_link.network;
|
||||||
|
|
||||||
|
import com.drmangotea.tfmg.base.TFMGUtils;
|
||||||
|
import com.drmangotea.tfmg.content.electricity.base.IElectric;
|
||||||
|
import com.drmangotea.tfmg.content.electricity.utilities.voltage_observer.ObservedElectricBehaviour;
|
||||||
|
import com.simibubi.create.content.redstone.displayLink.DisplayLinkContext;
|
||||||
|
import com.simibubi.create.content.redstone.displayLink.source.SingleLineDisplaySource;
|
||||||
|
import com.simibubi.create.content.redstone.displayLink.target.DisplayTargetStats;
|
||||||
|
import com.simibubi.create.foundation.blockEntity.SmartBlockEntity;
|
||||||
|
import com.simibubi.create.foundation.utility.CreateLang;
|
||||||
|
import net.minecraft.network.chat.Component;
|
||||||
|
import net.minecraft.network.chat.MutableComponent;
|
||||||
|
import net.minecraft.world.level.block.entity.BlockEntity;
|
||||||
|
|
||||||
|
public class NetConsumptionDisplaySource extends SingleLineDisplaySource {
|
||||||
|
@Override
|
||||||
|
protected MutableComponent provideLine(DisplayLinkContext context, DisplayTargetStats stats) {
|
||||||
|
BlockEntity sourceBE = context.getSourceBlockEntity();
|
||||||
|
if (!(sourceBE instanceof SmartBlockEntity smart))
|
||||||
|
return EMPTY_LINE;
|
||||||
|
if (!(smart instanceof IElectric electric))
|
||||||
|
return EMPTY_LINE;
|
||||||
|
|
||||||
|
int netUsage = electric.getNetworkPowerUsage();
|
||||||
|
|
||||||
|
if (smart.getBehaviour(ObservedElectricBehaviour.TYPE) != null) {
|
||||||
|
IElectric observed = smart.getBehaviour(ObservedElectricBehaviour.TYPE).getObservedElectric();
|
||||||
|
if (observed != null) netUsage = observed.getNetworkPowerUsage();
|
||||||
|
}
|
||||||
|
|
||||||
|
return Component.literal(TFMGUtils.formatUnits(netUsage, "W"));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected String getTranslationKey() {
|
||||||
|
return "electricity.network_consumption";
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected boolean allowsLabeling(DisplayLinkContext context) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,43 @@
|
|||||||
|
package com.drmangotea.tfmg.content.electricity.display_link.network;
|
||||||
|
|
||||||
|
import com.drmangotea.tfmg.base.TFMGUtils;
|
||||||
|
import com.drmangotea.tfmg.content.electricity.base.IElectric;
|
||||||
|
import com.drmangotea.tfmg.content.electricity.utilities.voltage_observer.ObservedElectricBehaviour;
|
||||||
|
import com.simibubi.create.content.redstone.displayLink.DisplayLinkContext;
|
||||||
|
import com.simibubi.create.content.redstone.displayLink.source.SingleLineDisplaySource;
|
||||||
|
import com.simibubi.create.content.redstone.displayLink.target.DisplayTargetStats;
|
||||||
|
import com.simibubi.create.foundation.blockEntity.SmartBlockEntity;
|
||||||
|
import com.simibubi.create.foundation.utility.CreateLang;
|
||||||
|
import net.minecraft.network.chat.Component;
|
||||||
|
import net.minecraft.network.chat.MutableComponent;
|
||||||
|
import net.minecraft.world.level.block.entity.BlockEntity;
|
||||||
|
|
||||||
|
public class NetGenerationDisplaySource extends SingleLineDisplaySource {
|
||||||
|
@Override
|
||||||
|
protected MutableComponent provideLine(DisplayLinkContext context, DisplayTargetStats stats) {
|
||||||
|
BlockEntity sourceBE = context.getSourceBlockEntity();
|
||||||
|
if (!(sourceBE instanceof SmartBlockEntity smart))
|
||||||
|
return EMPTY_LINE;
|
||||||
|
if (!(smart instanceof IElectric electric))
|
||||||
|
return EMPTY_LINE;
|
||||||
|
|
||||||
|
int netGeneration = electric.getNetworkPowerGeneration();
|
||||||
|
|
||||||
|
if (smart.getBehaviour(ObservedElectricBehaviour.TYPE) != null) {
|
||||||
|
IElectric observed = smart.getBehaviour(ObservedElectricBehaviour.TYPE).getObservedElectric();
|
||||||
|
if (observed != null) netGeneration = observed.getNetworkPowerGeneration();
|
||||||
|
}
|
||||||
|
|
||||||
|
return Component.literal(TFMGUtils.formatUnits(netGeneration, "W"));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected String getTranslationKey() {
|
||||||
|
return "electricity.network_generation";
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected boolean allowsLabeling(DisplayLinkContext context) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,43 @@
|
|||||||
|
package com.drmangotea.tfmg.content.electricity.display_link.network;
|
||||||
|
|
||||||
|
import com.drmangotea.tfmg.content.electricity.base.IElectric;
|
||||||
|
import com.drmangotea.tfmg.content.electricity.utilities.voltage_observer.ObservedElectricBehaviour;
|
||||||
|
import com.simibubi.create.content.redstone.displayLink.DisplayLinkContext;
|
||||||
|
import com.simibubi.create.content.redstone.displayLink.source.SingleLineDisplaySource;
|
||||||
|
import com.simibubi.create.content.redstone.displayLink.target.DisplayTargetStats;
|
||||||
|
import com.simibubi.create.foundation.blockEntity.SmartBlockEntity;
|
||||||
|
import com.simibubi.create.foundation.utility.CreateLang;
|
||||||
|
import net.minecraft.network.chat.MutableComponent;
|
||||||
|
import net.minecraft.world.level.block.entity.BlockEntity;
|
||||||
|
|
||||||
|
public class NetIdDisplaySource extends SingleLineDisplaySource {
|
||||||
|
@Override
|
||||||
|
protected MutableComponent provideLine(DisplayLinkContext context, DisplayTargetStats stats) {
|
||||||
|
BlockEntity sourceBE = context.getSourceBlockEntity();
|
||||||
|
if (!(sourceBE instanceof SmartBlockEntity smart))
|
||||||
|
return EMPTY_LINE;
|
||||||
|
if (!(smart instanceof IElectric electric))
|
||||||
|
return EMPTY_LINE;
|
||||||
|
|
||||||
|
int id = electric.getData().group.id;
|
||||||
|
|
||||||
|
if (smart.getBehaviour(ObservedElectricBehaviour.TYPE) != null) {
|
||||||
|
IElectric observed = smart.getBehaviour(ObservedElectricBehaviour.TYPE).getObservedElectric();
|
||||||
|
if (observed != null) id = observed.getData().group.id;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (id == -1) return EMPTY_LINE;
|
||||||
|
|
||||||
|
return CreateLang.number(id).component();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected String getTranslationKey() {
|
||||||
|
return "electricity.network_id";
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected boolean allowsLabeling(DisplayLinkContext context) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,42 @@
|
|||||||
|
package com.drmangotea.tfmg.content.electricity.display_link.network;
|
||||||
|
|
||||||
|
import com.drmangotea.tfmg.base.TFMGUtils;
|
||||||
|
import com.drmangotea.tfmg.content.electricity.base.IElectric;
|
||||||
|
import com.drmangotea.tfmg.content.electricity.utilities.voltage_observer.ObservedElectricBehaviour;
|
||||||
|
import com.simibubi.create.content.redstone.displayLink.DisplayLinkContext;
|
||||||
|
import com.simibubi.create.content.redstone.displayLink.source.SingleLineDisplaySource;
|
||||||
|
import com.simibubi.create.content.redstone.displayLink.target.DisplayTargetStats;
|
||||||
|
import com.simibubi.create.foundation.blockEntity.SmartBlockEntity;
|
||||||
|
import net.minecraft.network.chat.Component;
|
||||||
|
import net.minecraft.network.chat.MutableComponent;
|
||||||
|
import net.minecraft.world.level.block.entity.BlockEntity;
|
||||||
|
|
||||||
|
public class NetResistanceDisplaySource extends SingleLineDisplaySource {
|
||||||
|
@Override
|
||||||
|
protected MutableComponent provideLine(DisplayLinkContext context, DisplayTargetStats stats) {
|
||||||
|
BlockEntity sourceBE = context.getSourceBlockEntity();
|
||||||
|
if (!(sourceBE instanceof SmartBlockEntity smart))
|
||||||
|
return EMPTY_LINE;
|
||||||
|
if (!(smart instanceof IElectric electric))
|
||||||
|
return EMPTY_LINE;
|
||||||
|
|
||||||
|
int netResistance = electric.getNetworkResistance();
|
||||||
|
|
||||||
|
if (smart.getBehaviour(ObservedElectricBehaviour.TYPE) != null) {
|
||||||
|
IElectric observed = smart.getBehaviour(ObservedElectricBehaviour.TYPE).getObservedElectric();
|
||||||
|
if (observed != null) netResistance = observed.getNetworkResistance();
|
||||||
|
}
|
||||||
|
|
||||||
|
return Component.literal(TFMGUtils.formatUnits(netResistance, "Ω"));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected String getTranslationKey() {
|
||||||
|
return "electricity.network_resistance";
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected boolean allowsLabeling(DisplayLinkContext context) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -99,7 +99,7 @@ public class VoltMeterBlockEntity extends SmartBlockEntity implements IHaveGoggl
|
|||||||
@SuppressWarnings("removal")
|
@SuppressWarnings("removal")
|
||||||
public boolean addToGoggleTooltip(List<Component> tooltip, boolean isPlayerSneaking) {
|
public boolean addToGoggleTooltip(List<Component> tooltip, boolean isPlayerSneaking) {
|
||||||
|
|
||||||
CreateLang.text(mode.displayName)
|
CreateLang.translate(mode.langKey)
|
||||||
.style(ChatFormatting.DARK_GRAY)
|
.style(ChatFormatting.DARK_GRAY)
|
||||||
.forGoggles(tooltip, 1);
|
.forGoggles(tooltip, 1);
|
||||||
|
|
||||||
@@ -116,26 +116,25 @@ public class VoltMeterBlockEntity extends SmartBlockEntity implements IHaveGoggl
|
|||||||
|
|
||||||
public enum MeasureMode {
|
public enum MeasureMode {
|
||||||
|
|
||||||
VOLTAGE("Voltage", "V", 500),
|
VOLTAGE("V", 500),
|
||||||
HIGH_VOLTAGE("Voltage (High)", "V", 10000),
|
HIGH_VOLTAGE("V", 10000),
|
||||||
CURRENT("Current", "A", 16),
|
CURRENT("A", 16),
|
||||||
RESISTANCE("Resistance", "Ω", 500),
|
RESISTANCE("Ω", 500),
|
||||||
POWER("Power", "W", 5000),
|
POWER("W", 5000),
|
||||||
NETWORK_POWER_USAGE("Network Power Usage", "W", 50000),
|
NETWORK_POWER_USAGE("W", 50000),
|
||||||
NETWORK_POWER_GENERATION("Network Power Generation", "W", 50000),
|
NETWORK_POWER_GENERATION("W", 50000),
|
||||||
CAPACITY("Capacity", "Fe", 300000),
|
CAPACITY("Fe", 300000),
|
||||||
FALLBACK("fallback", "", 0),
|
FALLBACK("", 0),
|
||||||
|
|
||||||
|
|
||||||
;
|
;
|
||||||
public final String displayName;
|
|
||||||
public final String unit;
|
public final String unit;
|
||||||
public final int defaultRange;
|
public final int defaultRange;
|
||||||
|
public final String langKey;
|
||||||
|
|
||||||
MeasureMode(String displayName, String unit, int defaultRange) {
|
MeasureMode(String unit, int defaultRange) {
|
||||||
this.unit = unit;
|
this.unit = unit;
|
||||||
this.displayName = displayName;
|
|
||||||
this.defaultRange = defaultRange;
|
this.defaultRange = defaultRange;
|
||||||
|
this.langKey = "goggles.voltmeter.mode." + this.name().toLowerCase();
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -89,26 +89,18 @@ public class AccumulatorBlockEntity extends ElectricBlockEntity {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean makeMultimeterTooltip(List<Component> tooltip, boolean isPlayerSneaking) {
|
public boolean makeMultimeterTooltip(List<Component> tooltip, boolean isPlayerSneaking) {
|
||||||
|
|
||||||
if (!isController())
|
if (!isController())
|
||||||
if (level.getBlockEntity(controller) instanceof AccumulatorBlockEntity be)
|
if (level.getBlockEntity(controller) instanceof AccumulatorBlockEntity be)
|
||||||
return be.makeMultimeterTooltip(tooltip, isPlayerSneaking);
|
return be.makeMultimeterTooltip(tooltip, isPlayerSneaking);
|
||||||
|
|
||||||
|
|
||||||
super.makeMultimeterTooltip(tooltip, isPlayerSneaking);
|
super.makeMultimeterTooltip(tooltip, isPlayerSneaking);
|
||||||
|
|
||||||
|
CreateLang.translate("electricity.capacity", Component.literal(TFMGUtils.formatUnits(energy.getEnergyStored(), "FE")))
|
||||||
CreateLang.text("Capacity ")
|
|
||||||
.add(Component.literal(TFMGUtils.formatUnits(energy.getEnergyStored(), "FE")))
|
|
||||||
.color(0x127799)
|
.color(0x127799)
|
||||||
.forGoggles(tooltip, 1);
|
.forGoggles(tooltip, 1);
|
||||||
|
CreateLang.translate("electricity.charging_rate", CreateLang.number(getChargingRate()))
|
||||||
CreateLang.text("Charging Rate ")
|
|
||||||
.add(CreateLang.number(getChargingRate()))
|
|
||||||
.color(0x127799)
|
.color(0x127799)
|
||||||
.forGoggles(tooltip, 1);
|
.forGoggles(tooltip, 1);
|
||||||
CreateLang.text("Max Capacity ")
|
CreateLang.translate("electricity.max_capacity", CreateLang.number(getMaxCapacity()))
|
||||||
.add(CreateLang.number(getMaxCapacity()))
|
|
||||||
.color(0x127799)
|
.color(0x127799)
|
||||||
.forGoggles(tooltip, 1);
|
.forGoggles(tooltip, 1);
|
||||||
|
|
||||||
|
|||||||
@@ -179,21 +179,15 @@ public class ConverterBlockEntity extends ElectricBlockEntity {
|
|||||||
}
|
}
|
||||||
@Override
|
@Override
|
||||||
public boolean makeMultimeterTooltip(List<Component> tooltip, boolean isPlayerSneaking) {
|
public boolean makeMultimeterTooltip(List<Component> tooltip, boolean isPlayerSneaking) {
|
||||||
|
|
||||||
super.makeMultimeterTooltip(tooltip, isPlayerSneaking);
|
super.makeMultimeterTooltip(tooltip, isPlayerSneaking);
|
||||||
|
|
||||||
|
CreateLang.translate("electricity.capacity", Component.literal(TFMGUtils.formatUnits(energy.getEnergyStored(), "FE")))
|
||||||
CreateLang.text("Capacity ")
|
|
||||||
.add(Component.literal(TFMGUtils.formatUnits(energy.getEnergyStored(), "FE")))
|
|
||||||
.color(0x127799)
|
.color(0x127799)
|
||||||
.forGoggles(tooltip, 1);
|
.forGoggles(tooltip, 1);
|
||||||
|
CreateLang.translate("electricity.charging_rate", CreateLang.number(getChargingRate()))
|
||||||
CreateLang.text("Charging Rate ")
|
|
||||||
.add(CreateLang.number(getChargingRate()))
|
|
||||||
.color(0x127799)
|
.color(0x127799)
|
||||||
.forGoggles(tooltip, 1);
|
.forGoggles(tooltip, 1);
|
||||||
CreateLang.text("Max Capacity ")
|
CreateLang.translate("electricity.max_capacity", CreateLang.number(getMaxCapacity()))
|
||||||
.add(CreateLang.number(getMaxCapacity()))
|
|
||||||
.color(0x127799)
|
.color(0x127799)
|
||||||
.forGoggles(tooltip, 1);
|
.forGoggles(tooltip, 1);
|
||||||
|
|
||||||
|
|||||||
@@ -128,7 +128,7 @@ public class TransformerBlockEntity extends VoltageAlteringBlockEntity {
|
|||||||
super.makeMultimeterTooltip(tooltip, isPlayerSneaking);
|
super.makeMultimeterTooltip(tooltip, isPlayerSneaking);
|
||||||
|
|
||||||
if(coilRatio!=0) {
|
if(coilRatio!=0) {
|
||||||
CreateLang.text("----------------------------")
|
CreateLang.translate("multimeter.separator")
|
||||||
.style(ChatFormatting.WHITE)
|
.style(ChatFormatting.WHITE)
|
||||||
.forGoggles(tooltip);
|
.forGoggles(tooltip);
|
||||||
CreateLang.translate("multimeter.transformer_ratio")
|
CreateLang.translate("multimeter.transformer_ratio")
|
||||||
|
|||||||
@@ -0,0 +1,73 @@
|
|||||||
|
package com.drmangotea.tfmg.content.electricity.utilities.voltage_observer;
|
||||||
|
|
||||||
|
import com.drmangotea.tfmg.content.electricity.base.IElectric;
|
||||||
|
import com.simibubi.create.foundation.blockEntity.SmartBlockEntity;
|
||||||
|
import com.simibubi.create.foundation.blockEntity.behaviour.BehaviourType;
|
||||||
|
import com.simibubi.create.foundation.blockEntity.behaviour.BlockEntityBehaviour;
|
||||||
|
import net.minecraft.core.BlockPos;
|
||||||
|
import net.minecraft.core.HolderLookup;
|
||||||
|
import net.minecraft.nbt.CompoundTag;
|
||||||
|
import net.minecraft.nbt.NbtUtils;
|
||||||
|
import net.minecraft.world.level.block.entity.BlockEntity;
|
||||||
|
|
||||||
|
import java.util.Optional;
|
||||||
|
|
||||||
|
public class ObservedElectricBehaviour extends BlockEntityBehaviour {
|
||||||
|
public static final BehaviourType<ObservedElectricBehaviour> TYPE = new BehaviourType<>();
|
||||||
|
|
||||||
|
BlockPos observedPos;
|
||||||
|
|
||||||
|
public ObservedElectricBehaviour(SmartBlockEntity be) {
|
||||||
|
super(be);
|
||||||
|
}
|
||||||
|
|
||||||
|
public BlockPos getObservedPos() {
|
||||||
|
return observedPos;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setObservedPos(BlockPos observedPos) {
|
||||||
|
this.observedPos = observedPos;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void tick() {
|
||||||
|
super.tick();
|
||||||
|
if (getObservedPos() != null && !isObservingElectric()) setObservedPos(null);
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isObservingElectric() {
|
||||||
|
if (getObservedPos() == null) return false;
|
||||||
|
BlockEntity be = getWorld().getBlockEntity(getObservedPos());
|
||||||
|
return be instanceof IElectric;
|
||||||
|
}
|
||||||
|
|
||||||
|
public IElectric getObservedElectric() {
|
||||||
|
if (!isObservingElectric()) return null;
|
||||||
|
BlockEntity be = getWorld().getBlockEntity(getObservedPos());
|
||||||
|
if (be instanceof IElectric electric) {
|
||||||
|
return electric;
|
||||||
|
} else {
|
||||||
|
throw new IllegalStateException("Observed position does not contain an IElectric block entity: " + getObservedPos());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void write(CompoundTag nbt, HolderLookup.Provider registries, boolean clientPacket) {
|
||||||
|
super.write(nbt, registries, clientPacket);
|
||||||
|
if (observedPos != null) {
|
||||||
|
nbt.put("ObservedPos", NbtUtils.writeBlockPos(observedPos));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void read(CompoundTag nbt, HolderLookup.Provider registries, boolean clientPacket) {
|
||||||
|
super.read(nbt, registries, clientPacket);
|
||||||
|
Optional<BlockPos> pos = NbtUtils.readBlockPos(nbt, "ObservedPos");
|
||||||
|
setObservedPos(pos.orElse(null));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public BehaviourType<?> getType() {
|
||||||
|
return TYPE;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -4,11 +4,14 @@ package com.drmangotea.tfmg.content.electricity.utilities.voltage_observer;
|
|||||||
import com.drmangotea.tfmg.base.blocks.WallMountBlock;
|
import com.drmangotea.tfmg.base.blocks.WallMountBlock;
|
||||||
import com.drmangotea.tfmg.content.electricity.base.ElectricBlockEntity;
|
import com.drmangotea.tfmg.content.electricity.base.ElectricBlockEntity;
|
||||||
import com.simibubi.create.foundation.blockEntity.ComparatorUtil;
|
import com.simibubi.create.foundation.blockEntity.ComparatorUtil;
|
||||||
|
import com.simibubi.create.foundation.blockEntity.behaviour.BlockEntityBehaviour;
|
||||||
import net.minecraft.core.BlockPos;
|
import net.minecraft.core.BlockPos;
|
||||||
import net.minecraft.core.Direction;
|
import net.minecraft.core.Direction;
|
||||||
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;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
import static com.drmangotea.tfmg.content.electricity.utilities.voltage_observer.VoltageObserverBlock.POWERED;
|
import static com.drmangotea.tfmg.content.electricity.utilities.voltage_observer.VoltageObserverBlock.POWERED;
|
||||||
|
|
||||||
|
|
||||||
@@ -16,10 +19,17 @@ public class VoltageObserverBlockEntity extends ElectricBlockEntity {
|
|||||||
|
|
||||||
boolean update = false;
|
boolean update = false;
|
||||||
|
|
||||||
|
ObservedElectricBehaviour observedElectricBehaviour;
|
||||||
|
|
||||||
public VoltageObserverBlockEntity(BlockEntityType<?> type, BlockPos pos, BlockState state) {
|
public VoltageObserverBlockEntity(BlockEntityType<?> type, BlockPos pos, BlockState state) {
|
||||||
super(type, pos, state);
|
super(type, pos, state);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void addBehaviours(List<BlockEntityBehaviour> behaviours) {
|
||||||
|
behaviours.add(observedElectricBehaviour = new ObservedElectricBehaviour(this));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onNetworkChanged(int oldVoltage, int oldPower) {
|
public void onNetworkChanged(int oldVoltage, int oldPower) {
|
||||||
@@ -39,10 +49,17 @@ public class VoltageObserverBlockEntity extends ElectricBlockEntity {
|
|||||||
level.updateNeighborsAt(getBlockPos(), getBlockState().getBlock());
|
level.updateNeighborsAt(getBlockPos(), getBlockState().getBlock());
|
||||||
update = false;
|
update = false;
|
||||||
}
|
}
|
||||||
|
if (observedElectricBehaviour != null) {
|
||||||
|
observedElectricBehaviour.setObservedPos(getConnectedPos());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean hasElectricitySlot(Direction direction) {
|
public boolean hasElectricitySlot(Direction direction) {
|
||||||
return direction == getBlockState().getValue(WallMountBlock.FACING);
|
return direction == getBlockState().getValue(WallMountBlock.FACING);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private BlockPos getConnectedPos() {
|
||||||
|
return getBlockPos().relative(getBlockState().getValue(WallMountBlock.FACING));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -535,17 +535,17 @@ public abstract class AbstractSmallEngineBlockEntity extends AbstractEngineBlock
|
|||||||
public boolean addToGoggleTooltip(List<Component> tooltip, boolean isPlayerSneaking) {
|
public boolean addToGoggleTooltip(List<Component> tooltip, boolean isPlayerSneaking) {
|
||||||
|
|
||||||
if (controller.asLong() == getBlockPos().asLong())
|
if (controller.asLong() == getBlockPos().asLong())
|
||||||
CreateLang.text("CONTROLLER").forGoggles(tooltip);
|
CreateLang.translate("engine.controller.header").forGoggles(tooltip);
|
||||||
|
|
||||||
CreateLang.text("Shift " + shift.toString()).forGoggles(tooltip);
|
CreateLang.translate("engine.shift", CreateLang.translate(shift.langKey)).forGoggles(tooltip);
|
||||||
CreateLang.text("Speed Efficiency " + getSpeedEfficiency()).forGoggles(tooltip);
|
CreateLang.translate("engine.speed_efficiency", getSpeedEfficiency()).forGoggles(tooltip);
|
||||||
CreateLang.text("Efficiency " + efficiencyModifier()).forGoggles(tooltip);
|
CreateLang.translate("engine.efficiency", efficiencyModifier()).forGoggles(tooltip);
|
||||||
CreateLang.text("Fuel Consumption " + getFuelConsumption()).forGoggles(tooltip);
|
CreateLang.translate("engine.fuel_consumption", getFuelConsumption()).forGoggles(tooltip);
|
||||||
CreateLang.text("Rpm " + rpm).forGoggles(tooltip);
|
CreateLang.translate("engine.rpm", rpm).forGoggles(tooltip);
|
||||||
CreateLang.text("length " + engineLength()).forGoggles(tooltip);
|
CreateLang.translate("engine.length", engineLength()).forGoggles(tooltip);
|
||||||
CreateLang.text("Torque " + torque).forGoggles(tooltip);
|
CreateLang.translate("engine.torque", torque).forGoggles(tooltip);
|
||||||
CreateLang.text("Injection Rate " + fuelInjectionRate).forGoggles(tooltip);
|
CreateLang.translate("engine.injection_rate", fuelInjectionRate).forGoggles(tooltip);
|
||||||
CreateLang.text("Signal " + highestSignal).forGoggles(tooltip);
|
CreateLang.translate("engine.signal ", highestSignal).forGoggles(tooltip);
|
||||||
|
|
||||||
|
|
||||||
CreateLang.number(engineNumber).style(ChatFormatting.DARK_GREEN).forGoggles(tooltip);
|
CreateLang.number(engineNumber).style(ChatFormatting.DARK_GREEN).forGoggles(tooltip);
|
||||||
|
|||||||
@@ -403,35 +403,28 @@ public class RegularEngineBlockEntity extends AbstractSmallEngineBlockEntity {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
CreateLang.translate("goggles.engine.type")
|
CreateLang.translate("goggles.engine.type", CreateLang.translate(type.langKey))
|
||||||
.add(CreateLang.text(type.name()))
|
|
||||||
.color(0xfcad03)
|
.color(0xfcad03)
|
||||||
.forGoggles(tooltip);
|
.forGoggles(tooltip, 1);
|
||||||
CreateLang.translate("goggles.engine.rpm")
|
CreateLang.translate("goggles.engine.rpm", (int)rpm)
|
||||||
.add(CreateLang.text((int)rpm+" rpm"))
|
|
||||||
.color(0xa36f00)
|
.color(0xa36f00)
|
||||||
.forGoggles(tooltip);
|
.forGoggles(tooltip, 1);
|
||||||
CreateLang.translate("goggles.engine.signal")
|
CreateLang.translate("goggles.engine.signal", highestSignal)
|
||||||
.add(CreateLang.text(String.valueOf(highestSignal)))
|
|
||||||
.color(0xfcad03)
|
.color(0xfcad03)
|
||||||
.forGoggles(tooltip);
|
.forGoggles(tooltip, 1);
|
||||||
CreateLang.translate("goggles.engine.torque")
|
CreateLang.translate("goggles.engine.torque", (int)torque)
|
||||||
.add(CreateLang.text(String.valueOf((int)torque)))
|
|
||||||
.color(0xa36f00)
|
.color(0xa36f00)
|
||||||
.forGoggles(tooltip);
|
.forGoggles(tooltip, 1);
|
||||||
CreateLang.translate("goggles.engine.fuel_consumption")
|
CreateLang.translate("goggles.engine.fuel_consumption", getFuelConsumption()/1.5f)
|
||||||
.add(CreateLang.text(getFuelConsumption()/1.5f+" mb/s"))
|
|
||||||
.color(0xfcad03)
|
.color(0xfcad03)
|
||||||
.forGoggles(tooltip);
|
.forGoggles(tooltip, 1);
|
||||||
if(oil>0){
|
if(oil>0){
|
||||||
CreateLang.translate("goggles.engine.oil")
|
CreateLang.translate("goggles.engine.oil", CreateLang.number(oil))
|
||||||
.add(CreateLang.number(oil))
|
|
||||||
.color(0xf5dd42)
|
.color(0xf5dd42)
|
||||||
.forGoggles(tooltip);
|
.forGoggles(tooltip);
|
||||||
}
|
}
|
||||||
if(coolingFluid>0){
|
if(coolingFluid>0){
|
||||||
CreateLang.translate("goggles.engine.cooling_fluid")
|
CreateLang.translate("goggles.engine.cooling_fluid", CreateLang.number(coolingFluid))
|
||||||
.add(CreateLang.number(coolingFluid))
|
|
||||||
.color(0x51bdb9)
|
.color(0x51bdb9)
|
||||||
.forGoggles(tooltip);
|
.forGoggles(tooltip);
|
||||||
}
|
}
|
||||||
@@ -461,6 +454,7 @@ public class RegularEngineBlockEntity extends AbstractSmallEngineBlockEntity {
|
|||||||
public final List<Fluid> fluidBlacklist;
|
public final List<Fluid> fluidBlacklist;
|
||||||
public final String name;
|
public final String name;
|
||||||
public final boolean upgradesOnSide;
|
public final boolean upgradesOnSide;
|
||||||
|
public final String langKey;
|
||||||
|
|
||||||
EngineType(String name, List<PistonPosition> positions, float speedModifier,
|
EngineType(String name, List<PistonPosition> positions, float speedModifier,
|
||||||
float torqueModifier, float efficiencyModifier, boolean upgradesOnSide) {
|
float torqueModifier, float efficiencyModifier, boolean upgradesOnSide) {
|
||||||
@@ -481,6 +475,7 @@ public class RegularEngineBlockEntity extends AbstractSmallEngineBlockEntity {
|
|||||||
this.effeciencyModifier = efficiencyModifier;
|
this.effeciencyModifier = efficiencyModifier;
|
||||||
this.fluidBlacklist = fluidBlacklist;
|
this.fluidBlacklist = fluidBlacklist;
|
||||||
this.upgradesOnSide = upgradesOnSide;
|
this.upgradesOnSide = upgradesOnSide;
|
||||||
|
this.langKey = "engine.type." + name;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -69,17 +69,18 @@ public class TransmissionUpgrade extends EngineUpgrade{
|
|||||||
SHIFT_5(1.5f),
|
SHIFT_5(1.5f),
|
||||||
SHIFT_6(1.9f)
|
SHIFT_6(1.9f)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
;
|
;
|
||||||
public final float value;
|
public final float value;
|
||||||
public final boolean reverse;
|
public final boolean reverse;
|
||||||
|
public final String langKey;
|
||||||
|
|
||||||
TransmissionState(float value){
|
TransmissionState(float value){
|
||||||
this(value,false);
|
this(value,false);
|
||||||
}
|
}
|
||||||
TransmissionState(float value, boolean reverse){
|
TransmissionState(float value, boolean reverse){
|
||||||
this.value = value;
|
this.value = value;
|
||||||
this.reverse = reverse;
|
this.reverse = reverse;
|
||||||
|
this.langKey = "engine.upgrade.transmission." + this.name().toLowerCase();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,11 +1,13 @@
|
|||||||
package com.drmangotea.tfmg.content.items.weapons.flamethrover;
|
package com.drmangotea.tfmg.content.items.weapons.flamethrover;
|
||||||
|
|
||||||
import com.drmangotea.tfmg.TFMGRegistries;
|
import com.drmangotea.tfmg.TFMGRegistries;
|
||||||
|
import com.drmangotea.tfmg.registry.TFMGFlamethrowerFuelTypes;
|
||||||
import com.mojang.serialization.Codec;
|
import com.mojang.serialization.Codec;
|
||||||
import com.mojang.serialization.codecs.RecordCodecBuilder;
|
import com.mojang.serialization.codecs.RecordCodecBuilder;
|
||||||
import io.netty.buffer.ByteBuf;
|
import io.netty.buffer.ByteBuf;
|
||||||
import net.minecraft.core.Holder;
|
import net.minecraft.core.Holder;
|
||||||
import net.minecraft.core.RegistryAccess;
|
import net.minecraft.core.RegistryAccess;
|
||||||
|
import net.minecraft.nbt.Tag;
|
||||||
import net.minecraft.network.codec.ByteBufCodecs;
|
import net.minecraft.network.codec.ByteBufCodecs;
|
||||||
import net.minecraft.network.codec.StreamCodec;
|
import net.minecraft.network.codec.StreamCodec;
|
||||||
import net.minecraft.resources.ResourceKey;
|
import net.minecraft.resources.ResourceKey;
|
||||||
@@ -29,21 +31,21 @@ public record FlamethrowerFuel(@Nullable ResourceKey<FlamethrowerFuelType> fuelT
|
|||||||
ByteBufCodecs.INT,
|
ByteBufCodecs.INT,
|
||||||
FlamethrowerFuel::amount,
|
FlamethrowerFuel::amount,
|
||||||
ByteBufCodecs.INT,
|
ByteBufCodecs.INT,
|
||||||
fuel -> fuel.color == 0 ? 0xFFFFFF : fuel.color,
|
FlamethrowerFuel::color,
|
||||||
FlamethrowerFuel::new
|
FlamethrowerFuel::new
|
||||||
);
|
);
|
||||||
|
|
||||||
public static final FlamethrowerFuel EMPTY = new FlamethrowerFuel(null, 0, 0xFFFFFF);
|
public static final FlamethrowerFuel EMPTY = new FlamethrowerFuel(TFMGFlamethrowerFuelTypes.FALLBACK, 0, 0xFFFFFF);
|
||||||
|
|
||||||
public FlamethrowerFuel decrement(int amount) {
|
public FlamethrowerFuel decrement(int amount) {
|
||||||
if (this.amount <= amount || fuelType == null) {
|
if (this.amount <= amount || fuelType == TFMGFlamethrowerFuelTypes.FALLBACK) {
|
||||||
return EMPTY;
|
return EMPTY;
|
||||||
}
|
}
|
||||||
return new FlamethrowerFuel(fuelType, this.amount - amount, color);
|
return new FlamethrowerFuel(fuelType, this.amount - amount, color);
|
||||||
}
|
}
|
||||||
|
|
||||||
public FlamethrowerFuel increment(int amount, int capacity) {
|
public FlamethrowerFuel increment(int amount, int capacity) {
|
||||||
if (fuelType == null) {
|
if (fuelType == TFMGFlamethrowerFuelTypes.FALLBACK) {
|
||||||
return EMPTY;
|
return EMPTY;
|
||||||
}
|
}
|
||||||
if (this.amount + amount > capacity) {
|
if (this.amount + amount > capacity) {
|
||||||
@@ -54,7 +56,7 @@ public record FlamethrowerFuel(@Nullable ResourceKey<FlamethrowerFuelType> fuelT
|
|||||||
|
|
||||||
public static FlamethrowerFuel createForType(RegistryAccess registryAccess, Fluid fluid, int amount) {
|
public static FlamethrowerFuel createForType(RegistryAccess registryAccess, Fluid fluid, int amount) {
|
||||||
Optional<Holder.Reference<FlamethrowerFuelType>> type = FlamethrowerFuelType.getTypeForFluid(registryAccess, fluid);
|
Optional<Holder.Reference<FlamethrowerFuelType>> type = FlamethrowerFuelType.getTypeForFluid(registryAccess, fluid);
|
||||||
return type.map(typeReference -> new FlamethrowerFuel(typeReference.getKey(), amount, typeReference.value().color())).orElse(null);
|
return type.map(typeReference -> new FlamethrowerFuel(typeReference.getKey(), amount, typeReference.value().color())).orElse(EMPTY);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static FlamethrowerFuel createForType(RegistryAccess registryAccess, FluidStack stack) {
|
public static FlamethrowerFuel createForType(RegistryAccess registryAccess, FluidStack stack) {
|
||||||
@@ -62,14 +64,14 @@ public record FlamethrowerFuel(@Nullable ResourceKey<FlamethrowerFuelType> fuelT
|
|||||||
}
|
}
|
||||||
|
|
||||||
public boolean isEmpty() {
|
public boolean isEmpty() {
|
||||||
if (fuelType == null) {
|
if (fuelType == TFMGFlamethrowerFuelTypes.FALLBACK) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
return this.amount <= 0;
|
return this.amount <= 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean hasFuel() {
|
public boolean hasFuel() {
|
||||||
return fuelType != null;
|
return fuelType != TFMGFlamethrowerFuelTypes.FALLBACK;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Optional<FlamethrowerFuelType> getFuelType(RegistryAccess registryAccess) {
|
public Optional<FlamethrowerFuelType> getFuelType(RegistryAccess registryAccess) {
|
||||||
|
|||||||
@@ -1,9 +1,11 @@
|
|||||||
package com.drmangotea.tfmg.content.items.weapons.flamethrover;
|
package com.drmangotea.tfmg.content.items.weapons.flamethrover;
|
||||||
|
|
||||||
import com.drmangotea.tfmg.TFMGClient;
|
import com.drmangotea.tfmg.TFMGClient;
|
||||||
|
import com.drmangotea.tfmg.TFMGRegistries;
|
||||||
import com.drmangotea.tfmg.base.spark.Spark;
|
import com.drmangotea.tfmg.base.spark.Spark;
|
||||||
import com.drmangotea.tfmg.registry.TFMGDataComponents;
|
import com.drmangotea.tfmg.registry.TFMGDataComponents;
|
||||||
import com.drmangotea.tfmg.registry.TFMGEntityTypes;
|
import com.drmangotea.tfmg.registry.TFMGEntityTypes;
|
||||||
|
import com.drmangotea.tfmg.registry.TFMGFlamethrowerFuelTypes;
|
||||||
import com.simibubi.create.content.equipment.zapper.ShootableGadgetItemMethods;
|
import com.simibubi.create.content.equipment.zapper.ShootableGadgetItemMethods;
|
||||||
import com.simibubi.create.foundation.item.CustomArmPoseItem;
|
import com.simibubi.create.foundation.item.CustomArmPoseItem;
|
||||||
import com.simibubi.create.foundation.utility.CreateLang;
|
import com.simibubi.create.foundation.utility.CreateLang;
|
||||||
@@ -24,6 +26,7 @@ import net.minecraft.util.Mth;
|
|||||||
import net.minecraft.world.InteractionHand;
|
import net.minecraft.world.InteractionHand;
|
||||||
import net.minecraft.world.InteractionResult;
|
import net.minecraft.world.InteractionResult;
|
||||||
import net.minecraft.world.InteractionResultHolder;
|
import net.minecraft.world.InteractionResultHolder;
|
||||||
|
import net.minecraft.world.entity.Entity;
|
||||||
import net.minecraft.world.entity.HumanoidArm;
|
import net.minecraft.world.entity.HumanoidArm;
|
||||||
import net.minecraft.world.entity.LivingEntity;
|
import net.minecraft.world.entity.LivingEntity;
|
||||||
import net.minecraft.world.entity.player.Player;
|
import net.minecraft.world.entity.player.Player;
|
||||||
@@ -55,6 +58,11 @@ public class FlamethrowerItem extends Item implements CustomArmPoseItem {
|
|||||||
super(pProperties);
|
super(pProperties);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void inventoryTick(ItemStack stack, Level level, Entity entity, int slotId, boolean isSelected) {
|
||||||
|
super.inventoryTick(stack, level, entity, slotId, isSelected);
|
||||||
|
if(!stack.has(TFMGDataComponents.FLAMETHROWER_FUEL))
|
||||||
|
stack.set(TFMGDataComponents.FLAMETHROWER_FUEL, FlamethrowerFuel.EMPTY);
|
||||||
|
}
|
||||||
|
|
||||||
public void onUseTick(Level level, LivingEntity entity, ItemStack stack, int time) {
|
public void onUseTick(Level level, LivingEntity entity, ItemStack stack, int time) {
|
||||||
if (stack.getOrDefault(TFMGDataComponents.FLAMETHROWER_FUEL, FlamethrowerFuel.EMPTY) == FlamethrowerFuel.EMPTY)
|
if (stack.getOrDefault(TFMGDataComponents.FLAMETHROWER_FUEL, FlamethrowerFuel.EMPTY) == FlamethrowerFuel.EMPTY)
|
||||||
@@ -62,18 +70,12 @@ public class FlamethrowerItem extends Item implements CustomArmPoseItem {
|
|||||||
|
|
||||||
int fuelAmount = stack.getOrDefault(TFMGDataComponents.FLAMETHROWER_FUEL, FlamethrowerFuel.EMPTY).amount();
|
int fuelAmount = stack.getOrDefault(TFMGDataComponents.FLAMETHROWER_FUEL, FlamethrowerFuel.EMPTY).amount();
|
||||||
|
|
||||||
if(!stack.has(TFMGDataComponents.FLAMETHROWER_FUEL))
|
|
||||||
stack.set(TFMGDataComponents.FLAMETHROWER_FUEL, FlamethrowerFuel.EMPTY);
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
if(fuelAmount==0) {
|
if(fuelAmount==0) {
|
||||||
stack.set(TFMGDataComponents.FLAMETHROWER_FUEL, FlamethrowerFuel.EMPTY);
|
stack.set(TFMGDataComponents.FLAMETHROWER_FUEL, FlamethrowerFuel.EMPTY);
|
||||||
|
entity.stopUsingItem();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
level.playSound(null, entity.getX(), entity.getY(), entity.getZ(), SoundEvents.FIRE_EXTINGUISH, SoundSource.NEUTRAL, 0.1F, 0.04F);
|
level.playSound(null, entity.getX(), entity.getY(), entity.getZ(), SoundEvents.FIRE_EXTINGUISH, SoundSource.NEUTRAL, 0.1F, 0.04F);
|
||||||
|
|
||||||
FlamethrowerFuel fuel = stack.getOrDefault(TFMGDataComponents.FLAMETHROWER_FUEL, FlamethrowerFuel.EMPTY);
|
FlamethrowerFuel fuel = stack.getOrDefault(TFMGDataComponents.FLAMETHROWER_FUEL, FlamethrowerFuel.EMPTY);
|
||||||
@@ -82,18 +84,22 @@ public class FlamethrowerItem extends Item implements CustomArmPoseItem {
|
|||||||
Vec3 barrelPos = getGunBarrelVec(entity, entity.getUsedItemHand() == InteractionHand.MAIN_HAND,
|
Vec3 barrelPos = getGunBarrelVec(entity, entity.getUsedItemHand() == InteractionHand.MAIN_HAND,
|
||||||
new Vec3(.75f, -0.65f, 1.5f));
|
new Vec3(.75f, -0.65f, 1.5f));
|
||||||
|
|
||||||
|
if (fuel.fuelType() != TFMGFlamethrowerFuelTypes.FALLBACK && fuel.amount() > 0) {
|
||||||
|
int amountToFire = Math.min(fuelType.amount(), fuel.amount());
|
||||||
for(int i =0; i < fuelType.amount(); i++) {
|
for(int i =0; i < amountToFire; i++) {
|
||||||
Spark spark = TFMGEntityTypes.SPARK.create(level);
|
Spark spark = TFMGEntityTypes.SPARK.create(level);
|
||||||
if (spark != null) {
|
if (spark != null) {
|
||||||
spark.setPos(barrelPos.x, barrelPos.y, barrelPos.z);
|
spark.setPos(barrelPos.x, barrelPos.y, barrelPos.z);
|
||||||
spark.shoot(entity.getLookAngle().x, entity.getLookAngle().y, entity.getLookAngle().z, fuelType.speed(), fuelType.spread());
|
spark.shoot(entity.getLookAngle().x, entity.getLookAngle().y, entity.getLookAngle().z, fuelType.speed(), fuelType.spread());
|
||||||
level.addFreshEntity(spark);
|
level.addFreshEntity(spark);
|
||||||
stack.set(TFMGDataComponents.FLAMETHROWER_FUEL, fuel.decrement(1));
|
}
|
||||||
}
|
}
|
||||||
|
int fuelConsumed = level.random.nextIntBetweenInclusive(amountToFire / 2, amountToFire);
|
||||||
|
stack.set(TFMGDataComponents.FLAMETHROWER_FUEL, fuel.decrement(fuelConsumed));
|
||||||
|
} else {
|
||||||
|
stack.set(TFMGDataComponents.FLAMETHROWER_FUEL, FlamethrowerFuel.EMPTY);
|
||||||
|
entity.stopUsingItem();
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static Vec3 getGunBarrelVec(LivingEntity entity, boolean mainHand, Vec3 rightHandForward) {
|
public static Vec3 getGunBarrelVec(LivingEntity entity, boolean mainHand, Vec3 rightHandForward) {
|
||||||
@@ -110,7 +116,7 @@ public class FlamethrowerItem extends Item implements CustomArmPoseItem {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isBarVisible(ItemStack stack) {
|
public boolean isBarVisible(ItemStack stack) {
|
||||||
if(!stack.has(TFMGDataComponents.FLAMETHROWER_FUEL) || stack.getOrDefault(TFMGDataComponents.FLAMETHROWER_FUEL, FlamethrowerFuel.EMPTY).isEmpty())
|
if(!stack.has(TFMGDataComponents.FLAMETHROWER_FUEL))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
return !stack.getOrDefault(TFMGDataComponents.FLAMETHROWER_FUEL, FlamethrowerFuel.EMPTY).isEmpty();
|
return !stack.getOrDefault(TFMGDataComponents.FLAMETHROWER_FUEL, FlamethrowerFuel.EMPTY).isEmpty();
|
||||||
@@ -175,8 +181,8 @@ public class FlamethrowerItem extends Item implements CustomArmPoseItem {
|
|||||||
int toDrain = Math.min(FUEL_CAPACITY - containedFuel, fluidStack.getAmount());
|
int toDrain = Math.min(FUEL_CAPACITY - containedFuel, fluidStack.getAmount());
|
||||||
FluidStack stackToDrain = fluidStack.copyWithAmount(toDrain);
|
FluidStack stackToDrain = fluidStack.copyWithAmount(toDrain);
|
||||||
FlamethrowerFuel fuel = FlamethrowerFuel.createForType(level.registryAccess(), fluidStack.getFluid(), toDrain);
|
FlamethrowerFuel fuel = FlamethrowerFuel.createForType(level.registryAccess(), fluidStack.getFluid(), toDrain);
|
||||||
if (fuel == null) continue;
|
if (fuel == FlamethrowerFuel.EMPTY) continue;
|
||||||
if (fuelType != null) {
|
if (fuelType != TFMGFlamethrowerFuelTypes.FALLBACK) {
|
||||||
if (fuelType.equals(fuel.fuelType())) {
|
if (fuelType.equals(fuel.fuelType())) {
|
||||||
stack.set(TFMGDataComponents.FLAMETHROWER_FUEL, existingFuel.increment(toDrain, FUEL_CAPACITY));
|
stack.set(TFMGDataComponents.FLAMETHROWER_FUEL, existingFuel.increment(toDrain, FUEL_CAPACITY));
|
||||||
capability.drain(stackToDrain, IFluidHandler.FluidAction.EXECUTE);
|
capability.drain(stackToDrain, IFluidHandler.FluidAction.EXECUTE);
|
||||||
@@ -199,8 +205,8 @@ public class FlamethrowerItem extends Item implements CustomArmPoseItem {
|
|||||||
|
|
||||||
@Nullable
|
@Nullable
|
||||||
public static FlamethrowerFuelType getFuel(RegistryAccess registryAccess, ItemStack heldStack) {
|
public static FlamethrowerFuelType getFuel(RegistryAccess registryAccess, ItemStack heldStack) {
|
||||||
var type = heldStack.get(TFMGDataComponents.FLAMETHROWER_FUEL).getFuelType(registryAccess);
|
var type = heldStack.getOrDefault(TFMGDataComponents.FLAMETHROWER_FUEL, FlamethrowerFuel.EMPTY).getFuelType(registryAccess);
|
||||||
return type.orElse(null);
|
return type.orElse(registryAccess.registryOrThrow(TFMGRegistries.FLAMETHROWER_FUEL_TYPE).get(TFMGFlamethrowerFuelTypes.FALLBACK));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -215,13 +221,16 @@ public class FlamethrowerItem extends Item implements CustomArmPoseItem {
|
|||||||
super.appendHoverText(stack, context, tooltip, flag);
|
super.appendHoverText(stack, context, tooltip, flag);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
FlamethrowerFuelType fallback = player.registryAccess().registryOrThrow(TFMGRegistries.FLAMETHROWER_FUEL_TYPE).get(TFMGFlamethrowerFuelTypes.FALLBACK);
|
||||||
FlamethrowerFuelType fuelType = getFuel(player.registryAccess(), stack);
|
FlamethrowerFuelType fuelType = getFuel(player.registryAccess(), stack);
|
||||||
if (fuelType == null) {
|
FlamethrowerFuel fuel = stack.getOrDefault(TFMGDataComponents.FLAMETHROWER_FUEL, FlamethrowerFuel.EMPTY);
|
||||||
|
|
||||||
|
if (fuelType == fallback || !fuel.hasFuel()) {
|
||||||
super.appendHoverText(stack, context, tooltip, flag);
|
super.appendHoverText(stack, context, tooltip, flag);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
FluidStack fuelFluid = new FluidStack(fuelType.fluids().get(0).value(), 1);
|
FluidStack fuelFluid = new FluidStack(fuelType.fluids().get(0).value(), 1);
|
||||||
FlamethrowerFuel fuel = stack.getOrDefault(TFMGDataComponents.FLAMETHROWER_FUEL, FlamethrowerFuel.EMPTY);
|
|
||||||
|
|
||||||
String _spread = "flamethrower.fuel.spread";
|
String _spread = "flamethrower.fuel.spread";
|
||||||
String _speed = "flamethrower.fuel.speed";
|
String _speed = "flamethrower.fuel.speed";
|
||||||
@@ -284,6 +293,11 @@ public class FlamethrowerItem extends Item implements CustomArmPoseItem {
|
|||||||
return slotChanged || newStack.getItem() != oldStack.getItem();
|
return slotChanged || newStack.getItem() != oldStack.getItem();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean onEntitySwing(ItemStack stack, LivingEntity entity, InteractionHand hand) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@Nullable
|
@Nullable
|
||||||
public HumanoidModel.ArmPose getArmPose(ItemStack stack, AbstractClientPlayer player, InteractionHand hand) {
|
public HumanoidModel.ArmPose getArmPose(ItemStack stack, AbstractClientPlayer player, InteractionHand hand) {
|
||||||
|
|||||||
@@ -111,6 +111,7 @@ import com.drmangotea.tfmg.content.machinery.vat.base.VatBlock;
|
|||||||
import com.drmangotea.tfmg.content.machinery.vat.base.VatGenerator;
|
import com.drmangotea.tfmg.content.machinery.vat.base.VatGenerator;
|
||||||
import com.drmangotea.tfmg.content.machinery.vat.electrode_holder.ElectrodeHolderBlock;
|
import com.drmangotea.tfmg.content.machinery.vat.electrode_holder.ElectrodeHolderBlock;
|
||||||
import com.drmangotea.tfmg.content.machinery.vat.industrial_mixer.IndustrialMixerBlock;
|
import com.drmangotea.tfmg.content.machinery.vat.industrial_mixer.IndustrialMixerBlock;
|
||||||
|
import com.simibubi.create.AllDisplaySources;
|
||||||
import com.simibubi.create.AllTags;
|
import com.simibubi.create.AllTags;
|
||||||
import com.simibubi.create.api.stress.BlockStressValues;
|
import com.simibubi.create.api.stress.BlockStressValues;
|
||||||
import com.simibubi.create.content.contraptions.bearing.StabilizedBearingMovementBehaviour;
|
import com.simibubi.create.content.contraptions.bearing.StabilizedBearingMovementBehaviour;
|
||||||
@@ -151,6 +152,7 @@ import java.util.Map;
|
|||||||
import static com.drmangotea.tfmg.TFMG.REGISTRATE;
|
import static com.drmangotea.tfmg.TFMG.REGISTRATE;
|
||||||
import static com.drmangotea.tfmg.base.TFMGBuilderTransformers.*;
|
import static com.drmangotea.tfmg.base.TFMGBuilderTransformers.*;
|
||||||
import static com.drmangotea.tfmg.content.electricity.lights.LightBulbBlock.LIGHT;
|
import static com.drmangotea.tfmg.content.electricity.lights.LightBulbBlock.LIGHT;
|
||||||
|
import static com.simibubi.create.api.behaviour.display.DisplaySource.displaySource;
|
||||||
import static com.simibubi.create.api.behaviour.movement.MovementBehaviour.movementBehaviour;
|
import static com.simibubi.create.api.behaviour.movement.MovementBehaviour.movementBehaviour;
|
||||||
import static com.simibubi.create.api.contraption.storage.fluid.MountedFluidStorageType.mountedFluidStorage;
|
import static com.simibubi.create.api.contraption.storage.fluid.MountedFluidStorageType.mountedFluidStorage;
|
||||||
import static com.simibubi.create.foundation.data.BlockStateGen.axisBlock;
|
import static com.simibubi.create.foundation.data.BlockStateGen.axisBlock;
|
||||||
@@ -1206,6 +1208,16 @@ public class TFMGBlocks {
|
|||||||
.transform(pickaxeOnly())
|
.transform(pickaxeOnly())
|
||||||
.properties(BlockBehaviour.Properties::noOcclusion)
|
.properties(BlockBehaviour.Properties::noOcclusion)
|
||||||
.blockstate(new VoltageObserverGenerator()::generate)
|
.blockstate(new VoltageObserverGenerator()::generate)
|
||||||
|
.transform(displaySource(TFMGDisplaySources.CURRENT))
|
||||||
|
.transform(displaySource(TFMGDisplaySources.POWER_USAGE))
|
||||||
|
.transform(displaySource(TFMGDisplaySources.RESISTANCE))
|
||||||
|
.transform(displaySource(TFMGDisplaySources.VOLTAGE))
|
||||||
|
.transform(displaySource(TFMGDisplaySources.POWER_GENERATION))
|
||||||
|
.transform(displaySource(TFMGDisplaySources.VOLTAGE_GENERATION))
|
||||||
|
.transform(displaySource(TFMGDisplaySources.NETWORK_CONSUMPTION))
|
||||||
|
.transform(displaySource(TFMGDisplaySources.NETWORK_GENERATION))
|
||||||
|
.transform(displaySource(TFMGDisplaySources.NETWORK_ID))
|
||||||
|
.transform(displaySource(TFMGDisplaySources.NETWORK_RESISTANCE))
|
||||||
.item()
|
.item()
|
||||||
.transform(customItemModel())
|
.transform(customItemModel())
|
||||||
.register();
|
.register();
|
||||||
|
|||||||
@@ -0,0 +1,38 @@
|
|||||||
|
package com.drmangotea.tfmg.registry;
|
||||||
|
|
||||||
|
import com.drmangotea.tfmg.TFMG;
|
||||||
|
import com.drmangotea.tfmg.base.TFMGRegistrate;
|
||||||
|
import com.drmangotea.tfmg.content.electricity.display_link.*;
|
||||||
|
import com.drmangotea.tfmg.content.electricity.display_link.network.NetConsumptionDisplaySource;
|
||||||
|
import com.drmangotea.tfmg.content.electricity.display_link.network.NetGenerationDisplaySource;
|
||||||
|
import com.drmangotea.tfmg.content.electricity.display_link.network.NetIdDisplaySource;
|
||||||
|
import com.drmangotea.tfmg.content.electricity.display_link.network.NetResistanceDisplaySource;
|
||||||
|
import com.simibubi.create.api.behaviour.display.DisplaySource;
|
||||||
|
import com.tterrag.registrate.util.entry.RegistryEntry;
|
||||||
|
|
||||||
|
import java.util.function.Supplier;
|
||||||
|
|
||||||
|
public class TFMGDisplaySources {
|
||||||
|
private static final TFMGRegistrate REGISTRATE = TFMG.registrate();
|
||||||
|
|
||||||
|
// Electricity Display Sources
|
||||||
|
public static final RegistryEntry<DisplaySource, CurrentDisplaySource> CURRENT = simple("current", CurrentDisplaySource::new);
|
||||||
|
public static final RegistryEntry<DisplaySource, PowerUsageDisplaySource> POWER_USAGE = simple("power_usage", PowerUsageDisplaySource::new);
|
||||||
|
public static final RegistryEntry<DisplaySource, ResistanceDisplaySource> RESISTANCE = simple("resistance", ResistanceDisplaySource::new);
|
||||||
|
public static final RegistryEntry<DisplaySource, VoltageDisplaySource> VOLTAGE = simple("voltage", VoltageDisplaySource::new);
|
||||||
|
public static final RegistryEntry<DisplaySource, PowerGenerationDisplaySource> POWER_GENERATION = simple("power_generation", PowerGenerationDisplaySource::new);
|
||||||
|
public static final RegistryEntry<DisplaySource, VoltageGenerationDisplaySource> VOLTAGE_GENERATION = simple("voltage_generation", VoltageGenerationDisplaySource::new);
|
||||||
|
// Electricity Network Display Sources
|
||||||
|
public static final RegistryEntry<DisplaySource, NetConsumptionDisplaySource> NETWORK_CONSUMPTION = simple("network_consumption", NetConsumptionDisplaySource::new);
|
||||||
|
public static final RegistryEntry<DisplaySource, NetGenerationDisplaySource> NETWORK_GENERATION = simple("network_generation", NetGenerationDisplaySource::new);
|
||||||
|
public static final RegistryEntry<DisplaySource, NetIdDisplaySource> NETWORK_ID = simple("network_id", NetIdDisplaySource::new);
|
||||||
|
public static final RegistryEntry<DisplaySource, NetResistanceDisplaySource> NETWORK_RESISTANCE = simple("network_resistance", NetResistanceDisplaySource::new);
|
||||||
|
|
||||||
|
|
||||||
|
private static <T extends DisplaySource> RegistryEntry<DisplaySource, T> simple(String name, Supplier<T> supplier) {
|
||||||
|
return REGISTRATE.displaySource(name, supplier).register();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void init() {
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -68,13 +68,13 @@
|
|||||||
"create.goggles.voltmeter.range": " Range: %1$s",
|
"create.goggles.voltmeter.range": " Range: %1$s",
|
||||||
|
|
||||||
"create.goggles.engine.header": "Engine Info",
|
"create.goggles.engine.header": "Engine Info",
|
||||||
"create.goggles.engine.type": " Type: ",
|
"create.goggles.engine.type": "Type: %s",
|
||||||
"create.goggles.engine.rpm": " Speed: ",
|
"create.goggles.engine.rpm": "Speed: %s RPM",
|
||||||
"create.goggles.engine.signal": " Signal: ",
|
"create.goggles.engine.signal": "Signal: %s",
|
||||||
"create.goggles.engine.torque": " Torque:",
|
"create.goggles.engine.torque": "Torque: %s",
|
||||||
"create.goggles.engine.fuel_consumption": " Fuel Consumption:",
|
"create.goggles.engine.fuel_consumption": "Fuel Consumption: %s mB/s",
|
||||||
"create.goggles.engine.oil": "Oil: ",
|
"create.goggles.engine.oil": "Oil: %s",
|
||||||
"create.goggles.engine.cooling_fluid": "Cooling Fluid: ",
|
"create.goggles.engine.cooling_fluid": "Cooling Fluid: %s",
|
||||||
"create.goggles.engine.unfinished": "Engine Unfinished",
|
"create.goggles.engine.unfinished": "Engine Unfinished",
|
||||||
"create.goggles.engine.next_component": " Next Component: ",
|
"create.goggles.engine.next_component": " Next Component: ",
|
||||||
"create.goggles.engine.pistons_missing": "Pistons Missing",
|
"create.goggles.engine.pistons_missing": "Pistons Missing",
|
||||||
@@ -143,16 +143,73 @@
|
|||||||
"tfmg.keyinfo.transmission_shift_down": "Transmission Shift Down",
|
"tfmg.keyinfo.transmission_shift_down": "Transmission Shift Down",
|
||||||
|
|
||||||
"create.multimeter.header": "Multimeter Data:",
|
"create.multimeter.header": "Multimeter Data:",
|
||||||
|
"create.multimeter.separator": "----------------------------",
|
||||||
|
"create.multimeter.insufficient_power": "NOT ENOUGHT POWER",
|
||||||
"create.multimeter.additional_values": "Additional Values:",
|
"create.multimeter.additional_values": "Additional Values:",
|
||||||
"create.multimeter.power_usage": " Power Usage: ",
|
"create.multimeter.power_usage": " Power Usage: ",
|
||||||
"create.multimeter.group": " Group: ",
|
"create.multimeter.group": " Group: %s",
|
||||||
"create.multimeter.voltage_generated": " Voltage Generated: ",
|
"create.multimeter.voltage_generated": " Voltage Generated: %s",
|
||||||
"create.multimeter.power_generated": " Power Generated: ",
|
"create.multimeter.power_generated": " Power Generated: %s",
|
||||||
"create.multimeter.power_percentage": " Grid Strength: ",
|
"create.multimeter.power_percentage": " Grid Strength: ",
|
||||||
"create.multimeter.energy_usage": " Energy Usage: ",
|
"create.multimeter.energy_usage": " Energy Usage: ",
|
||||||
"create.multimeter.energy_stored": " Energy Stored: ",
|
"create.multimeter.energy_stored": " Energy Stored: ",
|
||||||
|
"create.multimeter.network.generation": "Network Power Generation: %s",
|
||||||
|
"create.multimeter.network.consumption": "Network Power Consumption: %s",
|
||||||
"create.multimeter.transformer_ratio": " Turn Ratio: ",
|
"create.multimeter.transformer_ratio": " Turn Ratio: ",
|
||||||
|
|
||||||
|
"create.electricity.capacity": "Capacity: %s",
|
||||||
|
"create.electricity.charging_rate": "Charging Rate: %s",
|
||||||
|
"create.electricity.max_capacity": "Max Capacity: %s",
|
||||||
|
|
||||||
|
"create.engine.controller.header": "Engine Controller",
|
||||||
|
"create.engine.shift": "Shift: %s",
|
||||||
|
"create.engine.speed_efficiency": "Speed Efficiency: %s",
|
||||||
|
"create.engine.efficiency": "Efficiency: %s",
|
||||||
|
"create.engine.fuel_consumption": "Fuel Consumption: %s",
|
||||||
|
"create.engine.rpm": "RPM: %s",
|
||||||
|
"create.engine.length": "Length: %s",
|
||||||
|
"create.engine.torque": "Torque: %s",
|
||||||
|
"create.engine.injection_rate": "Injection Rate: %s",
|
||||||
|
"create.engine.signal": "Signal: %s",
|
||||||
|
|
||||||
|
"create.engine.upgrade.transmission.reverse": "Reverse",
|
||||||
|
"create.engine.upgrade.transmission.neutral": "Neutral",
|
||||||
|
"create.engine.upgrade.transmission.shift_1": "1st Gear",
|
||||||
|
"create.engine.upgrade.transmission.shift_2": "2nd Gear",
|
||||||
|
"create.engine.upgrade.transmission.shift_3": "3rd Gear",
|
||||||
|
"create.engine.upgrade.transmission.shift_4": "4th Gear",
|
||||||
|
"create.engine.upgrade.transmission.shift_5": "5th Gear",
|
||||||
|
"create.engine.upgrade.transmission.shift_6": "6th Gear",
|
||||||
|
|
||||||
|
"create.engine.type.engine_i": "I",
|
||||||
|
"create.engine.type.engine_v": "V",
|
||||||
|
"create.engine.type.engine_w": "W",
|
||||||
|
"create.engine.type.engine_u": "U",
|
||||||
|
"create.engine.type.boxer": "Boxer",
|
||||||
|
"create.engine.type.radial": "Radial",
|
||||||
|
"create.engine.type.turbine": "Turbine",
|
||||||
|
|
||||||
|
"create.goggles.voltmeter.mode.voltage": "Voltage",
|
||||||
|
"create.goggles.voltmeter.mode.high_voltage": "Voltage (High)",
|
||||||
|
"create.goggles.voltmeter.mode.current": "Current",
|
||||||
|
"create.goggles.voltmeter.mode.resistance": "Resistance",
|
||||||
|
"create.goggles.voltmeter.mode.power": "Power",
|
||||||
|
"create.goggles.voltmeter.mode.net_power_use": "Network Power Usage",
|
||||||
|
"create.goggles.voltmeter.mode.net_power_gen": "Network Power Generation",
|
||||||
|
"create.goggles.voltmeter.mode.capacity": "Capacity",
|
||||||
|
"create.goggles.voltmeter.mode.fallback": "Fallback",
|
||||||
|
|
||||||
|
"tfmg.display_source.electricity.power_usage": "Power Usage",
|
||||||
|
"tfmg.display_source.electricity.network_resistance": "Network Resistance",
|
||||||
|
"tfmg.display_source.electricity.voltage": "Voltage",
|
||||||
|
"tfmg.display_source.electricity.network_consumption": "Network Power Consumption",
|
||||||
|
"tfmg.display_source.electricity.current": "Current",
|
||||||
|
"tfmg.display_source.electricity.network_id": "Network ID",
|
||||||
|
"tfmg.display_source.electricity.resistance": "Resistance",
|
||||||
|
"tfmg.display_source.electricity.network_generation": "Network Power Generation",
|
||||||
|
"tfmg.display_source.electricity.power_generation": "Power Generation",
|
||||||
|
"tfmg.display_source.electricity.voltage_generation": "Voltage Generation",
|
||||||
|
|
||||||
"item.minecraft.potion.effect.hellfire_potion": "Potion of Hellfire",
|
"item.minecraft.potion.effect.hellfire_potion": "Potion of Hellfire",
|
||||||
"item.minecraft.splash_potion.effect.hellfire_potion": "Splash Potion of Hellfire",
|
"item.minecraft.splash_potion.effect.hellfire_potion": "Splash Potion of Hellfire",
|
||||||
"item.minecraft.lingering_potion.effect.hellfire_potion": "Lingering Potion of Hellfire",
|
"item.minecraft.lingering_potion.effect.hellfire_potion": "Lingering Potion of Hellfire",
|
||||||
|
|||||||
Reference in New Issue
Block a user