Compare commits

..

7 commits

Author SHA1 Message Date
dragonruler1000
68c4c9bb50
Merge pull request #27 from dragonruler1000/DEV
Dev
2025-06-27 21:48:35 -05:00
dragonruler1000
092a473abd Updated the portal block texture
Signed-off-by: dragonruler1000 <github@me.minecraftchest2.us>
2025-06-27 20:34:31 -05:00
dragonruler1000
3085bd5d92 Update mod version to 1.2.3, rename DustHouseStructure to HouseStructure, and implement structure generation for plains biomes. Updated textures for the subtle knife and omelet items and the house structure should now generate.
Signed-off-by: dragonruler1000 <github@me.minecraftchest2.us>
2025-06-26 20:19:03 -05:00
dragonruler1000
5a27c4ab2e Introduce dimensional event handling and improve loot table configuration
Added `ModWorldEvents` class to manage custom dimensional events and ensure proper spacing in server world generation. Enhanced block_of_dust loot table with weighted drop chances and refined access transformer configuration in `build.gradle`. Integrated structure setup initialization in pre-loading event.

Signed-off-by: dragonruler1000 <github@me.minecraftchest2.us>
2025-05-28 17:43:08 -05:00
dragonruler1000
bcd5a40813 Introduce custom DustHouse structure and update mod configuration
Added a new DustHouse structure with associated registration logic and configuration settings. Updated `gradle.properties`, introduced `accesstransformer.cfg`, and added JSON and NBT files for structure generation. Fixed typo in gradle daemon setting.

Signed-off-by: dragonruler1000 <github@me.minecraftchest2.us>
2025-05-28 12:29:12 -05:00
dragonruler1000
15b1027f9b Add smelting recipe for cooked omelet to the mod
Signed-off-by: dragonruler1000 <github@me.minecraftchest2.us>
2025-05-28 11:15:15 -05:00
dragonruler1000
059f2d881b Add cooked omelet item, recipe, and HDM dimension support
Introduced the cooked omelet item with functionality and crafting recipe. Added recognition for the "HDM Dimension" in teleportation logic. Updated gradle settings to enable daemon for faster builds.

Signed-off-by: dragonruler1000 <github@me.minecraftchest2.us>
2025-05-28 11:14:13 -05:00
23 changed files with 407 additions and 8 deletions

View file

@ -31,6 +31,7 @@ minecraft {
// Use non-default mappings at your own risk. They may not always work. // Use non-default mappings at your own risk. They may not always work.
// Simply re-run your setup task after changing the mappings to update your workspace. // Simply re-run your setup task after changing the mappings to update your workspace.
mappings channel: mapping_channel, version: mapping_version mappings channel: mapping_channel, version: mapping_version
accessTransformer = file('src/main/resources/META-INF/accesstransformer.cfg')
// When true, this property will have all Eclipse/IntelliJ IDEA run configurations run the "prepareX" task for the given run configuration before launching the game. // When true, this property will have all Eclipse/IntelliJ IDEA run configurations run the "prepareX" task for the given run configuration before launching the game.
// In most cases, it is not necessary to enable. // In most cases, it is not necessary to enable.

View file

@ -1,5 +1,5 @@
org.gradle.jvmargs=-Xmx3G org.gradle.jvmargs=-Xmx3G
org.gradle.daemon=false org.gradle.daemon=flase
# The Minecraft version must agree with the Forge version to get a valid artifact # The Minecraft version must agree with the Forge version to get a valid artifact
minecraft_version=1.16.5 minecraft_version=1.16.5
# The Minecraft version range can use any release version of Minecraft as bounds. # The Minecraft version range can use any release version of Minecraft as bounds.
@ -38,7 +38,7 @@ mod_name=Hdm Mod
# The license of the mod. Review your options at https://choosealicense.com/. All Rights Reserved is the default. # The license of the mod. Review your options at https://choosealicense.com/. All Rights Reserved is the default.
mod_license=MIT mod_license=MIT
# The mod version. See https://semver.org/ # The mod version. See https://semver.org/
mod_version=1.2.2 mod_version=1.2.3
# The group ID for the mod. It is only important when publishing as an artifact to a Maven repository. # The group ID for the mod. It is only important when publishing as an artifact to a Maven repository.
# This should match the base package used for the mod sources. # This should match the base package used for the mod sources.
# See https://maven.apache.org/guides/mini/guide-naming-conventions.html # See https://maven.apache.org/guides/mini/guide-naming-conventions.html

View file

@ -2,6 +2,8 @@ package us.minecraftchest2.hdm_mod;
import net.minecraft.block.Block; import net.minecraft.block.Block;
import net.minecraft.block.Blocks; import net.minecraft.block.Blocks;
import net.minecraft.client.renderer.RenderType;
import net.minecraft.client.renderer.RenderTypeLookup;
import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.event.RegistryEvent; import net.minecraftforge.event.RegistryEvent;
import net.minecraftforge.eventbus.api.IEventBus; import net.minecraftforge.eventbus.api.IEventBus;
@ -20,6 +22,7 @@ import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.Logger;
import us.minecraftchest2.hdm_mod.block.ModBlocks; import us.minecraftchest2.hdm_mod.block.ModBlocks;
import us.minecraftchest2.hdm_mod.item.ModItems; import us.minecraftchest2.hdm_mod.item.ModItems;
import us.minecraftchest2.hdm_mod.world.structure.ModStructures;
//import us.minecraftchest2.hdm_mod.init.ItemInit; //import us.minecraftchest2.hdm_mod.init.ItemInit;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@ -39,6 +42,8 @@ public class Hdm_mod {
ModItems.register(modEventBus1); ModItems.register(modEventBus1);
ModBlocks.register(modEventBus1); ModBlocks.register(modEventBus1);
ModStructures.register(modEventBus1);
modEventBus1.addListener(this::setup); modEventBus1.addListener(this::setup);
// Register the enqueueIMC method for modloading // Register the enqueueIMC method for modloading
modEventBus1.addListener(this::enqueueIMC); modEventBus1.addListener(this::enqueueIMC);
@ -62,10 +67,16 @@ public class Hdm_mod {
// some preinit code // some preinit code
LOGGER.info("HELLO FROM PREINIT"); LOGGER.info("HELLO FROM PREINIT");
LOGGER.info("DIRT BLOCK >> {}", Blocks.DIRT.getRegistryName()); LOGGER.info("DIRT BLOCK >> {}", Blocks.DIRT.getRegistryName());
event.enqueueWork(() ->{
ModStructures.setupStructures();
});
} }
private void doClientStuff(final FMLClientSetupEvent event) { private void doClientStuff(final FMLClientSetupEvent event) {
// do something that can only be done on the client // do something that can only be done on the client
event.enqueueWork(() -> {
});
} }
private void enqueueIMC(final InterModEnqueueEvent event) { private void enqueueIMC(final InterModEnqueueEvent event) {

View file

@ -3,6 +3,7 @@ package us.minecraftchest2.hdm_mod.block;
import net.minecraft.block.AbstractBlock; import net.minecraft.block.AbstractBlock;
import net.minecraft.block.Block; import net.minecraft.block.Block;
import net.minecraft.block.BlockState; import net.minecraft.block.BlockState;
import net.minecraft.block.Blocks;
import net.minecraft.block.material.Material; import net.minecraft.block.material.Material;
import net.minecraft.item.BlockItem; import net.minecraft.item.BlockItem;
import net.minecraft.item.Item; import net.minecraft.item.Item;

View file

@ -1,11 +1,17 @@
package us.minecraftchest2.hdm_mod.item; package us.minecraftchest2.hdm_mod.item;
import net.minecraft.item.BlockItem;
import net.minecraft.item.Food;
import net.minecraft.item.Item; import net.minecraft.item.Item;
import net.minecraft.potion.Effect;
import net.minecraft.potion.EffectInstance;
import net.minecraft.potion.Effects;
import net.minecraftforge.eventbus.api.IEventBus; import net.minecraftforge.eventbus.api.IEventBus;
import net.minecraftforge.fml.RegistryObject; import net.minecraftforge.fml.RegistryObject;
import net.minecraftforge.registries.DeferredRegister; import net.minecraftforge.registries.DeferredRegister;
import net.minecraftforge.registries.ForgeRegistries; import net.minecraftforge.registries.ForgeRegistries;
import us.minecraftchest2.hdm_mod.Hdm_mod; import us.minecraftchest2.hdm_mod.Hdm_mod;
import us.minecraftchest2.hdm_mod.block.ModBlocks;
import us.minecraftchest2.hdm_mod.item.custom.SubtleKnife; import us.minecraftchest2.hdm_mod.item.custom.SubtleKnife;
public class ModItems { public class ModItems {
@ -18,12 +24,13 @@ public class ModItems {
public static final RegistryObject<Item> OMELET = ITEMS.register("omelet", public static final RegistryObject<Item> OMELET = ITEMS.register("omelet",
() -> new Item(new Item.Properties().group(ModItemGroup.HDM_ITEM_GROUP))); () -> new Item(new Item.Properties().food(new Food.Builder().hunger(5).fastToEat().saturation(20)
.effect(() -> new EffectInstance(Effects.HUNGER, 40, 4), 0.75f).build()).group(ModItemGroup.HDM_ITEM_GROUP)));
public static final RegistryObject<Item> KNIFE = ITEMS.register("subtle_knife", public static final RegistryObject<Item> KNIFE = ITEMS.register("subtle_knife",
() -> new SubtleKnife(new Item.Properties().maxStackSize(1).group(ModItemGroup.HDM_ITEM_GROUP).maxDamage(2000))); () -> new SubtleKnife(new Item.Properties().maxStackSize(1).group(ModItemGroup.HDM_ITEM_GROUP).maxDamage(2000)));
public static final RegistryObject<Item> OMELET_COOKED = ITEMS.register("omelet-cooked",
() -> new Item(new Item.Properties().food(new Food.Builder().hunger(5).fastToEat().saturation(20).build()).group(ModItemGroup.HDM_ITEM_GROUP)));
public static void register(IEventBus eventBus) { public static void register(IEventBus eventBus) {
ITEMS.register(eventBus); ITEMS.register(eventBus);

View file

@ -0,0 +1,51 @@
//package us.minecraftchest2.hdm_mod.item.custom;
//
//import net.minecraft.entity.player.PlayerEntity;
//import net.minecraft.item.Item;
//import net.minecraft.item.ItemStack;
//import net.minecraft.util.*;
//import net.minecraft.util.text.StringTextComponent;
//import net.minecraft.world.World;
//import net.minecraft.world.gen.feature.structure.Structure;
////import net.minecraft.world.gen.feature.structure.StructureFeature;
//import net.minecraft.util.math.BlockPos;
//import net.minecraft.world.server.ServerWorld;
//
//public class StructureLocatorItem extends Item {
//
// public StructureLocatorItem(Properties properties) {
// super(properties);
// }
//
// @Override
// public ActionResult<ItemStack> use(World world, PlayerEntity player, Hand hand) {
// if (!world.isClientSide && world instanceof ServerWorld) {
// ServerWorld serverWorld = (ServerWorld) world;
// BlockPos playerPos = player.blockPosition();
//
// // Replace this with your own structure, or any StructureFeature
// Structure<?> structureToFind = Structure.STRONGHOLD;
//
// BlockPos structurePos = serverWorld.getStructureLocation(
// structureToFind,
// playerPos,
// 100, // search radius in chunks
// false
// );
//
// if (structurePos != null) {
// player.sendMessage(
// new StringTextComponent("Nearest structure at: " + structurePos.getX() + ", " + structurePos.getY() + ", " + structurePos.getZ()),
// player.getUUID()
// );
// } else {
// player.sendMessage(
// new StringTextComponent("No structure found nearby."),
// player.getUUID()
// );
// }
// }
//
// return ActionResult.resultSuccess(player.getItemInHand(hand));
// }
//}

View file

@ -0,0 +1,33 @@
package us.minecraftchest2.hdm_mod.world;
import com.mojang.serialization.Codec;
import net.minecraft.util.ResourceLocation;
import net.minecraft.util.registry.Registry;
import net.minecraft.world.gen.ChunkGenerator;
import net.minecraft.world.server.ServerWorld;
import net.minecraftforge.event.world.WorldEvent;
import net.minecraftforge.eventbus.api.SubscribeEvent;
import net.minecraftforge.fml.common.Mod;
import net.minecraftforge.fml.common.ObfuscationReflectionHelper;
import us.minecraftchest2.hdm_mod.Hdm_mod;
import java.lang.reflect.Method;
@Mod.EventBusSubscriber(modid = Hdm_mod.MOD_ID)
public class ModWorldEvents {
@SubscribeEvent
public static void addDimensinalSpacing(final WorldEvent.Load event) {
if(event.getWorld() instanceof ServerWorld) {
ServerWorld serverWorld = (ServerWorld) event.getWorld();
try {
Method GETCODEC_METHOD =
ObfuscationReflectionHelper.findMethod(ChunkGenerator.class, "func_230347_a_");
ResourceLocation cgRL = Registry.CHUNK_GENERATOR_CODEC.getKey(
(Codec<? extends ChunkGenerator>)GETCODEC_METHOD.invoke(serverWorld.getChunkProvider().generator));
} catch (Exception e) {
e.printStackTrace();
}
}
}
}

View file

@ -132,6 +132,9 @@ public class SimpleTeleporter implements ITeleporter {
case "the_end": case "the_end":
dimensionName = "the End"; dimensionName = "the End";
break; break;
case "hdm_dimension":
dimensionName = "HDM Dimension";
break;
default: default:
dimensionName = path.replace('_', ' '); dimensionName = path.replace('_', ' ');
dimensionName = dimensionName.substring(0, 1).toUpperCase() + dimensionName.substring(1); dimensionName = dimensionName.substring(0, 1).toUpperCase() + dimensionName.substring(1);

View file

@ -0,0 +1,27 @@
package us.minecraftchest2.hdm_mod.world.gen;
import net.minecraft.util.RegistryKey;
import net.minecraft.util.registry.Registry;
import net.minecraft.world.biome.Biome;
import net.minecraft.world.gen.feature.IFeatureConfig;
import net.minecraft.world.gen.feature.StructureFeature;
import net.minecraftforge.common.BiomeDictionary;
import net.minecraftforge.event.world.BiomeLoadingEvent;
import us.minecraftchest2.hdm_mod.world.structure.ModStructures;
import java.util.List;
import java.util.Set;
import java.util.function.Supplier;
public class ModStructureGeneration {
public static void generateStructures(final BiomeLoadingEvent event) {
RegistryKey<Biome> key = RegistryKey.getOrCreateKey(Registry.BIOME_KEY, event.getName());
Set<BiomeDictionary.Type> types = BiomeDictionary.getTypes(key);
if(types.contains(BiomeDictionary.Type.PLAINS)) {
List<Supplier<StructureFeature<?, ?>>> structures = event.getGeneration().getStructures();
structures.add(() -> ModStructures.HOUSE.get().withConfiguration(IFeatureConfig.NO_FEATURE_CONFIG));
}
}
}

View file

@ -0,0 +1,113 @@
package us.minecraftchest2.hdm_mod.world.structure;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableMap;
import net.minecraft.util.registry.WorldGenRegistries;
import net.minecraft.world.gen.feature.NoFeatureConfig;
import net.minecraft.world.gen.feature.structure.Structure;
import net.minecraft.world.gen.settings.DimensionStructuresSettings;
import net.minecraft.world.gen.settings.StructureSeparationSettings;
import net.minecraftforge.eventbus.api.IEventBus;
import net.minecraftforge.fml.RegistryObject;
import net.minecraftforge.registries.DeferredRegister;
import net.minecraftforge.registries.ForgeRegistries;
import us.minecraftchest2.hdm_mod.Hdm_mod;
import us.minecraftchest2.hdm_mod.world.structure.structures.HouseStructure;
import java.util.HashMap;
import java.util.Map;
public class ModStructures {
public static final DeferredRegister<Structure<?>> STRUCTURES =
DeferredRegister.create(ForgeRegistries.STRUCTURE_FEATURES, Hdm_mod.MOD_ID);
public static final RegistryObject<Structure<NoFeatureConfig>> HOUSE =
STRUCTURES.register("house", HouseStructure::new);
/* average distance apart in chunks between spawn attempts */
/* minimum distance apart in chunks between spawn attempts. MUST BE LESS THAN ABOVE VALUE*/
/* this modifies the seed of the structure so no two structures always spawn over each-other.
Make this large and unique. */
public static void setupStructures() {
setupMapSpacingAndLand(HOUSE.get(),
new StructureSeparationSettings(100,50, 1234567890),
true);
}
/**
* Adds the provided structure to the registry, and adds the separation settings.
* The rarity of the structure is determined based on the values passed into
* this method in the structureSeparationSettings argument.
* This method is called by setupStructures above.
**/
public static <F extends Structure<?>> void setupMapSpacingAndLand(F structure, StructureSeparationSettings structureSeparationSettings,
boolean transformSurroundingLand) {
//add our structures into the map in Structure class
Structure.NAME_STRUCTURE_BIMAP.put(structure.getRegistryName().toString(), structure);
/*
* Whether surrounding land will be modified automatically to conform to the bottom of the structure.
* Basically, it adds land at the base of the structure like it does for Villages and Outposts.
* Doesn't work well on structure that have pieces stacked vertically or change in heights.
*
*/
if (transformSurroundingLand) {
Structure.field_236384_t_ = ImmutableList.<Structure<?>>builder()
.addAll(Structure.field_236384_t_)
.add(structure)
.build();
}
/*
* This is the map that holds the default spacing of all structures.
* Always add your structure to here so that other mods can utilize it if needed.
*
* However, while it does propagate the spacing to some correct dimensions from this map,
* it seems it doesn't always work for code made dimensions as they read from this list beforehand.
*
* Instead, we will use the WorldEvent.Load event in ModWorldEvents to add the structure
* spacing from this list into that dimension or to do dimension blacklisting properly.
* We also use our entry in DimensionStructuresSettings.DEFAULTS in WorldEvent.Load as well.
*
* DEFAULTS requires AccessTransformer (See resources/META-INF/accesstransformer.cfg)
*/
DimensionStructuresSettings.field_236191_b_ =
ImmutableMap.<Structure<?>, StructureSeparationSettings>builder()
.putAll(DimensionStructuresSettings.field_236191_b_)
.put(structure, structureSeparationSettings)
.build();
/*
* There are very few mods that relies on seeing your structure in the
* noise settings registry before the world is made.
*
* You may see some mods add their spacings to DimensionSettings.BUILTIN_OVERWORLD instead of the
* NOISE_GENERATOR_SETTINGS loop below but that field only applies for the default overworld and
* won't add to other worldtypes or dimensions (like amplified or Nether).
* So yeah, don't do DimensionSettings.BUILTIN_OVERWORLD. Use the NOISE_GENERATOR_SETTINGS loop
* below instead if you must.
*/
WorldGenRegistries.NOISE_SETTINGS.getEntries().forEach(settings -> {
Map<Structure<?>, StructureSeparationSettings> structureMap =
settings.getValue().getStructures().func_236195_a_();
/*
* Pre-caution in case a mod makes the structure map immutable like datapacks do.
* I take no chances myself. You never know what another mods does...
*
* structureConfig requires AccessTransformer (See resources/META-INF/accesstransformer.cfg)
*/
if (structureMap instanceof ImmutableMap) {
Map<Structure<?>, StructureSeparationSettings> tempMap = new HashMap<>(structureMap);
tempMap.put(structure, structureSeparationSettings);
settings.getValue().getStructures().func_236195_a_();
} else {
structureMap.put(structure, structureSeparationSettings);
}
});
}
public static void register(IEventBus eventBus) {
STRUCTURES.register(eventBus);
}
}

View file

@ -0,0 +1,90 @@
package us.minecraftchest2.hdm_mod.world.structure.structures;
import net.minecraft.block.BlockState;
import net.minecraft.util.ResourceLocation;
import net.minecraft.util.SharedSeedRandom;
import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.ChunkPos;
import net.minecraft.util.math.MutableBoundingBox;
import net.minecraft.util.registry.DynamicRegistries;
import net.minecraft.util.registry.Registry;
import net.minecraft.world.IBlockReader;
import net.minecraft.world.biome.Biome;
import net.minecraft.world.biome.provider.BiomeProvider;
import net.minecraft.world.gen.ChunkGenerator;
import net.minecraft.world.gen.GenerationStage;
import net.minecraft.world.gen.Heightmap;
import net.minecraft.world.gen.feature.NoFeatureConfig;
import net.minecraft.world.gen.feature.jigsaw.JigsawManager;
import net.minecraft.world.gen.feature.structure.AbstractVillagePiece;
import net.minecraft.world.gen.feature.structure.Structure;
import net.minecraft.world.gen.feature.structure.StructureStart;
import net.minecraft.world.gen.feature.structure.VillageConfig;
import net.minecraft.world.gen.feature.template.TemplateManager;
import us.minecraftchest2.hdm_mod.Hdm_mod;
import org.apache.logging.log4j.Level;
import org.apache.logging.log4j.LogManager;
public class HouseStructure extends Structure<NoFeatureConfig> {
public HouseStructure() {
super(NoFeatureConfig.CODEC);
}
@Override
public GenerationStage.Decoration getDecorationStage() {
return GenerationStage.Decoration.SURFACE_STRUCTURES;
}
@Override
protected boolean func_230363_a_(ChunkGenerator chunkGenerator, BiomeProvider biomeSource,
long seed, SharedSeedRandom chunkRandom, int chunkX, int chunkZ,
Biome biome, ChunkPos chunkPos, NoFeatureConfig featureConfig) {
BlockPos centerOfChunk = new BlockPos((chunkX << 4) + 7, 0, (chunkZ << 4) + 7);
int landHeight = chunkGenerator.getHeight(centerOfChunk.getX(), centerOfChunk.getZ(),
Heightmap.Type.WORLD_SURFACE_WG);
IBlockReader columnOfBlocks = chunkGenerator.func_230348_a_(centerOfChunk.getX(), centerOfChunk.getZ());
BlockState topBlock = columnOfBlocks.getBlockState(centerOfChunk.up(landHeight));
return topBlock.getFluidState().isEmpty();
}
@Override
public IStartFactory<NoFeatureConfig> getStartFactory() {
return HouseStructure.Start::new;
}
public static class Start extends StructureStart<NoFeatureConfig> {
public Start(Structure<NoFeatureConfig> structureIn, int chunkX, int chunkZ,
MutableBoundingBox mutableBoundingBox, int referenceIn, long seedIn) {
super(structureIn, chunkX, chunkZ, mutableBoundingBox, referenceIn, seedIn);
}
@Override // generatePieces
public void func_230364_a_(DynamicRegistries dynamicRegistryManager, ChunkGenerator chunkGenerator,
TemplateManager templateManagerIn, int chunkX, int chunkZ, Biome biomeIn,
NoFeatureConfig config) {
// Turns the chunk coordinates into actual coordinates we can use. (Gets center of that chunk)
int x = (chunkX << 4) + 7;
int z = (chunkZ << 4) + 7;
BlockPos blockpos = new BlockPos(x, 0, z);
//addpieces()
JigsawManager.func_242837_a(dynamicRegistryManager,
new VillageConfig(() -> dynamicRegistryManager.getRegistry(Registry.JIGSAW_POOL_KEY)
.getOrDefault(new ResourceLocation(Hdm_mod.MOD_ID, "house/start_pool")),
10), AbstractVillagePiece::new, chunkGenerator, templateManagerIn,
blockpos, this.components, this.rand,false,true);
this.components.forEach(piece -> piece.offset(0, 1, 0));
this.components.forEach(piece -> piece.getBoundingBox().minY -= 1);
this.recalculateStructureSize();
LogManager.getLogger().log(Level.DEBUG, "House at " +
this.components.get(0).getBoundingBox().minX + " " +
this.components.get(0).getBoundingBox().minY + " " +
this.components.get(0).getBoundingBox().minZ);
}
}
}

View file

@ -0,0 +1,4 @@
public-f net.minecraft.world.gen.feature.structure.Structure field_236384_t_ #LAND_TRANSFORMING_STRUCTURES
public-f net.minecraft.world.gen.settings.DimensionStructuresSettings field_236191_b_ #DEFAULT_STRUCTURE_CONFIGS
public-f net.minecraft.world.gen.FlatGenerationSettings field_202247_j #STRUCTURES
public-f net.minecraft.world.gen.settings.DimensionStructuresSettings field_236193_d_ #structures

View file

@ -4,6 +4,7 @@
"item.hdm_mod.subtle_knife": "Subtle Knife", "item.hdm_mod.subtle_knife": "Subtle Knife",
"item.hdm_mod.omelet": "Omelet", "item.hdm_mod.omelet": "Omelet",
"item.hdm_mod.omelet-cooked": "Omelet",
"item.hdm_mod.dust": "Dust", "item.hdm_mod.dust": "Dust",
"block.hdm_mod.block_of_dust": "Block of Dust", "block.hdm_mod.block_of_dust": "Block of Dust",
"block.hdm_mod.window": "Window" "block.hdm_mod.window": "Window"

View file

@ -1,6 +1,6 @@
{ {
"parent": "block/cube_all", "parent": "block/cube_all",
"textures" : { "textures" : {
"all": "hdm_mod:block/grey" "all": "hdm_mod:block/portalblock"
} }
} }

View file

@ -0,0 +1,6 @@
{
"parent": "item/generated",
"textures": {
"layer0": "hdm_mod:item/omelet"
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 228 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 108 B

After

Width:  |  Height:  |  Size: 308 B

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 136 B

After

Width:  |  Height:  |  Size: 230 B

Before After
Before After

View file

@ -3,10 +3,12 @@
"pools": [ "pools": [
{ {
"rolls": 1, "rolls": 1,
"entries":[ "entries": [
{ {
"type": "minecraft:item", "type": "minecraft:item",
"name": "hdm_mod:dust" "name": "hdm_mod:dust",
"weight": 4,
"quality": 9
} }
] ]
} }

View file

@ -0,0 +1,23 @@
{
"type": "minecraft:crafting_shaped",
"pattern": [
"#B",
"E "
],
"key": {
"#": {
"item": "minecraft:porkchop"
},
"B": {
"item": "minecraft:brown_mushroom"
},
"E": {
"item": "minecraft:egg"
}
},
"result": {
"item": "hdm_mod:omelet",
"count": 1
},
"group": "omelets"
}

View file

@ -0,0 +1,11 @@
{
"type": "minecraft:smelting",
"category": "food",
"ingredient": {
"item": "hdm_mod:omelet"
},
"result": "hdm_mod:omelet-cooked",
"experience": 1,
"cookingtime": 200,
"group": "omelets"
}

View file

@ -0,0 +1,15 @@
{
"name": "hdm_mod:house/start_pool",
"fallback": "minecraft:empty",
"elements": [
{
"weight": 1,
"element": {
"location": "hdm_mod:house",
"processors": "minecraft:empty",
"projection": "rigid",
"element_type": "minecraft:single_pool_element"
}
}
]
}