Easy, spectacular and fun melee combat system from Minecraft Dungeons.

Overview

Better Combat

Java 17 Environment: Client & Server Mod loader: Fabric Discord

Easy, spectacular and fun melee combat system we know from Minecraft Dungeons.

Add unique behaviour to your weapon, or just reuse a preset, via the JSON API.

⭐️ Features

Primary features:

  • Weapons have combos (each attack in the combo can be different in many ways)
  • Better weapon idle and attack animations
  • Upswing weapon before hitting for natural look and feel
  • No more pixel hunting for target in front, accurate weapon swing calculation (based on OBB+SAT)
  • Hitting multiple enemies with a single strike
  • Weapon attributes are synchronized (server sends to client)
  • Bundled resources: weapon animations, weapon sounds, weapon attribute presets
  • Integrate any weapon from any mod by just creating data files

Auxiliary features:

  • Two-handed weapons ignore offhand slot
  • Attacking with dual wielded weapons (Server configurable)
  • Cancel attack during upswing (aka "feint") (Client configurable)
  • Hold attack key to spam attack (Client configurable)
  • Target in hitbox indication (Client configurable)
  • Swing thru grass (Client configurable)
  • Can disable mining with weapons (Client configurable)

Future plans:

  • Rolling
  • Additional weapon attributes (for example: movement penalty, pushback)
  • Weapon trail animation while hitting

🔨 Integrate your mod

Prerequisite

Make sure to remove or disable all logic from your mod that is semantically conflicting with this mod:

  • Player animation modifications
  • Attack range modifications
  • Attack timing or cooldown logic modifications
  • Custom attack sound playback
  • Attack/mining key handler modifications (of MinecraftClient)
  • Dual wielding logic

Download the latest release of the mod, and install it in your project run directory (./run/mods).

Basics

Weapon attributes describe the behaviour of a weapon including: range, combos (list of attacks), animations and sounds, etc...

Assign weapon attributes to weapons of your mod, just by creating resource files. This is done similar to how you assign crafting recipes to an item. No need for any java or gradle dependency.

Weapon attributes can describe:

  • How the weapon is held (is two-handed, idle pose)
  • Attack range
  • List of attack moves (aka Combo), attacks have the following properties
    • Damage
    • Hitbox
    • Conditions
    • Animation
    • Sounds

Each mod should provide their own resources files for compatibility (preferably within their jar file) for the following reasons:

  • A single source of configuration files is difficult to maintain
  • More intuitive installation process for users
  • Every mod developer should decide how their weapon is meant to behave
  • Some mods may need to disable semantically conflicting features

Let's see an example where we add attributes to a custom sword named "Big Sword" from your mod:

  • mod id is my-mod-id
  • id of the item is my-mod-id:big_sword

To assign weapon attributes to the Big Sword, create a new json file at the following location:

resources/data/my-mod-id/weapon_attributes/big_sword.json

The content of this json file should be the following:

Using a preset

Presets are out of the box collection of weapon attributes bundled with this mod, covering the common weapon types.

A fitting preset for a big two handed sword is the claymore from Better Combat, its identifier is: bettercombat:claymore. To use this preset add the following content to your JSON file:

{
  "parent": "bettercombat:claymore"
}

You can check out all available presets here.

You can make and reference your own presets the same way.

Custom attributes

If you want unique behaviour for your weapon, you can create attributes from scratch.

The content of your weapon attributes JSON file is parsed into an AttributesContainer object.

(Check out the inline java documentation of AttributesContainer for details.)

When no parent is specified, the value for "attributes" key must be a full json object that can be parsed into WeaponAttributes object.

{
  "attributes": { ... }
}

Check out the inline java documentation of WeaponAttributes for details.


When "parent" and "attributes" are both specified, you can customize attributes by partially (or fully) overriding the properties. Make sure the inheritance results in fully parsable WeaponAttributes object.

(Attributes are merged in parent -> child order. So parent properties are copied and overridden with child. The chain of inheritance can be any length.)

{
  "parent": "bettercombat:claymore",
  "attributes": {
    "attackRange": 3.5
    "attacks": [
      {
        "angle": 100
      },
      {
        "damageMultiplier": 0.1 
      },
      {
        "damageMultiplier": 0.3,
        "angle" = 90
      }
    ]
  }
}

You can create and use your own presets:

{
  "parent": "my-mod-id:longsword",
  "attributes": { ... }
}

Custom animations

Let's say you want to create a custom attack animation with the following name: big_sword_slash

Creating animation

Create keyframe animations using our Blender model, that includes an export script creating animation files.

Check out the Animation guide for details. Blender example

Adding animation

Add the created animation to the following location

resources/assets/my-mod-id/attack_animations/big_sword_slash.json

Using the animation

You can use your custom animation by referencing it, following the resource identifier pattern.

Make sure to specify a fitting upswing value next to your animation (to make it look and feel nice to use).

{
  // ...
  "attributes": {
    // ...
    "attacks": [
      {
        "animation": "my-mod-id:big_sword_slash",
        "upswing": 0.5
      },
      // ...
    ]
  }
}

🔧 Configuration

Client

You can access the client side settings via the Mod Menu.

Server

Server config can be found at: config/bettercombat/server.conf

Automatically created with default values, upon loading any game world for the first time.

Compatibility

This mod has been created in the spirit of maximal compatibility. However since some core mechanics are overridden, mods trying to change the same thing will never be compatible.

Comments
  • Scale Attack Range with Pehkui's entity scale

    Scale Attack Range with Pehkui's entity scale

    Just an idea for something long down the road, but, I figured this is probably one of the easier ways to add compatibility between Better Combat and Pehkui. So, if Pehkui doubles your "block reach" by 2, your attack range likewise multiplies by 2 -- and vise versa. The reason why I mention "block reach" specifically is because it's usually calculated when growing or shrinking players' base height. Assuming this wouldn't be a total pain in the arse to program, that is. Thanks for reading.

    enhancement waiting for release external help needed 
    opened by bassistracer 16
  • [Forge 1.18.2] Crash when adding to a modpack

    [Forge 1.18.2] Crash when adding to a modpack

    opened by BlackAures1 9
  • [Forge 1.18.2] Twilight Forest - Head visible First Person mode

    [Forge 1.18.2] Twilight Forest - Head visible First Person mode

    Minecraft version - 1.18.2 Mod loader - Forge Mod version - 1.1.0 I am using the latest version available - Yes

    Describe the bug When I swing my weapon in first person mode, I can see the inside and outside of my head.

    To Reproduce Steps to reproduce the behavior:

    Swing a weapon when in minecraft and in first person mode

    Expected behavior I expected to not see my head

    Screenshots or video recordings 2022-08-24_22 52 17

    2022-08-24_22 52 14

    Additional context

    waiting for release render incompatibility 
    opened by manyogurt 9
  • [Fabric] Attack request error logs

    [Fabric] Attack request error logs

    Minecraft version - 1.19.2 Mod loader - Fabric Mod version - 0.14.9 Fabric API - 0.60.0+1.19.2 BetterCombat - 1.2.0+1.19 PlayerAnimator Lib - 0.3.5 I am using the latest version available - Yes

    Describe the bug I am not yet sure that this is indeed related to BetterCombat, as I get neither a crash nor a valid latest log.

    The issue: At some point, the integrated Server just freezes up. Entities stop moving, Blocks stop dropping items, new Chunks don't load. I can still walk around, do stuff. But the world won't interact with me.

    Issue happened since I upgraded BetterCombat to today's version, which also requires the playeranimations library.

    Since I don't crash, I don't get a crash log. I looked into my latest.log to see what the last entries are: The following stack is from the last moment I knew it was working (just killed a zombie, then ran around, killed a creeper and stopped to eat some meat), to the final entry in the log.

    [20:32:07] [Server thread/INFO]: ItsJacky has made the advancement [§2Monster Hunter§f] [20:32:07] [Render thread/INFO]: [System] [CHAT] ItsJacky has made the advancement [§2Monster Hunter§f] [20:32:08] [Render thread/INFO]: Loaded 691 advancements [20:32:08] [Render thread/ERROR]: missing entity for data tracking ClientWorld minecraft:overworld28354 [20:32:12] [Render thread/ERROR]: missing entity for data tracking ClientWorld minecraft:overworld28353 [20:32:14] [Render thread/INFO]: Loaded 692 advancements [20:32:29] [Render thread/INFO]: Loaded 692 advancements [20:32:29] [Render thread/ERROR]: missing entity for data tracking ClientWorld minecraft:overworld28444 [20:32:47] [Render thread/INFO]: Loaded 692 advancements [20:32:47] [Render thread/ERROR]: missing entity for data tracking ClientWorld minecraft:overworld28355 [20:32:48] [Render thread/INFO]: Loaded 695 advancements [20:33:22] [Render thread/INFO]: Loaded 695 advancements [20:34:48] [Netty Server IO #1/ERROR]: Server handling Packets.C2S_AttackRequest - No current attack hand! [20:34:48] [Netty Server IO #1/ERROR]: Combo count: 0 is dual wielding: false [20:34:48] [Netty Server IO #1/ERROR]: Main-hand stack: 4 cooked_beef [20:34:48] [Netty Server IO #1/ERROR]: Off-hand stack: 1 air [20:34:48] [Netty Server IO #1/ERROR]: Server handling Packets.C2S_AttackRequest - No current attack hand! [20:34:48] [Netty Server IO #1/ERROR]: Combo count: 1 is dual wielding: false [20:34:48] [Netty Server IO #1/ERROR]: Main-hand stack: 4 cooked_beef [20:34:48] [Netty Server IO #1/ERROR]: Off-hand stack: 1 air [20:34:48] [Netty Server IO #1/ERROR]: Server handling Packets.C2S_AttackRequest - No current attack hand! [20:34:48] [Netty Server IO #1/ERROR]: Combo count: 2 is dual wielding: false [20:34:48] [Netty Server IO #1/ERROR]: Main-hand stack: 4 cooked_beef [20:34:48] [Netty Server IO #1/ERROR]: Off-hand stack: 1 air [20:34:49] [Netty Server IO #1/ERROR]: Server handling Packets.C2S_AttackRequest - No current attack hand! [20:34:49] [Netty Server IO #1/ERROR]: Combo count: 0 is dual wielding: false [20:34:49] [Netty Server IO #1/ERROR]: Main-hand stack: 4 cooked_beef [20:34:49] [Netty Server IO #1/ERROR]: Off-hand stack: 1 air [20:34:50] [Netty Server IO #1/ERROR]: Server handling Packets.C2S_AttackRequest - No current attack hand! [20:34:50] [Netty Server IO #1/ERROR]: Combo count: 1 is dual wielding: false [20:34:50] [Netty Server IO #1/ERROR]: Main-hand stack: 4 cooked_beef [20:34:50] [Netty Server IO #1/ERROR]: Off-hand stack: 1 air [20:34:51] [Netty Server IO #1/ERROR]: Server handling Packets.C2S_AttackRequest - No current attack hand! [20:34:51] [Netty Server IO #1/ERROR]: Combo count: 0 is dual wielding: false [20:34:51] [Netty Server IO #1/ERROR]: Main-hand stack: 4 cooked_beef [20:34:51] [Netty Server IO #1/ERROR]: Off-hand stack: 1 air [20:34:51] [Netty Server IO #1/ERROR]: Server handling Packets.C2S_AttackRequest - No current attack hand! [20:34:51] [Netty Server IO #1/ERROR]: Combo count: 1 is dual wielding: false [20:34:51] [Netty Server IO #1/ERROR]: Main-hand stack: 4 cooked_beef [20:34:51] [Netty Server IO #1/ERROR]: Off-hand stack: 1 air

    Since this log throws a lot of errors that sound like they have to do with BetterCombat, I was wondering if those cause the internal server to deadlock or freeze.

    Another alternative would be that the freeze already builds up earlier and the latest log entries are just a result of BetterCombat trying to communicate with a deadlocked server.

    Prior entries that catch my eye are mainly spams like: [Render thread/ERROR]: missing entity for data tracking ClientWorld minecraft:overworld23545 for which I either suspect ImmersivePortals or my mix of BYG, Terralith, William Wythers Overhauled Overworld. But I don't know quite exactly what this line means.

    I've also attached a compiled list of my current mods, shaders and resource packs just in case.

    Modlist_Latest.txt

    feedback needed non fatal 
    opened by OkinawaGaijin 8
  • [Feature Request] Compatibility with Utility Belt

    [Feature Request] Compatibility with Utility Belt

    I read project readme, checked client side and server side configurations, and no such feature exists - YES

    Is your feature request related to a problem? Please describe.

    Currently, trying to attack with a weapon equipped on the utility belt from the Utility Belt mod will result in feinting instead.

    Describe the solution you'd like

    Allow weapons in a utility belt to be used properly.

    Describe alternatives you've considered

    Not using anything that is considered a weapon with a utility belt.

    Additional context

    Created an issue on Utility Belt's side as well: https://github.com/JamCoreModding/UtilityBelt/issues/6

    An example with a sword, holding LMB:

    2022-08-26_15 17 28

    Logs, if necessary: https://gist.github.com/Footage2-Amply-Pounce/b110c3d394a5bb965fc7ed29101ec3d5

    waiting for release incompatibility 
    opened by SplendidAlakey 8
  • Can't hit mobs

    Can't hit mobs

    minecraft version: 1.19.2 loader: Fabric mod version: 1.1.0 I am using the latest version available on curseforge.

    Cannot hit any mobs, regardless of whether I am in third person or first person.

    Load the mods listed in the report, and try to hit something with a weapon (has been tried with diamond axe and diamond sword)

    The expected behavior is for the player to be able to hit things.

    The log: https://paste.ee/p/IPDCG

    opened by DanMeadWasTaken 8
  • Version 1.5.2 for 1.18.2 Code 1 Error

    Version 1.5.2 for 1.18.2 Code 1 Error

    Minecraft version 1.18.2 Mod loader Forge Mod version 1.5.2 I am using the latest version available For 1.18.2 Yes

    Describe the bug A clear and concise description of what the bug is. On game start up. Getting error code 1.

    opened by RustyMrGin 6
  • Head is visible in First Person whilst Twilight Forest (Forge) is installed

    Head is visible in First Person whilst Twilight Forest (Forge) is installed

    Minecraft version - 1.18.2 Mod loader - Forge 40.1.73 Mod version - 1.1.0+1.18.2 I am using the latest version available - Yes

    Describe the bug Whilst in first person and having Twilight Forest installed, whenever the player attacks, their head comes into the view.

    To Reproduce Steps to reproduce the behavior:

    1. Install Better Combat
    2. Install Twilight Forest
    3. Swing weapon
    4. See back of head

    Expected behavior That the head should not come into view whilst attacking in first person

    Screenshots or video recordings TwilightForestBetterCombatIncompat

    Additional context Not really

    render incompatibility external help needed 
    opened by chronosacaria 6
  • kick from server when attack with weapon in inventorio slot

    kick from server when attack with weapon in inventorio slot

    Not happened all the time, but sometimes the server kick out the player with error below when using a weapon from the inventorio mod's weapon slot, the server didn't crash

    [13:35:27] [Netty Server IO #20/ERROR]: Encountered exception while handling in channel with name "bettercombat:c2s_request_attack"
    java.lang.NullPointerException: Cannot invoke "net.bettercombat.logic.AttackHand.attack()" because "hand" is null
    	at net.bettercombat.network.ServerNetwork.lambda$initializeHandlers$6(ServerNetwork.java:73) ~[bettercombat-1.0.10+1.19.jar:?]
    	at net.fabricmc.fabric.impl.networking.server.ServerPlayNetworkAddon.receive(ServerPlayNetworkAddon.java:89) ~[fabric-networking-api-v1-1.1.0+442de8b8a9-4071c58cedb5d399.jar:?]
    	at net.fabricmc.fabric.impl.networking.server.ServerPlayNetworkAddon.receive(ServerPlayNetworkAddon.java:38) ~[fabric-networking-api-v1-1.1.0+442de8b8a9-4071c58cedb5d399.jar:?]
    	at net.fabricmc.fabric.impl.networking.AbstractChanneledNetworkAddon.handle(AbstractChanneledNetworkAddon.java:100) [fabric-networking-api-v1-1.1.0+442de8b8a9-4071c58cedb5d399.jar:?]
    	at net.fabricmc.fabric.impl.networking.server.ServerPlayNetworkAddon.handle(ServerPlayNetworkAddon.java:84) [fabric-networking-api-v1-1.1.0+442de8b8a9-4071c58cedb5d399.jar:?]
    	at net.minecraft.class_3244.handler$bgk000$handleCustomPayloadReceivedAsync(class_3244.java:2383) [server-intermediary.jar:?]
    	at net.minecraft.class_3244.method_12075(class_3244.java) [server-intermediary.jar:?]
    	at net.minecraft.class_2817.method_12199(class_2817.java:38) [server-intermediary.jar:?]
    	at net.minecraft.class_2817.method_11054(class_2817.java:7) [server-intermediary.jar:?]
    	at net.minecraft.class_2535.method_10759(class_2535.java:171) [server-intermediary.jar:?]
    	at net.minecraft.class_2535.method_10770(class_2535.java:156) [server-intermediary.jar:?]
    	at net.minecraft.class_2535.channelRead0(class_2535.java:54) [server-intermediary.jar:?]
    	at io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:99) [netty-transport-4.1.76.Final.jar:?]
    	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379) [netty-transport-4.1.76.Final.jar:?]
    	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365) [netty-transport-4.1.76.Final.jar:?]
    	at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357) [netty-transport-4.1.76.Final.jar:?]
    	at io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:327) [netty-codec-4.1.76.Final.jar:?]
    	at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:299) [netty-codec-4.1.76.Final.jar:?]
    	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379) [netty-transport-4.1.76.Final.jar:?]
    	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365) [netty-transport-4.1.76.Final.jar:?]
    	at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357) [netty-transport-4.1.76.Final.jar:?]
    	at io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:327) [netty-codec-4.1.76.Final.jar:?]
    	at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:299) [netty-codec-4.1.76.Final.jar:?]
    	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379) [netty-transport-4.1.76.Final.jar:?]
    	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365) [netty-transport-4.1.76.Final.jar:?]
    	at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357) [netty-transport-4.1.76.Final.jar:?]
    	at io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:327) [netty-codec-4.1.76.Final.jar:?]
    	at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:299) [netty-codec-4.1.76.Final.jar:?]
    	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379) [netty-transport-4.1.76.Final.jar:?]
    	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365) [netty-transport-4.1.76.Final.jar:?]
    	at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357) [netty-transport-4.1.76.Final.jar:?]
    	at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:103) [netty-codec-4.1.76.Final.jar:?]
    	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379) [netty-transport-4.1.76.Final.jar:?]
    	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365) [netty-transport-4.1.76.Final.jar:?]
    	at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357) [netty-transport-4.1.76.Final.jar:?]
    	at io.netty.handler.timeout.IdleStateHandler.channelRead(IdleStateHandler.java:286) [netty-handler-4.1.76.Final.jar:?]
    	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379) [netty-transport-4.1.76.Final.jar:?]
    	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365) [netty-transport-4.1.76.Final.jar:?]
    	at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357) [netty-transport-4.1.76.Final.jar:?]
    	at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1410) [netty-transport-4.1.76.Final.jar:?]
    	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379) [netty-transport-4.1.76.Final.jar:?]
    	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365) [netty-transport-4.1.76.Final.jar:?]
    	at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:919) [netty-transport-4.1.76.Final.jar:?]
    	at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:166) [netty-transport-4.1.76.Final.jar:?]
    	at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:722) [netty-transport-4.1.76.Final.jar:?]
    	at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:658) [netty-transport-4.1.76.Final.jar:?]
    	at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:584) [netty-transport-4.1.76.Final.jar:?]
    	at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:496) [netty-transport-4.1.76.Final.jar:?]
    	at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:986) [netty-common-4.1.76.Final.jar:?]
    	at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) [netty-common-4.1.76.Final.jar:?]
    	at java.lang.Thread.run(Thread.java:833) [?:?]
    
    opened by NEOLEE98 6
  • Joiner's uuid is forced to change

    Joiner's uuid is forced to change

    Minecraft version - 1.19.2 Mod loader - forge Mod version - bettercombat-forge-1.1.1+1.19 I am using the latest version available - yes

    Describe the bug When i and my friend playing multiplayer using only BetterCombat mod and its hard dependencies,my friend is the host and i am the joiner.I found my stuff was missing! When i and my friend removed these mod,my stuff was back. After a few test on my own computer,i found that your mod or one of your dependencies make joiner's uuid changes.

    To Reproduce(my test)

    1. Player A host a save and Player B join in.
    2. Check Player B's uuid.
    3. Make Player B create his own world.
    4. Check Player B's uuid again.
    5. The two uuid are different.

    Expected behavior none.

    Screenshots or video recordings player B's uuid after joining player A's world: 1

    player B's uuid when in singleplayer: 2

    Additional context none

    opened by dher383 5
  • [Suggestions] Better Shield FP & Jump Attack

    [Suggestions] Better Shield FP & Jump Attack

    I read project readme, checked client side and server side configurations, and no such feature exists - Yes.

    Is your feature request related to a problem? Please describe. So, I got the mod working and already added a compatibility patch with my Waraxes (Waraxes are one-handed axes, Battle Axes are the two-handed ones) but after playtesting the animations and the mod. I notice two slight issues, not big ones mind you, just two things that bothers me:

    1. The shield in first-person animation can get really weird while attacking and in the way.
    2. Doing crit-attacks feels wonky now as the animation doesn't feel natural for the attack style and it is easier to miss since you have to connect with the animation.

    Describe the solution you'd like My solutions for the two is as follows:

    1. Disable the off-hand first-person animations while holding any shields so that it doesn't get in the way so much during attack animations.
    2. Add in an unique animation when jumping down onto an target to make the jump-critical hit more reliable to pull off cause right now, you have to start the attack before jumping with certain weapons and it looks a bit wonky.

    Describe alternatives you've considered I really only have one alternative for the shield idea which is simply just hide the shield in first-person when attacking.

    Additional context Context picture for the shield and how it can block vision during attack animations: Untitled

    And with some modded shields: Untitled2 Untitled3 Untitled4

    opened by Jusey1 5
  • Adding a configuration variable for blacklisting hostile vehicles being protected as mounts

    Adding a configuration variable for blacklisting hostile vehicles being protected as mounts

    Specifically with regard to #152 this attempts to solve the problem of hostile vehicle entities via blacklist. Feel free to suggest changes. I attempted to mimic local design patterns but I can change anything you need here.

    opened by ejdarrow 0
  • [Alex's Mobs] Cannot hit Crocodile while death rolling

    [Alex's Mobs] Cannot hit Crocodile while death rolling

    Minecraft version - 1.19.2 Mod loader - Forge 43.1.43 Mod version - 1.4.5 I am using the latest version available - Yes (for all mods involved)

    Describe the bug When using Better Combat with Alex's Mobs mod, hitting the crocodile mob (alexsmobs:crocodile) while he is "grabbing" you is not possible with Better Combat, even though that behavior is intended in the "vanilla" combat system.

    I did manage to fix this behavior by setting allow_attacking_mount to true. It seems that the "crocodile grab" is coded to be seen as a "mounted" state by the game - you can even see the "horse hearts" appear on the HUD when a crocodile gets you. But this fix resulted in an unwanted behavior where it is possible to hit a horse that you are riding, which is frustrating to say the least. Is there a way to fix the original issue? Maybe creating a blacklist\whitelist of entities for which the allow_attacking_mount will (not) apply?

    To Reproduce Steps to reproduce the behavior:

    1. Spawn/find the crocodile mob (alexsmobs:crocodile)
    2. Aggro the crocodile and let it "grab" you
    3. Try hitting it with a weapon while in the "grabbed" state and fail, unless the allow_attacking_mount is set to true

    Expected behavior Should be possible to hit the crocodile during the "grab" state without the downside of having the possibility of hitting your own horse when riding it.

    Video recordings Better Combat behavior:

    https://user-images.githubusercontent.com/49366383/201408000-e8ac936d-db89-4cd2-b6a4-914f42f9a174.mp4

    Vanilla behavior:

    https://user-images.githubusercontent.com/49366383/201408018-8a380524-2009-48c9-a6bc-33d432097bc5.mp4

    enhancement 
    opened by LolJohn11 6
  • Trident & Throwable Return to Off-hand

    Trident & Throwable Return to Off-hand

    I read project readme, checked client side and server side configurations, and no such feature exists - YES

    Is your feature request related to a problem? Please describe. I like dual wielding a sword & a trident, but When I throw the Trident with my off-hand it does not return (by Loyalty, or just by picking up) to said off-hand & the next empty inventory slot is chosen instead.

    Describe the solution you'd like If the trident is thrown from off hand, next time you pick-up the trident it will come back to off-hand.

    Describe alternatives you've considered Alternatively if the trident is thrown from a slot, reserve said inventory slot until you pick it up & place the trident there (a more flexible setup).

    Additional context To be more precise I ran into this case in the mod Medieval Weaponry - dual wielding a javelin & a sickle. So it would be nice to have compatibility with this mod & general fallback compatibility with any throwables.

    Note: There is one mod for 1.19 that does that ("bettertridentreturn"), but it's only for the trident, it's not actively developed (to my knowledge) & it has no compatibility with mods.

    enhancement 
    opened by Maxz752 1
  • Broken animation in multiplayer - No NBT sync

    Broken animation in multiplayer - No NBT sync

    Version - 1.18.2 Fabric - 0.14.9 Mod version - 1.4.4 I am using the latest version available

    I changed dark katana's parent:weaponAttribute parameter to one-handed(sickle), in singleplayer it works well, but in multiplayer (both LAN and server) the animation is broken. In local server my animation works as it should, but my friend's is broken. From my side I see him holding two katanas with default animation (which shouldn't be). From his side he sees default animation and one katana (while holding second in offhand) while attacking and sees me holding one katana with animation like when I'm using two weapons. In normal server the situation almost the same (see videos). I tried lots of weapons with changed attribute, and all of them don't work as they should.

    Steps to reproduce the behavior:

    1. Go to multiplayer with someone
    2. Use the command /give @p mcdw:sword_dark_katana{weapon_attributes:'{"parent":"bettercombat:sickle"}'} 2
    3. Take katanas in both hands
    4. Attack
    5. Ask your friend to watch it
    6. See first error from friend's side
    7. Ask friend to attack with these katanas
    8. See second error from your side

    Expected behavior The animation should work the same for every player in multiplayer(sadly it doesn't)

    Additional context Trying to make a recipe to change the animation of a weapon using CraftTweaker.

    local multiplayer What should be

    https://user-images.githubusercontent.com/116451066/197352749-91f0393f-b118-4f5e-9a05-8ee6f6d451c0.mp4

    How I see my friend

    https://user-images.githubusercontent.com/116451066/197352764-d6d47dde-7231-4f09-a550-2316559aa748.mp4

    How my friend sees me

    https://user-images.githubusercontent.com/116451066/197352808-deee8f8b-4283-467f-9d56-a76c318ef6c9.mp4

    On server

    Me

    https://user-images.githubusercontent.com/116451066/197352864-67284dbb-7fda-461a-9ed2-2fcfe89c5454.mp4

    My friend

    https://user-images.githubusercontent.com/116451066/197352879-4a05f99a-44fa-49b0-985f-2facca039c58.mp4

    Me again

    https://user-images.githubusercontent.com/116451066/197352885-64bb7021-b709-416d-9d4c-2ff7b4d00f41.mp4

    bug 
    opened by GigaHook 4
  • Queueing attacks

    Queueing attacks

    I read project readme, checked client side and server side configurations, and no such feature exists - YES

    Is your feature request related to a problem? Please describe. I dislike hold-to-attack mode, but repeatedly clicking to attack, just so I happen to click when the cooldown is done.

    Describe the solution you'd like Easy solution: dark souls-like attack queueing. When you click, if you can't currently attack, it waits to attack until you can attack again, and then attacks! Ideally with a configurable maximum number of attacks queued at once.

    Describe alternatives you've considered I suppose you could make it so that holding down the button triggers an attack when the cooldown expires, if and only if the button has been released since the last attack was made. This seems like more fun, though.

    enhancement 
    opened by Hate9 3
  • Weapon Leveling mod

    Weapon Leveling mod

    Minecraft version - 1.18.2 Mod loader - Forge Mod version - any I am using the latest version available - 1.4.3

    Describe the bug Launch crash, mixin conflict.

    To Reproduce Steps to reproduce the behavior:

    1. Load the game
    Caused by: java.lang.UnsupportedOperationException: Redirector target failure for bettercombat.mixins.json:PlayerEntityMixin->@Redirect::setStackInHand_Redirect(Lnet/minecraft/world/entity/player/Player;Lnet/minecraft/world/InteractionHand;Lnet/minecraft/world/item/ItemStack;)V
        at org.spongepowered.asm.mixin.injection.invoke.RedirectInjector.inject(RedirectInjector.java:320) ~[mixin-0.8.5.jar:0.8.5+Jenkins-b310.git-155314e6e91465dad727e621a569906a410cd6f4]
        at org.spongepowered.asm.mixin.injection.code.Injector.inject(Injector.java:276) ~[mixin-0.8.5.jar:0.8.5+Jenkins-b310.git-155314e6e91465dad727e621a569906a410cd6f4]
        at org.spongepowered.asm.mixin.injection.struct.InjectionInfo.inject(InjectionInfo.java:445) ~[mixin-0.8.5.jar:0.8.5+Jenkins-b310.git-155314e6e91465dad727e621a569906a410cd6f4]
        at org.spongepowered.asm.mixin.transformer.MixinTargetContext.applyInjections(MixinTargetContext.java:1355) ~[mixin-0.8.5.jar:0.8.5+Jenkins-b310.git-155314e6e91465dad727e621a569906a410cd6f4]
    
    
    incompatibility 
    opened by ZsoltMolnarrr 2
Releases(1.5.3+1.19.3)
Owner
Molnár Zsolt
Molnár Zsolt
MissileWars is a famous, fun and fast minigame spigot-plugin for Minecraft

MissileWars MissileWars is a famous, fun and fast minigame spigot-plugin for Minecraft Downloads Get binary jars directly here: https://www.spigotmc.o

Daniel 6 Dec 23, 2022
Minecraft spigot plugin for.... spits (just for fun) [1.16+]

Easy-to-use fun plugin that just adds ability to... spit :3 How to spit? Just use /funnyspits spit command! You can also use /spit, which is more fast

Adi Salimgereev 3 Jul 6, 2022
Community Mod. Just for fun.

CommunityMod Developed by members of the Discord server "TurtyWurty's Productions" over the span of 2 weeks, Community Mod is made up of a bunch of un

null 21 Aug 3, 2022
TerraBlender is a library mod for adding biomes in a simple and compatible manner with Minecraft's new biome/terrain system.

https://discord.gg/GyyzU6T TerraBlender is a library mod for adding biomes in a simple and compatible manner with Minecraft's new biome/terrain system

Glitchfiend 31 Dec 12, 2022
A minecraft mod that allows using minecrafts structure block based test system

MC Tester Mod This mod allows using the automated structure based test system Mojang created for minecraft. The test system is only partially included

2No2Name 21 Nov 11, 2022
A complex Clan system for Minecraft

?? Clans This is an open-source project and has not been assigned to the public. If you are interested in contributing to the project, make a Pull Req

Victor Rodrigues 2 Sep 26, 2021
A 1.7.10 Forge Mod to allow players to access easy stats like latency, FPS, and CPS

EZStats A 1.7.10 Forge Mod to allow players to access easy stats like latency, FPS, and CPS. Currently a work in progress, all code is accessable in t

applesfruit 4 Aug 8, 2022
Small mod for Minecraft Forge 1.16.5 that sends messages of in-game events to a channel in your Discord server. This mod also enables cross-chatting between Minecraft and Discord.

DiscordSync Small mod for Minecraft Forge 1.16.5 that sends messages of in-game events to a channel in your Discord server. This mod also enables cros

AeonLucid 4 Dec 20, 2022
a plugin easy to manage you module

ModuleManager 支持功能 自动构建发布脚本 动态切换依赖 一键发布所有module至仓库 动态切换maven仓库 完成配置只需要两步 1、引入插件 在工程目录下build.gradle文件中引入插件 // Top-level build file where you can add co

null 40 Nov 25, 2022
A mixin based ghost client for Minecraft 1.8.9 built on Minecraft Forge.

A mixin based ghost client for Minecraft 1.8.9 built on Minecraft Forge. Originally designed as a MCP Client (called Tephra), it is now being ported t

Peanut 130 Jan 1, 2023
An efficient map viewer for Minecraft seed in a nice GUI with utilities without ever needing to install Minecraft.

To download it head to the Releases section. To run it: either double click it on it if you have the Java Runtime (JRE) or use the command line (shift

Neil 127 Dec 24, 2022
A free mixin-based injection hacked-client for Minecraft using Minecraft Forge.

Custom LiquidBounce 1.8.9 build that aims to improve original visuals and bypasses, along with built-in ViaVersion to help you change from 1.8 to 1.17.1 without creating any other version branch.

epic group of paster 123 Jan 2, 2023
Minecraft Utility Mod for the latest release of Minecraft developed by Cypphi.

Minecraft Utility Mod for the latest release of Minecraft developed by Cypphi.

Haze 18 Jan 1, 2023
Play snake, in minecraft. This is a crude, horibly made snake in minecraft game. Requires PaperMC 1.18.2.

MinecraftSnake Play snake, in minecraft. This is a crude, horibly made snake in minecraft game. Requires PaperMC 1.18.2. Installation: Create a paperm

null 1 Sep 30, 2022
It's a particle system only appliaction. Made with LWJGL (OpenGL and GLFW for Java) and ImGui.

ParticleParty It's a particle system only appliaction. Made with LWJGL (OpenGL and GLFW for Java) and ImGui. How To Use Move the camera with ctrl + W/

Ahmet Aydogan 2 Jan 8, 2022
This minecraft plugin adds @a, @p, and @r to EssentialsX Commands! Works with command block and console aswell!

EssentialsX-Target-Selectors This minecraft plugin adds @a, @p, and @r to EssentialsX Commands! Works with command block and console aswell! Usage: Ju

null 6 Dec 7, 2022
The Ludii general game system, developed as part of the ERC-funded Digital Ludeme Project.

The Ludii General Game System Ludii is a general game system being developed as part of the ERC-funded Digital Ludeme Project (DLP). This repository h

Digital Ludeme Project 49 Dec 25, 2022
MMoCook - Mod including a mini game system to obtain good or bad quality food

MMo Cook Mod including a mini game system to obtain good or bad quality food. -> This mod is entirely inspired by the Genshin Impact system. How does

Titouan-Schotté 2 Jul 22, 2022
Visual In-game "Random Loot Box" rewards system for server monetization

Spincraft: Minecraft Plugin Visual In-game "Random Loot Box" rewards system Deployed on live server as monetization feature Features: Activity logs Au

Matthew Hoque 1 Jan 19, 2022