You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
This repository was archived by the owner on Apr 27, 2019. It is now read-only.
StarryPy is Twisted-based plugin-driven Starbound server wrapper. It is currently in beta.
5
4
6
-
# Features
5
+
## Features
6
+
7
7
With the built-in plugins (which are removable):
8
8
* User management. Kicking, banning, whois, player listing. Multiple user levels.
9
9
* Message of the day
@@ -14,10 +14,25 @@ With the built-in plugins (which are removable):
14
14
* Join/quit announcements.
15
15
* And more.
16
16
17
-
# Installation
17
+
## Installation
18
+
19
+
StarryPy runs on Python 2.7. It has been tested with Python 2.7.6, 2.7.5, 2.7.2,
20
+
and PyPy.
21
+
22
+
This requires Python and pip to install, and on *nix systems the python
23
+
development headers (python-dev in apt, python-devel in yum.) After installing
24
+
those, simply run `pip install -r requirements.txt` in the root directory of
25
+
StarryPy. This will install all of the components needed for use. I recommend
26
+
running it in a virtualenv.
18
27
19
-
StarryPy runs on Python 2.7. It has been tested with Python 2.7.6, 2.7.5, 2.7.2, and PyPy.
28
+
Create a configuration file using the config.json.example. The most important
29
+
things to note are owner\_uuid, which should be set to a character's UUID that
30
+
you possess and have never shared; server\_address and server\_port, which
31
+
should be set to the proxied server. StarryPy will default to port 21025 for
32
+
normal clients to connect to. Select a good random port, or set it to 21024 and
33
+
firewall it off from the outside.
20
34
35
+
<<<<<<< HEAD
21
36
Below I provide installation instructions for Linux and Windows. Please note that Windows setup is more complex and in general seems to be buggier. I develop for Linux primarily, so you may consider the windows instructions unsupported; though they did work for me in a VM.
22
37
23
38
## Linux
@@ -78,65 +93,188 @@ Finally, find starbound.config and change `gameport` to be exactly the same as `
78
93
StarryPy is nearly entirely plugin driven (our plugin manager is a plugin!), so there are quite a few built-in plugins. The truly important plugins are in the core\_plugins folder. If you remove any of those, it's likely that most other plugins will break. We'll break them down by core plugin and normal plugin classes.
79
94
80
95
If you are looking for commands, they have been removed from the listing due to the constant flux and the time required for documentation. For a list of commands that you can access from your current user level, use /help. For help with a specific command, use /help command_name.
96
+
=======
97
+
## Run it
98
+
99
+
After making sure the Starbound server is running, use your terminal (cmd or
100
+
powershell on windows) and `cd` to the directory you installed StarryPy into.
101
+
Enter `python server.py` to start the proxy.
102
+
103
+
## Built-in plugins
104
+
105
+
StarryPy is nearly entirely plugin driven (our plugin manager is a plugin!), so
106
+
there are quite a few built-in plugins. The truly important plugins are in the
107
+
`core\_plugins` folder. If you remove any of those, it's likely that most other
108
+
plugins will break. We'll break them down by core plugin and normal plugin
109
+
classes. If you are looking for the commands, feel free to skip the core plugins
110
+
section.
111
+
>>>>>>> 9a011bdc2a30e951aba1a98c2c7f247b2766f6f9
81
112
82
-
## Core Plugins
113
+
###Core Plugins
83
114
84
-
Core plugins are plugins that have no dependencies and are intended to be accessed by other plugins. If your plugin doesn't meet those criteria, it is recommended to put it in the normal plugins folder.
115
+
Core plugins are plugins that have no dependencies and are intended to be
116
+
accessed by other plugins. If your plugin doesn't meet those criteria, it is
117
+
recommended to put it in the normal plugins folder.
85
118
86
-
### Player Manager
119
+
####Player Manager
87
120
88
-
The player manager is perhaps the most essential plugin of them all. It keeps track of each player that logs in, tracks their position, and manages kicks/bans. It is composed of the actual database manager, using SQLAlchemy on an SQLite3 backend by default.
121
+
The player manager is perhaps the most essential plugin of them all. It keeps
122
+
track of each player that logs in, tracks their position, and manages
123
+
kicks/bans. It is composed of the actual database manager, using SQLAlchemy on
124
+
an SQLite3 backend by default.
89
125
90
-
### Command Plugin
126
+
####Command Plugin
91
127
92
-
This is a core plugin that works in conjunction with the plugin class SimpleCommandPlugin. SimpleCommandPlugins automatically register their commands with the instantiated command plugin and when a chat packet is sent it is automatically parsed. If it matches one of these commands, it sends it off to that function for processing. If it doesn't match any of the commands, it sends it on its merry way to the actual starbound server for processing.
128
+
This is a core plugin that works in conjunction with the plugin class
129
+
SimpleCommandPlugin. SimpleCommandPlugins automatically register their commands
130
+
with the instantiated command plugin and when a chat packet is sent it is
131
+
automatically parsed. If it matches one of these commands, it sends it off to
132
+
that function for processing. If it doesn't match any of the commands, it sends
133
+
it on its merry way to the actual starbound server for processing.
93
134
94
-
## Plugins
135
+
###Plugins
95
136
137
+
<<<<<<< HEAD
96
138
### Admin Commands
97
139
The admin commands plugin implements player management from in game.
140
+
=======
141
+
#### Admin Commands
142
+
143
+
The admin commands plugin implements player management from in game. It is a
144
+
SimpleCommandPlugin that provides the following commands:
145
+
146
+
***/who**: Displays all users currently logged into the server. `Access: Everyone`
147
+
***/planet**: Displays all users on your current planet. `Access: Everyone`
148
+
***/whois**: Displays user information. Includes player UUID, IP address,
149
+
username, access level, and current planet. `Access: Admin`
150
+
***/promote**: Promotes/demotes a user to a given access level. You can only
151
+
promote if you are a moderator or above, and then only to a user of lesser rank
152
+
than yourself. `Access: Moderator`
153
+
***/kick**: Kicks a user by username. If the name has spaces, enclose it in
154
+
quotes. `Access: Moderator`
155
+
***/ban**: Bans an IP address. Best fetched with /whois. It does not support
156
+
usernames. `Access: Admin`
157
+
***/bans**: Lists all active IP bans. `Access: Admin`
158
+
***/unban**: Unbans an IP address. `Access: Admin`
159
+
***/mute**: Mutes a player. `Access: Moderator`
160
+
***/unmute**: Unmutes a player. `Access: Moderator`
161
+
***/give\_item**: Gives an item to a player. Syntax is /give\_item player
162
+
(enclosed in quotes if it has spaces) itemname count. The default limit for
163
+
number of items to give to a player is 1000. `Access: Admin`
164
+
165
+
#### Admin Messenger
166
+
>>>>>>> 9a011bdc2a30e951aba1a98c2c7f247b2766f6f9
167
+
168
+
This command forwards a message to all active moderators or greater. Any command
169
+
prefixed with ## will be sent to moderators+ only. `Access: Everyone`
170
+
171
+
#### Announcer
98
172
99
-
### Admin Messenger
100
-
This command forwards a message to all active moderators or greater. Any command prefixed with ## will be sent to moderators+ only. `Access: Everyone`
101
-
102
-
### Announcer
103
173
This plugin simply announces whenever a player joins or quits the server.
104
174
105
-
### Bouncer
106
-
This plugin prevents non-registered users from building or destroying anything. It is disabled by default.
175
+
#### Bouncer
176
+
177
+
This plugin prevents non-registered users from building or destroying anything.
178
+
It is disabled by default.
179
+
180
+
#### Colored names
107
181
108
-
### Colored names
109
-
This plugin displays color codes for each username depending on rank. The colors are set in config.json.
182
+
This plugin displays color codes for each username depending on rank. The colors
183
+
are set in config.json.
110
184
185
+
#### MOTD
186
+
187
+
<<<<<<< HEAD
111
188
### MOTD
112
189
This plugin sends a Message of the Day on login.
190
+
=======
191
+
This plugin sends a Message of the Day on login. The MOTD is located in motd.txt
192
+
in the plugin folder. It provides the following command:
193
+
194
+
***/set\_motd**: Sets the MOTD to the following text. `Access: Moderator`
195
+
>>>>>>> 9a011bdc2a30e951aba1a98c2c7f247b2766f6f9
113
196
114
-
### New Player Greeter
197
+
####New Player Greeter
115
198
116
-
Greets first-time players on the server. Gives them a greeting (located in new\_player\_message.txt) and gives them a pack of starter items (located in starter\_items.txt). Default items are 200 `coalore` and 5 `alienburger`s.
199
+
Greets first-time players on the server. Gives them a greeting (located in
200
+
new\_player\_message.txt) and gives them a pack of starter items (located in
201
+
starter\_items.txt). Default items are 200 `coalore` and 5 `alienburger`s.
117
202
203
+
<<<<<<< HEAD
118
204
### Planet Protection
119
205
This plugin protects specified planets against modification in any way. Currently if a planet is protected only registered users may modify it.
120
206
121
207
### Plugin Manager
122
208
This plugin provides a method of enabling/disabling plugins. I know it's silly that it's a plugin, you don't have to tell me.
209
+
=======
210
+
#### Planet Protection
211
+
212
+
This plugin protects specified planets against modification in any way.
213
+
Currently if a planet is protected only Admins may modify it. This plugin
214
+
provides the following commands:
215
+
216
+
***/protect**: Protects the planet you are currently on. `Access: Admin`
217
+
***/unprotect**: Unprotects the planet you are currently on. `Access: Admin`
218
+
219
+
#### Plugin Manager
220
+
221
+
This plugin provides a method of enabling/disabling plugins. I know it's silly
222
+
that it's a plugin, you don't have to tell me. It provides the following
223
+
commands:
224
+
225
+
***/list\_plugins**: Sends you a list of all loaded plugins. `Access: Admin`
226
+
***/disable\_plugin**: Disables a plugin by name. `Access: Admin`
227
+
***/enable\_plugin**: Enables a plugin by name. `Access: Admin`
228
+
***/help**: This command provides a list of commands if called by itself, and
229
+
the help string for a command if given a name. Example syntax: /help
230
+
enable\_plugin. `Access: Everyone`
231
+
232
+
#### Warpy
233
+
>>>>>>> 9a011bdc2a30e951aba1a98c2c7f247b2766f6f9
123
234
124
-
### Warpy
125
235
This plugin provides various methods for warping players and ships around.
126
236
237
+
<<<<<<< HEAD
127
238
### More plugins
128
239
Even more plugins can be found over at [our plugin list](https://github.com/MrMarvin/StarryPy_plugins).
240
+
=======
241
+
***/warp**: Warps you to another player's ship. `Access: Admin`
242
+
***/move\_ship**: Moves your ship to the location of another player, or
243
+
coordinates in the form of `alpha 514180 -82519336 -23964461 4``Access: Admin`
244
+
***/move\_other\_ship**: Same as above, but another player's ship. `Access: Admin`
129
245
130
-
#Plugin development
246
+
#### More plugins
131
247
132
-
There are several built-in plugins that you can derive inspiration from. The plugin API is decidedly simple, and simply responds to packet events. There is a convenience plugin class called SimpleCommandPlugin which responds to user commands in chat. Currently there is no easy way to *modify* packets, however they can be dropped or allowed to send by any plugin intercepting that packet type.
All plugins must ultimately derive from `BasePlugin`. Do not override the `__init__` method unless you absolutely know that you need to. All setup functions should be done in `activate()`
251
+
## Plugin development
252
+
>>>>>>> 9a011bdc2a30e951aba1a98c2c7f247b2766f6f9
135
253
136
-
There will be more to come in the near future, for now please examine the base plugin classes.
254
+
There are several built-in plugins that you can derive inspiration from. The
255
+
plugin API is decidedly simple, and simply responds to packet events. There is a
256
+
convenience plugin class called SimpleCommandPlugin which responds to user
257
+
commands in chat. Currently there is no easy way to *modify* packets, however
258
+
they can be dropped or allowed to send by any plugin intercepting that packet
259
+
type.
137
260
138
-
Please consider letting us know of your plugin(s) so it can be listed at [our plugin list](https://github.com/MrMarvin/StarryPy_plugins). Pull requests are much appreciated! Please note that any plugins that we integrate into StarryPy proper must be licensed under WTFPL for simplicity's sake. If this isn't acceptable to you, we will only be able to provide a link.
261
+
All plugins must ultimately derive from `BasePlugin`. Do not override the
262
+
`__init__` method unless you absolutely know that you need to. All setup
263
+
functions should be done in `activate()`
139
264
265
+
There will be more to come in the near future, for now please examine the base
266
+
plugin classes.
267
+
268
+
Please consider letting us know of your plugin(s) so it can be listed at
are much appreciated! Please note that any plugins that we integrate into
271
+
StarryPy proper must be licensed under an open-source license. We suggest the
272
+
MIT or BSD licenses. If this isn't acceptable to you, we will only be able to
273
+
provide a link.
274
+
275
+
## Planned features
276
+
277
+
<<<<<<< HEAD
140
278
# Troubleshooting
141
279
## None of the commands are working
142
280
You are likely in passthrough mode or connecting to the vanilla server. Check config.json and ensure that passthrough is false.
@@ -148,13 +286,24 @@ If you're having another issue, check the Issues tab over on the side. If you fi
148
286
149
287
# Planned features
150
288
We haven't been able to pack in everything we've wanted to in this version. We love contributions, so please feel free to write whatever plugins/improve the core however you can.
151
-
152
-
We have quite a roadmap, here are some of the highlights you can expect in the next major version, and in the development branch before that if you're feeling brave:
153
-
154
-
* Spawn networks. Free transportation between admin-designated planets, so your new players can get a leg up in the world.
155
-
* Loot rolling. So a rare item dropped and you don't think it's fair your friend got it? Soon you'll be able to get good items without ending friendships and going to prison on the inevitable murder charge.
289
+
=======
290
+
We haven't been able to pack in everything we've wanted to in this version. We
291
+
love contributions, so please feel free to write whatever plugins/improve the
292
+
core however you can.
293
+
>>>>>>> 9a011bdc2a30e951aba1a98c2c7f247b2766f6f9
294
+
295
+
We have quite a roadmap, here are some of the highlights you can expect in the
296
+
next major version, and in the development branch before that if you're feeling
297
+
brave:
298
+
299
+
* Spawn networks. Free transportation between admin-designated planets, so your
300
+
new players can get a leg up in the world.
301
+
* Loot rolling. So a rare item dropped and you don't think it's fair your friend
302
+
got it? Soon you'll be able to get good items without ending friendships and
303
+
going to prison on the inevitable murder charge.
156
304
* Lotteries. Because what is life without a little risk?
157
305
* Creature spawning. Want to spawn a couple dozen bone dragons? So do we!
306
+
<<<<<<< HEAD
158
307
* Internationalization. Translate plugins and core messages with ease to your preferred language.
159
308
* Role based access control Thought the mod/admin/owner distinction is useful, having individual roles is our plan for the future.
160
309
* Client filtering based on modded items. Though asset digests aren't supported right now, we want to do some minor filtering to keep out the riff-raff (if you as an admin want to.)
@@ -167,3 +316,28 @@ There are many more planned features, minor and major. If you have a feature you
167
316
We're absolutely happy to accept pull requests. There is a freenode channel called ##starbound-dev that we discuss our development on primarily.
168
317
169
318
Other than that, please report any bugs you find with the appropriate section of the debug.log file that is generated.
319
+
=======
320
+
* Projectile blacklist. This should be coming very soon.
321
+
* Internationalization. Translate plugins and core messages with ease to your
322
+
preferred language.
323
+
* Role based access control Thought the mod/admin/owner distinction is useful,
324
+
having individual roles is our plan for the future.
325
+
* Client filtering based on modded items. Though asset digests aren't supported
326
+
right now, we want to do some minor filtering to keep out the riff-raff (if
327
+
you as an admin want to.)
328
+
* Plugin dependency overhaul. Really only interesting to developers, but it will
329
+
allow for complex dependency resolution.
330
+
331
+
There are many more planned features, minor and major. If you have a feature
332
+
you'd just love to have that we haven't covered here, put in a feature request
333
+
on the issues page.
334
+
335
+
## Contributing
336
+
337
+
We're absolutely happy to accept pull requests. There is a freenode channel
338
+
called [##starbound-dev](http://webchat.freenode.net/?channels=##starbound-dev)
339
+
that we discuss our development on primarily.
340
+
341
+
Other than that, please report any bugs you find with the appropriate section of
0 commit comments