RedWire's Plugin

Supported MCreator versions
2024.1
2024.2
2024.3
2024.4
Tags / plugin type
Global triggers
Procedures
Pixel art of a blocky head winking wearing a rainbow beanie
Downloads:
2623
Upvotes: 27
About the plugin

RedWire's Plugin is a thing that I've been using mostly to help with my own mod-making experience. Hopefully, some of the additions from this plugin will be useful to other people :)

I'm not downgrading this plugin/supporting lower versions. Anyone is allowed to as long as I am credited but I won't be doing it myself.
 

Current mod versions: Forge 1.20.1, NeoForge 1.21.1
Current MCreator versions: 2024.1, 2024.2, 2024.3, 2024.4

(2024.1 and 2024.2 are only there because I still support Forge 1.20.1)


Procedures:


Actions:

  1.  Copy properties of [block] onto [block] -- Copies all enum properties of the first blockstate onto the second blockstate
  2. Deal [number] custom damage to [entity] localized as [text] (.player/.item) with custom source [damagesource] -- The old "deal custom damage" procedure block, except with a completely customizable death message and editable procedure. I am aware this is not very useful with the creation of damage sources, however... I still have some uses for this so.. yeah. Also, since the official block has been deleted as of 2024.1, I unofficially declare this its successor.
  3. Execute command / [cmd] in the name of [entity] with permission level [number] -- Same thing as the regular "execute command" procedure block, except you can control how high the permissions can go. For example: If you have a command that executes a sub-command as a string, you can prevent players using /ban if they do not have OP privileges.
  4. Execute command / [cmd] at [x] [y] [z] with permission level [number] -- same thing as #3, but from a position instead of from a player.
  5. FORCE-add potion [potioneffect] with level [level] for [duration] ticks ambient [isambient] particles [showparticles] to [entity] - Allows you to give potion effects to entities that are normally immune to certain/all effects. In the instance of vanilla minecraft, you can apply whatever you want to the Wither and Ender dragon.
  6. Set attack target of [entity] to nothing -- Resets the attack target. Yes, this also exists within procedures+ but... I've only used 2 procedures from that plugin so.. sorry marwinekk256 ;(
  7. Set NoAI of [entity] to [boolean]
  8. Get object from registry [builtinregistry] class type: [class] registry id: [stringid] (Var name: "_regobject") -- This is something more catered to my mod specifically. With this, you can get a specific object that matches the given stringid. This does not have to include the namespace (ex: "minecraft:sharpness" OR "sharpness"), however, you should beware if there are conflicting mods that share the same id of the same object.
  9. Repeat [number] times as timedloopiterator with tick wait time [tick] -- Allows you to do something in a loop but have every action be delayed.
  10. (Break out/Continue with next iteration) of timed loop -- The normal break out/continue with next iteration block won't work with the timed loop block because the procedure uses a recursive call instead of an actual loop.
  11. Set invulnerable time of [entity] to [number] ticks -- Sets the invincibility-frames (AKA I-Frames) to the given number.
  12. For each text in [textToSplit] split as [Splitter] as stringiterator do [foreach] (or whole text if array is empty) -- The String.split method, but for mcreator use
  13. Un-tame [entity] -- Self-explanatory.
  14. For each entity in the current world as entityiterator do [foreach] -- Didn't like the range limit with the given entity iterator for MCreator, so I made my own version.
  15. Set ticks in timed loop to [number] -- Changes the tick wait time in #9 while the iteration is occurring.
  16. Set carried block of enderman [entity] to [blockstate] -- Changes the block the Enderman is carrying (if the entity is an Enderman)
  17. Remove block enderman [entity] is carrying -- Removes the block the Enderman is carrying (if the Entity is an Enderman)

Data:

  1. Get (display) name of [blockstate]
  2. Is sound played same as [soundevent] (any sound played event)
  3. Get string id of dimension [entity] is in -- (example: minecraft:nether or minecraft:overworld)
  4. Get permission level of [entity] -- Always is 0 for non-player entities
  5. Has [entity] No AI
  6. Get distance between [entity] and [sourceentity] -- If sourceentity is null, returns -1
  7. Get distance between [x1] [y1] [z1] and [x2] [y2] [z2]
  8. Get entity from UUID [stringUUID] -- also exists within procedures+. I'm not stealing ideas i swear
  9. Get invulnerable time of [entity] in ticks
  10. Get display name of mod from id [modid] -- This applies only to currently active mods in your mod folder.
  11. Get version string of mod from id [modid] -- This applies only to currently active mods in your mod folder.
  12. Is [entity] moving - Requested by someone in the NeoToolKit discord.
  13. Get string id of the current worlds dimension
  14. Can [entity] find [sourceentity] -- Checks if sourceentity isn't obscured from entity behind blocks. Always returns false if the distance is greater than 128 (this is not my doing, just something that is part of the method I used)
  15. Create a clone of [entity]
  16.  Is [entity] spectating [sourceentity]
  17. Get entity [entity] is spectating
  18. Get block that enderman [entity] is carrying
  19. Get X position of block inbetween [entity] and [sourceentity] -- Returns 0 if there is no block in the way
  20. Get Y position of block inbetween [entity] and [sourceentity] -- Returns 0 if there is no block in the way
  21. Get Z position of block inbetween [entity] and [sourceentity] -- Returns 0 if there is no block in the way

Event-specific Actions:

  1. Set damage to [amount] (before entity is hurt)
  2. Set output to [itemstack] (On anvil updated)
  3. Set break chance to [number] (Item output taken from anvil)
  4. Set break speed to [breakspeed] (Player block speed tick) -- Changes your break speed of the block to the given number
  5. Set canHarvest of block to [boolean] (Player harvest block tick) -- Whether or not the block being mined should drop its loot (does not act as the "silk touch" enchantment, so breaking a glass block with an item without the enchantment will still drop nothing)
  6. Set level cost to [amount] (On anvil updated) -- The level XP needed to upgrade an anvil item. The minimum amount needed is 1. Setting it to 0 will make it impossible to take the anvil output.
  7. Set material cost to [amount] (On anvil updated) -- The stack of items needed in item slot 2 to upgrade the item in slot 1
  8. Change sound to [soundevent] (Any sound played event)

Global triggers:

  1. Enderman teleports
  2. On anvil updated
  3. Item output taken from anvil
  4. Player harvest block tick -- does not fire for unbreakable blocks, such as bedrock.
  5. Player block speed tick  -- does not fire for unbreakable blocks, such as bedrock. The breakspeed number variable represents your break speed, not the blocks hardness.
  6. Sound played at position
  7. Sound played from entity -- (Some sounds - from both sound events - cannot be changed unfortunately. Some of these i've noticed are block breaking sounds and the glass shattering sound when throwing a potion)
  8. Chunk loaded into world -- The isNewChunk variable will only return true in the serverside

Changelog

for the full list of changes, check this file

v3.2.3

  • Added support for Mcreator 2024.4 (Didn't need to make any code changes woohoo!!!!!!!!!)

v3.2.2

  • Revised the text in "Set damage to [amount]" procedure to specify what global triggers should be used in forge/neoforge for it to work

v3.2.1

  • "Set damage to [amount]" procedure will need to be used under "Entity is attacked" trigger for NeoForge, but will still remain as "Before entity is hurt" for Forge. The text has been changed in parentheses for this procedure.

v3.2.0

  • Removed "Get block inbetween [entity] and [sourceentity] (Will make procedures unusable if used)
  • Added "Get X position of block inbetween [entity] and [sourceentity]"
  • Added "Get Y position of block inbetween [entity] and [sourceentity]"
  • Added "Get Z position of block inbetween [entity] and [sourceentity]"

Plugin downloads
3.2.3 - redwiresplugin.zip Uploaded on: 12/16/2024 - 23:12   File size: 74.05 KB

Comments

I don't expect you to want to do this but I figured I'd ask, is a backport through 1.19.2 - 1.19.4 possible?

When updating to 1.1.0 all the procedures under action all meshed together in the selection and it won't let me use any of them

Do you mean like loading it without it then loading with it again?
Also I figured out I can still access things through the search so I've been using the page as reference and just searching up things when I needed them
Also just wanted to say love your profile picture

Heya, feature request: something similar to that of checking whether the player or some other entity is looking at a specific entity or player?
Anyway, great plugin! This'll certainly come in handy!

could you add Procedure block that sets a block to global spawn that would be very helpful for some and me