mirror of
https://github.com/SquidDev-CC/CC-Tweaked
synced 2025-10-23 01:47:38 +00:00
Use tags to what items turtle.place() can .use()
In older versions we just used a hard-coded list of items and superclasses. This was somewhat ugly, and so in 1.19.3 I tried to make this code more generic. However, this has a lot of unintended consequences - for instance turtles can now throw ender pearls, which is definitely not intended! By using a tag, we can emulate the old behaviour, while still allowing modders and pack devs to add additional items if needed.
This commit is contained in:
@@ -8,7 +8,11 @@ package dan200.computercraft.api;
|
||||
import net.minecraft.core.registries.Registries;
|
||||
import net.minecraft.resources.ResourceLocation;
|
||||
import net.minecraft.tags.TagKey;
|
||||
import net.minecraft.world.InteractionHand;
|
||||
import net.minecraft.world.entity.player.Player;
|
||||
import net.minecraft.world.item.Item;
|
||||
import net.minecraft.world.item.context.UseOnContext;
|
||||
import net.minecraft.world.level.Level;
|
||||
import net.minecraft.world.level.block.Block;
|
||||
|
||||
/**
|
||||
@@ -21,6 +25,15 @@ public class ComputerCraftTags {
|
||||
public static final TagKey<Item> WIRED_MODEM = make("wired_modem");
|
||||
public static final TagKey<Item> MONITOR = make("monitor");
|
||||
|
||||
/**
|
||||
* Items which can be {@linkplain Item#use(Level, Player, InteractionHand) used} when calling
|
||||
* {@code turtle.place()}.
|
||||
* <p>
|
||||
* This does not cover items who handle placing inside {@link Item#useOn(UseOnContext)}, as that is always
|
||||
* called.
|
||||
*/
|
||||
public static final TagKey<Item> TURTLE_CAN_PLACE = make("turtle_can_place");
|
||||
|
||||
private static TagKey<Item> make(String name) {
|
||||
return TagKey.create(Registries.ITEM, new ResourceLocation(ComputerCraftAPI.MOD_ID, name));
|
||||
}
|
||||
|
Reference in New Issue
Block a user