ham
@ -9,7 +9,7 @@ yarn_mappings=1.21.1+build.3
|
|||||||
loader_version=0.16.10
|
loader_version=0.16.10
|
||||||
|
|
||||||
# Mod Properties
|
# Mod Properties
|
||||||
mod_version=0.6.0
|
mod_version=1.0.0
|
||||||
maven_group=xyz.ibatv.nethercraft
|
maven_group=xyz.ibatv.nethercraft
|
||||||
archives_base_name=nethercraft-classic
|
archives_base_name=nethercraft-classic
|
||||||
|
|
||||||
|
@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
"parent": "minecraft:item/generated",
|
||||||
|
"textures": {
|
||||||
|
"layer0": "nethercraft-classic:item/glow_apple"
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,43 @@
|
|||||||
|
{
|
||||||
|
"parent": "minecraft:recipes/root",
|
||||||
|
"criteria": {
|
||||||
|
"has_apple": {
|
||||||
|
"conditions": {
|
||||||
|
"items": [
|
||||||
|
{
|
||||||
|
"items": "minecraft:apple"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"trigger": "minecraft:inventory_changed"
|
||||||
|
},
|
||||||
|
"has_foulite_dust": {
|
||||||
|
"conditions": {
|
||||||
|
"items": [
|
||||||
|
{
|
||||||
|
"items": "nethercraft-classic:foulite_dust"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"trigger": "minecraft:inventory_changed"
|
||||||
|
},
|
||||||
|
"has_the_recipe": {
|
||||||
|
"conditions": {
|
||||||
|
"recipe": "nethercraft-classic:glow_apple"
|
||||||
|
},
|
||||||
|
"trigger": "minecraft:recipe_unlocked"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"requirements": [
|
||||||
|
[
|
||||||
|
"has_the_recipe",
|
||||||
|
"has_foulite_dust",
|
||||||
|
"has_apple"
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"rewards": {
|
||||||
|
"recipes": [
|
||||||
|
"nethercraft-classic:glow_apple"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,43 @@
|
|||||||
|
{
|
||||||
|
"parent": "minecraft:recipes/root",
|
||||||
|
"criteria": {
|
||||||
|
"has_foulite_dust": {
|
||||||
|
"conditions": {
|
||||||
|
"items": [
|
||||||
|
{
|
||||||
|
"items": "nethercraft-classic:foulite_dust"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"trigger": "minecraft:inventory_changed"
|
||||||
|
},
|
||||||
|
"has_the_recipe": {
|
||||||
|
"conditions": {
|
||||||
|
"recipe": "nethercraft-classic:dark_wheat_seeds"
|
||||||
|
},
|
||||||
|
"trigger": "minecraft:recipe_unlocked"
|
||||||
|
},
|
||||||
|
"has_wheat_seeds": {
|
||||||
|
"conditions": {
|
||||||
|
"items": [
|
||||||
|
{
|
||||||
|
"items": "minecraft:wheat_seeds"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"trigger": "minecraft:inventory_changed"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"requirements": [
|
||||||
|
[
|
||||||
|
"has_the_recipe",
|
||||||
|
"has_foulite_dust",
|
||||||
|
"has_wheat_seeds"
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"rewards": {
|
||||||
|
"recipes": [
|
||||||
|
"nethercraft-classic:dark_wheat_seeds"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,43 @@
|
|||||||
|
{
|
||||||
|
"parent": "minecraft:recipes/root",
|
||||||
|
"criteria": {
|
||||||
|
"has_foulite_dust": {
|
||||||
|
"conditions": {
|
||||||
|
"items": [
|
||||||
|
{
|
||||||
|
"items": "nethercraft-classic:foulite_dust"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"trigger": "minecraft:inventory_changed"
|
||||||
|
},
|
||||||
|
"has_leather": {
|
||||||
|
"conditions": {
|
||||||
|
"items": [
|
||||||
|
{
|
||||||
|
"items": "minecraft:leather"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"trigger": "minecraft:inventory_changed"
|
||||||
|
},
|
||||||
|
"has_the_recipe": {
|
||||||
|
"conditions": {
|
||||||
|
"recipe": "nethercraft-classic:imp_skin"
|
||||||
|
},
|
||||||
|
"trigger": "minecraft:recipe_unlocked"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"requirements": [
|
||||||
|
[
|
||||||
|
"has_the_recipe",
|
||||||
|
"has_foulite_dust",
|
||||||
|
"has_leather"
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"rewards": {
|
||||||
|
"recipes": [
|
||||||
|
"nethercraft-classic:imp_skin"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
@ -13,7 +13,7 @@
|
|||||||
},
|
},
|
||||||
"has_the_recipe": {
|
"has_the_recipe": {
|
||||||
"conditions": {
|
"conditions": {
|
||||||
"recipe": "nethercraft-classic:glowood_stairs"
|
"recipe": "nethercraft-classic:stairs_left"
|
||||||
},
|
},
|
||||||
"trigger": "minecraft:recipe_unlocked"
|
"trigger": "minecraft:recipe_unlocked"
|
||||||
}
|
}
|
||||||
@ -26,7 +26,7 @@
|
|||||||
],
|
],
|
||||||
"rewards": {
|
"rewards": {
|
||||||
"recipes": [
|
"recipes": [
|
||||||
"nethercraft-classic:glowood_stairs"
|
"nethercraft-classic:stairs_left"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -0,0 +1,32 @@
|
|||||||
|
{
|
||||||
|
"parent": "minecraft:recipes/root",
|
||||||
|
"criteria": {
|
||||||
|
"has_glowood_planks": {
|
||||||
|
"conditions": {
|
||||||
|
"items": [
|
||||||
|
{
|
||||||
|
"items": "nethercraft-classic:glowood_planks"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"trigger": "minecraft:inventory_changed"
|
||||||
|
},
|
||||||
|
"has_the_recipe": {
|
||||||
|
"conditions": {
|
||||||
|
"recipe": "nethercraft-classic:stairs_right"
|
||||||
|
},
|
||||||
|
"trigger": "minecraft:recipe_unlocked"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"requirements": [
|
||||||
|
[
|
||||||
|
"has_the_recipe",
|
||||||
|
"has_glowood_planks"
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"rewards": {
|
||||||
|
"recipes": [
|
||||||
|
"nethercraft-classic:stairs_right"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,60 @@
|
|||||||
|
{
|
||||||
|
"type": "minecraft:block",
|
||||||
|
"pools": [
|
||||||
|
{
|
||||||
|
"bonus_rolls": 0.0,
|
||||||
|
"entries": [
|
||||||
|
{
|
||||||
|
"type": "minecraft:alternatives",
|
||||||
|
"children": [
|
||||||
|
{
|
||||||
|
"type": "minecraft:item",
|
||||||
|
"conditions": [
|
||||||
|
{
|
||||||
|
"condition": "minecraft:match_tool",
|
||||||
|
"predicate": {
|
||||||
|
"predicates": {
|
||||||
|
"minecraft:enchantments": [
|
||||||
|
{
|
||||||
|
"enchantments": "minecraft:silk_touch",
|
||||||
|
"levels": {
|
||||||
|
"min": 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"name": "nethercraft-classic:nether_dirt_farmland"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "minecraft:item",
|
||||||
|
"functions": [
|
||||||
|
{
|
||||||
|
"add": false,
|
||||||
|
"count": {
|
||||||
|
"type": "minecraft:uniform",
|
||||||
|
"max": 1.0,
|
||||||
|
"min": 1.0
|
||||||
|
},
|
||||||
|
"function": "minecraft:set_count"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"enchantment": "minecraft:fortune",
|
||||||
|
"formula": "minecraft:ore_drops",
|
||||||
|
"function": "minecraft:apply_bonus"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"function": "minecraft:explosion_decay"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"name": "nethercraft-classic:nether_dirt"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"rolls": 1.0
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
@ -0,0 +1,16 @@
|
|||||||
|
{
|
||||||
|
"type": "minecraft:crafting_shapeless",
|
||||||
|
"category": "misc",
|
||||||
|
"ingredients": [
|
||||||
|
{
|
||||||
|
"item": "nethercraft-classic:foulite_dust"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"item": "minecraft:wheat_seeds"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"result": {
|
||||||
|
"count": 1,
|
||||||
|
"id": "nethercraft-classic:dark_wheat_seeds"
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,21 @@
|
|||||||
|
{
|
||||||
|
"type": "minecraft:crafting_shaped",
|
||||||
|
"category": "misc",
|
||||||
|
"key": {
|
||||||
|
"A": {
|
||||||
|
"item": "minecraft:apple"
|
||||||
|
},
|
||||||
|
"f": {
|
||||||
|
"item": "nethercraft-classic:foulite_dust"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"pattern": [
|
||||||
|
"fff",
|
||||||
|
"fAf",
|
||||||
|
"fff"
|
||||||
|
],
|
||||||
|
"result": {
|
||||||
|
"count": 1,
|
||||||
|
"id": "nethercraft-classic:glow_apple"
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,16 @@
|
|||||||
|
{
|
||||||
|
"type": "minecraft:crafting_shapeless",
|
||||||
|
"category": "misc",
|
||||||
|
"ingredients": [
|
||||||
|
{
|
||||||
|
"item": "nethercraft-classic:foulite_dust"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"item": "minecraft:leather"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"result": {
|
||||||
|
"count": 1,
|
||||||
|
"id": "nethercraft-classic:imp_skin"
|
||||||
|
}
|
||||||
|
}
|
@ -10,7 +10,7 @@
|
|||||||
"lll"
|
"lll"
|
||||||
],
|
],
|
||||||
"result": {
|
"result": {
|
||||||
"count": 1,
|
"count": 3,
|
||||||
"id": "nethercraft-classic:lava_paper"
|
"id": "nethercraft-classic:lava_paper"
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -0,0 +1,18 @@
|
|||||||
|
{
|
||||||
|
"type": "minecraft:crafting_shaped",
|
||||||
|
"category": "misc",
|
||||||
|
"key": {
|
||||||
|
"W": {
|
||||||
|
"item": "nethercraft-classic:glowood_planks"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"pattern": [
|
||||||
|
" W",
|
||||||
|
" WW",
|
||||||
|
"WWW"
|
||||||
|
],
|
||||||
|
"result": {
|
||||||
|
"count": 4,
|
||||||
|
"id": "nethercraft-classic:glowood_stairs"
|
||||||
|
}
|
||||||
|
}
|
@ -2,8 +2,12 @@ package xyz.ibatv.nethercraft;
|
|||||||
|
|
||||||
import net.fabricmc.api.ModInitializer;
|
import net.fabricmc.api.ModInitializer;
|
||||||
|
|
||||||
|
import net.minecraft.entity.SpawnLocationTypes;
|
||||||
|
import net.minecraft.entity.SpawnRestriction;
|
||||||
|
import net.minecraft.entity.mob.HostileEntity;
|
||||||
import net.minecraft.item.Item;
|
import net.minecraft.item.Item;
|
||||||
import net.minecraft.util.Identifier;
|
import net.minecraft.util.Identifier;
|
||||||
|
import net.minecraft.world.Heightmap;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
import xyz.ibatv.nethercraft.block.ModBlocks;
|
import xyz.ibatv.nethercraft.block.ModBlocks;
|
||||||
@ -19,6 +23,7 @@ import net.minecraft.registry.BuiltinRegistries;
|
|||||||
import net.minecraft.registry.RegistryKey;
|
import net.minecraft.registry.RegistryKey;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public class NethercraftClassic implements ModInitializer {
|
public class NethercraftClassic implements ModInitializer {
|
||||||
public static final String MOD_ID = "nethercraft-classic";
|
public static final String MOD_ID = "nethercraft-classic";
|
||||||
public static final Logger LOGGER = LoggerFactory.getLogger(MOD_ID);
|
public static final Logger LOGGER = LoggerFactory.getLogger(MOD_ID);
|
||||||
|
@ -1,12 +1,17 @@
|
|||||||
package xyz.ibatv.nethercraft;
|
package xyz.ibatv.nethercraft;
|
||||||
|
|
||||||
|
|
||||||
import net.fabricmc.api.ClientModInitializer;
|
import net.fabricmc.api.ClientModInitializer;
|
||||||
import net.fabricmc.fabric.api.blockrenderlayer.v1.BlockRenderLayerMap;
|
import net.fabricmc.fabric.api.blockrenderlayer.v1.BlockRenderLayerMap;
|
||||||
import net.minecraft.client.render.RenderLayer;
|
import net.minecraft.client.render.RenderLayer;
|
||||||
|
import net.minecraft.client.render.entity.model.EntityModelLayer;
|
||||||
|
import net.minecraft.util.Identifier;
|
||||||
import xyz.ibatv.nethercraft.block.ModBlocks;
|
import xyz.ibatv.nethercraft.block.ModBlocks;
|
||||||
|
|
||||||
|
|
||||||
public class NethercraftClassicClient implements ClientModInitializer {
|
public class NethercraftClassicClient implements ClientModInitializer {
|
||||||
|
public static final EntityModelLayer MODEL_DARK_ZOMBIE_LAYER = new EntityModelLayer(Identifier.of(NethercraftClassic.MOD_ID, "dark_zombie"), "main");
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onInitializeClient() {
|
public void onInitializeClient() {
|
||||||
BlockRenderLayerMap.INSTANCE.putBlock(ModBlocks.GLOWOOD_SAPLING, RenderLayer.getCutout());
|
BlockRenderLayerMap.INSTANCE.putBlock(ModBlocks.GLOWOOD_SAPLING, RenderLayer.getCutout());
|
||||||
|
@ -13,6 +13,7 @@ import net.minecraft.util.Identifier;
|
|||||||
import net.minecraft.util.math.intprovider.UniformIntProvider;
|
import net.minecraft.util.math.intprovider.UniformIntProvider;
|
||||||
import xyz.ibatv.nethercraft.NethercraftClassic;
|
import xyz.ibatv.nethercraft.NethercraftClassic;
|
||||||
import xyz.ibatv.nethercraft.block.custom.DarkWheatCropBlock;
|
import xyz.ibatv.nethercraft.block.custom.DarkWheatCropBlock;
|
||||||
|
import xyz.ibatv.nethercraft.block.custom.LavaReedsBlock;
|
||||||
import xyz.ibatv.nethercraft.block.custom.ModFarmBlock;
|
import xyz.ibatv.nethercraft.block.custom.ModFarmBlock;
|
||||||
import xyz.ibatv.nethercraft.block.custom.ModSaplingBlock;
|
import xyz.ibatv.nethercraft.block.custom.ModSaplingBlock;
|
||||||
import xyz.ibatv.nethercraft.world.tree.ModSaplingGenerators;
|
import xyz.ibatv.nethercraft.world.tree.ModSaplingGenerators;
|
||||||
@ -111,8 +112,14 @@ public class ModBlocks {
|
|||||||
new FlowerBlock(StatusEffects.GLOWING, 10,
|
new FlowerBlock(StatusEffects.GLOWING, 10,
|
||||||
AbstractBlock.Settings.copy(Blocks.POPPY).nonOpaque().noCollision().breakInstantly().pistonBehavior(PistonBehavior.DESTROY)));
|
AbstractBlock.Settings.copy(Blocks.POPPY).nonOpaque().noCollision().breakInstantly().pistonBehavior(PistonBehavior.DESTROY)));
|
||||||
|
|
||||||
|
//public static final Block LAVA_REEDS = registerBlock("lava_reeds",
|
||||||
|
// new SugarCaneBlock(AbstractBlock.Settings.copy(Blocks.SUGAR_CANE).noCollision().nonOpaque()
|
||||||
|
// .ticksRandomly().breakInstantly().pistonBehavior(PistonBehavior.DESTROY)));
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public static final Block LAVA_REEDS = registerBlock("lava_reeds",
|
public static final Block LAVA_REEDS = registerBlock("lava_reeds",
|
||||||
new SugarCaneBlock(AbstractBlock.Settings.copy(Blocks.SUGAR_CANE).noCollision().nonOpaque()
|
new LavaReedsBlock(AbstractBlock.Settings.copy(Blocks.SUGAR_CANE).noCollision().nonOpaque()
|
||||||
.ticksRandomly().breakInstantly().pistonBehavior(PistonBehavior.DESTROY)));
|
.ticksRandomly().breakInstantly().pistonBehavior(PistonBehavior.DESTROY)));
|
||||||
|
|
||||||
|
|
||||||
|
@ -2,10 +2,14 @@ package xyz.ibatv.nethercraft.block.custom;
|
|||||||
|
|
||||||
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.CropBlock;
|
import net.minecraft.block.CropBlock;
|
||||||
import net.minecraft.item.ItemConvertible;
|
import net.minecraft.item.ItemConvertible;
|
||||||
import net.minecraft.state.StateManager;
|
import net.minecraft.state.StateManager;
|
||||||
import net.minecraft.state.property.IntProperty;
|
import net.minecraft.state.property.IntProperty;
|
||||||
|
import net.minecraft.util.math.BlockPos;
|
||||||
|
import net.minecraft.world.BlockView;
|
||||||
|
import xyz.ibatv.nethercraft.block.ModBlocks;
|
||||||
import xyz.ibatv.nethercraft.item.ModItems;
|
import xyz.ibatv.nethercraft.item.ModItems;
|
||||||
|
|
||||||
public class DarkWheatCropBlock extends CropBlock {
|
public class DarkWheatCropBlock extends CropBlock {
|
||||||
@ -16,6 +20,11 @@ public class DarkWheatCropBlock extends CropBlock {
|
|||||||
super(settings);
|
super(settings);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected boolean canPlantOnTop(BlockState floor, BlockView world, BlockPos pos) {
|
||||||
|
return floor.isOf(Blocks.FARMLAND) || floor.isOf(ModBlocks.NETHER_DIRT_FARMLAND);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected ItemConvertible getSeedsItem() {
|
protected ItemConvertible getSeedsItem() {
|
||||||
return ModItems.DARK_WHEAT_SEEDS;
|
return ModItems.DARK_WHEAT_SEEDS;
|
||||||
|
@ -0,0 +1,39 @@
|
|||||||
|
package xyz.ibatv.nethercraft.block.custom;
|
||||||
|
|
||||||
|
import net.minecraft.block.BlockState;
|
||||||
|
import net.minecraft.block.Blocks;
|
||||||
|
import net.minecraft.block.SugarCaneBlock;
|
||||||
|
import net.minecraft.fluid.Fluid;
|
||||||
|
import net.minecraft.fluid.FluidState;
|
||||||
|
import net.minecraft.registry.tag.BlockTags;
|
||||||
|
import net.minecraft.registry.tag.FluidTags;
|
||||||
|
import net.minecraft.util.math.BlockPos;
|
||||||
|
import net.minecraft.util.math.Direction;
|
||||||
|
import net.minecraft.world.WorldView;
|
||||||
|
|
||||||
|
public class LavaReedsBlock extends SugarCaneBlock {
|
||||||
|
public LavaReedsBlock(Settings settings) {
|
||||||
|
super(settings);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected boolean canPlaceAt(BlockState state, WorldView world, BlockPos pos) {
|
||||||
|
BlockState blockState = world.getBlockState(pos.down());
|
||||||
|
if (blockState.isOf(this)) {
|
||||||
|
return true;
|
||||||
|
} else {
|
||||||
|
if (blockState.isIn(BlockTags.DIRT) || blockState.isIn(BlockTags.SAND)) {
|
||||||
|
BlockPos blockPos = pos.down();
|
||||||
|
|
||||||
|
for(Direction direction : Direction.Type.HORIZONTAL) {
|
||||||
|
FluidState fluidState = world.getFluidState(blockPos.offset(direction));
|
||||||
|
if (fluidState.isIn(FluidTags.LAVA)) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -61,6 +61,7 @@ public class ModFarmBlock extends Block { //FarmlandBlock
|
|||||||
return !blockState.isSolid() || blockState.getBlock() instanceof FenceGateBlock || blockState.getBlock() instanceof PistonExtensionBlock;
|
return !blockState.isSolid() || blockState.getBlock() instanceof FenceGateBlock || blockState.getBlock() instanceof PistonExtensionBlock;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public BlockState getPlacementState(ItemPlacementContext ctx) {
|
public BlockState getPlacementState(ItemPlacementContext ctx) {
|
||||||
return !this.getDefaultState().canPlaceAt(ctx.getWorld(), ctx.getBlockPos()) ? ModBlocks.NETHER_DIRT.getDefaultState() : super.getPlacementState(ctx);
|
return !this.getDefaultState().canPlaceAt(ctx.getWorld(), ctx.getBlockPos()) ? ModBlocks.NETHER_DIRT.getDefaultState() : super.getPlacementState(ctx);
|
||||||
}
|
}
|
||||||
@ -75,7 +76,7 @@ public class ModFarmBlock extends Block { //FarmlandBlock
|
|||||||
|
|
||||||
protected void scheduledTick(BlockState state, ServerWorld world, BlockPos pos, Random random) {
|
protected void scheduledTick(BlockState state, ServerWorld world, BlockPos pos, Random random) {
|
||||||
if (!state.canPlaceAt(world, pos)) {
|
if (!state.canPlaceAt(world, pos)) {
|
||||||
setToDirt((Entity)null, state, world, pos);
|
setToNetherDirt((Entity)null, state, world, pos);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -86,7 +87,7 @@ public class ModFarmBlock extends Block { //FarmlandBlock
|
|||||||
if (i > 0) {
|
if (i > 0) {
|
||||||
world.setBlockState(pos, (BlockState)state.with(MOISTURE, i - 1), 2);
|
world.setBlockState(pos, (BlockState)state.with(MOISTURE, i - 1), 2);
|
||||||
} else if (!hasCrop(world, pos)) {
|
} else if (!hasCrop(world, pos)) {
|
||||||
setToDirt((Entity)null, state, world, pos);
|
setToNetherDirt((Entity)null, state, world, pos);
|
||||||
}
|
}
|
||||||
} else if (i < 7) {
|
} else if (i < 7) {
|
||||||
world.setBlockState(pos, (BlockState)state.with(MOISTURE, 7), 2);
|
world.setBlockState(pos, (BlockState)state.with(MOISTURE, 7), 2);
|
||||||
@ -94,20 +95,24 @@ public class ModFarmBlock extends Block { //FarmlandBlock
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public void onLandedUpon(World world, BlockState state, BlockPos pos, Entity entity, float fallDistance) {
|
public void onLandedUpon(World world, BlockState state, BlockPos pos, Entity entity, float fallDistance) {
|
||||||
if (!world.isClient && world.random.nextFloat() < fallDistance - 0.5F && entity instanceof LivingEntity && (entity instanceof PlayerEntity || world.getGameRules().getBoolean(GameRules.DO_MOB_GRIEFING)) && entity.getWidth() * entity.getWidth() * entity.getHeight() > 0.512F) {
|
if (!world.isClient && world.random.nextFloat() < fallDistance - 0.5F && entity instanceof LivingEntity && (entity instanceof PlayerEntity || world.getGameRules().getBoolean(GameRules.DO_MOB_GRIEFING)) && entity.getWidth() * entity.getWidth() * entity.getHeight() > 0.512F) {
|
||||||
setToDirt(entity, ModBlocks.NETHER_DIRT.getDefaultState(), world, pos);
|
setToNetherDirt(entity, ModBlocks.NETHER_DIRT.getDefaultState(), world, pos);
|
||||||
}
|
}
|
||||||
|
|
||||||
super.onLandedUpon(world, ModBlocks.NETHER_DIRT.getDefaultState(), pos, entity, fallDistance);
|
super.onLandedUpon(world, ModBlocks.NETHER_DIRT.getDefaultState(), pos, entity, fallDistance);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void setToDirt(@Nullable Entity entity, BlockState state, World world, BlockPos pos) {
|
|
||||||
BlockState blockState = pushEntitiesUpBeforeBlockChange(state, ModBlocks.NETHER_DIRT.getDefaultState(), world, pos);
|
public static void setToNetherDirt(@Nullable Entity entity, BlockState state, World world, BlockPos pos) {
|
||||||
|
BlockState blockState = pushEntitiesUpBeforeBlockChange(ModBlocks.NETHER_DIRT.getDefaultState(), ModBlocks.NETHER_DIRT.getDefaultState(), world, pos);
|
||||||
world.setBlockState(pos, blockState);
|
world.setBlockState(pos, blockState);
|
||||||
world.emitGameEvent(GameEvent.BLOCK_CHANGE, pos, GameEvent.Emitter.of(entity, blockState));
|
world.emitGameEvent(GameEvent.BLOCK_CHANGE, pos, GameEvent.Emitter.of(entity, ModBlocks.NETHER_DIRT.getDefaultState()));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
private static boolean hasCrop(BlockView world, BlockPos pos) {
|
private static boolean hasCrop(BlockView world, BlockPos pos) {
|
||||||
return world.getBlockState(pos.up()).isIn(BlockTags.MAINTAINS_FARMLAND);
|
return world.getBlockState(pos.up()).isIn(BlockTags.MAINTAINS_FARMLAND);
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,18 @@
|
|||||||
|
package xyz.ibatv.nethercraft.block.custom;
|
||||||
|
|
||||||
|
import net.minecraft.block.BlockState;
|
||||||
|
import net.minecraft.block.FarmlandBlock;
|
||||||
|
import net.minecraft.entity.Entity;
|
||||||
|
import net.minecraft.util.math.BlockPos;
|
||||||
|
import net.minecraft.world.World;
|
||||||
|
|
||||||
|
public class testfarm extends FarmlandBlock {
|
||||||
|
public testfarm(Settings settings) {
|
||||||
|
super(settings);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onLandedUpon(World world, BlockState state, BlockPos pos, Entity entity, float fallDistance) {
|
||||||
|
super.onLandedUpon(world, state, pos, entity, fallDistance);
|
||||||
|
}
|
||||||
|
}
|
@ -41,6 +41,7 @@ public class ModLootTableProvider extends FabricBlockLootTableProvider {
|
|||||||
addDrop(ModBlocks.GLOWOOD_DOOR, doorDrops(ModBlocks.GLOWOOD_DOOR));
|
addDrop(ModBlocks.GLOWOOD_DOOR, doorDrops(ModBlocks.GLOWOOD_DOOR));
|
||||||
addDrop(ModBlocks.GLOWOOD_LADDER);
|
addDrop(ModBlocks.GLOWOOD_LADDER);
|
||||||
addDrop(ModBlocks.NETHER_DIRT);
|
addDrop(ModBlocks.NETHER_DIRT);
|
||||||
|
addDrop(ModBlocks.NETHER_DIRT_FARMLAND, multipleOreDrops(ModBlocks.NETHER_DIRT_FARMLAND, Item.fromBlock(ModBlocks.NETHER_DIRT), 1, 1));
|
||||||
|
|
||||||
addDrop(ModBlocks.GLOWOOD_LEAVES, leavesDrops(ModBlocks.GLOWOOD_LEAVES, ModBlocks.GLOWOOD_SAPLING, 0.0625f));
|
addDrop(ModBlocks.GLOWOOD_LEAVES, leavesDrops(ModBlocks.GLOWOOD_LEAVES, ModBlocks.GLOWOOD_SAPLING, 0.0625f));
|
||||||
|
|
||||||
|
@ -73,6 +73,7 @@ public class ModModelProvider extends FabricModelProvider {
|
|||||||
itemModelGenerator.register(ModItems.NETHERSTICK, Models.GENERATED);
|
itemModelGenerator.register(ModItems.NETHERSTICK, Models.GENERATED);
|
||||||
itemModelGenerator.register(ModItems.DARK_WHEAT, Models.GENERATED);
|
itemModelGenerator.register(ModItems.DARK_WHEAT, Models.GENERATED);
|
||||||
itemModelGenerator.register(ModItems.DEVILBREAD, Models.GENERATED);
|
itemModelGenerator.register(ModItems.DEVILBREAD, Models.GENERATED);
|
||||||
|
itemModelGenerator.register(ModItems.GLOW_APPLE, Models.GENERATED);
|
||||||
itemModelGenerator.register(ModItems.GLOWSTEW, Models.GENERATED);
|
itemModelGenerator.register(ModItems.GLOWSTEW, Models.GENERATED);
|
||||||
itemModelGenerator.register(ModItems.FOULITE_DUST, Models.GENERATED);
|
itemModelGenerator.register(ModItems.FOULITE_DUST, Models.GENERATED);
|
||||||
itemModelGenerator.register(ModItems.W_DUST, Models.GENERATED);
|
itemModelGenerator.register(ModItems.W_DUST, Models.GENERATED);
|
||||||
|
@ -26,9 +26,6 @@ public class ModRecipeProvider extends FabricRecipeProvider {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void generate(RecipeExporter recipeExporter) {
|
public void generate(RecipeExporter recipeExporter) {
|
||||||
/*offerReversibleCompactingRecipes(recipeExporter, RecipeCategory.BUILDING_BLOCKS, ModItems.PROSPERITY_SHARD, RecipeCategory.BUILDING_BLOCKS, ModBlocks.PROSPERITY_GEMSTONE_BLOCK);
|
|
||||||
offerReversibleCompactingRecipes(recipeExporter, RecipeCategory.BUILDING_BLOCKS, ModItems.PROSPERITY_INGOT, RecipeCategory.BUILDING_BLOCKS, ModBlocks.PROSPERITY_INGOT_BLOCK);
|
|
||||||
*/
|
|
||||||
|
|
||||||
ShapelessRecipeJsonBuilder.create(RecipeCategory.MISC, ModItems.NERIDIUM_LIGHTER)
|
ShapelessRecipeJsonBuilder.create(RecipeCategory.MISC, ModItems.NERIDIUM_LIGHTER)
|
||||||
.input(ModItems.NERIDIUM_INGOT)
|
.input(ModItems.NERIDIUM_INGOT)
|
||||||
@ -65,12 +62,18 @@ public class ModRecipeProvider extends FabricRecipeProvider {
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
ShapedRecipeJsonBuilder.create(RecipeCategory.MISC, ModItems.LAVA_PAPER)
|
ShapedRecipeJsonBuilder.create(RecipeCategory.MISC, ModItems.LAVA_PAPER, 3)
|
||||||
.pattern("lll")
|
.pattern("lll")
|
||||||
.input('l', ModBlocks.LAVA_REEDS)
|
.input('l', ModBlocks.LAVA_REEDS)
|
||||||
.criterion(hasItem(ModBlocks.LAVA_REEDS), conditionsFromItem(ModBlocks.LAVA_REEDS))
|
.criterion(hasItem(ModBlocks.LAVA_REEDS), conditionsFromItem(ModBlocks.LAVA_REEDS))
|
||||||
.offerTo(recipeExporter);
|
.offerTo(recipeExporter);
|
||||||
|
|
||||||
|
ShapelessRecipeJsonBuilder.create(RecipeCategory.MISC, ModItems.IMP_SKIN)
|
||||||
|
.input(ModItems.FOULITE_DUST)
|
||||||
|
.input(Items.LEATHER)
|
||||||
|
.criterion(hasItem(ModItems.FOULITE_DUST), conditionsFromItem(ModItems.FOULITE_DUST))
|
||||||
|
.criterion(hasItem(Items.LEATHER), conditionsFromItem(Items.LEATHER))
|
||||||
|
.offerTo(recipeExporter);
|
||||||
|
|
||||||
// FOOD
|
// FOOD
|
||||||
ShapedRecipeJsonBuilder.create(RecipeCategory.FOOD, ModItems.DEVILBREAD)
|
ShapedRecipeJsonBuilder.create(RecipeCategory.FOOD, ModItems.DEVILBREAD)
|
||||||
@ -79,6 +82,23 @@ public class ModRecipeProvider extends FabricRecipeProvider {
|
|||||||
.criterion(hasItem(ModBlocks.GLOWOOD_PLANKS), conditionsFromItem(ModBlocks.GLOWOOD_PLANKS))
|
.criterion(hasItem(ModBlocks.GLOWOOD_PLANKS), conditionsFromItem(ModBlocks.GLOWOOD_PLANKS))
|
||||||
.offerTo(recipeExporter);
|
.offerTo(recipeExporter);
|
||||||
|
|
||||||
|
ShapelessRecipeJsonBuilder.create(RecipeCategory.MISC, ModItems.DARK_WHEAT_SEEDS)
|
||||||
|
.input(ModItems.FOULITE_DUST)
|
||||||
|
.input(Items.WHEAT_SEEDS)
|
||||||
|
.criterion(hasItem(ModItems.FOULITE_DUST), conditionsFromItem(ModItems.FOULITE_DUST))
|
||||||
|
.criterion(hasItem(Items.WHEAT_SEEDS), conditionsFromItem(Items.WHEAT_SEEDS))
|
||||||
|
.offerTo(recipeExporter);
|
||||||
|
|
||||||
|
ShapedRecipeJsonBuilder.create(RecipeCategory.FOOD, ModItems.GLOW_APPLE)
|
||||||
|
.pattern("fff")
|
||||||
|
.pattern("fAf")
|
||||||
|
.pattern("fff")
|
||||||
|
.input('f', ModItems.FOULITE_DUST)
|
||||||
|
.input('A', Items.APPLE)
|
||||||
|
.criterion(hasItem(ModItems.FOULITE_DUST), conditionsFromItem(ModItems.FOULITE_DUST))
|
||||||
|
.criterion(hasItem(Items.APPLE), conditionsFromItem(Items.APPLE))
|
||||||
|
.offerTo(recipeExporter);
|
||||||
|
|
||||||
ShapelessRecipeJsonBuilder.create(RecipeCategory.FOOD, ModItems.GLOWSTEW)
|
ShapelessRecipeJsonBuilder.create(RecipeCategory.FOOD, ModItems.GLOWSTEW)
|
||||||
.input(ModItems.GLOWOOD_BOWL)
|
.input(ModItems.GLOWOOD_BOWL)
|
||||||
.input(ModBlocks.GREEN_GLOWSHROOM)
|
.input(ModBlocks.GREEN_GLOWSHROOM)
|
||||||
@ -105,7 +125,15 @@ public class ModRecipeProvider extends FabricRecipeProvider {
|
|||||||
.pattern("WWW")
|
.pattern("WWW")
|
||||||
.input('W', ModBlocks.GLOWOOD_PLANKS)
|
.input('W', ModBlocks.GLOWOOD_PLANKS)
|
||||||
.criterion(hasItem(ModBlocks.GLOWOOD_PLANKS), conditionsFromItem(ModBlocks.GLOWOOD_PLANKS))
|
.criterion(hasItem(ModBlocks.GLOWOOD_PLANKS), conditionsFromItem(ModBlocks.GLOWOOD_PLANKS))
|
||||||
.offerTo(recipeExporter);
|
.offerTo(recipeExporter, Identifier.of(NethercraftClassic.MOD_ID, "stairs_left"));
|
||||||
|
|
||||||
|
ShapedRecipeJsonBuilder.create(RecipeCategory.MISC, ModBlocks.GLOWOOD_STAIRS, 4)
|
||||||
|
.pattern(" W")
|
||||||
|
.pattern(" WW")
|
||||||
|
.pattern("WWW")
|
||||||
|
.input('W', ModBlocks.GLOWOOD_PLANKS)
|
||||||
|
.criterion(hasItem(ModBlocks.GLOWOOD_PLANKS), conditionsFromItem(ModBlocks.GLOWOOD_PLANKS))
|
||||||
|
.offerTo(recipeExporter, Identifier.of(NethercraftClassic.MOD_ID, "stairs_right"));
|
||||||
|
|
||||||
ShapedRecipeJsonBuilder.create(RecipeCategory.MISC, ModBlocks.GLOWOOD_FENCE, 3)
|
ShapedRecipeJsonBuilder.create(RecipeCategory.MISC, ModBlocks.GLOWOOD_FENCE, 3)
|
||||||
.pattern("WSW")
|
.pattern("WSW")
|
||||||
@ -177,7 +205,7 @@ public class ModRecipeProvider extends FabricRecipeProvider {
|
|||||||
.criterion(hasItem(Blocks.NETHERRACK), conditionsFromItem(Blocks.NETHERRACK))
|
.criterion(hasItem(Blocks.NETHERRACK), conditionsFromItem(Blocks.NETHERRACK))
|
||||||
.offerTo(recipeExporter);
|
.offerTo(recipeExporter);
|
||||||
|
|
||||||
// I don't know how to datagen smelting/blasting so theyre all located in
|
// I don't know how to datagen smelting/blasting so they're all located in
|
||||||
// src/main/resources/data/nethercraft-classic/recipe
|
// src/main/resources/data/nethercraft-classic/recipe
|
||||||
|
|
||||||
offerReversibleCompactingRecipes(recipeExporter, RecipeCategory.MISC, ModItems.LINIUM_INGOT, RecipeCategory.MISC, ModBlocks.LINIUM_BLOCK);
|
offerReversibleCompactingRecipes(recipeExporter, RecipeCategory.MISC, ModItems.LINIUM_INGOT, RecipeCategory.MISC, ModBlocks.LINIUM_BLOCK);
|
||||||
|
@ -5,5 +5,6 @@ import net.minecraft.item.Items;
|
|||||||
|
|
||||||
public class ModFoodComponents {
|
public class ModFoodComponents {
|
||||||
public static final FoodComponent DEVILBREAD = new FoodComponent.Builder().nutrition(5).saturationModifier(0.6f).build();
|
public static final FoodComponent DEVILBREAD = new FoodComponent.Builder().nutrition(5).saturationModifier(0.6f).build();
|
||||||
|
public static final FoodComponent GLOW_APPLE = new FoodComponent.Builder().nutrition(4).saturationModifier(0.24f).build();
|
||||||
public static final FoodComponent GLOWSTEW = new FoodComponent.Builder().nutrition(6).saturationModifier(0.72f).usingConvertsTo(ModItems.GLOWOOD_BOWL).build();
|
public static final FoodComponent GLOWSTEW = new FoodComponent.Builder().nutrition(6).saturationModifier(0.72f).usingConvertsTo(ModItems.GLOWOOD_BOWL).build();
|
||||||
}
|
}
|
||||||
|
@ -59,6 +59,7 @@ public class ModItemGroups {
|
|||||||
entries.add(ModItems.DARK_WHEAT_SEEDS);
|
entries.add(ModItems.DARK_WHEAT_SEEDS);
|
||||||
entries.add(ModItems.DARK_WHEAT);
|
entries.add(ModItems.DARK_WHEAT);
|
||||||
entries.add(ModItems.DEVILBREAD);
|
entries.add(ModItems.DEVILBREAD);
|
||||||
|
entries.add(ModItems.GLOW_APPLE);
|
||||||
entries.add(ModItems.GLOWSTEW);
|
entries.add(ModItems.GLOWSTEW);
|
||||||
entries.add(ModItems.FOULITE_DUST);
|
entries.add(ModItems.FOULITE_DUST);
|
||||||
entries.add(ModItems.W_DUST);
|
entries.add(ModItems.W_DUST);
|
||||||
|
@ -31,6 +31,7 @@ public class ModItems {
|
|||||||
|
|
||||||
|
|
||||||
public static final Item DEVILBREAD = registerItem("devilbread", new Item(new Item.Settings().food(ModFoodComponents.DEVILBREAD)));
|
public static final Item DEVILBREAD = registerItem("devilbread", new Item(new Item.Settings().food(ModFoodComponents.DEVILBREAD)));
|
||||||
|
public static final Item GLOW_APPLE = registerItem("glow_apple", new Item(new Item.Settings().food(ModFoodComponents.GLOW_APPLE)));
|
||||||
public static final Item GLOWSTEW = registerItem("glowstew", new Item(new Item.Settings().food(ModFoodComponents.GLOWSTEW)));
|
public static final Item GLOWSTEW = registerItem("glowstew", new Item(new Item.Settings().food(ModFoodComponents.GLOWSTEW)));
|
||||||
|
|
||||||
public static final Item DARK_WHEAT_SEEDS = registerItem("dark_wheat_seeds",
|
public static final Item DARK_WHEAT_SEEDS = registerItem("dark_wheat_seeds",
|
||||||
|
@ -40,11 +40,15 @@
|
|||||||
"block.nethercraft-classic.glowood_crafting_table": "Glowood Crafting Table",
|
"block.nethercraft-classic.glowood_crafting_table": "Glowood Crafting Table",
|
||||||
|
|
||||||
"item.nethercraft-classic.glowood_bowl": "Glowood Bowl",
|
"item.nethercraft-classic.glowood_bowl": "Glowood Bowl",
|
||||||
|
"item.nethercraft-classic.lava_paper": "Lava Paper",
|
||||||
|
"item.nethercraft-classic.lava_book": "Lava Book",
|
||||||
|
"item.nethercraft-classic.imp_skin": "Imp Skin",
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
"block.nethercraft-classic.nether_glass": "Heat Glass",
|
"block.nethercraft-classic.nether_glass": "Heat Glass",
|
||||||
|
"block.nethercraft-classic.heat_sand": "Heat Sand",
|
||||||
"block.nethercraft-classic.slow_glass": "Slow Glass",
|
"block.nethercraft-classic.slow_glass": "Slow Glass",
|
||||||
|
|
||||||
|
|
||||||
@ -59,6 +63,7 @@
|
|||||||
"block.nethercraft-classic.dark_wheat_crop": "Nether Wheat Crop",
|
"block.nethercraft-classic.dark_wheat_crop": "Nether Wheat Crop",
|
||||||
"item.nethercraft-classic.dark_wheat": "Nether Wheat",
|
"item.nethercraft-classic.dark_wheat": "Nether Wheat",
|
||||||
"item.nethercraft-classic.devilbread": "Devil Bread",
|
"item.nethercraft-classic.devilbread": "Devil Bread",
|
||||||
|
"item.nethercraft-classic.glow_apple": "Glowing Apple",
|
||||||
"item.nethercraft-classic.glowstew": "Glow Stew",
|
"item.nethercraft-classic.glowstew": "Glow Stew",
|
||||||
|
|
||||||
|
|
||||||
@ -68,6 +73,7 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
"item.nethercraft-classic.neridium_lighter": "Neridium Lighter",
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Before Width: | Height: | Size: 2.1 KiB After Width: | Height: | Size: 2.1 KiB |
Before Width: | Height: | Size: 1.9 KiB After Width: | Height: | Size: 1.9 KiB |
Before Width: | Height: | Size: 632 B After Width: | Height: | Size: 632 B |
Before Width: | Height: | Size: 758 B After Width: | Height: | Size: 758 B |
Before Width: | Height: | Size: 352 B After Width: | Height: | Size: 352 B |
@ -10,9 +10,9 @@
|
|||||||
],
|
],
|
||||||
"contact": {
|
"contact": {
|
||||||
"homepage": "https://ibatv.xyz/",
|
"homepage": "https://ibatv.xyz/",
|
||||||
"sources": "https://git.ibatv.xyz/IveBeenAlone/nethercraft-classic-fabric"
|
"sources": "https://git.ibatv.xyz/IveBeenAlone/nethercraft-classic-fabric",
|
||||||
|
"issues": "https://git.ibatv.xyz/IveBeenAlone/nethercraft-classic-fabric/issues"
|
||||||
},
|
},
|
||||||
"license": "CC0-1.0",
|
|
||||||
"icon": "assets/nethercraft-classic/icon.png",
|
"icon": "assets/nethercraft-classic/icon.png",
|
||||||
"environment": "*",
|
"environment": "*",
|
||||||
"entrypoints": {
|
"entrypoints": {
|
||||||
|
@ -1,7 +1,6 @@
|
|||||||
{
|
{
|
||||||
"pack": {
|
"pack": {
|
||||||
"pack_format": 34,
|
"description": "Classic Nethercraft ore textures",
|
||||||
"supported_formats":[0,99],
|
"pack_format": 34,
|
||||||
"description": "Classic Nethercraft Textures"
|
}
|
||||||
}
|
|
||||||
}
|
}
|