1
0
mirror of https://github.com/SquidDev-CC/CC-Tweaked synced 2025-09-08 05:15:58 +00:00

Merge AbstractComputerItem and ComputerItem

ComputerItem was just an empty subclass, so no sense keeping around. We
probably could get rid of CommandComputerItem too (just do an `instanceof
GameMasterBlock` in `getPlacementState`), but there's no rush.
This commit is contained in:
Jonathan Coates
2025-02-16 21:12:35 +00:00
parent 0c04d9de47
commit fa33949113
5 changed files with 30 additions and 50 deletions

View File

@@ -35,9 +35,8 @@ import dan200.computercraft.shared.computer.blocks.ComputerBlockEntity;
import dan200.computercraft.shared.computer.core.ComputerFamily; import dan200.computercraft.shared.computer.core.ComputerFamily;
import dan200.computercraft.shared.computer.core.ServerComputer; import dan200.computercraft.shared.computer.core.ServerComputer;
import dan200.computercraft.shared.computer.inventory.ComputerMenuWithoutInventory; import dan200.computercraft.shared.computer.inventory.ComputerMenuWithoutInventory;
import dan200.computercraft.shared.computer.items.AbstractComputerItem;
import dan200.computercraft.shared.computer.items.CommandComputerItem;
import dan200.computercraft.shared.computer.items.ComputerItem; import dan200.computercraft.shared.computer.items.ComputerItem;
import dan200.computercraft.shared.computer.items.CommandComputerItem;
import dan200.computercraft.shared.computer.items.ServerComputerReference; import dan200.computercraft.shared.computer.items.ServerComputerReference;
import dan200.computercraft.shared.config.Config; import dan200.computercraft.shared.config.Config;
import dan200.computercraft.shared.data.BlockNamedEntityLootCondition; import dan200.computercraft.shared.data.BlockNamedEntityLootCondition;
@@ -317,7 +316,7 @@ public final class ModRegistry {
/** /**
* The id of a computer. * The id of a computer.
* *
* @see AbstractComputerItem * @see ComputerItem
* @see PocketComputerItem * @see PocketComputerItem
*/ */
public static final RegistryEntry<DataComponentType<NonNegativeId>> COMPUTER_ID = register("computer_id", b -> b public static final RegistryEntry<DataComponentType<NonNegativeId>> COMPUTER_ID = register("computer_id", b -> b
@@ -327,7 +326,7 @@ public final class ModRegistry {
/** /**
* The storage capacity of a computer or disk. * The storage capacity of a computer or disk.
* *
* @see AbstractComputerItem * @see ComputerItem
* @see PocketComputerItem * @see PocketComputerItem
* @see DiskItem * @see DiskItem
*/ */

View File

@@ -1,33 +0,0 @@
// Copyright Daniel Ratcliffe, 2011-2022. Do not distribute without permission.
//
// SPDX-License-Identifier: LicenseRef-CCPL
package dan200.computercraft.shared.computer.items;
import dan200.computercraft.shared.ModRegistry;
import dan200.computercraft.shared.computer.blocks.AbstractComputerBlock;
import net.minecraft.ChatFormatting;
import net.minecraft.core.component.DataComponents;
import net.minecraft.network.chat.Component;
import net.minecraft.world.item.BlockItem;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.TooltipFlag;
import java.util.List;
public class AbstractComputerItem extends BlockItem {
public AbstractComputerItem(AbstractComputerBlock<?> block, Properties settings) {
super(block, settings);
}
@Override
public void appendHoverText(ItemStack stack, TooltipContext context, List<Component> list, TooltipFlag options) {
if (options.isAdvanced() || !stack.has(DataComponents.CUSTOM_NAME)) {
var id = stack.get(ModRegistry.DataComponents.COMPUTER_ID.get());
if (id != null) {
list.add(Component.translatable("gui.computercraft.tooltip.computer_id", id.id())
.withStyle(ChatFormatting.GRAY));
}
}
}
}

View File

@@ -4,11 +4,30 @@
package dan200.computercraft.shared.computer.items; package dan200.computercraft.shared.computer.items;
import dan200.computercraft.shared.computer.blocks.ComputerBlock; import dan200.computercraft.shared.ModRegistry;
import dan200.computercraft.shared.computer.blocks.AbstractComputerBlock;
import net.minecraft.ChatFormatting;
import net.minecraft.core.component.DataComponents;
import net.minecraft.network.chat.Component;
import net.minecraft.world.item.BlockItem;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.TooltipFlag;
public class ComputerItem extends AbstractComputerItem { import java.util.List;
// TODO: Do we deprecate this?
public ComputerItem(ComputerBlock<?> block, Properties settings) { public class ComputerItem extends BlockItem {
public ComputerItem(AbstractComputerBlock<?> block, Properties settings) {
super(block, settings); super(block, settings);
} }
@Override
public void appendHoverText(ItemStack stack, TooltipContext context, List<Component> list, TooltipFlag options) {
if (options.isAdvanced() || !stack.has(DataComponents.CUSTOM_NAME)) {
var id = stack.get(ModRegistry.DataComponents.COMPUTER_ID.get());
if (id != null) {
list.add(Component.translatable("gui.computercraft.tooltip.computer_id", id.id())
.withStyle(ChatFormatting.GRAY));
}
}
}
} }

View File

@@ -8,7 +8,7 @@ import dan200.computercraft.api.ComputerCraftAPI;
import dan200.computercraft.api.filesystem.Mount; import dan200.computercraft.api.filesystem.Mount;
import dan200.computercraft.api.media.IMedia; import dan200.computercraft.api.media.IMedia;
import dan200.computercraft.shared.ModRegistry; import dan200.computercraft.shared.ModRegistry;
import dan200.computercraft.shared.computer.items.AbstractComputerItem; import dan200.computercraft.shared.computer.items.ComputerItem;
import dan200.computercraft.shared.config.ConfigSpec; import dan200.computercraft.shared.config.ConfigSpec;
import dan200.computercraft.shared.media.items.DiskItem; import dan200.computercraft.shared.media.items.DiskItem;
import dan200.computercraft.shared.util.DataComponentUtil; import dan200.computercraft.shared.util.DataComponentUtil;
@@ -27,7 +27,7 @@ import java.util.function.Supplier;
*/ */
public final class MountMedia implements IMedia { public final class MountMedia implements IMedia {
/** /**
* A {@link MountMedia} implementation for {@linkplain AbstractComputerItem computers}. * A {@link MountMedia} implementation for {@linkplain ComputerItem computers}.
*/ */
public static final IMedia COMPUTER = new MountMedia("computer", ModRegistry.DataComponents.COMPUTER_ID, false, ConfigSpec.computerSpaceLimit); public static final IMedia COMPUTER = new MountMedia("computer", ModRegistry.DataComponents.COMPUTER_ID, false, ConfigSpec.computerSpaceLimit);

View File

@@ -11,7 +11,7 @@ import dan200.computercraft.api.turtle.TurtleSide;
import dan200.computercraft.api.upgrades.UpgradeData; import dan200.computercraft.api.upgrades.UpgradeData;
import dan200.computercraft.impl.TurtleUpgrades; import dan200.computercraft.impl.TurtleUpgrades;
import dan200.computercraft.shared.ModRegistry; import dan200.computercraft.shared.ModRegistry;
import dan200.computercraft.shared.computer.items.AbstractComputerItem; import dan200.computercraft.shared.computer.items.ComputerItem;
import dan200.computercraft.shared.turtle.TurtleOverlay; import dan200.computercraft.shared.turtle.TurtleOverlay;
import dan200.computercraft.shared.turtle.blocks.TurtleBlock; import dan200.computercraft.shared.turtle.blocks.TurtleBlock;
import net.minecraft.core.cauldron.CauldronInteraction; import net.minecraft.core.cauldron.CauldronInteraction;
@@ -22,7 +22,7 @@ import net.minecraft.world.item.ItemStack;
import net.minecraft.world.level.block.LayeredCauldronBlock; import net.minecraft.world.level.block.LayeredCauldronBlock;
import org.jspecify.annotations.Nullable; import org.jspecify.annotations.Nullable;
public class TurtleItem extends AbstractComputerItem { public class TurtleItem extends ComputerItem {
public TurtleItem(TurtleBlock block, Properties settings) { public TurtleItem(TurtleBlock block, Properties settings) {
super(block, settings); super(block, settings);
} }
@@ -78,11 +78,6 @@ public class TurtleItem extends AbstractComputerItem {
return overlay == null ? null : overlay.value(); return overlay == null ? null : overlay.value();
} }
public static int getFuelLevel(ItemStack stack) {
var fuel = stack.get(ModRegistry.DataComponents.FUEL.get());
return fuel == null ? 0 : fuel;
}
public static final CauldronInteraction CAULDRON_INTERACTION = (blockState, level, pos, player, hand, stack) -> { public static final CauldronInteraction CAULDRON_INTERACTION = (blockState, level, pos, player, hand, stack) -> {
if (!stack.has(DataComponents.DYED_COLOR)) return ItemInteractionResult.PASS_TO_DEFAULT_BLOCK_INTERACTION; if (!stack.has(DataComponents.DYED_COLOR)) return ItemInteractionResult.PASS_TO_DEFAULT_BLOCK_INTERACTION;
if (!level.isClientSide) { if (!level.isClientSide) {