Skip to content

Commit

Permalink
Changes synced with 1.14.4 branch.
Browse files Browse the repository at this point in the history
Signed-off-by: Pavel Erokhin (MairwunNx) <MairwunNx@gmail.com>
  • Loading branch information
MairwunNx committed Mar 18, 2020
1 parent d8659ff commit c4095d7
Show file tree
Hide file tree
Showing 11 changed files with 196 additions and 80 deletions.
68 changes: 48 additions & 20 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -22,10 +22,16 @@ buildscript {
}
}

plugins {
id "maven"
}

apply(plugin: "net.minecraftforge.gradle")
apply(plugin: "kotlin")
apply(plugin: "kotlinx-serialization")

String packagesToken = new String(package_public_token.decodeBase64())

version = module_version
group = "com.mairwunnx.$module_id"
archivesBaseName = module_name
Expand Down Expand Up @@ -68,39 +74,61 @@ minecraft {
repositories {
jcenter()
mavenCentral()
maven { url("https://minecraft.curseforge.com/api/maven/") }
maven { url("https://libraries.minecraft.net") }
maven { url("https://jitpack.io") }
maven { url "https://jitpack.io" }
maven {
name = "GitHubPackages"
url = uri "https://maven.pkg.github.com/projectessentials/projectessentials-core"
credentials {
username = "MairwunNx@gmail.com"
password = packagesToken
}
}
maven {
name = "GitHubPackages"
url = uri "https://maven.pkg.github.com/projectessentials/projectessentials-permissions"
credentials {
username = "MairwunNx@gmail.com"
password = packagesToken
}
}
maven {
name = "GitHubPackages"
url = uri "https://maven.pkg.github.com/ProjectEssentials/ProjectEssentials-Cooldown"
credentials {
username = "MairwunNx@gmail.com"
password = packagesToken
}
}
maven {
name = "GitHubPackages"
url = uri "https://maven.pkg.github.com/ProjectEssentials/ProjectEssentials-Home"
credentials {
username = "MairwunNx@gmail.com"
password = packagesToken
}
}
}

dependencies {
minecraft(group: "net.minecraftforge", name: "forge", version: forge_version)
compile(group: "com.mojang", name: "brigadier", version: brigadier_version)
compile(

implementation 'com.mairwunnx.project_essentials_core:ProjectEssentials-Core:1.15.2-1.1.0'
implementation 'com.mairwunnx.project_essentials_permissions:ProjectEssentials-Permissions:1.15.2-1.0.1'
implementation 'com.mairwunnx.project_essentials_cooldown:ProjectEssentials-Cooldown:1.15.2-1.0.1'
implementation 'com.mairwunnx.project_essentials_home:ProjectEssentials-Home:1.15.2-1.1.0'

implementation(group: "com.mojang", name: "brigadier", version: brigadier_version)
implementation(
group: "org.jetbrains.kotlinx",
name: "kotlinx-serialization-runtime",
version: kotlinx_serialization_version
)
compile(
implementation(
group: "org.jetbrains.kotlin",
name: "kotlin-stdlib-$kotlin_jdk_version_target",
version: kotlin_version
)
compile(
group: "com.github.projectessentials",
name: "ProjectEssentials-Permissions",
version: ess_perm_version
)
compile(
group: "com.github.projectessentials",
name: "ProjectEssentials-Core",
version: ess_core_version
)
compile(
group: "com.github.projectessentials",
name: "ProjectEssentials-Cooldown",
version: ess_cooldown_version
)
}

jar {
Expand Down
23 changes: 23 additions & 0 deletions changelog.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,29 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0

## [Unreleased]

## [1.15.2-1.1.0] - 2020-03-18

## Added
- Project Essentials dependencies added to `build.gradle`.
- Respawning at first home \ bed point \ world spawn added.
- Back command compatibility added for respawning.
- Back command compatibility added for spawn command.
- `Messaging.kt` with `sendMessage` method added.
- Compatibility with new localization API.

### Changed
- Kotlin version updated to `1.3.70`.
- KotlinX Serialization updated to `0.20.0`.
- Forge API version updated to `28.2.0`.
- `SetSpawnCommand.kt`: `sendMsg` replaced with `sendMessage`.
- `SetSpawnCommand.kt`: deprecated api replaced on new.
- `SpawnCommand.kt`: `sendMsg` replaced with `sendMessage`.
- `SpawnCommand.kt`: deprecated api replaced on new.

### Removed
- Essentials dependencies removed from `gradle.properties`.
- `curseforge` maven repository removed from repositories in `build.gradle`.

## [1.15.2-1.0.0] - 2020-02-08

### Added
Expand Down
10 changes: 4 additions & 6 deletions gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -11,12 +11,10 @@ forge_mappings_channel_version=20190719-1.14.3
brigadier_version=1.0.17
kotlin_jdk_version_target=jdk8
project_jvm_version_target=1.8
kotlin_version=1.3.61
kotlinx_serialization_version=0.14.0
ess_core_version=v1.15.2-1.+
ess_perm_version=v1.15.2-1.+
ess_cooldown_version=v1.15.2-1.+
module_version=1.15.2-1.0.0
kotlin_version=1.3.70
kotlinx_serialization_version=0.20.0
module_version=1.15.2-1.1.0
module_name=Project Essentials Spawn
module_id=project_essentials_spawn
module_vendor=MairwunNx (Pavel Erokhin)
package_public_token=ZDhjMjgyNjlhM2E0ZTQ0MmM2Mjk5ZWI4YmMyZjI0YzNjOTNkMDVkZA==
2 changes: 1 addition & 1 deletion readme.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@

### Explore

#### [Download mod](https://github.com/ProjectEssentials/ProjectEssentials-Spawn/releases/download/v1.15.2-1.0.0/Project.Essentials.Spawn-1.15.2-1.0.0.jar) · [How to install](https://mairwunnx.gitbook.io/project-essentials/project-essentials-spawn#how-to-install) · [Commands](https://mairwunnx.gitbook.io/project-essentials/project-essentials-spawn#commands-and-permissions) · [Configuration](https://mairwunnx.gitbook.io/project-essentials/project-essentials-spawn#configuration) · [Troubleshooting](https://github.com/ProjectEssentials/ProjectEssentials-Spawn/issues/new/choose) · [CurseForge](https://www.curseforge.com/minecraft/mc-mods/ProjectEssentials-Spawn) · [Change log](changelog.md)
#### [Download mod](https://github.com/ProjectEssentials/ProjectEssentials-Spawn/releases/download/v1.15.2-1.1.0/Project.Essentials.Spawn-1.15.2-1.1.0.jar) · [How to install](https://mairwunnx.gitbook.io/project-essentials/project-essentials-spawn#how-to-install) · [Commands](https://mairwunnx.gitbook.io/project-essentials/project-essentials-spawn#commands-and-permissions) · [Configuration](https://mairwunnx.gitbook.io/project-essentials/project-essentials-spawn#configuration) · [Troubleshooting](https://github.com/ProjectEssentials/ProjectEssentials-Spawn/issues/new/choose) · [CurseForge](https://www.curseforge.com/minecraft/mc-mods/ProjectEssentials-Spawn) · [Change log](changelog.md)

### Compatibility

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,10 @@
package com.mairwunnx.projectessentials.spawn

import com.mairwunnx.projectessentials.core.EssBase
import com.mairwunnx.projectessentials.core.backlocation.BackLocationProvider
import com.mairwunnx.projectessentials.core.configuration.localization.LocalizationConfigurationUtils
import com.mairwunnx.projectessentials.core.localization.processLocalizations
import com.mairwunnx.projectessentials.home.HomeAPI
import com.mairwunnx.projectessentials.permissions.permissions.PermissionsAPI
import com.mairwunnx.projectessentials.spawn.commands.SetSpawnCommand
import com.mairwunnx.projectessentials.spawn.commands.SpawnCommand
Expand All @@ -25,23 +29,37 @@ class EntryPoint : EssBase() {

init {
modInstance = this
modVersion = "1.15.2-1.0.0"
modVersion = "1.15.2-1.1.0"
logBaseInfo()
validateForgeVersion()
MinecraftForge.EVENT_BUS.register(this)
SpawnModelBase.loadData()
loadLocalization()
}

private fun loadLocalization() {
if (LocalizationConfigurationUtils.getConfig().enabled) {
processLocalizations(
EntryPoint::class.java, listOf(
"/assets/projectessentialsspawn/lang/de_de.json",
"/assets/projectessentialsspawn/lang/ru_ru.json",
"/assets/projectessentialsspawn/lang/en_us.json"
)
)
}
}

@SubscribeEvent(priority = EventPriority.HIGH)
fun onServerStarting(event: FMLServerStartingEvent) {
registerCommands(event.server.commandManager.dispatcher)
registerCommands(event.commandDispatcher)
processFirstSession(event)
SpawnModelBase.assignSpawn(event.server)
}

private fun processFirstSession(event: FMLServerStartingEvent) {
logger.info("Processing first session for loaded world")
var equals = true
// todo: previous todo apply for this
val world = event.server.getWorld(DimensionType.OVERWORLD)

if (SpawnModelBase.spawnModel.xPos.toInt() != world.spawnPoint.x) {
Expand Down Expand Up @@ -77,12 +95,53 @@ class EntryPoint : EssBase() {

@SubscribeEvent(priority = EventPriority.HIGHEST)
fun onPlayerRespawn(event: PlayerEvent.PlayerRespawnEvent) {
if (!event.player.bedPosition.isPresent) {
SpawnCommand.moveToSpawn(event.player as ServerPlayerEntity)
val player = event.player as ServerPlayerEntity
BackLocationProvider.commit(player)

fun teleportToSpawnOrBed() {
if (player.bedPosition.isPresent) {
val bedPos = player.bedPosition.get()
val targetWorld = player.server.getWorld(DimensionType.OVERWORLD)
player.teleport(
targetWorld,
bedPos.x.toDouble() + 0.5,
bedPos.y.toDouble() + 0.5,
bedPos.z.toDouble() + 0.5,
player.rotationYaw, player.rotationPitch
)
} else {
SpawnCommand.moveToSpawn(player)
}
}

if (homeInstalled) {
val homes = HomeAPI.takeAll(player)

if (homes.isNotEmpty()) {
val home =
homes.first() // todo configure it with core module (new api with common project settings)
val targetWorld = player.server.getWorld(
DimensionType.getById(home.worldId) ?: DimensionType.OVERWORLD
)
player.teleport(
targetWorld,
home.xPos.toDouble() + 0.5,
home.yPos.toDouble() + 0.5,
home.zPos.toDouble() + 0.5,
home.yaw, home.pitch
)
} else teleportToSpawnOrBed()
} else teleportToSpawnOrBed()
}

private fun loadAdditionalModules() {
try {
Class.forName("com.mairwunnx.projectessentials.home.HomeAPI")
homeInstalled = true
} catch (_: ClassNotFoundException) {
// ignored
}

try {
Class.forName(cooldownAPIClassPath)
cooldownsInstalled = true
Expand All @@ -102,6 +161,7 @@ class EntryPoint : EssBase() {
lateinit var modInstance: EntryPoint
var cooldownsInstalled: Boolean = false
var permissionsInstalled: Boolean = false
var homeInstalled: Boolean = false

fun hasPermission(player: ServerPlayerEntity, node: String, opLevel: Int = 4): Boolean =
if (permissionsInstalled) {
Expand Down
23 changes: 23 additions & 0 deletions src/main/kotlin/com/mairwunnx/projectessentials/spawn/Messaging.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
package com.mairwunnx.projectessentials.spawn

import com.mairwunnx.projectessentials.core.configuration.localization.LocalizationConfigurationUtils
import com.mairwunnx.projectessentials.core.extensions.sendMsg
import com.mairwunnx.projectessentials.core.localization.sendMsgV2
import net.minecraft.command.CommandSource

internal fun sendMessage(
source: CommandSource,
message: String,
vararg args: String
) {
if (LocalizationConfigurationUtils.getConfig().enabled) {
sendMsgV2(
source.asPlayer(),
"project_essentials_spawn.spawn.$message", *args
)
} else {
sendMsg(
"spawn", source, "spawn.$message", *args
)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,12 @@ package com.mairwunnx.projectessentials.spawn.commands

import com.mairwunnx.projectessentials.cooldown.essentials.CommandsAliases
import com.mairwunnx.projectessentials.core.extensions.isPlayerSender
import com.mairwunnx.projectessentials.core.extensions.sendMsg
import com.mairwunnx.projectessentials.core.helpers.ONLY_PLAYER_CAN
import com.mairwunnx.projectessentials.core.helpers.PERMISSION_LEVEL
import com.mairwunnx.projectessentials.core.helpers.throwOnlyPlayerCan
import com.mairwunnx.projectessentials.core.helpers.throwPermissionLevel
import com.mairwunnx.projectessentials.spawn.EntryPoint
import com.mairwunnx.projectessentials.spawn.EntryPoint.Companion.hasPermission
import com.mairwunnx.projectessentials.spawn.models.SpawnModelBase
import com.mairwunnx.projectessentials.spawn.sendMessage
import com.mojang.brigadier.CommandDispatcher
import com.mojang.brigadier.builder.LiteralArgumentBuilder.literal
import com.mojang.brigadier.context.CommandContext
Expand Down Expand Up @@ -47,10 +47,10 @@ object SetSpawnCommand {
SpawnModelBase.spawnModel.yaw = player.rotationYaw
SpawnModelBase.spawnModel.pitch = player.rotationPitch
SpawnModelBase.spawnModel.worldId = player.serverWorld.worldType.id
player.world.spawnPoint = BlockPos(
player.serverWorld.spawnPoint = BlockPos(
player.positionVector.x, player.positionVector.y, player.positionVector.z
)
sendMsg("spawn", c.source, "spawn.set.success")
sendMessage(c.source, "set.success")
logger.info("New spawn point installed by ${player.name.string} with data: ")
logger.info(" - xpos: ${player.positionVector.x}")
logger.info(" - ypos: ${player.positionVector.y}")
Expand All @@ -59,15 +59,11 @@ object SetSpawnCommand {
logger.info(" - pitch: ${player.rotationPitch}")
logger.info("Executed command \"${c.input}\" from ${player.name.string}")
} else {
sendMsg("spawn", c.source, "spawn.set.restricted")
logger.info(
PERMISSION_LEVEL
.replace("%0", player.name.string)
.replace("%1", "setspawn")
)
sendMessage(c.source, "set.restricted")
throwPermissionLevel(player.name.string, "setspawn")
}
} else {
logger.info(ONLY_PLAYER_CAN.replace("%0", "setspawn"))
throwOnlyPlayerCan("setspawn")
}
return 0
}
Expand Down
Loading

0 comments on commit c4095d7

Please sign in to comment.