Skip to content

Commit

Permalink
Continued work on tool leveling system and fix sound bug
Browse files Browse the repository at this point in the history
Signed-off-by: Savage <[email protected]>
  • Loading branch information
devsavage committed May 4, 2020
1 parent 8dd7b77 commit 6a573e2
Show file tree
Hide file tree
Showing 5 changed files with 80 additions and 11 deletions.
2 changes: 1 addition & 1 deletion build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ apply plugin: 'net.minecraftforge.gradle'
apply plugin: 'eclipse'
apply plugin: 'maven-publish'

version = '1.15.2-1.0.3.0'
version = '1.15.2-1.0.3.1'
group = 'io.savagedev.soulmatter' // http://maven.apache.org/guides/mini/guide-naming-conventions.html
archivesBaseName = 'SoulMatter'

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ public class BlockSoulEnchanter extends Block
private static final DirectionProperty FACING = HorizontalBlock.HORIZONTAL_FACING;

public BlockSoulEnchanter() {
super(Properties.create(Material.IRON).sound(SoundType.ANVIL).hardnessAndResistance(4.0F));
super(Properties.create(Material.IRON).sound(SoundType.ANVIL).hardnessAndResistance(2.0F));
this.setDefaultState(this.getStateContainer().getBaseState().with(FACING, Direction.NORTH));
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ public class BlockSoulPresser extends Block
private static final DirectionProperty FACING = HorizontalBlock.HORIZONTAL_FACING;

public BlockSoulPresser() {
super(Properties.create(Material.IRON).sound(SoundType.ANVIL).hardnessAndResistance(4.0F));
super(Properties.create(Material.IRON).sound(SoundType.ANVIL).hardnessAndResistance(2.0F));
this.setDefaultState(this.getStateContainer().getBaseState().with(FACING, Direction.NORTH));
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -137,8 +137,8 @@ public static void updateToolXp(ItemStack soulTool, PlayerEntity player, Long ne
else {
player.sendMessage(new StringTextComponent("Your " +
TextFormatting.DARK_AQUA + soulTool.getDisplayName().getFormattedText() +
TextFormatting.RESET + " has been leveled up to level" + TextFormatting.AQUA + level + TextFormatting.RESET + "!"));
player.world.playSound(player, player.getPosition(), SoundEvents.ENTITY_WITCH_HURT, SoundCategory.HOSTILE, 0.9F, 1.0F);
TextFormatting.RESET + " has been leveled up to level " + TextFormatting.AQUA + level + TextFormatting.RESET + "!"));
player.playSound(SoundEvents.ENTITY_FIREWORK_ROCKET_BLAST, SoundCategory.AMBIENT, 1.0F, 1.0F);
}
}
}
Expand All @@ -155,6 +155,6 @@ public static void triggerMaxLevel(ItemStack tool, PlayerEntity player) {
player.sendMessage(new StringTextComponent(TextFormatting.GOLD + "You have reached the max level for your " + TextFormatting.AQUA +
tool.getDisplayName().getFormattedText() + TextFormatting.GOLD + "!"));
// Sound not working ?
player.getEntityWorld().playSound(player, player.getPosition(), SoundEvents.ENTITY_WITHER_DEATH, SoundCategory.HOSTILE, 0.9F, 1.0F);
player.playSound(SoundEvents.ENTITY_FIREWORK_ROCKET_LARGE_BLAST, SoundCategory.AMBIENT, 1.0F, 1.0F);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,8 @@
import io.savagedev.soulmatter.util.NBTHelper;
import net.minecraft.block.Block;
import net.minecraft.block.BlockState;
import net.minecraft.block.Blocks;
import net.minecraft.block.material.Material;
import net.minecraft.client.util.ITooltipFlag;
import net.minecraft.entity.Entity;
import net.minecraft.entity.LivingEntity;
Expand Down Expand Up @@ -97,22 +99,89 @@ public boolean hitEntity(ItemStack stack, LivingEntity target, LivingEntity atta

@Override
public boolean onBlockDestroyed(ItemStack stack, World worldIn, BlockState state, BlockPos pos, LivingEntity entityLiving) {
return super.onBlockDestroyed(stack, worldIn, state, pos, entityLiving);
if (worldIn.isRemote || !(entityLiving instanceof PlayerEntity)) {
return false;
}

if(SoulToolLevelHandler.hasLevelTags(stack)) {
if(effectiveBlocks.contains(state.getBlock()) || canHarvestBlock(state)) {
if(!SoulToolLevelHandler.isMaxToolLevel(stack)) {
SoulToolLevelHandler.addXp(stack, (PlayerEntity) entityLiving, entityLiving.getRNG().nextInt(6));
stack.damageItem(1, entityLiving, (event) -> {
event.sendBreakAnimation(entityLiving.getActiveHand());
});
} else {
stack.damageItem(0, entityLiving, (event) -> {
event.sendBreakAnimation(entityLiving.getActiveHand());
});
}
} else {
if(SoulToolLevelHandler.hasLevelTags(stack) && !SoulToolLevelHandler.isMaxToolLevel(stack)) {
stack.damageItem(1, entityLiving, (event) -> {
event.sendBreakAnimation(entityLiving.getActiveHand());
});
} else {
stack.damageItem(0, entityLiving, (event) -> {
event.sendBreakAnimation(entityLiving.getActiveHand());
});
}
}
}

return true;
}

@Override
public boolean getIsRepairable(ItemStack toRepair, ItemStack repair) {
return super.getIsRepairable(toRepair, repair);
return toRepair.getItem() instanceof BaseSoulTool && repair.getItem() == ModItems.SOUL_MATTER_COMPACT.get();
}

@Override
public int getHarvestLevel(ItemStack stack, ToolType tool, @Nullable PlayerEntity player, @Nullable BlockState blockState) {
return super.getHarvestLevel(stack, tool, player, blockState);
if(SoulToolLevelHandler.hasLevelTags(stack)) {
return getTier().getHarvestLevel() * SoulToolLevelHandler.getToolLevel(stack);
} else {
return getTier().getHarvestLevel();
}
}

@Override
public float getDestroySpeed(ItemStack stack, BlockState state) {
if(canHarvestBlock(state) && SoulToolLevelHandler.hasLevelTags(stack)) {
if(SoulToolLevelHandler.isMaxToolLevel(stack)) {
return getTier().getEfficiency() * SoulToolLevelHandler.getToolLevel(stack);
} else {
return getTier().getEfficiency();
}
}

return 1.0F;
}

@Override
public boolean canHarvestBlock(BlockState blockIn) {
return super.canHarvestBlock(blockIn);
public boolean canHarvestBlock(BlockState blockState) {
switch (toolName) {
case "pickaxe":
return effectiveBlocks.contains(blockState.getBlock()) ||
blockState.getMaterial() == Material.ROCK ||
blockState.getMaterial() == Material.IRON ||
blockState.getMaterial() == Material.ANVIL;
case "axe":
return effectiveBlocks.contains(blockState.getBlock()) ||
blockState.getMaterial() != Material.WOOD &&
blockState.getMaterial() != Material.PLANTS &&
blockState.getMaterial() != Material.TALL_PLANTS &&
blockState.getMaterial() != Material.BAMBOO;
case "sword":
return effectiveBlocks.contains(blockState.getBlock()) || blockState.getBlock() == Blocks.COBWEB;
case "hammer":
return effectiveBlocks.contains(blockState.getBlock()) ||
blockState.getBlock() == Blocks.OBSIDIAN ? this.getTier().getHarvestLevel() == 3 : (blockState.getBlock() != Blocks.DIAMOND_BLOCK && blockState.getBlock() != Blocks.DIAMOND_ORE ? (blockState.getBlock() != Blocks.EMERALD_ORE && blockState.getBlock() != Blocks.EMERALD_BLOCK ? (blockState.getBlock() != Blocks.GOLD_BLOCK && blockState.getBlock() != Blocks.GOLD_ORE ? (blockState.getBlock() != Blocks.IRON_BLOCK && blockState.getBlock() != Blocks.IRON_DOOR ? (blockState.getBlock() != Blocks.LAPIS_BLOCK && blockState.getBlock() != Blocks.LAPIS_ORE ? (blockState.getBlock() != Blocks.REDSTONE_ORE && blockState.getBlock() != Blocks.REDSTONE_ORE ? (blockState.getMaterial() == Material.ROCK ? true : (blockState.getMaterial() == Material.IRON ? true : blockState.getMaterial() == Material.ANVIL)) : this.getTier().getHarvestLevel() >= 2) : this.getTier().getHarvestLevel() >= 1) : this.getTier().getHarvestLevel() >= 1) : this.getTier().getHarvestLevel() >= 2) : this.getTier().getHarvestLevel() >= 2) : this.getTier().getHarvestLevel() >= 2);
case "shovel":
return effectiveBlocks.contains(blockState.getBlock()) || blockState.getMaterial() == Material.EARTH || blockState.getMaterial() == Material.ORGANIC || blockState.getMaterial() == Material.SAND || blockState.getMaterial() == Material.SNOW || blockState.getMaterial() == Material.SNOW_BLOCK;
default:
return super.canHarvestBlock(blockState);
}
}

@Override
Expand Down

0 comments on commit 6a573e2

Please sign in to comment.