Added recipes, small changes
This commit is contained in:
parent
614d7b9241
commit
aafae9e8ce
@ -2,7 +2,6 @@
|
|||||||
plugins {
|
plugins {
|
||||||
id 'net.minecraftforge.gradle' version '5.1.+'
|
id 'net.minecraftforge.gradle' version '5.1.+'
|
||||||
id 'org.jetbrains.kotlin.jvm' version '1.8.21'
|
id 'org.jetbrains.kotlin.jvm' version '1.8.21'
|
||||||
id 'org.jetbrains.kotlin.plugin.serialization' version '1.8.21'
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -8,6 +8,7 @@ import net.minecraft.core.BlockPos
|
|||||||
import net.minecraft.network.chat.TextComponent
|
import net.minecraft.network.chat.TextComponent
|
||||||
import net.minecraft.world.InteractionHand
|
import net.minecraft.world.InteractionHand
|
||||||
import net.minecraft.world.InteractionResult
|
import net.minecraft.world.InteractionResult
|
||||||
|
import net.minecraft.world.entity.LivingEntity
|
||||||
import net.minecraft.world.entity.item.ItemEntity
|
import net.minecraft.world.entity.item.ItemEntity
|
||||||
import net.minecraft.world.entity.player.Player
|
import net.minecraft.world.entity.player.Player
|
||||||
import net.minecraft.world.item.Item
|
import net.minecraft.world.item.Item
|
||||||
@ -38,24 +39,10 @@ class QuarryBlock : Block(Properties.of(Material.STONE).sound(SoundType.METAL).s
|
|||||||
return super.use(state, level, pos, player, hand, result)
|
return super.use(state, level, pos, player, hand, result)
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun dropUpgradeItem(level: Level, pos: BlockPos, count: Int, item: Item) {
|
|
||||||
val x = pos.x.toDouble()
|
|
||||||
val y = pos.y.toDouble()
|
|
||||||
val z = pos.z.toDouble()
|
|
||||||
var toDrop = count
|
|
||||||
while (toDrop > 64) {
|
|
||||||
level.addFreshEntity(ItemEntity(level, x, y, z, ItemStack(item, 64)))
|
|
||||||
toDrop -= 64
|
|
||||||
}
|
|
||||||
if (toDrop > 0)
|
|
||||||
level.addFreshEntity(ItemEntity(level, x, y, z, ItemStack(item, toDrop)))
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun playerDestroy(level: Level, player: Player, pos: BlockPos, state: BlockState, be: BlockEntity?, tool: ItemStack) {
|
override fun playerDestroy(level: Level, player: Player, pos: BlockPos, state: BlockState, be: BlockEntity?, tool: ItemStack) {
|
||||||
if (!level.isClientSide() && be is QuarryTile) {
|
if (!level.isClientSide() && be is QuarryTile) {
|
||||||
val toDrop = be.getUpgradesToDrop()
|
val toDrop = be.getDropItem()
|
||||||
dropUpgradeItem(level, pos, toDrop.a, QuarryMod.QUARRY_SPEED_UPGRADE.get())
|
level.addFreshEntity(ItemEntity(level, pos.x.toDouble(), pos.y.toDouble(), pos.z.toDouble(), toDrop))
|
||||||
dropUpgradeItem(level, pos, toDrop.b, QuarryMod.QUARRY_FORTUNE_UPGRADE.get())
|
|
||||||
}
|
}
|
||||||
super.playerDestroy(level, player, pos, state, be, tool)
|
super.playerDestroy(level, player, pos, state, be, tool)
|
||||||
}
|
}
|
||||||
@ -65,4 +52,16 @@ class QuarryBlock : Block(Properties.of(Material.STONE).sound(SoundType.METAL).s
|
|||||||
if (be is QuarryTile)
|
if (be is QuarryTile)
|
||||||
be.probeInfo(info!!)
|
be.probeInfo(info!!)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override fun setPlacedBy(
|
||||||
|
level: Level,
|
||||||
|
pos: BlockPos,
|
||||||
|
state: BlockState,
|
||||||
|
entity: LivingEntity?,
|
||||||
|
item: ItemStack
|
||||||
|
) {
|
||||||
|
val be = level.getBlockEntity(pos) as QuarryTile
|
||||||
|
if (item.hasTag())
|
||||||
|
be.loadFromItem(item.tag!!)
|
||||||
|
}
|
||||||
}
|
}
|
@ -29,6 +29,7 @@ object QuarryMod {
|
|||||||
val QUARRY_TILE = TILES_REGISTRY.registerObject("quarry") { BlockEntityType.Builder.of(::QuarryTile, QUARRY_BLOCK.get()).build(null) }
|
val QUARRY_TILE = TILES_REGISTRY.registerObject("quarry") { BlockEntityType.Builder.of(::QuarryTile, QUARRY_BLOCK.get()).build(null) }
|
||||||
val QUARRY_SPEED_UPGRADE = ITEM_REGISTRY.registerObject("upgrade_speed") { QuarryUpgrade(QuarryUpgrade.Type.SPEED) }
|
val QUARRY_SPEED_UPGRADE = ITEM_REGISTRY.registerObject("upgrade_speed") { QuarryUpgrade(QuarryUpgrade.Type.SPEED) }
|
||||||
val QUARRY_FORTUNE_UPGRADE = ITEM_REGISTRY.registerObject("upgrade_fortune") { QuarryUpgrade(QuarryUpgrade.Type.FORTUNE) }
|
val QUARRY_FORTUNE_UPGRADE = ITEM_REGISTRY.registerObject("upgrade_fortune") { QuarryUpgrade(QuarryUpgrade.Type.FORTUNE) }
|
||||||
|
val QUARRY_ITEM = ITEM_REGISTRY.registerObject("quarry") { BlockItem(QUARRY_BLOCK.get(), Item.Properties().tab(CreativeModeTab.TAB_MISC)) }
|
||||||
|
|
||||||
init {
|
init {
|
||||||
ITEM_REGISTRY.registerObject("controller", ::QuarryController)
|
ITEM_REGISTRY.registerObject("controller", ::QuarryController)
|
||||||
@ -37,13 +38,4 @@ object QuarryMod {
|
|||||||
TILES_REGISTRY.register(MOD_BUS)
|
TILES_REGISTRY.register(MOD_BUS)
|
||||||
ITEM_REGISTRY.register(MOD_BUS)
|
ITEM_REGISTRY.register(MOD_BUS)
|
||||||
}
|
}
|
||||||
|
|
||||||
@SubscribeEvent
|
|
||||||
fun onRegisterItems(event: RegistryEvent.Register<Item>) {
|
|
||||||
for (entry in BLOCK_REGISTRY.entries.stream().map(RegistryObject<Block>::get)) {
|
|
||||||
val item = BlockItem(entry, Item.Properties().tab(CreativeModeTab.TAB_MISC))
|
|
||||||
item.setRegistryName(entry.registryName)
|
|
||||||
event.registry.register(item)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
@ -174,7 +174,7 @@ class QuarryTile(private val myPos: BlockPos, state: BlockState) : BlockEntity(Q
|
|||||||
speedUpgradesNeeded -= used
|
speedUpgradesNeeded -= used
|
||||||
if (speedUpgradesNeeded == 0) {
|
if (speedUpgradesNeeded == 0) {
|
||||||
speedLevel++
|
speedLevel++
|
||||||
speedUpgradesNeeded = (2.0).pow(speedLevel).toInt()
|
speedUpgradesNeeded = speedLevel.toFloat().pow(1.5f).toInt()
|
||||||
player.displayClientMessage(TextComponent("New speed level: $speedLevel, upgrades needed for next level: $speedUpgradesNeeded"), true)
|
player.displayClientMessage(TextComponent("New speed level: $speedLevel, upgrades needed for next level: $speedUpgradesNeeded"), true)
|
||||||
} else
|
} else
|
||||||
player.displayClientMessage(TextComponent("Upgrades needed for next level: $speedUpgradesNeeded"), true)
|
player.displayClientMessage(TextComponent("Upgrades needed for next level: $speedUpgradesNeeded"), true)
|
||||||
@ -184,19 +184,29 @@ class QuarryTile(private val myPos: BlockPos, state: BlockState) : BlockEntity(Q
|
|||||||
fortuneUpgradesNeeded -= used
|
fortuneUpgradesNeeded -= used
|
||||||
if (fortuneUpgradesNeeded == 0) {
|
if (fortuneUpgradesNeeded == 0) {
|
||||||
fortuneLevel++
|
fortuneLevel++
|
||||||
fortuneUpgradesNeeded = (2.0).pow(fortuneLevel).toInt()
|
fortuneUpgradesNeeded = fortuneLevel.toFloat().pow(1.5f).toInt()
|
||||||
player.displayClientMessage(TextComponent("New fortune level: $fortuneLevel, upgrades needed for next level: $fortuneUpgradesNeeded"), true)
|
player.displayClientMessage(TextComponent("New fortune level: $fortuneLevel, upgrades needed for next level: $fortuneUpgradesNeeded"), true)
|
||||||
} else
|
} else
|
||||||
player.displayClientMessage(TextComponent("Upgrades needed for next level: $fortuneUpgradesNeeded"), true)
|
player.displayClientMessage(TextComponent("Upgrades needed for next level: $fortuneUpgradesNeeded"), true)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun getUpgradesToDrop() : Tuple<Int, Int> {
|
fun loadFromItem(tag: CompoundTag) {
|
||||||
var speed = (2.0).pow(speedLevel).toInt() - speedUpgradesNeeded
|
speedLevel = tag.getInt("speedLevel")
|
||||||
for (i in 1..speedLevel) speed += (2.0).pow(i-1).toInt()
|
fortuneLevel = tag.getInt("fortuneLevel")
|
||||||
var fortune = (2.0).pow(fortuneLevel).toInt() - fortuneUpgradesNeeded
|
speedUpgradesNeeded = tag.getInt("speedUpgradesNeeded")
|
||||||
for (i in 1..fortuneLevel) fortune += (2.0).pow(i-1).toInt()
|
fortuneUpgradesNeeded = tag.getInt("fortuneUpgradesNeeded")
|
||||||
return Tuple(speed, fortune)
|
}
|
||||||
|
|
||||||
|
fun getDropItem(): ItemStack {
|
||||||
|
val tag = CompoundTag()
|
||||||
|
tag.putInt("speedLevel", speedLevel)
|
||||||
|
tag.putInt("fortuneLevel", fortuneLevel)
|
||||||
|
tag.putInt("speedUpgradesNeeded", speedUpgradesNeeded)
|
||||||
|
tag.putInt("fortuneUpgradesNeeded", fortuneUpgradesNeeded)
|
||||||
|
val item = ItemStack(QuarryMod.QUARRY_ITEM.get(), 1)
|
||||||
|
item.tag = tag
|
||||||
|
return item
|
||||||
}
|
}
|
||||||
|
|
||||||
fun addChunk(chunk: QuarryChunk) = chunksTodo.add(chunk)
|
fun addChunk(chunk: QuarryChunk) = chunksTodo.add(chunk)
|
||||||
@ -270,7 +280,7 @@ class QuarryTile(private val myPos: BlockPos, state: BlockState) : BlockEntity(Q
|
|||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
const val QUARRY_MAX_ENERGY: Int = 100_000_000
|
const val QUARRY_MAX_ENERGY: Int = 100_000_000
|
||||||
const val ENERGY_BASE = 1000
|
const val ENERGY_BASE = 2000
|
||||||
const val ENERGY_PER_STRENGTH = 500
|
const val ENERGY_PER_STRENGTH = 1000
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -1,14 +0,0 @@
|
|||||||
{
|
|
||||||
"type": "minecraft:block",
|
|
||||||
"pools": [
|
|
||||||
{
|
|
||||||
"rolls": 1.0,
|
|
||||||
"entries": [
|
|
||||||
{
|
|
||||||
"type": "minecraft:item",
|
|
||||||
"name": "mquarry:quarry"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
14
src/main/resources/data/mquarry/recipes/controller.json
Normal file
14
src/main/resources/data/mquarry/recipes/controller.json
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
{
|
||||||
|
"type": "minecraft:crafting_shaped",
|
||||||
|
"pattern": [
|
||||||
|
"i i",
|
||||||
|
"rrr",
|
||||||
|
" d "
|
||||||
|
],
|
||||||
|
"key": {
|
||||||
|
"i": { "item": "minecraft:iron_ingot" },
|
||||||
|
"r": { "item": "minecraft:redstone" },
|
||||||
|
"d": { "item": "minecraft:diamond" }
|
||||||
|
},
|
||||||
|
"result": { "item": "mquarry:controller" }
|
||||||
|
}
|
19
src/main/resources/data/mquarry/recipes/quarry.json
Normal file
19
src/main/resources/data/mquarry/recipes/quarry.json
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
{
|
||||||
|
"type": "minecraft:crafting_shaped",
|
||||||
|
"pattern": [
|
||||||
|
"eEe",
|
||||||
|
"pRs",
|
||||||
|
"DGI"
|
||||||
|
],
|
||||||
|
"key": {
|
||||||
|
"e": { "item": "minecraft:ender_pearl" },
|
||||||
|
"p": { "item": "minecraft:netherite_pickaxe" },
|
||||||
|
"s": { "item": "minecraft:netherite_shovel" },
|
||||||
|
"E": { "item": "minecraft:emerald_block" },
|
||||||
|
"R": { "item": "minecraft:redstone_block" },
|
||||||
|
"D": { "item": "minecraft:diamond_block" },
|
||||||
|
"G": { "item": "minecraft:gold_block" },
|
||||||
|
"I": { "item": "minecraft:iron_block" }
|
||||||
|
},
|
||||||
|
"result": { "item": "mquarry:quarry" }
|
||||||
|
}
|
15
src/main/resources/data/mquarry/recipes/upgrade_fortune.json
Normal file
15
src/main/resources/data/mquarry/recipes/upgrade_fortune.json
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
{
|
||||||
|
"type": "minecraft:crafting_shaped",
|
||||||
|
"pattern": [
|
||||||
|
"LLL",
|
||||||
|
"eRe",
|
||||||
|
"RIR"
|
||||||
|
],
|
||||||
|
"key": {
|
||||||
|
"L": { "item": "minecraft:lapis_block" },
|
||||||
|
"e": { "item": "minecraft:emerald" },
|
||||||
|
"R": { "item": "minecraft:redstone_block" },
|
||||||
|
"I": { "item": "minecraft:iron_block" }
|
||||||
|
},
|
||||||
|
"result": { "item": "mquarry:upgrade_fortune" }
|
||||||
|
}
|
15
src/main/resources/data/mquarry/recipes/upgrade_speed.json
Normal file
15
src/main/resources/data/mquarry/recipes/upgrade_speed.json
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
{
|
||||||
|
"type": "minecraft:crafting_shaped",
|
||||||
|
"pattern": [
|
||||||
|
"sss",
|
||||||
|
"dRd",
|
||||||
|
"RIR"
|
||||||
|
],
|
||||||
|
"key": {
|
||||||
|
"s": { "item": "minecraft:sugar" },
|
||||||
|
"d": { "item": "minecraft:diamond" },
|
||||||
|
"R": { "item": "minecraft:redstone_block" },
|
||||||
|
"I": { "item": "minecraft:iron_block" }
|
||||||
|
},
|
||||||
|
"result": { "item": "mquarry:upgrade_speed" }
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user