Make main source set compile against 1.19.2

This commit is contained in:
DBotThePony 2024-01-02 00:53:33 +07:00
parent e00f79c736
commit 11e66d50a4
Signed by: DBot
GPG Key ID: DCC23B5715498507
6 changed files with 143 additions and 141 deletions

View File

@ -2,8 +2,11 @@ package ru.dbotthepony.mc.otm;
import kotlin.KotlinVersion;
import net.minecraft.MethodsReturnNonnullByDefault;
import net.minecraft.core.NonNullList;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.world.entity.Entity;
import net.minecraft.world.item.CreativeModeTab;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.crafting.Ingredient;
import net.minecraft.world.level.block.entity.BlockEntity;
import net.minecraftforge.api.distmarker.Dist;
@ -84,14 +87,38 @@ public final class OverdriveThatMatters {
}
}
public final CreativeModeTab CREATIVE_TAB = new CreativeModeTab("otm") {
@Override
public ItemStack makeIcon() {
return new ItemStack(MItems.INSTANCE.getBATTERY_CREATIVE(), 1);
}
@Override
public void fillItemList(NonNullList<ItemStack> p_40778_) {
MCreativeTabsKt.getMainTabContents().fillIn(p_40778_);
}
};
public final CreativeModeTab CREATIVE_TAB_DECORATIVE = new CreativeModeTab("otm_decorative") {
@Override
public ItemStack makeIcon() {
return new ItemStack(MRegistry.INSTANCE.getVENT().getItem(), 1);
}
@Override
public void fillItemList(NonNullList<ItemStack> p_40778_) {
MCreativeTabsKt.getDecorativeTabContents().fillIn(p_40778_);
}
};
public static OverdriveThatMatters INSTANCE;
public static ResourceLocation loc(String path) {
return new ResourceLocation(MOD_ID, path);
}
private static void checkIfKotlinIsInstalled() {
if (!KotlinVersion.CURRENT.isAtLeast(1, 9, 0)) {
throw new UnsupportedClassVersionError("Installed kotlin version is " + KotlinVersion.CURRENT + ", when at least 1.9.0 is required.");
if (!KotlinVersion.CURRENT.isAtLeast(1, 8, 0)) {
throw new UnsupportedClassVersionError("Installed kotlin version is " + KotlinVersion.CURRENT + ", when at least 1.8.0 is required.");
}
}
@ -135,7 +162,6 @@ public final class OverdriveThatMatters {
modBus.addListener(EventPriority.NORMAL, AndroidAbilityKeyMapping.INSTANCE::register);
modBus.addListener(EventPriority.NORMAL, TritaniumArmorModel::register);
modBus.addListener(EventPriority.NORMAL, GravitationStabilizerModel::register);
modBus.addListener(EventPriority.NORMAL, MCreativeTabs.INSTANCE::register);
modBus.addListener(EventPriority.NORMAL, BatteryBankRenderer.Companion::onRegisterAdditionalModels);
modBus.addListener(EventPriority.NORMAL, MatterBatteryBankRenderer.Companion::onRegisterAdditionalModels);

View File

@ -21,11 +21,8 @@ import net.minecraft.client.renderer.entity.layers.RenderLayer;
import net.minecraft.client.renderer.entity.player.PlayerRenderer;
import net.minecraft.resources.ResourceLocation;
import net.minecraftforge.client.event.RenderPlayerEvent;
import org.joml.Vector3f;
import org.joml.Vector4f;
import ru.dbotthepony.mc.otm.OverdriveThatMatters;
import ru.dbotthepony.mc.otm.capability.MatteryCapability;
import ru.dbotthepony.mc.otm.network.SmokeParticlesPacket;
import javax.annotation.Nonnull;
import java.util.Set;

View File

@ -3,6 +3,7 @@ package ru.dbotthepony.mc.otm.mixin;
import net.minecraft.sounds.SoundSource;
import net.minecraft.world.damagesource.DamageSource;
import net.minecraft.world.entity.Entity;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.entity.projectile.AbstractHurtingProjectile;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
@ -29,7 +30,7 @@ public class MixinAbstractHurtingProjectile {
AbstractHurtingProjectile proj = (AbstractHurtingProjectile)(Object)this;
if (cap.isAndroid() && proj.getOwner() != entity) {
entity.level.playSound(entity, proj.blockPosition(), MSoundEvents.INSTANCE.getANDROID_PROJ_PARRY(), SoundSource.PLAYERS, 1.0f, 0.95f + entity.level.random.nextFloat() * 0.1f);
entity.level.playSound((Player) entity, proj.blockPosition(), MSoundEvents.INSTANCE.getANDROID_PROJ_PARRY(), SoundSource.PLAYERS, 1.0f, 0.95f + entity.level.random.nextFloat() * 0.1f);
}
});
}

View File

@ -1,6 +1,7 @@
package ru.dbotthepony.mc.otm.mixin;
import net.minecraft.client.renderer.GameRenderer;
import net.minecraft.server.packs.resources.ResourceManager;
import net.minecraft.server.packs.resources.ResourceProvider;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
@ -23,10 +24,10 @@ public class MixinGameRenderer {
}
@Inject(
method = "reloadShaders(Lnet/minecraft/server/packs/resources/ResourceProvider;)V",
method = "reloadShaders(Lnet/minecraft/server/packs/resources/ResourceManager;)V",
at = @At("HEAD")
)
private void reloadShaders(ResourceProvider p_250719_, CallbackInfo ci) {
private void reloadShaders(ResourceManager p_250719_, CallbackInfo ci) {
RenderHelperKt.reloadShaders(p_250719_);
}
}

View File

@ -2,19 +2,17 @@ package ru.dbotthepony.mc.otm.core.util
import it.unimi.dsi.fastutil.objects.Reference2IntFunction
import it.unimi.dsi.fastutil.objects.Reference2IntOpenHashMap
import net.minecraft.core.NonNullList
import net.minecraft.network.chat.Component
import net.minecraft.network.chat.MutableComponent
import net.minecraft.world.item.CreativeModeTabs
import net.minecraft.world.item.CreativeModeTab
import net.minecraft.world.item.Item
import net.minecraft.world.item.ItemStack
import net.minecraftforge.common.CreativeModeTabRegistry
import ru.dbotthepony.mc.otm.client.minecraft
import ru.dbotthepony.mc.otm.client.render.IGUIRenderable
import ru.dbotthepony.mc.otm.core.TranslatableComponent
import ru.dbotthepony.mc.otm.core.nullsFirst
import ru.dbotthepony.mc.otm.core.nullsLast
import ru.dbotthepony.mc.otm.core.registryName
import ru.dbotthepony.mc.otm.core.suppliers
import ru.dbotthepony.mc.otm.matter.MatterManager
import ru.dbotthepony.mc.otm.storage.ItemStorageStack
import ru.dbotthepony.mc.otm.client.render.Widgets18
@ -42,9 +40,12 @@ object CreativeMenuItemComparator : Comparator<Item> {
private fun doRebuild() {
var i = 0
for (tab in CreativeModeTabRegistry.getSortedCreativeModeTabs()) {
for (item in tab.displayItems) {
item2index.computeIfAbsent(item.item, Reference2IntFunction { i++ })
for (tab in CreativeModeTab.TABS) {
val output = NonNullList.create<ItemStack>()
tab.fillItemList(output)
output.forEach {
item2index.computeIfAbsent(it.item, Reference2IntFunction { i++ })
}
}
}
@ -52,14 +53,6 @@ object CreativeMenuItemComparator : Comparator<Item> {
private fun rebuild() {
if (item2index.isEmpty()) {
doRebuild()
if (item2index.isEmpty()) {
val player = minecraft.player ?: return
// creative tabs were not populated yet
CreativeModeTabs.tryRebuildTabContents(player.connection.enabledFeatures(), false /* operator tabs */)
doRebuild()
}
}
}

View File

@ -1,34 +1,117 @@
package ru.dbotthepony.mc.otm.registry
import net.minecraft.resources.ResourceLocation
import net.minecraft.world.item.CreativeModeTab
import net.minecraft.core.NonNullList
import net.minecraft.world.item.DyeColor
import net.minecraft.world.item.Item
import net.minecraft.world.item.ItemStack
import net.minecraft.world.level.ItemLike
import net.minecraft.world.level.material.Fluids
import net.minecraftforge.common.capabilities.ForgeCapabilities
import net.minecraftforge.event.CreativeModeTabEvent
import net.minecraftforge.fluids.FluidStack
import net.minecraftforge.fluids.capability.IFluidHandler
import net.minecraftforge.registries.ForgeRegistries
import ru.dbotthepony.mc.otm.OverdriveThatMatters
import ru.dbotthepony.mc.otm.capability.matter.matter
import ru.dbotthepony.mc.otm.capability.matteryEnergy
import ru.dbotthepony.mc.otm.core.TranslatableComponent
import ru.dbotthepony.mc.otm.core.ifPresentK
import ru.dbotthepony.mc.otm.core.registryName
import ru.dbotthepony.mc.otm.core.util.CreativeMenuItemComparator
import ru.dbotthepony.mc.otm.core.util.WriteOnce
import ru.dbotthepony.mc.otm.registry.MItems.BATTERY_CREATIVE
private fun CreativeModeTab.Output.accept(values: Collection<Item>) {
for (item in values) {
accept(item)
class CreativeTabOutput {
private val items = ArrayList<ItemStack>()
fun accept(value: ItemLike) {
items.add(ItemStack(value.asItem()))
}
}
private fun CreativeModeTab.Output.base(values: Map<DyeColor?, Item>) {
accept(values[null]!!)
fun accept(value: ItemStack) {
items.add(value)
}
fun fillIn(into: NonNullList<ItemStack>) {
items.forEach { into.add(it.copy()) }
}
fun accept(values: Collection<Item>) {
for (item in values) {
accept(item)
}
}
fun base(values: Map<DyeColor?, Item>) {
accept(values[null]!!)
}
fun colored(values: Map<out DyeColor?, Item>) {
accept(values[DyeColor.WHITE]!!)
accept(values[DyeColor.ORANGE]!!)
accept(values[DyeColor.MAGENTA]!!)
accept(values[DyeColor.LIGHT_BLUE]!!)
accept(values[DyeColor.YELLOW]!!)
accept(values[DyeColor.LIME]!!)
accept(values[DyeColor.PINK]!!)
accept(values[DyeColor.GRAY]!!)
accept(values[DyeColor.LIGHT_GRAY]!!)
accept(values[DyeColor.CYAN]!!)
accept(values[DyeColor.PURPLE]!!)
accept(values[DyeColor.BLUE]!!)
accept(values[DyeColor.BROWN]!!)
accept(values[DyeColor.GREEN]!!)
accept(values[DyeColor.RED]!!)
accept(values[DyeColor.BLACK]!!)
}
fun all(values: Map<DyeColor?, Item>) {
base(values)
colored(values)
}
fun energized(value: Item) {
accept(value)
val stack = ItemStack(value, 1)
val energy = stack.matteryEnergy ?: throw IllegalArgumentException("${value.registryName} does not implement mattery energy capability")
energy.fillBattery()
if (ItemStack(value, 1).matteryEnergy!!.batteryLevel != energy.batteryLevel)
accept(stack)
}
fun energized(values: Iterable<Item>) {
for (value in values) {
energized(value)
}
}
fun mattery(value: Item) {
accept(value)
val stack = ItemStack(value, 1)
val matter = stack.matter ?: throw IllegalArgumentException("${value.registryName} does not implement matter capability")
matter.fillMatter()
if (ItemStack(value, 1).matter!!.storedMatter != matter.storedMatter)
accept(stack)
}
fun mattery(values: Iterable<Item>) {
for (value in values) {
mattery(value)
}
}
fun fluids(value: Item) {
accept(value)
for (fluid in ForgeRegistries.FLUIDS.values) {
if (fluid != Fluids.EMPTY && fluid.isSource(fluid.defaultFluidState())) {
accept(ItemStack(value, 1).also {
it.getCapability(ForgeCapabilities.FLUID_HANDLER_ITEM).ifPresentK {
it.fill(FluidStack(fluid, it.getTankCapacity(0)), IFluidHandler.FluidAction.EXECUTE)
}
})
}
}
}
}
private val colorOrder = listOf(
@ -51,80 +134,7 @@ private val colorOrder = listOf(
DyeColor.BLACK,
)
private fun CreativeModeTab.Output.colored(values: Map<out DyeColor?, Item>) {
accept(values[DyeColor.WHITE]!!)
accept(values[DyeColor.ORANGE]!!)
accept(values[DyeColor.MAGENTA]!!)
accept(values[DyeColor.LIGHT_BLUE]!!)
accept(values[DyeColor.YELLOW]!!)
accept(values[DyeColor.LIME]!!)
accept(values[DyeColor.PINK]!!)
accept(values[DyeColor.GRAY]!!)
accept(values[DyeColor.LIGHT_GRAY]!!)
accept(values[DyeColor.CYAN]!!)
accept(values[DyeColor.PURPLE]!!)
accept(values[DyeColor.BLUE]!!)
accept(values[DyeColor.BROWN]!!)
accept(values[DyeColor.GREEN]!!)
accept(values[DyeColor.RED]!!)
accept(values[DyeColor.BLACK]!!)
}
private fun CreativeModeTab.Output.all(values: Map<DyeColor?, Item>) {
base(values)
colored(values)
}
private fun CreativeModeTab.Output.energized(value: Item) {
accept(value)
val stack = ItemStack(value, 1)
val energy = stack.matteryEnergy ?: throw IllegalArgumentException("${value.registryName} does not implement mattery energy capability")
energy.fillBattery()
if (ItemStack(value, 1).matteryEnergy!!.batteryLevel != energy.batteryLevel)
accept(stack)
}
private fun CreativeModeTab.Output.energized(values: Iterable<Item>) {
for (value in values) {
energized(value)
}
}
private fun CreativeModeTab.Output.mattery(value: Item) {
accept(value)
val stack = ItemStack(value, 1)
val matter = stack.matter ?: throw IllegalArgumentException("${value.registryName} does not implement matter capability")
matter.fillMatter()
if (ItemStack(value, 1).matter!!.storedMatter != matter.storedMatter)
accept(stack)
}
private fun CreativeModeTab.Output.mattery(values: Iterable<Item>) {
for (value in values) {
mattery(value)
}
}
private fun CreativeModeTab.Output.fluids(value: Item) {
accept(value)
for (fluid in ForgeRegistries.FLUIDS.values) {
if (fluid != Fluids.EMPTY && fluid.isSource(fluid.defaultFluidState())) {
accept(ItemStack(value, 1).also {
it.getCapability(ForgeCapabilities.FLUID_HANDLER_ITEM).ifPresentK {
it.fill(FluidStack(fluid, it.getTankCapacity(0)), IFluidHandler.FluidAction.EXECUTE)
}
})
}
}
}
private fun addMainCreativeTabItems(consumer: CreativeModeTab.Output) {
private fun addMainCreativeTabItems(consumer: CreativeTabOutput) {
with(consumer) {
accept(MItems.ENERGY_CABLES.values)
accept(MItems.MACHINES)
@ -211,7 +221,7 @@ private fun addMainCreativeTabItems(consumer: CreativeModeTab.Output) {
}
}
private fun addDecorativeTabItems(consumer: CreativeModeTab.Output) {
private fun addDecorativeTabItems(consumer: CreativeTabOutput) {
with(consumer) {
accept(MItems.LABORATORY_LAMP)
accept(MItems.LABORATORY_LAMP_INVERTED)
@ -267,31 +277,5 @@ private fun addDecorativeTabItems(consumer: CreativeModeTab.Output) {
}
}
object MCreativeTabs {
var MAIN by WriteOnce<CreativeModeTab>()
private set
var DECORATIVE by WriteOnce<CreativeModeTab>()
private set
fun register(event: CreativeModeTabEvent.Register) {
CreativeMenuItemComparator.invalidate()
MAIN = event.registerCreativeModeTab(ResourceLocation(OverdriveThatMatters.MOD_ID, "main")) {
it.icon { ItemStack(BATTERY_CREATIVE, 1) }
it.title(TranslatableComponent("itemGroup.otm"))
it.displayItems { _, consumer, hasPerms ->
addMainCreativeTabItems(consumer)
}
}
DECORATIVE = event.registerCreativeModeTab(ResourceLocation(OverdriveThatMatters.MOD_ID, "decorative")) {
it.icon { ItemStack(MRegistry.VENT.item, 1) }
it.title(TranslatableComponent("itemGroup.otm_decorative"))
it.displayItems { _, consumer, hasPerms ->
addDecorativeTabItems(consumer)
}
}
}
}
val MainTabContents = CreativeTabOutput().also { addMainCreativeTabItems(it) }
val DecorativeTabContents = CreativeTabOutput().also { addDecorativeTabItems(it) }