Skip to content

Releases: mchorse/mappet

Mappet 0.8

22 Aug 14:35
0411909
Compare
Choose a tag to compare

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 and IScriptEntity.setDimension methods
    • Added IScriptWorld.getGameRule and IScriptWorld.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

20 Jun 19:21
Compare
Choose a tag to compare

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() and IScriptEntity.getBoundingBox() methods
    • Added a lot of NPC's methods
    • Added IScriptPlayer.setSpawnPoint() and IScriptPlayer.getSpawnPoint() methods
    • Added IScriptFactory.createBlockState() and IScriptFactory.vector() methods
    • Added IScriptWorld.replaceBlocks(), IScriptWorld.removeBlock(), IScriptWorld.getEntities(), IScriptWorld.setModelBlockEnabled(), 'IScriptWorld.isModelBlockEnabled()' and IScriptWorld.getBlock(ScriptVector pos) methods
    • Added IScriptItemStack.add() and IScriptItemStack.equals() methods
    • Changed IScriptEntity.getEyeHeight() to work with Metamorph morphs
    • Moved IScriptPlayer.giveItem() to IScriptEntity
  • 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)
  • Other:
    • NPC tool is ustackable now

Mappet 0.6

31 May 07:43
Compare
Choose a tag to compare

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
  • 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
  • Other:
    • Completely rewrite Russian localization

Mappet 0.5

01 Apr 11:54
Compare
Choose a tag to compare

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 and Player: open container
    • By OtakuGamer: Projectile: impact, Living: equipment change, Mappet: state changed, and Living: knockback
  • 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(), and IScriptEntity.isRotationLocked() (OtakuGamer)
    • Added IScriptEntity.getMount() method (TorayLife)
    • Added IScriptFactory.getLogger() method, which returns a MappetLogger which can be used to log messages (TorayLife)
    • Added IScriptFactory.isPointInBounds() and IScriptFactory.toNBT() (OtakuGamer)
    • Added info(), debug(), warning(), error() methods to MappetLogger (TorayLife)
    • Added IScriptWorld.getBlockStackWithTile(), IScriptWorld.shootBBGunProjectile() (OtakuGamer)
    • Added IScriptServer.entityExists() and IScriptServer.executeScript() (OtakuGamer)
    • Added IScriptNBTCompound.addCompound() and IScriptNBTCompound.dumpJSON() (OtakuGamer)
    • Added AI methods IScriptEntity.observe(), IScriptEntity.addEntityPatrol(), IScriptEntity.clearEntityPatrols(), IScriptEntity.setRotationsAI(), IScriptEntity.clearRotationsAI(), IScriptEntity.executeRepeatingCommand(), IScriptEntity.removeRepeatingCommand(), and IScriptEntity.clearAllRepeatingCommands() (OtakuGamer)
    • Added IScriptFancyWorld and moved some IScriptWorld methods to it (OtakuGamer)
    • Added getFancyWorld() to IScriptEvent, IScriptServer and IScriptEntity (just like getWorld()) (OtakuGamer)
    • Added IScriptFancyWorld.explode(), IScriptFancyWorld.tpExplode(), IScriptFancyWorld.setBlock(), IScriptFancyWorld.fill(), IScriptFancyWorld.setTileEntity(), IScriptFancyWorld.fillTileEntities(), IScriptFancyWorld.clone(), IScriptFancyWorld.loadSchematic(), and IScriptFancyWorld.spawnNpc() (OtakuGamer)
    • Added IScriptPlayer.getDisplayedHUDs(), IScriptPlayer.playScene(), and IScriptPlayer.stopScene() (OtakuGamer)
  • 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

19 Dec 10:06
Compare
Choose a tag to compare

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) and INBTCompound.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(), and IScriptItemStack.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(), and IScriptNpc.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(), and IScriptPlayer.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), and IScriptWorld.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(), and IScriptFactory.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

11 Dec 20:27
Compare
Choose a tag to compare

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

08 Dec 12:46
Compare
Choose a tag to compare

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 for js and kts 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 accept null, 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

24 Oct 17:57
Compare
Choose a tag to compare

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

08 Sep 11:14
Compare
Choose a tag to compare

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 a IScriptInventory) variable to Player: 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() and IScriptBlockState.hasCollision()
    • Added IScriptWorld.rayTrace() and IScriptWorld.rayTraceBlocks()
    • Added IScriptEntity.isOnGround()
    • Added IScriptWorld.stopSound(String, String), IScriptWorld.stopAllSounds(), IScriptPlayer.stopSound(String, String), and IScriptPlayer.stopAllSounds()
    • Added IScriptEntity.getCombinedLight()
  • 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

12 Jun 08:07
Compare
Choose a tag to compare

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 and playStaticSound methods which allow to specify a channel in which sound would be playing
    • Added IScriptPlayer.setHunger(int), IScriptPlayer.getHunger(), IScriptPlayer.setSaturation(int), and IScriptPlayer.getSaturation()
    • Added IScriptNpc.setNpcState(String) and IScriptNpc.getNpcState()
    • Added UIStringListComponent.setValues(List<String>) (alias for UIStringListComponent.values(List<String>)) and UIStringListComponent.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 method INBTCompound.getNBTTagComound())
  • 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