-
Notifications
You must be signed in to change notification settings - Fork 3
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
5 changed files
with
119 additions
and
44 deletions.
There are no files selected for viewing
18 changes: 17 additions & 1 deletion
18
craftbukkit/src/main/java/cc/carm/lib/configuration/craft/builder/CraftConfigBuilder.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,19 +1,35 @@ | ||
package cc.carm.lib.configuration.craft.builder; | ||
|
||
import cc.carm.lib.configuration.core.builder.ConfigBuilder; | ||
import cc.carm.lib.configuration.craft.builder.item.ItemConfigBuilder; | ||
import cc.carm.lib.configuration.craft.builder.serializable.SerializableBuilder; | ||
import cc.carm.lib.configuration.craft.builder.sound.SoundConfigBuilder; | ||
import cc.carm.lib.configuration.core.builder.ConfigBuilder; | ||
import cc.carm.lib.configuration.craft.data.ItemConfig; | ||
import cc.carm.lib.configuration.craft.value.ConfiguredItem; | ||
import org.bukkit.configuration.serialization.ConfigurationSerializable; | ||
import org.jetbrains.annotations.NotNull; | ||
import org.jetbrains.annotations.Nullable; | ||
|
||
public class CraftConfigBuilder extends ConfigBuilder { | ||
|
||
public @NotNull SoundConfigBuilder createSound() { | ||
return new SoundConfigBuilder(); | ||
} | ||
|
||
public @NotNull ItemConfigBuilder createItem() { | ||
return new ItemConfigBuilder(); | ||
} | ||
|
||
public <V extends ConfigurationSerializable> @NotNull SerializableBuilder<V> ofSerializable(@NotNull Class<V> valueClass) { | ||
return new SerializableBuilder<>(valueClass); | ||
} | ||
|
||
public @NotNull ConfiguredItem ofItem() { | ||
return createItem().build(); | ||
} | ||
|
||
public @NotNull ConfiguredItem ofItem(@Nullable ItemConfig defaultItem) { | ||
return createItem().defaults(defaultItem).build(); | ||
} | ||
|
||
} |
73 changes: 73 additions & 0 deletions
73
...tbukkit/src/main/java/cc/carm/lib/configuration/craft/builder/item/ItemConfigBuilder.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,73 @@ | ||
package cc.carm.lib.configuration.craft.builder.item; | ||
|
||
import cc.carm.lib.configuration.craft.builder.AbstractCraftBuilder; | ||
import cc.carm.lib.configuration.craft.data.ItemConfig; | ||
import cc.carm.lib.configuration.craft.value.ConfiguredItem; | ||
import org.bukkit.Material; | ||
import org.jetbrains.annotations.NotNull; | ||
import org.jetbrains.annotations.Nullable; | ||
|
||
import java.util.ArrayList; | ||
import java.util.Arrays; | ||
import java.util.List; | ||
import java.util.Optional; | ||
|
||
public class ItemConfigBuilder extends AbstractCraftBuilder<ItemConfig, ItemConfigBuilder> { | ||
|
||
protected Material type; | ||
protected short data; | ||
protected String name; | ||
protected List<String> lore = new ArrayList<>(); | ||
|
||
public ItemConfigBuilder defaults(@NotNull Material type, | ||
@Nullable String name, @NotNull String... lore) { | ||
return defaults(type, (short) 0, name, Arrays.asList(lore)); | ||
} | ||
|
||
public ItemConfigBuilder defaults(@NotNull Material type, short data, | ||
@Nullable String name, @NotNull String... lore) { | ||
return defaults(type, data, name, Arrays.asList(lore)); | ||
} | ||
|
||
public ItemConfigBuilder defaults(@NotNull Material type, short data, | ||
@Nullable String name, @NotNull List<String> lore) { | ||
return defaults(new ItemConfig(type, data, name, lore)); | ||
} | ||
|
||
public ItemConfigBuilder defaultType(@NotNull Material type) { | ||
this.type = type; | ||
return this; | ||
} | ||
|
||
public ItemConfigBuilder defaultName(@NotNull String name) { | ||
this.name = name; | ||
return this; | ||
} | ||
|
||
public ItemConfigBuilder defaultDataID(short dataID) { | ||
this.data = dataID; | ||
return this; | ||
} | ||
|
||
public ItemConfigBuilder defaultLore(@NotNull String... lore) { | ||
this.lore = new ArrayList<>(Arrays.asList(lore)); | ||
return this; | ||
} | ||
|
||
@Override | ||
protected @NotNull ItemConfigBuilder getThis() { | ||
return this; | ||
} | ||
|
||
protected @Nullable ItemConfig buildDefault() { | ||
if (this.type == null) return null; | ||
else return new ItemConfig(type, data, name, lore); | ||
} | ||
|
||
@Override | ||
public @NotNull ConfiguredItem build() { | ||
ItemConfig defaultItem = Optional.ofNullable(this.defaultValue).orElse(buildDefault()); | ||
return new ConfiguredItem(this.provider, this.path, buildComments(), defaultItem); | ||
} | ||
|
||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters