2020-01-27 17:37:22 +01:00
|
|
|
package com.minelittlepony.unicopia.redux;
|
2019-02-17 00:08:19 +01:00
|
|
|
|
|
|
|
import java.util.List;
|
|
|
|
|
2020-01-27 17:37:22 +01:00
|
|
|
import com.minelittlepony.unicopia.core.magic.spell.SpellRegistry;
|
|
|
|
import com.minelittlepony.unicopia.redux.block.ITillable;
|
|
|
|
import com.minelittlepony.unicopia.redux.item.UItems;
|
2019-02-17 00:08:19 +01:00
|
|
|
|
|
|
|
import net.minecraft.block.Block;
|
2020-01-16 12:35:46 +01:00
|
|
|
import net.minecraft.block.BlockState;
|
|
|
|
import net.minecraft.block.Blocks;
|
|
|
|
import net.minecraft.block.GrassBlock;
|
|
|
|
import net.minecraft.entity.player.PlayerEntity;
|
2019-02-17 00:08:19 +01:00
|
|
|
import net.minecraft.item.ItemStack;
|
|
|
|
import net.minecraft.util.math.BlockPos;
|
|
|
|
import net.minecraft.world.World;
|
|
|
|
|
|
|
|
public class BlockInteractions {
|
2020-01-16 12:35:46 +01:00
|
|
|
public boolean onBlockTilled(World world, BlockPos pos, PlayerEntity player, ItemStack hoe) {
|
|
|
|
BlockState state = world.getBlockState(pos);
|
2019-02-17 00:08:19 +01:00
|
|
|
|
|
|
|
if (!(state.getBlock() instanceof ITillable)) {
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
|
|
|
ITillable farm = ((ITillable)state.getBlock());
|
|
|
|
|
|
|
|
if (!farm.canBeTilled(hoe, player, world, state, pos)) {
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
|
|
|
world.setBlockState(pos, farm.getFarmlandState(hoe, player, world, state, pos));
|
|
|
|
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
|
2020-01-16 12:35:46 +01:00
|
|
|
public void addAuxiliaryDrops(World world, BlockState state, BlockPos pos, List<ItemStack> drops, int fortune) {
|
2019-02-17 00:08:19 +01:00
|
|
|
Block block = state.getBlock();
|
|
|
|
|
|
|
|
int fortuneFactor = 1 + fortune * 15;
|
|
|
|
|
|
|
|
if (block == Blocks.STONE) {
|
2020-01-16 12:35:46 +01:00
|
|
|
if (world.random.nextInt(500 / fortuneFactor) == 0) {
|
2019-02-17 00:08:19 +01:00
|
|
|
for (int i = 0; i < 1 + fortune; i++) {
|
2020-01-16 12:35:46 +01:00
|
|
|
if (world.random.nextInt(10) > 3) {
|
2019-02-17 00:08:19 +01:00
|
|
|
drops.add(new ItemStack(UItems.curse));
|
|
|
|
} else {
|
|
|
|
drops.add(new ItemStack(UItems.spell));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2020-01-16 12:35:46 +01:00
|
|
|
if (world.random.nextInt(5000) == 0) {
|
2019-02-17 00:08:19 +01:00
|
|
|
drops.add(SpellRegistry.instance().enchantStack(new ItemStack(UItems.spell), "awkward"));
|
|
|
|
}
|
2019-03-05 12:11:33 +01:00
|
|
|
} else if (block == Blocks.DIRT || block == Blocks.CLAY || block == Blocks.GRASS_PATH || block == Blocks.GRASS || block == UBlocks.hive) {
|
2020-01-16 12:35:46 +01:00
|
|
|
if (world.random.nextInt(25 / fortuneFactor) == 0) {
|
2019-03-05 12:11:33 +01:00
|
|
|
drops.add(new ItemStack(UItems.wheat_worms, 1 + fortune));
|
|
|
|
}
|
2020-01-16 12:35:46 +01:00
|
|
|
} else if (block instanceof GrassBlock) {
|
|
|
|
if (world.random.nextInt(25 / fortuneFactor) == 0) {
|
2019-02-17 00:08:19 +01:00
|
|
|
for (int i = 0; i < 1 + fortune; i++) {
|
2020-01-16 12:35:46 +01:00
|
|
|
int chance = world.random.nextInt(3);
|
2019-02-17 00:08:19 +01:00
|
|
|
|
|
|
|
if (chance == 0) {
|
|
|
|
drops.add(new ItemStack(UItems.alfalfa_seeds));
|
|
|
|
} else if (chance == 1) {
|
|
|
|
drops.add(new ItemStack(UItems.apple_seeds));
|
|
|
|
} else {
|
|
|
|
drops.add(new ItemStack(UItems.tomato_seeds));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|