mirror of
https://github.com/Sollace/Unicopia.git
synced 2024-11-27 23:27:59 +01:00
Simplify toxin code a bit
This commit is contained in:
parent
e6b3d36606
commit
e4ae128385
6 changed files with 66 additions and 138 deletions
|
@ -6,8 +6,6 @@ import com.minelittlepony.unicopia.USounds;
|
||||||
import com.minelittlepony.unicopia.block.UBlocks;
|
import com.minelittlepony.unicopia.block.UBlocks;
|
||||||
import com.minelittlepony.unicopia.entity.UEntities;
|
import com.minelittlepony.unicopia.entity.UEntities;
|
||||||
import com.minelittlepony.unicopia.magic.spell.ScorchSpell;
|
import com.minelittlepony.unicopia.magic.spell.ScorchSpell;
|
||||||
import com.minelittlepony.unicopia.toxin.DynamicToxicBlockItem;
|
|
||||||
import com.minelittlepony.unicopia.toxin.DynamicToxicItem;
|
|
||||||
import com.minelittlepony.unicopia.toxin.ToxicBlockItem;
|
import com.minelittlepony.unicopia.toxin.ToxicBlockItem;
|
||||||
import com.minelittlepony.unicopia.toxin.ToxicItem;
|
import com.minelittlepony.unicopia.toxin.ToxicItem;
|
||||||
import com.minelittlepony.unicopia.toxin.Toxicity;
|
import com.minelittlepony.unicopia.toxin.Toxicity;
|
||||||
|
@ -138,16 +136,16 @@ public interface UItems {
|
||||||
Item APPLE_SEEDS = register(new BlockItem(UBlocks.APPLE_SAPLING, new Item.Settings().group(ItemGroup.DECORATIONS)), "apple_seeds");
|
Item APPLE_SEEDS = register(new BlockItem(UBlocks.APPLE_SAPLING, new Item.Settings().group(ItemGroup.DECORATIONS)), "apple_seeds");
|
||||||
Item APPLE_LEAVES = register(new BlockItem(UBlocks.APPLE_LEAVES, new Item.Settings().group(ItemGroup.DECORATIONS)), "apple_leaves");
|
Item APPLE_LEAVES = register(new BlockItem(UBlocks.APPLE_LEAVES, new Item.Settings().group(ItemGroup.DECORATIONS)), "apple_leaves");
|
||||||
|
|
||||||
Item DAFFODIL_DAISY_SANDWICH = register(new DynamicToxicItem(new Item.Settings(), 3, 2, UseAction.EAT, Toxicity::fromStack), "daffodil_daisy_sandwich");
|
Item DAFFODIL_DAISY_SANDWICH = register(new ToxicItem(new Item.Settings(), 3, 2, UseAction.EAT, Toxicity::fromStack, Toxin.FOOD), "daffodil_daisy_sandwich");
|
||||||
Item HAY_BURGER = register(new DynamicToxicItem(new Item.Settings(), 3, 4, UseAction.EAT, Toxicity::fromStack), "hay_burger");
|
Item HAY_BURGER = register(new ToxicItem(new Item.Settings(), 3, 4, UseAction.EAT, Toxicity::fromStack, Toxin.FOOD), "hay_burger");
|
||||||
Item HAY_FRIES = register(new ToxicItem(new Item.Settings(), 1, 5, UseAction.EAT, Toxicity.SAFE), "hay_fries");
|
Item HAY_FRIES = register(new ToxicItem(new Item.Settings(), 1, 5, UseAction.EAT, Toxicity.SAFE, Toxin.FOOD), "hay_fries");
|
||||||
Item SALAD = register(new DynamicToxicItem(new Item.Settings().recipeRemainder(Items.BOWL), 4, 2, UseAction.EAT, Toxicity::fromStack), "salad");
|
Item SALAD = register(new ToxicItem(new Item.Settings().recipeRemainder(Items.BOWL), 4, 2, UseAction.EAT, Toxicity::fromStack, Toxin.FOOD), "salad");
|
||||||
|
|
||||||
Item WHEAT_WORMS = register(new ToxicItem(new Item.Settings(), 1, 0, UseAction.EAT, Toxicity.SEVERE), "wheat_worms");
|
Item WHEAT_WORMS = register(new ToxicItem(new Item.Settings(), 1, 0, UseAction.EAT, Toxicity.SEVERE, Toxin.FOOD), "wheat_worms");
|
||||||
Item MUG = register(new Item(new Item.Settings().group(ItemGroup.MATERIALS)), "mug");
|
Item MUG = register(new Item(new Item.Settings().group(ItemGroup.MATERIALS)), "mug");
|
||||||
Item CIDER = register(new ToxicItem(new Item.Settings().recipeRemainder(MUG), 4, 2, UseAction.DRINK, Toxicity.MILD), "apple_cider");
|
Item CIDER = register(new ToxicItem(new Item.Settings().recipeRemainder(MUG), 4, 2, UseAction.DRINK, Toxicity.MILD, Toxin.FOOD), "apple_cider");
|
||||||
Item JUICE = register(new ToxicItem(new Item.Settings().recipeRemainder(Items.GLASS_BOTTLE), 2, 2, UseAction.DRINK, Toxicity.SAFE), "juice");
|
Item JUICE = register(new ToxicItem(new Item.Settings().recipeRemainder(Items.GLASS_BOTTLE), 2, 2, UseAction.DRINK, Toxicity.SAFE, Toxin.FOOD), "juice");
|
||||||
Item BURNED_JUICE = register(new ToxicItem(new Item.Settings().recipeRemainder(Items.GLASS_BOTTLE), 3, 1, UseAction.DRINK, Toxicity.FAIR), "burned_juice");
|
Item BURNED_JUICE = register(new ToxicItem(new Item.Settings().recipeRemainder(Items.GLASS_BOTTLE), 3, 1, UseAction.DRINK, Toxicity.FAIR, Toxin.FOOD), "burned_juice");
|
||||||
|
|
||||||
Item CLOUD_SPAWN_EGG = register(new SpawnEggItem(UEntities.CLOUD, 0x4169e1, 0x7fff00, new Item.Settings().group(ItemGroup.MISC)), "cloud_spawn_egg");
|
Item CLOUD_SPAWN_EGG = register(new SpawnEggItem(UEntities.CLOUD, 0x4169e1, 0x7fff00, new Item.Settings().group(ItemGroup.MISC)), "cloud_spawn_egg");
|
||||||
Item BUTTERFLY_SPAWN_EGG = register(new SpawnEggItem(UEntities.BUTTERFLY, 0x222200, 0xaaeeff, new Item.Settings().group(ItemGroup.MISC)), "butterfly_spawn_egg");
|
Item BUTTERFLY_SPAWN_EGG = register(new SpawnEggItem(UEntities.BUTTERFLY, 0x222200, 0xaaeeff, new Item.Settings().group(ItemGroup.MISC)), "butterfly_spawn_egg");
|
||||||
|
@ -176,26 +174,26 @@ public interface UItems {
|
||||||
|
|
||||||
AppleItem APPLE = register(new AppleItem(FoodComponents.APPLE), Items.APPLE);
|
AppleItem APPLE = register(new AppleItem(FoodComponents.APPLE), Items.APPLE);
|
||||||
|
|
||||||
Item GRASS = register(new DynamicToxicBlockItem(Blocks.GRASS, new Item.Settings().group(ItemGroup.DECORATIONS), 2, 1, UseAction.EAT, Toxicity.SAFE, Toxin.NAUSEA), Items.GRASS);
|
Item GRASS = register(new ToxicBlockItem(Blocks.GRASS, new Item.Settings().group(ItemGroup.DECORATIONS), 2, 1, UseAction.EAT, Toxicity.SAFE, Toxin.FOOD.and(Toxin.NAUSEA)), Items.GRASS);
|
||||||
Item FERN = register(new DynamicToxicBlockItem(Blocks.FERN, new Item.Settings().group(ItemGroup.DECORATIONS), 2, 1, UseAction.EAT, Toxicity.SEVERE, Toxin.STRENGTH), Items.FERN);
|
Item FERN = register(new ToxicBlockItem(Blocks.FERN, new Item.Settings().group(ItemGroup.DECORATIONS), 2, 1, UseAction.EAT, Toxicity.SEVERE, Toxin.FOOD.and(Toxin.STRENGTH)), Items.FERN);
|
||||||
Item DEAD_BUSH = register(new DynamicToxicBlockItem(Blocks.DEAD_BUSH, new Item.Settings().group(ItemGroup.DECORATIONS), 2, 1, UseAction.EAT, Toxicity.SEVERE, Toxin.NAUSEA), Items.DEAD_BUSH);
|
Item DEAD_BUSH = register(new ToxicBlockItem(Blocks.DEAD_BUSH, new Item.Settings().group(ItemGroup.DECORATIONS), 2, 1, UseAction.EAT, Toxicity.SEVERE, Toxin.FOOD.and(Toxin.NAUSEA)), Items.DEAD_BUSH);
|
||||||
|
|
||||||
Item DANDELION = register(new ToxicBlockItem(Blocks.DANDELION, new Item.Settings().group(ItemGroup.DECORATIONS), 2, 1, UseAction.EAT, Toxicity.SAFE), Items.DANDELION);
|
Item DANDELION = register(new ToxicBlockItem(Blocks.DANDELION, new Item.Settings().group(ItemGroup.DECORATIONS), 2, 1, UseAction.EAT, Toxicity.SAFE, Toxin.FOOD), Items.DANDELION);
|
||||||
Item POPPY = register(new ToxicBlockItem(Blocks.POPPY, new Item.Settings().group(ItemGroup.DECORATIONS), 2, 1, UseAction.EAT, Toxicity.SEVERE), Items.POPPY);
|
Item POPPY = register(new ToxicBlockItem(Blocks.POPPY, new Item.Settings().group(ItemGroup.DECORATIONS), 2, 1, UseAction.EAT, Toxicity.SEVERE, Toxin.FOOD), Items.POPPY);
|
||||||
Item BLUE_ORCHID = register(new ToxicBlockItem(Blocks.BLUE_ORCHID, new Item.Settings().group(ItemGroup.DECORATIONS), 2, 1, UseAction.EAT, Toxicity.SAFE), Items.BLUE_ORCHID);
|
Item BLUE_ORCHID = register(new ToxicBlockItem(Blocks.BLUE_ORCHID, new Item.Settings().group(ItemGroup.DECORATIONS), 2, 1, UseAction.EAT, Toxicity.SAFE, Toxin.FOOD), Items.BLUE_ORCHID);
|
||||||
Item ALLIUM = register(new ToxicBlockItem(Blocks.ALLIUM, new Item.Settings().group(ItemGroup.DECORATIONS), 2, 1, UseAction.EAT, Toxicity.FAIR), Items.ALLIUM);
|
Item ALLIUM = register(new ToxicBlockItem(Blocks.ALLIUM, new Item.Settings().group(ItemGroup.DECORATIONS), 2, 1, UseAction.EAT, Toxicity.FAIR, Toxin.FOOD), Items.ALLIUM);
|
||||||
Item AZUER_BLUET = register(new DynamicToxicBlockItem(Blocks.AZURE_BLUET, new Item.Settings().group(ItemGroup.DECORATIONS), 2, 1, UseAction.EAT, Toxicity.SAFE, Toxin.RADIOACTIVITY), Items.AZURE_BLUET);
|
Item AZUER_BLUET = register(new ToxicBlockItem(Blocks.AZURE_BLUET, new Item.Settings().group(ItemGroup.DECORATIONS), 2, 1, UseAction.EAT, Toxicity.SAFE, Toxin.FOOD.and(Toxin.RADIOACTIVITY)), Items.AZURE_BLUET);
|
||||||
Item RED_TULIP = register(new ToxicBlockItem(Blocks.RED_TULIP, new Item.Settings().group(ItemGroup.DECORATIONS), 2, 1, UseAction.EAT, Toxicity.SAFE), Items.RED_TULIP);
|
Item RED_TULIP = register(new ToxicBlockItem(Blocks.RED_TULIP, new Item.Settings().group(ItemGroup.DECORATIONS), 2, 1, UseAction.EAT, Toxicity.SAFE, Toxin.FOOD), Items.RED_TULIP);
|
||||||
Item ORANGE_TULIP = register(new ToxicBlockItem(Blocks.ORANGE_TULIP, new Item.Settings().group(ItemGroup.DECORATIONS), 2, 1, UseAction.EAT, Toxicity.SAFE), Items.ORANGE_TULIP);
|
Item ORANGE_TULIP = register(new ToxicBlockItem(Blocks.ORANGE_TULIP, new Item.Settings().group(ItemGroup.DECORATIONS), 2, 1, UseAction.EAT, Toxicity.SAFE, Toxin.FOOD), Items.ORANGE_TULIP);
|
||||||
Item WHITE_TULIP = register(new ToxicBlockItem(Blocks.WHITE_TULIP, new Item.Settings().group(ItemGroup.DECORATIONS), 2, 1, UseAction.EAT, Toxicity.FAIR), Items.WHITE_TULIP);
|
Item WHITE_TULIP = register(new ToxicBlockItem(Blocks.WHITE_TULIP, new Item.Settings().group(ItemGroup.DECORATIONS), 2, 1, UseAction.EAT, Toxicity.FAIR, Toxin.FOOD), Items.WHITE_TULIP);
|
||||||
Item PINK_TULIP = register(new ToxicBlockItem(Blocks.PINK_TULIP, new Item.Settings().group(ItemGroup.DECORATIONS), 2, 1, UseAction.EAT, Toxicity.SAFE), Items.PINK_TULIP);
|
Item PINK_TULIP = register(new ToxicBlockItem(Blocks.PINK_TULIP, new Item.Settings().group(ItemGroup.DECORATIONS), 2, 1, UseAction.EAT, Toxicity.SAFE, Toxin.FOOD), Items.PINK_TULIP);
|
||||||
Item OXEYE_DAISY = register(new DynamicToxicBlockItem(Blocks.OXEYE_DAISY, new Item.Settings().group(ItemGroup.DECORATIONS), 2, 1, UseAction.EAT, Toxicity.SEVERE, Toxin.BLINDNESS), Items.OXEYE_DAISY);
|
Item OXEYE_DAISY = register(new ToxicBlockItem(Blocks.OXEYE_DAISY, new Item.Settings().group(ItemGroup.DECORATIONS), 2, 1, UseAction.EAT, Toxicity.SEVERE, Toxin.FOOD.and(Toxin.BLINDNESS)), Items.OXEYE_DAISY);
|
||||||
Item CORNFLOWER = register(new ToxicBlockItem(Blocks.CORNFLOWER, new Item.Settings().group(ItemGroup.DECORATIONS), 2, 1, UseAction.EAT, Toxicity.SAFE), Items.CORNFLOWER);
|
Item CORNFLOWER = register(new ToxicBlockItem(Blocks.CORNFLOWER, new Item.Settings().group(ItemGroup.DECORATIONS), 2, 1, UseAction.EAT, Toxicity.SAFE, Toxin.FOOD), Items.CORNFLOWER);
|
||||||
|
|
||||||
Item ROSE_BUSH = register(new DynamicToxicBlockItem(Blocks.ROSE_BUSH, new Item.Settings().group(ItemGroup.DECORATIONS), 2, 1, UseAction.EAT, Toxicity.SAFE, Toxin.DAMAGE), Items.ROSE_BUSH);
|
Item ROSE_BUSH = register(new ToxicBlockItem(Blocks.ROSE_BUSH, new Item.Settings().group(ItemGroup.DECORATIONS), 2, 1, UseAction.EAT, Toxicity.SAFE, Toxin.FOOD.and(Toxin.DAMAGE)), Items.ROSE_BUSH);
|
||||||
Item PEONY = register(new ToxicBlockItem(Blocks.PEONY, new Item.Settings().group(ItemGroup.DECORATIONS), 2, 1, UseAction.EAT, Toxicity.SAFE), Items.PEONY);
|
Item PEONY = register(new ToxicBlockItem(Blocks.PEONY, new Item.Settings().group(ItemGroup.DECORATIONS), 2, 1, UseAction.EAT, Toxicity.SAFE, Toxin.FOOD), Items.PEONY);
|
||||||
Item TALL_GRASS = register(new ToxicBlockItem(Blocks.TALL_GRASS, new Item.Settings().group(ItemGroup.DECORATIONS), 2, 1, UseAction.EAT, Toxicity.SAFE), Items.TALL_GRASS);
|
Item TALL_GRASS = register(new ToxicBlockItem(Blocks.TALL_GRASS, new Item.Settings().group(ItemGroup.DECORATIONS), 2, 1, UseAction.EAT, Toxicity.SAFE, Toxin.FOOD), Items.TALL_GRASS);
|
||||||
Item LARGE_FERN = register(new DynamicToxicBlockItem(Blocks.LARGE_FERN, new Item.Settings().group(ItemGroup.DECORATIONS), 2, 1, UseAction.EAT, Toxicity.SEVERE, Toxin.DAMAGE), Items.LARGE_FERN);
|
Item LARGE_FERN = register(new ToxicBlockItem(Blocks.LARGE_FERN, new Item.Settings().group(ItemGroup.DECORATIONS), 2, 1, UseAction.EAT, Toxicity.SEVERE, Toxin.FOOD.and(Toxin.DAMAGE)), Items.LARGE_FERN);
|
||||||
|
|
||||||
static <T extends Item> T register(T newItem, Item oldItem) {
|
static <T extends Item> T register(T newItem, Item oldItem) {
|
||||||
return Registry.ITEM.set(Registry.ITEM.getRawId(oldItem), Registry.ITEM.getId(oldItem), newItem);
|
return Registry.ITEM.set(Registry.ITEM.getRawId(oldItem), Registry.ITEM.getId(oldItem), newItem);
|
||||||
|
|
|
@ -1,26 +0,0 @@
|
||||||
package com.minelittlepony.unicopia.toxin;
|
|
||||||
|
|
||||||
import javax.annotation.Nonnull;
|
|
||||||
|
|
||||||
import net.minecraft.block.Block;
|
|
||||||
import net.minecraft.entity.player.PlayerEntity;
|
|
||||||
import net.minecraft.item.Item;
|
|
||||||
import net.minecraft.item.ItemStack;
|
|
||||||
import net.minecraft.util.UseAction;
|
|
||||||
|
|
||||||
public class DynamicToxicBlockItem extends ToxicBlockItem {
|
|
||||||
|
|
||||||
private final Toxin toxin;
|
|
||||||
|
|
||||||
public DynamicToxicBlockItem(Block block, Item.Settings settings, int hunger, float saturation, UseAction action, Toxicity toxicity, @Nonnull Toxin toxin) {
|
|
||||||
super(block, settings, hunger, saturation, action, toxicity);
|
|
||||||
|
|
||||||
this.toxin = toxin;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void addSecondaryEffects(PlayerEntity player, Toxicity toxicity, ItemStack stack) {
|
|
||||||
super.addSecondaryEffects(player, toxicity, stack);
|
|
||||||
toxin.addSecondaryEffects(player, toxicity, stack);
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,27 +0,0 @@
|
||||||
package com.minelittlepony.unicopia.toxin;
|
|
||||||
|
|
||||||
import javax.annotation.Nonnull;
|
|
||||||
import net.minecraft.entity.player.PlayerEntity;
|
|
||||||
import net.minecraft.item.Item;
|
|
||||||
import net.minecraft.item.ItemStack;
|
|
||||||
import net.minecraft.util.UseAction;
|
|
||||||
|
|
||||||
public class DynamicToxicItem extends ToxicItem {
|
|
||||||
|
|
||||||
private final Toxic toxic;
|
|
||||||
|
|
||||||
public DynamicToxicItem(Item.Settings settings, int hunger, float saturation, UseAction action, @Nonnull Toxic toxic) {
|
|
||||||
super(settings, hunger, saturation, action, Toxicity.SAFE);
|
|
||||||
this.toxic = toxic;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void addSecondaryEffects(PlayerEntity player, Toxicity toxicity, ItemStack stack) {
|
|
||||||
super.addSecondaryEffects(player, toxicity, stack);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Toxicity getToxicity(ItemStack stack) {
|
|
||||||
return toxic.getToxicity(stack);
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -6,13 +6,9 @@ import javax.annotation.Nullable;
|
||||||
|
|
||||||
import com.minelittlepony.unicopia.Race;
|
import com.minelittlepony.unicopia.Race;
|
||||||
import com.minelittlepony.unicopia.entity.player.Pony;
|
import com.minelittlepony.unicopia.entity.player.Pony;
|
||||||
import com.minelittlepony.unicopia.item.UEffects;
|
|
||||||
|
|
||||||
import net.minecraft.block.Block;
|
import net.minecraft.block.Block;
|
||||||
import net.minecraft.client.item.TooltipContext;
|
import net.minecraft.client.item.TooltipContext;
|
||||||
import net.minecraft.entity.LivingEntity;
|
import net.minecraft.entity.LivingEntity;
|
||||||
import net.minecraft.entity.effect.StatusEffectInstance;
|
|
||||||
import net.minecraft.entity.effect.StatusEffects;
|
|
||||||
import net.minecraft.entity.player.PlayerEntity;
|
import net.minecraft.entity.player.PlayerEntity;
|
||||||
import net.minecraft.item.BlockItem;
|
import net.minecraft.item.BlockItem;
|
||||||
import net.minecraft.item.FoodComponent;
|
import net.minecraft.item.FoodComponent;
|
||||||
|
@ -26,12 +22,13 @@ import net.minecraft.util.TypedActionResult;
|
||||||
import net.minecraft.util.UseAction;
|
import net.minecraft.util.UseAction;
|
||||||
import net.minecraft.world.World;
|
import net.minecraft.world.World;
|
||||||
|
|
||||||
public class ToxicBlockItem extends BlockItem implements Toxic, Toxin {
|
public class ToxicBlockItem extends BlockItem {
|
||||||
|
|
||||||
private final UseAction action;
|
private final UseAction action;
|
||||||
private final Toxicity toxicity;
|
private final Toxicity toxicity;
|
||||||
|
private final Toxin toxin;
|
||||||
|
|
||||||
public ToxicBlockItem(Block block, Item.Settings settings, int hunger, float saturation, UseAction action, Toxicity toxicity) {
|
public ToxicBlockItem(Block block, Item.Settings settings, int hunger, float saturation, UseAction action, Toxicity toxicity, Toxin toxin) {
|
||||||
super(block, settings
|
super(block, settings
|
||||||
.group(ItemGroup.FOOD)
|
.group(ItemGroup.FOOD)
|
||||||
.food(new FoodComponent.Builder()
|
.food(new FoodComponent.Builder()
|
||||||
|
@ -40,11 +37,7 @@ public class ToxicBlockItem extends BlockItem implements Toxic, Toxin {
|
||||||
.build()));
|
.build()));
|
||||||
this.toxicity = toxicity;
|
this.toxicity = toxicity;
|
||||||
this.action = action;
|
this.action = action;
|
||||||
}
|
this.toxin = toxin;
|
||||||
|
|
||||||
@Override
|
|
||||||
public Toxicity getToxicity(ItemStack stack) {
|
|
||||||
return toxicity;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -54,7 +47,7 @@ public class ToxicBlockItem extends BlockItem implements Toxic, Toxin {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void appendTooltip(ItemStack stack, @Nullable World world, List<Text> tooltip, TooltipContext context) {
|
public void appendTooltip(ItemStack stack, @Nullable World world, List<Text> tooltip, TooltipContext context) {
|
||||||
tooltip.add(getToxicity(stack).getTooltip());
|
tooltip.add(toxicity.getTooltip());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -63,9 +56,9 @@ public class ToxicBlockItem extends BlockItem implements Toxic, Toxin {
|
||||||
|
|
||||||
if (entity instanceof PlayerEntity) {
|
if (entity instanceof PlayerEntity) {
|
||||||
Race race = Pony.of((PlayerEntity)entity).getSpecies();
|
Race race = Pony.of((PlayerEntity)entity).getSpecies();
|
||||||
Toxicity toxicity = (race.isDefault() || race == Race.CHANGELING) ? Toxicity.LETHAL : getToxicity(stack);
|
Toxicity toxicity = (race.isDefault() || race == Race.CHANGELING) ? Toxicity.LETHAL : this.toxicity;
|
||||||
|
|
||||||
addSecondaryEffects((PlayerEntity)entity, toxicity, stack);
|
toxin.addSecondaryEffects((PlayerEntity)entity, toxicity, stack);
|
||||||
}
|
}
|
||||||
|
|
||||||
return new ItemStack(getRecipeRemainder());
|
return new ItemStack(getRecipeRemainder());
|
||||||
|
@ -81,18 +74,4 @@ public class ToxicBlockItem extends BlockItem implements Toxic, Toxin {
|
||||||
|
|
||||||
return super.use(world, player, hand);
|
return super.use(world, player, hand);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public void addSecondaryEffects(PlayerEntity player, Toxicity toxicity, ItemStack stack) {
|
|
||||||
|
|
||||||
if (toxicity.toxicWhenRaw()) {
|
|
||||||
player.addStatusEffect(toxicity.getPoisonEffect());
|
|
||||||
}
|
|
||||||
|
|
||||||
if (toxicity.isLethal()) {
|
|
||||||
player.addStatusEffect(new StatusEffectInstance(UEffects.FOOD_POISONING, 300, 7, false, false));
|
|
||||||
} else if (toxicity.toxicWhenCooked()) {
|
|
||||||
player.addStatusEffect(new StatusEffectInstance(StatusEffects.NAUSEA, 3, 1, false, false));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,17 +1,14 @@
|
||||||
package com.minelittlepony.unicopia.toxin;
|
package com.minelittlepony.unicopia.toxin;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.function.Function;
|
||||||
|
|
||||||
import javax.annotation.Nullable;
|
import javax.annotation.Nullable;
|
||||||
|
|
||||||
import com.minelittlepony.unicopia.Race;
|
import com.minelittlepony.unicopia.Race;
|
||||||
import com.minelittlepony.unicopia.entity.player.Pony;
|
import com.minelittlepony.unicopia.entity.player.Pony;
|
||||||
import com.minelittlepony.unicopia.item.UEffects;
|
|
||||||
|
|
||||||
import net.minecraft.client.item.TooltipContext;
|
import net.minecraft.client.item.TooltipContext;
|
||||||
import net.minecraft.entity.LivingEntity;
|
import net.minecraft.entity.LivingEntity;
|
||||||
import net.minecraft.entity.effect.StatusEffectInstance;
|
|
||||||
import net.minecraft.entity.effect.StatusEffects;
|
|
||||||
import net.minecraft.entity.player.PlayerEntity;
|
import net.minecraft.entity.player.PlayerEntity;
|
||||||
import net.minecraft.item.FoodComponent;
|
import net.minecraft.item.FoodComponent;
|
||||||
import net.minecraft.item.Item;
|
import net.minecraft.item.Item;
|
||||||
|
@ -24,12 +21,17 @@ import net.minecraft.util.TypedActionResult;
|
||||||
import net.minecraft.util.UseAction;
|
import net.minecraft.util.UseAction;
|
||||||
import net.minecraft.world.World;
|
import net.minecraft.world.World;
|
||||||
|
|
||||||
public class ToxicItem extends Item implements Toxic, Toxin {
|
public class ToxicItem extends Item {
|
||||||
|
|
||||||
private final UseAction action;
|
private final UseAction action;
|
||||||
private final Toxicity toxicity;
|
private final Function<ItemStack, Toxicity> toxicity;
|
||||||
|
private final Toxin toxin;
|
||||||
|
|
||||||
public ToxicItem(Item.Settings settings, int hunger, float saturation, UseAction action, Toxicity toxicity) {
|
public ToxicItem(Item.Settings settings, int hunger, float saturation, UseAction action, Toxicity toxicity, Toxin toxin) {
|
||||||
|
this(settings, hunger, saturation, action, stack -> toxicity, toxin);
|
||||||
|
}
|
||||||
|
|
||||||
|
public ToxicItem(Item.Settings settings, int hunger, float saturation, UseAction action, Function<ItemStack, Toxicity> toxicity, Toxin toxin) {
|
||||||
super(settings
|
super(settings
|
||||||
.group(ItemGroup.FOOD)
|
.group(ItemGroup.FOOD)
|
||||||
.food(new FoodComponent.Builder()
|
.food(new FoodComponent.Builder()
|
||||||
|
@ -38,11 +40,7 @@ public class ToxicItem extends Item implements Toxic, Toxin {
|
||||||
.build()));
|
.build()));
|
||||||
this.toxicity = toxicity;
|
this.toxicity = toxicity;
|
||||||
this.action = action;
|
this.action = action;
|
||||||
}
|
this.toxin = toxin;
|
||||||
|
|
||||||
@Override
|
|
||||||
public Toxicity getToxicity(ItemStack stack) {
|
|
||||||
return toxicity;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -52,7 +50,7 @@ public class ToxicItem extends Item implements Toxic, Toxin {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void appendTooltip(ItemStack stack, @Nullable World world, List<Text> tooltip, TooltipContext context) {
|
public void appendTooltip(ItemStack stack, @Nullable World world, List<Text> tooltip, TooltipContext context) {
|
||||||
tooltip.add(getToxicity(stack).getTooltip());
|
tooltip.add(toxicity.apply(stack).getTooltip());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -61,9 +59,9 @@ public class ToxicItem extends Item implements Toxic, Toxin {
|
||||||
|
|
||||||
if (entity instanceof PlayerEntity) {
|
if (entity instanceof PlayerEntity) {
|
||||||
Race race = Pony.of((PlayerEntity)entity).getSpecies();
|
Race race = Pony.of((PlayerEntity)entity).getSpecies();
|
||||||
Toxicity toxicity = (race.isDefault() || race == Race.CHANGELING) ? Toxicity.LETHAL : getToxicity(stack);
|
Toxicity toxicity = (race.isDefault() || race == Race.CHANGELING) ? Toxicity.LETHAL : this.toxicity.apply(stack);
|
||||||
|
|
||||||
addSecondaryEffects((PlayerEntity)entity, toxicity, stack);
|
toxin.addSecondaryEffects((PlayerEntity)entity, toxicity, stack);
|
||||||
}
|
}
|
||||||
|
|
||||||
return new ItemStack(getRecipeRemainder());
|
return new ItemStack(getRecipeRemainder());
|
||||||
|
@ -79,18 +77,4 @@ public class ToxicItem extends Item implements Toxic, Toxin {
|
||||||
|
|
||||||
return super.use(world, player, hand);
|
return super.use(world, player, hand);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public void addSecondaryEffects(PlayerEntity player, Toxicity toxicity, ItemStack stack) {
|
|
||||||
|
|
||||||
if (toxicity.toxicWhenRaw()) {
|
|
||||||
player.addStatusEffect(toxicity.getPoisonEffect());
|
|
||||||
}
|
|
||||||
|
|
||||||
if (toxicity.isLethal()) {
|
|
||||||
player.addStatusEffect(new StatusEffectInstance(UEffects.FOOD_POISONING, 300, 7, false, false));
|
|
||||||
} else if (toxicity.toxicWhenCooked()) {
|
|
||||||
player.addStatusEffect(new StatusEffectInstance(StatusEffects.NAUSEA, 3, 1, false, false));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,7 @@
|
||||||
package com.minelittlepony.unicopia.toxin;
|
package com.minelittlepony.unicopia.toxin;
|
||||||
|
|
||||||
|
import com.minelittlepony.unicopia.item.UEffects;
|
||||||
|
|
||||||
import net.minecraft.entity.effect.StatusEffectInstance;
|
import net.minecraft.entity.effect.StatusEffectInstance;
|
||||||
import net.minecraft.entity.effect.StatusEffects;
|
import net.minecraft.entity.effect.StatusEffects;
|
||||||
import net.minecraft.entity.player.PlayerEntity;
|
import net.minecraft.entity.player.PlayerEntity;
|
||||||
|
@ -26,6 +28,24 @@ public interface Toxin {
|
||||||
Toxin BLINDNESS = (player, toxicity, stack) -> {
|
Toxin BLINDNESS = (player, toxicity, stack) -> {
|
||||||
player.addStatusEffect(new StatusEffectInstance(StatusEffects.BLINDNESS, 30, 1, false, false));
|
player.addStatusEffect(new StatusEffectInstance(StatusEffects.BLINDNESS, 30, 1, false, false));
|
||||||
};
|
};
|
||||||
|
Toxin FOOD = (player, toxicity, stack) -> {
|
||||||
|
if (toxicity.toxicWhenRaw()) {
|
||||||
|
player.addStatusEffect(toxicity.getPoisonEffect());
|
||||||
|
}
|
||||||
|
|
||||||
|
if (toxicity.isLethal()) {
|
||||||
|
player.addStatusEffect(new StatusEffectInstance(UEffects.FOOD_POISONING, 300, 7, false, false));
|
||||||
|
} else if (toxicity.toxicWhenCooked()) {
|
||||||
|
player.addStatusEffect(new StatusEffectInstance(StatusEffects.NAUSEA, 3, 1, false, false));
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
void addSecondaryEffects(PlayerEntity player, Toxicity toxicity, ItemStack stack);
|
void addSecondaryEffects(PlayerEntity player, Toxicity toxicity, ItemStack stack);
|
||||||
|
|
||||||
|
default Toxin and(Toxin other) {
|
||||||
|
return (player, toxicity, stack) -> {
|
||||||
|
other.addSecondaryEffects(player, toxicity, stack);
|
||||||
|
this.addSecondaryEffects(player, toxicity, stack);
|
||||||
|
};
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue