Skip to content

Commit

Permalink
First work on getting block entities in
Browse files Browse the repository at this point in the history
  • Loading branch information
Fureniku committed Jan 20, 2024
1 parent 0e077bd commit 6a46988
Show file tree
Hide file tree
Showing 54 changed files with 487 additions and 913 deletions.
@@ -0,0 +1,19 @@
{
"variants": {
"facing=east": {
"model": "furenikusroads:block/crusher",
"y": 90
},
"facing=north": {
"model": "furenikusroads:block/crusher"
},
"facing=south": {
"model": "furenikusroads:block/crusher",
"y": 180
},
"facing=west": {
"model": "furenikusroads:block/crusher",
"y": 270
}
}
}
@@ -0,0 +1,19 @@
{
"variants": {
"facing=east": {
"model": "furenikusroads:block/fabricator",
"y": 90
},
"facing=north": {
"model": "furenikusroads:block/fabricator"
},
"facing=south": {
"model": "furenikusroads:block/fabricator",
"y": 180
},
"facing=west": {
"model": "furenikusroads:block/fabricator",
"y": 270
}
}
}
@@ -0,0 +1,6 @@
{
"parent": "furenikusroads:blocks/machine/crusher",
"textures": {
"texture": "furenikusroads:block/machine/crusher"
}
}
@@ -0,0 +1,6 @@
{
"parent": "furenikusroads:blocks/machine/fabricator",
"textures": {
"texture": "furenikusroads:block/machine/fabricator"
}
}
@@ -0,0 +1,3 @@
{
"parent": "furenikusroads:block/crusher"
}
@@ -0,0 +1,3 @@
{
"parent": "furenikusroads:block/fabricator"
}
11 changes: 8 additions & 3 deletions src/main/java/com/fureniku/roads/RegistrationRoads.java
Expand Up @@ -5,6 +5,7 @@
import com.fureniku.metropolis.utils.CreativeTabSet;
import com.fureniku.roads.registrations.RegistrationDecorative;
import com.fureniku.roads.registrations.RegistrationGeneral;
import com.fureniku.roads.registrations.RegistrationMachines;
import com.fureniku.roads.registrations.RegistrationRoadBlocks;
import net.minecraft.data.DataGenerator;
import net.minecraft.data.PackOutput;
Expand All @@ -19,9 +20,10 @@

public class RegistrationRoads extends RegistrationBase {

private RegistrationRoadBlocks _registrationRoads = new RegistrationRoadBlocks(this);
private RegistrationGeneral _registrationGeneral = new RegistrationGeneral(this);
private RegistrationDecorative _registrationDecorative = new RegistrationDecorative(this);
public final RegistrationRoadBlocks _registrationRoads = new RegistrationRoadBlocks(this);
public final RegistrationGeneral _registrationGeneral = new RegistrationGeneral(this);
public final RegistrationDecorative _registrationDecorative = new RegistrationDecorative(this);
public final RegistrationMachines _registrationMachines = new RegistrationMachines(this);

public RegistrationRoads(String modid, IEventBus modEventBus) {
super(modid, modEventBus);
Expand All @@ -32,13 +34,15 @@ public void init(IEventBus modEventBus) {
_registrationRoads.init(modEventBus);
_registrationGeneral.init(modEventBus);
_registrationDecorative.init(modEventBus);
_registrationMachines.init(modEventBus);
}

@Override
public void generateCreativeTabs() {
_registrationRoads.generateCreativeTabs();
_registrationGeneral.generateCreativeTabs();
_registrationDecorative.generateCreativeTabs();
_registrationMachines.generateCreativeTabs();
}

@Override
Expand All @@ -47,6 +51,7 @@ protected ArrayList<CreativeTabSet> getCreativeTabs() {
tabList.addAll(_registrationRoads.getCreativeTabs());
tabList.addAll(_registrationGeneral.getCreativeTabs());
tabList.addAll(_registrationDecorative.getCreativeTabs());
tabList.addAll(_registrationMachines.getCreativeTabs());
return tabList;
}

Expand Down
@@ -0,0 +1,32 @@
package com.fureniku.roads.blockentities;

import com.fureniku.metropolis.blocks.decorative.MetroBlockDecorativeBase;
import com.fureniku.metropolis.blocks.decorative.helpers.HelperBase;
import com.fureniku.metropolis.blocks.decorative.helpers.OffsetHelper;
import com.fureniku.metropolis.utils.SimpleUtils;
import com.fureniku.roads.blocks.entityblock.CrusherEntityBlock;
import com.fureniku.roads.blocks.entityblock.FabricatorEntityBlock;

import java.util.ArrayList;
import java.util.Arrays;

public class BlockEntityFactoryManager {

public static MetroBlockDecorativeBase.MetroBlockStateFactory getCrusherBlockFactory(HelperBase... helpersIn) {
return (props, shape, modelDir, modelName, tag, dynamicShape, textures) -> new CrusherEntityBlock(props, shape, modelDir, modelName, tag, SimpleUtils.containsType(OffsetHelper.class, helpersIn), textures) {
@Override
public ArrayList<HelperBase> getHelpers() {
return new ArrayList<>(Arrays.asList(helpersIn));
}
};
}

public static MetroBlockDecorativeBase.MetroBlockStateFactory getFabricatorBlockFactory(HelperBase... helpersIn) {
return (props, shape, modelDir, modelName, tag, dynamicShape, textures) -> new FabricatorEntityBlock(props, shape, modelDir, modelName, tag, SimpleUtils.containsType(OffsetHelper.class, helpersIn), textures) {
@Override
public ArrayList<HelperBase> getHelpers() {
return new ArrayList<>(Arrays.asList(helpersIn));
}
};
}
}
@@ -0,0 +1,14 @@
package com.fureniku.roads.blockentities;

import com.fureniku.metropolis.blockentity.MetroBlockEntity;
import com.fureniku.metropolis.utils.Debug;
import com.fureniku.roads.FurenikusRoads;
import net.minecraft.core.BlockPos;
import net.minecraft.world.level.block.state.BlockState;

public class CrusherBlockEntity extends MetroBlockEntity {

public CrusherBlockEntity(BlockPos pos, BlockState state) {
super(FurenikusRoads.INSTANCE.registration._registrationMachines.getCrusherEntity().get(), pos, state);
}
}
@@ -0,0 +1,13 @@
package com.fureniku.roads.blockentities;

import com.fureniku.metropolis.blockentity.MetroBlockEntity;
import com.fureniku.roads.FurenikusRoads;
import net.minecraft.core.BlockPos;
import net.minecraft.world.level.block.state.BlockState;

public class FabricatorBlockEntity extends MetroBlockEntity {

public FabricatorBlockEntity(BlockPos pos, BlockState state) {
super(FurenikusRoads.INSTANCE.registration._registrationMachines.getFabricatorEntity().get(), pos, state);
}
}
@@ -0,0 +1,23 @@
package com.fureniku.roads.blocks.entityblock;

import com.fureniku.metropolis.blocks.decorative.MetroEntityBlockDecorative;
import com.fureniku.metropolis.datagen.TextureSet;
import com.fureniku.roads.blockentities.CrusherBlockEntity;
import net.minecraft.core.BlockPos;
import net.minecraft.world.level.block.entity.BlockEntity;
import net.minecraft.world.level.block.state.BlockState;
import net.minecraft.world.phys.shapes.VoxelShape;
import org.jetbrains.annotations.Nullable;

public abstract class CrusherEntityBlock extends MetroEntityBlockDecorative {

public CrusherEntityBlock(Properties props, VoxelShape shape, String modelDir, String modelName, String tag, boolean dynamicShape, TextureSet... textures) {
super(props, shape, modelDir, modelName, tag, dynamicShape, textures);
}

@Override
@Nullable
public BlockEntity createBlockEntity(BlockPos pos, BlockState state) {
return new CrusherBlockEntity(pos, state);
}
}
@@ -0,0 +1,23 @@
package com.fureniku.roads.blocks.entityblock;

import com.fureniku.metropolis.blocks.decorative.MetroEntityBlockDecorative;
import com.fureniku.metropolis.datagen.TextureSet;
import com.fureniku.roads.blockentities.FabricatorBlockEntity;
import net.minecraft.core.BlockPos;
import net.minecraft.world.level.block.entity.BlockEntity;
import net.minecraft.world.level.block.state.BlockState;
import net.minecraft.world.phys.shapes.VoxelShape;
import org.jetbrains.annotations.Nullable;

public abstract class FabricatorEntityBlock extends MetroEntityBlockDecorative {

public FabricatorEntityBlock(Properties props, VoxelShape shape, String modelDir, String modelName, String tag, boolean dynamicShape, TextureSet... textures) {
super(props, shape, modelDir, modelName, tag, dynamicShape, textures);
}

@Nullable
@Override
public BlockEntity createBlockEntity(BlockPos pos, BlockState state) {
return new FabricatorBlockEntity(pos, state);
}
}
@@ -0,0 +1,96 @@
package com.fureniku.roads.registrations;

import com.fureniku.metropolis.RegistrationBase;
import com.fureniku.metropolis.RegistrationGroup;
import com.fureniku.metropolis.blockentity.MetroBlockEntity;
import com.fureniku.metropolis.blocks.decorative.builders.MetroBlockDecorativeBuilder;
import com.fureniku.metropolis.blocks.decorative.helpers.HelperBase;
import com.fureniku.metropolis.blocks.decorative.helpers.RotationHelper;
import com.fureniku.metropolis.utils.CreativeTabSet;
import com.fureniku.metropolis.utils.Debug;
import com.fureniku.metropolis.utils.ShapeUtils;
import com.fureniku.roads.FurenikusRoads;
import com.fureniku.roads.blockentities.BlockEntityFactoryManager;
import com.fureniku.roads.blockentities.CrusherBlockEntity;
import com.fureniku.roads.blockentities.FabricatorBlockEntity;
import com.fureniku.roads.blocks.entityblock.CrusherEntityBlock;
import com.fureniku.roads.blocks.entityblock.FabricatorEntityBlock;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.world.level.block.SoundType;
import net.minecraft.world.level.block.entity.BlockEntityType;
import net.minecraft.world.level.block.state.BlockBehaviour;
import net.neoforged.bus.api.IEventBus;
import net.neoforged.neoforge.registries.RegistryObject;

import java.util.ArrayList;

public class RegistrationMachines extends RegistrationGroup {

private final String CRUSHER = "crusher";
private final String FABRICATOR = "fabricator";
private final String PAINT_FILLER = "paint_filler";
private final String PAINT_OVEN = "paint_oven";
private final String ROAD_FACTORY = "road_factory";
private final String TAR_DISTILLER = "tar_distiller";
private final String TARMAC_CUTTER = "tarmac_cutter";

private RegistryObject<BlockEntityType<MetroBlockEntity>> CRUSHER_ENTITY;
private RegistryObject<BlockEntityType<MetroBlockEntity>> FABRICATOR_ENTITY;

private CreativeTabSet _machineTab;

private BlockBehaviour.Properties _props = BlockBehaviour.Properties.of().strength(1.0f).sound(SoundType.METAL);


public RegistrationMachines(RegistrationBase registrationBase) {
super(registrationBase);
}

@Override
public void init(IEventBus iEventBus) {
Debug.Log("Initialize machines");

RotationHelper crusherRotationHelper = new RotationHelper(ShapeUtils.makeShape(12, 14));
RotationHelper fabricatorRotationHelper = new RotationHelper(ShapeUtils.makeShape(12, 9.5f));

CRUSHER_ENTITY = registration.registerBlockEntityWithBlock(CRUSHER, () -> new MetroBlockDecorativeBuilder<CrusherEntityBlock>(_props)
.setModelDirectory("blocks/machine/")
.setModelName("crusher")
.setTextures(getLoc("crusher"))
.setHelpers(crusherRotationHelper).buildAs(BlockEntityFactoryManager.getCrusherBlockFactory(crusherRotationHelper)), CrusherBlockEntity::new);

FABRICATOR_ENTITY = registration.registerBlockEntityWithBlock(FABRICATOR, () -> new MetroBlockDecorativeBuilder<FabricatorEntityBlock>(_props)
.setModelDirectory("blocks/machine/")
.setModelName("fabricator")
.setTextures(getLoc("fabricator"))
.setHelpers(fabricatorRotationHelper).buildAs(BlockEntityFactoryManager.getFabricatorBlockFactory(fabricatorRotationHelper)), FabricatorBlockEntity::new);

_machineTab = new CreativeTabSet(registration.getCreativeTabDeferredRegister(),"tab_machines", getItem(CRUSHER));
}

public RegistryObject<BlockEntityType<MetroBlockEntity>> getCrusherEntity() {
return CRUSHER_ENTITY;
}

public RegistryObject<BlockEntityType<MetroBlockEntity>> getFabricatorEntity() {
return FABRICATOR_ENTITY;
}

@Override
public void generateCreativeTabs() {
_machineTab.addItem(getItem(CRUSHER).get().getDefaultInstance());
_machineTab.addItem(getItem(FABRICATOR).get().getDefaultInstance());
}

@Override
public ArrayList<CreativeTabSet> getCreativeTabs() {
ArrayList<CreativeTabSet> tabList = new ArrayList<CreativeTabSet>();
tabList.add(_machineTab);
return tabList;
}

@Override
protected ResourceLocation getLoc(String name) {
return new ResourceLocation(FurenikusRoads.MODID, "block/machine/" + name);
}
}

This file was deleted.

0 comments on commit 6a46988

Please sign in to comment.