001/* 002 * Trident - A Multithreaded Server Alternative 003 * Copyright 2014 The TridentSDK Team 004 * 005 * Licensed under the Apache License, Version 2.0 (the "License"); 006 * you may not use this file except in compliance with the License. 007 * You may obtain a copy of the License at 008 * 009 * http://www.apache.org/licenses/LICENSE-2.0 010 * 011 * Unless required by applicable law or agreed to in writing, software 012 * distributed under the License is distributed on an "AS IS" BASIS, 013 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 014 * See the License for the specific language governing permissions and 015 * limitations under the License. 016 */ 017package net.tridentsdk.server.data.block; 018 019import net.tridentsdk.base.Block; 020import net.tridentsdk.base.Substance; 021import net.tridentsdk.inventory.Inventory; 022import net.tridentsdk.inventory.InventoryType; 023import net.tridentsdk.meta.block.ChestMeta; 024import net.tridentsdk.meta.component.Meta; 025import net.tridentsdk.meta.component.MetaCollection; 026import net.tridentsdk.server.inventory.TridentInventory; 027 028public class ChestMetaImpl implements ChestMeta { 029 030 private TridentInventory inventory; 031 032 @Override 033 public Inventory inventory() { 034 return inventory; 035 } 036 037 @Override 038 public byte encode() { 039 return 0; 040 } 041 042 @Override 043 public Meta<Block> decode(Block instance, float yaw, byte direction, byte cx, byte cy, byte cz, short damageValue) { 044 inventory = TridentInventory.create(null, 27, InventoryType.CHEST); 045 instance.setSubstance(Substance.CHEST); 046 return this; 047 } 048 049 @Override 050 public Meta<Block> make() { 051 return new ChestMetaImpl(); 052 } 053 054 @Override 055 public Substance[] applyTo(MetaCollection collection) { 056 collection.put(ChestMeta.class, this); 057 return new Substance[]{Substance.CHEST}; 058 } 059 060}