|
2 | 2 |
|
3 | 3 | import it.unimi.dsi.fastutil.ints.Int2ObjectMap;
|
4 | 4 | import net.minecraft.core.BlockPos;
|
| 5 | +import net.minecraft.core.Direction; |
5 | 6 | import net.minecraft.core.component.DataComponentType;
|
6 | 7 | import net.minecraft.core.component.DataComponents;
|
7 | 8 | import net.minecraft.network.chat.Component;
|
|
24 | 25 | import net.minecraft.world.entity.monster.Shulker;
|
25 | 26 | import net.minecraft.world.entity.npc.VillagerTrades;
|
26 | 27 | import net.minecraft.world.entity.player.Player;
|
| 28 | +import net.minecraft.world.entity.projectile.ThrownEgg; |
27 | 29 | import net.minecraft.world.food.FoodProperties;
|
28 | 30 | import net.minecraft.world.item.*;
|
29 | 31 | import net.minecraft.world.item.crafting.*;
|
|
37 | 39 | import net.neoforged.fml.common.EventBusSubscriber;
|
38 | 40 | import net.neoforged.neoforge.event.entity.living.LivingDamageEvent;
|
39 | 41 | import net.neoforged.neoforge.event.entity.living.LivingEntityUseItemEvent;
|
| 42 | +import net.neoforged.neoforge.event.entity.player.AttackEntityEvent; |
40 | 43 | import net.neoforged.neoforge.event.entity.player.ItemTooltipEvent;
|
41 | 44 | import net.neoforged.neoforge.event.entity.player.PlayerInteractEvent;
|
42 | 45 | import net.neoforged.neoforge.event.level.BlockEvent;
|
43 | 46 | import net.neoforged.neoforge.event.tick.EntityTickEvent;
|
44 | 47 | import net.neoforged.neoforge.event.village.VillagerTradesEvent;
|
| 48 | +import net.neoforged.neoforge.network.PacketDistributor; |
45 | 49 | import org.polaris2023.wild_wind.WildWindMod;
|
46 | 50 | import org.polaris2023.wild_wind.common.entity.Firefly;
|
47 | 51 | import org.polaris2023.wild_wind.common.init.*;
|
48 | 52 | import org.polaris2023.wild_wind.client.ModTranslateKey;
|
| 53 | +import org.polaris2023.wild_wind.common.network.packets.EggShootPacket; |
49 | 54 | import org.polaris2023.wild_wind.util.EnchantmentHelper;
|
50 | 55 | import org.polaris2023.wild_wind.util.RegistryUtil;
|
51 | 56 | import org.polaris2023.wild_wind.util.TeleportUtil;
|
@@ -113,6 +118,63 @@ public static void hurtEvent(LivingDamageEvent.Post event) {
|
113 | 118 | }
|
114 | 119 | }
|
115 | 120 |
|
| 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 | + |
116 | 178 | private static final ResourceLocation VANILLA_FISHERMAN = ResourceLocation.withDefaultNamespace("fisherman");
|
117 | 179 | @SubscribeEvent
|
118 | 180 | public static void registerTrades(VillagerTradesEvent event) {
|
|
0 commit comments