i could be a tester!
if you guys want.
i have worked with guff in the past
way back when he was making a roman style
dimension mod and
i was making a stupid little ore mod
he taught me everything i know about generation.
and he even wanted to help me with modeling, but i declined.
if he doesn't remember me i understand xD it has been years now
but i would love to contribute one way or another
i have a small fan base on Youtube if you wanted some publicity also...
anyway pm me on these forums if your interested
Hopefully someone will read this post, I feel my last few have gone unnoticed.
I'd like to ask for some feedback on this system. What sort of functionality would you like to be able to control and manipulate with spells? Custom damage functions, particle colors, skill requirements? I will insert a list of existing script "event" functions that we have already implemented, their data type, and anything else that may be of interest. I will also insert some functions that can be accessed by the person creating the spell script, what it does, and more.
We really need to know what functions the community wants to use, so please tell everyone you know about this. If we don't know what functionality you want for your spells, then we may not add them! So far, we are going by what our server will need for spells, but you may want to convert all of your spells to damage the player instead of requiring runes - we have no way of knowing that if you don't tell us!
Script Functions - These functions are optional for your scripts, but will help you determine how your spells behave
getExp() - return a decimal value of how much experience the spell is worth for casting; if this is not in your script, it will give 0 exp
getLevelReq() - return an integer value of what magic level is required for the spell; if this is not in your script, it will default to 0
getGlobalDelay() - return the global cooldown for casting this spell - this is the time it takes before you can cast anymore spells; if this is not in your script, it will default to 4000ms
getSpellDelay() - return the spell cooldown for casting this spell - this is the time it takes before you can cast this particular spell again; if this is not in your script, it will default to 4000ms
getRunes() - return a list of runes that the spell requires; if this is not in your script, no runes will be required, essentially forcing the spell to be "free cast"
getSpellName() - return the name of the spell as a String; This is HIGHLY recommend to be in your script, because if it isn't, it will default to "Unknown Spell" and cause problems with other scripts that do not have this implemented
getParticleColors() - return a map of the colors and their weights for the spell's particle effect; if this is not in your script, it defaults to an empty map which results in no particle effect - this is highly recommended for projectile spells, but not so much for other spells
isProjectile() - return a true/false for whether this is a projectile-type spell or not; if this is not in your script, it defaults to false (ie, not a projectile)
shouldSpellBeCast(player, staff, world) - return a true/false for whether or not the player can cast this spell, such as if the player has a certain skill level or certain item in their inventory; if this is not in your script, it defaults to true (ie player can always cast the spell)
onSpellCast(player, world, staff) - what to do when the spell is cast, probably the single most important function for non-projectile spells; if this is not in your script, why are you even making one??
onImpactBlock(player, world, staff, i, j, k) - what to do when a projectile hits a block in the world, not entirely important, but could be nice for 'splosions; if this is not in your script, nothing will happen and the spell will just 'die'
onImpactLiving(player, living, world, staff) - what to do when a projectile hits a living entity (mobs or other players), important for applying damage to the living entity, teleporting it, etc; if this is not in your script, nothing will happen and the spell will just 'die'
Information on selected functionality
All of the Main functions are location in the same package, so it only requires a single import at the top of your script. More advanced stuff (like checking item prices, tagging items with extra data, etc) will require more imports from GuffCore - more on that in the real scripting guide.
Due to Minecraft's obfuscation, direct translation from the spell scripts to the mod is not possible, because when the mod references change, the scripts do not. To get around this, wrapper classes are presented for Entities (and by extension mobs and players) and the World, as well as ItemStacks (again, more on that stuff later). In this code section, I will discuss some of the functions that are used in the Entity wrappers to give the community some ideas on what sort of spells they might want to make and inspire them to come up with MORE functions for the library.
getX(), getY(), getZ() - return the entity's x, y, or z coordinate
setLocation(x, y, z) - set the entity's x, y, and z coordinates (move the player, useful for teleports)
getNearbyEntities(radius) - return a list of EntityWrappers within the radius
isLiving() - return whether the entity is living or not
isPlayer() - return whether the entity is a player or not
applyDamage(amount) - hurt the entity by the amount of half hearts specified
heal(amount) - heal the entity by the amount of half hearts specified
setHeldItem(item) - set the held item of the entity
setHelmet(item) - set the helmet of the entity
setChest(item) - set the chest armor of the entity
setLegs(item) - set the leg armor of the entity
setBoots(item) - the the boots of the entity
getSkill(name) - return the Skill by the name specified
getItemInSlot(slot) - return the ItemStack in the inventory slot; 0-8 is the hotbar, 9-35 is the rest
hasItem(item) - return true/false if the player has the specified ItemStack; must be the same item ID, same metadata, and greater than or equal to stack size
giveItem(item) - give an ItemStack to the player; if the player can't receive the item, drops it into the world by the player
consumeItem(item) - remove one of the specified ItemStack from the player's inventory
consumeItemAmount(item) - remove all of the specified ItemStack based on the amount of the stack
A simple example script:
glassMake.js - This is a script I put together to imitate the spell Superglass Make from RuneScape:
//Import the java.util package and scripting package from the mod
//Give the spell a name
return 'Superglass Make';
//Spell will require level 77 Magic to cast
//Build a list of required runes for the spell - the final list is 2 astral, 6 air, 10 fire
l = new ArrayList();
l.add(ItemWrapper.getItemStack("rune", "astral", 2));
l.add(ItemWrapper.getItemStack("rune", "fire", 6));
l.add(ItemWrapper.getItemStack("rune", "air", 10));
//Very important function here. Creates and ItemStack to store data for 16 sand, then consume all of the sand and give the player 16 //glass blocks in its place.
function onSpellCast(player, world, staff)
sand = ItemWrapper.getItemStack(12, 16, 0);
player.giveItem(ItemWrapper.getItemStack(20, 16, 0));
//The player can cast this spell if they have at least 16 sand blocks in their inventory
function shouldSpellBeCast(player, staff, world)
return player.hasItem(ItemWrapper.getItemStack(12, 16, 0));
//Award 87 magic exp for casting this spell
Again, we really would like community input about what we should add to our scripting library, so give us your ideas!
Alright, here is a link to a file that will be updated anytime we add, remove, or change a function that can be implemented in the spell scripts. This will give you creative folk a chance to practice a bit and familiarize yourselves with the script functions. The link will remain the same, but the file itself will change.
I'm honestly shocked that approximately nobody has posted in here recently. We're putting a lot of work into this, and the server is open to more testers. All you have to do is ask and we will get you set up - it's really that simple!
In order to help celebrate American Independence Day, we are going to upload a public version of RSMC: Return of the Gods onto these forums for all of the community to enjoy! The mod is presented as is with a level cap of 20, and all bugs that are reported are likely to be fixed. We want to start raising hype because there is a poor amount of it over this mod currently. We want to show you what we've been working so hard to achieve for the past year, and the content you find available in game is only the beginning. Questions, bug reports, concerns, etc. can be directed here or through private messages. Expect to be able to play the mod by 12am EST. The version uploaded will likely be outdated by tomorrow afternoon since we make one or two updates every day, but we will release another public beta soon, with a raised level cap, and then more after that.
Again, all requests to join the official development and testing team will be looked at, and all are welcome to apply. If you have any questions or bug reports, again, ask us here or through a private message. Stay tuned!
EDIT: You may encounter many bugs while playing on SSP that may not be present in SMP. Most of these are known and are ignored for the time being, since this is a primarily multiplayer mod. However, some problems that occur we may not know about, so if you find something that doesn't seem correct, be sure to let us know, even if you think we may already know!
The most recent build of forge 9.11.1
Java 7 (7u60 recommended)
Internet access - You will not be prevented from playing the mod, but you will may miss some important features of the mod if you are not connected to the internet
Recommended - no other mods. This mod is not designed to work with other mods except for the 3 others included in the download. If you experience a conflict/bug with another mod that you would like us to look into, please send us logs, pictures, whatever we might need to look at it
It is best to start a new world after you have installed the mod so you can access all of the new world generation features properly. After you have installed the mod, anything that happens to your game or machine is your responsibility, but we doubt that will happen!