parent
5468a18280
commit
4d551a2df9
@ -5,6 +5,7 @@ import java.text.SimpleDateFormat
|
|||||||
import it.unimi.dsi.fastutil.io.FastByteArrayOutputStream
|
import it.unimi.dsi.fastutil.io.FastByteArrayOutputStream
|
||||||
import kotlin.text.Regex
|
import kotlin.text.Regex
|
||||||
import java.util.UUID
|
import java.util.UUID
|
||||||
|
import org.spongepowered.asm.gradle.plugins.MixinExtension
|
||||||
|
|
||||||
val mod_version: String by project
|
val mod_version: String by project
|
||||||
val mc_version: String by project
|
val mc_version: String by project
|
||||||
@ -19,6 +20,7 @@ plugins {
|
|||||||
kotlin
|
kotlin
|
||||||
`maven-publish`
|
`maven-publish`
|
||||||
id("net.minecraftforge.gradle")
|
id("net.minecraftforge.gradle")
|
||||||
|
id("org.spongepowered.mixin")
|
||||||
}
|
}
|
||||||
|
|
||||||
configurations {
|
configurations {
|
||||||
@ -145,6 +147,7 @@ dependencies {
|
|||||||
val kotlin_for_forge_version: String by project
|
val kotlin_for_forge_version: String by project
|
||||||
val kotlin_coroutines_version: String by project
|
val kotlin_coroutines_version: String by project
|
||||||
val kotlin_serialization_version: String by project
|
val kotlin_serialization_version: String by project
|
||||||
|
val mixin_version: String by project
|
||||||
|
|
||||||
minecraft("net.minecraftforge:forge:$mc_version-$forge_version")
|
minecraft("net.minecraftforge:forge:$mc_version-$forge_version")
|
||||||
testImplementation("org.junit.jupiter:junit-jupiter:${jupiter_version}")
|
testImplementation("org.junit.jupiter:junit-jupiter:${jupiter_version}")
|
||||||
@ -173,6 +176,8 @@ dependencies {
|
|||||||
// Examples using mod jars from ./libs
|
// Examples using mod jars from ./libs
|
||||||
compileOnly("yalter.mousetweaks:MouseTweaks:2.23:api")
|
compileOnly("yalter.mousetweaks:MouseTweaks:2.23:api")
|
||||||
|
|
||||||
|
annotationProcessor("org.spongepowered:mixin:${mixin_version}:processor")
|
||||||
|
|
||||||
// compile against the JEI API but do not include it at runtime
|
// compile against the JEI API but do not include it at runtime
|
||||||
//compileOnly fg.deobf("mezz.jei:jei-${mc_version}:${jei_version}:api")
|
//compileOnly fg.deobf("mezz.jei:jei-${mc_version}:${jei_version}:api")
|
||||||
// at runtime, use the full JEI jar
|
// at runtime, use the full JEI jar
|
||||||
@ -250,6 +255,8 @@ minecraft {
|
|||||||
} else {
|
} else {
|
||||||
args("--username", "Dev_${System.getProperty("user.name")}")
|
args("--username", "Dev_${System.getProperty("user.name")}")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
args("-mixin.config=$mod_id.mixins.json")
|
||||||
}
|
}
|
||||||
|
|
||||||
create("server") {
|
create("server") {
|
||||||
@ -259,11 +266,11 @@ minecraft {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
args("nogui")
|
args("nogui", "-mixin.config=$mod_id.mixins.json")
|
||||||
}
|
}
|
||||||
|
|
||||||
create("data") {
|
create("data") {
|
||||||
args("--mod", "overdrive_that_matters", "--all", "--output", file("src/data/resources/"), "--existing", file("src/main/resources/"))
|
args("--mod", mod_id, "--all", "--output", file("src/data/resources/"), "--existing", file("src/main/resources/"))
|
||||||
|
|
||||||
mods {
|
mods {
|
||||||
create(mod_id) {
|
create(mod_id) {
|
||||||
@ -276,6 +283,11 @@ minecraft {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
mixin {
|
||||||
|
add(sourceSets.main.get(), "$mod_id.refmap.json")
|
||||||
|
config("$mod_id.mixins.json")
|
||||||
|
}
|
||||||
|
|
||||||
minecraft.runs.all {
|
minecraft.runs.all {
|
||||||
workingDirectory = project.file("run").absolutePath
|
workingDirectory = project.file("run").absolutePath
|
||||||
|
|
||||||
|
@ -13,6 +13,8 @@ use_commit_hash_in_version=true
|
|||||||
mc_version=1.19.2
|
mc_version=1.19.2
|
||||||
forge_gradle_version=5.1.27
|
forge_gradle_version=5.1.27
|
||||||
forge_version=43.1.43
|
forge_version=43.1.43
|
||||||
|
mixingradle_version=0.7.32
|
||||||
|
mixin_version=0.8.5
|
||||||
|
|
||||||
jei_version=11.3.0.262
|
jei_version=11.3.0.262
|
||||||
jupiter_version=5.8.2
|
jupiter_version=5.8.2
|
||||||
|
@ -4,10 +4,12 @@ println("Running with Java ${System.getProperty("java.version")} on JVM: ${Syste
|
|||||||
pluginManagement {
|
pluginManagement {
|
||||||
val kotlin_version: String by settings
|
val kotlin_version: String by settings
|
||||||
val forge_gradle_version: String by settings
|
val forge_gradle_version: String by settings
|
||||||
|
val mixingradle_version: String by settings
|
||||||
|
|
||||||
plugins {
|
plugins {
|
||||||
kotlin("jvm") version(kotlin_version)
|
kotlin("jvm") version(kotlin_version)
|
||||||
id("net.minecraftforge.gradle") version(forge_gradle_version)
|
id("net.minecraftforge.gradle") version(forge_gradle_version)
|
||||||
|
id("org.spongepowered.mixin") version(mixingradle_version)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -21,14 +23,22 @@ buildscript {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
maven(url = "https://repo.spongepowered.org/repository/maven-public/") {
|
||||||
|
content {
|
||||||
|
includeGroup("org.spongepowered")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
mavenCentral()
|
mavenCentral()
|
||||||
}
|
}
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
val kotlin_version: String by settings
|
val kotlin_version: String by settings
|
||||||
val forge_gradle_version: String by settings
|
val forge_gradle_version: String by settings
|
||||||
|
val mixingradle_version: String by settings
|
||||||
|
|
||||||
classpath(group = "net.minecraftforge.gradle", name = "ForgeGradle", version = forge_gradle_version)
|
classpath(group = "net.minecraftforge.gradle", name = "ForgeGradle", version = forge_gradle_version)
|
||||||
classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:${kotlin_version}")
|
classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:${kotlin_version}")
|
||||||
|
classpath("org.spongepowered:mixingradle:${mixingradle_version}")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,29 @@
|
|||||||
|
package ru.dbotthepony.mc.otm.mixin;
|
||||||
|
|
||||||
|
import net.minecraft.world.entity.player.Player;
|
||||||
|
import net.minecraft.world.item.ItemStack;
|
||||||
|
import org.spongepowered.asm.mixin.Mixin;
|
||||||
|
import org.spongepowered.asm.mixin.injection.At;
|
||||||
|
import org.spongepowered.asm.mixin.injection.Inject;
|
||||||
|
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
|
||||||
|
import ru.dbotthepony.mc.otm.capability.MatteryPlayerCapability;
|
||||||
|
|
||||||
|
@Mixin(Player.class)
|
||||||
|
public class MixinPatchProjectileFinder {
|
||||||
|
@Inject(
|
||||||
|
method = "getProjectile(Lnet/minecraft/world/item/ItemStack;)Lnet/minecraft/world/item/ItemStack;",
|
||||||
|
at = @At(
|
||||||
|
value = "INVOKE",
|
||||||
|
target = "net.minecraftforge.common.ForgeHooks.getProjectile(Lnet/minecraft/world/entity/LivingEntity;Lnet/minecraft/world/item/ItemStack;Lnet/minecraft/world/item/ItemStack;)Lnet/minecraft/world/item/ItemStack;",
|
||||||
|
ordinal = 2,
|
||||||
|
shift = At.Shift.BEFORE
|
||||||
|
),
|
||||||
|
cancellable = true)
|
||||||
|
private void exosuitGetProjectileHook(ItemStack weaponItem, CallbackInfoReturnable<ItemStack> hook) {
|
||||||
|
ItemStack result = MatteryPlayerCapability.getProjectileHook((Player) ((Object) this), weaponItem);
|
||||||
|
|
||||||
|
if (result != null) {
|
||||||
|
hook.setReturnValue(result);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -19,7 +19,9 @@ import net.minecraft.world.entity.monster.Phantom
|
|||||||
import net.minecraft.world.entity.player.Inventory
|
import net.minecraft.world.entity.player.Inventory
|
||||||
import net.minecraft.world.entity.player.Player
|
import net.minecraft.world.entity.player.Player
|
||||||
import net.minecraft.world.item.ItemStack
|
import net.minecraft.world.item.ItemStack
|
||||||
|
import net.minecraft.world.item.ProjectileWeaponItem
|
||||||
import net.minecraft.world.item.enchantment.EnchantmentHelper.hasVanishingCurse
|
import net.minecraft.world.item.enchantment.EnchantmentHelper.hasVanishingCurse
|
||||||
|
import net.minecraftforge.common.ForgeHooks
|
||||||
import net.minecraftforge.common.capabilities.Capability
|
import net.minecraftforge.common.capabilities.Capability
|
||||||
import net.minecraftforge.common.capabilities.ICapabilityProvider
|
import net.minecraftforge.common.capabilities.ICapabilityProvider
|
||||||
import net.minecraftforge.common.util.INBTSerializable
|
import net.minecraftforge.common.util.INBTSerializable
|
||||||
@ -44,6 +46,7 @@ import ru.dbotthepony.mc.otm.android.AndroidResearchType
|
|||||||
import ru.dbotthepony.mc.otm.android.AndroidSwitchableFeature
|
import ru.dbotthepony.mc.otm.android.AndroidSwitchableFeature
|
||||||
import ru.dbotthepony.mc.otm.client.minecraft
|
import ru.dbotthepony.mc.otm.client.minecraft
|
||||||
import ru.dbotthepony.mc.otm.container.MatteryContainer
|
import ru.dbotthepony.mc.otm.container.MatteryContainer
|
||||||
|
import ru.dbotthepony.mc.otm.container.stream
|
||||||
import ru.dbotthepony.mc.otm.core.*
|
import ru.dbotthepony.mc.otm.core.*
|
||||||
import ru.dbotthepony.mc.otm.menu.ExoSuitInventoryMenu
|
import ru.dbotthepony.mc.otm.menu.ExoSuitInventoryMenu
|
||||||
import ru.dbotthepony.mc.otm.network.*
|
import ru.dbotthepony.mc.otm.network.*
|
||||||
@ -1007,5 +1010,18 @@ class MatteryPlayerCapability(val ply: Player) : ICapabilityProvider, INBTSerial
|
|||||||
event.target.matteryPlayer?.trackingPlayers?.remove(event.entity as ServerPlayer)
|
event.target.matteryPlayer?.trackingPlayers?.remove(event.entity as ServerPlayer)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@JvmStatic
|
||||||
|
fun getProjectileHook(player: Player, weaponItem: ItemStack): ItemStack? {
|
||||||
|
val weapon = weaponItem.item as? ProjectileWeaponItem ?: return null
|
||||||
|
val matteryPlayer = player.matteryPlayer ?: return null
|
||||||
|
|
||||||
|
if (!matteryPlayer.hasExoSuit) {
|
||||||
|
return null
|
||||||
|
}
|
||||||
|
|
||||||
|
val item = matteryPlayer.exoSuitContainer.stream().filter(weapon.allSupportedProjectiles).findFirst().orElse(null) ?: return null
|
||||||
|
return ForgeHooks.getProjectile(player, weaponItem, item)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
10
src/main/resources/overdrive_that_matters.mixins.json
Normal file
10
src/main/resources/overdrive_that_matters.mixins.json
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
{
|
||||||
|
"required": true,
|
||||||
|
"package": "ru.dbotthepony.mc.otm.mixin",
|
||||||
|
"compatibilityLevel": "JAVA_17",
|
||||||
|
"minVersion": "0.8",
|
||||||
|
"refmap": "overdrive_that_matters.refmap.json",
|
||||||
|
"mixins": [
|
||||||
|
"MixinPatchProjectileFinder"
|
||||||
|
]
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user