From 44b8972fb39a5355495b6a16c7874b49f0596d9a Mon Sep 17 00:00:00 2001 From: Major- Date: Fri, 8 Aug 2014 04:42:36 +0100 Subject: [PATCH] Add world as a global variable for plugins. --- data/plugins/bank/bank.rb | 2 +- data/plugins/bootstrap.rb | 4 ++-- data/plugins/chat/private-messaging/friend.rb | 10 +++++----- data/plugins/chat/private-messaging/messaging.rb | 2 +- data/plugins/cmd/messaging/broadcast.rb | 2 +- data/plugins/cmd/npc/spawn.rb | 8 ++++---- data/plugins/entity/spawning/item-spawn.rb | 3 +-- data/plugins/entity/spawning/npc-spawn.rb | 2 +- data/plugins/skill/mining/respawn.rb | 2 +- src/org/apollo/util/plugin/RubyPluginEnvironment.java | 2 ++ 10 files changed, 19 insertions(+), 18 deletions(-) diff --git a/data/plugins/bank/bank.rb b/data/plugins/bank/bank.rb index 5c6a2fe9..c1d1e177 100644 --- a/data/plugins/bank/bank.rb +++ b/data/plugins/bank/bank.rb @@ -38,7 +38,7 @@ on :event, :second_object_action do |ctx, player, event| end on :event, :second_npc_action do |ctx, player, event| - npc = World.world.npc_repository.get(event.index) + npc = $world.npc_repository.get(event.index) if BANKER_NPCS.include?(npc.id) player.start_action(BankAction.new(player, npc.position)) ctx.break_handler_chain diff --git a/data/plugins/bootstrap.rb b/data/plugins/bootstrap.rb index 8f19da61..0c08c153 100644 --- a/data/plugins/bootstrap.rb +++ b/data/plugins/bootstrap.rb @@ -119,9 +119,9 @@ def schedule(*args, &block) raise 'Invalid combination of arguments.' unless (1..2).include?(args.length) delay = args[0] immediate = args.length == 2 ? args[1] : false - World.world.schedule(ProcScheduledTask.new(delay, immediate, block)) + $world.schedule(ProcScheduledTask.new(delay, immediate, block)) elsif args.length == 1 - World.world.schedule(args[0]) + $world.schedule(args[0]) else raise 'Invalid combination of arguments.' end diff --git a/data/plugins/chat/private-messaging/friend.rb b/data/plugins/chat/private-messaging/friend.rb index 437e2db5..0ed2bffc 100644 --- a/data/plugins/chat/private-messaging/friend.rb +++ b/data/plugins/chat/private-messaging/friend.rb @@ -14,7 +14,7 @@ on :event, :add_friend do |ctx, player, event| player_username = player.username player.add_friend(friend_username) - friend = World.world.get_player(friend_username) + friend = $world.get_player(friend_username) if friend == nil # the friend the player added is offline player.send(SendFriendEvent.new(friend_username, 0)) @@ -33,8 +33,8 @@ on :event, :remove_friend do |ctx, player, event| player_username = player.username player.remove_friend(friend_username) - if (World.world.is_player_online(friend_username)) - friend = World.world.get_player(friend_username) + if ($world.is_player_online(friend_username)) + friend = $world.get_player(friend_username) friend.send(SendFriendEvent.new(player_username, 0)) if (friend.friends_with(player_username) && player.friend_privacy != PrivacyState::ON) end end @@ -45,7 +45,7 @@ on :login do |player| player.send(IgnoreListEvent.new(player.ignored_usernames)) if player.ignored_usernames.size > 0 username = player.username - world = World.world + world = $world iterator = player.friend_usernames.iterator # Iterate the player's friend list and notify the player that they are online if they are while iterator.has_next friend_username = iterator.next @@ -70,7 +70,7 @@ end def update_friends(player, world=0) privacy = player.friend_privacy - iterator = World.world.player_repository.iterator + iterator = $world.player_repository.iterator username = player.username while iterator.has_next diff --git a/data/plugins/chat/private-messaging/messaging.rb b/data/plugins/chat/private-messaging/messaging.rb index f9b1569b..50e42f4d 100644 --- a/data/plugins/chat/private-messaging/messaging.rb +++ b/data/plugins/chat/private-messaging/messaging.rb @@ -5,7 +5,7 @@ java_import 'org.apollo.game.model.World' java_import 'org.apollo.game.model.setting.PrivacyState' on :event, :private_message do |ctx, player, event| - friend = World.world.get_player(event.username) + friend = $world.get_player(event.username) friend.send(ForwardPrivateMessageEvent.new(player.username, player.privilege_level, event.compressed_message)) if interaction_permitted(player, friend) end diff --git a/data/plugins/cmd/messaging/broadcast.rb b/data/plugins/cmd/messaging/broadcast.rb index dd6fa81b..bf260d98 100644 --- a/data/plugins/cmd/messaging/broadcast.rb +++ b/data/plugins/cmd/messaging/broadcast.rb @@ -7,5 +7,5 @@ java_import 'org.apollo.game.model.entity.Player' on :command, :broadcast, RIGHTS_ADMIN do |player, command| message = command.arguments.to_a.join(" ") broadcast = "[Broadcast] #{player.get_username.capitalize}: #{message}" - World.world.player_repository.each { |player| player.send_message(broadcast) } + $world.player_repository.each { |player| player.send_message(broadcast) } end \ No newline at end of file diff --git a/data/plugins/cmd/npc/spawn.rb b/data/plugins/cmd/npc/spawn.rb index 8180d8e1..e85fd7de 100644 --- a/data/plugins/cmd/npc/spawn.rb +++ b/data/plugins/cmd/npc/spawn.rb @@ -22,7 +22,7 @@ on :command, :spawn, RIGHTS_ADMIN do |player, command| position = args.length == 1 ? player.position : Position.new(args[1].to_i, args[2].to_i, player.position.height) - World.world.register(Npc.new(id, position)) + $world.register(Npc.new(id, position)) end # Mass spawns npcs around the player. @@ -48,7 +48,7 @@ on :command, :mass, RIGHTS_ADMIN do |player, command| for x in minX..maxX do for y in minY..maxY do - World.world.register(Npc.new(id, Position.new(x, y, z))) + $world.register(Npc.new(id, Position.new(x, y, z))) end end player.send_message("Mass spawning npcs with id #{id}.") @@ -56,9 +56,9 @@ end # Unregisters all npcs from the world npc repository. on :command, :clearnpcs, RIGHTS_ADMIN do |player, command| - iterator = World.world.npc_repository.iterator + iterator = $world.npc_repository.iterator while iterator.has_next - World.world.unregister(iterator.next) + $world.unregister(iterator.next) end player.send_message('Unregistered all npcs from the world.') end \ No newline at end of file diff --git a/data/plugins/entity/spawning/item-spawn.rb b/data/plugins/entity/spawning/item-spawn.rb index 20be250b..99b07128 100644 --- a/data/plugins/entity/spawning/item-spawn.rb +++ b/data/plugins/entity/spawning/item-spawn.rb @@ -7,9 +7,8 @@ java_import 'org.apollo.game.model.area.SectorCoordinates' java_import 'org.apollo.game.model.area.SectorRepository' java_import 'org.apollo.game.model.def.ItemDefinition' -# :transient :recurrent -def spawn_npc(hash) +def spawn_item(hash) raise 'A name (or id), x coordinate, and y coordinate must be specified to spawn an item' unless (hash.has_key?(:name) || hash.has_key?(:id)) && hash.has_key?(:x) && hash.has_key?(:y) z = hash.delete(:z) diff --git a/data/plugins/entity/spawning/npc-spawn.rb b/data/plugins/entity/spawning/npc-spawn.rb index 8be1bf77..b7a43023 100644 --- a/data/plugins/entity/spawning/npc-spawn.rb +++ b/data/plugins/entity/spawning/npc-spawn.rb @@ -32,7 +32,7 @@ end # Spawns the specified npc and applies the properties in the hash. def spawn(npc, hash) - World.world.register(npc) + $world.register(npc) unless hash.empty? hash = decode_hash(npc.position, hash) # Use npc.position here because sector registry events (called by World.register) can be hooked apply_decoded_hash(npc, hash) # into and someone might do something daft like move the npc immediately after it gets spawned. diff --git a/data/plugins/skill/mining/respawn.rb b/data/plugins/skill/mining/respawn.rb index bda2dfe5..57228cf3 100644 --- a/data/plugins/skill/mining/respawn.rb +++ b/data/plugins/skill/mining/respawn.rb @@ -12,5 +12,5 @@ # function. The rest of the mining plugin rounds the base respawn times in # pulses down where appropriate. def respawn_pulses(base, players) - base - players * base / (World.world.player_repository.size * 2) + base - players * base / ($world.player_repository.size * 2) end \ No newline at end of file diff --git a/src/org/apollo/util/plugin/RubyPluginEnvironment.java b/src/org/apollo/util/plugin/RubyPluginEnvironment.java index 23745705..ad4e894b 100644 --- a/src/org/apollo/util/plugin/RubyPluginEnvironment.java +++ b/src/org/apollo/util/plugin/RubyPluginEnvironment.java @@ -5,6 +5,7 @@ import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; +import org.apollo.game.model.World; import org.jruby.embed.ScriptingContainer; /** @@ -53,6 +54,7 @@ public final class RubyPluginEnvironment implements PluginEnvironment { @Override public void setContext(PluginContext context) { container.put("$ctx", context); + container.put("$world", World.getWorld()); } } \ No newline at end of file