Skip to content

Commit

Permalink
Initial crusher menu, some temp names/recipes
Browse files Browse the repository at this point in the history
  • Loading branch information
Fureniku committed Feb 3, 2024
1 parent f894897 commit 093a873
Show file tree
Hide file tree
Showing 78 changed files with 1,523 additions and 30 deletions.
28 changes: 14 additions & 14 deletions src/main/java/com/fureniku/roads/RegistrationRoads.java
Expand Up @@ -3,10 +3,11 @@
import com.fureniku.metropolis.RegistrationBase;
import com.fureniku.metropolis.datagen.MetroBlockStateProvider;
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 com.fureniku.metropolis.utils.Debug;
import com.fureniku.roads.blocks.entityblock.CrusherEntityBlock;
import com.fureniku.roads.client.screens.CrusherScreen;
import com.fureniku.roads.registrations.*;
import net.minecraft.client.gui.screens.MenuScreens;
import net.minecraft.data.DataGenerator;
import net.minecraft.data.PackOutput;
import net.minecraftforge.client.event.ModelEvent;
Expand Down Expand Up @@ -60,16 +61,15 @@ protected ArrayList<CreativeTabSet> getCreativeTabs() {
protected void commonSetup(FMLCommonSetupEvent event) {}

@Override
protected void clientSetup(FMLClientSetupEvent event) {}

@Override
protected void modelSetup(ModelEvent.RegisterGeometryLoaders registerGeometryLoaders) {}

@Override
protected void modifyBakingResult(ModelEvent.ModifyBakingResult modifyBakingResult) {}

@Override
protected void bakingComplete(ModelEvent.BakingCompleted bakingCompleted) {}
protected void clientSetup(FMLClientSetupEvent event) {
Debug.Log("### registered screen");
MenuScreens.register(CrusherEntityBlock.MENU_TYPE.get(), CrusherScreen::new);
if (RoadMenuTypes.CRUSHER_MENU == null) {
Debug.Log("Menu is null");
} else {
Debug.Log("Menu is not null");
}
}

@Override
protected void dataGen(GatherDataEvent event, DataGenerator gen, PackOutput packOutput, ExistingFileHelper efh) {
Expand Down
@@ -1,13 +1,32 @@
package com.fureniku.roads.blockentities;

import com.fureniku.metropolis.blockentity.MetroBlockEntity;
import com.fureniku.roads.blockentities.menus.CrusherMenu;
import com.fureniku.roads.blocks.entityblock.CrusherEntityBlock;
import net.minecraft.core.BlockPos;
import net.minecraft.network.chat.Component;
import net.minecraft.world.MenuProvider;
import net.minecraft.world.entity.player.Inventory;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.inventory.AbstractContainerMenu;
import net.minecraft.world.level.block.state.BlockState;
import org.jetbrains.annotations.Nullable;

public class CrusherBlockEntity extends MetroBlockEntity {
public class CrusherBlockEntity extends MetroBlockEntity implements MenuProvider {

public CrusherBlockEntity(BlockPos pos, BlockState state) {
super(CrusherEntityBlock.ENTITY.get(), pos, state);
}

@Override
public Component getDisplayName() {
//return Component.translatable("blah.blah.blah");
return Component.literal("Crusher (localise me)");
}

@Nullable
@Override
public AbstractContainerMenu createMenu(int id, Inventory inventory, Player p_39956_) {
return new CrusherMenu(id, inventory);
}
}
@@ -1,23 +1,29 @@
package com.fureniku.roads.blockentities.menus;

import com.fureniku.metropolis.menus.MetroMenu;
import com.fureniku.metropolis.utils.Debug;
import com.fureniku.roads.blocks.entityblock.CrusherEntityBlock;
import com.fureniku.roads.registrations.RoadMenuTypes;
import net.minecraft.network.FriendlyByteBuf;
import net.minecraft.world.entity.player.Inventory;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.inventory.ContainerLevelAccess;
import net.minecraft.world.item.ItemStack;
import net.minecraftforge.items.IItemHandler;
import net.minecraftforge.items.ItemStackHandler;
import net.minecraftforge.items.SlotItemHandler;

public class CrusherMenu extends MetroMenu {

//client constructor
public CrusherMenu(int containerId, Inventory inventory, FriendlyByteBuf extraData) {
this(containerId, inventory, ContainerLevelAccess.NULL);
public CrusherMenu(int containerId, Inventory playerInv) {
this(containerId, playerInv, new ItemStackHandler(3));
}

//server constructor
public CrusherMenu(int containerId, Inventory inventory, ContainerLevelAccess levelAccess) {
super(RoadMenuTypes.CRUSHER_MENU, containerId);
public CrusherMenu(int containerId, Inventory playerInv, IItemHandler dataInventory) {
super(CrusherEntityBlock.MENU_TYPE.get(), containerId);
this.addSlot(new SlotItemHandler(dataInventory,0, 10, 10));
}

@Override
Expand All @@ -27,6 +33,6 @@ public ItemStack quickMoveStack(Player player, int p_38942_) {

@Override
public boolean stillValid(Player player) {
return false;
return true;
}
}
Expand Up @@ -6,11 +6,13 @@
import com.fureniku.metropolis.menus.MetroMenu;
import com.fureniku.metropolis.utils.Debug;
import com.fureniku.roads.blockentities.CrusherBlockEntity;
import com.fureniku.roads.blockentities.menus.CrusherMenu;
import net.minecraft.core.BlockPos;
import net.minecraft.server.level.ServerPlayer;
import net.minecraft.world.InteractionResult;
import net.minecraft.world.MenuProvider;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.inventory.MenuType;
import net.minecraft.world.level.Level;
import net.minecraft.world.level.block.entity.BlockEntity;
import net.minecraft.world.level.block.entity.BlockEntityType;
Expand All @@ -23,7 +25,7 @@
public abstract class CrusherEntityBlock extends MetroEntityBlockDecorative {

public static RegistryObject<BlockEntityType<MetroBlockEntity>> ENTITY;
public static RegistryObject<MetroMenu> MENU;
public static RegistryObject<MenuType<CrusherMenu>> MENU_TYPE;

public CrusherEntityBlock(Properties props, VoxelShape shape, String modelDir, String modelName, String tag, boolean dynamicShape, TextureSet... textures) {
super(props, shape, modelDir, modelName, tag, dynamicShape, textures);
Expand All @@ -38,15 +40,16 @@ public BlockEntity createBlockEntity(BlockPos pos, BlockState state) {

@Override
public MenuProvider getMenu(BlockState state, Level level, BlockPos pos) { //TODO
return null;
Debug.Log("calling get menu???");
BlockEntity entity = level.getBlockEntity(pos);
return entity instanceof CrusherBlockEntity ? (MenuProvider) entity : null;
}

@Override
protected InteractionResult onRightClick(BlockState state, Level level, BlockPos pos, Player player) {
if (!level.isClientSide && player instanceof ServerPlayer serverPlayer) {
NetworkHooks.openScreen(serverPlayer, state.getMenuProvider(level, pos));
return InteractionResult.CONSUME;
}
return InteractionResult.PASS;
return InteractionResult.sidedSuccess(level.isClientSide);
}
}
53 changes: 53 additions & 0 deletions src/main/java/com/fureniku/roads/client/screens/CrusherScreen.java
@@ -0,0 +1,53 @@
package com.fureniku.roads.client.screens;

import com.fureniku.roads.FurenikusRoads;
import com.fureniku.roads.blockentities.menus.CrusherMenu;
import com.mojang.blaze3d.systems.RenderSystem;
import net.minecraft.client.gui.GuiGraphics;
import net.minecraft.client.gui.screens.inventory.AbstractContainerScreen;
import net.minecraft.network.chat.Component;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.world.entity.player.Inventory;

public class CrusherScreen extends AbstractContainerScreen<CrusherMenu> {

private static final ResourceLocation BACKGROUND_LOCATION = new ResourceLocation(FurenikusRoads.MODID, "textures/gui/machine/crusher.png");

public CrusherScreen(CrusherMenu menu, Inventory inventory, Component component) {
super(menu, inventory, component);

this.titleLabelX = 10;
this.inventoryLabelX = 10;
}

//TODO move to metro
@Override
public void render(GuiGraphics graphics, int mouseX, int mouseY, float partialTick) {
this.renderBackground(graphics);
super.render(graphics, mouseX, mouseY, partialTick);

/*
* This method is added by the container screen to render
* the tooltip of the hovered slot.
*/
this.renderTooltip(graphics, mouseX, mouseY);
}

//TODO move to metro
@Override
protected void renderBg(GuiGraphics graphics, float partialTick, int mouseX, int mouseY) {
RenderSystem.setShaderTexture(0, BACKGROUND_LOCATION);

graphics.blit(BACKGROUND_LOCATION, this.leftPos, this.topPos, 0, 0, this.imageWidth, this.imageHeight);
}

//TODO move to metro
@Override
protected void renderLabels(GuiGraphics graphics, int mouseX, int mouseY) {
super.renderLabels(graphics, mouseX, mouseY);

// Assume we have some Component 'label'
// 'label' is drawn at 'labelX' and 'labelY'
//graphics.drawString(this.font, this.label, this.labelX, this.labelY, 0x404040);
}
}
Expand Up @@ -18,18 +18,14 @@
import com.fureniku.roads.blockentities.menus.CrusherMenu;
import com.fureniku.roads.blocks.entityblock.CrusherEntityBlock;
import com.fureniku.roads.blocks.entityblock.FabricatorEntityBlock;
import net.minecraft.core.BlockPos;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.world.flag.FeatureFlags;
import net.minecraft.world.inventory.MenuType;
import net.minecraft.world.level.block.SoundType;
import net.minecraft.world.level.block.entity.BlockEntity;
import net.minecraft.world.level.block.entity.BlockEntityType;
import net.minecraft.world.level.block.state.BlockBehaviour;
import net.minecraft.world.level.block.state.BlockState;
import net.minecraftforge.eventbus.api.IEventBus;
import net.minecraftforge.registries.RegistryObject;
import org.jetbrains.annotations.Nullable;

import java.util.ArrayList;
import java.util.Arrays;
Expand All @@ -54,7 +50,7 @@ public RegistrationMachines(RegistrationBase registrationBase) {
@Override
public void init(IEventBus iEventBus) {
CrusherEntityBlock.ENTITY = registerEntity(CRUSHER, getHelpers(12, 14), BlockType.CRUSHER, CrusherBlockEntity::new);
//CrusherEntityBlock.MENU = registration.registerMenuType(CRUSHER + "_menu", () -> new MenuType(CrusherMenu::new, FeatureFlags.DEFAULT_FLAGS));
CrusherEntityBlock.MENU_TYPE = registration.registerMenuType(CRUSHER + "_menu", () -> new MenuType(CrusherMenu::new, FeatureFlags.DEFAULT_FLAGS));

FabricatorEntityBlock.ENTITY = registerEntity(FABRICATOR, getHelpers(12, 9.5f), BlockType.FABRICATOR, FabricatorBlockEntity::new);

Expand Down
Expand Up @@ -6,5 +6,5 @@

public class RoadMenuTypes {

public static final MenuType<CrusherMenu> CRUSHER_MENU = IForgeMenuType.create((windowId, inv, data) -> new CrusherMenu(windowId, inv, data));
public static final MenuType<CrusherMenu> CRUSHER_MENU = IForgeMenuType.create(CrusherMenu::new);
}
55 changes: 55 additions & 0 deletions src/main/resources/assets/furenikusroads/lang/en_us.json
@@ -0,0 +1,55 @@
{
"block.furenikusroads.road_block_standard_4" : "Road Block Standard (4)",
"block.furenikusroads.road_block_standard_8" : "Road Block Standard (8)",
"block.furenikusroads.road_block_standard_12" : "Road Block Standard (12)",
"block.furenikusroads.road_block_standard_16" : "Road Block Standard (16)",
"block.furenikusroads.road_block_fine_4" : "Road Block Fine (4)",
"block.furenikusroads.road_block_fine_8" : "Road Block Fine (8)",
"block.furenikusroads.road_block_fine_12" : "Road Block Fine (12)",
"block.furenikusroads.road_block_fine_16" : "Road Block Fine (16)",
"block.furenikusroads.road_block_dark_4" : "Road Block Dark (4)",
"block.furenikusroads.road_block_dark_8" : "Road Block Dark (8)",
"block.furenikusroads.road_block_dark_12" : "Road Block Dark (12)",
"block.furenikusroads.road_block_dark_16" : "Road Block Dark (16)",
"block.furenikusroads.road_block_pale_4" : "Road Block Pale (4)",
"block.furenikusroads.road_block_pale_8" : "Road Block Pale (8)",
"block.furenikusroads.road_block_pale_12" : "Road Block Pale (12)",
"block.furenikusroads.road_block_pale_16" : "Road Block Pale (16)",
"block.furenikusroads.road_block_light_4" : "Road Block Light (4)",
"block.furenikusroads.road_block_light_8" : "Road Block Light (8)",
"block.furenikusroads.road_block_light_12" : "Road Block Light (12)",
"block.furenikusroads.road_block_light_16" : "Road Block Light (16)",
"block.furenikusroads.road_block_concrete_1_4" : "Road Block Concrete (4)",
"block.furenikusroads.road_block_concrete_1_8" : "Road Block Concrete (8)",
"block.furenikusroads.road_block_concrete_1_12" : "Road Block Concrete (12)",
"block.furenikusroads.road_block_concrete_1_16" : "Road Block Concrete (16)",
"block.furenikusroads.road_block_concrete_2_4" : "Road Block Concrete (4)",
"block.furenikusroads.road_block_concrete_2_8" : "Road Block Concrete (8)",
"block.furenikusroads.road_block_concrete_2_12" : "Road Block Concrete (12)",
"block.furenikusroads.road_block_concrete_2_16" : "Road Block Concrete (16)",
"block.furenikusroads.road_block_white_4" : "Road Block White (4)",
"block.furenikusroads.road_block_white_8" : "Road Block White (8)",
"block.furenikusroads.road_block_white_12" : "Road Block White (12)",
"block.furenikusroads.road_block_white_16" : "Road Block White (16)",
"block.furenikusroads.stone_road_4" : "Stone Road (4)",
"block.furenikusroads.stone_road_8" : "Stone Road (8)",
"block.furenikusroads.stone_road_12" : "Stone Road (12)",
"block.furenikusroads.stone_road_16" : "Stone Road (16)",

"block.furenikusroads.sidewalk_4" : "Sidewalk (4)",
"block.furenikusroads.sidewalk_8" : "Sidewalk (8)",
"block.furenikusroads.sidewalk_12" : "Sidewalk (12)",
"block.furenikusroads.sidewalk_16" : "Sidewalk (16)",
"block.furenikusroads.sidewalk_clean_4" : "Sidewalk Clean (4)",
"block.furenikusroads.sidewalk_clean_8" : "Sidewalk Clean(8)",
"block.furenikusroads.sidewalk_clean_12" : "Sidewalk Clean (12)",
"block.furenikusroads.sidewalk_clean_16" : "Sidewalk Clean (16)",
"block.furenikusroads.sidewalk_dark_4" : "Sidewalk Dark (4)",
"block.furenikusroads.sidewalk_dark_8" : "Sidewalk Dark (8)",
"block.furenikusroads.sidewalk_dark_12" : "Sidewalk Dark (12)",
"block.furenikusroads.sidewalk_dark_16" : "Sidewalk Dark (16)",
"block.furenikusroads.sidewalk_tan_4" : "Sidewalk Tan (4)",
"block.furenikusroads.sidewalk_tan_8" : "Sidewalk Tan (8)",
"block.furenikusroads.sidewalk_tan_12" : "Sidewalk Tan (12)",
"block.furenikusroads.sidewalk_tan_16" : "Sidewalk Tan (16)"
}
@@ -0,0 +1,20 @@
{
"type": "minecraft:crafting_shaped",
"pattern":
[
"xx",
"xx"
],
"key":
{
"x":
{
"item": "furenikusroads:road_block_concrete_16"
}
},
"result":
{
"item": "furenikusroads:road_block_concrete_12",
"count": 4
}
}
@@ -0,0 +1,25 @@
{
"type": "minecraft:crafting_shaped",
"pattern":
[
"xxx",
"xax",
"xxx"
],
"key":
{
"x":
{
"item": "minecraft:white_concrete"
},
"a":
{
"item": "minecraft:stone"
}
},
"result":
{
"item": "furenikusroads:road_block_concrete_1_16",
"count": 16
}
}
@@ -0,0 +1,20 @@
{
"type": "minecraft:crafting_shaped",
"pattern":
[
"xx",
"xx"
],
"key":
{
"x":
{
"item": "furenikusroads:road_block_concrete_4"
}
},
"result":
{
"item": "furenikusroads:road_block_concrete_16",
"count": 4
}
}
@@ -0,0 +1,20 @@
{
"type": "minecraft:crafting_shaped",
"pattern":
[
"xx",
"xx"
],
"key":
{
"x":
{
"item": "furenikusroads:road_block_concrete_8"
}
},
"result":
{
"item": "furenikusroads:road_block_concrete_4",
"count": 4
}
}

0 comments on commit 093a873

Please sign in to comment.