Skip to content

Commit 39d4118

Browse files
committed
Fix issues with durability.
1 parent 0def6c4 commit 39d4118

File tree

2 files changed

+13
-4
lines changed

2 files changed

+13
-4
lines changed

src/main/java/platinpython/rgbblocks/dispenser/DispensePaintbucketBehaviour.java

+12-3
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import net.minecraft.core.Direction;
66
import net.minecraft.core.dispenser.DefaultDispenseItemBehavior;
77
import net.minecraft.world.item.ItemStack;
8+
import net.minecraft.world.item.Items;
89
import net.minecraft.world.level.block.Block;
910
import net.minecraft.world.level.block.DispenserBlock;
1011
import net.minecraft.world.level.block.entity.BlockEntity;
@@ -16,14 +17,22 @@ protected ItemStack execute(BlockSource source, ItemStack itemStack) {
1617
Direction dispenserFacing = source.getBlockState().getValue(DispenserBlock.FACING);
1718
BlockPos blockPos = source.getPos().relative(dispenserFacing);
1819
BlockEntity tileEntity = source.getLevel().getBlockEntity(blockPos);
19-
if (tileEntity instanceof RGBTileEntity) {
20-
((RGBTileEntity) tileEntity).setColor(itemStack.getTag().getInt("color"));
20+
if (tileEntity instanceof RGBTileEntity rgbTileEntity) {
21+
boolean broke = false;
22+
if (itemStack.getOrCreateTag().getInt("color") != rgbTileEntity.getColor()) {
23+
if (itemStack.getDamageValue() == itemStack.getMaxDamage() - 1) {
24+
broke = true;
25+
} else {
26+
itemStack.hurt(1, source.getLevel().random, null);
27+
}
28+
}
29+
rgbTileEntity.setColor(itemStack.getOrCreateTag().getInt("color"));
2130
source.getLevel()
2231
.sendBlockUpdated(blockPos,
2332
tileEntity.getBlockState(),
2433
tileEntity.getBlockState(),
2534
Block.UPDATE_ALL_IMMEDIATE);
26-
return itemStack;
35+
return broke ? new ItemStack(Items.BUCKET) : itemStack;
2736
} else {
2837
return super.execute(source, itemStack);
2938
}

src/main/java/platinpython/rgbblocks/item/PaintBucketItem.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -101,7 +101,7 @@ public InteractionResult useOn(UseOnContext context) {
101101
if (context.getPlayer().isShiftKeyDown()) {
102102
context.getItemInHand().getTag().putInt("color", ((RGBTileEntity) tileEntity).getColor());
103103
} else {
104-
if (context.getItemInHand().getOrCreateTag().getInt("color") !=
104+
if (!context.getPlayer().getAbilities().instabuild && context.getItemInHand().getOrCreateTag().getInt("color") !=
105105
((RGBTileEntity) tileEntity).getColor()) {
106106
if (context.getItemInHand().getDamageValue() == context.getItemInHand().getMaxDamage() - 1) {
107107
context.getPlayer().setItemInHand(context.getHand(), new ItemStack(Items.BUCKET));

0 commit comments

Comments
 (0)