Workspace setup - RP-Kit/RPKit GitHub Wiki
» Home » Development » Workspace setup
First clone the git repository:
git clone https://github.com/RP-Kit/RPKit.git
This should create a folder called RPKit that contains all modules.
Then import the build.gradle into IntelliJ/your IDE of choice. It should automatically find all of the other modules.
Running ./gradlew build --parallel
produces builds in the build/libs directory for each plugin. These can then be collected using one of the following scripts:
copy-plugins.py (Used for copying plugins to a server)
Args:
- --version [version]: Copies a particular version of RPKit
- --use-worldedit: Uses worldedit selection instead of normal selection if present
- --professions [professions/crafting-skill/none]: Sets which professions implementation to use
- --stats [stat-builds/classes/none]: Sets which stats plugin to use
- --code-dir [code dir]: Sets base directory for RPKit code
- --server-dir [server dir]: Sets base directory for the server
#!/usr/bin/python3
import os
from argparse import ArgumentParser, Action, ArgumentError
from shutil import copyfile
import urllib.request
class ReadableDir(Action):
def __call__(self, parser, namespace, values, option_string=None):
prospective_dir = os.path.expanduser(values)
if not os.path.isdir(prospective_dir):
raise ArgumentError("{0} is not a valid path".format(prospective_dir))
if os.access(prospective_dir, os.R_OK):
setattr(namespace, self.dest, prospective_dir)
else:
raise ArgumentError("{0} is not a readable directory".format(prospective_dir))
class WritableDir(Action):
def __call__(self, parser, namespace, values, option_string=None):
prospective_dir = os.path.expanduser(values)
if not os.path.isdir(prospective_dir):
raise ArgumentError("{0} is not a valid path".format(prospective_dir))
if os.access(prospective_dir, os.W_OK):
setattr(namespace, self.dest, prospective_dir)
else:
raise ArgumentError("{0} is not a writable directory".format(prospective_dir))
parser = ArgumentParser(description='Copy RPKit plugins from a development directory to a server')
parser.add_argument('-v', '--version', type=str, default='1.7.0', dest='version',
help='Which version of RPKit to copy')
parser.add_argument('--use-worldedit', type=bool, nargs='?', const=True, default=False, dest='use_worldedit',
help='Use WorldEdit for selection, download where required')
parser.add_argument('--professions', type=str, default='none', dest='professions',
choices=['professions', 'crafting-skill', 'none'], help='Which professions plugin to use')
parser.add_argument('--stats', type=str, default='none', dest='stats',
choices=['classes', 'stat-builds', 'none'], help='Which stats plugin to use')
parser.add_argument('--code-dir', action=ReadableDir, default='~/Documents/rpkit', dest='code_dir',
help='Directory where code is stored')
parser.add_argument('--server-dir', action=WritableDir, default='~/Documents/minecraft/servers/rpkit-test',
dest='server_dir', help='Directory where server is stored')
args = parser.parse_args()
version = args.version
use_worldedit = args.use_worldedit
professions = args.professions
stats = args.stats
code_dir = os.path.expanduser(args.code_dir)
server_dir = os.path.expanduser(args.server_dir)
print("Copying RPKit version " + version + " from " + code_dir + " to " + server_dir)
plugins = [
'rpk-auction-lib-bukkit',
'rpk-auctions-bukkit',
'rpk-bank-lib-bukkit',
'rpk-banks-bukkit',
'rpk-character-lib-bukkit',
'rpk-characters-bukkit',
'rpk-chat-lib-bukkit',
'rpk-chat-bukkit',
'rpk-core-bukkit',
'rpk-economy-lib-bukkit',
'rpk-economy-bukkit',
'rpk-permissions-lib-bukkit',
'rpk-permissions-bukkit',
'rpk-player-lib-bukkit',
'rpk-players-bukkit',
'rpk-shop-lib-bukkit',
'rpk-shops-bukkit',
'rpk-trade-bukkit',
'rpk-stat-lib-bukkit',
'rpk-stats-bukkit',
'rpk-food-lib-bukkit',
'rpk-food-bukkit',
'rpk-payment-lib-bukkit',
'rpk-payments-bukkit',
'rpk-warp-lib-bukkit',
'rpk-kit-lib-bukkit',
'rpk-drink-lib-bukkit',
'rpk-drinks-bukkit',
'rpk-location-history-lib-bukkit',
'rpk-tracking-lib-bukkit',
'rpk-daily-quote-lib-bukkit',
'rpk-essentials-bukkit',
'rpk-lock-lib-bukkit',
'rpk-locks-bukkit',
'rpk-travel-bukkit',
'rpk-feature-flag-lib-bukkit',
'rpk-feature-flags-bukkit',
'rpk-rolling-bukkit',
'rpk-experience-lib-bukkit',
'rpk-experience-bukkit',
'rpk-skill-lib-bukkit',
'rpk-skills-bukkit',
'rpk-block-log-lib-bukkit',
'rpk-block-logging-bukkit',
'rpk-unconsciousness-lib-bukkit',
'rpk-unconsciousness-bukkit',
'rpk-moderation-lib-bukkit',
'rpk-moderation-bukkit',
'rpk-selection-lib-bukkit',
'rpk-store-lib-bukkit',
'rpk-stores-bukkit',
'rpk-item-quality-lib-bukkit',
'rpk-item-quality-bukkit',
'rpk-monster-lib-bukkit',
'rpk-monsters-bukkit',
'rpk-language-lib-bukkit',
'rpk-languages-bukkit',
'rpk-notification-lib-bukkit',
'rpk-notifications-bukkit'
]
def remove_if_exists(path):
if os.path.exists(path):
os.remove(path)
if stats == 'classes':
print('Using classes for stats')
plugins.append('rpk-class-lib-bukkit')
plugins.append('rpk-classes-bukkit')
remove_if_exists(os.path.join(server_dir, 'plugins', 'rpk-stat-build-lib-bukkit.jar'))
remove_if_exists(os.path.join(server_dir, 'plugins', 'rpk-stat-builds-bukkit.jar'))
elif stats == 'stat-builds':
print('Using stat builds for stats')
plugins.append('rpk-stat-build-lib-bukkit')
plugins.append('rpk-stat-builds-bukkit')
remove_if_exists(os.path.join(server_dir, 'plugins', 'rpk-class-lib-bukkit.jar'))
remove_if_exists(os.path.join(server_dir, 'plugins', 'rpk-classes-bukkit.jar'))
else:
print('Not using stats')
remove_if_exists(os.path.join(server_dir, 'plugins', 'rpk-stat-build-lib.jar'))
remove_if_exists(os.path.join(server_dir, 'plugins', 'rpk-stat-builds.jar'))
remove_if_exists(os.path.join(server_dir, 'plugins', 'rpk-class-lib-bukkit.jar'))
remove_if_exists(os.path.join(server_dir, 'plugins', 'rpk-classes-bukkit.jar'))
if use_worldedit:
print('Using WorldEdit for selection')
# req = urllib.request.Request('https://dev.bukkit.org/projects/worldedit/files/latest')
# req.add_header('User-Agent', 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:84.0) Gecko/20100101 Firefox/84.0')
# req.add_header('Accept', 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8')
# req.add_header('Accept-Encoding', 'gzip, deflate, br')
# req.add_header('Accept-Language', 'en-GB,en;q=0.5')
# resp = urllib.request.urlopen(req).read()
# worldedit_jar = open(os.path.join(server_dir, 'plugins', 'worldedit.jar'), 'w')
# worldedit_jar.write(resp)
# worldedit_jar.close()
plugins.append('rpk-selection-worldedit-bukkit')
remove_if_exists(os.path.join(server_dir, 'plugins', 'rpk-selection-bukkit.jar'))
else:
print('Using RPKit selection')
plugins.append('rpk-selection-bukkit')
remove_if_exists(os.path.join(server_dir, 'plugins', 'rpk-selection-worldedit-bukkit.jar'))
if professions == 'professions':
print('Using professions for professions')
plugins.append('rpk-professions-lib-bukkit')
plugins.append('rpk-professions-bukkit')
remove_if_exists(os.path.join(server_dir, 'plugins', 'rpk-crafting-skill-lib-bukkit.jar'))
remove_if_exists(os.path.join(server_dir, 'plugins', 'rpk-crafting-skill-bukkit.jar'))
elif professions == 'crafting-skill':
print('Using crafting skill for professions')
plugins.append('rpk-crafting-skill-lib-bukkit')
plugins.append('rpk-crafting-skill-bukkit')
remove_if_exists(os.path.join(server_dir, 'plugins', 'rpk-professions-lib-bukkit.jar'))
remove_if_exists(os.path.join(server_dir, 'plugins', 'rpk-professions-bukkit.jar'))
else:
print('Not using professions')
remove_if_exists(os.path.join(server_dir, 'plugins', 'rpk-crafting-skill-lib-bukkit.jar'))
remove_if_exists(os.path.join(server_dir, 'plugins', 'rpk-crafting-skill-bukkit.jar'))
remove_if_exists(os.path.join(server_dir, 'plugins', 'rpk-professions-lib-bukkit.jar'))
remove_if_exists(os.path.join(server_dir, 'plugins', 'rpk-professions-bukkit.jar'))
print('Copying plugins:\n - ' + '\n - '.join(plugins))
for plugin in plugins:
copyfile(
os.path.join(code_dir, 'bukkit', plugin, 'build/libs', plugin + '-' + version + '-all.jar'),
os.path.join(server_dir, 'plugins', plugin + '.jar')
)
skills = [
'rpk-skill-fireball-bukkit'
]
print('Copying skills:\n - ' + '\n - '.join(skills))
for skill in skills:
copyfile(
os.path.join(code_dir, 'bukkit/skills', skill, 'build/libs', skill + '-' + version + '-all.jar'),
os.path.join(server_dir, 'plugins', skill + '.jar')
)