Skip to content

Commit 42130b2

Browse files
Merge branch 'main' into dev/Viola-Siemens
2 parents a6dfeaf + db92e8b commit 42130b2

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

52 files changed

+1615
-322
lines changed

processor/src/main/java/org/polaris2023/processor/clazz/datagen/ModelProcessor.java

+14-7
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
import org.polaris2023.annotation.modelgen.other.*;
1313
import org.polaris2023.processor.clazz.ClassProcessor;
1414

15+
import javax.lang.model.element.Modifier;
1516
import javax.lang.model.element.TypeElement;
1617
import javax.lang.model.element.VariableElement;
1718
import java.lang.Override;
@@ -34,11 +35,23 @@ public static void check() {
3435

3536
@Override
3637
public void fieldDef(VariableElement variableElement, TypeElement typeElement) {
38+
BasicItem typeBasicItem = typeElement.getAnnotation(BasicItem.class);
3739
BasicItem basicItem = variableElement.getAnnotation(BasicItem.class);
40+
BasicBlockItem basicBlockItem = variableElement.getAnnotation(BasicBlockItem.class);
41+
CubeAll cube = variableElement.getAnnotation(CubeAll.class);
42+
Stairs stairs = variableElement.getAnnotation(Stairs.class);
43+
Slab slab = variableElement.getAnnotation(Slab.class);
44+
Button button = variableElement.getAnnotation(Button.class);
45+
SpawnEggItem spawnEggItem = variableElement.getAnnotation(SpawnEggItem.class);
46+
ParentItem parentItem = variableElement.getAnnotation(ParentItem.class);
47+
if (typeBasicItem != null && typeBasicItem.used() && variableElement.getModifiers().contains(Modifier.STATIC) &&
48+
basicItem== null && basicBlockItem == null && cube == null && stairs == null && slab == null && button == null && spawnEggItem == null && parentItem == null) {
49+
50+
basicSet(typeElement.getQualifiedName() + "." + variableElement.getSimpleName(), typeBasicItem, typeBasicItem.value(), true, "");
51+
}
3852
if (basicItem != null && basicItem.used()) {
3953
basicSet(typeElement.getQualifiedName() + "." + variableElement.getSimpleName(), basicItem, basicItem.value(), true, "");
4054
}
41-
BasicBlockItem basicBlockItem = variableElement.getAnnotation(BasicBlockItem.class);
4255
if (basicBlockItem != null) {
4356
check();
4457
MODEL.append("\n\t\t")
@@ -48,7 +61,6 @@ public void fieldDef(VariableElement variableElement, TypeElement typeElement) {
4861
.append(variableElement.getSimpleName())
4962
.append(")");
5063
}
51-
CubeAll cube = variableElement.getAnnotation(CubeAll.class);
5264
if (cube != null) {
5365
check();
5466
MODEL.append("\n\t\t")
@@ -58,7 +70,6 @@ public void fieldDef(VariableElement variableElement, TypeElement typeElement) {
5870
.append(variableElement.getSimpleName())
5971
.append(")");
6072
}
61-
Stairs stairs = variableElement.getAnnotation(Stairs.class);
6273
if (stairs != null) {
6374
check();
6475
MODEL.append("\n\t\t")
@@ -74,7 +85,6 @@ public void fieldDef(VariableElement variableElement, TypeElement typeElement) {
7485
.append(stairs.top())
7586
.append("\")");
7687
}
77-
Slab slab = variableElement.getAnnotation(Slab.class);
7888
if (slab != null) {
7989
check();
8090
MODEL.append("\n\t\t")
@@ -90,7 +100,6 @@ public void fieldDef(VariableElement variableElement, TypeElement typeElement) {
90100
.append(slab.top())
91101
.append(")");
92102
}
93-
Button button = variableElement.getAnnotation(Button.class);
94103
if (button != null) {
95104
check();
96105
MODEL.append("\n\t\t")
@@ -102,7 +111,6 @@ public void fieldDef(VariableElement variableElement, TypeElement typeElement) {
102111
.append(button.texture())
103112
.append("\")");
104113
}
105-
SpawnEggItem spawnEggItem = variableElement.getAnnotation(SpawnEggItem.class);
106114
if (spawnEggItem != null) {
107115
check();
108116
MODEL.append("\n\t\t")
@@ -112,7 +120,6 @@ public void fieldDef(VariableElement variableElement, TypeElement typeElement) {
112120
.append(variableElement.getSimpleName())
113121
.append(")");
114122
}
115-
ParentItem parentItem = variableElement.getAnnotation(ParentItem.class);
116123
if (parentItem != null) {
117124
check();
118125
MODEL.append("\n\t\t")

processor/src/main/java/org/polaris2023/utils/Codes.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -192,7 +192,7 @@ public final class %%classname%% implements DataProvider, IModel<%%classname%%>
192192
return this;
193193
}
194194
195-
private <T extends SpawnEggItem> %%classname%% spawnEggItem(DeferredHolder<Item, T> item) {
195+
private <T extends SpawnEggItem> %%classname%% spawnEggItem(Supplier<T> item) {
196196
MODELS.put(BuiltInRegistries.ITEM.getKey(item.get()).withPrefix("item/"), SPAWN_EGG);
197197
return this;
198198
}

src/main/java/org/polaris2023/wild_wind/client/WildWindClientEventHandler.java

+25
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,51 @@
11
package org.polaris2023.wild_wind.client;
22

3+
import net.minecraft.client.color.block.BlockColor;
4+
import net.minecraft.core.BlockPos;
35
import net.minecraft.util.FastColor;
46
import net.minecraft.world.item.Items;
7+
import net.minecraft.world.item.SpawnEggItem;
8+
import net.minecraft.world.level.BlockAndTintGetter;
9+
import net.minecraft.world.level.block.entity.BlockEntity;
10+
import net.minecraft.world.level.block.state.BlockState;
511
import net.neoforged.api.distmarker.Dist;
612
import net.neoforged.bus.api.EventPriority;
713
import net.neoforged.bus.api.SubscribeEvent;
814
import net.neoforged.fml.common.EventBusSubscriber;
915
import net.neoforged.neoforge.client.event.EntityRenderersEvent;
1016
import net.neoforged.neoforge.client.event.RegisterColorHandlersEvent;
17+
import org.jetbrains.annotations.Nullable;
1118
import org.polaris2023.wild_wind.client.entity.abstracts.ModMobRenderer;
1219
import org.polaris2023.wild_wind.client.entity.firefly.FireflyModel;
1320
import org.polaris2023.wild_wind.client.entity.piranha.PiranhaModel;
1421
import org.polaris2023.wild_wind.client.entity.trout.TroutModel;
22+
import org.polaris2023.wild_wind.common.block.WoolBlock;
23+
import org.polaris2023.wild_wind.common.block.entity.WoolBlockEntity;
24+
import org.polaris2023.wild_wind.common.init.ModBlocks;
1525
import org.polaris2023.wild_wind.common.init.ModComponents;
1626
import org.polaris2023.wild_wind.common.init.ModEntities;
1727

1828
@EventBusSubscriber(bus = EventBusSubscriber.Bus.MOD, value = Dist.CLIENT)
1929
public class WildWindClientEventHandler {
2030
@SubscribeEvent(priority = EventPriority.HIGHEST)
2131
public static void registerSlimeColor(RegisterColorHandlersEvent.Item event) {
32+
2233
event.register((stack, tintIndex) ->
2334
FastColor.ARGB32.opaque(stack.getOrDefault(ModComponents.SLIME_COLOR, 0)), Items.SLIME_BALL);
35+
event.register((stack, tintIndex) ->
36+
FastColor.ARGB32.opaque(stack.getOrDefault(ModComponents.COLOR, 0)), ModBlocks.WOOL_ITEM);
37+
}
38+
39+
@SubscribeEvent
40+
public static void registerBlockColor(RegisterColorHandlersEvent.Block event) {
41+
event.register((state, level, pos, tinIndex) -> {
42+
if (level == null || pos == null) {
43+
return FastColor.ARGB32.opaque(0);
44+
}
45+
WoolBlockEntity woolTile = (WoolBlockEntity) level.getBlockEntity(pos);
46+
if (woolTile == null) return FastColor.ARGB32.opaque(0);
47+
return FastColor.ARGB32.opaque(woolTile.rgb);
48+
}, ModBlocks.WOOL.get());
2449
}
2550

2651
@SubscribeEvent

src/main/java/org/polaris2023/wild_wind/common/WildWindGameEventHandler.java

+62
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import it.unimi.dsi.fastutil.ints.Int2ObjectMap;
44
import net.minecraft.core.BlockPos;
5+
import net.minecraft.core.Direction;
56
import net.minecraft.core.component.DataComponentType;
67
import net.minecraft.core.component.DataComponents;
78
import net.minecraft.network.chat.Component;
@@ -24,6 +25,7 @@
2425
import net.minecraft.world.entity.monster.Shulker;
2526
import net.minecraft.world.entity.npc.VillagerTrades;
2627
import net.minecraft.world.entity.player.Player;
28+
import net.minecraft.world.entity.projectile.ThrownEgg;
2729
import net.minecraft.world.food.FoodProperties;
2830
import net.minecraft.world.item.*;
2931
import net.minecraft.world.item.crafting.*;
@@ -37,15 +39,18 @@
3739
import net.neoforged.fml.common.EventBusSubscriber;
3840
import net.neoforged.neoforge.event.entity.living.LivingDamageEvent;
3941
import net.neoforged.neoforge.event.entity.living.LivingEntityUseItemEvent;
42+
import net.neoforged.neoforge.event.entity.player.AttackEntityEvent;
4043
import net.neoforged.neoforge.event.entity.player.ItemTooltipEvent;
4144
import net.neoforged.neoforge.event.entity.player.PlayerInteractEvent;
4245
import net.neoforged.neoforge.event.level.BlockEvent;
4346
import net.neoforged.neoforge.event.tick.EntityTickEvent;
4447
import net.neoforged.neoforge.event.village.VillagerTradesEvent;
48+
import net.neoforged.neoforge.network.PacketDistributor;
4549
import org.polaris2023.wild_wind.WildWindMod;
4650
import org.polaris2023.wild_wind.common.entity.Firefly;
4751
import org.polaris2023.wild_wind.common.init.*;
4852
import org.polaris2023.wild_wind.client.ModTranslateKey;
53+
import org.polaris2023.wild_wind.common.network.packets.EggShootPacket;
4954
import org.polaris2023.wild_wind.util.EnchantmentHelper;
5055
import org.polaris2023.wild_wind.util.RegistryUtil;
5156
import org.polaris2023.wild_wind.util.TeleportUtil;
@@ -113,6 +118,63 @@ public static void hurtEvent(LivingDamageEvent.Post event) {
113118
}
114119
}
115120

121+
122+
@SubscribeEvent
123+
public static void clickEventEmpty(PlayerInteractEvent.LeftClickEmpty event) {
124+
ItemStack itemstack = event.getItemStack();
125+
Player player = event.getEntity();
126+
if (itemstack.is(Items.EGG)) {
127+
PacketDistributor.sendToServer(new EggShootPacket(itemstack));
128+
player.awardStat(Stats.ITEM_USED.get(itemstack.getItem()));
129+
itemstack.consume(1, player);
130+
}
131+
// eggShoot(event.getItemStack(), event.getEntity(), event.getLevel());
132+
}
133+
134+
@SubscribeEvent
135+
public static void clickEventBlock(PlayerInteractEvent.LeftClickBlock event) {
136+
eggShoot(event.getItemStack(), event.getEntity(), event.getLevel());
137+
}
138+
@SubscribeEvent
139+
public static void rightClickEventBlock(PlayerInteractEvent.RightClickBlock event) {
140+
ItemStack stack = event.getItemStack();
141+
Player player = event.getEntity();
142+
Level level = event.getLevel();
143+
Direction face = event.getFace();
144+
if (stack.is(Items.MILK_BUCKET) && !player.isCrouching() && face != null) {
145+
146+
BlockPos relative = event.getPos().relative(face);
147+
if (level.getBlockState(relative).canBeReplaced()) {
148+
event.getLevel().setBlockAndUpdate(relative, ModFluids.MILK_BLOCK.get().defaultBlockState());
149+
player.setItemInHand(event.getHand(), Items.BUCKET.getDefaultInstance());
150+
event.setCanceled(true);
151+
}
152+
153+
}
154+
}
155+
156+
@SubscribeEvent
157+
public static void attackEntity(AttackEntityEvent event) {
158+
Player player = event.getEntity();
159+
eggShoot(player.getMainHandItem(), player, player.level());
160+
}
161+
162+
public static void eggShoot(ItemStack itemstack, Player player, Level level) {
163+
if (itemstack.is(Items.EGG)) {
164+
level.playSound(null, player.getX(), player.getY(), player.getZ(), SoundEvents.EGG_THROW, SoundSource.PLAYERS, 0.5F, 0.4F / (level.getRandom().nextFloat() * 0.4F + 0.8F));
165+
if (!level.isClientSide) {
166+
ThrownEgg thrownegg = new ThrownEgg(level, player);
167+
thrownegg.setItem(itemstack);
168+
thrownegg.shootFromRotation(player, player.getXRot(), player.getYRot(), 0.0F, 1.5F, 1.0F);
169+
level.addFreshEntity(thrownegg);
170+
System.out.println("test");
171+
}
172+
173+
player.awardStat(Stats.ITEM_USED.get(itemstack.getItem()));
174+
itemstack.consume(1, player);
175+
}
176+
}
177+
116178
private static final ResourceLocation VANILLA_FISHERMAN = ResourceLocation.withDefaultNamespace("fisherman");
117179
@SubscribeEvent
118180
public static void registerTrades(VillagerTradesEvent event) {

src/main/java/org/polaris2023/wild_wind/common/block/CookingPotBlock.java

+10-1
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import com.mojang.serialization.MapCodec;
44
import net.minecraft.core.BlockPos;
55
import net.minecraft.world.InteractionResult;
6+
import net.minecraft.world.MenuProvider;
67
import net.minecraft.world.entity.player.Player;
78
import net.minecraft.world.level.Level;
89
import net.minecraft.world.level.block.BaseEntityBlock;
@@ -17,13 +18,15 @@
1718
import org.polaris2023.wild_wind.common.init.ModBlocks;
1819

1920
public class CookingPotBlock extends BaseEntityBlock {
21+
public static final MapCodec<CookingPotBlock> CODEC = simpleCodec(CookingPotBlock::new);
22+
2023
public CookingPotBlock(Properties properties) {
2124
super(properties);
2225
}
2326

2427
@Override
2528
protected MapCodec<? extends BaseEntityBlock> codec() {
26-
return null;
29+
return CODEC;
2730
}
2831

2932
@Override
@@ -39,6 +42,12 @@ protected InteractionResult useWithoutItem(BlockState state, Level level, BlockP
3942
return super.useWithoutItem(state, level, pos, player, hitResult);
4043
}
4144

45+
@Nullable
46+
@Override
47+
protected MenuProvider getMenuProvider(BlockState state, Level level, BlockPos pos) {
48+
return super.getMenuProvider(state, level, pos);
49+
}
50+
4251
@Nullable
4352
@Override
4453
public BlockEntity newBlockEntity(BlockPos pos, BlockState state) {
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,45 @@
11
package org.polaris2023.wild_wind.common.block;
22

3+
import com.mojang.serialization.MapCodec;
4+
import net.minecraft.core.BlockPos;
5+
import net.minecraft.world.level.Level;
6+
import net.minecraft.world.level.block.BaseEntityBlock;
37
import net.minecraft.world.level.block.Block;
8+
import net.minecraft.world.level.block.entity.BlockEntity;
9+
import net.minecraft.world.level.block.entity.BlockEntityTicker;
10+
import net.minecraft.world.level.block.entity.BlockEntityType;
11+
import net.minecraft.world.level.block.state.BlockState;
12+
import org.jetbrains.annotations.Nullable;
13+
import org.polaris2023.wild_wind.common.block.entity.DuckweedBlockEntity;
14+
import org.polaris2023.wild_wind.common.init.ModBlocks;
415

516
/**
617
* @author : baka4n
718
* {@code @Date : 2025/02/12 15:29:50}
819
*/
9-
public class DuckweedBlock extends Block {
20+
public class DuckweedBlock extends BaseEntityBlock {
21+
public static final MapCodec<DuckweedBlock> CODEC = simpleCodec(DuckweedBlock::new);
22+
23+
1024
public DuckweedBlock(Properties properties) {
1125
super(properties);
1226
}
27+
28+
@Override
29+
protected MapCodec<? extends BaseEntityBlock> codec() {
30+
return CODEC;
31+
}
32+
33+
@Nullable
34+
@Override
35+
public BlockEntity newBlockEntity(BlockPos blockPos, BlockState blockState) {
36+
return ModBlocks.DUCKWEED_TILE.get().create(blockPos, blockState);
37+
}
38+
39+
@Nullable
40+
@Override
41+
public <T extends BlockEntity> BlockEntityTicker<T> getTicker(Level level, BlockState state, BlockEntityType<T> type) {
42+
return level.isClientSide ? null : createTickerHelper(type, ModBlocks.DUCKWEED_TILE.get(),
43+
DuckweedBlockEntity::serverTick);
44+
}
1345
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
package org.polaris2023.wild_wind.common.block;
2+
3+
import net.minecraft.world.level.block.Block;
4+
5+
/**
6+
* @author : baka4n
7+
* {@code @Date : 2025/02/12 16:23:45}
8+
*/
9+
public class SculkJawBlock extends Block {
10+
public SculkJawBlock(Properties properties) {
11+
super(properties);
12+
}
13+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
package org.polaris2023.wild_wind.common.block;
2+
3+
import net.minecraft.core.BlockPos;
4+
import net.minecraft.core.Direction;
5+
import net.minecraft.world.level.BlockGetter;
6+
import net.minecraft.world.level.block.Block;
7+
import net.minecraft.world.level.block.HorizontalDirectionalBlock;
8+
import net.minecraft.world.level.block.state.BlockState;
9+
import net.minecraft.world.level.block.state.StateDefinition;
10+
import net.minecraft.world.level.block.state.properties.BlockStateProperties;
11+
import net.minecraft.world.level.block.state.properties.DirectionProperty;
12+
import net.minecraft.world.level.block.state.properties.IntegerProperty;
13+
import net.minecraft.world.level.material.MapColor;
14+
15+
/**
16+
* @author : baka4n
17+
* {@code @Date : 2025/02/16 19:44:23}
18+
*/
19+
public class WoolBlock extends Block {
20+
21+
public WoolBlock(Properties properties) {
22+
super(properties);
23+
}
24+
}

src/main/java/org/polaris2023/wild_wind/common/block/entity/CookingPotBlockEntity.java

+1
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
public class CookingPotBlockEntity extends BlockEntity implements MenuProvider {
1717
int i = 0;
1818

19+
1920
public CookingPotBlockEntity(BlockPos pos, BlockState blockState) {
2021
super(ModBlocks.COOKING_POT_TILE.get(), pos, blockState);
2122

Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
package org.polaris2023.wild_wind.common.block.entity;
2+
3+
import net.minecraft.core.BlockPos;
4+
import net.minecraft.world.level.Level;
5+
import net.minecraft.world.level.block.entity.BlockEntity;
6+
import net.minecraft.world.level.block.state.BlockState;
7+
import org.polaris2023.wild_wind.common.init.ModBlocks;
8+
9+
/**
10+
* @author : baka4n
11+
* {@code @Date : 2025/02/12 15:45:31}
12+
*/
13+
public class DuckweedBlockEntity extends BlockEntity {
14+
public DuckweedBlockEntity(BlockPos pos, BlockState blockState) {
15+
super(ModBlocks.DUCKWEED_TILE.get(), pos, blockState);
16+
}
17+
18+
public static void serverTick(Level level,
19+
BlockPos pos,
20+
BlockState state,
21+
DuckweedBlockEntity blockEntity) {
22+
23+
}
24+
}

0 commit comments

Comments
 (0)