Overlays
This commit is contained in:
@@ -1,11 +1,10 @@
|
|||||||
package io.github.skippyall.minions;
|
package io.github.skippyall.minions;
|
||||||
|
|
||||||
import eu.pb4.polymer.resourcepack.api.PolymerResourcePackUtils;
|
|
||||||
import io.github.skippyall.minions.command.MinionsCommand;
|
import io.github.skippyall.minions.command.MinionsCommand;
|
||||||
import io.github.skippyall.minions.docs.DocsManager;
|
import io.github.skippyall.minions.docs.DocsManager;
|
||||||
import io.github.skippyall.minions.minion.MinionPersistentState;
|
import io.github.skippyall.minions.minion.MinionPersistentState;
|
||||||
import io.github.skippyall.minions.minion.fakeplayer.MinionFakePlayer;
|
import io.github.skippyall.minions.minion.fakeplayer.MinionFakePlayer;
|
||||||
import io.github.skippyall.minions.polymer.VersionSync;
|
import io.github.skippyall.minions.polymer.PolymerRegistration;
|
||||||
import io.github.skippyall.minions.registration.MinionRegistration;
|
import io.github.skippyall.minions.registration.MinionRegistration;
|
||||||
import net.fabricmc.api.ModInitializer;
|
import net.fabricmc.api.ModInitializer;
|
||||||
import net.fabricmc.fabric.api.command.v2.CommandRegistrationCallback;
|
import net.fabricmc.fabric.api.command.v2.CommandRegistrationCallback;
|
||||||
@@ -27,8 +26,6 @@ public class Minions implements ModInitializer {
|
|||||||
|
|
||||||
MinionRegistration.register();
|
MinionRegistration.register();
|
||||||
|
|
||||||
VersionSync.register();
|
|
||||||
|
|
||||||
ServerLifecycleEvents.SERVER_STARTED.register(server -> {
|
ServerLifecycleEvents.SERVER_STARTED.register(server -> {
|
||||||
MinionPersistentState.get(server).getMinionData().forEach((uuid, data) -> {
|
MinionPersistentState.get(server).getMinionData().forEach((uuid, data) -> {
|
||||||
if(data.isSpawned()) {
|
if(data.isSpawned()) {
|
||||||
@@ -39,7 +36,7 @@ public class Minions implements ModInitializer {
|
|||||||
|
|
||||||
CommandRegistrationCallback.EVENT.register(MinionsCommand::register);
|
CommandRegistrationCallback.EVENT.register(MinionsCommand::register);
|
||||||
|
|
||||||
PolymerResourcePackUtils.addModAssets(Minions.MOD_ID);
|
PolymerRegistration.register();
|
||||||
|
|
||||||
ResourceLoader.get(PackType.SERVER_DATA).registerReloadListener(Identifier.fromNamespaceAndPath(Minions.MOD_ID, "docs"), new DocsManager());
|
ResourceLoader.get(PackType.SERVER_DATA).registerReloadListener(Identifier.fromNamespaceAndPath(Minions.MOD_ID, "docs"), new DocsManager());
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,36 +0,0 @@
|
|||||||
package io.github.skippyall.minions.block;
|
|
||||||
|
|
||||||
import eu.pb4.polymer.core.api.item.PolymerBlockItem;
|
|
||||||
import eu.pb4.polymer.resourcepack.api.PolymerResourcePackUtils;
|
|
||||||
import io.github.skippyall.minions.polymer.VersionSync;
|
|
||||||
import net.fabricmc.fabric.api.networking.v1.context.PacketContext;
|
|
||||||
import net.minecraft.core.HolderLookup;
|
|
||||||
import net.minecraft.resources.Identifier;
|
|
||||||
import net.minecraft.world.item.Item;
|
|
||||||
import net.minecraft.world.item.ItemStack;
|
|
||||||
import net.minecraft.world.level.block.Block;
|
|
||||||
import org.jspecify.annotations.Nullable;
|
|
||||||
|
|
||||||
public class MinionsBlockItem extends PolymerBlockItem {
|
|
||||||
public MinionsBlockItem(Block block, Properties settings, Item polymerItem) {
|
|
||||||
super(block, settings, polymerItem, true);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Item getPolymerItem(ItemStack itemStack, PacketContext context) {
|
|
||||||
if(VersionSync.isOnClient(context)) {
|
|
||||||
return this;
|
|
||||||
} else {
|
|
||||||
return super.getPolymerItem(itemStack, context);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public @Nullable Identifier getPolymerItemModel(ItemStack stack, PacketContext context, HolderLookup.Provider lookup) {
|
|
||||||
if(PolymerResourcePackUtils.hasMainPack(context)) {
|
|
||||||
return super.getPolymerItemModel(stack, context, lookup);
|
|
||||||
} else {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
+1
-50
@@ -1,32 +1,14 @@
|
|||||||
package io.github.skippyall.minions.block.miniontrigger;
|
package io.github.skippyall.minions.block.miniontrigger;
|
||||||
|
|
||||||
import com.mojang.serialization.MapCodec;
|
import com.mojang.serialization.MapCodec;
|
||||||
import eu.pb4.polymer.core.api.block.PolymerBlock;
|
|
||||||
import eu.pb4.polymer.core.api.utils.PolymerClientDecoded;
|
|
||||||
import eu.pb4.polymer.resourcepack.api.PolymerResourcePackUtils;
|
|
||||||
import eu.pb4.polymer.virtualentity.api.BlockWithElementHolder;
|
|
||||||
import eu.pb4.polymer.virtualentity.api.ElementHolder;
|
|
||||||
import eu.pb4.polymer.virtualentity.api.elements.ItemDisplayElement;
|
|
||||||
import io.github.skippyall.minions.Minions;
|
|
||||||
import io.github.skippyall.minions.block.instruction_bound.InstructionBoundBlock;
|
import io.github.skippyall.minions.block.instruction_bound.InstructionBoundBlock;
|
||||||
import io.github.skippyall.minions.polymer.VersionSync;
|
|
||||||
import io.github.skippyall.minions.registration.MinionBlocks;
|
import io.github.skippyall.minions.registration.MinionBlocks;
|
||||||
import net.fabricmc.fabric.api.networking.v1.context.PacketContext;
|
|
||||||
import net.minecraft.core.BlockPos;
|
import net.minecraft.core.BlockPos;
|
||||||
import net.minecraft.core.Direction;
|
import net.minecraft.core.Direction;
|
||||||
import net.minecraft.core.component.DataComponents;
|
|
||||||
import net.minecraft.resources.Identifier;
|
|
||||||
import net.minecraft.server.level.ServerLevel;
|
|
||||||
import net.minecraft.server.level.ServerPlayer;
|
|
||||||
import net.minecraft.server.network.ServerGamePacketListenerImpl;
|
|
||||||
import net.minecraft.world.item.ItemDisplayContext;
|
|
||||||
import net.minecraft.world.item.ItemStack;
|
|
||||||
import net.minecraft.world.item.Items;
|
|
||||||
import net.minecraft.world.level.BlockGetter;
|
import net.minecraft.world.level.BlockGetter;
|
||||||
import net.minecraft.world.level.Level;
|
import net.minecraft.world.level.Level;
|
||||||
import net.minecraft.world.level.LevelReader;
|
import net.minecraft.world.level.LevelReader;
|
||||||
import net.minecraft.world.level.block.Block;
|
import net.minecraft.world.level.block.Block;
|
||||||
import net.minecraft.world.level.block.DiodeBlock;
|
|
||||||
import net.minecraft.world.level.block.SupportType;
|
import net.minecraft.world.level.block.SupportType;
|
||||||
import net.minecraft.world.level.block.entity.BlockEntity;
|
import net.minecraft.world.level.block.entity.BlockEntity;
|
||||||
import net.minecraft.world.level.block.entity.BlockEntityType;
|
import net.minecraft.world.level.block.entity.BlockEntityType;
|
||||||
@@ -39,7 +21,7 @@ import net.minecraft.world.phys.shapes.VoxelShape;
|
|||||||
import org.jspecify.annotations.NullMarked;
|
import org.jspecify.annotations.NullMarked;
|
||||||
import org.jspecify.annotations.Nullable;
|
import org.jspecify.annotations.Nullable;
|
||||||
|
|
||||||
public class MinionTriggerBlock extends InstructionBoundBlock implements PolymerBlock, PolymerClientDecoded, BlockWithElementHolder {
|
public class MinionTriggerBlock extends InstructionBoundBlock {
|
||||||
public static final MapCodec<MinionTriggerBlock> CODEC = simpleCodec(MinionTriggerBlock::new);
|
public static final MapCodec<MinionTriggerBlock> CODEC = simpleCodec(MinionTriggerBlock::new);
|
||||||
|
|
||||||
public static final BooleanProperty POWERED = BooleanProperty.create("powered");
|
public static final BooleanProperty POWERED = BooleanProperty.create("powered");
|
||||||
@@ -105,35 +87,4 @@ public class MinionTriggerBlock extends InstructionBoundBlock implements Polymer
|
|||||||
protected BlockEntityType<MinionTriggerBlockEntity> getBlockEntityType() {
|
protected BlockEntityType<MinionTriggerBlockEntity> getBlockEntityType() {
|
||||||
return MinionBlocks.MINION_TRIGGER_BE_TYPE;
|
return MinionBlocks.MINION_TRIGGER_BE_TYPE;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public BlockState getPolymerBlockState(BlockState state, @Nullable PacketContext context) {
|
|
||||||
return VersionSync.isOnClient(context) ? state : net.minecraft.world.level.block.Blocks.COMPARATOR.defaultBlockState().setValue(DiodeBlock.POWERED, state.getValue(POWERED));
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean handleMiningOnServer(ItemStack tool, BlockState state, BlockPos pos, ServerPlayer player) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public @Nullable ElementHolder createElementHolder(ServerLevel world, BlockPos pos, BlockState initialBlockState) {
|
|
||||||
ElementHolder holder = new ElementHolder() {
|
|
||||||
@Override
|
|
||||||
public boolean startWatching(ServerGamePacketListenerImpl player) {
|
|
||||||
if(PolymerResourcePackUtils.hasMainPack(player) && !VersionSync.isOnClient(player)) {
|
|
||||||
return super.startWatching(player);
|
|
||||||
} else {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
ItemStack stack = new ItemStack(Items.BARRIER);
|
|
||||||
stack.set(DataComponents.ITEM_MODEL, Identifier.fromNamespaceAndPath(Minions.MOD_ID, "minion_trigger_no_plate_" + (initialBlockState.getValue(MinionTriggerBlock.POWERED) ? "active" : "inactive")));
|
|
||||||
|
|
||||||
ItemDisplayElement element = new ItemDisplayElement(stack);
|
|
||||||
element.setItemDisplayContext(ItemDisplayContext.NONE);
|
|
||||||
holder.addElement(element);
|
|
||||||
return holder;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,42 +1,13 @@
|
|||||||
package io.github.skippyall.minions.clipboard;
|
package io.github.skippyall.minions.clipboard;
|
||||||
|
|
||||||
import eu.pb4.polymer.core.api.item.PolymerItem;
|
|
||||||
import io.github.skippyall.minions.minion.fakeplayer.MinionFakePlayer;
|
import io.github.skippyall.minions.minion.fakeplayer.MinionFakePlayer;
|
||||||
import io.github.skippyall.minions.registration.MinionComponentTypes;
|
import io.github.skippyall.minions.registration.MinionComponentTypes;
|
||||||
import io.github.skippyall.minions.registration.MinionItems;
|
import io.github.skippyall.minions.registration.MinionItems;
|
||||||
import net.fabricmc.fabric.api.networking.v1.context.PacketContext;
|
|
||||||
import net.minecraft.core.BlockPos;
|
import net.minecraft.core.BlockPos;
|
||||||
import net.minecraft.core.HolderLookup;
|
|
||||||
import net.minecraft.core.component.DataComponents;
|
|
||||||
import net.minecraft.resources.Identifier;
|
|
||||||
import net.minecraft.world.item.Item;
|
|
||||||
import net.minecraft.world.item.ItemStack;
|
import net.minecraft.world.item.ItemStack;
|
||||||
import net.minecraft.world.item.Items;
|
|
||||||
import net.minecraft.world.item.TooltipFlag;
|
|
||||||
import net.minecraft.world.level.Level;
|
import net.minecraft.world.level.Level;
|
||||||
import org.jspecify.annotations.Nullable;
|
|
||||||
|
|
||||||
public class ClipboardItem extends Item implements PolymerItem {
|
public class ClipboardItem {
|
||||||
public ClipboardItem(Properties settings) {
|
|
||||||
super(settings);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Item getPolymerItem(ItemStack itemStack, PacketContext context) {
|
|
||||||
return /*VersionSync.isOnClient(context) ? this : */Items.PAPER;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public @Nullable Identifier getPolymerItemModel(ItemStack stack, PacketContext context, HolderLookup.Provider lookup) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public ItemStack getPolymerItemStack(ItemStack itemStack, TooltipFlag tooltipType, PacketContext context, HolderLookup.Provider lookup) {
|
|
||||||
ItemStack stack = PolymerItem.super.getPolymerItemStack(itemStack, tooltipType, context, lookup);
|
|
||||||
stack.set(DataComponents.ENCHANTMENT_GLINT_OVERRIDE, true);
|
|
||||||
return stack;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static ItemStack createInstructionReference(MinionFakePlayer minion, String instructionName) {
|
public static ItemStack createInstructionReference(MinionFakePlayer minion, String instructionName) {
|
||||||
ItemStack stack = new ItemStack(MinionItems.REFERENCE_ITEM);
|
ItemStack stack = new ItemStack(MinionItems.REFERENCE_ITEM);
|
||||||
|
|||||||
@@ -1,13 +1,8 @@
|
|||||||
package io.github.skippyall.minions.minion;
|
package io.github.skippyall.minions.minion;
|
||||||
|
|
||||||
import eu.pb4.polymer.core.api.item.PolymerItem;
|
|
||||||
import io.github.skippyall.minions.gui.MinionLookGui;
|
import io.github.skippyall.minions.gui.MinionLookGui;
|
||||||
import io.github.skippyall.minions.minion.fakeplayer.MinionFakePlayer;
|
import io.github.skippyall.minions.minion.fakeplayer.MinionFakePlayer;
|
||||||
import io.github.skippyall.minions.registration.MinionComponentTypes;
|
import io.github.skippyall.minions.registration.MinionComponentTypes;
|
||||||
import net.fabricmc.fabric.api.networking.v1.context.PacketContext;
|
|
||||||
import net.minecraft.core.HolderLookup;
|
|
||||||
import net.minecraft.core.component.DataComponents;
|
|
||||||
import net.minecraft.resources.Identifier;
|
|
||||||
import net.minecraft.server.MinecraftServer;
|
import net.minecraft.server.MinecraftServer;
|
||||||
import net.minecraft.server.level.ServerLevel;
|
import net.minecraft.server.level.ServerLevel;
|
||||||
import net.minecraft.server.level.ServerPlayer;
|
import net.minecraft.server.level.ServerPlayer;
|
||||||
@@ -16,35 +11,16 @@ import net.minecraft.world.InteractionResult;
|
|||||||
import net.minecraft.world.entity.player.Player;
|
import net.minecraft.world.entity.player.Player;
|
||||||
import net.minecraft.world.item.Item;
|
import net.minecraft.world.item.Item;
|
||||||
import net.minecraft.world.item.ItemStack;
|
import net.minecraft.world.item.ItemStack;
|
||||||
import net.minecraft.world.item.Items;
|
|
||||||
import net.minecraft.world.item.TooltipFlag;
|
|
||||||
import net.minecraft.world.item.context.UseOnContext;
|
import net.minecraft.world.item.context.UseOnContext;
|
||||||
import net.minecraft.world.level.Level;
|
import net.minecraft.world.level.Level;
|
||||||
import net.minecraft.world.phys.Vec2;
|
import net.minecraft.world.phys.Vec2;
|
||||||
import org.jspecify.annotations.Nullable;
|
import org.jspecify.annotations.Nullable;
|
||||||
|
|
||||||
public class MinionItem extends Item implements PolymerItem {
|
public class MinionItem extends Item {
|
||||||
public MinionItem(Properties settings) {
|
public MinionItem(Properties settings) {
|
||||||
super(settings);
|
super(settings);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public @Nullable Identifier getPolymerItemModel(ItemStack stack, PacketContext context, HolderLookup.Provider lookup) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Item getPolymerItem(ItemStack itemStack, PacketContext player) {
|
|
||||||
return Items.ARMOR_STAND;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public ItemStack getPolymerItemStack(ItemStack stack, TooltipFlag tooltipType, PacketContext player, HolderLookup.Provider lookup) {
|
|
||||||
ItemStack out = PolymerItem.super.getPolymerItemStack(stack, tooltipType, player, lookup);
|
|
||||||
out.set(DataComponents.ENCHANTMENT_GLINT_OVERRIDE, true);
|
|
||||||
return out;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*@Override
|
/*@Override
|
||||||
public void appendHoverText(ItemStack stack, TooltipContext context, TooltipDisplay component, Consumer<Component> tooltip, TooltipFlag type) {
|
public void appendHoverText(ItemStack stack, TooltipContext context, TooltipDisplay component, Consumer<Component> tooltip, TooltipFlag type) {
|
||||||
//MinionData data = getData(stack);
|
//MinionData data = getData(stack);
|
||||||
|
|||||||
@@ -0,0 +1,67 @@
|
|||||||
|
package io.github.skippyall.minions.polymer;
|
||||||
|
|
||||||
|
import eu.pb4.polymer.core.api.block.PolymerBlock;
|
||||||
|
import eu.pb4.polymer.core.api.block.PolymerBlockUtils;
|
||||||
|
import eu.pb4.polymer.core.api.item.PolymerCreativeModeTabUtils;
|
||||||
|
import eu.pb4.polymer.core.api.item.PolymerItem;
|
||||||
|
import eu.pb4.polymer.core.api.other.PolymerComponent;
|
||||||
|
import eu.pb4.polymer.resourcepack.api.PolymerResourcePackUtils;
|
||||||
|
import eu.pb4.polymer.virtualentity.api.BlockWithElementHolder;
|
||||||
|
import io.github.skippyall.minions.Minions;
|
||||||
|
import io.github.skippyall.minions.polymer.block.AnalogInputBlockOverlay;
|
||||||
|
import io.github.skippyall.minions.polymer.block.MinionTriggerBlockOverlay;
|
||||||
|
import io.github.skippyall.minions.polymer.item.ClipboardItemOverlay;
|
||||||
|
import io.github.skippyall.minions.polymer.item.MinionItemOverlay;
|
||||||
|
import io.github.skippyall.minions.polymer.item.MinionsBlockItemOverlay;
|
||||||
|
import io.github.skippyall.minions.polymer.item.SimpleItemOverlay;
|
||||||
|
import io.github.skippyall.minions.registration.MinionBlocks;
|
||||||
|
import io.github.skippyall.minions.registration.MinionComponentTypes;
|
||||||
|
import io.github.skippyall.minions.registration.MinionCreativeTab;
|
||||||
|
import io.github.skippyall.minions.registration.MinionItems;
|
||||||
|
import net.minecraft.resources.Identifier;
|
||||||
|
import net.minecraft.world.item.Item;
|
||||||
|
import net.minecraft.world.item.Items;
|
||||||
|
import net.minecraft.world.level.block.Block;
|
||||||
|
|
||||||
|
public class PolymerRegistration {
|
||||||
|
public static void register() {
|
||||||
|
VersionSync.register();
|
||||||
|
PolymerResourcePackUtils.addModAssets(Minions.MOD_ID);
|
||||||
|
|
||||||
|
registerBlockOverlay(MinionBlocks.MINION_TRIGGER_BLOCK, new MinionTriggerBlockOverlay());
|
||||||
|
PolymerBlockUtils.registerBlockEntity(MinionBlocks.MINION_TRIGGER_BE_TYPE);
|
||||||
|
registerBlockOverlay(MinionBlocks.ANALOG_INPUT_BLOCK, new AnalogInputBlockOverlay());
|
||||||
|
|
||||||
|
registerItemOverlay(MinionItems.MINION_TRIGGER_ITEM, new MinionsBlockItemOverlay(MinionItems.MINION_TRIGGER_ITEM, Items.COMPARATOR));
|
||||||
|
registerItemOverlay(MinionItems.ANALOG_INPUT_ITEM, new MinionsBlockItemOverlay(MinionItems.ANALOG_INPUT_ITEM, Items.REPEATER));
|
||||||
|
|
||||||
|
registerItemOverlay(MinionItems.REFERENCE_ITEM, new ClipboardItemOverlay());
|
||||||
|
registerItemOverlay(MinionItems.MINION_ITEM, new MinionItemOverlay());
|
||||||
|
registerSimpleItemOverlay(MinionItems.BASIC_UPGRADE_BASE, Items.NETHERITE_UPGRADE_SMITHING_TEMPLATE);
|
||||||
|
registerSimpleItemOverlay(MinionItems.ADVANCED_UPGRADE_BASE, Items.NETHERITE_UPGRADE_SMITHING_TEMPLATE);
|
||||||
|
registerSimpleItemOverlay(MinionItems.MOVE_MODULE, Items.IRON_BOOTS);
|
||||||
|
registerSimpleItemOverlay(MinionItems.ATTACK_MODULE, Items.IRON_PICKAXE);
|
||||||
|
registerSimpleItemOverlay(MinionItems.INTERACT_MODULE, Items.LEVER);
|
||||||
|
registerSimpleItemOverlay(MinionItems.MOB_SPAWNING_MODULE, Items.SPAWNER);
|
||||||
|
|
||||||
|
PolymerComponent.registerDataComponent(MinionComponentTypes.MINION_DATA, MinionComponentTypes.REFERENCE, MinionComponentTypes.MODULE);
|
||||||
|
|
||||||
|
PolymerCreativeModeTabUtils.registerPolymerCreativeModeTab(Identifier.fromNamespaceAndPath(Minions.MOD_ID, "main"), MinionCreativeTab.group);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void registerBlockOverlay(Block block, PolymerBlock overlay) {
|
||||||
|
PolymerBlock.registerOverlay(block, overlay);
|
||||||
|
|
||||||
|
if(overlay instanceof BlockWithElementHolder elementHolderOverlay) {
|
||||||
|
BlockWithElementHolder.registerOverlay(block, elementHolderOverlay);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void registerItemOverlay(Item item, PolymerItem overlay) {
|
||||||
|
PolymerItem.registerOverlay(item, overlay);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void registerSimpleItemOverlay(Item serverItem, Item polymerItem) {
|
||||||
|
registerItemOverlay(serverItem, SimpleItemOverlay.withoutModel(serverItem, polymerItem));
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
package io.github.skippyall.minions.polymer.block;
|
||||||
|
|
||||||
|
import eu.pb4.polymer.core.api.block.PolymerBlock;
|
||||||
|
import net.fabricmc.fabric.api.networking.v1.context.PacketContext;
|
||||||
|
import net.minecraft.world.level.block.Blocks;
|
||||||
|
import net.minecraft.world.level.block.state.BlockState;
|
||||||
|
import org.jspecify.annotations.Nullable;
|
||||||
|
|
||||||
|
public class AnalogInputBlockOverlay implements PolymerBlock {
|
||||||
|
@Override
|
||||||
|
public BlockState getPolymerBlockState(BlockState blockState, @Nullable PacketContext packetContext) {
|
||||||
|
return Blocks.AMETHYST_BLOCK.defaultBlockState();
|
||||||
|
}
|
||||||
|
}
|
||||||
+57
@@ -0,0 +1,57 @@
|
|||||||
|
package io.github.skippyall.minions.polymer.block;
|
||||||
|
|
||||||
|
import eu.pb4.polymer.core.api.block.PolymerBlock;
|
||||||
|
import eu.pb4.polymer.core.api.utils.PolymerClientDecoded;
|
||||||
|
import eu.pb4.polymer.resourcepack.api.PolymerResourcePackUtils;
|
||||||
|
import eu.pb4.polymer.virtualentity.api.BlockWithElementHolder;
|
||||||
|
import eu.pb4.polymer.virtualentity.api.ElementHolder;
|
||||||
|
import eu.pb4.polymer.virtualentity.api.elements.ItemDisplayElement;
|
||||||
|
import io.github.skippyall.minions.Minions;
|
||||||
|
import io.github.skippyall.minions.block.miniontrigger.MinionTriggerBlock;
|
||||||
|
import io.github.skippyall.minions.polymer.VersionSync;
|
||||||
|
import net.fabricmc.fabric.api.networking.v1.context.PacketContext;
|
||||||
|
import net.minecraft.core.BlockPos;
|
||||||
|
import net.minecraft.core.component.DataComponents;
|
||||||
|
import net.minecraft.resources.Identifier;
|
||||||
|
import net.minecraft.server.level.ServerLevel;
|
||||||
|
import net.minecraft.server.level.ServerPlayer;
|
||||||
|
import net.minecraft.server.network.ServerGamePacketListenerImpl;
|
||||||
|
import net.minecraft.world.item.ItemDisplayContext;
|
||||||
|
import net.minecraft.world.item.ItemStack;
|
||||||
|
import net.minecraft.world.item.Items;
|
||||||
|
import net.minecraft.world.level.block.DiodeBlock;
|
||||||
|
import net.minecraft.world.level.block.state.BlockState;
|
||||||
|
import org.jspecify.annotations.Nullable;
|
||||||
|
|
||||||
|
public class MinionTriggerBlockOverlay implements PolymerBlock, PolymerClientDecoded, BlockWithElementHolder {
|
||||||
|
@Override
|
||||||
|
public BlockState getPolymerBlockState(BlockState state, @Nullable PacketContext context) {
|
||||||
|
return VersionSync.isOnClient(context) ? state : net.minecraft.world.level.block.Blocks.COMPARATOR.defaultBlockState().setValue(DiodeBlock.POWERED, state.getValue(MinionTriggerBlock.POWERED));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean handleMiningOnServer(ItemStack tool, BlockState state, BlockPos pos, ServerPlayer player) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public @Nullable ElementHolder createElementHolder(ServerLevel world, BlockPos pos, BlockState initialBlockState) {
|
||||||
|
ElementHolder holder = new ElementHolder() {
|
||||||
|
@Override
|
||||||
|
public boolean startWatching(ServerGamePacketListenerImpl player) {
|
||||||
|
if(PolymerResourcePackUtils.hasMainPack(player) && !VersionSync.isOnClient(player)) {
|
||||||
|
return super.startWatching(player);
|
||||||
|
} else {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
ItemStack stack = new ItemStack(Items.BARRIER);
|
||||||
|
stack.set(DataComponents.ITEM_MODEL, Identifier.fromNamespaceAndPath(Minions.MOD_ID, "minion_trigger_no_plate_" + (initialBlockState.getValue(MinionTriggerBlock.POWERED) ? "active" : "inactive")));
|
||||||
|
|
||||||
|
ItemDisplayElement element = new ItemDisplayElement(stack);
|
||||||
|
element.setItemDisplayContext(ItemDisplayContext.NONE);
|
||||||
|
holder.addElement(element);
|
||||||
|
return holder;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
@NullMarked
|
||||||
|
package io.github.skippyall.minions.polymer.block;
|
||||||
|
|
||||||
|
import org.jspecify.annotations.NullMarked;
|
||||||
@@ -0,0 +1,31 @@
|
|||||||
|
package io.github.skippyall.minions.polymer.item;
|
||||||
|
|
||||||
|
import eu.pb4.polymer.core.api.item.PolymerItem;
|
||||||
|
import net.fabricmc.fabric.api.networking.v1.context.PacketContext;
|
||||||
|
import net.minecraft.core.HolderLookup;
|
||||||
|
import net.minecraft.core.component.DataComponents;
|
||||||
|
import net.minecraft.resources.Identifier;
|
||||||
|
import net.minecraft.world.item.Item;
|
||||||
|
import net.minecraft.world.item.ItemStack;
|
||||||
|
import net.minecraft.world.item.Items;
|
||||||
|
import net.minecraft.world.item.TooltipFlag;
|
||||||
|
import org.jspecify.annotations.Nullable;
|
||||||
|
|
||||||
|
public class ClipboardItemOverlay implements PolymerItem {
|
||||||
|
@Override
|
||||||
|
public Item getPolymerItem(ItemStack itemStack, PacketContext context) {
|
||||||
|
return /*VersionSync.isOnClient(context) ? this : */Items.PAPER;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public @Nullable Identifier getPolymerItemModel(ItemStack stack, PacketContext context, HolderLookup.Provider lookup) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ItemStack getPolymerItemStack(ItemStack itemStack, TooltipFlag tooltipType, PacketContext context, HolderLookup.Provider lookup) {
|
||||||
|
ItemStack stack = PolymerItem.super.getPolymerItemStack(itemStack, tooltipType, context, lookup);
|
||||||
|
stack.set(DataComponents.ENCHANTMENT_GLINT_OVERRIDE, true);
|
||||||
|
return stack;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,31 @@
|
|||||||
|
package io.github.skippyall.minions.polymer.item;
|
||||||
|
|
||||||
|
import eu.pb4.polymer.core.api.item.PolymerItem;
|
||||||
|
import net.fabricmc.fabric.api.networking.v1.context.PacketContext;
|
||||||
|
import net.minecraft.core.HolderLookup;
|
||||||
|
import net.minecraft.core.component.DataComponents;
|
||||||
|
import net.minecraft.resources.Identifier;
|
||||||
|
import net.minecraft.world.item.Item;
|
||||||
|
import net.minecraft.world.item.ItemStack;
|
||||||
|
import net.minecraft.world.item.Items;
|
||||||
|
import net.minecraft.world.item.TooltipFlag;
|
||||||
|
import org.jspecify.annotations.Nullable;
|
||||||
|
|
||||||
|
public class MinionItemOverlay implements PolymerItem {
|
||||||
|
@Override
|
||||||
|
public @Nullable Identifier getPolymerItemModel(ItemStack stack, PacketContext context, HolderLookup.Provider lookup) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Item getPolymerItem(ItemStack itemStack, PacketContext player) {
|
||||||
|
return Items.ARMOR_STAND;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ItemStack getPolymerItemStack(ItemStack stack, TooltipFlag tooltipType, PacketContext player, HolderLookup.Provider lookup) {
|
||||||
|
ItemStack out = PolymerItem.super.getPolymerItemStack(stack, tooltipType, player, lookup);
|
||||||
|
out.set(DataComponents.ENCHANTMENT_GLINT_OVERRIDE, true);
|
||||||
|
return out;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,55 @@
|
|||||||
|
package io.github.skippyall.minions.polymer.item;
|
||||||
|
|
||||||
|
import eu.pb4.polymer.core.api.item.PolymerItem;
|
||||||
|
import eu.pb4.polymer.resourcepack.api.PolymerResourcePackUtils;
|
||||||
|
import io.github.skippyall.minions.polymer.VersionSync;
|
||||||
|
import net.fabricmc.fabric.api.networking.v1.context.PacketContext;
|
||||||
|
import net.minecraft.core.HolderLookup;
|
||||||
|
import net.minecraft.resources.Identifier;
|
||||||
|
import net.minecraft.server.level.ServerLevel;
|
||||||
|
import net.minecraft.server.level.ServerPlayer;
|
||||||
|
import net.minecraft.world.InteractionHand;
|
||||||
|
import net.minecraft.world.InteractionResult;
|
||||||
|
import net.minecraft.world.item.Item;
|
||||||
|
import net.minecraft.world.item.ItemStack;
|
||||||
|
import net.minecraft.world.level.block.state.BlockState;
|
||||||
|
import net.minecraft.world.phys.BlockHitResult;
|
||||||
|
import org.jspecify.annotations.Nullable;
|
||||||
|
|
||||||
|
public class MinionsBlockItemOverlay implements PolymerItem {
|
||||||
|
private final Item serverItem;
|
||||||
|
private final Item polymerItem;
|
||||||
|
|
||||||
|
public MinionsBlockItemOverlay(Item serverItem, Item polymerItem) {
|
||||||
|
this.serverItem = serverItem;
|
||||||
|
this.polymerItem = polymerItem;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Item getPolymerItem(ItemStack itemStack, PacketContext context) {
|
||||||
|
if(VersionSync.isOnClient(context)) {
|
||||||
|
return serverItem;
|
||||||
|
} else {
|
||||||
|
return polymerItem;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public @Nullable Identifier getPolymerItemModel(ItemStack stack, PacketContext context, HolderLookup.Provider lookup) {
|
||||||
|
if(PolymerResourcePackUtils.hasMainPack(context)) {
|
||||||
|
return PolymerItem.super.getPolymerItemModel(stack, context, lookup);
|
||||||
|
} else {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isPolymerBlockInteraction(BlockState state, ServerPlayer player, InteractionHand hand, ItemStack stack, ServerLevel world, BlockHitResult blockHitResult, InteractionResult actionResult) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isIgnoringBlockInteractionPlaySoundExceptedEntity(BlockState state, ServerPlayer player, InteractionHand hand, ItemStack stack, ServerLevel world, BlockHitResult blockHitResult) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,48 @@
|
|||||||
|
package io.github.skippyall.minions.polymer.item;
|
||||||
|
|
||||||
|
import eu.pb4.polymer.core.api.item.PolymerItem;
|
||||||
|
import eu.pb4.polymer.resourcepack.api.PolymerResourcePackUtils;
|
||||||
|
import io.github.skippyall.minions.polymer.VersionSync;
|
||||||
|
import net.fabricmc.fabric.api.networking.v1.context.PacketContext;
|
||||||
|
import net.minecraft.core.HolderLookup;
|
||||||
|
import net.minecraft.resources.Identifier;
|
||||||
|
import net.minecraft.world.item.Item;
|
||||||
|
import net.minecraft.world.item.ItemStack;
|
||||||
|
import org.jspecify.annotations.Nullable;
|
||||||
|
|
||||||
|
public class SimpleItemOverlay implements PolymerItem {
|
||||||
|
private final Item serverItem;
|
||||||
|
private final Item polymerItem;
|
||||||
|
private final boolean useModel;
|
||||||
|
|
||||||
|
private SimpleItemOverlay(Item serverItem, Item polymerItem, boolean useModel) {
|
||||||
|
this.serverItem = serverItem;
|
||||||
|
this.polymerItem = polymerItem;
|
||||||
|
this.useModel = useModel;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static SimpleItemOverlay withModel(Item serverItem, Item polymerItem) {
|
||||||
|
return new SimpleItemOverlay(serverItem, polymerItem, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static SimpleItemOverlay withoutModel(Item serverItem, Item polymerItem) {
|
||||||
|
return new SimpleItemOverlay(serverItem, polymerItem, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
public Item getPolymerItem(ItemStack itemStack, PacketContext context) {
|
||||||
|
if(useModel && VersionSync.isOnClient(context)) {
|
||||||
|
return serverItem;
|
||||||
|
} else {
|
||||||
|
return polymerItem;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public @Nullable Identifier getPolymerItemModel(ItemStack stack, PacketContext context, HolderLookup.Provider lookup) {
|
||||||
|
if(PolymerResourcePackUtils.hasMainPack(context) && useModel) {
|
||||||
|
return PolymerItem.super.getPolymerItemModel(stack, context, lookup);
|
||||||
|
} else {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
@NullMarked
|
||||||
|
package io.github.skippyall.minions.polymer.item;
|
||||||
|
|
||||||
|
import org.jspecify.annotations.NullMarked;
|
||||||
@@ -1,6 +1,5 @@
|
|||||||
package io.github.skippyall.minions.registration;
|
package io.github.skippyall.minions.registration;
|
||||||
|
|
||||||
import eu.pb4.polymer.core.api.block.PolymerBlockUtils;
|
|
||||||
import io.github.skippyall.minions.Minions;
|
import io.github.skippyall.minions.Minions;
|
||||||
import io.github.skippyall.minions.block.input.AnalogInputBlock;
|
import io.github.skippyall.minions.block.input.AnalogInputBlock;
|
||||||
import io.github.skippyall.minions.block.miniontrigger.MinionTriggerBlock;
|
import io.github.skippyall.minions.block.miniontrigger.MinionTriggerBlock;
|
||||||
@@ -47,6 +46,6 @@ public class MinionBlocks {
|
|||||||
);
|
);
|
||||||
|
|
||||||
public static void register() {
|
public static void register() {
|
||||||
PolymerBlockUtils.registerBlockEntity(MINION_TRIGGER_BE_TYPE);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
package io.github.skippyall.minions.registration;
|
package io.github.skippyall.minions.registration;
|
||||||
|
|
||||||
import eu.pb4.polymer.core.api.other.PolymerComponent;
|
|
||||||
import io.github.skippyall.minions.Minions;
|
import io.github.skippyall.minions.Minions;
|
||||||
import io.github.skippyall.minions.clipboard.Clipboard;
|
import io.github.skippyall.minions.clipboard.Clipboard;
|
||||||
import io.github.skippyall.minions.module.MinionModule;
|
import io.github.skippyall.minions.module.MinionModule;
|
||||||
@@ -19,7 +18,6 @@ public class MinionComponentTypes {
|
|||||||
|
|
||||||
private static <T extends DataComponentType<?>> T register(String name, T type) {
|
private static <T extends DataComponentType<?>> T register(String name, T type) {
|
||||||
Registry.register(BuiltInRegistries.DATA_COMPONENT_TYPE, Identifier.fromNamespaceAndPath(Minions.MOD_ID, name), type);
|
Registry.register(BuiltInRegistries.DATA_COMPONENT_TYPE, Identifier.fromNamespaceAndPath(Minions.MOD_ID, name), type);
|
||||||
PolymerComponent.registerDataComponent(type);
|
|
||||||
return type;
|
return type;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,10 +1,7 @@
|
|||||||
package io.github.skippyall.minions.registration;
|
package io.github.skippyall.minions.registration;
|
||||||
|
|
||||||
import eu.pb4.polymer.core.api.item.PolymerCreativeModeTabUtils;
|
|
||||||
import io.github.skippyall.minions.Minions;
|
|
||||||
import net.fabricmc.fabric.api.creativetab.v1.FabricCreativeModeTab;
|
import net.fabricmc.fabric.api.creativetab.v1.FabricCreativeModeTab;
|
||||||
import net.minecraft.network.chat.Component;
|
import net.minecraft.network.chat.Component;
|
||||||
import net.minecraft.resources.Identifier;
|
|
||||||
import net.minecraft.world.item.CreativeModeTab;
|
import net.minecraft.world.item.CreativeModeTab;
|
||||||
import net.minecraft.world.item.Item;
|
import net.minecraft.world.item.Item;
|
||||||
import org.jspecify.annotations.Nullable;
|
import org.jspecify.annotations.Nullable;
|
||||||
@@ -34,6 +31,6 @@ public class MinionCreativeTab {
|
|||||||
.icon(MinionItems.MINION_ITEM::getDefaultInstance)
|
.icon(MinionItems.MINION_ITEM::getDefaultInstance)
|
||||||
.displayItems(MinionCreativeTab::collectEntries)
|
.displayItems(MinionCreativeTab::collectEntries)
|
||||||
.build();
|
.build();
|
||||||
PolymerCreativeModeTabUtils.registerPolymerCreativeModeTab(Identifier.fromNamespaceAndPath(Minions.MOD_ID, "main"), group);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,8 +1,5 @@
|
|||||||
package io.github.skippyall.minions.registration;
|
package io.github.skippyall.minions.registration;
|
||||||
|
|
||||||
import eu.pb4.polymer.core.api.item.SimplePolymerItem;
|
|
||||||
import io.github.skippyall.minions.block.MinionsBlockItem;
|
|
||||||
import io.github.skippyall.minions.clipboard.ClipboardItem;
|
|
||||||
import io.github.skippyall.minions.minion.MinionItem;
|
import io.github.skippyall.minions.minion.MinionItem;
|
||||||
import io.github.skippyall.minions.minion.MinionRuntime;
|
import io.github.skippyall.minions.minion.MinionRuntime;
|
||||||
import io.github.skippyall.minions.module.MinionModule;
|
import io.github.skippyall.minions.module.MinionModule;
|
||||||
@@ -16,8 +13,8 @@ import net.minecraft.resources.Identifier;
|
|||||||
import net.minecraft.resources.ResourceKey;
|
import net.minecraft.resources.ResourceKey;
|
||||||
import net.minecraft.tags.TagKey;
|
import net.minecraft.tags.TagKey;
|
||||||
import net.minecraft.world.damagesource.DamageType;
|
import net.minecraft.world.damagesource.DamageType;
|
||||||
|
import net.minecraft.world.item.BlockItem;
|
||||||
import net.minecraft.world.item.Item;
|
import net.minecraft.world.item.Item;
|
||||||
import net.minecraft.world.item.Items;
|
|
||||||
import net.minecraft.world.item.component.DamageResistant;
|
import net.minecraft.world.item.component.DamageResistant;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@@ -32,55 +29,43 @@ public class MinionItems {
|
|||||||
settings -> new MinionItem(settings.delayedComponent(DataComponents.DAMAGE_RESISTANT, context -> new DamageResistant(context.getOrThrow(MINION_ITEM_RESISTS))))
|
settings -> new MinionItem(settings.delayedComponent(DataComponents.DAMAGE_RESISTANT, context -> new DamageResistant(context.getOrThrow(MINION_ITEM_RESISTS))))
|
||||||
);
|
);
|
||||||
|
|
||||||
public static final SimplePolymerItem BASIC_UPGRADE_BASE = registerItem(
|
public static final Item BASIC_UPGRADE_BASE = registerSimpleItem(Identifier.fromNamespaceAndPath(MOD_ID, "basic_upgrade_base"));
|
||||||
Identifier.fromNamespaceAndPath(MOD_ID, "basic_upgrade_base"),
|
public static final Item ADVANCED_UPGRADE_BASE = registerSimpleItem(Identifier.fromNamespaceAndPath(MOD_ID, "advanced_upgrade_base"));
|
||||||
settings -> new SimplePolymerItem(settings, Items.NETHERITE_UPGRADE_SMITHING_TEMPLATE)
|
|
||||||
);
|
|
||||||
|
|
||||||
public static final SimplePolymerItem ADVANCED_UPGRADE_BASE = registerItem(
|
public static final Item MOVE_MODULE = registerModule(
|
||||||
Identifier.fromNamespaceAndPath(MOD_ID, "advanced_upgrade_base"),
|
|
||||||
settings -> new SimplePolymerItem(settings, Items.NETHERITE_UPGRADE_SMITHING_TEMPLATE)
|
|
||||||
);
|
|
||||||
|
|
||||||
|
|
||||||
public static final SimplePolymerItem MOVE_MODULE = registerModule(
|
|
||||||
Identifier.fromNamespaceAndPath(MOD_ID, "move_module"),
|
Identifier.fromNamespaceAndPath(MOD_ID, "move_module"),
|
||||||
Items.IRON_BOOTS,
|
|
||||||
List.of(Instructions.WALK, Instructions.WALK_CONTINUOUS, Instructions.TURN, Instructions.TURN_VECTOR)
|
List.of(Instructions.WALK, Instructions.WALK_CONTINUOUS, Instructions.TURN, Instructions.TURN_VECTOR)
|
||||||
);
|
);
|
||||||
|
|
||||||
public static final SimplePolymerItem ATTACK_MODULE = registerModule(
|
public static final Item ATTACK_MODULE = registerModule(
|
||||||
Identifier.fromNamespaceAndPath(MOD_ID, "attack_module"),
|
Identifier.fromNamespaceAndPath(MOD_ID, "attack_module"),
|
||||||
Items.IRON_PICKAXE,
|
|
||||||
List.of(Instructions.ATTACK, Instructions.MINE_BLOCK)
|
List.of(Instructions.ATTACK, Instructions.MINE_BLOCK)
|
||||||
);
|
);
|
||||||
|
|
||||||
public static final SimplePolymerItem INTERACT_MODULE = registerModule(
|
public static final Item INTERACT_MODULE = registerModule(
|
||||||
Identifier.fromNamespaceAndPath(MOD_ID, "interact_module"),
|
Identifier.fromNamespaceAndPath(MOD_ID, "interact_module"),
|
||||||
Items.LEVER,
|
|
||||||
List.of(Instructions.USE)
|
List.of(Instructions.USE)
|
||||||
);
|
);
|
||||||
|
|
||||||
public static final SimplePolymerItem MOB_SPAWNING_MODULE = registerModule(
|
public static final Item MOB_SPAWNING_MODULE = registerModule(
|
||||||
Identifier.fromNamespaceAndPath(MOD_ID, "mob_spawning_module"),
|
Identifier.fromNamespaceAndPath(MOD_ID, "mob_spawning_module"),
|
||||||
Items.SPAWNER,
|
|
||||||
List.of(),
|
List.of(),
|
||||||
List.of(SpecialAbilities.MOB_SPAWNING)
|
List.of(SpecialAbilities.MOB_SPAWNING)
|
||||||
);
|
);
|
||||||
|
|
||||||
public static final MinionsBlockItem MINION_TRIGGER_ITEM = registerItem(
|
public static final BlockItem MINION_TRIGGER_ITEM = registerItem(
|
||||||
MinionBlocks.MINION_TRIGGER_ID,
|
MinionBlocks.MINION_TRIGGER_ID,
|
||||||
settings -> new MinionsBlockItem(MinionBlocks.MINION_TRIGGER_BLOCK, settings, Items.COMPARATOR),
|
settings -> new BlockItem(MinionBlocks.MINION_TRIGGER_BLOCK, settings),
|
||||||
new Item.Properties().useBlockDescriptionPrefix()
|
new Item.Properties().useBlockDescriptionPrefix()
|
||||||
);
|
);
|
||||||
|
|
||||||
public static final MinionsBlockItem ANALOG_INPUT_ITEM = registerItem(
|
public static final BlockItem ANALOG_INPUT_ITEM = registerItem(
|
||||||
MinionBlocks.ANALOG_INPUT_BLOCK_ID,
|
MinionBlocks.ANALOG_INPUT_BLOCK_ID,
|
||||||
settings -> new MinionsBlockItem(MinionBlocks.ANALOG_INPUT_BLOCK, settings, Items.REPEATER),
|
settings -> new BlockItem(MinionBlocks.ANALOG_INPUT_BLOCK, settings),
|
||||||
new Item.Properties().useBlockDescriptionPrefix()
|
new Item.Properties().useBlockDescriptionPrefix()
|
||||||
);
|
);
|
||||||
|
|
||||||
public static final ClipboardItem REFERENCE_ITEM = registerItem(Identifier.fromNamespaceAndPath(MOD_ID, "clipboard"), ClipboardItem::new);
|
public static final Item REFERENCE_ITEM = registerItem(Identifier.fromNamespaceAndPath(MOD_ID, "clipboard"), Item::new);
|
||||||
|
|
||||||
public static <T extends Item> T registerItem(Identifier identifier, Function<Item.Properties, T> constructor, Item.Properties settings) {
|
public static <T extends Item> T registerItem(Identifier identifier, Function<Item.Properties, T> constructor, Item.Properties settings) {
|
||||||
T item = constructor.apply(settings.setId(ResourceKey.create(Registries.ITEM, identifier)));
|
T item = constructor.apply(settings.setId(ResourceKey.create(Registries.ITEM, identifier)));
|
||||||
@@ -94,18 +79,21 @@ public class MinionItems {
|
|||||||
return registerItem(identifier, constructor, new Item.Properties());
|
return registerItem(identifier, constructor, new Item.Properties());
|
||||||
}
|
}
|
||||||
|
|
||||||
public static SimplePolymerItem registerModule(Identifier identifier, Item vanillaItem, List<InstructionType<MinionRuntime>> instructionTypes, List<SpecialAbility> specialAbilities) {
|
public static Item registerSimpleItem(Identifier identifier) {
|
||||||
|
return registerItem(identifier, Item::new);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Item registerModule(Identifier identifier, List<InstructionType<MinionRuntime>> instructionTypes, List<SpecialAbility> specialAbilities) {
|
||||||
return registerItem(
|
return registerItem(
|
||||||
identifier,
|
identifier,
|
||||||
settings -> new SimplePolymerItem(settings, vanillaItem),
|
Item::new,
|
||||||
new Item.Properties().component(MinionComponentTypes.MODULE, new MinionModule(instructionTypes, specialAbilities))
|
new Item.Properties().component(MinionComponentTypes.MODULE, new MinionModule(instructionTypes, specialAbilities))
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static SimplePolymerItem registerModule(Identifier identifier, Item vanillaItem, List<InstructionType<MinionRuntime>> instructionTypes) {
|
public static Item registerModule(Identifier identifier, List<InstructionType<MinionRuntime>> instructionTypes) {
|
||||||
return registerModule(
|
return registerModule(
|
||||||
identifier,
|
identifier,
|
||||||
vanillaItem,
|
|
||||||
instructionTypes,
|
instructionTypes,
|
||||||
List.of()
|
List.of()
|
||||||
);
|
);
|
||||||
|
|||||||
Reference in New Issue
Block a user