4681 Commits
Author SHA1 Message Date
KAMKEEL 0dc0e72b62 Revert the NPC tool click guard; Backhand now drops the offhand click itself 2026-10-06 01:58:05 -04:00
KAMKEEL 8f4fcae735 Using the Wand, Scripter or Cloner on an NPC no longer runs its interact through an offhand click 2026-10-06 01:51:13 -04:00
KAMKEEL 2c29f11550 Skin overlays keep the world's light directions instead of lighting from below 2026-10-06 01:51:13 -04:00
KAMKEEL cc2a1246d5 Stop the script editor typing each key twice under lwjgl3ify 2026-10-01 03:48:44 -04:00
KAMKEEL 5712541cae Stop the mount reset clearing a flying npc's flying flag every tick 2026-10-01 03:03:19 -04:00
KAMKEEL 9a7758a27b Cut wasted NPC tick work and stop the flying flag flipping every tick 2026-10-01 02:58:31 -04:00
KAMKEEL cf1e34b4a7 Smooth fast energy projectiles 2026-09-18 15:11:07 -04:00
KAMKEEL 3ecf0a8970 Skip inactive player pose work 2026-09-18 04:48:54 -04:00
KAMKEEL dbbca1c4ec Keep player pose for held items 2026-09-18 04:19:11 -04:00
KAMKEEL 3ee0df1865 Optional Late Mixins 2026-09-17 19:45:03 -04:00
KAMKEEL 3d530a207a Trace entry into the MPM player model 2026-09-17 18:51:16 -04:00
KAMKEEL fcb3384e5f Apply animations at the MPM model pose boundary 2026-09-17 18:50:20 -04:00
KAMKEEL 2ef2936496 Make MPM animation hooks fail loud and traceable 2026-09-17 18:38:31 -04:00
KAMKEEL e910691279 Animate MorePlayerModels limbs through the optional render mixin 2026-09-17 18:25:52 -04:00
KAMKEEL 3b039f67af Keep the script editor out of keys meant for another box 2026-09-10 04:10:09 -04:00
KAMKEEL 517ccb09c3 Drop the shutdown flush that does not compile
The FMLServerStoppingEvent handler added in 1.11.2-beta1 calls
PlayerData.flushEffects() and PlayerData.save(boolean), and neither method
exists -- so the mod has not compiled since that commit.

Removed along with the four imports the same commit added for it:
FMLServerStoppingEvent, EntityPlayer, PlayerData and ArrayList. Nothing else in
the class used them, so CustomNpcs.java now differs from 8612d444 only by the
version bump.

The problem it was written for is real -- effects live in memory, and logout is
not guaranteed to fire during shutdown -- but the flush needs methods that have
to be written first.
2026-08-14 00:32:35 -04:00
KAMKEEL 5403060ee5 1.11.2-beta1 2026-08-13 23:14:01 -04:00
KAMKEEL 8612d4442a Restore the npc step height even if the hitbox nudge throws 2026-08-13 06:06:14 -04:00
KAMKEEL b6f2bae770 Stop the hitbox nudge stepping npcs up when they lie down 2026-08-13 03:02:03 -04:00
KAMKEEL e3a1017770 Remove the hitbox investigation logging 2026-08-11 17:35:19 -04:00
KAMKEEL 7f606fbec2 Disable the hitbox grow nudge while testing 2026-08-11 15:47:50 -04:00
KAMKEEL 3dfcf7764a Log client interpolation state alongside the hitbox probe 2026-08-11 15:38:55 -04:00
KAMKEEL 1a1871f803 Keep the hitbox logging from forcing a chunk load during entity load 2026-08-11 15:16:33 -04:00
KAMKEEL 277c056417 Add temporary hitbox logging for the npc clipping investigation 2026-08-11 15:11:57 -04:00
KAMKEEL c634c4bd35 Revert "Refresh block bounds before reading a collision box so top slabs report the right height"
This reverts commit 715b38e694.
2026-08-11 15:09:59 -04:00
KAMKEEL 715b38e694 Refresh block bounds before reading a collision box so top slabs report the right height 2026-08-11 14:59:09 -04:00
KAMKEEL 9ff4b8ae16 Nudge npcs out of blocks they grow into when the hitbox changes 2026-08-11 12:53:08 -04:00
KAMKEEL e3d1c9b1a7 Apply the entity tracker spawn fix on the integrated server too 2026-08-11 12:29:57 -04:00
KAMKEEL 605907681c Return npcs to their start position when they fall out of the world 2026-08-11 12:29:56 -04:00
KAMKEEL 32c5cc78c7 Stop cloning a linked item from replacing its shared script handler 2026-08-11 12:18:59 -04:00
KAMKEEL 795464fb81 Key the skin overlay packet on UUID so it isn't dropped for unloaded players 2026-08-11 12:18:59 -04:00
KAMKEEL 4a52690d99 Let a script reload clear the errored latch on single-container handlers 2026-08-11 12:18:59 -04:00
KAMKEEL fae2c21893 Fix the script-facing effect apply and remove overloads throwing on every call 2026-08-11 12:18:59 -04:00
KAMKEEL c2ad3ef015 Small Behavior Restorations 2026-08-11 12:00:52 -04:00
KAMKEEL 98c94bd406 Trim comments 2026-08-11 11:32:01 -04:00
KAMKEEL 67ddaaab6f Keep entity hash consistent with equals, and campfire interaction handled
ScriptEntity.hashCode included tempData while equals compares only the entity,
so two wrappers of the same entity hashed differently - and tempData is mutable
and swapped wholesale by copyTempData, so an entry's hash could change while it
sat in a map.

BlockCampfire.onBlockActivated went from returning true to false, which lets the
held item be used or placed on top of the interaction. Restored.
2026-08-11 06:29:18 -04:00
KAMKEEL 22a8ef5036 Merge branch 'dev' into pr-254
# Conflicts:
#	src/main/java/noppes/npcs/client/gui/GuiNpcMobSpawnerSelector.java
2026-08-11 06:29:18 -04:00
KAMKEEL 2de0795a8e Keep the pBurnItem migration on revision 23
Revision 23 never shipped without the burn flag - it released together with it -
so no saved NPC carries version 23 from a build that lacked pBurnItem. The
migration belongs in the < 23 gate, and bumping ModRev would only force a
redundant pass over every NPC.
2026-08-11 06:07:58 -04:00
KAMKEEL c6e361f8e6 Register inventory tabs from the client proxy, not the mod class
Deferring registration to loadComplete is right - TConstruct needs to have
registered first - but naming TabRegistry and the tab classes in CustomNpcs put
client-only GUI types in a class the server loads, which the verifier resolves
at link time regardless of any runtime side check. A proxy hook keeps them in
ClientProxy while still running at the same point.
2026-08-11 05:56:08 -04:00
KAMKEEL 74511b7449 Merge branch 'dev' into pr-290
# Conflicts:
#	src/api
2026-08-11 05:54:41 -04:00
KAMKEEL 179fd4f834 Make ID reassignment safe, and apply it to quests too
The free-ID search only consulted the global map, so it could pick an id the
same category still held further down the iteration - and renameTo silently
overwrites on POSIX, so the rename then destroyed that entry's file. It now
skips ids held by the category and any file already on disk.

Quests had the same discard-on-collision behaviour and now get the same
reassignment, including re-registering shared quests under the new id.
2026-08-11 05:54:14 -04:00
KAMKEEL 1d0b640c61 Merge branch 'dev' into pr-293 2026-08-11 05:52:42 -04:00
KAMKEEL fab1062ce8 Bump ModRev so the pBurnItem migration can run
The migration sat in the npcVersion < 17 block, but ModRev has been 23 since
2023 and CheckNpcCompatibility returns early when the save already matches it -
so every NPC affected by the regression was skipped. Moved to a < 24 block and
bumped ModRev to 24 so it actually reaches them.
2026-08-11 05:52:30 -04:00
KAMKEEL 1532ef722c Merge branch 'dev' into pr-278 2026-08-11 05:51:40 -04:00
KAMKEEL caa39d6d5d Merge pull request #283 from zeng-github01: disable auto-open GUI for BlockBorder and BlockNpcRedstone 2026-08-11 05:22:36 -04:00
KAMKEEL a71532f49a Merge pull request #292 from postyizhan: adapt quest tracker height to content 2026-08-11 05:22:35 -04:00
KAMKEEL a028142dda Fix mouse wheel scrolling in the script editors
Mouse.getDWheel() clears the accumulated delta, so whichever widget polled it
first in a frame took it and every later reader saw zero. The script text areas
polled it themselves, after the parent screen had already drained it for its
scroll lists, so the wheel did nothing in the player, NPC and event script GUIs.
The screen now reads the wheel once per frame into the mouseScroll field it
already declared for this, and each widget zeroes it when it consumes it.
2026-08-11 05:08:15 -04:00
KAMKEEL 71bb4b451e Honour the effective windup instead of the raw field
start() and tick() compared against the raw windUpTicks, but when the windup is
synced to an animation the value that applies comes from getWindUpTicks(). An
ability configured that way skipped its windup entirely and fired on the first
tick. The telegraph duration used the raw field too, so it disagreed with the
phase it was meant to cover.
2026-08-11 05:01:50 -04:00
KAMKEEL 677d50fa03 Keep client-only sub-GUI types out of condition and zone descriptors
Same leak as the ability magic editor: @SideOnly strips the annotated method on a
server but not the synthetic lambdas it generates, so ConditionHasEffect,
ConditionQuestCompleted, AbilityTrap and AbilityZone all shipped methods whose
descriptors named a client-only GUI class. Each field is now built in the GUI
class it belongs to.
2026-08-11 05:00:02 -04:00
KAMKEEL 466b49db5e Let the day/night transform actually fire
EntityAITransform claimed the PASSIVE mutex, so any running movement or look
task blocked it from ever starting. The swap only happened in the gaps where
those yielded - which is why it appeared to trigger when an NPC said a line and
for a moment afterwards. The task only polls world time and flips the state, so
it needs no mutex at all.
2026-08-11 04:52:50 -04:00