1.9.3
Changes
- Support for DBC Addon
- Changes to Flying Height API
- Optimize Render Events for JBRA Client
- GuiScrollWindow
- Entity Field to CNPC Natural Spawn Event
- HTTP Posts are Multithreaded
- Scroll Wheel works in Scripting Menu and other GUIs
- Breaking Carpentry Bench shows Plank Textures instead of Lava
- Reduce Lag on Scripted Items during Right Click Event
- Improved Barrel Model (To Be Changed)
- Tint Damage during Hurt Effects
- Animation Frames can be Copy and Pasted with Keybinds CTRL + V and CTRL + C
- Script Loading performance Improvements
- Scripts Save Asynchronously after Editting
- Allow setLootItem to be set to Null for Empty Item
Fixes
- Music Memory leak fixes
- Entity Null bug on Kill Quests
- Animation Null bug on Player Models
- Fixes to Sneaking while Animating
- Animation GUI now closes correctly with ESC
- Player Specific Invisible to Client Fixes
- Soulstoning Animals works again
- Auto Completed Item Quest Fixes
- Swing Packet only Sent to Server Side
Changes
- Sync / Save Scripts asynchronously on closing Player / Forge / All Npc Tabs
- Scripted Block now renders more like a block with shadows [TileEntities do not cast sky shadows]
- Scripted Block hover selection only shows if Block is Visible and not when not passible
- Send Swing Event only to Serverside
- Ping Client to Reload NPC on Url Changes
- Scroll Bars reset when typing into Search Bars
- Added
Acceptable
andNotAcceptable
Availability options for Cooldown Detection - Added
scriptCommand
hook - Some colored blocks now render in banners correctly
- Send PlayerData in Chunks to prevent
SYNC_END
overload - Added
createNew()
IItemStack broadcast()
for IWorldhas()
clone in ServerCloneControllers
Fixes
- Better MorePlayerModel+ Handling for Overlays
- Fix Tint Hurt Damages
- Fix HasCode() not checking for Loaded Scripts
- Fix Item Quest on Pickup calculating Quest Reward too quickly
- Fix
setLootItem(null)
- Casting Fixes for FakePlayer
- Scripted Block Text Compounds not saving
- Better Null Crate handling
- Gui Trade Setup Cutoff
- Fix
setLore
clearing item titles and other display objects - Banner Items Rendering Above
- :skullclown: removed another print
- Fix
removeItem()
considering ignoreNBT and ignoreDamage properly now - Fix
set
ServerCloneController - Fix Sound Selector not visually updating right away after choosing
- Permission Handler error for
isOp
on Client Side
Changes
- Was in 1.9 -- Added Quest Manual
/kam quest objective
command for completing objectives for parties and players on quests- Added an isOp Permission check for all permissions
- Add
setIsNormalItem()
andisNormalItem()
to Scripted Items to make items held / render like default MC Items
Fixes
- Switching Skin Overlay URLs / Textures maintains Glow / Solid
- Fix Scripted Block Null on Save
- Fix Scripted Block Events
event.block
null - Fix GUI Texture Selector cutting off texture paths
- removed print statement
- Fixed Scripted Item ghost items when being dropped
- Fixed DBC Custom Item Models causing Player Animation rendering crash
- Adding more dialog images with different indexes don't crash
- Fix Player Animations not rendering when switching dimensions
1.9
MASSIVE RELEASE TONS OF CHANGES.
NEW
- Entire Party System!! SEE GITHUB WIKI
- TEXTURE REVAMP for ALL ITEMS to more Modern Look
- Client Side Animation Cache
- Animations now also have an ID
/kam animation
to play animations on a player via a command- Brand new configs in
mixins.cfg
to disable and enable animation functionality. - First Person Animation rendering
- Timeline Viewer for all Animations Frames [with Color Picker for categorizing]
- Dialog / Quest / Sound / Texture Selection Revamped with new Dynamic Popup Selection
- Dialog Test Button for directly testing dialogs from within the GUI
- Script Syntax Highlighting
- Quest Log Categories are now SCROLLABLE :closed_book:
- Factions GUI now displays 2 columns and is fully hideable in the
config/CustomNpcPlus/client.cfg
- Settings Tab
- Clear Quest Tracking
- Clear Skin Cache
- Modify Quest Tracking [Position, Offset, and Scale]
- For Dialogs with Noise and Gradual Speed - Edit Values
- Hide Chat Bubbles / Alert Banners / Chat Info Message
- Party Tab (read party changes)
- Hoverable Text in all GUI Lists (Now you can see values fully)
- Code Highlighting in Scripting Menu
/kam command [ScriptedCommandName]
to run Scripted Commands via a normal comamand- New APIs for added content:
IParty
,IHitBoxData
,ITintData
,IMark
, - IRoleFollower
- Combat Policy API
- SET/GET Melee Range, Swing Warmup, Knockback, Aggro Range
- ILine for Attack, Killed and World Lines
- Better Hotkey Handling
Ctrl
+X
,C
,V
,Z
,Y
... etc - Mouse Drag selection in Script GUI.
Banned Scripting Classes
editable in themain.cfg
IVillager
for modifying Villager TradingIScreenSize
for sending Client Screen Size to Server- URL Support on **Capes **and Overlays
- Spawner Job 2 new AI Variations (Spawns on Summoner Death, Kills Spawns when Summoner Dies)
- Blocks can now be used in Banners / Hanging Banners / Signs
/kam
is the same as/kamkeel
/kam questcat
command/kam dialogcat
command/kam overlay
command/kam config market
allows for Market conversion fromJSON
toDAT
filetype similar to/kam config playerdata
, The Market Dat feature must also be enabled within themain.cfg
- 3 New Shield Types: Frost, Mithril, Demonic Full Variations
- Added
Pounce
as a Leap option for NPCs. So now you haveJump
andPounce
(Pounce is way further) - Friendly Fire and Party Configs for enabling / disabling functionality
- Better naming for CNPC+ related mobs in Entity Selector
- Enhanced Build Gradle
- 2 New Tail Types Monkey (Remade to look like DBC's Tail) and Fox Tail
- Marks from 1.12
- Tint Modification Settings
- Hitbox Modification Settings
- New Permissions (Printed to Console on Start)
- Multi-Commands broken up by
@x
- Combat Policy System -> See Discord for Details
FIXES
- Clicking through Animation Deletion Bug
- Animations and Armors Desyncing
- Animations slowing down and speeding up
- Animations now playing in different dimensions
- Mouse Scroll working in all scrollable text areas
- Quest Dialog Selector popping off of screen
- Trader GUI Setup cutoff
- Autocomplete Quest Tracking no longer displays an NPC name
- Top Alignment Dialog Fix
- Dialog Image Positioning Fix
- Shift Clicking in Carpentry Bench now updates client inventory
- getWorld for End and Nether Fix
- Script Book not hooking Book and Quill
- getIRoleType returning wrong values
npc.updateEntity()
to fix dimension ID error for updateClient [fixes existing NPCs]- getStoredDataKeys Crash
- Scripted Particles spawned on summoners player not at proper Y Value
- Resizing Scripting GUI clears Script
- Scripted Items being dropped and bobbing in items frames
- Melee Swing and RangedLaunch Event not being called
- Custom GUI Item Slots not registering
- getLeftItem Typo Fix. Both misspelled and correctly spelled are available
- Inventory Tab Offset Issue
- Fix Remote Freeze Button not showing the correct option
- Removed Nashorn Size of Object Dependancy for Java 17 Support
- Buttons highlighting even when a Sub GUI is pulled up
- Mouse Overlap Double Clicking buttons
- World Lines spamming, now has cooldowns
- Item Giver Job having shared cooldowns (if still broken remake item givers from scratch)
- HD Textures not loading on NPCs
- Dispenser Soulstone Crash
- Kill Projectiles after 1 minute of lifetime
- Quest Location Crash Fix
- Scroll Tag Crash
- 3D Layer Duplicate for Chestplate
- Spawner Job NPC Bouncing
- Spawner Job "X" Button
- DBC Add Bonus Crash
- Singleplayer Cache not clearing
- Imgur Redirect Links
CustomNPC+ 1.8.6
1.8: Changes 1.8.1: Changes 1.8.2: Changes 1.8.3: Changes 1.8.4: Changes 1.8.5: Changes
Just a quick bug fix and command overhaul with some new quest and dialog commands that will be extremely useful! Client Cache is now fully tested and in place!
THE QUEST ROLLBACK BUG IS NOW FULLY FIXED with the new PLAYER DATA CACHE!
Changes
- Added
/kam
as a command alias for/kamkeel
- Added
/kamkeel questCat
Command - Added
prereq
,info
, andid
to quest command - Added
/kamkeel dialogCat
Command - Added
availability,
info, and
id` to dialog command - NPC Texture Caching (Less URL Requests)
- Particle Texture Caching (Fixes Particle Flickering)
- Added Cache Time to client config
Fixes
- Fix PlayerData not being removed from Cache
- Tracked Quest not clearing between worlds/servers
- DBC Render Error
- Added noppes command warning (Unsupported)
- CustomOverlayLabel and Line weird layering bug
- CNPC+ Logs only PRINT to CustomNPCs Logs (Not Console)
- Quest/PlayerData Rollback Bug
CustomNPC+ 1.8.5
1.8: Changes 1.8.1: Changes 1.8.2: Changes 1.8.3: Changes 1.8.4: Changes
Changes
- PlayerData
DAT
format (Huge Performance Boost for PlayerData loading/saving) - Client Image Cache - Added a Client Image cache for Particles, NPC Url Textures, URL Items, etc. There is now a config associated with this in
CustomNpcPlus/client.cfg
- Moved PlayerDataMap.dat location to inside
customnpcs
folder rather thanplayerdata
folder - PlayerData Converter Commands
/kamkeel config playerdata
Fixes
- Set Engine - Memory Leak/Timing Out
- Bad PlayerData JSON loading issue with CPU hogging
- Player Animations DBC render issue
- Script Saving Issue
- Fix NullPointer Natural Spawns Crash
PLAYERDATA DAT
FORMAT
We are introducing a new playerdata format that can extremely benefit larger servers with an active player base. There is no danger in using this format. You can see playerdata loading/saving improvements of upwards of 100x.
HOW TO CONVERT PLAYERDATA
I suggest you whitelist your server and only have one player online when converting playerdata. You must have file access. Converting will NOT delete your existing data
- Utilize
/kamkeel config playerdata dat/json convert
- Wait forcomplete
message
dat
will clone all JSON playerdata and convert them into dat and put them into a new folder.json
will clone all DAT playerdata and convert them into json and put them into a new folder.
- Stop your server/close your world
- Go into
customnpcs
folder for your world and remove/rename yourplayerdata
folder. You may keep it somewhere else if you'd like. - Rename
playerdata_new
folder toplayerdata
- Go into SERVER config -
CustomNpcPlus/main.cfg
and enableB:"Dat Format for PlayerData"=true
. FALSE if you want to go back to using JSON
CustomNPC+ 1.8.4
1.8: Changes 1.8.1: Changes 1.8.2: Changes 1.8.3: Changes
Changes
- Added functionality to Search in Cloner by typing in the TAG_NAME - Included in Search
- Improved Dialog Loading Performance
- Added Search to BankData Menu
- Made NPC Quick Tags
CLOSE
on save. - ItemToss Event is Cancellable
- Improved Script Performance
Fixes
- Fixed Quest Progress not saving on completion (ATTEMPTED)
- Fixed Player Animations not moving body parts
- Removed Duplicate Quest Complete message on Auto Completed Quests
- QuestData NullPointerCrash on QuestKill
- Removed Crate FIX to remove Crash
- ItemSlot CustomGUI Crash
- ItemSlots not using correct Slot ID
- Better accuracy for
getLookingAtBlock()
- Fixed an issue where scripts would still run the old version of themselves after being edited.
CustomNPC+ 1.8.2
Changes
- Add support for BUKKIT Permission Handling in Bukkit Plugins for KAMKEEL Commands
- Fully Multithreaded Packet Sending for better server performance and efficiency
- Added Regenerate PlayerMap Button
Fixes
- Fixed UUIDs not saving on NPCs when spawning a new one via SoulStone/Clone
- Fixed Recipe Search crash when recipe output is blank
- Fixed Quest Cooldowns reading incorrect time.
- Fixed Quests not displaying Completion
- Null Check to potentially fix fatal error on Crate
- Fixed Player Animations rendering corruption while holding a 3D Item
- Fixed Quest Tracking disabling or not updating properly
- Multithreaded Quest Data MAY fix Quest's not saving on bigger servers
CustomNPC+ 1.8.1
1.8: Changes
Changes
- Renovated /kamkeel commands with better messages/feedback
- Improved Tab Completion on /kamkeel commands
- Added PlayerData Map file for quicker PlayerData GUI Loading/Synchronization
- Added Mixin Config
Fixes
- Fixed Natural Spawning not working
- Fixed Quests Data not saving correctly into PlayerData
- Fixed Mixin Crash (Server-Side)
- Fixed Client Config not correctly saving [Ported Mixin to Mixin Config]
CustomNPC+ 1.8
CNPC+ Changes
Animations
Animations can now be utilized through scripts! They can either be made using scripts or made in the fancy new Animation Maker GUI! You can access this via the Global Menu! See API or JavaDoc for how to script Animations! Animations will also be saved as JSONs so you can EXPORT them and SHARE!
Tags
There are new tags available to be added to NPCs. They can be used to help organize, filter, and sort through NPCs in your Cloner. Tags can be directly applied via the Cloner
or they can be applied within the Advanced
Tags page within an NPC. Tags can be created via the Global
Menu and the colors/hidden properties can be customized there!
Rotation Menu
In order to make the new Animation System function as intended. The PUPPET JOB has been completely removed and converted into a ROTATION Menu. You can use this menu to rotate ALL NPCs regardless of their job. Upon updating, your Puppet Jobs should AUTOMATICALLY convert to the new Rotation Menu. Do note, PUPPET scripts will be the only thing to break :(
Event Scripts
Similarly to the 1.12 System you can now add multiple event-oriented scripts directly to an NPC. This will not clear any of your current scripts. It is completely optional to use.
Quality of Life
- New /kamkeel command (With Better HELP MENU) [/noppes still available]
- Recipe Menu Search Bar
- Faster/Efficient Global PlayerData viewer
- Overhauled Config (Saved in CustomNPC+ Folder)
- Natural Spawning Dimension CONTROL (Should help with issues within LOTR)
- Client-Side disable QUEST POP UPS
API
- Scripted Item URLs
- Limbwear API Functions
- IModelData additions
- IProjectile API
- IDBCPlayer Improvements
- ISound changes
Fixes
- Changes to Dialog Quest Logic
- Fixes to Quest Saving Logic
CustomNPC+ 1.7
The next version of CNPC+ is finally out! It features a bunch of fixes, improvements and quality-of-life changes!
CNPC+ Changes
Flying Improvements
Finally! I am happy to announce that FLYING has BEEN EXTREMELY improved! The AI is not only intelligent but resource efficient! So do not be afraid to SPAM flying NPCs! As always, if you find bugs please report them!
Saving PlayerData (please backup, just in case)
Improvements have been MADE to Saving (and will not result in the crazy compression fiasco we had). It has reduced the amount of PlayerData calls and pushed them to a separate Thread to reduce SERVER LAG and improve PERFORMANCE for Large PlayerData files! Thanks to @EverNife
CNPC+ Logging
I have decided to implement a clean logging system for servers to use! There are 2 Formats for Logging! (must be enabled in config)
ALL LOGS are printed to the CustomNPCs Log files. And if on a SERVER, WILL ONLY print to SERVER CUSTOMNPCs LOG FILEs
Examples ----
- Player Logging
[21:51:50][CNPC][SCRIPTER] Kam OPEN NPC Asher (-46, 39, -1103) [World]
[21:51:50][CNPC][SCRIPTER] Kam SAVED NPC Asher (-46, 39, -1103) [World]
[21:59:20][CNPC][WAND] Kam OPEN NPC Asher (-46.5, 39.0, -1103.5) [World]
[21:59:21][CNPC][WAND] Kam CLOSE NPC Asher (-46, 39, -1103) [World]
- Script Logging
[TICK] NPC Bob (World) (-8301, 90, -7848)
[INTERACT] NPC Joe (World) (-8301, 90, -5423) | Objects: [EntityPlayer, Kam]
[DAMAGED] NPC Bill (DIM-1) (-1304, 90, 3021) | Objects: [EntityPlayer, Kam]
Fixes
Fixed ForgeGradle not downloading in
build.gradle
Fixed Height off the Ground for Flying Fixed Unused Wing Textures not in selector FixScriptingEnabled
not actually disabling scripts Fixed Null Tile Entities Crash Various Crashes
API
There is NOW an official CNPC+ API This API can be hooked onto by other mods and plugins that you all wish to develop! We will continue to update this API and add even more diverse functionality to it than the original!
API Fixes
All functions that take double values for positions now have functions that take IPos objects as well. IBlock, IPos, IEntity, and IWorld now have readalbe toString functions. NpcAPI: Added getAllInBox(IPos,IPos) function, returns all IPos objects inside the box created by the two positions. Added getPlayer() function Added getChunkLoadingNPCs function Added getCurrentPlayerCount, getMaxPlayers, kickAllPlayers, isHardcore, getFile(path), and getServerOwner functions added IPos: Added crossProduct(IPos), divide(scalar), and to/FromLong functions. IBlock: Added setPosition functions Spawner, Transport, Healer, Guard, Bard jobs and transporter role received more functions. IAnimal, IEntityLiving, and IEntityLivingBase received more functions from their MC counterparts.
1.6.3
*Backup before use Report Bug
⚙️ More Fixes
- Holding Item Fix
- Solid Overlays Fix
- Soulstone Placement Fix
V 1.6.2
Fixes
- Fake Player Error #60
- Add Mixins for Overlay Support [Optifine...., etc]
- Quest Errors - Tracking, Crashing
- Microblocks Duplication Glitch
- Flying Code Processing Improvements (Less Lag)
- Dialog Cut Off Fix
- 3D Item Rendering Fix
- SkinOverlay Transparent (Default)
- Entity Soulstone Positioning
- Cloak Damage White Flickering
- Waypoint Error
V 1.6.1
- Fix GlowTexture from OLD NPCs not loading
V 1.6
CNPC
☑️ 64x64 SELECTED Textures Compatible on ALL Models (Steve, Alex, Steve64)
There are no more /64-Textures/ for CNPC Entity Textures. All 64x32 have been removed and replaced with 64x64 versions. All NPCs that have "/64-Textures" selected should automatically change. From now on 64x64 Textures WILL work on all Human Model types. 64x32 will work on Steve32 Only. (This only affects the texture selector, not the URL or Username selection)
☑️ Solid NPC Overlay
Button added to NPC Display section. Options:
Glow
orSolid
. Glow is enabled by default for overlays, but the newSolid
option will remove the glow and transparency for overlays. (Examples: Scars, Bruises, Blood, etc)
☑️ Quest Tracking
To track or untrack a quest, open the quest tracker and click "Track". Tracked quest objectives will update as objectives are completed on an overlay GUI to the right of the screen.
☑️ Additional Visual Dialog Options
All options are visible from the "visual options" button in the dialog creation menu. These include custom images with a configurable limit, offset and scaling options, gradual & instant rendering options, and much more. Dialog pauses have been added! Adding a number in between brackets ( {10} for example) will delay dialog rendering by that many ticks.
☑️ Natural Spawning Options
Up to 5 NPCs can be added, and different spawning behaviors and heights can be configured now.
☑️ NPC Breathing Types
NPCs can drown in water [Default], in air but not water (like squids), or not drown at all.
☑️ Cloak Invisibility
Cloaks become invisible if the NPC is invisible.
☑️ Potion Amplification
DirectionalButtons to Melee Potion Effects -- (Amplification up to 10) [Will be added to ranged in release of 1.6)
☑️ Entity Model Overlays
Entity Models can now use overlays with any texture selected
⚙️ More Fixes
Flight pathing has been improved. Speed calculations have also been improved, most importantly vertical speed now functioning like it should: increasing the rate at which an NPC climbs/descends heights while flying, and not resulting in wacky speeds now. Try it! Removed MorePlayerModel dependency for parts (again, sorry.) Added config for only operators to view/edit scripts, and for only a list of players with given UUIDs to view or edit scripts. Added a config to allow for scripts to be expanded past the 65k character limit. Every additional increase of the config adds another 65k characters to scripts. Fixed quest tracking not being able to be removed. Fixed concurrent modification crash with PlayerQuestData Knockback Enchantment / Critical not taken into account for Knockback Resistance Fixed NPC Follower Role
API
☑️ Scripted Items
Found in the creative menu, you can now script your very own custom items! Shift-Right-Click in creative mode with the item in your hand to access its scripts (event hook list on the left side of the GUI). Scripted Items can be held by any entity, have custom textures with URL support, rotate in every axis, be scaled to be smaller/larger, be offset in the entity's hand, have a custom max stack size, have a custom color, have a custom item use action (nothing, block, bow, eat, drink), can have their enchantibility changed, among some other functions. Try it all out, go nuts!
☑️ NPC & Player Skin Overlays
Players can now also use overlay textures, and both NPCs and players support several overlays, denoted by their ID! These overlays are compatible with JinRyuu's Dragon Block C and other custom player renderers. Each individual overlay can have custom textures with URL support, glow, blend with textures below it or not, have custom alpha values, have custom sizes, be offset from the player or NPC, scale its texture up/down, and apply a texutre "speed", making the texture move accross the entity.
☑️ Massive Scripted Particle Update
You can now control several attributes of scripted particles, such as alpha values, size, directory with URL support, texture scale, position, color interpolation, rotation in every axis, whether the particle faces the player, particle animation, and more. Additionally, particles can now be set to spawn in a position in the world, not just on an entity (Now called IParticle instead of ScriptEntityParticle for this reason). Packets to the client are optimized to send only the necessary data to create the desired particle.
☑️ Global Data Handlers
Instead of using an IWorld object for modifying global faction/dialog data, you can now access and modify that data through handler objects gotten through the NpcAPI class:
var factionHandler = API.getFactions(); //Returns global faction data as an IFactionHandler object.
var recipeHandler = API.getRecipes(); //Returns global recipe data as an IRecipeHandler object.
var questHandler = API.getQuests(); //Returns global quest data as an IQuestHandler object.
var dialogHandler = API.getDialogs(); //Returns global dialog data as an IDialogHandler object.
var cloneHandler = API.getClones(); //Returns global clone data as an ICloneHandler object.
var spawnsHandler = API.getNaturalSpawns(); //Returns global natural spawn data as an INaturalSpawnsHandler object.
var transportHandler = API.getLocations(); //Returns global transport data as an ITransportHandler object.
You can then modify and create data objects for these handlers through their functions (be careful when updating large amounts of data), which are all visible on...
☑️ Differing IItemStack Types
Item stacks are now converted into IItemStacks exclusively through the NpcAPI, which means they can be easily categorized into different types! For now, the only types are:
- scripted
- book
- block
- armor
- other (regular IItemStack like in previous versions if it's not any of the other types)
The first four types have their own set of functions available to only that type of IItemStack, and can all use the regular IItemStack functions.
⚙️ Additional API Additions
- ISound: New interface for manipulating sounds, all sounds can be tied to an ID to stop/pause/continue them. Various sound attributes like pitch, volume, and position can be modified.
- NpcAPI: Added new functions for use with the ISound interface: createSound(), playSound(), pauseSound(), continueSound(), stopSound(), pauseSounds(), continueSounds(), stopSounds(). These functions play to players in all worlds.
- NpcAPI: Added stopServer() function with a configurable shutdown message.
- IWorld: Added above ISound functions to manipulate sounds for a world in particular.
- IPlayer: Added new ISound functions that only affect a player in particular.
- IWorld & ICloneHandler: Added new spawnClone() function that checks for entity spawn protection.
- IWorld: Added getEntitiesNear() function with position and range parameters.
- IWorld: Added rayCastPos() function for when rayCastBlock() returns null.
- IWorld: Added rayCastEntities() function
- IEntityLivingBase: Added getLookPos() and getLookingAtEntities()
- IPlayer: Added isScriptDev() function to determine whether a player is allowed to view and edit scripts.
- IPlayer: Added functions that use IDialog & IQuest parameters to change quest & dialog data instead of IDs.
- IPlayer: Added kick() function with a configurable message/kick reason.
- Added PlayerEvent.AttackEvent & PlayerEvent.AttackedEvent to completely cancel attack events, preventing knockbacks/hits from occuring to or by the player.
- PlayerEvent.MouseEvent: Added isCtrlPressed, isAltPressed, isMetaPressed, isShiftPressed, and keysDown fields.
- IParticle: Added general spawn() function, replaced spawnOnEntity and spawnInWorld. Former functions deprecated.
⚙️ And TONS of more functions added to pre-existing API classes: View all of them on the Javadoc!
⚙️ API Fixes
- Fixed some timer functions causing crashes instead of exceptions.
- Fixed scripting text area modification being VERY slow on large scripts (>200k characters)
- Fixed mouse wheel changes not triggering a mouse event.
- Fixed image u,v values for custom GUI and overlay textured rectangles.
- Fixed hover text for custom GUI buttons
- Fixed images with uneven widths/heights not rendering correctly for scripted particles.
CustomNPC+ Dark Mode
Release V 1.0
CustomNPC+ Java Doc
CNPC+ API Docs
1.5.4
BACKUP BEFORE USE (Including CNPC+ Player Data)
CNPC CHANGES -- Updated VersionCompatibility for Updating Data and Fixing Load Data -- Reverted to OLD PlayerData System to prevent errors and deletions occurring -- Remodeled Capes & Added Dozens of New Capes!
Reorganized Cape Directory to better fit future updates
FIXES & OPTIMIZATIONS -- Fixed Useless Dependency Files -- Fixed NPC Dialog Scripts -- Fixed PlayerData Deletion
ZSTD FILE Compression has been REMOVED (Unstable)
1.6 Beta
*Backup before use
THIS IS A BETA so EXPECT SOME BUGS Report Bug
CustomNPC+ Dark Mode
Release V 1.0
CustomNPC+ Java Doc
CNPC+ API Docs
CNPC
☑️ 64x64 SELECTED Textures Compatible on ALL Models (Steve, Alex, Steve64)
There are no more /64-Textures/ for CNPC Entity Textures. All 64x32 have been removed and replaced with 64x64 versions. All NPCs that have "/64-Textures" selected should automatically change. From now on 64x64 Textures WILL work on all Human Model types. 64x32 will work on Steve32 Only. (This only effects the texture selector, not the URL or Username selection)
☑️ Solid NPC Overlay
Button added to NPC Display section. Options:
Glow
orSolid
. Glow is enabled by default for overlays, but the newSolid
option will remove the glow and transparency for overlays. (Examples: Scars, Bruises, Blood, etc)
☑️ Quest Tracking
To track or untrack a quest, open the quest tracker and click "Track". Tracked quest objectives will update as objectives are completed on an overlay GUI to the right of the screen.
☑️ Additional Visual Dialog Options
All options are visible from the "visual options" button in the dialog creation menu. These include custom images with a configurable limit, offset and scaling options, gradual & instant rendering options, and much more. Dialog pauses have been added! Adding a number in between brackets ( {10} for example) will delay dialog rendering by that many ticks.
☑️ Natural Spawning Options
Up to 5 NPCs can be added, and different spawning behaviors and heights can be configured now.
☑️ NPC Breathing Types
NPCs can drown in water [Default], in air but not water (like squids), or not drown at all.
☑️ Cloak Invisibility
Cloaks become invisible if the NPC is invisible.
☑️ Potion Amplification
DirectionalButtons to Melee Potion Effects -- (Amplification up to 10) [Will be added to ranged in release of 1.6)
⚙️ More Fixes
Flight pathing has been improved. Speed calculations have also been improved, most importantly vertical speed now functioning like it should: increasing the rate at which an NPC climbs/descends heights while flying, and not resulting in wacky speeds now. Try it! Removed MorePlayerModel dependency for parts (again, sorry.)
API
☑️ Scripted Items
Found in the creative menu, you can now script your very own custom items! Shift-Right-Click in creative mode with the item in your hand to access its scripts (event hook list on the left side of the GUI). Scripted Items can be held by any entity, have custom textures with URL support, rotate in every axis, be scaled to be smaller/larger, be offset in the entity's hand, have a custom max stack size, have a custom color, have a custom item use action (nothing, block, bow, eat, drink), can have their enchantibility changed, among some other functions. Try it all out, go nuts!
☑️ NPC & Player Skin Overlays
Players can now also use overlay textures, and both NPCs and players support several overlays, denoted by their ID! These overlays are compatible with JinRyuu's Dragon Block C and other custom player renderers. Each individual overlay can have custom textures with URL support, glow, blend with textures below it or not, have custom alpha values, have custom sizes, be offset from the player or NPC, scale its texture up/down, and apply a texutre "speed", making the texture move accross the entity.
☑️ Massive Scripted Particle Update
You can now control several attributes of scripted particles, such as alpha values, size, directory with URL support, texture scale, position, color interpolation, rotation in every axis, whether the particle faces the player, particle animation, and more. Additionally, particles can now be set to spawn in a position in the world, not just on an entity (Now called IParticle instead of ScriptEntityParticle for this reason). Packets to the client are optimized to send only the necessary data to create the desired particle.
☑️ Global Data Handlers
Instead of using an IWorld object for modifying global faction/dialog data, you can now access and modify that data through handler objects gotten through the NpcAPI class:
var factionHandler = API.getFactions(); //Returns global faction data as an IFactionHandler object.
var recipeHandler = API.getRecipes(); //Returns global recipe data as an IRecipeHandler object.
var questHandler = API.getQuests(); //Returns global quest data as an IQuestHandler object.
var dialogHandler = API.getDialogs(); //Returns global dialog data as an IDialogHandler object.
var cloneHandler = API.getClones(); //Returns global clone data as an ICloneHandler object.
var spawnsHandler = API.getNaturalSpawns(); //Returns global natural spawn data as an INaturalSpawnsHandler object.
var transportHandler = API.getLocations(); //Returns global transport data as an ITransportHandler object.
You can then modify and create data objects for these handlers through their functions (be careful when updating large amounts of data), which are all visible on...
☑️ Differing IItemStack Types
Item stacks are now converted into IItemStacks exclusively through the NpcAPI, which means they can be easily categorized into different types! For now, the only types are:
- scripted
- book
- block
- armor
- other (regular IItemStack like in previous versions if it's not any of the other types)
The first four types have their own set of functions available to only that type of IItemStack, and can all use the regular IItemStack functions.
⚙️ And TONS of more functions added to pre-existing API classes: View all of them on the Javadoc!