Port to 1.20.6 (#494)

* Begin port to 1.20.6

* Port to 1.20.6

* decrease diff

* Fix Creative Tab Ordering

* add test for creative tab ordering

* change up test

* add github actions build for 1.20.6

* fix some outdated things in the github actions

* use the mod bus instead of the neoforge bus when registering menu screens

* update versions in `build.gradle`

* change to 20.6.70-beta

* require 20.6.70

* this doesn't need fabric

Signed-off-by: shedaniel <daniel@shedaniel.me>

---------

Signed-off-by: shedaniel <daniel@shedaniel.me>
Co-authored-by: shedaniel <daniel@shedaniel.me>
This commit is contained in:
Jab125
2024-05-18 22:29:27 +10:00
committed by GitHub
parent 26bf197197
commit ba78f466ea
15 changed files with 97 additions and 24 deletions

View File

@@ -122,7 +122,7 @@ unifiedPublishing {
displayName = "[NeoForge $rootProject.supported_version] v$project.version"
releaseType = "$rootProject.artifact_type"
changelog = releaseChangelog()
gameVersions = ["1.20.5"]
gameVersions = ["1.20.6"]
gameLoaders = ["neoforge"]
mainPublication renameJarForPublication

View File

@@ -19,6 +19,7 @@
package dev.architectury.core.item.forge.imitator;
import dev.architectury.hooks.fluid.FluidBucketHooks;
import dev.architectury.platform.hooks.EventBusesHooks;
import dev.architectury.utils.ArchitecturyConstants;
import net.minecraft.core.registries.BuiltInRegistries;
@@ -49,6 +50,6 @@ public class ArchitecturyBucketItem extends BucketItem {
}
public final Fluid getContainedFluid() {
return getFluid();
return FluidBucketHooks.getFluid(this);
}
}

View File

@@ -46,9 +46,9 @@ import net.neoforged.neoforge.event.tick.ServerTickEvent;
import net.neoforged.neoforge.event.entity.EntityJoinLevelEvent;
import net.neoforged.neoforge.event.entity.item.ItemTossEvent;
import net.neoforged.neoforge.event.entity.living.AnimalTameEvent;
import net.neoforged.neoforge.event.entity.living.FinalizeSpawnEvent;
import net.neoforged.neoforge.event.entity.living.LivingAttackEvent;
import net.neoforged.neoforge.event.entity.living.LivingDeathEvent;
import net.neoforged.neoforge.event.entity.living.MobSpawnEvent;
import net.neoforged.neoforge.event.entity.player.*;
import net.neoforged.neoforge.event.entity.player.PlayerEvent.*;
import net.neoforged.neoforge.event.level.BlockEvent.BreakEvent;
@@ -268,8 +268,8 @@ public class EventHandlerImplCommon {
// }
@SubscribeEvent(priority = EventPriority.HIGH)
public static void eventLivingSpawnEvent(MobSpawnEvent.FinalizeSpawn event) {
EventResult result = EntityEvent.LIVING_CHECK_SPAWN.invoker().canSpawn(event.getEntity(), event.getLevel(), event.getX(), event.getY(), event.getZ(), event.getSpawnType(), event.getSpawner());
public static void eventLivingSpawnEvent(FinalizeSpawnEvent event) {
EventResult result = EntityEvent.LIVING_CHECK_SPAWN.invoker().canSpawn(event.getEntity(), event.getLevel(), event.getX(), event.getY(), event.getZ(), event.getSpawnType(), null);//TODO FIX: , event.getSpawner());
if (result.interruptsFurtherEvaluation()) {
if (!result.isEmpty()) {
event.setSpawnCancelled(result.value());

View File

@@ -19,11 +19,12 @@
package dev.architectury.hooks.fluid.forge;
import dev.architectury.mixin.forge.neoforge.BucketItemAccessor;
import net.minecraft.world.item.BucketItem;
import net.minecraft.world.level.material.Fluid;
public class FluidBucketHooksImpl {
public static Fluid getFluid(BucketItem item) {
return item.getFluid();
return ((BucketItemAccessor) item).getContent();
}
}

View File

@@ -0,0 +1,31 @@
/*
* This file is part of architectury.
* Copyright (C) 2020, 2021, 2022 architectury
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 3 of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this program; if not, write to the Free Software Foundation,
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
package dev.architectury.mixin.forge.neoforge;
import net.minecraft.world.item.BucketItem;
import net.minecraft.world.level.material.Fluid;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.gen.Accessor;
@Mixin(BucketItem.class)
public interface BucketItemAccessor {
@Accessor("content")
Fluid getContent();
}

View File

@@ -176,6 +176,12 @@ public class CreativeTabRegistryImpl {
if (after.isEmpty()) {
entries.put(stack, visibility);
} else {
for (Map.Entry<ItemStack, CreativeModeTab.TabVisibility> entry : entries) {
if (ItemStack.isSameItemSameComponents(entry.getKey(), after)) {
after = entry.getKey();
break;
}
}
entries.putAfter(after, stack, visibility);
}
}
@@ -185,6 +191,12 @@ public class CreativeTabRegistryImpl {
if (before.isEmpty()) {
entries.put(stack, visibility);
} else {
for (Map.Entry<ItemStack, CreativeModeTab.TabVisibility> entry : entries) {
if (ItemStack.isSameItemSameComponents(entry.getKey(), before)) {
before = entry.getKey();
break;
}
}
entries.putBefore(before, stack, visibility);
}
}

View File

@@ -19,10 +19,12 @@
package dev.architectury.registry.menu.forge;
import dev.architectury.platform.hooks.EventBusesHooks;
import dev.architectury.registry.menu.ExtendedMenuProvider;
import dev.architectury.registry.menu.MenuRegistry.ExtendedMenuTypeFactory;
import dev.architectury.registry.menu.MenuRegistry.ScreenFactory;
import dev.architectury.registry.menu.MenuRegistry.SimpleMenuTypeFactory;
import dev.architectury.utils.ArchitecturyConstants;
import net.minecraft.client.gui.screens.MenuScreens;
import net.minecraft.client.gui.screens.Screen;
import net.minecraft.client.gui.screens.inventory.MenuAccess;
@@ -32,6 +34,8 @@ import net.minecraft.world.inventory.AbstractContainerMenu;
import net.minecraft.world.inventory.MenuType;
import net.neoforged.api.distmarker.Dist;
import net.neoforged.api.distmarker.OnlyIn;
import net.neoforged.neoforge.client.event.RegisterMenuScreensEvent;
import net.neoforged.neoforge.common.NeoForge;
import net.neoforged.neoforge.common.extensions.IMenuTypeExtension;
public class MenuRegistryImpl {
@@ -48,8 +52,11 @@ public class MenuRegistryImpl {
return IMenuTypeExtension.create(factory::create);
}
@SuppressWarnings("CodeBlock2Expr") // It's neater this way
@OnlyIn(Dist.CLIENT)
public static <H extends AbstractContainerMenu, S extends Screen & MenuAccess<H>> void registerScreenFactory(MenuType<? extends H> type, ScreenFactory<H, S> factory) {
MenuScreens.register(type, factory::create);
EventBusesHooks.whenAvailable(ArchitecturyConstants.MOD_ID, bus -> {
bus.addListener(RegisterMenuScreensEvent.class, event -> event.register(type, factory::create));
});
}
}

View File

@@ -17,14 +17,14 @@ license = "LGPL-3"
[[dependencies.architectury]]
modId = "minecraft"
type = "required"
versionRange = "[1.20.5,)"
versionRange = "[1.20.6,)"
ordering = "NONE"
side = "BOTH"
[[dependencies.architectury]]
modId = "neoforge"
type = "required"
versionRange = "[20.5.0-beta,)"
versionRange = "[20.6.70-beta,)"
ordering = "NONE"
side = "BOTH"

View File

@@ -10,6 +10,7 @@
"MixinMinecraft"
],
"mixins": [
"neoforge.BucketItemAccessor",
"neoforge.LiquidBlockAccessor",
"neoforge.MixinChunkSerializer",
"MixinFallingBlockEntity",