Skip to content

Commit 4f7c112

Browse files
committed
添加农作物,但没有起作用
1 parent 0c05e78 commit 4f7c112

File tree

22 files changed

+207
-30
lines changed

22 files changed

+207
-30
lines changed

src/main/java/io/github/mxpea/fadingshadow/FadingShadow.java

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,15 @@
11
package io.github.mxpea.fadingshadow;
22

3-
import io.github.mxpea.fadingshadow.block.ModBlock;
3+
import io.github.mxpea.fadingshadow.block.ModBlocks;
44
import io.github.mxpea.fadingshadow.block.entity.ModBlockEntities;
55
import io.github.mxpea.fadingshadow.effects.ModEffect;
66
import io.github.mxpea.fadingshadow.entity.ModEntity;
77
import io.github.mxpea.fadingshadow.item.ModCreativeTab;
88
import io.github.mxpea.fadingshadow.item.ModItem;
99
import io.github.mxpea.fadingshadow.item.ModPotion;
1010
import net.minecraft.world.effect.MobEffect;
11-
import net.minecraft.world.entity.Entity;
1211
import net.minecraft.world.entity.EntityType;
1312
import net.minecraft.world.item.alchemy.Potion;
14-
import net.minecraft.world.item.alchemy.Potions;
15-
import net.neoforged.api.distmarker.Dist;
16-
import net.neoforged.neoforge.common.Tags;
1713
import org.slf4j.Logger;
1814

1915
import com.mojang.logging.LogUtils;
@@ -92,7 +88,7 @@ public FadingShadow(IEventBus modEventBus, ModContainer modContainer) {
9288
//初始化
9389
ModItem.register(modEventBus);
9490
ModCreativeTab.register(modEventBus);
95-
ModBlock.register(modEventBus);
91+
ModBlocks.register(modEventBus);
9692
ModBlockEntities.register(modEventBus);
9793

9894
ModPotion.register(modEventBus);

src/main/java/io/github/mxpea/fadingshadow/FadingShadowClient.java

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,13 @@
11
package io.github.mxpea.fadingshadow;
22

3-
import io.github.mxpea.fadingshadow.block.ModBlock;
43
import io.github.mxpea.fadingshadow.block.entity.ModBlockEntities;
54
import io.github.mxpea.fadingshadow.block.entity.client.AnimatedBlockRender;
65
import io.github.mxpea.fadingshadow.entity.ModEntity;
76
import io.github.mxpea.fadingshadow.item.ModItem;
87
import io.github.mxpea.fadingshadow.item.ModPotion;
9-
import io.github.mxpea.fadingshadow.item.ScrantonRealityAnchorsItem;
10-
import io.github.mxpea.fadingshadow.item.client.ScrantonRealityAnchorsItemRenderer;
118
import net.minecraft.client.Minecraft;
12-
import net.minecraft.client.renderer.blockentity.BlockEntityRenderer;
139
import net.minecraft.client.renderer.blockentity.BlockEntityRenderers;
14-
import net.minecraft.client.renderer.entity.EntityRenderers;
15-
import net.minecraft.client.renderer.entity.ItemEntityRenderer;
1610
import net.minecraft.client.renderer.entity.ThrownItemRenderer;
17-
import net.minecraft.world.item.Item;
1811
import net.minecraft.world.item.alchemy.PotionBrewing;
1912
import net.minecraft.world.item.alchemy.Potions;
2013
import net.neoforged.api.distmarker.Dist;
@@ -24,11 +17,9 @@
2417
import net.neoforged.fml.common.Mod;
2518
import net.neoforged.fml.event.lifecycle.FMLClientSetupEvent;
2619
import net.neoforged.neoforge.client.event.EntityRenderersEvent;
27-
import net.neoforged.neoforge.client.extensions.common.IClientItemExtensions;
2820
import net.neoforged.neoforge.client.gui.ConfigurationScreen;
2921
import net.neoforged.neoforge.client.gui.IConfigScreenFactory;
3022
import net.neoforged.neoforge.event.brewing.RegisterBrewingRecipesEvent;
31-
import software.bernie.geckolib.renderer.GeoItemRenderer;
3223

3324
// This class will not load on dedicated servers. Accessing client side code from here is safe.
3425
@Mod(value = FadingShadow.MODID, dist = Dist.CLIENT)
Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
1+
package io.github.mxpea.fadingshadow.block;
2+
3+
import io.github.mxpea.fadingshadow.item.ModItem;
4+
import net.minecraft.core.BlockPos;
5+
import net.minecraft.world.InteractionHand;
6+
import net.minecraft.world.InteractionResult;
7+
import net.minecraft.world.entity.player.Player;
8+
import net.minecraft.world.level.BlockGetter;
9+
import net.minecraft.world.level.ItemLike;
10+
import net.minecraft.world.level.Level;
11+
import net.minecraft.world.level.block.Block;
12+
import net.minecraft.world.level.block.Blocks;
13+
import net.minecraft.world.level.block.CropBlock;
14+
import net.minecraft.world.level.block.state.BlockState;
15+
import net.minecraft.world.level.block.state.StateDefinition;
16+
import net.minecraft.world.level.block.state.properties.IntegerProperty;
17+
import net.minecraft.world.phys.BlockHitResult;
18+
import net.minecraft.world.phys.shapes.CollisionContext;
19+
import net.minecraft.world.phys.shapes.VoxelShape;
20+
21+
public class ChiliCropBlock extends CropBlock {
22+
public static final int MAX_AGE =3;
23+
public static final IntegerProperty AGE =IntegerProperty.create("age",0,3);
24+
public static final VoxelShape[] SHAPE_BY_AGE =new VoxelShape[]{
25+
Block.box(0.0F, 0.0F, 0.0F,16.0F, 2.0F, 16.0F),
26+
Block.box(0.0F, 0.0F, 0.0F, 16.0F, 4.0F, 16.0F),
27+
Block.box(0.0F, 0.0F, 0.0F, 16.0F, 6.0F, 16.0F),
28+
Block.box(0.0F, 0.0F, 0.0F, 16.0F, 8.0F, 16.0F)
29+
};
30+
31+
public ChiliCropBlock(Properties properties){
32+
super(properties);
33+
}
34+
35+
@Override
36+
protected VoxelShape getShape(BlockState state, BlockGetter level, BlockPos pos, CollisionContext context){
37+
return SHAPE_BY_AGE[state.getValue(AGE)];
38+
}
39+
40+
@Override
41+
protected ItemLike getBaseSeedId(){
42+
return ModItem.chili_seed;
43+
}
44+
45+
@Override
46+
protected IntegerProperty getAgeProperty(){
47+
return AGE;
48+
}
49+
50+
@Override
51+
public int getMaxAge(){
52+
return MAX_AGE;
53+
}
54+
55+
public InteractionResult use(BlockState state, Level world, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hit) {
56+
if (!world.isClientSide() && player.getItemInHand(hand).is(ModItem.chili_seed.get())) {
57+
// 如果玩家手持辣椒种子,允许种植
58+
int age = this.getAge(state);
59+
if (age == 0) {
60+
world.setBlock(pos, this.getStateForAge(1), 2); // 设置种植状态
61+
return InteractionResult.SUCCESS;
62+
}
63+
}
64+
return InteractionResult.PASS;
65+
}
66+
67+
@Override
68+
protected boolean mayPlaceOn(BlockState state, BlockGetter world, BlockPos pos) {
69+
// 检查是否为耕地(Farmland)
70+
return state.is(Blocks.FARMLAND);
71+
}
72+
73+
@Override
74+
protected void createBlockStateDefinition(StateDefinition.Builder<Block, BlockState> builder){
75+
builder.add(AGE);
76+
}
77+
78+
}

src/main/java/io/github/mxpea/fadingshadow/block/ModBlock.java renamed to src/main/java/io/github/mxpea/fadingshadow/block/ModBlocks.java

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,7 @@
33
import io.github.mxpea.fadingshadow.FadingShadow;
44
import io.github.mxpea.fadingshadow.item.ModItem;
55
import io.github.mxpea.fadingshadow.item.ScrantonRealityAnchorsItem;
6-
import net.minecraft.core.HolderLookup;
7-
import net.minecraft.tags.BlockTags;
6+
import net.minecraft.client.resources.model.Material;
87
import net.minecraft.world.item.BlockItem;
98
import net.minecraft.world.item.Item;
109
import net.minecraft.world.level.block.Block;
@@ -20,18 +19,23 @@
2019
author:Mxpea
2120
Edited:25.11.16
2221
*/
23-
public class ModBlock {
22+
public class ModBlocks {
2423
public static final DeferredRegister.Blocks BLOCKS =
2524
DeferredRegister.createBlocks(FadingShadow.MODID);
2625

2726
public static final DeferredBlock<Block> scranton_reality_anchors =
2827
registerBlocks("scranton_reality_anchors",
29-
() -> new AnimatedBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.STONE)));
28+
() -> new AnimatedBlock(BlockBehaviour.Properties.of().strength(2.0F,6.0F)));
3029

3130
public static final DeferredBlock<Block> netherreactor =
3231
registerBlocks("netherreactor", //添加代码需要正确的工具才能挖掘“.requiresCorrectToolForDrops()”
3332
() -> new Block(BlockBehaviour.Properties.of().strength(2.0F,6.0F)));
3433

34+
//这个注册作物用“BLOCKS.register”,因为方块物品就是种子
35+
public static final DeferredBlock<Block> chili_crop =
36+
BLOCKS.register("chili_crop",
37+
() -> new ChiliCropBlock(BlockBehaviour.Properties.of().noCollission().instabreak().randomTicks()));
38+
3539
// 默认情况下注册普通方块物品
3640
private static <T extends Block> void registerBlockItems(String name, DeferredBlock<T> block) {
3741
ModItem.ITEMS.register(name, () -> new BlockItem(block.get(), new Item.Properties()));

src/main/java/io/github/mxpea/fadingshadow/block/entity/ModBlockEntities.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package io.github.mxpea.fadingshadow.block.entity;
22

33
import io.github.mxpea.fadingshadow.FadingShadow;
4-
import io.github.mxpea.fadingshadow.block.ModBlock;
4+
import io.github.mxpea.fadingshadow.block.ModBlocks;
55
import net.minecraft.core.registries.Registries;
66
import net.minecraft.world.level.block.entity.BlockEntityType;
77
import net.neoforged.bus.api.IEventBus;
@@ -16,7 +16,7 @@ public class ModBlockEntities {
1616
public static final DeferredHolder<BlockEntityType<?>, BlockEntityType<AnimatedBlockEntity>> SRA =
1717
BLOCK_ENTITIES.register("src", () ->
1818
BlockEntityType.Builder.of(AnimatedBlockEntity::new,
19-
ModBlock.scranton_reality_anchors.get()).build(null));
19+
ModBlocks.scranton_reality_anchors.get()).build(null));
2020

2121
public static void register(IEventBus eventBus) {
2222
BLOCK_ENTITIES.register(eventBus);

src/main/java/io/github/mxpea/fadingshadow/item/ModCreativeTab.java

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,9 @@
11
package io.github.mxpea.fadingshadow.item;
22

33
import io.github.mxpea.fadingshadow.FadingShadow;
4-
import io.github.mxpea.fadingshadow.block.ModBlock;
5-
import net.minecraft.core.Registry;
4+
import io.github.mxpea.fadingshadow.block.ModBlocks;
65
import net.minecraft.core.registries.Registries;
76
import net.minecraft.network.chat.Component;
8-
import net.minecraft.resources.ResourceKey;
97
import net.minecraft.world.item.CreativeModeTab;
108
import net.minecraft.world.item.ItemStack;
119
import net.neoforged.bus.api.IEventBus;
@@ -30,9 +28,10 @@ public class ModCreativeTab {
3028
output.accept(ModItem.firesalt);
3129
output.accept(ModItem.firesalt_ingot);
3230
output.accept(ModItem.lightning_in_a_bottle);
31+
output.accept(ModItem.chili_seed);
3332

34-
output.accept(ModBlock.scranton_reality_anchors);
35-
output.accept(ModBlock.netherreactor);
33+
output.accept(ModBlocks.scranton_reality_anchors);
34+
output.accept(ModBlocks.netherreactor);
3635
}).build());
3736

3837
//初始化

src/main/java/io/github/mxpea/fadingshadow/item/ModItem.java

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,12 @@
11
package io.github.mxpea.fadingshadow.item;
22

3+
import io.github.mxpea.fadingshadow.block.ModBlocks;
34
import io.github.mxpea.fadingshadow.effects.AppleJuiceItem;
45
import io.github.mxpea.fadingshadow.effects.ChiliPepperItem;
56
import io.github.mxpea.fadingshadow.FadingShadow;
67
import io.github.mxpea.fadingshadow.effects.LightThrowItem;
78
import net.minecraft.world.item.Item;
9+
import net.minecraft.world.item.ItemNameBlockItem;
810
import net.neoforged.bus.api.IEventBus;
911
import net.neoforged.neoforge.registries.DeferredItem;
1012
import net.neoforged.neoforge.registries.DeferredRegister;
@@ -18,10 +20,10 @@ public class ModItem {
1820
ITEMS.register("reality_fabric", () -> new Item(new Item.Properties()));
1921

2022
public static final DeferredItem<Item> lightning_in_a_bottle = //下面的代码可以设置最大堆叠数(maxStackSize)
21-
ITEMS.register("lightning_in_a_bottle", () -> new LightThrowItem(new Item.Properties().stacksTo(1)));
23+
ITEMS.register("lightning_in_a_bottle", () -> new LightThrowItem(new Item.Properties().stacksTo(16)));
2224

2325
public static final DeferredItem<Item> apple_juice =
24-
ITEMS.register("apple_juice", () -> new AppleJuiceItem(new Item.Properties().stacksTo(1)));
26+
ITEMS.register("apple_juice", () -> new AppleJuiceItem(new Item.Properties().stacksTo(16)));
2527

2628
public static final DeferredItem<Item> test =
2729
ITEMS.register("test", () -> new Item(new Item.Properties()));//be deleted later
@@ -39,6 +41,9 @@ public class ModItem {
3941
public static final DeferredItem<Item> firesalt_ingot =
4042
ITEMS.register("firesalt_ingot", () -> new Item(new Item.Properties()));
4143

44+
public static final DeferredItem<Item> chili_seed =
45+
ITEMS.register("chili_seed", () -> new Item(new Item.Properties()));
46+
4247

4348

4449
//下面是初始化的,不要动
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
{
2+
"variants": {
3+
"age=0": { "model": "fadingshadow:block/chili_corp_stage0" },
4+
"age=1": { "model": "fadingshadow:block/chili_corp_stage1" },
5+
"age=2": { "model": "fadingshadow:block/chili_corp_stage2" },
6+
"age=3": { "model": "fadingshadow:block/chili_corp_stage3" }
7+
}
8+
}

src/main/resources/assets/fadingshadow/lang/en_us.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
"item.fadingshadow.geiger_counter": "geiger counter",
99
"item.fadingshadow.firesalt": "fire salt",
1010
"item.fadingshadow.firesalt_ingot": "fire salt ingot",
11+
"item.fadingshadow.chili_seed": "chili seed",
1112

1213
"item.minecraft.potion.effect.red_chili_juice":"chili water",
1314
"item.minecraft.splash_potion.effect.red_chili_juice":"splash chili water",

src/main/resources/assets/fadingshadow/lang/zh_cn.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
"item.fadingshadow.lightning_in_a_bottle": "瓶中闪电",
99
"item.fadingshadow.firesalt": "火盐",
1010
"item.fadingshadow.firesalt_ingot": "火盐锭",
11+
"item.fadingshadow.chili_seed": "辣椒种子",
1112

1213
"item.minecraft.potion.effect.red_chili_juice":"辣椒水",
1314
"item.minecraft.splash_potion.effect.red_chili_juice":"喷溅辣椒水",

0 commit comments

Comments
 (0)