diff --git a/src/main/generated/data/new_soviet/loot_tables/blocks/brown_tv.json b/src/main/generated/data/new_soviet/loot_tables/blocks/brown_tv.json deleted file mode 100644 index 24dae13..0000000 --- a/src/main/generated/data/new_soviet/loot_tables/blocks/brown_tv.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "bonus_rolls": 0.0, - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ], - "entries": [ - { - "type": "minecraft:item", - "name": "new_soviet:brown_tv" - } - ], - "rolls": 1.0 - } - ] -} \ No newline at end of file diff --git a/src/main/generated/data/new_soviet/loot_tables/blocks/red_tv.json b/src/main/generated/data/new_soviet/loot_tables/blocks/red_tv.json deleted file mode 100644 index ee1aae9..0000000 --- a/src/main/generated/data/new_soviet/loot_tables/blocks/red_tv.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "bonus_rolls": 0.0, - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ], - "entries": [ - { - "type": "minecraft:item", - "name": "new_soviet:red_tv" - } - ], - "rolls": 1.0 - } - ] -} \ No newline at end of file diff --git a/src/main/generated/data/new_soviet/loot_tables/blocks/tv.json b/src/main/generated/data/new_soviet/loot_tables/blocks/tv.json deleted file mode 100644 index 02b177c..0000000 --- a/src/main/generated/data/new_soviet/loot_tables/blocks/tv.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "bonus_rolls": 0.0, - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ], - "entries": [ - { - "type": "minecraft:item", - "name": "new_soviet:tv" - } - ], - "rolls": 1.0 - } - ] -} \ No newline at end of file diff --git a/src/main/java/su/a71/new_soviet/blocks/TVBlock.java b/src/main/java/su/a71/new_soviet/blocks/TVBlock.java index 022d7c2..ed6e012 100644 --- a/src/main/java/su/a71/new_soviet/blocks/TVBlock.java +++ b/src/main/java/su/a71/new_soviet/blocks/TVBlock.java @@ -3,11 +3,14 @@ package su.a71.new_soviet.blocks; import net.minecraft.block.*; import net.minecraft.block.entity.BlockEntity; import net.minecraft.block.piston.PistonBehavior; +import net.minecraft.client.item.TooltipContext; +import net.minecraft.entity.ItemEntity; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.entity.projectile.ProjectileEntity; import net.minecraft.fluid.FluidState; import net.minecraft.fluid.Fluids; import net.minecraft.item.ItemPlacementContext; +import net.minecraft.item.ItemStack; import net.minecraft.server.world.ServerWorld; import net.minecraft.sound.BlockSoundGroup; import net.minecraft.sound.SoundCategory; @@ -15,7 +18,9 @@ import net.minecraft.sound.SoundEvents; import net.minecraft.state.StateManager; import net.minecraft.state.property.BooleanProperty; import net.minecraft.state.property.Properties; +import net.minecraft.text.Text; import net.minecraft.util.ActionResult; +import net.minecraft.util.Formatting; import net.minecraft.util.Hand; import net.minecraft.util.hit.BlockHitResult; import net.minecraft.util.math.BlockPos; @@ -27,6 +32,7 @@ import net.minecraft.world.BlockView; import net.minecraft.world.World; import net.minecraft.world.WorldAccess; +import org.jetbrains.annotations.Nullable; import su.a71.new_soviet.entities.TVBlockEntity; import su.a71.new_soviet.registration.NSE_Sounds; import su.a71.new_soviet.util.Shapes; @@ -78,12 +84,13 @@ public class TVBlock extends HorizontalFacingBlock implements BlockEntityProvide @Override public BlockState getPlacementState(ItemPlacementContext ctx) { FluidState fluidState = ctx.getWorld().getFluidState(ctx.getBlockPos()); + boolean broken = ctx.getStack().getOrCreateNbt().getBoolean("broken"); return super.getPlacementState(ctx) .with(Properties.HORIZONTAL_FACING, ctx.getHorizontalPlayerFacing().getOpposite()) .with(WATERLOGGED, fluidState.getFluid() == Fluids.WATER) .with(ON, ctx.getWorld().isReceivingRedstonePower(ctx.getBlockPos())) .with(INVERTED, false) - .with(BROKEN, false); + .with(BROKEN, broken); } @Override @@ -152,6 +159,28 @@ public class TVBlock extends HorizontalFacingBlock implements BlockEntityProvide } } + @Override + public void onBreak(World world, BlockPos pos, BlockState state, PlayerEntity player) { + this.spawnBreakParticles(world, player, pos, state); + if (!world.isClient && !player.isCreative()) { + super.onBreak(world, pos, state, player); + + ItemStack itemStack = new ItemStack(this); + itemStack.getOrCreateNbt().putBoolean("broken", state.get(BROKEN)); + + world.spawnEntity(new ItemEntity(world, pos.getX(), pos.getY(), pos.getZ(), itemStack)); + } + } + + @Override + public void appendTooltip(ItemStack stack, @Nullable BlockView world, List tooltip, TooltipContext options) { + if (stack.getOrCreateNbt().getBoolean("broken")) { + tooltip.add(Text.translatable("block.new_soviet.tv.broken").formatted(Formatting.ITALIC, Formatting.GRAY)); + } + + super.appendTooltip(stack, world, tooltip, options); + } + static { SHAPE = new Shapes.HorizontalShapeLegacy(List.of( List.of(0.0, 0.0, 2.0, 16.0, 13.0, 13.0), diff --git a/src/main/java/su/a71/new_soviet/datagen/BlockLootTables.java b/src/main/java/su/a71/new_soviet/datagen/BlockLootTables.java index 1207a79..8f5fbe6 100644 --- a/src/main/java/su/a71/new_soviet/datagen/BlockLootTables.java +++ b/src/main/java/su/a71/new_soviet/datagen/BlockLootTables.java @@ -317,9 +317,6 @@ public class BlockLootTables extends FabricBlockLootTableProvider { addDrop(NSE_Custom.BLACK_BISHOP); addDrop(NSE_Custom.BLACK_ROOK); - addDrop(NSE_Custom.TV); - addDrop(NSE_Custom.RED_TV); - addDrop(NSE_Custom.BROWN_TV); addDrop(NSE_Custom.RADIO_RECEIVER); addDrop(NSE_Custom.SIREN); addDrop(NSE_Custom.TABLE_LAMP); diff --git a/src/main/resources/assets/new_soviet/lang/en_us.json b/src/main/resources/assets/new_soviet/lang/en_us.json index e42ee53..df07fae 100644 --- a/src/main/resources/assets/new_soviet/lang/en_us.json +++ b/src/main/resources/assets/new_soviet/lang/en_us.json @@ -150,6 +150,7 @@ "block.new_soviet.red_tv": "Red TV", "block.new_soviet.brown_tv": "Brown TV", "block.new_soviet.green_tv": "Green TV", + "block.new_soviet.tv.broken": "Broken", "block.new_soviet.radio_receiver": "Radio", "block.new_soviet.table_lamp": "Table Lamp", "block.new_soviet.ceiling_fan": "Ceiling Fan", diff --git a/src/main/resources/assets/new_soviet/lang/rpr.json b/src/main/resources/assets/new_soviet/lang/rpr.json index aa5c84e..f7a68ab 100644 --- a/src/main/resources/assets/new_soviet/lang/rpr.json +++ b/src/main/resources/assets/new_soviet/lang/rpr.json @@ -150,6 +150,7 @@ "block.new_soviet.red_tv": "Червонный тѣлѣвизоръ «Рѣкордъ В-312»", "block.new_soviet.brown_tv": "Корiчнѣвый тѣлѣвизоръ «Рѣкордъ В-312»", "block.new_soviet.green_tv": "Зѣлёный тѣлѣвизоръ «Рѣкордъ В-312»", + "block.new_soviet.tv.broken": "Сломанъ", "block.new_soviet.radio_receiver": "Радiопрiямнiкъ «Альпинiст»", "block.new_soviet.table_lamp": "Настольныя лампа", "block.new_soviet.ceiling_fan": "Потолочный вѣнтилятор", diff --git a/src/main/resources/assets/new_soviet/lang/ru_ru.json b/src/main/resources/assets/new_soviet/lang/ru_ru.json index 031d1ae..880f7cb 100644 --- a/src/main/resources/assets/new_soviet/lang/ru_ru.json +++ b/src/main/resources/assets/new_soviet/lang/ru_ru.json @@ -150,6 +150,7 @@ "block.new_soviet.red_tv": "Красный телевизор «Рекорд В-312»", "block.new_soviet.brown_tv": "Коричневый телевизор «Рекорд В-312»", "block.new_soviet.green_tv": "Зелёный телевизор «Рекорд В-312»", + "block.new_soviet.tv.broken": "Сломан", "block.new_soviet.radio_receiver": "Радиоприёмник «Альпинист»", "block.new_soviet.table_lamp": "Настольная лампа", "block.new_soviet.ceiling_fan": "Потолочный вентилятор",