diff --git a/src/generated/resources/assets/tfmg/blockstates/gas_lamp.json b/src/generated/resources/assets/tfmg/blockstates/gas_lamp.json new file mode 100644 index 00000000..ae545c53 --- /dev/null +++ b/src/generated/resources/assets/tfmg/blockstates/gas_lamp.json @@ -0,0 +1,10 @@ +{ + "variants": { + "lit=false": { + "model": "tfmg:block/gas_lamp/block" + }, + "lit=true": { + "model": "tfmg:block/gas_lamp/block_lit" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/tfmg/lang/en_ud.json b/src/generated/resources/assets/tfmg/lang/en_ud.json index c2b5a89f..e95d32de 100644 --- a/src/generated/resources/assets/tfmg/lang/en_ud.json +++ b/src/generated/resources/assets/tfmg/lang/en_ud.json @@ -204,6 +204,8 @@ "block.tfmg.fossilstone": "ǝuoʇsןıssoℲ", "block.tfmg.galena": "ɐuǝןɐ⅁", "block.tfmg.galena_pillar": "ɹɐןןıԀ ɐuǝןɐ⅁", + "block.tfmg.gas_lamp": "dɯɐꞀ sɐ⅁", + "block.tfmg.gas_lamp.tooltip.summary": "˙ʇɥbıן ǝpıʌoɹd oʇ spınןɟ ǝןqıʇsnqɯoɔ suɹnᗺ", "block.tfmg.gasoline": "ǝuıןosɐ⅁", "block.tfmg.generator": "ɹoʇɐɹǝuǝ⅁", "block.tfmg.glass_aluminum_pipe": "ǝdıԀ ɯnuıɯnןⱯ ssɐן⅁", diff --git a/src/generated/resources/assets/tfmg/lang/en_us.json b/src/generated/resources/assets/tfmg/lang/en_us.json index 309fc2c5..5faefbe2 100644 --- a/src/generated/resources/assets/tfmg/lang/en_us.json +++ b/src/generated/resources/assets/tfmg/lang/en_us.json @@ -204,6 +204,8 @@ "block.tfmg.fossilstone": "Fossilstone", "block.tfmg.galena": "Galena", "block.tfmg.galena_pillar": "Galena Pillar", + "block.tfmg.gas_lamp": "Gas Lamp", + "block.tfmg.gas_lamp.tooltip.summary": "Burns combustible fluids to provide light.", "block.tfmg.gasoline": "Gasoline", "block.tfmg.generator": "Generator", "block.tfmg.glass_aluminum_pipe": "Glass Aluminum Pipe", diff --git a/src/generated/resources/assets/tfmg/models/item/gas_lamp.json b/src/generated/resources/assets/tfmg/models/item/gas_lamp.json new file mode 100644 index 00000000..c7b89d27 --- /dev/null +++ b/src/generated/resources/assets/tfmg/models/item/gas_lamp.json @@ -0,0 +1,3 @@ +{ + "parent": "tfmg:block/gas_lamp/item" +} \ No newline at end of file diff --git a/src/generated/resources/data/minecraft/tags/blocks/mineable/pickaxe.json b/src/generated/resources/data/minecraft/tags/blocks/mineable/pickaxe.json index 0f4a9f38..51f5f4c4 100644 --- a/src/generated/resources/data/minecraft/tags/blocks/mineable/pickaxe.json +++ b/src/generated/resources/data/minecraft/tags/blocks/mineable/pickaxe.json @@ -110,6 +110,7 @@ "tfmg:electric_motor", "tfmg:creative_generator", "tfmg:accumulator", + "tfmg:gas_lamp", "tfmg:light_bulb", "tfmg:circular_light", "tfmg:modern_light", diff --git a/src/generated/resources/data/tfmg/loot_tables/blocks/gas_lamp.json b/src/generated/resources/data/tfmg/loot_tables/blocks/gas_lamp.json new file mode 100644 index 00000000..248fe432 --- /dev/null +++ b/src/generated/resources/data/tfmg/loot_tables/blocks/gas_lamp.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "tfmg:gas_lamp" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "tfmg:blocks/gas_lamp" +} \ No newline at end of file diff --git a/src/main/java/com/drmangotea/tfmg/base/TFMGShapes.java b/src/main/java/com/drmangotea/tfmg/base/TFMGShapes.java index c6e956bc..1f1d49ac 100644 --- a/src/main/java/com/drmangotea/tfmg/base/TFMGShapes.java +++ b/src/main/java/com/drmangotea/tfmg/base/TFMGShapes.java @@ -136,6 +136,7 @@ public class TFMGShapes { PUMPJACK_CRANK = shape(0, 0, 0, 16, 8, 16).build(), INDUSTRIAL_PIPE = shape(4, 0, 4, 12, 16, 12).build(), FLARESTACK = shape(3, 0, 3, 13, 14, 14).build(), + GAS_LAMP = shape(1, 0, 1, 15, 22, 15).build(), PUMPJACK_BASE = shape(3, 0, 3, 13, 16, 13).build(), TRAFFIC_LIGHT = shape(3, 0, 3, 13, 16, 13).build(), REBAR_FLOOR = shape(0, 4, 0, 16, 12, 16) diff --git a/src/main/java/com/drmangotea/tfmg/content/machinery/misc/gas_lamp/GasLampBlock.java b/src/main/java/com/drmangotea/tfmg/content/machinery/misc/gas_lamp/GasLampBlock.java new file mode 100644 index 00000000..d60bf0f9 --- /dev/null +++ b/src/main/java/com/drmangotea/tfmg/content/machinery/misc/gas_lamp/GasLampBlock.java @@ -0,0 +1,56 @@ +package com.drmangotea.tfmg.content.machinery.misc.gas_lamp; + +import com.drmangotea.tfmg.base.TFMGShapes; +import com.drmangotea.tfmg.content.machinery.misc.flarestack.FlarestackBlockEntity; +import com.drmangotea.tfmg.registry.TFMGBlockEntities; +import com.simibubi.create.content.equipment.wrench.IWrenchable; +import com.simibubi.create.foundation.block.IBE; +import net.minecraft.core.BlockPos; +import net.minecraft.world.item.context.BlockPlaceContext; +import net.minecraft.world.level.BlockGetter; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.entity.BlockEntityType; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.block.state.StateDefinition; +import net.minecraft.world.level.block.state.properties.BlockStateProperties; +import net.minecraft.world.level.block.state.properties.BooleanProperty; +import net.minecraft.world.phys.shapes.CollisionContext; +import net.minecraft.world.phys.shapes.VoxelShape; + +import javax.annotation.Nullable; + +public class GasLampBlock extends Block implements IBE { + public static final BooleanProperty LIT = BlockStateProperties.LIT; + + public GasLampBlock(Properties properties) { + super(properties); + this.registerDefaultState(this.stateDefinition.any().setValue(LIT, false)); + } + + + @Override + public VoxelShape getShape(BlockState pState, BlockGetter worldIn, BlockPos pos, CollisionContext context) { + + return TFMGShapes.GAS_LAMP; + } + @Nullable + public BlockState getStateForPlacement(BlockPlaceContext context) { + + return this.defaultBlockState().setValue(LIT, Boolean.FALSE); + } + + + protected void createBlockStateDefinition(StateDefinition.Builder p_51305_) { + p_51305_.add(LIT); + } + + @Override + public Class getBlockEntityClass() { + return GasLampBlockEntity.class; + } + + @Override + public BlockEntityType getBlockEntityType() { + return TFMGBlockEntities.GAS_LAMP.get(); + } +} diff --git a/src/main/java/com/drmangotea/tfmg/content/machinery/misc/gas_lamp/GasLampBlockEntity.java b/src/main/java/com/drmangotea/tfmg/content/machinery/misc/gas_lamp/GasLampBlockEntity.java new file mode 100644 index 00000000..330e0fb2 --- /dev/null +++ b/src/main/java/com/drmangotea/tfmg/content/machinery/misc/gas_lamp/GasLampBlockEntity.java @@ -0,0 +1,115 @@ +package com.drmangotea.tfmg.content.machinery.misc.gas_lamp; + +import com.drmangotea.tfmg.base.TFMGUtils; +import com.drmangotea.tfmg.registry.TFMGTags; +import com.simibubi.create.api.equipment.goggles.IHaveGoggleInformation; +import com.simibubi.create.foundation.blockEntity.SmartBlockEntity; +import com.simibubi.create.foundation.blockEntity.behaviour.BlockEntityBehaviour; +import com.simibubi.create.foundation.fluid.SmartFluidTank; +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.network.chat.Component; +import net.minecraft.world.level.block.entity.BlockEntityType; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraftforge.common.capabilities.Capability; +import net.minecraftforge.common.capabilities.ForgeCapabilities; +import net.minecraftforge.common.util.LazyOptional; +import net.minecraftforge.fluids.FluidStack; +import net.minecraftforge.fluids.capability.IFluidHandler; +import net.minecraftforge.fluids.capability.templates.FluidTank; + +import javax.annotation.Nonnull; +import javax.annotation.Nullable; +import java.util.List; + +public class GasLampBlockEntity extends SmartBlockEntity implements IHaveGoggleInformation { + + protected LazyOptional fluidCapability; + public FluidTank tankInventory; + + public int lightTimer = 0; + + + public GasLampBlockEntity(BlockEntityType type, BlockPos pos, BlockState state) { + super(type, pos, state); + tankInventory = createInventory(); + fluidCapability = LazyOptional.of(() -> tankInventory); + } + + protected SmartFluidTank createInventory() { + return new SmartFluidTank(1000, this::onFluidStackChanged) { + @Override + public boolean isFluidValid(FluidStack stack) { + return stack.getFluid().is(TFMGTags.TFMGFluidTags.FLAMMABLE.tag)|| + stack.getFluid().is(TFMGTags.TFMGFluidTags.FUEL.tag); + } + }; + } + + @Nonnull + @Override + public LazyOptional getCapability(@Nonnull Capability cap, @Nullable Direction side) { + + if (cap == ForgeCapabilities.FLUID_HANDLER) + return fluidCapability.cast(); + return super.getCapability(cap, side); + } + + @Override + public void invalidate() { + super.invalidate(); + fluidCapability.invalidate(); + } + + protected void onFluidStackChanged(FluidStack newFluidStack) { + if (!hasLevel()) return; + sendData(); + setChanged(); + } + + @Override + @SuppressWarnings("removal") + public boolean addToGoggleTooltip(List tooltip, boolean isPlayerSneaking) { + return TFMGUtils.createFluidTooltip(this, tooltip); + } + + @Override + public void tick() { + super.tick(); + + if (tankInventory.isEmpty() || !tankInventory.isFluidValid(tankInventory.getFluid())) { + level.setBlock(getBlockPos(), this.getBlockState() + .setValue(GasLampBlock.LIT, false), 2); + return; + } + + // drain rate: 5mB/t + if (tankInventory.getFluidAmount() > 0) { + tankInventory.drain(5, IFluidHandler.FluidAction.EXECUTE); + lightTimer = 100; + } + + if (lightTimer > 0) { + lightTimer--; + level.setBlock(getBlockPos(), this.getBlockState() + .setValue(GasLampBlock.LIT, true), 2); + } + } + + @Override + protected void read(CompoundTag compound, boolean clientPacket) { + super.read(compound, clientPacket); + tankInventory.readFromNBT(compound.getCompound("TankContent")); + } + + @Override + public void write(CompoundTag compound, boolean clientPacket) { + super.write(compound, clientPacket); + compound.put("TankContent", tankInventory.writeToNBT(new CompoundTag())); + } + + @Override + public void addBehaviours(List behaviours) {} + +} diff --git a/src/main/java/com/drmangotea/tfmg/content/machinery/misc/gas_lamp/GasLampGenerator.java b/src/main/java/com/drmangotea/tfmg/content/machinery/misc/gas_lamp/GasLampGenerator.java new file mode 100644 index 00000000..89398f7a --- /dev/null +++ b/src/main/java/com/drmangotea/tfmg/content/machinery/misc/gas_lamp/GasLampGenerator.java @@ -0,0 +1,32 @@ +package com.drmangotea.tfmg.content.machinery.misc.gas_lamp; + +import com.drmangotea.tfmg.content.machinery.misc.flarestack.FlarestackBlock; +import com.simibubi.create.foundation.data.SpecialBlockStateGen; +import com.tterrag.registrate.providers.DataGenContext; +import com.tterrag.registrate.providers.RegistrateBlockstateProvider; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraftforge.client.model.generators.ModelFile; + +import static com.simibubi.create.foundation.data.AssetLookup.partialBaseModel; + +public class GasLampGenerator extends SpecialBlockStateGen { + + @Override + protected int getXRotation(BlockState state) { + return 0; + } + + @Override + protected int getYRotation(BlockState state) { + return 0; + } + + @Override + public ModelFile getModel(DataGenContext ctx, RegistrateBlockstateProvider prov, + BlockState state) { + + return state.getValue(FlarestackBlock.LIT) ? partialBaseModel(ctx, prov, "lit") + : partialBaseModel(ctx, prov); + } +} diff --git a/src/main/java/com/drmangotea/tfmg/registry/TFMGBlockEntities.java b/src/main/java/com/drmangotea/tfmg/registry/TFMGBlockEntities.java index e0478b4f..762bccab 100644 --- a/src/main/java/com/drmangotea/tfmg/registry/TFMGBlockEntities.java +++ b/src/main/java/com/drmangotea/tfmg/registry/TFMGBlockEntities.java @@ -81,6 +81,7 @@ import com.drmangotea.tfmg.content.machinery.misc.concrete_hose.ConcreteHoseRend import com.drmangotea.tfmg.content.machinery.misc.exhaust.ExhaustBlockEntity; import com.drmangotea.tfmg.content.machinery.misc.firebox.FireboxBlockEntity; import com.drmangotea.tfmg.content.machinery.misc.flarestack.FlarestackBlockEntity; +import com.drmangotea.tfmg.content.machinery.misc.gas_lamp.GasLampBlockEntity; import com.drmangotea.tfmg.content.machinery.misc.machine_input.MachineInputBlockEntity; import com.drmangotea.tfmg.content.machinery.misc.smokestack.SmokestackBlockEntity; import com.drmangotea.tfmg.content.machinery.misc.winding_machine.WindingMachineBlockEntity; @@ -402,6 +403,11 @@ public class TFMGBlockEntities { .validBlocks(TFMGBlocks.FLARESTACK) .register(); + public static final BlockEntityEntry GAS_LAMP = REGISTRATE + .blockEntity("gas_lamp", GasLampBlockEntity::new) + .validBlocks(TFMGBlocks.GAS_LAMP) + .register(); + public static final BlockEntityEntry TFMG_COGWHEEL = REGISTRATE .blockEntity("tfmg_simple_kinetic", BracketedKineticBlockEntity::new) .visual(() -> TFMGCogwheelVisual::create, true) diff --git a/src/main/java/com/drmangotea/tfmg/registry/TFMGBlocks.java b/src/main/java/com/drmangotea/tfmg/registry/TFMGBlocks.java index 882d57dd..60a6e1af 100644 --- a/src/main/java/com/drmangotea/tfmg/registry/TFMGBlocks.java +++ b/src/main/java/com/drmangotea/tfmg/registry/TFMGBlocks.java @@ -1,6 +1,7 @@ package com.drmangotea.tfmg.registry; +import com.drmangotea.tfmg.TFMGClient; import com.drmangotea.tfmg.base.*; import com.drmangotea.tfmg.base.blocks.TFMGDirectionalBlock; import com.drmangotea.tfmg.base.blocks.TFMGVanillaBlockStates; @@ -35,6 +36,7 @@ import com.drmangotea.tfmg.content.electricity.generators.creative_generator.Cre import com.drmangotea.tfmg.content.electricity.generators.large_generator.RotorBlock; import com.drmangotea.tfmg.content.electricity.generators.large_generator.StatorBlock; import com.drmangotea.tfmg.content.electricity.generators.large_generator.StatorGenerator; +import com.drmangotea.tfmg.content.machinery.misc.gas_lamp.GasLampBlock; import com.drmangotea.tfmg.content.electricity.lights.LampGenerator; import com.drmangotea.tfmg.content.electricity.lights.LightBulbBlock; import com.drmangotea.tfmg.content.electricity.lights.neon_tube.NeonTubeBlock; @@ -49,7 +51,6 @@ import com.drmangotea.tfmg.content.electricity.utilities.diode.EncasedDiodeBlock import com.drmangotea.tfmg.content.electricity.utilities.electric_motor.ElectricMotorBlock; import com.drmangotea.tfmg.content.electricity.utilities.electric_pump.ElectricPumpBlock; import com.drmangotea.tfmg.content.electricity.utilities.electric_switch.ElectricSwitchBlock; -import com.drmangotea.tfmg.content.electricity.utilities.fuse_block.FuseBlock; import com.drmangotea.tfmg.content.electricity.utilities.polarizer.PolarizerBlock; import com.drmangotea.tfmg.content.electricity.utilities.potentiometer.PotentiometerBlock; import com.drmangotea.tfmg.content.electricity.utilities.potentiometer.EncasedPotentiometerBlock; @@ -90,6 +91,7 @@ import com.drmangotea.tfmg.content.machinery.misc.exhaust.ExhaustBlock; import com.drmangotea.tfmg.content.machinery.misc.firebox.FireboxBlock; import com.drmangotea.tfmg.content.machinery.misc.flarestack.FlarestackBlock; import com.drmangotea.tfmg.content.machinery.misc.flarestack.FlarestackGenerator; +import com.drmangotea.tfmg.content.machinery.misc.gas_lamp.GasLampGenerator; import com.drmangotea.tfmg.content.machinery.misc.machine_input.MachineInputBlock; import com.drmangotea.tfmg.content.machinery.misc.smokestack.SmokestackBlock; import com.drmangotea.tfmg.content.machinery.misc.smokestack.SmokestackGenerator; @@ -114,7 +116,6 @@ import com.drmangotea.tfmg.content.machinery.vat.base.VatItem; import com.drmangotea.tfmg.content.machinery.vat.base.VatModel; import com.drmangotea.tfmg.content.machinery.vat.electrode_holder.ElectrodeHolderBlock; import com.drmangotea.tfmg.content.machinery.vat.industrial_mixer.IndustrialMixerBlock; -import com.simibubi.create.AllMountedStorageTypes; import com.simibubi.create.AllTags; import com.simibubi.create.api.stress.BlockStressValues; import com.simibubi.create.content.contraptions.bearing.StabilizedBearingMovementBehaviour; @@ -148,6 +149,7 @@ import net.minecraftforge.common.Tags; import java.util.ArrayList; import java.util.List; import java.util.Map; +import java.util.function.Supplier; import static com.drmangotea.tfmg.TFMG.REGISTRATE; import static com.drmangotea.tfmg.base.TFMGBuilderTransformers.*; @@ -1064,7 +1066,21 @@ public class TFMGBlocks { .item(AccumulatorItem::new) .build() .register(); - ; + + public static final BlockEntry GAS_LAMP = + REGISTRATE.block("gas_lamp", GasLampBlock::new) + .initialProperties(SharedProperties::copperMetal) + .properties(p -> p.sound(SoundType.NETHERITE_BLOCK)) + .addLayer(() -> RenderType::cutoutMipped) + .properties(p -> p + .lightLevel(s -> s.getValue(GasLampBlock.LIT) ? 15 : 0) + .noOcclusion()) + .blockstate(new GasLampGenerator()::generate) + .transform(pickaxeOnly()) + .item() + .transform(customItemModel()) + .register(); + public static final BlockEntry LIGHT_BULB = REGISTRATE.block("light_bulb", p -> new LightBulbBlock(p, TFMGBlockEntities.LIGHT_BULB, TFMGShapes.LIGHT_BULB)) .initialProperties(() -> Blocks.IRON_BLOCK) diff --git a/src/main/resources/assets/tfmg/lang/default/tooltips.json b/src/main/resources/assets/tfmg/lang/default/tooltips.json index 3b54448c..cc844d9e 100644 --- a/src/main/resources/assets/tfmg/lang/default/tooltips.json +++ b/src/main/resources/assets/tfmg/lang/default/tooltips.json @@ -255,5 +255,6 @@ "item.tfmg.quad_potato_cannon.tooltip.condition2": "While wearing Backtank", "item.tfmg.quad_potato_cannon.tooltip.behaviour2": "_No_ _Durability_ will be used. Instead, _Air_ _pressure_ is drained from the Tank", - "item.tfmg.fire_extinguisher.tooltip.summary": "Uses _Carbon Dioxide_ to extinguish fires." + "item.tfmg.fire_extinguisher.tooltip.summary": "Uses _Carbon Dioxide_ to extinguish fires.", + "block.tfmg.gas_lamp.tooltip.summary": "Burns combustible fluids to provide light." } diff --git a/src/main/resources/assets/tfmg/lang/ru_ru.json b/src/main/resources/assets/tfmg/lang/ru_ru.json index 51579558..67d91099 100644 --- a/src/main/resources/assets/tfmg/lang/ru_ru.json +++ b/src/main/resources/assets/tfmg/lang/ru_ru.json @@ -204,6 +204,8 @@ "block.tfmg.fossilstone": "Окаменелость", "block.tfmg.galena": "Галенит", "block.tfmg.galena_pillar": "Галенитовая колонна", + "block.tfmg.gas_lamp": "Газовый фонарь", + "block.tfmg.gas_lamp.tooltip.summary": "Источник освещения. Потребляет _горючие жидкости и газы_.", "block.tfmg.gasoline": "Бензин", "block.tfmg.generator": "Генератор", "block.tfmg.glass_aluminum_pipe": "Застеклённая алюминиевая жидкостная труба", diff --git a/src/main/resources/assets/tfmg/models/block/gas_lamp/block.json b/src/main/resources/assets/tfmg/models/block/gas_lamp/block.json new file mode 100644 index 00000000..d780a050 --- /dev/null +++ b/src/main/resources/assets/tfmg/models/block/gas_lamp/block.json @@ -0,0 +1,204 @@ +{ + "format_version": "1.21.6", + "credit": "Made with Blockbench", + "parent": "minecraft:block/block", + "textures": { + "0": "tfmg:block/gas_lamp", + "particle": "block/anvil" + }, + "elements": [ + { + "name": "base", + "from": [4, 0, 4], + "to": [12, 5, 12], + "faces": { + "north": {"uv": [0, 2.75, 2, 4], "texture": "#0"}, + "east": {"uv": [0, 2.75, 2, 4], "texture": "#0"}, + "south": {"uv": [0, 2.75, 2, 4], "texture": "#0"}, + "west": {"uv": [0, 2.75, 2, 4], "texture": "#0"}, + "up": {"uv": [0, 6, 2, 8], "texture": "#0"}, + "down": {"uv": [0, 4, 2, 6], "texture": "#0"} + } + }, + { + "name": "baseplate", + "from": [1.25, 2, 1.25], + "to": [14.75, 4, 14.75], + "rotation": {"angle": 0, "axis": "y", "origin": [12, 2, 2]}, + "faces": { + "north": {"uv": [0.5, 8.25, 3.5, 8.75], "texture": "#0"}, + "east": {"uv": [0.5, 8.25, 3.5, 8.75], "texture": "#0"}, + "south": {"uv": [0.5, 8.25, 3.5, 8.75], "texture": "#0"}, + "west": {"uv": [0.25, 8.25, 3.75, 8.75], "texture": "#0"}, + "up": {"uv": [0.25, 8.75, 3.75, 12.25], "texture": "#0"}, + "down": {"uv": [0.25, 8.75, 3.75, 12.25], "texture": "#0"} + } + }, + { + "name": "nozzle", + "from": [6, 5, 6], + "to": [10, 6, 10], + "rotation": {"angle": 0, "axis": "y", "origin": [0, -9, 0]}, + "faces": { + "north": {"uv": [0, 2.5, 1, 2.75], "texture": "#0"}, + "east": {"uv": [0, 2.5, 1, 2.75], "texture": "#0"}, + "south": {"uv": [0, 2.5, 1, 2.75], "texture": "#0"}, + "west": {"uv": [0, 2.5, 1, 2.75], "texture": "#0"}, + "up": {"uv": [0, 1.5, 1, 2.5], "texture": "#0"} + } + }, + { + "name": "glass_lower_n", + "from": [1, 3, 1], + "to": [15, 12, 1], + "rotation": {"angle": 0, "axis": "z", "origin": [2, 1, 2]}, + "faces": { + "north": {"uv": [5, 2.25, 8.5, 4.5], "texture": "#0"}, + "south": {"uv": [5, 2.25, 8.5, 4.5], "texture": "#0"}, + "down": {"uv": [5, 4.5, 8.5, 8], "texture": "#0"} + } + }, + { + "name": "glass_lower_e", + "from": [15, 3, 1], + "to": [15, 12, 15], + "rotation": {"angle": 0, "axis": "z", "origin": [2, 1, 2]}, + "faces": { + "east": {"uv": [5, 2.25, 8.5, 4.5], "texture": "#0"}, + "west": {"uv": [5, 2.25, 8.5, 4.5], "texture": "#0"}, + "down": {"uv": [5, 4.5, 8.5, 8], "texture": "#0"} + } + }, + { + "name": "glass_lower_s", + "from": [1, 3, 15], + "to": [15, 12, 15], + "rotation": {"angle": 0, "axis": "z", "origin": [2, 1, 2]}, + "faces": { + "north": {"uv": [5, 2.25, 8.5, 4.5], "texture": "#0"}, + "south": {"uv": [5, 2.25, 8.5, 4.5], "texture": "#0"}, + "down": {"uv": [5, 4.5, 8.5, 8], "texture": "#0"} + } + }, + { + "name": "glass_lower_w", + "from": [1, 3, 1], + "to": [1, 12, 15], + "rotation": {"angle": 0, "axis": "z", "origin": [2, 1, 2]}, + "faces": { + "east": {"uv": [5, 2.25, 8.5, 4.5], "texture": "#0"}, + "west": {"uv": [5, 2.25, 8.5, 4.5], "texture": "#0"}, + "down": {"uv": [5, 4.5, 8.5, 8], "texture": "#0"} + } + }, + { + "name": "glass_joiner_corners", + "from": [0, 12, 0], + "to": [16, 12, 16], + "rotation": {"angle": 0, "axis": "y", "origin": [0, 12, 0]}, + "faces": { + "up": {"uv": [8.5, 4, 12.5, 8], "texture": "#0"}, + "down": {"uv": [8.5, 4, 12.5, 8], "texture": "#0"} + } + }, + { + "name": "glass_upper_n", + "from": [0, 12, 0], + "to": [16, 21, 0], + "rotation": {"angle": 0, "axis": "z", "origin": [2, 10, 2]}, + "faces": { + "north": {"uv": [8.5, 1.75, 12.5, 4], "texture": "#0"}, + "south": {"uv": [8.5, 1.75, 12.5, 4], "texture": "#0"} + } + }, + { + "name": "glass_upper_e", + "from": [16, 12, 0], + "to": [16, 21, 16], + "rotation": {"angle": 0, "axis": "z", "origin": [2, 10, 18]}, + "faces": { + "east": {"uv": [8.5, 1.75, 12.5, 4], "texture": "#0"}, + "west": {"uv": [8.5, 1.75, 12.5, 4], "texture": "#0"} + } + }, + { + "name": "glass_upper_s", + "from": [0, 12, 16], + "to": [16, 21, 16], + "rotation": {"angle": 0, "axis": "z", "origin": [2, 10, 18]}, + "faces": { + "north": {"uv": [8.5, 1.75, 12.5, 4], "texture": "#0"}, + "south": {"uv": [8.5, 1.75, 12.5, 4], "texture": "#0"} + } + }, + { + "name": "glass_upper_w", + "from": [0, 12, 0], + "to": [0, 21, 16], + "rotation": {"angle": 0, "axis": "z", "origin": [-14, 10, 18]}, + "faces": { + "east": {"uv": [8.5, 1.75, 12.5, 4], "texture": "#0"}, + "west": {"uv": [8.5, 1.75, 12.5, 4], "texture": "#0"} + } + }, + { + "name": "top", + "from": [0, 21, 0], + "to": [16, 22, 16], + "rotation": {"angle": 0, "axis": "y", "origin": [0, 21, 0]}, + "faces": { + "north": {"uv": [0, 8.25, 4, 8.5], "texture": "#0"}, + "east": {"uv": [0, 8.25, 4, 8.5], "texture": "#0"}, + "south": {"uv": [0, 8.25, 4, 8.5], "texture": "#0"}, + "west": {"uv": [0, 8.25, 4, 8.5], "texture": "#0"}, + "up": {"uv": [0, 8.5, 4, 12.5], "texture": "#0"}, + "down": {"uv": [0, 8.5, 4, 12.5], "texture": "#0"} + } + }, + { + "name": "top_cap", + "from": [4, 22, 4], + "to": [12, 24, 12], + "rotation": {"angle": 0, "axis": "y", "origin": [0, 22, 0]}, + "faces": { + "north": {"uv": [1, 9, 3, 9.5], "texture": "#0"}, + "east": {"uv": [1, 9, 3, 9.5], "texture": "#0"}, + "south": {"uv": [1, 9, 3, 9.5], "texture": "#0"}, + "west": {"uv": [1, 9, 3, 9.5], "texture": "#0"}, + "up": {"uv": [1, 9.5, 3, 11.5], "texture": "#0"} + } + } + ], + "display": { + "thirdperson_righthand": { + "rotation": [0, 30, 0], + "translation": [0, 2, 0], + "scale": [0.4, 0.4, 0.4] + }, + "thirdperson_lefthand": { + "rotation": [0, 30, 0], + "translation": [0, 2, 0], + "scale": [0.4, 0.4, 0.4] + }, + "firstperson_righthand": { + "rotation": [0, 15, 15], + "scale": [0.4, 0.4, 0.4] + }, + "firstperson_lefthand": { + "rotation": [0, 15, 15], + "scale": [0.4, 0.4, 0.4] + }, + "ground": { + "translation": [0, 1, 0], + "scale": [0.5, 0.5, 0.5] + }, + "gui": { + "rotation": [30, 30, 0], + "translation": [0, -2.5, 0], + "scale": [0.5, 0.5, 0.5] + }, + "fixed": { + "scale": [0.5, 0.5, 0.5] + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/tfmg/models/block/gas_lamp/block_lit.json b/src/main/resources/assets/tfmg/models/block/gas_lamp/block_lit.json new file mode 100644 index 00000000..4d9de2a3 --- /dev/null +++ b/src/main/resources/assets/tfmg/models/block/gas_lamp/block_lit.json @@ -0,0 +1,235 @@ +{ + "format_version": "1.21.6", + "credit": "Made with Blockbench", + "parent": "minecraft:block/block", + "textures": { + "0": "tfmg:block/gas_lamp", + "3": "block/campfire_fire", + "particle": "block/anvil" + }, + "elements": [ + { + "name": "base", + "from": [4, 0, 4], + "to": [12, 5, 12], + "faces": { + "north": {"uv": [0, 2.75, 2, 4], "texture": "#0"}, + "east": {"uv": [0, 2.75, 2, 4], "texture": "#0"}, + "south": {"uv": [0, 2.75, 2, 4], "texture": "#0"}, + "west": {"uv": [0, 2.75, 2, 4], "texture": "#0"}, + "up": {"uv": [0, 6, 2, 8], "texture": "#0"}, + "down": {"uv": [0, 4, 2, 6], "texture": "#0"} + } + }, + { + "name": "baseplate", + "from": [1.25, 2, 1.25], + "to": [14.75, 4, 14.75], + "rotation": {"angle": 0, "axis": "y", "origin": [12, 2, 2]}, + "faces": { + "north": {"uv": [0.5, 8.25, 3.5, 8.75], "texture": "#0"}, + "east": {"uv": [0.5, 8.25, 3.5, 8.75], "texture": "#0"}, + "south": {"uv": [0.5, 8.25, 3.5, 8.75], "texture": "#0"}, + "west": {"uv": [0.25, 8.25, 3.75, 8.75], "texture": "#0"}, + "up": {"uv": [0.25, 8.75, 3.75, 12.25], "texture": "#0"}, + "down": {"uv": [0.25, 8.75, 3.75, 12.25], "texture": "#0"} + } + }, + { + "name": "nozzle", + "from": [6, 5, 6], + "to": [10, 6, 10], + "rotation": {"angle": 0, "axis": "y", "origin": [0, -9, 0]}, + "faces": { + "north": {"uv": [0, 2.5, 1, 2.75], "texture": "#0"}, + "east": {"uv": [0, 2.5, 1, 2.75], "texture": "#0"}, + "south": {"uv": [0, 2.5, 1, 2.75], "texture": "#0"}, + "west": {"uv": [0, 2.5, 1, 2.75], "texture": "#0"}, + "up": {"uv": [0, 1.5, 1, 2.5], "texture": "#0"} + } + }, + { + "name": "glass_lower_n", + "from": [1, 3, 1], + "to": [15, 12, 1], + "rotation": {"angle": 0, "axis": "z", "origin": [2, 1, 2]}, + "faces": { + "north": {"uv": [5, 2.25, 8.5, 4.5], "texture": "#0"}, + "south": {"uv": [5, 2.25, 8.5, 4.5], "texture": "#0"}, + "down": {"uv": [5, 4.5, 8.5, 8], "texture": "#0"} + } + }, + { + "name": "glass_lower_e", + "from": [15, 3, 1], + "to": [15, 12, 15], + "rotation": {"angle": 0, "axis": "z", "origin": [2, 1, 2]}, + "faces": { + "east": {"uv": [5, 2.25, 8.5, 4.5], "texture": "#0"}, + "west": {"uv": [5, 2.25, 8.5, 4.5], "texture": "#0"}, + "down": {"uv": [5, 4.5, 8.5, 8], "texture": "#0"} + } + }, + { + "name": "glass_lower_s", + "from": [1, 3, 15], + "to": [15, 12, 15], + "rotation": {"angle": 0, "axis": "z", "origin": [2, 1, 2]}, + "faces": { + "north": {"uv": [5, 2.25, 8.5, 4.5], "texture": "#0"}, + "south": {"uv": [5, 2.25, 8.5, 4.5], "texture": "#0"}, + "down": {"uv": [5, 4.5, 8.5, 8], "texture": "#0"} + } + }, + { + "name": "glass_lower_w", + "from": [1, 3, 1], + "to": [1, 12, 15], + "rotation": {"angle": 0, "axis": "z", "origin": [2, 1, 2]}, + "faces": { + "east": {"uv": [5, 2.25, 8.5, 4.5], "texture": "#0"}, + "west": {"uv": [5, 2.25, 8.5, 4.5], "texture": "#0"}, + "down": {"uv": [5, 4.5, 8.5, 8], "texture": "#0"} + } + }, + { + "name": "glass_joiner_corners", + "from": [0, 12, 0], + "to": [16, 12, 16], + "rotation": {"angle": 0, "axis": "y", "origin": [0, 12, 0]}, + "faces": { + "up": {"uv": [8.5, 4, 12.5, 8], "texture": "#0"}, + "down": {"uv": [8.5, 4, 12.5, 8], "texture": "#0"} + } + }, + { + "name": "glass_upper_n", + "from": [0, 12, 0], + "to": [16, 21, 0], + "rotation": {"angle": 0, "axis": "z", "origin": [2, 10, 2]}, + "faces": { + "north": {"uv": [8.5, 1.75, 12.5, 4], "texture": "#0"}, + "south": {"uv": [8.5, 1.75, 12.5, 4], "texture": "#0"} + } + }, + { + "name": "glass_upper_e", + "from": [16, 12, 0], + "to": [16, 21, 16], + "rotation": {"angle": 0, "axis": "z", "origin": [2, 10, 18]}, + "faces": { + "east": {"uv": [8.5, 1.75, 12.5, 4], "texture": "#0"}, + "west": {"uv": [8.5, 1.75, 12.5, 4], "texture": "#0"} + } + }, + { + "name": "glass_upper_s", + "from": [0, 12, 16], + "to": [16, 21, 16], + "rotation": {"angle": 0, "axis": "z", "origin": [2, 10, 18]}, + "faces": { + "north": {"uv": [8.5, 1.75, 12.5, 4], "texture": "#0"}, + "south": {"uv": [8.5, 1.75, 12.5, 4], "texture": "#0"} + } + }, + { + "name": "glass_upper_w", + "from": [0, 12, 0], + "to": [0, 21, 16], + "rotation": {"angle": 0, "axis": "z", "origin": [-14, 10, 18]}, + "faces": { + "east": {"uv": [8.5, 1.75, 12.5, 4], "texture": "#0"}, + "west": {"uv": [8.5, 1.75, 12.5, 4], "texture": "#0"} + } + }, + { + "name": "top", + "from": [0, 21, 0], + "to": [16, 22, 16], + "rotation": {"angle": 0, "axis": "y", "origin": [0, 21, 0]}, + "faces": { + "north": {"uv": [0, 8.25, 4, 8.5], "texture": "#0"}, + "east": {"uv": [0, 8.25, 4, 8.5], "texture": "#0"}, + "south": {"uv": [0, 8.25, 4, 8.5], "texture": "#0"}, + "west": {"uv": [0, 8.25, 4, 8.5], "texture": "#0"}, + "up": {"uv": [0, 8.5, 4, 12.5], "texture": "#0"}, + "down": {"uv": [0, 8.5, 4, 12.5], "texture": "#0"} + } + }, + { + "name": "top_cap", + "from": [4, 22, 4], + "to": [12, 24, 12], + "rotation": {"angle": 0, "axis": "y", "origin": [0, 22, 0]}, + "faces": { + "north": {"uv": [1, 9, 3, 9.5], "texture": "#0"}, + "east": {"uv": [1, 9, 3, 9.5], "texture": "#0"}, + "south": {"uv": [1, 9, 3, 9.5], "texture": "#0"}, + "west": {"uv": [1, 9, 3, 9.5], "texture": "#0"}, + "up": {"uv": [1, 9.5, 3, 11.5], "texture": "#0"} + } + }, + { + "name": "fire_1", + "from": [8, 5, 2.8], + "to": [8, 21, 13.2], + "shade": false, + "rotation": {"angle": 45, "axis": "y", "origin": [8, -6, 8], "rescale": true}, + "faces": { + "north": {"uv": [0, 0, 0, 0], "texture": "#3"}, + "east": {"uv": [0, 0, 16, 16], "texture": "#3"}, + "south": {"uv": [0, 0, 0, 0], "texture": "#3"}, + "west": {"uv": [0, 0, 16, 16], "texture": "#3"}, + "up": {"uv": [0, 0, 0, 0], "texture": "#3"}, + "down": {"uv": [0, 0, 0, 0], "texture": "#3"} + } + }, + { + "name": "fire_2", + "from": [2.8, 5, 8], + "to": [13.2, 21, 8], + "shade": false, + "rotation": {"angle": 45, "axis": "y", "origin": [8, -6, 8], "rescale": true}, + "faces": { + "north": {"uv": [0, 0, 16, 16], "texture": "#3"}, + "east": {"uv": [0, 0, 0, 0], "texture": "#3"}, + "south": {"uv": [0, 0, 16, 16], "texture": "#3"}, + "west": {"uv": [0, 0, 0, 0], "texture": "#3"}, + "up": {"uv": [0, 0, 0, 0], "texture": "#3"}, + "down": {"uv": [0, 0, 0, 0], "texture": "#3"} + } + } + ], + "display": { + "thirdperson_righthand": { + "rotation": [0, 30, 0], + "translation": [0, 2, 0], + "scale": [0.4, 0.4, 0.4] + }, + "thirdperson_lefthand": { + "rotation": [0, 30, 0], + "translation": [0, 2, 0], + "scale": [0.4, 0.4, 0.4] + }, + "firstperson_righthand": { + "rotation": [0, 15, 15], + "scale": [0.4, 0.4, 0.4] + }, + "firstperson_lefthand": { + "rotation": [0, 15, 15], + "scale": [0.4, 0.4, 0.4] + }, + "ground": { + "translation": [0, 1, 0], + "scale": [0.5, 0.5, 0.5] + }, + "gui": { + "rotation": [30, 30, 0], + "translation": [0, -2.5, 0], + "scale": [0.5, 0.5, 0.5] + }, + "fixed": { + "scale": [0.5, 0.5, 0.5] + } + } +} diff --git a/src/main/resources/assets/tfmg/models/block/gas_lamp/item.json b/src/main/resources/assets/tfmg/models/block/gas_lamp/item.json new file mode 100644 index 00000000..9aa1e32a --- /dev/null +++ b/src/main/resources/assets/tfmg/models/block/gas_lamp/item.json @@ -0,0 +1,136 @@ +{ + "format_version": "1.21.6", + "credit": "Made with Blockbench", + "parent": "minecraft:block/block", + "textures": { + "0": "tfmg:block/gas_lamp", + "3": "block/campfire_fire", + "particle": "block/anvil" + }, + "elements": [ + { + "name": "base", + "from": [4, 0, 4], + "to": [12, 5, 12], + "faces": { + "north": {"uv": [0, 2.75, 2, 4], "texture": "#0"}, + "east": {"uv": [0, 2.75, 2, 4], "texture": "#0"}, + "south": {"uv": [0, 2.75, 2, 4], "texture": "#0"}, + "west": {"uv": [0, 2.75, 2, 4], "texture": "#0"}, + "up": {"uv": [0, 6, 2, 8], "texture": "#0"}, + "down": {"uv": [0, 4, 2, 6], "texture": "#0"} + } + }, + { + "name": "baseplate", + "from": [2, 2, 2], + "to": [14, 4, 14], + "rotation": {"angle": 0, "axis": "y", "origin": [12, 2, 2]}, + "faces": { + "north": {"uv": [2, 4, 5, 5], "texture": "#0"}, + "east": {"uv": [2, 4, 5, 5], "texture": "#0"}, + "south": {"uv": [2, 4, 5, 5], "texture": "#0"}, + "west": {"uv": [2, 4, 5, 5], "texture": "#0"}, + "up": {"uv": [2, 5, 5, 8], "texture": "#0"}, + "down": {"uv": [2, 5, 5, 8], "texture": "#0"} + } + }, + { + "name": "nozzle", + "from": [6, 5, 6], + "to": [10, 6, 10], + "rotation": {"angle": 0, "axis": "y", "origin": [0, -9, 0]}, + "faces": { + "north": {"uv": [0, 2.5, 1, 2.75], "texture": "#0"}, + "east": {"uv": [0, 2.5, 1, 2.75], "texture": "#0"}, + "south": {"uv": [0, 2.5, 1, 2.75], "texture": "#0"}, + "west": {"uv": [0, 2.5, 1, 2.75], "texture": "#0"}, + "up": {"uv": [0, 1.5, 1, 2.5], "texture": "#0"} + } + }, + { + "name": "glass_lower", + "from": [1, 3, 1], + "to": [15, 12, 15], + "rotation": {"angle": 0, "axis": "z", "origin": [2, 1, 2]}, + "faces": { + "north": {"uv": [5, 2.25, 8.5, 4.5], "texture": "#0"}, + "east": {"uv": [5, 2.25, 8.5, 4.5], "texture": "#0"}, + "south": {"uv": [5, 2.25, 8.5, 4.5], "texture": "#0"}, + "west": {"uv": [5, 2.25, 8.5, 4.5], "texture": "#0"}, + "down": {"uv": [5, 4.5, 8.5, 8], "texture": "#0"} + } + }, + { + "name": "glass_upper", + "from": [0, 12, 0], + "to": [16, 21, 16], + "rotation": {"angle": 0, "axis": "z", "origin": [2, 10, 2]}, + "faces": { + "north": {"uv": [8.5, 1.75, 12.5, 4], "texture": "#0"}, + "east": {"uv": [8.5, 1.75, 12.5, 4], "texture": "#0"}, + "south": {"uv": [8.5, 1.75, 12.5, 4], "texture": "#0"}, + "west": {"uv": [8.5, 1.75, 12.5, 4], "texture": "#0"}, + "down": {"uv": [8.5, 4, 12.5, 8], "texture": "#0"} + } + }, + { + "name": "top", + "from": [0, 21, 0], + "to": [16, 22, 16], + "rotation": {"angle": 0, "axis": "y", "origin": [0, 21, 0]}, + "faces": { + "north": {"uv": [0, 8.25, 4, 8.5], "texture": "#0"}, + "east": {"uv": [0, 8.25, 4, 8.5], "texture": "#0"}, + "south": {"uv": [0, 8.25, 4, 8.5], "texture": "#0"}, + "west": {"uv": [0, 8.25, 4, 8.5], "texture": "#0"}, + "up": {"uv": [0, 8.5, 4, 12.5], "texture": "#0"} + } + }, + { + "name": "top_cap", + "from": [4, 22, 4], + "to": [12, 24, 12], + "rotation": {"angle": 0, "axis": "y", "origin": [0, 22, 0]}, + "faces": { + "north": {"uv": [1, 9, 3, 9.5], "texture": "#0"}, + "east": {"uv": [1, 9, 3, 9.5], "texture": "#0"}, + "south": {"uv": [1, 9, 3, 9.5], "texture": "#0"}, + "west": {"uv": [1, 9, 3, 9.5], "texture": "#0"}, + "up": {"uv": [1, 9.5, 3, 11.5], "texture": "#0"} + } + } + ], + "display": { + "thirdperson_righthand": { + "rotation": [0, 30, 0], + "translation": [0, 2, 0], + "scale": [0.4, 0.4, 0.4] + }, + "thirdperson_lefthand": { + "rotation": [0, 30, 0], + "translation": [0, 2, 0], + "scale": [0.4, 0.4, 0.4] + }, + "firstperson_righthand": { + "rotation": [0, 15, 15], + "scale": [0.4, 0.4, 0.4] + }, + "firstperson_lefthand": { + "rotation": [0, 15, 15], + "scale": [0.4, 0.4, 0.4] + }, + "ground": { + "translation": [0, 1, 0], + "scale": [0.5, 0.5, 0.5] + }, + "gui": { + "rotation": [30, 30, 0], + "translation": [0, -2.5, 0], + "scale": [0.5, 0.5, 0.5] + }, + "fixed": { + "scale": [0.5, 0.5, 0.5] + } + } +} diff --git a/src/main/resources/assets/tfmg/textures/block/gas_lamp.png b/src/main/resources/assets/tfmg/textures/block/gas_lamp.png new file mode 100644 index 00000000..87f0ea44 Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/block/gas_lamp.png differ