Add effects for various blocks

This commit is contained in:
nelle 2024-09-11 04:49:04 -06:00
parent 1fe805e9a6
commit 475059df8f

View file

@ -1,7 +1,11 @@
package observer.nelle.edible_blocks.mixin; package observer.nelle.edible_blocks.mixin;
import net.minecraft.block.Block; import net.minecraft.block.Block;
import net.minecraft.block.Blocks;
import net.minecraft.entity.effect.StatusEffectInstance;
import net.minecraft.entity.effect.StatusEffects;
import net.minecraft.item.FoodComponent; import net.minecraft.item.FoodComponent;
import net.minecraft.item.FoodComponents;
import net.minecraft.item.Item; import net.minecraft.item.Item;
import net.minecraft.item.Items; import net.minecraft.item.Items;
import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Mixin;
@ -9,19 +13,71 @@ import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.ModifyArg; import org.spongepowered.asm.mixin.injection.ModifyArg;
@Mixin(Items.class) @Mixin(Items.class)
public abstract class ItemsMixin { public abstract class ItemsMixin {
@ModifyArg( @ModifyArg(
method = "register(Lnet/minecraft/block/Block;)Lnet/minecraft/item/Item;", method = "register(Lnet/minecraft/block/Block;)Lnet/minecraft/item/Item;",
at = @At(value="INVOKE",target = "Lnet/minecraft/item/BlockItem;<init>(Lnet/minecraft/block/Block;Lnet/minecraft/item/Item$Settings;)V") at = @At(value = "INVOKE", target = "Lnet/minecraft/item/BlockItem;<init>(Lnet/minecraft/block/Block;Lnet/minecraft/item/Item$Settings;)V")
) )
private static Item.Settings ModifySettings (Block block, Item.Settings settings) { private static Item.Settings ModifySettings(Block block, Item.Settings settings) {
/* TODO: Make pumpkin give player a carved pumpkin
if (block == Blocks.PUMPKIN) {
return settings.food(new FoodComponent.Builder()
.hunger(6)
.saturationModifier(0.9F)
.build());
}*/
if (block == Blocks.MELON) {
return settings.food(new FoodComponent.Builder()
.hunger(6)
.saturationModifier(0.9F)
.build());
}
if (block == Blocks.HONEY_BLOCK) {
return settings.food(new FoodComponent.Builder()
.hunger(9)
.saturationModifier(0.3F)
.statusEffect(new StatusEffectInstance(StatusEffects.SLOWNESS, 5, 1 / 2), 0.7f)
.build());
}
if (block == Blocks.HONEYCOMB_BLOCK) {
return settings.food(new FoodComponent.Builder()
.hunger(9)
.saturationModifier(0.3F)
.statusEffect(new StatusEffectInstance(StatusEffects.SLOWNESS, 5, 1 / 2), 0.7f)
.build());
}
if (block == Blocks.BEEHIVE) {
return settings.food(new FoodComponent.Builder()
.hunger(9)
.saturationModifier(0.3F)
.statusEffect(new StatusEffectInstance(StatusEffects.INSTANT_DAMAGE, 1, 1 / 2), 1f)
.statusEffect(new StatusEffectInstance(StatusEffects.SLOWNESS, 5, 1 / 2), 0.7f)
.build());
}
if (block == Blocks.BEE_NEST) {
return settings.food(new FoodComponent.Builder()
.hunger(9)
.saturationModifier(0.3F)
.statusEffect(new StatusEffectInstance(StatusEffects.INSTANT_DAMAGE, 1, 1 / 2), 1f)
.statusEffect(new StatusEffectInstance(StatusEffects.SLOWNESS, 5, 1 / 2), 0.4f)
.build());
}
if (block == Blocks.CACTUS) {
return settings.food(new FoodComponent.Builder()
.hunger(9)
.saturationModifier(0.3F)
.statusEffect(new StatusEffectInstance(StatusEffects.INSTANT_DAMAGE, 1, 1 / 3), 1f)
.build());
}
else {
return settings.food( return settings.food(
new FoodComponent.Builder() new FoodComponent.Builder()
.snack() .snack()
.hunger(1) .hunger(1)
.alwaysEdible() .alwaysEdible()
.build()); .build());
}
} }
} }