module McBlocky::DSL
Public Class Methods
to_json(*args)
click to toggle source
# File lib/mcblocky/dsl.rb, line 147 def to_json(*args) if args.length > 1 JSON.dump(args) else JSON.dump(args[0]) end end
to_nbt(obj)
click to toggle source
# File lib/mcblocky/dsl.rb, line 128 def to_nbt(obj) case obj when String JSON.dump(obj) when Fixnum, Float obj.to_s when Array "[#{obj.map{|x| to_nbt x}.join(',')}]" when Hash pairs = obj.map do |k,v| "#{k}:#{to_nbt v}" end "{#{pairs.join(',')}}" else raise ArgumentError, "No NBT form for #{obj}" end end
Public Instance Methods
after(&block)
click to toggle source
# File lib/mcblocky/dsl.rb, line 28 def after(&block) chain = Commands.new(context, :after) chain.instance_exec(&block) chains << chain end
area(x1, y1, z1, x2, y2, z2)
click to toggle source
# File lib/mcblocky/dsl.rb, line 84 def area(x1, y1, z1, x2, y2, z2) context.last_area = Rect.new(x1, y1, z1, x2, y2, z2) end
at(x, y, z, data=0, kind=:normal, nbt={}, &block)
click to toggle source
# File lib/mcblocky/dsl.rb, line 64 def at(x, y, z, data=0, kind=:normal, nbt={}, &block) if Symbol === data kind = data data = 0 end block_kind = case kind when :normal 'minecraft:command_block' when :chain 'minecraft:chain_command_block' when :repeating 'minecraft:repeating_command_block' else raise ArgumentError, 'Unknown command block type' end cblock = CommandBlock.new(context, x, y, z, data, block_kind, nbt) cblock.instance_exec(&block) blocks[Location.new(x, y, z)] = cblock end
chain(*args, &block)
click to toggle source
# File lib/mcblocky/dsl.rb, line 49 def chain(*args, &block) if Symbol === args[0] name = args.delete_at(0) raise NameError, 'Name already exists' if named_chains.has_key? name end if args.empty? rect = context.last_area args = [rect.x1, rect.y1, rect.z1, rect.x2, rect.y2, rect.z2] end chain = ImpulseChain.new(context, *args) chain.instance_exec(&block) chains << chain named_chains[name] = chain if name end
chest(x, y, z, data=0, &block)
click to toggle source
# File lib/mcblocky/dsl.rb, line 98 def chest(x, y, z, data=0, &block) container = Container.new(x, y, z, 'minecraft:chest', data) container.instance_exec(&block) blocks[Location.new(x, y, z)] = container end
cleanup(&block)
click to toggle source
# File lib/mcblocky/dsl.rb, line 22 def cleanup(&block) chain = Commands.new(context, :cleanup) chain.instance_exec(&block) chains << chain end
dispenser(x, y, z, data=0, &block)
click to toggle source
# File lib/mcblocky/dsl.rb, line 110 def dispenser(x, y, z, data=0, &block) container = Container.new(x, y, z, 'minecraft:dispenser', data) container.instance_exec(&block) blocks[Location.new(x, y, z)] = container end
dropper(x, y, z, data=0, &block)
click to toggle source
# File lib/mcblocky/dsl.rb, line 116 def dropper(x, y, z, data=0, &block) container = Container.new(x, y, z, 'minecraft:dropper', data) container.instance_exec(&block) blocks[Location.new(x, y, z)] = container end
fill(x1, y1, z1, x2, y2, z2, kind, data=0)
click to toggle source
# File lib/mcblocky/dsl.rb, line 93 def fill(x1, y1, z1, x2, y2, z2, kind, data=0) block = Block.new(nil, nil, nil, kind, data) rects[Rect.new(x1, y1, z1, x2, y2, z2)] = block end
furnace(x, y, z, data=0, &block)
click to toggle source
# File lib/mcblocky/dsl.rb, line 122 def furnace(x, y, z, data=0, &block) container = Container.new(x, y, z, 'minecraft:furnace', data) container.instance_exec(&block) blocks[Location.new(x, y, z)] = container end
helper(*command, &block)
click to toggle source
# File lib/mcblocky/dsl.rb, line 12 def helper(*command, &block) context.helpers << [command, block] end
initial(&block)
click to toggle source
# File lib/mcblocky/dsl.rb, line 16 def initial(&block) chain = Commands.new(context, :initial) chain.instance_exec(&block) chains << chain end
repeat(*args, &block)
click to toggle source
# File lib/mcblocky/dsl.rb, line 34 def repeat(*args, &block) if Symbol === args[0] name = args.delete_at(0) raise NameError, 'Name already exists' if named_chains.has_key? name end if args.empty? rect = context.last_area args = [rect.x1, rect.y1, rect.z1, rect.x2, rect.y2, rect.z2] end chain = RepeatChain.new(context, *args) chain.instance_exec(&block) chains << chain named_chains[name] = chain if name end
setblock(x, y, z, kind, data=0, replacemode='replace', nbt={})
click to toggle source
# File lib/mcblocky/dsl.rb, line 88 def setblock(x, y, z, kind, data=0, replacemode='replace', nbt={}) block = Block.new(x, y, z, kind, data, nbt) blocks[Location.new(x, y, z)] = block end
trapped_chest(x, y, z, data=0, &block)
click to toggle source
# File lib/mcblocky/dsl.rb, line 104 def trapped_chest(x, y, z, data=0, &block) container = Container.new(x, y, z, 'minecraft:trapped_chest', data) container.instance_exec(&block) blocks[Location.new(x, y, z)] = container end
Private Instance Methods
to_json(*args)
click to toggle source
# File lib/mcblocky/dsl.rb, line 147 def to_json(*args) if args.length > 1 JSON.dump(args) else JSON.dump(args[0]) end end
to_nbt(obj)
click to toggle source
# File lib/mcblocky/dsl.rb, line 128 def to_nbt(obj) case obj when String JSON.dump(obj) when Fixnum, Float obj.to_s when Array "[#{obj.map{|x| to_nbt x}.join(',')}]" when Hash pairs = obj.map do |k,v| "#{k}:#{to_nbt v}" end "{#{pairs.join(',')}}" else raise ArgumentError, "No NBT form for #{obj}" end end