Releases: mchorse/mappet
Mappet 0.8
This update is brought to you by @TorayLife and @OtakuGamerAds.
This update fixes a lot of bugs, improve scripting documentation and provides new scripting features!
Compatible with McLib 2.4.2, Aperture 1.8.1, Blockbuster 2.6.1 and Metamorph 1.3.1. It doesn't mean that future versions of McLib, Blockbuster and Metamorph would be incompatible, but older versions are most likely incompatible.
-
New triggers:
- Player: leash an entity
-
New features:
- Added custom bounding box feature to BlockTrigger
- Added always wander option in NPCs
- Added
-scripting
argument if using Nashorn, for more scripting features - Added title and lore editor in scripted items
- Added source line in documentation
-
API changes:
- Refactored NPCs scripting API
- Deprecated old model blocks methods in ScriptWorld
- Added setFlyingEnabled() to ScriptPlayer
- Added documentation to ScriptBox
- Changed the drop methods to return
ScriptEntityItem
- Added ScriptEntity leashing API
- Removed FancyWorld
- Removed deprecated ScriptWorld methods
- Removed deprecated ScriptNpc methods
- Added
IScriptEntity.getDimension
andIScriptEntity.setDimension
methods - Added
IScriptWorld.getGameRule
andIScriptWorld.setGameRule
methods - Changed giveItem signature:
giveItem(IScriptItemStack stack, boolean playSound, boolean dropIfInventoryFull)
-
Bugfixes:
- Fixed crash when script engine doesn't load correctly
- Fixed sorting order in all mappet folder lists
- Fixed inline scripts visibility issue
- Fixed escaped characters in ru_RU localization
- Fixed steering NPCs crashed servers
- Fixed morph trigger
- Fixed
IScriptFactory.createBlockState
method - Fixed
isActive()
method - Fixed context subject in
onPlayerWithScriptedItemRightClickBlock
- Fixed docs of setCooldown
- Fixed documentation for getTileEntity
- Fixed multiple players teleporting to same position bug
- Fixed getLook() for standing entities
- Fixed ui debug option doesn't work
- Fixed server crash when interact with entity
- Fixed schematics when created were generated with boundaries 1 block smaller on all axes
- Fixed lockRotation did not work with players
- Fixed server crashed if an entity that drops loot on death entered a region with a block that kills entities on region entry
- Fixed description for lockRotation method
- Fixed a problem when non-global morphs were updated for all players at once when changed
- Fixed crash if Arte Magicum mod is installed
- Fixed a problem when
giveItem
method triggers the Player: toss an item trigger
-
Other:
- Refactored user's documentation system, it allows you to add your own packages, classes, methods in documentation.
- Added
ctrl + /
keybind for commenting in scripting text editor - Added
Global library
option to scripts
Mappet 0.7
This update is brought to you by @TorayLife and @OtakuGamerAds. This update features lots of new scripting API methods, QoL features, and brand new Scripted Items feature!
Compatible with McLib 2.4.2, Aperture 1.8.1, Blockbuster 2.6.1 and Metamorph 1.3.1. It doesn't mean that future versions of McLib, Blockbuster and Metamorph would be incompatible, but older versions are most likely incompatible.
- New triggers:
- Added On NPC Collision trigger
- New features:
- Added Scripted items feature! It allows you to add triggers to ANY item.
- Added Paste player's rotation option to script editor context menu.
- Added /mp playsound command and a config option to load sounds on joining a world.
- Added global option to HUDs
- Added shadow size, has no gravity, can be steered and steering properties features on NPC's
- Added sorting to new folders lists, so folders appears first (by TorayLife)
- Added context menu (just like in regular script editor) to inline scripts (by TorayLife)
- API changes:
- Added
IScriptEntity.getObservedEntity()
andIScriptEntity.getBoundingBox()
methods - Added a lot of NPC's methods
- Added
IScriptPlayer.setSpawnPoint()
andIScriptPlayer.getSpawnPoint()
methods - Added
IScriptFactory.createBlockState()
andIScriptFactory.vector()
methods - Added
IScriptWorld.replaceBlocks()
,IScriptWorld.removeBlock()
,IScriptWorld.getEntities()
,IScriptWorld.setModelBlockEnabled()
, 'IScriptWorld.isModelBlockEnabled()' andIScriptWorld.getBlock(ScriptVector pos)
methods - Added
IScriptItemStack.add()
andIScriptItemStack.equals()
methods - Changed
IScriptEntity.getEyeHeight()
to work with Metamorph morphs - Moved
IScriptPlayer.giveItem()
toIScriptEntity
- Added
- Bugfixes:
- Fixed
IScriptWorld.setModelBlockMorph()
method - Fixed
IScriptItemStack.addCanDestroyBlock()
method - Fixed forge triggers (by TorayLife)
- Fixed keybinds (:facepalm:) (by TorayLife)
- Fixed crafting recipe ignore NBT feature (by TorayLife)
- Fixed build.gradle (by TorayLife)
- Fixed
- Other:
- NPC tool is ustackable now
Mappet 0.6
This update is brought to you by @TorayLife. It features a lot of scripting related features like listening to Forge events, inline scripts, documentation improvements, and more!
Compatible with McLib 2.4.1, Aperture 1.8.1, Blockbuster 2.6 and Metamorph 1.3.1. It doesn't mean that future versions of McLib, Blockbuster and Metamorph would be incompatible, but older versions are most likely incompatible.
- New triggers:
- Added Player: toss an item trigger
- New features:
- Added Forge event triggers that allow you to listen to Forge events. WARNING: this feature can corrupt your world. Use at own fear and risk!
- Added Inline scripts feature from BBS, that allows you to write JS (ES5) code directly in script trigger, without creating a script file
- Added
F6
keybind to run currently open script in the script editor - Added
Ctrl + D
keybind to duplicate current line in script editor - Added ability to translate documentation. Copy
docs.json
file from Mappet’s jar file, rename it to your language code (i.e.ru_ru.json
for Russian) and put into.minecraft/config/mappet/documentation/
- Added Ignore NBT option in crafts and events
- Added search to documentation overlay
- Added link to JavaDocs in documentation
- Added new documentation sctructure. You can enable it in the config
- API changes:
- Added
IScriptNpc.setFaction()
method - Added
entityItem
variable to Player: picked up an item trigger - Added
IScriptEntity.setMaxHp(float)
method - Added
IScriptFactory.getIScriptEntity(minecraftEntity)
method - Added
IMappetSchematic
interface, that works with existing .schematic format - Added methods to disable creative search and count in UIStackComponent
- Added
IScriptEntityItemStack
interface, that represents EntityItemStack (item that dropped into the world) - Added
IScriptPlayer.giveItem(IScriptItemStack)
method
- Added
- Bugfixes:
- Fixed
UIStringListComponent
doesn’t update if you set empty array as a value - Fixed
IScriptEvent.scheduleScript(int)
doesn’t work - Fixed region block doesn’t work, if you disable
passible
option - Fixed Kotlin doesn’t work with obfuscated methods
- Fixed crashes when you try to cancel uncancelable event
- Fixed crash when you open
executeScript
in documentation - Fixed Player: Respawn trigger not working
- Fixed
createBlockState
issue with metadata
- Fixed
- Other:
- Completely rewrite Russian localization
Mappet 0.5
This is another HUGE update developed by OtakuGamer and TorayLife! This update features lots of new scripting API methods, global triggers, scripting logs panel and a conditional model block!
IMPORTANT: IScriptEntity.shootBBGunProjectile()
to shoot the projectile with the whole data of the bb-gun settings (e.g. damage, etc.).
Compatible with McLib 2.4.1, Aperture 1.8.1, Blockbuster 2.6 and Metamorph 1.3.1. It doesn't mean that future versions of McLib, Blockbuster and Metamorph would be incompatible, but older versions are most likely incompatible.
- Added new global triggers:
- By TorayLife:
Entity: attacked
andPlayer: open container
- By OtakuGamer:
Projectile: impact
,Living: equipment change
,Mappet: state changed
, andLiving: knockback
- By TorayLife:
- Added logs panel, which will display script error logs, or records entered by scripts (TorayLife)
- Added Condition model block, which will display different morphs depends on given conditions (TorayLife)
- Added Check entities option to region block (TorayLife)
- Added onTick trigger to region block (TorayLife)
- Added
/mp script engines
command, which returns list of installed script engines (TorayLife) - Added Look at player option's range now depends on path finding distance
- Added more scripting API:
- Added
IScriptEvent.scheduleScript(int, Consumer<IScriptEvent>)
overload with Consumer argument, so it works in different engines, such as Kotlin or Python (TorayLife) - Added
IScriptEntity.setName()
,IScriptEntity.setInvisible()
,IScriptEntity.moveTo()
,IScriptEntity.executeCommand()
,IScriptEntity.executeScript()
,IScriptEntity.getFactions()
,IScriptEntity.lockPosition()
,IScriptEntity.unlockPosition()
,IScriptEntity.isPositionLocked()
,IScriptEntity.lockRotation()
,IScriptEntity.unlockRotation()
, andIScriptEntity.isRotationLocked()
(OtakuGamer) - Added
IScriptEntity.getMount()
method (TorayLife) - Added
IScriptFactory.getLogger()
method, which returns aMappetLogger
which can be used to log messages (TorayLife) - Added
IScriptFactory.isPointInBounds()
andIScriptFactory.toNBT()
(OtakuGamer) - Added
info()
,debug()
,warning()
,error()
methods to MappetLogger (TorayLife) - Added
IScriptWorld.getBlockStackWithTile()
,IScriptWorld.shootBBGunProjectile()
(OtakuGamer) - Added
IScriptServer.entityExists()
andIScriptServer.executeScript()
(OtakuGamer) - Added
IScriptNBTCompound.addCompound()
andIScriptNBTCompound.dumpJSON()
(OtakuGamer) - Added AI methods
IScriptEntity.observe()
,IScriptEntity.addEntityPatrol()
,IScriptEntity.clearEntityPatrols()
,IScriptEntity.setRotationsAI()
,IScriptEntity.clearRotationsAI()
,IScriptEntity.executeRepeatingCommand()
,IScriptEntity.removeRepeatingCommand()
, andIScriptEntity.clearAllRepeatingCommands()
(OtakuGamer) - Added
IScriptFancyWorld
and moved someIScriptWorld
methods to it (OtakuGamer) - Added
getFancyWorld()
toIScriptEvent
,IScriptServer
andIScriptEntity
(just likegetWorld()
) (OtakuGamer) - Added
IScriptFancyWorld.explode()
,IScriptFancyWorld.tpExplode()
,IScriptFancyWorld.setBlock()
,IScriptFancyWorld.fill()
,IScriptFancyWorld.setTileEntity()
,IScriptFancyWorld.fillTileEntities()
,IScriptFancyWorld.clone()
,IScriptFancyWorld.loadSchematic()
, andIScriptFancyWorld.spawnNpc()
(OtakuGamer) - Added
IScriptPlayer.getDisplayedHUDs()
,IScriptPlayer.playScene()
, andIScriptPlayer.stopScene()
(OtakuGamer)
- Added
- Fixed
IScriptFactory.convertToNBT()
method (TorayLife) - Fixed
IScriptItemStack.setLore()
method that doesn't add lore if item has no lore (TorayLife) - Fixed python errors in console (TorayLife)
- Fixed python doesn't print unicode characters (TorayLife)
- Fixed Kotlin libraries issue (OtakuGamer)
- Improved HUD morphs to persist upon player's relogging (OtakuGamer)
- Improved
/mp hud *
commands' tab completion (OtakuGamer) - Improved interaction events to support Little Tiles mod's doors (OtakuGamer)
- Updated NPC tool texture, added holiday textures (by TorayLife, textures by 3DMmc)
Mappet 0.4
This is a HUGE scripting API update by @OtakuGamerAds with some minor contributions by @TorayLife.
Compatible with McLib 2.4.1, Blockbuster 2.6 and Metamorph 1.3.1. It doesn't mean that future versions of McLib, Blockbuster and Metamorph would be incompatible, but older versions are most likely incompatible.
- Added scripting
INBTCompound.get(String)
andINBTCompound.equals(INBTCompound)
- Added scripting
INBTList.toArray()
- Added scripting
IScriptItemStack.getDisplayName()
,IScriptItemStack.setDisplayName(String)
,IScriptItemStack.getLore(int)
,IScriptItemStack.getLoreList()
,IScriptItemStack.setLore(int, String)
,IScriptItemStack.addLore(String)
,IScriptItemStack.clearAllLores()
,IScriptItemStack.clearLore(int)
,IScriptItemStack.clearAllEnchantments()
,IScriptItemStack.getCanDestroyBlocks()
,IScriptItemStack.addCanDestroyBlock(String)
,IScriptItemStack.clearAllCanDestroyBlocks()
,IScriptItemStack.clearCanDestroyBlock(String)
,IScriptItemStack.getCanPlaceOnBlocks()
,IScriptItemStack.addCanPlaceOnBlock(String)
,IScriptItemStack.clearAllCanPlaceOnBlocks()
,IScriptItemStack.clearCanPlaceOnBlock(String)
,IScriptItemStack.getRepairCost()
,IScriptItemStack.setRepairCost(int)
,IScriptItemStack.isUnbreakable()
, andIScriptItemStack.setUnbreakable(boolean)
- Added scripting
IScriptEntity.getWorld()
,IScriptEntity.addMotion(double, double, double)
,IScriptEntity.getEyeHeight()
,IScriptEntity.isInWater()
,IScriptEntity.isInLava()
,IScriptEntity.getHelmet()
,IScriptEntity.getChestplate()
,IScriptEntity.getLeggings()
,IScriptEntity.getBoots()
,IScriptEntity.setHelmet(IScriptItemStack)
,IScriptEntity.setChestplate(IScriptItemStack)
,IScriptEntity.setLeggings(IScriptItemStack)
,IScriptEntity.setBoots(IScriptItemStack)
,IScriptEntity.setArmor(IScriptItemStack, IScriptItemStack, IScriptItemStack, IScriptItemStack)
,IScriptEntity.clearArmor()
,IScriptEntity.isEntityInRadius(IScriptEntity, double)
,IScriptEntity.isInBlock(int, int, int)
,IScriptEntity.isInBlock(double, double, double, double, double, double)
,IScriptEntity.mount(IScriptEntity)
,IScriptEntity.dismount()
,IScriptEntity.dropItem(int)
,IScriptEntity.dropItem()
,IScriptEntity.dropItem(IScriptItemStack)
,IScriptEntity.setModifier(String, double)
,IScriptEntity.getModifier(String)
,IScriptEntity.removeModifier(String)
,IScriptEntity.removeAllModifiers()
,IScriptEntity.displayMorph(AbstractMorph, int, double, double, double, float, float, boolean, IScriptPlayer)
,IScriptEntity.shootBBGunProjectile(String)
- Added scripting
IScriptNpc.canPickUpLoot(boolean)
,IScriptNpc.follow(String)
,IScriptNpc.setOnTickTrigger(String, String, int, int)
,IScriptNpc.addOnTickTrigger(String, String, int)
,IScriptNpc.clearOnTickTriggers()
,IScriptNpc.setOnInteractTrigger(String, String, int)
,IScriptNpc.addOnInteractTrigger(String, String)
,IScriptNpc.clearOnTickTriggers()
,IScriptNpc.setPatrol(int, int, int, String, String, int)
,IScriptNpc.addPatrol(int, int, int, String, String)
,IScriptNpc.clearPatrolPoints()
, andIScriptNpc.getFaction()
- Added scripting
IScriptPlayer.executeCommand(String)
,IScriptPlayer.isFlying()
,IScriptPlayer.getWalkSpeed()
,IScriptPlayer.getFlySpeed()
,IScriptPlayer.setWalkSpeed(float)
,IScriptPlayer.setFlySpeed(float)
,IScriptPlayer.resetFlySpeed()
,IScriptPlayer.resetWalkSpeed()
,IScriptPlayer.getCooldown(int)
,IScriptPlayer.getCooldown(IScriptItemStack)
,IScriptPlayer.setCooldown(int, int)
,IScriptPlayer.setCooldown(IScriptItemStack, int)
,IScriptPlayer.resetCooldown(int)
,IScriptPlayer.resetCooldown(IScriptItemStack)
,IScriptPlayer.getHotbarIndex()
, andIScriptPlayer.setHotbarIndex(int)
- Added scripting
IScriptWorld.setModelBlockMorph(String, int, int, int, boolean)
,IScriptWorld.isActive(int, int, int)
,IScriptWorld.testForBlock(int, int, int, String, int)
,IScriptWorld.fill(IScriptBlockState, int, int, int, int, int, int)
,IScriptWorld.summonFallingBlock(double, double, double, String, int)
,IScriptWorld.setFallingBlock(int, int, int)
,IScriptWorld.fancyExplode(int, int, int, int, int, int, float)
,IScriptWorld.fancyExplode(int, int, int, int, float)
,IScriptWorld.tpExplode(int, int, int, int, int, int, float)
,IScriptWorld.tpExplode(int, int, int, int, float)
, andIScriptWorld.displayMorph(AbstractMorph, int, double, double, double, float, float, int, IScriptPlayer)
- Added scripting
IScriptServer.isOnline(String)
- Added scripting
IScriptFactory.random(double)
,IScriptFactory.random(double, double)
,IScriptFactory.random(double, double, long)
,IScriptFactory.style(String...)
,IScriptFactory.vector2()
,IScriptFactory.vector2(double, double)
,IScriptFactory.vector2(Vector2d)
,IScriptFactory.vector3()
,IScriptFactory.vector3(double, double, double)
,IScriptFactory.vector3(Vector3d)
,IScriptFactory.vector4()
,IScriptFactory.vector4(double, double, double, double)
,IScriptFactory.vector4(Vector4d)
,IScriptFactory.matrix3()
,IScriptFactory.matrix3(Matrix3d)
,IScriptFactory.matrix4()
, andIScriptFactory.matrix4(Matrix4d)
- Added Can pick up loot option to NPCs (by Otaku)
- Fixed Russian translation of trigger blocks' frequency option (by TorayLife)
- Fixed encoding problems by switching file reading strictly to UTF-8 (by Pyxl-ion and TorayLife)
- Removed command
/mp data rencode
Mappet 0.3.1
This patch hot fix fixes global triggers and scripts (by @TorayLife).
Compatible with McLib 2.4.1, Blockbuster 2.6 and Metamorph 1.3.1. It doesn't mean that future versions of McLib, Blockbuster and Metamorph would be incompatible, but older versions are most likely incompatible.
- Fixed scripts not working correctly in global triggers
Mappet 0.3
This update is brought to you by TorayLife and McHorse.
Compatible with McLib 2.4.1, Blockbuster 2.6 and Metamorph 1.3.1. It doesn't mean that future versions of McLib, Blockbuster and Metamorph would be incompatible, but older versions are most likely incompatible.
- Added support for any Java scripting engine. This means that scripts can be written in any language for which there is an engine. You can search for your language by
java <language> scripting engine
. Mappet itself will determine which engine to use by file extension. (js
-javascript
,kts
-Kotlin Script
, etc). Made in cooperation with dyamo - Added the ability to customize the syntax highlighting in the script editor. Use the files in the
config/mappet/highlights/
directory to customize it. Files forjs
andkts
extensions are supplied by default - Added a special error text if no script engine is found
- Added a folder system for events, dialogues, quests, scripts. etc. Use RMB on the file add, rename, remove icons for new functionality. (May contain bugs)
- Added an error when trying to set a position or rotation for an entity as NaN
- Added
IScriptEntity.getWorld()
- Added open folder context menu to all name lists in Mappet data dashboard panels when in singleplayer
- Added
minecraft:player
to kill objective entity list - Changed
unique
toggle for scripts to be enabled by default - Changed
IScriptEntity.setTarget(IScriptEntity)
to acceptnull
, which indicates resetting the attack target - Changed
IScriptPlayer.openUI()
to allow opening a UI when another scripted UI is opened - Fixed
IScriptPlayer.getSkin()
now it works much better - Fixed GraalJS not working with Mappet's scripts
- Fixed Ingredients label present when a recipe has no ingredients
Mappet 0.2.3
This patch is required to work with McLib 2.4.1 and Blockbuster 2.6. Also, Ukrainian translation was added.
Compatible with McLib 2.4.1, Blockbuster 2.6 and Metamorph 1.3.1. It doesn't mean that future versions of McLib, Blockbuster and Metamorph would be incompatible, but older versions are most likely incompatible.
- Added Ukrainian translation (thanks to Kirkus)
Mappet 0.2.2
This quick patch update patches and updates.
Compatible with McLib 2.3.5, Blockbuster 2.3 and Metamorph 1.2.9. It doesn't mean that future versions of McLib, Blockbuster and Metamorph would be incompatible, but older versions are most likely incompatible.
- Added
inventory
(which is aIScriptInventory
) variable toPlayer: inventory closes
global trigger - Added
/mp event stop <id>
subcommand which stops execution of delayed events (with Timer nodes) and scripts (IScriptEvent.scheduleScript()
) - Added
Player: interact with an entity
global trigger - Added scripting methods:
- Added
IScriptWorld.explode()
- Added
IScriptItemStack.getMaxCount()
- Added
IScriptBlockState.isOpaque()
andIScriptBlockState.hasCollision()
- Added
IScriptWorld.rayTrace()
andIScriptWorld.rayTraceBlocks()
- Added
IScriptEntity.isOnGround()
- Added
IScriptWorld.stopSound(String, String)
,IScriptWorld.stopAllSounds()
,IScriptPlayer.stopSound(String, String)
, andIScriptPlayer.stopAllSounds()
- Added
IScriptEntity.getCombinedLight()
- Added
- Fixed an error with quest node in a dialogue not loading when quest isn't accepted
- Fixed respawn options can't be edited by
/mp npc edit
command - Fixed a couple of misspellings in documentation
- Fixed NPC's target trigger
Mappet 0.2
This update is brought to you by @TorayLife (again), featuring NPC respawning mechanic, patrol points triggers, QoL tweaks and bug fixes! Thanks to Falkiner, ORION, OtakuGamer, Hrymka, and dyamo for ideas and suggestions!
Compatible with McLib 2.3.5, Blockbuster 2.3 and Metamorph 1.2.9. It doesn't mean that future versions of McLib, Blockbuster and Metamorph would be incompatible, but older versions are most likely incompatible.
- Added NPC respawn mechanism with multiple options such as: respawn delay, respawn at died coordinates, and respawn trigger
- Added patrol trigger for NPC's patrol points
- Added mod option to limit non-creative players to use NPC tool
- Added mod option to limit non-creative players to open Mappet dashboard (even with OP)
- Added toggle to player journal to toggle visibility of a quest in HUD
- Added comment node to events as well
- Added scripting methods:
- Global triggers now pass
event
variable (which is a Forge event), it's useful for advanced scripting (requires knowledge of working with MCP-SRG maps) - Added sound category to
playSound
andplayStaticSound
methods which allow to specify a channel in which sound would be playing - Added
IScriptPlayer.setHunger(int)
,IScriptPlayer.getHunger()
,IScriptPlayer.setSaturation(int)
, andIScriptPlayer.getSaturation()
- Added
IScriptNpc.setNpcState(String)
andIScriptNpc.getNpcState()
- Added
UIStringListComponent.setValues(List<String>)
(alias forUIStringListComponent.values(List<String>)
) andUIStringListComponent.getValues()
- Added selected index of a string list UI component to the context data (in
%component_id%.index
) - Added
INBTCompound.getNBTTagCompound()
(fixes a typo of deprecated methodINBTCompound.getNBTTagComound()
)
- Global triggers now pass
- Fixed some places missing OP checks
- Fixed morph UI component erroring on a dedicated server
- Fixed crash when trying to copy non selected data entry in one of the Mappet dashboard panels