Tab issue

- Port creative tabs
- Fix rest of NbtUtils.readBlockState errors
- Use CompletableFuture[]::new where applicable
This commit is contained in:
PepperCode1 2023-02-02 16:33:19 -08:00
parent de412a74ea
commit 1be1574fe7
45 changed files with 361 additions and 464 deletions

View file

@ -277,10 +277,6 @@ import net.minecraftforge.common.Tags;
public class AllBlocks {
static {
REGISTRATE.creativeModeTab(() -> Create.BASE_CREATIVE_TAB);
}
// Schematics
static {
@ -1315,7 +1311,7 @@ public class AllBlocks {
String colourName = colour.getSerializedName();
SeatMovementBehaviour movementBehaviour = new SeatMovementBehaviour();
SeatInteractionBehaviour interactionBehaviour = new SeatInteractionBehaviour();
return REGISTRATE.block(colourName + "_seat", p -> new SeatBlock(p, colour, colour == DyeColor.RED))
return REGISTRATE.block(colourName + "_seat", p -> new SeatBlock(p, colour))
.initialProperties(SharedProperties::wooden)
.properties(p -> p.color(colour.getMaterialColor()))
.transform(axeOnly())
@ -1409,14 +1405,14 @@ public class AllBlocks {
.register();
public static final BlockEntry<CasingBlock> SHADOW_STEEL_CASING =
REGISTRATE.block("shadow_steel_casing", CasingBlock::deprecated)
REGISTRATE.block("shadow_steel_casing", CasingBlock::new)
.properties(p -> p.color(MaterialColor.COLOR_BLACK))
.transform(BuilderTransformers.casing(() -> AllSpriteShifts.SHADOW_STEEL_CASING))
.lang("Shadow Casing")
.register();
public static final BlockEntry<CasingBlock> REFINED_RADIANCE_CASING =
REGISTRATE.block("refined_radiance_casing", CasingBlock::deprecated)
REGISTRATE.block("refined_radiance_casing", CasingBlock::new)
.properties(p -> p.color(MaterialColor.SNOW))
.transform(BuilderTransformers.casing(() -> AllSpriteShifts.REFINED_RADIANCE_CASING))
.properties(p -> p.lightLevel($ -> 12))

View file

@ -0,0 +1,315 @@
package com.simibubi.create;
import java.util.EnumSet;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.function.Function;
import java.util.function.Predicate;
import com.simibubi.create.content.AllSections;
import com.simibubi.create.content.contraptions.components.actors.SeatBlock;
import com.simibubi.create.content.contraptions.components.crank.ValveHandleBlock;
import com.simibubi.create.content.curiosities.armor.BackTankUtil;
import com.simibubi.create.content.curiosities.toolbox.ToolboxBlock;
import com.simibubi.create.content.palettes.AllPaletteBlocks;
import com.simibubi.create.foundation.item.TagDependentIngredientItem;
import com.tterrag.registrate.util.entry.BlockEntry;
import com.tterrag.registrate.util.entry.ItemEntry;
import com.tterrag.registrate.util.entry.ItemProviderEntry;
import com.tterrag.registrate.util.entry.RegistryEntry;
import it.unimi.dsi.fastutil.objects.Reference2ObjectOpenHashMap;
import it.unimi.dsi.fastutil.objects.Reference2ReferenceOpenHashMap;
import it.unimi.dsi.fastutil.objects.ReferenceArrayList;
import it.unimi.dsi.fastutil.objects.ReferenceLinkedOpenHashSet;
import it.unimi.dsi.fastutil.objects.ReferenceOpenHashSet;
import net.minecraft.client.Minecraft;
import net.minecraft.client.renderer.entity.ItemRenderer;
import net.minecraft.client.resources.model.BakedModel;
import net.minecraft.core.registries.Registries;
import net.minecraft.network.chat.Component;
import net.minecraft.world.flag.FeatureFlagSet;
import net.minecraft.world.item.BlockItem;
import net.minecraft.world.item.CreativeModeTab;
import net.minecraft.world.item.CreativeModeTab.DisplayItemsGenerator;
import net.minecraft.world.item.CreativeModeTab.Output;
import net.minecraft.world.item.CreativeModeTab.TabVisibility;
import net.minecraft.world.item.DyeColor;
import net.minecraft.world.item.Item;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.Items;
import net.minecraft.world.level.block.Block;
import net.minecraftforge.event.CreativeModeTabEvent;
import net.minecraftforge.eventbus.api.SubscribeEvent;
import net.minecraftforge.fml.common.Mod.EventBusSubscriber;
import net.minecraftforge.fml.common.Mod.EventBusSubscriber.Bus;
@EventBusSubscriber(bus = Bus.MOD)
public class AllCreativeModeTabs {
private static CreativeModeTab baseTab;
private static CreativeModeTab palettesTab;
@SubscribeEvent
public static void onCreativeModeTabRegister(CreativeModeTabEvent.Register event) {
baseTab = event.registerCreativeModeTab(Create.asResource("base"), builder -> {
builder.title(Component.translatable("itemGroup.create.base"))
.icon(() -> AllBlocks.COGWHEEL.asStack())
.displayItems(new RegistrateDisplayItemsGenerator(EnumSet.complementOf(EnumSet.of(AllSections.PALETTES)), true));
});
palettesTab = event.registerCreativeModeTab(Create.asResource("palettes"), builder -> {
builder.title(Component.translatable("itemGroup.create.palettes"))
.icon(() -> AllPaletteBlocks.ORNATE_IRON_WINDOW.asStack())
.displayItems(new RegistrateDisplayItemsGenerator(EnumSet.of(AllSections.PALETTES), false));
});
}
public static CreativeModeTab getBaseTab() {
return baseTab;
}
public static CreativeModeTab getPalettesTab() {
return palettesTab;
}
private static class RegistrateDisplayItemsGenerator implements DisplayItemsGenerator {
private final EnumSet<AllSections> sections;
private final boolean addItems;
public RegistrateDisplayItemsGenerator(EnumSet<AllSections> sections, boolean addItems) {
this.sections = sections;
this.addItems = addItems;
}
private static Predicate<Item> makeExclusionPredicate() {
Set<Item> exclusions = new ReferenceOpenHashSet<>();
List<ItemProviderEntry<?>> simpleExclusions = List.of(
AllItems.INCOMPLETE_PRECISION_MECHANISM,
AllItems.INCOMPLETE_REINFORCED_SHEET,
AllItems.INCOMPLETE_TRACK,
AllItems.CHROMATIC_COMPOUND,
AllItems.SHADOW_STEEL,
AllItems.REFINED_RADIANCE,
AllItems.COPPER_BACKTANK_PLACEABLE,
AllItems.MINECART_CONTRAPTION,
AllItems.FURNACE_MINECART_CONTRAPTION,
AllItems.CHEST_MINECART_CONTRAPTION,
AllItems.SCHEMATIC,
AllBlocks.ANDESITE_ENCASED_SHAFT,
AllBlocks.BRASS_ENCASED_SHAFT,
AllBlocks.ANDESITE_ENCASED_COGWHEEL,
AllBlocks.BRASS_ENCASED_COGWHEEL,
AllBlocks.ANDESITE_ENCASED_LARGE_COGWHEEL,
AllBlocks.BRASS_ENCASED_LARGE_COGWHEEL,
AllBlocks.MYSTERIOUS_CUCKOO_CLOCK,
AllBlocks.SHADOW_STEEL_CASING,
AllBlocks.REFINED_RADIANCE_CASING
);
List<ItemEntry<TagDependentIngredientItem>> tagDependentExclusions = List.of(
AllItems.CRUSHED_OSMIUM,
AllItems.CRUSHED_PLATINUM,
AllItems.CRUSHED_SILVER,
AllItems.CRUSHED_TIN,
AllItems.CRUSHED_LEAD,
AllItems.CRUSHED_QUICKSILVER,
AllItems.CRUSHED_BAUXITE,
AllItems.CRUSHED_URANIUM,
AllItems.CRUSHED_NICKEL
);
for (ItemProviderEntry<?> entry : simpleExclusions) {
exclusions.add(entry.asItem());
}
for (ItemEntry<TagDependentIngredientItem> entry : tagDependentExclusions) {
TagDependentIngredientItem item = entry.get();
if (item.shouldHide()) {
exclusions.add(entry.asItem());
}
}
return exclusions::contains;
}
private static List<ItemOrdering> makeOrderings() {
List<ItemOrdering> orderings = new ReferenceArrayList<>();
Map<ItemProviderEntry<?>, ItemProviderEntry<?>> simpleBeforeOrderings = Map.of(
AllItems.EMPTY_BLAZE_BURNER, AllBlocks.BLAZE_BURNER,
AllItems.BELT_CONNECTOR, AllBlocks.CREATIVE_MOTOR,
AllItems.SCHEDULE, AllBlocks.TRACK_STATION
);
Map<ItemProviderEntry<?>, ItemProviderEntry<?>> simpleAfterOrderings = Map.of(
AllItems.VERTICAL_GEARBOX, AllBlocks.GEARBOX
);
simpleBeforeOrderings.forEach((entry, otherEntry) -> {
orderings.add(ItemOrdering.before(entry.asItem(), otherEntry.asItem()));
});
simpleAfterOrderings.forEach((entry, otherEntry) -> {
orderings.add(ItemOrdering.after(entry.asItem(), otherEntry.asItem()));
});
return orderings;
}
private static Function<Item, ItemStack> makeStackFunc() {
Map<Item, Function<Item, ItemStack>> factories = new Reference2ReferenceOpenHashMap<>();
Map<ItemProviderEntry<?>, Function<Item, ItemStack>> simpleFactories = Map.of(
AllItems.COPPER_BACKTANK, item -> {
ItemStack stack = new ItemStack(item);
stack.getOrCreateTag().putInt("Air", BackTankUtil.maxAirWithoutEnchants());
return stack;
}
);
simpleFactories.forEach((entry, factory) -> {
factories.put(entry.asItem(), factory);
});
return item -> {
Function<Item, ItemStack> factory = factories.get(item);
if (factory != null) {
return factory.apply(item);
}
return new ItemStack(item);
};
}
private static Function<Item, TabVisibility> makeVisibilityFunc() {
Map<Item, TabVisibility> visibilities = new Reference2ObjectOpenHashMap<>();
Map<ItemProviderEntry<?>, TabVisibility> simpleVisibilities = Map.of(
AllItems.BLAZE_CAKE_BASE, TabVisibility.SEARCH_TAB_ONLY
);
simpleVisibilities.forEach((entry, factory) -> {
visibilities.put(entry.asItem(), factory);
});
for (BlockEntry<ValveHandleBlock> entry : AllBlocks.DYED_VALVE_HANDLES) {
visibilities.put(entry.asItem(), TabVisibility.SEARCH_TAB_ONLY);
}
for (BlockEntry<SeatBlock> entry : AllBlocks.SEATS) {
SeatBlock block = entry.get();
if (block.getColor() != DyeColor.RED) {
visibilities.put(entry.asItem(), TabVisibility.SEARCH_TAB_ONLY);
}
}
for (BlockEntry<ToolboxBlock> entry : AllBlocks.TOOLBOXES) {
ToolboxBlock block = entry.get();
if (block.getColor() != DyeColor.BROWN) {
visibilities.put(entry.asItem(), TabVisibility.SEARCH_TAB_ONLY);
}
}
return item -> {
TabVisibility visibility = visibilities.get(item);
if (visibility != null) {
return visibility;
}
return TabVisibility.PARENT_AND_SEARCH_TABS;
};
}
@Override
public void accept(FeatureFlagSet features, Output output, boolean isOperator) {
ItemRenderer itemRenderer = Minecraft.getInstance().getItemRenderer();
Predicate<Item> exclusionPredicate = makeExclusionPredicate();
List<ItemOrdering> orderings = makeOrderings();
Function<Item, ItemStack> stackFunc = makeStackFunc();
Function<Item, TabVisibility> visibilityFunc = makeVisibilityFunc();
if (addItems) {
outputAll(output, collectItems(itemRenderer, true, exclusionPredicate, orderings), stackFunc, visibilityFunc);
}
outputAll(output, collectBlocks(exclusionPredicate, orderings), stackFunc, visibilityFunc);
if (addItems) {
outputAll(output, collectItems(itemRenderer, false, exclusionPredicate, orderings), stackFunc, visibilityFunc);
}
}
private List<Item> collectBlocks(Predicate<Item> exclusionPredicate, List<ItemOrdering> orderings) {
List<Item> items = new ReferenceArrayList<>();
for (AllSections section : sections) {
for (RegistryEntry<Block> entry : Create.REGISTRATE.getAll(section, Registries.BLOCK)) {
Item item = entry.get().asItem();
if (item != Items.AIR) {
if (!exclusionPredicate.test(item)) {
items.add(item);
}
}
}
}
items = new LinkedList<>(new ReferenceLinkedOpenHashSet<>(items));
applyOrderings(items, orderings);
return items;
}
private List<Item> collectItems(ItemRenderer itemRenderer, boolean special, Predicate<Item> exclusionPredicate, List<ItemOrdering> orderings) {
List<Item> items = new LinkedList<>();
for (AllSections section : sections) {
for (RegistryEntry<Item> entry : Create.REGISTRATE.getAll(section, Registries.ITEM)) {
Item item = entry.get();
if (!(item instanceof BlockItem)) {
BakedModel model = itemRenderer.getModel(new ItemStack(item), null, null, 0);
if (model.isGui3d() == special) {
if (!exclusionPredicate.test(item)) {
items.add(item);
}
}
}
}
}
applyOrderings(items, orderings);
return items;
}
private static void applyOrderings(List<Item> items, List<ItemOrdering> orderings) {
for (ItemOrdering ordering : orderings) {
int anchorIndex = items.indexOf(ordering.anchor());
if (anchorIndex != -1) {
Item item = ordering.item();
if (items.remove(item)) {
if (ordering.type() == ItemOrdering.Type.AFTER) {
items.add(anchorIndex + 1, item);
} else {
items.add(anchorIndex, item);
}
}
}
}
}
private static void outputAll(Output output, List<Item> items, Function<Item, ItemStack> stackFunc, Function<Item, TabVisibility> visibilityFunc) {
for (Item item : items) {
output.accept(stackFunc.apply(item), visibilityFunc.apply(item));
}
}
private record ItemOrdering(Item item, Item anchor, Type type) {
public static ItemOrdering before(Item item, Item anchor) {
return new ItemOrdering(item, anchor, Type.BEFORE);
}
public static ItemOrdering after(Item item, Item anchor) {
return new ItemOrdering(item, anchor, Type.AFTER);
}
public enum Type {
BEFORE,
AFTER;
}
}
}
}

View file

@ -58,7 +58,6 @@ import com.simibubi.create.content.schematics.item.SchematicItem;
import com.simibubi.create.foundation.data.AssetLookup;
import com.simibubi.create.foundation.data.CreateRegistrate;
import com.simibubi.create.foundation.data.recipe.CompatMetals;
import com.simibubi.create.foundation.item.HiddenIngredientItem;
import com.simibubi.create.foundation.item.TagDependentIngredientItem;
import com.simibubi.create.foundation.item.TooltipHelper;
import com.tterrag.registrate.util.entry.ItemEntry;
@ -72,10 +71,6 @@ import net.minecraftforge.common.Tags;
public class AllItems {
static {
REGISTRATE.creativeModeTab(() -> Create.BASE_CREATIVE_TAB);
}
// Schematics
static {
@ -99,8 +94,8 @@ public class AllItems {
public static final ItemEntry<Item> PRECISION_MECHANISM = ingredient("precision_mechanism");
public static final ItemEntry<HiddenIngredientItem> BLAZE_CAKE_BASE =
REGISTRATE.item("blaze_cake_base", HiddenIngredientItem::new)
public static final ItemEntry<Item> BLAZE_CAKE_BASE =
REGISTRATE.item("blaze_cake_base", Item::new)
.tag(AllItemTags.UPRIGHT_ON_BELT.tag)
.register();

View file

@ -10,7 +10,6 @@ import com.mojang.logging.LogUtils;
import com.simibubi.create.api.behaviour.BlockSpoutingBehaviour;
import com.simibubi.create.compat.Mods;
import com.simibubi.create.compat.curios.Curios;
import com.simibubi.create.content.CreateItemGroup;
import com.simibubi.create.content.contraptions.TorquePropagator;
import com.simibubi.create.content.contraptions.fluids.tank.BoilerHeaters;
import com.simibubi.create.content.curiosities.weapons.BuiltinPotatoProjectileTypes;
@ -19,7 +18,6 @@ import com.simibubi.create.content.logistics.block.display.AllDisplayBehaviours;
import com.simibubi.create.content.logistics.block.mechanicalArm.AllArmInteractionPointTypes;
import com.simibubi.create.content.logistics.trains.GlobalRailwayManager;
import com.simibubi.create.content.palettes.AllPaletteBlocks;
import com.simibubi.create.content.palettes.PalettesItemGroup;
import com.simibubi.create.content.schematics.ServerSchematicLoader;
import com.simibubi.create.content.schematics.filtering.SchematicInstances;
import com.simibubi.create.foundation.advancement.AllAdvancements;
@ -46,7 +44,6 @@ import net.minecraft.data.DataGenerator;
import net.minecraft.data.PackOutput;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.world.entity.Entity;
import net.minecraft.world.item.CreativeModeTab;
import net.minecraft.world.level.Level;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.common.ForgeMod;
@ -79,9 +76,6 @@ public class Create {
public static final CreateRegistrate REGISTRATE = CreateRegistrate.create(ID);
public static final CreativeModeTab BASE_CREATIVE_TAB = new CreateItemGroup();
public static final CreativeModeTab PALETTES_CREATIVE_TAB = new PalettesItemGroup();
public static final ServerSchematicLoader SCHEMATIC_RECEIVER = new ServerSchematicLoader();
public static final RedstoneLinkNetworkHandler REDSTONE_LINK_NETWORK_HANDLER = new RedstoneLinkNetworkHandler();
public static final TorquePropagator TORQUE_PROPAGATOR = new TorquePropagator();

View file

@ -1,26 +0,0 @@
package com.simibubi.create.content;
import java.util.EnumSet;
import com.simibubi.create.AllBlocks;
import com.simibubi.create.foundation.item.CreateItemGroupBase;
import net.minecraft.world.item.ItemStack;
public class CreateItemGroup extends CreateItemGroupBase {
public CreateItemGroup() {
super("base");
}
@Override
protected EnumSet<AllSections> getSections() {
return EnumSet.complementOf(EnumSet.of(AllSections.PALETTES));
}
@Override
public ItemStack makeIcon() {
return AllBlocks.COGWHEEL.asStack();
}
}

View file

@ -2,35 +2,15 @@ package com.simibubi.create.content.contraptions.base;
import com.simibubi.create.content.contraptions.wrench.IWrenchable;
import net.minecraft.core.NonNullList;
import net.minecraft.world.InteractionResult;
import net.minecraft.world.item.CreativeModeTab;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.context.UseOnContext;
import net.minecraft.world.level.block.Block;
import net.minecraft.world.level.block.state.BlockState;
public class CasingBlock extends Block implements IWrenchable {
private boolean visible;
public static CasingBlock deprecated(Properties p_i48440_1_) {
return new CasingBlock(p_i48440_1_, false);
}
public CasingBlock(Properties p_i48440_1_) {
this(p_i48440_1_, true);
}
public CasingBlock(Properties p_i48440_1_, boolean visible) {
super(p_i48440_1_);
this.visible = visible;
}
@Override
public void fillItemCategory(CreativeModeTab pCategory, NonNullList<ItemStack> pItems) {
if (visible)
super.fillItemCategory(pCategory, pItems);
}
@Override

View file

@ -14,7 +14,6 @@ import com.simibubi.create.foundation.utility.BlockHelper;
import net.minecraft.MethodsReturnNonnullByDefault;
import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction;
import net.minecraft.core.NonNullList;
import net.minecraft.world.InteractionHand;
import net.minecraft.world.InteractionResult;
import net.minecraft.world.entity.Entity;
@ -23,7 +22,6 @@ import net.minecraft.world.entity.Mob;
import net.minecraft.world.entity.TamableAnimal;
import net.minecraft.world.entity.monster.Shulker;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.item.CreativeModeTab;
import net.minecraft.world.item.DyeColor;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.context.BlockPlaceContext;
@ -47,12 +45,10 @@ import net.minecraft.world.phys.shapes.VoxelShape;
public class SeatBlock extends Block implements ProperWaterloggedBlock {
protected final DyeColor color;
protected final boolean inCreativeTab;
public SeatBlock(Properties properties, DyeColor color, boolean inCreativeTab) {
public SeatBlock(Properties properties, DyeColor color) {
super(properties);
this.color = color;
this.inCreativeTab = inCreativeTab;
registerDefaultState(defaultBlockState().setValue(WATERLOGGED, false));
}
@ -78,13 +74,6 @@ public class SeatBlock extends Block implements ProperWaterloggedBlock {
return fluidState(pState);
}
@Override
public void fillItemCategory(CreativeModeTab group, NonNullList<ItemStack> p_149666_2_) {
if (group != CreativeModeTab.TAB_SEARCH && !inCreativeTab)
return;
super.fillItemCategory(group, p_149666_2_);
}
@Override
public void fallOn(Level p_152426_, BlockState p_152427_, BlockPos p_152428_, Entity p_152429_, float p_152430_) {
super.fallOn(p_152426_, p_152427_, p_152428_, p_152429_, p_152430_ * 0.5F);

View file

@ -8,9 +8,6 @@ import com.simibubi.create.foundation.block.ITE;
import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction;
import net.minecraft.core.Direction.Axis;
import net.minecraft.core.NonNullList;
import net.minecraft.world.item.CreativeModeTab;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.context.BlockPlaceContext;
import net.minecraft.world.level.BlockGetter;
import net.minecraft.world.level.LevelReader;
@ -43,12 +40,6 @@ public class CuckooClockBlock extends HorizontalKineticBlock implements ITE<Cuck
CollisionContext p_220053_4_) {
return AllShapes.CUCKOO_CLOCK;
}
@Override
public void fillItemCategory(CreativeModeTab group, NonNullList<ItemStack> items) {
if (!mysterious)
super.fillItemCategory(group, items);
}
@Override
public BlockState getStateForPlacement(BlockPlaceContext context) {

View file

@ -8,11 +8,9 @@ import com.simibubi.create.foundation.utility.BlockHelper;
import com.simibubi.create.foundation.utility.Couple;
import net.minecraft.core.BlockPos;
import net.minecraft.core.NonNullList;
import net.minecraft.world.InteractionHand;
import net.minecraft.world.InteractionResult;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.item.CreativeModeTab;
import net.minecraft.world.item.DyeColor;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.level.Level;
@ -25,20 +23,18 @@ import net.minecraftforge.api.distmarker.OnlyIn;
public class ValveHandleBlock extends HandCrankBlock {
private final DyeColor color;
private final boolean inCreativeTab;
public static ValveHandleBlock copper(Properties properties) {
return new ValveHandleBlock(properties, null, true);
return new ValveHandleBlock(properties, null);
}
public static ValveHandleBlock dyed(Properties properties, DyeColor color) {
return new ValveHandleBlock(properties, color, false);
return new ValveHandleBlock(properties, color);
}
private ValveHandleBlock(Properties properties, DyeColor color, boolean inCreativeTab) {
private ValveHandleBlock(Properties properties, DyeColor color) {
super(properties);
this.color = color;
this.inCreativeTab = inCreativeTab;
}
@Override
@ -57,13 +53,6 @@ public class ValveHandleBlock extends HandCrankBlock {
return super.use(state, world, pos, player, hand, hit);
}
@Override
public void fillItemCategory(CreativeModeTab group, NonNullList<ItemStack> p_149666_2_) {
if (group != CreativeModeTab.TAB_SEARCH && !inCreativeTab)
return;
super.fillItemCategory(group, p_149666_2_);
}
@Override
@OnlyIn(Dist.CLIENT)
public PartialModel getRenderedHandle() {

View file

@ -5,6 +5,7 @@ import java.util.function.Supplier;
import com.simibubi.create.foundation.networking.SimplePacketBase;
import net.minecraft.core.BlockPos;
import net.minecraft.core.registries.BuiltInRegistries;
import net.minecraft.nbt.NbtUtils;
import net.minecraft.network.FriendlyByteBuf;
import net.minecraft.world.level.block.state.BlockState;
@ -31,10 +32,11 @@ public class ContraptionBlockChangedPacket extends SimplePacketBase {
buffer.writeNbt(NbtUtils.writeBlockState(newState));
}
@SuppressWarnings("deprecation")
public ContraptionBlockChangedPacket(FriendlyByteBuf buffer) {
entityID = buffer.readInt();
localPos = buffer.readBlockPos();
newState = NbtUtils.readBlockState(buffer.readNbt());
newState = NbtUtils.readBlockState(BuiltInRegistries.BLOCK.asLookup(), buffer.readNbt());
}
@Override

View file

@ -20,7 +20,6 @@ import com.simibubi.create.foundation.utility.placement.PlacementOffset;
import net.minecraft.MethodsReturnNonnullByDefault;
import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction;
import net.minecraft.core.NonNullList;
import net.minecraft.sounds.SoundEvents;
import net.minecraft.sounds.SoundSource;
import net.minecraft.world.InteractionHand;
@ -29,7 +28,6 @@ import net.minecraft.world.entity.Entity;
import net.minecraft.world.entity.LivingEntity;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.item.BlockItem;
import net.minecraft.world.item.CreativeModeTab;
import net.minecraft.world.item.DyeColor;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.ShearsItem;
@ -66,13 +64,6 @@ public class SailBlock extends WrenchableDirectionalBlock {
this.color = color;
}
@Override
public void fillItemCategory(CreativeModeTab tab, NonNullList<ItemStack> items) {
if (frame || color == DyeColor.WHITE) {
super.fillItemCategory(tab, items);
}
}
@Override
public BlockState getStateForPlacement(BlockPlaceContext context) {
BlockState state = super.getStateForPlacement(context);

View file

@ -4,10 +4,6 @@ import java.util.List;
import javax.annotation.Nullable;
import com.simibubi.create.foundation.utility.ContraptionData;
import net.minecraft.network.chat.MutableComponent;
import org.apache.commons.lang3.tuple.MutablePair;
import com.simibubi.create.AllItems;
@ -21,6 +17,7 @@ import com.simibubi.create.content.contraptions.components.structureMovement.Ori
import com.simibubi.create.foundation.advancement.AllAdvancements;
import com.simibubi.create.foundation.config.AllConfigs;
import com.simibubi.create.foundation.config.ContraptionMovementSetting;
import com.simibubi.create.foundation.utility.ContraptionData;
import com.simibubi.create.foundation.utility.Lang;
import com.simibubi.create.foundation.utility.NBTHelper;
@ -28,17 +25,16 @@ import net.minecraft.ChatFormatting;
import net.minecraft.core.BlockPos;
import net.minecraft.core.BlockSource;
import net.minecraft.core.Direction;
import net.minecraft.core.NonNullList;
import net.minecraft.core.dispenser.DefaultDispenseItemBehavior;
import net.minecraft.core.dispenser.DispenseItemBehavior;
import net.minecraft.nbt.CompoundTag;
import net.minecraft.network.chat.MutableComponent;
import net.minecraft.tags.BlockTags;
import net.minecraft.world.InteractionResult;
import net.minecraft.world.entity.Entity;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.entity.vehicle.AbstractMinecart;
import net.minecraft.world.entity.vehicle.AbstractMinecart.Type;
import net.minecraft.world.item.CreativeModeTab;
import net.minecraft.world.item.Item;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.context.UseOnContext;
@ -197,9 +193,6 @@ public class MinecartContraptionItem extends Item {
return "item.create.minecart_contraption";
}
@Override
public void fillItemCategory(CreativeModeTab group, NonNullList<ItemStack> items) {}
@SubscribeEvent
public static void wrenchCanBeUsedToPickUpMinecartContraptions(PlayerInteractEvent.EntityInteract event) {
Entity entity = event.getTarget();

View file

@ -2,9 +2,7 @@ package com.simibubi.create.content.contraptions.itemAssembly;
import com.simibubi.create.foundation.utility.Color;
import net.minecraft.core.NonNullList;
import net.minecraft.nbt.CompoundTag;
import net.minecraft.world.item.CreativeModeTab;
import net.minecraft.world.item.Item;
import net.minecraft.world.item.ItemStack;
@ -24,9 +22,6 @@ public class SequencedAssemblyItem extends Item {
.getFloat("Progress");
}
@Override
public void fillItemCategory(CreativeModeTab p_150895_1_, NonNullList<ItemStack> p_150895_2_) {}
@Override
public boolean isBarVisible(ItemStack stack) {
return true;

View file

@ -17,7 +17,6 @@ import com.simibubi.create.foundation.utility.Lang;
import net.minecraft.MethodsReturnNonnullByDefault;
import net.minecraft.advancements.critereon.StatePropertiesPredicate;
import net.minecraft.core.BlockPos;
import net.minecraft.core.NonNullList;
import net.minecraft.sounds.SoundEvents;
import net.minecraft.sounds.SoundSource;
import net.minecraft.util.StringRepresentable;
@ -25,7 +24,6 @@ import net.minecraft.world.InteractionHand;
import net.minecraft.world.InteractionResult;
import net.minecraft.world.InteractionResultHolder;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.item.CreativeModeTab;
import net.minecraft.world.item.FlintAndSteelItem;
import net.minecraft.world.item.Item;
import net.minecraft.world.item.ItemStack;
@ -83,12 +81,6 @@ public class BlazeBurnerBlock extends HorizontalDirectionalBlock implements ITE<
basin.notifyChangeOfContents();
}
@Override
public void fillItemCategory(CreativeModeTab group, NonNullList<ItemStack> list) {
list.add(AllItems.EMPTY_BLAZE_BURNER.asStack());
super.fillItemCategory(group, list);
}
@Override
public Class<BlazeBurnerTileEntity> getTileEntityClass() {
return BlazeBurnerTileEntity.class;

View file

@ -12,7 +12,6 @@ import com.simibubi.create.foundation.utility.VecHelper;
import net.minecraft.MethodsReturnNonnullByDefault;
import net.minecraft.core.BlockPos;
import net.minecraft.core.NonNullList;
import net.minecraft.core.particles.ParticleTypes;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.sounds.SoundEvents;
@ -25,7 +24,6 @@ import net.minecraft.world.entity.LivingEntity;
import net.minecraft.world.entity.monster.Blaze;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.item.BlockItem;
import net.minecraft.world.item.CreativeModeTab;
import net.minecraft.world.item.Item;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.context.UseOnContext;
@ -63,13 +61,6 @@ public class BlazeBurnerBlockItem extends BlockItem {
this.capturedBlaze = capturedBlaze;
}
@Override
public void fillItemCategory(CreativeModeTab p_150895_1_, NonNullList<ItemStack> p_150895_2_) {
if (!hasCapturedBlaze())
return;
super.fillItemCategory(p_150895_1_, p_150895_2_);
}
@Override
public String getDescriptionId() {
return hasCapturedBlaze() ? super.getDescriptionId() : "item.create." + RegisteredObjects.getKeyOrThrow(this).getPath();

View file

@ -37,7 +37,6 @@ import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction;
import net.minecraft.core.Direction.Axis;
import net.minecraft.core.Direction.AxisDirection;
import net.minecraft.core.NonNullList;
import net.minecraft.server.level.ServerLevel;
import net.minecraft.sounds.SoundEvents;
import net.minecraft.sounds.SoundSource;
@ -47,7 +46,6 @@ import net.minecraft.world.entity.Entity;
import net.minecraft.world.entity.Mob;
import net.minecraft.world.entity.item.ItemEntity;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.item.CreativeModeTab;
import net.minecraft.world.item.DyeColor;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.context.UseOnContext;
@ -103,11 +101,6 @@ public class BeltBlock extends HorizontalKineticBlock implements ITE<BeltTileEnt
consumer.accept(new RenderProperties());
}
@Override
public void fillItemCategory(CreativeModeTab p_149666_1_, NonNullList<ItemStack> p_149666_2_) {
p_149666_2_.add(AllItems.BELT_CONNECTOR.asStack());
}
@Override
protected boolean areStatesKineticallyEquivalent(BlockState oldState, BlockState newState) {
return super.areStatesKineticallyEquivalent(oldState, newState)

View file

@ -6,7 +6,6 @@ import java.util.List;
import javax.annotation.Nonnull;
import com.simibubi.create.AllBlocks;
import com.simibubi.create.Create;
import com.simibubi.create.content.contraptions.base.KineticTileEntity;
import com.simibubi.create.content.contraptions.relays.belt.BeltBlock;
import com.simibubi.create.content.contraptions.relays.belt.BeltPart;
@ -21,7 +20,6 @@ import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction;
import net.minecraft.core.Direction.Axis;
import net.minecraft.core.Direction.AxisDirection;
import net.minecraft.core.NonNullList;
import net.minecraft.nbt.CompoundTag;
import net.minecraft.nbt.NbtUtils;
import net.minecraft.sounds.SoundEvents;
@ -29,8 +27,6 @@ import net.minecraft.sounds.SoundSource;
import net.minecraft.world.InteractionResult;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.item.BlockItem;
import net.minecraft.world.item.CreativeModeTab;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.context.UseOnContext;
import net.minecraft.world.level.Level;
import net.minecraft.world.level.block.entity.BlockEntity;
@ -48,13 +44,6 @@ public class BeltConnectorItem extends BlockItem {
return getOrCreateDescriptionId();
}
@Override
public void fillItemCategory(CreativeModeTab p_150895_1_, NonNullList<ItemStack> p_150895_2_) {
if (p_150895_1_ == Create.BASE_CREATIVE_TAB)
return;
super.fillItemCategory(p_150895_1_, p_150895_2_);
}
@Nonnull
@Override
public InteractionResult useOn(UseOnContext context) {

View file

@ -21,10 +21,8 @@ import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction;
import net.minecraft.core.Direction.Axis;
import net.minecraft.core.Direction.AxisDirection;
import net.minecraft.core.NonNullList;
import net.minecraft.world.InteractionResult;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.item.CreativeModeTab;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.context.BlockPlaceContext;
import net.minecraft.world.item.context.UseOnContext;
@ -72,9 +70,6 @@ public class EncasedCogwheelBlock extends RotatedPillarKineticBlock
super.createBlockStateDefinition(builder.add(TOP_SHAFT, BOTTOM_SHAFT));
}
@Override
public void fillItemCategory(CreativeModeTab pTab, NonNullList<ItemStack> pItems) {}
@Override
public ItemStack getCloneItemStack(BlockState state, HitResult target, BlockGetter world, BlockPos pos, Player player) {
if (target instanceof BlockHitResult)

View file

@ -10,10 +10,8 @@ import com.simibubi.create.foundation.block.ITE;
import com.tterrag.registrate.util.entry.BlockEntry;
import net.minecraft.core.BlockPos;
import net.minecraft.core.NonNullList;
import net.minecraft.world.InteractionResult;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.item.CreativeModeTab;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.context.UseOnContext;
import net.minecraft.world.level.BlockGetter;
@ -46,9 +44,6 @@ public class EncasedShaftBlock extends AbstractEncasedShaftBlock
return casing;
}
@Override
public void fillItemCategory(CreativeModeTab pTab, NonNullList<ItemStack> pItems) {}
@Override
public InteractionResult onSneakWrenched(BlockState state, UseOnContext context) {
if (context.getLevel().isClientSide)

View file

@ -11,9 +11,7 @@ import com.simibubi.create.foundation.block.ITE;
import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction;
import net.minecraft.core.Direction.Axis;
import net.minecraft.core.NonNullList;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.item.CreativeModeTab;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.context.BlockPlaceContext;
import net.minecraft.world.level.BlockGetter;
@ -35,12 +33,6 @@ public class GearboxBlock extends RotatedPillarKineticBlock implements ITE<Gearb
return PushReaction.PUSH_ONLY;
}
@Override
public void fillItemCategory(CreativeModeTab group, NonNullList<ItemStack> items) {
super.fillItemCategory(group, items);
items.add(AllItems.VERTICAL_GEARBOX.asStack());
}
@SuppressWarnings("deprecation")
@Override
public List<ItemStack> getDrops(BlockState state, Builder builder) {

View file

@ -9,10 +9,8 @@ import com.simibubi.create.foundation.utility.Iterate;
import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction;
import net.minecraft.core.Direction.Axis;
import net.minecraft.core.NonNullList;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.item.BlockItem;
import net.minecraft.world.item.CreativeModeTab;
import net.minecraft.world.item.Item;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.level.Level;
@ -25,10 +23,6 @@ public class VerticalGearboxItem extends BlockItem {
public VerticalGearboxItem(Properties builder) {
super(AllBlocks.GEARBOX.get(), builder);
}
@Override
public void fillItemCategory(CreativeModeTab p_150895_1_, NonNullList<ItemStack> p_150895_2_) {
}
@Override
public String getDescriptionId() {

View file

@ -14,14 +14,12 @@ import com.simibubi.create.foundation.utility.VecHelper;
import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction;
import net.minecraft.core.NonNullList;
import net.minecraft.core.particles.ParticleTypes;
import net.minecraft.nbt.CompoundTag;
import net.minecraft.util.Mth;
import net.minecraft.util.RandomSource;
import net.minecraft.world.entity.item.ItemEntity;
import net.minecraft.world.item.BlockItem;
import net.minecraft.world.item.CreativeModeTab;
import net.minecraft.world.item.Item;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.level.ClipContext;
@ -46,9 +44,6 @@ public class ChromaticCompoundItem extends Item {
.getInt("CollectingLight");
}
@Override
public void fillItemCategory(CreativeModeTab pCategory, NonNullList<ItemStack> pItems) {}
@Override
public boolean isBarVisible(ItemStack stack) {
return getLight(stack) > 0;

View file

@ -2,12 +2,10 @@ package com.simibubi.create.content.curiosities;
import com.simibubi.create.foundation.utility.VecHelper;
import net.minecraft.core.NonNullList;
import net.minecraft.core.particles.ParticleTypes;
import net.minecraft.nbt.CompoundTag;
import net.minecraft.util.Mth;
import net.minecraft.world.entity.item.ItemEntity;
import net.minecraft.world.item.CreativeModeTab;
import net.minecraft.world.item.Item;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.level.Level;
@ -19,9 +17,6 @@ public class NoGravMagicalDohickyItem extends Item {
super(p_i48487_1_);
}
@Override
public void fillItemCategory(CreativeModeTab pCategory, NonNullList<ItemStack> pItems) {}
@Override
public boolean onEntityItemUpdate(ItemStack stack, ItemEntity entity) {
Level world = entity.level;

View file

@ -12,7 +12,6 @@ import com.simibubi.create.foundation.block.ITE;
import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction;
import net.minecraft.core.Direction.Axis;
import net.minecraft.core.NonNullList;
import net.minecraft.nbt.CompoundTag;
import net.minecraft.nbt.ListTag;
import net.minecraft.network.chat.Component;
@ -24,7 +23,6 @@ import net.minecraft.world.entity.EquipmentSlot;
import net.minecraft.world.entity.LivingEntity;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.item.BlockItem;
import net.minecraft.world.item.CreativeModeTab;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.context.BlockPlaceContext;
import net.minecraft.world.level.BlockGetter;
@ -65,9 +63,6 @@ public class CopperBacktankBlock extends HorizontalKineticBlock
super.createBlockStateDefinition(builder);
}
@Override
public void fillItemCategory(CreativeModeTab pTab, NonNullList<ItemStack> pItems) {}
@Override
public boolean hasAnalogOutputSignal(BlockState p_149740_1_) {
return true;

View file

@ -3,13 +3,11 @@ package com.simibubi.create.content.curiosities.armor;
import com.simibubi.create.content.curiosities.armor.CapacityEnchantment.ICapacityEnchantable;
import com.tterrag.registrate.util.entry.ItemEntry;
import net.minecraft.core.NonNullList;
import net.minecraft.nbt.CompoundTag;
import net.minecraft.util.Mth;
import net.minecraft.world.InteractionResult;
import net.minecraft.world.entity.EquipmentSlot;
import net.minecraft.world.item.BlockItem;
import net.minecraft.world.item.CreativeModeTab;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.context.UseOnContext;
import net.minecraft.world.level.block.Block;
@ -40,18 +38,6 @@ public class CopperBacktankItem extends CopperArmorItem implements ICapacityEnch
return true;
}
@Override
public void fillItemCategory(CreativeModeTab p_150895_1_, NonNullList<ItemStack> p_150895_2_) {
if (!allowedIn(p_150895_1_))
return;
ItemStack stack = new ItemStack(this);
CompoundTag nbt = new CompoundTag();
nbt.putInt("Air", BackTankUtil.maxAirWithoutEnchants());
stack.setTag(nbt);
p_150895_2_.add(stack);
}
@Override
public boolean isBarVisible(ItemStack stack) {
return true;
@ -78,9 +64,6 @@ public class CopperBacktankItem extends CopperArmorItem implements ICapacityEnch
super(pBlock, pProperties);
}
@Override
public void fillItemCategory(CreativeModeTab pGroup, NonNullList<ItemStack> pItems) {}
@Override
public String getDescriptionId() {
return this.getOrCreateDescriptionId();

View file

@ -12,7 +12,6 @@ import com.simibubi.create.foundation.utility.BlockHelper;
import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction;
import net.minecraft.core.NonNullList;
import net.minecraft.nbt.CompoundTag;
import net.minecraft.server.level.ServerLevel;
import net.minecraft.server.level.ServerPlayer;
@ -20,7 +19,6 @@ import net.minecraft.world.InteractionHand;
import net.minecraft.world.InteractionResult;
import net.minecraft.world.entity.LivingEntity;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.item.CreativeModeTab;
import net.minecraft.world.item.DyeColor;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.context.BlockPlaceContext;
@ -53,13 +51,6 @@ public class ToolboxBlock extends HorizontalDirectionalBlock implements SimpleWa
registerDefaultState(defaultBlockState().setValue(BlockStateProperties.WATERLOGGED, false));
}
@Override
public void fillItemCategory(CreativeModeTab group, NonNullList<ItemStack> p_149666_2_) {
if (group != CreativeModeTab.TAB_SEARCH && color != DyeColor.BROWN)
return;
super.fillItemCategory(group, p_149666_2_);
}
@Override
public FluidState getFluidState(BlockState state) {
return state.getValue(WATERLOGGED) ? Fluids.WATER.getSource(false) : Fluids.EMPTY.defaultFluidState();

View file

@ -7,6 +7,7 @@ import com.simibubi.create.AllTags.AllBlockTags;
import com.simibubi.create.foundation.utility.BlockHelper;
import net.minecraft.core.BlockPos;
import net.minecraft.core.registries.Registries;
import net.minecraft.nbt.CompoundTag;
import net.minecraft.nbt.NbtUtils;
import net.minecraft.world.InteractionResult;
@ -87,7 +88,7 @@ public class ZapperInteractionHandler {
data.remove("id");
}
CompoundTag tag = stack.getOrCreateTag();
if (tag.contains("BlockUsed") && NbtUtils.readBlockState(stack.getTag()
if (tag.contains("BlockUsed") && NbtUtils.readBlockState(player.level.holderLookup(Registries.BLOCK), stack.getTag()
.getCompound("BlockUsed")) == newState && Objects.equals(data, tag.get("BlockData"))) {
return false;
}

View file

@ -20,6 +20,7 @@ import net.minecraft.ChatFormatting;
import net.minecraft.client.model.HumanoidModel.ArmPose;
import net.minecraft.client.player.AbstractClientPlayer;
import net.minecraft.core.BlockPos;
import net.minecraft.core.registries.BuiltInRegistries;
import net.minecraft.core.registries.Registries;
import net.minecraft.nbt.CompoundTag;
import net.minecraft.nbt.NbtUtils;
@ -71,6 +72,7 @@ public abstract class ZapperItem extends Item implements CustomArmPoseItem {
}
}
@SuppressWarnings("deprecation")
@Override
public boolean shouldCauseReequipAnimation(ItemStack oldStack, ItemStack newStack, boolean slotChanged) {
boolean differentBlock = false;
@ -78,8 +80,8 @@ public abstract class ZapperItem extends Item implements CustomArmPoseItem {
.contains("BlockUsed")
&& newStack.getTag()
.contains("BlockUsed"))
differentBlock = NbtUtils.readBlockState(oldStack.getTag()
.getCompound("BlockUsed")) != NbtUtils.readBlockState(
differentBlock = NbtUtils.readBlockState(BuiltInRegistries.BLOCK.asLookup(), oldStack.getTag()
.getCompound("BlockUsed")) != NbtUtils.readBlockState(BuiltInRegistries.BLOCK.asLookup(),
newStack.getTag()
.getCompound("BlockUsed"));
return slotChanged || !isZapper(newStack) || differentBlock;

View file

@ -10,6 +10,7 @@ import net.minecraft.client.Minecraft;
import net.minecraft.client.renderer.MultiBufferSource;
import net.minecraft.client.renderer.block.model.ItemTransforms.TransformType;
import net.minecraft.client.resources.model.BakedModel;
import net.minecraft.core.registries.BuiltInRegistries;
import net.minecraft.nbt.NbtUtils;
import net.minecraft.util.Mth;
import net.minecraft.world.item.ItemStack;
@ -27,8 +28,9 @@ public abstract class ZapperItemRenderer<M extends CustomRenderedItemModel> exte
renderBlockUsed(stack, ms, buffer, light, overlay);
}
@SuppressWarnings("deprecation")
private void renderBlockUsed(ItemStack stack, PoseStack ms, MultiBufferSource buffer, int light, int overlay) {
BlockState state = NbtUtils.readBlockState(stack.getTag()
BlockState state = NbtUtils.readBlockState(BuiltInRegistries.BLOCK.asLookup(), stack.getTag()
.getCompound("BlockUsed"));
ms.pushPose();

View file

@ -14,6 +14,7 @@ import com.simibubi.create.foundation.utility.Components;
import com.simibubi.create.foundation.utility.Lang;
import com.simibubi.create.foundation.utility.NBTHelper;
import net.minecraft.core.registries.BuiltInRegistries;
import net.minecraft.nbt.CompoundTag;
import net.minecraft.nbt.NbtUtils;
import net.minecraft.network.chat.Component;
@ -127,6 +128,7 @@ public abstract class ZapperScreen extends AbstractSimiScreen {
.render(ms);
}
@SuppressWarnings("deprecation")
protected void renderBlock(PoseStack ms, int x, int y) {
ms.pushPose();
ms.translate(x + 32, y + 42, 120);
@ -137,7 +139,7 @@ public abstract class ZapperScreen extends AbstractSimiScreen {
BlockState state = Blocks.AIR.defaultBlockState();
if (zapper.hasTag() && zapper.getTag()
.contains("BlockUsed"))
state = NbtUtils.readBlockState(zapper.getTag()
state = NbtUtils.readBlockState(BuiltInRegistries.BLOCK.asLookup(), zapper.getTag()
.getCompound("BlockUsed"));
GuiGameElement.of(state)

View file

@ -35,7 +35,6 @@ import net.minecraft.world.Container;
import net.minecraft.world.entity.EquipmentSlot;
import net.minecraft.world.entity.LivingEntity;
import net.minecraft.world.item.BlockItem;
import net.minecraft.world.item.CreativeModeTab;
import net.minecraft.world.item.Item;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.crafting.Recipe;
@ -59,8 +58,7 @@ public interface ItemAttribute {
static ItemAttribute standard = register(StandardTraits.DUMMY);
static ItemAttribute inTag = register(new InTag(ItemTags.LOGS));
static ItemAttribute inItemGroup = register(new InItemGroup(CreativeModeTab.TAB_MISC));
static ItemAttribute addedBy = register(new InItemGroup.AddedBy("dummy"));
static ItemAttribute addedBy = register(new AddedBy("dummy"));
static ItemAttribute hasEnchant = register(EnchantAttribute.EMPTY);
static ItemAttribute shulkerFillLevel = register(ShulkerFillLevelAttribute.EMPTY);
static ItemAttribute hasColor = register(ColorAttribute.EMPTY);
@ -273,56 +271,6 @@ public interface ItemAttribute {
}
public static class InItemGroup implements ItemAttribute {
private CreativeModeTab group;
public InItemGroup(CreativeModeTab group) {
this.group = group;
}
@Override
public boolean appliesTo(ItemStack stack) {
Item item = stack.getItem();
return item.getItemCategory() == group;
}
@Override
public List<ItemAttribute> listAttributesOf(ItemStack stack) {
CreativeModeTab group = stack.getItem()
.getItemCategory();
return group == null ? Collections.emptyList() : Arrays.asList(new InItemGroup(group));
}
@Override
public String getTranslationKey() {
return "in_item_group";
}
@Override
@OnlyIn(value = Dist.CLIENT)
public MutableComponent format(boolean inverted) {
return Lang.translateDirect("item_attributes." + getTranslationKey() + (inverted ? ".inverted" : ""),
group.getDisplayName());
}
@Override
public void writeNBT(CompoundTag nbt) {
nbt.putString("path", group.getRecipeFolderName());
}
@Override
public ItemAttribute readNBT(CompoundTag nbt) {
String readPath = nbt.getString("path");
for (CreativeModeTab group : CreativeModeTab.TABS)
if (group.getRecipeFolderName()
.equals(readPath))
return new InItemGroup(group);
return null;
}
}
public static class AddedBy implements ItemAttribute {
private String modId;

View file

@ -16,8 +16,6 @@ import java.util.function.Function;
import javax.annotation.Nullable;
import net.minecraft.server.MinecraftServer;
import org.apache.commons.lang3.mutable.MutableDouble;
import com.simibubi.create.content.contraptions.components.structureMovement.Contraption;
@ -37,6 +35,7 @@ import net.minecraft.core.BlockPos;
import net.minecraft.nbt.CompoundTag;
import net.minecraft.nbt.Tag;
import net.minecraft.resources.ResourceKey;
import net.minecraft.server.MinecraftServer;
import net.minecraft.server.level.ServerLevel;
import net.minecraft.server.level.ServerPlayer;
import net.minecraft.util.Mth;

View file

@ -14,13 +14,11 @@ import com.simibubi.create.foundation.gui.ScreenOpener;
import net.minecraft.client.player.LocalPlayer;
import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction;
import net.minecraft.core.NonNullList;
import net.minecraft.world.InteractionHand;
import net.minecraft.world.InteractionResult;
import net.minecraft.world.entity.Entity;
import net.minecraft.world.entity.LivingEntity;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.item.CreativeModeTab;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.Items;
import net.minecraft.world.item.MapItem;
@ -92,12 +90,6 @@ public class StationBlock extends Block implements ITE<StationTileEntity>, IWren
.orElse(0);
}
@Override
public void fillItemCategory(CreativeModeTab pTab, NonNullList<ItemStack> pItems) {
pItems.add(AllItems.SCHEDULE.asStack());
super.fillItemCategory(pTab, pItems);
}
@Override
public void onRemove(BlockState state, Level worldIn, BlockPos pos, BlockState newState, boolean isMoving) {
ITE.onRemove(state, worldIn, pos, newState);

View file

@ -16,7 +16,6 @@ import com.simibubi.create.foundation.utility.Lang;
import net.minecraft.ChatFormatting;
import net.minecraft.core.BlockPos;
import net.minecraft.core.NonNullList;
import net.minecraft.network.chat.Component;
import net.minecraft.network.chat.MutableComponent;
import net.minecraft.server.level.ServerPlayer;
@ -29,7 +28,6 @@ import net.minecraft.world.entity.LivingEntity;
import net.minecraft.world.entity.player.Inventory;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.inventory.AbstractContainerMenu;
import net.minecraft.world.item.CreativeModeTab;
import net.minecraft.world.item.Item;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.TooltipFlag;
@ -169,7 +167,4 @@ public class ScheduleItem extends Item implements MenuProvider {
return getDescription();
}
@Override
public void fillItemCategory(CreativeModeTab pCategory, NonNullList<ItemStack> pItems) {}
}

View file

@ -33,7 +33,6 @@ public class AllPaletteBlocks {
static {
REGISTRATE
.creativeModeTab(() -> Create.PALETTES_CREATIVE_TAB)
.startSection(AllSections.PALETTES);
}

View file

@ -1,30 +0,0 @@
package com.simibubi.create.content.palettes;
import java.util.EnumSet;
import com.simibubi.create.content.AllSections;
import com.simibubi.create.foundation.item.CreateItemGroupBase;
import net.minecraft.core.NonNullList;
import net.minecraft.world.item.ItemStack;
public class PalettesItemGroup extends CreateItemGroupBase {
public PalettesItemGroup() {
super("palettes");
}
@Override
protected EnumSet<AllSections> getSections() {
return EnumSet.of(AllSections.PALETTES);
}
@Override
public void addItems(NonNullList<ItemStack> items, boolean specialItems) {}
@Override
public ItemStack makeIcon() {
return new ItemStack(AllPaletteBlocks.ORNATE_IRON_WINDOW.get());
}
}

View file

@ -96,16 +96,19 @@ public class SchematicChunkSource extends ChunkSource {
public static class EmptierChunk extends LevelChunk {
private static final class DummyLevel extends Level {
private RegistryAccess access;
private final RegistryAccess access;
private DummyLevel(WritableLevelData p_46450_, ResourceKey<Level> p_46451_, Holder<DimensionType> p_46452_,
Supplier<ProfilerFiller> p_46453_, boolean p_46454_, boolean p_46455_, long p_46456_, int p_220359_) {
Supplier<ProfilerFiller> p_46453_, boolean p_46454_, boolean p_46455_, long p_46456_, int p_220359_,
RegistryAccess access) {
super(p_46450_, p_46451_, p_46452_, p_46453_, p_46454_, p_46455_, p_46456_, p_220359_);
this.access = access;
}
public Level withAccess(RegistryAccess access) {
this.access = access;
return this;
private DummyLevel(RegistryAccess access) {
this(null, null, access
.registryOrThrow(Registries.DIMENSION_TYPE)
.getHolderOrThrow(BuiltinDimensionTypes.OVERWORLD), null, false, false, 0, 0, access);
}
@Override
@ -214,7 +217,7 @@ public class SchematicChunkSource extends ChunkSource {
@Override
public FeatureFlagSet enabledFeatures() {
return null;
return FeatureFlagSet.of();
}
@Override
@ -222,12 +225,8 @@ public class SchematicChunkSource extends ChunkSource {
SoundSource pSource, float pVolume, float pPitch, long pSeed) {}
}
private static final DummyLevel DUMMY_LEVEL = new DummyLevel(null, null, RegistryAccess.BUILTIN.get()
.registryOrThrow(Registries.DIMENSION_TYPE)
.getHolderOrThrow(BuiltinDimensionTypes.OVERWORLD), null, false, false, 0, 0);
public EmptierChunk(RegistryAccess registryAccess) {
super(DUMMY_LEVEL.withAccess(registryAccess), null);
super(new DummyLevel(registryAccess), null);
}
public BlockState getBlockState(BlockPos p_180495_1_) {

View file

@ -26,6 +26,7 @@ import com.simibubi.create.foundation.utility.FilesHelper;
import com.simibubi.create.foundation.utility.Lang;
import net.minecraft.core.BlockPos;
import net.minecraft.core.registries.Registries;
import net.minecraft.nbt.CompoundTag;
import net.minecraft.nbt.NbtIo;
import net.minecraft.server.level.ServerPlayer;
@ -271,7 +272,7 @@ public class ServerSchematicLoader {
if (table == null)
return;
table.finishUpload();
table.inventory.setStackInSlot(1, SchematicItem.create(schematic, player.getGameProfile()
table.inventory.setStackInSlot(1, SchematicItem.create(world.holderLookup(Registries.BLOCK), schematic, player.getGameProfile()
.getName()));
} catch (IOException e) {
@ -337,7 +338,7 @@ public class ServerSchematicLoader {
SchematicAndQuillItem.replaceStructureVoidWithAir(nbttagcompound);
SchematicAndQuillItem.clampGlueBoxes(world, new AABB(pos, pos.offset(bounds)), nbttagcompound);
NbtIo.writeCompressed(nbttagcompound, outputStream);
player.setItemInHand(InteractionHand.MAIN_HAND, SchematicItem.create(schematic, player.getGameProfile()
player.setItemInHand(InteractionHand.MAIN_HAND, SchematicItem.create(world.holderLookup(Registries.BLOCK), schematic, player.getGameProfile()
.getName()));
} catch (IOException e) {

View file

@ -12,6 +12,7 @@ import com.simibubi.create.foundation.utility.BlockHelper;
import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction.Axis;
import net.minecraft.core.registries.BuiltInRegistries;
import net.minecraft.nbt.CompoundTag;
import net.minecraft.nbt.NbtUtils;
import net.minecraft.nbt.Tag;
@ -108,10 +109,11 @@ public abstract class LaunchedItem {
return serializeNBT;
}
@SuppressWarnings("deprecation")
@Override
void readNBT(CompoundTag nbt) {
super.readNBT(nbt);
state = NbtUtils.readBlockState(nbt.getCompound("BlockState"));
state = NbtUtils.readBlockState(BuiltInRegistries.BLOCK.asLookup(), nbt.getCompound("BlockState"));
if (nbt.contains("Data", Tag.TAG_COMPOUND)) {
data = nbt.getCompound("Data");
}

View file

@ -27,7 +27,6 @@ import com.simibubi.create.foundation.utility.NBTHelper;
import net.minecraft.ChatFormatting;
import net.minecraft.core.BlockPos;
import net.minecraft.core.HolderGetter;
import net.minecraft.core.NonNullList;
import net.minecraft.nbt.CompoundTag;
import net.minecraft.nbt.NbtAccounter;
import net.minecraft.nbt.NbtIo;
@ -37,7 +36,6 @@ import net.minecraft.world.InteractionHand;
import net.minecraft.world.InteractionResult;
import net.minecraft.world.InteractionResultHolder;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.item.CreativeModeTab;
import net.minecraft.world.item.Item;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.TooltipFlag;
@ -77,9 +75,6 @@ public class SchematicItem extends Item {
return blueprint;
}
@Override
public void fillItemCategory(CreativeModeTab group, NonNullList<ItemStack> items) {}
@Override
@OnlyIn(value = Dist.CLIENT)
public void appendHoverText(ItemStack stack, Level worldIn, List<Component> tooltip, TooltipFlag flagIn) {

View file

@ -638,7 +638,7 @@ public class AllAdvancements implements DataProvider {
for (CreateAdvancement advancement : ENTRIES)
advancement.save(consumer);
return CompletableFuture.allOf(futures.toArray((entry) -> new CompletableFuture[entry]));
return CompletableFuture.allOf(futures.toArray(CompletableFuture[]::new));
}
@Override

View file

@ -54,7 +54,7 @@ public abstract class ProcessingRecipeGen extends CreateRecipeProvider {
public CompletableFuture<?> run(CachedOutput dc) {
return CompletableFuture.allOf(GENERATORS.stream()
.map(gen -> gen.run(dc))
.toArray(size -> new CompletableFuture[size]));
.toArray(CompletableFuture[]::new));
}
});
}

View file

@ -1,84 +0,0 @@
package com.simibubi.create.foundation.item;
import java.util.Collection;
import java.util.EnumSet;
import java.util.stream.Collectors;
import com.simibubi.create.Create;
import com.simibubi.create.content.AllSections;
import com.tterrag.registrate.util.entry.RegistryEntry;
import net.minecraft.client.Minecraft;
import net.minecraft.client.renderer.entity.ItemRenderer;
import net.minecraft.client.resources.model.BakedModel;
import net.minecraft.core.NonNullList;
import net.minecraft.core.registries.Registries;
import net.minecraft.world.item.BlockItem;
import net.minecraft.world.item.CreativeModeTab;
import net.minecraft.world.item.Item;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.Items;
import net.minecraft.world.level.block.Block;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.api.distmarker.OnlyIn;
public abstract class CreateItemGroupBase extends CreativeModeTab {
public CreateItemGroupBase(String id) {
super(Create.ID + "." + id);
}
@Override
@OnlyIn(Dist.CLIENT)
public void fillItemList(NonNullList<ItemStack> items) {
addItems(items, true);
addBlocks(items);
addItems(items, false);
}
@OnlyIn(Dist.CLIENT)
public void addBlocks(NonNullList<ItemStack> items) {
for (RegistryEntry<? extends Block> entry : getBlocks()) {
Block def = entry.get();
Item item = def.asItem();
if (item != Items.AIR)
def.fillItemCategory(this, items);
}
}
@OnlyIn(Dist.CLIENT)
public void addItems(NonNullList<ItemStack> items, boolean specialItems) {
ItemRenderer itemRenderer = Minecraft.getInstance().getItemRenderer();
for (RegistryEntry<? extends Item> entry : getItems()) {
Item item = entry.get();
if (item instanceof BlockItem)
continue;
ItemStack stack = new ItemStack(item);
BakedModel model = itemRenderer.getModel(stack, null, null, 0);
if (model.isGui3d() != specialItems)
continue;
item.fillItemCategory(this, items);
}
}
protected Collection<RegistryEntry<Block>> getBlocks() {
return getSections().stream()
.flatMap(s -> Create.REGISTRATE
.getAll(s, Registries.BLOCK)
.stream())
.collect(Collectors.toList());
}
protected Collection<RegistryEntry<Item>> getItems() {
return getSections().stream()
.flatMap(s -> Create.REGISTRATE
.getAll(s, Registries.ITEM)
.stream())
.collect(Collectors.toList());
}
protected EnumSet<AllSections> getSections() {
return EnumSet.allOf(AllSections.class);
}
}

View file

@ -1,21 +0,0 @@
package com.simibubi.create.foundation.item;
import net.minecraft.core.NonNullList;
import net.minecraft.world.item.CreativeModeTab;
import net.minecraft.world.item.Item;
import net.minecraft.world.item.ItemStack;
public class HiddenIngredientItem extends Item {
public HiddenIngredientItem(Properties p_i48487_1_) {
super(p_i48487_1_);
}
@Override
public void fillItemCategory(CreativeModeTab p_150895_1_, NonNullList<ItemStack> p_150895_2_) {
if (p_150895_1_ != CreativeModeTab.TAB_SEARCH)
return;
super.fillItemCategory(p_150895_1_, p_150895_2_);
}
}

View file

@ -1,10 +1,7 @@
package com.simibubi.create.foundation.item;
import net.minecraft.core.NonNullList;
import net.minecraft.tags.TagKey;
import net.minecraft.world.item.CreativeModeTab;
import net.minecraft.world.item.Item;
import net.minecraft.world.item.ItemStack;
import net.minecraftforge.registries.ForgeRegistries;
import net.minecraftforge.registries.tags.ITagManager;
@ -17,12 +14,6 @@ public class TagDependentIngredientItem extends Item {
this.tag = tag;
}
@Override
public void fillItemCategory(CreativeModeTab tab, NonNullList<ItemStack> list) {
if (!shouldHide())
super.fillItemCategory(tab, list);
}
public boolean shouldHide() {
ITagManager<Item> tagManager = ForgeRegistries.ITEMS.tags();
return !tagManager.isKnownTagName(tag) || tagManager.getTag(tag).isEmpty();