Files
MinecraftForge/src/main/java/net/minecraftforge/event/BuildCreativeModeTabContentsEvent.java
T

88 lines
3.1 KiB
Java
Raw Normal View History

2023-04-01 20:45:29 -05:00
/*
* Copyright (c) Forge Development LLC and contributors
* SPDX-License-Identifier: LGPL-2.1-only
*/
package net.minecraftforge.event;
import net.minecraft.resources.ResourceKey;
import net.minecraft.world.flag.FeatureFlagSet;
import net.minecraft.world.item.CreativeModeTab;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.level.ItemLike;
import net.minecraftforge.common.util.MutableHashedLinkedMap;
import net.minecraftforge.eventbus.api.Cancelable;
import net.minecraftforge.eventbus.api.Event;
import net.minecraftforge.fml.LogicalSide;
import net.minecraftforge.fml.event.IModBusEvent;
import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext;
import org.jetbrains.annotations.ApiStatus;
import java.util.function.Supplier;
/**
* Fired when the contents of a specific creative mode tab are being populated.
* This event may be fired multiple times if the operator status of the local player or enabled feature flags changes.
* <p>
* This event is not {@linkplain Cancelable cancellable}, and does not {@linkplain HasResult have a result}.
* <p>
* This event is fired on the {@linkplain FMLJavaModLoadingContext#getModEventBus() mod-specific event bus},
* only on the {@linkplain LogicalSide#CLIENT logical client}.
*/
public final class BuildCreativeModeTabContentsEvent extends Event implements IModBusEvent, CreativeModeTab.Output {
private final CreativeModeTab tab;
private final CreativeModeTab.ItemDisplayParameters parameters;
private final MutableHashedLinkedMap<ItemStack, CreativeModeTab.TabVisibility> entries;
private final ResourceKey<CreativeModeTab> tabKey;
@ApiStatus.Internal
public BuildCreativeModeTabContentsEvent(CreativeModeTab tab, ResourceKey<CreativeModeTab> tabKey, CreativeModeTab.ItemDisplayParameters parameters, MutableHashedLinkedMap<ItemStack, CreativeModeTab.TabVisibility> entries) {
this.tab = tab;
this.tabKey = tabKey;
this.parameters = parameters;
this.entries = entries;
}
/**
* {@return the creative mode tab currently populating its contents}
*/
public CreativeModeTab getTab() {
return this.tab;
}
/**
* {@return the key of the creative mode tab currently populating its contents}
*/
public ResourceKey<CreativeModeTab> getTabKey() {
return this.tabKey;
}
public FeatureFlagSet getFlags() {
return this.parameters.enabledFeatures();
}
public CreativeModeTab.ItemDisplayParameters getParameters() {
return parameters;
}
public boolean hasPermissions() {
return this.parameters.hasPermissions();
}
public MutableHashedLinkedMap<ItemStack, CreativeModeTab.TabVisibility> getEntries() {
return this.entries;
}
@Override
public void accept(ItemStack stack, CreativeModeTab.TabVisibility visibility) {
getEntries().put(stack, visibility);
}
public void accept(Supplier<? extends ItemLike> item, CreativeModeTab.TabVisibility visibility) {
this.accept(item.get(), visibility);
}
public void accept(Supplier<? extends ItemLike> item) {
this.accept(item.get());
}
}