From 8d042b08aae8eda5630fd45d445de146c074900d Mon Sep 17 00:00:00 2001 From: simibubi <31564874+simibubi@users.noreply.github.com> Date: Fri, 30 Jun 2023 02:25:04 +0200 Subject: [PATCH] Cleaning up - Fixed some immediately noticeable issues from the port --- .../84f9c7ad2eb0c05bbc6dce996bf102df34b68360 | 6 +- .../resources/assets/create/lang/en_us.json | 6 +- .../tags/damage_type/bypasses_armor.json | 10 +- .../minecraft/tags/damage_type/is_fire.json | 4 +- .../java/com/simibubi/create/AllBlocks.java | 4 + .../simibubi/create/AllCreativeModeTabs.java | 91 ++++++++++--------- .../java/com/simibubi/create/AllItems.java | 2 + .../category/MechanicalCraftingCategory.java | 5 +- .../animations/AnimatedItemDrain.java | 5 +- .../BracketedBlockEntityBehaviour.java | 3 +- .../copycat/CopycatBlockEntity.java | 2 +- .../decoration/palettes/AllPaletteBlocks.java | 3 + .../equipment/clipboard/ClipboardScreen.java | 9 +- .../equipment/toolbox/ToolboxScreen.java | 1 + .../waterwheel/WaterWheelBlockEntity.java | 3 +- .../waterwheel/WaterWheelRenderer.java | 2 +- .../schematics/cannon/LaunchedItem.java | 24 ++--- .../cannon/SchematicannonBlockEntity.java | 2 +- .../cannon/SchematicannonScreen.java | 2 +- .../schematics/client/SchematicRenderer.java | 1 + .../client/ToolSelectionScreen.java | 3 + .../trains/schedule/ScheduleScreen.java | 3 +- .../condition/CargoThresholdCondition.java | 2 +- .../blockEntity/SyncedBlockEntity.java | 11 +++ .../foundation/config/ui/ConfigTextField.java | 13 +++ .../foundation/data/CreateRegistrate.java | 17 ++++ .../foundation/gui/AbstractSimiScreen.java | 12 ++- .../gui/element/GuiGameElement.java | 3 + .../foundation/gui/element/RenderElement.java | 2 - .../gui/menu/AbstractSimiContainerScreen.java | 13 ++- .../gui/widget/AbstractSimiWidget.java | 7 ++ .../foundation/gui/widget/IconButton.java | 2 +- .../foundation/gui/widget/Indicator.java | 2 +- .../ponder/element/WorldSectionElement.java | 1 + .../ponder/ui/NavigatableSimiScreen.java | 3 +- .../foundation/ponder/ui/PonderButton.java | 2 - .../utility/ghost/GhostBlockRenderer.java | 4 +- .../gui/CreateMainMenuScreen.java | 1 + .../assets/create/lang/default/interface.json | 6 +- 39 files changed, 190 insertions(+), 102 deletions(-) diff --git a/src/generated/resources/.cache/84f9c7ad2eb0c05bbc6dce996bf102df34b68360 b/src/generated/resources/.cache/84f9c7ad2eb0c05bbc6dce996bf102df34b68360 index 36fca99d4..b6f1c06f1 100644 --- a/src/generated/resources/.cache/84f9c7ad2eb0c05bbc6dce996bf102df34b68360 +++ b/src/generated/resources/.cache/84f9c7ad2eb0c05bbc6dce996bf102df34b68360 @@ -1,4 +1,4 @@ -// 1.20.1 2023-06-29T19:34:04.0054837 Tags for minecraft:damage_type mod id create -98cc73dad40a3d36d74ba9b9134c1ad52a9390c3 data/minecraft/tags/damage_type/bypasses_armor.json +// 1.20.1 2023-06-29T22:04:50.9792131 Tags for minecraft:damage_type mod id create +55371872b65f63a4b7508599d18a9a5e029ed353 data/minecraft/tags/damage_type/bypasses_armor.json 62231dbbc4e6a21bafe1b3cdb3c86d06ff647ec7 data/minecraft/tags/damage_type/is_explosion.json -ad45c55a9cc7883cfcd8b208f735c739f599e1d0 data/minecraft/tags/damage_type/is_fire.json +25913dd7c9ec6de04eac0f77ff764e1c48ca651d data/minecraft/tags/damage_type/is_fire.json diff --git a/src/generated/resources/assets/create/lang/en_us.json b/src/generated/resources/assets/create/lang/en_us.json index 6d5b564e2..6f9b4c9d4 100644 --- a/src/generated/resources/assets/create/lang/en_us.json +++ b/src/generated/resources/assets/create/lang/en_us.json @@ -1396,18 +1396,18 @@ "create.tooltip.holdForControls": "Hold [%1$s] for Controls", "create.tooltip.keyShift": "Shift", "create.tooltip.keyCtrl": "Ctrl", - "create.tooltip.speedRequirement": "Speed Requirement: %1$s", + "create.tooltip.speedRequirement": "Speed Requirement:", "create.tooltip.speedRequirement.none": "None", "create.tooltip.speedRequirement.slow": "Slow", "create.tooltip.speedRequirement.medium": "Moderate", "create.tooltip.speedRequirement.fast": "Fast", - "create.tooltip.stressImpact": "Kinetic Stress Impact: %1$s", + "create.tooltip.stressImpact": "Kinetic Stress Impact:", "create.tooltip.stressImpact.low": "Low", "create.tooltip.stressImpact.medium": "Moderate", "create.tooltip.stressImpact.high": "High", "create.tooltip.stressImpact.overstressed": "Overstressed", "create.tooltip.up_to": "Up to %1$s", - "create.tooltip.capacityProvided": "Kinetic Stress Capacity: %1$s", + "create.tooltip.capacityProvided": "Kinetic Stress Capacity:", "create.tooltip.capacityProvided.low": "Small", "create.tooltip.capacityProvided.medium": "Medium", "create.tooltip.capacityProvided.high": "Large", diff --git a/src/generated/resources/data/minecraft/tags/damage_type/bypasses_armor.json b/src/generated/resources/data/minecraft/tags/damage_type/bypasses_armor.json index bf797e1d4..6d607b63f 100644 --- a/src/generated/resources/data/minecraft/tags/damage_type/bypasses_armor.json +++ b/src/generated/resources/data/minecraft/tags/damage_type/bypasses_armor.json @@ -1,11 +1,15 @@ { "values": [ + { + "id": "create:fan_lava", + "required": false + }, { "id": "create:fan_fire", "required": false }, { - "id": "create:fan_lava", + "id": "create:crush", "required": false }, { @@ -15,10 +19,6 @@ { "id": "create:mechanical_saw", "required": false - }, - { - "id": "create:crush", - "required": false } ] } \ No newline at end of file diff --git a/src/generated/resources/data/minecraft/tags/damage_type/is_fire.json b/src/generated/resources/data/minecraft/tags/damage_type/is_fire.json index 3c0de7ed8..0969b9d15 100644 --- a/src/generated/resources/data/minecraft/tags/damage_type/is_fire.json +++ b/src/generated/resources/data/minecraft/tags/damage_type/is_fire.json @@ -1,11 +1,11 @@ { "values": [ { - "id": "create:fan_fire", + "id": "create:fan_lava", "required": false }, { - "id": "create:fan_lava", + "id": "create:fan_fire", "required": false } ] diff --git a/src/main/java/com/simibubi/create/AllBlocks.java b/src/main/java/com/simibubi/create/AllBlocks.java index b34a36e76..a69afc195 100644 --- a/src/main/java/com/simibubi/create/AllBlocks.java +++ b/src/main/java/com/simibubi/create/AllBlocks.java @@ -310,6 +310,8 @@ import net.minecraftforge.common.Tags; import net.minecraftforge.common.util.ForgeSoundType; public class AllBlocks { + + static { REGISTRATE.useCreativeTab(AllCreativeModeTabs.MAIN_TAB); } // Schematics @@ -1994,6 +1996,8 @@ public class AllBlocks { .register(); // Materials + + static { REGISTRATE.useCreativeTab(AllCreativeModeTabs.BUILDING_BLOCKS_TAB); } public static final BlockEntry ANDESITE_LADDER = REGISTRATE.block("andesite_ladder", MetalLadderBlock::new) diff --git a/src/main/java/com/simibubi/create/AllCreativeModeTabs.java b/src/main/java/com/simibubi/create/AllCreativeModeTabs.java index a7010f77a..dd7d84248 100644 --- a/src/main/java/com/simibubi/create/AllCreativeModeTabs.java +++ b/src/main/java/com/simibubi/create/AllCreativeModeTabs.java @@ -34,6 +34,7 @@ import net.minecraft.world.item.CreativeModeTab.DisplayItemsGenerator; import net.minecraft.world.item.CreativeModeTab.ItemDisplayParameters; import net.minecraft.world.item.CreativeModeTab.Output; import net.minecraft.world.item.CreativeModeTab.TabVisibility; +import net.minecraft.world.item.CreativeModeTabs; import net.minecraft.world.item.DyeColor; import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; @@ -51,16 +52,18 @@ public class AllCreativeModeTabs { private static final DeferredRegister TAB_REGISTER = DeferredRegister.create(Registries.CREATIVE_MODE_TAB, Create.ID); - public static RegistryObject MAIN_TAB = TAB_REGISTER.register("base", + public static final RegistryObject MAIN_TAB = TAB_REGISTER.register("base", () -> CreativeModeTab.builder() .title(Component.translatable("itemGroup.create.base")) + .withTabsBefore(CreativeModeTabs.SPAWN_EGGS) .icon(() -> AllBlocks.COGWHEEL.asStack()) .displayItems(new RegistrateDisplayItemsGenerator(true)) .build()); - public static RegistryObject BUILDING_BLOCKS_TAB = TAB_REGISTER.register("palettes", + public static final RegistryObject BUILDING_BLOCKS_TAB = TAB_REGISTER.register("palettes", () -> CreativeModeTab.builder() .title(Component.translatable("itemGroup.create.palettes")) + .withTabsBefore(MAIN_TAB.getKey()) .icon(() -> AllPaletteBlocks.ORNATE_IRON_WINDOW.asStack()) .displayItems(new RegistrateDisplayItemsGenerator(false)) .build()); @@ -78,12 +81,11 @@ public class AllCreativeModeTabs { } public static class RegistrateDisplayItemsGenerator implements DisplayItemsGenerator { -// private final EnumSet sections; - private final boolean addItems; + + private final boolean mainTab; - public RegistrateDisplayItemsGenerator(boolean addItems) { -// this.sections = sections; - this.addItems = addItems; + public RegistrateDisplayItemsGenerator(boolean mainTab) { + this.mainTab = mainTab; } private static Predicate makeExclusionPredicate() { Set exclusions = new ReferenceOpenHashSet<>(); @@ -96,6 +98,7 @@ public class AllCreativeModeTabs { AllItems.SHADOW_STEEL, AllItems.REFINED_RADIANCE, AllItems.COPPER_BACKTANK_PLACEABLE, + AllItems.NETHERITE_BACKTANK_PLACEABLE, AllItems.MINECART_CONTRAPTION, AllItems.FURNACE_MINECART_CONTRAPTION, AllItems.CHEST_MINECART_CONTRAPTION, @@ -107,6 +110,7 @@ public class AllCreativeModeTabs { AllBlocks.ANDESITE_ENCASED_LARGE_COGWHEEL, AllBlocks.BRASS_ENCASED_LARGE_COGWHEEL, AllBlocks.MYSTERIOUS_CUCKOO_CLOCK, + AllBlocks.ELEVATOR_CONTACT, AllBlocks.SHADOW_STEEL_CASING, AllBlocks.REFINED_RADIANCE_CASING ); @@ -168,6 +172,11 @@ public class AllCreativeModeTabs { ItemStack stack = new ItemStack(item); stack.getOrCreateTag().putInt("Air", BacktankUtil.maxAirWithoutEnchants()); return stack; + }, + AllItems.NETHERITE_BACKTANK, item -> { + ItemStack stack = new ItemStack(item); + stack.getOrCreateTag().putInt("Air", BacktankUtil.maxAirWithoutEnchants()); + return stack; } ); @@ -229,54 +238,52 @@ public class AllCreativeModeTabs { List orderings = makeOrderings(); Function stackFunc = makeStackFunc(); Function visibilityFunc = makeVisibilityFunc(); + RegistryObject tab = mainTab ? MAIN_TAB : BUILDING_BLOCKS_TAB; List items = new LinkedList<>(); - - if (addItems) { - items.addAll(collectItems(itemRenderer, true, exclusionPredicate)); - } - - items.addAll(collectBlocks(exclusionPredicate)); - - if (addItems) { - items.addAll(collectItems(itemRenderer, false, exclusionPredicate)); - } + items.addAll(collectItems(tab, itemRenderer, true, exclusionPredicate)); + items.addAll(collectBlocks(tab, exclusionPredicate)); + items.addAll(collectItems(tab, itemRenderer, false, exclusionPredicate)); applyOrderings(items, orderings); outputAll(output, items, stackFunc, visibilityFunc); } - private List collectBlocks(Predicate exclusionPredicate) { + private List collectBlocks(RegistryObject tab, Predicate exclusionPredicate) { List items = new ReferenceArrayList<>(); -// for (AllSections section : sections) { - for (RegistryEntry entry : Create.REGISTRATE.getAll(Registries.BLOCK)) { - Item item = entry.get().asItem(); - if (item != Items.AIR) { - if (!exclusionPredicate.test(item)) { - items.add(item); - } - } - } -// } + for (RegistryEntry entry : Create.REGISTRATE.getAll(Registries.BLOCK)) { + if (!Create.REGISTRATE.isInCreativeTab(entry, tab)) + continue; + Item item = entry.get() + .asItem(); + if (item == Items.AIR) + continue; + if (!exclusionPredicate.test(item)) + items.add(item); + } items = new ReferenceArrayList<>(new ReferenceLinkedOpenHashSet<>(items)); return items; } - private List collectItems(ItemRenderer itemRenderer, boolean special, Predicate exclusionPredicate) { + private List collectItems(RegistryObject tab, ItemRenderer itemRenderer, boolean special, + Predicate exclusionPredicate) { List items = new ReferenceArrayList<>(); -// for (AllSections section : sections) { - for (RegistryEntry entry : Create.REGISTRATE.getAll(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); - } - } - } - } -// } + + if (!mainTab) + return items; + + for (RegistryEntry entry : Create.REGISTRATE.getAll(Registries.ITEM)) { + if (!Create.REGISTRATE.isInCreativeTab(entry, tab)) + continue; + Item item = entry.get(); + if (item instanceof BlockItem) + continue; + BakedModel model = itemRenderer.getModel(new ItemStack(item), null, null, 0); + if (model.isGui3d() != special) + continue; + if (!exclusionPredicate.test(item)) + items.add(item); + } return items; } diff --git a/src/main/java/com/simibubi/create/AllItems.java b/src/main/java/com/simibubi/create/AllItems.java index 40fcefb7c..5aa3daf34 100644 --- a/src/main/java/com/simibubi/create/AllItems.java +++ b/src/main/java/com/simibubi/create/AllItems.java @@ -66,6 +66,8 @@ import net.minecraft.world.item.Rarity; import net.minecraftforge.common.Tags; public class AllItems { + + static { REGISTRATE.useCreativeTab(AllCreativeModeTabs.MAIN_TAB); } public static final ItemEntry WHEAT_FLOUR = taggedIngredient("wheat_flour", forgeItemTag("flour/wheat"), forgeItemTag("flour")), diff --git a/src/main/java/com/simibubi/create/compat/jei/category/MechanicalCraftingCategory.java b/src/main/java/com/simibubi/create/compat/jei/category/MechanicalCraftingCategory.java index 90aacf601..ceef2aa57 100644 --- a/src/main/java/com/simibubi/create/compat/jei/category/MechanicalCraftingCategory.java +++ b/src/main/java/com/simibubi/create/compat/jei/category/MechanicalCraftingCategory.java @@ -23,7 +23,6 @@ import net.minecraft.ChatFormatting; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.Font; import net.minecraft.client.gui.GuiGraphics; -import net.minecraft.client.renderer.entity.ItemRenderer; import net.minecraft.network.chat.Component; import net.minecraft.network.chat.MutableComponent; import net.minecraft.world.entity.player.Player; @@ -152,13 +151,11 @@ public class MechanicalCraftingCategory extends CreateRecipeCategory TILED_GLASS = REGISTRATE.block("tiled_glass", GlassBlock::new) diff --git a/src/main/java/com/simibubi/create/content/equipment/clipboard/ClipboardScreen.java b/src/main/java/com/simibubi/create/content/equipment/clipboard/ClipboardScreen.java index 20846ec61..ab2ad153a 100644 --- a/src/main/java/com/simibubi/create/content/equipment/clipboard/ClipboardScreen.java +++ b/src/main/java/com/simibubi/create/content/equipment/clipboard/ClipboardScreen.java @@ -574,7 +574,7 @@ public class ClipboardScreen extends AbstractSimiScreen { return true; if (pButton != 0) return true; - + if (hoveredEntry != -1) { if (hoveredCheck) { editingIndex = -1; @@ -601,6 +601,13 @@ public class ClipboardScreen extends AbstractSimiScreen { if (editingIndex == -1) return false; + if (pMouseX < guiLeft + 50 || pMouseX > guiLeft + 220 || pMouseY < guiTop + 30 || pMouseY > guiTop + 230) { + setFocused(null); + clearDisplayCache(); + editingIndex = -1; + return false; + } + long i = Util.getMillis(); DisplayCache cache = getDisplayCache(); int j = cache.getIndexAtPosition(font, convertScreenToLocal(new Pos2i((int) pMouseX, (int) pMouseY))); diff --git a/src/main/java/com/simibubi/create/content/equipment/toolbox/ToolboxScreen.java b/src/main/java/com/simibubi/create/content/equipment/toolbox/ToolboxScreen.java index e31075d9a..d0b16c7a9 100644 --- a/src/main/java/com/simibubi/create/content/equipment/toolbox/ToolboxScreen.java +++ b/src/main/java/com/simibubi/create/content/equipment/toolbox/ToolboxScreen.java @@ -48,6 +48,7 @@ public class ToolboxScreen extends AbstractSimiContainerScreen { setWindowSize(30 + BG.width, BG.height + PLAYER.height - 24); setWindowOffset(-11, 0); super.init(); + clearWidgets(); color = menu.contentHolder.getColor(); diff --git a/src/main/java/com/simibubi/create/content/kinetics/waterwheel/WaterWheelBlockEntity.java b/src/main/java/com/simibubi/create/content/kinetics/waterwheel/WaterWheelBlockEntity.java index b2470ae41..31e1b450e 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/waterwheel/WaterWheelBlockEntity.java +++ b/src/main/java/com/simibubi/create/content/kinetics/waterwheel/WaterWheelBlockEntity.java @@ -19,7 +19,6 @@ import net.minecraft.core.Direction; import net.minecraft.core.Direction.Axis; import net.minecraft.core.Direction.AxisDirection; import net.minecraft.core.Vec3i; -import net.minecraft.core.registries.Registries; import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.NbtUtils; import net.minecraft.tags.BlockTags; @@ -192,7 +191,7 @@ public class WaterWheelBlockEntity extends GeneratingKineticBlockEntity { if (!compound.contains("Material")) return; - material = NbtUtils.readBlockState(level.holderLookup(Registries.BLOCK), compound.getCompound("Material")); + material = NbtUtils.readBlockState(blockHolderGetter(), compound.getCompound("Material")); if (material.isAir()) material = Blocks.SPRUCE_PLANKS.defaultBlockState(); diff --git a/src/main/java/com/simibubi/create/content/kinetics/waterwheel/WaterWheelRenderer.java b/src/main/java/com/simibubi/create/content/kinetics/waterwheel/WaterWheelRenderer.java index fb74bb386..47106d1cd 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/waterwheel/WaterWheelRenderer.java +++ b/src/main/java/com/simibubi/create/content/kinetics/waterwheel/WaterWheelRenderer.java @@ -40,7 +40,7 @@ public class WaterWheelRenderer extends Kinetic public static final StitchedSprite OAK_LOG_TEMPLATE = new StitchedSprite(new ResourceLocation("block/oak_log")); public static final StitchedSprite OAK_LOG_TOP_TEMPLATE = new StitchedSprite(new ResourceLocation("block/oak_log_top")); - private static final String[] LOG_SUFFIXES = new String[] { "_log", "_stem" }; + private static final String[] LOG_SUFFIXES = new String[] { "_log", "_stem", "_block" }; protected final boolean large; diff --git a/src/main/java/com/simibubi/create/content/schematics/cannon/LaunchedItem.java b/src/main/java/com/simibubi/create/content/schematics/cannon/LaunchedItem.java index 4540a976e..18c4f3272 100644 --- a/src/main/java/com/simibubi/create/content/schematics/cannon/LaunchedItem.java +++ b/src/main/java/com/simibubi/create/content/schematics/cannon/LaunchedItem.java @@ -15,7 +15,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.core.HolderGetter; import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.NbtUtils; import net.minecraft.nbt.Tag; @@ -24,6 +24,7 @@ import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.EntityType; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.Level; +import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.state.BlockState; public abstract class LaunchedItem { @@ -71,16 +72,16 @@ public abstract class LaunchedItem { return c; } - public static LaunchedItem fromNBT(CompoundTag c) { + public static LaunchedItem fromNBT(CompoundTag c, HolderGetter holderGetter) { LaunchedItem launched = c.contains("Length") ? new LaunchedItem.ForBelt() : c.contains("BlockState") ? new LaunchedItem.ForBlockState() : new LaunchedItem.ForEntity(); - launched.readNBT(c); + launched.readNBT(c, holderGetter); return launched; } abstract void place(Level world); - void readNBT(CompoundTag c) { + void readNBT(CompoundTag c, HolderGetter holderGetter) { target = NbtUtils.readBlockPos(c.getCompound("Target")); ticksRemaining = c.getInt("TicksLeft"); totalTicks = c.getInt("TotalTicks"); @@ -113,11 +114,10 @@ public abstract class LaunchedItem { return serializeNBT; } - @SuppressWarnings("deprecation") @Override - void readNBT(CompoundTag nbt) { - super.readNBT(nbt); - state = NbtUtils.readBlockState(BuiltInRegistries.BLOCK.asLookup(), nbt.getCompound("BlockState")); + void readNBT(CompoundTag nbt, HolderGetter holderGetter) { + super.readNBT(nbt, holderGetter); + state = NbtUtils.readBlockState(holderGetter, nbt.getCompound("BlockState")); if (nbt.contains("Data", Tag.TAG_COMPOUND)) { data = nbt.getCompound("Data"); } @@ -147,14 +147,14 @@ public abstract class LaunchedItem { } @Override - void readNBT(CompoundTag nbt) { + void readNBT(CompoundTag nbt, HolderGetter holderGetter) { length = nbt.getInt("Length"); int[] intArray = nbt.getIntArray("Casing"); casings = new CasingType[length]; for (int i = 0; i < casings.length; i++) casings[i] = i >= intArray.length ? CasingType.NONE : CasingType.values()[Mth.clamp(intArray[i], 0, CasingType.values().length - 1)]; - super.readNBT(nbt); + super.readNBT(nbt, holderGetter); } public ForBelt(BlockPos start, BlockPos target, ItemStack stack, BlockState state, CasingType[] casings) { @@ -225,8 +225,8 @@ public abstract class LaunchedItem { } @Override - void readNBT(CompoundTag nbt) { - super.readNBT(nbt); + void readNBT(CompoundTag nbt, HolderGetter holderGetter) { + super.readNBT(nbt, holderGetter); if (nbt.contains("Entity")) deferredTag = nbt.getCompound("Entity"); } diff --git a/src/main/java/com/simibubi/create/content/schematics/cannon/SchematicannonBlockEntity.java b/src/main/java/com/simibubi/create/content/schematics/cannon/SchematicannonBlockEntity.java index 54f48c434..3d121b0f0 100644 --- a/src/main/java/com/simibubi/create/content/schematics/cannon/SchematicannonBlockEntity.java +++ b/src/main/java/com/simibubi/create/content/schematics/cannon/SchematicannonBlockEntity.java @@ -189,7 +189,7 @@ public class SchematicannonBlockEntity extends SmartBlockEntity implements MenuP for (int i = 0; i < tagBlocks.size(); i++) { CompoundTag c = tagBlocks.getCompound(i); - LaunchedItem launched = LaunchedItem.fromNBT(c); + LaunchedItem launched = LaunchedItem.fromNBT(c, blockHolderGetter()); BlockPos readBlockPos = launched.target; // Always write to Server block entity diff --git a/src/main/java/com/simibubi/create/content/schematics/cannon/SchematicannonScreen.java b/src/main/java/com/simibubi/create/content/schematics/cannon/SchematicannonScreen.java index 27926e2d0..f8fc42e1e 100644 --- a/src/main/java/com/simibubi/create/content/schematics/cannon/SchematicannonScreen.java +++ b/src/main/java/com/simibubi/create/content/schematics/cannon/SchematicannonScreen.java @@ -259,7 +259,7 @@ public class SchematicannonScreen extends AbstractSimiContainerScreen tip = button.getToolTip(); diff --git a/src/main/java/com/simibubi/create/content/schematics/client/SchematicRenderer.java b/src/main/java/com/simibubi/create/content/schematics/client/SchematicRenderer.java index 9fa2aa9dd..f49055c10 100644 --- a/src/main/java/com/simibubi/create/content/schematics/client/SchematicRenderer.java +++ b/src/main/java/com/simibubi/create/content/schematics/client/SchematicRenderer.java @@ -117,6 +117,7 @@ public class SchematicRenderer { BakedModel model = dispatcher.getBlockModel(state); BlockEntity blockEntity = renderWorld.getBlockEntity(localPos); ModelData modelData = blockEntity != null ? blockEntity.getModelData() : ModelData.EMPTY; + modelData = model.getModelData(renderWorld, pos, state, modelData); long seed = state.getSeed(pos); random.setSeed(seed); if (model.getRenderTypes(state, random, modelData).contains(layer)) { diff --git a/src/main/java/com/simibubi/create/content/schematics/client/ToolSelectionScreen.java b/src/main/java/com/simibubi/create/content/schematics/client/ToolSelectionScreen.java index b585a39e3..86e222bf0 100644 --- a/src/main/java/com/simibubi/create/content/schematics/client/ToolSelectionScreen.java +++ b/src/main/java/com/simibubi/create/content/schematics/client/ToolSelectionScreen.java @@ -111,13 +111,16 @@ public class ToolSelectionScreen extends Screen { } else { x += 65; } + for (int i = 0; i < tools.size(); i++) { + RenderSystem.enableBlend(); matrixStack.pushPose(); float alpha = focused ? 1 : .2f; if (i == selection) { matrixStack.translate(0, -10, 0); + RenderSystem.setShaderColor(1, 1, 1, 1); graphics.drawCenteredString(minecraft.font, tools.get(i) .getDisplayName() .getString(), x + i * 50 + 24, y + 28, 0xCCDDFF); diff --git a/src/main/java/com/simibubi/create/content/trains/schedule/ScheduleScreen.java b/src/main/java/com/simibubi/create/content/trains/schedule/ScheduleScreen.java index b99b3cdfb..2ffa5c6af 100644 --- a/src/main/java/com/simibubi/create/content/trains/schedule/ScheduleScreen.java +++ b/src/main/java/com/simibubi/create/content/trains/schedule/ScheduleScreen.java @@ -379,7 +379,7 @@ public class ScheduleScreen extends AbstractSimiContainerScreen { PoseStack matrixStack = graphics.pose(); UIRenderHelper.swapAndBlitColor(minecraft.getMainRenderTarget(), UIRenderHelper.framebuffer); - UIRenderHelper.drawStretched(graphics, leftPos + 33, topPos + 16, 3, 173, -100, AllGuiTextures.SCHEDULE_STRIP_DARK); + UIRenderHelper.drawStretched(graphics, leftPos + 33, topPos + 16, 3, 173, 200, AllGuiTextures.SCHEDULE_STRIP_DARK); int yOffset = 25; List entries = schedule.entries; @@ -613,6 +613,7 @@ public class ScheduleScreen extends AbstractSimiContainerScreen { AllGuiTextures item = AllGuiTextures.SCHEDULE_CONDITION_ITEM; AllGuiTextures right = AllGuiTextures.SCHEDULE_CONDITION_RIGHT; + matrixStack.translate(x, y, 0); UIRenderHelper.drawStretched(graphics, 0, 0, fieldSize, 16, -100, middle); left.render(graphics, clean ? 0 : -3, 0); right.render(graphics, fieldSize - 2, 0); diff --git a/src/main/java/com/simibubi/create/content/trains/schedule/condition/CargoThresholdCondition.java b/src/main/java/com/simibubi/create/content/trains/schedule/condition/CargoThresholdCondition.java index 337d732f0..d14a0e196 100644 --- a/src/main/java/com/simibubi/create/content/trains/schedule/condition/CargoThresholdCondition.java +++ b/src/main/java/com/simibubi/create/content/trains/schedule/condition/CargoThresholdCondition.java @@ -120,7 +120,7 @@ public abstract class CargoThresholdCondition extends LazyTickedScheduleConditio public void initConfigurationWidgets(ModularGuiLineBuilder builder) { builder.addSelectionScrollInput(0, 24, (i, l) -> { i.forOptions(Ops.translatedOptions()) - .titled(Lang.translateDirect("schedule.condition.threshold.train_holds")) + .titled(Lang.translateDirect("schedule.condition.threshold.train_holds", "")) .format(state -> Components.literal(" " + Ops.values()[state].formatted)); }, "Operator"); builder.addIntegerTextInput(29, 41, (e, t) -> { diff --git a/src/main/java/com/simibubi/create/foundation/blockEntity/SyncedBlockEntity.java b/src/main/java/com/simibubi/create/foundation/blockEntity/SyncedBlockEntity.java index 842077a84..30f6b33f0 100644 --- a/src/main/java/com/simibubi/create/foundation/blockEntity/SyncedBlockEntity.java +++ b/src/main/java/com/simibubi/create/foundation/blockEntity/SyncedBlockEntity.java @@ -4,10 +4,14 @@ import javax.annotation.ParametersAreNonnullByDefault; import net.minecraft.MethodsReturnNonnullByDefault; import net.minecraft.core.BlockPos; +import net.minecraft.core.HolderGetter; +import net.minecraft.core.registries.BuiltInRegistries; +import net.minecraft.core.registries.Registries; import net.minecraft.nbt.CompoundTag; import net.minecraft.network.Connection; import net.minecraft.network.protocol.game.ClientboundBlockEntityDataPacket; import net.minecraft.server.level.ServerLevel; +import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.state.BlockState; @@ -71,4 +75,11 @@ public abstract class SyncedBlockEntity extends BlockEntity { public LevelChunk containedChunk() { return level.getChunkAt(worldPosition); } + + @SuppressWarnings("deprecation") + public HolderGetter blockHolderGetter() { + return (HolderGetter) (level != null ? level.holderLookup(Registries.BLOCK) + : BuiltInRegistries.BLOCK.asLookup()); + } + } diff --git a/src/main/java/com/simibubi/create/foundation/config/ui/ConfigTextField.java b/src/main/java/com/simibubi/create/foundation/config/ui/ConfigTextField.java index 1dc7b92e1..4386a79a2 100644 --- a/src/main/java/com/simibubi/create/foundation/config/ui/ConfigTextField.java +++ b/src/main/java/com/simibubi/create/foundation/config/ui/ConfigTextField.java @@ -7,6 +7,19 @@ public class ConfigTextField extends HintableTextFieldWidget { public ConfigTextField(Font font, int x, int y, int width, int height) { super(font, x, y, width, height); } + + @Override + public boolean mouseClicked(double x, double y, int button) { + if (!isMouseOver(x, y)) + setFocused(false); + return super.mouseClicked(x, y, button); + } + + @Override + public void onClick(double pMouseX, double pMouseY) { + super.onClick(pMouseX, pMouseY); + setFocused(true); + } @Override public void setFocused(boolean focus) { diff --git a/src/main/java/com/simibubi/create/foundation/data/CreateRegistrate.java b/src/main/java/com/simibubi/create/foundation/data/CreateRegistrate.java index 9751857cc..987cde4d0 100644 --- a/src/main/java/com/simibubi/create/foundation/data/CreateRegistrate.java +++ b/src/main/java/com/simibubi/create/foundation/data/CreateRegistrate.java @@ -2,6 +2,8 @@ package com.simibubi.create.foundation.data; import static com.simibubi.create.foundation.data.TagGen.pickaxeOnly; +import java.util.IdentityHashMap; +import java.util.Map; import java.util.function.BiConsumer; import java.util.function.Consumer; import java.util.function.Function; @@ -36,6 +38,7 @@ import net.minecraft.tags.BlockTags; import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.EntityType; import net.minecraft.world.entity.MobCategory; +import net.minecraft.world.item.CreativeModeTab; import net.minecraft.world.item.Item; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.entity.BlockEntity; @@ -75,6 +78,18 @@ public class CreateRegistrate extends AbstractRegistrate { public CreateRegistrate registerEventListeners(IEventBus bus) { return super.registerEventListeners(bus); } + + private static Map, RegistryObject> tabLookup = new IdentityHashMap<>(); + private RegistryObject currentTab; + + public CreateRegistrate useCreativeTab(RegistryObject tab) { + this.currentTab = tab; + return this; + } + + public boolean isInCreativeTab(RegistryEntry entry, RegistryObject tab) { + return tabLookup.get(entry) == tab; + } @Override protected RegistryEntry accept(String name, ResourceKey> type, @@ -86,6 +101,8 @@ public class CreateRegistrate extends AbstractRegistrate { TooltipModifier.REGISTRY.registerDeferred(entry.getId(), currentTooltipModifierFactory); } } + if (currentTab != null) + tabLookup.put(entry, currentTab); return entry; } diff --git a/src/main/java/com/simibubi/create/foundation/gui/AbstractSimiScreen.java b/src/main/java/com/simibubi/create/foundation/gui/AbstractSimiScreen.java index 5211a32f8..5c8a3a302 100644 --- a/src/main/java/com/simibubi/create/foundation/gui/AbstractSimiScreen.java +++ b/src/main/java/com/simibubi/create/foundation/gui/AbstractSimiScreen.java @@ -10,6 +10,7 @@ import com.simibubi.create.foundation.utility.Components; import net.minecraft.client.gui.GuiGraphics; import net.minecraft.client.gui.components.AbstractWidget; +import net.minecraft.client.gui.components.EditBox; import net.minecraft.client.gui.components.Renderable; import net.minecraft.client.gui.components.events.GuiEventListener; import net.minecraft.client.gui.narration.NarratableEntry; @@ -66,6 +67,13 @@ public abstract class AbstractSimiScreen extends Screen { } } + @Override + public boolean mouseClicked(double pMouseX, double pMouseY, int pButton) { + if (getFocused() != null && !getFocused().isMouseOver(pMouseX, pMouseY)) + setFocused(null); + return super.mouseClicked(pMouseX, pMouseY, pButton); + } + @Override public boolean isPauseScreen() { return false; @@ -118,7 +126,7 @@ public abstract class AbstractSimiScreen extends Screen { @Override public boolean keyPressed(int keyCode, int scanCode, int modifiers) { boolean keyPressed = super.keyPressed(keyCode, scanCode, modifiers); - if (keyPressed || getFocused() != null) + if (keyPressed || getFocused() instanceof EditBox) return keyPressed; InputConstants.Key mouseKey = InputConstants.getKey(keyCode, scanCode); @@ -140,7 +148,7 @@ public abstract class AbstractSimiScreen extends Screen { protected void renderWindowForeground(GuiGraphics graphics, int mouseX, int mouseY, float partialTicks) { for (Renderable widget : renderables) { - if (widget instanceof AbstractSimiWidget simiWidget && simiWidget.isHoveredOrFocused() + if (widget instanceof AbstractSimiWidget simiWidget && simiWidget.isMouseOver(mouseX, mouseY) && simiWidget.visible) { List tooltip = simiWidget.getToolTip(); if (tooltip.isEmpty()) diff --git a/src/main/java/com/simibubi/create/foundation/gui/element/GuiGameElement.java b/src/main/java/com/simibubi/create/foundation/gui/element/GuiGameElement.java index 2a794a0c9..50cc389cb 100644 --- a/src/main/java/com/simibubi/create/foundation/gui/element/GuiGameElement.java +++ b/src/main/java/com/simibubi/create/foundation/gui/element/GuiGameElement.java @@ -275,6 +275,7 @@ public class GuiGameElement { renderer.textureManager.getTexture(InventoryMenu.BLOCK_ATLAS).setFilter(false, false); RenderSystem.setShaderTexture(0, InventoryMenu.BLOCK_ATLAS); RenderSystem.enableBlend(); + RenderSystem.enableCull(); RenderSystem.blendFunc(GlStateManager.SourceFactor.SRC_ALPHA, GlStateManager.DestFactor.ONE_MINUS_SRC_ALPHA); RenderSystem.setShaderColor(1.0F, 1.0F, 1.0F, 1.0F); matrixStack.pushPose(); @@ -288,7 +289,9 @@ public class GuiGameElement { } renderer.render(stack, ItemDisplayContext.GUI, false, matrixStack, buffer, LightTexture.FULL_BRIGHT, OverlayTexture.NO_OVERLAY, bakedModel); + RenderSystem.disableDepthTest(); buffer.endBatch(); + RenderSystem.enableDepthTest(); if (useDefaultLighting && flatLighting) { Lighting.setupFor3DItems(); diff --git a/src/main/java/com/simibubi/create/foundation/gui/element/RenderElement.java b/src/main/java/com/simibubi/create/foundation/gui/element/RenderElement.java index 925f57a53..a7829631f 100644 --- a/src/main/java/com/simibubi/create/foundation/gui/element/RenderElement.java +++ b/src/main/java/com/simibubi/create/foundation/gui/element/RenderElement.java @@ -1,7 +1,5 @@ package com.simibubi.create.foundation.gui.element; -import com.mojang.blaze3d.vertex.PoseStack; - import net.minecraft.client.gui.GuiGraphics; public abstract class RenderElement implements ScreenElement { diff --git a/src/main/java/com/simibubi/create/foundation/gui/menu/AbstractSimiContainerScreen.java b/src/main/java/com/simibubi/create/foundation/gui/menu/AbstractSimiContainerScreen.java index d03276188..af8a5c472 100644 --- a/src/main/java/com/simibubi/create/foundation/gui/menu/AbstractSimiContainerScreen.java +++ b/src/main/java/com/simibubi/create/foundation/gui/menu/AbstractSimiContainerScreen.java @@ -7,13 +7,13 @@ import java.util.List; import javax.annotation.ParametersAreNonnullByDefault; import com.mojang.blaze3d.platform.InputConstants; -import com.mojang.blaze3d.vertex.PoseStack; import com.simibubi.create.foundation.gui.AllGuiTextures; import com.simibubi.create.foundation.gui.TickableGuiEventListener; import com.simibubi.create.foundation.gui.widget.AbstractSimiWidget; import net.minecraft.client.gui.GuiGraphics; import net.minecraft.client.gui.components.AbstractWidget; +import net.minecraft.client.gui.components.EditBox; import net.minecraft.client.gui.components.Renderable; import net.minecraft.client.gui.components.events.GuiEventListener; import net.minecraft.client.gui.narration.NarratableEntry; @@ -115,7 +115,7 @@ public abstract class AbstractSimiContainerScreen tooltip = simiWidget.getToolTip(); if (tooltip.isEmpty()) continue; @@ -138,11 +138,18 @@ public abstract class AbstractSimiContainerScreen T withCallback(BiConsumer cb) { this.onClick = cb; diff --git a/src/main/java/com/simibubi/create/foundation/gui/widget/IconButton.java b/src/main/java/com/simibubi/create/foundation/gui/widget/IconButton.java index b8cd904d2..1310efba8 100644 --- a/src/main/java/com/simibubi/create/foundation/gui/widget/IconButton.java +++ b/src/main/java/com/simibubi/create/foundation/gui/widget/IconButton.java @@ -26,7 +26,7 @@ public class IconButton extends AbstractSimiWidget { isHovered = mouseX >= getX() && mouseY >= getY() && mouseX < getX() + width && mouseY < getY() + height; AllGuiTextures button = !active ? AllGuiTextures.BUTTON_DOWN - : isHoveredOrFocused() ? AllGuiTextures.BUTTON_HOVER : AllGuiTextures.BUTTON; + : isMouseOver(mouseX, mouseY) ? AllGuiTextures.BUTTON_HOVER : AllGuiTextures.BUTTON; RenderSystem.setShaderColor(1.0F, 1.0F, 1.0F, 1.0F); drawBg(graphics, button); diff --git a/src/main/java/com/simibubi/create/foundation/gui/widget/Indicator.java b/src/main/java/com/simibubi/create/foundation/gui/widget/Indicator.java index ff6ebf491..9a4aada86 100644 --- a/src/main/java/com/simibubi/create/foundation/gui/widget/Indicator.java +++ b/src/main/java/com/simibubi/create/foundation/gui/widget/Indicator.java @@ -12,7 +12,7 @@ public class Indicator extends AbstractSimiWidget { public Indicator(int x, int y, Component tooltip) { super(x, y, AllGuiTextures.INDICATOR.width, AllGuiTextures.INDICATOR.height); - this.toolTip = ImmutableList.of(tooltip); + this.toolTip = toolTip.isEmpty() ? ImmutableList.of() : ImmutableList.of(tooltip); this.state = State.OFF; } diff --git a/src/main/java/com/simibubi/create/foundation/ponder/element/WorldSectionElement.java b/src/main/java/com/simibubi/create/foundation/ponder/element/WorldSectionElement.java index ef12d44db..465bcb6a3 100644 --- a/src/main/java/com/simibubi/create/foundation/ponder/element/WorldSectionElement.java +++ b/src/main/java/com/simibubi/create/foundation/ponder/element/WorldSectionElement.java @@ -439,6 +439,7 @@ public class WorldSectionElement extends AnimatedSceneElement { BakedModel model = dispatcher.getBlockModel(state); BlockEntity blockEntity = world.getBlockEntity(pos); ModelData modelData = blockEntity != null ? blockEntity.getModelData() : ModelData.EMPTY; + modelData = model.getModelData(world, pos, state, modelData); long seed = state.getSeed(pos); random.setSeed(seed); if (model.getRenderTypes(state, random, modelData).contains(layer)) { diff --git a/src/main/java/com/simibubi/create/foundation/ponder/ui/NavigatableSimiScreen.java b/src/main/java/com/simibubi/create/foundation/ponder/ui/NavigatableSimiScreen.java index 9f35a6f59..392d0614f 100644 --- a/src/main/java/com/simibubi/create/foundation/ponder/ui/NavigatableSimiScreen.java +++ b/src/main/java/com/simibubi/create/foundation/ponder/ui/NavigatableSimiScreen.java @@ -147,7 +147,8 @@ public abstract class NavigatableSimiScreen extends AbstractSimiScreen { ms.translate(0, 0, -1000); UIRenderHelper.framebuffer.bindWrite(true); PonderTooltipHandler.enable = false; - lastScreen.render(graphics, mouseX, mouseY, partialTicks); + // Using 0,0 for mouse coords to hide tooltips + lastScreen.render(graphics, 0, 0, partialTicks); PonderTooltipHandler.enable = true; ms.popPose(); diff --git a/src/main/java/com/simibubi/create/foundation/ponder/ui/PonderButton.java b/src/main/java/com/simibubi/create/foundation/ponder/ui/PonderButton.java index a1fcb5a3e..d2f8cfa81 100644 --- a/src/main/java/com/simibubi/create/foundation/ponder/ui/PonderButton.java +++ b/src/main/java/com/simibubi/create/foundation/ponder/ui/PonderButton.java @@ -1,7 +1,5 @@ package com.simibubi.create.foundation.ponder.ui; -import javax.annotation.Nonnull; - import com.mojang.blaze3d.vertex.PoseStack; import com.simibubi.create.foundation.gui.Theme; import com.simibubi.create.foundation.gui.Theme.Key; diff --git a/src/main/java/com/simibubi/create/foundation/utility/ghost/GhostBlockRenderer.java b/src/main/java/com/simibubi/create/foundation/utility/ghost/GhostBlockRenderer.java index 8c6a341e9..eb8f89f85 100644 --- a/src/main/java/com/simibubi/create/foundation/utility/ghost/GhostBlockRenderer.java +++ b/src/main/java/com/simibubi/create/foundation/utility/ghost/GhostBlockRenderer.java @@ -109,12 +109,12 @@ public abstract class GhostBlockRenderer { for (Direction direction : Direction.values()) { random.setSeed(42L); renderQuadList(pose, consumer, red, green, blue, alpha, - model.getQuads(state, direction, random, modelData, renderType), packedLight, packedOverlay); + model.getQuads(state, direction, random, modelData, null), packedLight, packedOverlay); } random.setSeed(42L); renderQuadList(pose, consumer, red, green, blue, alpha, - model.getQuads(state, null, random, modelData, renderType), packedLight, packedOverlay); + model.getQuads(state, null, random, modelData, null), packedLight, packedOverlay); } // ModelBlockRenderer diff --git a/src/main/java/com/simibubi/create/infrastructure/gui/CreateMainMenuScreen.java b/src/main/java/com/simibubi/create/infrastructure/gui/CreateMainMenuScreen.java index 1a71698e1..951896225 100644 --- a/src/main/java/com/simibubi/create/infrastructure/gui/CreateMainMenuScreen.java +++ b/src/main/java/com/simibubi/create/infrastructure/gui/CreateMainMenuScreen.java @@ -228,6 +228,7 @@ public class CreateMainMenuScreen extends AbstractSimiScreen { @Override protected void renderWidget(GuiGraphics graphics, int pMouseX, int pMouseY, float pt) { + super.renderWidget(graphics, pMouseX, pMouseY, pt); PoseStack pPoseStack = graphics.pose(); pPoseStack.pushPose(); pPoseStack.translate(getX() + width / 2 - (icon.width * scale) / 2, getY() + height / 2 - (icon.height * scale) / 2, 0); diff --git a/src/main/resources/assets/create/lang/default/interface.json b/src/main/resources/assets/create/lang/default/interface.json index 8379e8257..2e6531e66 100644 --- a/src/main/resources/assets/create/lang/default/interface.json +++ b/src/main/resources/assets/create/lang/default/interface.json @@ -533,20 +533,20 @@ "create.tooltip.keyShift": "Shift", "create.tooltip.keyCtrl": "Ctrl", - "create.tooltip.speedRequirement": "Speed Requirement: %1$s", + "create.tooltip.speedRequirement": "Speed Requirement:", "create.tooltip.speedRequirement.none": "None", "create.tooltip.speedRequirement.slow": "Slow", "create.tooltip.speedRequirement.medium": "Moderate", "create.tooltip.speedRequirement.fast": "Fast", - "create.tooltip.stressImpact": "Kinetic Stress Impact: %1$s", + "create.tooltip.stressImpact": "Kinetic Stress Impact:", "create.tooltip.stressImpact.low": "Low", "create.tooltip.stressImpact.medium": "Moderate", "create.tooltip.stressImpact.high": "High", "create.tooltip.stressImpact.overstressed": "Overstressed", "create.tooltip.up_to": "Up to %1$s", - "create.tooltip.capacityProvided": "Kinetic Stress Capacity: %1$s", + "create.tooltip.capacityProvided": "Kinetic Stress Capacity:", "create.tooltip.capacityProvided.low": "Small", "create.tooltip.capacityProvided.medium": "Medium", "create.tooltip.capacityProvided.high": "Large",