Skip to content

Commit

Permalink
All features successfully migrated
Browse files Browse the repository at this point in the history
  • Loading branch information
Mercerenies committed Apr 26, 2022
1 parent 5a4a0fc commit 7becb7d
Show file tree
Hide file tree
Showing 14 changed files with 416 additions and 217 deletions.
20 changes: 20 additions & 0 deletions src/AllFeatureFactories.kt
Original file line number Diff line number Diff line change
Expand Up @@ -31,13 +31,33 @@ import com.mercerenies.turtletroll.overgrowth.OvergrowthListenerFactory
import com.mercerenies.turtletroll.overgrowth.OvergrowthListener
import com.mercerenies.turtletroll.ghastlava.GhastLavaListenerFactory
import com.mercerenies.turtletroll.drop.DirtDropFeatureFactory
import com.mercerenies.turtletroll.drop.SilverfishAttackFeatureFactory
import com.mercerenies.turtletroll.drop.BeeAttackFeatureFactory
import com.mercerenies.turtletroll.drop.AmethystBlockDropFactory
import com.mercerenies.turtletroll.drop.BedrockFeatureFactory
import com.mercerenies.turtletroll.drop.CancelDropFeatureFactory
import com.mercerenies.turtletroll.drop.EndermiteSpawnFeatureFactory
import com.mercerenies.turtletroll.drop.NetherrackBoomFeatureFactory
import com.mercerenies.turtletroll.drop.ShuffleLogsFeatureFactory
import com.mercerenies.turtletroll.drop.StrongholdAttackFeatureFactory

object AllFeatureFactories {

private val allDropFactories: List<FeatureContainerFactory<DropFeatureContainer>> =
listOf(
// Drop features
AmethystBlockDropFactory,
BedrockFeatureFactory,
BeeAttackFeatureFactory,
BeeAttackFeatureFactory,
CancelDropFeatureFactory,
DirtDropFeatureFactory,
EndermiteSpawnFeatureFactory,
MelompkinFeatureFactory,
NetherrackBoomFeatureFactory,
ShuffleLogsFeatureFactory,
SilverfishAttackFeatureFactory,
StrongholdAttackFeatureFactory,
)

private val allFactories: List<FeatureContainerFactory<FeatureContainer>> =
Expand Down
140 changes: 0 additions & 140 deletions src/BlockBreakEvents.kt

This file was deleted.

5 changes: 1 addition & 4 deletions src/Main.kt
Original file line number Diff line number Diff line change
Expand Up @@ -25,10 +25,7 @@ class Main : JavaPlugin() {
get() = dataHolder

val mainContainer: FeatureContainer =
CompositeFeatureContainer(listOf(
MainContainer(this),
AllFeatureFactories.createComposite(this.createBuilderState()),
))
AllFeatureFactories.createComposite(this.createBuilderState())
val featureManager = FeatureManager(mainContainer.features)
val turtleCommand = Subcommand(
"turtle" to Subcommand(
Expand Down
73 changes: 0 additions & 73 deletions src/MainContainer.kt

This file was deleted.

61 changes: 61 additions & 0 deletions src/MelompkinFeatureFactory.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@

package com.mercerenies.turtletroll

import com.mercerenies.turtletroll.feature.HasEnabledStatus
import com.mercerenies.turtletroll.feature.CompositeFeature
import com.mercerenies.turtletroll.feature.container.DropFeatureContainer
import com.mercerenies.turtletroll.feature.container.AbstractDropFeatureContainer
import com.mercerenies.turtletroll.feature.container.ListenerContainer
import com.mercerenies.turtletroll.feature.builder.BuilderState
import com.mercerenies.turtletroll.feature.builder.FeatureContainerFactory
import com.mercerenies.turtletroll.drop.ReplaceDropsAction
import com.mercerenies.turtletroll.drop.filter
import com.mercerenies.turtletroll.drop.asFeature
import com.mercerenies.turtletroll.drop.nearby.BeeAttackAction
import com.mercerenies.turtletroll.recipe.MelonRecipeDeleter
import com.mercerenies.turtletroll.recipe.MelonRecipeFeature

import org.bukkit.inventory.ItemStack
import org.bukkit.Material
import org.bukkit.Bukkit

object MelompkinFeatureFactory : FeatureContainerFactory<DropFeatureContainer> {

override fun create(state: BuilderState): DropFeatureContainer = object : AbstractDropFeatureContainer() {

private val replaceMelonsAction = ReplaceDropsAction(ItemStack(Material.PUMPKIN)).filter {
it.block.type == Material.MELON
}.asFeature("replacemelons", "...")
private val replacePumpkinsAction = ReplaceDropsAction(ItemStack(Material.MELON_SLICE, 4)).filter {
it.block.type == Material.PUMPKIN
}.asFeature("replacepumpkins", "...")

private val melonPumpkinsFeature = CompositeFeature(
"melompkinsdrops",
"Melons and pumpkins swap drops",
listOf(replaceMelonsAction, replacePumpkinsAction),
)

private val melonRecipeFeature = MelonRecipeFeature(state.plugin)
private val melonRecipeDeleter = MelonRecipeDeleter(Bukkit.getServer())
private val carvePumpkinListener = CarvePumpkinListener()

private val melompkinFeature = CompositeFeature(
"melompkin",
"Several features of melons and pumpkins are interchanged",
listOf(melonRecipeFeature, melonRecipeDeleter, carvePumpkinListener, melonPumpkinsFeature),
)

override val listeners = listOf(carvePumpkinListener)

override val features = listOf(melompkinFeature)

override val recipes = listOf(melonRecipeFeature)

override val recipeDeleters = listOf(melonRecipeDeleter)

override val preRules = listOf(replaceMelonsAction, replacePumpkinsAction)

}

}
35 changes: 35 additions & 0 deletions src/drop/AmethystBlockDropFactory.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@

package com.mercerenies.turtletroll.drop

import com.mercerenies.turtletroll.Weight
import com.mercerenies.turtletroll.BlockIgnorer
import com.mercerenies.turtletroll.feature.HasEnabledStatus
import com.mercerenies.turtletroll.feature.CompositeFeature
import com.mercerenies.turtletroll.feature.container.DropFeatureContainer
import com.mercerenies.turtletroll.feature.container.AbstractDropFeatureContainer
import com.mercerenies.turtletroll.feature.container.ListenerContainer
import com.mercerenies.turtletroll.feature.builder.BuilderState
import com.mercerenies.turtletroll.feature.builder.FeatureContainerFactory
import com.mercerenies.turtletroll.drop.nearby.BeeAttackAction

import org.bukkit.inventory.ItemStack
import org.bukkit.Material

object AmethystBlockDropFactory : FeatureContainerFactory<DropFeatureContainer> {

override fun create(state: BuilderState): DropFeatureContainer = object : AbstractDropFeatureContainer() {

private val amethystBlockDrop = ReplaceDropsAction(ItemStack(Material.GOLDEN_APPLE, 1)).filter {
it.block.type == Material.AMETHYST_BLOCK
}.asFeature(
"amethyst",
"Amethyst blocks have a small chance of dropping golden apples when mined",
)

override val features = listOf(amethystBlockDrop)

override val actions = listOf(Weight(amethystBlockDrop, 0.1))

}

}
Loading

0 comments on commit 7becb7d

Please sign in to comment.