Add Gas Lamp

This commit is contained in:
Daniel
2025-07-19 00:34:26 +03:00
parent c41652540f
commit 27dbd59568
18 changed files with 847 additions and 4 deletions

View File

@@ -0,0 +1,10 @@
{
"variants": {
"lit=false": {
"model": "tfmg:block/gas_lamp/block"
},
"lit=true": {
"model": "tfmg:block/gas_lamp/block_lit"
}
}
}

View File

@@ -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ɐן⅁",

View File

@@ -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",

View File

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

View File

@@ -110,6 +110,7 @@
"tfmg:electric_motor",
"tfmg:creative_generator",
"tfmg:accumulator",
"tfmg:gas_lamp",
"tfmg:light_bulb",
"tfmg:circular_light",
"tfmg:modern_light",

View File

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

View File

@@ -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)

View File

@@ -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<GasLampBlockEntity> {
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<Block, BlockState> p_51305_) {
p_51305_.add(LIT);
}
@Override
public Class<GasLampBlockEntity> getBlockEntityClass() {
return GasLampBlockEntity.class;
}
@Override
public BlockEntityType<? extends GasLampBlockEntity> getBlockEntityType() {
return TFMGBlockEntities.GAS_LAMP.get();
}
}

View File

@@ -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<IFluidHandler> 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 <T> LazyOptional<T> getCapability(@Nonnull Capability<T> 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<Component> 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<BlockEntityBehaviour> behaviours) {}
}

View File

@@ -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 <T extends Block> ModelFile getModel(DataGenContext<Block, T> ctx, RegistrateBlockstateProvider prov,
BlockState state) {
return state.getValue(FlarestackBlock.LIT) ? partialBaseModel(ctx, prov, "lit")
: partialBaseModel(ctx, prov);
}
}

View File

@@ -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<GasLampBlockEntity> GAS_LAMP = REGISTRATE
.blockEntity("gas_lamp", GasLampBlockEntity::new)
.validBlocks(TFMGBlocks.GAS_LAMP)
.register();
public static final BlockEntityEntry<BracketedKineticBlockEntity> TFMG_COGWHEEL = REGISTRATE
.blockEntity("tfmg_simple_kinetic", BracketedKineticBlockEntity::new)
.visual(() -> TFMGCogwheelVisual::create, true)

View File

@@ -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<GasLampBlock> 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<LightBulbBlock> LIGHT_BULB =
REGISTRATE.block("light_bulb", p -> new LightBulbBlock(p, TFMGBlockEntities.LIGHT_BULB, TFMGShapes.LIGHT_BULB))
.initialProperties(() -> Blocks.IRON_BLOCK)

View File

@@ -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."
}

View File

@@ -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": "Застеклённая алюминиевая жидкостная труба",

View File

@@ -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]
}
}
}

View File

@@ -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]
}
}
}

View File

@@ -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]
}
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 952 B