extremely fast archaeology
This commit is contained in:
parent
a618436ddd
commit
993b1ac0fc
@ -163,7 +163,8 @@ fun addResearchData(serializer: Consumer<AndroidResearchType>, lang: MatteryLang
|
||||
TranslatableComponent(
|
||||
"android_research.overdrive_that_matters.limb_overclocking.description",
|
||||
(i + 1) * 8,
|
||||
(i + 1) * 6
|
||||
(i + 1) * 6,
|
||||
(i + 1) * 20
|
||||
)
|
||||
)
|
||||
.addItem(MItemTags.COPPER_WIRES, 4 + i * 2)
|
||||
@ -426,8 +427,8 @@ fun addResearchData(serializer: Consumer<AndroidResearchType>, lang: MatteryLang
|
||||
russian("Разгон конечностей %s")
|
||||
}
|
||||
|
||||
add(limbList[0], "description", "Boosts mobility by %s%% and attack speed by %s%%") {
|
||||
russian("Увеличивает мобильность на %s%% и скорость атак на %s%%")
|
||||
add(limbList[0], "description", "Boosts mobility by %s%%, attack speed by %s%% and brushing speed by %s%%") {
|
||||
russian("Увеличивает мобильность на %s%%, скорость атак на %s%% и скорость чистки блоков на %s%%")
|
||||
}
|
||||
|
||||
add(AIR_BAGS, "Air Bags") {
|
||||
|
@ -1,9 +1,12 @@
|
||||
package ru.dbotthepony.mc.otm.android.feature
|
||||
|
||||
import net.minecraft.world.entity.LivingEntity
|
||||
import net.minecraft.world.entity.ai.attributes.AttributeModifier
|
||||
import net.minecraft.world.entity.ai.attributes.Attributes
|
||||
import net.minecraft.world.entity.player.Player
|
||||
import ru.dbotthepony.mc.otm.android.AndroidFeature
|
||||
import ru.dbotthepony.mc.otm.capability.MatteryPlayerCapability
|
||||
import ru.dbotthepony.mc.otm.capability.matteryPlayer
|
||||
import ru.dbotthepony.mc.otm.registry.AndroidFeatures
|
||||
import java.util.*
|
||||
|
||||
@ -31,5 +34,34 @@ class LimbOverclockingFeature(android: MatteryPlayerCapability) : AndroidFeature
|
||||
|
||||
companion object {
|
||||
private val MODIFIER_ID = UUID.fromString("4a3fae46-e57b-4e20-857d-f5c2b2c8f2f2")
|
||||
|
||||
@JvmStatic
|
||||
fun getBrushCooldown(entity: LivingEntity): Int {
|
||||
if (entity !is Player) return 10
|
||||
val matteryPlayer = entity.matteryPlayer ?: return 10
|
||||
if (!matteryPlayer.isAndroid || !matteryPlayer.hasFeature(AndroidFeatures.LIMB_OVERCLOCKING)) return 10
|
||||
|
||||
val level = matteryPlayer.getFeature(AndroidFeatures.LIMB_OVERCLOCKING)!!.level + 1
|
||||
return (10 - level * 2).coerceAtLeast(2)
|
||||
}
|
||||
|
||||
@JvmStatic
|
||||
fun getBrushTick(entity: LivingEntity): Int {
|
||||
if (entity !is Player) return 5
|
||||
val matteryPlayer = entity.matteryPlayer ?: return 5
|
||||
if (!matteryPlayer.isAndroid || !matteryPlayer.hasFeature(AndroidFeatures.LIMB_OVERCLOCKING)) return 5
|
||||
|
||||
val level = matteryPlayer.getFeature(AndroidFeatures.LIMB_OVERCLOCKING)!!.level + 1
|
||||
return (5 - level).coerceAtLeast(1)
|
||||
}
|
||||
|
||||
@JvmStatic
|
||||
fun getBrushableBlockCooldown(player: Player): Long {
|
||||
val matteryPlayer = player.matteryPlayer ?: return 10L
|
||||
if (!matteryPlayer.isAndroid || !matteryPlayer.hasFeature(AndroidFeatures.LIMB_OVERCLOCKING)) return 10L
|
||||
|
||||
val level = matteryPlayer.getFeature(AndroidFeatures.LIMB_OVERCLOCKING)!!.level + 1
|
||||
return (10L - level * 2L).coerceAtLeast(2L)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1,4 +1,5 @@
|
||||
{
|
||||
"code_injector": "coremods/code_injector.js",
|
||||
"chest_menus": "coremods/chest_menus.js"
|
||||
"chest_menus": "coremods/chest_menus.js",
|
||||
"limb_brush_overclock": "coremods/limb_brush_overclock.js"
|
||||
}
|
76
src/main/resources/coremods/limb_brush_overclock.js
Normal file
76
src/main/resources/coremods/limb_brush_overclock.js
Normal file
@ -0,0 +1,76 @@
|
||||
var Opcodes = Java.type('org.objectweb.asm.Opcodes')
|
||||
var VarInsnNode = Java.type('org.objectweb.asm.tree.VarInsnNode')
|
||||
var MethodInsnNode = Java.type('org.objectweb.asm.tree.MethodInsnNode')
|
||||
|
||||
function initializeCoreMod() {
|
||||
return {
|
||||
'Patch brush item': {
|
||||
'target': {
|
||||
"type":"METHOD",
|
||||
"class":"net.minecraft.world.item.BrushItem",
|
||||
"methodName":"m_5929_",
|
||||
"methodDesc":"(Lnet/minecraft/world/level/Level;Lnet/minecraft/world/entity/LivingEntity;Lnet/minecraft/world/item/ItemStack;I)V"
|
||||
},
|
||||
'transformer': function(node) {
|
||||
for (i = 0; i < node.instructions.size(); i++) {
|
||||
var insn = node.instructions.get(i)
|
||||
|
||||
if (insn.getOpcode() == Opcodes.BIPUSH) {
|
||||
node.instructions.insert(insn, new MethodInsnNode(
|
||||
Opcodes.INVOKESTATIC,
|
||||
'ru/dbotthepony/mc/otm/android/feature/LimbOverclockingFeature',
|
||||
'getBrushCooldown',
|
||||
'(Lnet/minecraft/world/entity/LivingEntity;)I'
|
||||
))
|
||||
node.instructions.set(insn, new VarInsnNode(Opcodes.ALOAD, 2))
|
||||
|
||||
i += 1
|
||||
continue
|
||||
}
|
||||
|
||||
if (insn.getOpcode() == Opcodes.ICONST_5) {
|
||||
node.instructions.insert(insn, new MethodInsnNode(
|
||||
Opcodes.INVOKESTATIC,
|
||||
'ru/dbotthepony/mc/otm/android/feature/LimbOverclockingFeature',
|
||||
'getBrushTick',
|
||||
'(Lnet/minecraft/world/entity/LivingEntity;)I'
|
||||
))
|
||||
node.instructions.set(insn, new VarInsnNode(Opcodes.ALOAD, 2))
|
||||
|
||||
i += 1
|
||||
continue
|
||||
}
|
||||
}
|
||||
|
||||
return node
|
||||
}
|
||||
},
|
||||
'Patch brushable block': {
|
||||
'target': {
|
||||
"type":"METHOD",
|
||||
"class":"net.minecraft.world.level.block.entity.BrushableBlockEntity",
|
||||
"methodName":"m_276923_",
|
||||
"methodDesc":"(JLnet/minecraft/world/entity/player/Player;Lnet/minecraft/core/Direction;)Z"
|
||||
},
|
||||
'transformer': function(node) {
|
||||
for (i = 0; i < node.instructions.size(); i++) {
|
||||
var insn = node.instructions.get(i)
|
||||
|
||||
if (insn.getOpcode() == Opcodes.LDC && insn.cst == 10) {
|
||||
node.instructions.insert(insn, new MethodInsnNode(
|
||||
Opcodes.INVOKESTATIC,
|
||||
'ru/dbotthepony/mc/otm/android/feature/LimbOverclockingFeature',
|
||||
'getBrushableBlockCooldown',
|
||||
'(Lnet/minecraft/world/entity/player/Player;)J'
|
||||
))
|
||||
node.instructions.set(insn, new VarInsnNode(Opcodes.ALOAD, 3))
|
||||
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
return node
|
||||
}
|
||||
},
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user